// Copyright 2026 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.26.0
// 	protoc        v4.24.4
// source: google/apps/card/v1/card.proto

package card

import (
	reflect "reflect"
	sync "sync"

	color "google.golang.org/genproto/googleapis/type/color"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
)

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)
)

// The divider style of a card. Currently only used for dividers betweens card
// sections.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type Card_DividerStyle int32

const (
	// Don't use. Unspecified.
	Card_DIVIDER_STYLE_UNSPECIFIED Card_DividerStyle = 0
	// Default option. Render a solid divider.
	Card_SOLID_DIVIDER Card_DividerStyle = 1
	// If set, no divider is rendered. This style completely removes the divider
	// from the layout. The result is equivalent to not adding a divider at all.
	Card_NO_DIVIDER Card_DividerStyle = 2
)

// Enum value maps for Card_DividerStyle.
var (
	Card_DividerStyle_name = map[int32]string{
		0: "DIVIDER_STYLE_UNSPECIFIED",
		1: "SOLID_DIVIDER",
		2: "NO_DIVIDER",
	}
	Card_DividerStyle_value = map[string]int32{
		"DIVIDER_STYLE_UNSPECIFIED": 0,
		"SOLID_DIVIDER":             1,
		"NO_DIVIDER":                2,
	}
)

func (x Card_DividerStyle) Enum() *Card_DividerStyle {
	p := new(Card_DividerStyle)
	*p = x
	return p
}

func (x Card_DividerStyle) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Card_DividerStyle) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[0].Descriptor()
}

func (Card_DividerStyle) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[0]
}

func (x Card_DividerStyle) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Card_DividerStyle.Descriptor instead.
func (Card_DividerStyle) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{0, 0}
}

// In Google Workspace add-ons,
// determines how a card is displayed.
//
// [Google Workspace
// add-ons](https://developers.google.com/workspace/add-ons):
type Card_DisplayStyle int32

const (
	// Don't use. Unspecified.
	Card_DISPLAY_STYLE_UNSPECIFIED Card_DisplayStyle = 0
	// The header of the card appears at the bottom of the
	// sidebar, partially covering the current top card of the stack. Clicking
	// the header pops the card into the card stack. If the card has no header,
	// a generated header is used instead.
	Card_PEEK Card_DisplayStyle = 1
	// Default value. The card is shown by replacing the view of the top card in
	// the card stack.
	Card_REPLACE Card_DisplayStyle = 2
)

// Enum value maps for Card_DisplayStyle.
var (
	Card_DisplayStyle_name = map[int32]string{
		0: "DISPLAY_STYLE_UNSPECIFIED",
		1: "PEEK",
		2: "REPLACE",
	}
	Card_DisplayStyle_value = map[string]int32{
		"DISPLAY_STYLE_UNSPECIFIED": 0,
		"PEEK":                      1,
		"REPLACE":                   2,
	}
)

func (x Card_DisplayStyle) Enum() *Card_DisplayStyle {
	p := new(Card_DisplayStyle)
	*p = x
	return p
}

func (x Card_DisplayStyle) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Card_DisplayStyle) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[1].Descriptor()
}

func (Card_DisplayStyle) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[1]
}

func (x Card_DisplayStyle) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Card_DisplayStyle.Descriptor instead.
func (Card_DisplayStyle) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{0, 1}
}

// The shape used to crop the image.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type Widget_ImageType int32

const (
	// Default value. Applies a square mask to the image. For example, a 4x3
	// image becomes 3x3.
	Widget_SQUARE Widget_ImageType = 0
	// Applies a circular mask to the image. For example, a 4x3 image becomes a
	// circle with a diameter of 3.
	Widget_CIRCLE Widget_ImageType = 1
)

// Enum value maps for Widget_ImageType.
var (
	Widget_ImageType_name = map[int32]string{
		0: "SQUARE",
		1: "CIRCLE",
	}
	Widget_ImageType_value = map[string]int32{
		"SQUARE": 0,
		"CIRCLE": 1,
	}
)

func (x Widget_ImageType) Enum() *Widget_ImageType {
	p := new(Widget_ImageType)
	*p = x
	return p
}

func (x Widget_ImageType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Widget_ImageType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[2].Descriptor()
}

func (Widget_ImageType) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[2]
}

func (x Widget_ImageType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Widget_ImageType.Descriptor instead.
func (Widget_ImageType) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{1, 0}
}

// Specifies whether widgets align to the left, right, or center of a column.
//
// [Google Chat apps](https://developers.google.com/workspace/chat):
type Widget_HorizontalAlignment int32

const (
	// Don't use. Unspecified.
	Widget_HORIZONTAL_ALIGNMENT_UNSPECIFIED Widget_HorizontalAlignment = 0
	// Default value. Aligns widgets to the start position of the column. For
	// left-to-right layouts, aligns to the left. For right-to-left layouts,
	// aligns to the right.
	Widget_START Widget_HorizontalAlignment = 1
	// Aligns widgets to the center of the column.
	Widget_CENTER Widget_HorizontalAlignment = 2
	// Aligns widgets to the end position of the column. For left-to-right
	// layouts, aligns widgets to the right. For right-to-left layouts, aligns
	// widgets to the left.
	Widget_END Widget_HorizontalAlignment = 3
)

// Enum value maps for Widget_HorizontalAlignment.
var (
	Widget_HorizontalAlignment_name = map[int32]string{
		0: "HORIZONTAL_ALIGNMENT_UNSPECIFIED",
		1: "START",
		2: "CENTER",
		3: "END",
	}
	Widget_HorizontalAlignment_value = map[string]int32{
		"HORIZONTAL_ALIGNMENT_UNSPECIFIED": 0,
		"START":                            1,
		"CENTER":                           2,
		"END":                              3,
	}
)

func (x Widget_HorizontalAlignment) Enum() *Widget_HorizontalAlignment {
	p := new(Widget_HorizontalAlignment)
	*p = x
	return p
}

func (x Widget_HorizontalAlignment) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Widget_HorizontalAlignment) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[3].Descriptor()
}

func (Widget_HorizontalAlignment) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[3]
}

func (x Widget_HorizontalAlignment) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Widget_HorizontalAlignment.Descriptor instead.
func (Widget_HorizontalAlignment) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{1, 1}
}

// Represents vertical alignment attribute.
type Widget_VerticalAlignment int32

const (
	// Unspecified type. Do not use.
	Widget_VERTICAL_ALIGNMENT_UNSPECIFIED Widget_VerticalAlignment = 0
	// Alignment to the top position.
	Widget_TOP Widget_VerticalAlignment = 1
	// Alignment to the middle position.
	Widget_MIDDLE Widget_VerticalAlignment = 2
	// Alignment to the bottom position.
	Widget_BOTTOM Widget_VerticalAlignment = 3
)

// Enum value maps for Widget_VerticalAlignment.
var (
	Widget_VerticalAlignment_name = map[int32]string{
		0: "VERTICAL_ALIGNMENT_UNSPECIFIED",
		1: "TOP",
		2: "MIDDLE",
		3: "BOTTOM",
	}
	Widget_VerticalAlignment_value = map[string]int32{
		"VERTICAL_ALIGNMENT_UNSPECIFIED": 0,
		"TOP":                            1,
		"MIDDLE":                         2,
		"BOTTOM":                         3,
	}
)

func (x Widget_VerticalAlignment) Enum() *Widget_VerticalAlignment {
	p := new(Widget_VerticalAlignment)
	*p = x
	return p
}

func (x Widget_VerticalAlignment) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Widget_VerticalAlignment) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[4].Descriptor()
}

func (Widget_VerticalAlignment) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[4]
}

func (x Widget_VerticalAlignment) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Widget_VerticalAlignment.Descriptor instead.
func (Widget_VerticalAlignment) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{1, 2}
}

// Syntax to use for formatting text.
//
// [Google Chat apps](https://developers.google.com/workspace/chat):
type TextParagraph_TextSyntax int32

const (
	// The text is rendered as HTML if unspecified.
	TextParagraph_TEXT_SYNTAX_UNSPECIFIED TextParagraph_TextSyntax = 0
	// The text is rendered as HTML. This is the default value.
	TextParagraph_HTML TextParagraph_TextSyntax = 1
	// The text is rendered as Markdown.
	TextParagraph_MARKDOWN TextParagraph_TextSyntax = 2
)

// Enum value maps for TextParagraph_TextSyntax.
var (
	TextParagraph_TextSyntax_name = map[int32]string{
		0: "TEXT_SYNTAX_UNSPECIFIED",
		1: "HTML",
		2: "MARKDOWN",
	}
	TextParagraph_TextSyntax_value = map[string]int32{
		"TEXT_SYNTAX_UNSPECIFIED": 0,
		"HTML":                    1,
		"MARKDOWN":                2,
	}
)

func (x TextParagraph_TextSyntax) Enum() *TextParagraph_TextSyntax {
	p := new(TextParagraph_TextSyntax)
	*p = x
	return p
}

func (x TextParagraph_TextSyntax) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (TextParagraph_TextSyntax) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[5].Descriptor()
}

func (TextParagraph_TextSyntax) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[5]
}

func (x TextParagraph_TextSyntax) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use TextParagraph_TextSyntax.Descriptor instead.
func (TextParagraph_TextSyntax) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{2, 0}
}

// How the switch appears in the user interface.
//
// [Google Workspace add-ons
// and Chat apps](https://developers.google.com/workspace/extend):
type DecoratedText_SwitchControl_ControlType int32

const (
	// A toggle-style switch.
	DecoratedText_SwitchControl_SWITCH DecoratedText_SwitchControl_ControlType = 0
	// Deprecated in favor of `CHECK_BOX`.
	DecoratedText_SwitchControl_CHECKBOX DecoratedText_SwitchControl_ControlType = 1
	// A checkbox.
	DecoratedText_SwitchControl_CHECK_BOX DecoratedText_SwitchControl_ControlType = 2
)

// Enum value maps for DecoratedText_SwitchControl_ControlType.
var (
	DecoratedText_SwitchControl_ControlType_name = map[int32]string{
		0: "SWITCH",
		1: "CHECKBOX",
		2: "CHECK_BOX",
	}
	DecoratedText_SwitchControl_ControlType_value = map[string]int32{
		"SWITCH":    0,
		"CHECKBOX":  1,
		"CHECK_BOX": 2,
	}
)

func (x DecoratedText_SwitchControl_ControlType) Enum() *DecoratedText_SwitchControl_ControlType {
	p := new(DecoratedText_SwitchControl_ControlType)
	*p = x
	return p
}

func (x DecoratedText_SwitchControl_ControlType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (DecoratedText_SwitchControl_ControlType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[6].Descriptor()
}

func (DecoratedText_SwitchControl_ControlType) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[6]
}

func (x DecoratedText_SwitchControl_ControlType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use DecoratedText_SwitchControl_ControlType.Descriptor instead.
func (DecoratedText_SwitchControl_ControlType) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{5, 0, 0}
}

// How a text input field appears in the user interface. For example,
// whether it's a single line input field, or a multi-line input. If
// `initialSuggestions` is specified, `type` is always `SINGLE_LINE`,
// even if it's set to `MULTIPLE_LINE`.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type TextInput_Type int32

const (
	// The text input field has a fixed height of one line.
	TextInput_SINGLE_LINE TextInput_Type = 0
	// The text input field has a fixed height of multiple lines.
	TextInput_MULTIPLE_LINE TextInput_Type = 1
)

// Enum value maps for TextInput_Type.
var (
	TextInput_Type_name = map[int32]string{
		0: "SINGLE_LINE",
		1: "MULTIPLE_LINE",
	}
	TextInput_Type_value = map[string]int32{
		"SINGLE_LINE":   0,
		"MULTIPLE_LINE": 1,
	}
)

func (x TextInput_Type) Enum() *TextInput_Type {
	p := new(TextInput_Type)
	*p = x
	return p
}

func (x TextInput_Type) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (TextInput_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[7].Descriptor()
}

func (TextInput_Type) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[7]
}

func (x TextInput_Type) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use TextInput_Type.Descriptor instead.
func (TextInput_Type) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{6, 0}
}

// The format for the items that users can select. Different options support
// different types of interactions. For example, users can select multiple
// checkboxes, but can only select one item from a dropdown menu.
//
// Each selection input supports one type of selection. Mixing checkboxes
// and switches, for example, isn't supported.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type SelectionInput_SelectionType int32

const (
	// A set of checkboxes. Users can select one or more checkboxes.
	SelectionInput_CHECK_BOX SelectionInput_SelectionType = 0
	// A set of radio buttons. Users can select one radio button.
	SelectionInput_RADIO_BUTTON SelectionInput_SelectionType = 1
	// A set of switches. Users can turn on one or more switches.
	SelectionInput_SWITCH SelectionInput_SelectionType = 2
	// A dropdown menu. Users can select one item from the menu.
	//
	// For Google Chat apps, you can populate items using a dynamic data source
	// and autosuggest items as users type in the menu. For example, users can
	// start typing the name of a Google Chat space and the widget autosuggests
	// the space. To dynamically populate items for a dropdown menu, use one of
	// the following types of data sources:
	//
	//   - Google Workspace data: Items are populated using data from Google
	//     Workspace, such as Google Workspace users or Google Chat spaces.
	//   - External data: Items are populated from an external data
	//     source outside of Google Workspace.
	//
	// For examples of how to implement dropdown menus for Chat apps, see
	// [Add a dropdown
	// menu](https://developers.google.com/workspace/chat/design-interactive-card-dialog#dropdown-menu)
	// and [Dynamically populate drop-down
	// menus](https://developers.google.com/workspace/chat/design-interactive-card-dialog#dynamic-dropdown-menu).
	//
	// [Google Workspace add-ons and Chat
	// apps](https://developers.google.com/workspace/extend):
	SelectionInput_DROPDOWN SelectionInput_SelectionType = 3
	// A menu with a text box. Users can type and select one or more items.
	// For Google Workspace add-ons, you must populate items using a static
	// array of `SelectionItem` objects.
	//
	// For Google Chat apps, you can also populate items using a dynamic data
	// source and autosuggest items as users type in the menu. For example,
	// users can start typing the name of a Google Chat space and the widget
	// autosuggests the space. To dynamically populate items for a multiselect
	// menu, use one of the following types of data sources:
	//
	//   - Google Workspace data: Items are populated using data from Google
	//     Workspace, such as Google Workspace users or Google Chat spaces.
	//   - External data: Items are populated from an external data
	//     source outside of Google Workspace.
	//
	// For examples of how to implement multiselect menus for Chat apps, see
	// [Add a multiselect
	// menu](https://developers.google.com/workspace/chat/design-interactive-card-dialog#multiselect-menu).
	//
	// [Google Workspace add-ons and Chat
	// apps](https://developers.google.com/workspace/extend):
	SelectionInput_MULTI_SELECT SelectionInput_SelectionType = 4
)

// Enum value maps for SelectionInput_SelectionType.
var (
	SelectionInput_SelectionType_name = map[int32]string{
		0: "CHECK_BOX",
		1: "RADIO_BUTTON",
		2: "SWITCH",
		3: "DROPDOWN",
		4: "MULTI_SELECT",
	}
	SelectionInput_SelectionType_value = map[string]int32{
		"CHECK_BOX":    0,
		"RADIO_BUTTON": 1,
		"SWITCH":       2,
		"DROPDOWN":     3,
		"MULTI_SELECT": 4,
	}
)

func (x SelectionInput_SelectionType) Enum() *SelectionInput_SelectionType {
	p := new(SelectionInput_SelectionType)
	*p = x
	return p
}

func (x SelectionInput_SelectionType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (SelectionInput_SelectionType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[8].Descriptor()
}

func (SelectionInput_SelectionType) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[8]
}

func (x SelectionInput_SelectionType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use SelectionInput_SelectionType.Descriptor instead.
func (SelectionInput_SelectionType) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{9, 0}
}

// A data source shared by all [Google Workspace
// applications]
// (https://developers.google.com/workspace/chat/api/reference/rest/v1/HostApp).
//
// [Google Chat apps](https://developers.google.com/workspace/chat):
type SelectionInput_PlatformDataSource_CommonDataSource int32

const (
	// Default value. Don't use.
	SelectionInput_PlatformDataSource_UNKNOWN SelectionInput_PlatformDataSource_CommonDataSource = 0
	// Google Workspace users. The user can only view and select users from
	// their Google Workspace organization.
	SelectionInput_PlatformDataSource_USER SelectionInput_PlatformDataSource_CommonDataSource = 1
)

// Enum value maps for SelectionInput_PlatformDataSource_CommonDataSource.
var (
	SelectionInput_PlatformDataSource_CommonDataSource_name = map[int32]string{
		0: "UNKNOWN",
		1: "USER",
	}
	SelectionInput_PlatformDataSource_CommonDataSource_value = map[string]int32{
		"UNKNOWN": 0,
		"USER":    1,
	}
)

func (x SelectionInput_PlatformDataSource_CommonDataSource) Enum() *SelectionInput_PlatformDataSource_CommonDataSource {
	p := new(SelectionInput_PlatformDataSource_CommonDataSource)
	*p = x
	return p
}

func (x SelectionInput_PlatformDataSource_CommonDataSource) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (SelectionInput_PlatformDataSource_CommonDataSource) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[9].Descriptor()
}

func (SelectionInput_PlatformDataSource_CommonDataSource) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[9]
}

func (x SelectionInput_PlatformDataSource_CommonDataSource) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use SelectionInput_PlatformDataSource_CommonDataSource.Descriptor instead.
func (SelectionInput_PlatformDataSource_CommonDataSource) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{9, 1, 0}
}

// The format for the date and time in the `DateTimePicker` widget.
// Determines whether users can input a date, a time, or both a date and time.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type DateTimePicker_DateTimePickerType int32

const (
	// Users input a date and time.
	DateTimePicker_DATE_AND_TIME DateTimePicker_DateTimePickerType = 0
	// Users input a date.
	DateTimePicker_DATE_ONLY DateTimePicker_DateTimePickerType = 1
	// Users input a time.
	DateTimePicker_TIME_ONLY DateTimePicker_DateTimePickerType = 2
)

// Enum value maps for DateTimePicker_DateTimePickerType.
var (
	DateTimePicker_DateTimePickerType_name = map[int32]string{
		0: "DATE_AND_TIME",
		1: "DATE_ONLY",
		2: "TIME_ONLY",
	}
	DateTimePicker_DateTimePickerType_value = map[string]int32{
		"DATE_AND_TIME": 0,
		"DATE_ONLY":     1,
		"TIME_ONLY":     2,
	}
)

func (x DateTimePicker_DateTimePickerType) Enum() *DateTimePicker_DateTimePickerType {
	p := new(DateTimePicker_DateTimePickerType)
	*p = x
	return p
}

func (x DateTimePicker_DateTimePickerType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (DateTimePicker_DateTimePickerType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[10].Descriptor()
}

func (DateTimePicker_DateTimePickerType) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[10]
}

func (x DateTimePicker_DateTimePickerType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use DateTimePicker_DateTimePickerType.Descriptor instead.
func (DateTimePicker_DateTimePickerType) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{10, 0}
}

// Optional. The
// [type](https://m3.material.io/components/all-buttons#9134ac95-678e-49ae-a50a-e71948011b05)
// of a button. If `color` field is set, the `type` is forced to `FILLED`.
//
// [Google Chat apps](https://developers.google.com/workspace/chat):
type Button_Type int32

const (
	// Don't use. Unspecified.
	Button_TYPE_UNSPECIFIED Button_Type = 0
	// Outlined buttons are medium-emphasis buttons. They usually contain
	// actions that are important, but aren’t the primary action in a Chat app
	// or an add-on.
	Button_OUTLINED Button_Type = 1
	// A filled button has a container with a solid color. It has the most
	// visual impact and is recommended for the important and primary action in
	// a Chat app or an add-on.
	Button_FILLED Button_Type = 2
	// A filled tonal button is an alternative middle ground between filled and
	// outlined buttons. They’re useful in contexts where a lower-priority
	// button requires slightly more emphasis than an outline button would give.
	Button_FILLED_TONAL Button_Type = 3
	// A button does not have an invisible container in its default state. It is
	// often used for the lowest priority actions, especially when presenting
	// multiple options.
	Button_BORDERLESS Button_Type = 4
)

// Enum value maps for Button_Type.
var (
	Button_Type_name = map[int32]string{
		0: "TYPE_UNSPECIFIED",
		1: "OUTLINED",
		2: "FILLED",
		3: "FILLED_TONAL",
		4: "BORDERLESS",
	}
	Button_Type_value = map[string]int32{
		"TYPE_UNSPECIFIED": 0,
		"OUTLINED":         1,
		"FILLED":           2,
		"FILLED_TONAL":     3,
		"BORDERLESS":       4,
	}
)

func (x Button_Type) Enum() *Button_Type {
	p := new(Button_Type)
	*p = x
	return p
}

func (x Button_Type) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Button_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[11].Descriptor()
}

func (Button_Type) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[11]
}

func (x Button_Type) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Button_Type.Descriptor instead.
func (Button_Type) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{12, 0}
}

// Represents the crop style applied to an image.
//
// [Google Workspace add-ons
// and Chat apps](https://developers.google.com/workspace/extend):
type ImageCropStyle_ImageCropType int32

const (
	// Don't use. Unspecified.
	ImageCropStyle_IMAGE_CROP_TYPE_UNSPECIFIED ImageCropStyle_ImageCropType = 0
	// Default value. Applies a square crop.
	ImageCropStyle_SQUARE ImageCropStyle_ImageCropType = 1
	// Applies a circular crop.
	ImageCropStyle_CIRCLE ImageCropStyle_ImageCropType = 2
	// Applies a rectangular crop with a custom aspect ratio. Set the custom
	// aspect ratio with `aspectRatio`.
	ImageCropStyle_RECTANGLE_CUSTOM ImageCropStyle_ImageCropType = 3
	// Applies a rectangular crop with a 4:3 aspect ratio.
	ImageCropStyle_RECTANGLE_4_3 ImageCropStyle_ImageCropType = 4
)

// Enum value maps for ImageCropStyle_ImageCropType.
var (
	ImageCropStyle_ImageCropType_name = map[int32]string{
		0: "IMAGE_CROP_TYPE_UNSPECIFIED",
		1: "SQUARE",
		2: "CIRCLE",
		3: "RECTANGLE_CUSTOM",
		4: "RECTANGLE_4_3",
	}
	ImageCropStyle_ImageCropType_value = map[string]int32{
		"IMAGE_CROP_TYPE_UNSPECIFIED": 0,
		"SQUARE":                      1,
		"CIRCLE":                      2,
		"RECTANGLE_CUSTOM":            3,
		"RECTANGLE_4_3":               4,
	}
)

func (x ImageCropStyle_ImageCropType) Enum() *ImageCropStyle_ImageCropType {
	p := new(ImageCropStyle_ImageCropType)
	*p = x
	return p
}

func (x ImageCropStyle_ImageCropType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ImageCropStyle_ImageCropType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[12].Descriptor()
}

func (ImageCropStyle_ImageCropType) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[12]
}

func (x ImageCropStyle_ImageCropType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use ImageCropStyle_ImageCropType.Descriptor instead.
func (ImageCropStyle_ImageCropType) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{15, 0}
}

// Represents the border types applied to widgets.
//
// [Google Workspace add-ons
// and Chat apps](https://developers.google.com/workspace/extend):
type BorderStyle_BorderType int32

const (
	// Don't use. Unspecified.
	BorderStyle_BORDER_TYPE_UNSPECIFIED BorderStyle_BorderType = 0
	// No border.
	BorderStyle_NO_BORDER BorderStyle_BorderType = 1
	// Default value. Outline.
	BorderStyle_STROKE BorderStyle_BorderType = 2
)

// Enum value maps for BorderStyle_BorderType.
var (
	BorderStyle_BorderType_name = map[int32]string{
		0: "BORDER_TYPE_UNSPECIFIED",
		1: "NO_BORDER",
		2: "STROKE",
	}
	BorderStyle_BorderType_value = map[string]int32{
		"BORDER_TYPE_UNSPECIFIED": 0,
		"NO_BORDER":               1,
		"STROKE":                  2,
	}
)

func (x BorderStyle_BorderType) Enum() *BorderStyle_BorderType {
	p := new(BorderStyle_BorderType)
	*p = x
	return p
}

func (x BorderStyle_BorderType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (BorderStyle_BorderType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[13].Descriptor()
}

func (BorderStyle_BorderType) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[13]
}

func (x BorderStyle_BorderType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use BorderStyle_BorderType.Descriptor instead.
func (BorderStyle_BorderType) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{16, 0}
}

// Represents the various layout options available for a grid item.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type Grid_GridItem_GridItemLayout int32

const (
	// Don't use. Unspecified.
	Grid_GridItem_GRID_ITEM_LAYOUT_UNSPECIFIED Grid_GridItem_GridItemLayout = 0
	// The title and subtitle are shown below the grid item's image.
	Grid_GridItem_TEXT_BELOW Grid_GridItem_GridItemLayout = 1
	// The title and subtitle are shown above the grid item's image.
	Grid_GridItem_TEXT_ABOVE Grid_GridItem_GridItemLayout = 2
)

// Enum value maps for Grid_GridItem_GridItemLayout.
var (
	Grid_GridItem_GridItemLayout_name = map[int32]string{
		0: "GRID_ITEM_LAYOUT_UNSPECIFIED",
		1: "TEXT_BELOW",
		2: "TEXT_ABOVE",
	}
	Grid_GridItem_GridItemLayout_value = map[string]int32{
		"GRID_ITEM_LAYOUT_UNSPECIFIED": 0,
		"TEXT_BELOW":                   1,
		"TEXT_ABOVE":                   2,
	}
)

func (x Grid_GridItem_GridItemLayout) Enum() *Grid_GridItem_GridItemLayout {
	p := new(Grid_GridItem_GridItemLayout)
	*p = x
	return p
}

func (x Grid_GridItem_GridItemLayout) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Grid_GridItem_GridItemLayout) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[14].Descriptor()
}

func (Grid_GridItem_GridItemLayout) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[14]
}

func (x Grid_GridItem_GridItemLayout) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Grid_GridItem_GridItemLayout.Descriptor instead.
func (Grid_GridItem_GridItemLayout) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{18, 0, 0}
}

// Specifies how a column fills the width of the card. The width of each
// column depends on both the `HorizontalSizeStyle` and the width of the
// widgets within the column.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend)
type Columns_Column_HorizontalSizeStyle int32

const (
	// Don't use. Unspecified.
	Columns_Column_HORIZONTAL_SIZE_STYLE_UNSPECIFIED Columns_Column_HorizontalSizeStyle = 0
	// Default value. Column fills the available space, up to 70% of the
	// card's width. If both columns are set to `FILL_AVAILABLE_SPACE`, each
	// column fills 50% of the space.
	Columns_Column_FILL_AVAILABLE_SPACE Columns_Column_HorizontalSizeStyle = 1
	// Column fills the least amount of space possible and no more than 30% of
	// the card's width.
	Columns_Column_FILL_MINIMUM_SPACE Columns_Column_HorizontalSizeStyle = 2
)

// Enum value maps for Columns_Column_HorizontalSizeStyle.
var (
	Columns_Column_HorizontalSizeStyle_name = map[int32]string{
		0: "HORIZONTAL_SIZE_STYLE_UNSPECIFIED",
		1: "FILL_AVAILABLE_SPACE",
		2: "FILL_MINIMUM_SPACE",
	}
	Columns_Column_HorizontalSizeStyle_value = map[string]int32{
		"HORIZONTAL_SIZE_STYLE_UNSPECIFIED": 0,
		"FILL_AVAILABLE_SPACE":              1,
		"FILL_MINIMUM_SPACE":                2,
	}
)

func (x Columns_Column_HorizontalSizeStyle) Enum() *Columns_Column_HorizontalSizeStyle {
	p := new(Columns_Column_HorizontalSizeStyle)
	*p = x
	return p
}

func (x Columns_Column_HorizontalSizeStyle) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Columns_Column_HorizontalSizeStyle) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[15].Descriptor()
}

func (Columns_Column_HorizontalSizeStyle) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[15]
}

func (x Columns_Column_HorizontalSizeStyle) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Columns_Column_HorizontalSizeStyle.Descriptor instead.
func (Columns_Column_HorizontalSizeStyle) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{19, 0, 0}
}

// Specifies whether widgets align to the top, bottom, or center of a
// column.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend)
type Columns_Column_VerticalAlignment int32

const (
	// Don't use. Unspecified.
	Columns_Column_VERTICAL_ALIGNMENT_UNSPECIFIED Columns_Column_VerticalAlignment = 0
	// Default value. Aligns widgets to the center of a column.
	Columns_Column_CENTER Columns_Column_VerticalAlignment = 1
	// Aligns widgets to the top of a column.
	Columns_Column_TOP Columns_Column_VerticalAlignment = 2
	// Aligns widgets to the bottom of a column.
	Columns_Column_BOTTOM Columns_Column_VerticalAlignment = 3
)

// Enum value maps for Columns_Column_VerticalAlignment.
var (
	Columns_Column_VerticalAlignment_name = map[int32]string{
		0: "VERTICAL_ALIGNMENT_UNSPECIFIED",
		1: "CENTER",
		2: "TOP",
		3: "BOTTOM",
	}
	Columns_Column_VerticalAlignment_value = map[string]int32{
		"VERTICAL_ALIGNMENT_UNSPECIFIED": 0,
		"CENTER":                         1,
		"TOP":                            2,
		"BOTTOM":                         3,
	}
)

func (x Columns_Column_VerticalAlignment) Enum() *Columns_Column_VerticalAlignment {
	p := new(Columns_Column_VerticalAlignment)
	*p = x
	return p
}

func (x Columns_Column_VerticalAlignment) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Columns_Column_VerticalAlignment) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[16].Descriptor()
}

func (Columns_Column_VerticalAlignment) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[16]
}

func (x Columns_Column_VerticalAlignment) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Columns_Column_VerticalAlignment.Descriptor instead.
func (Columns_Column_VerticalAlignment) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{19, 0, 1}
}

// When an `OnClick` action opens a link, then the client can either open it
// as a full-size window (if that's the frame used by the client), or an
// overlay (such as a pop-up). The implementation depends on the client
// platform capabilities, and the value selected might be ignored if the
// client doesn't support it. `FULL_SIZE` is supported by all clients.
//
// [Google Workspace
// add-ons](https://developers.google.com/workspace/add-ons):
type OpenLink_OpenAs int32

const (
	// The link opens as a full-size window (if that's the frame used by the
	// client).
	OpenLink_FULL_SIZE OpenLink_OpenAs = 0
	// The link opens as an overlay, such as a pop-up.
	OpenLink_OVERLAY OpenLink_OpenAs = 1
)

// Enum value maps for OpenLink_OpenAs.
var (
	OpenLink_OpenAs_name = map[int32]string{
		0: "FULL_SIZE",
		1: "OVERLAY",
	}
	OpenLink_OpenAs_value = map[string]int32{
		"FULL_SIZE": 0,
		"OVERLAY":   1,
	}
)

func (x OpenLink_OpenAs) Enum() *OpenLink_OpenAs {
	p := new(OpenLink_OpenAs)
	*p = x
	return p
}

func (x OpenLink_OpenAs) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (OpenLink_OpenAs) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[17].Descriptor()
}

func (OpenLink_OpenAs) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[17]
}

func (x OpenLink_OpenAs) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use OpenLink_OpenAs.Descriptor instead.
func (OpenLink_OpenAs) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{23, 0}
}

// What the client does when a link opened by an `OnClick` action is closed.
//
// Implementation depends on client platform capabilities. For example, a web
// browser might open a link in a pop-up window with an `OnClose` handler.
//
// If both `OnOpen` and `OnClose` handlers are set, and the client platform
// can't support both values, `OnClose` takes precedence.
//
// [Google Workspace
// add-ons](https://developers.google.com/workspace/add-ons):
type OpenLink_OnClose int32

const (
	// Default value. The card doesn't reload; nothing happens.
	OpenLink_NOTHING OpenLink_OnClose = 0
	// Reloads the card after the child window closes.
	//
	// If used in conjunction with
	// [`OpenAs.OVERLAY`](https://developers.google.com/workspace/add-ons/reference/rpc/google.apps.card.v1#openas),
	// the child window acts as a modal dialog and the parent card is blocked
	// until the child window closes.
	OpenLink_RELOAD OpenLink_OnClose = 1
)

// Enum value maps for OpenLink_OnClose.
var (
	OpenLink_OnClose_name = map[int32]string{
		0: "NOTHING",
		1: "RELOAD",
	}
	OpenLink_OnClose_value = map[string]int32{
		"NOTHING": 0,
		"RELOAD":  1,
	}
)

func (x OpenLink_OnClose) Enum() *OpenLink_OnClose {
	p := new(OpenLink_OnClose)
	*p = x
	return p
}

func (x OpenLink_OnClose) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (OpenLink_OnClose) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[18].Descriptor()
}

func (OpenLink_OnClose) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[18]
}

func (x OpenLink_OnClose) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use OpenLink_OnClose.Descriptor instead.
func (OpenLink_OnClose) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{23, 1}
}

// Specifies the loading indicator that the action displays while
// making the call to the action.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type Action_LoadIndicator int32

const (
	// Displays a spinner to indicate that content is loading.
	Action_SPINNER Action_LoadIndicator = 0
	// Nothing is displayed.
	Action_NONE Action_LoadIndicator = 1
)

// Enum value maps for Action_LoadIndicator.
var (
	Action_LoadIndicator_name = map[int32]string{
		0: "SPINNER",
		1: "NONE",
	}
	Action_LoadIndicator_value = map[string]int32{
		"SPINNER": 0,
		"NONE":    1,
	}
)

func (x Action_LoadIndicator) Enum() *Action_LoadIndicator {
	p := new(Action_LoadIndicator)
	*p = x
	return p
}

func (x Action_LoadIndicator) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Action_LoadIndicator) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[19].Descriptor()
}

func (Action_LoadIndicator) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[19]
}

func (x Action_LoadIndicator) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Action_LoadIndicator.Descriptor instead.
func (Action_LoadIndicator) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{24, 0}
}

// Optional. Required when opening a
// [dialog](https://developers.google.com/workspace/chat/dialogs).
//
// What to do in response to an interaction with a user, such as a user
// clicking a button in a card message.
//
// If unspecified, the app responds by executing an `action`—like opening a
// link or running a function—as normal.
//
// By specifying an `interaction`, the app can respond in special interactive
// ways. For example, by setting `interaction` to `OPEN_DIALOG`, the app can
// open a [dialog](https://developers.google.com/workspace/chat/dialogs).
//
// When specified, a loading indicator isn't shown. If specified for
// an add-on, the entire card is stripped and nothing is shown in the client.
//
// [Google Chat apps](https://developers.google.com/workspace/chat):
type Action_Interaction int32

const (
	// Default value. The `action` executes as normal.
	Action_INTERACTION_UNSPECIFIED Action_Interaction = 0
	// Opens a [dialog](https://developers.google.com/workspace/chat/dialogs), a
	// windowed, card-based interface that Chat apps use to interact with users.
	//
	// Only supported by Chat apps in response to button-clicks on card
	// messages. If specified for
	// an add-on, the entire card is stripped and nothing is shown in the
	// client.
	//
	// [Google Chat apps](https://developers.google.com/workspace/chat):
	Action_OPEN_DIALOG Action_Interaction = 1
)

// Enum value maps for Action_Interaction.
var (
	Action_Interaction_name = map[int32]string{
		0: "INTERACTION_UNSPECIFIED",
		1: "OPEN_DIALOG",
	}
	Action_Interaction_value = map[string]int32{
		"INTERACTION_UNSPECIFIED": 0,
		"OPEN_DIALOG":             1,
	}
)

func (x Action_Interaction) Enum() *Action_Interaction {
	p := new(Action_Interaction)
	*p = x
	return p
}

func (x Action_Interaction) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Action_Interaction) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[20].Descriptor()
}

func (Action_Interaction) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[20]
}

func (x Action_Interaction) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Action_Interaction.Descriptor instead.
func (Action_Interaction) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{24, 1}
}

// The type of the input widget.
type Validation_InputType int32

const (
	// Unspecified type. Do not use.
	Validation_INPUT_TYPE_UNSPECIFIED Validation_InputType = 0
	// Regular text that accepts all characters.
	Validation_TEXT Validation_InputType = 1
	// An integer value.
	Validation_INTEGER Validation_InputType = 2
	// A float value.
	Validation_FLOAT Validation_InputType = 3
	// An email address.
	Validation_EMAIL Validation_InputType = 4
	// A emoji selected from system-provided emoji picker.
	Validation_EMOJI_PICKER Validation_InputType = 5
)

// Enum value maps for Validation_InputType.
var (
	Validation_InputType_name = map[int32]string{
		0: "INPUT_TYPE_UNSPECIFIED",
		1: "TEXT",
		2: "INTEGER",
		3: "FLOAT",
		4: "EMAIL",
		5: "EMOJI_PICKER",
	}
	Validation_InputType_value = map[string]int32{
		"INPUT_TYPE_UNSPECIFIED": 0,
		"TEXT":                   1,
		"INTEGER":                2,
		"FLOAT":                  3,
		"EMAIL":                  4,
		"EMOJI_PICKER":           5,
	}
)

func (x Validation_InputType) Enum() *Validation_InputType {
	p := new(Validation_InputType)
	*p = x
	return p
}

func (x Validation_InputType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Validation_InputType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[21].Descriptor()
}

func (Validation_InputType) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[21]
}

func (x Validation_InputType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Validation_InputType.Descriptor instead.
func (Validation_InputType) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{25, 0}
}

// The chip list layout.
type ChipList_Layout int32

const (
	// Don't use. Unspecified.
	ChipList_LAYOUT_UNSPECIFIED ChipList_Layout = 0
	// Default value. The chip list wraps to the next line if there isn't enough
	// horizontal space.
	ChipList_WRAPPED ChipList_Layout = 1
	// The chips scroll horizontally if they don't fit in the available space.
	ChipList_HORIZONTAL_SCROLLABLE ChipList_Layout = 2
)

// Enum value maps for ChipList_Layout.
var (
	ChipList_Layout_name = map[int32]string{
		0: "LAYOUT_UNSPECIFIED",
		1: "WRAPPED",
		2: "HORIZONTAL_SCROLLABLE",
	}
	ChipList_Layout_value = map[string]int32{
		"LAYOUT_UNSPECIFIED":    0,
		"WRAPPED":               1,
		"HORIZONTAL_SCROLLABLE": 2,
	}
)

func (x ChipList_Layout) Enum() *ChipList_Layout {
	p := new(ChipList_Layout)
	*p = x
	return p
}

func (x ChipList_Layout) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ChipList_Layout) Descriptor() protoreflect.EnumDescriptor {
	return file_google_apps_card_v1_card_proto_enumTypes[22].Descriptor()
}

func (ChipList_Layout) Type() protoreflect.EnumType {
	return &file_google_apps_card_v1_card_proto_enumTypes[22]
}

func (x ChipList_Layout) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use ChipList_Layout.Descriptor instead.
func (ChipList_Layout) EnumDescriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{26, 0}
}

// A card interface displayed in a Google Chat message or Google Workspace
// add-on.
//
// Cards support a defined layout, interactive UI elements like buttons, and
// rich media like images. Use cards to present detailed information,
// gather information from users, and guide users to take a next step.
//
// [Card builder](https://addons.gsuite.google.com/uikit/builder)
//
// To learn how
// to build cards, see the following documentation:
//
//   - For Google Chat apps, see [Design the components of a card or
//     dialog](https://developers.google.com/workspace/chat/design-components-card-dialog).
//   - For Google Workspace add-ons, see [Card-based
//
// interfaces](https://developers.google.com/apps-script/add-ons/concepts/cards).
//
// Note: You can add up to 100 widgets per card. Any widgets beyond this
// limit are ignored. This limit applies to both card messages and dialogs
// in Google Chat apps, and to cards in Google Workspace add-ons.
//
// **Example: Card message for a Google Chat app**
//
// ![Example contact
// card](https://developers.google.com/workspace/chat/images/card_api_reference.png)
//
// To create the sample card message in Google Chat, use the following JSON:
//
// ```
//
//	{
//	  "cardsV2": [
//	    {
//	      "cardId": "unique-card-id",
//	      "card": {
//	        "header": {
//	           "title": "Sasha",
//	           "subtitle": "Software Engineer",
//	           "imageUrl":
//	           "https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png",
//	           "imageType": "CIRCLE",
//	           "imageAltText": "Avatar for Sasha"
//	         },
//	         "sections": [
//	           {
//	             "header": "Contact Info",
//	             "collapsible": true,
//	             "uncollapsibleWidgetsCount": 1,
//	             "widgets": [
//	               {
//	                 "decoratedText": {
//	                   "startIcon": {
//	                     "knownIcon": "EMAIL"
//	                   },
//	                   "text": "sasha@example.com"
//	                 }
//	               },
//	               {
//	                 "decoratedText": {
//	                   "startIcon": {
//	                     "knownIcon": "PERSON"
//	                   },
//	                   "text": "<font color=\"#80e27e\">Online</font>"
//	                 }
//	               },
//	               {
//	                 "decoratedText": {
//	                   "startIcon": {
//	                     "knownIcon": "PHONE"
//	                   },
//	                   "text": "+1 (555) 555-1234"
//	                 }
//	               },
//	               {
//	                 "buttonList": {
//	                   "buttons": [
//	                     {
//	                       "text": "Share",
//	                       "onClick": {
//	                        "openLink": {
//	                           "url": "https://example.com/share"
//	                         }
//	                       }
//	                     },
//	                     {
//	                       "text": "Edit",
//	                       "onClick": {
//	                         "action": {
//	                           "function": "goToView",
//	                           "parameters": [
//	                             {
//	                               "key": "viewType",
//	                               "value": "EDIT"
//	                             }
//	                           ]
//	                         }
//	                       }
//	                     }
//	                   ]
//	                 }
//	               }
//	             ]
//	           }
//	         ]
//	       }
//	    }
//	  ]
//	}
//
// ```
type Card struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The header of the card. A header usually contains a leading image and a
	// title. Headers always appear at the top of a card.
	Header *Card_CardHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
	// Contains a collection of widgets. Each section has its own, optional
	// header. Sections are visually separated by a line divider. For an example
	// in Google Chat apps, see [Define a section of a
	// card](https://developers.google.com/workspace/chat/design-components-card-dialog#define_a_section_of_a_card).
	Sections []*Card_Section `protobuf:"bytes,2,rep,name=sections,proto3" json:"sections,omitempty"`
	// The divider style between the header, sections and footer.
	SectionDividerStyle Card_DividerStyle `protobuf:"varint,9,opt,name=section_divider_style,json=sectionDividerStyle,proto3,enum=google.apps.card.v1.Card_DividerStyle" json:"section_divider_style,omitempty"`
	// The card's actions. Actions are added to the card's toolbar menu.
	//
	// [Google Workspace
	// add-ons](https://developers.google.com/workspace/add-ons):
	//
	// For example, the following JSON constructs a card action menu with
	// `Settings` and `Send Feedback` options:
	//
	// ```
	// "card_actions": [
	//
	//	{
	//	  "actionLabel": "Settings",
	//	  "onClick": {
	//	    "action": {
	//	      "functionName": "goToView",
	//	      "parameters": [
	//	        {
	//	          "key": "viewType",
	//	          "value": "SETTING"
	//	       }
	//	      ],
	//	      "loadIndicator": "LoadIndicator.SPINNER"
	//	    }
	//	  }
	//	},
	//	{
	//	  "actionLabel": "Send Feedback",
	//	  "onClick": {
	//	    "openLink": {
	//	      "url": "https://example.com/feedback"
	//	    }
	//	  }
	//	}
	//
	// ]
	// ```
	CardActions []*Card_CardAction `protobuf:"bytes,3,rep,name=card_actions,json=cardActions,proto3" json:"card_actions,omitempty"`
	// Name of the card. Used as a card identifier in card navigation.
	//
	// [Google Workspace
	// add-ons](https://developers.google.com/workspace/add-ons):
	Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
	// The fixed footer shown at the bottom of this card.
	//
	// Setting `fixedFooter` without specifying a `primaryButton` or a
	// `secondaryButton` causes an error. For Chat apps, you can use fixed footers
	// in
	// [dialogs](https://developers.google.com/workspace/chat/dialogs), but not
	// [card
	// messages](https://developers.google.com/workspace/chat/create-messages#create).
	//
	// [Google Workspace add-ons and Chat
	// apps](https://developers.google.com/workspace/extend):
	FixedFooter *Card_CardFixedFooter `protobuf:"bytes,5,opt,name=fixed_footer,json=fixedFooter,proto3" json:"fixed_footer,omitempty"`
	// In Google Workspace add-ons, sets the display properties of the
	// `peekCardHeader`.
	//
	// [Google Workspace
	// add-ons](https://developers.google.com/workspace/add-ons):
	DisplayStyle Card_DisplayStyle `protobuf:"varint,6,opt,name=display_style,json=displayStyle,proto3,enum=google.apps.card.v1.Card_DisplayStyle" json:"display_style,omitempty"`
	// When displaying contextual content, the peek card header acts as a
	// placeholder so that the user can navigate forward between the homepage
	// cards and the contextual cards.
	//
	// [Google Workspace
	// add-ons](https://developers.google.com/workspace/add-ons):
	PeekCardHeader *Card_CardHeader `protobuf:"bytes,7,opt,name=peek_card_header,json=peekCardHeader,proto3" json:"peek_card_header,omitempty"`
}

func (x *Card) Reset() {
	*x = Card{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Card) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Card) ProtoMessage() {}

func (x *Card) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 Card.ProtoReflect.Descriptor instead.
func (*Card) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{0}
}

func (x *Card) GetHeader() *Card_CardHeader {
	if x != nil {
		return x.Header
	}
	return nil
}

func (x *Card) GetSections() []*Card_Section {
	if x != nil {
		return x.Sections
	}
	return nil
}

func (x *Card) GetSectionDividerStyle() Card_DividerStyle {
	if x != nil {
		return x.SectionDividerStyle
	}
	return Card_DIVIDER_STYLE_UNSPECIFIED
}

func (x *Card) GetCardActions() []*Card_CardAction {
	if x != nil {
		return x.CardActions
	}
	return nil
}

func (x *Card) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Card) GetFixedFooter() *Card_CardFixedFooter {
	if x != nil {
		return x.FixedFooter
	}
	return nil
}

func (x *Card) GetDisplayStyle() Card_DisplayStyle {
	if x != nil {
		return x.DisplayStyle
	}
	return Card_DISPLAY_STYLE_UNSPECIFIED
}

func (x *Card) GetPeekCardHeader() *Card_CardHeader {
	if x != nil {
		return x.PeekCardHeader
	}
	return nil
}

// Each card is made up of widgets.
//
// A widget is a composite object that can represent one of text, images,
// buttons, and other object types.
type Widget struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A widget can only have one of the following items. You can use multiple
	// widget fields to display more items.
	//
	// Types that are assignable to Data:
	//
	//	*Widget_TextParagraph
	//	*Widget_Image
	//	*Widget_DecoratedText
	//	*Widget_ButtonList
	//	*Widget_TextInput
	//	*Widget_SelectionInput
	//	*Widget_DateTimePicker
	//	*Widget_Divider
	//	*Widget_Grid
	//	*Widget_Columns
	//	*Widget_Carousel
	//	*Widget_ChipList
	Data isWidget_Data `protobuf_oneof:"data"`
	// Specifies whether widgets align to the left, right, or center of a column.
	HorizontalAlignment Widget_HorizontalAlignment `protobuf:"varint,8,opt,name=horizontal_alignment,json=horizontalAlignment,proto3,enum=google.apps.card.v1.Widget_HorizontalAlignment" json:"horizontal_alignment,omitempty"`
}

func (x *Widget) Reset() {
	*x = Widget{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Widget) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Widget) ProtoMessage() {}

func (x *Widget) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 Widget.ProtoReflect.Descriptor instead.
func (*Widget) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{1}
}

func (m *Widget) GetData() isWidget_Data {
	if m != nil {
		return m.Data
	}
	return nil
}

func (x *Widget) GetTextParagraph() *TextParagraph {
	if x, ok := x.GetData().(*Widget_TextParagraph); ok {
		return x.TextParagraph
	}
	return nil
}

func (x *Widget) GetImage() *Image {
	if x, ok := x.GetData().(*Widget_Image); ok {
		return x.Image
	}
	return nil
}

func (x *Widget) GetDecoratedText() *DecoratedText {
	if x, ok := x.GetData().(*Widget_DecoratedText); ok {
		return x.DecoratedText
	}
	return nil
}

func (x *Widget) GetButtonList() *ButtonList {
	if x, ok := x.GetData().(*Widget_ButtonList); ok {
		return x.ButtonList
	}
	return nil
}

func (x *Widget) GetTextInput() *TextInput {
	if x, ok := x.GetData().(*Widget_TextInput); ok {
		return x.TextInput
	}
	return nil
}

func (x *Widget) GetSelectionInput() *SelectionInput {
	if x, ok := x.GetData().(*Widget_SelectionInput); ok {
		return x.SelectionInput
	}
	return nil
}

func (x *Widget) GetDateTimePicker() *DateTimePicker {
	if x, ok := x.GetData().(*Widget_DateTimePicker); ok {
		return x.DateTimePicker
	}
	return nil
}

func (x *Widget) GetDivider() *Divider {
	if x, ok := x.GetData().(*Widget_Divider); ok {
		return x.Divider
	}
	return nil
}

func (x *Widget) GetGrid() *Grid {
	if x, ok := x.GetData().(*Widget_Grid); ok {
		return x.Grid
	}
	return nil
}

func (x *Widget) GetColumns() *Columns {
	if x, ok := x.GetData().(*Widget_Columns); ok {
		return x.Columns
	}
	return nil
}

func (x *Widget) GetCarousel() *Carousel {
	if x, ok := x.GetData().(*Widget_Carousel); ok {
		return x.Carousel
	}
	return nil
}

func (x *Widget) GetChipList() *ChipList {
	if x, ok := x.GetData().(*Widget_ChipList); ok {
		return x.ChipList
	}
	return nil
}

func (x *Widget) GetHorizontalAlignment() Widget_HorizontalAlignment {
	if x != nil {
		return x.HorizontalAlignment
	}
	return Widget_HORIZONTAL_ALIGNMENT_UNSPECIFIED
}

type isWidget_Data interface {
	isWidget_Data()
}

type Widget_TextParagraph struct {
	// Displays a text paragraph. Supports simple HTML formatted text. For more
	// information about formatting text, see
	// [Formatting text in Google Chat
	// apps](https://developers.google.com/workspace/chat/format-messages#card-formatting)
	// and
	// [Formatting
	// text in Google Workspace
	// add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting).
	//
	// For example, the following JSON creates a bolded text:
	// ```
	//
	//	"textParagraph": {
	//	  "text": "  <b>bold text</b>"
	//	}
	//
	// ```
	TextParagraph *TextParagraph `protobuf:"bytes,1,opt,name=text_paragraph,json=textParagraph,proto3,oneof"`
}

type Widget_Image struct {
	// Displays an image.
	//
	// For example, the following JSON creates an image with alternative text:
	// ```
	//
	//	"image": {
	//	  "imageUrl":
	//	  "https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png",
	//	  "altText": "Chat app avatar"
	//	}
	//
	// ```
	Image *Image `protobuf:"bytes,2,opt,name=image,proto3,oneof"`
}

type Widget_DecoratedText struct {
	// Displays a decorated text item.
	//
	// For example, the following JSON creates a decorated text widget showing
	// email address:
	//
	// ```
	//
	//	"decoratedText": {
	//	  "icon": {
	//	    "knownIcon": "EMAIL"
	//	  },
	//	  "topLabel": "Email Address",
	//	  "text": "sasha@example.com",
	//	  "bottomLabel": "This is a new Email address!",
	//	  "switchControl": {
	//	    "name": "has_send_welcome_email_to_sasha",
	//	    "selected": false,
	//	    "controlType": "CHECKBOX"
	//	  }
	//	}
	//
	// ```
	DecoratedText *DecoratedText `protobuf:"bytes,3,opt,name=decorated_text,json=decoratedText,proto3,oneof"`
}

type Widget_ButtonList struct {
	// A list of buttons.
	//
	// For example, the following JSON creates two buttons. The first
	// is a blue text button and the second is an image button that opens a
	// link:
	// ```
	//
	//	"buttonList": {
	//	  "buttons": [
	//	    {
	//	      "text": "Edit",
	//	      "color": {
	//	        "red": 0,
	//	        "green": 0,
	//	        "blue": 1,
	//	      },
	//	      "disabled": true,
	//	    },
	//	    {
	//	      "icon": {
	//	        "knownIcon": "INVITE",
	//	        "altText": "check calendar"
	//	      },
	//	      "onClick": {
	//	        "openLink": {
	//	          "url": "https://example.com/calendar"
	//	        }
	//	      }
	//	    }
	//	  ]
	//	}
	//
	// ```
	ButtonList *ButtonList `protobuf:"bytes,4,opt,name=button_list,json=buttonList,proto3,oneof"`
}

type Widget_TextInput struct {
	// Displays a text box that users can type into.
	//
	// For example, the following JSON creates a text input for an email
	// address:
	//
	// ```
	//
	//	"textInput": {
	//	  "name": "mailing_address",
	//	  "label": "Mailing Address"
	//	}
	//
	// ```
	//
	// As another example, the following JSON creates a text input for a
	// programming language with static suggestions:
	// ```
	//
	//	"textInput": {
	//	  "name": "preferred_programing_language",
	//	  "label": "Preferred Language",
	//	  "initialSuggestions": {
	//	    "items": [
	//	      {
	//	        "text": "C++"
	//	      },
	//	      {
	//	        "text": "Java"
	//	      },
	//	      {
	//	        "text": "JavaScript"
	//	      },
	//	      {
	//	        "text": "Python"
	//	      }
	//	    ]
	//	  }
	//	}
	//
	// ```
	TextInput *TextInput `protobuf:"bytes,5,opt,name=text_input,json=textInput,proto3,oneof"`
}

type Widget_SelectionInput struct {
	// Displays a selection control that lets users select items. Selection
	// controls can be checkboxes, radio buttons, switches, or dropdown menus.
	//
	// For example, the following JSON creates a dropdown menu that lets users
	// choose a size:
	//
	// ```
	//
	//	"selectionInput": {
	//	  "name": "size",
	//	  "label": "Size"
	//	  "type": "DROPDOWN",
	//	  "items": [
	//	    {
	//	      "text": "S",
	//	      "value": "small",
	//	      "selected": false
	//	    },
	//	    {
	//	      "text": "M",
	//	      "value": "medium",
	//	      "selected": true
	//	    },
	//	    {
	//	      "text": "L",
	//	      "value": "large",
	//	      "selected": false
	//	    },
	//	    {
	//	      "text": "XL",
	//	      "value": "extra_large",
	//	      "selected": false
	//	    }
	//	  ]
	//	}
	//
	// ```
	SelectionInput *SelectionInput `protobuf:"bytes,6,opt,name=selection_input,json=selectionInput,proto3,oneof"`
}

type Widget_DateTimePicker struct {
	// Displays a widget that lets users input a date, time, or date and time.
	//
	// For example, the following JSON creates a date time picker to schedule an
	// appointment:
	//
	// ```
	//
	//	"dateTimePicker": {
	//	  "name": "appointment_time",
	//	  "label": "Book your appointment at:",
	//	  "type": "DATE_AND_TIME",
	//	  "valueMsEpoch": 796435200000
	//	}
	//
	// ```
	DateTimePicker *DateTimePicker `protobuf:"bytes,7,opt,name=date_time_picker,json=dateTimePicker,proto3,oneof"`
}

type Widget_Divider struct {
	// Displays a horizontal line divider between widgets.
	//
	// For example, the following JSON creates a divider:
	// ```
	// "divider": {
	// }
	// ```
	Divider *Divider `protobuf:"bytes,9,opt,name=divider,proto3,oneof"`
}

type Widget_Grid struct {
	// Displays a grid with a collection of items.
	//
	// A grid supports any number of columns and items. The number of rows is
	// determined by the upper bounds of the number items divided by the number
	// of columns. A grid with 10 items and 2 columns has 5 rows. A grid with 11
	// items and 2 columns has 6 rows.
	//
	// [Google Workspace add-ons and
	// Chat apps](https://developers.google.com/workspace/extend):
	//
	// For example, the following JSON creates a 2 column grid with a single
	// item:
	//
	// ```
	//
	//	"grid": {
	//	  "title": "A fine collection of items",
	//	  "columnCount": 2,
	//	  "borderStyle": {
	//	    "type": "STROKE",
	//	    "cornerRadius": 4
	//	  },
	//	  "items": [
	//	    {
	//	      "image": {
	//	        "imageUri": "https://www.example.com/image.png",
	//	        "cropStyle": {
	//	          "type": "SQUARE"
	//	        },
	//	        "borderStyle": {
	//	          "type": "STROKE"
	//	        }
	//	      },
	//	      "title": "An item",
	//	      "textAlignment": "CENTER"
	//	    }
	//	  ],
	//	  "onClick": {
	//	    "openLink": {
	//	      "url": "https://www.example.com"
	//	    }
	//	  }
	//	}
	//
	// ```
	Grid *Grid `protobuf:"bytes,10,opt,name=grid,proto3,oneof"`
}

type Widget_Columns struct {
	// Displays up to 2 columns.
	//
	// To include more than 2 columns, or to use rows, use the `Grid` widget.
	//
	// For example, the following JSON creates 2 columns that each contain
	// text paragraphs:
	//
	// ```
	//
	//	"columns": {
	//	  "columnItems": [
	//	    {
	//	      "horizontalSizeStyle": "FILL_AVAILABLE_SPACE",
	//	      "horizontalAlignment": "CENTER",
	//	      "verticalAlignment": "CENTER",
	//	      "widgets": [
	//	        {
	//	          "textParagraph": {
	//	            "text": "First column text paragraph"
	//	          }
	//	        }
	//	      ]
	//	    },
	//	    {
	//	      "horizontalSizeStyle": "FILL_AVAILABLE_SPACE",
	//	      "horizontalAlignment": "CENTER",
	//	      "verticalAlignment": "CENTER",
	//	      "widgets": [
	//	        {
	//	          "textParagraph": {
	//	            "text": "Second column text paragraph"
	//	          }
	//	        }
	//	      ]
	//	    }
	//	  ]
	//	}
	//
	// ```
	Columns *Columns `protobuf:"bytes,11,opt,name=columns,proto3,oneof"`
}

type Widget_Carousel struct {
	// A carousel contains a collection of nested widgets.
	// For example, this is a JSON representation of a carousel that contains
	// two text paragraphs.
	//
	// ```
	//
	//	{
	//	  "widgets": [
	//	    {
	//	      "textParagraph": {
	//	        "text": "First text paragraph in the carousel."
	//	      }
	//	    },
	//	    {
	//	      "textParagraph": {
	//	        "text": "Second text paragraph in the carousel."
	//	      }
	//	    }
	//	  ]
	//	}
	//
	// ```
	Carousel *Carousel `protobuf:"bytes,13,opt,name=carousel,proto3,oneof"`
}

type Widget_ChipList struct {
	// A list of chips.
	//
	// For example, the following JSON creates two chips. The first
	// is a text chip and the second is an icon chip that opens a
	// link:
	// ```
	//
	//	"chipList": {
	//	  "chips": [
	//	    {
	//	      "text": "Edit",
	//	      "disabled": true,
	//	    },
	//	    {
	//	      "icon": {
	//	        "knownIcon": "INVITE",
	//	        "altText": "check calendar"
	//	      },
	//	      "onClick": {
	//	        "openLink": {
	//	          "url": "https://example.com/calendar"
	//	        }
	//	      }
	//	    }
	//	  ]
	//	}
	//
	// ```
	ChipList *ChipList `protobuf:"bytes,14,opt,name=chip_list,json=chipList,proto3,oneof"`
}

func (*Widget_TextParagraph) isWidget_Data() {}

func (*Widget_Image) isWidget_Data() {}

func (*Widget_DecoratedText) isWidget_Data() {}

func (*Widget_ButtonList) isWidget_Data() {}

func (*Widget_TextInput) isWidget_Data() {}

func (*Widget_SelectionInput) isWidget_Data() {}

func (*Widget_DateTimePicker) isWidget_Data() {}

func (*Widget_Divider) isWidget_Data() {}

func (*Widget_Grid) isWidget_Data() {}

func (*Widget_Columns) isWidget_Data() {}

func (*Widget_Carousel) isWidget_Data() {}

func (*Widget_ChipList) isWidget_Data() {}

// A paragraph of text that supports formatting. For an example in
// Google Chat apps, see [Add a paragraph of formatted
// text](https://developers.google.com/workspace/chat/add-text-image-card-dialog#add_a_paragraph_of_formatted_text).
// For more information
// about formatting text, see
// [Formatting text in Google Chat
// apps](https://developers.google.com/workspace/chat/format-messages#card-formatting)
// and
// [Formatting
// text in Google Workspace
// add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting).
//
// [Google Workspace add-ons and
// Chat apps](https://developers.google.com/workspace/extend):
type TextParagraph struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The text that's shown in the widget.
	Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"`
	// The maximum number of lines of text that are displayed in the widget. If
	// the text exceeds the specified maximum number of lines, the excess
	// content is concealed behind a **show more** button. If the text is equal or
	// shorter than the specified maximum number of lines, a **show more** button
	// isn't displayed.
	//
	// The default value is 0, in which case
	// all context is displayed. Negative values are ignored.
	MaxLines int32 `protobuf:"varint,2,opt,name=max_lines,json=maxLines,proto3" json:"max_lines,omitempty"`
	// The syntax of the text. If not set, the text is rendered as HTML.
	//
	// [Google Chat apps](https://developers.google.com/workspace/chat):
	TextSyntax TextParagraph_TextSyntax `protobuf:"varint,4,opt,name=text_syntax,json=textSyntax,proto3,enum=google.apps.card.v1.TextParagraph_TextSyntax" json:"text_syntax,omitempty"`
}

func (x *TextParagraph) Reset() {
	*x = TextParagraph{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TextParagraph) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TextParagraph) ProtoMessage() {}

func (x *TextParagraph) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 TextParagraph.ProtoReflect.Descriptor instead.
func (*TextParagraph) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{2}
}

func (x *TextParagraph) GetText() string {
	if x != nil {
		return x.Text
	}
	return ""
}

func (x *TextParagraph) GetMaxLines() int32 {
	if x != nil {
		return x.MaxLines
	}
	return 0
}

func (x *TextParagraph) GetTextSyntax() TextParagraph_TextSyntax {
	if x != nil {
		return x.TextSyntax
	}
	return TextParagraph_TEXT_SYNTAX_UNSPECIFIED
}

// An image that is specified by a URL and can have an `onClick` action. For an
// example, see [Add an
// image](https://developers.google.com/workspace/chat/add-text-image-card-dialog#add_an_image).
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type Image struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The HTTPS URL that hosts the image.
	//
	// For example:
	//
	// ```
	// https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png
	// ```
	ImageUrl string `protobuf:"bytes,1,opt,name=image_url,json=imageUrl,proto3" json:"image_url,omitempty"`
	// When a user clicks the image, the click triggers this action.
	OnClick *OnClick `protobuf:"bytes,2,opt,name=on_click,json=onClick,proto3" json:"on_click,omitempty"`
	// The alternative text of this image that's used for accessibility.
	AltText string `protobuf:"bytes,3,opt,name=alt_text,json=altText,proto3" json:"alt_text,omitempty"`
}

func (x *Image) Reset() {
	*x = Image{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Image) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Image) ProtoMessage() {}

func (x *Image) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 Image.ProtoReflect.Descriptor instead.
func (*Image) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{3}
}

func (x *Image) GetImageUrl() string {
	if x != nil {
		return x.ImageUrl
	}
	return ""
}

func (x *Image) GetOnClick() *OnClick {
	if x != nil {
		return x.OnClick
	}
	return nil
}

func (x *Image) GetAltText() string {
	if x != nil {
		return x.AltText
	}
	return ""
}

// Displays a divider between widgets as a horizontal line. For an example in
// Google Chat apps, see
// [Add a horizontal divider between
// widgets](https://developers.google.com/workspace/chat/format-structure-card-dialog#add_a_horizontal_divider_between_widgets).
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
//
// For example, the following JSON creates a divider:
//
// ```
// "divider": {}
// ```
type Divider struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *Divider) Reset() {
	*x = Divider{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Divider) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Divider) ProtoMessage() {}

func (x *Divider) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 Divider.ProtoReflect.Descriptor instead.
func (*Divider) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{4}
}

// A widget that displays text with optional decorations such as a label above
// or below the text, an icon in front of the text, a selection widget, or a
// button after the text. For an example in
// Google Chat apps, see [Display text with decorative
// text](https://developers.google.com/workspace/chat/add-text-image-card-dialog#display_text_with_decorative_elements).
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type DecoratedText struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Deprecated in favor of `startIcon`.
	//
	// Deprecated: Do not use.
	Icon *Icon `protobuf:"bytes,1,opt,name=icon,proto3" json:"icon,omitempty"`
	// The icon displayed in front of the text.
	StartIcon *Icon `protobuf:"bytes,12,opt,name=start_icon,json=startIcon,proto3" json:"start_icon,omitempty"`
	// Optional. Vertical alignment of the start icon. If not set, the icon
	// will be vertically centered.
	//
	// [Google Chat apps](https://developers.google.com/workspace/chat):
	StartIconVerticalAlignment Widget_VerticalAlignment `protobuf:"varint,13,opt,name=start_icon_vertical_alignment,json=startIconVerticalAlignment,proto3,enum=google.apps.card.v1.Widget_VerticalAlignment" json:"start_icon_vertical_alignment,omitempty"`
	// The text that appears above `text`. Always truncates.
	TopLabel string `protobuf:"bytes,3,opt,name=top_label,json=topLabel,proto3" json:"top_label,omitempty"`
	// `TextParagraph` equivalent of `top_label`. Always truncates. Allows for
	// more complex formatting than `top_label`.
	//
	// [Google Chat apps](https://developers.google.com/workspace/chat):
	TopLabelText *TextParagraph `protobuf:"bytes,17,opt,name=top_label_text,json=topLabelText,proto3" json:"top_label_text,omitempty"`
	// Required. The primary text.
	//
	// Supports simple formatting. For more information
	// about formatting text, see
	// [Formatting text in Google Chat
	// apps](https://developers.google.com/workspace/chat/format-messages#card-formatting)
	// and
	// [Formatting
	// text in Google Workspace
	// add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting).
	Text string `protobuf:"bytes,4,opt,name=text,proto3" json:"text,omitempty"`
	// `TextParagraph` equivalent of `text`. Allows for more complex formatting
	// than `text`.
	//
	// [Google Chat apps](https://developers.google.com/workspace/chat):
	ContentText *TextParagraph `protobuf:"bytes,18,opt,name=content_text,json=contentText,proto3" json:"content_text,omitempty"`
	// The wrap text setting. If `true`, the text wraps and displays on
	// multiple lines. Otherwise, the text is truncated.
	//
	// Only applies to `text`, not `topLabel` and `bottomLabel`.
	WrapText bool `protobuf:"varint,5,opt,name=wrap_text,json=wrapText,proto3" json:"wrap_text,omitempty"`
	// The text that appears below `text`. Always wraps.
	BottomLabel string `protobuf:"bytes,6,opt,name=bottom_label,json=bottomLabel,proto3" json:"bottom_label,omitempty"`
	// `TextParagraph` equivalent of `bottom_label`. Always wraps. Allows for
	// more complex formatting than `bottom_label`.
	//
	// [Google Chat apps](https://developers.google.com/workspace/chat):
	BottomLabelText *TextParagraph `protobuf:"bytes,19,opt,name=bottom_label_text,json=bottomLabelText,proto3" json:"bottom_label_text,omitempty"`
	// This action is triggered when users click `topLabel` or `bottomLabel`.
	OnClick *OnClick `protobuf:"bytes,7,opt,name=on_click,json=onClick,proto3" json:"on_click,omitempty"`
	// A button, switch, checkbox, or image that appears to the right-hand side
	// of text in the `decoratedText` widget.
	//
	// Types that are assignable to Control:
	//
	//	*DecoratedText_Button
	//	*DecoratedText_SwitchControl_
	//	*DecoratedText_EndIcon
	Control isDecoratedText_Control `protobuf_oneof:"control"`
}

func (x *DecoratedText) Reset() {
	*x = DecoratedText{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DecoratedText) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DecoratedText) ProtoMessage() {}

func (x *DecoratedText) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 DecoratedText.ProtoReflect.Descriptor instead.
func (*DecoratedText) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{5}
}

// Deprecated: Do not use.
func (x *DecoratedText) GetIcon() *Icon {
	if x != nil {
		return x.Icon
	}
	return nil
}

func (x *DecoratedText) GetStartIcon() *Icon {
	if x != nil {
		return x.StartIcon
	}
	return nil
}

func (x *DecoratedText) GetStartIconVerticalAlignment() Widget_VerticalAlignment {
	if x != nil {
		return x.StartIconVerticalAlignment
	}
	return Widget_VERTICAL_ALIGNMENT_UNSPECIFIED
}

func (x *DecoratedText) GetTopLabel() string {
	if x != nil {
		return x.TopLabel
	}
	return ""
}

func (x *DecoratedText) GetTopLabelText() *TextParagraph {
	if x != nil {
		return x.TopLabelText
	}
	return nil
}

func (x *DecoratedText) GetText() string {
	if x != nil {
		return x.Text
	}
	return ""
}

func (x *DecoratedText) GetContentText() *TextParagraph {
	if x != nil {
		return x.ContentText
	}
	return nil
}

func (x *DecoratedText) GetWrapText() bool {
	if x != nil {
		return x.WrapText
	}
	return false
}

func (x *DecoratedText) GetBottomLabel() string {
	if x != nil {
		return x.BottomLabel
	}
	return ""
}

func (x *DecoratedText) GetBottomLabelText() *TextParagraph {
	if x != nil {
		return x.BottomLabelText
	}
	return nil
}

func (x *DecoratedText) GetOnClick() *OnClick {
	if x != nil {
		return x.OnClick
	}
	return nil
}

func (m *DecoratedText) GetControl() isDecoratedText_Control {
	if m != nil {
		return m.Control
	}
	return nil
}

func (x *DecoratedText) GetButton() *Button {
	if x, ok := x.GetControl().(*DecoratedText_Button); ok {
		return x.Button
	}
	return nil
}

func (x *DecoratedText) GetSwitchControl() *DecoratedText_SwitchControl {
	if x, ok := x.GetControl().(*DecoratedText_SwitchControl_); ok {
		return x.SwitchControl
	}
	return nil
}

func (x *DecoratedText) GetEndIcon() *Icon {
	if x, ok := x.GetControl().(*DecoratedText_EndIcon); ok {
		return x.EndIcon
	}
	return nil
}

type isDecoratedText_Control interface {
	isDecoratedText_Control()
}

type DecoratedText_Button struct {
	// A button that a user can click to trigger an action.
	Button *Button `protobuf:"bytes,8,opt,name=button,proto3,oneof"`
}

type DecoratedText_SwitchControl_ struct {
	// A switch widget that a user can click to change its state and trigger an
	// action.
	SwitchControl *DecoratedText_SwitchControl `protobuf:"bytes,9,opt,name=switch_control,json=switchControl,proto3,oneof"`
}

type DecoratedText_EndIcon struct {
	// An icon displayed after the text.
	//
	// Supports
	// [built-in](https://developers.google.com/workspace/chat/format-messages#builtinicons)
	// and
	// [custom](https://developers.google.com/workspace/chat/format-messages#customicons)
	// icons.
	EndIcon *Icon `protobuf:"bytes,11,opt,name=end_icon,json=endIcon,proto3,oneof"`
}

func (*DecoratedText_Button) isDecoratedText_Control() {}

func (*DecoratedText_SwitchControl_) isDecoratedText_Control() {}

func (*DecoratedText_EndIcon) isDecoratedText_Control() {}

// A field in which users can enter text. Supports suggestions and on-change
// actions.
// Supports form submission validation. When `Action.all_widgets_are_required`
// is set to `true` or this widget is specified in `Action.required_widgets`,
// the submission action is blocked unless a value is entered. For an example in
// Google Chat apps, see [Add a field in which a user can enter
// text](https://developers.google.com/workspace/chat/design-interactive-card-dialog#add_a_field_in_which_a_user_can_enter_text).
//
// Chat apps receive and can process the value of entered text during form input
// events. For details about working with form inputs, see [Receive form
// data](https://developers.google.com/workspace/chat/read-form-data).
//
// When you need to collect undefined or abstract data from users,
// use a text input. To collect defined or enumerated data from users, use the
// [SelectionInput][google.apps.card.v1.SelectionInput] widget.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type TextInput struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The name by which the text input is identified in a form input event.
	//
	// For details about working with form inputs, see [Receive form
	// data](https://developers.google.com/workspace/chat/read-form-data).
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// The text that appears above the text input field in the user interface.
	//
	// Specify text that helps the user enter the information your app needs.
	// For example, if you are asking someone's name, but specifically need their
	// surname, write `surname` instead of `name`.
	//
	// Required if `hintText` is unspecified. Otherwise, optional.
	Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`
	// Text that appears below the text input field meant to assist users by
	// prompting them to enter a certain value. This text is always visible.
	//
	// Required if `label` is unspecified. Otherwise, optional.
	HintText string `protobuf:"bytes,3,opt,name=hint_text,json=hintText,proto3" json:"hint_text,omitempty"`
	// The value entered by a user, returned as part of a form input event.
	//
	// For details about working with form inputs, see [Receive form
	// data](https://developers.google.com/workspace/chat/read-form-data).
	Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"`
	// How a text input field appears in the user interface.
	// For example, whether the field is single or multi-line.
	Type TextInput_Type `protobuf:"varint,5,opt,name=type,proto3,enum=google.apps.card.v1.TextInput_Type" json:"type,omitempty"`
	// What to do when a change occurs in the text input field. For example, a
	// user adding to the field or deleting text.
	//
	// Examples of actions to take include running a custom function or opening
	// a [dialog](https://developers.google.com/workspace/chat/dialogs)
	// in Google Chat.
	OnChangeAction *Action `protobuf:"bytes,6,opt,name=on_change_action,json=onChangeAction,proto3" json:"on_change_action,omitempty"`
	// Suggested values that users can enter. These values appear when users click
	// inside the text input field. As users type, the suggested values
	// dynamically filter to match what the users have typed.
	//
	// For example, a text input field for programming language might suggest
	// Java, JavaScript, Python, and C++. When users start typing `Jav`, the list
	// of suggestions filters to show just `Java` and `JavaScript`.
	//
	// Suggested values help guide users to enter values that your app can make
	// sense of. When referring to JavaScript, some users might enter `javascript`
	// and others `java script`. Suggesting `JavaScript` can standardize how users
	// interact with your app.
	//
	// When specified, `TextInput.type` is always `SINGLE_LINE`, even if it's set
	// to `MULTIPLE_LINE`.
	//
	// [Google Workspace
	// add-ons and Chat apps](https://developers.google.com/workspace/extend):
	InitialSuggestions *Suggestions `protobuf:"bytes,7,opt,name=initial_suggestions,json=initialSuggestions,proto3" json:"initial_suggestions,omitempty"`
	// Optional. Specify what action to take when the text input field provides
	// suggestions to users who interact with it.
	//
	// If unspecified, the suggestions are set by `initialSuggestions` and
	// are processed by the client.
	//
	// If specified, the app takes the action specified here, such as running
	// a custom function.
	//
	// [Google Workspace
	// add-ons](https://developers.google.com/workspace/add-ons):
	AutoCompleteAction *Action `protobuf:"bytes,8,opt,name=auto_complete_action,json=autoCompleteAction,proto3" json:"auto_complete_action,omitempty"`
	// Specify the input format validation necessary for this text field.
	//
	// [Google Workspace add-ons and Chat
	// apps](https://developers.google.com/workspace/extend):
	Validation *Validation `protobuf:"bytes,11,opt,name=validation,proto3" json:"validation,omitempty"`
	// Text that appears in the text input field when the field is empty.
	// Use this text to prompt users to enter a value. For example, `Enter a
	// number from 0 to 100`.
	//
	// [Google Chat apps](https://developers.google.com/workspace/chat):
	PlaceholderText string `protobuf:"bytes,12,opt,name=placeholder_text,json=placeholderText,proto3" json:"placeholder_text,omitempty"`
}

func (x *TextInput) Reset() {
	*x = TextInput{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TextInput) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TextInput) ProtoMessage() {}

func (x *TextInput) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 TextInput.ProtoReflect.Descriptor instead.
func (*TextInput) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{6}
}

func (x *TextInput) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *TextInput) GetLabel() string {
	if x != nil {
		return x.Label
	}
	return ""
}

func (x *TextInput) GetHintText() string {
	if x != nil {
		return x.HintText
	}
	return ""
}

func (x *TextInput) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

func (x *TextInput) GetType() TextInput_Type {
	if x != nil {
		return x.Type
	}
	return TextInput_SINGLE_LINE
}

func (x *TextInput) GetOnChangeAction() *Action {
	if x != nil {
		return x.OnChangeAction
	}
	return nil
}

func (x *TextInput) GetInitialSuggestions() *Suggestions {
	if x != nil {
		return x.InitialSuggestions
	}
	return nil
}

func (x *TextInput) GetAutoCompleteAction() *Action {
	if x != nil {
		return x.AutoCompleteAction
	}
	return nil
}

func (x *TextInput) GetValidation() *Validation {
	if x != nil {
		return x.Validation
	}
	return nil
}

func (x *TextInput) GetPlaceholderText() string {
	if x != nil {
		return x.PlaceholderText
	}
	return ""
}

// Suggested values that users can enter. These values appear when users click
// inside the text input field. As users type, the suggested values
// dynamically filter to match what the users have typed.
//
// For example, a text input field for programming language might suggest
// Java, JavaScript, Python, and C++. When users start typing `Jav`, the list
// of suggestions filters to show `Java` and `JavaScript`.
//
// Suggested values help guide users to enter values that your app can make
// sense of. When referring to JavaScript, some users might enter `javascript`
// and others `java script`. Suggesting `JavaScript` can standardize how users
// interact with your app.
//
// When specified, `TextInput.type` is always `SINGLE_LINE`, even if it's set
// to `MULTIPLE_LINE`.
//
// [Google Workspace
// add-ons and Chat apps](https://developers.google.com/workspace/extend):
type Suggestions struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A list of suggestions used for autocomplete recommendations in text input
	// fields.
	Items []*Suggestions_SuggestionItem `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
}

func (x *Suggestions) Reset() {
	*x = Suggestions{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Suggestions) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Suggestions) ProtoMessage() {}

func (x *Suggestions) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 Suggestions.ProtoReflect.Descriptor instead.
func (*Suggestions) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{7}
}

func (x *Suggestions) GetItems() []*Suggestions_SuggestionItem {
	if x != nil {
		return x.Items
	}
	return nil
}

// A list of buttons layed out horizontally. For an example in
// Google Chat apps, see
// [Add a
// button](https://developers.google.com/workspace/chat/design-interactive-card-dialog#add_a_button).
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type ButtonList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// An array of buttons.
	Buttons []*Button `protobuf:"bytes,1,rep,name=buttons,proto3" json:"buttons,omitempty"`
}

func (x *ButtonList) Reset() {
	*x = ButtonList{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ButtonList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ButtonList) ProtoMessage() {}

func (x *ButtonList) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 ButtonList.ProtoReflect.Descriptor instead.
func (*ButtonList) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{8}
}

func (x *ButtonList) GetButtons() []*Button {
	if x != nil {
		return x.Buttons
	}
	return nil
}

// A widget that creates one or more UI items that users can select.
// Supports form submission validation for `dropdown` and `multiselect` menus
// only. When `Action.all_widgets_are_required` is set to `true` or this widget
// is specified in `Action.required_widgets`, the submission action is blocked
// unless a value is selected. For example, a dropdown menu or checkboxes. You
// can use this widget to collect data that can be predicted or enumerated. For
// an example in Google Chat apps, see [Add selectable UI
// elements](/workspace/chat/design-interactive-card-dialog#add_selectable_ui_elements).
//
// Chat apps can process the value of items that users select or input. For
// details about working with form inputs, see [Receive form
// data](https://developers.google.com/workspace/chat/read-form-data).
//
// To collect undefined or abstract data from users, use
// the [TextInput][google.apps.card.v1.TextInput] widget.
//
// [Google Workspace add-ons
// and Chat apps](https://developers.google.com/workspace/extend):
type SelectionInput struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The name that identifies the selection input in a form input
	// event.
	//
	// For details about working with form inputs, see [Receive form
	// data](https://developers.google.com/workspace/chat/read-form-data).
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// The text that appears above the selection input field in the user
	// interface.
	//
	// Specify text that helps the user enter the information your app needs.
	// For example, if users are selecting the urgency of a work ticket from a
	// drop-down menu, the label might be "Urgency" or "Select urgency".
	Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`
	// The type of items that are displayed to users in a `SelectionInput` widget.
	// Selection types support different types of interactions. For example, users
	// can select one or more checkboxes, but they can only select one value from
	// a dropdown menu.
	Type SelectionInput_SelectionType `protobuf:"varint,3,opt,name=type,proto3,enum=google.apps.card.v1.SelectionInput_SelectionType" json:"type,omitempty"`
	// An array of selectable items. For example, an array of radio buttons or
	// checkboxes. Supports up to 100 items.
	Items []*SelectionInput_SelectionItem `protobuf:"bytes,4,rep,name=items,proto3" json:"items,omitempty"`
	// If specified, the form is submitted when the selection changes. If not
	// specified, you must specify a separate button that submits the form.
	//
	// For details about working with form inputs, see [Receive form
	// data](https://developers.google.com/workspace/chat/read-form-data).
	OnChangeAction *Action `protobuf:"bytes,5,opt,name=on_change_action,json=onChangeAction,proto3" json:"on_change_action,omitempty"`
	// For multiselect menus, the maximum number of items that a user can select.
	// Minimum value is 1 item. If unspecified, defaults to 3 items.
	MultiSelectMaxSelectedItems *int32 `protobuf:"varint,6,opt,name=multi_select_max_selected_items,json=multiSelectMaxSelectedItems,proto3,oneof" json:"multi_select_max_selected_items,omitempty"`
	// For multiselect menus, the number of text characters that a user inputs
	// before the menu returns suggested selection items.
	//
	// If unset, the multiselect menu uses the following default values:
	//
	//   - If the menu uses a static array of `SelectionInput` items, defaults to
	//     0 characters and immediately populates items from the array.
	//   - If the menu uses a dynamic data source (`multi_select_data_source`),
	//     defaults to 3 characters before querying the data source to return
	//     suggested items.
	MultiSelectMinQueryLength int32 `protobuf:"varint,7,opt,name=multi_select_min_query_length,json=multiSelectMinQueryLength,proto3" json:"multi_select_min_query_length,omitempty"`
	// For a multiselect menu, a data source that dynamically populates
	// selection items.
	//
	// [Google Chat apps](https://developers.google.com/workspace/chat):
	//
	// Types that are assignable to MultiSelectDataSource:
	//
	//	*SelectionInput_ExternalDataSource
	//	*SelectionInput_PlatformDataSource_
	MultiSelectDataSource isSelectionInput_MultiSelectDataSource `protobuf_oneof:"multi_select_data_source"`
}

func (x *SelectionInput) Reset() {
	*x = SelectionInput{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SelectionInput) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SelectionInput) ProtoMessage() {}

func (x *SelectionInput) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 SelectionInput.ProtoReflect.Descriptor instead.
func (*SelectionInput) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{9}
}

func (x *SelectionInput) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *SelectionInput) GetLabel() string {
	if x != nil {
		return x.Label
	}
	return ""
}

func (x *SelectionInput) GetType() SelectionInput_SelectionType {
	if x != nil {
		return x.Type
	}
	return SelectionInput_CHECK_BOX
}

func (x *SelectionInput) GetItems() []*SelectionInput_SelectionItem {
	if x != nil {
		return x.Items
	}
	return nil
}

func (x *SelectionInput) GetOnChangeAction() *Action {
	if x != nil {
		return x.OnChangeAction
	}
	return nil
}

func (x *SelectionInput) GetMultiSelectMaxSelectedItems() int32 {
	if x != nil && x.MultiSelectMaxSelectedItems != nil {
		return *x.MultiSelectMaxSelectedItems
	}
	return 0
}

func (x *SelectionInput) GetMultiSelectMinQueryLength() int32 {
	if x != nil {
		return x.MultiSelectMinQueryLength
	}
	return 0
}

func (m *SelectionInput) GetMultiSelectDataSource() isSelectionInput_MultiSelectDataSource {
	if m != nil {
		return m.MultiSelectDataSource
	}
	return nil
}

func (x *SelectionInput) GetExternalDataSource() *Action {
	if x, ok := x.GetMultiSelectDataSource().(*SelectionInput_ExternalDataSource); ok {
		return x.ExternalDataSource
	}
	return nil
}

func (x *SelectionInput) GetPlatformDataSource() *SelectionInput_PlatformDataSource {
	if x, ok := x.GetMultiSelectDataSource().(*SelectionInput_PlatformDataSource_); ok {
		return x.PlatformDataSource
	}
	return nil
}

type isSelectionInput_MultiSelectDataSource interface {
	isSelectionInput_MultiSelectDataSource()
}

type SelectionInput_ExternalDataSource struct {
	// An external data source, such as a relational database.
	ExternalDataSource *Action `protobuf:"bytes,8,opt,name=external_data_source,json=externalDataSource,proto3,oneof"`
}

type SelectionInput_PlatformDataSource_ struct {
	// A data source from Google Workspace.
	PlatformDataSource *SelectionInput_PlatformDataSource `protobuf:"bytes,9,opt,name=platform_data_source,json=platformDataSource,proto3,oneof"`
}

func (*SelectionInput_ExternalDataSource) isSelectionInput_MultiSelectDataSource() {}

func (*SelectionInput_PlatformDataSource_) isSelectionInput_MultiSelectDataSource() {}

// Lets users input a date, a time, or both a date and a time.
// Supports form submission validation. When `Action.all_widgets_are_required`
// is set to `true` or this widget is specified in `Action.required_widgets`,
// the submission action is blocked unless a value is selected. For an example
// in Google Chat apps, see [Let a user pick a date and
// time](https://developers.google.com/workspace/chat/design-interactive-card-dialog#let_a_user_pick_a_date_and_time).
//
// Users can input text or use the picker to select dates and times. If users
// input an invalid date or time, the picker shows an error that prompts users
// to input the information correctly.
//
// [Google Workspace
// add-ons and Chat apps](https://developers.google.com/workspace/extend):
type DateTimePicker struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The name by which the `DateTimePicker` is identified in a form input event.
	//
	// For details about working with form inputs, see [Receive form
	// data](https://developers.google.com/workspace/chat/read-form-data).
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// The text that prompts users to input a date, a time, or a date and time.
	// For example, if users are scheduling an appointment, use a label such as
	// `Appointment date` or `Appointment date and time`.
	Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`
	// Whether the widget supports inputting a date, a time, or the date and time.
	Type DateTimePicker_DateTimePickerType `protobuf:"varint,3,opt,name=type,proto3,enum=google.apps.card.v1.DateTimePicker_DateTimePickerType" json:"type,omitempty"`
	// Optional. The default value displayed in the widget, in milliseconds since
	// [Unix epoch time](https://en.wikipedia.org/wiki/Unix_time).
	//
	// Specify the value based on the type of picker (`DateTimePickerType`):
	//
	//   - `DATE_AND_TIME`: a calendar date and time in UTC. For example, to
	//     represent January 1, 2023 at 12:00 PM UTC, use `1672574400000`.
	//   - `DATE_ONLY`: a calendar date at 00:00:00 UTC. For example, to represent
	//     January 1, 2023, use `1672531200000`.
	//   - `TIME_ONLY`: a time in UTC. For example, to represent 12:00 PM, use
	//     `43200000` (or `12 * 60 * 60 * 1000`).
	ValueMsEpoch *int64 `protobuf:"varint,4,opt,name=value_ms_epoch,json=valueMsEpoch,proto3,oneof" json:"value_ms_epoch,omitempty"`
	// The number representing the time zone offset from UTC, in minutes.
	// If set, the `value_ms_epoch` is displayed in the specified time zone.
	// If unset, the value defaults to the user's time zone setting.
	TimezoneOffsetDate int32 `protobuf:"varint,5,opt,name=timezone_offset_date,json=timezoneOffsetDate,proto3" json:"timezone_offset_date,omitempty"`
	// Triggered when the user clicks **Save** or **Clear** from the
	// `DateTimePicker` interface.
	OnChangeAction *Action `protobuf:"bytes,6,opt,name=on_change_action,json=onChangeAction,proto3" json:"on_change_action,omitempty"`
}

func (x *DateTimePicker) Reset() {
	*x = DateTimePicker{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DateTimePicker) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DateTimePicker) ProtoMessage() {}

func (x *DateTimePicker) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 DateTimePicker.ProtoReflect.Descriptor instead.
func (*DateTimePicker) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{10}
}

func (x *DateTimePicker) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *DateTimePicker) GetLabel() string {
	if x != nil {
		return x.Label
	}
	return ""
}

func (x *DateTimePicker) GetType() DateTimePicker_DateTimePickerType {
	if x != nil {
		return x.Type
	}
	return DateTimePicker_DATE_AND_TIME
}

func (x *DateTimePicker) GetValueMsEpoch() int64 {
	if x != nil && x.ValueMsEpoch != nil {
		return *x.ValueMsEpoch
	}
	return 0
}

func (x *DateTimePicker) GetTimezoneOffsetDate() int32 {
	if x != nil {
		return x.TimezoneOffsetDate
	}
	return 0
}

func (x *DateTimePicker) GetOnChangeAction() *Action {
	if x != nil {
		return x.OnChangeAction
	}
	return nil
}

// A widget that presents a pop-up menu with one or more actions that users can
// invoke. For example, showing non-primary actions in a card. You can use this
// widget when actions don't fit in the available space. To use, specify this
// widget in the `OnClick` action of widgets that support it. For example, in a
// `Button`.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type OverflowMenu struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The list of menu options.
	Items []*OverflowMenu_OverflowMenuItem `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
}

func (x *OverflowMenu) Reset() {
	*x = OverflowMenu{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *OverflowMenu) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*OverflowMenu) ProtoMessage() {}

func (x *OverflowMenu) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 OverflowMenu.ProtoReflect.Descriptor instead.
func (*OverflowMenu) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{11}
}

func (x *OverflowMenu) GetItems() []*OverflowMenu_OverflowMenuItem {
	if x != nil {
		return x.Items
	}
	return nil
}

// A text, icon, or text and icon button that users can click. For an example in
// Google Chat apps, see
// [Add a
// button](https://developers.google.com/workspace/chat/design-interactive-card-dialog#add_a_button).
//
// To make an image a clickable button, specify an
// [`Image`][google.apps.card.v1.Image] (not an
// [`ImageComponent`][google.apps.card.v1.ImageComponent]) and set an
// `onClick` action.
//
// [Google Workspace
// add-ons and Chat apps](https://developers.google.com/workspace/extend):
type Button struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The text displayed inside the button.
	Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"`
	// An icon displayed inside the button. If both `icon` and `text` are set,
	// then the icon appears before the text.
	Icon *Icon `protobuf:"bytes,2,opt,name=icon,proto3" json:"icon,omitempty"`
	// Optional. The color of the button. If set, the button `type` is set to
	// `FILLED` and the color of `text` and `icon` fields are set to a
	// contrasting color for readability. For example, if the button color is
	// set to blue, any text or icons in the button are set to white.
	//
	// To set the button color, specify a value for the `red`, `green`, and `blue`
	// fields.
	// The value must be a float number between 0 and 1 based on the RGB color
	// value, where `0` (0/255) represents the absence of color  and `1` (255/255)
	// represents the maximum intensity of the color.
	//
	// For example, the following sets the color to red at its maximum intensity:
	//
	// ```
	//
	//	"color": {
	//	   "red": 1,
	//	   "green": 0,
	//	   "blue": 0,
	//	}
	//
	// ```
	//
	// The `alpha` field is unavailable for button color. If specified, this field
	// is ignored.
	Color *color.Color `protobuf:"bytes,3,opt,name=color,proto3" json:"color,omitempty"`
	// Required. The action to perform when a user clicks the button, such as
	// opening a hyperlink or running a custom function.
	OnClick *OnClick `protobuf:"bytes,4,opt,name=on_click,json=onClick,proto3" json:"on_click,omitempty"`
	// If `true`, the button is displayed in an inactive state and doesn't respond
	// to user actions.
	Disabled bool `protobuf:"varint,5,opt,name=disabled,proto3" json:"disabled,omitempty"`
	// The alternative text that's used for accessibility.
	//
	// Set descriptive text that lets users know what the button does. For
	// example, if a button opens a hyperlink, you might write: "Opens a new
	// browser tab and navigates to the Google Chat developer documentation at
	// https://developers.google.com/workspace/chat".
	AltText string `protobuf:"bytes,6,opt,name=alt_text,json=altText,proto3" json:"alt_text,omitempty"`
	// Optional. The type of a button. If unset, button type defaults to
	// `OUTLINED`. If the `color` field is set, the button type is forced to
	// `FILLED` and any value set for this field is ignored.
	Type Button_Type `protobuf:"varint,7,opt,name=type,proto3,enum=google.apps.card.v1.Button_Type" json:"type,omitempty"`
}

func (x *Button) Reset() {
	*x = Button{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Button) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Button) ProtoMessage() {}

func (x *Button) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 Button.ProtoReflect.Descriptor instead.
func (*Button) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{12}
}

func (x *Button) GetText() string {
	if x != nil {
		return x.Text
	}
	return ""
}

func (x *Button) GetIcon() *Icon {
	if x != nil {
		return x.Icon
	}
	return nil
}

func (x *Button) GetColor() *color.Color {
	if x != nil {
		return x.Color
	}
	return nil
}

func (x *Button) GetOnClick() *OnClick {
	if x != nil {
		return x.OnClick
	}
	return nil
}

func (x *Button) GetDisabled() bool {
	if x != nil {
		return x.Disabled
	}
	return false
}

func (x *Button) GetAltText() string {
	if x != nil {
		return x.AltText
	}
	return ""
}

func (x *Button) GetType() Button_Type {
	if x != nil {
		return x.Type
	}
	return Button_TYPE_UNSPECIFIED
}

// An icon displayed in a widget on a card. For an example in Google Chat apps,
// see [Add an
// icon](https://developers.google.com/workspace/chat/add-text-image-card-dialog#add_an_icon).
//
// Supports
// [built-in](https://developers.google.com/workspace/chat/format-messages#builtinicons)
// and
// [custom](https://developers.google.com/workspace/chat/format-messages#customicons)
// icons.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type Icon struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The icon displayed in the widget on the card.
	//
	// Types that are assignable to Icons:
	//
	//	*Icon_KnownIcon
	//	*Icon_IconUrl
	//	*Icon_MaterialIcon
	Icons isIcon_Icons `protobuf_oneof:"icons"`
	// Optional. A description of the icon used for accessibility.
	// If unspecified, the default value `Button` is provided. As a best practice,
	// you should set a helpful description for what the icon displays, and if
	// applicable, what it does. For example, `A user's account portrait`, or
	// `Opens a new browser tab and navigates to the Google Chat developer
	// documentation at https://developers.google.com/workspace/chat`.
	//
	// If the icon is set in a [`Button`][google.apps.card.v1.Button], the
	// `altText` appears as helper text when the user hovers over the button.
	// However, if the button also sets `text`, the icon's `altText` is ignored.
	AltText string `protobuf:"bytes,3,opt,name=alt_text,json=altText,proto3" json:"alt_text,omitempty"`
	// The crop style applied to the image. In some cases, applying a
	// `CIRCLE` crop causes the image to be drawn larger than a built-in
	// icon.
	ImageType Widget_ImageType `protobuf:"varint,4,opt,name=image_type,json=imageType,proto3,enum=google.apps.card.v1.Widget_ImageType" json:"image_type,omitempty"`
}

func (x *Icon) Reset() {
	*x = Icon{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Icon) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Icon) ProtoMessage() {}

func (x *Icon) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 Icon.ProtoReflect.Descriptor instead.
func (*Icon) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{13}
}

func (m *Icon) GetIcons() isIcon_Icons {
	if m != nil {
		return m.Icons
	}
	return nil
}

func (x *Icon) GetKnownIcon() string {
	if x, ok := x.GetIcons().(*Icon_KnownIcon); ok {
		return x.KnownIcon
	}
	return ""
}

func (x *Icon) GetIconUrl() string {
	if x, ok := x.GetIcons().(*Icon_IconUrl); ok {
		return x.IconUrl
	}
	return ""
}

func (x *Icon) GetMaterialIcon() *MaterialIcon {
	if x, ok := x.GetIcons().(*Icon_MaterialIcon); ok {
		return x.MaterialIcon
	}
	return nil
}

func (x *Icon) GetAltText() string {
	if x != nil {
		return x.AltText
	}
	return ""
}

func (x *Icon) GetImageType() Widget_ImageType {
	if x != nil {
		return x.ImageType
	}
	return Widget_SQUARE
}

type isIcon_Icons interface {
	isIcon_Icons()
}

type Icon_KnownIcon struct {
	// Display one of the built-in icons provided by Google Workspace.
	//
	// For example, to display an airplane icon, specify `AIRPLANE`.
	// For a bus, specify `BUS`.
	//
	// For a full list of supported icons, see [built-in
	// icons](https://developers.google.com/workspace/chat/format-messages#builtinicons).
	KnownIcon string `protobuf:"bytes,1,opt,name=known_icon,json=knownIcon,proto3,oneof"`
}

type Icon_IconUrl struct {
	// Display a custom icon hosted at an HTTPS URL.
	//
	// For example:
	//
	// ```
	// "iconUrl":
	// "https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png"
	// ```
	//
	// Supported file types include `.png` and `.jpg`.
	IconUrl string `protobuf:"bytes,2,opt,name=icon_url,json=iconUrl,proto3,oneof"`
}

type Icon_MaterialIcon struct {
	// Display one of the [Google Material
	// Icons](https://fonts.google.com/icons).
	//
	// For example, to display a [checkbox
	// icon](https://fonts.google.com/icons?selected=Material%20Symbols%20Outlined%3Acheck_box%3AFILL%400%3Bwght%40400%3BGRAD%400%3Bopsz%4048),
	// use
	// ```
	//
	//	"material_icon": {
	//	  "name": "check_box"
	//	}
	//
	// ```
	//
	// [Google Chat apps](https://developers.google.com/workspace/chat):
	MaterialIcon *MaterialIcon `protobuf:"bytes,5,opt,name=material_icon,json=materialIcon,proto3,oneof"`
}

func (*Icon_KnownIcon) isIcon_Icons() {}

func (*Icon_IconUrl) isIcon_Icons() {}

func (*Icon_MaterialIcon) isIcon_Icons() {}

// A [Google Material Icon](https://fonts.google.com/icons), which includes over
// 2500+ options.
//
// For example, to display a [checkbox
// icon](https://fonts.google.com/icons?selected=Material%20Symbols%20Outlined%3Acheck_box%3AFILL%400%3Bwght%40400%3BGRAD%400%3Bopsz%4048)
// with customized weight and grade, write the following:
//
// ```
//
//	{
//	  "name": "check_box",
//	  "fill": true,
//	  "weight": 300,
//	  "grade": -25
//	}
//
// ```
//
// [Google Chat apps](https://developers.google.com/workspace/chat):
type MaterialIcon struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The icon name defined in the [Google Material
	// Icon](https://fonts.google.com/icons), for example, `check_box`. Any
	// invalid names are abandoned and replaced with empty string and
	// results in the icon failing to render.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Whether the icon renders as filled. Default value is false.
	//
	// To preview different icon settings, go to
	// [Google Font Icons](https://fonts.google.com/icons) and adjust the
	// settings under **Customize**.
	Fill bool `protobuf:"varint,2,opt,name=fill,proto3" json:"fill,omitempty"`
	// The stroke weight of the icon. Choose from {100, 200, 300, 400,
	// 500, 600, 700}. If absent, default value is 400. If any other value is
	// specified, the default value is used.
	//
	// To preview different icon settings, go to
	// [Google Font Icons](https://fonts.google.com/icons) and adjust the
	// settings under **Customize**.
	Weight int32 `protobuf:"varint,3,opt,name=weight,proto3" json:"weight,omitempty"`
	// Weight and grade affect a symbol’s thickness. Adjustments to grade are more
	// granular than adjustments to weight and have a small impact on the size of
	// the symbol. Choose from {-25, 0, 200}. If absent, default value is 0. If
	// any other value is specified, the default value is used.
	//
	// To preview different icon settings, go to
	// [Google Font Icons](https://fonts.google.com/icons) and adjust the
	// settings under **Customize**.
	Grade int32 `protobuf:"varint,4,opt,name=grade,proto3" json:"grade,omitempty"`
}

func (x *MaterialIcon) Reset() {
	*x = MaterialIcon{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MaterialIcon) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MaterialIcon) ProtoMessage() {}

func (x *MaterialIcon) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 MaterialIcon.ProtoReflect.Descriptor instead.
func (*MaterialIcon) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{14}
}

func (x *MaterialIcon) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *MaterialIcon) GetFill() bool {
	if x != nil {
		return x.Fill
	}
	return false
}

func (x *MaterialIcon) GetWeight() int32 {
	if x != nil {
		return x.Weight
	}
	return 0
}

func (x *MaterialIcon) GetGrade() int32 {
	if x != nil {
		return x.Grade
	}
	return 0
}

// Represents the crop style applied to an image.
//
// [Google Workspace add-ons and
// Chat apps](https://developers.google.com/workspace/extend):
//
// For example, here's how to apply a 16:9 aspect ratio:
//
// ```
//
//	cropStyle {
//	 "type": "RECTANGLE_CUSTOM",
//	 "aspectRatio": 16/9
//	}
//
// ```
type ImageCropStyle struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The crop type.
	Type ImageCropStyle_ImageCropType `protobuf:"varint,1,opt,name=type,proto3,enum=google.apps.card.v1.ImageCropStyle_ImageCropType" json:"type,omitempty"`
	// The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
	//
	// For example, here's how to apply a 16:9 aspect ratio:
	//
	// ```
	//
	//	cropStyle {
	//	 "type": "RECTANGLE_CUSTOM",
	//	 "aspectRatio": 16/9
	//	}
	//
	// ```
	AspectRatio float64 `protobuf:"fixed64,2,opt,name=aspect_ratio,json=aspectRatio,proto3" json:"aspect_ratio,omitempty"`
}

func (x *ImageCropStyle) Reset() {
	*x = ImageCropStyle{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ImageCropStyle) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ImageCropStyle) ProtoMessage() {}

func (x *ImageCropStyle) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 ImageCropStyle.ProtoReflect.Descriptor instead.
func (*ImageCropStyle) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{15}
}

func (x *ImageCropStyle) GetType() ImageCropStyle_ImageCropType {
	if x != nil {
		return x.Type
	}
	return ImageCropStyle_IMAGE_CROP_TYPE_UNSPECIFIED
}

func (x *ImageCropStyle) GetAspectRatio() float64 {
	if x != nil {
		return x.AspectRatio
	}
	return 0
}

// The style options for the border of a card or widget, including the border
// type and color.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type BorderStyle struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The border type.
	Type BorderStyle_BorderType `protobuf:"varint,1,opt,name=type,proto3,enum=google.apps.card.v1.BorderStyle_BorderType" json:"type,omitempty"`
	// The colors to use when the type is `BORDER_TYPE_STROKE`.
	//
	// To set the stroke color, specify a value for the `red`, `green`, and `blue`
	// fields.
	// The value must be a float number between 0 and 1 based on the RGB color
	// value, where `0` (0/255) represents the absence of color  and `1` (255/255)
	// represents the maximum intensity of the color.
	//
	// For example, the following sets the color to red at its maximum intensity:
	//
	// ```
	//
	//	"color": {
	//	   "red": 1,
	//	   "green": 0,
	//	   "blue": 0,
	//	}
	//
	// ```
	//
	// The `alpha` field is unavailable for stroke color. If specified, this field
	// is ignored.
	StrokeColor *color.Color `protobuf:"bytes,2,opt,name=stroke_color,json=strokeColor,proto3" json:"stroke_color,omitempty"`
	// The corner radius for the border.
	CornerRadius int32 `protobuf:"varint,3,opt,name=corner_radius,json=cornerRadius,proto3" json:"corner_radius,omitempty"`
}

func (x *BorderStyle) Reset() {
	*x = BorderStyle{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BorderStyle) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BorderStyle) ProtoMessage() {}

func (x *BorderStyle) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 BorderStyle.ProtoReflect.Descriptor instead.
func (*BorderStyle) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{16}
}

func (x *BorderStyle) GetType() BorderStyle_BorderType {
	if x != nil {
		return x.Type
	}
	return BorderStyle_BORDER_TYPE_UNSPECIFIED
}

func (x *BorderStyle) GetStrokeColor() *color.Color {
	if x != nil {
		return x.StrokeColor
	}
	return nil
}

func (x *BorderStyle) GetCornerRadius() int32 {
	if x != nil {
		return x.CornerRadius
	}
	return 0
}

// Represents an image.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type ImageComponent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The image URL.
	ImageUri string `protobuf:"bytes,1,opt,name=image_uri,json=imageUri,proto3" json:"image_uri,omitempty"`
	// The accessibility label for the image.
	AltText string `protobuf:"bytes,2,opt,name=alt_text,json=altText,proto3" json:"alt_text,omitempty"`
	// The crop style to apply to the image.
	CropStyle *ImageCropStyle `protobuf:"bytes,3,opt,name=crop_style,json=cropStyle,proto3" json:"crop_style,omitempty"`
	// The border style to apply to the image.
	BorderStyle *BorderStyle `protobuf:"bytes,4,opt,name=border_style,json=borderStyle,proto3" json:"border_style,omitempty"`
}

func (x *ImageComponent) Reset() {
	*x = ImageComponent{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ImageComponent) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ImageComponent) ProtoMessage() {}

func (x *ImageComponent) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 ImageComponent.ProtoReflect.Descriptor instead.
func (*ImageComponent) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{17}
}

func (x *ImageComponent) GetImageUri() string {
	if x != nil {
		return x.ImageUri
	}
	return ""
}

func (x *ImageComponent) GetAltText() string {
	if x != nil {
		return x.AltText
	}
	return ""
}

func (x *ImageComponent) GetCropStyle() *ImageCropStyle {
	if x != nil {
		return x.CropStyle
	}
	return nil
}

func (x *ImageComponent) GetBorderStyle() *BorderStyle {
	if x != nil {
		return x.BorderStyle
	}
	return nil
}

// Displays a grid with a collection of items. Items can only include text or
// images. For responsive columns, or to include more than text or images, use
// [`Columns`][google.apps.card.v1.Columns]. For an example in Google Chat apps,
// see [Display a Grid with a collection of
// items](https://developers.google.com/workspace/chat/format-structure-card-dialog#display_a_grid_with_a_collection_of_items).
//
// A grid supports any number of columns and items. The number of rows is
// determined by items divided by columns. A grid with
// 10 items and 2 columns has 5 rows. A grid with 11 items and 2 columns
// has 6 rows.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
//
// For example, the following JSON creates a 2 column grid with a single
// item:
//
// ```
//
//	"grid": {
//	  "title": "A fine collection of items",
//	  "columnCount": 2,
//	  "borderStyle": {
//	    "type": "STROKE",
//	    "cornerRadius": 4
//	  },
//	  "items": [
//	    {
//	      "image": {
//	        "imageUri": "https://www.example.com/image.png",
//	        "cropStyle": {
//	          "type": "SQUARE"
//	        },
//	        "borderStyle": {
//	          "type": "STROKE"
//	        }
//	      },
//	      "title": "An item",
//	      "textAlignment": "CENTER"
//	    }
//	  ],
//	  "onClick": {
//	    "openLink": {
//	      "url": "https://www.example.com"
//	    }
//	  }
//	}
//
// ```
type Grid struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The text that displays in the grid header.
	Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	// The items to display in the grid.
	Items []*Grid_GridItem `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"`
	// The border style to apply to each grid item.
	BorderStyle *BorderStyle `protobuf:"bytes,3,opt,name=border_style,json=borderStyle,proto3" json:"border_style,omitempty"`
	// The number of columns to display in the grid. A default value
	// is used if this field isn't specified, and that default value is
	// different depending on where the grid is shown (dialog versus companion).
	ColumnCount int32 `protobuf:"varint,4,opt,name=column_count,json=columnCount,proto3" json:"column_count,omitempty"`
	// This callback is reused by each individual grid item, but with the
	// item's identifier and index in the items list added to the callback's
	// parameters.
	OnClick *OnClick `protobuf:"bytes,5,opt,name=on_click,json=onClick,proto3" json:"on_click,omitempty"`
}

func (x *Grid) Reset() {
	*x = Grid{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Grid) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Grid) ProtoMessage() {}

func (x *Grid) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 Grid.ProtoReflect.Descriptor instead.
func (*Grid) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{18}
}

func (x *Grid) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *Grid) GetItems() []*Grid_GridItem {
	if x != nil {
		return x.Items
	}
	return nil
}

func (x *Grid) GetBorderStyle() *BorderStyle {
	if x != nil {
		return x.BorderStyle
	}
	return nil
}

func (x *Grid) GetColumnCount() int32 {
	if x != nil {
		return x.ColumnCount
	}
	return 0
}

func (x *Grid) GetOnClick() *OnClick {
	if x != nil {
		return x.OnClick
	}
	return nil
}

// The `Columns` widget displays up to 2 columns in a card or dialog. You can
// add widgets to each column; the widgets appear in the order that they are
// specified. For an example in Google Chat apps, see
// [Display cards and dialogs in
// columns](https://developers.google.com/workspace/chat/format-structure-card-dialog#display_cards_and_dialogs_in_columns).
//
// The height of each column is determined by the taller column. For example, if
// the first column is taller than the second column, both columns have the
// height of the first column. Because each column can contain a different
// number of widgets, you can't define rows or align widgets between the
// columns.
//
// Columns are displayed side-by-side. You can customize the width of each
// column using the `HorizontalSizeStyle` field. If the user's
// screen width is too narrow, the second column wraps below the first:
//
//   - On web, the second column wraps if the screen width is less than or equal
//     to 480 pixels.
//   - On iOS devices, the second column wraps if the screen width is
//     less than or equal to 300 pt.
//   - On Android devices, the second column wraps if the screen width is
//     less than or equal to 320 dp.
//
// To include more than two columns, or to use rows, use the
// [`Grid`][google.apps.card.v1.Grid] widget.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
// The add-on UIs that support columns include:
//
// * The dialog displayed when users open the add-on from an email draft.
// * The dialog displayed when users open the add-on from the
// **Add attachment** menu in a Google Calendar event.
type Columns struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// An array of columns. You can include up to 2 columns in a card or dialog.
	ColumnItems []*Columns_Column `protobuf:"bytes,2,rep,name=column_items,json=columnItems,proto3" json:"column_items,omitempty"`
}

func (x *Columns) Reset() {
	*x = Columns{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Columns) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Columns) ProtoMessage() {}

func (x *Columns) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 Columns.ProtoReflect.Descriptor instead.
func (*Columns) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{19}
}

func (x *Columns) GetColumnItems() []*Columns_Column {
	if x != nil {
		return x.ColumnItems
	}
	return nil
}

// A carousel, also known as a slider, rotates and displays a list of widgets in
// a slideshow format, with buttons navigating to the previous or next widget.
//
// For example, this is a JSON representation of a carousel that contains three
// text paragraph widgets.
//
// ```
//
//	{
//	  "carouselCards": [
//	    {
//	      "widgets": [
//	        {
//	          "textParagraph": {
//	            "text": "First text paragraph in carousel",
//	          }
//	        }
//	      ]
//	    },
//	    {
//	      "widgets": [
//	        {
//	          "textParagraph": {
//	            "text": "Second text paragraph in carousel",
//	          }
//	        }
//	      ]
//	    },
//	    {
//	      "widgets": [
//	        {
//	          "textParagraph": {
//	            "text": "Third text paragraph in carousel",
//	          }
//	        }
//	      ]
//	    }
//	  ]
//	}
//
// ```
//
// [Google Chat apps](https://developers.google.com/workspace/chat):
type Carousel struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A list of cards included in the carousel.
	CarouselCards []*Carousel_CarouselCard `protobuf:"bytes,4,rep,name=carousel_cards,json=carouselCards,proto3" json:"carousel_cards,omitempty"`
}

func (x *Carousel) Reset() {
	*x = Carousel{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Carousel) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Carousel) ProtoMessage() {}

func (x *Carousel) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 Carousel.ProtoReflect.Descriptor instead.
func (*Carousel) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{20}
}

func (x *Carousel) GetCarouselCards() []*Carousel_CarouselCard {
	if x != nil {
		return x.CarouselCards
	}
	return nil
}

// Represent an expand and collapse control.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type CollapseControl struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The horizontal alignment of the expand and collapse button.
	HorizontalAlignment Widget_HorizontalAlignment `protobuf:"varint,1,opt,name=horizontal_alignment,json=horizontalAlignment,proto3,enum=google.apps.card.v1.Widget_HorizontalAlignment" json:"horizontal_alignment,omitempty"`
	// Optional. Define a customizable button to expand the section.
	// Both expand_button and collapse_button field must be set. Only one
	// field set will not take into effect.
	// If this field isn't set, the default button is used.
	ExpandButton *Button `protobuf:"bytes,2,opt,name=expand_button,json=expandButton,proto3" json:"expand_button,omitempty"`
	// Optional. Define a customizable button to collapse the section.
	// Both expand_button and collapse_button field must be set. Only one
	// field set will not take into effect.
	// If this field isn't set, the default button is used.
	CollapseButton *Button `protobuf:"bytes,3,opt,name=collapse_button,json=collapseButton,proto3" json:"collapse_button,omitempty"`
}

func (x *CollapseControl) Reset() {
	*x = CollapseControl{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CollapseControl) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CollapseControl) ProtoMessage() {}

func (x *CollapseControl) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[21]
	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 CollapseControl.ProtoReflect.Descriptor instead.
func (*CollapseControl) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{21}
}

func (x *CollapseControl) GetHorizontalAlignment() Widget_HorizontalAlignment {
	if x != nil {
		return x.HorizontalAlignment
	}
	return Widget_HORIZONTAL_ALIGNMENT_UNSPECIFIED
}

func (x *CollapseControl) GetExpandButton() *Button {
	if x != nil {
		return x.ExpandButton
	}
	return nil
}

func (x *CollapseControl) GetCollapseButton() *Button {
	if x != nil {
		return x.CollapseButton
	}
	return nil
}

// Represents how to respond when users click an interactive element on
// a card, such as a button.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type OnClick struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Data:
	//
	//	*OnClick_Action
	//	*OnClick_OpenLink
	//	*OnClick_OpenDynamicLinkAction
	//	*OnClick_Card
	//	*OnClick_OverflowMenu
	Data isOnClick_Data `protobuf_oneof:"data"`
}

func (x *OnClick) Reset() {
	*x = OnClick{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *OnClick) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*OnClick) ProtoMessage() {}

func (x *OnClick) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[22]
	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 OnClick.ProtoReflect.Descriptor instead.
func (*OnClick) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{22}
}

func (m *OnClick) GetData() isOnClick_Data {
	if m != nil {
		return m.Data
	}
	return nil
}

func (x *OnClick) GetAction() *Action {
	if x, ok := x.GetData().(*OnClick_Action); ok {
		return x.Action
	}
	return nil
}

func (x *OnClick) GetOpenLink() *OpenLink {
	if x, ok := x.GetData().(*OnClick_OpenLink); ok {
		return x.OpenLink
	}
	return nil
}

func (x *OnClick) GetOpenDynamicLinkAction() *Action {
	if x, ok := x.GetData().(*OnClick_OpenDynamicLinkAction); ok {
		return x.OpenDynamicLinkAction
	}
	return nil
}

func (x *OnClick) GetCard() *Card {
	if x, ok := x.GetData().(*OnClick_Card); ok {
		return x.Card
	}
	return nil
}

func (x *OnClick) GetOverflowMenu() *OverflowMenu {
	if x, ok := x.GetData().(*OnClick_OverflowMenu); ok {
		return x.OverflowMenu
	}
	return nil
}

type isOnClick_Data interface {
	isOnClick_Data()
}

type OnClick_Action struct {
	// If specified, an action is triggered by this `onClick`.
	Action *Action `protobuf:"bytes,1,opt,name=action,proto3,oneof"`
}

type OnClick_OpenLink struct {
	// If specified, this `onClick` triggers an open link action.
	OpenLink *OpenLink `protobuf:"bytes,2,opt,name=open_link,json=openLink,proto3,oneof"`
}

type OnClick_OpenDynamicLinkAction struct {
	// An add-on triggers this action when the action needs to open a
	// link. This differs from the `open_link` above in that this needs to talk
	// to server to get the link. Thus some preparation work is required for
	// web client to do before the open link action response comes back.
	//
	// [Google Workspace
	// add-ons](https://developers.google.com/workspace/add-ons):
	OpenDynamicLinkAction *Action `protobuf:"bytes,3,opt,name=open_dynamic_link_action,json=openDynamicLinkAction,proto3,oneof"`
}

type OnClick_Card struct {
	// A new card is pushed to the card stack after clicking if specified.
	//
	// [Google Workspace
	// add-ons](https://developers.google.com/workspace/add-ons):
	Card *Card `protobuf:"bytes,4,opt,name=card,proto3,oneof"`
}

type OnClick_OverflowMenu struct {
	// If specified, this `onClick` opens an overflow menu.
	OverflowMenu *OverflowMenu `protobuf:"bytes,8,opt,name=overflow_menu,json=overflowMenu,proto3,oneof"`
}

func (*OnClick_Action) isOnClick_Data() {}

func (*OnClick_OpenLink) isOnClick_Data() {}

func (*OnClick_OpenDynamicLinkAction) isOnClick_Data() {}

func (*OnClick_Card) isOnClick_Data() {}

func (*OnClick_OverflowMenu) isOnClick_Data() {}

// Represents an `onClick` event that opens a hyperlink.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type OpenLink struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The URL to open.
	Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
	// How to open a link.
	//
	// [Google Workspace
	// add-ons](https://developers.google.com/workspace/add-ons):
	OpenAs OpenLink_OpenAs `protobuf:"varint,2,opt,name=open_as,json=openAs,proto3,enum=google.apps.card.v1.OpenLink_OpenAs" json:"open_as,omitempty"`
	// Whether the client forgets about a link after opening it, or observes it
	// until the window closes.
	//
	// [Google Workspace
	// add-ons](https://developers.google.com/workspace/add-ons):
	OnClose OpenLink_OnClose `protobuf:"varint,3,opt,name=on_close,json=onClose,proto3,enum=google.apps.card.v1.OpenLink_OnClose" json:"on_close,omitempty"`
}

func (x *OpenLink) Reset() {
	*x = OpenLink{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *OpenLink) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*OpenLink) ProtoMessage() {}

func (x *OpenLink) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_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 OpenLink.ProtoReflect.Descriptor instead.
func (*OpenLink) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{23}
}

func (x *OpenLink) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

func (x *OpenLink) GetOpenAs() OpenLink_OpenAs {
	if x != nil {
		return x.OpenAs
	}
	return OpenLink_FULL_SIZE
}

func (x *OpenLink) GetOnClose() OpenLink_OnClose {
	if x != nil {
		return x.OnClose
	}
	return OpenLink_NOTHING
}

// An action that describes the behavior when the form is submitted.
// For example, you can invoke an Apps Script script to handle the form.
// If the action is triggered, the form values are sent to the server.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type Action struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A custom function to invoke when the containing element is
	// clicked or otherwise activated.
	//
	// For example usage, see [Read form
	// data](https://developers.google.com/workspace/chat/read-form-data).
	Function string `protobuf:"bytes,1,opt,name=function,proto3" json:"function,omitempty"`
	// List of action parameters.
	Parameters []*Action_ActionParameter `protobuf:"bytes,2,rep,name=parameters,proto3" json:"parameters,omitempty"`
	// Specifies the loading indicator that the action displays while
	// making the call to the action.
	LoadIndicator Action_LoadIndicator `protobuf:"varint,3,opt,name=load_indicator,json=loadIndicator,proto3,enum=google.apps.card.v1.Action_LoadIndicator" json:"load_indicator,omitempty"`
	// Indicates whether form values persist after the action. The default value
	// is `false`.
	//
	// If `true`, form values remain after the action is triggered. To let the
	// user make changes while the action is being processed, set
	// [`LoadIndicator`](https://developers.google.com/workspace/add-ons/reference/rpc/google.apps.card.v1#loadindicator)
	// to `NONE`. For [card
	// messages](https://developers.google.com/workspace/chat/api/guides/v1/messages/create#create)
	// in Chat apps, you must also set the action's
	// [`ResponseType`](https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages#responsetype)
	// to `UPDATE_MESSAGE` and use the same
	// [`card_id`](https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces.messages#CardWithId)
	// from the card that contained the action.
	//
	// If `false`, the form values are cleared when the action is triggered.
	// To prevent the user from making changes while the action is being
	// processed, set
	// [`LoadIndicator`](https://developers.google.com/workspace/add-ons/reference/rpc/google.apps.card.v1#loadindicator)
	// to `SPINNER`.
	PersistValues bool `protobuf:"varint,4,opt,name=persist_values,json=persistValues,proto3" json:"persist_values,omitempty"`
	// Optional. Required when opening a
	// [dialog](https://developers.google.com/workspace/chat/dialogs).
	//
	// What to do in response to an interaction with a user, such as a user
	// clicking a button in a card message.
	//
	// If unspecified, the app responds by executing an `action`—like opening a
	// link or running a function—as normal.
	//
	// By specifying an `interaction`, the app can respond in special interactive
	// ways. For example, by setting `interaction` to `OPEN_DIALOG`, the app can
	// open a [dialog](https://developers.google.com/workspace/chat/dialogs). When
	// specified, a loading indicator isn't shown. If specified for
	// an add-on, the entire card is stripped and nothing is shown in the client.
	//
	// [Google Chat apps](https://developers.google.com/workspace/chat):
	Interaction Action_Interaction `protobuf:"varint,5,opt,name=interaction,proto3,enum=google.apps.card.v1.Action_Interaction" json:"interaction,omitempty"`
	// Optional. Fill this list with the names of widgets that this Action
	// needs for a valid submission.
	//
	// If the widgets listed here don't have a value when this Action is invoked,
	// the form submission is aborted.
	//
	// [Google Workspace add-ons and Chat
	// apps](https://developers.google.com/workspace/extend):
	RequiredWidgets []string `protobuf:"bytes,6,rep,name=required_widgets,json=requiredWidgets,proto3" json:"required_widgets,omitempty"`
	// Optional. If this is true, then all widgets are considered required by
	// this action.
	//
	// [Google Workspace add-ons and Chat
	// apps](https://developers.google.com/workspace/extend):
	AllWidgetsAreRequired bool `protobuf:"varint,7,opt,name=all_widgets_are_required,json=allWidgetsAreRequired,proto3" json:"all_widgets_are_required,omitempty"`
}

func (x *Action) Reset() {
	*x = Action{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Action) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Action) ProtoMessage() {}

func (x *Action) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[24]
	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 Action.ProtoReflect.Descriptor instead.
func (*Action) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{24}
}

func (x *Action) GetFunction() string {
	if x != nil {
		return x.Function
	}
	return ""
}

func (x *Action) GetParameters() []*Action_ActionParameter {
	if x != nil {
		return x.Parameters
	}
	return nil
}

func (x *Action) GetLoadIndicator() Action_LoadIndicator {
	if x != nil {
		return x.LoadIndicator
	}
	return Action_SPINNER
}

func (x *Action) GetPersistValues() bool {
	if x != nil {
		return x.PersistValues
	}
	return false
}

func (x *Action) GetInteraction() Action_Interaction {
	if x != nil {
		return x.Interaction
	}
	return Action_INTERACTION_UNSPECIFIED
}

func (x *Action) GetRequiredWidgets() []string {
	if x != nil {
		return x.RequiredWidgets
	}
	return nil
}

func (x *Action) GetAllWidgetsAreRequired() bool {
	if x != nil {
		return x.AllWidgetsAreRequired
	}
	return false
}

// Represents the necessary data for validating the widget it's attached to.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type Validation struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Specify the character limit for text input widgets.  Note that this is
	// only used for text input and is ignored for other widgets.
	//
	// [Google Workspace add-ons and Chat
	// apps](https://developers.google.com/workspace/extend):
	CharacterLimit int32 `protobuf:"varint,1,opt,name=character_limit,json=characterLimit,proto3" json:"character_limit,omitempty"`
	// Specify the type of the input widgets.
	//
	// [Google Workspace add-ons and Chat
	// apps](https://developers.google.com/workspace/extend):
	InputType Validation_InputType `protobuf:"varint,2,opt,name=input_type,json=inputType,proto3,enum=google.apps.card.v1.Validation_InputType" json:"input_type,omitempty"`
}

func (x *Validation) Reset() {
	*x = Validation{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Validation) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Validation) ProtoMessage() {}

func (x *Validation) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[25]
	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 Validation.ProtoReflect.Descriptor instead.
func (*Validation) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{25}
}

func (x *Validation) GetCharacterLimit() int32 {
	if x != nil {
		return x.CharacterLimit
	}
	return 0
}

func (x *Validation) GetInputType() Validation_InputType {
	if x != nil {
		return x.InputType
	}
	return Validation_INPUT_TYPE_UNSPECIFIED
}

// A list of chips layed out horizontally, which can either scroll horizontally
// or wrap to the next line.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type ChipList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Specified chip list layout.
	Layout ChipList_Layout `protobuf:"varint,1,opt,name=layout,proto3,enum=google.apps.card.v1.ChipList_Layout" json:"layout,omitempty"`
	// An array of chips.
	Chips []*Chip `protobuf:"bytes,2,rep,name=chips,proto3" json:"chips,omitempty"`
}

func (x *ChipList) Reset() {
	*x = ChipList{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ChipList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ChipList) ProtoMessage() {}

func (x *ChipList) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[26]
	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 ChipList.ProtoReflect.Descriptor instead.
func (*ChipList) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{26}
}

func (x *ChipList) GetLayout() ChipList_Layout {
	if x != nil {
		return x.Layout
	}
	return ChipList_LAYOUT_UNSPECIFIED
}

func (x *ChipList) GetChips() []*Chip {
	if x != nil {
		return x.Chips
	}
	return nil
}

// A text, icon, or text and icon chip that users can click.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type Chip struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The icon image. If both `icon` and `text` are set, then the icon appears
	// before the text.
	Icon *Icon `protobuf:"bytes,1,opt,name=icon,proto3" json:"icon,omitempty"`
	// The text displayed inside the chip.
	Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`
	// Optional. The action to perform when a user clicks the chip, such as
	// opening a hyperlink or running a custom function.
	OnClick *OnClick `protobuf:"bytes,3,opt,name=on_click,json=onClick,proto3" json:"on_click,omitempty"`
	// Whether the chip is in an active state and responds to user actions.
	// Defaults to `true`.
	// Deprecated. Use `disabled` instead.
	//
	// Deprecated: Do not use.
	Enabled bool `protobuf:"varint,4,opt,name=enabled,proto3" json:"enabled,omitempty"`
	// Whether the chip is in an inactive state and ignores user actions.
	// Defaults to `false`.
	Disabled bool `protobuf:"varint,6,opt,name=disabled,proto3" json:"disabled,omitempty"`
	// The alternative text that's used for accessibility.
	//
	// Set descriptive text that lets users know what the chip does. For
	// example, if a chip opens a hyperlink, write: "Opens a new
	// browser tab and navigates to the Google Chat developer documentation at
	// https://developers.google.com/workspace/chat".
	AltText string `protobuf:"bytes,5,opt,name=alt_text,json=altText,proto3" json:"alt_text,omitempty"`
}

func (x *Chip) Reset() {
	*x = Chip{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Chip) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Chip) ProtoMessage() {}

func (x *Chip) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[27]
	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 Chip.ProtoReflect.Descriptor instead.
func (*Chip) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{27}
}

func (x *Chip) GetIcon() *Icon {
	if x != nil {
		return x.Icon
	}
	return nil
}

func (x *Chip) GetLabel() string {
	if x != nil {
		return x.Label
	}
	return ""
}

func (x *Chip) GetOnClick() *OnClick {
	if x != nil {
		return x.OnClick
	}
	return nil
}

// Deprecated: Do not use.
func (x *Chip) GetEnabled() bool {
	if x != nil {
		return x.Enabled
	}
	return false
}

func (x *Chip) GetDisabled() bool {
	if x != nil {
		return x.Disabled
	}
	return false
}

func (x *Chip) GetAltText() string {
	if x != nil {
		return x.AltText
	}
	return ""
}

// Represents a card header. For an example in Google Chat apps, see [Add a
// header](https://developers.google.com/workspace/chat/design-components-card-dialog#add_a_header).
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type Card_CardHeader struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The title of the card header.
	// The header has a fixed height: if both a
	// title and subtitle are specified, each takes up one line. If only the
	// title is specified, it takes up both lines.
	Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	// The subtitle of the card header. If specified, appears on its own line
	// below the `title`.
	Subtitle string `protobuf:"bytes,2,opt,name=subtitle,proto3" json:"subtitle,omitempty"`
	// The shape used to crop the image.
	//
	// [Google Workspace add-ons and Chat
	// apps](https://developers.google.com/workspace/extend):
	ImageType Widget_ImageType `protobuf:"varint,3,opt,name=image_type,json=imageType,proto3,enum=google.apps.card.v1.Widget_ImageType" json:"image_type,omitempty"`
	// The HTTPS URL of the image in the card header.
	ImageUrl string `protobuf:"bytes,4,opt,name=image_url,json=imageUrl,proto3" json:"image_url,omitempty"`
	// The alternative text of this image that's used for accessibility.
	ImageAltText string `protobuf:"bytes,5,opt,name=image_alt_text,json=imageAltText,proto3" json:"image_alt_text,omitempty"`
}

func (x *Card_CardHeader) Reset() {
	*x = Card_CardHeader{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Card_CardHeader) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Card_CardHeader) ProtoMessage() {}

func (x *Card_CardHeader) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[28]
	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 Card_CardHeader.ProtoReflect.Descriptor instead.
func (*Card_CardHeader) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{0, 0}
}

func (x *Card_CardHeader) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *Card_CardHeader) GetSubtitle() string {
	if x != nil {
		return x.Subtitle
	}
	return ""
}

func (x *Card_CardHeader) GetImageType() Widget_ImageType {
	if x != nil {
		return x.ImageType
	}
	return Widget_SQUARE
}

func (x *Card_CardHeader) GetImageUrl() string {
	if x != nil {
		return x.ImageUrl
	}
	return ""
}

func (x *Card_CardHeader) GetImageAltText() string {
	if x != nil {
		return x.ImageAltText
	}
	return ""
}

// A section contains a collection of widgets that are rendered
// vertically in the order that they're specified.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type Card_Section struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Text that appears at the top of a section.
	// Supports simple HTML formatted text. For more information
	// about formatting text, see
	// [Formatting text in Google Chat
	// apps](https://developers.google.com/workspace/chat/format-messages#card-formatting)
	// and
	// [Formatting
	// text in Google Workspace
	// add-ons](https://developers.google.com/apps-script/add-ons/concepts/widgets#text_formatting).
	Header string `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
	// All the widgets in the section.
	// Must contain at least one widget.
	Widgets []*Widget `protobuf:"bytes,2,rep,name=widgets,proto3" json:"widgets,omitempty"`
	// Indicates whether this section is collapsible.
	//
	// Collapsible sections hide some or all widgets, but users can expand the
	// section to reveal the hidden widgets by clicking **Show more**. Users
	// can hide the widgets again by clicking **Show less**.
	//
	// To determine which widgets are hidden, specify
	// `uncollapsibleWidgetsCount`.
	Collapsible bool `protobuf:"varint,5,opt,name=collapsible,proto3" json:"collapsible,omitempty"`
	// The number of uncollapsible widgets which remain visible even when a
	// section is collapsed.
	//
	// For example, when a section
	// contains five widgets and the `uncollapsibleWidgetsCount` is set to `2`,
	// the first two widgets are always shown and the last three are collapsed
	// by default. The `uncollapsibleWidgetsCount` is taken into account only
	// when `collapsible` is `true`.
	UncollapsibleWidgetsCount int32 `protobuf:"varint,6,opt,name=uncollapsible_widgets_count,json=uncollapsibleWidgetsCount,proto3" json:"uncollapsible_widgets_count,omitempty"`
	// Optional. Define the expand and collapse button of the section.
	// This button will be shown only if the section is collapsible.
	// If this field isn't set, the default button is used.
	CollapseControl *CollapseControl `protobuf:"bytes,8,opt,name=collapse_control,json=collapseControl,proto3" json:"collapse_control,omitempty"`
}

func (x *Card_Section) Reset() {
	*x = Card_Section{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Card_Section) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Card_Section) ProtoMessage() {}

func (x *Card_Section) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[29]
	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 Card_Section.ProtoReflect.Descriptor instead.
func (*Card_Section) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{0, 1}
}

func (x *Card_Section) GetHeader() string {
	if x != nil {
		return x.Header
	}
	return ""
}

func (x *Card_Section) GetWidgets() []*Widget {
	if x != nil {
		return x.Widgets
	}
	return nil
}

func (x *Card_Section) GetCollapsible() bool {
	if x != nil {
		return x.Collapsible
	}
	return false
}

func (x *Card_Section) GetUncollapsibleWidgetsCount() int32 {
	if x != nil {
		return x.UncollapsibleWidgetsCount
	}
	return 0
}

func (x *Card_Section) GetCollapseControl() *CollapseControl {
	if x != nil {
		return x.CollapseControl
	}
	return nil
}

// A card action is the action associated with the card. For example,
// an invoice card might include actions such as delete invoice, email
// invoice, or open the invoice in a browser.
//
// [Google Workspace
// add-ons](https://developers.google.com/workspace/add-ons):
type Card_CardAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The label that displays as the action menu item.
	ActionLabel string `protobuf:"bytes,1,opt,name=action_label,json=actionLabel,proto3" json:"action_label,omitempty"`
	// The `onClick` action for this action item.
	OnClick *OnClick `protobuf:"bytes,2,opt,name=on_click,json=onClick,proto3" json:"on_click,omitempty"`
}

func (x *Card_CardAction) Reset() {
	*x = Card_CardAction{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Card_CardAction) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Card_CardAction) ProtoMessage() {}

func (x *Card_CardAction) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[30]
	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 Card_CardAction.ProtoReflect.Descriptor instead.
func (*Card_CardAction) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{0, 2}
}

func (x *Card_CardAction) GetActionLabel() string {
	if x != nil {
		return x.ActionLabel
	}
	return ""
}

func (x *Card_CardAction) GetOnClick() *OnClick {
	if x != nil {
		return x.OnClick
	}
	return nil
}

// A list of widgets that can be displayed in a containing layout, such
// as a `CarouselCard`.
// [Google Chat apps](https://developers.google.com/workspace/chat):
type Card_NestedWidget struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Data:
	//
	//	*Card_NestedWidget_TextParagraph
	//	*Card_NestedWidget_ButtonList
	//	*Card_NestedWidget_Image
	Data isCard_NestedWidget_Data `protobuf_oneof:"data"`
}

func (x *Card_NestedWidget) Reset() {
	*x = Card_NestedWidget{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Card_NestedWidget) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Card_NestedWidget) ProtoMessage() {}

func (x *Card_NestedWidget) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[31]
	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 Card_NestedWidget.ProtoReflect.Descriptor instead.
func (*Card_NestedWidget) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{0, 3}
}

func (m *Card_NestedWidget) GetData() isCard_NestedWidget_Data {
	if m != nil {
		return m.Data
	}
	return nil
}

func (x *Card_NestedWidget) GetTextParagraph() *TextParagraph {
	if x, ok := x.GetData().(*Card_NestedWidget_TextParagraph); ok {
		return x.TextParagraph
	}
	return nil
}

func (x *Card_NestedWidget) GetButtonList() *ButtonList {
	if x, ok := x.GetData().(*Card_NestedWidget_ButtonList); ok {
		return x.ButtonList
	}
	return nil
}

func (x *Card_NestedWidget) GetImage() *Image {
	if x, ok := x.GetData().(*Card_NestedWidget_Image); ok {
		return x.Image
	}
	return nil
}

type isCard_NestedWidget_Data interface {
	isCard_NestedWidget_Data()
}

type Card_NestedWidget_TextParagraph struct {
	// A text paragraph widget.
	TextParagraph *TextParagraph `protobuf:"bytes,1,opt,name=text_paragraph,json=textParagraph,proto3,oneof"`
}

type Card_NestedWidget_ButtonList struct {
	// A button list widget.
	ButtonList *ButtonList `protobuf:"bytes,3,opt,name=button_list,json=buttonList,proto3,oneof"`
}

type Card_NestedWidget_Image struct {
	// An image widget.
	Image *Image `protobuf:"bytes,10,opt,name=image,proto3,oneof"`
}

func (*Card_NestedWidget_TextParagraph) isCard_NestedWidget_Data() {}

func (*Card_NestedWidget_ButtonList) isCard_NestedWidget_Data() {}

func (*Card_NestedWidget_Image) isCard_NestedWidget_Data() {}

// A persistent (sticky) footer that that appears at the bottom of the card.
//
// Setting `fixedFooter` without specifying a `primaryButton` or a
// `secondaryButton` causes an error.
//
// For Chat apps, you can use fixed footers in
// [dialogs](https://developers.google.com/workspace/chat/dialogs), but not
// [card
// messages](https://developers.google.com/workspace/chat/create-messages#create).
// For an example in Google Chat apps, see [Add a persistent
// footer](https://developers.google.com/workspace/chat/design-components-card-dialog#add_a_persistent_footer).
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type Card_CardFixedFooter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The primary button of the fixed footer. The button must be a text button
	// with text and color set.
	PrimaryButton *Button `protobuf:"bytes,1,opt,name=primary_button,json=primaryButton,proto3" json:"primary_button,omitempty"`
	// The secondary button of the fixed footer.  The button must be a text
	// button with text and color set.
	// If `secondaryButton` is set, you must also set `primaryButton`.
	SecondaryButton *Button `protobuf:"bytes,2,opt,name=secondary_button,json=secondaryButton,proto3" json:"secondary_button,omitempty"`
}

func (x *Card_CardFixedFooter) Reset() {
	*x = Card_CardFixedFooter{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[32]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Card_CardFixedFooter) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Card_CardFixedFooter) ProtoMessage() {}

func (x *Card_CardFixedFooter) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[32]
	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 Card_CardFixedFooter.ProtoReflect.Descriptor instead.
func (*Card_CardFixedFooter) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{0, 4}
}

func (x *Card_CardFixedFooter) GetPrimaryButton() *Button {
	if x != nil {
		return x.PrimaryButton
	}
	return nil
}

func (x *Card_CardFixedFooter) GetSecondaryButton() *Button {
	if x != nil {
		return x.SecondaryButton
	}
	return nil
}

// Either a toggle-style switch or a checkbox inside a `decoratedText` widget.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
//
// Only supported in the `decoratedText` widget.
type DecoratedText_SwitchControl struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The name by which the switch widget is identified in a form input event.
	//
	// For details about working with form inputs, see [Receive form
	// data](https://developers.google.com/workspace/chat/read-form-data).
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// The value entered by a user, returned as part of a form input event.
	//
	// For details about working with form inputs, see [Receive form
	// data](https://developers.google.com/workspace/chat/read-form-data).
	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	// When `true`, the switch is selected.
	Selected bool `protobuf:"varint,3,opt,name=selected,proto3" json:"selected,omitempty"`
	// The action to perform when the switch state is changed, such as what
	//
	//	function to run.
	OnChangeAction *Action `protobuf:"bytes,4,opt,name=on_change_action,json=onChangeAction,proto3" json:"on_change_action,omitempty"`
	// How the switch appears in the user interface.
	//
	// [Google Workspace add-ons
	// and Chat apps](https://developers.google.com/workspace/extend):
	ControlType DecoratedText_SwitchControl_ControlType `protobuf:"varint,5,opt,name=control_type,json=controlType,proto3,enum=google.apps.card.v1.DecoratedText_SwitchControl_ControlType" json:"control_type,omitempty"`
}

func (x *DecoratedText_SwitchControl) Reset() {
	*x = DecoratedText_SwitchControl{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[33]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DecoratedText_SwitchControl) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DecoratedText_SwitchControl) ProtoMessage() {}

func (x *DecoratedText_SwitchControl) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[33]
	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 DecoratedText_SwitchControl.ProtoReflect.Descriptor instead.
func (*DecoratedText_SwitchControl) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{5, 0}
}

func (x *DecoratedText_SwitchControl) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *DecoratedText_SwitchControl) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

func (x *DecoratedText_SwitchControl) GetSelected() bool {
	if x != nil {
		return x.Selected
	}
	return false
}

func (x *DecoratedText_SwitchControl) GetOnChangeAction() *Action {
	if x != nil {
		return x.OnChangeAction
	}
	return nil
}

func (x *DecoratedText_SwitchControl) GetControlType() DecoratedText_SwitchControl_ControlType {
	if x != nil {
		return x.ControlType
	}
	return DecoratedText_SwitchControl_SWITCH
}

// One suggested value that users can enter in a text input field.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type Suggestions_SuggestionItem struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Content:
	//
	//	*Suggestions_SuggestionItem_Text
	Content isSuggestions_SuggestionItem_Content `protobuf_oneof:"content"`
}

func (x *Suggestions_SuggestionItem) Reset() {
	*x = Suggestions_SuggestionItem{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[34]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Suggestions_SuggestionItem) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Suggestions_SuggestionItem) ProtoMessage() {}

func (x *Suggestions_SuggestionItem) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[34]
	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 Suggestions_SuggestionItem.ProtoReflect.Descriptor instead.
func (*Suggestions_SuggestionItem) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{7, 0}
}

func (m *Suggestions_SuggestionItem) GetContent() isSuggestions_SuggestionItem_Content {
	if m != nil {
		return m.Content
	}
	return nil
}

func (x *Suggestions_SuggestionItem) GetText() string {
	if x, ok := x.GetContent().(*Suggestions_SuggestionItem_Text); ok {
		return x.Text
	}
	return ""
}

type isSuggestions_SuggestionItem_Content interface {
	isSuggestions_SuggestionItem_Content()
}

type Suggestions_SuggestionItem_Text struct {
	// The value of a suggested input to a text input field. This is
	// equivalent to what users enter themselves.
	Text string `protobuf:"bytes,1,opt,name=text,proto3,oneof"`
}

func (*Suggestions_SuggestionItem_Text) isSuggestions_SuggestionItem_Content() {}

// An item that users can select in a selection input, such as a checkbox
// or switch. Supports up to 100 items.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type SelectionInput_SelectionItem struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The text that identifies or describes the item to users.
	Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"`
	// The value associated with this item. The client should use this as a form
	// input value.
	//
	// For details about working with form inputs, see [Receive form
	// data](https://developers.google.com/workspace/chat/read-form-data).
	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	// Whether the item is selected by default. If the selection input only
	// accepts one value (such as for radio buttons or a dropdown menu), only
	// set this field for one item.
	Selected bool `protobuf:"varint,3,opt,name=selected,proto3" json:"selected,omitempty"`
	// For multiselect menus, the URL for the icon displayed next to
	// the item's `text` field. Supports PNG and JPEG files. Must be an `HTTPS`
	// URL. For example,
	// `https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png`.
	//
	// Types that are assignable to StartIcon:
	//
	//	*SelectionInput_SelectionItem_StartIconUri
	StartIcon isSelectionInput_SelectionItem_StartIcon `protobuf_oneof:"start_icon"`
	// For multiselect menus, a text description or label that's
	// displayed below the item's `text` field.
	BottomText string `protobuf:"bytes,5,opt,name=bottom_text,json=bottomText,proto3" json:"bottom_text,omitempty"`
}

func (x *SelectionInput_SelectionItem) Reset() {
	*x = SelectionInput_SelectionItem{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[35]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SelectionInput_SelectionItem) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SelectionInput_SelectionItem) ProtoMessage() {}

func (x *SelectionInput_SelectionItem) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[35]
	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 SelectionInput_SelectionItem.ProtoReflect.Descriptor instead.
func (*SelectionInput_SelectionItem) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{9, 0}
}

func (x *SelectionInput_SelectionItem) GetText() string {
	if x != nil {
		return x.Text
	}
	return ""
}

func (x *SelectionInput_SelectionItem) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

func (x *SelectionInput_SelectionItem) GetSelected() bool {
	if x != nil {
		return x.Selected
	}
	return false
}

func (m *SelectionInput_SelectionItem) GetStartIcon() isSelectionInput_SelectionItem_StartIcon {
	if m != nil {
		return m.StartIcon
	}
	return nil
}

func (x *SelectionInput_SelectionItem) GetStartIconUri() string {
	if x, ok := x.GetStartIcon().(*SelectionInput_SelectionItem_StartIconUri); ok {
		return x.StartIconUri
	}
	return ""
}

func (x *SelectionInput_SelectionItem) GetBottomText() string {
	if x != nil {
		return x.BottomText
	}
	return ""
}

type isSelectionInput_SelectionItem_StartIcon interface {
	isSelectionInput_SelectionItem_StartIcon()
}

type SelectionInput_SelectionItem_StartIconUri struct {
	StartIconUri string `protobuf:"bytes,4,opt,name=start_icon_uri,json=startIconUri,proto3,oneof"`
}

func (*SelectionInput_SelectionItem_StartIconUri) isSelectionInput_SelectionItem_StartIcon() {}

// For a
// [`SelectionInput`][google.apps.card.v1.SelectionInput] widget that uses a
// multiselect menu, a data source from Google Workspace. Used to populate
// items in a multiselect menu.
//
// [Google Chat apps](https://developers.google.com/workspace/chat):
type SelectionInput_PlatformDataSource struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The data source.
	//
	// Types that are assignable to DataSource:
	//
	//	*SelectionInput_PlatformDataSource_CommonDataSource_
	DataSource isSelectionInput_PlatformDataSource_DataSource `protobuf_oneof:"data_source"`
}

func (x *SelectionInput_PlatformDataSource) Reset() {
	*x = SelectionInput_PlatformDataSource{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[36]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SelectionInput_PlatformDataSource) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SelectionInput_PlatformDataSource) ProtoMessage() {}

func (x *SelectionInput_PlatformDataSource) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[36]
	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 SelectionInput_PlatformDataSource.ProtoReflect.Descriptor instead.
func (*SelectionInput_PlatformDataSource) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{9, 1}
}

func (m *SelectionInput_PlatformDataSource) GetDataSource() isSelectionInput_PlatformDataSource_DataSource {
	if m != nil {
		return m.DataSource
	}
	return nil
}

func (x *SelectionInput_PlatformDataSource) GetCommonDataSource() SelectionInput_PlatformDataSource_CommonDataSource {
	if x, ok := x.GetDataSource().(*SelectionInput_PlatformDataSource_CommonDataSource_); ok {
		return x.CommonDataSource
	}
	return SelectionInput_PlatformDataSource_UNKNOWN
}

type isSelectionInput_PlatformDataSource_DataSource interface {
	isSelectionInput_PlatformDataSource_DataSource()
}

type SelectionInput_PlatformDataSource_CommonDataSource_ struct {
	// A data source shared by all Google Workspace applications, such as
	// users in a Google Workspace organization.
	CommonDataSource SelectionInput_PlatformDataSource_CommonDataSource `protobuf:"varint,1,opt,name=common_data_source,json=commonDataSource,proto3,enum=google.apps.card.v1.SelectionInput_PlatformDataSource_CommonDataSource,oneof"`
}

func (*SelectionInput_PlatformDataSource_CommonDataSource_) isSelectionInput_PlatformDataSource_DataSource() {
}

// An option that users can invoke in an overflow menu.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type OverflowMenu_OverflowMenuItem struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The icon displayed in front of the text.
	StartIcon *Icon `protobuf:"bytes,1,opt,name=start_icon,json=startIcon,proto3" json:"start_icon,omitempty"`
	// Required. The text that identifies or describes the item to users.
	Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"`
	// Required. The action invoked when a menu option is selected.
	// This `OnClick` cannot contain an `OverflowMenu`, any specified
	// `OverflowMenu` is dropped and the menu item disabled.
	OnClick *OnClick `protobuf:"bytes,3,opt,name=on_click,json=onClick,proto3" json:"on_click,omitempty"`
	// Whether the menu option is disabled.
	// Defaults to false.
	Disabled bool `protobuf:"varint,4,opt,name=disabled,proto3" json:"disabled,omitempty"`
}

func (x *OverflowMenu_OverflowMenuItem) Reset() {
	*x = OverflowMenu_OverflowMenuItem{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[37]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *OverflowMenu_OverflowMenuItem) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*OverflowMenu_OverflowMenuItem) ProtoMessage() {}

func (x *OverflowMenu_OverflowMenuItem) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[37]
	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 OverflowMenu_OverflowMenuItem.ProtoReflect.Descriptor instead.
func (*OverflowMenu_OverflowMenuItem) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{11, 0}
}

func (x *OverflowMenu_OverflowMenuItem) GetStartIcon() *Icon {
	if x != nil {
		return x.StartIcon
	}
	return nil
}

func (x *OverflowMenu_OverflowMenuItem) GetText() string {
	if x != nil {
		return x.Text
	}
	return ""
}

func (x *OverflowMenu_OverflowMenuItem) GetOnClick() *OnClick {
	if x != nil {
		return x.OnClick
	}
	return nil
}

func (x *OverflowMenu_OverflowMenuItem) GetDisabled() bool {
	if x != nil {
		return x.Disabled
	}
	return false
}

// Represents an item in a grid layout. Items can contain text, an image, or
// both text and an image.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type Grid_GridItem struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A user-specified identifier for this grid item. This identifier is
	// returned in the parent grid's `onClick` callback parameters.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// The image that displays in the grid item.
	Image *ImageComponent `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"`
	// The grid item's title.
	Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
	// The grid item's subtitle.
	Subtitle string `protobuf:"bytes,4,opt,name=subtitle,proto3" json:"subtitle,omitempty"`
	// The layout to use for the grid item.
	Layout Grid_GridItem_GridItemLayout `protobuf:"varint,9,opt,name=layout,proto3,enum=google.apps.card.v1.Grid_GridItem_GridItemLayout" json:"layout,omitempty"`
}

func (x *Grid_GridItem) Reset() {
	*x = Grid_GridItem{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[38]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Grid_GridItem) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Grid_GridItem) ProtoMessage() {}

func (x *Grid_GridItem) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[38]
	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 Grid_GridItem.ProtoReflect.Descriptor instead.
func (*Grid_GridItem) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{18, 0}
}

func (x *Grid_GridItem) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Grid_GridItem) GetImage() *ImageComponent {
	if x != nil {
		return x.Image
	}
	return nil
}

func (x *Grid_GridItem) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *Grid_GridItem) GetSubtitle() string {
	if x != nil {
		return x.Subtitle
	}
	return ""
}

func (x *Grid_GridItem) GetLayout() Grid_GridItem_GridItemLayout {
	if x != nil {
		return x.Layout
	}
	return Grid_GridItem_GRID_ITEM_LAYOUT_UNSPECIFIED
}

// A column.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend)
type Columns_Column struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Specifies how a column fills the width of the card.
	HorizontalSizeStyle Columns_Column_HorizontalSizeStyle `protobuf:"varint,1,opt,name=horizontal_size_style,json=horizontalSizeStyle,proto3,enum=google.apps.card.v1.Columns_Column_HorizontalSizeStyle" json:"horizontal_size_style,omitempty"`
	// Specifies whether widgets align to the left, right, or center of a
	// column.
	HorizontalAlignment Widget_HorizontalAlignment `protobuf:"varint,2,opt,name=horizontal_alignment,json=horizontalAlignment,proto3,enum=google.apps.card.v1.Widget_HorizontalAlignment" json:"horizontal_alignment,omitempty"`
	// Specifies whether widgets align to the top, bottom, or center of a
	// column.
	VerticalAlignment Columns_Column_VerticalAlignment `protobuf:"varint,3,opt,name=vertical_alignment,json=verticalAlignment,proto3,enum=google.apps.card.v1.Columns_Column_VerticalAlignment" json:"vertical_alignment,omitempty"`
	// An array of widgets included in a column. Widgets appear in the order
	// that they are specified.
	Widgets []*Columns_Column_Widgets `protobuf:"bytes,4,rep,name=widgets,proto3" json:"widgets,omitempty"`
}

func (x *Columns_Column) Reset() {
	*x = Columns_Column{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[39]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Columns_Column) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Columns_Column) ProtoMessage() {}

func (x *Columns_Column) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[39]
	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 Columns_Column.ProtoReflect.Descriptor instead.
func (*Columns_Column) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{19, 0}
}

func (x *Columns_Column) GetHorizontalSizeStyle() Columns_Column_HorizontalSizeStyle {
	if x != nil {
		return x.HorizontalSizeStyle
	}
	return Columns_Column_HORIZONTAL_SIZE_STYLE_UNSPECIFIED
}

func (x *Columns_Column) GetHorizontalAlignment() Widget_HorizontalAlignment {
	if x != nil {
		return x.HorizontalAlignment
	}
	return Widget_HORIZONTAL_ALIGNMENT_UNSPECIFIED
}

func (x *Columns_Column) GetVerticalAlignment() Columns_Column_VerticalAlignment {
	if x != nil {
		return x.VerticalAlignment
	}
	return Columns_Column_VERTICAL_ALIGNMENT_UNSPECIFIED
}

func (x *Columns_Column) GetWidgets() []*Columns_Column_Widgets {
	if x != nil {
		return x.Widgets
	}
	return nil
}

// The supported widgets that you can include in a column.
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend)
type Columns_Column_Widgets struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Data:
	//
	//	*Columns_Column_Widgets_TextParagraph
	//	*Columns_Column_Widgets_Image
	//	*Columns_Column_Widgets_DecoratedText
	//	*Columns_Column_Widgets_ButtonList
	//	*Columns_Column_Widgets_TextInput
	//	*Columns_Column_Widgets_SelectionInput
	//	*Columns_Column_Widgets_DateTimePicker
	//	*Columns_Column_Widgets_ChipList
	Data isColumns_Column_Widgets_Data `protobuf_oneof:"data"`
}

func (x *Columns_Column_Widgets) Reset() {
	*x = Columns_Column_Widgets{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[40]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Columns_Column_Widgets) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Columns_Column_Widgets) ProtoMessage() {}

func (x *Columns_Column_Widgets) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[40]
	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 Columns_Column_Widgets.ProtoReflect.Descriptor instead.
func (*Columns_Column_Widgets) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{19, 0, 0}
}

func (m *Columns_Column_Widgets) GetData() isColumns_Column_Widgets_Data {
	if m != nil {
		return m.Data
	}
	return nil
}

func (x *Columns_Column_Widgets) GetTextParagraph() *TextParagraph {
	if x, ok := x.GetData().(*Columns_Column_Widgets_TextParagraph); ok {
		return x.TextParagraph
	}
	return nil
}

func (x *Columns_Column_Widgets) GetImage() *Image {
	if x, ok := x.GetData().(*Columns_Column_Widgets_Image); ok {
		return x.Image
	}
	return nil
}

func (x *Columns_Column_Widgets) GetDecoratedText() *DecoratedText {
	if x, ok := x.GetData().(*Columns_Column_Widgets_DecoratedText); ok {
		return x.DecoratedText
	}
	return nil
}

func (x *Columns_Column_Widgets) GetButtonList() *ButtonList {
	if x, ok := x.GetData().(*Columns_Column_Widgets_ButtonList); ok {
		return x.ButtonList
	}
	return nil
}

func (x *Columns_Column_Widgets) GetTextInput() *TextInput {
	if x, ok := x.GetData().(*Columns_Column_Widgets_TextInput); ok {
		return x.TextInput
	}
	return nil
}

func (x *Columns_Column_Widgets) GetSelectionInput() *SelectionInput {
	if x, ok := x.GetData().(*Columns_Column_Widgets_SelectionInput); ok {
		return x.SelectionInput
	}
	return nil
}

func (x *Columns_Column_Widgets) GetDateTimePicker() *DateTimePicker {
	if x, ok := x.GetData().(*Columns_Column_Widgets_DateTimePicker); ok {
		return x.DateTimePicker
	}
	return nil
}

func (x *Columns_Column_Widgets) GetChipList() *ChipList {
	if x, ok := x.GetData().(*Columns_Column_Widgets_ChipList); ok {
		return x.ChipList
	}
	return nil
}

type isColumns_Column_Widgets_Data interface {
	isColumns_Column_Widgets_Data()
}

type Columns_Column_Widgets_TextParagraph struct {
	// [TextParagraph][google.apps.card.v1.TextParagraph] widget.
	TextParagraph *TextParagraph `protobuf:"bytes,1,opt,name=text_paragraph,json=textParagraph,proto3,oneof"`
}

type Columns_Column_Widgets_Image struct {
	// [Image][google.apps.card.v1.Image] widget.
	Image *Image `protobuf:"bytes,2,opt,name=image,proto3,oneof"`
}

type Columns_Column_Widgets_DecoratedText struct {
	// [DecoratedText][google.apps.card.v1.DecoratedText] widget.
	DecoratedText *DecoratedText `protobuf:"bytes,3,opt,name=decorated_text,json=decoratedText,proto3,oneof"`
}

type Columns_Column_Widgets_ButtonList struct {
	// [ButtonList][google.apps.card.v1.ButtonList] widget.
	ButtonList *ButtonList `protobuf:"bytes,4,opt,name=button_list,json=buttonList,proto3,oneof"`
}

type Columns_Column_Widgets_TextInput struct {
	// [TextInput][google.apps.card.v1.TextInput] widget.
	TextInput *TextInput `protobuf:"bytes,5,opt,name=text_input,json=textInput,proto3,oneof"`
}

type Columns_Column_Widgets_SelectionInput struct {
	// [SelectionInput][google.apps.card.v1.SelectionInput] widget.
	SelectionInput *SelectionInput `protobuf:"bytes,6,opt,name=selection_input,json=selectionInput,proto3,oneof"`
}

type Columns_Column_Widgets_DateTimePicker struct {
	// [DateTimePicker][google.apps.card.v1.DateTimePicker] widget.
	DateTimePicker *DateTimePicker `protobuf:"bytes,7,opt,name=date_time_picker,json=dateTimePicker,proto3,oneof"`
}

type Columns_Column_Widgets_ChipList struct {
	// [ChipList][google.apps.card.v1.ChipList] widget.
	ChipList *ChipList `protobuf:"bytes,8,opt,name=chip_list,json=chipList,proto3,oneof"`
}

func (*Columns_Column_Widgets_TextParagraph) isColumns_Column_Widgets_Data() {}

func (*Columns_Column_Widgets_Image) isColumns_Column_Widgets_Data() {}

func (*Columns_Column_Widgets_DecoratedText) isColumns_Column_Widgets_Data() {}

func (*Columns_Column_Widgets_ButtonList) isColumns_Column_Widgets_Data() {}

func (*Columns_Column_Widgets_TextInput) isColumns_Column_Widgets_Data() {}

func (*Columns_Column_Widgets_SelectionInput) isColumns_Column_Widgets_Data() {}

func (*Columns_Column_Widgets_DateTimePicker) isColumns_Column_Widgets_Data() {}

func (*Columns_Column_Widgets_ChipList) isColumns_Column_Widgets_Data() {}

// A card that can be displayed as a carousel item.
// [Google Chat apps](https://developers.google.com/workspace/chat):
type Carousel_CarouselCard struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A list of widgets displayed in the carousel card. The widgets are
	// displayed in the order that they are specified.
	Widgets []*Card_NestedWidget `protobuf:"bytes,1,rep,name=widgets,proto3" json:"widgets,omitempty"`
	// A list of widgets displayed at the bottom of the carousel card. The
	// widgets are displayed in the order that they are specified.
	FooterWidgets []*Card_NestedWidget `protobuf:"bytes,2,rep,name=footer_widgets,json=footerWidgets,proto3" json:"footer_widgets,omitempty"`
}

func (x *Carousel_CarouselCard) Reset() {
	*x = Carousel_CarouselCard{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[41]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Carousel_CarouselCard) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Carousel_CarouselCard) ProtoMessage() {}

func (x *Carousel_CarouselCard) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[41]
	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 Carousel_CarouselCard.ProtoReflect.Descriptor instead.
func (*Carousel_CarouselCard) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{20, 0}
}

func (x *Carousel_CarouselCard) GetWidgets() []*Card_NestedWidget {
	if x != nil {
		return x.Widgets
	}
	return nil
}

func (x *Carousel_CarouselCard) GetFooterWidgets() []*Card_NestedWidget {
	if x != nil {
		return x.FooterWidgets
	}
	return nil
}

// List of string parameters to supply when the action method is invoked.
// For example, consider three snooze buttons: snooze now, snooze one day,
// or snooze next week. You might use `action method = snooze()`, passing the
// snooze type and snooze time in the list of string parameters.
//
// To learn more, see
// [`CommonEventObject`](https://developers.google.com/workspace/chat/api/reference/rest/v1/Event#commoneventobject).
//
// [Google Workspace add-ons and Chat
// apps](https://developers.google.com/workspace/extend):
type Action_ActionParameter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The name of the parameter for the action script.
	Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	// The value of the parameter.
	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}

func (x *Action_ActionParameter) Reset() {
	*x = Action_ActionParameter{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_apps_card_v1_card_proto_msgTypes[42]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Action_ActionParameter) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Action_ActionParameter) ProtoMessage() {}

func (x *Action_ActionParameter) ProtoReflect() protoreflect.Message {
	mi := &file_google_apps_card_v1_card_proto_msgTypes[42]
	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 Action_ActionParameter.ProtoReflect.Descriptor instead.
func (*Action_ActionParameter) Descriptor() ([]byte, []int) {
	return file_google_apps_card_v1_card_proto_rawDescGZIP(), []int{24, 0}
}

func (x *Action_ActionParameter) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *Action_ActionParameter) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

var File_google_apps_card_v1_card_proto protoreflect.FileDescriptor

var file_google_apps_card_v1_card_proto_rawDesc = []byte{
	0x0a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x63, 0x61,
	0x72, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x12, 0x13, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61,
	0x72, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79,
	0x70, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xff,
	0x0c, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x64, 0x12, 0x3c, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65,
	0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61,
	0x72, 0x64, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x68,
	0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61,
	0x72, 0x64, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x65, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5a, 0x0a, 0x15, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
	0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x09, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70,
	0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x44,
	0x69, 0x76, 0x69, 0x64, 0x65, 0x72, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x13, 0x73, 0x65, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x72, 0x53, 0x74, 0x79, 0x6c, 0x65,
	0x12, 0x47, 0x0a, 0x0c, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x72,
	0x64, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x63, 0x61,
	0x72, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4c, 0x0a,
	0x0c, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70,
	0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x43,
	0x61, 0x72, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x46, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x52, 0x0b,
	0x66, 0x69, 0x78, 0x65, 0x64, 0x46, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x12, 0x4b, 0x0a, 0x0d, 0x64,
	0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73,
	0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x44, 0x69,
	0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x70,
	0x6c, 0x61, 0x79, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x4e, 0x0a, 0x10, 0x70, 0x65, 0x65, 0x6b,
	0x5f, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73,
	0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x43, 0x61,
	0x72, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x0e, 0x70, 0x65, 0x65, 0x6b, 0x43, 0x61,
	0x72, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x1a, 0xc7, 0x01, 0x0a, 0x0a, 0x43, 0x61, 0x72,
	0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1a, 0x0a,
	0x08, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x08, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x69, 0x6d, 0x61,
	0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64,
	0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
	0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x24, 0x0a, 0x0e,
	0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x41, 0x6c, 0x74, 0x54, 0x65,
	0x78, 0x74, 0x1a, 0x8b, 0x02, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16,
	0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
	0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x07, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74,
	0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69,
	0x64, 0x67, 0x65, 0x74, 0x52, 0x07, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x73, 0x12, 0x20, 0x0a,
	0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x70, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x70, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12,
	0x3e, 0x0a, 0x1b, 0x75, 0x6e, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x70, 0x73, 0x69, 0x62, 0x6c, 0x65,
	0x5f, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x75, 0x6e, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x70, 0x73, 0x69,
	0x62, 0x6c, 0x65, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
	0x4f, 0x0a, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e,
	0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52,
	0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x1a, 0x68, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21,
	0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x61, 0x62, 0x65,
	0x6c, 0x12, 0x37, 0x0a, 0x08, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70,
	0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x43, 0x6c, 0x69, 0x63,
	0x6b, 0x52, 0x07, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x1a, 0xdb, 0x01, 0x0a, 0x0c, 0x4e,
	0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x12, 0x4b, 0x0a, 0x0e, 0x74,
	0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70,
	0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x50, 0x61,
	0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x65, 0x78, 0x74, 0x50,
	0x61, 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x42, 0x0a, 0x0b, 0x62, 0x75, 0x74, 0x74,
	0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64,
	0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00,
	0x52, 0x0a, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x05,
	0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76,
	0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65,
	0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x9d, 0x01, 0x0a, 0x0f, 0x43, 0x61, 0x72,
	0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x46, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x0e,
	0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,
	0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f,
	0x6e, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e,
	0x12, 0x46, 0x0a, 0x10, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x62, 0x75,
	0x74, 0x74, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31,
	0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61,
	0x72, 0x79, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x22, 0x50, 0x0a, 0x0c, 0x44, 0x69, 0x76, 0x69,
	0x64, 0x65, 0x72, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x49, 0x56, 0x49,
	0x44, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x59, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
	0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x4f, 0x4c, 0x49, 0x44,
	0x5f, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x4f,
	0x5f, 0x44, 0x49, 0x56, 0x49, 0x44, 0x45, 0x52, 0x10, 0x02, 0x22, 0x44, 0x0a, 0x0c, 0x44, 0x69,
	0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x49,
	0x53, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x53, 0x54, 0x59, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50,
	0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x45, 0x45,
	0x4b, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x02,
	0x22, 0xe4, 0x08, 0x0a, 0x06, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x12, 0x4b, 0x0a, 0x0e, 0x74,
	0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70,
	0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x50, 0x61,
	0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x65, 0x78, 0x74, 0x50,
	0x61, 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d,
	0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x4b, 0x0a, 0x0e,
	0x64, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,
	0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72,
	0x61, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x64, 0x65, 0x63, 0x6f,
	0x72, 0x61, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x12, 0x42, 0x0a, 0x0b, 0x62, 0x75, 0x74,
	0x74, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72,
	0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x48,
	0x00, 0x52, 0x0a, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3f, 0x0a,
	0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e,
	0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, 0x75,
	0x74, 0x48, 0x00, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4e,
	0x0a, 0x0f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x70, 0x75,
	0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65,
	0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x0e,
	0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4f,
	0x0a, 0x10, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x69, 0x63, 0x6b,
	0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44,
	0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x48, 0x00, 0x52,
	0x0e, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x12,
	0x38, 0x0a, 0x07, 0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63,
	0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x72, 0x48, 0x00,
	0x52, 0x07, 0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x04, 0x67, 0x72, 0x69,
	0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72,
	0x69, 0x64, 0x48, 0x00, 0x52, 0x04, 0x67, 0x72, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x63, 0x6f,
	0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76,
	0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6f, 0x6c,
	0x75, 0x6d, 0x6e, 0x73, 0x12, 0x3b, 0x0a, 0x08, 0x63, 0x61, 0x72, 0x6f, 0x75, 0x73, 0x65, 0x6c,
	0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x72,
	0x6f, 0x75, 0x73, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x08, 0x63, 0x61, 0x72, 0x6f, 0x75, 0x73, 0x65,
	0x6c, 0x12, 0x3c, 0x0a, 0x09, 0x63, 0x68, 0x69, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0e,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,
	0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x69, 0x70, 0x4c,
	0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x08, 0x63, 0x68, 0x69, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12,
	0x62, 0x0a, 0x14, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x6c,
	0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64,
	0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x2e, 0x48, 0x6f, 0x72, 0x69, 0x7a,
	0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x13,
	0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x6d,
	0x65, 0x6e, 0x74, 0x22, 0x23, 0x0a, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x0a, 0x0a, 0x06, 0x53, 0x51, 0x55, 0x41, 0x52, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06,
	0x43, 0x49, 0x52, 0x43, 0x4c, 0x45, 0x10, 0x01, 0x22, 0x5b, 0x0a, 0x13, 0x48, 0x6f, 0x72, 0x69,
	0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12,
	0x24, 0x0a, 0x20, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x4f, 0x4e, 0x54, 0x41, 0x4c, 0x5f, 0x41, 0x4c,
	0x49, 0x47, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
	0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01,
	0x12, 0x0a, 0x0a, 0x06, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03,
	0x45, 0x4e, 0x44, 0x10, 0x03, 0x22, 0x58, 0x0a, 0x11, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61,
	0x6c, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x1e, 0x56, 0x45,
	0x52, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x41, 0x4c, 0x49, 0x47, 0x4e, 0x4d, 0x45, 0x4e, 0x54,
	0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07,
	0x0a, 0x03, 0x54, 0x4f, 0x50, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x49, 0x44, 0x44, 0x4c,
	0x45, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x4f, 0x54, 0x54, 0x4f, 0x4d, 0x10, 0x03, 0x42,
	0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xd3, 0x01, 0x0a, 0x0d, 0x54, 0x65, 0x78, 0x74,
	0x50, 0x61, 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78,
	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1b, 0x0a,
	0x09, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x08, 0x6d, 0x61, 0x78, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x0b, 0x74, 0x65,
	0x78, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61,
	0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x50, 0x61, 0x72, 0x61, 0x67, 0x72,
	0x61, 0x70, 0x68, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x52, 0x0a,
	0x74, 0x65, 0x78, 0x74, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x22, 0x41, 0x0a, 0x0a, 0x54, 0x65,
	0x78, 0x74, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x45, 0x58, 0x54,
	0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
	0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x4d, 0x4c, 0x10, 0x01, 0x12,
	0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x52, 0x4b, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x02, 0x22, 0x78, 0x0a,
	0x05, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f,
	0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65,
	0x55, 0x72, 0x6c, 0x12, 0x37, 0x0a, 0x08, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61,
	0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x43, 0x6c,
	0x69, 0x63, 0x6b, 0x52, 0x07, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08,
	0x61, 0x6c, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
	0x61, 0x6c, 0x74, 0x54, 0x65, 0x78, 0x74, 0x22, 0x09, 0x0a, 0x07, 0x44, 0x69, 0x76, 0x69, 0x64,
	0x65, 0x72, 0x22, 0x86, 0x09, 0x0a, 0x0d, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64,
	0x54, 0x65, 0x78, 0x74, 0x12, 0x31, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73,
	0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x63, 0x6f, 0x6e, 0x42, 0x02, 0x18,
	0x01, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74,
	0x5f, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76,
	0x31, 0x2e, 0x49, 0x63, 0x6f, 0x6e, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x63, 0x6f,
	0x6e, 0x12, 0x70, 0x0a, 0x1d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x63, 0x6f, 0x6e, 0x5f,
	0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65,
	0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57,
	0x69, 0x64, 0x67, 0x65, 0x74, 0x2e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x41, 0x6c,
	0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x1a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x63,
	0x6f, 0x6e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x6d,
	0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x4c, 0x61, 0x62, 0x65, 0x6c,
	0x12, 0x48, 0x0a, 0x0e, 0x74, 0x6f, 0x70, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x74, 0x65,
	0x78, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54,
	0x65, 0x78, 0x74, 0x50, 0x61, 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x0c, 0x74, 0x6f,
	0x70, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x54, 0x65, 0x78, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65,
	0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x45,
	0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x12,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,
	0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x50,
	0x61, 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x54, 0x65, 0x78, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x72, 0x61, 0x70, 0x5f, 0x74, 0x65,
	0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x77, 0x72, 0x61, 0x70, 0x54, 0x65,
	0x78, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62,
	0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d,
	0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x4e, 0x0a, 0x11, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x5f,
	0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63,
	0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x50, 0x61, 0x72, 0x61, 0x67,
	0x72, 0x61, 0x70, 0x68, 0x52, 0x0f, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65,
	0x6c, 0x54, 0x65, 0x78, 0x74, 0x12, 0x37, 0x0a, 0x08, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x69, 0x63,
	0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e,
	0x43, 0x6c, 0x69, 0x63, 0x6b, 0x52, 0x07, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x35,
	0x0a, 0x06, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72,
	0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x62,
	0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x0e, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64,
	0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78,
	0x74, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x48,
	0x00, 0x52, 0x0d, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x12, 0x36, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73,
	0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x63, 0x6f, 0x6e, 0x48, 0x00, 0x52,
	0x07, 0x65, 0x6e, 0x64, 0x49, 0x63, 0x6f, 0x6e, 0x1a, 0xb5, 0x02, 0x0a, 0x0d, 0x53, 0x77, 0x69,
	0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14,
	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64,
	0x12, 0x45, 0x0a, 0x10, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x61, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31,
	0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67,
	0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5f, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64,
	0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78,
	0x74, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e,
	0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x22, 0x36, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x57, 0x49, 0x54, 0x43,
	0x48, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x42, 0x4f, 0x58, 0x10,
	0x01, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x42, 0x4f, 0x58, 0x10, 0x02,
	0x42, 0x09, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x22, 0xa2, 0x04, 0x0a, 0x09,
	0x54, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a,
	0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61,
	0x62, 0x65, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x69, 0x6e, 0x74, 0x54, 0x65, 0x78, 0x74,
	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,
	0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x49,
	0x6e, 0x70, 0x75, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
	0x45, 0x0a, 0x10, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x61, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e,
	0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
	0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x51, 0x0a, 0x13, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61,
	0x6c, 0x5f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70,
	0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x12, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x75,
	0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x0a, 0x14, 0x61, 0x75, 0x74,
	0x6f, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x61, 0x75, 0x74, 0x6f, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65,
	0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e,
	0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x76,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x6c, 0x61,
	0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0c, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72,
	0x54, 0x65, 0x78, 0x74, 0x22, 0x2a, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b,
	0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x11, 0x0a,
	0x0d, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x50, 0x4c, 0x45, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x01,
	0x22, 0x87, 0x01, 0x0a, 0x0b, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x12, 0x45, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61,
	0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e,
	0x73, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d,
	0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x31, 0x0a, 0x0e, 0x53, 0x75, 0x67, 0x67, 0x65,
	0x73, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x04, 0x74, 0x65, 0x78,
	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x42,
	0x09, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x43, 0x0a, 0x0a, 0x42, 0x75,
	0x74, 0x74, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x07, 0x62, 0x75, 0x74, 0x74,
	0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e,
	0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x52, 0x07, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x22,
	0xf2, 0x08, 0x0a, 0x0e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70,
	0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x45, 0x0a, 0x04,
	0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31,
	0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e,
	0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74,
	0x79, 0x70, 0x65, 0x12, 0x47, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73,
	0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x45, 0x0a, 0x10,
	0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x1f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x73, 0x65, 0x6c,
	0x65, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64,
	0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x1b,
	0x6d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x78, 0x53, 0x65,
	0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x40,
	0x0a, 0x1d, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x6d,
	0x69, 0x6e, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x65, 0x6c, 0x65,
	0x63, 0x74, 0x4d, 0x69, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68,
	0x12, 0x4f, 0x0a, 0x14, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74,
	0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72,
	0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x12, 0x65,
	0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63,
	0x65, 0x12, 0x6a, 0x0a, 0x14, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x64, 0x61,
	0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61,
	0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49,
	0x6e, 0x70, 0x75, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x44, 0x61, 0x74,
	0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x12, 0x70, 0x6c, 0x61, 0x74, 0x66,
	0x6f, 0x72, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0xac, 0x01,
	0x0a, 0x0d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12,
	0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74,
	0x65, 0x78, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6c,
	0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x65, 0x6c,
	0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69,
	0x63, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
	0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x63, 0x6f, 0x6e, 0x55, 0x72, 0x69, 0x12, 0x1f, 0x0a,
	0x0b, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0a, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x54, 0x65, 0x78, 0x74, 0x42, 0x0c,
	0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x63, 0x6f, 0x6e, 0x1a, 0xc7, 0x01, 0x0a,
	0x12, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75,
	0x72, 0x63, 0x65, 0x12, 0x77, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x64, 0x61,
	0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61,
	0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49,
	0x6e, 0x70, 0x75, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x44, 0x61, 0x74,
	0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x44, 0x61,
	0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x6d,
	0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x29, 0x0a, 0x10,
	0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
	0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a,
	0x04, 0x55, 0x53, 0x45, 0x52, 0x10, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f,
	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x5c, 0x0a, 0x0d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x48, 0x45, 0x43, 0x4b,
	0x5f, 0x42, 0x4f, 0x58, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x41, 0x44, 0x49, 0x4f, 0x5f,
	0x42, 0x55, 0x54, 0x54, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x57, 0x49, 0x54,
	0x43, 0x48, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x52, 0x4f, 0x50, 0x44, 0x4f, 0x57, 0x4e,
	0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x53, 0x45, 0x4c, 0x45,
	0x43, 0x54, 0x10, 0x04, 0x42, 0x1a, 0x0a, 0x18, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x73, 0x65,
	0x6c, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
	0x42, 0x22, 0x0a, 0x20, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63,
	0x74, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x69,
	0x74, 0x65, 0x6d, 0x73, 0x22, 0x84, 0x03, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d,
	0x65, 0x50, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c,
	0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65,
	0x6c, 0x12, 0x4a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61,
	0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x69,
	0x63, 0x6b, 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x69, 0x63,
	0x6b, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a,
	0x0e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6d, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x73,
	0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x69, 0x6d, 0x65,
	0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65,
	0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x45, 0x0a, 0x10, 0x6f, 0x6e,
	0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,
	0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x52, 0x0e, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x22, 0x45, 0x0a, 0x12, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x69, 0x63,
	0x6b, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x44, 0x41, 0x54, 0x45, 0x5f,
	0x41, 0x4e, 0x44, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x41,
	0x54, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x49, 0x4d,
	0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x5f, 0x6d, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x90, 0x02, 0x0a, 0x0c,
	0x4f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x6e, 0x75, 0x12, 0x48, 0x0a, 0x05,
	0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76,
	0x31, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x6e, 0x75, 0x2e, 0x4f,
	0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x6e, 0x75, 0x49, 0x74, 0x65, 0x6d, 0x52,
	0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0xb5, 0x01, 0x0a, 0x10, 0x4f, 0x76, 0x65, 0x72, 0x66,
	0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x6e, 0x75, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x38, 0x0a, 0x0a, 0x73,
	0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61,
	0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x63, 0x6f, 0x6e, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72,
	0x74, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x37, 0x0a, 0x08, 0x6f, 0x6e, 0x5f,
	0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76,
	0x31, 0x2e, 0x4f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x52, 0x07, 0x6f, 0x6e, 0x43, 0x6c, 0x69,
	0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xf5,
	0x02, 0x0a, 0x06, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78,
	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2d, 0x0a,
	0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76,
	0x31, 0x2e, 0x49, 0x63, 0x6f, 0x6e, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x05,
	0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52,
	0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x37, 0x0a, 0x08, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x69,
	0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f,
	0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x52, 0x07, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12,
	0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61,
	0x6c, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61,
	0x6c, 0x74, 0x54, 0x65, 0x78, 0x74, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,
	0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f,
	0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x58, 0x0a, 0x04,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53,
	0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x55,
	0x54, 0x4c, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x49, 0x4c, 0x4c,
	0x45, 0x44, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x5f, 0x54,
	0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x4f, 0x52, 0x44, 0x45, 0x52,
	0x4c, 0x45, 0x53, 0x53, 0x10, 0x04, 0x22, 0xf8, 0x01, 0x0a, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x12,
	0x1f, 0x0a, 0x0a, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x49, 0x63, 0x6f, 0x6e,
	0x12, 0x1b, 0x0a, 0x08, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x69, 0x63, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x48, 0x0a,
	0x0d, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,
	0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x74, 0x65, 0x72,
	0x69, 0x61, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x6d, 0x61, 0x74, 0x65, 0x72,
	0x69, 0x61, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x6c, 0x74, 0x5f, 0x74,
	0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x74, 0x54, 0x65,
	0x78, 0x74, 0x12, 0x44, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x64,
	0x67, 0x65, 0x74, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x69,
	0x6d, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x69, 0x63, 0x6f, 0x6e,
	0x73, 0x22, 0x64, 0x0a, 0x0c, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x63, 0x6f,
	0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x6c, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68,
	0x74, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x22, 0xed, 0x01, 0x0a, 0x0e, 0x49, 0x6d, 0x61, 0x67,
	0x65, 0x43, 0x72, 0x6f, 0x70, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x45, 0x0a, 0x04, 0x74, 0x79,
	0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x49,
	0x6d, 0x61, 0x67, 0x65, 0x43, 0x72, 0x6f, 0x70, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x2e, 0x49, 0x6d,
	0x61, 0x67, 0x65, 0x43, 0x72, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70,
	0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52,
	0x61, 0x74, 0x69, 0x6f, 0x22, 0x71, 0x0a, 0x0d, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x72, 0x6f,
	0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x43,
	0x52, 0x4f, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
	0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x51, 0x55, 0x41, 0x52, 0x45,
	0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x49, 0x52, 0x43, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x14,
	0x0a, 0x10, 0x52, 0x45, 0x43, 0x54, 0x41, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54,
	0x4f, 0x4d, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x43, 0x54, 0x41, 0x4e, 0x47, 0x4c,
	0x45, 0x5f, 0x34, 0x5f, 0x33, 0x10, 0x04, 0x22, 0xf0, 0x01, 0x0a, 0x0b, 0x42, 0x6f, 0x72, 0x64,
	0x65, 0x72, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61,
	0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x72, 0x64,
	0x65, 0x72, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79,
	0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x6f,
	0x6b, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x6f, 0x6c,
	0x6f, 0x72, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12,
	0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x72, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x6f, 0x72, 0x6e, 0x65, 0x72, 0x52, 0x61,
	0x64, 0x69, 0x75, 0x73, 0x22, 0x44, 0x0a, 0x0a, 0x42, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79,
	0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50,
	0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
	0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x42, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0a,
	0x0a, 0x06, 0x53, 0x54, 0x52, 0x4f, 0x4b, 0x45, 0x10, 0x02, 0x22, 0xd1, 0x01, 0x0a, 0x0e, 0x49,
	0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a,
	0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x69, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x6c,
	0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c,
	0x74, 0x54, 0x65, 0x78, 0x74, 0x12, 0x42, 0x0a, 0x0a, 0x63, 0x72, 0x6f, 0x70, 0x5f, 0x73, 0x74,
	0x79, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e,
	0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x72, 0x6f, 0x70, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x09,
	0x63, 0x72, 0x6f, 0x70, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x43, 0x0a, 0x0c, 0x62, 0x6f, 0x72,
	0x64, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61,
	0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x79, 0x6c,
	0x65, 0x52, 0x0b, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x22, 0xa0,
	0x04, 0x0a, 0x04, 0x47, 0x72, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x38, 0x0a,
	0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e,
	0x76, 0x31, 0x2e, 0x47, 0x72, 0x69, 0x64, 0x2e, 0x47, 0x72, 0x69, 0x64, 0x49, 0x74, 0x65, 0x6d,
	0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x43, 0x0a, 0x0c, 0x62, 0x6f, 0x72, 0x64, 0x65,
	0x72, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64,
	0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52,
	0x0b, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c,
	0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
	0x37, 0x0a, 0x08, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e,
	0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x52,
	0x07, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x1a, 0xa6, 0x02, 0x0a, 0x08, 0x47, 0x72, 0x69,
	0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,
	0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
	0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65,
	0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74,
	0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74,
	0x6c, 0x65, 0x12, 0x49, 0x0a, 0x06, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73,
	0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x69, 0x64, 0x2e, 0x47, 0x72,
	0x69, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x47, 0x72, 0x69, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x4c,
	0x61, 0x79, 0x6f, 0x75, 0x74, 0x52, 0x06, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x22, 0x52, 0x0a,
	0x0e, 0x47, 0x72, 0x69, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12,
	0x20, 0x0a, 0x1c, 0x47, 0x52, 0x49, 0x44, 0x5f, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x4c, 0x41, 0x59,
	0x4f, 0x55, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
	0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x42, 0x45, 0x4c, 0x4f, 0x57, 0x10,
	0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x41, 0x42, 0x4f, 0x56, 0x45, 0x10,
	0x02, 0x22, 0xea, 0x09, 0x0a, 0x07, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x46, 0x0a,
	0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70,
	0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
	0x73, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
	0x49, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x96, 0x09, 0x0a, 0x06, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
	0x12, 0x6b, 0x0a, 0x15, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x5f, 0x73,
	0x69, 0x7a, 0x65, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61,
	0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x2e, 0x43, 0x6f,
	0x6c, 0x75, 0x6d, 0x6e, 0x2e, 0x48, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x53,
	0x69, 0x7a, 0x65, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x13, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f,
	0x6e, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x62, 0x0a,
	0x14, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x6c, 0x69, 0x67,
	0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76,
	0x31, 0x2e, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x2e, 0x48, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e,
	0x74, 0x61, 0x6c, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x13, 0x68, 0x6f,
	0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e,
	0x74, 0x12, 0x64, 0x0a, 0x12, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x6c,
	0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64,
	0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x2e, 0x43, 0x6f, 0x6c, 0x75,
	0x6d, 0x6e, 0x2e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x41, 0x6c, 0x69, 0x67, 0x6e,
	0x6d, 0x65, 0x6e, 0x74, 0x52, 0x11, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x41, 0x6c,
	0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x07, 0x77, 0x69, 0x64, 0x67, 0x65,
	0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43,
	0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x2e, 0x57, 0x69,
	0x64, 0x67, 0x65, 0x74, 0x73, 0x52, 0x07, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x73, 0x1a, 0xc3,
	0x04, 0x0a, 0x07, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x0e, 0x74, 0x65,
	0x78, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73,
	0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x50, 0x61, 0x72,
	0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x65, 0x78, 0x74, 0x50, 0x61,
	0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x61,
	0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x4b, 0x0a, 0x0e, 0x64,
	0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70,
	0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61,
	0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x64, 0x65, 0x63, 0x6f, 0x72,
	0x61, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x12, 0x42, 0x0a, 0x0b, 0x62, 0x75, 0x74, 0x74,
	0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64,
	0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00,
	0x52, 0x0a, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x0a,
	0x74, 0x65, 0x78, 0x74, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63,
	0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74,
	0x48, 0x00, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4e, 0x0a,
	0x0f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6c,
	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x73,
	0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4f, 0x0a,
	0x10, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x65,
	0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61,
	0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0e,
	0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x3c,
	0x0a, 0x09, 0x63, 0x68, 0x69, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e,
	0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x69, 0x70, 0x4c, 0x69, 0x73, 0x74,
	0x48, 0x00, 0x52, 0x08, 0x63, 0x68, 0x69, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x06, 0x0a, 0x04,
	0x64, 0x61, 0x74, 0x61, 0x22, 0x6e, 0x0a, 0x13, 0x48, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74,
	0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x21, 0x48,
	0x4f, 0x52, 0x49, 0x5a, 0x4f, 0x4e, 0x54, 0x41, 0x4c, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x53,
	0x54, 0x59, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
	0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x49, 0x4c, 0x4c, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c,
	0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12,
	0x46, 0x49, 0x4c, 0x4c, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x53, 0x50, 0x41,
	0x43, 0x45, 0x10, 0x02, 0x22, 0x58, 0x0a, 0x11, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c,
	0x41, 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x1e, 0x56, 0x45, 0x52,
	0x54, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x41, 0x4c, 0x49, 0x47, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f,
	0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a,
	0x06, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x4f, 0x50,
	0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x4f, 0x54, 0x54, 0x4f, 0x4d, 0x10, 0x03, 0x22, 0xff,
	0x01, 0x0a, 0x08, 0x43, 0x61, 0x72, 0x6f, 0x75, 0x73, 0x65, 0x6c, 0x12, 0x51, 0x0a, 0x0e, 0x63,
	0x61, 0x72, 0x6f, 0x75, 0x73, 0x65, 0x6c, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70,
	0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x72, 0x6f, 0x75, 0x73,
	0x65, 0x6c, 0x2e, 0x43, 0x61, 0x72, 0x6f, 0x75, 0x73, 0x65, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x52,
	0x0d, 0x63, 0x61, 0x72, 0x6f, 0x75, 0x73, 0x65, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x1a, 0x9f,
	0x01, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x6f, 0x75, 0x73, 0x65, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x12,
	0x40, 0x0a, 0x07, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63,
	0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x4e, 0x65, 0x73, 0x74,
	0x65, 0x64, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x52, 0x07, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74,
	0x73, 0x12, 0x4d, 0x0a, 0x0e, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x5f, 0x77, 0x69, 0x64, 0x67,
	0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e,
	0x43, 0x61, 0x72, 0x64, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x64, 0x67, 0x65,
	0x74, 0x52, 0x0d, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x73,
	0x22, 0xfd, 0x01, 0x0a, 0x0f, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x43, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x12, 0x62, 0x0a, 0x14, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74,
	0x61, 0x6c, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73,
	0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x2e,
	0x48, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x6d,
	0x65, 0x6e, 0x74, 0x52, 0x13, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x41,
	0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x61,
	0x6e, 0x64, 0x5f, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61,
	0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x52, 0x0c, 0x65, 0x78,
	0x70, 0x61, 0x6e, 0x64, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x0f, 0x63, 0x6f,
	0x6c, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x5f, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70,
	0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e,
	0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e,
	0x22, 0xd9, 0x02, 0x0a, 0x07, 0x4f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x35, 0x0a, 0x06,
	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e,
	0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x61, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6c, 0x69, 0x6e, 0x6b,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65,
	0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x48, 0x00, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x4c, 0x69, 0x6e,
	0x6b, 0x12, 0x56, 0x0a, 0x18, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69,
	0x63, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70,
	0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x48, 0x00, 0x52, 0x15, 0x6f, 0x70, 0x65, 0x6e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4c,
	0x69, 0x6e, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x04, 0x63, 0x61, 0x72,
	0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61,
	0x72, 0x64, 0x48, 0x00, 0x52, 0x04, 0x63, 0x61, 0x72, 0x64, 0x12, 0x48, 0x0a, 0x0d, 0x6f, 0x76,
	0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x65, 0x6e, 0x75, 0x18, 0x08, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e,
	0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77,
	0x4d, 0x65, 0x6e, 0x75, 0x48, 0x00, 0x52, 0x0c, 0x6f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77,
	0x4d, 0x65, 0x6e, 0x75, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe7, 0x01, 0x0a,
	0x08, 0x4f, 0x70, 0x65, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x3d, 0x0a, 0x07, 0x6f,
	0x70, 0x65, 0x6e, 0x5f, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e,
	0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x2e, 0x4f, 0x70, 0x65, 0x6e,
	0x41, 0x73, 0x52, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x41, 0x73, 0x12, 0x40, 0x0a, 0x08, 0x6f, 0x6e,
	0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e,
	0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x2e, 0x4f, 0x6e, 0x43, 0x6c,
	0x6f, 0x73, 0x65, 0x52, 0x07, 0x6f, 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x22, 0x24, 0x0a, 0x06,
	0x4f, 0x70, 0x65, 0x6e, 0x41, 0x73, 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x55, 0x4c, 0x4c, 0x5f, 0x53,
	0x49, 0x5a, 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x56, 0x45, 0x52, 0x4c, 0x41, 0x59,
	0x10, 0x01, 0x22, 0x22, 0x0a, 0x07, 0x4f, 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x12, 0x0b, 0x0a,
	0x07, 0x4e, 0x4f, 0x54, 0x48, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45,
	0x4c, 0x4f, 0x41, 0x44, 0x10, 0x01, 0x22, 0xb9, 0x04, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a,
	0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e,
	0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x0a,
	0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x50, 0x0a, 0x0e, 0x6c, 0x6f,
	0x61, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73,
	0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
	0x4c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0d, 0x6c,
	0x6f, 0x61, 0x64, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0e,
	0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c,
	0x75, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29,
	0x0a, 0x10, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x77, 0x69, 0x64, 0x67, 0x65,
	0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72,
	0x65, 0x64, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x61, 0x6c, 0x6c,
	0x5f, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x73, 0x5f, 0x61, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x71,
	0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x61, 0x6c, 0x6c,
	0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x73, 0x41, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72,
	0x65, 0x64, 0x1a, 0x39, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61,
	0x6d, 0x65, 0x74, 0x65, 0x72, 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, 0x22, 0x26, 0x0a,
	0x0d, 0x4c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x0b,
	0x0a, 0x07, 0x53, 0x50, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4e,
	0x4f, 0x4e, 0x45, 0x10, 0x01, 0x22, 0x3b, 0x0a, 0x0b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x41, 0x43, 0x54,
	0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
	0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x45, 0x4e, 0x5f, 0x44, 0x49, 0x41, 0x4c, 0x4f, 0x47,
	0x10, 0x01, 0x22, 0xe7, 0x01, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x5f, 0x6c,
	0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x68, 0x61, 0x72,
	0x61, 0x63, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x48, 0x0a, 0x0a, 0x69, 0x6e,
	0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72,
	0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
	0x49, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74,
	0x54, 0x79, 0x70, 0x65, 0x22, 0x66, 0x0a, 0x09, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
	0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a,
	0x04, 0x54, 0x45, 0x58, 0x54, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x54, 0x45, 0x47,
	0x45, 0x52, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x10, 0x03, 0x12,
	0x09, 0x0a, 0x05, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x4d,
	0x4f, 0x4a, 0x49, 0x5f, 0x50, 0x49, 0x43, 0x4b, 0x45, 0x52, 0x10, 0x05, 0x22, 0xc3, 0x01, 0x0a,
	0x08, 0x43, 0x68, 0x69, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x06, 0x6c, 0x61, 0x79,
	0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e,
	0x43, 0x68, 0x69, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x52,
	0x06, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x2f, 0x0a, 0x05, 0x63, 0x68, 0x69, 0x70, 0x73,
	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x69,
	0x70, 0x52, 0x05, 0x63, 0x68, 0x69, 0x70, 0x73, 0x22, 0x48, 0x0a, 0x06, 0x4c, 0x61, 0x79, 0x6f,
	0x75, 0x74, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x55, 0x4e, 0x53,
	0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x52,
	0x41, 0x50, 0x50, 0x45, 0x44, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x48, 0x4f, 0x52, 0x49, 0x5a,
	0x4f, 0x4e, 0x54, 0x41, 0x4c, 0x5f, 0x53, 0x43, 0x52, 0x4f, 0x4c, 0x4c, 0x41, 0x42, 0x4c, 0x45,
	0x10, 0x02, 0x22, 0xd9, 0x01, 0x0a, 0x04, 0x43, 0x68, 0x69, 0x70, 0x12, 0x2d, 0x0a, 0x04, 0x69,
	0x63, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e,
	0x49, 0x63, 0x6f, 0x6e, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61,
	0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c,
	0x12, 0x37, 0x0a, 0x08, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x73,
	0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b,
	0x52, 0x07, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x07, 0x65, 0x6e, 0x61,
	0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07,
	0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62,
	0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62,
	0x6c, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x6c, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x74, 0x54, 0x65, 0x78, 0x74, 0x42, 0xa4,
	0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,
	0x70, 0x73, 0x2e, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x31, 0x42, 0x09, 0x43, 0x61, 0x72, 0x64,
	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x37, 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, 0x61,
	0x70, 0x70, 0x73, 0x2f, 0x63, 0x61, 0x72, 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x61, 0x72, 0x64,
	0xaa, 0x02, 0x13, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x73, 0x2e, 0x43,
	0x61, 0x72, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c,
	0x41, 0x70, 0x70, 0x73, 0x5c, 0x43, 0x61, 0x72, 0x64, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x16, 0x47,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x41, 0x70, 0x70, 0x73, 0x3a, 0x3a, 0x43, 0x61, 0x72,
	0x64, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_google_apps_card_v1_card_proto_rawDescOnce sync.Once
	file_google_apps_card_v1_card_proto_rawDescData = file_google_apps_card_v1_card_proto_rawDesc
)

func file_google_apps_card_v1_card_proto_rawDescGZIP() []byte {
	file_google_apps_card_v1_card_proto_rawDescOnce.Do(func() {
		file_google_apps_card_v1_card_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_apps_card_v1_card_proto_rawDescData)
	})
	return file_google_apps_card_v1_card_proto_rawDescData
}

var file_google_apps_card_v1_card_proto_enumTypes = make([]protoimpl.EnumInfo, 23)
var file_google_apps_card_v1_card_proto_msgTypes = make([]protoimpl.MessageInfo, 43)
var file_google_apps_card_v1_card_proto_goTypes = []interface{}{
	(Card_DividerStyle)(0),                                  // 0: google.apps.card.v1.Card.DividerStyle
	(Card_DisplayStyle)(0),                                  // 1: google.apps.card.v1.Card.DisplayStyle
	(Widget_ImageType)(0),                                   // 2: google.apps.card.v1.Widget.ImageType
	(Widget_HorizontalAlignment)(0),                         // 3: google.apps.card.v1.Widget.HorizontalAlignment
	(Widget_VerticalAlignment)(0),                           // 4: google.apps.card.v1.Widget.VerticalAlignment
	(TextParagraph_TextSyntax)(0),                           // 5: google.apps.card.v1.TextParagraph.TextSyntax
	(DecoratedText_SwitchControl_ControlType)(0),            // 6: google.apps.card.v1.DecoratedText.SwitchControl.ControlType
	(TextInput_Type)(0),                                     // 7: google.apps.card.v1.TextInput.Type
	(SelectionInput_SelectionType)(0),                       // 8: google.apps.card.v1.SelectionInput.SelectionType
	(SelectionInput_PlatformDataSource_CommonDataSource)(0), // 9: google.apps.card.v1.SelectionInput.PlatformDataSource.CommonDataSource
	(DateTimePicker_DateTimePickerType)(0),                  // 10: google.apps.card.v1.DateTimePicker.DateTimePickerType
	(Button_Type)(0),                                        // 11: google.apps.card.v1.Button.Type
	(ImageCropStyle_ImageCropType)(0),                       // 12: google.apps.card.v1.ImageCropStyle.ImageCropType
	(BorderStyle_BorderType)(0),                             // 13: google.apps.card.v1.BorderStyle.BorderType
	(Grid_GridItem_GridItemLayout)(0),                       // 14: google.apps.card.v1.Grid.GridItem.GridItemLayout
	(Columns_Column_HorizontalSizeStyle)(0),                 // 15: google.apps.card.v1.Columns.Column.HorizontalSizeStyle
	(Columns_Column_VerticalAlignment)(0),                   // 16: google.apps.card.v1.Columns.Column.VerticalAlignment
	(OpenLink_OpenAs)(0),                                    // 17: google.apps.card.v1.OpenLink.OpenAs
	(OpenLink_OnClose)(0),                                   // 18: google.apps.card.v1.OpenLink.OnClose
	(Action_LoadIndicator)(0),                               // 19: google.apps.card.v1.Action.LoadIndicator
	(Action_Interaction)(0),                                 // 20: google.apps.card.v1.Action.Interaction
	(Validation_InputType)(0),                               // 21: google.apps.card.v1.Validation.InputType
	(ChipList_Layout)(0),                                    // 22: google.apps.card.v1.ChipList.Layout
	(*Card)(nil),                                            // 23: google.apps.card.v1.Card
	(*Widget)(nil),                                          // 24: google.apps.card.v1.Widget
	(*TextParagraph)(nil),                                   // 25: google.apps.card.v1.TextParagraph
	(*Image)(nil),                                           // 26: google.apps.card.v1.Image
	(*Divider)(nil),                                         // 27: google.apps.card.v1.Divider
	(*DecoratedText)(nil),                                   // 28: google.apps.card.v1.DecoratedText
	(*TextInput)(nil),                                       // 29: google.apps.card.v1.TextInput
	(*Suggestions)(nil),                                     // 30: google.apps.card.v1.Suggestions
	(*ButtonList)(nil),                                      // 31: google.apps.card.v1.ButtonList
	(*SelectionInput)(nil),                                  // 32: google.apps.card.v1.SelectionInput
	(*DateTimePicker)(nil),                                  // 33: google.apps.card.v1.DateTimePicker
	(*OverflowMenu)(nil),                                    // 34: google.apps.card.v1.OverflowMenu
	(*Button)(nil),                                          // 35: google.apps.card.v1.Button
	(*Icon)(nil),                                            // 36: google.apps.card.v1.Icon
	(*MaterialIcon)(nil),                                    // 37: google.apps.card.v1.MaterialIcon
	(*ImageCropStyle)(nil),                                  // 38: google.apps.card.v1.ImageCropStyle
	(*BorderStyle)(nil),                                     // 39: google.apps.card.v1.BorderStyle
	(*ImageComponent)(nil),                                  // 40: google.apps.card.v1.ImageComponent
	(*Grid)(nil),                                            // 41: google.apps.card.v1.Grid
	(*Columns)(nil),                                         // 42: google.apps.card.v1.Columns
	(*Carousel)(nil),                                        // 43: google.apps.card.v1.Carousel
	(*CollapseControl)(nil),                                 // 44: google.apps.card.v1.CollapseControl
	(*OnClick)(nil),                                         // 45: google.apps.card.v1.OnClick
	(*OpenLink)(nil),                                        // 46: google.apps.card.v1.OpenLink
	(*Action)(nil),                                          // 47: google.apps.card.v1.Action
	(*Validation)(nil),                                      // 48: google.apps.card.v1.Validation
	(*ChipList)(nil),                                        // 49: google.apps.card.v1.ChipList
	(*Chip)(nil),                                            // 50: google.apps.card.v1.Chip
	(*Card_CardHeader)(nil),                                 // 51: google.apps.card.v1.Card.CardHeader
	(*Card_Section)(nil),                                    // 52: google.apps.card.v1.Card.Section
	(*Card_CardAction)(nil),                                 // 53: google.apps.card.v1.Card.CardAction
	(*Card_NestedWidget)(nil),                               // 54: google.apps.card.v1.Card.NestedWidget
	(*Card_CardFixedFooter)(nil),                            // 55: google.apps.card.v1.Card.CardFixedFooter
	(*DecoratedText_SwitchControl)(nil),                     // 56: google.apps.card.v1.DecoratedText.SwitchControl
	(*Suggestions_SuggestionItem)(nil),                      // 57: google.apps.card.v1.Suggestions.SuggestionItem
	(*SelectionInput_SelectionItem)(nil),                    // 58: google.apps.card.v1.SelectionInput.SelectionItem
	(*SelectionInput_PlatformDataSource)(nil),               // 59: google.apps.card.v1.SelectionInput.PlatformDataSource
	(*OverflowMenu_OverflowMenuItem)(nil),                   // 60: google.apps.card.v1.OverflowMenu.OverflowMenuItem
	(*Grid_GridItem)(nil),                                   // 61: google.apps.card.v1.Grid.GridItem
	(*Columns_Column)(nil),                                  // 62: google.apps.card.v1.Columns.Column
	(*Columns_Column_Widgets)(nil),                          // 63: google.apps.card.v1.Columns.Column.Widgets
	(*Carousel_CarouselCard)(nil),                           // 64: google.apps.card.v1.Carousel.CarouselCard
	(*Action_ActionParameter)(nil),                          // 65: google.apps.card.v1.Action.ActionParameter
	(*color.Color)(nil),                                     // 66: google.type.Color
}
var file_google_apps_card_v1_card_proto_depIdxs = []int32{
	51,  // 0: google.apps.card.v1.Card.header:type_name -> google.apps.card.v1.Card.CardHeader
	52,  // 1: google.apps.card.v1.Card.sections:type_name -> google.apps.card.v1.Card.Section
	0,   // 2: google.apps.card.v1.Card.section_divider_style:type_name -> google.apps.card.v1.Card.DividerStyle
	53,  // 3: google.apps.card.v1.Card.card_actions:type_name -> google.apps.card.v1.Card.CardAction
	55,  // 4: google.apps.card.v1.Card.fixed_footer:type_name -> google.apps.card.v1.Card.CardFixedFooter
	1,   // 5: google.apps.card.v1.Card.display_style:type_name -> google.apps.card.v1.Card.DisplayStyle
	51,  // 6: google.apps.card.v1.Card.peek_card_header:type_name -> google.apps.card.v1.Card.CardHeader
	25,  // 7: google.apps.card.v1.Widget.text_paragraph:type_name -> google.apps.card.v1.TextParagraph
	26,  // 8: google.apps.card.v1.Widget.image:type_name -> google.apps.card.v1.Image
	28,  // 9: google.apps.card.v1.Widget.decorated_text:type_name -> google.apps.card.v1.DecoratedText
	31,  // 10: google.apps.card.v1.Widget.button_list:type_name -> google.apps.card.v1.ButtonList
	29,  // 11: google.apps.card.v1.Widget.text_input:type_name -> google.apps.card.v1.TextInput
	32,  // 12: google.apps.card.v1.Widget.selection_input:type_name -> google.apps.card.v1.SelectionInput
	33,  // 13: google.apps.card.v1.Widget.date_time_picker:type_name -> google.apps.card.v1.DateTimePicker
	27,  // 14: google.apps.card.v1.Widget.divider:type_name -> google.apps.card.v1.Divider
	41,  // 15: google.apps.card.v1.Widget.grid:type_name -> google.apps.card.v1.Grid
	42,  // 16: google.apps.card.v1.Widget.columns:type_name -> google.apps.card.v1.Columns
	43,  // 17: google.apps.card.v1.Widget.carousel:type_name -> google.apps.card.v1.Carousel
	49,  // 18: google.apps.card.v1.Widget.chip_list:type_name -> google.apps.card.v1.ChipList
	3,   // 19: google.apps.card.v1.Widget.horizontal_alignment:type_name -> google.apps.card.v1.Widget.HorizontalAlignment
	5,   // 20: google.apps.card.v1.TextParagraph.text_syntax:type_name -> google.apps.card.v1.TextParagraph.TextSyntax
	45,  // 21: google.apps.card.v1.Image.on_click:type_name -> google.apps.card.v1.OnClick
	36,  // 22: google.apps.card.v1.DecoratedText.icon:type_name -> google.apps.card.v1.Icon
	36,  // 23: google.apps.card.v1.DecoratedText.start_icon:type_name -> google.apps.card.v1.Icon
	4,   // 24: google.apps.card.v1.DecoratedText.start_icon_vertical_alignment:type_name -> google.apps.card.v1.Widget.VerticalAlignment
	25,  // 25: google.apps.card.v1.DecoratedText.top_label_text:type_name -> google.apps.card.v1.TextParagraph
	25,  // 26: google.apps.card.v1.DecoratedText.content_text:type_name -> google.apps.card.v1.TextParagraph
	25,  // 27: google.apps.card.v1.DecoratedText.bottom_label_text:type_name -> google.apps.card.v1.TextParagraph
	45,  // 28: google.apps.card.v1.DecoratedText.on_click:type_name -> google.apps.card.v1.OnClick
	35,  // 29: google.apps.card.v1.DecoratedText.button:type_name -> google.apps.card.v1.Button
	56,  // 30: google.apps.card.v1.DecoratedText.switch_control:type_name -> google.apps.card.v1.DecoratedText.SwitchControl
	36,  // 31: google.apps.card.v1.DecoratedText.end_icon:type_name -> google.apps.card.v1.Icon
	7,   // 32: google.apps.card.v1.TextInput.type:type_name -> google.apps.card.v1.TextInput.Type
	47,  // 33: google.apps.card.v1.TextInput.on_change_action:type_name -> google.apps.card.v1.Action
	30,  // 34: google.apps.card.v1.TextInput.initial_suggestions:type_name -> google.apps.card.v1.Suggestions
	47,  // 35: google.apps.card.v1.TextInput.auto_complete_action:type_name -> google.apps.card.v1.Action
	48,  // 36: google.apps.card.v1.TextInput.validation:type_name -> google.apps.card.v1.Validation
	57,  // 37: google.apps.card.v1.Suggestions.items:type_name -> google.apps.card.v1.Suggestions.SuggestionItem
	35,  // 38: google.apps.card.v1.ButtonList.buttons:type_name -> google.apps.card.v1.Button
	8,   // 39: google.apps.card.v1.SelectionInput.type:type_name -> google.apps.card.v1.SelectionInput.SelectionType
	58,  // 40: google.apps.card.v1.SelectionInput.items:type_name -> google.apps.card.v1.SelectionInput.SelectionItem
	47,  // 41: google.apps.card.v1.SelectionInput.on_change_action:type_name -> google.apps.card.v1.Action
	47,  // 42: google.apps.card.v1.SelectionInput.external_data_source:type_name -> google.apps.card.v1.Action
	59,  // 43: google.apps.card.v1.SelectionInput.platform_data_source:type_name -> google.apps.card.v1.SelectionInput.PlatformDataSource
	10,  // 44: google.apps.card.v1.DateTimePicker.type:type_name -> google.apps.card.v1.DateTimePicker.DateTimePickerType
	47,  // 45: google.apps.card.v1.DateTimePicker.on_change_action:type_name -> google.apps.card.v1.Action
	60,  // 46: google.apps.card.v1.OverflowMenu.items:type_name -> google.apps.card.v1.OverflowMenu.OverflowMenuItem
	36,  // 47: google.apps.card.v1.Button.icon:type_name -> google.apps.card.v1.Icon
	66,  // 48: google.apps.card.v1.Button.color:type_name -> google.type.Color
	45,  // 49: google.apps.card.v1.Button.on_click:type_name -> google.apps.card.v1.OnClick
	11,  // 50: google.apps.card.v1.Button.type:type_name -> google.apps.card.v1.Button.Type
	37,  // 51: google.apps.card.v1.Icon.material_icon:type_name -> google.apps.card.v1.MaterialIcon
	2,   // 52: google.apps.card.v1.Icon.image_type:type_name -> google.apps.card.v1.Widget.ImageType
	12,  // 53: google.apps.card.v1.ImageCropStyle.type:type_name -> google.apps.card.v1.ImageCropStyle.ImageCropType
	13,  // 54: google.apps.card.v1.BorderStyle.type:type_name -> google.apps.card.v1.BorderStyle.BorderType
	66,  // 55: google.apps.card.v1.BorderStyle.stroke_color:type_name -> google.type.Color
	38,  // 56: google.apps.card.v1.ImageComponent.crop_style:type_name -> google.apps.card.v1.ImageCropStyle
	39,  // 57: google.apps.card.v1.ImageComponent.border_style:type_name -> google.apps.card.v1.BorderStyle
	61,  // 58: google.apps.card.v1.Grid.items:type_name -> google.apps.card.v1.Grid.GridItem
	39,  // 59: google.apps.card.v1.Grid.border_style:type_name -> google.apps.card.v1.BorderStyle
	45,  // 60: google.apps.card.v1.Grid.on_click:type_name -> google.apps.card.v1.OnClick
	62,  // 61: google.apps.card.v1.Columns.column_items:type_name -> google.apps.card.v1.Columns.Column
	64,  // 62: google.apps.card.v1.Carousel.carousel_cards:type_name -> google.apps.card.v1.Carousel.CarouselCard
	3,   // 63: google.apps.card.v1.CollapseControl.horizontal_alignment:type_name -> google.apps.card.v1.Widget.HorizontalAlignment
	35,  // 64: google.apps.card.v1.CollapseControl.expand_button:type_name -> google.apps.card.v1.Button
	35,  // 65: google.apps.card.v1.CollapseControl.collapse_button:type_name -> google.apps.card.v1.Button
	47,  // 66: google.apps.card.v1.OnClick.action:type_name -> google.apps.card.v1.Action
	46,  // 67: google.apps.card.v1.OnClick.open_link:type_name -> google.apps.card.v1.OpenLink
	47,  // 68: google.apps.card.v1.OnClick.open_dynamic_link_action:type_name -> google.apps.card.v1.Action
	23,  // 69: google.apps.card.v1.OnClick.card:type_name -> google.apps.card.v1.Card
	34,  // 70: google.apps.card.v1.OnClick.overflow_menu:type_name -> google.apps.card.v1.OverflowMenu
	17,  // 71: google.apps.card.v1.OpenLink.open_as:type_name -> google.apps.card.v1.OpenLink.OpenAs
	18,  // 72: google.apps.card.v1.OpenLink.on_close:type_name -> google.apps.card.v1.OpenLink.OnClose
	65,  // 73: google.apps.card.v1.Action.parameters:type_name -> google.apps.card.v1.Action.ActionParameter
	19,  // 74: google.apps.card.v1.Action.load_indicator:type_name -> google.apps.card.v1.Action.LoadIndicator
	20,  // 75: google.apps.card.v1.Action.interaction:type_name -> google.apps.card.v1.Action.Interaction
	21,  // 76: google.apps.card.v1.Validation.input_type:type_name -> google.apps.card.v1.Validation.InputType
	22,  // 77: google.apps.card.v1.ChipList.layout:type_name -> google.apps.card.v1.ChipList.Layout
	50,  // 78: google.apps.card.v1.ChipList.chips:type_name -> google.apps.card.v1.Chip
	36,  // 79: google.apps.card.v1.Chip.icon:type_name -> google.apps.card.v1.Icon
	45,  // 80: google.apps.card.v1.Chip.on_click:type_name -> google.apps.card.v1.OnClick
	2,   // 81: google.apps.card.v1.Card.CardHeader.image_type:type_name -> google.apps.card.v1.Widget.ImageType
	24,  // 82: google.apps.card.v1.Card.Section.widgets:type_name -> google.apps.card.v1.Widget
	44,  // 83: google.apps.card.v1.Card.Section.collapse_control:type_name -> google.apps.card.v1.CollapseControl
	45,  // 84: google.apps.card.v1.Card.CardAction.on_click:type_name -> google.apps.card.v1.OnClick
	25,  // 85: google.apps.card.v1.Card.NestedWidget.text_paragraph:type_name -> google.apps.card.v1.TextParagraph
	31,  // 86: google.apps.card.v1.Card.NestedWidget.button_list:type_name -> google.apps.card.v1.ButtonList
	26,  // 87: google.apps.card.v1.Card.NestedWidget.image:type_name -> google.apps.card.v1.Image
	35,  // 88: google.apps.card.v1.Card.CardFixedFooter.primary_button:type_name -> google.apps.card.v1.Button
	35,  // 89: google.apps.card.v1.Card.CardFixedFooter.secondary_button:type_name -> google.apps.card.v1.Button
	47,  // 90: google.apps.card.v1.DecoratedText.SwitchControl.on_change_action:type_name -> google.apps.card.v1.Action
	6,   // 91: google.apps.card.v1.DecoratedText.SwitchControl.control_type:type_name -> google.apps.card.v1.DecoratedText.SwitchControl.ControlType
	9,   // 92: google.apps.card.v1.SelectionInput.PlatformDataSource.common_data_source:type_name -> google.apps.card.v1.SelectionInput.PlatformDataSource.CommonDataSource
	36,  // 93: google.apps.card.v1.OverflowMenu.OverflowMenuItem.start_icon:type_name -> google.apps.card.v1.Icon
	45,  // 94: google.apps.card.v1.OverflowMenu.OverflowMenuItem.on_click:type_name -> google.apps.card.v1.OnClick
	40,  // 95: google.apps.card.v1.Grid.GridItem.image:type_name -> google.apps.card.v1.ImageComponent
	14,  // 96: google.apps.card.v1.Grid.GridItem.layout:type_name -> google.apps.card.v1.Grid.GridItem.GridItemLayout
	15,  // 97: google.apps.card.v1.Columns.Column.horizontal_size_style:type_name -> google.apps.card.v1.Columns.Column.HorizontalSizeStyle
	3,   // 98: google.apps.card.v1.Columns.Column.horizontal_alignment:type_name -> google.apps.card.v1.Widget.HorizontalAlignment
	16,  // 99: google.apps.card.v1.Columns.Column.vertical_alignment:type_name -> google.apps.card.v1.Columns.Column.VerticalAlignment
	63,  // 100: google.apps.card.v1.Columns.Column.widgets:type_name -> google.apps.card.v1.Columns.Column.Widgets
	25,  // 101: google.apps.card.v1.Columns.Column.Widgets.text_paragraph:type_name -> google.apps.card.v1.TextParagraph
	26,  // 102: google.apps.card.v1.Columns.Column.Widgets.image:type_name -> google.apps.card.v1.Image
	28,  // 103: google.apps.card.v1.Columns.Column.Widgets.decorated_text:type_name -> google.apps.card.v1.DecoratedText
	31,  // 104: google.apps.card.v1.Columns.Column.Widgets.button_list:type_name -> google.apps.card.v1.ButtonList
	29,  // 105: google.apps.card.v1.Columns.Column.Widgets.text_input:type_name -> google.apps.card.v1.TextInput
	32,  // 106: google.apps.card.v1.Columns.Column.Widgets.selection_input:type_name -> google.apps.card.v1.SelectionInput
	33,  // 107: google.apps.card.v1.Columns.Column.Widgets.date_time_picker:type_name -> google.apps.card.v1.DateTimePicker
	49,  // 108: google.apps.card.v1.Columns.Column.Widgets.chip_list:type_name -> google.apps.card.v1.ChipList
	54,  // 109: google.apps.card.v1.Carousel.CarouselCard.widgets:type_name -> google.apps.card.v1.Card.NestedWidget
	54,  // 110: google.apps.card.v1.Carousel.CarouselCard.footer_widgets:type_name -> google.apps.card.v1.Card.NestedWidget
	111, // [111:111] is the sub-list for method output_type
	111, // [111:111] is the sub-list for method input_type
	111, // [111:111] is the sub-list for extension type_name
	111, // [111:111] is the sub-list for extension extendee
	0,   // [0:111] is the sub-list for field type_name
}

func init() { file_google_apps_card_v1_card_proto_init() }
func file_google_apps_card_v1_card_proto_init() {
	if File_google_apps_card_v1_card_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_google_apps_card_v1_card_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Card); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Widget); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TextParagraph); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Image); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Divider); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DecoratedText); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TextInput); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Suggestions); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ButtonList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SelectionInput); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DateTimePicker); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*OverflowMenu); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Button); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Icon); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MaterialIcon); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ImageCropStyle); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BorderStyle); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ImageComponent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Grid); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Columns); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Carousel); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CollapseControl); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*OnClick); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*OpenLink); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Action); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Validation); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ChipList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Chip); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Card_CardHeader); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Card_Section); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Card_CardAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Card_NestedWidget); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Card_CardFixedFooter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DecoratedText_SwitchControl); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Suggestions_SuggestionItem); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SelectionInput_SelectionItem); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SelectionInput_PlatformDataSource); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*OverflowMenu_OverflowMenuItem); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Grid_GridItem); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Columns_Column); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Columns_Column_Widgets); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Carousel_CarouselCard); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_apps_card_v1_card_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Action_ActionParameter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_google_apps_card_v1_card_proto_msgTypes[1].OneofWrappers = []interface{}{
		(*Widget_TextParagraph)(nil),
		(*Widget_Image)(nil),
		(*Widget_DecoratedText)(nil),
		(*Widget_ButtonList)(nil),
		(*Widget_TextInput)(nil),
		(*Widget_SelectionInput)(nil),
		(*Widget_DateTimePicker)(nil),
		(*Widget_Divider)(nil),
		(*Widget_Grid)(nil),
		(*Widget_Columns)(nil),
		(*Widget_Carousel)(nil),
		(*Widget_ChipList)(nil),
	}
	file_google_apps_card_v1_card_proto_msgTypes[5].OneofWrappers = []interface{}{
		(*DecoratedText_Button)(nil),
		(*DecoratedText_SwitchControl_)(nil),
		(*DecoratedText_EndIcon)(nil),
	}
	file_google_apps_card_v1_card_proto_msgTypes[9].OneofWrappers = []interface{}{
		(*SelectionInput_ExternalDataSource)(nil),
		(*SelectionInput_PlatformDataSource_)(nil),
	}
	file_google_apps_card_v1_card_proto_msgTypes[10].OneofWrappers = []interface{}{}
	file_google_apps_card_v1_card_proto_msgTypes[13].OneofWrappers = []interface{}{
		(*Icon_KnownIcon)(nil),
		(*Icon_IconUrl)(nil),
		(*Icon_MaterialIcon)(nil),
	}
	file_google_apps_card_v1_card_proto_msgTypes[22].OneofWrappers = []interface{}{
		(*OnClick_Action)(nil),
		(*OnClick_OpenLink)(nil),
		(*OnClick_OpenDynamicLinkAction)(nil),
		(*OnClick_Card)(nil),
		(*OnClick_OverflowMenu)(nil),
	}
	file_google_apps_card_v1_card_proto_msgTypes[31].OneofWrappers = []interface{}{
		(*Card_NestedWidget_TextParagraph)(nil),
		(*Card_NestedWidget_ButtonList)(nil),
		(*Card_NestedWidget_Image)(nil),
	}
	file_google_apps_card_v1_card_proto_msgTypes[34].OneofWrappers = []interface{}{
		(*Suggestions_SuggestionItem_Text)(nil),
	}
	file_google_apps_card_v1_card_proto_msgTypes[35].OneofWrappers = []interface{}{
		(*SelectionInput_SelectionItem_StartIconUri)(nil),
	}
	file_google_apps_card_v1_card_proto_msgTypes[36].OneofWrappers = []interface{}{
		(*SelectionInput_PlatformDataSource_CommonDataSource_)(nil),
	}
	file_google_apps_card_v1_card_proto_msgTypes[40].OneofWrappers = []interface{}{
		(*Columns_Column_Widgets_TextParagraph)(nil),
		(*Columns_Column_Widgets_Image)(nil),
		(*Columns_Column_Widgets_DecoratedText)(nil),
		(*Columns_Column_Widgets_ButtonList)(nil),
		(*Columns_Column_Widgets_TextInput)(nil),
		(*Columns_Column_Widgets_SelectionInput)(nil),
		(*Columns_Column_Widgets_DateTimePicker)(nil),
		(*Columns_Column_Widgets_ChipList)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_google_apps_card_v1_card_proto_rawDesc,
			NumEnums:      23,
			NumMessages:   43,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_google_apps_card_v1_card_proto_goTypes,
		DependencyIndexes: file_google_apps_card_v1_card_proto_depIdxs,
		EnumInfos:         file_google_apps_card_v1_card_proto_enumTypes,
		MessageInfos:      file_google_apps_card_v1_card_proto_msgTypes,
	}.Build()
	File_google_apps_card_v1_card_proto = out.File
	file_google_apps_card_v1_card_proto_rawDesc = nil
	file_google_apps_card_v1_card_proto_goTypes = nil
	file_google_apps_card_v1_card_proto_depIdxs = nil
}
