Copyright 2020 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.25.0 protoc v3.13.0 source: google/monitoring/v3/group_service.proto

package monitoring

import (
	context 
	reflect 
	sync 

	proto 
	_ 
	monitoredres 
	grpc 
	codes 
	status 
	protoreflect 
	protoimpl 
	emptypb 
)

Verify that this generated code is sufficiently up-to-date.
Verify that runtime/protoimpl is sufficiently up-to-date.
This is a compile-time assertion that a sufficiently up-to-date version of the legacy proto package is being used.
Required. The project whose groups are to be listed. The format is: projects/[PROJECT_ID_OR_NUMBER]
An optional filter consisting of a single group name. The filters limit the groups returned based on their parent-child relationship with the specified group. If no filter is specified, all groups are returned. Types that are assignable to Filter: *ListGroupsRequest_ChildrenOfGroup *ListGroupsRequest_AncestorsOfGroup *ListGroupsRequest_DescendantsOfGroup
A positive number that is the maximum number of results to return.
If this field is not empty then it must contain the `next_page_token` value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.
	PageToken string `protobuf:"bytes,6,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}

func ( *ListGroupsRequest) () {
	* = ListGroupsRequest{}
	if protoimpl.UnsafeEnabled {
		 := &file_google_monitoring_v3_group_service_proto_msgTypes[0]
		 := protoimpl.X.MessageStateOf(protoimpl.Pointer())
		.StoreMessageInfo()
	}
}

func ( *ListGroupsRequest) () string {
	return protoimpl.X.MessageStringOf()
}

func (*ListGroupsRequest) () {}

func ( *ListGroupsRequest) () protoreflect.Message {
	 := &file_google_monitoring_v3_group_service_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled &&  != nil {
		 := protoimpl.X.MessageStateOf(protoimpl.Pointer())
		if .LoadMessageInfo() == nil {
			.StoreMessageInfo()
		}
		return 
	}
	return .MessageOf()
}
Deprecated: Use ListGroupsRequest.ProtoReflect.Descriptor instead.
func (*ListGroupsRequest) () ([]byte, []int) {
	return file_google_monitoring_v3_group_service_proto_rawDescGZIP(), []int{0}
}

func ( *ListGroupsRequest) () string {
	if  != nil {
		return .Name
	}
	return ""
}

func ( *ListGroupsRequest) () isListGroupsRequest_Filter {
	if  != nil {
		return .Filter
	}
	return nil
}

func ( *ListGroupsRequest) () string {
	if ,  := .GetFilter().(*ListGroupsRequest_ChildrenOfGroup);  {
		return .ChildrenOfGroup
	}
	return ""
}

func ( *ListGroupsRequest) () string {
	if ,  := .GetFilter().(*ListGroupsRequest_AncestorsOfGroup);  {
		return .AncestorsOfGroup
	}
	return ""
}

func ( *ListGroupsRequest) () string {
	if ,  := .GetFilter().(*ListGroupsRequest_DescendantsOfGroup);  {
		return .DescendantsOfGroup
	}
	return ""
}

func ( *ListGroupsRequest) () int32 {
	if  != nil {
		return .PageSize
	}
	return 0
}

func ( *ListGroupsRequest) () string {
	if  != nil {
		return .PageToken
	}
	return ""
}

type isListGroupsRequest_Filter interface {
	isListGroupsRequest_Filter()
}

A group name. The format is: projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] Returns groups whose `parent_name` field contains the group name. If no groups have this parent, the results are empty.
	ChildrenOfGroup string `protobuf:"bytes,2,opt,name=children_of_group,json=childrenOfGroup,proto3,oneof"`
}

A group name. The format is: projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] Returns groups that are ancestors of the specified group. The groups are returned in order, starting with the immediate parent and ending with the most distant ancestor. If the specified group has no immediate parent, the results are empty.
	AncestorsOfGroup string `protobuf:"bytes,3,opt,name=ancestors_of_group,json=ancestorsOfGroup,proto3,oneof"`
}

A group name. The format is: projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] Returns the descendants of the specified group. This is a superset of the results returned by the `children_of_group` filter, and includes children-of-children, and so forth.
	DescendantsOfGroup string `protobuf:"bytes,4,opt,name=descendants_of_group,json=descendantsOfGroup,proto3,oneof"`
}

func (*ListGroupsRequest_ChildrenOfGroup) () {}

func (*ListGroupsRequest_AncestorsOfGroup) () {}

func (*ListGroupsRequest_DescendantsOfGroup) () {}
The groups that match the specified filters.
If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as `page_token` in the next call to this method.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}

func ( *ListGroupsResponse) () {
	* = ListGroupsResponse{}
	if protoimpl.UnsafeEnabled {
		 := &file_google_monitoring_v3_group_service_proto_msgTypes[1]
		 := protoimpl.X.MessageStateOf(protoimpl.Pointer())
		.StoreMessageInfo()
	}
}

func ( *ListGroupsResponse) () string {
	return protoimpl.X.MessageStringOf()
}

func (*ListGroupsResponse) () {}

func ( *ListGroupsResponse) () protoreflect.Message {
	 := &file_google_monitoring_v3_group_service_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled &&  != nil {
		 := protoimpl.X.MessageStateOf(protoimpl.Pointer())
		if .LoadMessageInfo() == nil {
			.StoreMessageInfo()
		}
		return 
	}
	return .MessageOf()
}
Deprecated: Use ListGroupsResponse.ProtoReflect.Descriptor instead.
func (*ListGroupsResponse) () ([]byte, []int) {
	return file_google_monitoring_v3_group_service_proto_rawDescGZIP(), []int{1}
}

func ( *ListGroupsResponse) () []*Group {
	if  != nil {
		return .Group
	}
	return nil
}

func ( *ListGroupsResponse) () string {
	if  != nil {
		return .NextPageToken
	}
	return ""
}
Required. The group to retrieve. The format is: projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID]
Deprecated: Use GetGroupRequest.ProtoReflect.Descriptor instead.
func (*GetGroupRequest) () ([]byte, []int) {
	return file_google_monitoring_v3_group_service_proto_rawDescGZIP(), []int{2}
}

func ( *GetGroupRequest) () string {
	if  != nil {
		return .Name
	}
	return ""
}
Required. The project in which to create the group. The format is: projects/[PROJECT_ID_OR_NUMBER]
Required. A group definition. It is an error to define the `name` field because the system assigns the name.
If true, validate this request but do not create the group.
	ValidateOnly bool `protobuf:"varint,3,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
}

func ( *CreateGroupRequest) () {
	* = CreateGroupRequest{}
	if protoimpl.UnsafeEnabled {
		 := &file_google_monitoring_v3_group_service_proto_msgTypes[3]
		 := protoimpl.X.MessageStateOf(protoimpl.Pointer())
		.StoreMessageInfo()
	}
}

func ( *CreateGroupRequest) () string {
	return protoimpl.X.MessageStringOf()
}

func (*CreateGroupRequest) () {}

func ( *CreateGroupRequest) () protoreflect.Message {
	 := &file_google_monitoring_v3_group_service_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled &&  != nil {
		 := protoimpl.X.MessageStateOf(protoimpl.Pointer())
		if .LoadMessageInfo() == nil {
			.StoreMessageInfo()
		}
		return 
	}
	return .MessageOf()
}
Deprecated: Use CreateGroupRequest.ProtoReflect.Descriptor instead.
func (*CreateGroupRequest) () ([]byte, []int) {
	return file_google_monitoring_v3_group_service_proto_rawDescGZIP(), []int{3}
}

func ( *CreateGroupRequest) () string {
	if  != nil {
		return .Name
	}
	return ""
}

func ( *CreateGroupRequest) () *Group {
	if  != nil {
		return .Group
	}
	return nil
}

func ( *CreateGroupRequest) () bool {
	if  != nil {
		return .ValidateOnly
	}
	return false
}
Required. The new definition of the group. All fields of the existing group, excepting `name`, are replaced with the corresponding fields of this group.
If true, validate this request but do not update the existing group.
	ValidateOnly bool `protobuf:"varint,3,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
}

func ( *UpdateGroupRequest) () {
	* = UpdateGroupRequest{}
	if protoimpl.UnsafeEnabled {
		 := &file_google_monitoring_v3_group_service_proto_msgTypes[4]
		 := protoimpl.X.MessageStateOf(protoimpl.Pointer())
		.StoreMessageInfo()
	}
}

func ( *UpdateGroupRequest) () string {
	return protoimpl.X.MessageStringOf()
}

func (*UpdateGroupRequest) () {}

func ( *UpdateGroupRequest) () protoreflect.Message {
	 := &file_google_monitoring_v3_group_service_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled &&  != nil {
		 := protoimpl.X.MessageStateOf(protoimpl.Pointer())
		if .LoadMessageInfo() == nil {
			.StoreMessageInfo()
		}
		return 
	}
	return .MessageOf()
}
Deprecated: Use UpdateGroupRequest.ProtoReflect.Descriptor instead.
func (*UpdateGroupRequest) () ([]byte, []int) {
	return file_google_monitoring_v3_group_service_proto_rawDescGZIP(), []int{4}
}

func ( *UpdateGroupRequest) () *Group {
	if  != nil {
		return .Group
	}
	return nil
}

func ( *UpdateGroupRequest) () bool {
	if  != nil {
		return .ValidateOnly
	}
	return false
}
The `DeleteGroup` request. The default behavior is to be able to delete a single group without any descendants.
Required. The group to delete. The format is: projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID]
If this field is true, then the request means to delete a group with all its descendants. Otherwise, the request means to delete a group only when it has no descendants. The default value is false.
Deprecated: Use DeleteGroupRequest.ProtoReflect.Descriptor instead.
func (*DeleteGroupRequest) () ([]byte, []int) {
	return file_google_monitoring_v3_group_service_proto_rawDescGZIP(), []int{5}
}

func ( *DeleteGroupRequest) () string {
	if  != nil {
		return .Name
	}
	return ""
}

func ( *DeleteGroupRequest) () bool {
	if  != nil {
		return .Recursive
	}
	return false
}
Required. The group whose members are listed. The format is: projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID]
A positive number that is the maximum number of results to return.
If this field is not empty then it must contain the `next_page_token` value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.
An optional [list filter](https://cloud.google.com/monitoring/api/learn_more#filtering) describing the members to be returned. The filter may reference the type, labels, and metadata of monitored resources that comprise the group. For example, to return only resources representing Compute Engine VM instances, use this filter: `resource.type = "gce_instance"`
An optional time interval for which results should be returned. Only members that were part of the group during the specified interval are included in the response. If no interval is provided then the group membership over the last minute is returned.
Deprecated: Use ListGroupMembersRequest.ProtoReflect.Descriptor instead.
func (*ListGroupMembersRequest) () ([]byte, []int) {
	return file_google_monitoring_v3_group_service_proto_rawDescGZIP(), []int{6}
}

func ( *ListGroupMembersRequest) () string {
	if  != nil {
		return .Name
	}
	return ""
}

func ( *ListGroupMembersRequest) () int32 {
	if  != nil {
		return .PageSize
	}
	return 0
}

func ( *ListGroupMembersRequest) () string {
	if  != nil {
		return .PageToken
	}
	return ""
}

func ( *ListGroupMembersRequest) () string {
	if  != nil {
		return .Filter
	}
	return ""
}

func ( *ListGroupMembersRequest) () *TimeInterval {
	if  != nil {
		return .Interval
	}
	return nil
}
A set of monitored resources in the group.
If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as `page_token` in the next call to this method.
The total number of elements matching this request.
Deprecated: Use ListGroupMembersResponse.ProtoReflect.Descriptor instead.
func (*ListGroupMembersResponse) () ([]byte, []int) {
	return file_google_monitoring_v3_group_service_proto_rawDescGZIP(), []int{7}
}

func ( *ListGroupMembersResponse) () []*monitoredres.MonitoredResource {
	if  != nil {
		return .Members
	}
	return nil
}

func ( *ListGroupMembersResponse) () string {
	if  != nil {
		return .NextPageToken
	}
	return ""
}

func ( *ListGroupMembersResponse) () int32 {
	if  != nil {
		return .TotalSize
	}
	return 0
}

var File_google_monitoring_v3_group_service_proto protoreflect.FileDescriptor

var file_google_monitoring_v3_group_service_proto_rawDesc = []byte{
	0x0a, 0x28, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72,
	0x69, 0x6e, 0x67, 0x2f, 0x76, 0x33, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x65, 0x72,
	0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33,
	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, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x72,
	0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 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, 0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x33, 0x2f, 0x63,
	0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76,
	0x33, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 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, 0x22, 0x9a, 0x03, 0x0a, 0x11, 0x4c,
	0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x3b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27,
	0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x12, 0x1f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69,
	0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
	0x6d, 0x2f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x52, 0x0a,
	0x11, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x5f, 0x6f, 0x66, 0x5f, 0x67, 0x72, 0x6f,
	0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x6d,
	0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x48, 0x00,
	0x52, 0x0f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x4f, 0x66, 0x47, 0x72, 0x6f, 0x75,
	0x70, 0x12, 0x54, 0x0a, 0x12, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x6f,
	0x66, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0xfa,
	0x41, 0x21, 0x0a, 0x1f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x72,
	0x6f, 0x75, 0x70, 0x48, 0x00, 0x52, 0x10, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x73,
	0x4f, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x58, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x63, 0x65,
	0x6e, 0x64, 0x61, 0x6e, 0x74, 0x73, 0x5f, 0x6f, 0x66, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x6d, 0x6f, 0x6e, 0x69,
	0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x48, 0x00, 0x52, 0x12, 0x64,
	0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x73, 0x4f, 0x66, 0x47, 0x72, 0x6f, 0x75,
	0x70, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d,
	0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x08, 0x0a,
	0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x6f, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x47,
	0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a,
	0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67,
	0x2e, 0x76, 0x33, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70,
	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, 0x22, 0x4e, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x47,
	0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41,
	0x21, 0x0a, 0x1f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x72, 0x6f,
	0x75, 0x70, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xae, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65,
	0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x3b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0,
	0x41, 0x02, 0xfa, 0x41, 0x21, 0x12, 0x1f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e,
	0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
	0x2f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x05,
	0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e,
	0x76, 0x33, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x67,
	0x72, 0x6f, 0x75, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65,
	0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x76, 0x61, 0x6c,
	0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x71, 0x0a, 0x12, 0x55, 0x70, 0x64,
	0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x36, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69,
	0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x02,
	0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64,
	0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c,
	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x6f, 0x0a, 0x12,
	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f,
	0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
	0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x22, 0xea, 0x01,
	0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65,
	0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a,
	0x1f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x72, 0x6f, 0x75, 0x70,
	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73,
	0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53,
	0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65,
	0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b,
	0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x08, 0x69, 0x6e,
	0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67,
	0x2e, 0x76, 0x33, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c,
	0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x9a, 0x01, 0x0a, 0x18, 0x4c,
	0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65,
	0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x52,
	0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61,
	0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f,
	0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x32, 0x98, 0x08, 0x0a, 0x0c, 0x47, 0x72, 0x6f, 0x75,
	0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73,
	0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x4c,
	0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f,
	0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75,
	0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93,
	0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x33, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72,
	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73,
	0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x7d, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x47, 0x72,
	0x6f, 0x75, 0x70, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e,
	0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72,
	0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76,
	0x33, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12,
	0x1e, 0x2f, 0x76, 0x33, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65,
	0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0xda,
	0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x8e, 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74,
	0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f,
	0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x38, 0x82,
	0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x1c, 0x2f, 0x76, 0x33, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65,
	0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x67, 0x72, 0x6f,
	0x75, 0x70, 0x73, 0x3a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0xda, 0x41, 0x0a, 0x6e, 0x61, 0x6d,
	0x65, 0x2c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x91, 0x01, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61,
	0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x55,
	0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74,
	0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x3b,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x1a, 0x24, 0x2f, 0x76, 0x33, 0x2f, 0x7b, 0x67, 0x72, 0x6f,
	0x75, 0x70, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
	0x2f, 0x2a, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x05, 0x67, 0x72,
	0x6f, 0x75, 0x70, 0xda, 0x41, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x7e, 0x0a, 0x0b, 0x44,
	0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76,
	0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2d, 0x82, 0xd3,
	0xe4, 0x93, 0x02, 0x20, 0x2a, 0x1e, 0x2f, 0x76, 0x33, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d,
	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70,
	0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xa8, 0x01, 0x0a, 0x10,
	0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73,
	0x12, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f,
	0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75,
	0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
	0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72,
	0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70,
	0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x76, 0x33, 0x2f, 0x7b, 0x6e, 0x61,
	0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x67, 0x72,
	0x6f, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0xda,
	0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0xa9, 0x01, 0xca, 0x41, 0x19, 0x6d, 0x6f, 0x6e, 0x69,
	0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x89, 0x01, 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, 0x2c, 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, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69,
	0x6e, 0x67, 0x2c, 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, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x72, 0x65,
	0x61, 0x64, 0x42, 0xc9, 0x01, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x42,
	0x11, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f,
	0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c,
	0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x6d, 0x6f, 0x6e, 0x69,
	0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x33, 0x3b, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f,
	0x72, 0x69, 0x6e, 0x67, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x56,
	0x33, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64,
	0x5c, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x33, 0xea, 0x02,
	0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a,
	0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x33, 0x62, 0x06,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_google_monitoring_v3_group_service_proto_rawDescOnce sync.Once
	file_google_monitoring_v3_group_service_proto_rawDescData = file_google_monitoring_v3_group_service_proto_rawDesc
)

func () []byte {
	file_google_monitoring_v3_group_service_proto_rawDescOnce.Do(func() {
		file_google_monitoring_v3_group_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_monitoring_v3_group_service_proto_rawDescData)
	})
	return file_google_monitoring_v3_group_service_proto_rawDescData
}

var file_google_monitoring_v3_group_service_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
var file_google_monitoring_v3_group_service_proto_goTypes = []interface{}{
	(*ListGroupsRequest)(nil),              // 0: google.monitoring.v3.ListGroupsRequest
	(*ListGroupsResponse)(nil),             // 1: google.monitoring.v3.ListGroupsResponse
	(*GetGroupRequest)(nil),                // 2: google.monitoring.v3.GetGroupRequest
	(*CreateGroupRequest)(nil),             // 3: google.monitoring.v3.CreateGroupRequest
	(*UpdateGroupRequest)(nil),             // 4: google.monitoring.v3.UpdateGroupRequest
	(*DeleteGroupRequest)(nil),             // 5: google.monitoring.v3.DeleteGroupRequest
	(*ListGroupMembersRequest)(nil),        // 6: google.monitoring.v3.ListGroupMembersRequest
	(*ListGroupMembersResponse)(nil),       // 7: google.monitoring.v3.ListGroupMembersResponse
	(*Group)(nil),                          // 8: google.monitoring.v3.Group
	(*TimeInterval)(nil),                   // 9: google.monitoring.v3.TimeInterval
	(*monitoredres.MonitoredResource)(nil), // 10: google.api.MonitoredResource
	(*emptypb.Empty)(nil),                  // 11: google.protobuf.Empty
}
var file_google_monitoring_v3_group_service_proto_depIdxs = []int32{
	8,  // 0: google.monitoring.v3.ListGroupsResponse.group:type_name -> google.monitoring.v3.Group
	8,  // 1: google.monitoring.v3.CreateGroupRequest.group:type_name -> google.monitoring.v3.Group
	8,  // 2: google.monitoring.v3.UpdateGroupRequest.group:type_name -> google.monitoring.v3.Group
	9,  // 3: google.monitoring.v3.ListGroupMembersRequest.interval:type_name -> google.monitoring.v3.TimeInterval
	10, // 4: google.monitoring.v3.ListGroupMembersResponse.members:type_name -> google.api.MonitoredResource
	0,  // 5: google.monitoring.v3.GroupService.ListGroups:input_type -> google.monitoring.v3.ListGroupsRequest
	2,  // 6: google.monitoring.v3.GroupService.GetGroup:input_type -> google.monitoring.v3.GetGroupRequest
	3,  // 7: google.monitoring.v3.GroupService.CreateGroup:input_type -> google.monitoring.v3.CreateGroupRequest
	4,  // 8: google.monitoring.v3.GroupService.UpdateGroup:input_type -> google.monitoring.v3.UpdateGroupRequest
	5,  // 9: google.monitoring.v3.GroupService.DeleteGroup:input_type -> google.monitoring.v3.DeleteGroupRequest
	6,  // 10: google.monitoring.v3.GroupService.ListGroupMembers:input_type -> google.monitoring.v3.ListGroupMembersRequest
	1,  // 11: google.monitoring.v3.GroupService.ListGroups:output_type -> google.monitoring.v3.ListGroupsResponse
	8,  // 12: google.monitoring.v3.GroupService.GetGroup:output_type -> google.monitoring.v3.Group
	8,  // 13: google.monitoring.v3.GroupService.CreateGroup:output_type -> google.monitoring.v3.Group
	8,  // 14: google.monitoring.v3.GroupService.UpdateGroup:output_type -> google.monitoring.v3.Group
	11, // 15: google.monitoring.v3.GroupService.DeleteGroup:output_type -> google.protobuf.Empty
	7,  // 16: google.monitoring.v3.GroupService.ListGroupMembers:output_type -> google.monitoring.v3.ListGroupMembersResponse
	11, // [11:17] is the sub-list for method output_type
	5,  // [5:11] is the sub-list for method input_type
	5,  // [5:5] is the sub-list for extension type_name
	5,  // [5:5] is the sub-list for extension extendee
	0,  // [0:5] is the sub-list for field type_name
}

func () { file_google_monitoring_v3_group_service_proto_init() }
func () {
	if File_google_monitoring_v3_group_service_proto != nil {
		return
	}
	file_google_monitoring_v3_common_proto_init()
	file_google_monitoring_v3_group_proto_init()
	if !protoimpl.UnsafeEnabled {
		file_google_monitoring_v3_group_service_proto_msgTypes[0].Exporter = func( interface{},  int) interface{} {
			switch  := .(*ListGroupsRequest);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
		file_google_monitoring_v3_group_service_proto_msgTypes[1].Exporter = func( interface{},  int) interface{} {
			switch  := .(*ListGroupsResponse);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
		file_google_monitoring_v3_group_service_proto_msgTypes[2].Exporter = func( interface{},  int) interface{} {
			switch  := .(*GetGroupRequest);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
		file_google_monitoring_v3_group_service_proto_msgTypes[3].Exporter = func( interface{},  int) interface{} {
			switch  := .(*CreateGroupRequest);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
		file_google_monitoring_v3_group_service_proto_msgTypes[4].Exporter = func( interface{},  int) interface{} {
			switch  := .(*UpdateGroupRequest);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
		file_google_monitoring_v3_group_service_proto_msgTypes[5].Exporter = func( interface{},  int) interface{} {
			switch  := .(*DeleteGroupRequest);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
		file_google_monitoring_v3_group_service_proto_msgTypes[6].Exporter = func( interface{},  int) interface{} {
			switch  := .(*ListGroupMembersRequest);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
		file_google_monitoring_v3_group_service_proto_msgTypes[7].Exporter = func( interface{},  int) interface{} {
			switch  := .(*ListGroupMembersResponse);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
	}
	file_google_monitoring_v3_group_service_proto_msgTypes[0].OneofWrappers = []interface{}{
		(*ListGroupsRequest_ChildrenOfGroup)(nil),
		(*ListGroupsRequest_AncestorsOfGroup)(nil),
		(*ListGroupsRequest_DescendantsOfGroup)(nil),
	}
	type  struct{}
	 := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf({}).PkgPath(),
			RawDescriptor: file_google_monitoring_v3_group_service_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   8,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_google_monitoring_v3_group_service_proto_goTypes,
		DependencyIndexes: file_google_monitoring_v3_group_service_proto_depIdxs,
		MessageInfos:      file_google_monitoring_v3_group_service_proto_msgTypes,
	}.Build()
	File_google_monitoring_v3_group_service_proto = .File
	file_google_monitoring_v3_group_service_proto_rawDesc = nil
	file_google_monitoring_v3_group_service_proto_goTypes = nil
	file_google_monitoring_v3_group_service_proto_depIdxs = nil
}
Reference imports to suppress errors if they are not otherwise used.
This is a compile-time assertion to ensure that this generated file is compatible with the grpc package it is being compiled against.
GroupServiceClient is the client API for GroupService service. For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
Lists the existing groups.
Gets a single group.
Creates a new group.
Updates an existing group. You can change any group attributes except `name`.
Deletes an existing group.
Lists the monitored resources that are members of a group.
	ListGroupMembers(ctx context.Context, in *ListGroupMembersRequest, opts ...grpc.CallOption) (*ListGroupMembersResponse, error)
}

type groupServiceClient struct {
	cc grpc.ClientConnInterface
}

func ( grpc.ClientConnInterface) GroupServiceClient {
	return &groupServiceClient{}
}

func ( *groupServiceClient) ( context.Context,  *ListGroupsRequest,  ...grpc.CallOption) (*ListGroupsResponse, error) {
	 := new(ListGroupsResponse)
	 := .cc.Invoke(, "/google.monitoring.v3.GroupService/ListGroups", , , ...)
	if  != nil {
		return nil, 
	}
	return , nil
}

func ( *groupServiceClient) ( context.Context,  *GetGroupRequest,  ...grpc.CallOption) (*Group, error) {
	 := new(Group)
	 := .cc.Invoke(, "/google.monitoring.v3.GroupService/GetGroup", , , ...)
	if  != nil {
		return nil, 
	}
	return , nil
}

func ( *groupServiceClient) ( context.Context,  *CreateGroupRequest,  ...grpc.CallOption) (*Group, error) {
	 := new(Group)
	 := .cc.Invoke(, "/google.monitoring.v3.GroupService/CreateGroup", , , ...)
	if  != nil {
		return nil, 
	}
	return , nil
}

func ( *groupServiceClient) ( context.Context,  *UpdateGroupRequest,  ...grpc.CallOption) (*Group, error) {
	 := new(Group)
	 := .cc.Invoke(, "/google.monitoring.v3.GroupService/UpdateGroup", , , ...)
	if  != nil {
		return nil, 
	}
	return , nil
}

func ( *groupServiceClient) ( context.Context,  *DeleteGroupRequest,  ...grpc.CallOption) (*emptypb.Empty, error) {
	 := new(emptypb.Empty)
	 := .cc.Invoke(, "/google.monitoring.v3.GroupService/DeleteGroup", , , ...)
	if  != nil {
		return nil, 
	}
	return , nil
}

func ( *groupServiceClient) ( context.Context,  *ListGroupMembersRequest,  ...grpc.CallOption) (*ListGroupMembersResponse, error) {
	 := new(ListGroupMembersResponse)
	 := .cc.Invoke(, "/google.monitoring.v3.GroupService/ListGroupMembers", , , ...)
	if  != nil {
		return nil, 
	}
	return , nil
}
GroupServiceServer is the server API for GroupService service.
Lists the existing groups.
Gets a single group.
Creates a new group.
Updates an existing group. You can change any group attributes except `name`.
Deletes an existing group.
Lists the monitored resources that are members of a group.
UnimplementedGroupServiceServer can be embedded to have forward compatible implementations.
type UnimplementedGroupServiceServer struct {
}

func (*UnimplementedGroupServiceServer) (context.Context, *ListGroupsRequest) (*ListGroupsResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListGroups not implemented")
}
func (*UnimplementedGroupServiceServer) (context.Context, *GetGroupRequest) (*Group, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetGroup not implemented")
}
func (*UnimplementedGroupServiceServer) (context.Context, *CreateGroupRequest) (*Group, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CreateGroup not implemented")
}
func (*UnimplementedGroupServiceServer) (context.Context, *UpdateGroupRequest) (*Group, error) {
	return nil, status.Errorf(codes.Unimplemented, "method UpdateGroup not implemented")
}
func (*UnimplementedGroupServiceServer) (context.Context, *DeleteGroupRequest) (*emptypb.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeleteGroup not implemented")
}
func (*UnimplementedGroupServiceServer) (context.Context, *ListGroupMembersRequest) (*ListGroupMembersResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListGroupMembers not implemented")
}

func ( *grpc.Server,  GroupServiceServer) {
	.RegisterService(&_GroupService_serviceDesc, )
}

func ( interface{},  context.Context,  func(interface{}) error,  grpc.UnaryServerInterceptor) (interface{}, error) {
	 := new(ListGroupsRequest)
	if  := ();  != nil {
		return nil, 
	}
	if  == nil {
		return .(GroupServiceServer).ListGroups(, )
	}
	 := &grpc.UnaryServerInfo{
		Server:     ,
		FullMethod: "/google.monitoring.v3.GroupService/ListGroups",
	}
	 := func( context.Context,  interface{}) (interface{}, error) {
		return .(GroupServiceServer).ListGroups(, .(*ListGroupsRequest))
	}
	return (, , , )
}

func ( interface{},  context.Context,  func(interface{}) error,  grpc.UnaryServerInterceptor) (interface{}, error) {
	 := new(GetGroupRequest)
	if  := ();  != nil {
		return nil, 
	}
	if  == nil {
		return .(GroupServiceServer).GetGroup(, )
	}
	 := &grpc.UnaryServerInfo{
		Server:     ,
		FullMethod: "/google.monitoring.v3.GroupService/GetGroup",
	}
	 := func( context.Context,  interface{}) (interface{}, error) {
		return .(GroupServiceServer).GetGroup(, .(*GetGroupRequest))
	}
	return (, , , )
}

func ( interface{},  context.Context,  func(interface{}) error,  grpc.UnaryServerInterceptor) (interface{}, error) {
	 := new(CreateGroupRequest)
	if  := ();  != nil {
		return nil, 
	}
	if  == nil {
		return .(GroupServiceServer).CreateGroup(, )
	}
	 := &grpc.UnaryServerInfo{
		Server:     ,
		FullMethod: "/google.monitoring.v3.GroupService/CreateGroup",
	}
	 := func( context.Context,  interface{}) (interface{}, error) {
		return .(GroupServiceServer).CreateGroup(, .(*CreateGroupRequest))
	}
	return (, , , )
}

func ( interface{},  context.Context,  func(interface{}) error,  grpc.UnaryServerInterceptor) (interface{}, error) {
	 := new(UpdateGroupRequest)
	if  := ();  != nil {
		return nil, 
	}
	if  == nil {
		return .(GroupServiceServer).UpdateGroup(, )
	}
	 := &grpc.UnaryServerInfo{
		Server:     ,
		FullMethod: "/google.monitoring.v3.GroupService/UpdateGroup",
	}
	 := func( context.Context,  interface{}) (interface{}, error) {
		return .(GroupServiceServer).UpdateGroup(, .(*UpdateGroupRequest))
	}
	return (, , , )
}

func ( interface{},  context.Context,  func(interface{}) error,  grpc.UnaryServerInterceptor) (interface{}, error) {
	 := new(DeleteGroupRequest)
	if  := ();  != nil {
		return nil, 
	}
	if  == nil {
		return .(GroupServiceServer).DeleteGroup(, )
	}
	 := &grpc.UnaryServerInfo{
		Server:     ,
		FullMethod: "/google.monitoring.v3.GroupService/DeleteGroup",
	}
	 := func( context.Context,  interface{}) (interface{}, error) {
		return .(GroupServiceServer).DeleteGroup(, .(*DeleteGroupRequest))
	}
	return (, , , )
}

func ( interface{},  context.Context,  func(interface{}) error,  grpc.UnaryServerInterceptor) (interface{}, error) {
	 := new(ListGroupMembersRequest)
	if  := ();  != nil {
		return nil, 
	}
	if  == nil {
		return .(GroupServiceServer).ListGroupMembers(, )
	}
	 := &grpc.UnaryServerInfo{
		Server:     ,
		FullMethod: "/google.monitoring.v3.GroupService/ListGroupMembers",
	}
	 := func( context.Context,  interface{}) (interface{}, error) {
		return .(GroupServiceServer).ListGroupMembers(, .(*ListGroupMembersRequest))
	}
	return (, , , )
}

var _GroupService_serviceDesc = grpc.ServiceDesc{
	ServiceName: "google.monitoring.v3.GroupService",
	HandlerType: (*GroupServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "ListGroups",
			Handler:    _GroupService_ListGroups_Handler,
		},
		{
			MethodName: "GetGroup",
			Handler:    _GroupService_GetGroup_Handler,
		},
		{
			MethodName: "CreateGroup",
			Handler:    _GroupService_CreateGroup_Handler,
		},
		{
			MethodName: "UpdateGroup",
			Handler:    _GroupService_UpdateGroup_Handler,
		},
		{
			MethodName: "DeleteGroup",
			Handler:    _GroupService_DeleteGroup_Handler,
		},
		{
			MethodName: "ListGroupMembers",
			Handler:    _GroupService_ListGroupMembers_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "google/monitoring/v3/group_service.proto",