goplayd/lib/spot/proto/metadata.pb.go

3750 lines
134 KiB
Go
Raw Normal View History

2023-01-11 17:08:26 +00:00
// Extracted from: Spotify 1.1.73.517 (macOS)
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.28.1
// protoc v3.21.12
// source: metadata.proto
package proto
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
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)
)
type Album_Type int32
const (
Album_ALBUM Album_Type = 1
Album_SINGLE Album_Type = 2
Album_COMPILATION Album_Type = 3
Album_EP Album_Type = 4
Album_AUDIOBOOK Album_Type = 5
Album_PODCAST Album_Type = 6
)
// Enum value maps for Album_Type.
var (
Album_Type_name = map[int32]string{
1: "ALBUM",
2: "SINGLE",
3: "COMPILATION",
4: "EP",
5: "AUDIOBOOK",
6: "PODCAST",
}
Album_Type_value = map[string]int32{
"ALBUM": 1,
"SINGLE": 2,
"COMPILATION": 3,
"EP": 4,
"AUDIOBOOK": 5,
"PODCAST": 6,
}
)
func (x Album_Type) Enum() *Album_Type {
p := new(Album_Type)
*p = x
return p
}
func (x Album_Type) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Album_Type) Descriptor() protoreflect.EnumDescriptor {
return file_metadata_proto_enumTypes[0].Descriptor()
}
func (Album_Type) Type() protoreflect.EnumType {
return &file_metadata_proto_enumTypes[0]
}
func (x Album_Type) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *Album_Type) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = Album_Type(num)
return nil
}
// Deprecated: Use Album_Type.Descriptor instead.
func (Album_Type) EnumDescriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{1, 0}
}
type ArtistWithRole_ArtistRole int32
const (
ArtistWithRole_ARTIST_ROLE_UNKNOWN ArtistWithRole_ArtistRole = 0
ArtistWithRole_ARTIST_ROLE_MAIN_ARTIST ArtistWithRole_ArtistRole = 1
ArtistWithRole_ARTIST_ROLE_FEATURED_ARTIST ArtistWithRole_ArtistRole = 2
ArtistWithRole_ARTIST_ROLE_REMIXER ArtistWithRole_ArtistRole = 3
ArtistWithRole_ARTIST_ROLE_ACTOR ArtistWithRole_ArtistRole = 4
ArtistWithRole_ARTIST_ROLE_COMPOSER ArtistWithRole_ArtistRole = 5
ArtistWithRole_ARTIST_ROLE_CONDUCTOR ArtistWithRole_ArtistRole = 6
ArtistWithRole_ARTIST_ROLE_ORCHESTRA ArtistWithRole_ArtistRole = 7
)
// Enum value maps for ArtistWithRole_ArtistRole.
var (
ArtistWithRole_ArtistRole_name = map[int32]string{
0: "ARTIST_ROLE_UNKNOWN",
1: "ARTIST_ROLE_MAIN_ARTIST",
2: "ARTIST_ROLE_FEATURED_ARTIST",
3: "ARTIST_ROLE_REMIXER",
4: "ARTIST_ROLE_ACTOR",
5: "ARTIST_ROLE_COMPOSER",
6: "ARTIST_ROLE_CONDUCTOR",
7: "ARTIST_ROLE_ORCHESTRA",
}
ArtistWithRole_ArtistRole_value = map[string]int32{
"ARTIST_ROLE_UNKNOWN": 0,
"ARTIST_ROLE_MAIN_ARTIST": 1,
"ARTIST_ROLE_FEATURED_ARTIST": 2,
"ARTIST_ROLE_REMIXER": 3,
"ARTIST_ROLE_ACTOR": 4,
"ARTIST_ROLE_COMPOSER": 5,
"ARTIST_ROLE_CONDUCTOR": 6,
"ARTIST_ROLE_ORCHESTRA": 7,
}
)
func (x ArtistWithRole_ArtistRole) Enum() *ArtistWithRole_ArtistRole {
p := new(ArtistWithRole_ArtistRole)
*p = x
return p
}
func (x ArtistWithRole_ArtistRole) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ArtistWithRole_ArtistRole) Descriptor() protoreflect.EnumDescriptor {
return file_metadata_proto_enumTypes[1].Descriptor()
}
func (ArtistWithRole_ArtistRole) Type() protoreflect.EnumType {
return &file_metadata_proto_enumTypes[1]
}
func (x ArtistWithRole_ArtistRole) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *ArtistWithRole_ArtistRole) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = ArtistWithRole_ArtistRole(num)
return nil
}
// Deprecated: Use ArtistWithRole_ArtistRole.Descriptor instead.
func (ArtistWithRole_ArtistRole) EnumDescriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{3, 0}
}
type Show_MediaType int32
const (
Show_MIXED Show_MediaType = 0
Show_AUDIO Show_MediaType = 1
Show_VIDEO Show_MediaType = 2
)
// Enum value maps for Show_MediaType.
var (
Show_MediaType_name = map[int32]string{
0: "MIXED",
1: "AUDIO",
2: "VIDEO",
}
Show_MediaType_value = map[string]int32{
"MIXED": 0,
"AUDIO": 1,
"VIDEO": 2,
}
)
func (x Show_MediaType) Enum() *Show_MediaType {
p := new(Show_MediaType)
*p = x
return p
}
func (x Show_MediaType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Show_MediaType) Descriptor() protoreflect.EnumDescriptor {
return file_metadata_proto_enumTypes[2].Descriptor()
}
func (Show_MediaType) Type() protoreflect.EnumType {
return &file_metadata_proto_enumTypes[2]
}
func (x Show_MediaType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *Show_MediaType) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = Show_MediaType(num)
return nil
}
// Deprecated: Use Show_MediaType.Descriptor instead.
func (Show_MediaType) EnumDescriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{4, 0}
}
type Show_ConsumptionOrder int32
const (
Show_SEQUENTIAL Show_ConsumptionOrder = 1
Show_EPISODIC Show_ConsumptionOrder = 2
Show_RECENT Show_ConsumptionOrder = 3
)
// Enum value maps for Show_ConsumptionOrder.
var (
Show_ConsumptionOrder_name = map[int32]string{
1: "SEQUENTIAL",
2: "EPISODIC",
3: "RECENT",
}
Show_ConsumptionOrder_value = map[string]int32{
"SEQUENTIAL": 1,
"EPISODIC": 2,
"RECENT": 3,
}
)
func (x Show_ConsumptionOrder) Enum() *Show_ConsumptionOrder {
p := new(Show_ConsumptionOrder)
*p = x
return p
}
func (x Show_ConsumptionOrder) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Show_ConsumptionOrder) Descriptor() protoreflect.EnumDescriptor {
return file_metadata_proto_enumTypes[3].Descriptor()
}
func (Show_ConsumptionOrder) Type() protoreflect.EnumType {
return &file_metadata_proto_enumTypes[3]
}
func (x Show_ConsumptionOrder) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *Show_ConsumptionOrder) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = Show_ConsumptionOrder(num)
return nil
}
// Deprecated: Use Show_ConsumptionOrder.Descriptor instead.
func (Show_ConsumptionOrder) EnumDescriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{4, 1}
}
type Episode_EpisodeType int32
const (
Episode_FULL Episode_EpisodeType = 0
Episode_TRAILER Episode_EpisodeType = 1
Episode_BONUS Episode_EpisodeType = 2
)
// Enum value maps for Episode_EpisodeType.
var (
Episode_EpisodeType_name = map[int32]string{
0: "FULL",
1: "TRAILER",
2: "BONUS",
}
Episode_EpisodeType_value = map[string]int32{
"FULL": 0,
"TRAILER": 1,
"BONUS": 2,
}
)
func (x Episode_EpisodeType) Enum() *Episode_EpisodeType {
p := new(Episode_EpisodeType)
*p = x
return p
}
func (x Episode_EpisodeType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Episode_EpisodeType) Descriptor() protoreflect.EnumDescriptor {
return file_metadata_proto_enumTypes[4].Descriptor()
}
func (Episode_EpisodeType) Type() protoreflect.EnumType {
return &file_metadata_proto_enumTypes[4]
}
func (x Episode_EpisodeType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *Episode_EpisodeType) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = Episode_EpisodeType(num)
return nil
}
// Deprecated: Use Episode_EpisodeType.Descriptor instead.
func (Episode_EpisodeType) EnumDescriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{5, 0}
}
type Image_Size int32
const (
Image_DEFAULT Image_Size = 0
Image_SMALL Image_Size = 1
Image_LARGE Image_Size = 2
Image_XLARGE Image_Size = 3
)
// Enum value maps for Image_Size.
var (
Image_Size_name = map[int32]string{
0: "DEFAULT",
1: "SMALL",
2: "LARGE",
3: "XLARGE",
}
Image_Size_value = map[string]int32{
"DEFAULT": 0,
"SMALL": 1,
"LARGE": 2,
"XLARGE": 3,
}
)
func (x Image_Size) Enum() *Image_Size {
p := new(Image_Size)
*p = x
return p
}
func (x Image_Size) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Image_Size) Descriptor() protoreflect.EnumDescriptor {
return file_metadata_proto_enumTypes[5].Descriptor()
}
func (Image_Size) Type() protoreflect.EnumType {
return &file_metadata_proto_enumTypes[5]
}
func (x Image_Size) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *Image_Size) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = Image_Size(num)
return nil
}
// Deprecated: Use Image_Size.Descriptor instead.
func (Image_Size) EnumDescriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{11, 0}
}
type Copyright_Type int32
const (
Copyright_P Copyright_Type = 0
Copyright_C Copyright_Type = 1
)
// Enum value maps for Copyright_Type.
var (
Copyright_Type_name = map[int32]string{
0: "P",
1: "C",
}
Copyright_Type_value = map[string]int32{
"P": 0,
"C": 1,
}
)
func (x Copyright_Type) Enum() *Copyright_Type {
p := new(Copyright_Type)
*p = x
return p
}
func (x Copyright_Type) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Copyright_Type) Descriptor() protoreflect.EnumDescriptor {
return file_metadata_proto_enumTypes[6].Descriptor()
}
func (Copyright_Type) Type() protoreflect.EnumType {
return &file_metadata_proto_enumTypes[6]
}
func (x Copyright_Type) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *Copyright_Type) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = Copyright_Type(num)
return nil
}
// Deprecated: Use Copyright_Type.Descriptor instead.
func (Copyright_Type) EnumDescriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{15, 0}
}
type Restriction_Catalogue int32
const (
Restriction_AD Restriction_Catalogue = 0
Restriction_SUBSCRIPTION Restriction_Catalogue = 1
Restriction_CATALOGUE_ALL Restriction_Catalogue = 2
Restriction_SHUFFLE Restriction_Catalogue = 3
Restriction_COMMERCIAL Restriction_Catalogue = 4
)
// Enum value maps for Restriction_Catalogue.
var (
Restriction_Catalogue_name = map[int32]string{
0: "AD",
1: "SUBSCRIPTION",
2: "CATALOGUE_ALL",
3: "SHUFFLE",
4: "COMMERCIAL",
}
Restriction_Catalogue_value = map[string]int32{
"AD": 0,
"SUBSCRIPTION": 1,
"CATALOGUE_ALL": 2,
"SHUFFLE": 3,
"COMMERCIAL": 4,
}
)
func (x Restriction_Catalogue) Enum() *Restriction_Catalogue {
p := new(Restriction_Catalogue)
*p = x
return p
}
func (x Restriction_Catalogue) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Restriction_Catalogue) Descriptor() protoreflect.EnumDescriptor {
return file_metadata_proto_enumTypes[7].Descriptor()
}
func (Restriction_Catalogue) Type() protoreflect.EnumType {
return &file_metadata_proto_enumTypes[7]
}
func (x Restriction_Catalogue) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *Restriction_Catalogue) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = Restriction_Catalogue(num)
return nil
}
// Deprecated: Use Restriction_Catalogue.Descriptor instead.
func (Restriction_Catalogue) EnumDescriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{16, 0}
}
type Restriction_Type int32
const (
Restriction_STREAMING Restriction_Type = 0
)
// Enum value maps for Restriction_Type.
var (
Restriction_Type_name = map[int32]string{
0: "STREAMING",
}
Restriction_Type_value = map[string]int32{
"STREAMING": 0,
}
)
func (x Restriction_Type) Enum() *Restriction_Type {
p := new(Restriction_Type)
*p = x
return p
}
func (x Restriction_Type) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Restriction_Type) Descriptor() protoreflect.EnumDescriptor {
return file_metadata_proto_enumTypes[8].Descriptor()
}
func (Restriction_Type) Type() protoreflect.EnumType {
return &file_metadata_proto_enumTypes[8]
}
func (x Restriction_Type) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *Restriction_Type) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = Restriction_Type(num)
return nil
}
// Deprecated: Use Restriction_Type.Descriptor instead.
func (Restriction_Type) EnumDescriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{16, 1}
}
type AudioFile_Format int32
const (
AudioFile_OGG_VORBIS_96 AudioFile_Format = 0
AudioFile_OGG_VORBIS_160 AudioFile_Format = 1
AudioFile_OGG_VORBIS_320 AudioFile_Format = 2
AudioFile_MP3_256 AudioFile_Format = 3
AudioFile_MP3_320 AudioFile_Format = 4
AudioFile_MP3_160 AudioFile_Format = 5
AudioFile_MP3_96 AudioFile_Format = 6
AudioFile_MP3_160_ENC AudioFile_Format = 7
AudioFile_AAC_24 AudioFile_Format = 8
AudioFile_AAC_48 AudioFile_Format = 9
AudioFile_FLAC_FLAC AudioFile_Format = 16
)
// Enum value maps for AudioFile_Format.
var (
AudioFile_Format_name = map[int32]string{
0: "OGG_VORBIS_96",
1: "OGG_VORBIS_160",
2: "OGG_VORBIS_320",
3: "MP3_256",
4: "MP3_320",
5: "MP3_160",
6: "MP3_96",
7: "MP3_160_ENC",
8: "AAC_24",
9: "AAC_48",
16: "FLAC_FLAC",
}
AudioFile_Format_value = map[string]int32{
"OGG_VORBIS_96": 0,
"OGG_VORBIS_160": 1,
"OGG_VORBIS_320": 2,
"MP3_256": 3,
"MP3_320": 4,
"MP3_160": 5,
"MP3_96": 6,
"MP3_160_ENC": 7,
"AAC_24": 8,
"AAC_48": 9,
"FLAC_FLAC": 16,
}
)
func (x AudioFile_Format) Enum() *AudioFile_Format {
p := new(AudioFile_Format)
*p = x
return p
}
func (x AudioFile_Format) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (AudioFile_Format) Descriptor() protoreflect.EnumDescriptor {
return file_metadata_proto_enumTypes[9].Descriptor()
}
func (AudioFile_Format) Type() protoreflect.EnumType {
return &file_metadata_proto_enumTypes[9]
}
func (x AudioFile_Format) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *AudioFile_Format) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = AudioFile_Format(num)
return nil
}
// Deprecated: Use AudioFile_Format.Descriptor instead.
func (AudioFile_Format) EnumDescriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{20, 0}
}
type Artist struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Gid []byte `protobuf:"bytes,1,opt,name=gid" json:"gid,omitempty"`
Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
Popularity *int32 `protobuf:"zigzag32,3,opt,name=popularity" json:"popularity,omitempty"`
TopTrack []*TopTracks `protobuf:"bytes,4,rep,name=top_track,json=topTrack" json:"top_track,omitempty"`
AlbumGroup []*AlbumGroup `protobuf:"bytes,5,rep,name=album_group,json=albumGroup" json:"album_group,omitempty"`
SingleGroup []*AlbumGroup `protobuf:"bytes,6,rep,name=single_group,json=singleGroup" json:"single_group,omitempty"`
CompilationGroup []*AlbumGroup `protobuf:"bytes,7,rep,name=compilation_group,json=compilationGroup" json:"compilation_group,omitempty"`
AppearsOnGroup []*AlbumGroup `protobuf:"bytes,8,rep,name=appears_on_group,json=appearsOnGroup" json:"appears_on_group,omitempty"`
Genre []string `protobuf:"bytes,9,rep,name=genre" json:"genre,omitempty"`
ExternalId []*ExternalId `protobuf:"bytes,10,rep,name=external_id,json=externalId" json:"external_id,omitempty"`
Portrait []*Image `protobuf:"bytes,11,rep,name=portrait" json:"portrait,omitempty"`
Biography []*Biography `protobuf:"bytes,12,rep,name=biography" json:"biography,omitempty"`
ActivityPeriod []*ActivityPeriod `protobuf:"bytes,13,rep,name=activity_period,json=activityPeriod" json:"activity_period,omitempty"`
Restriction []*Restriction `protobuf:"bytes,14,rep,name=restriction" json:"restriction,omitempty"`
Related []*Artist `protobuf:"bytes,15,rep,name=related" json:"related,omitempty"`
IsPortraitAlbumCover *bool `protobuf:"varint,16,opt,name=is_portrait_album_cover,json=isPortraitAlbumCover" json:"is_portrait_album_cover,omitempty"`
PortraitGroup *ImageGroup `protobuf:"bytes,17,opt,name=portrait_group,json=portraitGroup" json:"portrait_group,omitempty"`
SalePeriod []*SalePeriod `protobuf:"bytes,18,rep,name=sale_period,json=salePeriod" json:"sale_period,omitempty"`
Availability []*Availability `protobuf:"bytes,20,rep,name=availability" json:"availability,omitempty"`
}
func (x *Artist) Reset() {
*x = Artist{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Artist) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Artist) ProtoMessage() {}
func (x *Artist) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 Artist.ProtoReflect.Descriptor instead.
func (*Artist) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{0}
}
func (x *Artist) GetGid() []byte {
if x != nil {
return x.Gid
}
return nil
}
func (x *Artist) GetName() string {
if x != nil && x.Name != nil {
return *x.Name
}
return ""
}
func (x *Artist) GetPopularity() int32 {
if x != nil && x.Popularity != nil {
return *x.Popularity
}
return 0
}
func (x *Artist) GetTopTrack() []*TopTracks {
if x != nil {
return x.TopTrack
}
return nil
}
func (x *Artist) GetAlbumGroup() []*AlbumGroup {
if x != nil {
return x.AlbumGroup
}
return nil
}
func (x *Artist) GetSingleGroup() []*AlbumGroup {
if x != nil {
return x.SingleGroup
}
return nil
}
func (x *Artist) GetCompilationGroup() []*AlbumGroup {
if x != nil {
return x.CompilationGroup
}
return nil
}
func (x *Artist) GetAppearsOnGroup() []*AlbumGroup {
if x != nil {
return x.AppearsOnGroup
}
return nil
}
func (x *Artist) GetGenre() []string {
if x != nil {
return x.Genre
}
return nil
}
func (x *Artist) GetExternalId() []*ExternalId {
if x != nil {
return x.ExternalId
}
return nil
}
func (x *Artist) GetPortrait() []*Image {
if x != nil {
return x.Portrait
}
return nil
}
func (x *Artist) GetBiography() []*Biography {
if x != nil {
return x.Biography
}
return nil
}
func (x *Artist) GetActivityPeriod() []*ActivityPeriod {
if x != nil {
return x.ActivityPeriod
}
return nil
}
func (x *Artist) GetRestriction() []*Restriction {
if x != nil {
return x.Restriction
}
return nil
}
func (x *Artist) GetRelated() []*Artist {
if x != nil {
return x.Related
}
return nil
}
func (x *Artist) GetIsPortraitAlbumCover() bool {
if x != nil && x.IsPortraitAlbumCover != nil {
return *x.IsPortraitAlbumCover
}
return false
}
func (x *Artist) GetPortraitGroup() *ImageGroup {
if x != nil {
return x.PortraitGroup
}
return nil
}
func (x *Artist) GetSalePeriod() []*SalePeriod {
if x != nil {
return x.SalePeriod
}
return nil
}
func (x *Artist) GetAvailability() []*Availability {
if x != nil {
return x.Availability
}
return nil
}
type Album struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Gid []byte `protobuf:"bytes,1,opt,name=gid" json:"gid,omitempty"`
Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
Artist []*Artist `protobuf:"bytes,3,rep,name=artist" json:"artist,omitempty"`
Type *Album_Type `protobuf:"varint,4,opt,name=type,enum=spotify.metadata.Album_Type" json:"type,omitempty"`
Label *string `protobuf:"bytes,5,opt,name=label" json:"label,omitempty"`
Date *Date `protobuf:"bytes,6,opt,name=date" json:"date,omitempty"`
Popularity *int32 `protobuf:"zigzag32,7,opt,name=popularity" json:"popularity,omitempty"`
Genre []string `protobuf:"bytes,8,rep,name=genre" json:"genre,omitempty"`
Cover []*Image `protobuf:"bytes,9,rep,name=cover" json:"cover,omitempty"`
ExternalId []*ExternalId `protobuf:"bytes,10,rep,name=external_id,json=externalId" json:"external_id,omitempty"`
Disc []*Disc `protobuf:"bytes,11,rep,name=disc" json:"disc,omitempty"`
Review []string `protobuf:"bytes,12,rep,name=review" json:"review,omitempty"`
Copyright []*Copyright `protobuf:"bytes,13,rep,name=copyright" json:"copyright,omitempty"`
Restriction []*Restriction `protobuf:"bytes,14,rep,name=restriction" json:"restriction,omitempty"`
Related []*Album `protobuf:"bytes,15,rep,name=related" json:"related,omitempty"`
SalePeriod []*SalePeriod `protobuf:"bytes,16,rep,name=sale_period,json=salePeriod" json:"sale_period,omitempty"`
CoverGroup *ImageGroup `protobuf:"bytes,17,opt,name=cover_group,json=coverGroup" json:"cover_group,omitempty"`
OriginalTitle *string `protobuf:"bytes,18,opt,name=original_title,json=originalTitle" json:"original_title,omitempty"`
VersionTitle *string `protobuf:"bytes,19,opt,name=version_title,json=versionTitle" json:"version_title,omitempty"`
TypeStr *string `protobuf:"bytes,20,opt,name=type_str,json=typeStr" json:"type_str,omitempty"`
Availability []*Availability `protobuf:"bytes,23,rep,name=availability" json:"availability,omitempty"`
}
func (x *Album) Reset() {
*x = Album{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Album) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Album) ProtoMessage() {}
func (x *Album) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 Album.ProtoReflect.Descriptor instead.
func (*Album) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{1}
}
func (x *Album) GetGid() []byte {
if x != nil {
return x.Gid
}
return nil
}
func (x *Album) GetName() string {
if x != nil && x.Name != nil {
return *x.Name
}
return ""
}
func (x *Album) GetArtist() []*Artist {
if x != nil {
return x.Artist
}
return nil
}
func (x *Album) GetType() Album_Type {
if x != nil && x.Type != nil {
return *x.Type
}
return Album_ALBUM
}
func (x *Album) GetLabel() string {
if x != nil && x.Label != nil {
return *x.Label
}
return ""
}
func (x *Album) GetDate() *Date {
if x != nil {
return x.Date
}
return nil
}
func (x *Album) GetPopularity() int32 {
if x != nil && x.Popularity != nil {
return *x.Popularity
}
return 0
}
func (x *Album) GetGenre() []string {
if x != nil {
return x.Genre
}
return nil
}
func (x *Album) GetCover() []*Image {
if x != nil {
return x.Cover
}
return nil
}
func (x *Album) GetExternalId() []*ExternalId {
if x != nil {
return x.ExternalId
}
return nil
}
func (x *Album) GetDisc() []*Disc {
if x != nil {
return x.Disc
}
return nil
}
func (x *Album) GetReview() []string {
if x != nil {
return x.Review
}
return nil
}
func (x *Album) GetCopyright() []*Copyright {
if x != nil {
return x.Copyright
}
return nil
}
func (x *Album) GetRestriction() []*Restriction {
if x != nil {
return x.Restriction
}
return nil
}
func (x *Album) GetRelated() []*Album {
if x != nil {
return x.Related
}
return nil
}
func (x *Album) GetSalePeriod() []*SalePeriod {
if x != nil {
return x.SalePeriod
}
return nil
}
func (x *Album) GetCoverGroup() *ImageGroup {
if x != nil {
return x.CoverGroup
}
return nil
}
func (x *Album) GetOriginalTitle() string {
if x != nil && x.OriginalTitle != nil {
return *x.OriginalTitle
}
return ""
}
func (x *Album) GetVersionTitle() string {
if x != nil && x.VersionTitle != nil {
return *x.VersionTitle
}
return ""
}
func (x *Album) GetTypeStr() string {
if x != nil && x.TypeStr != nil {
return *x.TypeStr
}
return ""
}
func (x *Album) GetAvailability() []*Availability {
if x != nil {
return x.Availability
}
return nil
}
type Track struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Gid []byte `protobuf:"bytes,1,opt,name=gid" json:"gid,omitempty"`
Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
Album *Album `protobuf:"bytes,3,opt,name=album" json:"album,omitempty"`
Artist []*Artist `protobuf:"bytes,4,rep,name=artist" json:"artist,omitempty"`
Number *int32 `protobuf:"zigzag32,5,opt,name=number" json:"number,omitempty"`
DiscNumber *int32 `protobuf:"zigzag32,6,opt,name=disc_number,json=discNumber" json:"disc_number,omitempty"`
Duration *int32 `protobuf:"zigzag32,7,opt,name=duration" json:"duration,omitempty"`
Popularity *int32 `protobuf:"zigzag32,8,opt,name=popularity" json:"popularity,omitempty"`
Explicit *bool `protobuf:"varint,9,opt,name=explicit" json:"explicit,omitempty"`
ExternalId []*ExternalId `protobuf:"bytes,10,rep,name=external_id,json=externalId" json:"external_id,omitempty"`
Restriction []*Restriction `protobuf:"bytes,11,rep,name=restriction" json:"restriction,omitempty"`
File []*AudioFile `protobuf:"bytes,12,rep,name=file" json:"file,omitempty"`
Alternative []*Track `protobuf:"bytes,13,rep,name=alternative" json:"alternative,omitempty"`
SalePeriod []*SalePeriod `protobuf:"bytes,14,rep,name=sale_period,json=salePeriod" json:"sale_period,omitempty"`
Preview []*AudioFile `protobuf:"bytes,15,rep,name=preview" json:"preview,omitempty"`
Tags []string `protobuf:"bytes,16,rep,name=tags" json:"tags,omitempty"`
EarliestLiveTimestamp *int64 `protobuf:"varint,17,opt,name=earliest_live_timestamp,json=earliestLiveTimestamp" json:"earliest_live_timestamp,omitempty"`
HasLyrics *bool `protobuf:"varint,18,opt,name=has_lyrics,json=hasLyrics" json:"has_lyrics,omitempty"`
Availability []*Availability `protobuf:"bytes,19,rep,name=availability" json:"availability,omitempty"`
Licensor *Licensor `protobuf:"bytes,21,opt,name=licensor" json:"licensor,omitempty"`
LanguageOfPerformance []string `protobuf:"bytes,22,rep,name=language_of_performance,json=languageOfPerformance" json:"language_of_performance,omitempty"`
ContentRating []*ContentRating `protobuf:"bytes,25,rep,name=content_rating,json=contentRating" json:"content_rating,omitempty"`
OriginalTitle *string `protobuf:"bytes,27,opt,name=original_title,json=originalTitle" json:"original_title,omitempty"`
VersionTitle *string `protobuf:"bytes,28,opt,name=version_title,json=versionTitle" json:"version_title,omitempty"`
ArtistWithRole []*ArtistWithRole `protobuf:"bytes,32,rep,name=artist_with_role,json=artistWithRole" json:"artist_with_role,omitempty"`
}
func (x *Track) Reset() {
*x = Track{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Track) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Track) ProtoMessage() {}
func (x *Track) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 Track.ProtoReflect.Descriptor instead.
func (*Track) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{2}
}
func (x *Track) GetGid() []byte {
if x != nil {
return x.Gid
}
return nil
}
func (x *Track) GetName() string {
if x != nil && x.Name != nil {
return *x.Name
}
return ""
}
func (x *Track) GetAlbum() *Album {
if x != nil {
return x.Album
}
return nil
}
func (x *Track) GetArtist() []*Artist {
if x != nil {
return x.Artist
}
return nil
}
func (x *Track) GetNumber() int32 {
if x != nil && x.Number != nil {
return *x.Number
}
return 0
}
func (x *Track) GetDiscNumber() int32 {
if x != nil && x.DiscNumber != nil {
return *x.DiscNumber
}
return 0
}
func (x *Track) GetDuration() int32 {
if x != nil && x.Duration != nil {
return *x.Duration
}
return 0
}
func (x *Track) GetPopularity() int32 {
if x != nil && x.Popularity != nil {
return *x.Popularity
}
return 0
}
func (x *Track) GetExplicit() bool {
if x != nil && x.Explicit != nil {
return *x.Explicit
}
return false
}
func (x *Track) GetExternalId() []*ExternalId {
if x != nil {
return x.ExternalId
}
return nil
}
func (x *Track) GetRestriction() []*Restriction {
if x != nil {
return x.Restriction
}
return nil
}
func (x *Track) GetFile() []*AudioFile {
if x != nil {
return x.File
}
return nil
}
func (x *Track) GetAlternative() []*Track {
if x != nil {
return x.Alternative
}
return nil
}
func (x *Track) GetSalePeriod() []*SalePeriod {
if x != nil {
return x.SalePeriod
}
return nil
}
func (x *Track) GetPreview() []*AudioFile {
if x != nil {
return x.Preview
}
return nil
}
func (x *Track) GetTags() []string {
if x != nil {
return x.Tags
}
return nil
}
func (x *Track) GetEarliestLiveTimestamp() int64 {
if x != nil && x.EarliestLiveTimestamp != nil {
return *x.EarliestLiveTimestamp
}
return 0
}
func (x *Track) GetHasLyrics() bool {
if x != nil && x.HasLyrics != nil {
return *x.HasLyrics
}
return false
}
func (x *Track) GetAvailability() []*Availability {
if x != nil {
return x.Availability
}
return nil
}
func (x *Track) GetLicensor() *Licensor {
if x != nil {
return x.Licensor
}
return nil
}
func (x *Track) GetLanguageOfPerformance() []string {
if x != nil {
return x.LanguageOfPerformance
}
return nil
}
func (x *Track) GetContentRating() []*ContentRating {
if x != nil {
return x.ContentRating
}
return nil
}
func (x *Track) GetOriginalTitle() string {
if x != nil && x.OriginalTitle != nil {
return *x.OriginalTitle
}
return ""
}
func (x *Track) GetVersionTitle() string {
if x != nil && x.VersionTitle != nil {
return *x.VersionTitle
}
return ""
}
func (x *Track) GetArtistWithRole() []*ArtistWithRole {
if x != nil {
return x.ArtistWithRole
}
return nil
}
type ArtistWithRole struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ArtistGid []byte `protobuf:"bytes,1,opt,name=artist_gid,json=artistGid" json:"artist_gid,omitempty"`
ArtistName *string `protobuf:"bytes,2,opt,name=artist_name,json=artistName" json:"artist_name,omitempty"`
Role *ArtistWithRole_ArtistRole `protobuf:"varint,3,opt,name=role,enum=spotify.metadata.ArtistWithRole_ArtistRole" json:"role,omitempty"`
}
func (x *ArtistWithRole) Reset() {
*x = ArtistWithRole{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ArtistWithRole) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ArtistWithRole) ProtoMessage() {}
func (x *ArtistWithRole) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 ArtistWithRole.ProtoReflect.Descriptor instead.
func (*ArtistWithRole) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{3}
}
func (x *ArtistWithRole) GetArtistGid() []byte {
if x != nil {
return x.ArtistGid
}
return nil
}
func (x *ArtistWithRole) GetArtistName() string {
if x != nil && x.ArtistName != nil {
return *x.ArtistName
}
return ""
}
func (x *ArtistWithRole) GetRole() ArtistWithRole_ArtistRole {
if x != nil && x.Role != nil {
return *x.Role
}
return ArtistWithRole_ARTIST_ROLE_UNKNOWN
}
type Show struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Gid []byte `protobuf:"bytes,1,opt,name=gid" json:"gid,omitempty"`
Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
Description *string `protobuf:"bytes,64,opt,name=description" json:"description,omitempty"`
DeprecatedPopularity *int32 `protobuf:"zigzag32,65,opt,name=deprecated_popularity,json=deprecatedPopularity" json:"deprecated_popularity,omitempty"`
Publisher *string `protobuf:"bytes,66,opt,name=publisher" json:"publisher,omitempty"`
Language *string `protobuf:"bytes,67,opt,name=language" json:"language,omitempty"`
Explicit *bool `protobuf:"varint,68,opt,name=explicit" json:"explicit,omitempty"`
CoverImage *ImageGroup `protobuf:"bytes,69,opt,name=cover_image,json=coverImage" json:"cover_image,omitempty"`
Episode []*Episode `protobuf:"bytes,70,rep,name=episode" json:"episode,omitempty"`
Copyright []*Copyright `protobuf:"bytes,71,rep,name=copyright" json:"copyright,omitempty"`
Restriction []*Restriction `protobuf:"bytes,72,rep,name=restriction" json:"restriction,omitempty"`
Keyword []string `protobuf:"bytes,73,rep,name=keyword" json:"keyword,omitempty"`
MediaType *Show_MediaType `protobuf:"varint,74,opt,name=media_type,json=mediaType,enum=spotify.metadata.Show_MediaType" json:"media_type,omitempty"`
ConsumptionOrder *Show_ConsumptionOrder `protobuf:"varint,75,opt,name=consumption_order,json=consumptionOrder,enum=spotify.metadata.Show_ConsumptionOrder" json:"consumption_order,omitempty"`
Availability []*Availability `protobuf:"bytes,78,rep,name=availability" json:"availability,omitempty"`
TrailerUri *string `protobuf:"bytes,83,opt,name=trailer_uri,json=trailerUri" json:"trailer_uri,omitempty"`
MusicAndTalk *bool `protobuf:"varint,85,opt,name=music_and_talk,json=musicAndTalk" json:"music_and_talk,omitempty"`
IsAudiobook *bool `protobuf:"varint,89,opt,name=is_audiobook,json=isAudiobook" json:"is_audiobook,omitempty"`
}
func (x *Show) Reset() {
*x = Show{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Show) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Show) ProtoMessage() {}
func (x *Show) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 Show.ProtoReflect.Descriptor instead.
func (*Show) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{4}
}
func (x *Show) GetGid() []byte {
if x != nil {
return x.Gid
}
return nil
}
func (x *Show) GetName() string {
if x != nil && x.Name != nil {
return *x.Name
}
return ""
}
func (x *Show) GetDescription() string {
if x != nil && x.Description != nil {
return *x.Description
}
return ""
}
func (x *Show) GetDeprecatedPopularity() int32 {
if x != nil && x.DeprecatedPopularity != nil {
return *x.DeprecatedPopularity
}
return 0
}
func (x *Show) GetPublisher() string {
if x != nil && x.Publisher != nil {
return *x.Publisher
}
return ""
}
func (x *Show) GetLanguage() string {
if x != nil && x.Language != nil {
return *x.Language
}
return ""
}
func (x *Show) GetExplicit() bool {
if x != nil && x.Explicit != nil {
return *x.Explicit
}
return false
}
func (x *Show) GetCoverImage() *ImageGroup {
if x != nil {
return x.CoverImage
}
return nil
}
func (x *Show) GetEpisode() []*Episode {
if x != nil {
return x.Episode
}
return nil
}
func (x *Show) GetCopyright() []*Copyright {
if x != nil {
return x.Copyright
}
return nil
}
func (x *Show) GetRestriction() []*Restriction {
if x != nil {
return x.Restriction
}
return nil
}
func (x *Show) GetKeyword() []string {
if x != nil {
return x.Keyword
}
return nil
}
func (x *Show) GetMediaType() Show_MediaType {
if x != nil && x.MediaType != nil {
return *x.MediaType
}
return Show_MIXED
}
func (x *Show) GetConsumptionOrder() Show_ConsumptionOrder {
if x != nil && x.ConsumptionOrder != nil {
return *x.ConsumptionOrder
}
return Show_SEQUENTIAL
}
func (x *Show) GetAvailability() []*Availability {
if x != nil {
return x.Availability
}
return nil
}
func (x *Show) GetTrailerUri() string {
if x != nil && x.TrailerUri != nil {
return *x.TrailerUri
}
return ""
}
func (x *Show) GetMusicAndTalk() bool {
if x != nil && x.MusicAndTalk != nil {
return *x.MusicAndTalk
}
return false
}
func (x *Show) GetIsAudiobook() bool {
if x != nil && x.IsAudiobook != nil {
return *x.IsAudiobook
}
return false
}
type Episode struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Gid []byte `protobuf:"bytes,1,opt,name=gid" json:"gid,omitempty"`
Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
Duration *int32 `protobuf:"zigzag32,7,opt,name=duration" json:"duration,omitempty"`
Audio []*AudioFile `protobuf:"bytes,12,rep,name=audio" json:"audio,omitempty"`
Description *string `protobuf:"bytes,64,opt,name=description" json:"description,omitempty"`
Number *int32 `protobuf:"zigzag32,65,opt,name=number" json:"number,omitempty"`
PublishTime *Date `protobuf:"bytes,66,opt,name=publish_time,json=publishTime" json:"publish_time,omitempty"`
DeprecatedPopularity *int32 `protobuf:"zigzag32,67,opt,name=deprecated_popularity,json=deprecatedPopularity" json:"deprecated_popularity,omitempty"`
CoverImage *ImageGroup `protobuf:"bytes,68,opt,name=cover_image,json=coverImage" json:"cover_image,omitempty"`
Language *string `protobuf:"bytes,69,opt,name=language" json:"language,omitempty"`
Explicit *bool `protobuf:"varint,70,opt,name=explicit" json:"explicit,omitempty"`
Show *Show `protobuf:"bytes,71,opt,name=show" json:"show,omitempty"`
Video []*VideoFile `protobuf:"bytes,72,rep,name=video" json:"video,omitempty"`
VideoPreview []*VideoFile `protobuf:"bytes,73,rep,name=video_preview,json=videoPreview" json:"video_preview,omitempty"`
AudioPreview []*AudioFile `protobuf:"bytes,74,rep,name=audio_preview,json=audioPreview" json:"audio_preview,omitempty"`
Restriction []*Restriction `protobuf:"bytes,75,rep,name=restriction" json:"restriction,omitempty"`
FreezeFrame *ImageGroup `protobuf:"bytes,76,opt,name=freeze_frame,json=freezeFrame" json:"freeze_frame,omitempty"`
Keyword []string `protobuf:"bytes,77,rep,name=keyword" json:"keyword,omitempty"`
AllowBackgroundPlayback *bool `protobuf:"varint,81,opt,name=allow_background_playback,json=allowBackgroundPlayback" json:"allow_background_playback,omitempty"`
Availability []*Availability `protobuf:"bytes,82,rep,name=availability" json:"availability,omitempty"`
ExternalUrl *string `protobuf:"bytes,83,opt,name=external_url,json=externalUrl" json:"external_url,omitempty"`
Type *Episode_EpisodeType `protobuf:"varint,87,opt,name=type,enum=spotify.metadata.Episode_EpisodeType" json:"type,omitempty"`
MusicAndTalk *bool `protobuf:"varint,91,opt,name=music_and_talk,json=musicAndTalk" json:"music_and_talk,omitempty"`
ContentRating []*ContentRating `protobuf:"bytes,95,rep,name=content_rating,json=contentRating" json:"content_rating,omitempty"`
IsAudiobookChapter *bool `protobuf:"varint,96,opt,name=is_audiobook_chapter,json=isAudiobookChapter" json:"is_audiobook_chapter,omitempty"`
}
func (x *Episode) Reset() {
*x = Episode{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Episode) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Episode) ProtoMessage() {}
func (x *Episode) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 Episode.ProtoReflect.Descriptor instead.
func (*Episode) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{5}
}
func (x *Episode) GetGid() []byte {
if x != nil {
return x.Gid
}
return nil
}
func (x *Episode) GetName() string {
if x != nil && x.Name != nil {
return *x.Name
}
return ""
}
func (x *Episode) GetDuration() int32 {
if x != nil && x.Duration != nil {
return *x.Duration
}
return 0
}
func (x *Episode) GetAudio() []*AudioFile {
if x != nil {
return x.Audio
}
return nil
}
func (x *Episode) GetDescription() string {
if x != nil && x.Description != nil {
return *x.Description
}
return ""
}
func (x *Episode) GetNumber() int32 {
if x != nil && x.Number != nil {
return *x.Number
}
return 0
}
func (x *Episode) GetPublishTime() *Date {
if x != nil {
return x.PublishTime
}
return nil
}
func (x *Episode) GetDeprecatedPopularity() int32 {
if x != nil && x.DeprecatedPopularity != nil {
return *x.DeprecatedPopularity
}
return 0
}
func (x *Episode) GetCoverImage() *ImageGroup {
if x != nil {
return x.CoverImage
}
return nil
}
func (x *Episode) GetLanguage() string {
if x != nil && x.Language != nil {
return *x.Language
}
return ""
}
func (x *Episode) GetExplicit() bool {
if x != nil && x.Explicit != nil {
return *x.Explicit
}
return false
}
func (x *Episode) GetShow() *Show {
if x != nil {
return x.Show
}
return nil
}
func (x *Episode) GetVideo() []*VideoFile {
if x != nil {
return x.Video
}
return nil
}
func (x *Episode) GetVideoPreview() []*VideoFile {
if x != nil {
return x.VideoPreview
}
return nil
}
func (x *Episode) GetAudioPreview() []*AudioFile {
if x != nil {
return x.AudioPreview
}
return nil
}
func (x *Episode) GetRestriction() []*Restriction {
if x != nil {
return x.Restriction
}
return nil
}
func (x *Episode) GetFreezeFrame() *ImageGroup {
if x != nil {
return x.FreezeFrame
}
return nil
}
func (x *Episode) GetKeyword() []string {
if x != nil {
return x.Keyword
}
return nil
}
func (x *Episode) GetAllowBackgroundPlayback() bool {
if x != nil && x.AllowBackgroundPlayback != nil {
return *x.AllowBackgroundPlayback
}
return false
}
func (x *Episode) GetAvailability() []*Availability {
if x != nil {
return x.Availability
}
return nil
}
func (x *Episode) GetExternalUrl() string {
if x != nil && x.ExternalUrl != nil {
return *x.ExternalUrl
}
return ""
}
func (x *Episode) GetType() Episode_EpisodeType {
if x != nil && x.Type != nil {
return *x.Type
}
return Episode_FULL
}
func (x *Episode) GetMusicAndTalk() bool {
if x != nil && x.MusicAndTalk != nil {
return *x.MusicAndTalk
}
return false
}
func (x *Episode) GetContentRating() []*ContentRating {
if x != nil {
return x.ContentRating
}
return nil
}
func (x *Episode) GetIsAudiobookChapter() bool {
if x != nil && x.IsAudiobookChapter != nil {
return *x.IsAudiobookChapter
}
return false
}
type Licensor struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Uuid []byte `protobuf:"bytes,1,opt,name=uuid" json:"uuid,omitempty"`
}
func (x *Licensor) Reset() {
*x = Licensor{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Licensor) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Licensor) ProtoMessage() {}
func (x *Licensor) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 Licensor.ProtoReflect.Descriptor instead.
func (*Licensor) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{6}
}
func (x *Licensor) GetUuid() []byte {
if x != nil {
return x.Uuid
}
return nil
}
type TopTracks struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Country *string `protobuf:"bytes,1,opt,name=country" json:"country,omitempty"`
Track []*Track `protobuf:"bytes,2,rep,name=track" json:"track,omitempty"`
}
func (x *TopTracks) Reset() {
*x = TopTracks{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TopTracks) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TopTracks) ProtoMessage() {}
func (x *TopTracks) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 TopTracks.ProtoReflect.Descriptor instead.
func (*TopTracks) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{7}
}
func (x *TopTracks) GetCountry() string {
if x != nil && x.Country != nil {
return *x.Country
}
return ""
}
func (x *TopTracks) GetTrack() []*Track {
if x != nil {
return x.Track
}
return nil
}
type ActivityPeriod struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
StartYear *int32 `protobuf:"zigzag32,1,opt,name=start_year,json=startYear" json:"start_year,omitempty"`
EndYear *int32 `protobuf:"zigzag32,2,opt,name=end_year,json=endYear" json:"end_year,omitempty"`
Decade *int32 `protobuf:"zigzag32,3,opt,name=decade" json:"decade,omitempty"`
}
func (x *ActivityPeriod) Reset() {
*x = ActivityPeriod{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ActivityPeriod) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ActivityPeriod) ProtoMessage() {}
func (x *ActivityPeriod) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 ActivityPeriod.ProtoReflect.Descriptor instead.
func (*ActivityPeriod) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{8}
}
func (x *ActivityPeriod) GetStartYear() int32 {
if x != nil && x.StartYear != nil {
return *x.StartYear
}
return 0
}
func (x *ActivityPeriod) GetEndYear() int32 {
if x != nil && x.EndYear != nil {
return *x.EndYear
}
return 0
}
func (x *ActivityPeriod) GetDecade() int32 {
if x != nil && x.Decade != nil {
return *x.Decade
}
return 0
}
type AlbumGroup struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Album []*Album `protobuf:"bytes,1,rep,name=album" json:"album,omitempty"`
}
func (x *AlbumGroup) Reset() {
*x = AlbumGroup{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AlbumGroup) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AlbumGroup) ProtoMessage() {}
func (x *AlbumGroup) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 AlbumGroup.ProtoReflect.Descriptor instead.
func (*AlbumGroup) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{9}
}
func (x *AlbumGroup) GetAlbum() []*Album {
if x != nil {
return x.Album
}
return nil
}
type Date struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Year *int32 `protobuf:"zigzag32,1,opt,name=year" json:"year,omitempty"`
Month *int32 `protobuf:"zigzag32,2,opt,name=month" json:"month,omitempty"`
Day *int32 `protobuf:"zigzag32,3,opt,name=day" json:"day,omitempty"`
Hour *int32 `protobuf:"zigzag32,4,opt,name=hour" json:"hour,omitempty"`
Minute *int32 `protobuf:"zigzag32,5,opt,name=minute" json:"minute,omitempty"`
}
func (x *Date) Reset() {
*x = Date{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Date) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Date) ProtoMessage() {}
func (x *Date) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 Date.ProtoReflect.Descriptor instead.
func (*Date) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{10}
}
func (x *Date) GetYear() int32 {
if x != nil && x.Year != nil {
return *x.Year
}
return 0
}
func (x *Date) GetMonth() int32 {
if x != nil && x.Month != nil {
return *x.Month
}
return 0
}
func (x *Date) GetDay() int32 {
if x != nil && x.Day != nil {
return *x.Day
}
return 0
}
func (x *Date) GetHour() int32 {
if x != nil && x.Hour != nil {
return *x.Hour
}
return 0
}
func (x *Date) GetMinute() int32 {
if x != nil && x.Minute != nil {
return *x.Minute
}
return 0
}
type Image struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
FileId []byte `protobuf:"bytes,1,opt,name=file_id,json=fileId" json:"file_id,omitempty"`
Size *Image_Size `protobuf:"varint,2,opt,name=size,enum=spotify.metadata.Image_Size" json:"size,omitempty"`
Width *int32 `protobuf:"zigzag32,3,opt,name=width" json:"width,omitempty"`
Height *int32 `protobuf:"zigzag32,4,opt,name=height" json:"height,omitempty"`
}
func (x *Image) Reset() {
*x = Image{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[11]
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_metadata_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 Image.ProtoReflect.Descriptor instead.
func (*Image) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{11}
}
func (x *Image) GetFileId() []byte {
if x != nil {
return x.FileId
}
return nil
}
func (x *Image) GetSize() Image_Size {
if x != nil && x.Size != nil {
return *x.Size
}
return Image_DEFAULT
}
func (x *Image) GetWidth() int32 {
if x != nil && x.Width != nil {
return *x.Width
}
return 0
}
func (x *Image) GetHeight() int32 {
if x != nil && x.Height != nil {
return *x.Height
}
return 0
}
type ImageGroup struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Image []*Image `protobuf:"bytes,1,rep,name=image" json:"image,omitempty"`
}
func (x *ImageGroup) Reset() {
*x = ImageGroup{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ImageGroup) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ImageGroup) ProtoMessage() {}
func (x *ImageGroup) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 ImageGroup.ProtoReflect.Descriptor instead.
func (*ImageGroup) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{12}
}
func (x *ImageGroup) GetImage() []*Image {
if x != nil {
return x.Image
}
return nil
}
type Biography struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Text *string `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"`
Portrait []*Image `protobuf:"bytes,2,rep,name=portrait" json:"portrait,omitempty"`
PortraitGroup []*ImageGroup `protobuf:"bytes,3,rep,name=portrait_group,json=portraitGroup" json:"portrait_group,omitempty"`
}
func (x *Biography) Reset() {
*x = Biography{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Biography) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Biography) ProtoMessage() {}
func (x *Biography) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 Biography.ProtoReflect.Descriptor instead.
func (*Biography) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{13}
}
func (x *Biography) GetText() string {
if x != nil && x.Text != nil {
return *x.Text
}
return ""
}
func (x *Biography) GetPortrait() []*Image {
if x != nil {
return x.Portrait
}
return nil
}
func (x *Biography) GetPortraitGroup() []*ImageGroup {
if x != nil {
return x.PortraitGroup
}
return nil
}
type Disc struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Number *int32 `protobuf:"zigzag32,1,opt,name=number" json:"number,omitempty"`
Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
Track []*Track `protobuf:"bytes,3,rep,name=track" json:"track,omitempty"`
}
func (x *Disc) Reset() {
*x = Disc{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Disc) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Disc) ProtoMessage() {}
func (x *Disc) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 Disc.ProtoReflect.Descriptor instead.
func (*Disc) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{14}
}
func (x *Disc) GetNumber() int32 {
if x != nil && x.Number != nil {
return *x.Number
}
return 0
}
func (x *Disc) GetName() string {
if x != nil && x.Name != nil {
return *x.Name
}
return ""
}
func (x *Disc) GetTrack() []*Track {
if x != nil {
return x.Track
}
return nil
}
type Copyright struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Type *Copyright_Type `protobuf:"varint,1,opt,name=type,enum=spotify.metadata.Copyright_Type" json:"type,omitempty"`
Text *string `protobuf:"bytes,2,opt,name=text" json:"text,omitempty"`
}
func (x *Copyright) Reset() {
*x = Copyright{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Copyright) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Copyright) ProtoMessage() {}
func (x *Copyright) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 Copyright.ProtoReflect.Descriptor instead.
func (*Copyright) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{15}
}
func (x *Copyright) GetType() Copyright_Type {
if x != nil && x.Type != nil {
return *x.Type
}
return Copyright_P
}
func (x *Copyright) GetText() string {
if x != nil && x.Text != nil {
return *x.Text
}
return ""
}
type Restriction struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Catalogue []Restriction_Catalogue `protobuf:"varint,1,rep,name=catalogue,enum=spotify.metadata.Restriction_Catalogue" json:"catalogue,omitempty"`
Type *Restriction_Type `protobuf:"varint,4,opt,name=type,enum=spotify.metadata.Restriction_Type" json:"type,omitempty"`
CatalogueStr []string `protobuf:"bytes,5,rep,name=catalogue_str,json=catalogueStr" json:"catalogue_str,omitempty"`
// Types that are assignable to CountryRestriction:
//
// *Restriction_CountriesAllowed
// *Restriction_CountriesForbidden
CountryRestriction isRestriction_CountryRestriction `protobuf_oneof:"country_restriction"`
}
func (x *Restriction) Reset() {
*x = Restriction{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Restriction) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Restriction) ProtoMessage() {}
func (x *Restriction) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 Restriction.ProtoReflect.Descriptor instead.
func (*Restriction) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{16}
}
func (x *Restriction) GetCatalogue() []Restriction_Catalogue {
if x != nil {
return x.Catalogue
}
return nil
}
func (x *Restriction) GetType() Restriction_Type {
if x != nil && x.Type != nil {
return *x.Type
}
return Restriction_STREAMING
}
func (x *Restriction) GetCatalogueStr() []string {
if x != nil {
return x.CatalogueStr
}
return nil
}
func (m *Restriction) GetCountryRestriction() isRestriction_CountryRestriction {
if m != nil {
return m.CountryRestriction
}
return nil
}
func (x *Restriction) GetCountriesAllowed() string {
if x, ok := x.GetCountryRestriction().(*Restriction_CountriesAllowed); ok {
return x.CountriesAllowed
}
return ""
}
func (x *Restriction) GetCountriesForbidden() string {
if x, ok := x.GetCountryRestriction().(*Restriction_CountriesForbidden); ok {
return x.CountriesForbidden
}
return ""
}
type isRestriction_CountryRestriction interface {
isRestriction_CountryRestriction()
}
type Restriction_CountriesAllowed struct {
CountriesAllowed string `protobuf:"bytes,2,opt,name=countries_allowed,json=countriesAllowed,oneof"`
}
type Restriction_CountriesForbidden struct {
CountriesForbidden string `protobuf:"bytes,3,opt,name=countries_forbidden,json=countriesForbidden,oneof"`
}
func (*Restriction_CountriesAllowed) isRestriction_CountryRestriction() {}
func (*Restriction_CountriesForbidden) isRestriction_CountryRestriction() {}
type Availability struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
CatalogueStr []string `protobuf:"bytes,1,rep,name=catalogue_str,json=catalogueStr" json:"catalogue_str,omitempty"`
Start *Date `protobuf:"bytes,2,opt,name=start" json:"start,omitempty"`
}
func (x *Availability) Reset() {
*x = Availability{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Availability) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Availability) ProtoMessage() {}
func (x *Availability) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 Availability.ProtoReflect.Descriptor instead.
func (*Availability) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{17}
}
func (x *Availability) GetCatalogueStr() []string {
if x != nil {
return x.CatalogueStr
}
return nil
}
func (x *Availability) GetStart() *Date {
if x != nil {
return x.Start
}
return nil
}
type SalePeriod struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Restriction []*Restriction `protobuf:"bytes,1,rep,name=restriction" json:"restriction,omitempty"`
Start *Date `protobuf:"bytes,2,opt,name=start" json:"start,omitempty"`
End *Date `protobuf:"bytes,3,opt,name=end" json:"end,omitempty"`
}
func (x *SalePeriod) Reset() {
*x = SalePeriod{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SalePeriod) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SalePeriod) ProtoMessage() {}
func (x *SalePeriod) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 SalePeriod.ProtoReflect.Descriptor instead.
func (*SalePeriod) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{18}
}
func (x *SalePeriod) GetRestriction() []*Restriction {
if x != nil {
return x.Restriction
}
return nil
}
func (x *SalePeriod) GetStart() *Date {
if x != nil {
return x.Start
}
return nil
}
func (x *SalePeriod) GetEnd() *Date {
if x != nil {
return x.End
}
return nil
}
type ExternalId struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Type *string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"`
Id *string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"`
}
func (x *ExternalId) Reset() {
*x = ExternalId{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ExternalId) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ExternalId) ProtoMessage() {}
func (x *ExternalId) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 ExternalId.ProtoReflect.Descriptor instead.
func (*ExternalId) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{19}
}
func (x *ExternalId) GetType() string {
if x != nil && x.Type != nil {
return *x.Type
}
return ""
}
func (x *ExternalId) GetId() string {
if x != nil && x.Id != nil {
return *x.Id
}
return ""
}
type AudioFile struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
FileId []byte `protobuf:"bytes,1,opt,name=file_id,json=fileId" json:"file_id,omitempty"`
Format *AudioFile_Format `protobuf:"varint,2,opt,name=format,enum=spotify.metadata.AudioFile_Format" json:"format,omitempty"`
}
func (x *AudioFile) Reset() {
*x = AudioFile{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AudioFile) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AudioFile) ProtoMessage() {}
func (x *AudioFile) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 AudioFile.ProtoReflect.Descriptor instead.
func (*AudioFile) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{20}
}
func (x *AudioFile) GetFileId() []byte {
if x != nil {
return x.FileId
}
return nil
}
func (x *AudioFile) GetFormat() AudioFile_Format {
if x != nil && x.Format != nil {
return *x.Format
}
return AudioFile_OGG_VORBIS_96
}
type VideoFile struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
FileId []byte `protobuf:"bytes,1,opt,name=file_id,json=fileId" json:"file_id,omitempty"`
}
func (x *VideoFile) Reset() {
*x = VideoFile{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *VideoFile) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*VideoFile) ProtoMessage() {}
func (x *VideoFile) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 VideoFile.ProtoReflect.Descriptor instead.
func (*VideoFile) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{21}
}
func (x *VideoFile) GetFileId() []byte {
if x != nil {
return x.FileId
}
return nil
}
type ContentRating struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Country *string `protobuf:"bytes,1,opt,name=country" json:"country,omitempty"`
Tag []string `protobuf:"bytes,2,rep,name=tag" json:"tag,omitempty"`
}
func (x *ContentRating) Reset() {
*x = ContentRating{}
if protoimpl.UnsafeEnabled {
mi := &file_metadata_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ContentRating) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ContentRating) ProtoMessage() {}
func (x *ContentRating) ProtoReflect() protoreflect.Message {
mi := &file_metadata_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 ContentRating.ProtoReflect.Descriptor instead.
func (*ContentRating) Descriptor() ([]byte, []int) {
return file_metadata_proto_rawDescGZIP(), []int{22}
}
func (x *ContentRating) GetCountry() string {
if x != nil && x.Country != nil {
return *x.Country
}
return ""
}
func (x *ContentRating) GetTag() []string {
if x != nil {
return x.Tag
}
return nil
}
var File_metadata_proto protoreflect.FileDescriptor
var file_metadata_proto_rawDesc = []byte{
0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x12, 0x10, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
0x74, 0x61, 0x22, 0x9f, 0x08, 0x0a, 0x06, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x12, 0x10, 0x0a,
0x03, 0x67, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x67, 0x69, 0x64, 0x12,
0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74,
0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0a, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72,
0x69, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x6b,
0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79,
0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x6f, 0x70, 0x54, 0x72, 0x61,
0x63, 0x6b, 0x73, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x12, 0x3d, 0x0a,
0x0b, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x05, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74,
0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x6c, 0x62, 0x75, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70,
0x52, 0x0a, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3f, 0x0a, 0x0c,
0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74,
0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x6c, 0x62, 0x75, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70,
0x52, 0x0b, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x49, 0x0a,
0x11, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f,
0x75, 0x70, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69,
0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x6c, 0x62, 0x75,
0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x46, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x65,
0x61, 0x72, 0x73, 0x5f, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x08, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74,
0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x6c, 0x62, 0x75, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70,
0x52, 0x0e, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x73, 0x4f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70,
0x12, 0x14, 0x0a, 0x05, 0x67, 0x65, 0x6e, 0x72, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52,
0x05, 0x67, 0x65, 0x6e, 0x72, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e,
0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70,
0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45,
0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72,
0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69,
0x74, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66,
0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65,
0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x62, 0x69,
0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x79, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e,
0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
0x2e, 0x42, 0x69, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x79, 0x52, 0x09, 0x62, 0x69, 0x6f, 0x67,
0x72, 0x61, 0x70, 0x68, 0x79, 0x12, 0x49, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74,
0x79, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20,
0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
0x61, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64,
0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64,
0x12, 0x3f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18,
0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e,
0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x12, 0x32, 0x0a, 0x07, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74,
0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65,
0x6c, 0x61, 0x74, 0x65, 0x64, 0x12, 0x35, 0x0a, 0x17, 0x69, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74,
0x72, 0x61, 0x69, 0x74, 0x5f, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x5f, 0x63, 0x6f, 0x76, 0x65, 0x72,
0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x69, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x72, 0x61,
0x69, 0x74, 0x41, 0x6c, 0x62, 0x75, 0x6d, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x0e,
0x70, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x11,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d,
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f,
0x75, 0x70, 0x52, 0x0d, 0x70, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x47, 0x72, 0x6f, 0x75,
0x70, 0x12, 0x3d, 0x0a, 0x0b, 0x73, 0x61, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64,
0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79,
0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x61, 0x6c, 0x65, 0x50, 0x65,
0x72, 0x69, 0x6f, 0x64, 0x52, 0x0a, 0x73, 0x61, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64,
0x12, 0x42, 0x0a, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79,
0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61,
0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69,
0x6c, 0x69, 0x74, 0x79, 0x22, 0xe7, 0x07, 0x0a, 0x05, 0x41, 0x6c, 0x62, 0x75, 0x6d, 0x12, 0x10,
0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x67, 0x69, 0x64,
0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x18, 0x03,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d,
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x52, 0x06,
0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d,
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x6c, 0x62, 0x75, 0x6d, 0x2e, 0x54, 0x79,
0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65,
0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x2a,
0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73,
0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f,
0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0a,
0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x65,
0x6e, 0x72, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x65, 0x6e, 0x72, 0x65,
0x12, 0x2d, 0x0a, 0x05, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x17, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
0x74, 0x61, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12,
0x3d, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x0a,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d,
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
0x49, 0x64, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x2a,
0x0a, 0x04, 0x64, 0x69, 0x73, 0x63, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73,
0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
0x44, 0x69, 0x73, 0x63, 0x52, 0x04, 0x64, 0x69, 0x73, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65,
0x76, 0x69, 0x65, 0x77, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x76, 0x69,
0x65, 0x77, 0x12, 0x39, 0x0a, 0x09, 0x63, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18,
0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e,
0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67,
0x68, 0x74, 0x52, 0x09, 0x63, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x3f, 0x0a,
0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74,
0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31,
0x0a, 0x07, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x17, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
0x74, 0x61, 0x2e, 0x41, 0x6c, 0x62, 0x75, 0x6d, 0x52, 0x07, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65,
0x64, 0x12, 0x3d, 0x0a, 0x0b, 0x73, 0x61, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64,
0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79,
0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x61, 0x6c, 0x65, 0x50, 0x65,
0x72, 0x69, 0x6f, 0x64, 0x52, 0x0a, 0x73, 0x61, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64,
0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18,
0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e,
0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x47, 0x72,
0x6f, 0x75, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12,
0x25, 0x0a, 0x0e, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x69, 0x74, 0x6c,
0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61,
0x6c, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
0x6e, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74,
0x79, 0x70, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74,
0x79, 0x70, 0x65, 0x53, 0x74, 0x72, 0x12, 0x42, 0x0a, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61,
0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73,
0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x61, 0x76,
0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x52, 0x0a, 0x04, 0x54, 0x79,
0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4c, 0x42, 0x55, 0x4d, 0x10, 0x01, 0x12, 0x0a, 0x0a,
0x06, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x4d,
0x50, 0x49, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x06, 0x0a, 0x02, 0x45, 0x50,
0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x42, 0x4f, 0x4f, 0x4b, 0x10,
0x05, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x4f, 0x44, 0x43, 0x41, 0x53, 0x54, 0x10, 0x06, 0x22, 0x80,
0x09, 0x0a, 0x05, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x67, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d,
0x0a, 0x05, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
0x2e, 0x41, 0x6c, 0x62, 0x75, 0x6d, 0x52, 0x05, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x12, 0x30, 0x0a,
0x06, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e,
0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x52, 0x06, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x12,
0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52,
0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x63, 0x5f,
0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0a, 0x64, 0x69,
0x73, 0x63, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x11, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69,
0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0a, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61,
0x72, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74,
0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74,
0x12, 0x3d, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18,
0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e,
0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61,
0x6c, 0x49, 0x64, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12,
0x3f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d,
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x12, 0x2f, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b,
0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
0x61, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x04, 0x66, 0x69, 0x6c,
0x65, 0x12, 0x39, 0x0a, 0x0b, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65,
0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79,
0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x52,
0x0b, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x12, 0x3d, 0x0a, 0x0b,
0x73, 0x61, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x0e, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61,
0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x61, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x52,
0x0a, 0x73, 0x61, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x35, 0x0a, 0x07, 0x70,
0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73,
0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
0x41, 0x75, 0x64, 0x69, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, 0x65, 0x76, 0x69,
0x65, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09,
0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x65, 0x61, 0x72, 0x6c, 0x69, 0x65,
0x73, 0x74, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x65, 0x61, 0x72, 0x6c, 0x69, 0x65, 0x73,
0x74, 0x4c, 0x69, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1d,
0x0a, 0x0a, 0x68, 0x61, 0x73, 0x5f, 0x6c, 0x79, 0x72, 0x69, 0x63, 0x73, 0x18, 0x12, 0x20, 0x01,
0x28, 0x08, 0x52, 0x09, 0x68, 0x61, 0x73, 0x4c, 0x79, 0x72, 0x69, 0x63, 0x73, 0x12, 0x42, 0x0a,
0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x13, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65,
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c,
0x69, 0x74, 0x79, 0x52, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
0x79, 0x12, 0x36, 0x0a, 0x08, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x18, 0x15, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65,
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52,
0x08, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x36, 0x0a, 0x17, 0x6c, 0x61, 0x6e,
0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x66, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d,
0x61, 0x6e, 0x63, 0x65, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x6c, 0x61, 0x6e, 0x67,
0x75, 0x61, 0x67, 0x65, 0x4f, 0x66, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63,
0x65, 0x12, 0x46, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x61, 0x74,
0x69, 0x6e, 0x67, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x70, 0x6f, 0x74,
0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6e,
0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74,
0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x72, 0x69,
0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x54, 0x69, 0x74, 0x6c, 0x65,
0x12, 0x23, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x74, 0x6c,
0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x4a, 0x0a, 0x10, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f,
0x77, 0x69, 0x74, 0x68, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x20, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
0x74, 0x61, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x52, 0x6f, 0x6c,
0x65, 0x52, 0x0e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x52, 0x6f, 0x6c,
0x65, 0x22, 0xf7, 0x02, 0x0a, 0x0e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68,
0x52, 0x6f, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x67,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74,
0x47, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61,
0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74,
0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74,
0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68,
0x52, 0x6f, 0x6c, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52,
0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0xe3, 0x01, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74,
0x52, 0x6f, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x5f, 0x52,
0x4f, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1b, 0x0a,
0x17, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x49,
0x4e, 0x5f, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x52,
0x54, 0x49, 0x53, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52,
0x45, 0x44, 0x5f, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x41,
0x52, 0x54, 0x49, 0x53, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x49, 0x58,
0x45, 0x52, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x5f, 0x52,
0x4f, 0x4c, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x41,
0x52, 0x54, 0x49, 0x53, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4f,
0x53, 0x45, 0x52, 0x10, 0x05, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x5f,
0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x44, 0x55, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x06,
0x12, 0x19, 0x0a, 0x15, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f,
0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x10, 0x07, 0x22, 0x94, 0x07, 0x0a, 0x04,
0x53, 0x68, 0x6f, 0x77, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0c, 0x52, 0x03, 0x67, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65,
0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x40, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x15,
0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x70, 0x75, 0x6c,
0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x41, 0x20, 0x01, 0x28, 0x11, 0x52, 0x14, 0x64, 0x65, 0x70,
0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74,
0x79, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x18, 0x42,
0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12,
0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x43, 0x20, 0x01, 0x28,
0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65,
0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x18, 0x44, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65,
0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x6f, 0x76, 0x65, 0x72,
0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x45, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73,
0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
0x49, 0x6d, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x76, 0x65,
0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64,
0x65, 0x18, 0x46, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66,
0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x70, 0x69, 0x73, 0x6f,
0x64, 0x65, 0x52, 0x07, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x63,
0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x47, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b,
0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
0x61, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x52, 0x09, 0x63, 0x6f, 0x70,
0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x3f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x48, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70,
0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52,
0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74,
0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f,
0x72, 0x64, 0x18, 0x49, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72,
0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
0x4a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e,
0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x4d, 0x65,
0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79,
0x70, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f,
0x6e, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x4b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e,
0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
0x2e, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f,
0x6e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x0c, 0x61, 0x76, 0x61, 0x69,
0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x4e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e,
0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
0x61, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0c,
0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b,
0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x53, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x55, 0x72, 0x69, 0x12, 0x24, 0x0a,
0x0e, 0x6d, 0x75, 0x73, 0x69, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x74, 0x61, 0x6c, 0x6b, 0x18,
0x55, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6d, 0x75, 0x73, 0x69, 0x63, 0x41, 0x6e, 0x64, 0x54,
0x61, 0x6c, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x62,
0x6f, 0x6f, 0x6b, 0x18, 0x59, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x41, 0x75, 0x64,
0x69, 0x6f, 0x62, 0x6f, 0x6f, 0x6b, 0x22, 0x2c, 0x0a, 0x09, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54,
0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x49, 0x58, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09,
0x0a, 0x05, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x49, 0x44,
0x45, 0x4f, 0x10, 0x02, 0x22, 0x3c, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x45, 0x51, 0x55,
0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x50, 0x49, 0x53,
0x4f, 0x44, 0x49, 0x43, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x43, 0x45, 0x4e, 0x54,
0x10, 0x03, 0x22, 0xcd, 0x09, 0x0a, 0x07, 0x45, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x12, 0x10,
0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x67, 0x69, 0x64,
0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x18, 0x07, 0x20, 0x01, 0x28, 0x11, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x12, 0x31, 0x0a, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x1b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
0x74, 0x61, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x05, 0x61, 0x75,
0x64, 0x69, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
0x6f, 0x6e, 0x18, 0x40, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18,
0x41, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x39, 0x0a,
0x0c, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x42, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65,
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x70, 0x75, 0x62,
0x6c, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x15, 0x64, 0x65, 0x70, 0x72,
0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74,
0x79, 0x18, 0x43, 0x20, 0x01, 0x28, 0x11, 0x52, 0x14, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61,
0x74, 0x65, 0x64, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3d, 0x0a,
0x0b, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x44, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74,
0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70,
0x52, 0x0a, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08,
0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x45, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x70, 0x6c,
0x69, 0x63, 0x69, 0x74, 0x18, 0x46, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, 0x70, 0x6c,
0x69, 0x63, 0x69, 0x74, 0x12, 0x2a, 0x0a, 0x04, 0x73, 0x68, 0x6f, 0x77, 0x18, 0x47, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74,
0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x04, 0x73, 0x68, 0x6f, 0x77,
0x12, 0x31, 0x0a, 0x05, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x18, 0x48, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x1b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
0x74, 0x61, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x69,
0x64, 0x65, 0x6f, 0x12, 0x40, 0x0a, 0x0d, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x5f, 0x70, 0x72, 0x65,
0x76, 0x69, 0x65, 0x77, 0x18, 0x49, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x6f,
0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x69,
0x64, 0x65, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x0c, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x50, 0x72,
0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x40, 0x0a, 0x0d, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x70,
0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x4a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73,
0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
0x41, 0x75, 0x64, 0x69, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x0c, 0x61, 0x75, 0x64, 0x69, 0x6f,
0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x3f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72,
0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x4b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73,
0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x72, 0x65, 0x73,
0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0c, 0x66, 0x72, 0x65, 0x65,
0x7a, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
0x61, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0b, 0x66, 0x72,
0x65, 0x65, 0x7a, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79,
0x77, 0x6f, 0x72, 0x64, 0x18, 0x4d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77,
0x6f, 0x72, 0x64, 0x12, 0x3a, 0x0a, 0x19, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x62, 0x61, 0x63,
0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x62, 0x61, 0x63, 0x6b,
0x18, 0x51, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x42, 0x61, 0x63,
0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x12,
0x42, 0x0a, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18,
0x52, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e,
0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62,
0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c,
0x69, 0x74, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f,
0x75, 0x72, 0x6c, 0x18, 0x53, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72,
0x6e, 0x61, 0x6c, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x57,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d,
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x2e,
0x45, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70,
0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x75, 0x73, 0x69, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x74,
0x61, 0x6c, 0x6b, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6d, 0x75, 0x73, 0x69, 0x63,
0x41, 0x6e, 0x64, 0x54, 0x61, 0x6c, 0x6b, 0x12, 0x46, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65,
0x6e, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x5f, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x1f, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67,
0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12,
0x30, 0x0a, 0x14, 0x69, 0x73, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x62, 0x6f, 0x6f, 0x6b, 0x5f,
0x63, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x18, 0x60, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69,
0x73, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x62, 0x6f, 0x6f, 0x6b, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65,
0x72, 0x22, 0x2f, 0x0a, 0x0b, 0x45, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65,
0x12, 0x08, 0x0a, 0x04, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x52,
0x41, 0x49, 0x4c, 0x45, 0x52, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x4f, 0x4e, 0x55, 0x53,
0x10, 0x02, 0x22, 0x1e, 0x0a, 0x08, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x12,
0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x75, 0x75,
0x69, 0x64, 0x22, 0x54, 0x0a, 0x09, 0x54, 0x6f, 0x70, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x73, 0x12,
0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x74, 0x72, 0x61,
0x63, 0x6b, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69,
0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x63,
0x6b, 0x52, 0x05, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x22, 0x62, 0x0a, 0x0e, 0x41, 0x63, 0x74, 0x69,
0x76, 0x69, 0x74, 0x79, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74,
0x61, 0x72, 0x74, 0x5f, 0x79, 0x65, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x09,
0x73, 0x74, 0x61, 0x72, 0x74, 0x59, 0x65, 0x61, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64,
0x5f, 0x79, 0x65, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x07, 0x65, 0x6e, 0x64,
0x59, 0x65, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x63, 0x61, 0x64, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x64, 0x65, 0x63, 0x61, 0x64, 0x65, 0x22, 0x3b, 0x0a, 0x0a,
0x41, 0x6c, 0x62, 0x75, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2d, 0x0a, 0x05, 0x61, 0x6c,
0x62, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x6f, 0x74,
0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x6c, 0x62,
0x75, 0x6d, 0x52, 0x05, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x22, 0x6e, 0x0a, 0x04, 0x44, 0x61, 0x74,
0x65, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x65, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52,
0x04, 0x79, 0x65, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x02,
0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x64,
0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x03, 0x64, 0x61, 0x79, 0x12, 0x12, 0x0a,
0x04, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x04, 0x68, 0x6f, 0x75,
0x72, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
0x11, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x22, 0xb7, 0x01, 0x0a, 0x05, 0x49, 0x6d,
0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x04,
0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f,
0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6d,
0x61, 0x67, 0x65, 0x2e, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x14,
0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x77,
0x69, 0x64, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04,
0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x35, 0x0a, 0x04,
0x53, 0x69, 0x7a, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10,
0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x4d, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05,
0x4c, 0x41, 0x52, 0x47, 0x45, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x58, 0x4c, 0x41, 0x52, 0x47,
0x45, 0x10, 0x03, 0x22, 0x3b, 0x0a, 0x0a, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75,
0x70, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x17, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64,
0x61, 0x74, 0x61, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65,
0x22, 0x99, 0x01, 0x0a, 0x09, 0x42, 0x69, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x79, 0x12, 0x12,
0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65,
0x78, 0x74, 0x12, 0x33, 0x0a, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x18, 0x02,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d,
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x08, 0x70,
0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x12, 0x43, 0x0a, 0x0e, 0x70, 0x6f, 0x72, 0x74, 0x72,
0x61, 0x69, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
0x74, 0x61, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0d, 0x70,
0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x61, 0x0a, 0x04,
0x44, 0x69, 0x73, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01,
0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x12, 0x2d, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x17, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
0x74, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x52, 0x05, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x22,
0x6b, 0x0a, 0x09, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x34, 0x0a, 0x04,
0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x73, 0x70, 0x6f,
0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f,
0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79,
0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, 0x14, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x05,
0x0a, 0x01, 0x50, 0x10, 0x00, 0x12, 0x05, 0x0a, 0x01, 0x43, 0x10, 0x01, 0x22, 0x98, 0x03, 0x0a,
0x0b, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x09,
0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32,
0x27, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43,
0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x52, 0x09, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f,
0x67, 0x75, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x22, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61,
0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x63,
0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x05, 0x20, 0x03,
0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x53, 0x74, 0x72,
0x12, 0x2d, 0x0a, 0x11, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x61, 0x6c,
0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x10, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x12,
0x31, 0x0a, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x66, 0x6f, 0x72,
0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x12,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64,
0x65, 0x6e, 0x22, 0x55, 0x0a, 0x09, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x12,
0x06, 0x0a, 0x02, 0x41, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x55, 0x42, 0x53, 0x43,
0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x41, 0x54,
0x41, 0x4c, 0x4f, 0x47, 0x55, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07,
0x53, 0x48, 0x55, 0x46, 0x46, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x4d,
0x4d, 0x45, 0x52, 0x43, 0x49, 0x41, 0x4c, 0x10, 0x04, 0x22, 0x15, 0x0a, 0x04, 0x54, 0x79, 0x70,
0x65, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x49, 0x4e, 0x47, 0x10, 0x00,
0x42, 0x15, 0x0a, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x74,
0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x61, 0x0a, 0x0c, 0x41, 0x76, 0x61, 0x69, 0x6c,
0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x74, 0x61, 0x6c,
0x6f, 0x67, 0x75, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c,
0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x53, 0x74, 0x72, 0x12, 0x2c, 0x0a, 0x05,
0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x70,
0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44,
0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x22, 0xa5, 0x01, 0x0a, 0x0a, 0x53,
0x61, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x3f, 0x0a, 0x0b, 0x72, 0x65, 0x73,
0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d,
0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
0x61, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x72,
0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74,
0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x70, 0x6f, 0x74,
0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x61, 0x74,
0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x28, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18,
0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e,
0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x03, 0x65,
0x6e, 0x64, 0x22, 0x30, 0x0a, 0x0a, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64,
0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x74, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x02, 0x69, 0x64, 0x22, 0x91, 0x02, 0x0a, 0x09, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x46, 0x69,
0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0c, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x66,
0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x73, 0x70,
0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41,
0x75, 0x64, 0x69, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52,
0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xae, 0x01, 0x0a, 0x06, 0x46, 0x6f, 0x72, 0x6d,
0x61, 0x74, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x47, 0x47, 0x5f, 0x56, 0x4f, 0x52, 0x42, 0x49, 0x53,
0x5f, 0x39, 0x36, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x47, 0x47, 0x5f, 0x56, 0x4f, 0x52,
0x42, 0x49, 0x53, 0x5f, 0x31, 0x36, 0x30, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x47, 0x47,
0x5f, 0x56, 0x4f, 0x52, 0x42, 0x49, 0x53, 0x5f, 0x33, 0x32, 0x30, 0x10, 0x02, 0x12, 0x0b, 0x0a,
0x07, 0x4d, 0x50, 0x33, 0x5f, 0x32, 0x35, 0x36, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x50,
0x33, 0x5f, 0x33, 0x32, 0x30, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x50, 0x33, 0x5f, 0x31,
0x36, 0x30, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x50, 0x33, 0x5f, 0x39, 0x36, 0x10, 0x06,
0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x50, 0x33, 0x5f, 0x31, 0x36, 0x30, 0x5f, 0x45, 0x4e, 0x43, 0x10,
0x07, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x41, 0x43, 0x5f, 0x32, 0x34, 0x10, 0x08, 0x12, 0x0a, 0x0a,
0x06, 0x41, 0x41, 0x43, 0x5f, 0x34, 0x38, 0x10, 0x09, 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x4c, 0x41,
0x43, 0x5f, 0x46, 0x4c, 0x41, 0x43, 0x10, 0x10, 0x22, 0x24, 0x0a, 0x09, 0x56, 0x69, 0x64, 0x65,
0x6f, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x3b,
0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12,
0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67,
0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x42, 0x4b, 0x0a, 0x1a, 0x63,
0x6f, 0x6d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64,
0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64,
0x61, 0x74, 0x61, 0x48, 0x02, 0x5a, 0x21, 0x74, 0x75, 0x78, 0x70, 0x61, 0x2e, 0x69, 0x6e, 0x2f,
0x61, 0x2f, 0x67, 0x6f, 0x70, 0x6c, 0x61, 0x79, 0x64, 0x2f, 0x6c, 0x69, 0x62, 0x2f, 0x73, 0x70,
0x6f, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
}
var (
file_metadata_proto_rawDescOnce sync.Once
file_metadata_proto_rawDescData = file_metadata_proto_rawDesc
)
func file_metadata_proto_rawDescGZIP() []byte {
file_metadata_proto_rawDescOnce.Do(func() {
file_metadata_proto_rawDescData = protoimpl.X.CompressGZIP(file_metadata_proto_rawDescData)
})
return file_metadata_proto_rawDescData
}
var file_metadata_proto_enumTypes = make([]protoimpl.EnumInfo, 10)
var file_metadata_proto_msgTypes = make([]protoimpl.MessageInfo, 23)
var file_metadata_proto_goTypes = []interface{}{
(Album_Type)(0), // 0: spotify.metadata.Album.Type
(ArtistWithRole_ArtistRole)(0), // 1: spotify.metadata.ArtistWithRole.ArtistRole
(Show_MediaType)(0), // 2: spotify.metadata.Show.MediaType
(Show_ConsumptionOrder)(0), // 3: spotify.metadata.Show.ConsumptionOrder
(Episode_EpisodeType)(0), // 4: spotify.metadata.Episode.EpisodeType
(Image_Size)(0), // 5: spotify.metadata.Image.Size
(Copyright_Type)(0), // 6: spotify.metadata.Copyright.Type
(Restriction_Catalogue)(0), // 7: spotify.metadata.Restriction.Catalogue
(Restriction_Type)(0), // 8: spotify.metadata.Restriction.Type
(AudioFile_Format)(0), // 9: spotify.metadata.AudioFile.Format
(*Artist)(nil), // 10: spotify.metadata.Artist
(*Album)(nil), // 11: spotify.metadata.Album
(*Track)(nil), // 12: spotify.metadata.Track
(*ArtistWithRole)(nil), // 13: spotify.metadata.ArtistWithRole
(*Show)(nil), // 14: spotify.metadata.Show
(*Episode)(nil), // 15: spotify.metadata.Episode
(*Licensor)(nil), // 16: spotify.metadata.Licensor
(*TopTracks)(nil), // 17: spotify.metadata.TopTracks
(*ActivityPeriod)(nil), // 18: spotify.metadata.ActivityPeriod
(*AlbumGroup)(nil), // 19: spotify.metadata.AlbumGroup
(*Date)(nil), // 20: spotify.metadata.Date
(*Image)(nil), // 21: spotify.metadata.Image
(*ImageGroup)(nil), // 22: spotify.metadata.ImageGroup
(*Biography)(nil), // 23: spotify.metadata.Biography
(*Disc)(nil), // 24: spotify.metadata.Disc
(*Copyright)(nil), // 25: spotify.metadata.Copyright
(*Restriction)(nil), // 26: spotify.metadata.Restriction
(*Availability)(nil), // 27: spotify.metadata.Availability
(*SalePeriod)(nil), // 28: spotify.metadata.SalePeriod
(*ExternalId)(nil), // 29: spotify.metadata.ExternalId
(*AudioFile)(nil), // 30: spotify.metadata.AudioFile
(*VideoFile)(nil), // 31: spotify.metadata.VideoFile
(*ContentRating)(nil), // 32: spotify.metadata.ContentRating
}
var file_metadata_proto_depIdxs = []int32{
17, // 0: spotify.metadata.Artist.top_track:type_name -> spotify.metadata.TopTracks
19, // 1: spotify.metadata.Artist.album_group:type_name -> spotify.metadata.AlbumGroup
19, // 2: spotify.metadata.Artist.single_group:type_name -> spotify.metadata.AlbumGroup
19, // 3: spotify.metadata.Artist.compilation_group:type_name -> spotify.metadata.AlbumGroup
19, // 4: spotify.metadata.Artist.appears_on_group:type_name -> spotify.metadata.AlbumGroup
29, // 5: spotify.metadata.Artist.external_id:type_name -> spotify.metadata.ExternalId
21, // 6: spotify.metadata.Artist.portrait:type_name -> spotify.metadata.Image
23, // 7: spotify.metadata.Artist.biography:type_name -> spotify.metadata.Biography
18, // 8: spotify.metadata.Artist.activity_period:type_name -> spotify.metadata.ActivityPeriod
26, // 9: spotify.metadata.Artist.restriction:type_name -> spotify.metadata.Restriction
10, // 10: spotify.metadata.Artist.related:type_name -> spotify.metadata.Artist
22, // 11: spotify.metadata.Artist.portrait_group:type_name -> spotify.metadata.ImageGroup
28, // 12: spotify.metadata.Artist.sale_period:type_name -> spotify.metadata.SalePeriod
27, // 13: spotify.metadata.Artist.availability:type_name -> spotify.metadata.Availability
10, // 14: spotify.metadata.Album.artist:type_name -> spotify.metadata.Artist
0, // 15: spotify.metadata.Album.type:type_name -> spotify.metadata.Album.Type
20, // 16: spotify.metadata.Album.date:type_name -> spotify.metadata.Date
21, // 17: spotify.metadata.Album.cover:type_name -> spotify.metadata.Image
29, // 18: spotify.metadata.Album.external_id:type_name -> spotify.metadata.ExternalId
24, // 19: spotify.metadata.Album.disc:type_name -> spotify.metadata.Disc
25, // 20: spotify.metadata.Album.copyright:type_name -> spotify.metadata.Copyright
26, // 21: spotify.metadata.Album.restriction:type_name -> spotify.metadata.Restriction
11, // 22: spotify.metadata.Album.related:type_name -> spotify.metadata.Album
28, // 23: spotify.metadata.Album.sale_period:type_name -> spotify.metadata.SalePeriod
22, // 24: spotify.metadata.Album.cover_group:type_name -> spotify.metadata.ImageGroup
27, // 25: spotify.metadata.Album.availability:type_name -> spotify.metadata.Availability
11, // 26: spotify.metadata.Track.album:type_name -> spotify.metadata.Album
10, // 27: spotify.metadata.Track.artist:type_name -> spotify.metadata.Artist
29, // 28: spotify.metadata.Track.external_id:type_name -> spotify.metadata.ExternalId
26, // 29: spotify.metadata.Track.restriction:type_name -> spotify.metadata.Restriction
30, // 30: spotify.metadata.Track.file:type_name -> spotify.metadata.AudioFile
12, // 31: spotify.metadata.Track.alternative:type_name -> spotify.metadata.Track
28, // 32: spotify.metadata.Track.sale_period:type_name -> spotify.metadata.SalePeriod
30, // 33: spotify.metadata.Track.preview:type_name -> spotify.metadata.AudioFile
27, // 34: spotify.metadata.Track.availability:type_name -> spotify.metadata.Availability
16, // 35: spotify.metadata.Track.licensor:type_name -> spotify.metadata.Licensor
32, // 36: spotify.metadata.Track.content_rating:type_name -> spotify.metadata.ContentRating
13, // 37: spotify.metadata.Track.artist_with_role:type_name -> spotify.metadata.ArtistWithRole
1, // 38: spotify.metadata.ArtistWithRole.role:type_name -> spotify.metadata.ArtistWithRole.ArtistRole
22, // 39: spotify.metadata.Show.cover_image:type_name -> spotify.metadata.ImageGroup
15, // 40: spotify.metadata.Show.episode:type_name -> spotify.metadata.Episode
25, // 41: spotify.metadata.Show.copyright:type_name -> spotify.metadata.Copyright
26, // 42: spotify.metadata.Show.restriction:type_name -> spotify.metadata.Restriction
2, // 43: spotify.metadata.Show.media_type:type_name -> spotify.metadata.Show.MediaType
3, // 44: spotify.metadata.Show.consumption_order:type_name -> spotify.metadata.Show.ConsumptionOrder
27, // 45: spotify.metadata.Show.availability:type_name -> spotify.metadata.Availability
30, // 46: spotify.metadata.Episode.audio:type_name -> spotify.metadata.AudioFile
20, // 47: spotify.metadata.Episode.publish_time:type_name -> spotify.metadata.Date
22, // 48: spotify.metadata.Episode.cover_image:type_name -> spotify.metadata.ImageGroup
14, // 49: spotify.metadata.Episode.show:type_name -> spotify.metadata.Show
31, // 50: spotify.metadata.Episode.video:type_name -> spotify.metadata.VideoFile
31, // 51: spotify.metadata.Episode.video_preview:type_name -> spotify.metadata.VideoFile
30, // 52: spotify.metadata.Episode.audio_preview:type_name -> spotify.metadata.AudioFile
26, // 53: spotify.metadata.Episode.restriction:type_name -> spotify.metadata.Restriction
22, // 54: spotify.metadata.Episode.freeze_frame:type_name -> spotify.metadata.ImageGroup
27, // 55: spotify.metadata.Episode.availability:type_name -> spotify.metadata.Availability
4, // 56: spotify.metadata.Episode.type:type_name -> spotify.metadata.Episode.EpisodeType
32, // 57: spotify.metadata.Episode.content_rating:type_name -> spotify.metadata.ContentRating
12, // 58: spotify.metadata.TopTracks.track:type_name -> spotify.metadata.Track
11, // 59: spotify.metadata.AlbumGroup.album:type_name -> spotify.metadata.Album
5, // 60: spotify.metadata.Image.size:type_name -> spotify.metadata.Image.Size
21, // 61: spotify.metadata.ImageGroup.image:type_name -> spotify.metadata.Image
21, // 62: spotify.metadata.Biography.portrait:type_name -> spotify.metadata.Image
22, // 63: spotify.metadata.Biography.portrait_group:type_name -> spotify.metadata.ImageGroup
12, // 64: spotify.metadata.Disc.track:type_name -> spotify.metadata.Track
6, // 65: spotify.metadata.Copyright.type:type_name -> spotify.metadata.Copyright.Type
7, // 66: spotify.metadata.Restriction.catalogue:type_name -> spotify.metadata.Restriction.Catalogue
8, // 67: spotify.metadata.Restriction.type:type_name -> spotify.metadata.Restriction.Type
20, // 68: spotify.metadata.Availability.start:type_name -> spotify.metadata.Date
26, // 69: spotify.metadata.SalePeriod.restriction:type_name -> spotify.metadata.Restriction
20, // 70: spotify.metadata.SalePeriod.start:type_name -> spotify.metadata.Date
20, // 71: spotify.metadata.SalePeriod.end:type_name -> spotify.metadata.Date
9, // 72: spotify.metadata.AudioFile.format:type_name -> spotify.metadata.AudioFile.Format
73, // [73:73] is the sub-list for method output_type
73, // [73:73] is the sub-list for method input_type
73, // [73:73] is the sub-list for extension type_name
73, // [73:73] is the sub-list for extension extendee
0, // [0:73] is the sub-list for field type_name
}
func init() { file_metadata_proto_init() }
func file_metadata_proto_init() {
if File_metadata_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_metadata_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Artist); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Album); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Track); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ArtistWithRole); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Show); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Episode); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Licensor); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TopTracks); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ActivityPeriod); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AlbumGroup); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Date); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[11].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_metadata_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ImageGroup); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Biography); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Disc); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Copyright); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Restriction); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Availability); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SalePeriod); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ExternalId); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AudioFile); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VideoFile); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_metadata_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ContentRating); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_metadata_proto_msgTypes[16].OneofWrappers = []interface{}{
(*Restriction_CountriesAllowed)(nil),
(*Restriction_CountriesForbidden)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_metadata_proto_rawDesc,
NumEnums: 10,
NumMessages: 23,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_metadata_proto_goTypes,
DependencyIndexes: file_metadata_proto_depIdxs,
EnumInfos: file_metadata_proto_enumTypes,
MessageInfos: file_metadata_proto_msgTypes,
}.Build()
File_metadata_proto = out.File
file_metadata_proto_rawDesc = nil
file_metadata_proto_goTypes = nil
file_metadata_proto_depIdxs = nil
}