@cobotar/protocol 0.19.15 → 0.19.16

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/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # CobotAR-Protocol
2
2
  A collection of protobuf messages for the CobotAR-project
3
3
 
4
- Current version: 0.19.15
4
+ Current version: 0.19.16
5
5
 
6
6
  ## Documentation
7
7
  Find it here: [documentation/README.md](documentation/README.md)
@@ -11,6 +11,7 @@ import type { SequenceDefinition } from "./sequence_definition_pb.ts";
11
11
  import { file_process_v1_sequence_definition } from "./sequence_definition_pb.ts";
12
12
  import type { TaskDefinition } from "./task_definition_pb.ts";
13
13
  import { file_process_v1_task_definition } from "./task_definition_pb.ts";
14
+ import { file_validation_v1_predefined_string_rules } from "../../validation/v1/predefined_string_rules_pb.ts";
14
15
  import type { VariantConfiguration } from "../../variance/v1/variant_configuration_pb.ts";
15
16
  import { file_variance_v1_variant_configuration } from "../../variance/v1/variant_configuration_pb.ts";
16
17
  import type { Message } from "@bufbuild/protobuf";
@@ -19,7 +20,7 @@ import type { Message } from "@bufbuild/protobuf";
19
20
  * Describes the file process/v1/generation_requests.proto.
20
21
  */
21
22
  export const file_process_v1_generation_requests: GenFile = /*@__PURE__*/
22
- fileDesc("CiRwcm9jZXNzL3YxL2dlbmVyYXRpb25fcmVxdWVzdHMucHJvdG8SCnByb2Nlc3MudjEi6wMKIURyYWZ0UHJvY2Vzc1JlY2lwZUdlbmVyYXRlUmVxdWVzdBIlChVwcm9kdWN0X2RlZmluaXRpb25faWQYASABKAlCBrpIA8gBARIZCglyZWNpcGVfaWQYAiABKAlCBrpIA8gBARITCgtyZWNpcGVfbmFtZRgDIAEoCRITCgtyZWNpcGVfaWNvbhgEIAEoCRIaChJyZWNpcGVfZGVzY3JpcHRpb24YBSABKAkSQAoVdmFyaWFudF9jb25maWd1cmF0aW9uGAYgASgLMiEudmFyaWFuY2UudjEuVmFyaWFudENvbmZpZ3VyYXRpb24SKAogaW5zZXJ0X2FsaWduX2JlZm9yZV9mYXN0ZW5fZ3JvdXAYByABKAgSIQoZZ3JvdXBfZmFzdGVuZXJzX3RocmVzaG9sZBgIIAEoBRImCh5ncm91cF9yZXBlYXRlZF9wYXJ0c190aHJlc2hvbGQYCSABKAUSHQoVZ2VuZXJhdGVfdmVyaWZ5X3Rhc2tzGAogASgIEicKH3ByZWZlcl9tb3ZlX3Rhc2tzX3doZW5fcG9zc2libGUYCyABKAgSHgoWaW5jbHVkZV9vcHRpb25hbF9ub2RlcxgMIAEoCBIfChdnZW5lcmF0ZV9ncmVhc2luZ190YXNrcxgNIAEoCCJvCh9EcmFmdFByb2Nlc3NSZWNpcGVHZW5lcmF0ZUlzc3VlEhcKB21lc3NhZ2UYASABKAlCBrpIA8gBARIXCgdub2RlX2lkGAIgASgJQga6SAPIAQESGgoScGFydF9kZWZpbml0aW9uX2lkGAMgASgJIvABCiBEcmFmdFByb2Nlc3NSZWNpcGVHZW5lcmF0ZVJlc3VsdBIxCgZyZWNpcGUYASABKAsyGS5wcm9jZXNzLnYxLlByb2Nlc3NSZWNpcGVCBrpIA8gBARIxCglzZXF1ZW5jZXMYAiADKAsyHi5wcm9jZXNzLnYxLlNlcXVlbmNlRGVmaW5pdGlvbhIpCgV0YXNrcxgDIAMoCzIaLnByb2Nlc3MudjEuVGFza0RlZmluaXRpb24SOwoGaXNzdWVzGAQgAygLMisucHJvY2Vzcy52MS5EcmFmdFByb2Nlc3NSZWNpcGVHZW5lcmF0ZUlzc3VlQrYBCg5jb20ucHJvY2Vzcy52MUIXR2VuZXJhdGlvblJlcXVlc3RzUHJvdG9QAVo5Z2l0aHViLmNvbS9jb2JvdGFyL3Byb3RvY29sL21lc3NhZ2VzL3Byb2Nlc3MvdjE7cHJvY2Vzc3YxogIDUFhYqgITTWVzc2FnZXMuUHJvY2Vzcy5WMcoCClByb2Nlc3NcVjHiAhZQcm9jZXNzXFYxXEdQQk1ldGFkYXRh6gILUHJvY2Vzczo6VjFiBnByb3RvMw", [file_buf_validate_validate, file_process_v1_process_recipe, file_process_v1_sequence_definition, file_process_v1_task_definition, file_variance_v1_variant_configuration]);
23
+ fileDesc("CiRwcm9jZXNzL3YxL2dlbmVyYXRpb25fcmVxdWVzdHMucHJvdG8SCnByb2Nlc3MudjEi0wUKIURyYWZ0UHJvY2Vzc1JlY2lwZUdlbmVyYXRlUmVxdWVzdBIrChVwcm9kdWN0X2RlZmluaXRpb25faWQYASABKAlCDLpICcgBAXIE4OswARIfCglyZWNpcGVfaWQYAiABKAlCDLpICcgBAXIEoPIEARITCgtyZWNpcGVfbmFtZRgDIAEoCRITCgtyZWNpcGVfaWNvbhgEIAEoCRIaChJyZWNpcGVfZGVzY3JpcHRpb24YBSABKAkSQAoVdmFyaWFudF9jb25maWd1cmF0aW9uGAYgASgLMiEudmFyaWFuY2UudjEuVmFyaWFudENvbmZpZ3VyYXRpb24SKAogaW5zZXJ0X2FsaWduX2JlZm9yZV9mYXN0ZW5fZ3JvdXAYByABKAgSIQoZZ3JvdXBfZmFzdGVuZXJzX3RocmVzaG9sZBgIIAEoBRImCh5ncm91cF9yZXBlYXRlZF9wYXJ0c190aHJlc2hvbGQYCSABKAUSHQoVZ2VuZXJhdGVfdmVyaWZ5X3Rhc2tzGAogASgIEicKH3ByZWZlcl9tb3ZlX3Rhc2tzX3doZW5fcG9zc2libGUYCyABKAgSHgoWaW5jbHVkZV9vcHRpb25hbF9ub2RlcxgMIAEoCBIcChRnZW5lcmF0ZV9hcHBseV90YXNrcxgNIAEoCBIUCgxyb290X25vZGVfaWQYDiABKAkSNQotYXNzZW1ibGVfc3ViYXNzZW1ibGllc19hc191bml0c193aGVuX3Bvc3NpYmxlGA8gASgIEh4KFmdlbmVyYXRlX2luc3BlY3RfdGFza3MYECABKAgSNwofc291cmNlX2NvbnRhaW5lcl9kZWZpbml0aW9uX2lkcxgRIAMoCUIOukgLkgEIIgZyBMjyBAESNwofdGFyZ2V0X2NvbnRhaW5lcl9kZWZpbml0aW9uX2lkcxgSIAMoCUIOukgLkgEIIgZyBMjyBAEiwgUKLERyYWZ0RGlzYXNzZW1ibHlQcm9jZXNzUmVjaXBlR2VuZXJhdGVSZXF1ZXN0EisKFXByb2R1Y3RfZGVmaW5pdGlvbl9pZBgBIAEoCUIMukgJyAEBcgTg6zABEh8KCXJlY2lwZV9pZBgCIAEoCUIMukgJyAEBcgSg8gQBEhMKC3JlY2lwZV9uYW1lGAMgASgJEhMKC3JlY2lwZV9pY29uGAQgASgJEhoKEnJlY2lwZV9kZXNjcmlwdGlvbhgFIAEoCRJAChV2YXJpYW50X2NvbmZpZ3VyYXRpb24YBiABKAsyIS52YXJpYW5jZS52MS5WYXJpYW50Q29uZmlndXJhdGlvbhIpCiFpbnNlcnRfaG9sZF9iZWZvcmVfdW5mYXN0ZW5fZ3JvdXAYByABKAgSIQoZZ3JvdXBfZmFzdGVuZXJzX3RocmVzaG9sZBgIIAEoBRImCh5ncm91cF9yZXBlYXRlZF9wYXJ0c190aHJlc2hvbGQYCSABKAUSHQoVZ2VuZXJhdGVfdmVyaWZ5X3Rhc2tzGAogASgIEicKH3ByZWZlcl9tb3ZlX3Rhc2tzX3doZW5fcG9zc2libGUYCyABKAgSHgoWaW5jbHVkZV9vcHRpb25hbF9ub2RlcxgMIAEoCBIbChNnZW5lcmF0ZV93aXBlX3Rhc2tzGA0gASgIEjcKH3RhcmdldF9jb250YWluZXJfZGVmaW5pdGlvbl9pZHMYDiADKAlCDrpIC5IBCCIGcgTI8gQBEhQKDHJvb3Rfbm9kZV9pZBgPIAEoCRIsCiRwcmVzZXJ2ZV9zdWJhc3NlbWJsaWVzX3doZW5fcG9zc2libGUYECABKAgSJAoccmV2ZXJzZV9jaGlsZF9zZXF1ZW5jZV9vcmRlchgRIAEoCBIeChZnZW5lcmF0ZV9pbnNwZWN0X3Rhc2tzGBIgASgIInoKH0RyYWZ0UHJvY2Vzc1JlY2lwZUdlbmVyYXRlSXNzdWUSFwoHbWVzc2FnZRgBIAEoCUIGukgDyAEBEhcKB25vZGVfaWQYAiABKAlCBrpIA8gBARIlChJwYXJ0X2RlZmluaXRpb25faWQYAyABKAlCCbpIBnIEyPEEASLwAQogRHJhZnRQcm9jZXNzUmVjaXBlR2VuZXJhdGVSZXN1bHQSMQoGcmVjaXBlGAEgASgLMhkucHJvY2Vzcy52MS5Qcm9jZXNzUmVjaXBlQga6SAPIAQESMQoJc2VxdWVuY2VzGAIgAygLMh4ucHJvY2Vzcy52MS5TZXF1ZW5jZURlZmluaXRpb24SKQoFdGFza3MYAyADKAsyGi5wcm9jZXNzLnYxLlRhc2tEZWZpbml0aW9uEjsKBmlzc3VlcxgEIAMoCzIrLnByb2Nlc3MudjEuRHJhZnRQcm9jZXNzUmVjaXBlR2VuZXJhdGVJc3N1ZUK2AQoOY29tLnByb2Nlc3MudjFCF0dlbmVyYXRpb25SZXF1ZXN0c1Byb3RvUAFaOWdpdGh1Yi5jb20vY29ib3Rhci9wcm90b2NvbC9tZXNzYWdlcy9wcm9jZXNzL3YxO3Byb2Nlc3N2MaICA1BYWKoCE01lc3NhZ2VzLlByb2Nlc3MuVjHKAgpQcm9jZXNzXFYx4gIWUHJvY2Vzc1xWMVxHUEJNZXRhZGF0YeoCC1Byb2Nlc3M6OlYxYgZwcm90bzM", [file_buf_validate_validate, file_process_v1_process_recipe, file_process_v1_sequence_definition, file_process_v1_task_definition, file_validation_v1_predefined_string_rules, file_variance_v1_variant_configuration]);
23
24
 
24
25
  /**
25
26
  * DraftProcessRecipeGenerateRequest asks the backend to generate a draft
@@ -114,18 +115,59 @@ export type DraftProcessRecipeGenerateRequest = Message<"process.v1.DraftProcess
114
115
  preferMoveTasksWhenPossible: boolean;
115
116
 
116
117
  /**
117
- * If true, nodes marked as optional will be included
118
+ * If true, nodes marked as optional will be included.
118
119
  *
119
120
  * @generated from field: bool include_optional_nodes = 12;
120
121
  */
121
122
  includeOptionalNodes: boolean;
122
123
 
123
124
  /**
124
- * If true, the generator may insert APPLY (assembly), WIPE (disassembly) tasks where appropriate
125
+ * If true, the generator may insert APPLY tasks where appropriate.
125
126
  *
126
- * @generated from field: bool generate_greasing_tasks = 13;
127
+ * @generated from field: bool generate_apply_tasks = 13;
127
128
  */
128
- generateGreasingTasks: boolean;
129
+ generateApplyTasks: boolean;
130
+
131
+ /**
132
+ * Optional assembly scope. If empty, the generator may consider the full
133
+ * product structure. If set, generation should focus on the specified
134
+ * assembly node and its relevant assembly paths/subtrees.
135
+ *
136
+ * @generated from field: string root_node_id = 14;
137
+ */
138
+ rootNodeId: string;
139
+
140
+ /**
141
+ * If true, the generator should prefer assembling subassemblies as intact
142
+ * units when feasible instead of always expanding them into all child parts.
143
+ *
144
+ * @generated from field: bool assemble_subassemblies_as_units_when_possible = 15;
145
+ */
146
+ assembleSubassembliesAsUnitsWhenPossible: boolean;
147
+
148
+ /**
149
+ * If true, the generator may insert INSPECT tasks where appropriate, for
150
+ * example to assess fit, alignment, damage, or assembly condition.
151
+ *
152
+ * @generated from field: bool generate_inspect_tasks = 16;
153
+ */
154
+ generateInspectTasks: boolean;
155
+
156
+ /**
157
+ * Container definitions that may act as sources for parts during assembly,
158
+ * for example trays, kits, or storage containers.
159
+ *
160
+ * @generated from field: repeated string source_container_definition_ids = 17;
161
+ */
162
+ sourceContainerDefinitionIds: string[];
163
+
164
+ /**
165
+ * Container definitions that may act as targets/workholding during assembly,
166
+ * for example fixtures or pallets used to hold the product being assembled.
167
+ *
168
+ * @generated from field: repeated string target_container_definition_ids = 18;
169
+ */
170
+ targetContainerDefinitionIds: string[];
129
171
  };
130
172
 
131
173
  /**
@@ -135,6 +177,164 @@ export type DraftProcessRecipeGenerateRequest = Message<"process.v1.DraftProcess
135
177
  export const DraftProcessRecipeGenerateRequestSchema: GenMessage<DraftProcessRecipeGenerateRequest> = /*@__PURE__*/
136
178
  messageDesc(file_process_v1_generation_requests, 0);
137
179
 
180
+ /**
181
+ * DraftDisassemblyProcessRecipeGenerateRequest asks the backend to generate a
182
+ * draft ProcessRecipe of type DISASSEMBLY from a ProductDefinition plus
183
+ * generation options.
184
+ *
185
+ * This is intended for authoring-time generation, not runtime execution.
186
+ *
187
+ * @generated from message process.v1.DraftDisassemblyProcessRecipeGenerateRequest
188
+ */
189
+ export type DraftDisassemblyProcessRecipeGenerateRequest = Message<"process.v1.DraftDisassemblyProcessRecipeGenerateRequest"> & {
190
+ /**
191
+ * The product structure that should be transformed into a draft recipe.
192
+ *
193
+ * @generated from field: string product_definition_id = 1;
194
+ */
195
+ productDefinitionId: string;
196
+
197
+ /**
198
+ * Optional explicit recipe id for the generated recipe.
199
+ * If empty, the generator/backend may assign one.
200
+ *
201
+ * @generated from field: string recipe_id = 2;
202
+ */
203
+ recipeId: string;
204
+
205
+ /**
206
+ * Human-readable name for the generated recipe.
207
+ *
208
+ * @generated from field: string recipe_name = 3;
209
+ */
210
+ recipeName: string;
211
+
212
+ /**
213
+ * Optional icon for the generated recipe.
214
+ *
215
+ * @generated from field: string recipe_icon = 4;
216
+ */
217
+ recipeIcon: string;
218
+
219
+ /**
220
+ * Optional human-readable description for the generated recipe.
221
+ *
222
+ * @generated from field: string recipe_description = 5;
223
+ */
224
+ recipeDescription: string;
225
+
226
+ /**
227
+ * Selected product variants used to filter applicability and annotate the
228
+ * generated recipe applicability.
229
+ *
230
+ * @generated from field: variance.v1.VariantConfiguration variant_configuration = 6;
231
+ */
232
+ variantConfiguration?: VariantConfiguration;
233
+
234
+ /**
235
+ * If true, the generator may insert HOLD tasks before grouped UNFASTEN work
236
+ * when that improves stability and task flow during disassembly.
237
+ *
238
+ * @generated from field: bool insert_hold_before_unfasten_group = 7;
239
+ */
240
+ insertHoldBeforeUnfastenGroup: boolean;
241
+
242
+ /**
243
+ * Minimum number of sibling fasteners required before grouping them into a
244
+ * shared fastener-removal-oriented sequence.
245
+ *
246
+ * @generated from field: int32 group_fasteners_threshold = 8;
247
+ */
248
+ groupFastenersThreshold: number;
249
+
250
+ /**
251
+ * Minimum number of repeated sibling parts required before grouping them into
252
+ * a shared repeated-parts disassembly sequence.
253
+ *
254
+ * @generated from field: int32 group_repeated_parts_threshold = 9;
255
+ */
256
+ groupRepeatedPartsThreshold: number;
257
+
258
+ /**
259
+ * If true, the generator may insert VERIFY tasks where appropriate, for
260
+ * example to confirm that a part, fastener, or material has been removed.
261
+ *
262
+ * @generated from field: bool generate_verify_tasks = 10;
263
+ */
264
+ generateVerifyTasks: boolean;
265
+
266
+ /**
267
+ * If true, the generator may prefer MOVE tasks when the operation can be
268
+ * reasonably interpreted as repositioning rather than removal.
269
+ *
270
+ * @generated from field: bool prefer_move_tasks_when_possible = 11;
271
+ */
272
+ preferMoveTasksWhenPossible: boolean;
273
+
274
+ /**
275
+ * If true, nodes marked as optional will be included.
276
+ *
277
+ * @generated from field: bool include_optional_nodes = 12;
278
+ */
279
+ includeOptionalNodes: boolean;
280
+
281
+ /**
282
+ * If true, the generator may insert WIPE tasks where appropriate.
283
+ *
284
+ * @generated from field: bool generate_wipe_tasks = 13;
285
+ */
286
+ generateWipeTasks: boolean;
287
+
288
+ /**
289
+ * Container definitions that removed parts, fasteners, or subassemblies may
290
+ * be staged into during disassembly. These can be fixtures, trays, kits, or
291
+ * storage containers depending on the intended workflow.
292
+ *
293
+ * @generated from field: repeated string target_container_definition_ids = 14;
294
+ */
295
+ targetContainerDefinitionIds: string[];
296
+
297
+ /**
298
+ * Optional disassembly scope. If empty, the generator may consider the full
299
+ * product structure. If set, generation should focus on the specified
300
+ * assembly node and its relevant disassembly paths/subtrees.
301
+ *
302
+ * @generated from field: string root_node_id = 15;
303
+ */
304
+ rootNodeId: string;
305
+
306
+ /**
307
+ * If true, the generator should prefer removing subassemblies as intact units
308
+ * when feasible instead of always decomposing them into all child parts.
309
+ *
310
+ * @generated from field: bool preserve_subassemblies_when_possible = 16;
311
+ */
312
+ preserveSubassembliesWhenPossible: boolean;
313
+
314
+ /**
315
+ * If true, the generator may prefer reversing child ordering hints from the
316
+ * product structure when deriving disassembly sequences.
317
+ *
318
+ * @generated from field: bool reverse_child_sequence_order = 17;
319
+ */
320
+ reverseChildSequenceOrder: boolean;
321
+
322
+ /**
323
+ * If true, the generator may insert INSPECT tasks where appropriate, for
324
+ * example to assess wear, damage, residue, or part condition after removal.
325
+ *
326
+ * @generated from field: bool generate_inspect_tasks = 18;
327
+ */
328
+ generateInspectTasks: boolean;
329
+ };
330
+
331
+ /**
332
+ * Describes the message process.v1.DraftDisassemblyProcessRecipeGenerateRequest.
333
+ * Use `create(DraftDisassemblyProcessRecipeGenerateRequestSchema)` to create a new message.
334
+ */
335
+ export const DraftDisassemblyProcessRecipeGenerateRequestSchema: GenMessage<DraftDisassemblyProcessRecipeGenerateRequest> = /*@__PURE__*/
336
+ messageDesc(file_process_v1_generation_requests, 1);
337
+
138
338
  /**
139
339
  * DraftProcessRecipeGenerateIssue describes a non-fatal issue or warning
140
340
  * encountered during recipe generation.
@@ -163,7 +363,7 @@ export type DraftProcessRecipeGenerateIssue = Message<"process.v1.DraftProcessRe
163
363
  * Use `create(DraftProcessRecipeGenerateIssueSchema)` to create a new message.
164
364
  */
165
365
  export const DraftProcessRecipeGenerateIssueSchema: GenMessage<DraftProcessRecipeGenerateIssue> = /*@__PURE__*/
166
- messageDesc(file_process_v1_generation_requests, 1);
366
+ messageDesc(file_process_v1_generation_requests, 2);
167
367
 
168
368
  /**
169
369
  * DraftProcessRecipeGenerateResult contains the generated draft recipe.
@@ -197,5 +397,5 @@ export type DraftProcessRecipeGenerateResult = Message<"process.v1.DraftProcessR
197
397
  * Use `create(DraftProcessRecipeGenerateResultSchema)` to create a new message.
198
398
  */
199
399
  export const DraftProcessRecipeGenerateResultSchema: GenMessage<DraftProcessRecipeGenerateResult> = /*@__PURE__*/
200
- messageDesc(file_process_v1_generation_requests, 2);
400
+ messageDesc(file_process_v1_generation_requests, 3);
201
401
 
@@ -18,7 +18,7 @@ import type { Message } from "@bufbuild/protobuf";
18
18
  * Describes the file product/v1/part_definition.proto.
19
19
  */
20
20
  export const file_product_v1_part_definition: GenFile = /*@__PURE__*/
21
- fileDesc("CiBwcm9kdWN0L3YxL3BhcnRfZGVmaW5pdGlvbi5wcm90bxIKcHJvZHVjdC52MSJmCgpEaW1lbnNpb25zEhwKBHhfbW0YASABKAFCDrpICxIJKQAAAAAAAAAAEhwKBHlfbW0YAiABKAFCDrpICxIJKQAAAAAAAAAAEhwKBHpfbW0YAyABKAFCDrpICxIJKQAAAAAAAAAAIlsKDE1hdGVyaWFsU3BlYxIuCghjYXRlZ29yeRgBIAEoDjIcLnByb2R1Y3QudjEuTWF0ZXJpYWxDYXRlZ29yeRIMCgRuYW1lGAIgASgJEg0KBWdyYWRlGAMgASgJIsACChNQYXJ0SGFuZGxpbmdQcm9maWxlEg8KB2ZyYWdpbGUYASABKAgSFQoNZXNkX3NlbnNpdGl2ZRgCIAEoCBIeChZyZXF1aXJlc190d29faGFuZF9saWZ0GAMgASgIEiAKGHJlcXVpcmVzX2ZpeHR1cmVfc3VwcG9ydBgEIAEoCBIfChdwcmVfbHVicmljYXRpb25fcGFydF9pZBgFIAEoCRIgChhwb3N0X2x1YnJpY2F0aW9uX3BhcnRfaWQYBiABKAkSFwoPcmVxdWlyZXNfd2lwaW5nGAcgASgIEhgKEG1heF9ncmlwX2ZvcmNlX24YCCABKAESFQoNbWF4X3RvcnF1ZV9ubRgJIAEoARIyCgtjb25zdHJhaW50cxgKIAMoCzIdLmNvbW1vbi52MS5LZXlWYWx1ZUNvbnN0cmFpbnQiygMKDlBhcnREZWZpbml0aW9uEgoKAmlkGAEgASgJEhcKBG5hbWUYAiABKAlCCbpIBnIEgPEEARIMCgRpY29uGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEiwKBHR5cGUYBSABKA4yFC5wcm9kdWN0LnYxLlBhcnRUeXBlQgi6SAWCAQIQARIPCgdzdWJ0eXBlGAYgASgJEhkKCHdlaWdodF9nGAcgASgDQge6SAQiAigAEioKCmRpbWVuc2lvbnMYCCABKAsyFi5wcm9kdWN0LnYxLkRpbWVuc2lvbnMSKgoIbWF0ZXJpYWwYCSABKAsyGC5wcm9kdWN0LnYxLk1hdGVyaWFsU3BlYxIjChBkZWZhdWx0X21vZGVsX2lkGAogASgJQgm6SAZyBIjxBAESMQoIaGFuZGxpbmcYCyABKAsyHy5wcm9kdWN0LnYxLlBhcnRIYW5kbGluZ1Byb2ZpbGUSOQoTZXh0ZXJuYWxfcmVmZXJlbmNlcxgMIAMoCzIcLmNvbW1vbi52MS5FeHRlcm5hbFJlZmVyZW5jZRIrCgZjdXN0b20YDSABKAsyGy5jb21tb24udjEuQ3VzdG9tUHJvcGVydGllcyI8Cg9QYXJ0RGVmaW5pdGlvbnMSKQoFaXRlbXMYASADKAsyGi5wcm9kdWN0LnYxLlBhcnREZWZpbml0aW9uKssCCghQYXJ0VHlwZRIZChVQQVJUX1RZUEVfVU5TUEVDSUZJRUQQABIXChNQQVJUX1RZUEVfQ09NUE9ORU5UEAESFgoSUEFSVF9UWVBFX0ZBU1RFTkVSEAISGQoVUEFSVF9UWVBFX1NVQkFTU0VNQkxZEAMSGAoUUEFSVF9UWVBFX0NPTlNVTUFCTEUQBBITCg9QQVJUX1RZUEVfTEFCRUwQBRIXChNQQVJUX1RZUEVfUEFDS0FHSU5HEAYSEQoNUEFSVF9UWVBFX1BDQhAHEiIKHlBBUlRfVFlQRV9FTEVDVFJPTklDX0NPTVBPTkVOVBAIEiIKHlBBUlRfVFlQRV9FTEVDVFJJQ0FMX0NPTVBPTkVOVBAJEhMKD1BBUlRfVFlQRV9DQUJMRRAKEiAKHFBBUlRfVFlQRV9ESVNQRU5TRURfTUFURVJJQUwQCyqRAwoQTWF0ZXJpYWxDYXRlZ29yeRIhCh1NQVRFUklBTF9DQVRFR09SWV9VTlNQRUNJRklFRBAAEhsKF01BVEVSSUFMX0NBVEVHT1JZX01FVEFMEAESHQoZTUFURVJJQUxfQ0FURUdPUllfUE9MWU1FUhACEh8KG01BVEVSSUFMX0NBVEVHT1JZX0VMQVNUT01FUhADEh8KG01BVEVSSUFMX0NBVEVHT1JZX0NPTVBPU0lURRAEEh0KGU1BVEVSSUFMX0NBVEVHT1JZX0NFUkFNSUMQBRIbChdNQVRFUklBTF9DQVRFR09SWV9HTEFTUxAGEhoKFk1BVEVSSUFMX0NBVEVHT1JZX1dPT0QQBxIaChZNQVRFUklBTF9DQVRFR09SWV9GT0FNEAgSKwonTUFURVJJQUxfQ0FURUdPUllfRUxFQ1RST05JQ1NfU1VCU1RSQVRFEAkSHgoaTUFURVJJQUxfQ0FURUdPUllfQ0hFTUlDQUwQChIbChdNQVRFUklBTF9DQVRFR09SWV9PVEhFUhBjQrIBCg5jb20ucHJvZHVjdC52MUITUGFydERlZmluaXRpb25Qcm90b1ABWjlnaXRodWIuY29tL2NvYm90YXIvcHJvdG9jb2wvbWVzc2FnZXMvcHJvZHVjdC92MTtwcm9kdWN0djGiAgNQWFiqAhNNZXNzYWdlcy5Qcm9kdWN0LlYxygIKUHJvZHVjdFxWMeICFlByb2R1Y3RcVjFcR1BCTWV0YWRhdGHqAgtQcm9kdWN0OjpWMWIGcHJvdG8z", [file_buf_validate_validate, file_common_v1_custom_properties, file_common_v1_external_references, file_common_v1_key_value_constraint, file_validation_v1_predefined_string_rules]);
21
+ fileDesc("CiBwcm9kdWN0L3YxL3BhcnRfZGVmaW5pdGlvbi5wcm90bxIKcHJvZHVjdC52MSJmCgpEaW1lbnNpb25zEhwKBHhfbW0YASABKAFCDrpICxIJKQAAAAAAAAAAEhwKBHlfbW0YAiABKAFCDrpICxIJKQAAAAAAAAAAEhwKBHpfbW0YAyABKAFCDrpICxIJKQAAAAAAAAAAIlsKDE1hdGVyaWFsU3BlYxIuCghjYXRlZ29yeRgBIAEoDjIcLnByb2R1Y3QudjEuTWF0ZXJpYWxDYXRlZ29yeRIMCgRuYW1lGAIgASgJEg0KBWdyYWRlGAMgASgJIoQDChNQYXJ0SGFuZGxpbmdQcm9maWxlEg8KB2ZyYWdpbGUYASABKAgSFQoNZXNkX3NlbnNpdGl2ZRgCIAEoCBIeChZyZXF1aXJlc190d29faGFuZF9saWZ0GAMgASgIEiAKGHJlcXVpcmVzX2ZpeHR1cmVfc3VwcG9ydBgEIAEoCBIfChdwcmVfbHVicmljYXRpb25fcGFydF9pZBgFIAEoCRIgChhwb3N0X2x1YnJpY2F0aW9uX3BhcnRfaWQYBiABKAkSFwoPcmVxdWlyZXNfd2lwaW5nGAcgASgIEh8KF2luc3BlY3RfYmVmb3JlX2Fzc2VtYmxlGAggASgIEiEKGWluc3BlY3RfYWZ0ZXJfZGlzYXNzZW1ibGUYCSABKAgSGAoQbWF4X2dyaXBfZm9yY2VfbhgKIAEoARIVCg1tYXhfdG9ycXVlX25tGAsgASgBEjIKC2NvbnN0cmFpbnRzGAwgAygLMh0uY29tbW9uLnYxLktleVZhbHVlQ29uc3RyYWludCLKAwoOUGFydERlZmluaXRpb24SCgoCaWQYASABKAkSFwoEbmFtZRgCIAEoCUIJukgGcgSA8QQBEgwKBGljb24YAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkSLAoEdHlwZRgFIAEoDjIULnByb2R1Y3QudjEuUGFydFR5cGVCCLpIBYIBAhABEg8KB3N1YnR5cGUYBiABKAkSGQoId2VpZ2h0X2cYByABKANCB7pIBCICKAASKgoKZGltZW5zaW9ucxgIIAEoCzIWLnByb2R1Y3QudjEuRGltZW5zaW9ucxIqCghtYXRlcmlhbBgJIAEoCzIYLnByb2R1Y3QudjEuTWF0ZXJpYWxTcGVjEiMKEGRlZmF1bHRfbW9kZWxfaWQYCiABKAlCCbpIBnIEiPEEARIxCghoYW5kbGluZxgLIAEoCzIfLnByb2R1Y3QudjEuUGFydEhhbmRsaW5nUHJvZmlsZRI5ChNleHRlcm5hbF9yZWZlcmVuY2VzGAwgAygLMhwuY29tbW9uLnYxLkV4dGVybmFsUmVmZXJlbmNlEisKBmN1c3RvbRgNIAEoCzIbLmNvbW1vbi52MS5DdXN0b21Qcm9wZXJ0aWVzIjwKD1BhcnREZWZpbml0aW9ucxIpCgVpdGVtcxgBIAMoCzIaLnByb2R1Y3QudjEuUGFydERlZmluaXRpb24qywIKCFBhcnRUeXBlEhkKFVBBUlRfVFlQRV9VTlNQRUNJRklFRBAAEhcKE1BBUlRfVFlQRV9DT01QT05FTlQQARIWChJQQVJUX1RZUEVfRkFTVEVORVIQAhIZChVQQVJUX1RZUEVfU1VCQVNTRU1CTFkQAxIYChRQQVJUX1RZUEVfQ09OU1VNQUJMRRAEEhMKD1BBUlRfVFlQRV9MQUJFTBAFEhcKE1BBUlRfVFlQRV9QQUNLQUdJTkcQBhIRCg1QQVJUX1RZUEVfUENCEAcSIgoeUEFSVF9UWVBFX0VMRUNUUk9OSUNfQ09NUE9ORU5UEAgSIgoeUEFSVF9UWVBFX0VMRUNUUklDQUxfQ09NUE9ORU5UEAkSEwoPUEFSVF9UWVBFX0NBQkxFEAoSIAocUEFSVF9UWVBFX0RJU1BFTlNFRF9NQVRFUklBTBALKpEDChBNYXRlcmlhbENhdGVnb3J5EiEKHU1BVEVSSUFMX0NBVEVHT1JZX1VOU1BFQ0lGSUVEEAASGwoXTUFURVJJQUxfQ0FURUdPUllfTUVUQUwQARIdChlNQVRFUklBTF9DQVRFR09SWV9QT0xZTUVSEAISHwobTUFURVJJQUxfQ0FURUdPUllfRUxBU1RPTUVSEAMSHwobTUFURVJJQUxfQ0FURUdPUllfQ09NUE9TSVRFEAQSHQoZTUFURVJJQUxfQ0FURUdPUllfQ0VSQU1JQxAFEhsKF01BVEVSSUFMX0NBVEVHT1JZX0dMQVNTEAYSGgoWTUFURVJJQUxfQ0FURUdPUllfV09PRBAHEhoKFk1BVEVSSUFMX0NBVEVHT1JZX0ZPQU0QCBIrCidNQVRFUklBTF9DQVRFR09SWV9FTEVDVFJPTklDU19TVUJTVFJBVEUQCRIeChpNQVRFUklBTF9DQVRFR09SWV9DSEVNSUNBTBAKEhsKF01BVEVSSUFMX0NBVEVHT1JZX09USEVSEGNCsgEKDmNvbS5wcm9kdWN0LnYxQhNQYXJ0RGVmaW5pdGlvblByb3RvUAFaOWdpdGh1Yi5jb20vY29ib3Rhci9wcm90b2NvbC9tZXNzYWdlcy9wcm9kdWN0L3YxO3Byb2R1Y3R2MaICA1BYWKoCE01lc3NhZ2VzLlByb2R1Y3QuVjHKAgpQcm9kdWN0XFYx4gIWUHJvZHVjdFxWMVxHUEJNZXRhZGF0YeoCC1Byb2R1Y3Q6OlYxYgZwcm90bzM", [file_buf_validate_validate, file_common_v1_custom_properties, file_common_v1_external_references, file_common_v1_key_value_constraint, file_validation_v1_predefined_string_rules]);
22
22
 
23
23
  /**
24
24
  * @generated from message product.v1.Dimensions
@@ -136,17 +136,27 @@ export type PartHandlingProfile = Message<"product.v1.PartHandlingProfile"> & {
136
136
  requiresWiping: boolean;
137
137
 
138
138
  /**
139
- * @generated from field: double max_grip_force_n = 8;
139
+ * @generated from field: bool inspect_before_assemble = 8;
140
+ */
141
+ inspectBeforeAssemble: boolean;
142
+
143
+ /**
144
+ * @generated from field: bool inspect_after_disassemble = 9;
145
+ */
146
+ inspectAfterDisassemble: boolean;
147
+
148
+ /**
149
+ * @generated from field: double max_grip_force_n = 10;
140
150
  */
141
151
  maxGripForceN: number;
142
152
 
143
153
  /**
144
- * @generated from field: double max_torque_nm = 9;
154
+ * @generated from field: double max_torque_nm = 11;
145
155
  */
146
156
  maxTorqueNm: number;
147
157
 
148
158
  /**
149
- * @generated from field: repeated common.v1.KeyValueConstraint constraints = 10;
159
+ * @generated from field: repeated common.v1.KeyValueConstraint constraints = 12;
150
160
  */
151
161
  constraints: KeyValueConstraint[];
152
162
  };
@@ -11,7 +11,7 @@ import { file_buf_validate_validate } from "../../buf/validate/validate_pb.ts";
11
11
  * Describes the file validation/v1/predefined_string_rules.proto.
12
12
  */
13
13
  export const file_validation_v1_predefined_string_rules: GenFile = /*@__PURE__*/
14
- fileDesc("Cit2YWxpZGF0aW9uL3YxL3ByZWRlZmluZWRfc3RyaW5nX3J1bGVzLnByb3RvEg12YWxpZGF0aW9uLnYxOrEBCg5uYW1lX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxiQTiABKAhCbsJIawppChVzdHJpbmcubmFtZV9jb21wb25lbnQSKk5hbWUgbXVzdCBoYXZlIGJldHdlZW4gMSBhbmQgNjQgY2hhcmFjdGVycxokdGhpcy5zaXplKCkgPiAwICYmIHRoaXMuc2l6ZSgpIDw9IDY0Ug1uYW1lQ29tcG9uZW50OroBChJtb2RlbF9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYkU4gASgIQnDCSG0KawoZc3RyaW5nLm1vZGVsX2lkX2NvbXBvbmVudBIjdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgbW9kZWwgaWQaKSh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgnbW9kZWwtJykpUhBtb2RlbElkQ29tcG9uZW50OswBChZhcl9jb25maWdfaWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGJJOIAEoCEJ7wkh4CnYKHXN0cmluZy5hcl9jb25maWdfaWRfY29tcG9uZW50EiZ0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBBUkNvbmZpZyBpZBotKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdhcl9jb25maWctJykpUhNhckNvbmZpZ0lkQ29tcG9uZW50OskBChVwcm9wZXJ0eV9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYk04gASgIQnnCSHYKdAocc3RyaW5nLnByb3BlcnR5X2lkX2NvbXBvbmVudBImdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgcHJvcGVydHkgaWQaLCh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgncHJvcGVydHktJykpUhNwcm9wZXJ0eUlkQ29tcG9uZW50OvMBCh1yb2JvdF9kZWZpbml0aW9uX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxiUTiABKAhCkwHCSI8BCowBCiRzdHJpbmcucm9ib3RfZGVmaW5pdGlvbl9pZF9jb21wb25lbnQSLnRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHJvYm90IGRlZmluaXRpb24gaWQaNCh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgncm9ib3RfZGVmaW5pdGlvbi0nKSlSGnJvYm90RGVmaW5pdGlvbklkQ29tcG9uZW50OukBChtyb2JvdF9pbnN0YW5jZV9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYlU4gASgIQo0BwkiJAQqGAQoic3RyaW5nLnJvYm90X2luc3RhbmNlX2lkX2NvbXBvbmVudBIsdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgcm9ib3QgaW5zdGFuY2UgaWQaMih0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgncm9ib3RfaW5zdGFuY2UtJykpUhhyb2JvdEluc3RhbmNlSWRDb21wb25lbnQ68wEKHWFzc2V0X2RlZmluaXRpb25faWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGJZOIAEoCEKTAcJIjwEKjAEKJHN0cmluZy5hc3NldF9kZWZpbml0aW9uX2lkX2NvbXBvbmVudBIudGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgYXNzZXQgZGVmaW5pdGlvbiBpZBo0KHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdhc3NldF9kZWZpbml0aW9uLScpKVIaYXNzZXREZWZpbml0aW9uSWRDb21wb25lbnQ66QEKG2Fzc2V0X2luc3RhbmNlX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxiXTiABKAhCjQHCSIkBCoYBCiJzdHJpbmcuYXNzZXRfaW5zdGFuY2VfaWRfY29tcG9uZW50Eix0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBhc3NldCBpbnN0YW5jZSBpZBoyKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdhc3NldF9pbnN0YW5jZS0nKSlSGGFzc2V0SW5zdGFuY2VJZENvbXBvbmVudDrZAQoYZW52aXJvbm1lbnRfaWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGJhOIAEoCEKCAcJIfwp9Ch9zdHJpbmcuZW52aXJvbm1lbnRfaWRfY29tcG9uZW50Eil0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBlbnZpcm9ubWVudCBpZBovKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdlbnZpcm9ubWVudC0nKSlSFmVudmlyb25tZW50SWRDb21wb25lbnQ67gEKHHBhcnRfZGVmaW5pdGlvbl9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYmU4gASgIQpABwkiMAQqJAQojc3RyaW5nLnBhcnRfZGVmaW5pdGlvbl9pZF9jb21wb25lbnQSLXRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHBhcnQgZGVmaW5pdGlvbiBpZBozKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdwYXJ0X2RlZmluaXRpb24tJykpUhlwYXJ0RGVmaW5pdGlvbklkQ29tcG9uZW50OuQBChpwYXJ0X2luc3RhbmNlX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxiaTiABKAhCigHCSIYBCoMBCiFzdHJpbmcucGFydF9pbnN0YW5jZV9pZF9jb21wb25lbnQSK3RoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHBhcnQgaW5zdGFuY2UgaWQaMSh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgncGFydF9pbnN0YW5jZS0nKSlSF3BhcnRJbnN0YW5jZUlkQ29tcG9uZW50Ou4BChx0b29sX2RlZmluaXRpb25faWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGJtOIAEoCEKQAcJIjAEKiQEKI3N0cmluZy50b29sX2RlZmluaXRpb25faWRfY29tcG9uZW50Ei10aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSB0b29sIGRlZmluaXRpb24gaWQaMyh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgndG9vbF9kZWZpbml0aW9uLScpKVIZdG9vbERlZmluaXRpb25JZENvbXBvbmVudDrPAQoadG9vbF9pbnN0YW5jZV9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYnE4gASgIQnbCSHMKcQoYc3RyaW5nLnRvb2xfaWRfY29tcG9uZW50EiJ0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSB0b29sIGlkGjEodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ3Rvb2xfaW5zdGFuY2UtJykpUhd0b29sSW5zdGFuY2VJZENvbXBvbmVudDq/AQoTbWFya2VyX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxidTiABKAhCc8JIcApuChpzdHJpbmcubWFya2VyX2lkX2NvbXBvbmVudBIkdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgbWFya2VyIGlkGioodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ21hcmtlci0nKSlSEW1hcmtlcklkQ29tcG9uZW50OsQBChRmaXh0dXJlX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxieTiABKAhCdsJIcwpxChtzdHJpbmcuZml4dHVyZV9pZF9jb21wb25lbnQSJXRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIGZpeHR1cmUgaWQaKyh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgnZml4dHVyZS0nKSlSEmZpeHR1cmVJZENvbXBvbmVudDrEAQoUc3RhdGlvbl9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYn04gASgIQnbCSHMKcQobc3RyaW5nLnN0YXRpb25faWRfY29tcG9uZW50EiV0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBzdGF0aW9uIGlkGisodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ3N0YXRpb24tJykpUhJzdGF0aW9uSWRDb21wb25lbnQ6ugEKEnNraWxsX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxigTiABKAhCcMJIbQprChlzdHJpbmcuc2tpbGxfaWRfY29tcG9uZW50EiN0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBza2lsbCBpZBopKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdza2lsbC0nKSlSEHNraWxsSWRDb21wb25lbnQ62AEKGHByb2Nlc3NfcnVuX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxihTiABKAhCggHCSH8KfQofc3RyaW5nLnByb2Nlc3NfcnVuX2lkX2NvbXBvbmVudBIpdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgcHJvY2VzcyBydW4gaWQaLyh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgncHJvY2Vzc19ydW4tJykpUhVwcm9jZXNzUnVuSWRDb21wb25lbnQ63wEKGXNlcXVlbmNlX3J1bl9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYok4gASgIQocBwkiDAQqAAQogc3RyaW5nLnNlcXVlbmNlX3J1bl9pZF9jb21wb25lbnQSKnRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHNlcXVlbmNlIHJ1biBpZBowKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdzZXF1ZW5jZV9ydW4tJykpUhZzZXF1ZW5jZVJ1bklkQ29tcG9uZW50OsgBChV0YXNrX3J1bl9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYo04gASgIQnnCSHYKdAocc3RyaW5nLnRhc2tfcnVuX2lkX2NvbXBvbmVudBImdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgdGFzayBydW4gaWQaLCh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgndGFza19ydW4tJykpUhJ0YXNrUnVuSWRDb21wb25lbnQ66QEKG3Byb2Nlc3NfcmVjaXBlX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxikTiABKAhCjQHCSIkBCoYBCiJzdHJpbmcucHJvY2Vzc19yZWNpcGVfaWRfY29tcG9uZW50Eix0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBwcm9jZXNzIHJlY2lwZSBpZBoyKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdwcm9jZXNzX3JlY2lwZS0nKSlSGHByb2Nlc3NSZWNpcGVJZENvbXBvbmVudDqCAgogc2VxdWVuY2VfZGVmaW5pdGlvbl9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYpU4gASgIQpwBwkiYAQqVAQonc3RyaW5nLnNlcXVlbmNlX2RlZmluaXRpb25faWRfY29tcG9uZW50EjF0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBzZXF1ZW5jZSBkZWZpbml0aW9uIGlkGjcodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ3NlcXVlbmNlX2RlZmluaXRpb24tJykpUh1zZXF1ZW5jZURlZmluaXRpb25JZENvbXBvbmVudDruAQocdGFza19kZWZpbml0aW9uX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcximTiABKAhCkAHCSIwBCokBCiNzdHJpbmcudGFza19kZWZpbml0aW9uX2lkX2NvbXBvbmVudBItdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgdGFzayBkZWZpbml0aW9uIGlkGjModGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ3Rhc2tfZGVmaW5pdGlvbi0nKSlSGXRhc2tEZWZpbml0aW9uSWRDb21wb25lbnQ6tQEKEWNlbGxfaWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGKdOIAEoCEJtwkhqCmgKGHN0cmluZy5jZWxsX2lkX2NvbXBvbmVudBIidGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgY2VsbCBpZBooKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdjZWxsLScpKVIPY2VsbElkQ29tcG9uZW50OrUBChFsaW5lX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxioTiABKAhCbcJIagpoChhzdHJpbmcubGluZV9pZF9jb21wb25lbnQSInRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIGxpbmUgaWQaKCh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgnbGluZS0nKSlSD2xpbmVJZENvbXBvbmVudDqHAgohY29udGFpbmVyX2RlZmluaXRpb25faWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGKlOIAEoCEKfAcJImwEKmAEKKHN0cmluZy5jb250YWluZXJfZGVmaW5pdGlvbl9pZF9jb21wb25lbnQSMnRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIGNvbnRhaW5lciBkZWZpbml0aW9uIGlkGjgodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ2NvbnRhaW5lcl9kZWZpbml0aW9uLScpKVIeY29udGFpbmVyRGVmaW5pdGlvbklkQ29tcG9uZW50OvoBCh9jb250YWluZXJfaW5zdGFuY2VfaWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGLqNBiABKAhClQHCSJEBCo4BCiJzdHJpbmcucm9ib3RfaW5zdGFuY2VfaWRfY29tcG9uZW50EjB0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBjb250YWluZXIgaW5zdGFuY2UgaWQaNih0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgnY29udGFpbmVyX2luc3RhbmNlLScpKVIcY29udGFpbmVySW5zdGFuY2VJZENvbXBvbmVudDrAAQoTd29ya2VyX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxi7jQYgASgIQnPCSHAKbgoac3RyaW5nLndvcmtlcl9pZF9jb21wb25lbnQSJHRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHdvcmtlciBpZBoqKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCd3b3JrZXItJykpUhF3b3JrZXJJZENvbXBvbmVudEK1AQoRY29tLnZhbGlkYXRpb24udjFCGlByZWRlZmluZWRTdHJpbmdSdWxlc1Byb3RvUAFaP2dpdGh1Yi5jb20vY29ib3Rhci9wcm90b2NvbC9tZXNzYWdlcy92YWxpZGF0aW9uL3YxO3ZhbGlkYXRpb252MaICA1ZYWMoCDVZhbGlkYXRpb25cVjHiAhlWYWxpZGF0aW9uXFYxXEdQQk1ldGFkYXRh6gIOVmFsaWRhdGlvbjo6VjE", [file_buf_validate_validate]);
14
+ fileDesc("Cit2YWxpZGF0aW9uL3YxL3ByZWRlZmluZWRfc3RyaW5nX3J1bGVzLnByb3RvEg12YWxpZGF0aW9uLnYxOrEBCg5uYW1lX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxiQTiABKAhCbsJIawppChVzdHJpbmcubmFtZV9jb21wb25lbnQSKk5hbWUgbXVzdCBoYXZlIGJldHdlZW4gMSBhbmQgNjQgY2hhcmFjdGVycxokdGhpcy5zaXplKCkgPiAwICYmIHRoaXMuc2l6ZSgpIDw9IDY0Ug1uYW1lQ29tcG9uZW50OroBChJtb2RlbF9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYkU4gASgIQnDCSG0KawoZc3RyaW5nLm1vZGVsX2lkX2NvbXBvbmVudBIjdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgbW9kZWwgaWQaKSh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgnbW9kZWwtJykpUhBtb2RlbElkQ29tcG9uZW50OswBChZhcl9jb25maWdfaWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGJJOIAEoCEJ7wkh4CnYKHXN0cmluZy5hcl9jb25maWdfaWRfY29tcG9uZW50EiZ0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBBUkNvbmZpZyBpZBotKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdhcl9jb25maWctJykpUhNhckNvbmZpZ0lkQ29tcG9uZW50OskBChVwcm9wZXJ0eV9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYk04gASgIQnnCSHYKdAocc3RyaW5nLnByb3BlcnR5X2lkX2NvbXBvbmVudBImdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgcHJvcGVydHkgaWQaLCh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgncHJvcGVydHktJykpUhNwcm9wZXJ0eUlkQ29tcG9uZW50OvMBCh1yb2JvdF9kZWZpbml0aW9uX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxiUTiABKAhCkwHCSI8BCowBCiRzdHJpbmcucm9ib3RfZGVmaW5pdGlvbl9pZF9jb21wb25lbnQSLnRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHJvYm90IGRlZmluaXRpb24gaWQaNCh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgncm9ib3RfZGVmaW5pdGlvbi0nKSlSGnJvYm90RGVmaW5pdGlvbklkQ29tcG9uZW50OukBChtyb2JvdF9pbnN0YW5jZV9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYlU4gASgIQo0BwkiJAQqGAQoic3RyaW5nLnJvYm90X2luc3RhbmNlX2lkX2NvbXBvbmVudBIsdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgcm9ib3QgaW5zdGFuY2UgaWQaMih0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgncm9ib3RfaW5zdGFuY2UtJykpUhhyb2JvdEluc3RhbmNlSWRDb21wb25lbnQ68wEKHWFzc2V0X2RlZmluaXRpb25faWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGJZOIAEoCEKTAcJIjwEKjAEKJHN0cmluZy5hc3NldF9kZWZpbml0aW9uX2lkX2NvbXBvbmVudBIudGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgYXNzZXQgZGVmaW5pdGlvbiBpZBo0KHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdhc3NldF9kZWZpbml0aW9uLScpKVIaYXNzZXREZWZpbml0aW9uSWRDb21wb25lbnQ66QEKG2Fzc2V0X2luc3RhbmNlX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxiXTiABKAhCjQHCSIkBCoYBCiJzdHJpbmcuYXNzZXRfaW5zdGFuY2VfaWRfY29tcG9uZW50Eix0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBhc3NldCBpbnN0YW5jZSBpZBoyKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdhc3NldF9pbnN0YW5jZS0nKSlSGGFzc2V0SW5zdGFuY2VJZENvbXBvbmVudDrZAQoYZW52aXJvbm1lbnRfaWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGJhOIAEoCEKCAcJIfwp9Ch9zdHJpbmcuZW52aXJvbm1lbnRfaWRfY29tcG9uZW50Eil0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBlbnZpcm9ubWVudCBpZBovKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdlbnZpcm9ubWVudC0nKSlSFmVudmlyb25tZW50SWRDb21wb25lbnQ67gEKHHBhcnRfZGVmaW5pdGlvbl9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYmU4gASgIQpABwkiMAQqJAQojc3RyaW5nLnBhcnRfZGVmaW5pdGlvbl9pZF9jb21wb25lbnQSLXRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHBhcnQgZGVmaW5pdGlvbiBpZBozKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdwYXJ0X2RlZmluaXRpb24tJykpUhlwYXJ0RGVmaW5pdGlvbklkQ29tcG9uZW50OuQBChpwYXJ0X2luc3RhbmNlX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxiaTiABKAhCigHCSIYBCoMBCiFzdHJpbmcucGFydF9pbnN0YW5jZV9pZF9jb21wb25lbnQSK3RoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHBhcnQgaW5zdGFuY2UgaWQaMSh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgncGFydF9pbnN0YW5jZS0nKSlSF3BhcnRJbnN0YW5jZUlkQ29tcG9uZW50Ou4BChx0b29sX2RlZmluaXRpb25faWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGJtOIAEoCEKQAcJIjAEKiQEKI3N0cmluZy50b29sX2RlZmluaXRpb25faWRfY29tcG9uZW50Ei10aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSB0b29sIGRlZmluaXRpb24gaWQaMyh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgndG9vbF9kZWZpbml0aW9uLScpKVIZdG9vbERlZmluaXRpb25JZENvbXBvbmVudDrPAQoadG9vbF9pbnN0YW5jZV9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYnE4gASgIQnbCSHMKcQoYc3RyaW5nLnRvb2xfaWRfY29tcG9uZW50EiJ0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSB0b29sIGlkGjEodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ3Rvb2xfaW5zdGFuY2UtJykpUhd0b29sSW5zdGFuY2VJZENvbXBvbmVudDq/AQoTbWFya2VyX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxidTiABKAhCc8JIcApuChpzdHJpbmcubWFya2VyX2lkX2NvbXBvbmVudBIkdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgbWFya2VyIGlkGioodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ21hcmtlci0nKSlSEW1hcmtlcklkQ29tcG9uZW50OsQBChRmaXh0dXJlX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxieTiABKAhCdsJIcwpxChtzdHJpbmcuZml4dHVyZV9pZF9jb21wb25lbnQSJXRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIGZpeHR1cmUgaWQaKyh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgnZml4dHVyZS0nKSlSEmZpeHR1cmVJZENvbXBvbmVudDrEAQoUc3RhdGlvbl9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYn04gASgIQnbCSHMKcQobc3RyaW5nLnN0YXRpb25faWRfY29tcG9uZW50EiV0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBzdGF0aW9uIGlkGisodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ3N0YXRpb24tJykpUhJzdGF0aW9uSWRDb21wb25lbnQ6ugEKEnNraWxsX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxigTiABKAhCcMJIbQprChlzdHJpbmcuc2tpbGxfaWRfY29tcG9uZW50EiN0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBza2lsbCBpZBopKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdza2lsbC0nKSlSEHNraWxsSWRDb21wb25lbnQ62AEKGHByb2Nlc3NfcnVuX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxihTiABKAhCggHCSH8KfQofc3RyaW5nLnByb2Nlc3NfcnVuX2lkX2NvbXBvbmVudBIpdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgcHJvY2VzcyBydW4gaWQaLyh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgncHJvY2Vzc19ydW4tJykpUhVwcm9jZXNzUnVuSWRDb21wb25lbnQ63wEKGXNlcXVlbmNlX3J1bl9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYok4gASgIQocBwkiDAQqAAQogc3RyaW5nLnNlcXVlbmNlX3J1bl9pZF9jb21wb25lbnQSKnRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHNlcXVlbmNlIHJ1biBpZBowKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdzZXF1ZW5jZV9ydW4tJykpUhZzZXF1ZW5jZVJ1bklkQ29tcG9uZW50OsgBChV0YXNrX3J1bl9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYo04gASgIQnnCSHYKdAocc3RyaW5nLnRhc2tfcnVuX2lkX2NvbXBvbmVudBImdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgdGFzayBydW4gaWQaLCh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgndGFza19ydW4tJykpUhJ0YXNrUnVuSWRDb21wb25lbnQ66QEKG3Byb2Nlc3NfcmVjaXBlX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxikTiABKAhCjQHCSIkBCoYBCiJzdHJpbmcucHJvY2Vzc19yZWNpcGVfaWRfY29tcG9uZW50Eix0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBwcm9jZXNzIHJlY2lwZSBpZBoyKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdwcm9jZXNzX3JlY2lwZS0nKSlSGHByb2Nlc3NSZWNpcGVJZENvbXBvbmVudDqCAgogc2VxdWVuY2VfZGVmaW5pdGlvbl9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYpU4gASgIQpwBwkiYAQqVAQonc3RyaW5nLnNlcXVlbmNlX2RlZmluaXRpb25faWRfY29tcG9uZW50EjF0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBzZXF1ZW5jZSBkZWZpbml0aW9uIGlkGjcodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ3NlcXVlbmNlX2RlZmluaXRpb24tJykpUh1zZXF1ZW5jZURlZmluaXRpb25JZENvbXBvbmVudDruAQocdGFza19kZWZpbml0aW9uX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcximTiABKAhCkAHCSIwBCokBCiNzdHJpbmcudGFza19kZWZpbml0aW9uX2lkX2NvbXBvbmVudBItdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgdGFzayBkZWZpbml0aW9uIGlkGjModGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ3Rhc2tfZGVmaW5pdGlvbi0nKSlSGXRhc2tEZWZpbml0aW9uSWRDb21wb25lbnQ6tQEKEWNlbGxfaWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGKdOIAEoCEJtwkhqCmgKGHN0cmluZy5jZWxsX2lkX2NvbXBvbmVudBIidGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgY2VsbCBpZBooKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdjZWxsLScpKVIPY2VsbElkQ29tcG9uZW50OrUBChFsaW5lX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxioTiABKAhCbcJIagpoChhzdHJpbmcubGluZV9pZF9jb21wb25lbnQSInRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIGxpbmUgaWQaKCh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgnbGluZS0nKSlSD2xpbmVJZENvbXBvbmVudDqHAgohY29udGFpbmVyX2RlZmluaXRpb25faWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGKlOIAEoCEKfAcJImwEKmAEKKHN0cmluZy5jb250YWluZXJfZGVmaW5pdGlvbl9pZF9jb21wb25lbnQSMnRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIGNvbnRhaW5lciBkZWZpbml0aW9uIGlkGjgodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ2NvbnRhaW5lcl9kZWZpbml0aW9uLScpKVIeY29udGFpbmVyRGVmaW5pdGlvbklkQ29tcG9uZW50OvoBCh9jb250YWluZXJfaW5zdGFuY2VfaWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGLqNBiABKAhClQHCSJEBCo4BCiJzdHJpbmcucm9ib3RfaW5zdGFuY2VfaWRfY29tcG9uZW50EjB0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBjb250YWluZXIgaW5zdGFuY2UgaWQaNih0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgnY29udGFpbmVyX2luc3RhbmNlLScpKVIcY29udGFpbmVySW5zdGFuY2VJZENvbXBvbmVudDrAAQoTd29ya2VyX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxi7jQYgASgIQnPCSHAKbgoac3RyaW5nLndvcmtlcl9pZF9jb21wb25lbnQSJHRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHdvcmtlciBpZBoqKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCd3b3JrZXItJykpUhF3b3JrZXJJZENvbXBvbmVudDrFAQoUcHJvZHVjdF9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYvI0GIAEoCEJ2wkhzCnEKG3N0cmluZy5wcm9kdWN0X2lkX2NvbXBvbmVudBIldGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgcHJvZHVjdCBpZBorKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdwcm9kdWN0LScpKVIScHJvZHVjdElkQ29tcG9uZW50QrUBChFjb20udmFsaWRhdGlvbi52MUIaUHJlZGVmaW5lZFN0cmluZ1J1bGVzUHJvdG9QAVo/Z2l0aHViLmNvbS9jb2JvdGFyL3Byb3RvY29sL21lc3NhZ2VzL3ZhbGlkYXRpb24vdjE7dmFsaWRhdGlvbnYxogIDVlhYygINVmFsaWRhdGlvblxWMeICGVZhbGlkYXRpb25cVjFcR1BCTWV0YWRhdGHqAg5WYWxpZGF0aW9uOjpWMQ", [file_buf_validate_validate]);
15
15
 
16
16
  /**
17
17
  * @generated from extension: optional bool name_component = 10000;
@@ -181,3 +181,9 @@ export const container_instance_id_component: GenExtension<StringRules, boolean>
181
181
  export const worker_id_component: GenExtension<StringRules, boolean> = /*@__PURE__*/
182
182
  extDesc(file_validation_v1_predefined_string_rules, 27);
183
183
 
184
+ /**
185
+ * @generated from extension: optional bool product_id_component = 100028;
186
+ */
187
+ export const product_id_component: GenExtension<StringRules, boolean> = /*@__PURE__*/
188
+ extDesc(file_validation_v1_predefined_string_rules, 28);
189
+
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cobotar/protocol",
3
- "version": "0.19.15",
3
+ "version": "0.19.16",
4
4
  "description": "A collection of protobuf messages for the CobotAR-project",
5
5
  "homepage": "https://github.com/cobotar/protocol#readme",
6
6
  "files": [