1
1
mirror of https://github.com/ssut/payload-dumper-go.git synced 2024-11-18 01:27:39 +00:00
payload-dumper-go/chromeos_update_engine/update_metadata.pb.go
Sakura桜 d8ba4911eb
feat: add vivo payload support (#51)
- Update to the latest update_metadata.proto
- Add vivo payload extract(with using zstd)
2024-10-18 17:00:04 +09:00

1975 lines
80 KiB
Go

//
// Copyright (C) 2010 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Update file format: An update file contains all the operations needed
// to update a system to a specific version. It can be a full payload which
// can update from any version, or a delta payload which can only update
// from a specific version.
// The update format is represented by this struct pseudocode:
// struct delta_update_file {
// char magic[4] = "CrAU";
// uint64 file_format_version; // payload major version
// uint64 manifest_size; // Size of protobuf DeltaArchiveManifest
//
// // Only present if format_version >= 2:
// uint32 metadata_signature_size;
//
// // The DeltaArchiveManifest protobuf serialized, not compressed.
// char manifest[manifest_size];
//
// // The signature of the metadata (from the beginning of the payload up to
// // this location, not including the signature itself). This is a serialized
// // Signatures message.
// char metadata_signature_message[metadata_signature_size];
//
// // Data blobs for files, no specific format. The specific offset
// // and length of each data blob is recorded in the DeltaArchiveManifest.
// struct {
// char data[];
// } blobs[];
//
// // The signature of the entire payload, everything up to this location,
// // except that metadata_signature_message is skipped to simplify signing
// // process. These two are not signed:
// uint64 payload_signatures_message_size;
// // This is a serialized Signatures message.
// char payload_signatures_message[payload_signatures_message_size];
//
// };
// The DeltaArchiveManifest protobuf is an ordered list of InstallOperation
// objects. These objects are stored in a linear array in the
// DeltaArchiveManifest. Each operation is applied in order by the client.
// The DeltaArchiveManifest also contains the initial and final
// checksums for the device.
// The client will perform each InstallOperation in order, beginning even
// before the entire delta file is downloaded (but after at least the
// protobuf is downloaded). The types of operations are explained:
// - REPLACE: Replace the dst_extents on the drive with the attached data,
// zero padding out to block size.
// - REPLACE_BZ: bzip2-uncompress the attached data and write it into
// dst_extents on the drive, zero padding to block size.
// - MOVE: Copy the data in src_extents to dst_extents. Extents may overlap,
// so it may be desirable to read all src_extents data into memory before
// writing it out. (deprecated)
// - SOURCE_COPY: Copy the data in src_extents in the old partition to
// dst_extents in the new partition. There's no overlapping of data because
// the extents are in different partitions.
// - BSDIFF: Read src_length bytes from src_extents into memory, perform
// bspatch with attached data, write new data to dst_extents, zero padding
// to block size. (deprecated)
// - SOURCE_BSDIFF: Read the data in src_extents in the old partition, perform
// bspatch with the attached data and write the new data to dst_extents in the
// new partition.
// - ZERO: Write zeros to the destination dst_extents.
// - DISCARD: Discard the destination dst_extents blocks on the physical medium.
// the data read from those blocks is undefined.
// - REPLACE_XZ: Replace the dst_extents with the contents of the attached
// xz file after decompression. The xz file should only use crc32 or no crc at
// all to be compatible with xz-embedded.
// - PUFFDIFF: Read the data in src_extents in the old partition, perform
// puffpatch with the attached data and write the new data to dst_extents in
// the new partition.
//
// The operations allowed in the payload (supported by the client) depend on the
// major and minor version. See InstallOperation.Type below for details.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.32.0
// protoc v3.21.12
// source: update_metadata.proto
package chromeos_update_engine
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 InstallOperation_Type int32
const (
InstallOperation_REPLACE InstallOperation_Type = 0 // Replace destination extents w/ attached data.
InstallOperation_REPLACE_BZ InstallOperation_Type = 1 // Replace destination extents w/ attached bzipped data.
// Deprecated: Marked as deprecated in update_metadata.proto.
InstallOperation_MOVE InstallOperation_Type = 2 // Move source extents to target extents.
// Deprecated: Marked as deprecated in update_metadata.proto.
InstallOperation_BSDIFF InstallOperation_Type = 3 // The data is a bsdiff binary diff.
// On minor version 2 or newer, these operations are supported:
InstallOperation_SOURCE_COPY InstallOperation_Type = 4 // Copy from source to target partition
InstallOperation_SOURCE_BSDIFF InstallOperation_Type = 5 // Like BSDIFF, but read from source partition
// On minor version 3 or newer and on major version 2 or newer, these
// operations are supported:
InstallOperation_REPLACE_XZ InstallOperation_Type = 8 // Replace destination extents w/ attached xz data.
// On minor version 4 or newer, these operations are supported:
InstallOperation_ZERO InstallOperation_Type = 6 // Write zeros in the destination.
InstallOperation_DISCARD InstallOperation_Type = 7 // Discard the destination blocks, reading as undefined.
InstallOperation_BROTLI_BSDIFF InstallOperation_Type = 10 // Like SOURCE_BSDIFF, but compressed with brotli.
// On minor version 5 or newer, these operations are supported:
InstallOperation_PUFFDIFF InstallOperation_Type = 9 // The data is in puffdiff format.
// On minor version 8 or newer, these operations are supported:
InstallOperation_ZUCCHINI InstallOperation_Type = 11
// On minor version 9 or newer, these operations are supported:
InstallOperation_LZ4DIFF_BSDIFF InstallOperation_Type = 12
InstallOperation_LZ4DIFF_PUFFDIFF InstallOperation_Type = 13
InstallOperation_ZSTD InstallOperation_Type = 14
)
// Enum value maps for InstallOperation_Type.
var (
InstallOperation_Type_name = map[int32]string{
0: "REPLACE",
1: "REPLACE_BZ",
2: "MOVE",
3: "BSDIFF",
4: "SOURCE_COPY",
5: "SOURCE_BSDIFF",
8: "REPLACE_XZ",
6: "ZERO",
7: "DISCARD",
10: "BROTLI_BSDIFF",
9: "PUFFDIFF",
11: "ZUCCHINI",
12: "LZ4DIFF_BSDIFF",
13: "LZ4DIFF_PUFFDIFF",
14: "ZSTD",
}
InstallOperation_Type_value = map[string]int32{
"REPLACE": 0,
"REPLACE_BZ": 1,
"MOVE": 2,
"BSDIFF": 3,
"SOURCE_COPY": 4,
"SOURCE_BSDIFF": 5,
"REPLACE_XZ": 8,
"ZERO": 6,
"DISCARD": 7,
"BROTLI_BSDIFF": 10,
"PUFFDIFF": 9,
"ZUCCHINI": 11,
"LZ4DIFF_BSDIFF": 12,
"LZ4DIFF_PUFFDIFF": 13,
"ZSTD": 14,
}
)
func (x InstallOperation_Type) Enum() *InstallOperation_Type {
p := new(InstallOperation_Type)
*p = x
return p
}
func (x InstallOperation_Type) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (InstallOperation_Type) Descriptor() protoreflect.EnumDescriptor {
return file_update_metadata_proto_enumTypes[0].Descriptor()
}
func (InstallOperation_Type) Type() protoreflect.EnumType {
return &file_update_metadata_proto_enumTypes[0]
}
func (x InstallOperation_Type) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *InstallOperation_Type) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = InstallOperation_Type(num)
return nil
}
// Deprecated: Use InstallOperation_Type.Descriptor instead.
func (InstallOperation_Type) EnumDescriptor() ([]byte, []int) {
return file_update_metadata_proto_rawDescGZIP(), []int{3, 0}
}
type CowMergeOperation_Type int32
const (
CowMergeOperation_COW_COPY CowMergeOperation_Type = 0 // identical blocks
CowMergeOperation_COW_XOR CowMergeOperation_Type = 1 // used when src/dst blocks are highly similar
CowMergeOperation_COW_REPLACE CowMergeOperation_Type = 2 // Raw replace operation
)
// Enum value maps for CowMergeOperation_Type.
var (
CowMergeOperation_Type_name = map[int32]string{
0: "COW_COPY",
1: "COW_XOR",
2: "COW_REPLACE",
}
CowMergeOperation_Type_value = map[string]int32{
"COW_COPY": 0,
"COW_XOR": 1,
"COW_REPLACE": 2,
}
)
func (x CowMergeOperation_Type) Enum() *CowMergeOperation_Type {
p := new(CowMergeOperation_Type)
*p = x
return p
}
func (x CowMergeOperation_Type) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (CowMergeOperation_Type) Descriptor() protoreflect.EnumDescriptor {
return file_update_metadata_proto_enumTypes[1].Descriptor()
}
func (CowMergeOperation_Type) Type() protoreflect.EnumType {
return &file_update_metadata_proto_enumTypes[1]
}
func (x CowMergeOperation_Type) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *CowMergeOperation_Type) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = CowMergeOperation_Type(num)
return nil
}
// Deprecated: Use CowMergeOperation_Type.Descriptor instead.
func (CowMergeOperation_Type) EnumDescriptor() ([]byte, []int) {
return file_update_metadata_proto_rawDescGZIP(), []int{4, 0}
}
type Extent struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
StartBlock *uint64 `protobuf:"varint,1,opt,name=start_block,json=startBlock" json:"start_block,omitempty"`
NumBlocks *uint64 `protobuf:"varint,2,opt,name=num_blocks,json=numBlocks" json:"num_blocks,omitempty"`
}
func (x *Extent) Reset() {
*x = Extent{}
if protoimpl.UnsafeEnabled {
mi := &file_update_metadata_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Extent) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Extent) ProtoMessage() {}
func (x *Extent) ProtoReflect() protoreflect.Message {
mi := &file_update_metadata_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Extent.ProtoReflect.Descriptor instead.
func (*Extent) Descriptor() ([]byte, []int) {
return file_update_metadata_proto_rawDescGZIP(), []int{0}
}
func (x *Extent) GetStartBlock() uint64 {
if x != nil && x.StartBlock != nil {
return *x.StartBlock
}
return 0
}
func (x *Extent) GetNumBlocks() uint64 {
if x != nil && x.NumBlocks != nil {
return *x.NumBlocks
}
return 0
}
type Signatures struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Signatures []*Signatures_Signature `protobuf:"bytes,1,rep,name=signatures" json:"signatures,omitempty"`
}
func (x *Signatures) Reset() {
*x = Signatures{}
if protoimpl.UnsafeEnabled {
mi := &file_update_metadata_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Signatures) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Signatures) ProtoMessage() {}
func (x *Signatures) ProtoReflect() protoreflect.Message {
mi := &file_update_metadata_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Signatures.ProtoReflect.Descriptor instead.
func (*Signatures) Descriptor() ([]byte, []int) {
return file_update_metadata_proto_rawDescGZIP(), []int{1}
}
func (x *Signatures) GetSignatures() []*Signatures_Signature {
if x != nil {
return x.Signatures
}
return nil
}
type PartitionInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Size *uint64 `protobuf:"varint,1,opt,name=size" json:"size,omitempty"`
Hash []byte `protobuf:"bytes,2,opt,name=hash" json:"hash,omitempty"`
}
func (x *PartitionInfo) Reset() {
*x = PartitionInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_update_metadata_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PartitionInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PartitionInfo) ProtoMessage() {}
func (x *PartitionInfo) ProtoReflect() protoreflect.Message {
mi := &file_update_metadata_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use PartitionInfo.ProtoReflect.Descriptor instead.
func (*PartitionInfo) Descriptor() ([]byte, []int) {
return file_update_metadata_proto_rawDescGZIP(), []int{2}
}
func (x *PartitionInfo) GetSize() uint64 {
if x != nil && x.Size != nil {
return *x.Size
}
return 0
}
func (x *PartitionInfo) GetHash() []byte {
if x != nil {
return x.Hash
}
return nil
}
type InstallOperation struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Type *InstallOperation_Type `protobuf:"varint,1,req,name=type,enum=chromeos_update_engine.InstallOperation_Type" json:"type,omitempty"`
// Only minor version 6 or newer support 64 bits |data_offset| and
// |data_length|, older client will read them as uint32.
// The offset into the delta file (after the protobuf)
// where the data (if any) is stored
DataOffset *uint64 `protobuf:"varint,2,opt,name=data_offset,json=dataOffset" json:"data_offset,omitempty"`
// The length of the data in the delta file
DataLength *uint64 `protobuf:"varint,3,opt,name=data_length,json=dataLength" json:"data_length,omitempty"`
// Ordered list of extents that are read from (if any) and written to.
SrcExtents []*Extent `protobuf:"bytes,4,rep,name=src_extents,json=srcExtents" json:"src_extents,omitempty"`
// Byte length of src, equal to the number of blocks in src_extents *
// block_size. It is used for BSDIFF and SOURCE_BSDIFF, because we need to
// pass that external program the number of bytes to read from the blocks we
// pass it. This is not used in any other operation.
SrcLength *uint64 `protobuf:"varint,5,opt,name=src_length,json=srcLength" json:"src_length,omitempty"`
DstExtents []*Extent `protobuf:"bytes,6,rep,name=dst_extents,json=dstExtents" json:"dst_extents,omitempty"`
// Byte length of dst, equal to the number of blocks in dst_extents *
// block_size. Used for BSDIFF and SOURCE_BSDIFF, but not in any other
// operation.
DstLength *uint64 `protobuf:"varint,7,opt,name=dst_length,json=dstLength" json:"dst_length,omitempty"`
// Optional SHA 256 hash of the blob associated with this operation.
// This is used as a primary validation for http-based downloads and
// as a defense-in-depth validation for https-based downloads. If
// the operation doesn't refer to any blob, this field will have
// zero bytes.
DataSha256Hash []byte `protobuf:"bytes,8,opt,name=data_sha256_hash,json=dataSha256Hash" json:"data_sha256_hash,omitempty"`
// Indicates the SHA 256 hash of the source data referenced in src_extents at
// the time of applying the operation. If present, the update_engine daemon
// MUST read and verify the source data before applying the operation.
SrcSha256Hash []byte `protobuf:"bytes,9,opt,name=src_sha256_hash,json=srcSha256Hash" json:"src_sha256_hash,omitempty"`
}
func (x *InstallOperation) Reset() {
*x = InstallOperation{}
if protoimpl.UnsafeEnabled {
mi := &file_update_metadata_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *InstallOperation) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*InstallOperation) ProtoMessage() {}
func (x *InstallOperation) ProtoReflect() protoreflect.Message {
mi := &file_update_metadata_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use InstallOperation.ProtoReflect.Descriptor instead.
func (*InstallOperation) Descriptor() ([]byte, []int) {
return file_update_metadata_proto_rawDescGZIP(), []int{3}
}
func (x *InstallOperation) GetType() InstallOperation_Type {
if x != nil && x.Type != nil {
return *x.Type
}
return InstallOperation_REPLACE
}
func (x *InstallOperation) GetDataOffset() uint64 {
if x != nil && x.DataOffset != nil {
return *x.DataOffset
}
return 0
}
func (x *InstallOperation) GetDataLength() uint64 {
if x != nil && x.DataLength != nil {
return *x.DataLength
}
return 0
}
func (x *InstallOperation) GetSrcExtents() []*Extent {
if x != nil {
return x.SrcExtents
}
return nil
}
func (x *InstallOperation) GetSrcLength() uint64 {
if x != nil && x.SrcLength != nil {
return *x.SrcLength
}
return 0
}
func (x *InstallOperation) GetDstExtents() []*Extent {
if x != nil {
return x.DstExtents
}
return nil
}
func (x *InstallOperation) GetDstLength() uint64 {
if x != nil && x.DstLength != nil {
return *x.DstLength
}
return 0
}
func (x *InstallOperation) GetDataSha256Hash() []byte {
if x != nil {
return x.DataSha256Hash
}
return nil
}
func (x *InstallOperation) GetSrcSha256Hash() []byte {
if x != nil {
return x.SrcSha256Hash
}
return nil
}
// Hints to VAB snapshot to skip writing some blocks if these blocks are
// identical to the ones on the source image. The src & dst extents for each
// CowMergeOperation should be contiguous, and they're a subset of an OTA
// InstallOperation.
// During merge time, we need to follow the pre-computed sequence to avoid
// read after write, similar to the inplace update schema.
type CowMergeOperation struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Type *CowMergeOperation_Type `protobuf:"varint,1,opt,name=type,enum=chromeos_update_engine.CowMergeOperation_Type" json:"type,omitempty"`
SrcExtent *Extent `protobuf:"bytes,2,opt,name=src_extent,json=srcExtent" json:"src_extent,omitempty"`
DstExtent *Extent `protobuf:"bytes,3,opt,name=dst_extent,json=dstExtent" json:"dst_extent,omitempty"`
// For COW_XOR, source location might be unaligned, so this field is in range
// [0, block_size), representing how much should the src_extent shift toward
// larger block number. If this field is non-zero, then src_extent will
// include 1 extra block in the end, as the merge op actually references the
// first |src_offset| bytes of that extra block. For example, if |dst_extent|
// is [10, 15], |src_offset| is 500, then src_extent might look like [25, 31].
// Note that |src_extent| contains 1 extra block than the |dst_extent|.
SrcOffset *uint32 `protobuf:"varint,4,opt,name=src_offset,json=srcOffset" json:"src_offset,omitempty"`
}
func (x *CowMergeOperation) Reset() {
*x = CowMergeOperation{}
if protoimpl.UnsafeEnabled {
mi := &file_update_metadata_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CowMergeOperation) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CowMergeOperation) ProtoMessage() {}
func (x *CowMergeOperation) ProtoReflect() protoreflect.Message {
mi := &file_update_metadata_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CowMergeOperation.ProtoReflect.Descriptor instead.
func (*CowMergeOperation) Descriptor() ([]byte, []int) {
return file_update_metadata_proto_rawDescGZIP(), []int{4}
}
func (x *CowMergeOperation) GetType() CowMergeOperation_Type {
if x != nil && x.Type != nil {
return *x.Type
}
return CowMergeOperation_COW_COPY
}
func (x *CowMergeOperation) GetSrcExtent() *Extent {
if x != nil {
return x.SrcExtent
}
return nil
}
func (x *CowMergeOperation) GetDstExtent() *Extent {
if x != nil {
return x.DstExtent
}
return nil
}
func (x *CowMergeOperation) GetSrcOffset() uint32 {
if x != nil && x.SrcOffset != nil {
return *x.SrcOffset
}
return 0
}
// Describes the update to apply to a single partition.
type PartitionUpdate struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// A platform-specific name to identify the partition set being updated. For
// example, in Chrome OS this could be "ROOT" or "KERNEL".
PartitionName *string `protobuf:"bytes,1,req,name=partition_name,json=partitionName" json:"partition_name,omitempty"`
// Whether this partition carries a filesystem with post-install program that
// must be run to finalize the update process. See also |postinstall_path| and
// |filesystem_type|.
RunPostinstall *bool `protobuf:"varint,2,opt,name=run_postinstall,json=runPostinstall" json:"run_postinstall,omitempty"`
// The path of the executable program to run during the post-install step,
// relative to the root of this filesystem. If not set, the default "postinst"
// will be used. This setting is only used when |run_postinstall| is set and
// true.
PostinstallPath *string `protobuf:"bytes,3,opt,name=postinstall_path,json=postinstallPath" json:"postinstall_path,omitempty"`
// The filesystem type as passed to the mount(2) syscall when mounting the new
// filesystem to run the post-install program. If not set, a fixed list of
// filesystems will be attempted. This setting is only used if
// |run_postinstall| is set and true.
FilesystemType *string `protobuf:"bytes,4,opt,name=filesystem_type,json=filesystemType" json:"filesystem_type,omitempty"`
// If present, a list of signatures of the new_partition_info.hash signed with
// different keys. If the update_engine daemon requires vendor-signed images
// and has its public key installed, one of the signatures should be valid
// for /postinstall to run.
NewPartitionSignature []*Signatures_Signature `protobuf:"bytes,5,rep,name=new_partition_signature,json=newPartitionSignature" json:"new_partition_signature,omitempty"`
OldPartitionInfo *PartitionInfo `protobuf:"bytes,6,opt,name=old_partition_info,json=oldPartitionInfo" json:"old_partition_info,omitempty"`
NewPartitionInfo *PartitionInfo `protobuf:"bytes,7,opt,name=new_partition_info,json=newPartitionInfo" json:"new_partition_info,omitempty"`
// The list of operations to be performed to apply this PartitionUpdate. The
// associated operation blobs (in operations[i].data_offset, data_length)
// should be stored contiguously and in the same order.
Operations []*InstallOperation `protobuf:"bytes,8,rep,name=operations" json:"operations,omitempty"`
// Whether a failure in the postinstall step for this partition should be
// ignored.
PostinstallOptional *bool `protobuf:"varint,9,opt,name=postinstall_optional,json=postinstallOptional" json:"postinstall_optional,omitempty"`
// The extent for data covered by verity hash tree.
HashTreeDataExtent *Extent `protobuf:"bytes,10,opt,name=hash_tree_data_extent,json=hashTreeDataExtent" json:"hash_tree_data_extent,omitempty"`
// The extent to store verity hash tree.
HashTreeExtent *Extent `protobuf:"bytes,11,opt,name=hash_tree_extent,json=hashTreeExtent" json:"hash_tree_extent,omitempty"`
// The hash algorithm used in verity hash tree.
HashTreeAlgorithm *string `protobuf:"bytes,12,opt,name=hash_tree_algorithm,json=hashTreeAlgorithm" json:"hash_tree_algorithm,omitempty"`
// The salt used for verity hash tree.
HashTreeSalt []byte `protobuf:"bytes,13,opt,name=hash_tree_salt,json=hashTreeSalt" json:"hash_tree_salt,omitempty"`
// The extent for data covered by FEC.
FecDataExtent *Extent `protobuf:"bytes,14,opt,name=fec_data_extent,json=fecDataExtent" json:"fec_data_extent,omitempty"`
// The extent to store FEC.
FecExtent *Extent `protobuf:"bytes,15,opt,name=fec_extent,json=fecExtent" json:"fec_extent,omitempty"`
// The number of FEC roots.
FecRoots *uint32 `protobuf:"varint,16,opt,name=fec_roots,json=fecRoots,def=2" json:"fec_roots,omitempty"`
// Per-partition version used for downgrade detection, added
// as an effort to support partial updates. For most partitions,
// this is the build timestamp.
Version *string `protobuf:"bytes,17,opt,name=version" json:"version,omitempty"`
// A sorted list of CowMergeOperation. When writing cow, we can choose to
// skip writing the raw bytes for these extents. During snapshot merge, the
// bytes will read from the source partitions instead.
MergeOperations []*CowMergeOperation `protobuf:"bytes,18,rep,name=merge_operations,json=mergeOperations" json:"merge_operations,omitempty"`
// Estimated size for COW image. This is used by libsnapshot
// as a hint. If set to 0, libsnapshot should use alternative
// methods for estimating size.
EstimateCowSize *uint64 `protobuf:"varint,19,opt,name=estimate_cow_size,json=estimateCowSize" json:"estimate_cow_size,omitempty"`
// Information about the cow used by Cow Writer to specify
// number of cow operations to be written
EstimateOpCountMax *uint64 `protobuf:"varint,20,opt,name=estimate_op_count_max,json=estimateOpCountMax" json:"estimate_op_count_max,omitempty"`
}
// Default values for PartitionUpdate fields.
const (
Default_PartitionUpdate_FecRoots = uint32(2)
)
func (x *PartitionUpdate) Reset() {
*x = PartitionUpdate{}
if protoimpl.UnsafeEnabled {
mi := &file_update_metadata_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PartitionUpdate) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PartitionUpdate) ProtoMessage() {}
func (x *PartitionUpdate) ProtoReflect() protoreflect.Message {
mi := &file_update_metadata_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use PartitionUpdate.ProtoReflect.Descriptor instead.
func (*PartitionUpdate) Descriptor() ([]byte, []int) {
return file_update_metadata_proto_rawDescGZIP(), []int{5}
}
func (x *PartitionUpdate) GetPartitionName() string {
if x != nil && x.PartitionName != nil {
return *x.PartitionName
}
return ""
}
func (x *PartitionUpdate) GetRunPostinstall() bool {
if x != nil && x.RunPostinstall != nil {
return *x.RunPostinstall
}
return false
}
func (x *PartitionUpdate) GetPostinstallPath() string {
if x != nil && x.PostinstallPath != nil {
return *x.PostinstallPath
}
return ""
}
func (x *PartitionUpdate) GetFilesystemType() string {
if x != nil && x.FilesystemType != nil {
return *x.FilesystemType
}
return ""
}
func (x *PartitionUpdate) GetNewPartitionSignature() []*Signatures_Signature {
if x != nil {
return x.NewPartitionSignature
}
return nil
}
func (x *PartitionUpdate) GetOldPartitionInfo() *PartitionInfo {
if x != nil {
return x.OldPartitionInfo
}
return nil
}
func (x *PartitionUpdate) GetNewPartitionInfo() *PartitionInfo {
if x != nil {
return x.NewPartitionInfo
}
return nil
}
func (x *PartitionUpdate) GetOperations() []*InstallOperation {
if x != nil {
return x.Operations
}
return nil
}
func (x *PartitionUpdate) GetPostinstallOptional() bool {
if x != nil && x.PostinstallOptional != nil {
return *x.PostinstallOptional
}
return false
}
func (x *PartitionUpdate) GetHashTreeDataExtent() *Extent {
if x != nil {
return x.HashTreeDataExtent
}
return nil
}
func (x *PartitionUpdate) GetHashTreeExtent() *Extent {
if x != nil {
return x.HashTreeExtent
}
return nil
}
func (x *PartitionUpdate) GetHashTreeAlgorithm() string {
if x != nil && x.HashTreeAlgorithm != nil {
return *x.HashTreeAlgorithm
}
return ""
}
func (x *PartitionUpdate) GetHashTreeSalt() []byte {
if x != nil {
return x.HashTreeSalt
}
return nil
}
func (x *PartitionUpdate) GetFecDataExtent() *Extent {
if x != nil {
return x.FecDataExtent
}
return nil
}
func (x *PartitionUpdate) GetFecExtent() *Extent {
if x != nil {
return x.FecExtent
}
return nil
}
func (x *PartitionUpdate) GetFecRoots() uint32 {
if x != nil && x.FecRoots != nil {
return *x.FecRoots
}
return Default_PartitionUpdate_FecRoots
}
func (x *PartitionUpdate) GetVersion() string {
if x != nil && x.Version != nil {
return *x.Version
}
return ""
}
func (x *PartitionUpdate) GetMergeOperations() []*CowMergeOperation {
if x != nil {
return x.MergeOperations
}
return nil
}
func (x *PartitionUpdate) GetEstimateCowSize() uint64 {
if x != nil && x.EstimateCowSize != nil {
return *x.EstimateCowSize
}
return 0
}
func (x *PartitionUpdate) GetEstimateOpCountMax() uint64 {
if x != nil && x.EstimateOpCountMax != nil {
return *x.EstimateOpCountMax
}
return 0
}
type DynamicPartitionGroup struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Name of the group.
Name *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
// Maximum size of the group. The sum of sizes of all partitions in the group
// must not exceed the maximum size of the group.
Size *uint64 `protobuf:"varint,2,opt,name=size" json:"size,omitempty"`
// A list of partitions that belong to the group.
PartitionNames []string `protobuf:"bytes,3,rep,name=partition_names,json=partitionNames" json:"partition_names,omitempty"`
}
func (x *DynamicPartitionGroup) Reset() {
*x = DynamicPartitionGroup{}
if protoimpl.UnsafeEnabled {
mi := &file_update_metadata_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DynamicPartitionGroup) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DynamicPartitionGroup) ProtoMessage() {}
func (x *DynamicPartitionGroup) ProtoReflect() protoreflect.Message {
mi := &file_update_metadata_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DynamicPartitionGroup.ProtoReflect.Descriptor instead.
func (*DynamicPartitionGroup) Descriptor() ([]byte, []int) {
return file_update_metadata_proto_rawDescGZIP(), []int{6}
}
func (x *DynamicPartitionGroup) GetName() string {
if x != nil && x.Name != nil {
return *x.Name
}
return ""
}
func (x *DynamicPartitionGroup) GetSize() uint64 {
if x != nil && x.Size != nil {
return *x.Size
}
return 0
}
func (x *DynamicPartitionGroup) GetPartitionNames() []string {
if x != nil {
return x.PartitionNames
}
return nil
}
type VABCFeatureSet struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Threaded *bool `protobuf:"varint,1,opt,name=threaded" json:"threaded,omitempty"`
BatchWrites *bool `protobuf:"varint,2,opt,name=batch_writes,json=batchWrites" json:"batch_writes,omitempty"`
}
func (x *VABCFeatureSet) Reset() {
*x = VABCFeatureSet{}
if protoimpl.UnsafeEnabled {
mi := &file_update_metadata_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *VABCFeatureSet) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*VABCFeatureSet) ProtoMessage() {}
func (x *VABCFeatureSet) ProtoReflect() protoreflect.Message {
mi := &file_update_metadata_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use VABCFeatureSet.ProtoReflect.Descriptor instead.
func (*VABCFeatureSet) Descriptor() ([]byte, []int) {
return file_update_metadata_proto_rawDescGZIP(), []int{7}
}
func (x *VABCFeatureSet) GetThreaded() bool {
if x != nil && x.Threaded != nil {
return *x.Threaded
}
return false
}
func (x *VABCFeatureSet) GetBatchWrites() bool {
if x != nil && x.BatchWrites != nil {
return *x.BatchWrites
}
return false
}
// Metadata related to all dynamic partitions.
type DynamicPartitionMetadata struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// All updatable groups present in |partitions| of this DeltaArchiveManifest.
// - If an updatable group is on the device but not in the manifest, it is
// not updated. Hence, the group will not be resized, and partitions cannot
// be added to or removed from the group.
// - If an updatable group is in the manifest but not on the device, the group
// is added to the device.
Groups []*DynamicPartitionGroup `protobuf:"bytes,1,rep,name=groups" json:"groups,omitempty"`
// Whether dynamic partitions have snapshots during the update. If this is
// set to true, the update_engine daemon creates snapshots for all dynamic
// partitions if possible. If this is unset, the update_engine daemon MUST
// NOT create snapshots for dynamic partitions.
SnapshotEnabled *bool `protobuf:"varint,2,opt,name=snapshot_enabled,json=snapshotEnabled" json:"snapshot_enabled,omitempty"`
// If this is set to false, update_engine should not use VABC regardless. If
// this is set to true, update_engine may choose to use VABC if device
// supports it, but not guaranteed.
// VABC stands for Virtual AB Compression
VabcEnabled *bool `protobuf:"varint,3,opt,name=vabc_enabled,json=vabcEnabled" json:"vabc_enabled,omitempty"`
// The compression algorithm used by VABC. Available ones are "gz", "brotli".
// See system/core/fs_mgr/libsnapshot/cow_writer.cpp for available options,
// as this parameter is ultimated forwarded to libsnapshot's CowWriter
VabcCompressionParam *string `protobuf:"bytes,4,opt,name=vabc_compression_param,json=vabcCompressionParam" json:"vabc_compression_param,omitempty"`
// COW version used by VABC. The represents the major version in the COW
// header
CowVersion *uint32 `protobuf:"varint,5,opt,name=cow_version,json=cowVersion" json:"cow_version,omitempty"`
// A collection of knobs to tune Virtual AB Compression
VabcFeatureSet *VABCFeatureSet `protobuf:"bytes,6,opt,name=vabc_feature_set,json=vabcFeatureSet" json:"vabc_feature_set,omitempty"`
// Max bytes to be compressed at once during ota. Options: 4k, 8k, 16k, 32k,
// 64k, 128k
CompressionFactor *uint64 `protobuf:"varint,7,opt,name=compression_factor,json=compressionFactor" json:"compression_factor,omitempty"`
}
func (x *DynamicPartitionMetadata) Reset() {
*x = DynamicPartitionMetadata{}
if protoimpl.UnsafeEnabled {
mi := &file_update_metadata_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DynamicPartitionMetadata) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DynamicPartitionMetadata) ProtoMessage() {}
func (x *DynamicPartitionMetadata) ProtoReflect() protoreflect.Message {
mi := &file_update_metadata_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DynamicPartitionMetadata.ProtoReflect.Descriptor instead.
func (*DynamicPartitionMetadata) Descriptor() ([]byte, []int) {
return file_update_metadata_proto_rawDescGZIP(), []int{8}
}
func (x *DynamicPartitionMetadata) GetGroups() []*DynamicPartitionGroup {
if x != nil {
return x.Groups
}
return nil
}
func (x *DynamicPartitionMetadata) GetSnapshotEnabled() bool {
if x != nil && x.SnapshotEnabled != nil {
return *x.SnapshotEnabled
}
return false
}
func (x *DynamicPartitionMetadata) GetVabcEnabled() bool {
if x != nil && x.VabcEnabled != nil {
return *x.VabcEnabled
}
return false
}
func (x *DynamicPartitionMetadata) GetVabcCompressionParam() string {
if x != nil && x.VabcCompressionParam != nil {
return *x.VabcCompressionParam
}
return ""
}
func (x *DynamicPartitionMetadata) GetCowVersion() uint32 {
if x != nil && x.CowVersion != nil {
return *x.CowVersion
}
return 0
}
func (x *DynamicPartitionMetadata) GetVabcFeatureSet() *VABCFeatureSet {
if x != nil {
return x.VabcFeatureSet
}
return nil
}
func (x *DynamicPartitionMetadata) GetCompressionFactor() uint64 {
if x != nil && x.CompressionFactor != nil {
return *x.CompressionFactor
}
return 0
}
// Definition has been duplicated from
// $ANDROID_BUILD_TOP/build/tools/releasetools/ota_metadata.proto. Keep in sync.
type ApexInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PackageName *string `protobuf:"bytes,1,opt,name=package_name,json=packageName" json:"package_name,omitempty"`
Version *int64 `protobuf:"varint,2,opt,name=version" json:"version,omitempty"`
IsCompressed *bool `protobuf:"varint,3,opt,name=is_compressed,json=isCompressed" json:"is_compressed,omitempty"`
DecompressedSize *int64 `protobuf:"varint,4,opt,name=decompressed_size,json=decompressedSize" json:"decompressed_size,omitempty"`
}
func (x *ApexInfo) Reset() {
*x = ApexInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_update_metadata_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ApexInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ApexInfo) ProtoMessage() {}
func (x *ApexInfo) ProtoReflect() protoreflect.Message {
mi := &file_update_metadata_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ApexInfo.ProtoReflect.Descriptor instead.
func (*ApexInfo) Descriptor() ([]byte, []int) {
return file_update_metadata_proto_rawDescGZIP(), []int{9}
}
func (x *ApexInfo) GetPackageName() string {
if x != nil && x.PackageName != nil {
return *x.PackageName
}
return ""
}
func (x *ApexInfo) GetVersion() int64 {
if x != nil && x.Version != nil {
return *x.Version
}
return 0
}
func (x *ApexInfo) GetIsCompressed() bool {
if x != nil && x.IsCompressed != nil {
return *x.IsCompressed
}
return false
}
func (x *ApexInfo) GetDecompressedSize() int64 {
if x != nil && x.DecompressedSize != nil {
return *x.DecompressedSize
}
return 0
}
// Definition has been duplicated from
// $ANDROID_BUILD_TOP/build/tools/releasetools/ota_metadata.proto. Keep in sync.
type ApexMetadata struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ApexInfo []*ApexInfo `protobuf:"bytes,1,rep,name=apex_info,json=apexInfo" json:"apex_info,omitempty"`
}
func (x *ApexMetadata) Reset() {
*x = ApexMetadata{}
if protoimpl.UnsafeEnabled {
mi := &file_update_metadata_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ApexMetadata) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ApexMetadata) ProtoMessage() {}
func (x *ApexMetadata) ProtoReflect() protoreflect.Message {
mi := &file_update_metadata_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ApexMetadata.ProtoReflect.Descriptor instead.
func (*ApexMetadata) Descriptor() ([]byte, []int) {
return file_update_metadata_proto_rawDescGZIP(), []int{10}
}
func (x *ApexMetadata) GetApexInfo() []*ApexInfo {
if x != nil {
return x.ApexInfo
}
return nil
}
type DeltaArchiveManifest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// (At time of writing) usually 4096
BlockSize *uint32 `protobuf:"varint,3,opt,name=block_size,json=blockSize,def=4096" json:"block_size,omitempty"`
// If signatures are present, the offset into the blobs, generally
// tacked onto the end of the file, and the length. We use an offset
// rather than a bool to allow for more flexibility in future file formats.
// If either is absent, it means signatures aren't supported in this
// file.
SignaturesOffset *uint64 `protobuf:"varint,4,opt,name=signatures_offset,json=signaturesOffset" json:"signatures_offset,omitempty"`
SignaturesSize *uint64 `protobuf:"varint,5,opt,name=signatures_size,json=signaturesSize" json:"signatures_size,omitempty"`
// The minor version, also referred as "delta version", of the payload.
// Minor version 0 is full payload, everything else is delta payload.
MinorVersion *uint32 `protobuf:"varint,12,opt,name=minor_version,json=minorVersion,def=0" json:"minor_version,omitempty"`
// Only present in major version >= 2. List of partitions that will be
// updated, in the order they will be updated. This field replaces the
// |install_operations|, |kernel_install_operations| and the
// |{old,new}_{kernel,rootfs}_info| fields used in major version = 1. This
// array can have more than two partitions if needed, and they are identified
// by the partition name.
Partitions []*PartitionUpdate `protobuf:"bytes,13,rep,name=partitions" json:"partitions,omitempty"`
// The maximum timestamp of the OS allowed to apply this payload.
// Can be used to prevent downgrading the OS.
MaxTimestamp *int64 `protobuf:"varint,14,opt,name=max_timestamp,json=maxTimestamp" json:"max_timestamp,omitempty"`
// Metadata related to all dynamic partitions.
DynamicPartitionMetadata *DynamicPartitionMetadata `protobuf:"bytes,15,opt,name=dynamic_partition_metadata,json=dynamicPartitionMetadata" json:"dynamic_partition_metadata,omitempty"`
// If the payload only updates a subset of partitions on the device.
PartialUpdate *bool `protobuf:"varint,16,opt,name=partial_update,json=partialUpdate" json:"partial_update,omitempty"`
// Information on compressed APEX to figure out how much space is required for
// their decompression
ApexInfo []*ApexInfo `protobuf:"bytes,17,rep,name=apex_info,json=apexInfo" json:"apex_info,omitempty"`
// Security patch level of the device, usually in the format of
// yyyy-mm-dd
SecurityPatchLevel *string `protobuf:"bytes,18,opt,name=security_patch_level,json=securityPatchLevel" json:"security_patch_level,omitempty"`
}
// Default values for DeltaArchiveManifest fields.
const (
Default_DeltaArchiveManifest_BlockSize = uint32(4096)
Default_DeltaArchiveManifest_MinorVersion = uint32(0)
)
func (x *DeltaArchiveManifest) Reset() {
*x = DeltaArchiveManifest{}
if protoimpl.UnsafeEnabled {
mi := &file_update_metadata_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DeltaArchiveManifest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DeltaArchiveManifest) ProtoMessage() {}
func (x *DeltaArchiveManifest) ProtoReflect() protoreflect.Message {
mi := &file_update_metadata_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DeltaArchiveManifest.ProtoReflect.Descriptor instead.
func (*DeltaArchiveManifest) Descriptor() ([]byte, []int) {
return file_update_metadata_proto_rawDescGZIP(), []int{11}
}
func (x *DeltaArchiveManifest) GetBlockSize() uint32 {
if x != nil && x.BlockSize != nil {
return *x.BlockSize
}
return Default_DeltaArchiveManifest_BlockSize
}
func (x *DeltaArchiveManifest) GetSignaturesOffset() uint64 {
if x != nil && x.SignaturesOffset != nil {
return *x.SignaturesOffset
}
return 0
}
func (x *DeltaArchiveManifest) GetSignaturesSize() uint64 {
if x != nil && x.SignaturesSize != nil {
return *x.SignaturesSize
}
return 0
}
func (x *DeltaArchiveManifest) GetMinorVersion() uint32 {
if x != nil && x.MinorVersion != nil {
return *x.MinorVersion
}
return Default_DeltaArchiveManifest_MinorVersion
}
func (x *DeltaArchiveManifest) GetPartitions() []*PartitionUpdate {
if x != nil {
return x.Partitions
}
return nil
}
func (x *DeltaArchiveManifest) GetMaxTimestamp() int64 {
if x != nil && x.MaxTimestamp != nil {
return *x.MaxTimestamp
}
return 0
}
func (x *DeltaArchiveManifest) GetDynamicPartitionMetadata() *DynamicPartitionMetadata {
if x != nil {
return x.DynamicPartitionMetadata
}
return nil
}
func (x *DeltaArchiveManifest) GetPartialUpdate() bool {
if x != nil && x.PartialUpdate != nil {
return *x.PartialUpdate
}
return false
}
func (x *DeltaArchiveManifest) GetApexInfo() []*ApexInfo {
if x != nil {
return x.ApexInfo
}
return nil
}
func (x *DeltaArchiveManifest) GetSecurityPatchLevel() string {
if x != nil && x.SecurityPatchLevel != nil {
return *x.SecurityPatchLevel
}
return ""
}
type Signatures_Signature struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Deprecated: Marked as deprecated in update_metadata.proto.
Version *uint32 `protobuf:"varint,1,opt,name=version" json:"version,omitempty"`
Data []byte `protobuf:"bytes,2,opt,name=data" json:"data,omitempty"`
// The DER encoded signature size of EC keys is nondeterministic for
// different input of sha256 hash. However, we need the size of the
// serialized signatures protobuf string to be fixed before signing;
// because this size is part of the content to be signed. Therefore, we
// always pad the signature data to the maximum possible signature size of
// a given key. And the payload verifier will truncate the signature to
// its correct size based on the value of |unpadded_signature_size|.
UnpaddedSignatureSize *uint32 `protobuf:"fixed32,3,opt,name=unpadded_signature_size,json=unpaddedSignatureSize" json:"unpadded_signature_size,omitempty"`
}
func (x *Signatures_Signature) Reset() {
*x = Signatures_Signature{}
if protoimpl.UnsafeEnabled {
mi := &file_update_metadata_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Signatures_Signature) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Signatures_Signature) ProtoMessage() {}
func (x *Signatures_Signature) ProtoReflect() protoreflect.Message {
mi := &file_update_metadata_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Signatures_Signature.ProtoReflect.Descriptor instead.
func (*Signatures_Signature) Descriptor() ([]byte, []int) {
return file_update_metadata_proto_rawDescGZIP(), []int{1, 0}
}
// Deprecated: Marked as deprecated in update_metadata.proto.
func (x *Signatures_Signature) GetVersion() uint32 {
if x != nil && x.Version != nil {
return *x.Version
}
return 0
}
func (x *Signatures_Signature) GetData() []byte {
if x != nil {
return x.Data
}
return nil
}
func (x *Signatures_Signature) GetUnpaddedSignatureSize() uint32 {
if x != nil && x.UnpaddedSignatureSize != nil {
return *x.UnpaddedSignatureSize
}
return 0
}
var File_update_metadata_proto protoreflect.FileDescriptor
var file_update_metadata_proto_rawDesc = []byte{
0x0a, 0x15, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f,
0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x22,
0x48, 0x0a, 0x06, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61,
0x72, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a,
0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x75,
0x6d, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09,
0x6e, 0x75, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0xd1, 0x01, 0x0a, 0x0a, 0x53, 0x69,
0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e,
0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63,
0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x65,
0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e,
0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x1a, 0x75, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74,
0x75, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
0x6e, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52,
0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x36, 0x0a, 0x17, 0x75, 0x6e, 0x70, 0x61, 0x64, 0x64, 0x65,
0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65,
0x18, 0x03, 0x20, 0x01, 0x28, 0x07, 0x52, 0x15, 0x75, 0x6e, 0x70, 0x61, 0x64, 0x64, 0x65, 0x64,
0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x37, 0x0a,
0x0d, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12,
0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x69,
0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x22, 0x9b, 0x05, 0x0a, 0x10, 0x49, 0x6e, 0x73, 0x74, 0x61,
0x6c, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x04, 0x74,
0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x72, 0x6f,
0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x67, 0x69,
0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f,
0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20,
0x01, 0x28, 0x04, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12,
0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03,
0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68,
0x12, 0x3f, 0x0a, 0x0b, 0x73, 0x72, 0x63, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18,
0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73,
0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x45,
0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x73, 0x72, 0x63, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x74,
0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x72, 0x63, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18,
0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x72, 0x63, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68,
0x12, 0x3f, 0x0a, 0x0b, 0x64, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18,
0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73,
0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x45,
0x78, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x64, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x74,
0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x73, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18,
0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x64, 0x73, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68,
0x12, 0x28, 0x0a, 0x10, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x5f,
0x68, 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x61,
0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x48, 0x61, 0x73, 0x68, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x72,
0x63, 0x5f, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x09, 0x20,
0x01, 0x28, 0x0c, 0x52, 0x0d, 0x73, 0x72, 0x63, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x48, 0x61,
0x73, 0x68, 0x22, 0xef, 0x01, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x52,
0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x45, 0x50, 0x4c,
0x41, 0x43, 0x45, 0x5f, 0x42, 0x5a, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x4d, 0x4f, 0x56, 0x45,
0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x42, 0x53, 0x44, 0x49, 0x46, 0x46,
0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45,
0x5f, 0x43, 0x4f, 0x50, 0x59, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x4f, 0x55, 0x52, 0x43,
0x45, 0x5f, 0x42, 0x53, 0x44, 0x49, 0x46, 0x46, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x45,
0x50, 0x4c, 0x41, 0x43, 0x45, 0x5f, 0x58, 0x5a, 0x10, 0x08, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45,
0x52, 0x4f, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x10,
0x07, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x52, 0x4f, 0x54, 0x4c, 0x49, 0x5f, 0x42, 0x53, 0x44, 0x49,
0x46, 0x46, 0x10, 0x0a, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x55, 0x46, 0x46, 0x44, 0x49, 0x46, 0x46,
0x10, 0x09, 0x12, 0x0c, 0x0a, 0x08, 0x5a, 0x55, 0x43, 0x43, 0x48, 0x49, 0x4e, 0x49, 0x10, 0x0b,
0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x5a, 0x34, 0x44, 0x49, 0x46, 0x46, 0x5f, 0x42, 0x53, 0x44, 0x49,
0x46, 0x46, 0x10, 0x0c, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x5a, 0x34, 0x44, 0x49, 0x46, 0x46, 0x5f,
0x50, 0x55, 0x46, 0x46, 0x44, 0x49, 0x46, 0x46, 0x10, 0x0d, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x53,
0x54, 0x44, 0x10, 0x0e, 0x22, 0xa8, 0x02, 0x0a, 0x11, 0x43, 0x6f, 0x77, 0x4d, 0x65, 0x72, 0x67,
0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79,
0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d,
0x65, 0x6f, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e,
0x65, 0x2e, 0x43, 0x6f, 0x77, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3d,
0x0a, 0x0a, 0x73, 0x72, 0x63, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x75, 0x70,
0x64, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x65,
0x6e, 0x74, 0x52, 0x09, 0x73, 0x72, 0x63, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x3d, 0x0a,
0x0a, 0x64, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x75, 0x70, 0x64,
0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e,
0x74, 0x52, 0x09, 0x64, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a,
0x73, 0x72, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x09, 0x73, 0x72, 0x63, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x32, 0x0a, 0x04, 0x54,
0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x10,
0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x57, 0x5f, 0x58, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x0f,
0x0a, 0x0b, 0x43, 0x4f, 0x57, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x02, 0x22,
0xab, 0x09, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e,
0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72,
0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x75,
0x6e, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x18, 0x02, 0x20,
0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x75, 0x6e, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x73, 0x74,
0x61, 0x6c, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x73, 0x74, 0x61,
0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70,
0x6f, 0x73, 0x74, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x12, 0x27,
0x0a, 0x0f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x74, 0x79, 0x70,
0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73,
0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x64, 0x0a, 0x17, 0x6e, 0x65, 0x77, 0x5f, 0x70,
0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75,
0x72, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d,
0x65, 0x6f, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e,
0x65, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x53, 0x69, 0x67,
0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x15, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x72, 0x74, 0x69,
0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x53, 0x0a,
0x12, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69,
0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x68, 0x72, 0x6f,
0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x67, 0x69,
0x6e, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f,
0x52, 0x10, 0x6f, 0x6c, 0x64, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e,
0x66, 0x6f, 0x12, 0x53, 0x0a, 0x12, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74,
0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25,
0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f,
0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74,
0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x48, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x68,
0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e,
0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x4f, 0x70, 0x65, 0x72,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x73, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c,
0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52,
0x13, 0x70, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x4f, 0x70, 0x74, 0x69,
0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x51, 0x0a, 0x15, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x74, 0x72, 0x65,
0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x75,
0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x78, 0x74,
0x65, 0x6e, 0x74, 0x52, 0x12, 0x68, 0x61, 0x73, 0x68, 0x54, 0x72, 0x65, 0x65, 0x44, 0x61, 0x74,
0x61, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x10, 0x68, 0x61, 0x73, 0x68, 0x5f,
0x74, 0x72, 0x65, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x75, 0x70, 0x64,
0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e,
0x74, 0x52, 0x0e, 0x68, 0x61, 0x73, 0x68, 0x54, 0x72, 0x65, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e,
0x74, 0x12, 0x2e, 0x0a, 0x13, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x61,
0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11,
0x68, 0x61, 0x73, 0x68, 0x54, 0x72, 0x65, 0x65, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68,
0x6d, 0x12, 0x24, 0x0a, 0x0e, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x73,
0x61, 0x6c, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x68, 0x61, 0x73, 0x68, 0x54,
0x72, 0x65, 0x65, 0x53, 0x61, 0x6c, 0x74, 0x12, 0x46, 0x0a, 0x0f, 0x66, 0x65, 0x63, 0x5f, 0x64,
0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x1e, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61,
0x74, 0x65, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x74,
0x52, 0x0d, 0x66, 0x65, 0x63, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x12,
0x3d, 0x0a, 0x0a, 0x66, 0x65, 0x63, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x75,
0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x78, 0x74,
0x65, 0x6e, 0x74, 0x52, 0x09, 0x66, 0x65, 0x63, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1e,
0x0a, 0x09, 0x66, 0x65, 0x63, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28,
0x0d, 0x3a, 0x01, 0x32, 0x52, 0x08, 0x66, 0x65, 0x63, 0x52, 0x6f, 0x6f, 0x74, 0x73, 0x12, 0x18,
0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52,
0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x10, 0x6d, 0x65, 0x72, 0x67,
0x65, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x12, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x75, 0x70,
0x64, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x77, 0x4d,
0x65, 0x72, 0x67, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x6d,
0x65, 0x72, 0x67, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a,
0x0a, 0x11, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x77, 0x5f, 0x73,
0x69, 0x7a, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x65, 0x73, 0x74, 0x69, 0x6d,
0x61, 0x74, 0x65, 0x43, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x31, 0x0a, 0x15, 0x65, 0x73,
0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f,
0x6d, 0x61, 0x78, 0x18, 0x14, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x65, 0x73, 0x74, 0x69, 0x6d,
0x61, 0x74, 0x65, 0x4f, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x22, 0x68, 0x0a,
0x15, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f,
0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
0x20, 0x02, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69,
0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x27,
0x0a, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69,
0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x4f, 0x0a, 0x0e, 0x56, 0x41, 0x42, 0x43, 0x46,
0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x68, 0x72,
0x65, 0x61, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, 0x68, 0x72,
0x65, 0x61, 0x64, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x77,
0x72, 0x69, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x62, 0x61, 0x74,
0x63, 0x68, 0x57, 0x72, 0x69, 0x74, 0x65, 0x73, 0x22, 0x87, 0x03, 0x0a, 0x18, 0x44, 0x79, 0x6e,
0x61, 0x6d, 0x69, 0x63, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74,
0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x45, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18,
0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73,
0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x44,
0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x47,
0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x29, 0x0a, 0x10,
0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x61, 0x62, 0x63, 0x5f,
0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x76,
0x61, 0x62, 0x63, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x76, 0x61,
0x62, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70,
0x61, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x76, 0x61, 0x62, 0x63,
0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d,
0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x77, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x6f, 0x77, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
0x6e, 0x12, 0x50, 0x0a, 0x10, 0x76, 0x61, 0x62, 0x63, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72,
0x65, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68,
0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e,
0x67, 0x69, 0x6e, 0x65, 0x2e, 0x56, 0x41, 0x42, 0x43, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65,
0x53, 0x65, 0x74, 0x52, 0x0e, 0x76, 0x61, 0x62, 0x63, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65,
0x53, 0x65, 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69,
0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52,
0x11, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74,
0x6f, 0x72, 0x22, 0x99, 0x01, 0x0a, 0x08, 0x41, 0x70, 0x65, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x12,
0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61,
0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d,
0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x18, 0x03, 0x20,
0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65,
0x64, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x65, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65,
0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x64, 0x65,
0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x4d,
0x0a, 0x0c, 0x41, 0x70, 0x65, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3d,
0x0a, 0x09, 0x61, 0x70, 0x65, 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x20, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x75, 0x70, 0x64,
0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70, 0x65, 0x78, 0x49,
0x6e, 0x66, 0x6f, 0x52, 0x08, 0x61, 0x70, 0x65, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xdf, 0x04,
0x0a, 0x14, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4d, 0x61,
0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f,
0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x3a, 0x04, 0x34, 0x30, 0x39, 0x36,
0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x73,
0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74,
0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72,
0x65, 0x73, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x67, 0x6e,
0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
0x04, 0x52, 0x0e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x53, 0x69, 0x7a,
0x65, 0x12, 0x26, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69,
0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x3a, 0x01, 0x30, 0x52, 0x0c, 0x6d, 0x69, 0x6e,
0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x72,
0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e,
0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f,
0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e,
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
0x61, 0x6d, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x54, 0x69,
0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x6e, 0x0a, 0x1a, 0x64, 0x79, 0x6e, 0x61, 0x6d,
0x69, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74,
0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68,
0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e,
0x67, 0x69, 0x6e, 0x65, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x50, 0x61, 0x72, 0x74,
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x18, 0x64,
0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4d,
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69,
0x61, 0x6c, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52,
0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3d,
0x0a, 0x09, 0x61, 0x70, 0x65, 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x11, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x20, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x75, 0x70, 0x64,
0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70, 0x65, 0x78, 0x49,
0x6e, 0x66, 0x6f, 0x52, 0x08, 0x61, 0x70, 0x65, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x30, 0x0a,
0x14, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f,
0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4a,
0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x06, 0x10,
0x07, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08,
0x09, 0x10, 0x0a, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0b, 0x10, 0x0c, 0x42,
0x04, 0x5a, 0x02, 0x2e, 0x2f,
}
var (
file_update_metadata_proto_rawDescOnce sync.Once
file_update_metadata_proto_rawDescData = file_update_metadata_proto_rawDesc
)
func file_update_metadata_proto_rawDescGZIP() []byte {
file_update_metadata_proto_rawDescOnce.Do(func() {
file_update_metadata_proto_rawDescData = protoimpl.X.CompressGZIP(file_update_metadata_proto_rawDescData)
})
return file_update_metadata_proto_rawDescData
}
var file_update_metadata_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_update_metadata_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
var file_update_metadata_proto_goTypes = []interface{}{
(InstallOperation_Type)(0), // 0: chromeos_update_engine.InstallOperation.Type
(CowMergeOperation_Type)(0), // 1: chromeos_update_engine.CowMergeOperation.Type
(*Extent)(nil), // 2: chromeos_update_engine.Extent
(*Signatures)(nil), // 3: chromeos_update_engine.Signatures
(*PartitionInfo)(nil), // 4: chromeos_update_engine.PartitionInfo
(*InstallOperation)(nil), // 5: chromeos_update_engine.InstallOperation
(*CowMergeOperation)(nil), // 6: chromeos_update_engine.CowMergeOperation
(*PartitionUpdate)(nil), // 7: chromeos_update_engine.PartitionUpdate
(*DynamicPartitionGroup)(nil), // 8: chromeos_update_engine.DynamicPartitionGroup
(*VABCFeatureSet)(nil), // 9: chromeos_update_engine.VABCFeatureSet
(*DynamicPartitionMetadata)(nil), // 10: chromeos_update_engine.DynamicPartitionMetadata
(*ApexInfo)(nil), // 11: chromeos_update_engine.ApexInfo
(*ApexMetadata)(nil), // 12: chromeos_update_engine.ApexMetadata
(*DeltaArchiveManifest)(nil), // 13: chromeos_update_engine.DeltaArchiveManifest
(*Signatures_Signature)(nil), // 14: chromeos_update_engine.Signatures.Signature
}
var file_update_metadata_proto_depIdxs = []int32{
14, // 0: chromeos_update_engine.Signatures.signatures:type_name -> chromeos_update_engine.Signatures.Signature
0, // 1: chromeos_update_engine.InstallOperation.type:type_name -> chromeos_update_engine.InstallOperation.Type
2, // 2: chromeos_update_engine.InstallOperation.src_extents:type_name -> chromeos_update_engine.Extent
2, // 3: chromeos_update_engine.InstallOperation.dst_extents:type_name -> chromeos_update_engine.Extent
1, // 4: chromeos_update_engine.CowMergeOperation.type:type_name -> chromeos_update_engine.CowMergeOperation.Type
2, // 5: chromeos_update_engine.CowMergeOperation.src_extent:type_name -> chromeos_update_engine.Extent
2, // 6: chromeos_update_engine.CowMergeOperation.dst_extent:type_name -> chromeos_update_engine.Extent
14, // 7: chromeos_update_engine.PartitionUpdate.new_partition_signature:type_name -> chromeos_update_engine.Signatures.Signature
4, // 8: chromeos_update_engine.PartitionUpdate.old_partition_info:type_name -> chromeos_update_engine.PartitionInfo
4, // 9: chromeos_update_engine.PartitionUpdate.new_partition_info:type_name -> chromeos_update_engine.PartitionInfo
5, // 10: chromeos_update_engine.PartitionUpdate.operations:type_name -> chromeos_update_engine.InstallOperation
2, // 11: chromeos_update_engine.PartitionUpdate.hash_tree_data_extent:type_name -> chromeos_update_engine.Extent
2, // 12: chromeos_update_engine.PartitionUpdate.hash_tree_extent:type_name -> chromeos_update_engine.Extent
2, // 13: chromeos_update_engine.PartitionUpdate.fec_data_extent:type_name -> chromeos_update_engine.Extent
2, // 14: chromeos_update_engine.PartitionUpdate.fec_extent:type_name -> chromeos_update_engine.Extent
6, // 15: chromeos_update_engine.PartitionUpdate.merge_operations:type_name -> chromeos_update_engine.CowMergeOperation
8, // 16: chromeos_update_engine.DynamicPartitionMetadata.groups:type_name -> chromeos_update_engine.DynamicPartitionGroup
9, // 17: chromeos_update_engine.DynamicPartitionMetadata.vabc_feature_set:type_name -> chromeos_update_engine.VABCFeatureSet
11, // 18: chromeos_update_engine.ApexMetadata.apex_info:type_name -> chromeos_update_engine.ApexInfo
7, // 19: chromeos_update_engine.DeltaArchiveManifest.partitions:type_name -> chromeos_update_engine.PartitionUpdate
10, // 20: chromeos_update_engine.DeltaArchiveManifest.dynamic_partition_metadata:type_name -> chromeos_update_engine.DynamicPartitionMetadata
11, // 21: chromeos_update_engine.DeltaArchiveManifest.apex_info:type_name -> chromeos_update_engine.ApexInfo
22, // [22:22] is the sub-list for method output_type
22, // [22:22] is the sub-list for method input_type
22, // [22:22] is the sub-list for extension type_name
22, // [22:22] is the sub-list for extension extendee
0, // [0:22] is the sub-list for field type_name
}
func init() { file_update_metadata_proto_init() }
func file_update_metadata_proto_init() {
if File_update_metadata_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_update_metadata_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Extent); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_update_metadata_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Signatures); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_update_metadata_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PartitionInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_update_metadata_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*InstallOperation); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_update_metadata_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CowMergeOperation); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_update_metadata_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PartitionUpdate); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_update_metadata_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DynamicPartitionGroup); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_update_metadata_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VABCFeatureSet); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_update_metadata_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DynamicPartitionMetadata); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_update_metadata_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ApexInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_update_metadata_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ApexMetadata); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_update_metadata_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeltaArchiveManifest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_update_metadata_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Signatures_Signature); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_update_metadata_proto_rawDesc,
NumEnums: 2,
NumMessages: 13,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_update_metadata_proto_goTypes,
DependencyIndexes: file_update_metadata_proto_depIdxs,
EnumInfos: file_update_metadata_proto_enumTypes,
MessageInfos: file_update_metadata_proto_msgTypes,
}.Build()
File_update_metadata_proto = out.File
file_update_metadata_proto_rawDesc = nil
file_update_metadata_proto_goTypes = nil
file_update_metadata_proto_depIdxs = nil
}