@opsee/mcp-server 0.5.7 → 0.6.1

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
@@ -31,17 +31,34 @@ Ask Claude things like:
31
31
  - "What cycles are active in project 1?"
32
32
  - "Show me the docs in project 1"
33
33
 
34
- ## Available Tools (19)
34
+ ## Available Tools (36)
35
35
 
36
36
  | Tool | Description |
37
37
  |------|-------------|
38
38
  | `opsee_get_me` | Get your profile info |
39
+ | `opsee_list_users` | List company users (resolve assignee IDs) |
40
+ | `opsee_get_user` | Get user details |
39
41
  | `opsee_list_projects` | List all projects |
40
42
  | `opsee_get_project` | Get project details |
41
43
  | `opsee_list_tasks` | List tasks with filters |
42
44
  | `opsee_get_task` | Get task details |
43
45
  | `opsee_create_task` | Create a new task |
44
46
  | `opsee_update_task` | Update task fields |
47
+ | `opsee_bulk_update_tasks` | Update many tasks in one transaction |
48
+ | `opsee_list_comments` | List comments on a task |
49
+ | `opsee_add_comment` | Add a comment to a task |
50
+ | `opsee_delete_comment` | Delete a comment |
51
+ | `opsee_list_labels` | List labels in a project |
52
+ | `opsee_get_label` | Get label details |
53
+ | `opsee_create_label` | Create a label |
54
+ | `opsee_update_label` | Update a label |
55
+ | `opsee_delete_label` | Delete a label |
56
+ | `opsee_attach_label_to_task` | Attach a label to a task |
57
+ | `opsee_detach_label_from_task` | Detach a label from a task (pass TaskLabel join-row id) |
58
+ | `opsee_list_task_labels` | List labels attached to a task |
59
+ | `opsee_create_task_dependency` | Add a typed task-to-task relation (BLOCKS / BLOCKED_BY / DUPLICATES / RELATES_TO) |
60
+ | `opsee_list_task_dependencies` | List a task's dependencies (both directions) |
61
+ | `opsee_delete_task_dependency` | Delete a task dependency by ID |
45
62
  | `opsee_list_task_types` | Get task types (Bug, Feature, etc.) |
46
63
  | `opsee_list_task_priorities` | Get priority levels |
47
64
  | `opsee_list_boards` | List Kanban boards |
@@ -55,6 +72,46 @@ Ask Claude things like:
55
72
  | `opsee_create_doc_page` | Create a new doc page |
56
73
  | `opsee_list_repositories` | List connected repositories |
57
74
 
75
+ ## Task description format
76
+
77
+ The `description` field on tasks accepts and returns user-supplied text, but the Opsee backend may normalize the stored representation. The exact round-trip behavior depends on the backend version and is not yet fully documented here.
78
+
79
+ ### What's confirmed
80
+
81
+ - The MCP wrapper passes `description` to the backend unmodified. Whatever transformation happens is server-side.
82
+ - Read tools (`opsee_get_task`, `opsee_list_tasks`) return whatever the backend has stored, byte-for-byte.
83
+
84
+ ### What needs empirical verification
85
+
86
+ The following test plan, run against a live Opsee instance, captures round-trip behavior for the three common input forms. **Results have not yet been recorded here — run the test and fill in the observed strings below.**
87
+
88
+ ```text
89
+ # Plain text with separator and trailer
90
+ opsee_create_task(projectId=<P>, title="rt plain",
91
+ description="line one\nline two\n---\nLabels: x")
92
+ opsee_get_task(taskId=<id>) → record exact returned description
93
+
94
+ # Markdown with headers, list, fenced code
95
+ opsee_create_task(projectId=<P>, title="rt md",
96
+ description="# H1\n- bullet\n\n```ts\ncode\n```")
97
+ opsee_get_task(taskId=<id>) → record exact returned description
98
+
99
+ # BlockNote JSON
100
+ opsee_create_task(projectId=<P>, title="rt blocknote",
101
+ description='[{"type":"paragraph","content":[{"type":"text","text":"x"}]}]')
102
+ opsee_get_task(taskId=<id>) → record exact returned description
103
+ ```
104
+
105
+ ### Observed round-trip outcomes
106
+
107
+ | Input form | Stored form (from `opsee_get_task`) | Notes |
108
+ |---|---|---|
109
+ | Plain text | _Pending empirical verification_ | |
110
+ | Markdown | _Pending empirical verification_ | |
111
+ | BlockNote JSON | _Pending empirical verification_ | |
112
+
113
+ > If the round trip is lossy (e.g. plain text becomes BlockNote JSON on read), callers relying on byte-identical round-trip should treat `description` as backend-defined and avoid parsing trailers; use first-class fields (`opsee_attach_label_to_task`, `opsee_add_comment`, etc.) for structured metadata instead.
114
+
58
115
  ## Remote MCP Server (Recommended)
59
116
 
60
117
  The remote server runs in the cloud with OAuth 2.0 authentication - no local setup or tokens needed.
@@ -2,7 +2,7 @@
2
2
  // @generated from file api/v1/models.proto (package api.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
5
- import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
5
+ import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
6
6
  import type { Message } from "@bufbuild/protobuf";
7
7
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
8
8
  import type { VCSProvider } from "./vcs_pb";
@@ -1823,6 +1823,16 @@ export declare type Task = Message<"api.v1.Task"> & {
1823
1823
  * @generated from field: api.v1.Milestone milestone = 43;
1824
1824
  */
1825
1825
  milestone?: Milestone;
1826
+
1827
+ /**
1828
+ * @generated from field: repeated api.v1.TaskDependency task_dependencies_outgoing = 44;
1829
+ */
1830
+ taskDependenciesOutgoing: TaskDependency[];
1831
+
1832
+ /**
1833
+ * @generated from field: repeated api.v1.TaskDependency task_dependencies_incoming = 45;
1834
+ */
1835
+ taskDependenciesIncoming: TaskDependency[];
1826
1836
  };
1827
1837
 
1828
1838
  /**
@@ -3429,3 +3439,94 @@ export declare type MilestoneDocument = Message<"api.v1.MilestoneDocument"> & {
3429
3439
  */
3430
3440
  export declare const MilestoneDocumentSchema: GenMessage<MilestoneDocument>;
3431
3441
 
3442
+ /**
3443
+ * @generated from message api.v1.TaskDependency
3444
+ */
3445
+ export declare type TaskDependency = Message<"api.v1.TaskDependency"> & {
3446
+ /**
3447
+ * @generated from field: uint32 id = 1;
3448
+ */
3449
+ id: number;
3450
+
3451
+ /**
3452
+ * @generated from field: uint32 from_task_id = 2;
3453
+ */
3454
+ fromTaskId: number;
3455
+
3456
+ /**
3457
+ * @generated from field: api.v1.Task from_task = 3;
3458
+ */
3459
+ fromTask?: Task;
3460
+
3461
+ /**
3462
+ * @generated from field: uint32 to_task_id = 4;
3463
+ */
3464
+ toTaskId: number;
3465
+
3466
+ /**
3467
+ * @generated from field: api.v1.Task to_task = 5;
3468
+ */
3469
+ toTask?: Task;
3470
+
3471
+ /**
3472
+ * @generated from field: api.v1.TaskDependencyType type = 6;
3473
+ */
3474
+ type: TaskDependencyType;
3475
+
3476
+ /**
3477
+ * @generated from field: uint32 company_id = 7;
3478
+ */
3479
+ companyId: number;
3480
+
3481
+ /**
3482
+ * @generated from field: google.protobuf.Timestamp created_at = 8;
3483
+ */
3484
+ createdAt?: Timestamp;
3485
+
3486
+ /**
3487
+ * @generated from field: google.protobuf.Timestamp updated_at = 9;
3488
+ */
3489
+ updatedAt?: Timestamp;
3490
+ };
3491
+
3492
+ /**
3493
+ * Describes the message api.v1.TaskDependency.
3494
+ * Use `create(TaskDependencySchema)` to create a new message.
3495
+ */
3496
+ export declare const TaskDependencySchema: GenMessage<TaskDependency>;
3497
+
3498
+ /**
3499
+ * @generated from enum api.v1.TaskDependencyType
3500
+ */
3501
+ export enum TaskDependencyType {
3502
+ /**
3503
+ * @generated from enum value: TASK_DEPENDENCY_TYPE_UNSPECIFIED = 0;
3504
+ */
3505
+ UNSPECIFIED = 0,
3506
+
3507
+ /**
3508
+ * @generated from enum value: TASK_DEPENDENCY_TYPE_BLOCKS = 1;
3509
+ */
3510
+ BLOCKS = 1,
3511
+
3512
+ /**
3513
+ * @generated from enum value: TASK_DEPENDENCY_TYPE_BLOCKED_BY = 2;
3514
+ */
3515
+ BLOCKED_BY = 2,
3516
+
3517
+ /**
3518
+ * @generated from enum value: TASK_DEPENDENCY_TYPE_DUPLICATES = 3;
3519
+ */
3520
+ DUPLICATES = 3,
3521
+
3522
+ /**
3523
+ * @generated from enum value: TASK_DEPENDENCY_TYPE_RELATES_TO = 4;
3524
+ */
3525
+ RELATES_TO = 4,
3526
+ }
3527
+
3528
+ /**
3529
+ * Describes the enum api.v1.TaskDependencyType.
3530
+ */
3531
+ export declare const TaskDependencyTypeSchema: GenEnum<TaskDependencyType>;
3532
+
@@ -2,7 +2,7 @@
2
2
  // @generated from file api/v1/models.proto (package api.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
5
- import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
5
+ import { enumDesc, fileDesc, messageDesc, tsEnum } from "@bufbuild/protobuf/codegenv1";
6
6
  import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
7
7
  import { file_api_v1_vcs } from "./vcs_pb";
8
8
 
@@ -10,7 +10,7 @@ import { file_api_v1_vcs } from "./vcs_pb";
10
10
  * Describes the file api/v1/models.proto.
11
11
  */
12
12
  export const file_api_v1_models = /*@__PURE__*/
13
- fileDesc("ChNhcGkvdjEvbW9kZWxzLnByb3RvEgZhcGkudjEiJgoKUGVybWlzc2lvbhIKCgJpZBgBIAEoDRIMCgRuYW1lGAIgASgJImgKBFJvbGUSCgoCaWQYASABKA0SDAoEbmFtZRgCIAEoCRIdCgdwYXJlbnRzGAMgAygLMgwuYXBpLnYxLlJvbGUSJwoLcGVybWlzc2lvbnMYBCADKAsyEi5hcGkudjEuUGVybWlzc2lvbiLhAgoEVXNlchIKCgJpZBgBIAEoDRIMCgR1dWlkGDIgASgJEg0KBWVtYWlsGAIgASgJEhIKCmZpcnN0X25hbWUYAyABKAkSEQoJbGFzdF9uYW1lGAQgASgJEhEKCWZ1bGxfbmFtZRgFIAEoCRIVCg1wcm92aWRlcl9uYW1lGAYgASgJEhsKBXJvbGVzGAcgAygLMgwuYXBpLnYxLlJvbGUSJQoPZmxhdHRlbmVkX3JvbGVzGAggAygLMgwuYXBpLnYxLlJvbGUSEgoKY3JlYXRlZF9hdBgJIAEoCRISCgpjb21wYW55X2lkGAogASgNEiAKB2NvbXBhbnkYCyABKAsyDy5hcGkudjEuQ29tcGFueRINCgVwaG9uZRgMIAEoCRIYChBwaG9uZV9jb3VudHJ5X2lkGA0gASgNEhIKCmF2YXRhcl91cmwYDiABKAkSFAoMYXZhdGFyX2NvbG9yGA8gASgJItAECgdDb21wYW55EgoKAmlkGAEgASgNEgwKBHV1aWQYMiABKAkSDAoEbmFtZRgCIAEoCRIMCgRzbHVnGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESGAoLd2Vic2l0ZV91cmwYBSABKAlIAYgBARIVCghpbmR1c3RyeRgGIAEoCUgCiAEBEhEKBHNpemUYByABKAlIA4gBARIaCg1zZXR0aW5nc19qc29uGAggASgJSASIAQESEQoJaXNfYWN0aXZlGAkgASgIEhoKDWJpbGxpbmdfZW1haWwYCiABKAlIBYgBARIUCgdhZGRyZXNzGAsgASgJSAaIAQESFQoIYWRkcmVzczIYDCABKAlIB4gBARIRCgRjaXR5GA0gASgJSAiIAQESEgoFc3RhdGUYDiABKAlICYgBARIVCgh6aXBfY29kZRgPIAEoCUgKiAEBEhcKCmNvdW50cnlfaWQYECABKA1IC4gBARITCgZ0YXhfaWQYESABKAlIDIgBARIgCgdjb3VudHJ5GBIgASgLMg8uYXBpLnYxLkNvdW50cnlCDgoMX2Rlc2NyaXB0aW9uQg4KDF93ZWJzaXRlX3VybEILCglfaW5kdXN0cnlCBwoFX3NpemVCEAoOX3NldHRpbmdzX2pzb25CEAoOX2JpbGxpbmdfZW1haWxCCgoIX2FkZHJlc3NCCwoJX2FkZHJlc3MyQgcKBV9jaXR5QggKBl9zdGF0ZUILCglfemlwX2NvZGVCDQoLX2NvdW50cnlfaWRCCQoHX3RheF9pZCLkBAoMU3Vic2NyaXB0aW9uEgoKAmlkGAEgASgNEgwKBHV1aWQYMiABKAkSEgoKY29tcGFueV9pZBgCIAEoDRIaChJzdHJpcGVfY3VzdG9tZXJfaWQYAyABKAkSIwoWc3RyaXBlX3N1YnNjcmlwdGlvbl9pZBgEIAEoCUgAiAEBEg4KBnN0YXR1cxgFIAEoCRI9ChRjdXJyZW50X3BlcmlvZF9zdGFydBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI7ChJjdXJyZW50X3BlcmlvZF9lbmQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESHgoRcGF5bWVudF9tZXRob2RfaWQYCCABKA1IA4gBARInCgVpdGVtcxgJIAMoCzIYLmFwaS52MS5TdWJzY3JpcHRpb25JdGVtEi0KDnBheW1lbnRfbWV0aG9kGAogASgLMhUuYXBpLnYxLlBheW1lbnRNZXRob2QSIAoHY29tcGFueRgLIAEoCzIPLmFwaS52MS5Db21wYW55Ei4KCmNyZWF0ZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhkKF19zdHJpcGVfc3Vic2NyaXB0aW9uX2lkQhcKFV9jdXJyZW50X3BlcmlvZF9zdGFydEIVChNfY3VycmVudF9wZXJpb2RfZW5kQhQKEl9wYXltZW50X21ldGhvZF9pZCKAAgoQU3Vic2NyaXB0aW9uSXRlbRIKCgJpZBgBIAEoDRIXCg9zdWJzY3JpcHRpb25faWQYAiABKA0SFAoMcHJvZHVjdF90eXBlGAMgASgJEhAKCHF1YW50aXR5GAQgASgFEhIKCnVuaXRfcHJpY2UYBSABKAMSGAoQYmlsbGluZ19pbnRlcnZhbBgGIAEoCRIRCglpc19hY3RpdmUYByABKAgSLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAixAIKDVBheW1lbnRNZXRob2QSCgoCaWQYASABKA0SDAoEdXVpZBgyIAEoCRISCgpjb21wYW55X2lkGAIgASgNEhgKEHN0cmlwZV9tZXRob2RfaWQYAyABKAkSDAoEdHlwZRgEIAEoCRINCgVsYXN0NBgFIAEoCRINCgVicmFuZBgGIAEoCRIUCgxleHBpcnlfbW9udGgYByABKAUSEwoLZXhwaXJ5X3llYXIYCCABKAUSEgoKaXNfZGVmYXVsdBgJIAEoCBIgCgdjb21wYW55GAogASgLMg8uYXBpLnYxLkNvbXBhbnkSLgoKY3JlYXRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAioAIKDVByb2R1Y3RDb25maWcSCgoCaWQYASABKA0SFAoMcHJvZHVjdF90eXBlGAIgASgJEhUKDW1vbnRobHlfcHJpY2UYAyABKAMSFAoMeWVhcmx5X3ByaWNlGAQgASgDEhUKDWZyZWVfcXVhbnRpdHkYBSABKAUSFAoMaXNfcmVjdXJyaW5nGAYgASgIEhkKEXN0cmlwZV9tb250aGx5X2lkGAcgASgJEhgKEHN0cmlwZV95ZWFybHlfaWQYCCABKAkSLgoKY3JlYXRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAizAIKDkNvbXBhbnlDcmVkaXRzEgoKAmlkGAEgASgNEhIKCmNvbXBhbnlfaWQYAiABKA0SFQoNdG90YWxfY3JlZGl0cxgDIAEoBRIUCgx1c2VkX2NyZWRpdHMYBCABKAUSGQoRYXZhaWxhYmxlX2NyZWRpdHMYBSABKAUSOgoRbGFzdF9hbGxvY2F0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESIAoHY29tcGFueRgHIAEoCzIPLmFwaS52MS5Db21wYW55Ei4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhQKEl9sYXN0X2FsbG9jYXRlZF9hdCKjAgoRQ3JlZGl0VHJhbnNhY3Rpb24SCgoCaWQYASABKA0SEgoKY29tcGFueV9pZBgCIAEoDRIOCgZhbW91bnQYAyABKAUSDgoGcmVhc29uGAQgASgJEhgKC2VudGl0eV90eXBlGAUgASgJSACIAQESFgoJZW50aXR5X2lkGAYgASgJSAGIAQESGgoNbWV0YWRhdGFfanNvbhgHIAEoCUgCiAEBEiAKB2NvbXBhbnkYCCABKAsyDy5hcGkudjEuQ29tcGFueRIuCgpjcmVhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZW50aXR5X3R5cGVCDAoKX2VudGl0eV9pZEIQCg5fbWV0YWRhdGFfanNvbiL0AQoHUHJvamVjdBIKCgJpZBgBIAEoDRIMCgR1dWlkGDIgASgJEgwKBG5hbWUYAiABKAkSDAoEc2x1ZxgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhEKCWlzX2FjdGl2ZRgFIAEoCBIaCg1zZXR0aW5nc19qc29uGAYgASgJSAGIAQESEgoKY29tcGFueV9pZBgHIAEoDRIgCgdjb21wYW55GAggASgLMg8uYXBpLnYxLkNvbXBhbnkSEgoKc2hvcnRfbmFtZRgJIAEoCUIOCgxfZGVzY3JpcHRpb25CEAoOX3NldHRpbmdzX2pzb24ipQEKEVByb2plY3RNZW1iZXJzaGlwEgoKAmlkGAEgASgNEgwKBHJvbGUYAiABKAkSEwoLaXNfZmF2b3JpdGUYAyABKAgSEgoKcHJvamVjdF9pZBgEIAEoDRIgCgdwcm9qZWN0GAUgASgLMg8uYXBpLnYxLlByb2plY3QSDwoHdXNlcl9pZBgGIAEoDRIaCgR1c2VyGAcgASgLMgwuYXBpLnYxLlVzZXIiwgIKCERvY1NwYWNlEgoKAmlkGAEgASgNEg0KBXRpdGxlGAIgASgJEgwKBHNsdWcYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARISCgppc19kZWZhdWx0GAUgASgIEhMKC2lzX2FyY2hpdmVkGAYgASgIEhIKCnByb2plY3RfaWQYByABKA0SIAoHcHJvamVjdBgIIAEoCzIPLmFwaS52MS5Qcm9qZWN0EhoKEmNyZWF0ZWRfYnlfdXNlcl9pZBgJIAEoDRIlCg9jcmVhdGVkX2J5X3VzZXIYCiABKAsyDC5hcGkudjEuVXNlchIaChJ1cGRhdGVkX2J5X3VzZXJfaWQYCyABKA0SJQoPdXBkYXRlZF9ieV91c2VyGAwgASgLMgwuYXBpLnYxLlVzZXJCDgoMX2Rlc2NyaXB0aW9uIvsDCgdEb2NQYWdlEgoKAmlkGAEgASgNEg0KBXRpdGxlGAIgASgJEgwKBHNsdWcYAyABKAkSFwoPY3VycmVudF9jb250ZW50GAQgASgJEhQKDGNvbnRlbnRfdHlwZRgFIAEoCRIeChZjdXJyZW50X3ZlcnNpb25fbnVtYmVyGAYgASgFEg8KB2lzX3Jvb3QYByABKAgSEwoLaXNfYXJjaGl2ZWQYCCABKAgSFQoNZGlzcGxheV9vcmRlchgJIAEoBRIUCgxkb2Nfc3BhY2VfaWQYCiABKA0SIwoJZG9jX3NwYWNlGAsgASgLMhAuYXBpLnYxLkRvY1NwYWNlEhsKDnBhcmVudF9wYWdlX2lkGAwgASgNSACIAQESJAoLcGFyZW50X3BhZ2UYDSABKAsyDy5hcGkudjEuRG9jUGFnZRIkCgtjaGlsZF9wYWdlcxgOIAMoCzIPLmFwaS52MS5Eb2NQYWdlEhoKEmNyZWF0ZWRfYnlfdXNlcl9pZBgPIAEoDRIlCg9jcmVhdGVkX2J5X3VzZXIYECABKAsyDC5hcGkudjEuVXNlchIaChJ1cGRhdGVkX2J5X3VzZXJfaWQYESABKA0SJQoPdXBkYXRlZF9ieV91c2VyGBIgASgLMgwuYXBpLnYxLlVzZXJCEQoPX3BhcmVudF9wYWdlX2lkIvUCCg5Eb2NQYWdlVmVyc2lvbhIKCgJpZBgBIAEoDRIWCg52ZXJzaW9uX251bWJlchgCIAEoBRINCgV0aXRsZRgDIAEoCRIPCgdjb250ZW50GAQgASgJEhQKDGNvbnRlbnRfdHlwZRgFIAEoCRIbCg5jaGFuZ2Vfc3VtbWFyeRgGIAEoCUgAiAEBEhMKC2RvY19wYWdlX2lkGAcgASgNEiEKCGRvY19wYWdlGAggASgLMg8uYXBpLnYxLkRvY1BhZ2USGgoSY3JlYXRlZF9ieV91c2VyX2lkGAkgASgNEiUKD2NyZWF0ZWRfYnlfdXNlchgKIAEoCzIMLmFwaS52MS5Vc2VyEi4KCmNyZWF0ZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhEKD19jaGFuZ2Vfc3VtbWFyeSKQCAoOVkNTSW50ZWdyYXRpb24SCgoCaWQYASABKA0SEgoKcmVwb19vd25lchgCIAEoCRIRCglyZXBvX25hbWUYAyABKAkSFwoPdG9rZW5fZW5jcnlwdGVkGAQgASgJEhYKDmRlZmF1bHRfYnJhbmNoGAUgASgJEhsKDndlYmhvb2tfc2VjcmV0GAYgASgJSACIAQESHQoQcGVybWlzc2lvbnNfanNvbhgHIAEoCUgBiAEBEhEKCWlzX2FjdGl2ZRgIIAEoCBISCgpwcm9qZWN0X2lkGAkgASgNEiAKB3Byb2plY3QYCiABKAsyDy5hcGkudjEuUHJvamVjdBIcCg9pbnN0YWxsYXRpb25faWQYCyABKANIAogBARITCgZhcHBfaWQYDCABKAlIA4gBARIpChxpbnN0YWxsYXRpb25fdG9rZW5fZW5jcnlwdGVkGA0gASgJSASIAQESRgodaW5zdGFsbGF0aW9uX3Rva2VuX2V4cGlyZXNfYXQYDiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESGAoLb2F1dGhfc3RhdGUYDyABKAlIBogBARIYChBhdXRvX3N5bmNfaXNzdWVzGBAgASgIEhoKEmVuYWJsZV9wcl93ZWJob29rcxgRIAEoCBIlCghwcm92aWRlchgeIAEoDjITLmFwaS52MS5WQ1NQcm92aWRlchIZCgxpbnN0YW5jZV91cmwYHyABKAlIB4gBARIjChZhY2Nlc3NfdG9rZW5fZW5jcnlwdGVkGCAgASgJSAiIAQESJAoXcmVmcmVzaF90b2tlbl9lbmNyeXB0ZWQYISABKAlICYgBARI5ChB0b2tlbl9leHBpcmVzX2F0GCIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgKiAEBEhwKD2dpdGxhYl9ncm91cF9pZBgjIAEoA0gLiAEBEhsKDmdpdGxhYl91c2VyX2lkGCQgASgDSAyIAQFCEQoPX3dlYmhvb2tfc2VjcmV0QhMKEV9wZXJtaXNzaW9uc19qc29uQhIKEF9pbnN0YWxsYXRpb25faWRCCQoHX2FwcF9pZEIfCh1faW5zdGFsbGF0aW9uX3Rva2VuX2VuY3J5cHRlZEIgCh5faW5zdGFsbGF0aW9uX3Rva2VuX2V4cGlyZXNfYXRCDgoMX29hdXRoX3N0YXRlQg8KDV9pbnN0YW5jZV91cmxCGQoXX2FjY2Vzc190b2tlbl9lbmNyeXB0ZWRCGgoYX3JlZnJlc2hfdG9rZW5fZW5jcnlwdGVkQhMKEV90b2tlbl9leHBpcmVzX2F0QhIKEF9naXRsYWJfZ3JvdXBfaWRCEQoPX2dpdGxhYl91c2VyX2lkItAEChFQcm9qZWN0UmVwb3NpdG9yeRIKCgJpZBgBIAEoDRISCgpwcm9qZWN0X2lkGAIgASgNEiAKB3Byb2plY3QYAyABKAsyDy5hcGkudjEuUHJvamVjdBIaChJ2Y3NfaW50ZWdyYXRpb25faWQYBCABKA0SLwoPdmNzX2ludGVncmF0aW9uGAUgASgLMhYuYXBpLnYxLlZDU0ludGVncmF0aW9uEhUKDXJlcG9zaXRvcnlfaWQYBiABKAMSGAoQcmVwb3NpdG9yeV9vd25lchgHIAEoCRIXCg9yZXBvc2l0b3J5X25hbWUYCCABKAkSHAoUcmVwb3NpdG9yeV9mdWxsX25hbWUYCSABKAkSFgoOZGVmYXVsdF9icmFuY2gYCiABKAkSEgoKaXNfcHJpdmF0ZRgLIAEoCBIYCgtkZXNjcmlwdGlvbhgMIAEoCUgAiAEBEgsKA3VybBgNIAEoCRIRCglpc19hY3RpdmUYDiABKAgSLgoKY3JlYXRlZF9hdBgPIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgQIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGAoQYXV0b19zeW5jX2lzc3VlcxgRIAEoCBIaChJlbmFibGVfcHJfd2ViaG9va3MYEiABKAgSJQoIcHJvdmlkZXIYEyABKA4yEy5hcGkudjEuVkNTUHJvdmlkZXISEQoJY2xvbmVfdXJsGBQgASgJQg4KDF9kZXNjcmlwdGlvbiK5AQoFQm9hcmQSCgoCaWQYASABKA0SDAoEdXVpZBgyIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESFQoNZGlzcGxheV9vcmRlchgEIAEoBRIRCglpc19hY3RpdmUYBSABKAgSEgoKcHJvamVjdF9pZBgGIAEoDRIgCgdwcm9qZWN0GAcgASgLMg8uYXBpLnYxLlByb2plY3RCDgoMX2Rlc2NyaXB0aW9uIo4CCgVDeWNsZRIKCgJpZBgBIAEoDRIMCgRuYW1lGAIgASgJEhEKBGdvYWwYAyABKAlIAIgBARIuCgpzdGFydF9kYXRlGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghlbmRfZGF0ZRgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKcHJvamVjdF9pZBgGIAEoDRIgCgdwcm9qZWN0GAcgASgLMg8uYXBpLnYxLlByb2plY3QSEQoJaXNfYWN0aXZlGAggASgIEhgKC2Rlc2NyaXB0aW9uGAkgASgJSAGIAQFCBwoFX2dvYWxCDgoMX2Rlc2NyaXB0aW9uIt8BCgtCb2FyZENvbHVtbhIKCgJpZBgBIAEoDRIMCgR1dWlkGDIgASgJEgwKBG5hbWUYAiABKAkSFQoNZGlzcGxheV9vcmRlchgDIAEoBRISCgVjb2xvchgEIAEoCUgAiAEBEhwKD2xpZmVjeWNsZV9zdGF0ZRgFIAEoCUgBiAEBEhEKCWlzX2FjdGl2ZRgGIAEoCBIQCghib2FyZF9pZBgHIAEoDRIcCgVib2FyZBgIIAEoCzINLmFwaS52MS5Cb2FyZEIICgZfY29sb3JCEgoQX2xpZmVjeWNsZV9zdGF0ZSK+AQoIVGFza1R5cGUSCgoCaWQYASABKA0SDAoEbmFtZRgCIAEoCRISCgVjb2xvchgDIAEoCUgAiAEBEhEKBGljb24YBCABKAlIAYgBARISCgpwcm9qZWN0X2lkGAUgASgNEiAKB3Byb2plY3QYBiABKAsyDy5hcGkudjEuUHJvamVjdBIVCg1kaXNwbGF5X29yZGVyGAcgASgFEhEKCWlzX2FjdGl2ZRgIIAEoCEIICgZfY29sb3JCBwoFX2ljb24ingEKDFRhc2tQcmlvcml0eRIKCgJpZBgBIAEoDRIMCgRuYW1lGAIgASgJEg0KBWxldmVsGAMgASgFEhIKBWNvbG9yGAQgASgJSACIAQESEgoKcHJvamVjdF9pZBgFIAEoDRIgCgdwcm9qZWN0GAYgASgLMg8uYXBpLnYxLlByb2plY3QSEQoJaXNfYWN0aXZlGAcgASgIQggKBl9jb2xvciKjAQoFTGFiZWwSCgoCaWQYASABKA0SDAoEbmFtZRgCIAEoCRINCgVjb2xvchgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgNEiAKB3Byb2plY3QYBSABKAsyDy5hcGkudjEuUHJvamVjdBIYCgtkZXNjcmlwdGlvbhgGIAEoCUgAiAEBEhEKCWlzX2FjdGl2ZRgHIAEoCEIOCgxfZGVzY3JpcHRpb24i5QEKCUNvbXBvbmVudBIKCgJpZBgBIAEoDRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESEgoKcHJvamVjdF9pZBgEIAEoDRIgCgdwcm9qZWN0GAUgASgLMg8uYXBpLnYxLlByb2plY3QSGQoMbGVhZF91c2VyX2lkGAYgASgNSAGIAQESHwoJbGVhZF91c2VyGAcgASgLMgwuYXBpLnYxLlVzZXISEQoJaXNfYWN0aXZlGAggASgIQg4KDF9kZXNjcmlwdGlvbkIPCg1fbGVhZF91c2VyX2lkItEMCgRUYXNrEgoKAmlkGAEgASgNEgwKBHV1aWQYMiABKAkSEgoKaWRlbnRpZmllchgCIAEoCRINCgV0aXRsZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhUKDWRpc3BsYXlfb3JkZXIYBSABKAUSGQoMc3RvcnlfcG9pbnRzGAYgASgFSAGIAQESHAoPZXN0aW1hdGVkX2hvdXJzGAcgASgBSAKIAQESGQoMYWN0dWFsX2hvdXJzGAggASgBSAOIAQESLAoIZHVlX2RhdGUYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2FpX21vZGVfZW5hYmxlZBgKIAEoCBIaCg1tZXRhZGF0YV9qc29uGAsgASgJSASIAQESEAoIYm9hcmRfaWQYDCABKA0SHAoFYm9hcmQYDSABKAsyDS5hcGkudjEuQm9hcmQSFwoPYm9hcmRfY29sdW1uX2lkGA4gASgNEikKDGJvYXJkX2NvbHVtbhgPIAEoCzITLmFwaS52MS5Cb2FyZENvbHVtbhISCgpwcm9qZWN0X2lkGBAgASgNEiAKB3Byb2plY3QYESABKAsyDy5hcGkudjEuUHJvamVjdBIUCgx0YXNrX3R5cGVfaWQYEiABKA0SIwoJdGFza190eXBlGBMgASgLMhAuYXBpLnYxLlRhc2tUeXBlEhgKEHRhc2tfcHJpb3JpdHlfaWQYFCABKA0SKwoNdGFza19wcmlvcml0eRgVIAEoCzIULmFwaS52MS5UYXNrUHJpb3JpdHkSGAoQcmVwb3J0ZXJfdXNlcl9pZBgWIAEoDRIjCg1yZXBvcnRlcl91c2VyGBcgASgLMgwuYXBpLnYxLlVzZXISHQoQYXNzaWduZWRfdXNlcl9pZBgYIAEoDUgFiAEBEiMKDWFzc2lnbmVkX3VzZXIYGSABKAsyDC5hcGkudjEuVXNlchIbCg5wYXJlbnRfdGFza19pZBgaIAEoDUgGiAEBEiEKC3BhcmVudF90YXNrGBsgASgLMgwuYXBpLnYxLlRhc2sSEgoKY29tcGFueV9pZBgcIAEoDRIgCgdjb21wYW55GB0gASgLMg8uYXBpLnYxLkNvbXBhbnkSJgoLdGFza19sYWJlbHMYHiADKAsyES5hcGkudjEuVGFza0xhYmVsEi4KD3Rhc2tfY29tcG9uZW50cxgfIAMoCzIVLmFwaS52MS5UYXNrQ29tcG9uZW50EjIKEXRhc2tfY29udHJpYnV0b3JzGCAgAygLMhcuYXBpLnYxLlRhc2tDb250cmlidXRvchIxChF0YXNrX3JlcG9zaXRvcmllcxghIAMoCzIWLmFwaS52MS5UYXNrUmVwb3NpdG9yeRIzChJ0YXNrX3B1bGxfcmVxdWVzdHMYIiADKAsyFy5hcGkudjEuVGFza1B1bGxSZXF1ZXN0EhUKCGN5Y2xlX2lkGCMgASgNSAeIAQESHAoFY3ljbGUYJCABKAsyDS5hcGkudjEuQ3ljbGUSIgoJd29ya19sb2dzGCUgAygLMg8uYXBpLnYxLldvcmtMb2cSNAoLcmVzb2x2ZWRfYXQYJiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAiIAQESKwoOdGFza19kb2NfcGFnZXMYJyADKAsyEy5hcGkudjEuVGFza0RvY1BhZ2USLAoOdGFza19kb2N1bWVudHMYKCADKAsyFC5hcGkudjEuVGFza0RvY3VtZW50Ei4KCmNyZWF0ZWRfYXQYKSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYKiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiQKCW1pbGVzdG9uZRgrIAEoCzIRLmFwaS52MS5NaWxlc3RvbmVCDgoMX2Rlc2NyaXB0aW9uQg8KDV9zdG9yeV9wb2ludHNCEgoQX2VzdGltYXRlZF9ob3Vyc0IPCg1fYWN0dWFsX2hvdXJzQhAKDl9tZXRhZGF0YV9qc29uQhMKEV9hc3NpZ25lZF91c2VyX2lkQhEKD19wYXJlbnRfdGFza19pZEILCglfY3ljbGVfaWRCDgoMX3Jlc29sdmVkX2F0InQKCVRhc2tMYWJlbBIKCgJpZBgBIAEoDRIPCgd0YXNrX2lkGAIgASgNEhoKBHRhc2sYAyABKAsyDC5hcGkudjEuVGFzaxIQCghsYWJlbF9pZBgEIAEoDRIcCgVsYWJlbBgFIAEoCzINLmFwaS52MS5MYWJlbCKFAQoPVGFza0NvbnRyaWJ1dG9yEgoKAmlkGAEgASgNEgwKBHJvbGUYAiABKAkSDwoHdGFza19pZBgDIAEoDRIaCgR0YXNrGAQgASgLMgwuYXBpLnYxLlRhc2sSDwoHdXNlcl9pZBgFIAEoDRIaCgR1c2VyGAYgASgLMgwuYXBpLnYxLlVzZXIihAEKDVRhc2tDb21wb25lbnQSCgoCaWQYASABKA0SDwoHdGFza19pZBgCIAEoDRIaCgR0YXNrGAMgASgLMgwuYXBpLnYxLlRhc2sSFAoMY29tcG9uZW50X2lkGAQgASgNEiQKCWNvbXBvbmVudBgFIAEoCzIRLmFwaS52MS5Db21wb25lbnQi0AEKDlRhc2tSZXBvc2l0b3J5EgoKAmlkGAEgASgNEg8KB3Rhc2tfaWQYAiABKA0SGgoSdmNzX2ludGVncmF0aW9uX2lkGAQgASgNEi8KD3Zjc19pbnRlZ3JhdGlvbhgFIAEoCzIWLmFwaS52MS5WQ1NJbnRlZ3JhdGlvbhIdChVwcm9qZWN0X3JlcG9zaXRvcnlfaWQYBiABKA0SNQoScHJvamVjdF9yZXBvc2l0b3J5GAcgASgLMhkuYXBpLnYxLlByb2plY3RSZXBvc2l0b3J5InYKC1Rhc2tEb2NQYWdlEgoKAmlkGAEgASgNEg8KB3Rhc2tfaWQYAiABKA0SEwoLZG9jX3BhZ2VfaWQYAyABKA0SIQoIZG9jX3BhZ2UYBCABKAsyDy5hcGkudjEuRG9jUGFnZRISCgpjb21wYW55X2lkGAUgASgNIngKDFRhc2tEb2N1bWVudBIKCgJpZBgBIAEoDRIPCgd0YXNrX2lkGAIgASgNEhMKC2RvY3VtZW50X2lkGAMgASgNEiIKCGRvY3VtZW50GAQgASgLMhAuYXBpLnYxLkRvY3VtZW50EhIKCmNvbXBhbnlfaWQYBSABKA0i6QEKD1Rhc2tQdWxsUmVxdWVzdBIKCgJpZBgBIAEoDRIPCgd0YXNrX2lkGAIgASgNEh0KFXByb2plY3RfcmVwb3NpdG9yeV9pZBgDIAEoDRI1ChJwcm9qZWN0X3JlcG9zaXRvcnkYBCABKAsyGS5hcGkudjEuUHJvamVjdFJlcG9zaXRvcnkSEQoJcHJfbnVtYmVyGAUgASgFEg0KBXRpdGxlGAYgASgJEgsKA3VybBgHIAEoCRINCgVzdGF0ZRgIIAEoCRIlCghwcm92aWRlchgJIAEoDjITLmFwaS52MS5WQ1NQcm92aWRlciKJAwoHQ29tbWVudBIKCgJpZBgBIAEoDRIPCgdjb250ZW50GAIgASgJEhMKC2lzX2ludGVybmFsGAMgASgIEhQKB3Rhc2tfaWQYBCABKA1IAIgBARIaCgR0YXNrGAUgASgLMgwuYXBpLnYxLlRhc2sSGAoLZG9jX3BhZ2VfaWQYBiABKA1IAYgBARIhCghkb2NfcGFnZRgHIAEoCzIPLmFwaS52MS5Eb2NQYWdlEg8KB3VzZXJfaWQYCCABKA0SGgoEdXNlchgJIAEoCzIMLmFwaS52MS5Vc2VyEhIKCmNvbXBhbnlfaWQYCiABKA0SIAoHY29tcGFueRgLIAEoCzIPLmFwaS52MS5Db21wYW55Ei4KCmNyZWF0ZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF90YXNrX2lkQg4KDF9kb2NfcGFnZV9pZCL8AgoKQXR0YWNobWVudBIKCgJpZBgBIAEoDRIQCghmaWxlbmFtZRgCIAEoCRIRCglmaWxlX3NpemUYAyABKAMSEQoJbWltZV90eXBlGAQgASgJEhQKDHN0b3JhZ2VfcGF0aBgFIAEoCRIXCgpwdWJsaWNfdXJsGAYgASgJSACIAQESFAoHdGFza19pZBgHIAEoDUgBiAEBEhoKBHRhc2sYCCABKAsyDC5hcGkudjEuVGFzaxIYCgtkb2NfcGFnZV9pZBgJIAEoDUgCiAEBEiEKCGRvY19wYWdlGAogASgLMg8uYXBpLnYxLkRvY1BhZ2USDwoHdXNlcl9pZBgLIAEoDRIaCgR1c2VyGAwgASgLMgwuYXBpLnYxLlVzZXISEgoKY29tcGFueV9pZBgNIAEoDRIgCgdjb21wYW55GA4gASgLMg8uYXBpLnYxLkNvbXBhbnlCDQoLX3B1YmxpY191cmxCCgoIX3Rhc2tfaWRCDgoMX2RvY19wYWdlX2lkIlEKC0FJUnVuU3RhdHVzEgoKAmlkGAEgASgNEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24iaAoLQUlVbml0U3RhZ2USCgoCaWQYASABKA0SDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhUKDWRpc3BsYXlfb3JkZXIYBCABKAVCDgoMX2Rlc2NyaXB0aW9uIlIKDEFJVW5pdFN0YXR1cxIKCgJpZBgBIAEoDRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQFCDgoMX2Rlc2NyaXB0aW9uIlQKDkFJVW5pdENhdGVnb3J5EgoKAmlkGAEgASgNEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24i6AUKDUFJV29ya2Zsb3dSdW4SCgoCaWQYASABKA0SHQoVYWlfY3JlZGl0c191c2VkX3RvdGFsGAIgASgFEhoKDW1ldGFkYXRhX2pzb24YAyABKAlIAIgBARIPCgd0YXNrX2lkGAQgASgNEhoKBHRhc2sYBSABKAsyDC5hcGkudjEuVGFzaxIcChR0cmlnZ2VyZWRfYnlfdXNlcl9pZBgGIAEoDRInChF0cmlnZ2VyZWRfYnlfdXNlchgHIAEoCzIMLmFwaS52MS5Vc2VyEhgKEGFpX3J1bl9zdGF0dXNfaWQYCCABKA0SKgoNYWlfcnVuX3N0YXR1cxgJIAEoCzITLmFwaS52MS5BSVJ1blN0YXR1cxIdChBjdXJyZW50X3N0YWdlX2lkGAogASgNSAGIAQESKgoNY3VycmVudF9zdGFnZRgLIAEoCzITLmFwaS52MS5BSVVuaXRTdGFnZRIuCgpjcmVhdGVkX2F0GAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIMCgRuYW1lGA4gASgJEjMKCnN0YXJ0ZWRfYXQYDyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESNQoMY29tcGxldGVkX2F0GBAgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBEiIKFXJlc3RhcnRlZF9mcm9tX3J1bl9pZBgRIAEoDUgEiAEBEhoKDXNvdXJjZV9icmFuY2gYEiABKAlIBYgBAUIQCg5fbWV0YWRhdGFfanNvbkITChFfY3VycmVudF9zdGFnZV9pZEINCgtfc3RhcnRlZF9hdEIPCg1fY29tcGxldGVkX2F0QhgKFl9yZXN0YXJ0ZWRfZnJvbV9ydW5faWRCEAoOX3NvdXJjZV9icmFuY2gi+wcKDkFJV29ya2Zsb3dVbml0EgoKAmlkGAEgASgNEhYKDnNlcXVlbmNlX29yZGVyGAIgASgFEhgKEHdvcmtfZGVzY3JpcHRpb24YAyABKAkSFwoKdmNzX2JyYW5jaBgEIAEoCUgAiAEBEhcKCnZjc19wcl91cmwYBSABKAlIAYgBARIbCg5kZXBsb3ltZW50X3VybBgGIAEoCUgCiAEBEh4KEXRlc3RfcmVzdWx0c19qc29uGAcgASgJSAOIAQESFgoJZXJyb3JfbG9nGAggASgJSASIAQESFwoPYWlfY3JlZGl0c191c2VkGAkgASgFEhoKDW1ldGFkYXRhX2pzb24YCiABKAlIBYgBARIaChJhaV93b3JrZmxvd19ydW5faWQYCyABKA0SLgoPYWlfd29ya2Zsb3dfcnVuGAwgASgLMhUuYXBpLnYxLkFJV29ya2Zsb3dSdW4SDwoHdGFza19pZBgNIAEoDRIaCgR0YXNrGA4gASgLMgwuYXBpLnYxLlRhc2sSGgoSdmNzX2ludGVncmF0aW9uX2lkGA8gASgNEi8KD3Zjc19pbnRlZ3JhdGlvbhgQIAEoCzIWLmFwaS52MS5WQ1NJbnRlZ3JhdGlvbhIgChNhaV91bml0X2NhdGVnb3J5X2lkGBEgASgNSAaIAQESMAoQYWlfdW5pdF9jYXRlZ29yeRgSIAEoCzIWLmFwaS52MS5BSVVuaXRDYXRlZ29yeRIYChBhaV91bml0X3N0YWdlX2lkGBMgASgNEioKDWFpX3VuaXRfc3RhZ2UYFCABKAsyEy5hcGkudjEuQUlVbml0U3RhZ2USGQoRYWlfdW5pdF9zdGF0dXNfaWQYFSABKA0SLAoOYWlfdW5pdF9zdGF0dXMYFiABKAsyFC5hcGkudjEuQUlVbml0U3RhdHVzEh8KEmRlcGVuZHNfb25fdW5pdF9pZBgXIAEoDUgHiAEBEi8KD2RlcGVuZHNfb25fdW5pdBgYIAEoCzIWLmFwaS52MS5BSVdvcmtmbG93VW5pdBIuCgpjcmVhdGVkX2F0GBkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GBogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEINCgtfdmNzX2JyYW5jaEINCgtfdmNzX3ByX3VybEIRCg9fZGVwbG95bWVudF91cmxCFAoSX3Rlc3RfcmVzdWx0c19qc29uQgwKCl9lcnJvcl9sb2dCEAoOX21ldGFkYXRhX2pzb25CFgoUX2FpX3VuaXRfY2F0ZWdvcnlfaWRCFQoTX2RlcGVuZHNfb25fdW5pdF9pZCL/AQoLRW52aXJvbm1lbnQSCgoCaWQYASABKA0SDAoEbmFtZRgCIAEoCRIRCgR0eXBlGAMgASgJSACIAQESGgoNazhzX25hbWVzcGFjZRgEIAEoCUgBiAEBEhgKC2Jhc2VfZG9tYWluGAUgASgJSAKIAQESGgoNbWV0YWRhdGFfanNvbhgGIAEoCUgDiAEBEhIKCnByb2plY3RfaWQYByABKA0SIAoHcHJvamVjdBgIIAEoCzIPLmFwaS52MS5Qcm9qZWN0QgcKBV90eXBlQhAKDl9rOHNfbmFtZXNwYWNlQg4KDF9iYXNlX2RvbWFpbkIQCg5fbWV0YWRhdGFfanNvbiKiAgoKRGVwbG95bWVudBIKCgJpZBgBIAEoDRIOCgZzdGF0dXMYAiABKAkSEAoDdXJsGAMgASgJSACIAQESFQoIbG9nc191cmwYBCABKAlIAYgBARIaCg1tZXRhZGF0YV9qc29uGAUgASgJSAKIAQESFgoOZW52aXJvbm1lbnRfaWQYBiABKA0SKAoLZW52aXJvbm1lbnQYByABKAsyEy5hcGkudjEuRW52aXJvbm1lbnQSGgoSYWlfd29ya2Zsb3dfcnVuX2lkGAggASgNEi4KD2FpX3dvcmtmbG93X3J1bhgJIAEoCzIVLmFwaS52MS5BSVdvcmtmbG93UnVuQgYKBF91cmxCCwoJX2xvZ3NfdXJsQhAKDl9tZXRhZGF0YV9qc29uIvwBCgdUZXN0UnVuEgoKAmlkGAEgASgNEgwKBHR5cGUYAiABKAkSDgoGc3RhdHVzGAMgASgJEhYKCWZyYW1ld29yaxgEIAEoCUgAiAEBEhcKCnJlcG9ydF91cmwYBSABKAlIAYgBARIZCgxyZXN1bHRzX2pzb24YBiABKAlIAogBARIbChNhaV93b3JrZmxvd191bml0X2lkGAcgASgNEjAKEGFpX3dvcmtmbG93X3VuaXQYCCABKAsyFi5hcGkudjEuQUlXb3JrZmxvd1VuaXRCDAoKX2ZyYW1ld29ya0INCgtfcmVwb3J0X3VybEIPCg1fcmVzdWx0c19qc29uIsQCCgtBY3Rpdml0eUxvZxIKCgJpZBgBIAEoDRIOCgZhY3Rpb24YAiABKAkSEwoLZW50aXR5X3R5cGUYAyABKAkSEQoJZW50aXR5X2lkGAQgASgNEhMKC2Rlc2NyaXB0aW9uGAUgASgJEhoKDW1ldGFkYXRhX2pzb24YBiABKAlIAIgBARIXCgppcF9hZGRyZXNzGAcgASgJSAGIAQESFAoHdXNlcl9pZBgIIAEoDUgCiAEBEhoKBHVzZXIYCSABKAsyDC5hcGkudjEuVXNlchIXCgpwcm9qZWN0X2lkGAogASgNSAOIAQESIAoHcHJvamVjdBgLIAEoCzIPLmFwaS52MS5Qcm9qZWN0QhAKDl9tZXRhZGF0YV9qc29uQg0KC19pcF9hZGRyZXNzQgoKCF91c2VyX2lkQg0KC19wcm9qZWN0X2lkIocDCgxOb3RpZmljYXRpb24SCgoCaWQYASABKA0SDQoFdGl0bGUYAiABKAkSDwoHbWVzc2FnZRgDIAEoCRIZChFub3RpZmljYXRpb25fdHlwZRgEIAEoCRIYCgtlbnRpdHlfdHlwZRgFIAEoCUgAiAEBEhYKCWVudGl0eV9pZBgGIAEoDUgBiAEBEhcKCmFjdGlvbl91cmwYByABKAlIAogBARIPCgdpc19yZWFkGAggASgIEhYKDnNlbnRfdmlhX2VtYWlsGAkgASgIEhoKDW1ldGFkYXRhX2pzb24YCiABKAlIA4gBARIPCgd1c2VyX2lkGAsgASgNEhoKBHVzZXIYDCABKAsyDC5hcGkudjEuVXNlchISCgpjb21wYW55X2lkGA0gASgNEiAKB2NvbXBhbnkYDiABKAsyDy5hcGkudjEuQ29tcGFueUIOCgxfZW50aXR5X3R5cGVCDAoKX2VudGl0eV9pZEINCgtfYWN0aW9uX3VybEIQCg5fbWV0YWRhdGFfanNvbiJbCgdDb3VudHJ5EgoKAmlkGAEgASgNEgwKBG5hbWUYAiABKAkSEAoIaXNvX2NvZGUYAyABKAkSEQoJaXNvX2NvZGUyGAQgASgJEhEKCWRpYWxfY29kZRgFIAEoCSL1BAoIRG9jdW1lbnQSCgoCaWQYASABKA0SDAoEdXVpZBgyIAEoCRIQCghmaWxlbmFtZRgCIAEoCRIRCgltaW1lX3R5cGUYAyABKAkSDAoEc2l6ZRgEIAEoAxITCgtzdG9yYWdlX3VybBgFIAEoCRITCgZzaGEyNTYYBiABKAlIAIgBARIWCglkaXNrX25hbWUYByABKAlIAYgBARIRCgRraW5kGAggASgJSAKIAQESEQoJaXNfZm9sZGVyGAkgASgIEhYKCWZ1bGxfcGF0aBgKIAEoCUgDiAEBEh0KEHBhcmVudF9mb2xkZXJfaWQYCyABKA1IBIgBARInCg1wYXJlbnRfZm9sZGVyGAwgASgLMhAuYXBpLnYxLkRvY3VtZW50EhIKCnByb2plY3RfaWQYDSABKA0SIAoHcHJvamVjdBgOIAEoCzIPLmFwaS52MS5Qcm9qZWN0EhIKCmNvbXBhbnlfaWQYDyABKA0SIAoHY29tcGFueRgQIAEoCzIPLmFwaS52MS5Db21wYW55EhsKE3VwbG9hZGVkX2J5X3VzZXJfaWQYESABKA0SJgoQdXBsb2FkZWRfYnlfdXNlchgSIAEoCzIMLmFwaS52MS5Vc2VyEi4KCmNyZWF0ZWRfYXQYEyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYFCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgkKB19zaGEyNTZCDAoKX2Rpc2tfbmFtZUIHCgVfa2luZEIMCgpfZnVsbF9wYXRoQhMKEV9wYXJlbnRfZm9sZGVyX2lkIt0BCgxEb2N1bWVudExpbmsSCgoCaWQYASABKA0SEQoJbGlua19raW5kGAIgASgJEg8KB2xpbmtfaWQYAyABKA0SEwoLZG9jdW1lbnRfaWQYBCABKA0SIgoIZG9jdW1lbnQYBSABKAsyEC5hcGkudjEuRG9jdW1lbnQSEgoKY29tcGFueV9pZBgGIAEoDRIgCgdjb21wYW55GAcgASgLMg8uYXBpLnYxLkNvbXBhbnkSLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiiAIKB1dvcmtMb2cSCgoCaWQYASABKA0SDwoHdGFza19pZBgCIAEoDRIaCgR0YXNrGAMgASgLMgwuYXBpLnYxLlRhc2sSDwoHdXNlcl9pZBgEIAEoDRIaCgR1c2VyGAUgASgLMgwuYXBpLnYxLlVzZXISDQoFaG91cnMYBiABKAESGAoLZGVzY3JpcHRpb24YByABKAlIAIgBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb24ihwMKCU1pbGVzdG9uZRIKCgJpZBgBIAEoDRIMCgR1dWlkGAIgASgJEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARIzCgpzdGFydF9kYXRlGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEjEKCGVuZF9kYXRlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEg4KBnN0YXR1cxgHIAEoCRISCgpwcm9qZWN0X2lkGAggASgNEiAKB3Byb2plY3QYCSABKAsyDy5hcGkudjEuUHJvamVjdBIuCgpjcmVhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CDQoLX3N0YXJ0X2RhdGVCCwoJX2VuZF9kYXRlIpgBCg1NaWxlc3RvbmVUYXNrEgoKAmlkGAEgASgNEhQKDG1pbGVzdG9uZV9pZBgCIAEoDRIkCgltaWxlc3RvbmUYAyABKAsyES5hcGkudjEuTWlsZXN0b25lEg8KB3Rhc2tfaWQYBCABKA0SGgoEdGFzaxgFIAEoCzIMLmFwaS52MS5UYXNrEhIKCmNvbXBhbnlfaWQYBiABKA0ipgEKEE1pbGVzdG9uZURvY1BhZ2USCgoCaWQYASABKA0SFAoMbWlsZXN0b25lX2lkGAIgASgNEiQKCW1pbGVzdG9uZRgDIAEoCzIRLmFwaS52MS5NaWxlc3RvbmUSEwoLZG9jX3BhZ2VfaWQYBCABKA0SIQoIZG9jX3BhZ2UYBSABKAsyDy5hcGkudjEuRG9jUGFnZRISCgpjb21wYW55X2lkGAYgASgNIscBChNNaWxlc3RvbmVSZXBvc2l0b3J5EgoKAmlkGAEgASgNEhQKDG1pbGVzdG9uZV9pZBgCIAEoDRIkCgltaWxlc3RvbmUYAyABKAsyES5hcGkudjEuTWlsZXN0b25lEh0KFXByb2plY3RfcmVwb3NpdG9yeV9pZBgEIAEoDRI1ChJwcm9qZWN0X3JlcG9zaXRvcnkYBSABKAsyGS5hcGkudjEuUHJvamVjdFJlcG9zaXRvcnkSEgoKY29tcGFueV9pZBgGIAEoDSKoAQoRTWlsZXN0b25lRG9jdW1lbnQSCgoCaWQYASABKA0SFAoMbWlsZXN0b25lX2lkGAIgASgNEiQKCW1pbGVzdG9uZRgDIAEoCzIRLmFwaS52MS5NaWxlc3RvbmUSEwoLZG9jdW1lbnRfaWQYBCABKA0SIgoIZG9jdW1lbnQYBSABKAsyEC5hcGkudjEuRG9jdW1lbnQSEgoKY29tcGFueV9pZBgGIAEoDUJwCgpjb20uYXBpLnYxQgtNb2RlbHNQcm90b1ABWhxvcHNlZS9iYWNrZW5kL2dlbi9hcGkvdjE7Z2VuogIDQVhYqgIGQXBpLlYxygIGQXBpXFYx4gISQXBpXFYxXEdQQk1ldGFkYXRh6gIHQXBpOjpWMWIGcHJvdG8z", [file_google_protobuf_timestamp, file_api_v1_vcs]);
13
+ fileDesc("ChNhcGkvdjEvbW9kZWxzLnByb3RvEgZhcGkudjEiJgoKUGVybWlzc2lvbhIKCgJpZBgBIAEoDRIMCgRuYW1lGAIgASgJImgKBFJvbGUSCgoCaWQYASABKA0SDAoEbmFtZRgCIAEoCRIdCgdwYXJlbnRzGAMgAygLMgwuYXBpLnYxLlJvbGUSJwoLcGVybWlzc2lvbnMYBCADKAsyEi5hcGkudjEuUGVybWlzc2lvbiLhAgoEVXNlchIKCgJpZBgBIAEoDRIMCgR1dWlkGDIgASgJEg0KBWVtYWlsGAIgASgJEhIKCmZpcnN0X25hbWUYAyABKAkSEQoJbGFzdF9uYW1lGAQgASgJEhEKCWZ1bGxfbmFtZRgFIAEoCRIVCg1wcm92aWRlcl9uYW1lGAYgASgJEhsKBXJvbGVzGAcgAygLMgwuYXBpLnYxLlJvbGUSJQoPZmxhdHRlbmVkX3JvbGVzGAggAygLMgwuYXBpLnYxLlJvbGUSEgoKY3JlYXRlZF9hdBgJIAEoCRISCgpjb21wYW55X2lkGAogASgNEiAKB2NvbXBhbnkYCyABKAsyDy5hcGkudjEuQ29tcGFueRINCgVwaG9uZRgMIAEoCRIYChBwaG9uZV9jb3VudHJ5X2lkGA0gASgNEhIKCmF2YXRhcl91cmwYDiABKAkSFAoMYXZhdGFyX2NvbG9yGA8gASgJItAECgdDb21wYW55EgoKAmlkGAEgASgNEgwKBHV1aWQYMiABKAkSDAoEbmFtZRgCIAEoCRIMCgRzbHVnGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESGAoLd2Vic2l0ZV91cmwYBSABKAlIAYgBARIVCghpbmR1c3RyeRgGIAEoCUgCiAEBEhEKBHNpemUYByABKAlIA4gBARIaCg1zZXR0aW5nc19qc29uGAggASgJSASIAQESEQoJaXNfYWN0aXZlGAkgASgIEhoKDWJpbGxpbmdfZW1haWwYCiABKAlIBYgBARIUCgdhZGRyZXNzGAsgASgJSAaIAQESFQoIYWRkcmVzczIYDCABKAlIB4gBARIRCgRjaXR5GA0gASgJSAiIAQESEgoFc3RhdGUYDiABKAlICYgBARIVCgh6aXBfY29kZRgPIAEoCUgKiAEBEhcKCmNvdW50cnlfaWQYECABKA1IC4gBARITCgZ0YXhfaWQYESABKAlIDIgBARIgCgdjb3VudHJ5GBIgASgLMg8uYXBpLnYxLkNvdW50cnlCDgoMX2Rlc2NyaXB0aW9uQg4KDF93ZWJzaXRlX3VybEILCglfaW5kdXN0cnlCBwoFX3NpemVCEAoOX3NldHRpbmdzX2pzb25CEAoOX2JpbGxpbmdfZW1haWxCCgoIX2FkZHJlc3NCCwoJX2FkZHJlc3MyQgcKBV9jaXR5QggKBl9zdGF0ZUILCglfemlwX2NvZGVCDQoLX2NvdW50cnlfaWRCCQoHX3RheF9pZCLkBAoMU3Vic2NyaXB0aW9uEgoKAmlkGAEgASgNEgwKBHV1aWQYMiABKAkSEgoKY29tcGFueV9pZBgCIAEoDRIaChJzdHJpcGVfY3VzdG9tZXJfaWQYAyABKAkSIwoWc3RyaXBlX3N1YnNjcmlwdGlvbl9pZBgEIAEoCUgAiAEBEg4KBnN0YXR1cxgFIAEoCRI9ChRjdXJyZW50X3BlcmlvZF9zdGFydBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI7ChJjdXJyZW50X3BlcmlvZF9lbmQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESHgoRcGF5bWVudF9tZXRob2RfaWQYCCABKA1IA4gBARInCgVpdGVtcxgJIAMoCzIYLmFwaS52MS5TdWJzY3JpcHRpb25JdGVtEi0KDnBheW1lbnRfbWV0aG9kGAogASgLMhUuYXBpLnYxLlBheW1lbnRNZXRob2QSIAoHY29tcGFueRgLIAEoCzIPLmFwaS52MS5Db21wYW55Ei4KCmNyZWF0ZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhkKF19zdHJpcGVfc3Vic2NyaXB0aW9uX2lkQhcKFV9jdXJyZW50X3BlcmlvZF9zdGFydEIVChNfY3VycmVudF9wZXJpb2RfZW5kQhQKEl9wYXltZW50X21ldGhvZF9pZCKAAgoQU3Vic2NyaXB0aW9uSXRlbRIKCgJpZBgBIAEoDRIXCg9zdWJzY3JpcHRpb25faWQYAiABKA0SFAoMcHJvZHVjdF90eXBlGAMgASgJEhAKCHF1YW50aXR5GAQgASgFEhIKCnVuaXRfcHJpY2UYBSABKAMSGAoQYmlsbGluZ19pbnRlcnZhbBgGIAEoCRIRCglpc19hY3RpdmUYByABKAgSLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAixAIKDVBheW1lbnRNZXRob2QSCgoCaWQYASABKA0SDAoEdXVpZBgyIAEoCRISCgpjb21wYW55X2lkGAIgASgNEhgKEHN0cmlwZV9tZXRob2RfaWQYAyABKAkSDAoEdHlwZRgEIAEoCRINCgVsYXN0NBgFIAEoCRINCgVicmFuZBgGIAEoCRIUCgxleHBpcnlfbW9udGgYByABKAUSEwoLZXhwaXJ5X3llYXIYCCABKAUSEgoKaXNfZGVmYXVsdBgJIAEoCBIgCgdjb21wYW55GAogASgLMg8uYXBpLnYxLkNvbXBhbnkSLgoKY3JlYXRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAioAIKDVByb2R1Y3RDb25maWcSCgoCaWQYASABKA0SFAoMcHJvZHVjdF90eXBlGAIgASgJEhUKDW1vbnRobHlfcHJpY2UYAyABKAMSFAoMeWVhcmx5X3ByaWNlGAQgASgDEhUKDWZyZWVfcXVhbnRpdHkYBSABKAUSFAoMaXNfcmVjdXJyaW5nGAYgASgIEhkKEXN0cmlwZV9tb250aGx5X2lkGAcgASgJEhgKEHN0cmlwZV95ZWFybHlfaWQYCCABKAkSLgoKY3JlYXRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAizAIKDkNvbXBhbnlDcmVkaXRzEgoKAmlkGAEgASgNEhIKCmNvbXBhbnlfaWQYAiABKA0SFQoNdG90YWxfY3JlZGl0cxgDIAEoBRIUCgx1c2VkX2NyZWRpdHMYBCABKAUSGQoRYXZhaWxhYmxlX2NyZWRpdHMYBSABKAUSOgoRbGFzdF9hbGxvY2F0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESIAoHY29tcGFueRgHIAEoCzIPLmFwaS52MS5Db21wYW55Ei4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhQKEl9sYXN0X2FsbG9jYXRlZF9hdCKjAgoRQ3JlZGl0VHJhbnNhY3Rpb24SCgoCaWQYASABKA0SEgoKY29tcGFueV9pZBgCIAEoDRIOCgZhbW91bnQYAyABKAUSDgoGcmVhc29uGAQgASgJEhgKC2VudGl0eV90eXBlGAUgASgJSACIAQESFgoJZW50aXR5X2lkGAYgASgJSAGIAQESGgoNbWV0YWRhdGFfanNvbhgHIAEoCUgCiAEBEiAKB2NvbXBhbnkYCCABKAsyDy5hcGkudjEuQ29tcGFueRIuCgpjcmVhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZW50aXR5X3R5cGVCDAoKX2VudGl0eV9pZEIQCg5fbWV0YWRhdGFfanNvbiL0AQoHUHJvamVjdBIKCgJpZBgBIAEoDRIMCgR1dWlkGDIgASgJEgwKBG5hbWUYAiABKAkSDAoEc2x1ZxgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhEKCWlzX2FjdGl2ZRgFIAEoCBIaCg1zZXR0aW5nc19qc29uGAYgASgJSAGIAQESEgoKY29tcGFueV9pZBgHIAEoDRIgCgdjb21wYW55GAggASgLMg8uYXBpLnYxLkNvbXBhbnkSEgoKc2hvcnRfbmFtZRgJIAEoCUIOCgxfZGVzY3JpcHRpb25CEAoOX3NldHRpbmdzX2pzb24ipQEKEVByb2plY3RNZW1iZXJzaGlwEgoKAmlkGAEgASgNEgwKBHJvbGUYAiABKAkSEwoLaXNfZmF2b3JpdGUYAyABKAgSEgoKcHJvamVjdF9pZBgEIAEoDRIgCgdwcm9qZWN0GAUgASgLMg8uYXBpLnYxLlByb2plY3QSDwoHdXNlcl9pZBgGIAEoDRIaCgR1c2VyGAcgASgLMgwuYXBpLnYxLlVzZXIiwgIKCERvY1NwYWNlEgoKAmlkGAEgASgNEg0KBXRpdGxlGAIgASgJEgwKBHNsdWcYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARISCgppc19kZWZhdWx0GAUgASgIEhMKC2lzX2FyY2hpdmVkGAYgASgIEhIKCnByb2plY3RfaWQYByABKA0SIAoHcHJvamVjdBgIIAEoCzIPLmFwaS52MS5Qcm9qZWN0EhoKEmNyZWF0ZWRfYnlfdXNlcl9pZBgJIAEoDRIlCg9jcmVhdGVkX2J5X3VzZXIYCiABKAsyDC5hcGkudjEuVXNlchIaChJ1cGRhdGVkX2J5X3VzZXJfaWQYCyABKA0SJQoPdXBkYXRlZF9ieV91c2VyGAwgASgLMgwuYXBpLnYxLlVzZXJCDgoMX2Rlc2NyaXB0aW9uIvsDCgdEb2NQYWdlEgoKAmlkGAEgASgNEg0KBXRpdGxlGAIgASgJEgwKBHNsdWcYAyABKAkSFwoPY3VycmVudF9jb250ZW50GAQgASgJEhQKDGNvbnRlbnRfdHlwZRgFIAEoCRIeChZjdXJyZW50X3ZlcnNpb25fbnVtYmVyGAYgASgFEg8KB2lzX3Jvb3QYByABKAgSEwoLaXNfYXJjaGl2ZWQYCCABKAgSFQoNZGlzcGxheV9vcmRlchgJIAEoBRIUCgxkb2Nfc3BhY2VfaWQYCiABKA0SIwoJZG9jX3NwYWNlGAsgASgLMhAuYXBpLnYxLkRvY1NwYWNlEhsKDnBhcmVudF9wYWdlX2lkGAwgASgNSACIAQESJAoLcGFyZW50X3BhZ2UYDSABKAsyDy5hcGkudjEuRG9jUGFnZRIkCgtjaGlsZF9wYWdlcxgOIAMoCzIPLmFwaS52MS5Eb2NQYWdlEhoKEmNyZWF0ZWRfYnlfdXNlcl9pZBgPIAEoDRIlCg9jcmVhdGVkX2J5X3VzZXIYECABKAsyDC5hcGkudjEuVXNlchIaChJ1cGRhdGVkX2J5X3VzZXJfaWQYESABKA0SJQoPdXBkYXRlZF9ieV91c2VyGBIgASgLMgwuYXBpLnYxLlVzZXJCEQoPX3BhcmVudF9wYWdlX2lkIvUCCg5Eb2NQYWdlVmVyc2lvbhIKCgJpZBgBIAEoDRIWCg52ZXJzaW9uX251bWJlchgCIAEoBRINCgV0aXRsZRgDIAEoCRIPCgdjb250ZW50GAQgASgJEhQKDGNvbnRlbnRfdHlwZRgFIAEoCRIbCg5jaGFuZ2Vfc3VtbWFyeRgGIAEoCUgAiAEBEhMKC2RvY19wYWdlX2lkGAcgASgNEiEKCGRvY19wYWdlGAggASgLMg8uYXBpLnYxLkRvY1BhZ2USGgoSY3JlYXRlZF9ieV91c2VyX2lkGAkgASgNEiUKD2NyZWF0ZWRfYnlfdXNlchgKIAEoCzIMLmFwaS52MS5Vc2VyEi4KCmNyZWF0ZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhEKD19jaGFuZ2Vfc3VtbWFyeSKQCAoOVkNTSW50ZWdyYXRpb24SCgoCaWQYASABKA0SEgoKcmVwb19vd25lchgCIAEoCRIRCglyZXBvX25hbWUYAyABKAkSFwoPdG9rZW5fZW5jcnlwdGVkGAQgASgJEhYKDmRlZmF1bHRfYnJhbmNoGAUgASgJEhsKDndlYmhvb2tfc2VjcmV0GAYgASgJSACIAQESHQoQcGVybWlzc2lvbnNfanNvbhgHIAEoCUgBiAEBEhEKCWlzX2FjdGl2ZRgIIAEoCBISCgpwcm9qZWN0X2lkGAkgASgNEiAKB3Byb2plY3QYCiABKAsyDy5hcGkudjEuUHJvamVjdBIcCg9pbnN0YWxsYXRpb25faWQYCyABKANIAogBARITCgZhcHBfaWQYDCABKAlIA4gBARIpChxpbnN0YWxsYXRpb25fdG9rZW5fZW5jcnlwdGVkGA0gASgJSASIAQESRgodaW5zdGFsbGF0aW9uX3Rva2VuX2V4cGlyZXNfYXQYDiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESGAoLb2F1dGhfc3RhdGUYDyABKAlIBogBARIYChBhdXRvX3N5bmNfaXNzdWVzGBAgASgIEhoKEmVuYWJsZV9wcl93ZWJob29rcxgRIAEoCBIlCghwcm92aWRlchgeIAEoDjITLmFwaS52MS5WQ1NQcm92aWRlchIZCgxpbnN0YW5jZV91cmwYHyABKAlIB4gBARIjChZhY2Nlc3NfdG9rZW5fZW5jcnlwdGVkGCAgASgJSAiIAQESJAoXcmVmcmVzaF90b2tlbl9lbmNyeXB0ZWQYISABKAlICYgBARI5ChB0b2tlbl9leHBpcmVzX2F0GCIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgKiAEBEhwKD2dpdGxhYl9ncm91cF9pZBgjIAEoA0gLiAEBEhsKDmdpdGxhYl91c2VyX2lkGCQgASgDSAyIAQFCEQoPX3dlYmhvb2tfc2VjcmV0QhMKEV9wZXJtaXNzaW9uc19qc29uQhIKEF9pbnN0YWxsYXRpb25faWRCCQoHX2FwcF9pZEIfCh1faW5zdGFsbGF0aW9uX3Rva2VuX2VuY3J5cHRlZEIgCh5faW5zdGFsbGF0aW9uX3Rva2VuX2V4cGlyZXNfYXRCDgoMX29hdXRoX3N0YXRlQg8KDV9pbnN0YW5jZV91cmxCGQoXX2FjY2Vzc190b2tlbl9lbmNyeXB0ZWRCGgoYX3JlZnJlc2hfdG9rZW5fZW5jcnlwdGVkQhMKEV90b2tlbl9leHBpcmVzX2F0QhIKEF9naXRsYWJfZ3JvdXBfaWRCEQoPX2dpdGxhYl91c2VyX2lkItAEChFQcm9qZWN0UmVwb3NpdG9yeRIKCgJpZBgBIAEoDRISCgpwcm9qZWN0X2lkGAIgASgNEiAKB3Byb2plY3QYAyABKAsyDy5hcGkudjEuUHJvamVjdBIaChJ2Y3NfaW50ZWdyYXRpb25faWQYBCABKA0SLwoPdmNzX2ludGVncmF0aW9uGAUgASgLMhYuYXBpLnYxLlZDU0ludGVncmF0aW9uEhUKDXJlcG9zaXRvcnlfaWQYBiABKAMSGAoQcmVwb3NpdG9yeV9vd25lchgHIAEoCRIXCg9yZXBvc2l0b3J5X25hbWUYCCABKAkSHAoUcmVwb3NpdG9yeV9mdWxsX25hbWUYCSABKAkSFgoOZGVmYXVsdF9icmFuY2gYCiABKAkSEgoKaXNfcHJpdmF0ZRgLIAEoCBIYCgtkZXNjcmlwdGlvbhgMIAEoCUgAiAEBEgsKA3VybBgNIAEoCRIRCglpc19hY3RpdmUYDiABKAgSLgoKY3JlYXRlZF9hdBgPIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgQIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGAoQYXV0b19zeW5jX2lzc3VlcxgRIAEoCBIaChJlbmFibGVfcHJfd2ViaG9va3MYEiABKAgSJQoIcHJvdmlkZXIYEyABKA4yEy5hcGkudjEuVkNTUHJvdmlkZXISEQoJY2xvbmVfdXJsGBQgASgJQg4KDF9kZXNjcmlwdGlvbiK5AQoFQm9hcmQSCgoCaWQYASABKA0SDAoEdXVpZBgyIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESFQoNZGlzcGxheV9vcmRlchgEIAEoBRIRCglpc19hY3RpdmUYBSABKAgSEgoKcHJvamVjdF9pZBgGIAEoDRIgCgdwcm9qZWN0GAcgASgLMg8uYXBpLnYxLlByb2plY3RCDgoMX2Rlc2NyaXB0aW9uIo4CCgVDeWNsZRIKCgJpZBgBIAEoDRIMCgRuYW1lGAIgASgJEhEKBGdvYWwYAyABKAlIAIgBARIuCgpzdGFydF9kYXRlGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghlbmRfZGF0ZRgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKcHJvamVjdF9pZBgGIAEoDRIgCgdwcm9qZWN0GAcgASgLMg8uYXBpLnYxLlByb2plY3QSEQoJaXNfYWN0aXZlGAggASgIEhgKC2Rlc2NyaXB0aW9uGAkgASgJSAGIAQFCBwoFX2dvYWxCDgoMX2Rlc2NyaXB0aW9uIt8BCgtCb2FyZENvbHVtbhIKCgJpZBgBIAEoDRIMCgR1dWlkGDIgASgJEgwKBG5hbWUYAiABKAkSFQoNZGlzcGxheV9vcmRlchgDIAEoBRISCgVjb2xvchgEIAEoCUgAiAEBEhwKD2xpZmVjeWNsZV9zdGF0ZRgFIAEoCUgBiAEBEhEKCWlzX2FjdGl2ZRgGIAEoCBIQCghib2FyZF9pZBgHIAEoDRIcCgVib2FyZBgIIAEoCzINLmFwaS52MS5Cb2FyZEIICgZfY29sb3JCEgoQX2xpZmVjeWNsZV9zdGF0ZSK+AQoIVGFza1R5cGUSCgoCaWQYASABKA0SDAoEbmFtZRgCIAEoCRISCgVjb2xvchgDIAEoCUgAiAEBEhEKBGljb24YBCABKAlIAYgBARISCgpwcm9qZWN0X2lkGAUgASgNEiAKB3Byb2plY3QYBiABKAsyDy5hcGkudjEuUHJvamVjdBIVCg1kaXNwbGF5X29yZGVyGAcgASgFEhEKCWlzX2FjdGl2ZRgIIAEoCEIICgZfY29sb3JCBwoFX2ljb24ingEKDFRhc2tQcmlvcml0eRIKCgJpZBgBIAEoDRIMCgRuYW1lGAIgASgJEg0KBWxldmVsGAMgASgFEhIKBWNvbG9yGAQgASgJSACIAQESEgoKcHJvamVjdF9pZBgFIAEoDRIgCgdwcm9qZWN0GAYgASgLMg8uYXBpLnYxLlByb2plY3QSEQoJaXNfYWN0aXZlGAcgASgIQggKBl9jb2xvciKjAQoFTGFiZWwSCgoCaWQYASABKA0SDAoEbmFtZRgCIAEoCRINCgVjb2xvchgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgNEiAKB3Byb2plY3QYBSABKAsyDy5hcGkudjEuUHJvamVjdBIYCgtkZXNjcmlwdGlvbhgGIAEoCUgAiAEBEhEKCWlzX2FjdGl2ZRgHIAEoCEIOCgxfZGVzY3JpcHRpb24i5QEKCUNvbXBvbmVudBIKCgJpZBgBIAEoDRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESEgoKcHJvamVjdF9pZBgEIAEoDRIgCgdwcm9qZWN0GAUgASgLMg8uYXBpLnYxLlByb2plY3QSGQoMbGVhZF91c2VyX2lkGAYgASgNSAGIAQESHwoJbGVhZF91c2VyGAcgASgLMgwuYXBpLnYxLlVzZXISEQoJaXNfYWN0aXZlGAggASgIQg4KDF9kZXNjcmlwdGlvbkIPCg1fbGVhZF91c2VyX2lkIskNCgRUYXNrEgoKAmlkGAEgASgNEgwKBHV1aWQYMiABKAkSEgoKaWRlbnRpZmllchgCIAEoCRINCgV0aXRsZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhUKDWRpc3BsYXlfb3JkZXIYBSABKAUSGQoMc3RvcnlfcG9pbnRzGAYgASgFSAGIAQESHAoPZXN0aW1hdGVkX2hvdXJzGAcgASgBSAKIAQESGQoMYWN0dWFsX2hvdXJzGAggASgBSAOIAQESLAoIZHVlX2RhdGUYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2FpX21vZGVfZW5hYmxlZBgKIAEoCBIaCg1tZXRhZGF0YV9qc29uGAsgASgJSASIAQESEAoIYm9hcmRfaWQYDCABKA0SHAoFYm9hcmQYDSABKAsyDS5hcGkudjEuQm9hcmQSFwoPYm9hcmRfY29sdW1uX2lkGA4gASgNEikKDGJvYXJkX2NvbHVtbhgPIAEoCzITLmFwaS52MS5Cb2FyZENvbHVtbhISCgpwcm9qZWN0X2lkGBAgASgNEiAKB3Byb2plY3QYESABKAsyDy5hcGkudjEuUHJvamVjdBIUCgx0YXNrX3R5cGVfaWQYEiABKA0SIwoJdGFza190eXBlGBMgASgLMhAuYXBpLnYxLlRhc2tUeXBlEhgKEHRhc2tfcHJpb3JpdHlfaWQYFCABKA0SKwoNdGFza19wcmlvcml0eRgVIAEoCzIULmFwaS52MS5UYXNrUHJpb3JpdHkSGAoQcmVwb3J0ZXJfdXNlcl9pZBgWIAEoDRIjCg1yZXBvcnRlcl91c2VyGBcgASgLMgwuYXBpLnYxLlVzZXISHQoQYXNzaWduZWRfdXNlcl9pZBgYIAEoDUgFiAEBEiMKDWFzc2lnbmVkX3VzZXIYGSABKAsyDC5hcGkudjEuVXNlchIbCg5wYXJlbnRfdGFza19pZBgaIAEoDUgGiAEBEiEKC3BhcmVudF90YXNrGBsgASgLMgwuYXBpLnYxLlRhc2sSEgoKY29tcGFueV9pZBgcIAEoDRIgCgdjb21wYW55GB0gASgLMg8uYXBpLnYxLkNvbXBhbnkSJgoLdGFza19sYWJlbHMYHiADKAsyES5hcGkudjEuVGFza0xhYmVsEi4KD3Rhc2tfY29tcG9uZW50cxgfIAMoCzIVLmFwaS52MS5UYXNrQ29tcG9uZW50EjIKEXRhc2tfY29udHJpYnV0b3JzGCAgAygLMhcuYXBpLnYxLlRhc2tDb250cmlidXRvchIxChF0YXNrX3JlcG9zaXRvcmllcxghIAMoCzIWLmFwaS52MS5UYXNrUmVwb3NpdG9yeRIzChJ0YXNrX3B1bGxfcmVxdWVzdHMYIiADKAsyFy5hcGkudjEuVGFza1B1bGxSZXF1ZXN0EhUKCGN5Y2xlX2lkGCMgASgNSAeIAQESHAoFY3ljbGUYJCABKAsyDS5hcGkudjEuQ3ljbGUSIgoJd29ya19sb2dzGCUgAygLMg8uYXBpLnYxLldvcmtMb2cSNAoLcmVzb2x2ZWRfYXQYJiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAiIAQESKwoOdGFza19kb2NfcGFnZXMYJyADKAsyEy5hcGkudjEuVGFza0RvY1BhZ2USLAoOdGFza19kb2N1bWVudHMYKCADKAsyFC5hcGkudjEuVGFza0RvY3VtZW50Ei4KCmNyZWF0ZWRfYXQYKSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYKiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiQKCW1pbGVzdG9uZRgrIAEoCzIRLmFwaS52MS5NaWxlc3RvbmUSOgoadGFza19kZXBlbmRlbmNpZXNfb3V0Z29pbmcYLCADKAsyFi5hcGkudjEuVGFza0RlcGVuZGVuY3kSOgoadGFza19kZXBlbmRlbmNpZXNfaW5jb21pbmcYLSADKAsyFi5hcGkudjEuVGFza0RlcGVuZGVuY3lCDgoMX2Rlc2NyaXB0aW9uQg8KDV9zdG9yeV9wb2ludHNCEgoQX2VzdGltYXRlZF9ob3Vyc0IPCg1fYWN0dWFsX2hvdXJzQhAKDl9tZXRhZGF0YV9qc29uQhMKEV9hc3NpZ25lZF91c2VyX2lkQhEKD19wYXJlbnRfdGFza19pZEILCglfY3ljbGVfaWRCDgoMX3Jlc29sdmVkX2F0InQKCVRhc2tMYWJlbBIKCgJpZBgBIAEoDRIPCgd0YXNrX2lkGAIgASgNEhoKBHRhc2sYAyABKAsyDC5hcGkudjEuVGFzaxIQCghsYWJlbF9pZBgEIAEoDRIcCgVsYWJlbBgFIAEoCzINLmFwaS52MS5MYWJlbCKFAQoPVGFza0NvbnRyaWJ1dG9yEgoKAmlkGAEgASgNEgwKBHJvbGUYAiABKAkSDwoHdGFza19pZBgDIAEoDRIaCgR0YXNrGAQgASgLMgwuYXBpLnYxLlRhc2sSDwoHdXNlcl9pZBgFIAEoDRIaCgR1c2VyGAYgASgLMgwuYXBpLnYxLlVzZXIihAEKDVRhc2tDb21wb25lbnQSCgoCaWQYASABKA0SDwoHdGFza19pZBgCIAEoDRIaCgR0YXNrGAMgASgLMgwuYXBpLnYxLlRhc2sSFAoMY29tcG9uZW50X2lkGAQgASgNEiQKCWNvbXBvbmVudBgFIAEoCzIRLmFwaS52MS5Db21wb25lbnQi0AEKDlRhc2tSZXBvc2l0b3J5EgoKAmlkGAEgASgNEg8KB3Rhc2tfaWQYAiABKA0SGgoSdmNzX2ludGVncmF0aW9uX2lkGAQgASgNEi8KD3Zjc19pbnRlZ3JhdGlvbhgFIAEoCzIWLmFwaS52MS5WQ1NJbnRlZ3JhdGlvbhIdChVwcm9qZWN0X3JlcG9zaXRvcnlfaWQYBiABKA0SNQoScHJvamVjdF9yZXBvc2l0b3J5GAcgASgLMhkuYXBpLnYxLlByb2plY3RSZXBvc2l0b3J5InYKC1Rhc2tEb2NQYWdlEgoKAmlkGAEgASgNEg8KB3Rhc2tfaWQYAiABKA0SEwoLZG9jX3BhZ2VfaWQYAyABKA0SIQoIZG9jX3BhZ2UYBCABKAsyDy5hcGkudjEuRG9jUGFnZRISCgpjb21wYW55X2lkGAUgASgNIngKDFRhc2tEb2N1bWVudBIKCgJpZBgBIAEoDRIPCgd0YXNrX2lkGAIgASgNEhMKC2RvY3VtZW50X2lkGAMgASgNEiIKCGRvY3VtZW50GAQgASgLMhAuYXBpLnYxLkRvY3VtZW50EhIKCmNvbXBhbnlfaWQYBSABKA0i6QEKD1Rhc2tQdWxsUmVxdWVzdBIKCgJpZBgBIAEoDRIPCgd0YXNrX2lkGAIgASgNEh0KFXByb2plY3RfcmVwb3NpdG9yeV9pZBgDIAEoDRI1ChJwcm9qZWN0X3JlcG9zaXRvcnkYBCABKAsyGS5hcGkudjEuUHJvamVjdFJlcG9zaXRvcnkSEQoJcHJfbnVtYmVyGAUgASgFEg0KBXRpdGxlGAYgASgJEgsKA3VybBgHIAEoCRINCgVzdGF0ZRgIIAEoCRIlCghwcm92aWRlchgJIAEoDjITLmFwaS52MS5WQ1NQcm92aWRlciKJAwoHQ29tbWVudBIKCgJpZBgBIAEoDRIPCgdjb250ZW50GAIgASgJEhMKC2lzX2ludGVybmFsGAMgASgIEhQKB3Rhc2tfaWQYBCABKA1IAIgBARIaCgR0YXNrGAUgASgLMgwuYXBpLnYxLlRhc2sSGAoLZG9jX3BhZ2VfaWQYBiABKA1IAYgBARIhCghkb2NfcGFnZRgHIAEoCzIPLmFwaS52MS5Eb2NQYWdlEg8KB3VzZXJfaWQYCCABKA0SGgoEdXNlchgJIAEoCzIMLmFwaS52MS5Vc2VyEhIKCmNvbXBhbnlfaWQYCiABKA0SIAoHY29tcGFueRgLIAEoCzIPLmFwaS52MS5Db21wYW55Ei4KCmNyZWF0ZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF90YXNrX2lkQg4KDF9kb2NfcGFnZV9pZCL8AgoKQXR0YWNobWVudBIKCgJpZBgBIAEoDRIQCghmaWxlbmFtZRgCIAEoCRIRCglmaWxlX3NpemUYAyABKAMSEQoJbWltZV90eXBlGAQgASgJEhQKDHN0b3JhZ2VfcGF0aBgFIAEoCRIXCgpwdWJsaWNfdXJsGAYgASgJSACIAQESFAoHdGFza19pZBgHIAEoDUgBiAEBEhoKBHRhc2sYCCABKAsyDC5hcGkudjEuVGFzaxIYCgtkb2NfcGFnZV9pZBgJIAEoDUgCiAEBEiEKCGRvY19wYWdlGAogASgLMg8uYXBpLnYxLkRvY1BhZ2USDwoHdXNlcl9pZBgLIAEoDRIaCgR1c2VyGAwgASgLMgwuYXBpLnYxLlVzZXISEgoKY29tcGFueV9pZBgNIAEoDRIgCgdjb21wYW55GA4gASgLMg8uYXBpLnYxLkNvbXBhbnlCDQoLX3B1YmxpY191cmxCCgoIX3Rhc2tfaWRCDgoMX2RvY19wYWdlX2lkIlEKC0FJUnVuU3RhdHVzEgoKAmlkGAEgASgNEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24iaAoLQUlVbml0U3RhZ2USCgoCaWQYASABKA0SDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhUKDWRpc3BsYXlfb3JkZXIYBCABKAVCDgoMX2Rlc2NyaXB0aW9uIlIKDEFJVW5pdFN0YXR1cxIKCgJpZBgBIAEoDRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQFCDgoMX2Rlc2NyaXB0aW9uIlQKDkFJVW5pdENhdGVnb3J5EgoKAmlkGAEgASgNEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24i6AUKDUFJV29ya2Zsb3dSdW4SCgoCaWQYASABKA0SHQoVYWlfY3JlZGl0c191c2VkX3RvdGFsGAIgASgFEhoKDW1ldGFkYXRhX2pzb24YAyABKAlIAIgBARIPCgd0YXNrX2lkGAQgASgNEhoKBHRhc2sYBSABKAsyDC5hcGkudjEuVGFzaxIcChR0cmlnZ2VyZWRfYnlfdXNlcl9pZBgGIAEoDRInChF0cmlnZ2VyZWRfYnlfdXNlchgHIAEoCzIMLmFwaS52MS5Vc2VyEhgKEGFpX3J1bl9zdGF0dXNfaWQYCCABKA0SKgoNYWlfcnVuX3N0YXR1cxgJIAEoCzITLmFwaS52MS5BSVJ1blN0YXR1cxIdChBjdXJyZW50X3N0YWdlX2lkGAogASgNSAGIAQESKgoNY3VycmVudF9zdGFnZRgLIAEoCzITLmFwaS52MS5BSVVuaXRTdGFnZRIuCgpjcmVhdGVkX2F0GAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIMCgRuYW1lGA4gASgJEjMKCnN0YXJ0ZWRfYXQYDyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESNQoMY29tcGxldGVkX2F0GBAgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBEiIKFXJlc3RhcnRlZF9mcm9tX3J1bl9pZBgRIAEoDUgEiAEBEhoKDXNvdXJjZV9icmFuY2gYEiABKAlIBYgBAUIQCg5fbWV0YWRhdGFfanNvbkITChFfY3VycmVudF9zdGFnZV9pZEINCgtfc3RhcnRlZF9hdEIPCg1fY29tcGxldGVkX2F0QhgKFl9yZXN0YXJ0ZWRfZnJvbV9ydW5faWRCEAoOX3NvdXJjZV9icmFuY2gi+wcKDkFJV29ya2Zsb3dVbml0EgoKAmlkGAEgASgNEhYKDnNlcXVlbmNlX29yZGVyGAIgASgFEhgKEHdvcmtfZGVzY3JpcHRpb24YAyABKAkSFwoKdmNzX2JyYW5jaBgEIAEoCUgAiAEBEhcKCnZjc19wcl91cmwYBSABKAlIAYgBARIbCg5kZXBsb3ltZW50X3VybBgGIAEoCUgCiAEBEh4KEXRlc3RfcmVzdWx0c19qc29uGAcgASgJSAOIAQESFgoJZXJyb3JfbG9nGAggASgJSASIAQESFwoPYWlfY3JlZGl0c191c2VkGAkgASgFEhoKDW1ldGFkYXRhX2pzb24YCiABKAlIBYgBARIaChJhaV93b3JrZmxvd19ydW5faWQYCyABKA0SLgoPYWlfd29ya2Zsb3dfcnVuGAwgASgLMhUuYXBpLnYxLkFJV29ya2Zsb3dSdW4SDwoHdGFza19pZBgNIAEoDRIaCgR0YXNrGA4gASgLMgwuYXBpLnYxLlRhc2sSGgoSdmNzX2ludGVncmF0aW9uX2lkGA8gASgNEi8KD3Zjc19pbnRlZ3JhdGlvbhgQIAEoCzIWLmFwaS52MS5WQ1NJbnRlZ3JhdGlvbhIgChNhaV91bml0X2NhdGVnb3J5X2lkGBEgASgNSAaIAQESMAoQYWlfdW5pdF9jYXRlZ29yeRgSIAEoCzIWLmFwaS52MS5BSVVuaXRDYXRlZ29yeRIYChBhaV91bml0X3N0YWdlX2lkGBMgASgNEioKDWFpX3VuaXRfc3RhZ2UYFCABKAsyEy5hcGkudjEuQUlVbml0U3RhZ2USGQoRYWlfdW5pdF9zdGF0dXNfaWQYFSABKA0SLAoOYWlfdW5pdF9zdGF0dXMYFiABKAsyFC5hcGkudjEuQUlVbml0U3RhdHVzEh8KEmRlcGVuZHNfb25fdW5pdF9pZBgXIAEoDUgHiAEBEi8KD2RlcGVuZHNfb25fdW5pdBgYIAEoCzIWLmFwaS52MS5BSVdvcmtmbG93VW5pdBIuCgpjcmVhdGVkX2F0GBkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GBogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEINCgtfdmNzX2JyYW5jaEINCgtfdmNzX3ByX3VybEIRCg9fZGVwbG95bWVudF91cmxCFAoSX3Rlc3RfcmVzdWx0c19qc29uQgwKCl9lcnJvcl9sb2dCEAoOX21ldGFkYXRhX2pzb25CFgoUX2FpX3VuaXRfY2F0ZWdvcnlfaWRCFQoTX2RlcGVuZHNfb25fdW5pdF9pZCL/AQoLRW52aXJvbm1lbnQSCgoCaWQYASABKA0SDAoEbmFtZRgCIAEoCRIRCgR0eXBlGAMgASgJSACIAQESGgoNazhzX25hbWVzcGFjZRgEIAEoCUgBiAEBEhgKC2Jhc2VfZG9tYWluGAUgASgJSAKIAQESGgoNbWV0YWRhdGFfanNvbhgGIAEoCUgDiAEBEhIKCnByb2plY3RfaWQYByABKA0SIAoHcHJvamVjdBgIIAEoCzIPLmFwaS52MS5Qcm9qZWN0QgcKBV90eXBlQhAKDl9rOHNfbmFtZXNwYWNlQg4KDF9iYXNlX2RvbWFpbkIQCg5fbWV0YWRhdGFfanNvbiKiAgoKRGVwbG95bWVudBIKCgJpZBgBIAEoDRIOCgZzdGF0dXMYAiABKAkSEAoDdXJsGAMgASgJSACIAQESFQoIbG9nc191cmwYBCABKAlIAYgBARIaCg1tZXRhZGF0YV9qc29uGAUgASgJSAKIAQESFgoOZW52aXJvbm1lbnRfaWQYBiABKA0SKAoLZW52aXJvbm1lbnQYByABKAsyEy5hcGkudjEuRW52aXJvbm1lbnQSGgoSYWlfd29ya2Zsb3dfcnVuX2lkGAggASgNEi4KD2FpX3dvcmtmbG93X3J1bhgJIAEoCzIVLmFwaS52MS5BSVdvcmtmbG93UnVuQgYKBF91cmxCCwoJX2xvZ3NfdXJsQhAKDl9tZXRhZGF0YV9qc29uIvwBCgdUZXN0UnVuEgoKAmlkGAEgASgNEgwKBHR5cGUYAiABKAkSDgoGc3RhdHVzGAMgASgJEhYKCWZyYW1ld29yaxgEIAEoCUgAiAEBEhcKCnJlcG9ydF91cmwYBSABKAlIAYgBARIZCgxyZXN1bHRzX2pzb24YBiABKAlIAogBARIbChNhaV93b3JrZmxvd191bml0X2lkGAcgASgNEjAKEGFpX3dvcmtmbG93X3VuaXQYCCABKAsyFi5hcGkudjEuQUlXb3JrZmxvd1VuaXRCDAoKX2ZyYW1ld29ya0INCgtfcmVwb3J0X3VybEIPCg1fcmVzdWx0c19qc29uIsQCCgtBY3Rpdml0eUxvZxIKCgJpZBgBIAEoDRIOCgZhY3Rpb24YAiABKAkSEwoLZW50aXR5X3R5cGUYAyABKAkSEQoJZW50aXR5X2lkGAQgASgNEhMKC2Rlc2NyaXB0aW9uGAUgASgJEhoKDW1ldGFkYXRhX2pzb24YBiABKAlIAIgBARIXCgppcF9hZGRyZXNzGAcgASgJSAGIAQESFAoHdXNlcl9pZBgIIAEoDUgCiAEBEhoKBHVzZXIYCSABKAsyDC5hcGkudjEuVXNlchIXCgpwcm9qZWN0X2lkGAogASgNSAOIAQESIAoHcHJvamVjdBgLIAEoCzIPLmFwaS52MS5Qcm9qZWN0QhAKDl9tZXRhZGF0YV9qc29uQg0KC19pcF9hZGRyZXNzQgoKCF91c2VyX2lkQg0KC19wcm9qZWN0X2lkIocDCgxOb3RpZmljYXRpb24SCgoCaWQYASABKA0SDQoFdGl0bGUYAiABKAkSDwoHbWVzc2FnZRgDIAEoCRIZChFub3RpZmljYXRpb25fdHlwZRgEIAEoCRIYCgtlbnRpdHlfdHlwZRgFIAEoCUgAiAEBEhYKCWVudGl0eV9pZBgGIAEoDUgBiAEBEhcKCmFjdGlvbl91cmwYByABKAlIAogBARIPCgdpc19yZWFkGAggASgIEhYKDnNlbnRfdmlhX2VtYWlsGAkgASgIEhoKDW1ldGFkYXRhX2pzb24YCiABKAlIA4gBARIPCgd1c2VyX2lkGAsgASgNEhoKBHVzZXIYDCABKAsyDC5hcGkudjEuVXNlchISCgpjb21wYW55X2lkGA0gASgNEiAKB2NvbXBhbnkYDiABKAsyDy5hcGkudjEuQ29tcGFueUIOCgxfZW50aXR5X3R5cGVCDAoKX2VudGl0eV9pZEINCgtfYWN0aW9uX3VybEIQCg5fbWV0YWRhdGFfanNvbiJbCgdDb3VudHJ5EgoKAmlkGAEgASgNEgwKBG5hbWUYAiABKAkSEAoIaXNvX2NvZGUYAyABKAkSEQoJaXNvX2NvZGUyGAQgASgJEhEKCWRpYWxfY29kZRgFIAEoCSL1BAoIRG9jdW1lbnQSCgoCaWQYASABKA0SDAoEdXVpZBgyIAEoCRIQCghmaWxlbmFtZRgCIAEoCRIRCgltaW1lX3R5cGUYAyABKAkSDAoEc2l6ZRgEIAEoAxITCgtzdG9yYWdlX3VybBgFIAEoCRITCgZzaGEyNTYYBiABKAlIAIgBARIWCglkaXNrX25hbWUYByABKAlIAYgBARIRCgRraW5kGAggASgJSAKIAQESEQoJaXNfZm9sZGVyGAkgASgIEhYKCWZ1bGxfcGF0aBgKIAEoCUgDiAEBEh0KEHBhcmVudF9mb2xkZXJfaWQYCyABKA1IBIgBARInCg1wYXJlbnRfZm9sZGVyGAwgASgLMhAuYXBpLnYxLkRvY3VtZW50EhIKCnByb2plY3RfaWQYDSABKA0SIAoHcHJvamVjdBgOIAEoCzIPLmFwaS52MS5Qcm9qZWN0EhIKCmNvbXBhbnlfaWQYDyABKA0SIAoHY29tcGFueRgQIAEoCzIPLmFwaS52MS5Db21wYW55EhsKE3VwbG9hZGVkX2J5X3VzZXJfaWQYESABKA0SJgoQdXBsb2FkZWRfYnlfdXNlchgSIAEoCzIMLmFwaS52MS5Vc2VyEi4KCmNyZWF0ZWRfYXQYEyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYFCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgkKB19zaGEyNTZCDAoKX2Rpc2tfbmFtZUIHCgVfa2luZEIMCgpfZnVsbF9wYXRoQhMKEV9wYXJlbnRfZm9sZGVyX2lkIt0BCgxEb2N1bWVudExpbmsSCgoCaWQYASABKA0SEQoJbGlua19raW5kGAIgASgJEg8KB2xpbmtfaWQYAyABKA0SEwoLZG9jdW1lbnRfaWQYBCABKA0SIgoIZG9jdW1lbnQYBSABKAsyEC5hcGkudjEuRG9jdW1lbnQSEgoKY29tcGFueV9pZBgGIAEoDRIgCgdjb21wYW55GAcgASgLMg8uYXBpLnYxLkNvbXBhbnkSLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiiAIKB1dvcmtMb2cSCgoCaWQYASABKA0SDwoHdGFza19pZBgCIAEoDRIaCgR0YXNrGAMgASgLMgwuYXBpLnYxLlRhc2sSDwoHdXNlcl9pZBgEIAEoDRIaCgR1c2VyGAUgASgLMgwuYXBpLnYxLlVzZXISDQoFaG91cnMYBiABKAESGAoLZGVzY3JpcHRpb24YByABKAlIAIgBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb24ihwMKCU1pbGVzdG9uZRIKCgJpZBgBIAEoDRIMCgR1dWlkGAIgASgJEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARIzCgpzdGFydF9kYXRlGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEjEKCGVuZF9kYXRlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEg4KBnN0YXR1cxgHIAEoCRISCgpwcm9qZWN0X2lkGAggASgNEiAKB3Byb2plY3QYCSABKAsyDy5hcGkudjEuUHJvamVjdBIuCgpjcmVhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CDQoLX3N0YXJ0X2RhdGVCCwoJX2VuZF9kYXRlIpgBCg1NaWxlc3RvbmVUYXNrEgoKAmlkGAEgASgNEhQKDG1pbGVzdG9uZV9pZBgCIAEoDRIkCgltaWxlc3RvbmUYAyABKAsyES5hcGkudjEuTWlsZXN0b25lEg8KB3Rhc2tfaWQYBCABKA0SGgoEdGFzaxgFIAEoCzIMLmFwaS52MS5UYXNrEhIKCmNvbXBhbnlfaWQYBiABKA0ipgEKEE1pbGVzdG9uZURvY1BhZ2USCgoCaWQYASABKA0SFAoMbWlsZXN0b25lX2lkGAIgASgNEiQKCW1pbGVzdG9uZRgDIAEoCzIRLmFwaS52MS5NaWxlc3RvbmUSEwoLZG9jX3BhZ2VfaWQYBCABKA0SIQoIZG9jX3BhZ2UYBSABKAsyDy5hcGkudjEuRG9jUGFnZRISCgpjb21wYW55X2lkGAYgASgNIscBChNNaWxlc3RvbmVSZXBvc2l0b3J5EgoKAmlkGAEgASgNEhQKDG1pbGVzdG9uZV9pZBgCIAEoDRIkCgltaWxlc3RvbmUYAyABKAsyES5hcGkudjEuTWlsZXN0b25lEh0KFXByb2plY3RfcmVwb3NpdG9yeV9pZBgEIAEoDRI1ChJwcm9qZWN0X3JlcG9zaXRvcnkYBSABKAsyGS5hcGkudjEuUHJvamVjdFJlcG9zaXRvcnkSEgoKY29tcGFueV9pZBgGIAEoDSKoAQoRTWlsZXN0b25lRG9jdW1lbnQSCgoCaWQYASABKA0SFAoMbWlsZXN0b25lX2lkGAIgASgNEiQKCW1pbGVzdG9uZRgDIAEoCzIRLmFwaS52MS5NaWxlc3RvbmUSEwoLZG9jdW1lbnRfaWQYBCABKA0SIgoIZG9jdW1lbnQYBSABKAsyEC5hcGkudjEuRG9jdW1lbnQSEgoKY29tcGFueV9pZBgGIAEoDSKkAgoOVGFza0RlcGVuZGVuY3kSCgoCaWQYASABKA0SFAoMZnJvbV90YXNrX2lkGAIgASgNEh8KCWZyb21fdGFzaxgDIAEoCzIMLmFwaS52MS5UYXNrEhIKCnRvX3Rhc2tfaWQYBCABKA0SHQoHdG9fdGFzaxgFIAEoCzIMLmFwaS52MS5UYXNrEigKBHR5cGUYBiABKA4yGi5hcGkudjEuVGFza0RlcGVuZGVuY3lUeXBlEhIKCmNvbXBhbnlfaWQYByABKA0SLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAqygEKElRhc2tEZXBlbmRlbmN5VHlwZRIkCiBUQVNLX0RFUEVOREVOQ1lfVFlQRV9VTlNQRUNJRklFRBAAEh8KG1RBU0tfREVQRU5ERU5DWV9UWVBFX0JMT0NLUxABEiMKH1RBU0tfREVQRU5ERU5DWV9UWVBFX0JMT0NLRURfQlkQAhIjCh9UQVNLX0RFUEVOREVOQ1lfVFlQRV9EVVBMSUNBVEVTEAMSIwofVEFTS19ERVBFTkRFTkNZX1RZUEVfUkVMQVRFU19UTxAEQnAKCmNvbS5hcGkudjFCC01vZGVsc1Byb3RvUAFaHG9wc2VlL2JhY2tlbmQvZ2VuL2FwaS92MTtnZW6iAgNBWFiqAgZBcGkuVjHKAgZBcGlcVjHiAhJBcGlcVjFcR1BCTWV0YWRhdGHqAgdBcGk6OlYxYgZwcm90bzM", [file_google_protobuf_timestamp, file_api_v1_vcs]);
14
14
 
15
15
  /**
16
16
  * Describes the message api.v1.Permission.
@@ -390,3 +390,22 @@ export const MilestoneRepositorySchema = /*@__PURE__*/
390
390
  export const MilestoneDocumentSchema = /*@__PURE__*/
391
391
  messageDesc(file_api_v1_models, 53);
392
392
 
393
+ /**
394
+ * Describes the message api.v1.TaskDependency.
395
+ * Use `create(TaskDependencySchema)` to create a new message.
396
+ */
397
+ export const TaskDependencySchema = /*@__PURE__*/
398
+ messageDesc(file_api_v1_models, 54);
399
+
400
+ /**
401
+ * Describes the enum api.v1.TaskDependencyType.
402
+ */
403
+ export const TaskDependencyTypeSchema = /*@__PURE__*/
404
+ enumDesc(file_api_v1_models, 0);
405
+
406
+ /**
407
+ * @generated from enum api.v1.TaskDependencyType
408
+ */
409
+ export const TaskDependencyType = /*@__PURE__*/
410
+ tsEnum(TaskDependencyTypeSchema);
411
+
@@ -0,0 +1,151 @@
1
+ // @generated by protoc-gen-es v2.2.3
2
+ // @generated from file api/v1/task_dependency.proto (package api.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv1";
6
+ import type { Message } from "@bufbuild/protobuf";
7
+ import type { TaskDependency, TaskDependencyType } from "./models_pb";
8
+ import type { Pagination } from "./pagination_pb";
9
+ import type { EmptySchema } from "@bufbuild/protobuf/wkt";
10
+
11
+ /**
12
+ * Describes the file api/v1/task_dependency.proto.
13
+ */
14
+ export declare const file_api_v1_task_dependency: GenFile;
15
+
16
+ /**
17
+ * Request definitions
18
+ *
19
+ * @generated from message api.v1.AddTaskDependencyRequest
20
+ */
21
+ export declare type AddTaskDependencyRequest = Message<"api.v1.AddTaskDependencyRequest"> & {
22
+ /**
23
+ * @generated from field: uint32 from_task_id = 1;
24
+ */
25
+ fromTaskId: number;
26
+
27
+ /**
28
+ * @generated from field: uint32 to_task_id = 2;
29
+ */
30
+ toTaskId: number;
31
+
32
+ /**
33
+ * @generated from field: api.v1.TaskDependencyType type = 3;
34
+ */
35
+ type: TaskDependencyType;
36
+ };
37
+
38
+ /**
39
+ * Describes the message api.v1.AddTaskDependencyRequest.
40
+ * Use `create(AddTaskDependencyRequestSchema)` to create a new message.
41
+ */
42
+ export declare const AddTaskDependencyRequestSchema: GenMessage<AddTaskDependencyRequest>;
43
+
44
+ /**
45
+ * @generated from message api.v1.GetTaskDependenciesRequest
46
+ */
47
+ export declare type GetTaskDependenciesRequest = Message<"api.v1.GetTaskDependenciesRequest"> & {
48
+ /**
49
+ * @generated from field: uint32 task_id = 1;
50
+ */
51
+ taskId: number;
52
+
53
+ /**
54
+ * @generated from field: api.v1.Pagination pagination = 2;
55
+ */
56
+ pagination?: Pagination;
57
+ };
58
+
59
+ /**
60
+ * Describes the message api.v1.GetTaskDependenciesRequest.
61
+ * Use `create(GetTaskDependenciesRequestSchema)` to create a new message.
62
+ */
63
+ export declare const GetTaskDependenciesRequestSchema: GenMessage<GetTaskDependenciesRequest>;
64
+
65
+ /**
66
+ * @generated from message api.v1.DeleteTaskDependencyRequest
67
+ */
68
+ export declare type DeleteTaskDependencyRequest = Message<"api.v1.DeleteTaskDependencyRequest"> & {
69
+ /**
70
+ * @generated from field: uint32 id = 1;
71
+ */
72
+ id: number;
73
+ };
74
+
75
+ /**
76
+ * Describes the message api.v1.DeleteTaskDependencyRequest.
77
+ * Use `create(DeleteTaskDependencyRequestSchema)` to create a new message.
78
+ */
79
+ export declare const DeleteTaskDependencyRequestSchema: GenMessage<DeleteTaskDependencyRequest>;
80
+
81
+ /**
82
+ * Response definitions
83
+ *
84
+ * @generated from message api.v1.AddTaskDependencyResponse
85
+ */
86
+ export declare type AddTaskDependencyResponse = Message<"api.v1.AddTaskDependencyResponse"> & {
87
+ /**
88
+ * @generated from field: api.v1.TaskDependency task_dependency = 1;
89
+ */
90
+ taskDependency?: TaskDependency;
91
+ };
92
+
93
+ /**
94
+ * Describes the message api.v1.AddTaskDependencyResponse.
95
+ * Use `create(AddTaskDependencyResponseSchema)` to create a new message.
96
+ */
97
+ export declare const AddTaskDependencyResponseSchema: GenMessage<AddTaskDependencyResponse>;
98
+
99
+ /**
100
+ * @generated from message api.v1.GetTaskDependenciesResponse
101
+ */
102
+ export declare type GetTaskDependenciesResponse = Message<"api.v1.GetTaskDependenciesResponse"> & {
103
+ /**
104
+ * @generated from field: repeated api.v1.TaskDependency task_dependencies = 1;
105
+ */
106
+ taskDependencies: TaskDependency[];
107
+
108
+ /**
109
+ * @generated from field: api.v1.Pagination pagination = 2;
110
+ */
111
+ pagination?: Pagination;
112
+ };
113
+
114
+ /**
115
+ * Describes the message api.v1.GetTaskDependenciesResponse.
116
+ * Use `create(GetTaskDependenciesResponseSchema)` to create a new message.
117
+ */
118
+ export declare const GetTaskDependenciesResponseSchema: GenMessage<GetTaskDependenciesResponse>;
119
+
120
+ /**
121
+ * Service
122
+ *
123
+ * @generated from service api.v1.TaskDependencyService
124
+ */
125
+ export declare const TaskDependencyService: GenService<{
126
+ /**
127
+ * @generated from rpc api.v1.TaskDependencyService.AddTaskDependency
128
+ */
129
+ addTaskDependency: {
130
+ methodKind: "unary";
131
+ input: typeof AddTaskDependencyRequestSchema;
132
+ output: typeof AddTaskDependencyResponseSchema;
133
+ },
134
+ /**
135
+ * @generated from rpc api.v1.TaskDependencyService.GetTaskDependencies
136
+ */
137
+ getTaskDependencies: {
138
+ methodKind: "unary";
139
+ input: typeof GetTaskDependenciesRequestSchema;
140
+ output: typeof GetTaskDependenciesResponseSchema;
141
+ },
142
+ /**
143
+ * @generated from rpc api.v1.TaskDependencyService.DeleteTaskDependency
144
+ */
145
+ deleteTaskDependency: {
146
+ methodKind: "unary";
147
+ input: typeof DeleteTaskDependencyRequestSchema;
148
+ output: typeof EmptySchema;
149
+ },
150
+ }>;
151
+
@@ -0,0 +1,60 @@
1
+ // @generated by protoc-gen-es v2.2.3
2
+ // @generated from file api/v1/task_dependency.proto (package api.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1";
6
+ import { file_google_protobuf_empty } from "@bufbuild/protobuf/wkt";
7
+ import { file_google_api_annotations } from "../../google/api/annotations_pb";
8
+ import { file_validate_validate } from "../../validate/validate_pb";
9
+ import { file_api_v1_pagination } from "./pagination_pb";
10
+ import { file_api_v1_models } from "./models_pb";
11
+
12
+ /**
13
+ * Describes the file api/v1/task_dependency.proto.
14
+ */
15
+ export const file_api_v1_task_dependency = /*@__PURE__*/
16
+ fileDesc("ChxhcGkvdjEvdGFza19kZXBlbmRlbmN5LnByb3RvEgZhcGkudjEijAEKGEFkZFRhc2tEZXBlbmRlbmN5UmVxdWVzdBIdCgxmcm9tX3Rhc2tfaWQYASABKA1CB/pCBCoCKAESGwoKdG9fdGFza19pZBgCIAEoDUIH+kIEKgIoARI0CgR0eXBlGAMgASgOMhouYXBpLnYxLlRhc2tEZXBlbmRlbmN5VHlwZUIK+kIHggEEEAEgACJeChpHZXRUYXNrRGVwZW5kZW5jaWVzUmVxdWVzdBIYCgd0YXNrX2lkGAEgASgNQgf6QgQqAigBEiYKCnBhZ2luYXRpb24YAiABKAsyEi5hcGkudjEuUGFnaW5hdGlvbiIyChtEZWxldGVUYXNrRGVwZW5kZW5jeVJlcXVlc3QSEwoCaWQYASABKA1CB/pCBCoCKAEiTAoZQWRkVGFza0RlcGVuZGVuY3lSZXNwb25zZRIvCg90YXNrX2RlcGVuZGVuY3kYASABKAsyFi5hcGkudjEuVGFza0RlcGVuZGVuY3kieAobR2V0VGFza0RlcGVuZGVuY2llc1Jlc3BvbnNlEjEKEXRhc2tfZGVwZW5kZW5jaWVzGAEgAygLMhYuYXBpLnYxLlRhc2tEZXBlbmRlbmN5EiYKCnBhZ2luYXRpb24YAiABKAsyEi5hcGkudjEuUGFnaW5hdGlvbjKYAwoVVGFza0RlcGVuZGVuY3lTZXJ2aWNlEn4KEUFkZFRhc2tEZXBlbmRlbmN5EiAuYXBpLnYxLkFkZFRhc2tEZXBlbmRlbmN5UmVxdWVzdBohLmFwaS52MS5BZGRUYXNrRGVwZW5kZW5jeVJlc3BvbnNlIiSC0+STAh46ASoiGS9hcGkvdjEvdGFzay1kZXBlbmRlbmNpZXMSgQEKE0dldFRhc2tEZXBlbmRlbmNpZXMSIi5hcGkudjEuR2V0VGFza0RlcGVuZGVuY2llc1JlcXVlc3QaIy5hcGkudjEuR2V0VGFza0RlcGVuZGVuY2llc1Jlc3BvbnNlIiGC0+STAhsSGS9hcGkvdjEvdGFzay1kZXBlbmRlbmNpZXMSewoURGVsZXRlVGFza0RlcGVuZGVuY3kSIy5hcGkudjEuRGVsZXRlVGFza0RlcGVuZGVuY3lSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiaC0+STAiAqHi9hcGkvdjEvdGFzay1kZXBlbmRlbmNpZXMve2lkfUJ4Cgpjb20uYXBpLnYxQhNUYXNrRGVwZW5kZW5jeVByb3RvUAFaHG9wc2VlL2JhY2tlbmQvZ2VuL2FwaS92MTtnZW6iAgNBWFiqAgZBcGkuVjHKAgZBcGlcVjHiAhJBcGlcVjFcR1BCTWV0YWRhdGHqAgdBcGk6OlYxYgZwcm90bzM", [file_google_protobuf_empty, file_google_api_annotations, file_validate_validate, file_api_v1_pagination, file_api_v1_models]);
17
+
18
+ /**
19
+ * Describes the message api.v1.AddTaskDependencyRequest.
20
+ * Use `create(AddTaskDependencyRequestSchema)` to create a new message.
21
+ */
22
+ export const AddTaskDependencyRequestSchema = /*@__PURE__*/
23
+ messageDesc(file_api_v1_task_dependency, 0);
24
+
25
+ /**
26
+ * Describes the message api.v1.GetTaskDependenciesRequest.
27
+ * Use `create(GetTaskDependenciesRequestSchema)` to create a new message.
28
+ */
29
+ export const GetTaskDependenciesRequestSchema = /*@__PURE__*/
30
+ messageDesc(file_api_v1_task_dependency, 1);
31
+
32
+ /**
33
+ * Describes the message api.v1.DeleteTaskDependencyRequest.
34
+ * Use `create(DeleteTaskDependencyRequestSchema)` to create a new message.
35
+ */
36
+ export const DeleteTaskDependencyRequestSchema = /*@__PURE__*/
37
+ messageDesc(file_api_v1_task_dependency, 2);
38
+
39
+ /**
40
+ * Describes the message api.v1.AddTaskDependencyResponse.
41
+ * Use `create(AddTaskDependencyResponseSchema)` to create a new message.
42
+ */
43
+ export const AddTaskDependencyResponseSchema = /*@__PURE__*/
44
+ messageDesc(file_api_v1_task_dependency, 3);
45
+
46
+ /**
47
+ * Describes the message api.v1.GetTaskDependenciesResponse.
48
+ * Use `create(GetTaskDependenciesResponseSchema)` to create a new message.
49
+ */
50
+ export const GetTaskDependenciesResponseSchema = /*@__PURE__*/
51
+ messageDesc(file_api_v1_task_dependency, 4);
52
+
53
+ /**
54
+ * Service
55
+ *
56
+ * @generated from service api.v1.TaskDependencyService
57
+ */
58
+ export const TaskDependencyService = /*@__PURE__*/
59
+ serviceDesc(file_api_v1_task_dependency, 0);
60
+
@@ -303,6 +303,11 @@ export declare type GetTasksRequest = Message<"api.v1.GetTasksRequest"> & {
303
303
  * @generated from field: api.v1.FilterOptions filter_options = 3;
304
304
  */
305
305
  filterOptions?: FilterOptions;
306
+
307
+ /**
308
+ * @generated from field: repeated uint32 label_ids = 4;
309
+ */
310
+ labelIds: number[];
306
311
  };
307
312
 
308
313
  /**
@@ -14,7 +14,7 @@ import { file_api_v1_models } from "./models_pb";
14
14
  * Describes the file api/v1/task.proto.
15
15
  */
16
16
  export const file_api_v1_task = /*@__PURE__*/
17
- fileDesc("ChFhcGkvdjEvdGFzay5wcm90bxIGYXBpLnYxIvkFCg5BZGRUYXNrUmVxdWVzdBIiCgppZGVudGlmaWVyGAEgASgJQgn6QgZyBBABGDJIAIgBARIZCgV0aXRsZRgCIAEoCUIK+kIHcgUQARjIARIYCgtkZXNjcmlwdGlvbhgDIAEoCUgBiAEBEh4KDWRpc3BsYXlfb3JkZXIYBCABKAVCB/pCBBoCKAASIgoMc3RvcnlfcG9pbnRzGAUgASgFQgf6QgQaAigBSAKIAQESLAoPZXN0aW1hdGVkX2hvdXJzGAYgASgBQg76QgsSCSkAAAAAAAAAAEgDiAEBEikKDGFjdHVhbF9ob3VycxgHIAEoAUIO+kILEgkpAAAAAAAAAABIBIgBARIsCghkdWVfZGF0ZRgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoPYWlfbW9kZV9lbmFibGVkGAkgASgIEhoKDW1ldGFkYXRhX2pzb24YCiABKAlIBYgBARIQCghib2FyZF9pZBgLIAEoDRIXCg9ib2FyZF9jb2x1bW5faWQYDCABKA0SEgoKcHJvamVjdF9pZBgNIAEoDRIUCgx0YXNrX3R5cGVfaWQYDiABKA0SGAoQdGFza19wcmlvcml0eV9pZBgPIAEoDRIYChByZXBvcnRlcl91c2VyX2lkGBAgASgNEh0KEGFzc2lnbmVkX3VzZXJfaWQYESABKA1IBogBARIbCg5wYXJlbnRfdGFza19pZBgSIAEoDUgHiAEBEhYKDnJlcG9zaXRvcnlfaWRzGBMgAygNEhUKCGN5Y2xlX2lkGBQgASgNSAiIAQFCDQoLX2lkZW50aWZpZXJCDgoMX2Rlc2NyaXB0aW9uQg8KDV9zdG9yeV9wb2ludHNCEgoQX2VzdGltYXRlZF9ob3Vyc0IPCg1fYWN0dWFsX2hvdXJzQhAKDl9tZXRhZGF0YV9qc29uQhMKEV9hc3NpZ25lZF91c2VyX2lkQhEKD19wYXJlbnRfdGFza19pZEILCglfY3ljbGVfaWQi4gYKD0VkaXRUYXNrUmVxdWVzdBITCgJpZBgBIAEoDUIH+kIEKgIoARIdCgppZGVudGlmaWVyGAIgASgJQgn6QgZyBBABGDISGQoFdGl0bGUYAyABKAlCCvpCB3IFEAEYyAESGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARIeCg1kaXNwbGF5X29yZGVyGAUgASgFQgf6QgQaAigAEiIKDHN0b3J5X3BvaW50cxgGIAEoBUIH+kIEGgIoAUgBiAEBEiwKD2VzdGltYXRlZF9ob3VycxgHIAEoAUIO+kILEgkpAAAAAAAAAABIAogBARIpCgxhY3R1YWxfaG91cnMYCCABKAFCDvpCCxIJKQAAAAAAAAAASAOIAQESLAoIZHVlX2RhdGUYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2FpX21vZGVfZW5hYmxlZBgKIAEoCBIaCg1tZXRhZGF0YV9qc29uGAsgASgJSASIAQESEAoIYm9hcmRfaWQYDCABKA0SFwoPYm9hcmRfY29sdW1uX2lkGA0gASgNEhIKCnByb2plY3RfaWQYDiABKA0SFAoMdGFza190eXBlX2lkGA8gASgNEhgKEHRhc2tfcHJpb3JpdHlfaWQYECABKA0SGAoQcmVwb3J0ZXJfdXNlcl9pZBgRIAEoDRIdChBhc3NpZ25lZF91c2VyX2lkGBIgASgNSAWIAQESGwoOcGFyZW50X3Rhc2tfaWQYEyABKA1IBogBARIWCg5yZXBvc2l0b3J5X2lkcxgUIAMoDRIVCghjeWNsZV9pZBgVIAEoDUgHiAEBEi8KC3Jlc29sdmVkX2F0GBYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIeChFvcmlnaW5hbF9lc3RpbWF0ZRgXIAEoAUgIiAEBQg4KDF9kZXNjcmlwdGlvbkIPCg1fc3RvcnlfcG9pbnRzQhIKEF9lc3RpbWF0ZWRfaG91cnNCDwoNX2FjdHVhbF9ob3Vyc0IQCg5fbWV0YWRhdGFfanNvbkITChFfYXNzaWduZWRfdXNlcl9pZEIRCg9fcGFyZW50X3Rhc2tfaWRCCwoJX2N5Y2xlX2lkQhQKEl9vcmlnaW5hbF9lc3RpbWF0ZSIcCg5HZXRUYXNrUmVxdWVzdBIKCgJpZBgBIAEoDSIuChRHZXRUYXNrQnlVVUlEUmVxdWVzdBIWCgR1dWlkGAEgASgJQgj6QgVyA7ABASKPAQoPR2V0VGFza3NSZXF1ZXN0EhsKCnByb2plY3RfaWQYASABKA1CB/pCBCoCKAESMAoKcGFnaW5hdGlvbhgCIAEoCzISLmFwaS52MS5QYWdpbmF0aW9uQgj6QgWKAQIQARItCg5maWx0ZXJfb3B0aW9ucxgDIAEoCzIVLmFwaS52MS5GaWx0ZXJPcHRpb25zIh8KEURlbGV0ZVRhc2tSZXF1ZXN0EgoKAmlkGAEgASgNIlcKEEdldFRhc2tzUmVzcG9uc2USGwoFdGFza3MYASADKAsyDC5hcGkudjEuVGFzaxImCgpwYWdpbmF0aW9uGAIgASgLMhIuYXBpLnYxLlBhZ2luYXRpb24iLQoPQWRkVGFza1Jlc3BvbnNlEhoKBHRhc2sYASABKAsyDC5hcGkudjEuVGFzayIuChBFZGl0VGFza1Jlc3BvbnNlEhoKBHRhc2sYASABKAsyDC5hcGkudjEuVGFzayItCg9HZXRUYXNrUmVzcG9uc2USGgoEdGFzaxgBIAEoCzIMLmFwaS52MS5UYXNrIjQKGFRyaWdnZXJBSVdvcmtmbG93UmVxdWVzdBIYCgd0YXNrX2lkGAEgASgNQgf6QgQqAigBIk4KGVRyaWdnZXJBSVdvcmtmbG93UmVzcG9uc2USEAoIam9iX25hbWUYASABKAkSDgoGc3RhdHVzGAIgASgJEg8KB21lc3NhZ2UYAyABKAkicgoSRXhwb3J0VGFza3NSZXF1ZXN0EhsKCnByb2plY3RfaWQYASABKA1CB/pCBCoCKAESLQoOZmlsdGVyX29wdGlvbnMYAiABKAsyFS5hcGkudjEuRmlsdGVyT3B0aW9ucxIQCgh0YXNrX2lkcxgDIAMoDSI8ChNFeHBvcnRUYXNrc1Jlc3BvbnNlEhMKC2Nzdl9jb250ZW50GAEgASgMEhAKCGZpbGVuYW1lGAIgASgJInAKEkltcG9ydFRhc2tzUmVxdWVzdBIbCgpwcm9qZWN0X2lkGAEgASgNQgf6QgQqAigBEiEKC2Nzdl9jb250ZW50GAIgASgMQgz6Qgl6BxABGICAgAUSGgoSc2tpcF9ub3RpZmljYXRpb25zGAMgASgIIkUKDEltcG9ydGVkVGFzaxITCgtleHRlcm5hbF9pZBgBIAEoCRIPCgd0YXNrX2lkGAIgASgNEg8KB2NyZWF0ZWQYAyABKAgirQEKE0ltcG9ydFRhc2tzUmVzcG9uc2USFQoNY3JlYXRlZF9jb3VudBgBIAEoBRIVCg11cGRhdGVkX2NvdW50GAIgASgFEhQKDGZhaWxlZF9jb3VudBgDIAEoBRIOCgZlcnJvcnMYBCADKAkSFQoNc2tpcHBlZF9jb3VudBgFIAEoBRIrCg1jcmVhdGVkX3Rhc2tzGAYgAygLMhQuYXBpLnYxLkltcG9ydGVkVGFzayKnAQoIVGFza0xpbmsSHwoLZXh0ZXJuYWxfaWQYASABKAlCCvpCB3IFEAEYgAESKQoScGFyZW50X2V4dGVybmFsX2lkGAIgASgJQgj6QgVyAxiAAUgAiAEBEiUKDm1pbGVzdG9uZV9uYW1lGAMgASgJQgj6QgVyAxiAAkgBiAEBQhUKE19wYXJlbnRfZXh0ZXJuYWxfaWRCEQoPX21pbGVzdG9uZV9uYW1lImcKHExpbmtUYXNrc0J5RXh0ZXJuYWxJZFJlcXVlc3QSGwoKcHJvamVjdF9pZBgBIAEoDUIH+kIEKgIoARIqCgVsaW5rcxgCIAMoCzIQLmFwaS52MS5UYXNrTGlua0IJ+kIGkgEDEIgnImIKHUxpbmtUYXNrc0J5RXh0ZXJuYWxJZFJlc3BvbnNlEhYKDmxpbmtlZF9wYXJlbnRzGAEgASgFEhkKEWxpbmtlZF9taWxlc3RvbmVzGAIgASgFEg4KBmVycm9ycxgDIAMoCSLRAgoUQnVsa0VkaXRUYXNrc1JlcXVlc3QSGwoKcHJvamVjdF9pZBgBIAEoDUIH+kIEKgIoARIaCgh0YXNrX2lkcxgCIAMoDUII+kIFkgECCAESHAoPYm9hcmRfY29sdW1uX2lkGAMgASgNSACIAQESHQoQdGFza19wcmlvcml0eV9pZBgEIAEoDUgBiAEBEhkKDHRhc2tfdHlwZV9pZBgFIAEoDUgCiAEBEh0KEGFzc2lnbmVkX3VzZXJfaWQYBiABKA1IA4gBARIVCghjeWNsZV9pZBgHIAEoDUgEiAEBEhYKDnJlcG9zaXRvcnlfaWRzGAggAygNQhIKEF9ib2FyZF9jb2x1bW5faWRCEwoRX3Rhc2tfcHJpb3JpdHlfaWRCDwoNX3Rhc2tfdHlwZV9pZEITChFfYXNzaWduZWRfdXNlcl9pZEILCglfY3ljbGVfaWQiLgoVQnVsa0VkaXRUYXNrc1Jlc3BvbnNlEhUKDXVwZGF0ZWRfY291bnQYASABKAUiUQoWQnVsa0RlbGV0ZVRhc2tzUmVxdWVzdBIbCgpwcm9qZWN0X2lkGAEgASgNQgf6QgQqAigBEhoKCHRhc2tfaWRzGAIgAygNQgj6QgWSAQIIASIwChdCdWxrRGVsZXRlVGFza3NSZXNwb25zZRIVCg1kZWxldGVkX2NvdW50GAEgASgFInYKEUFkZFdvcmtMb2dSZXF1ZXN0EhgKB3Rhc2tfaWQYASABKA1CB/pCBCoCKAESHQoFaG91cnMYAiABKAFCDvpCCxIJKZqZmZmZmbk/EhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQFCDgoMX2Rlc2NyaXB0aW9uIjcKEkFkZFdvcmtMb2dSZXNwb25zZRIhCgh3b3JrX2xvZxgBIAEoCzIPLmFwaS52MS5Xb3JrTG9nIjMKFERlbGV0ZVdvcmtMb2dSZXF1ZXN0Eg8KB3Rhc2tfaWQYASABKA0SCgoCaWQYAiABKA0y6QwKC1Rhc2tTZXJ2aWNlEn0KC0V4cG9ydFRhc2tzEhouYXBpLnYxLkV4cG9ydFRhc2tzUmVxdWVzdBobLmFwaS52MS5FeHBvcnRUYXNrc1Jlc3BvbnNlIjWC0+STAi86ASoiKi9hcGkvdjEvcHJvamVjdHMve3Byb2plY3RfaWR9L3Rhc2tzL2V4cG9ydBJ9CgtJbXBvcnRUYXNrcxIaLmFwaS52MS5JbXBvcnRUYXNrc1JlcXVlc3QaGy5hcGkudjEuSW1wb3J0VGFza3NSZXNwb25zZSI1gtPkkwIvOgEqIiovYXBpL3YxL3Byb2plY3RzL3twcm9qZWN0X2lkfS90YXNrcy9pbXBvcnQSqAEKFUxpbmtUYXNrc0J5RXh0ZXJuYWxJZBIkLmFwaS52MS5MaW5rVGFza3NCeUV4dGVybmFsSWRSZXF1ZXN0GiUuYXBpLnYxLkxpbmtUYXNrc0J5RXh0ZXJuYWxJZFJlc3BvbnNlIkKC0+STAjw6ASoiNy9hcGkvdjEvcHJvamVjdHMve3Byb2plY3RfaWR9L3Rhc2tzL2xpbmstYnktZXh0ZXJuYWwtaWQSVAoHQWRkVGFzaxIWLmFwaS52MS5BZGRUYXNrUmVxdWVzdBoXLmFwaS52MS5BZGRUYXNrUmVzcG9uc2UiGILT5JMCEjoBKiINL2FwaS92MS90YXNrcxJcCghFZGl0VGFzaxIXLmFwaS52MS5FZGl0VGFza1JlcXVlc3QaGC5hcGkudjEuRWRpdFRhc2tSZXNwb25zZSIdgtPkkwIXOgEqGhIvYXBpL3YxL3Rhc2tzL3tpZH0SVgoHR2V0VGFzaxIWLmFwaS52MS5HZXRUYXNrUmVxdWVzdBoXLmFwaS52MS5HZXRUYXNrUmVzcG9uc2UiGoLT5JMCFBISL2FwaS92MS90YXNrcy97aWR9EmkKDUdldFRhc2tCeVVVSUQSHC5hcGkudjEuR2V0VGFza0J5VVVJRFJlcXVlc3QaFy5hcGkudjEuR2V0VGFza1Jlc3BvbnNlIiGC0+STAhsSGS9hcGkvdjEvdGFza3MvdXVpZC97dXVpZH0SVAoIR2V0VGFza3MSFy5hcGkudjEuR2V0VGFza3NSZXF1ZXN0GhguYXBpLnYxLkdldFRhc2tzUmVzcG9uc2UiFYLT5JMCDxINL2FwaS92MS90YXNrcxJbCgpEZWxldGVUYXNrEhkuYXBpLnYxLkRlbGV0ZVRhc2tSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IhqC0+STAhQqEi9hcGkvdjEvdGFza3Mve2lkfRKHAQoRVHJpZ2dlckFJV29ya2Zsb3cSIC5hcGkudjEuVHJpZ2dlckFJV29ya2Zsb3dSZXF1ZXN0GiEuYXBpLnYxLlRyaWdnZXJBSVdvcmtmbG93UmVzcG9uc2UiLYLT5JMCJzoBKiIiL2FwaS92MS90YXNrcy97dGFza19pZH0vdHJpZ2dlci1haRJxCgpBZGRXb3JrTG9nEhkuYXBpLnYxLkFkZFdvcmtMb2dSZXF1ZXN0GhouYXBpLnYxLkFkZFdvcmtMb2dSZXNwb25zZSIsgtPkkwImOgEqIiEvYXBpL3YxL3Rhc2tzL3t0YXNrX2lkfS93b3JrLWxvZ3MSdQoNRGVsZXRlV29ya0xvZxIcLmFwaS52MS5EZWxldGVXb3JrTG9nUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIugtPkkwIoKiYvYXBpL3YxL3Rhc2tzL3t0YXNrX2lkfS93b3JrLWxvZ3Mve2lkfRKBAQoNQnVsa0VkaXRUYXNrcxIcLmFwaS52MS5CdWxrRWRpdFRhc2tzUmVxdWVzdBodLmFwaS52MS5CdWxrRWRpdFRhc2tzUmVzcG9uc2UiM4LT5JMCLToBKhooL2FwaS92MS9wcm9qZWN0cy97cHJvamVjdF9pZH0vdGFza3MvYnVsaxKOAQoPQnVsa0RlbGV0ZVRhc2tzEh4uYXBpLnYxLkJ1bGtEZWxldGVUYXNrc1JlcXVlc3QaHy5hcGkudjEuQnVsa0RlbGV0ZVRhc2tzUmVzcG9uc2UiOoLT5JMCNDoBKiIvL2FwaS92MS9wcm9qZWN0cy97cHJvamVjdF9pZH0vdGFza3MvYnVsay1kZWxldGVCbgoKY29tLmFwaS52MUIJVGFza1Byb3RvUAFaHG9wc2VlL2JhY2tlbmQvZ2VuL2FwaS92MTtnZW6iAgNBWFiqAgZBcGkuVjHKAgZBcGlcVjHiAhJBcGlcVjFcR1BCTWV0YWRhdGHqAgdBcGk6OlYxYgZwcm90bzM", [file_google_protobuf_empty, file_google_protobuf_timestamp, file_google_api_annotations, file_validate_validate, file_api_v1_pagination, file_api_v1_filter, file_api_v1_models]);
17
+ fileDesc("ChFhcGkvdjEvdGFzay5wcm90bxIGYXBpLnYxIvkFCg5BZGRUYXNrUmVxdWVzdBIiCgppZGVudGlmaWVyGAEgASgJQgn6QgZyBBABGDJIAIgBARIZCgV0aXRsZRgCIAEoCUIK+kIHcgUQARjIARIYCgtkZXNjcmlwdGlvbhgDIAEoCUgBiAEBEh4KDWRpc3BsYXlfb3JkZXIYBCABKAVCB/pCBBoCKAASIgoMc3RvcnlfcG9pbnRzGAUgASgFQgf6QgQaAigBSAKIAQESLAoPZXN0aW1hdGVkX2hvdXJzGAYgASgBQg76QgsSCSkAAAAAAAAAAEgDiAEBEikKDGFjdHVhbF9ob3VycxgHIAEoAUIO+kILEgkpAAAAAAAAAABIBIgBARIsCghkdWVfZGF0ZRgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoPYWlfbW9kZV9lbmFibGVkGAkgASgIEhoKDW1ldGFkYXRhX2pzb24YCiABKAlIBYgBARIQCghib2FyZF9pZBgLIAEoDRIXCg9ib2FyZF9jb2x1bW5faWQYDCABKA0SEgoKcHJvamVjdF9pZBgNIAEoDRIUCgx0YXNrX3R5cGVfaWQYDiABKA0SGAoQdGFza19wcmlvcml0eV9pZBgPIAEoDRIYChByZXBvcnRlcl91c2VyX2lkGBAgASgNEh0KEGFzc2lnbmVkX3VzZXJfaWQYESABKA1IBogBARIbCg5wYXJlbnRfdGFza19pZBgSIAEoDUgHiAEBEhYKDnJlcG9zaXRvcnlfaWRzGBMgAygNEhUKCGN5Y2xlX2lkGBQgASgNSAiIAQFCDQoLX2lkZW50aWZpZXJCDgoMX2Rlc2NyaXB0aW9uQg8KDV9zdG9yeV9wb2ludHNCEgoQX2VzdGltYXRlZF9ob3Vyc0IPCg1fYWN0dWFsX2hvdXJzQhAKDl9tZXRhZGF0YV9qc29uQhMKEV9hc3NpZ25lZF91c2VyX2lkQhEKD19wYXJlbnRfdGFza19pZEILCglfY3ljbGVfaWQi4gYKD0VkaXRUYXNrUmVxdWVzdBITCgJpZBgBIAEoDUIH+kIEKgIoARIdCgppZGVudGlmaWVyGAIgASgJQgn6QgZyBBABGDISGQoFdGl0bGUYAyABKAlCCvpCB3IFEAEYyAESGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARIeCg1kaXNwbGF5X29yZGVyGAUgASgFQgf6QgQaAigAEiIKDHN0b3J5X3BvaW50cxgGIAEoBUIH+kIEGgIoAUgBiAEBEiwKD2VzdGltYXRlZF9ob3VycxgHIAEoAUIO+kILEgkpAAAAAAAAAABIAogBARIpCgxhY3R1YWxfaG91cnMYCCABKAFCDvpCCxIJKQAAAAAAAAAASAOIAQESLAoIZHVlX2RhdGUYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2FpX21vZGVfZW5hYmxlZBgKIAEoCBIaCg1tZXRhZGF0YV9qc29uGAsgASgJSASIAQESEAoIYm9hcmRfaWQYDCABKA0SFwoPYm9hcmRfY29sdW1uX2lkGA0gASgNEhIKCnByb2plY3RfaWQYDiABKA0SFAoMdGFza190eXBlX2lkGA8gASgNEhgKEHRhc2tfcHJpb3JpdHlfaWQYECABKA0SGAoQcmVwb3J0ZXJfdXNlcl9pZBgRIAEoDRIdChBhc3NpZ25lZF91c2VyX2lkGBIgASgNSAWIAQESGwoOcGFyZW50X3Rhc2tfaWQYEyABKA1IBogBARIWCg5yZXBvc2l0b3J5X2lkcxgUIAMoDRIVCghjeWNsZV9pZBgVIAEoDUgHiAEBEi8KC3Jlc29sdmVkX2F0GBYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIeChFvcmlnaW5hbF9lc3RpbWF0ZRgXIAEoAUgIiAEBQg4KDF9kZXNjcmlwdGlvbkIPCg1fc3RvcnlfcG9pbnRzQhIKEF9lc3RpbWF0ZWRfaG91cnNCDwoNX2FjdHVhbF9ob3Vyc0IQCg5fbWV0YWRhdGFfanNvbkITChFfYXNzaWduZWRfdXNlcl9pZEIRCg9fcGFyZW50X3Rhc2tfaWRCCwoJX2N5Y2xlX2lkQhQKEl9vcmlnaW5hbF9lc3RpbWF0ZSIcCg5HZXRUYXNrUmVxdWVzdBIKCgJpZBgBIAEoDSIuChRHZXRUYXNrQnlVVUlEUmVxdWVzdBIWCgR1dWlkGAEgASgJQgj6QgVyA7ABASKiAQoPR2V0VGFza3NSZXF1ZXN0EhsKCnByb2plY3RfaWQYASABKA1CB/pCBCoCKAESMAoKcGFnaW5hdGlvbhgCIAEoCzISLmFwaS52MS5QYWdpbmF0aW9uQgj6QgWKAQIQARItCg5maWx0ZXJfb3B0aW9ucxgDIAEoCzIVLmFwaS52MS5GaWx0ZXJPcHRpb25zEhEKCWxhYmVsX2lkcxgEIAMoDSIfChFEZWxldGVUYXNrUmVxdWVzdBIKCgJpZBgBIAEoDSJXChBHZXRUYXNrc1Jlc3BvbnNlEhsKBXRhc2tzGAEgAygLMgwuYXBpLnYxLlRhc2sSJgoKcGFnaW5hdGlvbhgCIAEoCzISLmFwaS52MS5QYWdpbmF0aW9uIi0KD0FkZFRhc2tSZXNwb25zZRIaCgR0YXNrGAEgASgLMgwuYXBpLnYxLlRhc2siLgoQRWRpdFRhc2tSZXNwb25zZRIaCgR0YXNrGAEgASgLMgwuYXBpLnYxLlRhc2siLQoPR2V0VGFza1Jlc3BvbnNlEhoKBHRhc2sYASABKAsyDC5hcGkudjEuVGFzayI0ChhUcmlnZ2VyQUlXb3JrZmxvd1JlcXVlc3QSGAoHdGFza19pZBgBIAEoDUIH+kIEKgIoASJOChlUcmlnZ2VyQUlXb3JrZmxvd1Jlc3BvbnNlEhAKCGpvYl9uYW1lGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIPCgdtZXNzYWdlGAMgASgJInIKEkV4cG9ydFRhc2tzUmVxdWVzdBIbCgpwcm9qZWN0X2lkGAEgASgNQgf6QgQqAigBEi0KDmZpbHRlcl9vcHRpb25zGAIgASgLMhUuYXBpLnYxLkZpbHRlck9wdGlvbnMSEAoIdGFza19pZHMYAyADKA0iPAoTRXhwb3J0VGFza3NSZXNwb25zZRITCgtjc3ZfY29udGVudBgBIAEoDBIQCghmaWxlbmFtZRgCIAEoCSJwChJJbXBvcnRUYXNrc1JlcXVlc3QSGwoKcHJvamVjdF9pZBgBIAEoDUIH+kIEKgIoARIhCgtjc3ZfY29udGVudBgCIAEoDEIM+kIJegcQARiAgIAFEhoKEnNraXBfbm90aWZpY2F0aW9ucxgDIAEoCCJFCgxJbXBvcnRlZFRhc2sSEwoLZXh0ZXJuYWxfaWQYASABKAkSDwoHdGFza19pZBgCIAEoDRIPCgdjcmVhdGVkGAMgASgIIq0BChNJbXBvcnRUYXNrc1Jlc3BvbnNlEhUKDWNyZWF0ZWRfY291bnQYASABKAUSFQoNdXBkYXRlZF9jb3VudBgCIAEoBRIUCgxmYWlsZWRfY291bnQYAyABKAUSDgoGZXJyb3JzGAQgAygJEhUKDXNraXBwZWRfY291bnQYBSABKAUSKwoNY3JlYXRlZF90YXNrcxgGIAMoCzIULmFwaS52MS5JbXBvcnRlZFRhc2sipwEKCFRhc2tMaW5rEh8KC2V4dGVybmFsX2lkGAEgASgJQgr6QgdyBRABGIABEikKEnBhcmVudF9leHRlcm5hbF9pZBgCIAEoCUII+kIFcgMYgAFIAIgBARIlCg5taWxlc3RvbmVfbmFtZRgDIAEoCUII+kIFcgMYgAJIAYgBAUIVChNfcGFyZW50X2V4dGVybmFsX2lkQhEKD19taWxlc3RvbmVfbmFtZSJnChxMaW5rVGFza3NCeUV4dGVybmFsSWRSZXF1ZXN0EhsKCnByb2plY3RfaWQYASABKA1CB/pCBCoCKAESKgoFbGlua3MYAiADKAsyEC5hcGkudjEuVGFza0xpbmtCCfpCBpIBAxCIJyJiCh1MaW5rVGFza3NCeUV4dGVybmFsSWRSZXNwb25zZRIWCg5saW5rZWRfcGFyZW50cxgBIAEoBRIZChFsaW5rZWRfbWlsZXN0b25lcxgCIAEoBRIOCgZlcnJvcnMYAyADKAki0QIKFEJ1bGtFZGl0VGFza3NSZXF1ZXN0EhsKCnByb2plY3RfaWQYASABKA1CB/pCBCoCKAESGgoIdGFza19pZHMYAiADKA1CCPpCBZIBAggBEhwKD2JvYXJkX2NvbHVtbl9pZBgDIAEoDUgAiAEBEh0KEHRhc2tfcHJpb3JpdHlfaWQYBCABKA1IAYgBARIZCgx0YXNrX3R5cGVfaWQYBSABKA1IAogBARIdChBhc3NpZ25lZF91c2VyX2lkGAYgASgNSAOIAQESFQoIY3ljbGVfaWQYByABKA1IBIgBARIWCg5yZXBvc2l0b3J5X2lkcxgIIAMoDUISChBfYm9hcmRfY29sdW1uX2lkQhMKEV90YXNrX3ByaW9yaXR5X2lkQg8KDV90YXNrX3R5cGVfaWRCEwoRX2Fzc2lnbmVkX3VzZXJfaWRCCwoJX2N5Y2xlX2lkIi4KFUJ1bGtFZGl0VGFza3NSZXNwb25zZRIVCg11cGRhdGVkX2NvdW50GAEgASgFIlEKFkJ1bGtEZWxldGVUYXNrc1JlcXVlc3QSGwoKcHJvamVjdF9pZBgBIAEoDUIH+kIEKgIoARIaCgh0YXNrX2lkcxgCIAMoDUII+kIFkgECCAEiMAoXQnVsa0RlbGV0ZVRhc2tzUmVzcG9uc2USFQoNZGVsZXRlZF9jb3VudBgBIAEoBSJ2ChFBZGRXb3JrTG9nUmVxdWVzdBIYCgd0YXNrX2lkGAEgASgNQgf6QgQqAigBEh0KBWhvdXJzGAIgASgBQg76QgsSCSmamZmZmZm5PxIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBQg4KDF9kZXNjcmlwdGlvbiI3ChJBZGRXb3JrTG9nUmVzcG9uc2USIQoId29ya19sb2cYASABKAsyDy5hcGkudjEuV29ya0xvZyIzChREZWxldGVXb3JrTG9nUmVxdWVzdBIPCgd0YXNrX2lkGAEgASgNEgoKAmlkGAIgASgNMukMCgtUYXNrU2VydmljZRJ9CgtFeHBvcnRUYXNrcxIaLmFwaS52MS5FeHBvcnRUYXNrc1JlcXVlc3QaGy5hcGkudjEuRXhwb3J0VGFza3NSZXNwb25zZSI1gtPkkwIvOgEqIiovYXBpL3YxL3Byb2plY3RzL3twcm9qZWN0X2lkfS90YXNrcy9leHBvcnQSfQoLSW1wb3J0VGFza3MSGi5hcGkudjEuSW1wb3J0VGFza3NSZXF1ZXN0GhsuYXBpLnYxLkltcG9ydFRhc2tzUmVzcG9uc2UiNYLT5JMCLzoBKiIqL2FwaS92MS9wcm9qZWN0cy97cHJvamVjdF9pZH0vdGFza3MvaW1wb3J0EqgBChVMaW5rVGFza3NCeUV4dGVybmFsSWQSJC5hcGkudjEuTGlua1Rhc2tzQnlFeHRlcm5hbElkUmVxdWVzdBolLmFwaS52MS5MaW5rVGFza3NCeUV4dGVybmFsSWRSZXNwb25zZSJCgtPkkwI8OgEqIjcvYXBpL3YxL3Byb2plY3RzL3twcm9qZWN0X2lkfS90YXNrcy9saW5rLWJ5LWV4dGVybmFsLWlkElQKB0FkZFRhc2sSFi5hcGkudjEuQWRkVGFza1JlcXVlc3QaFy5hcGkudjEuQWRkVGFza1Jlc3BvbnNlIhiC0+STAhI6ASoiDS9hcGkvdjEvdGFza3MSXAoIRWRpdFRhc2sSFy5hcGkudjEuRWRpdFRhc2tSZXF1ZXN0GhguYXBpLnYxLkVkaXRUYXNrUmVzcG9uc2UiHYLT5JMCFzoBKhoSL2FwaS92MS90YXNrcy97aWR9ElYKB0dldFRhc2sSFi5hcGkudjEuR2V0VGFza1JlcXVlc3QaFy5hcGkudjEuR2V0VGFza1Jlc3BvbnNlIhqC0+STAhQSEi9hcGkvdjEvdGFza3Mve2lkfRJpCg1HZXRUYXNrQnlVVUlEEhwuYXBpLnYxLkdldFRhc2tCeVVVSURSZXF1ZXN0GhcuYXBpLnYxLkdldFRhc2tSZXNwb25zZSIhgtPkkwIbEhkvYXBpL3YxL3Rhc2tzL3V1aWQve3V1aWR9ElQKCEdldFRhc2tzEhcuYXBpLnYxLkdldFRhc2tzUmVxdWVzdBoYLmFwaS52MS5HZXRUYXNrc1Jlc3BvbnNlIhWC0+STAg8SDS9hcGkvdjEvdGFza3MSWwoKRGVsZXRlVGFzaxIZLmFwaS52MS5EZWxldGVUYXNrUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIagtPkkwIUKhIvYXBpL3YxL3Rhc2tzL3tpZH0ShwEKEVRyaWdnZXJBSVdvcmtmbG93EiAuYXBpLnYxLlRyaWdnZXJBSVdvcmtmbG93UmVxdWVzdBohLmFwaS52MS5UcmlnZ2VyQUlXb3JrZmxvd1Jlc3BvbnNlIi2C0+STAic6ASoiIi9hcGkvdjEvdGFza3Mve3Rhc2tfaWR9L3RyaWdnZXItYWkScQoKQWRkV29ya0xvZxIZLmFwaS52MS5BZGRXb3JrTG9nUmVxdWVzdBoaLmFwaS52MS5BZGRXb3JrTG9nUmVzcG9uc2UiLILT5JMCJjoBKiIhL2FwaS92MS90YXNrcy97dGFza19pZH0vd29yay1sb2dzEnUKDURlbGV0ZVdvcmtMb2cSHC5hcGkudjEuRGVsZXRlV29ya0xvZ1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiLoLT5JMCKComL2FwaS92MS90YXNrcy97dGFza19pZH0vd29yay1sb2dzL3tpZH0SgQEKDUJ1bGtFZGl0VGFza3MSHC5hcGkudjEuQnVsa0VkaXRUYXNrc1JlcXVlc3QaHS5hcGkudjEuQnVsa0VkaXRUYXNrc1Jlc3BvbnNlIjOC0+STAi06ASoaKC9hcGkvdjEvcHJvamVjdHMve3Byb2plY3RfaWR9L3Rhc2tzL2J1bGsSjgEKD0J1bGtEZWxldGVUYXNrcxIeLmFwaS52MS5CdWxrRGVsZXRlVGFza3NSZXF1ZXN0Gh8uYXBpLnYxLkJ1bGtEZWxldGVUYXNrc1Jlc3BvbnNlIjqC0+STAjQ6ASoiLy9hcGkvdjEvcHJvamVjdHMve3Byb2plY3RfaWR9L3Rhc2tzL2J1bGstZGVsZXRlQm4KCmNvbS5hcGkudjFCCVRhc2tQcm90b1ABWhxvcHNlZS9iYWNrZW5kL2dlbi9hcGkvdjE7Z2VuogIDQVhYqgIGQXBpLlYxygIGQXBpXFYx4gISQXBpXFYxXEdQQk1ldGFkYXRh6gIHQXBpOjpWMWIGcHJvdG8z", [file_google_protobuf_empty, file_google_protobuf_timestamp, file_google_api_annotations, file_validate_validate, file_api_v1_pagination, file_api_v1_filter, file_api_v1_models]);
18
18
 
19
19
  /**
20
20
  * Describes the message api.v1.AddTaskRequest.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opsee/mcp-server",
3
- "version": "0.5.7",
3
+ "version": "0.6.1",
4
4
  "description": "Opsee MCP server — manage projects, tasks, docs, and cycles from AI coding environments",
5
5
  "type": "module",
6
6
  "bin": {
package/src/client/api.ts CHANGED
@@ -22,6 +22,10 @@ import { UserService } from "../../gen/api/v1/user_pb.js";
22
22
  import { VCSIntegrationService } from "../../gen/api/v1/vcs_integration_pb.js";
23
23
  import { MilestoneService } from "../../gen/api/v1/milestone_pb.js";
24
24
  import { MilestoneTaskService } from "../../gen/api/v1/milestone_task_pb.js";
25
+ import { LabelService } from "../../gen/api/v1/label_pb.js";
26
+ import { TaskLabelService } from "../../gen/api/v1/task_label_pb.js";
27
+ import { CommentService } from "../../gen/api/v1/comment_pb.js";
28
+ import { TaskDependencyService } from "../../gen/api/v1/task_dependency_pb.js";
25
29
 
26
30
  const authInterceptor: Interceptor = (next) => async (req) => {
27
31
  // Remote mode: token from AsyncLocalStorage (per-request)
@@ -97,6 +101,10 @@ export type ApiClients = {
97
101
  vcsIntegrations: Client<typeof VCSIntegrationService>;
98
102
  milestones: Client<typeof MilestoneService>;
99
103
  milestoneTasks: Client<typeof MilestoneTaskService>;
104
+ labels: Client<typeof LabelService>;
105
+ taskLabels: Client<typeof TaskLabelService>;
106
+ comments: Client<typeof CommentService>;
107
+ taskDependencies: Client<typeof TaskDependencyService>;
100
108
  };
101
109
 
102
110
  export function getClients(): ApiClients {
@@ -115,6 +123,10 @@ export function getClients(): ApiClients {
115
123
  vcsIntegrations: makeClient(VCSIntegrationService),
116
124
  milestones: makeClient(MilestoneService),
117
125
  milestoneTasks: makeClient(MilestoneTaskService),
126
+ labels: makeClient(LabelService),
127
+ taskLabels: makeClient(TaskLabelService),
128
+ comments: makeClient(CommentService),
129
+ taskDependencies: makeClient(TaskDependencyService),
118
130
  };
119
131
  }
120
132
  return cachedClients;