From de9f5e90fe9b278809363f08c2072d2f2a429de7 Mon Sep 17 00:00:00 2001
From: Michael Darakananda <pongad@google.com>
Date: Fri, 17 Mar 2017 22:18:29 +1100
Subject: [PATCH] all: regenerate protos (#22)

adds new pubsub/v1 features
---
 googleapis/api/authorization_config.pb.go     |   81 +
 googleapis/api/experimental.pb.go             |   57 +
 googleapis/api/serviceconfig/service.pb.go    |  112 +-
 .../servicemanagement/v1/servicemanager.pb.go |   30 +-
 googleapis/appengine/legacy/audit_data.pb.go  |   84 +
 .../admin/v2/bigtable_instance_admin.pb.go    |   46 +-
 .../admin/v2/bigtable_table_admin.pb.go       |  191 +-
 googleapis/bigtable/admin/v2/instance.pb.go   |  113 +-
 googleapis/bigtable/admin/v2/table.pb.go      |   98 +-
 .../cloud/functions/v1beta2/functions.pb.go   |  356 ++--
 googleapis/cloud/ml/v1/job_service.pb.go      | 1823 +++++++++++++++++
 googleapis/cloud/ml/v1/model_service.pb.go    | 1050 ++++++++++
 .../cloud/ml/v1/operation_metadata.pb.go      |  162 ++
 .../cloud/ml/v1/prediction_service.pb.go      |  344 ++++
 googleapis/cloud/ml/v1/project_service.pb.go  |  178 ++
 googleapis/cloud/ml/v1beta1/job_service.pb.go |  427 ++--
 .../cloud/ml/v1beta1/model_service.pb.go      |  214 +-
 .../cloud/ml/v1beta1/prediction_service.pb.go |  236 +--
 .../runtimeconfig/v1beta1/resources.pb.go     |   83 +-
 .../runtimeconfig/v1beta1/runtimeconfig.pb.go |  162 +-
 googleapis/cloud/vision/v1/geometry.pb.go     |    2 +-
 .../cloud/vision/v1/image_annotator.pb.go     |    2 +-
 .../cloud/vision/v1/text_annotation.pb.go     |    2 +-
 .../cloud/vision/v1/web_detection.pb.go       |    2 +-
 googleapis/container/v1/cluster_service.pb.go | 1646 ++++++++++++---
 .../devtools/cloudbuild/v1/cloudbuild.pb.go   |  279 +--
 .../devtools/clouddebugger/v2/data.pb.go      |  161 +-
 .../devtools/clouddebugger/v2/debugger.pb.go  |   99 +-
 googleapis/genomics/v1/datasets.pb.go         |    4 +-
 googleapis/genomics/v1/operations.pb.go       |   70 +-
 googleapis/genomics/v1/reads.pb.go            |   11 +-
 googleapis/genomics/v1/variants.pb.go         |    6 +-
 googleapis/genomics/v1alpha2/pipelines.pb.go  |  364 ++--
 googleapis/iam/v1/iam_policy.pb.go            |    2 +
 googleapis/iam/v1/policy.pb.go                |  135 +-
 googleapis/logging/v2/log_entry.pb.go         |   18 +-
 googleapis/logging/v2/logging.pb.go           |   52 +-
 googleapis/logging/v2/logging_config.pb.go    |   35 +-
 googleapis/logging/v2/logging_metrics.pb.go   |   87 +-
 googleapis/privacy/dlp/v2beta1/dlp.pb.go      | 1374 +++++++++++++
 googleapis/privacy/dlp/v2beta1/storage.pb.go  |  742 +++++++
 googleapis/pubsub/v1/pubsub.pb.go             |  865 ++++++--
 .../database/v1/spanner_database_admin.pb.go  |  131 +-
 .../instance/v1/spanner_instance_admin.pb.go  |  151 +-
 googleapis/spanner/v1/keys.pb.go              |   47 +-
 googleapis/spanner/v1/mutation.pb.go          |   52 +-
 googleapis/spanner/v1/query_plan.pb.go        |   75 +-
 googleapis/spanner/v1/result_set.pb.go        |   62 +-
 googleapis/spanner/v1/spanner.pb.go           |  167 +-
 googleapis/spanner/v1/transaction.pb.go       |   67 +-
 googleapis/spanner/v1/type.pb.go              |   53 +-
 protobuf/ptype/type.pb.go                     |   10 +-
 52 files changed, 10392 insertions(+), 2228 deletions(-)
 create mode 100644 googleapis/api/authorization_config.pb.go
 create mode 100644 googleapis/api/experimental.pb.go
 create mode 100644 googleapis/appengine/legacy/audit_data.pb.go
 create mode 100644 googleapis/cloud/ml/v1/job_service.pb.go
 create mode 100644 googleapis/cloud/ml/v1/model_service.pb.go
 create mode 100644 googleapis/cloud/ml/v1/operation_metadata.pb.go
 create mode 100644 googleapis/cloud/ml/v1/prediction_service.pb.go
 create mode 100644 googleapis/cloud/ml/v1/project_service.pb.go
 create mode 100644 googleapis/privacy/dlp/v2beta1/dlp.pb.go
 create mode 100644 googleapis/privacy/dlp/v2beta1/storage.pb.go

diff --git a/googleapis/api/authorization_config.pb.go b/googleapis/api/authorization_config.pb.go
new file mode 100644
index 00000000..410112b6
--- /dev/null
+++ b/googleapis/api/authorization_config.pb.go
@@ -0,0 +1,81 @@
+// Code generated by protoc-gen-go.
+// source: google/api/experimental/authorization_config.proto
+// DO NOT EDIT!
+
+/*
+Package api is a generated protocol buffer package.
+
+It is generated from these files:
+	google/api/experimental/authorization_config.proto
+	google/api/experimental/experimental.proto
+
+It has these top-level messages:
+	AuthorizationConfig
+	Experimental
+*/
+package api
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+
+// 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.ProtoPackageIsVersion2 // please upgrade the proto package
+
+// Configuration of authorization.
+//
+// This section determines the authorization provider, if unspecified, then no
+// authorization check will be done.
+//
+// Example:
+//
+//     experimental:
+//       authorization:
+//         provider: firebaserules.googleapis.com
+type AuthorizationConfig struct {
+	// The name of the authorization provider, such as
+	// firebaserules.googleapis.com.
+	Provider string `protobuf:"bytes,1,opt,name=provider" json:"provider,omitempty"`
+}
+
+func (m *AuthorizationConfig) Reset()                    { *m = AuthorizationConfig{} }
+func (m *AuthorizationConfig) String() string            { return proto.CompactTextString(m) }
+func (*AuthorizationConfig) ProtoMessage()               {}
+func (*AuthorizationConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (m *AuthorizationConfig) GetProvider() string {
+	if m != nil {
+		return m.Provider
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterType((*AuthorizationConfig)(nil), "google.api.AuthorizationConfig")
+}
+
+func init() { proto.RegisterFile("google/api/experimental/authorization_config.proto", fileDescriptor0) }
+
+var fileDescriptor0 = []byte{
+	// 180 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x32, 0x4a, 0xcf, 0xcf, 0x4f,
+	0xcf, 0x49, 0xd5, 0x4f, 0x2c, 0xc8, 0xd4, 0x4f, 0xad, 0x28, 0x48, 0x2d, 0xca, 0xcc, 0x4d, 0xcd,
+	0x2b, 0x49, 0xcc, 0xd1, 0x4f, 0x2c, 0x2d, 0xc9, 0xc8, 0x2f, 0xca, 0xac, 0x4a, 0x2c, 0xc9, 0xcc,
+	0xcf, 0x8b, 0x4f, 0xce, 0xcf, 0x4b, 0xcb, 0x4c, 0xd7, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2,
+	0x82, 0xe8, 0xd1, 0x4b, 0x2c, 0xc8, 0x54, 0x32, 0xe4, 0x12, 0x76, 0x44, 0x56, 0xe9, 0x0c, 0x56,
+	0x28, 0x24, 0xc5, 0xc5, 0x51, 0x50, 0x94, 0x5f, 0x96, 0x99, 0x92, 0x5a, 0x24, 0xc1, 0xa8, 0xc0,
+	0xa8, 0xc1, 0x19, 0x04, 0xe7, 0x3b, 0x25, 0x71, 0xf1, 0x25, 0xe7, 0xe7, 0xea, 0x21, 0x0c, 0x71,
+	0x92, 0xc0, 0x62, 0x44, 0x00, 0xc8, 0xaa, 0x00, 0xc6, 0x28, 0x5d, 0xa8, 0xba, 0xf4, 0xfc, 0x9c,
+	0xc4, 0xbc, 0x74, 0xbd, 0xfc, 0xa2, 0x74, 0xfd, 0xf4, 0xd4, 0x3c, 0xb0, 0x43, 0xf4, 0x21, 0x52,
+	0x89, 0x05, 0x99, 0xc5, 0x20, 0xf7, 0x5b, 0x27, 0x16, 0x64, 0x2e, 0x62, 0x62, 0x71, 0x77, 0x0c,
+	0xf0, 0x4c, 0x62, 0x03, 0x2b, 0x30, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x52, 0x27, 0x0c, 0xba,
+	0xdf, 0x00, 0x00, 0x00,
+}
diff --git a/googleapis/api/experimental.pb.go b/googleapis/api/experimental.pb.go
new file mode 100644
index 00000000..e3e02e4e
--- /dev/null
+++ b/googleapis/api/experimental.pb.go
@@ -0,0 +1,57 @@
+// Code generated by protoc-gen-go.
+// source: google/api/experimental/experimental.proto
+// DO NOT EDIT!
+
+package api
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// Experimental service configuration. These configuration options can
+// only be used by whitelisted users.
+type Experimental struct {
+	// Authorization configuration.
+	Authorization *AuthorizationConfig `protobuf:"bytes,8,opt,name=authorization" json:"authorization,omitempty"`
+}
+
+func (m *Experimental) Reset()                    { *m = Experimental{} }
+func (m *Experimental) String() string            { return proto.CompactTextString(m) }
+func (*Experimental) ProtoMessage()               {}
+func (*Experimental) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
+
+func (m *Experimental) GetAuthorization() *AuthorizationConfig {
+	if m != nil {
+		return m.Authorization
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*Experimental)(nil), "google.api.Experimental")
+}
+
+func init() { proto.RegisterFile("google/api/experimental/experimental.proto", fileDescriptor1) }
+
+var fileDescriptor1 = []byte{
+	// 204 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x4a, 0xcf, 0xcf, 0x4f,
+	0xcf, 0x49, 0xd5, 0x4f, 0x2c, 0xc8, 0xd4, 0x4f, 0xad, 0x28, 0x48, 0x2d, 0xca, 0xcc, 0x4d, 0xcd,
+	0x2b, 0x49, 0xcc, 0x41, 0xe1, 0xe8, 0x15, 0x14, 0xe5, 0x97, 0xe4, 0x0b, 0x71, 0x41, 0xd4, 0xea,
+	0x25, 0x16, 0x64, 0x4a, 0xc9, 0x20, 0xe9, 0x4b, 0xcc, 0xcb, 0xcb, 0x2f, 0x49, 0x2c, 0xc9, 0xcc,
+	0xcf, 0x2b, 0x86, 0xa8, 0x94, 0x32, 0xc2, 0x65, 0x6a, 0x62, 0x69, 0x49, 0x46, 0x7e, 0x51, 0x66,
+	0x15, 0x58, 0x75, 0x7c, 0x72, 0x7e, 0x5e, 0x5a, 0x66, 0x3a, 0x44, 0x8f, 0x52, 0x28, 0x17, 0x8f,
+	0x2b, 0x92, 0x52, 0x21, 0x57, 0x2e, 0x5e, 0x14, 0xd5, 0x12, 0x1c, 0x0a, 0x8c, 0x1a, 0xdc, 0x46,
+	0xf2, 0x7a, 0x08, 0x57, 0xe8, 0x39, 0x22, 0x2b, 0x70, 0x06, 0x9b, 0x16, 0x84, 0xaa, 0xcb, 0x29,
+	0x9a, 0x8b, 0x2f, 0x39, 0x3f, 0x17, 0x49, 0x93, 0x93, 0x20, 0xb2, 0x35, 0x01, 0x20, 0xbb, 0x03,
+	0x18, 0xa3, 0x74, 0xa1, 0x0a, 0xd2, 0xf3, 0x73, 0x12, 0xf3, 0xd2, 0xf5, 0xf2, 0x8b, 0xd2, 0xf5,
+	0xd3, 0x53, 0xf3, 0xc0, 0x2e, 0xd3, 0x87, 0x48, 0x25, 0x16, 0x64, 0x16, 0x83, 0x3c, 0x64, 0x9d,
+	0x58, 0x90, 0xb9, 0x88, 0x89, 0xc5, 0xdd, 0x31, 0xc0, 0x33, 0x89, 0x0d, 0xac, 0xc0, 0x18, 0x10,
+	0x00, 0x00, 0xff, 0xff, 0xa0, 0x95, 0x20, 0xe5, 0x46, 0x01, 0x00, 0x00,
+}
diff --git a/googleapis/api/serviceconfig/service.pb.go b/googleapis/api/serviceconfig/service.pb.go
index fe962259..e2ce14d8 100644
--- a/googleapis/api/serviceconfig/service.pb.go
+++ b/googleapis/api/serviceconfig/service.pb.go
@@ -8,10 +8,11 @@ import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
 import _ "google.golang.org/genproto/googleapis/api/annotations"
+import google_api5 "google.golang.org/genproto/googleapis/api"
 import google_api "google.golang.org/genproto/googleapis/api/annotations"
 import _ "google.golang.org/genproto/googleapis/api/label"
 import google_api3 "google.golang.org/genproto/googleapis/api/metric"
-import google_api4 "google.golang.org/genproto/googleapis/api/monitoredres"
+import google_api6 "google.golang.org/genproto/googleapis/api/monitoredres"
 import _ "github.com/golang/protobuf/ptypes/any"
 import google_protobuf4 "google.golang.org/genproto/protobuf/api"
 import google_protobuf3 "google.golang.org/genproto/protobuf/ptype"
@@ -111,13 +112,15 @@ type Service struct {
 	Metrics []*google_api3.MetricDescriptor `protobuf:"bytes,24,rep,name=metrics" json:"metrics,omitempty"`
 	// Defines the monitored resources used by this service. This is required
 	// by the [Service.monitoring][google.api.Service.monitoring] and [Service.logging][google.api.Service.logging] configurations.
-	MonitoredResources []*google_api4.MonitoredResourceDescriptor `protobuf:"bytes,25,rep,name=monitored_resources,json=monitoredResources" json:"monitored_resources,omitempty"`
+	MonitoredResources []*google_api6.MonitoredResourceDescriptor `protobuf:"bytes,25,rep,name=monitored_resources,json=monitoredResources" json:"monitored_resources,omitempty"`
 	// Logging configuration.
 	Logging *Logging `protobuf:"bytes,27,opt,name=logging" json:"logging,omitempty"`
 	// Monitoring configuration.
 	Monitoring *Monitoring `protobuf:"bytes,28,opt,name=monitoring" json:"monitoring,omitempty"`
 	// System parameter configuration.
 	SystemParameters *SystemParameters `protobuf:"bytes,29,opt,name=system_parameters,json=systemParameters" json:"system_parameters,omitempty"`
+	// Experimental configuration.
+	Experimental *google_api5.Experimental `protobuf:"bytes,101,opt,name=experimental" json:"experimental,omitempty"`
 }
 
 func (m *Service) Reset()                    { *m = Service{} }
@@ -251,7 +254,7 @@ func (m *Service) GetMetrics() []*google_api3.MetricDescriptor {
 	return nil
 }
 
-func (m *Service) GetMonitoredResources() []*google_api4.MonitoredResourceDescriptor {
+func (m *Service) GetMonitoredResources() []*google_api6.MonitoredResourceDescriptor {
 	if m != nil {
 		return m.MonitoredResources
 	}
@@ -279,6 +282,13 @@ func (m *Service) GetSystemParameters() *SystemParameters {
 	return nil
 }
 
+func (m *Service) GetExperimental() *google_api5.Experimental {
+	if m != nil {
+		return m.Experimental
+	}
+	return nil
+}
+
 func init() {
 	proto.RegisterType((*Service)(nil), "google.api.Service")
 }
@@ -286,51 +296,53 @@ func init() {
 func init() { proto.RegisterFile("google/api/service.proto", fileDescriptor11) }
 
 var fileDescriptor11 = []byte{
-	// 732 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x95, 0xdd, 0x4e, 0xe3, 0x38,
-	0x14, 0x80, 0xd5, 0xd2, 0xf2, 0x63, 0x7e, 0x16, 0x4c, 0x01, 0x53, 0xba, 0x2b, 0xd8, 0x5d, 0x89,
-	0x4a, 0x2b, 0x52, 0xa9, 0x48, 0xdc, 0xec, 0xc5, 0x8a, 0x02, 0xda, 0xad, 0xc4, 0x4a, 0x95, 0x19,
-	0xd0, 0x68, 0x6e, 0xaa, 0x34, 0x31, 0xc1, 0x33, 0x89, 0x6d, 0xd9, 0x0e, 0x33, 0x7d, 0x9d, 0x79,
-	0x96, 0x79, 0xb0, 0x51, 0x6c, 0x87, 0x3a, 0x6d, 0xb9, 0x6b, 0xfc, 0x7d, 0xe7, 0xe4, 0xc4, 0xf6,
-	0x39, 0x05, 0x28, 0xe1, 0x3c, 0x49, 0x49, 0x2f, 0x14, 0xb4, 0xa7, 0x88, 0x7c, 0xa5, 0x11, 0x09,
-	0x84, 0xe4, 0x9a, 0x43, 0x60, 0x49, 0x10, 0x0a, 0xda, 0xee, 0x78, 0x56, 0xc8, 0x18, 0xd7, 0xa1,
-	0xa6, 0x9c, 0x29, 0x6b, 0xb6, 0x0f, 0x7c, 0x9a, 0xeb, 0x17, 0xb7, 0xec, 0xa7, 0x9e, 0x84, 0xd1,
-	0x17, 0xc2, 0xe2, 0x25, 0x24, 0xe2, 0x4c, 0x93, 0x6f, 0xfa, 0x1d, 0x22, 0x79, 0xea, 0xc8, 0x6f,
-	0x1e, 0x89, 0x79, 0x94, 0x67, 0x84, 0xd9, 0x2a, 0x1c, 0x3f, 0xf6, 0x38, 0x61, 0xb1, 0xe0, 0x94,
-	0xe9, 0x25, 0xf5, 0xbd, 0x68, 0x2d, 0xdc, 0xf2, 0xa1, 0xb7, 0x9c, 0x86, 0x13, 0x52, 0xbe, 0xa9,
-	0xe5, 0xaf, 0xf3, 0x64, 0x49, 0x65, 0x29, 0x4f, 0x12, 0xca, 0x4a, 0x72, 0xe4, 0x91, 0x8c, 0x68,
-	0x49, 0x23, 0x07, 0xfe, 0xf0, 0x01, 0x67, 0x54, 0x73, 0x49, 0xe2, 0xb1, 0x24, 0x8a, 0xe7, 0xb2,
-	0xdc, 0xe6, 0xf6, 0xc9, 0xa2, 0x34, 0x4b, 0x7d, 0xe6, 0x9f, 0xce, 0x54, 0x69, 0x92, 0x8d, 0x45,
-	0x28, 0xc3, 0x8c, 0x68, 0x22, 0x97, 0x7c, 0x45, 0xae, 0xc2, 0x84, 0xcc, 0xed, 0x87, 0x79, 0x9a,
-	0xe4, 0xcf, 0xbd, 0x90, 0x4d, 0xdf, 0x45, 0x82, 0x3a, 0xd4, 0x9e, 0x47, 0x7a, 0x2a, 0xc8, 0xdc,
-	0x09, 0xbc, 0xb1, 0xaf, 0x32, 0x14, 0x82, 0x48, 0x77, 0x0d, 0x7e, 0xff, 0xb1, 0x0e, 0xd6, 0x1e,
-	0xec, 0x15, 0x82, 0x37, 0x60, 0x27, 0xe2, 0xec, 0x99, 0x26, 0xe3, 0x57, 0x22, 0x15, 0xe5, 0x0c,
-	0xb5, 0x4e, 0x6b, 0xdd, 0xcd, 0x7e, 0x27, 0x70, 0xb7, 0xaa, 0x4c, 0x12, 0x3c, 0x0e, 0x99, 0xbe,
-	0xec, 0x3f, 0x85, 0x69, 0x4e, 0xf0, 0xb6, 0x8d, 0x79, 0xb2, 0x21, 0x10, 0x82, 0x06, 0x0b, 0x33,
-	0x82, 0x6a, 0xa7, 0xb5, 0xee, 0x06, 0x36, 0xbf, 0xe1, 0x0e, 0xa8, 0xd3, 0x18, 0x9d, 0x99, 0x95,
-	0x3a, 0x8d, 0x61, 0x0b, 0x34, 0x35, 0xd5, 0x29, 0x41, 0x75, 0xb3, 0x64, 0x1f, 0x60, 0x00, 0xf6,
-	0x85, 0xe4, 0x71, 0x1e, 0x11, 0x39, 0x16, 0x92, 0x7f, 0x26, 0x91, 0x1e, 0xd3, 0x18, 0x1d, 0x1a,
-	0x67, 0xaf, 0x44, 0x23, 0x4b, 0x86, 0x31, 0xec, 0x82, 0x46, 0x28, 0xa8, 0x42, 0x2b, 0xa7, 0x2b,
-	0xdd, 0xcd, 0x7e, 0x6b, 0xa1, 0xc8, 0x6b, 0x41, 0xb1, 0x31, 0xe0, 0x5f, 0xa0, 0x59, 0x6c, 0x89,
-	0x42, 0x0d, 0xa3, 0x1e, 0x2c, 0xa8, 0x1f, 0xa6, 0x82, 0x60, 0xeb, 0x14, 0x32, 0x61, 0x79, 0xa6,
-	0x50, 0xf3, 0x1d, 0xf9, 0x8e, 0xe5, 0x19, 0xb6, 0x0e, 0xfc, 0x07, 0x6c, 0x57, 0xee, 0x35, 0x5a,
-	0x35, 0x3b, 0x76, 0x1c, 0xcc, 0xfa, 0x30, 0xb8, 0xf5, 0x05, 0x5c, 0xf5, 0xe1, 0x05, 0x58, 0x73,
-	0x6d, 0x86, 0xd6, 0x4d, 0xe8, 0xbe, 0x1f, 0x3a, 0xb0, 0x08, 0x97, 0x0e, 0xfc, 0x13, 0x34, 0x8a,
-	0x66, 0x40, 0x1b, 0xc6, 0xdd, 0xf5, 0xdd, 0xff, 0xb4, 0x16, 0xd8, 0x50, 0x38, 0x00, 0x3b, 0x45,
-	0x4b, 0x13, 0xa6, 0x69, 0x64, 0xcb, 0xda, 0x34, 0x7e, 0xdb, 0xf7, 0xaf, 0x2b, 0x06, 0x9e, 0x8b,
-	0x28, 0x0a, 0x73, 0x5d, 0x8e, 0xb6, 0x16, 0x0b, 0xbb, 0xb1, 0x08, 0x97, 0x0e, 0x3c, 0x07, 0x4d,
-	0x73, 0x91, 0xd1, 0x2f, 0x46, 0xde, 0xf3, 0xe5, 0xc7, 0x02, 0x60, 0xcb, 0x61, 0x1f, 0x6c, 0x94,
-	0x9d, 0xae, 0x10, 0xac, 0x1e, 0x5d, 0x21, 0xdf, 0x39, 0x88, 0x67, 0x5a, 0x59, 0x8b, 0xe4, 0x29,
-	0x3a, 0x58, 0x5e, 0x8b, 0xe4, 0x29, 0x2e, 0x1d, 0x78, 0x01, 0x1a, 0x29, 0x4f, 0x14, 0x3a, 0x32,
-	0xd9, 0x2b, 0x67, 0x71, 0xcf, 0x93, 0x5b, 0xa2, 0x22, 0x49, 0x85, 0xe6, 0x12, 0x1b, 0x0d, 0x5e,
-	0x81, 0x35, 0x3b, 0x01, 0x14, 0x42, 0x26, 0xa2, 0xe3, 0x47, 0xfc, 0x6f, 0x90, 0x17, 0x54, 0xca,
-	0xf0, 0x23, 0xd8, 0x5f, 0x1c, 0x10, 0x0a, 0x1d, 0x9b, 0x1c, 0xe7, 0x95, 0x1c, 0xa5, 0x86, 0x9d,
-	0xe5, 0xa5, 0x83, 0xd9, 0x3c, 0x34, 0xdf, 0xeb, 0xa6, 0x15, 0x3a, 0x59, 0xfc, 0xde, 0x7b, 0x8b,
-	0x70, 0xe9, 0xc0, 0x2b, 0x00, 0x66, 0x43, 0x08, 0x75, 0x4c, 0xc4, 0xe1, 0x92, 0xf7, 0x17, 0x41,
-	0x9e, 0x09, 0x87, 0x60, 0x6f, 0x7e, 0x3e, 0x29, 0xf4, 0x6b, 0xb5, 0xe5, 0x8b, 0xf0, 0x07, 0x23,
-	0x8d, 0xde, 0x1c, 0xbc, 0xab, 0xe6, 0x56, 0x06, 0xac, 0x18, 0x1d, 0x99, 0x17, 0x34, 0xd8, 0x72,
-	0x53, 0x65, 0x54, 0xb4, 0xcd, 0xa8, 0xf6, 0xe9, 0xce, 0xb1, 0x84, 0xa7, 0x21, 0x4b, 0x02, 0x2e,
-	0x93, 0x5e, 0x42, 0x98, 0x69, 0xaa, 0x9e, 0x45, 0x45, 0xab, 0xfa, 0x7f, 0x69, 0x76, 0xae, 0xfc,
-	0x5d, 0x79, 0xfa, 0x5e, 0x6f, 0xfc, 0x7b, 0x3d, 0x1a, 0x4e, 0x56, 0x4d, 0xe0, 0xe5, 0xcf, 0x00,
-	0x00, 0x00, 0xff, 0xff, 0x90, 0x65, 0xe8, 0x5d, 0x0a, 0x07, 0x00, 0x00,
+	// 756 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x95, 0x5f, 0x4f, 0xdb, 0x3a,
+	0x14, 0xc0, 0xd5, 0xd2, 0xc2, 0xad, 0xf9, 0x73, 0xc1, 0x14, 0x30, 0xa5, 0xf7, 0x0a, 0xb6, 0x49,
+	0x54, 0x9b, 0x48, 0xa5, 0x22, 0xf1, 0xb2, 0x49, 0x13, 0x05, 0xb4, 0x55, 0x62, 0x52, 0x65, 0x06,
+	0x9a, 0xf6, 0x52, 0xa5, 0x89, 0x09, 0xde, 0x12, 0xdb, 0xb2, 0x1d, 0x46, 0x5f, 0xf7, 0x51, 0xf6,
+	0x49, 0xa7, 0xd8, 0x09, 0x75, 0xda, 0xf2, 0x86, 0xfd, 0xfb, 0x9d, 0xc3, 0x71, 0xec, 0x73, 0x0a,
+	0x50, 0xc4, 0x79, 0x14, 0x93, 0xae, 0x2f, 0x68, 0x57, 0x11, 0xf9, 0x48, 0x03, 0xe2, 0x09, 0xc9,
+	0x35, 0x87, 0xc0, 0x12, 0xcf, 0x17, 0xb4, 0xd5, 0x76, 0x2c, 0x9f, 0x31, 0xae, 0x7d, 0x4d, 0x39,
+	0x53, 0xd6, 0x6c, 0xed, 0xb8, 0x34, 0xd5, 0x0f, 0xf9, 0xb6, 0x9b, 0x7a, 0xec, 0x07, 0x3f, 0x09,
+	0x0b, 0x17, 0x90, 0x80, 0x33, 0x4d, 0x9e, 0xf4, 0x0b, 0x44, 0xf2, 0x38, 0x27, 0xff, 0x3b, 0x24,
+	0xe4, 0x41, 0x9a, 0x10, 0x66, 0xab, 0xc8, 0xf9, 0xbe, 0xc3, 0x09, 0x0b, 0x05, 0xa7, 0xac, 0x48,
+	0xfa, 0xd6, 0x45, 0x4f, 0x82, 0x48, 0x6a, 0x82, 0xe3, 0xd2, 0x62, 0xc1, 0x59, 0x1e, 0xb4, 0x16,
+	0xf9, 0xf6, 0xae, 0xb3, 0x1d, 0xfb, 0x63, 0x52, 0xe8, 0x4d, 0x77, 0x9f, 0x47, 0x0b, 0x4e, 0x11,
+	0xf3, 0x28, 0xa2, 0xac, 0x20, 0x7b, 0x0e, 0x49, 0x88, 0x96, 0x34, 0xc8, 0xc1, 0x6b, 0x17, 0x70,
+	0x46, 0x35, 0x97, 0x24, 0x1c, 0x49, 0xa2, 0x78, 0x2a, 0x8b, 0x2b, 0x69, 0x1d, 0xcc, 0x4b, 0xd3,
+	0xd4, 0x47, 0xee, 0x4d, 0x4e, 0x94, 0x26, 0xc9, 0x48, 0xf8, 0xd2, 0x4f, 0x88, 0x26, 0x72, 0xc1,
+	0x29, 0x52, 0xe5, 0x47, 0x64, 0xe6, 0xdb, 0x99, 0xd5, 0x38, 0xbd, 0xef, 0xfa, 0x6c, 0xf2, 0x22,
+	0x12, 0x34, 0x47, 0xad, 0x59, 0xa4, 0x27, 0x82, 0xcc, 0xdc, 0xd6, 0x33, 0xfb, 0x25, 0x7d, 0x21,
+	0x88, 0xcc, 0x9f, 0xcc, 0xab, 0xdf, 0x0d, 0xb0, 0x72, 0x63, 0x9f, 0x1b, 0xbc, 0x00, 0x1b, 0x01,
+	0x67, 0xf7, 0x34, 0x1a, 0x3d, 0x12, 0xa9, 0x28, 0x67, 0xa8, 0x79, 0x58, 0xe9, 0xac, 0xf6, 0xda,
+	0x5e, 0xfe, 0x02, 0x8b, 0x24, 0xde, 0xed, 0x80, 0xe9, 0xd3, 0xde, 0x9d, 0x1f, 0xa7, 0x04, 0xaf,
+	0xdb, 0x98, 0x3b, 0x1b, 0x02, 0x21, 0xa8, 0x31, 0x3f, 0x21, 0xa8, 0x72, 0x58, 0xe9, 0x34, 0xb0,
+	0xf9, 0x1b, 0x6e, 0x80, 0x2a, 0x0d, 0xd1, 0x91, 0xd9, 0xa9, 0xd2, 0x10, 0x36, 0x41, 0x5d, 0x53,
+	0x1d, 0x13, 0x54, 0x35, 0x5b, 0x76, 0x01, 0x3d, 0xb0, 0x2d, 0x24, 0x0f, 0xd3, 0x80, 0xc8, 0x91,
+	0x90, 0xfc, 0x07, 0x09, 0xf4, 0x88, 0x86, 0x68, 0xd7, 0x38, 0x5b, 0x05, 0x1a, 0x5a, 0x32, 0x08,
+	0x61, 0x07, 0xd4, 0x7c, 0x41, 0x15, 0x5a, 0x3a, 0x5c, 0xea, 0xac, 0xf6, 0x9a, 0x73, 0x45, 0x9e,
+	0x0b, 0x8a, 0x8d, 0x01, 0xdf, 0x81, 0x7a, 0xf6, 0x49, 0x14, 0xaa, 0x19, 0x75, 0x67, 0x4e, 0xfd,
+	0x3a, 0x11, 0x04, 0x5b, 0x27, 0x93, 0x09, 0x4b, 0x13, 0x85, 0xea, 0x2f, 0xc8, 0x57, 0x2c, 0x4d,
+	0xb0, 0x75, 0xe0, 0x47, 0xb0, 0x5e, 0xea, 0x01, 0xb4, 0x6c, 0xbe, 0xd8, 0xbe, 0x37, 0xed, 0x59,
+	0xef, 0xd2, 0x15, 0x70, 0xd9, 0x87, 0x27, 0x60, 0x25, 0x6f, 0x49, 0xf4, 0x8f, 0x09, 0xdd, 0x76,
+	0x43, 0xfb, 0x16, 0xe1, 0xc2, 0x81, 0x6f, 0x40, 0x2d, 0x6b, 0x06, 0xd4, 0x30, 0xee, 0xa6, 0xeb,
+	0x7e, 0xd6, 0x5a, 0x60, 0x43, 0x61, 0x1f, 0x6c, 0x64, 0xed, 0x4f, 0x98, 0xa6, 0x81, 0x2d, 0x6b,
+	0xd5, 0xf8, 0x2d, 0xd7, 0x3f, 0x2f, 0x19, 0x78, 0x26, 0x22, 0x2b, 0x2c, 0x9f, 0x08, 0x68, 0x6d,
+	0xbe, 0xb0, 0x0b, 0x8b, 0x70, 0xe1, 0xc0, 0x63, 0x50, 0x37, 0x0f, 0x19, 0xfd, 0x6b, 0xe4, 0x2d,
+	0x57, 0xbe, 0xcd, 0x00, 0xb6, 0x1c, 0xf6, 0x40, 0xa3, 0x98, 0x0a, 0x0a, 0xc1, 0xf2, 0xd5, 0x65,
+	0xf2, 0x55, 0x0e, 0xf1, 0x54, 0x2b, 0x6a, 0x91, 0x3c, 0x46, 0x3b, 0x8b, 0x6b, 0x91, 0x3c, 0xc6,
+	0x85, 0x03, 0x4f, 0x40, 0x2d, 0xe6, 0x91, 0x42, 0x7b, 0x26, 0x7b, 0xe9, 0x2e, 0xae, 0x79, 0x74,
+	0x49, 0x54, 0x20, 0xa9, 0xd0, 0x5c, 0x62, 0xa3, 0xc1, 0x33, 0xb0, 0x62, 0x27, 0x80, 0x42, 0xc8,
+	0x44, 0xb4, 0xdd, 0x88, 0x2f, 0x06, 0x39, 0x41, 0x85, 0x0c, 0xbf, 0x81, 0xed, 0xf9, 0x01, 0xa1,
+	0xd0, 0xbe, 0xc9, 0x71, 0x5c, 0xca, 0x51, 0x68, 0x38, 0xb7, 0x9c, 0x74, 0x30, 0x99, 0x85, 0xe6,
+	0xbc, 0xf9, 0xb4, 0x42, 0x07, 0xf3, 0xe7, 0xbd, 0xb6, 0x08, 0x17, 0x0e, 0x3c, 0x03, 0x60, 0x3a,
+	0x84, 0x50, 0xdb, 0x44, 0xec, 0x2e, 0xf8, 0xff, 0x59, 0x90, 0x63, 0xc2, 0x01, 0xd8, 0x9a, 0x9d,
+	0x4f, 0x0a, 0xfd, 0x57, 0x6e, 0xf9, 0x2c, 0xfc, 0xc6, 0x48, 0xc3, 0x67, 0x07, 0x6f, 0xaa, 0x99,
+	0x1d, 0xf8, 0x01, 0xac, 0xb9, 0x33, 0x1c, 0x11, 0x93, 0x05, 0x95, 0x2e, 0xd6, 0xe1, 0xb8, 0x64,
+	0xf7, 0x59, 0x36, 0x78, 0x12, 0x47, 0xee, 0xaf, 0xe5, 0x33, 0x69, 0x98, 0x35, 0xdd, 0xb0, 0xf2,
+	0xfd, 0x2a, 0x67, 0x11, 0x8f, 0x7d, 0x16, 0x79, 0x5c, 0x46, 0xdd, 0x88, 0x30, 0xd3, 0x92, 0x5d,
+	0x8b, 0xb2, 0x46, 0x77, 0x7f, 0x3c, 0xed, 0x54, 0x7a, 0x5f, 0x5a, 0xfd, 0xa9, 0xd6, 0x3e, 0x9d,
+	0x0f, 0x07, 0xe3, 0x65, 0x13, 0x78, 0xfa, 0x37, 0x00, 0x00, 0xff, 0xff, 0xe7, 0xee, 0x78, 0x1f,
+	0x74, 0x07, 0x00, 0x00,
 }
diff --git a/googleapis/api/servicemanagement/v1/servicemanager.pb.go b/googleapis/api/servicemanagement/v1/servicemanager.pb.go
index 45c31644..55aa67fc 100644
--- a/googleapis/api/servicemanagement/v1/servicemanager.pb.go
+++ b/googleapis/api/servicemanagement/v1/servicemanager.pb.go
@@ -8,7 +8,7 @@ import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
 import _ "google.golang.org/genproto/googleapis/api/annotations"
-import google_api17 "google.golang.org/genproto/googleapis/api/serviceconfig"
+import google_api19 "google.golang.org/genproto/googleapis/api/serviceconfig"
 import google_longrunning "google.golang.org/genproto/googleapis/longrunning"
 import google_protobuf1 "github.com/golang/protobuf/ptypes/any"
 import _ "github.com/golang/protobuf/ptypes/empty"
@@ -250,7 +250,7 @@ func (m *ListServiceConfigsRequest) GetPageSize() int32 {
 // Response message for ListServiceConfigs method.
 type ListServiceConfigsResponse struct {
 	// The list of service configuration resources.
-	ServiceConfigs []*google_api17.Service `protobuf:"bytes,1,rep,name=service_configs,json=serviceConfigs" json:"service_configs,omitempty"`
+	ServiceConfigs []*google_api19.Service `protobuf:"bytes,1,rep,name=service_configs,json=serviceConfigs" json:"service_configs,omitempty"`
 	// The token of the next page of results.
 	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
 }
@@ -260,7 +260,7 @@ func (m *ListServiceConfigsResponse) String() string            { return proto.C
 func (*ListServiceConfigsResponse) ProtoMessage()               {}
 func (*ListServiceConfigsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} }
 
-func (m *ListServiceConfigsResponse) GetServiceConfigs() []*google_api17.Service {
+func (m *ListServiceConfigsResponse) GetServiceConfigs() []*google_api19.Service {
 	if m != nil {
 		return m.ServiceConfigs
 	}
@@ -280,7 +280,7 @@ type CreateServiceConfigRequest struct {
 	// for naming requirements.  For example: `example.googleapis.com`.
 	ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName" json:"service_name,omitempty"`
 	// The service configuration resource.
-	ServiceConfig *google_api17.Service `protobuf:"bytes,2,opt,name=service_config,json=serviceConfig" json:"service_config,omitempty"`
+	ServiceConfig *google_api19.Service `protobuf:"bytes,2,opt,name=service_config,json=serviceConfig" json:"service_config,omitempty"`
 }
 
 func (m *CreateServiceConfigRequest) Reset()                    { *m = CreateServiceConfigRequest{} }
@@ -295,7 +295,7 @@ func (m *CreateServiceConfigRequest) GetServiceName() string {
 	return ""
 }
 
-func (m *CreateServiceConfigRequest) GetServiceConfig() *google_api17.Service {
+func (m *CreateServiceConfigRequest) GetServiceConfig() *google_api19.Service {
 	if m != nil {
 		return m.ServiceConfig
 	}
@@ -344,7 +344,7 @@ func (m *SubmitConfigSourceRequest) GetValidateOnly() bool {
 // Response message for SubmitConfigSource method.
 type SubmitConfigSourceResponse struct {
 	// The generated service configuration.
-	ServiceConfig *google_api17.Service `protobuf:"bytes,1,opt,name=service_config,json=serviceConfig" json:"service_config,omitempty"`
+	ServiceConfig *google_api19.Service `protobuf:"bytes,1,opt,name=service_config,json=serviceConfig" json:"service_config,omitempty"`
 }
 
 func (m *SubmitConfigSourceResponse) Reset()                    { *m = SubmitConfigSourceResponse{} }
@@ -352,7 +352,7 @@ func (m *SubmitConfigSourceResponse) String() string            { return proto.C
 func (*SubmitConfigSourceResponse) ProtoMessage()               {}
 func (*SubmitConfigSourceResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} }
 
-func (m *SubmitConfigSourceResponse) GetServiceConfig() *google_api17.Service {
+func (m *SubmitConfigSourceResponse) GetServiceConfig() *google_api19.Service {
 	if m != nil {
 		return m.ServiceConfig
 	}
@@ -694,12 +694,12 @@ type ServiceManagerClient interface {
 	// from the newest to the oldest.
 	ListServiceConfigs(ctx context.Context, in *ListServiceConfigsRequest, opts ...grpc.CallOption) (*ListServiceConfigsResponse, error)
 	// Gets a service configuration (version) for a managed service.
-	GetServiceConfig(ctx context.Context, in *GetServiceConfigRequest, opts ...grpc.CallOption) (*google_api17.Service, error)
+	GetServiceConfig(ctx context.Context, in *GetServiceConfigRequest, opts ...grpc.CallOption) (*google_api19.Service, error)
 	// Creates a new service configuration (version) for a managed service.
 	// This method only stores the service configuration. To roll out the service
 	// configuration to backend systems please call
 	// [CreateServiceRollout][google.api.servicemanagement.v1.ServiceManager.CreateServiceRollout].
-	CreateServiceConfig(ctx context.Context, in *CreateServiceConfigRequest, opts ...grpc.CallOption) (*google_api17.Service, error)
+	CreateServiceConfig(ctx context.Context, in *CreateServiceConfigRequest, opts ...grpc.CallOption) (*google_api19.Service, error)
 	// Creates a new service configuration (version) for a managed service based
 	// on
 	// user-supplied configuration source files (for example: OpenAPI
@@ -813,8 +813,8 @@ func (c *serviceManagerClient) ListServiceConfigs(ctx context.Context, in *ListS
 	return out, nil
 }
 
-func (c *serviceManagerClient) GetServiceConfig(ctx context.Context, in *GetServiceConfigRequest, opts ...grpc.CallOption) (*google_api17.Service, error) {
-	out := new(google_api17.Service)
+func (c *serviceManagerClient) GetServiceConfig(ctx context.Context, in *GetServiceConfigRequest, opts ...grpc.CallOption) (*google_api19.Service, error) {
+	out := new(google_api19.Service)
 	err := grpc.Invoke(ctx, "/google.api.servicemanagement.v1.ServiceManager/GetServiceConfig", in, out, c.cc, opts...)
 	if err != nil {
 		return nil, err
@@ -822,8 +822,8 @@ func (c *serviceManagerClient) GetServiceConfig(ctx context.Context, in *GetServ
 	return out, nil
 }
 
-func (c *serviceManagerClient) CreateServiceConfig(ctx context.Context, in *CreateServiceConfigRequest, opts ...grpc.CallOption) (*google_api17.Service, error) {
-	out := new(google_api17.Service)
+func (c *serviceManagerClient) CreateServiceConfig(ctx context.Context, in *CreateServiceConfigRequest, opts ...grpc.CallOption) (*google_api19.Service, error) {
+	out := new(google_api19.Service)
 	err := grpc.Invoke(ctx, "/google.api.servicemanagement.v1.ServiceManager/CreateServiceConfig", in, out, c.cc, opts...)
 	if err != nil {
 		return nil, err
@@ -924,12 +924,12 @@ type ServiceManagerServer interface {
 	// from the newest to the oldest.
 	ListServiceConfigs(context.Context, *ListServiceConfigsRequest) (*ListServiceConfigsResponse, error)
 	// Gets a service configuration (version) for a managed service.
-	GetServiceConfig(context.Context, *GetServiceConfigRequest) (*google_api17.Service, error)
+	GetServiceConfig(context.Context, *GetServiceConfigRequest) (*google_api19.Service, error)
 	// Creates a new service configuration (version) for a managed service.
 	// This method only stores the service configuration. To roll out the service
 	// configuration to backend systems please call
 	// [CreateServiceRollout][google.api.servicemanagement.v1.ServiceManager.CreateServiceRollout].
-	CreateServiceConfig(context.Context, *CreateServiceConfigRequest) (*google_api17.Service, error)
+	CreateServiceConfig(context.Context, *CreateServiceConfigRequest) (*google_api19.Service, error)
 	// Creates a new service configuration (version) for a managed service based
 	// on
 	// user-supplied configuration source files (for example: OpenAPI
diff --git a/googleapis/appengine/legacy/audit_data.pb.go b/googleapis/appengine/legacy/audit_data.pb.go
new file mode 100644
index 00000000..02654609
--- /dev/null
+++ b/googleapis/appengine/legacy/audit_data.pb.go
@@ -0,0 +1,84 @@
+// Code generated by protoc-gen-go.
+// source: google/appengine/legacy/audit_data.proto
+// DO NOT EDIT!
+
+/*
+Package legacy is a generated protocol buffer package.
+
+It is generated from these files:
+	google/appengine/legacy/audit_data.proto
+
+It has these top-level messages:
+	AuditData
+*/
+package legacy
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+
+// 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.ProtoPackageIsVersion2 // please upgrade the proto package
+
+// Admin Console legacy audit log.
+type AuditData struct {
+	// Text description of the admin event.
+	// This is the "Event" column in Admin Console's Admin Logs.
+	EventMessage string `protobuf:"bytes,1,opt,name=event_message,json=eventMessage" json:"event_message,omitempty"`
+	// Arbitrary event data.
+	// This is the "Result" column in Admin Console's Admin Logs.
+	EventData map[string]string `protobuf:"bytes,2,rep,name=event_data,json=eventData" json:"event_data,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+}
+
+func (m *AuditData) Reset()                    { *m = AuditData{} }
+func (m *AuditData) String() string            { return proto.CompactTextString(m) }
+func (*AuditData) ProtoMessage()               {}
+func (*AuditData) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (m *AuditData) GetEventMessage() string {
+	if m != nil {
+		return m.EventMessage
+	}
+	return ""
+}
+
+func (m *AuditData) GetEventData() map[string]string {
+	if m != nil {
+		return m.EventData
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*AuditData)(nil), "google.appengine.legacy.AuditData")
+}
+
+func init() { proto.RegisterFile("google/appengine/legacy/audit_data.proto", fileDescriptor0) }
+
+var fileDescriptor0 = []byte{
+	// 247 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x90, 0x4f, 0x4b, 0x03, 0x31,
+	0x10, 0xc5, 0xc9, 0x16, 0x85, 0x1d, 0xb5, 0x48, 0x10, 0x5c, 0xf4, 0x52, 0xf4, 0xb2, 0xa7, 0x04,
+	0xf5, 0x22, 0xfe, 0x39, 0x58, 0xec, 0x51, 0x58, 0x7a, 0xf4, 0x52, 0xc6, 0x76, 0x18, 0x16, 0xb7,
+	0x49, 0xd8, 0x4d, 0x0b, 0xfb, 0xed, 0xfc, 0x68, 0x92, 0xa4, 0x2e, 0x48, 0xe9, 0x29, 0x33, 0x6f,
+	0x7e, 0x99, 0x79, 0x3c, 0x28, 0xd9, 0x5a, 0x6e, 0x48, 0xa3, 0x73, 0x64, 0xb8, 0x36, 0xa4, 0x1b,
+	0x62, 0x5c, 0xf6, 0x1a, 0x37, 0xab, 0xda, 0x2f, 0x56, 0xe8, 0x51, 0xb9, 0xd6, 0x7a, 0x2b, 0x2f,
+	0x13, 0xa9, 0x06, 0x52, 0x25, 0xf2, 0xe6, 0x47, 0x40, 0xfe, 0x16, 0xe8, 0x77, 0xf4, 0x28, 0x6f,
+	0xe1, 0x8c, 0xb6, 0x64, 0xfc, 0x62, 0x4d, 0x5d, 0x87, 0x4c, 0x85, 0x98, 0x88, 0x32, 0x9f, 0x9f,
+	0x46, 0xf1, 0x23, 0x69, 0xb2, 0x02, 0x48, 0x50, 0xd8, 0x5f, 0x64, 0x93, 0x51, 0x79, 0x72, 0x7f,
+	0xa7, 0x0e, 0x1c, 0x50, 0xc3, 0x72, 0x35, 0x0b, 0x9f, 0x42, 0x35, 0x33, 0xbe, 0xed, 0xe7, 0x39,
+	0xfd, 0xf5, 0x57, 0x2f, 0x30, 0xfe, 0x3f, 0x94, 0xe7, 0x30, 0xfa, 0xa6, 0x7e, 0x77, 0x3e, 0x94,
+	0xf2, 0x02, 0x8e, 0xb6, 0xd8, 0x6c, 0xa8, 0xc8, 0xa2, 0x96, 0x9a, 0xa7, 0xec, 0x51, 0x4c, 0x0d,
+	0x5c, 0x2f, 0xed, 0xfa, 0x90, 0x81, 0xe9, 0x78, 0x70, 0x50, 0x85, 0x28, 0x2a, 0xf1, 0xf9, 0xba,
+	0x43, 0xd9, 0x36, 0x68, 0x58, 0xd9, 0x96, 0x35, 0x93, 0x89, 0x41, 0xe9, 0x34, 0x42, 0x57, 0x77,
+	0x7b, 0xa9, 0x3e, 0xa7, 0xe7, 0xeb, 0x38, 0x92, 0x0f, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x4e,
+	0x5d, 0x14, 0xaa, 0x7e, 0x01, 0x00, 0x00,
+}
diff --git a/googleapis/bigtable/admin/v2/bigtable_instance_admin.pb.go b/googleapis/bigtable/admin/v2/bigtable_instance_admin.pb.go
index 17de8014..bf2f449c 100644
--- a/googleapis/bigtable/admin/v2/bigtable_instance_admin.pb.go
+++ b/googleapis/bigtable/admin/v2/bigtable_instance_admin.pb.go
@@ -67,19 +67,19 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
 // Request message for BigtableInstanceAdmin.CreateInstance.
 type CreateInstanceRequest struct {
 	// The unique name of the project in which to create the new instance.
-	// Values are of the form projects/<project>
+	// Values are of the form `projects/<project>`.
 	Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
-	// The id to be used when referring to the new instance within its project,
-	// e.g. just the "myinstance" section of the full name
-	// "projects/myproject/instances/myinstance"
+	// The ID to be used when referring to the new instance within its project,
+	// e.g., just `myinstance` rather than
+	// `projects/myproject/instances/myinstance`.
 	InstanceId string `protobuf:"bytes,2,opt,name=instance_id,json=instanceId" json:"instance_id,omitempty"`
 	// The instance to create.
-	// Fields marked "@OutputOnly" must be left blank.
+	// Fields marked `OutputOnly` must be left blank.
 	Instance *Instance `protobuf:"bytes,3,opt,name=instance" json:"instance,omitempty"`
 	// The clusters to be created within the instance, mapped by desired
-	// cluster ID (e.g. just the "mycluster" part of the full name
-	// "projects/myproject/instances/myinstance/clusters/mycluster").
-	// Fields marked "@OutputOnly" must be left blank.
+	// cluster ID, e.g., just `mycluster` rather than
+	// `projects/myproject/instances/myinstance/clusters/mycluster`.
+	// Fields marked `OutputOnly` must be left blank.
 	// Currently exactly one cluster must be specified.
 	Clusters map[string]*Cluster `protobuf:"bytes,4,rep,name=clusters" json:"clusters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 }
@@ -120,7 +120,7 @@ func (m *CreateInstanceRequest) GetClusters() map[string]*Cluster {
 // Request message for BigtableInstanceAdmin.GetInstance.
 type GetInstanceRequest struct {
 	// The unique name of the requested instance. Values are of the form
-	// projects/<project>/instances/<instance>
+	// `projects/<project>/instances/<instance>`.
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 }
 
@@ -139,7 +139,7 @@ func (m *GetInstanceRequest) GetName() string {
 // Request message for BigtableInstanceAdmin.ListInstances.
 type ListInstancesRequest struct {
 	// The unique name of the project for which a list of instances is requested.
-	// Values are of the form projects/<project>
+	// Values are of the form `projects/<project>`.
 	Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
 	// The value of `next_page_token` returned by a previous call.
 	PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
@@ -171,7 +171,7 @@ type ListInstancesResponse struct {
 	// Locations from which Instance information could not be retrieved,
 	// due to an outage or some other transient condition.
 	// Instances whose Clusters are all in one of the failed locations
-	// may be missing from 'instances', and Instances with at least one
+	// may be missing from `instances`, and Instances with at least one
 	// Cluster in a failed location may only have partial information returned.
 	FailedLocations []string `protobuf:"bytes,2,rep,name=failed_locations,json=failedLocations" json:"failed_locations,omitempty"`
 	// Set if not all instances could be returned in a single response.
@@ -209,7 +209,7 @@ func (m *ListInstancesResponse) GetNextPageToken() string {
 // Request message for BigtableInstanceAdmin.DeleteInstance.
 type DeleteInstanceRequest struct {
 	// The unique name of the instance to be deleted.
-	// Values are of the form projects/<project>/instances/<instance>
+	// Values are of the form `projects/<project>/instances/<instance>`.
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 }
 
@@ -229,14 +229,14 @@ func (m *DeleteInstanceRequest) GetName() string {
 type CreateClusterRequest struct {
 	// The unique name of the instance in which to create the new cluster.
 	// Values are of the form
-	// projects/<project>/instances/<instance>/clusters/[a-z][-a-z0-9]*
+	// `projects/<project>/instances/<instance>`.
 	Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
-	// The id to be used when referring to the new cluster within its instance,
-	// e.g. just the "mycluster" section of the full name
-	// "projects/myproject/instances/myinstance/clusters/mycluster"
+	// The ID to be used when referring to the new cluster within its instance,
+	// e.g., just `mycluster` rather than
+	// `projects/myproject/instances/myinstance/clusters/mycluster`.
 	ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"`
 	// The cluster to be created.
-	// Fields marked "@OutputOnly" must be left blank.
+	// Fields marked `OutputOnly` must be left blank.
 	Cluster *Cluster `protobuf:"bytes,3,opt,name=cluster" json:"cluster,omitempty"`
 }
 
@@ -269,7 +269,7 @@ func (m *CreateClusterRequest) GetCluster() *Cluster {
 // Request message for BigtableInstanceAdmin.GetCluster.
 type GetClusterRequest struct {
 	// The unique name of the requested cluster. Values are of the form
-	// projects/<project>/instances/<instance>/clusters/<cluster>
+	// `projects/<project>/instances/<instance>/clusters/<cluster>`.
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 }
 
@@ -288,9 +288,9 @@ func (m *GetClusterRequest) GetName() string {
 // Request message for BigtableInstanceAdmin.ListClusters.
 type ListClustersRequest struct {
 	// The unique name of the instance for which a list of clusters is requested.
-	// Values are of the form projects/<project>/instances/<instance>
-	// Use <instance> = '-' to list Clusters for all Instances in a project,
-	// for example "projects/myproject/instances/-"
+	// Values are of the form `projects/<project>/instances/<instance>`.
+	// Use `<instance> = '-'` to list Clusters for all Instances in a project,
+	// e.g., `projects/myproject/instances/-`.
 	Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
 	// The value of `next_page_token` returned by a previous call.
 	PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
@@ -321,7 +321,7 @@ type ListClustersResponse struct {
 	Clusters []*Cluster `protobuf:"bytes,1,rep,name=clusters" json:"clusters,omitempty"`
 	// Locations from which Cluster information could not be retrieved,
 	// due to an outage or some other transient condition.
-	// Clusters from these locations may be missing from 'clusters',
+	// Clusters from these locations may be missing from `clusters`,
 	// or may only have partial information returned.
 	FailedLocations []string `protobuf:"bytes,2,rep,name=failed_locations,json=failedLocations" json:"failed_locations,omitempty"`
 	// Set if not all clusters could be returned in a single response.
@@ -359,7 +359,7 @@ func (m *ListClustersResponse) GetNextPageToken() string {
 // Request message for BigtableInstanceAdmin.DeleteCluster.
 type DeleteClusterRequest struct {
 	// The unique name of the cluster to be deleted. Values are of the form
-	// projects/<project>/instances/<instance>/clusters/<cluster>
+	// `projects/<project>/instances/<instance>/clusters/<cluster>`.
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 }
 
diff --git a/googleapis/bigtable/admin/v2/bigtable_table_admin.pb.go b/googleapis/bigtable/admin/v2/bigtable_table_admin.pb.go
index 7896af3f..36146a69 100644
--- a/googleapis/bigtable/admin/v2/bigtable_table_admin.pb.go
+++ b/googleapis/bigtable/admin/v2/bigtable_table_admin.pb.go
@@ -8,7 +8,11 @@ import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
 import _ "google.golang.org/genproto/googleapis/api/annotations"
+import _ "google.golang.org/genproto/googleapis/api/serviceconfig"
+import _ "google.golang.org/genproto/googleapis/longrunning"
+import _ "github.com/golang/protobuf/ptypes/duration"
 import google_protobuf3 "github.com/golang/protobuf/ptypes/empty"
+import _ "github.com/golang/protobuf/ptypes/timestamp"
 
 import (
 	context "golang.org/x/net/context"
@@ -20,31 +24,33 @@ var _ = proto.Marshal
 var _ = fmt.Errorf
 var _ = math.Inf
 
-// Request message for [google.bigtable.admin.v2.BigtableTableAdmin.CreateTable][google.bigtable.admin.v2.BigtableTableAdmin.CreateTable]
+// Request message for
+// [google.bigtable.admin.v2.BigtableTableAdmin.CreateTable][google.bigtable.admin.v2.BigtableTableAdmin.CreateTable]
 type CreateTableRequest struct {
 	// The unique name of the instance in which to create the table.
-	// Values are of the form projects/<project>/instances/<instance>
+	// Values are of the form `projects/<project>/instances/<instance>`.
 	Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
 	// The name by which the new table should be referred to within the parent
-	// instance, e.g. "foobar" rather than "<parent>/tables/foobar".
+	// instance, e.g., `foobar` rather than `<parent>/tables/foobar`.
 	TableId string `protobuf:"bytes,2,opt,name=table_id,json=tableId" json:"table_id,omitempty"`
 	// The Table to create.
 	Table *Table `protobuf:"bytes,3,opt,name=table" json:"table,omitempty"`
 	// The optional list of row keys that will be used to initially split the
-	// table into several tablets (Tablets are similar to HBase regions).
-	// Given two split keys, "s1" and "s2", three tablets will be created,
-	// spanning the key ranges: [, s1), [s1, s2), [s2, ).
+	// table into several tablets (tablets are similar to HBase regions).
+	// Given two split keys, `s1` and `s2`, three tablets will be created,
+	// spanning the key ranges: `[, s1), [s1, s2), [s2, )`.
 	//
 	// Example:
-	//  * Row keys := ["a", "apple", "custom", "customer_1", "customer_2",
-	//                 "other", "zz"]
-	//  * initial_split_keys := ["apple", "customer_1", "customer_2", "other"]
-	//  * Key assignment:
-	//    - Tablet 1 [, apple)                => {"a"}.
-	//    - Tablet 2 [apple, customer_1)      => {"apple", "custom"}.
-	//    - Tablet 3 [customer_1, customer_2) => {"customer_1"}.
-	//    - Tablet 4 [customer_2, other)      => {"customer_2"}.
-	//    - Tablet 5 [other, )                => {"other", "zz"}.
+	//
+	// * Row keys := `["a", "apple", "custom", "customer_1", "customer_2",`
+	//                `"other", "zz"]`
+	// * initial_split_keys := `["apple", "customer_1", "customer_2", "other"]`
+	// * Key assignment:
+	//     - Tablet 1 `[, apple)                => {"a"}.`
+	//     - Tablet 2 `[apple, customer_1)      => {"apple", "custom"}.`
+	//     - Tablet 3 `[customer_1, customer_2) => {"customer_1"}.`
+	//     - Tablet 4 `[customer_2, other)      => {"customer_2"}.`
+	//     - Tablet 5 `[other, )                => {"other", "zz"}.`
 	InitialSplits []*CreateTableRequest_Split `protobuf:"bytes,4,rep,name=initial_splits,json=initialSplits" json:"initial_splits,omitempty"`
 }
 
@@ -99,11 +105,15 @@ func (m *CreateTableRequest_Split) GetKey() []byte {
 	return nil
 }
 
-// Request message for [google.bigtable.admin.v2.BigtableTableAdmin.DropRowRange][google.bigtable.admin.v2.BigtableTableAdmin.DropRowRange]
+// Request message for
+// [google.bigtable.admin.v2.BigtableTableAdmin.DropRowRange][google.bigtable.admin.v2.BigtableTableAdmin.DropRowRange]
 type DropRowRangeRequest struct {
 	// The unique name of the table on which to drop a range of rows.
-	// Values are of the form projects/<project>/instances/<instance>/tables/<table>
+	// Values are of the form
+	// `projects/<project>/instances/<instance>/tables/<table>`.
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// Delete all rows or by prefix.
+	//
 	// Types that are valid to be assigned to Target:
 	//	*DropRowRangeRequest_RowKeyPrefix
 	//	*DropRowRangeRequest_DeleteAllDataFromTable
@@ -226,13 +236,14 @@ func _DropRowRangeRequest_OneofSizer(msg proto.Message) (n int) {
 	return n
 }
 
-// Request message for [google.bigtable.admin.v2.BigtableTableAdmin.ListTables][google.bigtable.admin.v2.BigtableTableAdmin.ListTables]
+// Request message for
+// [google.bigtable.admin.v2.BigtableTableAdmin.ListTables][google.bigtable.admin.v2.BigtableTableAdmin.ListTables]
 type ListTablesRequest struct {
 	// The unique name of the instance for which tables should be listed.
-	// Values are of the form projects/<project>/instances/<instance>
+	// Values are of the form `projects/<project>/instances/<instance>`.
 	Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
 	// The view to be applied to the returned tables' fields.
-	// Defaults to NAME_ONLY if unspecified (no others are currently supported).
+	// Defaults to `NAME_ONLY` if unspecified; no others are currently supported.
 	View Table_View `protobuf:"varint,2,opt,name=view,enum=google.bigtable.admin.v2.Table_View" json:"view,omitempty"`
 	// The value of `next_page_token` returned by a previous call.
 	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
@@ -264,9 +275,10 @@ func (m *ListTablesRequest) GetPageToken() string {
 	return ""
 }
 
-// Response message for [google.bigtable.admin.v2.BigtableTableAdmin.ListTables][google.bigtable.admin.v2.BigtableTableAdmin.ListTables]
+// Response message for
+// [google.bigtable.admin.v2.BigtableTableAdmin.ListTables][google.bigtable.admin.v2.BigtableTableAdmin.ListTables]
 type ListTablesResponse struct {
-	// The tables present in the requested cluster.
+	// The tables present in the requested instance.
 	Tables []*Table `protobuf:"bytes,1,rep,name=tables" json:"tables,omitempty"`
 	// Set if not all tables could be returned in a single response.
 	// Pass this value to `page_token` in another request to get the next
@@ -293,13 +305,15 @@ func (m *ListTablesResponse) GetNextPageToken() string {
 	return ""
 }
 
-// Request message for [google.bigtable.admin.v2.BigtableTableAdmin.GetTable][google.bigtable.admin.v2.BigtableTableAdmin.GetTable]
+// Request message for
+// [google.bigtable.admin.v2.BigtableTableAdmin.GetTable][google.bigtable.admin.v2.BigtableTableAdmin.GetTable]
 type GetTableRequest struct {
 	// The unique name of the requested table.
-	// Values are of the form projects/<project>/instances/<instance>/tables/<table>
+	// Values are of the form
+	// `projects/<project>/instances/<instance>/tables/<table>`.
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 	// The view to be applied to the returned table's fields.
-	// Defaults to SCHEMA_ONLY if unspecified.
+	// Defaults to `SCHEMA_ONLY` if unspecified.
 	View Table_View `protobuf:"varint,2,opt,name=view,enum=google.bigtable.admin.v2.Table_View" json:"view,omitempty"`
 }
 
@@ -322,10 +336,12 @@ func (m *GetTableRequest) GetView() Table_View {
 	return Table_VIEW_UNSPECIFIED
 }
 
-// Request message for [google.bigtable.admin.v2.BigtableTableAdmin.DeleteTable][google.bigtable.admin.v2.BigtableTableAdmin.DeleteTable]
+// Request message for
+// [google.bigtable.admin.v2.BigtableTableAdmin.DeleteTable][google.bigtable.admin.v2.BigtableTableAdmin.DeleteTable]
 type DeleteTableRequest struct {
 	// The unique name of the table to be deleted.
-	// Values are of the form projects/<project>/instances/<instance>/tables/<table>
+	// Values are of the form
+	// `projects/<project>/instances/<instance>/tables/<table>`.
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 }
 
@@ -341,10 +357,12 @@ func (m *DeleteTableRequest) GetName() string {
 	return ""
 }
 
-// Request message for [google.bigtable.admin.v2.BigtableTableAdmin.ModifyColumnFamilies][google.bigtable.admin.v2.BigtableTableAdmin.ModifyColumnFamilies]
+// Request message for
+// [google.bigtable.admin.v2.BigtableTableAdmin.ModifyColumnFamilies][google.bigtable.admin.v2.BigtableTableAdmin.ModifyColumnFamilies]
 type ModifyColumnFamiliesRequest struct {
 	// The unique name of the table whose families should be modified.
-	// Values are of the form projects/<project>/instances/<instance>/tables/<table>
+	// Values are of the form
+	// `projects/<project>/instances/<instance>/tables/<table>`.
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 	// Modifications to be atomically applied to the specified table's families.
 	// Entries are applied in order, meaning that earlier modifications can be
@@ -376,6 +394,8 @@ func (m *ModifyColumnFamiliesRequest) GetModifications() []*ModifyColumnFamilies
 type ModifyColumnFamiliesRequest_Modification struct {
 	// The ID of the column family to be modified.
 	Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
+	// Column familiy modifications.
+	//
 	// Types that are valid to be assigned to Mod:
 	//	*ModifyColumnFamiliesRequest_Modification_Create
 	//	*ModifyColumnFamiliesRequest_Modification_Update
@@ -816,59 +836,62 @@ func init() {
 }
 
 var fileDescriptor1 = []byte{
-	// 864 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x4d, 0x6f, 0x1b, 0x45,
-	0x18, 0xce, 0xd8, 0x4e, 0x9a, 0xbc, 0x76, 0x52, 0x18, 0xaa, 0xb0, 0xdd, 0x16, 0x11, 0xad, 0xaa,
-	0x28, 0x98, 0xb0, 0x2b, 0x6d, 0x15, 0x15, 0x85, 0x56, 0x50, 0x37, 0x94, 0xf0, 0x25, 0x45, 0x4b,
-	0x85, 0x04, 0x97, 0xd5, 0xc4, 0x3b, 0x5e, 0x86, 0xec, 0xce, 0x2c, 0xbb, 0xe3, 0x38, 0x16, 0xea,
-	0x05, 0x21, 0x21, 0x71, 0xed, 0xa9, 0xe2, 0x8f, 0x20, 0x2e, 0xfc, 0x08, 0xce, 0xdc, 0xf8, 0x09,
-	0xfc, 0x00, 0x34, 0x33, 0xeb, 0xd8, 0xc1, 0x5e, 0xbb, 0xce, 0xc5, 0x9a, 0x79, 0x3f, 0x9f, 0xf7,
-	0xe3, 0xd9, 0x31, 0xdc, 0x8f, 0x85, 0x88, 0x13, 0xea, 0x9d, 0xb2, 0x58, 0x92, 0xd3, 0x84, 0x7a,
-	0x24, 0x4a, 0x19, 0xf7, 0xce, 0xfd, 0x4b, 0x49, 0x68, 0x7e, 0xb5, 0xdc, 0xcd, 0x72, 0x21, 0x05,
-	0xb6, 0x8c, 0x93, 0x3b, 0x32, 0x71, 0x8d, 0xf2, 0xdc, 0xb7, 0xef, 0x96, 0xe1, 0x48, 0xc6, 0x3c,
-	0xc2, 0xb9, 0x90, 0x44, 0x32, 0xc1, 0x0b, 0xe3, 0x67, 0xdf, 0xab, 0x4c, 0x66, 0xc2, 0x18, 0xab,
-	0x3b, 0xa5, 0x95, 0xbe, 0x9d, 0xf6, 0x7b, 0x1e, 0x4d, 0x33, 0x39, 0x34, 0x4a, 0xe7, 0x5f, 0x04,
-	0xf8, 0x49, 0x4e, 0x89, 0xa4, 0xcf, 0x94, 0x4b, 0x40, 0x7f, 0xe8, 0xd3, 0x42, 0xe2, 0x6d, 0x58,
-	0xcb, 0x48, 0x4e, 0xb9, 0xb4, 0xd0, 0x0e, 0xda, 0xdb, 0x08, 0xca, 0x1b, 0xbe, 0x0d, 0xeb, 0x06,
-	0x3e, 0x8b, 0xac, 0x9a, 0xd6, 0xdc, 0xd0, 0xf7, 0x4f, 0x23, 0x7c, 0x00, 0xab, 0xfa, 0x68, 0xd5,
-	0x77, 0xd0, 0x5e, 0xd3, 0x7f, 0xdb, 0xad, 0x2a, 0xca, 0x35, 0x99, 0x8c, 0x35, 0xfe, 0x06, 0xb6,
-	0x18, 0x67, 0x92, 0x91, 0x24, 0x2c, 0xb2, 0x84, 0xc9, 0xc2, 0x6a, 0xec, 0xd4, 0xf7, 0x9a, 0xbe,
-	0x5f, 0xed, 0x3f, 0x8d, 0xd7, 0xfd, 0x4a, 0xb9, 0x06, 0x9b, 0x65, 0x24, 0x7d, 0x2b, 0xec, 0xdb,
-	0xb0, 0xaa, 0x4f, 0xf8, 0x35, 0xa8, 0x9f, 0xd1, 0xa1, 0x2e, 0xa5, 0x15, 0xa8, 0xa3, 0xf3, 0x12,
-	0xc1, 0x1b, 0x47, 0xb9, 0xc8, 0x02, 0x31, 0x08, 0x08, 0x8f, 0x2f, 0xeb, 0xc6, 0xd0, 0xe0, 0x24,
-	0xa5, 0x65, 0xd5, 0xfa, 0x8c, 0x77, 0x61, 0x2b, 0x17, 0x83, 0xf0, 0x8c, 0x0e, 0xc3, 0x2c, 0xa7,
-	0x3d, 0x76, 0xa1, 0x2b, 0x6f, 0x1d, 0xaf, 0x04, 0xad, 0x5c, 0x0c, 0x3e, 0xa7, 0xc3, 0x13, 0x2d,
-	0xc5, 0x0f, 0xc1, 0x8e, 0x68, 0x42, 0x25, 0x0d, 0x49, 0x92, 0x84, 0x11, 0x91, 0x24, 0xec, 0xe5,
-	0x22, 0x0d, 0xc7, 0x5d, 0x59, 0x3f, 0x5e, 0x09, 0xb6, 0x8d, 0xcd, 0xe3, 0x24, 0x39, 0x22, 0x92,
-	0x3c, 0xcd, 0x45, 0xaa, 0x0b, 0xe9, 0xac, 0xc3, 0x9a, 0x24, 0x79, 0x4c, 0xa5, 0xf3, 0x33, 0x82,
-	0xd7, 0xbf, 0x60, 0x85, 0xd4, 0xf2, 0x62, 0xd1, 0x44, 0xde, 0x87, 0xc6, 0x39, 0xa3, 0x03, 0x8d,
-	0x69, 0xcb, 0xbf, 0xb7, 0xa0, 0xeb, 0xee, 0xd7, 0x8c, 0x0e, 0x02, 0xed, 0x81, 0xdf, 0x02, 0xc8,
-	0x48, 0x4c, 0x43, 0x29, 0xce, 0x28, 0xd7, 0xf8, 0x36, 0x82, 0x0d, 0x25, 0x79, 0xa6, 0x04, 0x4e,
-	0x1f, 0xf0, 0x24, 0x8a, 0x22, 0x13, 0xbc, 0xa0, 0xf8, 0x81, 0x82, 0xa9, 0x24, 0x16, 0xd2, 0x63,
-	0x5a, 0x38, 0xe6, 0xd2, 0x1c, 0xef, 0xc2, 0x4d, 0x4e, 0x2f, 0x64, 0x38, 0x91, 0xd2, 0x2c, 0xd0,
-	0xa6, 0x12, 0x9f, 0x5c, 0xa6, 0x0d, 0xe1, 0xe6, 0x27, 0x54, 0x5e, 0x59, 0xc6, 0x59, 0x43, 0xb9,
-	0x76, 0xd9, 0xce, 0x1e, 0xe0, 0x23, 0x3d, 0x82, 0x45, 0x39, 0x9c, 0xbf, 0x6b, 0x70, 0xe7, 0x4b,
-	0x11, 0xb1, 0xde, 0xf0, 0x89, 0x48, 0xfa, 0x29, 0x7f, 0x4a, 0x52, 0x96, 0xb0, 0xf1, 0x48, 0x66,
-	0xe1, 0xfa, 0x0e, 0x36, 0x53, 0xe5, 0xc2, 0xba, 0x86, 0xa9, 0x56, 0x4d, 0xb7, 0xa9, 0x53, 0x0d,
-	0x70, 0x4e, 0x06, 0xa3, 0x2b, 0x43, 0x05, 0x57, 0x03, 0xdb, 0x7f, 0x22, 0x68, 0x4d, 0xea, 0xf1,
-	0x16, 0xd4, 0x58, 0x54, 0x82, 0xa9, 0xb1, 0x08, 0x7f, 0x04, 0x6b, 0x5d, 0xcd, 0x14, 0xdd, 0xa4,
-	0xa6, 0xbf, 0x3b, 0x87, 0x51, 0xe3, 0xec, 0xc3, 0xe3, 0x95, 0xa0, 0xf4, 0x53, 0x11, 0xfa, 0x59,
-	0xa4, 0x22, 0xd4, 0x97, 0x8d, 0x60, 0xfc, 0xf0, 0x2d, 0x68, 0x44, 0xb9, 0xc8, 0xac, 0x46, 0xb9,
-	0xfd, 0xfa, 0xd6, 0x59, 0x85, 0x7a, 0x2a, 0x22, 0xff, 0xf7, 0x1b, 0x80, 0x3b, 0x65, 0x24, 0x3d,
-	0x8c, 0xc7, 0x2a, 0x1a, 0x7e, 0x81, 0xa0, 0x39, 0x41, 0x71, 0xbc, 0xbf, 0xcc, 0x97, 0xc0, 0x5e,
-	0xb4, 0x90, 0xce, 0xc1, 0x4f, 0x7f, 0xfd, 0xf3, 0xa2, 0xe6, 0x39, 0x6d, 0xf5, 0x9d, 0xfc, 0xd1,
-	0xb0, 0xe8, 0x51, 0x96, 0x8b, 0xef, 0x69, 0x57, 0x16, 0x5e, 0xdb, 0x63, 0xbc, 0x90, 0x84, 0x77,
-	0x69, 0xe1, 0xb5, 0x9f, 0x9b, 0xef, 0x68, 0x71, 0x88, 0xda, 0xf8, 0x37, 0x04, 0x30, 0xe6, 0x03,
-	0x7e, 0xb7, 0x3a, 0xcd, 0x14, 0x77, 0xed, 0xfd, 0x57, 0x33, 0x36, 0x14, 0x73, 0x7c, 0x0d, 0x70,
-	0x1f, 0x2f, 0x01, 0x10, 0xff, 0x8a, 0x60, 0x7d, 0x44, 0x1b, 0xfc, 0x4e, 0x75, 0xba, 0xff, 0x51,
-	0x6b, 0x71, 0xb7, 0xae, 0x82, 0x51, 0x2b, 0x5e, 0x01, 0xa5, 0x44, 0xe2, 0xb5, 0x9f, 0xe3, 0x5f,
-	0x10, 0x34, 0x27, 0x28, 0x36, 0x6f, 0x80, 0xd3, 0x4c, 0xb4, 0xb7, 0x47, 0xd6, 0xa3, 0xf7, 0xca,
-	0xfd, 0x58, 0xbd, 0x57, 0x23, 0x24, 0xed, 0x65, 0x90, 0xfc, 0x81, 0xe0, 0xd6, 0x2c, 0x7e, 0xe1,
-	0x83, 0x6b, 0xf1, 0x71, 0x71, 0xbb, 0x3e, 0xd3, 0x20, 0x8f, 0x9c, 0x0f, 0x5f, 0x1d, 0xe4, 0x61,
-	0x3a, 0x23, 0xa1, 0xda, 0xb8, 0x97, 0x08, 0x5a, 0x93, 0x6f, 0x14, 0x7e, 0x6f, 0x4e, 0x1f, 0xa7,
-	0xdf, 0xb2, 0xca, 0x46, 0x76, 0x34, 0xc6, 0x87, 0xce, 0x83, 0x25, 0x30, 0x46, 0x13, 0xf1, 0x0f,
-	0x51, 0xbb, 0x73, 0x01, 0x77, 0xbb, 0x22, 0xad, 0xc4, 0xd3, 0x79, 0x73, 0x9a, 0xd7, 0x27, 0x0a,
-	0xc5, 0x09, 0xfa, 0xf6, 0x51, 0xe9, 0x14, 0x8b, 0x84, 0xf0, 0xd8, 0x15, 0x79, 0xec, 0xc5, 0x94,
-	0x6b, 0x8c, 0x9e, 0x51, 0x91, 0x8c, 0x15, 0xd3, 0xff, 0x69, 0x3e, 0xd0, 0x87, 0xd3, 0x35, 0x6d,
-	0x79, 0xff, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb9, 0xba, 0x3b, 0xe9, 0x69, 0x09, 0x00, 0x00,
+	// 910 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xdd, 0x6e, 0x1b, 0x45,
+	0x14, 0xce, 0xd8, 0x4e, 0x9a, 0x1c, 0x3b, 0x29, 0x0c, 0x25, 0xb8, 0x6e, 0xa1, 0xd1, 0x52, 0x45,
+	0xc1, 0x84, 0x5d, 0x69, 0xab, 0xa8, 0x28, 0xb4, 0x82, 0xba, 0xa1, 0x84, 0x3f, 0x29, 0x5a, 0x2a,
+	0x24, 0xb8, 0x59, 0x4d, 0xbc, 0x93, 0xed, 0x90, 0xdd, 0x99, 0x65, 0x77, 0x1c, 0xc7, 0x42, 0xbd,
+	0x41, 0x48, 0x48, 0xdc, 0xf6, 0xaa, 0xe2, 0x45, 0x10, 0x37, 0x3c, 0x04, 0xd7, 0xdc, 0xf1, 0x08,
+	0x3c, 0x00, 0x9a, 0x1f, 0x27, 0x9b, 0x38, 0x1b, 0xd7, 0xb9, 0xb1, 0x66, 0xce, 0xf9, 0xce, 0x39,
+	0xdf, 0x9c, 0x33, 0xdf, 0x8e, 0xe1, 0x5e, 0x2c, 0x44, 0x9c, 0x50, 0x6f, 0x9f, 0xc5, 0x92, 0xec,
+	0x27, 0xd4, 0x23, 0x51, 0xca, 0xb8, 0x77, 0xe4, 0x9f, 0x58, 0x42, 0xf3, 0xab, 0xed, 0x6e, 0x96,
+	0x0b, 0x29, 0x70, 0xdb, 0x04, 0xb9, 0x63, 0x88, 0x6b, 0x9c, 0x47, 0x7e, 0xe7, 0xb6, 0x4d, 0x47,
+	0x32, 0xe6, 0x11, 0xce, 0x85, 0x24, 0x92, 0x09, 0x5e, 0x98, 0xb8, 0xce, 0x9b, 0x65, 0xef, 0x40,
+	0x3e, 0xb3, 0xe6, 0xbb, 0x95, 0x1c, 0x4c, 0x76, 0x83, 0x7a, 0xd7, 0xa2, 0x12, 0xc1, 0xe3, 0x7c,
+	0xc0, 0x39, 0xe3, 0xb1, 0x27, 0x32, 0x9a, 0x9f, 0xa9, 0xf0, 0x8e, 0x05, 0xe9, 0xdd, 0xfe, 0xe0,
+	0xc0, 0x8b, 0x06, 0x06, 0x60, 0xfd, 0xb7, 0xce, 0xfb, 0x69, 0x9a, 0xc9, 0x91, 0x75, 0xde, 0x39,
+	0xef, 0x94, 0x2c, 0xa5, 0x85, 0x24, 0x69, 0x66, 0x00, 0xce, 0x7f, 0x08, 0xf0, 0xe3, 0x9c, 0x12,
+	0x49, 0x9f, 0x2a, 0x62, 0x01, 0xfd, 0x71, 0x40, 0x0b, 0x89, 0x57, 0x61, 0x21, 0x23, 0x39, 0xe5,
+	0xb2, 0x8d, 0xd6, 0xd0, 0xc6, 0x52, 0x60, 0x77, 0xf8, 0x26, 0x2c, 0x9a, 0xde, 0xb1, 0xa8, 0x5d,
+	0xd3, 0x9e, 0x6b, 0x7a, 0xff, 0x79, 0x84, 0xb7, 0x60, 0x5e, 0x2f, 0xdb, 0xf5, 0x35, 0xb4, 0xd1,
+	0xf4, 0xef, 0xb8, 0x55, 0x1d, 0x75, 0x4d, 0x25, 0x83, 0xc6, 0xdf, 0xc1, 0x0a, 0xe3, 0x4c, 0x32,
+	0x92, 0x84, 0x45, 0x96, 0x30, 0x59, 0xb4, 0x1b, 0x6b, 0xf5, 0x8d, 0xa6, 0xef, 0x57, 0xc7, 0x4f,
+	0xf2, 0x75, 0xbf, 0x51, 0xa1, 0xc1, 0xb2, 0xcd, 0xa4, 0x77, 0x45, 0xe7, 0x26, 0xcc, 0xeb, 0x15,
+	0x7e, 0x0d, 0xea, 0x87, 0x74, 0xa4, 0x8f, 0xd2, 0x0a, 0xd4, 0xd2, 0x79, 0x89, 0xe0, 0x8d, 0x9d,
+	0x5c, 0x64, 0x81, 0x18, 0x06, 0x84, 0xc7, 0x27, 0xe7, 0xc6, 0xd0, 0xe0, 0x24, 0xa5, 0xf6, 0xd4,
+	0x7a, 0x8d, 0xd7, 0x61, 0x25, 0x17, 0xc3, 0xf0, 0x90, 0x8e, 0xc2, 0x2c, 0xa7, 0x07, 0xec, 0x58,
+	0x9f, 0xbc, 0xb5, 0x3b, 0x17, 0xb4, 0x72, 0x31, 0xfc, 0x92, 0x8e, 0xf6, 0xb4, 0x15, 0x3f, 0x80,
+	0x4e, 0x44, 0x13, 0x2a, 0x69, 0x48, 0x92, 0x24, 0x8c, 0x88, 0x24, 0xe1, 0x41, 0x2e, 0xd2, 0xf0,
+	0xb4, 0x2b, 0x8b, 0xbb, 0x73, 0xc1, 0xaa, 0xc1, 0x3c, 0x4a, 0x92, 0x1d, 0x22, 0xc9, 0x93, 0x5c,
+	0xa4, 0xfa, 0x20, 0xbd, 0x45, 0x58, 0x90, 0x24, 0x8f, 0xa9, 0x74, 0x7e, 0x41, 0xf0, 0xfa, 0x57,
+	0xac, 0x90, 0xda, 0x5e, 0x4c, 0x9b, 0xc8, 0x87, 0xd0, 0x38, 0x62, 0x74, 0xa8, 0x39, 0xad, 0xf8,
+	0x77, 0xa7, 0x74, 0xdd, 0xfd, 0x96, 0xd1, 0x61, 0xa0, 0x23, 0xf0, 0xdb, 0x00, 0x19, 0x89, 0x69,
+	0x28, 0xc5, 0x21, 0xe5, 0x9a, 0xdf, 0x52, 0xb0, 0xa4, 0x2c, 0x4f, 0x95, 0xc1, 0x19, 0x00, 0x2e,
+	0xb3, 0x28, 0x32, 0xc1, 0x0b, 0x8a, 0xef, 0x2b, 0x9a, 0xca, 0xd2, 0x46, 0x7a, 0x4c, 0x53, 0xc7,
+	0x6c, 0xe1, 0x78, 0x1d, 0xae, 0x73, 0x7a, 0x2c, 0xc3, 0x52, 0x49, 0x73, 0x81, 0x96, 0x95, 0x79,
+	0xef, 0xa4, 0x6c, 0x08, 0xd7, 0x3f, 0xa3, 0xf2, 0xcc, 0x65, 0xbc, 0x68, 0x28, 0x57, 0x3e, 0xb6,
+	0xb3, 0x01, 0x78, 0x47, 0x8f, 0x60, 0x5a, 0x0d, 0xe7, 0x9f, 0x1a, 0xdc, 0xfa, 0x5a, 0x44, 0xec,
+	0x60, 0xf4, 0x58, 0x24, 0x83, 0x94, 0x3f, 0x21, 0x29, 0x4b, 0xd8, 0xe9, 0x48, 0x2e, 0xe2, 0xf5,
+	0x0c, 0x96, 0x53, 0x15, 0xc2, 0xfa, 0x46, 0xc4, 0xed, 0x9a, 0x6e, 0x53, 0xaf, 0x9a, 0xe0, 0x25,
+	0x15, 0x8c, 0xcf, 0xa6, 0x0a, 0xce, 0x26, 0xee, 0xfc, 0x85, 0xa0, 0x55, 0xf6, 0xe3, 0x15, 0xa8,
+	0xb1, 0xc8, 0x92, 0xa9, 0xb1, 0x08, 0x7f, 0x02, 0x0b, 0x7d, 0xad, 0x14, 0xdd, 0xa4, 0xa6, 0xbf,
+	0x7e, 0x89, 0xa2, 0x4e, 0xab, 0x8f, 0x76, 0xe7, 0x02, 0x1b, 0xa7, 0x32, 0x0c, 0xb2, 0x48, 0x65,
+	0xa8, 0xcf, 0x9a, 0xc1, 0xc4, 0xe1, 0x1b, 0xd0, 0x88, 0x72, 0x91, 0xb5, 0x1b, 0xf6, 0xf6, 0xeb,
+	0x5d, 0x6f, 0x1e, 0xea, 0xa9, 0x88, 0xfc, 0x3f, 0xae, 0x01, 0xee, 0xd9, 0x4c, 0x7a, 0x18, 0x8f,
+	0x54, 0x36, 0xfc, 0x02, 0x41, 0xb3, 0x24, 0x71, 0xbc, 0x39, 0xcb, 0x97, 0xa0, 0x33, 0xed, 0x42,
+	0x3a, 0x5b, 0x3f, 0xff, 0xfd, 0xef, 0x8b, 0x9a, 0xe7, 0x74, 0xd5, 0xd7, 0xf8, 0x27, 0xa3, 0xa2,
+	0x87, 0x59, 0x2e, 0x7e, 0xa0, 0x7d, 0x59, 0x78, 0x5d, 0x8f, 0xf1, 0x42, 0x12, 0xde, 0xa7, 0x85,
+	0xd7, 0x7d, 0x6e, 0xbe, 0xd6, 0xc5, 0x36, 0xea, 0xe2, 0xdf, 0x11, 0xc0, 0xa9, 0x1e, 0xf0, 0xfb,
+	0xd5, 0x65, 0x26, 0xb4, 0xdb, 0xd9, 0x7c, 0x35, 0xb0, 0x91, 0x98, 0xe3, 0x6b, 0x82, 0x9b, 0x78,
+	0x06, 0x82, 0xf8, 0x37, 0x04, 0x8b, 0x63, 0xd9, 0xe0, 0xf7, 0xaa, 0xcb, 0x9d, 0x93, 0xd6, 0xf4,
+	0x6e, 0x9d, 0x25, 0xa3, 0xae, 0x78, 0x05, 0x15, 0xcb, 0xc4, 0xeb, 0x3e, 0xc7, 0xbf, 0x22, 0x68,
+	0x96, 0x24, 0x76, 0xd9, 0x00, 0x27, 0x95, 0xd8, 0x59, 0x1d, 0xa3, 0xc7, 0x6f, 0x96, 0xfb, 0xa9,
+	0x7a, 0xd0, 0xc6, 0x4c, 0xba, 0xb3, 0x30, 0xf9, 0x13, 0xc1, 0x8d, 0x8b, 0xf4, 0x85, 0xb7, 0xae,
+	0xa4, 0xc7, 0xe9, 0xed, 0xfa, 0x42, 0x93, 0xdc, 0x71, 0x3e, 0x7e, 0x75, 0x92, 0xdb, 0xe9, 0x05,
+	0x05, 0xd5, 0x8d, 0x7b, 0x89, 0xa0, 0x55, 0x7e, 0xa3, 0xf0, 0x07, 0x97, 0xf4, 0x71, 0xf2, 0x2d,
+	0xab, 0x6c, 0x64, 0x4f, 0x73, 0x7c, 0xe0, 0xdc, 0x9f, 0x81, 0x63, 0x54, 0xca, 0xbf, 0x8d, 0xba,
+	0xbd, 0x63, 0xb8, 0xdd, 0x17, 0x69, 0x25, 0x9f, 0xde, 0x5b, 0x93, 0xba, 0xde, 0x53, 0x2c, 0xf6,
+	0xd0, 0xf7, 0x0f, 0x6d, 0x50, 0x2c, 0x12, 0xc2, 0x63, 0x57, 0xe4, 0xb1, 0x17, 0x53, 0xae, 0x39,
+	0x7a, 0xc6, 0x45, 0x32, 0x56, 0x4c, 0xfe, 0x73, 0xfa, 0x48, 0x2f, 0xf6, 0x17, 0x34, 0xf2, 0xde,
+	0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x2b, 0x5d, 0x18, 0x44, 0xe6, 0x09, 0x00, 0x00,
 }
diff --git a/googleapis/bigtable/admin/v2/instance.pb.go b/googleapis/bigtable/admin/v2/instance.pb.go
index ffa834b2..01b61e46 100644
--- a/googleapis/bigtable/admin/v2/instance.pb.go
+++ b/googleapis/bigtable/admin/v2/instance.pb.go
@@ -44,6 +44,33 @@ func (x Instance_State) String() string {
 }
 func (Instance_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 0} }
 
+// The type of the instance.
+type Instance_Type int32
+
+const (
+	// The type of the instance is unspecified. If set when creating an
+	// instance, a `PRODUCTION` instance will be created. If set when updating
+	// an instance, the type will be left unchanged.
+	Instance_TYPE_UNSPECIFIED Instance_Type = 0
+	// An instance meant for production use. `serve_nodes` must be set
+	// on the cluster.
+	Instance_PRODUCTION Instance_Type = 1
+)
+
+var Instance_Type_name = map[int32]string{
+	0: "TYPE_UNSPECIFIED",
+	1: "PRODUCTION",
+}
+var Instance_Type_value = map[string]int32{
+	"TYPE_UNSPECIFIED": 0,
+	"PRODUCTION":       1,
+}
+
+func (x Instance_Type) String() string {
+	return proto.EnumName(Instance_Type_name, int32(x))
+}
+func (Instance_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 1} }
+
 // Possible states of a cluster.
 type Cluster_State int32
 
@@ -92,17 +119,19 @@ func (Cluster_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor3,
 // All tables in an instance are served from a single
 // [Cluster][google.bigtable.admin.v2.Cluster].
 type Instance struct {
-	// @OutputOnly
+	// (`OutputOnly`)
 	// The unique name of the instance. Values are of the form
-	// projects/<project>/instances/[a-z][a-z0-9\\-]+[a-z0-9]
+	// `projects/<project>/instances/[a-z][a-z0-9\\-]+[a-z0-9]`.
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 	// The descriptive name for this instance as it appears in UIs.
 	// Can be changed at any time, but should be kept globally unique
 	// to avoid confusion.
 	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"`
-	//
+	// (`OutputOnly`)
 	// The current state of the instance.
 	State Instance_State `protobuf:"varint,3,opt,name=state,enum=google.bigtable.admin.v2.Instance_State" json:"state,omitempty"`
+	// The type of the instance. Defaults to `PRODUCTION`.
+	Type Instance_Type `protobuf:"varint,4,opt,name=type,enum=google.bigtable.admin.v2.Instance_Type" json:"type,omitempty"`
 }
 
 func (m *Instance) Reset()                    { *m = Instance{} }
@@ -131,26 +160,34 @@ func (m *Instance) GetState() Instance_State {
 	return Instance_STATE_NOT_KNOWN
 }
 
+func (m *Instance) GetType() Instance_Type {
+	if m != nil {
+		return m.Type
+	}
+	return Instance_TYPE_UNSPECIFIED
+}
+
 // A resizable group of nodes in a particular cloud location, capable
 // of serving all [Tables][google.bigtable.admin.v2.Table] in the parent
 // [Instance][google.bigtable.admin.v2.Instance].
 type Cluster struct {
-	// @OutputOnly
+	// (`OutputOnly`)
 	// The unique name of the cluster. Values are of the form
-	// projects/<project>/instances/<instance>/clusters/[a-z][-a-z0-9]*
+	// `projects/<project>/instances/<instance>/clusters/[a-z][-a-z0-9]*`.
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	// @CreationOnly
+	// (`CreationOnly`)
 	// The location where this cluster's nodes and storage reside. For best
 	// performance, clients should be located as close as possible to this cluster.
-	// Currently only zones are supported, e.g. projects/*/locations/us-central1-b
+	// Currently only zones are supported, so values should be of the form
+	// `projects/<project>/locations/<zone>`.
 	Location string `protobuf:"bytes,2,opt,name=location" json:"location,omitempty"`
-	// @OutputOnly
+	// (`OutputOnly`)
 	// The current state of the cluster.
 	State Cluster_State `protobuf:"varint,3,opt,name=state,enum=google.bigtable.admin.v2.Cluster_State" json:"state,omitempty"`
 	// The number of nodes allocated to this cluster. More nodes enable higher
 	// throughput and more consistent performance.
 	ServeNodes int32 `protobuf:"varint,4,opt,name=serve_nodes,json=serveNodes" json:"serve_nodes,omitempty"`
-	// @CreationOnly
+	// (`CreationOnly`)
 	// The type of storage used by this cluster to serve its
 	// parent instance's tables, unless explicitly overridden.
 	DefaultStorageType StorageType `protobuf:"varint,5,opt,name=default_storage_type,json=defaultStorageType,enum=google.bigtable.admin.v2.StorageType" json:"default_storage_type,omitempty"`
@@ -200,37 +237,41 @@ func init() {
 	proto.RegisterType((*Instance)(nil), "google.bigtable.admin.v2.Instance")
 	proto.RegisterType((*Cluster)(nil), "google.bigtable.admin.v2.Cluster")
 	proto.RegisterEnum("google.bigtable.admin.v2.Instance_State", Instance_State_name, Instance_State_value)
+	proto.RegisterEnum("google.bigtable.admin.v2.Instance_Type", Instance_Type_name, Instance_Type_value)
 	proto.RegisterEnum("google.bigtable.admin.v2.Cluster_State", Cluster_State_name, Cluster_State_value)
 }
 
 func init() { proto.RegisterFile("google/bigtable/admin/v2/instance.proto", fileDescriptor3) }
 
 var fileDescriptor3 = []byte{
-	// 412 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x92, 0x51, 0xab, 0xd3, 0x30,
-	0x14, 0xc7, 0xed, 0xee, 0xaa, 0xbb, 0xb9, 0x57, 0x2d, 0xd1, 0x87, 0x32, 0x06, 0xce, 0xc2, 0x58,
-	0x9f, 0x52, 0x98, 0xf8, 0x24, 0x13, 0xba, 0xad, 0x48, 0x51, 0xba, 0xd9, 0x16, 0x86, 0x7b, 0x29,
-	0x59, 0x1b, 0x43, 0xa1, 0x4d, 0x4a, 0x93, 0x0d, 0xf6, 0xcd, 0xfc, 0x02, 0x7e, 0x2f, 0x69, 0xda,
-	0x89, 0x43, 0xfb, 0xe2, 0x5b, 0xfe, 0xe7, 0xfc, 0x92, 0xff, 0x9f, 0x93, 0x03, 0xe6, 0x94, 0x73,
-	0x5a, 0x10, 0xe7, 0x98, 0x53, 0x89, 0x8f, 0x05, 0x71, 0x70, 0x56, 0xe6, 0xcc, 0x39, 0x2f, 0x9c,
-	0x9c, 0x09, 0x89, 0x59, 0x4a, 0x50, 0x55, 0x73, 0xc9, 0xa1, 0xd9, 0x82, 0xe8, 0x0a, 0x22, 0x05,
-	0xa2, 0xf3, 0x62, 0x3c, 0xe9, 0x9e, 0xc0, 0x55, 0xee, 0x60, 0xc6, 0xb8, 0xc4, 0x32, 0xe7, 0x4c,
-	0xb4, 0xf7, 0xc6, 0xb3, 0x5e, 0x83, 0x94, 0x97, 0x25, 0x67, 0x2d, 0x66, 0xfd, 0xd0, 0xc0, 0xc8,
-	0xef, 0x1c, 0x21, 0x04, 0x43, 0x86, 0x4b, 0x62, 0x6a, 0x53, 0xcd, 0xbe, 0x0f, 0xd5, 0x19, 0xbe,
-	0x05, 0x8f, 0x59, 0x2e, 0xaa, 0x02, 0x5f, 0x12, 0xd5, 0x1b, 0xa8, 0xde, 0x43, 0x57, 0x0b, 0x1a,
-	0xe4, 0x23, 0xd0, 0x85, 0xc4, 0x92, 0x98, 0x77, 0x53, 0xcd, 0x7e, 0xb1, 0xb0, 0x51, 0x5f, 0x64,
-	0x74, 0x75, 0x42, 0x51, 0xc3, 0x87, 0xed, 0x35, 0xeb, 0x3d, 0xd0, 0x95, 0x86, 0xaf, 0xc0, 0xcb,
-	0x28, 0x76, 0x63, 0x2f, 0x09, 0xb6, 0x71, 0xf2, 0x39, 0xd8, 0xee, 0x03, 0xe3, 0x09, 0xbc, 0x07,
-	0x7a, 0xe8, 0xb9, 0x9b, 0x6f, 0x86, 0x06, 0x1f, 0xc1, 0x68, 0x1d, 0x7a, 0x6e, 0xec, 0x07, 0x9f,
-	0x8c, 0x81, 0xf5, 0x73, 0x00, 0x9e, 0xad, 0x8b, 0x93, 0x90, 0xa4, 0xfe, 0x67, 0xf2, 0x31, 0x18,
-	0x15, 0x3c, 0x55, 0x43, 0xe9, 0x52, 0xff, 0xd6, 0x70, 0x79, 0x1b, 0x79, 0xde, 0x1f, 0xb9, 0x73,
-	0xb8, 0x49, 0x0c, 0xdf, 0x80, 0x07, 0x41, 0xea, 0x33, 0x49, 0x18, 0xcf, 0x88, 0x30, 0x87, 0x53,
-	0xcd, 0xd6, 0x43, 0xa0, 0x4a, 0x41, 0x53, 0x81, 0x7b, 0xf0, 0x3a, 0x23, 0xdf, 0xf1, 0xa9, 0x90,
-	0x89, 0x90, 0xbc, 0xc6, 0x94, 0x24, 0xf2, 0x52, 0x11, 0x53, 0x57, 0x76, 0xb3, 0x7e, 0xbb, 0xa8,
-	0xa5, 0xe3, 0x4b, 0x45, 0x42, 0xd8, 0x3d, 0xf1, 0x47, 0xcd, 0xfa, 0xfa, 0x5f, 0xb3, 0x6a, 0x54,
-	0xe8, 0x45, 0xfe, 0xa1, 0x51, 0x77, 0x8d, 0xda, 0xf8, 0x91, 0xbb, 0xfa, 0xe2, 0x6d, 0x8c, 0xe1,
-	0x8a, 0x81, 0x49, 0xca, 0xcb, 0xde, 0x48, 0xab, 0xe7, 0xd7, 0x5f, 0xdb, 0x35, 0x1b, 0xb3, 0xd3,
-	0x0e, 0xcb, 0x0e, 0xa5, 0xbc, 0xc0, 0x8c, 0x22, 0x5e, 0x53, 0x87, 0x12, 0xa6, 0xf6, 0xc9, 0x69,
-	0x5b, 0xb8, 0xca, 0xc5, 0xdf, 0x9b, 0xf7, 0x41, 0x1d, 0x8e, 0x4f, 0x15, 0xf9, 0xee, 0x57, 0x00,
-	0x00, 0x00, 0xff, 0xff, 0x33, 0x2a, 0xdc, 0x7a, 0x03, 0x03, 0x00, 0x00,
+	// 463 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x92, 0xc1, 0x6a, 0xdb, 0x40,
+	0x10, 0x86, 0x23, 0x47, 0x6a, 0x9d, 0x49, 0x9a, 0x8a, 0x6d, 0x0e, 0xc6, 0x04, 0x9a, 0x0a, 0x42,
+	0x7c, 0x28, 0x12, 0xb8, 0xf4, 0x14, 0x52, 0xb0, 0x2d, 0xb5, 0x88, 0x16, 0x59, 0x95, 0x14, 0x42,
+	0x72, 0x11, 0x6b, 0x7b, 0x2b, 0x04, 0xd2, 0xae, 0xd0, 0x6e, 0x0c, 0x7e, 0x9e, 0x3e, 0x4b, 0xdf,
+	0xab, 0x68, 0x24, 0x97, 0x9a, 0xd6, 0xa5, 0xe4, 0xb6, 0x33, 0xfb, 0xff, 0xf3, 0xaf, 0x3e, 0x0d,
+	0x5c, 0x65, 0x42, 0x64, 0x05, 0x73, 0x16, 0x79, 0xa6, 0xe8, 0xa2, 0x60, 0x0e, 0x5d, 0x95, 0x39,
+	0x77, 0xd6, 0x63, 0x27, 0xe7, 0x52, 0x51, 0xbe, 0x64, 0x76, 0x55, 0x0b, 0x25, 0xc8, 0xa0, 0x15,
+	0xda, 0x5b, 0xa1, 0x8d, 0x42, 0x7b, 0x3d, 0x1e, 0x9e, 0x77, 0x23, 0x68, 0x95, 0x3b, 0x94, 0x73,
+	0xa1, 0xa8, 0xca, 0x05, 0x97, 0xad, 0x6f, 0x78, 0xb9, 0x37, 0x60, 0x29, 0xca, 0x52, 0xf0, 0x56,
+	0x66, 0x7d, 0xef, 0x41, 0xdf, 0xef, 0x12, 0x09, 0x01, 0x9d, 0xd3, 0x92, 0x0d, 0xb4, 0x0b, 0x6d,
+	0x74, 0x14, 0xe1, 0x99, 0xbc, 0x81, 0x93, 0x55, 0x2e, 0xab, 0x82, 0x6e, 0x52, 0xbc, 0xeb, 0xe1,
+	0xdd, 0x71, 0xd7, 0x0b, 0x1a, 0xc9, 0x07, 0x30, 0xa4, 0xa2, 0x8a, 0x0d, 0x0e, 0x2f, 0xb4, 0xd1,
+	0xe9, 0x78, 0x64, 0xef, 0x7b, 0xb2, 0xbd, 0x4d, 0xb2, 0xe3, 0x46, 0x1f, 0xb5, 0x36, 0x72, 0x0d,
+	0xba, 0xda, 0x54, 0x6c, 0xa0, 0xa3, 0xfd, 0xea, 0x3f, 0xec, 0xc9, 0xa6, 0x62, 0x11, 0x9a, 0xac,
+	0xf7, 0x60, 0xe0, 0x30, 0xf2, 0x0a, 0x5e, 0xc6, 0xc9, 0x24, 0xf1, 0xd2, 0x60, 0x9e, 0xa4, 0x9f,
+	0x83, 0xf9, 0x5d, 0x60, 0x1e, 0x90, 0x23, 0x30, 0x22, 0x6f, 0xe2, 0xde, 0x9b, 0x1a, 0x39, 0x81,
+	0xfe, 0x2c, 0xf2, 0x26, 0x89, 0x1f, 0x7c, 0x32, 0x7b, 0xd6, 0x5b, 0xd0, 0x9b, 0x21, 0xe4, 0x0c,
+	0xcc, 0xe4, 0x3e, 0xf4, 0xd2, 0xdb, 0x20, 0x0e, 0xbd, 0x99, 0xff, 0xd1, 0xf7, 0x5c, 0xf3, 0x80,
+	0x9c, 0x02, 0x84, 0xd1, 0xdc, 0xbd, 0x9d, 0x25, 0xfe, 0x3c, 0x30, 0x35, 0xeb, 0x47, 0x0f, 0x9e,
+	0xcf, 0x8a, 0x47, 0xa9, 0x58, 0xfd, 0x57, 0x48, 0x43, 0xe8, 0x17, 0x62, 0x89, 0xfc, 0x3b, 0x40,
+	0xbf, 0x6a, 0x72, 0xb3, 0x4b, 0xe7, 0x1f, 0x9f, 0xd7, 0x25, 0xec, 0xc2, 0x79, 0x0d, 0xc7, 0x92,
+	0xd5, 0x6b, 0x96, 0x72, 0xb1, 0x62, 0x12, 0x19, 0x19, 0x11, 0x60, 0x2b, 0x68, 0x3a, 0xe4, 0x0e,
+	0xce, 0x56, 0xec, 0x1b, 0x7d, 0x2c, 0x54, 0x2a, 0x95, 0xa8, 0x69, 0xc6, 0x52, 0xa4, 0x69, 0x60,
+	0xdc, 0xe5, 0xfe, 0xb8, 0xb8, 0x55, 0x23, 0x4b, 0xd2, 0x8d, 0xf8, 0xad, 0x67, 0x7d, 0x7d, 0x12,
+	0xd9, 0xa6, 0x8a, 0xbc, 0xd8, 0x7f, 0x68, 0xaa, 0xc3, 0xa6, 0x72, 0xfd, 0x78, 0x32, 0xfd, 0xe2,
+	0xb9, 0xa6, 0x3e, 0xe5, 0x70, 0xbe, 0x14, 0xe5, 0xde, 0x27, 0x4d, 0x5f, 0x6c, 0xff, 0x70, 0xd8,
+	0x2c, 0x67, 0xa8, 0x3d, 0xdc, 0x74, 0xd2, 0x4c, 0x14, 0x94, 0x67, 0xb6, 0xa8, 0x33, 0x27, 0x63,
+	0x1c, 0x57, 0xd7, 0x69, 0xaf, 0x68, 0x95, 0xcb, 0x3f, 0x97, 0xfc, 0x1a, 0x0f, 0x8b, 0x67, 0xa8,
+	0x7c, 0xf7, 0x33, 0x00, 0x00, 0xff, 0xff, 0xfc, 0x10, 0x73, 0x5b, 0x6e, 0x03, 0x00, 0x00,
 }
diff --git a/googleapis/bigtable/admin/v2/table.pb.go b/googleapis/bigtable/admin/v2/table.pb.go
index 13a3426c..24b715c6 100644
--- a/googleapis/bigtable/admin/v2/table.pb.go
+++ b/googleapis/bigtable/admin/v2/table.pb.go
@@ -9,6 +9,7 @@ import fmt "fmt"
 import math "math"
 import _ "google.golang.org/genproto/googleapis/api/annotations"
 import google_protobuf4 "github.com/golang/protobuf/ptypes/duration"
+import _ "github.com/golang/protobuf/ptypes/timestamp"
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -78,20 +79,20 @@ func (Table_View) EnumDescriptor() ([]byte, []int) { return fileDescriptor4, []i
 // A collection of user data indexed by row, column, and timestamp.
 // Each table is served using the resources of its parent cluster.
 type Table struct {
+	// (`OutputOnly`)
 	// The unique name of the table. Values are of the form
-	// projects/<project>/instances/<instance>/tables/[_a-zA-Z0-9][-_.a-zA-Z0-9]*
-	// Views: NAME_ONLY, SCHEMA_VIEW, REPLICATION_VIEW, FULL
-	// @OutputOnly
+	// `projects/<project>/instances/<instance>/tables/[_a-zA-Z0-9][-_.a-zA-Z0-9]*`.
+	// Views: `NAME_ONLY`, `SCHEMA_VIEW`, `FULL`
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// (`CreationOnly`)
 	// The column families configured for this table, mapped by column family ID.
-	// Views: SCHEMA_VIEW, FULL
-	// @CreationOnly
+	// Views: `SCHEMA_VIEW`, `FULL`
 	ColumnFamilies map[string]*ColumnFamily `protobuf:"bytes,3,rep,name=column_families,json=columnFamilies" json:"column_families,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	// The granularity (e.g. MILLIS, MICROS) at which timestamps are stored in
+	// (`CreationOnly`)
+	// The granularity (e.g. `MILLIS`, `MICROS`) at which timestamps are stored in
 	// this table. Timestamps not matching the granularity will be rejected.
-	// If unspecified at creation time, the value will be set to MILLIS.
-	// Views: SCHEMA_VIEW, FULL
-	// @CreationOnly
+	// If unspecified at creation time, the value will be set to `MILLIS`.
+	// Views: `SCHEMA_VIEW`, `FULL`
 	Granularity Table_TimestampGranularity `protobuf:"varint,4,opt,name=granularity,enum=google.bigtable.admin.v2.Table_TimestampGranularity" json:"granularity,omitempty"`
 }
 
@@ -146,6 +147,8 @@ func (m *ColumnFamily) GetGcRule() *GcRule {
 
 // Rule for determining which cells to delete during garbage collection.
 type GcRule struct {
+	// Garbage collection rules.
+	//
 	// Types that are valid to be assigned to Rule:
 	//	*GcRule_MaxNumVersions
 	//	*GcRule_MaxAge
@@ -372,42 +375,43 @@ func init() {
 func init() { proto.RegisterFile("google/bigtable/admin/v2/table.proto", fileDescriptor4) }
 
 var fileDescriptor4 = []byte{
-	// 592 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0xed, 0x6a, 0xdb, 0x3c,
-	0x14, 0xc7, 0xe3, 0xda, 0x49, 0x9f, 0x9e, 0xf4, 0x69, 0x8d, 0xd6, 0x0f, 0x59, 0x28, 0x23, 0x0b,
-	0xdb, 0x08, 0x83, 0xd9, 0x90, 0x96, 0xb1, 0xf7, 0x91, 0xb6, 0x4e, 0x63, 0x70, 0xb2, 0xe0, 0xbc,
-	0x8c, 0x8e, 0x81, 0x51, 0x5c, 0x55, 0x88, 0x5a, 0x72, 0xf0, 0x4b, 0xd6, 0xdc, 0xc5, 0xee, 0x6c,
-	0xb7, 0x34, 0x2c, 0x3b, 0x2c, 0xdd, 0x1a, 0x3a, 0xf6, 0x29, 0x47, 0x3a, 0xff, 0xff, 0x4f, 0x47,
-	0x47, 0x27, 0x86, 0x27, 0x34, 0x0c, 0x69, 0x40, 0xcc, 0x19, 0xa3, 0x09, 0x9e, 0x05, 0xc4, 0xc4,
-	0x97, 0x9c, 0x09, 0x73, 0xd1, 0x36, 0xe5, 0xd2, 0x98, 0x47, 0x61, 0x12, 0xa2, 0x5a, 0xae, 0x32,
-	0x56, 0x2a, 0x43, 0xaa, 0x8c, 0x45, 0xbb, 0x7e, 0x58, 0xf8, 0xf1, 0x9c, 0x99, 0x58, 0x88, 0x30,
-	0xc1, 0x09, 0x0b, 0x45, 0x9c, 0xfb, 0xea, 0x8f, 0x8a, 0xac, 0x5c, 0xcd, 0xd2, 0x2b, 0xf3, 0x32,
-	0x8d, 0xa4, 0x20, 0xcf, 0x37, 0x7f, 0xa8, 0x50, 0x1e, 0x67, 0x40, 0x84, 0x40, 0x13, 0x98, 0x93,
-	0x9a, 0xd2, 0x50, 0x5a, 0x3b, 0xae, 0x8c, 0xd1, 0x57, 0xd8, 0xf7, 0xc3, 0x20, 0xe5, 0xc2, 0xbb,
-	0xc2, 0x9c, 0x05, 0x8c, 0xc4, 0x35, 0xb5, 0xa1, 0xb6, 0xaa, 0xed, 0x23, 0x63, 0x53, 0x3d, 0x86,
-	0xa4, 0x19, 0xa7, 0xd2, 0xd6, 0x2d, 0x5c, 0x96, 0x48, 0xa2, 0xa5, 0xbb, 0xe7, 0xdf, 0xda, 0x44,
-	0x53, 0xa8, 0xd2, 0x08, 0x8b, 0x34, 0xc0, 0x11, 0x4b, 0x96, 0x35, 0xad, 0xa1, 0xb4, 0xf6, 0xda,
-	0xc7, 0xf7, 0x91, 0xc7, 0x8c, 0x93, 0x38, 0xc1, 0x7c, 0x7e, 0xfe, 0xcb, 0xeb, 0xae, 0x83, 0xea,
-	0x0c, 0x1e, 0xdc, 0x71, 0x3c, 0xd2, 0x41, 0xbd, 0x26, 0xcb, 0xe2, 0x7e, 0x59, 0x88, 0xde, 0x41,
-	0x79, 0x81, 0x83, 0x94, 0xd4, 0xb6, 0x1a, 0x4a, 0xab, 0xda, 0x7e, 0xb6, 0xf9, 0xe8, 0x35, 0xde,
-	0xd2, 0xcd, 0x4d, 0x6f, 0xb6, 0x5e, 0x29, 0x4d, 0x1b, 0x0e, 0xee, 0xaa, 0x07, 0x3d, 0x85, 0xc7,
-	0x63, 0xbb, 0x6f, 0x8d, 0xc6, 0x9d, 0xfe, 0xd0, 0x3b, 0x77, 0x3b, 0x83, 0x89, 0xd3, 0x71, 0xed,
-	0xf1, 0x85, 0x37, 0x19, 0x8c, 0x86, 0xd6, 0xa9, 0xdd, 0xb5, 0xad, 0x33, 0xbd, 0x84, 0x00, 0x2a,
-	0x7d, 0xdb, 0x71, 0xec, 0x91, 0xae, 0x34, 0xbb, 0xa0, 0x4d, 0x19, 0xf9, 0x86, 0x0e, 0x40, 0x9f,
-	0xda, 0xd6, 0xe7, 0xdf, 0x94, 0xff, 0xc3, 0xce, 0xa0, 0xd3, 0xb7, 0xbc, 0x4f, 0x03, 0xe7, 0x42,
-	0x57, 0xd0, 0x3e, 0x54, 0x47, 0xa7, 0x3d, 0xab, 0xdf, 0xf1, 0x32, 0xad, 0xbe, 0x85, 0xfe, 0x03,
-	0xad, 0x3b, 0x71, 0x1c, 0x5d, 0x6b, 0xda, 0xb0, 0xbb, 0x5e, 0x2d, 0x7a, 0x0d, 0xdb, 0xd4, 0xf7,
-	0xa2, 0x34, 0xc8, 0x9f, 0xb6, 0xda, 0x6e, 0x6c, 0xbe, 0xe6, 0xb9, 0xef, 0xa6, 0x01, 0x71, 0x2b,
-	0x54, 0xfe, 0x36, 0xbf, 0xab, 0x50, 0xc9, 0xb7, 0xd0, 0x73, 0xd0, 0x39, 0xbe, 0xf1, 0x44, 0xca,
-	0xbd, 0x05, 0x89, 0xe2, 0x6c, 0xc2, 0x24, 0xae, 0xdc, 0x2b, 0xb9, 0x7b, 0x1c, 0xdf, 0x0c, 0x52,
-	0x3e, 0x2d, 0xf6, 0xd1, 0x31, 0x6c, 0x67, 0x5a, 0x4c, 0x57, 0x8d, 0x7d, 0xb8, 0x3a, 0x71, 0x35,
-	0x85, 0xc6, 0x59, 0x31, 0x85, 0xbd, 0x92, 0x5b, 0xe1, 0xf8, 0xa6, 0x43, 0x09, 0x1a, 0xc1, 0x2e,
-	0x13, 0x09, 0x89, 0x62, 0xe2, 0x67, 0x99, 0x9a, 0x2a, 0xad, 0x2f, 0xee, 0x2b, 0xd6, 0xb0, 0xd7,
-	0x4c, 0xbd, 0x92, 0x7b, 0x0b, 0x82, 0x3e, 0x40, 0x39, 0x15, 0x19, 0x4d, 0xbb, 0xef, 0x85, 0x0b,
-	0xda, 0x44, 0xe4, 0x98, 0xdc, 0x56, 0xef, 0xc2, 0xee, 0x3a, 0x1f, 0xbd, 0x84, 0x72, 0xd6, 0xc9,
-	0xec, 0xee, 0xea, 0x5f, 0xb5, 0x32, 0x97, 0xd7, 0x3f, 0x42, 0x59, 0x92, 0xff, 0x15, 0x70, 0x52,
-	0x01, 0x2d, 0x0b, 0x4e, 0xae, 0xe1, 0xd0, 0x0f, 0xf9, 0x46, 0xd7, 0x09, 0xc8, 0x3f, 0xc9, 0x30,
-	0xeb, 0xf3, 0x50, 0xf9, 0xf2, 0xbe, 0xd0, 0xd1, 0x30, 0xc0, 0x82, 0x1a, 0x61, 0x44, 0x4d, 0x4a,
-	0x84, 0x7c, 0x05, 0x33, 0x4f, 0xe1, 0x39, 0x8b, 0xff, 0xfc, 0xf4, 0xbc, 0x95, 0xc1, 0xac, 0x22,
-	0x95, 0x47, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xf1, 0xc7, 0x7b, 0xb1, 0xa3, 0x04, 0x00, 0x00,
+	// 598 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x7d, 0x6b, 0xda, 0x5e,
+	0x14, 0x36, 0x4d, 0xb4, 0xbf, 0x1e, 0xfb, 0x6b, 0xc3, 0x5d, 0xff, 0x70, 0x52, 0x36, 0x27, 0xdb,
+	0x90, 0xc1, 0x12, 0xb0, 0x65, 0xec, 0x7d, 0xd8, 0x36, 0xd6, 0x80, 0x3a, 0x89, 0x2f, 0xa3, 0x63,
+	0x10, 0xae, 0xe9, 0xed, 0xe5, 0xd2, 0xdc, 0x1b, 0xc9, 0x8b, 0xab, 0xdf, 0x62, 0xdf, 0x6c, 0x5f,
+	0x69, 0xe4, 0x26, 0x32, 0xdb, 0x55, 0x1c, 0xfb, 0xcb, 0x73, 0xcf, 0x79, 0x9e, 0xe7, 0xbc, 0x1a,
+	0x78, 0x4a, 0x83, 0x80, 0xfa, 0xc4, 0x9c, 0x32, 0x1a, 0xe3, 0xa9, 0x4f, 0x4c, 0x7c, 0xc9, 0x99,
+	0x30, 0xe7, 0x4d, 0x53, 0x3e, 0x8d, 0x59, 0x18, 0xc4, 0x01, 0xaa, 0x64, 0x28, 0x63, 0x89, 0x32,
+	0x24, 0xca, 0x98, 0x37, 0xab, 0x87, 0x39, 0x1f, 0xcf, 0x98, 0x89, 0x85, 0x08, 0x62, 0x1c, 0xb3,
+	0x40, 0x44, 0x19, 0xaf, 0xfa, 0x28, 0x8f, 0xca, 0xd7, 0x34, 0xb9, 0x32, 0x2f, 0x93, 0x50, 0x02,
+	0xf2, 0xf8, 0xe3, 0xbb, 0xf1, 0x98, 0x71, 0x12, 0xc5, 0x98, 0xcf, 0x32, 0x40, 0xfd, 0xa7, 0x0a,
+	0xc5, 0x51, 0x9a, 0x11, 0x21, 0xd0, 0x04, 0xe6, 0xa4, 0xa2, 0xd4, 0x94, 0xc6, 0x8e, 0x23, 0x6d,
+	0xf4, 0x0d, 0xf6, 0xbd, 0xc0, 0x4f, 0xb8, 0x70, 0xaf, 0x30, 0x67, 0x3e, 0x23, 0x51, 0x45, 0xad,
+	0xa9, 0x8d, 0x72, 0xf3, 0xc8, 0x58, 0x57, 0xb0, 0x21, 0xd5, 0x8c, 0x53, 0x49, 0x6b, 0xe7, 0x2c,
+	0x4b, 0xc4, 0xe1, 0xc2, 0xd9, 0xf3, 0x6e, 0x39, 0xd1, 0x04, 0xca, 0x34, 0xc4, 0x22, 0xf1, 0x71,
+	0xc8, 0xe2, 0x45, 0x45, 0xab, 0x29, 0x8d, 0xbd, 0xe6, 0xf1, 0x26, 0xe5, 0xd1, 0xb2, 0x83, 0xf3,
+	0xdf, 0x5c, 0x67, 0x55, 0xa8, 0xca, 0xe0, 0xc1, 0x3d, 0xe9, 0x91, 0x0e, 0xea, 0x35, 0x59, 0xe4,
+	0xfd, 0xa5, 0x26, 0x7a, 0x0f, 0xc5, 0x39, 0xf6, 0x13, 0x52, 0xd9, 0xaa, 0x29, 0x8d, 0x72, 0xf3,
+	0xf9, 0xfa, 0xd4, 0x2b, 0x7a, 0x0b, 0x27, 0x23, 0xbd, 0xdd, 0x7a, 0xad, 0xd4, 0x6d, 0x38, 0xb8,
+	0xaf, 0x1e, 0xf4, 0x0c, 0x9e, 0x8c, 0xec, 0x9e, 0x35, 0x1c, 0xb5, 0x7a, 0x03, 0xf7, 0xdc, 0x69,
+	0xf5, 0xc7, 0xdd, 0x96, 0x63, 0x8f, 0x2e, 0xdc, 0x71, 0x7f, 0x38, 0xb0, 0x4e, 0xed, 0xb6, 0x6d,
+	0x9d, 0xe9, 0x05, 0x04, 0x50, 0xea, 0xd9, 0xdd, 0xae, 0x3d, 0xd4, 0x95, 0x7a, 0x1b, 0xb4, 0x09,
+	0x23, 0xdf, 0xd1, 0x01, 0xe8, 0x13, 0xdb, 0xfa, 0x72, 0x07, 0xf9, 0x3f, 0xec, 0xf4, 0x5b, 0x3d,
+	0xcb, 0xfd, 0xdc, 0xef, 0x5e, 0xe8, 0x0a, 0xda, 0x87, 0xf2, 0xf0, 0xb4, 0x63, 0xf5, 0x5a, 0x6e,
+	0x8a, 0xd5, 0xb7, 0xd0, 0x7f, 0xa0, 0xb5, 0xc7, 0xdd, 0xae, 0xae, 0xd5, 0x6d, 0xd8, 0x5d, 0xad,
+	0x16, 0xbd, 0x81, 0x6d, 0xea, 0xb9, 0x61, 0xe2, 0x67, 0xab, 0x2d, 0x37, 0x6b, 0xeb, 0xdb, 0x3c,
+	0xf7, 0x9c, 0xc4, 0x27, 0x4e, 0x89, 0xca, 0xdf, 0xfa, 0x0f, 0x15, 0x4a, 0x99, 0x0b, 0xbd, 0x00,
+	0x9d, 0xe3, 0x1b, 0x57, 0x24, 0xdc, 0x9d, 0x93, 0x30, 0x4a, 0x4f, 0x50, 0xca, 0x15, 0x3b, 0x05,
+	0x67, 0x8f, 0xe3, 0x9b, 0x7e, 0xc2, 0x27, 0xb9, 0x1f, 0x1d, 0xc3, 0x76, 0x8a, 0xc5, 0x74, 0x39,
+	0xd8, 0x87, 0xcb, 0x8c, 0xcb, 0x33, 0x34, 0xce, 0xf2, 0x33, 0xed, 0x14, 0x9c, 0x12, 0xc7, 0x37,
+	0x2d, 0x4a, 0xd0, 0x10, 0x76, 0x99, 0x88, 0x49, 0x18, 0x11, 0x2f, 0x8d, 0x54, 0x54, 0x49, 0x7d,
+	0xb9, 0xa9, 0x58, 0xc3, 0x5e, 0x21, 0x75, 0x0a, 0xce, 0x2d, 0x11, 0xf4, 0x11, 0x8a, 0x89, 0x48,
+	0xd5, 0xb4, 0x4d, 0x1b, 0xce, 0xd5, 0xc6, 0x22, 0x93, 0xc9, 0x68, 0xd5, 0x36, 0xec, 0xae, 0xea,
+	0xa3, 0x57, 0x50, 0x4c, 0x27, 0x99, 0xf6, 0xae, 0xfe, 0xd5, 0x28, 0x33, 0x78, 0xf5, 0x13, 0x14,
+	0xa5, 0xf2, 0xbf, 0x0a, 0x9c, 0x94, 0x40, 0x4b, 0x8d, 0x93, 0x6b, 0x38, 0xf4, 0x02, 0xbe, 0x96,
+	0x75, 0x02, 0xf2, 0x4f, 0x32, 0x48, 0xe7, 0x3c, 0x50, 0xbe, 0x7e, 0xc8, 0x71, 0x34, 0xf0, 0xb1,
+	0xa0, 0x46, 0x10, 0x52, 0x93, 0x12, 0x21, 0xb7, 0x60, 0x66, 0x21, 0x3c, 0x63, 0xd1, 0x9f, 0xdf,
+	0xa6, 0x77, 0xd2, 0x98, 0x96, 0x24, 0xf2, 0xe8, 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0x68, 0xe3,
+	0x1b, 0xd9, 0xc4, 0x04, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/functions/v1beta2/functions.pb.go b/googleapis/cloud/functions/v1beta2/functions.pb.go
index 401ca64d..f853a774 100644
--- a/googleapis/cloud/functions/v1beta2/functions.pb.go
+++ b/googleapis/cloud/functions/v1beta2/functions.pb.go
@@ -30,8 +30,10 @@ import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
 import _ "google.golang.org/genproto/googleapis/api/annotations"
+import _ "google.golang.org/genproto/googleapis/api/serviceconfig"
 import google_longrunning "google.golang.org/genproto/googleapis/longrunning"
 import google_protobuf3 "github.com/golang/protobuf/ptypes/duration"
+import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp"
 
 import (
 	context "golang.org/x/net/context"
@@ -86,46 +88,48 @@ func (x CloudFunctionStatus) String() string {
 }
 func (CloudFunctionStatus) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
 
-// Describes a cloud function that contains user computation executed in
+// Describes a Cloud Function that contains user computation executed in
 // response to an event. It encapsulate function and triggers configurations.
 type CloudFunction struct {
 	// A user-defined name of the function. Function names must be unique
-	// globally and match pattern: projects/*/locations/*/functions/*
+	// globally and match pattern `projects/*/locations/*/functions/*`
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 	// The location of the function source code.
 	//
 	// Types that are valid to be assigned to SourceCode:
-	//	*CloudFunction_GcsUrl
+	//	*CloudFunction_SourceArchiveUrl
 	//	*CloudFunction_SourceRepository
 	SourceCode isCloudFunction_SourceCode `protobuf_oneof:"source_code"`
+	// An event that triggers the function.
+	//
 	// Types that are valid to be assigned to Trigger:
-	//	*CloudFunction_PubsubTrigger
-	//	*CloudFunction_GcsTrigger
 	//	*CloudFunction_HttpsTrigger
 	//	*CloudFunction_EventTrigger
 	Trigger isCloudFunction_Trigger `protobuf_oneof:"trigger"`
-	// [Output only] Status of the function deployment.
+	// Output only. Status of the function deployment.
 	Status CloudFunctionStatus `protobuf:"varint,7,opt,name=status,enum=google.cloud.functions.v1beta2.CloudFunctionStatus" json:"status,omitempty"`
-	// [Output only] Name of the most recent operation modifying the function. If
-	// the function status is DEPLOYING or DELETING, then it points to the active
-	// operation.
+	// Output only. Name of the most recent operation modifying the function. If
+	// the function status is `DEPLOYING` or `DELETING`, then it points to the
+	// active operation.
 	LatestOperation string `protobuf:"bytes,8,opt,name=latest_operation,json=latestOperation" json:"latest_operation,omitempty"`
 	// The name of the function (as defined in source code) that will be
 	// executed. Defaults to the resource name suffix, if not specified. For
 	// backward compatibility, if function with given name is not found, then the
-	// system will try to use function named 'function'.
+	// system will try to use function named "function".
 	// For Node.js this is name of a function exported by the module specified
-	// in source_location.
+	// in `source_location`.
 	EntryPoint string `protobuf:"bytes,9,opt,name=entry_point,json=entryPoint" json:"entry_point,omitempty"`
-	// The cloud function execution timeout. Execution is considered failed and
+	// The function execution timeout. Execution is considered failed and
 	// can be terminated if the function is not completed at the end of the
 	// timeout period. Defaults to 60 seconds.
 	Timeout *google_protobuf3.Duration `protobuf:"bytes,10,opt,name=timeout" json:"timeout,omitempty"`
 	// The amount of memory in MB available for a function.
-	// Defaults to 128MB.
+	// Defaults to 256MB.
 	AvailableMemoryMb int32 `protobuf:"varint,11,opt,name=available_memory_mb,json=availableMemoryMb" json:"available_memory_mb,omitempty"`
-	// [Output only] The service account of the function.
+	// Output only. The service account of the function.
 	ServiceAccount string `protobuf:"bytes,13,opt,name=service_account,json=serviceAccount" json:"service_account,omitempty"`
+	// Output only. The last update timestamp of a Cloud Function.
+	UpdateTime *google_protobuf4.Timestamp `protobuf:"bytes,15,opt,name=update_time,json=updateTime" json:"update_time,omitempty"`
 }
 
 func (m *CloudFunction) Reset()                    { *m = CloudFunction{} }
@@ -140,18 +144,12 @@ type isCloudFunction_Trigger interface {
 	isCloudFunction_Trigger()
 }
 
-type CloudFunction_GcsUrl struct {
-	GcsUrl string `protobuf:"bytes,2,opt,name=gcs_url,json=gcsUrl,oneof"`
+type CloudFunction_SourceArchiveUrl struct {
+	SourceArchiveUrl string `protobuf:"bytes,14,opt,name=source_archive_url,json=sourceArchiveUrl,oneof"`
 }
 type CloudFunction_SourceRepository struct {
 	SourceRepository *SourceRepository `protobuf:"bytes,3,opt,name=source_repository,json=sourceRepository,oneof"`
 }
-type CloudFunction_PubsubTrigger struct {
-	PubsubTrigger string `protobuf:"bytes,4,opt,name=pubsub_trigger,json=pubsubTrigger,oneof"`
-}
-type CloudFunction_GcsTrigger struct {
-	GcsTrigger string `protobuf:"bytes,5,opt,name=gcs_trigger,json=gcsTrigger,oneof"`
-}
 type CloudFunction_HttpsTrigger struct {
 	HttpsTrigger *HTTPSTrigger `protobuf:"bytes,6,opt,name=https_trigger,json=httpsTrigger,oneof"`
 }
@@ -159,10 +157,8 @@ type CloudFunction_EventTrigger struct {
 	EventTrigger *EventTrigger `protobuf:"bytes,12,opt,name=event_trigger,json=eventTrigger,oneof"`
 }
 
-func (*CloudFunction_GcsUrl) isCloudFunction_SourceCode()           {}
+func (*CloudFunction_SourceArchiveUrl) isCloudFunction_SourceCode() {}
 func (*CloudFunction_SourceRepository) isCloudFunction_SourceCode() {}
-func (*CloudFunction_PubsubTrigger) isCloudFunction_Trigger()       {}
-func (*CloudFunction_GcsTrigger) isCloudFunction_Trigger()          {}
 func (*CloudFunction_HttpsTrigger) isCloudFunction_Trigger()        {}
 func (*CloudFunction_EventTrigger) isCloudFunction_Trigger()        {}
 
@@ -186,9 +182,9 @@ func (m *CloudFunction) GetName() string {
 	return ""
 }
 
-func (m *CloudFunction) GetGcsUrl() string {
-	if x, ok := m.GetSourceCode().(*CloudFunction_GcsUrl); ok {
-		return x.GcsUrl
+func (m *CloudFunction) GetSourceArchiveUrl() string {
+	if x, ok := m.GetSourceCode().(*CloudFunction_SourceArchiveUrl); ok {
+		return x.SourceArchiveUrl
 	}
 	return ""
 }
@@ -200,20 +196,6 @@ func (m *CloudFunction) GetSourceRepository() *SourceRepository {
 	return nil
 }
 
-func (m *CloudFunction) GetPubsubTrigger() string {
-	if x, ok := m.GetTrigger().(*CloudFunction_PubsubTrigger); ok {
-		return x.PubsubTrigger
-	}
-	return ""
-}
-
-func (m *CloudFunction) GetGcsTrigger() string {
-	if x, ok := m.GetTrigger().(*CloudFunction_GcsTrigger); ok {
-		return x.GcsTrigger
-	}
-	return ""
-}
-
 func (m *CloudFunction) GetHttpsTrigger() *HTTPSTrigger {
 	if x, ok := m.GetTrigger().(*CloudFunction_HttpsTrigger); ok {
 		return x.HttpsTrigger
@@ -270,13 +252,18 @@ func (m *CloudFunction) GetServiceAccount() string {
 	return ""
 }
 
+func (m *CloudFunction) GetUpdateTime() *google_protobuf4.Timestamp {
+	if m != nil {
+		return m.UpdateTime
+	}
+	return nil
+}
+
 // XXX_OneofFuncs is for the internal use of the proto package.
 func (*CloudFunction) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
 	return _CloudFunction_OneofMarshaler, _CloudFunction_OneofUnmarshaler, _CloudFunction_OneofSizer, []interface{}{
-		(*CloudFunction_GcsUrl)(nil),
+		(*CloudFunction_SourceArchiveUrl)(nil),
 		(*CloudFunction_SourceRepository)(nil),
-		(*CloudFunction_PubsubTrigger)(nil),
-		(*CloudFunction_GcsTrigger)(nil),
 		(*CloudFunction_HttpsTrigger)(nil),
 		(*CloudFunction_EventTrigger)(nil),
 	}
@@ -286,9 +273,9 @@ func _CloudFunction_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
 	m := msg.(*CloudFunction)
 	// source_code
 	switch x := m.SourceCode.(type) {
-	case *CloudFunction_GcsUrl:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.GcsUrl)
+	case *CloudFunction_SourceArchiveUrl:
+		b.EncodeVarint(14<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.SourceArchiveUrl)
 	case *CloudFunction_SourceRepository:
 		b.EncodeVarint(3<<3 | proto.WireBytes)
 		if err := b.EncodeMessage(x.SourceRepository); err != nil {
@@ -300,12 +287,6 @@ func _CloudFunction_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
 	}
 	// trigger
 	switch x := m.Trigger.(type) {
-	case *CloudFunction_PubsubTrigger:
-		b.EncodeVarint(4<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.PubsubTrigger)
-	case *CloudFunction_GcsTrigger:
-		b.EncodeVarint(5<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.GcsTrigger)
 	case *CloudFunction_HttpsTrigger:
 		b.EncodeVarint(6<<3 | proto.WireBytes)
 		if err := b.EncodeMessage(x.HttpsTrigger); err != nil {
@@ -326,12 +307,12 @@ func _CloudFunction_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
 func _CloudFunction_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
 	m := msg.(*CloudFunction)
 	switch tag {
-	case 2: // source_code.gcs_url
+	case 14: // source_code.source_archive_url
 		if wire != proto.WireBytes {
 			return true, proto.ErrInternalBadWireType
 		}
 		x, err := b.DecodeStringBytes()
-		m.SourceCode = &CloudFunction_GcsUrl{x}
+		m.SourceCode = &CloudFunction_SourceArchiveUrl{x}
 		return true, err
 	case 3: // source_code.source_repository
 		if wire != proto.WireBytes {
@@ -341,20 +322,6 @@ func _CloudFunction_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.
 		err := b.DecodeMessage(msg)
 		m.SourceCode = &CloudFunction_SourceRepository{msg}
 		return true, err
-	case 4: // trigger.pubsub_trigger
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.Trigger = &CloudFunction_PubsubTrigger{x}
-		return true, err
-	case 5: // trigger.gcs_trigger
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.Trigger = &CloudFunction_GcsTrigger{x}
-		return true, err
 	case 6: // trigger.https_trigger
 		if wire != proto.WireBytes {
 			return true, proto.ErrInternalBadWireType
@@ -380,10 +347,10 @@ func _CloudFunction_OneofSizer(msg proto.Message) (n int) {
 	m := msg.(*CloudFunction)
 	// source_code
 	switch x := m.SourceCode.(type) {
-	case *CloudFunction_GcsUrl:
-		n += proto.SizeVarint(2<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.GcsUrl)))
-		n += len(x.GcsUrl)
+	case *CloudFunction_SourceArchiveUrl:
+		n += proto.SizeVarint(14<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.SourceArchiveUrl)))
+		n += len(x.SourceArchiveUrl)
 	case *CloudFunction_SourceRepository:
 		s := proto.Size(x.SourceRepository)
 		n += proto.SizeVarint(3<<3 | proto.WireBytes)
@@ -395,14 +362,6 @@ func _CloudFunction_OneofSizer(msg proto.Message) (n int) {
 	}
 	// trigger
 	switch x := m.Trigger.(type) {
-	case *CloudFunction_PubsubTrigger:
-		n += proto.SizeVarint(4<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.PubsubTrigger)))
-		n += len(x.PubsubTrigger)
-	case *CloudFunction_GcsTrigger:
-		n += proto.SizeVarint(5<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.GcsTrigger)))
-		n += len(x.GcsTrigger)
 	case *CloudFunction_HttpsTrigger:
 		s := proto.Size(x.HttpsTrigger)
 		n += proto.SizeVarint(6<<3 | proto.WireBytes)
@@ -422,7 +381,7 @@ func _CloudFunction_OneofSizer(msg proto.Message) (n int) {
 
 // Describes HTTPSTrigger, could be used to connect web hooks to function.
 type HTTPSTrigger struct {
-	// [Output only] The deployed url for the function.
+	// Output only. The deployed url for the function.
 	Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
 }
 
@@ -441,29 +400,23 @@ func (m *HTTPSTrigger) GetUrl() string {
 // Describes EventTrigger, used to request events be sent from another
 // service.
 type EventTrigger struct {
-	// event_type names contain the service that is sending an event and the kind
-	// of event that was fired. Must be of the form providers/*/eventTypes/*
-	// e.g. Directly handle a Message published to Google Cloud PubSub
-	//      providers/cloud.pubsub/eventTypes/topic.publish
+	// `event_type` names contain the service that is sending an event and the
+	// kind of event that was fired. Must be of the form
+	// `providers/*/eventTypes/*` e.g. Directly handle a Message published to
+	// Google Cloud Pub/Sub `providers/cloud.pubsub/eventTypes/topic.publish`
 	//
 	//      Handle an object changing in Google Cloud Storage
-	//      providers/cloud.storage/eventTypes/object.change
+	//      `providers/cloud.storage/eventTypes/object.change`
 	//
 	//      Handle a write to the Firebase Realtime Database
-	//      providers/firebase.database/eventTypes/data.write
+	//      `providers/firebase.database/eventTypes/data.write`
 	EventType string `protobuf:"bytes,1,opt,name=event_type,json=eventType" json:"event_type,omitempty"`
-	// Which instance of the source's service should send events. E.g. for PubSub
-	// this would be a PubSub topic at projects/*/topics/*. For Google Cloud
-	// Storage this would be a bucket at projects/*/buckets/*. For any source
+	// Which instance of the source's service should send events. E.g. for Pub/Sub
+	// this would be a Pub/Sub topic at `projects/*/topics/*`. For Google Cloud
+	// Storage this would be a bucket at `projects/*/buckets/*`. For any source
 	// that only supports one instance per-project, this should be the name of the
-	// project (projects/*)
+	// project (`projects/*`)
 	Resource string `protobuf:"bytes,2,opt,name=resource" json:"resource,omitempty"`
-	// Optional path within the resource that should be used to filter events.
-	// Named wildcards may be written in curly brackets (e.g. {variable}). The
-	// value that matched this parameter will be included  in the event
-	// parameters. e.g. users/{userId}/profilePic
-	// Path is not supported for all actions.
-	Path string `protobuf:"bytes,3,opt,name=path" json:"path,omitempty"`
 }
 
 func (m *EventTrigger) Reset()                    { *m = EventTrigger{} }
@@ -485,13 +438,6 @@ func (m *EventTrigger) GetResource() string {
 	return ""
 }
 
-func (m *EventTrigger) GetPath() string {
-	if m != nil {
-		return m.Path
-	}
-	return ""
-}
-
 // Describes the location of the function source in a remote repository.
 type SourceRepository struct {
 	// URL to the hosted repository where the function is defined. Only paths in
@@ -499,8 +445,8 @@ type SourceRepository struct {
 	// contain the name of the repository.
 	RepositoryUrl string `protobuf:"bytes,1,opt,name=repository_url,json=repositoryUrl" json:"repository_url,omitempty"`
 	// The path within the repository where the function is defined. The path
-	// should point to the directory where cloud functions files are located. Use
-	// '/' if the function is defined directly in the root directory of a
+	// should point to the directory where Cloud Functions files are located. Use
+	// "/" if the function is defined directly in the root directory of a
 	// repository.
 	SourcePath string `protobuf:"bytes,2,opt,name=source_path,json=sourcePath" json:"source_path,omitempty"`
 	// The version of a function. Defaults to the latest version of the master
@@ -511,7 +457,7 @@ type SourceRepository struct {
 	//	*SourceRepository_Tag
 	//	*SourceRepository_Revision
 	Version isSourceRepository_Version `protobuf_oneof:"version"`
-	// [Output only] The id of the revision that was resolved at the moment of
+	// Output only. The id of the revision that was resolved at the moment of
 	// function creation or update. For example when a user deployed from a
 	// branch, it will be the revision id of the latest change on this branch at
 	// that time. If user deployed from revision then this value will be always
@@ -672,10 +618,10 @@ func _SourceRepository_OneofSizer(msg proto.Message) (n int) {
 	return n
 }
 
-// Request for the CreateFunction method.
+// Request for the `CreateFunction` method.
 type CreateFunctionRequest struct {
 	// The project and location in which the function should be created, specified
-	// in the format: projects/*/locations/*
+	// in the format `projects/*/locations/*`
 	Location string `protobuf:"bytes,1,opt,name=location" json:"location,omitempty"`
 	// Function to be created.
 	Function *CloudFunction `protobuf:"bytes,2,opt,name=function" json:"function,omitempty"`
@@ -700,7 +646,7 @@ func (m *CreateFunctionRequest) GetFunction() *CloudFunction {
 	return nil
 }
 
-// Request for the UpdateFunction method.
+// Request for the `UpdateFunction` method.
 type UpdateFunctionRequest struct {
 	// The name of the function to be updated.
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
@@ -727,7 +673,7 @@ func (m *UpdateFunctionRequest) GetFunction() *CloudFunction {
 	return nil
 }
 
-// Request for the GetFunction method.
+// Request for the `GetFunction` method.
 type GetFunctionRequest struct {
 	// The name of the function which details should be obtained.
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
@@ -745,17 +691,18 @@ func (m *GetFunctionRequest) GetName() string {
 	return ""
 }
 
-// Request for the ListFunctions method.
+// Request for the `ListFunctions` method.
 type ListFunctionsRequest struct {
 	// The project and location from which the function should be listed,
-	// specified in the format: projects/*/locations/*
-	// If you want to list functions in all locations, use '-' in place of a
+	// specified in the format `projects/*/locations/*`
+	// If you want to list functions in all locations, use "-" in place of a
 	// location.
 	Location string `protobuf:"bytes,1,opt,name=location" json:"location,omitempty"`
-	// Maximum number of functions to return.
+	// Maximum number of functions to return per call.
 	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
-	// The value returned by the last ListFunctionsResponse; indicates that
-	// this is a continuation of a prior ListFunctions call, and that the
+	// The value returned by the last
+	// `ListFunctionsResponse`; indicates that
+	// this is a continuation of a prior `ListFunctions` call, and that the
 	// system should return the next page of data.
 	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
 }
@@ -786,12 +733,13 @@ func (m *ListFunctionsRequest) GetPageToken() string {
 	return ""
 }
 
-// Response for the ListFunctions method.
+// Response for the `ListFunctions` method.
 type ListFunctionsResponse struct {
 	// The functions that match the request.
 	Functions []*CloudFunction `protobuf:"bytes,1,rep,name=functions" json:"functions,omitempty"`
 	// If not empty, indicates that there may be more functions that match
-	// the request; this value should be passed in a new ListFunctionsRequest
+	// the request; this value should be passed in a new
+	// [google.cloud.functions.v1beta2.ListFunctionsRequest][]
 	// to get more functions.
 	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
 }
@@ -815,7 +763,7 @@ func (m *ListFunctionsResponse) GetNextPageToken() string {
 	return ""
 }
 
-// Request for the DeleteFunction method.
+// Request for the `DeleteFunction` method.
 type DeleteFunctionRequest struct {
 	// The name of the function which should be deleted.
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
@@ -833,7 +781,7 @@ func (m *DeleteFunctionRequest) GetName() string {
 	return ""
 }
 
-// Request for the CallFunction method.
+// Request for the `CallFunction` method.
 type CallFunctionRequest struct {
 	// The name of the function to be called.
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
@@ -860,7 +808,7 @@ func (m *CallFunctionRequest) GetData() string {
 	return ""
 }
 
-// Response of CallFunction method.
+// Response of `CallFunction` method.
 type CallFunctionResponse struct {
 	// Execution id of function invocation.
 	ExecutionId string `protobuf:"bytes,1,opt,name=execution_id,json=executionId" json:"execution_id,omitempty"`
@@ -930,7 +878,8 @@ type CloudFunctionsServiceClient interface {
 	// Returns a function with the given name from the requested project.
 	GetFunction(ctx context.Context, in *GetFunctionRequest, opts ...grpc.CallOption) (*CloudFunction, error)
 	// Creates a new function. If a function with the given name already exists in
-	// the specified project, it will return ALREADY_EXISTS error.
+	// the specified project, the long running operation will return
+	// `ALREADY_EXISTS` error.
 	CreateFunction(ctx context.Context, in *CreateFunctionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error)
 	// Updates existing function.
 	UpdateFunction(ctx context.Context, in *UpdateFunctionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error)
@@ -1013,7 +962,8 @@ type CloudFunctionsServiceServer interface {
 	// Returns a function with the given name from the requested project.
 	GetFunction(context.Context, *GetFunctionRequest) (*CloudFunction, error)
 	// Creates a new function. If a function with the given name already exists in
-	// the specified project, it will return ALREADY_EXISTS error.
+	// the specified project, the long running operation will return
+	// `ALREADY_EXISTS` error.
 	CreateFunction(context.Context, *CreateFunctionRequest) (*google_longrunning.Operation, error)
 	// Updates existing function.
 	UpdateFunction(context.Context, *UpdateFunctionRequest) (*google_longrunning.Operation, error)
@@ -1174,81 +1124,81 @@ var _CloudFunctionsService_serviceDesc = grpc.ServiceDesc{
 func init() { proto.RegisterFile("google/cloud/functions/v1beta2/functions.proto", fileDescriptor0) }
 
 var fileDescriptor0 = []byte{
-	// 1208 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4d, 0x6f, 0x1b, 0xc5,
-	0x1b, 0xcf, 0x26, 0xb1, 0x13, 0x3f, 0x7e, 0xa9, 0x3b, 0x6d, 0xaa, 0xad, 0xff, 0xed, 0xbf, 0xe9,
-	0x22, 0x68, 0x48, 0xc1, 0x0b, 0x6e, 0x00, 0xa9, 0xb4, 0x88, 0x24, 0x76, 0x5e, 0xd4, 0xb4, 0xb5,
-	0xd6, 0xce, 0xa1, 0x48, 0x68, 0x35, 0x5e, 0x4f, 0xb7, 0x0b, 0x9b, 0x9d, 0x65, 0x67, 0xd6, 0x6a,
-	0x8a, 0xca, 0x01, 0x89, 0x1b, 0x37, 0xbe, 0x41, 0xcf, 0x88, 0x0f, 0x80, 0xc4, 0x9d, 0x3b, 0x12,
-	0x47, 0x4e, 0x7c, 0x10, 0x34, 0xb3, 0xb3, 0xeb, 0x75, 0xea, 0xe2, 0x24, 0xe2, 0xb6, 0xf3, 0x9b,
-	0xe7, 0xe5, 0x37, 0xf3, 0xfc, 0x9e, 0xc7, 0x63, 0x68, 0xba, 0x94, 0xba, 0x3e, 0x31, 0x1d, 0x9f,
-	0xc6, 0x43, 0xf3, 0x69, 0x1c, 0x38, 0xdc, 0xa3, 0x01, 0x33, 0x47, 0x1f, 0x0e, 0x08, 0xc7, 0xad,
-	0x31, 0xd2, 0x0c, 0x23, 0xca, 0x29, 0xfa, 0x7f, 0x62, 0xdf, 0x94, 0xf6, 0xcd, 0xf1, 0xae, 0xb2,
-	0x6f, 0x5c, 0x53, 0xf1, 0x70, 0xe8, 0x99, 0x38, 0x08, 0x28, 0xc7, 0x39, 0xef, 0xc6, 0x5b, 0x6a,
-	0xd7, 0xa7, 0x81, 0x1b, 0xc5, 0x41, 0xe0, 0x05, 0xae, 0x49, 0x43, 0x12, 0x4d, 0x18, 0xa9, 0x14,
-	0xa6, 0x5c, 0x0d, 0xe2, 0xa7, 0xe6, 0x30, 0x4e, 0x0c, 0x92, 0x7d, 0xe3, 0xcf, 0x02, 0x54, 0xb7,
-	0x45, 0xfa, 0x1d, 0x95, 0x1d, 0x21, 0x58, 0x0c, 0xf0, 0x11, 0xd1, 0xb5, 0x55, 0x6d, 0xad, 0x64,
-	0xc9, 0x6f, 0x74, 0x15, 0x96, 0x5c, 0x87, 0xd9, 0x71, 0xe4, 0xeb, 0xf3, 0x02, 0xde, 0x9b, 0xb3,
-	0x8a, 0xae, 0xc3, 0x0e, 0x23, 0x1f, 0xd9, 0x70, 0x91, 0xd1, 0x38, 0x72, 0x88, 0x1d, 0x91, 0x90,
-	0x32, 0x8f, 0xd3, 0xe8, 0x58, 0x5f, 0x58, 0xd5, 0xd6, 0xca, 0xad, 0x0f, 0x9a, 0xff, 0x7e, 0xbe,
-	0x66, 0x4f, 0x3a, 0x5a, 0x99, 0xdf, 0xde, 0x9c, 0x55, 0x67, 0x27, 0x30, 0x74, 0x0b, 0x6a, 0x61,
-	0x3c, 0x60, 0xf1, 0xc0, 0xe6, 0x91, 0xe7, 0xba, 0x24, 0xd2, 0x17, 0x25, 0x05, 0xcd, 0xaa, 0x26,
-	0x78, 0x3f, 0x81, 0xd1, 0x4d, 0x28, 0x0b, 0x92, 0xa9, 0x55, 0x41, 0x59, 0x81, 0xeb, 0xb0, 0xd4,
-	0xa4, 0x07, 0xd5, 0x67, 0x9c, 0x87, 0x63, 0xa3, 0xa2, 0x24, 0xfa, 0xde, 0x2c, 0xa2, 0x7b, 0xfd,
-	0x7e, 0xb7, 0xa7, 0x82, 0xec, 0x69, 0x56, 0x45, 0x06, 0xc9, 0x05, 0x25, 0x23, 0x12, 0xf0, 0x2c,
-	0x68, 0xe5, 0x74, 0x41, 0x3b, 0xc2, 0x29, 0x17, 0x94, 0xe4, 0xd6, 0xe8, 0x01, 0x14, 0x19, 0xc7,
-	0x3c, 0x66, 0xfa, 0xd2, 0xaa, 0xb6, 0x56, 0x6b, 0xdd, 0x99, 0x15, 0x6d, 0xa2, 0x88, 0x3d, 0xe9,
-	0x6a, 0xa9, 0x10, 0xe8, 0x5d, 0xa8, 0xfb, 0x98, 0x13, 0xc6, 0xed, 0x4c, 0x1f, 0xfa, 0xb2, 0x2c,
-	0xef, 0x85, 0x04, 0x7f, 0x9c, 0xc2, 0xe8, 0x06, 0x94, 0x49, 0xc0, 0xa3, 0x63, 0x3b, 0xa4, 0x5e,
-	0xc0, 0xf5, 0x92, 0xb4, 0x02, 0x09, 0x75, 0x05, 0x82, 0xee, 0xc0, 0x12, 0xf7, 0x8e, 0x08, 0x8d,
-	0xb9, 0x0e, 0xf2, 0x9c, 0x57, 0x53, 0x66, 0xa9, 0xc4, 0x9a, 0x6d, 0x25, 0x31, 0x2b, 0xb5, 0x44,
-	0x4d, 0xb8, 0x84, 0x47, 0xd8, 0xf3, 0xf1, 0xc0, 0x27, 0xf6, 0x11, 0x39, 0xa2, 0xd1, 0xb1, 0x7d,
-	0x34, 0xd0, 0xcb, 0xab, 0xda, 0x5a, 0xc1, 0xba, 0x98, 0x6d, 0x3d, 0x94, 0x3b, 0x0f, 0x07, 0xe8,
-	0x16, 0x5c, 0x60, 0x24, 0x1a, 0x79, 0x0e, 0xb1, 0xb1, 0xe3, 0xd0, 0x38, 0xe0, 0x7a, 0x55, 0x32,
-	0xa9, 0x29, 0x78, 0x33, 0x41, 0xb7, 0xaa, 0x50, 0x56, 0xea, 0x73, 0xe8, 0x90, 0x6c, 0x95, 0x60,
-	0x49, 0x15, 0xc1, 0x58, 0x85, 0x4a, 0xbe, 0x6a, 0xa8, 0x0e, 0x0b, 0x42, 0xbe, 0x89, 0xaa, 0xc5,
-	0xa7, 0xf1, 0x25, 0x54, 0xf2, 0x25, 0x40, 0xd7, 0x01, 0x54, 0x1d, 0x8f, 0xc3, 0x54, 0xfe, 0xa5,
-	0xa4, 0x28, 0xc7, 0x21, 0x41, 0x0d, 0x58, 0x8e, 0x48, 0x92, 0x2c, 0x69, 0x02, 0x2b, 0x5b, 0x8b,
-	0x9e, 0x09, 0x31, 0x7f, 0x26, 0x75, 0x5f, 0xb2, 0xe4, 0xb7, 0xf1, 0x97, 0x06, 0xf5, 0x93, 0x02,
-	0x47, 0x6f, 0x43, 0x6d, 0xdc, 0x26, 0xf6, 0x98, 0x50, 0x75, 0x8c, 0x8a, 0xa6, 0xba, 0x91, 0x1d,
-	0x4b, 0x86, 0x4d, 0xd2, 0x41, 0x02, 0x75, 0x31, 0x7f, 0x86, 0x74, 0x28, 0x0e, 0x22, 0x1c, 0x38,
-	0x2a, 0xa5, 0xe8, 0xc7, 0x64, 0x8d, 0x10, 0x2c, 0x70, 0xec, 0xaa, 0x1e, 0x99, 0xb3, 0xc4, 0x02,
-	0x5d, 0x13, 0xd4, 0x47, 0x1e, 0x13, 0x75, 0x2f, 0xa8, 0x8d, 0x0c, 0x41, 0xb7, 0xe1, 0xe2, 0x90,
-	0x84, 0x3e, 0x3d, 0x26, 0x43, 0x3b, 0x33, 0x2b, 0xca, 0x94, 0xf5, 0x74, 0xc3, 0x52, 0xb8, 0xb8,
-	0xe1, 0x11, 0x89, 0xc4, 0xa7, 0xf1, 0x1d, 0xac, 0x6c, 0x47, 0x04, 0x73, 0x92, 0xaa, 0xce, 0x22,
-	0xdf, 0xc4, 0x84, 0x71, 0x71, 0x53, 0x3e, 0x75, 0x12, 0x99, 0x25, 0xc7, 0xcb, 0xd6, 0x68, 0x1f,
-	0x96, 0x53, 0xed, 0xca, 0x63, 0x95, 0x5b, 0xef, 0x9f, 0x49, 0xd9, 0x56, 0xe6, 0x6e, 0x8c, 0x60,
-	0xe5, 0x30, 0x1c, 0x4e, 0xc9, 0x3f, 0x6d, 0x82, 0xfd, 0x87, 0x79, 0xd7, 0x00, 0xed, 0x12, 0x7e,
-	0x8a, 0xa4, 0x46, 0x00, 0x97, 0x0f, 0x3c, 0x96, 0x99, 0xb2, 0xd3, 0x5c, 0xd0, 0xff, 0xa0, 0x14,
-	0x62, 0x97, 0xd8, 0xcc, 0x7b, 0x91, 0xe8, 0xac, 0x60, 0x2d, 0x0b, 0xa0, 0xe7, 0xbd, 0x20, 0x42,
-	0xa2, 0x72, 0x93, 0xd3, 0xaf, 0x49, 0xa0, 0xd4, 0x26, 0xcd, 0xfb, 0x02, 0x30, 0x7e, 0xd4, 0x60,
-	0xe5, 0x44, 0x42, 0x16, 0xd2, 0x80, 0x11, 0xf4, 0x00, 0x4a, 0xd9, 0x01, 0x75, 0x6d, 0x75, 0xe1,
-	0xec, 0xe7, 0x1f, 0xfb, 0xa3, 0x77, 0xe0, 0x42, 0x40, 0x9e, 0x73, 0x3b, 0x47, 0x25, 0x51, 0x68,
-	0x55, 0xc0, 0xdd, 0x8c, 0xce, 0x6d, 0x58, 0x69, 0x13, 0x9f, 0x9c, 0xaa, 0x40, 0xc6, 0x7d, 0xb8,
-	0xb4, 0x8d, 0x7d, 0xff, 0x34, 0xb5, 0x44, 0xb0, 0x38, 0xc4, 0x1c, 0xab, 0xa4, 0xf2, 0xdb, 0x70,
-	0xe1, 0xf2, 0xa4, 0xbb, 0x3a, 0xf8, 0x4d, 0xa8, 0x90, 0xe7, 0xc4, 0x89, 0x05, 0x68, 0x7b, 0x43,
-	0x15, 0xa7, 0x9c, 0x61, 0xfb, 0x43, 0x74, 0x05, 0x8a, 0x11, 0x61, 0xb1, 0xcf, 0x55, 0x40, 0xb5,
-	0x42, 0x97, 0xa1, 0x40, 0xa2, 0x88, 0x46, 0xea, 0x9e, 0x93, 0xc5, 0x3a, 0x86, 0x4b, 0x53, 0x46,
-	0x2d, 0xba, 0x02, 0xa8, 0xd7, 0xdf, 0xec, 0x1f, 0xf6, 0xec, 0xc3, 0x47, 0xbd, 0x6e, 0x67, 0x7b,
-	0x7f, 0x67, 0xbf, 0xd3, 0xae, 0xcf, 0xa1, 0x12, 0x14, 0xac, 0xce, 0x66, 0xfb, 0x49, 0x5d, 0x43,
-	0x00, 0xc5, 0x9d, 0xcd, 0xfd, 0x83, 0x4e, 0xbb, 0x3e, 0x8f, 0xaa, 0x50, 0x6a, 0x77, 0xba, 0x07,
-	0x8f, 0x9f, 0xec, 0x3f, 0xda, 0xad, 0x2f, 0xa0, 0x0a, 0x2c, 0xb7, 0x3b, 0x07, 0x9d, 0xbe, 0x58,
-	0x2d, 0xb6, 0x7e, 0x5f, 0x86, 0x95, 0x89, 0x1c, 0xac, 0x97, 0x4c, 0x3d, 0xf4, 0xab, 0x06, 0xd5,
-	0x89, 0x02, 0xa3, 0x8d, 0x59, 0x55, 0x9c, 0x26, 0xc0, 0xc6, 0x47, 0x67, 0xf4, 0x4a, 0x2e, 0xd3,
-	0xb8, 0xf7, 0xfd, 0x1f, 0x7f, 0xff, 0x34, 0xff, 0x31, 0xda, 0xc8, 0x5e, 0x34, 0xdf, 0xa6, 0xba,
-	0xbd, 0x1f, 0x46, 0xf4, 0x2b, 0xe2, 0x70, 0x66, 0xae, 0x9b, 0x29, 0xc6, 0xcc, 0xf5, 0x97, 0xe3,
-	0x37, 0x0f, 0xfa, 0x59, 0x83, 0x72, 0xae, 0x71, 0x50, 0x6b, 0x16, 0x89, 0xd7, 0xbb, 0xac, 0x71,
-	0x36, 0xd1, 0x1a, 0x77, 0x25, 0xe1, 0x0d, 0xd4, 0x1a, 0x13, 0x16, 0x0a, 0x7a, 0x03, 0xd9, 0xdc,
-	0x8b, 0x6d, 0xfd, 0x25, 0xfa, 0x45, 0x83, 0xda, 0xe4, 0x7c, 0x43, 0x33, 0xaf, 0x6d, 0xea, 0x3c,
-	0x6c, 0x5c, 0x4f, 0xdd, 0x72, 0x2f, 0xb5, 0x66, 0xf6, 0x93, 0x6b, 0xec, 0x48, 0x92, 0x9f, 0x1b,
-	0xe7, 0xba, 0xd5, 0xbb, 0xd9, 0x5c, 0x12, 0xf7, 0x5b, 0x9b, 0x1c, 0x88, 0xb3, 0x09, 0x4f, 0x1d,
-	0xa0, 0xb3, 0x08, 0xb7, 0x25, 0xe1, 0xcf, 0x1a, 0xe7, 0xb8, 0xd5, 0x1c, 0xdd, 0x57, 0x1a, 0xd4,
-	0x26, 0xc7, 0xc3, 0x6c, 0xba, 0x53, 0xc7, 0xc9, 0x2c, 0xba, 0x4a, 0x04, 0xeb, 0xe7, 0x11, 0xc1,
-	0x6f, 0x1a, 0x54, 0xf2, 0x73, 0x05, 0xcd, 0x7e, 0x87, 0xbd, 0x3e, 0xc4, 0x1a, 0x1b, 0x67, 0x73,
-	0x52, 0xdd, 0xb6, 0x25, 0x79, 0xdf, 0x33, 0x3e, 0x39, 0xc7, 0x35, 0x3b, 0xd8, 0xf7, 0xef, 0x6a,
-	0xeb, 0x5b, 0x3f, 0x68, 0x60, 0x38, 0xf4, 0x68, 0x46, 0xfe, 0xad, 0x5a, 0xd6, 0xeb, 0x5d, 0xf1,
-	0x88, 0xeb, 0x6a, 0x5f, 0xec, 0x2a, 0x0f, 0x97, 0xfa, 0x38, 0x70, 0x9b, 0x34, 0x72, 0x4d, 0x97,
-	0x04, 0xf2, 0x89, 0x67, 0x26, 0x5b, 0x38, 0xf4, 0xd8, 0x9b, 0xfe, 0xe9, 0x7c, 0x9a, 0x21, 0xaf,
-	0xe6, 0x17, 0x76, 0xb7, 0x77, 0x06, 0x45, 0xe9, 0x79, 0xe7, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff,
-	0xfe, 0x72, 0xda, 0x26, 0x22, 0x0d, 0x00, 0x00,
+	// 1216 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4d, 0x73, 0xdb, 0x44,
+	0x18, 0xae, 0xf2, 0xe1, 0xc6, 0xaf, 0x3f, 0xe2, 0x6e, 0x9b, 0x8e, 0x30, 0x2d, 0x0d, 0x62, 0x80,
+	0x90, 0x82, 0x0d, 0x6e, 0x80, 0x99, 0x7e, 0x30, 0x24, 0xb1, 0x93, 0x78, 0x9a, 0xb6, 0x1e, 0xd9,
+	0x39, 0x94, 0x8b, 0x66, 0x2d, 0x6f, 0x15, 0x81, 0xac, 0x15, 0xab, 0x95, 0xa7, 0x29, 0x53, 0x0e,
+	0xcc, 0x70, 0xe3, 0xc6, 0x3f, 0xe8, 0x99, 0xe1, 0x07, 0x30, 0xc3, 0x9d, 0x3b, 0x57, 0x86, 0x13,
+	0x3f, 0x84, 0xd9, 0xd5, 0x4a, 0x96, 0x93, 0x14, 0x25, 0x19, 0x6e, 0xda, 0xe7, 0xfd, 0x7a, 0x76,
+	0xdf, 0x67, 0x5f, 0xaf, 0xa1, 0xe1, 0x50, 0xea, 0x78, 0xa4, 0x69, 0x7b, 0x34, 0x1a, 0x35, 0x9f,
+	0x45, 0xbe, 0xcd, 0x5d, 0xea, 0x87, 0xcd, 0xc9, 0x27, 0x43, 0xc2, 0x71, 0x6b, 0x8a, 0x34, 0x02,
+	0x46, 0x39, 0x45, 0x6f, 0xc5, 0xfe, 0x0d, 0xe9, 0xdf, 0x98, 0x5a, 0x95, 0x7f, 0xfd, 0x86, 0xca,
+	0x87, 0x03, 0xb7, 0x89, 0x7d, 0x9f, 0x72, 0x9c, 0x89, 0xae, 0xaf, 0x64, 0xad, 0x11, 0x3f, 0x54,
+	0x70, 0x33, 0x87, 0x04, 0x0d, 0x08, 0x9b, 0xc9, 0xf3, 0x8e, 0x0a, 0xf0, 0xa8, 0xef, 0xb0, 0xc8,
+	0xf7, 0x5d, 0xdf, 0x39, 0xe9, 0xa4, 0xa8, 0x36, 0xe5, 0x6a, 0x18, 0x3d, 0x6b, 0x8e, 0xa2, 0xd8,
+	0x41, 0xd9, 0x6f, 0x1d, 0xb7, 0x73, 0x77, 0x4c, 0x42, 0x8e, 0xc7, 0x41, 0xec, 0x60, 0xfc, 0xb5,
+	0x08, 0x95, 0x6d, 0x41, 0x69, 0x47, 0x31, 0x42, 0x08, 0x16, 0x7c, 0x3c, 0x26, 0xba, 0xb6, 0xaa,
+	0xad, 0x15, 0x4d, 0xf9, 0x8d, 0x1a, 0x80, 0x42, 0x1a, 0x31, 0x9b, 0x58, 0x98, 0xd9, 0x87, 0xee,
+	0x84, 0x58, 0x11, 0xf3, 0xf4, 0xaa, 0xf0, 0xd8, 0xbb, 0x64, 0xd6, 0x62, 0xdb, 0x66, 0x6c, 0x3a,
+	0x60, 0x1e, 0xb2, 0xe0, 0x8a, 0xf2, 0x67, 0x24, 0xa0, 0xa1, 0xcb, 0x29, 0x3b, 0xd2, 0xe7, 0x57,
+	0xb5, 0xb5, 0x52, 0xeb, 0xe3, 0xc6, 0x7f, 0x9f, 0x6e, 0xa3, 0x2f, 0x03, 0xcd, 0x34, 0x6e, 0x5a,
+	0x60, 0x8a, 0xa1, 0x3e, 0x54, 0x0e, 0x39, 0x0f, 0x42, 0x8b, 0x33, 0xd7, 0x71, 0x08, 0xd3, 0x0b,
+	0x32, 0xf9, 0x87, 0x79, 0xc9, 0xf7, 0x06, 0x83, 0x5e, 0x7f, 0x10, 0xc7, 0xec, 0x69, 0x66, 0x59,
+	0x26, 0x51, 0x6b, 0x91, 0x94, 0x4c, 0x88, 0xcf, 0xd3, 0xa4, 0xe5, 0xb3, 0x25, 0xed, 0x88, 0xa0,
+	0x4c, 0x52, 0x92, 0x59, 0xa3, 0x87, 0x50, 0x08, 0x39, 0xe6, 0x51, 0xa8, 0x5f, 0x5e, 0xd5, 0xd6,
+	0xaa, 0xad, 0x3b, 0x79, 0xd9, 0x66, 0xba, 0xd1, 0x97, 0xa1, 0xa6, 0x4a, 0x81, 0x3e, 0x80, 0x9a,
+	0x87, 0x39, 0x09, 0xb9, 0x95, 0x2a, 0x41, 0x5f, 0x92, 0x7d, 0x5a, 0x8e, 0xf1, 0x27, 0x09, 0x8c,
+	0x6e, 0x41, 0x89, 0xf8, 0x9c, 0x1d, 0x59, 0x01, 0x75, 0x7d, 0xae, 0x17, 0xa5, 0x17, 0x48, 0xa8,
+	0x27, 0x10, 0x74, 0x07, 0x2e, 0x0b, 0x31, 0xd0, 0x88, 0xeb, 0x20, 0xf7, 0xf9, 0x46, 0xc2, 0x2c,
+	0x11, 0x4b, 0xa3, 0xad, 0xc4, 0x64, 0x26, 0x9e, 0xa8, 0x01, 0x57, 0xf1, 0x04, 0xbb, 0x1e, 0x1e,
+	0x7a, 0xc4, 0x1a, 0x93, 0x31, 0x65, 0x47, 0xd6, 0x78, 0xa8, 0x97, 0x56, 0xb5, 0xb5, 0x45, 0xf3,
+	0x4a, 0x6a, 0x7a, 0x24, 0x2d, 0x8f, 0x86, 0xe8, 0x7d, 0x58, 0x0e, 0x09, 0x9b, 0xb8, 0x42, 0x39,
+	0xb6, 0x4d, 0x23, 0x9f, 0xeb, 0x15, 0xc9, 0xa4, 0xaa, 0xe0, 0xcd, 0x18, 0x45, 0xf7, 0xa0, 0x14,
+	0x05, 0x23, 0xcc, 0x89, 0x25, 0x4a, 0xe9, 0xcb, 0x92, 0x51, 0xfd, 0x04, 0xa3, 0x41, 0x22, 0x5f,
+	0x13, 0x62, 0x77, 0x01, 0x6c, 0x55, 0xa0, 0xa4, 0xe4, 0x66, 0xd3, 0x11, 0xd9, 0x2a, 0xc2, 0x65,
+	0xd5, 0x41, 0x63, 0x15, 0xca, 0xd9, 0x96, 0xa3, 0x1a, 0xcc, 0x0b, 0xe5, 0xc6, 0xda, 0x16, 0x9f,
+	0x46, 0x17, 0xca, 0xd9, 0xfe, 0xa1, 0x9b, 0x00, 0x4a, 0x04, 0x47, 0x41, 0x72, 0x09, 0x8a, 0x71,
+	0x47, 0x8f, 0x02, 0x82, 0xea, 0xb0, 0xc4, 0x48, 0x5c, 0x4c, 0x9f, 0x93, 0xc6, 0x74, 0x6d, 0xfc,
+	0xad, 0x41, 0xed, 0xb8, 0x7a, 0xd1, 0xbb, 0x50, 0x9d, 0xde, 0x01, 0x6b, 0x5a, 0xbc, 0x32, 0x45,
+	0xc5, 0x8d, 0xb9, 0x95, 0x6e, 0x21, 0xc0, 0xfc, 0x50, 0xa5, 0x86, 0x18, 0xea, 0x61, 0x7e, 0x88,
+	0x74, 0x28, 0x0c, 0x19, 0xf6, 0xed, 0x43, 0x79, 0x8f, 0xc4, 0xb5, 0x53, 0x6b, 0x84, 0x60, 0x9e,
+	0x63, 0x47, 0x5f, 0x50, 0xb0, 0x58, 0xa0, 0x1b, 0x82, 0xe6, 0xc4, 0x0d, 0x85, 0x40, 0x16, 0x95,
+	0x21, 0x45, 0xd0, 0x6d, 0xb8, 0x32, 0x22, 0x81, 0x47, 0x8f, 0xc8, 0xc8, 0x4a, 0xdd, 0x0a, 0xb2,
+	0x64, 0x2d, 0x31, 0x98, 0x0a, 0x17, 0xa7, 0x39, 0x21, 0x4c, 0x7c, 0x1a, 0xdf, 0xc3, 0xca, 0x36,
+	0x23, 0x98, 0x93, 0x44, 0x9e, 0x26, 0xf9, 0x36, 0x22, 0x21, 0x17, 0xa7, 0xe2, 0x51, 0x3b, 0xd6,
+	0x63, 0xbc, 0xbd, 0x74, 0x8d, 0xba, 0xb0, 0x94, 0x88, 0x5c, 0x6e, 0xab, 0xd4, 0xfa, 0xe8, 0x5c,
+	0x57, 0xc0, 0x4c, 0xc3, 0x8d, 0x09, 0xac, 0x1c, 0xc8, 0xae, 0x1f, 0xaf, 0x7f, 0xda, 0xcc, 0xfa,
+	0x1f, 0xeb, 0xae, 0x01, 0xda, 0x25, 0xfc, 0x0c, 0x45, 0x0d, 0x1f, 0xae, 0xed, 0xbb, 0x61, 0xea,
+	0x1a, 0x9e, 0xe5, 0x80, 0xde, 0x84, 0x62, 0x80, 0x1d, 0x62, 0x85, 0xee, 0x8b, 0x58, 0x53, 0x8b,
+	0xe6, 0x92, 0x00, 0xfa, 0xee, 0x0b, 0x22, 0xe4, 0x28, 0x8d, 0x9c, 0x7e, 0x43, 0xfc, 0xb8, 0xf5,
+	0xa6, 0x74, 0x1f, 0x08, 0xc0, 0xf8, 0x49, 0x83, 0x95, 0x63, 0x05, 0xc3, 0x80, 0xfa, 0x21, 0x41,
+	0x0f, 0xa1, 0x98, 0x6e, 0x50, 0xd7, 0x56, 0xe7, 0xcf, 0xbf, 0xff, 0x69, 0x3c, 0x7a, 0x0f, 0x96,
+	0x7d, 0xf2, 0x9c, 0x5b, 0x19, 0x2a, 0xb1, 0x42, 0x2b, 0x02, 0xee, 0xa5, 0x74, 0x6e, 0xc3, 0x4a,
+	0x9b, 0x78, 0xe4, 0x4c, 0x0d, 0x32, 0x1e, 0xc0, 0xd5, 0x6d, 0xec, 0x79, 0x67, 0xe9, 0x25, 0x82,
+	0x85, 0x11, 0xe6, 0x58, 0x15, 0x95, 0xdf, 0x86, 0x03, 0xd7, 0x66, 0xc3, 0xd5, 0xc6, 0xdf, 0x86,
+	0x32, 0x79, 0x4e, 0xec, 0x48, 0x80, 0x96, 0x3b, 0x52, 0x79, 0x4a, 0x29, 0xd6, 0x1d, 0xa1, 0xeb,
+	0x50, 0x60, 0x24, 0x8c, 0x3c, 0xae, 0x12, 0xaa, 0x15, 0xba, 0x06, 0x8b, 0x84, 0x31, 0xca, 0xd4,
+	0x39, 0xc7, 0x8b, 0x75, 0x0c, 0x57, 0x4f, 0x99, 0xc9, 0xe8, 0x3a, 0xa0, 0xfe, 0x60, 0x73, 0x70,
+	0xd0, 0xb7, 0x0e, 0x1e, 0xf7, 0x7b, 0x9d, 0xed, 0xee, 0x4e, 0xb7, 0xd3, 0xae, 0x5d, 0x42, 0x45,
+	0x58, 0x34, 0x3b, 0x9b, 0xed, 0xa7, 0x35, 0x0d, 0x01, 0x14, 0x76, 0x36, 0xbb, 0xfb, 0x9d, 0x76,
+	0x6d, 0x0e, 0x55, 0xa0, 0xd8, 0xee, 0xf4, 0xf6, 0x9f, 0x3c, 0xed, 0x3e, 0xde, 0xad, 0xcd, 0xa3,
+	0x32, 0x2c, 0xb5, 0x3b, 0xfb, 0x9d, 0x81, 0x58, 0x2d, 0xb4, 0xfe, 0x58, 0x82, 0x95, 0x99, 0x1a,
+	0x61, 0x3f, 0x1e, 0x8f, 0xe8, 0x37, 0x0d, 0x2a, 0x33, 0x0d, 0x46, 0x1b, 0x79, 0x5d, 0x3c, 0x4d,
+	0x80, 0xf5, 0x4f, 0xcf, 0x19, 0x15, 0x1f, 0xa6, 0x71, 0xff, 0x87, 0x3f, 0xff, 0xf9, 0x79, 0xee,
+	0x33, 0xb4, 0x91, 0xbe, 0x53, 0xbe, 0x4b, 0x74, 0xfb, 0x20, 0x60, 0xf4, 0x6b, 0x62, 0xf3, 0xb0,
+	0xb9, 0xde, 0x4c, 0xb0, 0xb0, 0xb9, 0xfe, 0x72, 0xfa, 0xb6, 0x41, 0xbf, 0x68, 0x50, 0xca, 0x5c,
+	0x1c, 0xd4, 0xca, 0x23, 0x71, 0xf2, 0x96, 0xd5, 0xcf, 0x27, 0x5a, 0xe3, 0xae, 0x24, 0xbc, 0x81,
+	0x5a, 0x53, 0xc2, 0x42, 0x41, 0xaf, 0x21, 0x9b, 0x79, 0x87, 0xad, 0xbf, 0x44, 0xbf, 0x6a, 0x50,
+	0x9d, 0x9d, 0x6f, 0x28, 0xf7, 0xd8, 0x4e, 0x9d, 0x87, 0xf5, 0x9b, 0x49, 0x58, 0xe6, 0xf1, 0xd6,
+	0x48, 0x7f, 0x9b, 0x8d, 0x1d, 0x49, 0xf2, 0x4b, 0xe3, 0x42, 0xa7, 0x7a, 0x37, 0x9d, 0x4b, 0xe2,
+	0x7c, 0xab, 0xb3, 0x03, 0x31, 0x9f, 0xf0, 0xa9, 0x03, 0x34, 0x8f, 0x70, 0x5b, 0x12, 0xfe, 0xa2,
+	0x7e, 0x81, 0x53, 0xcd, 0xd0, 0x7d, 0xa5, 0x41, 0x75, 0x76, 0x3c, 0xe4, 0xd3, 0x3d, 0x75, 0x9c,
+	0xe4, 0xd1, 0x55, 0x22, 0x58, 0xbf, 0x88, 0x08, 0x7e, 0xd7, 0xa0, 0x9c, 0x9d, 0x2b, 0x28, 0xff,
+	0xc1, 0x76, 0x72, 0x88, 0xd5, 0x37, 0xce, 0x17, 0xa4, 0x6e, 0xdb, 0x96, 0xe4, 0x7d, 0xdf, 0xf8,
+	0xfc, 0x02, 0xc7, 0x6c, 0x63, 0xcf, 0xbb, 0xab, 0xad, 0x6f, 0xfd, 0xa8, 0x81, 0x61, 0xd3, 0x71,
+	0x4e, 0xfd, 0xad, 0x6a, 0x7a, 0xd7, 0x7b, 0xe2, 0x6d, 0xd5, 0xd3, 0xbe, 0xda, 0x55, 0x11, 0x0e,
+	0xf5, 0xb0, 0xef, 0x34, 0x28, 0x73, 0x9a, 0x0e, 0xf1, 0xe5, 0xcb, 0x4b, 0xfd, 0x77, 0xc1, 0x81,
+	0x1b, 0xbe, 0xee, 0xff, 0xcb, 0xbd, 0x14, 0x79, 0x35, 0x37, 0xbf, 0xbb, 0xbd, 0x33, 0x2c, 0xc8,
+	0xc8, 0x3b, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x22, 0xa1, 0xda, 0x9f, 0x7d, 0x0d, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/ml/v1/job_service.pb.go b/googleapis/cloud/ml/v1/job_service.pb.go
new file mode 100644
index 00000000..f88feba2
--- /dev/null
+++ b/googleapis/cloud/ml/v1/job_service.pb.go
@@ -0,0 +1,1823 @@
+// Code generated by protoc-gen-go.
+// source: google/cloud/ml/v1/job_service.proto
+// DO NOT EDIT!
+
+/*
+Package ml is a generated protocol buffer package.
+
+It is generated from these files:
+	google/cloud/ml/v1/job_service.proto
+	google/cloud/ml/v1/model_service.proto
+	google/cloud/ml/v1/operation_metadata.proto
+	google/cloud/ml/v1/prediction_service.proto
+	google/cloud/ml/v1/project_service.proto
+
+It has these top-level messages:
+	TrainingInput
+	HyperparameterSpec
+	ParameterSpec
+	HyperparameterOutput
+	TrainingOutput
+	PredictionInput
+	PredictionOutput
+	Job
+	CreateJobRequest
+	ListJobsRequest
+	ListJobsResponse
+	GetJobRequest
+	CancelJobRequest
+	Model
+	Version
+	ManualScaling
+	CreateModelRequest
+	ListModelsRequest
+	ListModelsResponse
+	GetModelRequest
+	DeleteModelRequest
+	CreateVersionRequest
+	ListVersionsRequest
+	ListVersionsResponse
+	GetVersionRequest
+	DeleteVersionRequest
+	SetDefaultVersionRequest
+	OperationMetadata
+	PredictRequest
+	GetConfigRequest
+	GetConfigResponse
+*/
+package ml
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import _ "google.golang.org/genproto/googleapis/api/serviceconfig"
+import google_protobuf1 "github.com/golang/protobuf/ptypes/empty"
+import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp"
+
+import (
+	context "golang.org/x/net/context"
+	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.ProtoPackageIsVersion2 // please upgrade the proto package
+
+// A scale tier is an abstract representation of the resources Cloud ML
+// will allocate to a training job. When selecting a scale tier for your
+// training job, you should consider the size of your training dataset and
+// the complexity of your model. As the tiers increase, virtual machines are
+// added to handle your job, and the individual machines in the cluster
+// generally have more memory and greater processing power than they do at
+// lower tiers. The number of training units charged per hour of processing
+// increases as tiers get more advanced. Refer to the
+// [pricing guide](/ml/pricing) for more details. Note that in addition to
+// incurring costs, your use of training resources is constrained by the
+// [quota policy](/ml/quota).
+type TrainingInput_ScaleTier int32
+
+const (
+	// A single worker instance. This tier is suitable for learning how to use
+	// Cloud ML, and for experimenting with new models using small datasets.
+	TrainingInput_BASIC TrainingInput_ScaleTier = 0
+	// Many workers and a few parameter servers.
+	TrainingInput_STANDARD_1 TrainingInput_ScaleTier = 1
+	// A large number of workers with many parameter servers.
+	TrainingInput_PREMIUM_1 TrainingInput_ScaleTier = 3
+	// A single worker instance [with a GPU](ml/docs/how-tos/using-gpus).
+	TrainingInput_BASIC_GPU TrainingInput_ScaleTier = 6
+	// The CUSTOM tier is not a set tier, but rather enables you to use your
+	// own cluster specification. When you use this tier, set values to
+	// configure your processing cluster according to these guidelines:
+	//
+	// *   You _must_ set `TrainingInput.masterType` to specify the type
+	//     of machine to use for your master node. This is the only required
+	//     setting.
+	//
+	// *   You _may_ set `TrainingInput.workerCount` to specify the number of
+	//     workers to use. If you specify one or more workers, you _must_ also
+	//     set `TrainingInput.workerType` to specify the type of machine to use
+	//     for your worker nodes.
+	//
+	// *   You _may_ set `TrainingInput.parameterServerCount` to specify the
+	//     number of parameter servers to use. If you specify one or more
+	//     parameter servers, you _must_ also set
+	//     `TrainingInput.parameterServerType` to specify the type of machine to
+	//     use for your parameter servers.
+	//
+	// Note that all of your workers must use the same machine type, which can
+	// be different from your parameter server type and master type. Your
+	// parameter servers must likewise use the same machine type, which can be
+	// different from your worker type and master type.
+	TrainingInput_CUSTOM TrainingInput_ScaleTier = 5
+)
+
+var TrainingInput_ScaleTier_name = map[int32]string{
+	0: "BASIC",
+	1: "STANDARD_1",
+	3: "PREMIUM_1",
+	6: "BASIC_GPU",
+	5: "CUSTOM",
+}
+var TrainingInput_ScaleTier_value = map[string]int32{
+	"BASIC":      0,
+	"STANDARD_1": 1,
+	"PREMIUM_1":  3,
+	"BASIC_GPU":  6,
+	"CUSTOM":     5,
+}
+
+func (x TrainingInput_ScaleTier) String() string {
+	return proto.EnumName(TrainingInput_ScaleTier_name, int32(x))
+}
+func (TrainingInput_ScaleTier) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} }
+
+// The available types of optimization goals.
+type HyperparameterSpec_GoalType int32
+
+const (
+	// Goal Type will default to maximize.
+	HyperparameterSpec_GOAL_TYPE_UNSPECIFIED HyperparameterSpec_GoalType = 0
+	// Maximize the goal metric.
+	HyperparameterSpec_MAXIMIZE HyperparameterSpec_GoalType = 1
+	// Minimize the goal metric.
+	HyperparameterSpec_MINIMIZE HyperparameterSpec_GoalType = 2
+)
+
+var HyperparameterSpec_GoalType_name = map[int32]string{
+	0: "GOAL_TYPE_UNSPECIFIED",
+	1: "MAXIMIZE",
+	2: "MINIMIZE",
+}
+var HyperparameterSpec_GoalType_value = map[string]int32{
+	"GOAL_TYPE_UNSPECIFIED": 0,
+	"MAXIMIZE":              1,
+	"MINIMIZE":              2,
+}
+
+func (x HyperparameterSpec_GoalType) String() string {
+	return proto.EnumName(HyperparameterSpec_GoalType_name, int32(x))
+}
+func (HyperparameterSpec_GoalType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor0, []int{1, 0}
+}
+
+// The type of the parameter.
+type ParameterSpec_ParameterType int32
+
+const (
+	// You must specify a valid type. Using this unspecified type will result in
+	// an error.
+	ParameterSpec_PARAMETER_TYPE_UNSPECIFIED ParameterSpec_ParameterType = 0
+	// Type for real-valued parameters.
+	ParameterSpec_DOUBLE ParameterSpec_ParameterType = 1
+	// Type for integral parameters.
+	ParameterSpec_INTEGER ParameterSpec_ParameterType = 2
+	// The parameter is categorical, with a value chosen from the categories
+	// field.
+	ParameterSpec_CATEGORICAL ParameterSpec_ParameterType = 3
+	// The parameter is real valued, with a fixed set of feasible points. If
+	// `type==DISCRETE`, feasible_points must be provided, and
+	// {`min_value`, `max_value`} will be ignored.
+	ParameterSpec_DISCRETE ParameterSpec_ParameterType = 4
+)
+
+var ParameterSpec_ParameterType_name = map[int32]string{
+	0: "PARAMETER_TYPE_UNSPECIFIED",
+	1: "DOUBLE",
+	2: "INTEGER",
+	3: "CATEGORICAL",
+	4: "DISCRETE",
+}
+var ParameterSpec_ParameterType_value = map[string]int32{
+	"PARAMETER_TYPE_UNSPECIFIED": 0,
+	"DOUBLE":                     1,
+	"INTEGER":                    2,
+	"CATEGORICAL":                3,
+	"DISCRETE":                   4,
+}
+
+func (x ParameterSpec_ParameterType) String() string {
+	return proto.EnumName(ParameterSpec_ParameterType_name, int32(x))
+}
+func (ParameterSpec_ParameterType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor0, []int{2, 0}
+}
+
+// The type of scaling that should be applied to this parameter.
+type ParameterSpec_ScaleType int32
+
+const (
+	// By default, no scaling is applied.
+	ParameterSpec_NONE ParameterSpec_ScaleType = 0
+	// Scales the feasible space to (0, 1) linearly.
+	ParameterSpec_UNIT_LINEAR_SCALE ParameterSpec_ScaleType = 1
+	// Scales the feasible space logarithmically to (0, 1). The entire feasible
+	// space must be strictly positive.
+	ParameterSpec_UNIT_LOG_SCALE ParameterSpec_ScaleType = 2
+	// Scales the feasible space "reverse" logarithmically to (0, 1). The result
+	// is that values close to the top of the feasible space are spread out more
+	// than points near the bottom. The entire feasible space must be strictly
+	// positive.
+	ParameterSpec_UNIT_REVERSE_LOG_SCALE ParameterSpec_ScaleType = 3
+)
+
+var ParameterSpec_ScaleType_name = map[int32]string{
+	0: "NONE",
+	1: "UNIT_LINEAR_SCALE",
+	2: "UNIT_LOG_SCALE",
+	3: "UNIT_REVERSE_LOG_SCALE",
+}
+var ParameterSpec_ScaleType_value = map[string]int32{
+	"NONE":                   0,
+	"UNIT_LINEAR_SCALE":      1,
+	"UNIT_LOG_SCALE":         2,
+	"UNIT_REVERSE_LOG_SCALE": 3,
+}
+
+func (x ParameterSpec_ScaleType) String() string {
+	return proto.EnumName(ParameterSpec_ScaleType_name, int32(x))
+}
+func (ParameterSpec_ScaleType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 1} }
+
+// The format used to separate data instances in the source files.
+type PredictionInput_DataFormat int32
+
+const (
+	// Unspecified format.
+	PredictionInput_DATA_FORMAT_UNSPECIFIED PredictionInput_DataFormat = 0
+	// The source file is a text file with instances separated by the
+	// new-line character.
+	PredictionInput_TEXT PredictionInput_DataFormat = 1
+	// The source file is a TFRecord file.
+	PredictionInput_TF_RECORD PredictionInput_DataFormat = 2
+	// The source file is a GZIP-compressed TFRecord file.
+	PredictionInput_TF_RECORD_GZIP PredictionInput_DataFormat = 3
+)
+
+var PredictionInput_DataFormat_name = map[int32]string{
+	0: "DATA_FORMAT_UNSPECIFIED",
+	1: "TEXT",
+	2: "TF_RECORD",
+	3: "TF_RECORD_GZIP",
+}
+var PredictionInput_DataFormat_value = map[string]int32{
+	"DATA_FORMAT_UNSPECIFIED": 0,
+	"TEXT":           1,
+	"TF_RECORD":      2,
+	"TF_RECORD_GZIP": 3,
+}
+
+func (x PredictionInput_DataFormat) String() string {
+	return proto.EnumName(PredictionInput_DataFormat_name, int32(x))
+}
+func (PredictionInput_DataFormat) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor0, []int{5, 0}
+}
+
+// Describes the job state.
+type Job_State int32
+
+const (
+	// The job state is unspecified.
+	Job_STATE_UNSPECIFIED Job_State = 0
+	// The job has been just created and processing has not yet begun.
+	Job_QUEUED Job_State = 1
+	// The service is preparing to run the job.
+	Job_PREPARING Job_State = 2
+	// The job is in progress.
+	Job_RUNNING Job_State = 3
+	// The job completed successfully.
+	Job_SUCCEEDED Job_State = 4
+	// The job failed.
+	// `error_message` should contain the details of the failure.
+	Job_FAILED Job_State = 5
+	// The job is being cancelled.
+	// `error_message` should describe the reason for the cancellation.
+	Job_CANCELLING Job_State = 6
+	// The job has been cancelled.
+	// `error_message` should describe the reason for the cancellation.
+	Job_CANCELLED Job_State = 7
+)
+
+var Job_State_name = map[int32]string{
+	0: "STATE_UNSPECIFIED",
+	1: "QUEUED",
+	2: "PREPARING",
+	3: "RUNNING",
+	4: "SUCCEEDED",
+	5: "FAILED",
+	6: "CANCELLING",
+	7: "CANCELLED",
+}
+var Job_State_value = map[string]int32{
+	"STATE_UNSPECIFIED": 0,
+	"QUEUED":            1,
+	"PREPARING":         2,
+	"RUNNING":           3,
+	"SUCCEEDED":         4,
+	"FAILED":            5,
+	"CANCELLING":        6,
+	"CANCELLED":         7,
+}
+
+func (x Job_State) String() string {
+	return proto.EnumName(Job_State_name, int32(x))
+}
+func (Job_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{7, 0} }
+
+// Represents input parameters for a training job.
+type TrainingInput struct {
+	// Required. Specifies the machine types, the number of replicas for workers
+	// and parameter servers.
+	ScaleTier TrainingInput_ScaleTier `protobuf:"varint,1,opt,name=scale_tier,json=scaleTier,enum=google.cloud.ml.v1.TrainingInput_ScaleTier" json:"scale_tier,omitempty"`
+	// Optional. Specifies the type of virtual machine to use for your training
+	// job's master worker.
+	//
+	// The following types are supported:
+	//
+	// <dl>
+	//   <dt>standard</dt>
+	//   <dd>
+	//   A basic machine configuration suitable for training simple models with
+	//   small to moderate datasets.
+	//   </dd>
+	//   <dt>large_model</dt>
+	//   <dd>
+	//   A machine with a lot of memory, specially suited for parameter servers
+	//   when your model is large (having many hidden layers or layers with very
+	//   large numbers of nodes).
+	//   </dd>
+	//   <dt>complex_model_s</dt>
+	//   <dd>
+	//   A machine suitable for the master and workers of the cluster when your
+	//   model requires more computation than the standard machine can handle
+	//   satisfactorily.
+	//   </dd>
+	//   <dt>complex_model_m</dt>
+	//   <dd>
+	//   A machine with roughly twice the number of cores and roughly double the
+	//   memory of <code suppresswarning="true">complex_model_s</code>.
+	//   </dd>
+	//   <dt>complex_model_l</dt>
+	//   <dd>
+	//   A machine with roughly twice the number of cores and roughly double the
+	//   memory of <code suppresswarning="true">complex_model_m</code>.
+	//   </dd>
+	//   <dt>standard_gpu</dt>
+	//   <dd>
+	//   A machine equivalent to <code suppresswarning="true">standard</code> that
+	//   also includes a
+	//   <a href="ml/docs/how-tos/using-gpus">
+	//   GPU that you can use in your trainer</a>.
+	//   </dd>
+	//   <dt>complex_model_m_gpu</dt>
+	//   <dd>
+	//   A machine equivalent to
+	//   <code suppresswarning="true">coplex_model_m</code> that also includes
+	//   four GPUs.
+	//   </dd>
+	// </dl>
+	//
+	// You must set this value when `scaleTier` is set to `CUSTOM`.
+	MasterType string `protobuf:"bytes,2,opt,name=master_type,json=masterType" json:"master_type,omitempty"`
+	// Optional. Specifies the type of virtual machine to use for your training
+	// job's worker nodes.
+	//
+	// The supported values are the same as those described in the entry for
+	// `masterType`.
+	//
+	// This value must be present when `scaleTier` is set to `CUSTOM` and
+	// `workerCount` is greater than zero.
+	WorkerType string `protobuf:"bytes,3,opt,name=worker_type,json=workerType" json:"worker_type,omitempty"`
+	// Optional. Specifies the type of virtual machine to use for your training
+	// job's parameter server.
+	//
+	// The supported values are the same as those described in the entry for
+	// `master_type`.
+	//
+	// This value must be present when `scaleTier` is set to `CUSTOM` and
+	// `parameter_server_count` is greater than zero.
+	ParameterServerType string `protobuf:"bytes,4,opt,name=parameter_server_type,json=parameterServerType" json:"parameter_server_type,omitempty"`
+	// Optional. The number of worker replicas to use for the training job. Each
+	// replica in the cluster will be of the type specified in `worker_type`.
+	//
+	// This value can only be used when `scale_tier` is set to `CUSTOM`. If you
+	// set this value, you must also set `worker_type`.
+	WorkerCount int64 `protobuf:"varint,5,opt,name=worker_count,json=workerCount" json:"worker_count,omitempty"`
+	// Optional. The number of parameter server replicas to use for the training
+	// job. Each replica in the cluster will be of the type specified in
+	// `parameter_server_type`.
+	//
+	// This value can only be used when `scale_tier` is set to `CUSTOM`.If you
+	// set this value, you must also set `parameter_server_type`.
+	ParameterServerCount int64 `protobuf:"varint,6,opt,name=parameter_server_count,json=parameterServerCount" json:"parameter_server_count,omitempty"`
+	// Required. The Google Cloud Storage location of the packages with
+	// the training program and any additional dependencies.
+	PackageUris []string `protobuf:"bytes,7,rep,name=package_uris,json=packageUris" json:"package_uris,omitempty"`
+	// Required. The Python module name to run after installing the packages.
+	PythonModule string `protobuf:"bytes,8,opt,name=python_module,json=pythonModule" json:"python_module,omitempty"`
+	// Optional. Command line arguments to pass to the program.
+	Args []string `protobuf:"bytes,10,rep,name=args" json:"args,omitempty"`
+	// Optional. The set of Hyperparameters to tune.
+	Hyperparameters *HyperparameterSpec `protobuf:"bytes,12,opt,name=hyperparameters" json:"hyperparameters,omitempty"`
+	// Required. The Google Compute Engine region to run the training job in.
+	Region string `protobuf:"bytes,14,opt,name=region" json:"region,omitempty"`
+	// Optional. A Google Cloud Storage path in which to store training outputs
+	// and other data needed for training. This path is passed to your TensorFlow
+	// program as the 'job_dir' command-line argument. The benefit of specifying
+	// this field is that Cloud ML validates the path for use in training.
+	JobDir string `protobuf:"bytes,16,opt,name=job_dir,json=jobDir" json:"job_dir,omitempty"`
+	// Optional. The Google Cloud ML runtime version to use for training.  If not
+	// set, Google Cloud ML will choose the latest stable version.
+	RuntimeVersion string `protobuf:"bytes,15,opt,name=runtime_version,json=runtimeVersion" json:"runtime_version,omitempty"`
+}
+
+func (m *TrainingInput) Reset()                    { *m = TrainingInput{} }
+func (m *TrainingInput) String() string            { return proto.CompactTextString(m) }
+func (*TrainingInput) ProtoMessage()               {}
+func (*TrainingInput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (m *TrainingInput) GetScaleTier() TrainingInput_ScaleTier {
+	if m != nil {
+		return m.ScaleTier
+	}
+	return TrainingInput_BASIC
+}
+
+func (m *TrainingInput) GetMasterType() string {
+	if m != nil {
+		return m.MasterType
+	}
+	return ""
+}
+
+func (m *TrainingInput) GetWorkerType() string {
+	if m != nil {
+		return m.WorkerType
+	}
+	return ""
+}
+
+func (m *TrainingInput) GetParameterServerType() string {
+	if m != nil {
+		return m.ParameterServerType
+	}
+	return ""
+}
+
+func (m *TrainingInput) GetWorkerCount() int64 {
+	if m != nil {
+		return m.WorkerCount
+	}
+	return 0
+}
+
+func (m *TrainingInput) GetParameterServerCount() int64 {
+	if m != nil {
+		return m.ParameterServerCount
+	}
+	return 0
+}
+
+func (m *TrainingInput) GetPackageUris() []string {
+	if m != nil {
+		return m.PackageUris
+	}
+	return nil
+}
+
+func (m *TrainingInput) GetPythonModule() string {
+	if m != nil {
+		return m.PythonModule
+	}
+	return ""
+}
+
+func (m *TrainingInput) GetArgs() []string {
+	if m != nil {
+		return m.Args
+	}
+	return nil
+}
+
+func (m *TrainingInput) GetHyperparameters() *HyperparameterSpec {
+	if m != nil {
+		return m.Hyperparameters
+	}
+	return nil
+}
+
+func (m *TrainingInput) GetRegion() string {
+	if m != nil {
+		return m.Region
+	}
+	return ""
+}
+
+func (m *TrainingInput) GetJobDir() string {
+	if m != nil {
+		return m.JobDir
+	}
+	return ""
+}
+
+func (m *TrainingInput) GetRuntimeVersion() string {
+	if m != nil {
+		return m.RuntimeVersion
+	}
+	return ""
+}
+
+// Represents a set of hyperparameters to optimize.
+type HyperparameterSpec struct {
+	// Required. The type of goal to use for tuning. Available types are
+	// `MAXIMIZE` and `MINIMIZE`.
+	//
+	// Defaults to `MAXIMIZE`.
+	Goal HyperparameterSpec_GoalType `protobuf:"varint,1,opt,name=goal,enum=google.cloud.ml.v1.HyperparameterSpec_GoalType" json:"goal,omitempty"`
+	// Required. The set of parameters to tune.
+	Params []*ParameterSpec `protobuf:"bytes,2,rep,name=params" json:"params,omitempty"`
+	// Optional. How many training trials should be attempted to optimize
+	// the specified hyperparameters.
+	//
+	// Defaults to one.
+	MaxTrials int32 `protobuf:"varint,3,opt,name=max_trials,json=maxTrials" json:"max_trials,omitempty"`
+	// Optional. The number of training trials to run concurrently.
+	// You can reduce the time it takes to perform hyperparameter tuning by adding
+	// trials in parallel. However, each trail only benefits from the information
+	// gained in completed trials. That means that a trial does not get access to
+	// the results of trials running at the same time, which could reduce the
+	// quality of the overall optimization.
+	//
+	// Each trial will use the same scale tier and machine types.
+	//
+	// Defaults to one.
+	MaxParallelTrials int32 `protobuf:"varint,4,opt,name=max_parallel_trials,json=maxParallelTrials" json:"max_parallel_trials,omitempty"`
+	// Optional. The Tensorflow summary tag name to use for optimizing trials. For
+	// current versions of Tensorflow, this tag name should exactly match what is
+	// shown in Tensorboard, including all scopes.  For versions of Tensorflow
+	// prior to 0.12, this should be only the tag passed to tf.Summary.
+	// By default, "training/hptuning/metric" will be used.
+	HyperparameterMetricTag string `protobuf:"bytes,5,opt,name=hyperparameter_metric_tag,json=hyperparameterMetricTag" json:"hyperparameter_metric_tag,omitempty"`
+}
+
+func (m *HyperparameterSpec) Reset()                    { *m = HyperparameterSpec{} }
+func (m *HyperparameterSpec) String() string            { return proto.CompactTextString(m) }
+func (*HyperparameterSpec) ProtoMessage()               {}
+func (*HyperparameterSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+func (m *HyperparameterSpec) GetGoal() HyperparameterSpec_GoalType {
+	if m != nil {
+		return m.Goal
+	}
+	return HyperparameterSpec_GOAL_TYPE_UNSPECIFIED
+}
+
+func (m *HyperparameterSpec) GetParams() []*ParameterSpec {
+	if m != nil {
+		return m.Params
+	}
+	return nil
+}
+
+func (m *HyperparameterSpec) GetMaxTrials() int32 {
+	if m != nil {
+		return m.MaxTrials
+	}
+	return 0
+}
+
+func (m *HyperparameterSpec) GetMaxParallelTrials() int32 {
+	if m != nil {
+		return m.MaxParallelTrials
+	}
+	return 0
+}
+
+func (m *HyperparameterSpec) GetHyperparameterMetricTag() string {
+	if m != nil {
+		return m.HyperparameterMetricTag
+	}
+	return ""
+}
+
+// Represents a single hyperparameter to optimize.
+type ParameterSpec struct {
+	// Required. The parameter name must be unique amongst all ParameterConfigs in
+	// a HyperparameterSpec message. E.g., "learning_rate".
+	ParameterName string `protobuf:"bytes,1,opt,name=parameter_name,json=parameterName" json:"parameter_name,omitempty"`
+	// Required. The type of the parameter.
+	Type ParameterSpec_ParameterType `protobuf:"varint,4,opt,name=type,enum=google.cloud.ml.v1.ParameterSpec_ParameterType" json:"type,omitempty"`
+	// Required if type is `DOUBLE` or `INTEGER`. This field
+	// should be unset if type is `CATEGORICAL`. This value should be integers if
+	// type is INTEGER.
+	MinValue float64 `protobuf:"fixed64,2,opt,name=min_value,json=minValue" json:"min_value,omitempty"`
+	// Required if typeis `DOUBLE` or `INTEGER`. This field
+	// should be unset if type is `CATEGORICAL`. This value should be integers if
+	// type is `INTEGER`.
+	MaxValue float64 `protobuf:"fixed64,3,opt,name=max_value,json=maxValue" json:"max_value,omitempty"`
+	// Required if type is `CATEGORICAL`. The list of possible categories.
+	CategoricalValues []string `protobuf:"bytes,5,rep,name=categorical_values,json=categoricalValues" json:"categorical_values,omitempty"`
+	// Required if type is `DISCRETE`.
+	// A list of feasible points.
+	// The list should be in strictly increasing order. For instance, this
+	// parameter might have possible settings of 1.5, 2.5, and 4.0. This list
+	// should not contain more than 1,000 values.
+	DiscreteValues []float64 `protobuf:"fixed64,6,rep,packed,name=discrete_values,json=discreteValues" json:"discrete_values,omitempty"`
+	// Optional. How the parameter should be scaled to the hypercube.
+	// Leave unset for categorical parameters.
+	// Some kind of scaling is strongly recommended for real or integral
+	// parameters (e.g., `UNIT_LINEAR_SCALE`).
+	ScaleType ParameterSpec_ScaleType `protobuf:"varint,7,opt,name=scale_type,json=scaleType,enum=google.cloud.ml.v1.ParameterSpec_ScaleType" json:"scale_type,omitempty"`
+}
+
+func (m *ParameterSpec) Reset()                    { *m = ParameterSpec{} }
+func (m *ParameterSpec) String() string            { return proto.CompactTextString(m) }
+func (*ParameterSpec) ProtoMessage()               {}
+func (*ParameterSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+
+func (m *ParameterSpec) GetParameterName() string {
+	if m != nil {
+		return m.ParameterName
+	}
+	return ""
+}
+
+func (m *ParameterSpec) GetType() ParameterSpec_ParameterType {
+	if m != nil {
+		return m.Type
+	}
+	return ParameterSpec_PARAMETER_TYPE_UNSPECIFIED
+}
+
+func (m *ParameterSpec) GetMinValue() float64 {
+	if m != nil {
+		return m.MinValue
+	}
+	return 0
+}
+
+func (m *ParameterSpec) GetMaxValue() float64 {
+	if m != nil {
+		return m.MaxValue
+	}
+	return 0
+}
+
+func (m *ParameterSpec) GetCategoricalValues() []string {
+	if m != nil {
+		return m.CategoricalValues
+	}
+	return nil
+}
+
+func (m *ParameterSpec) GetDiscreteValues() []float64 {
+	if m != nil {
+		return m.DiscreteValues
+	}
+	return nil
+}
+
+func (m *ParameterSpec) GetScaleType() ParameterSpec_ScaleType {
+	if m != nil {
+		return m.ScaleType
+	}
+	return ParameterSpec_NONE
+}
+
+// Represents the result of a single hyperparameter tuning trial from a
+// training job. The TrainingOutput object that is returned on successful
+// completion of a training job with hyperparameter tuning includes a list
+// of HyperparameterOutput objects, one for each successful trial.
+type HyperparameterOutput struct {
+	// The trial id for these results.
+	TrialId string `protobuf:"bytes,1,opt,name=trial_id,json=trialId" json:"trial_id,omitempty"`
+	// The hyperparameters given to this trial.
+	Hyperparameters map[string]string `protobuf:"bytes,2,rep,name=hyperparameters" json:"hyperparameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	// The final objective metric seen for this trial.
+	FinalMetric *HyperparameterOutput_HyperparameterMetric `protobuf:"bytes,3,opt,name=final_metric,json=finalMetric" json:"final_metric,omitempty"`
+	// All recorded object metrics for this trial.
+	AllMetrics []*HyperparameterOutput_HyperparameterMetric `protobuf:"bytes,4,rep,name=all_metrics,json=allMetrics" json:"all_metrics,omitempty"`
+}
+
+func (m *HyperparameterOutput) Reset()                    { *m = HyperparameterOutput{} }
+func (m *HyperparameterOutput) String() string            { return proto.CompactTextString(m) }
+func (*HyperparameterOutput) ProtoMessage()               {}
+func (*HyperparameterOutput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+
+func (m *HyperparameterOutput) GetTrialId() string {
+	if m != nil {
+		return m.TrialId
+	}
+	return ""
+}
+
+func (m *HyperparameterOutput) GetHyperparameters() map[string]string {
+	if m != nil {
+		return m.Hyperparameters
+	}
+	return nil
+}
+
+func (m *HyperparameterOutput) GetFinalMetric() *HyperparameterOutput_HyperparameterMetric {
+	if m != nil {
+		return m.FinalMetric
+	}
+	return nil
+}
+
+func (m *HyperparameterOutput) GetAllMetrics() []*HyperparameterOutput_HyperparameterMetric {
+	if m != nil {
+		return m.AllMetrics
+	}
+	return nil
+}
+
+// An observed value of a metric.
+type HyperparameterOutput_HyperparameterMetric struct {
+	// The global training step for this metric.
+	TrainingStep int64 `protobuf:"varint,1,opt,name=training_step,json=trainingStep" json:"training_step,omitempty"`
+	// The objective value at this training step.
+	ObjectiveValue float64 `protobuf:"fixed64,2,opt,name=objective_value,json=objectiveValue" json:"objective_value,omitempty"`
+}
+
+func (m *HyperparameterOutput_HyperparameterMetric) Reset() {
+	*m = HyperparameterOutput_HyperparameterMetric{}
+}
+func (m *HyperparameterOutput_HyperparameterMetric) String() string { return proto.CompactTextString(m) }
+func (*HyperparameterOutput_HyperparameterMetric) ProtoMessage()    {}
+func (*HyperparameterOutput_HyperparameterMetric) Descriptor() ([]byte, []int) {
+	return fileDescriptor0, []int{3, 0}
+}
+
+func (m *HyperparameterOutput_HyperparameterMetric) GetTrainingStep() int64 {
+	if m != nil {
+		return m.TrainingStep
+	}
+	return 0
+}
+
+func (m *HyperparameterOutput_HyperparameterMetric) GetObjectiveValue() float64 {
+	if m != nil {
+		return m.ObjectiveValue
+	}
+	return 0
+}
+
+// Represents results of a training job. Output only.
+type TrainingOutput struct {
+	// The number of hyperparameter tuning trials that completed successfully.
+	// Only set for hyperparameter tuning jobs.
+	CompletedTrialCount int64 `protobuf:"varint,1,opt,name=completed_trial_count,json=completedTrialCount" json:"completed_trial_count,omitempty"`
+	// Results for individual Hyperparameter trials.
+	// Only set for hyperparameter tuning jobs.
+	Trials []*HyperparameterOutput `protobuf:"bytes,2,rep,name=trials" json:"trials,omitempty"`
+	// The amount of ML units consumed by the job.
+	ConsumedMlUnits float64 `protobuf:"fixed64,3,opt,name=consumed_ml_units,json=consumedMlUnits" json:"consumed_ml_units,omitempty"`
+	// Whether this job is a hyperparameter tuning job.
+	IsHyperparameterTuningJob bool `protobuf:"varint,4,opt,name=is_hyperparameter_tuning_job,json=isHyperparameterTuningJob" json:"is_hyperparameter_tuning_job,omitempty"`
+}
+
+func (m *TrainingOutput) Reset()                    { *m = TrainingOutput{} }
+func (m *TrainingOutput) String() string            { return proto.CompactTextString(m) }
+func (*TrainingOutput) ProtoMessage()               {}
+func (*TrainingOutput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+
+func (m *TrainingOutput) GetCompletedTrialCount() int64 {
+	if m != nil {
+		return m.CompletedTrialCount
+	}
+	return 0
+}
+
+func (m *TrainingOutput) GetTrials() []*HyperparameterOutput {
+	if m != nil {
+		return m.Trials
+	}
+	return nil
+}
+
+func (m *TrainingOutput) GetConsumedMlUnits() float64 {
+	if m != nil {
+		return m.ConsumedMlUnits
+	}
+	return 0
+}
+
+func (m *TrainingOutput) GetIsHyperparameterTuningJob() bool {
+	if m != nil {
+		return m.IsHyperparameterTuningJob
+	}
+	return false
+}
+
+// Represents input parameters for a prediction job.
+type PredictionInput struct {
+	// Required. The model or the version to use for prediction.
+	//
+	// Types that are valid to be assigned to ModelVersion:
+	//	*PredictionInput_ModelName
+	//	*PredictionInput_VersionName
+	//	*PredictionInput_Uri
+	ModelVersion isPredictionInput_ModelVersion `protobuf_oneof:"model_version"`
+	// Required. The format of the input data files.
+	DataFormat PredictionInput_DataFormat `protobuf:"varint,3,opt,name=data_format,json=dataFormat,enum=google.cloud.ml.v1.PredictionInput_DataFormat" json:"data_format,omitempty"`
+	// Required. The Google Cloud Storage location of the input data files.
+	// May contain wildcards.
+	InputPaths []string `protobuf:"bytes,4,rep,name=input_paths,json=inputPaths" json:"input_paths,omitempty"`
+	// Required. The output Google Cloud Storage location.
+	OutputPath string `protobuf:"bytes,5,opt,name=output_path,json=outputPath" json:"output_path,omitempty"`
+	// Optional. The maximum number of workers to be used for parallel processing.
+	// Defaults to 10 if not specified.
+	MaxWorkerCount int64 `protobuf:"varint,6,opt,name=max_worker_count,json=maxWorkerCount" json:"max_worker_count,omitempty"`
+	// Required. The Google Compute Engine region to run the prediction job in.
+	Region string `protobuf:"bytes,7,opt,name=region" json:"region,omitempty"`
+	// Optional. The Google Cloud ML runtime version to use for this batch
+	// prediction. If not set, Google Cloud ML will pick the runtime version used
+	// during the CreateVersion request for this model version, or choose the
+	// latest stable version when model version information is not available
+	// such as when the model is specified by uri.
+	RuntimeVersion string `protobuf:"bytes,8,opt,name=runtime_version,json=runtimeVersion" json:"runtime_version,omitempty"`
+}
+
+func (m *PredictionInput) Reset()                    { *m = PredictionInput{} }
+func (m *PredictionInput) String() string            { return proto.CompactTextString(m) }
+func (*PredictionInput) ProtoMessage()               {}
+func (*PredictionInput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+
+type isPredictionInput_ModelVersion interface {
+	isPredictionInput_ModelVersion()
+}
+
+type PredictionInput_ModelName struct {
+	ModelName string `protobuf:"bytes,1,opt,name=model_name,json=modelName,oneof"`
+}
+type PredictionInput_VersionName struct {
+	VersionName string `protobuf:"bytes,2,opt,name=version_name,json=versionName,oneof"`
+}
+type PredictionInput_Uri struct {
+	Uri string `protobuf:"bytes,9,opt,name=uri,oneof"`
+}
+
+func (*PredictionInput_ModelName) isPredictionInput_ModelVersion()   {}
+func (*PredictionInput_VersionName) isPredictionInput_ModelVersion() {}
+func (*PredictionInput_Uri) isPredictionInput_ModelVersion()         {}
+
+func (m *PredictionInput) GetModelVersion() isPredictionInput_ModelVersion {
+	if m != nil {
+		return m.ModelVersion
+	}
+	return nil
+}
+
+func (m *PredictionInput) GetModelName() string {
+	if x, ok := m.GetModelVersion().(*PredictionInput_ModelName); ok {
+		return x.ModelName
+	}
+	return ""
+}
+
+func (m *PredictionInput) GetVersionName() string {
+	if x, ok := m.GetModelVersion().(*PredictionInput_VersionName); ok {
+		return x.VersionName
+	}
+	return ""
+}
+
+func (m *PredictionInput) GetUri() string {
+	if x, ok := m.GetModelVersion().(*PredictionInput_Uri); ok {
+		return x.Uri
+	}
+	return ""
+}
+
+func (m *PredictionInput) GetDataFormat() PredictionInput_DataFormat {
+	if m != nil {
+		return m.DataFormat
+	}
+	return PredictionInput_DATA_FORMAT_UNSPECIFIED
+}
+
+func (m *PredictionInput) GetInputPaths() []string {
+	if m != nil {
+		return m.InputPaths
+	}
+	return nil
+}
+
+func (m *PredictionInput) GetOutputPath() string {
+	if m != nil {
+		return m.OutputPath
+	}
+	return ""
+}
+
+func (m *PredictionInput) GetMaxWorkerCount() int64 {
+	if m != nil {
+		return m.MaxWorkerCount
+	}
+	return 0
+}
+
+func (m *PredictionInput) GetRegion() string {
+	if m != nil {
+		return m.Region
+	}
+	return ""
+}
+
+func (m *PredictionInput) GetRuntimeVersion() string {
+	if m != nil {
+		return m.RuntimeVersion
+	}
+	return ""
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*PredictionInput) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _PredictionInput_OneofMarshaler, _PredictionInput_OneofUnmarshaler, _PredictionInput_OneofSizer, []interface{}{
+		(*PredictionInput_ModelName)(nil),
+		(*PredictionInput_VersionName)(nil),
+		(*PredictionInput_Uri)(nil),
+	}
+}
+
+func _PredictionInput_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*PredictionInput)
+	// model_version
+	switch x := m.ModelVersion.(type) {
+	case *PredictionInput_ModelName:
+		b.EncodeVarint(1<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.ModelName)
+	case *PredictionInput_VersionName:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.VersionName)
+	case *PredictionInput_Uri:
+		b.EncodeVarint(9<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.Uri)
+	case nil:
+	default:
+		return fmt.Errorf("PredictionInput.ModelVersion has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _PredictionInput_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*PredictionInput)
+	switch tag {
+	case 1: // model_version.model_name
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.ModelVersion = &PredictionInput_ModelName{x}
+		return true, err
+	case 2: // model_version.version_name
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.ModelVersion = &PredictionInput_VersionName{x}
+		return true, err
+	case 9: // model_version.uri
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.ModelVersion = &PredictionInput_Uri{x}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _PredictionInput_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*PredictionInput)
+	// model_version
+	switch x := m.ModelVersion.(type) {
+	case *PredictionInput_ModelName:
+		n += proto.SizeVarint(1<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.ModelName)))
+		n += len(x.ModelName)
+	case *PredictionInput_VersionName:
+		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.VersionName)))
+		n += len(x.VersionName)
+	case *PredictionInput_Uri:
+		n += proto.SizeVarint(9<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.Uri)))
+		n += len(x.Uri)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+// Represents results of a prediction job.
+type PredictionOutput struct {
+	// The output Google Cloud Storage location provided at the job creation time.
+	OutputPath string `protobuf:"bytes,1,opt,name=output_path,json=outputPath" json:"output_path,omitempty"`
+	// The number of generated predictions.
+	PredictionCount int64 `protobuf:"varint,2,opt,name=prediction_count,json=predictionCount" json:"prediction_count,omitempty"`
+	// The number of data instances which resulted in errors.
+	ErrorCount int64 `protobuf:"varint,3,opt,name=error_count,json=errorCount" json:"error_count,omitempty"`
+	// Node hours used by the batch prediction job.
+	NodeHours float64 `protobuf:"fixed64,4,opt,name=node_hours,json=nodeHours" json:"node_hours,omitempty"`
+}
+
+func (m *PredictionOutput) Reset()                    { *m = PredictionOutput{} }
+func (m *PredictionOutput) String() string            { return proto.CompactTextString(m) }
+func (*PredictionOutput) ProtoMessage()               {}
+func (*PredictionOutput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
+
+func (m *PredictionOutput) GetOutputPath() string {
+	if m != nil {
+		return m.OutputPath
+	}
+	return ""
+}
+
+func (m *PredictionOutput) GetPredictionCount() int64 {
+	if m != nil {
+		return m.PredictionCount
+	}
+	return 0
+}
+
+func (m *PredictionOutput) GetErrorCount() int64 {
+	if m != nil {
+		return m.ErrorCount
+	}
+	return 0
+}
+
+func (m *PredictionOutput) GetNodeHours() float64 {
+	if m != nil {
+		return m.NodeHours
+	}
+	return 0
+}
+
+// Represents a training or prediction job.
+type Job struct {
+	// Required. The user-specified id of the job.
+	JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId" json:"job_id,omitempty"`
+	// Required. Parameters to create a job.
+	//
+	// Types that are valid to be assigned to Input:
+	//	*Job_TrainingInput
+	//	*Job_PredictionInput
+	Input isJob_Input `protobuf_oneof:"input"`
+	// Output only. When the job was created.
+	CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime" json:"create_time,omitempty"`
+	// Output only. When the job processing was started.
+	StartTime *google_protobuf2.Timestamp `protobuf:"bytes,5,opt,name=start_time,json=startTime" json:"start_time,omitempty"`
+	// Output only. When the job processing was completed.
+	EndTime *google_protobuf2.Timestamp `protobuf:"bytes,6,opt,name=end_time,json=endTime" json:"end_time,omitempty"`
+	// Output only. The detailed state of a job.
+	State Job_State `protobuf:"varint,7,opt,name=state,enum=google.cloud.ml.v1.Job_State" json:"state,omitempty"`
+	// Output only. The details of a failure or a cancellation.
+	ErrorMessage string `protobuf:"bytes,8,opt,name=error_message,json=errorMessage" json:"error_message,omitempty"`
+	// Output only. The current result of the job.
+	//
+	// Types that are valid to be assigned to Output:
+	//	*Job_TrainingOutput
+	//	*Job_PredictionOutput
+	Output isJob_Output `protobuf_oneof:"output"`
+}
+
+func (m *Job) Reset()                    { *m = Job{} }
+func (m *Job) String() string            { return proto.CompactTextString(m) }
+func (*Job) ProtoMessage()               {}
+func (*Job) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
+
+type isJob_Input interface {
+	isJob_Input()
+}
+type isJob_Output interface {
+	isJob_Output()
+}
+
+type Job_TrainingInput struct {
+	TrainingInput *TrainingInput `protobuf:"bytes,2,opt,name=training_input,json=trainingInput,oneof"`
+}
+type Job_PredictionInput struct {
+	PredictionInput *PredictionInput `protobuf:"bytes,3,opt,name=prediction_input,json=predictionInput,oneof"`
+}
+type Job_TrainingOutput struct {
+	TrainingOutput *TrainingOutput `protobuf:"bytes,9,opt,name=training_output,json=trainingOutput,oneof"`
+}
+type Job_PredictionOutput struct {
+	PredictionOutput *PredictionOutput `protobuf:"bytes,10,opt,name=prediction_output,json=predictionOutput,oneof"`
+}
+
+func (*Job_TrainingInput) isJob_Input()     {}
+func (*Job_PredictionInput) isJob_Input()   {}
+func (*Job_TrainingOutput) isJob_Output()   {}
+func (*Job_PredictionOutput) isJob_Output() {}
+
+func (m *Job) GetInput() isJob_Input {
+	if m != nil {
+		return m.Input
+	}
+	return nil
+}
+func (m *Job) GetOutput() isJob_Output {
+	if m != nil {
+		return m.Output
+	}
+	return nil
+}
+
+func (m *Job) GetJobId() string {
+	if m != nil {
+		return m.JobId
+	}
+	return ""
+}
+
+func (m *Job) GetTrainingInput() *TrainingInput {
+	if x, ok := m.GetInput().(*Job_TrainingInput); ok {
+		return x.TrainingInput
+	}
+	return nil
+}
+
+func (m *Job) GetPredictionInput() *PredictionInput {
+	if x, ok := m.GetInput().(*Job_PredictionInput); ok {
+		return x.PredictionInput
+	}
+	return nil
+}
+
+func (m *Job) GetCreateTime() *google_protobuf2.Timestamp {
+	if m != nil {
+		return m.CreateTime
+	}
+	return nil
+}
+
+func (m *Job) GetStartTime() *google_protobuf2.Timestamp {
+	if m != nil {
+		return m.StartTime
+	}
+	return nil
+}
+
+func (m *Job) GetEndTime() *google_protobuf2.Timestamp {
+	if m != nil {
+		return m.EndTime
+	}
+	return nil
+}
+
+func (m *Job) GetState() Job_State {
+	if m != nil {
+		return m.State
+	}
+	return Job_STATE_UNSPECIFIED
+}
+
+func (m *Job) GetErrorMessage() string {
+	if m != nil {
+		return m.ErrorMessage
+	}
+	return ""
+}
+
+func (m *Job) GetTrainingOutput() *TrainingOutput {
+	if x, ok := m.GetOutput().(*Job_TrainingOutput); ok {
+		return x.TrainingOutput
+	}
+	return nil
+}
+
+func (m *Job) GetPredictionOutput() *PredictionOutput {
+	if x, ok := m.GetOutput().(*Job_PredictionOutput); ok {
+		return x.PredictionOutput
+	}
+	return nil
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*Job) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _Job_OneofMarshaler, _Job_OneofUnmarshaler, _Job_OneofSizer, []interface{}{
+		(*Job_TrainingInput)(nil),
+		(*Job_PredictionInput)(nil),
+		(*Job_TrainingOutput)(nil),
+		(*Job_PredictionOutput)(nil),
+	}
+}
+
+func _Job_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*Job)
+	// input
+	switch x := m.Input.(type) {
+	case *Job_TrainingInput:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.TrainingInput); err != nil {
+			return err
+		}
+	case *Job_PredictionInput:
+		b.EncodeVarint(3<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.PredictionInput); err != nil {
+			return err
+		}
+	case nil:
+	default:
+		return fmt.Errorf("Job.Input has unexpected type %T", x)
+	}
+	// output
+	switch x := m.Output.(type) {
+	case *Job_TrainingOutput:
+		b.EncodeVarint(9<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.TrainingOutput); err != nil {
+			return err
+		}
+	case *Job_PredictionOutput:
+		b.EncodeVarint(10<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.PredictionOutput); err != nil {
+			return err
+		}
+	case nil:
+	default:
+		return fmt.Errorf("Job.Output has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _Job_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*Job)
+	switch tag {
+	case 2: // input.training_input
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(TrainingInput)
+		err := b.DecodeMessage(msg)
+		m.Input = &Job_TrainingInput{msg}
+		return true, err
+	case 3: // input.prediction_input
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(PredictionInput)
+		err := b.DecodeMessage(msg)
+		m.Input = &Job_PredictionInput{msg}
+		return true, err
+	case 9: // output.training_output
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(TrainingOutput)
+		err := b.DecodeMessage(msg)
+		m.Output = &Job_TrainingOutput{msg}
+		return true, err
+	case 10: // output.prediction_output
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(PredictionOutput)
+		err := b.DecodeMessage(msg)
+		m.Output = &Job_PredictionOutput{msg}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _Job_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*Job)
+	// input
+	switch x := m.Input.(type) {
+	case *Job_TrainingInput:
+		s := proto.Size(x.TrainingInput)
+		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Job_PredictionInput:
+		s := proto.Size(x.PredictionInput)
+		n += proto.SizeVarint(3<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	// output
+	switch x := m.Output.(type) {
+	case *Job_TrainingOutput:
+		s := proto.Size(x.TrainingOutput)
+		n += proto.SizeVarint(9<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *Job_PredictionOutput:
+		s := proto.Size(x.PredictionOutput)
+		n += proto.SizeVarint(10<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+// Request message for the CreateJob method.
+type CreateJobRequest struct {
+	// Required. The project name.
+	//
+	// Authorization: requires `Editor` role on the specified project.
+	Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
+	// Required. The job to create.
+	Job *Job `protobuf:"bytes,2,opt,name=job" json:"job,omitempty"`
+}
+
+func (m *CreateJobRequest) Reset()                    { *m = CreateJobRequest{} }
+func (m *CreateJobRequest) String() string            { return proto.CompactTextString(m) }
+func (*CreateJobRequest) ProtoMessage()               {}
+func (*CreateJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
+
+func (m *CreateJobRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *CreateJobRequest) GetJob() *Job {
+	if m != nil {
+		return m.Job
+	}
+	return nil
+}
+
+// Request message for the ListJobs method.
+type ListJobsRequest struct {
+	// Required. The name of the project for which to list jobs.
+	//
+	// Authorization: requires `Viewer` role on the specified project.
+	Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
+	// Optional. Specifies the subset of jobs to retrieve.
+	Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"`
+	// Optional. A page token to request the next page of results.
+	//
+	// You get the token from the `next_page_token` field of the response from
+	// the previous call.
+	PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
+	// Optional. The number of jobs to retrieve per "page" of results. If there
+	// are more remaining results than this number, the response message will
+	// contain a valid value in the `next_page_token` field.
+	//
+	// The default value is 20, and the maximum page size is 100.
+	PageSize int32 `protobuf:"varint,5,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
+}
+
+func (m *ListJobsRequest) Reset()                    { *m = ListJobsRequest{} }
+func (m *ListJobsRequest) String() string            { return proto.CompactTextString(m) }
+func (*ListJobsRequest) ProtoMessage()               {}
+func (*ListJobsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
+
+func (m *ListJobsRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *ListJobsRequest) GetFilter() string {
+	if m != nil {
+		return m.Filter
+	}
+	return ""
+}
+
+func (m *ListJobsRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+func (m *ListJobsRequest) GetPageSize() int32 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+// Response message for the ListJobs method.
+type ListJobsResponse struct {
+	// The list of jobs.
+	Jobs []*Job `protobuf:"bytes,1,rep,name=jobs" json:"jobs,omitempty"`
+	// Optional. Pass this token as the `page_token` field of the request for a
+	// subsequent call.
+	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
+}
+
+func (m *ListJobsResponse) Reset()                    { *m = ListJobsResponse{} }
+func (m *ListJobsResponse) String() string            { return proto.CompactTextString(m) }
+func (*ListJobsResponse) ProtoMessage()               {}
+func (*ListJobsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
+
+func (m *ListJobsResponse) GetJobs() []*Job {
+	if m != nil {
+		return m.Jobs
+	}
+	return nil
+}
+
+func (m *ListJobsResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
+// Request message for the GetJob method.
+type GetJobRequest struct {
+	// Required. The name of the job to get the description of.
+	//
+	// Authorization: requires `Viewer` role on the parent project.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *GetJobRequest) Reset()                    { *m = GetJobRequest{} }
+func (m *GetJobRequest) String() string            { return proto.CompactTextString(m) }
+func (*GetJobRequest) ProtoMessage()               {}
+func (*GetJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
+
+func (m *GetJobRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Request message for the CancelJob method.
+type CancelJobRequest struct {
+	// Required. The name of the job to cancel.
+	//
+	// Authorization: requires `Editor` role on the parent project.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *CancelJobRequest) Reset()                    { *m = CancelJobRequest{} }
+func (m *CancelJobRequest) String() string            { return proto.CompactTextString(m) }
+func (*CancelJobRequest) ProtoMessage()               {}
+func (*CancelJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
+
+func (m *CancelJobRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterType((*TrainingInput)(nil), "google.cloud.ml.v1.TrainingInput")
+	proto.RegisterType((*HyperparameterSpec)(nil), "google.cloud.ml.v1.HyperparameterSpec")
+	proto.RegisterType((*ParameterSpec)(nil), "google.cloud.ml.v1.ParameterSpec")
+	proto.RegisterType((*HyperparameterOutput)(nil), "google.cloud.ml.v1.HyperparameterOutput")
+	proto.RegisterType((*HyperparameterOutput_HyperparameterMetric)(nil), "google.cloud.ml.v1.HyperparameterOutput.HyperparameterMetric")
+	proto.RegisterType((*TrainingOutput)(nil), "google.cloud.ml.v1.TrainingOutput")
+	proto.RegisterType((*PredictionInput)(nil), "google.cloud.ml.v1.PredictionInput")
+	proto.RegisterType((*PredictionOutput)(nil), "google.cloud.ml.v1.PredictionOutput")
+	proto.RegisterType((*Job)(nil), "google.cloud.ml.v1.Job")
+	proto.RegisterType((*CreateJobRequest)(nil), "google.cloud.ml.v1.CreateJobRequest")
+	proto.RegisterType((*ListJobsRequest)(nil), "google.cloud.ml.v1.ListJobsRequest")
+	proto.RegisterType((*ListJobsResponse)(nil), "google.cloud.ml.v1.ListJobsResponse")
+	proto.RegisterType((*GetJobRequest)(nil), "google.cloud.ml.v1.GetJobRequest")
+	proto.RegisterType((*CancelJobRequest)(nil), "google.cloud.ml.v1.CancelJobRequest")
+	proto.RegisterEnum("google.cloud.ml.v1.TrainingInput_ScaleTier", TrainingInput_ScaleTier_name, TrainingInput_ScaleTier_value)
+	proto.RegisterEnum("google.cloud.ml.v1.HyperparameterSpec_GoalType", HyperparameterSpec_GoalType_name, HyperparameterSpec_GoalType_value)
+	proto.RegisterEnum("google.cloud.ml.v1.ParameterSpec_ParameterType", ParameterSpec_ParameterType_name, ParameterSpec_ParameterType_value)
+	proto.RegisterEnum("google.cloud.ml.v1.ParameterSpec_ScaleType", ParameterSpec_ScaleType_name, ParameterSpec_ScaleType_value)
+	proto.RegisterEnum("google.cloud.ml.v1.PredictionInput_DataFormat", PredictionInput_DataFormat_name, PredictionInput_DataFormat_value)
+	proto.RegisterEnum("google.cloud.ml.v1.Job_State", Job_State_name, Job_State_value)
+}
+
+// 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
+
+// Client API for JobService service
+
+type JobServiceClient interface {
+	// Creates a training or a batch prediction job.
+	CreateJob(ctx context.Context, in *CreateJobRequest, opts ...grpc.CallOption) (*Job, error)
+	// Lists the jobs in the project.
+	ListJobs(ctx context.Context, in *ListJobsRequest, opts ...grpc.CallOption) (*ListJobsResponse, error)
+	// Describes a job.
+	GetJob(ctx context.Context, in *GetJobRequest, opts ...grpc.CallOption) (*Job, error)
+	// Cancels a running job.
+	CancelJob(ctx context.Context, in *CancelJobRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+}
+
+type jobServiceClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewJobServiceClient(cc *grpc.ClientConn) JobServiceClient {
+	return &jobServiceClient{cc}
+}
+
+func (c *jobServiceClient) CreateJob(ctx context.Context, in *CreateJobRequest, opts ...grpc.CallOption) (*Job, error) {
+	out := new(Job)
+	err := grpc.Invoke(ctx, "/google.cloud.ml.v1.JobService/CreateJob", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *jobServiceClient) ListJobs(ctx context.Context, in *ListJobsRequest, opts ...grpc.CallOption) (*ListJobsResponse, error) {
+	out := new(ListJobsResponse)
+	err := grpc.Invoke(ctx, "/google.cloud.ml.v1.JobService/ListJobs", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *jobServiceClient) GetJob(ctx context.Context, in *GetJobRequest, opts ...grpc.CallOption) (*Job, error) {
+	out := new(Job)
+	err := grpc.Invoke(ctx, "/google.cloud.ml.v1.JobService/GetJob", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *jobServiceClient) CancelJob(ctx context.Context, in *CancelJobRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+	out := new(google_protobuf1.Empty)
+	err := grpc.Invoke(ctx, "/google.cloud.ml.v1.JobService/CancelJob", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Server API for JobService service
+
+type JobServiceServer interface {
+	// Creates a training or a batch prediction job.
+	CreateJob(context.Context, *CreateJobRequest) (*Job, error)
+	// Lists the jobs in the project.
+	ListJobs(context.Context, *ListJobsRequest) (*ListJobsResponse, error)
+	// Describes a job.
+	GetJob(context.Context, *GetJobRequest) (*Job, error)
+	// Cancels a running job.
+	CancelJob(context.Context, *CancelJobRequest) (*google_protobuf1.Empty, error)
+}
+
+func RegisterJobServiceServer(s *grpc.Server, srv JobServiceServer) {
+	s.RegisterService(&_JobService_serviceDesc, srv)
+}
+
+func _JobService_CreateJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CreateJobRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(JobServiceServer).CreateJob(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.ml.v1.JobService/CreateJob",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(JobServiceServer).CreateJob(ctx, req.(*CreateJobRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _JobService_ListJobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListJobsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(JobServiceServer).ListJobs(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.ml.v1.JobService/ListJobs",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(JobServiceServer).ListJobs(ctx, req.(*ListJobsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _JobService_GetJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetJobRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(JobServiceServer).GetJob(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.ml.v1.JobService/GetJob",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(JobServiceServer).GetJob(ctx, req.(*GetJobRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _JobService_CancelJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CancelJobRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(JobServiceServer).CancelJob(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.ml.v1.JobService/CancelJob",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(JobServiceServer).CancelJob(ctx, req.(*CancelJobRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _JobService_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.cloud.ml.v1.JobService",
+	HandlerType: (*JobServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "CreateJob",
+			Handler:    _JobService_CreateJob_Handler,
+		},
+		{
+			MethodName: "ListJobs",
+			Handler:    _JobService_ListJobs_Handler,
+		},
+		{
+			MethodName: "GetJob",
+			Handler:    _JobService_GetJob_Handler,
+		},
+		{
+			MethodName: "CancelJob",
+			Handler:    _JobService_CancelJob_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/cloud/ml/v1/job_service.proto",
+}
+
+func init() { proto.RegisterFile("google/cloud/ml/v1/job_service.proto", fileDescriptor0) }
+
+var fileDescriptor0 = []byte{
+	// 2070 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xdb, 0x6e, 0x1b, 0xc9,
+	0x11, 0x15, 0xaf, 0x22, 0x8b, 0x12, 0x39, 0x6e, 0x5b, 0x36, 0x4d, 0xdb, 0x6b, 0x79, 0xe4, 0x38,
+	0xb2, 0x17, 0x21, 0x21, 0xed, 0x06, 0xc8, 0x7a, 0xb1, 0x48, 0x28, 0x72, 0x2c, 0x51, 0x10, 0x29,
+	0xa6, 0x39, 0x74, 0x36, 0x46, 0x90, 0x49, 0x93, 0x6c, 0xd3, 0x23, 0xcf, 0x2d, 0x33, 0x4d, 0x45,
+	0xda, 0x85, 0x81, 0x20, 0x08, 0xf2, 0x03, 0x79, 0x0f, 0xf2, 0x4d, 0xc9, 0x1f, 0x04, 0x01, 0xf2,
+	0x01, 0x79, 0x0e, 0x10, 0xf4, 0x85, 0xc3, 0x8b, 0x28, 0xd9, 0x48, 0xde, 0xd8, 0xa7, 0x4e, 0x55,
+	0x75, 0x57, 0x55, 0x57, 0xd7, 0x10, 0x9e, 0x8e, 0x7d, 0x7f, 0xec, 0xd0, 0xda, 0xd0, 0xf1, 0x27,
+	0xa3, 0x9a, 0xeb, 0xd4, 0xce, 0xf7, 0x6a, 0x67, 0xfe, 0xc0, 0x8a, 0x68, 0x78, 0x6e, 0x0f, 0x69,
+	0x35, 0x08, 0x7d, 0xe6, 0x23, 0x24, 0x59, 0x55, 0xc1, 0xaa, 0xba, 0x4e, 0xf5, 0x7c, 0xaf, 0xf2,
+	0x50, 0x69, 0x92, 0xc0, 0xae, 0x11, 0xcf, 0xf3, 0x19, 0x61, 0xb6, 0xef, 0x45, 0x52, 0xa3, 0xb2,
+	0x35, 0x2f, 0x9d, 0xb0, 0x77, 0x0a, 0x7e, 0xa0, 0x60, 0xb1, 0x1a, 0x4c, 0xde, 0xd6, 0xa8, 0x1b,
+	0xb0, 0x4b, 0x25, 0x7c, 0xbc, 0x2c, 0x64, 0xb6, 0x4b, 0x23, 0x46, 0xdc, 0x40, 0x12, 0xf4, 0x3f,
+	0x66, 0x60, 0xd3, 0x0c, 0x89, 0xed, 0xd9, 0xde, 0xb8, 0xe5, 0x05, 0x13, 0x86, 0x8e, 0x01, 0xa2,
+	0x21, 0x71, 0xa8, 0xc5, 0x6c, 0x1a, 0x96, 0x13, 0xdb, 0x89, 0xdd, 0xe2, 0xfe, 0xe7, 0xd5, 0xab,
+	0xbb, 0xad, 0x2e, 0xa8, 0x55, 0x7b, 0x5c, 0xc7, 0xb4, 0x69, 0x88, 0xf3, 0xd1, 0xf4, 0x27, 0x7a,
+	0x0c, 0x05, 0x97, 0x44, 0x8c, 0x86, 0x16, 0xbb, 0x0c, 0x68, 0x39, 0xb9, 0x9d, 0xd8, 0xcd, 0x63,
+	0x90, 0x90, 0x79, 0x19, 0x50, 0x4e, 0xf8, 0x9d, 0x1f, 0xbe, 0x9f, 0x12, 0x52, 0x92, 0x20, 0x21,
+	0x41, 0xd8, 0x87, 0xad, 0x80, 0x84, 0xc4, 0xa5, 0xdc, 0x08, 0x8f, 0xe0, 0x94, 0x9a, 0x16, 0xd4,
+	0xdb, 0xb1, 0xb0, 0x27, 0x64, 0x42, 0xe7, 0x09, 0x6c, 0x28, 0xa3, 0x43, 0x7f, 0xe2, 0xb1, 0x72,
+	0x66, 0x3b, 0xb1, 0x9b, 0xc2, 0xca, 0x51, 0x83, 0x43, 0xe8, 0x4b, 0xb8, 0x7b, 0xc5, 0xac, 0x24,
+	0x67, 0x05, 0xf9, 0xce, 0x92, 0x5d, 0xa9, 0xf5, 0x04, 0x36, 0x02, 0x32, 0x7c, 0x4f, 0xc6, 0xd4,
+	0x9a, 0x84, 0x76, 0x54, 0x5e, 0xdf, 0x4e, 0xed, 0xe6, 0x71, 0x41, 0x61, 0xfd, 0xd0, 0x8e, 0xd0,
+	0x0e, 0x6c, 0x06, 0x97, 0xec, 0x9d, 0xef, 0x59, 0xae, 0x3f, 0x9a, 0x38, 0xb4, 0x9c, 0x13, 0xfb,
+	0xdc, 0x90, 0x60, 0x5b, 0x60, 0x08, 0x41, 0x9a, 0x84, 0xe3, 0xa8, 0x0c, 0x42, 0x5f, 0xfc, 0x46,
+	0x5d, 0x28, 0xbd, 0xbb, 0x0c, 0x68, 0x18, 0x3b, 0x8e, 0xca, 0x1b, 0xdb, 0x89, 0xdd, 0xc2, 0xfe,
+	0xb3, 0x55, 0xb1, 0x3f, 0x5a, 0xa0, 0xf6, 0x02, 0x3a, 0xc4, 0xcb, 0xea, 0xe8, 0x2e, 0x64, 0x43,
+	0x3a, 0xb6, 0x7d, 0xaf, 0x5c, 0x14, 0x7b, 0x50, 0x2b, 0x74, 0x0f, 0xd6, 0x79, 0x39, 0x8e, 0xec,
+	0xb0, 0xac, 0x49, 0xc1, 0x99, 0x3f, 0x68, 0xda, 0x21, 0xfa, 0x21, 0x94, 0xc2, 0x89, 0xc7, 0x2b,
+	0xc4, 0x3a, 0xa7, 0x61, 0xc4, 0x35, 0x4b, 0x82, 0x50, 0x54, 0xf0, 0x6b, 0x89, 0xea, 0x5d, 0xc8,
+	0xc7, 0xe9, 0x46, 0x79, 0xc8, 0x1c, 0xd4, 0x7b, 0xad, 0x86, 0xb6, 0x86, 0x8a, 0x00, 0x3d, 0xb3,
+	0xde, 0x69, 0xd6, 0x71, 0xd3, 0xda, 0xd3, 0x12, 0x68, 0x13, 0xf2, 0x5d, 0x6c, 0xb4, 0x5b, 0xfd,
+	0xb6, 0xb5, 0xa7, 0xa5, 0xf8, 0x52, 0x30, 0xad, 0xc3, 0x6e, 0x5f, 0xcb, 0x22, 0x80, 0x6c, 0xa3,
+	0xdf, 0x33, 0x4f, 0xdb, 0x5a, 0x46, 0xff, 0x47, 0x12, 0xd0, 0xd5, 0x33, 0xa1, 0x06, 0xa4, 0xc7,
+	0x3e, 0x71, 0x54, 0x15, 0xd6, 0x3e, 0x2d, 0x12, 0xd5, 0x43, 0x9f, 0x38, 0xbc, 0x10, 0xb0, 0x50,
+	0x46, 0x5f, 0x41, 0x56, 0xc8, 0xa3, 0x72, 0x72, 0x3b, 0xb5, 0x5b, 0xd8, 0x7f, 0xb2, 0xca, 0x4c,
+	0x77, 0x21, 0x96, 0x4a, 0x01, 0x3d, 0x02, 0x70, 0xc9, 0x85, 0xc5, 0x42, 0x9b, 0x38, 0x91, 0xa8,
+	0xce, 0x0c, 0xce, 0xbb, 0xe4, 0xc2, 0x14, 0x00, 0xaa, 0xc2, 0x6d, 0x2e, 0xe6, 0x64, 0xc7, 0xa1,
+	0xce, 0x94, 0x97, 0x16, 0xbc, 0x5b, 0x2e, 0xb9, 0xe8, 0x2a, 0x89, 0xe2, 0xbf, 0x84, 0xfb, 0x8b,
+	0x49, 0xb2, 0x5c, 0xca, 0x42, 0x7b, 0x68, 0x31, 0x32, 0x16, 0x55, 0x9a, 0xc7, 0xf7, 0x16, 0x09,
+	0x6d, 0x21, 0x37, 0xc9, 0x58, 0xaf, 0x43, 0x6e, 0x7a, 0x2e, 0x74, 0x1f, 0xb6, 0x0e, 0x4f, 0xeb,
+	0x27, 0x96, 0xf9, 0xcb, 0xae, 0x61, 0xf5, 0x3b, 0xbd, 0xae, 0xd1, 0x68, 0xbd, 0x6a, 0x19, 0x4d,
+	0x6d, 0x0d, 0x6d, 0x40, 0xae, 0x5d, 0xff, 0xb6, 0xd5, 0x6e, 0xbd, 0x31, 0xb4, 0x84, 0x58, 0xb5,
+	0x3a, 0x72, 0x95, 0xd4, 0xff, 0x9a, 0x86, 0xcd, 0x85, 0x73, 0xa2, 0x1f, 0x40, 0x71, 0xb6, 0x17,
+	0x8f, 0xb8, 0x54, 0x44, 0x3a, 0x8f, 0x37, 0x63, 0xb4, 0x43, 0x5c, 0xca, 0xd3, 0x10, 0xdf, 0xb9,
+	0x6b, 0xd2, 0xb0, 0x60, 0x77, 0xb6, 0x92, 0x69, 0xe0, 0xca, 0xe8, 0x01, 0xe4, 0x5d, 0xdb, 0xb3,
+	0xce, 0x89, 0x33, 0x91, 0x9d, 0x20, 0x81, 0x73, 0xae, 0xed, 0xbd, 0xe6, 0x6b, 0x21, 0x24, 0x17,
+	0x4a, 0x98, 0x52, 0x42, 0x72, 0x21, 0x85, 0x3f, 0x02, 0x34, 0x24, 0x8c, 0x8e, 0xfd, 0xd0, 0x1e,
+	0x12, 0x47, 0x92, 0xa2, 0x72, 0x46, 0x5c, 0x9e, 0x5b, 0x73, 0x12, 0xc1, 0x8e, 0x78, 0x19, 0x8f,
+	0xec, 0x68, 0x18, 0x52, 0x46, 0xa7, 0xdc, 0xec, 0x76, 0x6a, 0x37, 0x81, 0x8b, 0x53, 0x58, 0x11,
+	0x67, 0x9d, 0x8e, 0x1f, 0x6e, 0xfd, 0xfa, 0x4e, 0xb7, 0x78, 0x38, 0x59, 0xfa, 0xfc, 0x60, 0xaa,
+	0xd3, 0x5d, 0x06, 0x54, 0x1f, 0xcf, 0x85, 0x56, 0xe4, 0xe8, 0x33, 0xa8, 0x74, 0xeb, 0xb8, 0xde,
+	0x36, 0x4c, 0x03, 0xaf, 0x4a, 0x14, 0x40, 0xb6, 0x79, 0xda, 0x3f, 0x38, 0xe1, 0x69, 0x2a, 0xc0,
+	0x7a, 0xab, 0x63, 0x1a, 0x87, 0x06, 0xd6, 0x92, 0xa8, 0x04, 0x85, 0x46, 0xdd, 0x34, 0x0e, 0x4f,
+	0x71, 0xab, 0x51, 0x3f, 0xd1, 0x52, 0x3c, 0x89, 0xcd, 0x56, 0xaf, 0x81, 0x0d, 0xd3, 0xd0, 0xd2,
+	0xfa, 0xaf, 0xa6, 0x77, 0x8f, 0x3b, 0xc9, 0x41, 0xba, 0x73, 0xda, 0x31, 0xb4, 0x35, 0xb4, 0x05,
+	0xb7, 0xfa, 0x9d, 0x96, 0x69, 0x9d, 0xb4, 0x3a, 0x46, 0x1d, 0x5b, 0xbd, 0x46, 0x5d, 0x58, 0x46,
+	0x50, 0x94, 0xf0, 0xe9, 0xa1, 0xc2, 0x92, 0xa8, 0x02, 0x77, 0x05, 0x86, 0x8d, 0xd7, 0x06, 0xee,
+	0x19, 0x73, 0xb2, 0x94, 0xfe, 0xa7, 0x34, 0xdc, 0x59, 0xbc, 0x51, 0xa7, 0x13, 0xc6, 0x5f, 0x85,
+	0xfb, 0x90, 0x13, 0xd5, 0x6d, 0xd9, 0x23, 0x55, 0x23, 0xeb, 0x62, 0xdd, 0x1a, 0xa1, 0xf1, 0xd5,
+	0xce, 0x25, 0x2f, 0xda, 0x37, 0x1f, 0xbf, 0xaf, 0xd2, 0xfa, 0x12, 0x18, 0x19, 0x1e, 0x0b, 0x2f,
+	0xaf, 0x36, 0xb4, 0xdf, 0xc0, 0xc6, 0x5b, 0xdb, 0x23, 0x8e, 0xba, 0x35, 0xa2, 0x4e, 0xfe, 0x77,
+	0x2f, 0xf2, 0x6a, 0xe1, 0x82, 0x30, 0x29, 0x17, 0xe8, 0xd7, 0x50, 0x20, 0xce, 0xd4, 0x3e, 0xbf,
+	0xc8, 0xa9, 0xff, 0xdf, 0x01, 0x10, 0x47, 0x99, 0x8f, 0x2a, 0xa3, 0xe5, 0xe8, 0x2a, 0xbf, 0x3b,
+	0xb0, 0xc9, 0xd4, 0x6b, 0x6a, 0x45, 0x8c, 0x06, 0x22, 0xc4, 0x29, 0xbc, 0x31, 0x05, 0x7b, 0x8c,
+	0x06, 0xbc, 0xae, 0xfd, 0xc1, 0x19, 0x1d, 0x32, 0xfb, 0x9c, 0x2e, 0x5c, 0xa3, 0x62, 0x0c, 0x8b,
+	0xc2, 0xae, 0x1c, 0x2c, 0x7b, 0x91, 0x01, 0x45, 0x1a, 0xa4, 0xde, 0xd3, 0x4b, 0x95, 0x3e, 0xfe,
+	0x13, 0xdd, 0x81, 0xcc, 0xcc, 0x50, 0x1e, 0xcb, 0xc5, 0xcb, 0xe4, 0x4f, 0x12, 0xfa, 0xbf, 0x13,
+	0x50, 0x9c, 0x3e, 0xf0, 0xaa, 0x04, 0xf6, 0x61, 0x6b, 0xe8, 0xbb, 0x81, 0x43, 0x19, 0x1d, 0xc9,
+	0x56, 0xa7, 0x9e, 0x4c, 0xb9, 0xd9, 0xdb, 0xb1, 0x50, 0x74, 0x3b, 0xf9, 0x62, 0xfe, 0x0c, 0xb2,
+	0xaa, 0x29, 0xca, 0x92, 0xd8, 0xfd, 0xd4, 0x58, 0x62, 0xa5, 0x87, 0x5e, 0xc0, 0xad, 0xa1, 0xef,
+	0x45, 0x13, 0x97, 0x8e, 0x2c, 0xd7, 0xb1, 0x26, 0x9e, 0xcd, 0x22, 0xd5, 0x21, 0x4a, 0x53, 0x41,
+	0xdb, 0xe9, 0x73, 0x18, 0xfd, 0x14, 0x1e, 0xda, 0x91, 0xb5, 0xd4, 0x62, 0xd9, 0x44, 0x84, 0xf5,
+	0xcc, 0x1f, 0x88, 0xfe, 0x95, 0xc3, 0xf7, 0xed, 0x68, 0xd1, 0xa3, 0x29, 0x18, 0xc7, 0xfe, 0x40,
+	0xff, 0x5b, 0x0a, 0x4a, 0xdd, 0x90, 0x8e, 0xec, 0x21, 0x1f, 0xbc, 0xe4, 0x3c, 0xf4, 0x18, 0xc0,
+	0xf5, 0x47, 0xd4, 0x99, 0xeb, 0x8f, 0x47, 0x6b, 0x38, 0x2f, 0x30, 0xd1, 0x1d, 0x77, 0x60, 0x43,
+	0x3d, 0x97, 0x92, 0x92, 0x54, 0x94, 0x82, 0x42, 0x05, 0x09, 0x41, 0x6a, 0x12, 0xda, 0xe5, 0xbc,
+	0x92, 0xf1, 0x05, 0x3a, 0x85, 0xc2, 0x88, 0x30, 0x62, 0xbd, 0xf5, 0x43, 0x97, 0x30, 0x71, 0xa8,
+	0xe2, 0x7e, 0x75, 0x65, 0x03, 0x5a, 0xdc, 0x53, 0xb5, 0x49, 0x18, 0x79, 0x25, 0xb4, 0x30, 0x8c,
+	0xe2, 0xdf, 0x7c, 0x9a, 0xb2, 0xb9, 0xdc, 0x0a, 0x08, 0x7b, 0x27, 0xcb, 0x37, 0x8f, 0x41, 0x40,
+	0x5d, 0x8e, 0x70, 0x82, 0x2f, 0xc2, 0x2b, 0x18, 0xea, 0xc9, 0x01, 0x09, 0x71, 0x06, 0xda, 0x05,
+	0x8d, 0xf7, 0xe1, 0x85, 0xf1, 0x49, 0x4e, 0x44, 0x45, 0x97, 0x5c, 0xfc, 0x62, 0x6e, 0x82, 0x9a,
+	0x4d, 0x17, 0xeb, 0x0b, 0xd3, 0xc5, 0x8a, 0x21, 0x22, 0xb7, 0x72, 0x88, 0x78, 0x0d, 0x30, 0x3b,
+	0x06, 0x7a, 0x00, 0xf7, 0x9a, 0x75, 0xb3, 0x6e, 0xbd, 0x3a, 0xc5, 0xed, 0xba, 0xb9, 0xd4, 0x2b,
+	0x73, 0x90, 0x36, 0x8d, 0x6f, 0x4d, 0x39, 0x51, 0x98, 0xaf, 0x2c, 0x6c, 0x34, 0x4e, 0x71, 0x53,
+	0x4b, 0xf2, 0xf6, 0x16, 0x2f, 0xad, 0xc3, 0x37, 0xad, 0xae, 0x96, 0x3a, 0x28, 0xc1, 0xa6, 0xcc,
+	0x97, 0x72, 0xaf, 0xff, 0x25, 0x01, 0xda, 0x2c, 0x80, 0xaa, 0x98, 0x97, 0x22, 0x91, 0xb8, 0x12,
+	0x89, 0xe7, 0xa0, 0x05, 0xb1, 0x92, 0x8a, 0x44, 0x52, 0x44, 0xa2, 0x34, 0xc3, 0x65, 0x28, 0x1e,
+	0x43, 0x81, 0x86, 0xa1, 0x3f, 0x8d, 0x57, 0x4a, 0xb0, 0x40, 0x40, 0x92, 0xf0, 0x08, 0xc0, 0xf3,
+	0x47, 0xd4, 0x7a, 0xe7, 0x4f, 0x42, 0x39, 0x1e, 0x24, 0x70, 0x9e, 0x23, 0x47, 0x1c, 0xd0, 0xff,
+	0x93, 0x81, 0xd4, 0xb1, 0x3f, 0x40, 0x5b, 0xc0, 0x27, 0xb1, 0x59, 0x87, 0xcd, 0x9c, 0xf9, 0x83,
+	0xd6, 0x08, 0x1d, 0x43, 0x31, 0x6e, 0x0e, 0x22, 0x97, 0x62, 0x1f, 0xd7, 0xcc, 0x31, 0x0b, 0x43,
+	0xf9, 0xd1, 0x1a, 0x8e, 0xfb, 0x8a, 0x2c, 0xe6, 0xee, 0xc2, 0xa9, 0xa4, 0x35, 0xd9, 0x46, 0x77,
+	0x3e, 0xa1, 0xee, 0x8e, 0xd6, 0xe6, 0x0f, 0x2f, 0x2d, 0x7e, 0x0d, 0x85, 0x61, 0x48, 0x09, 0xe3,
+	0xdf, 0x0b, 0xae, 0x1c, 0x11, 0x0a, 0xfb, 0x95, 0xa9, 0xb1, 0xe9, 0x77, 0x47, 0xd5, 0x9c, 0x7e,
+	0x77, 0x60, 0x90, 0x74, 0x0e, 0xa0, 0xaf, 0x00, 0x22, 0x46, 0x42, 0x26, 0x75, 0x33, 0x1f, 0xd5,
+	0xcd, 0x0b, 0xb6, 0x50, 0xfd, 0x31, 0xe4, 0xa8, 0x37, 0x92, 0x8a, 0xd9, 0x8f, 0x2a, 0xae, 0x53,
+	0x6f, 0x24, 0xd4, 0xbe, 0x80, 0x4c, 0xc4, 0x08, 0x9b, 0x3e, 0xf7, 0x8f, 0x56, 0x9d, 0xfa, 0xd8,
+	0x1f, 0x54, 0x7b, 0x9c, 0x84, 0x25, 0x97, 0xb7, 0x67, 0x99, 0x60, 0x97, 0x46, 0x11, 0x19, 0xc7,
+	0x43, 0xbd, 0x00, 0xdb, 0x12, 0x43, 0x6d, 0x28, 0xc5, 0x69, 0x92, 0x75, 0x24, 0x6e, 0x7b, 0x61,
+	0x5f, 0xbf, 0x29, 0x4f, 0xb2, 0x1c, 0x8f, 0x12, 0x38, 0xce, 0xb1, 0x2a, 0xd0, 0x1e, 0xdc, 0x9a,
+	0xcb, 0x94, 0x32, 0x08, 0xc2, 0xe0, 0xd3, 0x9b, 0x53, 0x15, 0x9b, 0x9c, 0x4b, 0xb5, 0xc4, 0xf4,
+	0xdf, 0x27, 0x20, 0x23, 0x4e, 0xc6, 0xe7, 0x85, 0x9e, 0x59, 0x37, 0x57, 0x4c, 0x25, 0x3f, 0xef,
+	0x1b, 0x7d, 0xa3, 0x19, 0x4f, 0xef, 0xdd, 0x3a, 0x6e, 0x75, 0x0e, 0xb5, 0x24, 0x1f, 0x52, 0x70,
+	0xbf, 0xd3, 0xe1, 0x0b, 0x31, 0xca, 0xf7, 0xfa, 0x8d, 0x86, 0x61, 0x34, 0x8d, 0xa6, 0x96, 0xe6,
+	0x6a, 0xaf, 0xea, 0xad, 0x13, 0xa3, 0xa9, 0x65, 0xf8, 0x47, 0x40, 0xa3, 0xde, 0x69, 0x18, 0x27,
+	0x27, 0x9c, 0x9a, 0xe5, 0x54, 0xb5, 0x36, 0x9a, 0xda, 0xfa, 0xc1, 0x3a, 0x64, 0x44, 0xd9, 0x1d,
+	0xe4, 0x20, 0x2b, 0x4f, 0xa5, 0xf7, 0x41, 0x6b, 0x88, 0x9a, 0x38, 0xf6, 0x07, 0x98, 0xfe, 0x76,
+	0x42, 0x23, 0xd1, 0x5e, 0x02, 0x12, 0x52, 0xf5, 0xba, 0xe4, 0xb1, 0x5a, 0xa1, 0xe7, 0x90, 0xe2,
+	0x9d, 0x5c, 0xde, 0x80, 0x7b, 0xd7, 0x64, 0x0f, 0x73, 0x8e, 0xfe, 0x01, 0x4a, 0x27, 0x76, 0xc4,
+	0x8e, 0xfd, 0x41, 0xf4, 0x31, 0xab, 0x77, 0x21, 0xfb, 0xd6, 0x76, 0x18, 0x0d, 0xd5, 0x43, 0xa8,
+	0x56, 0xfc, 0xe2, 0x06, 0xfc, 0x6b, 0x8f, 0xf9, 0xef, 0xa9, 0xa7, 0x3e, 0x39, 0xf3, 0x1c, 0x31,
+	0x39, 0xc0, 0xa7, 0x56, 0x21, 0x8e, 0xec, 0xef, 0x64, 0xf5, 0x66, 0x70, 0x8e, 0x03, 0x3d, 0xfb,
+	0x3b, 0x3e, 0x11, 0x6a, 0x33, 0xf7, 0x51, 0xe0, 0x7b, 0x11, 0x45, 0x9f, 0x43, 0xfa, 0xcc, 0x1f,
+	0x44, 0xe5, 0x84, 0x78, 0x0c, 0xaf, 0xdd, 0xbe, 0x20, 0xa1, 0x67, 0x50, 0xf2, 0xe8, 0x05, 0x6f,
+	0x50, 0xf1, 0x0e, 0xe4, 0xee, 0x36, 0x39, 0xdc, 0x9d, 0xee, 0x42, 0xdf, 0x81, 0xcd, 0x43, 0xca,
+	0xe6, 0x62, 0x87, 0x20, 0x3d, 0x37, 0xcb, 0x8b, 0xdf, 0xfa, 0x33, 0xd0, 0x1a, 0xc4, 0x1b, 0x52,
+	0xe7, 0x66, 0xde, 0xfe, 0xbf, 0x52, 0x00, 0xc7, 0xfe, 0xa0, 0x27, 0xff, 0xab, 0x40, 0x13, 0xc8,
+	0xc7, 0xa9, 0x41, 0x2b, 0xeb, 0x6e, 0x39, 0x73, 0x95, 0xeb, 0x4e, 0xa5, 0x3f, 0xff, 0xc3, 0xdf,
+	0xff, 0xf9, 0xe7, 0xe4, 0x8e, 0xfe, 0xb0, 0x76, 0xbe, 0x57, 0xfb, 0x5e, 0x46, 0xfe, 0x9b, 0x20,
+	0xf4, 0xf9, 0xec, 0x12, 0xd5, 0x5e, 0x7c, 0xa8, 0xf1, 0x53, 0xbf, 0xe4, 0xa9, 0x43, 0xdf, 0x43,
+	0x6e, 0x1a, 0x3b, 0xb4, 0xb2, 0x31, 0x2d, 0x25, 0xb6, 0xf2, 0xf4, 0x66, 0x92, 0x0c, 0xbf, 0xfe,
+	0x54, 0xec, 0xe0, 0x33, 0x74, 0xe3, 0x0e, 0xd0, 0x19, 0x64, 0x65, 0x3c, 0xd1, 0xca, 0x0e, 0xbb,
+	0x10, 0xeb, 0xeb, 0x4f, 0xbb, 0xe8, 0x8b, 0xc7, 0x76, 0xce, 0x93, 0x70, 0x54, 0x7b, 0xf1, 0x01,
+	0x5d, 0x42, 0x3e, 0x4e, 0xcb, 0x35, 0xf1, 0x5d, 0xca, 0x5a, 0xe5, 0xee, 0x95, 0x36, 0x67, 0xb8,
+	0x01, 0xbb, 0xd4, 0xab, 0xc2, 0xe1, 0xae, 0xbe, 0x73, 0x93, 0xc3, 0x97, 0x43, 0x61, 0xee, 0x65,
+	0xe2, 0xc5, 0x01, 0x85, 0xca, 0xd0, 0x77, 0xaf, 0xb8, 0x24, 0x81, 0x5d, 0x3d, 0xdf, 0x3b, 0x28,
+	0xcd, 0x8a, 0xa0, 0xcb, 0xfd, 0x74, 0x13, 0x6f, 0xbe, 0x54, 0xd4, 0xb1, 0xef, 0x10, 0x6f, 0x5c,
+	0xf5, 0xc3, 0x71, 0x6d, 0x4c, 0x3d, 0xb1, 0x8b, 0x9a, 0x14, 0x91, 0xc0, 0x8e, 0xe6, 0xff, 0xf6,
+	0xfa, 0xda, 0x75, 0x06, 0x59, 0x41, 0xf8, 0xe2, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x4c, 0x7b,
+	0x72, 0xd5, 0x16, 0x13, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/ml/v1/model_service.pb.go b/googleapis/cloud/ml/v1/model_service.pb.go
new file mode 100644
index 00000000..7caaf420
--- /dev/null
+++ b/googleapis/cloud/ml/v1/model_service.pb.go
@@ -0,0 +1,1050 @@
+// Code generated by protoc-gen-go.
+// source: google/cloud/ml/v1/model_service.proto
+// DO NOT EDIT!
+
+package ml
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import _ "google.golang.org/genproto/googleapis/api/serviceconfig"
+import google_longrunning "google.golang.org/genproto/googleapis/longrunning"
+import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp"
+
+import (
+	context "golang.org/x/net/context"
+	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
+
+// Represents a machine learning solution.
+//
+// A model can have multiple versions, each of which is a deployed, trained
+// model ready to receive prediction requests. The model itself is just a
+// container.
+type Model struct {
+	// Required. The name specified for the model when it was created.
+	//
+	// The model name must be unique within the project it is created in.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// Optional. The description specified for the model when it was created.
+	Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`
+	// Output only. The default version of the model. This version will be used to
+	// handle prediction requests that do not specify a version.
+	//
+	// You can change the default version by calling
+	// [projects.methods.versions.setDefault](/ml/reference/rest/v1/projects.models.versions/setDefault).
+	DefaultVersion *Version `protobuf:"bytes,3,opt,name=default_version,json=defaultVersion" json:"default_version,omitempty"`
+	// Optional. The list of regions where the model is going to be deployed.
+	// Currently only one region per model is supported.
+	// Defaults to 'us-central1' if nothing is set.
+	Regions []string `protobuf:"bytes,4,rep,name=regions" json:"regions,omitempty"`
+	// Optional. If true, enables StackDriver Logging for online prediction.
+	// Default is false.
+	OnlinePredictionLogging bool `protobuf:"varint,5,opt,name=online_prediction_logging,json=onlinePredictionLogging" json:"online_prediction_logging,omitempty"`
+}
+
+func (m *Model) Reset()                    { *m = Model{} }
+func (m *Model) String() string            { return proto.CompactTextString(m) }
+func (*Model) ProtoMessage()               {}
+func (*Model) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
+
+func (m *Model) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Model) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
+func (m *Model) GetDefaultVersion() *Version {
+	if m != nil {
+		return m.DefaultVersion
+	}
+	return nil
+}
+
+func (m *Model) GetRegions() []string {
+	if m != nil {
+		return m.Regions
+	}
+	return nil
+}
+
+func (m *Model) GetOnlinePredictionLogging() bool {
+	if m != nil {
+		return m.OnlinePredictionLogging
+	}
+	return false
+}
+
+// Represents a version of the model.
+//
+// Each version is a trained model deployed in the cloud, ready to handle
+// prediction requests. A model can have multiple versions. You can get
+// information about all of the versions of a given model by calling
+// [projects.models.versions.list](/ml/reference/rest/v1/projects.models.versions/list).
+type Version struct {
+	// Required.The name specified for the version when it was created.
+	//
+	// The version name must be unique within the model it is created in.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// Optional. The description specified for the version when it was created.
+	Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`
+	// Output only. If true, this version will be used to handle prediction
+	// requests that do not specify a version.
+	//
+	// You can change the default version by calling
+	// [projects.methods.versions.setDefault](/ml/reference/rest/v1/projects.models.versions/setDefault).
+	IsDefault bool `protobuf:"varint,3,opt,name=is_default,json=isDefault" json:"is_default,omitempty"`
+	// Required. The Google Cloud Storage location of the trained model used to
+	// create the version. See the
+	// [overview of model deployment](/ml/docs/concepts/deployment-overview) for
+	// more informaiton.
+	//
+	// When passing Version to
+	// [projects.models.versions.create](/ml/reference/rest/v1/projects.models.versions/create)
+	// the model service uses the specified location as the source of the model.
+	// Once deployed, the model version is hosted by the prediction service, so
+	// this location is useful only as a historical record.
+	DeploymentUri string `protobuf:"bytes,4,opt,name=deployment_uri,json=deploymentUri" json:"deployment_uri,omitempty"`
+	// Output only. The time the version was created.
+	CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime" json:"create_time,omitempty"`
+	// Output only. The time the version was last used for prediction.
+	LastUseTime *google_protobuf2.Timestamp `protobuf:"bytes,6,opt,name=last_use_time,json=lastUseTime" json:"last_use_time,omitempty"`
+	// Optional. The Google Cloud ML runtime version to use for this deployment.
+	// If not set, Google Cloud ML will choose a version.
+	RuntimeVersion string `protobuf:"bytes,8,opt,name=runtime_version,json=runtimeVersion" json:"runtime_version,omitempty"`
+	// Optional. Manually select the number of nodes to use for serving the
+	// model. If unset (i.e., by default), the number of nodes used to serve
+	// the model automatically scales with traffic. However, care should be
+	// taken to ramp up traffic according to the model's ability to scale. If
+	// your model needs to handle bursts of traffic beyond it's ability to
+	// scale, it is recommended you set this field appropriately.
+	ManualScaling *ManualScaling `protobuf:"bytes,9,opt,name=manual_scaling,json=manualScaling" json:"manual_scaling,omitempty"`
+}
+
+func (m *Version) Reset()                    { *m = Version{} }
+func (m *Version) String() string            { return proto.CompactTextString(m) }
+func (*Version) ProtoMessage()               {}
+func (*Version) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} }
+
+func (m *Version) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Version) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
+func (m *Version) GetIsDefault() bool {
+	if m != nil {
+		return m.IsDefault
+	}
+	return false
+}
+
+func (m *Version) GetDeploymentUri() string {
+	if m != nil {
+		return m.DeploymentUri
+	}
+	return ""
+}
+
+func (m *Version) GetCreateTime() *google_protobuf2.Timestamp {
+	if m != nil {
+		return m.CreateTime
+	}
+	return nil
+}
+
+func (m *Version) GetLastUseTime() *google_protobuf2.Timestamp {
+	if m != nil {
+		return m.LastUseTime
+	}
+	return nil
+}
+
+func (m *Version) GetRuntimeVersion() string {
+	if m != nil {
+		return m.RuntimeVersion
+	}
+	return ""
+}
+
+func (m *Version) GetManualScaling() *ManualScaling {
+	if m != nil {
+		return m.ManualScaling
+	}
+	return nil
+}
+
+// Options for manually scaling a model.
+type ManualScaling struct {
+	// The number of nodes to allocate for this model. These nodes are always up,
+	// starting from the time the model is deployed, so the cost of operating
+	// this model will be proportional to nodes * number of hours since
+	// deployment.
+	Nodes int32 `protobuf:"varint,1,opt,name=nodes" json:"nodes,omitempty"`
+}
+
+func (m *ManualScaling) Reset()                    { *m = ManualScaling{} }
+func (m *ManualScaling) String() string            { return proto.CompactTextString(m) }
+func (*ManualScaling) ProtoMessage()               {}
+func (*ManualScaling) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
+
+func (m *ManualScaling) GetNodes() int32 {
+	if m != nil {
+		return m.Nodes
+	}
+	return 0
+}
+
+// Request message for the CreateModel method.
+type CreateModelRequest struct {
+	// Required. The project name.
+	//
+	// Authorization: requires `Editor` role on the specified project.
+	Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
+	// Required. The model to create.
+	Model *Model `protobuf:"bytes,2,opt,name=model" json:"model,omitempty"`
+}
+
+func (m *CreateModelRequest) Reset()                    { *m = CreateModelRequest{} }
+func (m *CreateModelRequest) String() string            { return proto.CompactTextString(m) }
+func (*CreateModelRequest) ProtoMessage()               {}
+func (*CreateModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
+
+func (m *CreateModelRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *CreateModelRequest) GetModel() *Model {
+	if m != nil {
+		return m.Model
+	}
+	return nil
+}
+
+// Request message for the ListModels method.
+type ListModelsRequest struct {
+	// Required. The name of the project whose models are to be listed.
+	//
+	// Authorization: requires `Viewer` role on the specified project.
+	Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
+	// Optional. A page token to request the next page of results.
+	//
+	// You get the token from the `next_page_token` field of the response from
+	// the previous call.
+	PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
+	// Optional. The number of models to retrieve per "page" of results. If there
+	// are more remaining results than this number, the response message will
+	// contain a valid value in the `next_page_token` field.
+	//
+	// The default value is 20, and the maximum page size is 100.
+	PageSize int32 `protobuf:"varint,5,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
+}
+
+func (m *ListModelsRequest) Reset()                    { *m = ListModelsRequest{} }
+func (m *ListModelsRequest) String() string            { return proto.CompactTextString(m) }
+func (*ListModelsRequest) ProtoMessage()               {}
+func (*ListModelsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} }
+
+func (m *ListModelsRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *ListModelsRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+func (m *ListModelsRequest) GetPageSize() int32 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+// Response message for the ListModels method.
+type ListModelsResponse struct {
+	// The list of models.
+	Models []*Model `protobuf:"bytes,1,rep,name=models" json:"models,omitempty"`
+	// Optional. Pass this token as the `page_token` field of the request for a
+	// subsequent call.
+	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
+}
+
+func (m *ListModelsResponse) Reset()                    { *m = ListModelsResponse{} }
+func (m *ListModelsResponse) String() string            { return proto.CompactTextString(m) }
+func (*ListModelsResponse) ProtoMessage()               {}
+func (*ListModelsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} }
+
+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 ""
+}
+
+// Request message for the GetModel method.
+type GetModelRequest struct {
+	// Required. The name of the model.
+	//
+	// Authorization: requires `Viewer` role on the parent project.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *GetModelRequest) Reset()                    { *m = GetModelRequest{} }
+func (m *GetModelRequest) String() string            { return proto.CompactTextString(m) }
+func (*GetModelRequest) ProtoMessage()               {}
+func (*GetModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} }
+
+func (m *GetModelRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Request message for the DeleteModel method.
+type DeleteModelRequest struct {
+	// Required. The name of the model.
+	//
+	// Authorization: requires `Editor` role on the parent project.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *DeleteModelRequest) Reset()                    { *m = DeleteModelRequest{} }
+func (m *DeleteModelRequest) String() string            { return proto.CompactTextString(m) }
+func (*DeleteModelRequest) ProtoMessage()               {}
+func (*DeleteModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} }
+
+func (m *DeleteModelRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Uploads the provided trained model version to Cloud Machine Learning.
+type CreateVersionRequest struct {
+	// Required. The name of the model.
+	//
+	// Authorization: requires `Editor` role on the parent project.
+	Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
+	// Required. The version details.
+	Version *Version `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
+}
+
+func (m *CreateVersionRequest) Reset()                    { *m = CreateVersionRequest{} }
+func (m *CreateVersionRequest) String() string            { return proto.CompactTextString(m) }
+func (*CreateVersionRequest) ProtoMessage()               {}
+func (*CreateVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} }
+
+func (m *CreateVersionRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *CreateVersionRequest) GetVersion() *Version {
+	if m != nil {
+		return m.Version
+	}
+	return nil
+}
+
+// Request message for the ListVersions method.
+type ListVersionsRequest struct {
+	// Required. The name of the model for which to list the version.
+	//
+	// Authorization: requires `Viewer` role on the parent project.
+	Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
+	// Optional. A page token to request the next page of results.
+	//
+	// You get the token from the `next_page_token` field of the response from
+	// the previous call.
+	PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
+	// Optional. The number of versions to retrieve per "page" of results. If
+	// there are more remaining results than this number, the response message
+	// will contain a valid value in the `next_page_token` field.
+	//
+	// The default value is 20, and the maximum page size is 100.
+	PageSize int32 `protobuf:"varint,5,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
+}
+
+func (m *ListVersionsRequest) Reset()                    { *m = ListVersionsRequest{} }
+func (m *ListVersionsRequest) String() string            { return proto.CompactTextString(m) }
+func (*ListVersionsRequest) ProtoMessage()               {}
+func (*ListVersionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} }
+
+func (m *ListVersionsRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *ListVersionsRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+func (m *ListVersionsRequest) GetPageSize() int32 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+// Response message for the ListVersions method.
+type ListVersionsResponse struct {
+	// The list of versions.
+	Versions []*Version `protobuf:"bytes,1,rep,name=versions" json:"versions,omitempty"`
+	// Optional. Pass this token as the `page_token` field of the request for a
+	// subsequent call.
+	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
+}
+
+func (m *ListVersionsResponse) Reset()                    { *m = ListVersionsResponse{} }
+func (m *ListVersionsResponse) String() string            { return proto.CompactTextString(m) }
+func (*ListVersionsResponse) ProtoMessage()               {}
+func (*ListVersionsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} }
+
+func (m *ListVersionsResponse) GetVersions() []*Version {
+	if m != nil {
+		return m.Versions
+	}
+	return nil
+}
+
+func (m *ListVersionsResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
+// Request message for the GetVersion method.
+type GetVersionRequest struct {
+	// Required. The name of the version.
+	//
+	// Authorization: requires `Viewer` role on the parent project.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *GetVersionRequest) Reset()                    { *m = GetVersionRequest{} }
+func (m *GetVersionRequest) String() string            { return proto.CompactTextString(m) }
+func (*GetVersionRequest) ProtoMessage()               {}
+func (*GetVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} }
+
+func (m *GetVersionRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Request message for the DeleteVerionRequest method.
+type DeleteVersionRequest struct {
+	// Required. The name of the version. You can get the names of all the
+	// versions of a model by calling
+	// [projects.models.versions.list](/ml/reference/rest/v1/projects.models.versions/list).
+	//
+	// Authorization: requires `Editor` role on the parent project.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *DeleteVersionRequest) Reset()                    { *m = DeleteVersionRequest{} }
+func (m *DeleteVersionRequest) String() string            { return proto.CompactTextString(m) }
+func (*DeleteVersionRequest) ProtoMessage()               {}
+func (*DeleteVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} }
+
+func (m *DeleteVersionRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Request message for the SetDefaultVersion request.
+type SetDefaultVersionRequest struct {
+	// Required. The name of the version to make the default for the model. You
+	// can get the names of all the versions of a model by calling
+	// [projects.models.versions.list](/ml/reference/rest/v1/projects.models.versions/list).
+	//
+	// Authorization: requires `Editor` role on the parent project.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *SetDefaultVersionRequest) Reset()                    { *m = SetDefaultVersionRequest{} }
+func (m *SetDefaultVersionRequest) String() string            { return proto.CompactTextString(m) }
+func (*SetDefaultVersionRequest) ProtoMessage()               {}
+func (*SetDefaultVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} }
+
+func (m *SetDefaultVersionRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterType((*Model)(nil), "google.cloud.ml.v1.Model")
+	proto.RegisterType((*Version)(nil), "google.cloud.ml.v1.Version")
+	proto.RegisterType((*ManualScaling)(nil), "google.cloud.ml.v1.ManualScaling")
+	proto.RegisterType((*CreateModelRequest)(nil), "google.cloud.ml.v1.CreateModelRequest")
+	proto.RegisterType((*ListModelsRequest)(nil), "google.cloud.ml.v1.ListModelsRequest")
+	proto.RegisterType((*ListModelsResponse)(nil), "google.cloud.ml.v1.ListModelsResponse")
+	proto.RegisterType((*GetModelRequest)(nil), "google.cloud.ml.v1.GetModelRequest")
+	proto.RegisterType((*DeleteModelRequest)(nil), "google.cloud.ml.v1.DeleteModelRequest")
+	proto.RegisterType((*CreateVersionRequest)(nil), "google.cloud.ml.v1.CreateVersionRequest")
+	proto.RegisterType((*ListVersionsRequest)(nil), "google.cloud.ml.v1.ListVersionsRequest")
+	proto.RegisterType((*ListVersionsResponse)(nil), "google.cloud.ml.v1.ListVersionsResponse")
+	proto.RegisterType((*GetVersionRequest)(nil), "google.cloud.ml.v1.GetVersionRequest")
+	proto.RegisterType((*DeleteVersionRequest)(nil), "google.cloud.ml.v1.DeleteVersionRequest")
+	proto.RegisterType((*SetDefaultVersionRequest)(nil), "google.cloud.ml.v1.SetDefaultVersionRequest")
+}
+
+// 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
+
+// Client API for ModelService service
+
+type ModelServiceClient interface {
+	// Creates a model which will later contain one or more versions.
+	//
+	// You must add at least one version before you can request predictions from
+	// the model. Add versions by calling
+	// [projects.models.versions.create](/ml/reference/rest/v1/projects.models.versions/create).
+	CreateModel(ctx context.Context, in *CreateModelRequest, opts ...grpc.CallOption) (*Model, error)
+	// Lists the models in a project.
+	//
+	// Each project can contain multiple models, and each model can have multiple
+	// versions.
+	ListModels(ctx context.Context, in *ListModelsRequest, opts ...grpc.CallOption) (*ListModelsResponse, error)
+	// Gets information about a model, including its name, the description (if
+	// set), and the default version (if at least one version of the model has
+	// been deployed).
+	GetModel(ctx context.Context, in *GetModelRequest, opts ...grpc.CallOption) (*Model, error)
+	// Deletes a model.
+	//
+	// You can only delete a model if there are no versions in it. You can delete
+	// versions by calling
+	// [projects.models.versions.delete](/ml/reference/rest/v1/projects.models.versions/delete).
+	DeleteModel(ctx context.Context, in *DeleteModelRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error)
+	// Creates a new version of a model from a trained TensorFlow model.
+	//
+	// If the version created in the cloud by this call is the first deployed
+	// version of the specified model, it will be made the default version of the
+	// model. When you add a version to a model that already has one or more
+	// versions, the default version does not automatically change. If you want a
+	// new version to be the default, you must call
+	// [projects.models.versions.setDefault](/ml/reference/rest/v1/projects.models.versions/setDefault).
+	CreateVersion(ctx context.Context, in *CreateVersionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error)
+	// Gets basic information about all the versions of a model.
+	//
+	// If you expect that a model has a lot of versions, or if you need to handle
+	// only a limited number of results at a time, you can request that the list
+	// be retrieved in batches (called pages):
+	ListVersions(ctx context.Context, in *ListVersionsRequest, opts ...grpc.CallOption) (*ListVersionsResponse, error)
+	// Gets information about a model version.
+	//
+	// Models can have multiple versions. You can call
+	// [projects.models.versions.list](/ml/reference/rest/v1/projects.models.versions/list)
+	// to get the same information that this method returns for all of the
+	// versions of a model.
+	GetVersion(ctx context.Context, in *GetVersionRequest, opts ...grpc.CallOption) (*Version, error)
+	// Deletes a model version.
+	//
+	// Each model can have multiple versions deployed and in use at any given
+	// time. Use this method to remove a single version.
+	//
+	// Note: You cannot delete the version that is set as the default version
+	// of the model unless it is the only remaining version.
+	DeleteVersion(ctx context.Context, in *DeleteVersionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error)
+	// Designates a version to be the default for the model.
+	//
+	// The default version is used for prediction requests made against the model
+	// that don't specify a version.
+	//
+	// The first version to be created for a model is automatically set as the
+	// default. You must make any subsequent changes to the default version
+	// setting manually using this method.
+	SetDefaultVersion(ctx context.Context, in *SetDefaultVersionRequest, opts ...grpc.CallOption) (*Version, error)
+}
+
+type modelServiceClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewModelServiceClient(cc *grpc.ClientConn) ModelServiceClient {
+	return &modelServiceClient{cc}
+}
+
+func (c *modelServiceClient) CreateModel(ctx context.Context, in *CreateModelRequest, opts ...grpc.CallOption) (*Model, error) {
+	out := new(Model)
+	err := grpc.Invoke(ctx, "/google.cloud.ml.v1.ModelService/CreateModel", in, out, c.cc, 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 := grpc.Invoke(ctx, "/google.cloud.ml.v1.ModelService/ListModels", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *modelServiceClient) GetModel(ctx context.Context, in *GetModelRequest, opts ...grpc.CallOption) (*Model, error) {
+	out := new(Model)
+	err := grpc.Invoke(ctx, "/google.cloud.ml.v1.ModelService/GetModel", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *modelServiceClient) DeleteModel(ctx context.Context, in *DeleteModelRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) {
+	out := new(google_longrunning.Operation)
+	err := grpc.Invoke(ctx, "/google.cloud.ml.v1.ModelService/DeleteModel", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *modelServiceClient) CreateVersion(ctx context.Context, in *CreateVersionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) {
+	out := new(google_longrunning.Operation)
+	err := grpc.Invoke(ctx, "/google.cloud.ml.v1.ModelService/CreateVersion", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *modelServiceClient) ListVersions(ctx context.Context, in *ListVersionsRequest, opts ...grpc.CallOption) (*ListVersionsResponse, error) {
+	out := new(ListVersionsResponse)
+	err := grpc.Invoke(ctx, "/google.cloud.ml.v1.ModelService/ListVersions", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *modelServiceClient) GetVersion(ctx context.Context, in *GetVersionRequest, opts ...grpc.CallOption) (*Version, error) {
+	out := new(Version)
+	err := grpc.Invoke(ctx, "/google.cloud.ml.v1.ModelService/GetVersion", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *modelServiceClient) DeleteVersion(ctx context.Context, in *DeleteVersionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) {
+	out := new(google_longrunning.Operation)
+	err := grpc.Invoke(ctx, "/google.cloud.ml.v1.ModelService/DeleteVersion", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *modelServiceClient) SetDefaultVersion(ctx context.Context, in *SetDefaultVersionRequest, opts ...grpc.CallOption) (*Version, error) {
+	out := new(Version)
+	err := grpc.Invoke(ctx, "/google.cloud.ml.v1.ModelService/SetDefaultVersion", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Server API for ModelService service
+
+type ModelServiceServer interface {
+	// Creates a model which will later contain one or more versions.
+	//
+	// You must add at least one version before you can request predictions from
+	// the model. Add versions by calling
+	// [projects.models.versions.create](/ml/reference/rest/v1/projects.models.versions/create).
+	CreateModel(context.Context, *CreateModelRequest) (*Model, error)
+	// Lists the models in a project.
+	//
+	// Each project can contain multiple models, and each model can have multiple
+	// versions.
+	ListModels(context.Context, *ListModelsRequest) (*ListModelsResponse, error)
+	// Gets information about a model, including its name, the description (if
+	// set), and the default version (if at least one version of the model has
+	// been deployed).
+	GetModel(context.Context, *GetModelRequest) (*Model, error)
+	// Deletes a model.
+	//
+	// You can only delete a model if there are no versions in it. You can delete
+	// versions by calling
+	// [projects.models.versions.delete](/ml/reference/rest/v1/projects.models.versions/delete).
+	DeleteModel(context.Context, *DeleteModelRequest) (*google_longrunning.Operation, error)
+	// Creates a new version of a model from a trained TensorFlow model.
+	//
+	// If the version created in the cloud by this call is the first deployed
+	// version of the specified model, it will be made the default version of the
+	// model. When you add a version to a model that already has one or more
+	// versions, the default version does not automatically change. If you want a
+	// new version to be the default, you must call
+	// [projects.models.versions.setDefault](/ml/reference/rest/v1/projects.models.versions/setDefault).
+	CreateVersion(context.Context, *CreateVersionRequest) (*google_longrunning.Operation, error)
+	// Gets basic information about all the versions of a model.
+	//
+	// If you expect that a model has a lot of versions, or if you need to handle
+	// only a limited number of results at a time, you can request that the list
+	// be retrieved in batches (called pages):
+	ListVersions(context.Context, *ListVersionsRequest) (*ListVersionsResponse, error)
+	// Gets information about a model version.
+	//
+	// Models can have multiple versions. You can call
+	// [projects.models.versions.list](/ml/reference/rest/v1/projects.models.versions/list)
+	// to get the same information that this method returns for all of the
+	// versions of a model.
+	GetVersion(context.Context, *GetVersionRequest) (*Version, error)
+	// Deletes a model version.
+	//
+	// Each model can have multiple versions deployed and in use at any given
+	// time. Use this method to remove a single version.
+	//
+	// Note: You cannot delete the version that is set as the default version
+	// of the model unless it is the only remaining version.
+	DeleteVersion(context.Context, *DeleteVersionRequest) (*google_longrunning.Operation, error)
+	// Designates a version to be the default for the model.
+	//
+	// The default version is used for prediction requests made against the model
+	// that don't specify a version.
+	//
+	// The first version to be created for a model is automatically set as the
+	// default. You must make any subsequent changes to the default version
+	// setting manually using this method.
+	SetDefaultVersion(context.Context, *SetDefaultVersionRequest) (*Version, error)
+}
+
+func RegisterModelServiceServer(s *grpc.Server, srv ModelServiceServer) {
+	s.RegisterService(&_ModelService_serviceDesc, srv)
+}
+
+func _ModelService_CreateModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CreateModelRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ModelServiceServer).CreateModel(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.ml.v1.ModelService/CreateModel",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ModelServiceServer).CreateModel(ctx, req.(*CreateModelRequest))
+	}
+	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.ml.v1.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_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.ml.v1.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_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.ml.v1.ModelService/DeleteModel",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ModelServiceServer).DeleteModel(ctx, req.(*DeleteModelRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ModelService_CreateVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CreateVersionRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ModelServiceServer).CreateVersion(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.ml.v1.ModelService/CreateVersion",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ModelServiceServer).CreateVersion(ctx, req.(*CreateVersionRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ModelService_ListVersions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListVersionsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ModelServiceServer).ListVersions(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.ml.v1.ModelService/ListVersions",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ModelServiceServer).ListVersions(ctx, req.(*ListVersionsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ModelService_GetVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetVersionRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ModelServiceServer).GetVersion(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.ml.v1.ModelService/GetVersion",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ModelServiceServer).GetVersion(ctx, req.(*GetVersionRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ModelService_DeleteVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeleteVersionRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ModelServiceServer).DeleteVersion(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.ml.v1.ModelService/DeleteVersion",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ModelServiceServer).DeleteVersion(ctx, req.(*DeleteVersionRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ModelService_SetDefaultVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SetDefaultVersionRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ModelServiceServer).SetDefaultVersion(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.ml.v1.ModelService/SetDefaultVersion",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ModelServiceServer).SetDefaultVersion(ctx, req.(*SetDefaultVersionRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _ModelService_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.cloud.ml.v1.ModelService",
+	HandlerType: (*ModelServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "CreateModel",
+			Handler:    _ModelService_CreateModel_Handler,
+		},
+		{
+			MethodName: "ListModels",
+			Handler:    _ModelService_ListModels_Handler,
+		},
+		{
+			MethodName: "GetModel",
+			Handler:    _ModelService_GetModel_Handler,
+		},
+		{
+			MethodName: "DeleteModel",
+			Handler:    _ModelService_DeleteModel_Handler,
+		},
+		{
+			MethodName: "CreateVersion",
+			Handler:    _ModelService_CreateVersion_Handler,
+		},
+		{
+			MethodName: "ListVersions",
+			Handler:    _ModelService_ListVersions_Handler,
+		},
+		{
+			MethodName: "GetVersion",
+			Handler:    _ModelService_GetVersion_Handler,
+		},
+		{
+			MethodName: "DeleteVersion",
+			Handler:    _ModelService_DeleteVersion_Handler,
+		},
+		{
+			MethodName: "SetDefaultVersion",
+			Handler:    _ModelService_SetDefaultVersion_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/cloud/ml/v1/model_service.proto",
+}
+
+func init() { proto.RegisterFile("google/cloud/ml/v1/model_service.proto", fileDescriptor1) }
+
+var fileDescriptor1 = []byte{
+	// 996 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xcf, 0x6f, 0xe3, 0x44,
+	0x14, 0x96, 0xdb, 0xa6, 0x4d, 0x5e, 0x36, 0xad, 0x3a, 0x14, 0xc8, 0x66, 0x29, 0x04, 0xaf, 0xda,
+	0x86, 0x00, 0xb6, 0x52, 0x8a, 0x10, 0x59, 0x01, 0xd2, 0x52, 0x69, 0x39, 0xec, 0x8a, 0xca, 0xdd,
+	0xe5, 0x80, 0x84, 0x2c, 0x6f, 0x32, 0x6b, 0x06, 0xec, 0x19, 0xe3, 0x19, 0x07, 0x58, 0x58, 0x21,
+	0xc1, 0x91, 0x23, 0xdc, 0xf9, 0xa3, 0x38, 0x71, 0xe7, 0xc6, 0x99, 0x3b, 0x9a, 0x1f, 0x4e, 0xed,
+	0xc4, 0x89, 0x0b, 0x12, 0x37, 0xcf, 0x9b, 0xef, 0xcd, 0xfb, 0xe6, 0x7d, 0xef, 0xbd, 0x31, 0x1c,
+	0x87, 0x8c, 0x85, 0x11, 0x76, 0x27, 0x11, 0xcb, 0xa6, 0x6e, 0x1c, 0xb9, 0xb3, 0x91, 0x1b, 0xb3,
+	0x29, 0x8e, 0x7c, 0x8e, 0xd3, 0x19, 0x99, 0x60, 0x27, 0x49, 0x99, 0x60, 0x08, 0x69, 0x9c, 0xa3,
+	0x70, 0x4e, 0x1c, 0x39, 0xb3, 0x51, 0xef, 0x25, 0xe3, 0x1b, 0x24, 0xc4, 0x0d, 0x28, 0x65, 0x22,
+	0x10, 0x84, 0x51, 0xae, 0x3d, 0x7a, 0xcf, 0x17, 0x77, 0x33, 0xf1, 0xb9, 0x31, 0xdf, 0x36, 0xe6,
+	0x88, 0xd1, 0x30, 0xcd, 0x28, 0x25, 0x34, 0x74, 0x59, 0x82, 0xd3, 0x92, 0xef, 0x2b, 0x06, 0xa4,
+	0x56, 0x8f, 0xb3, 0x27, 0xae, 0x20, 0x31, 0xe6, 0x22, 0x88, 0x13, 0x0d, 0xb0, 0xff, 0xb0, 0xa0,
+	0xf1, 0x40, 0xd2, 0x44, 0x08, 0xb6, 0x68, 0x10, 0xe3, 0xae, 0xd5, 0xb7, 0x06, 0x2d, 0x4f, 0x7d,
+	0xa3, 0x3e, 0xb4, 0xa7, 0x98, 0x4f, 0x52, 0x92, 0xc8, 0x43, 0xbb, 0x1b, 0x6a, 0xab, 0x68, 0x42,
+	0xe7, 0xb0, 0x37, 0xc5, 0x4f, 0x82, 0x2c, 0x12, 0xfe, 0x0c, 0xa7, 0x5c, 0xa2, 0x36, 0xfb, 0xd6,
+	0xa0, 0x7d, 0x7a, 0xcb, 0x59, 0xbe, 0xa8, 0xf3, 0x89, 0x86, 0x78, 0xbb, 0xc6, 0xc7, 0xac, 0x51,
+	0x17, 0x76, 0x52, 0x1c, 0x4a, 0xde, 0xdd, 0xad, 0xfe, 0xe6, 0xa0, 0xe5, 0xe5, 0x4b, 0x34, 0x86,
+	0x9b, 0x8c, 0x46, 0x84, 0x62, 0x3f, 0x49, 0xf1, 0x94, 0x4c, 0x64, 0x50, 0x3f, 0x62, 0x61, 0x48,
+	0x68, 0xd8, 0x6d, 0xf4, 0xad, 0x41, 0xd3, 0x7b, 0x51, 0x03, 0x2e, 0xe6, 0xfb, 0xf7, 0xf5, 0xb6,
+	0xfd, 0xf7, 0x06, 0xec, 0xe4, 0x11, 0xfe, 0xdb, 0xed, 0x0e, 0x01, 0x08, 0xf7, 0x0d, 0x59, 0x75,
+	0xb1, 0xa6, 0xd7, 0x22, 0xfc, 0x5c, 0x1b, 0xd0, 0x11, 0xec, 0x4e, 0x71, 0x12, 0xb1, 0x6f, 0x63,
+	0x4c, 0x85, 0x9f, 0xa5, 0xa4, 0xbb, 0xa5, 0xce, 0xe8, 0x5c, 0x59, 0x1f, 0xa5, 0x04, 0xdd, 0x81,
+	0xf6, 0x24, 0xc5, 0x81, 0xc0, 0xbe, 0xcc, 0xbe, 0x62, 0xdd, 0x3e, 0xed, 0xe5, 0xf9, 0xc9, 0xa5,
+	0x71, 0x1e, 0xe6, 0xd2, 0x78, 0xa0, 0xe1, 0xd2, 0x80, 0xde, 0x87, 0x4e, 0x14, 0x70, 0xe1, 0x67,
+	0xdc, 0xb8, 0x6f, 0xd7, 0xba, 0xb7, 0xa5, 0xc3, 0x23, 0xae, 0xfd, 0x4f, 0x60, 0x2f, 0xcd, 0xa8,
+	0xf4, 0x9c, 0x0b, 0xd4, 0x54, 0x24, 0x77, 0x8d, 0x39, 0xcf, 0xd0, 0x47, 0xb0, 0x1b, 0x07, 0x34,
+	0x0b, 0x22, 0x9f, 0x4f, 0x82, 0x48, 0xa6, 0xb7, 0xa5, 0x22, 0xbd, 0x5a, 0x25, 0xe4, 0x03, 0x85,
+	0xbc, 0xd4, 0x40, 0xaf, 0x13, 0x17, 0x97, 0xf6, 0x11, 0x74, 0x4a, 0xfb, 0xe8, 0x00, 0x1a, 0x94,
+	0x4d, 0x31, 0x57, 0xd9, 0x6f, 0x78, 0x7a, 0x61, 0x7f, 0x06, 0xe8, 0x43, 0x75, 0x4f, 0x55, 0x7f,
+	0x1e, 0xfe, 0x2a, 0xc3, 0x5c, 0xa0, 0x17, 0x60, 0x3b, 0x09, 0x52, 0x4c, 0x85, 0x91, 0xca, 0xac,
+	0x90, 0x0b, 0x0d, 0xd5, 0x4e, 0x4a, 0xa6, 0xf6, 0xe9, 0xcd, 0x4a, 0x56, 0xea, 0x20, 0x8d, 0xb3,
+	0x43, 0xd8, 0xbf, 0x4f, 0xb8, 0x50, 0x36, 0x5e, 0x77, 0xfa, 0x21, 0x40, 0x12, 0x84, 0xd8, 0x17,
+	0xec, 0x4b, 0x4c, 0x8d, 0x8a, 0x2d, 0x69, 0x79, 0x28, 0x0d, 0xe8, 0x16, 0xa8, 0x85, 0xcf, 0xc9,
+	0x53, 0xad, 0x5f, 0xc3, 0x6b, 0x4a, 0xc3, 0x25, 0x79, 0x8a, 0x6d, 0x06, 0xa8, 0x18, 0x88, 0x27,
+	0x8c, 0x72, 0x8c, 0x46, 0xb0, 0xad, 0x78, 0xc8, 0x4b, 0x6f, 0xae, 0x27, 0x6c, 0x80, 0xe8, 0x18,
+	0xf6, 0x28, 0xfe, 0x46, 0xf8, 0x05, 0x26, 0xba, 0x26, 0x3b, 0xd2, 0x7c, 0x91, 0xb3, 0xb1, 0x8f,
+	0x60, 0xef, 0x1e, 0x16, 0xa5, 0xac, 0x55, 0x94, 0xb7, 0x3d, 0x00, 0x74, 0x8e, 0x23, 0xbc, 0x90,
+	0xdf, 0x2a, 0x24, 0x86, 0x03, 0xad, 0x44, 0xde, 0x9f, 0x35, 0xd9, 0x7a, 0x1b, 0x76, 0xf2, 0x5a,
+	0xda, 0xa8, 0x6f, 0xf6, 0x1c, 0x6b, 0x13, 0x78, 0x4e, 0x26, 0xca, 0xd8, 0xff, 0x57, 0x4d, 0xbe,
+	0x86, 0x83, 0x72, 0x28, 0xa3, 0xca, 0x3b, 0xd0, 0x34, 0x6c, 0x72, 0x5d, 0xd6, 0x52, 0x9f, 0x83,
+	0xaf, 0xad, 0xcd, 0x09, 0xec, 0xdf, 0xc3, 0x62, 0x21, 0x8f, 0x55, 0x39, 0x1f, 0xc2, 0x81, 0x56,
+	0xe7, 0x1a, 0x58, 0x07, 0xba, 0x97, 0x58, 0x9c, 0x97, 0x66, 0xe6, 0x1a, 0xfc, 0xe9, 0x5f, 0x2d,
+	0xb8, 0xa1, 0x44, 0xbf, 0xd4, 0x4f, 0x0f, 0xfa, 0x01, 0xda, 0x85, 0x56, 0x43, 0xc7, 0x55, 0x77,
+	0x5e, 0xee, 0xc5, 0xde, 0xea, 0x9a, 0xb5, 0xdf, 0xfc, 0xf1, 0xf7, 0x3f, 0x7f, 0xd9, 0x38, 0xb1,
+	0x5f, 0x96, 0xef, 0xdc, 0x77, 0x5a, 0xb1, 0xf7, 0x92, 0x94, 0x7d, 0x81, 0x27, 0x82, 0xbb, 0xc3,
+	0x67, 0xfa, 0xed, 0xe3, 0x63, 0xdd, 0x8c, 0xe8, 0x27, 0x0b, 0xe0, 0xaa, 0x49, 0xd0, 0x51, 0xd5,
+	0xc1, 0x4b, 0xdd, 0xda, 0x3b, 0xae, 0x83, 0x69, 0x55, 0xed, 0x63, 0x45, 0xa6, 0x8f, 0x6a, 0xc8,
+	0xa0, 0x14, 0x9a, 0x79, 0xe3, 0xa0, 0xdb, 0x55, 0x67, 0x2f, 0xb4, 0xd5, 0xba, 0x04, 0x94, 0x63,
+	0xca, 0xb4, 0x17, 0x22, 0x9a, 0x80, 0xee, 0xf0, 0x19, 0xfa, 0x1e, 0xda, 0x85, 0x2e, 0xac, 0x4e,
+	0xfd, 0x72, 0x9b, 0xf6, 0x0e, 0x73, 0x5c, 0xe1, 0x79, 0x77, 0x3e, 0xce, 0x9f, 0xf7, 0x3c, 0xfa,
+	0xb0, 0x2e, 0xfa, 0xaf, 0x16, 0x74, 0x4a, 0xad, 0x8d, 0x06, 0xab, 0xb5, 0x2f, 0x57, 0x56, 0x1d,
+	0x85, 0xb1, 0xa2, 0x70, 0x66, 0xbf, 0x56, 0x9d, 0xf4, 0x2b, 0x12, 0x6e, 0xde, 0x44, 0xe3, 0x7c,
+	0x12, 0x48, 0x5a, 0x37, 0x8a, 0xfd, 0x89, 0x4e, 0x56, 0x29, 0xbd, 0x30, 0x2c, 0x7a, 0x83, 0x7a,
+	0xa0, 0x29, 0x8a, 0x91, 0xe2, 0xf7, 0x3a, 0xba, 0x3e, 0x3f, 0x55, 0xa5, 0x57, 0xdd, 0x5b, 0x5d,
+	0xa5, 0x4b, 0xdd, 0xdd, 0x5b, 0x37, 0x41, 0x16, 0x58, 0xac, 0x12, 0x6a, 0x4e, 0x41, 0x6a, 0xf6,
+	0xb3, 0x05, 0x9d, 0xd2, 0x68, 0xa8, 0xd6, 0xac, 0x6a, 0x7a, 0xd4, 0x69, 0x66, 0xd8, 0x0c, 0xff,
+	0x05, 0x9b, 0xdf, 0x2c, 0xd8, 0x5f, 0x1a, 0x3e, 0xe8, 0x8d, 0x2a, 0x46, 0xab, 0x66, 0xd4, 0xfa,
+	0x0c, 0x7d, 0xa0, 0x38, 0xbd, 0x6b, 0x9f, 0x5d, 0x9b, 0xd3, 0x98, 0xcf, 0x03, 0x8d, 0xad, 0xe1,
+	0xdd, 0x10, 0x7a, 0x13, 0x16, 0x2f, 0x85, 0x08, 0x12, 0xe2, 0xcc, 0x46, 0x77, 0xf7, 0x8b, 0x83,
+	0xf0, 0x42, 0xfe, 0x2c, 0x5d, 0x58, 0x9f, 0x9e, 0x19, 0x70, 0xc8, 0xa2, 0x80, 0x86, 0x0e, 0x4b,
+	0x43, 0x37, 0xc4, 0x54, 0xfd, 0x4a, 0xb9, 0x7a, 0x2b, 0x48, 0x08, 0x2f, 0xfe, 0xcb, 0xdf, 0x89,
+	0xa3, 0xc7, 0xdb, 0x0a, 0xf0, 0xd6, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xcc, 0x07, 0x42, 0xf7,
+	0xeb, 0x0b, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/ml/v1/operation_metadata.pb.go b/googleapis/cloud/ml/v1/operation_metadata.pb.go
new file mode 100644
index 00000000..aad0e67a
--- /dev/null
+++ b/googleapis/cloud/ml/v1/operation_metadata.pb.go
@@ -0,0 +1,162 @@
+// Code generated by protoc-gen-go.
+// source: google/cloud/ml/v1/operation_metadata.proto
+// DO NOT EDIT!
+
+package ml
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// The operation type.
+type OperationMetadata_OperationType int32
+
+const (
+	// Unspecified operation type.
+	OperationMetadata_OPERATION_TYPE_UNSPECIFIED OperationMetadata_OperationType = 0
+	// An operation to create a new version.
+	OperationMetadata_CREATE_VERSION OperationMetadata_OperationType = 1
+	// An operation to delete an existing version.
+	OperationMetadata_DELETE_VERSION OperationMetadata_OperationType = 2
+	// An operation to delete an existing model.
+	OperationMetadata_DELETE_MODEL OperationMetadata_OperationType = 3
+)
+
+var OperationMetadata_OperationType_name = map[int32]string{
+	0: "OPERATION_TYPE_UNSPECIFIED",
+	1: "CREATE_VERSION",
+	2: "DELETE_VERSION",
+	3: "DELETE_MODEL",
+}
+var OperationMetadata_OperationType_value = map[string]int32{
+	"OPERATION_TYPE_UNSPECIFIED": 0,
+	"CREATE_VERSION":             1,
+	"DELETE_VERSION":             2,
+	"DELETE_MODEL":               3,
+}
+
+func (x OperationMetadata_OperationType) String() string {
+	return proto.EnumName(OperationMetadata_OperationType_name, int32(x))
+}
+func (OperationMetadata_OperationType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor2, []int{0, 0}
+}
+
+// Represents the metadata of the long-running operation.
+type OperationMetadata struct {
+	// The time the operation was submitted.
+	CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime" json:"create_time,omitempty"`
+	// The time operation processing started.
+	StartTime *google_protobuf2.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"`
+	// The time operation processing completed.
+	EndTime *google_protobuf2.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime" json:"end_time,omitempty"`
+	// Indicates whether a request to cancel this operation has been made.
+	IsCancellationRequested bool `protobuf:"varint,4,opt,name=is_cancellation_requested,json=isCancellationRequested" json:"is_cancellation_requested,omitempty"`
+	// The operation type.
+	OperationType OperationMetadata_OperationType `protobuf:"varint,5,opt,name=operation_type,json=operationType,enum=google.cloud.ml.v1.OperationMetadata_OperationType" json:"operation_type,omitempty"`
+	// Contains the name of the model associated with the operation.
+	ModelName string `protobuf:"bytes,6,opt,name=model_name,json=modelName" json:"model_name,omitempty"`
+	// Contains the version associated with the operation.
+	Version *Version `protobuf:"bytes,7,opt,name=version" json:"version,omitempty"`
+}
+
+func (m *OperationMetadata) Reset()                    { *m = OperationMetadata{} }
+func (m *OperationMetadata) String() string            { return proto.CompactTextString(m) }
+func (*OperationMetadata) ProtoMessage()               {}
+func (*OperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} }
+
+func (m *OperationMetadata) GetCreateTime() *google_protobuf2.Timestamp {
+	if m != nil {
+		return m.CreateTime
+	}
+	return nil
+}
+
+func (m *OperationMetadata) GetStartTime() *google_protobuf2.Timestamp {
+	if m != nil {
+		return m.StartTime
+	}
+	return nil
+}
+
+func (m *OperationMetadata) GetEndTime() *google_protobuf2.Timestamp {
+	if m != nil {
+		return m.EndTime
+	}
+	return nil
+}
+
+func (m *OperationMetadata) GetIsCancellationRequested() bool {
+	if m != nil {
+		return m.IsCancellationRequested
+	}
+	return false
+}
+
+func (m *OperationMetadata) GetOperationType() OperationMetadata_OperationType {
+	if m != nil {
+		return m.OperationType
+	}
+	return OperationMetadata_OPERATION_TYPE_UNSPECIFIED
+}
+
+func (m *OperationMetadata) GetModelName() string {
+	if m != nil {
+		return m.ModelName
+	}
+	return ""
+}
+
+func (m *OperationMetadata) GetVersion() *Version {
+	if m != nil {
+		return m.Version
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*OperationMetadata)(nil), "google.cloud.ml.v1.OperationMetadata")
+	proto.RegisterEnum("google.cloud.ml.v1.OperationMetadata_OperationType", OperationMetadata_OperationType_name, OperationMetadata_OperationType_value)
+}
+
+func init() { proto.RegisterFile("google/cloud/ml/v1/operation_metadata.proto", fileDescriptor2) }
+
+var fileDescriptor2 = []byte{
+	// 454 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0x5f, 0x6b, 0xdb, 0x30,
+	0x14, 0xc5, 0xe7, 0xb6, 0x6b, 0x1a, 0x75, 0x0d, 0x99, 0x1e, 0xb6, 0xcc, 0xfb, 0x17, 0xfa, 0x30,
+	0x02, 0x03, 0x99, 0xb4, 0xdb, 0xc3, 0xd6, 0xa7, 0x36, 0xd1, 0x20, 0xd0, 0xc6, 0xc6, 0xf5, 0x0a,
+	0xeb, 0x8b, 0x51, 0xed, 0x3b, 0x23, 0x90, 0x25, 0xcf, 0x52, 0x0c, 0xfd, 0x2c, 0xfb, 0xb2, 0x23,
+	0x92, 0x4d, 0x33, 0x52, 0xe8, 0xa3, 0xce, 0xfd, 0x9d, 0xab, 0xab, 0x7b, 0x84, 0x3e, 0x17, 0x4a,
+	0x15, 0x02, 0x82, 0x4c, 0xa8, 0x55, 0x1e, 0x94, 0x22, 0x68, 0xa6, 0x81, 0xaa, 0xa0, 0x66, 0x86,
+	0x2b, 0x99, 0x96, 0x60, 0x58, 0xce, 0x0c, 0x23, 0x55, 0xad, 0x8c, 0xc2, 0xd8, 0xc1, 0xc4, 0xc2,
+	0xa4, 0x14, 0xa4, 0x99, 0xfa, 0xef, 0xda, 0x06, 0xac, 0xe2, 0x01, 0x93, 0x52, 0x19, 0xeb, 0xd4,
+	0xce, 0xe1, 0x7f, 0x7a, 0xa4, 0x7d, 0xa9, 0x72, 0x10, 0xa9, 0x86, 0xba, 0xe1, 0x19, 0xb4, 0xdc,
+	0xc7, 0x96, 0xb3, 0xa7, 0xbb, 0xd5, 0xef, 0xc0, 0xf0, 0x12, 0xb4, 0x61, 0x65, 0xe5, 0x80, 0xe3,
+	0xbf, 0x7b, 0xe8, 0x65, 0xd8, 0xcd, 0x75, 0xd5, 0x8e, 0x85, 0xcf, 0xd0, 0x61, 0x56, 0x03, 0x33,
+	0x90, 0xae, 0xf9, 0x91, 0x37, 0xf6, 0x26, 0x87, 0x27, 0x3e, 0x69, 0xc7, 0xec, 0x9a, 0x91, 0xa4,
+	0x6b, 0x16, 0x23, 0x87, 0xaf, 0x05, 0xfc, 0x0d, 0x21, 0x6d, 0x58, 0x6d, 0x9c, 0x77, 0xe7, 0x49,
+	0x6f, 0xdf, 0xd2, 0xd6, 0xfa, 0x15, 0x1d, 0x80, 0xcc, 0x9d, 0x71, 0xf7, 0x49, 0x63, 0x0f, 0x64,
+	0x6e, 0x6d, 0xdf, 0xd1, 0x1b, 0xae, 0xd3, 0x8c, 0xc9, 0x0c, 0x84, 0x70, 0x1b, 0xae, 0xe1, 0xcf,
+	0x0a, 0xb4, 0x81, 0x7c, 0xb4, 0x37, 0xf6, 0x26, 0x07, 0xf1, 0x6b, 0xae, 0x67, 0x1b, 0xf5, 0xb8,
+	0x2b, 0xe3, 0x5b, 0x34, 0x78, 0xc8, 0xc5, 0xdc, 0x57, 0x30, 0x7a, 0x3e, 0xf6, 0x26, 0x83, 0x93,
+	0x53, 0xb2, 0x1d, 0x0a, 0xd9, 0xda, 0xd4, 0x83, 0x92, 0xdc, 0x57, 0x10, 0x1f, 0xa9, 0xcd, 0x23,
+	0x7e, 0x8f, 0x90, 0x0b, 0x45, 0xb2, 0x12, 0x46, 0xfb, 0x63, 0x6f, 0xd2, 0x8f, 0xfb, 0x56, 0x59,
+	0x32, 0xfb, 0xda, 0x5e, 0x03, 0xb5, 0xe6, 0x4a, 0x8e, 0x7a, 0xf6, 0xb1, 0x6f, 0x1f, 0xbb, 0xf3,
+	0xc6, 0x21, 0x71, 0xc7, 0x1e, 0x73, 0x74, 0xf4, 0xdf, 0xad, 0xf8, 0x03, 0xf2, 0xc3, 0x88, 0xc6,
+	0xe7, 0xc9, 0x22, 0x5c, 0xa6, 0xc9, 0xaf, 0x88, 0xa6, 0x3f, 0x97, 0xd7, 0x11, 0x9d, 0x2d, 0x7e,
+	0x2c, 0xe8, 0x7c, 0xf8, 0x0c, 0x63, 0x34, 0x98, 0xc5, 0xf4, 0x3c, 0xa1, 0xe9, 0x0d, 0x8d, 0xaf,
+	0x17, 0xe1, 0x72, 0xe8, 0xad, 0xb5, 0x39, 0xbd, 0xa4, 0x1b, 0xda, 0x0e, 0x1e, 0xa2, 0x17, 0xad,
+	0x76, 0x15, 0xce, 0xe9, 0xe5, 0x70, 0xf7, 0x42, 0x20, 0x3f, 0x53, 0xe5, 0xd6, 0x54, 0xac, 0xe2,
+	0xa4, 0x99, 0x5e, 0xbc, 0xda, 0x5a, 0x47, 0xb4, 0x0e, 0x29, 0xf2, 0x6e, 0xbf, 0xb4, 0x8e, 0x42,
+	0x09, 0x26, 0x0b, 0xa2, 0xea, 0x22, 0x28, 0x40, 0xda, 0x08, 0x03, 0x57, 0x62, 0x15, 0xd7, 0x9b,
+	0xbf, 0xf7, 0xac, 0x14, 0x77, 0xfb, 0x16, 0x38, 0xfd, 0x17, 0x00, 0x00, 0xff, 0xff, 0x03, 0xf9,
+	0xcc, 0xf1, 0x3c, 0x03, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/ml/v1/prediction_service.pb.go b/googleapis/cloud/ml/v1/prediction_service.pb.go
new file mode 100644
index 00000000..724f90f2
--- /dev/null
+++ b/googleapis/cloud/ml/v1/prediction_service.pb.go
@@ -0,0 +1,344 @@
+// Code generated by protoc-gen-go.
+// source: google/cloud/ml/v1/prediction_service.proto
+// DO NOT EDIT!
+
+package ml
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import google_api3 "google.golang.org/genproto/googleapis/api/httpbody"
+
+import (
+	context "golang.org/x/net/context"
+	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
+
+// Request for predictions to be issued against a trained model.
+//
+// The body of the request is a single JSON object with a single top-level
+// field:
+//
+// <dl>
+//   <dt>instances</dt>
+//   <dd>A JSON array containing values representing the instances to use for
+//       prediction.</dd>
+// </dl>
+//
+// The structure of each element of the instances list is determined by your
+// model's input definition. Instances can include named inputs or can contain
+// only unlabeled values.
+//
+// Not all data includes named inputs. Some instances will be simple
+// JSON values (boolean, number, or string). However, instances are often lists
+// of simple values, or complex nested lists. Here are some examples of request
+// bodies:
+//
+// CSV data with each row encoded as a string value:
+// <pre>
+// {"instances": ["1.0,true,\\"x\\"", "-2.0,false,\\"y\\""]}
+// </pre>
+// Plain text:
+// <pre>
+// {"instances": ["the quick brown fox", "la bruja le dio"]}
+// </pre>
+// Sentences encoded as lists of words (vectors of strings):
+// <pre>
+// {
+//   "instances": [
+//     ["the","quick","brown"],
+//     ["la","bruja","le"],
+//     ...
+//   ]
+// }
+// </pre>
+// Floating point scalar values:
+// <pre>
+// {"instances": [0.0, 1.1, 2.2]}
+// </pre>
+// Vectors of integers:
+// <pre>
+// {
+//   "instances": [
+//     [0, 1, 2],
+//     [3, 4, 5],
+//     ...
+//   ]
+// }
+// </pre>
+// Tensors (in this case, two-dimensional tensors):
+// <pre>
+// {
+//   "instances": [
+//     [
+//       [0, 1, 2],
+//       [3, 4, 5]
+//     ],
+//     ...
+//   ]
+// }
+// </pre>
+// Images can be represented different ways. In this encoding scheme the first
+// two dimensions represent the rows and columns of the image, and the third
+// contains lists (vectors) of the R, G, and B values for each pixel.
+// <pre>
+// {
+//   "instances": [
+//     [
+//       [
+//         [138, 30, 66],
+//         [130, 20, 56],
+//         ...
+//       ],
+//       [
+//         [126, 38, 61],
+//         [122, 24, 57],
+//         ...
+//       ],
+//       ...
+//     ],
+//     ...
+//   ]
+// }
+// </pre>
+// JSON strings must be encoded as UTF-8. To send binary data, you must
+// base64-encode the data and mark it as binary. To mark a JSON string
+// as binary, replace it with a JSON object with a single attribute named `b64`:
+// <pre>{"b64": "..."} </pre>
+// For example:
+//
+// Two Serialized tf.Examples (fake data, for illustrative purposes only):
+// <pre>
+// {"instances": [{"b64": "X5ad6u"}, {"b64": "IA9j4nx"}]}
+// </pre>
+// Two JPEG image byte strings (fake data, for illustrative purposes only):
+// <pre>
+// {"instances": [{"b64": "ASa8asdf"}, {"b64": "JLK7ljk3"}]}
+// </pre>
+// If your data includes named references, format each instance as a JSON object
+// with the named references as the keys:
+//
+// JSON input data to be preprocessed:
+// <pre>
+// {
+//   "instances": [
+//     {
+//       "a": 1.0,
+//       "b": true,
+//       "c": "x"
+//     },
+//     {
+//       "a": -2.0,
+//       "b": false,
+//       "c": "y"
+//     }
+//   ]
+// }
+// </pre>
+// Some models have an underlying TensorFlow graph that accepts multiple input
+// tensors. In this case, you should use the names of JSON name/value pairs to
+// identify the input tensors, as shown in the following exmaples:
+//
+// For a graph with input tensor aliases "tag" (string) and "image"
+// (base64-encoded string):
+// <pre>
+// {
+//   "instances": [
+//     {
+//       "tag": "beach",
+//       "image": {"b64": "ASa8asdf"}
+//     },
+//     {
+//       "tag": "car",
+//       "image": {"b64": "JLK7ljk3"}
+//     }
+//   ]
+// }
+// </pre>
+// For a graph with input tensor aliases "tag" (string) and "image"
+// (3-dimensional array of 8-bit ints):
+// <pre>
+// {
+//   "instances": [
+//     {
+//       "tag": "beach",
+//       "image": [
+//         [
+//           [138, 30, 66],
+//           [130, 20, 56],
+//           ...
+//         ],
+//         [
+//           [126, 38, 61],
+//           [122, 24, 57],
+//           ...
+//         ],
+//         ...
+//       ]
+//     },
+//     {
+//       "tag": "car",
+//       "image": [
+//         [
+//           [255, 0, 102],
+//           [255, 0, 97],
+//           ...
+//         ],
+//         [
+//           [254, 1, 101],
+//           [254, 2, 93],
+//           ...
+//         ],
+//         ...
+//       ]
+//     },
+//     ...
+//   ]
+// }
+// </pre>
+// If the call is successful, the response body will contain one prediction
+// entry per instance in the request body. If prediction fails for any
+// instance, the response body will contain no predictions and will contian
+// a single error entry instead.
+type PredictRequest struct {
+	// Required. The resource name of a model or a version.
+	//
+	// Authorization: requires `Viewer` role on the parent project.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	//
+	// Required. The prediction request body.
+	HttpBody *google_api3.HttpBody `protobuf:"bytes,2,opt,name=http_body,json=httpBody" json:"http_body,omitempty"`
+}
+
+func (m *PredictRequest) Reset()                    { *m = PredictRequest{} }
+func (m *PredictRequest) String() string            { return proto.CompactTextString(m) }
+func (*PredictRequest) ProtoMessage()               {}
+func (*PredictRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} }
+
+func (m *PredictRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *PredictRequest) GetHttpBody() *google_api3.HttpBody {
+	if m != nil {
+		return m.HttpBody
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*PredictRequest)(nil), "google.cloud.ml.v1.PredictRequest")
+}
+
+// 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
+
+// Client API for OnlinePredictionService service
+
+type OnlinePredictionServiceClient interface {
+	// Performs prediction on the data in the request.
+	//
+	// **** REMOVE FROM GENERATED DOCUMENTATION
+	Predict(ctx context.Context, in *PredictRequest, opts ...grpc.CallOption) (*google_api3.HttpBody, error)
+}
+
+type onlinePredictionServiceClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewOnlinePredictionServiceClient(cc *grpc.ClientConn) OnlinePredictionServiceClient {
+	return &onlinePredictionServiceClient{cc}
+}
+
+func (c *onlinePredictionServiceClient) Predict(ctx context.Context, in *PredictRequest, opts ...grpc.CallOption) (*google_api3.HttpBody, error) {
+	out := new(google_api3.HttpBody)
+	err := grpc.Invoke(ctx, "/google.cloud.ml.v1.OnlinePredictionService/Predict", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Server API for OnlinePredictionService service
+
+type OnlinePredictionServiceServer interface {
+	// Performs prediction on the data in the request.
+	//
+	// **** REMOVE FROM GENERATED DOCUMENTATION
+	Predict(context.Context, *PredictRequest) (*google_api3.HttpBody, error)
+}
+
+func RegisterOnlinePredictionServiceServer(s *grpc.Server, srv OnlinePredictionServiceServer) {
+	s.RegisterService(&_OnlinePredictionService_serviceDesc, srv)
+}
+
+func _OnlinePredictionService_Predict_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(PredictRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OnlinePredictionServiceServer).Predict(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.ml.v1.OnlinePredictionService/Predict",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OnlinePredictionServiceServer).Predict(ctx, req.(*PredictRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _OnlinePredictionService_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.cloud.ml.v1.OnlinePredictionService",
+	HandlerType: (*OnlinePredictionServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "Predict",
+			Handler:    _OnlinePredictionService_Predict_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/cloud/ml/v1/prediction_service.proto",
+}
+
+func init() { proto.RegisterFile("google/cloud/ml/v1/prediction_service.proto", fileDescriptor3) }
+
+var fileDescriptor3 = []byte{
+	// 308 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x51, 0x4f, 0x4b, 0xfb, 0x30,
+	0x18, 0xa6, 0xe3, 0xc7, 0x4f, 0x17, 0xc1, 0x43, 0x10, 0x9d, 0x45, 0x64, 0xd4, 0xcb, 0x9c, 0x90,
+	0xd0, 0xe9, 0x69, 0xe2, 0x65, 0x27, 0x6f, 0x96, 0x79, 0x10, 0xbc, 0x8c, 0xac, 0x0d, 0x59, 0x24,
+	0xcd, 0x1b, 0xdb, 0xac, 0x30, 0xc4, 0x8b, 0x37, 0xcf, 0x7e, 0x34, 0xbf, 0x82, 0x1f, 0x44, 0xd2,
+	0x04, 0x99, 0xd4, 0xdb, 0x4b, 0xde, 0xe7, 0x79, 0x9f, 0x3f, 0x41, 0x17, 0x02, 0x40, 0x28, 0x4e,
+	0x73, 0x05, 0xeb, 0x82, 0x96, 0x8a, 0x36, 0x29, 0x35, 0x15, 0x2f, 0x64, 0x6e, 0x25, 0xe8, 0x45,
+	0xcd, 0xab, 0x46, 0xe6, 0x9c, 0x98, 0x0a, 0x2c, 0x60, 0xec, 0xc1, 0xa4, 0x05, 0x93, 0x52, 0x91,
+	0x26, 0x8d, 0x4f, 0xc2, 0x01, 0x66, 0x24, 0x65, 0x5a, 0x83, 0x65, 0x8e, 0x58, 0x7b, 0x46, 0x7c,
+	0xbc, 0xb5, 0x5d, 0x59, 0x6b, 0x96, 0x50, 0x6c, 0xfc, 0x2a, 0x79, 0x40, 0xfb, 0x99, 0x17, 0x9a,
+	0xf3, 0xe7, 0x35, 0xaf, 0x2d, 0xc6, 0xe8, 0x9f, 0x66, 0x25, 0x1f, 0x44, 0xc3, 0x68, 0xd4, 0x9f,
+	0xb7, 0x33, 0x4e, 0x51, 0xdf, 0xf1, 0x16, 0x8e, 0x38, 0xe8, 0x0d, 0xa3, 0xd1, 0xde, 0xe4, 0x80,
+	0x04, 0x1b, 0xcc, 0x48, 0x72, 0x6b, 0xad, 0x99, 0x41, 0xb1, 0x99, 0xef, 0xae, 0xc2, 0x34, 0x79,
+	0x8f, 0xd0, 0xd1, 0x9d, 0x56, 0x52, 0xf3, 0xec, 0x27, 0xc8, 0xbd, 0xcf, 0x81, 0x35, 0xda, 0x09,
+	0x8f, 0x38, 0x21, 0xdd, 0x34, 0xe4, 0xb7, 0xa3, 0xf8, 0x4f, 0xa9, 0xe4, 0xfc, 0xed, 0xf3, 0xeb,
+	0xa3, 0x77, 0x96, 0x9c, 0xba, 0xb2, 0x5e, 0x9c, 0xcd, 0x1b, 0x53, 0xc1, 0x13, 0xcf, 0x6d, 0x4d,
+	0xc7, 0xe3, 0xd7, 0x69, 0xe8, 0x6f, 0x1a, 0x8d, 0x67, 0x0a, 0xc5, 0x39, 0x94, 0x1d, 0x25, 0x77,
+	0xae, 0x49, 0x67, 0x87, 0x1d, 0x83, 0x99, 0xab, 0x26, 0x8b, 0x1e, 0xaf, 0x02, 0x43, 0x80, 0x62,
+	0x5a, 0x10, 0xa8, 0x04, 0x15, 0x5c, 0xb7, 0xc5, 0x51, 0xbf, 0x62, 0x46, 0xd6, 0xdb, 0xbf, 0x76,
+	0x5d, 0xaa, 0xe5, 0xff, 0x16, 0x70, 0xf9, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x81, 0x8e, 0x25, 0xca,
+	0xd5, 0x01, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/ml/v1/project_service.pb.go b/googleapis/cloud/ml/v1/project_service.pb.go
new file mode 100644
index 00000000..e4be4e1c
--- /dev/null
+++ b/googleapis/cloud/ml/v1/project_service.pb.go
@@ -0,0 +1,178 @@
+// Code generated by protoc-gen-go.
+// source: google/cloud/ml/v1/project_service.proto
+// DO NOT EDIT!
+
+package ml
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+import (
+	context "golang.org/x/net/context"
+	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
+
+// Requests service account information associated with a project.
+type GetConfigRequest struct {
+	// Required. The project name.
+	//
+	// Authorization: requires `Viewer` role on the specified project.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *GetConfigRequest) Reset()                    { *m = GetConfigRequest{} }
+func (m *GetConfigRequest) String() string            { return proto.CompactTextString(m) }
+func (*GetConfigRequest) ProtoMessage()               {}
+func (*GetConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{0} }
+
+func (m *GetConfigRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Returns service account information associated with a project.
+type GetConfigResponse struct {
+	// The service account Cloud ML uses to access resources in the project.
+	ServiceAccount string `protobuf:"bytes,1,opt,name=service_account,json=serviceAccount" json:"service_account,omitempty"`
+	// The project number for `service_account`.
+	ServiceAccountProject int64 `protobuf:"varint,2,opt,name=service_account_project,json=serviceAccountProject" json:"service_account_project,omitempty"`
+}
+
+func (m *GetConfigResponse) Reset()                    { *m = GetConfigResponse{} }
+func (m *GetConfigResponse) String() string            { return proto.CompactTextString(m) }
+func (*GetConfigResponse) ProtoMessage()               {}
+func (*GetConfigResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{1} }
+
+func (m *GetConfigResponse) GetServiceAccount() string {
+	if m != nil {
+		return m.ServiceAccount
+	}
+	return ""
+}
+
+func (m *GetConfigResponse) GetServiceAccountProject() int64 {
+	if m != nil {
+		return m.ServiceAccountProject
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterType((*GetConfigRequest)(nil), "google.cloud.ml.v1.GetConfigRequest")
+	proto.RegisterType((*GetConfigResponse)(nil), "google.cloud.ml.v1.GetConfigResponse")
+}
+
+// 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
+
+// Client API for ProjectManagementService service
+
+type ProjectManagementServiceClient interface {
+	// Get the service account information associated with your project. You need
+	// this information in order to grant the service account persmissions for
+	// the Google Cloud Storage location where you put your model training code
+	// for training the model with Google Cloud Machine Learning.
+	GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*GetConfigResponse, error)
+}
+
+type projectManagementServiceClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewProjectManagementServiceClient(cc *grpc.ClientConn) ProjectManagementServiceClient {
+	return &projectManagementServiceClient{cc}
+}
+
+func (c *projectManagementServiceClient) GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*GetConfigResponse, error) {
+	out := new(GetConfigResponse)
+	err := grpc.Invoke(ctx, "/google.cloud.ml.v1.ProjectManagementService/GetConfig", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Server API for ProjectManagementService service
+
+type ProjectManagementServiceServer interface {
+	// Get the service account information associated with your project. You need
+	// this information in order to grant the service account persmissions for
+	// the Google Cloud Storage location where you put your model training code
+	// for training the model with Google Cloud Machine Learning.
+	GetConfig(context.Context, *GetConfigRequest) (*GetConfigResponse, error)
+}
+
+func RegisterProjectManagementServiceServer(s *grpc.Server, srv ProjectManagementServiceServer) {
+	s.RegisterService(&_ProjectManagementService_serviceDesc, srv)
+}
+
+func _ProjectManagementService_GetConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetConfigRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ProjectManagementServiceServer).GetConfig(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.ml.v1.ProjectManagementService/GetConfig",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ProjectManagementServiceServer).GetConfig(ctx, req.(*GetConfigRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _ProjectManagementService_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.cloud.ml.v1.ProjectManagementService",
+	HandlerType: (*ProjectManagementServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "GetConfig",
+			Handler:    _ProjectManagementService_GetConfig_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/cloud/ml/v1/project_service.proto",
+}
+
+func init() { proto.RegisterFile("google/cloud/ml/v1/project_service.proto", fileDescriptor4) }
+
+var fileDescriptor4 = []byte{
+	// 319 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x91, 0xbf, 0x4a, 0x43, 0x31,
+	0x14, 0xc6, 0xb9, 0x55, 0x84, 0x66, 0xf0, 0x4f, 0x44, 0x2c, 0x45, 0xb0, 0x16, 0xb5, 0xc5, 0x21,
+	0xa1, 0x2a, 0x0e, 0x8a, 0x83, 0x75, 0x70, 0x12, 0x4a, 0xdd, 0x5c, 0x4a, 0xbc, 0x1e, 0x43, 0x24,
+	0xc9, 0x89, 0x37, 0xe9, 0x5d, 0xc4, 0x41, 0x5f, 0xc1, 0xdd, 0x97, 0xf2, 0x15, 0x7c, 0x10, 0xe9,
+	0x4d, 0x94, 0xda, 0x0e, 0x6e, 0x87, 0x73, 0x7e, 0x5f, 0xf2, 0x7d, 0xe7, 0x90, 0xae, 0x44, 0x94,
+	0x1a, 0x78, 0xae, 0x71, 0x7c, 0xcf, 0x8d, 0xe6, 0x65, 0x8f, 0xbb, 0x02, 0x1f, 0x21, 0x0f, 0x23,
+	0x0f, 0x45, 0xa9, 0x72, 0x60, 0xae, 0xc0, 0x80, 0x94, 0x46, 0x92, 0x55, 0x24, 0x33, 0x9a, 0x95,
+	0xbd, 0xe6, 0x56, 0x52, 0x0b, 0xa7, 0xb8, 0xb0, 0x16, 0x83, 0x08, 0x0a, 0xad, 0x8f, 0x8a, 0xf6,
+	0x3e, 0x59, 0xbd, 0x82, 0x70, 0x89, 0xf6, 0x41, 0xc9, 0x21, 0x3c, 0x8d, 0xc1, 0x07, 0x4a, 0xc9,
+	0xa2, 0x15, 0x06, 0x1a, 0x59, 0x2b, 0xeb, 0xd6, 0x87, 0x55, 0xdd, 0x0e, 0x64, 0x6d, 0x8a, 0xf3,
+	0x0e, 0xad, 0x07, 0xda, 0x21, 0x2b, 0xe9, 0xff, 0x91, 0xc8, 0x73, 0x1c, 0xdb, 0x90, 0x34, 0xcb,
+	0xa9, 0x7d, 0x11, 0xbb, 0xf4, 0x84, 0x6c, 0xce, 0x80, 0xa3, 0x14, 0xa0, 0x51, 0x6b, 0x65, 0xdd,
+	0x85, 0xe1, 0xc6, 0x5f, 0xc1, 0x20, 0x0e, 0x0f, 0x3f, 0x32, 0xd2, 0x48, 0xf5, 0xb5, 0xb0, 0x42,
+	0x82, 0x01, 0x1b, 0x6e, 0x22, 0x4a, 0x5f, 0x33, 0x52, 0xff, 0xf5, 0x44, 0x77, 0xd9, 0x7c, 0x76,
+	0x36, 0x1b, 0xad, 0xb9, 0xf7, 0x0f, 0x15, 0x83, 0xb5, 0x3b, 0x6f, 0x9f, 0x5f, 0xef, 0xb5, 0x1d,
+	0xba, 0x3d, 0x59, 0xf5, 0xf3, 0x64, 0x01, 0xe7, 0xc9, 0xaf, 0xe7, 0x07, 0x2f, 0xa7, 0xf2, 0x47,
+	0xd0, 0x57, 0xa4, 0x99, 0xa3, 0x99, 0x7b, 0x54, 0x38, 0xc5, 0xca, 0x5e, 0x7f, 0x3d, 0x79, 0x4f,
+	0x8e, 0x07, 0x93, 0x8d, 0x0f, 0xb2, 0xdb, 0xe3, 0x84, 0x4b, 0xd4, 0xc2, 0x4a, 0x86, 0x85, 0xe4,
+	0x12, 0x6c, 0x75, 0x0f, 0x1e, 0x47, 0xc2, 0x29, 0x3f, 0x7d, 0xee, 0x33, 0xa3, 0xef, 0x96, 0x2a,
+	0xe0, 0xe8, 0x3b, 0x00, 0x00, 0xff, 0xff, 0xd0, 0xa5, 0x43, 0x33, 0x0e, 0x02, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/ml/v1beta1/job_service.pb.go b/googleapis/cloud/ml/v1beta1/job_service.pb.go
index a2b76f06..9aff1c72 100644
--- a/googleapis/cloud/ml/v1beta1/job_service.pb.go
+++ b/googleapis/cloud/ml/v1beta1/job_service.pb.go
@@ -28,6 +28,7 @@ It has these top-level messages:
 	CancelJobRequest
 	Model
 	Version
+	ManualScaling
 	CreateModelRequest
 	ListModelsRequest
 	ListModelsResponse
@@ -50,6 +51,7 @@ import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
 import _ "google.golang.org/genproto/googleapis/api/annotations"
+import _ "google.golang.org/genproto/googleapis/api/serviceconfig"
 import google_protobuf1 "github.com/golang/protobuf/ptypes/empty"
 import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp"
 
@@ -77,7 +79,9 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
 // generally have more memory and greater processing power than they do at
 // lower tiers. The number of training units charged per hour of processing
 // increases as tiers get more advanced. Refer to the
-// [pricing guide](/ml/pricing) for more details.
+// [pricing guide](/ml/pricing) for more details. Note that in addition to
+// incurring costs, your use of training resources is constrained by the
+// [quota policy](/ml/quota).
 type TrainingInput_ScaleTier int32
 
 const (
@@ -88,12 +92,31 @@ const (
 	TrainingInput_STANDARD_1 TrainingInput_ScaleTier = 1
 	// A large number of workers with many parameter servers.
 	TrainingInput_PREMIUM_1 TrainingInput_ScaleTier = 3
+	// A single worker instance [with a GPU](ml/docs/how-tos/using-gpus).
+	TrainingInput_BASIC_GPU TrainingInput_ScaleTier = 6
 	// The CUSTOM tier is not a set tier, but rather enables you to use your
-	// own cluster specification. When you use this tier, you must also set
-	// valid values for `worker_count` and `parameter_server_count`, and you can
-	// specify the type of virtual machines to use for the different types of
-	// workers by setting `master_type`, `worker_type`, and
-	// `parameter_server_type`.
+	// own cluster specification. When you use this tier, set values to
+	// configure your processing cluster according to these guidelines:
+	//
+	// *   You _must_ set `TrainingInput.masterType` to specify the type
+	//     of machine to use for your master node. This is the only required
+	//     setting.
+	//
+	// *   You _may_ set `TrainingInput.workerCount` to specify the number of
+	//     workers to use. If you specify one or more workers, you _must_ also
+	//     set `TrainingInput.workerType` to specify the type of machine to use
+	//     for your worker nodes.
+	//
+	// *   You _may_ set `TrainingInput.parameterServerCount` to specify the
+	//     number of parameter servers to use. If you specify one or more
+	//     parameter servers, you _must_ also set
+	//     `TrainingInput.parameterServerType` to specify the type of machine to
+	//     use for your parameter servers.
+	//
+	// Note that all of your workers must use the same machine type, which can
+	// be different from your parameter server type and master type. Your
+	// parameter servers must likewise use the same machine type, which can be
+	// different from your worker type and master type.
 	TrainingInput_CUSTOM TrainingInput_ScaleTier = 5
 )
 
@@ -101,12 +124,14 @@ var TrainingInput_ScaleTier_name = map[int32]string{
 	0: "BASIC",
 	1: "STANDARD_1",
 	3: "PREMIUM_1",
+	6: "BASIC_GPU",
 	5: "CUSTOM",
 }
 var TrainingInput_ScaleTier_value = map[string]int32{
 	"BASIC":      0,
 	"STANDARD_1": 1,
 	"PREMIUM_1":  3,
+	"BASIC_GPU":  6,
 	"CUSTOM":     5,
 }
 
@@ -340,25 +365,38 @@ type TrainingInput struct {
 	//   <dt>complex_model_m</dt>
 	//   <dd>
 	//   A machine with roughly twice the number of cores and roughly double the
-	//   memory of `complex_model_s`.
+	//   memory of <code suppresswarning="true">complex_model_s</code>.
 	//   </dd>
 	//   <dt>complex_model_l</dt>
 	//   <dd>
 	//   A machine with roughly twice the number of cores and roughly double the
-	//   memory of `complex_model_m`.
+	//   memory of <code suppresswarning="true">complex_model_m</code>.
+	//   </dd>
+	//   <dt>standard_gpu</dt>
+	//   <dd>
+	//   A machine equivalent to <code suppresswarning="true">standard</code> that
+	//   also includes a
+	//   <a href="ml/docs/how-tos/using-gpus">
+	//   GPU that you can use in your trainer</a>.
+	//   </dd>
+	//   <dt>complex_model_m_gpu</dt>
+	//   <dd>
+	//   A machine equivalent to
+	//   <code suppresswarning="true">coplex_model_m</code> that also includes
+	//   four GPUs.
 	//   </dd>
 	// </dl>
 	//
-	// This value can only be used when `ScaleTier` is set to `CUSTOM`.
+	// You must set this value when `scaleTier` is set to `CUSTOM`.
 	MasterType string `protobuf:"bytes,2,opt,name=master_type,json=masterType" json:"master_type,omitempty"`
 	// Optional. Specifies the type of virtual machine to use for your training
 	// job's worker nodes.
 	//
 	// The supported values are the same as those described in the entry for
-	// `master_type`.
+	// `masterType`.
 	//
-	// This value must be present when `scale_tier` is set to `CUSTOM` and
-	// `worker_count` is greater than zero.
+	// This value must be present when `scaleTier` is set to `CUSTOM` and
+	// `workerCount` is greater than zero.
 	WorkerType string `protobuf:"bytes,3,opt,name=worker_type,json=workerType" json:"worker_type,omitempty"`
 	// Optional. Specifies the type of virtual machine to use for your training
 	// job's parameter server.
@@ -366,7 +404,7 @@ type TrainingInput struct {
 	// The supported values are the same as those described in the entry for
 	// `master_type`.
 	//
-	// This value must be present when `scale_tier` is set to `CUSTOM` and
+	// This value must be present when `scaleTier` is set to `CUSTOM` and
 	// `parameter_server_count` is greater than zero.
 	ParameterServerType string `protobuf:"bytes,4,opt,name=parameter_server_type,json=parameterServerType" json:"parameter_server_type,omitempty"`
 	// Optional. The number of worker replicas to use for the training job. Each
@@ -393,6 +431,14 @@ type TrainingInput struct {
 	Hyperparameters *HyperparameterSpec `protobuf:"bytes,12,opt,name=hyperparameters" json:"hyperparameters,omitempty"`
 	// Required. The Google Compute Engine region to run the training job in.
 	Region string `protobuf:"bytes,14,opt,name=region" json:"region,omitempty"`
+	// Optional. A Google Cloud Storage path in which to store training outputs
+	// and other data needed for training. This path is passed to your TensorFlow
+	// program as the 'job_dir' command-line argument. The benefit of specifying
+	// this field is that Cloud ML validates the path for use in training.
+	JobDir string `protobuf:"bytes,16,opt,name=job_dir,json=jobDir" json:"job_dir,omitempty"`
+	// Optional. The Google Cloud ML runtime version to use for training.  If not
+	// set, Google Cloud ML will choose the latest stable version.
+	RuntimeVersion string `protobuf:"bytes,15,opt,name=runtime_version,json=runtimeVersion" json:"runtime_version,omitempty"`
 }
 
 func (m *TrainingInput) Reset()                    { *m = TrainingInput{} }
@@ -477,6 +523,20 @@ func (m *TrainingInput) GetRegion() string {
 	return ""
 }
 
+func (m *TrainingInput) GetJobDir() string {
+	if m != nil {
+		return m.JobDir
+	}
+	return ""
+}
+
+func (m *TrainingInput) GetRuntimeVersion() string {
+	if m != nil {
+		return m.RuntimeVersion
+	}
+	return ""
+}
+
 // Represents a set of hyperparameters to optimize.
 type HyperparameterSpec struct {
 	// Required. The type of goal to use for tuning. Available types are
@@ -502,6 +562,12 @@ type HyperparameterSpec struct {
 	//
 	// Defaults to one.
 	MaxParallelTrials int32 `protobuf:"varint,4,opt,name=max_parallel_trials,json=maxParallelTrials" json:"max_parallel_trials,omitempty"`
+	// Optional. The Tensorflow summary tag name to use for optimizing trials. For
+	// current versions of Tensorflow, this tag name should exactly match what is
+	// shown in Tensorboard, including all scopes.  For versions of Tensorflow
+	// prior to 0.12, this should be only the tag passed to tf.Summary.
+	// By default, "training/hptuning/metric" will be used.
+	HyperparameterMetricTag string `protobuf:"bytes,5,opt,name=hyperparameter_metric_tag,json=hyperparameterMetricTag" json:"hyperparameter_metric_tag,omitempty"`
 }
 
 func (m *HyperparameterSpec) Reset()                    { *m = HyperparameterSpec{} }
@@ -537,6 +603,13 @@ func (m *HyperparameterSpec) GetMaxParallelTrials() int32 {
 	return 0
 }
 
+func (m *HyperparameterSpec) GetHyperparameterMetricTag() string {
+	if m != nil {
+		return m.HyperparameterMetricTag
+	}
+	return ""
+}
+
 // Represents a single hyperparameter to optimize.
 type ParameterSpec struct {
 	// Required. The parameter name must be unique amongst all ParameterConfigs in
@@ -700,12 +773,18 @@ func (m *HyperparameterOutput_HyperparameterMetric) GetObjectiveValue() float64
 	return 0
 }
 
-// Represents results of a training job.
+// Represents results of a training job. Output only.
 type TrainingOutput struct {
 	// The number of hyperparameter tuning trials that completed successfully.
+	// Only set for hyperparameter tuning jobs.
 	CompletedTrialCount int64 `protobuf:"varint,1,opt,name=completed_trial_count,json=completedTrialCount" json:"completed_trial_count,omitempty"`
 	// Results for individual Hyperparameter trials.
+	// Only set for hyperparameter tuning jobs.
 	Trials []*HyperparameterOutput `protobuf:"bytes,2,rep,name=trials" json:"trials,omitempty"`
+	// The amount of ML units consumed by the job.
+	ConsumedMlUnits float64 `protobuf:"fixed64,3,opt,name=consumed_ml_units,json=consumedMlUnits" json:"consumed_ml_units,omitempty"`
+	// Whether this job is a hyperparameter tuning job.
+	IsHyperparameterTuningJob bool `protobuf:"varint,4,opt,name=is_hyperparameter_tuning_job,json=isHyperparameterTuningJob" json:"is_hyperparameter_tuning_job,omitempty"`
 }
 
 func (m *TrainingOutput) Reset()                    { *m = TrainingOutput{} }
@@ -727,6 +806,20 @@ func (m *TrainingOutput) GetTrials() []*HyperparameterOutput {
 	return nil
 }
 
+func (m *TrainingOutput) GetConsumedMlUnits() float64 {
+	if m != nil {
+		return m.ConsumedMlUnits
+	}
+	return 0
+}
+
+func (m *TrainingOutput) GetIsHyperparameterTuningJob() bool {
+	if m != nil {
+		return m.IsHyperparameterTuningJob
+	}
+	return false
+}
+
 // Represents input parameters for a prediction job.
 type PredictionInput struct {
 	// Required. The model or the version to use for prediction.
@@ -734,6 +827,7 @@ type PredictionInput struct {
 	// Types that are valid to be assigned to ModelVersion:
 	//	*PredictionInput_ModelName
 	//	*PredictionInput_VersionName
+	//	*PredictionInput_Uri
 	ModelVersion isPredictionInput_ModelVersion `protobuf_oneof:"model_version"`
 	// Required. The format of the input data files.
 	DataFormat PredictionInput_DataFormat `protobuf:"varint,3,opt,name=data_format,json=dataFormat,enum=google.cloud.ml.v1beta1.PredictionInput_DataFormat" json:"data_format,omitempty"`
@@ -742,11 +836,17 @@ type PredictionInput struct {
 	InputPaths []string `protobuf:"bytes,4,rep,name=input_paths,json=inputPaths" json:"input_paths,omitempty"`
 	// Required. The output Google Cloud Storage location.
 	OutputPath string `protobuf:"bytes,5,opt,name=output_path,json=outputPath" json:"output_path,omitempty"`
-	// Optional. The maximum amount of workers to be used for parallel processing.
-	// Defaults to 10.
+	// Optional. The maximum number of workers to be used for parallel processing.
+	// Defaults to 10 if not specified.
 	MaxWorkerCount int64 `protobuf:"varint,6,opt,name=max_worker_count,json=maxWorkerCount" json:"max_worker_count,omitempty"`
 	// Required. The Google Compute Engine region to run the prediction job in.
 	Region string `protobuf:"bytes,7,opt,name=region" json:"region,omitempty"`
+	// Optional. The Google Cloud ML runtime version to use for this batch
+	// prediction. If not set, Google Cloud ML will pick the runtime version used
+	// during the CreateVersion request for this model version, or choose the
+	// latest stable version when model version information is not available
+	// such as when the model is specified by uri.
+	RuntimeVersion string `protobuf:"bytes,8,opt,name=runtime_version,json=runtimeVersion" json:"runtime_version,omitempty"`
 }
 
 func (m *PredictionInput) Reset()                    { *m = PredictionInput{} }
@@ -764,9 +864,13 @@ type PredictionInput_ModelName struct {
 type PredictionInput_VersionName struct {
 	VersionName string `protobuf:"bytes,2,opt,name=version_name,json=versionName,oneof"`
 }
+type PredictionInput_Uri struct {
+	Uri string `protobuf:"bytes,9,opt,name=uri,oneof"`
+}
 
 func (*PredictionInput_ModelName) isPredictionInput_ModelVersion()   {}
 func (*PredictionInput_VersionName) isPredictionInput_ModelVersion() {}
+func (*PredictionInput_Uri) isPredictionInput_ModelVersion()         {}
 
 func (m *PredictionInput) GetModelVersion() isPredictionInput_ModelVersion {
 	if m != nil {
@@ -789,6 +893,13 @@ func (m *PredictionInput) GetVersionName() string {
 	return ""
 }
 
+func (m *PredictionInput) GetUri() string {
+	if x, ok := m.GetModelVersion().(*PredictionInput_Uri); ok {
+		return x.Uri
+	}
+	return ""
+}
+
 func (m *PredictionInput) GetDataFormat() PredictionInput_DataFormat {
 	if m != nil {
 		return m.DataFormat
@@ -824,11 +935,19 @@ func (m *PredictionInput) GetRegion() string {
 	return ""
 }
 
+func (m *PredictionInput) GetRuntimeVersion() string {
+	if m != nil {
+		return m.RuntimeVersion
+	}
+	return ""
+}
+
 // XXX_OneofFuncs is for the internal use of the proto package.
 func (*PredictionInput) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
 	return _PredictionInput_OneofMarshaler, _PredictionInput_OneofUnmarshaler, _PredictionInput_OneofSizer, []interface{}{
 		(*PredictionInput_ModelName)(nil),
 		(*PredictionInput_VersionName)(nil),
+		(*PredictionInput_Uri)(nil),
 	}
 }
 
@@ -842,6 +961,9 @@ func _PredictionInput_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
 	case *PredictionInput_VersionName:
 		b.EncodeVarint(2<<3 | proto.WireBytes)
 		b.EncodeStringBytes(x.VersionName)
+	case *PredictionInput_Uri:
+		b.EncodeVarint(9<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.Uri)
 	case nil:
 	default:
 		return fmt.Errorf("PredictionInput.ModelVersion has unexpected type %T", x)
@@ -866,6 +988,13 @@ func _PredictionInput_OneofUnmarshaler(msg proto.Message, tag, wire int, b *prot
 		x, err := b.DecodeStringBytes()
 		m.ModelVersion = &PredictionInput_VersionName{x}
 		return true, err
+	case 9: // model_version.uri
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.ModelVersion = &PredictionInput_Uri{x}
+		return true, err
 	default:
 		return false, nil
 	}
@@ -883,6 +1012,10 @@ func _PredictionInput_OneofSizer(msg proto.Message) (n int) {
 		n += proto.SizeVarint(2<<3 | proto.WireBytes)
 		n += proto.SizeVarint(uint64(len(x.VersionName)))
 		n += len(x.VersionName)
+	case *PredictionInput_Uri:
+		n += proto.SizeVarint(9<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.Uri)))
+		n += len(x.Uri)
 	case nil:
 	default:
 		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
@@ -898,6 +1031,8 @@ type PredictionOutput struct {
 	PredictionCount int64 `protobuf:"varint,2,opt,name=prediction_count,json=predictionCount" json:"prediction_count,omitempty"`
 	// The number of data instances which resulted in errors.
 	ErrorCount int64 `protobuf:"varint,3,opt,name=error_count,json=errorCount" json:"error_count,omitempty"`
+	// Node hours used by the batch prediction job.
+	NodeHours float64 `protobuf:"fixed64,4,opt,name=node_hours,json=nodeHours" json:"node_hours,omitempty"`
 }
 
 func (m *PredictionOutput) Reset()                    { *m = PredictionOutput{} }
@@ -926,6 +1061,13 @@ func (m *PredictionOutput) GetErrorCount() int64 {
 	return 0
 }
 
+func (m *PredictionOutput) GetNodeHours() float64 {
+	if m != nil {
+		return m.NodeHours
+	}
+	return 0
+}
+
 // Represents a training or prediction job.
 type Job struct {
 	// Required. The user-specified id of the job.
@@ -1547,125 +1689,136 @@ var _JobService_serviceDesc = grpc.ServiceDesc{
 func init() { proto.RegisterFile("google/cloud/ml/v1beta1/job_service.proto", fileDescriptor0) }
 
 var fileDescriptor0 = []byte{
-	// 1919 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x5b, 0x73, 0x1b, 0x49,
-	0x15, 0xb6, 0xae, 0x96, 0x8e, 0x6c, 0x69, 0xd2, 0xb9, 0xac, 0x56, 0x59, 0x88, 0x33, 0x29, 0xb2,
-	0x72, 0xa8, 0x48, 0x1b, 0x67, 0xa9, 0xda, 0xcd, 0x16, 0x54, 0x8d, 0xa5, 0xb1, 0x2d, 0x97, 0x75,
-	0xa1, 0x35, 0x0a, 0x21, 0x45, 0xd5, 0x54, 0x4b, 0xea, 0x28, 0xe3, 0xcc, 0x8d, 0x99, 0xb1, 0xb1,
-	0x96, 0x4a, 0x41, 0x01, 0x4f, 0xf0, 0x48, 0xc1, 0x03, 0x6f, 0xbc, 0xf2, 0xc4, 0x1f, 0xe0, 0x57,
-	0xf0, 0x17, 0xf8, 0x21, 0x54, 0x5f, 0x66, 0x74, 0x71, 0x6c, 0x67, 0x0b, 0xde, 0xa6, 0xcf, 0xf9,
-	0xce, 0xfd, 0xf4, 0xe9, 0x23, 0xc1, 0xee, 0xcc, 0xf3, 0x66, 0x36, 0x6d, 0x4e, 0x6c, 0xef, 0x6c,
-	0xda, 0x74, 0xec, 0xe6, 0xf9, 0xb3, 0x31, 0x8d, 0xc8, 0xb3, 0xe6, 0xa9, 0x37, 0x36, 0x43, 0x1a,
-	0x9c, 0x5b, 0x13, 0xda, 0xf0, 0x03, 0x2f, 0xf2, 0xd0, 0x27, 0x02, 0xda, 0xe0, 0xd0, 0x86, 0x63,
-	0x37, 0x24, 0xb4, 0xf6, 0x99, 0xd4, 0x41, 0x7c, 0xab, 0x49, 0x5c, 0xd7, 0x8b, 0x48, 0x64, 0x79,
-	0x6e, 0x28, 0xc4, 0x6a, 0xf7, 0x25, 0x97, 0x9f, 0xc6, 0x67, 0x6f, 0x9a, 0xd4, 0xf1, 0xa3, 0xb9,
-	0x64, 0x3e, 0x58, 0x67, 0x46, 0x96, 0x43, 0xc3, 0x88, 0x38, 0xbe, 0x00, 0xa8, 0xff, 0xca, 0xc2,
-	0xb6, 0x11, 0x10, 0xcb, 0xb5, 0xdc, 0x59, 0xc7, 0xf5, 0xcf, 0x22, 0xd4, 0x07, 0x08, 0x27, 0xc4,
-	0xa6, 0x66, 0x64, 0xd1, 0xa0, 0x9a, 0xda, 0x49, 0xd5, 0xcb, 0x7b, 0x5f, 0x34, 0xae, 0xf0, 0xad,
-	0xb1, 0x22, 0xdb, 0x18, 0x32, 0x41, 0xc3, 0xa2, 0x01, 0x2e, 0x86, 0xf1, 0x27, 0x7a, 0x00, 0x25,
-	0x87, 0x84, 0x11, 0x0d, 0xcc, 0x68, 0xee, 0xd3, 0x6a, 0x7a, 0x27, 0x55, 0x2f, 0x62, 0x10, 0x24,
-	0x63, 0xee, 0x53, 0x06, 0xf8, 0x95, 0x17, 0xbc, 0x8b, 0x01, 0x19, 0x01, 0x10, 0x24, 0x0e, 0xd8,
-	0x83, 0xbb, 0x3e, 0x09, 0x88, 0x43, 0x99, 0x12, 0x96, 0xb4, 0x18, 0x9a, 0xe5, 0xd0, 0xdb, 0x09,
-	0x73, 0xc8, 0x79, 0x5c, 0xe6, 0x21, 0x6c, 0x49, 0xa5, 0x13, 0xef, 0xcc, 0x8d, 0xaa, 0xb9, 0x9d,
-	0x54, 0x3d, 0x83, 0xa5, 0xa1, 0x16, 0x23, 0xa1, 0x2f, 0xe1, 0xde, 0x25, 0xb5, 0x02, 0x9c, 0xe7,
-	0xe0, 0x3b, 0x6b, 0x7a, 0x85, 0xd4, 0x43, 0xd8, 0xf2, 0xc9, 0xe4, 0x1d, 0x99, 0x51, 0xf3, 0x2c,
-	0xb0, 0xc2, 0xea, 0xe6, 0x4e, 0xa6, 0x5e, 0xc4, 0x25, 0x49, 0x1b, 0x05, 0x56, 0x88, 0x1e, 0xc1,
-	0xb6, 0x3f, 0x8f, 0xde, 0x7a, 0xae, 0xe9, 0x78, 0xd3, 0x33, 0x9b, 0x56, 0x0b, 0xdc, 0xcf, 0x2d,
-	0x41, 0xec, 0x72, 0x1a, 0x42, 0x90, 0x25, 0xc1, 0x2c, 0xac, 0x02, 0x97, 0xe7, 0xdf, 0x68, 0x04,
-	0x95, 0xb7, 0x73, 0x9f, 0x06, 0x89, 0xe1, 0xb0, 0xba, 0xb5, 0x93, 0xaa, 0x97, 0xf6, 0x7e, 0x78,
-	0x65, 0x01, 0x8e, 0x56, 0xf0, 0x43, 0x9f, 0x4e, 0xf0, 0xba, 0x0e, 0x74, 0x0f, 0xf2, 0x01, 0x9d,
-	0x59, 0x9e, 0x5b, 0x2d, 0x73, 0x47, 0xe4, 0x49, 0xd5, 0xa0, 0x98, 0x54, 0x0c, 0x15, 0x21, 0xb7,
-	0xaf, 0x0d, 0x3b, 0x2d, 0x65, 0x03, 0x95, 0x01, 0x86, 0x86, 0xd6, 0x6b, 0x6b, 0xb8, 0x6d, 0x3e,
-	0x53, 0x52, 0x68, 0x1b, 0x8a, 0x03, 0xac, 0x77, 0x3b, 0xa3, 0xae, 0xf9, 0x4c, 0xc9, 0x20, 0x80,
-	0x7c, 0x6b, 0x34, 0x34, 0xfa, 0x5d, 0x25, 0xa7, 0xfe, 0x33, 0x0d, 0xe8, 0xb2, 0x0b, 0xe8, 0x08,
-	0xb2, 0x33, 0x8f, 0xd8, 0xb2, 0x7d, 0xbe, 0xfc, 0x0e, 0xde, 0x37, 0x0e, 0x3d, 0x62, 0xb3, 0x0a,
-	0x62, 0xae, 0x01, 0xfd, 0x04, 0xf2, 0x9c, 0x1f, 0x56, 0xd3, 0x3b, 0x99, 0x7a, 0x69, 0xef, 0xf1,
-	0x95, 0xba, 0x06, 0x2b, 0x49, 0x90, 0x52, 0xe8, 0x7b, 0x00, 0x0e, 0xb9, 0x30, 0xa3, 0xc0, 0x22,
-	0x76, 0xc8, 0x7b, 0x2b, 0x87, 0x8b, 0x0e, 0xb9, 0x30, 0x38, 0x01, 0x35, 0xe0, 0x36, 0x63, 0x33,
-	0xb0, 0x6d, 0x53, 0x3b, 0xc6, 0x65, 0x39, 0xee, 0x96, 0x43, 0x2e, 0x06, 0x92, 0x23, 0xf0, 0xaa,
-	0x06, 0x85, 0xd8, 0x41, 0xf4, 0x29, 0xdc, 0x3d, 0xec, 0x6b, 0x27, 0xa6, 0xf1, 0xf3, 0x81, 0x6e,
-	0x8e, 0x7a, 0xc3, 0x81, 0xde, 0xea, 0x1c, 0x74, 0xf4, 0xb6, 0xb2, 0x81, 0xb6, 0xa0, 0xd0, 0xd5,
-	0x5e, 0x75, 0xba, 0x9d, 0xd7, 0xba, 0x92, 0xe2, 0xa7, 0x4e, 0x4f, 0x9c, 0xd2, 0xea, 0x3f, 0xb2,
-	0xb0, 0xbd, 0xe2, 0x2b, 0xfa, 0x01, 0x94, 0x17, 0x8d, 0xe8, 0x12, 0x87, 0xf2, 0xbc, 0x15, 0xf1,
-	0x76, 0x42, 0xed, 0x11, 0x87, 0xb2, 0xa4, 0x26, 0x5d, 0x7f, 0x5d, 0x52, 0x57, 0x94, 0x2f, 0x4e,
-	0x22, 0xa9, 0x4c, 0x03, 0xba, 0x0f, 0x45, 0xc7, 0x72, 0xcd, 0x73, 0x62, 0x9f, 0x89, 0x0b, 0x99,
-	0xc2, 0x05, 0xc7, 0x72, 0x5f, 0xb2, 0x33, 0x67, 0x92, 0x0b, 0xc9, 0xcc, 0x48, 0x26, 0xb9, 0x10,
-	0xcc, 0xa7, 0x80, 0x26, 0x24, 0xa2, 0x33, 0x2f, 0xb0, 0x26, 0xc4, 0x16, 0xa0, 0xb0, 0x9a, 0xe3,
-	0x3d, 0x7c, 0x6b, 0x89, 0xc3, 0xd1, 0x21, 0xfa, 0x1c, 0x2a, 0x53, 0x2b, 0x9c, 0x04, 0x34, 0xa2,
-	0x31, 0x36, 0xbf, 0x93, 0xa9, 0xa7, 0x70, 0x39, 0x26, 0x4b, 0xe0, 0x62, 0xea, 0xb0, 0x08, 0x37,
-	0x6f, 0x98, 0x3a, 0xab, 0x11, 0x8a, 0x1e, 0x66, 0xd1, 0xc9, 0xa9, 0x33, 0xf7, 0xa9, 0x3a, 0x5b,
-	0x4a, 0x32, 0xaf, 0xd6, 0xf7, 0xa1, 0x36, 0xd0, 0xb0, 0xd6, 0xd5, 0x0d, 0x1d, 0x7f, 0xa8, 0x64,
-	0x00, 0xf9, 0x76, 0x7f, 0xb4, 0x7f, 0xc2, 0x0a, 0x56, 0x82, 0xcd, 0x4e, 0xcf, 0xd0, 0x0f, 0x75,
-	0xac, 0xa4, 0x51, 0x05, 0x4a, 0x2d, 0xcd, 0xd0, 0x0f, 0xfb, 0xb8, 0xd3, 0xd2, 0x4e, 0x94, 0x0c,
-	0x2b, 0x67, 0xbb, 0x33, 0x6c, 0x61, 0xdd, 0xd0, 0x95, 0xac, 0xfa, 0x8b, 0xf8, 0x12, 0x31, 0x23,
-	0x05, 0xc8, 0xf6, 0xfa, 0x3d, 0x5d, 0xd9, 0x40, 0x77, 0xe1, 0xd6, 0xa8, 0xd7, 0x31, 0xcc, 0x93,
-	0x4e, 0x4f, 0xd7, 0xb0, 0x39, 0x6c, 0x69, 0x5c, 0x33, 0x82, 0xb2, 0x20, 0xf7, 0x0f, 0x25, 0x2d,
-	0x8d, 0x6a, 0x70, 0x8f, 0xd3, 0xb0, 0xfe, 0x52, 0xc7, 0x43, 0x7d, 0x89, 0x97, 0x51, 0xff, 0x92,
-	0x85, 0x3b, 0xab, 0x97, 0xa4, 0x7f, 0x16, 0xb1, 0x31, 0xfd, 0x29, 0x14, 0x78, 0xaf, 0x9a, 0xd6,
-	0x54, 0x76, 0xcb, 0x26, 0x3f, 0x77, 0xa6, 0xc8, 0xbe, 0x3c, 0x45, 0xc4, 0xdd, 0xd9, 0xff, 0xc8,
-	0x7b, 0x28, 0x4c, 0xac, 0x11, 0x43, 0xdd, 0x8d, 0x82, 0xf9, 0xe5, 0xe1, 0x42, 0x61, 0xeb, 0x8d,
-	0xe5, 0x12, 0xdb, 0x74, 0x68, 0x14, 0x58, 0x13, 0xde, 0x31, 0xff, 0xa3, 0xa9, 0x2e, 0xd7, 0x84,
-	0x4b, 0x5c, 0xaf, 0x38, 0xa0, 0x09, 0x94, 0x88, 0x1d, 0x1b, 0x61, 0x17, 0x34, 0xf3, 0x7f, 0xb2,
-	0x02, 0xc4, 0x96, 0x36, 0xc2, 0xda, 0x74, 0x3d, 0xd9, 0xd2, 0xf8, 0x23, 0xd8, 0x8e, 0xe4, 0x43,
-	0x67, 0x86, 0x11, 0xf5, 0x79, 0xc6, 0x33, 0x78, 0x2b, 0x26, 0x0e, 0x23, 0xea, 0xb3, 0x5e, 0xf7,
-	0xc6, 0xa7, 0x74, 0x12, 0x59, 0xe7, 0x74, 0xe5, 0x6a, 0x95, 0x13, 0x32, 0x6f, 0xf6, 0xda, 0xfe,
-	0xba, 0x15, 0x91, 0x5a, 0xa4, 0x40, 0xe6, 0x1d, 0x9d, 0xcb, 0x6a, 0xb2, 0x4f, 0x74, 0x07, 0x72,
-	0x0b, 0x45, 0x45, 0x2c, 0x0e, 0x2f, 0xd2, 0x5f, 0xa5, 0xd4, 0x3f, 0xa5, 0xa0, 0x1c, 0xbf, 0xbd,
-	0xb2, 0x23, 0xf6, 0xe0, 0xee, 0xc4, 0x73, 0x7c, 0x9b, 0x46, 0x74, 0x2a, 0xe6, 0x98, 0x7c, 0xcd,
-	0x84, 0xb3, 0xb7, 0x13, 0x26, 0x1f, 0x65, 0xe2, 0x31, 0xd3, 0x21, 0x2f, 0x27, 0x9e, 0xe8, 0x90,
-	0xa7, 0xdf, 0x29, 0xa1, 0x58, 0x0a, 0xab, 0x7f, 0xcb, 0x40, 0x65, 0x10, 0xd0, 0xa9, 0x35, 0x61,
-	0x9b, 0x89, 0xd8, 0x23, 0x1e, 0x00, 0x38, 0xde, 0x94, 0xda, 0x4b, 0x03, 0xed, 0x68, 0x03, 0x17,
-	0x39, 0x8d, 0x8f, 0xb3, 0x47, 0xb0, 0x75, 0x4e, 0x83, 0xd0, 0xf2, 0x5c, 0x01, 0x49, 0x4b, 0x48,
-	0x49, 0x52, 0x39, 0xc8, 0x80, 0xd2, 0x94, 0x44, 0xc4, 0x7c, 0xe3, 0x05, 0x0e, 0x89, 0x78, 0x73,
-	0x95, 0xf7, 0x9e, 0x5f, 0x3d, 0x18, 0x56, 0x9d, 0x68, 0xb4, 0x49, 0x44, 0x0e, 0xb8, 0x28, 0x86,
-	0x69, 0xf2, 0xcd, 0x36, 0x0e, 0x8b, 0xf1, 0x4d, 0x9f, 0x44, 0x6f, 0x45, 0x33, 0x15, 0x31, 0x70,
-	0xd2, 0x80, 0x51, 0x18, 0xc0, 0xe3, 0x21, 0x72, 0x04, 0x5f, 0x1e, 0x8a, 0x18, 0x04, 0x89, 0x21,
-	0x50, 0x1d, 0x14, 0x36, 0x24, 0x57, 0x56, 0x0c, 0xb1, 0x35, 0x94, 0x1d, 0x72, 0xf1, 0xb3, 0xa5,
-	0x2d, 0x63, 0xf1, 0xf8, 0x6e, 0xae, 0x3c, 0xbe, 0x2f, 0x01, 0x16, 0xde, 0xa1, 0xfb, 0xf0, 0x49,
-	0x5b, 0x33, 0x34, 0xf3, 0xa0, 0x8f, 0xbb, 0x9a, 0xb1, 0x36, 0x9a, 0x0a, 0x90, 0x35, 0xf4, 0x57,
-	0x86, 0x78, 0x89, 0x8d, 0x03, 0x13, 0xeb, 0xad, 0x3e, 0x6e, 0x2b, 0x69, 0x36, 0x4d, 0x92, 0xa3,
-	0x79, 0xf8, 0xba, 0x33, 0x50, 0x32, 0xfb, 0x15, 0xd8, 0x16, 0x79, 0x97, 0x69, 0x54, 0x7f, 0x03,
-	0xca, 0x22, 0x2d, 0xb2, 0x57, 0xd6, 0xe2, 0x4b, 0x5d, 0x8a, 0x6f, 0x17, 0x14, 0x3f, 0x11, 0x92,
-	0xf1, 0xa5, 0x79, 0x7c, 0x95, 0x05, 0x5d, 0x04, 0xf8, 0x00, 0x4a, 0x34, 0x08, 0xbc, 0x38, 0x0b,
-	0x19, 0x8e, 0x02, 0x4e, 0xe2, 0x00, 0xf5, 0xaf, 0x79, 0xc8, 0x1c, 0x7b, 0x63, 0x74, 0x17, 0xf2,
-	0x6c, 0xeb, 0x4d, 0x06, 0x56, 0xee, 0xd4, 0x1b, 0x77, 0xa6, 0xa8, 0x0f, 0xe5, 0xe4, 0x72, 0xf1,
-	0x12, 0x70, 0x43, 0xd7, 0xbd, 0xf4, 0x2b, 0x4b, 0xe7, 0xd1, 0x06, 0x4e, 0x2e, 0xa7, 0xe8, 0xbc,
-	0xd1, 0x8a, 0xef, 0x42, 0xa5, 0x98, 0x4a, 0xf5, 0x8f, 0x6d, 0x9c, 0xa3, 0x8d, 0xe5, 0x38, 0x85,
-	0xda, 0x6f, 0xa0, 0x34, 0x09, 0x28, 0x89, 0xd8, 0x66, 0xec, 0x88, 0x57, 0xb8, 0xb4, 0x57, 0x8b,
-	0x35, 0xc6, 0x1b, 0x76, 0xc3, 0x88, 0x37, 0x6c, 0x0c, 0x02, 0xce, 0x08, 0xe8, 0x6b, 0x80, 0x30,
-	0x22, 0x41, 0x24, 0x64, 0x73, 0x37, 0xca, 0x16, 0x39, 0x9a, 0x8b, 0xfe, 0x08, 0x0a, 0xd4, 0x9d,
-	0x0a, 0xc1, 0xfc, 0x8d, 0x82, 0x9b, 0xd4, 0x9d, 0x72, 0xb1, 0xaf, 0x20, 0x17, 0x46, 0x24, 0x8a,
-	0x1f, 0x53, 0xf5, 0xca, 0xd0, 0x8f, 0xbd, 0x71, 0x63, 0xc8, 0x90, 0x58, 0x08, 0xb0, 0x69, 0x27,
-	0x0a, 0xea, 0xd0, 0x30, 0x24, 0xb3, 0x64, 0x7d, 0xe5, 0xc4, 0xae, 0xa0, 0x21, 0x0c, 0x95, 0xa4,
-	0x6a, 0xa2, 0x6f, 0xaa, 0x45, 0xee, 0xdc, 0xe7, 0x37, 0x96, 0x4d, 0xf4, 0xe0, 0x51, 0x0a, 0x27,
-	0x75, 0x97, 0x5d, 0xf9, 0x0a, 0x6e, 0x2d, 0x15, 0x4e, 0x6a, 0x05, 0xae, 0x75, 0xf7, 0x23, 0x2a,
-	0x97, 0xe8, 0x5d, 0x2a, 0xbf, 0xa0, 0xa9, 0xbf, 0x4d, 0x41, 0x8e, 0xc7, 0xc8, 0xde, 0xe5, 0xa1,
-	0xa1, 0x19, 0x1f, 0x78, 0xfd, 0x7f, 0x3a, 0xd2, 0x47, 0x7a, 0x3b, 0x59, 0x77, 0x07, 0x1a, 0xee,
-	0xf4, 0x0e, 0x95, 0x34, 0x5b, 0x06, 0xf0, 0xa8, 0xd7, 0x63, 0x87, 0x0c, 0xe3, 0x0d, 0x47, 0xad,
-	0x96, 0xae, 0xb7, 0xf5, 0xb6, 0x92, 0x65, 0x62, 0x07, 0x5a, 0xe7, 0x44, 0x6f, 0x2b, 0x39, 0xb6,
-	0x35, 0xb7, 0xb4, 0x5e, 0x4b, 0x3f, 0x39, 0x61, 0xd0, 0x3c, 0x83, 0xca, 0xb3, 0xde, 0x56, 0x36,
-	0xf7, 0x37, 0x21, 0xc7, 0x5b, 0x71, 0xbf, 0x00, 0x79, 0x11, 0x9a, 0xfa, 0x1a, 0x94, 0x16, 0x6f,
-	0x91, 0x63, 0x6f, 0x8c, 0xe9, 0x2f, 0xcf, 0x68, 0xc8, 0xc7, 0x85, 0x4f, 0x02, 0x2a, 0xc7, 0x76,
-	0x11, 0xcb, 0x13, 0x6a, 0x40, 0xe6, 0xd4, 0x1b, 0xcb, 0xab, 0xf1, 0xd9, 0x75, 0xc5, 0xc4, 0x0c,
-	0xa8, 0xbe, 0x87, 0xca, 0x89, 0x15, 0x46, 0xc7, 0xde, 0x38, 0xbc, 0x49, 0xf5, 0x3d, 0xc8, 0xbf,
-	0xb1, 0xec, 0x88, 0x06, 0xf2, 0x99, 0x91, 0x27, 0xb6, 0x3a, 0xfb, 0xec, 0x67, 0x4e, 0xe4, 0xbd,
-	0xa3, 0xae, 0xfc, 0xad, 0x55, 0x64, 0x14, 0x83, 0x11, 0xd8, 0x9e, 0xc8, 0xd9, 0xa1, 0xf5, 0xad,
-	0xe8, 0xe8, 0x1c, 0x2e, 0x30, 0xc2, 0xd0, 0xfa, 0x96, 0xaa, 0x36, 0x28, 0x0b, 0xf3, 0xa1, 0xef,
-	0xb9, 0x21, 0x45, 0x5f, 0x40, 0xf6, 0xd4, 0x1b, 0x87, 0xd5, 0x14, 0x7f, 0x6a, 0xae, 0x8f, 0x81,
-	0x23, 0xd1, 0x63, 0xa8, 0xb8, 0xf4, 0x82, 0x0d, 0xa9, 0xc4, 0x0d, 0xe1, 0xe2, 0x36, 0x23, 0x0f,
-	0x62, 0x57, 0xd4, 0x47, 0xb0, 0x7d, 0x48, 0xa3, 0xa5, 0x2c, 0x22, 0xc8, 0x2e, 0xed, 0xd1, 0xfc,
-	0x5b, 0x7d, 0x0c, 0x4a, 0x8b, 0xb8, 0x13, 0x6a, 0x5f, 0x8f, 0xdb, 0xfb, 0x7b, 0x16, 0xe0, 0xd8,
-	0x1b, 0x0f, 0xc5, 0x8f, 0x73, 0xf4, 0x87, 0x14, 0x14, 0x93, 0x2a, 0xa1, 0xab, 0xfb, 0x70, 0xbd,
-	0x92, 0xb5, 0x6b, 0x03, 0x54, 0x1b, 0xbf, 0xfb, 0xf7, 0x7f, 0xfe, 0x9c, 0xae, 0xab, 0x0f, 0x93,
-	0x7f, 0x04, 0x7e, 0x2d, 0xca, 0xf1, 0x63, 0x3f, 0xf0, 0xd8, 0xba, 0x10, 0x36, 0x9f, 0xbc, 0x6f,
-	0xb2, 0x2c, 0xbc, 0x60, 0xf5, 0x44, 0x7f, 0x4c, 0x41, 0x21, 0xce, 0x28, 0xba, 0x7a, 0x8e, 0xad,
-	0xd5, 0xbc, 0xb6, 0xfb, 0x11, 0x48, 0x51, 0x1e, 0x75, 0x97, 0x7b, 0xf4, 0x08, 0xdd, 0xec, 0x11,
-	0x9a, 0x43, 0x5e, 0xe4, 0x1b, 0x5d, 0x3d, 0xa4, 0x57, 0x0a, 0x72, 0x43, 0x32, 0x3e, 0x60, 0x9a,
-	0x95, 0x62, 0xc9, 0x30, 0xb7, 0xdb, 0x7c, 0xf2, 0x1e, 0xfd, 0x9e, 0x95, 0x23, 0x2e, 0xe3, 0x75,
-	0xe5, 0x58, 0x2b, 0x75, 0xed, 0xde, 0xa5, 0xa1, 0xa9, 0x3b, 0x7e, 0x34, 0x57, 0x9f, 0x73, 0xdb,
-	0x4f, 0xd5, 0xfa, 0x8d, 0xb6, 0x5f, 0x4c, 0xb8, 0xce, 0x17, 0xa9, 0x27, 0xfb, 0x1e, 0x3c, 0x98,
-	0x78, 0xce, 0x25, 0xe3, 0xc4, 0xb7, 0x62, 0x07, 0xf6, 0x2b, 0x8b, 0x1e, 0x1a, 0x30, 0x8b, 0x83,
-	0xd4, 0xeb, 0xaf, 0x25, 0x7e, 0xe6, 0xd9, 0xc4, 0x9d, 0x35, 0xbc, 0x60, 0xd6, 0x9c, 0x51, 0x97,
-	0xfb, 0xd3, 0x14, 0x2c, 0xe2, 0x5b, 0xe1, 0xa5, 0xff, 0x8a, 0xbe, 0x71, 0xec, 0x71, 0x9e, 0xa3,
-	0x9e, 0xff, 0x37, 0x00, 0x00, 0xff, 0xff, 0xbd, 0xb0, 0x8b, 0x60, 0x50, 0x12, 0x00, 0x00,
+	// 2082 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x4b, 0x6f, 0x1b, 0xc9,
+	0x11, 0x16, 0x9f, 0x22, 0x8b, 0x12, 0x39, 0x6e, 0x5b, 0x36, 0x2d, 0x7b, 0x63, 0x79, 0x8c, 0x78,
+	0x65, 0x07, 0x26, 0xd7, 0xf2, 0x06, 0xd8, 0xf5, 0x22, 0x09, 0x28, 0x72, 0x2c, 0x51, 0x10, 0x1f,
+	0x69, 0x0e, 0x1d, 0xc7, 0x08, 0x30, 0x68, 0x92, 0x6d, 0x7a, 0xe4, 0x99, 0xe9, 0xc9, 0x4c, 0xd3,
+	0x91, 0x36, 0x30, 0x10, 0x24, 0x39, 0xe5, 0x90, 0x4b, 0x90, 0x1c, 0x03, 0xe4, 0x9a, 0xbf, 0x93,
+	0x43, 0xfe, 0x40, 0x8e, 0xf9, 0x01, 0x39, 0x06, 0xfd, 0xe0, 0x53, 0x96, 0xe4, 0x45, 0x72, 0x63,
+	0x7f, 0xf5, 0x55, 0x55, 0x77, 0x55, 0x75, 0x4d, 0x35, 0xe1, 0xd1, 0x98, 0xb1, 0xb1, 0x47, 0xab,
+	0x43, 0x8f, 0x4d, 0x46, 0x55, 0xdf, 0xab, 0xbe, 0x7f, 0x3a, 0xa0, 0x9c, 0x3c, 0xad, 0x9e, 0xb0,
+	0x81, 0x13, 0xd3, 0xe8, 0xbd, 0x3b, 0xa4, 0x95, 0x30, 0x62, 0x9c, 0xa1, 0x5b, 0x8a, 0x5a, 0x91,
+	0xd4, 0x8a, 0xef, 0x55, 0x34, 0x75, 0xfb, 0xae, 0xb6, 0x41, 0x42, 0xb7, 0x4a, 0x82, 0x80, 0x71,
+	0xc2, 0x5d, 0x16, 0xc4, 0x4a, 0x6d, 0x7b, 0x6b, 0x51, 0x3a, 0xe1, 0x6f, 0x35, 0x7c, 0x47, 0xc3,
+	0x72, 0x35, 0x98, 0xbc, 0xa9, 0x52, 0x3f, 0xe4, 0x67, 0x5a, 0x78, 0x6f, 0x55, 0xc8, 0x5d, 0x9f,
+	0xc6, 0x9c, 0xf8, 0xa1, 0x22, 0x98, 0x7f, 0xcc, 0xc0, 0xa6, 0x1d, 0x11, 0x37, 0x70, 0x83, 0x71,
+	0x33, 0x08, 0x27, 0x1c, 0x75, 0x00, 0xe2, 0x21, 0xf1, 0xa8, 0xc3, 0x5d, 0x1a, 0x95, 0x13, 0x3b,
+	0x89, 0xdd, 0xe2, 0xde, 0x17, 0x95, 0x0b, 0xb6, 0x5c, 0x59, 0xd2, 0xad, 0xf4, 0x84, 0xa2, 0xed,
+	0xd2, 0x08, 0xe7, 0xe3, 0xe9, 0x4f, 0x74, 0x0f, 0x0a, 0x3e, 0x89, 0x39, 0x8d, 0x1c, 0x7e, 0x16,
+	0xd2, 0x72, 0x72, 0x27, 0xb1, 0x9b, 0xc7, 0xa0, 0x20, 0xfb, 0x2c, 0xa4, 0x82, 0xf0, 0x2b, 0x16,
+	0xbd, 0x9b, 0x12, 0x52, 0x8a, 0xa0, 0x20, 0x49, 0xd8, 0x83, 0xad, 0x90, 0x44, 0xc4, 0xa7, 0xc2,
+	0x88, 0x88, 0xe5, 0x94, 0x9a, 0x96, 0xd4, 0xeb, 0x33, 0x61, 0x4f, 0xca, 0xa4, 0xce, 0x7d, 0xd8,
+	0xd0, 0x46, 0x87, 0x6c, 0x12, 0xf0, 0x72, 0x66, 0x27, 0xb1, 0x9b, 0xc2, 0xda, 0x51, 0x5d, 0x40,
+	0xe8, 0x4b, 0xb8, 0x79, 0xce, 0xac, 0x22, 0x67, 0x25, 0xf9, 0xc6, 0x8a, 0x5d, 0xa5, 0x75, 0x1f,
+	0x36, 0x42, 0x32, 0x7c, 0x47, 0xc6, 0xd4, 0x99, 0x44, 0x6e, 0x5c, 0x5e, 0xdf, 0x49, 0xed, 0xe6,
+	0x71, 0x41, 0x63, 0xfd, 0xc8, 0x8d, 0xd1, 0x03, 0xd8, 0x0c, 0xcf, 0xf8, 0x5b, 0x16, 0x38, 0x3e,
+	0x1b, 0x4d, 0x3c, 0x5a, 0xce, 0xc9, 0x7d, 0x6e, 0x28, 0xb0, 0x25, 0x31, 0x84, 0x20, 0x4d, 0xa2,
+	0x71, 0x5c, 0x06, 0xa9, 0x2f, 0x7f, 0xa3, 0x3e, 0x94, 0xde, 0x9e, 0x85, 0x34, 0x9a, 0x39, 0x8e,
+	0xcb, 0x1b, 0x3b, 0x89, 0xdd, 0xc2, 0xde, 0x0f, 0x2e, 0x4c, 0xc0, 0xe1, 0x12, 0xbf, 0x17, 0xd2,
+	0x21, 0x5e, 0xb5, 0x81, 0x6e, 0x42, 0x36, 0xa2, 0x63, 0x97, 0x05, 0xe5, 0xa2, 0xdc, 0x88, 0x5e,
+	0xa1, 0x5b, 0xb0, 0x2e, 0xaa, 0x73, 0xe4, 0x46, 0x65, 0x43, 0x09, 0x4e, 0xd8, 0xa0, 0xe1, 0x46,
+	0xe8, 0x73, 0x28, 0x45, 0x93, 0x40, 0xd4, 0x8a, 0xf3, 0x9e, 0x46, 0xb1, 0xd0, 0x2c, 0x49, 0x42,
+	0x51, 0xc3, 0x2f, 0x15, 0x6a, 0x76, 0x21, 0x3f, 0xcb, 0x39, 0xca, 0x43, 0x66, 0xbf, 0xd6, 0x6b,
+	0xd6, 0x8d, 0x35, 0x54, 0x04, 0xe8, 0xd9, 0xb5, 0x76, 0xa3, 0x86, 0x1b, 0xce, 0x53, 0x23, 0x81,
+	0x36, 0x21, 0xdf, 0xc5, 0x56, 0xab, 0xd9, 0x6f, 0x39, 0x4f, 0x8d, 0x94, 0x58, 0x4a, 0xa6, 0x73,
+	0xd0, 0xed, 0x1b, 0x59, 0x04, 0x90, 0xad, 0xf7, 0x7b, 0x76, 0xa7, 0x65, 0x64, 0xcc, 0x7f, 0x27,
+	0x01, 0x9d, 0x3f, 0x13, 0x3a, 0x84, 0xf4, 0x98, 0x11, 0x4f, 0xd7, 0xe3, 0x97, 0xdf, 0x21, 0x1c,
+	0x95, 0x03, 0x46, 0x3c, 0x51, 0x12, 0x58, 0x5a, 0x40, 0x3f, 0x86, 0xac, 0x94, 0xc7, 0xe5, 0xe4,
+	0x4e, 0x6a, 0xb7, 0xb0, 0xf7, 0xf0, 0x42, 0x5b, 0xdd, 0xa5, 0xa8, 0x6a, 0x2d, 0xf4, 0x19, 0x80,
+	0x4f, 0x4e, 0x1d, 0x1e, 0xb9, 0xc4, 0x8b, 0x65, 0xb1, 0x66, 0x70, 0xde, 0x27, 0xa7, 0xb6, 0x04,
+	0x50, 0x05, 0xae, 0x0b, 0xb1, 0x20, 0x7b, 0x1e, 0xf5, 0xa6, 0xbc, 0xb4, 0xe4, 0x5d, 0xf3, 0xc9,
+	0x69, 0x57, 0x4b, 0x34, 0xff, 0x39, 0xdc, 0x5e, 0x4e, 0x97, 0xe3, 0x53, 0x1e, 0xb9, 0x43, 0x87,
+	0x93, 0xb1, 0x2c, 0xda, 0x3c, 0xbe, 0xb5, 0x4c, 0x68, 0x49, 0xb9, 0x4d, 0xc6, 0x66, 0x0d, 0x72,
+	0xd3, 0xc3, 0xa1, 0xdb, 0xb0, 0x75, 0xd0, 0xa9, 0x1d, 0x3b, 0xf6, 0xcf, 0xbb, 0x96, 0xd3, 0x6f,
+	0xf7, 0xba, 0x56, 0xbd, 0xf9, 0xa2, 0x69, 0x35, 0x8c, 0x35, 0xb4, 0x01, 0xb9, 0x56, 0xed, 0x55,
+	0xb3, 0xd5, 0x7c, 0x6d, 0x19, 0x09, 0xb9, 0x6a, 0xb6, 0xd5, 0x2a, 0x69, 0xfe, 0x3d, 0x0d, 0x9b,
+	0x4b, 0xe7, 0x44, 0xdf, 0x87, 0xe2, 0x7c, 0x2f, 0x01, 0xf1, 0xa9, 0x8c, 0x79, 0x1e, 0x6f, 0xce,
+	0xd0, 0x36, 0xf1, 0xa9, 0x48, 0xc8, 0xec, 0x0a, 0x5e, 0x96, 0x90, 0x25, 0xe3, 0xf3, 0x95, 0x4a,
+	0x88, 0xb0, 0x80, 0xee, 0x40, 0xde, 0x77, 0x03, 0xe7, 0x3d, 0xf1, 0x26, 0xaa, 0x3b, 0x24, 0x70,
+	0xce, 0x77, 0x83, 0x97, 0x62, 0x2d, 0x85, 0xe4, 0x54, 0x0b, 0x53, 0x5a, 0x48, 0x4e, 0x95, 0xf0,
+	0x09, 0xa0, 0x21, 0xe1, 0x74, 0xcc, 0x22, 0x77, 0x48, 0x3c, 0x45, 0x8a, 0xcb, 0x19, 0x79, 0xa1,
+	0xae, 0x2d, 0x48, 0x24, 0x3b, 0x16, 0x55, 0x3d, 0x72, 0xe3, 0x61, 0x44, 0x39, 0x9d, 0x72, 0xb3,
+	0x3b, 0xa9, 0xdd, 0x04, 0x2e, 0x4e, 0x61, 0x4d, 0x9c, 0xb7, 0x40, 0x71, 0xc2, 0xf5, 0x2b, 0x5a,
+	0xe0, 0xf2, 0x09, 0xd5, 0x75, 0x10, 0xa7, 0xd3, 0x2d, 0xf0, 0x2c, 0xa4, 0xe6, 0x78, 0x21, 0xc8,
+	0x32, 0x5b, 0xdf, 0x83, 0xed, 0x6e, 0x0d, 0xd7, 0x5a, 0x96, 0x6d, 0xe1, 0x8f, 0xa5, 0x0c, 0x20,
+	0xdb, 0xe8, 0xf4, 0xf7, 0x8f, 0x45, 0xc2, 0x0a, 0xb0, 0xde, 0x6c, 0xdb, 0xd6, 0x81, 0x85, 0x8d,
+	0x24, 0x2a, 0x41, 0xa1, 0x5e, 0xb3, 0xad, 0x83, 0x0e, 0x6e, 0xd6, 0x6b, 0xc7, 0x46, 0x4a, 0xa4,
+	0xb3, 0xd1, 0xec, 0xd5, 0xb1, 0x65, 0x5b, 0x46, 0xda, 0xfc, 0xc5, 0xf4, 0x3e, 0x0a, 0x27, 0x39,
+	0x48, 0xb7, 0x3b, 0x6d, 0xcb, 0x58, 0x43, 0x5b, 0x70, 0xad, 0xdf, 0x6e, 0xda, 0xce, 0x71, 0xb3,
+	0x6d, 0xd5, 0xb0, 0xd3, 0xab, 0xd7, 0xa4, 0x65, 0x04, 0x45, 0x05, 0x77, 0x0e, 0x34, 0x96, 0x44,
+	0xdb, 0x70, 0x53, 0x62, 0xd8, 0x7a, 0x69, 0xe1, 0x9e, 0xb5, 0x20, 0x4b, 0x99, 0x7f, 0x4e, 0xc3,
+	0x8d, 0xe5, 0x0b, 0xd6, 0x99, 0x70, 0xf1, 0xcd, 0xb8, 0x0d, 0x39, 0x59, 0xe7, 0x8e, 0x3b, 0xd2,
+	0xd5, 0xb2, 0x2e, 0xd7, 0xcd, 0x11, 0xf2, 0xce, 0xb7, 0x34, 0x75, 0xef, 0xf6, 0x3f, 0xf1, 0x0e,
+	0x2b, 0x17, 0x2b, 0x60, 0x6c, 0x05, 0x3c, 0x3a, 0x3b, 0xdf, 0xe9, 0x28, 0x6c, 0xbc, 0x71, 0x03,
+	0xe2, 0xe9, 0x4b, 0x24, 0x2b, 0xe6, 0x7f, 0x74, 0xa5, 0xae, 0x1b, 0x2e, 0x48, 0xbb, 0x6a, 0x81,
+	0x86, 0x50, 0x20, 0xde, 0xd4, 0x89, 0xb8, 0xdc, 0xa9, 0xff, 0x93, 0x17, 0x20, 0x9e, 0xf6, 0x11,
+	0x6f, 0x8f, 0x56, 0x83, 0xad, 0x9d, 0x3f, 0x80, 0x4d, 0xae, 0xbf, 0xba, 0x4e, 0xcc, 0x69, 0x28,
+	0x23, 0x9e, 0xc2, 0x1b, 0x53, 0xb0, 0xc7, 0x69, 0x28, 0x6a, 0x9d, 0x0d, 0x4e, 0xe8, 0x90, 0xbb,
+	0xef, 0xe9, 0xd2, 0xd5, 0x2a, 0xce, 0x60, 0x59, 0xec, 0xdb, 0xfb, 0xab, 0x5e, 0x54, 0x68, 0x91,
+	0x01, 0xa9, 0x77, 0xf4, 0x4c, 0x67, 0x53, 0xfc, 0x44, 0x37, 0x20, 0x33, 0x37, 0x94, 0xc7, 0x6a,
+	0xf1, 0x3c, 0xf9, 0x55, 0xc2, 0xfc, 0x4f, 0x02, 0x8a, 0xd3, 0x41, 0x40, 0x57, 0xc4, 0x1e, 0x6c,
+	0x0d, 0x99, 0x1f, 0x7a, 0x94, 0xd3, 0x91, 0xea, 0x81, 0xfa, 0xd3, 0xaa, 0x36, 0x7b, 0x7d, 0x26,
+	0x94, 0x6d, 0x50, 0x7d, 0x59, 0x2d, 0xc8, 0xea, 0x6e, 0xa9, 0x2a, 0xe4, 0xc9, 0x77, 0x0a, 0x28,
+	0xd6, 0xca, 0xe8, 0x31, 0x5c, 0x1b, 0xb2, 0x20, 0x9e, 0xf8, 0x74, 0xe4, 0xf8, 0x9e, 0x33, 0x09,
+	0x5c, 0x1e, 0xeb, 0xd6, 0x51, 0x9a, 0x0a, 0x5a, 0x5e, 0x5f, 0xc0, 0xe8, 0x27, 0x70, 0xd7, 0x8d,
+	0x9d, 0x95, 0x06, 0xcc, 0x27, 0x32, 0xb6, 0x27, 0x6c, 0x20, 0xbb, 0x5b, 0x0e, 0xdf, 0x76, 0xe3,
+	0x65, 0x8f, 0xb6, 0x64, 0x1c, 0xb1, 0x81, 0xf9, 0xcf, 0x14, 0x94, 0xba, 0x11, 0x1d, 0xb9, 0x43,
+	0x31, 0xaa, 0xa9, 0x09, 0xea, 0x1e, 0x80, 0xcf, 0x46, 0xd4, 0x5b, 0xe8, 0x9e, 0x87, 0x6b, 0x38,
+	0x2f, 0x31, 0xd9, 0x3b, 0x1f, 0xc0, 0x86, 0xfe, 0xac, 0x2a, 0x4a, 0x52, 0x53, 0x0a, 0x1a, 0x95,
+	0x24, 0x04, 0xa9, 0x49, 0xe4, 0x96, 0xf3, 0x5a, 0x26, 0x16, 0xc8, 0x86, 0xc2, 0x88, 0x70, 0xe2,
+	0xbc, 0x61, 0x91, 0x4f, 0xb8, 0x3c, 0x54, 0x71, 0xef, 0xd9, 0xc5, 0x9d, 0x69, 0x79, 0x63, 0x95,
+	0x06, 0xe1, 0xe4, 0x85, 0x54, 0xc5, 0x30, 0x9a, 0xfd, 0x16, 0xf3, 0x97, 0x2b, 0xe4, 0x4e, 0x48,
+	0xf8, 0x5b, 0x55, 0xcd, 0x79, 0x0c, 0x12, 0xea, 0x0a, 0x44, 0x10, 0x98, 0x8c, 0xb1, 0x64, 0xe8,
+	0xaf, 0x12, 0x28, 0x48, 0x30, 0xd0, 0x2e, 0x18, 0xa2, 0x4b, 0x2f, 0x0d, 0x5c, 0x6a, 0x86, 0x2a,
+	0xfa, 0xe4, 0xf4, 0x67, 0x0b, 0x33, 0xd7, 0x7c, 0x14, 0x59, 0x5f, 0x1a, 0x45, 0x3e, 0x32, 0x71,
+	0xe4, 0x3e, 0x3a, 0x71, 0xbc, 0x04, 0x98, 0x1f, 0x03, 0xdd, 0x81, 0x5b, 0x8d, 0x9a, 0x5d, 0x73,
+	0x5e, 0x74, 0x70, 0xab, 0x66, 0xaf, 0x34, 0xd1, 0x1c, 0xa4, 0x6d, 0xeb, 0x95, 0xad, 0xc6, 0x0f,
+	0xfb, 0x85, 0x83, 0xad, 0x7a, 0x07, 0x37, 0x8c, 0xa4, 0xe8, 0x7b, 0xb3, 0xa5, 0x73, 0xf0, 0xba,
+	0xd9, 0x35, 0x52, 0xfb, 0x25, 0xd8, 0x54, 0x49, 0xd3, 0xee, 0xcd, 0xbf, 0x26, 0xc0, 0x98, 0x07,
+	0x50, 0x97, 0xf5, 0x4a, 0x24, 0x12, 0xe7, 0x22, 0xf1, 0x08, 0x8c, 0x70, 0xa6, 0xa4, 0x23, 0x91,
+	0x94, 0x91, 0x28, 0xcd, 0x71, 0x15, 0x8a, 0x7b, 0x50, 0xa0, 0x51, 0xc4, 0xa6, 0xf1, 0x4a, 0x49,
+	0x16, 0x48, 0x48, 0x11, 0x3e, 0x03, 0x08, 0xd8, 0x88, 0x3a, 0x6f, 0xd9, 0x24, 0x52, 0x13, 0x44,
+	0x02, 0xe7, 0x05, 0x72, 0x28, 0x00, 0xf3, 0x2f, 0x59, 0x48, 0x1d, 0xb1, 0x01, 0xda, 0x02, 0x31,
+	0xb6, 0xcd, 0x5b, 0x6f, 0xe6, 0x84, 0x0d, 0x9a, 0x23, 0xd4, 0x81, 0xe2, 0xac, 0x4d, 0xc8, 0x5c,
+	0xca, 0x7d, 0x5c, 0x36, 0xef, 0x2c, 0xcd, 0xf2, 0x87, 0x6b, 0x78, 0xd6, 0x66, 0x54, 0x59, 0xf7,
+	0x97, 0x8e, 0xa6, 0x4c, 0xaa, 0xfe, 0xba, 0xfb, 0xa9, 0x15, 0x78, 0xb8, 0xb6, 0x18, 0x06, 0x65,
+	0xf6, 0x1b, 0x28, 0x0c, 0x23, 0x4a, 0xb8, 0x78, 0x70, 0xf8, 0x6a, 0x9e, 0x28, 0xec, 0x6d, 0x4f,
+	0x2d, 0x4e, 0x1f, 0x2e, 0x15, 0x7b, 0xfa, 0x70, 0xc1, 0xa0, 0xe8, 0x02, 0x40, 0x5f, 0x03, 0xc4,
+	0x9c, 0x44, 0x5c, 0xe9, 0x66, 0xae, 0xd4, 0xcd, 0x4b, 0xb6, 0x54, 0xfd, 0x21, 0xe4, 0x68, 0x30,
+	0x52, 0x8a, 0xd9, 0x2b, 0x15, 0xd7, 0x69, 0x30, 0x92, 0x6a, 0x5f, 0x41, 0x26, 0xe6, 0x84, 0x4f,
+	0xc7, 0x02, 0xf3, 0xc2, 0xa3, 0x1f, 0xb1, 0x41, 0xa5, 0x27, 0x98, 0x58, 0x29, 0x88, 0xbe, 0xad,
+	0xf2, 0xed, 0xd3, 0x38, 0x26, 0xe3, 0xd9, 0xab, 0x40, 0x82, 0x2d, 0x85, 0x21, 0x0c, 0xa5, 0x59,
+	0xd6, 0x54, 0x59, 0xc9, 0x0e, 0x50, 0xd8, 0xfb, 0xfc, 0xca, 0xb4, 0xa9, 0x12, 0x3d, 0x4c, 0xe0,
+	0x59, 0xde, 0x75, 0xd1, 0xbe, 0x82, 0x6b, 0x0b, 0x89, 0xd3, 0x56, 0x41, 0x5a, 0x7d, 0xf4, 0x09,
+	0x99, 0x9b, 0xd9, 0x5d, 0x48, 0xbf, 0xc2, 0xcc, 0xdf, 0x24, 0x20, 0x23, 0xcf, 0x28, 0x26, 0x8c,
+	0x9e, 0x5d, 0xb3, 0x3f, 0x32, 0xc7, 0xfc, 0xb4, 0x6f, 0xf5, 0xad, 0xc6, 0xec, 0x0d, 0xd0, 0xad,
+	0xe1, 0x66, 0xfb, 0xc0, 0x48, 0x8a, 0xb1, 0x06, 0xf7, 0xdb, 0x6d, 0xb1, 0x90, 0x0f, 0x82, 0x5e,
+	0xbf, 0x5e, 0xb7, 0xac, 0x86, 0xd5, 0x30, 0xd2, 0x42, 0xed, 0x45, 0xad, 0x79, 0x6c, 0x35, 0x8c,
+	0x8c, 0x78, 0x4a, 0xd4, 0x6b, 0xed, 0xba, 0x75, 0x7c, 0x2c, 0xa8, 0x59, 0x41, 0xd5, 0x6b, 0xab,
+	0x61, 0xac, 0xef, 0xaf, 0x43, 0x46, 0x96, 0xe2, 0x7e, 0x0e, 0xb2, 0xea, 0x68, 0xe6, 0x6b, 0x30,
+	0xea, 0xb2, 0x44, 0x8e, 0xd8, 0x00, 0xd3, 0x5f, 0x4e, 0x68, 0x2c, 0xfb, 0x4e, 0x48, 0x22, 0xaa,
+	0x3f, 0x40, 0x79, 0xac, 0x57, 0xa8, 0x02, 0x29, 0xd1, 0xe7, 0xd5, 0xd5, 0xb8, 0x7b, 0x59, 0x32,
+	0xb1, 0x20, 0x9a, 0x1f, 0xa0, 0x74, 0xec, 0xc6, 0xfc, 0x88, 0x0d, 0xe2, 0xab, 0x4c, 0xdf, 0x84,
+	0xec, 0x1b, 0xd7, 0xe3, 0x34, 0xd2, 0x1f, 0x4c, 0xbd, 0x12, 0xd7, 0x3a, 0x14, 0xaf, 0x47, 0xce,
+	0xde, 0xd1, 0x40, 0x3f, 0x61, 0xf3, 0x02, 0xb1, 0x05, 0x20, 0x26, 0x5e, 0x29, 0x8e, 0xdd, 0x6f,
+	0x55, 0x45, 0x67, 0x70, 0x4e, 0x00, 0x3d, 0xf7, 0x5b, 0x6a, 0x7a, 0x60, 0xcc, 0xdd, 0xc7, 0x21,
+	0x0b, 0x62, 0x8a, 0xbe, 0x80, 0xf4, 0x09, 0x1b, 0xc4, 0xe5, 0x84, 0xfc, 0x68, 0x5e, 0x7e, 0x06,
+	0xc9, 0x44, 0x0f, 0xa1, 0x14, 0xd0, 0x53, 0xd1, 0xc3, 0x66, 0xdb, 0x50, 0x5b, 0xdc, 0x14, 0x70,
+	0x77, 0xba, 0x15, 0xf3, 0x01, 0x6c, 0x1e, 0x50, 0xbe, 0x10, 0x45, 0x04, 0xe9, 0x85, 0x17, 0x81,
+	0xfc, 0x6d, 0x3e, 0x04, 0xa3, 0x4e, 0x82, 0x21, 0xf5, 0x2e, 0xe7, 0xed, 0xfd, 0x2d, 0x0d, 0x70,
+	0xc4, 0x06, 0x3d, 0xf5, 0x57, 0x08, 0xfa, 0x7d, 0x02, 0xf2, 0xb3, 0x2c, 0xa1, 0x8b, 0xeb, 0x70,
+	0x35, 0x93, 0xdb, 0x97, 0x1e, 0xd0, 0xac, 0xfc, 0xf6, 0x1f, 0xff, 0xfa, 0x53, 0x72, 0xd7, 0xbc,
+	0x3f, 0xfb, 0xff, 0xe5, 0xd7, 0x2a, 0x1d, 0x3f, 0x0a, 0x23, 0x26, 0x06, 0x9f, 0xb8, 0xfa, 0xf8,
+	0x43, 0x55, 0x44, 0xe1, 0xb9, 0xc8, 0x27, 0xfa, 0x43, 0x02, 0x72, 0xd3, 0x88, 0xa2, 0x8b, 0xfb,
+	0xd8, 0x4a, 0xce, 0xb7, 0x1f, 0x7d, 0x02, 0x53, 0xa5, 0xc7, 0x7c, 0x24, 0x77, 0xf4, 0x00, 0x5d,
+	0xbd, 0x23, 0x74, 0x06, 0x59, 0x15, 0x6f, 0x74, 0x71, 0x93, 0x5e, 0x4a, 0xc8, 0x15, 0xc1, 0xf8,
+	0x88, 0x6b, 0x91, 0x8a, 0x05, 0xc7, 0xd2, 0x6f, 0xf5, 0xf1, 0x07, 0xf4, 0x3b, 0x91, 0x8e, 0x69,
+	0x1a, 0x2f, 0x4b, 0xc7, 0x4a, 0xaa, 0xb7, 0x6f, 0x9e, 0x6b, 0x9a, 0x96, 0x1f, 0xf2, 0x33, 0xf3,
+	0x99, 0xf4, 0xfd, 0xc4, 0xdc, 0xbd, 0xd2, 0xf7, 0xf3, 0xa1, 0xb4, 0xf9, 0x3c, 0xf1, 0x78, 0x9f,
+	0xc1, 0xbd, 0x21, 0xf3, 0xcf, 0x39, 0x27, 0xa1, 0x3b, 0xdd, 0xc0, 0x7e, 0x69, 0x5e, 0x43, 0x5d,
+	0xe1, 0xb1, 0x9b, 0x78, 0xfd, 0xb5, 0xe6, 0x8f, 0x99, 0x47, 0x82, 0x71, 0x85, 0x45, 0xe3, 0xea,
+	0x98, 0x06, 0x72, 0x3f, 0x55, 0x25, 0x22, 0xa1, 0x1b, 0x9f, 0xfb, 0x67, 0xee, 0x1b, 0xdf, 0x1b,
+	0x64, 0x25, 0xeb, 0xd9, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xaf, 0x10, 0x62, 0xa8, 0xbe, 0x13,
+	0x00, 0x00,
 }
diff --git a/googleapis/cloud/ml/v1beta1/model_service.pb.go b/googleapis/cloud/ml/v1beta1/model_service.pb.go
index 583a76bc..4b44357e 100644
--- a/googleapis/cloud/ml/v1beta1/model_service.pb.go
+++ b/googleapis/cloud/ml/v1beta1/model_service.pb.go
@@ -8,8 +8,8 @@ import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
 import _ "google.golang.org/genproto/googleapis/api/annotations"
+import _ "google.golang.org/genproto/googleapis/api/serviceconfig"
 import google_longrunning "google.golang.org/genproto/googleapis/longrunning"
-import _ "github.com/golang/protobuf/ptypes/empty"
 import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp"
 
 import (
@@ -40,6 +40,13 @@ type Model struct {
 	// You can change the default version by calling
 	// [projects.methods.versions.setDefault](/ml/reference/rest/v1beta1/projects.models.versions/setDefault).
 	DefaultVersion *Version `protobuf:"bytes,3,opt,name=default_version,json=defaultVersion" json:"default_version,omitempty"`
+	// Optional. The list of regions where the model is going to be deployed.
+	// Currently only one region per model is supported.
+	// Defaults to 'us-central1' if nothing is set.
+	Regions []string `protobuf:"bytes,4,rep,name=regions" json:"regions,omitempty"`
+	// Optional. If true, enables StackDriver Logging for online prediction.
+	// Default is false.
+	OnlinePredictionLogging bool `protobuf:"varint,5,opt,name=online_prediction_logging,json=onlinePredictionLogging" json:"online_prediction_logging,omitempty"`
 }
 
 func (m *Model) Reset()                    { *m = Model{} }
@@ -68,6 +75,20 @@ func (m *Model) GetDefaultVersion() *Version {
 	return nil
 }
 
+func (m *Model) GetRegions() []string {
+	if m != nil {
+		return m.Regions
+	}
+	return nil
+}
+
+func (m *Model) GetOnlinePredictionLogging() bool {
+	if m != nil {
+		return m.OnlinePredictionLogging
+	}
+	return false
+}
+
 // Represents a version of the model.
 //
 // Each version is a trained model deployed in the cloud, ready to handle
@@ -102,6 +123,16 @@ type Version struct {
 	CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime" json:"create_time,omitempty"`
 	// Output only. The time the version was last used for prediction.
 	LastUseTime *google_protobuf2.Timestamp `protobuf:"bytes,6,opt,name=last_use_time,json=lastUseTime" json:"last_use_time,omitempty"`
+	// Optional. The Google Cloud ML runtime version to use for this deployment.
+	// If not set, Google Cloud ML will choose a version.
+	RuntimeVersion string `protobuf:"bytes,8,opt,name=runtime_version,json=runtimeVersion" json:"runtime_version,omitempty"`
+	// Optional. Manually select the number of nodes to use for serving the
+	// model. If unset (i.e., by default), the number of nodes used to serve
+	// the model automatically scales with traffic. However, care should be
+	// taken to ramp up traffic according to the model's ability to scale. If
+	// your model needs to handle bursts of traffic beyond it's ability to
+	// scale, it is recommended you set this field appropriately.
+	ManualScaling *ManualScaling `protobuf:"bytes,9,opt,name=manual_scaling,json=manualScaling" json:"manual_scaling,omitempty"`
 }
 
 func (m *Version) Reset()                    { *m = Version{} }
@@ -151,6 +182,41 @@ func (m *Version) GetLastUseTime() *google_protobuf2.Timestamp {
 	return nil
 }
 
+func (m *Version) GetRuntimeVersion() string {
+	if m != nil {
+		return m.RuntimeVersion
+	}
+	return ""
+}
+
+func (m *Version) GetManualScaling() *ManualScaling {
+	if m != nil {
+		return m.ManualScaling
+	}
+	return nil
+}
+
+// Options for manually scaling a model.
+type ManualScaling struct {
+	// The number of nodes to allocate for this model. These nodes are always up,
+	// starting from the time the model is deployed, so the cost of operating
+	// this model will be proportional to nodes * number of hours since
+	// deployment.
+	Nodes int32 `protobuf:"varint,1,opt,name=nodes" json:"nodes,omitempty"`
+}
+
+func (m *ManualScaling) Reset()                    { *m = ManualScaling{} }
+func (m *ManualScaling) String() string            { return proto.CompactTextString(m) }
+func (*ManualScaling) ProtoMessage()               {}
+func (*ManualScaling) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
+
+func (m *ManualScaling) GetNodes() int32 {
+	if m != nil {
+		return m.Nodes
+	}
+	return 0
+}
+
 // Request message for the CreateModel method.
 type CreateModelRequest struct {
 	// Required. The project name.
@@ -164,7 +230,7 @@ type CreateModelRequest struct {
 func (m *CreateModelRequest) Reset()                    { *m = CreateModelRequest{} }
 func (m *CreateModelRequest) String() string            { return proto.CompactTextString(m) }
 func (*CreateModelRequest) ProtoMessage()               {}
-func (*CreateModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
+func (*CreateModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
 
 func (m *CreateModelRequest) GetParent() string {
 	if m != nil {
@@ -202,7 +268,7 @@ type ListModelsRequest struct {
 func (m *ListModelsRequest) Reset()                    { *m = ListModelsRequest{} }
 func (m *ListModelsRequest) String() string            { return proto.CompactTextString(m) }
 func (*ListModelsRequest) ProtoMessage()               {}
-func (*ListModelsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
+func (*ListModelsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} }
 
 func (m *ListModelsRequest) GetParent() string {
 	if m != nil {
@@ -237,7 +303,7 @@ type ListModelsResponse struct {
 func (m *ListModelsResponse) Reset()                    { *m = ListModelsResponse{} }
 func (m *ListModelsResponse) String() string            { return proto.CompactTextString(m) }
 func (*ListModelsResponse) ProtoMessage()               {}
-func (*ListModelsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} }
+func (*ListModelsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} }
 
 func (m *ListModelsResponse) GetModels() []*Model {
 	if m != nil {
@@ -264,7 +330,7 @@ type GetModelRequest struct {
 func (m *GetModelRequest) Reset()                    { *m = GetModelRequest{} }
 func (m *GetModelRequest) String() string            { return proto.CompactTextString(m) }
 func (*GetModelRequest) ProtoMessage()               {}
-func (*GetModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} }
+func (*GetModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} }
 
 func (m *GetModelRequest) GetName() string {
 	if m != nil {
@@ -284,7 +350,7 @@ type DeleteModelRequest struct {
 func (m *DeleteModelRequest) Reset()                    { *m = DeleteModelRequest{} }
 func (m *DeleteModelRequest) String() string            { return proto.CompactTextString(m) }
 func (*DeleteModelRequest) ProtoMessage()               {}
-func (*DeleteModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} }
+func (*DeleteModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} }
 
 func (m *DeleteModelRequest) GetName() string {
 	if m != nil {
@@ -306,7 +372,7 @@ type CreateVersionRequest struct {
 func (m *CreateVersionRequest) Reset()                    { *m = CreateVersionRequest{} }
 func (m *CreateVersionRequest) String() string            { return proto.CompactTextString(m) }
 func (*CreateVersionRequest) ProtoMessage()               {}
-func (*CreateVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} }
+func (*CreateVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} }
 
 func (m *CreateVersionRequest) GetParent() string {
 	if m != nil {
@@ -344,7 +410,7 @@ type ListVersionsRequest struct {
 func (m *ListVersionsRequest) Reset()                    { *m = ListVersionsRequest{} }
 func (m *ListVersionsRequest) String() string            { return proto.CompactTextString(m) }
 func (*ListVersionsRequest) ProtoMessage()               {}
-func (*ListVersionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} }
+func (*ListVersionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} }
 
 func (m *ListVersionsRequest) GetParent() string {
 	if m != nil {
@@ -379,7 +445,7 @@ type ListVersionsResponse struct {
 func (m *ListVersionsResponse) Reset()                    { *m = ListVersionsResponse{} }
 func (m *ListVersionsResponse) String() string            { return proto.CompactTextString(m) }
 func (*ListVersionsResponse) ProtoMessage()               {}
-func (*ListVersionsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} }
+func (*ListVersionsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} }
 
 func (m *ListVersionsResponse) GetVersions() []*Version {
 	if m != nil {
@@ -406,7 +472,7 @@ type GetVersionRequest struct {
 func (m *GetVersionRequest) Reset()                    { *m = GetVersionRequest{} }
 func (m *GetVersionRequest) String() string            { return proto.CompactTextString(m) }
 func (*GetVersionRequest) ProtoMessage()               {}
-func (*GetVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} }
+func (*GetVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} }
 
 func (m *GetVersionRequest) GetName() string {
 	if m != nil {
@@ -428,7 +494,7 @@ type DeleteVersionRequest struct {
 func (m *DeleteVersionRequest) Reset()                    { *m = DeleteVersionRequest{} }
 func (m *DeleteVersionRequest) String() string            { return proto.CompactTextString(m) }
 func (*DeleteVersionRequest) ProtoMessage()               {}
-func (*DeleteVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} }
+func (*DeleteVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} }
 
 func (m *DeleteVersionRequest) GetName() string {
 	if m != nil {
@@ -450,7 +516,7 @@ type SetDefaultVersionRequest struct {
 func (m *SetDefaultVersionRequest) Reset()                    { *m = SetDefaultVersionRequest{} }
 func (m *SetDefaultVersionRequest) String() string            { return proto.CompactTextString(m) }
 func (*SetDefaultVersionRequest) ProtoMessage()               {}
-func (*SetDefaultVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} }
+func (*SetDefaultVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} }
 
 func (m *SetDefaultVersionRequest) GetName() string {
 	if m != nil {
@@ -462,6 +528,7 @@ func (m *SetDefaultVersionRequest) GetName() string {
 func init() {
 	proto.RegisterType((*Model)(nil), "google.cloud.ml.v1beta1.Model")
 	proto.RegisterType((*Version)(nil), "google.cloud.ml.v1beta1.Version")
+	proto.RegisterType((*ManualScaling)(nil), "google.cloud.ml.v1beta1.ManualScaling")
 	proto.RegisterType((*CreateModelRequest)(nil), "google.cloud.ml.v1beta1.CreateModelRequest")
 	proto.RegisterType((*ListModelsRequest)(nil), "google.cloud.ml.v1beta1.ListModelsRequest")
 	proto.RegisterType((*ListModelsResponse)(nil), "google.cloud.ml.v1beta1.ListModelsResponse")
@@ -916,62 +983,69 @@ var _ModelService_serviceDesc = grpc.ServiceDesc{
 func init() { proto.RegisterFile("google/cloud/ml/v1beta1/model_service.proto", fileDescriptor1) }
 
 var fileDescriptor1 = []byte{
-	// 904 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0x4f, 0x6f, 0xe3, 0x44,
-	0x14, 0x97, 0xb3, 0x9b, 0x6c, 0xfa, 0xb2, 0xd9, 0x2a, 0x43, 0x05, 0x91, 0x97, 0xb2, 0x91, 0x57,
-	0x85, 0x28, 0xd9, 0xb5, 0x69, 0x40, 0x2b, 0x35, 0x0b, 0x8b, 0xb4, 0x44, 0xaa, 0x90, 0x40, 0x54,
-	0x69, 0xcb, 0x81, 0x8b, 0xe5, 0x24, 0x53, 0x6b, 0x8a, 0xed, 0x71, 0x3d, 0x93, 0x8a, 0x16, 0x7a,
-	0xa0, 0x07, 0xc4, 0x89, 0x03, 0x88, 0x2b, 0x17, 0xee, 0x7c, 0x19, 0xbe, 0x02, 0xe2, 0x73, 0x20,
-	0xcf, 0x8c, 0x13, 0xe7, 0x8f, 0x63, 0x17, 0x89, 0x9b, 0xe7, 0xcd, 0xef, 0xcd, 0xfb, 0xcd, 0xfb,
-	0xbd, 0xf7, 0xc6, 0xd0, 0x75, 0x29, 0x75, 0x3d, 0x6c, 0x8d, 0x3d, 0x3a, 0x9d, 0x58, 0xbe, 0x67,
-	0x5d, 0xee, 0x8f, 0x30, 0x77, 0xf6, 0x2d, 0x9f, 0x4e, 0xb0, 0x67, 0x33, 0x1c, 0x5d, 0x92, 0x31,
-	0x36, 0xc3, 0x88, 0x72, 0x8a, 0xde, 0x92, 0x60, 0x53, 0x80, 0x4d, 0xdf, 0x33, 0x15, 0x58, 0x7f,
-	0x5b, 0x9d, 0xe2, 0x84, 0xc4, 0x72, 0x82, 0x80, 0x72, 0x87, 0x13, 0x1a, 0x30, 0xe9, 0xa6, 0x3f,
-	0x55, 0xbb, 0x1e, 0x0d, 0xdc, 0x68, 0x1a, 0x04, 0x24, 0x70, 0x2d, 0x1a, 0xe2, 0x68, 0x01, 0xf4,
-	0x58, 0x81, 0xc4, 0x6a, 0x34, 0x3d, 0xb3, 0xb0, 0x1f, 0xf2, 0x2b, 0xb5, 0xf9, 0x64, 0x79, 0x93,
-	0x13, 0x1f, 0x33, 0xee, 0xf8, 0xa1, 0x04, 0x18, 0x3f, 0x69, 0x50, 0xfe, 0x22, 0x66, 0x8c, 0x10,
-	0xdc, 0x0f, 0x1c, 0x1f, 0x37, 0xb5, 0x96, 0xd6, 0xde, 0x1a, 0x8a, 0x6f, 0xd4, 0x82, 0xda, 0x04,
-	0xb3, 0x71, 0x44, 0xc2, 0x38, 0x62, 0xb3, 0x24, 0xb6, 0xd2, 0x26, 0xf4, 0x19, 0x6c, 0x4f, 0xf0,
-	0x99, 0x33, 0xf5, 0xb8, 0x7d, 0x89, 0x23, 0x16, 0xa3, 0xee, 0xb5, 0xb4, 0x76, 0xad, 0xd7, 0x32,
-	0x33, 0xee, 0x6c, 0x7e, 0x25, 0x71, 0xc3, 0x47, 0xca, 0x51, 0xad, 0x8d, 0xdb, 0x12, 0x3c, 0x50,
-	0xdf, 0xff, 0x91, 0xcc, 0x2e, 0x00, 0x61, 0xb6, 0x3a, 0x56, 0xf0, 0xa8, 0x0e, 0xb7, 0x08, 0x1b,
-	0x48, 0x03, 0xda, 0x83, 0x47, 0x13, 0x1c, 0x7a, 0xf4, 0xca, 0xc7, 0x01, 0xb7, 0xa7, 0x11, 0x69,
-	0xde, 0x17, 0x67, 0xd4, 0xe7, 0xd6, 0xd3, 0x88, 0xa0, 0x97, 0x50, 0x1b, 0x47, 0xd8, 0xe1, 0xd8,
-	0x8e, 0x93, 0xd5, 0x2c, 0x8b, 0xeb, 0xe8, 0xc9, 0x75, 0x92, 0x4c, 0x9a, 0x27, 0x49, 0x26, 0x87,
-	0x20, 0xe1, 0xb1, 0x01, 0xbd, 0x82, 0xba, 0xe7, 0x30, 0x6e, 0x4f, 0x99, 0x72, 0xaf, 0xe4, 0xba,
-	0xd7, 0x62, 0x87, 0x53, 0x26, 0xfc, 0x8d, 0x11, 0xa0, 0x4f, 0xc5, 0x69, 0x42, 0x94, 0x21, 0xbe,
-	0x98, 0x62, 0xc6, 0xd1, 0x9b, 0x50, 0x09, 0x9d, 0x08, 0x07, 0x5c, 0x25, 0x44, 0xad, 0xd0, 0x87,
-	0x50, 0x16, 0xe5, 0x26, 0x92, 0x51, 0xeb, 0xbd, 0x93, 0x99, 0x73, 0x79, 0x9a, 0x04, 0x1b, 0x2e,
-	0x34, 0x3e, 0x27, 0x8c, 0x0b, 0x1b, 0xcb, 0x0b, 0xb1, 0x0b, 0x10, 0x3a, 0x2e, 0xb6, 0x39, 0xfd,
-	0x06, 0x07, 0x2a, 0x61, 0x5b, 0xb1, 0xe5, 0x24, 0x36, 0xa0, 0xc7, 0x20, 0x16, 0x36, 0x23, 0xd7,
-	0x32, 0x55, 0xe5, 0x61, 0x35, 0x36, 0x1c, 0x93, 0x6b, 0x6c, 0x70, 0x40, 0xe9, 0x40, 0x2c, 0xa4,
-	0x01, 0xc3, 0xe8, 0x05, 0x54, 0x04, 0x0f, 0xd6, 0xd4, 0x5a, 0xf7, 0x0a, 0xb0, 0x56, 0x68, 0xf4,
-	0x2e, 0x6c, 0x07, 0xf8, 0x5b, 0x6e, 0xa7, 0xe8, 0xc8, 0x1a, 0xa8, 0xc7, 0xe6, 0xa3, 0x84, 0x92,
-	0xb1, 0x07, 0xdb, 0x87, 0x98, 0x2f, 0xe4, 0x6f, 0x4d, 0x39, 0x19, 0x6d, 0x40, 0x03, 0xec, 0xe1,
-	0xa5, 0x4c, 0xaf, 0x43, 0x9e, 0xc3, 0x8e, 0xd4, 0x24, 0xa9, 0xdc, 0x9c, 0x94, 0xf5, 0xe1, 0x41,
-	0xd2, 0x0b, 0xa5, 0x82, 0xbd, 0x90, 0x38, 0x18, 0x04, 0xde, 0x88, 0x53, 0xa6, 0xec, 0xff, 0xab,
-	0x3a, 0xdf, 0xc3, 0xce, 0x62, 0x28, 0xa5, 0xcf, 0x47, 0x50, 0x55, 0x6c, 0x12, 0x85, 0xf2, 0xf9,
-	0xcf, 0x3c, 0x0a, 0xab, 0xf4, 0x1e, 0x34, 0x0e, 0x31, 0x5f, 0xca, 0xe8, 0xba, 0xec, 0x77, 0x60,
-	0x47, 0xea, 0x54, 0x00, 0x6b, 0x42, 0xf3, 0x18, 0xf3, 0xc1, 0xc2, 0x5c, 0xd9, 0x80, 0xef, 0xfd,
-	0x03, 0xf0, 0x50, 0xc8, 0x7f, 0x2c, 0xc7, 0x35, 0xfa, 0x59, 0x83, 0x5a, 0xaa, 0xff, 0x50, 0x37,
-	0xf3, 0xe6, 0xab, 0x5d, 0xaa, 0xe7, 0x14, 0xb2, 0xd1, 0xbb, 0xfd, 0xeb, 0xef, 0x5f, 0x4b, 0xcf,
-	0x8c, 0xa7, 0xb3, 0xb7, 0xe2, 0x3b, 0x29, 0xe3, 0xc7, 0x61, 0x44, 0xcf, 0xf1, 0x98, 0x33, 0xab,
-	0x73, 0x23, 0xdf, 0x0f, 0xd6, 0x97, 0xbd, 0x8a, 0x7e, 0xd1, 0x00, 0xe6, 0x3d, 0x84, 0x3a, 0x99,
-	0x21, 0x56, 0x3a, 0x5a, 0xef, 0x16, 0xc2, 0x4a, 0xd1, 0x8d, 0xae, 0xe0, 0xb6, 0x87, 0x8a, 0x70,
-	0x43, 0x3f, 0x68, 0x50, 0x4d, 0x5a, 0x0c, 0xb5, 0x33, 0xc3, 0x2c, 0x75, 0x61, 0x6e, 0x7e, 0xd6,
-	0x70, 0x88, 0x55, 0x4a, 0x31, 0x50, 0x04, 0xac, 0xce, 0x0d, 0xfa, 0x51, 0x83, 0x5a, 0xaa, 0x7f,
-	0x37, 0x28, 0xb5, 0xda, 0xe5, 0xfa, 0x6e, 0x02, 0x4e, 0xbd, 0xac, 0xe6, 0x97, 0xc9, 0xcb, 0x9a,
-	0x10, 0xe9, 0x14, 0x22, 0xf2, 0xbb, 0x06, 0xf5, 0x85, 0xf1, 0x80, 0x9e, 0xe7, 0x14, 0xcd, 0x62,
-	0x61, 0xe6, 0x91, 0xf9, 0x44, 0x90, 0x39, 0x30, 0xcc, 0x0d, 0xca, 0xcc, 0xe9, 0x58, 0x49, 0x23,
-	0xf6, 0x93, 0x91, 0x82, 0xfe, 0xd0, 0xe0, 0x61, 0xba, 0xd1, 0xd1, 0xb3, 0x8d, 0x85, 0xb1, 0x34,
-	0x7a, 0xf4, 0xe7, 0x05, 0xd1, 0xaa, 0x90, 0x5e, 0x08, 0xba, 0xef, 0xa3, 0x3b, 0xd2, 0x15, 0x85,
-	0x3e, 0x1f, 0x08, 0x1b, 0x0a, 0x7d, 0x65, 0x6a, 0xe8, 0xb9, 0xe3, 0x69, 0x1d, 0xa9, 0x2c, 0x41,
-	0x67, 0x8c, 0x62, 0x6d, 0x7f, 0xd3, 0xa0, 0xbe, 0x30, 0x7c, 0x36, 0x68, 0xbb, 0x6e, 0x48, 0xe5,
-	0x69, 0xab, 0x78, 0x75, 0xee, 0xca, 0xeb, 0x4f, 0x0d, 0x1a, 0x2b, 0x83, 0x0e, 0xed, 0x67, 0x72,
-	0xcb, 0x1a, 0x8a, 0x05, 0x52, 0x37, 0x10, 0x14, 0x5f, 0x19, 0x07, 0x77, 0xa3, 0xd8, 0x67, 0xb3,
-	0x90, 0x7d, 0xad, 0xf3, 0xfa, 0x02, 0x9e, 0x8c, 0xa9, 0xbf, 0x12, 0xcc, 0x09, 0x49, 0x12, 0xf0,
-	0x75, 0x23, 0x3d, 0x88, 0x8f, 0xe2, 0xdf, 0xa4, 0x23, 0xed, 0xeb, 0x03, 0xe5, 0xe1, 0x52, 0xcf,
-	0x09, 0x5c, 0x93, 0x46, 0xae, 0xe5, 0xe2, 0x40, 0xfc, 0x44, 0x59, 0x72, 0xcb, 0x09, 0x09, 0x5b,
-	0xf9, 0x09, 0x7f, 0xe9, 0x7b, 0xa3, 0x8a, 0x40, 0x7d, 0xf0, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff,
-	0xbf, 0x41, 0x51, 0x68, 0xa9, 0x0b, 0x00, 0x00,
+	// 1013 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xcf, 0x6f, 0x1b, 0x45,
+	0x14, 0xd6, 0x26, 0x71, 0x62, 0x3f, 0xd7, 0x89, 0x32, 0x04, 0x6a, 0x0c, 0xa1, 0xd6, 0x56, 0x69,
+	0x2d, 0xa7, 0xdd, 0x25, 0x06, 0x55, 0x8a, 0x0b, 0x45, 0x2a, 0x91, 0x2a, 0xa4, 0x46, 0x44, 0x9b,
+	0x96, 0x03, 0x97, 0xd5, 0xc6, 0x9e, 0x2e, 0x53, 0x76, 0x67, 0xb6, 0x3b, 0xb3, 0x11, 0x14, 0x7a,
+	0x80, 0x03, 0x47, 0x0e, 0x20, 0xae, 0x5c, 0xb8, 0xf3, 0xcf, 0x70, 0xe7, 0x84, 0xf8, 0x23, 0x38,
+	0xa1, 0xf9, 0xb1, 0xce, 0x3a, 0xfe, 0xb1, 0x1b, 0x24, 0x6e, 0x9e, 0x37, 0xdf, 0x9b, 0xf7, 0xcd,
+	0xfb, 0xde, 0x7b, 0x3b, 0x86, 0xfd, 0x90, 0xb1, 0x30, 0xc2, 0xee, 0x28, 0x62, 0xd9, 0xd8, 0x8d,
+	0x23, 0xf7, 0xfc, 0xe0, 0x0c, 0x8b, 0xe0, 0xc0, 0x8d, 0xd9, 0x18, 0x47, 0x3e, 0xc7, 0xe9, 0x39,
+	0x19, 0x61, 0x27, 0x49, 0x99, 0x60, 0xe8, 0xba, 0x06, 0x3b, 0x0a, 0xec, 0xc4, 0x91, 0x63, 0xc0,
+	0x9d, 0xb7, 0xcd, 0x29, 0x41, 0x42, 0xdc, 0x80, 0x52, 0x26, 0x02, 0x41, 0x18, 0xe5, 0xda, 0xad,
+	0xf3, 0x7a, 0x71, 0x37, 0x13, 0x5f, 0x18, 0xf3, 0x4d, 0x63, 0x8e, 0x18, 0x0d, 0xd3, 0x8c, 0x52,
+	0x42, 0x43, 0x97, 0x25, 0x38, 0x9d, 0xf2, 0xbd, 0x61, 0x40, 0x6a, 0x75, 0x96, 0x3d, 0x73, 0x05,
+	0x89, 0x31, 0x17, 0x41, 0x9c, 0x68, 0x80, 0xfd, 0xa7, 0x05, 0xb5, 0x63, 0xc9, 0x15, 0x21, 0x58,
+	0xa3, 0x41, 0x8c, 0xdb, 0x56, 0xd7, 0xea, 0x35, 0x3c, 0xf5, 0x1b, 0x75, 0xa1, 0x39, 0xc6, 0x7c,
+	0x94, 0x92, 0x44, 0x1e, 0xda, 0x5e, 0x51, 0x5b, 0x45, 0x13, 0xfa, 0x04, 0xb6, 0xc6, 0xf8, 0x59,
+	0x90, 0x45, 0xc2, 0x3f, 0xc7, 0x29, 0x97, 0xa8, 0xd5, 0xae, 0xd5, 0x6b, 0x0e, 0xba, 0xce, 0x82,
+	0xdb, 0x3a, 0x9f, 0x69, 0x9c, 0xb7, 0x69, 0x1c, 0xcd, 0x1a, 0xb5, 0x61, 0x23, 0xc5, 0xa1, 0x24,
+	0xdf, 0x5e, 0xeb, 0xae, 0xf6, 0x1a, 0x5e, 0xbe, 0x44, 0x43, 0x78, 0x93, 0xd1, 0x88, 0x50, 0xec,
+	0x27, 0x29, 0x1e, 0x93, 0x91, 0x8c, 0xec, 0x47, 0x2c, 0x0c, 0x09, 0x0d, 0xdb, 0xb5, 0xae, 0xd5,
+	0xab, 0x7b, 0xd7, 0x35, 0xe0, 0x64, 0xb2, 0xff, 0x58, 0x6f, 0xdb, 0xff, 0xac, 0xc0, 0x46, 0x1e,
+	0xe1, 0xbf, 0x5d, 0x71, 0x17, 0x80, 0x70, 0xdf, 0x90, 0x55, 0xb7, 0xab, 0x7b, 0x0d, 0xc2, 0x8f,
+	0xb4, 0x01, 0xed, 0xc1, 0xe6, 0x18, 0x27, 0x11, 0xfb, 0x3a, 0xc6, 0x54, 0xf8, 0x59, 0x4a, 0xda,
+	0x6b, 0xea, 0x8c, 0xd6, 0x85, 0xf5, 0x69, 0x4a, 0xd0, 0x7d, 0x68, 0x8e, 0x52, 0x1c, 0x08, 0xec,
+	0x4b, 0x09, 0x14, 0xeb, 0xe6, 0xa0, 0x93, 0x27, 0x29, 0xd7, 0xc7, 0x79, 0x92, 0xeb, 0xe3, 0x81,
+	0x86, 0x4b, 0x03, 0x7a, 0x00, 0xad, 0x28, 0xe0, 0xc2, 0xcf, 0xb8, 0x71, 0x5f, 0x2f, 0x75, 0x6f,
+	0x4a, 0x87, 0xa7, 0x5c, 0xfb, 0xdf, 0x86, 0xad, 0x34, 0xa3, 0xd2, 0x73, 0xa2, 0x52, 0x5d, 0x91,
+	0xdc, 0x34, 0xe6, 0x3c, 0x43, 0xc7, 0xb0, 0x19, 0x07, 0x34, 0x0b, 0x22, 0x9f, 0x8f, 0x82, 0x48,
+	0xa6, 0xb7, 0xa1, 0x22, 0xdd, 0x5a, 0xa8, 0xe6, 0xb1, 0x82, 0x9f, 0x6a, 0xb4, 0xd7, 0x8a, 0x8b,
+	0x4b, 0x7b, 0x0f, 0x5a, 0x53, 0xfb, 0x68, 0x07, 0x6a, 0x94, 0x8d, 0x31, 0x57, 0x12, 0xd4, 0x3c,
+	0xbd, 0xb0, 0xcf, 0x00, 0x7d, 0xac, 0x2e, 0xab, 0x2a, 0xd1, 0xc3, 0x2f, 0x32, 0xcc, 0x05, 0x7a,
+	0x03, 0xd6, 0x93, 0x20, 0xc5, 0x54, 0x18, 0xbd, 0xcc, 0x0a, 0xbd, 0x0f, 0x35, 0xd5, 0x5d, 0x4a,
+	0xab, 0xe6, 0xe0, 0x9d, 0xc5, 0xd4, 0xd4, 0x69, 0x1a, 0x6c, 0x87, 0xb0, 0xfd, 0x98, 0x70, 0xa1,
+	0x6c, 0xbc, 0x2c, 0xc4, 0x2e, 0x40, 0x12, 0x84, 0xd8, 0x17, 0xec, 0x4b, 0x4c, 0x8d, 0x9e, 0x0d,
+	0x69, 0x79, 0x22, 0x0d, 0xe8, 0x2d, 0x50, 0x0b, 0x9f, 0x93, 0x97, 0x5a, 0xc9, 0x9a, 0x57, 0x97,
+	0x86, 0x53, 0xf2, 0x12, 0xdb, 0x02, 0x50, 0x31, 0x10, 0x4f, 0x18, 0xe5, 0x18, 0xdd, 0x83, 0x75,
+	0xc5, 0x43, 0xde, 0x7c, 0xb5, 0x02, 0x6b, 0x83, 0x46, 0xb7, 0x60, 0x8b, 0xe2, 0xaf, 0x84, 0x5f,
+	0xa0, 0xa3, 0x4b, 0xb4, 0x25, 0xcd, 0x27, 0x39, 0x25, 0x7b, 0x0f, 0xb6, 0x1e, 0x61, 0x31, 0x95,
+	0xbf, 0x39, 0xd5, 0x6e, 0xf7, 0x00, 0x1d, 0xe1, 0x08, 0x5f, 0xca, 0xf4, 0x3c, 0xe4, 0x73, 0xd8,
+	0xd1, 0x9a, 0xe4, 0xed, 0x5a, 0x92, 0xb2, 0x21, 0x6c, 0xe4, 0xa5, 0xb5, 0x52, 0x71, 0x00, 0xe4,
+	0x0e, 0x36, 0x81, 0xd7, 0x64, 0xca, 0x8c, 0xfd, 0x7f, 0x55, 0xe7, 0x5b, 0xd8, 0x99, 0x0e, 0x65,
+	0xf4, 0xf9, 0x00, 0xea, 0x86, 0x4d, 0xae, 0x50, 0x39, 0xff, 0x89, 0x47, 0x65, 0x95, 0x6e, 0xc3,
+	0xf6, 0x23, 0x2c, 0x2e, 0x65, 0x74, 0x5e, 0xf6, 0xfb, 0xb0, 0xa3, 0x75, 0xaa, 0x80, 0x75, 0xa0,
+	0x7d, 0x8a, 0xc5, 0xd1, 0xd4, 0x30, 0x5d, 0x82, 0x1f, 0xfc, 0x0d, 0x70, 0x4d, 0xc9, 0x7f, 0xaa,
+	0xbf, 0x4e, 0xe8, 0x47, 0x0b, 0x9a, 0x85, 0xfe, 0x43, 0xfb, 0x0b, 0x6f, 0x3e, 0xdb, 0xa5, 0x9d,
+	0x92, 0x42, 0xb6, 0x07, 0xdf, 0xff, 0xf1, 0xd7, 0xcf, 0x2b, 0x77, 0xec, 0x9b, 0x93, 0x4f, 0xe3,
+	0x37, 0x5a, 0xc6, 0x0f, 0x93, 0x94, 0x3d, 0xc7, 0x23, 0xc1, 0xdd, 0xfe, 0x2b, 0xfd, 0xb9, 0xe4,
+	0x43, 0xdd, 0xab, 0xe8, 0x27, 0x0b, 0xe0, 0xa2, 0x87, 0x50, 0x7f, 0x61, 0x88, 0x99, 0x8e, 0xee,
+	0xec, 0x57, 0xc2, 0x6a, 0xd1, 0xed, 0x7d, 0xc5, 0x6d, 0x0f, 0x55, 0xe1, 0x86, 0xbe, 0xb3, 0xa0,
+	0x9e, 0xb7, 0x18, 0xea, 0x2d, 0x0c, 0x73, 0xa9, 0x0b, 0x4b, 0xf3, 0x33, 0x87, 0x83, 0x54, 0xa9,
+	0xc0, 0xc0, 0x10, 0x70, 0xfb, 0xaf, 0xd0, 0x0f, 0x16, 0x34, 0x0b, 0xfd, 0xbb, 0x44, 0xa9, 0xd9,
+	0x2e, 0xef, 0xec, 0xe6, 0xe0, 0xc2, 0x8b, 0xc1, 0xf9, 0x34, 0x7f, 0x31, 0xe4, 0x44, 0xfa, 0x95,
+	0x88, 0xfc, 0x6a, 0x41, 0x6b, 0x6a, 0x3c, 0xa0, 0xbb, 0x25, 0x45, 0x33, 0x5d, 0x98, 0x65, 0x64,
+	0x3e, 0x52, 0x64, 0x0e, 0x6d, 0x67, 0x89, 0x32, 0x17, 0x74, 0xdc, 0xbc, 0x11, 0x87, 0xf9, 0x48,
+	0x41, 0xbf, 0x59, 0x70, 0xad, 0xd8, 0xe8, 0xe8, 0xce, 0xd2, 0xc2, 0xb8, 0x34, 0x7a, 0x3a, 0x77,
+	0x2b, 0xa2, 0x4d, 0x21, 0xdd, 0x53, 0x74, 0xdf, 0x45, 0x57, 0xa4, 0xab, 0x0a, 0xfd, 0x62, 0x20,
+	0x2c, 0x29, 0xf4, 0x99, 0xa9, 0xd1, 0x29, 0x1d, 0x4f, 0xf3, 0x48, 0x2d, 0x12, 0x74, 0xc2, 0x48,
+	0x6a, 0xfb, 0x8b, 0x05, 0xad, 0xa9, 0xe1, 0xb3, 0x44, 0xdb, 0x79, 0x43, 0xaa, 0x4c, 0x5b, 0xc3,
+	0xab, 0x7f, 0x55, 0x5e, 0xbf, 0x5b, 0xb0, 0x3d, 0x33, 0xe8, 0xd0, 0xc1, 0x42, 0x6e, 0x8b, 0x86,
+	0x62, 0x85, 0xd4, 0x1d, 0x29, 0x8a, 0x0f, 0xec, 0xc3, 0xab, 0x51, 0x1c, 0xf2, 0x49, 0xc8, 0xa1,
+	0xd5, 0x7f, 0xf8, 0x02, 0x6e, 0x8c, 0x58, 0x3c, 0x13, 0x2c, 0x48, 0x48, 0x1e, 0xf0, 0xe1, 0x76,
+	0x71, 0x10, 0x9f, 0xc8, 0x57, 0xdc, 0x89, 0xf5, 0xf9, 0xa1, 0xf1, 0x08, 0x59, 0x14, 0xd0, 0xd0,
+	0x61, 0x69, 0xe8, 0x86, 0x98, 0xaa, 0x37, 0x9e, 0xab, 0xb7, 0x82, 0x84, 0xf0, 0x99, 0xff, 0x1c,
+	0xf7, 0xe3, 0xe8, 0x6c, 0x5d, 0xa1, 0xde, 0xfb, 0x37, 0x00, 0x00, 0xff, 0xff, 0x04, 0x39, 0xff,
+	0x08, 0x98, 0x0c, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/ml/v1beta1/prediction_service.pb.go b/googleapis/cloud/ml/v1beta1/prediction_service.pb.go
index b80dd6e5..2e96b2bb 100644
--- a/googleapis/cloud/ml/v1beta1/prediction_service.pb.go
+++ b/googleapis/cloud/ml/v1beta1/prediction_service.pb.go
@@ -8,7 +8,7 @@ import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
 import _ "google.golang.org/genproto/googleapis/api/annotations"
-import google_api2 "google.golang.org/genproto/googleapis/api/httpbody"
+import google_api3 "google.golang.org/genproto/googleapis/api/httpbody"
 
 import (
 	context "golang.org/x/net/context"
@@ -35,7 +35,7 @@ var _ = math.Inf
 // model's input definition. Instances can include named inputs or can contain
 // only unlabeled values.
 //
-// Most data does not include named inputs. Some instances will be simple
+// Not all data includes named inputs. Some instances will be simple
 // JSON values (boolean, number, or string). However, instances are often lists
 // of simple values, or complex nested lists. Here are some examples of request
 // bodies:
@@ -50,7 +50,13 @@ var _ = math.Inf
 // </pre>
 // Sentences encoded as lists of words (vectors of strings):
 // <pre>
-// {"instances": [["the","quick","brown"], ["la","bruja","le"]]}
+// {
+//   "instances": [
+//     ["the","quick","brown"],
+//     ["la","bruja","le"],
+//     ...
+//   ]
+// }
 // </pre>
 // Floating point scalar values:
 // <pre>
@@ -58,22 +64,53 @@ var _ = math.Inf
 // </pre>
 // Vectors of integers:
 // <pre>
-// {"instances": [[0, 1, 2], [3, 4, 5],...]}
+// {
+//   "instances": [
+//     [0, 1, 2],
+//     [3, 4, 5],
+//     ...
+//   ]
+// }
 // </pre>
 // Tensors (in this case, two-dimensional tensors):
 // <pre>
-// {"instances": [[[0, 1, 2], [3, 4, 5]], ...]}
+// {
+//   "instances": [
+//     [
+//       [0, 1, 2],
+//       [3, 4, 5]
+//     ],
+//     ...
+//   ]
+// }
 // </pre>
-// Images represented as a three-dimensional list. In this encoding scheme the
-// first two dimensions represent the rows and columns of the image, and the
-// third contains the R, G, and B values for each pixel.
+// Images can be represented different ways. In this encoding scheme the first
+// two dimensions represent the rows and columns of the image, and the third
+// contains lists (vectors) of the R, G, and B values for each pixel.
 // <pre>
-// {"instances": [[[[138, 30, 66], [130, 20, 56], ...]]]]}
+// {
+//   "instances": [
+//     [
+//       [
+//         [138, 30, 66],
+//         [130, 20, 56],
+//         ...
+//       ],
+//       [
+//         [126, 38, 61],
+//         [122, 24, 57],
+//         ...
+//       ],
+//       ...
+//     ],
+//     ...
+//   ]
+// }
 // </pre>
-// Data must be encoded as UTF-8. If your data uses another character encoding,
-// you must base64 encode the data and mark it as binary. To mark a JSON string
-// as binary, replace it with an object with a single attribute named `b`:
-// <pre>{"b": "..."} </pre>
+// JSON strings must be encoded as UTF-8. To send binary data, you must
+// base64-encode the data and mark it as binary. To mark a JSON string
+// as binary, replace it with a JSON object with a single attribute named `b64`:
+// <pre>{"b64": "..."} </pre>
 // For example:
 //
 // Two Serialized tf.Examples (fake data, for illustrative purposes only):
@@ -89,8 +126,20 @@ var _ = math.Inf
 //
 // JSON input data to be preprocessed:
 // <pre>
-// {"instances": [{"a": 1.0,  "b": true,  "c": "x"},
-//                {"a": -2.0, "b": false, "c": "y"}]}
+// {
+//   "instances": [
+//     {
+//       "a": 1.0,
+//       "b": true,
+//       "c": "x"
+//     },
+//     {
+//       "a": -2.0,
+//       "b": false,
+//       "c": "y"
+//     }
+//   ]
+// }
 // </pre>
 // Some models have an underlying TensorFlow graph that accepts multiple input
 // tensors. In this case, you should use the names of JSON name/value pairs to
@@ -99,14 +148,59 @@ var _ = math.Inf
 // For a graph with input tensor aliases "tag" (string) and "image"
 // (base64-encoded string):
 // <pre>
-// {"instances": [{"tag": "beach", "image": {"b64": "ASa8asdf"}},
-//                {"tag": "car", "image": {"b64": "JLK7ljk3"}}]}
+// {
+//   "instances": [
+//     {
+//       "tag": "beach",
+//       "image": {"b64": "ASa8asdf"}
+//     },
+//     {
+//       "tag": "car",
+//       "image": {"b64": "JLK7ljk3"}
+//     }
+//   ]
+// }
 // </pre>
 // For a graph with input tensor aliases "tag" (string) and "image"
 // (3-dimensional array of 8-bit ints):
 // <pre>
-// {"instances": [{"tag": "beach", "image": [[[263, 1, 10], [262, 2, 11], ...]]},
-//                {"tag": "car", "image": [[[10, 11, 24], [23, 10, 15], ...]]}]}
+// {
+//   "instances": [
+//     {
+//       "tag": "beach",
+//       "image": [
+//         [
+//           [138, 30, 66],
+//           [130, 20, 56],
+//           ...
+//         ],
+//         [
+//           [126, 38, 61],
+//           [122, 24, 57],
+//           ...
+//         ],
+//         ...
+//       ]
+//     },
+//     {
+//       "tag": "car",
+//       "image": [
+//         [
+//           [255, 0, 102],
+//           [255, 0, 97],
+//           ...
+//         ],
+//         [
+//           [254, 1, 101],
+//           [254, 2, 93],
+//           ...
+//         ],
+//         ...
+//       ]
+//     },
+//     ...
+//   ]
+// }
 // </pre>
 // If the call is successful, the response body will contain one prediction
 // entry per instance in the request body. If prediction fails for any
@@ -119,7 +213,7 @@ type PredictRequest struct {
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 	//
 	// Required. The prediction request body.
-	HttpBody *google_api2.HttpBody `protobuf:"bytes,2,opt,name=http_body,json=httpBody" json:"http_body,omitempty"`
+	HttpBody *google_api3.HttpBody `protobuf:"bytes,2,opt,name=http_body,json=httpBody" json:"http_body,omitempty"`
 }
 
 func (m *PredictRequest) Reset()                    { *m = PredictRequest{} }
@@ -134,7 +228,7 @@ func (m *PredictRequest) GetName() string {
 	return ""
 }
 
-func (m *PredictRequest) GetHttpBody() *google_api2.HttpBody {
+func (m *PredictRequest) GetHttpBody() *google_api3.HttpBody {
 	if m != nil {
 		return m.HttpBody
 	}
@@ -158,52 +252,8 @@ const _ = grpc.SupportPackageIsVersion4
 type OnlinePredictionServiceClient interface {
 	// Performs prediction on the data in the request.
 	//
-	// Responses are very similar to requests. There are two top-level fields,
-	// each of which are JSON lists:
-	//
-	// <dl>
-	//   <dt>predictions</dt>
-	//   <dd>The list of predictions, one per instance in the request.</dd>
-	//   <dt>error</dt>
-	//   <dd>An error message returned instead of a prediction list if any
-	//       instance produced an error.</dd>
-	// </dl>
-	//
-	// If the call is successful, the response body will contain one prediction
-	// entry per instance in the request body. If prediction fails for any
-	// instance, the response body will contain no predictions and will contian
-	// a single error entry instead.
-	//
-	// Even though there is one prediction per instance, the format of a
-	// prediction is not directly related to the format of an instance.
-	// Predictions take whatever format is specified in the outputs collection
-	// defined in the model. The collection of predictions is returned in a JSON
-	// list. Each member of the list can be a simple value, a list, or a JSON
-	// object of any complexity. If your model has more than one output tensor,
-	// each prediction will be a JSON object containing a name/value pair for each
-	// output. The names identify the output aliases in the graph.
-	//
-	// The following examples show some possible responses:
-	//
-	// A simple set of predictions for three input instances, where each
-	// prediction is an integer value:
-	// <pre>
-	// {"predictions": [5, 4, 3]}
-	// </pre>
-	// A more complex set of predictions, each containing two named values that
-	// correspond to output tensors, named **label** and **scores** respectively.
-	// The value of **label** is the predicted category ("car" or "beach") and
-	// **scores** contains a list of probabilities for that instance across the
-	// possible categories.
-	// <pre>
-	// {"predictions": [{"label": "beach", "scores": [0.1, 0.9]},
-	//                  {"label": "car", "scores": [0.75, 0.25]}]}
-	// </pre>
-	// A response when there is an error processing an input instance:
-	// <pre>
-	// {"error": "Divide by zero"}
-	// </pre>
-	Predict(ctx context.Context, in *PredictRequest, opts ...grpc.CallOption) (*google_api2.HttpBody, error)
+	// **** REMOVE FROM GENERATED DOCUMENTATION
+	Predict(ctx context.Context, in *PredictRequest, opts ...grpc.CallOption) (*google_api3.HttpBody, error)
 }
 
 type onlinePredictionServiceClient struct {
@@ -214,8 +264,8 @@ func NewOnlinePredictionServiceClient(cc *grpc.ClientConn) OnlinePredictionServi
 	return &onlinePredictionServiceClient{cc}
 }
 
-func (c *onlinePredictionServiceClient) Predict(ctx context.Context, in *PredictRequest, opts ...grpc.CallOption) (*google_api2.HttpBody, error) {
-	out := new(google_api2.HttpBody)
+func (c *onlinePredictionServiceClient) Predict(ctx context.Context, in *PredictRequest, opts ...grpc.CallOption) (*google_api3.HttpBody, error) {
+	out := new(google_api3.HttpBody)
 	err := grpc.Invoke(ctx, "/google.cloud.ml.v1beta1.OnlinePredictionService/Predict", in, out, c.cc, opts...)
 	if err != nil {
 		return nil, err
@@ -228,52 +278,8 @@ func (c *onlinePredictionServiceClient) Predict(ctx context.Context, in *Predict
 type OnlinePredictionServiceServer interface {
 	// Performs prediction on the data in the request.
 	//
-	// Responses are very similar to requests. There are two top-level fields,
-	// each of which are JSON lists:
-	//
-	// <dl>
-	//   <dt>predictions</dt>
-	//   <dd>The list of predictions, one per instance in the request.</dd>
-	//   <dt>error</dt>
-	//   <dd>An error message returned instead of a prediction list if any
-	//       instance produced an error.</dd>
-	// </dl>
-	//
-	// If the call is successful, the response body will contain one prediction
-	// entry per instance in the request body. If prediction fails for any
-	// instance, the response body will contain no predictions and will contian
-	// a single error entry instead.
-	//
-	// Even though there is one prediction per instance, the format of a
-	// prediction is not directly related to the format of an instance.
-	// Predictions take whatever format is specified in the outputs collection
-	// defined in the model. The collection of predictions is returned in a JSON
-	// list. Each member of the list can be a simple value, a list, or a JSON
-	// object of any complexity. If your model has more than one output tensor,
-	// each prediction will be a JSON object containing a name/value pair for each
-	// output. The names identify the output aliases in the graph.
-	//
-	// The following examples show some possible responses:
-	//
-	// A simple set of predictions for three input instances, where each
-	// prediction is an integer value:
-	// <pre>
-	// {"predictions": [5, 4, 3]}
-	// </pre>
-	// A more complex set of predictions, each containing two named values that
-	// correspond to output tensors, named **label** and **scores** respectively.
-	// The value of **label** is the predicted category ("car" or "beach") and
-	// **scores** contains a list of probabilities for that instance across the
-	// possible categories.
-	// <pre>
-	// {"predictions": [{"label": "beach", "scores": [0.1, 0.9]},
-	//                  {"label": "car", "scores": [0.75, 0.25]}]}
-	// </pre>
-	// A response when there is an error processing an input instance:
-	// <pre>
-	// {"error": "Divide by zero"}
-	// </pre>
-	Predict(context.Context, *PredictRequest) (*google_api2.HttpBody, error)
+	// **** REMOVE FROM GENERATED DOCUMENTATION
+	Predict(context.Context, *PredictRequest) (*google_api3.HttpBody, error)
 }
 
 func RegisterOnlinePredictionServiceServer(s *grpc.Server, srv OnlinePredictionServiceServer) {
diff --git a/googleapis/cloud/runtimeconfig/v1beta1/resources.pb.go b/googleapis/cloud/runtimeconfig/v1beta1/resources.pb.go
index ac6200ce..b907c97d 100644
--- a/googleapis/cloud/runtimeconfig/v1beta1/resources.pb.go
+++ b/googleapis/cloud/runtimeconfig/v1beta1/resources.pb.go
@@ -101,7 +101,6 @@ type RuntimeConfig struct {
 	// change the resource's name.
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 	// An optional description of the RuntimeConfig object.
-	// The length of the description must be less than 256 bytes.
 	Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`
 }
 
@@ -148,7 +147,8 @@ type Variable struct {
 	// Once you create a variable, you cannot change the variable name.
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 	// The the value of the variable. It can be either a binary or a string
-	// value. Specifying both will cause server to issue an error.
+	// value. You must specify one of either `value` or `text`. Specifying both
+	// will cause the server to return an error.
 	//
 	// Types that are valid to be assigned to Contents:
 	//	*Variable_Value
@@ -548,43 +548,44 @@ func init() {
 func init() { proto.RegisterFile("google/cloud/runtimeconfig/v1beta1/resources.proto", fileDescriptor0) }
 
 var fileDescriptor0 = []byte{
-	// 595 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x5f, 0x6f, 0xd3, 0x3e,
-	0x14, 0x6d, 0xf6, 0xeb, 0x9f, 0xed, 0x66, 0xfb, 0x69, 0xb2, 0xd0, 0x08, 0x15, 0x1a, 0x55, 0x1f,
-	0x50, 0xc5, 0x43, 0xc2, 0xba, 0x27, 0x34, 0x5e, 0xfa, 0x27, 0xb0, 0xa2, 0x09, 0x26, 0xb7, 0x1b,
-	0x12, 0x2f, 0xc3, 0x75, 0xbc, 0x10, 0x29, 0xb5, 0x23, 0xc7, 0x9e, 0x40, 0x7c, 0x31, 0x3e, 0x0d,
-	0x4f, 0x7c, 0x10, 0x64, 0xc7, 0x81, 0x0e, 0x26, 0x36, 0x78, 0xf3, 0xf5, 0x3d, 0xe7, 0xdc, 0x7b,
-	0x8f, 0x6f, 0x02, 0xc3, 0x54, 0x88, 0x34, 0x67, 0x11, 0xcd, 0x85, 0x4e, 0x22, 0xa9, 0xb9, 0xca,
-	0x56, 0x8c, 0x0a, 0x7e, 0x99, 0xa5, 0xd1, 0xd5, 0xc1, 0x92, 0x29, 0x72, 0x10, 0x49, 0x56, 0x0a,
-	0x2d, 0x29, 0x2b, 0xc3, 0x42, 0x0a, 0x25, 0x50, 0xbf, 0xe2, 0x84, 0x96, 0x13, 0x5e, 0xe3, 0x84,
-	0x8e, 0xd3, 0x7d, 0xe8, 0x74, 0x49, 0x91, 0x45, 0x84, 0x73, 0xa1, 0x88, 0xca, 0x04, 0x77, 0x0a,
-	0xdd, 0x7d, 0x97, 0xb5, 0xd1, 0x52, 0x5f, 0x46, 0x89, 0x96, 0x16, 0xe0, 0xf2, 0x8f, 0x7e, 0xcd,
-	0x9b, 0x0a, 0xa5, 0x22, 0xab, 0xc2, 0x01, 0xee, 0x3b, 0x80, 0x2c, 0x68, 0x54, 0x2a, 0xa2, 0xb4,
-	0x53, 0xee, 0xc7, 0xb0, 0x83, 0xab, 0x86, 0x26, 0xb6, 0x21, 0x84, 0xa0, 0xc9, 0xc9, 0x8a, 0x05,
-	0x5e, 0xcf, 0x1b, 0x6c, 0x61, 0x7b, 0x46, 0x3d, 0xf0, 0x13, 0x56, 0x52, 0x99, 0x15, 0xa6, 0x66,
-	0xb0, 0x61, 0x53, 0xeb, 0x57, 0xfd, 0xaf, 0x1e, 0x6c, 0x9e, 0x13, 0x99, 0x91, 0x65, 0xce, 0x6e,
-	0x94, 0xd8, 0x83, 0xd6, 0x15, 0xc9, 0x35, 0xb3, 0xe4, 0xed, 0xe3, 0x06, 0xae, 0x42, 0x74, 0x0f,
-	0x9a, 0x8a, 0x7d, 0x54, 0x41, 0xcb, 0x60, 0x8f, 0x1b, 0xd8, 0x46, 0xe8, 0x08, 0x7c, 0x5d, 0x24,
-	0x44, 0xb1, 0x0b, 0xd3, 0x59, 0xf0, 0x5f, 0xcf, 0x1b, 0xf8, 0xc3, 0x6e, 0xe8, 0x7c, 0xac, 0xa7,
-	0x0c, 0x17, 0xf5, 0x94, 0x18, 0x2a, 0xb8, 0xb9, 0x40, 0x2f, 0xa1, 0x65, 0x46, 0x64, 0x41, 0xb3,
-	0xe7, 0x0d, 0xfe, 0x1f, 0x1e, 0x84, 0xb7, 0xdb, 0x1f, 0xd6, 0xbd, 0xcf, 0x0d, 0x11, 0x57, 0xfc,
-	0x31, 0xc0, 0x26, 0x15, 0x5c, 0x31, 0xae, 0xca, 0xfe, 0x17, 0x0f, 0xb6, 0x63, 0x9e, 0x4c, 0x04,
-	0x4f, 0x32, 0x33, 0x31, 0x7a, 0x0f, 0x3e, 0x25, 0x32, 0xc9, 0x38, 0xc9, 0x33, 0xf5, 0xc9, 0xce,
-	0xea, 0x0f, 0x9f, 0xdf, 0xa5, 0xd6, 0xba, 0x4c, 0x38, 0xf9, 0xa9, 0x71, 0xdc, 0xc0, 0xeb, 0x92,
-	0xdd, 0x67, 0xe0, 0xaf, 0x65, 0x8d, 0xab, 0x05, 0x51, 0x1f, 0x6a, 0x57, 0xcd, 0x19, 0xed, 0x41,
-	0x9b, 0xeb, 0xd5, 0x92, 0x49, 0x6b, 0x6b, 0x0b, 0xbb, 0x68, 0xec, 0xc3, 0x16, 0xad, 0x4b, 0xf4,
-	0xbf, 0x6d, 0x40, 0xfb, 0x2d, 0xc9, 0x14, 0x93, 0x37, 0xbe, 0xcc, 0x21, 0x74, 0x4c, 0x93, 0x42,
-	0x2b, 0x2b, 0xe2, 0x0f, 0x1f, 0xfc, 0xe6, 0xf3, 0xd4, 0x6d, 0x1b, 0xae, 0x91, 0xe8, 0x15, 0x74,
-	0x2e, 0x49, 0x96, 0x6b, 0x59, 0x3f, 0xce, 0xd3, 0xbf, 0x9d, 0x1c, 0xd7, 0x02, 0x46, 0xab, 0xd4,
-	0x94, 0xb2, 0xb2, 0xb4, 0x2f, 0xf6, 0x4f, 0x5a, 0x4e, 0xc0, 0x2c, 0x0e, 0x95, 0xec, 0xc7, 0xe2,
-	0xb4, 0x6e, 0x5f, 0x9c, 0x0a, 0x6e, 0x17, 0x07, 0x41, 0x33, 0x11, 0x9c, 0x05, 0xed, 0x9e, 0x37,
-	0xd8, 0xc4, 0xf6, 0x8c, 0x06, 0xd0, 0x62, 0x52, 0x0a, 0x19, 0x74, 0xac, 0x14, 0xaa, 0xa5, 0x64,
-	0x41, 0xc3, 0xb9, 0xfd, 0x90, 0x70, 0x05, 0x78, 0x32, 0x83, 0x9d, 0x6b, 0x5b, 0x84, 0xf6, 0xa1,
-	0x7b, 0x3e, 0xc2, 0xb3, 0xd1, 0xf8, 0x24, 0xbe, 0x98, 0x2f, 0x46, 0x8b, 0xf8, 0xe2, 0xec, 0xf5,
-	0xfc, 0x34, 0x9e, 0xcc, 0x5e, 0xcc, 0xe2, 0xe9, 0x6e, 0x03, 0xf9, 0xd0, 0x39, 0x3b, 0x9d, 0x8e,
-	0x16, 0xf1, 0x74, 0xd7, 0x33, 0xc1, 0x34, 0x3e, 0x89, 0x4d, 0xb0, 0x31, 0xfe, 0x0c, 0x8f, 0xa9,
-	0x58, 0xdd, 0xc1, 0x85, 0x53, 0xef, 0xdd, 0x1b, 0x87, 0x4a, 0x45, 0x4e, 0x78, 0x1a, 0x0a, 0x99,
-	0x46, 0x29, 0xe3, 0x76, 0xd2, 0xa8, 0x4a, 0x91, 0x22, 0x2b, 0xff, 0xf4, 0xbf, 0x3a, 0xba, 0x76,
-	0xbb, 0x6c, 0x5b, 0xee, 0xe1, 0xf7, 0x00, 0x00, 0x00, 0xff, 0xff, 0x55, 0xc5, 0x17, 0x72, 0xea,
-	0x04, 0x00, 0x00,
+	// 615 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x5d, 0x6f, 0xd3, 0x3c,
+	0x14, 0xc7, 0x9b, 0x3e, 0x7d, 0xd9, 0x4e, 0xb6, 0x47, 0x93, 0x85, 0x46, 0xa8, 0xd0, 0xa8, 0x7a,
+	0x81, 0x2a, 0x2e, 0x12, 0xda, 0x5d, 0xa1, 0x71, 0xd3, 0x97, 0xb0, 0x15, 0x4d, 0x30, 0xb9, 0xdd,
+	0x90, 0xb8, 0x19, 0xae, 0xe3, 0x85, 0x48, 0xa9, 0x1d, 0x39, 0xce, 0x04, 0xdf, 0x86, 0x6b, 0x3e,
+	0x01, 0x9f, 0x86, 0x2b, 0x3e, 0x08, 0xb2, 0xe3, 0x40, 0x0b, 0x13, 0x1b, 0xdc, 0xf9, 0xf8, 0xfc,
+	0xcf, 0xef, 0xbc, 0xf8, 0x24, 0x30, 0x8c, 0x85, 0x88, 0x53, 0x16, 0xd0, 0x54, 0x14, 0x51, 0x20,
+	0x0b, 0xae, 0x92, 0x15, 0xa3, 0x82, 0x5f, 0x25, 0x71, 0x70, 0x3d, 0x58, 0x32, 0x45, 0x06, 0x81,
+	0x64, 0xb9, 0x28, 0x24, 0x65, 0xb9, 0x9f, 0x49, 0xa1, 0x04, 0xea, 0x95, 0x31, 0xbe, 0x89, 0xf1,
+	0x37, 0x62, 0x7c, 0x1b, 0xd3, 0x79, 0x68, 0xb9, 0x24, 0x4b, 0x02, 0xc2, 0xb9, 0x50, 0x44, 0x25,
+	0x82, 0x5b, 0x42, 0xe7, 0xc0, 0x7a, 0x8d, 0xb5, 0x2c, 0xae, 0x82, 0xa8, 0x90, 0x46, 0x60, 0xfd,
+	0x8f, 0x7e, 0xf5, 0xeb, 0x0c, 0xb9, 0x22, 0xab, 0xcc, 0x0a, 0xee, 0x5b, 0x81, 0xcc, 0x68, 0x90,
+	0x2b, 0xa2, 0x0a, 0x4b, 0xee, 0x85, 0xb0, 0x8b, 0xcb, 0x82, 0x26, 0xa6, 0x20, 0x84, 0xa0, 0xc1,
+	0xc9, 0x8a, 0x79, 0x4e, 0xd7, 0xe9, 0x6f, 0x63, 0x73, 0x46, 0x5d, 0x70, 0x23, 0x96, 0x53, 0x99,
+	0x64, 0x3a, 0xa7, 0x57, 0x37, 0xae, 0xf5, 0xab, 0xde, 0x57, 0x07, 0xb6, 0x2e, 0x88, 0x4c, 0xc8,
+	0x32, 0x65, 0x37, 0x22, 0xf6, 0xa1, 0x79, 0x4d, 0xd2, 0x82, 0x99, 0xe0, 0x9d, 0x93, 0x1a, 0x2e,
+	0x4d, 0x74, 0x0f, 0x1a, 0x8a, 0x7d, 0x50, 0x5e, 0x53, 0x6b, 0x4f, 0x6a, 0xd8, 0x58, 0xe8, 0x08,
+	0xdc, 0x22, 0x8b, 0x88, 0x62, 0x97, 0xba, 0x32, 0xef, 0xbf, 0xae, 0xd3, 0x77, 0x87, 0x1d, 0xdf,
+	0xce, 0xb1, 0xea, 0xd2, 0x5f, 0x54, 0x5d, 0x62, 0x28, 0xe5, 0xfa, 0x02, 0x1d, 0x43, 0x53, 0xb7,
+	0xc8, 0xbc, 0x46, 0xd7, 0xe9, 0xff, 0x3f, 0x1c, 0xf8, 0xb7, 0x8f, 0xdf, 0xaf, 0x6a, 0x9f, 0xeb,
+	0x40, 0x5c, 0xc6, 0x8f, 0x01, 0xb6, 0xa8, 0xe0, 0x8a, 0x71, 0x95, 0xf7, 0xbe, 0x38, 0xb0, 0x13,
+	0xf2, 0x68, 0x22, 0x78, 0x94, 0xe8, 0x8e, 0xd1, 0x3b, 0x70, 0x29, 0x91, 0x51, 0xc2, 0x49, 0x9a,
+	0xa8, 0x8f, 0xa6, 0x57, 0x77, 0xf8, 0xfc, 0x2e, 0xb9, 0xd6, 0x31, 0xfe, 0xe4, 0x27, 0xe3, 0xa4,
+	0x86, 0xd7, 0x91, 0x9d, 0x67, 0xe0, 0xae, 0x79, 0xf5, 0x54, 0x33, 0xa2, 0xde, 0x57, 0x53, 0xd5,
+	0x67, 0xb4, 0x0f, 0x2d, 0x5e, 0xac, 0x96, 0x4c, 0x9a, 0xb1, 0x36, 0xb1, 0xb5, 0xc6, 0x2e, 0x6c,
+	0xd3, 0x2a, 0x45, 0xef, 0x5b, 0x1d, 0x5a, 0x6f, 0x48, 0xa2, 0x98, 0xbc, 0xf1, 0x65, 0x0e, 0xa1,
+	0xad, 0x8b, 0x14, 0x85, 0x32, 0x10, 0x77, 0xf8, 0xe0, 0xb7, 0x39, 0x4f, 0xed, 0xb6, 0xe1, 0x4a,
+	0x89, 0x5e, 0x42, 0xfb, 0x8a, 0x24, 0x69, 0x21, 0xab, 0xc7, 0x79, 0xfa, 0xb7, 0x9d, 0xe3, 0x0a,
+	0xa0, 0x59, 0x79, 0x41, 0x29, 0xcb, 0x73, 0xf3, 0x62, 0xff, 0xc4, 0xb2, 0x00, 0xbd, 0x38, 0x54,
+	0xb2, 0x1f, 0x8b, 0xd3, 0xbc, 0x7d, 0x71, 0x4a, 0xb9, 0x59, 0x1c, 0x04, 0x8d, 0x48, 0x70, 0xe6,
+	0xb5, 0xba, 0x4e, 0x7f, 0x0b, 0x9b, 0x33, 0xea, 0x43, 0x93, 0x49, 0x29, 0xa4, 0xd7, 0x36, 0x28,
+	0x54, 0xa1, 0x64, 0x46, 0xfd, 0xb9, 0xf9, 0x90, 0x70, 0x29, 0x78, 0x32, 0x83, 0xdd, 0x8d, 0x2d,
+	0x42, 0x07, 0xd0, 0xb9, 0x18, 0xe1, 0xd9, 0x68, 0x7c, 0x1a, 0x5e, 0xce, 0x17, 0xa3, 0x45, 0x78,
+	0x79, 0xfe, 0x6a, 0x7e, 0x16, 0x4e, 0x66, 0x2f, 0x66, 0xe1, 0x74, 0xaf, 0x86, 0x5c, 0x68, 0x9f,
+	0x9f, 0x4d, 0x47, 0x8b, 0x70, 0xba, 0xe7, 0x68, 0x63, 0x1a, 0x9e, 0x86, 0xda, 0xa8, 0x8f, 0x3f,
+	0x39, 0xf0, 0x98, 0x8a, 0xd5, 0x1d, 0xc6, 0x70, 0xe6, 0xbc, 0x7d, 0x6d, 0x55, 0xb1, 0x48, 0x09,
+	0x8f, 0x7d, 0x21, 0xe3, 0x20, 0x66, 0xdc, 0xb4, 0x1a, 0x94, 0x2e, 0x92, 0x25, 0xf9, 0x9f, 0x7e,
+	0x58, 0x47, 0x1b, 0xb7, 0x9f, 0xeb, 0xbd, 0xe3, 0x92, 0x38, 0x31, 0x79, 0x37, 0x7e, 0x0f, 0xfe,
+	0xc5, 0x60, 0xac, 0x43, 0x96, 0x2d, 0x93, 0xe0, 0xf0, 0x7b, 0x00, 0x00, 0x00, 0xff, 0xff, 0x61,
+	0xe4, 0x09, 0x63, 0x10, 0x05, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/runtimeconfig/v1beta1/runtimeconfig.pb.go b/googleapis/cloud/runtimeconfig/v1beta1/runtimeconfig.pb.go
index 62a82ff0..dbdb6742 100644
--- a/googleapis/cloud/runtimeconfig/v1beta1/runtimeconfig.pb.go
+++ b/googleapis/cloud/runtimeconfig/v1beta1/runtimeconfig.pb.go
@@ -226,6 +226,10 @@ type ListVariablesRequest struct {
 	// Specifies a page token to use. Set `pageToken` to a `nextPageToken`
 	// returned by a previous list request to get the next page of results.
 	PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
+	// The flag indicates whether the user wants to return values of variables.
+	// If true, then only those variables that user has IAM GetVariable permission
+	// will be returned along with their values.
+	ReturnValues bool `protobuf:"varint,5,opt,name=return_values,json=returnValues" json:"return_values,omitempty"`
 }
 
 func (m *ListVariablesRequest) Reset()                    { *m = ListVariablesRequest{} }
@@ -261,6 +265,13 @@ func (m *ListVariablesRequest) GetPageToken() string {
 	return ""
 }
 
+func (m *ListVariablesRequest) GetReturnValues() bool {
+	if m != nil {
+		return m.ReturnValues
+	}
+	return false
+}
+
 // Response for the `ListVariables()` method.
 type ListVariablesResponse struct {
 	// A list of variables and their values. The order of returned variable
@@ -660,7 +671,9 @@ type RuntimeConfigManagerClient interface {
 	// Deletes a RuntimeConfig resource.
 	DeleteConfig(ctx context.Context, in *DeleteConfigRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error)
 	// Lists variables within given a configuration, matching any provided filters.
-	// This only lists variable names, not the values.
+	// This only lists variable names, not the values, unless `return_values` is
+	// true, in which case only variables that user has IAM permission to
+	// GetVariable will be returned.
 	ListVariables(ctx context.Context, in *ListVariablesRequest, opts ...grpc.CallOption) (*ListVariablesResponse, error)
 	// Gets information about a single variable.
 	GetVariable(ctx context.Context, in *GetVariableRequest, opts ...grpc.CallOption) (*Variable, error)
@@ -867,7 +880,9 @@ type RuntimeConfigManagerServer interface {
 	// Deletes a RuntimeConfig resource.
 	DeleteConfig(context.Context, *DeleteConfigRequest) (*google_protobuf4.Empty, error)
 	// Lists variables within given a configuration, matching any provided filters.
-	// This only lists variable names, not the values.
+	// This only lists variable names, not the values, unless `return_values` is
+	// true, in which case only variables that user has IAM permission to
+	// GetVariable will be returned.
 	ListVariables(context.Context, *ListVariablesRequest) (*ListVariablesResponse, error)
 	// Gets information about a single variable.
 	GetVariable(context.Context, *GetVariableRequest) (*Variable, error)
@@ -1264,74 +1279,77 @@ func init() {
 }
 
 var fileDescriptor1 = []byte{
-	// 1099 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x98, 0x4d, 0x6f, 0xdc, 0x44,
-	0x18, 0xc7, 0x35, 0x49, 0xd9, 0x66, 0x9f, 0x34, 0x01, 0x4d, 0x5e, 0x14, 0xb9, 0xad, 0x88, 0x0c,
-	0x8a, 0xc2, 0xaa, 0xb2, 0x9b, 0x6d, 0x95, 0x26, 0x0b, 0xe5, 0x90, 0x14, 0x95, 0xf0, 0xa2, 0x56,
-	0x26, 0x50, 0x89, 0x4b, 0x34, 0xd9, 0x4c, 0x1c, 0xc3, 0xee, 0xd8, 0xd8, 0xb3, 0x09, 0xb4, 0xca,
-	0xa5, 0xdc, 0x40, 0x48, 0x48, 0x1c, 0xca, 0x89, 0x03, 0x12, 0x9c, 0x10, 0xe2, 0xc4, 0x05, 0xd1,
-	0x2f, 0x81, 0xc4, 0x27, 0xe0, 0x83, 0x20, 0xcf, 0x8b, 0xd7, 0xde, 0x78, 0x77, 0xc7, 0x21, 0xdc,
-	0x76, 0xc7, 0xf3, 0xcc, 0xfc, 0xe6, 0x99, 0xbf, 0x9f, 0xff, 0x23, 0xc3, 0xba, 0x1f, 0x86, 0x7e,
-	0x87, 0xba, 0xed, 0x4e, 0xd8, 0x3b, 0x70, 0xe3, 0x1e, 0xe3, 0x41, 0x97, 0xb6, 0x43, 0x76, 0x18,
-	0xf8, 0xee, 0xf1, 0xda, 0x3e, 0xe5, 0x64, 0xad, 0x38, 0xea, 0x44, 0x71, 0xc8, 0x43, 0x6c, 0xcb,
-	0x38, 0x47, 0xc4, 0x39, 0xc5, 0x19, 0x2a, 0xce, 0xba, 0xa6, 0xd6, 0x26, 0x51, 0xe0, 0x12, 0xc6,
-	0x42, 0x4e, 0x78, 0x10, 0xb2, 0x44, 0xae, 0x60, 0x35, 0x4d, 0x76, 0xa6, 0x49, 0xd8, 0x8b, 0xdb,
-	0x54, 0xc7, 0xbc, 0xa2, 0x62, 0x3a, 0x21, 0xf3, 0xe3, 0x1e, 0x63, 0x01, 0xf3, 0xdd, 0x30, 0xa2,
-	0x71, 0x61, 0xe1, 0xab, 0x6a, 0x92, 0xf8, 0xb7, 0xdf, 0x3b, 0x74, 0x69, 0x37, 0xe2, 0x5f, 0xa8,
-	0x87, 0x2f, 0x0f, 0x3e, 0x4c, 0x77, 0x4d, 0x38, 0xe9, 0x46, 0x72, 0x82, 0x7d, 0x04, 0xf8, 0xbd,
-	0x20, 0xe1, 0xdb, 0x02, 0x24, 0xf1, 0xe8, 0x67, 0x3d, 0x9a, 0x70, 0xbc, 0x08, 0xb5, 0x88, 0xc4,
-	0x94, 0xf1, 0x25, 0xb4, 0x8c, 0x56, 0xeb, 0x9e, 0xfa, 0x87, 0xaf, 0x42, 0x3d, 0x22, 0x3e, 0xdd,
-	0x4b, 0x82, 0xc7, 0x74, 0x69, 0x62, 0x19, 0xad, 0xbe, 0xe0, 0x4d, 0xa5, 0x03, 0x1f, 0x04, 0x8f,
-	0x29, 0xbe, 0x0e, 0x20, 0x1e, 0xf2, 0xf0, 0x53, 0xca, 0x96, 0x26, 0x45, 0xa0, 0x98, 0xbe, 0x9b,
-	0x0e, 0xd8, 0x5f, 0x21, 0x98, 0x2b, 0x6c, 0x95, 0x44, 0x21, 0x4b, 0x28, 0x7e, 0x17, 0x2e, 0xcb,
-	0x34, 0x24, 0x4b, 0x68, 0x79, 0x72, 0x75, 0xba, 0xb9, 0xe6, 0x8c, 0x4f, 0xb6, 0xe3, 0xc9, 0x51,
-	0xb9, 0x98, 0xa7, 0x57, 0xc0, 0x2b, 0xf0, 0x22, 0xa3, 0x9f, 0xf3, 0xbd, 0x1c, 0xc8, 0x84, 0x00,
-	0x99, 0x49, 0x87, 0x1f, 0x66, 0x30, 0x2b, 0xf0, 0xd2, 0x7d, 0xaa, 0x50, 0xf4, 0xa1, 0x31, 0x5c,
-	0x62, 0xa4, 0x4b, 0x55, 0x80, 0xf8, 0x6d, 0x3f, 0x43, 0x30, 0xb7, 0x1d, 0x53, 0xc2, 0x69, 0x71,
-	0xee, 0xb0, 0x04, 0xed, 0x40, 0x4d, 0xa2, 0x88, 0x55, 0xce, 0x75, 0x16, 0xb5, 0x40, 0x9a, 0xce,
-	0x58, 0xee, 0xb6, 0x17, 0x1c, 0xe8, 0x74, 0xaa, 0x91, 0x9d, 0x03, 0x9b, 0xc3, 0xdc, 0x87, 0xd1,
-	0xc1, 0x19, 0x30, 0x7d, 0x08, 0xd4, 0x3f, 0xc4, 0x05, 0x42, 0xd9, 0xaf, 0xc1, 0xdc, 0x3d, 0xda,
-	0xa1, 0x06, 0xbb, 0xda, 0x4f, 0x11, 0xcc, 0xa7, 0xf7, 0xfd, 0x11, 0x89, 0x03, 0xb2, 0xdf, 0xa1,
-	0x63, 0xc5, 0xb5, 0x08, 0xb5, 0xc3, 0xa0, 0xc3, 0x69, 0xac, 0x6e, 0x40, 0xfd, 0x2b, 0x8a, 0x6e,
-	0x72, 0xa4, 0xe8, 0x2e, 0x0d, 0x8a, 0xee, 0x6b, 0x04, 0x0b, 0x03, 0x10, 0x4a, 0x76, 0xef, 0x40,
-	0xfd, 0x58, 0x0f, 0x2a, 0xe1, 0xdd, 0x30, 0xc9, 0x8b, 0x5e, 0xc9, 0xeb, 0x87, 0x1b, 0xab, 0x8e,
-	0xc2, 0xfc, 0x23, 0xc2, 0xdb, 0x47, 0xd9, 0x1a, 0x23, 0x2e, 0x6d, 0x13, 0x80, 0xd1, 0x13, 0x1a,
-	0xef, 0xf1, 0x23, 0x22, 0x0f, 0x36, 0xdd, 0xb4, 0x34, 0xa0, 0x7e, 0x9d, 0x9d, 0x5d, 0xfd, 0x3a,
-	0x7b, 0x75, 0x31, 0x7b, 0xf7, 0x88, 0x30, 0x7b, 0x15, 0xf0, 0x7d, 0xca, 0x0d, 0x36, 0xb1, 0xbf,
-	0x47, 0xb0, 0x20, 0xe5, 0x3d, 0x38, 0x7b, 0xd8, 0x25, 0xbd, 0x0d, 0x53, 0xfa, 0xdc, 0x4a, 0x4d,
-	0xd5, 0xb2, 0x96, 0x45, 0x8f, 0xd3, 0x77, 0x0f, 0x16, 0xa4, 0xbe, 0x4d, 0x92, 0x75, 0x61, 0x54,
-	0xf6, 0x0e, 0x2c, 0x48, 0x81, 0x9b, 0x6c, 0x7b, 0x0d, 0xea, 0x31, 0x6d, 0xf7, 0xe2, 0x24, 0x38,
-	0x96, 0xfb, 0x4e, 0x79, 0xfd, 0x01, 0x5d, 0x5a, 0x1f, 0x91, 0x80, 0xd3, 0xf8, 0x7f, 0x2d, 0xad,
-	0x5f, 0xaa, 0xd2, 0x9a, 0x6d, 0xa5, 0x34, 0x7e, 0x0f, 0x2e, 0x9f, 0xc8, 0x21, 0xa5, 0xf0, 0x86,
-	0x49, 0x56, 0xe4, 0x2a, 0x9e, 0x0e, 0xad, 0x58, 0x53, 0x55, 0xf4, 0x08, 0xd1, 0x7d, 0x9b, 0xd5,
-	0xd4, 0xe2, 0xdc, 0x61, 0x99, 0xd9, 0x82, 0x9a, 0x44, 0x51, 0x57, 0x5b, 0xe5, 0x10, 0x2a, 0x72,
-	0x9c, 0xd8, 0xb2, 0xb2, 0x36, 0x96, 0xbe, 0xf9, 0xf7, 0x3c, 0xcc, 0x17, 0x6a, 0xe3, 0xfb, 0x84,
-	0x11, 0x9f, 0xc6, 0xf8, 0x17, 0x04, 0xd3, 0x39, 0x7f, 0xc3, 0xeb, 0x26, 0x98, 0x67, 0xbd, 0xd7,
-	0xba, 0x53, 0x39, 0x4e, 0xde, 0xb6, 0x7d, 0xe3, 0xe9, 0x5f, 0xff, 0x7c, 0x37, 0xb1, 0x82, 0x5f,
-	0xcd, 0xfa, 0x89, 0x27, 0x32, 0x83, 0x77, 0xa3, 0x38, 0xfc, 0x84, 0xb6, 0x79, 0xe2, 0x36, 0x4e,
-	0x5d, 0xed, 0x94, 0x3f, 0x22, 0xa8, 0x67, 0x16, 0x88, 0x6f, 0x9b, 0x6c, 0x3a, 0xe8, 0x98, 0x56,
-	0x75, 0x23, 0x29, 0x83, 0x4c, 0xd3, 0x9a, 0x43, 0xd4, 0x84, 0x6e, 0xe3, 0x14, 0xff, 0x86, 0xe0,
-	0x4a, 0xde, 0x7e, 0xb1, 0x51, 0x72, 0x4a, 0x0c, 0xfb, 0x3c, 0xa8, 0xb7, 0x05, 0xaa, 0x63, 0x1b,
-	0xe5, 0xb3, 0xa5, 0x6d, 0x3b, 0x45, 0xce, 0x1b, 0xb3, 0x19, 0x72, 0x89, 0x95, 0xff, 0x07, 0x64,
-	0xcb, 0x28, 0xbb, 0x19, 0xf2, 0x37, 0x08, 0xae, 0xe4, 0x5d, 0xdd, 0x0c, 0xb9, 0xa4, 0x0f, 0xb0,
-	0x16, 0xcf, 0x18, 0xd4, 0x5b, 0x69, 0x33, 0xaa, 0x6f, 0xbd, 0x61, 0x76, 0xeb, 0xcf, 0x11, 0xcc,
-	0x14, 0x4c, 0x1b, 0x6f, 0x98, 0xbe, 0x13, 0x83, 0xcd, 0x86, 0xb5, 0x79, 0x8e, 0x48, 0xf5, 0x3e,
-	0x6d, 0x08, 0xe8, 0x26, 0xbe, 0x39, 0xe2, 0xfe, 0x73, 0xd8, 0x6e, 0xbf, 0x1f, 0xf8, 0x15, 0xc1,
-	0x74, 0xce, 0x81, 0xcd, 0x4a, 0xc1, 0x59, 0xcb, 0xb6, 0x2a, 0x99, 0x98, 0xbd, 0x29, 0x78, 0x6f,
-	0xe1, 0x35, 0x83, 0x24, 0xf7, 0x61, 0xdd, 0x46, 0xe3, 0x14, 0xff, 0x81, 0x60, 0xa6, 0xd0, 0x99,
-	0x98, 0x65, 0xbc, 0xac, 0x99, 0xa9, 0x08, 0xbd, 0x25, 0xa0, 0xdf, 0xb0, 0xef, 0x54, 0x86, 0x6e,
-	0x9d, 0xa4, 0xbb, 0xb7, 0x50, 0x03, 0xff, 0x89, 0x60, 0xb6, 0xd8, 0xc5, 0xe0, 0x4d, 0xf3, 0x3a,
-	0x71, 0x31, 0xfc, 0x95, 0x45, 0xd2, 0xea, 0x77, 0x42, 0xcf, 0x11, 0xcc, 0x16, 0x7b, 0x1d, 0x33,
-	0xfe, 0xd2, 0xfe, 0xa8, 0x22, 0xff, 0xb6, 0xe0, 0xbf, 0x6b, 0x55, 0x17, 0x4d, 0xee, 0x00, 0x3f,
-	0x20, 0x98, 0x2d, 0x76, 0x4d, 0x66, 0x07, 0x28, 0xed, 0xb4, 0x86, 0x16, 0x11, 0xa5, 0xef, 0xc6,
-	0x39, 0xf4, 0xfd, 0xbb, 0xf2, 0x66, 0xd5, 0x20, 0x99, 0x7b, 0x73, 0xb1, 0x79, 0x33, 0xf7, 0xe6,
-	0x81, 0x4e, 0xcc, 0x5e, 0x17, 0xec, 0x37, 0xb1, 0x63, 0x28, 0x13, 0xdd, 0x7b, 0xfd, 0x24, 0x5d,
-	0x5a, 0x2e, 0x67, 0xec, 0xd2, 0x85, 0x2e, 0xc6, 0xaa, 0xd0, 0x2f, 0x95, 0x71, 0x0e, 0xcf, 0xb1,
-	0x82, 0x4c, 0x4b, 0xf6, 0xcf, 0x99, 0x51, 0x2b, 0xd4, 0x0a, 0x46, 0x5d, 0xa4, 0xbd, 0xae, 0x03,
-	0x73, 0x1f, 0x3d, 0x9c, 0x07, 0xfa, 0xa3, 0x87, 0xfd, 0xa6, 0x00, 0xdc, 0xb0, 0x2b, 0x26, 0xb2,
-	0xa5, 0x1b, 0xc1, 0x67, 0x99, 0xd7, 0x55, 0x01, 0x2d, 0x69, 0x0e, 0x87, 0xca, 0x54, 0xa5, 0xb0,
-	0x51, 0x31, 0x85, 0x5b, 0x4f, 0x60, 0xa5, 0x1d, 0x76, 0x0d, 0x68, 0x1e, 0xa2, 0x8f, 0x1f, 0xa8,
-	0x59, 0x7e, 0xd8, 0x21, 0xcc, 0x77, 0xc2, 0xd8, 0x77, 0x7d, 0xca, 0x04, 0x88, 0x2b, 0x1f, 0x91,
-	0x28, 0x48, 0x46, 0x7d, 0x6b, 0x7a, 0xbd, 0x30, 0xba, 0x5f, 0x13, 0xb1, 0xb7, 0xfe, 0x0d, 0x00,
-	0x00, 0xff, 0xff, 0xa4, 0xfc, 0xe7, 0x5c, 0x20, 0x13, 0x00, 0x00,
+	// 1144 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x98, 0x5b, 0x6f, 0xdc, 0x44,
+	0x14, 0xc7, 0x35, 0x69, 0x9b, 0x66, 0x4f, 0x2e, 0xa0, 0xc9, 0x45, 0x91, 0xdb, 0x8a, 0xc8, 0x45,
+	0x51, 0x58, 0x55, 0x76, 0x93, 0x56, 0x69, 0x12, 0x28, 0x0f, 0x49, 0x51, 0x08, 0x17, 0xb5, 0x32,
+	0x21, 0x95, 0x78, 0x59, 0x4d, 0x36, 0x13, 0xc7, 0xb0, 0x3b, 0x36, 0xf6, 0x38, 0x81, 0xa2, 0xbc,
+	0xc0, 0x1b, 0x08, 0x09, 0x89, 0x87, 0xf2, 0x84, 0x10, 0x12, 0x20, 0x21, 0x84, 0x78, 0xe2, 0x05,
+	0xd1, 0x2f, 0x81, 0xc4, 0x27, 0xe0, 0x83, 0x20, 0xcf, 0xc5, 0x6b, 0x6f, 0xf6, 0x32, 0x0e, 0xe1,
+	0x2d, 0x39, 0x9e, 0x73, 0xce, 0x6f, 0xce, 0x9c, 0x99, 0xff, 0xd1, 0xc2, 0xaa, 0x1f, 0x86, 0x7e,
+	0x8b, 0xba, 0xcd, 0x56, 0x98, 0x1e, 0xb8, 0x71, 0xca, 0x78, 0xd0, 0xa6, 0xcd, 0x90, 0x1d, 0x06,
+	0xbe, 0x7b, 0xbc, 0xbc, 0x4f, 0x39, 0x59, 0x2e, 0x5b, 0x9d, 0x28, 0x0e, 0x79, 0x88, 0x6d, 0xe9,
+	0xe7, 0x08, 0x3f, 0xa7, 0xbc, 0x42, 0xf9, 0x59, 0xd7, 0x55, 0x6c, 0x12, 0x05, 0x2e, 0x61, 0x2c,
+	0xe4, 0x84, 0x07, 0x21, 0x4b, 0x64, 0x04, 0x6b, 0xc5, 0x24, 0x33, 0x4d, 0xc2, 0x34, 0x6e, 0x52,
+	0xed, 0x73, 0x53, 0xf9, 0xb4, 0x42, 0xe6, 0xc7, 0x29, 0x63, 0x01, 0xf3, 0xdd, 0x30, 0xa2, 0x71,
+	0x29, 0xf0, 0x35, 0xb5, 0x48, 0xfc, 0xb7, 0x9f, 0x1e, 0xba, 0xb4, 0x1d, 0xf1, 0x8f, 0xd5, 0xc7,
+	0x17, 0xba, 0x3f, 0x66, 0x59, 0x13, 0x4e, 0xda, 0x91, 0x5c, 0x60, 0x1f, 0x01, 0x7e, 0x2b, 0x48,
+	0xf8, 0x96, 0x00, 0x49, 0x3c, 0xfa, 0x61, 0x4a, 0x13, 0x8e, 0xe7, 0x60, 0x34, 0x22, 0x31, 0x65,
+	0x7c, 0x1e, 0x2d, 0xa0, 0xa5, 0x9a, 0xa7, 0xfe, 0xc3, 0xd7, 0xa0, 0x16, 0x11, 0x9f, 0x36, 0x92,
+	0xe0, 0x09, 0x9d, 0x1f, 0x59, 0x40, 0x4b, 0x57, 0xbc, 0xb1, 0xcc, 0xf0, 0x4e, 0xf0, 0x84, 0xe2,
+	0x1b, 0x00, 0xe2, 0x23, 0x0f, 0x3f, 0xa0, 0x6c, 0xfe, 0x92, 0x70, 0x14, 0xcb, 0x77, 0x33, 0x83,
+	0xfd, 0x39, 0x82, 0xe9, 0x52, 0xaa, 0x24, 0x0a, 0x59, 0x42, 0xf1, 0x9b, 0x70, 0x55, 0x96, 0x21,
+	0x99, 0x47, 0x0b, 0x97, 0x96, 0xc6, 0x57, 0x96, 0x9d, 0xe1, 0xc5, 0x76, 0x3c, 0x69, 0x95, 0xc1,
+	0x3c, 0x1d, 0x01, 0x2f, 0xc2, 0x73, 0x8c, 0x7e, 0xc4, 0x1b, 0x05, 0x90, 0x11, 0x01, 0x32, 0x99,
+	0x99, 0x1f, 0xe5, 0x30, 0x8b, 0xf0, 0xfc, 0x36, 0x55, 0x28, 0x7a, 0xd3, 0x18, 0x2e, 0x33, 0xd2,
+	0xa6, 0xca, 0x41, 0xfc, 0x6d, 0x3f, 0x45, 0x30, 0xbd, 0x15, 0x53, 0xc2, 0x69, 0x79, 0x6d, 0xbf,
+	0x02, 0xed, 0xc0, 0xa8, 0x44, 0x11, 0x51, 0xce, 0xb5, 0x17, 0x15, 0x20, 0x2b, 0x67, 0x2c, 0xb3,
+	0x35, 0x82, 0x03, 0x5d, 0x4e, 0x65, 0xd9, 0x39, 0xb0, 0x39, 0x4c, 0xbf, 0x1b, 0x1d, 0x9c, 0x01,
+	0xd3, 0x9b, 0x40, 0x9d, 0x4d, 0x5c, 0x20, 0x94, 0xfd, 0x12, 0x4c, 0x3f, 0xa0, 0x2d, 0x6a, 0x90,
+	0xd5, 0xfe, 0x09, 0xc1, 0x4c, 0x76, 0xde, 0x7b, 0x24, 0x0e, 0xc8, 0x7e, 0x8b, 0x0e, 0x6d, 0xae,
+	0x39, 0x18, 0x3d, 0x0c, 0x5a, 0x9c, 0xc6, 0xea, 0x04, 0xd4, 0x7f, 0xe5, 0xa6, 0xbb, 0x34, 0xb0,
+	0xe9, 0x2e, 0x77, 0x35, 0x1d, 0xbe, 0x09, 0x93, 0x31, 0xe5, 0x69, 0xcc, 0x1a, 0xc7, 0xa4, 0x95,
+	0xd2, 0x64, 0xfe, 0xca, 0x02, 0x5a, 0x1a, 0xf3, 0x26, 0xa4, 0x71, 0x4f, 0xd8, 0xec, 0x2f, 0x10,
+	0xcc, 0x76, 0x91, 0xaa, 0xde, 0x7c, 0x03, 0x6a, 0xc7, 0xda, 0xa8, 0xba, 0xf3, 0x96, 0x49, 0xf1,
+	0x74, 0x24, 0xaf, 0xe3, 0x6e, 0xdc, 0x9a, 0x14, 0x66, 0x1e, 0x13, 0xde, 0x3c, 0xca, 0x63, 0x0c,
+	0x38, 0xd9, 0x75, 0x00, 0x46, 0x4f, 0x68, 0xdc, 0xe0, 0x47, 0x44, 0xee, 0x7e, 0x7c, 0xc5, 0xd2,
+	0x80, 0xfa, 0xce, 0x3b, 0xbb, 0xfa, 0xce, 0x7b, 0x35, 0xb1, 0x7a, 0xf7, 0x88, 0x30, 0x7b, 0x09,
+	0xf0, 0x36, 0xe5, 0x06, 0x49, 0xec, 0x6f, 0x10, 0xcc, 0xca, 0x3b, 0xd0, 0xbd, 0xba, 0xdf, 0x49,
+	0xbe, 0x0e, 0x63, 0x7a, 0xdf, 0xaa, 0xe5, 0xaa, 0x55, 0x2d, 0xf7, 0x1e, 0x76, 0x09, 0x52, 0x98,
+	0x95, 0x97, 0xc0, 0xa4, 0x58, 0x17, 0x46, 0x65, 0xef, 0xc0, 0xac, 0xbc, 0x05, 0x26, 0x69, 0xaf,
+	0x43, 0x2d, 0xa6, 0xcd, 0x34, 0x4e, 0x82, 0x63, 0x99, 0x77, 0xcc, 0xeb, 0x18, 0xf4, 0xfb, 0xfb,
+	0x98, 0x04, 0x9c, 0xc6, 0xff, 0xeb, 0xfb, 0xfb, 0x99, 0x7a, 0x7f, 0xf3, 0x54, 0xaa, 0xc7, 0x1f,
+	0xc0, 0xd5, 0x13, 0x69, 0x52, 0x1d, 0x5e, 0x37, 0xa9, 0x8a, 0x8c, 0xe2, 0x69, 0xd7, 0x8a, 0x0f,
+	0xaf, 0xf2, 0x1e, 0xd0, 0x74, 0x5f, 0xe5, 0x0f, 0x6f, 0x79, 0x6d, 0xbf, 0xca, 0x6c, 0xc2, 0xa8,
+	0x44, 0x51, 0x47, 0x5b, 0x65, 0x13, 0xca, 0x73, 0x58, 0xb3, 0xe5, 0x6f, 0xdf, 0x50, 0xfa, 0x95,
+	0xbf, 0x67, 0x60, 0xa6, 0xf4, 0x80, 0xbe, 0x4d, 0x18, 0xf1, 0x69, 0x8c, 0x7f, 0x41, 0x30, 0x5e,
+	0x10, 0x41, 0xbc, 0x6a, 0x82, 0x79, 0x56, 0xa0, 0xad, 0x7b, 0x95, 0xfd, 0xe4, 0x69, 0xdb, 0xb7,
+	0x3e, 0xfd, 0xeb, 0x9f, 0xaf, 0x47, 0x16, 0xf1, 0x8b, 0xf9, 0xd0, 0xf1, 0x89, 0xac, 0xe0, 0xfd,
+	0x28, 0x0e, 0xdf, 0xa7, 0x4d, 0x9e, 0xb8, 0xf5, 0x53, 0x57, 0xcb, 0xe9, 0xf7, 0x08, 0x6a, 0xb9,
+	0x4e, 0xe2, 0xbb, 0x26, 0x49, 0xbb, 0x65, 0xd5, 0xaa, 0xae, 0x36, 0xbd, 0x20, 0xb3, 0xb2, 0x16,
+	0x10, 0x35, 0xa1, 0x5b, 0x3f, 0xc5, 0xbf, 0x21, 0x98, 0x28, 0x6a, 0x34, 0x36, 0x2a, 0x4e, 0x0f,
+	0x55, 0x3f, 0x0f, 0xea, 0x5d, 0x81, 0xea, 0xd8, 0x46, 0xf5, 0xdc, 0xd0, 0xda, 0x9e, 0x21, 0x17,
+	0xd5, 0xdb, 0x0c, 0xb9, 0x87, 0xde, 0xff, 0x07, 0x64, 0xcb, 0xa8, 0xba, 0x39, 0xf2, 0x97, 0x08,
+	0x26, 0x8a, 0xd2, 0x6f, 0x86, 0xdc, 0x63, 0x58, 0xb0, 0xe6, 0xce, 0x08, 0xd4, 0x6b, 0xd9, 0xc4,
+	0xaa, 0x4f, 0xbd, 0x6e, 0x76, 0xea, 0xcf, 0x10, 0x4c, 0x96, 0x44, 0x1b, 0xaf, 0x99, 0xde, 0x89,
+	0xee, 0x89, 0xc4, 0x5a, 0x3f, 0x87, 0xa7, 0xba, 0x4f, 0x6b, 0x02, 0x7a, 0x05, 0xdf, 0x1e, 0x70,
+	0xfe, 0x05, 0x6c, 0xb7, 0x33, 0x0f, 0xfc, 0x8a, 0x60, 0xbc, 0xa0, 0xc0, 0x66, 0x4f, 0xc1, 0x59,
+	0xc9, 0xb6, 0x2a, 0x89, 0x98, 0xbd, 0x2e, 0x78, 0xef, 0xe0, 0x65, 0x83, 0x22, 0x77, 0x60, 0xdd,
+	0x7a, 0xfd, 0x14, 0xff, 0x81, 0x60, 0xb2, 0x34, 0x99, 0x98, 0x55, 0xbc, 0xd7, 0x30, 0x53, 0x11,
+	0x7a, 0x53, 0x40, 0xbf, 0x62, 0xdf, 0xab, 0x0c, 0xbd, 0x71, 0x92, 0x65, 0xdf, 0x40, 0x75, 0xfc,
+	0x27, 0x82, 0xa9, 0xf2, 0x14, 0x83, 0xd7, 0xcd, 0xdf, 0x89, 0x8b, 0xe1, 0xaf, 0xdc, 0x24, 0x1b,
+	0x9d, 0x49, 0xe8, 0x19, 0x82, 0xa9, 0xf2, 0xac, 0x63, 0xc6, 0xdf, 0x73, 0x3e, 0xaa, 0xc8, 0xbf,
+	0x25, 0xf8, 0xef, 0x5b, 0xd5, 0x9b, 0xa6, 0xb0, 0x81, 0x6f, 0x11, 0x4c, 0x95, 0xa7, 0x26, 0xb3,
+	0x0d, 0xf4, 0x9c, 0xb4, 0xfa, 0x3e, 0x22, 0xaa, 0xbf, 0xeb, 0xe7, 0xe8, 0xef, 0xdf, 0x95, 0x36,
+	0xab, 0x01, 0xc9, 0x5c, 0x9b, 0xcb, 0xc3, 0x9b, 0xb9, 0x36, 0x77, 0x4d, 0x62, 0xf6, 0xaa, 0x60,
+	0xbf, 0x8d, 0x1d, 0xc3, 0x36, 0xd1, 0xb3, 0xd7, 0x0f, 0x52, 0xa5, 0x65, 0x38, 0x63, 0x95, 0x2e,
+	0x4d, 0x31, 0x56, 0x85, 0x79, 0xa9, 0x17, 0x67, 0xff, 0x1a, 0x2b, 0xc8, 0xec, 0xc9, 0xfe, 0x31,
+	0x17, 0x6a, 0x85, 0x5a, 0x41, 0xa8, 0xcb, 0xb4, 0x37, 0xb4, 0x63, 0xe1, 0x97, 0x11, 0xe7, 0xa1,
+	0xfe, 0x65, 0xc4, 0x7e, 0x55, 0x00, 0xae, 0xd9, 0x15, 0x0b, 0xb9, 0xa1, 0x07, 0xc1, 0xa7, 0xb9,
+	0xd6, 0x55, 0x01, 0xed, 0x31, 0x1c, 0xf6, 0x6d, 0x53, 0x55, 0xc2, 0x7a, 0xc5, 0x12, 0x6e, 0x7e,
+	0x87, 0x60, 0xb1, 0x19, 0xb6, 0x0d, 0x70, 0x1e, 0xa1, 0xf7, 0x1e, 0xaa, 0x55, 0x7e, 0xd8, 0x22,
+	0xcc, 0x77, 0xc2, 0xd8, 0x77, 0x7d, 0xca, 0x04, 0x89, 0x2b, 0x3f, 0x91, 0x28, 0x48, 0x06, 0xfd,
+	0x22, 0xf5, 0x72, 0xc9, 0xfa, 0xf3, 0x88, 0xbd, 0x2d, 0x23, 0x6e, 0x89, 0xbc, 0xa5, 0xb1, 0xc2,
+	0xd9, 0x5b, 0xde, 0xcc, 0x5c, 0xf6, 0x47, 0x45, 0x82, 0x3b, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff,
+	0xdb, 0xa7, 0xdc, 0xe8, 0x6b, 0x13, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/vision/v1/geometry.pb.go b/googleapis/cloud/vision/v1/geometry.pb.go
index 455cd456..c7387bfb 100644
--- a/googleapis/cloud/vision/v1/geometry.pb.go
+++ b/googleapis/cloud/vision/v1/geometry.pb.go
@@ -154,7 +154,7 @@ func init() { proto.RegisterFile("google/cloud/vision/v1/geometry.proto", fileDe
 
 var fileDescriptor0 = []byte{
 	// 237 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x74, 0x90, 0x31, 0x4b, 0x03, 0x31,
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x90, 0x31, 0x4b, 0x03, 0x31,
 	0x14, 0x80, 0x79, 0x57, 0x2c, 0x25, 0xd6, 0xe5, 0x06, 0x39, 0x1c, 0xa4, 0x1c, 0x0a, 0x9d, 0x12,
 	0xaa, 0x4e, 0xea, 0x74, 0x8b, 0xe0, 0x74, 0xdc, 0xe0, 0xe0, 0x56, 0xaf, 0x8f, 0x47, 0xe0, 0x9a,
 	0x57, 0x92, 0x34, 0x34, 0xfd, 0xe5, 0x8e, 0xd2, 0xa4, 0x28, 0x8a, 0xdd, 0xf2, 0x91, 0x8f, 0xf7,
diff --git a/googleapis/cloud/vision/v1/image_annotator.pb.go b/googleapis/cloud/vision/v1/image_annotator.pb.go
index 9b028bba..a398c383 100644
--- a/googleapis/cloud/vision/v1/image_annotator.pb.go
+++ b/googleapis/cloud/vision/v1/image_annotator.pb.go
@@ -1293,7 +1293,7 @@ func init() { proto.RegisterFile("google/cloud/vision/v1/image_annotator.proto",
 
 var fileDescriptor1 = []byte{
 	// 2281 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x59, 0x4b, 0x73, 0x23, 0x49,
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x59, 0x4b, 0x73, 0x23, 0x49,
 	0xf1, 0x5f, 0xc9, 0x2f, 0x29, 0xf5, 0x6a, 0x97, 0x1f, 0xa3, 0xb1, 0xe7, 0xe1, 0xed, 0xfd, 0xcf,
 	0x1f, 0xc7, 0x30, 0xd8, 0x8c, 0x67, 0x21, 0x96, 0x9d, 0x09, 0x40, 0x92, 0xdb, 0xb6, 0x62, 0x64,
 	0x49, 0x5b, 0x92, 0xd7, 0x6b, 0x20, 0xe8, 0x68, 0xb7, 0x4a, 0x9a, 0x9e, 0x6d, 0x75, 0x35, 0xdd,
diff --git a/googleapis/cloud/vision/v1/text_annotation.pb.go b/googleapis/cloud/vision/v1/text_annotation.pb.go
index dc342d82..7262706d 100644
--- a/googleapis/cloud/vision/v1/text_annotation.pb.go
+++ b/googleapis/cloud/vision/v1/text_annotation.pb.go
@@ -488,7 +488,7 @@ func init() { proto.RegisterFile("google/cloud/vision/v1/text_annotation.proto",
 
 var fileDescriptor2 = []byte{
 	// 744 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x55, 0x4f, 0x6f, 0xd3, 0x4e,
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x55, 0x4f, 0x6f, 0xd3, 0x4e,
 	0x10, 0xfd, 0xb9, 0xb1, 0xd3, 0x78, 0xd2, 0x46, 0xfe, 0x2d, 0xa8, 0x8a, 0x42, 0xa9, 0x8a, 0x01,
 	0xd1, 0x03, 0x72, 0xd4, 0x14, 0x04, 0x12, 0x08, 0x29, 0x4e, 0x0d, 0xad, 0x1a, 0x25, 0xd6, 0x36,
 	0x51, 0xf9, 0x73, 0xb0, 0xfc, 0x67, 0xeb, 0x58, 0x4d, 0xbd, 0x96, 0xed, 0xb6, 0xc9, 0x8d, 0x4f,
diff --git a/googleapis/cloud/vision/v1/web_detection.pb.go b/googleapis/cloud/vision/v1/web_detection.pb.go
index d43b23dc..1ee738ca 100644
--- a/googleapis/cloud/vision/v1/web_detection.pb.go
+++ b/googleapis/cloud/vision/v1/web_detection.pb.go
@@ -167,7 +167,7 @@ func init() { proto.RegisterFile("google/cloud/vision/v1/web_detection.proto", f
 
 var fileDescriptor3 = []byte{
 	// 383 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x93, 0x41, 0x4f, 0xea, 0x40,
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0x41, 0x4f, 0xea, 0x40,
 	0x14, 0x85, 0x53, 0xca, 0x7b, 0x0f, 0x06, 0x16, 0xcf, 0x09, 0x4a, 0x53, 0x5d, 0x34, 0xae, 0x88,
 	0xd1, 0x69, 0xc0, 0xa5, 0xae, 0x88, 0x2e, 0x58, 0x98, 0x60, 0x37, 0x24, 0x6e, 0xea, 0xd0, 0x8e,
 	0xc3, 0x4d, 0xca, 0x4c, 0xd3, 0x19, 0x20, 0xfc, 0x58, 0xff, 0x87, 0x4b, 0x33, 0xd3, 0x62, 0x10,
diff --git a/googleapis/container/v1/cluster_service.pb.go b/googleapis/container/v1/cluster_service.pb.go
index 2089bcdf..7b63f6aa 100644
--- a/googleapis/container/v1/cluster_service.pb.go
+++ b/googleapis/container/v1/cluster_service.pb.go
@@ -25,9 +25,21 @@ It has these top-level messages:
 	ListClustersResponse
 	GetOperationRequest
 	ListOperationsRequest
+	CancelOperationRequest
 	ListOperationsResponse
 	GetServerConfigRequest
 	ServerConfig
+	CreateNodePoolRequest
+	DeleteNodePoolRequest
+	ListNodePoolsRequest
+	GetNodePoolRequest
+	NodePool
+	NodeManagement
+	AutoUpgradeOptions
+	SetNodePoolManagementRequest
+	RollbackNodePoolUpgradeRequest
+	ListNodePoolsResponse
+	NodePoolAutoscaling
 */
 package container
 
@@ -35,6 +47,7 @@ import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
 import _ "google.golang.org/genproto/googleapis/api/annotations"
+import google_protobuf1 "github.com/golang/protobuf/ptypes/empty"
 
 import (
 	context "golang.org/x/net/context"
@@ -60,7 +73,8 @@ const (
 	Cluster_STATUS_UNSPECIFIED Cluster_Status = 0
 	// The PROVISIONING state indicates the cluster is being created.
 	Cluster_PROVISIONING Cluster_Status = 1
-	// The RUNNING state indicates the cluster has been created and is fully usable.
+	// The RUNNING state indicates the cluster has been created and is fully
+	// usable.
 	Cluster_RUNNING Cluster_Status = 2
 	// The RECONCILING state indicates that some work is actively being done on
 	// the cluster, such as upgrading the master or node software. Details can
@@ -107,6 +121,8 @@ const (
 	Operation_RUNNING Operation_Status = 2
 	// The operation is done, either cancelled or completed.
 	Operation_DONE Operation_Status = 3
+	// The operation is aborting.
+	Operation_ABORTING Operation_Status = 4
 )
 
 var Operation_Status_name = map[int32]string{
@@ -114,12 +130,14 @@ var Operation_Status_name = map[int32]string{
 	1: "PENDING",
 	2: "RUNNING",
 	3: "DONE",
+	4: "ABORTING",
 }
 var Operation_Status_value = map[string]int32{
 	"STATUS_UNSPECIFIED": 0,
 	"PENDING":            1,
 	"RUNNING":            2,
 	"DONE":               3,
+	"ABORTING":           4,
 }
 
 func (x Operation_Status) String() string {
@@ -149,6 +167,8 @@ const (
 	Operation_CREATE_NODE_POOL Operation_Type = 7
 	// Node pool delete.
 	Operation_DELETE_NODE_POOL Operation_Type = 8
+	// Set node pool management.
+	Operation_SET_NODE_POOL_MANAGEMENT Operation_Type = 9
 )
 
 var Operation_Type_name = map[int32]string{
@@ -161,17 +181,19 @@ var Operation_Type_name = map[int32]string{
 	6: "UPDATE_CLUSTER",
 	7: "CREATE_NODE_POOL",
 	8: "DELETE_NODE_POOL",
+	9: "SET_NODE_POOL_MANAGEMENT",
 }
 var Operation_Type_value = map[string]int32{
-	"TYPE_UNSPECIFIED": 0,
-	"CREATE_CLUSTER":   1,
-	"DELETE_CLUSTER":   2,
-	"UPGRADE_MASTER":   3,
-	"UPGRADE_NODES":    4,
-	"REPAIR_CLUSTER":   5,
-	"UPDATE_CLUSTER":   6,
-	"CREATE_NODE_POOL": 7,
-	"DELETE_NODE_POOL": 8,
+	"TYPE_UNSPECIFIED":         0,
+	"CREATE_CLUSTER":           1,
+	"DELETE_CLUSTER":           2,
+	"UPGRADE_MASTER":           3,
+	"UPGRADE_NODES":            4,
+	"REPAIR_CLUSTER":           5,
+	"UPDATE_CLUSTER":           6,
+	"CREATE_NODE_POOL":         7,
+	"DELETE_NODE_POOL":         8,
+	"SET_NODE_POOL_MANAGEMENT": 9,
 }
 
 func (x Operation_Type) String() string {
@@ -179,9 +201,61 @@ func (x Operation_Type) String() string {
 }
 func (Operation_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{7, 1} }
 
+// The current status of the node pool instance.
+type NodePool_Status int32
+
+const (
+	// Not set.
+	NodePool_STATUS_UNSPECIFIED NodePool_Status = 0
+	// The PROVISIONING state indicates the node pool is being created.
+	NodePool_PROVISIONING NodePool_Status = 1
+	// The RUNNING state indicates the node pool has been created
+	// and is fully usable.
+	NodePool_RUNNING NodePool_Status = 2
+	// The RUNNING_WITH_ERROR state indicates the node pool has been created
+	// and is partially usable. Some error state has occurred and some
+	// functionality may be impaired. Customer may need to reissue a request
+	// or trigger a new update.
+	NodePool_RUNNING_WITH_ERROR NodePool_Status = 3
+	// The RECONCILING state indicates that some work is actively being done on
+	// the node pool, such as upgrading node software. Details can
+	// be found in the `statusMessage` field.
+	NodePool_RECONCILING NodePool_Status = 4
+	// The STOPPING state indicates the node pool is being deleted.
+	NodePool_STOPPING NodePool_Status = 5
+	// The ERROR state indicates the node pool may be unusable. Details
+	// can be found in the `statusMessage` field.
+	NodePool_ERROR NodePool_Status = 6
+)
+
+var NodePool_Status_name = map[int32]string{
+	0: "STATUS_UNSPECIFIED",
+	1: "PROVISIONING",
+	2: "RUNNING",
+	3: "RUNNING_WITH_ERROR",
+	4: "RECONCILING",
+	5: "STOPPING",
+	6: "ERROR",
+}
+var NodePool_Status_value = map[string]int32{
+	"STATUS_UNSPECIFIED": 0,
+	"PROVISIONING":       1,
+	"RUNNING":            2,
+	"RUNNING_WITH_ERROR": 3,
+	"RECONCILING":        4,
+	"STOPPING":           5,
+	"ERROR":              6,
+}
+
+func (x NodePool_Status) String() string {
+	return proto.EnumName(NodePool_Status_name, int32(x))
+}
+func (NodePool_Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{24, 0} }
+
 // Parameters that describe the nodes in a cluster.
 type NodeConfig struct {
-	// The name of a Google Compute Engine [machine type](/compute/docs/machine-types) (e.g.
+	// The name of a Google Compute Engine [machine
+	// type](/compute/docs/machine-types) (e.g.
 	// `n1-standard-1`).
 	//
 	// If unspecified, the default machine type is
@@ -207,6 +281,9 @@ type NodeConfig struct {
 	// If unspecified, no scopes are added, unless Cloud Logging or Cloud
 	// Monitoring are enabled, in which case their required scopes will be added.
 	OauthScopes []string `protobuf:"bytes,3,rep,name=oauth_scopes,json=oauthScopes" json:"oauth_scopes,omitempty"`
+	// The Google Cloud Platform Service Account to be used by the node VMs. If
+	// no Service Account is specified, the "default" service account is used.
+	ServiceAccount string `protobuf:"bytes,9,opt,name=service_account,json=serviceAccount" json:"service_account,omitempty"`
 	// The metadata key/value pairs assigned to instances in the cluster.
 	//
 	// Keys must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 bytes
@@ -221,6 +298,34 @@ type NodeConfig struct {
 	//
 	// The total size of all keys and values must be less than 512 KB.
 	Metadata map[string]string `protobuf:"bytes,4,rep,name=metadata" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	// The image type to use for this node. Note that for a given image type,
+	// the latest version of it will be used.
+	ImageType string `protobuf:"bytes,5,opt,name=image_type,json=imageType" json:"image_type,omitempty"`
+	// The map of Kubernetes labels (key/value pairs) to be applied to each node.
+	// These will added in addition to any default label(s) that
+	// Kubernetes may apply to the node.
+	// In case of conflict in label keys, the applied set may differ depending on
+	// the Kubernetes version -- it's best to assume the behavior is undefined
+	// and conflicts should be avoided.
+	// For more information, including usage and the valid values, see:
+	// http://kubernetes.io/v1.1/docs/user-guide/labels.html
+	Labels map[string]string `protobuf:"bytes,6,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	// The number of local SSD disks to be attached to the node.
+	//
+	// The limit for this value is dependant upon the maximum number of
+	// disks available on a machine per zone. See:
+	// https://cloud.google.com/compute/docs/disks/local-ssd#local_ssd_limits
+	// for more information.
+	LocalSsdCount int32 `protobuf:"varint,7,opt,name=local_ssd_count,json=localSsdCount" json:"local_ssd_count,omitempty"`
+	// The list of instance tags applied to all nodes. Tags are used to identify
+	// valid sources or targets for network firewalls and are specified by
+	// the client during cluster or node pool creation. Each tag within the list
+	// must comply with RFC1035.
+	Tags []string `protobuf:"bytes,8,rep,name=tags" json:"tags,omitempty"`
+	// Whether the nodes are created as preemptible VM instances. See:
+	// https://cloud.google.com/compute/docs/instances/preemptible for more
+	// inforamtion about preemptible VM instances.
+	Preemptible bool `protobuf:"varint,10,opt,name=preemptible" json:"preemptible,omitempty"`
 }
 
 func (m *NodeConfig) Reset()                    { *m = NodeConfig{} }
@@ -249,6 +354,13 @@ func (m *NodeConfig) GetOauthScopes() []string {
 	return nil
 }
 
+func (m *NodeConfig) GetServiceAccount() string {
+	if m != nil {
+		return m.ServiceAccount
+	}
+	return ""
+}
+
 func (m *NodeConfig) GetMetadata() map[string]string {
 	if m != nil {
 		return m.Metadata
@@ -256,6 +368,41 @@ func (m *NodeConfig) GetMetadata() map[string]string {
 	return nil
 }
 
+func (m *NodeConfig) GetImageType() string {
+	if m != nil {
+		return m.ImageType
+	}
+	return ""
+}
+
+func (m *NodeConfig) GetLabels() map[string]string {
+	if m != nil {
+		return m.Labels
+	}
+	return nil
+}
+
+func (m *NodeConfig) GetLocalSsdCount() int32 {
+	if m != nil {
+		return m.LocalSsdCount
+	}
+	return 0
+}
+
+func (m *NodeConfig) GetTags() []string {
+	if m != nil {
+		return m.Tags
+	}
+	return nil
+}
+
+func (m *NodeConfig) GetPreemptible() bool {
+	if m != nil {
+		return m.Preemptible
+	}
+	return false
+}
+
 // The authentication information for accessing the master endpoint.
 // Authentication can be done using HTTP basic auth or using client
 // certificates.
@@ -452,9 +599,23 @@ type Cluster struct {
 	AddonsConfig *AddonsConfig `protobuf:"bytes,10,opt,name=addons_config,json=addonsConfig" json:"addons_config,omitempty"`
 	// The name of the Google Compute Engine
 	// [subnetwork](/compute/docs/subnetworks) to which the
-	// cluster is connected.  Specification of subnetworks is an alpha feature,
-	// and require that the Google Compute Engine alpha API be enabled.
+	// cluster is connected.
 	Subnetwork string `protobuf:"bytes,11,opt,name=subnetwork" json:"subnetwork,omitempty"`
+	// The node pools associated with this cluster.
+	// This field should not be set if "node_config" or "initial_node_count" are
+	// specified.
+	NodePools []*NodePool `protobuf:"bytes,12,rep,name=node_pools,json=nodePools" json:"node_pools,omitempty"`
+	// The list of Google Compute Engine
+	// [locations](/compute/docs/zones#available) in which the cluster's nodes
+	// should be located.
+	Locations []string `protobuf:"bytes,13,rep,name=locations" json:"locations,omitempty"`
+	// Kubernetes alpha features are enabled on this cluster. This includes alpha
+	// API groups (e.g. v1alpha1) and features that may not be production ready in
+	// the kubernetes version of the master and nodes.
+	// The cluster has no SLA for uptime and master/node upgrades are disabled.
+	// Alpha enabled clusters are automatically deleted thirty days after
+	// creation.
+	EnableKubernetesAlpha bool `protobuf:"varint,14,opt,name=enable_kubernetes_alpha,json=enableKubernetesAlpha" json:"enable_kubernetes_alpha,omitempty"`
 	// [Output only] Server-defined URL for the resource.
 	SelfLink string `protobuf:"bytes,100,opt,name=self_link,json=selfLink" json:"self_link,omitempty"`
 	// [Output only] The name of the Google Compute Engine
@@ -471,7 +632,6 @@ type Cluster struct {
 	// [Output only] The software version of the master endpoint and kubelets used
 	// in the cluster when it was first created. The version can be upgraded over
 	// time.
-	//
 	InitialClusterVersion string `protobuf:"bytes,103,opt,name=initial_cluster_version,json=initialClusterVersion" json:"initial_cluster_version,omitempty"`
 	// [Output only] The current software version of the master endpoint.
 	CurrentMasterVersion string `protobuf:"bytes,104,opt,name=current_master_version,json=currentMasterVersion" json:"current_master_version,omitempty"`
@@ -488,7 +648,8 @@ type Cluster struct {
 	// cluster, if available.
 	StatusMessage string `protobuf:"bytes,108,opt,name=status_message,json=statusMessage" json:"status_message,omitempty"`
 	// [Output only] The size of the address space on each node for hosting
-	// containers. This is provisioned from within the `container_ipv4_cidr` range.
+	// containers. This is provisioned from within the `container_ipv4_cidr`
+	// range.
 	NodeIpv4CidrSize int32 `protobuf:"varint,109,opt,name=node_ipv4_cidr_size,json=nodeIpv4CidrSize" json:"node_ipv4_cidr_size,omitempty"`
 	// [Output only] The IP address range of the Kubernetes services in
 	// this cluster, in
@@ -502,6 +663,9 @@ type Cluster struct {
 	InstanceGroupUrls []string `protobuf:"bytes,111,rep,name=instance_group_urls,json=instanceGroupUrls" json:"instance_group_urls,omitempty"`
 	// [Output only] The number of nodes currently in the cluster.
 	CurrentNodeCount int32 `protobuf:"varint,112,opt,name=current_node_count,json=currentNodeCount" json:"current_node_count,omitempty"`
+	// [Output only] The time the cluster will be automatically
+	// deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
+	ExpireTime string `protobuf:"bytes,113,opt,name=expire_time,json=expireTime" json:"expire_time,omitempty"`
 }
 
 func (m *Cluster) Reset()                    { *m = Cluster{} }
@@ -586,6 +750,27 @@ func (m *Cluster) GetSubnetwork() string {
 	return ""
 }
 
+func (m *Cluster) GetNodePools() []*NodePool {
+	if m != nil {
+		return m.NodePools
+	}
+	return nil
+}
+
+func (m *Cluster) GetLocations() []string {
+	if m != nil {
+		return m.Locations
+	}
+	return nil
+}
+
+func (m *Cluster) GetEnableKubernetesAlpha() bool {
+	if m != nil {
+		return m.EnableKubernetesAlpha
+	}
+	return false
+}
+
 func (m *Cluster) GetSelfLink() string {
 	if m != nil {
 		return m.SelfLink
@@ -677,6 +862,13 @@ func (m *Cluster) GetCurrentNodeCount() int32 {
 	return 0
 }
 
+func (m *Cluster) GetExpireTime() string {
+	if m != nil {
+		return m.ExpireTime
+	}
+	return ""
+}
+
 // ClusterUpdate describes an update to the cluster. Exactly one update can
 // be applied to a cluster with each request, so at most one field can be
 // provided.
@@ -693,6 +885,27 @@ type ClusterUpdate struct {
 	DesiredMonitoringService string `protobuf:"bytes,5,opt,name=desired_monitoring_service,json=desiredMonitoringService" json:"desired_monitoring_service,omitempty"`
 	// Configurations for the various addons available to run in the cluster.
 	DesiredAddonsConfig *AddonsConfig `protobuf:"bytes,6,opt,name=desired_addons_config,json=desiredAddonsConfig" json:"desired_addons_config,omitempty"`
+	// The node pool to be upgraded. This field is mandatory if
+	// "desired_node_version", "desired_image_family" or
+	// "desired_node_pool_autoscaling" is specified and there is more than one
+	// node pool on the cluster.
+	DesiredNodePoolId string `protobuf:"bytes,7,opt,name=desired_node_pool_id,json=desiredNodePoolId" json:"desired_node_pool_id,omitempty"`
+	// The desired image type for the node pool.
+	// NOTE: Set the "desired_node_pool" field as well.
+	DesiredImageType string `protobuf:"bytes,8,opt,name=desired_image_type,json=desiredImageType" json:"desired_image_type,omitempty"`
+	// Autoscaler configuration for the node pool specified in
+	// desired_node_pool_id. If there is only one pool in the
+	// cluster and desired_node_pool_id is not provided then
+	// the change applies to that single node pool.
+	DesiredNodePoolAutoscaling *NodePoolAutoscaling `protobuf:"bytes,9,opt,name=desired_node_pool_autoscaling,json=desiredNodePoolAutoscaling" json:"desired_node_pool_autoscaling,omitempty"`
+	// The desired list of Google Compute Engine
+	// [locations](/compute/docs/zones#available) in which the cluster's nodes
+	// should be located. Changing the locations a cluster is in will result
+	// in nodes being either created or removed from the cluster, depending on
+	// whether locations are being added or removed.
+	//
+	// This list must always include the cluster's primary zone.
+	DesiredLocations []string `protobuf:"bytes,10,rep,name=desired_locations,json=desiredLocations" json:"desired_locations,omitempty"`
 	// The Kubernetes version to change the master to. The only valid value is the
 	// latest supported version. Use "-" to have the server automatically select
 	// the latest version.
@@ -725,6 +938,34 @@ func (m *ClusterUpdate) GetDesiredAddonsConfig() *AddonsConfig {
 	return nil
 }
 
+func (m *ClusterUpdate) GetDesiredNodePoolId() string {
+	if m != nil {
+		return m.DesiredNodePoolId
+	}
+	return ""
+}
+
+func (m *ClusterUpdate) GetDesiredImageType() string {
+	if m != nil {
+		return m.DesiredImageType
+	}
+	return ""
+}
+
+func (m *ClusterUpdate) GetDesiredNodePoolAutoscaling() *NodePoolAutoscaling {
+	if m != nil {
+		return m.DesiredNodePoolAutoscaling
+	}
+	return nil
+}
+
+func (m *ClusterUpdate) GetDesiredLocations() []string {
+	if m != nil {
+		return m.DesiredLocations
+	}
+	return nil
+}
+
 func (m *ClusterUpdate) GetDesiredMasterVersion() string {
 	if m != nil {
 		return m.DesiredMasterVersion
@@ -825,7 +1066,8 @@ type CreateClusterRequest struct {
 	// [zone](/compute/docs/zones#available) in which the cluster
 	// resides.
 	Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"`
-	// A [cluster resource](/container-engine/reference/rest/v1/projects.zones.clusters)
+	// A [cluster
+	// resource](/container-engine/reference/rest/v1/projects.zones.clusters)
 	Cluster *Cluster `protobuf:"bytes,3,opt,name=cluster" json:"cluster,omitempty"`
 }
 
@@ -1108,6 +1350,44 @@ func (m *ListOperationsRequest) GetZone() string {
 	return ""
 }
 
+// CancelOperationRequest cancels a single operation.
+type CancelOperationRequest struct {
+	// The Google Developers Console [project ID or project
+	// number](https://support.google.com/cloud/answer/6158840).
+	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"`
+	// The name of the Google Compute Engine
+	// [zone](/compute/docs/zones#available) in which the operation resides.
+	Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"`
+	// The server-assigned `name` of the operation.
+	OperationId string `protobuf:"bytes,3,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"`
+}
+
+func (m *CancelOperationRequest) Reset()                    { *m = CancelOperationRequest{} }
+func (m *CancelOperationRequest) String() string            { return proto.CompactTextString(m) }
+func (*CancelOperationRequest) ProtoMessage()               {}
+func (*CancelOperationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
+
+func (m *CancelOperationRequest) GetProjectId() string {
+	if m != nil {
+		return m.ProjectId
+	}
+	return ""
+}
+
+func (m *CancelOperationRequest) GetZone() string {
+	if m != nil {
+		return m.Zone
+	}
+	return ""
+}
+
+func (m *CancelOperationRequest) GetOperationId() string {
+	if m != nil {
+		return m.OperationId
+	}
+	return ""
+}
+
 // ListOperationsResponse is the result of ListOperationsRequest.
 type ListOperationsResponse struct {
 	// A list of operations in the project in the specified zone.
@@ -1120,7 +1400,7 @@ type ListOperationsResponse struct {
 func (m *ListOperationsResponse) Reset()                    { *m = ListOperationsResponse{} }
 func (m *ListOperationsResponse) String() string            { return proto.CompactTextString(m) }
 func (*ListOperationsResponse) ProtoMessage()               {}
-func (*ListOperationsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
+func (*ListOperationsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
 
 func (m *ListOperationsResponse) GetOperations() []*Operation {
 	if m != nil {
@@ -1149,7 +1429,7 @@ type GetServerConfigRequest struct {
 func (m *GetServerConfigRequest) Reset()                    { *m = GetServerConfigRequest{} }
 func (m *GetServerConfigRequest) String() string            { return proto.CompactTextString(m) }
 func (*GetServerConfigRequest) ProtoMessage()               {}
-func (*GetServerConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
+func (*GetServerConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
 
 func (m *GetServerConfigRequest) GetProjectId() string {
 	if m != nil {
@@ -1171,12 +1451,18 @@ type ServerConfig struct {
 	DefaultClusterVersion string `protobuf:"bytes,1,opt,name=default_cluster_version,json=defaultClusterVersion" json:"default_cluster_version,omitempty"`
 	// List of valid node upgrade target versions.
 	ValidNodeVersions []string `protobuf:"bytes,3,rep,name=valid_node_versions,json=validNodeVersions" json:"valid_node_versions,omitempty"`
+	// Default image type.
+	DefaultImageType string `protobuf:"bytes,4,opt,name=default_image_type,json=defaultImageType" json:"default_image_type,omitempty"`
+	// List of valid image types.
+	ValidImageTypes []string `protobuf:"bytes,5,rep,name=valid_image_types,json=validImageTypes" json:"valid_image_types,omitempty"`
+	// List of valid master versions.
+	ValidMasterVersions []string `protobuf:"bytes,6,rep,name=valid_master_versions,json=validMasterVersions" json:"valid_master_versions,omitempty"`
 }
 
 func (m *ServerConfig) Reset()                    { *m = ServerConfig{} }
 func (m *ServerConfig) String() string            { return proto.CompactTextString(m) }
 func (*ServerConfig) ProtoMessage()               {}
-func (*ServerConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
+func (*ServerConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
 
 func (m *ServerConfig) GetDefaultClusterVersion() string {
 	if m != nil {
@@ -1192,137 +1478,705 @@ func (m *ServerConfig) GetValidNodeVersions() []string {
 	return nil
 }
 
-func init() {
-	proto.RegisterType((*NodeConfig)(nil), "google.container.v1.NodeConfig")
-	proto.RegisterType((*MasterAuth)(nil), "google.container.v1.MasterAuth")
-	proto.RegisterType((*AddonsConfig)(nil), "google.container.v1.AddonsConfig")
-	proto.RegisterType((*HttpLoadBalancing)(nil), "google.container.v1.HttpLoadBalancing")
-	proto.RegisterType((*HorizontalPodAutoscaling)(nil), "google.container.v1.HorizontalPodAutoscaling")
-	proto.RegisterType((*Cluster)(nil), "google.container.v1.Cluster")
-	proto.RegisterType((*ClusterUpdate)(nil), "google.container.v1.ClusterUpdate")
-	proto.RegisterType((*Operation)(nil), "google.container.v1.Operation")
-	proto.RegisterType((*CreateClusterRequest)(nil), "google.container.v1.CreateClusterRequest")
-	proto.RegisterType((*GetClusterRequest)(nil), "google.container.v1.GetClusterRequest")
-	proto.RegisterType((*UpdateClusterRequest)(nil), "google.container.v1.UpdateClusterRequest")
-	proto.RegisterType((*DeleteClusterRequest)(nil), "google.container.v1.DeleteClusterRequest")
-	proto.RegisterType((*ListClustersRequest)(nil), "google.container.v1.ListClustersRequest")
-	proto.RegisterType((*ListClustersResponse)(nil), "google.container.v1.ListClustersResponse")
-	proto.RegisterType((*GetOperationRequest)(nil), "google.container.v1.GetOperationRequest")
-	proto.RegisterType((*ListOperationsRequest)(nil), "google.container.v1.ListOperationsRequest")
-	proto.RegisterType((*ListOperationsResponse)(nil), "google.container.v1.ListOperationsResponse")
-	proto.RegisterType((*GetServerConfigRequest)(nil), "google.container.v1.GetServerConfigRequest")
-	proto.RegisterType((*ServerConfig)(nil), "google.container.v1.ServerConfig")
-	proto.RegisterEnum("google.container.v1.Cluster_Status", Cluster_Status_name, Cluster_Status_value)
-	proto.RegisterEnum("google.container.v1.Operation_Status", Operation_Status_name, Operation_Status_value)
-	proto.RegisterEnum("google.container.v1.Operation_Type", Operation_Type_name, Operation_Type_value)
+func (m *ServerConfig) GetDefaultImageType() string {
+	if m != nil {
+		return m.DefaultImageType
+	}
+	return ""
 }
 
-// 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
-
-// Client API for ClusterManager service
-
-type ClusterManagerClient interface {
-	// Lists all clusters owned by a project in either the specified zone or all zones.
-	ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error)
-	// Gets the details of a specific cluster.
-	GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*Cluster, error)
-	// Creates a cluster, consisting of the specified number and type of Google
-	// Compute Engine instances.
-	//
-	// By default, the cluster is created in the project's
-	// [default network](/compute/docs/networks-and-firewalls#networks).
-	//
-	// One firewall is added for the cluster. After cluster creation,
-	// the cluster creates routes for each node to allow the containers
-	// on that node to communicate with all other instances in the
-	// cluster.
-	//
-	// Finally, an entry is added to the project's global metadata indicating
-	// which CIDR range is being used by the cluster.
-	CreateCluster(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*Operation, error)
-	// Updates the settings of a specific cluster.
-	UpdateCluster(ctx context.Context, in *UpdateClusterRequest, opts ...grpc.CallOption) (*Operation, error)
-	// Deletes the cluster, including the Kubernetes endpoint and all worker
-	// nodes.
-	//
-	// Firewalls and routes that were configured during cluster creation
-	// are also deleted.
-	//
-	// Other Google Compute Engine resources that might be in use by the cluster
-	// (e.g. load balancer resources) will not be deleted if they weren't present
-	// at the initial create time.
-	DeleteCluster(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*Operation, error)
-	// Lists all operations in a project in a specific zone or all zones.
-	ListOperations(ctx context.Context, in *ListOperationsRequest, opts ...grpc.CallOption) (*ListOperationsResponse, error)
-	// Gets the specified operation.
-	GetOperation(ctx context.Context, in *GetOperationRequest, opts ...grpc.CallOption) (*Operation, error)
-	// Returns configuration info about the Container Engine service.
-	GetServerConfig(ctx context.Context, in *GetServerConfigRequest, opts ...grpc.CallOption) (*ServerConfig, error)
+func (m *ServerConfig) GetValidImageTypes() []string {
+	if m != nil {
+		return m.ValidImageTypes
+	}
+	return nil
 }
 
-type clusterManagerClient struct {
-	cc *grpc.ClientConn
+func (m *ServerConfig) GetValidMasterVersions() []string {
+	if m != nil {
+		return m.ValidMasterVersions
+	}
+	return nil
 }
 
-func NewClusterManagerClient(cc *grpc.ClientConn) ClusterManagerClient {
-	return &clusterManagerClient{cc}
+// CreateNodePoolRequest creates a node pool for a cluster.
+type CreateNodePoolRequest struct {
+	// The Google Developers Console [project ID or project
+	// number](https://developers.google.com/console/help/new/#projectnumber).
+	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"`
+	// The name of the Google Compute Engine
+	// [zone](/compute/docs/zones#available) in which the cluster
+	// resides.
+	Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"`
+	// The name of the cluster.
+	ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"`
+	// The node pool to create.
+	NodePool *NodePool `protobuf:"bytes,4,opt,name=node_pool,json=nodePool" json:"node_pool,omitempty"`
 }
 
-func (c *clusterManagerClient) ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error) {
-	out := new(ListClustersResponse)
-	err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/ListClusters", in, out, c.cc, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
+func (m *CreateNodePoolRequest) Reset()                    { *m = CreateNodePoolRequest{} }
+func (m *CreateNodePoolRequest) String() string            { return proto.CompactTextString(m) }
+func (*CreateNodePoolRequest) ProtoMessage()               {}
+func (*CreateNodePoolRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
 
-func (c *clusterManagerClient) GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*Cluster, error) {
-	out := new(Cluster)
-	err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/GetCluster", in, out, c.cc, opts...)
-	if err != nil {
-		return nil, err
+func (m *CreateNodePoolRequest) GetProjectId() string {
+	if m != nil {
+		return m.ProjectId
 	}
-	return out, nil
+	return ""
 }
 
-func (c *clusterManagerClient) CreateCluster(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*Operation, error) {
-	out := new(Operation)
-	err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/CreateCluster", in, out, c.cc, opts...)
-	if err != nil {
-		return nil, err
+func (m *CreateNodePoolRequest) GetZone() string {
+	if m != nil {
+		return m.Zone
 	}
-	return out, nil
+	return ""
 }
 
-func (c *clusterManagerClient) UpdateCluster(ctx context.Context, in *UpdateClusterRequest, opts ...grpc.CallOption) (*Operation, error) {
-	out := new(Operation)
-	err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/UpdateCluster", in, out, c.cc, opts...)
-	if err != nil {
-		return nil, err
+func (m *CreateNodePoolRequest) GetClusterId() string {
+	if m != nil {
+		return m.ClusterId
 	}
-	return out, nil
+	return ""
 }
 
-func (c *clusterManagerClient) DeleteCluster(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*Operation, error) {
-	out := new(Operation)
-	err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/DeleteCluster", in, out, c.cc, opts...)
-	if err != nil {
-		return nil, err
+func (m *CreateNodePoolRequest) GetNodePool() *NodePool {
+	if m != nil {
+		return m.NodePool
 	}
-	return out, nil
+	return nil
 }
 
-func (c *clusterManagerClient) ListOperations(ctx context.Context, in *ListOperationsRequest, opts ...grpc.CallOption) (*ListOperationsResponse, error) {
-	out := new(ListOperationsResponse)
-	err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/ListOperations", in, out, c.cc, opts...)
-	if err != nil {
+// DeleteNodePoolRequest deletes a node pool for a cluster.
+type DeleteNodePoolRequest struct {
+	// The Google Developers Console [project ID or project
+	// number](https://developers.google.com/console/help/new/#projectnumber).
+	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"`
+	// The name of the Google Compute Engine
+	// [zone](/compute/docs/zones#available) in which the cluster
+	// resides.
+	Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"`
+	// The name of the cluster.
+	ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"`
+	// The name of the node pool to delete.
+	NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"`
+}
+
+func (m *DeleteNodePoolRequest) Reset()                    { *m = DeleteNodePoolRequest{} }
+func (m *DeleteNodePoolRequest) String() string            { return proto.CompactTextString(m) }
+func (*DeleteNodePoolRequest) ProtoMessage()               {}
+func (*DeleteNodePoolRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
+
+func (m *DeleteNodePoolRequest) GetProjectId() string {
+	if m != nil {
+		return m.ProjectId
+	}
+	return ""
+}
+
+func (m *DeleteNodePoolRequest) GetZone() string {
+	if m != nil {
+		return m.Zone
+	}
+	return ""
+}
+
+func (m *DeleteNodePoolRequest) GetClusterId() string {
+	if m != nil {
+		return m.ClusterId
+	}
+	return ""
+}
+
+func (m *DeleteNodePoolRequest) GetNodePoolId() string {
+	if m != nil {
+		return m.NodePoolId
+	}
+	return ""
+}
+
+// ListNodePoolsRequest lists the node pool(s) for a cluster.
+type ListNodePoolsRequest struct {
+	// The Google Developers Console [project ID or project
+	// number](https://developers.google.com/console/help/new/#projectnumber).
+	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"`
+	// The name of the Google Compute Engine
+	// [zone](/compute/docs/zones#available) in which the cluster
+	// resides.
+	Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"`
+	// The name of the cluster.
+	ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"`
+}
+
+func (m *ListNodePoolsRequest) Reset()                    { *m = ListNodePoolsRequest{} }
+func (m *ListNodePoolsRequest) String() string            { return proto.CompactTextString(m) }
+func (*ListNodePoolsRequest) ProtoMessage()               {}
+func (*ListNodePoolsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
+
+func (m *ListNodePoolsRequest) GetProjectId() string {
+	if m != nil {
+		return m.ProjectId
+	}
+	return ""
+}
+
+func (m *ListNodePoolsRequest) GetZone() string {
+	if m != nil {
+		return m.Zone
+	}
+	return ""
+}
+
+func (m *ListNodePoolsRequest) GetClusterId() string {
+	if m != nil {
+		return m.ClusterId
+	}
+	return ""
+}
+
+// GetNodePoolRequest retrieves a node pool for a cluster.
+type GetNodePoolRequest struct {
+	// The Google Developers Console [project ID or project
+	// number](https://developers.google.com/console/help/new/#projectnumber).
+	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"`
+	// The name of the Google Compute Engine
+	// [zone](/compute/docs/zones#available) in which the cluster
+	// resides.
+	Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"`
+	// The name of the cluster.
+	ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"`
+	// The name of the node pool.
+	NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"`
+}
+
+func (m *GetNodePoolRequest) Reset()                    { *m = GetNodePoolRequest{} }
+func (m *GetNodePoolRequest) String() string            { return proto.CompactTextString(m) }
+func (*GetNodePoolRequest) ProtoMessage()               {}
+func (*GetNodePoolRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
+
+func (m *GetNodePoolRequest) GetProjectId() string {
+	if m != nil {
+		return m.ProjectId
+	}
+	return ""
+}
+
+func (m *GetNodePoolRequest) GetZone() string {
+	if m != nil {
+		return m.Zone
+	}
+	return ""
+}
+
+func (m *GetNodePoolRequest) GetClusterId() string {
+	if m != nil {
+		return m.ClusterId
+	}
+	return ""
+}
+
+func (m *GetNodePoolRequest) GetNodePoolId() string {
+	if m != nil {
+		return m.NodePoolId
+	}
+	return ""
+}
+
+// NodePool contains the name and configuration for a cluster's node pool.
+// Node pools are a set of nodes (i.e. VM's), with a common configuration and
+// specification, under the control of the cluster master. They may have a set
+// of Kubernetes labels applied to them, which may be used to reference them
+// during pod scheduling. They may also be resized up or down, to accommodate
+// the workload.
+type NodePool struct {
+	// The name of the node pool.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// The node configuration of the pool.
+	Config *NodeConfig `protobuf:"bytes,2,opt,name=config" json:"config,omitempty"`
+	// The initial node count for the pool. You must ensure that your
+	// Compute Engine <a href="/compute/docs/resource-quotas">resource quota</a>
+	// is sufficient for this number of instances. You must also have available
+	// firewall and routes quota.
+	InitialNodeCount int32 `protobuf:"varint,3,opt,name=initial_node_count,json=initialNodeCount" json:"initial_node_count,omitempty"`
+	// [Output only] Server-defined URL for the resource.
+	SelfLink string `protobuf:"bytes,100,opt,name=self_link,json=selfLink" json:"self_link,omitempty"`
+	// [Output only] The version of the Kubernetes of this node.
+	Version string `protobuf:"bytes,101,opt,name=version" json:"version,omitempty"`
+	// [Output only] The resource URLs of [instance
+	// groups](/compute/docs/instance-groups/) associated with this
+	// node pool.
+	InstanceGroupUrls []string `protobuf:"bytes,102,rep,name=instance_group_urls,json=instanceGroupUrls" json:"instance_group_urls,omitempty"`
+	// [Output only] The status of the nodes in this pool instance.
+	Status NodePool_Status `protobuf:"varint,103,opt,name=status,enum=google.container.v1.NodePool_Status" json:"status,omitempty"`
+	// [Output only] Additional information about the current status of this
+	// node pool instance, if available.
+	StatusMessage string `protobuf:"bytes,104,opt,name=status_message,json=statusMessage" json:"status_message,omitempty"`
+	// Autoscaler configuration for this NodePool. Autoscaler is enabled
+	// only if a valid configuration is present.
+	Autoscaling *NodePoolAutoscaling `protobuf:"bytes,4,opt,name=autoscaling" json:"autoscaling,omitempty"`
+	// NodeManagement configuration for this NodePool.
+	Management *NodeManagement `protobuf:"bytes,5,opt,name=management" json:"management,omitempty"`
+}
+
+func (m *NodePool) Reset()                    { *m = NodePool{} }
+func (m *NodePool) String() string            { return proto.CompactTextString(m) }
+func (*NodePool) ProtoMessage()               {}
+func (*NodePool) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
+
+func (m *NodePool) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *NodePool) GetConfig() *NodeConfig {
+	if m != nil {
+		return m.Config
+	}
+	return nil
+}
+
+func (m *NodePool) GetInitialNodeCount() int32 {
+	if m != nil {
+		return m.InitialNodeCount
+	}
+	return 0
+}
+
+func (m *NodePool) GetSelfLink() string {
+	if m != nil {
+		return m.SelfLink
+	}
+	return ""
+}
+
+func (m *NodePool) GetVersion() string {
+	if m != nil {
+		return m.Version
+	}
+	return ""
+}
+
+func (m *NodePool) GetInstanceGroupUrls() []string {
+	if m != nil {
+		return m.InstanceGroupUrls
+	}
+	return nil
+}
+
+func (m *NodePool) GetStatus() NodePool_Status {
+	if m != nil {
+		return m.Status
+	}
+	return NodePool_STATUS_UNSPECIFIED
+}
+
+func (m *NodePool) GetStatusMessage() string {
+	if m != nil {
+		return m.StatusMessage
+	}
+	return ""
+}
+
+func (m *NodePool) GetAutoscaling() *NodePoolAutoscaling {
+	if m != nil {
+		return m.Autoscaling
+	}
+	return nil
+}
+
+func (m *NodePool) GetManagement() *NodeManagement {
+	if m != nil {
+		return m.Management
+	}
+	return nil
+}
+
+// NodeManagement defines the set of node management services turned on for the
+// node pool.
+type NodeManagement struct {
+	// Whether the nodes will be automatically upgraded.
+	AutoUpgrade bool `protobuf:"varint,1,opt,name=auto_upgrade,json=autoUpgrade" json:"auto_upgrade,omitempty"`
+	// Specifies the Auto Upgrade knobs for the node pool.
+	UpgradeOptions *AutoUpgradeOptions `protobuf:"bytes,10,opt,name=upgrade_options,json=upgradeOptions" json:"upgrade_options,omitempty"`
+}
+
+func (m *NodeManagement) Reset()                    { *m = NodeManagement{} }
+func (m *NodeManagement) String() string            { return proto.CompactTextString(m) }
+func (*NodeManagement) ProtoMessage()               {}
+func (*NodeManagement) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }
+
+func (m *NodeManagement) GetAutoUpgrade() bool {
+	if m != nil {
+		return m.AutoUpgrade
+	}
+	return false
+}
+
+func (m *NodeManagement) GetUpgradeOptions() *AutoUpgradeOptions {
+	if m != nil {
+		return m.UpgradeOptions
+	}
+	return nil
+}
+
+// AutoUpgradeOptions defines the set of options for the user to control how
+// the Auto Upgrades will proceed.
+type AutoUpgradeOptions struct {
+	// [Output only] This field is set when upgrades are about to commence
+	// with the approximate start time for the upgrades, in
+	// [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
+	AutoUpgradeStartTime string `protobuf:"bytes,1,opt,name=auto_upgrade_start_time,json=autoUpgradeStartTime" json:"auto_upgrade_start_time,omitempty"`
+	// [Output only] This field is set when upgrades are about to commence
+	// with the description of the upgrade.
+	Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`
+}
+
+func (m *AutoUpgradeOptions) Reset()                    { *m = AutoUpgradeOptions{} }
+func (m *AutoUpgradeOptions) String() string            { return proto.CompactTextString(m) }
+func (*AutoUpgradeOptions) ProtoMessage()               {}
+func (*AutoUpgradeOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }
+
+func (m *AutoUpgradeOptions) GetAutoUpgradeStartTime() string {
+	if m != nil {
+		return m.AutoUpgradeStartTime
+	}
+	return ""
+}
+
+func (m *AutoUpgradeOptions) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
+// SetNodePoolManagementRequest sets the node management properties of a node
+// pool.
+type SetNodePoolManagementRequest struct {
+	// The Google Developers Console [project ID or project
+	// number](https://support.google.com/cloud/answer/6158840).
+	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"`
+	// The name of the Google Compute Engine
+	// [zone](/compute/docs/zones#available) in which the cluster
+	// resides.
+	Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"`
+	// The name of the cluster to update.
+	ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"`
+	// The name of the node pool to update.
+	NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"`
+	// NodeManagement configuration for the node pool.
+	Management *NodeManagement `protobuf:"bytes,5,opt,name=management" json:"management,omitempty"`
+}
+
+func (m *SetNodePoolManagementRequest) Reset()                    { *m = SetNodePoolManagementRequest{} }
+func (m *SetNodePoolManagementRequest) String() string            { return proto.CompactTextString(m) }
+func (*SetNodePoolManagementRequest) ProtoMessage()               {}
+func (*SetNodePoolManagementRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
+
+func (m *SetNodePoolManagementRequest) GetProjectId() string {
+	if m != nil {
+		return m.ProjectId
+	}
+	return ""
+}
+
+func (m *SetNodePoolManagementRequest) GetZone() string {
+	if m != nil {
+		return m.Zone
+	}
+	return ""
+}
+
+func (m *SetNodePoolManagementRequest) GetClusterId() string {
+	if m != nil {
+		return m.ClusterId
+	}
+	return ""
+}
+
+func (m *SetNodePoolManagementRequest) GetNodePoolId() string {
+	if m != nil {
+		return m.NodePoolId
+	}
+	return ""
+}
+
+func (m *SetNodePoolManagementRequest) GetManagement() *NodeManagement {
+	if m != nil {
+		return m.Management
+	}
+	return nil
+}
+
+// RollbackNodePoolUpgradeRequest rollbacks the previously Aborted or Failed
+// NodePool upgrade. This will be an no-op if the last upgrade successfully
+// completed.
+type RollbackNodePoolUpgradeRequest struct {
+	// The Google Developers Console [project ID or project
+	// number](https://support.google.com/cloud/answer/6158840).
+	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"`
+	// The name of the Google Compute Engine
+	// [zone](/compute/docs/zones#available) in which the cluster
+	// resides.
+	Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"`
+	// The name of the cluster to rollback.
+	ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"`
+	// The name of the node pool to rollback.
+	NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"`
+}
+
+func (m *RollbackNodePoolUpgradeRequest) Reset()                    { *m = RollbackNodePoolUpgradeRequest{} }
+func (m *RollbackNodePoolUpgradeRequest) String() string            { return proto.CompactTextString(m) }
+func (*RollbackNodePoolUpgradeRequest) ProtoMessage()               {}
+func (*RollbackNodePoolUpgradeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }
+
+func (m *RollbackNodePoolUpgradeRequest) GetProjectId() string {
+	if m != nil {
+		return m.ProjectId
+	}
+	return ""
+}
+
+func (m *RollbackNodePoolUpgradeRequest) GetZone() string {
+	if m != nil {
+		return m.Zone
+	}
+	return ""
+}
+
+func (m *RollbackNodePoolUpgradeRequest) GetClusterId() string {
+	if m != nil {
+		return m.ClusterId
+	}
+	return ""
+}
+
+func (m *RollbackNodePoolUpgradeRequest) GetNodePoolId() string {
+	if m != nil {
+		return m.NodePoolId
+	}
+	return ""
+}
+
+// ListNodePoolsResponse is the result of ListNodePoolsRequest.
+type ListNodePoolsResponse struct {
+	// A list of node pools for a cluster.
+	NodePools []*NodePool `protobuf:"bytes,1,rep,name=node_pools,json=nodePools" json:"node_pools,omitempty"`
+}
+
+func (m *ListNodePoolsResponse) Reset()                    { *m = ListNodePoolsResponse{} }
+func (m *ListNodePoolsResponse) String() string            { return proto.CompactTextString(m) }
+func (*ListNodePoolsResponse) ProtoMessage()               {}
+func (*ListNodePoolsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }
+
+func (m *ListNodePoolsResponse) GetNodePools() []*NodePool {
+	if m != nil {
+		return m.NodePools
+	}
+	return nil
+}
+
+// NodePoolAutoscaling contains information required by cluster autoscaler to
+// adjust the size of the node pool to the current cluster usage.
+type NodePoolAutoscaling struct {
+	// Is autoscaling enabled for this node pool.
+	Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"`
+	// Minimum number of nodes in the NodePool. Must be >= 1 and <=
+	// max_node_count.
+	MinNodeCount int32 `protobuf:"varint,2,opt,name=min_node_count,json=minNodeCount" json:"min_node_count,omitempty"`
+	// Maximum number of nodes in the NodePool. Must be >= min_node_count. There
+	// has to enough quota to scale up the cluster.
+	MaxNodeCount int32 `protobuf:"varint,3,opt,name=max_node_count,json=maxNodeCount" json:"max_node_count,omitempty"`
+}
+
+func (m *NodePoolAutoscaling) Reset()                    { *m = NodePoolAutoscaling{} }
+func (m *NodePoolAutoscaling) String() string            { return proto.CompactTextString(m) }
+func (*NodePoolAutoscaling) ProtoMessage()               {}
+func (*NodePoolAutoscaling) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }
+
+func (m *NodePoolAutoscaling) GetEnabled() bool {
+	if m != nil {
+		return m.Enabled
+	}
+	return false
+}
+
+func (m *NodePoolAutoscaling) GetMinNodeCount() int32 {
+	if m != nil {
+		return m.MinNodeCount
+	}
+	return 0
+}
+
+func (m *NodePoolAutoscaling) GetMaxNodeCount() int32 {
+	if m != nil {
+		return m.MaxNodeCount
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterType((*NodeConfig)(nil), "google.container.v1.NodeConfig")
+	proto.RegisterType((*MasterAuth)(nil), "google.container.v1.MasterAuth")
+	proto.RegisterType((*AddonsConfig)(nil), "google.container.v1.AddonsConfig")
+	proto.RegisterType((*HttpLoadBalancing)(nil), "google.container.v1.HttpLoadBalancing")
+	proto.RegisterType((*HorizontalPodAutoscaling)(nil), "google.container.v1.HorizontalPodAutoscaling")
+	proto.RegisterType((*Cluster)(nil), "google.container.v1.Cluster")
+	proto.RegisterType((*ClusterUpdate)(nil), "google.container.v1.ClusterUpdate")
+	proto.RegisterType((*Operation)(nil), "google.container.v1.Operation")
+	proto.RegisterType((*CreateClusterRequest)(nil), "google.container.v1.CreateClusterRequest")
+	proto.RegisterType((*GetClusterRequest)(nil), "google.container.v1.GetClusterRequest")
+	proto.RegisterType((*UpdateClusterRequest)(nil), "google.container.v1.UpdateClusterRequest")
+	proto.RegisterType((*DeleteClusterRequest)(nil), "google.container.v1.DeleteClusterRequest")
+	proto.RegisterType((*ListClustersRequest)(nil), "google.container.v1.ListClustersRequest")
+	proto.RegisterType((*ListClustersResponse)(nil), "google.container.v1.ListClustersResponse")
+	proto.RegisterType((*GetOperationRequest)(nil), "google.container.v1.GetOperationRequest")
+	proto.RegisterType((*ListOperationsRequest)(nil), "google.container.v1.ListOperationsRequest")
+	proto.RegisterType((*CancelOperationRequest)(nil), "google.container.v1.CancelOperationRequest")
+	proto.RegisterType((*ListOperationsResponse)(nil), "google.container.v1.ListOperationsResponse")
+	proto.RegisterType((*GetServerConfigRequest)(nil), "google.container.v1.GetServerConfigRequest")
+	proto.RegisterType((*ServerConfig)(nil), "google.container.v1.ServerConfig")
+	proto.RegisterType((*CreateNodePoolRequest)(nil), "google.container.v1.CreateNodePoolRequest")
+	proto.RegisterType((*DeleteNodePoolRequest)(nil), "google.container.v1.DeleteNodePoolRequest")
+	proto.RegisterType((*ListNodePoolsRequest)(nil), "google.container.v1.ListNodePoolsRequest")
+	proto.RegisterType((*GetNodePoolRequest)(nil), "google.container.v1.GetNodePoolRequest")
+	proto.RegisterType((*NodePool)(nil), "google.container.v1.NodePool")
+	proto.RegisterType((*NodeManagement)(nil), "google.container.v1.NodeManagement")
+	proto.RegisterType((*AutoUpgradeOptions)(nil), "google.container.v1.AutoUpgradeOptions")
+	proto.RegisterType((*SetNodePoolManagementRequest)(nil), "google.container.v1.SetNodePoolManagementRequest")
+	proto.RegisterType((*RollbackNodePoolUpgradeRequest)(nil), "google.container.v1.RollbackNodePoolUpgradeRequest")
+	proto.RegisterType((*ListNodePoolsResponse)(nil), "google.container.v1.ListNodePoolsResponse")
+	proto.RegisterType((*NodePoolAutoscaling)(nil), "google.container.v1.NodePoolAutoscaling")
+	proto.RegisterEnum("google.container.v1.Cluster_Status", Cluster_Status_name, Cluster_Status_value)
+	proto.RegisterEnum("google.container.v1.Operation_Status", Operation_Status_name, Operation_Status_value)
+	proto.RegisterEnum("google.container.v1.Operation_Type", Operation_Type_name, Operation_Type_value)
+	proto.RegisterEnum("google.container.v1.NodePool_Status", NodePool_Status_name, NodePool_Status_value)
+}
+
+// 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
+
+// Client API for ClusterManager service
+
+type ClusterManagerClient interface {
+	// Lists all clusters owned by a project in either the specified zone or all
+	// zones.
+	ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error)
+	// Gets the details of a specific cluster.
+	GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*Cluster, error)
+	// Creates a cluster, consisting of the specified number and type of Google
+	// Compute Engine instances.
+	//
+	// By default, the cluster is created in the project's
+	// [default network](/compute/docs/networks-and-firewalls#networks).
+	//
+	// One firewall is added for the cluster. After cluster creation,
+	// the cluster creates routes for each node to allow the containers
+	// on that node to communicate with all other instances in the
+	// cluster.
+	//
+	// Finally, an entry is added to the project's global metadata indicating
+	// which CIDR range is being used by the cluster.
+	CreateCluster(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*Operation, error)
+	// Updates the settings of a specific cluster.
+	UpdateCluster(ctx context.Context, in *UpdateClusterRequest, opts ...grpc.CallOption) (*Operation, error)
+	// Deletes the cluster, including the Kubernetes endpoint and all worker
+	// nodes.
+	//
+	// Firewalls and routes that were configured during cluster creation
+	// are also deleted.
+	//
+	// Other Google Compute Engine resources that might be in use by the cluster
+	// (e.g. load balancer resources) will not be deleted if they weren't present
+	// at the initial create time.
+	DeleteCluster(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*Operation, error)
+	// Lists all operations in a project in a specific zone or all zones.
+	ListOperations(ctx context.Context, in *ListOperationsRequest, opts ...grpc.CallOption) (*ListOperationsResponse, error)
+	// Gets the specified operation.
+	GetOperation(ctx context.Context, in *GetOperationRequest, opts ...grpc.CallOption) (*Operation, error)
+	// Cancels the specified operation.
+	CancelOperation(ctx context.Context, in *CancelOperationRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+	// Returns configuration info about the Container Engine service.
+	GetServerConfig(ctx context.Context, in *GetServerConfigRequest, opts ...grpc.CallOption) (*ServerConfig, error)
+	// Lists the node pools for a cluster.
+	ListNodePools(ctx context.Context, in *ListNodePoolsRequest, opts ...grpc.CallOption) (*ListNodePoolsResponse, error)
+	// Retrieves the node pool requested.
+	GetNodePool(ctx context.Context, in *GetNodePoolRequest, opts ...grpc.CallOption) (*NodePool, error)
+	// Creates a node pool for a cluster.
+	CreateNodePool(ctx context.Context, in *CreateNodePoolRequest, opts ...grpc.CallOption) (*Operation, error)
+	// Deletes a node pool from a cluster.
+	DeleteNodePool(ctx context.Context, in *DeleteNodePoolRequest, opts ...grpc.CallOption) (*Operation, error)
+	// Roll back the previously Aborted or Failed NodePool upgrade.
+	// This will be an no-op if the last upgrade successfully completed.
+	RollbackNodePoolUpgrade(ctx context.Context, in *RollbackNodePoolUpgradeRequest, opts ...grpc.CallOption) (*Operation, error)
+	// Sets the NodeManagement options for a node pool.
+	SetNodePoolManagement(ctx context.Context, in *SetNodePoolManagementRequest, opts ...grpc.CallOption) (*Operation, error)
+}
+
+type clusterManagerClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewClusterManagerClient(cc *grpc.ClientConn) ClusterManagerClient {
+	return &clusterManagerClient{cc}
+}
+
+func (c *clusterManagerClient) ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error) {
+	out := new(ListClustersResponse)
+	err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/ListClusters", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *clusterManagerClient) GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*Cluster, error) {
+	out := new(Cluster)
+	err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/GetCluster", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *clusterManagerClient) CreateCluster(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*Operation, error) {
+	out := new(Operation)
+	err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/CreateCluster", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *clusterManagerClient) UpdateCluster(ctx context.Context, in *UpdateClusterRequest, opts ...grpc.CallOption) (*Operation, error) {
+	out := new(Operation)
+	err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/UpdateCluster", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *clusterManagerClient) DeleteCluster(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*Operation, error) {
+	out := new(Operation)
+	err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/DeleteCluster", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *clusterManagerClient) ListOperations(ctx context.Context, in *ListOperationsRequest, opts ...grpc.CallOption) (*ListOperationsResponse, error) {
+	out := new(ListOperationsResponse)
+	err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/ListOperations", in, out, c.cc, opts...)
+	if err != nil {
 		return nil, err
 	}
 	return out, nil
@@ -1337,6 +2191,15 @@ func (c *clusterManagerClient) GetOperation(ctx context.Context, in *GetOperatio
 	return out, nil
 }
 
+func (c *clusterManagerClient) CancelOperation(ctx context.Context, in *CancelOperationRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+	out := new(google_protobuf1.Empty)
+	err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/CancelOperation", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 func (c *clusterManagerClient) GetServerConfig(ctx context.Context, in *GetServerConfigRequest, opts ...grpc.CallOption) (*ServerConfig, error) {
 	out := new(ServerConfig)
 	err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/GetServerConfig", in, out, c.cc, opts...)
@@ -1346,10 +2209,65 @@ func (c *clusterManagerClient) GetServerConfig(ctx context.Context, in *GetServe
 	return out, nil
 }
 
+func (c *clusterManagerClient) ListNodePools(ctx context.Context, in *ListNodePoolsRequest, opts ...grpc.CallOption) (*ListNodePoolsResponse, error) {
+	out := new(ListNodePoolsResponse)
+	err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/ListNodePools", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *clusterManagerClient) GetNodePool(ctx context.Context, in *GetNodePoolRequest, opts ...grpc.CallOption) (*NodePool, error) {
+	out := new(NodePool)
+	err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/GetNodePool", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *clusterManagerClient) CreateNodePool(ctx context.Context, in *CreateNodePoolRequest, opts ...grpc.CallOption) (*Operation, error) {
+	out := new(Operation)
+	err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/CreateNodePool", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *clusterManagerClient) DeleteNodePool(ctx context.Context, in *DeleteNodePoolRequest, opts ...grpc.CallOption) (*Operation, error) {
+	out := new(Operation)
+	err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/DeleteNodePool", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *clusterManagerClient) RollbackNodePoolUpgrade(ctx context.Context, in *RollbackNodePoolUpgradeRequest, opts ...grpc.CallOption) (*Operation, error) {
+	out := new(Operation)
+	err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/RollbackNodePoolUpgrade", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *clusterManagerClient) SetNodePoolManagement(ctx context.Context, in *SetNodePoolManagementRequest, opts ...grpc.CallOption) (*Operation, error) {
+	out := new(Operation)
+	err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/SetNodePoolManagement", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 // Server API for ClusterManager service
 
 type ClusterManagerServer interface {
-	// Lists all clusters owned by a project in either the specified zone or all zones.
+	// Lists all clusters owned by a project in either the specified zone or all
+	// zones.
 	ListClusters(context.Context, *ListClustersRequest) (*ListClustersResponse, error)
 	// Gets the details of a specific cluster.
 	GetCluster(context.Context, *GetClusterRequest) (*Cluster, error)
@@ -1383,8 +2301,23 @@ type ClusterManagerServer interface {
 	ListOperations(context.Context, *ListOperationsRequest) (*ListOperationsResponse, error)
 	// Gets the specified operation.
 	GetOperation(context.Context, *GetOperationRequest) (*Operation, error)
+	// Cancels the specified operation.
+	CancelOperation(context.Context, *CancelOperationRequest) (*google_protobuf1.Empty, error)
 	// Returns configuration info about the Container Engine service.
 	GetServerConfig(context.Context, *GetServerConfigRequest) (*ServerConfig, error)
+	// Lists the node pools for a cluster.
+	ListNodePools(context.Context, *ListNodePoolsRequest) (*ListNodePoolsResponse, error)
+	// Retrieves the node pool requested.
+	GetNodePool(context.Context, *GetNodePoolRequest) (*NodePool, error)
+	// Creates a node pool for a cluster.
+	CreateNodePool(context.Context, *CreateNodePoolRequest) (*Operation, error)
+	// Deletes a node pool from a cluster.
+	DeleteNodePool(context.Context, *DeleteNodePoolRequest) (*Operation, error)
+	// Roll back the previously Aborted or Failed NodePool upgrade.
+	// This will be an no-op if the last upgrade successfully completed.
+	RollbackNodePoolUpgrade(context.Context, *RollbackNodePoolUpgradeRequest) (*Operation, error)
+	// Sets the NodeManagement options for a node pool.
+	SetNodePoolManagement(context.Context, *SetNodePoolManagementRequest) (*Operation, error)
 }
 
 func RegisterClusterManagerServer(s *grpc.Server, srv ClusterManagerServer) {
@@ -1517,6 +2450,24 @@ func _ClusterManager_GetOperation_Handler(srv interface{}, ctx context.Context,
 	return interceptor(ctx, in, info, handler)
 }
 
+func _ClusterManager_CancelOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CancelOperationRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ClusterManagerServer).CancelOperation(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.container.v1.ClusterManager/CancelOperation",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ClusterManagerServer).CancelOperation(ctx, req.(*CancelOperationRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _ClusterManager_GetServerConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(GetServerConfigRequest)
 	if err := dec(in); err != nil {
@@ -1535,6 +2486,114 @@ func _ClusterManager_GetServerConfig_Handler(srv interface{}, ctx context.Contex
 	return interceptor(ctx, in, info, handler)
 }
 
+func _ClusterManager_ListNodePools_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListNodePoolsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ClusterManagerServer).ListNodePools(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.container.v1.ClusterManager/ListNodePools",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ClusterManagerServer).ListNodePools(ctx, req.(*ListNodePoolsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ClusterManager_GetNodePool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetNodePoolRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ClusterManagerServer).GetNodePool(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.container.v1.ClusterManager/GetNodePool",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ClusterManagerServer).GetNodePool(ctx, req.(*GetNodePoolRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ClusterManager_CreateNodePool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CreateNodePoolRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ClusterManagerServer).CreateNodePool(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.container.v1.ClusterManager/CreateNodePool",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ClusterManagerServer).CreateNodePool(ctx, req.(*CreateNodePoolRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ClusterManager_DeleteNodePool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeleteNodePoolRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ClusterManagerServer).DeleteNodePool(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.container.v1.ClusterManager/DeleteNodePool",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ClusterManagerServer).DeleteNodePool(ctx, req.(*DeleteNodePoolRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ClusterManager_RollbackNodePoolUpgrade_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(RollbackNodePoolUpgradeRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ClusterManagerServer).RollbackNodePoolUpgrade(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.container.v1.ClusterManager/RollbackNodePoolUpgrade",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ClusterManagerServer).RollbackNodePoolUpgrade(ctx, req.(*RollbackNodePoolUpgradeRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ClusterManager_SetNodePoolManagement_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SetNodePoolManagementRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ClusterManagerServer).SetNodePoolManagement(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.container.v1.ClusterManager/SetNodePoolManagement",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ClusterManagerServer).SetNodePoolManagement(ctx, req.(*SetNodePoolManagementRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 var _ClusterManager_serviceDesc = grpc.ServiceDesc{
 	ServiceName: "google.container.v1.ClusterManager",
 	HandlerType: (*ClusterManagerServer)(nil),
@@ -1567,10 +2626,38 @@ var _ClusterManager_serviceDesc = grpc.ServiceDesc{
 			MethodName: "GetOperation",
 			Handler:    _ClusterManager_GetOperation_Handler,
 		},
+		{
+			MethodName: "CancelOperation",
+			Handler:    _ClusterManager_CancelOperation_Handler,
+		},
 		{
 			MethodName: "GetServerConfig",
 			Handler:    _ClusterManager_GetServerConfig_Handler,
 		},
+		{
+			MethodName: "ListNodePools",
+			Handler:    _ClusterManager_ListNodePools_Handler,
+		},
+		{
+			MethodName: "GetNodePool",
+			Handler:    _ClusterManager_GetNodePool_Handler,
+		},
+		{
+			MethodName: "CreateNodePool",
+			Handler:    _ClusterManager_CreateNodePool_Handler,
+		},
+		{
+			MethodName: "DeleteNodePool",
+			Handler:    _ClusterManager_DeleteNodePool_Handler,
+		},
+		{
+			MethodName: "RollbackNodePoolUpgrade",
+			Handler:    _ClusterManager_RollbackNodePoolUpgrade_Handler,
+		},
+		{
+			MethodName: "SetNodePoolManagement",
+			Handler:    _ClusterManager_SetNodePoolManagement_Handler,
+		},
 	},
 	Streams:  []grpc.StreamDesc{},
 	Metadata: "google/container/v1/cluster_service.proto",
@@ -1579,124 +2666,183 @@ var _ClusterManager_serviceDesc = grpc.ServiceDesc{
 func init() { proto.RegisterFile("google/container/v1/cluster_service.proto", fileDescriptor0) }
 
 var fileDescriptor0 = []byte{
-	// 1893 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x4f, 0x6f, 0x1b, 0xc7,
-	0x15, 0xef, 0x4a, 0xd4, 0xbf, 0x47, 0x52, 0xa6, 0x46, 0xb2, 0xb2, 0x60, 0xd3, 0x58, 0xd9, 0x20,
-	0xad, 0xe2, 0xd4, 0x64, 0x24, 0xab, 0x6e, 0x6a, 0xbb, 0x81, 0x65, 0x92, 0x91, 0x99, 0x48, 0x22,
-	0xb1, 0x94, 0x0c, 0x34, 0x97, 0xc5, 0x88, 0x3b, 0x22, 0x27, 0x5a, 0xee, 0x6c, 0x77, 0x86, 0x0c,
-	0x64, 0x43, 0x87, 0xf6, 0x5c, 0xa0, 0x87, 0x02, 0x45, 0x0b, 0x14, 0x45, 0xd1, 0xe6, 0x7b, 0xf4,
-	0xd0, 0x4b, 0xef, 0xf9, 0x0a, 0xfd, 0x18, 0x3d, 0x04, 0x33, 0x3b, 0xbb, 0x5c, 0x4a, 0xab, 0x3f,
-	0x8e, 0xe0, 0x93, 0x38, 0xef, 0xdf, 0xfc, 0xe6, 0xcd, 0xef, 0xbd, 0x37, 0x2b, 0xf8, 0xa8, 0xc7,
-	0x58, 0xcf, 0x23, 0xd5, 0x2e, 0xf3, 0x05, 0xa6, 0x3e, 0x09, 0xab, 0xa3, 0x8d, 0x6a, 0xd7, 0x1b,
-	0x72, 0x41, 0x42, 0x87, 0x93, 0x70, 0x44, 0xbb, 0xa4, 0x12, 0x84, 0x4c, 0x30, 0xb4, 0x1c, 0x99,
-	0x56, 0x12, 0xd3, 0xca, 0x68, 0xa3, 0xfc, 0xae, 0xf6, 0xc7, 0x01, 0xad, 0x62, 0xdf, 0x67, 0x02,
-	0x0b, 0xca, 0x7c, 0x1e, 0xb9, 0x58, 0xff, 0x37, 0x00, 0xf6, 0x99, 0x4b, 0x6a, 0xcc, 0x3f, 0xa6,
-	0x3d, 0xf4, 0x3e, 0x14, 0x06, 0xb8, 0xdb, 0xa7, 0x3e, 0x71, 0xc4, 0x69, 0x40, 0x4c, 0x63, 0xcd,
-	0x58, 0x5f, 0xb0, 0xf3, 0x5a, 0x76, 0x70, 0x1a, 0x10, 0xb4, 0x06, 0x05, 0x97, 0xf2, 0x13, 0x87,
-	0xd3, 0x57, 0xc4, 0xe9, 0x1d, 0x99, 0x53, 0x6b, 0xc6, 0xfa, 0x8c, 0x0d, 0x52, 0xd6, 0xa1, 0xaf,
-	0xc8, 0xce, 0x91, 0x0c, 0xc2, 0xf0, 0x50, 0xf4, 0x1d, 0xde, 0x65, 0x01, 0xe1, 0xe6, 0xf4, 0xda,
-	0xb4, 0x0c, 0xa2, 0x64, 0x1d, 0x25, 0x42, 0x4d, 0x98, 0x1f, 0x10, 0x81, 0x5d, 0x2c, 0xb0, 0x99,
-	0x5b, 0x9b, 0x5e, 0xcf, 0x6f, 0x3e, 0xa8, 0x64, 0x80, 0xaf, 0x8c, 0xa1, 0x55, 0xf6, 0xb4, 0x7d,
-	0xc3, 0x17, 0xe1, 0xa9, 0x9d, 0xb8, 0x97, 0x9f, 0x40, 0x71, 0x42, 0x85, 0x4a, 0x30, 0x7d, 0x42,
-	0x4e, 0x35, 0x74, 0xf9, 0x13, 0xad, 0xc0, 0xcc, 0x08, 0x7b, 0x43, 0xa2, 0xb0, 0x2e, 0xd8, 0xd1,
-	0xe2, 0xf1, 0xd4, 0xa7, 0x86, 0xf5, 0x5f, 0x03, 0x60, 0x0f, 0xcb, 0x54, 0x6e, 0x0f, 0x45, 0x1f,
-	0x95, 0x61, 0x7e, 0xc8, 0x49, 0xe8, 0xe3, 0x41, 0x7c, 0xf4, 0x64, 0x2d, 0x75, 0x01, 0xe6, 0xfc,
-	0x1b, 0x16, 0xba, 0x3a, 0x4e, 0xb2, 0x46, 0x5b, 0xb0, 0x1a, 0xdf, 0x48, 0x17, 0x3b, 0x5d, 0x12,
-	0x0a, 0x7a, 0x4c, 0xbb, 0x58, 0x10, 0xd3, 0x55, 0x96, 0x2b, 0x5a, 0x5b, 0xc3, 0xb5, 0xb1, 0x0e,
-	0x3d, 0x00, 0xd4, 0xf5, 0x28, 0xf1, 0xc5, 0x84, 0x07, 0x51, 0x1e, 0x4b, 0x91, 0x26, 0x6d, 0xfe,
-	0x13, 0x00, 0x6d, 0x2e, 0x8f, 0x77, 0xac, 0xcc, 0x16, 0x22, 0xc9, 0x97, 0xe4, 0xd4, 0xfa, 0xce,
-	0x80, 0xc2, 0xb6, 0xeb, 0x32, 0x9f, 0xeb, 0xbb, 0x7c, 0x09, 0xcb, 0x7d, 0x21, 0x02, 0xc7, 0x63,
-	0xd8, 0x75, 0x8e, 0xb0, 0x87, 0xfd, 0x2e, 0xf5, 0x7b, 0xea, 0x5c, 0xf9, 0xcd, 0x9f, 0x66, 0xa6,
-	0xfb, 0x85, 0x10, 0xc1, 0x2e, 0xc3, 0xee, 0xf3, 0xd8, 0xda, 0x5e, 0xea, 0x9f, 0x17, 0xa1, 0x13,
-	0x28, 0xf7, 0x59, 0x48, 0x5f, 0x49, 0x47, 0xcf, 0x09, 0x98, 0xeb, 0xe0, 0xa1, 0x60, 0xbc, 0x8b,
-	0x3d, 0x19, 0x7e, 0x4a, 0x85, 0xcf, 0xbe, 0xcd, 0x17, 0x89, 0x5b, 0x9b, 0xb9, 0xdb, 0x63, 0x27,
-	0xdb, 0xec, 0x5f, 0xa2, 0xb1, 0xaa, 0xb0, 0x74, 0x01, 0x94, 0xbc, 0x0a, 0x97, 0x72, 0x7c, 0xe4,
-	0x11, 0x57, 0x1d, 0x67, 0xde, 0x4e, 0xd6, 0xd6, 0x23, 0x30, 0x2f, 0xdb, 0xe6, 0x4a, 0xbf, 0x3f,
-	0x2e, 0xc0, 0x5c, 0x2d, 0xba, 0x25, 0x84, 0x20, 0x97, 0xa2, 0x80, 0xfa, 0x8d, 0xd6, 0x20, 0xef,
-	0x12, 0xde, 0x0d, 0x69, 0x20, 0xcb, 0x47, 0x33, 0x20, 0x2d, 0x42, 0x3f, 0x07, 0x44, 0x7d, 0x2a,
-	0x28, 0xf6, 0x1c, 0x9f, 0xb9, 0xc4, 0xe9, 0xb2, 0xa1, 0x2f, 0xcc, 0x69, 0x55, 0x1e, 0x25, 0xad,
-	0x89, 0xf8, 0x3c, 0xf4, 0x05, 0x7a, 0x06, 0x79, 0x6d, 0x25, 0x2f, 0xcb, 0xcc, 0xa9, 0xb4, 0xdd,
-	0xbb, 0xa6, 0x08, 0x6c, 0xf0, 0xc7, 0xb5, 0xfa, 0x0c, 0xf2, 0x03, 0x45, 0x5d, 0x99, 0xff, 0xbe,
-	0x39, 0x73, 0x45, 0x84, 0x31, 0xc5, 0x6d, 0x18, 0x8c, 0xe9, 0xfe, 0x33, 0xb8, 0xe3, 0xb1, 0x5e,
-	0x8f, 0xfa, 0xbd, 0xb8, 0x91, 0x98, 0xb3, 0xea, 0x5c, 0x8b, 0x5a, 0xdc, 0x89, 0xa4, 0x92, 0xa9,
-	0x03, 0xe6, 0x53, 0xc1, 0xc2, 0xb4, 0xed, 0x5c, 0xc4, 0xd4, 0xb1, 0x26, 0x36, 0x37, 0x61, 0xce,
-	0x27, 0xe2, 0x1b, 0x16, 0x9e, 0x98, 0xf3, 0xca, 0x26, 0x5e, 0xa2, 0xfb, 0xb0, 0x14, 0x17, 0x0a,
-	0x0d, 0x46, 0x5b, 0x4e, 0x97, 0xba, 0xa1, 0xb9, 0xa0, 0x6c, 0xee, 0x68, 0x45, 0x33, 0x18, 0x6d,
-	0xd5, 0xa8, 0x1b, 0xa2, 0xcf, 0xa1, 0x88, 0x15, 0x9f, 0xe3, 0x1c, 0x81, 0x3a, 0xe1, 0xfb, 0x99,
-	0x27, 0x4c, 0x33, 0xdf, 0x2e, 0xe0, 0x74, 0x1d, 0xbc, 0x07, 0xc0, 0x87, 0x47, 0x31, 0xa0, 0xbc,
-	0xda, 0x2c, 0x25, 0x41, 0x3f, 0x86, 0x05, 0x4e, 0xbc, 0x63, 0xc7, 0xa3, 0xfe, 0x89, 0xae, 0xd7,
-	0x79, 0x29, 0xd8, 0xa5, 0xfe, 0x89, 0xa4, 0xc2, 0x2b, 0xe6, 0xc7, 0x55, 0xa9, 0x7e, 0x4b, 0x1a,
-	0x11, 0xdf, 0x0d, 0x18, 0xf5, 0x85, 0x2e, 0xc3, 0x64, 0x8d, 0x1e, 0xc1, 0x3b, 0x31, 0x09, 0xe2,
-	0x83, 0x8e, 0x48, 0xc8, 0x25, 0x65, 0x7a, 0xca, 0xf4, 0xae, 0x56, 0x6b, 0xae, 0xbd, 0x8c, 0x94,
-	0xaa, 0x83, 0x0c, 0xc3, 0x50, 0x56, 0xb7, 0xbe, 0xd4, 0xd8, 0xad, 0xaf, 0x3b, 0x48, 0xa4, 0x8d,
-	0x6e, 0x32, 0xf6, 0xfa, 0x04, 0x62, 0x79, 0x44, 0xb9, 0xd8, 0x87, 0x2a, 0x1f, 0xa4, 0x75, 0x92,
-	0x3f, 0xb1, 0xc7, 0x3d, 0xc8, 0x77, 0x43, 0x82, 0x05, 0x71, 0x04, 0x1d, 0x10, 0xf3, 0xeb, 0x28,
-	0x1b, 0x91, 0xe8, 0x80, 0x0e, 0x08, 0x7a, 0x02, 0xb3, 0x5c, 0x60, 0x31, 0xe4, 0xe6, 0xc9, 0x9a,
-	0xb1, 0xbe, 0xb8, 0xf9, 0x41, 0x66, 0xba, 0x35, 0xfa, 0x4a, 0x47, 0x99, 0xda, 0xda, 0x05, 0x7d,
-	0x08, 0x8b, 0xd1, 0x2f, 0x67, 0x40, 0x38, 0xc7, 0x3d, 0x62, 0x7a, 0x6a, 0x83, 0x62, 0x24, 0xdd,
-	0x8b, 0x84, 0xe8, 0x01, 0x2c, 0x2b, 0xb8, 0x09, 0x05, 0xd4, 0x30, 0x31, 0x07, 0x51, 0xa9, 0x48,
-	0x55, 0x4c, 0x02, 0x39, 0x51, 0x64, 0x61, 0x69, 0xca, 0xf1, 0x14, 0x6b, 0x7c, 0x15, 0xb9, 0x14,
-	0x6b, 0x12, 0xda, 0x54, 0x60, 0x99, 0xfa, 0x5c, 0x60, 0xbf, 0x4b, 0x9c, 0x5e, 0xc8, 0x86, 0x81,
-	0x33, 0x0c, 0x3d, 0x6e, 0x32, 0x35, 0x84, 0x96, 0x62, 0xd5, 0x8e, 0xd4, 0x1c, 0x86, 0x1e, 0x97,
-	0xd1, 0x27, 0x72, 0x18, 0x95, 0x6d, 0x10, 0x61, 0x49, 0x65, 0x50, 0x95, 0xad, 0x45, 0x61, 0x36,
-	0x3a, 0x33, 0x5a, 0x05, 0xd4, 0x39, 0xd8, 0x3e, 0x38, 0xec, 0x38, 0x87, 0xfb, 0x9d, 0x76, 0xa3,
-	0xd6, 0xfc, 0xbc, 0xd9, 0xa8, 0x97, 0x7e, 0x84, 0x4a, 0x50, 0x68, 0xdb, 0xad, 0x97, 0xcd, 0x4e,
-	0xb3, 0xb5, 0xdf, 0xdc, 0xdf, 0x29, 0x19, 0x28, 0x0f, 0x73, 0xf6, 0xe1, 0xbe, 0x5a, 0x4c, 0xa1,
-	0x3b, 0x90, 0xb7, 0x1b, 0xb5, 0xd6, 0x7e, 0xad, 0xb9, 0x2b, 0x05, 0xd3, 0xa8, 0x00, 0xf3, 0x9d,
-	0x83, 0x56, 0xbb, 0x2d, 0x57, 0x39, 0xb4, 0x00, 0x33, 0x0d, 0xdb, 0x6e, 0xd9, 0xa5, 0x19, 0xeb,
-	0x0f, 0x53, 0x50, 0xd4, 0x79, 0x3e, 0x0c, 0x5c, 0x39, 0x01, 0x3e, 0x81, 0x15, 0x97, 0x70, 0x1a,
-	0x12, 0x77, 0xf2, 0xba, 0x73, 0xd1, 0x75, 0x6b, 0x5d, 0xfa, 0xba, 0x9f, 0x42, 0x39, 0xf6, 0xc8,
-	0x28, 0xe0, 0x19, 0xe5, 0x67, 0x6a, 0x8b, 0xbd, 0x0b, 0x75, 0x7c, 0x08, 0x77, 0x63, 0xef, 0xc9,
-	0x4a, 0x9c, 0xbd, 0x69, 0x25, 0x2e, 0x6b, 0xff, 0x89, 0xc1, 0xb4, 0x05, 0xab, 0x09, 0xa8, 0x49,
-	0xae, 0xeb, 0x69, 0x19, 0x03, 0x4a, 0x73, 0xdd, 0xfa, 0x4f, 0x0e, 0x16, 0x5a, 0x01, 0x09, 0xd5,
-	0xf3, 0x25, 0xb3, 0x45, 0xc7, 0xb5, 0x3a, 0x95, 0xaa, 0xd5, 0x2f, 0x60, 0x91, 0xc5, 0x4e, 0xd1,
-	0x93, 0x66, 0xfa, 0x0a, 0x5a, 0x27, 0xf1, 0x2b, 0xf2, 0xa9, 0x63, 0x17, 0x13, 0x57, 0xf5, 0xf2,
-	0xf9, 0x75, 0x52, 0x1a, 0x39, 0x15, 0xe3, 0xc3, 0x6b, 0x62, 0x9c, 0x2b, 0x8e, 0x55, 0x98, 0x75,
-	0x89, 0xc0, 0xd4, 0xd3, 0x4d, 0x51, 0xaf, 0x32, 0x8a, 0x66, 0x26, 0xab, 0x68, 0x26, 0xda, 0xd4,
-	0xec, 0xb9, 0x36, 0x75, 0x0f, 0xf2, 0x02, 0x87, 0x3d, 0x22, 0x22, 0x75, 0xd4, 0x99, 0x21, 0x12,
-	0x49, 0x03, 0xab, 0x7e, 0x2d, 0x6f, 0xf3, 0x30, 0xd7, 0x6e, 0xec, 0xd7, 0x33, 0x28, 0x3b, 0x0f,
-	0xb9, 0x7a, 0x6b, 0xbf, 0x51, 0x9a, 0xb6, 0xfe, 0x6d, 0x40, 0x4e, 0xa5, 0x62, 0x05, 0x4a, 0x07,
-	0xbf, 0x69, 0x37, 0xce, 0x85, 0x40, 0xb0, 0x58, 0xb3, 0x1b, 0xdb, 0x07, 0x0d, 0xa7, 0xb6, 0x7b,
-	0xd8, 0x39, 0x68, 0xd8, 0x25, 0x43, 0xca, 0xea, 0x8d, 0xdd, 0x46, 0x4a, 0x36, 0x25, 0x65, 0x87,
-	0xed, 0x1d, 0x7b, 0xbb, 0xde, 0x70, 0xf6, 0xb6, 0x95, 0x6c, 0x1a, 0x2d, 0x41, 0x31, 0x96, 0xed,
-	0xb7, 0xea, 0x8d, 0x4e, 0x29, 0x27, 0xcd, 0xec, 0x46, 0x7b, 0xbb, 0x69, 0x27, 0xae, 0x33, 0x91,
-	0x6b, 0x3d, 0xbd, 0xc5, 0xac, 0x04, 0xa3, 0xb7, 0x95, 0x9e, 0x4e, 0xbb, 0xd5, 0xda, 0x2d, 0xcd,
-	0x49, 0xa9, 0xde, 0x78, 0x2c, 0x9d, 0xb7, 0x7e, 0x67, 0xc0, 0x4a, 0x4d, 0x75, 0x3b, 0x5d, 0x5a,
-	0x36, 0xf9, 0xed, 0x90, 0x70, 0x21, 0x5f, 0x57, 0x41, 0xc8, 0xbe, 0x26, 0x5d, 0xe1, 0x50, 0x57,
-	0xd3, 0x6a, 0x41, 0x4b, 0x9a, 0x6e, 0x26, 0xb7, 0x1e, 0xc1, 0x9c, 0xee, 0xf1, 0x8a, 0x54, 0xf9,
-	0xcd, 0x77, 0xaf, 0xea, 0x95, 0x76, 0x6c, 0x6c, 0x11, 0x58, 0xda, 0x21, 0xe2, 0xf6, 0xfb, 0xab,
-	0x07, 0xa1, 0x1e, 0xa6, 0xae, 0x82, 0xa0, 0x1e, 0x84, 0xd1, 0x14, 0x75, 0xad, 0x6f, 0x0d, 0x58,
-	0x89, 0x1a, 0xc7, 0xdb, 0xde, 0x0a, 0x3d, 0x86, 0xd9, 0xa1, 0xda, 0x49, 0xbf, 0x63, 0xac, 0xab,
-	0x12, 0x11, 0x61, 0xb2, 0xb5, 0x87, 0xd5, 0x87, 0x95, 0x3a, 0xf1, 0xc8, 0xdb, 0x47, 0x69, 0xbd,
-	0x80, 0xe5, 0x5d, 0xca, 0xe3, 0xc4, 0xf3, 0x1f, 0xbe, 0x91, 0x35, 0x84, 0x95, 0xc9, 0x48, 0x3c,
-	0x60, 0x3e, 0x27, 0xe8, 0x53, 0x98, 0xd7, 0xdb, 0x71, 0xd3, 0x50, 0x9f, 0x35, 0x57, 0x53, 0x22,
-	0xb1, 0x46, 0x1f, 0x40, 0x71, 0x40, 0x39, 0x97, 0xdd, 0x59, 0xee, 0xc0, 0xcd, 0x29, 0x35, 0xaf,
-	0x0a, 0x5a, 0xf8, 0x95, 0x94, 0x59, 0x27, 0xb0, 0xbc, 0x43, 0x44, 0xd2, 0x60, 0x6e, 0x91, 0x29,
-	0xf9, 0x89, 0x96, 0xb4, 0xc5, 0x24, 0x57, 0xf9, 0x44, 0xd6, 0x74, 0xad, 0x2f, 0xe0, 0xae, 0x3c,
-	0x63, 0xb2, 0xdb, 0x6d, 0xf2, 0x75, 0x06, 0xab, 0xe7, 0x63, 0xe9, 0x8c, 0x7d, 0x06, 0x90, 0x6c,
-	0x1a, 0xe7, 0xec, 0xbd, 0xab, 0xfb, 0xaa, 0x9d, 0xf2, 0xb8, 0x59, 0xde, 0xbe, 0x84, 0xd5, 0x1d,
-	0x22, 0xe4, 0x54, 0x23, 0xa1, 0x1e, 0x4c, 0x3f, 0xfc, 0x2c, 0x23, 0x28, 0xa4, 0x23, 0xc9, 0x17,
-	0x9f, 0x4b, 0x8e, 0xf1, 0xd0, 0x13, 0x17, 0x5e, 0x7c, 0x51, 0xbc, 0xbb, 0x5a, 0x7d, 0xee, 0xc5,
-	0x57, 0x81, 0xe5, 0x11, 0xf6, 0xe8, 0xe4, 0x28, 0x8f, 0x3f, 0x96, 0x97, 0x94, 0x2a, 0x35, 0xc9,
-	0xf9, 0xe6, 0x5f, 0x01, 0x16, 0x75, 0x88, 0x3d, 0xec, 0xe3, 0x1e, 0x09, 0xd1, 0xdf, 0x0c, 0x28,
-	0xa4, 0x79, 0x88, 0xd6, 0x33, 0x33, 0x97, 0x41, 0xfa, 0xf2, 0x47, 0x37, 0xb0, 0x8c, 0xae, 0xc8,
-	0xfa, 0xe5, 0xef, 0xbf, 0xfb, 0xdf, 0x9f, 0xa6, 0x36, 0x50, 0xb5, 0x3a, 0xda, 0xa8, 0xea, 0xdc,
-	0xf0, 0xea, 0xeb, 0x71, 0xde, 0xce, 0xaa, 0x2a, 0xf5, 0xd5, 0xd7, 0xf2, 0xcf, 0x59, 0x35, 0xe1,
-	0xf4, 0x5f, 0x0c, 0x80, 0x71, 0xa3, 0x43, 0xd9, 0x9f, 0x9c, 0x17, 0x3a, 0x61, 0xf9, 0xca, 0x92,
-	0xb1, 0xea, 0x0a, 0xcd, 0x67, 0xe8, 0xe9, 0x1b, 0xa2, 0xa9, 0xbe, 0x1e, 0xb7, 0x86, 0x33, 0xf4,
-	0x67, 0x03, 0x8a, 0x13, 0x63, 0x00, 0x65, 0x27, 0x24, 0x6b, 0x54, 0x94, 0xaf, 0xe1, 0xa7, 0xf5,
-	0x58, 0x41, 0xdc, 0xb2, 0xde, 0x34, 0x61, 0x8f, 0x8d, 0xfb, 0xe8, 0x5f, 0x06, 0x14, 0x27, 0x9a,
-	0xf6, 0x25, 0xc0, 0xb2, 0x1a, 0xfb, 0xb5, 0xc0, 0x76, 0x14, 0xb0, 0xed, 0xf2, 0xad, 0x72, 0x27,
-	0x51, 0xfe, 0xc3, 0x80, 0xe2, 0x44, 0xd3, 0xbe, 0x04, 0x65, 0x56, 0x63, 0xbf, 0x16, 0xa5, 0xbe,
-	0xe1, 0xfb, 0xb7, 0xbb, 0xe1, 0x6f, 0x0d, 0x58, 0x9c, 0xec, 0x39, 0xe8, 0xfe, 0xa5, 0x9c, 0xbf,
-	0xd0, 0xe4, 0xca, 0x1f, 0xdf, 0xc8, 0x56, 0x57, 0xc8, 0xaf, 0x14, 0xe2, 0x87, 0x68, 0xe3, 0x86,
-	0x88, 0x53, 0xfd, 0xeb, 0x9f, 0x06, 0x14, 0xd2, 0x3d, 0xfd, 0x92, 0x12, 0xce, 0x68, 0xfb, 0xd7,
-	0xe6, 0xf1, 0x85, 0x42, 0xf5, 0x1c, 0x3d, 0x7b, 0x63, 0x54, 0xd5, 0xd7, 0xe9, 0xe1, 0x70, 0x86,
-	0xfe, 0x6e, 0xc0, 0x9d, 0x73, 0x0d, 0x14, 0x7d, 0x7c, 0x19, 0xce, 0x8c, 0x36, 0x5b, 0xce, 0xfe,
-	0x52, 0x48, 0x5b, 0x5a, 0x4f, 0x14, 0xda, 0x5f, 0xa0, 0x87, 0x37, 0x44, 0xcb, 0x95, 0x73, 0xf4,
-	0x3d, 0xf2, 0xdc, 0x87, 0x77, 0xba, 0x6c, 0x90, 0xb5, 0xc9, 0xf3, 0x65, 0xcd, 0x3e, 0xfd, 0x4d,
-	0xd3, 0x0e, 0x99, 0x60, 0x6d, 0xe3, 0xab, 0xa7, 0xda, 0xb6, 0xc7, 0x3c, 0xec, 0xf7, 0x2a, 0x2c,
-	0xec, 0x55, 0x7b, 0xc4, 0x57, 0xff, 0x13, 0xad, 0x46, 0x2a, 0x1c, 0x50, 0x3e, 0xf1, 0x4f, 0xd7,
-	0x27, 0xc9, 0xe2, 0x68, 0x56, 0x19, 0x3e, 0xfc, 0x3e, 0x00, 0x00, 0xff, 0xff, 0x31, 0x9e, 0x30,
-	0x44, 0x9c, 0x15, 0x00, 0x00,
+	// 2838 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xcb, 0x6f, 0xe3, 0xd6,
+	0xd5, 0xff, 0x68, 0xcb, 0xb2, 0x74, 0xf4, 0xb0, 0x7c, 0xfd, 0x18, 0x42, 0x99, 0xc9, 0x38, 0xcc,
+	0x63, 0x26, 0xce, 0x17, 0x2b, 0xf3, 0xc8, 0xcb, 0x33, 0x0d, 0xa2, 0x91, 0x15, 0x8f, 0x32, 0x7e,
+	0xa8, 0x94, 0x9d, 0xa0, 0x01, 0x5a, 0x82, 0x16, 0xaf, 0x25, 0xc6, 0x14, 0xc9, 0xf0, 0x52, 0x4e,
+	0x3c, 0x03, 0x2f, 0x5a, 0x34, 0x40, 0x81, 0x2e, 0x5b, 0x14, 0x5d, 0x14, 0x45, 0x91, 0xa6, 0x9b,
+	0x6e, 0xba, 0x29, 0xba, 0xe9, 0xb6, 0x8b, 0xee, 0xb3, 0x28, 0x5a, 0xa0, 0xe8, 0xa6, 0xe8, 0xb6,
+	0xff, 0x42, 0x71, 0x1f, 0xa4, 0x48, 0x99, 0xb2, 0xec, 0x78, 0xdc, 0x74, 0x35, 0xba, 0xe7, 0x71,
+	0xef, 0xb9, 0xe7, 0xf1, 0xbb, 0xe7, 0xd0, 0x03, 0x2f, 0x77, 0x1c, 0xa7, 0x63, 0xe1, 0x4a, 0xdb,
+	0xb1, 0x7d, 0xdd, 0xb4, 0xb1, 0x57, 0x39, 0xbc, 0x55, 0x69, 0x5b, 0x7d, 0xe2, 0x63, 0x4f, 0x23,
+	0xd8, 0x3b, 0x34, 0xdb, 0x78, 0xc5, 0xf5, 0x1c, 0xdf, 0x41, 0x73, 0x5c, 0x74, 0x25, 0x14, 0x5d,
+	0x39, 0xbc, 0x55, 0xbe, 0x2a, 0xf4, 0x75, 0xd7, 0xac, 0xe8, 0xb6, 0xed, 0xf8, 0xba, 0x6f, 0x3a,
+	0x36, 0xe1, 0x2a, 0xe5, 0x67, 0x04, 0x97, 0xad, 0xf6, 0xfa, 0xfb, 0x15, 0xdc, 0x73, 0xfd, 0x23,
+	0xce, 0x54, 0xbe, 0x48, 0x01, 0x6c, 0x39, 0x06, 0xae, 0x39, 0xf6, 0xbe, 0xd9, 0x41, 0xcf, 0x41,
+	0xbe, 0xa7, 0xb7, 0xbb, 0xa6, 0x8d, 0x35, 0xff, 0xc8, 0xc5, 0xb2, 0xb4, 0x24, 0xdd, 0xcc, 0xaa,
+	0x39, 0x41, 0xdb, 0x39, 0x72, 0x31, 0x5a, 0x82, 0xbc, 0x61, 0x92, 0x03, 0x8d, 0x98, 0x8f, 0xb1,
+	0xd6, 0xd9, 0x93, 0x27, 0x96, 0xa4, 0x9b, 0x53, 0x2a, 0x50, 0x5a, 0xcb, 0x7c, 0x8c, 0xd7, 0xf7,
+	0xe8, 0x26, 0x8e, 0xde, 0xf7, 0xbb, 0x1a, 0x69, 0x3b, 0x2e, 0x26, 0xf2, 0xe4, 0xd2, 0x24, 0xdd,
+	0x84, 0xd1, 0x5a, 0x8c, 0x84, 0x6e, 0xc0, 0x8c, 0xb8, 0x97, 0xa6, 0xb7, 0xdb, 0x4e, 0xdf, 0xf6,
+	0xe5, 0x2c, 0x3b, 0xaa, 0x28, 0xc8, 0x55, 0x4e, 0x45, 0x0d, 0xc8, 0xf4, 0xb0, 0xaf, 0x1b, 0xba,
+	0xaf, 0xcb, 0xa9, 0xa5, 0xc9, 0x9b, 0xb9, 0xdb, 0xaf, 0xae, 0x24, 0xb8, 0x60, 0x65, 0x70, 0x87,
+	0x95, 0x4d, 0x21, 0x5f, 0xb7, 0x7d, 0xef, 0x48, 0x0d, 0xd5, 0xd1, 0x35, 0x00, 0xb3, 0xa7, 0x77,
+	0xc4, 0xcd, 0xa6, 0xd8, 0x71, 0x59, 0x46, 0x61, 0xf7, 0xaa, 0x41, 0xda, 0xd2, 0xf7, 0xb0, 0x45,
+	0xe4, 0x34, 0x3b, 0xe7, 0x95, 0x71, 0xe7, 0x6c, 0x30, 0x69, 0x7e, 0x8a, 0x50, 0x45, 0x2f, 0xc1,
+	0x8c, 0xe5, 0xb4, 0x75, 0x4b, 0x23, 0xc4, 0xd0, 0xf8, 0xbd, 0xa6, 0x99, 0x7f, 0x0a, 0x8c, 0xdc,
+	0x22, 0x46, 0x8d, 0x5d, 0x0b, 0x41, 0xca, 0xd7, 0x3b, 0x44, 0xce, 0x30, 0xd7, 0xb0, 0xdf, 0x68,
+	0x09, 0x72, 0xae, 0x87, 0x69, 0x70, 0xcc, 0x3d, 0x0b, 0xcb, 0xb0, 0x24, 0xdd, 0xcc, 0xa8, 0x51,
+	0x52, 0xf9, 0x1e, 0x14, 0x62, 0x97, 0x43, 0x25, 0x98, 0x3c, 0xc0, 0x47, 0x22, 0x4a, 0xf4, 0x27,
+	0x9a, 0x87, 0xa9, 0x43, 0xdd, 0xea, 0x63, 0x16, 0x96, 0xac, 0xca, 0x17, 0xab, 0x13, 0x6f, 0x49,
+	0xe5, 0xb7, 0x21, 0x17, 0xb1, 0xf8, 0x3c, 0xaa, 0xca, 0x9f, 0x25, 0x80, 0x4d, 0x9d, 0x66, 0x63,
+	0xb5, 0xef, 0x77, 0x51, 0x19, 0x32, 0x7d, 0x82, 0x3d, 0x5b, 0xef, 0x05, 0x09, 0x12, 0xae, 0x29,
+	0xcf, 0xd5, 0x09, 0xf9, 0xd4, 0xf1, 0x0c, 0xb1, 0x4f, 0xb8, 0x46, 0x77, 0x61, 0x31, 0x48, 0xea,
+	0xb6, 0xae, 0xb5, 0xb1, 0xe7, 0x9b, 0xfb, 0x66, 0x5b, 0xf7, 0xb1, 0x6c, 0x30, 0xc9, 0x79, 0xc1,
+	0xad, 0xe9, 0xb5, 0x01, 0x0f, 0xbd, 0x0a, 0xa8, 0x6d, 0x99, 0xd8, 0xf6, 0x63, 0x1a, 0x98, 0x69,
+	0xcc, 0x72, 0x4e, 0x54, 0xfc, 0x1a, 0x80, 0x10, 0xa7, 0xd7, 0xdb, 0xe7, 0x51, 0xe6, 0x94, 0x47,
+	0xf8, 0x48, 0xf9, 0x4a, 0x82, 0x7c, 0xd5, 0x30, 0x1c, 0x9b, 0x88, 0x8c, 0xff, 0x00, 0xe6, 0xba,
+	0xbe, 0xef, 0x6a, 0x96, 0xa3, 0x1b, 0xda, 0x9e, 0x6e, 0xe9, 0x76, 0xdb, 0xb4, 0x3b, 0xec, 0x5e,
+	0xb9, 0xdb, 0x2f, 0x25, 0xe6, 0xc0, 0x43, 0xdf, 0x77, 0x37, 0x1c, 0xdd, 0x78, 0x10, 0x48, 0xab,
+	0xb3, 0xdd, 0x61, 0x12, 0x3a, 0x80, 0x72, 0xd7, 0xf1, 0xcc, 0xc7, 0x54, 0xd1, 0xd2, 0x5c, 0xc7,
+	0xd0, 0xf4, 0xbe, 0xef, 0x90, 0xb6, 0x6e, 0xd1, 0xed, 0x27, 0xd8, 0xf6, 0xc9, 0xa9, 0xfc, 0x30,
+	0x54, 0x6b, 0x3a, 0x46, 0x75, 0xa0, 0xa4, 0xca, 0xdd, 0x11, 0x1c, 0xa5, 0x02, 0xb3, 0x27, 0x8c,
+	0xa2, 0xa1, 0x30, 0x4c, 0xa2, 0xef, 0x59, 0xd8, 0x60, 0xd7, 0xc9, 0xa8, 0xe1, 0x5a, 0x79, 0x03,
+	0xe4, 0x51, 0xc7, 0x9c, 0xaa, 0xf7, 0x27, 0x80, 0xe9, 0x1a, 0x8f, 0x12, 0xcd, 0xe1, 0x48, 0x0a,
+	0xb0, 0xdf, 0x34, 0x87, 0x0d, 0x4c, 0xda, 0x9e, 0xe9, 0x52, 0x04, 0x12, 0x19, 0x10, 0x25, 0xa1,
+	0xff, 0x07, 0x64, 0xda, 0xa6, 0x6f, 0xea, 0x96, 0x66, 0x3b, 0x06, 0x16, 0x45, 0x32, 0xc9, 0x8a,
+	0xa4, 0x24, 0x38, 0xbc, 0xc8, 0x68, 0x9d, 0xbc, 0x0b, 0x39, 0x21, 0x45, 0x83, 0x25, 0xa7, 0x98,
+	0xdb, 0xae, 0x8f, 0xa9, 0x4c, 0x15, 0xec, 0x01, 0xa2, 0xbd, 0x0b, 0xb9, 0x1e, 0x4b, 0x5d, 0xea,
+	0xff, 0x2e, 0x2b, 0xfb, 0x51, 0x3b, 0x0c, 0x52, 0x5c, 0x85, 0xde, 0x20, 0xdd, 0x6f, 0xd0, 0x9a,
+	0xee, 0x74, 0x4c, 0xbb, 0x13, 0x60, 0xb1, 0x9c, 0xe6, 0x58, 0x25, 0xc8, 0x2d, 0x4e, 0xa5, 0x99,
+	0xda, 0x73, 0x6c, 0xd3, 0x77, 0xbc, 0xa8, 0xec, 0x34, 0xcf, 0xd4, 0x01, 0x27, 0x10, 0x97, 0x61,
+	0xda, 0xc6, 0xfe, 0xa7, 0x8e, 0x77, 0x20, 0x67, 0x98, 0x4c, 0xb0, 0x44, 0xcb, 0x30, 0x1b, 0x14,
+	0x8a, 0xe9, 0x1e, 0xde, 0xd5, 0xda, 0xa6, 0xe1, 0x09, 0x7c, 0x9c, 0x11, 0x8c, 0x86, 0x7b, 0x78,
+	0xb7, 0x66, 0x1a, 0x1e, 0x7a, 0x0f, 0x0a, 0x3a, 0xcb, 0xe7, 0xc0, 0x47, 0xc0, 0x6e, 0xf8, 0x5c,
+	0xe2, 0x0d, 0xa3, 0x99, 0xaf, 0xe6, 0xf5, 0x68, 0x1d, 0x3c, 0x0b, 0x40, 0xfa, 0x7b, 0x81, 0x41,
+	0x39, 0x76, 0x58, 0x84, 0x82, 0xee, 0x03, 0xf3, 0xaa, 0xe6, 0x3a, 0x8e, 0x45, 0xe4, 0x3c, 0x83,
+	0xc8, 0x6b, 0x23, 0x03, 0xd1, 0x74, 0x1c, 0x4b, 0xcd, 0xda, 0xe2, 0x17, 0x41, 0x57, 0x21, 0x4b,
+	0x01, 0x90, 0x3d, 0x4b, 0x72, 0x81, 0x81, 0xde, 0x80, 0x80, 0xde, 0x80, 0x2b, 0xd8, 0xa6, 0x09,
+	0xa6, 0x1d, 0xf4, 0xf7, 0xb0, 0x67, 0x63, 0x1f, 0x13, 0x4d, 0xb7, 0xdc, 0xae, 0x2e, 0x17, 0x59,
+	0x02, 0x2e, 0x70, 0xf6, 0xa3, 0x90, 0x5b, 0xa5, 0x4c, 0xf4, 0x0c, 0x64, 0x09, 0xb6, 0xf6, 0x35,
+	0xcb, 0xb4, 0x0f, 0x04, 0x86, 0x64, 0x28, 0x61, 0xc3, 0xb4, 0x0f, 0x68, 0x7a, 0x3e, 0x76, 0xec,
+	0x00, 0x29, 0xd8, 0x6f, 0x9a, 0xda, 0xd8, 0x36, 0x5c, 0xc7, 0xb4, 0x7d, 0x01, 0x0d, 0xe1, 0x9a,
+	0x1a, 0x11, 0x24, 0x66, 0xe0, 0xfc, 0x43, 0xec, 0x11, 0x9a, 0xc6, 0x1d, 0x26, 0xba, 0x20, 0xd8,
+	0x22, 0xff, 0x3f, 0xe0, 0x4c, 0x86, 0x6a, 0x7d, 0xcf, 0xa3, 0x88, 0x23, 0x12, 0x2d, 0x50, 0xeb,
+	0x0a, 0x54, 0xe3, 0x5c, 0x9e, 0x5d, 0x81, 0xd6, 0x6b, 0x10, 0xd0, 0x79, 0x19, 0x04, 0x3a, 0x26,
+	0xd3, 0x41, 0x82, 0x47, 0x5d, 0x19, 0x68, 0x5c, 0x87, 0x5c, 0xdb, 0xc3, 0xba, 0x8f, 0x35, 0xdf,
+	0xec, 0x61, 0xf9, 0x63, 0x1e, 0x21, 0x4e, 0xda, 0x31, 0x7b, 0x18, 0xdd, 0x83, 0x34, 0xf1, 0x75,
+	0xbf, 0x4f, 0xe4, 0x83, 0x25, 0xe9, 0x66, 0xf1, 0xf6, 0xf3, 0x89, 0xd1, 0x11, 0xd6, 0xaf, 0xb4,
+	0x98, 0xa8, 0x2a, 0x54, 0xd0, 0x8b, 0x50, 0xe4, 0xbf, 0xb4, 0x1e, 0x26, 0x44, 0xef, 0x60, 0xd9,
+	0x62, 0x07, 0x14, 0x38, 0x75, 0x93, 0x13, 0xd1, 0xab, 0x30, 0xc7, 0xcc, 0x0d, 0xd3, 0x92, 0xb5,
+	0x01, 0x72, 0x8f, 0x97, 0x2f, 0x65, 0x05, 0x89, 0x49, 0x7b, 0x01, 0x5a, 0xec, 0xa2, 0x0c, 0x48,
+	0x24, 0x93, 0x6d, 0xb6, 0x73, 0x29, 0xe0, 0x84, 0xa9, 0xbc, 0x02, 0x73, 0xa6, 0x4d, 0x7c, 0xdd,
+	0x6e, 0x63, 0xad, 0xe3, 0x39, 0x7d, 0x57, 0xeb, 0x7b, 0x16, 0x91, 0x1d, 0x96, 0x2e, 0xb3, 0x01,
+	0x6b, 0x9d, 0x72, 0x76, 0x3d, 0x8b, 0xd0, 0xdd, 0x63, 0x3e, 0xe4, 0x50, 0xe2, 0x72, 0x5b, 0x22,
+	0x1e, 0xe4, 0x50, 0x72, 0x1d, 0x72, 0xf8, 0x33, 0xd7, 0xf4, 0x84, 0xff, 0x3e, 0xe1, 0xfe, 0xe3,
+	0x24, 0xea, 0x3f, 0xc5, 0x84, 0x34, 0x77, 0x0a, 0x5a, 0x04, 0xd4, 0xda, 0xa9, 0xee, 0xec, 0xb6,
+	0xb4, 0xdd, 0xad, 0x56, 0xb3, 0x5e, 0x6b, 0xbc, 0xd7, 0xa8, 0xaf, 0x95, 0xfe, 0x0f, 0x95, 0x20,
+	0xdf, 0x54, 0xb7, 0x3f, 0x68, 0xb4, 0x1a, 0xdb, 0x5b, 0x8d, 0xad, 0xf5, 0x92, 0x84, 0x72, 0x30,
+	0xad, 0xee, 0x6e, 0xb1, 0xc5, 0x04, 0x9a, 0x81, 0x9c, 0x5a, 0xaf, 0x6d, 0x6f, 0xd5, 0x1a, 0x1b,
+	0x94, 0x30, 0x89, 0xf2, 0x90, 0x69, 0xed, 0x6c, 0x37, 0x9b, 0x74, 0x95, 0x42, 0x59, 0x98, 0xaa,
+	0xab, 0xea, 0xb6, 0x5a, 0x9a, 0x52, 0x3e, 0x4f, 0x41, 0x41, 0x04, 0x62, 0xd7, 0x35, 0xe8, 0xb3,
+	0xf5, 0x1a, 0xcc, 0x1b, 0x98, 0x98, 0x1e, 0x36, 0xe2, 0xf9, 0x90, 0xe2, 0xf9, 0x20, 0x78, 0xd1,
+	0x7c, 0xb8, 0x0f, 0xe5, 0x40, 0x23, 0x01, 0x75, 0x78, 0x7b, 0x23, 0x0b, 0x89, 0xcd, 0x13, 0xe0,
+	0xb3, 0x0b, 0x0b, 0x81, 0x76, 0x1c, 0x3e, 0xd2, 0x67, 0x85, 0x8f, 0x39, 0xa1, 0x1f, 0x7b, 0x4d,
+	0x2b, 0x43, 0xd7, 0xa0, 0x68, 0xa1, 0x99, 0x46, 0x00, 0x82, 0x91, 0x6b, 0x50, 0x5c, 0x68, 0x18,
+	0x34, 0x86, 0x81, 0x42, 0xa4, 0x39, 0xe3, 0x78, 0x58, 0x12, 0x9c, 0x46, 0xd8, 0xa3, 0x1d, 0xc0,
+	0xb5, 0x93, 0xdb, 0x47, 0xdf, 0xd5, 0x2c, 0xb3, 0xfe, 0xe6, 0xa9, 0xb8, 0x14, 0x7d, 0x52, 0xcb,
+	0x43, 0x16, 0x45, 0xdf, 0xc1, 0x57, 0x20, 0xb0, 0x57, 0x1b, 0x60, 0x17, 0xb0, 0x64, 0x0c, 0x2c,
+	0xdb, 0x08, 0x21, 0xec, 0x2e, 0x2c, 0x86, 0xd1, 0x88, 0xa3, 0x80, 0xe8, 0x6d, 0x82, 0x48, 0x44,
+	0x51, 0x40, 0xf9, 0x77, 0x0a, 0xb2, 0xdb, 0x2e, 0xf6, 0xd8, 0x26, 0x89, 0x0f, 0x6a, 0x80, 0x62,
+	0x13, 0x11, 0x14, 0x7b, 0x1f, 0x8a, 0x4e, 0xa0, 0xc4, 0xfd, 0x35, 0x79, 0x4a, 0xc1, 0x87, 0xfb,
+	0xaf, 0x50, 0x17, 0xaa, 0x85, 0x50, 0x95, 0x79, 0xf4, 0x5b, 0x21, 0x68, 0xa4, 0xd8, 0x1e, 0x2f,
+	0x8e, 0xd9, 0x63, 0x08, 0x36, 0x16, 0x21, 0x6d, 0x60, 0x5f, 0x37, 0x2d, 0x11, 0x32, 0xb1, 0x4a,
+	0x80, 0x93, 0xa9, 0x24, 0x38, 0x89, 0x01, 0x78, 0x7a, 0x08, 0xc0, 0xaf, 0x43, 0xce, 0xd7, 0xbd,
+	0x0e, 0xf6, 0x39, 0x9b, 0xa7, 0x10, 0x70, 0x12, 0x15, 0x50, 0xd4, 0xb1, 0x05, 0x9b, 0x83, 0xe9,
+	0x66, 0x7d, 0x6b, 0x2d, 0xa1, 0x56, 0x33, 0x90, 0x5a, 0xdb, 0xde, 0xaa, 0xf3, 0x22, 0xad, 0x3e,
+	0xd8, 0x56, 0x77, 0x58, 0x91, 0x2a, 0x7f, 0x97, 0x20, 0xc5, 0x1c, 0x33, 0x0f, 0xa5, 0x9d, 0xef,
+	0x34, 0xeb, 0x43, 0x1b, 0x22, 0x28, 0xd6, 0xd4, 0x7a, 0x75, 0xa7, 0xae, 0xd5, 0x36, 0x76, 0x5b,
+	0x3b, 0x75, 0xb5, 0x24, 0x51, 0xda, 0x5a, 0x7d, 0xa3, 0x1e, 0xa1, 0x4d, 0x50, 0xda, 0x6e, 0x73,
+	0x5d, 0xad, 0xae, 0xd5, 0xb5, 0xcd, 0x2a, 0xa3, 0x4d, 0xa2, 0x59, 0x28, 0x04, 0xb4, 0xad, 0xed,
+	0xb5, 0x7a, 0xab, 0x94, 0xa2, 0x62, 0x6a, 0xbd, 0x59, 0x6d, 0xa8, 0xa1, 0xea, 0x14, 0x57, 0x5d,
+	0x8b, 0x1e, 0x91, 0xa6, 0xc6, 0x88, 0x63, 0xa9, 0xa6, 0xd6, 0xdc, 0xde, 0xde, 0x28, 0x4d, 0x53,
+	0xaa, 0x38, 0x78, 0x40, 0xcd, 0xa0, 0xab, 0x20, 0xb7, 0xea, 0x3b, 0x03, 0x92, 0xb6, 0x59, 0xdd,
+	0xaa, 0xae, 0xd7, 0x37, 0xeb, 0x5b, 0x3b, 0xa5, 0xac, 0xf2, 0x7d, 0x09, 0xe6, 0x6b, 0xec, 0xcd,
+	0x10, 0xf8, 0xa3, 0xe2, 0x4f, 0xfa, 0x98, 0xf8, 0xb4, 0x6f, 0x76, 0x3d, 0xe7, 0x63, 0xdc, 0xf6,
+	0x69, 0xbd, 0xf2, 0x14, 0xcc, 0x0a, 0x4a, 0xc3, 0x48, 0xcc, 0xc3, 0x37, 0x60, 0x5a, 0xbc, 0x94,
+	0x2c, 0x01, 0x73, 0xb7, 0xaf, 0x9e, 0xf6, 0xe2, 0xa8, 0x81, 0xb0, 0x82, 0x61, 0x76, 0x1d, 0xfb,
+	0x17, 0x3f, 0x9f, 0xb5, 0xfa, 0xa2, 0x4d, 0x32, 0x98, 0x09, 0xac, 0xd5, 0xe7, 0xfd, 0x91, 0xa1,
+	0x7c, 0x29, 0xc1, 0x3c, 0x47, 0xd7, 0xcb, 0x3e, 0x0a, 0xad, 0x42, 0xba, 0xcf, 0x4e, 0x12, 0x1d,
+	0xaa, 0x72, 0x9a, 0x23, 0xb8, 0x4d, 0xaa, 0xd0, 0x50, 0xba, 0x30, 0xbf, 0x86, 0x2d, 0x7c, 0xf9,
+	0x56, 0x2a, 0x0f, 0x61, 0x6e, 0xc3, 0x24, 0x81, 0xe3, 0xc9, 0xd7, 0x3f, 0x48, 0xe9, 0xc3, 0x7c,
+	0x7c, 0x27, 0xe2, 0x3a, 0x36, 0xc1, 0xe8, 0x2d, 0xc8, 0x88, 0xe3, 0x88, 0x2c, 0xb1, 0x16, 0xf1,
+	0xf4, 0x94, 0x08, 0xa5, 0xd1, 0xf3, 0x50, 0xe8, 0x99, 0x84, 0xd0, 0x27, 0x8c, 0x9e, 0x40, 0xe4,
+	0x09, 0x06, 0xb4, 0x79, 0x41, 0xfc, 0x88, 0xd2, 0x94, 0x03, 0x98, 0x5b, 0xc7, 0x7e, 0x08, 0x46,
+	0x17, 0xf0, 0xd4, 0x73, 0x90, 0x1f, 0x40, 0x68, 0xe8, 0xab, 0x5c, 0x48, 0x6b, 0x18, 0xca, 0xfb,
+	0xb0, 0x40, 0xef, 0x18, 0x9e, 0x76, 0x11, 0x7f, 0xd9, 0xb0, 0x58, 0xa3, 0xbd, 0x8b, 0xf5, 0x5f,
+	0xb2, 0xfd, 0x18, 0x16, 0x87, 0x6d, 0x17, 0x11, 0x7a, 0x07, 0x20, 0x14, 0x0c, 0x62, 0xf4, 0xec,
+	0xe9, 0x98, 0xaf, 0x46, 0x34, 0xce, 0x16, 0xa7, 0x47, 0xb0, 0xb8, 0x8e, 0x7d, 0xda, 0x6a, 0x60,
+	0x4f, 0x74, 0x0b, 0x5f, 0xdf, 0x77, 0x3f, 0x9c, 0x80, 0x7c, 0x74, 0x2b, 0xda, 0xa8, 0x1b, 0x78,
+	0x5f, 0xef, 0x5b, 0xfe, 0x89, 0x46, 0x9d, 0x6f, 0xb8, 0x20, 0xd8, 0x43, 0x8d, 0xfa, 0x0a, 0xcc,
+	0x1d, 0xea, 0x96, 0x19, 0x6f, 0xb0, 0x82, 0xaf, 0x53, 0xb3, 0x8c, 0x15, 0xe9, 0xaf, 0x08, 0x6f,
+	0x4d, 0xf8, 0x39, 0x91, 0xd6, 0x24, 0x15, 0xb4, 0x26, 0x8c, 0x33, 0x68, 0x4d, 0x96, 0x81, 0x6f,
+	0x11, 0x91, 0x25, 0xf2, 0x14, 0xdb, 0x7b, 0x86, 0x31, 0x42, 0x51, 0x82, 0x6e, 0xc3, 0x02, 0x97,
+	0x8d, 0xb7, 0x0a, 0xfc, 0xcb, 0x53, 0x56, 0xe5, 0x66, 0xc6, 0x3a, 0x05, 0xa2, 0xfc, 0x46, 0x82,
+	0x05, 0x0e, 0xdc, 0xe1, 0x7c, 0x75, 0x89, 0x70, 0x96, 0x0d, 0xdb, 0x2b, 0x81, 0x68, 0x63, 0x46,
+	0xbd, 0x4c, 0x30, 0xea, 0x29, 0x3f, 0x96, 0x60, 0x81, 0xe3, 0xd9, 0xe5, 0xdb, 0xb9, 0x04, 0xf9,
+	0x58, 0x97, 0xc9, 0x63, 0x03, 0x76, 0xd8, 0x5e, 0x52, 0x70, 0xa5, 0x85, 0x10, 0x98, 0x42, 0x2e,
+	0x0f, 0x5c, 0x7f, 0x24, 0x01, 0x5a, 0xc7, 0xfe, 0xff, 0xc2, 0xa5, 0xff, 0x95, 0x82, 0x4c, 0x60,
+	0x47, 0x62, 0x53, 0xf9, 0x26, 0xa4, 0x45, 0xb7, 0x3f, 0x71, 0xb6, 0x0f, 0x2a, 0x42, 0xfc, 0x9c,
+	0x1f, 0x6f, 0x4e, 0x1d, 0xcf, 0x65, 0x98, 0x0e, 0xaa, 0x96, 0x4f, 0xe8, 0xc1, 0x72, 0xd4, 0x18,
+	0xb8, 0x3f, 0x6a, 0x0c, 0xbc, 0x1f, 0xb6, 0xb0, 0x1d, 0xd6, 0xc2, 0xbe, 0x70, 0x6a, 0xaa, 0x8e,
+	0x1f, 0x7c, 0xbb, 0x49, 0x9d, 0xea, 0xfb, 0x90, 0x8b, 0xce, 0x19, 0xa9, 0x73, 0xce, 0x19, 0x51,
+	0x65, 0x54, 0x03, 0xe8, 0xe9, 0xb6, 0xde, 0xc1, 0x3d, 0x6c, 0xfb, 0xe2, 0x8b, 0xd4, 0xf3, 0x23,
+	0xb7, 0xda, 0x0c, 0x45, 0xd5, 0x88, 0x1a, 0x6d, 0xe4, 0x2e, 0x38, 0xae, 0x2e, 0x02, 0x12, 0x0b,
+	0xed, 0xc3, 0xc6, 0xce, 0x43, 0x8d, 0x0f, 0xa7, 0x93, 0xc3, 0x63, 0x6c, 0x2a, 0x36, 0xc6, 0x4e,
+	0x0d, 0xc6, 0xd8, 0xb4, 0xf2, 0xb9, 0x04, 0xc5, 0xb8, 0x89, 0xf4, 0x71, 0xa2, 0x57, 0xd5, 0xfa,
+	0x6e, 0xc7, 0xd3, 0x0d, 0x2c, 0x3e, 0x20, 0xb2, 0xeb, 0xef, 0x72, 0x12, 0x6a, 0xc2, 0x8c, 0xe0,
+	0x6a, 0x8e, 0x1b, 0x4c, 0x55, 0xd4, 0x07, 0x37, 0x92, 0x87, 0xce, 0x81, 0xea, 0x36, 0x17, 0x57,
+	0x8b, 0xfd, 0xd8, 0x5a, 0xe9, 0x01, 0x3a, 0x29, 0x85, 0x5e, 0x87, 0x2b, 0x51, 0x53, 0x34, 0xe2,
+	0xeb, 0x9e, 0xcf, 0x87, 0x7f, 0x5e, 0x0c, 0xf3, 0x11, 0xab, 0x5a, 0x94, 0xc9, 0x3e, 0xa3, 0x8c,
+	0xfd, 0x84, 0xa9, 0xfc, 0x45, 0x82, 0xab, 0xad, 0x41, 0xa9, 0x47, 0x02, 0xf4, 0xcd, 0x15, 0xfd,
+	0xd3, 0x49, 0xaa, 0x9f, 0x4a, 0xf0, 0xac, 0xea, 0x58, 0xd6, 0x9e, 0xde, 0x3e, 0x08, 0xae, 0x27,
+	0x1c, 0xf4, 0x4d, 0x02, 0xda, 0x2e, 0x6f, 0xc5, 0x22, 0x28, 0x2e, 0xba, 0x99, 0xf8, 0x47, 0x49,
+	0xe9, 0x7c, 0x1f, 0x25, 0x95, 0x27, 0x30, 0x97, 0x34, 0xf7, 0xcb, 0x30, 0xcd, 0x3f, 0x37, 0x06,
+	0x9f, 0xbf, 0x83, 0x25, 0x7a, 0x01, 0x8a, 0x3d, 0xd3, 0x8e, 0x42, 0x1f, 0xff, 0xe3, 0x57, 0xbe,
+	0x67, 0xda, 0x03, 0xd8, 0xa3, 0x52, 0xfa, 0x67, 0x27, 0x01, 0x32, 0xdf, 0xd3, 0x3f, 0x0b, 0xa5,
+	0x6e, 0xff, 0x63, 0x1e, 0x8a, 0xa2, 0x41, 0xe1, 0xc1, 0xf0, 0xd0, 0x2f, 0x24, 0xc8, 0x47, 0xdb,
+	0x6a, 0x94, 0x8c, 0x2f, 0x09, 0x3d, 0x7c, 0xf9, 0xe5, 0x33, 0x48, 0x72, 0x9f, 0x29, 0x6f, 0xfe,
+	0xe0, 0xab, 0x7f, 0xfe, 0x64, 0xe2, 0x16, 0xaa, 0x54, 0x0e, 0x6f, 0x55, 0x44, 0xe0, 0x48, 0xe5,
+	0xc9, 0x20, 0xa8, 0xc7, 0x15, 0xd6, 0xd9, 0x55, 0x9e, 0xd0, 0x7f, 0x8e, 0x2b, 0x61, 0x8b, 0xfe,
+	0x73, 0x09, 0x60, 0x30, 0xb7, 0xa1, 0xe4, 0xbf, 0x8d, 0x9c, 0x18, 0xec, 0xca, 0xa7, 0x4e, 0x00,
+	0xca, 0x1a, 0xb3, 0xe6, 0x1d, 0x74, 0xff, 0x9c, 0xd6, 0x54, 0x9e, 0x0c, 0x52, 0xea, 0x18, 0xfd,
+	0x4c, 0x82, 0x42, 0x6c, 0xaa, 0x45, 0xc9, 0x0e, 0x49, 0x9a, 0x7c, 0xcb, 0x63, 0xda, 0x5f, 0x65,
+	0x95, 0x99, 0x78, 0x57, 0x39, 0xaf, 0xc3, 0x56, 0xa5, 0x65, 0xf4, 0x6b, 0x09, 0x0a, 0xb1, 0x19,
+	0x74, 0x84, 0x61, 0x49, 0x73, 0xea, 0x58, 0xc3, 0xd6, 0x99, 0x61, 0xd5, 0xf2, 0x85, 0x7c, 0x47,
+	0xad, 0xfc, 0x95, 0x04, 0x85, 0xd8, 0x0c, 0x3a, 0xc2, 0xca, 0xa4, 0x39, 0x75, 0xac, 0x95, 0x22,
+	0xc2, 0xcb, 0x17, 0x8b, 0xf0, 0x97, 0x12, 0x14, 0xe3, 0x23, 0x0d, 0x5a, 0x1e, 0x99, 0xf3, 0x27,
+	0x66, 0xb6, 0xf2, 0x2b, 0x67, 0x92, 0x15, 0x15, 0xf2, 0x36, 0xb3, 0xf8, 0x0e, 0xba, 0x75, 0x46,
+	0x8b, 0x23, 0xe3, 0xd1, 0x17, 0x12, 0xe4, 0xa3, 0x23, 0xea, 0x88, 0x12, 0x4e, 0x98, 0x62, 0xc7,
+	0xfa, 0xf1, 0x21, 0xb3, 0xea, 0x01, 0x7a, 0xf7, 0xdc, 0x56, 0x55, 0x9e, 0x44, 0xe7, 0xc5, 0x63,
+	0xf4, 0x5b, 0x09, 0x66, 0x86, 0xc6, 0x51, 0x94, 0xec, 0xa0, 0xe4, 0xa1, 0xb5, 0xbc, 0x18, 0x08,
+	0x07, 0xff, 0xa5, 0x60, 0xa5, 0xde, 0x73, 0xfd, 0x23, 0x45, 0x65, 0x26, 0x6e, 0x28, 0xeb, 0x17,
+	0x35, 0x71, 0xb5, 0xcd, 0x0e, 0xa6, 0xb9, 0xf9, 0x4b, 0x09, 0x66, 0x86, 0x86, 0xc9, 0x11, 0xc6,
+	0x26, 0x8f, 0x9c, 0xe5, 0xe4, 0x4f, 0xd9, 0x51, 0x49, 0xe5, 0x1e, 0xb3, 0xfb, 0x75, 0x74, 0xe7,
+	0x8c, 0x76, 0x13, 0xa6, 0x2c, 0x7a, 0xe2, 0x3f, 0x48, 0x50, 0x88, 0xbd, 0x4e, 0x68, 0x34, 0x18,
+	0x0f, 0xcf, 0x21, 0xe5, 0xe5, 0xb3, 0x88, 0x8a, 0xb4, 0xdc, 0x62, 0x56, 0x3e, 0x44, 0xef, 0x5d,
+	0xa4, 0x90, 0x2a, 0x83, 0xbf, 0xc9, 0xfd, 0x5e, 0x82, 0x5c, 0x64, 0x62, 0x41, 0x37, 0x46, 0x79,
+	0x75, 0x68, 0xa6, 0x29, 0x9f, 0xfe, 0xc2, 0x2a, 0xdf, 0x65, 0x76, 0x7e, 0x88, 0x76, 0x9f, 0x8e,
+	0x9d, 0x95, 0x27, 0xd1, 0xee, 0xe0, 0x18, 0xfd, 0x4e, 0x82, 0x62, 0x7c, 0x10, 0x1e, 0x81, 0x04,
+	0x89, 0xd3, 0xf2, 0xd8, 0x32, 0xfb, 0x36, 0xb3, 0xfe, 0x91, 0xf2, 0x94, 0xbc, 0x4c, 0x53, 0xf8,
+	0x8f, 0x12, 0x14, 0xe3, 0x23, 0xf1, 0x08, 0x8b, 0x13, 0xe7, 0xe6, 0xb1, 0x16, 0x0b, 0x7f, 0x2f,
+	0x5f, 0x92, 0xbf, 0xff, 0x2a, 0xc1, 0x95, 0x11, 0x3d, 0x21, 0xba, 0x93, 0x68, 0xda, 0xe9, 0x1d,
+	0xe4, 0xd8, 0xfb, 0x98, 0xec, 0x3e, 0x6d, 0xe5, 0x7b, 0x97, 0x72, 0x9f, 0x55, 0x4f, 0x58, 0x47,
+	0x23, 0xf3, 0x37, 0x09, 0x16, 0x12, 0x3b, 0x79, 0x74, 0x6b, 0x04, 0x6a, 0x8c, 0xee, 0xfa, 0xc7,
+	0xde, 0xcb, 0x66, 0xf7, 0xea, 0x2a, 0xed, 0x4b, 0xb9, 0x57, 0x85, 0x60, 0x7f, 0x60, 0xd3, 0xaa,
+	0xb4, 0xfc, 0xc0, 0x86, 0x2b, 0x6d, 0xa7, 0x97, 0x64, 0xd4, 0x83, 0x39, 0xf1, 0x86, 0x8b, 0xbf,
+	0x06, 0x36, 0x29, 0x8c, 0x37, 0xa5, 0x8f, 0xee, 0x0b, 0xd9, 0x8e, 0x63, 0xe9, 0x76, 0x67, 0xc5,
+	0xf1, 0x3a, 0x95, 0x0e, 0xb6, 0x19, 0xc8, 0x57, 0x38, 0x4b, 0x77, 0x4d, 0x12, 0xfb, 0x6f, 0x6a,
+	0xf7, 0xc2, 0xc5, 0x5e, 0x9a, 0x09, 0xde, 0xf9, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb5, 0x59,
+	0xbc, 0xdf, 0xce, 0x26, 0x00, 0x00,
 }
diff --git a/googleapis/devtools/cloudbuild/v1/cloudbuild.pb.go b/googleapis/devtools/cloudbuild/v1/cloudbuild.pb.go
index 94e7eeee..9721b6c3 100644
--- a/googleapis/devtools/cloudbuild/v1/cloudbuild.pb.go
+++ b/googleapis/devtools/cloudbuild/v1/cloudbuild.pb.go
@@ -62,7 +62,6 @@ var _ = math.Inf
 const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
 
 // Possible status of a build.
-// Non-terminal statuses.
 type Build_Status int32
 
 const (
@@ -563,6 +562,9 @@ type BuildStep struct {
 	// start when all previous build steps in the Build.Steps list have completed
 	// successfully.
 	WaitFor []string `protobuf:"bytes,6,rep,name=wait_for,json=waitFor" json:"wait_for,omitempty"`
+	// Optional entrypoint to be used instead of the build step image's default
+	// If unset, the image's default will be used.
+	Entrypoint string `protobuf:"bytes,7,opt,name=entrypoint" json:"entrypoint,omitempty"`
 }
 
 func (m *BuildStep) Reset()                    { *m = BuildStep{} }
@@ -612,6 +614,13 @@ func (m *BuildStep) GetWaitFor() []string {
 	return nil
 }
 
+func (m *BuildStep) GetEntrypoint() string {
+	if m != nil {
+		return m.Entrypoint
+	}
+	return ""
+}
+
 // Results describes the artifacts created by the build pipeline.
 type Results struct {
 	// Images that were built as a part of the build.
@@ -720,6 +729,8 @@ type Build struct {
 	// URL to logs for this build in Google Cloud Logging.
 	// @OutputOnly
 	LogUrl string `protobuf:"bytes,25,opt,name=log_url,json=logUrl" json:"log_url,omitempty"`
+	// Substitutions data for Build resource.
+	Substitutions map[string]string `protobuf:"bytes,29,rep,name=substitutions" json:"substitutions,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 }
 
 func (m *Build) Reset()                    { *m = Build{} }
@@ -846,6 +857,13 @@ func (m *Build) GetLogUrl() string {
 	return ""
 }
 
+func (m *Build) GetSubstitutions() map[string]string {
+	if m != nil {
+		return m.Substitutions
+	}
+	return nil
+}
+
 // Metadata for build operations.
 type BuildOperationMetadata struct {
 	// The build that the operation is tracking.
@@ -1138,6 +1156,8 @@ type BuildTrigger struct {
 	CreateTime *google_protobuf4.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime" json:"create_time,omitempty"`
 	// If true, the trigger will never result in a build.
 	Disabled bool `protobuf:"varint,9,opt,name=disabled" json:"disabled,omitempty"`
+	// Substitutions data for Build resource.
+	Substitutions map[string]string `protobuf:"bytes,11,rep,name=substitutions" json:"substitutions,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 }
 
 func (m *BuildTrigger) Reset()                    { *m = BuildTrigger{} }
@@ -1215,6 +1235,13 @@ func (m *BuildTrigger) GetDisabled() bool {
 	return false
 }
 
+func (m *BuildTrigger) GetSubstitutions() map[string]string {
+	if m != nil {
+		return m.Substitutions
+	}
+	return nil
+}
+
 // XXX_OneofFuncs is for the internal use of the proto package.
 func (*BuildTrigger) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
 	return _BuildTrigger_OneofMarshaler, _BuildTrigger_OneofUnmarshaler, _BuildTrigger_OneofSizer, []interface{}{
@@ -1892,127 +1919,131 @@ var _CloudBuild_serviceDesc = grpc.ServiceDesc{
 func init() { proto.RegisterFile("google/devtools/cloudbuild/v1/cloudbuild.proto", fileDescriptor0) }
 
 var fileDescriptor0 = []byte{
-	// 1943 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x4b, 0x73, 0x1b, 0xc7,
-	0xf1, 0xe7, 0x02, 0x24, 0x1e, 0x0d, 0x3e, 0xa0, 0xf9, 0xcb, 0xd4, 0x12, 0xb2, 0x2c, 0xfe, 0x57,
-	0xb6, 0x43, 0x2b, 0x36, 0x10, 0x52, 0xe5, 0x98, 0xa6, 0x9c, 0x98, 0x24, 0x08, 0x91, 0x2c, 0xd3,
-	0xa0, 0x32, 0x00, 0xe4, 0xca, 0xa3, 0x6a, 0xb3, 0xc4, 0x0e, 0x97, 0x1b, 0x2d, 0x76, 0x37, 0xbb,
-	0x03, 0xc4, 0x94, 0x4a, 0x95, 0xc4, 0x87, 0x5c, 0x93, 0xaa, 0xe4, 0x96, 0x43, 0x1e, 0x1f, 0x20,
-	0x95, 0x4a, 0x55, 0x2a, 0xa7, 0x7c, 0x8a, 0x9c, 0x73, 0xcb, 0x31, 0xf9, 0x0e, 0xa9, 0x79, 0x01,
-	0x4b, 0xd0, 0xca, 0x2e, 0xa2, 0xca, 0x85, 0xb5, 0xd3, 0xd3, 0xbf, 0xee, 0x9e, 0x9e, 0x9e, 0xfe,
-	0x35, 0x01, 0x75, 0x27, 0x08, 0x1c, 0x8f, 0x34, 0x6c, 0x32, 0xa2, 0x41, 0xe0, 0xc5, 0x8d, 0xbe,
-	0x17, 0x0c, 0xed, 0xb3, 0xa1, 0xeb, 0xd9, 0x8d, 0xd1, 0x66, 0x62, 0x55, 0x0f, 0xa3, 0x80, 0x06,
-	0xe8, 0x8e, 0xd0, 0xaf, 0x2b, 0xfd, 0x7a, 0x42, 0x63, 0xb4, 0x59, 0x7b, 0x5d, 0x9a, 0xb3, 0x42,
-	0xb7, 0x61, 0xf9, 0x7e, 0x40, 0x2d, 0xea, 0x06, 0x7e, 0x2c, 0xc0, 0xb5, 0x7b, 0x72, 0xd7, 0x0b,
-	0x7c, 0x27, 0x1a, 0xfa, 0xbe, 0xeb, 0x3b, 0x8d, 0x20, 0x24, 0xd1, 0x15, 0xa5, 0x37, 0xa4, 0x12,
-	0x5f, 0x9d, 0x0d, 0xcf, 0x1b, 0xf6, 0x50, 0x28, 0xc8, 0xfd, 0xdb, 0xd3, 0xfb, 0x64, 0x10, 0xd2,
-	0x4b, 0xb9, 0x79, 0x77, 0x7a, 0x93, 0xba, 0x03, 0x12, 0x53, 0x6b, 0x10, 0x0a, 0x05, 0xc3, 0x84,
-	0xa5, 0x0e, 0x0d, 0x22, 0xcb, 0x21, 0x9d, 0x60, 0x18, 0xf5, 0x09, 0x5a, 0x85, 0xc2, 0xd9, 0xb0,
-	0xff, 0x94, 0x50, 0x5d, 0x5b, 0xd7, 0x36, 0xca, 0x58, 0xae, 0x98, 0x3c, 0x38, 0xfb, 0x01, 0xe9,
-	0x53, 0x3d, 0x27, 0xe4, 0x62, 0x85, 0xde, 0x00, 0x70, 0x88, 0x2f, 0x63, 0xd6, 0xf3, 0xeb, 0xda,
-	0x46, 0x1e, 0x27, 0x24, 0xc6, 0x9f, 0x35, 0x00, 0x4c, 0xc2, 0x40, 0x9a, 0xbf, 0x03, 0x10, 0x46,
-	0x01, 0x43, 0x9a, 0xae, 0x2d, 0x5d, 0x94, 0xa5, 0xe4, 0xd8, 0x46, 0xb7, 0xa1, 0x1c, 0x91, 0x30,
-	0x30, 0x7d, 0x6b, 0x40, 0xa4, 0xa3, 0x12, 0x13, 0xb4, 0xad, 0x01, 0x41, 0xff, 0x0f, 0x95, 0xb3,
-	0xc8, 0xf2, 0xfb, 0x17, 0x62, 0x9b, 0xf9, 0x2a, 0x1f, 0xcd, 0x61, 0x10, 0x42, 0xae, 0x72, 0x1b,
-	0x4a, 0xd4, 0x72, 0xc4, 0xfe, 0xbc, 0xdc, 0x2f, 0x52, 0xcb, 0xe1, 0x9b, 0x77, 0x01, 0xfa, 0xc1,
-	0x60, 0xe0, 0x52, 0x33, 0xbe, 0xb0, 0xf4, 0x05, 0xb9, 0x5d, 0x16, 0xb2, 0xce, 0x85, 0xb5, 0x0f,
-	0x50, 0x8a, 0xc8, 0xc8, 0x8d, 0x59, 0xdc, 0x7f, 0xd1, 0xa0, 0x20, 0x63, 0xee, 0xc1, 0x72, 0x2c,
-	0x72, 0x64, 0xc6, 0x5c, 0xc2, 0x23, 0xab, 0x6c, 0xbd, 0x5b, 0xff, 0x8f, 0x97, 0x5f, 0xbf, 0x92,
-	0xd8, 0xa3, 0x39, 0xbc, 0x14, 0x5f, 0xc9, 0xf4, 0x09, 0x54, 0xf8, 0x59, 0xa5, 0xcd, 0x3c, 0xb7,
-	0xf9, 0x4e, 0x8a, 0xcd, 0x49, 0x2a, 0xd9, 0xc9, 0xa3, 0xf1, 0x6a, 0xbf, 0x04, 0x05, 0x61, 0xc8,
-	0xd8, 0x06, 0xd8, 0x1f, 0xba, 0x1e, 0x3d, 0x1e, 0x58, 0x0e, 0x41, 0x08, 0xe6, 0x79, 0x36, 0x44,
-	0xaa, 0xf9, 0x37, 0xbb, 0x4b, 0xdb, 0x75, 0x48, 0x4c, 0x45, 0x0e, 0xb1, 0x5c, 0x19, 0x5f, 0x68,
-	0x50, 0x66, 0x50, 0xbb, 0x43, 0x49, 0xf8, 0xa5, 0xc8, 0x2a, 0xe4, 0x89, 0x3f, 0xd2, 0x73, 0xeb,
-	0xf9, 0x8d, 0x32, 0x66, 0x9f, 0x4c, 0xcb, 0x8a, 0x9c, 0x58, 0xcf, 0x73, 0x11, 0xff, 0x66, 0x5a,
-	0xb6, 0x1b, 0x89, 0x0b, 0xc0, 0xec, 0x13, 0x2d, 0x43, 0xce, 0xb5, 0x45, 0xca, 0x71, 0xce, 0xb5,
-	0xd1, 0x1a, 0x94, 0x7e, 0x64, 0xb9, 0xd4, 0x3c, 0x0f, 0x22, 0xbd, 0xc0, 0x91, 0x45, 0xb6, 0x7e,
-	0x14, 0x44, 0xc6, 0xe7, 0x50, 0xc4, 0x24, 0x1e, 0x7a, 0x34, 0x46, 0x7b, 0x50, 0x70, 0xd9, 0x21,
-	0x62, 0xee, 0x30, 0x3d, 0x39, 0x93, 0x63, 0x63, 0x09, 0x44, 0xf7, 0xe1, 0x06, 0xdf, 0x36, 0x63,
-	0x4a, 0x42, 0x53, 0x5a, 0x13, 0xb1, 0xae, 0x9c, 0xa9, 0xa3, 0x72, 0x48, 0x6c, 0xfc, 0xab, 0x08,
-	0x0b, 0xfc, 0xf8, 0x32, 0x5c, 0x6d, 0x1c, 0xee, 0xd5, 0xaa, 0xad, 0x4e, 0x57, 0x6d, 0x13, 0x0a,
-	0x31, 0xb5, 0xe8, 0x30, 0xe6, 0x85, 0xb1, 0xbc, 0xf5, 0xd5, 0x0c, 0x71, 0xda, 0xf5, 0x0e, 0x87,
-	0x60, 0x09, 0x45, 0xf7, 0x60, 0x49, 0x7c, 0x99, 0x36, 0xa1, 0x96, 0xeb, 0xe9, 0x3a, 0x77, 0xb3,
-	0x28, 0x84, 0x07, 0x5c, 0x86, 0xbe, 0xa1, 0x6e, 0x59, 0x96, 0xcb, 0x5b, 0x69, 0x25, 0xc8, 0x95,
-	0xb1, 0x04, 0xa1, 0x6f, 0xc2, 0x02, 0xcb, 0x43, 0xac, 0x57, 0x78, 0x3e, 0x37, 0xb2, 0xc4, 0xc9,
-	0x12, 0x84, 0x05, 0x0c, 0xed, 0x42, 0x31, 0x12, 0x77, 0xa3, 0x03, 0xf7, 0xff, 0x76, 0x6a, 0xb9,
-	0x72, 0x6d, 0xac, 0x60, 0xe8, 0x21, 0x54, 0xfa, 0x11, 0xb1, 0x28, 0x31, 0x59, 0x27, 0xd2, 0x0b,
-	0xdc, 0x4a, 0x4d, 0x59, 0x51, 0x6d, 0xaa, 0xde, 0x55, 0x6d, 0x0a, 0x83, 0x50, 0x67, 0x02, 0xf4,
-	0x21, 0x40, 0x4c, 0xad, 0x88, 0x0a, 0x6c, 0x31, 0x15, 0x5b, 0xe6, 0xda, 0x1c, 0xfa, 0x10, 0x2a,
-	0xe7, 0xae, 0xef, 0xc6, 0x17, 0x02, 0x5b, 0x4a, 0xf7, 0x2b, 0xd4, 0x39, 0xf8, 0x01, 0x14, 0x19,
-	0x2a, 0x18, 0x52, 0x7d, 0x91, 0x03, 0xd7, 0xae, 0x01, 0x0f, 0x64, 0x53, 0xc6, 0x4a, 0x93, 0x3d,
-	0x32, 0x59, 0x6e, 0x4b, 0xbc, 0xdc, 0x54, 0x45, 0xde, 0x85, 0x8a, 0x17, 0x38, 0xb1, 0x29, 0xbb,
-	0xec, 0xff, 0xf1, 0x5b, 0x06, 0x26, 0xda, 0x17, 0x9d, 0xf6, 0x7b, 0x70, 0x43, 0x5c, 0x97, 0x19,
-	0x46, 0xc1, 0x88, 0xf8, 0x96, 0xdf, 0x27, 0xfa, 0x6b, 0xdc, 0x6f, 0x23, 0xd3, 0x75, 0x3f, 0x1e,
-	0xc3, 0x70, 0x35, 0x9e, 0x92, 0xa0, 0x0d, 0xa8, 0x8a, 0x07, 0x41, 0x23, 0xd7, 0x71, 0x48, 0xc4,
-	0x0a, 0x7a, 0x95, 0xc7, 0xb0, 0xcc, 0xe5, 0x5d, 0x21, 0x3e, 0xb6, 0x51, 0x0b, 0x8a, 0x41, 0xc8,
-	0x99, 0x48, 0xbf, 0xc5, 0xbd, 0x67, 0x2a, 0xeb, 0x53, 0x01, 0xc1, 0x0a, 0x8b, 0x6e, 0x41, 0xd1,
-	0x0b, 0x1c, 0x73, 0x18, 0x79, 0xfa, 0x9a, 0xe8, 0x36, 0x5e, 0xe0, 0xf4, 0x22, 0xcf, 0xf8, 0x31,
-	0x14, 0xc4, 0x13, 0x40, 0x08, 0x96, 0x3b, 0xdd, 0xbd, 0x6e, 0xaf, 0x63, 0xf6, 0xda, 0x9f, 0xb4,
-	0x4f, 0x3f, 0x6b, 0x57, 0xe7, 0x10, 0x40, 0xe1, 0x5b, 0xbd, 0x56, 0xaf, 0x75, 0x50, 0xd5, 0x50,
-	0x05, 0x8a, 0x9f, 0x9d, 0xe2, 0x4f, 0x8e, 0xdb, 0x87, 0xd5, 0x1c, 0x5b, 0x74, 0x7a, 0xcd, 0x66,
-	0xab, 0xd3, 0xa9, 0xe6, 0xd9, 0xe2, 0xd1, 0xde, 0xf1, 0x49, 0x0f, 0xb7, 0xaa, 0xf3, 0xcc, 0xcc,
-	0x71, 0xbb, 0xdb, 0xc2, 0xed, 0xbd, 0x13, 0xb3, 0x85, 0xf1, 0x29, 0xae, 0x2e, 0x30, 0x85, 0xee,
-	0xf1, 0xa7, 0xad, 0xd3, 0x5e, 0xb7, 0x5a, 0x40, 0x4b, 0x50, 0x6e, 0xee, 0xb5, 0x9b, 0xad, 0x93,
-	0x93, 0xd6, 0x41, 0xb5, 0x68, 0x74, 0x61, 0x55, 0x86, 0x2c, 0xc9, 0xea, 0x53, 0x42, 0x2d, 0xdb,
-	0xa2, 0x16, 0xda, 0x81, 0x05, 0x7e, 0x2a, 0xde, 0x02, 0x2a, 0x5b, 0x6f, 0x66, 0x39, 0x38, 0x16,
-	0x10, 0xe3, 0x77, 0x79, 0xa8, 0x4e, 0xdf, 0x03, 0xb2, 0xe1, 0x56, 0x44, 0xe2, 0xc0, 0x1b, 0x11,
-	0xd6, 0x89, 0xae, 0x70, 0x49, 0x7e, 0x76, 0x2e, 0xc1, 0xaf, 0x29, 0x63, 0x57, 0xb9, 0xfb, 0xbb,
-	0x70, 0x73, 0xec, 0x25, 0x49, 0x2d, 0x85, 0x19, 0xa9, 0x05, 0x23, 0x65, 0x26, 0xc1, 0xdc, 0xdf,
-	0x67, 0x2f, 0xc8, 0x23, 0xe6, 0x85, 0x15, 0x5f, 0x90, 0x58, 0x9f, 0xe7, 0x1d, 0xe4, 0xe3, 0x19,
-	0x0b, 0xb2, 0xfe, 0xc8, 0xf5, 0xc8, 0x11, 0xb7, 0xd0, 0xf2, 0x69, 0x74, 0xc9, 0x9e, 0x99, 0x12,
-	0xd4, 0x2e, 0x60, 0x65, 0x6a, 0x9b, 0x31, 0xc9, 0x53, 0x72, 0x29, 0x3b, 0x31, 0xfb, 0x44, 0x1f,
-	0xc3, 0xc2, 0xc8, 0xf2, 0x86, 0x8a, 0x83, 0xd3, 0x0e, 0x35, 0x31, 0x88, 0x05, 0x6e, 0x27, 0xb7,
-	0xad, 0x19, 0x6d, 0x80, 0xc9, 0x06, 0xda, 0x85, 0xf2, 0xf8, 0x64, 0xba, 0xc6, 0xcf, 0x75, 0x2f,
-	0xc5, 0x2c, 0x43, 0xe2, 0x92, 0x8a, 0xdd, 0xf8, 0x89, 0x06, 0xf3, 0xec, 0x03, 0xed, 0xc2, 0x3c,
-	0xbd, 0x0c, 0x05, 0x67, 0x2e, 0xa7, 0x5e, 0x2a, 0x83, 0xf0, 0x3f, 0xdd, 0xcb, 0x90, 0x60, 0x8e,
-	0x44, 0x37, 0x93, 0xe7, 0x5b, 0x94, 0x41, 0x1b, 0xeb, 0x50, 0x52, 0x7a, 0xa8, 0x04, 0xf3, 0xed,
-	0xd3, 0x76, 0x4b, 0xbc, 0x91, 0xce, 0xd1, 0xde, 0xd6, 0xfb, 0x5f, 0xaf, 0x6a, 0x46, 0x00, 0xa8,
-	0xc9, 0x3b, 0xa5, 0x28, 0x46, 0xf2, 0xc3, 0x21, 0x89, 0x69, 0xda, 0xb8, 0x35, 0xae, 0xf3, 0xdc,
-	0xec, 0x75, 0xbe, 0x0b, 0x2b, 0x87, 0x84, 0xce, 0xe2, 0x4d, 0xb0, 0x6a, 0x4e, 0xb1, 0xaa, 0xf1,
-	0x33, 0x0d, 0x6e, 0x9c, 0xb8, 0xb1, 0xb0, 0x11, 0x67, 0x34, 0x72, 0x1b, 0xca, 0x21, 0x7f, 0x3d,
-	0xee, 0x33, 0x91, 0xa3, 0x05, 0x5c, 0x62, 0x82, 0x8e, 0xfb, 0x4c, 0x4c, 0x97, 0x6c, 0x93, 0x06,
-	0x4f, 0x89, 0x2f, 0x87, 0x1b, 0xae, 0xde, 0x65, 0x02, 0xd6, 0x92, 0xcf, 0x5d, 0x8f, 0x92, 0x88,
-	0xf7, 0xff, 0x32, 0x96, 0x2b, 0xe3, 0x19, 0xa0, 0x64, 0x1c, 0x71, 0x18, 0xf8, 0x31, 0x41, 0x1f,
-	0xb1, 0x49, 0x98, 0x49, 0x64, 0x4d, 0x64, 0xcb, 0x8e, 0xc4, 0xa0, 0xb7, 0x61, 0xc5, 0x27, 0x9f,
-	0x53, 0x33, 0x11, 0x8f, 0x38, 0xf9, 0x12, 0x13, 0x3f, 0x56, 0x31, 0x19, 0x4d, 0x40, 0x4d, 0xf6,
-	0x32, 0xbc, 0x57, 0xc9, 0xe4, 0xdf, 0x73, 0xb0, 0xb8, 0x9f, 0xe8, 0xde, 0xd7, 0x06, 0x98, 0x75,
-	0xa8, 0xd8, 0x24, 0xee, 0x47, 0x2e, 0x6f, 0xca, 0x9c, 0xbc, 0xcb, 0x38, 0x29, 0x42, 0x5d, 0xa8,
-	0x2a, 0x46, 0xa0, 0x64, 0x10, 0x7a, 0x16, 0x55, 0x0c, 0x3b, 0x43, 0xdf, 0x58, 0x91, 0x26, 0xba,
-	0xd2, 0x02, 0xfa, 0x48, 0x15, 0xd8, 0x7c, 0xf6, 0x02, 0x3b, 0x9a, 0x93, 0x25, 0x86, 0x5e, 0x07,
-	0xfe, 0xc4, 0xf8, 0x14, 0x5a, 0x92, 0xe3, 0xfa, 0x58, 0x32, 0x3d, 0x4a, 0x2c, 0xcc, 0x34, 0x4a,
-	0xd4, 0xa0, 0x64, 0xbb, 0xb1, 0x75, 0xe6, 0x11, 0x5b, 0x2f, 0xaf, 0x6b, 0x1b, 0x25, 0x3c, 0x5e,
-	0xef, 0x57, 0x61, 0x59, 0x52, 0xa4, 0x3c, 0x86, 0xf1, 0x53, 0x0d, 0xd6, 0x12, 0xaf, 0x4b, 0x66,
-	0x39, 0xe3, 0x65, 0xb5, 0xa0, 0x28, 0xd3, 0x22, 0x9f, 0x59, 0x26, 0x1e, 0x55, 0x3e, 0x14, 0xd6,
-	0x78, 0x02, 0xab, 0xea, 0xbd, 0xcd, 0xe6, 0xff, 0x0e, 0x40, 0x82, 0xeb, 0x45, 0xd1, 0x94, 0xa9,
-	0xa2, 0x79, 0xe3, 0x43, 0xd0, 0xc7, 0xc5, 0x2f, 0x0d, 0x67, 0x7c, 0x8b, 0x86, 0x0d, 0x6b, 0x5f,
-	0x02, 0x95, 0xcf, 0xe7, 0x10, 0x4a, 0xd2, 0x89, 0x7a, 0x40, 0x33, 0x9d, 0x7b, 0x0c, 0x36, 0xbe,
-	0x0d, 0x6b, 0x07, 0xc4, 0x23, 0xff, 0x55, 0xee, 0x53, 0xce, 0xfe, 0x5b, 0x0d, 0xd6, 0x7a, 0xa1,
-	0x6d, 0xfd, 0x0f, 0x6c, 0x27, 0xaf, 0x3d, 0xff, 0x0a, 0xd7, 0xfe, 0x2b, 0xf5, 0xb4, 0xe5, 0x60,
-	0x85, 0xce, 0x60, 0xf5, 0xda, 0x78, 0x38, 0xa1, 0xae, 0x59, 0x49, 0xe7, 0xe6, 0xf4, 0x80, 0xc8,
-	0x69, 0x2c, 0x64, 0xe3, 0x0a, 0x4f, 0x02, 0xb1, 0xcd, 0x11, 0x89, 0xdc, 0xf3, 0x4b, 0x53, 0xcc,
-	0x73, 0xf2, 0x3f, 0x9c, 0xed, 0x19, 0x46, 0xc1, 0xfa, 0x13, 0x6e, 0x40, 0xac, 0xd8, 0xe8, 0x22,
-	0x0d, 0x27, 0xc5, 0x46, 0x1d, 0x16, 0x93, 0x6b, 0x54, 0x85, 0xc5, 0xf6, 0x69, 0xd7, 0x7c, 0xd2,
-	0xc2, 0xc7, 0x8f, 0x8e, 0x5b, 0x07, 0xd5, 0x39, 0xb4, 0x08, 0xa5, 0xf1, 0x4a, 0xdb, 0xfa, 0x67,
-	0x05, 0xa0, 0xc9, 0x5c, 0x8a, 0x7f, 0xd8, 0x7e, 0xa1, 0x41, 0x25, 0xf1, 0x40, 0xd1, 0x66, 0x4a,
-	0x7c, 0xd7, 0xa9, 0xb2, 0x76, 0x47, 0x41, 0x12, 0xbf, 0xc6, 0xd4, 0xc7, 0xa3, 0xa1, 0xd1, 0xf8,
-	0xe2, 0x6f, 0xff, 0xf8, 0x65, 0xee, 0x1d, 0x63, 0xbd, 0x31, 0xda, 0x6c, 0xc8, 0x22, 0x88, 0x1b,
-	0xcf, 0x27, 0x05, 0xf2, 0xa2, 0x21, 0x3a, 0xff, 0x8e, 0x6c, 0x5e, 0x3f, 0xd7, 0xa0, 0xa4, 0x1e,
-	0x2c, 0xaa, 0xa7, 0xc4, 0x33, 0xc5, 0xa4, 0xb5, 0x4c, 0x8d, 0xd2, 0x78, 0x8f, 0xc7, 0xf4, 0x15,
-	0xf4, 0x56, 0x5a, 0x4c, 0x8d, 0xe7, 0xae, 0xfd, 0x02, 0xfd, 0x5a, 0x03, 0x98, 0xf0, 0x1c, 0xfa,
-	0x5a, 0x8a, 0x8f, 0x6b, 0xd4, 0x5c, 0xdb, 0x9c, 0x01, 0x21, 0xba, 0x80, 0xb1, 0xc1, 0x43, 0x34,
-	0x50, 0x6a, 0xda, 0xd0, 0x6f, 0xd8, 0x15, 0x4e, 0x98, 0x30, 0xfd, 0x0a, 0xaf, 0xb1, 0x66, 0xc6,
-	0xac, 0x7d, 0xc0, 0x43, 0xda, 0x34, 0xde, 0xcd, 0x94, 0xb5, 0x9d, 0x3e, 0xf7, 0xb3, 0xa3, 0xdd,
-	0x47, 0x7f, 0xd4, 0xae, 0xcc, 0x58, 0x8a, 0x6b, 0xb7, 0xb3, 0xd7, 0xda, 0xd5, 0x06, 0x53, 0x9b,
-	0xa5, 0x23, 0x18, 0x0f, 0x78, 0xd8, 0xef, 0x19, 0xc6, 0xcb, 0xc3, 0x56, 0x2d, 0x73, 0x47, 0x75,
-	0x0f, 0xf4, 0x07, 0x6d, 0x32, 0xa5, 0xa9, 0x78, 0xdf, 0xcf, 0x58, 0x8b, 0xaf, 0x12, 0xac, 0xcc,
-	0x31, 0x6a, 0xa4, 0x07, 0xdb, 0x78, 0x3e, 0xe9, 0xa2, 0x2f, 0xd0, 0x9f, 0x92, 0x33, 0xa1, 0xe2,
-	0x14, 0xf4, 0x41, 0xd6, 0xc2, 0x9b, 0x22, 0xb0, 0xda, 0xf6, 0xec, 0x40, 0x59, 0xb8, 0xf7, 0xf9,
-	0x09, 0xde, 0x44, 0x19, 0xd2, 0xcd, 0x4a, 0x17, 0x5d, 0xa7, 0xa8, 0xd4, 0xc2, 0x78, 0x29, 0xab,
-	0xd5, 0x56, 0xaf, 0x4d, 0x31, 0xad, 0x41, 0x48, 0x2f, 0x55, 0x5a, 0xef, 0xcf, 0x9c, 0xd6, 0xbf,
-	0x6a, 0x80, 0xae, 0x13, 0x5d, 0x6a, 0x84, 0x2f, 0xe5, 0xc6, 0xd9, 0xaa, 0x61, 0x97, 0x87, 0xbd,
-	0xb3, 0x35, 0x6b, 0xd8, 0xe3, 0x3a, 0xde, 0x7f, 0x0a, 0x7a, 0x3f, 0x18, 0x28, 0x9f, 0x57, 0x5c,
-	0x3d, 0xd6, 0xbe, 0x73, 0x28, 0xe5, 0x4e, 0xe0, 0x59, 0xbe, 0x53, 0x0f, 0x22, 0xa7, 0xe1, 0x10,
-	0x9f, 0xe7, 0xae, 0x21, 0xb6, 0xac, 0xd0, 0x8d, 0x5f, 0xf2, 0x9b, 0xfe, 0xc3, 0xc9, 0xea, 0xf7,
-	0xb9, 0xfc, 0x61, 0x73, 0xff, 0xac, 0xc0, 0x91, 0x0f, 0xfe, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x04,
-	0x50, 0xf5, 0x20, 0x0c, 0x18, 0x00, 0x00,
+	// 2010 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0x5b, 0x73, 0xdb, 0xc6,
+	0xf5, 0x37, 0x48, 0x89, 0x97, 0x43, 0x5d, 0xe8, 0xfd, 0x3b, 0x32, 0x44, 0x47, 0xb1, 0xfe, 0x70,
+	0x92, 0x2a, 0x4e, 0x42, 0x56, 0xf2, 0xa4, 0x56, 0xe4, 0x34, 0x91, 0x44, 0xd1, 0x92, 0x26, 0x0a,
+	0xe5, 0x2e, 0x49, 0x67, 0x7a, 0x1b, 0x14, 0x24, 0x56, 0x10, 0x6a, 0x10, 0x40, 0x81, 0x25, 0x1b,
+	0xd9, 0xe3, 0xe9, 0x65, 0xa6, 0x7d, 0x6c, 0x3b, 0xd3, 0xbe, 0xf5, 0xa1, 0x6d, 0x3e, 0x40, 0xa7,
+	0xd3, 0x99, 0x4e, 0x9f, 0xfa, 0x29, 0xfa, 0x15, 0xfa, 0xd8, 0x0f, 0xd1, 0xd9, 0x0b, 0x48, 0x90,
+	0xb4, 0x0b, 0xb0, 0x9e, 0xf6, 0xc5, 0x83, 0x3d, 0x7b, 0x7e, 0x67, 0xcf, 0x9e, 0xfd, 0x9d, 0x0b,
+	0x2d, 0xa8, 0x5a, 0x9e, 0x67, 0x39, 0xa4, 0x66, 0x92, 0x21, 0xf5, 0x3c, 0x27, 0xac, 0xf5, 0x1c,
+	0x6f, 0x60, 0x76, 0x07, 0xb6, 0x63, 0xd6, 0x86, 0xdb, 0xb1, 0x55, 0xd5, 0x0f, 0x3c, 0xea, 0xa1,
+	0x0d, 0xa1, 0x5f, 0x8d, 0xf4, 0xab, 0x31, 0x8d, 0xe1, 0x76, 0xe5, 0x75, 0x69, 0xce, 0xf0, 0xed,
+	0x9a, 0xe1, 0xba, 0x1e, 0x35, 0xa8, 0xed, 0xb9, 0xa1, 0x00, 0x57, 0xee, 0xc8, 0x5d, 0xc7, 0x73,
+	0xad, 0x60, 0xe0, 0xba, 0xb6, 0x6b, 0xd5, 0x3c, 0x9f, 0x04, 0x13, 0x4a, 0x6f, 0x48, 0x25, 0xbe,
+	0xea, 0x0e, 0x2e, 0x6a, 0xe6, 0x40, 0x28, 0xc8, 0xfd, 0x5b, 0xd3, 0xfb, 0xa4, 0xef, 0xd3, 0x2b,
+	0xb9, 0x79, 0x7b, 0x7a, 0x93, 0xda, 0x7d, 0x12, 0x52, 0xa3, 0xef, 0x0b, 0x05, 0x4d, 0x87, 0xe5,
+	0x16, 0xf5, 0x02, 0xc3, 0x22, 0x2d, 0x6f, 0x10, 0xf4, 0x08, 0x5a, 0x83, 0x5c, 0x77, 0xd0, 0x7b,
+	0x42, 0xa8, 0xaa, 0x6c, 0x2a, 0x5b, 0x45, 0x2c, 0x57, 0x4c, 0xee, 0x75, 0xbf, 0x4f, 0x7a, 0x54,
+	0xcd, 0x08, 0xb9, 0x58, 0xa1, 0x37, 0x00, 0x2c, 0xe2, 0x4a, 0x9f, 0xd5, 0xec, 0xa6, 0xb2, 0x95,
+	0xc5, 0x31, 0x89, 0xf6, 0x17, 0x05, 0x00, 0x13, 0xdf, 0x93, 0xe6, 0x37, 0x00, 0xfc, 0xc0, 0x63,
+	0x48, 0xdd, 0x36, 0xe5, 0x11, 0x45, 0x29, 0x39, 0x35, 0xd1, 0x2d, 0x28, 0x06, 0xc4, 0xf7, 0x74,
+	0xd7, 0xe8, 0x13, 0x79, 0x50, 0x81, 0x09, 0x9a, 0x46, 0x9f, 0xa0, 0xff, 0x87, 0x52, 0x37, 0x30,
+	0xdc, 0xde, 0xa5, 0xd8, 0x66, 0x67, 0x15, 0x4f, 0xae, 0x61, 0x10, 0x42, 0xae, 0x72, 0x0b, 0x0a,
+	0xd4, 0xb0, 0xc4, 0xfe, 0x82, 0xdc, 0xcf, 0x53, 0xc3, 0xe2, 0x9b, 0xb7, 0x01, 0x7a, 0x5e, 0xbf,
+	0x6f, 0x53, 0x3d, 0xbc, 0x34, 0xd4, 0x45, 0xb9, 0x5d, 0x14, 0xb2, 0xd6, 0xa5, 0x71, 0x08, 0x50,
+	0x08, 0xc8, 0xd0, 0x0e, 0x99, 0xdf, 0x7f, 0x55, 0x20, 0x27, 0x7d, 0xee, 0xc0, 0x4a, 0x28, 0x62,
+	0xa4, 0x87, 0x5c, 0xc2, 0x3d, 0x2b, 0xed, 0xbc, 0x57, 0xfd, 0xb7, 0x8f, 0x5f, 0x9d, 0x08, 0xec,
+	0xc9, 0x35, 0xbc, 0x1c, 0x4e, 0x44, 0xfa, 0x0c, 0x4a, 0xfc, 0xae, 0xd2, 0x66, 0x96, 0xdb, 0x7c,
+	0x27, 0xc1, 0xe6, 0x38, 0x94, 0xec, 0xe6, 0xc1, 0x68, 0x75, 0x58, 0x80, 0x9c, 0x30, 0xa4, 0xed,
+	0x02, 0x1c, 0x0e, 0x6c, 0x87, 0x9e, 0xf6, 0x0d, 0x8b, 0x20, 0x04, 0x0b, 0x3c, 0x1a, 0x22, 0xd4,
+	0xfc, 0x9b, 0xbd, 0xa5, 0x69, 0x5b, 0x24, 0xa4, 0x22, 0x86, 0x58, 0xae, 0xb4, 0x2f, 0x15, 0x28,
+	0x32, 0xa8, 0xd9, 0xa2, 0xc4, 0x7f, 0x21, 0xb2, 0x0c, 0x59, 0xe2, 0x0e, 0xd5, 0xcc, 0x66, 0x76,
+	0xab, 0x88, 0xd9, 0x27, 0xd3, 0x32, 0x02, 0x2b, 0x54, 0xb3, 0x5c, 0xc4, 0xbf, 0x99, 0x96, 0x69,
+	0x07, 0xe2, 0x01, 0x30, 0xfb, 0x44, 0x2b, 0x90, 0xb1, 0x4d, 0x11, 0x72, 0x9c, 0xb1, 0x4d, 0xb4,
+	0x0e, 0x85, 0x1f, 0x1a, 0x36, 0xd5, 0x2f, 0xbc, 0x40, 0xcd, 0x71, 0x64, 0x9e, 0xad, 0x1f, 0x7a,
+	0x01, 0x23, 0x14, 0x71, 0x69, 0x70, 0xe5, 0x7b, 0xb6, 0x4b, 0xd5, 0x3c, 0x87, 0xc4, 0x24, 0xda,
+	0x17, 0x90, 0xc7, 0x24, 0x1c, 0x38, 0x34, 0x44, 0x07, 0x90, 0xb3, 0xd9, 0x25, 0x43, 0xee, 0x50,
+	0x72, 0xf0, 0xc6, 0x61, 0xc1, 0x12, 0x88, 0xee, 0xc2, 0x75, 0xbe, 0xad, 0x87, 0x94, 0xf8, 0xba,
+	0xb4, 0x26, 0xee, 0xb2, 0xda, 0x8d, 0x42, 0xc1, 0x21, 0xa1, 0xf6, 0x8b, 0x22, 0x2c, 0xf2, 0xf0,
+	0xc8, 0xeb, 0x28, 0xa3, 0xeb, 0x4c, 0xb2, 0xba, 0x3c, 0xcd, 0xea, 0x3a, 0xe4, 0x42, 0x6a, 0xd0,
+	0x41, 0xc8, 0x89, 0xb3, 0xb2, 0xf3, 0x6e, 0x0a, 0x3f, 0xcd, 0x6a, 0x8b, 0x43, 0xb0, 0x84, 0xa2,
+	0x3b, 0xb0, 0x2c, 0xbe, 0x74, 0x93, 0x50, 0xc3, 0x76, 0x54, 0x95, 0x1f, 0xb3, 0x24, 0x84, 0x47,
+	0x5c, 0x86, 0xbe, 0x1e, 0xb1, 0x40, 0xd2, 0xe9, 0xad, 0x24, 0x8a, 0x72, 0x65, 0x2c, 0x41, 0xe8,
+	0x63, 0x58, 0x64, 0x71, 0x08, 0xd5, 0x12, 0x8f, 0xe7, 0x56, 0x1a, 0x3f, 0x59, 0x80, 0xb0, 0x80,
+	0xa1, 0x7d, 0xc8, 0x07, 0xe2, 0x6d, 0x54, 0xe0, 0xe7, 0xbf, 0x9d, 0x48, 0x67, 0xae, 0x8d, 0x23,
+	0x18, 0x7a, 0x00, 0xa5, 0x5e, 0x40, 0x0c, 0x4a, 0x74, 0x56, 0xa9, 0xd4, 0x1c, 0xb7, 0x52, 0x89,
+	0xac, 0x44, 0x65, 0xac, 0xda, 0x8e, 0xca, 0x18, 0x06, 0xa1, 0xce, 0x04, 0xe8, 0x43, 0x80, 0x90,
+	0x1a, 0x01, 0x15, 0xd8, 0x7c, 0x22, 0xb6, 0xc8, 0xb5, 0x39, 0xf4, 0x01, 0x94, 0x2e, 0x6c, 0xd7,
+	0x0e, 0x2f, 0x05, 0xb6, 0x90, 0x7c, 0xae, 0x50, 0xe7, 0xe0, 0x7b, 0x90, 0x67, 0x28, 0x6f, 0x40,
+	0xd5, 0x25, 0x0e, 0x5c, 0x9f, 0x01, 0x1e, 0xc9, 0xa2, 0x8d, 0x23, 0x4d, 0x96, 0x84, 0x92, 0x6e,
+	0xcb, 0x9c, 0x6e, 0x11, 0x23, 0x6f, 0x43, 0xc9, 0xf1, 0xac, 0x50, 0x97, 0x55, 0xf8, 0xff, 0x44,
+	0x02, 0x30, 0xd1, 0xa1, 0xa8, 0xc4, 0xdf, 0x81, 0xeb, 0xe2, 0xb9, 0x74, 0x3f, 0xf0, 0x86, 0xc4,
+	0x35, 0xdc, 0x1e, 0x51, 0x5f, 0xe3, 0xe7, 0xd6, 0x52, 0x3d, 0xf7, 0xa3, 0x11, 0x0c, 0x97, 0xc3,
+	0x29, 0x09, 0xda, 0x82, 0xb2, 0x48, 0x08, 0x1a, 0xd8, 0x96, 0x45, 0x02, 0x46, 0xe8, 0x35, 0xee,
+	0xc3, 0x0a, 0x97, 0xb7, 0x85, 0xf8, 0xd4, 0x44, 0x0d, 0xc8, 0x7b, 0x3e, 0xef, 0x54, 0xea, 0x4d,
+	0x7e, 0x7a, 0x2a, 0x5a, 0x9f, 0x0b, 0x08, 0x8e, 0xb0, 0xe8, 0x26, 0xe4, 0x1d, 0xcf, 0xd2, 0x07,
+	0x81, 0xa3, 0xae, 0x8b, 0x6a, 0xe4, 0x78, 0x56, 0x27, 0x70, 0xd0, 0x77, 0x61, 0x39, 0x1c, 0x74,
+	0x43, 0x6a, 0xd3, 0x81, 0x38, 0x65, 0x83, 0x93, 0xf2, 0x7e, 0xba, 0xe4, 0x89, 0x23, 0x1b, 0xac,
+	0x7a, 0xe0, 0x49, 0x6b, 0x95, 0x7d, 0x40, 0xb3, 0x4a, 0xac, 0x74, 0x3d, 0x21, 0x57, 0x32, 0xb5,
+	0xd9, 0x27, 0xba, 0x01, 0x8b, 0x43, 0xc3, 0x19, 0x44, 0xed, 0x48, 0x2c, 0xf6, 0x32, 0xbb, 0x8a,
+	0xf6, 0x23, 0xc8, 0x89, 0x1c, 0x45, 0x08, 0x56, 0x5a, 0xed, 0x83, 0x76, 0xa7, 0xa5, 0x77, 0x9a,
+	0x9f, 0x36, 0xcf, 0x3f, 0x6f, 0x96, 0xaf, 0x21, 0x80, 0xdc, 0x37, 0x3a, 0x8d, 0x4e, 0xe3, 0xa8,
+	0xac, 0xa0, 0x12, 0xe4, 0x3f, 0x3f, 0xc7, 0x9f, 0x9e, 0x36, 0x8f, 0xcb, 0x19, 0xb6, 0x68, 0x75,
+	0xea, 0xf5, 0x46, 0xab, 0x55, 0xce, 0xb2, 0xc5, 0xc3, 0x83, 0xd3, 0xb3, 0x0e, 0x6e, 0x94, 0x17,
+	0x98, 0x99, 0xd3, 0x66, 0xbb, 0x81, 0x9b, 0x07, 0x67, 0x7a, 0x03, 0xe3, 0x73, 0x5c, 0x5e, 0x64,
+	0x0a, 0xed, 0xd3, 0xcf, 0x1a, 0xe7, 0x9d, 0x76, 0x39, 0x87, 0x96, 0xa1, 0x58, 0x3f, 0x68, 0xd6,
+	0x1b, 0x67, 0x67, 0x8d, 0xa3, 0x72, 0x5e, 0x6b, 0xc3, 0x9a, 0x8c, 0xa9, 0xec, 0xb6, 0x9f, 0x11,
+	0x6a, 0x98, 0x06, 0x35, 0xd0, 0x1e, 0x2c, 0xf2, 0x80, 0xf0, 0x8b, 0x94, 0x76, 0xde, 0x4c, 0x13,
+	0x33, 0x2c, 0x20, 0xda, 0x1f, 0xb2, 0x50, 0x9e, 0x26, 0x0a, 0x32, 0xe1, 0x66, 0x40, 0x42, 0xcf,
+	0x19, 0x12, 0x56, 0x2a, 0x27, 0x9a, 0x61, 0x76, 0xfe, 0x66, 0x88, 0x5f, 0x8b, 0x8c, 0x4d, 0x0e,
+	0x1f, 0xdf, 0x86, 0x1b, 0xa3, 0x53, 0xe2, 0xbd, 0x31, 0x37, 0x67, 0x6f, 0xc4, 0x28, 0x32, 0x13,
+	0x1b, 0x3d, 0xbe, 0xc7, 0x52, 0xdc, 0x21, 0xfa, 0xa5, 0x11, 0x5e, 0x92, 0x50, 0x5d, 0xe0, 0x6c,
+	0xfa, 0x64, 0xce, 0x8c, 0xa9, 0x3e, 0xb4, 0x1d, 0x72, 0xc2, 0x2d, 0x08, 0x56, 0xc1, 0xc5, 0x48,
+	0x50, 0xb9, 0x84, 0xd5, 0xa9, 0xed, 0x17, 0xf0, 0xe9, 0x93, 0x38, 0x9f, 0x92, 0x2f, 0x35, 0x36,
+	0x18, 0xa7, 0x5e, 0x13, 0x60, 0xbc, 0x81, 0xf6, 0xa1, 0x38, 0xba, 0x99, 0xaa, 0xf0, 0x7b, 0xdd,
+	0x49, 0x30, 0xcb, 0x90, 0xb8, 0x10, 0xf9, 0xae, 0xfd, 0x58, 0x81, 0x05, 0xf6, 0x81, 0xf6, 0x61,
+	0x81, 0x5e, 0xf9, 0xa2, 0xe9, 0xaf, 0x24, 0x3e, 0x2a, 0x83, 0xf0, 0x7f, 0xda, 0x57, 0x3e, 0xc1,
+	0x1c, 0x39, 0x99, 0x2f, 0x4b, 0xd2, 0x69, 0x6d, 0x13, 0x0a, 0x91, 0x1e, 0x2a, 0xc0, 0x42, 0xf3,
+	0xbc, 0xd9, 0x10, 0x39, 0xd2, 0x3a, 0x39, 0xd8, 0xf9, 0xe0, 0x6b, 0x65, 0x45, 0xf3, 0x00, 0xd5,
+	0x79, 0x29, 0x17, 0x64, 0x24, 0x3f, 0x18, 0x90, 0x90, 0x26, 0xcd, 0x8b, 0x23, 0x9e, 0x67, 0xe6,
+	0xe7, 0xf9, 0x3e, 0xac, 0x1e, 0x13, 0x3a, 0xcf, 0x69, 0xa2, 0xed, 0x67, 0xa2, 0xb6, 0xaf, 0xfd,
+	0x5c, 0x81, 0xeb, 0x67, 0x76, 0x28, 0x6c, 0x84, 0x29, 0x8d, 0xdc, 0x82, 0xa2, 0xcf, 0xb3, 0xc7,
+	0x7e, 0x2a, 0x62, 0xb4, 0x88, 0x0b, 0x4c, 0xd0, 0xb2, 0x9f, 0x8a, 0xf1, 0x98, 0x6d, 0x52, 0xef,
+	0x09, 0x71, 0xe5, 0x74, 0xc6, 0xd5, 0xdb, 0x4c, 0xc0, 0x7a, 0xc6, 0x85, 0xed, 0x50, 0x12, 0xf0,
+	0x06, 0x55, 0xc4, 0x72, 0xa5, 0x3d, 0x05, 0x14, 0xf7, 0x23, 0xf4, 0x3d, 0x37, 0x24, 0xe8, 0x23,
+	0x36, 0xca, 0x33, 0x89, 0xe4, 0x44, 0xba, 0xe8, 0x48, 0x0c, 0x7a, 0x1b, 0x56, 0x5d, 0xf2, 0x05,
+	0xd5, 0x63, 0xfe, 0x88, 0x9b, 0x2f, 0x33, 0xf1, 0xa3, 0xc8, 0x27, 0xad, 0x0e, 0xa8, 0xce, 0x32,
+	0xc3, 0x79, 0x95, 0x48, 0xfe, 0x6c, 0x01, 0x96, 0x0e, 0x63, 0xed, 0x65, 0x66, 0xc2, 0xda, 0x84,
+	0x92, 0x49, 0xc2, 0x5e, 0x60, 0xf3, 0xae, 0xc1, 0xa7, 0x8b, 0x22, 0x8e, 0x8b, 0x50, 0x1b, 0xca,
+	0x51, 0xcb, 0xa2, 0xa4, 0xef, 0x3b, 0x06, 0x8d, 0x46, 0x80, 0x39, 0xea, 0xc6, 0xaa, 0x34, 0xd1,
+	0x96, 0x16, 0xd0, 0x47, 0x11, 0xc1, 0x16, 0xd2, 0x13, 0xec, 0xe4, 0x9a, 0xa4, 0x18, 0x7a, 0x1d,
+	0x78, 0x8a, 0xf1, 0x31, 0xba, 0x20, 0x7f, 0x6f, 0x8c, 0x24, 0xd3, 0xb3, 0xce, 0xe2, 0x5c, 0xb3,
+	0x4e, 0x05, 0x0a, 0xa6, 0x1d, 0x1a, 0x5d, 0x87, 0x98, 0x6a, 0x71, 0x53, 0xd9, 0x2a, 0xe0, 0xd1,
+	0x1a, 0x99, 0xd3, 0x9d, 0x53, 0x8c, 0x73, 0x1f, 0xa7, 0x71, 0x5e, 0x3e, 0xc0, 0xff, 0xa2, 0x81,
+	0x1e, 0x96, 0x61, 0x45, 0xce, 0x1a, 0x32, 0xdc, 0xda, 0x4f, 0x14, 0x58, 0x8f, 0x55, 0x01, 0xe9,
+	0x4c, 0x4a, 0x52, 0x35, 0x20, 0x2f, 0x9f, 0x4f, 0x96, 0x83, 0x77, 0xe7, 0xb8, 0x30, 0x8e, 0xb0,
+	0xda, 0x63, 0x58, 0x8b, 0xea, 0xc2, 0x7c, 0xe7, 0x6f, 0x00, 0xc4, 0x86, 0x26, 0x71, 0xdb, 0x22,
+	0x8d, 0xe6, 0x25, 0xed, 0x43, 0x50, 0x47, 0x49, 0x2a, 0x0d, 0xa7, 0xac, 0x19, 0x9a, 0x09, 0xeb,
+	0x2f, 0x80, 0xca, 0x34, 0x3f, 0x86, 0x82, 0x3c, 0x24, 0x4a, 0xf4, 0xb9, 0xee, 0x3d, 0x02, 0x6b,
+	0xdf, 0x84, 0xf5, 0x23, 0xe2, 0x90, 0xff, 0x28, 0xf6, 0x09, 0x77, 0xff, 0xbd, 0x02, 0xeb, 0x1d,
+	0xdf, 0x34, 0xfe, 0x0b, 0xb6, 0xe3, 0xcf, 0x9e, 0x7d, 0x85, 0x67, 0xff, 0x4d, 0x46, 0x96, 0x20,
+	0x39, 0xa1, 0xa2, 0x2e, 0xac, 0xcd, 0xcc, 0xd9, 0xe3, 0x16, 0x3b, 0x6f, 0x73, 0xbc, 0x31, 0x3d,
+	0x69, 0xf3, 0x76, 0xeb, 0xb3, 0xb1, 0x8a, 0x07, 0x81, 0x98, 0xfa, 0x90, 0x04, 0xf6, 0xc5, 0x95,
+	0x2e, 0x06, 0x63, 0xf9, 0x53, 0x71, 0x77, 0x8e, 0x99, 0xba, 0xfa, 0x98, 0x1b, 0x10, 0x2b, 0x36,
+	0x62, 0x49, 0xc3, 0x71, 0xb1, 0x56, 0x85, 0xa5, 0xf8, 0x1a, 0x95, 0x61, 0xa9, 0x79, 0xde, 0xd6,
+	0x1f, 0x37, 0xf0, 0xe9, 0xc3, 0xd3, 0xc6, 0x51, 0xf9, 0x1a, 0x5a, 0x82, 0xc2, 0x68, 0xa5, 0xec,
+	0xfc, 0xb3, 0x04, 0x50, 0x67, 0x47, 0x8a, 0x5f, 0xbe, 0xbf, 0x52, 0xa0, 0x14, 0x4b, 0x50, 0xb4,
+	0x9d, 0xe0, 0xdf, 0x6c, 0x4b, 0xaf, 0x6c, 0x44, 0x90, 0xd8, 0x7f, 0x7b, 0x55, 0x47, 0x23, 0xac,
+	0x56, 0xfb, 0xe9, 0xdf, 0xff, 0xf1, 0xeb, 0xcc, 0x3b, 0xda, 0x66, 0x6d, 0xb8, 0x5d, 0x93, 0x24,
+	0x08, 0x6b, 0xcf, 0xc6, 0x04, 0x79, 0x5e, 0x13, 0x1d, 0x6a, 0x4f, 0x16, 0xd9, 0x5f, 0x2a, 0x50,
+	0x88, 0x12, 0x16, 0x55, 0x13, 0xfc, 0x99, 0xea, 0xf8, 0x95, 0x54, 0x05, 0x5d, 0x7b, 0x9f, 0xfb,
+	0xf4, 0x15, 0xf4, 0x56, 0x92, 0x4f, 0xb5, 0x67, 0xb6, 0xf9, 0x1c, 0xfd, 0x56, 0x01, 0x18, 0xf7,
+	0x63, 0xf4, 0xd5, 0x84, 0x33, 0x66, 0x46, 0x88, 0xca, 0xf6, 0x1c, 0x08, 0x51, 0x05, 0xb4, 0x2d,
+	0xee, 0xa2, 0x86, 0x12, 0xc3, 0x86, 0x7e, 0xc7, 0x9e, 0x70, 0xdc, 0xb1, 0x93, 0x9f, 0x70, 0xa6,
+	0xbb, 0xa7, 0x8c, 0xda, 0x7d, 0xee, 0xd2, 0xb6, 0xf6, 0x5e, 0xaa, 0xa8, 0xed, 0xf5, 0xf8, 0x39,
+	0x7b, 0xca, 0x5d, 0xf4, 0x27, 0x65, 0x62, 0x16, 0x8c, 0x66, 0x82, 0xdd, 0xf4, 0x5c, 0x9b, 0x2c,
+	0x30, 0x95, 0x79, 0x2a, 0x82, 0x76, 0x8f, 0xbb, 0xfd, 0xbe, 0xa6, 0xbd, 0xdc, 0xed, 0xa8, 0x64,
+	0xee, 0x45, 0xd5, 0x03, 0xfd, 0x51, 0x19, 0x4f, 0x93, 0x91, 0xbf, 0x1f, 0xa4, 0xe4, 0xe2, 0xab,
+	0x38, 0x2b, 0x63, 0x8c, 0x6a, 0xc9, 0xce, 0xd6, 0x9e, 0x8d, 0xab, 0xe8, 0x73, 0xf4, 0xe7, 0xf8,
+	0xec, 0x1a, 0xf5, 0x14, 0x74, 0x3f, 0x2d, 0xf1, 0xa6, 0x1a, 0x58, 0x65, 0x77, 0x7e, 0xa0, 0x24,
+	0xee, 0x5d, 0x7e, 0x83, 0x37, 0x51, 0x8a, 0x70, 0x33, 0xea, 0xa2, 0xd9, 0x16, 0x95, 0x48, 0x8c,
+	0x97, 0x76, 0xb5, 0xca, 0xda, 0xcc, 0xb4, 0xd5, 0xe8, 0xfb, 0xf4, 0x2a, 0x0a, 0xeb, 0xdd, 0xb9,
+	0xc3, 0xfa, 0x37, 0x05, 0xd0, 0x6c, 0xa3, 0x4b, 0xf4, 0xf0, 0xa5, 0xbd, 0x71, 0x3e, 0x36, 0xec,
+	0x73, 0xb7, 0xf7, 0x76, 0xe6, 0x75, 0x7b, 0xc4, 0xe3, 0xc3, 0x27, 0xa0, 0xf6, 0xbc, 0x7e, 0x74,
+	0xe6, 0xc4, 0x51, 0x8f, 0x94, 0x6f, 0x1d, 0x4b, 0xb9, 0xe5, 0x39, 0x86, 0x6b, 0x55, 0xbd, 0xc0,
+	0xaa, 0x59, 0xc4, 0xe5, 0xb1, 0xab, 0x89, 0x2d, 0xc3, 0xb7, 0xc3, 0x97, 0xfc, 0xf1, 0xe4, 0xc1,
+	0x78, 0xf5, 0x65, 0x26, 0x7b, 0x5c, 0x3f, 0xec, 0xe6, 0x38, 0xf2, 0xde, 0xbf, 0x02, 0x00, 0x00,
+	0xff, 0xff, 0xc6, 0xf0, 0xf0, 0x91, 0x75, 0x19, 0x00, 0x00,
 }
diff --git a/googleapis/devtools/clouddebugger/v2/data.pb.go b/googleapis/devtools/clouddebugger/v2/data.pb.go
index 9a51ab6e..fbad60c3 100644
--- a/googleapis/devtools/clouddebugger/v2/data.pb.go
+++ b/googleapis/devtools/clouddebugger/v2/data.pb.go
@@ -29,6 +29,8 @@ const (
 	StatusMessage_BREAKPOINT_CONDITION StatusMessage_Reference = 4
 	// Status applies to the breakpoint and is related to its expressions.
 	StatusMessage_BREAKPOINT_EXPRESSION StatusMessage_Reference = 7
+	// Status applies to the breakpoint and is related to its age.
+	StatusMessage_BREAKPOINT_AGE StatusMessage_Reference = 8
 	// Status applies to the entire variable.
 	StatusMessage_VARIABLE_NAME StatusMessage_Reference = 5
 	// Status applies to variable value (variable name is valid).
@@ -40,6 +42,7 @@ var StatusMessage_Reference_name = map[int32]string{
 	3: "BREAKPOINT_SOURCE_LOCATION",
 	4: "BREAKPOINT_CONDITION",
 	7: "BREAKPOINT_EXPRESSION",
+	8: "BREAKPOINT_AGE",
 	5: "VARIABLE_NAME",
 	6: "VARIABLE_VALUE",
 }
@@ -48,6 +51,7 @@ var StatusMessage_Reference_value = map[string]int32{
 	"BREAKPOINT_SOURCE_LOCATION": 3,
 	"BREAKPOINT_CONDITION":       4,
 	"BREAKPOINT_EXPRESSION":      7,
+	"BREAKPOINT_AGE":             8,
 	"VARIABLE_NAME":              5,
 	"VARIABLE_VALUE":             6,
 }
@@ -806,82 +810,83 @@ func init() {
 func init() { proto.RegisterFile("google/devtools/clouddebugger/v2/data.proto", fileDescriptor1) }
 
 var fileDescriptor1 = []byte{
-	// 1232 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4d, 0x73, 0xdb, 0xb6,
-	0x16, 0x8d, 0x3e, 0x2c, 0x91, 0x97, 0x96, 0xac, 0xe0, 0x25, 0x6f, 0x18, 0xbf, 0x3c, 0x47, 0xa3,
-	0x97, 0x85, 0xe7, 0x35, 0x23, 0x25, 0xca, 0xb4, 0x93, 0x34, 0x2b, 0x59, 0xa6, 0x5d, 0x4d, 0x14,
-	0x49, 0x81, 0x6c, 0xb7, 0xd3, 0x0d, 0x0b, 0x8b, 0x10, 0xcb, 0x86, 0x22, 0x59, 0x00, 0x52, 0x9d,
-	0x6d, 0xa7, 0x3f, 0xa2, 0x8b, 0xfe, 0xb7, 0xee, 0xba, 0xee, 0x4f, 0xe8, 0x00, 0x04, 0x15, 0x2a,
-	0x69, 0xab, 0xb8, 0xc9, 0xee, 0xe2, 0xe0, 0xdc, 0x03, 0xea, 0xe2, 0xdc, 0x4b, 0x0a, 0x3e, 0xf1,
-	0xe3, 0xd8, 0x0f, 0x69, 0xc7, 0xa3, 0x2b, 0x11, 0xc7, 0x21, 0xef, 0xcc, 0xc2, 0x78, 0xe9, 0x79,
-	0xf4, 0x72, 0xe9, 0xfb, 0x94, 0x75, 0x56, 0xdd, 0x8e, 0x47, 0x04, 0x69, 0x27, 0x2c, 0x16, 0x31,
-	0x6a, 0xa6, 0xe4, 0x76, 0x46, 0x6e, 0x6f, 0x90, 0xdb, 0xab, 0xee, 0xfe, 0x5d, 0x2d, 0x47, 0x92,
-	0xa0, 0x43, 0xa2, 0x28, 0x16, 0x44, 0x04, 0x71, 0xc4, 0xd3, 0xfc, 0xfd, 0xf6, 0xdb, 0x87, 0xf1,
-	0x78, 0xc9, 0x66, 0xb4, 0xb3, 0x7a, 0xa4, 0x23, 0x77, 0x16, 0x47, 0x82, 0x5e, 0x09, 0xcd, 0xbf,
-	0xa7, 0xf9, 0x6a, 0x75, 0xb9, 0x9c, 0x77, 0x44, 0xb0, 0xa0, 0x5c, 0x90, 0x45, 0xa2, 0x09, 0x07,
-	0x6f, 0x13, 0x7e, 0x60, 0x24, 0x49, 0x28, 0xd3, 0x07, 0xb6, 0x4e, 0xa1, 0x76, 0x12, 0xb3, 0x05,
-	0x11, 0x2f, 0x28, 0xe7, 0xc4, 0xa7, 0xe8, 0xdf, 0x50, 0x99, 0x2b, 0xc0, 0x2e, 0x34, 0x0b, 0x87,
-	0x26, 0xd6, 0x2b, 0x74, 0x00, 0x90, 0x10, 0x46, 0x16, 0x54, 0x50, 0xc6, 0xed, 0x62, 0xb3, 0x74,
-	0x68, 0xe2, 0x1c, 0xd2, 0xfa, 0xbd, 0x08, 0xb5, 0xa9, 0x20, 0x62, 0xc9, 0x33, 0xa5, 0x3b, 0x60,
-	0x04, 0xdc, 0xa5, 0x8c, 0xc5, 0x4c, 0x69, 0x19, 0xb8, 0x1a, 0x70, 0x47, 0x2e, 0xd1, 0x05, 0x98,
-	0x8c, 0xce, 0x29, 0xe3, 0xae, 0x88, 0xed, 0x62, 0xb3, 0x70, 0x58, 0xef, 0x3e, 0x6d, 0x6f, 0x2b,
-	0x5d, 0x7b, 0x43, 0xbe, 0x8d, 0xa5, 0x00, 0x8d, 0x66, 0x14, 0x1b, 0xa9, 0xd6, 0x59, 0x8c, 0x5e,
-	0x82, 0xe5, 0x51, 0x3e, 0x63, 0x41, 0x22, 0x8b, 0x6a, 0x97, 0x9a, 0x85, 0x43, 0xab, 0xdb, 0xd9,
-	0xae, 0xbc, 0x51, 0x02, 0x9c, 0xd7, 0x68, 0xfd, 0x5c, 0x00, 0x73, 0x7d, 0x14, 0xda, 0x03, 0xeb,
-	0x7c, 0x34, 0x9d, 0x38, 0xfd, 0xc1, 0xc9, 0xc0, 0x39, 0x6e, 0xdc, 0x40, 0x07, 0xb0, 0x7f, 0x84,
-	0x9d, 0xde, 0xf3, 0xc9, 0x78, 0x30, 0x3a, 0x73, 0xa7, 0xe3, 0x73, 0xdc, 0x77, 0xdc, 0xe1, 0xb8,
-	0xdf, 0x3b, 0x1b, 0x8c, 0x47, 0x8d, 0x12, 0xb2, 0xe1, 0x56, 0x6e, 0xbf, 0x3f, 0x1e, 0x1d, 0x0f,
-	0xd4, 0x4e, 0x19, 0xdd, 0x81, 0xdb, 0xb9, 0x1d, 0xe7, 0xab, 0x09, 0x76, 0xa6, 0x53, 0xb9, 0x55,
-	0x45, 0x37, 0xa1, 0x76, 0xd1, 0xc3, 0x83, 0xde, 0xd1, 0xd0, 0x71, 0x47, 0xbd, 0x17, 0x4e, 0x63,
-	0x07, 0x21, 0xa8, 0xaf, 0xa1, 0x8b, 0xde, 0xf0, 0xdc, 0x69, 0x54, 0x5a, 0x4f, 0xa0, 0x3e, 0x55,
-	0xa6, 0x18, 0xc6, 0x33, 0xe5, 0x22, 0x84, 0xa0, 0x9c, 0x10, 0xf1, 0xad, 0xbe, 0x3a, 0x15, 0x4b,
-	0x2c, 0x0c, 0x22, 0xaa, 0xca, 0xbc, 0x83, 0x55, 0xdc, 0xfa, 0xa5, 0x08, 0xc6, 0x05, 0x61, 0x01,
-	0xb9, 0x0c, 0xa9, 0x24, 0x44, 0x64, 0x41, 0xb3, 0x24, 0x19, 0xa3, 0x5b, 0xb0, 0xb3, 0x22, 0xe1,
-	0x32, 0xcd, 0x32, 0x71, 0xba, 0x90, 0x4c, 0xf1, 0x3a, 0xa1, 0x76, 0x25, 0x65, 0xca, 0x18, 0x1d,
-	0x43, 0x75, 0x41, 0x17, 0x97, 0xd2, 0x14, 0xa5, 0x66, 0xe9, 0xd0, 0xea, 0xfe, 0x7f, 0x7b, 0xb9,
-	0xb3, 0xa3, 0x71, 0x96, 0x8a, 0xfa, 0xb0, 0xb7, 0x22, 0xcc, 0x15, 0x12, 0x75, 0x83, 0xc8, 0xa3,
-	0x57, 0x76, 0x59, 0x5d, 0xde, 0x7f, 0x32, 0xb5, 0xcc, 0xc0, 0xed, 0x41, 0x24, 0x1e, 0x77, 0x2f,
-	0xe4, 0xf3, 0xe0, 0xda, 0x8a, 0xb0, 0x33, 0x99, 0x32, 0x90, 0x19, 0xe8, 0x14, 0x2a, 0x5c, 0x59,
-	0xc4, 0xde, 0x79, 0xdf, 0x8b, 0xdf, 0xb0, 0x14, 0xd6, 0xe9, 0xad, 0x9f, 0x8a, 0x00, 0x53, 0x41,
-	0x66, 0xaf, 0x4e, 0xa4, 0xbd, 0xd1, 0x3e, 0x18, 0xf3, 0x65, 0x34, 0x53, 0x96, 0x4a, 0x8b, 0xb4,
-	0x5e, 0xa3, 0x21, 0x18, 0xa1, 0xae, 0xbe, 0xaa, 0x95, 0xd5, 0x7d, 0xf8, 0x1e, 0xa7, 0x6e, 0xdc,
-	0x1a, 0x5e, 0x2b, 0xa0, 0x2f, 0xc0, 0x24, 0xcc, 0x5f, 0x2e, 0x68, 0x24, 0xfe, 0x49, 0x39, 0xdf,
-	0x24, 0xa3, 0x23, 0xa8, 0x48, 0xd5, 0x90, 0xdb, 0xe5, 0x6b, 0xcb, 0xe8, 0xcc, 0xd6, 0xaf, 0x06,
-	0xc0, 0x11, 0xa3, 0xe4, 0x55, 0x12, 0x07, 0x91, 0x40, 0x75, 0x28, 0x06, 0x9e, 0x2e, 0x40, 0x31,
-	0xf0, 0xd0, 0x73, 0xa8, 0x90, 0xb4, 0x28, 0x35, 0xd5, 0xc1, 0x8f, 0xb7, 0x1f, 0xf1, 0x46, 0xad,
-	0xdd, 0x53, 0xa9, 0x58, 0x4b, 0x7c, 0xe4, 0x3a, 0xde, 0x05, 0x73, 0x16, 0x47, 0x5e, 0xb0, 0x9e,
-	0x02, 0x26, 0x7e, 0x03, 0xa0, 0x26, 0x58, 0xf4, 0x2a, 0x61, 0x94, 0x73, 0x39, 0x79, 0x55, 0x81,
-	0x4c, 0x9c, 0x87, 0xd0, 0x03, 0x40, 0x61, 0xec, 0xbb, 0x8b, 0xd4, 0x17, 0xae, 0x1e, 0x88, 0x75,
-	0x25, 0xd4, 0x08, 0x63, 0x5f, 0x1b, 0x26, 0x1d, 0x1b, 0x08, 0x83, 0x29, 0xd9, 0x21, 0x5d, 0xd1,
-	0xd0, 0xde, 0x53, 0xb5, 0xf8, 0xf4, 0x5a, 0xb5, 0x18, 0xc6, 0xfe, 0x50, 0x26, 0xcb, 0x5f, 0x90,
-	0x46, 0xe8, 0x3e, 0xd4, 0x03, 0xee, 0xce, 0x83, 0x88, 0x84, 0xae, 0x74, 0x25, 0x55, 0x9e, 0x36,
-	0xf0, 0x6e, 0xc0, 0x4f, 0x24, 0x28, 0x8d, 0x4b, 0xd1, 0x33, 0xb0, 0x66, 0x8c, 0x12, 0x41, 0x5d,
-	0x39, 0xf7, 0x6d, 0x4b, 0x15, 0x6e, 0xff, 0x9d, 0x96, 0x39, 0xcb, 0x5e, 0x0a, 0x18, 0x52, 0xba,
-	0x04, 0xd0, 0x53, 0x80, 0x54, 0x5f, 0xe5, 0xee, 0x6e, 0xcd, 0x35, 0x15, 0x5b, 0xa5, 0xfe, 0x17,
-	0x60, 0xc9, 0x29, 0x73, 0xe9, 0x82, 0x04, 0xa1, 0xdd, 0x48, 0x0b, 0x2c, 0x11, 0x47, 0x02, 0xb9,
-	0x46, 0x84, 0x0f, 0x6a, 0x44, 0x34, 0x86, 0x5d, 0x2e, 0xfb, 0xd0, 0x9d, 0xcb, 0x46, 0xe4, 0x76,
-	0x55, 0x79, 0xf9, 0xc1, 0x7b, 0xc9, 0xe9, 0xee, 0xc5, 0x16, 0x5f, 0xc7, 0x1c, 0xb9, 0x70, 0x9b,
-	0xca, 0x59, 0x46, 0x04, 0xf5, 0xdc, 0xbc, 0x09, 0x8c, 0x6b, 0x77, 0xc9, 0xad, 0xb5, 0x90, 0x93,
-	0x73, 0xce, 0x4b, 0xa8, 0xaf, 0x34, 0x23, 0x9d, 0x66, 0xb6, 0x79, 0x6d, 0xe5, 0x5a, 0xa6, 0xa0,
-	0x66, 0x1b, 0x9a, 0x40, 0x25, 0x24, 0x97, 0x34, 0xe4, 0xf6, 0x4d, 0x25, 0xf5, 0xe4, 0x7a, 0xde,
-	0x52, 0xa9, 0x4e, 0x24, 0xd8, 0x6b, 0xac, 0x75, 0xf6, 0x9f, 0x82, 0x95, 0x83, 0x51, 0x03, 0x4a,
-	0xaf, 0xe8, 0x6b, 0xdd, 0xd9, 0x32, 0xfc, 0xf3, 0xf1, 0xff, 0x79, 0xf1, 0x49, 0xa1, 0x75, 0x00,
-	0x95, 0xb4, 0x73, 0x91, 0x05, 0xd5, 0x7e, 0x6f, 0x72, 0x76, 0x8e, 0x9d, 0xc6, 0x0d, 0x54, 0x85,
-	0xd2, 0x70, 0x7c, 0xda, 0x28, 0xb4, 0x1e, 0x80, 0x91, 0xb9, 0x19, 0x19, 0x50, 0x1e, 0x8c, 0x4e,
-	0xc6, 0x8d, 0x1b, 0x92, 0xfb, 0x65, 0x0f, 0x8f, 0x06, 0xa3, 0xd3, 0x46, 0x01, 0x99, 0xb0, 0xe3,
-	0x60, 0x3c, 0xc6, 0x8d, 0x62, 0xeb, 0xb7, 0x32, 0x18, 0xc7, 0xe9, 0x73, 0xd3, 0x77, 0xe6, 0x8b,
-	0x0d, 0xd5, 0x84, 0xc5, 0xdf, 0xd1, 0x99, 0xd0, 0x8f, 0x91, 0x2d, 0xe5, 0xb7, 0xc8, 0x32, 0x0a,
-	0xbe, 0x5f, 0x06, 0xf3, 0x80, 0x32, 0xdd, 0xdf, 0x39, 0x44, 0x36, 0x78, 0xfe, 0x33, 0xa0, 0xac,
-	0x08, 0x79, 0x08, 0xdd, 0x03, 0x2b, 0xe0, 0x6e, 0x10, 0xc9, 0xe9, 0xb3, 0xca, 0x7a, 0x0b, 0x02,
-	0x3e, 0xd0, 0x08, 0xfa, 0x1f, 0xd4, 0x88, 0x4f, 0x23, 0xe1, 0xae, 0x28, 0x93, 0x37, 0xab, 0xdf,
-	0x79, 0xbb, 0x0a, 0xbc, 0x48, 0x31, 0xad, 0xe2, 0x05, 0x5c, 0xde, 0x93, 0x67, 0x57, 0x33, 0x95,
-	0x63, 0x8d, 0xe4, 0x1a, 0xc1, 0xf8, 0xb0, 0x46, 0x78, 0x09, 0x7b, 0x9b, 0xdf, 0x7f, 0x5c, 0xfb,
-	0xea, 0xf0, 0x1d, 0xc5, 0x94, 0xd7, 0x5e, 0x3d, 0xd2, 0xe3, 0xb1, 0x9f, 0x26, 0xe0, 0x3a, 0xcf,
-	0x2f, 0x39, 0xfa, 0x06, 0xfe, 0x45, 0xaf, 0x84, 0xfb, 0xb6, 0x6c, 0x4d, 0xc9, 0x3e, 0xfc, 0x1b,
-	0x59, 0xe7, 0x4a, 0xd0, 0xc8, 0xa3, 0xde, 0xa6, 0xfc, 0x4d, 0x7a, 0x25, 0xa6, 0x9b, 0x27, 0x8c,
-	0xd6, 0xc6, 0xb5, 0x94, 0xe8, 0x67, 0xdb, 0x7f, 0x7d, 0x66, 0x86, 0x8f, 0x6c, 0xdb, 0xa3, 0x1f,
-	0x0b, 0x70, 0x7f, 0x16, 0x2f, 0xb6, 0x3e, 0xc0, 0x91, 0x79, 0x4c, 0x04, 0x99, 0xc8, 0xe1, 0x37,
-	0x29, 0x7c, 0xfd, 0x42, 0xd3, 0xfd, 0x38, 0x24, 0x91, 0xdf, 0x8e, 0x99, 0xdf, 0xf1, 0x69, 0xa4,
-	0x46, 0x63, 0x27, 0xdd, 0x22, 0x49, 0xc0, 0xff, 0xfa, 0x9f, 0xc1, 0xb3, 0x0d, 0xe0, 0xb2, 0xa2,
-	0x32, 0x1f, 0xff, 0x11, 0x00, 0x00, 0xff, 0xff, 0x56, 0xc4, 0x6b, 0x67, 0x52, 0x0c, 0x00, 0x00,
+	// 1239 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x5f, 0x73, 0xda, 0xc6,
+	0x16, 0x0f, 0x7f, 0x0c, 0xd2, 0xc1, 0x60, 0x65, 0x6f, 0x72, 0x47, 0xf1, 0xcd, 0x75, 0x18, 0x6e,
+	0x1e, 0x3c, 0xb7, 0x19, 0x48, 0xc8, 0xb4, 0x93, 0x34, 0x4f, 0x18, 0xcb, 0x2e, 0x13, 0x02, 0x64,
+	0xb1, 0xdd, 0x4e, 0x5f, 0xd4, 0x35, 0x5a, 0x54, 0x35, 0x42, 0x52, 0x77, 0x17, 0xea, 0xbc, 0x76,
+	0xf2, 0x31, 0xfa, 0x11, 0xfa, 0x9d, 0xfa, 0xd6, 0xcf, 0xd1, 0xd9, 0xd5, 0x8a, 0x88, 0xa4, 0x2d,
+	0x71, 0x93, 0xb7, 0xb3, 0xbf, 0xfd, 0x9d, 0xdf, 0x8a, 0xb3, 0xbf, 0x73, 0x24, 0xe0, 0x33, 0x3f,
+	0x8e, 0xfd, 0x90, 0x76, 0x3c, 0xba, 0x12, 0x71, 0x1c, 0xf2, 0xce, 0x2c, 0x8c, 0x97, 0x9e, 0x47,
+	0x2f, 0x97, 0xbe, 0x4f, 0x59, 0x67, 0xd5, 0xed, 0x78, 0x44, 0x90, 0x76, 0xc2, 0x62, 0x11, 0xa3,
+	0x66, 0x4a, 0x6e, 0x67, 0xe4, 0xf6, 0x06, 0xb9, 0xbd, 0xea, 0xee, 0xdf, 0xd5, 0x72, 0x24, 0x09,
+	0x3a, 0x24, 0x8a, 0x62, 0x41, 0x44, 0x10, 0x47, 0x3c, 0xcd, 0xdf, 0x6f, 0xbf, 0x7b, 0x18, 0x8f,
+	0x97, 0x6c, 0x46, 0x3b, 0xab, 0x47, 0x3a, 0x72, 0x67, 0x71, 0x24, 0xe8, 0x95, 0xd0, 0xfc, 0x7b,
+	0x9a, 0xaf, 0x56, 0x97, 0xcb, 0x79, 0x47, 0x04, 0x0b, 0xca, 0x05, 0x59, 0x24, 0x9a, 0x70, 0xf0,
+	0x2e, 0xe1, 0x27, 0x46, 0x92, 0x84, 0x32, 0x7d, 0x60, 0xeb, 0x14, 0xea, 0x27, 0x31, 0x5b, 0x10,
+	0xf1, 0x82, 0x72, 0x4e, 0x7c, 0x8a, 0xfe, 0x0d, 0x95, 0xb9, 0x02, 0xec, 0x42, 0xb3, 0x70, 0x68,
+	0x62, 0xbd, 0x42, 0x07, 0x00, 0x09, 0x61, 0x64, 0x41, 0x05, 0x65, 0xdc, 0x2e, 0x36, 0x4b, 0x87,
+	0x26, 0xce, 0x21, 0xad, 0x37, 0x25, 0xa8, 0x4f, 0x05, 0x11, 0x4b, 0x9e, 0x29, 0xdd, 0x01, 0x23,
+	0xe0, 0x2e, 0x65, 0x2c, 0x66, 0x4a, 0xcb, 0xc0, 0xd5, 0x80, 0x3b, 0x72, 0x89, 0x2e, 0xc0, 0x64,
+	0x74, 0x4e, 0x19, 0x77, 0x45, 0x6c, 0x17, 0x9b, 0x85, 0xc3, 0x46, 0xf7, 0x69, 0x7b, 0x5b, 0xe9,
+	0xda, 0x1b, 0xf2, 0x6d, 0x2c, 0x05, 0x68, 0x34, 0xa3, 0xd8, 0x48, 0xb5, 0xce, 0x62, 0xf4, 0x12,
+	0x6a, 0x1e, 0xe5, 0x33, 0x16, 0x24, 0xb2, 0xa8, 0x76, 0xa9, 0x59, 0x38, 0xac, 0x75, 0x3b, 0xdb,
+	0x95, 0x37, 0x4a, 0x80, 0xf3, 0x1a, 0xad, 0x5f, 0x0b, 0x60, 0xae, 0x8f, 0x42, 0x7b, 0x50, 0x3b,
+	0x1f, 0x4d, 0x27, 0x4e, 0x7f, 0x70, 0x32, 0x70, 0x8e, 0xad, 0x1b, 0xe8, 0x00, 0xf6, 0x8f, 0xb0,
+	0xd3, 0x7b, 0x3e, 0x19, 0x0f, 0x46, 0x67, 0xee, 0x74, 0x7c, 0x8e, 0xfb, 0x8e, 0x3b, 0x1c, 0xf7,
+	0x7b, 0x67, 0x83, 0xf1, 0xc8, 0x2a, 0x21, 0x1b, 0x6e, 0xe5, 0xf6, 0xfb, 0xe3, 0xd1, 0xf1, 0x40,
+	0xed, 0x94, 0xd1, 0x1d, 0xb8, 0x9d, 0xdb, 0x71, 0xbe, 0x99, 0x60, 0x67, 0x3a, 0x95, 0x5b, 0x55,
+	0x84, 0xa0, 0x91, 0xdb, 0xea, 0x9d, 0x3a, 0x96, 0x81, 0x6e, 0x42, 0xfd, 0xa2, 0x87, 0x07, 0xbd,
+	0xa3, 0xa1, 0xe3, 0x8e, 0x7a, 0x2f, 0x1c, 0x6b, 0x47, 0xd2, 0xd6, 0xd0, 0x45, 0x6f, 0x78, 0xee,
+	0x58, 0x95, 0xd6, 0x13, 0x68, 0x4c, 0x95, 0x51, 0x86, 0xf1, 0x4c, 0x39, 0x0b, 0x21, 0x28, 0x27,
+	0x44, 0x7c, 0xaf, 0xaf, 0x53, 0xc5, 0x12, 0x0b, 0x83, 0x88, 0xaa, 0xd2, 0xef, 0x60, 0x15, 0xb7,
+	0x7e, 0x29, 0x82, 0x71, 0x41, 0x58, 0x40, 0x2e, 0x43, 0x2a, 0x09, 0x11, 0x59, 0xd0, 0x2c, 0x49,
+	0xc6, 0xe8, 0x16, 0xec, 0xac, 0x48, 0xb8, 0x4c, 0xb3, 0x4c, 0x9c, 0x2e, 0x24, 0x53, 0xbc, 0x4e,
+	0xa8, 0x5d, 0x49, 0x99, 0x32, 0x46, 0xc7, 0x50, 0x5d, 0xd0, 0xc5, 0xa5, 0x34, 0x4a, 0xa9, 0x59,
+	0x3a, 0xac, 0x75, 0xff, 0xbf, 0xfd, 0x0a, 0xb2, 0xa3, 0x71, 0x96, 0x8a, 0xfa, 0xb0, 0xb7, 0x22,
+	0xcc, 0x15, 0x12, 0x75, 0x83, 0xc8, 0xa3, 0x57, 0x76, 0x59, 0x5d, 0xe8, 0x7f, 0x32, 0xb5, 0xcc,
+	0xd4, 0xed, 0x41, 0x24, 0x1e, 0x77, 0x2f, 0xe4, 0xf3, 0xe0, 0xfa, 0x8a, 0xb0, 0x33, 0x99, 0x32,
+	0x90, 0x19, 0xe8, 0x14, 0x2a, 0x5c, 0xd9, 0xc6, 0xde, 0xf9, 0x50, 0x33, 0x6c, 0xd8, 0x0c, 0xeb,
+	0xf4, 0xd6, 0x9b, 0x22, 0xc0, 0x54, 0x90, 0xd9, 0xab, 0x13, 0x69, 0x79, 0xb4, 0x0f, 0xc6, 0x7c,
+	0x19, 0xcd, 0x94, 0xcd, 0xd2, 0x22, 0xad, 0xd7, 0x68, 0x08, 0x46, 0xa8, 0xab, 0xaf, 0x6a, 0x55,
+	0xeb, 0x3e, 0xfc, 0x80, 0x53, 0x37, 0x6e, 0x0d, 0xaf, 0x15, 0xd0, 0x57, 0x60, 0x12, 0xe6, 0x2f,
+	0x17, 0x34, 0x12, 0xff, 0xa4, 0x9c, 0x6f, 0x93, 0xd1, 0x11, 0x54, 0xa4, 0x6a, 0xc8, 0xed, 0xf2,
+	0xb5, 0x65, 0x74, 0x66, 0xeb, 0x37, 0x03, 0xe0, 0x88, 0x51, 0xf2, 0x2a, 0x89, 0x83, 0x48, 0xa0,
+	0x06, 0x14, 0x03, 0x4f, 0x17, 0xa0, 0x18, 0x78, 0xe8, 0x39, 0x54, 0x48, 0x5a, 0x94, 0xba, 0xea,
+	0xea, 0xc7, 0xdb, 0x8f, 0x78, 0xab, 0xd6, 0xee, 0xa9, 0x54, 0xac, 0x25, 0x3e, 0x71, 0x1d, 0xef,
+	0x82, 0x39, 0x8b, 0x23, 0x2f, 0x58, 0x4f, 0x06, 0x13, 0xbf, 0x05, 0x50, 0x13, 0x6a, 0xf4, 0x2a,
+	0x61, 0x94, 0x73, 0x39, 0x8d, 0x55, 0x81, 0x4c, 0x9c, 0x87, 0xd0, 0x03, 0x40, 0x61, 0xec, 0xbb,
+	0x8b, 0xd4, 0x17, 0xae, 0x1e, 0x92, 0x0d, 0x25, 0x64, 0x85, 0xb1, 0xaf, 0x0d, 0x93, 0x8e, 0x12,
+	0x84, 0xc1, 0x94, 0xec, 0x90, 0xae, 0x68, 0x68, 0xef, 0xa9, 0x5a, 0x7c, 0x7e, 0xad, 0x5a, 0x0c,
+	0x63, 0x7f, 0x28, 0x93, 0xe5, 0x2f, 0x48, 0x23, 0x74, 0x1f, 0x1a, 0x01, 0x77, 0xe7, 0x41, 0x44,
+	0x42, 0x57, 0xba, 0x92, 0x2a, 0x4f, 0x1b, 0x78, 0x37, 0xe0, 0x27, 0x12, 0x94, 0xc6, 0xa5, 0xe8,
+	0x19, 0xd4, 0x66, 0x8c, 0x12, 0x41, 0x5d, 0xf9, 0x2e, 0xb0, 0x6b, 0xaa, 0x70, 0xfb, 0xef, 0xb5,
+	0xcc, 0x59, 0xf6, 0xa2, 0xc0, 0x90, 0xd2, 0x25, 0x80, 0x9e, 0x02, 0xa4, 0xfa, 0x2a, 0x77, 0x77,
+	0x6b, 0xae, 0xa9, 0xd8, 0x2a, 0xf5, 0xbf, 0x00, 0x4b, 0x4e, 0x99, 0x4b, 0x17, 0x24, 0x08, 0x6d,
+	0x2b, 0x2d, 0xb0, 0x44, 0x1c, 0x09, 0xe4, 0x1a, 0x11, 0x3e, 0xaa, 0x11, 0xd1, 0x18, 0x76, 0xb9,
+	0xec, 0x43, 0x77, 0x2e, 0x1b, 0x91, 0xdb, 0x55, 0xe5, 0xe5, 0x07, 0x1f, 0x24, 0xa7, 0xbb, 0x17,
+	0xd7, 0xf8, 0x3a, 0xe6, 0xc8, 0x85, 0xdb, 0x54, 0xce, 0x32, 0x22, 0xa8, 0xe7, 0xe6, 0x4d, 0x60,
+	0x5c, 0xbb, 0x4b, 0x6e, 0xad, 0x85, 0x9c, 0x9c, 0x73, 0x5e, 0x42, 0x63, 0xa5, 0x19, 0xe9, 0x34,
+	0xb3, 0xcd, 0x6b, 0x2b, 0xd7, 0x33, 0x05, 0x35, 0xdb, 0xd0, 0x04, 0x2a, 0x21, 0xb9, 0xa4, 0x21,
+	0xb7, 0x6f, 0x2a, 0xa9, 0x27, 0xd7, 0xf3, 0x96, 0x4a, 0x75, 0x22, 0xc1, 0x5e, 0x63, 0xad, 0xb3,
+	0xff, 0x14, 0x6a, 0x39, 0x18, 0x59, 0x50, 0x7a, 0x45, 0x5f, 0xeb, 0xce, 0x96, 0xe1, 0x9f, 0x8f,
+	0xff, 0x2f, 0x8b, 0x4f, 0x0a, 0xad, 0x03, 0xa8, 0xa4, 0x9d, 0x8b, 0x6a, 0x50, 0xed, 0xf7, 0x26,
+	0x67, 0xe7, 0xd8, 0xb1, 0x6e, 0xa0, 0x2a, 0x94, 0x86, 0xe3, 0x53, 0xab, 0xd0, 0x7a, 0x00, 0x46,
+	0xe6, 0x66, 0x64, 0x40, 0x79, 0x30, 0x3a, 0x19, 0x5b, 0x37, 0x24, 0xf7, 0xeb, 0x1e, 0x1e, 0x0d,
+	0x46, 0xa7, 0x56, 0x01, 0x99, 0xb0, 0xe3, 0x60, 0x3c, 0xc6, 0x56, 0xb1, 0xf5, 0x7b, 0x19, 0x8c,
+	0xe3, 0xf4, 0xb9, 0xe9, 0x7b, 0xf3, 0xc5, 0x86, 0x6a, 0xc2, 0xe2, 0x1f, 0xe8, 0x4c, 0xe8, 0xc7,
+	0xc8, 0x96, 0xf2, 0xfb, 0x64, 0x19, 0x05, 0x3f, 0x2e, 0x83, 0x79, 0x40, 0x99, 0xee, 0xef, 0x1c,
+	0x22, 0x1b, 0x3c, 0xff, 0x69, 0x50, 0x56, 0x84, 0x3c, 0x84, 0xee, 0x41, 0x2d, 0xe0, 0x6e, 0x10,
+	0xc9, 0xe9, 0xb3, 0xca, 0x7a, 0x0b, 0x02, 0x3e, 0xd0, 0x08, 0xfa, 0x1f, 0xd4, 0x89, 0x4f, 0x23,
+	0xe1, 0xae, 0x28, 0x93, 0x37, 0xab, 0xdf, 0x79, 0xbb, 0x0a, 0xbc, 0x48, 0x31, 0xad, 0xe2, 0x05,
+	0x5c, 0xde, 0x93, 0x67, 0x57, 0x33, 0x95, 0x63, 0x8d, 0xe4, 0x1a, 0xc1, 0xf8, 0xb8, 0x46, 0x78,
+	0x09, 0x7b, 0x9b, 0xdf, 0x84, 0x5c, 0xfb, 0xea, 0xf0, 0x3d, 0xc5, 0x94, 0xd7, 0x5e, 0x3d, 0xd2,
+	0xe3, 0xb1, 0x9f, 0x26, 0xe0, 0x06, 0xcf, 0x2f, 0x39, 0xfa, 0x0e, 0xfe, 0x45, 0xaf, 0x84, 0xfb,
+	0xae, 0x6c, 0x5d, 0xc9, 0x3e, 0xfc, 0x1b, 0x59, 0xe7, 0x4a, 0xd0, 0xc8, 0xa3, 0xde, 0xa6, 0xfc,
+	0x4d, 0x7a, 0x25, 0xa6, 0x9b, 0x27, 0x8c, 0xd6, 0xc6, 0xad, 0x29, 0xd1, 0x2f, 0xb6, 0xff, 0xfa,
+	0xcc, 0x0c, 0x9f, 0xd8, 0xb6, 0x47, 0x3f, 0x17, 0xe0, 0xfe, 0x2c, 0x5e, 0x6c, 0x7d, 0x80, 0x23,
+	0xf3, 0x98, 0x08, 0x32, 0x91, 0xc3, 0x6f, 0x52, 0xf8, 0xf6, 0x85, 0xa6, 0xfb, 0x71, 0x48, 0x22,
+	0xbf, 0x1d, 0x33, 0xbf, 0xe3, 0xd3, 0x48, 0x8d, 0xc6, 0x4e, 0xba, 0x45, 0x92, 0x80, 0xff, 0xf5,
+	0xbf, 0x85, 0x67, 0x1b, 0xc0, 0x65, 0x45, 0x65, 0x3e, 0xfe, 0x23, 0x00, 0x00, 0xff, 0xff, 0x00,
+	0xbf, 0x9b, 0x7e, 0x66, 0x0c, 0x00, 0x00,
 }
diff --git a/googleapis/devtools/clouddebugger/v2/debugger.pb.go b/googleapis/devtools/clouddebugger/v2/debugger.pb.go
index 3086a41d..fdfbfc42 100644
--- a/googleapis/devtools/clouddebugger/v2/debugger.pb.go
+++ b/googleapis/devtools/clouddebugger/v2/debugger.pb.go
@@ -596,54 +596,53 @@ var _Debugger2_serviceDesc = grpc.ServiceDesc{
 func init() { proto.RegisterFile("google/devtools/clouddebugger/v2/debugger.proto", fileDescriptor2) }
 
 var fileDescriptor2 = []byte{
-	// 769 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0xcb, 0x6e, 0xd3, 0x40,
-	0x14, 0xd5, 0xa4, 0xf4, 0x91, 0x9b, 0xa6, 0x2d, 0xa3, 0x3e, 0xac, 0xf0, 0x8a, 0xcc, 0xab, 0x14,
-	0x64, 0x23, 0x17, 0x41, 0x0b, 0x1b, 0x1a, 0x15, 0xa5, 0x91, 0x4a, 0x55, 0x19, 0x28, 0x12, 0x9b,
-	0xc8, 0x49, 0xa6, 0x96, 0xa9, 0xeb, 0x31, 0x9e, 0x71, 0x00, 0x55, 0xdd, 0x14, 0xa9, 0x7b, 0xc4,
-	0x0f, 0xf0, 0x01, 0x48, 0x7c, 0x01, 0x12, 0x6b, 0x58, 0xf2, 0x0b, 0x7c, 0x08, 0xb2, 0x3d, 0x6e,
-	0x9c, 0x60, 0x48, 0x9c, 0x4a, 0xdd, 0xd9, 0xd7, 0x73, 0xee, 0x9c, 0x73, 0xe6, 0xcc, 0x8c, 0x41,
-	0x35, 0x29, 0x35, 0x6d, 0xa2, 0xb6, 0x48, 0x9b, 0x53, 0x6a, 0x33, 0xb5, 0x69, 0x53, 0xbf, 0xd5,
-	0x22, 0x0d, 0xdf, 0x34, 0x89, 0xa7, 0xb6, 0x35, 0x35, 0x7e, 0x56, 0x5c, 0x8f, 0x72, 0x8a, 0xcb,
-	0x11, 0x40, 0x89, 0x01, 0x4a, 0x17, 0x40, 0x69, 0x6b, 0xa5, 0x8b, 0xa2, 0xa5, 0xe1, 0x5a, 0xaa,
-	0xe1, 0x38, 0x94, 0x1b, 0xdc, 0xa2, 0x0e, 0x8b, 0xf0, 0xa5, 0xdb, 0xfd, 0x27, 0x34, 0xb8, 0x21,
-	0x06, 0x5f, 0x10, 0x83, 0xc3, 0xb7, 0x86, 0xbf, 0xab, 0x92, 0x7d, 0x97, 0xbf, 0x8f, 0x3e, 0xca,
-	0x5f, 0x10, 0xcc, 0x3e, 0x23, 0xbc, 0xe2, 0x11, 0x63, 0xcf, 0xa5, 0x96, 0xc3, 0x75, 0xf2, 0xc6,
-	0x27, 0x8c, 0xe3, 0x2b, 0x50, 0x10, 0xfd, 0x48, 0xdd, 0x6a, 0x49, 0xa8, 0x8c, 0x16, 0xf3, 0x3a,
-	0xc4, 0xa5, 0x5a, 0x0b, 0x6f, 0x02, 0x34, 0x4e, 0x50, 0x52, 0xae, 0x8c, 0x16, 0x0b, 0xda, 0x1d,
-	0xa5, 0x9f, 0x30, 0x25, 0x31, 0x53, 0x02, 0x8f, 0xaf, 0xc3, 0x54, 0xd3, 0xb6, 0x88, 0xc3, 0xeb,
-	0x6d, 0xe2, 0x31, 0x8b, 0x3a, 0xd2, 0xb9, 0x70, 0xc6, 0x62, 0x54, 0xdd, 0x89, 0x8a, 0x32, 0x81,
-	0xb9, 0x1e, 0xb6, 0xcc, 0xa5, 0x0e, 0x23, 0x3d, 0x6c, 0xd0, 0xe9, 0xd8, 0xc8, 0x1f, 0x10, 0xcc,
-	0x56, 0x87, 0x72, 0xe5, 0x2a, 0x14, 0x3b, 0x7d, 0x82, 0x21, 0xb9, 0x70, 0xc8, 0x64, 0xa7, 0x58,
-	0x6b, 0x65, 0x10, 0x5b, 0x3d, 0x03, 0xb1, 0xc7, 0x08, 0x16, 0xd6, 0x89, 0x4d, 0x38, 0x39, 0x3b,
-	0xbd, 0x23, 0x69, 0x7a, 0x7f, 0x8e, 0xc0, 0xfc, 0xa6, 0xc5, 0x12, 0x8a, 0xd9, 0xc0, 0x3c, 0x96,
-	0xe0, 0xbc, 0xe5, 0x34, 0x6d, 0xbf, 0x45, 0xea, 0x86, 0x6d, 0xd7, 0x7d, 0x46, 0x3c, 0x16, 0x72,
-	0x99, 0xd0, 0xa7, 0xc5, 0x87, 0x35, 0xdb, 0x7e, 0x11, 0x94, 0xf1, 0x2d, 0x98, 0x89, 0xc7, 0x5a,
-	0x8e, 0xd1, 0xe4, 0x56, 0x9b, 0x84, 0x84, 0x3a, 0x43, 0x6b, 0xa2, 0x8c, 0x77, 0x61, 0x2c, 0x78,
-	0x12, 0x2b, 0x54, 0xd0, 0xb6, 0xfa, 0xbb, 0x9c, 0xae, 0x20, 0x61, 0xfe, 0x5a, 0xd8, 0x70, 0xc7,
-	0xb0, 0x7d, 0xa2, 0x8b, 0xee, 0xf8, 0x26, 0x14, 0x19, 0xf7, 0x2c, 0xb7, 0xee, 0x11, 0xe6, 0xdb,
-	0x9c, 0x49, 0xa3, 0x01, 0x9f, 0x4a, 0x4e, 0x42, 0xfa, 0x64, 0xf8, 0x41, 0x8f, 0xea, 0xf8, 0x12,
-	0xc0, 0x5b, 0xc3, 0xe2, 0x75, 0x4e, 0xf7, 0x88, 0x23, 0x8d, 0x85, 0x3e, 0xe4, 0x83, 0xca, 0xf3,
-	0xa0, 0x90, 0xe2, 0xf4, 0x44, 0x8a, 0xd3, 0xa5, 0x06, 0xcc, 0xa5, 0xf2, 0xc1, 0x35, 0x18, 0x6d,
-	0x07, 0x0f, 0xa1, 0xc3, 0x53, 0xda, 0x72, 0x96, 0x50, 0x29, 0x51, 0x23, 0x3d, 0xea, 0x20, 0x7f,
-	0x44, 0xb0, 0xf0, 0x97, 0x17, 0x22, 0xc0, 0x5b, 0x50, 0xe8, 0x04, 0x84, 0x49, 0xa8, 0x3c, 0x92,
-	0x39, 0xc1, 0xc9, 0x06, 0xf8, 0x06, 0x4c, 0x3b, 0xe4, 0x1d, 0xaf, 0x27, 0xac, 0x89, 0x72, 0x58,
-	0x0c, 0xca, 0x2f, 0x63, 0x7b, 0xe4, 0x23, 0x04, 0xb3, 0x01, 0xa7, 0x75, 0x11, 0x9c, 0x93, 0x7c,
-	0x49, 0x30, 0xee, 0x7a, 0xf4, 0x35, 0x69, 0x72, 0x01, 0x8c, 0x5f, 0xb3, 0x84, 0x65, 0xc0, 0x6d,
-	0x6d, 0xc0, 0x5c, 0x0f, 0x07, 0xe1, 0xca, 0x06, 0xe4, 0xe3, 0x44, 0xc7, 0x9e, 0x2c, 0xf5, 0xf7,
-	0x24, 0xee, 0xa3, 0x77, 0xc0, 0xda, 0xb7, 0x71, 0xc8, 0x8b, 0xba, 0xa7, 0xe1, 0x1f, 0x08, 0x8a,
-	0x5d, 0xa7, 0x26, 0xbe, 0xdf, 0xbf, 0x6d, 0xda, 0xa5, 0x50, 0x7a, 0x90, 0x19, 0x17, 0x49, 0x93,
-	0x37, 0x8e, 0x7e, 0xfd, 0xfe, 0x94, 0xab, 0xc8, 0xf7, 0x92, 0x97, 0xa1, 0x7a, 0x42, 0x58, 0x3d,
-	0x48, 0xec, 0xee, 0x43, 0x35, 0xb1, 0xb4, 0x2a, 0x23, 0xfc, 0x61, 0xf2, 0xa2, 0x08, 0xc4, 0x54,
-	0xb3, 0x8a, 0xa9, 0x0e, 0x29, 0xa6, 0xfa, 0x3f, 0x31, 0xf8, 0x71, 0x66, 0x31, 0x07, 0x5d, 0x67,
-	0xe5, 0x21, 0xfe, 0x8a, 0x60, 0xa6, 0xf7, 0xe8, 0xc5, 0xab, 0x83, 0xac, 0x79, 0xea, 0x71, 0x5d,
-	0x9a, 0x8f, 0xa1, 0xf1, 0x5d, 0xaf, 0x3c, 0x09, 0xee, 0xfa, 0x98, 0xf1, 0xd2, 0xe9, 0x19, 0x7f,
-	0x47, 0x30, 0xdd, 0xb3, 0xab, 0xf1, 0xca, 0xb0, 0x87, 0x62, 0x69, 0x75, 0x08, 0xa4, 0x58, 0x84,
-	0x95, 0x50, 0x92, 0x86, 0xef, 0x66, 0x95, 0x84, 0x3f, 0x23, 0x28, 0x76, 0x6d, 0xc0, 0x41, 0x12,
-	0x94, 0x76, 0x6a, 0x0c, 0x92, 0xa0, 0xd4, 0x9d, 0x2e, 0x5f, 0x0e, 0xc9, 0x4b, 0x78, 0x3e, 0x9d,
-	0x7c, 0xe5, 0x18, 0xc1, 0xb5, 0x26, 0xdd, 0xef, 0xdb, 0xbe, 0x52, 0x8c, 0x77, 0xf9, 0x76, 0xb0,
-	0xe0, 0xdb, 0xe8, 0xd5, 0x53, 0x01, 0x31, 0xa9, 0x6d, 0x38, 0xa6, 0x42, 0x3d, 0x53, 0x35, 0x89,
-	0x13, 0xc6, 0x41, 0xfc, 0xa5, 0x1a, 0xae, 0xc5, 0xfe, 0xfd, 0xe3, 0xf8, 0xa8, 0xab, 0xd0, 0x18,
-	0x0b, 0x91, 0xcb, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x3f, 0xb3, 0x6c, 0xe2, 0x0a, 0x00,
-	0x00,
+	// 766 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0xcb, 0x6e, 0xd3, 0x4c,
+	0x18, 0xd5, 0xb4, 0x7f, 0x2f, 0xf9, 0xd2, 0xb4, 0xfd, 0x47, 0xbd, 0x58, 0xe1, 0x16, 0x99, 0x8b,
+	0x4a, 0x41, 0x36, 0x72, 0x11, 0xb4, 0xb0, 0xa1, 0x51, 0x51, 0x1a, 0xa9, 0x54, 0x55, 0x80, 0x22,
+	0xb1, 0x89, 0x9c, 0x64, 0x6a, 0x99, 0xba, 0x1e, 0xe3, 0x19, 0x07, 0x50, 0xd5, 0x4d, 0x91, 0xba,
+	0x47, 0xbc, 0x00, 0x0f, 0x80, 0xc4, 0x13, 0x20, 0xb1, 0x43, 0x62, 0xcb, 0x2b, 0xf0, 0x20, 0xc8,
+	0xe3, 0x71, 0xe3, 0x04, 0x43, 0xe2, 0x54, 0xea, 0xce, 0x3e, 0x9e, 0xf3, 0xcd, 0x39, 0x67, 0xbe,
+	0x99, 0x31, 0xe8, 0x16, 0xa5, 0x96, 0x43, 0xf4, 0x16, 0x69, 0x73, 0x4a, 0x1d, 0xa6, 0x37, 0x1d,
+	0x1a, 0xb4, 0x5a, 0xa4, 0x11, 0x58, 0x16, 0xf1, 0xf5, 0xb6, 0xa1, 0xc7, 0xcf, 0x9a, 0xe7, 0x53,
+	0x4e, 0x71, 0x29, 0x22, 0x68, 0x31, 0x41, 0xeb, 0x22, 0x68, 0x6d, 0xa3, 0x78, 0x51, 0x96, 0x34,
+	0x3d, 0x5b, 0x37, 0x5d, 0x97, 0x72, 0x93, 0xdb, 0xd4, 0x65, 0x11, 0xbf, 0x78, 0xab, 0xff, 0x84,
+	0x26, 0x37, 0xe5, 0xe0, 0x0b, 0x72, 0xb0, 0x78, 0x6b, 0x04, 0x7b, 0x3a, 0x39, 0xf0, 0xf8, 0xbb,
+	0xe8, 0xa3, 0xfa, 0x19, 0xc1, 0xdc, 0x53, 0xc2, 0xcb, 0x3e, 0x31, 0xf7, 0x3d, 0x6a, 0xbb, 0xbc,
+	0x46, 0x5e, 0x07, 0x84, 0x71, 0x7c, 0x05, 0xf2, 0xb2, 0x1e, 0xa9, 0xdb, 0x2d, 0x05, 0x95, 0xd0,
+	0x52, 0xae, 0x06, 0x31, 0x54, 0x6d, 0xe1, 0x2d, 0x80, 0xc6, 0x29, 0x4b, 0x19, 0x29, 0xa1, 0xa5,
+	0xbc, 0x71, 0x5b, 0xeb, 0x67, 0x4c, 0x4b, 0xcc, 0x94, 0xe0, 0xe3, 0xeb, 0x30, 0xdd, 0x74, 0x6c,
+	0xe2, 0xf2, 0x7a, 0x9b, 0xf8, 0xcc, 0xa6, 0xae, 0xf2, 0x9f, 0x98, 0xb1, 0x10, 0xa1, 0xbb, 0x11,
+	0xa8, 0x12, 0x98, 0xef, 0x51, 0xcb, 0x3c, 0xea, 0x32, 0xd2, 0xa3, 0x06, 0x9d, 0x4d, 0x8d, 0xfa,
+	0x1e, 0xc1, 0x5c, 0x65, 0xa8, 0x54, 0xae, 0x42, 0xa1, 0x53, 0x27, 0x1c, 0x32, 0x22, 0x86, 0x4c,
+	0x75, 0xc0, 0x6a, 0x2b, 0x83, 0xd9, 0xca, 0x39, 0x98, 0x3d, 0x41, 0xb0, 0xb8, 0x41, 0x1c, 0xc2,
+	0xc9, 0xf9, 0xf9, 0x1d, 0x4d, 0xf3, 0xfb, 0x7d, 0x14, 0x16, 0xb6, 0x6c, 0x96, 0x70, 0xcc, 0x06,
+	0xd6, 0xb1, 0x0c, 0xff, 0xdb, 0x6e, 0xd3, 0x09, 0x5a, 0xa4, 0x6e, 0x3a, 0x4e, 0x3d, 0x60, 0xc4,
+	0x67, 0x42, 0xcb, 0x64, 0x6d, 0x46, 0x7e, 0x58, 0x77, 0x9c, 0xe7, 0x21, 0x8c, 0x6f, 0xc2, 0x6c,
+	0x3c, 0xd6, 0x76, 0xcd, 0x26, 0xb7, 0xdb, 0x44, 0x08, 0xea, 0x0c, 0xad, 0x4a, 0x18, 0xef, 0xc1,
+	0x78, 0xf8, 0x24, 0x57, 0x28, 0x6f, 0x6c, 0xf7, 0x4f, 0x39, 0xdd, 0x41, 0x22, 0xfc, 0x75, 0x51,
+	0x70, 0xd7, 0x74, 0x02, 0x52, 0x93, 0xd5, 0xc3, 0x18, 0x19, 0xf7, 0x6d, 0xaf, 0xee, 0x13, 0x16,
+	0x38, 0x9c, 0x29, 0x63, 0x42, 0xcf, 0x94, 0x00, 0x6b, 0x11, 0x86, 0x2f, 0x01, 0xbc, 0x31, 0x6d,
+	0x5e, 0xe7, 0x74, 0x9f, 0xb8, 0xca, 0xb8, 0xc8, 0x20, 0x17, 0x22, 0xcf, 0x42, 0x20, 0x25, 0xe5,
+	0xc9, 0x94, 0x94, 0x8b, 0x0d, 0x98, 0x4f, 0xd5, 0x82, 0xab, 0x30, 0xd6, 0x0e, 0x1f, 0x44, 0xba,
+	0xd3, 0xc6, 0x4a, 0x96, 0x86, 0xd2, 0xa2, 0x42, 0xb5, 0xa8, 0x82, 0xfa, 0x01, 0xc1, 0xe2, 0x1f,
+	0x39, 0xc8, 0xe6, 0xdd, 0x86, 0x7c, 0xa7, 0x39, 0x98, 0x82, 0x4a, 0xa3, 0x99, 0xbb, 0x37, 0x59,
+	0x00, 0xdf, 0x80, 0x19, 0x97, 0xbc, 0xe5, 0xf5, 0x44, 0x34, 0x51, 0x0f, 0x16, 0x42, 0xf8, 0x45,
+	0x1c, 0x8f, 0x7a, 0x8c, 0x60, 0x2e, 0xd4, 0xb4, 0x21, 0x9b, 0xe6, 0xb4, 0xb7, 0x14, 0x98, 0xf0,
+	0x7c, 0xfa, 0x8a, 0x34, 0xb9, 0x24, 0xc6, 0xaf, 0x59, 0x1a, 0x65, 0xc0, 0x2d, 0x6d, 0xc2, 0x7c,
+	0x8f, 0x06, 0x99, 0xca, 0x26, 0xe4, 0xe2, 0x6e, 0x8e, 0x33, 0x59, 0xee, 0x9f, 0x49, 0x5c, 0xa7,
+	0xd6, 0x21, 0x1b, 0x5f, 0x27, 0x20, 0x27, 0x71, 0xdf, 0xc0, 0x3f, 0x10, 0x14, 0xba, 0x4e, 0x4c,
+	0x7c, 0xaf, 0x7f, 0xd9, 0xb4, 0x0b, 0xa1, 0x78, 0x3f, 0x33, 0x2f, 0xb2, 0xa6, 0x6e, 0x1e, 0xff,
+	0xfc, 0xf5, 0x71, 0xa4, 0xac, 0xde, 0x4d, 0x5e, 0x84, 0xfa, 0xa9, 0x60, 0xfd, 0x30, 0xb1, 0xb3,
+	0x8f, 0xf4, 0xc4, 0xd2, 0xea, 0x8c, 0xf0, 0x07, 0xc9, 0x4b, 0x22, 0x34, 0x53, 0xc9, 0x6a, 0xa6,
+	0x32, 0xa4, 0x99, 0xca, 0xbf, 0xcc, 0xe0, 0x47, 0x99, 0xcd, 0x1c, 0x76, 0x9d, 0x93, 0x47, 0xf8,
+	0x0b, 0x82, 0xd9, 0xde, 0x63, 0x17, 0xaf, 0x0d, 0xb2, 0xe6, 0xa9, 0x47, 0x75, 0x71, 0x21, 0xa6,
+	0xc6, 0xf7, 0xbc, 0xf6, 0x38, 0xbc, 0xe7, 0x63, 0xc5, 0xcb, 0x67, 0x57, 0xfc, 0x0d, 0xc1, 0x4c,
+	0xcf, 0xae, 0xc6, 0xab, 0xc3, 0x1e, 0x88, 0xc5, 0xb5, 0x21, 0x98, 0x72, 0x11, 0x56, 0x85, 0x25,
+	0x03, 0xdf, 0xc9, 0x6a, 0x09, 0x7f, 0x42, 0x50, 0xe8, 0xda, 0x80, 0x83, 0x74, 0x50, 0xda, 0xa9,
+	0x31, 0x48, 0x07, 0xa5, 0xee, 0x74, 0xf5, 0xb2, 0x10, 0xaf, 0xe0, 0x85, 0x74, 0xf1, 0xe5, 0x13,
+	0x04, 0xd7, 0x9a, 0xf4, 0xa0, 0x6f, 0xf9, 0x72, 0x21, 0xde, 0xe5, 0x3b, 0xe1, 0x82, 0xef, 0xa0,
+	0x97, 0x4f, 0x24, 0xc5, 0xa2, 0x8e, 0xe9, 0x5a, 0x1a, 0xf5, 0x2d, 0xdd, 0x22, 0xae, 0x68, 0x07,
+	0xf9, 0x87, 0x6a, 0x7a, 0x36, 0xfb, 0xfb, 0x4f, 0xe3, 0xc3, 0x2e, 0xa0, 0x31, 0x2e, 0x98, 0x2b,
+	0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x55, 0x66, 0x54, 0xde, 0x0a, 0x00, 0x00,
 }
diff --git a/googleapis/genomics/v1/datasets.pb.go b/googleapis/genomics/v1/datasets.pb.go
index 5de0e939..09a6c127 100644
--- a/googleapis/genomics/v1/datasets.pb.go
+++ b/googleapis/genomics/v1/datasets.pb.go
@@ -31,7 +31,7 @@ var _ = math.Inf
 type Dataset struct {
 	// The server-generated dataset ID, unique across all datasets.
 	Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
-	// The Google Developers Console project ID that this dataset belongs to.
+	// The Google Cloud project ID that this dataset belongs to.
 	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId" json:"project_id,omitempty"`
 	// The dataset name.
 	Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
@@ -74,7 +74,7 @@ func (m *Dataset) GetCreateTime() *google_protobuf6.Timestamp {
 
 // The dataset list request.
 type ListDatasetsRequest struct {
-	// Required. The project to list datasets for.
+	// Required. The Google Cloud project ID to list datasets for.
 	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"`
 	// The maximum number of results to return in a single page. If unspecified,
 	// defaults to 50. The maximum value is 1024.
diff --git a/googleapis/genomics/v1/operations.pb.go b/googleapis/genomics/v1/operations.pb.go
index 5ef0d265..f0015f56 100644
--- a/googleapis/genomics/v1/operations.pb.go
+++ b/googleapis/genomics/v1/operations.pb.go
@@ -34,11 +34,14 @@ type OperationMetadata struct {
 	// This also contains any warnings that were generated during import
 	// or export.
 	Events []*OperationEvent `protobuf:"bytes,6,rep,name=events" json:"events,omitempty"`
-	// Optionally provided by the caller when submitting the request that creates
-	// the operation.
+	// This field is deprecated. Use `labels` instead. Optionally provided by the
+	// caller when submitting the request that creates the operation.
 	ClientId string `protobuf:"bytes,7,opt,name=client_id,json=clientId" json:"client_id,omitempty"`
 	// Runtime metadata on this Operation.
 	RuntimeMetadata *google_protobuf5.Any `protobuf:"bytes,8,opt,name=runtime_metadata,json=runtimeMetadata" json:"runtime_metadata,omitempty"`
+	// Optionally provided by the caller when submitting the request that creates
+	// the operation.
+	Labels map[string]string `protobuf:"bytes,9,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 }
 
 func (m *OperationMetadata) Reset()                    { *m = OperationMetadata{} }
@@ -102,6 +105,13 @@ func (m *OperationMetadata) GetRuntimeMetadata() *google_protobuf5.Any {
 	return nil
 }
 
+func (m *OperationMetadata) GetLabels() map[string]string {
+	if m != nil {
+		return m.Labels
+	}
+	return nil
+}
+
 // An event that occurred during an [Operation][google.longrunning.Operation].
 type OperationEvent struct {
 	// Optional time of when event started.
@@ -147,30 +157,34 @@ func init() {
 func init() { proto.RegisterFile("google/genomics/v1/operations.proto", fileDescriptor3) }
 
 var fileDescriptor3 = []byte{
-	// 398 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0xc1, 0xab, 0xd3, 0x40,
-	0x10, 0xc6, 0xd9, 0x57, 0x6d, 0x9b, 0x09, 0xf8, 0x74, 0x11, 0x89, 0x55, 0x31, 0xd4, 0x4b, 0x4f,
-	0x1b, 0xde, 0x13, 0x0f, 0xbe, 0x1e, 0xc4, 0x82, 0x87, 0x1e, 0xc4, 0x12, 0x3c, 0x79, 0x29, 0xdb,
-	0x64, 0x0c, 0x5b, 0x9a, 0xdd, 0xb8, 0xbb, 0x2d, 0xf4, 0xff, 0xf1, 0xe6, 0x3f, 0xe8, 0x51, 0xb2,
-	0xd9, 0x2d, 0xb5, 0x15, 0x2b, 0xde, 0x92, 0x99, 0xef, 0xb7, 0xf3, 0xf1, 0x0d, 0x03, 0xaf, 0x2a,
-	0xa5, 0xaa, 0x0d, 0x66, 0x15, 0x4a, 0x55, 0x8b, 0xc2, 0x64, 0xbb, 0x9b, 0x4c, 0x35, 0xa8, 0xb9,
-	0x15, 0x4a, 0x1a, 0xd6, 0x68, 0x65, 0x15, 0xa5, 0x9d, 0x88, 0x05, 0x11, 0xdb, 0xdd, 0x8c, 0x9e,
-	0x7b, 0x90, 0x37, 0x22, 0xe3, 0x52, 0x2a, 0x7b, 0x4c, 0x8c, 0x9e, 0xfa, 0xae, 0xfb, 0x5b, 0x6d,
-	0xbf, 0x66, 0x5c, 0xee, 0x7d, 0xeb, 0xe5, 0x69, 0xcb, 0x8a, 0x1a, 0x8d, 0xe5, 0x75, 0xd3, 0x09,
-	0xc6, 0x3f, 0x7a, 0xf0, 0xe8, 0x53, 0xb0, 0xf0, 0x11, 0x2d, 0x2f, 0xb9, 0xe5, 0xf4, 0x05, 0x40,
-	0xa3, 0xd5, 0x1a, 0x0b, 0xbb, 0x14, 0x65, 0x42, 0x52, 0x32, 0x89, 0xf2, 0xc8, 0x57, 0xe6, 0x25,
-	0x9d, 0x42, 0x5c, 0x68, 0xe4, 0x16, 0x97, 0xed, 0x73, 0xc9, 0x55, 0x4a, 0x26, 0xf1, 0xed, 0x88,
-	0x79, 0xe3, 0x61, 0x16, 0xfb, 0x1c, 0x66, 0xe5, 0xd0, 0xc9, 0xdb, 0x02, 0x7d, 0x0b, 0x60, 0x2c,
-	0xd7, 0xb6, 0x63, 0x7b, 0x17, 0xd9, 0xc8, 0xa9, 0x1d, 0xfa, 0x06, 0x86, 0x28, 0xcb, 0x0e, 0xbc,
-	0x77, 0x11, 0x1c, 0xa0, 0x2c, 0x1d, 0xc6, 0x60, 0xa0, 0xf1, 0xdb, 0x16, 0x8d, 0x4d, 0xee, 0x3b,
-	0xea, 0xf1, 0x19, 0xf5, 0x5e, 0xee, 0xf3, 0x20, 0xa2, 0x77, 0xd0, 0xc7, 0x1d, 0x4a, 0x6b, 0x92,
-	0x7e, 0xda, 0x9b, 0xc4, 0xb7, 0x63, 0x76, 0xbe, 0x12, 0x76, 0x08, 0xed, 0x43, 0x2b, 0xcd, 0x3d,
-	0x41, 0x9f, 0x41, 0x54, 0x6c, 0x04, 0x4a, 0x17, 0xdc, 0xc0, 0x05, 0x37, 0xec, 0x0a, 0xf3, 0x92,
-	0xbe, 0x83, 0x87, 0x7a, 0x2b, 0x5b, 0xfb, 0xcb, 0xda, 0x47, 0x9d, 0x0c, 0xff, 0xe2, 0xe8, 0xda,
-	0xab, 0xc3, 0x5e, 0xc6, 0xdf, 0x09, 0x3c, 0xf8, 0x7d, 0xf0, 0x49, 0x9c, 0xe4, 0x7f, 0xe3, 0xbc,
-	0xfa, 0xf7, 0x38, 0x53, 0x88, 0x4b, 0x34, 0x85, 0x16, 0x4d, 0xeb, 0xc2, 0x6d, 0x30, 0xca, 0x8f,
-	0x4b, 0xb3, 0x35, 0x3c, 0x29, 0x54, 0xfd, 0x87, 0xd4, 0x66, 0xd7, 0x07, 0xf7, 0x66, 0xd1, 0x8e,
-	0x58, 0x90, 0x2f, 0x77, 0x41, 0xa6, 0x36, 0x5c, 0x56, 0x4c, 0xe9, 0xaa, 0xbd, 0x0f, 0x67, 0x20,
-	0xeb, 0x5a, 0xbc, 0x11, 0xe6, 0xf8, 0x66, 0xa6, 0xe1, 0xfb, 0x27, 0x21, 0xab, 0xbe, 0x53, 0xbe,
-	0xfe, 0x15, 0x00, 0x00, 0xff, 0xff, 0xaa, 0x39, 0xad, 0x2f, 0x5c, 0x03, 0x00, 0x00,
+	// 456 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0x41, 0x6f, 0xd3, 0x30,
+	0x14, 0xc7, 0xe5, 0x76, 0x6b, 0x9b, 0x17, 0x89, 0x0d, 0x6b, 0x42, 0xa1, 0x80, 0xa8, 0xca, 0xa5,
+	0x27, 0x47, 0x1d, 0x42, 0x62, 0xdd, 0x01, 0x31, 0x69, 0x87, 0x4a, 0x20, 0xa6, 0x88, 0x13, 0x97,
+	0xca, 0x4d, 0x1e, 0x51, 0x46, 0x62, 0x07, 0xdb, 0xad, 0xd4, 0xef, 0xc3, 0x17, 0xe0, 0xdb, 0x71,
+	0x44, 0xb1, 0x9d, 0x2a, 0x6c, 0x68, 0x45, 0xdc, 0xec, 0xf7, 0xfe, 0x3f, 0xfb, 0x9f, 0xf7, 0x8f,
+	0xe1, 0x55, 0x2e, 0x65, 0x5e, 0x62, 0x9c, 0xa3, 0x90, 0x55, 0x91, 0xea, 0x78, 0x3b, 0x8f, 0x65,
+	0x8d, 0x8a, 0x9b, 0x42, 0x0a, 0xcd, 0x6a, 0x25, 0x8d, 0xa4, 0xd4, 0x89, 0x58, 0x2b, 0x62, 0xdb,
+	0xf9, 0xf8, 0xb9, 0x07, 0x79, 0x5d, 0xc4, 0x5c, 0x08, 0x69, 0xba, 0xc4, 0xf8, 0xa9, 0xef, 0xda,
+	0xdd, 0x7a, 0xf3, 0x35, 0xe6, 0x62, 0xe7, 0x5b, 0x2f, 0xef, 0xb6, 0x4c, 0x51, 0xa1, 0x36, 0xbc,
+	0xaa, 0x9d, 0x60, 0xfa, 0xf3, 0x08, 0x1e, 0x7f, 0x6a, 0x2d, 0x7c, 0x44, 0xc3, 0x33, 0x6e, 0x38,
+	0x7d, 0x01, 0x50, 0x2b, 0x79, 0x8b, 0xa9, 0x59, 0x15, 0x59, 0x44, 0x26, 0x64, 0x16, 0x24, 0x81,
+	0xaf, 0x2c, 0x33, 0x7a, 0x09, 0x61, 0xaa, 0x90, 0x1b, 0x5c, 0x35, 0xc7, 0x45, 0xbd, 0x09, 0x99,
+	0x85, 0xe7, 0x63, 0xe6, 0x8d, 0xb7, 0x77, 0xb1, 0xcf, 0xed, 0x5d, 0x09, 0x38, 0x79, 0x53, 0xa0,
+	0x17, 0x00, 0xda, 0x70, 0x65, 0x1c, 0xdb, 0x3f, 0xc8, 0x06, 0x56, 0x6d, 0xd1, 0x37, 0x30, 0x42,
+	0x91, 0x39, 0xf0, 0xe8, 0x20, 0x38, 0x44, 0x91, 0x59, 0x8c, 0xc1, 0x50, 0xe1, 0xf7, 0x0d, 0x6a,
+	0x13, 0x1d, 0x5b, 0xea, 0xec, 0x1e, 0xf5, 0x5e, 0xec, 0x92, 0x56, 0x44, 0x17, 0x30, 0xc0, 0x2d,
+	0x0a, 0xa3, 0xa3, 0xc1, 0xa4, 0x3f, 0x0b, 0xcf, 0xa7, 0xec, 0x7e, 0x24, 0x6c, 0x3f, 0xb4, 0xeb,
+	0x46, 0x9a, 0x78, 0x82, 0x3e, 0x83, 0x20, 0x2d, 0x0b, 0x14, 0x76, 0x70, 0x43, 0x3b, 0xb8, 0x91,
+	0x2b, 0x2c, 0x33, 0xfa, 0x0e, 0x4e, 0xd5, 0x46, 0x34, 0xf6, 0x57, 0x95, 0x1f, 0x75, 0x34, 0x7a,
+	0xc0, 0xd1, 0x89, 0x57, 0xef, 0x73, 0x59, 0xc2, 0xa0, 0xe4, 0x6b, 0x2c, 0x75, 0x14, 0x58, 0x67,
+	0xf3, 0x07, 0x9d, 0xb5, 0x18, 0xfb, 0x60, 0x99, 0x6b, 0x61, 0xd4, 0x2e, 0xf1, 0x07, 0x8c, 0x2f,
+	0x20, 0xec, 0x94, 0xe9, 0x29, 0xf4, 0xbf, 0xe1, 0xce, 0x47, 0xdd, 0x2c, 0xe9, 0x19, 0x1c, 0x6f,
+	0x79, 0xb9, 0x71, 0xf1, 0x06, 0x89, 0xdb, 0x2c, 0x7a, 0x6f, 0xc9, 0xf4, 0x07, 0x81, 0x47, 0x7f,
+	0x7e, 0xfe, 0x9d, 0x50, 0xc9, 0xff, 0x86, 0xda, 0xfb, 0xf7, 0x50, 0x27, 0x10, 0x66, 0xa8, 0x53,
+	0x55, 0xd4, 0x8d, 0x0b, 0xfb, 0x1f, 0x05, 0x49, 0xb7, 0x74, 0x75, 0x0b, 0x4f, 0x52, 0x59, 0xfd,
+	0x65, 0x42, 0x57, 0x27, 0x7b, 0xf7, 0xfa, 0xa6, 0xb9, 0xe2, 0x86, 0x7c, 0x59, 0xb4, 0x32, 0x59,
+	0x72, 0x91, 0x33, 0xa9, 0xf2, 0xe6, 0x95, 0x5a, 0x03, 0xb1, 0x6b, 0xf1, 0xba, 0xd0, 0xdd, 0x97,
+	0x7b, 0xd9, 0xae, 0x7f, 0x11, 0xb2, 0x1e, 0x58, 0xe5, 0xeb, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff,
+	0x6a, 0xf6, 0xa8, 0x9a, 0xe2, 0x03, 0x00, 0x00,
 }
diff --git a/googleapis/genomics/v1/reads.pb.go b/googleapis/genomics/v1/reads.pb.go
index 2315bd0a..225e0c9a 100644
--- a/googleapis/genomics/v1/reads.pb.go
+++ b/googleapis/genomics/v1/reads.pb.go
@@ -151,6 +151,13 @@ type ImportReadGroupSetsRequest struct {
 	// A list of URIs pointing at [BAM
 	// files](https://samtools.github.io/hts-specs/SAMv1.pdf)
 	// in Google Cloud Storage.
+	// Those URIs can include wildcards (*), but do not add or remove
+	// matching files before import has completed.
+	//
+	// Note that Google Cloud Storage object listing is only eventually
+	// consistent: files added may be not be immediately visible to
+	// everyone. Thus, if using a wildcard it is preferable not to start
+	// the import immediately after the files are created.
 	SourceUris []string `protobuf:"bytes,2,rep,name=source_uris,json=sourceUris" json:"source_uris,omitempty"`
 	// The partition strategy describes how read groups are partitioned into read
 	// group sets.
@@ -210,7 +217,7 @@ func (m *ImportReadGroupSetsResponse) GetReadGroupSetIds() []string {
 
 // The read group set export request.
 type ExportReadGroupSetRequest struct {
-	// Required. The Google Developers Console project ID that owns this
+	// Required. The Google Cloud project ID that owns this
 	// export. The caller must have WRITE access to this project.
 	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"`
 	// Required. A Google Cloud Storage URI for the exported BAM file.
@@ -611,7 +618,7 @@ func (m *SearchReadsResponse) GetNextPageToken() string {
 
 // The stream reads request.
 type StreamReadsRequest struct {
-	// The Google Developers Console project ID or number which will be billed
+	// The Google Cloud project ID which will be billed
 	// for this access. The caller must have WRITE access to this project.
 	// Required.
 	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"`
diff --git a/googleapis/genomics/v1/variants.pb.go b/googleapis/genomics/v1/variants.pb.go
index ae6f5cc0..f6c1850d 100644
--- a/googleapis/genomics/v1/variants.pb.go
+++ b/googleapis/genomics/v1/variants.pb.go
@@ -94,10 +94,10 @@ type ImportVariantsRequest_Format int32
 
 const (
 	ImportVariantsRequest_FORMAT_UNSPECIFIED ImportVariantsRequest_Format = 0
-	// VCF (Variant Call Format). The VCF files should be uncompressed. gVCF is
+	// VCF (Variant Call Format). The VCF files may be gzip compressed. gVCF is
 	// also supported.
 	ImportVariantsRequest_FORMAT_VCF ImportVariantsRequest_Format = 1
-	// Complete Genomics masterVarBeta format. The masterVarBeta files should
+	// Complete Genomics masterVarBeta format. The masterVarBeta files may
 	// be bzip2 compressed.
 	ImportVariantsRequest_FORMAT_COMPLETE_GENOMICS ImportVariantsRequest_Format = 2
 )
@@ -1392,7 +1392,7 @@ func (m *GetCallSetRequest) GetCallSetId() string {
 
 // The stream variants request.
 type StreamVariantsRequest struct {
-	// The Google Developers Console project ID or number which will be billed
+	// The Google Cloud project ID which will be billed
 	// for this access. The caller must have WRITE access to this project.
 	// Required.
 	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"`
diff --git a/googleapis/genomics/v1alpha2/pipelines.pb.go b/googleapis/genomics/v1alpha2/pipelines.pb.go
index fc8137a7..5c672556 100644
--- a/googleapis/genomics/v1alpha2/pipelines.pb.go
+++ b/googleapis/genomics/v1alpha2/pipelines.pb.go
@@ -373,7 +373,8 @@ type RunPipelineArgs struct {
 	// services. By default, the compute service account associated with
 	// `projectId` is used.
 	ServiceAccount *ServiceAccount `protobuf:"bytes,4,opt,name=service_account,json=serviceAccount" json:"service_account,omitempty"`
-	// Client-specified pipeline operation identifier.
+	// This field is deprecated. Use `labels` instead. Client-specified pipeline
+	// operation identifier.
 	ClientId string `protobuf:"bytes,5,opt,name=client_id,json=clientId" json:"client_id,omitempty"`
 	// Specifies resource requirements/overrides for the pipeline run.
 	Resources *PipelineResources `protobuf:"bytes,6,opt,name=resources" json:"resources,omitempty"`
@@ -384,6 +385,19 @@ type RunPipelineArgs struct {
 	// failed, copying input or output files failed, etc). While the VM is up, one
 	// can ssh into the VM to debug. Default is 0; maximum allowed value is 1 day.
 	KeepVmAliveOnFailureDuration *google_protobuf3.Duration `protobuf:"bytes,8,opt,name=keep_vm_alive_on_failure_duration,json=keepVmAliveOnFailureDuration" json:"keep_vm_alive_on_failure_duration,omitempty"`
+	// Labels to apply to this pipeline run. Labels will also be applied to
+	// compute resources (VM, disks) created by this pipeline run. When listing
+	// operations, operations can [filtered by labels]
+	// [google.longrunning.ListOperationsRequest.filter].
+	// Label keys may not be empty; label values may be empty. Non-empty labels
+	// must be 1-63 characters long, and comply with [RFC1035]
+	// (https://www.ietf.org/rfc/rfc1035.txt).
+	// Specifically, the name must be 1-63 characters long and match the regular
+	// expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first
+	// character must be a lowercase letter, and all following characters must be
+	// a dash, lowercase letter, or digit, except the last character, which cannot
+	// be a dash.
+	Labels map[string]string `protobuf:"bytes,9,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 }
 
 func (m *RunPipelineArgs) Reset()                    { *m = RunPipelineArgs{} }
@@ -447,6 +461,13 @@ func (m *RunPipelineArgs) GetKeepVmAliveOnFailureDuration() *google_protobuf3.Du
 	return nil
 }
 
+func (m *RunPipelineArgs) GetLabels() map[string]string {
+	if m != nil {
+		return m.Labels
+	}
+	return nil
+}
+
 // The request to run a pipeline. If `pipelineId` is specified, it
 // refers to a saved pipeline created with CreatePipeline and set as
 // the `pipelineId` of the returned Pipeline object. If
@@ -907,12 +928,14 @@ type ServiceAccount struct {
 	// Email address of the service account. Defaults to `default`,
 	// which uses the compute service account associated with the project.
 	Email string `protobuf:"bytes,1,opt,name=email" json:"email,omitempty"`
-	// List of scopes to be enabled for this service account on the
-	// pipeline virtual machine.
+	// List of scopes to be enabled for this service account on the VM.
 	// The following scopes are automatically included:
-	// * https://www.googleapis.com/auth/genomics
+	//
 	// * https://www.googleapis.com/auth/compute
 	// * https://www.googleapis.com/auth/devstorage.full_control
+	// * https://www.googleapis.com/auth/genomics
+	// * https://www.googleapis.com/auth/logging.write
+	// * https://www.googleapis.com/auth/monitoring.write
 	Scopes []string `protobuf:"bytes,2,rep,name=scopes" json:"scopes,omitempty"`
 }
 
@@ -964,10 +987,9 @@ func (m *LoggingOptions) GetGcsPath() string {
 type PipelineResources struct {
 	// The minimum number of cores to use. Defaults to 1.
 	MinimumCpuCores int32 `protobuf:"varint,1,opt,name=minimum_cpu_cores,json=minimumCpuCores" json:"minimum_cpu_cores,omitempty"`
-	// At create time means that preemptible machines may be
-	// used for the run. At run time, means they should be used. Cannot
-	// be true at run time if false at create time.
-	// Defaults to `false`.
+	// Whether to use preemptible VMs. Defaults to `false`. In order to use this,
+	// must be true for both create time and run time. Cannot be true at run time
+	// if false at create time.
 	Preemptible bool `protobuf:"varint,2,opt,name=preemptible" json:"preemptible,omitempty"`
 	// The minimum amount of RAM to use. Defaults to 3.75 (GB)
 	MinimumRamGb float64 `protobuf:"fixed64,3,opt,name=minimum_ram_gb,json=minimumRamGb" json:"minimum_ram_gb,omitempty"`
@@ -978,6 +1000,18 @@ type PipelineResources struct {
 	Zones []string `protobuf:"bytes,5,rep,name=zones" json:"zones,omitempty"`
 	// The size of the boot disk. Defaults to 10 (GB).
 	BootDiskSizeGb int32 `protobuf:"varint,6,opt,name=boot_disk_size_gb,json=bootDiskSizeGb" json:"boot_disk_size_gb,omitempty"`
+	// Whether to assign an external IP to the instance. This is an experimental
+	// feature that may go away. Defaults to false.
+	// Corresponds to `--no_address` flag for [gcloud compute instances create]
+	// (https://cloud.google.com/sdk/gcloud/reference/compute/instances/create).
+	// In order to use this, must be true for both create time and run time.
+	// Cannot be true at run time if false at create time. If you need to ssh into
+	// a private IP VM for debugging, you can ssh to a public VM and then ssh into
+	// the private VM's Internal IP.  If noAddress is set, this pipeline run may
+	// only load docker images from Google Container Registry and not Docker Hub.
+	// ** Note: To use this option, your project must be in Google Access for
+	// Private IPs Early Access Program.**
+	NoAddress bool `protobuf:"varint,7,opt,name=no_address,json=noAddress" json:"no_address,omitempty"`
 }
 
 func (m *PipelineResources) Reset()                    { *m = PipelineResources{} }
@@ -1027,6 +1061,13 @@ func (m *PipelineResources) GetBootDiskSizeGb() int32 {
 	return 0
 }
 
+func (m *PipelineResources) GetNoAddress() bool {
+	if m != nil {
+		return m.NoAddress
+	}
+	return false
+}
+
 // A Google Compute Engine disk resource specification.
 type PipelineResources_Disk struct {
 	// Required. The name of the disk that can be used in the pipeline
@@ -1044,18 +1085,9 @@ type PipelineResources_Disk struct {
 	// https://cloud.google.com/compute/docs/disks/persistent-disks#snapshots
 	// for more details.
 	Source string `protobuf:"bytes,4,opt,name=source" json:"source,omitempty"`
-	// Specifies whether or not to delete the disk when the pipeline
-	// completes. This field is applicable only for newly created disks. See
-	// https://cloud.google.com/compute/docs/reference/latest/instances#resource
-	// for more details.
-	// By default, `autoDelete` is `false`. `autoDelete` will be enabled if set
-	// to `true` at create time or run time.
+	// Deprecated. Disks created by the Pipelines API will be deleted at the end
+	// of the pipeline run, regardless of what this field is set to.
 	AutoDelete bool `protobuf:"varint,6,opt,name=auto_delete,json=autoDelete" json:"auto_delete,omitempty"`
-	// Specifies how a sourced-base persistent disk will be mounted. See
-	// https://cloud.google.com/compute/docs/disks/persistent-disks#use_multi_instances
-	// for more details.
-	// Can only be set at create time.
-	ReadOnly bool `protobuf:"varint,7,opt,name=read_only,json=readOnly" json:"read_only,omitempty"`
 	// Required at create time and cannot be overridden at run time.
 	// Specifies the path in the docker container where files on
 	// this disk should be located. For example, if `mountPoint`
@@ -1105,13 +1137,6 @@ func (m *PipelineResources_Disk) GetAutoDelete() bool {
 	return false
 }
 
-func (m *PipelineResources_Disk) GetReadOnly() bool {
-	if m != nil {
-		return m.ReadOnly
-	}
-	return false
-}
-
 func (m *PipelineResources_Disk) GetMountPoint() string {
 	if m != nil {
 		return m.MountPoint
@@ -1294,12 +1319,17 @@ func (m *PipelineParameter_LocalCopy) GetDisk() string {
 
 // The Docker execuctor specification.
 type DockerExecutor struct {
-	// Required. Image name from either Docker Hub or Google Container Repository.
+	// Required. Image name from either Docker Hub or Google Container Registry.
 	// Users that run pipelines must have READ access to the image.
 	ImageName string `protobuf:"bytes,1,opt,name=image_name,json=imageName" json:"image_name,omitempty"`
-	// Required. The command string to run. Parameters that do not have
-	// `localCopy` specified should be used as environment variables, while
-	// those that do can be accessed at the defined paths.
+	// Required. The command or newline delimited script to run. The command
+	// string will be executed within a bash shell.
+	//
+	// If the command exits with a non-zero exit code, output parameter
+	// de-localization will be skipped and the pipeline operation's
+	// [`error`][google.longrunning.Operation.error] field will be populated.
+	//
+	// Maximum command string length is 16384.
 	Cmd string `protobuf:"bytes,2,opt,name=cmd" json:"cmd,omitempty"`
 }
 
@@ -1389,10 +1419,9 @@ type PipelinesV1Alpha2Client interface {
 	// Gets controller configuration information. Should only be called
 	// by VMs created by the Pipelines Service and not by end users.
 	GetControllerConfig(ctx context.Context, in *GetControllerConfigRequest, opts ...grpc.CallOption) (*ControllerConfig, error)
-	// Sets status of a given operation. All timestamps are sent on each
-	// call, and the whole series of events is replaced, in case
-	// intermediate calls are lost. Should only be called by VMs created
-	// by the Pipelines Service and not by end users.
+	// Sets status of a given operation. Any new timestamps (as determined by
+	// description) are appended to TimestampEvents. Should only be called by VMs
+	// created by the Pipelines Service and not by end users.
 	SetOperationStatus(ctx context.Context, in *SetOperationStatusRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error)
 }
 
@@ -1500,10 +1529,9 @@ type PipelinesV1Alpha2Server interface {
 	// Gets controller configuration information. Should only be called
 	// by VMs created by the Pipelines Service and not by end users.
 	GetControllerConfig(context.Context, *GetControllerConfigRequest) (*ControllerConfig, error)
-	// Sets status of a given operation. All timestamps are sent on each
-	// call, and the whole series of events is replaced, in case
-	// intermediate calls are lost. Should only be called by VMs created
-	// by the Pipelines Service and not by end users.
+	// Sets status of a given operation. Any new timestamps (as determined by
+	// description) are appended to TimestampEvents. Should only be called by VMs
+	// created by the Pipelines Service and not by end users.
 	SetOperationStatus(context.Context, *SetOperationStatusRequest) (*google_protobuf2.Empty, error)
 }
 
@@ -1677,133 +1705,135 @@ var _PipelinesV1Alpha2_serviceDesc = grpc.ServiceDesc{
 func init() { proto.RegisterFile("google/genomics/v1alpha2/pipelines.proto", fileDescriptor0) }
 
 var fileDescriptor0 = []byte{
-	// 2039 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x4f, 0x6f, 0xdb, 0xc8,
-	0x15, 0x0f, 0x65, 0xd9, 0x16, 0x9f, 0x6c, 0x59, 0x99, 0x4d, 0x36, 0x8a, 0x92, 0x6d, 0x1c, 0xa6,
-	0xdd, 0xb5, 0x9d, 0x42, 0x6a, 0x9c, 0x4d, 0xeb, 0x75, 0x81, 0xc5, 0xda, 0xb2, 0x62, 0x0b, 0x75,
-	0x6c, 0x95, 0xf2, 0xba, 0xff, 0x0e, 0xc4, 0x98, 0x1a, 0xd3, 0x5c, 0x93, 0x1c, 0x96, 0x43, 0x1a,
-	0x51, 0x8a, 0x16, 0x68, 0xd1, 0x43, 0xb1, 0x68, 0x2f, 0xed, 0x7e, 0x88, 0x02, 0xfd, 0x26, 0x05,
-	0x7a, 0xea, 0xa9, 0x87, 0xde, 0x7a, 0xe8, 0x47, 0x68, 0x6f, 0xc5, 0xcc, 0x70, 0xa8, 0xbf, 0xb6,
-	0x25, 0xa0, 0xd8, 0xdb, 0xcc, 0x9b, 0x79, 0x3f, 0xfe, 0xe6, 0xcd, 0x7b, 0x6f, 0xde, 0x23, 0xac,
-	0x39, 0x94, 0x3a, 0x1e, 0xa9, 0x3b, 0x24, 0xa0, 0xbe, 0x6b, 0xb3, 0xfa, 0xd5, 0x0b, 0xec, 0x85,
-	0x17, 0x78, 0xb3, 0x1e, 0xba, 0x21, 0xf1, 0xdc, 0x80, 0xb0, 0x5a, 0x18, 0xd1, 0x98, 0xa2, 0x8a,
-	0xdc, 0x59, 0x53, 0x3b, 0x6b, 0x6a, 0x67, 0xf5, 0x71, 0x8a, 0x81, 0x43, 0xb7, 0x8e, 0x83, 0x80,
-	0xc6, 0x38, 0x76, 0x69, 0x90, 0xea, 0x55, 0x9f, 0xa5, 0xab, 0x1e, 0x0d, 0x9c, 0x28, 0x09, 0x02,
-	0x37, 0x70, 0xea, 0x34, 0x24, 0xd1, 0xd0, 0xa6, 0x6f, 0xa4, 0x9b, 0xc4, 0xec, 0x2c, 0x39, 0xaf,
-	0x77, 0x13, 0xb9, 0x21, 0x5d, 0x7f, 0x34, 0xba, 0x4e, 0xfc, 0x30, 0xee, 0xa5, 0x8b, 0x4f, 0x46,
-	0x17, 0x63, 0xd7, 0x27, 0x2c, 0xc6, 0x7e, 0x98, 0x6e, 0xb8, 0x9f, 0x6e, 0x88, 0x42, 0xbb, 0x6e,
-	0xd3, 0x2e, 0x91, 0x62, 0xe3, 0x4b, 0x0d, 0x96, 0x1b, 0xd4, 0x0f, 0x93, 0x98, 0x34, 0x03, 0xc7,
-	0x0d, 0x08, 0x7a, 0x06, 0xcb, 0x6e, 0xc0, 0x62, 0x1c, 0xd8, 0xc4, 0x0a, 0xb0, 0x4f, 0x2a, 0xda,
-	0xaa, 0xb6, 0xa6, 0x9b, 0x4b, 0x4a, 0x78, 0x84, 0x7d, 0x82, 0x10, 0xe4, 0xdf, 0xd1, 0x80, 0x54,
-	0x72, 0x62, 0x4d, 0x8c, 0xd1, 0x53, 0x58, 0xf2, 0xb1, 0x7d, 0xe1, 0x06, 0xc4, 0x8a, 0x7b, 0x21,
-	0xa9, 0xcc, 0x89, 0xb5, 0x62, 0x2a, 0x3b, 0xe9, 0x85, 0x04, 0x7d, 0x00, 0xd0, 0x75, 0xd9, 0xa5,
-	0xc0, 0x65, 0x95, 0xfc, 0xea, 0xdc, 0x9a, 0x6e, 0xea, 0x5c, 0xc2, 0x41, 0x99, 0x81, 0x61, 0xc5,
-	0x4c, 0x02, 0xce, 0xfc, 0x0d, 0x89, 0x71, 0x17, 0xc7, 0x18, 0x1d, 0x41, 0xc9, 0x96, 0xf4, 0x2c,
-	0x22, 0xf8, 0x09, 0x3a, 0xc5, 0xcd, 0x8f, 0x6a, 0xd7, 0x5d, 0x45, 0x6d, 0xe8, 0x38, 0xe6, 0xb2,
-	0x3d, 0x38, 0x35, 0xfe, 0x36, 0x07, 0x85, 0x76, 0x7a, 0xab, 0x9c, 0x4e, 0x18, 0xd1, 0x2f, 0x88,
-	0x1d, 0x5b, 0x6e, 0x37, 0x3d, 0xa7, 0x9e, 0x4a, 0x5a, 0x5d, 0x7e, 0x48, 0x61, 0x80, 0xf4, 0x90,
-	0x7c, 0x8c, 0x56, 0xa1, 0xd8, 0x25, 0xcc, 0x8e, 0xdc, 0x90, 0xdf, 0x8c, 0x3a, 0xe3, 0x80, 0x08,
-	0x9d, 0x42, 0xd9, 0x0d, 0xc2, 0x24, 0xb6, 0x42, 0x1c, 0x61, 0x9f, 0xc4, 0x24, 0x62, 0x95, 0xc2,
-	0xea, 0xdc, 0x5a, 0x71, 0xf3, 0xf9, 0xf5, 0x9c, 0x15, 0xa5, 0xb6, 0xd2, 0x31, 0x57, 0x04, 0x48,
-	0x36, 0x67, 0xe8, 0xc7, 0x70, 0x97, 0x26, 0xf1, 0x08, 0xb0, 0x3e, 0x3b, 0x70, 0x59, 0xa2, 0x0c,
-	0x20, 0xef, 0xc2, 0x42, 0x97, 0xda, 0x97, 0x24, 0xaa, 0xcc, 0x0b, 0xdb, 0xae, 0x5d, 0x0f, 0xb7,
-	0x27, 0xf6, 0x35, 0xdf, 0x12, 0x3b, 0x89, 0x69, 0x74, 0x70, 0xc7, 0x4c, 0x35, 0x51, 0x0b, 0xf4,
-	0x88, 0x30, 0x9a, 0x44, 0x36, 0x61, 0x95, 0x05, 0x01, 0x33, 0x05, 0x2b, 0x53, 0xa9, 0x98, 0x7d,
-	0x6d, 0xf4, 0x04, 0x8a, 0x2a, 0xee, 0xf8, 0xb5, 0x2c, 0x0a, 0x13, 0x83, 0x12, 0xb5, 0xba, 0xbb,
-	0x00, 0x05, 0x92, 0x32, 0x30, 0x7e, 0x04, 0xf7, 0x1b, 0x11, 0xc1, 0x31, 0xe9, 0x43, 0xfe, 0x3c,
-	0x21, 0x2c, 0x46, 0x9f, 0x42, 0x41, 0xa9, 0xa4, 0x2e, 0x63, 0x4c, 0xc1, 0x27, 0xd3, 0x31, 0xfe,
-	0x32, 0x2f, 0x9c, 0x51, 0xad, 0xec, 0x44, 0x0e, 0xbb, 0xcd, 0x5f, 0xde, 0xc0, 0x82, 0xb8, 0x34,
-	0x56, 0xc9, 0x89, 0x6b, 0x79, 0x75, 0xfd, 0x07, 0x47, 0x90, 0x6b, 0x2d, 0xa1, 0xd7, 0x0c, 0xe2,
-	0xa8, 0x67, 0xa6, 0x20, 0xa8, 0x0d, 0x8b, 0xf2, 0xaa, 0x58, 0x65, 0x4e, 0xe0, 0x7d, 0x77, 0x7a,
-	0xbc, 0x63, 0xa9, 0x28, 0x01, 0x15, 0x0c, 0xfa, 0x21, 0xac, 0x30, 0x12, 0x5d, 0xb9, 0x36, 0xb1,
-	0xb0, 0x6d, 0xd3, 0x24, 0x88, 0x2b, 0xf9, 0xdb, 0x6e, 0xbc, 0x23, 0x15, 0x76, 0xe4, 0x7e, 0xb3,
-	0xc4, 0x86, 0xe6, 0xe8, 0x11, 0xe8, 0xb6, 0xe7, 0x92, 0x40, 0x58, 0x64, 0x5e, 0x58, 0xa4, 0x20,
-	0x05, 0xad, 0xee, 0xff, 0xd3, 0x29, 0x76, 0x61, 0xd1, 0xa3, 0x8e, 0xe3, 0x06, 0x8e, 0x70, 0x88,
-	0x1b, 0x29, 0x1f, 0xca, 0x8d, 0xc7, 0x22, 0x1e, 0x99, 0xa9, 0x14, 0xd1, 0x19, 0x3c, 0xbd, 0x24,
-	0x24, 0xb4, 0xae, 0x7c, 0x0b, 0x7b, 0xee, 0x15, 0xb1, 0x68, 0x60, 0x9d, 0x63, 0xd7, 0x4b, 0x22,
-	0x62, 0xa9, 0x5c, 0x5b, 0x29, 0x08, 0xf4, 0x87, 0x0a, 0x5d, 0xe5, 0xd3, 0xda, 0x5e, 0xba, 0xc1,
-	0x7c, 0xcc, 0x31, 0x4e, 0xfd, 0x1d, 0x8e, 0x70, 0x1c, 0xbc, 0x96, 0xfa, 0x6a, 0xb5, 0xfa, 0x09,
-	0x14, 0x07, 0xee, 0x12, 0x95, 0x61, 0xee, 0x92, 0xf4, 0x52, 0x57, 0xe1, 0x43, 0x74, 0x0f, 0xe6,
-	0xaf, 0xb0, 0x97, 0xa8, 0xac, 0x22, 0x27, 0xdb, 0xb9, 0x2d, 0xad, 0xba, 0x0d, 0x4b, 0x83, 0xd7,
-	0x36, 0x8b, 0xae, 0xf1, 0x6f, 0x0d, 0xd0, 0x80, 0x0f, 0xa8, 0x20, 0x78, 0x3a, 0x1c, 0x4a, 0x02,
-	0xea, 0xe0, 0xce, 0x60, 0x30, 0xa1, 0x0e, 0x20, 0x12, 0x5e, 0x10, 0x9f, 0x44, 0xd8, 0xb3, 0xb2,
-	0x88, 0xc9, 0x4d, 0x1b, 0x31, 0x07, 0x77, 0xcc, 0xbb, 0x99, 0x7e, 0x96, 0x58, 0x8f, 0x60, 0x39,
-	0xfb, 0x2e, 0x8e, 0x1c, 0x26, 0xf2, 0x64, 0x71, 0x73, 0x7d, 0x6a, 0x07, 0x36, 0x97, 0xc2, 0x81,
-	0x19, 0x8f, 0xf8, 0x2c, 0x30, 0x5f, 0x01, 0xda, 0x27, 0xf1, 0xe8, 0x49, 0x9f, 0x4c, 0x38, 0xe9,
-	0xe0, 0x39, 0x8d, 0x3f, 0x6a, 0x70, 0xef, 0xd0, 0x65, 0x99, 0x22, 0x53, 0x9a, 0xb7, 0x04, 0xf5,
-	0x13, 0x28, 0xf2, 0xc4, 0x6f, 0x85, 0x11, 0x39, 0x77, 0xdf, 0xa6, 0x96, 0x07, 0x2e, 0x6a, 0x0b,
-	0x09, 0x8f, 0x80, 0x10, 0x3b, 0xc4, 0x62, 0xee, 0x3b, 0xf9, 0xe6, 0xcd, 0x9b, 0x05, 0x2e, 0xe8,
-	0xb8, 0xef, 0xe4, 0x0b, 0xc3, 0x17, 0x63, 0x7a, 0x49, 0x02, 0x11, 0x6c, 0x1c, 0x1c, 0x3b, 0xe4,
-	0x84, 0x0b, 0x8c, 0x5f, 0x6b, 0x70, 0x7f, 0x84, 0x14, 0x0b, 0x69, 0xc0, 0x08, 0xfa, 0x0c, 0xf4,
-	0xac, 0xf8, 0xa8, 0x68, 0x22, 0xfc, 0xa7, 0xc9, 0x5f, 0x7d, 0x25, 0xf4, 0x21, 0xac, 0x04, 0xe4,
-	0x2d, 0x7f, 0x2d, 0xb2, 0xef, 0x4b, 0xf2, 0xcb, 0x5c, 0xdc, 0xce, 0x38, 0x6c, 0xc1, 0xfd, 0x3d,
-	0xe2, 0x91, 0xf1, 0x0c, 0x7a, 0xab, 0x49, 0xbf, 0x80, 0xea, 0x3e, 0x89, 0x1b, 0x34, 0x88, 0x23,
-	0xea, 0x79, 0x24, 0x6a, 0xd0, 0xe0, 0xdc, 0x75, 0xfa, 0xbe, 0xb7, 0x94, 0x95, 0x38, 0x7d, 0xfd,
-	0x62, 0x26, 0x6b, 0x75, 0xd1, 0x3a, 0x94, 0xaf, 0xb0, 0xe7, 0x76, 0xe5, 0x9e, 0x3e, 0xc7, 0xbc,
-	0xb9, 0xd2, 0x97, 0x4b, 0x96, 0xff, 0x58, 0x80, 0xf2, 0xe8, 0x97, 0x78, 0x3c, 0xb8, 0x3e, 0x76,
-	0x54, 0x89, 0x22, 0x27, 0x3c, 0x6e, 0x6c, 0xbf, 0x9b, 0x1e, 0x96, 0x0f, 0xd1, 0x2a, 0x2c, 0x39,
-	0x36, 0xb3, 0x3c, 0xea, 0x58, 0x21, 0x8e, 0x2f, 0xd2, 0x57, 0x1b, 0x1c, 0x9b, 0x1d, 0x52, 0xa7,
-	0x8d, 0xe3, 0x8b, 0xb1, 0xda, 0x25, 0x3f, 0x5e, 0xbb, 0x1c, 0x40, 0xfe, 0x0a, 0x47, 0xac, 0x32,
-	0x2f, 0x2e, 0xe3, 0xe3, 0x9b, 0xea, 0x8f, 0x61, 0x9a, 0xb5, 0x53, 0x1c, 0xa5, 0x99, 0x58, 0x20,
-	0xa0, 0x1f, 0xc0, 0x3c, 0xaf, 0x79, 0x78, 0x4a, 0xbc, 0xe5, 0x99, 0x18, 0x83, 0xda, 0xe3, 0x7a,
-	0x12, 0x4b, 0x62, 0xa0, 0x9f, 0x41, 0x91, 0x9f, 0x4d, 0x65, 0xd9, 0x45, 0x01, 0xb9, 0x3d, 0x03,
-	0xe4, 0xbe, 0xcd, 0x3a, 0x52, 0x59, 0xe2, 0x72, 0xb3, 0xa4, 0x02, 0xf4, 0x39, 0xe8, 0x02, 0xdc,
-	0x0d, 0x2e, 0x55, 0x11, 0xb3, 0x35, 0x23, 0x34, 0x57, 0x95, 0xc0, 0x05, 0x27, 0x9d, 0x56, 0xd7,
-	0xa0, 0x64, 0x92, 0x90, 0xbf, 0xda, 0xdd, 0x4e, 0x1c, 0xf1, 0xd4, 0xfc, 0x3e, 0x2c, 0x88, 0x64,
-	0x26, 0x7d, 0x5d, 0x37, 0xd3, 0x59, 0xf5, 0x7b, 0xa0, 0x67, 0xd6, 0x9b, 0x29, 0x99, 0x6e, 0x01,
-	0xf4, 0x6d, 0x35, 0x93, 0xe6, 0x5b, 0x58, 0x19, 0x31, 0xc9, 0x04, 0xf5, 0xe3, 0x41, 0xf5, 0xe2,
-	0xe6, 0x27, 0x33, 0x18, 0x65, 0xf8, 0xe4, 0x83, 0x5f, 0xbe, 0x82, 0xe5, 0x21, 0x8b, 0x7d, 0x4d,
-	0xdf, 0x35, 0x3c, 0x28, 0x9d, 0xa8, 0x6e, 0xa1, 0x79, 0x45, 0x82, 0x78, 0xb4, 0xca, 0xd5, 0xc6,
-	0xab, 0xdc, 0x2d, 0xd0, 0xb3, 0x0e, 0x23, 0x25, 0x53, 0x1d, 0x7b, 0x33, 0x33, 0x54, 0xb3, 0xbf,
-	0xd9, 0xf8, 0x2a, 0x07, 0x0f, 0x3b, 0x24, 0x3e, 0x56, 0x79, 0xa0, 0x13, 0xe3, 0x38, 0x61, 0x33,
-	0x64, 0x8d, 0x0e, 0x94, 0x33, 0x34, 0x8b, 0x70, 0xbe, 0xaa, 0xe0, 0xba, 0xa1, 0x26, 0x18, 0x3e,
-	0xa0, 0xb9, 0x12, 0x0f, 0xcd, 0x19, 0xaa, 0x03, 0x90, 0x28, 0xa2, 0x91, 0xc5, 0x7b, 0x23, 0x91,
-	0x20, 0x4a, 0x9b, 0x65, 0x05, 0x17, 0x85, 0x76, 0xad, 0x41, 0xbb, 0xc4, 0xd4, 0xc5, 0x1e, 0x3e,
-	0xe4, 0x6d, 0x92, 0x54, 0xf0, 0x09, 0x63, 0x3c, 0x07, 0xc9, 0x94, 0xb1, 0x24, 0x84, 0x6f, 0xa4,
-	0x6c, 0x62, 0x82, 0x9b, 0x9f, 0x9c, 0xe0, 0x3e, 0x85, 0xd2, 0x70, 0xa9, 0xc5, 0x5d, 0x94, 0xf8,
-	0xd8, 0xf5, 0x54, 0x76, 0x13, 0x13, 0x1e, 0x29, 0xcc, 0xa6, 0x21, 0x91, 0x67, 0xd6, 0xcd, 0x74,
-	0x66, 0x3c, 0x87, 0xd2, 0x70, 0xdd, 0x83, 0x1e, 0x02, 0x8f, 0x38, 0x99, 0xf1, 0x24, 0xc4, 0xa2,
-	0x63, 0x33, 0x9e, 0xee, 0x8c, 0x7f, 0xe6, 0xe1, 0xee, 0x58, 0xb9, 0x85, 0x36, 0xe0, 0xae, 0xef,
-	0x06, 0xae, 0x9f, 0xf8, 0x96, 0x1d, 0x26, 0x96, 0x4d, 0x23, 0x11, 0x8f, 0xfc, 0x45, 0x5b, 0x49,
-	0x17, 0x1a, 0x61, 0xd2, 0xe0, 0x62, 0xee, 0x21, 0x61, 0x44, 0x78, 0x07, 0xea, 0x9e, 0x79, 0xd2,
-	0x1d, 0x0b, 0xe6, 0xa0, 0x08, 0x7d, 0x13, 0x4a, 0x0a, 0x2d, 0xc2, 0xbe, 0xe5, 0x9c, 0x09, 0xab,
-	0x6a, 0xe6, 0x52, 0x2a, 0x35, 0xb1, 0xbf, 0x7f, 0x86, 0x5e, 0xab, 0x5c, 0x98, 0x17, 0x37, 0xf8,
-	0x9d, 0x19, 0xca, 0x43, 0x91, 0x0c, 0x55, 0x1a, 0xbc, 0x07, 0xf3, 0xbc, 0x09, 0x95, 0xe9, 0x59,
-	0x37, 0xe5, 0x04, 0xad, 0xc3, 0xdd, 0x33, 0x4a, 0x63, 0x4b, 0x34, 0x9d, 0xfc, 0x81, 0xe6, 0x34,
-	0x16, 0xc4, 0x89, 0x4a, 0x7c, 0x81, 0x23, 0xf0, 0x77, 0x7a, 0xff, 0xac, 0xfa, 0xd7, 0x1c, 0xe4,
-	0xf9, 0x34, 0xeb, 0xfa, 0xb4, 0x81, 0xae, 0xaf, 0x05, 0x79, 0xf1, 0x2c, 0xe4, 0x84, 0x5f, 0xbc,
-	0x9a, 0x95, 0x64, 0x8d, 0x3f, 0x20, 0xa6, 0x80, 0x40, 0x0f, 0x60, 0x51, 0x11, 0x91, 0xc5, 0xc2,
-	0x02, 0x13, 0x04, 0xc4, 0xc5, 0x0a, 0x9d, 0xd4, 0x93, 0xd2, 0x19, 0x7f, 0x86, 0x71, 0x12, 0x53,
-	0xab, 0x2b, 0x1e, 0x69, 0xc1, 0xbe, 0x60, 0x02, 0x17, 0xc9, 0x67, 0x9b, 0x17, 0x20, 0x11, 0xc1,
-	0x5d, 0x8b, 0x06, 0x5e, 0x4f, 0x14, 0xc7, 0x05, 0xb3, 0xc0, 0x05, 0xc7, 0x81, 0xd7, 0xe3, 0xda,
-	0x3e, 0xf7, 0x26, 0x2b, 0xa4, 0x6e, 0x10, 0x8b, 0xea, 0x56, 0x37, 0x41, 0x88, 0xda, 0x5c, 0x62,
-	0x74, 0x20, 0x2f, 0x9e, 0xb7, 0x7b, 0x50, 0x3e, 0xf9, 0x49, 0xbb, 0x69, 0x7d, 0x7e, 0xd4, 0x69,
-	0x37, 0x1b, 0xad, 0xd7, 0xad, 0xe6, 0x5e, 0xf9, 0x0e, 0x42, 0x50, 0x6a, 0x37, 0xcd, 0x4e, 0xab,
-	0x73, 0xd2, 0x3c, 0x3a, 0xb1, 0x0e, 0xf6, 0xf6, 0xca, 0xda, 0x88, 0xac, 0xd3, 0xd9, 0x2b, 0xe7,
-	0xd0, 0x32, 0xe8, 0x87, 0xc7, 0x8d, 0x9d, 0x43, 0x31, 0x9d, 0x33, 0xfe, 0xab, 0xf5, 0xfd, 0x2b,
-	0x6b, 0x34, 0x27, 0x5a, 0x76, 0x24, 0xd3, 0xe4, 0xc6, 0x33, 0xcd, 0x33, 0x58, 0xee, 0x92, 0x73,
-	0x9c, 0x78, 0xb1, 0x25, 0x53, 0x9f, 0xec, 0x32, 0x96, 0x52, 0xe1, 0x29, 0x97, 0xa1, 0x13, 0x00,
-	0x8f, 0xda, 0xd8, 0xb3, 0x6c, 0x1a, 0xf6, 0xd2, 0x56, 0xe3, 0xd5, 0x0c, 0x5d, 0x71, 0xed, 0x90,
-	0x6b, 0x37, 0x68, 0xd8, 0x33, 0x75, 0x4f, 0x0d, 0xab, 0x2f, 0x41, 0xcf, 0xe4, 0x9c, 0xfd, 0x40,
-	0x28, 0x89, 0x31, 0x97, 0x71, 0xd7, 0x52, 0x7f, 0x08, 0xf8, 0xd8, 0xd8, 0x81, 0xd2, 0x70, 0x97,
-	0xcc, 0x8b, 0x40, 0x51, 0x99, 0x0c, 0xfe, 0x4e, 0xd1, 0x85, 0x44, 0xfc, 0x4b, 0x19, 0xab, 0x57,
-	0x36, 0x7f, 0x57, 0xe8, 0x9b, 0x8f, 0x9d, 0xbe, 0xd8, 0x11, 0xa4, 0xd1, 0xef, 0x35, 0x28, 0x0d,
-	0xf7, 0xba, 0xa8, 0x7e, 0x43, 0xfe, 0x9f, 0xd4, 0x15, 0x57, 0xa7, 0xa8, 0x21, 0x8d, 0x6f, 0xfd,
-	0xe6, 0xef, 0xff, 0xfa, 0x53, 0xee, 0x89, 0xf1, 0xde, 0x84, 0xff, 0x60, 0xdb, 0x59, 0x1d, 0x8e,
-	0x7e, 0x05, 0xc5, 0x81, 0xa2, 0x1d, 0x7d, 0x7b, 0xaa, 0xda, 0x5e, 0xf1, 0xf8, 0x40, 0xed, 0x1e,
-	0xf8, 0x23, 0x56, 0xcb, 0x9e, 0x04, 0xc3, 0x10, 0x14, 0x1e, 0x1b, 0x0f, 0x26, 0x51, 0x88, 0x92,
-	0x60, 0x5b, 0xdb, 0x40, 0x5f, 0x6a, 0x50, 0x1c, 0x68, 0x04, 0x6e, 0x22, 0x30, 0xde, 0x2f, 0x4c,
-	0x65, 0x88, 0x75, 0xc1, 0xe2, 0x19, 0x7a, 0x3a, 0x81, 0x45, 0xfd, 0x17, 0x03, 0xb5, 0xf1, 0x2f,
-	0xd1, 0x1f, 0x34, 0x58, 0x1e, 0x2a, 0xe4, 0x51, 0xed, 0x86, 0xfe, 0x74, 0x42, 0x1b, 0x52, 0xad,
-	0x4f, 0xbd, 0x5f, 0x76, 0x08, 0xc6, 0x23, 0xc1, 0xee, 0x3e, 0x9a, 0x74, 0x4d, 0xe8, 0xb7, 0x1a,
-	0x94, 0x86, 0xab, 0xfa, 0x9b, 0x7c, 0x65, 0x62, 0xfd, 0x5f, 0x7d, 0x7f, 0xec, 0x3d, 0x6f, 0xfa,
-	0x61, 0xdc, 0x53, 0x66, 0xd9, 0x98, 0xc2, 0x2c, 0x7f, 0xd6, 0xe0, 0xbd, 0x09, 0x2d, 0x02, 0xfa,
-	0xf8, 0xc6, 0xbb, 0xba, 0xa6, 0xa3, 0xa8, 0x6e, 0x4c, 0x5f, 0xed, 0x18, 0x75, 0x41, 0x72, 0x1d,
-	0x7d, 0x34, 0xc9, 0x83, 0x9c, 0x09, 0x94, 0xbe, 0xd2, 0x00, 0x8d, 0x97, 0x25, 0xe8, 0xe5, 0x4d,
-	0x7f, 0x46, 0xae, 0x29, 0x62, 0xae, 0xb5, 0xdc, 0x0b, 0x41, 0xea, 0x79, 0xf5, 0xc3, 0x49, 0xa4,
-	0xd8, 0x18, 0xdc, 0xb6, 0xb6, 0xb1, 0x1b, 0xc2, 0x03, 0x9b, 0xfa, 0x93, 0x48, 0xec, 0x96, 0x32,
-	0x9f, 0x68, 0xf3, 0xcf, 0xb4, 0xb5, 0x9f, 0x7e, 0xa6, 0xb6, 0x51, 0x0f, 0x07, 0x4e, 0x8d, 0x46,
-	0x4e, 0xdd, 0x21, 0x81, 0x20, 0x51, 0x97, 0x4b, 0x38, 0x74, 0xd9, 0xf8, 0x7f, 0xee, 0xef, 0x2b,
-	0xc9, 0x7f, 0x34, 0xed, 0x6c, 0x41, 0xec, 0x7f, 0xf9, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x72,
-	0x40, 0xab, 0xc0, 0x16, 0x17, 0x00, 0x00,
+	// 2065 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x4d, 0x73, 0xdb, 0xc8,
+	0xd1, 0x36, 0x28, 0x4a, 0x22, 0x9a, 0x12, 0x45, 0xcf, 0xda, 0x6b, 0x9a, 0xf6, 0xbe, 0xb6, 0xe1,
+	0x37, 0xbb, 0xb2, 0x9c, 0x22, 0x63, 0x79, 0x9d, 0xc8, 0x4a, 0xd5, 0xd6, 0x4a, 0x14, 0x2d, 0xb1,
+	0x22, 0x4b, 0x0c, 0xa8, 0x55, 0xbe, 0x0e, 0xa8, 0x11, 0x38, 0x82, 0xb0, 0x02, 0x30, 0x08, 0x06,
+	0x50, 0x59, 0x4e, 0x25, 0x55, 0x49, 0xe5, 0x90, 0xda, 0x4a, 0x2e, 0xc9, 0xfe, 0x88, 0x5c, 0x72,
+	0xcc, 0xcf, 0xc8, 0x29, 0xa7, 0x9c, 0x72, 0xc9, 0x21, 0x3f, 0x21, 0xb9, 0xa5, 0x66, 0x06, 0x03,
+	0x82, 0x1f, 0x92, 0xc8, 0xaa, 0x54, 0x6e, 0x33, 0x3d, 0xdd, 0x0f, 0x9e, 0xe9, 0xe9, 0xe9, 0xe9,
+	0x06, 0xac, 0x3a, 0x94, 0x3a, 0x1e, 0x69, 0x3a, 0x24, 0xa0, 0xbe, 0x6b, 0xb3, 0xe6, 0xc5, 0x0b,
+	0xec, 0x85, 0x67, 0x78, 0xbd, 0x19, 0xba, 0x21, 0xf1, 0xdc, 0x80, 0xb0, 0x46, 0x18, 0xd1, 0x98,
+	0xa2, 0x9a, 0xd4, 0x6c, 0x28, 0xcd, 0x86, 0xd2, 0xac, 0x3f, 0x4c, 0x31, 0x70, 0xe8, 0x36, 0x71,
+	0x10, 0xd0, 0x18, 0xc7, 0x2e, 0x0d, 0x52, 0xbb, 0xfa, 0xd3, 0x74, 0xd5, 0xa3, 0x81, 0x13, 0x25,
+	0x41, 0xe0, 0x06, 0x4e, 0x93, 0x86, 0x24, 0x1a, 0x52, 0xfa, 0xbf, 0x54, 0x49, 0xcc, 0x4e, 0x92,
+	0xd3, 0x66, 0x3f, 0x91, 0x0a, 0xe9, 0xfa, 0x83, 0xd1, 0x75, 0xe2, 0x87, 0xf1, 0x65, 0xba, 0xf8,
+	0x68, 0x74, 0x31, 0x76, 0x7d, 0xc2, 0x62, 0xec, 0x87, 0xa9, 0xc2, 0xdd, 0x54, 0x21, 0x0a, 0xed,
+	0xa6, 0x4d, 0xfb, 0x44, 0x8a, 0x8d, 0xaf, 0x34, 0x58, 0x6e, 0x51, 0x3f, 0x4c, 0x62, 0xd2, 0x0e,
+	0x1c, 0x37, 0x20, 0xe8, 0x29, 0x2c, 0xbb, 0x01, 0x8b, 0x71, 0x60, 0x13, 0x2b, 0xc0, 0x3e, 0xa9,
+	0x69, 0x8f, 0xb5, 0x55, 0xdd, 0x5c, 0x52, 0xc2, 0x03, 0xec, 0x13, 0x84, 0xa0, 0xf8, 0x9e, 0x06,
+	0xa4, 0x56, 0x10, 0x6b, 0x62, 0x8c, 0x9e, 0xc0, 0x92, 0x8f, 0xed, 0x33, 0x37, 0x20, 0x56, 0x7c,
+	0x19, 0x92, 0xda, 0x9c, 0x58, 0x2b, 0xa7, 0xb2, 0xa3, 0xcb, 0x90, 0xa0, 0x8f, 0x00, 0xfa, 0x2e,
+	0x3b, 0x17, 0xb8, 0xac, 0x56, 0x7c, 0x3c, 0xb7, 0xaa, 0x9b, 0x3a, 0x97, 0x70, 0x50, 0x66, 0x60,
+	0x58, 0x31, 0x93, 0x80, 0x33, 0x7f, 0x4b, 0x62, 0xdc, 0xc7, 0x31, 0x46, 0x07, 0x50, 0xb1, 0x25,
+	0x3d, 0x8b, 0x08, 0x7e, 0x82, 0x4e, 0x79, 0xfd, 0x93, 0xc6, 0x55, 0x47, 0xd1, 0x18, 0xda, 0x8e,
+	0xb9, 0x6c, 0xe7, 0xa7, 0xc6, 0x5f, 0xe6, 0xa0, 0xd4, 0x4d, 0x4f, 0x95, 0xd3, 0x09, 0x23, 0xfa,
+	0x25, 0xb1, 0x63, 0xcb, 0xed, 0xa7, 0xfb, 0xd4, 0x53, 0x49, 0xa7, 0xcf, 0x37, 0x29, 0x1c, 0x90,
+	0x6e, 0x92, 0x8f, 0xd1, 0x63, 0x28, 0xf7, 0x09, 0xb3, 0x23, 0x37, 0xe4, 0x27, 0xa3, 0xf6, 0x98,
+	0x13, 0xa1, 0x63, 0xa8, 0xba, 0x41, 0x98, 0xc4, 0x56, 0x88, 0x23, 0xec, 0x93, 0x98, 0x44, 0xac,
+	0x56, 0x7a, 0x3c, 0xb7, 0x5a, 0x5e, 0x7f, 0x7e, 0x35, 0x67, 0x45, 0xa9, 0xab, 0x6c, 0xcc, 0x15,
+	0x01, 0x92, 0xcd, 0x19, 0xfa, 0x21, 0xdc, 0xa6, 0x49, 0x3c, 0x02, 0xac, 0xcf, 0x0e, 0x5c, 0x95,
+	0x28, 0x39, 0xe4, 0x6d, 0x58, 0xe8, 0x53, 0xfb, 0x9c, 0x44, 0xb5, 0x79, 0xe1, 0xdb, 0xd5, 0xab,
+	0xe1, 0x76, 0x84, 0x5e, 0xfb, 0x1d, 0xb1, 0x93, 0x98, 0x46, 0x7b, 0xb7, 0xcc, 0xd4, 0x12, 0x75,
+	0x40, 0x8f, 0x08, 0xa3, 0x49, 0x64, 0x13, 0x56, 0x5b, 0x10, 0x30, 0x53, 0xb0, 0x32, 0x95, 0x89,
+	0x39, 0xb0, 0x46, 0x8f, 0xa0, 0xac, 0xee, 0x1d, 0x3f, 0x96, 0x45, 0xe1, 0x62, 0x50, 0xa2, 0x4e,
+	0x7f, 0x1b, 0xa0, 0x44, 0x52, 0x06, 0xc6, 0x0f, 0xe0, 0x6e, 0x2b, 0x22, 0x38, 0x26, 0x03, 0xc8,
+	0x9f, 0x26, 0x84, 0xc5, 0xe8, 0x33, 0x28, 0x29, 0x93, 0x34, 0x64, 0x8c, 0x29, 0xf8, 0x64, 0x36,
+	0xc6, 0x9f, 0x17, 0x44, 0x30, 0xaa, 0x95, 0xad, 0xc8, 0x61, 0x37, 0xc5, 0xcb, 0x5b, 0x58, 0x10,
+	0x87, 0xc6, 0x6a, 0x05, 0x71, 0x2c, 0xaf, 0xae, 0xfe, 0xe0, 0x08, 0x72, 0xa3, 0x23, 0xec, 0xda,
+	0x41, 0x1c, 0x5d, 0x9a, 0x29, 0x08, 0xea, 0xc2, 0xa2, 0x3c, 0x2a, 0x56, 0x9b, 0x13, 0x78, 0xdf,
+	0x9e, 0x1e, 0xef, 0x50, 0x1a, 0x4a, 0x40, 0x05, 0x83, 0xbe, 0x0f, 0x2b, 0x8c, 0x44, 0x17, 0xae,
+	0x4d, 0x2c, 0x6c, 0xdb, 0x34, 0x09, 0xe2, 0x5a, 0xf1, 0xa6, 0x13, 0xef, 0x49, 0x83, 0x2d, 0xa9,
+	0x6f, 0x56, 0xd8, 0xd0, 0x1c, 0x3d, 0x00, 0xdd, 0xf6, 0x5c, 0x12, 0x08, 0x8f, 0xcc, 0x0b, 0x8f,
+	0x94, 0xa4, 0xa0, 0xd3, 0xff, 0x6f, 0x06, 0xc5, 0x36, 0x2c, 0x7a, 0xd4, 0x71, 0xdc, 0xc0, 0x11,
+	0x01, 0x71, 0x2d, 0xe5, 0x7d, 0xa9, 0x78, 0x28, 0xee, 0x23, 0x33, 0x95, 0x21, 0x3a, 0x81, 0x27,
+	0xe7, 0x84, 0x84, 0xd6, 0x85, 0x6f, 0x61, 0xcf, 0xbd, 0x20, 0x16, 0x0d, 0xac, 0x53, 0xec, 0x7a,
+	0x49, 0x44, 0x2c, 0x95, 0x6b, 0x6b, 0x25, 0x81, 0x7e, 0x5f, 0xa1, 0xab, 0x7c, 0xda, 0xd8, 0x49,
+	0x15, 0xcc, 0x87, 0x1c, 0xe3, 0xd8, 0xdf, 0xe2, 0x08, 0x87, 0xc1, 0x1b, 0x69, 0xaf, 0x56, 0x79,
+	0x0c, 0x78, 0xf8, 0x84, 0x78, 0xea, 0x6a, 0xce, 0x10, 0x03, 0xfb, 0xc2, 0x2e, 0x8d, 0x01, 0x09,
+	0x52, 0x7f, 0x0d, 0xe5, 0x5c, 0x68, 0xa0, 0x2a, 0xcc, 0x9d, 0x93, 0xcb, 0x34, 0xf2, 0xf8, 0x10,
+	0xdd, 0x81, 0xf9, 0x0b, 0xec, 0x25, 0x2a, 0x49, 0xc9, 0xc9, 0x66, 0x61, 0x43, 0xab, 0x6f, 0xc2,
+	0x52, 0x3e, 0x0a, 0x66, 0xb2, 0x7d, 0x0d, 0xe5, 0x1c, 0x9b, 0x59, 0x4c, 0x8d, 0x7f, 0x6a, 0x80,
+	0x72, 0x3b, 0x53, 0xd7, 0xf1, 0xc9, 0xf0, 0xa5, 0x16, 0x50, 0x7b, 0xb7, 0xf2, 0xd7, 0x1a, 0xf5,
+	0x00, 0x91, 0xf0, 0x8c, 0xf8, 0x24, 0xc2, 0x9e, 0x95, 0xdd, 0xdd, 0xc2, 0xb4, 0x77, 0x77, 0xef,
+	0x96, 0x79, 0x3b, 0xb3, 0xcf, 0x52, 0xfc, 0x01, 0x2c, 0x67, 0xdf, 0xc5, 0x91, 0xc3, 0x44, 0xc6,
+	0x2e, 0xaf, 0x3f, 0x9b, 0xfa, 0x58, 0xcc, 0xa5, 0x30, 0x37, 0xe3, 0xb9, 0x27, 0x4b, 0x11, 0xaf,
+	0x00, 0xed, 0x92, 0x78, 0x74, 0xa7, 0x8f, 0x26, 0xec, 0x34, 0xbf, 0x4f, 0xe3, 0xf7, 0x1a, 0xdc,
+	0xd9, 0x77, 0x59, 0x66, 0xc8, 0x94, 0xe5, 0x0d, 0xe9, 0xe5, 0x11, 0x94, 0xf9, 0x13, 0x64, 0x85,
+	0x11, 0x39, 0x75, 0xdf, 0xa5, 0x9e, 0x07, 0x2e, 0xea, 0x0a, 0x09, 0xbf, 0x8b, 0x21, 0x76, 0x88,
+	0xc5, 0xdc, 0xf7, 0xf2, 0xf5, 0x9d, 0x37, 0x4b, 0x5c, 0xd0, 0x73, 0xdf, 0xcb, 0xb7, 0x8e, 0x2f,
+	0xc6, 0xf4, 0x9c, 0x04, 0xe2, 0xda, 0x73, 0x70, 0xec, 0x90, 0x23, 0x2e, 0x30, 0x7e, 0xa9, 0xc1,
+	0xdd, 0x11, 0x52, 0x2c, 0xa4, 0x01, 0x23, 0xe8, 0x73, 0xd0, 0xb3, 0x32, 0xa8, 0xa6, 0x89, 0xa0,
+	0x9e, 0x26, 0x93, 0x0e, 0x8c, 0xd0, 0xc7, 0xb0, 0x12, 0x90, 0x77, 0xfc, 0xdd, 0xca, 0xbe, 0x2f,
+	0xc9, 0x2f, 0x73, 0x71, 0x37, 0xe3, 0xb0, 0x01, 0x77, 0x77, 0x88, 0x47, 0xc6, 0x73, 0xf9, 0x8d,
+	0x2e, 0xfd, 0x12, 0xea, 0xbb, 0x24, 0x6e, 0xd1, 0x20, 0x8e, 0xa8, 0xe7, 0x91, 0xa8, 0x45, 0x83,
+	0x53, 0xd7, 0x19, 0xc4, 0xde, 0x52, 0x56, 0x6c, 0x0d, 0xec, 0xcb, 0x99, 0xac, 0xd3, 0x47, 0xcf,
+	0xa0, 0x7a, 0x81, 0x3d, 0xb7, 0x2f, 0x75, 0x06, 0x1c, 0x8b, 0xe6, 0xca, 0x40, 0x2e, 0x59, 0xfe,
+	0x6d, 0x01, 0xaa, 0xa3, 0x5f, 0xe2, 0xf7, 0xc1, 0xf5, 0xb1, 0xa3, 0x8a, 0x25, 0x39, 0xe1, 0xf7,
+	0xc6, 0xf6, 0xfb, 0xe9, 0x66, 0xf9, 0x10, 0x3d, 0x86, 0x25, 0xc7, 0x66, 0x96, 0x47, 0x1d, 0x2b,
+	0xc4, 0xf1, 0x59, 0x5a, 0x3f, 0x80, 0x63, 0xb3, 0x7d, 0xea, 0x74, 0x71, 0x7c, 0x36, 0x56, 0x45,
+	0x15, 0xc7, 0xab, 0xa8, 0x3d, 0x28, 0x5e, 0xe0, 0x88, 0xd5, 0xe6, 0xc5, 0x61, 0x7c, 0x7a, 0x5d,
+	0x25, 0x34, 0x4c, 0xb3, 0x71, 0x8c, 0xa3, 0x34, 0xc1, 0x08, 0x04, 0xf4, 0x3d, 0x98, 0xe7, 0xd5,
+	0x17, 0x4f, 0xce, 0x37, 0x24, 0xab, 0x31, 0xa8, 0x1d, 0x6e, 0x27, 0xb1, 0x24, 0x06, 0xfa, 0x09,
+	0x94, 0xf9, 0xde, 0x54, 0xbe, 0x5f, 0x14, 0x90, 0x9b, 0x33, 0x40, 0xee, 0xda, 0xac, 0x27, 0x8d,
+	0x25, 0x2e, 0x77, 0x4b, 0x2a, 0x40, 0x5f, 0x80, 0x2e, 0xc0, 0xdd, 0xe0, 0x5c, 0x95, 0x53, 0x1b,
+	0x33, 0x42, 0x73, 0x53, 0x09, 0x5c, 0x72, 0xd2, 0x69, 0x7d, 0x15, 0x2a, 0x26, 0x09, 0x79, 0xfd,
+	0xd0, 0xef, 0xc5, 0x11, 0x7f, 0x24, 0x3e, 0x84, 0x05, 0x91, 0xcc, 0x64, 0xac, 0xeb, 0x66, 0x3a,
+	0xab, 0x7f, 0x07, 0xf4, 0xcc, 0x7b, 0x33, 0xe5, 0xd2, 0x0d, 0x80, 0x81, 0xaf, 0x66, 0xb2, 0x7c,
+	0x07, 0x2b, 0x23, 0x2e, 0x99, 0x60, 0x7e, 0x98, 0x37, 0x2f, 0xaf, 0xbf, 0x9e, 0xc1, 0x29, 0xc3,
+	0x3b, 0xcf, 0x7f, 0xf9, 0x02, 0x96, 0x87, 0x3c, 0xf6, 0x3f, 0xfa, 0xae, 0xe1, 0x41, 0xe5, 0x48,
+	0xf5, 0x2d, 0xed, 0x0b, 0x12, 0xc4, 0xa3, 0xf5, 0xb6, 0x36, 0x5e, 0x6f, 0x6f, 0x80, 0x9e, 0xf5,
+	0x3a, 0x29, 0x99, 0xfa, 0xd8, 0xeb, 0x9d, 0xa1, 0x9a, 0x03, 0x65, 0xe3, 0xeb, 0x02, 0xdc, 0xef,
+	0x91, 0xf8, 0x50, 0xe5, 0x81, 0x5e, 0x8c, 0xe3, 0x84, 0xcd, 0x90, 0x35, 0x7a, 0x50, 0xcd, 0xd0,
+	0x2c, 0xc2, 0xf9, 0xaa, 0xd2, 0xef, 0x9a, 0xea, 0x64, 0x78, 0x83, 0xe6, 0x4a, 0x3c, 0x34, 0x67,
+	0xa8, 0x09, 0x40, 0xa2, 0x88, 0x46, 0x16, 0xef, 0xd2, 0x44, 0x82, 0xa8, 0xac, 0x57, 0x15, 0x5c,
+	0x14, 0xda, 0x8d, 0x16, 0xed, 0x13, 0x53, 0x17, 0x3a, 0x7c, 0xc8, 0x1b, 0x36, 0x69, 0xe0, 0x13,
+	0xc6, 0x78, 0x0e, 0x92, 0x29, 0x63, 0x49, 0x08, 0xdf, 0x4a, 0xd9, 0xc4, 0x04, 0x37, 0x3f, 0x39,
+	0xc1, 0x7d, 0x06, 0x95, 0xe1, 0xa2, 0x8f, 0x87, 0x28, 0xf1, 0xb1, 0xeb, 0xa9, 0xec, 0x26, 0x26,
+	0xfc, 0xa6, 0x30, 0x9b, 0x86, 0x44, 0xee, 0x59, 0x37, 0xd3, 0x99, 0xf1, 0x1c, 0x2a, 0xc3, 0x15,
+	0x18, 0xba, 0x0f, 0xfc, 0xc6, 0xc9, 0x8c, 0x27, 0x21, 0x16, 0x1d, 0x9b, 0xf1, 0x74, 0x67, 0xfc,
+	0xbd, 0x08, 0xb7, 0xc7, 0x0a, 0x3f, 0xb4, 0x06, 0xb7, 0x7d, 0x37, 0x70, 0xfd, 0xc4, 0xb7, 0xec,
+	0x30, 0xb1, 0x6c, 0x1a, 0x89, 0xfb, 0xc8, 0x5f, 0xb4, 0x95, 0x74, 0xa1, 0x15, 0x26, 0x2d, 0x2e,
+	0xe6, 0x11, 0x12, 0x46, 0x84, 0xf7, 0xc2, 0xee, 0x89, 0x27, 0xc3, 0xb1, 0x64, 0xe6, 0x45, 0xe8,
+	0xff, 0xa1, 0xa2, 0xd0, 0x22, 0xec, 0x5b, 0xce, 0x89, 0xf0, 0xaa, 0x66, 0x2e, 0xa5, 0x52, 0x13,
+	0xfb, 0xbb, 0x27, 0xe8, 0x8d, 0xca, 0x85, 0x45, 0x71, 0x82, 0xdf, 0x9a, 0xa1, 0x50, 0x15, 0xc9,
+	0x50, 0xa5, 0xc1, 0x3b, 0x30, 0xcf, 0xdb, 0x61, 0x99, 0x9e, 0x75, 0x53, 0x4e, 0xd0, 0x33, 0xb8,
+	0x7d, 0x42, 0x69, 0x6c, 0x89, 0xf6, 0x97, 0x3f, 0xd0, 0x9c, 0xc6, 0x82, 0xd8, 0x51, 0x85, 0x2f,
+	0x70, 0x04, 0xfe, 0x4e, 0xef, 0x9e, 0xf0, 0x97, 0x3a, 0xa0, 0x16, 0xee, 0xf7, 0x23, 0xc2, 0x98,
+	0xa8, 0x76, 0x4b, 0xa6, 0x1e, 0xd0, 0x2d, 0x29, 0xa8, 0xff, 0xa9, 0x00, 0x45, 0xae, 0x9d, 0xb5,
+	0xa7, 0x5a, 0xae, 0x3d, 0xed, 0x40, 0x51, 0xbc, 0x1a, 0x05, 0x11, 0x36, 0xaf, 0x66, 0xdd, 0x43,
+	0x83, 0xbf, 0x2f, 0xa6, 0x80, 0x40, 0xf7, 0x60, 0x51, 0xf1, 0x94, 0xb5, 0xc4, 0x02, 0x93, 0xfc,
+	0xf8, 0xb9, 0x0b, 0x9b, 0x34, 0xd0, 0xd2, 0x19, 0x7f, 0xa5, 0x71, 0x12, 0x53, 0xab, 0x2f, 0xde,
+	0x70, 0xb1, 0xb9, 0x92, 0x09, 0x5c, 0x24, 0x5f, 0x75, 0xae, 0xe0, 0xf3, 0x78, 0xb2, 0x42, 0xea,
+	0x06, 0xb1, 0xa8, 0xb4, 0x75, 0x13, 0x84, 0xa8, 0xcb, 0x25, 0x46, 0x0f, 0x8a, 0xe2, 0x81, 0xbb,
+	0x03, 0xd5, 0xa3, 0x1f, 0x75, 0xdb, 0xd6, 0x17, 0x07, 0xbd, 0x6e, 0xbb, 0xd5, 0x79, 0xd3, 0x69,
+	0xef, 0x54, 0x6f, 0x21, 0x04, 0x95, 0x6e, 0xdb, 0xec, 0x75, 0x7a, 0x47, 0xed, 0x83, 0x23, 0x6b,
+	0x6f, 0x67, 0xa7, 0xaa, 0x8d, 0xc8, 0x7a, 0xbd, 0x9d, 0x6a, 0x01, 0x2d, 0x83, 0xbe, 0x7f, 0xd8,
+	0xda, 0xda, 0x17, 0xd3, 0x39, 0xe3, 0xdf, 0xda, 0x20, 0xc2, 0xb2, 0xa6, 0x77, 0xa2, 0xf3, 0x46,
+	0x72, 0x4d, 0x61, 0x3c, 0xd7, 0x3c, 0x85, 0xe5, 0x3e, 0x39, 0xc5, 0x89, 0x17, 0x5b, 0x32, 0xf9,
+	0xc9, 0x8e, 0x67, 0x29, 0x15, 0x1e, 0x73, 0x19, 0x3a, 0x02, 0xf0, 0xa8, 0x8d, 0x3d, 0xcb, 0xa6,
+	0xe1, 0x65, 0xda, 0xf6, 0xbc, 0x9a, 0xa1, 0x43, 0x6f, 0xec, 0x73, 0xeb, 0x16, 0x0d, 0x2f, 0x4d,
+	0xdd, 0x53, 0xc3, 0xfa, 0x4b, 0xd0, 0x33, 0x39, 0x67, 0x9f, 0xbb, 0x4c, 0x62, 0xcc, 0x65, 0x3c,
+	0xb8, 0xd4, 0xdf, 0x0a, 0x3e, 0x36, 0xb6, 0xa0, 0x32, 0xdc, 0xb1, 0xf3, 0xe0, 0x12, 0xb5, 0x49,
+	0xfe, 0xd7, 0x8e, 0x2e, 0x24, 0xe2, 0xbf, 0xce, 0x58, 0xc5, 0xb2, 0xfe, 0x9b, 0xd2, 0xc0, 0x7d,
+	0xec, 0xf8, 0xc5, 0x96, 0x20, 0x8d, 0x7e, 0xab, 0x41, 0x65, 0xb8, 0xef, 0x46, 0xcd, 0x6b, 0x5e,
+	0x80, 0x49, 0x1d, 0x7a, 0x7d, 0x8a, 0x2a, 0xd2, 0xf8, 0xc6, 0xaf, 0xfe, 0xfa, 0x8f, 0x3f, 0x14,
+	0x1e, 0x19, 0x1f, 0x4c, 0xf8, 0x27, 0xb7, 0x99, 0x55, 0xe2, 0xe8, 0x17, 0x50, 0xce, 0x95, 0xed,
+	0xe8, 0x9b, 0x53, 0x55, 0xf7, 0x8a, 0xc7, 0x47, 0x4a, 0x3b, 0xf7, 0x77, 0xae, 0x91, 0x3d, 0x0a,
+	0x86, 0x21, 0x28, 0x3c, 0x34, 0xee, 0x4d, 0xa2, 0x10, 0x25, 0xc1, 0xa6, 0xb6, 0x86, 0xbe, 0xd2,
+	0xa0, 0x9c, 0x6b, 0x05, 0xae, 0x23, 0x30, 0xde, 0x31, 0x4c, 0xe5, 0x88, 0x67, 0x82, 0xc5, 0x53,
+	0xf4, 0x64, 0x02, 0x8b, 0xe6, 0xcf, 0x72, 0xd5, 0xf1, 0xcf, 0xd1, 0xef, 0x34, 0x58, 0x1e, 0x2a,
+	0xe5, 0x51, 0xe3, 0x9a, 0x5e, 0x79, 0x42, 0x23, 0x52, 0x6f, 0x4e, 0xad, 0x2f, 0x7b, 0x04, 0xe3,
+	0x81, 0x60, 0x77, 0x17, 0x4d, 0x3a, 0x26, 0xf4, 0x6b, 0x0d, 0x2a, 0xc3, 0x75, 0xfd, 0x75, 0xb1,
+	0x32, 0xb1, 0x03, 0xa8, 0x7f, 0x38, 0xf6, 0xa2, 0xb7, 0xfd, 0x30, 0xbe, 0x54, 0x6e, 0x59, 0x9b,
+	0xc2, 0x2d, 0x7f, 0xd4, 0xe0, 0x83, 0x09, 0x4d, 0x02, 0xfa, 0xf4, 0xda, 0xb3, 0xba, 0xa2, 0xa7,
+	0xa8, 0xaf, 0x4d, 0x5f, 0xef, 0x18, 0x4d, 0x41, 0xf2, 0x19, 0xfa, 0x64, 0x52, 0x04, 0x39, 0x13,
+	0x28, 0x7d, 0xad, 0x01, 0x1a, 0x2f, 0x4c, 0xd0, 0xcb, 0xeb, 0xfe, 0xd2, 0x5c, 0x51, 0xc6, 0x5c,
+	0xe9, 0xb9, 0x17, 0x82, 0xd4, 0xf3, 0xfa, 0xc7, 0x93, 0x48, 0xb1, 0x31, 0xb8, 0x4d, 0x6d, 0x6d,
+	0x3b, 0x84, 0x7b, 0x36, 0xf5, 0x27, 0x91, 0xd8, 0xae, 0x64, 0x31, 0xd1, 0xe5, 0x9f, 0xe9, 0x6a,
+	0x3f, 0xfe, 0x5c, 0xa9, 0x51, 0x0f, 0x07, 0x4e, 0x83, 0x46, 0x4e, 0xd3, 0x21, 0x81, 0x20, 0xd1,
+	0x94, 0x4b, 0x38, 0x74, 0xd9, 0xf8, 0x3f, 0xf7, 0xef, 0x2a, 0xc9, 0xbf, 0x34, 0xed, 0x64, 0x41,
+	0xe8, 0xbf, 0xfc, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x13, 0x10, 0x96, 0x1d, 0xa2, 0x17, 0x00,
+	0x00,
 }
diff --git a/googleapis/iam/v1/iam_policy.pb.go b/googleapis/iam/v1/iam_policy.pb.go
index 8f1ab89b..55f84e35 100644
--- a/googleapis/iam/v1/iam_policy.pb.go
+++ b/googleapis/iam/v1/iam_policy.pb.go
@@ -16,6 +16,8 @@ It has these top-level messages:
 	TestIamPermissionsResponse
 	Policy
 	Binding
+	PolicyDelta
+	BindingDelta
 */
 package iam
 
diff --git a/googleapis/iam/v1/policy.pb.go b/googleapis/iam/v1/policy.pb.go
index dd2554fb..36f3b536 100644
--- a/googleapis/iam/v1/policy.pb.go
+++ b/googleapis/iam/v1/policy.pb.go
@@ -14,6 +14,34 @@ var _ = proto.Marshal
 var _ = fmt.Errorf
 var _ = math.Inf
 
+// The type of action performed on a Binding in a policy.
+type BindingDelta_Action int32
+
+const (
+	// Unspecified.
+	BindingDelta_ACTION_UNSPECIFIED BindingDelta_Action = 0
+	// Addition of a Binding.
+	BindingDelta_ADD BindingDelta_Action = 1
+	// Removal of a Binding.
+	BindingDelta_REMOVE BindingDelta_Action = 2
+)
+
+var BindingDelta_Action_name = map[int32]string{
+	0: "ACTION_UNSPECIFIED",
+	1: "ADD",
+	2: "REMOVE",
+}
+var BindingDelta_Action_value = map[string]int32{
+	"ACTION_UNSPECIFIED": 0,
+	"ADD":                1,
+	"REMOVE":             2,
+}
+
+func (x BindingDelta_Action) String() string {
+	return proto.EnumName(BindingDelta_Action_name, int32(x))
+}
+func (BindingDelta_Action) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{3, 0} }
+
 // Defines an Identity and Access Management (IAM) policy. It is used to
 // specify access control policies for Cloud Platform resources.
 //
@@ -142,30 +170,101 @@ func (m *Binding) GetMembers() []string {
 	return nil
 }
 
+// The difference delta between two policies.
+type PolicyDelta struct {
+	// The delta for Bindings between two policies.
+	BindingDeltas []*BindingDelta `protobuf:"bytes,1,rep,name=binding_deltas,json=bindingDeltas" json:"binding_deltas,omitempty"`
+}
+
+func (m *PolicyDelta) Reset()                    { *m = PolicyDelta{} }
+func (m *PolicyDelta) String() string            { return proto.CompactTextString(m) }
+func (*PolicyDelta) ProtoMessage()               {}
+func (*PolicyDelta) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
+
+func (m *PolicyDelta) GetBindingDeltas() []*BindingDelta {
+	if m != nil {
+		return m.BindingDeltas
+	}
+	return nil
+}
+
+// One delta entry for Binding. Each individual change (only one member in each
+// entry) to a binding will be a separate entry.
+type BindingDelta struct {
+	// The action that was performed on a Binding.
+	// Required
+	Action BindingDelta_Action `protobuf:"varint,1,opt,name=action,enum=google.iam.v1.BindingDelta_Action" json:"action,omitempty"`
+	// Role that is assigned to `members`.
+	// For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+	// Required
+	Role string `protobuf:"bytes,2,opt,name=role" json:"role,omitempty"`
+	// A single identity requesting access for a Cloud Platform resource.
+	// Follows the same format of Binding.members.
+	// Required
+	Member string `protobuf:"bytes,3,opt,name=member" json:"member,omitempty"`
+}
+
+func (m *BindingDelta) Reset()                    { *m = BindingDelta{} }
+func (m *BindingDelta) String() string            { return proto.CompactTextString(m) }
+func (*BindingDelta) ProtoMessage()               {}
+func (*BindingDelta) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
+
+func (m *BindingDelta) GetAction() BindingDelta_Action {
+	if m != nil {
+		return m.Action
+	}
+	return BindingDelta_ACTION_UNSPECIFIED
+}
+
+func (m *BindingDelta) GetRole() string {
+	if m != nil {
+		return m.Role
+	}
+	return ""
+}
+
+func (m *BindingDelta) GetMember() string {
+	if m != nil {
+		return m.Member
+	}
+	return ""
+}
+
 func init() {
 	proto.RegisterType((*Policy)(nil), "google.iam.v1.Policy")
 	proto.RegisterType((*Binding)(nil), "google.iam.v1.Binding")
+	proto.RegisterType((*PolicyDelta)(nil), "google.iam.v1.PolicyDelta")
+	proto.RegisterType((*BindingDelta)(nil), "google.iam.v1.BindingDelta")
+	proto.RegisterEnum("google.iam.v1.BindingDelta_Action", BindingDelta_Action_name, BindingDelta_Action_value)
 }
 
 func init() { proto.RegisterFile("google/iam/v1/policy.proto", fileDescriptor1) }
 
 var fileDescriptor1 = []byte{
-	// 261 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x90, 0x31, 0x4f, 0xc3, 0x30,
-	0x10, 0x85, 0xe5, 0xb6, 0xb4, 0xd4, 0x85, 0x81, 0x20, 0xa1, 0xa8, 0x62, 0x88, 0x3a, 0x65, 0xb2,
-	0x49, 0x19, 0x18, 0xd8, 0xc2, 0x80, 0xd8, 0xa2, 0x0c, 0x0c, 0x6c, 0x97, 0xd6, 0xb2, 0x0e, 0xc5,
-	0xbe, 0xc8, 0x0e, 0x91, 0xf8, 0x4b, 0xfc, 0x42, 0x46, 0x14, 0x3b, 0x45, 0xea, 0x76, 0xa7, 0xef,
-	0x3d, 0xbd, 0x7b, 0xc7, 0xb7, 0x9a, 0x48, 0xb7, 0x4a, 0x22, 0x18, 0x39, 0x14, 0xb2, 0xa3, 0x16,
-	0x0f, 0xdf, 0xa2, 0x73, 0xd4, 0x53, 0x72, 0x1d, 0x99, 0x40, 0x30, 0x62, 0x28, 0xb6, 0xf7, 0x93,
-	0x14, 0x3a, 0x94, 0x60, 0x2d, 0xf5, 0xd0, 0x23, 0x59, 0x1f, 0xc5, 0xbb, 0x4f, 0xbe, 0xac, 0x82,
-	0x39, 0x49, 0xf9, 0x6a, 0x50, 0xce, 0x23, 0xd9, 0x94, 0x65, 0x2c, 0xbf, 0xa8, 0x4f, 0x6b, 0xb2,
-	0xe7, 0x97, 0x0d, 0xda, 0x23, 0x5a, 0xed, 0xd3, 0x45, 0x36, 0xcf, 0x37, 0xfb, 0x3b, 0x71, 0x96,
-	0x21, 0xca, 0x88, 0xeb, 0x7f, 0x5d, 0x92, 0xf0, 0x85, 0xea, 0x41, 0xa7, 0xf3, 0x8c, 0xe5, 0x57,
-	0x75, 0x98, 0x77, 0x4f, 0x7c, 0x35, 0x09, 0x47, 0xec, 0xa8, 0x55, 0x21, 0x69, 0x5d, 0x87, 0x79,
-	0x3c, 0xc0, 0x28, 0xd3, 0x28, 0xe7, 0xd3, 0x59, 0x36, 0xcf, 0xd7, 0xf5, 0x69, 0x2d, 0x0d, 0xbf,
-	0x39, 0x90, 0x39, 0xcf, 0x2c, 0x37, 0xf1, 0xee, 0x6a, 0xac, 0x51, 0xb1, 0x8f, 0x87, 0x89, 0x6a,
-	0x6a, 0xc1, 0x6a, 0x41, 0x4e, 0x4b, 0xad, 0x6c, 0x28, 0x29, 0x23, 0x82, 0x0e, 0xfd, 0xf4, 0xb0,
-	0x67, 0x04, 0xf3, 0xcb, 0xd8, 0xcf, 0xec, 0xf6, 0x35, 0xba, 0x5e, 0x5a, 0xfa, 0x3a, 0x8a, 0x37,
-	0x30, 0xe2, 0xbd, 0x68, 0x96, 0xc1, 0xf5, 0xf8, 0x17, 0x00, 0x00, 0xff, 0xff, 0xf5, 0x02, 0xb8,
-	0xca, 0x65, 0x01, 0x00, 0x00,
+	// 387 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x52, 0x4d, 0x8f, 0xd3, 0x30,
+	0x10, 0xc5, 0xed, 0x92, 0xd2, 0xd9, 0x0f, 0x15, 0x23, 0x55, 0xd1, 0xc2, 0xa1, 0xca, 0x29, 0x27,
+	0x87, 0x16, 0x21, 0x24, 0x38, 0x35, 0x4d, 0x40, 0x39, 0xb0, 0x1b, 0x0c, 0xec, 0x81, 0xcb, 0xca,
+	0x69, 0x2d, 0xcb, 0x28, 0xb6, 0xa3, 0x24, 0x54, 0xe2, 0x2f, 0x21, 0xf1, 0xff, 0x38, 0xa2, 0xd8,
+	0xee, 0xaa, 0x95, 0x10, 0xb7, 0x79, 0x79, 0xef, 0x65, 0xde, 0xcc, 0x18, 0xae, 0x85, 0x31, 0xa2,
+	0xe6, 0x89, 0x64, 0x2a, 0xd9, 0x2f, 0x93, 0xc6, 0xd4, 0x72, 0xfb, 0x93, 0x34, 0xad, 0xe9, 0x0d,
+	0xbe, 0x74, 0x1c, 0x91, 0x4c, 0x91, 0xfd, 0xf2, 0xfa, 0x85, 0x97, 0xb2, 0x46, 0x26, 0x4c, 0x6b,
+	0xd3, 0xb3, 0x5e, 0x1a, 0xdd, 0x39, 0x71, 0xf4, 0x1d, 0x82, 0xd2, 0x9a, 0x71, 0x08, 0x93, 0x3d,
+	0x6f, 0x3b, 0x69, 0x74, 0x88, 0x16, 0x28, 0x7e, 0x4c, 0x0f, 0x10, 0xaf, 0xe0, 0x49, 0x25, 0xf5,
+	0x4e, 0x6a, 0xd1, 0x85, 0x67, 0x8b, 0x71, 0x7c, 0xbe, 0x9a, 0x93, 0x93, 0x1e, 0x24, 0x75, 0x34,
+	0x7d, 0xd0, 0x61, 0x0c, 0x67, 0xbc, 0x67, 0x22, 0x1c, 0x2f, 0x50, 0x7c, 0x41, 0x6d, 0x1d, 0xbd,
+	0x81, 0x89, 0x17, 0x0e, 0x74, 0x6b, 0x6a, 0x6e, 0x3b, 0x4d, 0xa9, 0xad, 0x87, 0x00, 0x8a, 0xab,
+	0x8a, 0xb7, 0x5d, 0x38, 0x5a, 0x8c, 0xe3, 0x29, 0x3d, 0xc0, 0xe8, 0x13, 0x9c, 0xbb, 0x90, 0x19,
+	0xaf, 0x7b, 0x86, 0x53, 0xb8, 0xf2, 0x7d, 0xee, 0x77, 0xc3, 0x87, 0x2e, 0x44, 0x36, 0xd5, 0xf3,
+	0x7f, 0xa7, 0xb2, 0x26, 0x7a, 0x59, 0x1d, 0xa1, 0x2e, 0xfa, 0x8d, 0xe0, 0xe2, 0x98, 0xc7, 0x6f,
+	0x21, 0x60, 0xdb, 0xfe, 0x30, 0xfd, 0xd5, 0x2a, 0xfa, 0xcf, 0xcf, 0xc8, 0xda, 0x2a, 0xa9, 0x77,
+	0x3c, 0x4c, 0x33, 0x3a, 0x9a, 0x66, 0x0e, 0x81, 0x8b, 0x6f, 0x57, 0x30, 0xa5, 0x1e, 0x45, 0xaf,
+	0x21, 0x70, 0x6e, 0x3c, 0x07, 0xbc, 0xde, 0x7c, 0x29, 0x6e, 0x6f, 0xee, 0xbf, 0xde, 0x7c, 0x2e,
+	0xf3, 0x4d, 0xf1, 0xbe, 0xc8, 0xb3, 0xd9, 0x23, 0x3c, 0x81, 0xf1, 0x3a, 0xcb, 0x66, 0x08, 0x03,
+	0x04, 0x34, 0xff, 0x78, 0x7b, 0x97, 0xcf, 0x46, 0xa9, 0x82, 0xa7, 0x5b, 0xa3, 0x4e, 0x33, 0xa5,
+	0x7e, 0x2b, 0xe5, 0x70, 0xc9, 0x12, 0x7d, 0x7b, 0xe9, 0x59, 0x61, 0x6a, 0xa6, 0x05, 0x31, 0xad,
+	0x48, 0x04, 0xd7, 0xf6, 0xce, 0x89, 0xa3, 0x58, 0x23, 0x3b, 0xff, 0x66, 0xde, 0x49, 0xa6, 0xfe,
+	0x20, 0xf4, 0x6b, 0xf4, 0xec, 0x83, 0x73, 0x6d, 0x6a, 0xf3, 0x63, 0x47, 0x0a, 0xa6, 0xc8, 0xdd,
+	0xb2, 0x0a, 0xac, 0xeb, 0xd5, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8c, 0x4a, 0x85, 0x10, 0x68,
+	0x02, 0x00, 0x00,
 }
diff --git a/googleapis/logging/v2/log_entry.pb.go b/googleapis/logging/v2/log_entry.pb.go
index be85190c..0a16bd27 100644
--- a/googleapis/logging/v2/log_entry.pb.go
+++ b/googleapis/logging/v2/log_entry.pb.go
@@ -69,6 +69,8 @@ type LogEntry struct {
 	//
 	//     "projects/[PROJECT_ID]/logs/[LOG_ID]"
 	//     "organizations/[ORGANIZATION_ID]/logs/[LOG_ID]"
+	//     "billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]"
+	//     "folders/[FOLDER_ID]/logs/[LOG_ID]"
 	//
 	// `[LOG_ID]` must be URL-encoded within `log_name`. Example:
 	// `"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity"`.
@@ -95,16 +97,20 @@ type LogEntry struct {
 	//	*LogEntry_JsonPayload
 	Payload isLogEntry_Payload `protobuf_oneof:"payload"`
 	// Optional. The time the event described by the log entry occurred.  If
-	// omitted, Stackdriver Logging will use the time the log entry is received.
+	// omitted in a new log entry, Stackdriver Logging will insert the time the
+	// log entry is received.  Stackdriver Logging might reject log entries whose
+	// time stamps are more than a couple of hours in the future. Log entries
+	// with time stamps in the past are accepted.
 	Timestamp *google_protobuf4.Timestamp `protobuf:"bytes,9,opt,name=timestamp" json:"timestamp,omitempty"`
 	// Optional. The severity of the log entry. The default value is
 	// `LogSeverity.DEFAULT`.
 	Severity google_logging_type1.LogSeverity `protobuf:"varint,10,opt,name=severity,enum=google.logging.type.LogSeverity" json:"severity,omitempty"`
-	// Optional. A unique ID for the log entry. If you provide this
-	// field, the logging service considers other log entries in the
-	// same project with the same ID as duplicates which can be removed.  If
-	// omitted, Stackdriver Logging will generate a unique ID for this
-	// log entry.
+	// Optional. A unique identifier for the log entry. If you provide a value,
+	// then Stackdriver Logging considers other log entries in the same project,
+	// with the same `timestamp`, and with the same `insert_id` to be duplicates
+	// which can be removed.  If omitted in new log entries, then Stackdriver
+	// Logging will insert its own unique identifier. The `insert_id` is used
+	// to order log entries that have the same `timestamp` value.
 	InsertId string `protobuf:"bytes,4,opt,name=insert_id,json=insertId" json:"insert_id,omitempty"`
 	// Optional. Information about the HTTP request associated with this
 	// log entry, if applicable.
diff --git a/googleapis/logging/v2/logging.pb.go b/googleapis/logging/v2/logging.pb.go
index 4e443f63..9859c5b9 100644
--- a/googleapis/logging/v2/logging.pb.go
+++ b/googleapis/logging/v2/logging.pb.go
@@ -30,6 +30,8 @@ type DeleteLogRequest struct {
 	//
 	//     "projects/[PROJECT_ID]/logs/[LOG_ID]"
 	//     "organizations/[ORGANIZATION_ID]/logs/[LOG_ID]"
+	//     "billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]"
+	//     "folders/[FOLDER_ID]/logs/[LOG_ID]"
 	//
 	// `[LOG_ID]` must be URL-encoded. For example,
 	// `"projects/my-project-id/logs/syslog"`,
@@ -58,6 +60,8 @@ type WriteLogEntriesRequest struct {
 	//
 	//     "projects/[PROJECT_ID]/logs/[LOG_ID]"
 	//     "organizations/[ORGANIZATION_ID]/logs/[LOG_ID]"
+	//     "billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]"
+	//     "folders/[FOLDER_ID]/logs/[LOG_ID]"
 	//
 	// `[LOG_ID]` must be URL-encoded. For example,
 	// `"projects/my-project-id/logs/syslog"` or
@@ -79,10 +83,16 @@ type WriteLogEntriesRequest struct {
 	// as a label in this parameter, then the log entry's label is not changed.
 	// See [LogEntry][google.logging.v2.LogEntry].
 	Labels map[string]string `protobuf:"bytes,3,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	// Required. The log entries to write. Values supplied for the fields
+	// Required.  The log entries to write. Values supplied for the fields
 	// `log_name`, `resource`, and `labels` in this `entries.write` request are
-	// added to those log entries that do not provide their own values for the
-	// fields.
+	// inserted into those log entries in this list that do not provide their own
+	// values.
+	//
+	// Stackdriver Logging also creates and inserts values for `timestamp` and
+	// `insert_id` if the entries do not provide them. The created `insert_id` for
+	// the N'th entry in this list will be greater than earlier entries and less
+	// than later entries.  Otherwise, the order of log entries in this list does
+	// not matter.
 	//
 	// To improve throughput and to avoid exceeding the
 	// [quota limit](/logging/quota-policy) for calls to `entries.write`,
@@ -91,9 +101,9 @@ type WriteLogEntriesRequest struct {
 	Entries []*LogEntry `protobuf:"bytes,4,rep,name=entries" json:"entries,omitempty"`
 	// Optional. Whether valid entries should be written even if some other
 	// entries fail due to INVALID_ARGUMENT or PERMISSION_DENIED errors. If any
-	// entry is not written, the response status will be the error associated
-	// with one of the failed entries and include error details in the form of
-	// WriteLogEntriesPartialErrors.
+	// entry is not written, then the response status is the error associated
+	// with one of the failed entries and the response includes error details
+	// keyed by the entries' zero-based index in the `entries.write` method.
 	PartialSuccess bool `protobuf:"varint,5,opt,name=partial_success,json=partialSuccess" json:"partial_success,omitempty"`
 }
 
@@ -155,11 +165,13 @@ type ListLogEntriesRequest struct {
 	// resource name format and added to the list of resources in
 	// `resource_names`.
 	ProjectIds []string `protobuf:"bytes,1,rep,name=project_ids,json=projectIds" json:"project_ids,omitempty"`
-	// Required. Names of one or more resources from which to retrieve log
-	// entries:
+	// Required. Names of one or more parent resources from which to
+	// retrieve log entries:
 	//
 	//     "projects/[PROJECT_ID]"
 	//     "organizations/[ORGANIZATION_ID]"
+	//     "billingAccounts/[BILLING_ACCOUNT_ID]"
+	//     "folders/[FOLDER_ID]"
 	//
 	// Projects listed in the `project_ids` field are added to this list.
 	ResourceNames []string `protobuf:"bytes,8,rep,name=resource_names,json=resourceNames" json:"resource_names,omitempty"`
@@ -176,15 +188,15 @@ type ListLogEntriesRequest struct {
 	// option returns entries in order of increasing values of
 	// `LogEntry.timestamp` (oldest first), and the second option returns entries
 	// in order of decreasing timestamps (newest first).  Entries with equal
-	// timestamps are returned in order of `LogEntry.insertId`.
+	// timestamps are returned in order of their `insert_id` values.
 	OrderBy string `protobuf:"bytes,3,opt,name=order_by,json=orderBy" json:"order_by,omitempty"`
 	// Optional. The maximum number of results to return from this request.
-	// Non-positive values are ignored.  The presence of `nextPageToken` in the
+	// Non-positive values are ignored.  The presence of `next_page_token` in the
 	// response indicates that more results might be available.
 	PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
 	// Optional. If present, then retrieve the next batch of results from the
-	// preceding call to this method.  `pageToken` must be the value of
-	// `nextPageToken` from the previous response.  The values of other method
+	// preceding call to this method.  `page_token` must be the value of
+	// `next_page_token` from the previous response.  The values of other method
 	// parameters should be identical to those in the previous call.
 	PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
 }
@@ -347,6 +359,8 @@ type ListLogsRequest struct {
 	//
 	//     "projects/[PROJECT_ID]"
 	//     "organizations/[ORGANIZATION_ID]"
+	//     "billingAccounts/[BILLING_ACCOUNT_ID]"
+	//     "folders/[FOLDER_ID]"
 	Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
 	// Optional. The maximum number of results to return from this request.
 	// Non-positive values are ignored.  The presence of `nextPageToken` in the
@@ -441,9 +455,10 @@ const _ = grpc.SupportPackageIsVersion4
 type LoggingServiceV2Client interface {
 	// Deletes all the log entries in a log.
 	// The log reappears if it receives new entries.
+	// Log entries written shortly before the delete operation might not be
+	// deleted.
 	DeleteLog(ctx context.Context, in *DeleteLogRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error)
-	// Writes log entries to Stackdriver Logging.  All log entries are
-	// written by this method.
+	// Writes log entries to Stackdriver Logging.
 	WriteLogEntries(ctx context.Context, in *WriteLogEntriesRequest, opts ...grpc.CallOption) (*WriteLogEntriesResponse, error)
 	// Lists log entries.  Use this method to retrieve log entries from
 	// Stackdriver Logging.  For ways to export log entries, see
@@ -452,7 +467,7 @@ type LoggingServiceV2Client interface {
 	// Lists the descriptors for monitored resource types used by Stackdriver
 	// Logging.
 	ListMonitoredResourceDescriptors(ctx context.Context, in *ListMonitoredResourceDescriptorsRequest, opts ...grpc.CallOption) (*ListMonitoredResourceDescriptorsResponse, error)
-	// Lists the logs in projects or organizations.
+	// Lists the logs in projects, organizations, folders, or billing accounts.
 	// Only logs that have entries are listed.
 	ListLogs(ctx context.Context, in *ListLogsRequest, opts ...grpc.CallOption) (*ListLogsResponse, error)
 }
@@ -515,9 +530,10 @@ func (c *loggingServiceV2Client) ListLogs(ctx context.Context, in *ListLogsReque
 type LoggingServiceV2Server interface {
 	// Deletes all the log entries in a log.
 	// The log reappears if it receives new entries.
+	// Log entries written shortly before the delete operation might not be
+	// deleted.
 	DeleteLog(context.Context, *DeleteLogRequest) (*google_protobuf5.Empty, error)
-	// Writes log entries to Stackdriver Logging.  All log entries are
-	// written by this method.
+	// Writes log entries to Stackdriver Logging.
 	WriteLogEntries(context.Context, *WriteLogEntriesRequest) (*WriteLogEntriesResponse, error)
 	// Lists log entries.  Use this method to retrieve log entries from
 	// Stackdriver Logging.  For ways to export log entries, see
@@ -526,7 +542,7 @@ type LoggingServiceV2Server interface {
 	// Lists the descriptors for monitored resource types used by Stackdriver
 	// Logging.
 	ListMonitoredResourceDescriptors(context.Context, *ListMonitoredResourceDescriptorsRequest) (*ListMonitoredResourceDescriptorsResponse, error)
-	// Lists the logs in projects or organizations.
+	// Lists the logs in projects, organizations, folders, or billing accounts.
 	// Only logs that have entries are listed.
 	ListLogs(context.Context, *ListLogsRequest) (*ListLogsResponse, error)
 }
diff --git a/googleapis/logging/v2/logging_config.pb.go b/googleapis/logging/v2/logging_config.pb.go
index c5cf56c5..3c1b1d68 100644
--- a/googleapis/logging/v2/logging_config.pb.go
+++ b/googleapis/logging/v2/logging_config.pb.go
@@ -54,7 +54,8 @@ func (LogSink_VersionFormat) EnumDescriptor() ([]byte, []int) { return fileDescr
 // Describes a sink used to export log entries to one of the following
 // destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a
 // Cloud Pub/Sub topic.  A logs filter controls which log entries are
-// exported. The sink must be created within a project or organization.
+// exported. The sink must be created within a project, organization, billing
+// account, or folder.
 type LogSink struct {
 	// Required. The client-assigned sink identifier, unique within the
 	// project. Example: `"my-syslog-errors-to-pubsub"`.  Sink identifiers are
@@ -171,8 +172,12 @@ func (m *LogSink) GetEndTime() *google_protobuf4.Timestamp {
 
 // The parameters to `ListSinks`.
 type ListSinksRequest struct {
-	// Required. The parent resource whose sinks are to be listed.
-	// Examples: `"projects/my-logging-project"`, `"organizations/123456789"`.
+	// Required. The parent resource whose sinks are to be listed:
+	//
+	//     "projects/[PROJECT_ID]"
+	//     "organizations/[ORGANIZATION_ID]"
+	//     "billingAccounts/[BILLING_ACCOUNT_ID]"
+	//     "folders/[FOLDER_ID]"
 	Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
 	// Optional. If present, then retrieve the next batch of results from the
 	// preceding call to this method.  `pageToken` must be the value of
@@ -242,10 +247,12 @@ func (m *ListSinksResponse) GetNextPageToken() string {
 
 // The parameters to `GetSink`.
 type GetSinkRequest struct {
-	// Required. The parent resource name of the sink:
+	// Required. The resource name of the sink:
 	//
 	//     "projects/[PROJECT_ID]/sinks/[SINK_ID]"
 	//     "organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
+	//     "billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]"
+	//     "folders/[FOLDER_ID]/sinks/[SINK_ID]"
 	//
 	// Example: `"projects/my-project-id/sinks/my-sink-id"`.
 	SinkName string `protobuf:"bytes,1,opt,name=sink_name,json=sinkName" json:"sink_name,omitempty"`
@@ -269,6 +276,8 @@ type CreateSinkRequest struct {
 	//
 	//     "projects/[PROJECT_ID]"
 	//     "organizations/[ORGANIZATION_ID]"
+	//     "billingAccounts/[BILLING_ACCOUNT_ID]"
+	//     "folders/[FOLDER_ID]"
 	//
 	// Examples: `"projects/my-logging-project"`, `"organizations/123456789"`.
 	Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
@@ -278,9 +287,9 @@ type CreateSinkRequest struct {
 	// Optional. Determines the kind of IAM identity returned as `writer_identity`
 	// in the new sink.  If this value is omitted or set to false, and if the
 	// sink's parent is a project, then the value returned as `writer_identity` is
-	// `cloud-logs@google.com`, the same identity used before the addition of
-	// writer identities to this API. The sink's destination must be in the same
-	// project as the sink itself.
+	// the same group or service account used by Stackdriver Logging before the
+	// addition of writer identities to this API. The sink's destination must be
+	// in the same project as the sink itself.
 	//
 	// If this field is set to true, or if the sink is owned by a non-project
 	// resource such as an organization, then the value of `writer_identity` will
@@ -322,6 +331,8 @@ type UpdateSinkRequest struct {
 	//
 	//     "projects/[PROJECT_ID]/sinks/[SINK_ID]"
 	//     "organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
+	//     "billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]"
+	//     "folders/[FOLDER_ID]/sinks/[SINK_ID]"
 	//
 	// Example: `"projects/my-project-id/sinks/my-sink-id"`.
 	SinkName string `protobuf:"bytes,1,opt,name=sink_name,json=sinkName" json:"sink_name,omitempty"`
@@ -337,9 +348,9 @@ type UpdateSinkRequest struct {
 	//
 	// +   If the old and new values of this field are both false or both true,
 	//     then there is no change to the sink's `writer_identity`.
-	// +   If the old value was false and the new value is true, then
+	// +   If the old value is false and the new value is true, then
 	//     `writer_identity` is changed to a unique service account.
-	// +   It is an error if the old value was true and the new value is false.
+	// +   It is an error if the old value is true and the new value is false.
 	UniqueWriterIdentity bool `protobuf:"varint,3,opt,name=unique_writer_identity,json=uniqueWriterIdentity" json:"unique_writer_identity,omitempty"`
 }
 
@@ -376,10 +387,10 @@ type DeleteSinkRequest struct {
 	//
 	//     "projects/[PROJECT_ID]/sinks/[SINK_ID]"
 	//     "organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
+	//     "billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]"
+	//     "folders/[FOLDER_ID]/sinks/[SINK_ID]"
 	//
-	// It is an error if the sink does not exist.  Example:
-	// `"projects/my-project-id/sinks/my-sink-id"`.  It is an error if
-	// the sink does not exist.
+	// Example: `"projects/my-project-id/sinks/my-sink-id"`.
 	SinkName string `protobuf:"bytes,1,opt,name=sink_name,json=sinkName" json:"sink_name,omitempty"`
 }
 
diff --git a/googleapis/logging/v2/logging_metrics.pb.go b/googleapis/logging/v2/logging_metrics.pb.go
index ef047de7..24782649 100644
--- a/googleapis/logging/v2/logging_metrics.pb.go
+++ b/googleapis/logging/v2/logging_metrics.pb.go
@@ -8,6 +8,8 @@ import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
 import _ "google.golang.org/genproto/googleapis/api/annotations"
+import _ "google.golang.org/genproto/googleapis/api/distribution"
+import _ "google.golang.org/genproto/googleapis/api/metric"
 import google_protobuf5 "github.com/golang/protobuf/ptypes/empty"
 
 import (
@@ -517,46 +519,47 @@ var _MetricsServiceV2_serviceDesc = grpc.ServiceDesc{
 func init() { proto.RegisterFile("google/logging/v2/logging_metrics.proto", fileDescriptor3) }
 
 var fileDescriptor3 = []byte{
-	// 646 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0x4f, 0x53, 0xd3, 0x40,
-	0x14, 0x77, 0x0b, 0x14, 0x79, 0x28, 0xc5, 0x65, 0x88, 0x9d, 0x80, 0x43, 0xcd, 0x01, 0x0a, 0x87,
-	0x44, 0xa3, 0xc3, 0xf8, 0x67, 0x3c, 0x00, 0x3a, 0x5c, 0xd0, 0xe9, 0x14, 0xed, 0xc1, 0x4b, 0x27,
-	0xb4, 0xaf, 0x99, 0x95, 0x34, 0x1b, 0x93, 0x6d, 0x07, 0x71, 0xb8, 0x30, 0xdc, 0x9c, 0xf1, 0xa0,
-	0xdf, 0xc2, 0x8f, 0xe0, 0xd7, 0xd0, 0x8f, 0xe0, 0x07, 0x71, 0xb2, 0xd9, 0x94, 0xd8, 0x46, 0xda,
-	0xe1, 0xd4, 0xdd, 0xf7, 0xef, 0xf7, 0x7b, 0xef, 0xfd, 0xba, 0x81, 0x0d, 0x97, 0x73, 0xd7, 0x43,
-	0xcb, 0xe3, 0xae, 0xcb, 0x7c, 0xd7, 0xea, 0xdb, 0xe9, 0xb1, 0xd9, 0x45, 0x11, 0xb2, 0x56, 0x64,
-	0x06, 0x21, 0x17, 0x9c, 0xde, 0x49, 0x02, 0x4d, 0xe5, 0x35, 0xfb, 0xb6, 0xbe, 0xaa, 0x72, 0x9d,
-	0x80, 0x59, 0x8e, 0xef, 0x73, 0xe1, 0x08, 0xc6, 0x7d, 0x95, 0xa0, 0xaf, 0x28, 0xaf, 0xbc, 0x1d,
-	0xf5, 0x3a, 0x16, 0x76, 0x03, 0xf1, 0x29, 0x71, 0x1a, 0x3f, 0x09, 0xcc, 0x1d, 0x70, 0xf7, 0xb5,
-	0x84, 0xa0, 0x14, 0xa6, 0x7d, 0xa7, 0x8b, 0x65, 0x52, 0x21, 0xd5, 0xb9, 0xba, 0x3c, 0xd3, 0x0a,
-	0xcc, 0xb7, 0x31, 0x6a, 0x85, 0x2c, 0x88, 0x8b, 0x96, 0x0b, 0xd2, 0x95, 0x35, 0x51, 0x0d, 0x8a,
-	0x1d, 0xe6, 0x09, 0x0c, 0xcb, 0x53, 0xd2, 0xa9, 0x6e, 0x74, 0x07, 0x66, 0xfb, 0x18, 0x46, 0x71,
-	0xd6, 0x74, 0x85, 0x54, 0x17, 0xec, 0x0d, 0x73, 0x84, 0xbb, 0x39, 0x00, 0x37, 0x77, 0x02, 0xd6,
-	0x48, 0xc2, 0xeb, 0x69, 0x9e, 0xb1, 0x0a, 0x70, 0x69, 0xa6, 0x45, 0x28, 0x34, 0xec, 0xc5, 0x1b,
-	0xf2, 0xf7, 0xe1, 0x22, 0x31, 0x8e, 0x61, 0xf9, 0x80, 0x45, 0x62, 0x50, 0x22, 0xaa, 0xe3, 0xc7,
-	0x1e, 0x46, 0x22, 0x66, 0x14, 0x38, 0x21, 0xfa, 0x42, 0x75, 0xa2, 0x6e, 0xf4, 0x1e, 0x40, 0xe0,
-	0xb8, 0xd8, 0x14, 0xfc, 0x18, 0xd3, 0x56, 0xe6, 0x62, 0xcb, 0xdb, 0xd8, 0x40, 0x57, 0x40, 0x5e,
-	0x9a, 0x11, 0x3b, 0x45, 0xd9, 0xcb, 0x4c, 0xfd, 0x66, 0x6c, 0x38, 0x64, 0xa7, 0x68, 0x9c, 0x80,
-	0x36, 0x0c, 0x16, 0x05, 0xdc, 0x8f, 0x90, 0x6e, 0xc3, 0xac, 0x5a, 0x51, 0x99, 0x54, 0xa6, 0xaa,
-	0xf3, 0xf6, 0xea, 0x55, 0x7d, 0xd6, 0xd3, 0x60, 0xba, 0x0e, 0x25, 0x1f, 0x4f, 0x44, 0x73, 0x84,
-	0xd2, 0xed, 0xd8, 0x5c, 0x4b, 0x69, 0x19, 0xdb, 0xb0, 0xb4, 0x8f, 0x97, 0xc0, 0x69, 0x93, 0x6b,
-	0x30, 0x9f, 0x54, 0x6a, 0x66, 0x76, 0x06, 0x89, 0xe9, 0x8d, 0xd3, 0x45, 0xa3, 0x03, 0xda, 0x5e,
-	0x88, 0x8e, 0xc0, 0x91, 0xd4, 0xff, 0xcd, 0xe7, 0x31, 0x14, 0x93, 0x7c, 0x49, 0x64, 0x5c, 0x23,
-	0x2a, 0xd6, 0xe0, 0xa0, 0xbd, 0x0b, 0xda, 0x79, 0x38, 0xe3, 0x28, 0x5e, 0x13, 0xf0, 0x29, 0x68,
-	0x2f, 0xd1, 0xc3, 0x6b, 0x00, 0xda, 0xbf, 0x67, 0x60, 0x51, 0xed, 0xef, 0x10, 0xc3, 0x3e, 0x6b,
-	0x61, 0xc3, 0xa6, 0x5f, 0x09, 0x2c, 0xfc, 0xbb, 0x5b, 0x5a, 0xcd, 0x23, 0x92, 0xa7, 0x35, 0x7d,
-	0x73, 0x82, 0xc8, 0x44, 0x28, 0xc6, 0xc6, 0xf9, 0xaf, 0x3f, 0xdf, 0x0b, 0xf7, 0xe9, 0x5a, 0xfc,
-	0xef, 0xfe, 0x9c, 0xcc, 0xfc, 0x45, 0x10, 0xf2, 0x0f, 0xd8, 0x12, 0x91, 0xb5, 0x75, 0x66, 0xa5,
-	0xca, 0xb8, 0x20, 0x70, 0x2b, 0xbb, 0x72, 0xba, 0x9e, 0x03, 0x92, 0xa3, 0x09, 0xfd, 0xca, 0xf9,
-	0x19, 0xa6, 0xc4, 0xaf, 0xd2, 0x75, 0x89, 0x9f, 0x19, 0x54, 0x86, 0x44, 0xca, 0xc1, 0xda, 0x3a,
-	0xa3, 0x5f, 0x08, 0x94, 0x86, 0x14, 0x44, 0xf3, 0xda, 0xcd, 0x57, 0xd9, 0x18, 0x32, 0x96, 0x24,
-	0xb3, 0x69, 0x8c, 0x1b, 0xc6, 0x33, 0xb5, 0x75, 0xfa, 0x8d, 0x40, 0x69, 0x48, 0x67, 0xb9, 0x6c,
-	0xf2, 0xb5, 0x38, 0x86, 0xcd, 0xb6, 0x64, 0xf3, 0x40, 0x9f, 0x70, 0x34, 0x03, 0x52, 0x17, 0x04,
-	0x4a, 0x43, 0x5a, 0xcc, 0x25, 0x95, 0xaf, 0x57, 0x5d, 0x4b, 0x43, 0xd3, 0xc7, 0xd9, 0x7c, 0x15,
-	0x3f, 0xce, 0xe9, 0xa6, 0xb6, 0x26, 0xa4, 0xb3, 0x7b, 0x4e, 0x60, 0xb9, 0xc5, 0xbb, 0xa3, 0xc0,
-	0xbb, 0x4b, 0x07, 0xc9, 0x59, 0x69, 0xb1, 0x16, 0xe3, 0xd4, 0xc8, 0xfb, 0x27, 0x2a, 0xd2, 0xe5,
-	0x9e, 0xe3, 0xbb, 0x26, 0x0f, 0x5d, 0xcb, 0x45, 0x5f, 0xb2, 0xb0, 0x12, 0x97, 0x13, 0xb0, 0x28,
-	0xf3, 0x35, 0x7a, 0xae, 0x8e, 0x3f, 0x0a, 0x77, 0xf7, 0x93, 0xd4, 0x3d, 0x8f, 0xf7, 0xda, 0xa6,
-	0x2a, 0x6f, 0x36, 0xec, 0xa3, 0xa2, 0x4c, 0x7f, 0xf4, 0x37, 0x00, 0x00, 0xff, 0xff, 0x52, 0x8b,
-	0x69, 0xfe, 0xcb, 0x06, 0x00, 0x00,
+	// 665 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0x4f, 0x4f, 0x13, 0x41,
+	0x14, 0x77, 0x0a, 0x14, 0x79, 0x28, 0xc5, 0x21, 0x94, 0xa6, 0x40, 0xa8, 0x7b, 0x80, 0xc2, 0x61,
+	0x57, 0x57, 0x43, 0xfc, 0x13, 0x0f, 0x80, 0x86, 0x0b, 0x1a, 0x52, 0xb4, 0x07, 0x2f, 0xcd, 0xd2,
+	0x3e, 0x36, 0x23, 0xed, 0xce, 0xba, 0x33, 0x6d, 0x10, 0xc3, 0x85, 0x70, 0x33, 0xf1, 0xa0, 0xdf,
+	0xc2, 0x8f, 0xe0, 0xd7, 0xd0, 0x8f, 0xe0, 0x07, 0x31, 0x3b, 0x33, 0x0b, 0x6b, 0xbb, 0xd2, 0x86,
+	0x53, 0x67, 0xde, 0xef, 0xbd, 0xfd, 0xfd, 0xde, 0x7b, 0xbf, 0x4c, 0x61, 0xcd, 0xe7, 0xdc, 0x6f,
+	0xa3, 0xd3, 0xe6, 0xbe, 0xcf, 0x02, 0xdf, 0xe9, 0xb9, 0xc9, 0xb1, 0xd1, 0x41, 0x19, 0xb1, 0xa6,
+	0xb0, 0xc3, 0x88, 0x4b, 0x4e, 0xef, 0xe9, 0x44, 0xdb, 0xa0, 0x76, 0xcf, 0x2d, 0x2f, 0x99, 0x5a,
+	0x2f, 0x64, 0x8e, 0x17, 0x04, 0x5c, 0x7a, 0x92, 0xf1, 0xc0, 0x14, 0x94, 0x97, 0x53, 0x68, 0x8b,
+	0x09, 0x19, 0xb1, 0xc3, 0x6e, 0x8c, 0x1b, 0x78, 0x21, 0x05, 0x6b, 0x26, 0x03, 0x2c, 0x1a, 0x40,
+	0xdd, 0x0e, 0xbb, 0x47, 0x0e, 0x76, 0x42, 0xf9, 0x49, 0x83, 0xd6, 0x4f, 0x02, 0x53, 0x7b, 0xdc,
+	0x7f, 0xad, 0x0a, 0x28, 0x85, 0xf1, 0xc0, 0xeb, 0x60, 0x89, 0x54, 0x48, 0x75, 0xaa, 0xa6, 0xce,
+	0xb4, 0x02, 0xd3, 0x2d, 0x14, 0xcd, 0x88, 0x85, 0x31, 0x59, 0x29, 0xa7, 0xa0, 0x74, 0x88, 0x16,
+	0x21, 0x7f, 0xc4, 0xda, 0x12, 0xa3, 0xd2, 0x98, 0x02, 0xcd, 0x8d, 0x6e, 0xc1, 0x64, 0x0f, 0x23,
+	0x11, 0x57, 0x8d, 0x57, 0x48, 0x75, 0xc6, 0x5d, 0xb3, 0x07, 0x7a, 0xb6, 0x2f, 0xc9, 0xed, 0xad,
+	0x90, 0xd5, 0x75, 0x7a, 0x2d, 0xa9, 0xb3, 0x96, 0x00, 0xae, 0xc2, 0x34, 0x0f, 0xb9, 0xba, 0x3b,
+	0x7b, 0x4b, 0xfd, 0x3e, 0x9c, 0x25, 0xd6, 0x31, 0xcc, 0xef, 0x31, 0x21, 0x2f, 0x3f, 0x21, 0x6a,
+	0xf8, 0xb1, 0x8b, 0x42, 0xc6, 0x8a, 0x42, 0x2f, 0xc2, 0x40, 0x9a, 0x4e, 0xcc, 0x8d, 0x2e, 0x03,
+	0x84, 0x9e, 0x8f, 0x0d, 0xc9, 0x8f, 0x31, 0x69, 0x65, 0x2a, 0x8e, 0xbc, 0x8d, 0x03, 0x74, 0x11,
+	0xd4, 0xa5, 0x21, 0xd8, 0x29, 0xaa, 0x5e, 0x26, 0x6a, 0xb7, 0xe3, 0xc0, 0x01, 0x3b, 0x45, 0xeb,
+	0x04, 0x8a, 0xfd, 0x64, 0x22, 0xe4, 0x81, 0x40, 0xba, 0x09, 0x93, 0x66, 0xb5, 0x25, 0x52, 0x19,
+	0xab, 0x4e, 0xbb, 0x4b, 0xd7, 0xf5, 0x59, 0x4b, 0x92, 0xe9, 0x2a, 0x14, 0x02, 0x3c, 0x91, 0x8d,
+	0x01, 0x49, 0x77, 0xe3, 0xf0, 0x7e, 0x22, 0xcb, 0xda, 0x84, 0xb9, 0x5d, 0xbc, 0x22, 0x4e, 0x9a,
+	0x5c, 0x81, 0x69, 0xfd, 0xa5, 0x46, 0x6a, 0x67, 0xa0, 0x43, 0x6f, 0xbc, 0x0e, 0x5a, 0x47, 0x50,
+	0xdc, 0x89, 0xd0, 0x93, 0x38, 0x50, 0xfa, 0xbf, 0xf9, 0x3c, 0x86, 0xbc, 0xae, 0x57, 0x42, 0x86,
+	0x35, 0x62, 0x72, 0x2d, 0x0e, 0xc5, 0x77, 0x61, 0x2b, 0x8b, 0x67, 0x98, 0xc4, 0x1b, 0x12, 0x3e,
+	0x85, 0xe2, 0x4b, 0x6c, 0xe3, 0x0d, 0x08, 0xdd, 0xdf, 0x13, 0x30, 0x6b, 0xf6, 0x77, 0x80, 0x51,
+	0x8f, 0x35, 0xb1, 0xee, 0xd2, 0xaf, 0x04, 0x66, 0xfe, 0xdd, 0x2d, 0xad, 0x66, 0x09, 0xc9, 0xf2,
+	0x5a, 0x79, 0x7d, 0x84, 0x4c, 0x6d, 0x14, 0x6b, 0xed, 0xfc, 0xd7, 0x9f, 0xef, 0xb9, 0xfb, 0x74,
+	0x25, 0x7e, 0x15, 0x3e, 0xeb, 0x99, 0xbf, 0x08, 0x23, 0xfe, 0x01, 0x9b, 0x52, 0x38, 0x1b, 0x67,
+	0x4e, 0xe2, 0x8c, 0x0b, 0x02, 0x77, 0xd2, 0x2b, 0xa7, 0xab, 0x19, 0x24, 0x19, 0x9e, 0x28, 0x5f,
+	0x3b, 0x3f, 0xcb, 0x56, 0xfc, 0x55, 0xba, 0xaa, 0xf8, 0x53, 0x83, 0x4a, 0x89, 0x48, 0x34, 0x38,
+	0x1b, 0x67, 0xf4, 0x0b, 0x81, 0x42, 0x9f, 0x83, 0x68, 0x56, 0xbb, 0xd9, 0x2e, 0x1b, 0x22, 0xc6,
+	0x51, 0x62, 0xd6, 0xad, 0x61, 0xc3, 0x78, 0x66, 0xb6, 0x4e, 0xbf, 0x11, 0x28, 0xf4, 0xf9, 0x2c,
+	0x53, 0x4d, 0xb6, 0x17, 0x87, 0xa8, 0xd9, 0x54, 0x6a, 0x1e, 0x94, 0x47, 0x1c, 0xcd, 0xa5, 0xa8,
+	0x0b, 0x02, 0x85, 0x3e, 0x2f, 0x66, 0x8a, 0xca, 0xf6, 0x6b, 0xb9, 0x98, 0xa4, 0x26, 0x8f, 0xb3,
+	0xfd, 0x2a, 0x7e, 0x9c, 0x93, 0x4d, 0x6d, 0x8c, 0x28, 0x67, 0xfb, 0x9c, 0xc0, 0x7c, 0x93, 0x77,
+	0x06, 0x89, 0xb7, 0xe7, 0xf6, 0xf4, 0xd9, 0x78, 0x71, 0x3f, 0xe6, 0xd9, 0x27, 0xef, 0x9f, 0x98,
+	0x4c, 0x9f, 0xb7, 0xbd, 0xc0, 0xb7, 0x79, 0xe4, 0x3b, 0x3e, 0x06, 0x4a, 0x85, 0xa3, 0x21, 0x2f,
+	0x64, 0x22, 0xf5, 0x2f, 0xf6, 0xdc, 0x1c, 0x7f, 0xe4, 0x16, 0x76, 0x75, 0xe9, 0x4e, 0x9b, 0x77,
+	0x5b, 0xb6, 0xf9, 0xbc, 0x5d, 0x77, 0x0f, 0xf3, 0xaa, 0xfc, 0xd1, 0xdf, 0x00, 0x00, 0x00, 0xff,
+	0xff, 0x22, 0xd3, 0x7f, 0x20, 0x03, 0x07, 0x00, 0x00,
 }
diff --git a/googleapis/privacy/dlp/v2beta1/dlp.pb.go b/googleapis/privacy/dlp/v2beta1/dlp.pb.go
new file mode 100644
index 00000000..23f8ca09
--- /dev/null
+++ b/googleapis/privacy/dlp/v2beta1/dlp.pb.go
@@ -0,0 +1,1374 @@
+// Code generated by protoc-gen-go.
+// source: google/privacy/dlp/v2beta1/dlp.proto
+// DO NOT EDIT!
+
+/*
+Package dlp is a generated protocol buffer package.
+
+It is generated from these files:
+	google/privacy/dlp/v2beta1/dlp.proto
+	google/privacy/dlp/v2beta1/storage.proto
+
+It has these top-level messages:
+	InspectConfig
+	ContentItem
+	InspectResult
+	Finding
+	Location
+	Range
+	ImageLocation
+	RedactContentRequest
+	RedactContentResponse
+	InspectContentRequest
+	InspectContentResponse
+	CreateInspectOperationRequest
+	InfoTypeStatistics
+	InspectOperationMetadata
+	InspectOperationResult
+	ListInspectFindingsRequest
+	ListInspectFindingsResponse
+	InfoTypeDescription
+	ListInfoTypesRequest
+	ListInfoTypesResponse
+	CategoryDescription
+	ListRootCategoriesRequest
+	ListRootCategoriesResponse
+	InfoType
+	FieldId
+	PartitionId
+	KindExpression
+	PropertyReference
+	Projection
+	DatastoreOptions
+	CloudStorageOptions
+	StorageConfig
+	CloudStorageKey
+	DatastoreKey
+	Key
+	RecordKey
+*/
+package dlp
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import google_longrunning "google.golang.org/genproto/googleapis/longrunning"
+import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp"
+
+import (
+	context "golang.org/x/net/context"
+	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.ProtoPackageIsVersion2 // please upgrade the proto package
+
+// Categorization of results based on how likely they are to represent a match,
+// based on the number of elements they contain which imply a match.
+type Likelihood int32
+
+const (
+	// Default value; information with all likelihoods will be included.
+	Likelihood_LIKELIHOOD_UNSPECIFIED Likelihood = 0
+	// Few matching elements.
+	Likelihood_VERY_UNLIKELY Likelihood = 1
+	Likelihood_UNLIKELY      Likelihood = 2
+	// Some matching elements.
+	Likelihood_POSSIBLE Likelihood = 3
+	Likelihood_LIKELY   Likelihood = 4
+	// Many matching elements.
+	Likelihood_VERY_LIKELY Likelihood = 5
+)
+
+var Likelihood_name = map[int32]string{
+	0: "LIKELIHOOD_UNSPECIFIED",
+	1: "VERY_UNLIKELY",
+	2: "UNLIKELY",
+	3: "POSSIBLE",
+	4: "LIKELY",
+	5: "VERY_LIKELY",
+}
+var Likelihood_value = map[string]int32{
+	"LIKELIHOOD_UNSPECIFIED": 0,
+	"VERY_UNLIKELY":          1,
+	"UNLIKELY":               2,
+	"POSSIBLE":               3,
+	"LIKELY":                 4,
+	"VERY_LIKELY":            5,
+}
+
+func (x Likelihood) String() string {
+	return proto.EnumName(Likelihood_name, int32(x))
+}
+func (Likelihood) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+// Configuration description of the scanning process.
+// When used with redactContent only info_types and min_likelihood are currently
+// used.
+type InspectConfig struct {
+	// Restrict what info_types to look for. The values must correspond to
+	// InfoType values returned by ListInfoTypes or found in documentation.
+	// Empty info_types runs all enabled detectors.
+	InfoTypes []*InfoType `protobuf:"bytes,1,rep,name=info_types,json=infoTypes" json:"info_types,omitempty"`
+	// Only return findings equal or above this threshold.
+	MinLikelihood Likelihood `protobuf:"varint,2,opt,name=min_likelihood,json=minLikelihood,enum=google.privacy.dlp.v2beta1.Likelihood" json:"min_likelihood,omitempty"`
+	// Limit the number of findings per content item.
+	MaxFindings int32 `protobuf:"varint,3,opt,name=max_findings,json=maxFindings" json:"max_findings,omitempty"`
+	// When true, a contextual quote from the data that triggered a finding will
+	// be included in the response; see Finding.quote.
+	IncludeQuote bool `protobuf:"varint,4,opt,name=include_quote,json=includeQuote" json:"include_quote,omitempty"`
+	// When true, exclude type information of the findings.
+	ExcludeTypes bool `protobuf:"varint,6,opt,name=exclude_types,json=excludeTypes" json:"exclude_types,omitempty"`
+}
+
+func (m *InspectConfig) Reset()                    { *m = InspectConfig{} }
+func (m *InspectConfig) String() string            { return proto.CompactTextString(m) }
+func (*InspectConfig) ProtoMessage()               {}
+func (*InspectConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (m *InspectConfig) GetInfoTypes() []*InfoType {
+	if m != nil {
+		return m.InfoTypes
+	}
+	return nil
+}
+
+func (m *InspectConfig) GetMinLikelihood() Likelihood {
+	if m != nil {
+		return m.MinLikelihood
+	}
+	return Likelihood_LIKELIHOOD_UNSPECIFIED
+}
+
+func (m *InspectConfig) GetMaxFindings() int32 {
+	if m != nil {
+		return m.MaxFindings
+	}
+	return 0
+}
+
+func (m *InspectConfig) GetIncludeQuote() bool {
+	if m != nil {
+		return m.IncludeQuote
+	}
+	return false
+}
+
+func (m *InspectConfig) GetExcludeTypes() bool {
+	if m != nil {
+		return m.ExcludeTypes
+	}
+	return false
+}
+
+// Container structure for the content to inspect.
+type ContentItem struct {
+	// Type of the content, as defined in Content-Type HTTP header.
+	// Supported types are: all "text" types, octet streams, PNG images,
+	// JPEG images.
+	Type string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"`
+	// Data of the item either in the byte array or UTF-8 string form.
+	//
+	// Types that are valid to be assigned to DataItem:
+	//	*ContentItem_Data
+	//	*ContentItem_Value
+	DataItem isContentItem_DataItem `protobuf_oneof:"data_item"`
+}
+
+func (m *ContentItem) Reset()                    { *m = ContentItem{} }
+func (m *ContentItem) String() string            { return proto.CompactTextString(m) }
+func (*ContentItem) ProtoMessage()               {}
+func (*ContentItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+type isContentItem_DataItem interface {
+	isContentItem_DataItem()
+}
+
+type ContentItem_Data struct {
+	Data []byte `protobuf:"bytes,2,opt,name=data,proto3,oneof"`
+}
+type ContentItem_Value struct {
+	Value string `protobuf:"bytes,3,opt,name=value,oneof"`
+}
+
+func (*ContentItem_Data) isContentItem_DataItem()  {}
+func (*ContentItem_Value) isContentItem_DataItem() {}
+
+func (m *ContentItem) GetDataItem() isContentItem_DataItem {
+	if m != nil {
+		return m.DataItem
+	}
+	return nil
+}
+
+func (m *ContentItem) GetType() string {
+	if m != nil {
+		return m.Type
+	}
+	return ""
+}
+
+func (m *ContentItem) GetData() []byte {
+	if x, ok := m.GetDataItem().(*ContentItem_Data); ok {
+		return x.Data
+	}
+	return nil
+}
+
+func (m *ContentItem) GetValue() string {
+	if x, ok := m.GetDataItem().(*ContentItem_Value); ok {
+		return x.Value
+	}
+	return ""
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*ContentItem) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _ContentItem_OneofMarshaler, _ContentItem_OneofUnmarshaler, _ContentItem_OneofSizer, []interface{}{
+		(*ContentItem_Data)(nil),
+		(*ContentItem_Value)(nil),
+	}
+}
+
+func _ContentItem_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*ContentItem)
+	// data_item
+	switch x := m.DataItem.(type) {
+	case *ContentItem_Data:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		b.EncodeRawBytes(x.Data)
+	case *ContentItem_Value:
+		b.EncodeVarint(3<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.Value)
+	case nil:
+	default:
+		return fmt.Errorf("ContentItem.DataItem has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _ContentItem_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*ContentItem)
+	switch tag {
+	case 2: // data_item.data
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeRawBytes(true)
+		m.DataItem = &ContentItem_Data{x}
+		return true, err
+	case 3: // data_item.value
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.DataItem = &ContentItem_Value{x}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _ContentItem_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*ContentItem)
+	// data_item
+	switch x := m.DataItem.(type) {
+	case *ContentItem_Data:
+		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.Data)))
+		n += len(x.Data)
+	case *ContentItem_Value:
+		n += proto.SizeVarint(3<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.Value)))
+		n += len(x.Value)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+// All the findings for a single scanned item.
+type InspectResult struct {
+	// List of findings for an item.
+	Findings []*Finding `protobuf:"bytes,1,rep,name=findings" json:"findings,omitempty"`
+	// If true, then this item might have more findings than were returned,
+	// and the findings returned are an arbitrary subset of all findings.
+	// The findings list might be truncated because the input items were too
+	// large, or because the server reached the maximum amount of resources
+	// allowed for a single API call. For best results, divide the input into
+	// smaller batches.
+	FindingsTruncated bool `protobuf:"varint,2,opt,name=findings_truncated,json=findingsTruncated" json:"findings_truncated,omitempty"`
+}
+
+func (m *InspectResult) Reset()                    { *m = InspectResult{} }
+func (m *InspectResult) String() string            { return proto.CompactTextString(m) }
+func (*InspectResult) ProtoMessage()               {}
+func (*InspectResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+
+func (m *InspectResult) GetFindings() []*Finding {
+	if m != nil {
+		return m.Findings
+	}
+	return nil
+}
+
+func (m *InspectResult) GetFindingsTruncated() bool {
+	if m != nil {
+		return m.FindingsTruncated
+	}
+	return false
+}
+
+// Container structure describing a single finding within a string or image.
+type Finding struct {
+	// The specific string that may be potentially sensitive info.
+	Quote string `protobuf:"bytes,1,opt,name=quote" json:"quote,omitempty"`
+	// The specific type of info the string might be.
+	InfoType *InfoType `protobuf:"bytes,2,opt,name=info_type,json=infoType" json:"info_type,omitempty"`
+	// Estimate of how likely it is that the info_type is correct.
+	Likelihood Likelihood `protobuf:"varint,3,opt,name=likelihood,enum=google.privacy.dlp.v2beta1.Likelihood" json:"likelihood,omitempty"`
+	// Location of the info found.
+	Location *Location `protobuf:"bytes,4,opt,name=location" json:"location,omitempty"`
+	// Timestamp when finding was detected.
+	CreateTime *google_protobuf3.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime" json:"create_time,omitempty"`
+}
+
+func (m *Finding) Reset()                    { *m = Finding{} }
+func (m *Finding) String() string            { return proto.CompactTextString(m) }
+func (*Finding) ProtoMessage()               {}
+func (*Finding) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+
+func (m *Finding) GetQuote() string {
+	if m != nil {
+		return m.Quote
+	}
+	return ""
+}
+
+func (m *Finding) GetInfoType() *InfoType {
+	if m != nil {
+		return m.InfoType
+	}
+	return nil
+}
+
+func (m *Finding) GetLikelihood() Likelihood {
+	if m != nil {
+		return m.Likelihood
+	}
+	return Likelihood_LIKELIHOOD_UNSPECIFIED
+}
+
+func (m *Finding) GetLocation() *Location {
+	if m != nil {
+		return m.Location
+	}
+	return nil
+}
+
+func (m *Finding) GetCreateTime() *google_protobuf3.Timestamp {
+	if m != nil {
+		return m.CreateTime
+	}
+	return nil
+}
+
+// Specifies the location of a finding within its source item.
+type Location struct {
+	// Zero-based byte offsets within a content item.
+	ByteRange *Range `protobuf:"bytes,1,opt,name=byte_range,json=byteRange" json:"byte_range,omitempty"`
+	// Character offsets within a content item, included when content type
+	// is a text. Default charset assumed to be UTF-8.
+	CodepointRange *Range `protobuf:"bytes,2,opt,name=codepoint_range,json=codepointRange" json:"codepoint_range,omitempty"`
+	// Location within an image's pixels.
+	ImageBoxes []*ImageLocation `protobuf:"bytes,3,rep,name=image_boxes,json=imageBoxes" json:"image_boxes,omitempty"`
+	// Key of the finding.
+	RecordKey *RecordKey `protobuf:"bytes,4,opt,name=record_key,json=recordKey" json:"record_key,omitempty"`
+	// Field id of the field containing the finding.
+	FieldId *FieldId `protobuf:"bytes,5,opt,name=field_id,json=fieldId" json:"field_id,omitempty"`
+}
+
+func (m *Location) Reset()                    { *m = Location{} }
+func (m *Location) String() string            { return proto.CompactTextString(m) }
+func (*Location) ProtoMessage()               {}
+func (*Location) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+
+func (m *Location) GetByteRange() *Range {
+	if m != nil {
+		return m.ByteRange
+	}
+	return nil
+}
+
+func (m *Location) GetCodepointRange() *Range {
+	if m != nil {
+		return m.CodepointRange
+	}
+	return nil
+}
+
+func (m *Location) GetImageBoxes() []*ImageLocation {
+	if m != nil {
+		return m.ImageBoxes
+	}
+	return nil
+}
+
+func (m *Location) GetRecordKey() *RecordKey {
+	if m != nil {
+		return m.RecordKey
+	}
+	return nil
+}
+
+func (m *Location) GetFieldId() *FieldId {
+	if m != nil {
+		return m.FieldId
+	}
+	return nil
+}
+
+// Generic half-open interval [start, end)
+type Range struct {
+	// Index of the first character of the range (inclusive).
+	Start int64 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"`
+	// Index of the last character of the range (exclusive).
+	End int64 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`
+}
+
+func (m *Range) Reset()                    { *m = Range{} }
+func (m *Range) String() string            { return proto.CompactTextString(m) }
+func (*Range) ProtoMessage()               {}
+func (*Range) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+
+func (m *Range) GetStart() int64 {
+	if m != nil {
+		return m.Start
+	}
+	return 0
+}
+
+func (m *Range) GetEnd() int64 {
+	if m != nil {
+		return m.End
+	}
+	return 0
+}
+
+// Bounding box encompassing detected text within an image.
+type ImageLocation struct {
+	// Top coordinate of the bounding box. (0,0) is upper left.
+	Top int32 `protobuf:"varint,1,opt,name=top" json:"top,omitempty"`
+	// Left coordinate of the bounding box. (0,0) is upper left.
+	Left int32 `protobuf:"varint,2,opt,name=left" json:"left,omitempty"`
+	// Width of the bounding box in pixels.
+	Width int32 `protobuf:"varint,3,opt,name=width" json:"width,omitempty"`
+	// Height of the bounding box in pixels.
+	Height int32 `protobuf:"varint,4,opt,name=height" json:"height,omitempty"`
+}
+
+func (m *ImageLocation) Reset()                    { *m = ImageLocation{} }
+func (m *ImageLocation) String() string            { return proto.CompactTextString(m) }
+func (*ImageLocation) ProtoMessage()               {}
+func (*ImageLocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
+
+func (m *ImageLocation) GetTop() int32 {
+	if m != nil {
+		return m.Top
+	}
+	return 0
+}
+
+func (m *ImageLocation) GetLeft() int32 {
+	if m != nil {
+		return m.Left
+	}
+	return 0
+}
+
+func (m *ImageLocation) GetWidth() int32 {
+	if m != nil {
+		return m.Width
+	}
+	return 0
+}
+
+func (m *ImageLocation) GetHeight() int32 {
+	if m != nil {
+		return m.Height
+	}
+	return 0
+}
+
+// Request to search for potentially sensitive info in a list of items
+// and replace it with a default or provided content.
+type RedactContentRequest struct {
+	// Configuration for the inspector.
+	InspectConfig *InspectConfig `protobuf:"bytes,1,opt,name=inspect_config,json=inspectConfig" json:"inspect_config,omitempty"`
+	// The list of items to inspect. Up to 100 are allowed per request.
+	Items []*ContentItem `protobuf:"bytes,2,rep,name=items" json:"items,omitempty"`
+	// The strings to replace findings with. Must specify at least one.
+	ReplaceConfigs []*RedactContentRequest_ReplaceConfig `protobuf:"bytes,3,rep,name=replace_configs,json=replaceConfigs" json:"replace_configs,omitempty"`
+}
+
+func (m *RedactContentRequest) Reset()                    { *m = RedactContentRequest{} }
+func (m *RedactContentRequest) String() string            { return proto.CompactTextString(m) }
+func (*RedactContentRequest) ProtoMessage()               {}
+func (*RedactContentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
+
+func (m *RedactContentRequest) GetInspectConfig() *InspectConfig {
+	if m != nil {
+		return m.InspectConfig
+	}
+	return nil
+}
+
+func (m *RedactContentRequest) GetItems() []*ContentItem {
+	if m != nil {
+		return m.Items
+	}
+	return nil
+}
+
+func (m *RedactContentRequest) GetReplaceConfigs() []*RedactContentRequest_ReplaceConfig {
+	if m != nil {
+		return m.ReplaceConfigs
+	}
+	return nil
+}
+
+type RedactContentRequest_ReplaceConfig struct {
+	// Type of information to replace. Only one ReplaceConfig per info_type
+	// should be provided. If ReplaceConfig does not have an info_type, we'll
+	// match it against all info_types that are found but not specified in
+	// another ReplaceConfig.
+	InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType" json:"info_type,omitempty"`
+	// Content replacing sensitive information of given type. Max 256 chars.
+	ReplaceWith string `protobuf:"bytes,2,opt,name=replace_with,json=replaceWith" json:"replace_with,omitempty"`
+}
+
+func (m *RedactContentRequest_ReplaceConfig) Reset()         { *m = RedactContentRequest_ReplaceConfig{} }
+func (m *RedactContentRequest_ReplaceConfig) String() string { return proto.CompactTextString(m) }
+func (*RedactContentRequest_ReplaceConfig) ProtoMessage()    {}
+func (*RedactContentRequest_ReplaceConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor0, []int{7, 0}
+}
+
+func (m *RedactContentRequest_ReplaceConfig) GetInfoType() *InfoType {
+	if m != nil {
+		return m.InfoType
+	}
+	return nil
+}
+
+func (m *RedactContentRequest_ReplaceConfig) GetReplaceWith() string {
+	if m != nil {
+		return m.ReplaceWith
+	}
+	return ""
+}
+
+// Results of deidentifying a list of items.
+type RedactContentResponse struct {
+	// The redacted content.
+	Items []*ContentItem `protobuf:"bytes,1,rep,name=items" json:"items,omitempty"`
+}
+
+func (m *RedactContentResponse) Reset()                    { *m = RedactContentResponse{} }
+func (m *RedactContentResponse) String() string            { return proto.CompactTextString(m) }
+func (*RedactContentResponse) ProtoMessage()               {}
+func (*RedactContentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
+
+func (m *RedactContentResponse) GetItems() []*ContentItem {
+	if m != nil {
+		return m.Items
+	}
+	return nil
+}
+
+// Request to search for potentially sensitive info in a list of items.
+type InspectContentRequest struct {
+	// Configuration for the inspector.
+	InspectConfig *InspectConfig `protobuf:"bytes,1,opt,name=inspect_config,json=inspectConfig" json:"inspect_config,omitempty"`
+	// The list of items to inspect. Items in a single request are
+	// considered "related" unless inspect_config.independent_inputs is true.
+	// Up to 100 are allowed per request.
+	Items []*ContentItem `protobuf:"bytes,2,rep,name=items" json:"items,omitempty"`
+}
+
+func (m *InspectContentRequest) Reset()                    { *m = InspectContentRequest{} }
+func (m *InspectContentRequest) String() string            { return proto.CompactTextString(m) }
+func (*InspectContentRequest) ProtoMessage()               {}
+func (*InspectContentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
+
+func (m *InspectContentRequest) GetInspectConfig() *InspectConfig {
+	if m != nil {
+		return m.InspectConfig
+	}
+	return nil
+}
+
+func (m *InspectContentRequest) GetItems() []*ContentItem {
+	if m != nil {
+		return m.Items
+	}
+	return nil
+}
+
+// Results of inspecting a list of items.
+type InspectContentResponse struct {
+	// Each content_item from the request will have a result in this list, in the
+	// same order as the request.
+	Results []*InspectResult `protobuf:"bytes,1,rep,name=results" json:"results,omitempty"`
+}
+
+func (m *InspectContentResponse) Reset()                    { *m = InspectContentResponse{} }
+func (m *InspectContentResponse) String() string            { return proto.CompactTextString(m) }
+func (*InspectContentResponse) ProtoMessage()               {}
+func (*InspectContentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
+
+func (m *InspectContentResponse) GetResults() []*InspectResult {
+	if m != nil {
+		return m.Results
+	}
+	return nil
+}
+
+// Request for scheduling a scan of a data subset from a Google Platform data
+// repository.
+type CreateInspectOperationRequest struct {
+	// Configuration for the inspector.
+	InspectConfig *InspectConfig `protobuf:"bytes,1,opt,name=inspect_config,json=inspectConfig" json:"inspect_config,omitempty"`
+	// Specification of the data set to process.
+	StorageConfig *StorageConfig `protobuf:"bytes,2,opt,name=storage_config,json=storageConfig" json:"storage_config,omitempty"`
+}
+
+func (m *CreateInspectOperationRequest) Reset()                    { *m = CreateInspectOperationRequest{} }
+func (m *CreateInspectOperationRequest) String() string            { return proto.CompactTextString(m) }
+func (*CreateInspectOperationRequest) ProtoMessage()               {}
+func (*CreateInspectOperationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
+
+func (m *CreateInspectOperationRequest) GetInspectConfig() *InspectConfig {
+	if m != nil {
+		return m.InspectConfig
+	}
+	return nil
+}
+
+func (m *CreateInspectOperationRequest) GetStorageConfig() *StorageConfig {
+	if m != nil {
+		return m.StorageConfig
+	}
+	return nil
+}
+
+// Stats regarding a specific InfoType.
+type InfoTypeStatistics struct {
+	// The type of finding this stat is for.
+	InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType" json:"info_type,omitempty"`
+	// Number of findings for this info type.
+	Count int64 `protobuf:"varint,2,opt,name=count" json:"count,omitempty"`
+}
+
+func (m *InfoTypeStatistics) Reset()                    { *m = InfoTypeStatistics{} }
+func (m *InfoTypeStatistics) String() string            { return proto.CompactTextString(m) }
+func (*InfoTypeStatistics) ProtoMessage()               {}
+func (*InfoTypeStatistics) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
+
+func (m *InfoTypeStatistics) GetInfoType() *InfoType {
+	if m != nil {
+		return m.InfoType
+	}
+	return nil
+}
+
+func (m *InfoTypeStatistics) GetCount() int64 {
+	if m != nil {
+		return m.Count
+	}
+	return 0
+}
+
+// Metadata returned within GetOperation for an inspect request.
+type InspectOperationMetadata struct {
+	// Total size in bytes that were processed.
+	ProcessedBytes int64 `protobuf:"varint,1,opt,name=processed_bytes,json=processedBytes" json:"processed_bytes,omitempty"`
+	// Estimate of the number of bytes to process.
+	TotalEstimatedBytes int64                 `protobuf:"varint,4,opt,name=total_estimated_bytes,json=totalEstimatedBytes" json:"total_estimated_bytes,omitempty"`
+	InfoTypeStats       []*InfoTypeStatistics `protobuf:"bytes,2,rep,name=info_type_stats,json=infoTypeStats" json:"info_type_stats,omitempty"`
+	// The time which this request was started.
+	CreateTime *google_protobuf3.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime" json:"create_time,omitempty"`
+}
+
+func (m *InspectOperationMetadata) Reset()                    { *m = InspectOperationMetadata{} }
+func (m *InspectOperationMetadata) String() string            { return proto.CompactTextString(m) }
+func (*InspectOperationMetadata) ProtoMessage()               {}
+func (*InspectOperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
+
+func (m *InspectOperationMetadata) GetProcessedBytes() int64 {
+	if m != nil {
+		return m.ProcessedBytes
+	}
+	return 0
+}
+
+func (m *InspectOperationMetadata) GetTotalEstimatedBytes() int64 {
+	if m != nil {
+		return m.TotalEstimatedBytes
+	}
+	return 0
+}
+
+func (m *InspectOperationMetadata) GetInfoTypeStats() []*InfoTypeStatistics {
+	if m != nil {
+		return m.InfoTypeStats
+	}
+	return nil
+}
+
+func (m *InspectOperationMetadata) GetCreateTime() *google_protobuf3.Timestamp {
+	if m != nil {
+		return m.CreateTime
+	}
+	return nil
+}
+
+// The operational data.
+type InspectOperationResult struct {
+	// The server-assigned name, which is only unique within the same service that
+	// originally returns it. If you use the default HTTP mapping, the
+	// `name` should have the format of `inspect/results/{id}`.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *InspectOperationResult) Reset()                    { *m = InspectOperationResult{} }
+func (m *InspectOperationResult) String() string            { return proto.CompactTextString(m) }
+func (*InspectOperationResult) ProtoMessage()               {}
+func (*InspectOperationResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
+
+func (m *InspectOperationResult) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Request for the list of results in a given inspect operation.
+type ListInspectFindingsRequest struct {
+	// Identifier of the results set returned as metadata of
+	// the longrunning operation created by a call to CreateInspectOperation.
+	// Should be in the format of `inspect/results/{id}.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// Maximum number of results to return.
+	// If 0, the implementation will select a reasonable value.
+	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
+	// The value returned by the last `ListInspectFindingsResponse`; indicates
+	// that this is a continuation of a prior `ListInspectFindings` call, and that
+	// the system should return the next page of data.
+	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
+}
+
+func (m *ListInspectFindingsRequest) Reset()                    { *m = ListInspectFindingsRequest{} }
+func (m *ListInspectFindingsRequest) String() string            { return proto.CompactTextString(m) }
+func (*ListInspectFindingsRequest) ProtoMessage()               {}
+func (*ListInspectFindingsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
+
+func (m *ListInspectFindingsRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *ListInspectFindingsRequest) GetPageSize() int32 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+func (m *ListInspectFindingsRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+// Response to the ListInspectFindings request.
+type ListInspectFindingsResponse struct {
+	// The results.
+	Result *InspectResult `protobuf:"bytes,1,opt,name=result" json:"result,omitempty"`
+	// If not empty, indicates that there may be more results that match the
+	// request; this value should be passed in a new `ListInspectFindingsRequest`.
+	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
+}
+
+func (m *ListInspectFindingsResponse) Reset()                    { *m = ListInspectFindingsResponse{} }
+func (m *ListInspectFindingsResponse) String() string            { return proto.CompactTextString(m) }
+func (*ListInspectFindingsResponse) ProtoMessage()               {}
+func (*ListInspectFindingsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
+
+func (m *ListInspectFindingsResponse) GetResult() *InspectResult {
+	if m != nil {
+		return m.Result
+	}
+	return nil
+}
+
+func (m *ListInspectFindingsResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
+// Info type description.
+type InfoTypeDescription struct {
+	// Internal name of the info type.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// Human readable form of the info type name.
+	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"`
+	// List of categories this info type belongs to.
+	Categories []*CategoryDescription `protobuf:"bytes,3,rep,name=categories" json:"categories,omitempty"`
+}
+
+func (m *InfoTypeDescription) Reset()                    { *m = InfoTypeDescription{} }
+func (m *InfoTypeDescription) String() string            { return proto.CompactTextString(m) }
+func (*InfoTypeDescription) ProtoMessage()               {}
+func (*InfoTypeDescription) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
+
+func (m *InfoTypeDescription) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *InfoTypeDescription) GetDisplayName() string {
+	if m != nil {
+		return m.DisplayName
+	}
+	return ""
+}
+
+func (m *InfoTypeDescription) GetCategories() []*CategoryDescription {
+	if m != nil {
+		return m.Categories
+	}
+	return nil
+}
+
+// Request for the list of info types belonging to a given category,
+// or all supported info types if no category is specified.
+type ListInfoTypesRequest struct {
+	// Category name as returned by ListRootCategories.
+	Category string `protobuf:"bytes,1,opt,name=category" json:"category,omitempty"`
+	// Optional BCP-47 language code for localized info type friendly
+	// names. If omitted, or if localized strings are not available,
+	// en-US strings will be returned.
+	LanguageCode string `protobuf:"bytes,2,opt,name=language_code,json=languageCode" json:"language_code,omitempty"`
+}
+
+func (m *ListInfoTypesRequest) Reset()                    { *m = ListInfoTypesRequest{} }
+func (m *ListInfoTypesRequest) String() string            { return proto.CompactTextString(m) }
+func (*ListInfoTypesRequest) ProtoMessage()               {}
+func (*ListInfoTypesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
+
+func (m *ListInfoTypesRequest) GetCategory() string {
+	if m != nil {
+		return m.Category
+	}
+	return ""
+}
+
+func (m *ListInfoTypesRequest) GetLanguageCode() string {
+	if m != nil {
+		return m.LanguageCode
+	}
+	return ""
+}
+
+// Response to the ListInfoTypes request.
+type ListInfoTypesResponse struct {
+	// Set of sensitive info types belonging to a category.
+	InfoTypes []*InfoTypeDescription `protobuf:"bytes,1,rep,name=info_types,json=infoTypes" json:"info_types,omitempty"`
+}
+
+func (m *ListInfoTypesResponse) Reset()                    { *m = ListInfoTypesResponse{} }
+func (m *ListInfoTypesResponse) String() string            { return proto.CompactTextString(m) }
+func (*ListInfoTypesResponse) ProtoMessage()               {}
+func (*ListInfoTypesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
+
+func (m *ListInfoTypesResponse) GetInfoTypes() []*InfoTypeDescription {
+	if m != nil {
+		return m.InfoTypes
+	}
+	return nil
+}
+
+// Info Type Category description.
+type CategoryDescription struct {
+	// Internal name of the category.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// Human readable form of the category name.
+	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"`
+}
+
+func (m *CategoryDescription) Reset()                    { *m = CategoryDescription{} }
+func (m *CategoryDescription) String() string            { return proto.CompactTextString(m) }
+func (*CategoryDescription) ProtoMessage()               {}
+func (*CategoryDescription) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
+
+func (m *CategoryDescription) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *CategoryDescription) GetDisplayName() string {
+	if m != nil {
+		return m.DisplayName
+	}
+	return ""
+}
+
+// Request for root categories of Info Types supported by the API.
+// Example values might include "FINANCE", "HEALTH", "FAST", "DEFAULT".
+type ListRootCategoriesRequest struct {
+	// Optional language code for localized friendly category names.
+	// If omitted or if localized strings are not available,
+	// en-US strings will be returned.
+	LanguageCode string `protobuf:"bytes,1,opt,name=language_code,json=languageCode" json:"language_code,omitempty"`
+}
+
+func (m *ListRootCategoriesRequest) Reset()                    { *m = ListRootCategoriesRequest{} }
+func (m *ListRootCategoriesRequest) String() string            { return proto.CompactTextString(m) }
+func (*ListRootCategoriesRequest) ProtoMessage()               {}
+func (*ListRootCategoriesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
+
+func (m *ListRootCategoriesRequest) GetLanguageCode() string {
+	if m != nil {
+		return m.LanguageCode
+	}
+	return ""
+}
+
+// Response for ListRootCategories request.
+type ListRootCategoriesResponse struct {
+	// List of all into type categories supported by the API.
+	Categories []*CategoryDescription `protobuf:"bytes,1,rep,name=categories" json:"categories,omitempty"`
+}
+
+func (m *ListRootCategoriesResponse) Reset()                    { *m = ListRootCategoriesResponse{} }
+func (m *ListRootCategoriesResponse) String() string            { return proto.CompactTextString(m) }
+func (*ListRootCategoriesResponse) ProtoMessage()               {}
+func (*ListRootCategoriesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
+
+func (m *ListRootCategoriesResponse) GetCategories() []*CategoryDescription {
+	if m != nil {
+		return m.Categories
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*InspectConfig)(nil), "google.privacy.dlp.v2beta1.InspectConfig")
+	proto.RegisterType((*ContentItem)(nil), "google.privacy.dlp.v2beta1.ContentItem")
+	proto.RegisterType((*InspectResult)(nil), "google.privacy.dlp.v2beta1.InspectResult")
+	proto.RegisterType((*Finding)(nil), "google.privacy.dlp.v2beta1.Finding")
+	proto.RegisterType((*Location)(nil), "google.privacy.dlp.v2beta1.Location")
+	proto.RegisterType((*Range)(nil), "google.privacy.dlp.v2beta1.Range")
+	proto.RegisterType((*ImageLocation)(nil), "google.privacy.dlp.v2beta1.ImageLocation")
+	proto.RegisterType((*RedactContentRequest)(nil), "google.privacy.dlp.v2beta1.RedactContentRequest")
+	proto.RegisterType((*RedactContentRequest_ReplaceConfig)(nil), "google.privacy.dlp.v2beta1.RedactContentRequest.ReplaceConfig")
+	proto.RegisterType((*RedactContentResponse)(nil), "google.privacy.dlp.v2beta1.RedactContentResponse")
+	proto.RegisterType((*InspectContentRequest)(nil), "google.privacy.dlp.v2beta1.InspectContentRequest")
+	proto.RegisterType((*InspectContentResponse)(nil), "google.privacy.dlp.v2beta1.InspectContentResponse")
+	proto.RegisterType((*CreateInspectOperationRequest)(nil), "google.privacy.dlp.v2beta1.CreateInspectOperationRequest")
+	proto.RegisterType((*InfoTypeStatistics)(nil), "google.privacy.dlp.v2beta1.InfoTypeStatistics")
+	proto.RegisterType((*InspectOperationMetadata)(nil), "google.privacy.dlp.v2beta1.InspectOperationMetadata")
+	proto.RegisterType((*InspectOperationResult)(nil), "google.privacy.dlp.v2beta1.InspectOperationResult")
+	proto.RegisterType((*ListInspectFindingsRequest)(nil), "google.privacy.dlp.v2beta1.ListInspectFindingsRequest")
+	proto.RegisterType((*ListInspectFindingsResponse)(nil), "google.privacy.dlp.v2beta1.ListInspectFindingsResponse")
+	proto.RegisterType((*InfoTypeDescription)(nil), "google.privacy.dlp.v2beta1.InfoTypeDescription")
+	proto.RegisterType((*ListInfoTypesRequest)(nil), "google.privacy.dlp.v2beta1.ListInfoTypesRequest")
+	proto.RegisterType((*ListInfoTypesResponse)(nil), "google.privacy.dlp.v2beta1.ListInfoTypesResponse")
+	proto.RegisterType((*CategoryDescription)(nil), "google.privacy.dlp.v2beta1.CategoryDescription")
+	proto.RegisterType((*ListRootCategoriesRequest)(nil), "google.privacy.dlp.v2beta1.ListRootCategoriesRequest")
+	proto.RegisterType((*ListRootCategoriesResponse)(nil), "google.privacy.dlp.v2beta1.ListRootCategoriesResponse")
+	proto.RegisterEnum("google.privacy.dlp.v2beta1.Likelihood", Likelihood_name, Likelihood_value)
+}
+
+// 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
+
+// Client API for DlpService service
+
+type DlpServiceClient interface {
+	// Find potentially sensitive info in a list of strings.
+	// This method has limits on input size, processing time, and output size.
+	InspectContent(ctx context.Context, in *InspectContentRequest, opts ...grpc.CallOption) (*InspectContentResponse, error)
+	// Redact potentially sensitive info from a list of strings.
+	// This method has limits on input size, processing time, and output size.
+	RedactContent(ctx context.Context, in *RedactContentRequest, opts ...grpc.CallOption) (*RedactContentResponse, error)
+	// Schedule a job scanning content in a Google Cloud Platform data repository.
+	CreateInspectOperation(ctx context.Context, in *CreateInspectOperationRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error)
+	// Returns list of results for given inspect operation result set id.
+	ListInspectFindings(ctx context.Context, in *ListInspectFindingsRequest, opts ...grpc.CallOption) (*ListInspectFindingsResponse, error)
+	// Returns sensitive information types for given category.
+	ListInfoTypes(ctx context.Context, in *ListInfoTypesRequest, opts ...grpc.CallOption) (*ListInfoTypesResponse, error)
+	// Returns the list of root categories of sensitive information.
+	ListRootCategories(ctx context.Context, in *ListRootCategoriesRequest, opts ...grpc.CallOption) (*ListRootCategoriesResponse, error)
+}
+
+type dlpServiceClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewDlpServiceClient(cc *grpc.ClientConn) DlpServiceClient {
+	return &dlpServiceClient{cc}
+}
+
+func (c *dlpServiceClient) InspectContent(ctx context.Context, in *InspectContentRequest, opts ...grpc.CallOption) (*InspectContentResponse, error) {
+	out := new(InspectContentResponse)
+	err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta1.DlpService/InspectContent", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *dlpServiceClient) RedactContent(ctx context.Context, in *RedactContentRequest, opts ...grpc.CallOption) (*RedactContentResponse, error) {
+	out := new(RedactContentResponse)
+	err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta1.DlpService/RedactContent", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *dlpServiceClient) CreateInspectOperation(ctx context.Context, in *CreateInspectOperationRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) {
+	out := new(google_longrunning.Operation)
+	err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta1.DlpService/CreateInspectOperation", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *dlpServiceClient) ListInspectFindings(ctx context.Context, in *ListInspectFindingsRequest, opts ...grpc.CallOption) (*ListInspectFindingsResponse, error) {
+	out := new(ListInspectFindingsResponse)
+	err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta1.DlpService/ListInspectFindings", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *dlpServiceClient) ListInfoTypes(ctx context.Context, in *ListInfoTypesRequest, opts ...grpc.CallOption) (*ListInfoTypesResponse, error) {
+	out := new(ListInfoTypesResponse)
+	err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta1.DlpService/ListInfoTypes", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *dlpServiceClient) ListRootCategories(ctx context.Context, in *ListRootCategoriesRequest, opts ...grpc.CallOption) (*ListRootCategoriesResponse, error) {
+	out := new(ListRootCategoriesResponse)
+	err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta1.DlpService/ListRootCategories", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Server API for DlpService service
+
+type DlpServiceServer interface {
+	// Find potentially sensitive info in a list of strings.
+	// This method has limits on input size, processing time, and output size.
+	InspectContent(context.Context, *InspectContentRequest) (*InspectContentResponse, error)
+	// Redact potentially sensitive info from a list of strings.
+	// This method has limits on input size, processing time, and output size.
+	RedactContent(context.Context, *RedactContentRequest) (*RedactContentResponse, error)
+	// Schedule a job scanning content in a Google Cloud Platform data repository.
+	CreateInspectOperation(context.Context, *CreateInspectOperationRequest) (*google_longrunning.Operation, error)
+	// Returns list of results for given inspect operation result set id.
+	ListInspectFindings(context.Context, *ListInspectFindingsRequest) (*ListInspectFindingsResponse, error)
+	// Returns sensitive information types for given category.
+	ListInfoTypes(context.Context, *ListInfoTypesRequest) (*ListInfoTypesResponse, error)
+	// Returns the list of root categories of sensitive information.
+	ListRootCategories(context.Context, *ListRootCategoriesRequest) (*ListRootCategoriesResponse, error)
+}
+
+func RegisterDlpServiceServer(s *grpc.Server, srv DlpServiceServer) {
+	s.RegisterService(&_DlpService_serviceDesc, srv)
+}
+
+func _DlpService_InspectContent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(InspectContentRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(DlpServiceServer).InspectContent(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.privacy.dlp.v2beta1.DlpService/InspectContent",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(DlpServiceServer).InspectContent(ctx, req.(*InspectContentRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _DlpService_RedactContent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(RedactContentRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(DlpServiceServer).RedactContent(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.privacy.dlp.v2beta1.DlpService/RedactContent",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(DlpServiceServer).RedactContent(ctx, req.(*RedactContentRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _DlpService_CreateInspectOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CreateInspectOperationRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(DlpServiceServer).CreateInspectOperation(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.privacy.dlp.v2beta1.DlpService/CreateInspectOperation",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(DlpServiceServer).CreateInspectOperation(ctx, req.(*CreateInspectOperationRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _DlpService_ListInspectFindings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListInspectFindingsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(DlpServiceServer).ListInspectFindings(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.privacy.dlp.v2beta1.DlpService/ListInspectFindings",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(DlpServiceServer).ListInspectFindings(ctx, req.(*ListInspectFindingsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _DlpService_ListInfoTypes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListInfoTypesRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(DlpServiceServer).ListInfoTypes(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.privacy.dlp.v2beta1.DlpService/ListInfoTypes",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(DlpServiceServer).ListInfoTypes(ctx, req.(*ListInfoTypesRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _DlpService_ListRootCategories_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListRootCategoriesRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(DlpServiceServer).ListRootCategories(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.privacy.dlp.v2beta1.DlpService/ListRootCategories",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(DlpServiceServer).ListRootCategories(ctx, req.(*ListRootCategoriesRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _DlpService_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.privacy.dlp.v2beta1.DlpService",
+	HandlerType: (*DlpServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "InspectContent",
+			Handler:    _DlpService_InspectContent_Handler,
+		},
+		{
+			MethodName: "RedactContent",
+			Handler:    _DlpService_RedactContent_Handler,
+		},
+		{
+			MethodName: "CreateInspectOperation",
+			Handler:    _DlpService_CreateInspectOperation_Handler,
+		},
+		{
+			MethodName: "ListInspectFindings",
+			Handler:    _DlpService_ListInspectFindings_Handler,
+		},
+		{
+			MethodName: "ListInfoTypes",
+			Handler:    _DlpService_ListInfoTypes_Handler,
+		},
+		{
+			MethodName: "ListRootCategories",
+			Handler:    _DlpService_ListRootCategories_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/privacy/dlp/v2beta1/dlp.proto",
+}
+
+func init() { proto.RegisterFile("google/privacy/dlp/v2beta1/dlp.proto", fileDescriptor0) }
+
+var fileDescriptor0 = []byte{
+	// 1651 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x5f, 0x6f, 0x23, 0x57,
+	0x15, 0xdf, 0xb1, 0xe3, 0xac, 0x7d, 0x1c, 0x3b, 0xe9, 0xcd, 0x9f, 0xba, 0xde, 0x86, 0x26, 0x93,
+	0xb2, 0x0d, 0x51, 0xb1, 0xbb, 0x46, 0x2c, 0xa2, 0x55, 0xca, 0x36, 0x4e, 0x56, 0x6b, 0x9a, 0x26,
+	0xe1, 0x26, 0xdd, 0xaa, 0x08, 0x34, 0x9a, 0xcc, 0xdc, 0x4c, 0xae, 0x32, 0x9e, 0x3b, 0x9d, 0xb9,
+	0x4e, 0xe3, 0x56, 0x2b, 0x24, 0x5e, 0xe0, 0x81, 0x07, 0x24, 0x5e, 0x10, 0x82, 0x37, 0x1e, 0x40,
+	0xe2, 0x13, 0xf0, 0xca, 0x47, 0xe0, 0x2b, 0xf0, 0xc4, 0x07, 0xe0, 0x19, 0xdd, 0x3f, 0x33, 0x1e,
+	0x27, 0xde, 0x49, 0xbc, 0x80, 0xc4, 0xdb, 0xbd, 0xe7, 0xfe, 0xce, 0xf1, 0xef, 0xfc, 0xb9, 0xe7,
+	0x9e, 0x31, 0xbc, 0xed, 0x31, 0xe6, 0xf9, 0xa4, 0x1d, 0x46, 0xf4, 0xd2, 0x76, 0x86, 0x6d, 0xd7,
+	0x0f, 0xdb, 0x97, 0x9d, 0x53, 0xc2, 0xed, 0x47, 0x62, 0xdd, 0x0a, 0x23, 0xc6, 0x19, 0x6a, 0x2a,
+	0x54, 0x4b, 0xa3, 0x5a, 0xe2, 0x44, 0xa3, 0x9a, 0x6f, 0x6a, 0x0b, 0x76, 0x48, 0xdb, 0x76, 0x10,
+	0x30, 0x6e, 0x73, 0xca, 0x82, 0x58, 0x69, 0x36, 0x37, 0xf4, 0xa9, 0xcf, 0x02, 0x2f, 0x1a, 0x04,
+	0x01, 0x0d, 0xbc, 0x36, 0x0b, 0x49, 0x34, 0x06, 0xda, 0xcc, 0x21, 0x11, 0x73, 0x16, 0xd9, 0x1e,
+	0xd1, 0xc8, 0xb7, 0x52, 0x24, 0xe3, 0xec, 0x74, 0x70, 0xd6, 0xe6, 0xb4, 0x4f, 0x62, 0x6e, 0xf7,
+	0x35, 0x53, 0xf3, 0xd7, 0x05, 0xa8, 0xf5, 0x82, 0x38, 0x24, 0x0e, 0xef, 0xb2, 0xe0, 0x8c, 0x7a,
+	0xa8, 0x0b, 0x40, 0x83, 0x33, 0x66, 0xf1, 0x61, 0x48, 0xe2, 0x86, 0xb1, 0x56, 0xdc, 0xac, 0x76,
+	0xde, 0x6e, 0xbd, 0xdc, 0xa1, 0x56, 0x2f, 0x38, 0x63, 0x27, 0xc3, 0x90, 0xe0, 0x0a, 0xd5, 0xab,
+	0x18, 0x7d, 0x02, 0xf5, 0x3e, 0x0d, 0x2c, 0x9f, 0x5e, 0x10, 0x9f, 0x9e, 0x33, 0xe6, 0x36, 0x0a,
+	0x6b, 0xc6, 0x66, 0xbd, 0xf3, 0x30, 0xcf, 0xd0, 0x7e, 0x8a, 0xc6, 0xb5, 0x3e, 0x0d, 0x46, 0x5b,
+	0xb4, 0x0e, 0x73, 0x7d, 0xfb, 0xca, 0x3a, 0xa3, 0x81, 0x4b, 0x03, 0x2f, 0x6e, 0x14, 0xd7, 0x8c,
+	0xcd, 0x12, 0xae, 0xf6, 0xed, 0xab, 0xa7, 0x5a, 0x84, 0x36, 0xa0, 0x46, 0x03, 0xc7, 0x1f, 0xb8,
+	0xc4, 0xfa, 0x62, 0xc0, 0x38, 0x69, 0xcc, 0xac, 0x19, 0x9b, 0x65, 0x3c, 0xa7, 0x85, 0x3f, 0x12,
+	0x32, 0x01, 0x22, 0x57, 0x0a, 0xa4, 0xdc, 0x9b, 0x55, 0x20, 0x2d, 0x94, 0xdc, 0xcd, 0x9f, 0x40,
+	0xb5, 0xcb, 0x02, 0x4e, 0x02, 0xde, 0xe3, 0xa4, 0x8f, 0x10, 0xcc, 0x08, 0x6c, 0xc3, 0x58, 0x33,
+	0x36, 0x2b, 0x58, 0xae, 0xd1, 0x12, 0xcc, 0xb8, 0x36, 0xb7, 0xa5, 0x53, 0x73, 0xcf, 0xee, 0x61,
+	0xb9, 0x43, 0x2b, 0x50, 0xba, 0xb4, 0xfd, 0x01, 0x91, 0xf4, 0x2a, 0xcf, 0xee, 0x61, 0xb5, 0xdd,
+	0xa9, 0x42, 0x45, 0x9c, 0x5b, 0x94, 0x93, 0xbe, 0xf9, 0xb3, 0x34, 0xde, 0x98, 0xc4, 0x03, 0x9f,
+	0xa3, 0x1f, 0x40, 0x39, 0xf5, 0x4b, 0x45, 0x7b, 0x23, 0x2f, 0x48, 0xda, 0x61, 0x9c, 0x2a, 0xa1,
+	0x6f, 0x03, 0x4a, 0xd6, 0x16, 0x8f, 0x06, 0x81, 0x63, 0x73, 0xa2, 0xe2, 0x5d, 0xc6, 0xaf, 0x25,
+	0x27, 0x27, 0xc9, 0x81, 0xf9, 0xe7, 0x02, 0xdc, 0xd7, 0x46, 0xd0, 0x12, 0x94, 0x54, 0xb0, 0x94,
+	0x73, 0x6a, 0x83, 0x3e, 0x82, 0x4a, 0x5a, 0x01, 0xd2, 0xce, 0x5d, 0x0b, 0xa0, 0x9c, 0x14, 0x00,
+	0x7a, 0x0a, 0x90, 0xc9, 0x7d, 0x71, 0xaa, 0xdc, 0x67, 0x34, 0xd1, 0x13, 0x28, 0xfb, 0xcc, 0x91,
+	0xc5, 0x2f, 0x13, 0x7a, 0x0b, 0x93, 0x7d, 0x8d, 0xc5, 0xa9, 0x16, 0xfa, 0x00, 0xaa, 0x4e, 0x44,
+	0x6c, 0x4e, 0x2c, 0x51, 0xfa, 0x32, 0xe1, 0xd5, 0x4e, 0x73, 0x64, 0x44, 0xdd, 0x8b, 0xd6, 0x49,
+	0x72, 0x2f, 0x30, 0x28, 0xb8, 0x10, 0x98, 0xff, 0x2c, 0x40, 0x39, 0xb1, 0x89, 0x9e, 0x00, 0x9c,
+	0x0e, 0x39, 0xb1, 0x22, 0x3b, 0xf0, 0x54, 0xc4, 0xaa, 0x9d, 0xf5, 0x3c, 0x36, 0x58, 0x00, 0x71,
+	0x45, 0x28, 0xc9, 0x25, 0xfa, 0x21, 0xcc, 0x3b, 0xcc, 0x25, 0x21, 0xa3, 0x01, 0xd7, 0x66, 0x0a,
+	0x77, 0x35, 0x53, 0x4f, 0x35, 0x13, 0x5b, 0x55, 0xda, 0xb7, 0x3d, 0x62, 0x9d, 0xb2, 0x2b, 0x22,
+	0x6e, 0x84, 0xa8, 0x9c, 0x6f, 0xe5, 0xa6, 0x49, 0xc0, 0xd3, 0x08, 0x81, 0xd4, 0xde, 0x11, 0xca,
+	0x68, 0x17, 0x20, 0x22, 0x0e, 0x8b, 0x5c, 0xeb, 0x82, 0x0c, 0x75, 0x9c, 0xbf, 0x99, 0x4b, 0x49,
+	0xa2, 0x3f, 0x26, 0x43, 0x5c, 0x89, 0x92, 0x25, 0xfa, 0x50, 0x14, 0x32, 0xf1, 0x5d, 0x8b, 0xba,
+	0x8d, 0x92, 0xb4, 0x71, 0x4b, 0x21, 0x13, 0xdf, 0xed, 0xb9, 0xf8, 0xfe, 0x99, 0x5a, 0x98, 0x6d,
+	0x28, 0x29, 0xd7, 0x96, 0xa0, 0x14, 0x73, 0x3b, 0xe2, 0x32, 0xc6, 0x45, 0xac, 0x36, 0x68, 0x01,
+	0x8a, 0x24, 0x50, 0x75, 0x5d, 0xc4, 0x62, 0x69, 0x3a, 0x50, 0x1b, 0xf3, 0x49, 0x40, 0x38, 0x0b,
+	0xa5, 0x5a, 0x09, 0x8b, 0xa5, 0xb8, 0xbc, 0x3e, 0x39, 0xe3, 0x52, 0xab, 0x84, 0xe5, 0x5a, 0x98,
+	0xff, 0x92, 0xba, 0xfc, 0x5c, 0x77, 0x11, 0xb5, 0x41, 0x2b, 0x30, 0x7b, 0x4e, 0xa8, 0x77, 0xce,
+	0xa5, 0xff, 0x25, 0xac, 0x77, 0xe6, 0x2f, 0x8a, 0xb0, 0x84, 0x89, 0x6b, 0xcb, 0xfe, 0x28, 0x9a,
+	0x02, 0x26, 0x5f, 0x0c, 0x48, 0xcc, 0xd1, 0x11, 0xd4, 0xa9, 0xba, 0xc8, 0x96, 0x23, 0x3b, 0xa7,
+	0x2e, 0x89, 0xfc, 0x1c, 0x64, 0x5b, 0x2d, 0xae, 0xd1, 0xb1, 0xce, 0xbb, 0x0d, 0x25, 0xd1, 0x22,
+	0xe2, 0x46, 0x41, 0x26, 0xf3, 0x9d, 0x3c, 0x43, 0x99, 0x0e, 0x85, 0x95, 0x16, 0xf2, 0x60, 0x3e,
+	0x22, 0xa1, 0x6f, 0x3b, 0x44, 0x13, 0x4a, 0xaa, 0xe2, 0xc3, 0xfc, 0x54, 0xde, 0xf4, 0xad, 0x85,
+	0x95, 0x1d, 0x4d, 0xb3, 0x1e, 0x65, 0xb7, 0x71, 0x73, 0x00, 0xb5, 0x31, 0xc0, 0x78, 0xc3, 0x30,
+	0x5e, 0xa9, 0x61, 0xac, 0xc3, 0x5c, 0x42, 0xfe, 0x4b, 0xca, 0xcf, 0x65, 0xc2, 0x2a, 0xb8, 0xaa,
+	0x65, 0x9f, 0x51, 0x7e, 0x6e, 0x3e, 0x87, 0xe5, 0x6b, 0x64, 0xe3, 0x90, 0x05, 0x31, 0x19, 0xc5,
+	0xcd, 0x78, 0x95, 0xb8, 0x99, 0x7f, 0x32, 0x60, 0x79, 0x94, 0x97, 0xff, 0xe7, 0x14, 0x9b, 0x3f,
+	0x85, 0x95, 0xeb, 0x4c, 0x75, 0x0c, 0xba, 0x70, 0x3f, 0x92, 0xef, 0x49, 0x12, 0x85, 0xbb, 0x70,
+	0x54, 0x2f, 0x10, 0x4e, 0x34, 0xcd, 0xbf, 0x19, 0xb0, 0xda, 0x95, 0xdd, 0x4f, 0x03, 0x0e, 0x93,
+	0xc9, 0xe3, 0x7f, 0x17, 0x91, 0x23, 0xa8, 0xeb, 0x91, 0x25, 0xb1, 0x58, 0xb8, 0xdd, 0xe2, 0xb1,
+	0xd2, 0x48, 0x2c, 0xc6, 0xd9, 0xad, 0xd9, 0x07, 0x94, 0x14, 0xd8, 0xb1, 0x18, 0xae, 0x62, 0x4e,
+	0x9d, 0xf8, 0xbf, 0x51, 0xa3, 0x4b, 0x50, 0x72, 0xd8, 0x20, 0xe0, 0xba, 0x07, 0xa9, 0x8d, 0xf9,
+	0xab, 0x02, 0x34, 0xae, 0x87, 0xeb, 0x13, 0xc2, 0x6d, 0x39, 0x12, 0xbc, 0x03, 0xf3, 0x61, 0xc4,
+	0x1c, 0x12, 0xc7, 0xc4, 0xb5, 0xc4, 0x43, 0x10, 0xeb, 0xa6, 0x56, 0x4f, 0xc5, 0x3b, 0x42, 0x8a,
+	0x3a, 0xb0, 0xcc, 0x19, 0xb7, 0x7d, 0x8b, 0xc4, 0x9c, 0xf6, 0xc5, 0x43, 0xad, 0xe1, 0x33, 0x12,
+	0xbe, 0x28, 0x0f, 0xf7, 0x92, 0x33, 0xa5, 0xf3, 0x1c, 0xe6, 0x53, 0x97, 0xac, 0x98, 0xdb, 0x3c,
+	0x29, 0xab, 0xd6, 0x5d, 0x1c, 0x1b, 0xc5, 0x46, 0xa4, 0x64, 0x24, 0x8b, 0xaf, 0x3f, 0x99, 0xc5,
+	0xa9, 0x9e, 0xcc, 0x77, 0xd3, 0x12, 0xcd, 0x14, 0x8f, 0x1c, 0x74, 0x10, 0xcc, 0x04, 0x76, 0x3f,
+	0x1d, 0xa4, 0xc4, 0xda, 0xf4, 0xa1, 0xb9, 0x4f, 0x63, 0xae, 0x35, 0x92, 0x61, 0x2e, 0xa9, 0xb6,
+	0x09, 0x1a, 0xe8, 0x01, 0x54, 0x42, 0x51, 0x2c, 0x31, 0xfd, 0x8a, 0xe8, 0xb6, 0x5e, 0x16, 0x82,
+	0x63, 0xfa, 0x15, 0x41, 0xab, 0x00, 0xf2, 0x90, 0xb3, 0x0b, 0x12, 0xa8, 0x31, 0x0c, 0x4b, 0xf8,
+	0x89, 0x10, 0x98, 0xbf, 0x34, 0xe0, 0xc1, 0xc4, 0x9f, 0xd3, 0x97, 0xe8, 0x23, 0x98, 0x55, 0x57,
+	0x61, 0x8a, 0xaa, 0xd6, 0x77, 0x48, 0x2b, 0xa2, 0x87, 0x30, 0x1f, 0x90, 0x2b, 0x6e, 0x65, 0x68,
+	0xa8, 0x56, 0x56, 0x13, 0xe2, 0xa3, 0x94, 0xca, 0x1f, 0x0c, 0x58, 0x4c, 0x32, 0xb1, 0x4b, 0x62,
+	0x27, 0xa2, 0xa1, 0x7c, 0xc2, 0x26, 0xb9, 0xbc, 0x0e, 0x73, 0x2e, 0x8d, 0x43, 0xdf, 0x1e, 0x5a,
+	0xf2, 0x4c, 0xf7, 0x46, 0x2d, 0x3b, 0x10, 0x90, 0x43, 0x00, 0x31, 0xdd, 0x79, 0x2c, 0xa2, 0xe9,
+	0x30, 0xd0, 0xce, 0x6d, 0x2e, 0x0a, 0x3d, 0xcc, 0xfc, 0x36, 0xce, 0x98, 0x30, 0x3f, 0x83, 0x25,
+	0x15, 0x29, 0x3d, 0xd1, 0x27, 0x29, 0x69, 0x42, 0x59, 0xa3, 0x86, 0x9a, 0x63, 0xba, 0x17, 0xd3,
+	0xb5, 0x6f, 0x07, 0xde, 0x40, 0xdd, 0x65, 0x37, 0x21, 0x3a, 0x97, 0x08, 0xbb, 0xcc, 0x25, 0xa6,
+	0x07, 0xcb, 0xd7, 0x0c, 0xeb, 0xe0, 0x1f, 0x4c, 0xf8, 0xee, 0x68, 0xdf, 0xa5, 0x90, 0xb3, 0x2e,
+	0x8c, 0x3e, 0x41, 0xcc, 0x7d, 0x58, 0x9c, 0xe0, 0xe4, 0x2b, 0x06, 0xd8, 0x7c, 0x02, 0x6f, 0x08,
+	0xda, 0x98, 0x31, 0xde, 0x4d, 0xa3, 0x94, 0x04, 0xe5, 0x86, 0xe3, 0xc6, 0x04, 0xc7, 0xfb, 0xaa,
+	0xd4, 0xaf, 0x5b, 0xd0, 0xde, 0x8f, 0x27, 0xd0, 0xf8, 0x8f, 0x13, 0xb8, 0xc5, 0x01, 0x32, 0x1f,
+	0x50, 0x4d, 0x58, 0xd9, 0xef, 0x7d, 0xbc, 0xb7, 0xdf, 0x7b, 0x76, 0x78, 0xb8, 0x6b, 0x7d, 0x7a,
+	0x70, 0x7c, 0xb4, 0xd7, 0xed, 0x3d, 0xed, 0xed, 0xed, 0x2e, 0xdc, 0x43, 0xaf, 0x41, 0xed, 0xf9,
+	0x1e, 0xfe, 0xdc, 0xfa, 0xf4, 0x40, 0x42, 0x3e, 0x5f, 0x30, 0xd0, 0x1c, 0x94, 0xd3, 0x5d, 0x41,
+	0xec, 0x8e, 0x0e, 0x8f, 0x8f, 0x7b, 0x3b, 0xfb, 0x7b, 0x0b, 0x45, 0x04, 0x30, 0xab, 0x4f, 0x66,
+	0xd0, 0x3c, 0x54, 0xa5, 0xaa, 0x16, 0x94, 0x3a, 0xff, 0xba, 0x0f, 0xb0, 0xeb, 0x87, 0xc7, 0x24,
+	0xba, 0xa4, 0x0e, 0x41, 0xbf, 0x37, 0xa0, 0x3e, 0xfe, 0x60, 0xa1, 0x47, 0x77, 0x7b, 0x29, 0x32,
+	0xcf, 0x70, 0xb3, 0x33, 0x8d, 0x8a, 0x8a, 0xa7, 0xb9, 0xf1, 0xf3, 0xbf, 0xff, 0xe3, 0x37, 0x85,
+	0x55, 0xb3, 0x91, 0x7e, 0x18, 0x3b, 0x0a, 0xf1, 0xbe, 0x7e, 0x7e, 0xde, 0x37, 0xb6, 0xd0, 0x6f,
+	0x0d, 0x31, 0xc9, 0x64, 0x46, 0x0a, 0xf4, 0xde, 0xb4, 0xa3, 0x52, 0xf3, 0xd1, 0x14, 0x1a, 0x9a,
+	0x9b, 0x29, 0xb9, 0xbd, 0x69, 0xbe, 0x7e, 0x83, 0x5b, 0x24, 0xf1, 0x82, 0xda, 0xef, 0x0c, 0x58,
+	0x99, 0xfc, 0x14, 0xa3, 0xef, 0xe7, 0x96, 0x45, 0xde, 0xf3, 0xdd, 0x5c, 0x4d, 0x54, 0x33, 0x7f,
+	0x2f, 0xb4, 0x52, 0x94, 0xf9, 0x50, 0x12, 0x5b, 0x33, 0x1f, 0xa4, 0xc4, 0x74, 0xb0, 0x32, 0x7f,
+	0x41, 0x08, 0x72, 0x7f, 0x35, 0x60, 0x71, 0x42, 0x1f, 0x45, 0x8f, 0xf3, 0xbf, 0xf0, 0x5e, 0xd6,
+	0xe7, 0x9b, 0xdf, 0x9b, 0x5a, 0x4f, 0x47, 0xb2, 0x23, 0x09, 0xbf, 0x8b, 0xb6, 0x52, 0xc2, 0x5f,
+	0x8b, 0x0b, 0xbc, 0x9d, 0xd0, 0xd6, 0x83, 0x4d, 0x7b, 0xeb, 0x45, 0x3b, 0xfd, 0x5c, 0xfe, 0x8b,
+	0x01, 0xb5, 0xb1, 0x0e, 0x94, 0x9f, 0xf4, 0x49, 0x5d, 0x30, 0x3f, 0xe9, 0x13, 0xdb, 0x9b, 0xf9,
+	0x58, 0x52, 0x7d, 0x0f, 0xb5, 0x52, 0xaa, 0xd1, 0x58, 0x27, 0x68, 0x7f, 0x9d, 0xf4, 0xd1, 0xed,
+	0xad, 0x17, 0xed, 0xd1, 0x3f, 0x29, 0x7f, 0x34, 0x00, 0xdd, 0xec, 0x1b, 0xe8, 0xbb, 0xb7, 0x31,
+	0x98, 0xd8, 0xa9, 0x9a, 0x8f, 0xa7, 0x55, 0xd3, 0xec, 0xdf, 0x92, 0xec, 0xdf, 0x40, 0xaf, 0xbf,
+	0x84, 0xfd, 0xce, 0x05, 0x7c, 0xc3, 0x61, 0xfd, 0x1c, 0xeb, 0x3b, 0xe5, 0x5d, 0x3f, 0x3c, 0x12,
+	0xb3, 0xc3, 0x91, 0xf1, 0xe3, 0x6d, 0x8d, 0xf3, 0x98, 0x68, 0x91, 0x2d, 0x16, 0x79, 0x6d, 0x8f,
+	0x04, 0x72, 0xb2, 0x68, 0xab, 0x23, 0x3b, 0xa4, 0xf1, 0xa4, 0xff, 0xb7, 0x3e, 0x70, 0xfd, 0xf0,
+	0x74, 0x56, 0x22, 0xbf, 0xf3, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x68, 0x1e, 0x49, 0xda, 0x8d,
+	0x13, 0x00, 0x00,
+}
diff --git a/googleapis/privacy/dlp/v2beta1/storage.pb.go b/googleapis/privacy/dlp/v2beta1/storage.pb.go
new file mode 100644
index 00000000..d73ffe0e
--- /dev/null
+++ b/googleapis/privacy/dlp/v2beta1/storage.pb.go
@@ -0,0 +1,742 @@
+// Code generated by protoc-gen-go.
+// source: google/privacy/dlp/v2beta1/storage.proto
+// DO NOT EDIT!
+
+package dlp
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// Type of information detected by the API.
+type InfoType struct {
+	// Name of the information type, provided by the API call ListInfoTypes.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *InfoType) Reset()                    { *m = InfoType{} }
+func (m *InfoType) String() string            { return proto.CompactTextString(m) }
+func (*InfoType) ProtoMessage()               {}
+func (*InfoType) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
+
+func (m *InfoType) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// General identifier of a data field in a storage service.
+type FieldId struct {
+	// Column name describing the field.
+	ColumnName string `protobuf:"bytes,1,opt,name=column_name,json=columnName" json:"column_name,omitempty"`
+}
+
+func (m *FieldId) Reset()                    { *m = FieldId{} }
+func (m *FieldId) String() string            { return proto.CompactTextString(m) }
+func (*FieldId) ProtoMessage()               {}
+func (*FieldId) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} }
+
+func (m *FieldId) GetColumnName() string {
+	if m != nil {
+		return m.ColumnName
+	}
+	return ""
+}
+
+// Datastore partition ID.
+// A partition ID identifies a grouping of entities. The grouping is always
+// by project and namespace, however the namespace ID may be empty.
+//
+// A partition ID contains several dimensions:
+// project ID and namespace ID.
+type PartitionId struct {
+	// The ID of the project to which the entities belong.
+	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId" json:"project_id,omitempty"`
+	// If not empty, the ID of the namespace to which the entities belong.
+	NamespaceId string `protobuf:"bytes,4,opt,name=namespace_id,json=namespaceId" json:"namespace_id,omitempty"`
+}
+
+func (m *PartitionId) Reset()                    { *m = PartitionId{} }
+func (m *PartitionId) String() string            { return proto.CompactTextString(m) }
+func (*PartitionId) ProtoMessage()               {}
+func (*PartitionId) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
+
+func (m *PartitionId) GetProjectId() string {
+	if m != nil {
+		return m.ProjectId
+	}
+	return ""
+}
+
+func (m *PartitionId) GetNamespaceId() string {
+	if m != nil {
+		return m.NamespaceId
+	}
+	return ""
+}
+
+// A representation of a Datastore kind.
+type KindExpression struct {
+	// The name of the kind.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *KindExpression) Reset()                    { *m = KindExpression{} }
+func (m *KindExpression) String() string            { return proto.CompactTextString(m) }
+func (*KindExpression) ProtoMessage()               {}
+func (*KindExpression) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
+
+func (m *KindExpression) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// A reference to a property relative to the Datastore kind expressions.
+type PropertyReference struct {
+	// The name of the property.
+	// If name includes "."s, it may be interpreted as a property name path.
+	Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *PropertyReference) Reset()                    { *m = PropertyReference{} }
+func (m *PropertyReference) String() string            { return proto.CompactTextString(m) }
+func (*PropertyReference) ProtoMessage()               {}
+func (*PropertyReference) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} }
+
+func (m *PropertyReference) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// A representation of a Datastore property in a projection.
+type Projection struct {
+	// The property to project.
+	Property *PropertyReference `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"`
+}
+
+func (m *Projection) Reset()                    { *m = Projection{} }
+func (m *Projection) String() string            { return proto.CompactTextString(m) }
+func (*Projection) ProtoMessage()               {}
+func (*Projection) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} }
+
+func (m *Projection) GetProperty() *PropertyReference {
+	if m != nil {
+		return m.Property
+	}
+	return nil
+}
+
+// Options defining a data set within Google Cloud Datastore.
+type DatastoreOptions struct {
+	// A partition ID identifies a grouping of entities. The grouping is always
+	// by project and namespace, however the namespace ID may be empty.
+	PartitionId *PartitionId `protobuf:"bytes,1,opt,name=partition_id,json=partitionId" json:"partition_id,omitempty"`
+	// The kind to process.
+	Kind *KindExpression `protobuf:"bytes,2,opt,name=kind" json:"kind,omitempty"`
+	// Properties to scan. If none are specified, all properties will be scanned
+	// by default.
+	Projection []*Projection `protobuf:"bytes,3,rep,name=projection" json:"projection,omitempty"`
+}
+
+func (m *DatastoreOptions) Reset()                    { *m = DatastoreOptions{} }
+func (m *DatastoreOptions) String() string            { return proto.CompactTextString(m) }
+func (*DatastoreOptions) ProtoMessage()               {}
+func (*DatastoreOptions) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} }
+
+func (m *DatastoreOptions) GetPartitionId() *PartitionId {
+	if m != nil {
+		return m.PartitionId
+	}
+	return nil
+}
+
+func (m *DatastoreOptions) GetKind() *KindExpression {
+	if m != nil {
+		return m.Kind
+	}
+	return nil
+}
+
+func (m *DatastoreOptions) GetProjection() []*Projection {
+	if m != nil {
+		return m.Projection
+	}
+	return nil
+}
+
+// Options defining a file or a set of files (path ending with *) within
+// a Google Cloud Storage bucket.
+type CloudStorageOptions struct {
+	FileSet *CloudStorageOptions_FileSet `protobuf:"bytes,1,opt,name=file_set,json=fileSet" json:"file_set,omitempty"`
+}
+
+func (m *CloudStorageOptions) Reset()                    { *m = CloudStorageOptions{} }
+func (m *CloudStorageOptions) String() string            { return proto.CompactTextString(m) }
+func (*CloudStorageOptions) ProtoMessage()               {}
+func (*CloudStorageOptions) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} }
+
+func (m *CloudStorageOptions) GetFileSet() *CloudStorageOptions_FileSet {
+	if m != nil {
+		return m.FileSet
+	}
+	return nil
+}
+
+// Set of files to scan.
+type CloudStorageOptions_FileSet struct {
+	// The url, in the format gs://<bucket>/<path>. Trailing wildcard in the
+	// path is allowed.
+	Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+}
+
+func (m *CloudStorageOptions_FileSet) Reset()                    { *m = CloudStorageOptions_FileSet{} }
+func (m *CloudStorageOptions_FileSet) String() string            { return proto.CompactTextString(m) }
+func (*CloudStorageOptions_FileSet) ProtoMessage()               {}
+func (*CloudStorageOptions_FileSet) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7, 0} }
+
+func (m *CloudStorageOptions_FileSet) GetUrl() string {
+	if m != nil {
+		return m.Url
+	}
+	return ""
+}
+
+// Shared message indicating Cloud storage type.
+type StorageConfig struct {
+	// Types that are valid to be assigned to Type:
+	//	*StorageConfig_DatastoreOptions
+	//	*StorageConfig_CloudStorageOptions
+	Type isStorageConfig_Type `protobuf_oneof:"type"`
+}
+
+func (m *StorageConfig) Reset()                    { *m = StorageConfig{} }
+func (m *StorageConfig) String() string            { return proto.CompactTextString(m) }
+func (*StorageConfig) ProtoMessage()               {}
+func (*StorageConfig) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} }
+
+type isStorageConfig_Type interface {
+	isStorageConfig_Type()
+}
+
+type StorageConfig_DatastoreOptions struct {
+	DatastoreOptions *DatastoreOptions `protobuf:"bytes,2,opt,name=datastore_options,json=datastoreOptions,oneof"`
+}
+type StorageConfig_CloudStorageOptions struct {
+	CloudStorageOptions *CloudStorageOptions `protobuf:"bytes,3,opt,name=cloud_storage_options,json=cloudStorageOptions,oneof"`
+}
+
+func (*StorageConfig_DatastoreOptions) isStorageConfig_Type()    {}
+func (*StorageConfig_CloudStorageOptions) isStorageConfig_Type() {}
+
+func (m *StorageConfig) GetType() isStorageConfig_Type {
+	if m != nil {
+		return m.Type
+	}
+	return nil
+}
+
+func (m *StorageConfig) GetDatastoreOptions() *DatastoreOptions {
+	if x, ok := m.GetType().(*StorageConfig_DatastoreOptions); ok {
+		return x.DatastoreOptions
+	}
+	return nil
+}
+
+func (m *StorageConfig) GetCloudStorageOptions() *CloudStorageOptions {
+	if x, ok := m.GetType().(*StorageConfig_CloudStorageOptions); ok {
+		return x.CloudStorageOptions
+	}
+	return nil
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*StorageConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _StorageConfig_OneofMarshaler, _StorageConfig_OneofUnmarshaler, _StorageConfig_OneofSizer, []interface{}{
+		(*StorageConfig_DatastoreOptions)(nil),
+		(*StorageConfig_CloudStorageOptions)(nil),
+	}
+}
+
+func _StorageConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*StorageConfig)
+	// type
+	switch x := m.Type.(type) {
+	case *StorageConfig_DatastoreOptions:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.DatastoreOptions); err != nil {
+			return err
+		}
+	case *StorageConfig_CloudStorageOptions:
+		b.EncodeVarint(3<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.CloudStorageOptions); err != nil {
+			return err
+		}
+	case nil:
+	default:
+		return fmt.Errorf("StorageConfig.Type has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _StorageConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*StorageConfig)
+	switch tag {
+	case 2: // type.datastore_options
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(DatastoreOptions)
+		err := b.DecodeMessage(msg)
+		m.Type = &StorageConfig_DatastoreOptions{msg}
+		return true, err
+	case 3: // type.cloud_storage_options
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(CloudStorageOptions)
+		err := b.DecodeMessage(msg)
+		m.Type = &StorageConfig_CloudStorageOptions{msg}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _StorageConfig_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*StorageConfig)
+	// type
+	switch x := m.Type.(type) {
+	case *StorageConfig_DatastoreOptions:
+		s := proto.Size(x.DatastoreOptions)
+		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *StorageConfig_CloudStorageOptions:
+		s := proto.Size(x.CloudStorageOptions)
+		n += proto.SizeVarint(3<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+// Record key for a finding in a Cloud Storage file.
+type CloudStorageKey struct {
+	// Path to the file.
+	FilePath string `protobuf:"bytes,1,opt,name=file_path,json=filePath" json:"file_path,omitempty"`
+	// Byte offset of the referenced data in the file.
+	StartOffset int64 `protobuf:"varint,2,opt,name=start_offset,json=startOffset" json:"start_offset,omitempty"`
+}
+
+func (m *CloudStorageKey) Reset()                    { *m = CloudStorageKey{} }
+func (m *CloudStorageKey) String() string            { return proto.CompactTextString(m) }
+func (*CloudStorageKey) ProtoMessage()               {}
+func (*CloudStorageKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} }
+
+func (m *CloudStorageKey) GetFilePath() string {
+	if m != nil {
+		return m.FilePath
+	}
+	return ""
+}
+
+func (m *CloudStorageKey) GetStartOffset() int64 {
+	if m != nil {
+		return m.StartOffset
+	}
+	return 0
+}
+
+// Record key for a finding in Cloud Datastore.
+type DatastoreKey struct {
+	// Datastore entity key.
+	EntityKey *Key `protobuf:"bytes,1,opt,name=entity_key,json=entityKey" json:"entity_key,omitempty"`
+}
+
+func (m *DatastoreKey) Reset()                    { *m = DatastoreKey{} }
+func (m *DatastoreKey) String() string            { return proto.CompactTextString(m) }
+func (*DatastoreKey) ProtoMessage()               {}
+func (*DatastoreKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} }
+
+func (m *DatastoreKey) GetEntityKey() *Key {
+	if m != nil {
+		return m.EntityKey
+	}
+	return nil
+}
+
+// A unique identifier for a Datastore entity.
+// If a key's partition ID or any of its path kinds or names are
+// reserved/read-only, the key is reserved/read-only.
+// A reserved/read-only key is forbidden in certain documented contexts.
+type Key struct {
+	// Entities are partitioned into subsets, currently identified by a project
+	// ID and namespace ID.
+	// Queries are scoped to a single partition.
+	PartitionId *PartitionId `protobuf:"bytes,1,opt,name=partition_id,json=partitionId" json:"partition_id,omitempty"`
+	// The entity path.
+	// An entity path consists of one or more elements composed of a kind and a
+	// string or numerical identifier, which identify entities. The first
+	// element identifies a _root entity_, the second element identifies
+	// a _child_ of the root entity, the third element identifies a child of the
+	// second entity, and so forth. The entities identified by all prefixes of
+	// the path are called the element's _ancestors_.
+	//
+	// A path can never be empty, and a path can have at most 100 elements.
+	Path []*Key_PathElement `protobuf:"bytes,2,rep,name=path" json:"path,omitempty"`
+}
+
+func (m *Key) Reset()                    { *m = Key{} }
+func (m *Key) String() string            { return proto.CompactTextString(m) }
+func (*Key) ProtoMessage()               {}
+func (*Key) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} }
+
+func (m *Key) GetPartitionId() *PartitionId {
+	if m != nil {
+		return m.PartitionId
+	}
+	return nil
+}
+
+func (m *Key) GetPath() []*Key_PathElement {
+	if m != nil {
+		return m.Path
+	}
+	return nil
+}
+
+// A (kind, ID/name) pair used to construct a key path.
+//
+// If either name or ID is set, the element is complete.
+// If neither is set, the element is incomplete.
+type Key_PathElement struct {
+	// The kind of the entity.
+	// A kind matching regex `__.*__` is reserved/read-only.
+	// A kind must not contain more than 1500 bytes when UTF-8 encoded.
+	// Cannot be `""`.
+	Kind string `protobuf:"bytes,1,opt,name=kind" json:"kind,omitempty"`
+	// The type of ID.
+	//
+	// Types that are valid to be assigned to IdType:
+	//	*Key_PathElement_Id
+	//	*Key_PathElement_Name
+	IdType isKey_PathElement_IdType `protobuf_oneof:"id_type"`
+}
+
+func (m *Key_PathElement) Reset()                    { *m = Key_PathElement{} }
+func (m *Key_PathElement) String() string            { return proto.CompactTextString(m) }
+func (*Key_PathElement) ProtoMessage()               {}
+func (*Key_PathElement) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11, 0} }
+
+type isKey_PathElement_IdType interface {
+	isKey_PathElement_IdType()
+}
+
+type Key_PathElement_Id struct {
+	Id int64 `protobuf:"varint,2,opt,name=id,oneof"`
+}
+type Key_PathElement_Name struct {
+	Name string `protobuf:"bytes,3,opt,name=name,oneof"`
+}
+
+func (*Key_PathElement_Id) isKey_PathElement_IdType()   {}
+func (*Key_PathElement_Name) isKey_PathElement_IdType() {}
+
+func (m *Key_PathElement) GetIdType() isKey_PathElement_IdType {
+	if m != nil {
+		return m.IdType
+	}
+	return nil
+}
+
+func (m *Key_PathElement) GetKind() string {
+	if m != nil {
+		return m.Kind
+	}
+	return ""
+}
+
+func (m *Key_PathElement) GetId() int64 {
+	if x, ok := m.GetIdType().(*Key_PathElement_Id); ok {
+		return x.Id
+	}
+	return 0
+}
+
+func (m *Key_PathElement) GetName() string {
+	if x, ok := m.GetIdType().(*Key_PathElement_Name); ok {
+		return x.Name
+	}
+	return ""
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*Key_PathElement) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _Key_PathElement_OneofMarshaler, _Key_PathElement_OneofUnmarshaler, _Key_PathElement_OneofSizer, []interface{}{
+		(*Key_PathElement_Id)(nil),
+		(*Key_PathElement_Name)(nil),
+	}
+}
+
+func _Key_PathElement_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*Key_PathElement)
+	// id_type
+	switch x := m.IdType.(type) {
+	case *Key_PathElement_Id:
+		b.EncodeVarint(2<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.Id))
+	case *Key_PathElement_Name:
+		b.EncodeVarint(3<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.Name)
+	case nil:
+	default:
+		return fmt.Errorf("Key_PathElement.IdType has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _Key_PathElement_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*Key_PathElement)
+	switch tag {
+	case 2: // id_type.id
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.IdType = &Key_PathElement_Id{int64(x)}
+		return true, err
+	case 3: // id_type.name
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.IdType = &Key_PathElement_Name{x}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _Key_PathElement_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*Key_PathElement)
+	// id_type
+	switch x := m.IdType.(type) {
+	case *Key_PathElement_Id:
+		n += proto.SizeVarint(2<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.Id))
+	case *Key_PathElement_Name:
+		n += proto.SizeVarint(3<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.Name)))
+		n += len(x.Name)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+// Message for a unique key indicating a record that contains a finding.
+type RecordKey struct {
+	// Types that are valid to be assigned to Type:
+	//	*RecordKey_CloudStorageKey
+	//	*RecordKey_DatastoreKey
+	Type isRecordKey_Type `protobuf_oneof:"type"`
+}
+
+func (m *RecordKey) Reset()                    { *m = RecordKey{} }
+func (m *RecordKey) String() string            { return proto.CompactTextString(m) }
+func (*RecordKey) ProtoMessage()               {}
+func (*RecordKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} }
+
+type isRecordKey_Type interface {
+	isRecordKey_Type()
+}
+
+type RecordKey_CloudStorageKey struct {
+	CloudStorageKey *CloudStorageKey `protobuf:"bytes,1,opt,name=cloud_storage_key,json=cloudStorageKey,oneof"`
+}
+type RecordKey_DatastoreKey struct {
+	DatastoreKey *DatastoreKey `protobuf:"bytes,2,opt,name=datastore_key,json=datastoreKey,oneof"`
+}
+
+func (*RecordKey_CloudStorageKey) isRecordKey_Type() {}
+func (*RecordKey_DatastoreKey) isRecordKey_Type()    {}
+
+func (m *RecordKey) GetType() isRecordKey_Type {
+	if m != nil {
+		return m.Type
+	}
+	return nil
+}
+
+func (m *RecordKey) GetCloudStorageKey() *CloudStorageKey {
+	if x, ok := m.GetType().(*RecordKey_CloudStorageKey); ok {
+		return x.CloudStorageKey
+	}
+	return nil
+}
+
+func (m *RecordKey) GetDatastoreKey() *DatastoreKey {
+	if x, ok := m.GetType().(*RecordKey_DatastoreKey); ok {
+		return x.DatastoreKey
+	}
+	return nil
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*RecordKey) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _RecordKey_OneofMarshaler, _RecordKey_OneofUnmarshaler, _RecordKey_OneofSizer, []interface{}{
+		(*RecordKey_CloudStorageKey)(nil),
+		(*RecordKey_DatastoreKey)(nil),
+	}
+}
+
+func _RecordKey_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*RecordKey)
+	// type
+	switch x := m.Type.(type) {
+	case *RecordKey_CloudStorageKey:
+		b.EncodeVarint(1<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.CloudStorageKey); err != nil {
+			return err
+		}
+	case *RecordKey_DatastoreKey:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.DatastoreKey); err != nil {
+			return err
+		}
+	case nil:
+	default:
+		return fmt.Errorf("RecordKey.Type has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _RecordKey_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*RecordKey)
+	switch tag {
+	case 1: // type.cloud_storage_key
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(CloudStorageKey)
+		err := b.DecodeMessage(msg)
+		m.Type = &RecordKey_CloudStorageKey{msg}
+		return true, err
+	case 2: // type.datastore_key
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(DatastoreKey)
+		err := b.DecodeMessage(msg)
+		m.Type = &RecordKey_DatastoreKey{msg}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _RecordKey_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*RecordKey)
+	// type
+	switch x := m.Type.(type) {
+	case *RecordKey_CloudStorageKey:
+		s := proto.Size(x.CloudStorageKey)
+		n += proto.SizeVarint(1<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *RecordKey_DatastoreKey:
+		s := proto.Size(x.DatastoreKey)
+		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+func init() {
+	proto.RegisterType((*InfoType)(nil), "google.privacy.dlp.v2beta1.InfoType")
+	proto.RegisterType((*FieldId)(nil), "google.privacy.dlp.v2beta1.FieldId")
+	proto.RegisterType((*PartitionId)(nil), "google.privacy.dlp.v2beta1.PartitionId")
+	proto.RegisterType((*KindExpression)(nil), "google.privacy.dlp.v2beta1.KindExpression")
+	proto.RegisterType((*PropertyReference)(nil), "google.privacy.dlp.v2beta1.PropertyReference")
+	proto.RegisterType((*Projection)(nil), "google.privacy.dlp.v2beta1.Projection")
+	proto.RegisterType((*DatastoreOptions)(nil), "google.privacy.dlp.v2beta1.DatastoreOptions")
+	proto.RegisterType((*CloudStorageOptions)(nil), "google.privacy.dlp.v2beta1.CloudStorageOptions")
+	proto.RegisterType((*CloudStorageOptions_FileSet)(nil), "google.privacy.dlp.v2beta1.CloudStorageOptions.FileSet")
+	proto.RegisterType((*StorageConfig)(nil), "google.privacy.dlp.v2beta1.StorageConfig")
+	proto.RegisterType((*CloudStorageKey)(nil), "google.privacy.dlp.v2beta1.CloudStorageKey")
+	proto.RegisterType((*DatastoreKey)(nil), "google.privacy.dlp.v2beta1.DatastoreKey")
+	proto.RegisterType((*Key)(nil), "google.privacy.dlp.v2beta1.Key")
+	proto.RegisterType((*Key_PathElement)(nil), "google.privacy.dlp.v2beta1.Key.PathElement")
+	proto.RegisterType((*RecordKey)(nil), "google.privacy.dlp.v2beta1.RecordKey")
+}
+
+func init() { proto.RegisterFile("google/privacy/dlp/v2beta1/storage.proto", fileDescriptor1) }
+
+var fileDescriptor1 = []byte{
+	// 729 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0x5d, 0x6f, 0xf3, 0x34,
+	0x14, 0x6e, 0xda, 0xea, 0xdd, 0x7a, 0xd2, 0xb1, 0x2e, 0x03, 0x69, 0xea, 0x60, 0x1b, 0x11, 0x62,
+	0xd5, 0x06, 0x89, 0x28, 0x17, 0x5c, 0x20, 0x86, 0xd4, 0x7d, 0xa8, 0xa5, 0xd2, 0x5a, 0xbc, 0x49,
+	0x08, 0xb8, 0x88, 0xbc, 0xd8, 0xcd, 0xcc, 0x52, 0xdb, 0x4a, 0xbc, 0x89, 0xfc, 0x01, 0xfe, 0x16,
+	0x3f, 0x84, 0x7b, 0xc4, 0xcf, 0x40, 0x76, 0xdc, 0x8f, 0x7d, 0xd0, 0x0d, 0xe9, 0xbd, 0x73, 0x4f,
+	0x9f, 0xf3, 0x1c, 0x9f, 0xe7, 0x3c, 0x3e, 0x81, 0x4e, 0x22, 0x44, 0x92, 0xd2, 0x50, 0x66, 0xec,
+	0x01, 0xc7, 0x45, 0x48, 0x52, 0x19, 0x3e, 0x74, 0x6f, 0xa8, 0xc2, 0x5f, 0x85, 0xb9, 0x12, 0x19,
+	0x4e, 0x68, 0x20, 0x33, 0xa1, 0x84, 0xd7, 0x2e, 0x91, 0x81, 0x45, 0x06, 0x24, 0x95, 0x81, 0x45,
+	0xb6, 0x3f, 0xb6, 0x2c, 0x58, 0xb2, 0x10, 0x73, 0x2e, 0x14, 0x56, 0x4c, 0xf0, 0xbc, 0xcc, 0xf4,
+	0xf7, 0x60, 0x7d, 0xc0, 0x27, 0xe2, 0xba, 0x90, 0xd4, 0xf3, 0xa0, 0xce, 0xf1, 0x94, 0xee, 0x38,
+	0x07, 0x4e, 0xa7, 0x81, 0xcc, 0xd9, 0x3f, 0x82, 0xb5, 0x0b, 0x46, 0x53, 0x32, 0x20, 0xde, 0x3e,
+	0xb8, 0xb1, 0x48, 0xef, 0xa7, 0x3c, 0x5a, 0x42, 0x41, 0x19, 0xba, 0xd4, 0xd8, 0x11, 0xb8, 0x63,
+	0x9c, 0x29, 0xa6, 0xf9, 0x07, 0xc4, 0xfb, 0x04, 0x40, 0x66, 0xe2, 0x37, 0x1a, 0xab, 0x88, 0x91,
+	0x9d, 0xaa, 0x81, 0x37, 0x6c, 0x64, 0x40, 0xbc, 0x4f, 0xa1, 0xa9, 0x79, 0x72, 0x89, 0x63, 0xaa,
+	0x01, 0x75, 0x03, 0x70, 0xe7, 0xb1, 0x01, 0xf1, 0x3f, 0x83, 0x0f, 0x86, 0x8c, 0x93, 0xf3, 0xdf,
+	0x65, 0x46, 0xf3, 0x9c, 0x09, 0xfe, 0xe2, 0x15, 0x0f, 0x61, 0x6b, 0x9c, 0x09, 0x49, 0x33, 0x55,
+	0x20, 0x3a, 0xa1, 0x19, 0xe5, 0xf1, 0xa2, 0x97, 0xea, 0x12, 0xf0, 0x27, 0x80, 0x71, 0x59, 0x5e,
+	0x53, 0x0d, 0x60, 0x5d, 0xda, 0x34, 0x43, 0xe7, 0x76, 0xbf, 0x0c, 0xfe, 0x5b, 0xc6, 0xe0, 0x59,
+	0x09, 0x34, 0x4f, 0xf7, 0xff, 0x76, 0xa0, 0x75, 0x86, 0x15, 0xd6, 0x43, 0xa1, 0x23, 0x69, 0xf4,
+	0xf5, 0x7e, 0x80, 0xa6, 0x9c, 0xa9, 0xa1, 0xfb, 0x2b, 0x6b, 0x1c, 0xae, 0xac, 0xb1, 0x50, 0x0f,
+	0xb9, 0x72, 0x49, 0xca, 0x13, 0xa8, 0xdf, 0x31, 0x5e, 0x8a, 0xe8, 0x76, 0x8f, 0x56, 0x71, 0x3c,
+	0x16, 0x0c, 0x99, 0x3c, 0xef, 0x62, 0x3e, 0x0a, 0x26, 0xf8, 0x4e, 0xed, 0xa0, 0xd6, 0x71, 0xbb,
+	0x9f, 0xbf, 0xd2, 0xad, 0x45, 0xa3, 0xa5, 0x4c, 0xff, 0x0f, 0x07, 0xb6, 0x4f, 0x53, 0x71, 0x4f,
+	0xae, 0x4a, 0xfb, 0xcd, 0x7a, 0x45, 0xb0, 0x3e, 0x61, 0x29, 0x8d, 0x72, 0xaa, 0x6c, 0x9f, 0xdf,
+	0xac, 0x62, 0x7f, 0x81, 0x22, 0xb8, 0x60, 0x29, 0xbd, 0xa2, 0x0a, 0xad, 0x4d, 0xca, 0x43, 0x7b,
+	0x57, 0x3b, 0xcf, 0x1c, 0xbd, 0x16, 0xd4, 0xee, 0xb3, 0xd4, 0x0e, 0x5d, 0x1f, 0xfd, 0xbf, 0x1c,
+	0xd8, 0xb0, 0x04, 0xa7, 0x82, 0x4f, 0x58, 0xe2, 0xfd, 0x0a, 0x5b, 0x64, 0x36, 0x82, 0x48, 0x94,
+	0xa4, 0x56, 0xaf, 0x2f, 0x56, 0xdd, 0xe5, 0xe9, 0xdc, 0xfa, 0x15, 0xd4, 0x22, 0x4f, 0x67, 0x49,
+	0xe1, 0xa3, 0x58, 0xdf, 0x39, 0xb2, 0xcf, 0x6e, 0x5e, 0xa0, 0x66, 0x0a, 0x84, 0xff, 0xb3, 0xd9,
+	0x7e, 0x05, 0x6d, 0xc7, 0xcf, 0xc3, 0xbd, 0x77, 0x50, 0x57, 0x85, 0xa4, 0xfe, 0x8f, 0xb0, 0xb9,
+	0x9c, 0x35, 0xa4, 0x85, 0xb7, 0x0b, 0x0d, 0xa3, 0xb0, 0xc4, 0xea, 0xd6, 0x0a, 0x61, 0x24, 0x1f,
+	0x63, 0x75, 0xab, 0x9f, 0x52, 0xae, 0x70, 0xa6, 0x22, 0x31, 0x99, 0xe8, 0x11, 0xe8, 0xb6, 0x6b,
+	0xc8, 0x35, 0xb1, 0x91, 0x09, 0xf9, 0x97, 0xd0, 0x9c, 0x77, 0xaa, 0xf9, 0x4e, 0x00, 0x28, 0x57,
+	0x4c, 0x15, 0xd1, 0x1d, 0x9d, 0xf9, 0x7f, 0x7f, 0xa5, 0xaf, 0x68, 0x81, 0x1a, 0x65, 0xca, 0x90,
+	0x16, 0xfe, 0x3f, 0x0e, 0xd4, 0x34, 0xcf, 0xfb, 0x74, 0xf9, 0xf7, 0x50, 0x37, 0xed, 0x55, 0x8d,
+	0x3f, 0x8f, 0x5f, 0xb9, 0x4d, 0xa0, 0x5b, 0x3f, 0x4f, 0xe9, 0x94, 0x72, 0x85, 0x4c, 0x62, 0xfb,
+	0x5a, 0x2f, 0xa0, 0x79, 0x50, 0xef, 0x00, 0xf3, 0x6a, 0xec, 0xb2, 0x30, 0x2f, 0xa1, 0x05, 0x55,
+	0xbb, 0x8c, 0x6a, 0xfd, 0x0a, 0xaa, 0x32, 0xe2, 0x7d, 0x68, 0x37, 0x85, 0x1e, 0x65, 0xa3, 0x5f,
+	0x29, 0x77, 0x45, 0xaf, 0x01, 0x6b, 0x8c, 0x44, 0x66, 0x1a, 0x7f, 0x3a, 0xd0, 0x40, 0x34, 0x16,
+	0x19, 0xd1, 0x0d, 0xff, 0x0c, 0x5b, 0x8f, 0xad, 0xb0, 0xd0, 0xef, 0xf8, 0xad, 0x36, 0x18, 0xd2,
+	0xa2, 0x5f, 0x41, 0x9b, 0xf1, 0x93, 0x19, 0x8f, 0x60, 0x63, 0x61, 0x61, 0x4d, 0x5b, 0xda, 0xb7,
+	0xf3, 0x26, 0xfb, 0x96, 0x9c, 0x4d, 0xb2, 0xf4, 0x7b, 0xe6, 0xa7, 0xde, 0x14, 0xf6, 0x62, 0x31,
+	0x5d, 0x41, 0xd3, 0x83, 0xb3, 0x54, 0xda, 0x9b, 0x8c, 0x9d, 0x5f, 0xbe, 0xb3, 0xc8, 0x44, 0xa4,
+	0x98, 0x27, 0x81, 0xc8, 0x92, 0x30, 0xa1, 0xdc, 0x7c, 0x30, 0xc2, 0xf2, 0x2f, 0x2c, 0x59, 0xfe,
+	0xd2, 0x77, 0xe9, 0x5b, 0x92, 0xca, 0x9b, 0x77, 0x06, 0xf9, 0xf5, 0xbf, 0x01, 0x00, 0x00, 0xff,
+	0xff, 0xc5, 0x05, 0xbf, 0x79, 0xc0, 0x06, 0x00, 0x00,
+}
diff --git a/googleapis/pubsub/v1/pubsub.pb.go b/googleapis/pubsub/v1/pubsub.pb.go
index bdb62041..0d81dd15 100644
--- a/googleapis/pubsub/v1/pubsub.pb.go
+++ b/googleapis/pubsub/v1/pubsub.pb.go
@@ -23,6 +23,7 @@ It has these top-level messages:
 	PushConfig
 	ReceivedMessage
 	GetSubscriptionRequest
+	UpdateSubscriptionRequest
 	ListSubscriptionsRequest
 	ListSubscriptionsResponse
 	DeleteSubscriptionRequest
@@ -33,6 +34,13 @@ It has these top-level messages:
 	AcknowledgeRequest
 	StreamingPullRequest
 	StreamingPullResponse
+	CreateSnapshotRequest
+	Snapshot
+	ListSnapshotsRequest
+	ListSnapshotsResponse
+	DeleteSnapshotRequest
+	SeekRequest
+	SeekResponse
 */
 package pubsub
 
@@ -40,8 +48,10 @@ import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
 import _ "google.golang.org/genproto/googleapis/api/annotations"
-import google_protobuf1 "github.com/golang/protobuf/ptypes/empty"
-import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp"
+import google_protobuf1 "github.com/golang/protobuf/ptypes/duration"
+import google_protobuf2 "github.com/golang/protobuf/ptypes/empty"
+import google_protobuf3 "google.golang.org/genproto/protobuf/field_mask"
+import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp"
 
 import (
 	context "golang.org/x/net/context"
@@ -97,7 +107,7 @@ type PubsubMessage struct {
 	// The time at which the message was published, populated by the server when
 	// it receives the `Publish` call. It must not be populated by the
 	// publisher in a `Publish` call.
-	PublishTime *google_protobuf2.Timestamp `protobuf:"bytes,4,opt,name=publish_time,json=publishTime" json:"publish_time,omitempty"`
+	PublishTime *google_protobuf4.Timestamp `protobuf:"bytes,4,opt,name=publish_time,json=publishTime" json:"publish_time,omitempty"`
 }
 
 func (m *PubsubMessage) Reset()                    { *m = PubsubMessage{} }
@@ -126,7 +136,7 @@ func (m *PubsubMessage) GetMessageId() string {
 	return ""
 }
 
-func (m *PubsubMessage) GetPublishTime() *google_protobuf2.Timestamp {
+func (m *PubsubMessage) GetPublishTime() *google_protobuf4.Timestamp {
 	if m != nil {
 		return m.PublishTime
 	}
@@ -392,6 +402,18 @@ type Subscription struct {
 	// If the subscriber never acknowledges the message, the Pub/Sub
 	// system will eventually redeliver the message.
 	AckDeadlineSeconds int32 `protobuf:"varint,5,opt,name=ack_deadline_seconds,json=ackDeadlineSeconds" json:"ack_deadline_seconds,omitempty"`
+	// Indicates whether to retain acknowledged messages. If true, then
+	// messages are not expunged from the subscription's backlog, even if they are
+	// acknowledged, until they fall out of the `message_retention_duration`
+	// window.
+	RetainAckedMessages bool `protobuf:"varint,7,opt,name=retain_acked_messages,json=retainAckedMessages" json:"retain_acked_messages,omitempty"`
+	// How long to retain unacknowledged messages in the subscription's backlog,
+	// from the moment a message is published.
+	// If `retain_acked_messages` is true, then this also configures the retention
+	// of acknowledged messages, and thus configures how far back in time a `Seek`
+	// can be done. Defaults to 7 days. Cannot be more than 7 days or less than 10
+	// minutes.
+	MessageRetentionDuration *google_protobuf1.Duration `protobuf:"bytes,8,opt,name=message_retention_duration,json=messageRetentionDuration" json:"message_retention_duration,omitempty"`
 }
 
 func (m *Subscription) Reset()                    { *m = Subscription{} }
@@ -427,6 +449,20 @@ func (m *Subscription) GetAckDeadlineSeconds() int32 {
 	return 0
 }
 
+func (m *Subscription) GetRetainAckedMessages() bool {
+	if m != nil {
+		return m.RetainAckedMessages
+	}
+	return false
+}
+
+func (m *Subscription) GetMessageRetentionDuration() *google_protobuf1.Duration {
+	if m != nil {
+		return m.MessageRetentionDuration
+	}
+	return nil
+}
+
 // Configuration for a push delivery endpoint.
 type PushConfig struct {
 	// A URL locating the endpoint to which messages should be pushed.
@@ -438,11 +474,10 @@ type PushConfig struct {
 	// control different aspects of the message delivery.
 	//
 	// The currently supported attribute is `x-goog-version`, which you can
-	// use to change the format of the push message. This attribute
+	// use to change the format of the pushed message. This attribute
 	// indicates the version of the data expected by the endpoint. This
-	// controls the shape of the envelope (i.e. its fields and metadata).
-	// The endpoint version is based on the version of the Pub/Sub
-	// API.
+	// controls the shape of the pushed message (i.e., its fields and metadata).
+	// The endpoint version is based on the version of the Pub/Sub API.
 	//
 	// If not present during the `CreateSubscription` call, it will default to
 	// the version of the API used to make such call. If not present during a
@@ -522,6 +557,34 @@ func (m *GetSubscriptionRequest) GetSubscription() string {
 	return ""
 }
 
+// Request for the UpdateSubscription method.
+type UpdateSubscriptionRequest struct {
+	// The updated subscription object.
+	Subscription *Subscription `protobuf:"bytes,1,opt,name=subscription" json:"subscription,omitempty"`
+	// Indicates which fields in the provided subscription to update.
+	// Must be specified and non-empty.
+	UpdateMask *google_protobuf3.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"`
+}
+
+func (m *UpdateSubscriptionRequest) Reset()                    { *m = UpdateSubscriptionRequest{} }
+func (m *UpdateSubscriptionRequest) String() string            { return proto.CompactTextString(m) }
+func (*UpdateSubscriptionRequest) ProtoMessage()               {}
+func (*UpdateSubscriptionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
+
+func (m *UpdateSubscriptionRequest) GetSubscription() *Subscription {
+	if m != nil {
+		return m.Subscription
+	}
+	return nil
+}
+
+func (m *UpdateSubscriptionRequest) GetUpdateMask() *google_protobuf3.FieldMask {
+	if m != nil {
+		return m.UpdateMask
+	}
+	return nil
+}
+
 // Request for the `ListSubscriptions` method.
 type ListSubscriptionsRequest struct {
 	// The name of the cloud project that subscriptions belong to.
@@ -538,7 +601,7 @@ type ListSubscriptionsRequest struct {
 func (m *ListSubscriptionsRequest) Reset()                    { *m = ListSubscriptionsRequest{} }
 func (m *ListSubscriptionsRequest) String() string            { return proto.CompactTextString(m) }
 func (*ListSubscriptionsRequest) ProtoMessage()               {}
-func (*ListSubscriptionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
+func (*ListSubscriptionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
 
 func (m *ListSubscriptionsRequest) GetProject() string {
 	if m != nil {
@@ -574,7 +637,7 @@ type ListSubscriptionsResponse struct {
 func (m *ListSubscriptionsResponse) Reset()                    { *m = ListSubscriptionsResponse{} }
 func (m *ListSubscriptionsResponse) String() string            { return proto.CompactTextString(m) }
 func (*ListSubscriptionsResponse) ProtoMessage()               {}
-func (*ListSubscriptionsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
+func (*ListSubscriptionsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
 
 func (m *ListSubscriptionsResponse) GetSubscriptions() []*Subscription {
 	if m != nil {
@@ -600,7 +663,7 @@ type DeleteSubscriptionRequest struct {
 func (m *DeleteSubscriptionRequest) Reset()                    { *m = DeleteSubscriptionRequest{} }
 func (m *DeleteSubscriptionRequest) String() string            { return proto.CompactTextString(m) }
 func (*DeleteSubscriptionRequest) ProtoMessage()               {}
-func (*DeleteSubscriptionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
+func (*DeleteSubscriptionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
 
 func (m *DeleteSubscriptionRequest) GetSubscription() string {
 	if m != nil {
@@ -626,7 +689,7 @@ type ModifyPushConfigRequest struct {
 func (m *ModifyPushConfigRequest) Reset()                    { *m = ModifyPushConfigRequest{} }
 func (m *ModifyPushConfigRequest) String() string            { return proto.CompactTextString(m) }
 func (*ModifyPushConfigRequest) ProtoMessage()               {}
-func (*ModifyPushConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
+func (*ModifyPushConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
 
 func (m *ModifyPushConfigRequest) GetSubscription() string {
 	if m != nil {
@@ -662,7 +725,7 @@ type PullRequest struct {
 func (m *PullRequest) Reset()                    { *m = PullRequest{} }
 func (m *PullRequest) String() string            { return proto.CompactTextString(m) }
 func (*PullRequest) ProtoMessage()               {}
-func (*PullRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
+func (*PullRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
 
 func (m *PullRequest) GetSubscription() string {
 	if m != nil {
@@ -697,7 +760,7 @@ type PullResponse struct {
 func (m *PullResponse) Reset()                    { *m = PullResponse{} }
 func (m *PullResponse) String() string            { return proto.CompactTextString(m) }
 func (*PullResponse) ProtoMessage()               {}
-func (*PullResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
+func (*PullResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
 
 func (m *PullResponse) GetReceivedMessages() []*ReceivedMessage {
 	if m != nil {
@@ -726,7 +789,7 @@ type ModifyAckDeadlineRequest struct {
 func (m *ModifyAckDeadlineRequest) Reset()                    { *m = ModifyAckDeadlineRequest{} }
 func (m *ModifyAckDeadlineRequest) String() string            { return proto.CompactTextString(m) }
 func (*ModifyAckDeadlineRequest) ProtoMessage()               {}
-func (*ModifyAckDeadlineRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
+func (*ModifyAckDeadlineRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
 
 func (m *ModifyAckDeadlineRequest) GetSubscription() string {
 	if m != nil {
@@ -762,7 +825,7 @@ type AcknowledgeRequest struct {
 func (m *AcknowledgeRequest) Reset()                    { *m = AcknowledgeRequest{} }
 func (m *AcknowledgeRequest) String() string            { return proto.CompactTextString(m) }
 func (*AcknowledgeRequest) ProtoMessage()               {}
-func (*AcknowledgeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
+func (*AcknowledgeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
 
 func (m *AcknowledgeRequest) GetSubscription() string {
 	if m != nil {
@@ -821,7 +884,7 @@ type StreamingPullRequest struct {
 func (m *StreamingPullRequest) Reset()                    { *m = StreamingPullRequest{} }
 func (m *StreamingPullRequest) String() string            { return proto.CompactTextString(m) }
 func (*StreamingPullRequest) ProtoMessage()               {}
-func (*StreamingPullRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
+func (*StreamingPullRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
 
 func (m *StreamingPullRequest) GetSubscription() string {
 	if m != nil {
@@ -868,7 +931,7 @@ type StreamingPullResponse struct {
 func (m *StreamingPullResponse) Reset()                    { *m = StreamingPullResponse{} }
 func (m *StreamingPullResponse) String() string            { return proto.CompactTextString(m) }
 func (*StreamingPullResponse) ProtoMessage()               {}
-func (*StreamingPullResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
+func (*StreamingPullResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
 
 func (m *StreamingPullResponse) GetReceivedMessages() []*ReceivedMessage {
 	if m != nil {
@@ -877,6 +940,310 @@ func (m *StreamingPullResponse) GetReceivedMessages() []*ReceivedMessage {
 	return nil
 }
 
+// Request for the `CreateSnapshot` method.
+type CreateSnapshotRequest struct {
+	// Optional user-provided name for this snapshot.
+	// If the name is not provided in the request, the server will assign a random
+	// name for this snapshot on the same project as the subscription.
+	// Note that for REST API requests, you must specify a name.
+	// Format is `projects/{project}/snapshots/{snap}`.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// The subscription whose backlog the snapshot retains.
+	// Specifically, the created snapshot is guaranteed to retain:
+	//  (a) The existing backlog on the subscription. More precisely, this is
+	//      defined as the messages in the subscription's backlog that are
+	//      unacknowledged upon the successful completion of the
+	//      `CreateSnapshot` request; as well as:
+	//  (b) Any messages published to the subscription's topic following the
+	//      successful completion of the CreateSnapshot request.
+	// Format is `projects/{project}/subscriptions/{sub}`.
+	Subscription string `protobuf:"bytes,2,opt,name=subscription" json:"subscription,omitempty"`
+}
+
+func (m *CreateSnapshotRequest) Reset()                    { *m = CreateSnapshotRequest{} }
+func (m *CreateSnapshotRequest) String() string            { return proto.CompactTextString(m) }
+func (*CreateSnapshotRequest) ProtoMessage()               {}
+func (*CreateSnapshotRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }
+
+func (m *CreateSnapshotRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *CreateSnapshotRequest) GetSubscription() string {
+	if m != nil {
+		return m.Subscription
+	}
+	return ""
+}
+
+// A snapshot resource.
+type Snapshot struct {
+	// The name of the snapshot.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// The name of the topic from which this snapshot is retaining messages.
+	Topic string `protobuf:"bytes,2,opt,name=topic" json:"topic,omitempty"`
+	// The snapshot is guaranteed to exist up until this time.
+	// A newly-created snapshot expires no later than 7 days from the time of its
+	// creation. Its exact lifetime is determined at creation by the existing
+	// backlog in the source subscription. Specifically, the lifetime of the
+	// snapshot is `7 days - (age of oldest unacked message in the subscription)`.
+	// For example, consider a subscription whose oldest unacked message is 3 days
+	// old. If a snapshot is created from this subscription, the snapshot -- which
+	// will always capture this 3-day-old backlog as long as the snapshot
+	// exists -- will expire in 4 days.
+	ExpirationTime *google_protobuf4.Timestamp `protobuf:"bytes,3,opt,name=expiration_time,json=expirationTime" json:"expiration_time,omitempty"`
+}
+
+func (m *Snapshot) Reset()                    { *m = Snapshot{} }
+func (m *Snapshot) String() string            { return proto.CompactTextString(m) }
+func (*Snapshot) ProtoMessage()               {}
+func (*Snapshot) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }
+
+func (m *Snapshot) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Snapshot) GetTopic() string {
+	if m != nil {
+		return m.Topic
+	}
+	return ""
+}
+
+func (m *Snapshot) GetExpirationTime() *google_protobuf4.Timestamp {
+	if m != nil {
+		return m.ExpirationTime
+	}
+	return nil
+}
+
+// Request for the `ListSnapshots` method.
+type ListSnapshotsRequest struct {
+	// The name of the cloud project that snapshots belong to.
+	// Format is `projects/{project}`.
+	Project string `protobuf:"bytes,1,opt,name=project" json:"project,omitempty"`
+	// Maximum number of snapshots to return.
+	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
+	// The value returned by the last `ListSnapshotsResponse`; indicates that this
+	// is a continuation of a prior `ListSnapshots` call, and that the system
+	// should return the next page of data.
+	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
+}
+
+func (m *ListSnapshotsRequest) Reset()                    { *m = ListSnapshotsRequest{} }
+func (m *ListSnapshotsRequest) String() string            { return proto.CompactTextString(m) }
+func (*ListSnapshotsRequest) ProtoMessage()               {}
+func (*ListSnapshotsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
+
+func (m *ListSnapshotsRequest) GetProject() string {
+	if m != nil {
+		return m.Project
+	}
+	return ""
+}
+
+func (m *ListSnapshotsRequest) GetPageSize() int32 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+func (m *ListSnapshotsRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+// Response for the `ListSnapshots` method.
+type ListSnapshotsResponse struct {
+	// The resulting snapshots.
+	Snapshots []*Snapshot `protobuf:"bytes,1,rep,name=snapshots" json:"snapshots,omitempty"`
+	// If not empty, indicates that there may be more snapshot that match the
+	// request; this value should be passed in a new `ListSnapshotsRequest`.
+	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
+}
+
+func (m *ListSnapshotsResponse) Reset()                    { *m = ListSnapshotsResponse{} }
+func (m *ListSnapshotsResponse) String() string            { return proto.CompactTextString(m) }
+func (*ListSnapshotsResponse) ProtoMessage()               {}
+func (*ListSnapshotsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }
+
+func (m *ListSnapshotsResponse) GetSnapshots() []*Snapshot {
+	if m != nil {
+		return m.Snapshots
+	}
+	return nil
+}
+
+func (m *ListSnapshotsResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
+// Request for the `DeleteSnapshot` method.
+type DeleteSnapshotRequest struct {
+	// The name of the snapshot to delete.
+	// Format is `projects/{project}/snapshots/{snap}`.
+	Snapshot string `protobuf:"bytes,1,opt,name=snapshot" json:"snapshot,omitempty"`
+}
+
+func (m *DeleteSnapshotRequest) Reset()                    { *m = DeleteSnapshotRequest{} }
+func (m *DeleteSnapshotRequest) String() string            { return proto.CompactTextString(m) }
+func (*DeleteSnapshotRequest) ProtoMessage()               {}
+func (*DeleteSnapshotRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }
+
+func (m *DeleteSnapshotRequest) GetSnapshot() string {
+	if m != nil {
+		return m.Snapshot
+	}
+	return ""
+}
+
+// Request for the `Seek` method.
+type SeekRequest struct {
+	// The subscription to affect.
+	Subscription string `protobuf:"bytes,1,opt,name=subscription" json:"subscription,omitempty"`
+	// Types that are valid to be assigned to Target:
+	//	*SeekRequest_Time
+	//	*SeekRequest_Snapshot
+	Target isSeekRequest_Target `protobuf_oneof:"target"`
+}
+
+func (m *SeekRequest) Reset()                    { *m = SeekRequest{} }
+func (m *SeekRequest) String() string            { return proto.CompactTextString(m) }
+func (*SeekRequest) ProtoMessage()               {}
+func (*SeekRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }
+
+type isSeekRequest_Target interface {
+	isSeekRequest_Target()
+}
+
+type SeekRequest_Time struct {
+	Time *google_protobuf4.Timestamp `protobuf:"bytes,2,opt,name=time,oneof"`
+}
+type SeekRequest_Snapshot struct {
+	Snapshot string `protobuf:"bytes,3,opt,name=snapshot,oneof"`
+}
+
+func (*SeekRequest_Time) isSeekRequest_Target()     {}
+func (*SeekRequest_Snapshot) isSeekRequest_Target() {}
+
+func (m *SeekRequest) GetTarget() isSeekRequest_Target {
+	if m != nil {
+		return m.Target
+	}
+	return nil
+}
+
+func (m *SeekRequest) GetSubscription() string {
+	if m != nil {
+		return m.Subscription
+	}
+	return ""
+}
+
+func (m *SeekRequest) GetTime() *google_protobuf4.Timestamp {
+	if x, ok := m.GetTarget().(*SeekRequest_Time); ok {
+		return x.Time
+	}
+	return nil
+}
+
+func (m *SeekRequest) GetSnapshot() string {
+	if x, ok := m.GetTarget().(*SeekRequest_Snapshot); ok {
+		return x.Snapshot
+	}
+	return ""
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*SeekRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _SeekRequest_OneofMarshaler, _SeekRequest_OneofUnmarshaler, _SeekRequest_OneofSizer, []interface{}{
+		(*SeekRequest_Time)(nil),
+		(*SeekRequest_Snapshot)(nil),
+	}
+}
+
+func _SeekRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*SeekRequest)
+	// target
+	switch x := m.Target.(type) {
+	case *SeekRequest_Time:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.Time); err != nil {
+			return err
+		}
+	case *SeekRequest_Snapshot:
+		b.EncodeVarint(3<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.Snapshot)
+	case nil:
+	default:
+		return fmt.Errorf("SeekRequest.Target has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _SeekRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*SeekRequest)
+	switch tag {
+	case 2: // target.time
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(google_protobuf4.Timestamp)
+		err := b.DecodeMessage(msg)
+		m.Target = &SeekRequest_Time{msg}
+		return true, err
+	case 3: // target.snapshot
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.Target = &SeekRequest_Snapshot{x}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _SeekRequest_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*SeekRequest)
+	// target
+	switch x := m.Target.(type) {
+	case *SeekRequest_Time:
+		s := proto.Size(x.Time)
+		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *SeekRequest_Snapshot:
+		n += proto.SizeVarint(3<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.Snapshot)))
+		n += len(x.Snapshot)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+type SeekResponse struct {
+}
+
+func (m *SeekResponse) Reset()                    { *m = SeekResponse{} }
+func (m *SeekResponse) String() string            { return proto.CompactTextString(m) }
+func (*SeekResponse) ProtoMessage()               {}
+func (*SeekResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} }
+
 func init() {
 	proto.RegisterType((*Topic)(nil), "google.pubsub.v1.Topic")
 	proto.RegisterType((*PubsubMessage)(nil), "google.pubsub.v1.PubsubMessage")
@@ -892,6 +1259,7 @@ func init() {
 	proto.RegisterType((*PushConfig)(nil), "google.pubsub.v1.PushConfig")
 	proto.RegisterType((*ReceivedMessage)(nil), "google.pubsub.v1.ReceivedMessage")
 	proto.RegisterType((*GetSubscriptionRequest)(nil), "google.pubsub.v1.GetSubscriptionRequest")
+	proto.RegisterType((*UpdateSubscriptionRequest)(nil), "google.pubsub.v1.UpdateSubscriptionRequest")
 	proto.RegisterType((*ListSubscriptionsRequest)(nil), "google.pubsub.v1.ListSubscriptionsRequest")
 	proto.RegisterType((*ListSubscriptionsResponse)(nil), "google.pubsub.v1.ListSubscriptionsResponse")
 	proto.RegisterType((*DeleteSubscriptionRequest)(nil), "google.pubsub.v1.DeleteSubscriptionRequest")
@@ -902,6 +1270,13 @@ func init() {
 	proto.RegisterType((*AcknowledgeRequest)(nil), "google.pubsub.v1.AcknowledgeRequest")
 	proto.RegisterType((*StreamingPullRequest)(nil), "google.pubsub.v1.StreamingPullRequest")
 	proto.RegisterType((*StreamingPullResponse)(nil), "google.pubsub.v1.StreamingPullResponse")
+	proto.RegisterType((*CreateSnapshotRequest)(nil), "google.pubsub.v1.CreateSnapshotRequest")
+	proto.RegisterType((*Snapshot)(nil), "google.pubsub.v1.Snapshot")
+	proto.RegisterType((*ListSnapshotsRequest)(nil), "google.pubsub.v1.ListSnapshotsRequest")
+	proto.RegisterType((*ListSnapshotsResponse)(nil), "google.pubsub.v1.ListSnapshotsResponse")
+	proto.RegisterType((*DeleteSnapshotRequest)(nil), "google.pubsub.v1.DeleteSnapshotRequest")
+	proto.RegisterType((*SeekRequest)(nil), "google.pubsub.v1.SeekRequest")
+	proto.RegisterType((*SeekResponse)(nil), "google.pubsub.v1.SeekResponse")
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -928,6 +1303,9 @@ type SubscriberClient interface {
 	CreateSubscription(ctx context.Context, in *Subscription, opts ...grpc.CallOption) (*Subscription, error)
 	// Gets the configuration details of a subscription.
 	GetSubscription(ctx context.Context, in *GetSubscriptionRequest, opts ...grpc.CallOption) (*Subscription, error)
+	// Updates an existing subscription. Note that certain properties of a
+	// subscription, such as its topic, are not modifiable.
+	UpdateSubscription(ctx context.Context, in *UpdateSubscriptionRequest, opts ...grpc.CallOption) (*Subscription, error)
 	// Lists matching subscriptions.
 	ListSubscriptions(ctx context.Context, in *ListSubscriptionsRequest, opts ...grpc.CallOption) (*ListSubscriptionsResponse, error)
 	// Deletes an existing subscription. All messages retained in the subscription
@@ -935,13 +1313,13 @@ type SubscriberClient interface {
 	// `NOT_FOUND`. After a subscription is deleted, a new one may be created with
 	// the same name, but the new one has no association with the old
 	// subscription or its topic unless the same topic is specified.
-	DeleteSubscription(ctx context.Context, in *DeleteSubscriptionRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+	DeleteSubscription(ctx context.Context, in *DeleteSubscriptionRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error)
 	// Modifies the ack deadline for a specific message. This method is useful
 	// to indicate that more time is needed to process a message by the
 	// subscriber, or to make the message available for redelivery if the
 	// processing was interrupted. Note that this does not modify the
 	// subscription-level `ackDeadlineSeconds` used for subsequent messages.
-	ModifyAckDeadline(ctx context.Context, in *ModifyAckDeadlineRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+	ModifyAckDeadline(ctx context.Context, in *ModifyAckDeadlineRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error)
 	// Acknowledges the messages associated with the `ack_ids` in the
 	// `AcknowledgeRequest`. The Pub/Sub system can remove the relevant messages
 	// from the subscription.
@@ -949,7 +1327,7 @@ type SubscriberClient interface {
 	// Acknowledging a message whose ack deadline has expired may succeed,
 	// but such a message may be redelivered later. Acknowledging a message more
 	// than once will not result in an error.
-	Acknowledge(ctx context.Context, in *AcknowledgeRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+	Acknowledge(ctx context.Context, in *AcknowledgeRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error)
 	// Pulls messages from the server. Returns an empty list if there are no
 	// messages available in the backlog. The server may return `UNAVAILABLE` if
 	// there are too many concurrent pull requests pending for the given
@@ -974,7 +1352,28 @@ type SubscriberClient interface {
 	// an empty `PushConfig`) or vice versa, or change the endpoint URL and other
 	// attributes of a push subscription. Messages will accumulate for delivery
 	// continuously through the call regardless of changes to the `PushConfig`.
-	ModifyPushConfig(ctx context.Context, in *ModifyPushConfigRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+	ModifyPushConfig(ctx context.Context, in *ModifyPushConfigRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error)
+	// Lists the existing snapshots.
+	ListSnapshots(ctx context.Context, in *ListSnapshotsRequest, opts ...grpc.CallOption) (*ListSnapshotsResponse, error)
+	// Creates a snapshot from the requested subscription.
+	// If the snapshot already exists, returns `ALREADY_EXISTS`.
+	// If the requested subscription doesn't exist, returns `NOT_FOUND`.
+	//
+	// If the name is not provided in the request, the server will assign a random
+	// name for this snapshot on the same project as the subscription, conforming
+	// to the
+	// [resource name format](https://cloud.google.com/pubsub/docs/overview#names).
+	// The generated name is populated in the returned Snapshot object.
+	// Note that for REST API requests, you must specify a name in the request.
+	CreateSnapshot(ctx context.Context, in *CreateSnapshotRequest, opts ...grpc.CallOption) (*Snapshot, error)
+	// Removes an existing snapshot. All messages retained in the snapshot
+	// are immediately dropped. After a snapshot is deleted, a new one may be
+	// created with the same name, but the new one has no association with the old
+	// snapshot or its subscription, unless the same subscription is specified.
+	DeleteSnapshot(ctx context.Context, in *DeleteSnapshotRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error)
+	// Seeks an existing subscription to a point in time or to a given snapshot,
+	// whichever is provided in the request.
+	Seek(ctx context.Context, in *SeekRequest, opts ...grpc.CallOption) (*SeekResponse, error)
 }
 
 type subscriberClient struct {
@@ -1003,6 +1402,15 @@ func (c *subscriberClient) GetSubscription(ctx context.Context, in *GetSubscript
 	return out, nil
 }
 
+func (c *subscriberClient) UpdateSubscription(ctx context.Context, in *UpdateSubscriptionRequest, opts ...grpc.CallOption) (*Subscription, error) {
+	out := new(Subscription)
+	err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/UpdateSubscription", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 func (c *subscriberClient) ListSubscriptions(ctx context.Context, in *ListSubscriptionsRequest, opts ...grpc.CallOption) (*ListSubscriptionsResponse, error) {
 	out := new(ListSubscriptionsResponse)
 	err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/ListSubscriptions", in, out, c.cc, opts...)
@@ -1012,8 +1420,8 @@ func (c *subscriberClient) ListSubscriptions(ctx context.Context, in *ListSubscr
 	return out, nil
 }
 
-func (c *subscriberClient) DeleteSubscription(ctx context.Context, in *DeleteSubscriptionRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
-	out := new(google_protobuf1.Empty)
+func (c *subscriberClient) DeleteSubscription(ctx context.Context, in *DeleteSubscriptionRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) {
+	out := new(google_protobuf2.Empty)
 	err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/DeleteSubscription", in, out, c.cc, opts...)
 	if err != nil {
 		return nil, err
@@ -1021,8 +1429,8 @@ func (c *subscriberClient) DeleteSubscription(ctx context.Context, in *DeleteSub
 	return out, nil
 }
 
-func (c *subscriberClient) ModifyAckDeadline(ctx context.Context, in *ModifyAckDeadlineRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
-	out := new(google_protobuf1.Empty)
+func (c *subscriberClient) ModifyAckDeadline(ctx context.Context, in *ModifyAckDeadlineRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) {
+	out := new(google_protobuf2.Empty)
 	err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/ModifyAckDeadline", in, out, c.cc, opts...)
 	if err != nil {
 		return nil, err
@@ -1030,8 +1438,8 @@ func (c *subscriberClient) ModifyAckDeadline(ctx context.Context, in *ModifyAckD
 	return out, nil
 }
 
-func (c *subscriberClient) Acknowledge(ctx context.Context, in *AcknowledgeRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
-	out := new(google_protobuf1.Empty)
+func (c *subscriberClient) Acknowledge(ctx context.Context, in *AcknowledgeRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) {
+	out := new(google_protobuf2.Empty)
 	err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/Acknowledge", in, out, c.cc, opts...)
 	if err != nil {
 		return nil, err
@@ -1079,8 +1487,8 @@ func (x *subscriberStreamingPullClient) Recv() (*StreamingPullResponse, error) {
 	return m, nil
 }
 
-func (c *subscriberClient) ModifyPushConfig(ctx context.Context, in *ModifyPushConfigRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
-	out := new(google_protobuf1.Empty)
+func (c *subscriberClient) ModifyPushConfig(ctx context.Context, in *ModifyPushConfigRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) {
+	out := new(google_protobuf2.Empty)
 	err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/ModifyPushConfig", in, out, c.cc, opts...)
 	if err != nil {
 		return nil, err
@@ -1088,6 +1496,42 @@ func (c *subscriberClient) ModifyPushConfig(ctx context.Context, in *ModifyPushC
 	return out, nil
 }
 
+func (c *subscriberClient) ListSnapshots(ctx context.Context, in *ListSnapshotsRequest, opts ...grpc.CallOption) (*ListSnapshotsResponse, error) {
+	out := new(ListSnapshotsResponse)
+	err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/ListSnapshots", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *subscriberClient) CreateSnapshot(ctx context.Context, in *CreateSnapshotRequest, opts ...grpc.CallOption) (*Snapshot, error) {
+	out := new(Snapshot)
+	err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/CreateSnapshot", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *subscriberClient) DeleteSnapshot(ctx context.Context, in *DeleteSnapshotRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) {
+	out := new(google_protobuf2.Empty)
+	err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/DeleteSnapshot", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *subscriberClient) Seek(ctx context.Context, in *SeekRequest, opts ...grpc.CallOption) (*SeekResponse, error) {
+	out := new(SeekResponse)
+	err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/Seek", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 // Server API for Subscriber service
 
 type SubscriberServer interface {
@@ -1104,6 +1548,9 @@ type SubscriberServer interface {
 	CreateSubscription(context.Context, *Subscription) (*Subscription, error)
 	// Gets the configuration details of a subscription.
 	GetSubscription(context.Context, *GetSubscriptionRequest) (*Subscription, error)
+	// Updates an existing subscription. Note that certain properties of a
+	// subscription, such as its topic, are not modifiable.
+	UpdateSubscription(context.Context, *UpdateSubscriptionRequest) (*Subscription, error)
 	// Lists matching subscriptions.
 	ListSubscriptions(context.Context, *ListSubscriptionsRequest) (*ListSubscriptionsResponse, error)
 	// Deletes an existing subscription. All messages retained in the subscription
@@ -1111,13 +1558,13 @@ type SubscriberServer interface {
 	// `NOT_FOUND`. After a subscription is deleted, a new one may be created with
 	// the same name, but the new one has no association with the old
 	// subscription or its topic unless the same topic is specified.
-	DeleteSubscription(context.Context, *DeleteSubscriptionRequest) (*google_protobuf1.Empty, error)
+	DeleteSubscription(context.Context, *DeleteSubscriptionRequest) (*google_protobuf2.Empty, error)
 	// Modifies the ack deadline for a specific message. This method is useful
 	// to indicate that more time is needed to process a message by the
 	// subscriber, or to make the message available for redelivery if the
 	// processing was interrupted. Note that this does not modify the
 	// subscription-level `ackDeadlineSeconds` used for subsequent messages.
-	ModifyAckDeadline(context.Context, *ModifyAckDeadlineRequest) (*google_protobuf1.Empty, error)
+	ModifyAckDeadline(context.Context, *ModifyAckDeadlineRequest) (*google_protobuf2.Empty, error)
 	// Acknowledges the messages associated with the `ack_ids` in the
 	// `AcknowledgeRequest`. The Pub/Sub system can remove the relevant messages
 	// from the subscription.
@@ -1125,7 +1572,7 @@ type SubscriberServer interface {
 	// Acknowledging a message whose ack deadline has expired may succeed,
 	// but such a message may be redelivered later. Acknowledging a message more
 	// than once will not result in an error.
-	Acknowledge(context.Context, *AcknowledgeRequest) (*google_protobuf1.Empty, error)
+	Acknowledge(context.Context, *AcknowledgeRequest) (*google_protobuf2.Empty, error)
 	// Pulls messages from the server. Returns an empty list if there are no
 	// messages available in the backlog. The server may return `UNAVAILABLE` if
 	// there are too many concurrent pull requests pending for the given
@@ -1150,7 +1597,28 @@ type SubscriberServer interface {
 	// an empty `PushConfig`) or vice versa, or change the endpoint URL and other
 	// attributes of a push subscription. Messages will accumulate for delivery
 	// continuously through the call regardless of changes to the `PushConfig`.
-	ModifyPushConfig(context.Context, *ModifyPushConfigRequest) (*google_protobuf1.Empty, error)
+	ModifyPushConfig(context.Context, *ModifyPushConfigRequest) (*google_protobuf2.Empty, error)
+	// Lists the existing snapshots.
+	ListSnapshots(context.Context, *ListSnapshotsRequest) (*ListSnapshotsResponse, error)
+	// Creates a snapshot from the requested subscription.
+	// If the snapshot already exists, returns `ALREADY_EXISTS`.
+	// If the requested subscription doesn't exist, returns `NOT_FOUND`.
+	//
+	// If the name is not provided in the request, the server will assign a random
+	// name for this snapshot on the same project as the subscription, conforming
+	// to the
+	// [resource name format](https://cloud.google.com/pubsub/docs/overview#names).
+	// The generated name is populated in the returned Snapshot object.
+	// Note that for REST API requests, you must specify a name in the request.
+	CreateSnapshot(context.Context, *CreateSnapshotRequest) (*Snapshot, error)
+	// Removes an existing snapshot. All messages retained in the snapshot
+	// are immediately dropped. After a snapshot is deleted, a new one may be
+	// created with the same name, but the new one has no association with the old
+	// snapshot or its subscription, unless the same subscription is specified.
+	DeleteSnapshot(context.Context, *DeleteSnapshotRequest) (*google_protobuf2.Empty, error)
+	// Seeks an existing subscription to a point in time or to a given snapshot,
+	// whichever is provided in the request.
+	Seek(context.Context, *SeekRequest) (*SeekResponse, error)
 }
 
 func RegisterSubscriberServer(s *grpc.Server, srv SubscriberServer) {
@@ -1193,6 +1661,24 @@ func _Subscriber_GetSubscription_Handler(srv interface{}, ctx context.Context, d
 	return interceptor(ctx, in, info, handler)
 }
 
+func _Subscriber_UpdateSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UpdateSubscriptionRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SubscriberServer).UpdateSubscription(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.pubsub.v1.Subscriber/UpdateSubscription",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SubscriberServer).UpdateSubscription(ctx, req.(*UpdateSubscriptionRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _Subscriber_ListSubscriptions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(ListSubscriptionsRequest)
 	if err := dec(in); err != nil {
@@ -1327,6 +1813,78 @@ func _Subscriber_ModifyPushConfig_Handler(srv interface{}, ctx context.Context,
 	return interceptor(ctx, in, info, handler)
 }
 
+func _Subscriber_ListSnapshots_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListSnapshotsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SubscriberServer).ListSnapshots(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.pubsub.v1.Subscriber/ListSnapshots",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SubscriberServer).ListSnapshots(ctx, req.(*ListSnapshotsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Subscriber_CreateSnapshot_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CreateSnapshotRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SubscriberServer).CreateSnapshot(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.pubsub.v1.Subscriber/CreateSnapshot",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SubscriberServer).CreateSnapshot(ctx, req.(*CreateSnapshotRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Subscriber_DeleteSnapshot_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeleteSnapshotRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SubscriberServer).DeleteSnapshot(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.pubsub.v1.Subscriber/DeleteSnapshot",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SubscriberServer).DeleteSnapshot(ctx, req.(*DeleteSnapshotRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Subscriber_Seek_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SeekRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SubscriberServer).Seek(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.pubsub.v1.Subscriber/Seek",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SubscriberServer).Seek(ctx, req.(*SeekRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 var _Subscriber_serviceDesc = grpc.ServiceDesc{
 	ServiceName: "google.pubsub.v1.Subscriber",
 	HandlerType: (*SubscriberServer)(nil),
@@ -1339,6 +1897,10 @@ var _Subscriber_serviceDesc = grpc.ServiceDesc{
 			MethodName: "GetSubscription",
 			Handler:    _Subscriber_GetSubscription_Handler,
 		},
+		{
+			MethodName: "UpdateSubscription",
+			Handler:    _Subscriber_UpdateSubscription_Handler,
+		},
 		{
 			MethodName: "ListSubscriptions",
 			Handler:    _Subscriber_ListSubscriptions_Handler,
@@ -1363,6 +1925,22 @@ var _Subscriber_serviceDesc = grpc.ServiceDesc{
 			MethodName: "ModifyPushConfig",
 			Handler:    _Subscriber_ModifyPushConfig_Handler,
 		},
+		{
+			MethodName: "ListSnapshots",
+			Handler:    _Subscriber_ListSnapshots_Handler,
+		},
+		{
+			MethodName: "CreateSnapshot",
+			Handler:    _Subscriber_CreateSnapshot_Handler,
+		},
+		{
+			MethodName: "DeleteSnapshot",
+			Handler:    _Subscriber_DeleteSnapshot_Handler,
+		},
+		{
+			MethodName: "Seek",
+			Handler:    _Subscriber_Seek_Handler,
+		},
 	},
 	Streams: []grpc.StreamDesc{
 		{
@@ -1395,7 +1973,7 @@ type PublisherClient interface {
 	// the same name; this is an entirely new topic with none of the old
 	// configuration or subscriptions. Existing subscriptions to this topic are
 	// not deleted, but their `topic` field is set to `_deleted-topic_`.
-	DeleteTopic(ctx context.Context, in *DeleteTopicRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+	DeleteTopic(ctx context.Context, in *DeleteTopicRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error)
 }
 
 type publisherClient struct {
@@ -1451,8 +2029,8 @@ func (c *publisherClient) ListTopicSubscriptions(ctx context.Context, in *ListTo
 	return out, nil
 }
 
-func (c *publisherClient) DeleteTopic(ctx context.Context, in *DeleteTopicRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
-	out := new(google_protobuf1.Empty)
+func (c *publisherClient) DeleteTopic(ctx context.Context, in *DeleteTopicRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) {
+	out := new(google_protobuf2.Empty)
 	err := grpc.Invoke(ctx, "/google.pubsub.v1.Publisher/DeleteTopic", in, out, c.cc, opts...)
 	if err != nil {
 		return nil, err
@@ -1480,7 +2058,7 @@ type PublisherServer interface {
 	// the same name; this is an entirely new topic with none of the old
 	// configuration or subscriptions. Existing subscriptions to this topic are
 	// not deleted, but their `topic` field is set to `_deleted-topic_`.
-	DeleteTopic(context.Context, *DeleteTopicRequest) (*google_protobuf1.Empty, error)
+	DeleteTopic(context.Context, *DeleteTopicRequest) (*google_protobuf2.Empty, error)
 }
 
 func RegisterPublisherServer(s *grpc.Server, srv PublisherServer) {
@@ -1631,97 +2209,122 @@ var _Publisher_serviceDesc = grpc.ServiceDesc{
 func init() { proto.RegisterFile("google/pubsub/v1/pubsub.proto", fileDescriptor0) }
 
 var fileDescriptor0 = []byte{
-	// 1466 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x5d, 0x6f, 0x1b, 0x45,
-	0x17, 0xd6, 0xd8, 0xf9, 0x3c, 0x76, 0xde, 0x24, 0xa3, 0x34, 0x71, 0x9d, 0xa6, 0x49, 0xb6, 0x7d,
-	0x1b, 0xd7, 0xb4, 0x76, 0x6a, 0xd4, 0x42, 0x53, 0xd2, 0x2a, 0x4d, 0xaa, 0x2a, 0xa8, 0x85, 0xe0,
-	0x54, 0x5c, 0x70, 0x81, 0xb5, 0xf6, 0x4e, 0xdd, 0x6d, 0xf6, 0xab, 0x3b, 0xbb, 0x21, 0x29, 0x54,
-	0x82, 0x82, 0x90, 0xb8, 0xa3, 0x70, 0x09, 0x17, 0x48, 0x48, 0x48, 0x70, 0xc9, 0x0f, 0xe0, 0x4f,
-	0xf0, 0x17, 0xf8, 0x11, 0x5c, 0xa2, 0xf9, 0x58, 0x7b, 0xd7, 0xbb, 0x6b, 0xc7, 0xa9, 0x7a, 0xb7,
-	0x3b, 0x73, 0x66, 0x9e, 0xe7, 0x9c, 0x39, 0xe7, 0xd9, 0x39, 0x0b, 0x4b, 0x6d, 0xdb, 0x6e, 0x1b,
-	0xa4, 0xea, 0xf8, 0x4d, 0xea, 0x37, 0xab, 0x87, 0xd7, 0xe4, 0x53, 0xc5, 0x71, 0x6d, 0xcf, 0xc6,
-	0x33, 0x62, 0xba, 0x22, 0x07, 0x0f, 0xaf, 0x15, 0xcf, 0xc9, 0x05, 0xaa, 0xa3, 0x57, 0x55, 0xcb,
-	0xb2, 0x3d, 0xd5, 0xd3, 0x6d, 0x8b, 0x0a, 0xfb, 0xe2, 0x62, 0xb0, 0x1d, 0x7b, 0x6b, 0xfa, 0x8f,
-	0xab, 0xc4, 0x74, 0xbc, 0x63, 0x39, 0xb9, 0xdc, 0x3b, 0xe9, 0xe9, 0x26, 0xa1, 0x9e, 0x6a, 0x3a,
-	0xc2, 0x40, 0x59, 0x84, 0xd1, 0x47, 0xb6, 0xa3, 0xb7, 0x30, 0x86, 0x11, 0x4b, 0x35, 0x49, 0x01,
-	0xad, 0xa0, 0xd2, 0x64, 0x9d, 0x3f, 0x2b, 0xaf, 0x32, 0x30, 0xb5, 0xc7, 0x69, 0x3c, 0x24, 0x94,
-	0xaa, 0x6d, 0xc2, 0xac, 0x34, 0xd5, 0x53, 0xb9, 0x55, 0xbe, 0xce, 0x9f, 0xf1, 0x87, 0x00, 0xaa,
-	0xe7, 0xb9, 0x7a, 0xd3, 0xf7, 0x08, 0x2d, 0x64, 0x56, 0xb2, 0xa5, 0x5c, 0xad, 0x5a, 0xe9, 0xf5,
-	0xa2, 0x12, 0xd9, 0xa8, 0xb2, 0xd5, 0x59, 0x71, 0xcf, 0xf2, 0xdc, 0xe3, 0x7a, 0x68, 0x0b, 0xbc,
-	0x04, 0x60, 0x0a, 0xb3, 0x86, 0xae, 0x15, 0xb2, 0x9c, 0xd0, 0xa4, 0x1c, 0xd9, 0xd5, 0xf0, 0x26,
-	0xe4, 0x1d, 0xbf, 0x69, 0xe8, 0xf4, 0x49, 0x83, 0x79, 0x53, 0x18, 0x59, 0x41, 0xa5, 0x5c, 0xad,
-	0xd8, 0x41, 0x94, 0xae, 0x56, 0x1e, 0x05, 0xae, 0xd6, 0x73, 0xd2, 0x9e, 0x8d, 0x14, 0x37, 0x61,
-	0xba, 0x07, 0x1c, 0xcf, 0x40, 0xf6, 0x80, 0x1c, 0x4b, 0xd7, 0xd9, 0x23, 0x9e, 0x83, 0xd1, 0x43,
-	0xd5, 0xf0, 0x49, 0x21, 0xc3, 0xc7, 0xc4, 0xcb, 0x46, 0xe6, 0x5d, 0xa4, 0xac, 0xc1, 0xf4, 0x7d,
-	0xe2, 0xf1, 0x98, 0xd5, 0xc9, 0x33, 0x9f, 0x50, 0x8f, 0x19, 0x7b, 0xec, 0x5d, 0x6e, 0x20, 0x5e,
-	0x94, 0x16, 0xfc, 0x6f, 0x4f, 0xc0, 0xf6, 0xb5, 0xc3, 0xb7, 0x60, 0x42, 0xfa, 0x16, 0x04, 0x6f,
-	0x79, 0x40, 0xf0, 0xea, 0x9d, 0x05, 0x4a, 0x0d, 0xa6, 0x3b, 0x20, 0xd4, 0xb1, 0x2d, 0x4a, 0xf0,
-	0x32, 0xe4, 0xba, 0xd1, 0xa3, 0x05, 0xb4, 0x92, 0x2d, 0x4d, 0xd6, 0xa1, 0x13, 0x3e, 0xaa, 0xe8,
-	0x30, 0xfb, 0x40, 0xa7, 0xc2, 0x05, 0x1a, 0x70, 0x2b, 0xc0, 0xb8, 0xe3, 0xda, 0x4f, 0x49, 0xcb,
-	0x93, 0xec, 0x82, 0x57, 0xbc, 0x08, 0x93, 0x0e, 0xdb, 0x8c, 0xea, 0xcf, 0x45, 0x38, 0x46, 0xeb,
-	0x13, 0x6c, 0x60, 0x5f, 0x7f, 0x4e, 0xd8, 0x51, 0xf1, 0x49, 0xcf, 0x3e, 0x20, 0x56, 0x70, 0x54,
-	0x6c, 0xe4, 0x11, 0x1b, 0x50, 0x4c, 0xc0, 0x61, 0x28, 0xc9, 0xb0, 0x0a, 0x63, 0xdc, 0x75, 0x41,
-	0x2e, 0x57, 0x5b, 0x88, 0xfb, 0x2b, 0xe2, 0x2b, 0xcd, 0xf0, 0x25, 0x98, 0xb6, 0xc8, 0x91, 0xd7,
-	0x08, 0x41, 0x89, 0x73, 0x99, 0x62, 0xc3, 0x7b, 0x1d, 0xb8, 0x67, 0xb0, 0xd4, 0x81, 0xdb, 0xf7,
-	0x9b, 0xb4, 0xe5, 0xea, 0x0e, 0x2f, 0x95, 0xfe, 0x27, 0xf0, 0x3a, 0x1e, 0x5a, 0x70, 0x3e, 0x0d,
-	0x52, 0x7a, 0x7b, 0x11, 0xa6, 0x68, 0x78, 0x42, 0x9e, 0x48, 0x74, 0xf0, 0xc4, 0x2e, 0x96, 0x01,
-	0xef, 0x10, 0x83, 0x78, 0xe4, 0x04, 0x19, 0xf8, 0x3b, 0x82, 0x7c, 0x98, 0x53, 0x52, 0x8d, 0x77,
-	0x97, 0x66, 0xc2, 0x21, 0xd9, 0x84, 0x9c, 0xe3, 0xd3, 0x27, 0x8d, 0x96, 0x6d, 0x3d, 0xd6, 0xdb,
-	0xb2, 0xc4, 0xce, 0x25, 0xe5, 0x25, 0x7d, 0xb2, 0xcd, 0x6d, 0xea, 0xe0, 0x74, 0x9e, 0xf1, 0x3a,
-	0xcc, 0xa9, 0xad, 0x83, 0x86, 0x46, 0x54, 0xcd, 0xd0, 0x2d, 0xd2, 0xa0, 0xa4, 0x65, 0x5b, 0x1a,
-	0x2d, 0x8c, 0xf2, 0xe0, 0x62, 0xb5, 0x75, 0xb0, 0x23, 0xa7, 0xf6, 0xc5, 0x8c, 0xf2, 0x17, 0x02,
-	0xe8, 0x6e, 0x86, 0x2f, 0xc0, 0x14, 0xc7, 0x27, 0x96, 0xe6, 0xd8, 0xba, 0x15, 0x24, 0x65, 0x9e,
-	0x0d, 0xde, 0x93, 0x63, 0xf8, 0x41, 0x82, 0xf0, 0x5c, 0xe9, 0xc7, 0xb1, 0x9f, 0xea, 0xbc, 0xae,
-	0x2e, 0xb4, 0x60, 0xba, 0x4e, 0x5a, 0x44, 0x3f, 0x24, 0x5a, 0x20, 0x96, 0x67, 0x60, 0x8c, 0x45,
-	0x41, 0xd7, 0x82, 0x63, 0x51, 0x5b, 0x07, 0xbb, 0x1a, 0xbe, 0x09, 0xe3, 0xb2, 0x1a, 0xf9, 0x2e,
-	0x27, 0xa8, 0xf7, 0xc0, 0x5e, 0x79, 0x0f, 0xe6, 0xef, 0x13, 0x2f, 0x7c, 0xa6, 0x41, 0x06, 0x28,
-	0x90, 0x0f, 0x27, 0x54, 0x10, 0xaf, 0xf0, 0x98, 0xe2, 0x40, 0x81, 0xe5, 0x6a, 0x62, 0x65, 0xbc,
-	0x99, 0xfa, 0xff, 0x0e, 0xc1, 0xd9, 0x04, 0x48, 0x59, 0x19, 0x3b, 0x49, 0x95, 0x91, 0xab, 0x9d,
-	0x8f, 0x87, 0x23, 0xe2, 0xf1, 0x29, 0x2b, 0xe7, 0x0e, 0x9c, 0x15, 0x95, 0x73, 0xda, 0xf0, 0x7d,
-	0x01, 0x0b, 0x0f, 0x6d, 0x4d, 0x7f, 0x7c, 0x1c, 0x4a, 0xfa, 0x93, 0x2f, 0xef, 0x2d, 0xa9, 0xcc,
-	0x70, 0x25, 0xa5, 0x7c, 0x8d, 0x20, 0xb7, 0xe7, 0x1b, 0xc6, 0x30, 0x90, 0x57, 0x01, 0xbb, 0xc4,
-	0xf3, 0x5d, 0xab, 0xa1, 0x9b, 0x26, 0xd1, 0x74, 0xd5, 0x23, 0xc6, 0x31, 0x47, 0x9e, 0xa8, 0xcf,
-	0x8a, 0x99, 0xdd, 0xee, 0x04, 0x5e, 0x85, 0xbc, 0xa9, 0x1e, 0x35, 0x3a, 0x5f, 0xa3, 0x2c, 0x3f,
-	0xec, 0x9c, 0xa9, 0x1e, 0x3d, 0x0c, 0xbe, 0x37, 0x9f, 0x42, 0x5e, 0x90, 0x90, 0x47, 0xf8, 0x01,
-	0xcc, 0xba, 0x32, 0xeb, 0xbb, 0xeb, 0xc4, 0x31, 0xae, 0xc6, 0x5d, 0xeb, 0x29, 0x90, 0xfa, 0x8c,
-	0x1b, 0x1d, 0xa0, 0x2c, 0x61, 0x0a, 0x22, 0xc8, 0x5b, 0x5d, 0x8d, 0x18, 0xc6, 0xe5, 0x05, 0x18,
-	0x17, 0x35, 0x47, 0x0b, 0x23, 0x5c, 0x67, 0xc7, 0x78, 0xd1, 0xd1, 0x54, 0x49, 0xca, 0xa6, 0x4a,
-	0xd2, 0x47, 0x80, 0xb7, 0x5a, 0x07, 0x96, 0xfd, 0x99, 0x41, 0xb4, 0xf6, 0x69, 0x49, 0x64, 0xc2,
-	0x24, 0x94, 0xaf, 0x32, 0x30, 0xb7, 0xef, 0xb9, 0x44, 0x35, 0x75, 0xab, 0x3d, 0xec, 0x69, 0xa6,
-	0xed, 0x8a, 0x6f, 0xc0, 0x82, 0xc9, 0x63, 0x96, 0xe4, 0x5d, 0xb6, 0x34, 0x5a, 0x3f, 0x23, 0xa6,
-	0x7b, 0x1c, 0xc4, 0xd7, 0xe3, 0xeb, 0xa2, 0xb1, 0x9b, 0x8b, 0xae, 0xdb, 0x12, 0x70, 0x9b, 0xb0,
-	0x48, 0xb9, 0x0f, 0x8d, 0x3e, 0x1a, 0x5f, 0x10, 0x26, 0x5b, 0xf1, 0xb0, 0xb6, 0xe1, 0x4c, 0x4f,
-	0x08, 0xde, 0x4c, 0x2e, 0xd5, 0x7e, 0x03, 0x00, 0x59, 0xeb, 0x4d, 0xe2, 0xe2, 0x6f, 0x11, 0xe0,
-	0x6d, 0x97, 0xa8, 0x51, 0x01, 0xc0, 0x03, 0xd4, 0xa6, 0x38, 0x60, 0x5e, 0x59, 0x7f, 0xf9, 0xf7,
-	0x3f, 0x3f, 0x66, 0xca, 0xc5, 0xff, 0xb3, 0x8b, 0xfc, 0xe7, 0xec, 0x93, 0xba, 0x29, 0x95, 0x93,
-	0x56, 0xcb, 0xd5, 0x88, 0x54, 0x55, 0xcb, 0x2f, 0x36, 0x50, 0x19, 0xff, 0x80, 0xf8, 0x15, 0x32,
-	0xc2, 0xa2, 0x14, 0x47, 0x49, 0x16, 0xfa, 0x81, 0x7c, 0xae, 0x73, 0x3e, 0x55, 0x7c, 0x95, 0xf3,
-	0x09, 0xe3, 0xf7, 0xe3, 0x85, 0x7f, 0x46, 0xe2, 0x56, 0x18, 0x51, 0x6a, 0x5c, 0x8e, 0x83, 0xa5,
-	0x7d, 0x41, 0x8a, 0x6f, 0x9d, 0xc8, 0x56, 0x9c, 0xb5, 0x52, 0xe1, 0x2c, 0x4b, 0xf8, 0x12, 0x67,
-	0x29, 0x89, 0x85, 0x08, 0xbe, 0x88, 0x32, 0xc4, 0xdf, 0xa3, 0xe0, 0xde, 0x13, 0x09, 0x5b, 0x02,
-	0x66, 0xaa, 0xc6, 0x17, 0xe7, 0x63, 0x1d, 0xc2, 0x3d, 0xd6, 0x29, 0x05, 0x11, 0x2b, 0x0f, 0x19,
-	0xb1, 0x5f, 0x11, 0xcc, 0xc6, 0xa4, 0x2a, 0x29, 0x62, 0x69, 0x7a, 0x96, 0x4a, 0xe8, 0x7d, 0x4e,
-	0x68, 0x47, 0xb9, 0x33, 0x14, 0xa1, 0x0d, 0xb3, 0x17, 0x87, 0x25, 0xdb, 0x2b, 0x04, 0xb9, 0x90,
-	0x8a, 0xe1, 0x8b, 0x71, 0x7e, 0x71, 0x91, 0x4b, 0x65, 0xb6, 0xc3, 0x99, 0xdd, 0x56, 0x6e, 0x0e,
-	0xc7, 0x4c, 0xed, 0x22, 0x30, 0x4e, 0xdf, 0x20, 0x18, 0x61, 0x95, 0x8f, 0x97, 0x92, 0xbe, 0x7e,
-	0x1d, 0x51, 0x4c, 0x4a, 0xf5, 0xb0, 0x60, 0x28, 0x9b, 0x9c, 0xcd, 0x3b, 0x4a, 0x6d, 0x38, 0x36,
-	0x8e, 0x6f, 0x18, 0x8c, 0x86, 0x06, 0x53, 0x11, 0x21, 0xc2, 0x97, 0x12, 0x4a, 0x2b, 0x41, 0xac,
-	0x8b, 0x6b, 0x03, 0xed, 0x04, 0xc1, 0x12, 0x5a, 0x47, 0xf8, 0x17, 0x04, 0x33, 0xbd, 0xd7, 0x06,
-	0x7c, 0x39, 0x2d, 0x4b, 0x62, 0x57, 0x8b, 0xd4, 0xa3, 0xd8, 0xe5, 0xce, 0x6f, 0x2b, 0xb7, 0x4f,
-	0x93, 0x24, 0x5d, 0x98, 0x0d, 0x54, 0xae, 0xfd, 0x34, 0x06, 0x93, 0xb2, 0x8b, 0x24, 0x2e, 0x7e,
-	0x0a, 0x39, 0x21, 0x93, 0xe2, 0xbf, 0x40, 0x5a, 0x73, 0x56, 0x4c, 0x9b, 0x50, 0x2e, 0x73, 0x66,
-	0x17, 0x8a, 0xe7, 0x13, 0x15, 0x51, 0xb4, 0x74, 0x52, 0x0a, 0x5f, 0x22, 0x18, 0x97, 0xc8, 0x78,
-	0x25, 0xf1, 0x16, 0x1c, 0xea, 0x9f, 0x8b, 0xab, 0x7d, 0x2c, 0x64, 0x4a, 0xd4, 0x38, 0xf6, 0x15,
-	0x65, 0x8d, 0x63, 0x73, 0xac, 0x64, 0x70, 0xf9, 0x47, 0x80, 0x91, 0xb0, 0x61, 0x22, 0xe8, 0xe8,
-	0xf1, 0x6a, 0xa2, 0x0e, 0x87, 0x7b, 0xad, 0x74, 0xbf, 0xd7, 0x38, 0xf6, 0x2a, 0x5e, 0x1e, 0x80,
-	0x8d, 0xbf, 0x44, 0x00, 0xdd, 0xb6, 0x18, 0x5f, 0x48, 0x16, 0xce, 0x48, 0x7f, 0x5e, 0xbc, 0xd8,
-	0xdf, 0x48, 0xba, 0x1f, 0xa5, 0x90, 0x24, 0xab, 0xb2, 0xa3, 0xfe, 0x13, 0xc1, 0x7c, 0x72, 0xdf,
-	0x8a, 0xab, 0x7d, 0x90, 0x12, 0x85, 0x7f, 0xfd, 0xe4, 0x0b, 0x24, 0xcd, 0xe8, 0x37, 0x2a, 0x3d,
-	0x52, 0x3d, 0x1f, 0x01, 0x0f, 0x72, 0xa1, 0xde, 0x37, 0x49, 0xca, 0xe2, 0xad, 0x71, 0x6a, 0xfd,
-	0xc8, 0x50, 0x95, 0x07, 0x9d, 0xd6, 0xdd, 0x63, 0x98, 0x6b, 0xd9, 0x66, 0x0c, 0xeb, 0x6e, 0x4e,
-	0xf4, 0x68, 0x7b, 0x6c, 0xdb, 0x3d, 0xf4, 0xc9, 0x0d, 0x69, 0xd0, 0xb6, 0x0d, 0xd5, 0x6a, 0x57,
-	0x6c, 0xb7, 0x5d, 0x6d, 0x13, 0x8b, 0x83, 0x56, 0xc5, 0x94, 0xea, 0xe8, 0xb4, 0xfb, 0xd3, 0xef,
-	0x96, 0x78, 0xfa, 0x17, 0xa1, 0x3f, 0x32, 0xf3, 0xf7, 0xc5, 0xda, 0x6d, 0xc3, 0xf6, 0x35, 0x96,
-	0xd3, 0xfb, 0x7e, 0xb3, 0xf2, 0xf1, 0xb5, 0xe6, 0x18, 0x5f, 0xfe, 0xf6, 0x7f, 0x01, 0x00, 0x00,
-	0xff, 0xff, 0x55, 0x80, 0x87, 0xa0, 0x32, 0x14, 0x00, 0x00,
+	// 1868 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0xcb, 0x73, 0x23, 0x47,
+	0x19, 0xcf, 0x48, 0x7e, 0xc8, 0x9f, 0x64, 0x7b, 0xb7, 0xb1, 0x77, 0xb5, 0xb3, 0x2f, 0x7b, 0x76,
+	0xb1, 0x15, 0x65, 0x57, 0xf2, 0x2a, 0x95, 0x90, 0x78, 0x71, 0x52, 0x7e, 0x2c, 0x1b, 0x53, 0x59,
+	0x62, 0xc6, 0x0b, 0x54, 0x71, 0x40, 0x35, 0xd2, 0xb4, 0xe5, 0x89, 0x34, 0x8f, 0x4c, 0xcf, 0x18,
+	0x2b, 0x90, 0x2a, 0x48, 0x28, 0xaa, 0x28, 0x38, 0x10, 0x38, 0x92, 0x03, 0x55, 0xdc, 0x38, 0x72,
+	0xe0, 0xc8, 0x3f, 0xc1, 0xbf, 0xc0, 0x81, 0x3f, 0x81, 0x23, 0xd5, 0x8f, 0x91, 0x66, 0x34, 0x3d,
+	0x7a, 0x78, 0x6b, 0x6f, 0xa3, 0xee, 0xaf, 0xfb, 0xf7, 0xfb, 0xde, 0x9f, 0xdb, 0x70, 0xb7, 0xe3,
+	0xba, 0x9d, 0x1e, 0xae, 0x7b, 0x61, 0x8b, 0x84, 0xad, 0xfa, 0xc5, 0x13, 0xf1, 0x55, 0xf3, 0x7c,
+	0x37, 0x70, 0xd1, 0x35, 0xbe, 0x5d, 0x13, 0x8b, 0x17, 0x4f, 0xd4, 0x3b, 0xe2, 0x80, 0xe1, 0x59,
+	0x75, 0xc3, 0x71, 0xdc, 0xc0, 0x08, 0x2c, 0xd7, 0x21, 0x5c, 0x5e, 0xbd, 0x17, 0x5d, 0x47, 0x7f,
+	0xb5, 0xc2, 0xb3, 0xba, 0x19, 0xfa, 0x4c, 0x40, 0xec, 0xdf, 0x1e, 0xdd, 0xc7, 0xb6, 0x17, 0xf4,
+	0xc5, 0xe6, 0xc6, 0xe8, 0xe6, 0x99, 0x85, 0x7b, 0x66, 0xd3, 0x36, 0x48, 0x57, 0x48, 0xdc, 0x1f,
+	0x95, 0x08, 0x2c, 0x1b, 0x93, 0xc0, 0xb0, 0x3d, 0x2e, 0xa0, 0xdd, 0x86, 0xf9, 0x97, 0xae, 0x67,
+	0xb5, 0x11, 0x82, 0x39, 0xc7, 0xb0, 0x71, 0x59, 0xd9, 0x50, 0x2a, 0x4b, 0x3a, 0xfb, 0xd6, 0xbe,
+	0xce, 0xc1, 0xf2, 0x09, 0x53, 0xe4, 0x05, 0x26, 0xc4, 0xe8, 0x60, 0x2a, 0x65, 0x1a, 0x81, 0xc1,
+	0xa4, 0x4a, 0x3a, 0xfb, 0x46, 0x9f, 0x00, 0x18, 0x41, 0xe0, 0x5b, 0xad, 0x30, 0xc0, 0xa4, 0x9c,
+	0xdb, 0xc8, 0x57, 0x8a, 0x8d, 0x7a, 0x6d, 0xd4, 0x0e, 0xb5, 0xc4, 0x45, 0xb5, 0xfd, 0xc1, 0x89,
+	0x67, 0x4e, 0xe0, 0xf7, 0xf5, 0xd8, 0x15, 0xe8, 0x2e, 0x80, 0xcd, 0xc5, 0x9a, 0x96, 0x59, 0xce,
+	0x33, 0x42, 0x4b, 0x62, 0xe5, 0xd8, 0x44, 0x7b, 0x50, 0xf2, 0xc2, 0x56, 0xcf, 0x22, 0xe7, 0x4d,
+	0xaa, 0x4d, 0x79, 0x6e, 0x43, 0xa9, 0x14, 0x1b, 0xea, 0x00, 0x51, 0xa8, 0x5a, 0x7b, 0x19, 0xa9,
+	0xaa, 0x17, 0x85, 0x3c, 0x5d, 0x51, 0xf7, 0x60, 0x75, 0x04, 0x1c, 0x5d, 0x83, 0x7c, 0x17, 0xf7,
+	0x85, 0xea, 0xf4, 0x13, 0xad, 0xc1, 0xfc, 0x85, 0xd1, 0x0b, 0x71, 0x39, 0xc7, 0xd6, 0xf8, 0x8f,
+	0xdd, 0xdc, 0x7b, 0x8a, 0xb6, 0x0d, 0xab, 0xcf, 0x71, 0xc0, 0x6c, 0xa6, 0xe3, 0xcf, 0x42, 0x4c,
+	0x02, 0x2a, 0x1c, 0xd0, 0xdf, 0xe2, 0x02, 0xfe, 0x43, 0x6b, 0xc3, 0xca, 0x09, 0x87, 0x1d, 0x2b,
+	0x87, 0x9e, 0x42, 0x41, 0xe8, 0x16, 0x19, 0xef, 0xfe, 0x04, 0xe3, 0xe9, 0x83, 0x03, 0x5a, 0x03,
+	0x56, 0x07, 0x20, 0xc4, 0x73, 0x1d, 0x82, 0xd1, 0x7d, 0x28, 0x0e, 0xad, 0x47, 0xca, 0xca, 0x46,
+	0xbe, 0xb2, 0xa4, 0xc3, 0xc0, 0x7c, 0x44, 0xb3, 0xe0, 0xfa, 0xc7, 0x16, 0xe1, 0x2a, 0x90, 0x88,
+	0x5b, 0x19, 0x16, 0x3d, 0xdf, 0xfd, 0x14, 0xb7, 0x03, 0xc1, 0x2e, 0xfa, 0x89, 0x6e, 0xc3, 0x92,
+	0x47, 0x2f, 0x23, 0xd6, 0xe7, 0xdc, 0x1c, 0xf3, 0x7a, 0x81, 0x2e, 0x9c, 0x5a, 0x9f, 0x63, 0xea,
+	0x2a, 0xb6, 0x19, 0xb8, 0x5d, 0xec, 0x44, 0xae, 0xa2, 0x2b, 0x2f, 0xe9, 0x82, 0x66, 0x03, 0x8a,
+	0x43, 0x09, 0x86, 0x75, 0x58, 0x60, 0xaa, 0x73, 0x72, 0xc5, 0xc6, 0xcd, 0xb4, 0xbe, 0xdc, 0xbe,
+	0x42, 0x0c, 0x6d, 0xc1, 0xaa, 0x83, 0x2f, 0x83, 0x66, 0x0c, 0x8a, 0xfb, 0x65, 0x99, 0x2e, 0x9f,
+	0x0c, 0xe0, 0x3e, 0x83, 0xbb, 0x03, 0xb8, 0xd3, 0xb0, 0x45, 0xda, 0xbe, 0xe5, 0xb1, 0x64, 0x1b,
+	0xef, 0x81, 0x57, 0xd1, 0xd0, 0x81, 0x7b, 0x59, 0x90, 0x42, 0xdb, 0x87, 0xb0, 0x4c, 0xe2, 0x1b,
+	0xc2, 0x23, 0xc9, 0xc5, 0xa9, 0x55, 0xac, 0x02, 0x3a, 0xc2, 0x3d, 0x1c, 0xe0, 0x29, 0x22, 0xf0,
+	0x9f, 0x39, 0x28, 0xc5, 0x39, 0xc9, 0x72, 0x7c, 0x78, 0x34, 0x17, 0x37, 0xc9, 0x1e, 0x14, 0xbd,
+	0x90, 0x9c, 0x37, 0xdb, 0xae, 0x73, 0x66, 0x75, 0x44, 0x8a, 0xdd, 0x91, 0xc5, 0x25, 0x39, 0x3f,
+	0x64, 0x32, 0x3a, 0x78, 0x83, 0x6f, 0xb4, 0x03, 0x6b, 0x46, 0xbb, 0xdb, 0x34, 0xb1, 0x61, 0xf6,
+	0x2c, 0x07, 0x37, 0x09, 0x6e, 0xbb, 0x8e, 0x49, 0xca, 0xf3, 0xcc, 0xb8, 0xc8, 0x68, 0x77, 0x8f,
+	0xc4, 0xd6, 0x29, 0xdf, 0x41, 0x0d, 0x58, 0xf7, 0x71, 0x60, 0x58, 0x4e, 0xd3, 0x68, 0x77, 0xb1,
+	0xd9, 0x1c, 0xa4, 0xc4, 0xe2, 0x86, 0x52, 0x29, 0xe8, 0xdf, 0xe2, 0x9b, 0xfb, 0x74, 0x4f, 0x64,
+	0x01, 0x41, 0x3f, 0x01, 0x35, 0x8a, 0x74, 0x1f, 0x07, 0xd8, 0xa1, 0x3a, 0x36, 0xa3, 0xfa, 0x59,
+	0x2e, 0x30, 0xce, 0xb7, 0x52, 0x65, 0xe1, 0x48, 0x08, 0xe8, 0x65, 0x71, 0x58, 0x8f, 0xce, 0x46,
+	0x3b, 0xda, 0xbf, 0x14, 0x80, 0xa1, 0x66, 0xe8, 0x01, 0x2c, 0x33, 0x63, 0x60, 0xc7, 0xf4, 0x5c,
+	0xcb, 0x89, 0x32, 0xa4, 0x44, 0x17, 0x9f, 0x89, 0x35, 0xf4, 0xb1, 0xa4, 0x0a, 0x3e, 0x1a, 0x67,
+	0xb0, 0x71, 0x25, 0xf0, 0x55, 0x8b, 0x54, 0x1b, 0x56, 0x75, 0xdc, 0xc6, 0xd6, 0xc5, 0xc0, 0x5a,
+	0x68, 0x1d, 0x16, 0xa8, 0x4b, 0x2c, 0x33, 0x8a, 0x11, 0xa3, 0xdd, 0x3d, 0x36, 0xd1, 0xfb, 0xb0,
+	0x28, 0xcc, 0xc0, 0x6e, 0x99, 0xa2, 0xf8, 0x44, 0xf2, 0xda, 0x77, 0xe1, 0xc6, 0x73, 0x1c, 0xc4,
+	0x03, 0x2c, 0x0a, 0x47, 0x0d, 0x4a, 0xf1, 0xe8, 0x8e, 0xec, 0x15, 0x5f, 0xd3, 0xbe, 0x51, 0xe0,
+	0xd6, 0x8f, 0x3c, 0xd3, 0x08, 0xb0, 0xec, 0x86, 0x03, 0xc9, 0x0d, 0xc5, 0xc6, 0xbd, 0x34, 0xb7,
+	0xc4, 0xe1, 0xc4, 0x19, 0xf4, 0x14, 0x8a, 0x21, 0x03, 0x60, 0x0d, 0x51, 0xa8, 0x97, 0x6e, 0x13,
+	0xdf, 0xa3, 0x3d, 0xf3, 0x85, 0x41, 0xba, 0x3a, 0x70, 0x71, 0xfa, 0xad, 0x79, 0x50, 0xa6, 0x79,
+	0x2d, 0xad, 0x22, 0xaf, 0xa7, 0x56, 0xfe, 0x4e, 0x81, 0x5b, 0x12, 0x48, 0x51, 0x45, 0x8e, 0x64,
+	0x55, 0x64, 0xb2, 0x45, 0xae, 0x58, 0x65, 0x3e, 0x84, 0x5b, 0xbc, 0xca, 0x5c, 0xd5, 0xbb, 0xbf,
+	0x84, 0x9b, 0x2f, 0x5c, 0xd3, 0x3a, 0xeb, 0xc7, 0x0a, 0xc4, 0xf4, 0xc7, 0x47, 0xcb, 0x4f, 0x6e,
+	0xb6, 0xf2, 0xa3, 0x7d, 0xa5, 0x40, 0xf1, 0x24, 0xec, 0xf5, 0x66, 0x81, 0x7c, 0x0c, 0xc8, 0xc7,
+	0x41, 0xe8, 0x3b, 0x4d, 0xcb, 0xb6, 0xb1, 0x69, 0x19, 0x01, 0xee, 0xf5, 0x19, 0x72, 0x41, 0xbf,
+	0xce, 0x77, 0x8e, 0x87, 0x1b, 0x68, 0x13, 0x4a, 0xb6, 0x71, 0x39, 0x2c, 0x53, 0x79, 0xe6, 0xec,
+	0xa2, 0x6d, 0x5c, 0x46, 0xe5, 0x49, 0xfb, 0x19, 0x94, 0x38, 0x09, 0xe1, 0xc2, 0x1f, 0xc0, 0x75,
+	0x5f, 0x24, 0xe5, 0xf0, 0x1c, 0x77, 0xe3, 0x66, 0x5a, 0xb5, 0x91, 0xfc, 0xd5, 0xaf, 0xf9, 0xc9,
+	0x05, 0x42, 0x03, 0xa6, 0xcc, 0x8d, 0xbc, 0x3f, 0xac, 0xa7, 0xb3, 0xa8, 0x7c, 0x13, 0x16, 0x79,
+	0x49, 0x20, 0xe5, 0x39, 0xd6, 0x93, 0x16, 0x58, 0x4d, 0x20, 0x99, 0xe5, 0x3b, 0x9f, 0x55, 0xbe,
+	0xb5, 0x1f, 0x02, 0xda, 0x6f, 0x77, 0x1d, 0xf7, 0xe7, 0x3d, 0x6c, 0x76, 0xae, 0x4a, 0x22, 0x17,
+	0x27, 0xa1, 0xfd, 0x3a, 0x07, 0x6b, 0xa7, 0x81, 0x8f, 0x0d, 0xdb, 0x72, 0x3a, 0xb3, 0x7a, 0x33,
+	0xeb, 0x56, 0xf4, 0x2e, 0xdc, 0xb4, 0x99, 0xcd, 0x64, 0xda, 0xe5, 0x2b, 0xf3, 0xfa, 0x3a, 0xdf,
+	0x1e, 0xed, 0x4f, 0xef, 0xa4, 0xcf, 0x25, 0x6d, 0xb7, 0x96, 0x3c, 0xb7, 0xcf, 0xe1, 0xf6, 0xe0,
+	0x36, 0x61, 0x3a, 0x34, 0xc7, 0xf4, 0xc3, 0x32, 0x17, 0xd9, 0x4f, 0x9b, 0xb5, 0x03, 0xeb, 0x23,
+	0x26, 0x78, 0x4d, 0xb1, 0xf4, 0x09, 0xac, 0x1f, 0xfa, 0x98, 0x16, 0x63, 0xc7, 0xf0, 0xc8, 0xb9,
+	0x1b, 0x44, 0xc6, 0x96, 0x8d, 0x0c, 0xa3, 0x0e, 0xc8, 0x49, 0x0a, 0x40, 0x1f, 0x0a, 0xd1, 0x55,
+	0x33, 0x8c, 0x1d, 0x87, 0xb0, 0x8a, 0x2f, 0x3d, 0x8b, 0xb7, 0x61, 0x3e, 0xdd, 0xe7, 0x27, 0x4e,
+	0xf7, 0x2b, 0xc3, 0x23, 0x74, 0x51, 0xeb, 0xc1, 0x1a, 0xab, 0xa3, 0x02, 0xfe, 0x35, 0x97, 0xed,
+	0x3e, 0xac, 0x8f, 0xa0, 0x09, 0x17, 0xbd, 0x07, 0x4b, 0x24, 0x5a, 0x14, 0xae, 0x51, 0x25, 0xd5,
+	0x3a, 0xb2, 0xf7, 0x50, 0x78, 0xea, 0x2a, 0xfd, 0x36, 0xac, 0x8b, 0x2a, 0x3d, 0xe2, 0x34, 0x15,
+	0x0a, 0xd1, 0x6d, 0x42, 0xd5, 0xc1, 0x6f, 0xed, 0xf7, 0x0a, 0x14, 0x4f, 0x31, 0xee, 0xce, 0x92,
+	0x4d, 0x3b, 0x30, 0xc7, 0x7c, 0x91, 0x9b, 0xe4, 0x8b, 0x8f, 0xde, 0xd0, 0x99, 0x24, 0xba, 0x13,
+	0x63, 0xc0, 0x4c, 0xf6, 0xd1, 0x1b, 0x43, 0x0e, 0x07, 0x05, 0x58, 0x08, 0x0c, 0xbf, 0x83, 0x03,
+	0x6d, 0x05, 0x4a, 0x9c, 0x0c, 0x37, 0x5a, 0xe3, 0xbf, 0xab, 0x00, 0xa2, 0xe7, 0xb4, 0xb0, 0x8f,
+	0x7e, 0xab, 0x00, 0x12, 0x71, 0x19, 0xe7, 0x33, 0xa1, 0xeb, 0xa9, 0x13, 0xf6, 0xb5, 0x9d, 0x2f,
+	0xff, 0xfd, 0x9f, 0x3f, 0xe7, 0xaa, 0xea, 0xb7, 0xe9, 0x9f, 0xef, 0xbf, 0xa0, 0xf1, 0xb8, 0x27,
+	0x42, 0x81, 0xd4, 0xab, 0xf5, 0x44, 0xcb, 0xac, 0x57, 0xbf, 0xd8, 0x55, 0xaa, 0xe8, 0x4f, 0x0a,
+	0xfb, 0xb3, 0x2f, 0xc1, 0xa2, 0x92, 0x46, 0x91, 0xcf, 0x43, 0x13, 0xf9, 0xbc, 0xc3, 0xf8, 0xd4,
+	0xd1, 0x63, 0xc6, 0x27, 0x8e, 0x3f, 0x8e, 0x17, 0xfa, 0xab, 0x02, 0x28, 0x3d, 0x42, 0xa1, 0xb7,
+	0xd2, 0x68, 0x99, 0x83, 0xd6, 0x44, 0x6a, 0x7b, 0x8c, 0xda, 0x77, 0x1a, 0x8d, 0x14, 0xb5, 0xda,
+	0x34, 0x76, 0xfb, 0x46, 0xe1, 0x7f, 0x6c, 0x26, 0x86, 0x1a, 0x54, 0x4d, 0x83, 0x66, 0x0d, 0x5b,
+	0xea, 0x5b, 0x53, 0xc9, 0xf2, 0xf0, 0xd1, 0x6a, 0x8c, 0x6d, 0x05, 0x6d, 0x31, 0xb6, 0x82, 0x5b,
+	0x8c, 0xe3, 0x17, 0x49, 0x92, 0xe8, 0x8f, 0x4a, 0xf4, 0xe7, 0xd4, 0x24, 0x0b, 0x66, 0x8e, 0x43,
+	0xea, 0x8d, 0x54, 0x3a, 0x3c, 0xb3, 0xbd, 0xa0, 0x1f, 0x39, 0xb5, 0x3a, 0xa3, 0x53, 0xff, 0xa6,
+	0xc0, 0xf5, 0x54, 0x57, 0x97, 0x59, 0x2c, 0xab, 0xf5, 0x67, 0x12, 0xfa, 0x3e, 0x23, 0x74, 0xa4,
+	0x7d, 0x38, 0x13, 0xa1, 0x5d, 0x7b, 0x14, 0x87, 0xfa, 0xf5, 0x6b, 0x05, 0x8a, 0xb1, 0x86, 0x8f,
+	0x1e, 0xa6, 0xf9, 0xa5, 0xe7, 0x81, 0x4c, 0x66, 0x47, 0x8c, 0xd9, 0x07, 0xda, 0xfb, 0xb3, 0x31,
+	0x33, 0x86, 0x08, 0x94, 0xd3, 0x6f, 0x14, 0x98, 0xa3, 0x4d, 0x12, 0xdd, 0x95, 0x0d, 0x8a, 0x83,
+	0xf9, 0x41, 0x16, 0xf2, 0xf1, 0xde, 0x1a, 0x85, 0xbc, 0xd6, 0x98, 0x8d, 0x8d, 0x17, 0xf6, 0x7a,
+	0x94, 0x86, 0x09, 0xcb, 0x89, 0x9e, 0x8d, 0xb6, 0x24, 0x29, 0x26, 0x99, 0x6b, 0xd4, 0xed, 0x89,
+	0x72, 0x9c, 0x60, 0x45, 0xd9, 0x51, 0x68, 0xee, 0x5f, 0x1b, 0x9d, 0xb0, 0xd1, 0x9b, 0x59, 0x51,
+	0x92, 0x9a, 0xc2, 0x33, 0x5d, 0x71, 0xcc, 0x94, 0x3f, 0xd4, 0x3e, 0xb8, 0x4a, 0x90, 0x0c, 0x61,
+	0xa8, 0x21, 0xfe, 0xa0, 0xc0, 0x72, 0xa2, 0x35, 0xca, 0x2c, 0x21, 0xeb, 0xd4, 0x32, 0x4b, 0x48,
+	0x7b, 0xac, 0x56, 0x65, 0x6c, 0x1f, 0x22, 0x2d, 0x3b, 0xdf, 0x07, 0xe0, 0x5f, 0x29, 0xb0, 0x92,
+	0x9c, 0x71, 0x90, 0x04, 0x47, 0x3a, 0x05, 0xa9, 0x63, 0x1a, 0xb7, 0xf6, 0x88, 0x71, 0xd8, 0x52,
+	0x37, 0xe5, 0xcd, 0x24, 0xc2, 0x17, 0x05, 0xf1, 0x57, 0x0a, 0xac, 0x24, 0x9b, 0xb6, 0x8c, 0x85,
+	0xb4, 0xad, 0x67, 0xfa, 0xec, 0x31, 0x63, 0xb0, 0x5d, 0xe5, 0xed, 0x2c, 0x42, 0xcc, 0x62, 0xc1,
+	0xf2, 0x84, 0x36, 0x5d, 0x59, 0x9e, 0xc4, 0x26, 0x03, 0x69, 0x6b, 0x88, 0xf5, 0xea, 0xab, 0xe6,
+	0x09, 0xc1, 0xb8, 0xbb, 0xab, 0x54, 0x1b, 0x7f, 0x59, 0x80, 0x25, 0xf1, 0x76, 0x89, 0x7d, 0xf4,
+	0x29, 0x14, 0xb9, 0xe9, 0xf9, 0x6b, 0x74, 0xd6, 0x93, 0xa0, 0x9a, 0xb5, 0xa1, 0xbd, 0xc9, 0xd8,
+	0x3c, 0x50, 0xef, 0x49, 0xdd, 0xc0, 0x1f, 0x12, 0x85, 0x0f, 0xbe, 0x54, 0x60, 0x51, 0x20, 0xa3,
+	0x0d, 0xe9, 0x73, 0x47, 0xec, 0xd5, 0x56, 0xdd, 0x1c, 0x23, 0x21, 0x2c, 0xd1, 0x60, 0xd8, 0x8f,
+	0xb4, 0x6d, 0x86, 0xcd, 0xb0, 0xe4, 0xe0, 0xe2, 0x1d, 0x9a, 0x92, 0x70, 0xa1, 0x10, 0xbd, 0x23,
+	0xa3, 0x4d, 0xe9, 0x24, 0x11, 0x7f, 0xe1, 0xcb, 0xd6, 0x7b, 0x9b, 0x61, 0x6f, 0xa2, 0xfb, 0x13,
+	0xb0, 0x69, 0xe4, 0xc1, 0xf0, 0x31, 0x16, 0x3d, 0x90, 0xe7, 0x58, 0xe2, 0x55, 0x58, 0x7d, 0x38,
+	0x5e, 0x48, 0xa8, 0x9f, 0xa4, 0x20, 0xcb, 0x42, 0xf1, 0x8e, 0xfb, 0x0f, 0x05, 0x6e, 0xc8, 0x5f,
+	0x4b, 0x51, 0x7d, 0x0c, 0x92, 0x74, 0x2e, 0xd8, 0x99, 0xfe, 0x80, 0xa0, 0x99, 0x9c, 0xb2, 0xb2,
+	0x2d, 0x35, 0x32, 0x23, 0x04, 0x50, 0x8c, 0xbd, 0xb8, 0xca, 0x3a, 0x5d, 0xfa, 0x41, 0x36, 0x33,
+	0x55, 0x85, 0xa9, 0xaa, 0x93, 0xbc, 0x75, 0xd0, 0x87, 0xb5, 0xb6, 0x6b, 0xa7, 0xb0, 0x0e, 0x8a,
+	0xfc, 0x31, 0xee, 0x84, 0x5e, 0x7b, 0xa2, 0xfc, 0xf4, 0x5d, 0x21, 0xd0, 0x71, 0x7b, 0x86, 0xd3,
+	0xa9, 0xb9, 0x7e, 0xa7, 0xde, 0xc1, 0x0e, 0x03, 0xad, 0xf3, 0x2d, 0xc3, 0xb3, 0xc8, 0xf0, 0x9f,
+	0x55, 0x4f, 0xf9, 0xd7, 0xff, 0x14, 0xe5, 0xef, 0xb9, 0x1b, 0xcf, 0xf9, 0xd9, 0xc3, 0x9e, 0x1b,
+	0x9a, 0x34, 0xa6, 0x4f, 0xc3, 0x56, 0xed, 0xc7, 0x4f, 0x5a, 0x0b, 0xec, 0xf8, 0xdb, 0xff, 0x0f,
+	0x00, 0x00, 0xff, 0xff, 0x56, 0xc8, 0xa0, 0x10, 0xea, 0x1a, 0x00, 0x00,
 }
diff --git a/googleapis/spanner/admin/database/v1/spanner_database_admin.pb.go b/googleapis/spanner/admin/database/v1/spanner_database_admin.pb.go
index 8112d788..c9ef3bd7 100644
--- a/googleapis/spanner/admin/database/v1/spanner_database_admin.pb.go
+++ b/googleapis/spanner/admin/database/v1/spanner_database_admin.pb.go
@@ -294,7 +294,7 @@ type UpdateDatabaseDdlRequest struct {
 	// [longrunning.Operation][google.longrunning.Operation]: `<database>/operations/<operation_id>`.
 	//
 	// `operation_id` should be unique within the database, and must be
-	// a valid identifier: `[a-zA-Z][a-zA-Z0-9_]*`. Note that
+	// a valid identifier: `[a-z][a-z0-9_]*`. Note that
 	// automatically-generated operation IDs always begin with an
 	// underscore. If the named operation already exists,
 	// [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] returns
@@ -853,68 +853,69 @@ func init() {
 }
 
 var fileDescriptor0 = []byte{
-	// 999 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x96, 0xcf, 0x6f, 0x1b, 0x45,
-	0x14, 0xc7, 0x99, 0xa4, 0xa9, 0xe2, 0x17, 0x27, 0x75, 0x06, 0x1c, 0xb9, 0x5b, 0x5a, 0xcc, 0x82,
-	0x90, 0x6b, 0x89, 0x5d, 0xe2, 0x34, 0x24, 0x18, 0x05, 0x91, 0xc6, 0xae, 0x6b, 0x09, 0x5a, 0xcb,
-	0x76, 0x0f, 0x70, 0xb1, 0x26, 0xf6, 0xb0, 0x6c, 0xf1, 0xce, 0x2e, 0x3b, 0xe3, 0xaa, 0x2d, 0xea,
-	0x05, 0x89, 0x03, 0x07, 0x4e, 0x80, 0xc4, 0x0d, 0xc4, 0x81, 0x33, 0x37, 0x24, 0x8e, 0xfc, 0x0b,
-	0xfc, 0x0b, 0xfc, 0x21, 0x68, 0x66, 0x77, 0x9c, 0xf5, 0x3a, 0x89, 0xd7, 0x1c, 0xb8, 0x79, 0xdf,
-	0x8f, 0x79, 0x9f, 0xf7, 0xf6, 0x7d, 0xc7, 0x0b, 0x47, 0x8e, 0xef, 0x3b, 0x63, 0x6a, 0xf3, 0x80,
-	0x30, 0x46, 0x43, 0x9b, 0x8c, 0x3c, 0x97, 0xd9, 0x23, 0x22, 0xc8, 0x29, 0xe1, 0xd4, 0x7e, 0xb2,
-	0xab, 0x3d, 0x03, 0x6d, 0x1b, 0xa8, 0x10, 0x2b, 0x08, 0x7d, 0xe1, 0xe3, 0x72, 0x94, 0x6e, 0xc5,
-	0x41, 0x56, 0xe4, 0xd3, 0xa1, 0xd6, 0x93, 0x5d, 0xe3, 0xd5, 0xb8, 0x00, 0x09, 0x5c, 0x9b, 0x30,
-	0xe6, 0x0b, 0x22, 0x5c, 0x9f, 0xf1, 0x28, 0xdf, 0x28, 0x26, 0xbd, 0x13, 0xf1, 0x79, 0x6c, 0xbe,
-	0x15, 0x9b, 0x5d, 0xe2, 0x49, 0x04, 0x97, 0x78, 0x83, 0xc0, 0x1f, 0xbb, 0xc3, 0x67, 0xb1, 0xdf,
-	0x98, 0xf5, 0xcf, 0xf8, 0xde, 0x88, 0x7d, 0x63, 0x9f, 0x39, 0xe1, 0x84, 0x31, 0x97, 0x39, 0xb6,
-	0x1f, 0xd0, 0x70, 0xa6, 0xee, 0x8d, 0x38, 0x48, 0x3d, 0x9d, 0x4e, 0x3e, 0xb3, 0xa9, 0x17, 0x08,
-	0x7d, 0xc2, 0x6b, 0x69, 0xa7, 0x70, 0x3d, 0xca, 0x05, 0xf1, 0x82, 0x28, 0xc0, 0xfc, 0x19, 0xc1,
-	0x7a, 0x23, 0xee, 0x11, 0x63, 0xb8, 0xc2, 0x88, 0x47, 0x4b, 0xa8, 0x8c, 0x2a, 0xb9, 0xae, 0xfa,
-	0x8d, 0xef, 0xc1, 0x1a, 0x17, 0x44, 0xd0, 0xd2, 0x4a, 0x19, 0x55, 0xb6, 0x6a, 0xef, 0x58, 0x8b,
-	0xc6, 0x64, 0xe9, 0xe3, 0xac, 0x9e, 0xcc, 0xeb, 0x46, 0xe9, 0xe6, 0x01, 0xac, 0xa9, 0x67, 0x5c,
-	0x84, 0xed, 0x5e, 0xff, 0xb8, 0xdf, 0x1c, 0x3c, 0x7a, 0xd0, 0xeb, 0x34, 0x4f, 0xda, 0xf7, 0xda,
-	0xcd, 0x46, 0xe1, 0x25, 0x9c, 0x87, 0xf5, 0x93, 0x6e, 0xf3, 0xb8, 0xdf, 0x7e, 0xd0, 0x2a, 0x20,
-	0x9c, 0x83, 0xb5, 0x6e, 0xf3, 0xb8, 0xf1, 0x49, 0x61, 0xc5, 0x7c, 0x0c, 0xaf, 0x7c, 0xe4, 0x72,
-	0xa1, 0x4f, 0xe5, 0x5d, 0xfa, 0xe5, 0x84, 0x72, 0x81, 0x77, 0xe0, 0x6a, 0x40, 0x42, 0xca, 0x44,
-	0x8c, 0x1b, 0x3f, 0xe1, 0x1b, 0x90, 0x0b, 0x88, 0x43, 0x07, 0xdc, 0x7d, 0x4e, 0x4b, 0xab, 0x65,
-	0x54, 0x59, 0xeb, 0xae, 0x4b, 0x43, 0xcf, 0x7d, 0x4e, 0xf1, 0x4d, 0x00, 0xe5, 0x14, 0xfe, 0x17,
-	0x94, 0x95, 0xae, 0xa8, 0x44, 0x15, 0xde, 0x97, 0x06, 0xf3, 0x5b, 0x04, 0xc5, 0x54, 0x31, 0x1e,
-	0xf8, 0x8c, 0x53, 0x7c, 0x1f, 0x72, 0xba, 0x47, 0x5e, 0x42, 0xe5, 0xd5, 0xca, 0x46, 0xad, 0x9a,
-	0x7d, 0x14, 0xdd, 0xb3, 0x64, 0xfc, 0x16, 0x5c, 0x63, 0xf4, 0xa9, 0x18, 0x24, 0x38, 0x56, 0x14,
-	0xc7, 0xa6, 0x34, 0x77, 0xa6, 0x2c, 0xdf, 0x20, 0x28, 0x9e, 0x84, 0x94, 0x08, 0x3a, 0x3d, 0x65,
-	0x41, 0xe7, 0xb7, 0xa1, 0x30, 0x54, 0x09, 0x03, 0x35, 0x72, 0x4f, 0x46, 0x44, 0x47, 0x5f, 0x8b,
-	0xec, 0x3d, 0x6d, 0x96, 0xa1, 0xf4, 0xa9, 0x08, 0xc9, 0x59, 0x24, 0x2f, 0xad, 0x96, 0x57, 0x65,
-	0xa8, 0xb2, 0x4f, 0x23, 0xb9, 0x79, 0x07, 0x76, 0x66, 0x31, 0x3e, 0xa6, 0x82, 0xc8, 0x76, 0xb0,
-	0x01, 0xeb, 0xba, 0xad, 0x98, 0x64, 0xfa, 0x6c, 0x56, 0x00, 0xb7, 0xa8, 0x48, 0x93, 0x9f, 0xb3,
-	0x60, 0xe6, 0x33, 0x28, 0x3d, 0x0a, 0x46, 0x89, 0xf3, 0x1b, 0xa3, 0xb1, 0x8e, 0xbf, 0xa4, 0x02,
-	0xbe, 0x05, 0x90, 0x80, 0x5f, 0x51, 0xf0, 0x09, 0x0b, 0x7e, 0x1d, 0xf2, 0x53, 0xad, 0x0c, 0xdc,
-	0x91, 0x5a, 0x85, 0x5c, 0x77, 0x63, 0x6a, 0x6b, 0x8f, 0xcc, 0x5f, 0x10, 0x5c, 0x9f, 0xab, 0x9d,
-	0xa5, 0xbd, 0x85, 0xc5, 0x5b, 0xb0, 0x3d, 0xf4, 0x3d, 0xcf, 0x15, 0x83, 0xa9, 0xe0, 0xa2, 0x01,
-	0x6f, 0xd4, 0x0c, 0xbd, 0x36, 0x5a, 0x93, 0x56, 0x5f, 0x87, 0x74, 0x0b, 0x51, 0xd2, 0xd4, 0xc0,
-	0xcd, 0x5d, 0x78, 0xb9, 0x11, 0xfa, 0x41, 0x7a, 0x90, 0x97, 0x8d, 0x7e, 0x0f, 0x8a, 0x89, 0xd1,
-	0x67, 0x9b, 0xa6, 0x79, 0x08, 0x3b, 0xe9, 0xa4, 0x78, 0xf3, 0x67, 0x5b, 0x45, 0xe9, 0x56, 0x6b,
-	0x3f, 0xe6, 0x61, 0x53, 0xe7, 0x1d, 0x4b, 0x05, 0xe0, 0x3f, 0x10, 0x6c, 0xce, 0xa8, 0x08, 0xbf,
-	0xbb, 0x58, 0x2a, 0xe7, 0x69, 0xdc, 0x38, 0x58, 0x3a, 0x2f, 0x82, 0x36, 0xf7, 0xbf, 0xfe, 0xfb,
-	0x9f, 0xef, 0x57, 0x6c, 0xfc, 0xb6, 0xbc, 0x53, 0xbf, 0x8a, 0xf4, 0x71, 0x14, 0x84, 0xfe, 0x63,
-	0x3a, 0x14, 0xdc, 0xae, 0xda, 0x2e, 0xe3, 0x82, 0xb0, 0x21, 0xe5, 0x76, 0xf5, 0x85, 0x7d, 0xa6,
-	0xcd, 0x5f, 0x11, 0x6c, 0xcd, 0x2e, 0x3b, 0xce, 0x80, 0x70, 0xae, 0x4a, 0x8d, 0x9b, 0x3a, 0x31,
-	0x71, 0x7b, 0x5b, 0x0f, 0xf5, 0xf6, 0x99, 0x87, 0x8a, 0xb0, 0x66, 0x2e, 0x47, 0x58, 0x47, 0x55,
-	0xfc, 0x1b, 0x82, 0x8d, 0xc4, 0xbb, 0xc2, 0x77, 0x16, 0x13, 0xce, 0x4b, 0xd1, 0x58, 0xe2, 0xf6,
-	0x4a, 0x4d, 0x53, 0xaa, 0xf6, 0x02, 0xd2, 0x33, 0x50, 0xbb, 0xfa, 0x02, 0xff, 0x8e, 0x60, 0x7b,
-	0x4e, 0x5e, 0xb8, 0xbe, 0xb8, 0xf0, 0x45, 0xf7, 0xc1, 0xa2, 0x99, 0x7e, 0xa8, 0x38, 0xeb, 0xb5,
-	0x7d, 0xc5, 0xa9, 0x4f, 0xcc, 0xc2, 0x6a, 0x8f, 0x46, 0x63, 0x39, 0xdb, 0x9f, 0x10, 0xe4, 0x93,
-	0x7a, 0xc3, 0xfb, 0x19, 0xc6, 0x34, 0xaf, 0x4f, 0x63, 0x67, 0x4e, 0xe4, 0x4d, 0xf9, 0xaf, 0x6c,
-	0xbe, 0xa7, 0x08, 0xf7, 0xaa, 0xbb, 0x4b, 0x13, 0xe2, 0xbf, 0x10, 0x6c, 0xcd, 0x4a, 0x34, 0xcb,
-	0x6e, 0x9e, 0x7b, 0x13, 0x18, 0x87, 0xcb, 0x27, 0xc6, 0xc2, 0x3a, 0x52, 0x0d, 0x1c, 0xe0, 0xff,
-	0x36, 0x62, 0xfc, 0x03, 0x82, 0x7c, 0x8f, 0x8a, 0x36, 0xf1, 0x3a, 0xea, 0x43, 0x07, 0x9b, 0x9a,
-	0xc4, 0x25, 0x9e, 0x2c, 0x9b, 0x74, 0x6a, 0xda, 0x62, 0x2a, 0x26, 0xf2, 0x9a, 0x6d, 0x85, 0x72,
-	0x62, 0x7e, 0xa0, 0x50, 0x42, 0xca, 0xfd, 0x49, 0x38, 0xcc, 0x84, 0x52, 0xe7, 0x89, 0x2a, 0xf2,
-	0xb5, 0x4b, 0xac, 0xd6, 0x65, 0x58, 0xad, 0xff, 0x05, 0xcb, 0x49, 0x61, 0xfd, 0x89, 0x00, 0xf7,
-	0x29, 0x57, 0x46, 0x1a, 0x7a, 0x2e, 0xe7, 0xf2, 0xbb, 0x0f, 0x57, 0x52, 0x85, 0xe7, 0x43, 0x34,
-	0xe2, 0xed, 0x0c, 0x91, 0xf1, 0x8b, 0x7d, 0xa8, 0xb0, 0xdb, 0x66, 0x63, 0x79, 0x6c, 0x31, 0x77,
-	0x6a, 0x1d, 0x55, 0xef, 0x7e, 0x87, 0xe0, 0xcd, 0xa1, 0xef, 0x2d, 0xdc, 0xb4, 0xbb, 0xd7, 0x7b,
-	0x91, 0x6b, 0xe6, 0x4f, 0xa4, 0x23, 0x75, 0xd3, 0x41, 0x9f, 0xde, 0x8f, 0xd3, 0x1d, 0x7f, 0x4c,
-	0x98, 0x63, 0xf9, 0xa1, 0x63, 0x3b, 0x94, 0x29, 0x55, 0xd9, 0x91, 0x8b, 0x04, 0x2e, 0xbf, 0xf8,
-	0x9b, 0xff, 0x7d, 0xfd, 0xfb, 0xf4, 0xaa, 0x4a, 0xda, 0xfb, 0x37, 0x00, 0x00, 0xff, 0xff, 0x46,
-	0x3d, 0xa5, 0xd9, 0x27, 0x0c, 0x00, 0x00,
+	// 1020 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x96, 0x4d, 0x6f, 0x1b, 0x45,
+	0x18, 0xc7, 0x19, 0xa7, 0xa9, 0x92, 0x27, 0x2f, 0x4d, 0x06, 0x1c, 0xb9, 0x5b, 0x5a, 0xcc, 0x82,
+	0x2a, 0xd7, 0x12, 0xbb, 0xd8, 0x69, 0x48, 0x30, 0x0a, 0x22, 0xb5, 0x5d, 0xd7, 0x12, 0xb4, 0x96,
+	0xed, 0x22, 0xc1, 0xc5, 0x9a, 0xd8, 0xc3, 0xb2, 0xc5, 0xbb, 0xb3, 0xec, 0x8c, 0xab, 0xb6, 0xa8,
+	0x17, 0x24, 0x0e, 0x9c, 0x01, 0x89, 0x1b, 0x88, 0x03, 0x07, 0x4e, 0x9c, 0x40, 0xe2, 0xc8, 0x57,
+	0xe0, 0x2b, 0xf0, 0x41, 0xd0, 0xcc, 0xee, 0xd8, 0xeb, 0x75, 0x12, 0xdb, 0x1c, 0x7a, 0xf3, 0x3e,
+	0xaf, 0xbf, 0xe7, 0xd9, 0xf9, 0x8f, 0x17, 0x8e, 0x1d, 0xc6, 0x9c, 0x21, 0xb5, 0x79, 0x40, 0x7c,
+	0x9f, 0x86, 0x36, 0x19, 0x78, 0xae, 0x6f, 0x0f, 0x88, 0x20, 0xa7, 0x84, 0x53, 0xfb, 0x71, 0x49,
+	0x7b, 0x7a, 0xda, 0xd6, 0x53, 0x21, 0x56, 0x10, 0x32, 0xc1, 0x70, 0x3e, 0x4a, 0xb7, 0xe2, 0x20,
+	0x2b, 0xf2, 0xe9, 0x50, 0xeb, 0x71, 0xc9, 0x78, 0x35, 0x6e, 0x40, 0x02, 0xd7, 0x26, 0xbe, 0xcf,
+	0x04, 0x11, 0x2e, 0xf3, 0x79, 0x94, 0x6f, 0x64, 0x93, 0xde, 0x91, 0xf8, 0x3c, 0x36, 0xdf, 0x88,
+	0xcd, 0x2e, 0xf1, 0x24, 0x82, 0x4b, 0xbc, 0x5e, 0xc0, 0x86, 0x6e, 0xff, 0x69, 0xec, 0x37, 0xa6,
+	0xfd, 0x53, 0xbe, 0x37, 0x62, 0xdf, 0x90, 0xf9, 0x4e, 0x38, 0xf2, 0x7d, 0xd7, 0x77, 0x6c, 0x16,
+	0xd0, 0x70, 0xaa, 0xef, 0xb5, 0x38, 0x48, 0x3d, 0x9d, 0x8e, 0x3e, 0xb3, 0xa9, 0x17, 0x08, 0x5d,
+	0xe1, 0xb5, 0xb4, 0x53, 0xb8, 0x1e, 0xe5, 0x82, 0x78, 0x41, 0x14, 0x60, 0xfe, 0x84, 0x60, 0xad,
+	0x16, 0xcf, 0x88, 0x31, 0x5c, 0xf2, 0x89, 0x47, 0x73, 0x28, 0x8f, 0x0a, 0xeb, 0x6d, 0xf5, 0x1b,
+	0xdf, 0x85, 0x55, 0x2e, 0x88, 0xa0, 0xb9, 0x4c, 0x1e, 0x15, 0xb6, 0xcb, 0x6f, 0x5b, 0xf3, 0xd6,
+	0x64, 0xe9, 0x72, 0x56, 0x47, 0xe6, 0xb5, 0xa3, 0x74, 0xf3, 0x10, 0x56, 0xd5, 0x33, 0xce, 0xc2,
+	0x6e, 0xa7, 0x7b, 0xd2, 0xad, 0xf7, 0x1e, 0xde, 0xef, 0xb4, 0xea, 0xd5, 0xe6, 0xdd, 0x66, 0xbd,
+	0xb6, 0xf3, 0x12, 0xde, 0x84, 0xb5, 0x6a, 0xbb, 0x7e, 0xd2, 0x6d, 0xde, 0x6f, 0xec, 0x20, 0xbc,
+	0x0e, 0xab, 0xed, 0xfa, 0x49, 0xed, 0x93, 0x9d, 0x8c, 0xf9, 0x08, 0x5e, 0xf9, 0xd0, 0xe5, 0x42,
+	0x57, 0xe5, 0x6d, 0xfa, 0xe5, 0x88, 0x72, 0x81, 0xf7, 0xe0, 0x72, 0x40, 0x42, 0xea, 0x8b, 0x18,
+	0x37, 0x7e, 0xc2, 0xd7, 0x60, 0x3d, 0x20, 0x0e, 0xed, 0x71, 0xf7, 0x19, 0xcd, 0xad, 0xe4, 0x51,
+	0x61, 0xb5, 0xbd, 0x26, 0x0d, 0x1d, 0xf7, 0x19, 0xc5, 0xd7, 0x01, 0x94, 0x53, 0xb0, 0x2f, 0xa8,
+	0x9f, 0xbb, 0xa4, 0x12, 0x55, 0x78, 0x57, 0x1a, 0xcc, 0x6f, 0x11, 0x64, 0x53, 0xcd, 0x78, 0xc0,
+	0x7c, 0x4e, 0xf1, 0x3d, 0x58, 0xd7, 0x33, 0xf2, 0x1c, 0xca, 0xaf, 0x14, 0x36, 0xca, 0xc5, 0xc5,
+	0x57, 0xd1, 0x9e, 0x24, 0xe3, 0x9b, 0x70, 0xc5, 0xa7, 0x4f, 0x44, 0x2f, 0xc1, 0x91, 0x51, 0x1c,
+	0x5b, 0xd2, 0xdc, 0x1a, 0xb3, 0x7c, 0x83, 0x20, 0x5b, 0x0d, 0x29, 0x11, 0x74, 0x5c, 0x65, 0xce,
+	0xe4, 0xb7, 0x60, 0xa7, 0xaf, 0x12, 0x7a, 0x6a, 0xe5, 0x9e, 0x8c, 0x88, 0x4a, 0x5f, 0x89, 0xec,
+	0x1d, 0x6d, 0x96, 0xa1, 0xf4, 0x89, 0x08, 0xc9, 0x24, 0x92, 0xe7, 0x56, 0xf2, 0x2b, 0x32, 0x54,
+	0xd9, 0xc7, 0x91, 0xdc, 0xbc, 0x0d, 0x7b, 0xd3, 0x18, 0x1f, 0x51, 0x41, 0xe4, 0x38, 0xd8, 0x80,
+	0x35, 0x3d, 0x56, 0x4c, 0x32, 0x7e, 0x36, 0x0b, 0x80, 0x1b, 0x54, 0xa4, 0xc9, 0xcf, 0x38, 0x60,
+	0xe6, 0x53, 0xc8, 0x3d, 0x0c, 0x06, 0x89, 0xfa, 0xb5, 0xc1, 0x50, 0xc7, 0x5f, 0xd0, 0x01, 0xdf,
+	0x00, 0x48, 0xc0, 0x67, 0x14, 0x7c, 0xc2, 0x82, 0x5f, 0x87, 0xcd, 0xb1, 0x56, 0x7a, 0xee, 0x40,
+	0x1d, 0x85, 0xf5, 0xf6, 0xc6, 0xd8, 0xd6, 0x1c, 0x98, 0x3f, 0x23, 0xb8, 0x3a, 0xd3, 0x7b, 0x91,
+	0xf1, 0xe6, 0x36, 0x6f, 0xc0, 0x6e, 0x9f, 0x79, 0x9e, 0x2b, 0x7a, 0x63, 0xc1, 0x45, 0x0b, 0xde,
+	0x28, 0x1b, 0xfa, 0xd8, 0x68, 0x4d, 0x5a, 0x5d, 0x1d, 0xd2, 0xde, 0x89, 0x92, 0xc6, 0x06, 0x6e,
+	0x96, 0xe0, 0xe5, 0x5a, 0xc8, 0x82, 0xf4, 0x22, 0x2f, 0x5a, 0xfd, 0x3e, 0x64, 0x13, 0xab, 0x5f,
+	0x6c, 0x9b, 0xe6, 0x11, 0xec, 0xa5, 0x93, 0xe2, 0x93, 0x3f, 0x3d, 0x2a, 0x4a, 0x8f, 0x5a, 0xfe,
+	0x61, 0x13, 0xb6, 0x74, 0xde, 0x89, 0x54, 0x00, 0xfe, 0x13, 0xc1, 0xd6, 0x94, 0x8a, 0xf0, 0x3b,
+	0xf3, 0xa5, 0x72, 0x96, 0xc6, 0x8d, 0xc3, 0xa5, 0xf3, 0x22, 0x68, 0xf3, 0xe0, 0xeb, 0x7f, 0xfe,
+	0xfd, 0x2e, 0x63, 0xe3, 0xb7, 0xe4, 0x9d, 0xfa, 0x55, 0xa4, 0x8f, 0xe3, 0x20, 0x64, 0x8f, 0x68,
+	0x5f, 0x70, 0xbb, 0x68, 0xbb, 0x3e, 0x17, 0xc4, 0xef, 0x53, 0x6e, 0x17, 0x9f, 0xdb, 0x13, 0x6d,
+	0xfe, 0x82, 0x60, 0x7b, 0xfa, 0xb0, 0xe3, 0x05, 0x10, 0xce, 0x54, 0xa9, 0x71, 0x5d, 0x27, 0x26,
+	0x6e, 0x6f, 0xeb, 0x81, 0x3e, 0x7d, 0xe6, 0x91, 0x22, 0x2c, 0x9b, 0xcb, 0x11, 0x56, 0x50, 0x11,
+	0xff, 0x8a, 0x60, 0x23, 0xf1, 0xae, 0xf0, 0xed, 0xf9, 0x84, 0xb3, 0x52, 0x34, 0x96, 0xb8, 0xbd,
+	0x52, 0xdb, 0x94, 0xaa, 0x3d, 0x87, 0x74, 0x02, 0x6a, 0x17, 0x9f, 0xe3, 0xdf, 0x11, 0xec, 0xce,
+	0xc8, 0x0b, 0x57, 0xe6, 0x37, 0x3e, 0xef, 0x3e, 0x98, 0xb7, 0xd3, 0x0f, 0x14, 0x67, 0xa5, 0x7c,
+	0xa0, 0x38, 0x75, 0xc5, 0x45, 0x58, 0xed, 0xc1, 0x60, 0x28, 0x77, 0xfb, 0x23, 0x82, 0xcd, 0xa4,
+	0xde, 0xf0, 0xc1, 0x02, 0x6b, 0x9a, 0xd5, 0xa7, 0xb1, 0x37, 0x23, 0xf2, 0xba, 0xfc, 0x57, 0x36,
+	0xdf, 0x55, 0x84, 0xfb, 0xc5, 0xd2, 0xd2, 0x84, 0xf8, 0x6f, 0x04, 0xdb, 0xd3, 0x12, 0x5d, 0xe4,
+	0x6c, 0x9e, 0x79, 0x13, 0x18, 0x47, 0xcb, 0x27, 0xc6, 0xc2, 0x3a, 0x56, 0x03, 0x1c, 0xe2, 0xff,
+	0xb7, 0x62, 0xfc, 0x3d, 0x82, 0xcd, 0x0e, 0x15, 0x4d, 0xe2, 0xb5, 0xd4, 0x87, 0x0e, 0x36, 0x35,
+	0x89, 0x4b, 0x3c, 0xd9, 0x36, 0xe9, 0xd4, 0xb4, 0xd9, 0x54, 0x4c, 0xe4, 0x35, 0x9b, 0x0a, 0xa5,
+	0x6a, 0xbe, 0xaf, 0x50, 0x42, 0xca, 0xd9, 0x28, 0xec, 0x2f, 0x84, 0x52, 0xe1, 0x89, 0x2e, 0xf2,
+	0xb5, 0x4b, 0xac, 0xc6, 0x45, 0x58, 0x8d, 0x17, 0x82, 0xe5, 0xa4, 0xb0, 0xfe, 0x42, 0x80, 0xbb,
+	0x94, 0x2b, 0x23, 0x0d, 0x3d, 0x97, 0x73, 0xf9, 0xdd, 0x87, 0x0b, 0xa9, 0xc6, 0xb3, 0x21, 0x1a,
+	0xf1, 0xd6, 0x02, 0x91, 0xf1, 0x8b, 0x7d, 0xa0, 0xb0, 0x9b, 0x66, 0x6d, 0x79, 0x6c, 0x31, 0x53,
+	0xb5, 0x82, 0x8a, 0x77, 0xfe, 0x40, 0xf0, 0x66, 0x9f, 0x79, 0x73, 0x4f, 0xda, 0x9d, 0xab, 0x9d,
+	0xc8, 0x35, 0xf5, 0x27, 0xd2, 0x92, 0xba, 0x69, 0xa1, 0x4f, 0xef, 0xc5, 0xe9, 0x0e, 0x1b, 0x12,
+	0xdf, 0xb1, 0x58, 0xe8, 0xd8, 0x0e, 0xf5, 0x95, 0xaa, 0xec, 0xc8, 0x45, 0x02, 0x97, 0x9f, 0xff,
+	0xcd, 0xff, 0x9e, 0xfe, 0xfd, 0x5b, 0xe6, 0x66, 0x23, 0x2a, 0x55, 0x1d, 0xb2, 0xd1, 0xc0, 0x8a,
+	0x9b, 0x5a, 0xaa, 0xdb, 0xe4, 0x9b, 0xf5, 0xe3, 0xd2, 0xe9, 0x65, 0x55, 0x7d, 0xff, 0xbf, 0x00,
+	0x00, 0x00, 0xff, 0xff, 0xdc, 0xc4, 0xc8, 0x83, 0x50, 0x0c, 0x00, 0x00,
 }
diff --git a/googleapis/spanner/admin/instance/v1/spanner_instance_admin.pb.go b/googleapis/spanner/admin/instance/v1/spanner_instance_admin.pb.go
index 15f812d1..0bcb338d 100644
--- a/googleapis/spanner/admin/instance/v1/spanner_instance_admin.pb.go
+++ b/googleapis/spanner/admin/instance/v1/spanner_instance_admin.pb.go
@@ -1203,79 +1203,80 @@ func init() {
 }
 
 var fileDescriptor0 = []byte{
-	// 1176 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x57, 0xcf, 0x6f, 0x1b, 0xc5,
-	0x17, 0xff, 0x4e, 0x52, 0xa7, 0xf1, 0x73, 0x9a, 0xa6, 0xf3, 0xad, 0x23, 0xe3, 0x50, 0xea, 0x6e,
-	0x51, 0x71, 0x0c, 0xf2, 0x52, 0x43, 0x9b, 0x36, 0x25, 0x87, 0xd4, 0x71, 0x52, 0x4b, 0x6d, 0x88,
-	0xd6, 0xee, 0x01, 0x38, 0x58, 0x13, 0x7b, 0x62, 0x96, 0xec, 0xce, 0x2e, 0x3b, 0xe3, 0x88, 0x14,
-	0xf5, 0x52, 0x71, 0x00, 0x09, 0xc4, 0x01, 0x09, 0xa1, 0x5e, 0x90, 0xb8, 0x22, 0x71, 0xe0, 0x5f,
-	0xe0, 0x4f, 0xe0, 0x5f, 0x40, 0xfc, 0x1d, 0x68, 0x66, 0x77, 0x5c, 0xef, 0xda, 0x8e, 0xed, 0x8a,
-	0x9e, 0xb8, 0xed, 0xbc, 0x9f, 0x9f, 0xf9, 0xbc, 0xb7, 0xef, 0xed, 0xc2, 0x56, 0xd7, 0xf3, 0xba,
-	0x0e, 0x35, 0xb9, 0x4f, 0x18, 0xa3, 0x81, 0x49, 0x3a, 0xae, 0xcd, 0x4c, 0x9b, 0x71, 0x41, 0x58,
-	0x9b, 0x9a, 0x27, 0x37, 0xb5, 0xa6, 0xa5, 0x65, 0x2d, 0x65, 0x52, 0xf6, 0x03, 0x4f, 0x78, 0xb8,
-	0x10, 0xba, 0x97, 0x23, 0xa3, 0x72, 0xa8, 0xd3, 0xa6, 0xe5, 0x93, 0x9b, 0xf9, 0xd7, 0xa3, 0x04,
-	0xc4, 0xb7, 0x4d, 0xc2, 0x98, 0x27, 0x88, 0xb0, 0x3d, 0xc6, 0x43, 0xff, 0x7c, 0x76, 0x50, 0xdb,
-	0x13, 0x9f, 0x46, 0xe2, 0x37, 0x22, 0xb1, 0x4d, 0x5c, 0x09, 0xc1, 0x26, 0x6e, 0xcb, 0xf7, 0x1c,
-	0xbb, 0x7d, 0x1a, 0xe9, 0xf3, 0x71, 0x7d, 0x4c, 0x77, 0x3d, 0xd2, 0x39, 0x1e, 0xeb, 0x06, 0x3d,
-	0xc6, 0x6c, 0xd6, 0x35, 0x3d, 0x9f, 0x06, 0xb1, 0xbc, 0x6b, 0x91, 0x91, 0x3a, 0x1d, 0xf6, 0x8e,
-	0x4c, 0xea, 0xfa, 0x42, 0x47, 0x28, 0x24, 0x95, 0x47, 0x36, 0x75, 0x3a, 0x2d, 0x97, 0xf0, 0xe3,
-	0xc8, 0xe2, 0x6a, 0xd2, 0x42, 0xd8, 0x2e, 0xe5, 0x82, 0xb8, 0x7e, 0x68, 0x60, 0xec, 0xc1, 0x72,
-	0x3d, 0x22, 0xa1, 0xea, 0xb1, 0x23, 0xbb, 0x8b, 0x31, 0x9c, 0x63, 0xc4, 0xa5, 0x39, 0x54, 0x40,
-	0xc5, 0xb4, 0xa5, 0x9e, 0xf1, 0x35, 0x58, 0xea, 0xd8, 0xdc, 0x77, 0xc8, 0x69, 0x4b, 0xe9, 0xe6,
-	0x94, 0x2e, 0x13, 0xc9, 0xf6, 0x89, 0x4b, 0x8d, 0xaf, 0xe6, 0x61, 0x51, 0x47, 0x1a, 0x19, 0x63,
-	0x15, 0x16, 0xda, 0x2a, 0x43, 0xe4, 0x1d, 0x9d, 0x86, 0x62, 0xcf, 0x0f, 0xc5, 0xc6, 0x57, 0x00,
-	0x98, 0xd7, 0xa1, 0xad, 0xb6, 0xd7, 0x63, 0x22, 0x97, 0x2a, 0xa0, 0x62, 0xca, 0x4a, 0x4b, 0x49,
-	0x55, 0x0a, 0xf0, 0x2e, 0xa4, 0xb8, 0x20, 0x82, 0xe6, 0x16, 0x0a, 0xa8, 0xb8, 0x5c, 0x79, 0xb7,
-	0x3c, 0xa9, 0xd6, 0x65, 0x0d, 0xb4, 0xdc, 0x90, 0x7e, 0x56, 0xe8, 0x8e, 0xf7, 0x61, 0xc1, 0x21,
-	0x87, 0xd4, 0xe1, 0xb9, 0xf3, 0x85, 0xf9, 0x62, 0xa6, 0x72, 0x7b, 0x86, 0x40, 0x0f, 0x95, 0x63,
-	0x8d, 0x89, 0xe0, 0xd4, 0x8a, 0xa2, 0xe4, 0xef, 0x42, 0x66, 0x40, 0x8c, 0x57, 0x60, 0xfe, 0x98,
-	0x9e, 0x46, 0x9c, 0xc8, 0x47, 0x7c, 0x19, 0x52, 0x27, 0xc4, 0xe9, 0x69, 0x3e, 0xc3, 0xc3, 0xe6,
-	0xdc, 0x1d, 0x64, 0x6c, 0x40, 0x4a, 0x41, 0xc3, 0x59, 0xb8, 0xd4, 0x68, 0x6e, 0x37, 0x6b, 0xad,
-	0xc7, 0xfb, 0x8d, 0x83, 0x5a, 0xb5, 0xbe, 0x5b, 0xaf, 0xed, 0xac, 0xfc, 0x0f, 0x2f, 0xc1, 0x62,
-	0xd5, 0xaa, 0x6d, 0x37, 0xeb, 0xfb, 0x7b, 0x2b, 0x08, 0xa7, 0x21, 0x65, 0xd5, 0xb6, 0x77, 0x3e,
-	0x5a, 0x99, 0x33, 0x7c, 0xc8, 0x3f, 0xb4, 0xb9, 0x88, 0xd7, 0x94, 0x5b, 0xf4, 0xf3, 0x1e, 0xe5,
-	0x42, 0xd6, 0xc0, 0x27, 0x01, 0x65, 0x22, 0x42, 0x11, 0x9d, 0xf0, 0x1a, 0xa4, 0x7d, 0xd2, 0xa5,
-	0x2d, 0x6e, 0x3f, 0x09, 0xc1, 0xa4, 0xac, 0x45, 0x29, 0x68, 0xd8, 0x4f, 0x14, 0xfb, 0x4a, 0x29,
-	0xbc, 0x63, 0xca, 0xa2, 0xf2, 0x28, 0xf3, 0xa6, 0x14, 0x18, 0xbf, 0x20, 0x58, 0x1b, 0x99, 0x92,
-	0xfb, 0x1e, 0xe3, 0x14, 0x7f, 0x02, 0x2b, 0xfd, 0x37, 0x32, 0x2c, 0x39, 0xcf, 0x21, 0xc5, 0xef,
-	0x0c, 0x85, 0x0a, 0x83, 0x5a, 0x17, 0xed, 0x78, 0x12, 0x7c, 0x03, 0x2e, 0x32, 0xfa, 0x85, 0x68,
-	0x0d, 0x00, 0x0c, 0xb9, 0xbc, 0x20, 0xc5, 0x07, 0x7d, 0x90, 0x65, 0xc8, 0xed, 0xd1, 0x04, 0x44,
-	0x4d, 0xca, 0x88, 0x66, 0x35, 0x8a, 0x80, 0x07, 0xec, 0xcf, 0xb2, 0xfc, 0x09, 0x41, 0xb6, 0x1a,
-	0x50, 0x22, 0x68, 0xd2, 0x7a, 0x1c, 0xd9, 0x57, 0x21, 0xd3, 0x27, 0xc4, 0xee, 0x44, 0x78, 0x41,
-	0x8b, 0xea, 0x1d, 0xbc, 0x0b, 0x8b, 0xfa, 0xa4, 0xe8, 0xce, 0x54, 0x4a, 0xd3, 0x33, 0x65, 0xf5,
-	0x7d, 0x8d, 0x67, 0x08, 0x2e, 0x0f, 0x56, 0xe6, 0x55, 0xb6, 0x81, 0x8c, 0x79, 0x64, 0x3b, 0x82,
-	0x06, 0xb9, 0x73, 0x61, 0xcc, 0xf0, 0x64, 0x7c, 0x83, 0x20, 0x9b, 0x00, 0x11, 0x35, 0xc6, 0x03,
-	0x48, 0x6b, 0xa8, 0xba, 0x23, 0x66, 0xb9, 0xe7, 0x0b, 0xe7, 0xa9, 0xbb, 0xe0, 0x39, 0x82, 0xec,
-	0x63, 0xbf, 0x33, 0xa2, 0x56, 0x83, 0x94, 0xa3, 0x97, 0xa7, 0x1c, 0xdf, 0x05, 0x78, 0x31, 0x83,
-	0x15, 0x88, 0x4c, 0x25, 0xaf, 0x23, 0xe9, 0x21, 0x5c, 0xde, 0x95, 0x26, 0x8f, 0x08, 0x3f, 0xb6,
-	0xd2, 0x47, 0xfa, 0xd1, 0x78, 0x1b, 0xb2, 0x3b, 0xd4, 0xa1, 0xc3, 0xd8, 0x46, 0x75, 0xdd, 0xf7,
-	0x73, 0xb0, 0x1a, 0xef, 0xba, 0x47, 0x54, 0x90, 0x0e, 0x11, 0xe4, 0xdf, 0xbc, 0x0a, 0x17, 0x24,
-	0x10, 0x2d, 0xb9, 0x32, 0xc6, 0x5e, 0xa5, 0xa9, 0xf7, 0x89, 0x95, 0x56, 0xd6, 0xf2, 0x8c, 0xef,
-	0x41, 0xa6, 0x2d, 0x63, 0x38, 0xa1, 0xef, 0xfc, 0x44, 0x5f, 0x08, 0xcd, 0x95, 0xf3, 0x2d, 0x58,
-	0xa4, 0xac, 0x13, 0x7a, 0x9e, 0x9b, 0xe8, 0x79, 0x9e, 0xb2, 0x8e, 0x3c, 0x29, 0x46, 0xe2, 0xb5,
-	0xfd, 0x8f, 0x33, 0x52, 0xf9, 0x7b, 0x09, 0x2e, 0xe8, 0x5b, 0x6c, 0xcb, 0xfb, 0xe1, 0x3f, 0x10,
-	0xfc, 0x7f, 0xc4, 0xa8, 0xc6, 0x1f, 0x4c, 0xa6, 0x63, 0xfc, 0x52, 0xc9, 0x6f, 0xbd, 0xa4, 0x77,
-	0x38, 0x06, 0x0c, 0xf3, 0xd9, 0x9f, 0x7f, 0xfd, 0x30, 0xb7, 0x8e, 0xdf, 0x92, 0x1f, 0x48, 0x5f,
-	0x86, 0x93, 0x68, 0xcb, 0x0f, 0xbc, 0xcf, 0x68, 0x5b, 0x70, 0xb3, 0xf4, 0xd4, 0x4c, 0xce, 0xfc,
-	0xdf, 0x11, 0x5c, 0x1a, 0x1a, 0xe6, 0x78, 0x73, 0x32, 0x8a, 0x71, 0x1b, 0x20, 0x3f, 0xf3, 0x22,
-	0x4a, 0x80, 0x96, 0xaf, 0xe4, 0x00, 0xe4, 0x24, 0x62, 0xb3, 0xf4, 0x14, 0xff, 0x8a, 0xe0, 0x42,
-	0x6c, 0x0c, 0xe2, 0xdb, 0xb3, 0xd1, 0xd6, 0xa7, 0x7b, 0x63, 0x66, 0xbf, 0x88, 0xe8, 0x75, 0x85,
-	0xf9, 0x3a, 0xbe, 0x36, 0x89, 0x68, 0x8e, 0x9f, 0x23, 0xc8, 0x0c, 0xb0, 0x85, 0xdf, 0x9f, 0x89,
-	0x5c, 0x8d, 0x74, 0x86, 0xb7, 0x2c, 0x01, 0x6e, 0x1c, 0xa1, 0x8a, 0xca, 0x1f, 0x11, 0x2c, 0xc7,
-	0x67, 0x1f, 0x9e, 0x82, 0x93, 0x91, 0x3b, 0x3a, 0x7f, 0x45, 0x3b, 0x0e, 0x7c, 0x84, 0x97, 0x3f,
-	0xd4, 0x1f, 0xe1, 0xc6, 0x3b, 0x0a, 0xd5, 0x0d, 0x63, 0x32, 0x65, 0x9b, 0xa8, 0x84, 0x7f, 0x46,
-	0xb0, 0x1c, 0x1f, 0x41, 0xd3, 0x00, 0x1b, 0xb9, 0x90, 0x26, 0x01, 0xbb, 0xa5, 0x80, 0x99, 0x95,
-	0x92, 0x02, 0xd6, 0x0f, 0x77, 0x16, 0x6f, 0x12, 0xe1, 0xb7, 0x08, 0x96, 0xe3, 0x4b, 0x66, 0x1a,
-	0x84, 0x23, 0xd7, 0x52, 0x7e, 0x75, 0x68, 0x06, 0xd5, 0xe4, 0xaf, 0x89, 0xae, 0x64, 0x69, 0x8a,
-	0x4a, 0x7e, 0x8d, 0x60, 0xa9, 0x41, 0x45, 0x9d, 0xb8, 0x07, 0xea, 0xc7, 0x08, 0x1b, 0x3a, 0xa6,
-	0x4d, 0x5c, 0x99, 0x79, 0x50, 0xa9, 0xf3, 0x66, 0x13, 0x36, 0xa1, 0xd6, 0xd8, 0x52, 0x69, 0x37,
-	0x8c, 0x8a, 0x4a, 0x1b, 0x50, 0xee, 0xf5, 0x82, 0xf6, 0x78, 0x32, 0xf8, 0x40, 0x64, 0xc9, 0x8c,
-	0x84, 0xb2, 0x77, 0x16, 0x94, 0xbd, 0x57, 0x06, 0xa5, 0x9b, 0x80, 0xf2, 0x1b, 0x02, 0xdc, 0xa4,
-	0x5c, 0x09, 0x69, 0xe0, 0xda, 0x9c, 0xcb, 0xff, 0x41, 0x5c, 0x4c, 0x24, 0x1b, 0x36, 0xd1, 0xb0,
-	0xd6, 0xa7, 0xb0, 0x8c, 0x66, 0x42, 0x55, 0x41, 0xdd, 0x32, 0xee, 0x4c, 0x07, 0x55, 0x0c, 0x45,
-	0xda, 0x44, 0xa5, 0xfb, 0xdf, 0x21, 0x78, 0xb3, 0xed, 0xb9, 0x13, 0x1b, 0xe9, 0xfe, 0x6b, 0x8d,
-	0x50, 0x15, 0xdb, 0x4a, 0x07, 0xb2, 0x7d, 0x0e, 0xd0, 0xc7, 0x0f, 0x22, 0xf7, 0xae, 0xe7, 0x10,
-	0xd6, 0x2d, 0x7b, 0x41, 0xd7, 0xec, 0x52, 0xa6, 0x9a, 0xcb, 0x0c, 0x55, 0xc4, 0xb7, 0xf9, 0xf8,
-	0xff, 0xff, 0x7b, 0xfa, 0xf9, 0x70, 0x41, 0x39, 0xbd, 0xf7, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff,
-	0x22, 0x58, 0xb5, 0xfa, 0x33, 0x10, 0x00, 0x00,
+	// 1198 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x57, 0xcf, 0x8f, 0xdb, 0xc4,
+	0x17, 0xff, 0xce, 0x6e, 0xb3, 0xdd, 0xbc, 0x6c, 0xb7, 0xdb, 0xf9, 0x36, 0x55, 0x48, 0x29, 0x4d,
+	0x5d, 0x54, 0xd2, 0x80, 0x6c, 0x1a, 0xe8, 0xaf, 0x2d, 0x7b, 0xd8, 0xa6, 0xd9, 0x34, 0x52, 0xbb,
+	0xac, 0x9c, 0x14, 0x09, 0x38, 0x44, 0xd3, 0x64, 0x36, 0x98, 0xb5, 0xc7, 0xc6, 0x33, 0xa9, 0xd8,
+	0xa2, 0x5e, 0x2a, 0x0e, 0x20, 0x21, 0x71, 0x40, 0x42, 0xa8, 0x17, 0x24, 0x8e, 0x20, 0x71, 0xe0,
+	0xc0, 0x3f, 0xc0, 0x9f, 0xc0, 0xbf, 0x80, 0xf8, 0x3b, 0xd0, 0x8c, 0x3d, 0x69, 0xec, 0x24, 0x9b,
+	0xa4, 0xa2, 0x27, 0x6e, 0x9e, 0xf7, 0xf3, 0xe3, 0xcf, 0x7b, 0x7e, 0xcf, 0x03, 0x5b, 0x7d, 0xdf,
+	0xef, 0xbb, 0xd4, 0xe2, 0x01, 0x61, 0x8c, 0x86, 0x16, 0xe9, 0x79, 0x0e, 0xb3, 0x1c, 0xc6, 0x05,
+	0x61, 0x5d, 0x6a, 0x3d, 0xba, 0xa2, 0x35, 0x1d, 0x2d, 0xeb, 0x28, 0x13, 0x33, 0x08, 0x7d, 0xe1,
+	0xe3, 0x52, 0xe4, 0x6e, 0xc6, 0x46, 0x66, 0xa4, 0xd3, 0xa6, 0xe6, 0xa3, 0x2b, 0xc5, 0x57, 0xe3,
+	0x04, 0x24, 0x70, 0x2c, 0xc2, 0x98, 0x2f, 0x88, 0x70, 0x7c, 0xc6, 0x23, 0xff, 0x62, 0x7e, 0x54,
+	0x3b, 0x10, 0x9f, 0xc4, 0xe2, 0xd7, 0x62, 0xb1, 0x43, 0x3c, 0x09, 0xc1, 0x21, 0x5e, 0x27, 0xf0,
+	0x5d, 0xa7, 0x7b, 0x18, 0xeb, 0x8b, 0x49, 0x7d, 0x42, 0x77, 0x31, 0xd6, 0xb9, 0x3e, 0xeb, 0x87,
+	0x03, 0xc6, 0x1c, 0xd6, 0xb7, 0xfc, 0x80, 0x86, 0x89, 0xbc, 0x67, 0x63, 0x23, 0x75, 0x7a, 0x38,
+	0xd8, 0xb7, 0xa8, 0x17, 0x08, 0x1d, 0xa1, 0x94, 0x56, 0xee, 0x3b, 0xd4, 0xed, 0x75, 0x3c, 0xc2,
+	0x0f, 0x62, 0x8b, 0xf3, 0x69, 0x0b, 0xe1, 0x78, 0x94, 0x0b, 0xe2, 0x05, 0x91, 0x81, 0xd1, 0x80,
+	0xf5, 0x66, 0x4c, 0x42, 0xcd, 0x67, 0xfb, 0x4e, 0x1f, 0x63, 0x38, 0xc6, 0x88, 0x47, 0x0b, 0xa8,
+	0x84, 0xca, 0x59, 0x5b, 0x3d, 0xe3, 0x0b, 0xb0, 0xd6, 0x73, 0x78, 0xe0, 0x92, 0xc3, 0x8e, 0xd2,
+	0x2d, 0x29, 0x5d, 0x2e, 0x96, 0xed, 0x12, 0x8f, 0x1a, 0x5f, 0x2e, 0xc3, 0xaa, 0x8e, 0x34, 0x31,
+	0xc6, 0x19, 0x58, 0xe9, 0xaa, 0x0c, 0xb1, 0x77, 0x7c, 0x1a, 0x8b, 0xbd, 0x3c, 0x16, 0x1b, 0x9f,
+	0x03, 0x60, 0x7e, 0x8f, 0x76, 0xba, 0xfe, 0x80, 0x89, 0x42, 0xa6, 0x84, 0xca, 0x19, 0x3b, 0x2b,
+	0x25, 0x35, 0x29, 0xc0, 0x3b, 0x90, 0xe1, 0x82, 0x08, 0x5a, 0x58, 0x29, 0xa1, 0xf2, 0x7a, 0xf5,
+	0x6d, 0x73, 0x56, 0xad, 0x4d, 0x0d, 0xd4, 0x6c, 0x49, 0x3f, 0x3b, 0x72, 0xc7, 0xbb, 0xb0, 0xe2,
+	0x92, 0x87, 0xd4, 0xe5, 0x85, 0xe3, 0xa5, 0xe5, 0x72, 0xae, 0x7a, 0x6d, 0x81, 0x40, 0xf7, 0x94,
+	0x63, 0x9d, 0x89, 0xf0, 0xd0, 0x8e, 0xa3, 0x14, 0x6f, 0x42, 0x6e, 0x44, 0x8c, 0x37, 0x60, 0xf9,
+	0x80, 0x1e, 0xc6, 0x9c, 0xc8, 0x47, 0x7c, 0x1a, 0x32, 0x8f, 0x88, 0x3b, 0xd0, 0x7c, 0x46, 0x87,
+	0xcd, 0xa5, 0x1b, 0xc8, 0xb8, 0x0e, 0x19, 0x05, 0x0d, 0xe7, 0xe1, 0x54, 0xab, 0xbd, 0xdd, 0xae,
+	0x77, 0x1e, 0xec, 0xb6, 0xf6, 0xea, 0xb5, 0xe6, 0x4e, 0xb3, 0x7e, 0x67, 0xe3, 0x7f, 0x78, 0x0d,
+	0x56, 0x6b, 0x76, 0x7d, 0xbb, 0xdd, 0xdc, 0x6d, 0x6c, 0x20, 0x9c, 0x85, 0x8c, 0x5d, 0xdf, 0xbe,
+	0xf3, 0xe1, 0xc6, 0x92, 0x11, 0x40, 0xf1, 0x9e, 0xc3, 0x45, 0xb2, 0xa6, 0xdc, 0xa6, 0x9f, 0x0d,
+	0x28, 0x17, 0xb2, 0x06, 0x01, 0x09, 0x29, 0x13, 0x31, 0x8a, 0xf8, 0x84, 0xcf, 0x42, 0x36, 0x20,
+	0x7d, 0xda, 0xe1, 0xce, 0xe3, 0x08, 0x4c, 0xc6, 0x5e, 0x95, 0x82, 0x96, 0xf3, 0x58, 0xb1, 0xaf,
+	0x94, 0xc2, 0x3f, 0xa0, 0x2c, 0x2e, 0x8f, 0x32, 0x6f, 0x4b, 0x81, 0xf1, 0x13, 0x82, 0xb3, 0x13,
+	0x53, 0xf2, 0xc0, 0x67, 0x9c, 0xe2, 0x8f, 0x61, 0x63, 0xf8, 0x45, 0x46, 0x25, 0xe7, 0x05, 0xa4,
+	0xf8, 0x5d, 0xa0, 0x50, 0x51, 0x50, 0xfb, 0xa4, 0x93, 0x4c, 0x82, 0x2f, 0xc1, 0x49, 0x46, 0x3f,
+	0x17, 0x9d, 0x11, 0x80, 0x11, 0x97, 0x27, 0xa4, 0x78, 0x6f, 0x08, 0xd2, 0x84, 0x42, 0x83, 0xa6,
+	0x20, 0x6a, 0x52, 0x26, 0x34, 0xab, 0x51, 0x06, 0x3c, 0x62, 0x7f, 0x94, 0xe5, 0x0f, 0x08, 0xf2,
+	0xb5, 0x90, 0x12, 0x41, 0xd3, 0xd6, 0xd3, 0xc8, 0x3e, 0x0f, 0xb9, 0x21, 0x21, 0x4e, 0x2f, 0xc6,
+	0x0b, 0x5a, 0xd4, 0xec, 0xe1, 0x1d, 0x58, 0xd5, 0x27, 0x45, 0x77, 0xae, 0x5a, 0x99, 0x9f, 0x29,
+	0x7b, 0xe8, 0x6b, 0x3c, 0x45, 0x70, 0x7a, 0xb4, 0x32, 0x2f, 0xb3, 0x0d, 0x64, 0xcc, 0x7d, 0xc7,
+	0x15, 0x34, 0x2c, 0x1c, 0x8b, 0x62, 0x46, 0x27, 0xe3, 0x6b, 0x04, 0xf9, 0x14, 0x88, 0xb8, 0x31,
+	0xee, 0x42, 0x56, 0x43, 0xd5, 0x1d, 0xb1, 0xc8, 0x7b, 0x3e, 0x77, 0x9e, 0xbb, 0x0b, 0x9e, 0x21,
+	0xc8, 0x3f, 0x08, 0x7a, 0x13, 0x6a, 0x35, 0x4a, 0x39, 0x7a, 0x71, 0xca, 0xf1, 0x4d, 0x80, 0xe7,
+	0x33, 0x58, 0x81, 0xc8, 0x55, 0x8b, 0x3a, 0x92, 0x1e, 0xc2, 0xe6, 0x8e, 0x34, 0xb9, 0x4f, 0xf8,
+	0x81, 0x9d, 0xdd, 0xd7, 0x8f, 0xc6, 0x9b, 0x90, 0xbf, 0x43, 0x5d, 0x3a, 0x8e, 0x6d, 0x52, 0xd7,
+	0x7d, 0xbb, 0x04, 0x67, 0x92, 0x5d, 0x77, 0x9f, 0x0a, 0xd2, 0x23, 0x82, 0xfc, 0x9b, 0xaf, 0xc2,
+	0x05, 0x09, 0x45, 0x47, 0xae, 0x8c, 0xa9, 0xaf, 0xd2, 0xd6, 0xfb, 0xc4, 0xce, 0x2a, 0x6b, 0x79,
+	0xc6, 0xb7, 0x20, 0xd7, 0x95, 0x31, 0xdc, 0xc8, 0x77, 0x79, 0xa6, 0x2f, 0x44, 0xe6, 0xca, 0xf9,
+	0x2a, 0xac, 0x52, 0xd6, 0x8b, 0x3c, 0x8f, 0xcd, 0xf4, 0x3c, 0x4e, 0x59, 0x4f, 0x9e, 0x14, 0x23,
+	0xc9, 0xda, 0xfe, 0xc7, 0x19, 0xa9, 0xfe, 0xbd, 0x06, 0x27, 0xf4, 0x5b, 0x6c, 0xcb, 0xf7, 0xc3,
+	0x7f, 0x20, 0xf8, 0xff, 0x84, 0x51, 0x8d, 0xdf, 0x9b, 0x4d, 0xc7, 0xf4, 0xa5, 0x52, 0xdc, 0x7a,
+	0x41, 0xef, 0x68, 0x0c, 0x18, 0xd6, 0xd3, 0x3f, 0xff, 0xfa, 0x6e, 0xe9, 0x32, 0x7e, 0x43, 0xfe,
+	0x20, 0x7d, 0x11, 0x4d, 0xa2, 0xad, 0x20, 0xf4, 0x3f, 0xa5, 0x5d, 0xc1, 0xad, 0xca, 0x13, 0x2b,
+	0x3d, 0xf3, 0x7f, 0x43, 0x70, 0x6a, 0x6c, 0x98, 0xe3, 0xcd, 0xd9, 0x28, 0xa6, 0x6d, 0x80, 0xe2,
+	0xc2, 0x8b, 0x28, 0x05, 0x5a, 0x7e, 0x92, 0x23, 0x90, 0xd3, 0x88, 0xad, 0xca, 0x13, 0xfc, 0x0b,
+	0x82, 0x13, 0x89, 0x31, 0x88, 0xaf, 0x2d, 0x46, 0xdb, 0x90, 0xee, 0xeb, 0x0b, 0xfb, 0xc5, 0x44,
+	0x5f, 0x56, 0x98, 0x2f, 0xe2, 0x0b, 0xb3, 0x88, 0xe6, 0xf8, 0x19, 0x82, 0xdc, 0x08, 0x5b, 0xf8,
+	0xdd, 0x85, 0xc8, 0xd5, 0x48, 0x17, 0xf8, 0xca, 0x52, 0xe0, 0xa6, 0x11, 0xaa, 0xa8, 0xfc, 0x1e,
+	0xc1, 0x7a, 0x72, 0xf6, 0xe1, 0x39, 0x38, 0x99, 0xb8, 0xa3, 0x8b, 0xe7, 0xb4, 0xe3, 0xc8, 0x4f,
+	0xb8, 0xf9, 0xbe, 0xfe, 0x09, 0x37, 0xde, 0x52, 0xa8, 0x2e, 0x19, 0xb3, 0x29, 0xdb, 0x44, 0x15,
+	0xfc, 0x23, 0x82, 0xf5, 0xe4, 0x08, 0x9a, 0x07, 0xd8, 0xc4, 0x85, 0x34, 0x0b, 0xd8, 0x55, 0x05,
+	0xcc, 0xaa, 0x56, 0x14, 0xb0, 0x61, 0xb8, 0xa3, 0x78, 0x93, 0x08, 0xbf, 0x41, 0xb0, 0x9e, 0x5c,
+	0x32, 0xf3, 0x20, 0x9c, 0xb8, 0x96, 0x8a, 0x67, 0xc6, 0x66, 0x50, 0x5d, 0x5e, 0x4d, 0x74, 0x25,
+	0x2b, 0x73, 0x54, 0xf2, 0x2b, 0x04, 0x6b, 0x2d, 0x2a, 0x9a, 0xc4, 0xdb, 0x53, 0x17, 0x23, 0x6c,
+	0xe8, 0x98, 0x0e, 0xf1, 0x64, 0xe6, 0x51, 0xa5, 0xce, 0x9b, 0x4f, 0xd9, 0x44, 0x5a, 0x63, 0x4b,
+	0xa5, 0xbd, 0x6e, 0x54, 0x55, 0xda, 0x90, 0x72, 0x7f, 0x10, 0x76, 0xa7, 0x93, 0xc1, 0x47, 0x22,
+	0x4b, 0x66, 0x24, 0x94, 0xc6, 0x51, 0x50, 0x1a, 0x2f, 0x0d, 0x4a, 0x3f, 0x05, 0xe5, 0x57, 0x04,
+	0xb8, 0x4d, 0xb9, 0x12, 0xd2, 0xd0, 0x73, 0x38, 0x97, 0xf7, 0x41, 0x5c, 0x4e, 0x25, 0x1b, 0x37,
+	0xd1, 0xb0, 0x2e, 0xcf, 0x61, 0x19, 0xcf, 0x84, 0x9a, 0x82, 0xba, 0x65, 0xdc, 0x98, 0x0f, 0xaa,
+	0x18, 0x8b, 0xb4, 0x89, 0x2a, 0xb7, 0x7f, 0x47, 0xf0, 0x7a, 0xd7, 0xf7, 0x66, 0x36, 0xd2, 0xed,
+	0x57, 0x5a, 0x91, 0x2a, 0xb1, 0x95, 0xf6, 0x64, 0xfb, 0xec, 0xa1, 0x8f, 0xee, 0xc6, 0xee, 0x7d,
+	0xdf, 0x25, 0xac, 0x6f, 0xfa, 0x61, 0xdf, 0xea, 0x53, 0xa6, 0x9a, 0xcb, 0x8a, 0x54, 0x24, 0x70,
+	0xf8, 0xf4, 0xfb, 0xff, 0x2d, 0xfd, 0xfc, 0xf3, 0xd2, 0xa5, 0x46, 0x14, 0xaa, 0xe6, 0xfa, 0x83,
+	0x9e, 0x19, 0x27, 0x35, 0x55, 0xb6, 0xe7, 0x37, 0xb6, 0x0f, 0xae, 0x3c, 0x5c, 0x51, 0xd1, 0xdf,
+	0xf9, 0x27, 0x00, 0x00, 0xff, 0xff, 0xbf, 0x53, 0x3b, 0xf8, 0x5c, 0x10, 0x00, 0x00,
 }
diff --git a/googleapis/spanner/v1/keys.pb.go b/googleapis/spanner/v1/keys.pb.go
index 8544b317..e822f025 100644
--- a/googleapis/spanner/v1/keys.pb.go
+++ b/googleapis/spanner/v1/keys.pb.go
@@ -412,27 +412,28 @@ func init() {
 func init() { proto.RegisterFile("google/spanner/v1/keys.proto", fileDescriptor0) }
 
 var fileDescriptor0 = []byte{
-	// 338 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xc1, 0x4b, 0xc3, 0x30,
-	0x14, 0xc6, 0xed, 0x36, 0xe6, 0x96, 0x8d, 0x31, 0x0b, 0x42, 0x99, 0x1e, 0xc6, 0x4e, 0x9e, 0x12,
-	0xe6, 0x0e, 0x0a, 0x3b, 0x08, 0xf5, 0x22, 0x4c, 0x70, 0x54, 0xf0, 0xe0, 0xc1, 0x91, 0xad, 0xcf,
-	0x50, 0x56, 0x5f, 0x42, 0x93, 0x0d, 0x7a, 0xf2, 0x5f, 0xf1, 0x4f, 0x95, 0xa4, 0xa9, 0x08, 0x03,
-	0xdd, 0x2d, 0x8f, 0xef, 0xfb, 0xbd, 0xef, 0xf5, 0xbd, 0x92, 0x4b, 0x21, 0xa5, 0xc8, 0x81, 0x69,
-	0xc5, 0x11, 0xa1, 0x60, 0xfb, 0x29, 0xdb, 0x42, 0xa9, 0xa9, 0x2a, 0xa4, 0x91, 0xe1, 0x59, 0xa5,
-	0x52, 0xaf, 0xd2, 0xfd, 0x74, 0x54, 0x03, 0x5c, 0x65, 0x8c, 0x23, 0x4a, 0xc3, 0x4d, 0x26, 0xd1,
-	0x03, 0x3f, 0xaa, 0xab, 0xd6, 0xbb, 0x77, 0xa6, 0x4d, 0xb1, 0xdb, 0x98, 0x4a, 0x9d, 0x7c, 0x35,
-	0x48, 0x67, 0x01, 0x65, 0xc2, 0x51, 0x40, 0x78, 0x47, 0xfa, 0xda, 0xf0, 0xc2, 0xac, 0x36, 0xb9,
-	0xd4, 0x90, 0x46, 0xc1, 0x38, 0xb8, 0xea, 0x5d, 0x8f, 0xa8, 0x8f, 0xac, 0x3b, 0xd0, 0xc7, 0x4c,
-	0x9b, 0x17, 0x9e, 0xef, 0xe0, 0xe1, 0x24, 0xe9, 0x39, 0xe2, 0xde, 0x01, 0xe1, 0x9c, 0x90, 0xaa,
-	0x81, 0x54, 0x80, 0x51, 0xe3, 0x08, 0xbc, 0xeb, 0xfc, 0x4f, 0x0a, 0xd0, 0xc2, 0x80, 0x69, 0x9d,
-	0xdd, 0xfc, 0x17, 0x0e, 0x92, 0x2e, 0x60, 0xea, 0x93, 0x6f, 0x48, 0xc7, 0xc2, 0x2e, 0xb7, 0x75,
-	0x04, 0x7a, 0x0a, 0x98, 0xda, 0xd4, 0x78, 0x48, 0x06, 0xd5, 0xc8, 0x5b, 0x28, 0x57, 0xa6, 0x54,
-	0x10, 0x0f, 0x48, 0xdf, 0xb6, 0xaa, 0xeb, 0xc9, 0x27, 0x69, 0x2f, 0xa0, 0x7c, 0x06, 0x13, 0x52,
-	0xd2, 0xb2, 0x97, 0x88, 0x82, 0x71, 0xf3, 0xef, 0x80, 0xc4, 0xf9, 0xc2, 0x19, 0x69, 0x17, 0x76,
-	0xb1, 0x3a, 0x6a, 0x38, 0xe2, 0x82, 0x1e, 0x1c, 0x8f, 0xd6, 0xcb, 0x4f, 0xbc, 0x35, 0x1c, 0x92,
-	0x26, 0xcf, 0x73, 0xf7, 0xfd, 0x9d, 0xc4, 0x3e, 0xe3, 0x37, 0x72, 0xbe, 0x91, 0x1f, 0x87, 0x6c,
-	0xdc, 0x5d, 0x40, 0xa9, 0x97, 0x36, 0x7d, 0x19, 0xbc, 0xde, 0x7a, 0x5d, 0xc8, 0x9c, 0xa3, 0xa0,
-	0xb2, 0x10, 0x4c, 0x00, 0xba, 0xd9, 0x58, 0x25, 0x71, 0x95, 0xe9, 0x5f, 0x7f, 0xd5, 0xdc, 0x3f,
-	0xd7, 0x6d, 0x67, 0x9a, 0x7d, 0x07, 0x00, 0x00, 0xff, 0xff, 0x83, 0x58, 0x82, 0xb7, 0x79, 0x02,
-	0x00, 0x00,
+	// 356 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x41, 0x6b, 0xf2, 0x30,
+	0x18, 0xc7, 0xdf, 0x56, 0xf1, 0xd5, 0x28, 0xe2, 0x5b, 0x78, 0x59, 0x71, 0x3b, 0x88, 0xa7, 0x9d,
+	0x52, 0x9c, 0x87, 0x0d, 0x3c, 0x0c, 0xea, 0x61, 0x03, 0x07, 0x93, 0x0a, 0x1e, 0x76, 0x91, 0x68,
+	0x9f, 0x85, 0x62, 0x96, 0x84, 0x26, 0x95, 0xf5, 0xb4, 0xaf, 0xb2, 0xf3, 0x3e, 0xe5, 0x48, 0x9a,
+	0x8e, 0x81, 0xb0, 0x79, 0x4b, 0xf8, 0x3f, 0xbf, 0xe7, 0x97, 0x3e, 0x4f, 0xd1, 0x05, 0x15, 0x82,
+	0x32, 0x88, 0x94, 0x24, 0x9c, 0x43, 0x1e, 0x1d, 0x26, 0xd1, 0x1e, 0x4a, 0x85, 0x65, 0x2e, 0xb4,
+	0x08, 0xfe, 0x55, 0x29, 0x76, 0x29, 0x3e, 0x4c, 0x86, 0x35, 0x40, 0x64, 0x16, 0x11, 0xce, 0x85,
+	0x26, 0x3a, 0x13, 0xdc, 0x01, 0x5f, 0xa9, 0xbd, 0x6d, 0x8b, 0xe7, 0x48, 0xe9, 0xbc, 0xd8, 0xe9,
+	0x2a, 0x1d, 0xbf, 0xfb, 0xa8, 0xbd, 0x80, 0x32, 0x21, 0x9c, 0x42, 0x70, 0x8b, 0x7a, 0x4a, 0x93,
+	0x5c, 0x6f, 0x76, 0x4c, 0x28, 0x48, 0x43, 0x6f, 0xe4, 0x5d, 0x76, 0xaf, 0x86, 0xd8, 0x29, 0xeb,
+	0x0e, 0xf8, 0x21, 0x53, 0x7a, 0x4d, 0x58, 0x01, 0xf7, 0x7f, 0x92, 0xae, 0x25, 0xe6, 0x16, 0x08,
+	0x66, 0x08, 0x55, 0x0d, 0x84, 0x04, 0x1e, 0xfa, 0x27, 0xe0, 0x1d, 0x5b, 0xff, 0x28, 0x81, 0x1b,
+	0x18, 0x78, 0x5a, 0xbb, 0x1b, 0xbf, 0xc2, 0x5e, 0xd2, 0x01, 0x9e, 0x3a, 0xf3, 0x35, 0x6a, 0x1b,
+	0xd8, 0x7a, 0x9b, 0x27, 0xa0, 0x7f, 0x81, 0xa7, 0xc6, 0x1a, 0x0f, 0x50, 0xbf, 0x7a, 0xf2, 0x1e,
+	0xca, 0x8d, 0x2e, 0x25, 0xc4, 0x7d, 0xd4, 0x33, 0xad, 0xea, 0xfb, 0xf8, 0x0d, 0xb5, 0x16, 0x50,
+	0xae, 0x40, 0x07, 0x18, 0x35, 0xcd, 0x26, 0x42, 0x6f, 0xd4, 0xf8, 0x59, 0x90, 0xd8, 0xba, 0x60,
+	0x8a, 0x5a, 0xb9, 0x19, 0xac, 0x0a, 0x7d, 0x4b, 0x9c, 0xe3, 0xa3, 0xe5, 0xe1, 0x7a, 0xf8, 0x89,
+	0x2b, 0x0d, 0x06, 0xa8, 0x41, 0x18, 0xb3, 0xdf, 0xdf, 0x4e, 0xcc, 0x31, 0x7e, 0x45, 0xff, 0x77,
+	0xe2, 0xe5, 0x98, 0x8d, 0x3b, 0x0b, 0x28, 0xd5, 0xd2, 0xd8, 0x97, 0xde, 0xd3, 0x8d, 0xcb, 0xa9,
+	0x60, 0x84, 0x53, 0x2c, 0x72, 0x1a, 0x51, 0xe0, 0xf6, 0x6d, 0x51, 0x15, 0x11, 0x99, 0xa9, 0x6f,
+	0x7f, 0xd5, 0xcc, 0x1d, 0x3f, 0xfc, 0xb3, 0xbb, 0x0a, 0x9d, 0x33, 0x51, 0xa4, 0x78, 0xe5, 0x04,
+	0xeb, 0xc9, 0xb6, 0x65, 0xf1, 0xe9, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0xcc, 0x78, 0x80, 0x47,
+	0x93, 0x02, 0x00, 0x00,
 }
diff --git a/googleapis/spanner/v1/mutation.pb.go b/googleapis/spanner/v1/mutation.pb.go
index 0147934c..bda605f0 100644
--- a/googleapis/spanner/v1/mutation.pb.go
+++ b/googleapis/spanner/v1/mutation.pb.go
@@ -318,29 +318,31 @@ func init() {
 func init() { proto.RegisterFile("google/spanner/v1/mutation.proto", fileDescriptor1) }
 
 var fileDescriptor1 = []byte{
-	// 382 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0xd1, 0x4b, 0xeb, 0x30,
-	0x14, 0xc6, 0xef, 0xd6, 0xad, 0xbb, 0xcb, 0xb8, 0x17, 0x2d, 0x0a, 0xb5, 0xf8, 0x50, 0xf7, 0xb4,
-	0xa7, 0x94, 0xd5, 0x17, 0x61, 0xfa, 0x32, 0x7c, 0x10, 0x74, 0x38, 0x2a, 0x2a, 0xf8, 0x32, 0xd2,
-	0xee, 0x58, 0x4a, 0xbb, 0xa4, 0x24, 0xe9, 0x60, 0xff, 0x8c, 0x7f, 0xab, 0x34, 0x49, 0x65, 0x38,
-	0x95, 0xf9, 0xd4, 0x1e, 0xce, 0xf7, 0xfb, 0xce, 0x77, 0x92, 0x20, 0x3f, 0x65, 0x2c, 0x2d, 0x20,
-	0x10, 0x25, 0xa1, 0x14, 0x78, 0xb0, 0x1e, 0x07, 0xab, 0x4a, 0x12, 0x99, 0x31, 0x8a, 0x4b, 0xce,
-	0x24, 0x73, 0x0e, 0xb5, 0x02, 0x1b, 0x05, 0x5e, 0x8f, 0xbd, 0x53, 0x03, 0x91, 0x32, 0x0b, 0x08,
-	0xa5, 0x4c, 0xeb, 0x85, 0x06, 0x3e, 0xba, 0xaa, 0x8a, 0xab, 0xd7, 0x40, 0x48, 0x5e, 0x25, 0xf2,
-	0x53, 0x77, 0x6b, 0x60, 0x0e, 0x1b, 0xc3, 0x0e, 0xdf, 0x3a, 0xe8, 0xef, 0xcc, 0xcc, 0x77, 0x26,
-	0xc8, 0xce, 0xa8, 0x00, 0x2e, 0xdd, 0x96, 0xdf, 0x1a, 0x0d, 0xc2, 0x33, 0xbc, 0x13, 0x05, 0x37,
-	0x62, 0xfc, 0xcc, 0x33, 0x09, 0x37, 0x7f, 0x22, 0x83, 0xd4, 0x70, 0x55, 0x2e, 0x89, 0x04, 0xb7,
-	0xfd, 0x0b, 0x58, 0x23, 0xce, 0x0c, 0x1d, 0x68, 0x9b, 0x05, 0xe3, 0x0b, 0x63, 0x63, 0xed, 0x6f,
-	0xf3, 0x5f, 0xc3, 0xf7, 0xfc, 0x51, 0xdb, 0x5d, 0xa1, 0x1e, 0x87, 0xb2, 0x20, 0x09, 0xb8, 0x9d,
-	0xfd, 0x5d, 0x1a, 0xc6, 0xb9, 0x44, 0xf6, 0x12, 0x0a, 0x90, 0xe0, 0x76, 0x15, 0x3d, 0xfc, 0x89,
-	0xbe, 0x56, 0xca, 0x7a, 0x17, 0xcd, 0x78, 0x39, 0xea, 0x2a, 0x47, 0xe7, 0x08, 0x75, 0x25, 0x89,
-	0x0b, 0x50, 0xa7, 0xd9, 0x8f, 0x74, 0xe1, 0xb8, 0xa8, 0x97, 0xb0, 0xa2, 0x5a, 0x51, 0xe1, 0xb6,
-	0x7d, 0x6b, 0xd4, 0x8f, 0x9a, 0xd2, 0x09, 0x91, 0xbd, 0x26, 0x45, 0x05, 0xc2, 0xb5, 0x7c, 0x6b,
-	0x34, 0x08, 0xbd, 0x66, 0x6c, 0x73, 0xb1, 0xf8, 0x2e, 0x13, 0xf2, 0xa9, 0x96, 0x44, 0x46, 0xe9,
-	0x45, 0xc8, 0xd6, 0x01, 0xbe, 0x99, 0x16, 0xa2, 0x5e, 0x0e, 0x9b, 0x85, 0x00, 0x69, 0xae, 0xe5,
-	0xe4, 0x8b, 0x5d, 0x6e, 0x61, 0xf3, 0x00, 0x32, 0xb2, 0x73, 0xf5, 0x9d, 0x0e, 0x50, 0x9f, 0x95,
-	0xc0, 0xd5, 0x7a, 0xd3, 0x18, 0x1d, 0x27, 0x6c, 0xb5, 0x0b, 0x4d, 0xff, 0x35, 0x27, 0x30, 0xaf,
-	0xd3, 0xcd, 0x5b, 0x2f, 0x17, 0x46, 0x93, 0xb2, 0x82, 0xd0, 0x14, 0x33, 0x9e, 0x06, 0x29, 0x50,
-	0x95, 0x3d, 0xd0, 0x2d, 0x52, 0x66, 0x62, 0xeb, 0x1d, 0x4e, 0xcc, 0x6f, 0x6c, 0x2b, 0xd1, 0xf9,
-	0x7b, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfc, 0x7c, 0xdc, 0xc0, 0x1c, 0x03, 0x00, 0x00,
+	// 402 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0x41, 0x6b, 0xdb, 0x30,
+	0x14, 0xc7, 0x97, 0x38, 0x71, 0x16, 0x85, 0x8d, 0xcd, 0x6c, 0xcc, 0x33, 0x3b, 0x78, 0x39, 0xe5,
+	0x24, 0x13, 0xef, 0x32, 0xc8, 0x76, 0xc9, 0x06, 0x1b, 0x6c, 0xa1, 0xc1, 0xa1, 0x29, 0xf4, 0x12,
+	0x14, 0xe7, 0xd5, 0x18, 0x2b, 0x92, 0x91, 0xe4, 0x40, 0xa0, 0x9f, 0xa5, 0x1f, 0xa0, 0x9f, 0xb2,
+	0x58, 0x92, 0x4b, 0x68, 0xda, 0x92, 0x9e, 0xec, 0xc7, 0xfb, 0xff, 0xfe, 0xff, 0xf7, 0x24, 0xa1,
+	0x30, 0xe3, 0x3c, 0xa3, 0x10, 0xc9, 0x92, 0x30, 0x06, 0x22, 0xda, 0x8d, 0xa3, 0x6d, 0xa5, 0x88,
+	0xca, 0x39, 0xc3, 0xa5, 0xe0, 0x8a, 0x7b, 0xef, 0x8d, 0x02, 0x5b, 0x05, 0xde, 0x8d, 0x83, 0x2f,
+	0x16, 0x22, 0x65, 0x1e, 0x11, 0xc6, 0xb8, 0xd1, 0x4b, 0x03, 0xdc, 0x77, 0x75, 0xb5, 0xae, 0xae,
+	0x22, 0xa9, 0x44, 0x95, 0xaa, 0x07, 0xdd, 0x83, 0xc0, 0x02, 0xf6, 0x96, 0x1d, 0xde, 0x74, 0xd0,
+	0xeb, 0x99, 0xcd, 0xf7, 0x26, 0xc8, 0xcd, 0x99, 0x04, 0xa1, 0xfc, 0x56, 0xd8, 0x1a, 0x0d, 0xe2,
+	0xaf, 0xf8, 0x68, 0x14, 0xdc, 0x88, 0xf1, 0x85, 0xc8, 0x15, 0xfc, 0x7d, 0x95, 0x58, 0xa4, 0x86,
+	0xab, 0x72, 0x43, 0x14, 0xf8, 0xed, 0x17, 0xc0, 0x06, 0xf1, 0x66, 0xe8, 0x9d, 0xb1, 0x59, 0x71,
+	0xb1, 0xb2, 0x36, 0xce, 0xe9, 0x36, 0x6f, 0x0d, 0x7c, 0x26, 0xce, 0x8d, 0xdd, 0x4f, 0xd4, 0x13,
+	0x50, 0x52, 0x92, 0x82, 0xdf, 0x39, 0xdd, 0xa5, 0x61, 0xbc, 0x1f, 0xc8, 0xdd, 0x00, 0x05, 0x05,
+	0x7e, 0x57, 0xd3, 0xc3, 0xe7, 0xe8, 0xdf, 0x5a, 0x59, 0xef, 0x62, 0x98, 0xa0, 0x40, 0x5d, 0xed,
+	0xe8, 0x7d, 0x40, 0x5d, 0x45, 0xd6, 0x14, 0xf4, 0x69, 0xf6, 0x13, 0x53, 0x78, 0x3e, 0xea, 0xa5,
+	0x9c, 0x56, 0x5b, 0x26, 0xfd, 0x76, 0xe8, 0x8c, 0xfa, 0x49, 0x53, 0x7a, 0x31, 0x72, 0x77, 0x84,
+	0x56, 0x20, 0x7d, 0x27, 0x74, 0x46, 0x83, 0x38, 0x68, 0x62, 0x9b, 0x8b, 0xc5, 0xff, 0x73, 0xa9,
+	0x96, 0xb5, 0x24, 0xb1, 0xca, 0x20, 0x41, 0xae, 0x19, 0xe0, 0x89, 0xb4, 0x18, 0xf5, 0x0a, 0xd8,
+	0xaf, 0x24, 0x28, 0x7b, 0x2d, 0x9f, 0x1f, 0xd9, 0xe5, 0x1f, 0xec, 0x17, 0xa0, 0x12, 0xb7, 0xd0,
+	0xdf, 0xe9, 0x00, 0xf5, 0x79, 0x09, 0x42, 0xaf, 0x37, 0xbd, 0x46, 0x1f, 0x53, 0xbe, 0x3d, 0x86,
+	0xa6, 0x6f, 0x9a, 0x13, 0x98, 0xd7, 0xd3, 0xcd, 0x5b, 0x97, 0xdf, 0xad, 0x26, 0xe3, 0x94, 0xb0,
+	0x0c, 0x73, 0x91, 0x45, 0x19, 0x30, 0x3d, 0x7b, 0x64, 0x5a, 0xa4, 0xcc, 0xe5, 0xc1, 0x3b, 0x9c,
+	0xd8, 0xdf, 0xdb, 0xf6, 0xa7, 0x3f, 0x06, 0xfd, 0x45, 0x79, 0xb5, 0xc1, 0x0b, 0x1b, 0xb2, 0x1c,
+	0xaf, 0x5d, 0x8d, 0x7f, 0xbb, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x94, 0x52, 0x99, 0xf3, 0x36, 0x03,
+	0x00, 0x00,
 }
diff --git a/googleapis/spanner/v1/query_plan.pb.go b/googleapis/spanner/v1/query_plan.pb.go
index 98e7f832..18a7ea32 100644
--- a/googleapis/spanner/v1/query_plan.pb.go
+++ b/googleapis/spanner/v1/query_plan.pb.go
@@ -245,41 +245,42 @@ func init() {
 func init() { proto.RegisterFile("google/spanner/v1/query_plan.proto", fileDescriptor2) }
 
 var fileDescriptor2 = []byte{
-	// 570 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0xdd, 0x6e, 0xd3, 0x4c,
-	0x10, 0xfd, 0x9c, 0x26, 0xf9, 0x9a, 0x09, 0x4a, 0xc3, 0xb6, 0x08, 0x2b, 0x20, 0x61, 0x22, 0x21,
-	0xe5, 0xca, 0x56, 0x5b, 0x2e, 0xaa, 0x22, 0x04, 0x69, 0x9b, 0xa2, 0xa8, 0x51, 0x08, 0x1b, 0xb8,
-	0x41, 0x48, 0xd6, 0xc6, 0x5e, 0xdc, 0x55, 0x9c, 0x5d, 0xe3, 0x5d, 0x47, 0xcd, 0x4b, 0xf0, 0x7a,
-	0xbc, 0x0e, 0xda, 0xf5, 0x0f, 0x85, 0xa0, 0x48, 0xdc, 0xcd, 0xec, 0x9c, 0x39, 0x9a, 0x39, 0x67,
-	0x6c, 0xe8, 0x47, 0x42, 0x44, 0x31, 0xf5, 0x64, 0x42, 0x38, 0xa7, 0xa9, 0xb7, 0x3e, 0xf6, 0xbe,
-	0x65, 0x34, 0xdd, 0xf8, 0x49, 0x4c, 0xb8, 0x9b, 0xa4, 0x42, 0x09, 0xf4, 0x30, 0xc7, 0xb8, 0x05,
-	0xc6, 0x5d, 0x1f, 0xf7, 0x9e, 0x16, 0x6d, 0x24, 0x61, 0x1e, 0xe1, 0x5c, 0x28, 0xa2, 0x98, 0xe0,
-	0x32, 0x6f, 0xa8, 0xaa, 0x26, 0x5b, 0x64, 0x5f, 0x3d, 0xa9, 0xd2, 0x2c, 0x50, 0x79, 0xb5, 0xff,
-	0xbd, 0x09, 0xfb, 0xb3, 0x98, 0xf0, 0xa9, 0x08, 0x29, 0x3a, 0x82, 0x06, 0xe3, 0x21, 0xbd, 0xb3,
-	0x2d, 0xc7, 0x1a, 0x34, 0x70, 0x9e, 0xa0, 0x97, 0x50, 0x5f, 0x32, 0x1e, 0xda, 0x35, 0xc7, 0x1a,
-	0x74, 0x4e, 0x1c, 0x77, 0x6b, 0x00, 0xb7, 0x24, 0x70, 0x6f, 0x18, 0x0f, 0xb1, 0x41, 0xa3, 0xe7,
-	0xf0, 0x20, 0x64, 0x32, 0x89, 0xc9, 0xc6, 0xe7, 0x64, 0x45, 0xed, 0x3d, 0xc7, 0x1a, 0xb4, 0x70,
-	0xbb, 0x78, 0x9b, 0x92, 0x15, 0x45, 0xd7, 0xd0, 0x0e, 0x6e, 0x59, 0x1c, 0xfa, 0x31, 0xe3, 0x4b,
-	0x69, 0xd7, 0x9d, 0xbd, 0x41, 0xfb, 0xe4, 0xc5, 0x2e, 0xfe, 0x4b, 0x0d, 0x9f, 0x30, 0xbe, 0xc4,
-	0x10, 0x94, 0xa1, 0x44, 0x0b, 0x38, 0x92, 0xb7, 0x22, 0x55, 0x7e, 0x4a, 0x93, 0x94, 0x4a, 0xca,
-	0x73, 0x01, 0xec, 0x86, 0x63, 0x0d, 0xda, 0x27, 0xde, 0x2e, 0xc2, 0xb9, 0xee, 0xc3, 0xbf, 0xb5,
-	0xe1, 0x43, 0xb9, 0xfd, 0x88, 0x4e, 0x61, 0x7f, 0x45, 0x15, 0x09, 0x89, 0x22, 0x76, 0xd3, 0xf0,
-	0x3e, 0x2e, 0x79, 0x4b, 0x61, 0xdd, 0xb9, 0x11, 0x16, 0x57, 0x40, 0xf4, 0x16, 0x0e, 0xe8, 0x1d,
-	0x0d, 0x32, 0xcd, 0xe0, 0x4b, 0x45, 0x94, 0xb4, 0xff, 0xdf, 0xdd, 0xdb, 0xa9, 0xf0, 0x73, 0x0d,
-	0xef, 0x7d, 0x81, 0x56, 0xb5, 0x33, 0x7a, 0x56, 0xea, 0x75, 0xdf, 0xa4, 0x5c, 0x88, 0xb1, 0x71,
-	0x0a, 0x41, 0x5d, 0x6d, 0x12, 0x6a, 0x9c, 0x6a, 0x61, 0x13, 0xa3, 0x1e, 0xec, 0xaf, 0x49, 0xca,
-	0xc8, 0x22, 0x2e, 0x3d, 0xa8, 0xf2, 0xde, 0x0f, 0x0b, 0x0e, 0xff, 0xa2, 0x00, 0x72, 0xa0, 0x1d,
-	0x52, 0x19, 0xa4, 0x2c, 0x31, 0x3a, 0x5a, 0x85, 0x75, 0xbf, 0x9e, 0x90, 0x0f, 0x20, 0xb3, 0x85,
-	0x3e, 0x4e, 0x46, 0xa5, 0x5d, 0x33, 0xce, 0xbd, 0xf9, 0x47, 0xa1, 0xdd, 0x79, 0xc5, 0x30, 0xe2,
-	0x2a, 0xdd, 0xe0, 0x7b, 0x94, 0xbd, 0xd7, 0x70, 0xf0, 0x47, 0x19, 0x75, 0x61, 0x6f, 0x49, 0x37,
-	0xc5, 0x34, 0x3a, 0xd4, 0xf7, 0xba, 0x26, 0x71, 0x96, 0x2f, 0xdc, 0xc0, 0x79, 0x72, 0x5e, 0x3b,
-	0xb3, 0xfa, 0x67, 0x50, 0xd7, 0xb7, 0x88, 0x8e, 0xa0, 0x7b, 0x33, 0x9e, 0x5e, 0xf9, 0x9f, 0xa6,
-	0xf3, 0xd9, 0xe8, 0x72, 0x7c, 0x3d, 0x1e, 0x5d, 0x75, 0xff, 0x43, 0x1d, 0x00, 0x3c, 0x9a, 0x0c,
-	0x3f, 0x8e, 0xdf, 0x4f, 0x87, 0x93, 0xae, 0x85, 0x00, 0x9a, 0xf3, 0xcb, 0xe1, 0x64, 0x88, 0xbb,
-	0xb5, 0xfe, 0x3b, 0x68, 0x7d, 0xd0, 0xdf, 0x9c, 0x9e, 0x1c, 0x9d, 0x03, 0xe8, 0x4f, 0xcf, 0xe7,
-	0x22, 0xa4, 0xd2, 0xb6, 0xcc, 0x9a, 0x4f, 0x76, 0xac, 0x89, 0x5b, 0x49, 0x11, 0xc9, 0x8b, 0x00,
-	0x1e, 0x05, 0x62, 0xb5, 0x0d, 0xbe, 0xe8, 0x54, 0xfc, 0x33, 0xed, 0xfe, 0xcc, 0xfa, 0x7c, 0x56,
-	0x80, 0x22, 0x11, 0x13, 0x1e, 0xb9, 0x22, 0x8d, 0xbc, 0x88, 0x72, 0x73, 0x1b, 0x5e, 0x5e, 0x22,
-	0x09, 0x93, 0xf7, 0x7e, 0x0b, 0xaf, 0x8a, 0x70, 0xd1, 0x34, 0xa0, 0xd3, 0x9f, 0x01, 0x00, 0x00,
-	0xff, 0xff, 0x31, 0xcf, 0x6d, 0x19, 0x3a, 0x04, 0x00, 0x00,
+	// 588 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0xd1, 0x6e, 0xd3, 0x30,
+	0x14, 0x25, 0x5d, 0x5b, 0xd6, 0x5b, 0xd4, 0x15, 0x6f, 0x68, 0x51, 0x41, 0x22, 0x54, 0x42, 0xea,
+	0x53, 0xa2, 0x6d, 0x3c, 0x4c, 0x43, 0x08, 0xba, 0xae, 0x9b, 0xaa, 0x55, 0xa5, 0x38, 0xc0, 0x03,
+	0x42, 0x8a, 0xdc, 0xc6, 0x74, 0x56, 0x53, 0x3b, 0xc4, 0x4e, 0xb5, 0x3e, 0xf0, 0x0b, 0x7c, 0x08,
+	0x3f, 0xc4, 0xef, 0x20, 0x3b, 0x69, 0x18, 0x14, 0x55, 0xe2, 0xed, 0x5e, 0xdf, 0x73, 0x4f, 0x7c,
+	0xcf, 0xb9, 0x0e, 0xb4, 0x67, 0x42, 0xcc, 0x22, 0xea, 0xc9, 0x98, 0x70, 0x4e, 0x13, 0x6f, 0x79,
+	0xe4, 0x7d, 0x4d, 0x69, 0xb2, 0x0a, 0xe2, 0x88, 0x70, 0x37, 0x4e, 0x84, 0x12, 0xe8, 0x61, 0x86,
+	0x71, 0x73, 0x8c, 0xbb, 0x3c, 0x6a, 0x3d, 0xc9, 0xdb, 0x48, 0xcc, 0x3c, 0xc2, 0xb9, 0x50, 0x44,
+	0x31, 0xc1, 0x65, 0xd6, 0x50, 0x54, 0x4d, 0x36, 0x49, 0xbf, 0x78, 0x52, 0x25, 0xe9, 0x54, 0x65,
+	0xd5, 0xf6, 0xf7, 0x2a, 0xec, 0x8e, 0x23, 0xc2, 0x47, 0x22, 0xa4, 0xe8, 0x00, 0x2a, 0x8c, 0x87,
+	0xf4, 0xd6, 0xb6, 0x1c, 0xab, 0x53, 0xc1, 0x59, 0x82, 0x5e, 0x40, 0x79, 0xce, 0x78, 0x68, 0x97,
+	0x1c, 0xab, 0xd3, 0x38, 0x76, 0xdc, 0x8d, 0x0b, 0xb8, 0x6b, 0x02, 0xf7, 0x9a, 0xf1, 0x10, 0x1b,
+	0x34, 0x7a, 0x06, 0x0f, 0x42, 0x26, 0xe3, 0x88, 0xac, 0x02, 0x4e, 0x16, 0xd4, 0xde, 0x71, 0xac,
+	0x4e, 0x0d, 0xd7, 0xf3, 0xb3, 0x11, 0x59, 0x50, 0x74, 0x09, 0xf5, 0xe9, 0x0d, 0x8b, 0xc2, 0x20,
+	0x62, 0x7c, 0x2e, 0xed, 0xb2, 0xb3, 0xd3, 0xa9, 0x1f, 0x3f, 0xdf, 0xc6, 0xdf, 0xd3, 0xf0, 0x21,
+	0xe3, 0x73, 0x0c, 0xd3, 0x75, 0x28, 0xd1, 0x04, 0x0e, 0xe4, 0x8d, 0x48, 0x54, 0x90, 0xd0, 0x38,
+	0xa1, 0x92, 0xf2, 0x4c, 0x00, 0xbb, 0xe2, 0x58, 0x9d, 0xfa, 0xb1, 0xb7, 0x8d, 0xd0, 0xd7, 0x7d,
+	0xf8, 0x8f, 0x36, 0xbc, 0x2f, 0x37, 0x0f, 0xd1, 0x09, 0xec, 0x2e, 0xa8, 0x22, 0x21, 0x51, 0xc4,
+	0xae, 0x1a, 0xde, 0xc3, 0x35, 0xef, 0x5a, 0x58, 0xd7, 0x37, 0xc2, 0xe2, 0x02, 0x88, 0xde, 0xc0,
+	0x1e, 0xbd, 0xa5, 0xd3, 0x54, 0x33, 0x04, 0x52, 0x11, 0x25, 0xed, 0xfb, 0xdb, 0x7b, 0x1b, 0x05,
+	0xde, 0xd7, 0xf0, 0xd6, 0x67, 0xa8, 0x15, 0x33, 0xa3, 0xa7, 0x6b, 0xbd, 0xee, 0x9a, 0x94, 0x09,
+	0x31, 0x30, 0x4e, 0x21, 0x28, 0xab, 0x55, 0x4c, 0x8d, 0x53, 0x35, 0x6c, 0x62, 0xd4, 0x82, 0xdd,
+	0x25, 0x49, 0x18, 0x99, 0x44, 0x6b, 0x0f, 0x8a, 0xbc, 0xf5, 0xd3, 0x82, 0xfd, 0x7f, 0x28, 0x80,
+	0x1c, 0xa8, 0x87, 0x54, 0x4e, 0x13, 0x16, 0x1b, 0x1d, 0xad, 0xdc, 0xba, 0xdf, 0x47, 0x28, 0x00,
+	0x90, 0xe9, 0x44, 0x2f, 0x27, 0xa3, 0xd2, 0x2e, 0x19, 0xe7, 0x5e, 0xff, 0xa7, 0xd0, 0xae, 0x5f,
+	0x30, 0xf4, 0xb9, 0x4a, 0x56, 0xf8, 0x0e, 0x65, 0xeb, 0x15, 0xec, 0xfd, 0x55, 0x46, 0x4d, 0xd8,
+	0x99, 0xd3, 0x55, 0x7e, 0x1b, 0x1d, 0xea, 0x7d, 0x5d, 0x92, 0x28, 0xcd, 0x06, 0xae, 0xe0, 0x2c,
+	0x39, 0x2b, 0x9d, 0x5a, 0xed, 0x53, 0x28, 0xeb, 0x5d, 0x44, 0x07, 0xd0, 0xbc, 0x1e, 0x8c, 0x2e,
+	0x82, 0x0f, 0x23, 0x7f, 0xdc, 0xef, 0x0d, 0x2e, 0x07, 0xfd, 0x8b, 0xe6, 0x3d, 0xd4, 0x00, 0xc0,
+	0xfd, 0x61, 0xf7, 0xfd, 0xe0, 0xed, 0xa8, 0x3b, 0x6c, 0x5a, 0x08, 0xa0, 0xea, 0xf7, 0xba, 0xc3,
+	0x2e, 0x6e, 0x96, 0xda, 0x57, 0x50, 0x7b, 0xa7, 0xdf, 0x9c, 0xbe, 0x39, 0x3a, 0x03, 0xd0, 0x4f,
+	0x2f, 0xe0, 0x22, 0xa4, 0xd2, 0xb6, 0xcc, 0x98, 0x8f, 0xb7, 0x8c, 0x89, 0x6b, 0x71, 0x1e, 0xc9,
+	0xf3, 0x6f, 0xf0, 0x68, 0x2a, 0x16, 0x9b, 0xe0, 0xf3, 0x46, 0xc1, 0x3f, 0xd6, 0xee, 0x8f, 0xad,
+	0x4f, 0xa7, 0x39, 0x68, 0x26, 0x22, 0xc2, 0x67, 0xae, 0x48, 0x66, 0xde, 0x8c, 0x72, 0xb3, 0x1b,
+	0x5e, 0x56, 0x22, 0x31, 0x93, 0x77, 0x7e, 0x0b, 0x2f, 0xf3, 0xf0, 0x47, 0xe9, 0xf0, 0x2a, 0x6b,
+	0xed, 0x45, 0x22, 0x0d, 0x5d, 0x3f, 0xff, 0xca, 0xc7, 0xa3, 0x49, 0xd5, 0xb4, 0x9f, 0xfc, 0x0a,
+	0x00, 0x00, 0xff, 0xff, 0xcc, 0x06, 0x5f, 0x9c, 0x54, 0x04, 0x00, 0x00,
 }
diff --git a/googleapis/spanner/v1/result_set.pb.go b/googleapis/spanner/v1/result_set.pb.go
index c93717dc..1ea9bcd6 100644
--- a/googleapis/spanner/v1/result_set.pb.go
+++ b/googleapis/spanner/v1/result_set.pb.go
@@ -277,34 +277,36 @@ func init() {
 func init() { proto.RegisterFile("google/spanner/v1/result_set.proto", fileDescriptor3) }
 
 var fileDescriptor3 = []byte{
-	// 463 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x93, 0x4d, 0x6f, 0xd3, 0x40,
-	0x10, 0x86, 0xe5, 0xf4, 0x83, 0x74, 0x1c, 0x10, 0x5d, 0x09, 0xb0, 0xa2, 0x82, 0xd2, 0x94, 0x43,
-	0x4e, 0xb6, 0x5a, 0x0e, 0x44, 0xea, 0xa5, 0xea, 0x19, 0xa4, 0xb0, 0x89, 0x38, 0x70, 0xb1, 0xa6,
-	0xee, 0x62, 0xac, 0x3a, 0xbb, 0xce, 0xee, 0x3a, 0x51, 0x7e, 0x00, 0xe2, 0xc8, 0xbf, 0xe1, 0xf7,
-	0xa1, 0xfd, 0xc8, 0x07, 0xd8, 0x42, 0x42, 0xea, 0x6d, 0xb3, 0xfb, 0xbc, 0xf3, 0xce, 0x3b, 0x9e,
-	0xc0, 0x30, 0x17, 0x22, 0x2f, 0x59, 0xa2, 0x2a, 0xe4, 0x9c, 0xc9, 0x64, 0x79, 0x99, 0x48, 0xa6,
-	0xea, 0x52, 0xa7, 0x8a, 0xe9, 0xb8, 0x92, 0x42, 0x0b, 0x72, 0xea, 0x98, 0xd8, 0x33, 0xf1, 0xf2,
-	0xb2, 0x7f, 0xe6, 0x65, 0x58, 0x15, 0x09, 0x72, 0x2e, 0x34, 0xea, 0x42, 0x70, 0xe5, 0x04, 0xdb,
-	0x57, 0xfb, 0xeb, 0xae, 0xfe, 0x9a, 0x28, 0x2d, 0xeb, 0xcc, 0x97, 0xeb, 0xb7, 0x58, 0x2e, 0x6a,
-	0x26, 0xd7, 0x69, 0x55, 0x22, 0xf7, 0xcc, 0x45, 0x93, 0xd1, 0x12, 0xb9, 0xc2, 0xcc, 0xf8, 0xfc,
-	0x65, 0xb3, 0x0f, 0xad, 0x2b, 0xe6, 0x5e, 0x87, 0xbf, 0x02, 0x38, 0xa1, 0x36, 0xca, 0x94, 0x69,
-	0x72, 0x03, 0xdd, 0x39, 0xd3, 0x78, 0x8f, 0x1a, 0xa3, 0x60, 0x10, 0x8c, 0xc2, 0xab, 0xb7, 0x71,
-	0x23, 0x56, 0xbc, 0xe5, 0x3f, 0x7a, 0x96, 0x6e, 0x55, 0x24, 0x86, 0x43, 0x29, 0x56, 0x2a, 0xea,
-	0x0c, 0x0e, 0x46, 0xe1, 0x55, 0x7f, 0xa3, 0xde, 0x64, 0x8c, 0x3f, 0x14, 0x4a, 0x7f, 0xc6, 0xb2,
-	0x66, 0xd4, 0x72, 0xe4, 0x3d, 0x1c, 0x29, 0x8d, 0x5a, 0x45, 0x07, 0xd6, 0xee, 0xfc, 0x5f, 0x76,
-	0x53, 0x03, 0x52, 0xc7, 0x0f, 0xbf, 0x77, 0xe0, 0xf9, 0x04, 0xa5, 0x2e, 0xb0, 0x7c, 0xdc, 0xfe,
-	0x8f, 0x97, 0xa6, 0xbd, 0x4d, 0x82, 0x97, 0x8d, 0x04, 0xae, 0x7b, 0x4f, 0x91, 0x0b, 0x78, 0x9a,
-	0x7d, 0xab, 0xf9, 0x03, 0xbb, 0x4f, 0xed, 0x8d, 0xcd, 0xd1, 0xa5, 0x3d, 0x7f, 0x69, 0x61, 0x72,
-	0x0e, 0x3d, 0xb3, 0x2e, 0x73, 0x96, 0x6a, 0xf1, 0xc0, 0x78, 0x74, 0x38, 0x08, 0x46, 0x3d, 0x1a,
-	0xba, 0xbb, 0x99, 0xb9, 0xda, 0xcd, 0xe1, 0xe8, 0x3f, 0xe7, 0xf0, 0x33, 0x80, 0xd3, 0x46, 0x20,
-	0x32, 0x86, 0xae, 0x14, 0xab, 0xd4, 0x7c, 0x68, 0x3f, 0x88, 0xd7, 0x2d, 0x15, 0xa7, 0x76, 0xe1,
-	0x66, 0xeb, 0x8a, 0xd1, 0x27, 0x52, 0xac, 0xcc, 0x81, 0xdc, 0x40, 0xb8, 0xb7, 0x43, 0x51, 0xc7,
-	0x8a, 0xdf, 0xb4, 0x88, 0x67, 0x3b, 0x8a, 0xee, 0x4b, 0x86, 0x3f, 0x02, 0x78, 0xf6, 0x67, 0xaf,
-	0xe4, 0x1a, 0x60, 0xb7, 0xbc, 0xbe, 0xa1, 0xb3, 0x96, 0x9a, 0x9f, 0x0c, 0x34, 0x29, 0x91, 0xd3,
-	0x93, 0xc5, 0xe6, 0x48, 0xc6, 0x10, 0x3a, 0xb1, 0x1b, 0x90, 0xeb, 0xe8, 0x55, 0xe3, 0xbb, 0xb8,
-	0x30, 0xd4, 0x19, 0x59, 0xdb, 0xdb, 0x0c, 0x5e, 0x64, 0x62, 0xde, 0xf4, 0xb9, 0xdd, 0xf5, 0x37,
-	0x31, 0xf2, 0x49, 0xf0, 0x65, 0xec, 0xa1, 0x5c, 0x94, 0xc8, 0xf3, 0x58, 0xc8, 0x3c, 0xc9, 0x19,
-	0xb7, 0xc5, 0x13, 0xf7, 0x84, 0x55, 0xa1, 0xf6, 0xfe, 0x44, 0xd7, 0xfe, 0x78, 0x77, 0x6c, 0xa1,
-	0x77, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x5f, 0xa5, 0x95, 0xcc, 0x24, 0x04, 0x00, 0x00,
+	// 482 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x93, 0xcb, 0x6e, 0x13, 0x31,
+	0x14, 0x86, 0x35, 0xe9, 0x85, 0xd4, 0x13, 0x10, 0xb5, 0x04, 0x1d, 0x45, 0x05, 0xa5, 0x29, 0x8b,
+	0xac, 0x3c, 0x4a, 0x59, 0x10, 0xa9, 0x9b, 0xaa, 0x2c, 0xd8, 0x80, 0x14, 0x9c, 0xa8, 0x0b, 0x36,
+	0xa3, 0xd3, 0xc4, 0x0c, 0xa3, 0x3a, 0xf6, 0xd4, 0xf6, 0x24, 0xca, 0x82, 0x25, 0x62, 0xc9, 0x7b,
+	0xf0, 0x00, 0x3c, 0x1f, 0xf2, 0x25, 0x17, 0x98, 0x08, 0x09, 0xa9, 0x3b, 0xc7, 0xfe, 0xfe, 0xf3,
+	0x9f, 0xff, 0xcc, 0x09, 0xea, 0xe6, 0x52, 0xe6, 0x9c, 0xa5, 0xba, 0x04, 0x21, 0x98, 0x4a, 0xe7,
+	0xfd, 0x54, 0x31, 0x5d, 0x71, 0x93, 0x69, 0x66, 0x48, 0xa9, 0xa4, 0x91, 0xf8, 0xd8, 0x33, 0x24,
+	0x30, 0x64, 0xde, 0x6f, 0x9f, 0x06, 0x19, 0x94, 0x45, 0x0a, 0x42, 0x48, 0x03, 0xa6, 0x90, 0x42,
+	0x7b, 0xc1, 0xfa, 0xd5, 0xfd, 0xba, 0xad, 0x3e, 0xa7, 0xda, 0xa8, 0x6a, 0x12, 0xca, 0xb5, 0x77,
+	0x58, 0xde, 0x57, 0x4c, 0x2d, 0xb3, 0x92, 0x83, 0x08, 0xcc, 0x79, 0x9d, 0x31, 0x0a, 0x84, 0x86,
+	0x89, 0xf5, 0xf9, 0xcb, 0x66, 0x1b, 0x5a, 0x96, 0xcc, 0xbf, 0x76, 0x7f, 0x45, 0xe8, 0x88, 0xba,
+	0x28, 0x23, 0x66, 0xf0, 0x15, 0x6a, 0xce, 0x98, 0x81, 0x29, 0x18, 0x48, 0xa2, 0x4e, 0xd4, 0x8b,
+	0x2f, 0x5e, 0x91, 0x5a, 0x2c, 0xb2, 0xe6, 0x3f, 0x04, 0x96, 0xae, 0x55, 0x98, 0xa0, 0x7d, 0x25,
+	0x17, 0x3a, 0x69, 0x74, 0xf6, 0x7a, 0xf1, 0x45, 0x7b, 0xa5, 0x5e, 0x65, 0x24, 0xef, 0x0b, 0x6d,
+	0x6e, 0x80, 0x57, 0x8c, 0x3a, 0x0e, 0xbf, 0x41, 0x07, 0xda, 0x80, 0xd1, 0xc9, 0x9e, 0xb3, 0x3b,
+	0xfb, 0x97, 0xdd, 0xc8, 0x82, 0xd4, 0xf3, 0xdd, 0x6f, 0x0d, 0xf4, 0x74, 0x08, 0xca, 0x14, 0xc0,
+	0x1f, 0xb6, 0xff, 0xc3, 0xb9, 0x6d, 0x6f, 0x95, 0xe0, 0x79, 0x2d, 0x81, 0xef, 0x3e, 0x50, 0xf8,
+	0x1c, 0x3d, 0x9e, 0x7c, 0xa9, 0xc4, 0x1d, 0x9b, 0x66, 0xee, 0xc6, 0xe5, 0x68, 0xd2, 0x56, 0xb8,
+	0x74, 0x30, 0x3e, 0x43, 0x2d, 0xbb, 0x2e, 0x33, 0x96, 0x19, 0x79, 0xc7, 0x44, 0xb2, 0xdf, 0x89,
+	0x7a, 0x2d, 0x1a, 0xfb, 0xbb, 0xb1, 0xbd, 0xda, 0xcc, 0xe1, 0xe0, 0x3f, 0xe7, 0xf0, 0x23, 0x42,
+	0xc7, 0xb5, 0x40, 0x78, 0x80, 0x9a, 0x4a, 0x2e, 0x32, 0xfb, 0xa1, 0xc3, 0x20, 0x5e, 0xec, 0xa8,
+	0x38, 0x72, 0x0b, 0x37, 0x5e, 0x96, 0x8c, 0x3e, 0x52, 0x72, 0x61, 0x0f, 0xf8, 0x0a, 0xc5, 0x5b,
+	0x3b, 0x94, 0x34, 0x9c, 0xf8, 0xe5, 0x0e, 0xf1, 0x78, 0x43, 0xd1, 0x6d, 0x49, 0xf7, 0x7b, 0x84,
+	0x9e, 0xfc, 0xd9, 0x2b, 0xbe, 0x44, 0x68, 0xb3, 0xbc, 0xa1, 0xa1, 0xd3, 0x1d, 0x35, 0x3f, 0x5a,
+	0x68, 0xc8, 0x41, 0xd0, 0xa3, 0xfb, 0xd5, 0x11, 0x0f, 0x50, 0xec, 0xc5, 0x7e, 0x40, 0xbe, 0xa3,
+	0x93, 0xda, 0x77, 0xf1, 0x61, 0xa8, 0x37, 0x72, 0xb6, 0xd7, 0x5f, 0xd1, 0xb3, 0x89, 0x9c, 0xd5,
+	0x7d, 0xae, 0x37, 0xfd, 0x0d, 0xad, 0x7c, 0x18, 0x7d, 0x1a, 0x04, 0x28, 0x97, 0x1c, 0x44, 0x4e,
+	0xa4, 0xca, 0xd3, 0x9c, 0x09, 0x57, 0x3c, 0xf5, 0x4f, 0x50, 0x16, 0x7a, 0xeb, 0x4f, 0x74, 0x19,
+	0x8e, 0x3f, 0x1b, 0x27, 0xef, 0xbc, 0xf4, 0x2d, 0x97, 0xd5, 0x94, 0x8c, 0x82, 0xcb, 0x4d, 0xff,
+	0xf6, 0xd0, 0xc9, 0x5f, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xe1, 0x15, 0x1f, 0xa6, 0x3e, 0x04,
+	0x00, 0x00,
 }
diff --git a/googleapis/spanner/v1/spanner.pb.go b/googleapis/spanner/v1/spanner.pb.go
index e08f1603..d6e3bd6a 100644
--- a/googleapis/spanner/v1/spanner.pb.go
+++ b/googleapis/spanner/v1/spanner.pb.go
@@ -579,10 +579,9 @@ type SpannerClient interface {
 	//
 	// Cloud Spanner limits the number of sessions that can exist at any given
 	// time; thus, it is a good idea to delete idle and/or unneeded sessions.
-	// Aside from explicit deletes, Cloud Spanner can delete sessions for
-	// which no operations are sent for more than an hour, or due to
-	// internal errors. If a session is deleted, requests to it
-	// return `NOT_FOUND`.
+	// Aside from explicit deletes, Cloud Spanner can delete sessions for which no
+	// operations are sent for more than an hour. If a session is deleted,
+	// requests to it return `NOT_FOUND`.
 	//
 	// Idle sessions can be kept alive by sending a trivial SQL query
 	// periodically, e.g., `"SELECT 1"`.
@@ -816,10 +815,9 @@ type SpannerServer interface {
 	//
 	// Cloud Spanner limits the number of sessions that can exist at any given
 	// time; thus, it is a good idea to delete idle and/or unneeded sessions.
-	// Aside from explicit deletes, Cloud Spanner can delete sessions for
-	// which no operations are sent for more than an hour, or due to
-	// internal errors. If a session is deleted, requests to it
-	// return `NOT_FOUND`.
+	// Aside from explicit deletes, Cloud Spanner can delete sessions for which no
+	// operations are sent for more than an hour. If a session is deleted,
+	// requests to it return `NOT_FOUND`.
 	//
 	// Idle sessions can be kept alive by sending a trivial SQL query
 	// periodically, e.g., `"SELECT 1"`.
@@ -1138,80 +1136,81 @@ var _Spanner_serviceDesc = grpc.ServiceDesc{
 func init() { proto.RegisterFile("google/spanner/v1/spanner.proto", fileDescriptor4) }
 
 var fileDescriptor4 = []byte{
-	// 1188 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x97, 0x4d, 0x6f, 0x1b, 0x45,
-	0x18, 0xc7, 0xbb, 0x49, 0x6a, 0xc7, 0x8f, 0x93, 0xc6, 0x19, 0xd2, 0xc6, 0xb8, 0xa1, 0x75, 0xb7,
-	0x94, 0x58, 0x96, 0xf0, 0x52, 0xc3, 0x21, 0x18, 0x10, 0xad, 0x5b, 0xb7, 0x89, 0xf2, 0xe6, 0xac,
-	0x5d, 0x2a, 0x55, 0x42, 0xd6, 0xd8, 0x7e, 0x30, 0x8b, 0xf7, 0x2d, 0x3b, 0xe3, 0xa8, 0x16, 0xea,
-	0x85, 0x2b, 0x17, 0x5e, 0x0e, 0x70, 0xe0, 0x06, 0x47, 0xee, 0xdc, 0xf8, 0x12, 0x7c, 0x05, 0x2e,
-	0x7c, 0x06, 0x2e, 0x68, 0x66, 0x77, 0x9d, 0x8d, 0x77, 0x9b, 0xa4, 0x04, 0x71, 0xca, 0xbc, 0xfc,
-	0x67, 0x9e, 0xdf, 0xfc, 0xe7, 0xd9, 0x79, 0x1c, 0xb8, 0x39, 0x70, 0x9c, 0x81, 0x89, 0x1a, 0x73,
-	0xa9, 0x6d, 0xa3, 0xa7, 0x1d, 0xdd, 0x0d, 0x9b, 0x15, 0xd7, 0x73, 0xb8, 0x43, 0x96, 0x7d, 0x41,
-	0x25, 0x1c, 0x3d, 0xba, 0x5b, 0x58, 0x0b, 0xd6, 0x50, 0xd7, 0xd0, 0xa8, 0x6d, 0x3b, 0x9c, 0x72,
-	0xc3, 0xb1, 0x99, 0xbf, 0xa0, 0x70, 0x35, 0x3a, 0x3b, 0xe2, 0x9f, 0x07, 0xc3, 0xd7, 0x83, 0x61,
-	0xd9, 0xeb, 0x8e, 0x3e, 0xd3, 0xd0, 0x72, 0xf9, 0x38, 0x98, 0x5c, 0x9b, 0x9e, 0x64, 0xdc, 0x1b,
-	0xf5, 0x78, 0x30, 0x7b, 0x73, 0x7a, 0x96, 0x1b, 0x16, 0x32, 0x4e, 0x2d, 0x77, 0x6a, 0x79, 0xe4,
-	0x10, 0x43, 0x1c, 0x87, 0x40, 0xc5, 0xf8, 0xac, 0x35, 0xf2, 0x99, 0x03, 0x85, 0x1a, 0x57, 0x1c,
-	0x8e, 0xd0, 0x1b, 0x77, 0x5c, 0x93, 0x9e, 0xa2, 0xf1, 0x90, 0x8d, 0x4c, 0xde, 0x61, 0x18, 0x82,
-	0xde, 0x8e, 0x6b, 0xb8, 0x47, 0x6d, 0x46, 0x7b, 0x91, 0x60, 0x09, 0xb0, 0x7c, 0xec, 0xa2, 0x3f,
-	0xab, 0x56, 0x61, 0xe5, 0x81, 0x87, 0x94, 0x63, 0x0b, 0x19, 0x33, 0x1c, 0x5b, 0xc7, 0xc3, 0x11,
-	0x32, 0x4e, 0x0a, 0x30, 0xdf, 0xa7, 0x9c, 0x76, 0x29, 0xc3, 0xbc, 0x52, 0x54, 0x4a, 0x19, 0x7d,
-	0xd2, 0x57, 0xdf, 0x80, 0x74, 0xa0, 0x26, 0x04, 0xe6, 0x6c, 0x6a, 0x85, 0x12, 0xd9, 0x56, 0xd7,
-	0x61, 0xf9, 0x31, 0xf2, 0xa9, 0xfd, 0x92, 0x84, 0x65, 0x58, 0x79, 0x88, 0x26, 0xc6, 0x62, 0x27,
-	0x69, 0xbf, 0x9e, 0x83, 0xe5, 0xc6, 0x73, 0xec, 0x8d, 0x38, 0xb6, 0x0e, 0xcd, 0x50, 0x99, 0x87,
-	0x34, 0xf3, 0xd7, 0x06, 0xe2, 0xb0, 0x4b, 0x36, 0x21, 0x1b, 0xb1, 0x22, 0x3f, 0x53, 0x54, 0x4a,
-	0xd9, 0xea, 0x5b, 0x95, 0x58, 0x72, 0x55, 0xda, 0xc7, 0xaa, 0x16, 0x9a, 0xd8, 0xe3, 0x8e, 0xa7,
-	0x47, 0x97, 0x92, 0x1c, 0xcc, 0xb2, 0x43, 0x33, 0x3f, 0x2b, 0xf7, 0x17, 0x4d, 0xa2, 0x41, 0xca,
-	0xa5, 0x1e, 0xb5, 0x58, 0x7e, 0x4e, 0x6e, 0xbb, 0x1a, 0x6e, 0x1b, 0x26, 0x4c, 0xa5, 0x25, 0xd3,
-	0x49, 0x0f, 0x64, 0xe4, 0x09, 0x64, 0x65, 0xab, 0x23, 0x8c, 0x67, 0xf9, 0xcb, 0xc5, 0xd9, 0x52,
-	0xb6, 0xfa, 0x5e, 0x02, 0x4c, 0xec, 0x84, 0x95, 0xa6, 0x58, 0xd7, 0x16, 0xcb, 0x1a, 0x36, 0xf7,
-	0xc6, 0x3a, 0xb8, 0x93, 0x01, 0x72, 0x0b, 0x16, 0x44, 0x4a, 0x58, 0xd8, 0xe1, 0xce, 0x10, 0xed,
-	0x7c, 0xaa, 0xa8, 0x94, 0x16, 0xf4, 0xac, 0x3f, 0xd6, 0x16, 0x43, 0x64, 0x17, 0xc0, 0xcf, 0x2c,
-	0xcb, 0xe9, 0x63, 0x3e, 0x5d, 0x54, 0x4a, 0x57, 0xaa, 0x95, 0x73, 0x05, 0x3e, 0x10, 0xcb, 0x76,
-	0x9d, 0x3e, 0xea, 0x99, 0xc3, 0xb0, 0x59, 0xf8, 0x04, 0x96, 0xa6, 0x80, 0x84, 0x3d, 0x43, 0x1c,
-	0x07, 0xf6, 0x8b, 0x26, 0x79, 0x1b, 0x2e, 0x1f, 0x51, 0x73, 0x84, 0x81, 0xe9, 0xab, 0x49, 0xa6,
-	0x8f, 0x5d, 0xd4, 0x7d, 0x55, 0x6d, 0x66, 0x43, 0x51, 0x2b, 0x90, 0x99, 0xc4, 0x23, 0x00, 0xa9,
-	0xbd, 0x7d, 0x7d, 0xf7, 0xfe, 0x4e, 0xee, 0x12, 0x99, 0x87, 0xb9, 0xe6, 0xce, 0xfd, 0xbd, 0x9c,
-	0x42, 0xb2, 0x90, 0x6e, 0xea, 0xfb, 0x8f, 0xb6, 0x76, 0x1a, 0xb9, 0x19, 0xf5, 0x97, 0x19, 0xc8,
-	0xea, 0x48, 0xfb, 0xff, 0x67, 0x1e, 0xac, 0xc0, 0x65, 0x4e, 0xbb, 0x26, 0x06, 0x99, 0xe0, 0x77,
-	0xc4, 0xa8, 0x61, 0xf7, 0xf1, 0xb9, 0x4c, 0x85, 0x8c, 0xee, 0x77, 0x04, 0x4f, 0xcf, 0x31, 0x47,
-	0x96, 0xed, 0x5f, 0x76, 0x46, 0x0f, 0xbb, 0xa4, 0x0a, 0xe9, 0x21, 0x8e, 0xc5, 0x37, 0x2c, 0xaf,
-	0x2b, 0x5b, 0x7d, 0x3d, 0x81, 0x65, 0x1b, 0xc7, 0x2d, 0xe4, 0x7a, 0x6a, 0x28, 0xff, 0x8a, 0x18,
-	0xa6, 0x61, 0x19, 0x3c, 0x3f, 0x5f, 0x54, 0x4a, 0xb3, 0xba, 0xdf, 0x89, 0xdd, 0x7e, 0x26, 0x76,
-	0xfb, 0x2a, 0x87, 0xd5, 0x3a, 0x0e, 0x0c, 0x3b, 0x72, 0xb6, 0xb3, 0x1d, 0xfb, 0x18, 0xd2, 0x8e,
-	0x2b, 0x1f, 0xd8, 0xc0, 0xad, 0x3b, 0xa7, 0xbb, 0xb5, 0xef, 0x8b, 0xf5, 0x70, 0x95, 0xfa, 0xb7,
-	0x02, 0x8b, 0x0f, 0x1c, 0xcb, 0x32, 0xf8, 0xd9, 0xc1, 0xd6, 0xe1, 0x4a, 0xc4, 0xe3, 0x8e, 0xd1,
-	0x97, 0x31, 0x17, 0x36, 0x2f, 0xe9, 0x8b, 0x91, 0xf1, 0xad, 0x3e, 0xf9, 0x14, 0xae, 0x31, 0xc3,
-	0x1e, 0x98, 0xd8, 0x19, 0x31, 0xec, 0x44, 0xaf, 0x74, 0xf6, 0x15, 0x20, 0x37, 0x2f, 0xe9, 0x2b,
-	0xfe, 0x36, 0x4f, 0x18, 0x46, 0xa6, 0xc9, 0xfb, 0x90, 0x09, 0xdf, 0x68, 0xf1, 0x55, 0x8b, 0xef,
-	0xf3, 0x7a, 0xc2, 0x8e, 0xbb, 0x81, 0x46, 0x3f, 0x56, 0xd7, 0x17, 0x4f, 0x64, 0x98, 0xfa, 0x14,
-	0xae, 0x84, 0x87, 0x67, 0xae, 0x63, 0x33, 0x24, 0x0d, 0xc8, 0xf5, 0xe4, 0x48, 0x67, 0x52, 0x47,
-	0xa4, 0x0d, 0xd9, 0x6a, 0x21, 0xf6, 0x70, 0xb4, 0x43, 0x85, 0xbe, 0xe4, 0xaf, 0x99, 0x0c, 0xa8,
-	0x3a, 0x2c, 0xe9, 0x8e, 0x69, 0x76, 0x69, 0x6f, 0x78, 0xb6, 0xaf, 0x77, 0x92, 0x7d, 0x9d, 0x72,
-	0xb5, 0xfa, 0xd7, 0x02, 0xa4, 0x5b, 0xfe, 0xf1, 0xc8, 0x8f, 0xe2, 0xda, 0xa2, 0xa5, 0x80, 0xac,
-	0x27, 0x38, 0x90, 0x54, 0x2c, 0x0a, 0x85, 0x04, 0x61, 0x20, 0x51, 0xeb, 0x5f, 0xfd, 0xf1, 0xe7,
-	0xf7, 0x33, 0x1f, 0xaa, 0x35, 0x51, 0x78, 0xbe, 0x0c, 0x6b, 0xc8, 0x47, 0xae, 0xe7, 0x7c, 0x81,
-	0x3d, 0xce, 0xb4, 0xb2, 0x66, 0xd8, 0x8c, 0x53, 0xbb, 0x87, 0xa2, 0x1d, 0xce, 0x33, 0xad, 0xfc,
-	0x42, 0x0b, 0x0e, 0xc3, 0xc8, 0x37, 0x0a, 0xc0, 0x71, 0x49, 0x21, 0x6f, 0x26, 0x84, 0x8b, 0x55,
-	0x9c, 0x53, 0xa1, 0xee, 0x49, 0xa8, 0x1a, 0xd9, 0x90, 0x50, 0xa2, 0xc0, 0x9c, 0x03, 0x68, 0xc2,
-	0xa3, 0x95, 0x5f, 0x90, 0xef, 0x14, 0x58, 0x3c, 0x51, 0xbc, 0x12, 0xdd, 0x4a, 0x2a, 0x6f, 0x85,
-	0x6b, 0xb1, 0x5b, 0x6f, 0x88, 0x9f, 0x26, 0x21, 0x54, 0xf9, 0xdf, 0x43, 0xfd, 0xac, 0x00, 0x1c,
-	0xbf, 0xe4, 0x89, 0x3e, 0xc5, 0x1e, 0xfa, 0xc2, 0x5a, 0x82, 0x4a, 0x97, 0xbf, 0x34, 0x5a, 0xc8,
-	0xd5, 0x03, 0x09, 0xb5, 0xad, 0x3e, 0x92, 0x50, 0x41, 0xb0, 0x57, 0xe4, 0xaa, 0xe1, 0x24, 0x68,
-	0x4d, 0x29, 0x93, 0xdf, 0x15, 0x78, 0x2d, 0xc4, 0xe0, 0x1e, 0x52, 0xcb, 0xb0, 0x07, 0xe7, 0xc7,
-	0xbd, 0x9d, 0xa0, 0x6a, 0x52, 0x8f, 0x1b, 0xd4, 0x3c, 0xa6, 0x7e, 0x26, 0xa9, 0xdb, 0xea, 0xfe,
-	0x7f, 0x41, 0x1d, 0x61, 0xac, 0x29, 0xe5, 0x77, 0x14, 0xf2, 0xad, 0x02, 0x73, 0xa2, 0xfa, 0x90,
-	0x1b, 0x89, 0xd6, 0x4d, 0xca, 0xd2, 0x19, 0xd6, 0x6e, 0x4b, 0xc8, 0x86, 0x7a, 0xef, 0x22, 0x90,
-	0x1e, 0xd2, 0xbe, 0x30, 0xf5, 0x57, 0x05, 0x16, 0x27, 0xa4, 0xe7, 0x82, 0x3b, 0x97, 0x91, 0x6d,
-	0xc9, 0xb8, 0xa7, 0x6e, 0x5d, 0x84, 0x91, 0x45, 0xb9, 0x7c, 0x0b, 0x7f, 0x53, 0x20, 0x37, 0x5d,
-	0x9a, 0x48, 0x39, 0x81, 0xe8, 0x25, 0xf5, 0xab, 0x70, 0xe3, 0xf4, 0xf7, 0x5e, 0x7d, 0x2a, 0xc1,
-	0x0f, 0xd4, 0x9d, 0x8b, 0x80, 0x77, 0xa7, 0x82, 0x0b, 0xa3, 0x7f, 0x52, 0x20, 0xe5, 0x3f, 0xf0,
-	0xa4, 0x98, 0xf4, 0x3e, 0x46, 0x0b, 0x5f, 0xe1, 0xd6, 0x29, 0x0a, 0xbf, 0x3a, 0xa8, 0xbb, 0x12,
-	0xf4, 0xb1, 0x5a, 0xbf, 0x08, 0xa8, 0x5f, 0x2b, 0x04, 0xde, 0x0f, 0x0a, 0xcc, 0x87, 0x65, 0x82,
-	0xa8, 0x49, 0x29, 0x70, 0xb2, 0x86, 0xbc, 0xf4, 0x35, 0xda, 0x97, 0x5c, 0x5b, 0xea, 0xc3, 0x0b,
-	0x65, 0x67, 0x10, 0xac, 0xa6, 0x94, 0xeb, 0x14, 0xae, 0xf6, 0x1c, 0x2b, 0x4e, 0x54, 0x5f, 0x08,
-	0x2a, 0x50, 0x53, 0x00, 0x34, 0x95, 0x67, 0x1b, 0x81, 0x64, 0xe0, 0x98, 0xd4, 0x1e, 0x54, 0x1c,
-	0x6f, 0xa0, 0x0d, 0xd0, 0x96, 0x78, 0x9a, 0x3f, 0x45, 0x5d, 0x83, 0x45, 0xfe, 0x9f, 0xf9, 0x20,
-	0x68, 0x76, 0x53, 0x52, 0xf4, 0xee, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xa8, 0x5d, 0xc1, 0xa8,
-	0x65, 0x0e, 0x00, 0x00,
+	// 1202 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x97, 0xcd, 0x6f, 0x1b, 0xc5,
+	0x1b, 0xc7, 0xbb, 0x4e, 0x6a, 0xc7, 0x8f, 0x93, 0xd6, 0x9d, 0x5f, 0xda, 0xf8, 0xe7, 0x96, 0xd6,
+	0xdd, 0x52, 0x6a, 0x59, 0xc2, 0x4b, 0x0d, 0x87, 0x62, 0x40, 0xb4, 0x6e, 0xdd, 0x36, 0x6a, 0x5e,
+	0x9c, 0xb5, 0xdb, 0x4a, 0x95, 0x90, 0x35, 0xb6, 0x1f, 0xcc, 0xe2, 0x7d, 0xcb, 0xce, 0x6c, 0x54,
+	0xab, 0xea, 0x85, 0x2b, 0x17, 0x5e, 0x0e, 0x70, 0xe0, 0x06, 0x27, 0xc4, 0x9d, 0x1b, 0xff, 0x04,
+	0xff, 0x02, 0x17, 0xfe, 0x06, 0x2e, 0x68, 0x66, 0x77, 0x9d, 0x8d, 0x77, 0x9b, 0xa4, 0x04, 0x71,
+	0xca, 0xbc, 0x7c, 0x9f, 0x79, 0x3e, 0xf3, 0x9d, 0xd9, 0x79, 0x1c, 0xb8, 0x32, 0x76, 0x9c, 0xb1,
+	0x89, 0x1a, 0x73, 0xa9, 0x6d, 0xa3, 0xa7, 0xed, 0xdd, 0x8c, 0x9a, 0x75, 0xd7, 0x73, 0xb8, 0x43,
+	0xce, 0x05, 0x82, 0x7a, 0x34, 0xba, 0x77, 0xb3, 0x7c, 0x29, 0x8c, 0xa1, 0xae, 0xa1, 0x51, 0xdb,
+	0x76, 0x38, 0xe5, 0x86, 0x63, 0xb3, 0x20, 0xa0, 0x7c, 0x3e, 0x3e, 0xeb, 0xf3, 0xcf, 0xc2, 0xe1,
+	0x8b, 0xe1, 0xb0, 0xec, 0x0d, 0xfc, 0x4f, 0x35, 0xb4, 0x5c, 0x3e, 0x0d, 0x27, 0x2f, 0xcd, 0x4f,
+	0x32, 0xee, 0xf9, 0x43, 0x1e, 0xce, 0x5e, 0x99, 0x9f, 0xe5, 0x86, 0x85, 0x8c, 0x53, 0xcb, 0x9d,
+	0x0b, 0x8f, 0x6d, 0x62, 0x82, 0xd3, 0x08, 0xa8, 0x92, 0x9c, 0xb5, 0xfc, 0x80, 0x39, 0x54, 0xa8,
+	0x49, 0x85, 0x87, 0xcc, 0x37, 0x79, 0x9f, 0x61, 0x04, 0x71, 0x2d, 0xa9, 0xe1, 0x1e, 0xb5, 0x19,
+	0x1d, 0xc6, 0x16, 0x4a, 0x01, 0xe1, 0x53, 0x17, 0x83, 0x59, 0xb5, 0x01, 0xab, 0x77, 0x3d, 0xa4,
+	0x1c, 0xbb, 0xc8, 0x98, 0xe1, 0xd8, 0x3a, 0xee, 0xfa, 0xc8, 0x38, 0x29, 0xc3, 0xd2, 0x88, 0x72,
+	0x3a, 0xa0, 0x0c, 0x4b, 0x4a, 0x45, 0xa9, 0xe6, 0xf5, 0x59, 0x5f, 0x7d, 0x03, 0x72, 0xa1, 0x9a,
+	0x10, 0x58, 0xb4, 0xa9, 0x15, 0x49, 0x64, 0x5b, 0xbd, 0x01, 0xe7, 0x1e, 0x20, 0x9f, 0x5b, 0x2f,
+	0x4d, 0x58, 0x83, 0xd5, 0x7b, 0x68, 0x62, 0x22, 0x77, 0x9a, 0xf6, 0xcb, 0x45, 0x38, 0xd7, 0x7e,
+	0x8e, 0x43, 0x9f, 0x63, 0x77, 0xd7, 0x8c, 0x94, 0x25, 0xc8, 0xb1, 0x20, 0x36, 0x14, 0x47, 0x5d,
+	0xf2, 0x10, 0x0a, 0x31, 0x2b, 0x4a, 0x99, 0x8a, 0x52, 0x2d, 0x34, 0xde, 0xaa, 0x27, 0x2e, 0x4e,
+	0xbd, 0xb7, 0xaf, 0xea, 0xa2, 0x89, 0x43, 0xee, 0x78, 0x7a, 0x3c, 0x94, 0x14, 0x61, 0x81, 0xed,
+	0x9a, 0xa5, 0x05, 0xb9, 0xbe, 0x68, 0x12, 0x0d, 0xb2, 0x2e, 0xf5, 0xa8, 0xc5, 0x4a, 0x8b, 0x72,
+	0xd9, 0xb5, 0x68, 0xd9, 0xe8, 0x32, 0xd4, 0xbb, 0xf2, 0xaa, 0xe8, 0xa1, 0x8c, 0x3c, 0x86, 0x82,
+	0x6c, 0xf5, 0x85, 0xf1, 0xac, 0x74, 0xba, 0xb2, 0x50, 0x2d, 0x34, 0xde, 0x4b, 0x81, 0x49, 0xec,
+	0xb0, 0xde, 0x11, 0x71, 0x3d, 0x11, 0xd6, 0xb6, 0xb9, 0x37, 0xd5, 0xc1, 0x9d, 0x0d, 0x90, 0xab,
+	0xb0, 0x2c, 0xae, 0x84, 0x85, 0x7d, 0xee, 0x4c, 0xd0, 0x2e, 0x65, 0x2b, 0x4a, 0x75, 0x59, 0x2f,
+	0x04, 0x63, 0x3d, 0x31, 0x44, 0x36, 0x01, 0x76, 0x7d, 0xf4, 0xa6, 0x7d, 0xcb, 0x19, 0x61, 0x29,
+	0x57, 0x51, 0xaa, 0x67, 0x1a, 0xf5, 0x63, 0x25, 0xde, 0x11, 0x61, 0x9b, 0xce, 0x08, 0xf5, 0xfc,
+	0x6e, 0xd4, 0x2c, 0x3f, 0x81, 0xb3, 0x73, 0x40, 0xc2, 0x9e, 0x09, 0x4e, 0x43, 0xfb, 0x45, 0x93,
+	0xbc, 0x0d, 0xa7, 0xf7, 0xa8, 0xe9, 0x63, 0x68, 0xfa, 0x5a, 0x9a, 0xe9, 0x53, 0x17, 0xf5, 0x40,
+	0xd5, 0xcc, 0xdc, 0x52, 0xd4, 0x3a, 0xe4, 0x67, 0xf9, 0x08, 0x40, 0x76, 0x6b, 0x5b, 0xdf, 0xbc,
+	0xb3, 0x51, 0x3c, 0x45, 0x96, 0x60, 0xb1, 0xb3, 0x71, 0x67, 0xab, 0xa8, 0x90, 0x02, 0xe4, 0x3a,
+	0xfa, 0xf6, 0xfd, 0xf5, 0x8d, 0x76, 0x31, 0xa3, 0xfe, 0x94, 0x81, 0x82, 0x8e, 0x74, 0xf4, 0x5f,
+	0xde, 0x83, 0x55, 0x38, 0xcd, 0xe9, 0xc0, 0xc4, 0xf0, 0x26, 0x04, 0x1d, 0x31, 0x6a, 0xd8, 0x23,
+	0x7c, 0x2e, 0xaf, 0x42, 0x5e, 0x0f, 0x3a, 0x82, 0x67, 0xe8, 0x98, 0xbe, 0x65, 0x07, 0x87, 0x9d,
+	0xd7, 0xa3, 0x2e, 0x69, 0x40, 0x6e, 0x82, 0x53, 0xf1, 0x0d, 0xcb, 0xe3, 0x2a, 0x34, 0xfe, 0x9f,
+	0xc2, 0xf2, 0x08, 0xa7, 0x5d, 0xe4, 0x7a, 0x76, 0x22, 0xff, 0x8a, 0x1c, 0xa6, 0x61, 0x19, 0xbc,
+	0xb4, 0x54, 0x51, 0xaa, 0x0b, 0x7a, 0xd0, 0x49, 0x9c, 0x7e, 0x3e, 0x71, 0xfa, 0x2a, 0x87, 0xb5,
+	0x16, 0x8e, 0x0d, 0x3b, 0xb6, 0xb7, 0xa3, 0x1d, 0xfb, 0x18, 0x72, 0x8e, 0x2b, 0x1f, 0xcf, 0xd0,
+	0xad, 0xeb, 0x87, 0xbb, 0xb5, 0x1d, 0x88, 0xf5, 0x28, 0x4a, 0xfd, 0x4b, 0x81, 0x95, 0xbb, 0x8e,
+	0x65, 0x19, 0xfc, 0xe8, 0x64, 0x37, 0xe0, 0x4c, 0xcc, 0xe3, 0xbe, 0x31, 0x92, 0x39, 0x97, 0x1f,
+	0x9e, 0xd2, 0x57, 0x62, 0xe3, 0xeb, 0x23, 0xf2, 0x09, 0x5c, 0x60, 0x86, 0x3d, 0x36, 0xb1, 0xef,
+	0x33, 0xec, 0xc7, 0x8f, 0x74, 0xe1, 0x35, 0x20, 0x1f, 0x9e, 0xd2, 0x57, 0x83, 0x65, 0x1e, 0x33,
+	0x8c, 0x4d, 0x93, 0xf7, 0x21, 0x1f, 0xbd, 0xbf, 0xe2, 0xab, 0x16, 0xdf, 0xe7, 0xc5, 0x94, 0x15,
+	0x37, 0x43, 0x8d, 0xbe, 0xaf, 0x6e, 0xad, 0x1c, 0xb8, 0x61, 0xea, 0x53, 0x38, 0x13, 0x6d, 0x9e,
+	0xb9, 0x8e, 0xcd, 0x90, 0xb4, 0xa1, 0x38, 0x94, 0x23, 0xfd, 0x59, 0x8d, 0x90, 0x36, 0x14, 0x1a,
+	0xe5, 0xc4, 0xc3, 0xd1, 0x8b, 0x14, 0xfa, 0xd9, 0x20, 0x66, 0x36, 0xa0, 0xea, 0x70, 0x56, 0x77,
+	0x4c, 0x73, 0x40, 0x87, 0x93, 0xa3, 0x7d, 0xbd, 0x9e, 0xee, 0xeb, 0x9c, 0xab, 0x8d, 0x3f, 0x97,
+	0x21, 0xd7, 0x0d, 0xb6, 0x47, 0xbe, 0x17, 0xc7, 0x16, 0x2f, 0x05, 0xe4, 0x46, 0x8a, 0x03, 0x69,
+	0xc5, 0xa2, 0x5c, 0x4e, 0x11, 0x86, 0x12, 0xb5, 0xf5, 0xc5, 0xef, 0x7f, 0x7c, 0x9b, 0xf9, 0x50,
+	0x6d, 0x8a, 0xc2, 0xf3, 0x22, 0xaa, 0x21, 0x1f, 0xb9, 0x9e, 0xf3, 0x39, 0x0e, 0x39, 0xd3, 0x6a,
+	0x9a, 0x61, 0x33, 0x4e, 0xed, 0x21, 0x8a, 0x76, 0x34, 0xcf, 0xb4, 0xda, 0x4b, 0x2d, 0xdc, 0x0c,
+	0x23, 0x5f, 0x29, 0x00, 0xfb, 0x25, 0x85, 0xbc, 0x99, 0x92, 0x2e, 0x51, 0x71, 0x0e, 0x85, 0xba,
+	0x2d, 0xa1, 0x9a, 0xe4, 0x96, 0x84, 0x12, 0x05, 0xe6, 0x18, 0x40, 0x33, 0x1e, 0xad, 0xf6, 0x92,
+	0x7c, 0xa3, 0xc0, 0xca, 0x81, 0xe2, 0x95, 0xea, 0x56, 0x5a, 0x79, 0x2b, 0x5f, 0x48, 0x9c, 0x7a,
+	0x5b, 0xfc, 0xec, 0x88, 0xa0, 0x6a, 0xff, 0x1c, 0xea, 0x47, 0x05, 0x60, 0xff, 0x25, 0x4f, 0xf5,
+	0x29, 0xf1, 0xd0, 0x97, 0x2f, 0xa5, 0xa8, 0x74, 0xf9, 0x4b, 0xa3, 0x8b, 0x5c, 0xdd, 0x91, 0x50,
+	0x8f, 0xd4, 0xfb, 0x12, 0x2a, 0x4c, 0xf6, 0x9a, 0x5c, 0x4d, 0x9c, 0x25, 0x6d, 0x2a, 0x35, 0xf2,
+	0x9b, 0x02, 0xff, 0x8b, 0x30, 0xb8, 0x87, 0xd4, 0x32, 0xec, 0xf1, 0xf1, 0x71, 0xaf, 0xa5, 0xa8,
+	0x3a, 0xd4, 0xe3, 0x06, 0x35, 0xf7, 0xa9, 0x9f, 0x49, 0xea, 0x9e, 0xba, 0xfd, 0x6f, 0x50, 0xc7,
+	0x18, 0x9b, 0x4a, 0xed, 0x1d, 0x85, 0x7c, 0xad, 0xc0, 0xa2, 0xa8, 0x3e, 0xe4, 0x72, 0xaa, 0x75,
+	0xb3, 0xb2, 0x74, 0x84, 0xb5, 0x8f, 0x24, 0x64, 0x5b, 0xbd, 0x7d, 0x12, 0x48, 0x0f, 0xe9, 0x48,
+	0x98, 0xfa, 0x8b, 0x02, 0x2b, 0x33, 0xd2, 0x63, 0xc1, 0x1d, 0xcb, 0xc8, 0x9e, 0x64, 0xdc, 0x52,
+	0xd7, 0x4f, 0xc2, 0xc8, 0xe2, 0x5c, 0x81, 0x85, 0xbf, 0x2a, 0x50, 0x9c, 0x2f, 0x4d, 0xa4, 0x96,
+	0x42, 0xf4, 0x8a, 0xfa, 0x55, 0xbe, 0x7c, 0xf8, 0x7b, 0xaf, 0x3e, 0x95, 0xe0, 0x3b, 0xea, 0xc6,
+	0x49, 0xc0, 0x07, 0x73, 0xc9, 0x85, 0xd1, 0x3f, 0x28, 0x90, 0x0d, 0x1e, 0x78, 0x52, 0x49, 0x7b,
+	0x1f, 0xe3, 0x85, 0xaf, 0x7c, 0xf5, 0x10, 0x45, 0x50, 0x1d, 0xd4, 0x4d, 0x09, 0xfa, 0x40, 0x6d,
+	0x9d, 0x04, 0x34, 0xa8, 0x15, 0x02, 0xef, 0x3b, 0x05, 0x96, 0xa2, 0x32, 0x41, 0xd4, 0xb4, 0x2b,
+	0x70, 0xb0, 0x86, 0xbc, 0xf2, 0x35, 0xda, 0x96, 0x5c, 0xeb, 0xea, 0xbd, 0x13, 0xdd, 0xce, 0x30,
+	0x59, 0x53, 0xa9, 0xb5, 0x5e, 0xc0, 0xf9, 0xa1, 0x63, 0x25, 0x89, 0x5a, 0xcb, 0x61, 0x05, 0xea,
+	0x08, 0x80, 0x8e, 0xf2, 0xec, 0x56, 0x28, 0x19, 0x3b, 0x26, 0xb5, 0xc7, 0x75, 0xc7, 0x1b, 0x6b,
+	0x63, 0xb4, 0x25, 0x9e, 0x16, 0x4c, 0x51, 0xd7, 0x60, 0xb1, 0xff, 0x67, 0x3e, 0x08, 0x9b, 0x3f,
+	0x67, 0xd6, 0x1e, 0x04, 0xa1, 0x77, 0x4d, 0xc7, 0x1f, 0xd5, 0xc3, 0x75, 0xeb, 0x4f, 0x6e, 0x0e,
+	0xb2, 0x32, 0xfc, 0xdd, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x1c, 0x21, 0x25, 0x65, 0x5b, 0x0e,
+	0x00, 0x00,
 }
diff --git a/googleapis/spanner/v1/transaction.pb.go b/googleapis/spanner/v1/transaction.pb.go
index 59aedb85..d29b1eb6 100644
--- a/googleapis/spanner/v1/transaction.pb.go
+++ b/googleapis/spanner/v1/transaction.pb.go
@@ -794,37 +794,38 @@ func init() {
 func init() { proto.RegisterFile("google/spanner/v1/transaction.proto", fileDescriptor5) }
 
 var fileDescriptor5 = []byte{
-	// 503 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x94, 0xd1, 0x6a, 0xdb, 0x30,
-	0x14, 0x86, 0x9d, 0x34, 0x0d, 0xe9, 0x49, 0x9a, 0xa6, 0x2a, 0x85, 0xcc, 0x8c, 0x6d, 0x64, 0x0c,
-	0x76, 0x65, 0xd3, 0xee, 0x66, 0x30, 0x06, 0x5b, 0x56, 0x86, 0x19, 0x8c, 0x06, 0xb7, 0x63, 0xb0,
-	0x1b, 0x4f, 0x89, 0xcf, 0x8c, 0xc0, 0x96, 0x8c, 0x24, 0x77, 0xe9, 0xfd, 0x9e, 0x6a, 0x6f, 0xb1,
-	0x37, 0x1a, 0x96, 0xe5, 0xc4, 0x8d, 0x2f, 0x9a, 0x3b, 0x9f, 0x9c, 0xff, 0xff, 0xf5, 0xe9, 0x1c,
-	0x11, 0x78, 0x99, 0x08, 0x91, 0xa4, 0xe8, 0xab, 0x9c, 0x72, 0x8e, 0xd2, 0xbf, 0xbb, 0xf0, 0xb5,
-	0xa4, 0x5c, 0xd1, 0x95, 0x66, 0x82, 0x7b, 0xb9, 0x14, 0x5a, 0x90, 0xd3, 0x4a, 0xe4, 0x59, 0x91,
-	0x77, 0x77, 0xe1, 0x3e, 0xb5, 0x3e, 0x9a, 0x33, 0x9f, 0x72, 0x2e, 0x34, 0x2d, 0xf5, 0xaa, 0x32,
-	0xb8, 0xcf, 0x6c, 0xd7, 0x54, 0xcb, 0xe2, 0x97, 0x1f, 0x17, 0x92, 0x6e, 0x03, 0xdd, 0xe7, 0xbb,
-	0x7d, 0xcd, 0x32, 0x54, 0x9a, 0x66, 0x79, 0x25, 0x98, 0xfd, 0xeb, 0x01, 0xb9, 0xdd, 0x72, 0x5c,
-	0xe7, 0x26, 0x9d, 0x2c, 0x00, 0x24, 0xd2, 0x38, 0xfa, 0x2d, 0x99, 0xc6, 0x69, 0xe7, 0x45, 0xe7,
-	0xf5, 0xf0, 0xd2, 0xf7, 0x5a, 0x74, 0x5e, 0xdb, 0xea, 0x85, 0x48, 0xe3, 0xef, 0xa5, 0x2d, 0x70,
-	0xc2, 0x23, 0x59, 0x17, 0xe4, 0x2b, 0x98, 0x22, 0x12, 0x3c, 0xbd, 0x9f, 0x76, 0x4d, 0xa0, 0xb7,
-	0x7f, 0xe0, 0x35, 0x4f, 0xef, 0x03, 0x27, 0x1c, 0x48, 0xfb, 0xed, 0x0e, 0xe1, 0x68, 0x73, 0x90,
-	0xfb, 0xe7, 0x00, 0x06, 0xb5, 0x8a, 0x4c, 0xa1, 0xaf, 0xb4, 0x14, 0x3c, 0x31, 0xd8, 0x83, 0xc0,
-	0x09, 0x6d, 0x4d, 0xbe, 0x00, 0xc9, 0x18, 0x8f, 0x0c, 0xc6, 0x66, 0x0e, 0x96, 0xc5, 0xad, 0x59,
-	0xea, 0x49, 0x79, 0xb7, 0xb5, 0x22, 0x70, 0xc2, 0x49, 0xc6, 0x78, 0x79, 0xc0, 0xe6, 0x37, 0xf2,
-	0x01, 0x8e, 0x33, 0xba, 0x8e, 0x94, 0xa6, 0x29, 0x72, 0x54, 0x6a, 0x7a, 0x60, 0x62, 0x9e, 0xb4,
-	0x62, 0xae, 0xec, 0x42, 0x02, 0x27, 0x1c, 0x65, 0x74, 0x7d, 0x53, 0x1b, 0xc8, 0x27, 0x18, 0xef,
-	0x90, 0xf4, 0xf6, 0x20, 0x39, 0x96, 0x0f, 0x30, 0xae, 0xe0, 0x04, 0xd7, 0x74, 0xa5, 0x1b, 0x20,
-	0x87, 0x8f, 0x83, 0x8c, 0x8d, 0x67, 0x8b, 0x72, 0x09, 0xe7, 0x12, 0x75, 0x21, 0x5b, 0xb3, 0xe9,
-	0x97, 0x13, 0x0c, 0xcf, 0xaa, 0xe6, 0x83, 0x01, 0xcc, 0x4f, 0xe1, 0x64, 0xa3, 0x8b, 0x96, 0xa2,
-	0xe0, 0xf1, 0xbc, 0x0f, 0xbd, 0x4c, 0xc4, 0x38, 0xfb, 0x09, 0xc3, 0xc6, 0x1a, 0xc9, 0x18, 0xba,
-	0x2c, 0x36, 0xcb, 0x18, 0x85, 0x5d, 0x16, 0x93, 0x8f, 0xad, 0x8b, 0x3f, 0xba, 0x82, 0x9d, 0x6b,
-	0xcf, 0xfe, 0x76, 0xe0, 0xac, 0x71, 0xc4, 0x0d, 0xa6, 0xb8, 0xd2, 0x42, 0x92, 0xcf, 0x00, 0x8a,
-	0xf1, 0x24, 0xc5, 0xa8, 0x50, 0xf5, 0xb3, 0x7d, 0xb5, 0xd7, 0x2b, 0x2b, 0x1f, 0x6b, 0x65, 0xfd,
-	0xa6, 0x90, 0x4c, 0x0c, 0x72, 0x89, 0x35, 0x0a, 0x1c, 0x03, 0xfd, 0x1e, 0x0e, 0x97, 0x98, 0x30,
-	0x6e, 0xf7, 0xbc, 0x77, 0x68, 0xe5, 0x9a, 0x03, 0x0c, 0x94, 0x85, 0x9c, 0x23, 0x9c, 0xaf, 0x44,
-	0xd6, 0x0e, 0x98, 0x4f, 0x1a, 0x09, 0x8b, 0x72, 0x06, 0x8b, 0xce, 0x8f, 0xb7, 0x56, 0x96, 0x88,
-	0x94, 0xf2, 0xc4, 0x13, 0x32, 0xf1, 0x13, 0xe4, 0x66, 0x42, 0x7e, 0xd5, 0xa2, 0x39, 0x53, 0x8d,
-	0x7f, 0x95, 0x77, 0xf6, 0x73, 0xd9, 0x37, 0xa2, 0x37, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xd6,
-	0x9c, 0xa4, 0x92, 0x79, 0x04, 0x00, 0x00,
+	// 522 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x94, 0xd1, 0x6e, 0xd3, 0x30,
+	0x14, 0x86, 0xd3, 0x6e, 0xab, 0xba, 0xd3, 0xae, 0xeb, 0x3c, 0x4d, 0x94, 0x08, 0x01, 0x2a, 0x42,
+	0xe2, 0xca, 0x51, 0xc7, 0x0d, 0x12, 0x42, 0x82, 0x6e, 0x82, 0x08, 0x09, 0xad, 0x4a, 0x07, 0x48,
+	0xdc, 0x04, 0xb7, 0x31, 0x91, 0xa5, 0xc4, 0x8e, 0x6c, 0x67, 0x74, 0x57, 0xdc, 0xf0, 0x34, 0x3c,
+	0x02, 0x6f, 0xc1, 0x1b, 0xa1, 0x38, 0x4e, 0x9b, 0x35, 0x17, 0xeb, 0x5d, 0xdc, 0xf3, 0xff, 0xff,
+	0xf9, 0x7c, 0x8e, 0x55, 0x78, 0x16, 0x0b, 0x11, 0x27, 0xd4, 0x53, 0x19, 0xe1, 0x9c, 0x4a, 0xef,
+	0x66, 0xe2, 0x69, 0x49, 0xb8, 0x22, 0x4b, 0xcd, 0x04, 0xc7, 0x99, 0x14, 0x5a, 0xa0, 0x93, 0x52,
+	0x84, 0xad, 0x08, 0xdf, 0x4c, 0xdc, 0x47, 0xd6, 0x47, 0x32, 0xe6, 0x11, 0xce, 0x85, 0x26, 0x85,
+	0x5e, 0x95, 0x06, 0xf7, 0xb1, 0xad, 0x9a, 0xd3, 0x22, 0xff, 0xe1, 0x45, 0xb9, 0x24, 0x9b, 0x40,
+	0xf7, 0xc9, 0x76, 0x5d, 0xb3, 0x94, 0x2a, 0x4d, 0xd2, 0xac, 0x14, 0x8c, 0xff, 0xed, 0x03, 0xba,
+	0xde, 0x70, 0x5c, 0x65, 0x26, 0x1d, 0xcd, 0x00, 0x24, 0x25, 0x51, 0xf8, 0x53, 0x32, 0x4d, 0x47,
+	0xad, 0xa7, 0xad, 0x17, 0xbd, 0x73, 0x0f, 0x37, 0xe8, 0x70, 0xd3, 0x8a, 0x03, 0x4a, 0xa2, 0xaf,
+	0x85, 0xcd, 0x77, 0x82, 0x43, 0x59, 0x1d, 0xd0, 0x27, 0x30, 0x87, 0x50, 0xf0, 0xe4, 0x76, 0xd4,
+	0x36, 0x81, 0x78, 0xf7, 0xc0, 0x2b, 0x9e, 0xdc, 0xfa, 0x4e, 0xd0, 0x95, 0xf6, 0xdb, 0xed, 0xc1,
+	0xe1, 0xba, 0x91, 0xfb, 0x7b, 0x0f, 0xba, 0x95, 0x0a, 0x8d, 0xa0, 0xa3, 0xb4, 0x14, 0x3c, 0x36,
+	0xd8, 0x5d, 0xdf, 0x09, 0xec, 0x19, 0x7d, 0x04, 0x94, 0x32, 0x1e, 0x1a, 0x8c, 0xf5, 0x1c, 0x2c,
+	0x8b, 0x5b, 0xb1, 0x54, 0x93, 0xc2, 0xd7, 0x95, 0xc2, 0x77, 0x82, 0x61, 0xca, 0x78, 0xd1, 0x60,
+	0xfd, 0x1b, 0x7a, 0x0b, 0x47, 0x29, 0x59, 0x85, 0x4a, 0x93, 0x84, 0x72, 0xaa, 0xd4, 0x68, 0xcf,
+	0xc4, 0x3c, 0x6c, 0xc4, 0x5c, 0xda, 0x85, 0xf8, 0x4e, 0xd0, 0x4f, 0xc9, 0x6a, 0x5e, 0x19, 0xd0,
+	0x05, 0x0c, 0xb6, 0x48, 0xf6, 0x77, 0x20, 0x39, 0x92, 0x77, 0x30, 0x2e, 0xe1, 0x98, 0xae, 0xc8,
+	0x52, 0xd7, 0x40, 0x0e, 0xee, 0x07, 0x19, 0x18, 0xcf, 0x06, 0xe5, 0x1c, 0xce, 0x24, 0xd5, 0xb9,
+	0x6c, 0xcc, 0xa6, 0x53, 0x4c, 0x30, 0x38, 0x2d, 0x8b, 0x77, 0x06, 0x30, 0x3d, 0x81, 0xe3, 0xb5,
+	0x2e, 0x5c, 0x88, 0x9c, 0x47, 0xd3, 0x0e, 0xec, 0xa7, 0x22, 0xa2, 0xe3, 0xef, 0xd0, 0xab, 0xad,
+	0x11, 0x0d, 0xa0, 0xcd, 0x22, 0xb3, 0x8c, 0x7e, 0xd0, 0x66, 0x11, 0x7a, 0xd7, 0xb8, 0xf8, 0xbd,
+	0x2b, 0xd8, 0xba, 0xf6, 0xf8, 0x6f, 0x0b, 0x4e, 0x6b, 0x2d, 0xe6, 0x34, 0xa1, 0x4b, 0x2d, 0x24,
+	0x7a, 0x0f, 0xa0, 0x18, 0x8f, 0x13, 0x1a, 0xe6, 0xaa, 0x7a, 0xb6, 0xcf, 0x77, 0x7a, 0x65, 0xc5,
+	0x63, 0x2d, 0xad, 0x9f, 0x15, 0x45, 0x43, 0x83, 0x5c, 0x60, 0xf5, 0x7d, 0xc7, 0x40, 0xbf, 0x81,
+	0x83, 0x05, 0x8d, 0x19, 0xb7, 0x7b, 0xde, 0x39, 0xb4, 0x74, 0x4d, 0x01, 0xba, 0xca, 0x42, 0x4e,
+	0x7f, 0xc1, 0xd9, 0x52, 0xa4, 0xcd, 0x80, 0xe9, 0xb0, 0x96, 0x30, 0x2b, 0x66, 0x30, 0x6b, 0x7d,
+	0x7b, 0x65, 0x65, 0xb1, 0x48, 0x08, 0x8f, 0xb1, 0x90, 0xb1, 0x17, 0x53, 0x6e, 0x26, 0xe4, 0x95,
+	0x25, 0x92, 0x31, 0x55, 0xfb, 0x57, 0x79, 0x6d, 0x3f, 0xff, 0xb4, 0x1f, 0x7c, 0x28, 0xad, 0x17,
+	0x89, 0xc8, 0x23, 0x3c, 0xb7, 0x7d, 0xbe, 0x4c, 0x16, 0x1d, 0x63, 0x7f, 0xf9, 0x3f, 0x00, 0x00,
+	0xff, 0xff, 0xeb, 0x34, 0x76, 0xbe, 0x93, 0x04, 0x00, 0x00,
 }
diff --git a/googleapis/spanner/v1/type.pb.go b/googleapis/spanner/v1/type.pb.go
index ff193941..1df292f7 100644
--- a/googleapis/spanner/v1/type.pb.go
+++ b/googleapis/spanner/v1/type.pb.go
@@ -186,31 +186,32 @@ func init() {
 func init() { proto.RegisterFile("google/spanner/v1/type.proto", fileDescriptor6) }
 
 var fileDescriptor6 = []byte{
-	// 413 bytes of a gzipped FileDescriptorProto
+	// 430 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xd1, 0x8a, 0xd3, 0x40,
-	0x14, 0x86, 0x9d, 0x6d, 0xda, 0x6d, 0x4e, 0x51, 0xc6, 0x81, 0xc5, 0xba, 0x2a, 0x94, 0xf5, 0xa6,
-	0x28, 0x24, 0x6c, 0x15, 0x11, 0x16, 0x84, 0x34, 0x9d, 0x6a, 0x60, 0xb7, 0x09, 0xc9, 0xec, 0x45,
-	0xbd, 0x30, 0x8c, 0xed, 0x18, 0x02, 0xe9, 0x4c, 0x48, 0xe2, 0x42, 0x5f, 0xc2, 0x1b, 0xdf, 0xc7,
-	0x67, 0x93, 0x99, 0x64, 0x55, 0xa8, 0xca, 0xde, 0xfd, 0x33, 0xff, 0xff, 0x9d, 0x39, 0x73, 0x38,
-	0xf0, 0x34, 0x53, 0x2a, 0x2b, 0x84, 0x5b, 0x97, 0x5c, 0x4a, 0x51, 0xb9, 0x37, 0xe7, 0x6e, 0xb3,
-	0x2f, 0x85, 0x53, 0x56, 0xaa, 0x51, 0xe4, 0x61, 0xeb, 0x3a, 0x9d, 0xeb, 0xdc, 0x9c, 0x9f, 0xde,
-	0x02, 0xbc, 0xcc, 0x5d, 0x2e, 0xa5, 0x6a, 0x78, 0x93, 0x2b, 0x59, 0xb7, 0xc0, 0xd9, 0x0f, 0x04,
-	0x16, 0xdb, 0x97, 0x82, 0xb8, 0x60, 0x6d, 0xd4, 0x56, 0x8c, 0xd1, 0x04, 0x4d, 0x1f, 0xcc, 0x9e,
-	0x38, 0x07, 0x85, 0x1c, 0x1d, 0xf3, 0xd5, 0x56, 0xc4, 0x26, 0x48, 0x28, 0x10, 0x5e, 0x55, 0x7c,
-	0x9f, 0x8a, 0x42, 0xec, 0x84, 0x6c, 0x52, 0xdd, 0xc6, 0xf8, 0x68, 0x82, 0xa6, 0xa3, 0xd9, 0xa3,
-	0x7f, 0xe0, 0x31, 0x36, 0x08, 0x6d, 0x09, 0xf3, 0xee, 0x3b, 0x18, 0xd5, 0x4d, 0xf5, 0x75, 0xd3,
-	0xf1, 0x3d, 0xc3, 0x3f, 0xfb, 0x0b, 0x9f, 0x98, 0x94, 0xa9, 0x02, 0xf5, 0x2f, 0x7d, 0xf6, 0x1d,
-	0x01, 0xfc, 0xb6, 0xc8, 0x05, 0x0c, 0xbe, 0xe4, 0xa2, 0xd8, 0xd6, 0x63, 0x34, 0xe9, 0x4d, 0x47,
-	0xb3, 0xe7, 0xff, 0xad, 0xe4, 0x2c, 0x75, 0x36, 0xee, 0x90, 0xd3, 0x0f, 0xd0, 0x37, 0x17, 0x84,
-	0x80, 0x25, 0xf9, 0xae, 0x1d, 0x86, 0x1d, 0x1b, 0x4d, 0x5e, 0x82, 0x75, 0x97, 0x1f, 0x9a, 0xd0,
-	0x8b, 0x6f, 0x08, 0x86, 0xb7, 0xf3, 0x22, 0x8f, 0xe1, 0x84, 0xad, 0x23, 0x9a, 0xfa, 0xe1, 0x82,
-	0xa6, 0xd7, 0xab, 0x24, 0xa2, 0x7e, 0xb0, 0x0c, 0xe8, 0x02, 0xdf, 0x23, 0x43, 0xb0, 0xe6, 0x61,
-	0x78, 0x89, 0x11, 0xb1, 0xa1, 0x1f, 0xac, 0xd8, 0x9b, 0xd7, 0xf8, 0x88, 0x8c, 0xe0, 0x78, 0x79,
-	0x19, 0x7a, 0xfa, 0xd0, 0x23, 0xf7, 0xc1, 0x66, 0xc1, 0x15, 0x4d, 0x98, 0x77, 0x15, 0x61, 0x4b,
-	0x03, 0x0b, 0x8f, 0x51, 0xdc, 0x27, 0x00, 0x83, 0x84, 0xc5, 0xc1, 0xea, 0x3d, 0x1e, 0x68, 0x78,
-	0xbe, 0x66, 0x34, 0xc1, 0xc7, 0x5a, 0x7a, 0x71, 0xec, 0xad, 0xf1, 0xb0, 0x4b, 0x5c, 0xfb, 0x0c,
-	0xdb, 0xf3, 0x4f, 0x70, 0xb2, 0x51, 0xbb, 0xc3, 0xa6, 0xe7, 0xb6, 0x6e, 0x33, 0xd2, 0xbb, 0x10,
-	0xa1, 0x8f, 0x6f, 0x3b, 0x3f, 0x53, 0x05, 0x97, 0x99, 0xa3, 0xaa, 0xcc, 0xcd, 0x84, 0x34, 0x9b,
-	0xe2, 0xb6, 0x16, 0x2f, 0xf3, 0xfa, 0x8f, 0xdd, 0xbb, 0xe8, 0xe4, 0xe7, 0x81, 0x09, 0xbd, 0xfa,
-	0x19, 0x00, 0x00, 0xff, 0xff, 0xc9, 0x01, 0x17, 0xda, 0x9f, 0x02, 0x00, 0x00,
+	0x14, 0x86, 0x9d, 0x36, 0xed, 0x36, 0xa7, 0x28, 0xe3, 0xc0, 0xb2, 0x75, 0x55, 0x28, 0xeb, 0x4d,
+	0x51, 0x48, 0x68, 0x15, 0x11, 0x16, 0x84, 0x34, 0x9d, 0xae, 0x81, 0xdd, 0x36, 0x24, 0xb3, 0x42,
+	0xbd, 0x29, 0x63, 0x3b, 0x86, 0x40, 0x3a, 0x13, 0x92, 0xec, 0x62, 0x5f, 0xc2, 0x1b, 0xdf, 0xc2,
+	0x87, 0xf0, 0xd9, 0x64, 0x26, 0x59, 0x15, 0xaa, 0xe2, 0xdd, 0x9f, 0xfc, 0xff, 0x77, 0xce, 0x99,
+	0xc3, 0x81, 0x27, 0x89, 0x52, 0x49, 0x26, 0xdc, 0x32, 0xe7, 0x52, 0x8a, 0xc2, 0xbd, 0x1d, 0xbb,
+	0xd5, 0x3e, 0x17, 0x4e, 0x5e, 0xa8, 0x4a, 0x91, 0x87, 0xb5, 0xeb, 0x34, 0xae, 0x73, 0x3b, 0x3e,
+	0xbd, 0x03, 0x78, 0x9e, 0xba, 0x5c, 0x4a, 0x55, 0xf1, 0x2a, 0x55, 0xb2, 0xac, 0x81, 0xb3, 0xef,
+	0x08, 0x2c, 0xb6, 0xcf, 0x05, 0x71, 0xc1, 0xda, 0xa8, 0xad, 0x18, 0xa0, 0x21, 0x1a, 0x3d, 0x98,
+	0x3c, 0x76, 0x0e, 0x0a, 0x39, 0x3a, 0xe6, 0xab, 0xad, 0x88, 0x4c, 0x90, 0x50, 0x20, 0xbc, 0x28,
+	0xf8, 0x7e, 0x2d, 0x32, 0xb1, 0x13, 0xb2, 0x5a, 0xeb, 0x31, 0x06, 0xad, 0x21, 0x1a, 0xf5, 0x27,
+	0x27, 0x7f, 0xc1, 0x23, 0x6c, 0x10, 0x5a, 0x13, 0xa6, 0xef, 0x5b, 0xe8, 0x97, 0x55, 0x71, 0xb3,
+	0x69, 0xf8, 0xb6, 0xe1, 0x9f, 0xfe, 0x81, 0x8f, 0x4d, 0xca, 0x54, 0x81, 0xf2, 0xa7, 0x3e, 0xfb,
+	0x8a, 0x00, 0x7e, 0x59, 0xe4, 0x1c, 0xba, 0x9f, 0x52, 0x91, 0x6d, 0xcb, 0x01, 0x1a, 0xb6, 0x47,
+	0xfd, 0xc9, 0xb3, 0x7f, 0x56, 0x72, 0xe6, 0x3a, 0x1b, 0x35, 0xc8, 0xe9, 0x3b, 0xe8, 0x98, 0x1f,
+	0x84, 0x80, 0x25, 0xf9, 0xae, 0x5e, 0x86, 0x1d, 0x19, 0x4d, 0x5e, 0x80, 0xf5, 0x3f, 0x2f, 0x34,
+	0xa1, 0xe7, 0x5f, 0x10, 0xf4, 0xee, 0xf6, 0x45, 0x1e, 0xc1, 0x31, 0x5b, 0x85, 0x74, 0xed, 0x2f,
+	0x67, 0x74, 0x7d, 0xbd, 0x88, 0x43, 0xea, 0x07, 0xf3, 0x80, 0xce, 0xf0, 0x3d, 0xd2, 0x03, 0x6b,
+	0xba, 0x5c, 0x5e, 0x62, 0x44, 0x6c, 0xe8, 0x04, 0x0b, 0xf6, 0xfa, 0x15, 0x6e, 0x91, 0x3e, 0x1c,
+	0xcd, 0x2f, 0x97, 0x9e, 0xfe, 0x68, 0x93, 0xfb, 0x60, 0xb3, 0xe0, 0x8a, 0xc6, 0xcc, 0xbb, 0x0a,
+	0xb1, 0xa5, 0x81, 0x99, 0xc7, 0x28, 0xee, 0x10, 0x80, 0x6e, 0xcc, 0xa2, 0x60, 0x71, 0x81, 0xbb,
+	0x1a, 0x9e, 0xae, 0x18, 0x8d, 0xf1, 0x91, 0x96, 0x5e, 0x14, 0x79, 0x2b, 0xdc, 0x6b, 0x12, 0xd7,
+	0x3e, 0xc3, 0xf6, 0xf4, 0x33, 0x1c, 0x6f, 0xd4, 0xee, 0x70, 0xe8, 0xa9, 0xad, 0xc7, 0x0c, 0xf5,
+	0x2d, 0x84, 0xe8, 0xc3, 0x9b, 0xc6, 0x4f, 0x54, 0xc6, 0x65, 0xe2, 0xa8, 0x22, 0x71, 0x13, 0x21,
+	0xcd, 0xa5, 0xb8, 0xb5, 0xc5, 0xf3, 0xb4, 0xfc, 0xed, 0xf6, 0xce, 0x1b, 0xf9, 0xad, 0x75, 0x72,
+	0x51, 0xa3, 0x7e, 0xa6, 0x6e, 0xb6, 0x4e, 0xdc, 0x34, 0x78, 0x3f, 0xfe, 0xd8, 0x35, 0xf8, 0xcb,
+	0x1f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf4, 0xaa, 0xcb, 0xef, 0xb9, 0x02, 0x00, 0x00,
 }
diff --git a/protobuf/ptype/type.pb.go b/protobuf/ptype/type.pb.go
index d6fb35ef..7f9033dd 100644
--- a/protobuf/ptype/type.pb.go
+++ b/protobuf/ptype/type.pb.go
@@ -439,9 +439,15 @@ func (m *EnumValue) GetOptions() []*Option {
 // A protocol buffer option, which can be attached to a message, field,
 // enumeration, etc.
 type Option struct {
-	// The option's name. For example, `"java_package"`.
+	// The option's name. For protobuf built-in options (options defined in
+	// descriptor.proto), this is the short name. For example, `"map_entry"`.
+	// For custom options, it should be the fully-qualified name. For example,
+	// `"google.api.http"`.
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	// The option's value. For example, `"com.google.protobuf"`.
+	// The option's value packed in an Any message. If the value is a primitive,
+	// the corresponding wrapper type defined in google/protobuf/wrappers.proto
+	// should be used. If the value is an enum, it should be stored as an int32
+	// value using the google.protobuf.Int32Value type.
 	Value *google_protobuf.Any `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
 }
 
-- 
GitLab