diff --git a/src/cmd/linuxkit/go.mod b/src/cmd/linuxkit/go.mod index bc505fc04..886a4a0cd 100644 --- a/src/cmd/linuxkit/go.mod +++ b/src/cmd/linuxkit/go.mod @@ -23,7 +23,7 @@ require ( github.com/gophercloud/utils v0.0.0-20181029231510-34f5991525d1 github.com/hashicorp/go-version v1.2.0 github.com/klauspost/pgzip v1.2.5 - github.com/moby/buildkit v0.11.0-rc1.0.20221213132957-c0ac5e8b9b51 + github.com/moby/buildkit v0.11.0-rc2 github.com/moby/hyperkit v0.0.0-20180416161519-d65b09c1c28a //github.com/moby/moby v20.10.3-0.20220728162118-71cb54cec41e+incompatible // indirect github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 diff --git a/src/cmd/linuxkit/go.sum b/src/cmd/linuxkit/go.sum index d8acff3d9..a88da1c29 100644 --- a/src/cmd/linuxkit/go.sum +++ b/src/cmd/linuxkit/go.sum @@ -1066,8 +1066,8 @@ github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= github.com/moby/buildkit v0.8.1/go.mod h1:/kyU1hKy/aYCuP39GZA9MaKioovHku57N6cqlKZIaiQ= github.com/moby/buildkit v0.10.1-0.20220403220257-10e6f94bf90d/go.mod h1:WvwAZv8aRScHkqc/+X46cRC2CKMKpqcaX+pRvUTtPes= -github.com/moby/buildkit v0.11.0-rc1.0.20221213132957-c0ac5e8b9b51 h1:JSFjonNJAABHC33y9osJ5YtvMiAJPB4ZMNQnkJE6TRI= -github.com/moby/buildkit v0.11.0-rc1.0.20221213132957-c0ac5e8b9b51/go.mod h1:f3jvilDvcG14z+gzPpA2lcWRwIRyFiNTo5bMwHiYDk0= +github.com/moby/buildkit v0.11.0-rc2 h1:ZgurjAHikHjF1cz4aas6lMIQCOtj2/AERjUEKWbaFKE= +github.com/moby/buildkit v0.11.0-rc2/go.mod h1:f3jvilDvcG14z+gzPpA2lcWRwIRyFiNTo5bMwHiYDk0= github.com/moby/hyperkit v0.0.0-20180416161519-d65b09c1c28a h1:hExo7kltIidoitYnXsnqfvkJXG3YEMbHuQbf9nOMvow= github.com/moby/hyperkit v0.0.0-20180416161519-d65b09c1c28a/go.mod h1:zGAVB/FkAf4ozkR8CCuj4LcVuErrNsj9APTDFvhOckw= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= diff --git a/src/cmd/linuxkit/pkg_build.go b/src/cmd/linuxkit/pkg_build.go index 526acf454..73b8e1ddd 100644 --- a/src/cmd/linuxkit/pkg_build.go +++ b/src/cmd/linuxkit/pkg_build.go @@ -12,12 +12,9 @@ import ( ) const ( - buildersEnvVar = "LINUXKIT_BUILDERS" - envVarCacheDir = "LINUXKIT_CACHE" - // this is the most recent manifest pointed to by moby/buildkit:master as of 2022-12-13, with the latest commit - // c0ac5e8b9b51603c5a93795fcf1373d6d44d3a85. - // Once there is a normal semver tag later than this, we should switch to it. - defaultBuilderImage = "moby/buildkit@sha256:daadc9f6dc5829c9dfa68ef9f4292c2d5b2fddf848046e02e43db53037373dda" + buildersEnvVar = "LINUXKIT_BUILDERS" + envVarCacheDir = "LINUXKIT_CACHE" + defaultBuilderImage = "moby/buildkit:v0.11.0-rc2" ) func pkgBuild(args []string) { diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/api/services/control/control.pb.go b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/api/services/control/control.pb.go index 315f444c4..625b554a7 100644 --- a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/api/services/control/control.pb.go +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/api/services/control/control.pb.go @@ -13,6 +13,7 @@ import ( _ "github.com/golang/protobuf/ptypes/timestamp" types "github.com/moby/buildkit/api/types" pb "github.com/moby/buildkit/solver/pb" + pb1 "github.com/moby/buildkit/sourcepolicy/pb" github_com_moby_buildkit_util_entitlements "github.com/moby/buildkit/util/entitlements" github_com_opencontainers_go_digest "github.com/opencontainers/go-digest" grpc "google.golang.org/grpc" @@ -376,6 +377,8 @@ type SolveRequest struct { Cache CacheOptions `protobuf:"bytes,8,opt,name=Cache,proto3" json:"Cache"` Entitlements []github_com_moby_buildkit_util_entitlements.Entitlement `protobuf:"bytes,9,rep,name=Entitlements,proto3,customtype=github.com/moby/buildkit/util/entitlements.Entitlement" json:"Entitlements,omitempty"` FrontendInputs map[string]*pb.Definition `protobuf:"bytes,10,rep,name=FrontendInputs,proto3" json:"FrontendInputs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Internal bool `protobuf:"varint,11,opt,name=Internal,proto3" json:"Internal,omitempty"` + SourcePolicy *pb1.Policy `protobuf:"bytes,12,opt,name=SourcePolicy,proto3" json:"SourcePolicy,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -477,6 +480,20 @@ func (m *SolveRequest) GetFrontendInputs() map[string]*pb.Definition { return nil } +func (m *SolveRequest) GetInternal() bool { + if m != nil { + return m.Internal + } + return false +} + +func (m *SolveRequest) GetSourcePolicy() *pb1.Policy { + if m != nil { + return m.SourcePolicy + } + return nil +} + type CacheOptions struct { // ExportRefDeprecated is deprecated in favor or the new Exports since BuildKit v0.4.0. // When ExportRefDeprecated is set, the solver appends @@ -1358,6 +1375,7 @@ func (m *InfoResponse) GetBuildkitVersion() *types.BuildkitVersion { type BuildHistoryRequest struct { ActiveOnly bool `protobuf:"varint,1,opt,name=ActiveOnly,proto3" json:"ActiveOnly,omitempty"` Ref string `protobuf:"bytes,2,opt,name=Ref,proto3" json:"Ref,omitempty"` + EarlyExit bool `protobuf:"varint,3,opt,name=EarlyExit,proto3" json:"EarlyExit,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1410,6 +1428,13 @@ func (m *BuildHistoryRequest) GetRef() string { return "" } +func (m *BuildHistoryRequest) GetEarlyExit() bool { + if m != nil { + return m.EarlyExit + } + return false +} + type BuildHistoryEvent struct { Type BuildHistoryEventType `protobuf:"varint,1,opt,name=type,proto3,enum=moby.buildkit.v1.BuildHistoryEventType" json:"type,omitempty"` Record *BuildHistoryRecord `protobuf:"bytes,2,opt,name=record,proto3" json:"record,omitempty"` @@ -1478,6 +1503,8 @@ type BuildHistoryRecord struct { Result *BuildResultInfo `protobuf:"bytes,10,opt,name=Result,proto3" json:"Result,omitempty"` Results map[string]*BuildResultInfo `protobuf:"bytes,11,rep,name=Results,proto3" json:"Results,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` Generation int32 `protobuf:"varint,12,opt,name=Generation,proto3" json:"Generation,omitempty"` + Trace *Descriptor `protobuf:"bytes,13,opt,name=trace,proto3" json:"trace,omitempty"` + Pinned bool `protobuf:"varint,14,opt,name=pinned,proto3" json:"pinned,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1600,6 +1627,122 @@ func (m *BuildHistoryRecord) GetGeneration() int32 { return 0 } +func (m *BuildHistoryRecord) GetTrace() *Descriptor { + if m != nil { + return m.Trace + } + return nil +} + +func (m *BuildHistoryRecord) GetPinned() bool { + if m != nil { + return m.Pinned + } + return false +} + +type UpdateBuildHistoryRequest struct { + Ref string `protobuf:"bytes,1,opt,name=Ref,proto3" json:"Ref,omitempty"` + Pinned bool `protobuf:"varint,2,opt,name=Pinned,proto3" json:"Pinned,omitempty"` + Delete bool `protobuf:"varint,3,opt,name=Delete,proto3" json:"Delete,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateBuildHistoryRequest) Reset() { *m = UpdateBuildHistoryRequest{} } +func (m *UpdateBuildHistoryRequest) String() string { return proto.CompactTextString(m) } +func (*UpdateBuildHistoryRequest) ProtoMessage() {} +func (*UpdateBuildHistoryRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_0c5120591600887d, []int{22} +} +func (m *UpdateBuildHistoryRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *UpdateBuildHistoryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_UpdateBuildHistoryRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *UpdateBuildHistoryRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateBuildHistoryRequest.Merge(m, src) +} +func (m *UpdateBuildHistoryRequest) XXX_Size() int { + return m.Size() +} +func (m *UpdateBuildHistoryRequest) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateBuildHistoryRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateBuildHistoryRequest proto.InternalMessageInfo + +func (m *UpdateBuildHistoryRequest) GetRef() string { + if m != nil { + return m.Ref + } + return "" +} + +func (m *UpdateBuildHistoryRequest) GetPinned() bool { + if m != nil { + return m.Pinned + } + return false +} + +func (m *UpdateBuildHistoryRequest) GetDelete() bool { + if m != nil { + return m.Delete + } + return false +} + +type UpdateBuildHistoryResponse struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateBuildHistoryResponse) Reset() { *m = UpdateBuildHistoryResponse{} } +func (m *UpdateBuildHistoryResponse) String() string { return proto.CompactTextString(m) } +func (*UpdateBuildHistoryResponse) ProtoMessage() {} +func (*UpdateBuildHistoryResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_0c5120591600887d, []int{23} +} +func (m *UpdateBuildHistoryResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *UpdateBuildHistoryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_UpdateBuildHistoryResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *UpdateBuildHistoryResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateBuildHistoryResponse.Merge(m, src) +} +func (m *UpdateBuildHistoryResponse) XXX_Size() int { + return m.Size() +} +func (m *UpdateBuildHistoryResponse) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateBuildHistoryResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateBuildHistoryResponse proto.InternalMessageInfo + type Descriptor struct { MediaType string `protobuf:"bytes,1,opt,name=media_type,json=mediaType,proto3" json:"media_type,omitempty"` Digest github_com_opencontainers_go_digest.Digest `protobuf:"bytes,2,opt,name=digest,proto3,customtype=github.com/opencontainers/go-digest.Digest" json:"digest"` @@ -1614,7 +1757,7 @@ func (m *Descriptor) Reset() { *m = Descriptor{} } func (m *Descriptor) String() string { return proto.CompactTextString(m) } func (*Descriptor) ProtoMessage() {} func (*Descriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_0c5120591600887d, []int{22} + return fileDescriptor_0c5120591600887d, []int{24} } func (m *Descriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1676,7 +1819,7 @@ func (m *BuildResultInfo) Reset() { *m = BuildResultInfo{} } func (m *BuildResultInfo) String() string { return proto.CompactTextString(m) } func (*BuildResultInfo) ProtoMessage() {} func (*BuildResultInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_0c5120591600887d, []int{23} + return fileDescriptor_0c5120591600887d, []int{25} } func (m *BuildResultInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1731,7 +1874,7 @@ func (m *Exporter) Reset() { *m = Exporter{} } func (m *Exporter) String() string { return proto.CompactTextString(m) } func (*Exporter) ProtoMessage() {} func (*Exporter) Descriptor() ([]byte, []int) { - return fileDescriptor_0c5120591600887d, []int{24} + return fileDescriptor_0c5120591600887d, []int{26} } func (m *Exporter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1807,6 +1950,8 @@ func init() { proto.RegisterMapType((map[string]string)(nil), "moby.buildkit.v1.BuildHistoryRecord.ExporterResponseEntry") proto.RegisterMapType((map[string]string)(nil), "moby.buildkit.v1.BuildHistoryRecord.FrontendAttrsEntry") proto.RegisterMapType((map[string]*BuildResultInfo)(nil), "moby.buildkit.v1.BuildHistoryRecord.ResultsEntry") + proto.RegisterType((*UpdateBuildHistoryRequest)(nil), "moby.buildkit.v1.UpdateBuildHistoryRequest") + proto.RegisterType((*UpdateBuildHistoryResponse)(nil), "moby.buildkit.v1.UpdateBuildHistoryResponse") proto.RegisterType((*Descriptor)(nil), "moby.buildkit.v1.Descriptor") proto.RegisterMapType((map[string]string)(nil), "moby.buildkit.v1.Descriptor.AnnotationsEntry") proto.RegisterType((*BuildResultInfo)(nil), "moby.buildkit.v1.BuildResultInfo") @@ -1817,136 +1962,146 @@ func init() { func init() { proto.RegisterFile("control.proto", fileDescriptor_0c5120591600887d) } var fileDescriptor_0c5120591600887d = []byte{ - // 2060 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x18, 0x4d, 0x6f, 0x1b, 0xc7, - 0x35, 0xcb, 0x6f, 0x3e, 0xae, 0x14, 0x79, 0xec, 0x04, 0x8b, 0x6d, 0x23, 0xc9, 0x1b, 0x1b, 0x15, - 0x8c, 0x78, 0xa9, 0xa8, 0x49, 0xed, 0xc8, 0xad, 0x6b, 0x51, 0x54, 0x6d, 0xb9, 0x16, 0xec, 0x8c, - 0xe4, 0x18, 0x08, 0x90, 0x16, 0x2b, 0x72, 0x44, 0x2f, 0xb4, 0xdc, 0xdd, 0xce, 0x0c, 0x95, 0x28, - 0x3f, 0xa0, 0x40, 0x2f, 0x45, 0x2f, 0x45, 0x7b, 0xe8, 0xad, 0x87, 0x9e, 0x7a, 0xe8, 0xa9, 0xbf, - 0xa0, 0x80, 0x8f, 0x3d, 0xe7, 0xe0, 0x16, 0xfe, 0x01, 0x45, 0x8f, 0x3d, 0x16, 0xf3, 0xb1, 0xe4, - 0x90, 0x5c, 0x4a, 0x94, 0xed, 0xd3, 0xce, 0x9b, 0x79, 0xef, 0xed, 0xfb, 0x9c, 0xf7, 0xde, 0xc0, - 0x42, 0x27, 0x89, 0x39, 0x4d, 0x22, 0x3f, 0xa5, 0x09, 0x4f, 0xd0, 0x52, 0x3f, 0x39, 0x3c, 0xf5, - 0x0f, 0x07, 0x61, 0xd4, 0x3d, 0x0e, 0xb9, 0x7f, 0xf2, 0xb1, 0x7b, 0xb3, 0x17, 0xf2, 0xe7, 0x83, - 0x43, 0xbf, 0x93, 0xf4, 0x9b, 0xbd, 0xa4, 0x97, 0x34, 0x25, 0xe2, 0xe1, 0xe0, 0x48, 0x42, 0x12, - 0x90, 0x2b, 0xc5, 0xc0, 0x5d, 0xe9, 0x25, 0x49, 0x2f, 0x22, 0x23, 0x2c, 0x1e, 0xf6, 0x09, 0xe3, - 0x41, 0x3f, 0xd5, 0x08, 0x1f, 0x19, 0xfc, 0xc4, 0xcf, 0x9a, 0xd9, 0xcf, 0x9a, 0x2c, 0x89, 0x4e, - 0x08, 0x6d, 0xa6, 0x87, 0xcd, 0x24, 0x65, 0x1a, 0xbb, 0x39, 0x13, 0x3b, 0x48, 0xc3, 0x26, 0x3f, - 0x4d, 0x09, 0x6b, 0x7e, 0x9d, 0xd0, 0x63, 0x42, 0x35, 0xc1, 0xc6, 0xa4, 0xb8, 0x4a, 0x9e, 0x20, - 0x0d, 0x99, 0x5e, 0x36, 0x69, 0xda, 0x69, 0x32, 0x1e, 0xf0, 0x81, 0xfe, 0x89, 0xf7, 0x6b, 0x0b, - 0xec, 0x27, 0x74, 0x10, 0x13, 0x4c, 0x7e, 0x35, 0x20, 0x8c, 0xa3, 0xf7, 0xa1, 0x72, 0x14, 0x46, - 0x9c, 0x50, 0xc7, 0x5a, 0x2d, 0xae, 0xd5, 0xb1, 0x86, 0xd0, 0x12, 0x14, 0x83, 0x28, 0x72, 0x0a, - 0xab, 0xd6, 0x5a, 0x0d, 0x8b, 0x25, 0x5a, 0x03, 0xfb, 0x98, 0x90, 0xb4, 0x3d, 0xa0, 0x01, 0x0f, - 0x93, 0xd8, 0x29, 0xae, 0x5a, 0x6b, 0xc5, 0x56, 0xe9, 0xc5, 0xcb, 0x15, 0x0b, 0x8f, 0x9d, 0x20, - 0x0f, 0xea, 0x02, 0x6e, 0x9d, 0x72, 0xc2, 0x9c, 0x92, 0x81, 0x36, 0xda, 0xf6, 0x6e, 0xc0, 0x52, - 0x3b, 0x64, 0xc7, 0x4f, 0x59, 0xd0, 0x3b, 0x4f, 0x16, 0xef, 0x21, 0x5c, 0x32, 0x70, 0x59, 0x9a, - 0xc4, 0x8c, 0xa0, 0x4f, 0xa1, 0x42, 0x49, 0x27, 0xa1, 0x5d, 0x89, 0xdc, 0xd8, 0xf8, 0xc0, 0x9f, - 0xf4, 0xa7, 0xaf, 0x09, 0x04, 0x12, 0xd6, 0xc8, 0xde, 0x1f, 0x8a, 0xd0, 0x30, 0xf6, 0xd1, 0x22, - 0x14, 0x76, 0xdb, 0x8e, 0xb5, 0x6a, 0xad, 0xd5, 0x71, 0x61, 0xb7, 0x8d, 0x1c, 0xa8, 0xee, 0x0d, - 0x78, 0x70, 0x18, 0x11, 0xad, 0x7b, 0x06, 0xa2, 0x2b, 0x50, 0xde, 0x8d, 0x9f, 0x32, 0x22, 0x15, - 0xaf, 0x61, 0x05, 0x20, 0x04, 0xa5, 0xfd, 0xf0, 0x5b, 0xa2, 0xd4, 0xc4, 0x72, 0x8d, 0x5c, 0xa8, - 0x3c, 0x09, 0x28, 0x89, 0xb9, 0x53, 0x16, 0x7c, 0x5b, 0x05, 0xc7, 0xc2, 0x7a, 0x07, 0xb5, 0xa0, - 0xbe, 0x4d, 0x49, 0xc0, 0x49, 0x77, 0x8b, 0x3b, 0x95, 0x55, 0x6b, 0xad, 0xb1, 0xe1, 0xfa, 0xca, - 0x5b, 0x7e, 0x16, 0x48, 0xfe, 0x41, 0x16, 0x48, 0xad, 0xda, 0x8b, 0x97, 0x2b, 0xef, 0xfc, 0xee, - 0x5f, 0xc2, 0x76, 0x43, 0x32, 0x74, 0x0f, 0xe0, 0x51, 0xc0, 0xf8, 0x53, 0x26, 0x99, 0x54, 0xcf, - 0x65, 0x52, 0x92, 0x0c, 0x0c, 0x1a, 0xb4, 0x0c, 0x20, 0x8d, 0xb0, 0x9d, 0x0c, 0x62, 0xee, 0xd4, - 0xa4, 0xec, 0xc6, 0x0e, 0x5a, 0x85, 0x46, 0x9b, 0xb0, 0x0e, 0x0d, 0x53, 0xe9, 0xea, 0xba, 0x34, - 0x8f, 0xb9, 0x25, 0x38, 0x28, 0x0b, 0x1e, 0x9c, 0xa6, 0xc4, 0x01, 0x89, 0x60, 0xec, 0x08, 0x5f, - 0xee, 0x3f, 0x0f, 0x28, 0xe9, 0x3a, 0x0d, 0x69, 0x2e, 0x0d, 0x09, 0xfb, 0x2a, 0x4b, 0x30, 0xc7, - 0x96, 0x4e, 0xce, 0x40, 0xef, 0xcf, 0x15, 0xb0, 0xf7, 0x45, 0x5e, 0x64, 0xe1, 0xb0, 0x04, 0x45, - 0x4c, 0x8e, 0xb4, 0x6f, 0xc4, 0x12, 0xf9, 0x00, 0x6d, 0x72, 0x14, 0xc6, 0xa1, 0x94, 0xaa, 0x20, - 0x15, 0x5f, 0xf4, 0xd3, 0x43, 0x7f, 0xb4, 0x8b, 0x0d, 0x0c, 0xe4, 0x42, 0x6d, 0xe7, 0x9b, 0x34, - 0xa1, 0x22, 0xa4, 0x8a, 0x92, 0xcd, 0x10, 0x46, 0xcf, 0x60, 0x21, 0x5b, 0x6f, 0x71, 0x4e, 0x45, - 0xa0, 0x8a, 0x30, 0xfa, 0x78, 0x3a, 0x8c, 0x4c, 0xa1, 0xfc, 0x31, 0x9a, 0x9d, 0x98, 0xd3, 0x53, - 0x3c, 0xce, 0x47, 0x68, 0xb8, 0x4f, 0x18, 0x13, 0x12, 0x4a, 0xf7, 0xe3, 0x0c, 0x14, 0xe2, 0xfc, - 0x8c, 0x26, 0x31, 0x27, 0x71, 0x57, 0xba, 0xbe, 0x8e, 0x87, 0xb0, 0x10, 0x27, 0x5b, 0x2b, 0x71, - 0xaa, 0x73, 0x89, 0x33, 0x46, 0xa3, 0xc5, 0x19, 0xdb, 0x43, 0x9b, 0x50, 0xde, 0x0e, 0x3a, 0xcf, - 0x89, 0xf4, 0x72, 0x63, 0x63, 0x79, 0x9a, 0xa1, 0x3c, 0x7e, 0x2c, 0xdd, 0xca, 0x64, 0xa2, 0xbe, - 0x83, 0x15, 0x09, 0xfa, 0x05, 0xd8, 0x3b, 0x31, 0x0f, 0x79, 0x44, 0xfa, 0xd2, 0x63, 0x75, 0xe1, - 0xb1, 0xd6, 0xe6, 0x77, 0x2f, 0x57, 0x7e, 0x34, 0xf3, 0xb2, 0x1a, 0xf0, 0x30, 0x6a, 0x12, 0x83, - 0xca, 0x37, 0x58, 0xe0, 0x31, 0x7e, 0xe8, 0x4b, 0x58, 0xcc, 0x84, 0xdd, 0x8d, 0xd3, 0x01, 0x67, - 0x0e, 0x48, 0xad, 0x37, 0xe6, 0xd4, 0x5a, 0x11, 0x29, 0xb5, 0x27, 0x38, 0xb9, 0xf7, 0x00, 0x4d, - 0xfb, 0x4a, 0xc4, 0xd4, 0x31, 0x39, 0xcd, 0x62, 0xea, 0x98, 0x9c, 0x8a, 0xb4, 0x3e, 0x09, 0xa2, - 0x81, 0x4a, 0xf7, 0x3a, 0x56, 0xc0, 0x66, 0xe1, 0xb6, 0x25, 0x38, 0x4c, 0x9b, 0xf7, 0x42, 0x1c, - 0x3e, 0x87, 0xcb, 0x39, 0xa2, 0xe6, 0xb0, 0xb8, 0x66, 0xb2, 0x98, 0x8e, 0xe9, 0x11, 0x4b, 0xef, - 0xaf, 0x45, 0xb0, 0x4d, 0x87, 0xa1, 0x75, 0xb8, 0xac, 0xf4, 0xc4, 0xe4, 0xa8, 0x4d, 0x52, 0x4a, - 0x3a, 0xe2, 0x96, 0xd0, 0xcc, 0xf3, 0x8e, 0xd0, 0x06, 0x5c, 0xd9, 0xed, 0xeb, 0x6d, 0x66, 0x90, - 0x14, 0x64, 0x3e, 0xe6, 0x9e, 0xa1, 0x04, 0xde, 0x53, 0xac, 0xa4, 0x25, 0x0c, 0xa2, 0xa2, 0x74, - 0xd8, 0x67, 0x67, 0x47, 0x95, 0x9f, 0x4b, 0xab, 0xfc, 0x96, 0xcf, 0x17, 0xfd, 0x04, 0xaa, 0xea, - 0x20, 0x4b, 0xcc, 0x0f, 0xcf, 0xfe, 0x85, 0x62, 0x96, 0xd1, 0x08, 0x72, 0xa5, 0x07, 0x73, 0xca, - 0x17, 0x20, 0xd7, 0x34, 0xee, 0x03, 0x70, 0x67, 0x8b, 0x7c, 0x91, 0x10, 0xf0, 0xfe, 0x62, 0xc1, - 0xa5, 0xa9, 0x1f, 0x89, 0xaa, 0x21, 0xef, 0x4d, 0xc5, 0x42, 0xae, 0x51, 0x1b, 0xca, 0x2a, 0xf3, - 0x0b, 0x52, 0x60, 0x7f, 0x0e, 0x81, 0x7d, 0x23, 0xed, 0x15, 0xb1, 0x7b, 0x1b, 0xe0, 0xf5, 0x82, - 0xd5, 0xfb, 0xbb, 0x05, 0x0b, 0x3a, 0xcb, 0x74, 0x89, 0x0d, 0x60, 0x29, 0x4b, 0xa1, 0x6c, 0x4f, - 0x17, 0xdb, 0x4f, 0x67, 0x26, 0xa8, 0x42, 0xf3, 0x27, 0xe9, 0x94, 0x8c, 0x53, 0xec, 0xdc, 0xed, - 0x2c, 0xae, 0x26, 0x50, 0x2f, 0x24, 0xf9, 0x55, 0x58, 0xd8, 0x97, 0x4d, 0xce, 0xcc, 0xca, 0xe1, - 0xfd, 0xd7, 0x82, 0xc5, 0x0c, 0x47, 0x6b, 0xf7, 0x09, 0xd4, 0x4e, 0x08, 0xe5, 0xe4, 0x1b, 0xc2, - 0xb4, 0x56, 0xce, 0xb4, 0x56, 0x5f, 0x48, 0x0c, 0x3c, 0xc4, 0x44, 0x9b, 0x50, 0x53, 0x0d, 0x15, - 0xc9, 0x1c, 0xb5, 0x3c, 0x8b, 0x4a, 0xff, 0x6f, 0x88, 0x8f, 0x9a, 0x50, 0x8a, 0x92, 0x1e, 0xd3, - 0x39, 0xf3, 0xbd, 0x59, 0x74, 0x8f, 0x92, 0x1e, 0x96, 0x88, 0xe8, 0x0e, 0xd4, 0xbe, 0x0e, 0x68, - 0x1c, 0xc6, 0xbd, 0x2c, 0x0b, 0x56, 0x66, 0x11, 0x3d, 0x53, 0x78, 0x78, 0x48, 0x20, 0x3a, 0x9d, - 0x8a, 0x3a, 0x43, 0x0f, 0xa1, 0xd2, 0x0d, 0x7b, 0x84, 0x71, 0x65, 0x92, 0xd6, 0x86, 0xb8, 0xe4, - 0xbf, 0x7b, 0xb9, 0x72, 0xc3, 0xb8, 0xc5, 0x93, 0x94, 0xc4, 0xa2, 0x41, 0x0e, 0xc2, 0x98, 0x50, - 0xd1, 0x40, 0xde, 0x54, 0x24, 0x7e, 0x5b, 0x7e, 0xb0, 0xe6, 0x20, 0x78, 0x85, 0xea, 0xae, 0x96, - 0xf7, 0xc5, 0xeb, 0xf1, 0x52, 0x1c, 0x44, 0x1a, 0xc4, 0x41, 0x9f, 0xe8, 0xda, 0x2c, 0xd7, 0xa2, - 0x71, 0xe8, 0x88, 0x38, 0xef, 0xca, 0x96, 0xaa, 0x86, 0x35, 0x84, 0x36, 0xa1, 0xca, 0x78, 0x40, - 0xc5, 0x9d, 0x53, 0x9e, 0xb3, 0xe3, 0xc9, 0x08, 0xd0, 0x5d, 0xa8, 0x77, 0x92, 0x7e, 0x1a, 0x11, - 0x41, 0x5d, 0x99, 0x93, 0x7a, 0x44, 0x22, 0x42, 0x8f, 0x50, 0x9a, 0x50, 0xd9, 0x6b, 0xd5, 0xb1, - 0x02, 0xd0, 0x2d, 0x58, 0x48, 0x69, 0xd2, 0xa3, 0x84, 0xb1, 0xfb, 0x34, 0x19, 0xa4, 0xba, 0xc2, - 0x5e, 0x12, 0x97, 0xf7, 0x13, 0xf3, 0x00, 0x8f, 0xe3, 0x79, 0xff, 0x29, 0x80, 0x6d, 0x86, 0xc8, - 0x54, 0x13, 0xfa, 0x10, 0x2a, 0x2a, 0xe0, 0x54, 0xac, 0xbf, 0x9e, 0x8d, 0x15, 0x87, 0x5c, 0x1b, - 0x3b, 0x50, 0xed, 0x0c, 0xa8, 0xec, 0x50, 0x55, 0xdf, 0x9a, 0x81, 0x42, 0x53, 0x9e, 0xf0, 0x20, - 0x92, 0x36, 0x2e, 0x62, 0x05, 0x88, 0xa6, 0x75, 0x38, 0xdb, 0x5c, 0xac, 0x69, 0x1d, 0x92, 0x99, - 0xfe, 0xab, 0xbe, 0x91, 0xff, 0x6a, 0x17, 0xf6, 0x9f, 0xf7, 0x0f, 0x0b, 0xea, 0xc3, 0xdc, 0x32, - 0xac, 0x6b, 0xbd, 0xb1, 0x75, 0xc7, 0x2c, 0x53, 0x78, 0x3d, 0xcb, 0xbc, 0x0f, 0x15, 0xc6, 0x29, - 0x09, 0xfa, 0x6a, 0xa4, 0xc2, 0x1a, 0x12, 0xb7, 0x58, 0x9f, 0xf5, 0xa4, 0x87, 0x6c, 0x2c, 0x96, - 0xde, 0xff, 0x2c, 0x58, 0x18, 0x4b, 0xf7, 0xb7, 0xaa, 0xcb, 0x15, 0x28, 0x47, 0xe4, 0x84, 0xa8, - 0xa1, 0xaf, 0x88, 0x15, 0x20, 0x76, 0xd9, 0xf3, 0x84, 0x72, 0x29, 0x9c, 0x8d, 0x15, 0x20, 0x64, - 0xee, 0x12, 0x1e, 0x84, 0x91, 0xbc, 0x97, 0x6c, 0xac, 0x21, 0x21, 0xf3, 0x80, 0x46, 0xba, 0xf1, - 0x15, 0x4b, 0xe4, 0x41, 0x29, 0x8c, 0x8f, 0x12, 0x1d, 0x36, 0xb2, 0xb3, 0xd9, 0x4f, 0x06, 0xb4, - 0x43, 0x76, 0xe3, 0xa3, 0x04, 0xcb, 0x33, 0x74, 0x15, 0x2a, 0x34, 0x88, 0x7b, 0x24, 0xeb, 0x7a, - 0xeb, 0x02, 0x0b, 0x8b, 0x1d, 0xac, 0x0f, 0x3c, 0x0f, 0x6c, 0x39, 0x38, 0xee, 0x11, 0x26, 0xc6, - 0x14, 0x11, 0xd6, 0xdd, 0x80, 0x07, 0x52, 0x6d, 0x1b, 0xcb, 0xb5, 0xf7, 0x11, 0xa0, 0x47, 0x21, - 0xe3, 0xcf, 0xe4, 0x90, 0xcc, 0xce, 0x9b, 0x2a, 0xf7, 0xe1, 0xf2, 0x18, 0xb6, 0x2e, 0x0b, 0x3f, - 0x9e, 0x98, 0x2b, 0xaf, 0x4d, 0xdf, 0xb8, 0x72, 0x16, 0xf7, 0x15, 0xe1, 0xc4, 0x78, 0xb9, 0x00, - 0x0d, 0xa9, 0x97, 0xfa, 0xb7, 0x17, 0x80, 0xad, 0x40, 0xcd, 0xfc, 0x73, 0x78, 0x37, 0x63, 0xf4, - 0x05, 0xa1, 0x72, 0x46, 0xb0, 0xa4, 0x5d, 0x7e, 0x30, 0xeb, 0x2f, 0xad, 0x71, 0x74, 0x3c, 0x49, - 0xef, 0xdd, 0x87, 0xcb, 0x12, 0xe7, 0x41, 0xc8, 0x78, 0x42, 0x4f, 0x33, 0xad, 0x97, 0x01, 0xb6, - 0x3a, 0x3c, 0x3c, 0x21, 0x8f, 0xe3, 0x48, 0x95, 0xd1, 0x1a, 0x36, 0x76, 0xb2, 0x12, 0x59, 0x18, - 0x95, 0xc8, 0xdf, 0x5a, 0x70, 0xc9, 0xe4, 0xb4, 0x73, 0x22, 0x2e, 0x84, 0x3b, 0x50, 0xe2, 0x59, - 0xa7, 0xb2, 0x98, 0x27, 0xe6, 0x14, 0x89, 0x68, 0x66, 0xb0, 0x24, 0x32, 0x6c, 0xa9, 0x52, 0xe3, - 0xda, 0xd9, 0xe4, 0x13, 0xb6, 0xfc, 0x5b, 0x15, 0xd0, 0xf4, 0x71, 0xce, 0x58, 0x68, 0xce, 0x55, - 0x85, 0x89, 0xb9, 0xea, 0xab, 0xc9, 0xb9, 0x4a, 0x15, 0xdf, 0x5b, 0xf3, 0x48, 0x32, 0xc7, 0x74, - 0x75, 0x1b, 0xea, 0x59, 0xff, 0x92, 0x95, 0x68, 0x77, 0x9a, 0xf5, 0xb0, 0xc5, 0x19, 0x21, 0xa3, - 0xb5, 0xac, 0xa6, 0xa8, 0x6a, 0x86, 0xb2, 0x5b, 0x83, 0xa6, 0x1d, 0x5f, 0x77, 0x0e, 0xba, 0xce, - 0xdc, 0xbd, 0xd8, 0x93, 0x41, 0x69, 0xf2, 0xb9, 0xa0, 0x05, 0x8d, 0xed, 0xec, 0x2a, 0xbc, 0xc0, - 0x7b, 0x81, 0x49, 0x84, 0xd6, 0x75, 0xeb, 0xa2, 0x2e, 0xdf, 0xef, 0x4f, 0xab, 0x98, 0xbd, 0x0d, - 0x24, 0x54, 0xf7, 0x2e, 0x47, 0x39, 0xcd, 0x63, 0x5d, 0x1a, 0x68, 0x73, 0x2e, 0xdb, 0xcf, 0xd9, - 0x41, 0xa2, 0xcf, 0xa0, 0x82, 0x09, 0x1b, 0x44, 0x5c, 0x3e, 0x42, 0x34, 0x36, 0xae, 0xce, 0xe0, - 0xae, 0x90, 0x64, 0x36, 0x6a, 0x02, 0xf4, 0x73, 0xa8, 0xaa, 0x15, 0x73, 0x1a, 0xb3, 0xa6, 0xed, - 0x1c, 0xc9, 0x34, 0x8d, 0x1e, 0x19, 0x34, 0x24, 0x12, 0xee, 0x3e, 0x89, 0x89, 0x7e, 0x1c, 0xb3, - 0x57, 0xad, 0xb5, 0x32, 0x36, 0x76, 0xde, 0xc2, 0x34, 0xf9, 0x36, 0x7a, 0x65, 0xf7, 0x2b, 0xb0, - 0x4d, 0xf9, 0x73, 0x68, 0x6f, 0x8d, 0xcf, 0xa2, 0x73, 0xd8, 0xd3, 0x68, 0xc5, 0xff, 0x54, 0x00, - 0x18, 0x85, 0x02, 0xfa, 0x00, 0xa0, 0x4f, 0xba, 0x61, 0xf0, 0x4b, 0x3e, 0x9a, 0x76, 0xea, 0x72, - 0x47, 0x8e, 0x3c, 0xa3, 0xbe, 0xb4, 0xf0, 0xc6, 0x7d, 0x29, 0x82, 0x12, 0x0b, 0xbf, 0x25, 0xba, - 0x86, 0xca, 0x35, 0x7a, 0x0c, 0x8d, 0x20, 0x8e, 0x13, 0x2e, 0x3d, 0x90, 0x4d, 0x82, 0x37, 0xcf, - 0x0a, 0x5e, 0x7f, 0x6b, 0x84, 0xaf, 0x1c, 0x6c, 0x72, 0x70, 0xef, 0xc2, 0xd2, 0x24, 0xc2, 0x85, - 0x26, 0x95, 0xdf, 0x58, 0xf0, 0xee, 0x84, 0xf5, 0xd0, 0x27, 0xc3, 0x00, 0xb6, 0xe6, 0x48, 0xae, - 0x2c, 0x76, 0xef, 0x81, 0xbd, 0xc5, 0xb9, 0x48, 0x58, 0xa5, 0x9b, 0x9a, 0x45, 0xce, 0xa6, 0x1d, - 0xa3, 0xf0, 0x7e, 0x6f, 0x8d, 0x5e, 0xc7, 0x72, 0x07, 0xd2, 0x3b, 0xe3, 0x03, 0xe9, 0xf5, 0xd9, - 0xf7, 0xda, 0xdb, 0x9c, 0x43, 0x6f, 0xfc, 0x14, 0xde, 0xcb, 0xad, 0x29, 0xa8, 0x01, 0xd5, 0xfd, - 0x83, 0x2d, 0x7c, 0xb0, 0xd3, 0x5e, 0x7a, 0x07, 0xd9, 0x50, 0xdb, 0x7e, 0xbc, 0xf7, 0xe4, 0xd1, - 0xce, 0xc1, 0xce, 0x92, 0x25, 0x8e, 0xda, 0x3b, 0x62, 0xdd, 0x5e, 0x2a, 0x6c, 0xfc, 0xb1, 0x0c, - 0xd5, 0x6d, 0xf5, 0xd4, 0x8f, 0x0e, 0xa0, 0x3e, 0x7c, 0x3a, 0x46, 0x5e, 0x8e, 0x75, 0x26, 0xde, - 0xa0, 0xdd, 0x0f, 0xcf, 0xc4, 0xd1, 0x77, 0xce, 0x03, 0x28, 0xcb, 0x47, 0x74, 0x94, 0x33, 0xfb, - 0x99, 0xaf, 0xeb, 0xee, 0xd9, 0x8f, 0xd2, 0xeb, 0x96, 0xe0, 0x24, 0x07, 0xe7, 0x3c, 0x4e, 0xe6, - 0x93, 0x97, 0xbb, 0x72, 0xce, 0xc4, 0x8d, 0xf6, 0xa0, 0xa2, 0xa7, 0x89, 0x3c, 0x54, 0x73, 0x3c, - 0x76, 0x57, 0x67, 0x23, 0x28, 0x66, 0xeb, 0x16, 0xda, 0x1b, 0xbe, 0x62, 0xe6, 0x89, 0x66, 0xb6, - 0x62, 0xee, 0x39, 0xe7, 0x6b, 0xd6, 0xba, 0x85, 0xbe, 0x84, 0x86, 0xd1, 0x6c, 0xa1, 0x9c, 0x46, - 0x60, 0xba, 0x73, 0x73, 0xaf, 0x9f, 0x83, 0xa5, 0x35, 0xdf, 0x81, 0x92, 0x4c, 0xa4, 0x1c, 0x63, - 0x1b, 0xbd, 0x58, 0x9e, 0x98, 0x63, 0xbd, 0xd9, 0xa1, 0xea, 0x1e, 0x49, 0x6c, 0x46, 0x1f, 0xba, - 0x7e, 0x5e, 0x49, 0x98, 0x19, 0x36, 0x53, 0x41, 0xbc, 0x6e, 0xb5, 0xec, 0x17, 0xaf, 0x96, 0xad, - 0x7f, 0xbe, 0x5a, 0xb6, 0xfe, 0xfd, 0x6a, 0xd9, 0x3a, 0xac, 0xc8, 0xda, 0xfb, 0xc3, 0xff, 0x07, - 0x00, 0x00, 0xff, 0xff, 0x0d, 0xf5, 0x52, 0x93, 0x99, 0x1a, 0x00, 0x00, + // 2213 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x59, 0xcd, 0x6e, 0x1b, 0xc9, + 0x11, 0xf6, 0x90, 0x12, 0x7f, 0x8a, 0x94, 0x56, 0x6e, 0x7b, 0x8d, 0xc9, 0xc4, 0x2b, 0xc9, 0xb3, + 0x36, 0x22, 0x38, 0xf6, 0x50, 0xab, 0xac, 0x63, 0xaf, 0x9c, 0x38, 0x16, 0x45, 0x66, 0x2d, 0xc7, + 0x86, 0xb5, 0x2d, 0x79, 0x0d, 0x2c, 0xe0, 0x04, 0x23, 0xb2, 0x45, 0x0f, 0x34, 0x9c, 0x99, 0x74, + 0x37, 0xb5, 0xe6, 0x3e, 0x40, 0x80, 0xcd, 0x21, 0xc8, 0x25, 0xc8, 0x25, 0xf7, 0x9c, 0x72, 0xce, + 0x13, 0x04, 0xf0, 0x31, 0xe7, 0x3d, 0x38, 0x81, 0x1f, 0x20, 0xc8, 0x31, 0x97, 0x00, 0x8b, 0xfe, + 0x19, 0xb2, 0x49, 0x0e, 0x25, 0xca, 0xf6, 0x89, 0x5d, 0xdd, 0x55, 0x35, 0x55, 0xd5, 0xd5, 0xd5, + 0x5f, 0x35, 0x61, 0xa1, 0x15, 0x47, 0x9c, 0xc6, 0xa1, 0x97, 0xd0, 0x98, 0xc7, 0x68, 0xa9, 0x1b, + 0x1f, 0xf4, 0xbd, 0x83, 0x5e, 0x10, 0xb6, 0x8f, 0x02, 0xee, 0x1d, 0x7f, 0xe2, 0xdc, 0xec, 0x04, + 0xfc, 0x45, 0xef, 0xc0, 0x6b, 0xc5, 0xdd, 0x5a, 0x27, 0xee, 0xc4, 0x35, 0xc9, 0x78, 0xd0, 0x3b, + 0x94, 0x94, 0x24, 0xe4, 0x48, 0x29, 0x70, 0x56, 0x3a, 0x71, 0xdc, 0x09, 0xc9, 0x90, 0x8b, 0x07, + 0x5d, 0xc2, 0xb8, 0xdf, 0x4d, 0x34, 0xc3, 0x0d, 0x43, 0x9f, 0xf8, 0x58, 0x2d, 0xfd, 0x58, 0x8d, + 0xc5, 0xe1, 0x31, 0xa1, 0xb5, 0xe4, 0xa0, 0x16, 0x27, 0x4c, 0x73, 0xd7, 0xa6, 0x72, 0xfb, 0x49, + 0x50, 0xe3, 0xfd, 0x84, 0xb0, 0xda, 0xd7, 0x31, 0x3d, 0x22, 0x54, 0x0b, 0x6c, 0x8c, 0x9b, 0xab, + 0xec, 0xf1, 0x93, 0x80, 0xe9, 0x61, 0x8d, 0x26, 0xad, 0x1a, 0xe3, 0x3e, 0xef, 0xa5, 0x1f, 0xb9, + 0x75, 0x82, 0x49, 0x3d, 0xda, 0x22, 0x49, 0x1c, 0x06, 0xad, 0xbe, 0x30, 0x4c, 0x8d, 0x94, 0x98, + 0xfb, 0x3b, 0x0b, 0xaa, 0xbb, 0xb4, 0x17, 0x11, 0x4c, 0x7e, 0xdb, 0x23, 0x8c, 0xa3, 0x4b, 0x50, + 0x38, 0x0c, 0x42, 0x4e, 0xa8, 0x6d, 0xad, 0xe6, 0xd7, 0xca, 0x58, 0x53, 0x68, 0x09, 0xf2, 0x7e, + 0x18, 0xda, 0xb9, 0x55, 0x6b, 0xad, 0x84, 0xc5, 0x10, 0xad, 0x41, 0xf5, 0x88, 0x90, 0xa4, 0xd1, + 0xa3, 0x3e, 0x0f, 0xe2, 0xc8, 0xce, 0xaf, 0x5a, 0x6b, 0xf9, 0xfa, 0xdc, 0xab, 0xd7, 0x2b, 0x16, + 0x1e, 0x59, 0x41, 0x2e, 0x94, 0x05, 0x5d, 0xef, 0x73, 0xc2, 0xec, 0x39, 0x83, 0x6d, 0x38, 0xed, + 0x5e, 0x87, 0xa5, 0x46, 0xc0, 0x8e, 0x9e, 0x32, 0xbf, 0x73, 0x9a, 0x2d, 0xee, 0x43, 0x38, 0x6f, + 0xf0, 0xb2, 0x24, 0x8e, 0x18, 0x41, 0xb7, 0xa0, 0x40, 0x49, 0x2b, 0xa6, 0x6d, 0xc9, 0x5c, 0xd9, + 0xf8, 0xc8, 0x1b, 0x4f, 0x03, 0x4f, 0x0b, 0x08, 0x26, 0xac, 0x99, 0xdd, 0x3f, 0xe7, 0xa1, 0x62, + 0xcc, 0xa3, 0x45, 0xc8, 0xed, 0x34, 0x6c, 0x6b, 0xd5, 0x5a, 0x2b, 0xe3, 0xdc, 0x4e, 0x03, 0xd9, + 0x50, 0x7c, 0xdc, 0xe3, 0xfe, 0x41, 0x48, 0xb4, 0xef, 0x29, 0x89, 0x2e, 0xc2, 0xfc, 0x4e, 0xf4, + 0x94, 0x11, 0xe9, 0x78, 0x09, 0x2b, 0x02, 0x21, 0x98, 0xdb, 0x0b, 0xbe, 0x21, 0xca, 0x4d, 0x2c, + 0xc7, 0xc8, 0x81, 0xc2, 0xae, 0x4f, 0x49, 0xc4, 0xed, 0x79, 0xa1, 0xb7, 0x9e, 0xb3, 0x2d, 0xac, + 0x67, 0x50, 0x1d, 0xca, 0xdb, 0x94, 0xf8, 0x9c, 0xb4, 0xb7, 0xb8, 0x5d, 0x58, 0xb5, 0xd6, 0x2a, + 0x1b, 0x8e, 0xa7, 0x36, 0xd9, 0x4b, 0xf3, 0xcf, 0xdb, 0x4f, 0xf3, 0xaf, 0x5e, 0x7a, 0xf5, 0x7a, + 0xe5, 0xdc, 0x1f, 0xff, 0x25, 0x62, 0x37, 0x10, 0x43, 0xf7, 0x01, 0x1e, 0xf9, 0x8c, 0x3f, 0x65, + 0x52, 0x49, 0xf1, 0x54, 0x25, 0x73, 0x52, 0x81, 0x21, 0x83, 0x96, 0x01, 0x64, 0x10, 0xb6, 0xe3, + 0x5e, 0xc4, 0xed, 0x92, 0xb4, 0xdd, 0x98, 0x41, 0xab, 0x50, 0x69, 0x10, 0xd6, 0xa2, 0x41, 0x22, + 0xb7, 0xba, 0x2c, 0xc3, 0x63, 0x4e, 0x09, 0x0d, 0x2a, 0x82, 0xfb, 0xfd, 0x84, 0xd8, 0x20, 0x19, + 0x8c, 0x19, 0xb1, 0x97, 0x7b, 0x2f, 0x7c, 0x4a, 0xda, 0x76, 0x45, 0x86, 0x4b, 0x53, 0x22, 0xbe, + 0x2a, 0x12, 0xcc, 0xae, 0xca, 0x4d, 0x4e, 0x49, 0xf7, 0xf7, 0x45, 0xa8, 0xee, 0x89, 0xe3, 0x94, + 0xa6, 0xc3, 0x12, 0xe4, 0x31, 0x39, 0xd4, 0x7b, 0x23, 0x86, 0xc8, 0x03, 0x68, 0x90, 0xc3, 0x20, + 0x0a, 0xa4, 0x55, 0x39, 0xe9, 0xf8, 0xa2, 0x97, 0x1c, 0x78, 0xc3, 0x59, 0x6c, 0x70, 0x20, 0x07, + 0x4a, 0xcd, 0x97, 0x49, 0x4c, 0x45, 0x4a, 0xe5, 0xa5, 0x9a, 0x01, 0x8d, 0x9e, 0xc1, 0x42, 0x3a, + 0xde, 0xe2, 0x9c, 0x8a, 0x44, 0x15, 0x69, 0xf4, 0xc9, 0x64, 0x1a, 0x99, 0x46, 0x79, 0x23, 0x32, + 0xcd, 0x88, 0xd3, 0x3e, 0x1e, 0xd5, 0x23, 0x3c, 0xdc, 0x23, 0x8c, 0x09, 0x0b, 0xe5, 0xf6, 0xe3, + 0x94, 0x14, 0xe6, 0xfc, 0x92, 0xc6, 0x11, 0x27, 0x51, 0x5b, 0x6e, 0x7d, 0x19, 0x0f, 0x68, 0x61, + 0x4e, 0x3a, 0x56, 0xe6, 0x14, 0x67, 0x32, 0x67, 0x44, 0x46, 0x9b, 0x33, 0x32, 0x87, 0x36, 0x61, + 0x7e, 0xdb, 0x6f, 0xbd, 0x20, 0x72, 0x97, 0x2b, 0x1b, 0xcb, 0x93, 0x0a, 0xe5, 0xf2, 0x13, 0xb9, + 0xad, 0x4c, 0x1e, 0xd4, 0x73, 0x58, 0x89, 0xa0, 0x5f, 0x43, 0xb5, 0x19, 0xf1, 0x80, 0x87, 0xa4, + 0x2b, 0x77, 0xac, 0x2c, 0x76, 0xac, 0xbe, 0xf9, 0xdd, 0xeb, 0x95, 0x9f, 0x4e, 0x2d, 0x3f, 0x3d, + 0x1e, 0x84, 0x35, 0x62, 0x48, 0x79, 0x86, 0x0a, 0x3c, 0xa2, 0x0f, 0x7d, 0x05, 0x8b, 0xa9, 0xb1, + 0x3b, 0x51, 0xd2, 0xe3, 0xcc, 0x06, 0xe9, 0xf5, 0xc6, 0x8c, 0x5e, 0x2b, 0x21, 0xe5, 0xf6, 0x98, + 0x26, 0x11, 0xec, 0x9d, 0x88, 0x13, 0x1a, 0xf9, 0xa1, 0x4e, 0xc1, 0x01, 0x8d, 0x76, 0x44, 0xa6, + 0x89, 0x2a, 0xb9, 0x2b, 0x6b, 0xa3, 0x5d, 0x95, 0xa1, 0xb9, 0x36, 0xf9, 0x55, 0xb3, 0x96, 0x7a, + 0x8a, 0x19, 0x8f, 0x88, 0x3a, 0xf7, 0x01, 0x4d, 0xa6, 0x84, 0x48, 0xdd, 0x23, 0xd2, 0x4f, 0x53, + 0xf7, 0x88, 0xf4, 0x45, 0xf5, 0x38, 0xf6, 0xc3, 0x9e, 0xaa, 0x2a, 0x65, 0xac, 0x88, 0xcd, 0xdc, + 0x1d, 0x4b, 0x68, 0x98, 0xdc, 0xc5, 0x33, 0x69, 0xf8, 0x02, 0x2e, 0x64, 0x44, 0x24, 0x43, 0xc5, + 0x55, 0x53, 0xc5, 0xe4, 0xd1, 0x19, 0xaa, 0x74, 0xff, 0x96, 0x87, 0xaa, 0x99, 0x17, 0x68, 0x1d, + 0x2e, 0x28, 0x3f, 0x31, 0x39, 0x6c, 0x90, 0x84, 0x92, 0x96, 0x28, 0x46, 0x5a, 0x79, 0xd6, 0x12, + 0xda, 0x80, 0x8b, 0x3b, 0x5d, 0x3d, 0xcd, 0x0c, 0x91, 0x9c, 0x3c, 0xf6, 0x99, 0x6b, 0x28, 0x86, + 0x0f, 0x95, 0x2a, 0x19, 0x09, 0x43, 0x28, 0x2f, 0xf3, 0xe2, 0xb3, 0x93, 0x93, 0xd7, 0xcb, 0x94, + 0x55, 0xe9, 0x91, 0xad, 0x17, 0xfd, 0x1c, 0x8a, 0x6a, 0x21, 0x3d, 0xff, 0x1f, 0x9f, 0xfc, 0x09, + 0xa5, 0x2c, 0x95, 0x11, 0xe2, 0xca, 0x0f, 0x66, 0xcf, 0x9f, 0x41, 0x5c, 0xcb, 0x38, 0x0f, 0xc0, + 0x99, 0x6e, 0xf2, 0x59, 0x52, 0xc0, 0xfd, 0xab, 0x05, 0xe7, 0x27, 0x3e, 0x24, 0x2e, 0x27, 0x59, + 0x9e, 0x95, 0x0a, 0x39, 0x46, 0x0d, 0x98, 0x57, 0x05, 0x26, 0x27, 0x0d, 0xf6, 0x66, 0x30, 0xd8, + 0x33, 0xaa, 0x8b, 0x12, 0x76, 0xee, 0x00, 0xbc, 0x5d, 0xb2, 0xba, 0x7f, 0xb7, 0x60, 0x41, 0x1f, + 0x66, 0x7d, 0x93, 0xfb, 0xb0, 0x94, 0x1e, 0xa1, 0x74, 0x4e, 0xdf, 0xe9, 0xb7, 0xa6, 0xd6, 0x01, + 0xc5, 0xe6, 0x8d, 0xcb, 0x29, 0x1b, 0x27, 0xd4, 0x39, 0xdb, 0x69, 0x5e, 0x8d, 0xb1, 0x9e, 0xc9, + 0xf2, 0x2b, 0xb0, 0xb0, 0x27, 0x21, 0xd8, 0xd4, 0x0b, 0xca, 0xfd, 0xaf, 0x05, 0x8b, 0x29, 0x8f, + 0xf6, 0xee, 0x53, 0x28, 0x1d, 0x13, 0xca, 0xc9, 0x4b, 0xc2, 0xb4, 0x57, 0xf6, 0xa4, 0x57, 0x5f, + 0x4a, 0x0e, 0x3c, 0xe0, 0x44, 0x9b, 0x50, 0x52, 0x70, 0x8f, 0xa4, 0x1b, 0xb5, 0x3c, 0x4d, 0x4a, + 0x7f, 0x6f, 0xc0, 0x8f, 0x6a, 0x30, 0x17, 0xc6, 0x1d, 0xa6, 0xcf, 0xcc, 0x0f, 0xa7, 0xc9, 0x3d, + 0x8a, 0x3b, 0x58, 0x32, 0xa2, 0xbb, 0x50, 0xfa, 0xda, 0xa7, 0x51, 0x10, 0x75, 0xd2, 0x53, 0xb0, + 0x32, 0x4d, 0xe8, 0x99, 0xe2, 0xc3, 0x03, 0x01, 0x01, 0xa8, 0x0a, 0x6a, 0x0d, 0x3d, 0x84, 0x42, + 0x3b, 0xe8, 0x10, 0xc6, 0x55, 0x48, 0xea, 0x1b, 0xe2, 0x2e, 0xf9, 0xee, 0xf5, 0xca, 0x75, 0xe3, + 0xb2, 0x88, 0x13, 0x12, 0x09, 0xf8, 0xee, 0x07, 0x11, 0xa1, 0x02, 0xde, 0xde, 0x54, 0x22, 0x5e, + 0x43, 0xfe, 0x60, 0xad, 0x41, 0xe8, 0x0a, 0xd4, 0x95, 0x20, 0xeb, 0xc5, 0xdb, 0xe9, 0x52, 0x1a, + 0xc4, 0x31, 0x88, 0xfc, 0x2e, 0xd1, 0x10, 0x40, 0x8e, 0x05, 0x3e, 0x69, 0x89, 0x3c, 0x6f, 0x4b, + 0xe4, 0x56, 0xc2, 0x9a, 0x42, 0x9b, 0x50, 0x64, 0xdc, 0xa7, 0xa2, 0xe6, 0xcc, 0xcf, 0x08, 0xac, + 0x52, 0x01, 0x74, 0x0f, 0xca, 0xad, 0xb8, 0x9b, 0x84, 0x44, 0x48, 0x17, 0x66, 0x94, 0x1e, 0x8a, + 0x88, 0xd4, 0x23, 0x94, 0xc6, 0x54, 0x42, 0xba, 0x32, 0x56, 0x04, 0xba, 0x0d, 0x0b, 0x09, 0x8d, + 0x3b, 0x94, 0x30, 0xf6, 0x39, 0x8d, 0x7b, 0x89, 0xbe, 0xc8, 0xcf, 0x8b, 0xe2, 0xbd, 0x6b, 0x2e, + 0xe0, 0x51, 0x3e, 0xf7, 0x3f, 0x39, 0xa8, 0x9a, 0x29, 0x32, 0x81, 0x75, 0x1f, 0x42, 0x41, 0x25, + 0x9c, 0xca, 0xf5, 0xb7, 0x8b, 0xb1, 0xd2, 0x90, 0x19, 0x63, 0x1b, 0x8a, 0xad, 0x1e, 0x95, 0x40, + 0x58, 0xc1, 0xe3, 0x94, 0x14, 0x9e, 0xf2, 0x98, 0xfb, 0xa1, 0x8c, 0x71, 0x1e, 0x2b, 0x42, 0x60, + 0xe3, 0x41, 0xe7, 0x75, 0x36, 0x6c, 0x3c, 0x10, 0x33, 0xf7, 0xaf, 0xf8, 0x4e, 0xfb, 0x57, 0x3a, + 0xf3, 0xfe, 0xb9, 0xff, 0xb0, 0xa0, 0x3c, 0x38, 0x5b, 0x46, 0x74, 0xad, 0x77, 0x8e, 0xee, 0x48, + 0x64, 0x72, 0x6f, 0x17, 0x99, 0x4b, 0x50, 0x60, 0x9c, 0x12, 0xbf, 0xab, 0x3a, 0x37, 0xac, 0x29, + 0x51, 0xc5, 0xba, 0xac, 0x23, 0x77, 0xa8, 0x8a, 0xc5, 0xd0, 0xfd, 0x9f, 0x05, 0x0b, 0x23, 0xc7, + 0xfd, 0xbd, 0xfa, 0x72, 0x11, 0xe6, 0x43, 0x72, 0x4c, 0x54, 0x6f, 0x99, 0xc7, 0x8a, 0x10, 0xb3, + 0xec, 0x45, 0x4c, 0xb9, 0x34, 0xae, 0x8a, 0x15, 0x21, 0x6c, 0x6e, 0x13, 0xee, 0x07, 0xa1, 0xac, + 0x4b, 0x55, 0xac, 0x29, 0x61, 0x73, 0x8f, 0x86, 0x1a, 0x5f, 0x8b, 0x21, 0x72, 0x61, 0x2e, 0x88, + 0x0e, 0x63, 0x9d, 0x36, 0x12, 0xd9, 0x28, 0x9c, 0xb6, 0x13, 0x1d, 0xc6, 0x58, 0xae, 0xa1, 0x2b, + 0x50, 0xa0, 0x7e, 0xd4, 0x21, 0x29, 0xb8, 0x2e, 0x0b, 0x2e, 0x2c, 0x66, 0xb0, 0x5e, 0x70, 0x5d, + 0xa8, 0xca, 0xfe, 0xf4, 0x31, 0x61, 0xa2, 0x1b, 0x12, 0x69, 0xdd, 0xf6, 0xb9, 0x2f, 0xdd, 0xae, + 0x62, 0x39, 0x76, 0x6f, 0x00, 0x7a, 0x14, 0x30, 0xfe, 0x4c, 0xb6, 0xf0, 0xec, 0xb4, 0xe6, 0x75, + 0x0f, 0x2e, 0x8c, 0x70, 0xeb, 0x6b, 0xe1, 0x67, 0x63, 0xed, 0xeb, 0xd5, 0xc9, 0x8a, 0x2b, 0x5f, + 0x0a, 0x3c, 0x25, 0x38, 0xd6, 0xc5, 0x2e, 0x40, 0x45, 0xfa, 0xa5, 0xbe, 0xed, 0xfa, 0x50, 0x55, + 0xa4, 0x56, 0xfe, 0x05, 0x7c, 0x90, 0x2a, 0xfa, 0x92, 0x50, 0xd9, 0x8a, 0x58, 0x32, 0x2e, 0x3f, + 0x9a, 0xf6, 0x95, 0xfa, 0x28, 0x3b, 0x1e, 0x97, 0x77, 0x09, 0x5c, 0x90, 0x3c, 0x0f, 0x02, 0xc6, + 0x63, 0xda, 0x4f, 0xbd, 0x5e, 0x06, 0xd8, 0x6a, 0xf1, 0xe0, 0x98, 0x3c, 0x89, 0x42, 0x75, 0x8d, + 0x96, 0xb0, 0x31, 0x93, 0x5e, 0x91, 0xb9, 0x61, 0x0f, 0x77, 0x19, 0xca, 0x4d, 0x9f, 0x86, 0xfd, + 0xe6, 0xcb, 0x80, 0xeb, 0x56, 0x7a, 0x38, 0xe1, 0xfe, 0xc1, 0x82, 0xf3, 0xe6, 0x77, 0x9a, 0xc7, + 0xa2, 0x5c, 0xdc, 0x85, 0x39, 0x9e, 0xe2, 0x98, 0xc5, 0x2c, 0x27, 0x26, 0x44, 0x04, 0xd4, 0xc1, + 0x52, 0xc8, 0x88, 0xb4, 0x3a, 0x38, 0x57, 0x4f, 0x16, 0x1f, 0x8b, 0xf4, 0xff, 0x8b, 0x80, 0x26, + 0x97, 0x33, 0x7a, 0x53, 0xb3, 0xb9, 0xcb, 0x8d, 0x35, 0x77, 0xcf, 0xc7, 0x9b, 0x3b, 0x75, 0x35, + 0xdf, 0x9e, 0xc5, 0x92, 0x19, 0x5a, 0xbc, 0x3b, 0x50, 0x4e, 0xd1, 0x4d, 0x7a, 0x81, 0x3b, 0x93, + 0xaa, 0x07, 0x00, 0x68, 0xc8, 0x8c, 0xd6, 0xd2, 0x1b, 0x47, 0xdd, 0x75, 0x28, 0xad, 0x29, 0x34, + 0x69, 0x79, 0x1a, 0x57, 0xe8, 0x5b, 0xe8, 0xde, 0xd9, 0xde, 0x2d, 0xe6, 0xc6, 0xdf, 0x2c, 0xea, + 0x50, 0xd9, 0x4e, 0x0b, 0xe5, 0x19, 0x1e, 0x2d, 0x4c, 0x21, 0xb4, 0xae, 0x81, 0x8d, 0x2a, 0xcd, + 0x97, 0x27, 0x5d, 0x4c, 0x1f, 0x28, 0x62, 0xaa, 0x91, 0xcd, 0x61, 0x06, 0xb4, 0x2c, 0xcb, 0x00, + 0x6d, 0xce, 0x14, 0xfb, 0x19, 0xf1, 0x25, 0xfa, 0x0c, 0x0a, 0x98, 0xb0, 0x5e, 0xc8, 0xe5, 0x4b, + 0x48, 0x65, 0xe3, 0xca, 0x14, 0xed, 0x8a, 0x49, 0x9e, 0x55, 0x2d, 0x80, 0x7e, 0x05, 0x45, 0x35, + 0x62, 0x76, 0x65, 0x5a, 0xcb, 0x9f, 0x61, 0x99, 0x96, 0xd1, 0x0d, 0x85, 0xa6, 0xc4, 0x71, 0xfc, + 0x9c, 0x44, 0x44, 0xbf, 0xd0, 0x89, 0xb6, 0x76, 0x1e, 0x1b, 0x33, 0x68, 0x03, 0xe6, 0x39, 0xf5, + 0x5b, 0xc4, 0x5e, 0x98, 0x21, 0x84, 0x8a, 0x55, 0x14, 0xb6, 0x24, 0x88, 0x22, 0xd2, 0xb6, 0x17, + 0x15, 0x52, 0x52, 0xd4, 0x7b, 0xe8, 0x5b, 0xdf, 0x07, 0x2a, 0x77, 0x9e, 0x43, 0xd5, 0x8c, 0x45, + 0x86, 0xec, 0xed, 0xd1, 0xae, 0x77, 0x86, 0xbd, 0x31, 0x40, 0xff, 0x73, 0xf8, 0xc1, 0xd3, 0xa4, + 0xed, 0x73, 0x92, 0x55, 0xfd, 0x26, 0xab, 0xc0, 0x25, 0x28, 0xec, 0xaa, 0x60, 0xa9, 0xd7, 0x43, + 0x4d, 0x89, 0xf9, 0x06, 0x11, 0x79, 0xac, 0x4b, 0x9e, 0xa6, 0xdc, 0xcb, 0xe0, 0x64, 0xa9, 0x57, + 0xc1, 0x70, 0xff, 0x92, 0x03, 0x18, 0x6e, 0x08, 0xfa, 0x08, 0xa0, 0x4b, 0xda, 0x81, 0xff, 0x1b, + 0x3e, 0x6c, 0xea, 0xca, 0x72, 0x46, 0x76, 0x76, 0x43, 0xf8, 0x9d, 0x7b, 0x67, 0xf8, 0x8d, 0x60, + 0x8e, 0x05, 0xdf, 0x10, 0x0d, 0x15, 0xe4, 0x18, 0x3d, 0x81, 0x8a, 0x1f, 0x45, 0x31, 0x97, 0xa9, + 0x94, 0x36, 0xbc, 0x37, 0x4f, 0x4a, 0x21, 0x6f, 0x6b, 0xc8, 0xaf, 0x32, 0xd5, 0xd4, 0xe0, 0xdc, + 0x83, 0xa5, 0x71, 0x86, 0x33, 0x35, 0x64, 0xdf, 0x5a, 0xf0, 0xc1, 0xd8, 0xd6, 0xa1, 0x4f, 0x07, + 0x27, 0xd1, 0x9a, 0x21, 0xc5, 0xd3, 0x43, 0x78, 0x1f, 0xaa, 0x5b, 0x9c, 0x8b, 0xca, 0xa3, 0x7c, + 0x53, 0x2d, 0xd7, 0xc9, 0xb2, 0x23, 0x12, 0xee, 0x9f, 0xac, 0xe1, 0x5b, 0x63, 0x66, 0xdf, 0x7d, + 0x77, 0xb4, 0xef, 0xbe, 0x36, 0xbd, 0x40, 0xbf, 0xcf, 0x76, 0xfb, 0xfa, 0x2f, 0xe0, 0xc3, 0xcc, + 0xcb, 0x11, 0x55, 0xa0, 0xb8, 0xb7, 0xbf, 0x85, 0xf7, 0x9b, 0x8d, 0xa5, 0x73, 0xa8, 0x0a, 0xa5, + 0xed, 0x27, 0x8f, 0x77, 0x1f, 0x35, 0xf7, 0x9b, 0x4b, 0x96, 0x58, 0x6a, 0x34, 0xc5, 0xb8, 0xb1, + 0x94, 0xdb, 0xf8, 0xb6, 0x00, 0xc5, 0x6d, 0xf5, 0x7f, 0x0b, 0xda, 0x87, 0xf2, 0xe0, 0x21, 0x1e, + 0xb9, 0x19, 0xd1, 0x19, 0x7b, 0xd1, 0x77, 0x3e, 0x3e, 0x91, 0x47, 0x17, 0xcf, 0x07, 0x30, 0x2f, + 0xff, 0x92, 0x40, 0x19, 0x2d, 0xae, 0xf9, 0x5f, 0x85, 0x73, 0xf2, 0x13, 0xff, 0xba, 0x25, 0x34, + 0xc9, 0xf7, 0x81, 0x2c, 0x4d, 0xe6, 0x03, 0xa2, 0xb3, 0x72, 0xca, 0xc3, 0x02, 0x7a, 0x0c, 0x05, + 0xdd, 0x34, 0x65, 0xb1, 0x9a, 0xaf, 0x00, 0xce, 0xea, 0x74, 0x06, 0xa5, 0x6c, 0xdd, 0x42, 0x8f, + 0x07, 0x6f, 0xc2, 0x59, 0xa6, 0x99, 0x88, 0xd3, 0x39, 0x65, 0x7d, 0xcd, 0x5a, 0xb7, 0xd0, 0x57, + 0x50, 0x31, 0x30, 0x25, 0xca, 0x40, 0x34, 0x93, 0x00, 0xd5, 0xb9, 0x76, 0x0a, 0x97, 0xf6, 0xbc, + 0x09, 0x73, 0xf2, 0x20, 0x65, 0x04, 0xdb, 0x80, 0x9c, 0x59, 0x66, 0x8e, 0x40, 0xd0, 0x03, 0x05, + 0x92, 0x49, 0x64, 0x66, 0x1f, 0xba, 0x76, 0xda, 0xdd, 0x36, 0x35, 0x6d, 0x26, 0x92, 0x78, 0xdd, + 0x42, 0x31, 0xa0, 0xc9, 0xe2, 0x89, 0x7e, 0x9c, 0x91, 0x25, 0xd3, 0x2a, 0xb8, 0x73, 0x63, 0x36, + 0x66, 0xe5, 0x54, 0xbd, 0xfa, 0xea, 0xcd, 0xb2, 0xf5, 0xcf, 0x37, 0xcb, 0xd6, 0xbf, 0xdf, 0x2c, + 0x5b, 0x07, 0x05, 0x89, 0x5a, 0x7e, 0xf2, 0x7d, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0xdc, 0xb1, + 0x33, 0x8f, 0x1c, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1969,6 +2124,7 @@ type ControlClient interface { ListWorkers(ctx context.Context, in *ListWorkersRequest, opts ...grpc.CallOption) (*ListWorkersResponse, error) Info(ctx context.Context, in *InfoRequest, opts ...grpc.CallOption) (*InfoResponse, error) ListenBuildHistory(ctx context.Context, in *BuildHistoryRequest, opts ...grpc.CallOption) (Control_ListenBuildHistoryClient, error) + UpdateBuildHistory(ctx context.Context, in *UpdateBuildHistoryRequest, opts ...grpc.CallOption) (*UpdateBuildHistoryResponse, error) } type controlClient struct { @@ -2142,6 +2298,15 @@ func (x *controlListenBuildHistoryClient) Recv() (*BuildHistoryEvent, error) { return m, nil } +func (c *controlClient) UpdateBuildHistory(ctx context.Context, in *UpdateBuildHistoryRequest, opts ...grpc.CallOption) (*UpdateBuildHistoryResponse, error) { + out := new(UpdateBuildHistoryResponse) + err := c.cc.Invoke(ctx, "/moby.buildkit.v1.Control/UpdateBuildHistory", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // ControlServer is the server API for Control service. type ControlServer interface { DiskUsage(context.Context, *DiskUsageRequest) (*DiskUsageResponse, error) @@ -2152,6 +2317,7 @@ type ControlServer interface { ListWorkers(context.Context, *ListWorkersRequest) (*ListWorkersResponse, error) Info(context.Context, *InfoRequest) (*InfoResponse, error) ListenBuildHistory(*BuildHistoryRequest, Control_ListenBuildHistoryServer) error + UpdateBuildHistory(context.Context, *UpdateBuildHistoryRequest) (*UpdateBuildHistoryResponse, error) } // UnimplementedControlServer can be embedded to have forward compatible implementations. @@ -2182,6 +2348,9 @@ func (*UnimplementedControlServer) Info(ctx context.Context, req *InfoRequest) ( func (*UnimplementedControlServer) ListenBuildHistory(req *BuildHistoryRequest, srv Control_ListenBuildHistoryServer) error { return status.Errorf(codes.Unimplemented, "method ListenBuildHistory not implemented") } +func (*UnimplementedControlServer) UpdateBuildHistory(ctx context.Context, req *UpdateBuildHistoryRequest) (*UpdateBuildHistoryResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateBuildHistory not implemented") +} func RegisterControlServer(s *grpc.Server, srv ControlServer) { s.RegisterService(&_Control_serviceDesc, srv) @@ -2348,6 +2517,24 @@ func (x *controlListenBuildHistoryServer) Send(m *BuildHistoryEvent) error { return x.ServerStream.SendMsg(m) } +func _Control_UpdateBuildHistory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateBuildHistoryRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ControlServer).UpdateBuildHistory(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/moby.buildkit.v1.Control/UpdateBuildHistory", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ControlServer).UpdateBuildHistory(ctx, req.(*UpdateBuildHistoryRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Control_serviceDesc = grpc.ServiceDesc{ ServiceName: "moby.buildkit.v1.Control", HandlerType: (*ControlServer)(nil), @@ -2368,6 +2555,10 @@ var _Control_serviceDesc = grpc.ServiceDesc{ MethodName: "Info", Handler: _Control_Info_Handler, }, + { + MethodName: "UpdateBuildHistory", + Handler: _Control_UpdateBuildHistory_Handler, + }, }, Streams: []grpc.StreamDesc{ { @@ -2674,6 +2865,28 @@ func (m *SolveRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.SourcePolicy != nil { + { + size, err := m.SourcePolicy.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintControl(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x62 + } + if m.Internal { + i-- + if m.Internal { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x58 + } if len(m.FrontendInputs) > 0 { for k := range m.FrontendInputs { v := m.FrontendInputs[k] @@ -3150,23 +3363,23 @@ func (m *Vertex) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x3a } if m.Completed != nil { - n7, err7 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Completed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Completed):]) - if err7 != nil { - return 0, err7 - } - i -= n7 - i = encodeVarintControl(dAtA, i, uint64(n7)) - i-- - dAtA[i] = 0x32 - } - if m.Started != nil { - n8, err8 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Started, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Started):]) + n8, err8 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Completed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Completed):]) if err8 != nil { return 0, err8 } i -= n8 i = encodeVarintControl(dAtA, i, uint64(n8)) i-- + dAtA[i] = 0x32 + } + if m.Started != nil { + n9, err9 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Started, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Started):]) + if err9 != nil { + return 0, err9 + } + i -= n9 + i = encodeVarintControl(dAtA, i, uint64(n9)) + i-- dAtA[i] = 0x2a } if m.Cached { @@ -3230,31 +3443,31 @@ func (m *VertexStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.XXX_unrecognized) } if m.Completed != nil { - n9, err9 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Completed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Completed):]) - if err9 != nil { - return 0, err9 - } - i -= n9 - i = encodeVarintControl(dAtA, i, uint64(n9)) - i-- - dAtA[i] = 0x42 - } - if m.Started != nil { - n10, err10 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Started, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Started):]) + n10, err10 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Completed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Completed):]) if err10 != nil { return 0, err10 } i -= n10 i = encodeVarintControl(dAtA, i, uint64(n10)) i-- + dAtA[i] = 0x42 + } + if m.Started != nil { + n11, err11 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Started, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Started):]) + if err11 != nil { + return 0, err11 + } + i -= n11 + i = encodeVarintControl(dAtA, i, uint64(n11)) + i-- dAtA[i] = 0x3a } - n11, err11 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Timestamp, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Timestamp):]) - if err11 != nil { - return 0, err11 + n12, err12 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Timestamp, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Timestamp):]) + if err12 != nil { + return 0, err12 } - i -= n11 - i = encodeVarintControl(dAtA, i, uint64(n11)) + i -= n12 + i = encodeVarintControl(dAtA, i, uint64(n12)) i-- dAtA[i] = 0x32 if m.Total != 0 { @@ -3327,12 +3540,12 @@ func (m *VertexLog) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x18 } - n12, err12 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Timestamp, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Timestamp):]) - if err12 != nil { - return 0, err12 + n13, err13 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Timestamp, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Timestamp):]) + if err13 != nil { + return 0, err13 } - i -= n12 - i = encodeVarintControl(dAtA, i, uint64(n12)) + i -= n13 + i = encodeVarintControl(dAtA, i, uint64(n13)) i-- dAtA[i] = 0x12 if len(m.Vertex) > 0 { @@ -3634,6 +3847,16 @@ func (m *BuildHistoryRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.EarlyExit { + i-- + if m.EarlyExit { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } if len(m.Ref) > 0 { i -= len(m.Ref) copy(dAtA[i:], m.Ref) @@ -3722,6 +3945,28 @@ func (m *BuildHistoryRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.Pinned { + i-- + if m.Pinned { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x70 + } + if m.Trace != nil { + { + size, err := m.Trace.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintControl(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x6a + } if m.Generation != 0 { i = encodeVarintControl(dAtA, i, uint64(m.Generation)) i-- @@ -3797,22 +4042,22 @@ func (m *BuildHistoryRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x42 } if m.CompletedAt != nil { - n19, err19 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.CompletedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.CompletedAt):]) - if err19 != nil { - return 0, err19 + n21, err21 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.CompletedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.CompletedAt):]) + if err21 != nil { + return 0, err21 } - i -= n19 - i = encodeVarintControl(dAtA, i, uint64(n19)) + i -= n21 + i = encodeVarintControl(dAtA, i, uint64(n21)) i-- dAtA[i] = 0x3a } if m.CreatedAt != nil { - n20, err20 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.CreatedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.CreatedAt):]) - if err20 != nil { - return 0, err20 + n22, err22 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.CreatedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.CreatedAt):]) + if err22 != nil { + return 0, err22 } - i -= n20 - i = encodeVarintControl(dAtA, i, uint64(n20)) + i -= n22 + i = encodeVarintControl(dAtA, i, uint64(n22)) i-- dAtA[i] = 0x32 } @@ -3878,6 +4123,87 @@ func (m *BuildHistoryRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *UpdateBuildHistoryRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *UpdateBuildHistoryRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UpdateBuildHistoryRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if m.Delete { + i-- + if m.Delete { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if m.Pinned { + i-- + if m.Pinned { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + if len(m.Ref) > 0 { + i -= len(m.Ref) + copy(dAtA[i:], m.Ref) + i = encodeVarintControl(dAtA, i, uint64(len(m.Ref))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *UpdateBuildHistoryResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *UpdateBuildHistoryResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UpdateBuildHistoryResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + return len(dAtA) - i, nil +} + func (m *Descriptor) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -4241,6 +4567,13 @@ func (m *SolveRequest) Size() (n int) { n += mapEntrySize + 1 + sovControl(uint64(mapEntrySize)) } } + if m.Internal { + n += 2 + } + if m.SourcePolicy != nil { + l = m.SourcePolicy.Size() + n += 1 + l + sovControl(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -4631,6 +4964,9 @@ func (m *BuildHistoryRequest) Size() (n int) { if l > 0 { n += 1 + l + sovControl(uint64(l)) } + if m.EarlyExit { + n += 2 + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -4728,6 +5064,47 @@ func (m *BuildHistoryRecord) Size() (n int) { if m.Generation != 0 { n += 1 + sovControl(uint64(m.Generation)) } + if m.Trace != nil { + l = m.Trace.Size() + n += 1 + l + sovControl(uint64(l)) + } + if m.Pinned { + n += 2 + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *UpdateBuildHistoryRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Ref) + if l > 0 { + n += 1 + l + sovControl(uint64(l)) + } + if m.Pinned { + n += 2 + } + if m.Delete { + n += 2 + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *UpdateBuildHistoryResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -6145,6 +6522,62 @@ func (m *SolveRequest) Unmarshal(dAtA []byte) error { } m.FrontendInputs[mapkey] = mapvalue iNdEx = postIndex + case 11: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Internal", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Internal = bool(v != 0) + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SourcePolicy", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthControl + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SourcePolicy == nil { + m.SourcePolicy = &pb1.Policy{} + } + if err := m.SourcePolicy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipControl(dAtA[iNdEx:]) @@ -8643,6 +9076,26 @@ func (m *BuildHistoryRequest) Unmarshal(dAtA []byte) error { } m.Ref = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field EarlyExit", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.EarlyExit = bool(v != 0) default: iNdEx = preIndex skippy, err := skipControl(dAtA[iNdEx:]) @@ -9480,6 +9933,236 @@ func (m *BuildHistoryRecord) Unmarshal(dAtA []byte) error { break } } + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Trace", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthControl + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Trace == nil { + m.Trace = &Descriptor{} + } + if err := m.Trace.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Pinned", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Pinned = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipControl(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthControl + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UpdateBuildHistoryRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: UpdateBuildHistoryRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UpdateBuildHistoryRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ref", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthControl + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ref = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Pinned", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Pinned = bool(v != 0) + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Delete", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Delete = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipControl(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthControl + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UpdateBuildHistoryResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: UpdateBuildHistoryResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UpdateBuildHistoryResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { default: iNdEx = preIndex skippy, err := skipControl(dAtA[iNdEx:]) diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/api/services/control/control.proto b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/api/services/control/control.proto index 1aae3093f..6bb692d83 100644 --- a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/api/services/control/control.proto +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/api/services/control/control.proto @@ -8,6 +8,7 @@ import "github.com/moby/buildkit/solver/pb/ops.proto"; import "github.com/moby/buildkit/api/types/worker.proto"; // import "github.com/containerd/containerd/api/types/descriptor.proto"; import "github.com/gogo/googleapis/google/rpc/status.proto"; +import "github.com/moby/buildkit/sourcepolicy/pb/policy.proto"; option (gogoproto.sizer_all) = true; option (gogoproto.marshaler_all) = true; @@ -23,6 +24,7 @@ service Control { rpc Info(InfoRequest) returns (InfoResponse); rpc ListenBuildHistory(BuildHistoryRequest) returns (stream BuildHistoryEvent); + rpc UpdateBuildHistory(UpdateBuildHistoryRequest) returns (UpdateBuildHistoryResponse); } message PruneRequest { @@ -66,6 +68,8 @@ message SolveRequest { CacheOptions Cache = 8 [(gogoproto.nullable) = false]; repeated string Entitlements = 9 [(gogoproto.customtype) = "github.com/moby/buildkit/util/entitlements.Entitlement" ]; map FrontendInputs = 10; + bool Internal = 11; // Internal builds are not recorded in build history + moby.buildkit.v1.sourcepolicy.Policy SourcePolicy = 12; } message CacheOptions { @@ -171,6 +175,7 @@ message InfoResponse { message BuildHistoryRequest { bool ActiveOnly = 1; string Ref = 2; + bool EarlyExit = 3; } enum BuildHistoryEventType { @@ -179,7 +184,6 @@ enum BuildHistoryEventType { DELETED = 2; } - message BuildHistoryEvent { BuildHistoryEventType type = 1; BuildHistoryRecord record = 2; @@ -198,12 +202,21 @@ message BuildHistoryRecord { BuildResultInfo Result = 10; map Results = 11; int32 Generation = 12; + Descriptor trace = 13; + bool pinned = 14; // TODO: tags // TODO: steps/cache summary // TODO: unclipped logs - // TODO: pinning } +message UpdateBuildHistoryRequest { + string Ref = 1; + bool Pinned = 2; + bool Delete = 3; +} + +message UpdateBuildHistoryResponse {} + message Descriptor { string media_type = 1; string digest = 2 [(gogoproto.customtype) = "github.com/opencontainers/go-digest.Digest", (gogoproto.nullable) = false]; @@ -219,4 +232,4 @@ message BuildResultInfo { message Exporter { string Type = 1; map Attrs = 2; -} \ No newline at end of file +} diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/client/client.go b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/client/client.go index aa55e7961..deac2507a 100644 --- a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/client/client.go +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/client/client.go @@ -9,6 +9,7 @@ import ( "os" "strings" + contentapi "github.com/containerd/containerd/api/services/content/v1" "github.com/containerd/containerd/defaults" grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware" controlapi "github.com/moby/buildkit/api/services/control" @@ -172,6 +173,10 @@ func (c *Client) ControlClient() controlapi.ControlClient { return controlapi.NewControlClient(c.conn) } +func (c *Client) ContentClient() contentapi.ContentClient { + return contentapi.NewContentClient(c.conn) +} + func (c *Client) Dialer() session.Dialer { return grpchijack.Dialer(c.ControlClient()) } diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/client/llb/resolver.go b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/client/llb/resolver.go index 84eaa6bd7..b3b9cdf75 100644 --- a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/client/llb/resolver.go +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/client/llb/resolver.go @@ -42,9 +42,16 @@ const ( ) type ResolveImageConfigOpt struct { - Platform *ocispecs.Platform - ResolveMode string - LogName string - ResolverType // default is ResolverTypeRegistry - SessionID string + ResolverType + + Platform *ocispecs.Platform + ResolveMode string + LogName string + + Store ResolveImageConfigOptStore +} + +type ResolveImageConfigOptStore struct { + SessionID string + StoreID string } diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/client/llb/source.go b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/client/llb/source.go index e0b436348..27c8c1b61 100644 --- a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/client/llb/source.go +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/client/llb/source.go @@ -4,7 +4,6 @@ import ( "context" _ "crypto/sha256" // for opencontainers/go-digest "encoding/json" - "fmt" "os" "strconv" "strings" @@ -455,7 +454,7 @@ func Differ(t DiffType, required bool) LocalOption { }) } -func OCILayout(store string, digest digest.Digest, opts ...OCILayoutOption) State { +func OCILayout(ref string, opts ...OCILayoutOption) State { gi := &OCILayoutInfo{} for _, o := range opts { @@ -464,17 +463,17 @@ func OCILayout(store string, digest digest.Digest, opts ...OCILayoutOption) Stat attrs := map[string]string{} if gi.sessionID != "" { attrs[pb.AttrOCILayoutSessionID] = gi.sessionID - addCap(&gi.Constraints, pb.CapSourceOCILayoutSessionID) } - - if ll := gi.layerLimit; ll != nil { - attrs[pb.AttrOCILayoutLayerLimit] = strconv.FormatInt(int64(*ll), 10) - addCap(&gi.Constraints, pb.CapSourceOCILayoutLayerLimit) + if gi.storeID != "" { + attrs[pb.AttrOCILayoutStoreID] = gi.storeID + } + if gi.layerLimit != nil { + attrs[pb.AttrOCILayoutLayerLimit] = strconv.FormatInt(int64(*gi.layerLimit), 10) } addCap(&gi.Constraints, pb.CapSourceOCILayout) - source := NewSource(fmt.Sprintf("oci-layout://%s@%s", store, digest), attrs, gi.Constraints) + source := NewSource("oci-layout://"+ref, attrs, gi.Constraints) return NewState(source.Output()) } @@ -488,9 +487,10 @@ func (fn ociLayoutOptionFunc) SetOCILayoutOption(li *OCILayoutInfo) { fn(li) } -func OCISessionID(id string) OCILayoutOption { +func OCIStore(sessionID string, storeID string) OCILayoutOption { return ociLayoutOptionFunc(func(oi *OCILayoutInfo) { - oi.sessionID = id + oi.sessionID = sessionID + oi.storeID = storeID }) } @@ -503,6 +503,7 @@ func OCILayerLimit(limit int) OCILayoutOption { type OCILayoutInfo struct { constraintsWrapper sessionID string + storeID string layerLimit *int } diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/client/solve.go b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/client/solve.go index b1d78b536..67129957b 100644 --- a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/client/solve.go +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/client/solve.go @@ -22,6 +22,7 @@ import ( "github.com/moby/buildkit/session/filesync" "github.com/moby/buildkit/session/grpchijack" "github.com/moby/buildkit/solver/pb" + spb "github.com/moby/buildkit/sourcepolicy/pb" "github.com/moby/buildkit/util/bklog" "github.com/moby/buildkit/util/entitlements" ocispecs "github.com/opencontainers/image-spec/specs-go/v1" @@ -46,6 +47,8 @@ type SolveOpt struct { AllowedEntitlements []entitlements.Entitlement SharedSession *session.Session // TODO: refactor to better session syncing SessionPreInitialized bool // TODO: refactor to better session syncing + Internal bool + SourcePolicy *spb.Policy } type ExportEntry struct { @@ -259,6 +262,8 @@ func (c *Client) solve(ctx context.Context, def *llb.Definition, runGateway runG FrontendInputs: frontendInputs, Cache: cacheOpt.options, Entitlements: opt.AllowedEntitlements, + Internal: opt.Internal, + SourcePolicy: opt.SourcePolicy, }) if err != nil { return errors.Wrap(err, "failed to solve") @@ -350,54 +355,6 @@ func (c *Client) solve(ctx context.Context, def *llb.Definition, runGateway runG return res, nil } -func NewSolveStatus(resp *controlapi.StatusResponse) *SolveStatus { - s := &SolveStatus{} - for _, v := range resp.Vertexes { - s.Vertexes = append(s.Vertexes, &Vertex{ - Digest: v.Digest, - Inputs: v.Inputs, - Name: v.Name, - Started: v.Started, - Completed: v.Completed, - Error: v.Error, - Cached: v.Cached, - ProgressGroup: v.ProgressGroup, - }) - } - for _, v := range resp.Statuses { - s.Statuses = append(s.Statuses, &VertexStatus{ - ID: v.ID, - Vertex: v.Vertex, - Name: v.Name, - Total: v.Total, - Current: v.Current, - Timestamp: v.Timestamp, - Started: v.Started, - Completed: v.Completed, - }) - } - for _, v := range resp.Logs { - s.Logs = append(s.Logs, &VertexLog{ - Vertex: v.Vertex, - Stream: int(v.Stream), - Data: v.Msg, - Timestamp: v.Timestamp, - }) - } - for _, v := range resp.Warnings { - s.Warnings = append(s.Warnings, &VertexWarning{ - Vertex: v.Vertex, - Level: int(v.Level), - Short: v.Short, - Detail: v.Detail, - URL: v.Url, - SourceInfo: v.Info, - Range: v.Ranges, - }) - } - return s -} - func prepareSyncedDirs(def *llb.Definition, localDirs map[string]string) (filesync.StaticDirSource, error) { for _, d := range localDirs { fi, err := os.Stat(d) diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/client/status.go b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/client/status.go new file mode 100644 index 000000000..d692094af --- /dev/null +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/client/status.go @@ -0,0 +1,125 @@ +package client + +import ( + controlapi "github.com/moby/buildkit/api/services/control" +) + +var emptyLogVertexSize int + +func init() { + emptyLogVertex := controlapi.VertexLog{} + emptyLogVertexSize = emptyLogVertex.Size() +} + +func NewSolveStatus(resp *controlapi.StatusResponse) *SolveStatus { + s := &SolveStatus{} + for _, v := range resp.Vertexes { + s.Vertexes = append(s.Vertexes, &Vertex{ + Digest: v.Digest, + Inputs: v.Inputs, + Name: v.Name, + Started: v.Started, + Completed: v.Completed, + Error: v.Error, + Cached: v.Cached, + ProgressGroup: v.ProgressGroup, + }) + } + for _, v := range resp.Statuses { + s.Statuses = append(s.Statuses, &VertexStatus{ + ID: v.ID, + Vertex: v.Vertex, + Name: v.Name, + Total: v.Total, + Current: v.Current, + Timestamp: v.Timestamp, + Started: v.Started, + Completed: v.Completed, + }) + } + for _, v := range resp.Logs { + s.Logs = append(s.Logs, &VertexLog{ + Vertex: v.Vertex, + Stream: int(v.Stream), + Data: v.Msg, + Timestamp: v.Timestamp, + }) + } + for _, v := range resp.Warnings { + s.Warnings = append(s.Warnings, &VertexWarning{ + Vertex: v.Vertex, + Level: int(v.Level), + Short: v.Short, + Detail: v.Detail, + URL: v.Url, + SourceInfo: v.Info, + Range: v.Ranges, + }) + } + return s +} + +func (ss *SolveStatus) Marshal() (out []*controlapi.StatusResponse) { + logSize := 0 + for { + retry := false + sr := controlapi.StatusResponse{} + for _, v := range ss.Vertexes { + sr.Vertexes = append(sr.Vertexes, &controlapi.Vertex{ + Digest: v.Digest, + Inputs: v.Inputs, + Name: v.Name, + Started: v.Started, + Completed: v.Completed, + Error: v.Error, + Cached: v.Cached, + ProgressGroup: v.ProgressGroup, + }) + } + for _, v := range ss.Statuses { + sr.Statuses = append(sr.Statuses, &controlapi.VertexStatus{ + ID: v.ID, + Vertex: v.Vertex, + Name: v.Name, + Current: v.Current, + Total: v.Total, + Timestamp: v.Timestamp, + Started: v.Started, + Completed: v.Completed, + }) + } + for i, v := range ss.Logs { + sr.Logs = append(sr.Logs, &controlapi.VertexLog{ + Vertex: v.Vertex, + Stream: int64(v.Stream), + Msg: v.Data, + Timestamp: v.Timestamp, + }) + logSize += len(v.Data) + emptyLogVertexSize + // avoid logs growing big and split apart if they do + if logSize > 1024*1024 { + ss.Vertexes = nil + ss.Statuses = nil + ss.Logs = ss.Logs[i+1:] + retry = true + break + } + } + for _, v := range ss.Warnings { + sr.Warnings = append(sr.Warnings, &controlapi.VertexWarning{ + Vertex: v.Vertex, + Level: int64(v.Level), + Short: v.Short, + Detail: v.Detail, + Info: v.SourceInfo, + Ranges: v.Range, + Url: v.URL, + }) + } + out = append(out, &sr) + if !retry { + break + } + } + return +} diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/frontend/dockerfile/builder/build.go b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/frontend/dockerfile/builder/build.go index d1be3cedf..8c429efa4 100644 --- a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/frontend/dockerfile/builder/build.go +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/frontend/dockerfile/builder/build.go @@ -873,8 +873,8 @@ func contextByNameFunc(c client.Client, sessionID string) func(context.Context, p = &pp } if p != nil { - name := name + "::" + platforms.Format(platforms.Normalize(*p)) - st, img, err := contextByName(ctx, c, sessionID, name, p, resolveMode) + pname := name + "::" + platforms.Format(platforms.Normalize(*p)) + st, img, err := contextByName(ctx, c, sessionID, name, pname, p, resolveMode) if err != nil { return nil, nil, err } @@ -882,20 +882,20 @@ func contextByNameFunc(c client.Client, sessionID string) func(context.Context, return st, img, nil } } - return contextByName(ctx, c, sessionID, name, p, resolveMode) + return contextByName(ctx, c, sessionID, name, name, p, resolveMode) } } -func contextByName(ctx context.Context, c client.Client, sessionID, name string, platform *ocispecs.Platform, resolveMode string) (*llb.State, *dockerfile2llb.Image, error) { +func contextByName(ctx context.Context, c client.Client, sessionID, name string, pname string, platform *ocispecs.Platform, resolveMode string) (*llb.State, *dockerfile2llb.Image, error) { opts := c.BuildOpts().Opts - v, ok := opts[contextPrefix+name] + v, ok := opts[contextPrefix+pname] if !ok { return nil, nil, nil } vv := strings.SplitN(v, ":", 2) if len(vv) != 2 { - return nil, nil, errors.Errorf("invalid context specifier %s for %s", v, name) + return nil, nil, errors.Errorf("invalid context specifier %s for %s", v, pname) } // allow git@ without protocol for SSH URLs for backwards compatibility if strings.HasPrefix(vv[0], "git@") { @@ -910,7 +910,7 @@ func contextByName(ctx context.Context, c client.Client, sessionID, name string, } imgOpt := []llb.ImageOption{ - llb.WithCustomName("[context " + name + "] " + ref), + llb.WithCustomName("[context " + pname + "] " + ref), } if platform != nil { imgOpt = append(imgOpt, llb.Platform(*platform)) @@ -926,9 +926,8 @@ func contextByName(ctx context.Context, c client.Client, sessionID, name string, _, data, err := c.ResolveImageConfig(ctx, named.String(), llb.ResolveImageConfigOpt{ Platform: platform, ResolveMode: resolveMode, - LogName: fmt.Sprintf("[context %s] load metadata for %s", name, ref), + LogName: fmt.Sprintf("[context %s] load metadata for %s", pname, ref), ResolverType: llb.ResolverTypeRegistry, - SessionID: sessionID, }) if err != nil { return nil, nil, err @@ -955,7 +954,7 @@ func contextByName(ctx context.Context, c client.Client, sessionID, name string, case "http", "https": st, ok := detectGitContext(v, true) if !ok { - httpst := llb.HTTP(v, llb.WithCustomName("[context "+name+"] "+v)) + httpst := llb.HTTP(v, llb.WithCustomName("[context "+pname+"] "+v)) st = &httpst } return st, nil, nil @@ -969,25 +968,31 @@ func contextByName(ctx context.Context, c client.Client, sessionID, name string, if !ok { return nil, nil, errors.Errorf("oci-layout reference %q has no name", ref.String()) } - if reference.Domain(named) != "" { - return nil, nil, errors.Errorf("oci-layout reference %q has domain", ref.String()) - } - if strings.Contains(reference.Path(named), "/") { - return nil, nil, errors.Errorf("oci-layout reference %q name is multi-part", ref.String()) - } - digested, ok := ref.(reference.Digested) + dgstd, ok := named.(reference.Digested) if !ok { - return nil, nil, errors.Errorf("oci-layout reference %q does not have digest", ref.String()) + return nil, nil, errors.Errorf("oci-layout reference %q has no digest", named.String()) } - // We use store id as the host here, the image name will be ignored - // (since image lookup is not currently supported) - id := fmt.Sprintf("%s/image@%s", named.Name(), digested.Digest()) - _, data, err := c.ResolveImageConfig(ctx, id, llb.ResolveImageConfigOpt{ + // for the dummy ref primarily used in log messages, we can use the + // original name, since the store key may not be significant + dummyRef, err := reference.ParseNormalizedNamed(name) + if err != nil { + return nil, nil, errors.Wrapf(err, "could not parse oci-layout reference %q", name) + } + dummyRef, err = reference.WithDigest(dummyRef, dgstd.Digest()) + if err != nil { + return nil, nil, errors.Wrapf(err, "could not wrap %q with digest", name) + } + + _, data, err := c.ResolveImageConfig(ctx, dummyRef.String(), llb.ResolveImageConfigOpt{ Platform: platform, ResolveMode: resolveMode, - LogName: fmt.Sprintf("[context %s] load metadata for %s", name, ref), + LogName: fmt.Sprintf("[context %s] load metadata for %s", pname, dummyRef.String()), ResolverType: llb.ResolverTypeOCILayout, + Store: llb.ResolveImageConfigOptStore{ + SessionID: sessionID, + StoreID: named.Name(), + }, }) if err != nil { return nil, nil, err @@ -999,15 +1004,14 @@ func contextByName(ctx context.Context, c client.Client, sessionID, name string, } ociOpt := []llb.OCILayoutOption{ - llb.WithCustomName("[context " + name + "] OCI load from client"), - llb.OCISessionID(c.BuildOpts().SessionID), + llb.WithCustomName("[context " + pname + "] OCI load from client"), + llb.OCIStore(c.BuildOpts().SessionID, named.Name()), } if platform != nil { ociOpt = append(ociOpt, llb.Platform(*platform)) } st := llb.OCILayout( - named.Name(), - digested.Digest(), + dummyRef.String(), ociOpt..., ) st, err = st.WithImageConfig(data) @@ -1019,8 +1023,8 @@ func contextByName(ctx context.Context, c client.Client, sessionID, name string, st := llb.Local(vv[1], llb.SessionID(c.BuildOpts().SessionID), llb.FollowPaths([]string{dockerignoreFilename}), - llb.SharedKeyHint("context:"+name+"-"+dockerignoreFilename), - llb.WithCustomName("[context "+name+"] load "+dockerignoreFilename), + llb.SharedKeyHint("context:"+pname+"-"+dockerignoreFilename), + llb.WithCustomName("[context "+pname+"] load "+dockerignoreFilename), llb.Differ(llb.DiffNone, false), ) def, err := st.Marshal(ctx) @@ -1049,9 +1053,9 @@ func contextByName(ctx context.Context, c client.Client, sessionID, name string, } } st = llb.Local(vv[1], - llb.WithCustomName("[context "+name+"] load from client"), + llb.WithCustomName("[context "+pname+"] load from client"), llb.SessionID(c.BuildOpts().SessionID), - llb.SharedKeyHint("context:"+name), + llb.SharedKeyHint("context:"+pname), llb.ExcludePatterns(excludes), ) return &st, nil, nil @@ -1062,7 +1066,7 @@ func contextByName(ctx context.Context, c client.Client, sessionID, name string, } st, ok := inputs[vv[1]] if !ok { - return nil, nil, errors.Errorf("invalid input %s for %s", vv[1], name) + return nil, nil, errors.Errorf("invalid input %s for %s", vv[1], pname) } md, ok := opts[inputMetadataPrefix+vv[1]] if ok { @@ -1077,14 +1081,14 @@ func contextByName(ctx context.Context, c client.Client, sessionID, name string, return nil, nil, err } if err := json.Unmarshal(dtic, &img); err != nil { - return nil, nil, errors.Wrapf(err, "failed to parse image config for %s", name) + return nil, nil, errors.Wrapf(err, "failed to parse image config for %s", pname) } } return &st, img, nil } return &st, nil, nil default: - return nil, nil, errors.Errorf("unsupported context source %s for %s", vv[0], name) + return nil, nil, errors.Errorf("unsupported context source %s for %s", vv[0], pname) } } diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/frontend/gateway/client/client.go b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/frontend/gateway/client/client.go index ae6d297fd..7b6b9de13 100644 --- a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/frontend/gateway/client/client.go +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/frontend/gateway/client/client.go @@ -8,6 +8,7 @@ import ( "github.com/moby/buildkit/client/llb" "github.com/moby/buildkit/solver/pb" "github.com/moby/buildkit/solver/result" + spb "github.com/moby/buildkit/sourcepolicy/pb" "github.com/moby/buildkit/util/apicaps" digest "github.com/opencontainers/go-digest" ocispecs "github.com/opencontainers/image-spec/specs-go/v1" @@ -128,6 +129,7 @@ type SolveRequest struct { FrontendOpt map[string]string FrontendInputs map[string]*pb.Definition CacheImports []CacheOptionsEntry + SourcePolicies []*spb.Policy } type CacheOptionsEntry struct { diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/frontend/gateway/grpcclient/client.go b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/frontend/gateway/grpcclient/client.go index 70064e5cf..1b000a816 100644 --- a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/frontend/gateway/grpcclient/client.go +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/frontend/gateway/grpcclient/client.go @@ -382,6 +382,7 @@ func (c *grpcClient) Solve(ctx context.Context, creq client.SolveRequest) (res * AllowResultReturn: true, AllowResultArrayRef: true, CacheImports: cacheImports, + SourcePolicies: creq.SourcePolicies, } // backwards compatibility with inline return @@ -488,7 +489,15 @@ func (c *grpcClient) ResolveImageConfig(ctx context.Context, ref string, opt llb OSFeatures: platform.OSFeatures, } } - resp, err := c.client.ResolveImageConfig(ctx, &pb.ResolveImageConfigRequest{Ref: ref, Platform: p, ResolveMode: opt.ResolveMode, LogName: opt.LogName, ResolverType: int32(opt.ResolverType), SessionID: opt.SessionID}) + resp, err := c.client.ResolveImageConfig(ctx, &pb.ResolveImageConfigRequest{ + ResolverType: int32(opt.ResolverType), + Ref: ref, + Platform: p, + ResolveMode: opt.ResolveMode, + LogName: opt.LogName, + SessionID: opt.Store.SessionID, + StoreID: opt.Store.StoreID, + }) if err != nil { return "", nil, err } diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/frontend/gateway/pb/gateway.pb.go b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/frontend/gateway/pb/gateway.pb.go index 038515b4d..da36afdd1 100644 --- a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/frontend/gateway/pb/gateway.pb.go +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/frontend/gateway/pb/gateway.pb.go @@ -11,7 +11,8 @@ import ( proto "github.com/gogo/protobuf/proto" types1 "github.com/moby/buildkit/api/types" pb "github.com/moby/buildkit/solver/pb" - pb1 "github.com/moby/buildkit/util/apicaps/pb" + pb1 "github.com/moby/buildkit/sourcepolicy/pb" + pb2 "github.com/moby/buildkit/util/apicaps/pb" github_com_opencontainers_go_digest "github.com/opencontainers/go-digest" types "github.com/tonistiigi/fsutil/types" grpc "google.golang.org/grpc" @@ -90,9 +91,10 @@ type Result struct { // *Result_RefsDeprecated // *Result_Ref // *Result_Refs - Result isResult_Result `protobuf_oneof:"result"` - Metadata map[string][]byte `protobuf:"bytes,10,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Attestations map[string]*Attestations `protobuf:"bytes,11,rep,name=attestations,proto3" json:"attestations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Result isResult_Result `protobuf_oneof:"result"` + Metadata map[string][]byte `protobuf:"bytes,10,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // 11 was used during development and is reserved for old attestation format + Attestations map[string]*Attestations `protobuf:"bytes,12,rep,name=attestations,proto3" json:"attestations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -740,6 +742,7 @@ type ResolveImageConfigRequest struct { LogName string `protobuf:"bytes,4,opt,name=LogName,proto3" json:"LogName,omitempty"` ResolverType int32 `protobuf:"varint,5,opt,name=ResolverType,proto3" json:"ResolverType,omitempty"` SessionID string `protobuf:"bytes,6,opt,name=SessionID,proto3" json:"SessionID,omitempty"` + StoreID string `protobuf:"bytes,7,opt,name=StoreID,proto3" json:"StoreID,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -820,6 +823,13 @@ func (m *ResolveImageConfigRequest) GetSessionID() string { return "" } +func (m *ResolveImageConfigRequest) GetStoreID() string { + if m != nil { + return m.StoreID + } + return "" +} + type ResolveImageConfigResponse struct { Digest github_com_opencontainers_go_digest.Digest `protobuf:"bytes,1,opt,name=Digest,proto3,customtype=github.com/opencontainers/go-digest.Digest" json:"Digest"` Config []byte `protobuf:"bytes,2,opt,name=Config,proto3" json:"Config,omitempty"` @@ -884,6 +894,7 @@ type SolveRequest struct { // apicaps:CapFrontendInputs FrontendInputs map[string]*pb.Definition `protobuf:"bytes,13,rep,name=FrontendInputs,proto3" json:"FrontendInputs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` Evaluate bool `protobuf:"varint,14,opt,name=Evaluate,proto3" json:"Evaluate,omitempty"` + SourcePolicies []*pb1.Policy `protobuf:"bytes,15,rep,name=SourcePolicies,proto3" json:"SourcePolicies,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -992,6 +1003,13 @@ func (m *SolveRequest) GetEvaluate() bool { return false } +func (m *SolveRequest) GetSourcePolicies() []*pb1.Policy { + if m != nil { + return m.SourcePolicies + } + return nil +} + // CacheOptionsEntry corresponds to the control.CacheOptionsEntry type CacheOptionsEntry struct { Type string `protobuf:"bytes,1,opt,name=Type,proto3" json:"Type,omitempty"` @@ -1608,8 +1626,8 @@ func (m *PingRequest) XXX_DiscardUnknown() { var xxx_messageInfo_PingRequest proto.InternalMessageInfo type PongResponse struct { - FrontendAPICaps []pb1.APICap `protobuf:"bytes,1,rep,name=FrontendAPICaps,proto3" json:"FrontendAPICaps"` - LLBCaps []pb1.APICap `protobuf:"bytes,2,rep,name=LLBCaps,proto3" json:"LLBCaps"` + FrontendAPICaps []pb2.APICap `protobuf:"bytes,1,rep,name=FrontendAPICaps,proto3" json:"FrontendAPICaps"` + LLBCaps []pb2.APICap `protobuf:"bytes,2,rep,name=LLBCaps,proto3" json:"LLBCaps"` Workers []*types1.WorkerRecord `protobuf:"bytes,3,rep,name=Workers,proto3" json:"Workers,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -1649,14 +1667,14 @@ func (m *PongResponse) XXX_DiscardUnknown() { var xxx_messageInfo_PongResponse proto.InternalMessageInfo -func (m *PongResponse) GetFrontendAPICaps() []pb1.APICap { +func (m *PongResponse) GetFrontendAPICaps() []pb2.APICap { if m != nil { return m.FrontendAPICaps } return nil } -func (m *PongResponse) GetLLBCaps() []pb1.APICap { +func (m *PongResponse) GetLLBCaps() []pb2.APICap { if m != nil { return m.LLBCaps } @@ -2609,157 +2627,161 @@ func init() { func init() { proto.RegisterFile("gateway.proto", fileDescriptor_f1a937782ebbded5) } var fileDescriptor_f1a937782ebbded5 = []byte{ - // 2395 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x39, 0xcd, 0x6f, 0x1b, 0xc7, - 0xf5, 0x5a, 0x91, 0x12, 0xc9, 0xc7, 0x0f, 0xd1, 0x13, 0x27, 0x3f, 0x66, 0x11, 0x38, 0xf2, 0x3a, - 0x51, 0x64, 0xc5, 0x21, 0xfd, 0xa3, 0x1d, 0xc8, 0xb5, 0x5b, 0x27, 0xd6, 0x17, 0xa4, 0x58, 0xb2, - 0xd9, 0x91, 0x0b, 0x17, 0x41, 0x0a, 0x74, 0xc5, 0x1d, 0xd2, 0x5b, 0xaf, 0x76, 0xb7, 0xbb, 0x43, - 0xcb, 0x4a, 0x2e, 0xed, 0xad, 0xc8, 0xa9, 0xa7, 0xde, 0x82, 0x02, 0x2d, 0xd0, 0x73, 0x7b, 0xe9, - 0xad, 0x3d, 0x07, 0xe8, 0xa5, 0x97, 0x5e, 0x7a, 0x08, 0x0a, 0xff, 0x11, 0x05, 0x7a, 0x2b, 0xde, - 0xcc, 0x2c, 0x39, 0xfc, 0xd0, 0x92, 0xac, 0x4f, 0x9c, 0x79, 0xf3, 0x3e, 0xe6, 0x7d, 0xbf, 0x59, - 0x42, 0xb9, 0x6b, 0x73, 0x76, 0x66, 0x9f, 0xd7, 0xc3, 0x28, 0xe0, 0x01, 0x79, 0xfb, 0x34, 0x38, - 0x39, 0xaf, 0x9f, 0xf4, 0x5c, 0xcf, 0x79, 0xee, 0xf2, 0xfa, 0x8b, 0xff, 0xaf, 0x77, 0xa2, 0xc0, - 0xe7, 0xcc, 0x77, 0xcc, 0x8f, 0xba, 0x2e, 0x7f, 0xd6, 0x3b, 0xa9, 0xb7, 0x83, 0xd3, 0x46, 0x37, - 0xe8, 0x06, 0x0d, 0x41, 0x71, 0xd2, 0xeb, 0x88, 0x9d, 0xd8, 0x88, 0x95, 0xe4, 0x64, 0x36, 0x47, - 0xd1, 0xbb, 0x41, 0xd0, 0xf5, 0x98, 0x1d, 0xba, 0xb1, 0x5a, 0x36, 0xa2, 0xb0, 0xdd, 0x88, 0xb9, - 0xcd, 0x7b, 0xb1, 0xa2, 0xb9, 0xa1, 0xd1, 0xe0, 0x45, 0x1a, 0xc9, 0x45, 0x1a, 0x71, 0xe0, 0xbd, - 0x60, 0x51, 0x23, 0x3c, 0x69, 0x04, 0x61, 0x82, 0xdd, 0xb8, 0x10, 0xdb, 0x0e, 0xdd, 0x06, 0x3f, - 0x0f, 0x59, 0xdc, 0x38, 0x0b, 0xa2, 0xe7, 0x2c, 0x52, 0x04, 0xb7, 0x2e, 0x24, 0xe8, 0x71, 0xd7, - 0x43, 0xaa, 0xb6, 0x1d, 0xc6, 0x28, 0x04, 0x7f, 0x15, 0x91, 0xae, 0x36, 0x0f, 0x7c, 0x37, 0xe6, - 0xae, 0xdb, 0x75, 0x1b, 0x9d, 0x58, 0xd0, 0x48, 0x29, 0xa8, 0x84, 0x44, 0xb7, 0xfe, 0x96, 0x85, - 0x65, 0xca, 0xe2, 0x9e, 0xc7, 0xc9, 0x1a, 0x94, 0x23, 0xd6, 0xd9, 0x61, 0x61, 0xc4, 0xda, 0x36, - 0x67, 0x4e, 0xcd, 0x58, 0x35, 0xd6, 0x0b, 0xfb, 0x0b, 0x74, 0x18, 0x4c, 0x7e, 0x04, 0x95, 0x88, - 0x75, 0x62, 0x0d, 0x71, 0x71, 0xd5, 0x58, 0x2f, 0x36, 0x3f, 0xac, 0x5f, 0xe8, 0x8c, 0x3a, 0x65, - 0x9d, 0x23, 0x3b, 0x1c, 0x90, 0xec, 0x2f, 0xd0, 0x11, 0x26, 0xa4, 0x09, 0x99, 0x88, 0x75, 0x6a, - 0x19, 0xc1, 0xeb, 0x4a, 0x3a, 0xaf, 0xfd, 0x05, 0x8a, 0xc8, 0x64, 0x13, 0xb2, 0xc8, 0xa5, 0x96, - 0x15, 0x44, 0x57, 0xa7, 0x5e, 0x60, 0x7f, 0x81, 0x0a, 0x02, 0xf2, 0x10, 0xf2, 0xa7, 0x8c, 0xdb, - 0x8e, 0xcd, 0xed, 0x1a, 0xac, 0x66, 0xd6, 0x8b, 0xcd, 0x46, 0x2a, 0x31, 0x1a, 0xa8, 0x7e, 0xa4, - 0x28, 0x76, 0x7d, 0x1e, 0x9d, 0xd3, 0x3e, 0x03, 0xf2, 0x14, 0x4a, 0x36, 0xe7, 0x0c, 0xad, 0xea, - 0x06, 0x7e, 0x5c, 0x2b, 0x0a, 0x86, 0xb7, 0xa6, 0x33, 0x7c, 0xa0, 0x51, 0x49, 0xa6, 0x43, 0x8c, - 0xcc, 0x7b, 0x50, 0x1e, 0x92, 0x49, 0xaa, 0x90, 0x79, 0xce, 0xce, 0xa5, 0x63, 0x28, 0x2e, 0xc9, - 0x65, 0x58, 0x7a, 0x61, 0x7b, 0x3d, 0x26, 0x7c, 0x50, 0xa2, 0x72, 0x73, 0x77, 0xf1, 0x8e, 0x61, - 0x3e, 0x83, 0x4b, 0x63, 0xfc, 0x27, 0x30, 0xf8, 0x81, 0xce, 0xa0, 0xd8, 0xfc, 0x20, 0xe5, 0xd6, - 0x3a, 0x3b, 0x4d, 0xd2, 0x56, 0x1e, 0x96, 0x23, 0xa1, 0x90, 0xf5, 0x1b, 0x03, 0xaa, 0xa3, 0xae, - 0x26, 0x07, 0xca, 0x49, 0x86, 0x30, 0xcb, 0xc7, 0x73, 0x44, 0x09, 0x02, 0x94, 0x61, 0x04, 0x0b, - 0x73, 0x13, 0x0a, 0x7d, 0xd0, 0x34, 0x63, 0x14, 0xb4, 0x2b, 0x5a, 0x9b, 0x90, 0xa1, 0xac, 0x43, - 0x2a, 0xb0, 0xe8, 0xaa, 0xb8, 0xa6, 0x8b, 0xae, 0x43, 0x56, 0x21, 0xe3, 0xb0, 0x8e, 0x52, 0xbd, - 0x52, 0x0f, 0x4f, 0xea, 0x3b, 0xac, 0xe3, 0xfa, 0x2e, 0xaa, 0x48, 0xf1, 0xc8, 0xfa, 0x9d, 0x81, - 0xf9, 0x81, 0xd7, 0x22, 0x9f, 0x0c, 0xe9, 0x31, 0x3d, 0xda, 0xc7, 0x6e, 0xff, 0x34, 0xfd, 0xf6, - 0xb7, 0x87, 0x3d, 0x31, 0x25, 0x05, 0x74, 0xed, 0x7e, 0x0c, 0x25, 0xdd, 0x37, 0x64, 0x1f, 0x8a, - 0x5a, 0x1c, 0xa9, 0x0b, 0xaf, 0xcd, 0xe6, 0x59, 0xaa, 0x93, 0x5a, 0x7f, 0xc8, 0x40, 0x51, 0x3b, - 0x24, 0xf7, 0x21, 0xfb, 0xdc, 0xf5, 0xa5, 0x09, 0x2b, 0xcd, 0x8d, 0xd9, 0x58, 0x3e, 0x74, 0x7d, - 0x87, 0x0a, 0x3a, 0xd2, 0xd2, 0xf2, 0x6e, 0x51, 0x5c, 0xeb, 0xf6, 0x6c, 0x3c, 0x2e, 0x4c, 0xbe, - 0x9b, 0x73, 0x94, 0x0d, 0x59, 0x34, 0x08, 0x64, 0x43, 0x9b, 0x3f, 0x13, 0x45, 0xa3, 0x40, 0xc5, - 0x9a, 0xdc, 0x84, 0x37, 0x5c, 0xff, 0x49, 0xc0, 0x83, 0x56, 0xc4, 0x1c, 0x17, 0x83, 0xef, 0xc9, - 0x79, 0xc8, 0x6a, 0x4b, 0x02, 0x65, 0xd2, 0x11, 0x69, 0x41, 0x45, 0x82, 0x8f, 0x7b, 0x27, 0x3f, - 0x63, 0x6d, 0x1e, 0xd7, 0x96, 0x85, 0x3e, 0xeb, 0x29, 0x57, 0x38, 0xd0, 0x09, 0xe8, 0x08, 0xfd, - 0x6b, 0x65, 0xbb, 0xf5, 0x27, 0x03, 0xca, 0x43, 0xec, 0xc9, 0xa7, 0x43, 0xae, 0xba, 0x31, 0xeb, - 0xb5, 0x34, 0x67, 0x7d, 0x06, 0xcb, 0x8e, 0xdb, 0x65, 0x31, 0x17, 0xae, 0x2a, 0x6c, 0x35, 0xbf, - 0xfd, 0xee, 0xdd, 0x85, 0x7f, 0x7e, 0xf7, 0xee, 0x86, 0xd6, 0x62, 0x82, 0x90, 0xf9, 0xed, 0xc0, - 0xe7, 0xb6, 0xeb, 0xb3, 0x08, 0x3b, 0xe5, 0x47, 0x92, 0xa4, 0xbe, 0x23, 0x7e, 0xa8, 0xe2, 0x80, - 0x46, 0xf7, 0xed, 0x53, 0x26, 0xfc, 0x54, 0xa0, 0x62, 0x6d, 0x71, 0x28, 0x53, 0xc6, 0x7b, 0x91, - 0x4f, 0xd9, 0xcf, 0x7b, 0x88, 0xf4, 0xbd, 0xa4, 0x90, 0x88, 0x4b, 0x4f, 0x2b, 0xe8, 0x88, 0x48, - 0x15, 0x01, 0x59, 0x87, 0x25, 0x16, 0x45, 0x41, 0xa4, 0x92, 0x87, 0xd4, 0x65, 0xcf, 0xae, 0x47, - 0x61, 0xbb, 0x7e, 0x2c, 0x7a, 0x36, 0x95, 0x08, 0x56, 0x15, 0x2a, 0x89, 0xd4, 0x38, 0x0c, 0xfc, - 0x98, 0x59, 0x2b, 0x68, 0xba, 0xb0, 0xc7, 0x63, 0x75, 0x0f, 0xeb, 0xaf, 0x06, 0x54, 0x12, 0x88, - 0xc4, 0x21, 0x5f, 0x40, 0x71, 0x50, 0x1a, 0x92, 0x1a, 0x70, 0x37, 0xd5, 0xa8, 0x3a, 0xbd, 0x56, - 0x57, 0x54, 0x49, 0xd0, 0xd9, 0x99, 0x8f, 0xa0, 0x3a, 0x8a, 0x30, 0xc1, 0xfb, 0xef, 0x0d, 0x17, - 0x88, 0xd1, 0x7a, 0xa5, 0x45, 0xc3, 0x3f, 0x0c, 0x78, 0x9b, 0x32, 0x31, 0x84, 0x1c, 0x9c, 0xda, - 0x5d, 0xb6, 0x1d, 0xf8, 0x1d, 0xb7, 0x9b, 0x98, 0xb9, 0x2a, 0x8a, 0x61, 0xc2, 0x19, 0xeb, 0xe2, - 0x3a, 0xe4, 0x5b, 0x9e, 0xcd, 0x3b, 0x41, 0x74, 0xaa, 0x98, 0x97, 0x90, 0x79, 0x02, 0xa3, 0xfd, - 0x53, 0xb2, 0x0a, 0x45, 0xc5, 0xf8, 0x28, 0x70, 0x12, 0x77, 0xea, 0x20, 0x52, 0x83, 0xdc, 0x61, - 0xd0, 0x7d, 0x84, 0xce, 0x96, 0x19, 0x96, 0x6c, 0x89, 0x05, 0x25, 0x85, 0x18, 0xf5, 0xb3, 0x6b, - 0x89, 0x0e, 0xc1, 0xc8, 0x3b, 0x50, 0x38, 0x66, 0x71, 0xec, 0x06, 0xfe, 0xc1, 0x4e, 0x6d, 0x59, - 0xd0, 0x0f, 0x00, 0xd6, 0x2f, 0x0c, 0x30, 0x27, 0xe9, 0xa5, 0x9c, 0xf4, 0x19, 0x2c, 0xcb, 0xb0, - 0x93, 0xba, 0xfd, 0x6f, 0x01, 0x2b, 0x7f, 0xc9, 0x5b, 0xb0, 0x2c, 0xb9, 0xab, 0x5c, 0x53, 0x3b, - 0xeb, 0xcf, 0x4b, 0x50, 0x3a, 0xc6, 0x0b, 0x24, 0xd6, 0xac, 0x03, 0x0c, 0x9c, 0xa0, 0x02, 0x77, - 0xd4, 0x35, 0x1a, 0x06, 0x31, 0x21, 0xbf, 0xa7, 0x82, 0x44, 0xf5, 0xa9, 0xfe, 0x9e, 0x7c, 0x0e, - 0xc5, 0x64, 0xfd, 0x38, 0xe4, 0xb5, 0x8c, 0x88, 0xb2, 0x3b, 0x29, 0x51, 0xa6, 0xdf, 0xa4, 0xae, - 0x91, 0xaa, 0x18, 0xd3, 0x20, 0xe4, 0x06, 0x5c, 0xb2, 0x3d, 0x2f, 0x38, 0x53, 0x89, 0x23, 0x52, - 0x40, 0xb8, 0x20, 0x4f, 0xc7, 0x0f, 0xb0, 0x20, 0x6a, 0xc0, 0x07, 0x51, 0x64, 0x9f, 0x63, 0xcc, - 0x2c, 0x0b, 0xfc, 0x49, 0x47, 0x58, 0x9b, 0xf6, 0x5c, 0xdf, 0xf6, 0x6a, 0x20, 0x70, 0xe4, 0x06, - 0x7d, 0xbe, 0xfb, 0x32, 0x0c, 0x22, 0xce, 0xa2, 0x07, 0x9c, 0x47, 0xb5, 0xa2, 0x30, 0xe6, 0x10, - 0x8c, 0xb4, 0xa0, 0xb4, 0x6d, 0xb7, 0x9f, 0xb1, 0x83, 0x53, 0x04, 0xc6, 0xb5, 0x92, 0x50, 0x3b, - 0xad, 0x62, 0x09, 0xf4, 0xc7, 0xa1, 0x3e, 0x38, 0xe9, 0x1c, 0x48, 0x1b, 0x2a, 0x89, 0xea, 0x32, - 0x0f, 0x6b, 0x65, 0xc1, 0xf3, 0xde, 0xbc, 0xa6, 0x94, 0xd4, 0x52, 0xc4, 0x08, 0x4b, 0x74, 0xe4, - 0x2e, 0xa6, 0x9c, 0xcd, 0x59, 0xad, 0x22, 0x74, 0xee, 0xef, 0xcd, 0xfb, 0x50, 0x1d, 0xf5, 0xc6, - 0x3c, 0xf3, 0x8a, 0xf9, 0x43, 0x78, 0x63, 0xc2, 0x15, 0x5e, 0xab, 0x26, 0xfc, 0xd1, 0x80, 0x4b, - 0x63, 0x76, 0xc3, 0xba, 0x2c, 0x72, 0x51, 0xb2, 0x14, 0x6b, 0x72, 0x04, 0x4b, 0xe8, 0x97, 0x58, - 0x75, 0xe8, 0xcd, 0x79, 0x1c, 0x51, 0x17, 0x94, 0xd2, 0x60, 0x92, 0x8b, 0x79, 0x07, 0x60, 0x00, - 0x9c, 0x6b, 0x6a, 0xfb, 0x02, 0xca, 0xca, 0x2b, 0x2a, 0xc1, 0xab, 0xb2, 0xd9, 0x2b, 0x62, 0x6c, - 0xe6, 0x83, 0x96, 0x91, 0x99, 0xb3, 0x65, 0x58, 0x5f, 0xc1, 0x0a, 0x65, 0xb6, 0xb3, 0xe7, 0x7a, - 0xec, 0xe2, 0xca, 0x88, 0xd9, 0xea, 0x7a, 0xac, 0x85, 0x03, 0x43, 0x92, 0xad, 0x6a, 0x4f, 0xee, - 0xc2, 0x12, 0xb5, 0xfd, 0x2e, 0x53, 0xa2, 0xdf, 0x4b, 0x11, 0x2d, 0x84, 0x20, 0x2e, 0x95, 0x24, - 0xd6, 0x3d, 0x28, 0xf4, 0x61, 0x58, 0x6b, 0x1e, 0x77, 0x3a, 0x31, 0x93, 0x75, 0x2b, 0x43, 0xd5, - 0x0e, 0xe1, 0x87, 0xcc, 0xef, 0x2a, 0xd1, 0x19, 0xaa, 0x76, 0xd6, 0x1a, 0x4e, 0xd9, 0xc9, 0xcd, - 0x95, 0x69, 0x08, 0x64, 0x77, 0x70, 0xaa, 0x32, 0x44, 0x82, 0x89, 0xb5, 0xe5, 0x60, 0xab, 0xb3, - 0x9d, 0x1d, 0x37, 0xba, 0x58, 0xc1, 0x1a, 0xe4, 0x76, 0xdc, 0x48, 0xd3, 0x2f, 0xd9, 0x92, 0x35, - 0x6c, 0x82, 0x6d, 0xaf, 0xe7, 0xa0, 0xb6, 0x9c, 0x45, 0xbe, 0xaa, 0xf6, 0x23, 0x50, 0xeb, 0x13, - 0x69, 0x47, 0x21, 0x45, 0x5d, 0xe6, 0x06, 0xe4, 0x98, 0xcf, 0x23, 0x97, 0x25, 0x9d, 0x92, 0xd4, - 0xe5, 0x03, 0xb4, 0x2e, 0x1e, 0xa0, 0xa2, 0x23, 0xd3, 0x04, 0xc5, 0xda, 0x84, 0x15, 0x04, 0xa4, - 0x3b, 0x82, 0x40, 0x56, 0xbb, 0xa4, 0x58, 0x5b, 0x77, 0xa1, 0x3a, 0x20, 0x54, 0xa2, 0xd7, 0x20, - 0x8b, 0x23, 0xa3, 0x2a, 0xc4, 0x93, 0xe4, 0x8a, 0x73, 0xeb, 0x1a, 0xac, 0x24, 0xd9, 0x7a, 0xa1, - 0x50, 0x8b, 0x40, 0x75, 0x80, 0xa4, 0xa6, 0x85, 0x32, 0x14, 0x5b, 0xae, 0x9f, 0x34, 0x53, 0xeb, - 0x95, 0x01, 0xa5, 0x56, 0xe0, 0x0f, 0x9a, 0x50, 0x0b, 0x56, 0x92, 0xd4, 0x7d, 0xd0, 0x3a, 0xd8, - 0xb6, 0xc3, 0xc4, 0x06, 0xab, 0xe3, 0xf1, 0xa1, 0x9e, 0xf0, 0x75, 0x89, 0xb8, 0x95, 0xc5, 0x7e, - 0x45, 0x47, 0xc9, 0xc9, 0xa7, 0x90, 0x3b, 0x3c, 0xdc, 0x12, 0x9c, 0x16, 0xe7, 0xe2, 0x94, 0x90, - 0x91, 0xfb, 0x90, 0x7b, 0x2a, 0xbe, 0x2c, 0xc4, 0xaa, 0xa7, 0x4c, 0x88, 0x55, 0x69, 0x21, 0x89, - 0x46, 0x59, 0x3b, 0x88, 0x1c, 0x9a, 0x10, 0x59, 0xff, 0x36, 0xa0, 0xf8, 0xd4, 0x1e, 0x0c, 0x6a, - 0x83, 0xc9, 0xf0, 0x35, 0x1a, 0xad, 0x9a, 0x0c, 0x2f, 0xc3, 0x92, 0xc7, 0x5e, 0x30, 0x4f, 0xc5, - 0xb8, 0xdc, 0x20, 0x34, 0x7e, 0x16, 0x44, 0x32, 0xad, 0x4b, 0x54, 0x6e, 0x30, 0x21, 0x1c, 0xc6, - 0x6d, 0xd7, 0xab, 0x65, 0x57, 0x33, 0xd8, 0x94, 0xe5, 0x0e, 0x3d, 0xd7, 0x8b, 0x3c, 0x35, 0xae, - 0xe3, 0x92, 0x58, 0x90, 0x75, 0xfd, 0x4e, 0x20, 0x1a, 0x96, 0x2a, 0x8b, 0xc7, 0x41, 0x2f, 0x6a, - 0xb3, 0x03, 0xbf, 0x13, 0x50, 0x71, 0x46, 0xae, 0xc2, 0x72, 0x84, 0xf9, 0x17, 0xd7, 0x72, 0xc2, - 0x28, 0x05, 0xc4, 0x92, 0x59, 0xaa, 0x0e, 0xac, 0x0a, 0x94, 0xa4, 0xde, 0xca, 0xf9, 0xbf, 0x5e, - 0x84, 0x37, 0x1e, 0xb1, 0xb3, 0xed, 0x44, 0xaf, 0xc4, 0x20, 0xab, 0x50, 0xec, 0xc3, 0x0e, 0x76, - 0x54, 0x08, 0xe9, 0x20, 0x14, 0x76, 0x14, 0xf4, 0x7c, 0x9e, 0xf8, 0x50, 0x08, 0x13, 0x10, 0xaa, - 0x0e, 0xc8, 0xfb, 0x90, 0x7b, 0xc4, 0xf8, 0x59, 0x10, 0x3d, 0x17, 0x5a, 0x57, 0x9a, 0x45, 0xc4, - 0x79, 0xc4, 0x38, 0xce, 0x55, 0x34, 0x39, 0xc3, 0x61, 0x2d, 0x4c, 0x86, 0xb5, 0xec, 0xa4, 0x61, - 0x2d, 0x39, 0x25, 0x9b, 0x50, 0x6c, 0x07, 0x7e, 0xcc, 0x23, 0xdb, 0x45, 0xc1, 0x4b, 0x02, 0xf9, - 0x4d, 0x44, 0x96, 0x8e, 0xdd, 0x1e, 0x1c, 0x52, 0x1d, 0x93, 0x6c, 0x00, 0xb0, 0x97, 0x3c, 0xb2, - 0xf7, 0x83, 0xb8, 0xff, 0xb0, 0x01, 0xa4, 0x43, 0xc0, 0x41, 0x8b, 0x6a, 0xa7, 0xd6, 0x5b, 0x70, - 0x79, 0xd8, 0x22, 0xca, 0x54, 0xf7, 0xe0, 0xff, 0x28, 0xf3, 0x98, 0x1d, 0xb3, 0xf9, 0xad, 0x65, - 0x99, 0x50, 0x1b, 0x27, 0x56, 0x8c, 0xff, 0x93, 0x81, 0xe2, 0xee, 0x4b, 0xd6, 0x3e, 0x62, 0x71, - 0x6c, 0x77, 0xc5, 0xc8, 0xd8, 0x8a, 0x82, 0x36, 0x8b, 0xe3, 0x3e, 0xaf, 0x01, 0x80, 0x7c, 0x1f, - 0xb2, 0x07, 0xbe, 0xcb, 0x55, 0x7f, 0x5c, 0x4b, 0x9d, 0xd8, 0x5d, 0xae, 0x78, 0xee, 0x2f, 0x50, - 0x41, 0x45, 0xee, 0x42, 0x16, 0xab, 0xcb, 0x2c, 0x15, 0xde, 0xd1, 0x68, 0x91, 0x86, 0x6c, 0x89, - 0x2f, 0x6b, 0xee, 0x97, 0x4c, 0x79, 0x69, 0x3d, 0xbd, 0x35, 0xb9, 0x5f, 0xb2, 0x01, 0x07, 0x45, - 0x49, 0x76, 0x21, 0x77, 0xcc, 0xed, 0x88, 0x33, 0x47, 0x79, 0xef, 0x7a, 0xda, 0x04, 0x23, 0x31, - 0x07, 0x5c, 0x12, 0x5a, 0x34, 0xc2, 0xee, 0x4b, 0x97, 0xab, 0x6c, 0x48, 0x33, 0x02, 0xa2, 0x69, - 0x8a, 0xe0, 0x16, 0xa9, 0x77, 0x02, 0x9f, 0xd5, 0x72, 0x53, 0xa9, 0x11, 0x4d, 0xa3, 0xc6, 0x2d, - 0x9a, 0xe1, 0xd8, 0xed, 0xe2, 0x60, 0x98, 0x9f, 0x6a, 0x06, 0x89, 0xa8, 0x99, 0x41, 0x02, 0xb6, - 0x72, 0xb0, 0x24, 0xc6, 0x20, 0xeb, 0xb7, 0x06, 0x14, 0x35, 0x3f, 0xcd, 0x90, 0x77, 0xef, 0x40, - 0x16, 0x5f, 0xd5, 0xca, 0xff, 0x79, 0x91, 0x75, 0x8c, 0xdb, 0x54, 0x40, 0xb1, 0x70, 0xec, 0x39, - 0xb2, 0x28, 0x96, 0x29, 0x2e, 0x11, 0xf2, 0x84, 0x9f, 0x0b, 0x97, 0xe5, 0x29, 0x2e, 0xc9, 0x0d, - 0xc8, 0x1f, 0xb3, 0x76, 0x2f, 0x72, 0xf9, 0xb9, 0x70, 0x42, 0xa5, 0x59, 0x15, 0xe5, 0x44, 0xc1, - 0x44, 0x72, 0xf6, 0x31, 0xac, 0x87, 0x18, 0x9c, 0x83, 0x0b, 0x12, 0xc8, 0x6e, 0xe3, 0x43, 0x09, - 0x6f, 0x56, 0xa6, 0x62, 0x8d, 0x6f, 0xd5, 0xdd, 0x69, 0x6f, 0xd5, 0xdd, 0xe4, 0xad, 0x3a, 0xec, - 0x54, 0xec, 0x3e, 0x9a, 0x91, 0xad, 0x07, 0x50, 0xe8, 0x07, 0x1e, 0xa9, 0xc0, 0xe2, 0x9e, 0xa3, - 0x24, 0x2d, 0xee, 0x39, 0xa8, 0xca, 0xee, 0xe3, 0x3d, 0x21, 0x25, 0x4f, 0x71, 0xd9, 0x1f, 0x12, - 0x32, 0xda, 0x90, 0xb0, 0x89, 0xaf, 0x70, 0x2d, 0xfa, 0x10, 0x89, 0x06, 0x67, 0x71, 0x72, 0x65, - 0x5c, 0x4b, 0x35, 0xbc, 0x58, 0xf0, 0x12, 0x6a, 0x78, 0xb1, 0x75, 0x0d, 0xca, 0x43, 0xfe, 0x42, - 0x24, 0xf1, 0xec, 0x53, 0xb3, 0x24, 0xae, 0x37, 0x18, 0xac, 0x8c, 0x7c, 0x09, 0x22, 0xef, 0xc3, - 0xb2, 0xfc, 0xe2, 0x50, 0x5d, 0x30, 0xdf, 0xfe, 0xfa, 0x9b, 0xd5, 0x37, 0x47, 0x10, 0xe4, 0x21, - 0xa2, 0x6d, 0xf5, 0x7c, 0xc7, 0x63, 0x55, 0x63, 0x22, 0x9a, 0x3c, 0x34, 0xb3, 0xbf, 0xfa, 0xfd, - 0x95, 0x85, 0x0d, 0x1b, 0x2e, 0x8d, 0x7d, 0xc5, 0x20, 0xd7, 0x20, 0x7b, 0xcc, 0xbc, 0x4e, 0x22, - 0x66, 0x0c, 0x01, 0x0f, 0xc9, 0x55, 0xc8, 0x50, 0xfb, 0xac, 0x6a, 0x98, 0xb5, 0xaf, 0xbf, 0x59, - 0xbd, 0x3c, 0xfe, 0x29, 0xc4, 0x3e, 0x93, 0x22, 0x9a, 0x7f, 0x01, 0x28, 0x1c, 0x1e, 0x6e, 0x6d, - 0x45, 0xae, 0xd3, 0x65, 0xe4, 0x97, 0x06, 0x90, 0xf1, 0x97, 0x28, 0xb9, 0x9d, 0x9e, 0xe3, 0x93, - 0x1f, 0xe4, 0xe6, 0xc7, 0x73, 0x52, 0xa9, 0x49, 0xe3, 0x73, 0x58, 0x12, 0xe3, 0x31, 0xf9, 0x60, - 0xc6, 0x67, 0x8d, 0xb9, 0x3e, 0x1d, 0x51, 0xf1, 0x6e, 0x43, 0x3e, 0x19, 0x31, 0xc9, 0x46, 0xea, - 0xf5, 0x86, 0x26, 0x68, 0xf3, 0xc3, 0x99, 0x70, 0x95, 0x90, 0x9f, 0x42, 0x4e, 0x4d, 0x8e, 0xe4, - 0xfa, 0x14, 0xba, 0xc1, 0x0c, 0x6b, 0x6e, 0xcc, 0x82, 0x3a, 0x50, 0x23, 0x99, 0x10, 0x53, 0xd5, - 0x18, 0x99, 0x3f, 0x53, 0xd5, 0x18, 0x1b, 0x39, 0xdb, 0x83, 0x87, 0x60, 0xaa, 0x90, 0x91, 0x79, - 0x33, 0x55, 0xc8, 0xe8, 0xd8, 0x49, 0x9e, 0x42, 0x16, 0xc7, 0x4e, 0x92, 0x56, 0x7e, 0xb5, 0xb9, - 0xd4, 0x4c, 0x8b, 0x89, 0xa1, 0x79, 0xf5, 0x27, 0xd8, 0xa6, 0xc4, 0x9b, 0x3f, 0xbd, 0x41, 0x69, - 0x1f, 0xea, 0xcc, 0xeb, 0x33, 0x60, 0x0e, 0xd8, 0xab, 0xf7, 0xf2, 0xfa, 0x0c, 0x5f, 0xcb, 0xa6, - 0xb3, 0x1f, 0xf9, 0x2e, 0x17, 0x40, 0x49, 0x9f, 0x3e, 0x48, 0x3d, 0x85, 0x74, 0xc2, 0xe0, 0x66, - 0x36, 0x66, 0xc6, 0x57, 0x02, 0xbf, 0xc2, 0xb7, 0xd7, 0xf0, 0x64, 0x42, 0x9a, 0xa9, 0xe6, 0x98, - 0x38, 0x03, 0x99, 0xb7, 0xe6, 0xa2, 0x51, 0xc2, 0x6d, 0x39, 0xf9, 0xa8, 0xe9, 0x86, 0xa4, 0x37, - 0xf2, 0xfe, 0x84, 0x64, 0xce, 0x88, 0xb7, 0x6e, 0xdc, 0x34, 0x30, 0xce, 0x70, 0xe2, 0x4d, 0xe5, - 0xad, 0x3d, 0x05, 0x52, 0xe3, 0x4c, 0x1f, 0x9d, 0xb7, 0x4a, 0xdf, 0xbe, 0xba, 0x62, 0xfc, 0xfd, - 0xd5, 0x15, 0xe3, 0x5f, 0xaf, 0xae, 0x18, 0x27, 0xcb, 0xe2, 0xef, 0xc7, 0x5b, 0xff, 0x0d, 0x00, - 0x00, 0xff, 0xff, 0x76, 0x21, 0x31, 0x33, 0xd0, 0x1d, 0x00, 0x00, + // 2452 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x59, 0xcf, 0x6f, 0x1b, 0xc7, + 0xf5, 0xd7, 0x8a, 0x14, 0x25, 0x3d, 0x52, 0x14, 0x3d, 0x76, 0xf2, 0xa5, 0x17, 0x81, 0x23, 0xaf, + 0x63, 0x45, 0x56, 0x9c, 0xa5, 0xbf, 0xb2, 0x0d, 0xb9, 0x76, 0xeb, 0xc4, 0xfa, 0x05, 0x29, 0x96, + 0x6c, 0x76, 0xe4, 0xc2, 0x45, 0x90, 0x02, 0x5d, 0x71, 0x87, 0xf4, 0xd6, 0xab, 0xdd, 0xed, 0xee, + 0xd0, 0x32, 0x93, 0x4b, 0x7b, 0x28, 0x50, 0xe4, 0xd4, 0x53, 0x6f, 0x41, 0x81, 0x16, 0xe8, 0xb9, + 0xfd, 0x03, 0xda, 0x73, 0x80, 0x5e, 0x7a, 0xee, 0x21, 0x28, 0xfc, 0x0f, 0xf4, 0x56, 0xa0, 0xb7, + 0xe2, 0xcd, 0xcc, 0x92, 0xc3, 0x1f, 0x5a, 0x92, 0xf5, 0x89, 0x33, 0x6f, 0xde, 0x8f, 0x79, 0xef, + 0xcd, 0x7b, 0xf3, 0x99, 0x25, 0x2c, 0xb5, 0x1c, 0xce, 0xce, 0x9c, 0x8e, 0x1d, 0xc5, 0x21, 0x0f, + 0xc9, 0xe5, 0xd3, 0xf0, 0xa4, 0x63, 0x9f, 0xb4, 0x3d, 0xdf, 0x7d, 0xe9, 0x71, 0xfb, 0xd5, 0xff, + 0xdb, 0xcd, 0x38, 0x0c, 0x38, 0x0b, 0x5c, 0xf3, 0xe3, 0x96, 0xc7, 0x5f, 0xb4, 0x4f, 0xec, 0x46, + 0x78, 0x5a, 0x6b, 0x85, 0xad, 0xb0, 0x26, 0x24, 0x4e, 0xda, 0x4d, 0x31, 0x13, 0x13, 0x31, 0x92, + 0x9a, 0xcc, 0x8d, 0x41, 0xf6, 0x56, 0x18, 0xb6, 0x7c, 0xe6, 0x44, 0x5e, 0xa2, 0x86, 0xb5, 0x38, + 0x6a, 0xd4, 0x12, 0xee, 0xf0, 0x76, 0xa2, 0x64, 0x6e, 0x6a, 0x32, 0xb8, 0x91, 0x5a, 0xba, 0x91, + 0x5a, 0x12, 0xfa, 0xaf, 0x58, 0x5c, 0x8b, 0x4e, 0x6a, 0x61, 0x94, 0x72, 0xd7, 0xce, 0xe5, 0x76, + 0x22, 0xaf, 0xc6, 0x3b, 0x11, 0x4b, 0x6a, 0x67, 0x61, 0xfc, 0x92, 0xc5, 0x4a, 0xe0, 0xf6, 0xb9, + 0x02, 0x6d, 0xee, 0xf9, 0x28, 0xd5, 0x70, 0xa2, 0x04, 0x8d, 0xe0, 0xaf, 0x12, 0xd2, 0xdd, 0xe6, + 0x61, 0xe0, 0x25, 0xdc, 0xf3, 0x5a, 0x5e, 0xad, 0x99, 0x08, 0x19, 0x69, 0x05, 0x9d, 0x50, 0xec, + 0x77, 0x33, 0x5c, 0x68, 0xc7, 0x0d, 0x16, 0x85, 0xbe, 0xd7, 0xe8, 0xa0, 0x0d, 0x39, 0x92, 0x62, + 0xd6, 0xdf, 0xf2, 0x50, 0xa0, 0x2c, 0x69, 0xfb, 0x9c, 0xac, 0xc2, 0x52, 0xcc, 0x9a, 0x3b, 0x2c, + 0x8a, 0x59, 0xc3, 0xe1, 0xcc, 0xad, 0x1a, 0x2b, 0xc6, 0xda, 0xe2, 0xfe, 0x0c, 0xed, 0x27, 0x93, + 0x1f, 0x41, 0x39, 0x66, 0xcd, 0x44, 0x63, 0x9c, 0x5d, 0x31, 0xd6, 0x8a, 0x1b, 0x1f, 0xd9, 0xe7, + 0xe6, 0xd0, 0xa6, 0xac, 0x79, 0xe4, 0x44, 0x3d, 0x91, 0xfd, 0x19, 0x3a, 0xa0, 0x84, 0x6c, 0x40, + 0x2e, 0x66, 0xcd, 0x6a, 0x4e, 0xe8, 0xba, 0x92, 0xad, 0x6b, 0x7f, 0x86, 0x22, 0x33, 0xd9, 0x84, + 0x3c, 0x6a, 0xa9, 0xe6, 0x85, 0xd0, 0xd5, 0xb1, 0x1b, 0xd8, 0x9f, 0xa1, 0x42, 0x80, 0x3c, 0x86, + 0x85, 0x53, 0xc6, 0x1d, 0xd7, 0xe1, 0x4e, 0x15, 0x56, 0x72, 0x6b, 0xc5, 0x8d, 0x5a, 0xa6, 0x30, + 0x06, 0xc8, 0x3e, 0x52, 0x12, 0xbb, 0x01, 0x8f, 0x3b, 0xb4, 0xab, 0x80, 0x3c, 0x87, 0x92, 0xc3, + 0x39, 0xc3, 0x64, 0x78, 0x61, 0x90, 0x54, 0x4b, 0x42, 0xe1, 0xed, 0xf1, 0x0a, 0x1f, 0x69, 0x52, + 0x52, 0x69, 0x9f, 0x22, 0xf3, 0x01, 0x2c, 0xf5, 0xd9, 0x24, 0x15, 0xc8, 0xbd, 0x64, 0x1d, 0x99, + 0x18, 0x8a, 0x43, 0x72, 0x09, 0xe6, 0x5e, 0x39, 0x7e, 0x9b, 0x89, 0x1c, 0x94, 0xa8, 0x9c, 0xdc, + 0x9f, 0xbd, 0x67, 0x98, 0x2f, 0xe0, 0xc2, 0x90, 0xfe, 0x11, 0x0a, 0x7e, 0xa0, 0x2b, 0x28, 0x6e, + 0x7c, 0x98, 0xb1, 0x6b, 0x5d, 0x9d, 0x66, 0x69, 0x6b, 0x01, 0x0a, 0xb1, 0x70, 0xc8, 0xfa, 0xad, + 0x01, 0x95, 0xc1, 0x54, 0x93, 0x03, 0x95, 0x24, 0x43, 0x84, 0xe5, 0xee, 0x14, 0xa7, 0x04, 0x09, + 0x2a, 0x30, 0x42, 0x85, 0xb9, 0x09, 0x8b, 0x5d, 0xd2, 0xb8, 0x60, 0x2c, 0x6a, 0x5b, 0xb4, 0x36, + 0x21, 0x47, 0x59, 0x93, 0x94, 0x61, 0xd6, 0x53, 0xe7, 0x9a, 0xce, 0x7a, 0x2e, 0x59, 0x81, 0x9c, + 0xcb, 0x9a, 0xca, 0xf5, 0xb2, 0x1d, 0x9d, 0xd8, 0x3b, 0xac, 0xe9, 0x05, 0x1e, 0xba, 0x48, 0x71, + 0xc9, 0xfa, 0xbd, 0x81, 0xf5, 0x81, 0xdb, 0x22, 0x9f, 0xf4, 0xf9, 0x31, 0xfe, 0xb4, 0x0f, 0xed, + 0xfe, 0x79, 0xf6, 0xee, 0xef, 0xf4, 0x67, 0x62, 0x4c, 0x09, 0xe8, 0xde, 0xfd, 0x18, 0x4a, 0x7a, + 0x6e, 0xc8, 0x3e, 0x14, 0xb5, 0x73, 0xa4, 0x36, 0xbc, 0x3a, 0x59, 0x66, 0xa9, 0x2e, 0x6a, 0xfd, + 0x31, 0x07, 0x45, 0x6d, 0x91, 0x3c, 0x84, 0xfc, 0x4b, 0x2f, 0x90, 0x21, 0x2c, 0x6f, 0xac, 0x4f, + 0xa6, 0xf2, 0xb1, 0x17, 0xb8, 0x54, 0xc8, 0x91, 0xba, 0x56, 0x77, 0xb3, 0x62, 0x5b, 0x77, 0x26, + 0xd3, 0x71, 0x6e, 0xf1, 0xdd, 0x9a, 0xa2, 0x6d, 0xc8, 0xa6, 0x41, 0x20, 0x1f, 0x39, 0xfc, 0x85, + 0x68, 0x1a, 0x8b, 0x54, 0x8c, 0xc9, 0x2d, 0xb8, 0xe8, 0x05, 0xcf, 0x42, 0x1e, 0xd6, 0x63, 0xe6, + 0x7a, 0x78, 0xf8, 0x9e, 0x75, 0x22, 0x56, 0x9d, 0x13, 0x2c, 0xa3, 0x96, 0x48, 0x1d, 0xca, 0x92, + 0x7c, 0xdc, 0x3e, 0xf9, 0x19, 0x6b, 0xf0, 0xa4, 0x5a, 0x10, 0xfe, 0xac, 0x65, 0x6c, 0xe1, 0x40, + 0x17, 0xa0, 0x03, 0xf2, 0x6f, 0x55, 0xed, 0xd6, 0x9f, 0x0d, 0x58, 0xea, 0x53, 0x4f, 0x3e, 0xed, + 0x4b, 0xd5, 0xcd, 0x49, 0xb7, 0xa5, 0x25, 0xeb, 0x33, 0x28, 0xb8, 0x5e, 0x8b, 0x25, 0x5c, 0xa4, + 0x6a, 0x71, 0x6b, 0xe3, 0xdb, 0xef, 0xde, 0x9f, 0xf9, 0xc7, 0x77, 0xef, 0xaf, 0x6b, 0x57, 0x4d, + 0x18, 0xb1, 0xa0, 0x11, 0x06, 0xdc, 0xf1, 0x02, 0x16, 0xe3, 0x05, 0xfb, 0xb1, 0x14, 0xb1, 0x77, + 0xc4, 0x0f, 0x55, 0x1a, 0x30, 0xe8, 0x81, 0x73, 0xca, 0x44, 0x9e, 0x16, 0xa9, 0x18, 0x5b, 0x1c, + 0x96, 0x28, 0xe3, 0xed, 0x38, 0xa0, 0xec, 0xe7, 0x6d, 0x64, 0xfa, 0x5e, 0xda, 0x48, 0xc4, 0xa6, + 0xc7, 0x35, 0x74, 0x64, 0xa4, 0x4a, 0x80, 0xac, 0xc1, 0x1c, 0x8b, 0xe3, 0x30, 0x56, 0xc5, 0x43, + 0x6c, 0x79, 0xd5, 0xdb, 0x71, 0xd4, 0xb0, 0x8f, 0xc5, 0x55, 0x4f, 0x25, 0x83, 0x55, 0x81, 0x72, + 0x6a, 0x35, 0x89, 0xc2, 0x20, 0x61, 0xd6, 0x32, 0x86, 0x2e, 0x6a, 0xf3, 0x44, 0xed, 0xc3, 0xfa, + 0xab, 0x01, 0xe5, 0x94, 0x22, 0x79, 0xc8, 0x17, 0x50, 0xec, 0xb5, 0x86, 0xb4, 0x07, 0xdc, 0xcf, + 0x0c, 0xaa, 0x2e, 0xaf, 0xf5, 0x15, 0xd5, 0x12, 0x74, 0x75, 0xe6, 0x13, 0xa8, 0x0c, 0x32, 0x8c, + 0xc8, 0xfe, 0x07, 0xfd, 0x0d, 0x62, 0xb0, 0x5f, 0x69, 0xa7, 0xe1, 0x5f, 0x06, 0x5c, 0xa6, 0x4c, + 0x60, 0x97, 0x83, 0x53, 0xa7, 0xc5, 0xb6, 0xc3, 0xa0, 0xe9, 0xb5, 0xd2, 0x30, 0x57, 0x44, 0x33, + 0x4c, 0x35, 0x63, 0x5f, 0x5c, 0x83, 0x85, 0xba, 0xef, 0xf0, 0x66, 0x18, 0x9f, 0x2a, 0xe5, 0x25, + 0x54, 0x9e, 0xd2, 0x68, 0x77, 0x95, 0xac, 0x40, 0x51, 0x29, 0x3e, 0x0a, 0xdd, 0x34, 0x9d, 0x3a, + 0x89, 0x54, 0x61, 0xfe, 0x30, 0x6c, 0x3d, 0xc1, 0x64, 0xcb, 0x0a, 0x4b, 0xa7, 0xc4, 0x82, 0x92, + 0x62, 0x8c, 0xbb, 0xd5, 0x35, 0x47, 0xfb, 0x68, 0xe4, 0x3d, 0x58, 0x3c, 0x66, 0x49, 0xe2, 0x85, + 0xc1, 0xc1, 0x4e, 0xb5, 0x20, 0xe4, 0x7b, 0x04, 0xd4, 0x7d, 0xcc, 0xc3, 0x98, 0x1d, 0xec, 0x54, + 0xe7, 0xa5, 0x6e, 0x35, 0xb5, 0x7e, 0x61, 0x80, 0x39, 0xca, 0x63, 0x95, 0xbe, 0xcf, 0xa0, 0x20, + 0x0f, 0xa4, 0xf4, 0xfa, 0x7f, 0x3b, 0xca, 0xf2, 0x97, 0xbc, 0x0b, 0x05, 0xa9, 0x5d, 0x55, 0xa1, + 0x9a, 0x59, 0xbf, 0x2a, 0x40, 0xe9, 0x18, 0x37, 0x90, 0xc6, 0xd9, 0x06, 0xe8, 0xa5, 0x47, 0x1d, + 0xe9, 0xc1, 0xa4, 0x69, 0x1c, 0xc4, 0x84, 0x85, 0x3d, 0x75, 0x7c, 0xd4, 0x0d, 0xd6, 0x9d, 0x93, + 0xcf, 0xa1, 0x98, 0x8e, 0x9f, 0x46, 0xbc, 0x9a, 0x13, 0xe7, 0xef, 0x5e, 0xc6, 0xf9, 0xd3, 0x77, + 0x62, 0x6b, 0xa2, 0xea, 0xf4, 0x69, 0x14, 0x72, 0x13, 0x2e, 0x38, 0xbe, 0x1f, 0x9e, 0xa9, 0x92, + 0x12, 0xc5, 0x21, 0x92, 0xb3, 0x40, 0x87, 0x17, 0xb0, 0x55, 0x6a, 0xc4, 0x47, 0x71, 0xec, 0x74, + 0xf0, 0x34, 0x15, 0x04, 0xff, 0xa8, 0x25, 0xec, 0x5a, 0x7b, 0x5e, 0xe0, 0xf8, 0x55, 0x10, 0x3c, + 0x72, 0x82, 0xa7, 0x61, 0xf7, 0x75, 0x14, 0xc6, 0x9c, 0xc5, 0x8f, 0x38, 0x8f, 0xab, 0x45, 0x11, + 0xcc, 0x3e, 0x1a, 0xa9, 0x43, 0x69, 0xdb, 0x69, 0xbc, 0x60, 0x07, 0xa7, 0x48, 0x4c, 0x91, 0x55, + 0x56, 0x2f, 0x13, 0xec, 0x4f, 0x23, 0x1d, 0x52, 0xe9, 0x1a, 0x48, 0x03, 0xca, 0xa9, 0xeb, 0xb2, + 0x42, 0xab, 0x4b, 0x42, 0xe7, 0x83, 0x69, 0x43, 0x29, 0xa5, 0xa5, 0x89, 0x01, 0x95, 0x98, 0xc8, + 0x5d, 0x2c, 0x46, 0x87, 0xb3, 0x6a, 0x59, 0xf8, 0xdc, 0x9d, 0x93, 0x23, 0x28, 0x1f, 0x0b, 0x40, + 0x5e, 0x47, 0x18, 0xee, 0xb1, 0xa4, 0xba, 0x2c, 0x36, 0x70, 0x7d, 0x78, 0x03, 0x3a, 0x70, 0xb7, + 0x05, 0x7b, 0x87, 0x0e, 0x08, 0x9b, 0x0f, 0xa1, 0x32, 0x98, 0xdc, 0x69, 0x80, 0x91, 0xf9, 0x43, + 0xb8, 0x38, 0xc2, 0xa3, 0xb7, 0x6a, 0x3e, 0x7f, 0x32, 0xe0, 0xc2, 0x50, 0x1a, 0xf0, 0x02, 0x10, + 0x45, 0x2f, 0x55, 0x8a, 0x31, 0x39, 0x82, 0x39, 0x4c, 0x73, 0xa2, 0xa0, 0xc0, 0xe6, 0x34, 0x79, + 0xb5, 0x85, 0xa4, 0x8c, 0xbf, 0xd4, 0x62, 0xde, 0x03, 0xe8, 0x11, 0xa7, 0x82, 0x87, 0x5f, 0xc0, + 0x92, 0x4a, 0xb2, 0xea, 0x17, 0x15, 0x89, 0x2a, 0x94, 0x30, 0xa2, 0x86, 0xde, 0xdd, 0x94, 0x9b, + 0xf2, 0x6e, 0xb2, 0xbe, 0x82, 0x65, 0xca, 0x1c, 0x77, 0xcf, 0xf3, 0xd9, 0xf9, 0x2d, 0x18, 0x8b, + 0xdf, 0xf3, 0x59, 0x1d, 0x91, 0x49, 0x5a, 0xfc, 0x6a, 0x4e, 0xee, 0xc3, 0x1c, 0x75, 0x82, 0x16, + 0x53, 0xa6, 0x3f, 0xc8, 0x30, 0x2d, 0x8c, 0x20, 0x2f, 0x95, 0x22, 0xd6, 0x03, 0x58, 0xec, 0xd2, + 0xb0, 0x75, 0x3d, 0x6d, 0x36, 0x13, 0x26, 0xdb, 0x60, 0x8e, 0xaa, 0x19, 0xd2, 0x0f, 0x59, 0xd0, + 0x52, 0xa6, 0x73, 0x54, 0xcd, 0xac, 0x55, 0x84, 0xf3, 0xe9, 0xce, 0x55, 0x68, 0x08, 0xe4, 0x77, + 0x10, 0xbe, 0x19, 0xa2, 0x5e, 0xc5, 0xd8, 0x72, 0xf1, 0x4e, 0x75, 0xdc, 0x1d, 0x2f, 0x3e, 0xdf, + 0xc1, 0x2a, 0xcc, 0xef, 0x78, 0xb1, 0xe6, 0x5f, 0x3a, 0x25, 0xab, 0x78, 0xdb, 0x36, 0xfc, 0xb6, + 0x8b, 0xde, 0x72, 0x16, 0x07, 0xea, 0x5a, 0x19, 0xa0, 0x5a, 0x9f, 0xc8, 0x38, 0x0a, 0x2b, 0x6a, + 0x33, 0x37, 0x61, 0x9e, 0x05, 0x3c, 0xc6, 0x32, 0x92, 0x57, 0x32, 0xb1, 0xe5, 0x03, 0xd9, 0x16, + 0x0f, 0x64, 0x71, 0xf5, 0xd3, 0x94, 0xc5, 0xda, 0x84, 0x65, 0x24, 0x64, 0x27, 0x82, 0x40, 0x5e, + 0xdb, 0xa4, 0x18, 0x5b, 0xf7, 0xa1, 0xd2, 0x13, 0x54, 0xa6, 0x57, 0x21, 0x8f, 0xd8, 0x54, 0xf5, + 0xf5, 0x51, 0x76, 0xc5, 0xba, 0x75, 0x0d, 0x96, 0xd3, 0xe2, 0x3f, 0xd7, 0xa8, 0x45, 0xa0, 0xd2, + 0x63, 0x52, 0xb0, 0x64, 0x09, 0x8a, 0x75, 0x2f, 0x48, 0x6f, 0x6d, 0xeb, 0x8d, 0x01, 0xa5, 0x7a, + 0x18, 0xf4, 0xee, 0xb4, 0x3a, 0x2c, 0xa7, 0xa5, 0xfb, 0xa8, 0x7e, 0xb0, 0xed, 0x44, 0x69, 0x0c, + 0x56, 0x86, 0xcf, 0x87, 0xfa, 0xc4, 0x60, 0x4b, 0xc6, 0xad, 0x3c, 0x5e, 0x7f, 0x74, 0x50, 0x9c, + 0x7c, 0x0a, 0xf3, 0x87, 0x87, 0x5b, 0x42, 0xd3, 0xec, 0x54, 0x9a, 0x52, 0x31, 0xf2, 0x10, 0xe6, + 0x9f, 0x8b, 0x2f, 0x1f, 0x89, 0xba, 0xa2, 0x46, 0x9c, 0x55, 0x19, 0x21, 0xc9, 0x46, 0x59, 0x23, + 0x8c, 0x5d, 0x9a, 0x0a, 0x59, 0xff, 0x36, 0xa0, 0xf8, 0xdc, 0xe9, 0x21, 0xc2, 0x1e, 0x04, 0x7d, + 0x8b, 0x7b, 0x5b, 0x41, 0xd0, 0x4b, 0x30, 0xe7, 0xb3, 0x57, 0xcc, 0x57, 0x67, 0x5c, 0x4e, 0x90, + 0x9a, 0xbc, 0x08, 0x63, 0x59, 0xd6, 0x25, 0x2a, 0x27, 0x58, 0x10, 0x2e, 0xe3, 0x8e, 0xe7, 0x57, + 0xf3, 0x2b, 0x39, 0xbc, 0xe3, 0xe5, 0x0c, 0x33, 0xd7, 0x8e, 0x7d, 0xf5, 0x2e, 0xc0, 0x21, 0xb1, + 0x20, 0xef, 0x05, 0xcd, 0x50, 0xdc, 0x7f, 0xaa, 0x2d, 0xca, 0x16, 0x7d, 0x10, 0x34, 0x43, 0x2a, + 0xd6, 0xc8, 0x55, 0x28, 0xc4, 0x58, 0x7f, 0x49, 0x75, 0x5e, 0x04, 0x65, 0x11, 0xb9, 0x64, 0x95, + 0xaa, 0x05, 0xab, 0x0c, 0x25, 0xe9, 0xb7, 0x4a, 0xfe, 0x6f, 0x66, 0xe1, 0xe2, 0x13, 0x76, 0xb6, + 0x9d, 0xfa, 0x95, 0x06, 0x64, 0x05, 0x8a, 0x5d, 0xda, 0xc1, 0x8e, 0x3a, 0x42, 0x3a, 0x09, 0x8d, + 0x1d, 0x85, 0xed, 0x80, 0xa7, 0x39, 0x14, 0xc6, 0x04, 0x85, 0xaa, 0x05, 0x72, 0x1d, 0xe6, 0x9f, + 0x30, 0x7e, 0x16, 0xc6, 0x2f, 0x85, 0xd7, 0xe5, 0x8d, 0x22, 0xf2, 0x3c, 0x61, 0x1c, 0x01, 0x1c, + 0x4d, 0xd7, 0x10, 0x15, 0x46, 0x29, 0x2a, 0xcc, 0x8f, 0x42, 0x85, 0xe9, 0x2a, 0xd9, 0x84, 0x62, + 0x23, 0x0c, 0x12, 0x1e, 0x3b, 0x1e, 0x1a, 0x9e, 0x13, 0xcc, 0xef, 0x20, 0xb3, 0x4c, 0xec, 0x76, + 0x6f, 0x91, 0xea, 0x9c, 0x64, 0x1d, 0x80, 0xbd, 0xe6, 0xb1, 0xb3, 0x1f, 0x26, 0xdd, 0x17, 0x14, + 0xa0, 0x1c, 0x12, 0x0e, 0xea, 0x54, 0x5b, 0xb5, 0xde, 0x85, 0x4b, 0xfd, 0x11, 0x51, 0xa1, 0x7a, + 0x00, 0xff, 0x47, 0x99, 0xcf, 0x9c, 0x84, 0x4d, 0x1f, 0x2d, 0xcb, 0x84, 0xea, 0xb0, 0xb0, 0x52, + 0xfc, 0x9f, 0x1c, 0x14, 0x77, 0x5f, 0xb3, 0xc6, 0x11, 0x4b, 0x12, 0xa7, 0x25, 0xb0, 0x69, 0x3d, + 0x0e, 0x1b, 0x2c, 0x49, 0xba, 0xba, 0x7a, 0x04, 0xf2, 0x7d, 0xc8, 0x1f, 0x04, 0x1e, 0x57, 0xf7, + 0xe3, 0x6a, 0xe6, 0xd3, 0xc0, 0xe3, 0x4a, 0xe7, 0xfe, 0x0c, 0x15, 0x52, 0xe4, 0x3e, 0xe4, 0xb1, + 0xbb, 0x4c, 0xd2, 0xe1, 0x5d, 0x4d, 0x16, 0x65, 0xc8, 0x96, 0xf8, 0x84, 0xe7, 0x7d, 0xc9, 0x54, + 0x96, 0xd6, 0xb2, 0xaf, 0x26, 0xef, 0x4b, 0xd6, 0xd3, 0xa0, 0x24, 0xc9, 0x2e, 0x22, 0x6b, 0x27, + 0xe6, 0xcc, 0x55, 0xd9, 0xbb, 0x91, 0x05, 0x88, 0x24, 0x67, 0x4f, 0x4b, 0x2a, 0x8b, 0x41, 0xd8, + 0x7d, 0xed, 0x71, 0x55, 0x0d, 0x59, 0x41, 0x40, 0x36, 0xcd, 0x11, 0x9c, 0xa2, 0xf4, 0x4e, 0x18, + 0x30, 0x81, 0xed, 0xb3, 0xa5, 0x91, 0x4d, 0x93, 0xc6, 0x29, 0x86, 0xe1, 0xd8, 0x6b, 0x21, 0xce, + 0x5c, 0x18, 0x1b, 0x06, 0xc9, 0xa8, 0x85, 0x41, 0x12, 0xb6, 0xe6, 0x61, 0x4e, 0xc0, 0x20, 0xeb, + 0x77, 0x06, 0x14, 0xb5, 0x3c, 0x4d, 0x50, 0x77, 0xef, 0x41, 0x1e, 0x9f, 0xef, 0x2a, 0xff, 0x0b, + 0xa2, 0xea, 0x18, 0x77, 0xa8, 0xa0, 0x62, 0xe3, 0xd8, 0x73, 0x65, 0x53, 0x5c, 0xa2, 0x38, 0x44, + 0xca, 0x33, 0xde, 0x11, 0x29, 0x5b, 0xa0, 0x38, 0x24, 0x37, 0x61, 0xe1, 0x98, 0x35, 0xda, 0xb1, + 0xc7, 0x3b, 0x22, 0x09, 0xe5, 0x8d, 0x8a, 0x68, 0x27, 0x8a, 0x26, 0x8a, 0xb3, 0xcb, 0x61, 0x3d, + 0xc6, 0xc3, 0xd9, 0xdb, 0x20, 0x81, 0xfc, 0x36, 0xbe, 0xc8, 0x70, 0x67, 0x4b, 0x54, 0x8c, 0xf1, + 0x51, 0xbc, 0x3b, 0xee, 0x51, 0xbc, 0x9b, 0x3e, 0x8a, 0xfb, 0x93, 0x8a, 0xb7, 0x8f, 0x16, 0x64, + 0xeb, 0x11, 0x2c, 0x76, 0x0f, 0x1e, 0x29, 0xc3, 0xec, 0x9e, 0xab, 0x2c, 0xcd, 0xee, 0xb9, 0xe8, + 0xca, 0xee, 0xd3, 0x3d, 0x61, 0x65, 0x81, 0xe2, 0xb0, 0x0b, 0x12, 0x72, 0x1a, 0x48, 0xd8, 0xc4, + 0xe7, 0xbe, 0x76, 0xfa, 0x90, 0x89, 0x86, 0x67, 0x49, 0xba, 0x65, 0x1c, 0x4b, 0x37, 0xfc, 0x44, + 0xe8, 0x12, 0x6e, 0xf8, 0x89, 0x75, 0x0d, 0x96, 0xfa, 0xf2, 0x85, 0x4c, 0xe2, 0x7d, 0xa9, 0xb0, + 0x24, 0x8e, 0xd7, 0x19, 0x2c, 0x0f, 0x7c, 0x72, 0x22, 0xd7, 0xa1, 0x20, 0x3f, 0x6d, 0x54, 0x66, + 0xcc, 0xcb, 0x5f, 0x7f, 0xb3, 0xf2, 0xce, 0x00, 0x83, 0x5c, 0x44, 0xb6, 0xad, 0x76, 0xe0, 0xfa, + 0xac, 0x62, 0x8c, 0x64, 0x93, 0x8b, 0x66, 0xfe, 0xd7, 0x7f, 0xb8, 0x32, 0xb3, 0xee, 0xc0, 0x85, + 0xa1, 0xcf, 0x25, 0xe4, 0x1a, 0xe4, 0x8f, 0x99, 0xdf, 0x4c, 0xcd, 0x0c, 0x31, 0xe0, 0x22, 0xb9, + 0x0a, 0x39, 0xea, 0x9c, 0x55, 0x0c, 0xb3, 0xfa, 0xf5, 0x37, 0x2b, 0x97, 0x86, 0xbf, 0xb9, 0x38, + 0x67, 0xd2, 0xc4, 0xc6, 0x5f, 0x00, 0x16, 0x0f, 0x0f, 0xb7, 0xb6, 0x62, 0xcf, 0x6d, 0x31, 0xf2, + 0x4b, 0x03, 0xc8, 0xf0, 0xc3, 0x96, 0xdc, 0xc9, 0xae, 0xf1, 0xd1, 0x2f, 0x7f, 0xf3, 0xee, 0x94, + 0x52, 0x0a, 0x69, 0x7c, 0x0e, 0x73, 0x02, 0x1e, 0x93, 0x0f, 0x27, 0x7c, 0x25, 0x99, 0x6b, 0xe3, + 0x19, 0x95, 0xee, 0x06, 0x2c, 0xa4, 0x10, 0x93, 0xac, 0x67, 0x6e, 0xaf, 0x0f, 0x41, 0x9b, 0x1f, + 0x4d, 0xc4, 0xab, 0x8c, 0xfc, 0x14, 0xe6, 0x15, 0x72, 0x24, 0x37, 0xc6, 0xc8, 0xf5, 0x30, 0xac, + 0xb9, 0x3e, 0x09, 0x6b, 0xcf, 0x8d, 0x14, 0x21, 0x66, 0xba, 0x31, 0x80, 0x3f, 0x33, 0xdd, 0x18, + 0x82, 0x9c, 0x8d, 0xde, 0xbb, 0x32, 0xd3, 0xc8, 0x00, 0xde, 0xcc, 0x34, 0x32, 0x08, 0x3b, 0xc9, + 0x73, 0xc8, 0x23, 0xec, 0x24, 0x59, 0xed, 0x57, 0xc3, 0xa5, 0x66, 0xd6, 0x99, 0xe8, 0xc3, 0xab, + 0x3f, 0xc1, 0x6b, 0x4a, 0x7c, 0x42, 0xc8, 0xbe, 0xa0, 0xb4, 0x2f, 0x82, 0xe6, 0x8d, 0x09, 0x38, + 0x7b, 0xea, 0xd5, 0xf3, 0x7b, 0x6d, 0x82, 0xcf, 0x72, 0xe3, 0xd5, 0x0f, 0x7c, 0x00, 0x0c, 0xa1, + 0xa4, 0xa3, 0x0f, 0x62, 0x67, 0x88, 0x8e, 0x00, 0x6e, 0x66, 0x6d, 0x62, 0x7e, 0x65, 0xf0, 0x2b, + 0x7c, 0x7b, 0xf5, 0x23, 0x13, 0xb2, 0x91, 0x19, 0x8e, 0x91, 0x18, 0xc8, 0xbc, 0x3d, 0x95, 0x8c, + 0x32, 0xee, 0x48, 0xe4, 0xa3, 0xd0, 0x0d, 0xc9, 0xbe, 0xc8, 0xbb, 0x08, 0xc9, 0x9c, 0x90, 0x6f, + 0xcd, 0xb8, 0x65, 0xe0, 0x39, 0x43, 0xc4, 0x9b, 0xa9, 0x5b, 0x7b, 0x0a, 0x64, 0x9e, 0x33, 0x1d, + 0x3a, 0x6f, 0x95, 0xbe, 0x7d, 0x73, 0xc5, 0xf8, 0xfb, 0x9b, 0x2b, 0xc6, 0x3f, 0xdf, 0x5c, 0x31, + 0x4e, 0x0a, 0xe2, 0x7f, 0xce, 0xdb, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xc4, 0x91, 0xe5, 0xca, + 0x70, 0x1e, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -3370,7 +3392,7 @@ func (m *Result) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0xa i = encodeVarintGateway(dAtA, i, uint64(baseI-i)) i-- - dAtA[i] = 0x5a + dAtA[i] = 0x62 } } if len(m.Metadata) > 0 { @@ -3992,6 +4014,13 @@ func (m *ResolveImageConfigRequest) MarshalToSizedBuffer(dAtA []byte) (int, erro i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.StoreID) > 0 { + i -= len(m.StoreID) + copy(dAtA[i:], m.StoreID) + i = encodeVarintGateway(dAtA, i, uint64(len(m.StoreID))) + i-- + dAtA[i] = 0x3a + } if len(m.SessionID) > 0 { i -= len(m.SessionID) copy(dAtA[i:], m.SessionID) @@ -4105,6 +4134,20 @@ func (m *SolveRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.SourcePolicies) > 0 { + for iNdEx := len(m.SourcePolicies) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.SourcePolicies[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGateway(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x7a + } + } if m.Evaluate { i-- if m.Evaluate { @@ -5911,6 +5954,10 @@ func (m *ResolveImageConfigRequest) Size() (n int) { if l > 0 { n += 1 + l + sovGateway(uint64(l)) } + l = len(m.StoreID) + if l > 0 { + n += 1 + l + sovGateway(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -5994,6 +6041,12 @@ func (m *SolveRequest) Size() (n int) { if m.Evaluate { n += 2 } + if len(m.SourcePolicies) > 0 { + for _, e := range m.SourcePolicies { + l = e.Size() + n += 1 + l + sovGateway(uint64(l)) + } + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -6919,7 +6972,7 @@ func (m *Result) Unmarshal(dAtA []byte) error { } m.Metadata[mapkey] = mapvalue iNdEx = postIndex - case 11: + case 12: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Attestations", wireType) } @@ -8715,6 +8768,38 @@ func (m *ResolveImageConfigRequest) Unmarshal(dAtA []byte) error { } m.SessionID = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StoreID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGateway + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGateway + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGateway + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StoreID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGateway(dAtA[iNdEx:]) @@ -9355,6 +9440,40 @@ func (m *SolveRequest) Unmarshal(dAtA []byte) error { } } m.Evaluate = bool(v != 0) + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SourcePolicies", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGateway + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGateway + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGateway + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SourcePolicies = append(m.SourcePolicies, &pb1.Policy{}) + if err := m.SourcePolicies[len(m.SourcePolicies)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGateway(dAtA[iNdEx:]) @@ -10708,7 +10827,7 @@ func (m *PongResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.FrontendAPICaps = append(m.FrontendAPICaps, pb1.APICap{}) + m.FrontendAPICaps = append(m.FrontendAPICaps, pb2.APICap{}) if err := m.FrontendAPICaps[len(m.FrontendAPICaps)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } @@ -10742,7 +10861,7 @@ func (m *PongResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.LLBCaps = append(m.LLBCaps, pb1.APICap{}) + m.LLBCaps = append(m.LLBCaps, pb2.APICap{}) if err := m.LLBCaps[len(m.LLBCaps)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/frontend/gateway/pb/gateway.proto b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/frontend/gateway/pb/gateway.proto index 7bc1520e5..2e55f1db8 100644 --- a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/frontend/gateway/pb/gateway.proto +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/frontend/gateway/pb/gateway.proto @@ -8,6 +8,7 @@ import "github.com/moby/buildkit/solver/pb/ops.proto"; import "github.com/moby/buildkit/api/types/worker.proto"; import "github.com/moby/buildkit/util/apicaps/pb/caps.proto"; import "github.com/tonistiigi/fsutil/types/stat.proto"; +import "github.com/moby/buildkit/sourcepolicy/pb/policy.proto"; option (gogoproto.sizer_all) = true; @@ -50,7 +51,8 @@ message Result { RefMap refs = 4; } map metadata = 10; - map attestations = 11; + // 11 was used during development and is reserved for old attestation format + map attestations = 12; } message RefMapDeprecated { @@ -121,6 +123,7 @@ message ResolveImageConfigRequest { string LogName = 4; int32 ResolverType = 5; string SessionID = 6; + string StoreID = 7; } message ResolveImageConfigResponse { @@ -147,6 +150,8 @@ message SolveRequest { map FrontendInputs = 13; bool Evaluate = 14; + + repeated moby.buildkit.v1.sourcepolicy.Policy SourcePolicies = 15; } // CacheOptionsEntry corresponds to the control.CacheOptionsEntry diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/solver/jobs.go b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/solver/jobs.go index 070b4020b..babd94e04 100644 --- a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/solver/jobs.go +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/solver/jobs.go @@ -230,13 +230,14 @@ func (sb *subBuilder) EachValue(ctx context.Context, key string, fn func(interfa } type Job struct { - list *Solver - pr *progress.MultiReader - pw progress.Writer - span trace.Span - values sync.Map - id string - startedTime time.Time + list *Solver + pr *progress.MultiReader + pw progress.Writer + span trace.Span + values sync.Map + id string + startedTime time.Time + completedTime time.Time progressCloser func() SessionID string @@ -557,9 +558,12 @@ func (j *Job) walkProvenance(ctx context.Context, e Edge, f func(ProvenanceProvi return nil } -func (j *Job) Discard() error { - defer j.progressCloser() +func (j *Job) CloseProgress() { + j.progressCloser() + j.pw.Close() +} +func (j *Job) Discard() error { j.list.mu.Lock() defer j.list.mu.Unlock() @@ -589,6 +593,13 @@ func (j *Job) StartedTime() time.Time { return j.startedTime } +func (j *Job) RegisterCompleteTime() time.Time { + if j.completedTime.IsZero() { + j.completedTime = time.Now() + } + return j.completedTime +} + func (j *Job) InContext(ctx context.Context, f func(context.Context, session.Group) error) error { return f(progress.WithProgress(ctx, j.pw), session.NewGroup(j.SessionID)) } diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/solver/pb/attr.go b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/solver/pb/attr.go index 5b138d76f..85e7cce60 100644 --- a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/solver/pb/attr.go +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/solver/pb/attr.go @@ -29,6 +29,7 @@ const AttrImageRecordType = "image.recordtype" const AttrImageLayerLimit = "image.layerlimit" const AttrOCILayoutSessionID = "oci.session" +const AttrOCILayoutStoreID = "oci.store" const AttrOCILayoutLayerLimit = "oci.layerlimit" const AttrLocalDiffer = "local.differ" diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/solver/pb/caps.go b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/solver/pb/caps.go index 39918a469..02380a4ba 100644 --- a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/solver/pb/caps.go +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/solver/pb/caps.go @@ -35,9 +35,7 @@ const ( CapSourceHTTPPerm apicaps.CapID = "source.http.perm" CapSourceHTTPUIDGID apicaps.CapID = "soruce.http.uidgid" - CapSourceOCILayout apicaps.CapID = "source.ocilayout" - CapSourceOCILayoutSessionID apicaps.CapID = "source.ocilayout.sessionid" - CapSourceOCILayoutLayerLimit apicaps.CapID = "source.ocilayout.layerlimit" + CapSourceOCILayout apicaps.CapID = "source.ocilayout" CapBuildOpLLBFileName apicaps.CapID = "source.buildop.llbfilename" @@ -86,6 +84,8 @@ const ( // CapSourceDateEpoch is the capability to automatically handle the date epoch CapSourceDateEpoch apicaps.CapID = "exporter.sourcedateepoch" + + CapSourcePolicy apicaps.CapID = "source.policy" ) func init() { @@ -221,18 +221,6 @@ func init() { Status: apicaps.CapStatusExperimental, }) - Caps.Init(apicaps.Cap{ - ID: CapSourceOCILayoutSessionID, - Enabled: true, - Status: apicaps.CapStatusExperimental, - }) - - Caps.Init(apicaps.Cap{ - ID: CapSourceOCILayoutLayerLimit, - Enabled: true, - Status: apicaps.CapStatusExperimental, - }) - Caps.Init(apicaps.Cap{ ID: CapSourceHTTPUIDGID, Enabled: true, @@ -465,4 +453,10 @@ func init() { Enabled: true, Status: apicaps.CapStatusExperimental, }) + + Caps.Init(apicaps.Cap{ + ID: CapSourcePolicy, + Enabled: true, + Status: apicaps.CapStatusExperimental, + }) } diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/sourcepolicy/pb/generate.go b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/sourcepolicy/pb/generate.go new file mode 100644 index 000000000..041c41b80 --- /dev/null +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/sourcepolicy/pb/generate.go @@ -0,0 +1,3 @@ +package moby_buildkit_v1_sourcepolicy //nolint:revive + +//go:generate protoc -I=. --gogofaster_out=plugins=grpc:. policy.proto diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/sourcepolicy/pb/json.go b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/sourcepolicy/pb/json.go new file mode 100644 index 000000000..a9f84834e --- /dev/null +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/sourcepolicy/pb/json.go @@ -0,0 +1,62 @@ +package moby_buildkit_v1_sourcepolicy //nolint:revive + +import ( + "github.com/gogo/protobuf/proto" + "github.com/pkg/errors" +) + +// MarshalJSON implements json.Marshaler with custom marshaling for PolicyAction. +// It gives the string form of the enum value. +func (a PolicyAction) MarshalJSON() ([]byte, error) { + return proto.MarshalJSONEnum(PolicyAction_name, int32(a)) +} + +func (a *PolicyAction) UnmarshalJSON(data []byte) error { + val, err := proto.UnmarshalJSONEnum(PolicyAction_value, data, a.String()) + if err != nil { + return err + } + + _, ok := PolicyAction_name[val] + if !ok { + return errors.Errorf("invalid PolicyAction value: %d", val) + } + *a = PolicyAction(val) + return nil +} + +func (a AttrMatch) MarshalJSON() ([]byte, error) { + return proto.MarshalJSONEnum(AttrMatch_name, int32(a)) +} + +func (a *AttrMatch) UnmarshalJSON(data []byte) error { + val, err := proto.UnmarshalJSONEnum(AttrMatch_value, data, a.String()) + if err != nil { + return err + } + + _, ok := AttrMatch_name[val] + if !ok { + return errors.Errorf("invalid AttrMatch value: %d", val) + } + *a = AttrMatch(val) + return nil +} + +func (a MatchType) MarshalJSON() ([]byte, error) { + return proto.MarshalJSONEnum(MatchType_name, int32(a)) +} + +func (a *MatchType) UnmarshalJSON(data []byte) error { + val, err := proto.UnmarshalJSONEnum(MatchType_value, data, a.String()) + if err != nil { + return err + } + + _, ok := AttrMatch_name[val] + if !ok { + return errors.Errorf("invalid MatchType value: %d", val) + } + *a = MatchType(val) + return nil +} diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/sourcepolicy/pb/policy.pb.go b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/sourcepolicy/pb/policy.pb.go new file mode 100644 index 000000000..8b77afe86 --- /dev/null +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/sourcepolicy/pb/policy.pb.go @@ -0,0 +1,1615 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: policy.proto + +package moby_buildkit_v1_sourcepolicy + +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// PolicyAction defines the action to take when a source is matched +type PolicyAction int32 + +const ( + PolicyAction_ALLOW PolicyAction = 0 + PolicyAction_DENY PolicyAction = 1 + PolicyAction_CONVERT PolicyAction = 2 +) + +var PolicyAction_name = map[int32]string{ + 0: "ALLOW", + 1: "DENY", + 2: "CONVERT", +} + +var PolicyAction_value = map[string]int32{ + "ALLOW": 0, + "DENY": 1, + "CONVERT": 2, +} + +func (x PolicyAction) String() string { + return proto.EnumName(PolicyAction_name, int32(x)) +} + +func (PolicyAction) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_ac3b897852294d6a, []int{0} +} + +// AttrMatch defines the condition to match a source attribute +type AttrMatch int32 + +const ( + AttrMatch_EQUAL AttrMatch = 0 + AttrMatch_NOTEQUAL AttrMatch = 1 + AttrMatch_MATCHES AttrMatch = 2 +) + +var AttrMatch_name = map[int32]string{ + 0: "EQUAL", + 1: "NOTEQUAL", + 2: "MATCHES", +} + +var AttrMatch_value = map[string]int32{ + "EQUAL": 0, + "NOTEQUAL": 1, + "MATCHES": 2, +} + +func (x AttrMatch) String() string { + return proto.EnumName(AttrMatch_name, int32(x)) +} + +func (AttrMatch) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_ac3b897852294d6a, []int{1} +} + +// Match type is used to determine how a rule source is matched +type MatchType int32 + +const ( + // WILDCARD is the default matching type. + // It may first attempt to due an exact match but will follow up with a wildcard match + // For something more powerful, use REGEX + MatchType_WILDCARD MatchType = 0 + // EXACT treats the source identifier as a litteral string match + MatchType_EXACT MatchType = 1 + // REGEX treats the source identifier as a regular expression + // With regex matching you can also use match groups to replace values in the destination identifier + MatchType_REGEX MatchType = 2 +) + +var MatchType_name = map[int32]string{ + 0: "WILDCARD", + 1: "EXACT", + 2: "REGEX", +} + +var MatchType_value = map[string]int32{ + "WILDCARD": 0, + "EXACT": 1, + "REGEX": 2, +} + +func (x MatchType) String() string { + return proto.EnumName(MatchType_name, int32(x)) +} + +func (MatchType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_ac3b897852294d6a, []int{2} +} + +// Rule defines the action(s) to take when a source is matched +type Rule struct { + Action PolicyAction `protobuf:"varint,1,opt,name=action,proto3,enum=moby.buildkit.v1.sourcepolicy.PolicyAction" json:"action,omitempty"` + Selector *Selector `protobuf:"bytes,2,opt,name=selector,proto3" json:"selector,omitempty"` + Updates *Update `protobuf:"bytes,3,opt,name=updates,proto3" json:"updates,omitempty"` +} + +func (m *Rule) Reset() { *m = Rule{} } +func (m *Rule) String() string { return proto.CompactTextString(m) } +func (*Rule) ProtoMessage() {} +func (*Rule) Descriptor() ([]byte, []int) { + return fileDescriptor_ac3b897852294d6a, []int{0} +} +func (m *Rule) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Rule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Rule.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Rule) XXX_Merge(src proto.Message) { + xxx_messageInfo_Rule.Merge(m, src) +} +func (m *Rule) XXX_Size() int { + return m.Size() +} +func (m *Rule) XXX_DiscardUnknown() { + xxx_messageInfo_Rule.DiscardUnknown(m) +} + +var xxx_messageInfo_Rule proto.InternalMessageInfo + +func (m *Rule) GetAction() PolicyAction { + if m != nil { + return m.Action + } + return PolicyAction_ALLOW +} + +func (m *Rule) GetSelector() *Selector { + if m != nil { + return m.Selector + } + return nil +} + +func (m *Rule) GetUpdates() *Update { + if m != nil { + return m.Updates + } + return nil +} + +// Update contains updates to the matched build step after rule is applied +type Update struct { + Identifier string `protobuf:"bytes,1,opt,name=identifier,proto3" json:"identifier,omitempty"` + Attrs map[string]string `protobuf:"bytes,2,rep,name=attrs,proto3" json:"attrs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (m *Update) Reset() { *m = Update{} } +func (m *Update) String() string { return proto.CompactTextString(m) } +func (*Update) ProtoMessage() {} +func (*Update) Descriptor() ([]byte, []int) { + return fileDescriptor_ac3b897852294d6a, []int{1} +} +func (m *Update) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Update) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Update.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Update) XXX_Merge(src proto.Message) { + xxx_messageInfo_Update.Merge(m, src) +} +func (m *Update) XXX_Size() int { + return m.Size() +} +func (m *Update) XXX_DiscardUnknown() { + xxx_messageInfo_Update.DiscardUnknown(m) +} + +var xxx_messageInfo_Update proto.InternalMessageInfo + +func (m *Update) GetIdentifier() string { + if m != nil { + return m.Identifier + } + return "" +} + +func (m *Update) GetAttrs() map[string]string { + if m != nil { + return m.Attrs + } + return nil +} + +// Selector identifies a source to match a policy to +type Selector struct { + Identifier string `protobuf:"bytes,1,opt,name=identifier,proto3" json:"identifier,omitempty"` + // MatchType is the type of match to perform on the source identifier + MatchType MatchType `protobuf:"varint,2,opt,name=match_type,json=matchType,proto3,enum=moby.buildkit.v1.sourcepolicy.MatchType" json:"match_type,omitempty"` + Constraints []*AttrConstraint `protobuf:"bytes,3,rep,name=constraints,proto3" json:"constraints,omitempty"` +} + +func (m *Selector) Reset() { *m = Selector{} } +func (m *Selector) String() string { return proto.CompactTextString(m) } +func (*Selector) ProtoMessage() {} +func (*Selector) Descriptor() ([]byte, []int) { + return fileDescriptor_ac3b897852294d6a, []int{2} +} +func (m *Selector) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Selector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Selector.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Selector) XXX_Merge(src proto.Message) { + xxx_messageInfo_Selector.Merge(m, src) +} +func (m *Selector) XXX_Size() int { + return m.Size() +} +func (m *Selector) XXX_DiscardUnknown() { + xxx_messageInfo_Selector.DiscardUnknown(m) +} + +var xxx_messageInfo_Selector proto.InternalMessageInfo + +func (m *Selector) GetIdentifier() string { + if m != nil { + return m.Identifier + } + return "" +} + +func (m *Selector) GetMatchType() MatchType { + if m != nil { + return m.MatchType + } + return MatchType_WILDCARD +} + +func (m *Selector) GetConstraints() []*AttrConstraint { + if m != nil { + return m.Constraints + } + return nil +} + +// AttrConstraint defines a constraint on a source attribute +type AttrConstraint struct { + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + Condition AttrMatch `protobuf:"varint,3,opt,name=condition,proto3,enum=moby.buildkit.v1.sourcepolicy.AttrMatch" json:"condition,omitempty"` +} + +func (m *AttrConstraint) Reset() { *m = AttrConstraint{} } +func (m *AttrConstraint) String() string { return proto.CompactTextString(m) } +func (*AttrConstraint) ProtoMessage() {} +func (*AttrConstraint) Descriptor() ([]byte, []int) { + return fileDescriptor_ac3b897852294d6a, []int{3} +} +func (m *AttrConstraint) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AttrConstraint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AttrConstraint.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AttrConstraint) XXX_Merge(src proto.Message) { + xxx_messageInfo_AttrConstraint.Merge(m, src) +} +func (m *AttrConstraint) XXX_Size() int { + return m.Size() +} +func (m *AttrConstraint) XXX_DiscardUnknown() { + xxx_messageInfo_AttrConstraint.DiscardUnknown(m) +} + +var xxx_messageInfo_AttrConstraint proto.InternalMessageInfo + +func (m *AttrConstraint) GetKey() string { + if m != nil { + return m.Key + } + return "" +} + +func (m *AttrConstraint) GetValue() string { + if m != nil { + return m.Value + } + return "" +} + +func (m *AttrConstraint) GetCondition() AttrMatch { + if m != nil { + return m.Condition + } + return AttrMatch_EQUAL +} + +// Policy is the list of rules the policy engine will perform +type Policy struct { + Version int64 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + Rules []*Rule `protobuf:"bytes,2,rep,name=rules,proto3" json:"rules,omitempty"` +} + +func (m *Policy) Reset() { *m = Policy{} } +func (m *Policy) String() string { return proto.CompactTextString(m) } +func (*Policy) ProtoMessage() {} +func (*Policy) Descriptor() ([]byte, []int) { + return fileDescriptor_ac3b897852294d6a, []int{4} +} +func (m *Policy) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Policy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Policy.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Policy) XXX_Merge(src proto.Message) { + xxx_messageInfo_Policy.Merge(m, src) +} +func (m *Policy) XXX_Size() int { + return m.Size() +} +func (m *Policy) XXX_DiscardUnknown() { + xxx_messageInfo_Policy.DiscardUnknown(m) +} + +var xxx_messageInfo_Policy proto.InternalMessageInfo + +func (m *Policy) GetVersion() int64 { + if m != nil { + return m.Version + } + return 0 +} + +func (m *Policy) GetRules() []*Rule { + if m != nil { + return m.Rules + } + return nil +} + +func init() { + proto.RegisterEnum("moby.buildkit.v1.sourcepolicy.PolicyAction", PolicyAction_name, PolicyAction_value) + proto.RegisterEnum("moby.buildkit.v1.sourcepolicy.AttrMatch", AttrMatch_name, AttrMatch_value) + proto.RegisterEnum("moby.buildkit.v1.sourcepolicy.MatchType", MatchType_name, MatchType_value) + proto.RegisterType((*Rule)(nil), "moby.buildkit.v1.sourcepolicy.Rule") + proto.RegisterType((*Update)(nil), "moby.buildkit.v1.sourcepolicy.Update") + proto.RegisterMapType((map[string]string)(nil), "moby.buildkit.v1.sourcepolicy.Update.AttrsEntry") + proto.RegisterType((*Selector)(nil), "moby.buildkit.v1.sourcepolicy.Selector") + proto.RegisterType((*AttrConstraint)(nil), "moby.buildkit.v1.sourcepolicy.AttrConstraint") + proto.RegisterType((*Policy)(nil), "moby.buildkit.v1.sourcepolicy.Policy") +} + +func init() { proto.RegisterFile("policy.proto", fileDescriptor_ac3b897852294d6a) } + +var fileDescriptor_ac3b897852294d6a = []byte{ + // 516 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xcd, 0x6e, 0xd3, 0x40, + 0x10, 0xc7, 0xbd, 0x4e, 0xf3, 0xe1, 0x49, 0x14, 0x59, 0x2b, 0x0e, 0x16, 0x12, 0x56, 0x14, 0x84, + 0x88, 0x82, 0x30, 0x6d, 0xb8, 0x14, 0x2e, 0xc8, 0x38, 0x6e, 0x41, 0x4a, 0x13, 0xd8, 0xa6, 0xb4, + 0x1c, 0x10, 0x72, 0x9c, 0x45, 0x58, 0x75, 0x6c, 0xcb, 0x5e, 0x47, 0xf2, 0x8d, 0x47, 0xe0, 0x39, + 0x78, 0x0e, 0x0e, 0x1c, 0xcb, 0x8d, 0x23, 0x4a, 0x5e, 0x04, 0xed, 0x3a, 0x4e, 0xc3, 0xa5, 0xce, + 0xc9, 0x3b, 0xe3, 0xf9, 0xfd, 0xe7, 0x63, 0x67, 0xa1, 0x15, 0x85, 0xbe, 0xe7, 0x66, 0x46, 0x14, + 0x87, 0x2c, 0xc4, 0x0f, 0x16, 0xe1, 0x2c, 0x33, 0x66, 0xa9, 0xe7, 0xcf, 0xaf, 0x3d, 0x66, 0x2c, + 0x8f, 0x8c, 0x24, 0x4c, 0x63, 0x97, 0xe6, 0x41, 0xdd, 0xdf, 0x08, 0x0e, 0x48, 0xea, 0x53, 0x6c, + 0x41, 0xcd, 0x71, 0x99, 0x17, 0x06, 0x1a, 0xea, 0xa0, 0x5e, 0x7b, 0xf0, 0xc4, 0xb8, 0x13, 0x34, + 0xde, 0x89, 0x8f, 0x29, 0x10, 0xb2, 0x41, 0xb1, 0x05, 0x8d, 0x84, 0xfa, 0xd4, 0x65, 0x61, 0xac, + 0xc9, 0x1d, 0xd4, 0x6b, 0x0e, 0x1e, 0x97, 0xc8, 0x9c, 0x6f, 0xc2, 0xc9, 0x16, 0xc4, 0xaf, 0xa0, + 0x9e, 0x46, 0x73, 0x87, 0xd1, 0x44, 0xab, 0x08, 0x8d, 0x47, 0x25, 0x1a, 0x17, 0x22, 0x9a, 0x14, + 0x54, 0xf7, 0x07, 0x82, 0x5a, 0xee, 0xc3, 0x3a, 0x80, 0x37, 0xa7, 0x01, 0xf3, 0xbe, 0x78, 0x34, + 0x16, 0x9d, 0x29, 0x64, 0xc7, 0x83, 0x4f, 0xa0, 0xea, 0x30, 0x16, 0x27, 0x9a, 0xdc, 0xa9, 0xf4, + 0x9a, 0x83, 0xc3, 0xbd, 0x32, 0x19, 0x26, 0x47, 0xec, 0x80, 0xc5, 0x19, 0xc9, 0xf1, 0xfb, 0xc7, + 0x00, 0xb7, 0x4e, 0xac, 0x42, 0xe5, 0x9a, 0x66, 0x9b, 0x74, 0xfc, 0x88, 0xef, 0x41, 0x75, 0xe9, + 0xf8, 0x29, 0x15, 0x53, 0x51, 0x48, 0x6e, 0xbc, 0x94, 0x8f, 0x51, 0xf7, 0x27, 0x82, 0x46, 0x31, + 0x84, 0xd2, 0x72, 0x4f, 0x01, 0x16, 0x0e, 0x73, 0xbf, 0x7e, 0x66, 0x59, 0x94, 0x6b, 0xb5, 0x07, + 0xbd, 0x92, 0x9a, 0xcf, 0x38, 0x30, 0xcd, 0x22, 0x4a, 0x94, 0x45, 0x71, 0xc4, 0x13, 0x68, 0xba, + 0x61, 0x90, 0xb0, 0xd8, 0xf1, 0x02, 0xc6, 0xe7, 0xcc, 0xbb, 0x7f, 0x5a, 0xa2, 0xc4, 0x3b, 0xb4, + 0xb6, 0x14, 0xd9, 0x55, 0xe8, 0x7e, 0x43, 0xd0, 0xfe, 0xff, 0xff, 0xbe, 0x53, 0xc0, 0x27, 0xa0, + 0xb8, 0x61, 0x30, 0xf7, 0xc4, 0xf2, 0x55, 0xf6, 0xea, 0x89, 0x67, 0x12, 0x7d, 0x91, 0x5b, 0xb4, + 0xfb, 0x09, 0x6a, 0xf9, 0x52, 0x62, 0x0d, 0xea, 0x4b, 0x1a, 0x27, 0xc5, 0x32, 0x57, 0x48, 0x61, + 0xe2, 0x17, 0x50, 0x8d, 0x53, 0x9f, 0x16, 0xf7, 0xfd, 0xb0, 0x24, 0x0f, 0x7f, 0x19, 0x24, 0x27, + 0xfa, 0x87, 0xd0, 0xda, 0xdd, 0x79, 0xac, 0x40, 0xd5, 0x1c, 0x8d, 0x26, 0x97, 0xaa, 0x84, 0x1b, + 0x70, 0x30, 0xb4, 0xc7, 0x1f, 0x55, 0x84, 0x9b, 0x50, 0xb7, 0x26, 0xe3, 0x0f, 0x36, 0x99, 0xaa, + 0x72, 0xff, 0x08, 0x94, 0x6d, 0xa1, 0x3c, 0xdc, 0x7e, 0x7f, 0x61, 0x8e, 0x54, 0x09, 0xb7, 0xa0, + 0x31, 0x9e, 0x4c, 0x73, 0x4b, 0x20, 0x67, 0xe6, 0xd4, 0x7a, 0x63, 0x9f, 0xab, 0x72, 0xff, 0x19, + 0x28, 0xdb, 0xfb, 0xe2, 0x71, 0x97, 0x6f, 0x47, 0x43, 0xcb, 0x24, 0x43, 0x55, 0x12, 0x02, 0x57, + 0xa6, 0x35, 0x55, 0x11, 0x3f, 0x12, 0xfb, 0xd4, 0xbe, 0x52, 0xe5, 0xd7, 0xda, 0xaf, 0x95, 0x8e, + 0x6e, 0x56, 0x3a, 0xfa, 0xbb, 0xd2, 0xd1, 0xf7, 0xb5, 0x2e, 0xdd, 0xac, 0x75, 0xe9, 0xcf, 0x5a, + 0x97, 0x66, 0x35, 0xf1, 0xfe, 0x9f, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0xae, 0x7a, 0xeb, 0x6c, + 0x0f, 0x04, 0x00, 0x00, +} + +func (m *Rule) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Rule) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Rule) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Updates != nil { + { + size, err := m.Updates.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPolicy(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.Selector != nil { + { + size, err := m.Selector.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPolicy(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.Action != 0 { + i = encodeVarintPolicy(dAtA, i, uint64(m.Action)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *Update) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Update) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Update) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Attrs) > 0 { + for k := range m.Attrs { + v := m.Attrs[k] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarintPolicy(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarintPolicy(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarintPolicy(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x12 + } + } + if len(m.Identifier) > 0 { + i -= len(m.Identifier) + copy(dAtA[i:], m.Identifier) + i = encodeVarintPolicy(dAtA, i, uint64(len(m.Identifier))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *Selector) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Selector) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Selector) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Constraints) > 0 { + for iNdEx := len(m.Constraints) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Constraints[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPolicy(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if m.MatchType != 0 { + i = encodeVarintPolicy(dAtA, i, uint64(m.MatchType)) + i-- + dAtA[i] = 0x10 + } + if len(m.Identifier) > 0 { + i -= len(m.Identifier) + copy(dAtA[i:], m.Identifier) + i = encodeVarintPolicy(dAtA, i, uint64(len(m.Identifier))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *AttrConstraint) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AttrConstraint) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AttrConstraint) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Condition != 0 { + i = encodeVarintPolicy(dAtA, i, uint64(m.Condition)) + i-- + dAtA[i] = 0x18 + } + if len(m.Value) > 0 { + i -= len(m.Value) + copy(dAtA[i:], m.Value) + i = encodeVarintPolicy(dAtA, i, uint64(len(m.Value))) + i-- + dAtA[i] = 0x12 + } + if len(m.Key) > 0 { + i -= len(m.Key) + copy(dAtA[i:], m.Key) + i = encodeVarintPolicy(dAtA, i, uint64(len(m.Key))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *Policy) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Policy) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Policy) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Rules) > 0 { + for iNdEx := len(m.Rules) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Rules[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPolicy(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if m.Version != 0 { + i = encodeVarintPolicy(dAtA, i, uint64(m.Version)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func encodeVarintPolicy(dAtA []byte, offset int, v uint64) int { + offset -= sovPolicy(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Rule) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Action != 0 { + n += 1 + sovPolicy(uint64(m.Action)) + } + if m.Selector != nil { + l = m.Selector.Size() + n += 1 + l + sovPolicy(uint64(l)) + } + if m.Updates != nil { + l = m.Updates.Size() + n += 1 + l + sovPolicy(uint64(l)) + } + return n +} + +func (m *Update) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Identifier) + if l > 0 { + n += 1 + l + sovPolicy(uint64(l)) + } + if len(m.Attrs) > 0 { + for k, v := range m.Attrs { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovPolicy(uint64(len(k))) + 1 + len(v) + sovPolicy(uint64(len(v))) + n += mapEntrySize + 1 + sovPolicy(uint64(mapEntrySize)) + } + } + return n +} + +func (m *Selector) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Identifier) + if l > 0 { + n += 1 + l + sovPolicy(uint64(l)) + } + if m.MatchType != 0 { + n += 1 + sovPolicy(uint64(m.MatchType)) + } + if len(m.Constraints) > 0 { + for _, e := range m.Constraints { + l = e.Size() + n += 1 + l + sovPolicy(uint64(l)) + } + } + return n +} + +func (m *AttrConstraint) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Key) + if l > 0 { + n += 1 + l + sovPolicy(uint64(l)) + } + l = len(m.Value) + if l > 0 { + n += 1 + l + sovPolicy(uint64(l)) + } + if m.Condition != 0 { + n += 1 + sovPolicy(uint64(m.Condition)) + } + return n +} + +func (m *Policy) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Version != 0 { + n += 1 + sovPolicy(uint64(m.Version)) + } + if len(m.Rules) > 0 { + for _, e := range m.Rules { + l = e.Size() + n += 1 + l + sovPolicy(uint64(l)) + } + } + return n +} + +func sovPolicy(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozPolicy(x uint64) (n int) { + return sovPolicy(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Rule) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Rule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Rule: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Action", wireType) + } + m.Action = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Action |= PolicyAction(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPolicy + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPolicy + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Selector == nil { + m.Selector = &Selector{} + } + if err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Updates", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPolicy + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPolicy + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Updates == nil { + m.Updates = &Update{} + } + if err := m.Updates.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPolicy(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPolicy + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Update) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Update: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Update: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Identifier", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPolicy + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPolicy + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Identifier = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Attrs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPolicy + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPolicy + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Attrs == nil { + m.Attrs = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthPolicy + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthPolicy + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthPolicy + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthPolicy + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipPolicy(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPolicy + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Attrs[mapkey] = mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPolicy(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPolicy + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Selector) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Selector: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Selector: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Identifier", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPolicy + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPolicy + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Identifier = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MatchType", wireType) + } + m.MatchType = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MatchType |= MatchType(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Constraints", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPolicy + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPolicy + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Constraints = append(m.Constraints, &AttrConstraint{}) + if err := m.Constraints[len(m.Constraints)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPolicy(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPolicy + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AttrConstraint) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AttrConstraint: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AttrConstraint: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPolicy + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPolicy + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPolicy + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPolicy + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Condition", wireType) + } + m.Condition = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Condition |= AttrMatch(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipPolicy(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPolicy + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Policy) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Policy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Policy: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + m.Version = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Version |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPolicy + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPolicy + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPolicy + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rules = append(m.Rules, &Rule{}) + if err := m.Rules[len(m.Rules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPolicy(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPolicy + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipPolicy(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowPolicy + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowPolicy + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowPolicy + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthPolicy + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupPolicy + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthPolicy + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthPolicy = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowPolicy = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupPolicy = fmt.Errorf("proto: unexpected end of group") +) diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/sourcepolicy/pb/policy.proto b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/sourcepolicy/pb/policy.proto new file mode 100644 index 000000000..f46aca063 --- /dev/null +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/sourcepolicy/pb/policy.proto @@ -0,0 +1,64 @@ +syntax = "proto3"; + +package moby.buildkit.v1.sourcepolicy; + +// Rule defines the action(s) to take when a source is matched +message Rule { + PolicyAction action = 1; + Selector selector = 2; + Update updates = 3; +} + +// Update contains updates to the matched build step after rule is applied +message Update { + string identifier = 1; + map attrs = 2; +} + +// Selector identifies a source to match a policy to +message Selector { + string identifier = 1; + // MatchType is the type of match to perform on the source identifier + MatchType match_type = 2; + repeated AttrConstraint constraints = 3; +} + +// PolicyAction defines the action to take when a source is matched +enum PolicyAction { + ALLOW = 0; + DENY = 1; + CONVERT = 2; +} + +// AttrConstraint defines a constraint on a source attribute +message AttrConstraint { + string key = 1; + string value = 2; + AttrMatch condition = 3; +} + +// AttrMatch defines the condition to match a source attribute +enum AttrMatch { + EQUAL = 0; + NOTEQUAL = 1; + MATCHES = 2; +} + +// Policy is the list of rules the policy engine will perform +message Policy { + int64 version = 1; // Currently 1 + repeated Rule rules = 2; +} + +// Match type is used to determine how a rule source is matched +enum MatchType { + // WILDCARD is the default matching type. + // It may first attempt to due an exact match but will follow up with a wildcard match + // For something more powerful, use REGEX + WILDCARD = 0; + // EXACT treats the source identifier as a litteral string match + EXACT = 1; + // REGEX treats the source identifier as a regular expression + // With regex matching you can also use match groups to replace values in the destination identifier + REGEX = 2; +} \ No newline at end of file diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/util/progress/multireader.go b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/util/progress/multireader.go index 3f9d37816..b0d92dde8 100644 --- a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/util/progress/multireader.go +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/util/progress/multireader.go @@ -35,8 +35,13 @@ func (mr *MultiReader) Reader(ctx context.Context) Reader { isBehind := len(mr.sent) > 0 - if !isBehind { - mr.writers[w] = closeWriter + select { + case <-mr.done: + isBehind = true + default: + if !isBehind { + mr.writers[w] = closeWriter + } } go func() { @@ -74,9 +79,6 @@ func (mr *MultiReader) Reader(ctx context.Context) Reader { case <-ctx.Done(): close() return - case <-mr.done: - close() - return default: } } diff --git a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/util/progress/progress.go b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/util/progress/progress.go index 4fabf3769..fbbb22de0 100644 --- a/src/cmd/linuxkit/vendor/github.com/moby/buildkit/util/progress/progress.go +++ b/src/cmd/linuxkit/vendor/github.com/moby/buildkit/util/progress/progress.go @@ -118,12 +118,22 @@ func (pr *progressReader) Read(ctx context.Context) ([]*Progress, error) { done := make(chan struct{}) defer close(done) go func() { - select { - case <-done: - case <-ctx.Done(): - pr.mu.Lock() - pr.cond.Broadcast() - pr.mu.Unlock() + prdone := pr.ctx.Done() + for { + select { + case <-done: + return + case <-ctx.Done(): + pr.mu.Lock() + pr.cond.Broadcast() + pr.mu.Unlock() + return + case <-prdone: + pr.mu.Lock() + pr.cond.Broadcast() + pr.mu.Unlock() + prdone = nil + } } }() pr.mu.Lock() diff --git a/src/cmd/linuxkit/vendor/modules.txt b/src/cmd/linuxkit/vendor/modules.txt index 77155ae28..bbd2002c1 100644 --- a/src/cmd/linuxkit/vendor/modules.txt +++ b/src/cmd/linuxkit/vendor/modules.txt @@ -438,7 +438,7 @@ github.com/matttproud/golang_protobuf_extensions/pbutil # github.com/mitchellh/go-ps v0.0.0-20190716172923-621e5597135b ## explicit github.com/mitchellh/go-ps -# github.com/moby/buildkit v0.11.0-rc1.0.20221213132957-c0ac5e8b9b51 +# github.com/moby/buildkit v0.11.0-rc2 ## explicit; go 1.18 github.com/moby/buildkit/api/services/control github.com/moby/buildkit/api/types @@ -481,6 +481,7 @@ github.com/moby/buildkit/solver/internal/pipe github.com/moby/buildkit/solver/pb github.com/moby/buildkit/solver/result github.com/moby/buildkit/source/types +github.com/moby/buildkit/sourcepolicy/pb github.com/moby/buildkit/util/apicaps github.com/moby/buildkit/util/apicaps/pb github.com/moby/buildkit/util/appdefaults