diff --git a/client/llb/fileop.go b/client/llb/fileop.go index 82fc87c6..64f6ea31 100644 --- a/client/llb/fileop.go +++ b/client/llb/fileop.go @@ -4,6 +4,7 @@ import ( _ "crypto/sha256" "os" "path" + "time" "github.com/moby/buildkit/solver/pb" digest "github.com/opencontainers/go-digest" @@ -149,6 +150,7 @@ func (a *fileActionMkdir) toProtoAction(parent string, base pb.InputIndex) pb.Is Mode: int32(a.mode & 0777), MakeParents: a.info.MakeParents, Owner: a.info.ChownOpt.marshal(base), + Timestamp: marshalTime(a.info.CreatedTime), }, } } @@ -180,6 +182,7 @@ func WithParents(b bool) MkdirOption { type MkdirInfo struct { MakeParents bool ChownOpt *ChownOpt + CreatedTime *time.Time } func (mi *MkdirInfo) SetMkdirOption(mi2 *MkdirInfo) { @@ -260,7 +263,8 @@ type MkfileOption interface { } type MkfileInfo struct { - ChownOpt *ChownOpt + ChownOpt *ChownOpt + CreatedTime *time.Time } func (mi *MkfileInfo) SetMkfileOption(mi2 *MkfileInfo) { @@ -279,10 +283,11 @@ type fileActionMkfile struct { func (a *fileActionMkfile) toProtoAction(parent string, base pb.InputIndex) pb.IsFileAction { return &pb.FileAction_Mkfile{ Mkfile: &pb.FileActionMkFile{ - Path: normalizePath(parent, a.file), - Mode: int32(a.mode & 0777), - Data: a.dt, - Owner: a.info.ChownOpt.marshal(base), + Path: normalizePath(parent, a.file), + Mode: int32(a.mode & 0777), + Data: a.dt, + Owner: a.info.ChownOpt.marshal(base), + Timestamp: marshalTime(a.info.CreatedTime), }, } } @@ -391,6 +396,7 @@ type CopyInfo struct { AllowWildcard bool AllowEmptyWildcard bool ChownOpt *ChownOpt + CreatedTime *time.Time } func (mi *CopyInfo) SetCopyOption(mi2 *CopyInfo) { @@ -418,6 +424,7 @@ func (a *fileActionCopy) toProtoAction(parent string, base pb.InputIndex) pb.IsF DirCopyContents: a.info.CopyDirContentsOnly, AttemptUnpack: a.info.AttemptUnpack, CreateDestPath: a.info.CreateDestPath, + Timestamp: marshalTime(a.info.CreatedTime), } if a.info.Mode != nil { c.Mode = int32(*a.info.Mode) @@ -441,6 +448,31 @@ func (c *fileActionCopy) sourcePath() string { return p } +type CreatedTime time.Time + +func WithCreatedTime(t time.Time) CreatedTime { + return CreatedTime(t) +} + +func (c CreatedTime) SetMkdirOption(mi *MkdirInfo) { + mi.CreatedTime = (*time.Time)(&c) +} + +func (c CreatedTime) SetMkfileOption(mi *MkfileInfo) { + mi.CreatedTime = (*time.Time)(&c) +} + +func (c CreatedTime) SetCopyOption(mi *CopyInfo) { + mi.CreatedTime = (*time.Time)(&c) +} + +func marshalTime(t *time.Time) int64 { + if t == nil { + return -1 + } + return t.UnixNano() +} + type FileOp struct { MarshalCache action *FileAction diff --git a/client/llb/fileop_test.go b/client/llb/fileop_test.go index f0a433e9..76ae9b65 100644 --- a/client/llb/fileop_test.go +++ b/client/llb/fileop_test.go @@ -2,6 +2,7 @@ package llb import ( "testing" + "time" "github.com/moby/buildkit/solver/pb" digest "github.com/opencontainers/go-digest" @@ -39,6 +40,7 @@ func TestFileMkdir(t *testing.T) { require.Equal(t, "/foo", mkdir.Path) require.Equal(t, 0700, int(mkdir.Mode)) + require.Equal(t, int64(-1), mkdir.Timestamp) } func TestFileMkdirChain(t *testing.T) { @@ -126,6 +128,7 @@ func TestFileMkfile(t *testing.T) { require.Equal(t, "/foo", mkdir.Path) require.Equal(t, 0700, int(mkdir.Mode)) require.Equal(t, "data", string(mkdir.Data)) + require.Equal(t, int64(-1), mkdir.Timestamp) } func TestFileRm(t *testing.T) { @@ -270,6 +273,7 @@ func TestFileCopy(t *testing.T) { require.Equal(t, "/etc/foo", copy.Src) require.Equal(t, "/tmp/bar", copy.Dest) + require.Equal(t, int64(-1), copy.Timestamp) } func TestFileCopyFromAction(t *testing.T) { @@ -560,6 +564,48 @@ func TestFileCopyOwner(t *testing.T) { require.Equal(t, -1, int(copy.Owner.Group.Input)) } +func TestFileCreatedTime(t *testing.T) { + t.Parallel() + + dt := time.Now() + dt2 := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC) + dt3 := time.Date(2019, time.November, 10, 23, 0, 0, 0, time.UTC) + + st := Image("foo").File( + Mkdir("/foo", 0700, WithCreatedTime(dt)). + Mkfile("bar", 0600, []byte{}, WithCreatedTime(dt2)). + Copy(Scratch(), "src", "dst", WithCreatedTime(dt3))) + def, err := st.Marshal() + + require.NoError(t, err) + + m, arr := parseDef(t, def.Def) + require.Equal(t, 3, len(arr)) + + dgst, idx := last(t, arr) + require.Equal(t, 0, idx) + require.Equal(t, m[dgst], arr[1]) + + f := arr[1].Op.(*pb.Op_File).File + require.Equal(t, len(arr[1].Inputs), 1) + require.Equal(t, m[arr[1].Inputs[0].Digest], arr[0]) + require.Equal(t, 0, int(arr[1].Inputs[0].Index)) + + require.Equal(t, 3, len(f.Actions)) + + action := f.Actions[0] + mkdir := action.Action.(*pb.FileAction_Mkdir).Mkdir + require.Equal(t, dt.UnixNano(), mkdir.Timestamp) + + action = f.Actions[1] + mkfile := action.Action.(*pb.FileAction_Mkfile).Mkfile + require.Equal(t, dt2.UnixNano(), mkfile.Timestamp) + + action = f.Actions[2] + copy := action.Action.(*pb.FileAction_Copy).Copy + require.Equal(t, dt3.UnixNano(), copy.Timestamp) +} + func parseDef(t *testing.T, def [][]byte) (map[digest.Digest]pb.Op, []pb.Op) { m := map[digest.Digest]pb.Op{} arr := make([]pb.Op, 0, len(def)) diff --git a/solver/pb/ops.pb.go b/solver/pb/ops.pb.go index 8ec78919..372b94a4 100644 --- a/solver/pb/ops.pb.go +++ b/solver/pb/ops.pb.go @@ -54,7 +54,7 @@ func (x NetMode) String() string { return proto.EnumName(NetMode_name, int32(x)) } func (NetMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{0} + return fileDescriptor_ops_5b0fc877b949f769, []int{0} } // MountType defines a type of a mount from a supported set @@ -87,7 +87,7 @@ func (x MountType) String() string { return proto.EnumName(MountType_name, int32(x)) } func (MountType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{1} + return fileDescriptor_ops_5b0fc877b949f769, []int{1} } // CacheSharingOpt defines different sharing modes for cache mount @@ -117,7 +117,7 @@ func (x CacheSharingOpt) String() string { return proto.EnumName(CacheSharingOpt_name, int32(x)) } func (CacheSharingOpt) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{2} + return fileDescriptor_ops_5b0fc877b949f769, []int{2} } // Op represents a vertex of the LLB DAG. @@ -138,7 +138,7 @@ func (m *Op) Reset() { *m = Op{} } func (m *Op) String() string { return proto.CompactTextString(m) } func (*Op) ProtoMessage() {} func (*Op) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{0} + return fileDescriptor_ops_5b0fc877b949f769, []int{0} } func (m *Op) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -368,7 +368,7 @@ func (m *Platform) Reset() { *m = Platform{} } func (m *Platform) String() string { return proto.CompactTextString(m) } func (*Platform) ProtoMessage() {} func (*Platform) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{1} + return fileDescriptor_ops_5b0fc877b949f769, []int{1} } func (m *Platform) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -440,7 +440,7 @@ func (m *Input) Reset() { *m = Input{} } func (m *Input) String() string { return proto.CompactTextString(m) } func (*Input) ProtoMessage() {} func (*Input) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{2} + return fileDescriptor_ops_5b0fc877b949f769, []int{2} } func (m *Input) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -476,7 +476,7 @@ func (m *ExecOp) Reset() { *m = ExecOp{} } func (m *ExecOp) String() string { return proto.CompactTextString(m) } func (*ExecOp) ProtoMessage() {} func (*ExecOp) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{3} + return fileDescriptor_ops_5b0fc877b949f769, []int{3} } func (m *ExecOp) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -538,7 +538,7 @@ func (m *Meta) Reset() { *m = Meta{} } func (m *Meta) String() string { return proto.CompactTextString(m) } func (*Meta) ProtoMessage() {} func (*Meta) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{4} + return fileDescriptor_ops_5b0fc877b949f769, []int{4} } func (m *Meta) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -622,7 +622,7 @@ func (m *Mount) Reset() { *m = Mount{} } func (m *Mount) String() string { return proto.CompactTextString(m) } func (*Mount) ProtoMessage() {} func (*Mount) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{5} + return fileDescriptor_ops_5b0fc877b949f769, []int{5} } func (m *Mount) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -708,7 +708,7 @@ func (m *CacheOpt) Reset() { *m = CacheOpt{} } func (m *CacheOpt) String() string { return proto.CompactTextString(m) } func (*CacheOpt) ProtoMessage() {} func (*CacheOpt) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{6} + return fileDescriptor_ops_5b0fc877b949f769, []int{6} } func (m *CacheOpt) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -766,7 +766,7 @@ func (m *SecretOpt) Reset() { *m = SecretOpt{} } func (m *SecretOpt) String() string { return proto.CompactTextString(m) } func (*SecretOpt) ProtoMessage() {} func (*SecretOpt) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{7} + return fileDescriptor_ops_5b0fc877b949f769, []int{7} } func (m *SecretOpt) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -845,7 +845,7 @@ func (m *SSHOpt) Reset() { *m = SSHOpt{} } func (m *SSHOpt) String() string { return proto.CompactTextString(m) } func (*SSHOpt) ProtoMessage() {} func (*SSHOpt) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{8} + return fileDescriptor_ops_5b0fc877b949f769, []int{8} } func (m *SSHOpt) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -918,7 +918,7 @@ func (m *SourceOp) Reset() { *m = SourceOp{} } func (m *SourceOp) String() string { return proto.CompactTextString(m) } func (*SourceOp) ProtoMessage() {} func (*SourceOp) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{9} + return fileDescriptor_ops_5b0fc877b949f769, []int{9} } func (m *SourceOp) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -970,7 +970,7 @@ func (m *BuildOp) Reset() { *m = BuildOp{} } func (m *BuildOp) String() string { return proto.CompactTextString(m) } func (*BuildOp) ProtoMessage() {} func (*BuildOp) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{10} + return fileDescriptor_ops_5b0fc877b949f769, []int{10} } func (m *BuildOp) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1025,7 +1025,7 @@ func (m *BuildInput) Reset() { *m = BuildInput{} } func (m *BuildInput) String() string { return proto.CompactTextString(m) } func (*BuildInput) ProtoMessage() {} func (*BuildInput) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{11} + return fileDescriptor_ops_5b0fc877b949f769, []int{11} } func (m *BuildInput) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1066,7 +1066,7 @@ func (m *OpMetadata) Reset() { *m = OpMetadata{} } func (m *OpMetadata) String() string { return proto.CompactTextString(m) } func (*OpMetadata) ProtoMessage() {} func (*OpMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{12} + return fileDescriptor_ops_5b0fc877b949f769, []int{12} } func (m *OpMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1127,7 +1127,7 @@ func (m *ExportCache) Reset() { *m = ExportCache{} } func (m *ExportCache) String() string { return proto.CompactTextString(m) } func (*ExportCache) ProtoMessage() {} func (*ExportCache) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{13} + return fileDescriptor_ops_5b0fc877b949f769, []int{13} } func (m *ExportCache) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1170,7 +1170,7 @@ func (m *ProxyEnv) Reset() { *m = ProxyEnv{} } func (m *ProxyEnv) String() string { return proto.CompactTextString(m) } func (*ProxyEnv) ProtoMessage() {} func (*ProxyEnv) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{14} + return fileDescriptor_ops_5b0fc877b949f769, []int{14} } func (m *ProxyEnv) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1232,7 +1232,7 @@ func (m *WorkerConstraints) Reset() { *m = WorkerConstraints{} } func (m *WorkerConstraints) String() string { return proto.CompactTextString(m) } func (*WorkerConstraints) ProtoMessage() {} func (*WorkerConstraints) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{15} + return fileDescriptor_ops_5b0fc877b949f769, []int{15} } func (m *WorkerConstraints) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1277,7 +1277,7 @@ func (m *Definition) Reset() { *m = Definition{} } func (m *Definition) String() string { return proto.CompactTextString(m) } func (*Definition) ProtoMessage() {} func (*Definition) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{16} + return fileDescriptor_ops_5b0fc877b949f769, []int{16} } func (m *Definition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1325,7 +1325,7 @@ func (m *HostIP) Reset() { *m = HostIP{} } func (m *HostIP) String() string { return proto.CompactTextString(m) } func (*HostIP) ProtoMessage() {} func (*HostIP) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{17} + return fileDescriptor_ops_5b0fc877b949f769, []int{17} } func (m *HostIP) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1372,7 +1372,7 @@ func (m *FileOp) Reset() { *m = FileOp{} } func (m *FileOp) String() string { return proto.CompactTextString(m) } func (*FileOp) ProtoMessage() {} func (*FileOp) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{18} + return fileDescriptor_ops_5b0fc877b949f769, []int{18} } func (m *FileOp) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1420,7 +1420,7 @@ func (m *FileAction) Reset() { *m = FileAction{} } func (m *FileAction) String() string { return proto.CompactTextString(m) } func (*FileAction) ProtoMessage() {} func (*FileAction) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{19} + return fileDescriptor_ops_5b0fc877b949f769, []int{19} } func (m *FileAction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1627,13 +1627,14 @@ type FileActionCopy struct { CreateDestPath bool `protobuf:"varint,9,opt,name=createDestPath,proto3" json:"createDestPath,omitempty"` AllowWildcard bool `protobuf:"varint,10,opt,name=allowWildcard,proto3" json:"allowWildcard,omitempty"` AllowEmptyWildcard bool `protobuf:"varint,11,opt,name=allowEmptyWildcard,proto3" json:"allowEmptyWildcard,omitempty"` + Timestamp int64 `protobuf:"varint,12,opt,name=timestamp,proto3" json:"timestamp,omitempty"` } func (m *FileActionCopy) Reset() { *m = FileActionCopy{} } func (m *FileActionCopy) String() string { return proto.CompactTextString(m) } func (*FileActionCopy) ProtoMessage() {} func (*FileActionCopy) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{20} + return fileDescriptor_ops_5b0fc877b949f769, []int{20} } func (m *FileActionCopy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1728,18 +1729,26 @@ func (m *FileActionCopy) GetAllowEmptyWildcard() bool { return false } +func (m *FileActionCopy) GetTimestamp() int64 { + if m != nil { + return m.Timestamp + } + return 0 +} + type FileActionMkFile struct { - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - Mode int32 `protobuf:"varint,2,opt,name=mode,proto3" json:"mode,omitempty"` - Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` - Owner *ChownOpt `protobuf:"bytes,4,opt,name=owner,proto3" json:"owner,omitempty"` + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + Mode int32 `protobuf:"varint,2,opt,name=mode,proto3" json:"mode,omitempty"` + Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + Owner *ChownOpt `protobuf:"bytes,4,opt,name=owner,proto3" json:"owner,omitempty"` + Timestamp int64 `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` } func (m *FileActionMkFile) Reset() { *m = FileActionMkFile{} } func (m *FileActionMkFile) String() string { return proto.CompactTextString(m) } func (*FileActionMkFile) ProtoMessage() {} func (*FileActionMkFile) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{21} + return fileDescriptor_ops_5b0fc877b949f769, []int{21} } func (m *FileActionMkFile) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1792,18 +1801,26 @@ func (m *FileActionMkFile) GetOwner() *ChownOpt { return nil } +func (m *FileActionMkFile) GetTimestamp() int64 { + if m != nil { + return m.Timestamp + } + return 0 +} + type FileActionMkDir struct { Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` Mode int32 `protobuf:"varint,2,opt,name=mode,proto3" json:"mode,omitempty"` MakeParents bool `protobuf:"varint,3,opt,name=makeParents,proto3" json:"makeParents,omitempty"` Owner *ChownOpt `protobuf:"bytes,4,opt,name=owner,proto3" json:"owner,omitempty"` + Timestamp int64 `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` } func (m *FileActionMkDir) Reset() { *m = FileActionMkDir{} } func (m *FileActionMkDir) String() string { return proto.CompactTextString(m) } func (*FileActionMkDir) ProtoMessage() {} func (*FileActionMkDir) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{22} + return fileDescriptor_ops_5b0fc877b949f769, []int{22} } func (m *FileActionMkDir) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1856,6 +1873,13 @@ func (m *FileActionMkDir) GetOwner() *ChownOpt { return nil } +func (m *FileActionMkDir) GetTimestamp() int64 { + if m != nil { + return m.Timestamp + } + return 0 +} + type FileActionRm struct { Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` AllowNotFound bool `protobuf:"varint,2,opt,name=allowNotFound,proto3" json:"allowNotFound,omitempty"` @@ -1866,7 +1890,7 @@ func (m *FileActionRm) Reset() { *m = FileActionRm{} } func (m *FileActionRm) String() string { return proto.CompactTextString(m) } func (*FileActionRm) ProtoMessage() {} func (*FileActionRm) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{23} + return fileDescriptor_ops_5b0fc877b949f769, []int{23} } func (m *FileActionRm) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1921,7 +1945,7 @@ func (m *ChownOpt) Reset() { *m = ChownOpt{} } func (m *ChownOpt) String() string { return proto.CompactTextString(m) } func (*ChownOpt) ProtoMessage() {} func (*ChownOpt) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{24} + return fileDescriptor_ops_5b0fc877b949f769, []int{24} } func (m *ChownOpt) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1970,7 +1994,7 @@ func (m *UserOpt) Reset() { *m = UserOpt{} } func (m *UserOpt) String() string { return proto.CompactTextString(m) } func (*UserOpt) ProtoMessage() {} func (*UserOpt) Descriptor() ([]byte, []int) { - return fileDescriptor_ops_68b9efdb358e5df5, []int{25} + return fileDescriptor_ops_5b0fc877b949f769, []int{25} } func (m *UserOpt) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3251,6 +3275,11 @@ func (m *FileActionCopy) MarshalTo(dAtA []byte) (int, error) { } i++ } + if m.Timestamp != 0 { + dAtA[i] = 0x60 + i++ + i = encodeVarintOps(dAtA, i, uint64(m.Timestamp)) + } return i, nil } @@ -3296,6 +3325,11 @@ func (m *FileActionMkFile) MarshalTo(dAtA []byte) (int, error) { } i += n23 } + if m.Timestamp != 0 { + dAtA[i] = 0x28 + i++ + i = encodeVarintOps(dAtA, i, uint64(m.Timestamp)) + } return i, nil } @@ -3345,6 +3379,11 @@ func (m *FileActionMkDir) MarshalTo(dAtA []byte) (int, error) { } i += n24 } + if m.Timestamp != 0 { + dAtA[i] = 0x28 + i++ + i = encodeVarintOps(dAtA, i, uint64(m.Timestamp)) + } return i, nil } @@ -4080,6 +4119,9 @@ func (m *FileActionCopy) Size() (n int) { if m.AllowEmptyWildcard { n += 2 } + if m.Timestamp != 0 { + n += 1 + sovOps(uint64(m.Timestamp)) + } return n } @@ -4104,6 +4146,9 @@ func (m *FileActionMkFile) Size() (n int) { l = m.Owner.Size() n += 1 + l + sovOps(uint64(l)) } + if m.Timestamp != 0 { + n += 1 + sovOps(uint64(m.Timestamp)) + } return n } @@ -4127,6 +4172,9 @@ func (m *FileActionMkDir) Size() (n int) { l = m.Owner.Size() n += 1 + l + sovOps(uint64(l)) } + if m.Timestamp != 0 { + n += 1 + sovOps(uint64(m.Timestamp)) + } return n } @@ -7962,6 +8010,25 @@ func (m *FileActionCopy) Unmarshal(dAtA []byte) error { } } m.AllowEmptyWildcard = bool(v != 0) + case 12: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType) + } + m.Timestamp = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowOps + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Timestamp |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipOps(dAtA[iNdEx:]) @@ -8124,6 +8191,25 @@ func (m *FileActionMkFile) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType) + } + m.Timestamp = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowOps + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Timestamp |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipOps(dAtA[iNdEx:]) @@ -8275,6 +8361,25 @@ func (m *FileActionMkDir) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType) + } + m.Timestamp = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowOps + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Timestamp |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipOps(dAtA[iNdEx:]) @@ -8753,124 +8858,126 @@ var ( ErrIntOverflowOps = fmt.Errorf("proto: integer overflow") ) -func init() { proto.RegisterFile("ops.proto", fileDescriptor_ops_68b9efdb358e5df5) } +func init() { proto.RegisterFile("ops.proto", fileDescriptor_ops_5b0fc877b949f769) } -var fileDescriptor_ops_68b9efdb358e5df5 = []byte{ - // 1851 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcd, 0x6e, 0x23, 0xc7, - 0x11, 0x16, 0x87, 0xff, 0x45, 0x49, 0xcb, 0xb4, 0xed, 0x0d, 0xa3, 0x6c, 0x24, 0x79, 0xec, 0x18, - 0xf4, 0xfe, 0x50, 0x80, 0x0c, 0xd8, 0x86, 0x0f, 0x41, 0x24, 0x91, 0x0b, 0x31, 0xce, 0x8a, 0x42, - 0x73, 0x7f, 0x8e, 0x8b, 0xd1, 0x4c, 0x93, 0x1a, 0x90, 0x9c, 0x1e, 0xf4, 0x34, 0x57, 0xe2, 0x25, - 0x01, 0xf6, 0x09, 0x02, 0x04, 0xc8, 0x3d, 0xc7, 0x3c, 0x44, 0xee, 0x3e, 0x1a, 0x41, 0x0e, 0x4e, - 0x0e, 0x4e, 0xa0, 0x7d, 0x91, 0xa0, 0xaa, 0x7b, 0x38, 0x43, 0xad, 0x82, 0xd5, 0x22, 0x40, 0x4e, - 0xac, 0xae, 0xfa, 0xba, 0xba, 0xba, 0xaa, 0xba, 0xaa, 0x86, 0x50, 0x97, 0x71, 0xd2, 0x89, 0x95, - 0xd4, 0x92, 0x39, 0xf1, 0xd9, 0xd6, 0xa3, 0x71, 0xa8, 0xcf, 0xe7, 0x67, 0x1d, 0x5f, 0xce, 0xf6, - 0xc6, 0x72, 0x2c, 0xf7, 0x48, 0x74, 0x36, 0x1f, 0xd1, 0x8a, 0x16, 0x44, 0x99, 0x2d, 0xee, 0x9f, - 0x1d, 0x70, 0x06, 0x31, 0xfb, 0x18, 0x2a, 0x61, 0x14, 0xcf, 0x75, 0xd2, 0x2a, 0xec, 0x16, 0xdb, - 0x8d, 0xfd, 0x7a, 0x27, 0x3e, 0xeb, 0xf4, 0x91, 0xc3, 0xad, 0x80, 0xed, 0x42, 0x49, 0x5c, 0x0a, - 0xbf, 0xe5, 0xec, 0x16, 0xda, 0x8d, 0x7d, 0x40, 0x40, 0xef, 0x52, 0xf8, 0x83, 0xf8, 0x78, 0x8d, - 0x93, 0x84, 0x7d, 0x06, 0x95, 0x44, 0xce, 0x95, 0x2f, 0x5a, 0x45, 0xc2, 0xac, 0x23, 0x66, 0x48, - 0x1c, 0x42, 0x59, 0x29, 0x6a, 0x1a, 0x85, 0x53, 0xd1, 0x2a, 0x65, 0x9a, 0x1e, 0x87, 0x53, 0x83, - 0x21, 0x09, 0xfb, 0x04, 0xca, 0x67, 0xf3, 0x70, 0x1a, 0xb4, 0xca, 0x04, 0x69, 0x20, 0xe4, 0x10, - 0x19, 0x84, 0x31, 0x32, 0xd6, 0x86, 0x5a, 0x3c, 0xf5, 0xf4, 0x48, 0xaa, 0x59, 0x0b, 0xb2, 0x03, - 0x4f, 0x2d, 0x8f, 0x2f, 0xa5, 0xec, 0x2b, 0x68, 0xf8, 0x32, 0x4a, 0xb4, 0xf2, 0xc2, 0x48, 0x27, - 0xad, 0x06, 0x81, 0x3f, 0x42, 0xf0, 0x0b, 0xa9, 0x26, 0x42, 0x1d, 0x65, 0x42, 0x9e, 0x47, 0x1e, - 0x96, 0xc0, 0x91, 0xb1, 0xfb, 0xa7, 0x02, 0xd4, 0x52, 0xad, 0xcc, 0x85, 0xf5, 0x03, 0xe5, 0x9f, - 0x87, 0x5a, 0xf8, 0x7a, 0xae, 0x44, 0xab, 0xb0, 0x5b, 0x68, 0xd7, 0xf9, 0x0a, 0x8f, 0x6d, 0x82, - 0x33, 0x18, 0x92, 0xa3, 0xea, 0xdc, 0x19, 0x0c, 0x59, 0x0b, 0xaa, 0xcf, 0x3d, 0x15, 0x7a, 0x91, - 0x26, 0xcf, 0xd4, 0x79, 0xba, 0x64, 0xf7, 0xa0, 0x3e, 0x18, 0x3e, 0x17, 0x2a, 0x09, 0x65, 0x44, - 0xfe, 0xa8, 0xf3, 0x8c, 0xc1, 0xb6, 0x01, 0x06, 0xc3, 0xc7, 0xc2, 0x43, 0xa5, 0x49, 0xab, 0xbc, - 0x5b, 0x6c, 0xd7, 0x79, 0x8e, 0xe3, 0xfe, 0x0e, 0xca, 0x14, 0x23, 0xf6, 0x1b, 0xa8, 0x04, 0xe1, - 0x58, 0x24, 0xda, 0x98, 0x73, 0xb8, 0xff, 0xdd, 0x8f, 0x3b, 0x6b, 0xff, 0xfc, 0x71, 0xe7, 0x7e, - 0x2e, 0x19, 0x64, 0x2c, 0x22, 0x5f, 0x46, 0xda, 0x0b, 0x23, 0xa1, 0x92, 0xbd, 0xb1, 0x7c, 0x64, - 0xb6, 0x74, 0xba, 0xf4, 0xc3, 0xad, 0x06, 0xf6, 0x39, 0x94, 0xc3, 0x28, 0x10, 0x97, 0x64, 0x7f, - 0xf1, 0xf0, 0x03, 0xab, 0xaa, 0x31, 0x98, 0xeb, 0x78, 0xae, 0xfb, 0x28, 0xe2, 0x06, 0xe1, 0xc6, - 0x50, 0x31, 0x29, 0xc0, 0xee, 0x41, 0x69, 0x26, 0xb4, 0x47, 0xc7, 0x37, 0xf6, 0x6b, 0xe8, 0xda, - 0x27, 0x42, 0x7b, 0x9c, 0xb8, 0x98, 0x5d, 0x33, 0x39, 0x47, 0xd7, 0x3b, 0x59, 0x76, 0x3d, 0x41, - 0x0e, 0xb7, 0x02, 0xf6, 0x4b, 0xa8, 0x46, 0x42, 0x5f, 0x48, 0x35, 0x21, 0x17, 0x6d, 0x9a, 0x98, - 0x9f, 0x08, 0xfd, 0x44, 0x06, 0x82, 0xa7, 0x32, 0xf7, 0x2f, 0x05, 0x28, 0xa1, 0x62, 0xc6, 0xa0, - 0xe4, 0xa9, 0xb1, 0x49, 0xd7, 0x3a, 0x27, 0x9a, 0x35, 0xa1, 0x28, 0xa2, 0x57, 0x74, 0x46, 0x9d, - 0x23, 0x89, 0x1c, 0xff, 0x22, 0xb0, 0x4e, 0x47, 0x12, 0xf7, 0xcd, 0x13, 0xa1, 0xac, 0xaf, 0x89, - 0x66, 0x9f, 0x43, 0x3d, 0x56, 0xf2, 0x72, 0xf1, 0x12, 0x77, 0x97, 0x73, 0x99, 0x84, 0xcc, 0x5e, - 0xf4, 0x8a, 0xd7, 0x62, 0x4b, 0xb1, 0xfb, 0x00, 0xe2, 0x52, 0x2b, 0xef, 0x58, 0x26, 0x3a, 0x69, - 0x55, 0xe8, 0x36, 0x94, 0xc0, 0xc8, 0xe8, 0x9f, 0xf2, 0x9c, 0xd4, 0xfd, 0x9b, 0x03, 0x65, 0xba, - 0x24, 0x6b, 0xa3, 0x4b, 0xe3, 0xb9, 0x89, 0x4e, 0xf1, 0x90, 0x59, 0x97, 0x02, 0x05, 0x6f, 0xe9, - 0x51, 0x0c, 0xe4, 0x16, 0xd4, 0x12, 0x31, 0x15, 0xbe, 0x96, 0xca, 0xe6, 0xcf, 0x72, 0x8d, 0xa6, - 0x07, 0x18, 0x62, 0x73, 0x1b, 0xa2, 0xd9, 0x03, 0xa8, 0x48, 0x8a, 0x0b, 0x5d, 0xe8, 0xbf, 0x44, - 0xcb, 0x42, 0x50, 0xb9, 0x12, 0x5e, 0x20, 0xa3, 0xe9, 0x82, 0xae, 0x59, 0xe3, 0xcb, 0x35, 0x7b, - 0x00, 0x75, 0x8a, 0xc4, 0xd3, 0x45, 0x2c, 0x5a, 0x15, 0x8a, 0xc0, 0xc6, 0x32, 0x4a, 0xc8, 0xe4, - 0x99, 0x1c, 0x5f, 0x9e, 0xef, 0xf9, 0xe7, 0x62, 0x10, 0xeb, 0xd6, 0x87, 0x99, 0xbf, 0x8e, 0x2c, - 0x8f, 0x2f, 0xa5, 0xa8, 0x36, 0x11, 0xbe, 0x12, 0x1a, 0xa1, 0x1f, 0x11, 0x94, 0xd4, 0x0e, 0x53, - 0x26, 0xcf, 0xe4, 0xcc, 0x85, 0xca, 0x70, 0x78, 0x8c, 0xc8, 0xbb, 0x59, 0x65, 0x30, 0x1c, 0x6e, - 0x25, 0x6e, 0x1f, 0x6a, 0xe9, 0x31, 0xf8, 0xcc, 0xfa, 0x5d, 0xfb, 0x00, 0x9d, 0x7e, 0x97, 0x3d, - 0x82, 0x6a, 0x72, 0xee, 0xa9, 0x30, 0x1a, 0x93, 0xef, 0x36, 0xf7, 0x3f, 0x58, 0x5a, 0x35, 0x34, - 0x7c, 0xd4, 0x94, 0x62, 0x5c, 0x09, 0xf5, 0xa5, 0x19, 0x6f, 0xe9, 0x6a, 0x42, 0x71, 0x1e, 0x06, - 0xa4, 0x67, 0x83, 0x23, 0x89, 0x9c, 0x71, 0x68, 0x72, 0x69, 0x83, 0x23, 0x89, 0x01, 0x99, 0xc9, - 0xc0, 0xd4, 0xb1, 0x0d, 0x4e, 0x34, 0xfa, 0x58, 0xc6, 0x3a, 0x94, 0x91, 0x37, 0x4d, 0x7d, 0x9c, - 0xae, 0xdd, 0x69, 0x7a, 0xbf, 0xff, 0xcb, 0x69, 0x7f, 0x2c, 0x40, 0x2d, 0x2d, 0xbe, 0x58, 0x49, - 0xc2, 0x40, 0x44, 0x3a, 0x1c, 0x85, 0x42, 0xd9, 0x83, 0x73, 0x1c, 0xf6, 0x08, 0xca, 0x9e, 0xd6, - 0x2a, 0x7d, 0xa0, 0x3f, 0xcd, 0x57, 0xee, 0xce, 0x01, 0x4a, 0x7a, 0x91, 0x56, 0x0b, 0x6e, 0x50, - 0x5b, 0x5f, 0x03, 0x64, 0x4c, 0xb4, 0x75, 0x22, 0x16, 0x56, 0x2b, 0x92, 0xec, 0x43, 0x28, 0xbf, - 0xf2, 0xa6, 0x73, 0x61, 0x73, 0xd8, 0x2c, 0xbe, 0x71, 0xbe, 0x2e, 0xb8, 0x7f, 0x75, 0xa0, 0x6a, - 0x2b, 0x39, 0x7b, 0x08, 0x55, 0xaa, 0xe4, 0xd6, 0xa2, 0x9b, 0x1f, 0x46, 0x0a, 0x61, 0x7b, 0xcb, - 0x16, 0x95, 0xb3, 0xd1, 0xaa, 0x32, 0xad, 0xca, 0xda, 0x98, 0x35, 0xac, 0x62, 0x20, 0x46, 0xb6, - 0x17, 0x6d, 0x22, 0xba, 0x2b, 0x46, 0x61, 0x14, 0xa2, 0x7f, 0x38, 0x8a, 0xd8, 0xc3, 0xf4, 0xd6, - 0x25, 0xd2, 0x78, 0x37, 0xaf, 0xf1, 0xed, 0x4b, 0xf7, 0xa1, 0x91, 0x3b, 0xe6, 0x86, 0x5b, 0x7f, - 0x9a, 0xbf, 0xb5, 0x3d, 0x92, 0xd4, 0x99, 0x46, 0x9a, 0x79, 0xe1, 0x7f, 0xf0, 0xdf, 0x97, 0x00, - 0x99, 0xca, 0xdb, 0x17, 0x16, 0xf7, 0x75, 0x11, 0x60, 0x10, 0x63, 0xe9, 0x0c, 0x3c, 0xaa, 0xc8, - 0xeb, 0xe1, 0x38, 0x92, 0x4a, 0xbc, 0xa4, 0xa7, 0x4a, 0xfb, 0x6b, 0xbc, 0x61, 0x78, 0xf4, 0x62, - 0xd8, 0x01, 0x34, 0x02, 0x91, 0xf8, 0x2a, 0xa4, 0x84, 0xb2, 0x4e, 0xdf, 0xc1, 0x3b, 0x65, 0x7a, - 0x3a, 0xdd, 0x0c, 0x61, 0x7c, 0x95, 0xdf, 0xc3, 0xf6, 0x61, 0x5d, 0x5c, 0xc6, 0x52, 0x69, 0x7b, - 0x8a, 0x69, 0xf8, 0x77, 0xcc, 0xe8, 0x80, 0x7c, 0x3a, 0x89, 0x37, 0x44, 0xb6, 0x60, 0x1e, 0x94, - 0x7c, 0x2f, 0x36, 0xdd, 0xae, 0xb1, 0xdf, 0xba, 0x76, 0xde, 0x91, 0x17, 0x1b, 0xa7, 0x1d, 0x7e, - 0x81, 0x77, 0x7d, 0xfd, 0xaf, 0x9d, 0x07, 0xb9, 0x16, 0x37, 0x93, 0x67, 0x8b, 0x3d, 0xca, 0x97, - 0x49, 0xa8, 0xf7, 0xe6, 0x3a, 0x9c, 0xee, 0x79, 0x71, 0x88, 0xea, 0x70, 0x63, 0xbf, 0xcb, 0x49, - 0xf5, 0xd6, 0xaf, 0xa0, 0x79, 0xdd, 0xee, 0xf7, 0x89, 0xc1, 0xd6, 0x57, 0x50, 0x5f, 0xda, 0xf1, - 0xae, 0x8d, 0xb5, 0x7c, 0xf0, 0x3e, 0x81, 0x46, 0xee, 0xde, 0x08, 0x7c, 0x4e, 0x40, 0xe3, 0x7d, - 0xb3, 0x70, 0x5f, 0xe3, 0xb4, 0x91, 0xf6, 0x9b, 0x5f, 0x00, 0x9c, 0x6b, 0x1d, 0xbf, 0xa4, 0x06, - 0x64, 0x0f, 0xa9, 0x23, 0x87, 0x10, 0x6c, 0x07, 0x1a, 0xb8, 0x48, 0xac, 0xdc, 0x58, 0x4a, 0x3b, - 0x12, 0x03, 0xf8, 0x39, 0xd4, 0x47, 0xcb, 0xed, 0xa6, 0x71, 0xd4, 0x46, 0xe9, 0xee, 0x9f, 0x41, - 0x2d, 0x92, 0x56, 0x66, 0xfa, 0x61, 0x35, 0x92, 0x24, 0x72, 0x1f, 0xc0, 0x4f, 0xde, 0x1a, 0x8d, - 0xd8, 0x5d, 0xa8, 0x8c, 0xc2, 0xa9, 0xa6, 0xe7, 0x8a, 0x2d, 0xd6, 0xae, 0xdc, 0x7f, 0x14, 0x00, - 0xb2, 0xa7, 0x85, 0x1e, 0xc1, 0x77, 0x87, 0x98, 0x75, 0xf3, 0xce, 0xa6, 0x50, 0x9b, 0xd9, 0x08, - 0xda, 0x3c, 0xba, 0xb7, 0xfa, 0x1c, 0x3b, 0x69, 0x80, 0x4d, 0x6c, 0xf7, 0x6d, 0x6c, 0xdf, 0x67, - 0x7c, 0x59, 0x9e, 0xb0, 0xf5, 0x2d, 0x6c, 0xac, 0xa8, 0xbb, 0xe5, 0x4b, 0xcd, 0xb2, 0x2c, 0x1f, - 0xb2, 0x87, 0x50, 0x31, 0xad, 0x1d, 0xeb, 0x2f, 0x52, 0x56, 0x0d, 0xd1, 0x54, 0xc7, 0x4f, 0xd3, - 0x41, 0xaf, 0x7f, 0xea, 0xee, 0x43, 0xc5, 0x4c, 0xb2, 0xac, 0x0d, 0x55, 0xcf, 0xc7, 0xab, 0xa5, - 0xe5, 0x6a, 0x33, 0x1d, 0x73, 0x0f, 0x88, 0xcd, 0x53, 0xb1, 0xfb, 0x77, 0x07, 0x20, 0xe3, 0xbf, - 0xc7, 0xac, 0xf0, 0x0d, 0x6c, 0x26, 0xc2, 0x97, 0x51, 0xe0, 0xa9, 0x05, 0x49, 0xed, 0xc4, 0x76, - 0xd3, 0x96, 0x6b, 0xc8, 0xdc, 0xdc, 0x50, 0x7c, 0xf7, 0xdc, 0xd0, 0x86, 0x92, 0x2f, 0xe3, 0x85, - 0x7d, 0xbe, 0x6c, 0xf5, 0x22, 0x47, 0x32, 0x5e, 0xe0, 0xdc, 0x8e, 0x08, 0xd6, 0x81, 0xca, 0x6c, - 0x42, 0xb3, 0xbd, 0x19, 0xa3, 0x3e, 0x5c, 0xc5, 0x3e, 0x99, 0x20, 0x8d, 0x5f, 0x02, 0x06, 0xc5, - 0x1e, 0x40, 0x79, 0x36, 0x09, 0x42, 0x45, 0x13, 0x47, 0xc3, 0xf4, 0xeb, 0x3c, 0xbc, 0x1b, 0x2a, - 0x9c, 0xf7, 0x09, 0xc3, 0x5c, 0x70, 0xd4, 0xac, 0x55, 0x25, 0x64, 0xf3, 0x9a, 0x37, 0x67, 0xc7, - 0x6b, 0xdc, 0x51, 0xb3, 0xc3, 0x1a, 0x54, 0x8c, 0x5f, 0xdd, 0x2b, 0x07, 0x36, 0x57, 0xad, 0xc4, - 0x3c, 0x48, 0x94, 0x9f, 0xe6, 0x41, 0xa2, 0xfc, 0xe5, 0x48, 0xe5, 0xe4, 0x46, 0x2a, 0x17, 0xca, - 0xf2, 0x22, 0xb2, 0x23, 0x62, 0x3a, 0xd9, 0x9c, 0xcb, 0x8b, 0x08, 0x87, 0x07, 0x23, 0x5a, 0xf6, - 0x62, 0xbc, 0x65, 0xd9, 0xf6, 0xe2, 0x4f, 0x61, 0x63, 0x24, 0xa7, 0x53, 0x79, 0x31, 0x5c, 0xcc, - 0xa6, 0x61, 0x34, 0xa1, 0x3b, 0xd5, 0xf8, 0x2a, 0x93, 0xb5, 0xe1, 0x4e, 0x10, 0x2a, 0x34, 0xe7, - 0x48, 0x46, 0x5a, 0xe0, 0x4c, 0x5c, 0x25, 0xdc, 0x75, 0x36, 0xea, 0xf3, 0xb4, 0x16, 0xb3, 0x58, - 0x3f, 0x8b, 0x62, 0xcf, 0x9f, 0xb4, 0x6a, 0x46, 0xdf, 0x0a, 0x93, 0x7d, 0x06, 0x9b, 0xbe, 0x12, - 0x9e, 0x16, 0x5d, 0x91, 0xe8, 0x53, 0x4f, 0x9f, 0xb7, 0xea, 0x04, 0xbb, 0xc6, 0x25, 0x6d, 0x68, - 0xc7, 0x8b, 0x70, 0x1a, 0xf8, 0x9e, 0x0a, 0xe8, 0x8b, 0x09, 0xb5, 0xe5, 0x99, 0xac, 0x03, 0x8c, - 0x18, 0xbd, 0x59, 0xac, 0x17, 0x4b, 0x68, 0x83, 0xa0, 0x37, 0x48, 0x5c, 0x05, 0xcd, 0xeb, 0xd1, - 0x45, 0xdf, 0xc4, 0x68, 0x87, 0x7d, 0x27, 0x48, 0x2f, 0xfd, 0xe5, 0xe4, 0xfc, 0x85, 0xbe, 0xc7, - 0x82, 0x80, 0x09, 0xb8, 0xce, 0x89, 0xbe, 0x8d, 0xef, 0xdd, 0xdf, 0xc3, 0x9d, 0x6b, 0x29, 0x72, - 0xeb, 0x23, 0x77, 0xa1, 0x31, 0xf3, 0x26, 0xe2, 0xd4, 0x53, 0xe4, 0xf8, 0xa2, 0x69, 0x7a, 0x39, - 0xd6, 0xad, 0x0c, 0x88, 0x60, 0x3d, 0x9f, 0x79, 0x37, 0x9e, 0x9e, 0xba, 0xfb, 0x44, 0xea, 0xc7, - 0x72, 0x1e, 0x05, 0xb6, 0x17, 0xac, 0x32, 0xdf, 0x0e, 0x4a, 0xf1, 0x86, 0xa0, 0xb8, 0x27, 0x50, - 0x4b, 0x4d, 0x60, 0x3b, 0xf6, 0xf3, 0xa5, 0x90, 0x7d, 0x17, 0x3f, 0x4b, 0x84, 0x42, 0xeb, 0xcc, - 0xb7, 0xcc, 0xc7, 0x50, 0x1e, 0x2b, 0x39, 0x8f, 0x6d, 0x65, 0x5b, 0x41, 0x18, 0x89, 0xfb, 0x02, - 0xaa, 0x96, 0x83, 0xa6, 0x47, 0xde, 0x2c, 0xfd, 0x88, 0x25, 0x3a, 0x2b, 0x40, 0xce, 0xbb, 0x0a, - 0xd0, 0x26, 0x38, 0x76, 0x44, 0x2d, 0x73, 0x27, 0x0c, 0xee, 0xb7, 0xa1, 0x6a, 0x3f, 0xd8, 0x58, - 0x1d, 0xca, 0xcf, 0x4e, 0x86, 0xbd, 0xa7, 0xcd, 0x35, 0x56, 0x83, 0xd2, 0xf1, 0x60, 0xf8, 0xb4, - 0x59, 0x40, 0xea, 0x64, 0x70, 0xd2, 0x6b, 0x3a, 0xf7, 0x7f, 0x0d, 0xf5, 0xe5, 0x87, 0x05, 0xb2, - 0x0f, 0xfb, 0x27, 0xdd, 0xe6, 0x1a, 0x03, 0xa8, 0x0c, 0x7b, 0x47, 0xbc, 0x87, 0xe0, 0x2a, 0x14, - 0x87, 0xc3, 0xe3, 0xa6, 0x83, 0xaa, 0x8e, 0x0e, 0x8e, 0x8e, 0x7b, 0xcd, 0x22, 0x92, 0x4f, 0x9f, - 0x9c, 0x3e, 0x1e, 0x36, 0x4b, 0xf7, 0xbf, 0x84, 0x3b, 0xd7, 0x06, 0x7b, 0xda, 0x7d, 0x7c, 0xc0, - 0x7b, 0xa8, 0xa9, 0x01, 0xd5, 0x53, 0xde, 0x7f, 0x7e, 0xf0, 0xb4, 0xd7, 0x2c, 0xa0, 0xe0, 0xb7, - 0x83, 0xa3, 0x6f, 0x7b, 0xdd, 0xa6, 0x73, 0x78, 0xef, 0xbb, 0xab, 0xed, 0xc2, 0xf7, 0x57, 0xdb, - 0x85, 0x1f, 0xae, 0xb6, 0x0b, 0xff, 0xbe, 0xda, 0x2e, 0xfc, 0xe1, 0xcd, 0xf6, 0xda, 0xf7, 0x6f, - 0xb6, 0xd7, 0x7e, 0x78, 0xb3, 0xbd, 0x76, 0x56, 0xa1, 0x3f, 0x45, 0xbe, 0xf8, 0x4f, 0x00, 0x00, - 0x00, 0xff, 0xff, 0xd1, 0xbc, 0xef, 0x81, 0x54, 0x11, 0x00, 0x00, +var fileDescriptor_ops_5b0fc877b949f769 = []byte{ + // 1877 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x4f, 0x6f, 0x1b, 0xc7, + 0x15, 0x17, 0x97, 0x7f, 0xf7, 0x51, 0x92, 0xd9, 0x89, 0xe3, 0xb2, 0xaa, 0x2b, 0x29, 0x9b, 0x34, + 0x60, 0x24, 0x9b, 0x02, 0x14, 0x20, 0x09, 0x72, 0x28, 0x2a, 0x91, 0x34, 0xc4, 0xa6, 0x12, 0x85, + 0xa1, 0x6c, 0x1f, 0x8d, 0xd5, 0xee, 0x90, 0x5a, 0x90, 0xbb, 0xb3, 0x98, 0x1d, 0x5a, 0xe2, 0xa5, + 0x28, 0xfc, 0x09, 0x02, 0x14, 0xe8, 0xad, 0x87, 0x1e, 0xfb, 0x21, 0x7a, 0xcf, 0x31, 0x28, 0x7a, + 0x48, 0x7b, 0x70, 0x0b, 0xfb, 0x8b, 0x14, 0x6f, 0x66, 0x96, 0xbb, 0xa4, 0x55, 0xd8, 0x46, 0x8b, + 0x9c, 0x38, 0xf3, 0x7b, 0xbf, 0x79, 0xf3, 0xe6, 0xbd, 0x37, 0xf3, 0xde, 0x12, 0x6c, 0x1e, 0x27, + 0xed, 0x58, 0x70, 0xc9, 0x89, 0x15, 0x5f, 0x6e, 0x3d, 0x1c, 0x07, 0xf2, 0x6a, 0x76, 0xd9, 0xf6, + 0x78, 0x78, 0x30, 0xe6, 0x63, 0x7e, 0xa0, 0x44, 0x97, 0xb3, 0x91, 0x9a, 0xa9, 0x89, 0x1a, 0xe9, + 0x25, 0xce, 0x9f, 0x2d, 0xb0, 0x06, 0x31, 0xf9, 0x08, 0x2a, 0x41, 0x14, 0xcf, 0x64, 0xd2, 0x2c, + 0xec, 0x16, 0x5b, 0xf5, 0x43, 0xbb, 0x1d, 0x5f, 0xb6, 0xfb, 0x88, 0x50, 0x23, 0x20, 0xbb, 0x50, + 0x62, 0x37, 0xcc, 0x6b, 0x5a, 0xbb, 0x85, 0x56, 0xfd, 0x10, 0x90, 0xd0, 0xbb, 0x61, 0xde, 0x20, + 0x3e, 0x59, 0xa3, 0x4a, 0x42, 0x3e, 0x85, 0x4a, 0xc2, 0x67, 0xc2, 0x63, 0xcd, 0xa2, 0xe2, 0xac, + 0x23, 0x67, 0xa8, 0x10, 0xc5, 0x32, 0x52, 0xd4, 0x34, 0x0a, 0xa6, 0xac, 0x59, 0xca, 0x34, 0x3d, + 0x0a, 0xa6, 0x9a, 0xa3, 0x24, 0xe4, 0x63, 0x28, 0x5f, 0xce, 0x82, 0xa9, 0xdf, 0x2c, 0x2b, 0x4a, + 0x1d, 0x29, 0xc7, 0x08, 0x28, 0x8e, 0x96, 0x91, 0x16, 0xd4, 0xe2, 0xa9, 0x2b, 0x47, 0x5c, 0x84, + 0x4d, 0xc8, 0x36, 0x3c, 0x37, 0x18, 0x5d, 0x48, 0xc9, 0x97, 0x50, 0xf7, 0x78, 0x94, 0x48, 0xe1, + 0x06, 0x91, 0x4c, 0x9a, 0x75, 0x45, 0xfe, 0x10, 0xc9, 0x4f, 0xb9, 0x98, 0x30, 0xd1, 0xc9, 0x84, + 0x34, 0xcf, 0x3c, 0x2e, 0x81, 0xc5, 0x63, 0xe7, 0x8f, 0x05, 0xa8, 0xa5, 0x5a, 0x89, 0x03, 0xeb, + 0x47, 0xc2, 0xbb, 0x0a, 0x24, 0xf3, 0xe4, 0x4c, 0xb0, 0x66, 0x61, 0xb7, 0xd0, 0xb2, 0xe9, 0x12, + 0x46, 0x36, 0xc1, 0x1a, 0x0c, 0x95, 0xa3, 0x6c, 0x6a, 0x0d, 0x86, 0xa4, 0x09, 0xd5, 0x27, 0xae, + 0x08, 0xdc, 0x48, 0x2a, 0xcf, 0xd8, 0x34, 0x9d, 0x92, 0xfb, 0x60, 0x0f, 0x86, 0x4f, 0x98, 0x48, + 0x02, 0x1e, 0x29, 0x7f, 0xd8, 0x34, 0x03, 0xc8, 0x36, 0xc0, 0x60, 0xf8, 0x88, 0xb9, 0xa8, 0x34, + 0x69, 0x96, 0x77, 0x8b, 0x2d, 0x9b, 0xe6, 0x10, 0xe7, 0x77, 0x50, 0x56, 0x31, 0x22, 0xbf, 0x81, + 0x8a, 0x1f, 0x8c, 0x59, 0x22, 0xb5, 0x39, 0xc7, 0x87, 0xdf, 0xbd, 0xdc, 0x59, 0xfb, 0xe7, 0xcb, + 0x9d, 0xbd, 0x5c, 0x32, 0xf0, 0x98, 0x45, 0x1e, 0x8f, 0xa4, 0x1b, 0x44, 0x4c, 0x24, 0x07, 0x63, + 0xfe, 0x50, 0x2f, 0x69, 0x77, 0xd5, 0x0f, 0x35, 0x1a, 0xc8, 0x67, 0x50, 0x0e, 0x22, 0x9f, 0xdd, + 0x28, 0xfb, 0x8b, 0xc7, 0x1f, 0x18, 0x55, 0xf5, 0xc1, 0x4c, 0xc6, 0x33, 0xd9, 0x47, 0x11, 0xd5, + 0x0c, 0x27, 0x86, 0x8a, 0x4e, 0x01, 0x72, 0x1f, 0x4a, 0x21, 0x93, 0xae, 0xda, 0xbe, 0x7e, 0x58, + 0x43, 0xd7, 0x9e, 0x32, 0xe9, 0x52, 0x85, 0x62, 0x76, 0x85, 0x7c, 0x86, 0xae, 0xb7, 0xb2, 0xec, + 0x3a, 0x45, 0x84, 0x1a, 0x01, 0xf9, 0x25, 0x54, 0x23, 0x26, 0xaf, 0xb9, 0x98, 0x28, 0x17, 0x6d, + 0xea, 0x98, 0x9f, 0x31, 0x79, 0xca, 0x7d, 0x46, 0x53, 0x99, 0xf3, 0x97, 0x02, 0x94, 0x50, 0x31, + 0x21, 0x50, 0x72, 0xc5, 0x58, 0xa7, 0xab, 0x4d, 0xd5, 0x98, 0x34, 0xa0, 0xc8, 0xa2, 0xe7, 0x6a, + 0x0f, 0x9b, 0xe2, 0x10, 0x11, 0xef, 0xda, 0x37, 0x4e, 0xc7, 0x21, 0xae, 0x9b, 0x25, 0x4c, 0x18, + 0x5f, 0xab, 0x31, 0xf9, 0x0c, 0xec, 0x58, 0xf0, 0x9b, 0xf9, 0x33, 0x5c, 0x5d, 0xce, 0x65, 0x12, + 0x82, 0xbd, 0xe8, 0x39, 0xad, 0xc5, 0x66, 0x44, 0xf6, 0x00, 0xd8, 0x8d, 0x14, 0xee, 0x09, 0x4f, + 0x64, 0xd2, 0xac, 0xa8, 0xd3, 0xa8, 0x04, 0x46, 0xa0, 0x7f, 0x4e, 0x73, 0x52, 0xe7, 0x6f, 0x16, + 0x94, 0xd5, 0x21, 0x49, 0x0b, 0x5d, 0x1a, 0xcf, 0x74, 0x74, 0x8a, 0xc7, 0xc4, 0xb8, 0x14, 0x54, + 0xf0, 0x16, 0x1e, 0xc5, 0x40, 0x6e, 0x41, 0x2d, 0x61, 0x53, 0xe6, 0x49, 0x2e, 0x4c, 0xfe, 0x2c, + 0xe6, 0x68, 0xba, 0x8f, 0x21, 0xd6, 0xa7, 0x51, 0x63, 0xb2, 0x0f, 0x15, 0xae, 0xe2, 0xa2, 0x0e, + 0xf4, 0x5f, 0xa2, 0x65, 0x28, 0xa8, 0x5c, 0x30, 0xd7, 0xe7, 0xd1, 0x74, 0xae, 0x8e, 0x59, 0xa3, + 0x8b, 0x39, 0xd9, 0x07, 0x5b, 0x45, 0xe2, 0x62, 0x1e, 0xb3, 0x66, 0x45, 0x45, 0x60, 0x63, 0x11, + 0x25, 0x04, 0x69, 0x26, 0xc7, 0x9b, 0xe7, 0xb9, 0xde, 0x15, 0x1b, 0xc4, 0xb2, 0x79, 0x37, 0xf3, + 0x57, 0xc7, 0x60, 0x74, 0x21, 0x45, 0xb5, 0x09, 0xf3, 0x04, 0x93, 0x48, 0xfd, 0x50, 0x51, 0x95, + 0xda, 0x61, 0x0a, 0xd2, 0x4c, 0x4e, 0x1c, 0xa8, 0x0c, 0x87, 0x27, 0xc8, 0xbc, 0x97, 0xbd, 0x0c, + 0x1a, 0xa1, 0x46, 0xe2, 0xf4, 0xa1, 0x96, 0x6e, 0x83, 0xd7, 0xac, 0xdf, 0x35, 0x17, 0xd0, 0xea, + 0x77, 0xc9, 0x43, 0xa8, 0x26, 0x57, 0xae, 0x08, 0xa2, 0xb1, 0xf2, 0xdd, 0xe6, 0xe1, 0x07, 0x0b, + 0xab, 0x86, 0x1a, 0x47, 0x4d, 0x29, 0xc7, 0xe1, 0x60, 0x2f, 0xcc, 0x78, 0x43, 0x57, 0x03, 0x8a, + 0xb3, 0xc0, 0x57, 0x7a, 0x36, 0x28, 0x0e, 0x11, 0x19, 0x07, 0x3a, 0x97, 0x36, 0x28, 0x0e, 0x31, + 0x20, 0x21, 0xf7, 0xf5, 0x3b, 0xb6, 0x41, 0xd5, 0x18, 0x7d, 0xcc, 0x63, 0x19, 0xf0, 0xc8, 0x9d, + 0xa6, 0x3e, 0x4e, 0xe7, 0xce, 0x34, 0x3d, 0xdf, 0x8f, 0xb2, 0xdb, 0x1f, 0x0a, 0x50, 0x4b, 0x1f, + 0x5f, 0x7c, 0x49, 0x02, 0x9f, 0x45, 0x32, 0x18, 0x05, 0x4c, 0x98, 0x8d, 0x73, 0x08, 0x79, 0x08, + 0x65, 0x57, 0x4a, 0x91, 0x5e, 0xd0, 0x9f, 0xe6, 0x5f, 0xee, 0xf6, 0x11, 0x4a, 0x7a, 0x91, 0x14, + 0x73, 0xaa, 0x59, 0x5b, 0x5f, 0x01, 0x64, 0x20, 0xda, 0x3a, 0x61, 0x73, 0xa3, 0x15, 0x87, 0xe4, + 0x2e, 0x94, 0x9f, 0xbb, 0xd3, 0x19, 0x33, 0x39, 0xac, 0x27, 0x5f, 0x5b, 0x5f, 0x15, 0x9c, 0xbf, + 0x5a, 0x50, 0x35, 0x2f, 0x39, 0x79, 0x00, 0x55, 0xf5, 0x92, 0x1b, 0x8b, 0x6e, 0xbf, 0x18, 0x29, + 0x85, 0x1c, 0x2c, 0x4a, 0x54, 0xce, 0x46, 0xa3, 0x4a, 0x97, 0x2a, 0x63, 0x63, 0x56, 0xb0, 0x8a, + 0x3e, 0x1b, 0x99, 0x5a, 0xb4, 0x89, 0xec, 0x2e, 0x1b, 0x05, 0x51, 0x80, 0xfe, 0xa1, 0x28, 0x22, + 0x0f, 0xd2, 0x53, 0x97, 0x94, 0xc6, 0x7b, 0x79, 0x8d, 0x6f, 0x1e, 0xba, 0x0f, 0xf5, 0xdc, 0x36, + 0xb7, 0x9c, 0xfa, 0x93, 0xfc, 0xa9, 0xcd, 0x96, 0x4a, 0x9d, 0x2e, 0xa4, 0x99, 0x17, 0xfe, 0x07, + 0xff, 0x7d, 0x01, 0x90, 0xa9, 0x7c, 0xf7, 0x87, 0xc5, 0x79, 0x51, 0x04, 0x18, 0xc4, 0xf8, 0x74, + 0xfa, 0xae, 0x7a, 0x91, 0xd7, 0x83, 0x71, 0xc4, 0x05, 0x7b, 0xa6, 0xae, 0xaa, 0x5a, 0x5f, 0xa3, + 0x75, 0x8d, 0xa9, 0x1b, 0x43, 0x8e, 0xa0, 0xee, 0xb3, 0xc4, 0x13, 0x81, 0x4a, 0x28, 0xe3, 0xf4, + 0x1d, 0x3c, 0x53, 0xa6, 0xa7, 0xdd, 0xcd, 0x18, 0xda, 0x57, 0xf9, 0x35, 0xe4, 0x10, 0xd6, 0xd9, + 0x4d, 0xcc, 0x85, 0x34, 0xbb, 0xe8, 0x82, 0x7f, 0x47, 0xb7, 0x0e, 0x88, 0xab, 0x9d, 0x68, 0x9d, + 0x65, 0x13, 0xe2, 0x42, 0xc9, 0x73, 0x63, 0x5d, 0xed, 0xea, 0x87, 0xcd, 0x95, 0xfd, 0x3a, 0x6e, + 0xac, 0x9d, 0x76, 0xfc, 0x39, 0x9e, 0xf5, 0xc5, 0xbf, 0x76, 0xf6, 0x73, 0x25, 0x2e, 0xe4, 0x97, + 0xf3, 0x03, 0x95, 0x2f, 0x93, 0x40, 0x1e, 0xcc, 0x64, 0x30, 0x3d, 0x70, 0xe3, 0x00, 0xd5, 0xe1, + 0xc2, 0x7e, 0x97, 0x2a, 0xd5, 0x5b, 0xbf, 0x82, 0xc6, 0xaa, 0xdd, 0xef, 0x13, 0x83, 0xad, 0x2f, + 0xc1, 0x5e, 0xd8, 0xf1, 0xb6, 0x85, 0xb5, 0x7c, 0xf0, 0x3e, 0x86, 0x7a, 0xee, 0xdc, 0x48, 0x7c, + 0xa2, 0x88, 0xda, 0xfb, 0x7a, 0xe2, 0xbc, 0xc0, 0x6e, 0x23, 0xad, 0x37, 0xbf, 0x00, 0xb8, 0x92, + 0x32, 0x7e, 0xa6, 0x0a, 0x90, 0xd9, 0xc4, 0x46, 0x44, 0x31, 0xc8, 0x0e, 0xd4, 0x71, 0x92, 0x18, + 0xb9, 0xb6, 0x54, 0xad, 0x48, 0x34, 0xe1, 0xe7, 0x60, 0x8f, 0x16, 0xcb, 0x75, 0xe1, 0xa8, 0x8d, + 0xd2, 0xd5, 0x3f, 0x83, 0x5a, 0xc4, 0x8d, 0x4c, 0xd7, 0xc3, 0x6a, 0xc4, 0x95, 0xc8, 0xd9, 0x87, + 0x9f, 0xbc, 0xd1, 0x1a, 0x91, 0x7b, 0x50, 0x19, 0x05, 0x53, 0xa9, 0xae, 0x2b, 0x96, 0x58, 0x33, + 0x73, 0xfe, 0x51, 0x00, 0xc8, 0xae, 0x16, 0x7a, 0x04, 0xef, 0x1d, 0x72, 0xd6, 0xf5, 0x3d, 0x9b, + 0x42, 0x2d, 0x34, 0x11, 0x34, 0x79, 0x74, 0x7f, 0xf9, 0x3a, 0xb6, 0xd3, 0x00, 0xeb, 0xd8, 0x1e, + 0x9a, 0xd8, 0xbe, 0x4f, 0xfb, 0xb2, 0xd8, 0x61, 0xeb, 0x1b, 0xd8, 0x58, 0x52, 0xf7, 0x8e, 0x37, + 0x35, 0xcb, 0xb2, 0x7c, 0xc8, 0x1e, 0x40, 0x45, 0x97, 0x76, 0x7c, 0x7f, 0x71, 0x64, 0xd4, 0xa8, + 0xb1, 0x7a, 0xc7, 0xcf, 0xd3, 0x46, 0xaf, 0x7f, 0xee, 0x1c, 0x42, 0x45, 0x77, 0xb2, 0xa4, 0x05, + 0x55, 0xd7, 0xc3, 0xa3, 0xa5, 0xcf, 0xd5, 0x66, 0xda, 0xe6, 0x1e, 0x29, 0x98, 0xa6, 0x62, 0xe7, + 0xef, 0x16, 0x40, 0x86, 0xbf, 0x47, 0xaf, 0xf0, 0x35, 0x6c, 0x26, 0xcc, 0xe3, 0x91, 0xef, 0x8a, + 0xb9, 0x92, 0x9a, 0x8e, 0xed, 0xb6, 0x25, 0x2b, 0xcc, 0x5c, 0xdf, 0x50, 0x7c, 0x7b, 0xdf, 0xd0, + 0x82, 0x92, 0xc7, 0xe3, 0xb9, 0xb9, 0xbe, 0x64, 0xf9, 0x20, 0x1d, 0x1e, 0xcf, 0xb1, 0x6f, 0x47, + 0x06, 0x69, 0x43, 0x25, 0x9c, 0xa8, 0xde, 0x5e, 0xb7, 0x51, 0x77, 0x97, 0xb9, 0xa7, 0x13, 0x1c, + 0xe3, 0x97, 0x80, 0x66, 0x91, 0x7d, 0x28, 0x87, 0x13, 0x3f, 0x10, 0xaa, 0xe3, 0xa8, 0xeb, 0x7a, + 0x9d, 0xa7, 0x77, 0x03, 0x81, 0xfd, 0xbe, 0xe2, 0x10, 0x07, 0x2c, 0x11, 0x36, 0xab, 0x8a, 0xd9, + 0x58, 0xf1, 0x66, 0x78, 0xb2, 0x46, 0x2d, 0x11, 0x1e, 0xd7, 0xa0, 0xa2, 0xfd, 0xea, 0xfc, 0xbe, + 0x08, 0x9b, 0xcb, 0x56, 0x62, 0x1e, 0x24, 0xc2, 0x4b, 0xf3, 0x20, 0x11, 0xde, 0xa2, 0xa5, 0xb2, + 0x72, 0x2d, 0x95, 0x03, 0x65, 0x7e, 0x1d, 0x99, 0x16, 0x31, 0xed, 0x6c, 0xae, 0xf8, 0x75, 0x84, + 0xcd, 0x83, 0x16, 0x2d, 0x6a, 0x31, 0x9e, 0xb2, 0x6c, 0x6a, 0xf1, 0x27, 0xb0, 0x31, 0xe2, 0xd3, + 0x29, 0xbf, 0x1e, 0xce, 0xc3, 0x69, 0x10, 0x4d, 0xd4, 0x99, 0x6a, 0x74, 0x19, 0x24, 0x2d, 0xb8, + 0xe3, 0x07, 0x02, 0xcd, 0xe9, 0xf0, 0x48, 0x32, 0xec, 0x89, 0xab, 0x8a, 0xb7, 0x0a, 0xa3, 0x3e, + 0x57, 0x4a, 0x16, 0xc6, 0xf2, 0x71, 0x14, 0xbb, 0xde, 0xa4, 0x59, 0xd3, 0xfa, 0x96, 0x40, 0xf2, + 0x29, 0x6c, 0x7a, 0x82, 0xb9, 0x92, 0x75, 0x59, 0x22, 0xcf, 0x5d, 0x79, 0xd5, 0xb4, 0x15, 0x6d, + 0x05, 0x55, 0xda, 0xd0, 0x8e, 0xa7, 0xc1, 0xd4, 0xf7, 0x5c, 0xe1, 0xab, 0x2f, 0x26, 0xd4, 0x96, + 0x07, 0x49, 0x1b, 0x88, 0x02, 0x7a, 0x61, 0x2c, 0xe7, 0x0b, 0x6a, 0x5d, 0x51, 0x6f, 0x91, 0xe0, + 0xe7, 0x8b, 0x0c, 0x42, 0x96, 0x48, 0x37, 0x8c, 0x9b, 0xeb, 0x98, 0x49, 0x34, 0x03, 0x9c, 0x6f, + 0x0b, 0xd0, 0x58, 0x0d, 0x3e, 0xba, 0x2e, 0x46, 0x33, 0xcd, 0x35, 0xc2, 0xf1, 0xc2, 0x9d, 0x56, + 0xce, 0x9d, 0x18, 0x1a, 0x7c, 0x2f, 0x30, 0x3f, 0xd7, 0xa9, 0x1a, 0xbf, 0x53, 0x68, 0x96, 0x4c, + 0x2a, 0xaf, 0x9a, 0xf4, 0xa7, 0x02, 0xdc, 0x59, 0x49, 0xb0, 0x77, 0xb6, 0x68, 0x17, 0xea, 0xa1, + 0x3b, 0x61, 0xe7, 0xae, 0x50, 0x61, 0x2b, 0xea, 0x92, 0x99, 0x83, 0xfe, 0x0f, 0xf6, 0x45, 0xb0, + 0x9e, 0xcf, 0xea, 0x5b, 0x6d, 0x4b, 0x43, 0x79, 0xc6, 0xe5, 0x23, 0x3e, 0x8b, 0x7c, 0x53, 0x67, + 0x96, 0xc1, 0x37, 0x03, 0x5e, 0xbc, 0x25, 0xe0, 0xce, 0x19, 0xd4, 0x52, 0x03, 0xc9, 0x8e, 0xf9, + 0x34, 0x2a, 0x64, 0xdf, 0xdc, 0x8f, 0x13, 0x26, 0xd0, 0x76, 0xfd, 0x9d, 0xf4, 0x11, 0x94, 0xc7, + 0x82, 0xcf, 0x62, 0xf3, 0x6a, 0x2e, 0x31, 0xb4, 0xc4, 0x79, 0x0a, 0x55, 0x83, 0xa0, 0xe9, 0x91, + 0x1b, 0xa6, 0x1f, 0xc8, 0x6a, 0x9c, 0x3d, 0x6e, 0xd6, 0xdb, 0x1e, 0xb7, 0x4d, 0xb0, 0x4c, 0xfb, + 0x5b, 0xa6, 0x56, 0xe0, 0xef, 0xb5, 0xa0, 0x6a, 0x3e, 0x06, 0x89, 0x0d, 0xe5, 0xc7, 0x67, 0xc3, + 0xde, 0x45, 0x63, 0x8d, 0xd4, 0xa0, 0x74, 0x32, 0x18, 0x5e, 0x34, 0x0a, 0x38, 0x3a, 0x1b, 0x9c, + 0xf5, 0x1a, 0xd6, 0xde, 0xaf, 0xc1, 0x5e, 0x7c, 0xb4, 0x20, 0x7c, 0xdc, 0x3f, 0xeb, 0x36, 0xd6, + 0x08, 0x40, 0x65, 0xd8, 0xeb, 0xd0, 0x1e, 0x92, 0xab, 0x50, 0x1c, 0x0e, 0x4f, 0x1a, 0x16, 0xaa, + 0xea, 0x1c, 0x75, 0x4e, 0x7a, 0x8d, 0x22, 0x0e, 0x2f, 0x4e, 0xcf, 0x1f, 0x0d, 0x1b, 0xa5, 0xbd, + 0x2f, 0xe0, 0xce, 0xca, 0x47, 0x83, 0x5a, 0x7d, 0x72, 0x44, 0x7b, 0xa8, 0xa9, 0x0e, 0xd5, 0x73, + 0xda, 0x7f, 0x72, 0x74, 0xd1, 0x6b, 0x14, 0x50, 0xf0, 0xdb, 0x41, 0xe7, 0x9b, 0x5e, 0xb7, 0x61, + 0x1d, 0xdf, 0xff, 0xee, 0xd5, 0x76, 0xe1, 0xfb, 0x57, 0xdb, 0x85, 0x1f, 0x5e, 0x6d, 0x17, 0xfe, + 0xfd, 0x6a, 0xbb, 0xf0, 0xed, 0xeb, 0xed, 0xb5, 0xef, 0x5f, 0x6f, 0xaf, 0xfd, 0xf0, 0x7a, 0x7b, + 0xed, 0xb2, 0xa2, 0xfe, 0x70, 0xf9, 0xfc, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x80, 0xe3, 0x0a, + 0xb5, 0xb0, 0x11, 0x00, 0x00, } diff --git a/solver/pb/ops.proto b/solver/pb/ops.proto index 31e894f1..fa78c4aa 100644 --- a/solver/pb/ops.proto +++ b/solver/pb/ops.proto @@ -221,13 +221,14 @@ message FileActionCopy { string src = 1; string dest = 2; ChownOpt owner = 4; - int32 mode = 5; + int32 mode = 5; bool followSymlink = 6; bool dirCopyContents = 7; - bool attemptUnpack = 8; - bool createDestPath = 9; - bool allowWildcard = 10; - bool allowEmptyWildcard = 11; + bool attemptUnpack = 8; + bool createDestPath = 9; + bool allowWildcard = 10; + bool allowEmptyWildcard = 11; + int64 timestamp = 12; } message FileActionMkFile { @@ -235,19 +236,21 @@ message FileActionMkFile { int32 mode = 2; bytes data = 3; ChownOpt owner = 4; + int64 timestamp = 5; } message FileActionMkDir { string path = 1; int32 mode = 2; - bool makeParents = 3; + bool makeParents = 3; ChownOpt owner = 4; + int64 timestamp = 5; } message FileActionRm { string path = 1; - bool allowNotFound = 2; - bool allowWildcard = 3; + bool allowNotFound = 2; + bool allowWildcard = 3; } message ChownOpt {