@eide/foir-proto-ts 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eide/foir-proto-ts",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./analytics/v1/analytics_pb": "./src/analytics/v1/analytics_pb.js",
@@ -3,7 +3,7 @@
3
3
  /* eslint-disable */
4
4
  // @ts-nocheck
5
5
 
6
- import { CancelOperationExecutionRequest, CancelOperationExecutionResponse, CreateOperationRequest, CreateOperationResponse, DeleteOperationRequest, DeleteOperationResponse, DismissDeadLetterEntryRequest, DismissDeadLetterEntryResponse, ExecuteOperationRequest, ExecuteOperationResponse, GetApplicableOperationsRequest, GetApplicableOperationsResponse, GetDeadLetterStatsRequest, GetDeadLetterStatsResponse, GetOperationExecutionRequest, GetOperationExecutionResponse, GetOperationExecutionStatsRequest, GetOperationExecutionStatsResponse, GetOperationQuotaUsageRequest, GetOperationQuotaUsageResponse, GetOperationRequest, GetOperationResponse, GetSigningSecretRawRequest, GetSigningSecretRawResponse, GetSigningSecretRequest, GetSigningSecretResponse, ListCircuitStatesRequest, ListCircuitStatesResponse, ListDeadLetterEntriesRequest, ListDeadLetterEntriesResponse, ListOperationExecutionsRequest, ListOperationExecutionsResponse, ListOperationsRequest, ListOperationsResponse, RegenerateSigningSecretRequest, RegenerateSigningSecretResponse, ResetCircuitRequest, ResetCircuitResponse, RetryDeadLetterEntryRequest, RetryDeadLetterEntryResponse, UpdateOperationRequest, UpdateOperationResponse } from "./operations_pbjs";
6
+ import { CancelOperationExecutionRequest, CancelOperationExecutionResponse, CompleteOperationExecutionRequest, CompleteOperationExecutionResponse, CreateOperationRequest, CreateOperationResponse, DeleteOperationRequest, DeleteOperationResponse, DismissDeadLetterEntryRequest, DismissDeadLetterEntryResponse, ExecuteOperationRequest, ExecuteOperationResponse, FailOperationExecutionRequest, FailOperationExecutionResponse, GetApplicableOperationsRequest, GetApplicableOperationsResponse, GetDeadLetterStatsRequest, GetDeadLetterStatsResponse, GetOperationExecutionRequest, GetOperationExecutionResponse, GetOperationExecutionStatsRequest, GetOperationExecutionStatsResponse, GetOperationQuotaUsageRequest, GetOperationQuotaUsageResponse, GetOperationRequest, GetOperationResponse, GetSigningSecretRawRequest, GetSigningSecretRawResponse, GetSigningSecretRequest, GetSigningSecretResponse, ListCircuitStatesRequest, ListCircuitStatesResponse, ListDeadLetterEntriesRequest, ListDeadLetterEntriesResponse, ListOperationExecutionsRequest, ListOperationExecutionsResponse, ListOperationsRequest, ListOperationsResponse, RegenerateSigningSecretRequest, RegenerateSigningSecretResponse, ReportOperationProgressRequest, ReportOperationProgressResponse, ResetCircuitRequest, ResetCircuitResponse, RetryDeadLetterEntryRequest, RetryDeadLetterEntryResponse, UpdateOperationRequest, UpdateOperationResponse } from "./operations_pbjs";
7
7
  import { MethodKind } from "@bufbuild/protobuf";
8
8
 
9
9
  /**
@@ -177,6 +177,36 @@ export declare const OperationsService: {
177
177
  readonly O: typeof CancelOperationExecutionResponse,
178
178
  readonly kind: MethodKind.Unary,
179
179
  },
180
+ /**
181
+ * Async-callback completion. Extensions normally use the REST endpoints
182
+ * (token+HMAC); these RPCs exist for admin tooling and the SDK.
183
+ *
184
+ * @generated from rpc operations.v1.OperationsService.CompleteOperationExecution
185
+ */
186
+ readonly completeOperationExecution: {
187
+ readonly name: "CompleteOperationExecution",
188
+ readonly I: typeof CompleteOperationExecutionRequest,
189
+ readonly O: typeof CompleteOperationExecutionResponse,
190
+ readonly kind: MethodKind.Unary,
191
+ },
192
+ /**
193
+ * @generated from rpc operations.v1.OperationsService.FailOperationExecution
194
+ */
195
+ readonly failOperationExecution: {
196
+ readonly name: "FailOperationExecution",
197
+ readonly I: typeof FailOperationExecutionRequest,
198
+ readonly O: typeof FailOperationExecutionResponse,
199
+ readonly kind: MethodKind.Unary,
200
+ },
201
+ /**
202
+ * @generated from rpc operations.v1.OperationsService.ReportOperationProgress
203
+ */
204
+ readonly reportOperationProgress: {
205
+ readonly name: "ReportOperationProgress",
206
+ readonly I: typeof ReportOperationProgressRequest,
207
+ readonly O: typeof ReportOperationProgressResponse,
208
+ readonly kind: MethodKind.Unary,
209
+ },
180
210
  /**
181
211
  * Quota.
182
212
  *
@@ -3,7 +3,7 @@
3
3
  /* eslint-disable */
4
4
  // @ts-nocheck
5
5
 
6
- import { CancelOperationExecutionRequest, CancelOperationExecutionResponse, CreateOperationRequest, CreateOperationResponse, DeleteOperationRequest, DeleteOperationResponse, DismissDeadLetterEntryRequest, DismissDeadLetterEntryResponse, ExecuteOperationRequest, ExecuteOperationResponse, GetApplicableOperationsRequest, GetApplicableOperationsResponse, GetDeadLetterStatsRequest, GetDeadLetterStatsResponse, GetOperationExecutionRequest, GetOperationExecutionResponse, GetOperationExecutionStatsRequest, GetOperationExecutionStatsResponse, GetOperationQuotaUsageRequest, GetOperationQuotaUsageResponse, GetOperationRequest, GetOperationResponse, GetSigningSecretRawRequest, GetSigningSecretRawResponse, GetSigningSecretRequest, GetSigningSecretResponse, ListCircuitStatesRequest, ListCircuitStatesResponse, ListDeadLetterEntriesRequest, ListDeadLetterEntriesResponse, ListOperationExecutionsRequest, ListOperationExecutionsResponse, ListOperationsRequest, ListOperationsResponse, RegenerateSigningSecretRequest, RegenerateSigningSecretResponse, ResetCircuitRequest, ResetCircuitResponse, RetryDeadLetterEntryRequest, RetryDeadLetterEntryResponse, UpdateOperationRequest, UpdateOperationResponse } from "./operations_pbjs";
6
+ import { CancelOperationExecutionRequest, CancelOperationExecutionResponse, CompleteOperationExecutionRequest, CompleteOperationExecutionResponse, CreateOperationRequest, CreateOperationResponse, DeleteOperationRequest, DeleteOperationResponse, DismissDeadLetterEntryRequest, DismissDeadLetterEntryResponse, ExecuteOperationRequest, ExecuteOperationResponse, FailOperationExecutionRequest, FailOperationExecutionResponse, GetApplicableOperationsRequest, GetApplicableOperationsResponse, GetDeadLetterStatsRequest, GetDeadLetterStatsResponse, GetOperationExecutionRequest, GetOperationExecutionResponse, GetOperationExecutionStatsRequest, GetOperationExecutionStatsResponse, GetOperationQuotaUsageRequest, GetOperationQuotaUsageResponse, GetOperationRequest, GetOperationResponse, GetSigningSecretRawRequest, GetSigningSecretRawResponse, GetSigningSecretRequest, GetSigningSecretResponse, ListCircuitStatesRequest, ListCircuitStatesResponse, ListDeadLetterEntriesRequest, ListDeadLetterEntriesResponse, ListOperationExecutionsRequest, ListOperationExecutionsResponse, ListOperationsRequest, ListOperationsResponse, RegenerateSigningSecretRequest, RegenerateSigningSecretResponse, ReportOperationProgressRequest, ReportOperationProgressResponse, ResetCircuitRequest, ResetCircuitResponse, RetryDeadLetterEntryRequest, RetryDeadLetterEntryResponse, UpdateOperationRequest, UpdateOperationResponse } from "./operations_pbjs";
7
7
  import { MethodKind } from "@bufbuild/protobuf";
8
8
 
9
9
  /**
@@ -177,6 +177,36 @@ export const OperationsService = {
177
177
  O: CancelOperationExecutionResponse,
178
178
  kind: MethodKind.Unary,
179
179
  },
180
+ /**
181
+ * Async-callback completion. Extensions normally use the REST endpoints
182
+ * (token+HMAC); these RPCs exist for admin tooling and the SDK.
183
+ *
184
+ * @generated from rpc operations.v1.OperationsService.CompleteOperationExecution
185
+ */
186
+ completeOperationExecution: {
187
+ name: "CompleteOperationExecution",
188
+ I: CompleteOperationExecutionRequest,
189
+ O: CompleteOperationExecutionResponse,
190
+ kind: MethodKind.Unary,
191
+ },
192
+ /**
193
+ * @generated from rpc operations.v1.OperationsService.FailOperationExecution
194
+ */
195
+ failOperationExecution: {
196
+ name: "FailOperationExecution",
197
+ I: FailOperationExecutionRequest,
198
+ O: FailOperationExecutionResponse,
199
+ kind: MethodKind.Unary,
200
+ },
201
+ /**
202
+ * @generated from rpc operations.v1.OperationsService.ReportOperationProgress
203
+ */
204
+ reportOperationProgress: {
205
+ name: "ReportOperationProgress",
206
+ I: ReportOperationProgressRequest,
207
+ O: ReportOperationProgressResponse,
208
+ kind: MethodKind.Unary,
209
+ },
180
210
  /**
181
211
  * Quota.
182
212
  *
@@ -122,6 +122,25 @@ export declare type Operation = Message<"operations.v1.Operation"> & {
122
122
  */
123
123
  projectId?: string;
124
124
 
125
+ /**
126
+ * Async-callback opt-in. When true, ExecuteOperation accepts mode=ASYNC and
127
+ * dispatches the operation expecting the extension to return 202 immediately
128
+ * and later POST to /operations/executions/{id}/complete. When false, ASYNC
129
+ * mode against this operation is rejected with FailedPrecondition.
130
+ *
131
+ * @generated from field: optional bool supports_async_callback = 22;
132
+ */
133
+ supportsAsyncCallback?: boolean;
134
+
135
+ /**
136
+ * How long the platform waits for the callback before marking the execution
137
+ * as timed_out. Falls back to settings["operations.callback_default_ttl"]
138
+ * (default 24h). Clamped to [5m, 7d].
139
+ *
140
+ * @generated from field: optional int32 callback_ttl_seconds = 23;
141
+ */
142
+ callbackTtlSeconds?: number;
143
+
125
144
  /**
126
145
  * Attribution.
127
146
  *
@@ -163,6 +182,8 @@ export declare type OperationExecution = Message<"operations.v1.OperationExecuti
163
182
  operationKey: string;
164
183
 
165
184
  /**
185
+ * pending | dispatched | running | completed | failed | cancelled | timed_out
186
+ *
166
187
  * @generated from field: string status = 3;
167
188
  */
168
189
  status: string;
@@ -212,6 +233,45 @@ export declare type OperationExecution = Message<"operations.v1.OperationExecuti
212
233
  */
213
234
  retryCount: number;
214
235
 
236
+ /**
237
+ * Callback / progress fields for ASYNC mode.
238
+ *
239
+ * @generated from field: optional int32 progress_pct = 13;
240
+ */
241
+ progressPct?: number;
242
+
243
+ /**
244
+ * @generated from field: optional string progress_message = 14;
245
+ */
246
+ progressMessage?: string;
247
+
248
+ /**
249
+ * @generated from field: optional google.protobuf.Struct progress_metadata = 15;
250
+ */
251
+ progressMetadata?: JsonObject;
252
+
253
+ /**
254
+ * @generated from field: optional google.protobuf.Timestamp progress_updated_at = 16;
255
+ */
256
+ progressUpdatedAt?: Timestamp;
257
+
258
+ /**
259
+ * @generated from field: optional google.protobuf.Timestamp callback_expires_at = 17;
260
+ */
261
+ callbackExpiresAt?: Timestamp;
262
+
263
+ /**
264
+ * Set when this execution is a retry of a timed-out parent.
265
+ *
266
+ * @generated from field: optional string parent_execution_id = 18;
267
+ */
268
+ parentExecutionId?: string;
269
+
270
+ /**
271
+ * @generated from field: optional google.protobuf.Timestamp cancelled_at = 19;
272
+ */
273
+ cancelledAt?: Timestamp;
274
+
215
275
  /**
216
276
  * @generated from field: string tenant_id = 20;
217
277
  */
@@ -637,6 +697,16 @@ export declare type CreateOperationRequest = Message<"operations.v1.CreateOperat
637
697
  * @generated from field: optional bool is_active = 18;
638
698
  */
639
699
  isActive?: boolean;
700
+
701
+ /**
702
+ * @generated from field: optional bool supports_async_callback = 19;
703
+ */
704
+ supportsAsyncCallback?: boolean;
705
+
706
+ /**
707
+ * @generated from field: optional int32 callback_ttl_seconds = 20;
708
+ */
709
+ callbackTtlSeconds?: number;
640
710
  };
641
711
 
642
712
  /**
@@ -739,6 +809,16 @@ export declare type UpdateOperationRequest = Message<"operations.v1.UpdateOperat
739
809
  * @generated from field: repeated string allowed_roles = 15;
740
810
  */
741
811
  allowedRoles: string[];
812
+
813
+ /**
814
+ * @generated from field: optional bool supports_async_callback = 16;
815
+ */
816
+ supportsAsyncCallback?: boolean;
817
+
818
+ /**
819
+ * @generated from field: optional int32 callback_ttl_seconds = 17;
820
+ */
821
+ callbackTtlSeconds?: number;
742
822
  };
743
823
 
744
824
  /**
@@ -1350,6 +1430,14 @@ export declare type CancelOperationExecutionResponse = Message<"operations.v1.Ca
1350
1430
  * @generated from field: bool success = 1;
1351
1431
  */
1352
1432
  success: boolean;
1433
+
1434
+ /**
1435
+ * Terminal status after cancellation. Always "cancelled" on success;
1436
+ * empty when the row was already in a terminal state.
1437
+ *
1438
+ * @generated from field: optional string status = 2;
1439
+ */
1440
+ status?: string;
1353
1441
  };
1354
1442
 
1355
1443
  /**
@@ -1358,6 +1446,163 @@ export declare type CancelOperationExecutionResponse = Message<"operations.v1.Ca
1358
1446
  */
1359
1447
  export declare const CancelOperationExecutionResponseSchema: GenMessage<CancelOperationExecutionResponse>;
1360
1448
 
1449
+ /**
1450
+ * @generated from message operations.v1.CompleteOperationExecutionRequest
1451
+ */
1452
+ export declare type CompleteOperationExecutionRequest = Message<"operations.v1.CompleteOperationExecutionRequest"> & {
1453
+ /**
1454
+ * @generated from field: string id = 1;
1455
+ */
1456
+ id: string;
1457
+
1458
+ /**
1459
+ * @generated from field: bytes result_json = 2;
1460
+ */
1461
+ resultJson: Uint8Array;
1462
+ };
1463
+
1464
+ /**
1465
+ * Describes the message operations.v1.CompleteOperationExecutionRequest.
1466
+ * Use `create(CompleteOperationExecutionRequestSchema)` to create a new message.
1467
+ */
1468
+ export declare const CompleteOperationExecutionRequestSchema: GenMessage<CompleteOperationExecutionRequest>;
1469
+
1470
+ /**
1471
+ * @generated from message operations.v1.CompleteOperationExecutionResponse
1472
+ */
1473
+ export declare type CompleteOperationExecutionResponse = Message<"operations.v1.CompleteOperationExecutionResponse"> & {
1474
+ /**
1475
+ * @generated from field: string status = 1;
1476
+ */
1477
+ status: string;
1478
+
1479
+ /**
1480
+ * True when the admin cancelled while the extension was processing — the
1481
+ * platform refused to overwrite the cancelled state.
1482
+ *
1483
+ * @generated from field: bool cancelled = 2;
1484
+ */
1485
+ cancelled: boolean;
1486
+ };
1487
+
1488
+ /**
1489
+ * Describes the message operations.v1.CompleteOperationExecutionResponse.
1490
+ * Use `create(CompleteOperationExecutionResponseSchema)` to create a new message.
1491
+ */
1492
+ export declare const CompleteOperationExecutionResponseSchema: GenMessage<CompleteOperationExecutionResponse>;
1493
+
1494
+ /**
1495
+ * @generated from message operations.v1.FailOperationExecutionRequest
1496
+ */
1497
+ export declare type FailOperationExecutionRequest = Message<"operations.v1.FailOperationExecutionRequest"> & {
1498
+ /**
1499
+ * @generated from field: string id = 1;
1500
+ */
1501
+ id: string;
1502
+
1503
+ /**
1504
+ * @generated from field: string code = 2;
1505
+ */
1506
+ code: string;
1507
+
1508
+ /**
1509
+ * @generated from field: string message = 3;
1510
+ */
1511
+ message: string;
1512
+
1513
+ /**
1514
+ * @generated from field: optional bool retryable = 4;
1515
+ */
1516
+ retryable?: boolean;
1517
+
1518
+ /**
1519
+ * @generated from field: optional google.protobuf.Struct details = 5;
1520
+ */
1521
+ details?: JsonObject;
1522
+ };
1523
+
1524
+ /**
1525
+ * Describes the message operations.v1.FailOperationExecutionRequest.
1526
+ * Use `create(FailOperationExecutionRequestSchema)` to create a new message.
1527
+ */
1528
+ export declare const FailOperationExecutionRequestSchema: GenMessage<FailOperationExecutionRequest>;
1529
+
1530
+ /**
1531
+ * @generated from message operations.v1.FailOperationExecutionResponse
1532
+ */
1533
+ export declare type FailOperationExecutionResponse = Message<"operations.v1.FailOperationExecutionResponse"> & {
1534
+ /**
1535
+ * @generated from field: string status = 1;
1536
+ */
1537
+ status: string;
1538
+
1539
+ /**
1540
+ * @generated from field: bool cancelled = 2;
1541
+ */
1542
+ cancelled: boolean;
1543
+ };
1544
+
1545
+ /**
1546
+ * Describes the message operations.v1.FailOperationExecutionResponse.
1547
+ * Use `create(FailOperationExecutionResponseSchema)` to create a new message.
1548
+ */
1549
+ export declare const FailOperationExecutionResponseSchema: GenMessage<FailOperationExecutionResponse>;
1550
+
1551
+ /**
1552
+ * @generated from message operations.v1.ReportOperationProgressRequest
1553
+ */
1554
+ export declare type ReportOperationProgressRequest = Message<"operations.v1.ReportOperationProgressRequest"> & {
1555
+ /**
1556
+ * @generated from field: string id = 1;
1557
+ */
1558
+ id: string;
1559
+
1560
+ /**
1561
+ * @generated from field: optional int32 progress_pct = 2;
1562
+ */
1563
+ progressPct?: number;
1564
+
1565
+ /**
1566
+ * @generated from field: optional string progress_message = 3;
1567
+ */
1568
+ progressMessage?: string;
1569
+
1570
+ /**
1571
+ * @generated from field: optional google.protobuf.Struct progress_metadata = 4;
1572
+ */
1573
+ progressMetadata?: JsonObject;
1574
+ };
1575
+
1576
+ /**
1577
+ * Describes the message operations.v1.ReportOperationProgressRequest.
1578
+ * Use `create(ReportOperationProgressRequestSchema)` to create a new message.
1579
+ */
1580
+ export declare const ReportOperationProgressRequestSchema: GenMessage<ReportOperationProgressRequest>;
1581
+
1582
+ /**
1583
+ * @generated from message operations.v1.ReportOperationProgressResponse
1584
+ */
1585
+ export declare type ReportOperationProgressResponse = Message<"operations.v1.ReportOperationProgressResponse"> & {
1586
+ /**
1587
+ * @generated from field: string status = 1;
1588
+ */
1589
+ status: string;
1590
+
1591
+ /**
1592
+ * True when the admin has cancelled. Extension should stop work and call
1593
+ * /fail with code='CANCELLED'.
1594
+ *
1595
+ * @generated from field: bool cancelled = 2;
1596
+ */
1597
+ cancelled: boolean;
1598
+ };
1599
+
1600
+ /**
1601
+ * Describes the message operations.v1.ReportOperationProgressResponse.
1602
+ * Use `create(ReportOperationProgressResponseSchema)` to create a new message.
1603
+ */
1604
+ export declare const ReportOperationProgressResponseSchema: GenMessage<ReportOperationProgressResponse>;
1605
+
1361
1606
  /**
1362
1607
  * @generated from message operations.v1.GetOperationQuotaUsageRequest
1363
1608
  */
@@ -1678,6 +1923,33 @@ export declare const OperationsService: GenService<{
1678
1923
  input: typeof CancelOperationExecutionRequestSchema;
1679
1924
  output: typeof CancelOperationExecutionResponseSchema;
1680
1925
  },
1926
+ /**
1927
+ * Async-callback completion. Extensions normally use the REST endpoints
1928
+ * (token+HMAC); these RPCs exist for admin tooling and the SDK.
1929
+ *
1930
+ * @generated from rpc operations.v1.OperationsService.CompleteOperationExecution
1931
+ */
1932
+ completeOperationExecution: {
1933
+ methodKind: "unary";
1934
+ input: typeof CompleteOperationExecutionRequestSchema;
1935
+ output: typeof CompleteOperationExecutionResponseSchema;
1936
+ },
1937
+ /**
1938
+ * @generated from rpc operations.v1.OperationsService.FailOperationExecution
1939
+ */
1940
+ failOperationExecution: {
1941
+ methodKind: "unary";
1942
+ input: typeof FailOperationExecutionRequestSchema;
1943
+ output: typeof FailOperationExecutionResponseSchema;
1944
+ },
1945
+ /**
1946
+ * @generated from rpc operations.v1.OperationsService.ReportOperationProgress
1947
+ */
1948
+ reportOperationProgress: {
1949
+ methodKind: "unary";
1950
+ input: typeof ReportOperationProgressRequestSchema;
1951
+ output: typeof ReportOperationProgressResponseSchema;
1952
+ },
1681
1953
  /**
1682
1954
  * Quota.
1683
1955
  *
@@ -9,7 +9,7 @@ import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bu
9
9
  * Describes the file operations/v1/operations.proto.
10
10
  */
11
11
  export const file_operations_v1_operations = /*@__PURE__*/
12
- fileDesc("Ch5vcGVyYXRpb25zL3YxL29wZXJhdGlvbnMucHJvdG8SDW9wZXJhdGlvbnMudjEiygcKCU9wZXJhdGlvbhIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhEKBGljb24YBSABKAlIAYgBARIVCghjYXRlZ29yeRgGIAEoCUgCiAEBEhAKCGVuZHBvaW50GAcgASgJEhoKDWVuZHBvaW50X2F1dGgYCCABKAlIA4gBARISCgp0aW1lb3V0X21zGAkgASgFEjIKDHJldHJ5X3BvbGljeRgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIyCgxpbnB1dF9zY2hlbWEYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAWIAQESMwoNb3V0cHV0X3NjaGVtYRgMIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBARIoCgJ1aRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIRCglpc19hY3RpdmUYDiABKAgSFQoNYWxsb3dlZF9yb2xlcxgPIAMoCRIzCg1zdHJlYW1fY29uZmlnGBAgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgIiAEBEiwKBnF1b3RhcxgRIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICYgBARIWCgljb25maWdfaWQYEiABKAlICogBARIyCgxwcmVjb25kaXRpb24YEyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAuIAQESEQoJdGVuYW50X2lkGBQgASgJEhcKCnByb2plY3RfaWQYFSABKAlIDIgBARIXCgpjcmVhdGVkX2J5GB4gASgJSA2IAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX2Rlc2NyaXB0aW9uQgcKBV9pY29uQgsKCV9jYXRlZ29yeUIQCg5fZW5kcG9pbnRfYXV0aEIPCg1fcmV0cnlfcG9saWN5Qg8KDV9pbnB1dF9zY2hlbWFCEAoOX291dHB1dF9zY2hlbWFCBQoDX3VpQhAKDl9zdHJlYW1fY29uZmlnQgkKB19xdW90YXNCDAoKX2NvbmZpZ19pZEIPCg1fcHJlY29uZGl0aW9uQg0KC19wcm9qZWN0X2lkQg0KC19jcmVhdGVkX2J5Iv0EChJPcGVyYXRpb25FeGVjdXRpb24SCgoCaWQYASABKAkSFQoNb3BlcmF0aW9uX2tleRgCIAEoCRIOCgZzdGF0dXMYAyABKAkSGQoMdHJpZ2dlcl90eXBlGAQgASgJSACIAQESNQoPdHJpZ2dlcl9jb250ZXh0GAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBEisKBWlucHV0GAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEhgKC3Jlc3VsdF9qc29uGAcgASgMSAOIAQESFwoKZXJyb3JfanNvbhgIIAEoDEgEiAEBEjMKCnN0YXJ0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESNQoMY29tcGxldGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgGiAEBEhgKC2R1cmF0aW9uX21zGAsgASgFSAeIAQESEwoLcmV0cnlfY291bnQYDCABKAUSEQoJdGVuYW50X2lkGBQgASgJEhcKCnByb2plY3RfaWQYFSABKAlICIgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIPCg1fdHJpZ2dlcl90eXBlQhIKEF90cmlnZ2VyX2NvbnRleHRCCAoGX2lucHV0Qg4KDF9yZXN1bHRfanNvbkINCgtfZXJyb3JfanNvbkINCgtfc3RhcnRlZF9hdEIPCg1fY29tcGxldGVkX2F0Qg4KDF9kdXJhdGlvbl9tc0INCgtfcHJvamVjdF9pZCLfBAoPRGVhZExldHRlckVudHJ5EgoKAmlkGAEgASgJEhUKDW9wZXJhdGlvbl9rZXkYAiABKAkSGQoMZXhlY3V0aW9uX2lkGAMgASgJSACIAQESKwoFaW5wdXQYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESGQoMdHJpZ2dlcl90eXBlGAUgASgJSAKIAQESEAoIYXR0ZW1wdHMYBiABKAUSEgoKbGFzdF9lcnJvchgHIAEoCRIXCgplcnJvcl9jb2RlGAggASgJSAOIAQESDgoGc3RhdHVzGAkgASgJEi0KCWZhaWxlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMwoKcmV0cmllZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARI1CgxkaXNtaXNzZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESGQoMZGlzbWlzc2VkX2J5GA0gASgJSAaIAQESEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDwoNX2V4ZWN1dGlvbl9pZEIICgZfaW5wdXRCDwoNX3RyaWdnZXJfdHlwZUINCgtfZXJyb3JfY29kZUINCgtfcmV0cmllZF9hdEIPCg1fZGlzbWlzc2VkX2F0Qg8KDV9kaXNtaXNzZWRfYnkitQIKDENpcmN1aXRTdGF0ZRIVCg1vcGVyYXRpb25fa2V5GAEgASgJEhAKCGVuZHBvaW50GAIgASgJEg0KBXN0YXRlGAMgASgJEhUKDWZhaWx1cmVfY291bnQYBCABKAUSOAoPbGFzdF9mYWlsdXJlX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjIKCW9wZW5lZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI1CgxoYWxmX29wZW5fYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCEgoQX2xhc3RfZmFpbHVyZV9hdEIMCgpfb3BlbmVkX2F0Qg8KDV9oYWxmX29wZW5fYXQigQEKDkV4ZWN1dGlvblN0YXRzEhUKDW9wZXJhdGlvbl9rZXkYASABKAkSDQoFdG90YWwYAiABKAUSDwoHc3VjY2VzcxgDIAEoBRIOCgZmYWlsZWQYBCABKAUSDwoHcGVuZGluZxgFIAEoBRIXCg9hdmdfZHVyYXRpb25fbXMYBiABKAEiVQoPRGVhZExldHRlclN0YXRzEg8KB3BlbmRpbmcYASABKAUSDwoHcmV0cmllZBgCIAEoBRIRCglkaXNtaXNzZWQYAyABKAUSDQoFdG90YWwYBCABKAUixgEKFUxpc3RPcGVyYXRpb25zUmVxdWVzdBIVCghjYXRlZ29yeRgBIAEoCUgAiAEBEhYKCWlzX2FjdGl2ZRgCIAEoCEgBiAEBEhMKBnNlYXJjaBgDIAEoCUgCiAEBEhYKCWNvbmZpZ19pZBgEIAEoCUgDiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUILCglfY2F0ZWdvcnlCDAoKX2lzX2FjdGl2ZUIJCgdfc2VhcmNoQgwKCl9jb25maWdfaWQiVQoWTGlzdE9wZXJhdGlvbnNSZXNwb25zZRIsCgpvcGVyYXRpb25zGAEgAygLMhgub3BlcmF0aW9ucy52MS5PcGVyYXRpb24SDQoFdG90YWwYAiABKAUiOwoTR2V0T3BlcmF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCRIQCgNrZXkYAiABKAlIAIgBAUIGCgRfa2V5IkMKFEdldE9wZXJhdGlvblJlc3BvbnNlEisKCW9wZXJhdGlvbhgBIAEoCzIYLm9wZXJhdGlvbnMudjEuT3BlcmF0aW9uIq8GChZDcmVhdGVPcGVyYXRpb25SZXF1ZXN0EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESEQoEaWNvbhgEIAEoCUgBiAEBEhUKCGNhdGVnb3J5GAUgASgJSAKIAQESEAoIZW5kcG9pbnQYBiABKAkSGgoNZW5kcG9pbnRfYXV0aBgHIAEoCUgDiAEBEhcKCnRpbWVvdXRfbXMYCCABKAVIBIgBARIyCgxpbnB1dF9zY2hlbWEYCSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAWIAQESMwoNb3V0cHV0X3NjaGVtYRgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBARIoCgJ1aRgLIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIWCgljb25maWdfaWQYDCABKAlICIgBARIzCg1zdHJlYW1fY29uZmlnGA0gASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgJiAEBEiwKBnF1b3RhcxgOIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICogBARIVCg1hbGxvd2VkX3JvbGVzGA8gAygJEjIKDHJldHJ5X3BvbGljeRgQIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIC4gBARIyCgxwcmVjb25kaXRpb24YESABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAyIAQESFgoJaXNfYWN0aXZlGBIgASgISA2IAQFCDgoMX2Rlc2NyaXB0aW9uQgcKBV9pY29uQgsKCV9jYXRlZ29yeUIQCg5fZW5kcG9pbnRfYXV0aEINCgtfdGltZW91dF9tc0IPCg1faW5wdXRfc2NoZW1hQhAKDl9vdXRwdXRfc2NoZW1hQgUKA191aUIMCgpfY29uZmlnX2lkQhAKDl9zdHJlYW1fY29uZmlnQgkKB19xdW90YXNCDwoNX3JldHJ5X3BvbGljeUIPCg1fcHJlY29uZGl0aW9uQgwKCl9pc19hY3RpdmUiRgoXQ3JlYXRlT3BlcmF0aW9uUmVzcG9uc2USKwoJb3BlcmF0aW9uGAEgASgLMhgub3BlcmF0aW9ucy52MS5PcGVyYXRpb24i6AUKFlVwZGF0ZU9wZXJhdGlvblJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESFQoIZW5kcG9pbnQYBCABKAlIAogBARIaCg1lbmRwb2ludF9hdXRoGAUgASgJSAOIAQESFwoKdGltZW91dF9tcxgGIAEoBUgEiAEBEjIKDGlucHV0X3NjaGVtYRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIzCg1vdXRwdXRfc2NoZW1hGAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgGiAEBEigKAnVpGAkgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBEhYKCWlzX2FjdGl2ZRgKIAEoCEgIiAEBEjMKDXN0cmVhbV9jb25maWcYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAmIAQESLAoGcXVvdGFzGAwgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgKiAEBEjIKDHJldHJ5X3BvbGljeRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIC4gBARIyCgxwcmVjb25kaXRpb24YDiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAyIAQESFQoNYWxsb3dlZF9yb2xlcxgPIAMoCUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCwoJX2VuZHBvaW50QhAKDl9lbmRwb2ludF9hdXRoQg0KC190aW1lb3V0X21zQg8KDV9pbnB1dF9zY2hlbWFCEAoOX291dHB1dF9zY2hlbWFCBQoDX3VpQgwKCl9pc19hY3RpdmVCEAoOX3N0cmVhbV9jb25maWdCCQoHX3F1b3Rhc0IPCg1fcmV0cnlfcG9saWN5Qg8KDV9wcmVjb25kaXRpb24iRgoXVXBkYXRlT3BlcmF0aW9uUmVzcG9uc2USKwoJb3BlcmF0aW9uGAEgASgLMhgub3BlcmF0aW9ucy52MS5PcGVyYXRpb24iJAoWRGVsZXRlT3BlcmF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSIqChdEZWxldGVPcGVyYXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIqgDChdFeGVjdXRlT3BlcmF0aW9uUmVxdWVzdBIVCg1vcGVyYXRpb25fa2V5GAEgASgJEisKBWlucHV0GAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhkKDHRyaWdnZXJfdHlwZRgDIAEoCUgBiAEBEjUKD3RyaWdnZXJfY29udGV4dBgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIqCgRtb2RlGAUgASgOMhwub3BlcmF0aW9ucy52MS5FeGVjdXRpb25Nb2RlEhgKC2N1c3RvbWVyX2lkGAYgASgJSAOIAQESLAoGcmVjb3JkGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEi0KB2NvbnRlbnQYCCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAWIAQFCCAoGX2lucHV0Qg8KDV90cmlnZ2VyX3R5cGVCEgoQX3RyaWdnZXJfY29udGV4dEIOCgxfY3VzdG9tZXJfaWRCCQoHX3JlY29yZEIKCghfY29udGVudCKpAgoYRXhlY3V0ZU9wZXJhdGlvblJlc3BvbnNlEjQKCWV4ZWN1dGlvbhgBIAEoCzIhLm9wZXJhdGlvbnMudjEuT3BlcmF0aW9uRXhlY3V0aW9uEhgKC3Jlc3VsdF9qc29uGAIgASgMSACIAQESGgoNZXJyb3JfbWVzc2FnZRgDIAEoCUgBiAEBEhEKCWNvbXBsZXRlZBgEIAEoCBIVCghwb2xsX3VybBgKIAEoCUgCiAEBEhcKCmNhbmNlbF91cmwYCyABKAlIA4gBARIUCgdtZXNzYWdlGAwgASgJSASIAQFCDgoMX3Jlc3VsdF9qc29uQhAKDl9lcnJvcl9tZXNzYWdlQgsKCV9wb2xsX3VybEINCgtfY2FuY2VsX3VybEIKCghfbWVzc2FnZSJ2Ch5MaXN0T3BlcmF0aW9uRXhlY3V0aW9uc1JlcXVlc3QSFQoNb3BlcmF0aW9uX2tleRgBIAEoCRITCgZzdGF0dXMYAiABKAlIAIgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCCQoHX3N0YXR1cyJnCh9MaXN0T3BlcmF0aW9uRXhlY3V0aW9uc1Jlc3BvbnNlEjUKCmV4ZWN1dGlvbnMYASADKAsyIS5vcGVyYXRpb25zLnYxLk9wZXJhdGlvbkV4ZWN1dGlvbhINCgV0b3RhbBgCIAEoBSJRCiFHZXRPcGVyYXRpb25FeGVjdXRpb25TdGF0c1JlcXVlc3QSGgoNb3BlcmF0aW9uX2tleRgBIAEoCUgAiAEBQhAKDl9vcGVyYXRpb25fa2V5IlIKIkdldE9wZXJhdGlvbkV4ZWN1dGlvblN0YXRzUmVzcG9uc2USLAoFc3RhdHMYASADKAsyHS5vcGVyYXRpb25zLnYxLkV4ZWN1dGlvblN0YXRzIosBChxMaXN0RGVhZExldHRlckVudHJpZXNSZXF1ZXN0EhoKDW9wZXJhdGlvbl9rZXkYASABKAlIAIgBARITCgZzdGF0dXMYAiABKAlIAYgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCEAoOX29wZXJhdGlvbl9rZXlCCQoHX3N0YXR1cyJfCh1MaXN0RGVhZExldHRlckVudHJpZXNSZXNwb25zZRIvCgdlbnRyaWVzGAEgAygLMh4ub3BlcmF0aW9ucy52MS5EZWFkTGV0dGVyRW50cnkSDQoFdG90YWwYAiABKAUiKQobUmV0cnlEZWFkTGV0dGVyRW50cnlSZXF1ZXN0EgoKAmlkGAEgASgJIi8KHFJldHJ5RGVhZExldHRlckVudHJ5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIrCh1EaXNtaXNzRGVhZExldHRlckVudHJ5UmVxdWVzdBIKCgJpZBgBIAEoCSIxCh5EaXNtaXNzRGVhZExldHRlckVudHJ5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIbChlHZXREZWFkTGV0dGVyU3RhdHNSZXF1ZXN0IksKGkdldERlYWRMZXR0ZXJTdGF0c1Jlc3BvbnNlEi0KBXN0YXRzGAEgASgLMh4ub3BlcmF0aW9ucy52MS5EZWFkTGV0dGVyU3RhdHMiGgoYTGlzdENpcmN1aXRTdGF0ZXNSZXF1ZXN0IkgKGUxpc3RDaXJjdWl0U3RhdGVzUmVzcG9uc2USKwoGc3RhdGVzGAEgAygLMhsub3BlcmF0aW9ucy52MS5DaXJjdWl0U3RhdGUiLAoTUmVzZXRDaXJjdWl0UmVxdWVzdBIVCg1vcGVyYXRpb25fa2V5GAEgASgJIicKFFJlc2V0Q2lyY3VpdFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiGQoXR2V0U2lnbmluZ1NlY3JldFJlcXVlc3QiOgoYR2V0U2lnbmluZ1NlY3JldFJlc3BvbnNlEg4KBnNlY3JldBgBIAEoCRIOCgZwcmVmaXgYAiABKAkiIAoeUmVnZW5lcmF0ZVNpZ25pbmdTZWNyZXRSZXF1ZXN0IjEKH1JlZ2VuZXJhdGVTaWduaW5nU2VjcmV0UmVzcG9uc2USDgoGc2VjcmV0GAEgASgJIkIKHkdldEFwcGxpY2FibGVPcGVyYXRpb25zUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSDQoFbGltaXQYCiABKAUiTwofR2V0QXBwbGljYWJsZU9wZXJhdGlvbnNSZXNwb25zZRIsCgpvcGVyYXRpb25zGAEgAygLMhgub3BlcmF0aW9ucy52MS5PcGVyYXRpb24iKgocR2V0T3BlcmF0aW9uRXhlY3V0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJVCh1HZXRPcGVyYXRpb25FeGVjdXRpb25SZXNwb25zZRI0CglleGVjdXRpb24YASABKAsyIS5vcGVyYXRpb25zLnYxLk9wZXJhdGlvbkV4ZWN1dGlvbiItCh9DYW5jZWxPcGVyYXRpb25FeGVjdXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIjMKIENhbmNlbE9wZXJhdGlvbkV4ZWN1dGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiggEKHUdldE9wZXJhdGlvblF1b3RhVXNhZ2VSZXF1ZXN0EhUKDW9wZXJhdGlvbl9rZXkYASABKAkSGAoLY3VzdG9tZXJfaWQYAiABKAlIAIgBARIUCgd1c2VyX2lkGAMgASgJSAGIAQFCDgoMX2N1c3RvbWVyX2lkQgoKCF91c2VyX2lkIrIBCg5RdW90YVJ1bGVVc2FnZRISCgpydWxlX2luZGV4GAEgASgFEhMKC3NlZ21lbnRfa2V5GAIgASgJEg0KBWxpbWl0GAMgASgFEgwKBHVzZWQYBCABKAUSEQoJcmVtYWluaW5nGAUgASgFEhUKDXJlc2V0X2F0X3VuaXgYBiABKAMSDQoFc2NvcGUYByABKAkSEAoIZHVyYXRpb24YCCABKAUSDwoHbWVzc2FnZRgJIAEoCSKtAQoeR2V0T3BlcmF0aW9uUXVvdGFVc2FnZVJlc3BvbnNlEhgKEHRvdGFsX2V4ZWN1dGlvbnMYASABKAMSGQoRcGVyaW9kX2V4ZWN1dGlvbnMYAiABKAMSGAoLcXVvdGFfbGltaXQYAyABKANIAIgBARIsCgVydWxlcxgEIAMoCzIdLm9wZXJhdGlvbnMudjEuUXVvdGFSdWxlVXNhZ2VCDgoMX3F1b3RhX2xpbWl0IhwKGkdldFNpZ25pbmdTZWNyZXRSYXdSZXF1ZXN0Ii0KG0dldFNpZ25pbmdTZWNyZXRSYXdSZXNwb25zZRIOCgZzZWNyZXQYASABKAkqYgoNRXhlY3V0aW9uTW9kZRIeChpFWEVDVVRJT05fTU9ERV9VTlNQRUNJRklFRBAAEhcKE0VYRUNVVElPTl9NT0RFX1NZTkMQARIYChRFWEVDVVRJT05fTU9ERV9BU1lOQxACMosSChFPcGVyYXRpb25zU2VydmljZRJdCg5MaXN0T3BlcmF0aW9ucxIkLm9wZXJhdGlvbnMudjEuTGlzdE9wZXJhdGlvbnNSZXF1ZXN0GiUub3BlcmF0aW9ucy52MS5MaXN0T3BlcmF0aW9uc1Jlc3BvbnNlElcKDEdldE9wZXJhdGlvbhIiLm9wZXJhdGlvbnMudjEuR2V0T3BlcmF0aW9uUmVxdWVzdBojLm9wZXJhdGlvbnMudjEuR2V0T3BlcmF0aW9uUmVzcG9uc2USYAoPQ3JlYXRlT3BlcmF0aW9uEiUub3BlcmF0aW9ucy52MS5DcmVhdGVPcGVyYXRpb25SZXF1ZXN0GiYub3BlcmF0aW9ucy52MS5DcmVhdGVPcGVyYXRpb25SZXNwb25zZRJgCg9VcGRhdGVPcGVyYXRpb24SJS5vcGVyYXRpb25zLnYxLlVwZGF0ZU9wZXJhdGlvblJlcXVlc3QaJi5vcGVyYXRpb25zLnYxLlVwZGF0ZU9wZXJhdGlvblJlc3BvbnNlEmAKD0RlbGV0ZU9wZXJhdGlvbhIlLm9wZXJhdGlvbnMudjEuRGVsZXRlT3BlcmF0aW9uUmVxdWVzdBomLm9wZXJhdGlvbnMudjEuRGVsZXRlT3BlcmF0aW9uUmVzcG9uc2USYwoQRXhlY3V0ZU9wZXJhdGlvbhImLm9wZXJhdGlvbnMudjEuRXhlY3V0ZU9wZXJhdGlvblJlcXVlc3QaJy5vcGVyYXRpb25zLnYxLkV4ZWN1dGVPcGVyYXRpb25SZXNwb25zZRJ4ChdMaXN0T3BlcmF0aW9uRXhlY3V0aW9ucxItLm9wZXJhdGlvbnMudjEuTGlzdE9wZXJhdGlvbkV4ZWN1dGlvbnNSZXF1ZXN0Gi4ub3BlcmF0aW9ucy52MS5MaXN0T3BlcmF0aW9uRXhlY3V0aW9uc1Jlc3BvbnNlEoEBChpHZXRPcGVyYXRpb25FeGVjdXRpb25TdGF0cxIwLm9wZXJhdGlvbnMudjEuR2V0T3BlcmF0aW9uRXhlY3V0aW9uU3RhdHNSZXF1ZXN0GjEub3BlcmF0aW9ucy52MS5HZXRPcGVyYXRpb25FeGVjdXRpb25TdGF0c1Jlc3BvbnNlEnIKFUxpc3REZWFkTGV0dGVyRW50cmllcxIrLm9wZXJhdGlvbnMudjEuTGlzdERlYWRMZXR0ZXJFbnRyaWVzUmVxdWVzdBosLm9wZXJhdGlvbnMudjEuTGlzdERlYWRMZXR0ZXJFbnRyaWVzUmVzcG9uc2USbwoUUmV0cnlEZWFkTGV0dGVyRW50cnkSKi5vcGVyYXRpb25zLnYxLlJldHJ5RGVhZExldHRlckVudHJ5UmVxdWVzdBorLm9wZXJhdGlvbnMudjEuUmV0cnlEZWFkTGV0dGVyRW50cnlSZXNwb25zZRJ1ChZEaXNtaXNzRGVhZExldHRlckVudHJ5Eiwub3BlcmF0aW9ucy52MS5EaXNtaXNzRGVhZExldHRlckVudHJ5UmVxdWVzdBotLm9wZXJhdGlvbnMudjEuRGlzbWlzc0RlYWRMZXR0ZXJFbnRyeVJlc3BvbnNlEmkKEkdldERlYWRMZXR0ZXJTdGF0cxIoLm9wZXJhdGlvbnMudjEuR2V0RGVhZExldHRlclN0YXRzUmVxdWVzdBopLm9wZXJhdGlvbnMudjEuR2V0RGVhZExldHRlclN0YXRzUmVzcG9uc2USZgoRTGlzdENpcmN1aXRTdGF0ZXMSJy5vcGVyYXRpb25zLnYxLkxpc3RDaXJjdWl0U3RhdGVzUmVxdWVzdBooLm9wZXJhdGlvbnMudjEuTGlzdENpcmN1aXRTdGF0ZXNSZXNwb25zZRJXCgxSZXNldENpcmN1aXQSIi5vcGVyYXRpb25zLnYxLlJlc2V0Q2lyY3VpdFJlcXVlc3QaIy5vcGVyYXRpb25zLnYxLlJlc2V0Q2lyY3VpdFJlc3BvbnNlEngKF0dldEFwcGxpY2FibGVPcGVyYXRpb25zEi0ub3BlcmF0aW9ucy52MS5HZXRBcHBsaWNhYmxlT3BlcmF0aW9uc1JlcXVlc3QaLi5vcGVyYXRpb25zLnYxLkdldEFwcGxpY2FibGVPcGVyYXRpb25zUmVzcG9uc2UScgoVR2V0T3BlcmF0aW9uRXhlY3V0aW9uEisub3BlcmF0aW9ucy52MS5HZXRPcGVyYXRpb25FeGVjdXRpb25SZXF1ZXN0Giwub3BlcmF0aW9ucy52MS5HZXRPcGVyYXRpb25FeGVjdXRpb25SZXNwb25zZRJ7ChhDYW5jZWxPcGVyYXRpb25FeGVjdXRpb24SLi5vcGVyYXRpb25zLnYxLkNhbmNlbE9wZXJhdGlvbkV4ZWN1dGlvblJlcXVlc3QaLy5vcGVyYXRpb25zLnYxLkNhbmNlbE9wZXJhdGlvbkV4ZWN1dGlvblJlc3BvbnNlEnUKFkdldE9wZXJhdGlvblF1b3RhVXNhZ2USLC5vcGVyYXRpb25zLnYxLkdldE9wZXJhdGlvblF1b3RhVXNhZ2VSZXF1ZXN0Gi0ub3BlcmF0aW9ucy52MS5HZXRPcGVyYXRpb25RdW90YVVzYWdlUmVzcG9uc2USYwoQR2V0U2lnbmluZ1NlY3JldBImLm9wZXJhdGlvbnMudjEuR2V0U2lnbmluZ1NlY3JldFJlcXVlc3QaJy5vcGVyYXRpb25zLnYxLkdldFNpZ25pbmdTZWNyZXRSZXNwb25zZRJsChNHZXRTaWduaW5nU2VjcmV0UmF3Eikub3BlcmF0aW9ucy52MS5HZXRTaWduaW5nU2VjcmV0UmF3UmVxdWVzdBoqLm9wZXJhdGlvbnMudjEuR2V0U2lnbmluZ1NlY3JldFJhd1Jlc3BvbnNlEngKF1JlZ2VuZXJhdGVTaWduaW5nU2VjcmV0Ei0ub3BlcmF0aW9ucy52MS5SZWdlbmVyYXRlU2lnbmluZ1NlY3JldFJlcXVlc3QaLi5vcGVyYXRpb25zLnYxLlJlZ2VuZXJhdGVTaWduaW5nU2VjcmV0UmVzcG9uc2VCQVo/Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL29wZXJhdGlvbnMvdjE7b3BlcmF0aW9uc3YxYgZwcm90bzM", [file_google_protobuf_struct, file_google_protobuf_timestamp]);
12
+ fileDesc("Ch5vcGVyYXRpb25zL3YxL29wZXJhdGlvbnMucHJvdG8SDW9wZXJhdGlvbnMudjEiyAgKCU9wZXJhdGlvbhIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhEKBGljb24YBSABKAlIAYgBARIVCghjYXRlZ29yeRgGIAEoCUgCiAEBEhAKCGVuZHBvaW50GAcgASgJEhoKDWVuZHBvaW50X2F1dGgYCCABKAlIA4gBARISCgp0aW1lb3V0X21zGAkgASgFEjIKDHJldHJ5X3BvbGljeRgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIyCgxpbnB1dF9zY2hlbWEYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAWIAQESMwoNb3V0cHV0X3NjaGVtYRgMIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBARIoCgJ1aRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIRCglpc19hY3RpdmUYDiABKAgSFQoNYWxsb3dlZF9yb2xlcxgPIAMoCRIzCg1zdHJlYW1fY29uZmlnGBAgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgIiAEBEiwKBnF1b3RhcxgRIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICYgBARIWCgljb25maWdfaWQYEiABKAlICogBARIyCgxwcmVjb25kaXRpb24YEyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAuIAQESEQoJdGVuYW50X2lkGBQgASgJEhcKCnByb2plY3RfaWQYFSABKAlIDIgBARIkChdzdXBwb3J0c19hc3luY19jYWxsYmFjaxgWIAEoCEgNiAEBEiEKFGNhbGxiYWNrX3R0bF9zZWNvbmRzGBcgASgFSA6IAQESFwoKY3JlYXRlZF9ieRgeIAEoCUgPiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9kZXNjcmlwdGlvbkIHCgVfaWNvbkILCglfY2F0ZWdvcnlCEAoOX2VuZHBvaW50X2F1dGhCDwoNX3JldHJ5X3BvbGljeUIPCg1faW5wdXRfc2NoZW1hQhAKDl9vdXRwdXRfc2NoZW1hQgUKA191aUIQCg5fc3RyZWFtX2NvbmZpZ0IJCgdfcXVvdGFzQgwKCl9jb25maWdfaWRCDwoNX3ByZWNvbmRpdGlvbkINCgtfcHJvamVjdF9pZEIaChhfc3VwcG9ydHNfYXN5bmNfY2FsbGJhY2tCFwoVX2NhbGxiYWNrX3R0bF9zZWNvbmRzQg0KC19jcmVhdGVkX2J5ItoIChJPcGVyYXRpb25FeGVjdXRpb24SCgoCaWQYASABKAkSFQoNb3BlcmF0aW9uX2tleRgCIAEoCRIOCgZzdGF0dXMYAyABKAkSGQoMdHJpZ2dlcl90eXBlGAQgASgJSACIAQESNQoPdHJpZ2dlcl9jb250ZXh0GAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBEisKBWlucHV0GAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEhgKC3Jlc3VsdF9qc29uGAcgASgMSAOIAQESFwoKZXJyb3JfanNvbhgIIAEoDEgEiAEBEjMKCnN0YXJ0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESNQoMY29tcGxldGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgGiAEBEhgKC2R1cmF0aW9uX21zGAsgASgFSAeIAQESEwoLcmV0cnlfY291bnQYDCABKAUSGQoMcHJvZ3Jlc3NfcGN0GA0gASgFSAiIAQESHQoQcHJvZ3Jlc3NfbWVzc2FnZRgOIAEoCUgJiAEBEjcKEXByb2dyZXNzX21ldGFkYXRhGA8gASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgKiAEBEjwKE3Byb2dyZXNzX3VwZGF0ZWRfYXQYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAuIAQESPAoTY2FsbGJhY2tfZXhwaXJlc19hdBgRIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIDIgBARIgChNwYXJlbnRfZXhlY3V0aW9uX2lkGBIgASgJSA2IAQESNQoMY2FuY2VsbGVkX2F0GBMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgOiAEBEhEKCXRlbmFudF9pZBgUIAEoCRIXCgpwcm9qZWN0X2lkGBUgASgJSA+IAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDwoNX3RyaWdnZXJfdHlwZUISChBfdHJpZ2dlcl9jb250ZXh0QggKBl9pbnB1dEIOCgxfcmVzdWx0X2pzb25CDQoLX2Vycm9yX2pzb25CDQoLX3N0YXJ0ZWRfYXRCDwoNX2NvbXBsZXRlZF9hdEIOCgxfZHVyYXRpb25fbXNCDwoNX3Byb2dyZXNzX3BjdEITChFfcHJvZ3Jlc3NfbWVzc2FnZUIUChJfcHJvZ3Jlc3NfbWV0YWRhdGFCFgoUX3Byb2dyZXNzX3VwZGF0ZWRfYXRCFgoUX2NhbGxiYWNrX2V4cGlyZXNfYXRCFgoUX3BhcmVudF9leGVjdXRpb25faWRCDwoNX2NhbmNlbGxlZF9hdEINCgtfcHJvamVjdF9pZCLfBAoPRGVhZExldHRlckVudHJ5EgoKAmlkGAEgASgJEhUKDW9wZXJhdGlvbl9rZXkYAiABKAkSGQoMZXhlY3V0aW9uX2lkGAMgASgJSACIAQESKwoFaW5wdXQYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESGQoMdHJpZ2dlcl90eXBlGAUgASgJSAKIAQESEAoIYXR0ZW1wdHMYBiABKAUSEgoKbGFzdF9lcnJvchgHIAEoCRIXCgplcnJvcl9jb2RlGAggASgJSAOIAQESDgoGc3RhdHVzGAkgASgJEi0KCWZhaWxlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMwoKcmV0cmllZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARI1CgxkaXNtaXNzZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESGQoMZGlzbWlzc2VkX2J5GA0gASgJSAaIAQESEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDwoNX2V4ZWN1dGlvbl9pZEIICgZfaW5wdXRCDwoNX3RyaWdnZXJfdHlwZUINCgtfZXJyb3JfY29kZUINCgtfcmV0cmllZF9hdEIPCg1fZGlzbWlzc2VkX2F0Qg8KDV9kaXNtaXNzZWRfYnkitQIKDENpcmN1aXRTdGF0ZRIVCg1vcGVyYXRpb25fa2V5GAEgASgJEhAKCGVuZHBvaW50GAIgASgJEg0KBXN0YXRlGAMgASgJEhUKDWZhaWx1cmVfY291bnQYBCABKAUSOAoPbGFzdF9mYWlsdXJlX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjIKCW9wZW5lZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI1CgxoYWxmX29wZW5fYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCEgoQX2xhc3RfZmFpbHVyZV9hdEIMCgpfb3BlbmVkX2F0Qg8KDV9oYWxmX29wZW5fYXQigQEKDkV4ZWN1dGlvblN0YXRzEhUKDW9wZXJhdGlvbl9rZXkYASABKAkSDQoFdG90YWwYAiABKAUSDwoHc3VjY2VzcxgDIAEoBRIOCgZmYWlsZWQYBCABKAUSDwoHcGVuZGluZxgFIAEoBRIXCg9hdmdfZHVyYXRpb25fbXMYBiABKAEiVQoPRGVhZExldHRlclN0YXRzEg8KB3BlbmRpbmcYASABKAUSDwoHcmV0cmllZBgCIAEoBRIRCglkaXNtaXNzZWQYAyABKAUSDQoFdG90YWwYBCABKAUixgEKFUxpc3RPcGVyYXRpb25zUmVxdWVzdBIVCghjYXRlZ29yeRgBIAEoCUgAiAEBEhYKCWlzX2FjdGl2ZRgCIAEoCEgBiAEBEhMKBnNlYXJjaBgDIAEoCUgCiAEBEhYKCWNvbmZpZ19pZBgEIAEoCUgDiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUILCglfY2F0ZWdvcnlCDAoKX2lzX2FjdGl2ZUIJCgdfc2VhcmNoQgwKCl9jb25maWdfaWQiVQoWTGlzdE9wZXJhdGlvbnNSZXNwb25zZRIsCgpvcGVyYXRpb25zGAEgAygLMhgub3BlcmF0aW9ucy52MS5PcGVyYXRpb24SDQoFdG90YWwYAiABKAUiOwoTR2V0T3BlcmF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCRIQCgNrZXkYAiABKAlIAIgBAUIGCgRfa2V5IkMKFEdldE9wZXJhdGlvblJlc3BvbnNlEisKCW9wZXJhdGlvbhgBIAEoCzIYLm9wZXJhdGlvbnMudjEuT3BlcmF0aW9uIq0HChZDcmVhdGVPcGVyYXRpb25SZXF1ZXN0EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESEQoEaWNvbhgEIAEoCUgBiAEBEhUKCGNhdGVnb3J5GAUgASgJSAKIAQESEAoIZW5kcG9pbnQYBiABKAkSGgoNZW5kcG9pbnRfYXV0aBgHIAEoCUgDiAEBEhcKCnRpbWVvdXRfbXMYCCABKAVIBIgBARIyCgxpbnB1dF9zY2hlbWEYCSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAWIAQESMwoNb3V0cHV0X3NjaGVtYRgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBARIoCgJ1aRgLIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIWCgljb25maWdfaWQYDCABKAlICIgBARIzCg1zdHJlYW1fY29uZmlnGA0gASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgJiAEBEiwKBnF1b3RhcxgOIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICogBARIVCg1hbGxvd2VkX3JvbGVzGA8gAygJEjIKDHJldHJ5X3BvbGljeRgQIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIC4gBARIyCgxwcmVjb25kaXRpb24YESABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAyIAQESFgoJaXNfYWN0aXZlGBIgASgISA2IAQESJAoXc3VwcG9ydHNfYXN5bmNfY2FsbGJhY2sYEyABKAhIDogBARIhChRjYWxsYmFja190dGxfc2Vjb25kcxgUIAEoBUgPiAEBQg4KDF9kZXNjcmlwdGlvbkIHCgVfaWNvbkILCglfY2F0ZWdvcnlCEAoOX2VuZHBvaW50X2F1dGhCDQoLX3RpbWVvdXRfbXNCDwoNX2lucHV0X3NjaGVtYUIQCg5fb3V0cHV0X3NjaGVtYUIFCgNfdWlCDAoKX2NvbmZpZ19pZEIQCg5fc3RyZWFtX2NvbmZpZ0IJCgdfcXVvdGFzQg8KDV9yZXRyeV9wb2xpY3lCDwoNX3ByZWNvbmRpdGlvbkIMCgpfaXNfYWN0aXZlQhoKGF9zdXBwb3J0c19hc3luY19jYWxsYmFja0IXChVfY2FsbGJhY2tfdHRsX3NlY29uZHMiRgoXQ3JlYXRlT3BlcmF0aW9uUmVzcG9uc2USKwoJb3BlcmF0aW9uGAEgASgLMhgub3BlcmF0aW9ucy52MS5PcGVyYXRpb24i5gYKFlVwZGF0ZU9wZXJhdGlvblJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESFQoIZW5kcG9pbnQYBCABKAlIAogBARIaCg1lbmRwb2ludF9hdXRoGAUgASgJSAOIAQESFwoKdGltZW91dF9tcxgGIAEoBUgEiAEBEjIKDGlucHV0X3NjaGVtYRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIzCg1vdXRwdXRfc2NoZW1hGAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgGiAEBEigKAnVpGAkgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBEhYKCWlzX2FjdGl2ZRgKIAEoCEgIiAEBEjMKDXN0cmVhbV9jb25maWcYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAmIAQESLAoGcXVvdGFzGAwgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgKiAEBEjIKDHJldHJ5X3BvbGljeRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIC4gBARIyCgxwcmVjb25kaXRpb24YDiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAyIAQESFQoNYWxsb3dlZF9yb2xlcxgPIAMoCRIkChdzdXBwb3J0c19hc3luY19jYWxsYmFjaxgQIAEoCEgNiAEBEiEKFGNhbGxiYWNrX3R0bF9zZWNvbmRzGBEgASgFSA6IAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgsKCV9lbmRwb2ludEIQCg5fZW5kcG9pbnRfYXV0aEINCgtfdGltZW91dF9tc0IPCg1faW5wdXRfc2NoZW1hQhAKDl9vdXRwdXRfc2NoZW1hQgUKA191aUIMCgpfaXNfYWN0aXZlQhAKDl9zdHJlYW1fY29uZmlnQgkKB19xdW90YXNCDwoNX3JldHJ5X3BvbGljeUIPCg1fcHJlY29uZGl0aW9uQhoKGF9zdXBwb3J0c19hc3luY19jYWxsYmFja0IXChVfY2FsbGJhY2tfdHRsX3NlY29uZHMiRgoXVXBkYXRlT3BlcmF0aW9uUmVzcG9uc2USKwoJb3BlcmF0aW9uGAEgASgLMhgub3BlcmF0aW9ucy52MS5PcGVyYXRpb24iJAoWRGVsZXRlT3BlcmF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSIqChdEZWxldGVPcGVyYXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIqgDChdFeGVjdXRlT3BlcmF0aW9uUmVxdWVzdBIVCg1vcGVyYXRpb25fa2V5GAEgASgJEisKBWlucHV0GAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhkKDHRyaWdnZXJfdHlwZRgDIAEoCUgBiAEBEjUKD3RyaWdnZXJfY29udGV4dBgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIqCgRtb2RlGAUgASgOMhwub3BlcmF0aW9ucy52MS5FeGVjdXRpb25Nb2RlEhgKC2N1c3RvbWVyX2lkGAYgASgJSAOIAQESLAoGcmVjb3JkGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEi0KB2NvbnRlbnQYCCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAWIAQFCCAoGX2lucHV0Qg8KDV90cmlnZ2VyX3R5cGVCEgoQX3RyaWdnZXJfY29udGV4dEIOCgxfY3VzdG9tZXJfaWRCCQoHX3JlY29yZEIKCghfY29udGVudCKpAgoYRXhlY3V0ZU9wZXJhdGlvblJlc3BvbnNlEjQKCWV4ZWN1dGlvbhgBIAEoCzIhLm9wZXJhdGlvbnMudjEuT3BlcmF0aW9uRXhlY3V0aW9uEhgKC3Jlc3VsdF9qc29uGAIgASgMSACIAQESGgoNZXJyb3JfbWVzc2FnZRgDIAEoCUgBiAEBEhEKCWNvbXBsZXRlZBgEIAEoCBIVCghwb2xsX3VybBgKIAEoCUgCiAEBEhcKCmNhbmNlbF91cmwYCyABKAlIA4gBARIUCgdtZXNzYWdlGAwgASgJSASIAQFCDgoMX3Jlc3VsdF9qc29uQhAKDl9lcnJvcl9tZXNzYWdlQgsKCV9wb2xsX3VybEINCgtfY2FuY2VsX3VybEIKCghfbWVzc2FnZSJ2Ch5MaXN0T3BlcmF0aW9uRXhlY3V0aW9uc1JlcXVlc3QSFQoNb3BlcmF0aW9uX2tleRgBIAEoCRITCgZzdGF0dXMYAiABKAlIAIgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCCQoHX3N0YXR1cyJnCh9MaXN0T3BlcmF0aW9uRXhlY3V0aW9uc1Jlc3BvbnNlEjUKCmV4ZWN1dGlvbnMYASADKAsyIS5vcGVyYXRpb25zLnYxLk9wZXJhdGlvbkV4ZWN1dGlvbhINCgV0b3RhbBgCIAEoBSJRCiFHZXRPcGVyYXRpb25FeGVjdXRpb25TdGF0c1JlcXVlc3QSGgoNb3BlcmF0aW9uX2tleRgBIAEoCUgAiAEBQhAKDl9vcGVyYXRpb25fa2V5IlIKIkdldE9wZXJhdGlvbkV4ZWN1dGlvblN0YXRzUmVzcG9uc2USLAoFc3RhdHMYASADKAsyHS5vcGVyYXRpb25zLnYxLkV4ZWN1dGlvblN0YXRzIosBChxMaXN0RGVhZExldHRlckVudHJpZXNSZXF1ZXN0EhoKDW9wZXJhdGlvbl9rZXkYASABKAlIAIgBARITCgZzdGF0dXMYAiABKAlIAYgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCEAoOX29wZXJhdGlvbl9rZXlCCQoHX3N0YXR1cyJfCh1MaXN0RGVhZExldHRlckVudHJpZXNSZXNwb25zZRIvCgdlbnRyaWVzGAEgAygLMh4ub3BlcmF0aW9ucy52MS5EZWFkTGV0dGVyRW50cnkSDQoFdG90YWwYAiABKAUiKQobUmV0cnlEZWFkTGV0dGVyRW50cnlSZXF1ZXN0EgoKAmlkGAEgASgJIi8KHFJldHJ5RGVhZExldHRlckVudHJ5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIrCh1EaXNtaXNzRGVhZExldHRlckVudHJ5UmVxdWVzdBIKCgJpZBgBIAEoCSIxCh5EaXNtaXNzRGVhZExldHRlckVudHJ5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIbChlHZXREZWFkTGV0dGVyU3RhdHNSZXF1ZXN0IksKGkdldERlYWRMZXR0ZXJTdGF0c1Jlc3BvbnNlEi0KBXN0YXRzGAEgASgLMh4ub3BlcmF0aW9ucy52MS5EZWFkTGV0dGVyU3RhdHMiGgoYTGlzdENpcmN1aXRTdGF0ZXNSZXF1ZXN0IkgKGUxpc3RDaXJjdWl0U3RhdGVzUmVzcG9uc2USKwoGc3RhdGVzGAEgAygLMhsub3BlcmF0aW9ucy52MS5DaXJjdWl0U3RhdGUiLAoTUmVzZXRDaXJjdWl0UmVxdWVzdBIVCg1vcGVyYXRpb25fa2V5GAEgASgJIicKFFJlc2V0Q2lyY3VpdFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiGQoXR2V0U2lnbmluZ1NlY3JldFJlcXVlc3QiOgoYR2V0U2lnbmluZ1NlY3JldFJlc3BvbnNlEg4KBnNlY3JldBgBIAEoCRIOCgZwcmVmaXgYAiABKAkiIAoeUmVnZW5lcmF0ZVNpZ25pbmdTZWNyZXRSZXF1ZXN0IjEKH1JlZ2VuZXJhdGVTaWduaW5nU2VjcmV0UmVzcG9uc2USDgoGc2VjcmV0GAEgASgJIkIKHkdldEFwcGxpY2FibGVPcGVyYXRpb25zUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSDQoFbGltaXQYCiABKAUiTwofR2V0QXBwbGljYWJsZU9wZXJhdGlvbnNSZXNwb25zZRIsCgpvcGVyYXRpb25zGAEgAygLMhgub3BlcmF0aW9ucy52MS5PcGVyYXRpb24iKgocR2V0T3BlcmF0aW9uRXhlY3V0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJVCh1HZXRPcGVyYXRpb25FeGVjdXRpb25SZXNwb25zZRI0CglleGVjdXRpb24YASABKAsyIS5vcGVyYXRpb25zLnYxLk9wZXJhdGlvbkV4ZWN1dGlvbiItCh9DYW5jZWxPcGVyYXRpb25FeGVjdXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIlMKIENhbmNlbE9wZXJhdGlvbkV4ZWN1dGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSEwoGc3RhdHVzGAIgASgJSACIAQFCCQoHX3N0YXR1cyJECiFDb21wbGV0ZU9wZXJhdGlvbkV4ZWN1dGlvblJlcXVlc3QSCgoCaWQYASABKAkSEwoLcmVzdWx0X2pzb24YAiABKAwiRwoiQ29tcGxldGVPcGVyYXRpb25FeGVjdXRpb25SZXNwb25zZRIOCgZzdGF0dXMYASABKAkSEQoJY2FuY2VsbGVkGAIgASgIIqsBCh1GYWlsT3BlcmF0aW9uRXhlY3V0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCRIMCgRjb2RlGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSFgoJcmV0cnlhYmxlGAQgASgISACIAQESLQoHZGV0YWlscxgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBAUIMCgpfcmV0cnlhYmxlQgoKCF9kZXRhaWxzIkMKHkZhaWxPcGVyYXRpb25FeGVjdXRpb25SZXNwb25zZRIOCgZzdGF0dXMYASABKAkSEQoJY2FuY2VsbGVkGAIgASgIItsBCh5SZXBvcnRPcGVyYXRpb25Qcm9ncmVzc1JlcXVlc3QSCgoCaWQYASABKAkSGQoMcHJvZ3Jlc3NfcGN0GAIgASgFSACIAQESHQoQcHJvZ3Jlc3NfbWVzc2FnZRgDIAEoCUgBiAEBEjcKEXByb2dyZXNzX21ldGFkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBQg8KDV9wcm9ncmVzc19wY3RCEwoRX3Byb2dyZXNzX21lc3NhZ2VCFAoSX3Byb2dyZXNzX21ldGFkYXRhIkQKH1JlcG9ydE9wZXJhdGlvblByb2dyZXNzUmVzcG9uc2USDgoGc3RhdHVzGAEgASgJEhEKCWNhbmNlbGxlZBgCIAEoCCKCAQodR2V0T3BlcmF0aW9uUXVvdGFVc2FnZVJlcXVlc3QSFQoNb3BlcmF0aW9uX2tleRgBIAEoCRIYCgtjdXN0b21lcl9pZBgCIAEoCUgAiAEBEhQKB3VzZXJfaWQYAyABKAlIAYgBAUIOCgxfY3VzdG9tZXJfaWRCCgoIX3VzZXJfaWQisgEKDlF1b3RhUnVsZVVzYWdlEhIKCnJ1bGVfaW5kZXgYASABKAUSEwoLc2VnbWVudF9rZXkYAiABKAkSDQoFbGltaXQYAyABKAUSDAoEdXNlZBgEIAEoBRIRCglyZW1haW5pbmcYBSABKAUSFQoNcmVzZXRfYXRfdW5peBgGIAEoAxINCgVzY29wZRgHIAEoCRIQCghkdXJhdGlvbhgIIAEoBRIPCgdtZXNzYWdlGAkgASgJIq0BCh5HZXRPcGVyYXRpb25RdW90YVVzYWdlUmVzcG9uc2USGAoQdG90YWxfZXhlY3V0aW9ucxgBIAEoAxIZChFwZXJpb2RfZXhlY3V0aW9ucxgCIAEoAxIYCgtxdW90YV9saW1pdBgDIAEoA0gAiAEBEiwKBXJ1bGVzGAQgAygLMh0ub3BlcmF0aW9ucy52MS5RdW90YVJ1bGVVc2FnZUIOCgxfcXVvdGFfbGltaXQiHAoaR2V0U2lnbmluZ1NlY3JldFJhd1JlcXVlc3QiLQobR2V0U2lnbmluZ1NlY3JldFJhd1Jlc3BvbnNlEg4KBnNlY3JldBgBIAEoCSpiCg1FeGVjdXRpb25Nb2RlEh4KGkVYRUNVVElPTl9NT0RFX1VOU1BFQ0lGSUVEEAASFwoTRVhFQ1VUSU9OX01PREVfU1lOQxABEhgKFEVYRUNVVElPTl9NT0RFX0FTWU5DEAIygBUKEU9wZXJhdGlvbnNTZXJ2aWNlEl0KDkxpc3RPcGVyYXRpb25zEiQub3BlcmF0aW9ucy52MS5MaXN0T3BlcmF0aW9uc1JlcXVlc3QaJS5vcGVyYXRpb25zLnYxLkxpc3RPcGVyYXRpb25zUmVzcG9uc2USVwoMR2V0T3BlcmF0aW9uEiIub3BlcmF0aW9ucy52MS5HZXRPcGVyYXRpb25SZXF1ZXN0GiMub3BlcmF0aW9ucy52MS5HZXRPcGVyYXRpb25SZXNwb25zZRJgCg9DcmVhdGVPcGVyYXRpb24SJS5vcGVyYXRpb25zLnYxLkNyZWF0ZU9wZXJhdGlvblJlcXVlc3QaJi5vcGVyYXRpb25zLnYxLkNyZWF0ZU9wZXJhdGlvblJlc3BvbnNlEmAKD1VwZGF0ZU9wZXJhdGlvbhIlLm9wZXJhdGlvbnMudjEuVXBkYXRlT3BlcmF0aW9uUmVxdWVzdBomLm9wZXJhdGlvbnMudjEuVXBkYXRlT3BlcmF0aW9uUmVzcG9uc2USYAoPRGVsZXRlT3BlcmF0aW9uEiUub3BlcmF0aW9ucy52MS5EZWxldGVPcGVyYXRpb25SZXF1ZXN0GiYub3BlcmF0aW9ucy52MS5EZWxldGVPcGVyYXRpb25SZXNwb25zZRJjChBFeGVjdXRlT3BlcmF0aW9uEiYub3BlcmF0aW9ucy52MS5FeGVjdXRlT3BlcmF0aW9uUmVxdWVzdBonLm9wZXJhdGlvbnMudjEuRXhlY3V0ZU9wZXJhdGlvblJlc3BvbnNlEngKF0xpc3RPcGVyYXRpb25FeGVjdXRpb25zEi0ub3BlcmF0aW9ucy52MS5MaXN0T3BlcmF0aW9uRXhlY3V0aW9uc1JlcXVlc3QaLi5vcGVyYXRpb25zLnYxLkxpc3RPcGVyYXRpb25FeGVjdXRpb25zUmVzcG9uc2USgQEKGkdldE9wZXJhdGlvbkV4ZWN1dGlvblN0YXRzEjAub3BlcmF0aW9ucy52MS5HZXRPcGVyYXRpb25FeGVjdXRpb25TdGF0c1JlcXVlc3QaMS5vcGVyYXRpb25zLnYxLkdldE9wZXJhdGlvbkV4ZWN1dGlvblN0YXRzUmVzcG9uc2UScgoVTGlzdERlYWRMZXR0ZXJFbnRyaWVzEisub3BlcmF0aW9ucy52MS5MaXN0RGVhZExldHRlckVudHJpZXNSZXF1ZXN0Giwub3BlcmF0aW9ucy52MS5MaXN0RGVhZExldHRlckVudHJpZXNSZXNwb25zZRJvChRSZXRyeURlYWRMZXR0ZXJFbnRyeRIqLm9wZXJhdGlvbnMudjEuUmV0cnlEZWFkTGV0dGVyRW50cnlSZXF1ZXN0Gisub3BlcmF0aW9ucy52MS5SZXRyeURlYWRMZXR0ZXJFbnRyeVJlc3BvbnNlEnUKFkRpc21pc3NEZWFkTGV0dGVyRW50cnkSLC5vcGVyYXRpb25zLnYxLkRpc21pc3NEZWFkTGV0dGVyRW50cnlSZXF1ZXN0Gi0ub3BlcmF0aW9ucy52MS5EaXNtaXNzRGVhZExldHRlckVudHJ5UmVzcG9uc2USaQoSR2V0RGVhZExldHRlclN0YXRzEigub3BlcmF0aW9ucy52MS5HZXREZWFkTGV0dGVyU3RhdHNSZXF1ZXN0Gikub3BlcmF0aW9ucy52MS5HZXREZWFkTGV0dGVyU3RhdHNSZXNwb25zZRJmChFMaXN0Q2lyY3VpdFN0YXRlcxInLm9wZXJhdGlvbnMudjEuTGlzdENpcmN1aXRTdGF0ZXNSZXF1ZXN0Gigub3BlcmF0aW9ucy52MS5MaXN0Q2lyY3VpdFN0YXRlc1Jlc3BvbnNlElcKDFJlc2V0Q2lyY3VpdBIiLm9wZXJhdGlvbnMudjEuUmVzZXRDaXJjdWl0UmVxdWVzdBojLm9wZXJhdGlvbnMudjEuUmVzZXRDaXJjdWl0UmVzcG9uc2USeAoXR2V0QXBwbGljYWJsZU9wZXJhdGlvbnMSLS5vcGVyYXRpb25zLnYxLkdldEFwcGxpY2FibGVPcGVyYXRpb25zUmVxdWVzdBouLm9wZXJhdGlvbnMudjEuR2V0QXBwbGljYWJsZU9wZXJhdGlvbnNSZXNwb25zZRJyChVHZXRPcGVyYXRpb25FeGVjdXRpb24SKy5vcGVyYXRpb25zLnYxLkdldE9wZXJhdGlvbkV4ZWN1dGlvblJlcXVlc3QaLC5vcGVyYXRpb25zLnYxLkdldE9wZXJhdGlvbkV4ZWN1dGlvblJlc3BvbnNlEnsKGENhbmNlbE9wZXJhdGlvbkV4ZWN1dGlvbhIuLm9wZXJhdGlvbnMudjEuQ2FuY2VsT3BlcmF0aW9uRXhlY3V0aW9uUmVxdWVzdBovLm9wZXJhdGlvbnMudjEuQ2FuY2VsT3BlcmF0aW9uRXhlY3V0aW9uUmVzcG9uc2USgQEKGkNvbXBsZXRlT3BlcmF0aW9uRXhlY3V0aW9uEjAub3BlcmF0aW9ucy52MS5Db21wbGV0ZU9wZXJhdGlvbkV4ZWN1dGlvblJlcXVlc3QaMS5vcGVyYXRpb25zLnYxLkNvbXBsZXRlT3BlcmF0aW9uRXhlY3V0aW9uUmVzcG9uc2USdQoWRmFpbE9wZXJhdGlvbkV4ZWN1dGlvbhIsLm9wZXJhdGlvbnMudjEuRmFpbE9wZXJhdGlvbkV4ZWN1dGlvblJlcXVlc3QaLS5vcGVyYXRpb25zLnYxLkZhaWxPcGVyYXRpb25FeGVjdXRpb25SZXNwb25zZRJ4ChdSZXBvcnRPcGVyYXRpb25Qcm9ncmVzcxItLm9wZXJhdGlvbnMudjEuUmVwb3J0T3BlcmF0aW9uUHJvZ3Jlc3NSZXF1ZXN0Gi4ub3BlcmF0aW9ucy52MS5SZXBvcnRPcGVyYXRpb25Qcm9ncmVzc1Jlc3BvbnNlEnUKFkdldE9wZXJhdGlvblF1b3RhVXNhZ2USLC5vcGVyYXRpb25zLnYxLkdldE9wZXJhdGlvblF1b3RhVXNhZ2VSZXF1ZXN0Gi0ub3BlcmF0aW9ucy52MS5HZXRPcGVyYXRpb25RdW90YVVzYWdlUmVzcG9uc2USYwoQR2V0U2lnbmluZ1NlY3JldBImLm9wZXJhdGlvbnMudjEuR2V0U2lnbmluZ1NlY3JldFJlcXVlc3QaJy5vcGVyYXRpb25zLnYxLkdldFNpZ25pbmdTZWNyZXRSZXNwb25zZRJsChNHZXRTaWduaW5nU2VjcmV0UmF3Eikub3BlcmF0aW9ucy52MS5HZXRTaWduaW5nU2VjcmV0UmF3UmVxdWVzdBoqLm9wZXJhdGlvbnMudjEuR2V0U2lnbmluZ1NlY3JldFJhd1Jlc3BvbnNlEngKF1JlZ2VuZXJhdGVTaWduaW5nU2VjcmV0Ei0ub3BlcmF0aW9ucy52MS5SZWdlbmVyYXRlU2lnbmluZ1NlY3JldFJlcXVlc3QaLi5vcGVyYXRpb25zLnYxLlJlZ2VuZXJhdGVTaWduaW5nU2VjcmV0UmVzcG9uc2VCQVo/Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL29wZXJhdGlvbnMvdjE7b3BlcmF0aW9uc3YxYgZwcm90bzM", [file_google_protobuf_struct, file_google_protobuf_timestamp]);
13
13
 
14
14
  /**
15
15
  * Describes the message operations.v1.Operation.
@@ -319,40 +319,82 @@ export const CancelOperationExecutionRequestSchema = /*@__PURE__*/
319
319
  export const CancelOperationExecutionResponseSchema = /*@__PURE__*/
320
320
  messageDesc(file_operations_v1_operations, 43);
321
321
 
322
+ /**
323
+ * Describes the message operations.v1.CompleteOperationExecutionRequest.
324
+ * Use `create(CompleteOperationExecutionRequestSchema)` to create a new message.
325
+ */
326
+ export const CompleteOperationExecutionRequestSchema = /*@__PURE__*/
327
+ messageDesc(file_operations_v1_operations, 44);
328
+
329
+ /**
330
+ * Describes the message operations.v1.CompleteOperationExecutionResponse.
331
+ * Use `create(CompleteOperationExecutionResponseSchema)` to create a new message.
332
+ */
333
+ export const CompleteOperationExecutionResponseSchema = /*@__PURE__*/
334
+ messageDesc(file_operations_v1_operations, 45);
335
+
336
+ /**
337
+ * Describes the message operations.v1.FailOperationExecutionRequest.
338
+ * Use `create(FailOperationExecutionRequestSchema)` to create a new message.
339
+ */
340
+ export const FailOperationExecutionRequestSchema = /*@__PURE__*/
341
+ messageDesc(file_operations_v1_operations, 46);
342
+
343
+ /**
344
+ * Describes the message operations.v1.FailOperationExecutionResponse.
345
+ * Use `create(FailOperationExecutionResponseSchema)` to create a new message.
346
+ */
347
+ export const FailOperationExecutionResponseSchema = /*@__PURE__*/
348
+ messageDesc(file_operations_v1_operations, 47);
349
+
350
+ /**
351
+ * Describes the message operations.v1.ReportOperationProgressRequest.
352
+ * Use `create(ReportOperationProgressRequestSchema)` to create a new message.
353
+ */
354
+ export const ReportOperationProgressRequestSchema = /*@__PURE__*/
355
+ messageDesc(file_operations_v1_operations, 48);
356
+
357
+ /**
358
+ * Describes the message operations.v1.ReportOperationProgressResponse.
359
+ * Use `create(ReportOperationProgressResponseSchema)` to create a new message.
360
+ */
361
+ export const ReportOperationProgressResponseSchema = /*@__PURE__*/
362
+ messageDesc(file_operations_v1_operations, 49);
363
+
322
364
  /**
323
365
  * Describes the message operations.v1.GetOperationQuotaUsageRequest.
324
366
  * Use `create(GetOperationQuotaUsageRequestSchema)` to create a new message.
325
367
  */
326
368
  export const GetOperationQuotaUsageRequestSchema = /*@__PURE__*/
327
- messageDesc(file_operations_v1_operations, 44);
369
+ messageDesc(file_operations_v1_operations, 50);
328
370
 
329
371
  /**
330
372
  * Describes the message operations.v1.QuotaRuleUsage.
331
373
  * Use `create(QuotaRuleUsageSchema)` to create a new message.
332
374
  */
333
375
  export const QuotaRuleUsageSchema = /*@__PURE__*/
334
- messageDesc(file_operations_v1_operations, 45);
376
+ messageDesc(file_operations_v1_operations, 51);
335
377
 
336
378
  /**
337
379
  * Describes the message operations.v1.GetOperationQuotaUsageResponse.
338
380
  * Use `create(GetOperationQuotaUsageResponseSchema)` to create a new message.
339
381
  */
340
382
  export const GetOperationQuotaUsageResponseSchema = /*@__PURE__*/
341
- messageDesc(file_operations_v1_operations, 46);
383
+ messageDesc(file_operations_v1_operations, 52);
342
384
 
343
385
  /**
344
386
  * Describes the message operations.v1.GetSigningSecretRawRequest.
345
387
  * Use `create(GetSigningSecretRawRequestSchema)` to create a new message.
346
388
  */
347
389
  export const GetSigningSecretRawRequestSchema = /*@__PURE__*/
348
- messageDesc(file_operations_v1_operations, 47);
390
+ messageDesc(file_operations_v1_operations, 53);
349
391
 
350
392
  /**
351
393
  * Describes the message operations.v1.GetSigningSecretRawResponse.
352
394
  * Use `create(GetSigningSecretRawResponseSchema)` to create a new message.
353
395
  */
354
396
  export const GetSigningSecretRawResponseSchema = /*@__PURE__*/
355
- messageDesc(file_operations_v1_operations, 48);
397
+ messageDesc(file_operations_v1_operations, 54);
356
398
 
357
399
  /**
358
400
  * Describes the enum operations.v1.ExecutionMode.