blob: 11f8e8ad58fb2071745d0d85f74e47a0c1eab0b1 [file] [log] [blame]
// Copyright 2023 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
// protoc v4.25.3
// source: google/cloud/dataplex/v1/data_taxonomy.proto
package dataplexpb
import (
context "context"
reflect "reflect"
sync "sync"
longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb"
_ "google.golang.org/genproto/googleapis/api/annotations"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
_ "google.golang.org/protobuf/types/known/emptypb"
fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// DataTaxonomy represents a set of hierarchical DataAttributes resources,
// grouped with a common theme Eg: 'SensitiveDataTaxonomy' can have attributes
// to manage PII data. It is defined at project level.
type DataTaxonomy struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Output only. The relative resource name of the DataTaxonomy, of the form:
// projects/{project_number}/locations/{location_id}/dataTaxonomies/{data_taxonomy_id}.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Output only. System generated globally unique ID for the dataTaxonomy. This
// ID will be different if the DataTaxonomy is deleted and re-created with the
// same name.
Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"`
// Output only. The time when the DataTaxonomy was created.
CreateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
// Output only. The time when the DataTaxonomy was last updated.
UpdateTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
// Optional. Description of the DataTaxonomy.
Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
// Optional. User friendly display name.
DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
// Optional. User-defined labels for the DataTaxonomy.
Labels map[string]string `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// Output only. The number of attributes in the DataTaxonomy.
AttributeCount int32 `protobuf:"varint,9,opt,name=attribute_count,json=attributeCount,proto3" json:"attribute_count,omitempty"`
// This checksum is computed by the server based on the value of other
// fields, and may be sent on update and delete requests to ensure the
// client has an up-to-date value before proceeding.
Etag string `protobuf:"bytes,10,opt,name=etag,proto3" json:"etag,omitempty"`
// Output only. The number of classes in the DataTaxonomy.
ClassCount int32 `protobuf:"varint,11,opt,name=class_count,json=classCount,proto3" json:"class_count,omitempty"`
}
func (x *DataTaxonomy) Reset() {
*x = DataTaxonomy{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DataTaxonomy) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DataTaxonomy) ProtoMessage() {}
func (x *DataTaxonomy) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DataTaxonomy.ProtoReflect.Descriptor instead.
func (*DataTaxonomy) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{0}
}
func (x *DataTaxonomy) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *DataTaxonomy) GetUid() string {
if x != nil {
return x.Uid
}
return ""
}
func (x *DataTaxonomy) GetCreateTime() *timestamppb.Timestamp {
if x != nil {
return x.CreateTime
}
return nil
}
func (x *DataTaxonomy) GetUpdateTime() *timestamppb.Timestamp {
if x != nil {
return x.UpdateTime
}
return nil
}
func (x *DataTaxonomy) GetDescription() string {
if x != nil {
return x.Description
}
return ""
}
func (x *DataTaxonomy) GetDisplayName() string {
if x != nil {
return x.DisplayName
}
return ""
}
func (x *DataTaxonomy) GetLabels() map[string]string {
if x != nil {
return x.Labels
}
return nil
}
func (x *DataTaxonomy) GetAttributeCount() int32 {
if x != nil {
return x.AttributeCount
}
return 0
}
func (x *DataTaxonomy) GetEtag() string {
if x != nil {
return x.Etag
}
return ""
}
func (x *DataTaxonomy) GetClassCount() int32 {
if x != nil {
return x.ClassCount
}
return 0
}
// Denotes one dataAttribute in a dataTaxonomy, for example, PII.
// DataAttribute resources can be defined in a hierarchy.
// A single dataAttribute resource can contain specs of multiple types
//
// ```
// PII
// - ResourceAccessSpec :
// - readers :foo@bar.com
// - DataAccessSpec :
// - readers :bar@foo.com
//
// ```
type DataAttribute struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Output only. The relative resource name of the dataAttribute, of the form:
// projects/{project_number}/locations/{location_id}/dataTaxonomies/{dataTaxonomy}/attributes/{data_attribute_id}.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Output only. System generated globally unique ID for the DataAttribute.
// This ID will be different if the DataAttribute is deleted and re-created
// with the same name.
Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"`
// Output only. The time when the DataAttribute was created.
CreateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
// Output only. The time when the DataAttribute was last updated.
UpdateTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
// Optional. Description of the DataAttribute.
Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
// Optional. User friendly display name.
DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
// Optional. User-defined labels for the DataAttribute.
Labels map[string]string `protobuf:"bytes,7,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// Optional. The ID of the parent DataAttribute resource, should belong to the
// same data taxonomy. Circular dependency in parent chain is not valid.
// Maximum depth of the hierarchy allowed is 4.
// [a -> b -> c -> d -> e, depth = 4]
ParentId string `protobuf:"bytes,8,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
// Output only. The number of child attributes present for this attribute.
AttributeCount int32 `protobuf:"varint,9,opt,name=attribute_count,json=attributeCount,proto3" json:"attribute_count,omitempty"`
// This checksum is computed by the server based on the value of other
// fields, and may be sent on update and delete requests to ensure the
// client has an up-to-date value before proceeding.
Etag string `protobuf:"bytes,10,opt,name=etag,proto3" json:"etag,omitempty"`
// Optional. Specified when applied to a resource (eg: Cloud Storage bucket,
// BigQuery dataset, BigQuery table).
ResourceAccessSpec *ResourceAccessSpec `protobuf:"bytes,100,opt,name=resource_access_spec,json=resourceAccessSpec,proto3" json:"resource_access_spec,omitempty"`
// Optional. Specified when applied to data stored on the resource (eg: rows,
// columns in BigQuery Tables).
DataAccessSpec *DataAccessSpec `protobuf:"bytes,101,opt,name=data_access_spec,json=dataAccessSpec,proto3" json:"data_access_spec,omitempty"`
}
func (x *DataAttribute) Reset() {
*x = DataAttribute{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DataAttribute) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DataAttribute) ProtoMessage() {}
func (x *DataAttribute) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DataAttribute.ProtoReflect.Descriptor instead.
func (*DataAttribute) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{1}
}
func (x *DataAttribute) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *DataAttribute) GetUid() string {
if x != nil {
return x.Uid
}
return ""
}
func (x *DataAttribute) GetCreateTime() *timestamppb.Timestamp {
if x != nil {
return x.CreateTime
}
return nil
}
func (x *DataAttribute) GetUpdateTime() *timestamppb.Timestamp {
if x != nil {
return x.UpdateTime
}
return nil
}
func (x *DataAttribute) GetDescription() string {
if x != nil {
return x.Description
}
return ""
}
func (x *DataAttribute) GetDisplayName() string {
if x != nil {
return x.DisplayName
}
return ""
}
func (x *DataAttribute) GetLabels() map[string]string {
if x != nil {
return x.Labels
}
return nil
}
func (x *DataAttribute) GetParentId() string {
if x != nil {
return x.ParentId
}
return ""
}
func (x *DataAttribute) GetAttributeCount() int32 {
if x != nil {
return x.AttributeCount
}
return 0
}
func (x *DataAttribute) GetEtag() string {
if x != nil {
return x.Etag
}
return ""
}
func (x *DataAttribute) GetResourceAccessSpec() *ResourceAccessSpec {
if x != nil {
return x.ResourceAccessSpec
}
return nil
}
func (x *DataAttribute) GetDataAccessSpec() *DataAccessSpec {
if x != nil {
return x.DataAccessSpec
}
return nil
}
// DataAttributeBinding represents binding of attributes to resources. Eg: Bind
// 'CustomerInfo' entity with 'PII' attribute.
type DataAttributeBinding struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Output only. The relative resource name of the Data Attribute Binding, of
// the form:
// projects/{project_number}/locations/{location}/dataAttributeBindings/{data_attribute_binding_id}
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Output only. System generated globally unique ID for the
// DataAttributeBinding. This ID will be different if the DataAttributeBinding
// is deleted and re-created with the same name.
Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"`
// Output only. The time when the DataAttributeBinding was created.
CreateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
// Output only. The time when the DataAttributeBinding was last updated.
UpdateTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
// Optional. Description of the DataAttributeBinding.
Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
// Optional. User friendly display name.
DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
// Optional. User-defined labels for the DataAttributeBinding.
Labels map[string]string `protobuf:"bytes,7,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// This checksum is computed by the server based on the value of other
// fields, and may be sent on update and delete requests to ensure the
// client has an up-to-date value before proceeding.
// Etags must be used when calling the DeleteDataAttributeBinding and the
// UpdateDataAttributeBinding method.
Etag string `protobuf:"bytes,8,opt,name=etag,proto3" json:"etag,omitempty"`
// The reference to the resource that is associated to attributes, or
// the query to match resources and associate attributes.
//
// Types that are assignable to ResourceReference:
//
// *DataAttributeBinding_Resource
ResourceReference isDataAttributeBinding_ResourceReference `protobuf_oneof:"resource_reference"`
// Optional. List of attributes to be associated with the resource, provided
// in the form:
// projects/{project}/locations/{location}/dataTaxonomies/{dataTaxonomy}/attributes/{data_attribute_id}
Attributes []string `protobuf:"bytes,110,rep,name=attributes,proto3" json:"attributes,omitempty"`
// Optional. The list of paths for items within the associated resource (eg.
// columns and partitions within a table) along with attribute bindings.
Paths []*DataAttributeBinding_Path `protobuf:"bytes,120,rep,name=paths,proto3" json:"paths,omitempty"`
}
func (x *DataAttributeBinding) Reset() {
*x = DataAttributeBinding{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DataAttributeBinding) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DataAttributeBinding) ProtoMessage() {}
func (x *DataAttributeBinding) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DataAttributeBinding.ProtoReflect.Descriptor instead.
func (*DataAttributeBinding) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{2}
}
func (x *DataAttributeBinding) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *DataAttributeBinding) GetUid() string {
if x != nil {
return x.Uid
}
return ""
}
func (x *DataAttributeBinding) GetCreateTime() *timestamppb.Timestamp {
if x != nil {
return x.CreateTime
}
return nil
}
func (x *DataAttributeBinding) GetUpdateTime() *timestamppb.Timestamp {
if x != nil {
return x.UpdateTime
}
return nil
}
func (x *DataAttributeBinding) GetDescription() string {
if x != nil {
return x.Description
}
return ""
}
func (x *DataAttributeBinding) GetDisplayName() string {
if x != nil {
return x.DisplayName
}
return ""
}
func (x *DataAttributeBinding) GetLabels() map[string]string {
if x != nil {
return x.Labels
}
return nil
}
func (x *DataAttributeBinding) GetEtag() string {
if x != nil {
return x.Etag
}
return ""
}
func (m *DataAttributeBinding) GetResourceReference() isDataAttributeBinding_ResourceReference {
if m != nil {
return m.ResourceReference
}
return nil
}
func (x *DataAttributeBinding) GetResource() string {
if x, ok := x.GetResourceReference().(*DataAttributeBinding_Resource); ok {
return x.Resource
}
return ""
}
func (x *DataAttributeBinding) GetAttributes() []string {
if x != nil {
return x.Attributes
}
return nil
}
func (x *DataAttributeBinding) GetPaths() []*DataAttributeBinding_Path {
if x != nil {
return x.Paths
}
return nil
}
type isDataAttributeBinding_ResourceReference interface {
isDataAttributeBinding_ResourceReference()
}
type DataAttributeBinding_Resource struct {
// Optional. Immutable. The resource name of the resource that is associated
// to attributes. Presently, only entity resource is supported in the form:
// projects/{project}/locations/{location}/lakes/{lake}/zones/{zone}/entities/{entity_id}
// Must belong in the same project and region as the attribute binding, and
// there can only exist one active binding for a resource.
Resource string `protobuf:"bytes,100,opt,name=resource,proto3,oneof"`
}
func (*DataAttributeBinding_Resource) isDataAttributeBinding_ResourceReference() {}
// Create DataTaxonomy request.
type CreateDataTaxonomyRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name of the data taxonomy location, of the form:
// projects/{project_number}/locations/{location_id}
// where `location_id` refers to a GCP region.
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Required. DataTaxonomy identifier.
// * Must contain only lowercase letters, numbers and hyphens.
// * Must start with a letter.
// * Must be between 1-63 characters.
// * Must end with a number or a letter.
// * Must be unique within the Project.
DataTaxonomyId string `protobuf:"bytes,2,opt,name=data_taxonomy_id,json=dataTaxonomyId,proto3" json:"data_taxonomy_id,omitempty"`
// Required. DataTaxonomy resource.
DataTaxonomy *DataTaxonomy `protobuf:"bytes,3,opt,name=data_taxonomy,json=dataTaxonomy,proto3" json:"data_taxonomy,omitempty"`
// Optional. Only validate the request, but do not perform mutations.
// The default is false.
ValidateOnly bool `protobuf:"varint,4,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
}
func (x *CreateDataTaxonomyRequest) Reset() {
*x = CreateDataTaxonomyRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CreateDataTaxonomyRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CreateDataTaxonomyRequest) ProtoMessage() {}
func (x *CreateDataTaxonomyRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CreateDataTaxonomyRequest.ProtoReflect.Descriptor instead.
func (*CreateDataTaxonomyRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{3}
}
func (x *CreateDataTaxonomyRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *CreateDataTaxonomyRequest) GetDataTaxonomyId() string {
if x != nil {
return x.DataTaxonomyId
}
return ""
}
func (x *CreateDataTaxonomyRequest) GetDataTaxonomy() *DataTaxonomy {
if x != nil {
return x.DataTaxonomy
}
return nil
}
func (x *CreateDataTaxonomyRequest) GetValidateOnly() bool {
if x != nil {
return x.ValidateOnly
}
return false
}
// Update DataTaxonomy request.
type UpdateDataTaxonomyRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Mask of fields to update.
UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,1,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
// Required. Only fields specified in `update_mask` are updated.
DataTaxonomy *DataTaxonomy `protobuf:"bytes,2,opt,name=data_taxonomy,json=dataTaxonomy,proto3" json:"data_taxonomy,omitempty"`
// Optional. Only validate the request, but do not perform mutations.
// The default is false.
ValidateOnly bool `protobuf:"varint,3,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
}
func (x *UpdateDataTaxonomyRequest) Reset() {
*x = UpdateDataTaxonomyRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UpdateDataTaxonomyRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdateDataTaxonomyRequest) ProtoMessage() {}
func (x *UpdateDataTaxonomyRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use UpdateDataTaxonomyRequest.ProtoReflect.Descriptor instead.
func (*UpdateDataTaxonomyRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{4}
}
func (x *UpdateDataTaxonomyRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
if x != nil {
return x.UpdateMask
}
return nil
}
func (x *UpdateDataTaxonomyRequest) GetDataTaxonomy() *DataTaxonomy {
if x != nil {
return x.DataTaxonomy
}
return nil
}
func (x *UpdateDataTaxonomyRequest) GetValidateOnly() bool {
if x != nil {
return x.ValidateOnly
}
return false
}
// Get DataTaxonomy request.
type GetDataTaxonomyRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name of the DataTaxonomy:
// projects/{project_number}/locations/{location_id}/dataTaxonomies/{data_taxonomy_id}
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *GetDataTaxonomyRequest) Reset() {
*x = GetDataTaxonomyRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetDataTaxonomyRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetDataTaxonomyRequest) ProtoMessage() {}
func (x *GetDataTaxonomyRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetDataTaxonomyRequest.ProtoReflect.Descriptor instead.
func (*GetDataTaxonomyRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{5}
}
func (x *GetDataTaxonomyRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// List DataTaxonomies request.
type ListDataTaxonomiesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name of the DataTaxonomy location, of the form:
// projects/{project_number}/locations/{location_id}
// where `location_id` refers to a GCP region.
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Optional. Maximum number of DataTaxonomies to return. The service may
// return fewer than this value. If unspecified, at most 10 DataTaxonomies
// will be returned. The maximum value is 1000; values above 1000 will be
// coerced to 1000.
PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// Optional. Page token received from a previous ` ListDataTaxonomies` call.
// Provide this to retrieve the subsequent page. When paginating, all other
// parameters provided to ` ListDataTaxonomies` must match the call that
// provided the page token.
PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
// Optional. Filter request.
Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"`
// Optional. Order by fields for the result.
OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"`
}
func (x *ListDataTaxonomiesRequest) Reset() {
*x = ListDataTaxonomiesRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListDataTaxonomiesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListDataTaxonomiesRequest) ProtoMessage() {}
func (x *ListDataTaxonomiesRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListDataTaxonomiesRequest.ProtoReflect.Descriptor instead.
func (*ListDataTaxonomiesRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{6}
}
func (x *ListDataTaxonomiesRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *ListDataTaxonomiesRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *ListDataTaxonomiesRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
func (x *ListDataTaxonomiesRequest) GetFilter() string {
if x != nil {
return x.Filter
}
return ""
}
func (x *ListDataTaxonomiesRequest) GetOrderBy() string {
if x != nil {
return x.OrderBy
}
return ""
}
// List DataTaxonomies response.
type ListDataTaxonomiesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// DataTaxonomies under the given parent location.
DataTaxonomies []*DataTaxonomy `protobuf:"bytes,1,rep,name=data_taxonomies,json=dataTaxonomies,proto3" json:"data_taxonomies,omitempty"`
// Token to retrieve the next page of results, or empty if there are no more
// results in the list.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
// Locations that could not be reached.
UnreachableLocations []string `protobuf:"bytes,3,rep,name=unreachable_locations,json=unreachableLocations,proto3" json:"unreachable_locations,omitempty"`
}
func (x *ListDataTaxonomiesResponse) Reset() {
*x = ListDataTaxonomiesResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListDataTaxonomiesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListDataTaxonomiesResponse) ProtoMessage() {}
func (x *ListDataTaxonomiesResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListDataTaxonomiesResponse.ProtoReflect.Descriptor instead.
func (*ListDataTaxonomiesResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{7}
}
func (x *ListDataTaxonomiesResponse) GetDataTaxonomies() []*DataTaxonomy {
if x != nil {
return x.DataTaxonomies
}
return nil
}
func (x *ListDataTaxonomiesResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
func (x *ListDataTaxonomiesResponse) GetUnreachableLocations() []string {
if x != nil {
return x.UnreachableLocations
}
return nil
}
// Delete DataTaxonomy request.
type DeleteDataTaxonomyRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name of the DataTaxonomy:
// projects/{project_number}/locations/{location_id}/dataTaxonomies/{data_taxonomy_id}
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Optional. If the client provided etag value does not match the current etag
// value,the DeleteDataTaxonomy method returns an ABORTED error.
Etag string `protobuf:"bytes,2,opt,name=etag,proto3" json:"etag,omitempty"`
}
func (x *DeleteDataTaxonomyRequest) Reset() {
*x = DeleteDataTaxonomyRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DeleteDataTaxonomyRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DeleteDataTaxonomyRequest) ProtoMessage() {}
func (x *DeleteDataTaxonomyRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DeleteDataTaxonomyRequest.ProtoReflect.Descriptor instead.
func (*DeleteDataTaxonomyRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{8}
}
func (x *DeleteDataTaxonomyRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *DeleteDataTaxonomyRequest) GetEtag() string {
if x != nil {
return x.Etag
}
return ""
}
// Create DataAttribute request.
type CreateDataAttributeRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name of the parent data taxonomy
// projects/{project_number}/locations/{location_id}/dataTaxonomies/{data_taxonomy_id}
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Required. DataAttribute identifier.
// * Must contain only lowercase letters, numbers and hyphens.
// * Must start with a letter.
// * Must be between 1-63 characters.
// * Must end with a number or a letter.
// * Must be unique within the DataTaxonomy.
DataAttributeId string `protobuf:"bytes,2,opt,name=data_attribute_id,json=dataAttributeId,proto3" json:"data_attribute_id,omitempty"`
// Required. DataAttribute resource.
DataAttribute *DataAttribute `protobuf:"bytes,3,opt,name=data_attribute,json=dataAttribute,proto3" json:"data_attribute,omitempty"`
// Optional. Only validate the request, but do not perform mutations.
// The default is false.
ValidateOnly bool `protobuf:"varint,4,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
}
func (x *CreateDataAttributeRequest) Reset() {
*x = CreateDataAttributeRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CreateDataAttributeRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CreateDataAttributeRequest) ProtoMessage() {}
func (x *CreateDataAttributeRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CreateDataAttributeRequest.ProtoReflect.Descriptor instead.
func (*CreateDataAttributeRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{9}
}
func (x *CreateDataAttributeRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *CreateDataAttributeRequest) GetDataAttributeId() string {
if x != nil {
return x.DataAttributeId
}
return ""
}
func (x *CreateDataAttributeRequest) GetDataAttribute() *DataAttribute {
if x != nil {
return x.DataAttribute
}
return nil
}
func (x *CreateDataAttributeRequest) GetValidateOnly() bool {
if x != nil {
return x.ValidateOnly
}
return false
}
// Update DataAttribute request.
type UpdateDataAttributeRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Mask of fields to update.
UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,1,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
// Required. Only fields specified in `update_mask` are updated.
DataAttribute *DataAttribute `protobuf:"bytes,2,opt,name=data_attribute,json=dataAttribute,proto3" json:"data_attribute,omitempty"`
// Optional. Only validate the request, but do not perform mutations.
// The default is false.
ValidateOnly bool `protobuf:"varint,3,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
}
func (x *UpdateDataAttributeRequest) Reset() {
*x = UpdateDataAttributeRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UpdateDataAttributeRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdateDataAttributeRequest) ProtoMessage() {}
func (x *UpdateDataAttributeRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use UpdateDataAttributeRequest.ProtoReflect.Descriptor instead.
func (*UpdateDataAttributeRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{10}
}
func (x *UpdateDataAttributeRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
if x != nil {
return x.UpdateMask
}
return nil
}
func (x *UpdateDataAttributeRequest) GetDataAttribute() *DataAttribute {
if x != nil {
return x.DataAttribute
}
return nil
}
func (x *UpdateDataAttributeRequest) GetValidateOnly() bool {
if x != nil {
return x.ValidateOnly
}
return false
}
// Get DataAttribute request.
type GetDataAttributeRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name of the dataAttribute:
// projects/{project_number}/locations/{location_id}/dataTaxonomies/{dataTaxonomy}/attributes/{data_attribute_id}
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *GetDataAttributeRequest) Reset() {
*x = GetDataAttributeRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetDataAttributeRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetDataAttributeRequest) ProtoMessage() {}
func (x *GetDataAttributeRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetDataAttributeRequest.ProtoReflect.Descriptor instead.
func (*GetDataAttributeRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{11}
}
func (x *GetDataAttributeRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// List DataAttributes request.
type ListDataAttributesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name of the DataTaxonomy:
// projects/{project_number}/locations/{location_id}/dataTaxonomies/{data_taxonomy_id}
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Optional. Maximum number of DataAttributes to return. The service may
// return fewer than this value. If unspecified, at most 10 dataAttributes
// will be returned. The maximum value is 1000; values above 1000 will be
// coerced to 1000.
PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// Optional. Page token received from a previous `ListDataAttributes` call.
// Provide this to retrieve the subsequent page. When paginating, all other
// parameters provided to `ListDataAttributes` must match the call that
// provided the page token.
PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
// Optional. Filter request.
Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"`
// Optional. Order by fields for the result.
OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"`
}
func (x *ListDataAttributesRequest) Reset() {
*x = ListDataAttributesRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListDataAttributesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListDataAttributesRequest) ProtoMessage() {}
func (x *ListDataAttributesRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListDataAttributesRequest.ProtoReflect.Descriptor instead.
func (*ListDataAttributesRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{12}
}
func (x *ListDataAttributesRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *ListDataAttributesRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *ListDataAttributesRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
func (x *ListDataAttributesRequest) GetFilter() string {
if x != nil {
return x.Filter
}
return ""
}
func (x *ListDataAttributesRequest) GetOrderBy() string {
if x != nil {
return x.OrderBy
}
return ""
}
// List DataAttributes response.
type ListDataAttributesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// DataAttributes under the given parent DataTaxonomy.
DataAttributes []*DataAttribute `protobuf:"bytes,1,rep,name=data_attributes,json=dataAttributes,proto3" json:"data_attributes,omitempty"`
// Token to retrieve the next page of results, or empty if there are no more
// results in the list.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
// Locations that could not be reached.
UnreachableLocations []string `protobuf:"bytes,3,rep,name=unreachable_locations,json=unreachableLocations,proto3" json:"unreachable_locations,omitempty"`
}
func (x *ListDataAttributesResponse) Reset() {
*x = ListDataAttributesResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListDataAttributesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListDataAttributesResponse) ProtoMessage() {}
func (x *ListDataAttributesResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[13]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListDataAttributesResponse.ProtoReflect.Descriptor instead.
func (*ListDataAttributesResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{13}
}
func (x *ListDataAttributesResponse) GetDataAttributes() []*DataAttribute {
if x != nil {
return x.DataAttributes
}
return nil
}
func (x *ListDataAttributesResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
func (x *ListDataAttributesResponse) GetUnreachableLocations() []string {
if x != nil {
return x.UnreachableLocations
}
return nil
}
// Delete DataAttribute request.
type DeleteDataAttributeRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name of the DataAttribute:
// projects/{project_number}/locations/{location_id}/dataTaxonomies/{dataTaxonomy}/attributes/{data_attribute_id}
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Optional. If the client provided etag value does not match the current etag
// value, the DeleteDataAttribute method returns an ABORTED error response.
Etag string `protobuf:"bytes,2,opt,name=etag,proto3" json:"etag,omitempty"`
}
func (x *DeleteDataAttributeRequest) Reset() {
*x = DeleteDataAttributeRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DeleteDataAttributeRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DeleteDataAttributeRequest) ProtoMessage() {}
func (x *DeleteDataAttributeRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DeleteDataAttributeRequest.ProtoReflect.Descriptor instead.
func (*DeleteDataAttributeRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{14}
}
func (x *DeleteDataAttributeRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *DeleteDataAttributeRequest) GetEtag() string {
if x != nil {
return x.Etag
}
return ""
}
// Create DataAttributeBinding request.
type CreateDataAttributeBindingRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name of the parent data taxonomy
// projects/{project_number}/locations/{location_id}
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Required. DataAttributeBinding identifier.
// * Must contain only lowercase letters, numbers and hyphens.
// * Must start with a letter.
// * Must be between 1-63 characters.
// * Must end with a number or a letter.
// * Must be unique within the Location.
DataAttributeBindingId string `protobuf:"bytes,2,opt,name=data_attribute_binding_id,json=dataAttributeBindingId,proto3" json:"data_attribute_binding_id,omitempty"`
// Required. DataAttributeBinding resource.
DataAttributeBinding *DataAttributeBinding `protobuf:"bytes,3,opt,name=data_attribute_binding,json=dataAttributeBinding,proto3" json:"data_attribute_binding,omitempty"`
// Optional. Only validate the request, but do not perform mutations.
// The default is false.
ValidateOnly bool `protobuf:"varint,4,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
}
func (x *CreateDataAttributeBindingRequest) Reset() {
*x = CreateDataAttributeBindingRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CreateDataAttributeBindingRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CreateDataAttributeBindingRequest) ProtoMessage() {}
func (x *CreateDataAttributeBindingRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CreateDataAttributeBindingRequest.ProtoReflect.Descriptor instead.
func (*CreateDataAttributeBindingRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{15}
}
func (x *CreateDataAttributeBindingRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *CreateDataAttributeBindingRequest) GetDataAttributeBindingId() string {
if x != nil {
return x.DataAttributeBindingId
}
return ""
}
func (x *CreateDataAttributeBindingRequest) GetDataAttributeBinding() *DataAttributeBinding {
if x != nil {
return x.DataAttributeBinding
}
return nil
}
func (x *CreateDataAttributeBindingRequest) GetValidateOnly() bool {
if x != nil {
return x.ValidateOnly
}
return false
}
// Update DataAttributeBinding request.
type UpdateDataAttributeBindingRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Mask of fields to update.
UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,1,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
// Required. Only fields specified in `update_mask` are updated.
DataAttributeBinding *DataAttributeBinding `protobuf:"bytes,2,opt,name=data_attribute_binding,json=dataAttributeBinding,proto3" json:"data_attribute_binding,omitempty"`
// Optional. Only validate the request, but do not perform mutations.
// The default is false.
ValidateOnly bool `protobuf:"varint,3,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
}
func (x *UpdateDataAttributeBindingRequest) Reset() {
*x = UpdateDataAttributeBindingRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UpdateDataAttributeBindingRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdateDataAttributeBindingRequest) ProtoMessage() {}
func (x *UpdateDataAttributeBindingRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use UpdateDataAttributeBindingRequest.ProtoReflect.Descriptor instead.
func (*UpdateDataAttributeBindingRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{16}
}
func (x *UpdateDataAttributeBindingRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
if x != nil {
return x.UpdateMask
}
return nil
}
func (x *UpdateDataAttributeBindingRequest) GetDataAttributeBinding() *DataAttributeBinding {
if x != nil {
return x.DataAttributeBinding
}
return nil
}
func (x *UpdateDataAttributeBindingRequest) GetValidateOnly() bool {
if x != nil {
return x.ValidateOnly
}
return false
}
// Get DataAttributeBinding request.
type GetDataAttributeBindingRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name of the DataAttributeBinding:
// projects/{project_number}/locations/{location_id}/dataAttributeBindings/{data_attribute_binding_id}
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *GetDataAttributeBindingRequest) Reset() {
*x = GetDataAttributeBindingRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetDataAttributeBindingRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetDataAttributeBindingRequest) ProtoMessage() {}
func (x *GetDataAttributeBindingRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetDataAttributeBindingRequest.ProtoReflect.Descriptor instead.
func (*GetDataAttributeBindingRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{17}
}
func (x *GetDataAttributeBindingRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// List DataAttributeBindings request.
type ListDataAttributeBindingsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name of the Location:
// projects/{project_number}/locations/{location_id}
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Optional. Maximum number of DataAttributeBindings to return. The service
// may return fewer than this value. If unspecified, at most 10
// DataAttributeBindings will be returned. The maximum value is 1000; values
// above 1000 will be coerced to 1000.
PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// Optional. Page token received from a previous `ListDataAttributeBindings`
// call. Provide this to retrieve the subsequent page. When paginating, all
// other parameters provided to `ListDataAttributeBindings` must match the
// call that provided the page token.
PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
// Optional. Filter request.
// Filter using resource: filter=resource:"resource-name"
// Filter using attribute: filter=attributes:"attribute-name"
// Filter using attribute in paths list:
// filter=paths.attributes:"attribute-name"
Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"`
// Optional. Order by fields for the result.
OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"`
}
func (x *ListDataAttributeBindingsRequest) Reset() {
*x = ListDataAttributeBindingsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListDataAttributeBindingsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListDataAttributeBindingsRequest) ProtoMessage() {}
func (x *ListDataAttributeBindingsRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListDataAttributeBindingsRequest.ProtoReflect.Descriptor instead.
func (*ListDataAttributeBindingsRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{18}
}
func (x *ListDataAttributeBindingsRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *ListDataAttributeBindingsRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *ListDataAttributeBindingsRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
func (x *ListDataAttributeBindingsRequest) GetFilter() string {
if x != nil {
return x.Filter
}
return ""
}
func (x *ListDataAttributeBindingsRequest) GetOrderBy() string {
if x != nil {
return x.OrderBy
}
return ""
}
// List DataAttributeBindings response.
type ListDataAttributeBindingsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// DataAttributeBindings under the given parent Location.
DataAttributeBindings []*DataAttributeBinding `protobuf:"bytes,1,rep,name=data_attribute_bindings,json=dataAttributeBindings,proto3" json:"data_attribute_bindings,omitempty"`
// Token to retrieve the next page of results, or empty if there are no more
// results in the list.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
// Locations that could not be reached.
UnreachableLocations []string `protobuf:"bytes,3,rep,name=unreachable_locations,json=unreachableLocations,proto3" json:"unreachable_locations,omitempty"`
}
func (x *ListDataAttributeBindingsResponse) Reset() {
*x = ListDataAttributeBindingsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListDataAttributeBindingsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListDataAttributeBindingsResponse) ProtoMessage() {}
func (x *ListDataAttributeBindingsResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListDataAttributeBindingsResponse.ProtoReflect.Descriptor instead.
func (*ListDataAttributeBindingsResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{19}
}
func (x *ListDataAttributeBindingsResponse) GetDataAttributeBindings() []*DataAttributeBinding {
if x != nil {
return x.DataAttributeBindings
}
return nil
}
func (x *ListDataAttributeBindingsResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
func (x *ListDataAttributeBindingsResponse) GetUnreachableLocations() []string {
if x != nil {
return x.UnreachableLocations
}
return nil
}
// Delete DataAttributeBinding request.
type DeleteDataAttributeBindingRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name of the DataAttributeBinding:
// projects/{project_number}/locations/{location_id}/dataAttributeBindings/{data_attribute_binding_id}
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Required. If the client provided etag value does not match the current etag
// value, the DeleteDataAttributeBindingRequest method returns an ABORTED
// error response. Etags must be used when calling the
// DeleteDataAttributeBinding.
Etag string `protobuf:"bytes,2,opt,name=etag,proto3" json:"etag,omitempty"`
}
func (x *DeleteDataAttributeBindingRequest) Reset() {
*x = DeleteDataAttributeBindingRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DeleteDataAttributeBindingRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DeleteDataAttributeBindingRequest) ProtoMessage() {}
func (x *DeleteDataAttributeBindingRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DeleteDataAttributeBindingRequest.ProtoReflect.Descriptor instead.
func (*DeleteDataAttributeBindingRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{20}
}
func (x *DeleteDataAttributeBindingRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *DeleteDataAttributeBindingRequest) GetEtag() string {
if x != nil {
return x.Etag
}
return ""
}
// Represents a subresource of the given resource, and associated bindings
// with it. Currently supported subresources are column and partition schema
// fields within a table.
type DataAttributeBinding_Path struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The name identifier of the path.
// Nested columns should be of the form: 'address.city'.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Optional. List of attributes to be associated with the path of the
// resource, provided in the form:
// projects/{project}/locations/{location}/dataTaxonomies/{dataTaxonomy}/attributes/{data_attribute_id}
Attributes []string `protobuf:"bytes,2,rep,name=attributes,proto3" json:"attributes,omitempty"`
}
func (x *DataAttributeBinding_Path) Reset() {
*x = DataAttributeBinding_Path{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DataAttributeBinding_Path) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DataAttributeBinding_Path) ProtoMessage() {}
func (x *DataAttributeBinding_Path) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[23]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DataAttributeBinding_Path.ProtoReflect.Descriptor instead.
func (*DataAttributeBinding_Path) Descriptor() ([]byte, []int) {
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP(), []int{2, 0}
}
func (x *DataAttributeBinding_Path) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *DataAttributeBinding_Path) GetAttributes() []string {
if x != nil {
return x.Attributes
}
return nil
}
var File_google_cloud_dataplex_v1_data_taxonomy_proto protoreflect.FileDescriptor
var file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDesc = []byte{
0x0a, 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x64,
0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x5f,
0x74, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74,
0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61,
0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c,
0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73,
0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c,
0x65, 0x78, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2f, 0x76, 0x31, 0x2f, 0x73,
0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67,
0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x22, 0xa4, 0x05, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f,
0x6d, 0x79, 0x12, 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x42, 0x2c, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c,
0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x52, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0b, 0x63,
0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41,
0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a,
0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03,
0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12,
0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05,
0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61,
0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
0x01, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4f,
0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61,
0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61,
0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74,
0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12,
0x2c, 0x0a, 0x0f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x61,
0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a,
0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61,
0x67, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x6c, 0x61,
0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c,
0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
0x38, 0x01, 0x3a, 0x74, 0xea, 0x41, 0x71, 0x0a, 0x24, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65,
0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
0x2f, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x12, 0x49, 0x70,
0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e,
0x6f, 0x6d, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x61, 0x78, 0x6f,
0x6e, 0x6f, 0x6d, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x22, 0xa9, 0x07, 0x0a, 0x0d, 0x44, 0x61, 0x74,
0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x27,
0x0a, 0x25, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74,
0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a,
0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52,
0x03, 0x75, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74,
0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61,
0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70,
0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63,
0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70,
0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x50, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c,
0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e,
0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41,
0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x4a, 0x0a, 0x09, 0x70, 0x61, 0x72,
0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0xe0, 0x41,
0x01, 0xfa, 0x41, 0x27, 0x0a, 0x25, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61,
0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x08, 0x70, 0x61, 0x72,
0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03,
0xe0, 0x41, 0x03, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x43, 0x6f,
0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x63, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x6f, 0x75,
0x72, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18,
0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31,
0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53,
0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
0x63, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x57, 0x0a, 0x10,
0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x70, 0x65, 0x63,
0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76,
0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63,
0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x41, 0x63, 0x63, 0x65, 0x73,
0x73, 0x53, 0x70, 0x65, 0x63, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
0x3a, 0x91, 0x01, 0xea, 0x41, 0x8d, 0x01, 0x0a, 0x25, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65,
0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
0x2f, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x64,
0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f,
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f,
0x6e, 0x6f, 0x6d, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f,
0x6e, 0x6f, 0x6d, 0x79, 0x7d, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73,
0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
0x5f, 0x69, 0x64, 0x7d, 0x22, 0xcd, 0x07, 0x0a, 0x14, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74,
0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x48, 0x0a,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x34, 0xe0, 0x41, 0x03,
0xfa, 0x41, 0x2e, 0x0a, 0x2c, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74,
0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e,
0x67, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x40,
0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42,
0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65,
0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69,
0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65,
0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73,
0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42,
0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d,
0x65, 0x12, 0x57, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74,
0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e,
0x67, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0,
0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74,
0x61, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x24,
0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09,
0x42, 0x06, 0xe0, 0x41, 0x01, 0xe0, 0x41, 0x05, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f,
0x75, 0x72, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
0x65, 0x73, 0x18, 0x6e, 0x20, 0x03, 0x28, 0x09, 0x42, 0x2d, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x27,
0x0a, 0x25, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74,
0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x78, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61,
0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69,
0x6e, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x70, 0x61,
0x74, 0x68, 0x73, 0x1a, 0x6e, 0x0a, 0x04, 0x50, 0x61, 0x74, 0x68, 0x12, 0x17, 0x0a, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4d, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x2d, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x27,
0x0a, 0x25, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74,
0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74,
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x8d,
0x01, 0xea, 0x41, 0x89, 0x01, 0x0a, 0x2c, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44,
0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64,
0x69, 0x6e, 0x67, 0x12, 0x59, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70,
0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x61, 0x74,
0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e,
0x67, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x42, 0x14,
0x0a, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72,
0x65, 0x6e, 0x63, 0x65, 0x22, 0x89, 0x02, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44,
0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,
0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70,
0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x10, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x61,
0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42,
0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f,
0x6d, 0x79, 0x49, 0x64, 0x12, 0x50, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x61, 0x78,
0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70,
0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e,
0x6f, 0x6d, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x54, 0x61,
0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0,
0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79,
0x22, 0xd9, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x54,
0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40,
0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42,
0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b,
0x12, 0x50, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d,
0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e,
0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x42,
0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f,
0x6d, 0x79, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f,
0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c,
0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x5a, 0x0a, 0x16,
0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x64, 0x61,
0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f,
0x6d, 0x79, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe1, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73,
0x74, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x69, 0x65, 0x73, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21,
0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67,
0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41,
0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70,
0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42,
0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12,
0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42,
0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x08,
0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0xca, 0x01, 0x0a,
0x1a, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d,
0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0f, 0x64,
0x61, 0x74, 0x61, 0x5f, 0x74, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x69, 0x65, 0x73, 0x18, 0x01,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e,
0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x52, 0x0e, 0x64, 0x61,
0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x69, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f,
0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54,
0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x33, 0x0a, 0x15, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61,
0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20,
0x03, 0x28, 0x09, 0x52, 0x14, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65,
0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x76, 0x0a, 0x19, 0x44, 0x65, 0x6c,
0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x64, 0x61,
0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f,
0x6d, 0x79, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x65, 0x74, 0x61,
0x67, 0x22, 0x92, 0x02, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61,
0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x44, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c,
0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x52, 0x06,
0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x11, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x61,
0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72,
0x69, 0x62, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x53, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x5f,
0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64,
0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x41,
0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x64,
0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x0d,
0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20,
0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0xdd, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74,
0x65, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f,
0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65,
0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64,
0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x53, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x5f,
0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64,
0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x41,
0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x64,
0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x0d,
0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20,
0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x5c, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74,
0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x41, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
0x2d, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x27, 0x0a, 0x25, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65,
0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
0x2f, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe4, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74,
0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x44, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x64, 0x61, 0x74, 0x61,
0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79,
0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65,
0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01,
0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61,
0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b,
0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x08, 0x6f,
0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
0x41, 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0xcb, 0x01, 0x0a, 0x1a,
0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0f, 0x64, 0x61,
0x74, 0x61, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44,
0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x0e, 0x64, 0x61,
0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f,
0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54,
0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x33, 0x0a, 0x15, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61,
0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20,
0x03, 0x28, 0x09, 0x52, 0x14, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65,
0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x78, 0x0a, 0x1a, 0x44, 0x65, 0x6c,
0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x27, 0x0a, 0x25, 0x64,
0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70,
0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69,
0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x65, 0x74,
0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x65,
0x74, 0x61, 0x67, 0x22, 0xbb, 0x02, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61,
0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69,
0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72,
0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41,
0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x19,
0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x62,
0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42,
0x03, 0xe0, 0x41, 0x02, 0x52, 0x16, 0x64, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x69, 0x0a, 0x16,
0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x62,
0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61,
0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72,
0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41,
0x02, 0x52, 0x14, 0x64, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64,
0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03,
0xe0, 0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c,
0x79, 0x22, 0xfa, 0x01, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61,
0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46,
0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75,
0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x69, 0x0a, 0x16, 0x64, 0x61, 0x74,
0x61, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64,
0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65,
0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x14,
0x64, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e,
0x64, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65,
0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01,
0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x6a,
0x0a, 0x1e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x48, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x34,
0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2e, 0x0a, 0x2c, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e,
0x64, 0x69, 0x6e, 0x67, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe8, 0x01, 0x0a, 0x20, 0x4c,
0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65,
0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65,
0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b,
0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70,
0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74,
0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66,
0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62,
0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, 0x72,
0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0xe8, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61,
0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69,
0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x17, 0x64,
0x61, 0x74, 0x61, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x62, 0x69,
0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61,
0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72,
0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x15, 0x64, 0x61,
0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69,
0x6e, 0x67, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65,
0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65,
0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x33, 0x0a, 0x15, 0x75,
0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x75, 0x6e, 0x72, 0x65,
0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x22, 0x86, 0x01, 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x41,
0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x42, 0x34, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2e, 0x0a, 0x2c, 0x64, 0x61,
0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x12, 0x17, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
0xe0, 0x41, 0x02, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x32, 0x8b, 0x1d, 0x0a, 0x13, 0x44, 0x61,
0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
0x65, 0x12, 0x80, 0x02, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61,
0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78,
0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61,
0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69,
0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x95, 0x01, 0xca,
0x41, 0x21, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79,
0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64,
0x61, 0x74, 0x61, 0xda, 0x41, 0x25, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x64, 0x61, 0x74,
0x61, 0x5f, 0x74, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x2c, 0x64, 0x61, 0x74, 0x61, 0x5f,
0x74, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02,
0x43, 0x3a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79,
0x22, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72,
0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f,
0x6d, 0x69, 0x65, 0x73, 0x12, 0x82, 0x02, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44,
0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x12, 0x33, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70,
0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74,
0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75,
0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22,
0x97, 0x01, 0xca, 0x41, 0x21, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e,
0x6f, 0x6d, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65,
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x19, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x61,
0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61,
0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x51, 0x3a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74,
0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x32, 0x40, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61,
0x74, 0x61, 0x5f, 0x74, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65,
0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f,
0x6e, 0x6f, 0x6d, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xd8, 0x01, 0x0a, 0x12, 0x44, 0x65,
0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79,
0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65,
0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c,
0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6e, 0xca, 0x41, 0x2a, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64,
0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34,
0x2a, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a,
0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x69, 0x65,
0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xc4, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74,
0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x69, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70,
0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x54,
0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x69, 0x65, 0x73, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e,
0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61,
0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f,
0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74,
0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x69, 0x65, 0x73, 0x12, 0xae, 0x01, 0x0a, 0x0f,
0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x12,
0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64,
0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61,
0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74,
0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x22, 0x41, 0xda, 0x41, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e,
0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c,
0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x54,
0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xba, 0x02, 0x0a,
0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69,
0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70,
0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74,
0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e,
0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70,
0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbf, 0x01, 0xca, 0x41, 0x29, 0x0a, 0x14, 0x44,
0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64,
0x69, 0x6e, 0x67, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65,
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x37, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c,
0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x62,
0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x2c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x74, 0x74, 0x72,
0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64,
0x82, 0xd3, 0xe4, 0x93, 0x02, 0x53, 0x3a, 0x16, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x74, 0x74,
0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x39,
0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a,
0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xbc, 0x02, 0x0a, 0x1a, 0x55, 0x70,
0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78,
0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74,
0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c,
0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc1, 0x01, 0xca, 0x41, 0x29, 0x0a, 0x14, 0x44, 0x61, 0x74, 0x61,
0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67,
0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64,
0x61, 0x74, 0x61, 0xda, 0x41, 0x22, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69,
0x62, 0x75, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x2c, 0x75, 0x70, 0x64,
0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6a, 0x3a, 0x16,
0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x62,
0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x32, 0x50, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61, 0x74,
0x61, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64,
0x69, 0x6e, 0x67, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f,
0x64, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e,
0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xef, 0x01, 0x0a, 0x1a, 0x44, 0x65, 0x6c,
0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e,
0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74,
0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f,
0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x22, 0x75, 0xca, 0x41, 0x2a, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12,
0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x2a,
0x39, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65,
0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42,
0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xe0, 0x01, 0x0a, 0x19, 0x4c,
0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78,
0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72,
0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e,
0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x4a, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93,
0x02, 0x3b, 0x12, 0x39, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d,
0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72,
0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xcd, 0x01,
0x0a, 0x17, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65,
0x78, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72,
0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44,
0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64,
0x69, 0x6e, 0x67, 0x22, 0x48, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93,
0x02, 0x3b, 0x12, 0x39, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72,
0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x93, 0x02,
0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72,
0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31,
0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69,
0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67,
0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa6, 0x01, 0xca, 0x41, 0x22,
0x0a, 0x0d, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12,
0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
0x74, 0x61, 0xda, 0x41, 0x27, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x64, 0x61, 0x74, 0x61,
0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2c, 0x64, 0x61, 0x74, 0x61, 0x5f,
0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93,
0x02, 0x51, 0x3a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x65, 0x22, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d,
0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e,
0x6f, 0x6d, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x65, 0x73, 0x12, 0x95, 0x02, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61,
0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70,
0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74,
0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72,
0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x22, 0xa8, 0x01, 0xca, 0x41, 0x22, 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72,
0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x1a, 0x64, 0x61, 0x74, 0x61, 0x5f,
0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x60, 0x3a, 0x0e, 0x64, 0x61, 0x74,
0x61, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x32, 0x4e, 0x2f, 0x76, 0x31,
0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a,
0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74,
0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x74,
0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xe7, 0x01, 0x0a, 0x13,
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44,
0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f,
0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7b, 0xca, 0x41, 0x2a, 0x0a, 0x15, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d,
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3,
0xe4, 0x93, 0x02, 0x41, 0x2a, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d,
0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e,
0x6f, 0x6d, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xd1, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61,
0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61,
0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61,
0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
0x74, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65,
0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x12, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70,
0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a,
0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74,
0x61, 0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x61,
0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0xbe, 0x01, 0x0a, 0x10, 0x47, 0x65,
0x74, 0x44, 0x61, 0x74, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x31,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61,
0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74,
0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74,
0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0x4e, 0xda, 0x41, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x12, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x7b,
0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f,
0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61,
0x54, 0x61, 0x78, 0x6f, 0x6e, 0x6f, 0x6d, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x74, 0x74,
0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x1a, 0x4b, 0xca, 0x41, 0x17, 0x64,
0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70,
0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f,
0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61,
0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x42, 0x11, 0x44, 0x61, 0x74, 0x61, 0x54, 0x61, 0x78,
0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x63, 0x6c,
0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67,
0x6f, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31,
0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x70, 0x62, 0x3b, 0x64, 0x61, 0x74, 0x61,
0x70, 0x6c, 0x65, 0x78, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescOnce sync.Once
file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescData = file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDesc
)
func file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescGZIP() []byte {
file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescOnce.Do(func() {
file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescData)
})
return file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDescData
}
var file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes = make([]protoimpl.MessageInfo, 25)
var file_google_cloud_dataplex_v1_data_taxonomy_proto_goTypes = []interface{}{
(*DataTaxonomy)(nil), // 0: google.cloud.dataplex.v1.DataTaxonomy
(*DataAttribute)(nil), // 1: google.cloud.dataplex.v1.DataAttribute
(*DataAttributeBinding)(nil), // 2: google.cloud.dataplex.v1.DataAttributeBinding
(*CreateDataTaxonomyRequest)(nil), // 3: google.cloud.dataplex.v1.CreateDataTaxonomyRequest
(*UpdateDataTaxonomyRequest)(nil), // 4: google.cloud.dataplex.v1.UpdateDataTaxonomyRequest
(*GetDataTaxonomyRequest)(nil), // 5: google.cloud.dataplex.v1.GetDataTaxonomyRequest
(*ListDataTaxonomiesRequest)(nil), // 6: google.cloud.dataplex.v1.ListDataTaxonomiesRequest
(*ListDataTaxonomiesResponse)(nil), // 7: google.cloud.dataplex.v1.ListDataTaxonomiesResponse
(*DeleteDataTaxonomyRequest)(nil), // 8: google.cloud.dataplex.v1.DeleteDataTaxonomyRequest
(*CreateDataAttributeRequest)(nil), // 9: google.cloud.dataplex.v1.CreateDataAttributeRequest
(*UpdateDataAttributeRequest)(nil), // 10: google.cloud.dataplex.v1.UpdateDataAttributeRequest
(*GetDataAttributeRequest)(nil), // 11: google.cloud.dataplex.v1.GetDataAttributeRequest
(*ListDataAttributesRequest)(nil), // 12: google.cloud.dataplex.v1.ListDataAttributesRequest
(*ListDataAttributesResponse)(nil), // 13: google.cloud.dataplex.v1.ListDataAttributesResponse
(*DeleteDataAttributeRequest)(nil), // 14: google.cloud.dataplex.v1.DeleteDataAttributeRequest
(*CreateDataAttributeBindingRequest)(nil), // 15: google.cloud.dataplex.v1.CreateDataAttributeBindingRequest
(*UpdateDataAttributeBindingRequest)(nil), // 16: google.cloud.dataplex.v1.UpdateDataAttributeBindingRequest
(*GetDataAttributeBindingRequest)(nil), // 17: google.cloud.dataplex.v1.GetDataAttributeBindingRequest
(*ListDataAttributeBindingsRequest)(nil), // 18: google.cloud.dataplex.v1.ListDataAttributeBindingsRequest
(*ListDataAttributeBindingsResponse)(nil), // 19: google.cloud.dataplex.v1.ListDataAttributeBindingsResponse
(*DeleteDataAttributeBindingRequest)(nil), // 20: google.cloud.dataplex.v1.DeleteDataAttributeBindingRequest
nil, // 21: google.cloud.dataplex.v1.DataTaxonomy.LabelsEntry
nil, // 22: google.cloud.dataplex.v1.DataAttribute.LabelsEntry
(*DataAttributeBinding_Path)(nil), // 23: google.cloud.dataplex.v1.DataAttributeBinding.Path
nil, // 24: google.cloud.dataplex.v1.DataAttributeBinding.LabelsEntry
(*timestamppb.Timestamp)(nil), // 25: google.protobuf.Timestamp
(*ResourceAccessSpec)(nil), // 26: google.cloud.dataplex.v1.ResourceAccessSpec
(*DataAccessSpec)(nil), // 27: google.cloud.dataplex.v1.DataAccessSpec
(*fieldmaskpb.FieldMask)(nil), // 28: google.protobuf.FieldMask
(*longrunningpb.Operation)(nil), // 29: google.longrunning.Operation
}
var file_google_cloud_dataplex_v1_data_taxonomy_proto_depIdxs = []int32{
25, // 0: google.cloud.dataplex.v1.DataTaxonomy.create_time:type_name -> google.protobuf.Timestamp
25, // 1: google.cloud.dataplex.v1.DataTaxonomy.update_time:type_name -> google.protobuf.Timestamp
21, // 2: google.cloud.dataplex.v1.DataTaxonomy.labels:type_name -> google.cloud.dataplex.v1.DataTaxonomy.LabelsEntry
25, // 3: google.cloud.dataplex.v1.DataAttribute.create_time:type_name -> google.protobuf.Timestamp
25, // 4: google.cloud.dataplex.v1.DataAttribute.update_time:type_name -> google.protobuf.Timestamp
22, // 5: google.cloud.dataplex.v1.DataAttribute.labels:type_name -> google.cloud.dataplex.v1.DataAttribute.LabelsEntry
26, // 6: google.cloud.dataplex.v1.DataAttribute.resource_access_spec:type_name -> google.cloud.dataplex.v1.ResourceAccessSpec
27, // 7: google.cloud.dataplex.v1.DataAttribute.data_access_spec:type_name -> google.cloud.dataplex.v1.DataAccessSpec
25, // 8: google.cloud.dataplex.v1.DataAttributeBinding.create_time:type_name -> google.protobuf.Timestamp
25, // 9: google.cloud.dataplex.v1.DataAttributeBinding.update_time:type_name -> google.protobuf.Timestamp
24, // 10: google.cloud.dataplex.v1.DataAttributeBinding.labels:type_name -> google.cloud.dataplex.v1.DataAttributeBinding.LabelsEntry
23, // 11: google.cloud.dataplex.v1.DataAttributeBinding.paths:type_name -> google.cloud.dataplex.v1.DataAttributeBinding.Path
0, // 12: google.cloud.dataplex.v1.CreateDataTaxonomyRequest.data_taxonomy:type_name -> google.cloud.dataplex.v1.DataTaxonomy
28, // 13: google.cloud.dataplex.v1.UpdateDataTaxonomyRequest.update_mask:type_name -> google.protobuf.FieldMask
0, // 14: google.cloud.dataplex.v1.UpdateDataTaxonomyRequest.data_taxonomy:type_name -> google.cloud.dataplex.v1.DataTaxonomy
0, // 15: google.cloud.dataplex.v1.ListDataTaxonomiesResponse.data_taxonomies:type_name -> google.cloud.dataplex.v1.DataTaxonomy
1, // 16: google.cloud.dataplex.v1.CreateDataAttributeRequest.data_attribute:type_name -> google.cloud.dataplex.v1.DataAttribute
28, // 17: google.cloud.dataplex.v1.UpdateDataAttributeRequest.update_mask:type_name -> google.protobuf.FieldMask
1, // 18: google.cloud.dataplex.v1.UpdateDataAttributeRequest.data_attribute:type_name -> google.cloud.dataplex.v1.DataAttribute
1, // 19: google.cloud.dataplex.v1.ListDataAttributesResponse.data_attributes:type_name -> google.cloud.dataplex.v1.DataAttribute
2, // 20: google.cloud.dataplex.v1.CreateDataAttributeBindingRequest.data_attribute_binding:type_name -> google.cloud.dataplex.v1.DataAttributeBinding
28, // 21: google.cloud.dataplex.v1.UpdateDataAttributeBindingRequest.update_mask:type_name -> google.protobuf.FieldMask
2, // 22: google.cloud.dataplex.v1.UpdateDataAttributeBindingRequest.data_attribute_binding:type_name -> google.cloud.dataplex.v1.DataAttributeBinding
2, // 23: google.cloud.dataplex.v1.ListDataAttributeBindingsResponse.data_attribute_bindings:type_name -> google.cloud.dataplex.v1.DataAttributeBinding
3, // 24: google.cloud.dataplex.v1.DataTaxonomyService.CreateDataTaxonomy:input_type -> google.cloud.dataplex.v1.CreateDataTaxonomyRequest
4, // 25: google.cloud.dataplex.v1.DataTaxonomyService.UpdateDataTaxonomy:input_type -> google.cloud.dataplex.v1.UpdateDataTaxonomyRequest
8, // 26: google.cloud.dataplex.v1.DataTaxonomyService.DeleteDataTaxonomy:input_type -> google.cloud.dataplex.v1.DeleteDataTaxonomyRequest
6, // 27: google.cloud.dataplex.v1.DataTaxonomyService.ListDataTaxonomies:input_type -> google.cloud.dataplex.v1.ListDataTaxonomiesRequest
5, // 28: google.cloud.dataplex.v1.DataTaxonomyService.GetDataTaxonomy:input_type -> google.cloud.dataplex.v1.GetDataTaxonomyRequest
15, // 29: google.cloud.dataplex.v1.DataTaxonomyService.CreateDataAttributeBinding:input_type -> google.cloud.dataplex.v1.CreateDataAttributeBindingRequest
16, // 30: google.cloud.dataplex.v1.DataTaxonomyService.UpdateDataAttributeBinding:input_type -> google.cloud.dataplex.v1.UpdateDataAttributeBindingRequest
20, // 31: google.cloud.dataplex.v1.DataTaxonomyService.DeleteDataAttributeBinding:input_type -> google.cloud.dataplex.v1.DeleteDataAttributeBindingRequest
18, // 32: google.cloud.dataplex.v1.DataTaxonomyService.ListDataAttributeBindings:input_type -> google.cloud.dataplex.v1.ListDataAttributeBindingsRequest
17, // 33: google.cloud.dataplex.v1.DataTaxonomyService.GetDataAttributeBinding:input_type -> google.cloud.dataplex.v1.GetDataAttributeBindingRequest
9, // 34: google.cloud.dataplex.v1.DataTaxonomyService.CreateDataAttribute:input_type -> google.cloud.dataplex.v1.CreateDataAttributeRequest
10, // 35: google.cloud.dataplex.v1.DataTaxonomyService.UpdateDataAttribute:input_type -> google.cloud.dataplex.v1.UpdateDataAttributeRequest
14, // 36: google.cloud.dataplex.v1.DataTaxonomyService.DeleteDataAttribute:input_type -> google.cloud.dataplex.v1.DeleteDataAttributeRequest
12, // 37: google.cloud.dataplex.v1.DataTaxonomyService.ListDataAttributes:input_type -> google.cloud.dataplex.v1.ListDataAttributesRequest
11, // 38: google.cloud.dataplex.v1.DataTaxonomyService.GetDataAttribute:input_type -> google.cloud.dataplex.v1.GetDataAttributeRequest
29, // 39: google.cloud.dataplex.v1.DataTaxonomyService.CreateDataTaxonomy:output_type -> google.longrunning.Operation
29, // 40: google.cloud.dataplex.v1.DataTaxonomyService.UpdateDataTaxonomy:output_type -> google.longrunning.Operation
29, // 41: google.cloud.dataplex.v1.DataTaxonomyService.DeleteDataTaxonomy:output_type -> google.longrunning.Operation
7, // 42: google.cloud.dataplex.v1.DataTaxonomyService.ListDataTaxonomies:output_type -> google.cloud.dataplex.v1.ListDataTaxonomiesResponse
0, // 43: google.cloud.dataplex.v1.DataTaxonomyService.GetDataTaxonomy:output_type -> google.cloud.dataplex.v1.DataTaxonomy
29, // 44: google.cloud.dataplex.v1.DataTaxonomyService.CreateDataAttributeBinding:output_type -> google.longrunning.Operation
29, // 45: google.cloud.dataplex.v1.DataTaxonomyService.UpdateDataAttributeBinding:output_type -> google.longrunning.Operation
29, // 46: google.cloud.dataplex.v1.DataTaxonomyService.DeleteDataAttributeBinding:output_type -> google.longrunning.Operation
19, // 47: google.cloud.dataplex.v1.DataTaxonomyService.ListDataAttributeBindings:output_type -> google.cloud.dataplex.v1.ListDataAttributeBindingsResponse
2, // 48: google.cloud.dataplex.v1.DataTaxonomyService.GetDataAttributeBinding:output_type -> google.cloud.dataplex.v1.DataAttributeBinding
29, // 49: google.cloud.dataplex.v1.DataTaxonomyService.CreateDataAttribute:output_type -> google.longrunning.Operation
29, // 50: google.cloud.dataplex.v1.DataTaxonomyService.UpdateDataAttribute:output_type -> google.longrunning.Operation
29, // 51: google.cloud.dataplex.v1.DataTaxonomyService.DeleteDataAttribute:output_type -> google.longrunning.Operation
13, // 52: google.cloud.dataplex.v1.DataTaxonomyService.ListDataAttributes:output_type -> google.cloud.dataplex.v1.ListDataAttributesResponse
1, // 53: google.cloud.dataplex.v1.DataTaxonomyService.GetDataAttribute:output_type -> google.cloud.dataplex.v1.DataAttribute
39, // [39:54] is the sub-list for method output_type
24, // [24:39] is the sub-list for method input_type
24, // [24:24] is the sub-list for extension type_name
24, // [24:24] is the sub-list for extension extendee
0, // [0:24] is the sub-list for field type_name
}
func init() { file_google_cloud_dataplex_v1_data_taxonomy_proto_init() }
func file_google_cloud_dataplex_v1_data_taxonomy_proto_init() {
if File_google_cloud_dataplex_v1_data_taxonomy_proto != nil {
return
}
file_google_cloud_dataplex_v1_security_proto_init()
file_google_cloud_dataplex_v1_service_proto_init()
if !protoimpl.UnsafeEnabled {
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DataTaxonomy); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DataAttribute); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DataAttributeBinding); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreateDataTaxonomyRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateDataTaxonomyRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetDataTaxonomyRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDataTaxonomiesRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDataTaxonomiesResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeleteDataTaxonomyRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreateDataAttributeRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateDataAttributeRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetDataAttributeRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDataAttributesRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDataAttributesResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeleteDataAttributeRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreateDataAttributeBindingRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateDataAttributeBindingRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetDataAttributeBindingRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDataAttributeBindingsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDataAttributeBindingsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeleteDataAttributeBindingRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DataAttributeBinding_Path); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes[2].OneofWrappers = []interface{}{
(*DataAttributeBinding_Resource)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDesc,
NumEnums: 0,
NumMessages: 25,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_google_cloud_dataplex_v1_data_taxonomy_proto_goTypes,
DependencyIndexes: file_google_cloud_dataplex_v1_data_taxonomy_proto_depIdxs,
MessageInfos: file_google_cloud_dataplex_v1_data_taxonomy_proto_msgTypes,
}.Build()
File_google_cloud_dataplex_v1_data_taxonomy_proto = out.File
file_google_cloud_dataplex_v1_data_taxonomy_proto_rawDesc = nil
file_google_cloud_dataplex_v1_data_taxonomy_proto_goTypes = nil
file_google_cloud_dataplex_v1_data_taxonomy_proto_depIdxs = nil
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface
// 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.SupportPackageIsVersion6
// DataTaxonomyServiceClient is the client API for DataTaxonomyService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type DataTaxonomyServiceClient interface {
// Create a DataTaxonomy resource.
CreateDataTaxonomy(ctx context.Context, in *CreateDataTaxonomyRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error)
// Updates a DataTaxonomy resource.
UpdateDataTaxonomy(ctx context.Context, in *UpdateDataTaxonomyRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error)
// Deletes a DataTaxonomy resource. All attributes within the DataTaxonomy
// must be deleted before the DataTaxonomy can be deleted.
DeleteDataTaxonomy(ctx context.Context, in *DeleteDataTaxonomyRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error)
// Lists DataTaxonomy resources in a project and location.
ListDataTaxonomies(ctx context.Context, in *ListDataTaxonomiesRequest, opts ...grpc.CallOption) (*ListDataTaxonomiesResponse, error)
// Retrieves a DataTaxonomy resource.
GetDataTaxonomy(ctx context.Context, in *GetDataTaxonomyRequest, opts ...grpc.CallOption) (*DataTaxonomy, error)
// Create a DataAttributeBinding resource.
CreateDataAttributeBinding(ctx context.Context, in *CreateDataAttributeBindingRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error)
// Updates a DataAttributeBinding resource.
UpdateDataAttributeBinding(ctx context.Context, in *UpdateDataAttributeBindingRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error)
// Deletes a DataAttributeBinding resource. All attributes within the
// DataAttributeBinding must be deleted before the DataAttributeBinding can be
// deleted.
DeleteDataAttributeBinding(ctx context.Context, in *DeleteDataAttributeBindingRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error)
// Lists DataAttributeBinding resources in a project and location.
ListDataAttributeBindings(ctx context.Context, in *ListDataAttributeBindingsRequest, opts ...grpc.CallOption) (*ListDataAttributeBindingsResponse, error)
// Retrieves a DataAttributeBinding resource.
GetDataAttributeBinding(ctx context.Context, in *GetDataAttributeBindingRequest, opts ...grpc.CallOption) (*DataAttributeBinding, error)
// Create a DataAttribute resource.
CreateDataAttribute(ctx context.Context, in *CreateDataAttributeRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error)
// Updates a DataAttribute resource.
UpdateDataAttribute(ctx context.Context, in *UpdateDataAttributeRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error)
// Deletes a Data Attribute resource.
DeleteDataAttribute(ctx context.Context, in *DeleteDataAttributeRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error)
// Lists Data Attribute resources in a DataTaxonomy.
ListDataAttributes(ctx context.Context, in *ListDataAttributesRequest, opts ...grpc.CallOption) (*ListDataAttributesResponse, error)
// Retrieves a Data Attribute resource.
GetDataAttribute(ctx context.Context, in *GetDataAttributeRequest, opts ...grpc.CallOption) (*DataAttribute, error)
}
type dataTaxonomyServiceClient struct {
cc grpc.ClientConnInterface
}
func NewDataTaxonomyServiceClient(cc grpc.ClientConnInterface) DataTaxonomyServiceClient {
return &dataTaxonomyServiceClient{cc}
}
func (c *dataTaxonomyServiceClient) CreateDataTaxonomy(ctx context.Context, in *CreateDataTaxonomyRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) {
out := new(longrunningpb.Operation)
err := c.cc.Invoke(ctx, "/google.cloud.dataplex.v1.DataTaxonomyService/CreateDataTaxonomy", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *dataTaxonomyServiceClient) UpdateDataTaxonomy(ctx context.Context, in *UpdateDataTaxonomyRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) {
out := new(longrunningpb.Operation)
err := c.cc.Invoke(ctx, "/google.cloud.dataplex.v1.DataTaxonomyService/UpdateDataTaxonomy", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *dataTaxonomyServiceClient) DeleteDataTaxonomy(ctx context.Context, in *DeleteDataTaxonomyRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) {
out := new(longrunningpb.Operation)
err := c.cc.Invoke(ctx, "/google.cloud.dataplex.v1.DataTaxonomyService/DeleteDataTaxonomy", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *dataTaxonomyServiceClient) ListDataTaxonomies(ctx context.Context, in *ListDataTaxonomiesRequest, opts ...grpc.CallOption) (*ListDataTaxonomiesResponse, error) {
out := new(ListDataTaxonomiesResponse)
err := c.cc.Invoke(ctx, "/google.cloud.dataplex.v1.DataTaxonomyService/ListDataTaxonomies", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *dataTaxonomyServiceClient) GetDataTaxonomy(ctx context.Context, in *GetDataTaxonomyRequest, opts ...grpc.CallOption) (*DataTaxonomy, error) {
out := new(DataTaxonomy)
err := c.cc.Invoke(ctx, "/google.cloud.dataplex.v1.DataTaxonomyService/GetDataTaxonomy", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *dataTaxonomyServiceClient) CreateDataAttributeBinding(ctx context.Context, in *CreateDataAttributeBindingRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) {
out := new(longrunningpb.Operation)
err := c.cc.Invoke(ctx, "/google.cloud.dataplex.v1.DataTaxonomyService/CreateDataAttributeBinding", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *dataTaxonomyServiceClient) UpdateDataAttributeBinding(ctx context.Context, in *UpdateDataAttributeBindingRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) {
out := new(longrunningpb.Operation)
err := c.cc.Invoke(ctx, "/google.cloud.dataplex.v1.DataTaxonomyService/UpdateDataAttributeBinding", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *dataTaxonomyServiceClient) DeleteDataAttributeBinding(ctx context.Context, in *DeleteDataAttributeBindingRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) {
out := new(longrunningpb.Operation)
err := c.cc.Invoke(ctx, "/google.cloud.dataplex.v1.DataTaxonomyService/DeleteDataAttributeBinding", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *dataTaxonomyServiceClient) ListDataAttributeBindings(ctx context.Context, in *ListDataAttributeBindingsRequest, opts ...grpc.CallOption) (*ListDataAttributeBindingsResponse, error) {
out := new(ListDataAttributeBindingsResponse)
err := c.cc.Invoke(ctx, "/google.cloud.dataplex.v1.DataTaxonomyService/ListDataAttributeBindings", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *dataTaxonomyServiceClient) GetDataAttributeBinding(ctx context.Context, in *GetDataAttributeBindingRequest, opts ...grpc.CallOption) (*DataAttributeBinding, error) {
out := new(DataAttributeBinding)
err := c.cc.Invoke(ctx, "/google.cloud.dataplex.v1.DataTaxonomyService/GetDataAttributeBinding", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *dataTaxonomyServiceClient) CreateDataAttribute(ctx context.Context, in *CreateDataAttributeRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) {
out := new(longrunningpb.Operation)
err := c.cc.Invoke(ctx, "/google.cloud.dataplex.v1.DataTaxonomyService/CreateDataAttribute", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *dataTaxonomyServiceClient) UpdateDataAttribute(ctx context.Context, in *UpdateDataAttributeRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) {
out := new(longrunningpb.Operation)
err := c.cc.Invoke(ctx, "/google.cloud.dataplex.v1.DataTaxonomyService/UpdateDataAttribute", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *dataTaxonomyServiceClient) DeleteDataAttribute(ctx context.Context, in *DeleteDataAttributeRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) {
out := new(longrunningpb.Operation)
err := c.cc.Invoke(ctx, "/google.cloud.dataplex.v1.DataTaxonomyService/DeleteDataAttribute", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *dataTaxonomyServiceClient) ListDataAttributes(ctx context.Context, in *ListDataAttributesRequest, opts ...grpc.CallOption) (*ListDataAttributesResponse, error) {
out := new(ListDataAttributesResponse)
err := c.cc.Invoke(ctx, "/google.cloud.dataplex.v1.DataTaxonomyService/ListDataAttributes", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *dataTaxonomyServiceClient) GetDataAttribute(ctx context.Context, in *GetDataAttributeRequest, opts ...grpc.CallOption) (*DataAttribute, error) {
out := new(DataAttribute)
err := c.cc.Invoke(ctx, "/google.cloud.dataplex.v1.DataTaxonomyService/GetDataAttribute", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// DataTaxonomyServiceServer is the server API for DataTaxonomyService service.
type DataTaxonomyServiceServer interface {
// Create a DataTaxonomy resource.
CreateDataTaxonomy(context.Context, *CreateDataTaxonomyRequest) (*longrunningpb.Operation, error)
// Updates a DataTaxonomy resource.
UpdateDataTaxonomy(context.Context, *UpdateDataTaxonomyRequest) (*longrunningpb.Operation, error)
// Deletes a DataTaxonomy resource. All attributes within the DataTaxonomy
// must be deleted before the DataTaxonomy can be deleted.
DeleteDataTaxonomy(context.Context, *DeleteDataTaxonomyRequest) (*longrunningpb.Operation, error)
// Lists DataTaxonomy resources in a project and location.
ListDataTaxonomies(context.Context, *ListDataTaxonomiesRequest) (*ListDataTaxonomiesResponse, error)
// Retrieves a DataTaxonomy resource.
GetDataTaxonomy(context.Context, *GetDataTaxonomyRequest) (*DataTaxonomy, error)
// Create a DataAttributeBinding resource.
CreateDataAttributeBinding(context.Context, *CreateDataAttributeBindingRequest) (*longrunningpb.Operation, error)
// Updates a DataAttributeBinding resource.
UpdateDataAttributeBinding(context.Context, *UpdateDataAttributeBindingRequest) (*longrunningpb.Operation, error)
// Deletes a DataAttributeBinding resource. All attributes within the
// DataAttributeBinding must be deleted before the DataAttributeBinding can be
// deleted.
DeleteDataAttributeBinding(context.Context, *DeleteDataAttributeBindingRequest) (*longrunningpb.Operation, error)
// Lists DataAttributeBinding resources in a project and location.
ListDataAttributeBindings(context.Context, *ListDataAttributeBindingsRequest) (*ListDataAttributeBindingsResponse, error)
// Retrieves a DataAttributeBinding resource.
GetDataAttributeBinding(context.Context, *GetDataAttributeBindingRequest) (*DataAttributeBinding, error)
// Create a DataAttribute resource.
CreateDataAttribute(context.Context, *CreateDataAttributeRequest) (*longrunningpb.Operation, error)
// Updates a DataAttribute resource.
UpdateDataAttribute(context.Context, *UpdateDataAttributeRequest) (*longrunningpb.Operation, error)
// Deletes a Data Attribute resource.
DeleteDataAttribute(context.Context, *DeleteDataAttributeRequest) (*longrunningpb.Operation, error)
// Lists Data Attribute resources in a DataTaxonomy.
ListDataAttributes(context.Context, *ListDataAttributesRequest) (*ListDataAttributesResponse, error)
// Retrieves a Data Attribute resource.
GetDataAttribute(context.Context, *GetDataAttributeRequest) (*DataAttribute, error)
}
// UnimplementedDataTaxonomyServiceServer can be embedded to have forward compatible implementations.
type UnimplementedDataTaxonomyServiceServer struct {
}
func (*UnimplementedDataTaxonomyServiceServer) CreateDataTaxonomy(context.Context, *CreateDataTaxonomyRequest) (*longrunningpb.Operation, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreateDataTaxonomy not implemented")
}
func (*UnimplementedDataTaxonomyServiceServer) UpdateDataTaxonomy(context.Context, *UpdateDataTaxonomyRequest) (*longrunningpb.Operation, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateDataTaxonomy not implemented")
}
func (*UnimplementedDataTaxonomyServiceServer) DeleteDataTaxonomy(context.Context, *DeleteDataTaxonomyRequest) (*longrunningpb.Operation, error) {
return nil, status.Errorf(codes.Unimplemented, "method DeleteDataTaxonomy not implemented")
}
func (*UnimplementedDataTaxonomyServiceServer) ListDataTaxonomies(context.Context, *ListDataTaxonomiesRequest) (*ListDataTaxonomiesResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListDataTaxonomies not implemented")
}
func (*UnimplementedDataTaxonomyServiceServer) GetDataTaxonomy(context.Context, *GetDataTaxonomyRequest) (*DataTaxonomy, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetDataTaxonomy not implemented")
}
func (*UnimplementedDataTaxonomyServiceServer) CreateDataAttributeBinding(context.Context, *CreateDataAttributeBindingRequest) (*longrunningpb.Operation, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreateDataAttributeBinding not implemented")
}
func (*UnimplementedDataTaxonomyServiceServer) UpdateDataAttributeBinding(context.Context, *UpdateDataAttributeBindingRequest) (*longrunningpb.Operation, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateDataAttributeBinding not implemented")
}
func (*UnimplementedDataTaxonomyServiceServer) DeleteDataAttributeBinding(context.Context, *DeleteDataAttributeBindingRequest) (*longrunningpb.Operation, error) {
return nil, status.Errorf(codes.Unimplemented, "method DeleteDataAttributeBinding not implemented")
}
func (*UnimplementedDataTaxonomyServiceServer) ListDataAttributeBindings(context.Context, *ListDataAttributeBindingsRequest) (*ListDataAttributeBindingsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListDataAttributeBindings not implemented")
}
func (*UnimplementedDataTaxonomyServiceServer) GetDataAttributeBinding(context.Context, *GetDataAttributeBindingRequest) (*DataAttributeBinding, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetDataAttributeBinding not implemented")
}
func (*UnimplementedDataTaxonomyServiceServer) CreateDataAttribute(context.Context, *CreateDataAttributeRequest) (*longrunningpb.Operation, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreateDataAttribute not implemented")
}
func (*UnimplementedDataTaxonomyServiceServer) UpdateDataAttribute(context.Context, *UpdateDataAttributeRequest) (*longrunningpb.Operation, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateDataAttribute not implemented")
}
func (*UnimplementedDataTaxonomyServiceServer) DeleteDataAttribute(context.Context, *DeleteDataAttributeRequest) (*longrunningpb.Operation, error) {
return nil, status.Errorf(codes.Unimplemented, "method DeleteDataAttribute not implemented")
}
func (*UnimplementedDataTaxonomyServiceServer) ListDataAttributes(context.Context, *ListDataAttributesRequest) (*ListDataAttributesResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListDataAttributes not implemented")
}
func (*UnimplementedDataTaxonomyServiceServer) GetDataAttribute(context.Context, *GetDataAttributeRequest) (*DataAttribute, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetDataAttribute not implemented")
}
func RegisterDataTaxonomyServiceServer(s *grpc.Server, srv DataTaxonomyServiceServer) {
s.RegisterService(&_DataTaxonomyService_serviceDesc, srv)
}
func _DataTaxonomyService_CreateDataTaxonomy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateDataTaxonomyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DataTaxonomyServiceServer).CreateDataTaxonomy(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dataplex.v1.DataTaxonomyService/CreateDataTaxonomy",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DataTaxonomyServiceServer).CreateDataTaxonomy(ctx, req.(*CreateDataTaxonomyRequest))
}
return interceptor(ctx, in, info, handler)
}
func _DataTaxonomyService_UpdateDataTaxonomy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateDataTaxonomyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DataTaxonomyServiceServer).UpdateDataTaxonomy(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dataplex.v1.DataTaxonomyService/UpdateDataTaxonomy",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DataTaxonomyServiceServer).UpdateDataTaxonomy(ctx, req.(*UpdateDataTaxonomyRequest))
}
return interceptor(ctx, in, info, handler)
}
func _DataTaxonomyService_DeleteDataTaxonomy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteDataTaxonomyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DataTaxonomyServiceServer).DeleteDataTaxonomy(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dataplex.v1.DataTaxonomyService/DeleteDataTaxonomy",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DataTaxonomyServiceServer).DeleteDataTaxonomy(ctx, req.(*DeleteDataTaxonomyRequest))
}
return interceptor(ctx, in, info, handler)
}
func _DataTaxonomyService_ListDataTaxonomies_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListDataTaxonomiesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DataTaxonomyServiceServer).ListDataTaxonomies(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dataplex.v1.DataTaxonomyService/ListDataTaxonomies",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DataTaxonomyServiceServer).ListDataTaxonomies(ctx, req.(*ListDataTaxonomiesRequest))
}
return interceptor(ctx, in, info, handler)
}
func _DataTaxonomyService_GetDataTaxonomy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetDataTaxonomyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DataTaxonomyServiceServer).GetDataTaxonomy(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dataplex.v1.DataTaxonomyService/GetDataTaxonomy",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DataTaxonomyServiceServer).GetDataTaxonomy(ctx, req.(*GetDataTaxonomyRequest))
}
return interceptor(ctx, in, info, handler)
}
func _DataTaxonomyService_CreateDataAttributeBinding_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateDataAttributeBindingRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DataTaxonomyServiceServer).CreateDataAttributeBinding(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dataplex.v1.DataTaxonomyService/CreateDataAttributeBinding",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DataTaxonomyServiceServer).CreateDataAttributeBinding(ctx, req.(*CreateDataAttributeBindingRequest))
}
return interceptor(ctx, in, info, handler)
}
func _DataTaxonomyService_UpdateDataAttributeBinding_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateDataAttributeBindingRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DataTaxonomyServiceServer).UpdateDataAttributeBinding(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dataplex.v1.DataTaxonomyService/UpdateDataAttributeBinding",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DataTaxonomyServiceServer).UpdateDataAttributeBinding(ctx, req.(*UpdateDataAttributeBindingRequest))
}
return interceptor(ctx, in, info, handler)
}
func _DataTaxonomyService_DeleteDataAttributeBinding_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteDataAttributeBindingRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DataTaxonomyServiceServer).DeleteDataAttributeBinding(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dataplex.v1.DataTaxonomyService/DeleteDataAttributeBinding",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DataTaxonomyServiceServer).DeleteDataAttributeBinding(ctx, req.(*DeleteDataAttributeBindingRequest))
}
return interceptor(ctx, in, info, handler)
}
func _DataTaxonomyService_ListDataAttributeBindings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListDataAttributeBindingsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DataTaxonomyServiceServer).ListDataAttributeBindings(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dataplex.v1.DataTaxonomyService/ListDataAttributeBindings",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DataTaxonomyServiceServer).ListDataAttributeBindings(ctx, req.(*ListDataAttributeBindingsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _DataTaxonomyService_GetDataAttributeBinding_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetDataAttributeBindingRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DataTaxonomyServiceServer).GetDataAttributeBinding(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dataplex.v1.DataTaxonomyService/GetDataAttributeBinding",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DataTaxonomyServiceServer).GetDataAttributeBinding(ctx, req.(*GetDataAttributeBindingRequest))
}
return interceptor(ctx, in, info, handler)
}
func _DataTaxonomyService_CreateDataAttribute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateDataAttributeRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DataTaxonomyServiceServer).CreateDataAttribute(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dataplex.v1.DataTaxonomyService/CreateDataAttribute",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DataTaxonomyServiceServer).CreateDataAttribute(ctx, req.(*CreateDataAttributeRequest))
}
return interceptor(ctx, in, info, handler)
}
func _DataTaxonomyService_UpdateDataAttribute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateDataAttributeRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DataTaxonomyServiceServer).UpdateDataAttribute(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dataplex.v1.DataTaxonomyService/UpdateDataAttribute",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DataTaxonomyServiceServer).UpdateDataAttribute(ctx, req.(*UpdateDataAttributeRequest))
}
return interceptor(ctx, in, info, handler)
}
func _DataTaxonomyService_DeleteDataAttribute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteDataAttributeRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DataTaxonomyServiceServer).DeleteDataAttribute(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dataplex.v1.DataTaxonomyService/DeleteDataAttribute",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DataTaxonomyServiceServer).DeleteDataAttribute(ctx, req.(*DeleteDataAttributeRequest))
}
return interceptor(ctx, in, info, handler)
}
func _DataTaxonomyService_ListDataAttributes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListDataAttributesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DataTaxonomyServiceServer).ListDataAttributes(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dataplex.v1.DataTaxonomyService/ListDataAttributes",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DataTaxonomyServiceServer).ListDataAttributes(ctx, req.(*ListDataAttributesRequest))
}
return interceptor(ctx, in, info, handler)
}
func _DataTaxonomyService_GetDataAttribute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetDataAttributeRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DataTaxonomyServiceServer).GetDataAttribute(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dataplex.v1.DataTaxonomyService/GetDataAttribute",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DataTaxonomyServiceServer).GetDataAttribute(ctx, req.(*GetDataAttributeRequest))
}
return interceptor(ctx, in, info, handler)
}
var _DataTaxonomyService_serviceDesc = grpc.ServiceDesc{
ServiceName: "google.cloud.dataplex.v1.DataTaxonomyService",
HandlerType: (*DataTaxonomyServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "CreateDataTaxonomy",
Handler: _DataTaxonomyService_CreateDataTaxonomy_Handler,
},
{
MethodName: "UpdateDataTaxonomy",
Handler: _DataTaxonomyService_UpdateDataTaxonomy_Handler,
},
{
MethodName: "DeleteDataTaxonomy",
Handler: _DataTaxonomyService_DeleteDataTaxonomy_Handler,
},
{
MethodName: "ListDataTaxonomies",
Handler: _DataTaxonomyService_ListDataTaxonomies_Handler,
},
{
MethodName: "GetDataTaxonomy",
Handler: _DataTaxonomyService_GetDataTaxonomy_Handler,
},
{
MethodName: "CreateDataAttributeBinding",
Handler: _DataTaxonomyService_CreateDataAttributeBinding_Handler,
},
{
MethodName: "UpdateDataAttributeBinding",
Handler: _DataTaxonomyService_UpdateDataAttributeBinding_Handler,
},
{
MethodName: "DeleteDataAttributeBinding",
Handler: _DataTaxonomyService_DeleteDataAttributeBinding_Handler,
},
{
MethodName: "ListDataAttributeBindings",
Handler: _DataTaxonomyService_ListDataAttributeBindings_Handler,
},
{
MethodName: "GetDataAttributeBinding",
Handler: _DataTaxonomyService_GetDataAttributeBinding_Handler,
},
{
MethodName: "CreateDataAttribute",
Handler: _DataTaxonomyService_CreateDataAttribute_Handler,
},
{
MethodName: "UpdateDataAttribute",
Handler: _DataTaxonomyService_UpdateDataAttribute_Handler,
},
{
MethodName: "DeleteDataAttribute",
Handler: _DataTaxonomyService_DeleteDataAttribute_Handler,
},
{
MethodName: "ListDataAttributes",
Handler: _DataTaxonomyService_ListDataAttributes_Handler,
},
{
MethodName: "GetDataAttribute",
Handler: _DataTaxonomyService_GetDataAttribute_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "google/cloud/dataplex/v1/data_taxonomy.proto",
}