// Messages describing APK Set's table of contents (toc.pb entry). // Please be advised that the ultimate source is at // https://github.com/google/bundletool/tree/master/src/main/proto // so you have been warned. // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.26.0 // protoc v3.9.1 // source: targeting.proto package bundle_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 ScreenDensity_DensityAlias int32 const ( ScreenDensity_DENSITY_UNSPECIFIED ScreenDensity_DensityAlias = 0 ScreenDensity_NODPI ScreenDensity_DensityAlias = 1 ScreenDensity_LDPI ScreenDensity_DensityAlias = 2 ScreenDensity_MDPI ScreenDensity_DensityAlias = 3 ScreenDensity_TVDPI ScreenDensity_DensityAlias = 4 ScreenDensity_HDPI ScreenDensity_DensityAlias = 5 ScreenDensity_XHDPI ScreenDensity_DensityAlias = 6 ScreenDensity_XXHDPI ScreenDensity_DensityAlias = 7 ScreenDensity_XXXHDPI ScreenDensity_DensityAlias = 8 ) // Enum value maps for ScreenDensity_DensityAlias. var ( ScreenDensity_DensityAlias_name = map[int32]string{ 0: "DENSITY_UNSPECIFIED", 1: "NODPI", 2: "LDPI", 3: "MDPI", 4: "TVDPI", 5: "HDPI", 6: "XHDPI", 7: "XXHDPI", 8: "XXXHDPI", } ScreenDensity_DensityAlias_value = map[string]int32{ "DENSITY_UNSPECIFIED": 0, "NODPI": 1, "LDPI": 2, "MDPI": 3, "TVDPI": 4, "HDPI": 5, "XHDPI": 6, "XXHDPI": 7, "XXXHDPI": 8, } ) func (x ScreenDensity_DensityAlias) Enum() *ScreenDensity_DensityAlias { p := new(ScreenDensity_DensityAlias) *p = x return p } func (x ScreenDensity_DensityAlias) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (ScreenDensity_DensityAlias) Descriptor() protoreflect.EnumDescriptor { return file_targeting_proto_enumTypes[0].Descriptor() } func (ScreenDensity_DensityAlias) Type() protoreflect.EnumType { return &file_targeting_proto_enumTypes[0] } func (x ScreenDensity_DensityAlias) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use ScreenDensity_DensityAlias.Descriptor instead. func (ScreenDensity_DensityAlias) EnumDescriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{4, 0} } type TextureCompressionFormat_TextureCompressionFormatAlias int32 const ( TextureCompressionFormat_UNSPECIFIED_TEXTURE_COMPRESSION_FORMAT TextureCompressionFormat_TextureCompressionFormatAlias = 0 TextureCompressionFormat_ETC1_RGB8 TextureCompressionFormat_TextureCompressionFormatAlias = 1 TextureCompressionFormat_PALETTED TextureCompressionFormat_TextureCompressionFormatAlias = 2 TextureCompressionFormat_THREE_DC TextureCompressionFormat_TextureCompressionFormatAlias = 3 TextureCompressionFormat_ATC TextureCompressionFormat_TextureCompressionFormatAlias = 4 TextureCompressionFormat_LATC TextureCompressionFormat_TextureCompressionFormatAlias = 5 TextureCompressionFormat_DXT1 TextureCompressionFormat_TextureCompressionFormatAlias = 6 TextureCompressionFormat_S3TC TextureCompressionFormat_TextureCompressionFormatAlias = 7 TextureCompressionFormat_PVRTC TextureCompressionFormat_TextureCompressionFormatAlias = 8 TextureCompressionFormat_ASTC TextureCompressionFormat_TextureCompressionFormatAlias = 9 TextureCompressionFormat_ETC2 TextureCompressionFormat_TextureCompressionFormatAlias = 10 ) // Enum value maps for TextureCompressionFormat_TextureCompressionFormatAlias. var ( TextureCompressionFormat_TextureCompressionFormatAlias_name = map[int32]string{ 0: "UNSPECIFIED_TEXTURE_COMPRESSION_FORMAT", 1: "ETC1_RGB8", 2: "PALETTED", 3: "THREE_DC", 4: "ATC", 5: "LATC", 6: "DXT1", 7: "S3TC", 8: "PVRTC", 9: "ASTC", 10: "ETC2", } TextureCompressionFormat_TextureCompressionFormatAlias_value = map[string]int32{ "UNSPECIFIED_TEXTURE_COMPRESSION_FORMAT": 0, "ETC1_RGB8": 1, "PALETTED": 2, "THREE_DC": 3, "ATC": 4, "LATC": 5, "DXT1": 6, "S3TC": 7, "PVRTC": 8, "ASTC": 9, "ETC2": 10, } ) func (x TextureCompressionFormat_TextureCompressionFormatAlias) Enum() *TextureCompressionFormat_TextureCompressionFormatAlias { p := new(TextureCompressionFormat_TextureCompressionFormatAlias) *p = x return p } func (x TextureCompressionFormat_TextureCompressionFormatAlias) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (TextureCompressionFormat_TextureCompressionFormatAlias) Descriptor() protoreflect.EnumDescriptor { return file_targeting_proto_enumTypes[1].Descriptor() } func (TextureCompressionFormat_TextureCompressionFormatAlias) Type() protoreflect.EnumType { return &file_targeting_proto_enumTypes[1] } func (x TextureCompressionFormat_TextureCompressionFormatAlias) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use TextureCompressionFormat_TextureCompressionFormatAlias.Descriptor instead. func (TextureCompressionFormat_TextureCompressionFormatAlias) EnumDescriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{10, 0} } type Abi_AbiAlias int32 const ( Abi_UNSPECIFIED_CPU_ARCHITECTURE Abi_AbiAlias = 0 Abi_ARMEABI Abi_AbiAlias = 1 Abi_ARMEABI_V7A Abi_AbiAlias = 2 Abi_ARM64_V8A Abi_AbiAlias = 3 Abi_X86 Abi_AbiAlias = 4 Abi_X86_64 Abi_AbiAlias = 5 Abi_MIPS Abi_AbiAlias = 6 Abi_MIPS64 Abi_AbiAlias = 7 ) // Enum value maps for Abi_AbiAlias. var ( Abi_AbiAlias_name = map[int32]string{ 0: "UNSPECIFIED_CPU_ARCHITECTURE", 1: "ARMEABI", 2: "ARMEABI_V7A", 3: "ARM64_V8A", 4: "X86", 5: "X86_64", 6: "MIPS", 7: "MIPS64", } Abi_AbiAlias_value = map[string]int32{ "UNSPECIFIED_CPU_ARCHITECTURE": 0, "ARMEABI": 1, "ARMEABI_V7A": 2, "ARM64_V8A": 3, "X86": 4, "X86_64": 5, "MIPS": 6, "MIPS64": 7, } ) func (x Abi_AbiAlias) Enum() *Abi_AbiAlias { p := new(Abi_AbiAlias) *p = x return p } func (x Abi_AbiAlias) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Abi_AbiAlias) Descriptor() protoreflect.EnumDescriptor { return file_targeting_proto_enumTypes[2].Descriptor() } func (Abi_AbiAlias) Type() protoreflect.EnumType { return &file_targeting_proto_enumTypes[2] } func (x Abi_AbiAlias) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Abi_AbiAlias.Descriptor instead. func (Abi_AbiAlias) EnumDescriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{11, 0} } type Sanitizer_SanitizerAlias int32 const ( Sanitizer_NONE Sanitizer_SanitizerAlias = 0 Sanitizer_HWADDRESS Sanitizer_SanitizerAlias = 1 ) // Enum value maps for Sanitizer_SanitizerAlias. var ( Sanitizer_SanitizerAlias_name = map[int32]string{ 0: "NONE", 1: "HWADDRESS", } Sanitizer_SanitizerAlias_value = map[string]int32{ "NONE": 0, "HWADDRESS": 1, } ) func (x Sanitizer_SanitizerAlias) Enum() *Sanitizer_SanitizerAlias { p := new(Sanitizer_SanitizerAlias) *p = x return p } func (x Sanitizer_SanitizerAlias) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Sanitizer_SanitizerAlias) Descriptor() protoreflect.EnumDescriptor { return file_targeting_proto_enumTypes[3].Descriptor() } func (Sanitizer_SanitizerAlias) Type() protoreflect.EnumType { return &file_targeting_proto_enumTypes[3] } func (x Sanitizer_SanitizerAlias) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Sanitizer_SanitizerAlias.Descriptor instead. func (Sanitizer_SanitizerAlias) EnumDescriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{13, 0} } // Targeting on the level of variants. type VariantTargeting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SdkVersionTargeting *SdkVersionTargeting `protobuf:"bytes,1,opt,name=sdk_version_targeting,json=sdkVersionTargeting,proto3" json:"sdk_version_targeting,omitempty"` AbiTargeting *AbiTargeting `protobuf:"bytes,2,opt,name=abi_targeting,json=abiTargeting,proto3" json:"abi_targeting,omitempty"` ScreenDensityTargeting *ScreenDensityTargeting `protobuf:"bytes,3,opt,name=screen_density_targeting,json=screenDensityTargeting,proto3" json:"screen_density_targeting,omitempty"` MultiAbiTargeting *MultiAbiTargeting `protobuf:"bytes,4,opt,name=multi_abi_targeting,json=multiAbiTargeting,proto3" json:"multi_abi_targeting,omitempty"` TextureCompressionFormatTargeting *TextureCompressionFormatTargeting `protobuf:"bytes,5,opt,name=texture_compression_format_targeting,json=textureCompressionFormatTargeting,proto3" json:"texture_compression_format_targeting,omitempty"` } func (x *VariantTargeting) Reset() { *x = VariantTargeting{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *VariantTargeting) String() string { return protoimpl.X.MessageStringOf(x) } func (*VariantTargeting) ProtoMessage() {} func (x *VariantTargeting) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 VariantTargeting.ProtoReflect.Descriptor instead. func (*VariantTargeting) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{0} } func (x *VariantTargeting) GetSdkVersionTargeting() *SdkVersionTargeting { if x != nil { return x.SdkVersionTargeting } return nil } func (x *VariantTargeting) GetAbiTargeting() *AbiTargeting { if x != nil { return x.AbiTargeting } return nil } func (x *VariantTargeting) GetScreenDensityTargeting() *ScreenDensityTargeting { if x != nil { return x.ScreenDensityTargeting } return nil } func (x *VariantTargeting) GetMultiAbiTargeting() *MultiAbiTargeting { if x != nil { return x.MultiAbiTargeting } return nil } func (x *VariantTargeting) GetTextureCompressionFormatTargeting() *TextureCompressionFormatTargeting { if x != nil { return x.TextureCompressionFormatTargeting } return nil } // Targeting on the level of individual APKs. type ApkTargeting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AbiTargeting *AbiTargeting `protobuf:"bytes,1,opt,name=abi_targeting,json=abiTargeting,proto3" json:"abi_targeting,omitempty"` GraphicsApiTargeting *GraphicsApiTargeting `protobuf:"bytes,2,opt,name=graphics_api_targeting,json=graphicsApiTargeting,proto3" json:"graphics_api_targeting,omitempty"` LanguageTargeting *LanguageTargeting `protobuf:"bytes,3,opt,name=language_targeting,json=languageTargeting,proto3" json:"language_targeting,omitempty"` ScreenDensityTargeting *ScreenDensityTargeting `protobuf:"bytes,4,opt,name=screen_density_targeting,json=screenDensityTargeting,proto3" json:"screen_density_targeting,omitempty"` SdkVersionTargeting *SdkVersionTargeting `protobuf:"bytes,5,opt,name=sdk_version_targeting,json=sdkVersionTargeting,proto3" json:"sdk_version_targeting,omitempty"` TextureCompressionFormatTargeting *TextureCompressionFormatTargeting `protobuf:"bytes,6,opt,name=texture_compression_format_targeting,json=textureCompressionFormatTargeting,proto3" json:"texture_compression_format_targeting,omitempty"` MultiAbiTargeting *MultiAbiTargeting `protobuf:"bytes,7,opt,name=multi_abi_targeting,json=multiAbiTargeting,proto3" json:"multi_abi_targeting,omitempty"` SanitizerTargeting *SanitizerTargeting `protobuf:"bytes,8,opt,name=sanitizer_targeting,json=sanitizerTargeting,proto3" json:"sanitizer_targeting,omitempty"` } func (x *ApkTargeting) Reset() { *x = ApkTargeting{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ApkTargeting) String() string { return protoimpl.X.MessageStringOf(x) } func (*ApkTargeting) ProtoMessage() {} func (x *ApkTargeting) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 ApkTargeting.ProtoReflect.Descriptor instead. func (*ApkTargeting) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{1} } func (x *ApkTargeting) GetAbiTargeting() *AbiTargeting { if x != nil { return x.AbiTargeting } return nil } func (x *ApkTargeting) GetGraphicsApiTargeting() *GraphicsApiTargeting { if x != nil { return x.GraphicsApiTargeting } return nil } func (x *ApkTargeting) GetLanguageTargeting() *LanguageTargeting { if x != nil { return x.LanguageTargeting } return nil } func (x *ApkTargeting) GetScreenDensityTargeting() *ScreenDensityTargeting { if x != nil { return x.ScreenDensityTargeting } return nil } func (x *ApkTargeting) GetSdkVersionTargeting() *SdkVersionTargeting { if x != nil { return x.SdkVersionTargeting } return nil } func (x *ApkTargeting) GetTextureCompressionFormatTargeting() *TextureCompressionFormatTargeting { if x != nil { return x.TextureCompressionFormatTargeting } return nil } func (x *ApkTargeting) GetMultiAbiTargeting() *MultiAbiTargeting { if x != nil { return x.MultiAbiTargeting } return nil } func (x *ApkTargeting) GetSanitizerTargeting() *SanitizerTargeting { if x != nil { return x.SanitizerTargeting } return nil } // Targeting on the module level. // The semantic of the targeting is the "AND" rule on all immediate values. type ModuleTargeting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SdkVersionTargeting *SdkVersionTargeting `protobuf:"bytes,1,opt,name=sdk_version_targeting,json=sdkVersionTargeting,proto3" json:"sdk_version_targeting,omitempty"` DeviceFeatureTargeting []*DeviceFeatureTargeting `protobuf:"bytes,2,rep,name=device_feature_targeting,json=deviceFeatureTargeting,proto3" json:"device_feature_targeting,omitempty"` UserCountriesTargeting *UserCountriesTargeting `protobuf:"bytes,3,opt,name=user_countries_targeting,json=userCountriesTargeting,proto3" json:"user_countries_targeting,omitempty"` } func (x *ModuleTargeting) Reset() { *x = ModuleTargeting{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ModuleTargeting) String() string { return protoimpl.X.MessageStringOf(x) } func (*ModuleTargeting) ProtoMessage() {} func (x *ModuleTargeting) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 ModuleTargeting.ProtoReflect.Descriptor instead. func (*ModuleTargeting) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{2} } func (x *ModuleTargeting) GetSdkVersionTargeting() *SdkVersionTargeting { if x != nil { return x.SdkVersionTargeting } return nil } func (x *ModuleTargeting) GetDeviceFeatureTargeting() []*DeviceFeatureTargeting { if x != nil { return x.DeviceFeatureTargeting } return nil } func (x *ModuleTargeting) GetUserCountriesTargeting() *UserCountriesTargeting { if x != nil { return x.UserCountriesTargeting } return nil } // User Countries targeting describing an inclusive/exclusive list of country // codes that module targets. type UserCountriesTargeting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // List of country codes in the two-letter CLDR territory format. CountryCodes []string `protobuf:"bytes,1,rep,name=country_codes,json=countryCodes,proto3" json:"country_codes,omitempty"` // Indicates if the list above is exclusive. Exclude bool `protobuf:"varint,2,opt,name=exclude,proto3" json:"exclude,omitempty"` } func (x *UserCountriesTargeting) Reset() { *x = UserCountriesTargeting{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserCountriesTargeting) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserCountriesTargeting) ProtoMessage() {} func (x *UserCountriesTargeting) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 UserCountriesTargeting.ProtoReflect.Descriptor instead. func (*UserCountriesTargeting) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{3} } func (x *UserCountriesTargeting) GetCountryCodes() []string { if x != nil { return x.CountryCodes } return nil } func (x *UserCountriesTargeting) GetExclude() bool { if x != nil { return x.Exclude } return false } type ScreenDensity struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to DensityOneof: // *ScreenDensity_DensityAlias_ // *ScreenDensity_DensityDpi DensityOneof isScreenDensity_DensityOneof `protobuf_oneof:"density_oneof"` } func (x *ScreenDensity) Reset() { *x = ScreenDensity{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ScreenDensity) String() string { return protoimpl.X.MessageStringOf(x) } func (*ScreenDensity) ProtoMessage() {} func (x *ScreenDensity) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 ScreenDensity.ProtoReflect.Descriptor instead. func (*ScreenDensity) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{4} } func (m *ScreenDensity) GetDensityOneof() isScreenDensity_DensityOneof { if m != nil { return m.DensityOneof } return nil } func (x *ScreenDensity) GetDensityAlias() ScreenDensity_DensityAlias { if x, ok := x.GetDensityOneof().(*ScreenDensity_DensityAlias_); ok { return x.DensityAlias } return ScreenDensity_DENSITY_UNSPECIFIED } func (x *ScreenDensity) GetDensityDpi() int32 { if x, ok := x.GetDensityOneof().(*ScreenDensity_DensityDpi); ok { return x.DensityDpi } return 0 } type isScreenDensity_DensityOneof interface { isScreenDensity_DensityOneof() } type ScreenDensity_DensityAlias_ struct { DensityAlias ScreenDensity_DensityAlias `protobuf:"varint,1,opt,name=density_alias,json=densityAlias,proto3,enum=android.bundle.ScreenDensity_DensityAlias,oneof"` } type ScreenDensity_DensityDpi struct { DensityDpi int32 `protobuf:"varint,2,opt,name=density_dpi,json=densityDpi,proto3,oneof"` } func (*ScreenDensity_DensityAlias_) isScreenDensity_DensityOneof() {} func (*ScreenDensity_DensityDpi) isScreenDensity_DensityOneof() {} // Wrapper message for `int32`. // // The JSON representation for `Int32Value` is JSON number. type Int32Value struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The int32 value. Value int32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` } func (x *Int32Value) Reset() { *x = Int32Value{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Int32Value) String() string { return protoimpl.X.MessageStringOf(x) } func (*Int32Value) ProtoMessage() {} func (x *Int32Value) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 Int32Value.ProtoReflect.Descriptor instead. func (*Int32Value) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{5} } func (x *Int32Value) GetValue() int32 { if x != nil { return x.Value } return 0 } type SdkVersion struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Inclusive. Min *Int32Value `protobuf:"bytes,1,opt,name=min,proto3" json:"min,omitempty"` } func (x *SdkVersion) Reset() { *x = SdkVersion{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SdkVersion) String() string { return protoimpl.X.MessageStringOf(x) } func (*SdkVersion) ProtoMessage() {} func (x *SdkVersion) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 SdkVersion.ProtoReflect.Descriptor instead. func (*SdkVersion) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{6} } func (x *SdkVersion) GetMin() *Int32Value { if x != nil { return x.Min } return nil } type GraphicsApi struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to ApiOneof: // *GraphicsApi_MinOpenGlVersion // *GraphicsApi_MinVulkanVersion ApiOneof isGraphicsApi_ApiOneof `protobuf_oneof:"api_oneof"` } func (x *GraphicsApi) Reset() { *x = GraphicsApi{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GraphicsApi) String() string { return protoimpl.X.MessageStringOf(x) } func (*GraphicsApi) ProtoMessage() {} func (x *GraphicsApi) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 GraphicsApi.ProtoReflect.Descriptor instead. func (*GraphicsApi) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{7} } func (m *GraphicsApi) GetApiOneof() isGraphicsApi_ApiOneof { if m != nil { return m.ApiOneof } return nil } func (x *GraphicsApi) GetMinOpenGlVersion() *OpenGlVersion { if x, ok := x.GetApiOneof().(*GraphicsApi_MinOpenGlVersion); ok { return x.MinOpenGlVersion } return nil } func (x *GraphicsApi) GetMinVulkanVersion() *VulkanVersion { if x, ok := x.GetApiOneof().(*GraphicsApi_MinVulkanVersion); ok { return x.MinVulkanVersion } return nil } type isGraphicsApi_ApiOneof interface { isGraphicsApi_ApiOneof() } type GraphicsApi_MinOpenGlVersion struct { // Inclusive. MinOpenGlVersion *OpenGlVersion `protobuf:"bytes,1,opt,name=min_open_gl_version,json=minOpenGlVersion,proto3,oneof"` } type GraphicsApi_MinVulkanVersion struct { // Inclusive. MinVulkanVersion *VulkanVersion `protobuf:"bytes,2,opt,name=min_vulkan_version,json=minVulkanVersion,proto3,oneof"` } func (*GraphicsApi_MinOpenGlVersion) isGraphicsApi_ApiOneof() {} func (*GraphicsApi_MinVulkanVersion) isGraphicsApi_ApiOneof() {} type VulkanVersion struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Major int32 `protobuf:"varint,1,opt,name=major,proto3" json:"major,omitempty"` // VK_VERSION_MAJOR Minor int32 `protobuf:"varint,2,opt,name=minor,proto3" json:"minor,omitempty"` // VK_VERSION_MINOR } func (x *VulkanVersion) Reset() { *x = VulkanVersion{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *VulkanVersion) String() string { return protoimpl.X.MessageStringOf(x) } func (*VulkanVersion) ProtoMessage() {} func (x *VulkanVersion) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 VulkanVersion.ProtoReflect.Descriptor instead. func (*VulkanVersion) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{8} } func (x *VulkanVersion) GetMajor() int32 { if x != nil { return x.Major } return 0 } func (x *VulkanVersion) GetMinor() int32 { if x != nil { return x.Minor } return 0 } type OpenGlVersion struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // e.g. OpenGL ES 3.2 is represented as { major: 3, minor: 2 } Major int32 `protobuf:"varint,1,opt,name=major,proto3" json:"major,omitempty"` // GL_MAJOR_VERSION Minor int32 `protobuf:"varint,2,opt,name=minor,proto3" json:"minor,omitempty"` // GL_MINOR_VERSION } func (x *OpenGlVersion) Reset() { *x = OpenGlVersion{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OpenGlVersion) String() string { return protoimpl.X.MessageStringOf(x) } func (*OpenGlVersion) ProtoMessage() {} func (x *OpenGlVersion) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 OpenGlVersion.ProtoReflect.Descriptor instead. func (*OpenGlVersion) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{9} } func (x *OpenGlVersion) GetMajor() int32 { if x != nil { return x.Major } return 0 } func (x *OpenGlVersion) GetMinor() int32 { if x != nil { return x.Minor } return 0 } type TextureCompressionFormat struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Alias TextureCompressionFormat_TextureCompressionFormatAlias `protobuf:"varint,1,opt,name=alias,proto3,enum=android.bundle.TextureCompressionFormat_TextureCompressionFormatAlias" json:"alias,omitempty"` } func (x *TextureCompressionFormat) Reset() { *x = TextureCompressionFormat{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TextureCompressionFormat) String() string { return protoimpl.X.MessageStringOf(x) } func (*TextureCompressionFormat) ProtoMessage() {} func (x *TextureCompressionFormat) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 TextureCompressionFormat.ProtoReflect.Descriptor instead. func (*TextureCompressionFormat) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{10} } func (x *TextureCompressionFormat) GetAlias() TextureCompressionFormat_TextureCompressionFormatAlias { if x != nil { return x.Alias } return TextureCompressionFormat_UNSPECIFIED_TEXTURE_COMPRESSION_FORMAT } type Abi struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Alias Abi_AbiAlias `protobuf:"varint,1,opt,name=alias,proto3,enum=android.bundle.Abi_AbiAlias" json:"alias,omitempty"` } func (x *Abi) Reset() { *x = Abi{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Abi) String() string { return protoimpl.X.MessageStringOf(x) } func (*Abi) ProtoMessage() {} func (x *Abi) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 Abi.ProtoReflect.Descriptor instead. func (*Abi) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{11} } func (x *Abi) GetAlias() Abi_AbiAlias { if x != nil { return x.Alias } return Abi_UNSPECIFIED_CPU_ARCHITECTURE } type MultiAbi struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Abi []*Abi `protobuf:"bytes,1,rep,name=abi,proto3" json:"abi,omitempty"` } func (x *MultiAbi) Reset() { *x = MultiAbi{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MultiAbi) String() string { return protoimpl.X.MessageStringOf(x) } func (*MultiAbi) ProtoMessage() {} func (x *MultiAbi) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 MultiAbi.ProtoReflect.Descriptor instead. func (*MultiAbi) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{12} } func (x *MultiAbi) GetAbi() []*Abi { if x != nil { return x.Abi } return nil } type Sanitizer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Alias Sanitizer_SanitizerAlias `protobuf:"varint,1,opt,name=alias,proto3,enum=android.bundle.Sanitizer_SanitizerAlias" json:"alias,omitempty"` } func (x *Sanitizer) Reset() { *x = Sanitizer{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Sanitizer) String() string { return protoimpl.X.MessageStringOf(x) } func (*Sanitizer) ProtoMessage() {} func (x *Sanitizer) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 Sanitizer.ProtoReflect.Descriptor instead. func (*Sanitizer) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{13} } func (x *Sanitizer) GetAlias() Sanitizer_SanitizerAlias { if x != nil { return x.Alias } return Sanitizer_NONE } type DeviceFeature struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FeatureName string `protobuf:"bytes,1,opt,name=feature_name,json=featureName,proto3" json:"feature_name,omitempty"` // Equivalent of android:glEsVersion or android:version in . FeatureVersion int32 `protobuf:"varint,2,opt,name=feature_version,json=featureVersion,proto3" json:"feature_version,omitempty"` } func (x *DeviceFeature) Reset() { *x = DeviceFeature{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeviceFeature) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeviceFeature) ProtoMessage() {} func (x *DeviceFeature) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 DeviceFeature.ProtoReflect.Descriptor instead. func (*DeviceFeature) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{14} } func (x *DeviceFeature) GetFeatureName() string { if x != nil { return x.FeatureName } return "" } func (x *DeviceFeature) GetFeatureVersion() int32 { if x != nil { return x.FeatureVersion } return 0 } // Targeting specific for directories under assets/. type AssetsDirectoryTargeting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Abi *AbiTargeting `protobuf:"bytes,1,opt,name=abi,proto3" json:"abi,omitempty"` GraphicsApi *GraphicsApiTargeting `protobuf:"bytes,2,opt,name=graphics_api,json=graphicsApi,proto3" json:"graphics_api,omitempty"` TextureCompressionFormat *TextureCompressionFormatTargeting `protobuf:"bytes,3,opt,name=texture_compression_format,json=textureCompressionFormat,proto3" json:"texture_compression_format,omitempty"` Language *LanguageTargeting `protobuf:"bytes,4,opt,name=language,proto3" json:"language,omitempty"` } func (x *AssetsDirectoryTargeting) Reset() { *x = AssetsDirectoryTargeting{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AssetsDirectoryTargeting) String() string { return protoimpl.X.MessageStringOf(x) } func (*AssetsDirectoryTargeting) ProtoMessage() {} func (x *AssetsDirectoryTargeting) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 AssetsDirectoryTargeting.ProtoReflect.Descriptor instead. func (*AssetsDirectoryTargeting) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{15} } func (x *AssetsDirectoryTargeting) GetAbi() *AbiTargeting { if x != nil { return x.Abi } return nil } func (x *AssetsDirectoryTargeting) GetGraphicsApi() *GraphicsApiTargeting { if x != nil { return x.GraphicsApi } return nil } func (x *AssetsDirectoryTargeting) GetTextureCompressionFormat() *TextureCompressionFormatTargeting { if x != nil { return x.TextureCompressionFormat } return nil } func (x *AssetsDirectoryTargeting) GetLanguage() *LanguageTargeting { if x != nil { return x.Language } return nil } // Targeting specific for directories under lib/. type NativeDirectoryTargeting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Abi *Abi `protobuf:"bytes,1,opt,name=abi,proto3" json:"abi,omitempty"` GraphicsApi *GraphicsApi `protobuf:"bytes,2,opt,name=graphics_api,json=graphicsApi,proto3" json:"graphics_api,omitempty"` TextureCompressionFormat *TextureCompressionFormat `protobuf:"bytes,3,opt,name=texture_compression_format,json=textureCompressionFormat,proto3" json:"texture_compression_format,omitempty"` Sanitizer *Sanitizer `protobuf:"bytes,4,opt,name=sanitizer,proto3" json:"sanitizer,omitempty"` } func (x *NativeDirectoryTargeting) Reset() { *x = NativeDirectoryTargeting{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *NativeDirectoryTargeting) String() string { return protoimpl.X.MessageStringOf(x) } func (*NativeDirectoryTargeting) ProtoMessage() {} func (x *NativeDirectoryTargeting) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 NativeDirectoryTargeting.ProtoReflect.Descriptor instead. func (*NativeDirectoryTargeting) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{16} } func (x *NativeDirectoryTargeting) GetAbi() *Abi { if x != nil { return x.Abi } return nil } func (x *NativeDirectoryTargeting) GetGraphicsApi() *GraphicsApi { if x != nil { return x.GraphicsApi } return nil } func (x *NativeDirectoryTargeting) GetTextureCompressionFormat() *TextureCompressionFormat { if x != nil { return x.TextureCompressionFormat } return nil } func (x *NativeDirectoryTargeting) GetSanitizer() *Sanitizer { if x != nil { return x.Sanitizer } return nil } // Targeting specific for image files under apex/. type ApexImageTargeting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MultiAbi *MultiAbiTargeting `protobuf:"bytes,1,opt,name=multi_abi,json=multiAbi,proto3" json:"multi_abi,omitempty"` } func (x *ApexImageTargeting) Reset() { *x = ApexImageTargeting{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ApexImageTargeting) String() string { return protoimpl.X.MessageStringOf(x) } func (*ApexImageTargeting) ProtoMessage() {} func (x *ApexImageTargeting) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 ApexImageTargeting.ProtoReflect.Descriptor instead. func (*ApexImageTargeting) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{17} } func (x *ApexImageTargeting) GetMultiAbi() *MultiAbiTargeting { if x != nil { return x.MultiAbi } return nil } type AbiTargeting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Value []*Abi `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"` // Targeting of other sibling directories that were in the Bundle. // For master splits this is targeting of other master splits. Alternatives []*Abi `protobuf:"bytes,2,rep,name=alternatives,proto3" json:"alternatives,omitempty"` } func (x *AbiTargeting) Reset() { *x = AbiTargeting{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AbiTargeting) String() string { return protoimpl.X.MessageStringOf(x) } func (*AbiTargeting) ProtoMessage() {} func (x *AbiTargeting) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 AbiTargeting.ProtoReflect.Descriptor instead. func (*AbiTargeting) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{18} } func (x *AbiTargeting) GetValue() []*Abi { if x != nil { return x.Value } return nil } func (x *AbiTargeting) GetAlternatives() []*Abi { if x != nil { return x.Alternatives } return nil } type MultiAbiTargeting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Value []*MultiAbi `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"` // Targeting of other sibling directories that were in the Bundle. // For master splits this is targeting of other master splits. Alternatives []*MultiAbi `protobuf:"bytes,2,rep,name=alternatives,proto3" json:"alternatives,omitempty"` } func (x *MultiAbiTargeting) Reset() { *x = MultiAbiTargeting{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MultiAbiTargeting) String() string { return protoimpl.X.MessageStringOf(x) } func (*MultiAbiTargeting) ProtoMessage() {} func (x *MultiAbiTargeting) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 MultiAbiTargeting.ProtoReflect.Descriptor instead. func (*MultiAbiTargeting) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{19} } func (x *MultiAbiTargeting) GetValue() []*MultiAbi { if x != nil { return x.Value } return nil } func (x *MultiAbiTargeting) GetAlternatives() []*MultiAbi { if x != nil { return x.Alternatives } return nil } type ScreenDensityTargeting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Value []*ScreenDensity `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"` // Targeting of other sibling directories that were in the Bundle. // For master splits this is targeting of other master splits. Alternatives []*ScreenDensity `protobuf:"bytes,2,rep,name=alternatives,proto3" json:"alternatives,omitempty"` } func (x *ScreenDensityTargeting) Reset() { *x = ScreenDensityTargeting{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ScreenDensityTargeting) String() string { return protoimpl.X.MessageStringOf(x) } func (*ScreenDensityTargeting) ProtoMessage() {} func (x *ScreenDensityTargeting) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 ScreenDensityTargeting.ProtoReflect.Descriptor instead. func (*ScreenDensityTargeting) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{20} } func (x *ScreenDensityTargeting) GetValue() []*ScreenDensity { if x != nil { return x.Value } return nil } func (x *ScreenDensityTargeting) GetAlternatives() []*ScreenDensity { if x != nil { return x.Alternatives } return nil } type LanguageTargeting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // ISO-639: 2 or 3 letter language code. Value []string `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"` // Targeting of other sibling directories that were in the Bundle. // For master splits this is targeting of other master splits. Alternatives []string `protobuf:"bytes,2,rep,name=alternatives,proto3" json:"alternatives,omitempty"` } func (x *LanguageTargeting) Reset() { *x = LanguageTargeting{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LanguageTargeting) String() string { return protoimpl.X.MessageStringOf(x) } func (*LanguageTargeting) ProtoMessage() {} func (x *LanguageTargeting) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 LanguageTargeting.ProtoReflect.Descriptor instead. func (*LanguageTargeting) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{21} } func (x *LanguageTargeting) GetValue() []string { if x != nil { return x.Value } return nil } func (x *LanguageTargeting) GetAlternatives() []string { if x != nil { return x.Alternatives } return nil } type GraphicsApiTargeting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Value []*GraphicsApi `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"` // Targeting of other sibling directories that were in the Bundle. // For master splits this is targeting of other master splits. Alternatives []*GraphicsApi `protobuf:"bytes,2,rep,name=alternatives,proto3" json:"alternatives,omitempty"` } func (x *GraphicsApiTargeting) Reset() { *x = GraphicsApiTargeting{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GraphicsApiTargeting) String() string { return protoimpl.X.MessageStringOf(x) } func (*GraphicsApiTargeting) ProtoMessage() {} func (x *GraphicsApiTargeting) ProtoReflect() protoreflect.Message { mi := &file_targeting_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 GraphicsApiTargeting.ProtoReflect.Descriptor instead. func (*GraphicsApiTargeting) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{22} } func (x *GraphicsApiTargeting) GetValue() []*GraphicsApi { if x != nil { return x.Value } return nil } func (x *GraphicsApiTargeting) GetAlternatives() []*GraphicsApi { if x != nil { return x.Alternatives } return nil } type SdkVersionTargeting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Value []*SdkVersion `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"` // Targeting of other sibling directories that were in the Bundle. // For master splits this is targeting of other master splits. Alternatives []*SdkVersion `protobuf:"bytes,2,rep,name=alternatives,proto3" json:"alternatives,omitempty"` } func (x *SdkVersionTargeting) Reset() { *x = SdkVersionTargeting{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SdkVersionTargeting) String() string { return protoimpl.X.MessageStringOf(x) } func (*SdkVersionTargeting) ProtoMessage() {} func (x *SdkVersionTargeting) ProtoReflect() protoreflect.Message { mi := &file_targeting_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SdkVersionTargeting.ProtoReflect.Descriptor instead. func (*SdkVersionTargeting) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{23} } func (x *SdkVersionTargeting) GetValue() []*SdkVersion { if x != nil { return x.Value } return nil } func (x *SdkVersionTargeting) GetAlternatives() []*SdkVersion { if x != nil { return x.Alternatives } return nil } type TextureCompressionFormatTargeting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Value []*TextureCompressionFormat `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"` // Targeting of other sibling directories that were in the Bundle. // For master splits this is targeting of other master splits. Alternatives []*TextureCompressionFormat `protobuf:"bytes,2,rep,name=alternatives,proto3" json:"alternatives,omitempty"` } func (x *TextureCompressionFormatTargeting) Reset() { *x = TextureCompressionFormatTargeting{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TextureCompressionFormatTargeting) String() string { return protoimpl.X.MessageStringOf(x) } func (*TextureCompressionFormatTargeting) ProtoMessage() {} func (x *TextureCompressionFormatTargeting) ProtoReflect() protoreflect.Message { mi := &file_targeting_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TextureCompressionFormatTargeting.ProtoReflect.Descriptor instead. func (*TextureCompressionFormatTargeting) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{24} } func (x *TextureCompressionFormatTargeting) GetValue() []*TextureCompressionFormat { if x != nil { return x.Value } return nil } func (x *TextureCompressionFormatTargeting) GetAlternatives() []*TextureCompressionFormat { if x != nil { return x.Alternatives } return nil } type SanitizerTargeting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Value []*Sanitizer `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"` } func (x *SanitizerTargeting) Reset() { *x = SanitizerTargeting{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SanitizerTargeting) String() string { return protoimpl.X.MessageStringOf(x) } func (*SanitizerTargeting) ProtoMessage() {} func (x *SanitizerTargeting) ProtoReflect() protoreflect.Message { mi := &file_targeting_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SanitizerTargeting.ProtoReflect.Descriptor instead. func (*SanitizerTargeting) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{25} } func (x *SanitizerTargeting) GetValue() []*Sanitizer { if x != nil { return x.Value } return nil } // Since other atom targeting messages have the "OR" semantic on values // the DeviceFeatureTargeting represents only one device feature to retain // that convention. type DeviceFeatureTargeting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RequiredFeature *DeviceFeature `protobuf:"bytes,1,opt,name=required_feature,json=requiredFeature,proto3" json:"required_feature,omitempty"` } func (x *DeviceFeatureTargeting) Reset() { *x = DeviceFeatureTargeting{} if protoimpl.UnsafeEnabled { mi := &file_targeting_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeviceFeatureTargeting) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeviceFeatureTargeting) ProtoMessage() {} func (x *DeviceFeatureTargeting) ProtoReflect() protoreflect.Message { mi := &file_targeting_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeviceFeatureTargeting.ProtoReflect.Descriptor instead. func (*DeviceFeatureTargeting) Descriptor() ([]byte, []int) { return file_targeting_proto_rawDescGZIP(), []int{26} } func (x *DeviceFeatureTargeting) GetRequiredFeature() *DeviceFeature { if x != nil { return x.RequiredFeature } return nil } var File_targeting_proto protoreflect.FileDescriptor var file_targeting_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x22, 0xe8, 0x03, 0x0a, 0x10, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x57, 0x0a, 0x15, 0x73, 0x64, 0x6b, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x73, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x41, 0x0a, 0x0d, 0x61, 0x62, 0x69, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x41, 0x62, 0x69, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x61, 0x62, 0x69, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x60, 0x0a, 0x18, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x64, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x16, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x51, 0x0a, 0x13, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x61, 0x62, 0x69, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x62, 0x69, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x11, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x62, 0x69, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x82, 0x01, 0x0a, 0x24, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x21, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x22, 0xe7, 0x05, 0x0a, 0x0c, 0x41, 0x70, 0x6b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x41, 0x0a, 0x0d, 0x61, 0x62, 0x69, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x41, 0x62, 0x69, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x61, 0x62, 0x69, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x5a, 0x0a, 0x16, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x41, 0x70, 0x69, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x14, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x41, 0x70, 0x69, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x50, 0x0a, 0x12, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x11, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x60, 0x0a, 0x18, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x64, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x16, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x57, 0x0a, 0x15, 0x73, 0x64, 0x6b, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x73, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x82, 0x01, 0x0a, 0x24, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x21, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x51, 0x0a, 0x13, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x61, 0x62, 0x69, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x62, 0x69, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x11, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x62, 0x69, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x53, 0x0a, 0x13, 0x73, 0x61, 0x6e, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x53, 0x61, 0x6e, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x73, 0x61, 0x6e, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x22, 0xae, 0x02, 0x0a, 0x0f, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x57, 0x0a, 0x15, 0x73, 0x64, 0x6b, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x73, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x60, 0x0a, 0x18, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x16, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x60, 0x0a, 0x18, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x16, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x57, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x22, 0x97, 0x02, 0x0a, 0x0d, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x12, 0x51, 0x0a, 0x0d, 0x64, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x2e, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0b, 0x64, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x70, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x44, 0x70, 0x69, 0x22, 0x7f, 0x0a, 0x0c, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x45, 0x4e, 0x53, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x4e, 0x4f, 0x44, 0x50, 0x49, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x44, 0x50, 0x49, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x44, 0x50, 0x49, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x56, 0x44, 0x50, 0x49, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x44, 0x50, 0x49, 0x10, 0x05, 0x12, 0x09, 0x0a, 0x05, 0x58, 0x48, 0x44, 0x50, 0x49, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x58, 0x58, 0x48, 0x44, 0x50, 0x49, 0x10, 0x07, 0x12, 0x0b, 0x0a, 0x07, 0x58, 0x58, 0x58, 0x48, 0x44, 0x50, 0x49, 0x10, 0x08, 0x42, 0x0f, 0x0a, 0x0d, 0x64, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x22, 0x0a, 0x0a, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x0a, 0x0a, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x22, 0xb9, 0x01, 0x0a, 0x0b, 0x47, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x41, 0x70, 0x69, 0x12, 0x4e, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x67, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x47, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x4f, 0x70, 0x65, 0x6e, 0x47, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x12, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x75, 0x6c, 0x6b, 0x61, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x75, 0x6c, 0x6b, 0x61, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x56, 0x75, 0x6c, 0x6b, 0x61, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x61, 0x70, 0x69, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x3b, 0x0a, 0x0d, 0x56, 0x75, 0x6c, 0x6b, 0x61, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x22, 0x3b, 0x0a, 0x0d, 0x4f, 0x70, 0x65, 0x6e, 0x47, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x22, 0xb7, 0x02, 0x0a, 0x18, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x5c, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x46, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0xbc, 0x01, 0x0a, 0x1d, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x2a, 0x0a, 0x26, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x45, 0x58, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x54, 0x43, 0x31, 0x5f, 0x52, 0x47, 0x42, 0x38, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x41, 0x4c, 0x45, 0x54, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x48, 0x52, 0x45, 0x45, 0x5f, 0x44, 0x43, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x54, 0x43, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x41, 0x54, 0x43, 0x10, 0x05, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x58, 0x54, 0x31, 0x10, 0x06, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x33, 0x54, 0x43, 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x56, 0x52, 0x54, 0x43, 0x10, 0x08, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x53, 0x54, 0x43, 0x10, 0x09, 0x12, 0x08, 0x0a, 0x04, 0x45, 0x54, 0x43, 0x32, 0x10, 0x0a, 0x22, 0xc0, 0x01, 0x0a, 0x03, 0x41, 0x62, 0x69, 0x12, 0x32, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x41, 0x62, 0x69, 0x2e, 0x41, 0x62, 0x69, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x84, 0x01, 0x0a, 0x08, 0x41, 0x62, 0x69, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x20, 0x0a, 0x1c, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x49, 0x54, 0x45, 0x43, 0x54, 0x55, 0x52, 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x52, 0x4d, 0x45, 0x41, 0x42, 0x49, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x52, 0x4d, 0x45, 0x41, 0x42, 0x49, 0x5f, 0x56, 0x37, 0x41, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x52, 0x4d, 0x36, 0x34, 0x5f, 0x56, 0x38, 0x41, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x58, 0x38, 0x36, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x58, 0x38, 0x36, 0x5f, 0x36, 0x34, 0x10, 0x05, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x49, 0x50, 0x53, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x49, 0x50, 0x53, 0x36, 0x34, 0x10, 0x07, 0x22, 0x31, 0x0a, 0x08, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x62, 0x69, 0x12, 0x25, 0x0a, 0x03, 0x61, 0x62, 0x69, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x41, 0x62, 0x69, 0x52, 0x03, 0x61, 0x62, 0x69, 0x22, 0x76, 0x0a, 0x09, 0x53, 0x61, 0x6e, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x53, 0x61, 0x6e, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x72, 0x2e, 0x53, 0x61, 0x6e, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x72, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x29, 0x0a, 0x0e, 0x53, 0x61, 0x6e, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x72, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x48, 0x57, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, 0x22, 0x5b, 0x0a, 0x0d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc3, 0x02, 0x0a, 0x18, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x2e, 0x0a, 0x03, 0x61, 0x62, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x41, 0x62, 0x69, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x61, 0x62, 0x69, 0x12, 0x47, 0x0a, 0x0c, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x5f, 0x61, 0x70, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x41, 0x70, 0x69, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x41, 0x70, 0x69, 0x12, 0x6f, 0x0a, 0x1a, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x18, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x3d, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x22, 0xa2, 0x02, 0x0a, 0x18, 0x4e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x03, 0x61, 0x62, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x41, 0x62, 0x69, 0x52, 0x03, 0x61, 0x62, 0x69, 0x12, 0x3e, 0x0a, 0x0c, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x5f, 0x61, 0x70, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x41, 0x70, 0x69, 0x52, 0x0b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x41, 0x70, 0x69, 0x12, 0x66, 0x0a, 0x1a, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x18, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x73, 0x61, 0x6e, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x53, 0x61, 0x6e, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x72, 0x52, 0x09, 0x73, 0x61, 0x6e, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x72, 0x22, 0x54, 0x0a, 0x12, 0x41, 0x70, 0x65, 0x78, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x3e, 0x0a, 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x61, 0x62, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x62, 0x69, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x62, 0x69, 0x22, 0x72, 0x0a, 0x0c, 0x41, 0x62, 0x69, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x41, 0x62, 0x69, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x37, 0x0a, 0x0c, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x41, 0x62, 0x69, 0x52, 0x0c, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x22, 0x81, 0x01, 0x0a, 0x11, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x62, 0x69, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x62, 0x69, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x62, 0x69, 0x52, 0x0c, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x16, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x22, 0x4d, 0x0a, 0x11, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x22, 0x8a, 0x01, 0x0a, 0x14, 0x47, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x41, 0x70, 0x69, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x31, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x41, 0x70, 0x69, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x41, 0x70, 0x69, 0x52, 0x0c, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x13, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3e, 0x0a, 0x0c, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x22, 0xb1, 0x01, 0x0a, 0x21, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x3e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4c, 0x0a, 0x0c, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0c, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x22, 0x45, 0x0a, 0x12, 0x53, 0x61, 0x6e, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x53, 0x61, 0x6e, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x62, 0x0a, 0x16, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x48, 0x0a, 0x10, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x41, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5a, 0x2b, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2f, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x70, 0x6b, 0x73, 0x2f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_targeting_proto_rawDescOnce sync.Once file_targeting_proto_rawDescData = file_targeting_proto_rawDesc ) func file_targeting_proto_rawDescGZIP() []byte { file_targeting_proto_rawDescOnce.Do(func() { file_targeting_proto_rawDescData = protoimpl.X.CompressGZIP(file_targeting_proto_rawDescData) }) return file_targeting_proto_rawDescData } var file_targeting_proto_enumTypes = make([]protoimpl.EnumInfo, 4) var file_targeting_proto_msgTypes = make([]protoimpl.MessageInfo, 27) var file_targeting_proto_goTypes = []interface{}{ (ScreenDensity_DensityAlias)(0), // 0: android.bundle.ScreenDensity.DensityAlias (TextureCompressionFormat_TextureCompressionFormatAlias)(0), // 1: android.bundle.TextureCompressionFormat.TextureCompressionFormatAlias (Abi_AbiAlias)(0), // 2: android.bundle.Abi.AbiAlias (Sanitizer_SanitizerAlias)(0), // 3: android.bundle.Sanitizer.SanitizerAlias (*VariantTargeting)(nil), // 4: android.bundle.VariantTargeting (*ApkTargeting)(nil), // 5: android.bundle.ApkTargeting (*ModuleTargeting)(nil), // 6: android.bundle.ModuleTargeting (*UserCountriesTargeting)(nil), // 7: android.bundle.UserCountriesTargeting (*ScreenDensity)(nil), // 8: android.bundle.ScreenDensity (*Int32Value)(nil), // 9: android.bundle.Int32Value (*SdkVersion)(nil), // 10: android.bundle.SdkVersion (*GraphicsApi)(nil), // 11: android.bundle.GraphicsApi (*VulkanVersion)(nil), // 12: android.bundle.VulkanVersion (*OpenGlVersion)(nil), // 13: android.bundle.OpenGlVersion (*TextureCompressionFormat)(nil), // 14: android.bundle.TextureCompressionFormat (*Abi)(nil), // 15: android.bundle.Abi (*MultiAbi)(nil), // 16: android.bundle.MultiAbi (*Sanitizer)(nil), // 17: android.bundle.Sanitizer (*DeviceFeature)(nil), // 18: android.bundle.DeviceFeature (*AssetsDirectoryTargeting)(nil), // 19: android.bundle.AssetsDirectoryTargeting (*NativeDirectoryTargeting)(nil), // 20: android.bundle.NativeDirectoryTargeting (*ApexImageTargeting)(nil), // 21: android.bundle.ApexImageTargeting (*AbiTargeting)(nil), // 22: android.bundle.AbiTargeting (*MultiAbiTargeting)(nil), // 23: android.bundle.MultiAbiTargeting (*ScreenDensityTargeting)(nil), // 24: android.bundle.ScreenDensityTargeting (*LanguageTargeting)(nil), // 25: android.bundle.LanguageTargeting (*GraphicsApiTargeting)(nil), // 26: android.bundle.GraphicsApiTargeting (*SdkVersionTargeting)(nil), // 27: android.bundle.SdkVersionTargeting (*TextureCompressionFormatTargeting)(nil), // 28: android.bundle.TextureCompressionFormatTargeting (*SanitizerTargeting)(nil), // 29: android.bundle.SanitizerTargeting (*DeviceFeatureTargeting)(nil), // 30: android.bundle.DeviceFeatureTargeting } var file_targeting_proto_depIdxs = []int32{ 27, // 0: android.bundle.VariantTargeting.sdk_version_targeting:type_name -> android.bundle.SdkVersionTargeting 22, // 1: android.bundle.VariantTargeting.abi_targeting:type_name -> android.bundle.AbiTargeting 24, // 2: android.bundle.VariantTargeting.screen_density_targeting:type_name -> android.bundle.ScreenDensityTargeting 23, // 3: android.bundle.VariantTargeting.multi_abi_targeting:type_name -> android.bundle.MultiAbiTargeting 28, // 4: android.bundle.VariantTargeting.texture_compression_format_targeting:type_name -> android.bundle.TextureCompressionFormatTargeting 22, // 5: android.bundle.ApkTargeting.abi_targeting:type_name -> android.bundle.AbiTargeting 26, // 6: android.bundle.ApkTargeting.graphics_api_targeting:type_name -> android.bundle.GraphicsApiTargeting 25, // 7: android.bundle.ApkTargeting.language_targeting:type_name -> android.bundle.LanguageTargeting 24, // 8: android.bundle.ApkTargeting.screen_density_targeting:type_name -> android.bundle.ScreenDensityTargeting 27, // 9: android.bundle.ApkTargeting.sdk_version_targeting:type_name -> android.bundle.SdkVersionTargeting 28, // 10: android.bundle.ApkTargeting.texture_compression_format_targeting:type_name -> android.bundle.TextureCompressionFormatTargeting 23, // 11: android.bundle.ApkTargeting.multi_abi_targeting:type_name -> android.bundle.MultiAbiTargeting 29, // 12: android.bundle.ApkTargeting.sanitizer_targeting:type_name -> android.bundle.SanitizerTargeting 27, // 13: android.bundle.ModuleTargeting.sdk_version_targeting:type_name -> android.bundle.SdkVersionTargeting 30, // 14: android.bundle.ModuleTargeting.device_feature_targeting:type_name -> android.bundle.DeviceFeatureTargeting 7, // 15: android.bundle.ModuleTargeting.user_countries_targeting:type_name -> android.bundle.UserCountriesTargeting 0, // 16: android.bundle.ScreenDensity.density_alias:type_name -> android.bundle.ScreenDensity.DensityAlias 9, // 17: android.bundle.SdkVersion.min:type_name -> android.bundle.Int32Value 13, // 18: android.bundle.GraphicsApi.min_open_gl_version:type_name -> android.bundle.OpenGlVersion 12, // 19: android.bundle.GraphicsApi.min_vulkan_version:type_name -> android.bundle.VulkanVersion 1, // 20: android.bundle.TextureCompressionFormat.alias:type_name -> android.bundle.TextureCompressionFormat.TextureCompressionFormatAlias 2, // 21: android.bundle.Abi.alias:type_name -> android.bundle.Abi.AbiAlias 15, // 22: android.bundle.MultiAbi.abi:type_name -> android.bundle.Abi 3, // 23: android.bundle.Sanitizer.alias:type_name -> android.bundle.Sanitizer.SanitizerAlias 22, // 24: android.bundle.AssetsDirectoryTargeting.abi:type_name -> android.bundle.AbiTargeting 26, // 25: android.bundle.AssetsDirectoryTargeting.graphics_api:type_name -> android.bundle.GraphicsApiTargeting 28, // 26: android.bundle.AssetsDirectoryTargeting.texture_compression_format:type_name -> android.bundle.TextureCompressionFormatTargeting 25, // 27: android.bundle.AssetsDirectoryTargeting.language:type_name -> android.bundle.LanguageTargeting 15, // 28: android.bundle.NativeDirectoryTargeting.abi:type_name -> android.bundle.Abi 11, // 29: android.bundle.NativeDirectoryTargeting.graphics_api:type_name -> android.bundle.GraphicsApi 14, // 30: android.bundle.NativeDirectoryTargeting.texture_compression_format:type_name -> android.bundle.TextureCompressionFormat 17, // 31: android.bundle.NativeDirectoryTargeting.sanitizer:type_name -> android.bundle.Sanitizer 23, // 32: android.bundle.ApexImageTargeting.multi_abi:type_name -> android.bundle.MultiAbiTargeting 15, // 33: android.bundle.AbiTargeting.value:type_name -> android.bundle.Abi 15, // 34: android.bundle.AbiTargeting.alternatives:type_name -> android.bundle.Abi 16, // 35: android.bundle.MultiAbiTargeting.value:type_name -> android.bundle.MultiAbi 16, // 36: android.bundle.MultiAbiTargeting.alternatives:type_name -> android.bundle.MultiAbi 8, // 37: android.bundle.ScreenDensityTargeting.value:type_name -> android.bundle.ScreenDensity 8, // 38: android.bundle.ScreenDensityTargeting.alternatives:type_name -> android.bundle.ScreenDensity 11, // 39: android.bundle.GraphicsApiTargeting.value:type_name -> android.bundle.GraphicsApi 11, // 40: android.bundle.GraphicsApiTargeting.alternatives:type_name -> android.bundle.GraphicsApi 10, // 41: android.bundle.SdkVersionTargeting.value:type_name -> android.bundle.SdkVersion 10, // 42: android.bundle.SdkVersionTargeting.alternatives:type_name -> android.bundle.SdkVersion 14, // 43: android.bundle.TextureCompressionFormatTargeting.value:type_name -> android.bundle.TextureCompressionFormat 14, // 44: android.bundle.TextureCompressionFormatTargeting.alternatives:type_name -> android.bundle.TextureCompressionFormat 17, // 45: android.bundle.SanitizerTargeting.value:type_name -> android.bundle.Sanitizer 18, // 46: android.bundle.DeviceFeatureTargeting.required_feature:type_name -> android.bundle.DeviceFeature 47, // [47:47] is the sub-list for method output_type 47, // [47:47] is the sub-list for method input_type 47, // [47:47] is the sub-list for extension type_name 47, // [47:47] is the sub-list for extension extendee 0, // [0:47] is the sub-list for field type_name } func init() { file_targeting_proto_init() } func file_targeting_proto_init() { if File_targeting_proto != nil { return } if !protoimpl.UnsafeEnabled { file_targeting_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VariantTargeting); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ApkTargeting); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ModuleTargeting); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserCountriesTargeting); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ScreenDensity); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Int32Value); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SdkVersion); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GraphicsApi); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VulkanVersion); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OpenGlVersion); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TextureCompressionFormat); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Abi); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MultiAbi); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Sanitizer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceFeature); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AssetsDirectoryTargeting); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NativeDirectoryTargeting); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ApexImageTargeting); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AbiTargeting); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MultiAbiTargeting); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ScreenDensityTargeting); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LanguageTargeting); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GraphicsApiTargeting); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SdkVersionTargeting); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TextureCompressionFormatTargeting); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SanitizerTargeting); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_targeting_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeviceFeatureTargeting); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_targeting_proto_msgTypes[4].OneofWrappers = []interface{}{ (*ScreenDensity_DensityAlias_)(nil), (*ScreenDensity_DensityDpi)(nil), } file_targeting_proto_msgTypes[7].OneofWrappers = []interface{}{ (*GraphicsApi_MinOpenGlVersion)(nil), (*GraphicsApi_MinVulkanVersion)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_targeting_proto_rawDesc, NumEnums: 4, NumMessages: 27, NumExtensions: 0, NumServices: 0, }, GoTypes: file_targeting_proto_goTypes, DependencyIndexes: file_targeting_proto_depIdxs, EnumInfos: file_targeting_proto_enumTypes, MessageInfos: file_targeting_proto_msgTypes, }.Build() File_targeting_proto = out.File file_targeting_proto_rawDesc = nil file_targeting_proto_goTypes = nil file_targeting_proto_depIdxs = nil }