xref: /aosp_15_r20/external/bazelbuild-remote-apis/build/bazel/remote/asset/v1/remote_asset.pb.go (revision ae21b2b400d1606a797985382019aea74177085c)
1// Copyright 2020 The Bazel Authors.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15// Code generated by protoc-gen-go. DO NOT EDIT.
16// versions:
17// 	protoc-gen-go v1.31.0
18// 	protoc        v3.15.0
19// source: build/bazel/remote/asset/v1/remote_asset.proto
20
21package remoteasset
22
23import (
24	context "context"
25	v2 "github.com/bazelbuild/remote-apis/build/bazel/remote/execution/v2"
26	_ "google.golang.org/genproto/googleapis/api/annotations"
27	status "google.golang.org/genproto/googleapis/rpc/status"
28	grpc "google.golang.org/grpc"
29	codes "google.golang.org/grpc/codes"
30	status1 "google.golang.org/grpc/status"
31	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
32	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
33	durationpb "google.golang.org/protobuf/types/known/durationpb"
34	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
35	reflect "reflect"
36	sync "sync"
37)
38
39const (
40	// Verify that this generated code is sufficiently up-to-date.
41	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
42	// Verify that runtime/protoimpl is sufficiently up-to-date.
43	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
44)
45
46// Qualifiers are used to disambiguate or sub-select content that shares a URI.
47// This may include specifying a particular commit or branch, in the case of
48// URIs referencing a repository; they could also be used to specify a
49// particular subdirectory of a repository or tarball. Qualifiers may also be
50// used to ensure content matches what the client expects, even when there is
51// no ambiguity to be had - for example, a qualifier specifying a checksum
52// value.
53//
54// In cases where the semantics of the request are not immediately clear from
55// the URL and/or qualifiers - e.g. dictated by URL scheme - it is recommended
56// to use an additional qualifier to remove the ambiguity. The `resource_type`
57// qualifier is recommended for this purpose.
58//
59// Qualifiers may be supplied in any order.
60type Qualifier struct {
61	state         protoimpl.MessageState
62	sizeCache     protoimpl.SizeCache
63	unknownFields protoimpl.UnknownFields
64
65	// The "name" of the qualifier, for example "resource_type".
66	// No separation is made between 'standard' and 'nonstandard'
67	// qualifiers, in accordance with https://tools.ietf.org/html/rfc6648,
68	// however implementers *SHOULD* take care to avoid ambiguity.
69	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
70	// The "value" of the qualifier. Semantics will be dictated by the name.
71	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
72}
73
74func (x *Qualifier) Reset() {
75	*x = Qualifier{}
76	if protoimpl.UnsafeEnabled {
77		mi := &file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[0]
78		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
79		ms.StoreMessageInfo(mi)
80	}
81}
82
83func (x *Qualifier) String() string {
84	return protoimpl.X.MessageStringOf(x)
85}
86
87func (*Qualifier) ProtoMessage() {}
88
89func (x *Qualifier) ProtoReflect() protoreflect.Message {
90	mi := &file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[0]
91	if protoimpl.UnsafeEnabled && x != nil {
92		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
93		if ms.LoadMessageInfo() == nil {
94			ms.StoreMessageInfo(mi)
95		}
96		return ms
97	}
98	return mi.MessageOf(x)
99}
100
101// Deprecated: Use Qualifier.ProtoReflect.Descriptor instead.
102func (*Qualifier) Descriptor() ([]byte, []int) {
103	return file_build_bazel_remote_asset_v1_remote_asset_proto_rawDescGZIP(), []int{0}
104}
105
106func (x *Qualifier) GetName() string {
107	if x != nil {
108		return x.Name
109	}
110	return ""
111}
112
113func (x *Qualifier) GetValue() string {
114	if x != nil {
115		return x.Value
116	}
117	return ""
118}
119
120// A request message for
121// [Fetch.FetchBlob][build.bazel.remote.asset.v1.Fetch.FetchBlob].
122type FetchBlobRequest struct {
123	state         protoimpl.MessageState
124	sizeCache     protoimpl.SizeCache
125	unknownFields protoimpl.UnknownFields
126
127	// The instance of the execution system to operate against. A server may
128	// support multiple instances of the execution system (with their own workers,
129	// storage, caches, etc.). The server MAY require use of this field to select
130	// between them in an implementation-defined fashion, otherwise it can be
131	// omitted.
132	InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName,proto3" json:"instance_name,omitempty"`
133	// The timeout for the underlying fetch, if content needs to be retrieved from
134	// origin.
135	//
136	// If unset, the server *MAY* apply an implementation-defined timeout.
137	//
138	// If set, and the user-provided timeout exceeds the RPC deadline, the server
139	// *SHOULD* keep the fetch going after the RPC completes, to be made
140	// available for future Fetch calls. The server may also enforce (via clamping
141	// and/or an INVALID_ARGUMENT error) implementation-defined minimum and
142	// maximum timeout values.
143	//
144	// If this timeout is exceeded on an attempt to retrieve content from origin
145	// the client will receive DEADLINE_EXCEEDED in [FetchBlobResponse.status].
146	Timeout *durationpb.Duration `protobuf:"bytes,2,opt,name=timeout,proto3" json:"timeout,omitempty"`
147	// The oldest content the client is willing to accept, as measured from the
148	// time it was Push'd or when the underlying retrieval from origin was
149	// started.
150	// Upon retries of Fetch requests that cannot be completed within a single
151	// RPC, clients *SHOULD* provide the same value for subsequent requests as the
152	// original, to simplify combining the request with the previous attempt.
153	//
154	// If unset, the client *SHOULD* accept content of any age.
155	OldestContentAccepted *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=oldest_content_accepted,json=oldestContentAccepted,proto3" json:"oldest_content_accepted,omitempty"`
156	// The URI(s) of the content to fetch. These may be resources that the server
157	// can directly fetch from origin, in which case multiple URIs *SHOULD*
158	// represent the same content available at different locations (such as an
159	// origin and secondary mirrors). These may also be URIs for content known to
160	// the server through other mechanisms, e.g. pushed via the [Push][build.bazel.remote.asset.v1.Push]
161	// service.
162	//
163	// Clients *MUST* supply at least one URI. Servers *MAY* match any one of the
164	// supplied URIs.
165	Uris []string `protobuf:"bytes,4,rep,name=uris,proto3" json:"uris,omitempty"`
166	// Qualifiers sub-specifying the content to fetch - see comments on
167	// [Qualifier][build.bazel.remote.asset.v1.Qualifier].
168	// The same qualifiers apply to all URIs.
169	//
170	// Specified qualifier names *MUST* be unique.
171	Qualifiers []*Qualifier `protobuf:"bytes,5,rep,name=qualifiers,proto3" json:"qualifiers,omitempty"`
172}
173
174func (x *FetchBlobRequest) Reset() {
175	*x = FetchBlobRequest{}
176	if protoimpl.UnsafeEnabled {
177		mi := &file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[1]
178		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
179		ms.StoreMessageInfo(mi)
180	}
181}
182
183func (x *FetchBlobRequest) String() string {
184	return protoimpl.X.MessageStringOf(x)
185}
186
187func (*FetchBlobRequest) ProtoMessage() {}
188
189func (x *FetchBlobRequest) ProtoReflect() protoreflect.Message {
190	mi := &file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[1]
191	if protoimpl.UnsafeEnabled && x != nil {
192		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
193		if ms.LoadMessageInfo() == nil {
194			ms.StoreMessageInfo(mi)
195		}
196		return ms
197	}
198	return mi.MessageOf(x)
199}
200
201// Deprecated: Use FetchBlobRequest.ProtoReflect.Descriptor instead.
202func (*FetchBlobRequest) Descriptor() ([]byte, []int) {
203	return file_build_bazel_remote_asset_v1_remote_asset_proto_rawDescGZIP(), []int{1}
204}
205
206func (x *FetchBlobRequest) GetInstanceName() string {
207	if x != nil {
208		return x.InstanceName
209	}
210	return ""
211}
212
213func (x *FetchBlobRequest) GetTimeout() *durationpb.Duration {
214	if x != nil {
215		return x.Timeout
216	}
217	return nil
218}
219
220func (x *FetchBlobRequest) GetOldestContentAccepted() *timestamppb.Timestamp {
221	if x != nil {
222		return x.OldestContentAccepted
223	}
224	return nil
225}
226
227func (x *FetchBlobRequest) GetUris() []string {
228	if x != nil {
229		return x.Uris
230	}
231	return nil
232}
233
234func (x *FetchBlobRequest) GetQualifiers() []*Qualifier {
235	if x != nil {
236		return x.Qualifiers
237	}
238	return nil
239}
240
241// A response message for
242// [Fetch.FetchBlob][build.bazel.remote.asset.v1.Fetch.FetchBlob].
243type FetchBlobResponse struct {
244	state         protoimpl.MessageState
245	sizeCache     protoimpl.SizeCache
246	unknownFields protoimpl.UnknownFields
247
248	// If the status has a code other than `OK`, it indicates that the operation
249	// was unable to be completed for reasons outside the servers' control.
250	// The possible fetch errors include:
251	//   - `DEADLINE_EXCEEDED`: The operation could not be completed within the
252	//     specified timeout.
253	//   - `NOT_FOUND`: The requested asset was not found at the specified location.
254	//   - `PERMISSION_DENIED`: The request was rejected by a remote server, or
255	//     requested an asset from a disallowed origin.
256	//   - `ABORTED`: The operation could not be completed, typically due to a
257	//     failed consistency check.
258	//   - `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to
259	//     perform the requested operation. The client may retry after a delay.
260	Status *status.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
261	// The uri from the request that resulted in a successful retrieval, or from
262	// which the error indicated in `status` was obtained.
263	Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"`
264	// Any qualifiers known to the server and of interest to clients.
265	Qualifiers []*Qualifier `protobuf:"bytes,3,rep,name=qualifiers,proto3" json:"qualifiers,omitempty"`
266	// A minimum timestamp the content is expected to be available through.
267	// Servers *MAY* omit this field, if not known with confidence.
268	ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"`
269	// The result of the fetch, if the status had code `OK`.
270	// The digest of the file's contents, available for download through the CAS.
271	BlobDigest *v2.Digest `protobuf:"bytes,5,opt,name=blob_digest,json=blobDigest,proto3" json:"blob_digest,omitempty"`
272}
273
274func (x *FetchBlobResponse) Reset() {
275	*x = FetchBlobResponse{}
276	if protoimpl.UnsafeEnabled {
277		mi := &file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[2]
278		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
279		ms.StoreMessageInfo(mi)
280	}
281}
282
283func (x *FetchBlobResponse) String() string {
284	return protoimpl.X.MessageStringOf(x)
285}
286
287func (*FetchBlobResponse) ProtoMessage() {}
288
289func (x *FetchBlobResponse) ProtoReflect() protoreflect.Message {
290	mi := &file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[2]
291	if protoimpl.UnsafeEnabled && x != nil {
292		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
293		if ms.LoadMessageInfo() == nil {
294			ms.StoreMessageInfo(mi)
295		}
296		return ms
297	}
298	return mi.MessageOf(x)
299}
300
301// Deprecated: Use FetchBlobResponse.ProtoReflect.Descriptor instead.
302func (*FetchBlobResponse) Descriptor() ([]byte, []int) {
303	return file_build_bazel_remote_asset_v1_remote_asset_proto_rawDescGZIP(), []int{2}
304}
305
306func (x *FetchBlobResponse) GetStatus() *status.Status {
307	if x != nil {
308		return x.Status
309	}
310	return nil
311}
312
313func (x *FetchBlobResponse) GetUri() string {
314	if x != nil {
315		return x.Uri
316	}
317	return ""
318}
319
320func (x *FetchBlobResponse) GetQualifiers() []*Qualifier {
321	if x != nil {
322		return x.Qualifiers
323	}
324	return nil
325}
326
327func (x *FetchBlobResponse) GetExpiresAt() *timestamppb.Timestamp {
328	if x != nil {
329		return x.ExpiresAt
330	}
331	return nil
332}
333
334func (x *FetchBlobResponse) GetBlobDigest() *v2.Digest {
335	if x != nil {
336		return x.BlobDigest
337	}
338	return nil
339}
340
341// A request message for
342// [Fetch.FetchDirectory][build.bazel.remote.asset.v1.Fetch.FetchDirectory].
343type FetchDirectoryRequest struct {
344	state         protoimpl.MessageState
345	sizeCache     protoimpl.SizeCache
346	unknownFields protoimpl.UnknownFields
347
348	// The instance of the execution system to operate against. A server may
349	// support multiple instances of the execution system (with their own workers,
350	// storage, caches, etc.). The server MAY require use of this field to select
351	// between them in an implementation-defined fashion, otherwise it can be
352	// omitted.
353	InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName,proto3" json:"instance_name,omitempty"`
354	// The timeout for the underlying fetch, if content needs to be retrieved from
355	// origin. This value is allowed to exceed the RPC deadline, in which case the
356	// server *SHOULD* keep the fetch going after the RPC completes, to be made
357	// available for future Fetch calls.
358	//
359	// If this timeout is exceeded on an attempt to retrieve content from origin
360	// the client will receive DEADLINE_EXCEEDED in [FetchDirectoryResponse.status].
361	Timeout *durationpb.Duration `protobuf:"bytes,2,opt,name=timeout,proto3" json:"timeout,omitempty"`
362	// The oldest content the client is willing to accept, as measured from the
363	// time it was Push'd or when the underlying retrieval from origin was
364	// started.
365	// Upon retries of Fetch requests that cannot be completed within a single
366	// RPC, clients *SHOULD* provide the same value for subsequent requests as the
367	// original, to simplify combining the request with the previous attempt.
368	//
369	// If unset, the client *SHOULD* accept content of any age.
370	OldestContentAccepted *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=oldest_content_accepted,json=oldestContentAccepted,proto3" json:"oldest_content_accepted,omitempty"`
371	// The URI(s) of the content to fetch. These may be resources that the server
372	// can directly fetch from origin, in which case multiple URIs *SHOULD*
373	// represent the same content available at different locations (such as an
374	// origin and secondary mirrors). These may also be URIs for content known to
375	// the server through other mechanisms, e.g. pushed via the [Push][build.bazel.remote.asset.v1.Push]
376	// service.
377	//
378	// Clients *MUST* supply at least one URI. Servers *MAY* match any one of the
379	// supplied URIs.
380	Uris []string `protobuf:"bytes,4,rep,name=uris,proto3" json:"uris,omitempty"`
381	// Qualifiers sub-specifying the content to fetch - see comments on
382	// [Qualifier][build.bazel.remote.asset.v1.Qualifier].
383	// The same qualifiers apply to all URIs.
384	//
385	// Specified qualifier names *MUST* be unique.
386	Qualifiers []*Qualifier `protobuf:"bytes,5,rep,name=qualifiers,proto3" json:"qualifiers,omitempty"`
387}
388
389func (x *FetchDirectoryRequest) Reset() {
390	*x = FetchDirectoryRequest{}
391	if protoimpl.UnsafeEnabled {
392		mi := &file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[3]
393		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
394		ms.StoreMessageInfo(mi)
395	}
396}
397
398func (x *FetchDirectoryRequest) String() string {
399	return protoimpl.X.MessageStringOf(x)
400}
401
402func (*FetchDirectoryRequest) ProtoMessage() {}
403
404func (x *FetchDirectoryRequest) ProtoReflect() protoreflect.Message {
405	mi := &file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[3]
406	if protoimpl.UnsafeEnabled && x != nil {
407		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
408		if ms.LoadMessageInfo() == nil {
409			ms.StoreMessageInfo(mi)
410		}
411		return ms
412	}
413	return mi.MessageOf(x)
414}
415
416// Deprecated: Use FetchDirectoryRequest.ProtoReflect.Descriptor instead.
417func (*FetchDirectoryRequest) Descriptor() ([]byte, []int) {
418	return file_build_bazel_remote_asset_v1_remote_asset_proto_rawDescGZIP(), []int{3}
419}
420
421func (x *FetchDirectoryRequest) GetInstanceName() string {
422	if x != nil {
423		return x.InstanceName
424	}
425	return ""
426}
427
428func (x *FetchDirectoryRequest) GetTimeout() *durationpb.Duration {
429	if x != nil {
430		return x.Timeout
431	}
432	return nil
433}
434
435func (x *FetchDirectoryRequest) GetOldestContentAccepted() *timestamppb.Timestamp {
436	if x != nil {
437		return x.OldestContentAccepted
438	}
439	return nil
440}
441
442func (x *FetchDirectoryRequest) GetUris() []string {
443	if x != nil {
444		return x.Uris
445	}
446	return nil
447}
448
449func (x *FetchDirectoryRequest) GetQualifiers() []*Qualifier {
450	if x != nil {
451		return x.Qualifiers
452	}
453	return nil
454}
455
456// A response message for
457// [Fetch.FetchDirectory][build.bazel.remote.asset.v1.Fetch.FetchDirectory].
458type FetchDirectoryResponse struct {
459	state         protoimpl.MessageState
460	sizeCache     protoimpl.SizeCache
461	unknownFields protoimpl.UnknownFields
462
463	// If the status has a code other than `OK`, it indicates that the operation
464	// was unable to be completed for reasons outside the servers' control.
465	// The possible fetch errors include:
466	//   - `DEADLINE_EXCEEDED`: The operation could not be completed within the
467	//     specified timeout.
468	//   - `NOT_FOUND`: The requested asset was not found at the specified location.
469	//   - `PERMISSION_DENIED`: The request was rejected by a remote server, or
470	//     requested an asset from a disallowed origin.
471	//   - `ABORTED`: The operation could not be completed, typically due to a
472	//     failed consistency check.
473	//   - `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to
474	//     perform the requested operation. The client may retry after a delay.
475	Status *status.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
476	// The uri from the request that resulted in a successful retrieval, or from
477	// which the error indicated in `status` was obtained.
478	Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"`
479	// Any qualifiers known to the server and of interest to clients.
480	Qualifiers []*Qualifier `protobuf:"bytes,3,rep,name=qualifiers,proto3" json:"qualifiers,omitempty"`
481	// A minimum timestamp the content is expected to be available through.
482	// Servers *MAY* omit this field, if not known with confidence.
483	ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"`
484	// The result of the fetch, if the status had code `OK`.
485	// the root digest of a directory tree, suitable for fetching via
486	// [ContentAddressableStorage.GetTree].
487	RootDirectoryDigest *v2.Digest `protobuf:"bytes,5,opt,name=root_directory_digest,json=rootDirectoryDigest,proto3" json:"root_directory_digest,omitempty"`
488}
489
490func (x *FetchDirectoryResponse) Reset() {
491	*x = FetchDirectoryResponse{}
492	if protoimpl.UnsafeEnabled {
493		mi := &file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[4]
494		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
495		ms.StoreMessageInfo(mi)
496	}
497}
498
499func (x *FetchDirectoryResponse) String() string {
500	return protoimpl.X.MessageStringOf(x)
501}
502
503func (*FetchDirectoryResponse) ProtoMessage() {}
504
505func (x *FetchDirectoryResponse) ProtoReflect() protoreflect.Message {
506	mi := &file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[4]
507	if protoimpl.UnsafeEnabled && x != nil {
508		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
509		if ms.LoadMessageInfo() == nil {
510			ms.StoreMessageInfo(mi)
511		}
512		return ms
513	}
514	return mi.MessageOf(x)
515}
516
517// Deprecated: Use FetchDirectoryResponse.ProtoReflect.Descriptor instead.
518func (*FetchDirectoryResponse) Descriptor() ([]byte, []int) {
519	return file_build_bazel_remote_asset_v1_remote_asset_proto_rawDescGZIP(), []int{4}
520}
521
522func (x *FetchDirectoryResponse) GetStatus() *status.Status {
523	if x != nil {
524		return x.Status
525	}
526	return nil
527}
528
529func (x *FetchDirectoryResponse) GetUri() string {
530	if x != nil {
531		return x.Uri
532	}
533	return ""
534}
535
536func (x *FetchDirectoryResponse) GetQualifiers() []*Qualifier {
537	if x != nil {
538		return x.Qualifiers
539	}
540	return nil
541}
542
543func (x *FetchDirectoryResponse) GetExpiresAt() *timestamppb.Timestamp {
544	if x != nil {
545		return x.ExpiresAt
546	}
547	return nil
548}
549
550func (x *FetchDirectoryResponse) GetRootDirectoryDigest() *v2.Digest {
551	if x != nil {
552		return x.RootDirectoryDigest
553	}
554	return nil
555}
556
557// A request message for
558// [Push.PushBlob][build.bazel.remote.asset.v1.Push.PushBlob].
559type PushBlobRequest struct {
560	state         protoimpl.MessageState
561	sizeCache     protoimpl.SizeCache
562	unknownFields protoimpl.UnknownFields
563
564	// The instance of the execution system to operate against. A server may
565	// support multiple instances of the execution system (with their own workers,
566	// storage, caches, etc.). The server MAY require use of this field to select
567	// between them in an implementation-defined fashion, otherwise it can be
568	// omitted.
569	InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName,proto3" json:"instance_name,omitempty"`
570	// The URI(s) of the content to associate. If multiple URIs are specified, the
571	// pushed content will be available to fetch by specifying any of them.
572	Uris []string `protobuf:"bytes,2,rep,name=uris,proto3" json:"uris,omitempty"`
573	// Qualifiers sub-specifying the content that is being pushed - see comments
574	// on [Qualifier][build.bazel.remote.asset.v1.Qualifier].
575	// The same qualifiers apply to all URIs.
576	Qualifiers []*Qualifier `protobuf:"bytes,3,rep,name=qualifiers,proto3" json:"qualifiers,omitempty"`
577	// A time after which this content should stop being returned via [FetchBlob][build.bazel.remote.asset.v1.Fetch.FetchBlob].
578	// Servers *MAY* expire content early, e.g. due to storage pressure.
579	ExpireAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expire_at,json=expireAt,proto3" json:"expire_at,omitempty"`
580	// The blob to associate.
581	BlobDigest *v2.Digest `protobuf:"bytes,5,opt,name=blob_digest,json=blobDigest,proto3" json:"blob_digest,omitempty"`
582	// Referenced blobs or directories that need to not expire before expiration
583	// of this association, in addition to `blob_digest` itself.
584	// These fields are hints - clients *MAY* omit them, and servers *SHOULD*
585	// respect them, at the risk of increased incidents of Fetch responses
586	// indirectly referencing unavailable blobs.
587	ReferencesBlobs       []*v2.Digest `protobuf:"bytes,6,rep,name=references_blobs,json=referencesBlobs,proto3" json:"references_blobs,omitempty"`
588	ReferencesDirectories []*v2.Digest `protobuf:"bytes,7,rep,name=references_directories,json=referencesDirectories,proto3" json:"references_directories,omitempty"`
589}
590
591func (x *PushBlobRequest) Reset() {
592	*x = PushBlobRequest{}
593	if protoimpl.UnsafeEnabled {
594		mi := &file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[5]
595		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
596		ms.StoreMessageInfo(mi)
597	}
598}
599
600func (x *PushBlobRequest) String() string {
601	return protoimpl.X.MessageStringOf(x)
602}
603
604func (*PushBlobRequest) ProtoMessage() {}
605
606func (x *PushBlobRequest) ProtoReflect() protoreflect.Message {
607	mi := &file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[5]
608	if protoimpl.UnsafeEnabled && x != nil {
609		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
610		if ms.LoadMessageInfo() == nil {
611			ms.StoreMessageInfo(mi)
612		}
613		return ms
614	}
615	return mi.MessageOf(x)
616}
617
618// Deprecated: Use PushBlobRequest.ProtoReflect.Descriptor instead.
619func (*PushBlobRequest) Descriptor() ([]byte, []int) {
620	return file_build_bazel_remote_asset_v1_remote_asset_proto_rawDescGZIP(), []int{5}
621}
622
623func (x *PushBlobRequest) GetInstanceName() string {
624	if x != nil {
625		return x.InstanceName
626	}
627	return ""
628}
629
630func (x *PushBlobRequest) GetUris() []string {
631	if x != nil {
632		return x.Uris
633	}
634	return nil
635}
636
637func (x *PushBlobRequest) GetQualifiers() []*Qualifier {
638	if x != nil {
639		return x.Qualifiers
640	}
641	return nil
642}
643
644func (x *PushBlobRequest) GetExpireAt() *timestamppb.Timestamp {
645	if x != nil {
646		return x.ExpireAt
647	}
648	return nil
649}
650
651func (x *PushBlobRequest) GetBlobDigest() *v2.Digest {
652	if x != nil {
653		return x.BlobDigest
654	}
655	return nil
656}
657
658func (x *PushBlobRequest) GetReferencesBlobs() []*v2.Digest {
659	if x != nil {
660		return x.ReferencesBlobs
661	}
662	return nil
663}
664
665func (x *PushBlobRequest) GetReferencesDirectories() []*v2.Digest {
666	if x != nil {
667		return x.ReferencesDirectories
668	}
669	return nil
670}
671
672// A response message for
673// [Push.PushBlob][build.bazel.remote.asset.v1.Push.PushBlob].
674type PushBlobResponse struct {
675	state         protoimpl.MessageState
676	sizeCache     protoimpl.SizeCache
677	unknownFields protoimpl.UnknownFields
678}
679
680func (x *PushBlobResponse) Reset() {
681	*x = PushBlobResponse{}
682	if protoimpl.UnsafeEnabled {
683		mi := &file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[6]
684		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
685		ms.StoreMessageInfo(mi)
686	}
687}
688
689func (x *PushBlobResponse) String() string {
690	return protoimpl.X.MessageStringOf(x)
691}
692
693func (*PushBlobResponse) ProtoMessage() {}
694
695func (x *PushBlobResponse) ProtoReflect() protoreflect.Message {
696	mi := &file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[6]
697	if protoimpl.UnsafeEnabled && x != nil {
698		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
699		if ms.LoadMessageInfo() == nil {
700			ms.StoreMessageInfo(mi)
701		}
702		return ms
703	}
704	return mi.MessageOf(x)
705}
706
707// Deprecated: Use PushBlobResponse.ProtoReflect.Descriptor instead.
708func (*PushBlobResponse) Descriptor() ([]byte, []int) {
709	return file_build_bazel_remote_asset_v1_remote_asset_proto_rawDescGZIP(), []int{6}
710}
711
712// A request message for
713// [Push.PushDirectory][build.bazel.remote.asset.v1.Push.PushDirectory].
714type PushDirectoryRequest struct {
715	state         protoimpl.MessageState
716	sizeCache     protoimpl.SizeCache
717	unknownFields protoimpl.UnknownFields
718
719	// The instance of the execution system to operate against. A server may
720	// support multiple instances of the execution system (with their own workers,
721	// storage, caches, etc.). The server MAY require use of this field to select
722	// between them in an implementation-defined fashion, otherwise it can be
723	// omitted.
724	InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName,proto3" json:"instance_name,omitempty"`
725	// The URI(s) of the content to associate. If multiple URIs are specified, the
726	// pushed content will be available to fetch by specifying any of them.
727	Uris []string `protobuf:"bytes,2,rep,name=uris,proto3" json:"uris,omitempty"`
728	// Qualifiers sub-specifying the content that is being pushed - see comments
729	// on [Qualifier][build.bazel.remote.asset.v1.Qualifier].
730	// The same qualifiers apply to all URIs.
731	Qualifiers []*Qualifier `protobuf:"bytes,3,rep,name=qualifiers,proto3" json:"qualifiers,omitempty"`
732	// A time after which this content should stop being returned via
733	// [FetchDirectory][build.bazel.remote.asset.v1.Fetch.FetchDirectory].
734	// Servers *MAY* expire content early, e.g. due to storage pressure.
735	ExpireAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expire_at,json=expireAt,proto3" json:"expire_at,omitempty"`
736	// Directory to associate
737	RootDirectoryDigest *v2.Digest `protobuf:"bytes,5,opt,name=root_directory_digest,json=rootDirectoryDigest,proto3" json:"root_directory_digest,omitempty"`
738	// Referenced blobs or directories that need to not expire before expiration
739	// of this association, in addition to `root_directory_digest` itself.
740	// These fields are hints - clients *MAY* omit them, and servers *SHOULD*
741	// respect them, at the risk of increased incidents of Fetch responses
742	// indirectly referencing unavailable blobs.
743	ReferencesBlobs       []*v2.Digest `protobuf:"bytes,6,rep,name=references_blobs,json=referencesBlobs,proto3" json:"references_blobs,omitempty"`
744	ReferencesDirectories []*v2.Digest `protobuf:"bytes,7,rep,name=references_directories,json=referencesDirectories,proto3" json:"references_directories,omitempty"`
745}
746
747func (x *PushDirectoryRequest) Reset() {
748	*x = PushDirectoryRequest{}
749	if protoimpl.UnsafeEnabled {
750		mi := &file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[7]
751		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
752		ms.StoreMessageInfo(mi)
753	}
754}
755
756func (x *PushDirectoryRequest) String() string {
757	return protoimpl.X.MessageStringOf(x)
758}
759
760func (*PushDirectoryRequest) ProtoMessage() {}
761
762func (x *PushDirectoryRequest) ProtoReflect() protoreflect.Message {
763	mi := &file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[7]
764	if protoimpl.UnsafeEnabled && x != nil {
765		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
766		if ms.LoadMessageInfo() == nil {
767			ms.StoreMessageInfo(mi)
768		}
769		return ms
770	}
771	return mi.MessageOf(x)
772}
773
774// Deprecated: Use PushDirectoryRequest.ProtoReflect.Descriptor instead.
775func (*PushDirectoryRequest) Descriptor() ([]byte, []int) {
776	return file_build_bazel_remote_asset_v1_remote_asset_proto_rawDescGZIP(), []int{7}
777}
778
779func (x *PushDirectoryRequest) GetInstanceName() string {
780	if x != nil {
781		return x.InstanceName
782	}
783	return ""
784}
785
786func (x *PushDirectoryRequest) GetUris() []string {
787	if x != nil {
788		return x.Uris
789	}
790	return nil
791}
792
793func (x *PushDirectoryRequest) GetQualifiers() []*Qualifier {
794	if x != nil {
795		return x.Qualifiers
796	}
797	return nil
798}
799
800func (x *PushDirectoryRequest) GetExpireAt() *timestamppb.Timestamp {
801	if x != nil {
802		return x.ExpireAt
803	}
804	return nil
805}
806
807func (x *PushDirectoryRequest) GetRootDirectoryDigest() *v2.Digest {
808	if x != nil {
809		return x.RootDirectoryDigest
810	}
811	return nil
812}
813
814func (x *PushDirectoryRequest) GetReferencesBlobs() []*v2.Digest {
815	if x != nil {
816		return x.ReferencesBlobs
817	}
818	return nil
819}
820
821func (x *PushDirectoryRequest) GetReferencesDirectories() []*v2.Digest {
822	if x != nil {
823		return x.ReferencesDirectories
824	}
825	return nil
826}
827
828// A response message for
829// [Push.PushDirectory][build.bazel.remote.asset.v1.Push.PushDirectory].
830type PushDirectoryResponse struct {
831	state         protoimpl.MessageState
832	sizeCache     protoimpl.SizeCache
833	unknownFields protoimpl.UnknownFields
834}
835
836func (x *PushDirectoryResponse) Reset() {
837	*x = PushDirectoryResponse{}
838	if protoimpl.UnsafeEnabled {
839		mi := &file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[8]
840		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
841		ms.StoreMessageInfo(mi)
842	}
843}
844
845func (x *PushDirectoryResponse) String() string {
846	return protoimpl.X.MessageStringOf(x)
847}
848
849func (*PushDirectoryResponse) ProtoMessage() {}
850
851func (x *PushDirectoryResponse) ProtoReflect() protoreflect.Message {
852	mi := &file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[8]
853	if protoimpl.UnsafeEnabled && x != nil {
854		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
855		if ms.LoadMessageInfo() == nil {
856			ms.StoreMessageInfo(mi)
857		}
858		return ms
859	}
860	return mi.MessageOf(x)
861}
862
863// Deprecated: Use PushDirectoryResponse.ProtoReflect.Descriptor instead.
864func (*PushDirectoryResponse) Descriptor() ([]byte, []int) {
865	return file_build_bazel_remote_asset_v1_remote_asset_proto_rawDescGZIP(), []int{8}
866}
867
868var File_build_bazel_remote_asset_v1_remote_asset_proto protoreflect.FileDescriptor
869
870var file_build_bazel_remote_asset_v1_remote_asset_proto_rawDesc = []byte{
871	0x0a, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2f, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x2f, 0x72, 0x65,
872	0x6d, 0x6f, 0x74, 0x65, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65,
873	0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
874	0x12, 0x1b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x2e, 0x72, 0x65,
875	0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31, 0x1a, 0x36, 0x62,
876	0x75, 0x69, 0x6c, 0x64, 0x2f, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74,
877	0x65, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x32, 0x2f, 0x72,
878	0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
879	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70,
880	0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72,
881	0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
882	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72,
883	0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
884	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70,
885	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63,
886	0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x35, 0x0a,
887	0x09, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
888	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14,
889	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
890	0x61, 0x6c, 0x75, 0x65, 0x22, 0x9c, 0x02, 0x0a, 0x10, 0x46, 0x65, 0x74, 0x63, 0x68, 0x42, 0x6c,
891	0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73,
892	0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
893	0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x33,
894	0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
895	0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
896	0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65,
897	0x6f, 0x75, 0x74, 0x12, 0x52, 0x0a, 0x17, 0x6f, 0x6c, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6f,
898	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x18, 0x03,
899	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
900	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
901	0x52, 0x15, 0x6f, 0x6c, 0x64, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x41,
902	0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x72, 0x69, 0x73, 0x18,
903	0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x75, 0x72, 0x69, 0x73, 0x12, 0x46, 0x0a, 0x0a, 0x71,
904	0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
905	0x26, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x2e, 0x72, 0x65,
906	0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75,
907	0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0a, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69,
908	0x65, 0x72, 0x73, 0x22, 0x9e, 0x02, 0x0a, 0x11, 0x46, 0x65, 0x74, 0x63, 0x68, 0x42, 0x6c, 0x6f,
909	0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61,
910	0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
911	0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73,
912	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01,
913	0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x46, 0x0a, 0x0a, 0x71, 0x75, 0x61, 0x6c, 0x69,
914	0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x75,
915	0x69, 0x6c, 0x64, 0x2e, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65,
916	0x2e, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x66,
917	0x69, 0x65, 0x72, 0x52, 0x0a, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12,
918	0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20,
919	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
920	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
921	0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x48, 0x0a, 0x0b, 0x62, 0x6c,
922	0x6f, 0x62, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
923	0x27, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x2e, 0x72, 0x65,
924	0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76,
925	0x32, 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x62, 0x44, 0x69,
926	0x67, 0x65, 0x73, 0x74, 0x22, 0xa1, 0x02, 0x0a, 0x15, 0x46, 0x65, 0x74, 0x63, 0x68, 0x44, 0x69,
927	0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23,
928	0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
929	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e,
930	0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02,
931	0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
932	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
933	0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x52, 0x0a, 0x17, 0x6f, 0x6c, 0x64, 0x65,
934	0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70,
935	0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
936	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
937	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x15, 0x6f, 0x6c, 0x64, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e,
938	0x74, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04,
939	0x75, 0x72, 0x69, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x75, 0x72, 0x69, 0x73,
940	0x12, 0x46, 0x0a, 0x0a, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x05,
941	0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x62, 0x61, 0x7a,
942	0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e,
943	0x76, 0x31, 0x2e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0a, 0x71, 0x75,
944	0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0xb6, 0x02, 0x0a, 0x16, 0x46, 0x65, 0x74,
945	0x63, 0x68, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f,
946	0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20,
947	0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63,
948	0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
949	0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72,
950	0x69, 0x12, 0x46, 0x0a, 0x0a, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18,
951	0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x62, 0x61,
952	0x7a, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74,
953	0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0a, 0x71,
954	0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70,
955	0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
956	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
957	0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72,
958	0x65, 0x73, 0x41, 0x74, 0x12, 0x5b, 0x0a, 0x15, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x64, 0x69, 0x72,
959	0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20,
960	0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x62, 0x61, 0x7a, 0x65,
961	0x6c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69,
962	0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x52, 0x13, 0x72, 0x6f,
963	0x6f, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x69, 0x67, 0x65, 0x73,
964	0x74, 0x22, 0xc9, 0x03, 0x0a, 0x0f, 0x50, 0x75, 0x73, 0x68, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65,
965	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
966	0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e,
967	0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x72,
968	0x69, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x75, 0x72, 0x69, 0x73, 0x12, 0x46,
969	0x0a, 0x0a, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03,
970	0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x62, 0x61, 0x7a, 0x65, 0x6c,
971	0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31,
972	0x2e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0a, 0x71, 0x75, 0x61, 0x6c,
973	0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65,
974	0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
975	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
976	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x41, 0x74, 0x12,
977	0x48, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x05,
978	0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x62, 0x61, 0x7a,
979	0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74,
980	0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x62,
981	0x6c, 0x6f, 0x62, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x52, 0x0a, 0x10, 0x72, 0x65, 0x66,
982	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x73, 0x18, 0x06, 0x20,
983	0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x62, 0x61, 0x7a, 0x65,
984	0x6c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69,
985	0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x52, 0x0f, 0x72, 0x65,
986	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x12, 0x5e, 0x0a,
987	0x16, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x72, 0x65,
988	0x63, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e,
989	0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6d, 0x6f,
990	0x74, 0x65, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e,
991	0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x52, 0x15, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
992	0x65, 0x73, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x22, 0x12, 0x0a,
993	0x10, 0x50, 0x75, 0x73, 0x68, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
994	0x65, 0x22, 0xe1, 0x03, 0x0a, 0x14, 0x50, 0x75, 0x73, 0x68, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74,
995	0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e,
996	0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
997	0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12,
998	0x12, 0x0a, 0x04, 0x75, 0x72, 0x69, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x75,
999	0x72, 0x69, 0x73, 0x12, 0x46, 0x0a, 0x0a, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72,
1000	0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e,
1001	0x62, 0x61, 0x7a, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x61, 0x73, 0x73,
1002	0x65, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52,
1003	0x0a, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x65,
1004	0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
1005	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
1006	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x65, 0x78, 0x70, 0x69,
1007	0x72, 0x65, 0x41, 0x74, 0x12, 0x5b, 0x0a, 0x15, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x64, 0x69, 0x72,
1008	0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20,
1009	0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x62, 0x61, 0x7a, 0x65,
1010	0x6c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69,
1011	0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x52, 0x13, 0x72, 0x6f,
1012	0x6f, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x69, 0x67, 0x65, 0x73,
1013	0x74, 0x12, 0x52, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x5f,
1014	0x62, 0x6c, 0x6f, 0x62, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x75,
1015	0x69, 0x6c, 0x64, 0x2e, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65,
1016	0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x69,
1017	0x67, 0x65, 0x73, 0x74, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73,
1018	0x42, 0x6c, 0x6f, 0x62, 0x73, 0x12, 0x5e, 0x0a, 0x16, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
1019	0x63, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18,
1020	0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x62, 0x61,
1021	0x7a, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75,
1022	0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x52, 0x15,
1023	0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74,
1024	0x6f, 0x72, 0x69, 0x65, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x50, 0x75, 0x73, 0x68, 0x44, 0x69, 0x72,
1025	0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xdd,
1026	0x02, 0x0a, 0x05, 0x46, 0x65, 0x74, 0x63, 0x68, 0x12, 0x9e, 0x01, 0x0a, 0x09, 0x46, 0x65, 0x74,
1027	0x63, 0x68, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x2d, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x62,
1028	0x61, 0x7a, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65,
1029	0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65,
1030	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x62, 0x61,
1031	0x7a, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74,
1032	0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73,
1033	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x3a, 0x01, 0x2a,
1034	0x22, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f,
1035	0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x3a,
1036	0x66, 0x65, 0x74, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0xb2, 0x01, 0x0a, 0x0e, 0x46, 0x65,
1037	0x74, 0x63, 0x68, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x32, 0x2e, 0x62,
1038	0x75, 0x69, 0x6c, 0x64, 0x2e, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74,
1039	0x65, 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68,
1040	0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
1041	0x1a, 0x33, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x2e, 0x72,
1042	0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46,
1043	0x65, 0x74, 0x63, 0x68, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73,
1044	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x3a, 0x01, 0x2a,
1045	0x22, 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f,
1046	0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x3a,
1047	0x66, 0x65, 0x74, 0x63, 0x68, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x32, 0xd4,
1048	0x02, 0x0a, 0x04, 0x50, 0x75, 0x73, 0x68, 0x12, 0x9a, 0x01, 0x0a, 0x08, 0x50, 0x75, 0x73, 0x68,
1049	0x42, 0x6c, 0x6f, 0x62, 0x12, 0x2c, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x62, 0x61, 0x7a,
1050	0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e,
1051	0x76, 0x31, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65,
1052	0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x62, 0x61, 0x7a, 0x65, 0x6c,
1053	0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31,
1054	0x2e, 0x50, 0x75, 0x73, 0x68, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
1055	0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x3a, 0x01, 0x2a, 0x22, 0x26, 0x2f, 0x76,
1056	0x31, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
1057	0x3d, 0x2a, 0x2a, 0x7d, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x3a, 0x70, 0x75, 0x73, 0x68,
1058	0x42, 0x6c, 0x6f, 0x62, 0x12, 0xae, 0x01, 0x0a, 0x0d, 0x50, 0x75, 0x73, 0x68, 0x44, 0x69, 0x72,
1059	0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x31, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x62,
1060	0x61, 0x7a, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x61, 0x73, 0x73, 0x65,
1061	0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f,
1062	0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x62, 0x75, 0x69, 0x6c,
1063	0x64, 0x2e, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x61,
1064	0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x44, 0x69, 0x72, 0x65,
1065	0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82,
1066	0xd3, 0xe4, 0x93, 0x02, 0x30, 0x3a, 0x01, 0x2a, 0x22, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x69,
1067	0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x2a, 0x2a, 0x7d,
1068	0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x3a, 0x70, 0x75, 0x73, 0x68, 0x44, 0x69, 0x72, 0x65,
1069	0x63, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x9f, 0x01, 0x0a, 0x1b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e,
1070	0x62, 0x61, 0x7a, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x61, 0x73, 0x73,
1071	0x65, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x73, 0x73,
1072	0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x49, 0x67, 0x69, 0x74, 0x68, 0x75,
1073	0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x62, 0x75, 0x69, 0x6c, 0x64,
1074	0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x62, 0x75, 0x69,
1075	0x6c, 0x64, 0x2f, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2f,
1076	0x61, 0x73, 0x73, 0x65, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x61,
1077	0x73, 0x73, 0x65, 0x74, 0xa2, 0x02, 0x02, 0x52, 0x41, 0xaa, 0x02, 0x1b, 0x42, 0x75, 0x69, 0x6c,
1078	0x64, 0x2e, 0x42, 0x61, 0x7a, 0x65, 0x6c, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x41,
1079	0x73, 0x73, 0x65, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
1080}
1081
1082var (
1083	file_build_bazel_remote_asset_v1_remote_asset_proto_rawDescOnce sync.Once
1084	file_build_bazel_remote_asset_v1_remote_asset_proto_rawDescData = file_build_bazel_remote_asset_v1_remote_asset_proto_rawDesc
1085)
1086
1087func file_build_bazel_remote_asset_v1_remote_asset_proto_rawDescGZIP() []byte {
1088	file_build_bazel_remote_asset_v1_remote_asset_proto_rawDescOnce.Do(func() {
1089		file_build_bazel_remote_asset_v1_remote_asset_proto_rawDescData = protoimpl.X.CompressGZIP(file_build_bazel_remote_asset_v1_remote_asset_proto_rawDescData)
1090	})
1091	return file_build_bazel_remote_asset_v1_remote_asset_proto_rawDescData
1092}
1093
1094var file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
1095var file_build_bazel_remote_asset_v1_remote_asset_proto_goTypes = []interface{}{
1096	(*Qualifier)(nil),              // 0: build.bazel.remote.asset.v1.Qualifier
1097	(*FetchBlobRequest)(nil),       // 1: build.bazel.remote.asset.v1.FetchBlobRequest
1098	(*FetchBlobResponse)(nil),      // 2: build.bazel.remote.asset.v1.FetchBlobResponse
1099	(*FetchDirectoryRequest)(nil),  // 3: build.bazel.remote.asset.v1.FetchDirectoryRequest
1100	(*FetchDirectoryResponse)(nil), // 4: build.bazel.remote.asset.v1.FetchDirectoryResponse
1101	(*PushBlobRequest)(nil),        // 5: build.bazel.remote.asset.v1.PushBlobRequest
1102	(*PushBlobResponse)(nil),       // 6: build.bazel.remote.asset.v1.PushBlobResponse
1103	(*PushDirectoryRequest)(nil),   // 7: build.bazel.remote.asset.v1.PushDirectoryRequest
1104	(*PushDirectoryResponse)(nil),  // 8: build.bazel.remote.asset.v1.PushDirectoryResponse
1105	(*durationpb.Duration)(nil),    // 9: google.protobuf.Duration
1106	(*timestamppb.Timestamp)(nil),  // 10: google.protobuf.Timestamp
1107	(*status.Status)(nil),          // 11: google.rpc.Status
1108	(*v2.Digest)(nil),              // 12: build.bazel.remote.execution.v2.Digest
1109}
1110var file_build_bazel_remote_asset_v1_remote_asset_proto_depIdxs = []int32{
1111	9,  // 0: build.bazel.remote.asset.v1.FetchBlobRequest.timeout:type_name -> google.protobuf.Duration
1112	10, // 1: build.bazel.remote.asset.v1.FetchBlobRequest.oldest_content_accepted:type_name -> google.protobuf.Timestamp
1113	0,  // 2: build.bazel.remote.asset.v1.FetchBlobRequest.qualifiers:type_name -> build.bazel.remote.asset.v1.Qualifier
1114	11, // 3: build.bazel.remote.asset.v1.FetchBlobResponse.status:type_name -> google.rpc.Status
1115	0,  // 4: build.bazel.remote.asset.v1.FetchBlobResponse.qualifiers:type_name -> build.bazel.remote.asset.v1.Qualifier
1116	10, // 5: build.bazel.remote.asset.v1.FetchBlobResponse.expires_at:type_name -> google.protobuf.Timestamp
1117	12, // 6: build.bazel.remote.asset.v1.FetchBlobResponse.blob_digest:type_name -> build.bazel.remote.execution.v2.Digest
1118	9,  // 7: build.bazel.remote.asset.v1.FetchDirectoryRequest.timeout:type_name -> google.protobuf.Duration
1119	10, // 8: build.bazel.remote.asset.v1.FetchDirectoryRequest.oldest_content_accepted:type_name -> google.protobuf.Timestamp
1120	0,  // 9: build.bazel.remote.asset.v1.FetchDirectoryRequest.qualifiers:type_name -> build.bazel.remote.asset.v1.Qualifier
1121	11, // 10: build.bazel.remote.asset.v1.FetchDirectoryResponse.status:type_name -> google.rpc.Status
1122	0,  // 11: build.bazel.remote.asset.v1.FetchDirectoryResponse.qualifiers:type_name -> build.bazel.remote.asset.v1.Qualifier
1123	10, // 12: build.bazel.remote.asset.v1.FetchDirectoryResponse.expires_at:type_name -> google.protobuf.Timestamp
1124	12, // 13: build.bazel.remote.asset.v1.FetchDirectoryResponse.root_directory_digest:type_name -> build.bazel.remote.execution.v2.Digest
1125	0,  // 14: build.bazel.remote.asset.v1.PushBlobRequest.qualifiers:type_name -> build.bazel.remote.asset.v1.Qualifier
1126	10, // 15: build.bazel.remote.asset.v1.PushBlobRequest.expire_at:type_name -> google.protobuf.Timestamp
1127	12, // 16: build.bazel.remote.asset.v1.PushBlobRequest.blob_digest:type_name -> build.bazel.remote.execution.v2.Digest
1128	12, // 17: build.bazel.remote.asset.v1.PushBlobRequest.references_blobs:type_name -> build.bazel.remote.execution.v2.Digest
1129	12, // 18: build.bazel.remote.asset.v1.PushBlobRequest.references_directories:type_name -> build.bazel.remote.execution.v2.Digest
1130	0,  // 19: build.bazel.remote.asset.v1.PushDirectoryRequest.qualifiers:type_name -> build.bazel.remote.asset.v1.Qualifier
1131	10, // 20: build.bazel.remote.asset.v1.PushDirectoryRequest.expire_at:type_name -> google.protobuf.Timestamp
1132	12, // 21: build.bazel.remote.asset.v1.PushDirectoryRequest.root_directory_digest:type_name -> build.bazel.remote.execution.v2.Digest
1133	12, // 22: build.bazel.remote.asset.v1.PushDirectoryRequest.references_blobs:type_name -> build.bazel.remote.execution.v2.Digest
1134	12, // 23: build.bazel.remote.asset.v1.PushDirectoryRequest.references_directories:type_name -> build.bazel.remote.execution.v2.Digest
1135	1,  // 24: build.bazel.remote.asset.v1.Fetch.FetchBlob:input_type -> build.bazel.remote.asset.v1.FetchBlobRequest
1136	3,  // 25: build.bazel.remote.asset.v1.Fetch.FetchDirectory:input_type -> build.bazel.remote.asset.v1.FetchDirectoryRequest
1137	5,  // 26: build.bazel.remote.asset.v1.Push.PushBlob:input_type -> build.bazel.remote.asset.v1.PushBlobRequest
1138	7,  // 27: build.bazel.remote.asset.v1.Push.PushDirectory:input_type -> build.bazel.remote.asset.v1.PushDirectoryRequest
1139	2,  // 28: build.bazel.remote.asset.v1.Fetch.FetchBlob:output_type -> build.bazel.remote.asset.v1.FetchBlobResponse
1140	4,  // 29: build.bazel.remote.asset.v1.Fetch.FetchDirectory:output_type -> build.bazel.remote.asset.v1.FetchDirectoryResponse
1141	6,  // 30: build.bazel.remote.asset.v1.Push.PushBlob:output_type -> build.bazel.remote.asset.v1.PushBlobResponse
1142	8,  // 31: build.bazel.remote.asset.v1.Push.PushDirectory:output_type -> build.bazel.remote.asset.v1.PushDirectoryResponse
1143	28, // [28:32] is the sub-list for method output_type
1144	24, // [24:28] is the sub-list for method input_type
1145	24, // [24:24] is the sub-list for extension type_name
1146	24, // [24:24] is the sub-list for extension extendee
1147	0,  // [0:24] is the sub-list for field type_name
1148}
1149
1150func init() { file_build_bazel_remote_asset_v1_remote_asset_proto_init() }
1151func file_build_bazel_remote_asset_v1_remote_asset_proto_init() {
1152	if File_build_bazel_remote_asset_v1_remote_asset_proto != nil {
1153		return
1154	}
1155	if !protoimpl.UnsafeEnabled {
1156		file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
1157			switch v := v.(*Qualifier); i {
1158			case 0:
1159				return &v.state
1160			case 1:
1161				return &v.sizeCache
1162			case 2:
1163				return &v.unknownFields
1164			default:
1165				return nil
1166			}
1167		}
1168		file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
1169			switch v := v.(*FetchBlobRequest); i {
1170			case 0:
1171				return &v.state
1172			case 1:
1173				return &v.sizeCache
1174			case 2:
1175				return &v.unknownFields
1176			default:
1177				return nil
1178			}
1179		}
1180		file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
1181			switch v := v.(*FetchBlobResponse); i {
1182			case 0:
1183				return &v.state
1184			case 1:
1185				return &v.sizeCache
1186			case 2:
1187				return &v.unknownFields
1188			default:
1189				return nil
1190			}
1191		}
1192		file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
1193			switch v := v.(*FetchDirectoryRequest); i {
1194			case 0:
1195				return &v.state
1196			case 1:
1197				return &v.sizeCache
1198			case 2:
1199				return &v.unknownFields
1200			default:
1201				return nil
1202			}
1203		}
1204		file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
1205			switch v := v.(*FetchDirectoryResponse); i {
1206			case 0:
1207				return &v.state
1208			case 1:
1209				return &v.sizeCache
1210			case 2:
1211				return &v.unknownFields
1212			default:
1213				return nil
1214			}
1215		}
1216		file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
1217			switch v := v.(*PushBlobRequest); i {
1218			case 0:
1219				return &v.state
1220			case 1:
1221				return &v.sizeCache
1222			case 2:
1223				return &v.unknownFields
1224			default:
1225				return nil
1226			}
1227		}
1228		file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
1229			switch v := v.(*PushBlobResponse); i {
1230			case 0:
1231				return &v.state
1232			case 1:
1233				return &v.sizeCache
1234			case 2:
1235				return &v.unknownFields
1236			default:
1237				return nil
1238			}
1239		}
1240		file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
1241			switch v := v.(*PushDirectoryRequest); i {
1242			case 0:
1243				return &v.state
1244			case 1:
1245				return &v.sizeCache
1246			case 2:
1247				return &v.unknownFields
1248			default:
1249				return nil
1250			}
1251		}
1252		file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
1253			switch v := v.(*PushDirectoryResponse); i {
1254			case 0:
1255				return &v.state
1256			case 1:
1257				return &v.sizeCache
1258			case 2:
1259				return &v.unknownFields
1260			default:
1261				return nil
1262			}
1263		}
1264	}
1265	type x struct{}
1266	out := protoimpl.TypeBuilder{
1267		File: protoimpl.DescBuilder{
1268			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
1269			RawDescriptor: file_build_bazel_remote_asset_v1_remote_asset_proto_rawDesc,
1270			NumEnums:      0,
1271			NumMessages:   9,
1272			NumExtensions: 0,
1273			NumServices:   2,
1274		},
1275		GoTypes:           file_build_bazel_remote_asset_v1_remote_asset_proto_goTypes,
1276		DependencyIndexes: file_build_bazel_remote_asset_v1_remote_asset_proto_depIdxs,
1277		MessageInfos:      file_build_bazel_remote_asset_v1_remote_asset_proto_msgTypes,
1278	}.Build()
1279	File_build_bazel_remote_asset_v1_remote_asset_proto = out.File
1280	file_build_bazel_remote_asset_v1_remote_asset_proto_rawDesc = nil
1281	file_build_bazel_remote_asset_v1_remote_asset_proto_goTypes = nil
1282	file_build_bazel_remote_asset_v1_remote_asset_proto_depIdxs = nil
1283}
1284
1285// Reference imports to suppress errors if they are not otherwise used.
1286var _ context.Context
1287var _ grpc.ClientConnInterface
1288
1289// This is a compile-time assertion to ensure that this generated file
1290// is compatible with the grpc package it is being compiled against.
1291const _ = grpc.SupportPackageIsVersion6
1292
1293// FetchClient is the client API for Fetch service.
1294//
1295// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
1296type FetchClient interface {
1297	// Resolve or fetch referenced assets, making them available to the caller and
1298	// other consumers in the [ContentAddressableStorage][build.bazel.remote.execution.v2.ContentAddressableStorage].
1299	//
1300	// Servers *MAY* fetch content that they do not already have cached, for any
1301	// URLs they support.
1302	//
1303	// Servers *SHOULD* ensure that referenced files are present in the CAS at the
1304	// time of the response, and (if supported) that they will remain available
1305	// for a reasonable period of time. The lifetimes of the referenced blobs *SHOULD*
1306	// be increased if necessary and applicable.
1307	// In the event that a client receives a reference to content that is no
1308	// longer present, it *MAY* re-issue the request with
1309	// `oldest_content_accepted` set to a more recent timestamp than the original
1310	// attempt, to induce a re-fetch from origin.
1311	//
1312	// Servers *MAY* cache fetched content and reuse it for subsequent requests,
1313	// subject to `oldest_content_accepted`.
1314	//
1315	// Servers *MAY* support the complementary [Push][build.bazel.remote.asset.v1.Push]
1316	// API and allow content to be directly inserted for use in future fetch
1317	// responses.
1318	//
1319	// Servers *MUST* ensure Fetch'd content matches all the specified
1320	// qualifiers except in the case of previously Push'd resources, for which
1321	// the server *MAY* trust the pushing client to have set the qualifiers
1322	// correctly, without validation.
1323	//
1324	// Servers not implementing the complementary [Push][build.bazel.remote.asset.v1.Push]
1325	// API *MUST* reject requests containing qualifiers it does not support.
1326	//
1327	// Servers *MAY* transform assets as part of the fetch. For example a
1328	// tarball fetched by [FetchDirectory][build.bazel.remote.asset.v1.Fetch.FetchDirectory]
1329	// might be unpacked, or a Git repository
1330	// fetched by [FetchBlob][build.bazel.remote.asset.v1.Fetch.FetchBlob]
1331	// might be passed through `git-archive`.
1332	//
1333	// Errors handling the requested assets will be returned as gRPC Status errors
1334	// here; errors outside the server's control will be returned inline in the
1335	// `status` field of the response (see comment there for details).
1336	// The possible RPC errors include:
1337	//   - `INVALID_ARGUMENT`: One or more arguments were invalid, such as a
1338	//     qualifier that is not supported by the server.
1339	//   - `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to
1340	//     perform the requested operation. The client may retry after a delay.
1341	//   - `UNAVAILABLE`: Due to a transient condition the operation could not be
1342	//     completed. The client should retry.
1343	//   - `INTERNAL`: An internal error occurred while performing the operation.
1344	//     The client should retry.
1345	//   - `DEADLINE_EXCEEDED`: The fetch could not be completed within the given
1346	//     RPC deadline. The client should retry for at least as long as the value
1347	//     provided in `timeout` field of the request.
1348	//
1349	// In the case of unsupported qualifiers, the server *SHOULD* additionally
1350	// send a [BadRequest][google.rpc.BadRequest] error detail where, for each
1351	// unsupported qualifier, there is a `FieldViolation` with a `field` of
1352	// `qualifiers.name` and a `description` of `"{qualifier}" not supported`
1353	// indicating the name of the unsupported qualifier.
1354	FetchBlob(ctx context.Context, in *FetchBlobRequest, opts ...grpc.CallOption) (*FetchBlobResponse, error)
1355	FetchDirectory(ctx context.Context, in *FetchDirectoryRequest, opts ...grpc.CallOption) (*FetchDirectoryResponse, error)
1356}
1357
1358type fetchClient struct {
1359	cc grpc.ClientConnInterface
1360}
1361
1362func NewFetchClient(cc grpc.ClientConnInterface) FetchClient {
1363	return &fetchClient{cc}
1364}
1365
1366func (c *fetchClient) FetchBlob(ctx context.Context, in *FetchBlobRequest, opts ...grpc.CallOption) (*FetchBlobResponse, error) {
1367	out := new(FetchBlobResponse)
1368	err := c.cc.Invoke(ctx, "/build.bazel.remote.asset.v1.Fetch/FetchBlob", in, out, opts...)
1369	if err != nil {
1370		return nil, err
1371	}
1372	return out, nil
1373}
1374
1375func (c *fetchClient) FetchDirectory(ctx context.Context, in *FetchDirectoryRequest, opts ...grpc.CallOption) (*FetchDirectoryResponse, error) {
1376	out := new(FetchDirectoryResponse)
1377	err := c.cc.Invoke(ctx, "/build.bazel.remote.asset.v1.Fetch/FetchDirectory", in, out, opts...)
1378	if err != nil {
1379		return nil, err
1380	}
1381	return out, nil
1382}
1383
1384// FetchServer is the server API for Fetch service.
1385type FetchServer interface {
1386	// Resolve or fetch referenced assets, making them available to the caller and
1387	// other consumers in the [ContentAddressableStorage][build.bazel.remote.execution.v2.ContentAddressableStorage].
1388	//
1389	// Servers *MAY* fetch content that they do not already have cached, for any
1390	// URLs they support.
1391	//
1392	// Servers *SHOULD* ensure that referenced files are present in the CAS at the
1393	// time of the response, and (if supported) that they will remain available
1394	// for a reasonable period of time. The lifetimes of the referenced blobs *SHOULD*
1395	// be increased if necessary and applicable.
1396	// In the event that a client receives a reference to content that is no
1397	// longer present, it *MAY* re-issue the request with
1398	// `oldest_content_accepted` set to a more recent timestamp than the original
1399	// attempt, to induce a re-fetch from origin.
1400	//
1401	// Servers *MAY* cache fetched content and reuse it for subsequent requests,
1402	// subject to `oldest_content_accepted`.
1403	//
1404	// Servers *MAY* support the complementary [Push][build.bazel.remote.asset.v1.Push]
1405	// API and allow content to be directly inserted for use in future fetch
1406	// responses.
1407	//
1408	// Servers *MUST* ensure Fetch'd content matches all the specified
1409	// qualifiers except in the case of previously Push'd resources, for which
1410	// the server *MAY* trust the pushing client to have set the qualifiers
1411	// correctly, without validation.
1412	//
1413	// Servers not implementing the complementary [Push][build.bazel.remote.asset.v1.Push]
1414	// API *MUST* reject requests containing qualifiers it does not support.
1415	//
1416	// Servers *MAY* transform assets as part of the fetch. For example a
1417	// tarball fetched by [FetchDirectory][build.bazel.remote.asset.v1.Fetch.FetchDirectory]
1418	// might be unpacked, or a Git repository
1419	// fetched by [FetchBlob][build.bazel.remote.asset.v1.Fetch.FetchBlob]
1420	// might be passed through `git-archive`.
1421	//
1422	// Errors handling the requested assets will be returned as gRPC Status errors
1423	// here; errors outside the server's control will be returned inline in the
1424	// `status` field of the response (see comment there for details).
1425	// The possible RPC errors include:
1426	//   - `INVALID_ARGUMENT`: One or more arguments were invalid, such as a
1427	//     qualifier that is not supported by the server.
1428	//   - `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to
1429	//     perform the requested operation. The client may retry after a delay.
1430	//   - `UNAVAILABLE`: Due to a transient condition the operation could not be
1431	//     completed. The client should retry.
1432	//   - `INTERNAL`: An internal error occurred while performing the operation.
1433	//     The client should retry.
1434	//   - `DEADLINE_EXCEEDED`: The fetch could not be completed within the given
1435	//     RPC deadline. The client should retry for at least as long as the value
1436	//     provided in `timeout` field of the request.
1437	//
1438	// In the case of unsupported qualifiers, the server *SHOULD* additionally
1439	// send a [BadRequest][google.rpc.BadRequest] error detail where, for each
1440	// unsupported qualifier, there is a `FieldViolation` with a `field` of
1441	// `qualifiers.name` and a `description` of `"{qualifier}" not supported`
1442	// indicating the name of the unsupported qualifier.
1443	FetchBlob(context.Context, *FetchBlobRequest) (*FetchBlobResponse, error)
1444	FetchDirectory(context.Context, *FetchDirectoryRequest) (*FetchDirectoryResponse, error)
1445}
1446
1447// UnimplementedFetchServer can be embedded to have forward compatible implementations.
1448type UnimplementedFetchServer struct {
1449}
1450
1451func (*UnimplementedFetchServer) FetchBlob(context.Context, *FetchBlobRequest) (*FetchBlobResponse, error) {
1452	return nil, status1.Errorf(codes.Unimplemented, "method FetchBlob not implemented")
1453}
1454func (*UnimplementedFetchServer) FetchDirectory(context.Context, *FetchDirectoryRequest) (*FetchDirectoryResponse, error) {
1455	return nil, status1.Errorf(codes.Unimplemented, "method FetchDirectory not implemented")
1456}
1457
1458func RegisterFetchServer(s *grpc.Server, srv FetchServer) {
1459	s.RegisterService(&_Fetch_serviceDesc, srv)
1460}
1461
1462func _Fetch_FetchBlob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
1463	in := new(FetchBlobRequest)
1464	if err := dec(in); err != nil {
1465		return nil, err
1466	}
1467	if interceptor == nil {
1468		return srv.(FetchServer).FetchBlob(ctx, in)
1469	}
1470	info := &grpc.UnaryServerInfo{
1471		Server:     srv,
1472		FullMethod: "/build.bazel.remote.asset.v1.Fetch/FetchBlob",
1473	}
1474	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
1475		return srv.(FetchServer).FetchBlob(ctx, req.(*FetchBlobRequest))
1476	}
1477	return interceptor(ctx, in, info, handler)
1478}
1479
1480func _Fetch_FetchDirectory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
1481	in := new(FetchDirectoryRequest)
1482	if err := dec(in); err != nil {
1483		return nil, err
1484	}
1485	if interceptor == nil {
1486		return srv.(FetchServer).FetchDirectory(ctx, in)
1487	}
1488	info := &grpc.UnaryServerInfo{
1489		Server:     srv,
1490		FullMethod: "/build.bazel.remote.asset.v1.Fetch/FetchDirectory",
1491	}
1492	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
1493		return srv.(FetchServer).FetchDirectory(ctx, req.(*FetchDirectoryRequest))
1494	}
1495	return interceptor(ctx, in, info, handler)
1496}
1497
1498var _Fetch_serviceDesc = grpc.ServiceDesc{
1499	ServiceName: "build.bazel.remote.asset.v1.Fetch",
1500	HandlerType: (*FetchServer)(nil),
1501	Methods: []grpc.MethodDesc{
1502		{
1503			MethodName: "FetchBlob",
1504			Handler:    _Fetch_FetchBlob_Handler,
1505		},
1506		{
1507			MethodName: "FetchDirectory",
1508			Handler:    _Fetch_FetchDirectory_Handler,
1509		},
1510	},
1511	Streams:  []grpc.StreamDesc{},
1512	Metadata: "build/bazel/remote/asset/v1/remote_asset.proto",
1513}
1514
1515// PushClient is the client API for Push service.
1516//
1517// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
1518type PushClient interface {
1519	// These APIs associate the identifying information of a resource, as
1520	// indicated by URI and optionally Qualifiers, with content available in the
1521	// CAS. For example, associating a repository url and a commit id with a
1522	// Directory Digest.
1523	//
1524	// Servers *SHOULD* only allow trusted clients to associate content, and *MAY*
1525	// only allow certain URIs to be pushed.
1526	//
1527	// Clients *MUST* ensure associated content is available in CAS prior to
1528	// pushing.
1529	//
1530	// Clients *MUST* ensure the Qualifiers listed correctly match the contents,
1531	// and Servers *MAY* trust these values without validation.
1532	// Fetch servers *MAY* require exact match of all qualifiers when returning
1533	// content previously pushed, or allow fetching content with only a subset of
1534	// the qualifiers specified on Push.
1535	//
1536	// Clients can specify expiration information that the server *SHOULD*
1537	// respect. Subsequent requests can be used to alter the expiration time.
1538	//
1539	// A minimal compliant Fetch implementation may support only Push'd content
1540	// and return `NOT_FOUND` for any resource that was not pushed first.
1541	// Alternatively, a compliant implementation may choose to not support Push
1542	// and only return resources that can be Fetch'd from origin.
1543	//
1544	// Errors will be returned as gRPC Status errors.
1545	// The possible RPC errors include:
1546	//   - `INVALID_ARGUMENT`: One or more arguments to the RPC were invalid.
1547	//   - `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to
1548	//     perform the requested operation. The client may retry after a delay.
1549	//   - `UNAVAILABLE`: Due to a transient condition the operation could not be
1550	//     completed. The client should retry.
1551	//   - `INTERNAL`: An internal error occurred while performing the operation.
1552	//     The client should retry.
1553	PushBlob(ctx context.Context, in *PushBlobRequest, opts ...grpc.CallOption) (*PushBlobResponse, error)
1554	PushDirectory(ctx context.Context, in *PushDirectoryRequest, opts ...grpc.CallOption) (*PushDirectoryResponse, error)
1555}
1556
1557type pushClient struct {
1558	cc grpc.ClientConnInterface
1559}
1560
1561func NewPushClient(cc grpc.ClientConnInterface) PushClient {
1562	return &pushClient{cc}
1563}
1564
1565func (c *pushClient) PushBlob(ctx context.Context, in *PushBlobRequest, opts ...grpc.CallOption) (*PushBlobResponse, error) {
1566	out := new(PushBlobResponse)
1567	err := c.cc.Invoke(ctx, "/build.bazel.remote.asset.v1.Push/PushBlob", in, out, opts...)
1568	if err != nil {
1569		return nil, err
1570	}
1571	return out, nil
1572}
1573
1574func (c *pushClient) PushDirectory(ctx context.Context, in *PushDirectoryRequest, opts ...grpc.CallOption) (*PushDirectoryResponse, error) {
1575	out := new(PushDirectoryResponse)
1576	err := c.cc.Invoke(ctx, "/build.bazel.remote.asset.v1.Push/PushDirectory", in, out, opts...)
1577	if err != nil {
1578		return nil, err
1579	}
1580	return out, nil
1581}
1582
1583// PushServer is the server API for Push service.
1584type PushServer interface {
1585	// These APIs associate the identifying information of a resource, as
1586	// indicated by URI and optionally Qualifiers, with content available in the
1587	// CAS. For example, associating a repository url and a commit id with a
1588	// Directory Digest.
1589	//
1590	// Servers *SHOULD* only allow trusted clients to associate content, and *MAY*
1591	// only allow certain URIs to be pushed.
1592	//
1593	// Clients *MUST* ensure associated content is available in CAS prior to
1594	// pushing.
1595	//
1596	// Clients *MUST* ensure the Qualifiers listed correctly match the contents,
1597	// and Servers *MAY* trust these values without validation.
1598	// Fetch servers *MAY* require exact match of all qualifiers when returning
1599	// content previously pushed, or allow fetching content with only a subset of
1600	// the qualifiers specified on Push.
1601	//
1602	// Clients can specify expiration information that the server *SHOULD*
1603	// respect. Subsequent requests can be used to alter the expiration time.
1604	//
1605	// A minimal compliant Fetch implementation may support only Push'd content
1606	// and return `NOT_FOUND` for any resource that was not pushed first.
1607	// Alternatively, a compliant implementation may choose to not support Push
1608	// and only return resources that can be Fetch'd from origin.
1609	//
1610	// Errors will be returned as gRPC Status errors.
1611	// The possible RPC errors include:
1612	//   - `INVALID_ARGUMENT`: One or more arguments to the RPC were invalid.
1613	//   - `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to
1614	//     perform the requested operation. The client may retry after a delay.
1615	//   - `UNAVAILABLE`: Due to a transient condition the operation could not be
1616	//     completed. The client should retry.
1617	//   - `INTERNAL`: An internal error occurred while performing the operation.
1618	//     The client should retry.
1619	PushBlob(context.Context, *PushBlobRequest) (*PushBlobResponse, error)
1620	PushDirectory(context.Context, *PushDirectoryRequest) (*PushDirectoryResponse, error)
1621}
1622
1623// UnimplementedPushServer can be embedded to have forward compatible implementations.
1624type UnimplementedPushServer struct {
1625}
1626
1627func (*UnimplementedPushServer) PushBlob(context.Context, *PushBlobRequest) (*PushBlobResponse, error) {
1628	return nil, status1.Errorf(codes.Unimplemented, "method PushBlob not implemented")
1629}
1630func (*UnimplementedPushServer) PushDirectory(context.Context, *PushDirectoryRequest) (*PushDirectoryResponse, error) {
1631	return nil, status1.Errorf(codes.Unimplemented, "method PushDirectory not implemented")
1632}
1633
1634func RegisterPushServer(s *grpc.Server, srv PushServer) {
1635	s.RegisterService(&_Push_serviceDesc, srv)
1636}
1637
1638func _Push_PushBlob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
1639	in := new(PushBlobRequest)
1640	if err := dec(in); err != nil {
1641		return nil, err
1642	}
1643	if interceptor == nil {
1644		return srv.(PushServer).PushBlob(ctx, in)
1645	}
1646	info := &grpc.UnaryServerInfo{
1647		Server:     srv,
1648		FullMethod: "/build.bazel.remote.asset.v1.Push/PushBlob",
1649	}
1650	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
1651		return srv.(PushServer).PushBlob(ctx, req.(*PushBlobRequest))
1652	}
1653	return interceptor(ctx, in, info, handler)
1654}
1655
1656func _Push_PushDirectory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
1657	in := new(PushDirectoryRequest)
1658	if err := dec(in); err != nil {
1659		return nil, err
1660	}
1661	if interceptor == nil {
1662		return srv.(PushServer).PushDirectory(ctx, in)
1663	}
1664	info := &grpc.UnaryServerInfo{
1665		Server:     srv,
1666		FullMethod: "/build.bazel.remote.asset.v1.Push/PushDirectory",
1667	}
1668	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
1669		return srv.(PushServer).PushDirectory(ctx, req.(*PushDirectoryRequest))
1670	}
1671	return interceptor(ctx, in, info, handler)
1672}
1673
1674var _Push_serviceDesc = grpc.ServiceDesc{
1675	ServiceName: "build.bazel.remote.asset.v1.Push",
1676	HandlerType: (*PushServer)(nil),
1677	Methods: []grpc.MethodDesc{
1678		{
1679			MethodName: "PushBlob",
1680			Handler:    _Push_PushBlob_Handler,
1681		},
1682		{
1683			MethodName: "PushDirectory",
1684			Handler:    _Push_PushDirectory_Handler,
1685		},
1686	},
1687	Streams:  []grpc.StreamDesc{},
1688	Metadata: "build/bazel/remote/asset/v1/remote_asset.proto",
1689}
1690