@eide/foir-proto-ts 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eide/foir-proto-ts",
3
- "version": "0.8.0",
3
+ "version": "0.10.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./analytics/v1/analytics_pb": "./src/analytics/v1/analytics_pb.js",
@@ -465,9 +465,14 @@ export declare type ApiKey = Message<"identity.v1.ApiKey"> & {
465
465
  expiresAt?: Timestamp;
466
466
 
467
467
  /**
468
- * @generated from field: optional google.protobuf.Struct scopes = 23;
468
+ * Capability scopes the key grants. Stored in api_keys.scopes as a
469
+ * JSONB array; deserialized into repeated string on read. Enforced
470
+ * nowhere at present — declared on keys so the runtime gate can be
471
+ * wired when someone needs it.
472
+ *
473
+ * @generated from field: repeated string scopes = 23;
469
474
  */
470
- scopes?: JsonObject;
475
+ scopes: string[];
471
476
 
472
477
  /**
473
478
  * @generated from field: optional google.protobuf.Struct metadata = 24;
@@ -2422,9 +2427,9 @@ export declare type CreateApiKeyRequest = Message<"identity.v1.CreateApiKeyReque
2422
2427
  keyType: ApiKeyType;
2423
2428
 
2424
2429
  /**
2425
- * @generated from field: optional google.protobuf.Struct scopes = 3;
2430
+ * @generated from field: repeated string scopes = 3;
2426
2431
  */
2427
- scopes?: JsonObject;
2432
+ scopes: string[];
2428
2433
 
2429
2434
  /**
2430
2435
  * @generated from field: optional int32 rate_limit_per_hour = 4;
@@ -2563,9 +2568,18 @@ export declare type UpdateApiKeyRequest = Message<"identity.v1.UpdateApiKeyReque
2563
2568
  isActive?: boolean;
2564
2569
 
2565
2570
  /**
2566
- * @generated from field: optional google.protobuf.Struct scopes = 4;
2571
+ * @generated from field: repeated string scopes = 4;
2572
+ */
2573
+ scopes: string[];
2574
+
2575
+ /**
2576
+ * Sentinel for "clear scopes" — since repeated fields can't
2577
+ * distinguish "not provided" from "empty list", callers that want
2578
+ * to replace the scope set with an empty list set this to true.
2579
+ *
2580
+ * @generated from field: bool update_scopes = 6;
2567
2581
  */
2568
- scopes?: JsonObject;
2582
+ updateScopes: boolean;
2569
2583
 
2570
2584
  /**
2571
2585
  * @generated from field: optional int32 rate_limit_per_hour = 5;
@@ -9,7 +9,7 @@ import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bu
9
9
  * Describes the file identity/v1/identity.proto.
10
10
  */
11
11
  export const file_identity_v1_identity = /*@__PURE__*/
12
- fileDesc("ChppZGVudGl0eS92MS9pZGVudGl0eS5wcm90bxILaWRlbnRpdHkudjEijwQKCUFkbWluVXNlchIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIXCgpmaXJzdF9uYW1lGAMgASgJSACIAQESFgoJbGFzdF9uYW1lGAQgASgJSAGIAQESFwoKYXZhdGFyX3VybBgFIAEoCUgCiAEBEhkKEWlzX3BsYXRmb3JtX2FkbWluGAYgASgIEiwKBnN0YXR1cxgUIAEoDjIcLmlkZW50aXR5LnYxLkFkbWluVXNlclN0YXR1cxI6ChFlbWFpbF92ZXJpZmllZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIA4gBARI2Cg1sYXN0X2xvZ2luX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEiwKBmFjY2VzcxgoIAMoCzIcLmlkZW50aXR5LnYxLkFkbWluVXNlckFjY2VzcxIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg0KC19hdmF0YXJfdXJsQhQKEl9lbWFpbF92ZXJpZmllZF9hdEIQCg5fbGFzdF9sb2dpbl9hdCLuAQoPQWRtaW5Vc2VyQWNjZXNzEgoKAmlkGAEgASgJEhUKDWFkbWluX3VzZXJfaWQYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhcKCnByb2plY3RfaWQYBCABKAlIAIgBARIlCgRyb2xlGAUgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZRIuCgpncmFudGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpncmFudGVkX2J5GDMgASgJSAGIAQFCDQoLX3Byb2plY3RfaWRCDQoLX2dyYW50ZWRfYnki9QIKCEN1c3RvbWVyEgoKAmlkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEisKBnN0YXR1cxgUIAEoDjIbLmlkZW50aXR5LnYxLkN1c3RvbWVyU3RhdHVzEjoKEWVtYWlsX3ZlcmlmaWVkX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjYKDWxhc3RfbG9naW5fYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCFAoSX2VtYWlsX3ZlcmlmaWVkX2F0QhAKDl9sYXN0X2xvZ2luX2F0IvQCCgZUZW5hbnQSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIpCgZzdGF0dXMYFCABKA4yGS5pZGVudGl0eS52MS5UZW5hbnRTdGF0dXMSNQoMc3VzcGVuZGVkX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEkIKGWNhbmNlbGxhdGlvbl9zY2hlZHVsZWRfYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESGwoTZGF0YV9yZXRlbnRpb25fZGF5cxgeIAEoBRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIPCg1fc3VzcGVuZGVkX2F0QhwKGl9jYW5jZWxsYXRpb25fc2NoZWR1bGVkX2F0IqoDCgdQcm9qZWN0EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESEgoKaXNfZGVmYXVsdBgFIAEoCBIqCgZzdGF0dXMYFCABKA4yGi5pZGVudGl0eS52MS5Qcm9qZWN0U3RhdHVzEj4KFWRlbGV0aW9uX3NjaGVkdWxlZF9hdBgVIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIXCgpjcmVhdGVkX2J5GCggASgJSAKIAQESFwoKdXBkYXRlZF9ieRgpIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9kZXNjcmlwdGlvbkIYChZfZGVsZXRpb25fc2NoZWR1bGVkX2F0Qg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5Iq8DCgpJbnZpdGF0aW9uEgoKAmlkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRITCgtwcm9qZWN0X2lkcxgEIAMoCRIlCgRyb2xlGAUgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZRIsCgtpbnZpdGVfdHlwZRgGIAEoDjIXLmlkZW50aXR5LnYxLkludml0ZVR5cGUSEgoKaW52aXRlZF9ieRgHIAEoCRIUCgdtZXNzYWdlGAggASgJSACIAQESLQoGc3RhdHVzGBQgASgOMh0uaWRlbnRpdHkudjEuSW52aXRhdGlvblN0YXR1cxIuCgpleHBpcmVzX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI0CgthY2NlcHRlZF9hdBgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfbWVzc2FnZUIOCgxfYWNjZXB0ZWRfYXQiggUKBkFwaUtleRIKCgJpZBgBIAEoCRIRCgl0ZW5hbnRfaWQYAiABKAkSEgoKcHJvamVjdF9pZBgDIAEoCRIMCgRuYW1lGAQgASgJEhIKCmtleV9wcmVmaXgYBSABKAkSKQoIa2V5X3R5cGUYBiABKA4yFy5pZGVudGl0eS52MS5BcGlLZXlUeXBlEhQKB3Jhd19rZXkYCiABKAlIAIgBARIRCglpc19hY3RpdmUYFCABKAgSIAoTcmF0ZV9saW1pdF9wZXJfaG91chgVIAEoBUgBiAEBEjMKCmV4cGlyZXNfYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESLAoGc2NvcGVzGBcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEi4KCG1ldGFkYXRhGBggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEjUKDGxhc3RfdXNlZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARITCgt1c2FnZV9jb3VudBgfIAEoBRISCgpjcmVhdGVkX2J5GCggASgJEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9yYXdfa2V5QhYKFF9yYXRlX2xpbWl0X3Blcl9ob3VyQg0KC19leHBpcmVzX2F0QgkKB19zY29wZXNCCwoJX21ldGFkYXRhQg8KDV9sYXN0X3VzZWRfYXQilgIKDlNlc3Npb25Db250ZXh0EhYKCXRlbmFudF9pZBgBIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYAiABKAlIAYgBARIkCgR1c2VyGAMgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyEhsKDmVmZmVjdGl2ZV9yb2xlGAQgASgJSAKIAQESLgoRYXZhaWxhYmxlX3RlbmFudHMYBSADKAsyEy5pZGVudGl0eS52MS5UZW5hbnQSMAoSYXZhaWxhYmxlX3Byb2plY3RzGAYgAygLMhQuaWRlbnRpdHkudjEuUHJvamVjdEIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQhEKD19lZmZlY3RpdmVfcm9sZSJ9CgxMb2dpblJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgBiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWQiXwoNTG9naW5SZXNwb25zZRISCgpzZXNzaW9uX2lkGAEgASgJEhQKDGFjY2Vzc190b2tlbhgCIAEoCRIkCgR1c2VyGAMgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIn8KE0xvZ2luV2l0aE9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkSCwoDb3RwGAIgASgJEhYKCXRlbmFudF9pZBgDIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYBCABKAlIAYgBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkImYKFExvZ2luV2l0aE9UUFJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkSFAoMYWNjZXNzX3Rva2VuGAIgASgJEiQKBHVzZXIYAyABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIicAoRUmVxdWVzdE9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkSFgoJdGVuYW50X2lkGAIgASgJSACIAQESFwoKcHJvamVjdF9pZBgDIAEoCUgBiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWQiJQoSUmVxdWVzdE9UUFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiDwoNTG9nb3V0UmVxdWVzdCIhCg5Mb2dvdXRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIrUBCg9SZWdpc3RlclJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgBiAEBEioKBHJvbGUYBSABKA4yFy5pZGVudGl0eS52MS5BY2Nlc3NSb2xlSAKIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZEIHCgVfcm9sZSI4ChBSZWdpc3RlclJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIiIwoSVmVyaWZ5RW1haWxSZXF1ZXN0Eg0KBXRva2VuGAEgASgJIiYKE1ZlcmlmeUVtYWlsUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIgCh5SZXNlbmRWZXJpZmljYXRpb25FbWFpbFJlcXVlc3QiMgofUmVzZW5kVmVyaWZpY2F0aW9uRW1haWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjEKIFNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGVSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIjQKIVNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjUKFlZlcmlmeUVtYWlsQ29kZVJlcXVlc3QSDQoFZW1haWwYASABKAkSDAoEY29kZRgCIAEoCSI8ChdWZXJpZnlFbWFpbENvZGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEhAKCHZlcmlmaWVkGAIgASgIIiwKG1JlcXVlc3RQYXNzd29yZFJlc2V0UmVxdWVzdBINCgVlbWFpbBgBIAEoCSIvChxSZXF1ZXN0UGFzc3dvcmRSZXNldFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiOwoUUmVzZXRQYXNzd29yZFJlcXVlc3QSDQoFdG9rZW4YASABKAkSFAoMbmV3X3Bhc3N3b3JkGAIgASgJIigKFVJlc2V0UGFzc3dvcmRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkcKFVVwZGF0ZVBhc3N3b3JkUmVxdWVzdBIYChBjdXJyZW50X3Bhc3N3b3JkGAEgASgJEhQKDG5ld19wYXNzd29yZBgCIAEoCSIpChZVcGRhdGVQYXNzd29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLAoTUmVmcmVzaFRva2VuUmVxdWVzdBIVCg1yZWZyZXNoX3Rva2VuGAEgASgJIkMKFFJlZnJlc2hUb2tlblJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJIhoKGEdldFNlc3Npb25Db250ZXh0UmVxdWVzdCJJChlHZXRTZXNzaW9uQ29udGV4dFJlc3BvbnNlEiwKB2NvbnRleHQYASABKAsyGy5pZGVudGl0eS52MS5TZXNzaW9uQ29udGV4dCIoChNTd2l0Y2hUZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJEChRTd2l0Y2hUZW5hbnRSZXNwb25zZRIsCgdjb250ZXh0GAEgASgLMhsuaWRlbnRpdHkudjEuU2Vzc2lvbkNvbnRleHQiKgoUU3dpdGNoUHJvamVjdFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJFChVTd2l0Y2hQcm9qZWN0UmVzcG9uc2USLAoHY29udGV4dBgBIAEoCzIbLmlkZW50aXR5LnYxLlNlc3Npb25Db250ZXh0IhwKGkNsZWFyU2Vzc2lvbkNvbnRleHRSZXF1ZXN0Ii4KG0NsZWFyU2Vzc2lvbkNvbnRleHRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIg4KDEdldE1lUmVxdWVzdCI1Cg1HZXRNZVJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIi1wEKFkNyZWF0ZUFkbWluVXNlclJlcXVlc3QSDQoFZW1haWwYASABKAkSFwoKZmlyc3RfbmFtZRgCIAEoCUgAiAEBEhYKCWxhc3RfbmFtZRgDIAEoCUgBiAEBEhEKCXRlbmFudF9pZBgEIAEoCRIXCgpwcm9qZWN0X2lkGAUgASgJSAKIAQESJQoEcm9sZRgGIAEoDjIXLmlkZW50aXR5LnYxLkFjY2Vzc1JvbGVCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUINCgtfcHJvamVjdF9pZCI/ChdDcmVhdGVBZG1pblVzZXJSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIiEKE0dldEFkbWluVXNlclJlcXVlc3QSCgoCaWQYASABKAkiPAoUR2V0QWRtaW5Vc2VyUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciLYAQoWVXBkYXRlQWRtaW5Vc2VyUmVxdWVzdBIKCgJpZBgBIAEoCRIXCgpmaXJzdF9uYW1lGAIgASgJSACIAQESFgoJbGFzdF9uYW1lGAMgASgJSAGIAQESFwoKYXZhdGFyX3VybBgEIAEoCUgCiAEBEjEKBnN0YXR1cxgFIAEoDjIcLmlkZW50aXR5LnYxLkFkbWluVXNlclN0YXR1c0gDiAEBQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCDQoLX2F2YXRhcl91cmxCCQoHX3N0YXR1cyI/ChdVcGRhdGVBZG1pblVzZXJSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIskBChVMaXN0QWRtaW5Vc2Vyc1JlcXVlc3QSEwoGc2VhcmNoGAEgASgJSACIAQESKgoEcm9sZRgCIAEoDjIXLmlkZW50aXR5LnYxLkFjY2Vzc1JvbGVIAYgBARIxCgZzdGF0dXMYAyABKA4yHC5pZGVudGl0eS52MS5BZG1pblVzZXJTdGF0dXNIAogBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCCQoHX3NlYXJjaEIHCgVfcm9sZUIJCgdfc3RhdHVzIk4KFkxpc3RBZG1pblVzZXJzUmVzcG9uc2USJQoFaXRlbXMYASADKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXISDQoFdG90YWwYAiABKAUijQEKEkdyYW50QWNjZXNzUmVxdWVzdBIVCg1hZG1pbl91c2VyX2lkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRIXCgpwcm9qZWN0X2lkGAMgASgJSACIAQESJQoEcm9sZRgEIAEoDjIXLmlkZW50aXR5LnYxLkFjY2Vzc1JvbGVCDQoLX3Byb2plY3RfaWQiQwoTR3JhbnRBY2Nlc3NSZXNwb25zZRIsCgZhY2Nlc3MYASABKAsyHC5pZGVudGl0eS52MS5BZG1pblVzZXJBY2Nlc3MiKAoTUmV2b2tlQWNjZXNzUmVxdWVzdBIRCglhY2Nlc3NfaWQYASABKAkiJwoUUmV2b2tlQWNjZXNzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJKChVDcmVhdGVDdXN0b21lclJlcXVlc3QSDQoFZW1haWwYASABKAkSFQoIcGFzc3dvcmQYAiABKAlIAIgBAUILCglfcGFzc3dvcmQiQQoWQ3JlYXRlQ3VzdG9tZXJSZXNwb25zZRInCghjdXN0b21lchgBIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIiAKEkdldEN1c3RvbWVyUmVxdWVzdBIKCgJpZBgBIAEoCSI+ChNHZXRDdXN0b21lclJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIifgoVVXBkYXRlQ3VzdG9tZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhIKBWVtYWlsGAIgASgJSACIAQESMAoGc3RhdHVzGAMgASgOMhsuaWRlbnRpdHkudjEuQ3VzdG9tZXJTdGF0dXNIAYgBAUIICgZfZW1haWxCCQoHX3N0YXR1cyJBChZVcGRhdGVDdXN0b21lclJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiIwoVRGVsZXRlQ3VzdG9tZXJSZXF1ZXN0EgoKAmlkGAEgASgJIikKFkRlbGV0ZUN1c3RvbWVyUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCKSAQoUTGlzdEN1c3RvbWVyc1JlcXVlc3QSEwoGc2VhcmNoGAEgASgJSACIAQESMAoGc3RhdHVzGAIgASgOMhsuaWRlbnRpdHkudjEuQ3VzdG9tZXJTdGF0dXNIAYgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCCQoHX3NlYXJjaEIJCgdfc3RhdHVzIkwKFUxpc3RDdXN0b21lcnNSZXNwb25zZRIkCgVpdGVtcxgBIAMoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyEg0KBXRvdGFsGAIgASgFIiQKFlN1c3BlbmRDdXN0b21lclJlcXVlc3QSCgoCaWQYASABKAkiQgoXU3VzcGVuZEN1c3RvbWVyUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciIjChNDcmVhdGVUZW5hbnRSZXF1ZXN0EgwKBG5hbWUYASABKAkiOwoUQ3JlYXRlVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50Ih4KEEdldFRlbmFudFJlcXVlc3QSCgoCaWQYASABKAkiOAoRR2V0VGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IngKE1VwZGF0ZVRlbmFudFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEi4KBnN0YXR1cxgDIAEoDjIZLmlkZW50aXR5LnYxLlRlbmFudFN0YXR1c0gBiAEBQgcKBV9uYW1lQgkKB19zdGF0dXMiOwoUVXBkYXRlVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50Im4KEkxpc3RUZW5hbnRzUmVxdWVzdBIuCgZzdGF0dXMYASABKA4yGS5pZGVudGl0eS52MS5UZW5hbnRTdGF0dXNIAIgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCCQoHX3N0YXR1cyJIChNMaXN0VGVuYW50c1Jlc3BvbnNlEiIKBWl0ZW1zGAEgAygLMhMuaWRlbnRpdHkudjEuVGVuYW50Eg0KBXRvdGFsGAIgASgFIiEKE0RlbGV0ZVRlbmFudFJlcXVlc3QSCgoCaWQYASABKAkiJwoURGVsZXRlVGVuYW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLrAgoUQ3JlYXRlUHJvamVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCRIYCgtkZXNjcmlwdGlvbhgCIAEoCUgAiAEBEhEKCXRlbmFudF9pZBgDIAEoCRIgChNkZWZhdWx0X2xvY2FsZV9jb2RlGAQgASgJSAGIAQESKAobZGVmYXVsdF9sb2NhbGVfZGlzcGxheV9uYW1lGAUgASgJSAKIAQESJwoaZGVmYXVsdF9sb2NhbGVfbmF0aXZlX25hbWUYBiABKAlIA4gBARIiChVkZWZhdWx0X2xvY2FsZV9pc19ydGwYByABKAhIBIgBAUIOCgxfZGVzY3JpcHRpb25CFgoUX2RlZmF1bHRfbG9jYWxlX2NvZGVCHgocX2RlZmF1bHRfbG9jYWxlX2Rpc3BsYXlfbmFtZUIdChtfZGVmYXVsdF9sb2NhbGVfbmF0aXZlX25hbWVCGAoWX2RlZmF1bHRfbG9jYWxlX2lzX3J0bCI+ChVDcmVhdGVQcm9qZWN0UmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmlkZW50aXR5LnYxLlByb2plY3QiHwoRR2V0UHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkiOwoSR2V0UHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0IqQBChRVcGRhdGVQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESGAoLZGVzY3JpcHRpb24YAyABKAlIAYgBARIvCgZzdGF0dXMYBCABKA4yGi5pZGVudGl0eS52MS5Qcm9qZWN0U3RhdHVzSAKIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19zdGF0dXMiPgoVVXBkYXRlUHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0IoMBChNMaXN0UHJvamVjdHNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIvCgZzdGF0dXMYAiABKA4yGi5pZGVudGl0eS52MS5Qcm9qZWN0U3RhdHVzSACIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgkKB19zdGF0dXMiSgoUTGlzdFByb2plY3RzUmVzcG9uc2USIwoFaXRlbXMYASADKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Eg0KBXRvdGFsGAIgASgFIiIKFERlbGV0ZVByb2plY3RSZXF1ZXN0EgoKAmlkGAEgASgJIigKFURlbGV0ZVByb2plY3RSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi0KGEdldERlZmF1bHRQcm9qZWN0UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiQgoZR2V0RGVmYXVsdFByb2plY3RSZXNwb25zZRIlCgdwcm9qZWN0GAEgASgLMhQuaWRlbnRpdHkudjEuUHJvamVjdCIuChhTZXREZWZhdWx0UHJvamVjdFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJCChlTZXREZWZhdWx0UHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0IscBChdDcmVhdGVJbnZpdGF0aW9uUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIRCgl0ZW5hbnRfaWQYAiABKAkSEwoLcHJvamVjdF9pZHMYAyADKAkSJQoEcm9sZRgEIAEoDjIXLmlkZW50aXR5LnYxLkFjY2Vzc1JvbGUSLAoLaW52aXRlX3R5cGUYBSABKA4yFy5pZGVudGl0eS52MS5JbnZpdGVUeXBlEhQKB21lc3NhZ2UYBiABKAlIAIgBAUIKCghfbWVzc2FnZSJHChhDcmVhdGVJbnZpdGF0aW9uUmVzcG9uc2USKwoKaW52aXRhdGlvbhgBIAEoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24iiQEKFkxpc3RJbnZpdGF0aW9uc1JlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEjIKBnN0YXR1cxgCIAEoDjIdLmlkZW50aXR5LnYxLkludml0YXRpb25TdGF0dXNIAIgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCCQoHX3N0YXR1cyJQChdMaXN0SW52aXRhdGlvbnNSZXNwb25zZRImCgVpdGVtcxgBIAMoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24SDQoFdG90YWwYAiABKAUiMAoXUmV2b2tlSW52aXRhdGlvblJlcXVlc3QSFQoNaW52aXRhdGlvbl9pZBgBIAEoCSIrChhSZXZva2VJbnZpdGF0aW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJMChdBY2NlcHRJbnZpdGF0aW9uUmVxdWVzdBINCgV0b2tlbhgBIAEoCRIVCghwYXNzd29yZBgCIAEoCUgAiAEBQgsKCV9wYXNzd29yZCJUChhBY2NlcHRJbnZpdGF0aW9uUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlchISCgpzZXNzaW9uX2lkGAIgASgJIioKGVZhbGlkYXRlSW52aXRhdGlvblJlcXVlc3QSDQoFdG9rZW4YASABKAkiSQoaVmFsaWRhdGVJbnZpdGF0aW9uUmVzcG9uc2USKwoKaW52aXRhdGlvbhgBIAEoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24iuQIKE0NyZWF0ZUFwaUtleVJlcXVlc3QSDAoEbmFtZRgBIAEoCRIpCghrZXlfdHlwZRgCIAEoDjIXLmlkZW50aXR5LnYxLkFwaUtleVR5cGUSLAoGc2NvcGVzGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEiAKE3JhdGVfbGltaXRfcGVyX2hvdXIYBCABKAVIAYgBARIzCgpleHBpcmVzX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEhYKDmFsbG93ZWRfbW9kZWxzGAYgAygJEhoKEmFsbG93ZWRfZmlsZV90eXBlcxgHIAMoCUIJCgdfc2NvcGVzQhYKFF9yYXRlX2xpbWl0X3Blcl9ob3VyQg0KC19leHBpcmVzX2F0IjwKFENyZWF0ZUFwaUtleVJlc3BvbnNlEiQKB2FwaV9rZXkYASABKAsyEy5pZGVudGl0eS52MS5BcGlLZXkiHgoQR2V0QXBpS2V5UmVxdWVzdBIKCgJpZBgBIAEoCSI5ChFHZXRBcGlLZXlSZXNwb25zZRIkCgdhcGlfa2V5GAEgASgLMhMuaWRlbnRpdHkudjEuQXBpS2V5IjMKEkxpc3RBcGlLZXlzUmVxdWVzdBINCgVsaW1pdBgBIAEoBRIOCgZvZmZzZXQYAiABKAUiSAoTTGlzdEFwaUtleXNSZXNwb25zZRIiCgVpdGVtcxgBIAMoCzITLmlkZW50aXR5LnYxLkFwaUtleRINCgV0b3RhbBgCIAEoBSLWAQoTVXBkYXRlQXBpS2V5UmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESFgoJaXNfYWN0aXZlGAMgASgISAGIAQESLAoGc2NvcGVzGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEiAKE3JhdGVfbGltaXRfcGVyX2hvdXIYBSABKAVIA4gBAUIHCgVfbmFtZUIMCgpfaXNfYWN0aXZlQgkKB19zY29wZXNCFgoUX3JhdGVfbGltaXRfcGVyX2hvdXIiPAoUVXBkYXRlQXBpS2V5UmVzcG9uc2USJAoHYXBpX2tleRgBIAEoCzITLmlkZW50aXR5LnYxLkFwaUtleSIhChNSb3RhdGVBcGlLZXlSZXF1ZXN0EgoKAmlkGAEgASgJIjwKFFJvdGF0ZUFwaUtleVJlc3BvbnNlEiQKB2FwaV9rZXkYASABKAsyEy5pZGVudGl0eS52MS5BcGlLZXkiIQoTUmV2b2tlQXBpS2V5UmVxdWVzdBIKCgJpZBgBIAEoCSInChRSZXZva2VBcGlLZXlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIvoCCgxBdXRoUHJvdmlkZXISCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSDAoEdHlwZRgEIAEoCRInCgZjb25maWcYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg8KB2VuYWJsZWQYBiABKAgSEgoKaXNfZGVmYXVsdBgHIAEoCBIQCghwcmlvcml0eRgIIAEoBRIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIXCgpjcmVhdGVkX2J5GB4gASgJSACIAQESFwoKdXBkYXRlZF9ieRgfIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5IlsKGExpc3RBdXRoUHJvdmlkZXJzUmVxdWVzdBIUCgdlbmFibGVkGAEgASgISACIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgoKCF9lbmFibGVkIlgKGUxpc3RBdXRoUHJvdmlkZXJzUmVzcG9uc2USLAoJcHJvdmlkZXJzGAEgAygLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyEg0KBXRvdGFsGAIgASgFIiQKFkdldEF1dGhQcm92aWRlclJlcXVlc3QSCgoCaWQYASABKAkiRgoXR2V0QXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIi2wEKGUNyZWF0ZUF1dGhQcm92aWRlclJlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSDAoEdHlwZRgDIAEoCRInCgZjb25maWcYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhQKB2VuYWJsZWQYBSABKAhIAIgBARIXCgppc19kZWZhdWx0GAYgASgISAGIAQESFQoIcHJpb3JpdHkYByABKAVIAogBAUIKCghfZW5hYmxlZEINCgtfaXNfZGVmYXVsdEILCglfcHJpb3JpdHkiSQoaQ3JlYXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIi6gEKGVVwZGF0ZUF1dGhQcm92aWRlclJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEiwKBmNvbmZpZxgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARIUCgdlbmFibGVkGAQgASgISAKIAQESFwoKaXNfZGVmYXVsdBgFIAEoCEgDiAEBEhUKCHByaW9yaXR5GAYgASgFSASIAQFCBwoFX25hbWVCCQoHX2NvbmZpZ0IKCghfZW5hYmxlZEINCgtfaXNfZGVmYXVsdEILCglfcHJpb3JpdHkiSQoaVXBkYXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiJwoZRGVsZXRlQXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCSItChpEZWxldGVBdXRoUHJvdmlkZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIh4KHEVuYWJsZWRPQXV0aFByb3ZpZGVyc1JlcXVlc3QiMgodRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVzcG9uc2USEQoJcHJvdmlkZXJzGAEgAygJIioKF01pbnRTZXJ2aWNlVG9rZW5SZXF1ZXN0Eg8KB3B1cnBvc2UYASABKAkiTgoYTWludFNlcnZpY2VUb2tlblJlc3BvbnNlEg0KBXRva2VuGAEgASgJEg8KB3B1cnBvc2UYAiABKAkSEgoKZXhwaXJlc19hdBgDIAEoCSKOAQoWVXBkYXRlTXlQcm9maWxlUmVxdWVzdBIXCgpmaXJzdF9uYW1lGAEgASgJSACIAQESFgoJbGFzdF9uYW1lGAIgASgJSAGIAQESFwoKYXZhdGFyX3VybBgDIAEoCUgCiAEBQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCDQoLX2F2YXRhcl91cmwiPwoXVXBkYXRlTXlQcm9maWxlUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciIfCh1MaXN0TXlPQXV0aENvbm5lY3Rpb25zUmVxdWVzdCKNAQoPT0F1dGhDb25uZWN0aW9uEhAKCHByb3ZpZGVyGAEgASgJEhgKEHByb3ZpZGVyX3VzZXJfaWQYAiABKAkSEgoFZW1haWwYAyABKAlIAIgBARIwCgxjb25uZWN0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQggKBl9lbWFpbCJTCh5MaXN0TXlPQXV0aENvbm5lY3Rpb25zUmVzcG9uc2USMQoLY29ubmVjdGlvbnMYASADKAsyHC5pZGVudGl0eS52MS5PQXV0aENvbm5lY3Rpb24iLgoaVW5saW5rT0F1dGhQcm92aWRlclJlcXVlc3QSEAoIcHJvdmlkZXIYASABKAkiLgobVW5saW5rT0F1dGhQcm92aWRlclJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLgodQ2hlY2tFbWFpbEF2YWlsYWJpbGl0eVJlcXVlc3QSDQoFZW1haWwYASABKAkiMwoeQ2hlY2tFbWFpbEF2YWlsYWJpbGl0eVJlc3BvbnNlEhEKCWF2YWlsYWJsZRgBIAEoCCKPAQobQ29tcGxldGVBY2NvdW50U2V0dXBSZXF1ZXN0EhcKCmZpcnN0X25hbWUYASABKAlIAIgBARIWCglsYXN0X25hbWUYAiABKAlIAYgBARIVCghwYXNzd29yZBgDIAEoCUgCiAEBQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCCwoJX3Bhc3N3b3JkIlsKHENvbXBsZXRlQWNjb3VudFNldHVwUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIZCgxyZWRpcmVjdF91cmwYAiABKAlIAIgBAUIPCg1fcmVkaXJlY3RfdXJsIi0KGkNyZWF0ZVNpZ251cFNlc3Npb25SZXF1ZXN0Eg8KB3VzZXJfaWQYASABKAkiLgobQ3JlYXRlU2lnbnVwU2Vzc2lvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiMAoXUmVzZW5kSW52aXRhdGlvblJlcXVlc3QSFQoNaW52aXRhdGlvbl9pZBgBIAEoCSIrChhSZXNlbmRJbnZpdGF0aW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIiChRHZXRJbnZpdGF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJEChVHZXRJbnZpdGF0aW9uUmVzcG9uc2USKwoKaW52aXRhdGlvbhgBIAEoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24iKgoVQWN0aXZhdGVUZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSI9ChZBY3RpdmF0ZVRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCIwChtTdXNwZW5kVGVuYW50QWNjb3VudFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJIkMKHFN1c3BlbmRUZW5hbnRBY2NvdW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IigKE0NhbmNlbFRlbmFudFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJIjsKFENhbmNlbFRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCIsChdSZWFjdGl2YXRlVGVuYW50UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiPwoYUmVhY3RpdmF0ZVRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCItChhNYXJrVGVuYW50UGFzdER1ZVJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJIkAKGU1hcmtUZW5hbnRQYXN0RHVlUmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IicKEkNodXJuVGVuYW50UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiOgoTQ2h1cm5UZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiHgocR2V0Q3VzdG9tZXJBdXRoQ29uZmlnUmVxdWVzdCKaAgoSQ3VzdG9tZXJBdXRoQ29uZmlnEhEKCWFsZ29yaXRobRgBIAEoCRITCgZpc3N1ZXIYAiABKAlIAIgBARIVCghhdWRpZW5jZRgDIAEoCUgBiAEBEjcKDmtleV9yb3RhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEhgKC3NpZ25pbmdfa2V5GAUgASgJSAOIAQESLAoGY2xhaW1zGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBQgkKB19pc3N1ZXJCCwoJX2F1ZGllbmNlQhEKD19rZXlfcm90YXRlZF9hdEIOCgxfc2lnbmluZ19rZXlCCQoHX2NsYWltcyJQCh1HZXRDdXN0b21lckF1dGhDb25maWdSZXNwb25zZRIvCgZjb25maWcYASABKAsyHy5pZGVudGl0eS52MS5DdXN0b21lckF1dGhDb25maWciKwoaVmVyaWZ5Q3VzdG9tZXJUb2tlblJlcXVlc3QSDQoFdG9rZW4YASABKAkiswIKG1ZlcmlmeUN1c3RvbWVyVG9rZW5SZXNwb25zZRINCgV2YWxpZBgBIAEoCBISCgVlcnJvchgCIAEoCUgAiAEBEhgKC2N1c3RvbWVyX2lkGAMgASgJSAGIAQESEgoFZW1haWwYBCABKAlIAogBARIWCgl0ZW5hbnRfaWQYBSABKAlIA4gBARIXCgpwcm9qZWN0X2lkGAYgASgJSASIAQESDQoFcm9sZXMYByADKAkSMwoKZXhwaXJlc19hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBAUIICgZfZXJyb3JCDgoMX2N1c3RvbWVyX2lkQggKBl9lbWFpbEIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQg0KC19leHBpcmVzX2F0IiQKIkdldEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1c1JlcXVlc3Qi2wEKGEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1cxIhChluYXRpdmVfbWFuYWdlbWVudF9lbmFibGVkGAEgASgIEiIKFWV4dGVybmFsX3Byb3ZpZGVyX3VybBgCIAEoCUgAiAEBEiMKFmV4dGVybmFsX3Byb3ZpZGVyX25hbWUYAyABKAlIAYgBARITCgZyZWFzb24YBCABKAlIAogBAUIYChZfZXh0ZXJuYWxfcHJvdmlkZXJfdXJsQhkKF19leHRlcm5hbF9wcm92aWRlcl9uYW1lQgkKB19yZWFzb24iXAojR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzUmVzcG9uc2USNQoGc3RhdHVzGAEgASgLMiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzIigKFVZhbGlkYXRlQXBpS2V5UmVxdWVzdBIPCgdhcGlfa2V5GAEgASgJIswBChZWYWxpZGF0ZUFwaUtleVJlc3BvbnNlEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhIKCnByb2plY3RfaWQYBCABKAkSEAoIa2V5X3R5cGUYBSABKAkSDgoGc2NvcGVzGAYgAygJEhYKDmFsbG93ZWRfbW9kZWxzGAcgAygJEhoKEmFsbG93ZWRfZmlsZV90eXBlcxgIIAMoCRIbChNyYXRlX2xpbWl0X3Blcl9ob3VyGAkgASgFIjcKFEN1c3RvbWVyTG9naW5SZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhAKCHBhc3N3b3JkGAIgASgJIm0KFUN1c3RvbWVyTG9naW5SZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCRInCghjdXN0b21lchgDIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIn8KF0N1c3RvbWVyUmVnaXN0ZXJSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhAKCHBhc3N3b3JkGAIgASgJEjIKDHByb2ZpbGVfZGF0YRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBAUIPCg1fcHJvZmlsZV9kYXRhInAKGEN1c3RvbWVyUmVnaXN0ZXJSZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCRInCghjdXN0b21lchgDIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIjQKG0N1c3RvbWVyUmVmcmVzaFRva2VuUmVxdWVzdBIVCg1yZWZyZXNoX3Rva2VuGAEgASgJIksKHEN1c3RvbWVyUmVmcmVzaFRva2VuUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkiKgoZQ3VzdG9tZXJSZXF1ZXN0T1RQUmVxdWVzdBINCgVlbWFpbBgBIAEoCSIqChpDdXN0b21lclJlcXVlc3RPVFBSZXNwb25zZRIMCgRzZW50GAEgASgIIjsKGEN1c3RvbWVyVmVyaWZ5T1RQUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghvdHBfY29kZRgCIAEoCSJxChlDdXN0b21lclZlcmlmeU9UUFJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJEicKCGN1c3RvbWVyGAMgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiNAojQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldFJlcXVlc3QSDQoFZW1haWwYASABKAkiNAokQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldFJlc3BvbnNlEgwKBHNlbnQYASABKAgiQwocQ3VzdG9tZXJSZXNldFBhc3N3b3JkUmVxdWVzdBINCgV0b2tlbhgBIAEoCRIUCgxuZXdfcGFzc3dvcmQYAiABKAkiMAodQ3VzdG9tZXJSZXNldFBhc3N3b3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCqxAQoPQWRtaW5Vc2VyU3RhdHVzEiEKHUFETUlOX1VTRVJfU1RBVFVTX1VOU1BFQ0lGSUVEEAASHAoYQURNSU5fVVNFUl9TVEFUVVNfQUNUSVZFEAESHQoZQURNSU5fVVNFUl9TVEFUVVNfUEVORElORxACEh8KG0FETUlOX1VTRVJfU1RBVFVTX1NVU1BFTkRFRBADEh0KGUFETUlOX1VTRVJfU1RBVFVTX0RFTEVURUQQBCqJAQoOQ3VzdG9tZXJTdGF0dXMSHwobQ1VTVE9NRVJfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGgoWQ1VTVE9NRVJfU1RBVFVTX0FDVElWRRABEhsKF0NVU1RPTUVSX1NUQVRVU19QRU5ESU5HEAISHQoZQ1VTVE9NRVJfU1RBVFVTX1NVU1BFTkRFRBADKtkBCgxUZW5hbnRTdGF0dXMSHQoZVEVOQU5UX1NUQVRVU19VTlNQRUNJRklFRBAAEh8KG1RFTkFOVF9TVEFUVVNfUEVORElOR19TRVRVUBABEhgKFFRFTkFOVF9TVEFUVVNfQUNUSVZFEAISGgoWVEVOQU5UX1NUQVRVU19QQVNUX0RVRRADEhsKF1RFTkFOVF9TVEFUVVNfU1VTUEVOREVEEAQSGwoXVEVOQU5UX1NUQVRVU19DQU5DRUxMRUQQBRIZChVURU5BTlRfU1RBVFVTX0NIVVJORUQQBipmCg1Qcm9qZWN0U3RhdHVzEh4KGlBST0pFQ1RfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGQoVUFJPSkVDVF9TVEFUVVNfQUNUSVZFEAESGgoWUFJPSkVDVF9TVEFUVVNfREVMRVRFRBACKqYBCgpBY2Nlc3NSb2xlEhsKF0FDQ0VTU19ST0xFX1VOU1BFQ0lGSUVEEAASHAoYQUNDRVNTX1JPTEVfVEVOQU5UX09XTkVSEAESHQoZQUNDRVNTX1JPTEVfUFJPSkVDVF9BRE1JThACEh4KGkFDQ0VTU19ST0xFX1BST0pFQ1RfRURJVE9SEAMSHgoaQUNDRVNTX1JPTEVfUFJPSkVDVF9WSUVXRVIQBCpkCgpJbnZpdGVUeXBlEhsKF0lOVklURV9UWVBFX1VOU1BFQ0lGSUVEEAASHAoYSU5WSVRFX1RZUEVfVEVOQU5UX09XTkVSEAESGwoXSU5WSVRFX1RZUEVfVEVBTV9NRU1CRVIQAiqyAQoQSW52aXRhdGlvblN0YXR1cxIhCh1JTlZJVEFUSU9OX1NUQVRVU19VTlNQRUNJRklFRBAAEh0KGUlOVklUQVRJT05fU1RBVFVTX1BFTkRJTkcQARIeChpJTlZJVEFUSU9OX1NUQVRVU19BQ0NFUFRFRBACEh0KGUlOVklUQVRJT05fU1RBVFVTX0VYUElSRUQQAxIdChlJTlZJVEFUSU9OX1NUQVRVU19SRVZPS0VEEAQqXAoKQXBpS2V5VHlwZRIcChhBUElfS0VZX1RZUEVfVU5TUEVDSUZJRUQQABIXChNBUElfS0VZX1RZUEVfUFVCTElDEAESFwoTQVBJX0tFWV9UWVBFX1NFQ1JFVBACMsM+Cg9JZGVudGl0eVNlcnZpY2USPgoFTG9naW4SGS5pZGVudGl0eS52MS5Mb2dpblJlcXVlc3QaGi5pZGVudGl0eS52MS5Mb2dpblJlc3BvbnNlElMKDExvZ2luV2l0aE9UUBIgLmlkZW50aXR5LnYxLkxvZ2luV2l0aE9UUFJlcXVlc3QaIS5pZGVudGl0eS52MS5Mb2dpbldpdGhPVFBSZXNwb25zZRJNCgpSZXF1ZXN0T1RQEh4uaWRlbnRpdHkudjEuUmVxdWVzdE9UUFJlcXVlc3QaHy5pZGVudGl0eS52MS5SZXF1ZXN0T1RQUmVzcG9uc2USQQoGTG9nb3V0EhouaWRlbnRpdHkudjEuTG9nb3V0UmVxdWVzdBobLmlkZW50aXR5LnYxLkxvZ291dFJlc3BvbnNlEkcKCFJlZ2lzdGVyEhwuaWRlbnRpdHkudjEuUmVnaXN0ZXJSZXF1ZXN0Gh0uaWRlbnRpdHkudjEuUmVnaXN0ZXJSZXNwb25zZRJQCgtWZXJpZnlFbWFpbBIfLmlkZW50aXR5LnYxLlZlcmlmeUVtYWlsUmVxdWVzdBogLmlkZW50aXR5LnYxLlZlcmlmeUVtYWlsUmVzcG9uc2USdAoXUmVzZW5kVmVyaWZpY2F0aW9uRW1haWwSKy5pZGVudGl0eS52MS5SZXNlbmRWZXJpZmljYXRpb25FbWFpbFJlcXVlc3QaLC5pZGVudGl0eS52MS5SZXNlbmRWZXJpZmljYXRpb25FbWFpbFJlc3BvbnNlEnoKGVNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGUSLS5pZGVudGl0eS52MS5TZW5kRW1haWxWZXJpZmljYXRpb25Db2RlUmVxdWVzdBouLmlkZW50aXR5LnYxLlNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGVSZXNwb25zZRJcCg9WZXJpZnlFbWFpbENvZGUSIy5pZGVudGl0eS52MS5WZXJpZnlFbWFpbENvZGVSZXF1ZXN0GiQuaWRlbnRpdHkudjEuVmVyaWZ5RW1haWxDb2RlUmVzcG9uc2USawoUUmVxdWVzdFBhc3N3b3JkUmVzZXQSKC5pZGVudGl0eS52MS5SZXF1ZXN0UGFzc3dvcmRSZXNldFJlcXVlc3QaKS5pZGVudGl0eS52MS5SZXF1ZXN0UGFzc3dvcmRSZXNldFJlc3BvbnNlElYKDVJlc2V0UGFzc3dvcmQSIS5pZGVudGl0eS52MS5SZXNldFBhc3N3b3JkUmVxdWVzdBoiLmlkZW50aXR5LnYxLlJlc2V0UGFzc3dvcmRSZXNwb25zZRJZCg5VcGRhdGVQYXNzd29yZBIiLmlkZW50aXR5LnYxLlVwZGF0ZVBhc3N3b3JkUmVxdWVzdBojLmlkZW50aXR5LnYxLlVwZGF0ZVBhc3N3b3JkUmVzcG9uc2USUwoMUmVmcmVzaFRva2VuEiAuaWRlbnRpdHkudjEuUmVmcmVzaFRva2VuUmVxdWVzdBohLmlkZW50aXR5LnYxLlJlZnJlc2hUb2tlblJlc3BvbnNlEmIKEUdldFNlc3Npb25Db250ZXh0EiUuaWRlbnRpdHkudjEuR2V0U2Vzc2lvbkNvbnRleHRSZXF1ZXN0GiYuaWRlbnRpdHkudjEuR2V0U2Vzc2lvbkNvbnRleHRSZXNwb25zZRJTCgxTd2l0Y2hUZW5hbnQSIC5pZGVudGl0eS52MS5Td2l0Y2hUZW5hbnRSZXF1ZXN0GiEuaWRlbnRpdHkudjEuU3dpdGNoVGVuYW50UmVzcG9uc2USVgoNU3dpdGNoUHJvamVjdBIhLmlkZW50aXR5LnYxLlN3aXRjaFByb2plY3RSZXF1ZXN0GiIuaWRlbnRpdHkudjEuU3dpdGNoUHJvamVjdFJlc3BvbnNlEmgKE0NsZWFyU2Vzc2lvbkNvbnRleHQSJy5pZGVudGl0eS52MS5DbGVhclNlc3Npb25Db250ZXh0UmVxdWVzdBooLmlkZW50aXR5LnYxLkNsZWFyU2Vzc2lvbkNvbnRleHRSZXNwb25zZRI+CgVHZXRNZRIZLmlkZW50aXR5LnYxLkdldE1lUmVxdWVzdBoaLmlkZW50aXR5LnYxLkdldE1lUmVzcG9uc2USXAoPQ3JlYXRlQWRtaW5Vc2VyEiMuaWRlbnRpdHkudjEuQ3JlYXRlQWRtaW5Vc2VyUmVxdWVzdBokLmlkZW50aXR5LnYxLkNyZWF0ZUFkbWluVXNlclJlc3BvbnNlElMKDEdldEFkbWluVXNlchIgLmlkZW50aXR5LnYxLkdldEFkbWluVXNlclJlcXVlc3QaIS5pZGVudGl0eS52MS5HZXRBZG1pblVzZXJSZXNwb25zZRJcCg9VcGRhdGVBZG1pblVzZXISIy5pZGVudGl0eS52MS5VcGRhdGVBZG1pblVzZXJSZXF1ZXN0GiQuaWRlbnRpdHkudjEuVXBkYXRlQWRtaW5Vc2VyUmVzcG9uc2USWQoOTGlzdEFkbWluVXNlcnMSIi5pZGVudGl0eS52MS5MaXN0QWRtaW5Vc2Vyc1JlcXVlc3QaIy5pZGVudGl0eS52MS5MaXN0QWRtaW5Vc2Vyc1Jlc3BvbnNlElAKC0dyYW50QWNjZXNzEh8uaWRlbnRpdHkudjEuR3JhbnRBY2Nlc3NSZXF1ZXN0GiAuaWRlbnRpdHkudjEuR3JhbnRBY2Nlc3NSZXNwb25zZRJTCgxSZXZva2VBY2Nlc3MSIC5pZGVudGl0eS52MS5SZXZva2VBY2Nlc3NSZXF1ZXN0GiEuaWRlbnRpdHkudjEuUmV2b2tlQWNjZXNzUmVzcG9uc2USWQoOQ3JlYXRlQ3VzdG9tZXISIi5pZGVudGl0eS52MS5DcmVhdGVDdXN0b21lclJlcXVlc3QaIy5pZGVudGl0eS52MS5DcmVhdGVDdXN0b21lclJlc3BvbnNlElAKC0dldEN1c3RvbWVyEh8uaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJSZXF1ZXN0GiAuaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJSZXNwb25zZRJZCg5VcGRhdGVDdXN0b21lchIiLmlkZW50aXR5LnYxLlVwZGF0ZUN1c3RvbWVyUmVxdWVzdBojLmlkZW50aXR5LnYxLlVwZGF0ZUN1c3RvbWVyUmVzcG9uc2USWQoORGVsZXRlQ3VzdG9tZXISIi5pZGVudGl0eS52MS5EZWxldGVDdXN0b21lclJlcXVlc3QaIy5pZGVudGl0eS52MS5EZWxldGVDdXN0b21lclJlc3BvbnNlElYKDUxpc3RDdXN0b21lcnMSIS5pZGVudGl0eS52MS5MaXN0Q3VzdG9tZXJzUmVxdWVzdBoiLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lcnNSZXNwb25zZRJcCg9TdXNwZW5kQ3VzdG9tZXISIy5pZGVudGl0eS52MS5TdXNwZW5kQ3VzdG9tZXJSZXF1ZXN0GiQuaWRlbnRpdHkudjEuU3VzcGVuZEN1c3RvbWVyUmVzcG9uc2USUwoMQ3JlYXRlVGVuYW50EiAuaWRlbnRpdHkudjEuQ3JlYXRlVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLkNyZWF0ZVRlbmFudFJlc3BvbnNlEkoKCUdldFRlbmFudBIdLmlkZW50aXR5LnYxLkdldFRlbmFudFJlcXVlc3QaHi5pZGVudGl0eS52MS5HZXRUZW5hbnRSZXNwb25zZRJTCgxVcGRhdGVUZW5hbnQSIC5pZGVudGl0eS52MS5VcGRhdGVUZW5hbnRSZXF1ZXN0GiEuaWRlbnRpdHkudjEuVXBkYXRlVGVuYW50UmVzcG9uc2USUAoLTGlzdFRlbmFudHMSHy5pZGVudGl0eS52MS5MaXN0VGVuYW50c1JlcXVlc3QaIC5pZGVudGl0eS52MS5MaXN0VGVuYW50c1Jlc3BvbnNlElMKDERlbGV0ZVRlbmFudBIgLmlkZW50aXR5LnYxLkRlbGV0ZVRlbmFudFJlcXVlc3QaIS5pZGVudGl0eS52MS5EZWxldGVUZW5hbnRSZXNwb25zZRJWCg1DcmVhdGVQcm9qZWN0EiEuaWRlbnRpdHkudjEuQ3JlYXRlUHJvamVjdFJlcXVlc3QaIi5pZGVudGl0eS52MS5DcmVhdGVQcm9qZWN0UmVzcG9uc2USTQoKR2V0UHJvamVjdBIeLmlkZW50aXR5LnYxLkdldFByb2plY3RSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuR2V0UHJvamVjdFJlc3BvbnNlElYKDVVwZGF0ZVByb2plY3QSIS5pZGVudGl0eS52MS5VcGRhdGVQcm9qZWN0UmVxdWVzdBoiLmlkZW50aXR5LnYxLlVwZGF0ZVByb2plY3RSZXNwb25zZRJTCgxMaXN0UHJvamVjdHMSIC5pZGVudGl0eS52MS5MaXN0UHJvamVjdHNSZXF1ZXN0GiEuaWRlbnRpdHkudjEuTGlzdFByb2plY3RzUmVzcG9uc2USVgoNRGVsZXRlUHJvamVjdBIhLmlkZW50aXR5LnYxLkRlbGV0ZVByb2plY3RSZXF1ZXN0GiIuaWRlbnRpdHkudjEuRGVsZXRlUHJvamVjdFJlc3BvbnNlEmIKEUdldERlZmF1bHRQcm9qZWN0EiUuaWRlbnRpdHkudjEuR2V0RGVmYXVsdFByb2plY3RSZXF1ZXN0GiYuaWRlbnRpdHkudjEuR2V0RGVmYXVsdFByb2plY3RSZXNwb25zZRJiChFTZXREZWZhdWx0UHJvamVjdBIlLmlkZW50aXR5LnYxLlNldERlZmF1bHRQcm9qZWN0UmVxdWVzdBomLmlkZW50aXR5LnYxLlNldERlZmF1bHRQcm9qZWN0UmVzcG9uc2USXwoQQ3JlYXRlSW52aXRhdGlvbhIkLmlkZW50aXR5LnYxLkNyZWF0ZUludml0YXRpb25SZXF1ZXN0GiUuaWRlbnRpdHkudjEuQ3JlYXRlSW52aXRhdGlvblJlc3BvbnNlElwKD0xpc3RJbnZpdGF0aW9ucxIjLmlkZW50aXR5LnYxLkxpc3RJbnZpdGF0aW9uc1JlcXVlc3QaJC5pZGVudGl0eS52MS5MaXN0SW52aXRhdGlvbnNSZXNwb25zZRJfChBSZXZva2VJbnZpdGF0aW9uEiQuaWRlbnRpdHkudjEuUmV2b2tlSW52aXRhdGlvblJlcXVlc3QaJS5pZGVudGl0eS52MS5SZXZva2VJbnZpdGF0aW9uUmVzcG9uc2USXwoQQWNjZXB0SW52aXRhdGlvbhIkLmlkZW50aXR5LnYxLkFjY2VwdEludml0YXRpb25SZXF1ZXN0GiUuaWRlbnRpdHkudjEuQWNjZXB0SW52aXRhdGlvblJlc3BvbnNlEmUKElZhbGlkYXRlSW52aXRhdGlvbhImLmlkZW50aXR5LnYxLlZhbGlkYXRlSW52aXRhdGlvblJlcXVlc3QaJy5pZGVudGl0eS52MS5WYWxpZGF0ZUludml0YXRpb25SZXNwb25zZRJTCgxDcmVhdGVBcGlLZXkSIC5pZGVudGl0eS52MS5DcmVhdGVBcGlLZXlSZXF1ZXN0GiEuaWRlbnRpdHkudjEuQ3JlYXRlQXBpS2V5UmVzcG9uc2USSgoJR2V0QXBpS2V5Eh0uaWRlbnRpdHkudjEuR2V0QXBpS2V5UmVxdWVzdBoeLmlkZW50aXR5LnYxLkdldEFwaUtleVJlc3BvbnNlElAKC0xpc3RBcGlLZXlzEh8uaWRlbnRpdHkudjEuTGlzdEFwaUtleXNSZXF1ZXN0GiAuaWRlbnRpdHkudjEuTGlzdEFwaUtleXNSZXNwb25zZRJTCgxVcGRhdGVBcGlLZXkSIC5pZGVudGl0eS52MS5VcGRhdGVBcGlLZXlSZXF1ZXN0GiEuaWRlbnRpdHkudjEuVXBkYXRlQXBpS2V5UmVzcG9uc2USUwoMUm90YXRlQXBpS2V5EiAuaWRlbnRpdHkudjEuUm90YXRlQXBpS2V5UmVxdWVzdBohLmlkZW50aXR5LnYxLlJvdGF0ZUFwaUtleVJlc3BvbnNlElMKDFJldm9rZUFwaUtleRIgLmlkZW50aXR5LnYxLlJldm9rZUFwaUtleVJlcXVlc3QaIS5pZGVudGl0eS52MS5SZXZva2VBcGlLZXlSZXNwb25zZRJiChFMaXN0QXV0aFByb3ZpZGVycxIlLmlkZW50aXR5LnYxLkxpc3RBdXRoUHJvdmlkZXJzUmVxdWVzdBomLmlkZW50aXR5LnYxLkxpc3RBdXRoUHJvdmlkZXJzUmVzcG9uc2USXAoPR2V0QXV0aFByb3ZpZGVyEiMuaWRlbnRpdHkudjEuR2V0QXV0aFByb3ZpZGVyUmVxdWVzdBokLmlkZW50aXR5LnYxLkdldEF1dGhQcm92aWRlclJlc3BvbnNlEmUKEkNyZWF0ZUF1dGhQcm92aWRlchImLmlkZW50aXR5LnYxLkNyZWF0ZUF1dGhQcm92aWRlclJlcXVlc3QaJy5pZGVudGl0eS52MS5DcmVhdGVBdXRoUHJvdmlkZXJSZXNwb25zZRJlChJVcGRhdGVBdXRoUHJvdmlkZXISJi5pZGVudGl0eS52MS5VcGRhdGVBdXRoUHJvdmlkZXJSZXF1ZXN0GicuaWRlbnRpdHkudjEuVXBkYXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USZQoSRGVsZXRlQXV0aFByb3ZpZGVyEiYuaWRlbnRpdHkudjEuRGVsZXRlQXV0aFByb3ZpZGVyUmVxdWVzdBonLmlkZW50aXR5LnYxLkRlbGV0ZUF1dGhQcm92aWRlclJlc3BvbnNlEm4KFUVuYWJsZWRPQXV0aFByb3ZpZGVycxIpLmlkZW50aXR5LnYxLkVuYWJsZWRPQXV0aFByb3ZpZGVyc1JlcXVlc3QaKi5pZGVudGl0eS52MS5FbmFibGVkT0F1dGhQcm92aWRlcnNSZXNwb25zZRJfChBNaW50U2VydmljZVRva2VuEiQuaWRlbnRpdHkudjEuTWludFNlcnZpY2VUb2tlblJlcXVlc3QaJS5pZGVudGl0eS52MS5NaW50U2VydmljZVRva2VuUmVzcG9uc2USXAoPVXBkYXRlTXlQcm9maWxlEiMuaWRlbnRpdHkudjEuVXBkYXRlTXlQcm9maWxlUmVxdWVzdBokLmlkZW50aXR5LnYxLlVwZGF0ZU15UHJvZmlsZVJlc3BvbnNlEnEKFkxpc3RNeU9BdXRoQ29ubmVjdGlvbnMSKi5pZGVudGl0eS52MS5MaXN0TXlPQXV0aENvbm5lY3Rpb25zUmVxdWVzdBorLmlkZW50aXR5LnYxLkxpc3RNeU9BdXRoQ29ubmVjdGlvbnNSZXNwb25zZRJoChNVbmxpbmtPQXV0aFByb3ZpZGVyEicuaWRlbnRpdHkudjEuVW5saW5rT0F1dGhQcm92aWRlclJlcXVlc3QaKC5pZGVudGl0eS52MS5VbmxpbmtPQXV0aFByb3ZpZGVyUmVzcG9uc2UScQoWQ2hlY2tFbWFpbEF2YWlsYWJpbGl0eRIqLmlkZW50aXR5LnYxLkNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXF1ZXN0GisuaWRlbnRpdHkudjEuQ2hlY2tFbWFpbEF2YWlsYWJpbGl0eVJlc3BvbnNlEmsKFENvbXBsZXRlQWNjb3VudFNldHVwEiguaWRlbnRpdHkudjEuQ29tcGxldGVBY2NvdW50U2V0dXBSZXF1ZXN0GikuaWRlbnRpdHkudjEuQ29tcGxldGVBY2NvdW50U2V0dXBSZXNwb25zZRJoChNDcmVhdGVTaWdudXBTZXNzaW9uEicuaWRlbnRpdHkudjEuQ3JlYXRlU2lnbnVwU2Vzc2lvblJlcXVlc3QaKC5pZGVudGl0eS52MS5DcmVhdGVTaWdudXBTZXNzaW9uUmVzcG9uc2USXwoQUmVzZW5kSW52aXRhdGlvbhIkLmlkZW50aXR5LnYxLlJlc2VuZEludml0YXRpb25SZXF1ZXN0GiUuaWRlbnRpdHkudjEuUmVzZW5kSW52aXRhdGlvblJlc3BvbnNlElYKDUdldEludml0YXRpb24SIS5pZGVudGl0eS52MS5HZXRJbnZpdGF0aW9uUmVxdWVzdBoiLmlkZW50aXR5LnYxLkdldEludml0YXRpb25SZXNwb25zZRJZCg5BY3RpdmF0ZVRlbmFudBIiLmlkZW50aXR5LnYxLkFjdGl2YXRlVGVuYW50UmVxdWVzdBojLmlkZW50aXR5LnYxLkFjdGl2YXRlVGVuYW50UmVzcG9uc2USawoUU3VzcGVuZFRlbmFudEFjY291bnQSKC5pZGVudGl0eS52MS5TdXNwZW5kVGVuYW50QWNjb3VudFJlcXVlc3QaKS5pZGVudGl0eS52MS5TdXNwZW5kVGVuYW50QWNjb3VudFJlc3BvbnNlElMKDENhbmNlbFRlbmFudBIgLmlkZW50aXR5LnYxLkNhbmNlbFRlbmFudFJlcXVlc3QaIS5pZGVudGl0eS52MS5DYW5jZWxUZW5hbnRSZXNwb25zZRJfChBSZWFjdGl2YXRlVGVuYW50EiQuaWRlbnRpdHkudjEuUmVhY3RpdmF0ZVRlbmFudFJlcXVlc3QaJS5pZGVudGl0eS52MS5SZWFjdGl2YXRlVGVuYW50UmVzcG9uc2USYgoRTWFya1RlbmFudFBhc3REdWUSJS5pZGVudGl0eS52MS5NYXJrVGVuYW50UGFzdER1ZVJlcXVlc3QaJi5pZGVudGl0eS52MS5NYXJrVGVuYW50UGFzdER1ZVJlc3BvbnNlElAKC0NodXJuVGVuYW50Eh8uaWRlbnRpdHkudjEuQ2h1cm5UZW5hbnRSZXF1ZXN0GiAuaWRlbnRpdHkudjEuQ2h1cm5UZW5hbnRSZXNwb25zZRJuChVHZXRDdXN0b21lckF1dGhDb25maWcSKS5pZGVudGl0eS52MS5HZXRDdXN0b21lckF1dGhDb25maWdSZXF1ZXN0GiouaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJBdXRoQ29uZmlnUmVzcG9uc2USaAoTVmVyaWZ5Q3VzdG9tZXJUb2tlbhInLmlkZW50aXR5LnYxLlZlcmlmeUN1c3RvbWVyVG9rZW5SZXF1ZXN0GiguaWRlbnRpdHkudjEuVmVyaWZ5Q3VzdG9tZXJUb2tlblJlc3BvbnNlEoABChtHZXRDdXN0b21lck1hbmFnZW1lbnRTdGF0dXMSLy5pZGVudGl0eS52MS5HZXRDdXN0b21lck1hbmFnZW1lbnRTdGF0dXNSZXF1ZXN0GjAuaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzUmVzcG9uc2USWQoOVmFsaWRhdGVBcGlLZXkSIi5pZGVudGl0eS52MS5WYWxpZGF0ZUFwaUtleVJlcXVlc3QaIy5pZGVudGl0eS52MS5WYWxpZGF0ZUFwaUtleVJlc3BvbnNlElYKDUN1c3RvbWVyTG9naW4SIS5pZGVudGl0eS52MS5DdXN0b21lckxvZ2luUmVxdWVzdBoiLmlkZW50aXR5LnYxLkN1c3RvbWVyTG9naW5SZXNwb25zZRJfChBDdXN0b21lclJlZ2lzdGVyEiQuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZWdpc3RlclJlcXVlc3QaJS5pZGVudGl0eS52MS5DdXN0b21lclJlZ2lzdGVyUmVzcG9uc2USawoUQ3VzdG9tZXJSZWZyZXNoVG9rZW4SKC5pZGVudGl0eS52MS5DdXN0b21lclJlZnJlc2hUb2tlblJlcXVlc3QaKS5pZGVudGl0eS52MS5DdXN0b21lclJlZnJlc2hUb2tlblJlc3BvbnNlEmUKEkN1c3RvbWVyUmVxdWVzdE9UUBImLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVxdWVzdE9UUFJlcXVlc3QaJy5pZGVudGl0eS52MS5DdXN0b21lclJlcXVlc3RPVFBSZXNwb25zZRJiChFDdXN0b21lclZlcmlmeU9UUBIlLmlkZW50aXR5LnYxLkN1c3RvbWVyVmVyaWZ5T1RQUmVxdWVzdBomLmlkZW50aXR5LnYxLkN1c3RvbWVyVmVyaWZ5T1RQUmVzcG9uc2USgwEKHEN1c3RvbWVyUmVxdWVzdFBhc3N3b3JkUmVzZXQSMC5pZGVudGl0eS52MS5DdXN0b21lclJlcXVlc3RQYXNzd29yZFJlc2V0UmVxdWVzdBoxLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXNwb25zZRJuChVDdXN0b21lclJlc2V0UGFzc3dvcmQSKS5pZGVudGl0eS52MS5DdXN0b21lclJlc2V0UGFzc3dvcmRSZXF1ZXN0GiouaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXNldFBhc3N3b3JkUmVzcG9uc2VCPVo7Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL2lkZW50aXR5L3YxO2lkZW50aXR5djFiBnByb3RvMw", [file_google_protobuf_struct, file_google_protobuf_timestamp]);
12
+ fileDesc("ChppZGVudGl0eS92MS9pZGVudGl0eS5wcm90bxILaWRlbnRpdHkudjEijwQKCUFkbWluVXNlchIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIXCgpmaXJzdF9uYW1lGAMgASgJSACIAQESFgoJbGFzdF9uYW1lGAQgASgJSAGIAQESFwoKYXZhdGFyX3VybBgFIAEoCUgCiAEBEhkKEWlzX3BsYXRmb3JtX2FkbWluGAYgASgIEiwKBnN0YXR1cxgUIAEoDjIcLmlkZW50aXR5LnYxLkFkbWluVXNlclN0YXR1cxI6ChFlbWFpbF92ZXJpZmllZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIA4gBARI2Cg1sYXN0X2xvZ2luX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEiwKBmFjY2VzcxgoIAMoCzIcLmlkZW50aXR5LnYxLkFkbWluVXNlckFjY2VzcxIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg0KC19hdmF0YXJfdXJsQhQKEl9lbWFpbF92ZXJpZmllZF9hdEIQCg5fbGFzdF9sb2dpbl9hdCLuAQoPQWRtaW5Vc2VyQWNjZXNzEgoKAmlkGAEgASgJEhUKDWFkbWluX3VzZXJfaWQYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhcKCnByb2plY3RfaWQYBCABKAlIAIgBARIlCgRyb2xlGAUgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZRIuCgpncmFudGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpncmFudGVkX2J5GDMgASgJSAGIAQFCDQoLX3Byb2plY3RfaWRCDQoLX2dyYW50ZWRfYnki9QIKCEN1c3RvbWVyEgoKAmlkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEisKBnN0YXR1cxgUIAEoDjIbLmlkZW50aXR5LnYxLkN1c3RvbWVyU3RhdHVzEjoKEWVtYWlsX3ZlcmlmaWVkX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjYKDWxhc3RfbG9naW5fYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCFAoSX2VtYWlsX3ZlcmlmaWVkX2F0QhAKDl9sYXN0X2xvZ2luX2F0IvQCCgZUZW5hbnQSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIpCgZzdGF0dXMYFCABKA4yGS5pZGVudGl0eS52MS5UZW5hbnRTdGF0dXMSNQoMc3VzcGVuZGVkX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEkIKGWNhbmNlbGxhdGlvbl9zY2hlZHVsZWRfYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESGwoTZGF0YV9yZXRlbnRpb25fZGF5cxgeIAEoBRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIPCg1fc3VzcGVuZGVkX2F0QhwKGl9jYW5jZWxsYXRpb25fc2NoZWR1bGVkX2F0IqoDCgdQcm9qZWN0EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESEgoKaXNfZGVmYXVsdBgFIAEoCBIqCgZzdGF0dXMYFCABKA4yGi5pZGVudGl0eS52MS5Qcm9qZWN0U3RhdHVzEj4KFWRlbGV0aW9uX3NjaGVkdWxlZF9hdBgVIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIXCgpjcmVhdGVkX2J5GCggASgJSAKIAQESFwoKdXBkYXRlZF9ieRgpIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9kZXNjcmlwdGlvbkIYChZfZGVsZXRpb25fc2NoZWR1bGVkX2F0Qg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5Iq8DCgpJbnZpdGF0aW9uEgoKAmlkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRITCgtwcm9qZWN0X2lkcxgEIAMoCRIlCgRyb2xlGAUgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZRIsCgtpbnZpdGVfdHlwZRgGIAEoDjIXLmlkZW50aXR5LnYxLkludml0ZVR5cGUSEgoKaW52aXRlZF9ieRgHIAEoCRIUCgdtZXNzYWdlGAggASgJSACIAQESLQoGc3RhdHVzGBQgASgOMh0uaWRlbnRpdHkudjEuSW52aXRhdGlvblN0YXR1cxIuCgpleHBpcmVzX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI0CgthY2NlcHRlZF9hdBgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfbWVzc2FnZUIOCgxfYWNjZXB0ZWRfYXQi2QQKBkFwaUtleRIKCgJpZBgBIAEoCRIRCgl0ZW5hbnRfaWQYAiABKAkSEgoKcHJvamVjdF9pZBgDIAEoCRIMCgRuYW1lGAQgASgJEhIKCmtleV9wcmVmaXgYBSABKAkSKQoIa2V5X3R5cGUYBiABKA4yFy5pZGVudGl0eS52MS5BcGlLZXlUeXBlEhQKB3Jhd19rZXkYCiABKAlIAIgBARIRCglpc19hY3RpdmUYFCABKAgSIAoTcmF0ZV9saW1pdF9wZXJfaG91chgVIAEoBUgBiAEBEjMKCmV4cGlyZXNfYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESDgoGc2NvcGVzGBcgAygJEi4KCG1ldGFkYXRhGBggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEjUKDGxhc3RfdXNlZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARITCgt1c2FnZV9jb3VudBgfIAEoBRISCgpjcmVhdGVkX2J5GCggASgJEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9yYXdfa2V5QhYKFF9yYXRlX2xpbWl0X3Blcl9ob3VyQg0KC19leHBpcmVzX2F0QgsKCV9tZXRhZGF0YUIPCg1fbGFzdF91c2VkX2F0IpYCCg5TZXNzaW9uQ29udGV4dBIWCgl0ZW5hbnRfaWQYASABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAIgASgJSAGIAQESJAoEdXNlchgDIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlchIbCg5lZmZlY3RpdmVfcm9sZRgEIAEoCUgCiAEBEi4KEWF2YWlsYWJsZV90ZW5hbnRzGAUgAygLMhMuaWRlbnRpdHkudjEuVGVuYW50EjAKEmF2YWlsYWJsZV9wcm9qZWN0cxgGIAMoCzIULmlkZW50aXR5LnYxLlByb2plY3RCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZEIRCg9fZWZmZWN0aXZlX3JvbGUifQoMTG9naW5SZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhAKCHBhc3N3b3JkGAIgASgJEhYKCXRlbmFudF9pZBgDIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYBCABKAlIAYgBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkIl8KDUxvZ2luUmVzcG9uc2USEgoKc2Vzc2lvbl9pZBgBIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAiABKAkSJAoEdXNlchgDIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciJ/ChNMb2dpbldpdGhPVFBSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEgsKA290cBgCIAEoCRIWCgl0ZW5hbnRfaWQYAyABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAQgASgJSAGIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZCJmChRMb2dpbldpdGhPVFBSZXNwb25zZRISCgpzZXNzaW9uX2lkGAEgASgJEhQKDGFjY2Vzc190b2tlbhgCIAEoCRIkCgR1c2VyGAMgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyInAKEVJlcXVlc3RPVFBSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhYKCXRlbmFudF9pZBgCIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYAyABKAlIAYgBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkIiUKElJlcXVlc3RPVFBSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIg8KDUxvZ291dFJlcXVlc3QiIQoOTG9nb3V0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCK1AQoPUmVnaXN0ZXJSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhAKCHBhc3N3b3JkGAIgASgJEhYKCXRlbmFudF9pZBgDIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYBCABKAlIAYgBARIqCgRyb2xlGAUgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZUgCiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCBwoFX3JvbGUiOAoQUmVnaXN0ZXJSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIiMKElZlcmlmeUVtYWlsUmVxdWVzdBINCgV0b2tlbhgBIAEoCSImChNWZXJpZnlFbWFpbFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiIAoeUmVzZW5kVmVyaWZpY2F0aW9uRW1haWxSZXF1ZXN0IjIKH1Jlc2VuZFZlcmlmaWNhdGlvbkVtYWlsUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIxCiBTZW5kRW1haWxWZXJpZmljYXRpb25Db2RlUmVxdWVzdBINCgVlbWFpbBgBIAEoCSI0CiFTZW5kRW1haWxWZXJpZmljYXRpb25Db2RlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI1ChZWZXJpZnlFbWFpbENvZGVSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEgwKBGNvZGUYAiABKAkiPAoXVmVyaWZ5RW1haWxDb2RlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIQCgh2ZXJpZmllZBgCIAEoCCIsChtSZXF1ZXN0UGFzc3dvcmRSZXNldFJlcXVlc3QSDQoFZW1haWwYASABKAkiLwocUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjsKFFJlc2V0UGFzc3dvcmRSZXF1ZXN0Eg0KBXRva2VuGAEgASgJEhQKDG5ld19wYXNzd29yZBgCIAEoCSIoChVSZXNldFBhc3N3b3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJHChVVcGRhdGVQYXNzd29yZFJlcXVlc3QSGAoQY3VycmVudF9wYXNzd29yZBgBIAEoCRIUCgxuZXdfcGFzc3dvcmQYAiABKAkiKQoWVXBkYXRlUGFzc3dvcmRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIiwKE1JlZnJlc2hUb2tlblJlcXVlc3QSFQoNcmVmcmVzaF90b2tlbhgBIAEoCSJDChRSZWZyZXNoVG9rZW5SZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCSIaChhHZXRTZXNzaW9uQ29udGV4dFJlcXVlc3QiSQoZR2V0U2Vzc2lvbkNvbnRleHRSZXNwb25zZRIsCgdjb250ZXh0GAEgASgLMhsuaWRlbnRpdHkudjEuU2Vzc2lvbkNvbnRleHQiKAoTU3dpdGNoVGVuYW50UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiRAoUU3dpdGNoVGVuYW50UmVzcG9uc2USLAoHY29udGV4dBgBIAEoCzIbLmlkZW50aXR5LnYxLlNlc3Npb25Db250ZXh0IioKFFN3aXRjaFByb2plY3RSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkiRQoVU3dpdGNoUHJvamVjdFJlc3BvbnNlEiwKB2NvbnRleHQYASABKAsyGy5pZGVudGl0eS52MS5TZXNzaW9uQ29udGV4dCIcChpDbGVhclNlc3Npb25Db250ZXh0UmVxdWVzdCIuChtDbGVhclNlc3Npb25Db250ZXh0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIOCgxHZXRNZVJlcXVlc3QiNQoNR2V0TWVSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyItcBChZDcmVhdGVBZG1pblVzZXJSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhcKCmZpcnN0X25hbWUYAiABKAlIAIgBARIWCglsYXN0X25hbWUYAyABKAlIAYgBARIRCgl0ZW5hbnRfaWQYBCABKAkSFwoKcHJvamVjdF9pZBgFIAEoCUgCiAEBEiUKBHJvbGUYBiABKA4yFy5pZGVudGl0eS52MS5BY2Nlc3NSb2xlQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCDQoLX3Byb2plY3RfaWQiPwoXQ3JlYXRlQWRtaW5Vc2VyUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciIhChNHZXRBZG1pblVzZXJSZXF1ZXN0EgoKAmlkGAEgASgJIjwKFEdldEFkbWluVXNlclJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIi2AEKFlVwZGF0ZUFkbWluVXNlclJlcXVlc3QSCgoCaWQYASABKAkSFwoKZmlyc3RfbmFtZRgCIAEoCUgAiAEBEhYKCWxhc3RfbmFtZRgDIAEoCUgBiAEBEhcKCmF2YXRhcl91cmwYBCABKAlIAogBARIxCgZzdGF0dXMYBSABKA4yHC5pZGVudGl0eS52MS5BZG1pblVzZXJTdGF0dXNIA4gBAUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg0KC19hdmF0YXJfdXJsQgkKB19zdGF0dXMiPwoXVXBkYXRlQWRtaW5Vc2VyUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciLJAQoVTGlzdEFkbWluVXNlcnNSZXF1ZXN0EhMKBnNlYXJjaBgBIAEoCUgAiAEBEioKBHJvbGUYAiABKA4yFy5pZGVudGl0eS52MS5BY2Nlc3NSb2xlSAGIAQESMQoGc3RhdHVzGAMgASgOMhwuaWRlbnRpdHkudjEuQWRtaW5Vc2VyU3RhdHVzSAKIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgkKB19zZWFyY2hCBwoFX3JvbGVCCQoHX3N0YXR1cyJOChZMaXN0QWRtaW5Vc2Vyc1Jlc3BvbnNlEiUKBWl0ZW1zGAEgAygLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyEg0KBXRvdGFsGAIgASgFIo0BChJHcmFudEFjY2Vzc1JlcXVlc3QSFQoNYWRtaW5fdXNlcl9pZBgBIAEoCRIRCgl0ZW5hbnRfaWQYAiABKAkSFwoKcHJvamVjdF9pZBgDIAEoCUgAiAEBEiUKBHJvbGUYBCABKA4yFy5pZGVudGl0eS52MS5BY2Nlc3NSb2xlQg0KC19wcm9qZWN0X2lkIkMKE0dyYW50QWNjZXNzUmVzcG9uc2USLAoGYWNjZXNzGAEgASgLMhwuaWRlbnRpdHkudjEuQWRtaW5Vc2VyQWNjZXNzIigKE1Jldm9rZUFjY2Vzc1JlcXVlc3QSEQoJYWNjZXNzX2lkGAEgASgJIicKFFJldm9rZUFjY2Vzc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiSgoVQ3JlYXRlQ3VzdG9tZXJSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhUKCHBhc3N3b3JkGAIgASgJSACIAQFCCwoJX3Bhc3N3b3JkIkEKFkNyZWF0ZUN1c3RvbWVyUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciIgChJHZXRDdXN0b21lclJlcXVlc3QSCgoCaWQYASABKAkiPgoTR2V0Q3VzdG9tZXJSZXNwb25zZRInCghjdXN0b21lchgBIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIn4KFVVwZGF0ZUN1c3RvbWVyUmVxdWVzdBIKCgJpZBgBIAEoCRISCgVlbWFpbBgCIAEoCUgAiAEBEjAKBnN0YXR1cxgDIAEoDjIbLmlkZW50aXR5LnYxLkN1c3RvbWVyU3RhdHVzSAGIAQFCCAoGX2VtYWlsQgkKB19zdGF0dXMiQQoWVXBkYXRlQ3VzdG9tZXJSZXNwb25zZRInCghjdXN0b21lchgBIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIiMKFURlbGV0ZUN1c3RvbWVyUmVxdWVzdBIKCgJpZBgBIAEoCSIpChZEZWxldGVDdXN0b21lclJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgikgEKFExpc3RDdXN0b21lcnNSZXF1ZXN0EhMKBnNlYXJjaBgBIAEoCUgAiAEBEjAKBnN0YXR1cxgCIAEoDjIbLmlkZW50aXR5LnYxLkN1c3RvbWVyU3RhdHVzSAGIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgkKB19zZWFyY2hCCQoHX3N0YXR1cyJMChVMaXN0Q3VzdG9tZXJzUmVzcG9uc2USJAoFaXRlbXMYASADKAsyFS5pZGVudGl0eS52MS5DdXN0b21lchINCgV0b3RhbBgCIAEoBSIkChZTdXNwZW5kQ3VzdG9tZXJSZXF1ZXN0EgoKAmlkGAEgASgJIkIKF1N1c3BlbmRDdXN0b21lclJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiIwoTQ3JlYXRlVGVuYW50UmVxdWVzdBIMCgRuYW1lGAEgASgJIjsKFENyZWF0ZVRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCIeChBHZXRUZW5hbnRSZXF1ZXN0EgoKAmlkGAEgASgJIjgKEUdldFRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCJ4ChNVcGRhdGVUZW5hbnRSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIuCgZzdGF0dXMYAyABKA4yGS5pZGVudGl0eS52MS5UZW5hbnRTdGF0dXNIAYgBAUIHCgVfbmFtZUIJCgdfc3RhdHVzIjsKFFVwZGF0ZVRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCJuChJMaXN0VGVuYW50c1JlcXVlc3QSLgoGc3RhdHVzGAEgASgOMhkuaWRlbnRpdHkudjEuVGVuYW50U3RhdHVzSACIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgkKB19zdGF0dXMiSAoTTGlzdFRlbmFudHNSZXNwb25zZRIiCgVpdGVtcxgBIAMoCzITLmlkZW50aXR5LnYxLlRlbmFudBINCgV0b3RhbBgCIAEoBSIhChNEZWxldGVUZW5hbnRSZXF1ZXN0EgoKAmlkGAEgASgJIicKFERlbGV0ZVRlbmFudFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi6wIKFENyZWF0ZVByb2plY3RSZXF1ZXN0EgwKBG5hbWUYASABKAkSGAoLZGVzY3JpcHRpb24YAiABKAlIAIgBARIRCgl0ZW5hbnRfaWQYAyABKAkSIAoTZGVmYXVsdF9sb2NhbGVfY29kZRgEIAEoCUgBiAEBEigKG2RlZmF1bHRfbG9jYWxlX2Rpc3BsYXlfbmFtZRgFIAEoCUgCiAEBEicKGmRlZmF1bHRfbG9jYWxlX25hdGl2ZV9uYW1lGAYgASgJSAOIAQESIgoVZGVmYXVsdF9sb2NhbGVfaXNfcnRsGAcgASgISASIAQFCDgoMX2Rlc2NyaXB0aW9uQhYKFF9kZWZhdWx0X2xvY2FsZV9jb2RlQh4KHF9kZWZhdWx0X2xvY2FsZV9kaXNwbGF5X25hbWVCHQobX2RlZmF1bHRfbG9jYWxlX25hdGl2ZV9uYW1lQhgKFl9kZWZhdWx0X2xvY2FsZV9pc19ydGwiPgoVQ3JlYXRlUHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Ih8KEUdldFByb2plY3RSZXF1ZXN0EgoKAmlkGAEgASgJIjsKEkdldFByb2plY3RSZXNwb25zZRIlCgdwcm9qZWN0GAEgASgLMhQuaWRlbnRpdHkudjEuUHJvamVjdCKkAQoUVXBkYXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESLwoGc3RhdHVzGAQgASgOMhouaWRlbnRpdHkudjEuUHJvamVjdFN0YXR1c0gCiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIJCgdfc3RhdHVzIj4KFVVwZGF0ZVByb2plY3RSZXNwb25zZRIlCgdwcm9qZWN0GAEgASgLMhQuaWRlbnRpdHkudjEuUHJvamVjdCKDAQoTTGlzdFByb2plY3RzUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSLwoGc3RhdHVzGAIgASgOMhouaWRlbnRpdHkudjEuUHJvamVjdFN0YXR1c0gAiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUIJCgdfc3RhdHVzIkoKFExpc3RQcm9qZWN0c1Jlc3BvbnNlEiMKBWl0ZW1zGAEgAygLMhQuaWRlbnRpdHkudjEuUHJvamVjdBINCgV0b3RhbBgCIAEoBSIiChREZWxldGVQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCSIoChVEZWxldGVQcm9qZWN0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCItChhHZXREZWZhdWx0UHJvamVjdFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJIkIKGUdldERlZmF1bHRQcm9qZWN0UmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmlkZW50aXR5LnYxLlByb2plY3QiLgoYU2V0RGVmYXVsdFByb2plY3RSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkiQgoZU2V0RGVmYXVsdFByb2plY3RSZXNwb25zZRIlCgdwcm9qZWN0GAEgASgLMhQuaWRlbnRpdHkudjEuUHJvamVjdCLHAQoXQ3JlYXRlSW52aXRhdGlvblJlcXVlc3QSDQoFZW1haWwYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhMKC3Byb2plY3RfaWRzGAMgAygJEiUKBHJvbGUYBCABKA4yFy5pZGVudGl0eS52MS5BY2Nlc3NSb2xlEiwKC2ludml0ZV90eXBlGAUgASgOMhcuaWRlbnRpdHkudjEuSW52aXRlVHlwZRIUCgdtZXNzYWdlGAYgASgJSACIAQFCCgoIX21lc3NhZ2UiRwoYQ3JlYXRlSW52aXRhdGlvblJlc3BvbnNlEisKCmludml0YXRpb24YASABKAsyFy5pZGVudGl0eS52MS5JbnZpdGF0aW9uIokBChZMaXN0SW52aXRhdGlvbnNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIyCgZzdGF0dXMYAiABKA4yHS5pZGVudGl0eS52MS5JbnZpdGF0aW9uU3RhdHVzSACIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgkKB19zdGF0dXMiUAoXTGlzdEludml0YXRpb25zUmVzcG9uc2USJgoFaXRlbXMYASADKAsyFy5pZGVudGl0eS52MS5JbnZpdGF0aW9uEg0KBXRvdGFsGAIgASgFIjAKF1Jldm9rZUludml0YXRpb25SZXF1ZXN0EhUKDWludml0YXRpb25faWQYASABKAkiKwoYUmV2b2tlSW52aXRhdGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiTAoXQWNjZXB0SW52aXRhdGlvblJlcXVlc3QSDQoFdG9rZW4YASABKAkSFQoIcGFzc3dvcmQYAiABKAlIAIgBAUILCglfcGFzc3dvcmQiVAoYQWNjZXB0SW52aXRhdGlvblJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXISEgoKc2Vzc2lvbl9pZBgCIAEoCSIqChlWYWxpZGF0ZUludml0YXRpb25SZXF1ZXN0Eg0KBXRva2VuGAEgASgJIkkKGlZhbGlkYXRlSW52aXRhdGlvblJlc3BvbnNlEisKCmludml0YXRpb24YASABKAsyFy5pZGVudGl0eS52MS5JbnZpdGF0aW9uIpACChNDcmVhdGVBcGlLZXlSZXF1ZXN0EgwKBG5hbWUYASABKAkSKQoIa2V5X3R5cGUYAiABKA4yFy5pZGVudGl0eS52MS5BcGlLZXlUeXBlEg4KBnNjb3BlcxgDIAMoCRIgChNyYXRlX2xpbWl0X3Blcl9ob3VyGAQgASgFSACIAQESMwoKZXhwaXJlc19hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIWCg5hbGxvd2VkX21vZGVscxgGIAMoCRIaChJhbGxvd2VkX2ZpbGVfdHlwZXMYByADKAlCFgoUX3JhdGVfbGltaXRfcGVyX2hvdXJCDQoLX2V4cGlyZXNfYXQiPAoUQ3JlYXRlQXBpS2V5UmVzcG9uc2USJAoHYXBpX2tleRgBIAEoCzITLmlkZW50aXR5LnYxLkFwaUtleSIeChBHZXRBcGlLZXlSZXF1ZXN0EgoKAmlkGAEgASgJIjkKEUdldEFwaUtleVJlc3BvbnNlEiQKB2FwaV9rZXkYASABKAsyEy5pZGVudGl0eS52MS5BcGlLZXkiMwoSTGlzdEFwaUtleXNSZXF1ZXN0Eg0KBWxpbWl0GAEgASgFEg4KBm9mZnNldBgCIAEoBSJIChNMaXN0QXBpS2V5c1Jlc3BvbnNlEiIKBWl0ZW1zGAEgAygLMhMuaWRlbnRpdHkudjEuQXBpS2V5Eg0KBXRvdGFsGAIgASgFIsQBChNVcGRhdGVBcGlLZXlSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIWCglpc19hY3RpdmUYAyABKAhIAYgBARIOCgZzY29wZXMYBCADKAkSFQoNdXBkYXRlX3Njb3BlcxgGIAEoCBIgChNyYXRlX2xpbWl0X3Blcl9ob3VyGAUgASgFSAKIAQFCBwoFX25hbWVCDAoKX2lzX2FjdGl2ZUIWChRfcmF0ZV9saW1pdF9wZXJfaG91ciI8ChRVcGRhdGVBcGlLZXlSZXNwb25zZRIkCgdhcGlfa2V5GAEgASgLMhMuaWRlbnRpdHkudjEuQXBpS2V5IiEKE1JvdGF0ZUFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkiPAoUUm90YXRlQXBpS2V5UmVzcG9uc2USJAoHYXBpX2tleRgBIAEoCzITLmlkZW50aXR5LnYxLkFwaUtleSIhChNSZXZva2VBcGlLZXlSZXF1ZXN0EgoKAmlkGAEgASgJIicKFFJldm9rZUFwaUtleVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi+gIKDEF1dGhQcm92aWRlchIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIMCgR0eXBlGAQgASgJEicKBmNvbmZpZxgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSDwoHZW5hYmxlZBgGIAEoCBISCgppc19kZWZhdWx0GAcgASgIEhAKCHByaW9yaXR5GAggASgFEhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEhcKCmNyZWF0ZWRfYnkYHiABKAlIAIgBARIXCgp1cGRhdGVkX2J5GB8gASgJSAGIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnkiWwoYTGlzdEF1dGhQcm92aWRlcnNSZXF1ZXN0EhQKB2VuYWJsZWQYASABKAhIAIgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCCgoIX2VuYWJsZWQiWAoZTGlzdEF1dGhQcm92aWRlcnNSZXNwb25zZRIsCglwcm92aWRlcnMYASADKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXISDQoFdG90YWwYAiABKAUiJAoWR2V0QXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCSJGChdHZXRBdXRoUHJvdmlkZXJSZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciLbAQoZQ3JlYXRlQXV0aFByb3ZpZGVyUmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIMCgR0eXBlGAMgASgJEicKBmNvbmZpZxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFAoHZW5hYmxlZBgFIAEoCEgAiAEBEhcKCmlzX2RlZmF1bHQYBiABKAhIAYgBARIVCghwcmlvcml0eRgHIAEoBUgCiAEBQgoKCF9lbmFibGVkQg0KC19pc19kZWZhdWx0QgsKCV9wcmlvcml0eSJJChpDcmVhdGVBdXRoUHJvdmlkZXJSZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciLqAQoZVXBkYXRlQXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESLAoGY29uZmlnGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBEhQKB2VuYWJsZWQYBCABKAhIAogBARIXCgppc19kZWZhdWx0GAUgASgISAOIAQESFQoIcHJpb3JpdHkYBiABKAVIBIgBAUIHCgVfbmFtZUIJCgdfY29uZmlnQgoKCF9lbmFibGVkQg0KC19pc19kZWZhdWx0QgsKCV9wcmlvcml0eSJJChpVcGRhdGVBdXRoUHJvdmlkZXJSZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciInChlEZWxldGVBdXRoUHJvdmlkZXJSZXF1ZXN0EgoKAmlkGAEgASgJIi0KGkRlbGV0ZUF1dGhQcm92aWRlclJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiHgocRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVxdWVzdCIyCh1FbmFibGVkT0F1dGhQcm92aWRlcnNSZXNwb25zZRIRCglwcm92aWRlcnMYASADKAkiKgoXTWludFNlcnZpY2VUb2tlblJlcXVlc3QSDwoHcHVycG9zZRgBIAEoCSJOChhNaW50U2VydmljZVRva2VuUmVzcG9uc2USDQoFdG9rZW4YASABKAkSDwoHcHVycG9zZRgCIAEoCRISCgpleHBpcmVzX2F0GAMgASgJIo4BChZVcGRhdGVNeVByb2ZpbGVSZXF1ZXN0EhcKCmZpcnN0X25hbWUYASABKAlIAIgBARIWCglsYXN0X25hbWUYAiABKAlIAYgBARIXCgphdmF0YXJfdXJsGAMgASgJSAKIAQFCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUINCgtfYXZhdGFyX3VybCI/ChdVcGRhdGVNeVByb2ZpbGVSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIh8KHUxpc3RNeU9BdXRoQ29ubmVjdGlvbnNSZXF1ZXN0Io0BCg9PQXV0aENvbm5lY3Rpb24SEAoIcHJvdmlkZXIYASABKAkSGAoQcHJvdmlkZXJfdXNlcl9pZBgCIAEoCRISCgVlbWFpbBgDIAEoCUgAiAEBEjAKDGNvbm5lY3RlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCAoGX2VtYWlsIlMKHkxpc3RNeU9BdXRoQ29ubmVjdGlvbnNSZXNwb25zZRIxCgtjb25uZWN0aW9ucxgBIAMoCzIcLmlkZW50aXR5LnYxLk9BdXRoQ29ubmVjdGlvbiIuChpVbmxpbmtPQXV0aFByb3ZpZGVyUmVxdWVzdBIQCghwcm92aWRlchgBIAEoCSIuChtVbmxpbmtPQXV0aFByb3ZpZGVyUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIuCh1DaGVja0VtYWlsQXZhaWxhYmlsaXR5UmVxdWVzdBINCgVlbWFpbBgBIAEoCSIzCh5DaGVja0VtYWlsQXZhaWxhYmlsaXR5UmVzcG9uc2USEQoJYXZhaWxhYmxlGAEgASgIIo8BChtDb21wbGV0ZUFjY291bnRTZXR1cFJlcXVlc3QSFwoKZmlyc3RfbmFtZRgBIAEoCUgAiAEBEhYKCWxhc3RfbmFtZRgCIAEoCUgBiAEBEhUKCHBhc3N3b3JkGAMgASgJSAKIAQFCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUILCglfcGFzc3dvcmQiWwocQ29tcGxldGVBY2NvdW50U2V0dXBSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEhkKDHJlZGlyZWN0X3VybBgCIAEoCUgAiAEBQg8KDV9yZWRpcmVjdF91cmwiLQoaQ3JlYXRlU2lnbnVwU2Vzc2lvblJlcXVlc3QSDwoHdXNlcl9pZBgBIAEoCSIuChtDcmVhdGVTaWdudXBTZXNzaW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIwChdSZXNlbmRJbnZpdGF0aW9uUmVxdWVzdBIVCg1pbnZpdGF0aW9uX2lkGAEgASgJIisKGFJlc2VuZEludml0YXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIiIKFEdldEludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIkQKFUdldEludml0YXRpb25SZXNwb25zZRIrCgppbnZpdGF0aW9uGAEgASgLMhcuaWRlbnRpdHkudjEuSW52aXRhdGlvbiIqChVBY3RpdmF0ZVRlbmFudFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJIj0KFkFjdGl2YXRlVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IjAKG1N1c3BlbmRUZW5hbnRBY2NvdW50UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiQwocU3VzcGVuZFRlbmFudEFjY291bnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiKAoTQ2FuY2VsVGVuYW50UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiOwoUQ2FuY2VsVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IiwKF1JlYWN0aXZhdGVUZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSI/ChhSZWFjdGl2YXRlVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50Ii0KGE1hcmtUZW5hbnRQYXN0RHVlUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiQAoZTWFya1RlbmFudFBhc3REdWVSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiJwoSQ2h1cm5UZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSI6ChNDaHVyblRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCIeChxHZXRDdXN0b21lckF1dGhDb25maWdSZXF1ZXN0IpoCChJDdXN0b21lckF1dGhDb25maWcSEQoJYWxnb3JpdGhtGAEgASgJEhMKBmlzc3VlchgCIAEoCUgAiAEBEhUKCGF1ZGllbmNlGAMgASgJSAGIAQESNwoOa2V5X3JvdGF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESGAoLc2lnbmluZ19rZXkYBSABKAlIA4gBARIsCgZjbGFpbXMYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCQoHX2lzc3VlckILCglfYXVkaWVuY2VCEQoPX2tleV9yb3RhdGVkX2F0Qg4KDF9zaWduaW5nX2tleUIJCgdfY2xhaW1zIlAKHUdldEN1c3RvbWVyQXV0aENvbmZpZ1Jlc3BvbnNlEi8KBmNvbmZpZxgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVyQXV0aENvbmZpZyIrChpWZXJpZnlDdXN0b21lclRva2VuUmVxdWVzdBINCgV0b2tlbhgBIAEoCSKzAgobVmVyaWZ5Q3VzdG9tZXJUb2tlblJlc3BvbnNlEg0KBXZhbGlkGAEgASgIEhIKBWVycm9yGAIgASgJSACIAQESGAoLY3VzdG9tZXJfaWQYAyABKAlIAYgBARISCgVlbWFpbBgEIAEoCUgCiAEBEhYKCXRlbmFudF9pZBgFIAEoCUgDiAEBEhcKCnByb2plY3RfaWQYBiABKAlIBIgBARINCgVyb2xlcxgHIAMoCRIzCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBQggKBl9lcnJvckIOCgxfY3VzdG9tZXJfaWRCCAoGX2VtYWlsQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCDQoLX2V4cGlyZXNfYXQiJAoiR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzUmVxdWVzdCLbAQoYQ3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzEiEKGW5hdGl2ZV9tYW5hZ2VtZW50X2VuYWJsZWQYASABKAgSIgoVZXh0ZXJuYWxfcHJvdmlkZXJfdXJsGAIgASgJSACIAQESIwoWZXh0ZXJuYWxfcHJvdmlkZXJfbmFtZRgDIAEoCUgBiAEBEhMKBnJlYXNvbhgEIAEoCUgCiAEBQhgKFl9leHRlcm5hbF9wcm92aWRlcl91cmxCGQoXX2V4dGVybmFsX3Byb3ZpZGVyX25hbWVCCQoHX3JlYXNvbiJcCiNHZXRDdXN0b21lck1hbmFnZW1lbnRTdGF0dXNSZXNwb25zZRI1CgZzdGF0dXMYASABKAsyJS5pZGVudGl0eS52MS5DdXN0b21lck1hbmFnZW1lbnRTdGF0dXMiKAoVVmFsaWRhdGVBcGlLZXlSZXF1ZXN0Eg8KB2FwaV9rZXkYASABKAkizAEKFlZhbGlkYXRlQXBpS2V5UmVzcG9uc2USCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIRCgl0ZW5hbnRfaWQYAyABKAkSEgoKcHJvamVjdF9pZBgEIAEoCRIQCghrZXlfdHlwZRgFIAEoCRIOCgZzY29wZXMYBiADKAkSFgoOYWxsb3dlZF9tb2RlbHMYByADKAkSGgoSYWxsb3dlZF9maWxlX3R5cGVzGAggAygJEhsKE3JhdGVfbGltaXRfcGVyX2hvdXIYCSABKAUiNwoUQ3VzdG9tZXJMb2dpblJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkibQoVQ3VzdG9tZXJMb2dpblJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJEicKCGN1c3RvbWVyGAMgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIifwoXQ3VzdG9tZXJSZWdpc3RlclJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSMgoMcHJvZmlsZV9kYXRhGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBQg8KDV9wcm9maWxlX2RhdGEicAoYQ3VzdG9tZXJSZWdpc3RlclJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJEicKCGN1c3RvbWVyGAMgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiNAobQ3VzdG9tZXJSZWZyZXNoVG9rZW5SZXF1ZXN0EhUKDXJlZnJlc2hfdG9rZW4YASABKAkiSwocQ3VzdG9tZXJSZWZyZXNoVG9rZW5SZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCSIqChlDdXN0b21lclJlcXVlc3RPVFBSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIioKGkN1c3RvbWVyUmVxdWVzdE9UUFJlc3BvbnNlEgwKBHNlbnQYASABKAgiOwoYQ3VzdG9tZXJWZXJpZnlPVFBSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhAKCG90cF9jb2RlGAIgASgJInEKGUN1c3RvbWVyVmVyaWZ5T1RQUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkSJwoIY3VzdG9tZXIYAyABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciI0CiNDdXN0b21lclJlcXVlc3RQYXNzd29yZFJlc2V0UmVxdWVzdBINCgVlbWFpbBgBIAEoCSI0CiRDdXN0b21lclJlcXVlc3RQYXNzd29yZFJlc2V0UmVzcG9uc2USDAoEc2VudBgBIAEoCCJDChxDdXN0b21lclJlc2V0UGFzc3dvcmRSZXF1ZXN0Eg0KBXRva2VuGAEgASgJEhQKDG5ld19wYXNzd29yZBgCIAEoCSIwCh1DdXN0b21lclJlc2V0UGFzc3dvcmRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIKrEBCg9BZG1pblVzZXJTdGF0dXMSIQodQURNSU5fVVNFUl9TVEFUVVNfVU5TUEVDSUZJRUQQABIcChhBRE1JTl9VU0VSX1NUQVRVU19BQ1RJVkUQARIdChlBRE1JTl9VU0VSX1NUQVRVU19QRU5ESU5HEAISHwobQURNSU5fVVNFUl9TVEFUVVNfU1VTUEVOREVEEAMSHQoZQURNSU5fVVNFUl9TVEFUVVNfREVMRVRFRBAEKokBCg5DdXN0b21lclN0YXR1cxIfChtDVVNUT01FUl9TVEFUVVNfVU5TUEVDSUZJRUQQABIaChZDVVNUT01FUl9TVEFUVVNfQUNUSVZFEAESGwoXQ1VTVE9NRVJfU1RBVFVTX1BFTkRJTkcQAhIdChlDVVNUT01FUl9TVEFUVVNfU1VTUEVOREVEEAMq2QEKDFRlbmFudFN0YXR1cxIdChlURU5BTlRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASHwobVEVOQU5UX1NUQVRVU19QRU5ESU5HX1NFVFVQEAESGAoUVEVOQU5UX1NUQVRVU19BQ1RJVkUQAhIaChZURU5BTlRfU1RBVFVTX1BBU1RfRFVFEAMSGwoXVEVOQU5UX1NUQVRVU19TVVNQRU5ERUQQBBIbChdURU5BTlRfU1RBVFVTX0NBTkNFTExFRBAFEhkKFVRFTkFOVF9TVEFUVVNfQ0hVUk5FRBAGKmYKDVByb2plY3RTdGF0dXMSHgoaUFJPSkVDVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIZChVQUk9KRUNUX1NUQVRVU19BQ1RJVkUQARIaChZQUk9KRUNUX1NUQVRVU19ERUxFVEVEEAIqpgEKCkFjY2Vzc1JvbGUSGwoXQUNDRVNTX1JPTEVfVU5TUEVDSUZJRUQQABIcChhBQ0NFU1NfUk9MRV9URU5BTlRfT1dORVIQARIdChlBQ0NFU1NfUk9MRV9QUk9KRUNUX0FETUlOEAISHgoaQUNDRVNTX1JPTEVfUFJPSkVDVF9FRElUT1IQAxIeChpBQ0NFU1NfUk9MRV9QUk9KRUNUX1ZJRVdFUhAEKmQKCkludml0ZVR5cGUSGwoXSU5WSVRFX1RZUEVfVU5TUEVDSUZJRUQQABIcChhJTlZJVEVfVFlQRV9URU5BTlRfT1dORVIQARIbChdJTlZJVEVfVFlQRV9URUFNX01FTUJFUhACKrIBChBJbnZpdGF0aW9uU3RhdHVzEiEKHUlOVklUQVRJT05fU1RBVFVTX1VOU1BFQ0lGSUVEEAASHQoZSU5WSVRBVElPTl9TVEFUVVNfUEVORElORxABEh4KGklOVklUQVRJT05fU1RBVFVTX0FDQ0VQVEVEEAISHQoZSU5WSVRBVElPTl9TVEFUVVNfRVhQSVJFRBADEh0KGUlOVklUQVRJT05fU1RBVFVTX1JFVk9LRUQQBCpcCgpBcGlLZXlUeXBlEhwKGEFQSV9LRVlfVFlQRV9VTlNQRUNJRklFRBAAEhcKE0FQSV9LRVlfVFlQRV9QVUJMSUMQARIXChNBUElfS0VZX1RZUEVfU0VDUkVUEAIywz4KD0lkZW50aXR5U2VydmljZRI+CgVMb2dpbhIZLmlkZW50aXR5LnYxLkxvZ2luUmVxdWVzdBoaLmlkZW50aXR5LnYxLkxvZ2luUmVzcG9uc2USUwoMTG9naW5XaXRoT1RQEiAuaWRlbnRpdHkudjEuTG9naW5XaXRoT1RQUmVxdWVzdBohLmlkZW50aXR5LnYxLkxvZ2luV2l0aE9UUFJlc3BvbnNlEk0KClJlcXVlc3RPVFASHi5pZGVudGl0eS52MS5SZXF1ZXN0T1RQUmVxdWVzdBofLmlkZW50aXR5LnYxLlJlcXVlc3RPVFBSZXNwb25zZRJBCgZMb2dvdXQSGi5pZGVudGl0eS52MS5Mb2dvdXRSZXF1ZXN0GhsuaWRlbnRpdHkudjEuTG9nb3V0UmVzcG9uc2USRwoIUmVnaXN0ZXISHC5pZGVudGl0eS52MS5SZWdpc3RlclJlcXVlc3QaHS5pZGVudGl0eS52MS5SZWdpc3RlclJlc3BvbnNlElAKC1ZlcmlmeUVtYWlsEh8uaWRlbnRpdHkudjEuVmVyaWZ5RW1haWxSZXF1ZXN0GiAuaWRlbnRpdHkudjEuVmVyaWZ5RW1haWxSZXNwb25zZRJ0ChdSZXNlbmRWZXJpZmljYXRpb25FbWFpbBIrLmlkZW50aXR5LnYxLlJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsUmVxdWVzdBosLmlkZW50aXR5LnYxLlJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsUmVzcG9uc2USegoZU2VuZEVtYWlsVmVyaWZpY2F0aW9uQ29kZRItLmlkZW50aXR5LnYxLlNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGVSZXF1ZXN0Gi4uaWRlbnRpdHkudjEuU2VuZEVtYWlsVmVyaWZpY2F0aW9uQ29kZVJlc3BvbnNlElwKD1ZlcmlmeUVtYWlsQ29kZRIjLmlkZW50aXR5LnYxLlZlcmlmeUVtYWlsQ29kZVJlcXVlc3QaJC5pZGVudGl0eS52MS5WZXJpZnlFbWFpbENvZGVSZXNwb25zZRJrChRSZXF1ZXN0UGFzc3dvcmRSZXNldBIoLmlkZW50aXR5LnYxLlJlcXVlc3RQYXNzd29yZFJlc2V0UmVxdWVzdBopLmlkZW50aXR5LnYxLlJlcXVlc3RQYXNzd29yZFJlc2V0UmVzcG9uc2USVgoNUmVzZXRQYXNzd29yZBIhLmlkZW50aXR5LnYxLlJlc2V0UGFzc3dvcmRSZXF1ZXN0GiIuaWRlbnRpdHkudjEuUmVzZXRQYXNzd29yZFJlc3BvbnNlElkKDlVwZGF0ZVBhc3N3b3JkEiIuaWRlbnRpdHkudjEuVXBkYXRlUGFzc3dvcmRSZXF1ZXN0GiMuaWRlbnRpdHkudjEuVXBkYXRlUGFzc3dvcmRSZXNwb25zZRJTCgxSZWZyZXNoVG9rZW4SIC5pZGVudGl0eS52MS5SZWZyZXNoVG9rZW5SZXF1ZXN0GiEuaWRlbnRpdHkudjEuUmVmcmVzaFRva2VuUmVzcG9uc2USYgoRR2V0U2Vzc2lvbkNvbnRleHQSJS5pZGVudGl0eS52MS5HZXRTZXNzaW9uQ29udGV4dFJlcXVlc3QaJi5pZGVudGl0eS52MS5HZXRTZXNzaW9uQ29udGV4dFJlc3BvbnNlElMKDFN3aXRjaFRlbmFudBIgLmlkZW50aXR5LnYxLlN3aXRjaFRlbmFudFJlcXVlc3QaIS5pZGVudGl0eS52MS5Td2l0Y2hUZW5hbnRSZXNwb25zZRJWCg1Td2l0Y2hQcm9qZWN0EiEuaWRlbnRpdHkudjEuU3dpdGNoUHJvamVjdFJlcXVlc3QaIi5pZGVudGl0eS52MS5Td2l0Y2hQcm9qZWN0UmVzcG9uc2USaAoTQ2xlYXJTZXNzaW9uQ29udGV4dBInLmlkZW50aXR5LnYxLkNsZWFyU2Vzc2lvbkNvbnRleHRSZXF1ZXN0GiguaWRlbnRpdHkudjEuQ2xlYXJTZXNzaW9uQ29udGV4dFJlc3BvbnNlEj4KBUdldE1lEhkuaWRlbnRpdHkudjEuR2V0TWVSZXF1ZXN0GhouaWRlbnRpdHkudjEuR2V0TWVSZXNwb25zZRJcCg9DcmVhdGVBZG1pblVzZXISIy5pZGVudGl0eS52MS5DcmVhdGVBZG1pblVzZXJSZXF1ZXN0GiQuaWRlbnRpdHkudjEuQ3JlYXRlQWRtaW5Vc2VyUmVzcG9uc2USUwoMR2V0QWRtaW5Vc2VyEiAuaWRlbnRpdHkudjEuR2V0QWRtaW5Vc2VyUmVxdWVzdBohLmlkZW50aXR5LnYxLkdldEFkbWluVXNlclJlc3BvbnNlElwKD1VwZGF0ZUFkbWluVXNlchIjLmlkZW50aXR5LnYxLlVwZGF0ZUFkbWluVXNlclJlcXVlc3QaJC5pZGVudGl0eS52MS5VcGRhdGVBZG1pblVzZXJSZXNwb25zZRJZCg5MaXN0QWRtaW5Vc2VycxIiLmlkZW50aXR5LnYxLkxpc3RBZG1pblVzZXJzUmVxdWVzdBojLmlkZW50aXR5LnYxLkxpc3RBZG1pblVzZXJzUmVzcG9uc2USUAoLR3JhbnRBY2Nlc3MSHy5pZGVudGl0eS52MS5HcmFudEFjY2Vzc1JlcXVlc3QaIC5pZGVudGl0eS52MS5HcmFudEFjY2Vzc1Jlc3BvbnNlElMKDFJldm9rZUFjY2VzcxIgLmlkZW50aXR5LnYxLlJldm9rZUFjY2Vzc1JlcXVlc3QaIS5pZGVudGl0eS52MS5SZXZva2VBY2Nlc3NSZXNwb25zZRJZCg5DcmVhdGVDdXN0b21lchIiLmlkZW50aXR5LnYxLkNyZWF0ZUN1c3RvbWVyUmVxdWVzdBojLmlkZW50aXR5LnYxLkNyZWF0ZUN1c3RvbWVyUmVzcG9uc2USUAoLR2V0Q3VzdG9tZXISHy5pZGVudGl0eS52MS5HZXRDdXN0b21lclJlcXVlc3QaIC5pZGVudGl0eS52MS5HZXRDdXN0b21lclJlc3BvbnNlElkKDlVwZGF0ZUN1c3RvbWVyEiIuaWRlbnRpdHkudjEuVXBkYXRlQ3VzdG9tZXJSZXF1ZXN0GiMuaWRlbnRpdHkudjEuVXBkYXRlQ3VzdG9tZXJSZXNwb25zZRJZCg5EZWxldGVDdXN0b21lchIiLmlkZW50aXR5LnYxLkRlbGV0ZUN1c3RvbWVyUmVxdWVzdBojLmlkZW50aXR5LnYxLkRlbGV0ZUN1c3RvbWVyUmVzcG9uc2USVgoNTGlzdEN1c3RvbWVycxIhLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lcnNSZXF1ZXN0GiIuaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVyc1Jlc3BvbnNlElwKD1N1c3BlbmRDdXN0b21lchIjLmlkZW50aXR5LnYxLlN1c3BlbmRDdXN0b21lclJlcXVlc3QaJC5pZGVudGl0eS52MS5TdXNwZW5kQ3VzdG9tZXJSZXNwb25zZRJTCgxDcmVhdGVUZW5hbnQSIC5pZGVudGl0eS52MS5DcmVhdGVUZW5hbnRSZXF1ZXN0GiEuaWRlbnRpdHkudjEuQ3JlYXRlVGVuYW50UmVzcG9uc2USSgoJR2V0VGVuYW50Eh0uaWRlbnRpdHkudjEuR2V0VGVuYW50UmVxdWVzdBoeLmlkZW50aXR5LnYxLkdldFRlbmFudFJlc3BvbnNlElMKDFVwZGF0ZVRlbmFudBIgLmlkZW50aXR5LnYxLlVwZGF0ZVRlbmFudFJlcXVlc3QaIS5pZGVudGl0eS52MS5VcGRhdGVUZW5hbnRSZXNwb25zZRJQCgtMaXN0VGVuYW50cxIfLmlkZW50aXR5LnYxLkxpc3RUZW5hbnRzUmVxdWVzdBogLmlkZW50aXR5LnYxLkxpc3RUZW5hbnRzUmVzcG9uc2USUwoMRGVsZXRlVGVuYW50EiAuaWRlbnRpdHkudjEuRGVsZXRlVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLkRlbGV0ZVRlbmFudFJlc3BvbnNlElYKDUNyZWF0ZVByb2plY3QSIS5pZGVudGl0eS52MS5DcmVhdGVQcm9qZWN0UmVxdWVzdBoiLmlkZW50aXR5LnYxLkNyZWF0ZVByb2plY3RSZXNwb25zZRJNCgpHZXRQcm9qZWN0Eh4uaWRlbnRpdHkudjEuR2V0UHJvamVjdFJlcXVlc3QaHy5pZGVudGl0eS52MS5HZXRQcm9qZWN0UmVzcG9uc2USVgoNVXBkYXRlUHJvamVjdBIhLmlkZW50aXR5LnYxLlVwZGF0ZVByb2plY3RSZXF1ZXN0GiIuaWRlbnRpdHkudjEuVXBkYXRlUHJvamVjdFJlc3BvbnNlElMKDExpc3RQcm9qZWN0cxIgLmlkZW50aXR5LnYxLkxpc3RQcm9qZWN0c1JlcXVlc3QaIS5pZGVudGl0eS52MS5MaXN0UHJvamVjdHNSZXNwb25zZRJWCg1EZWxldGVQcm9qZWN0EiEuaWRlbnRpdHkudjEuRGVsZXRlUHJvamVjdFJlcXVlc3QaIi5pZGVudGl0eS52MS5EZWxldGVQcm9qZWN0UmVzcG9uc2USYgoRR2V0RGVmYXVsdFByb2plY3QSJS5pZGVudGl0eS52MS5HZXREZWZhdWx0UHJvamVjdFJlcXVlc3QaJi5pZGVudGl0eS52MS5HZXREZWZhdWx0UHJvamVjdFJlc3BvbnNlEmIKEVNldERlZmF1bHRQcm9qZWN0EiUuaWRlbnRpdHkudjEuU2V0RGVmYXVsdFByb2plY3RSZXF1ZXN0GiYuaWRlbnRpdHkudjEuU2V0RGVmYXVsdFByb2plY3RSZXNwb25zZRJfChBDcmVhdGVJbnZpdGF0aW9uEiQuaWRlbnRpdHkudjEuQ3JlYXRlSW52aXRhdGlvblJlcXVlc3QaJS5pZGVudGl0eS52MS5DcmVhdGVJbnZpdGF0aW9uUmVzcG9uc2USXAoPTGlzdEludml0YXRpb25zEiMuaWRlbnRpdHkudjEuTGlzdEludml0YXRpb25zUmVxdWVzdBokLmlkZW50aXR5LnYxLkxpc3RJbnZpdGF0aW9uc1Jlc3BvbnNlEl8KEFJldm9rZUludml0YXRpb24SJC5pZGVudGl0eS52MS5SZXZva2VJbnZpdGF0aW9uUmVxdWVzdBolLmlkZW50aXR5LnYxLlJldm9rZUludml0YXRpb25SZXNwb25zZRJfChBBY2NlcHRJbnZpdGF0aW9uEiQuaWRlbnRpdHkudjEuQWNjZXB0SW52aXRhdGlvblJlcXVlc3QaJS5pZGVudGl0eS52MS5BY2NlcHRJbnZpdGF0aW9uUmVzcG9uc2USZQoSVmFsaWRhdGVJbnZpdGF0aW9uEiYuaWRlbnRpdHkudjEuVmFsaWRhdGVJbnZpdGF0aW9uUmVxdWVzdBonLmlkZW50aXR5LnYxLlZhbGlkYXRlSW52aXRhdGlvblJlc3BvbnNlElMKDENyZWF0ZUFwaUtleRIgLmlkZW50aXR5LnYxLkNyZWF0ZUFwaUtleVJlcXVlc3QaIS5pZGVudGl0eS52MS5DcmVhdGVBcGlLZXlSZXNwb25zZRJKCglHZXRBcGlLZXkSHS5pZGVudGl0eS52MS5HZXRBcGlLZXlSZXF1ZXN0Gh4uaWRlbnRpdHkudjEuR2V0QXBpS2V5UmVzcG9uc2USUAoLTGlzdEFwaUtleXMSHy5pZGVudGl0eS52MS5MaXN0QXBpS2V5c1JlcXVlc3QaIC5pZGVudGl0eS52MS5MaXN0QXBpS2V5c1Jlc3BvbnNlElMKDFVwZGF0ZUFwaUtleRIgLmlkZW50aXR5LnYxLlVwZGF0ZUFwaUtleVJlcXVlc3QaIS5pZGVudGl0eS52MS5VcGRhdGVBcGlLZXlSZXNwb25zZRJTCgxSb3RhdGVBcGlLZXkSIC5pZGVudGl0eS52MS5Sb3RhdGVBcGlLZXlSZXF1ZXN0GiEuaWRlbnRpdHkudjEuUm90YXRlQXBpS2V5UmVzcG9uc2USUwoMUmV2b2tlQXBpS2V5EiAuaWRlbnRpdHkudjEuUmV2b2tlQXBpS2V5UmVxdWVzdBohLmlkZW50aXR5LnYxLlJldm9rZUFwaUtleVJlc3BvbnNlEmIKEUxpc3RBdXRoUHJvdmlkZXJzEiUuaWRlbnRpdHkudjEuTGlzdEF1dGhQcm92aWRlcnNSZXF1ZXN0GiYuaWRlbnRpdHkudjEuTGlzdEF1dGhQcm92aWRlcnNSZXNwb25zZRJcCg9HZXRBdXRoUHJvdmlkZXISIy5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJSZXF1ZXN0GiQuaWRlbnRpdHkudjEuR2V0QXV0aFByb3ZpZGVyUmVzcG9uc2USZQoSQ3JlYXRlQXV0aFByb3ZpZGVyEiYuaWRlbnRpdHkudjEuQ3JlYXRlQXV0aFByb3ZpZGVyUmVxdWVzdBonLmlkZW50aXR5LnYxLkNyZWF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEmUKElVwZGF0ZUF1dGhQcm92aWRlchImLmlkZW50aXR5LnYxLlVwZGF0ZUF1dGhQcm92aWRlclJlcXVlc3QaJy5pZGVudGl0eS52MS5VcGRhdGVBdXRoUHJvdmlkZXJSZXNwb25zZRJlChJEZWxldGVBdXRoUHJvdmlkZXISJi5pZGVudGl0eS52MS5EZWxldGVBdXRoUHJvdmlkZXJSZXF1ZXN0GicuaWRlbnRpdHkudjEuRGVsZXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USbgoVRW5hYmxlZE9BdXRoUHJvdmlkZXJzEikuaWRlbnRpdHkudjEuRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVxdWVzdBoqLmlkZW50aXR5LnYxLkVuYWJsZWRPQXV0aFByb3ZpZGVyc1Jlc3BvbnNlEl8KEE1pbnRTZXJ2aWNlVG9rZW4SJC5pZGVudGl0eS52MS5NaW50U2VydmljZVRva2VuUmVxdWVzdBolLmlkZW50aXR5LnYxLk1pbnRTZXJ2aWNlVG9rZW5SZXNwb25zZRJcCg9VcGRhdGVNeVByb2ZpbGUSIy5pZGVudGl0eS52MS5VcGRhdGVNeVByb2ZpbGVSZXF1ZXN0GiQuaWRlbnRpdHkudjEuVXBkYXRlTXlQcm9maWxlUmVzcG9uc2UScQoWTGlzdE15T0F1dGhDb25uZWN0aW9ucxIqLmlkZW50aXR5LnYxLkxpc3RNeU9BdXRoQ29ubmVjdGlvbnNSZXF1ZXN0GisuaWRlbnRpdHkudjEuTGlzdE15T0F1dGhDb25uZWN0aW9uc1Jlc3BvbnNlEmgKE1VubGlua09BdXRoUHJvdmlkZXISJy5pZGVudGl0eS52MS5VbmxpbmtPQXV0aFByb3ZpZGVyUmVxdWVzdBooLmlkZW50aXR5LnYxLlVubGlua09BdXRoUHJvdmlkZXJSZXNwb25zZRJxChZDaGVja0VtYWlsQXZhaWxhYmlsaXR5EiouaWRlbnRpdHkudjEuQ2hlY2tFbWFpbEF2YWlsYWJpbGl0eVJlcXVlc3QaKy5pZGVudGl0eS52MS5DaGVja0VtYWlsQXZhaWxhYmlsaXR5UmVzcG9uc2USawoUQ29tcGxldGVBY2NvdW50U2V0dXASKC5pZGVudGl0eS52MS5Db21wbGV0ZUFjY291bnRTZXR1cFJlcXVlc3QaKS5pZGVudGl0eS52MS5Db21wbGV0ZUFjY291bnRTZXR1cFJlc3BvbnNlEmgKE0NyZWF0ZVNpZ251cFNlc3Npb24SJy5pZGVudGl0eS52MS5DcmVhdGVTaWdudXBTZXNzaW9uUmVxdWVzdBooLmlkZW50aXR5LnYxLkNyZWF0ZVNpZ251cFNlc3Npb25SZXNwb25zZRJfChBSZXNlbmRJbnZpdGF0aW9uEiQuaWRlbnRpdHkudjEuUmVzZW5kSW52aXRhdGlvblJlcXVlc3QaJS5pZGVudGl0eS52MS5SZXNlbmRJbnZpdGF0aW9uUmVzcG9uc2USVgoNR2V0SW52aXRhdGlvbhIhLmlkZW50aXR5LnYxLkdldEludml0YXRpb25SZXF1ZXN0GiIuaWRlbnRpdHkudjEuR2V0SW52aXRhdGlvblJlc3BvbnNlElkKDkFjdGl2YXRlVGVuYW50EiIuaWRlbnRpdHkudjEuQWN0aXZhdGVUZW5hbnRSZXF1ZXN0GiMuaWRlbnRpdHkudjEuQWN0aXZhdGVUZW5hbnRSZXNwb25zZRJrChRTdXNwZW5kVGVuYW50QWNjb3VudBIoLmlkZW50aXR5LnYxLlN1c3BlbmRUZW5hbnRBY2NvdW50UmVxdWVzdBopLmlkZW50aXR5LnYxLlN1c3BlbmRUZW5hbnRBY2NvdW50UmVzcG9uc2USUwoMQ2FuY2VsVGVuYW50EiAuaWRlbnRpdHkudjEuQ2FuY2VsVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLkNhbmNlbFRlbmFudFJlc3BvbnNlEl8KEFJlYWN0aXZhdGVUZW5hbnQSJC5pZGVudGl0eS52MS5SZWFjdGl2YXRlVGVuYW50UmVxdWVzdBolLmlkZW50aXR5LnYxLlJlYWN0aXZhdGVUZW5hbnRSZXNwb25zZRJiChFNYXJrVGVuYW50UGFzdER1ZRIlLmlkZW50aXR5LnYxLk1hcmtUZW5hbnRQYXN0RHVlUmVxdWVzdBomLmlkZW50aXR5LnYxLk1hcmtUZW5hbnRQYXN0RHVlUmVzcG9uc2USUAoLQ2h1cm5UZW5hbnQSHy5pZGVudGl0eS52MS5DaHVyblRlbmFudFJlcXVlc3QaIC5pZGVudGl0eS52MS5DaHVyblRlbmFudFJlc3BvbnNlEm4KFUdldEN1c3RvbWVyQXV0aENvbmZpZxIpLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyQXV0aENvbmZpZ1JlcXVlc3QaKi5pZGVudGl0eS52MS5HZXRDdXN0b21lckF1dGhDb25maWdSZXNwb25zZRJoChNWZXJpZnlDdXN0b21lclRva2VuEicuaWRlbnRpdHkudjEuVmVyaWZ5Q3VzdG9tZXJUb2tlblJlcXVlc3QaKC5pZGVudGl0eS52MS5WZXJpZnlDdXN0b21lclRva2VuUmVzcG9uc2USgAEKG0dldEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1cxIvLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1c1JlcXVlc3QaMC5pZGVudGl0eS52MS5HZXRDdXN0b21lck1hbmFnZW1lbnRTdGF0dXNSZXNwb25zZRJZCg5WYWxpZGF0ZUFwaUtleRIiLmlkZW50aXR5LnYxLlZhbGlkYXRlQXBpS2V5UmVxdWVzdBojLmlkZW50aXR5LnYxLlZhbGlkYXRlQXBpS2V5UmVzcG9uc2USVgoNQ3VzdG9tZXJMb2dpbhIhLmlkZW50aXR5LnYxLkN1c3RvbWVyTG9naW5SZXF1ZXN0GiIuaWRlbnRpdHkudjEuQ3VzdG9tZXJMb2dpblJlc3BvbnNlEl8KEEN1c3RvbWVyUmVnaXN0ZXISJC5pZGVudGl0eS52MS5DdXN0b21lclJlZ2lzdGVyUmVxdWVzdBolLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVnaXN0ZXJSZXNwb25zZRJrChRDdXN0b21lclJlZnJlc2hUb2tlbhIoLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVmcmVzaFRva2VuUmVxdWVzdBopLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVmcmVzaFRva2VuUmVzcG9uc2USZQoSQ3VzdG9tZXJSZXF1ZXN0T1RQEiYuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXF1ZXN0T1RQUmVxdWVzdBonLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVxdWVzdE9UUFJlc3BvbnNlEmIKEUN1c3RvbWVyVmVyaWZ5T1RQEiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJWZXJpZnlPVFBSZXF1ZXN0GiYuaWRlbnRpdHkudjEuQ3VzdG9tZXJWZXJpZnlPVFBSZXNwb25zZRKDAQocQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldBIwLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXF1ZXN0GjEuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldFJlc3BvbnNlEm4KFUN1c3RvbWVyUmVzZXRQYXNzd29yZBIpLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVzZXRQYXNzd29yZFJlcXVlc3QaKi5pZGVudGl0eS52MS5DdXN0b21lclJlc2V0UGFzc3dvcmRSZXNwb25zZUI9WjtnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vaWRlbnRpdHkvdjE7aWRlbnRpdHl2MWIGcHJvdG8z", [file_google_protobuf_struct, file_google_protobuf_timestamp]);
13
13
 
14
14
  /**
15
15
  * Describes the message identity.v1.AdminUser.
@@ -3,7 +3,7 @@
3
3
  /* eslint-disable */
4
4
  // @ts-nocheck
5
5
 
6
- import { DeleteExtensionRequest, DeleteExtensionResponse, DeleteIntegrationRequest, DeleteIntegrationResponse, GetConfigHistoryEntryRequest, GetConfigHistoryEntryResponse, GetExtensionRequest, GetExtensionResponse, GetIntegrationCredentialRequest, GetIntegrationCredentialResponse, GetIntegrationRequest, GetIntegrationResponse, GetIntegrationStatusRequest, GetIntegrationStatusResponse, IssueExchangeTicketRequest, IssueExchangeTicketResponse, ListConfigHistoryRequest, ListConfigHistoryResponse, ListExtensionsRequest, ListExtensionsResponse, ListIntegrationsRequest, ListIntegrationsResponse, TriggerSyncRequest, TriggerSyncResponse, UpsertExtensionRequest, UpsertExtensionResponse, UpsertIntegrationRequest, UpsertIntegrationResponse, ValidateConfigRequest, ValidateConfigResponse, WriteIntegrationCredentialRequest, WriteIntegrationCredentialResponse } from "./integrations_pbjs";
6
+ import { DeleteExtensionRequest, DeleteExtensionResponse, DeleteIntegrationRequest, DeleteIntegrationResponse, GetConfigHistoryEntryRequest, GetConfigHistoryEntryResponse, GetExtensionRequest, GetExtensionResponse, GetIntegrationCredentialRequest, GetIntegrationCredentialResponse, GetIntegrationRequest, GetIntegrationResponse, GetIntegrationStatusRequest, GetIntegrationStatusResponse, IssueExchangeTicketRequest, IssueExchangeTicketResponse, ListConfigHistoryRequest, ListConfigHistoryResponse, ListExtensionsRequest, ListExtensionsResponse, ListIntegrationsRequest, ListIntegrationsResponse, RedeemExchangeTicketRequest, RedeemExchangeTicketResponse, TriggerSyncRequest, TriggerSyncResponse, UpsertExtensionRequest, UpsertExtensionResponse, UpsertIntegrationRequest, UpsertIntegrationResponse, UpsertIntegrationStatusRequest, UpsertIntegrationStatusResponse, ValidateConfigRequest, ValidateConfigResponse, WriteIntegrationCredentialRequest, WriteIntegrationCredentialResponse } from "./integrations_pbjs";
7
7
  import { MethodKind } from "@bufbuild/protobuf";
8
8
 
9
9
  /**
@@ -62,6 +62,17 @@ export declare const IntegrationAuthService: {
62
62
  readonly O: typeof IssueExchangeTicketResponse,
63
63
  readonly kind: MethodKind.Unary,
64
64
  },
65
+ /**
66
+ * Atomically redeem a ticket and return the resolved subject.
67
+ *
68
+ * @generated from rpc integrations.v1.IntegrationAuthService.RedeemExchangeTicket
69
+ */
70
+ readonly redeemExchangeTicket: {
71
+ readonly name: "RedeemExchangeTicket",
72
+ readonly I: typeof RedeemExchangeTicketRequest,
73
+ readonly O: typeof RedeemExchangeTicketResponse,
74
+ readonly kind: MethodKind.Unary,
75
+ },
65
76
  }
66
77
  };
67
78
 
@@ -152,6 +163,15 @@ export declare const IntegrationsService: {
152
163
  readonly O: typeof GetIntegrationStatusResponse,
153
164
  readonly kind: MethodKind.Unary,
154
165
  },
166
+ /**
167
+ * @generated from rpc integrations.v1.IntegrationsService.UpsertIntegrationStatus
168
+ */
169
+ readonly upsertIntegrationStatus: {
170
+ readonly name: "UpsertIntegrationStatus",
171
+ readonly I: typeof UpsertIntegrationStatusRequest,
172
+ readonly O: typeof UpsertIntegrationStatusResponse,
173
+ readonly kind: MethodKind.Unary,
174
+ },
155
175
  /**
156
176
  * @generated from rpc integrations.v1.IntegrationsService.TriggerSync
157
177
  */
@@ -3,7 +3,7 @@
3
3
  /* eslint-disable */
4
4
  // @ts-nocheck
5
5
 
6
- import { DeleteExtensionRequest, DeleteExtensionResponse, DeleteIntegrationRequest, DeleteIntegrationResponse, GetConfigHistoryEntryRequest, GetConfigHistoryEntryResponse, GetExtensionRequest, GetExtensionResponse, GetIntegrationCredentialRequest, GetIntegrationCredentialResponse, GetIntegrationRequest, GetIntegrationResponse, GetIntegrationStatusRequest, GetIntegrationStatusResponse, IssueExchangeTicketRequest, IssueExchangeTicketResponse, ListConfigHistoryRequest, ListConfigHistoryResponse, ListExtensionsRequest, ListExtensionsResponse, ListIntegrationsRequest, ListIntegrationsResponse, TriggerSyncRequest, TriggerSyncResponse, UpsertExtensionRequest, UpsertExtensionResponse, UpsertIntegrationRequest, UpsertIntegrationResponse, ValidateConfigRequest, ValidateConfigResponse, WriteIntegrationCredentialRequest, WriteIntegrationCredentialResponse } from "./integrations_pbjs";
6
+ import { DeleteExtensionRequest, DeleteExtensionResponse, DeleteIntegrationRequest, DeleteIntegrationResponse, GetConfigHistoryEntryRequest, GetConfigHistoryEntryResponse, GetExtensionRequest, GetExtensionResponse, GetIntegrationCredentialRequest, GetIntegrationCredentialResponse, GetIntegrationRequest, GetIntegrationResponse, GetIntegrationStatusRequest, GetIntegrationStatusResponse, IssueExchangeTicketRequest, IssueExchangeTicketResponse, ListConfigHistoryRequest, ListConfigHistoryResponse, ListExtensionsRequest, ListExtensionsResponse, ListIntegrationsRequest, ListIntegrationsResponse, RedeemExchangeTicketRequest, RedeemExchangeTicketResponse, TriggerSyncRequest, TriggerSyncResponse, UpsertExtensionRequest, UpsertExtensionResponse, UpsertIntegrationRequest, UpsertIntegrationResponse, UpsertIntegrationStatusRequest, UpsertIntegrationStatusResponse, ValidateConfigRequest, ValidateConfigResponse, WriteIntegrationCredentialRequest, WriteIntegrationCredentialResponse } from "./integrations_pbjs";
7
7
  import { MethodKind } from "@bufbuild/protobuf";
8
8
 
9
9
  /**
@@ -62,6 +62,17 @@ export const IntegrationAuthService = {
62
62
  O: IssueExchangeTicketResponse,
63
63
  kind: MethodKind.Unary,
64
64
  },
65
+ /**
66
+ * Atomically redeem a ticket and return the resolved subject.
67
+ *
68
+ * @generated from rpc integrations.v1.IntegrationAuthService.RedeemExchangeTicket
69
+ */
70
+ redeemExchangeTicket: {
71
+ name: "RedeemExchangeTicket",
72
+ I: RedeemExchangeTicketRequest,
73
+ O: RedeemExchangeTicketResponse,
74
+ kind: MethodKind.Unary,
75
+ },
65
76
  }
66
77
  };
67
78
 
@@ -152,6 +163,15 @@ export const IntegrationsService = {
152
163
  O: GetIntegrationStatusResponse,
153
164
  kind: MethodKind.Unary,
154
165
  },
166
+ /**
167
+ * @generated from rpc integrations.v1.IntegrationsService.UpsertIntegrationStatus
168
+ */
169
+ upsertIntegrationStatus: {
170
+ name: "UpsertIntegrationStatus",
171
+ I: UpsertIntegrationStatusRequest,
172
+ O: UpsertIntegrationStatusResponse,
173
+ kind: MethodKind.Unary,
174
+ },
155
175
  /**
156
176
  * @generated from rpc integrations.v1.IntegrationsService.TriggerSync
157
177
  */
@@ -550,7 +550,8 @@ export declare const IssueExchangeTicketRequestSchema: GenMessage<IssueExchangeT
550
550
  export declare type IssueExchangeTicketResponse = Message<"integrations.v1.IssueExchangeTicketResponse"> & {
551
551
  /**
552
552
  * Opaque single-use ticket id. Must be embedded in OAuth `state` and
553
- * POSTed back by the middleware to /api/v1/auth/exchange-ticket.
553
+ * POSTed back by the middleware to the gateway's /auth/exchange-ticket
554
+ * endpoint, which in turn redeems it via RedeemExchangeTicket below.
554
555
  *
555
556
  * @generated from field: string ticket = 1;
556
557
  */
@@ -571,6 +572,91 @@ export declare type IssueExchangeTicketResponse = Message<"integrations.v1.Issue
571
572
  */
572
573
  export declare const IssueExchangeTicketResponseSchema: GenMessage<IssueExchangeTicketResponse>;
573
574
 
575
+ /**
576
+ * Atomic single-use redemption of an exchange ticket. Called by the
577
+ * public API gateway's /auth/exchange-ticket endpoint when a middleware
578
+ * POSTs a ticket it received via the authorize redirect. The redemption
579
+ * flips used_at in a single DB round trip and returns the resolved
580
+ * subject so the gateway can mint a scoped token locally.
581
+ *
582
+ * This RPC is intentionally unauthenticated at the admin-session level —
583
+ * ticket possession is the auth factor. Network-level service auth is
584
+ * expected to come from the gap #11 internalauth interceptor pair.
585
+ *
586
+ * @generated from message integrations.v1.RedeemExchangeTicketRequest
587
+ */
588
+ export declare type RedeemExchangeTicketRequest = Message<"integrations.v1.RedeemExchangeTicketRequest"> & {
589
+ /**
590
+ * Opaque ticket id originally issued by IssueExchangeTicket. Must
591
+ * match an unused, unexpired row in auth_exchange_tickets.
592
+ *
593
+ * @generated from field: string ticket = 1;
594
+ */
595
+ ticket: string;
596
+
597
+ /**
598
+ * Free-text identity of the redeeming actor, written to the
599
+ * ticket_redeem auth_events row. Gateway callers pass something like
600
+ * "api-public:exchange-ticket:<ip>".
601
+ *
602
+ * @generated from field: string actor_ref = 2;
603
+ */
604
+ actorRef: string;
605
+ };
606
+
607
+ /**
608
+ * Describes the message integrations.v1.RedeemExchangeTicketRequest.
609
+ * Use `create(RedeemExchangeTicketRequestSchema)` to create a new message.
610
+ */
611
+ export declare const RedeemExchangeTicketRequestSchema: GenMessage<RedeemExchangeTicketRequest>;
612
+
613
+ /**
614
+ * @generated from message integrations.v1.RedeemExchangeTicketResponse
615
+ */
616
+ export declare type RedeemExchangeTicketResponse = Message<"integrations.v1.RedeemExchangeTicketResponse"> & {
617
+ /**
618
+ * The redeemed ticket id, echoed back for caller-side audit
619
+ * correlation. Matches request.ticket on success.
620
+ *
621
+ * @generated from field: string ticket_id = 1;
622
+ */
623
+ ticketId: string;
624
+
625
+ /**
626
+ * @generated from field: string tenant_id = 2;
627
+ */
628
+ tenantId: string;
629
+
630
+ /**
631
+ * @generated from field: string project_id = 3;
632
+ */
633
+ projectId: string;
634
+
635
+ /**
636
+ * @generated from field: string integration_name = 4;
637
+ */
638
+ integrationName: string;
639
+
640
+ /**
641
+ * Single capability string the minted token should carry, e.g.
642
+ * "credentials:write". Taken verbatim from the ticket row.
643
+ *
644
+ * @generated from field: string capability = 5;
645
+ */
646
+ capability: string;
647
+
648
+ /**
649
+ * @generated from field: google.protobuf.Timestamp expires_at = 6;
650
+ */
651
+ expiresAt?: Timestamp;
652
+ };
653
+
654
+ /**
655
+ * Describes the message integrations.v1.RedeemExchangeTicketResponse.
656
+ * Use `create(RedeemExchangeTicketResponseSchema)` to create a new message.
657
+ */
658
+ export declare const RedeemExchangeTicketResponseSchema: GenMessage<RedeemExchangeTicketResponse>;
659
+
574
660
  /**
575
661
  * Summary row returned in ListIntegrationsResponse. Bundles the declaration
576
662
  * with the operational status glyphs the list page renders, so the admin UI
@@ -967,6 +1053,97 @@ export declare type GetIntegrationStatusResponse = Message<"integrations.v1.GetI
967
1053
  */
968
1054
  export declare const GetIntegrationStatusResponseSchema: GenMessage<GetIntegrationStatusResponse>;
969
1055
 
1056
+ /**
1057
+ * Write path for integration_status. Called by the gateway's status
1058
+ * resolver on behalf of scoped-token middleware callers after a sync
1059
+ * cycle. The handler accepts either an admin session or a scoped token
1060
+ * carrying status:write, and pulls tenant from the caller's context.
1061
+ *
1062
+ * Fields are flat to avoid dragging the SubscriptionHealth / AuthStatus
1063
+ * enums into the write shape — middleware reports these as free-text
1064
+ * strings that the resolver maps 1:1 to integration_status rows.
1065
+ *
1066
+ * @generated from message integrations.v1.UpsertIntegrationStatusRequest
1067
+ */
1068
+ export declare type UpsertIntegrationStatusRequest = Message<"integrations.v1.UpsertIntegrationStatusRequest"> & {
1069
+ /**
1070
+ * @generated from field: string project_id = 1;
1071
+ */
1072
+ projectId: string;
1073
+
1074
+ /**
1075
+ * @generated from field: string integration_name = 2;
1076
+ */
1077
+ integrationName: string;
1078
+
1079
+ /**
1080
+ * @generated from field: optional google.protobuf.Timestamp last_sync_at = 3;
1081
+ */
1082
+ lastSyncAt?: Timestamp;
1083
+
1084
+ /**
1085
+ * @generated from field: optional int64 last_sync_duration_ms = 4;
1086
+ */
1087
+ lastSyncDurationMs?: bigint;
1088
+
1089
+ /**
1090
+ * @generated from field: optional int64 last_sync_record_count = 5;
1091
+ */
1092
+ lastSyncRecordCount?: bigint;
1093
+
1094
+ /**
1095
+ * @generated from field: optional string last_error = 6;
1096
+ */
1097
+ lastError?: string;
1098
+
1099
+ /**
1100
+ * @generated from field: optional google.protobuf.Timestamp last_error_at = 7;
1101
+ */
1102
+ lastErrorAt?: Timestamp;
1103
+
1104
+ /**
1105
+ * @generated from field: optional string subscription_health = 8;
1106
+ */
1107
+ subscriptionHealth?: string;
1108
+
1109
+ /**
1110
+ * @generated from field: optional string auth_status = 9;
1111
+ */
1112
+ authStatus?: string;
1113
+
1114
+ /**
1115
+ * @generated from field: optional string deletion_strategy = 10;
1116
+ */
1117
+ deletionStrategy?: string;
1118
+
1119
+ /**
1120
+ * @generated from field: optional google.protobuf.Struct extra = 11;
1121
+ */
1122
+ extra?: JsonObject;
1123
+ };
1124
+
1125
+ /**
1126
+ * Describes the message integrations.v1.UpsertIntegrationStatusRequest.
1127
+ * Use `create(UpsertIntegrationStatusRequestSchema)` to create a new message.
1128
+ */
1129
+ export declare const UpsertIntegrationStatusRequestSchema: GenMessage<UpsertIntegrationStatusRequest>;
1130
+
1131
+ /**
1132
+ * @generated from message integrations.v1.UpsertIntegrationStatusResponse
1133
+ */
1134
+ export declare type UpsertIntegrationStatusResponse = Message<"integrations.v1.UpsertIntegrationStatusResponse"> & {
1135
+ /**
1136
+ * @generated from field: google.protobuf.Timestamp updated_at = 1;
1137
+ */
1138
+ updatedAt?: Timestamp;
1139
+ };
1140
+
1141
+ /**
1142
+ * Describes the message integrations.v1.UpsertIntegrationStatusResponse.
1143
+ * Use `create(UpsertIntegrationStatusResponseSchema)` to create a new message.
1144
+ */
1145
+ export declare const UpsertIntegrationStatusResponseSchema: GenMessage<UpsertIntegrationStatusResponse>;
1146
+
970
1147
  /**
971
1148
  * Flow 2 ("manual trigger") in the doc. Mints a 30-minute scoped token with
972
1149
  * the same capability set a webhook delivery would carry and POSTs it to
@@ -1448,6 +1625,16 @@ export declare const IntegrationAuthService: GenService<{
1448
1625
  input: typeof IssueExchangeTicketRequestSchema;
1449
1626
  output: typeof IssueExchangeTicketResponseSchema;
1450
1627
  },
1628
+ /**
1629
+ * Atomically redeem a ticket and return the resolved subject.
1630
+ *
1631
+ * @generated from rpc integrations.v1.IntegrationAuthService.RedeemExchangeTicket
1632
+ */
1633
+ redeemExchangeTicket: {
1634
+ methodKind: "unary";
1635
+ input: typeof RedeemExchangeTicketRequestSchema;
1636
+ output: typeof RedeemExchangeTicketResponseSchema;
1637
+ },
1451
1638
  }>;
1452
1639
 
1453
1640
  /**
@@ -1526,6 +1713,14 @@ export declare const IntegrationsService: GenService<{
1526
1713
  input: typeof GetIntegrationStatusRequestSchema;
1527
1714
  output: typeof GetIntegrationStatusResponseSchema;
1528
1715
  },
1716
+ /**
1717
+ * @generated from rpc integrations.v1.IntegrationsService.UpsertIntegrationStatus
1718
+ */
1719
+ upsertIntegrationStatus: {
1720
+ methodKind: "unary";
1721
+ input: typeof UpsertIntegrationStatusRequestSchema;
1722
+ output: typeof UpsertIntegrationStatusResponseSchema;
1723
+ },
1529
1724
  /**
1530
1725
  * @generated from rpc integrations.v1.IntegrationsService.TriggerSync
1531
1726
  */
@@ -10,7 +10,7 @@ import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bu
10
10
  * Describes the file integrations/v1/integrations.proto.
11
11
  */
12
12
  export const file_integrations_v1_integrations = /*@__PURE__*/
13
- fileDesc("CiJpbnRlZ3JhdGlvbnMvdjEvaW50ZWdyYXRpb25zLnByb3RvEg9pbnRlZ3JhdGlvbnMudjEiPgoVSW50ZWdyYXRpb25NaWRkbGV3YXJlEiUKA3VybBgBIAEoCUIYukgVchMQATIPXmh0dHBzOi8vW14gXSskIpQBChZJbnRlZ3JhdGlvbkNyZWRlbnRpYWxzEkEKCHN0cmF0ZWd5GAEgASgOMiMuaW50ZWdyYXRpb25zLnYxLkNyZWRlbnRpYWxTdHJhdGVneUIKukgHggEEEAEgABIsCgZ2YWx1ZXMYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCCQoHX3ZhbHVlcyLLAQoOTW9kZWxTZWVkRmllbGQSFQoEdHlwZRgBIAEoCUIHukgEcgIQARIQCghyZXF1aXJlZBgCIAEoCBITCgtuYXR1cmFsX2tleRgDIAEoCBISCgVsYWJlbBgEIAEoCUgAiAEBEhYKCWhlbHBfdGV4dBgFIAEoCUgBiAEBEiwKBmNvbmZpZxgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBAUIICgZfbGFiZWxCDAoKX2hlbHBfdGV4dEIJCgdfY29uZmlnIp0BCglNb2RlbFNlZWQSQAoGZmllbGRzGAEgAygLMiYuaW50ZWdyYXRpb25zLnYxLk1vZGVsU2VlZC5GaWVsZHNFbnRyeUIIukgFmgECCAEaTgoLRmllbGRzRW50cnkSCwoDa2V5GAEgASgJEi4KBXZhbHVlGAIgASgLMh8uaW50ZWdyYXRpb25zLnYxLk1vZGVsU2VlZEZpZWxkOgI4ASKWAgoWSW50ZWdyYXRpb25TeW5jTWFwcGluZxIWCgVtb2RlbBgBIAEoCUIHukgEcgIQARIcCgtuYXR1cmFsX2tleRgCIAEoCUIHukgEcgIQARJTCgZmaWVsZHMYAyADKAsyMy5pbnRlZ3JhdGlvbnMudjEuSW50ZWdyYXRpb25TeW5jTWFwcGluZy5GaWVsZHNFbnRyeUIOukgLmgEICAEqBHICEAESMwoKbW9kZWxfc2VlZBgEIAEoCzIaLmludGVncmF0aW9ucy52MS5Nb2RlbFNlZWRIAIgBARotCgtGaWVsZHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg0KC19tb2RlbF9zZWVkIvUDChFJbnRlZ3JhdGlvblN0YXR1cxI1CgxsYXN0X3N5bmNfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESIgoVbGFzdF9zeW5jX2R1cmF0aW9uX21zGAIgASgDSAGIAQESIwoWbGFzdF9zeW5jX3JlY29yZF9jb3VudBgDIAEoA0gCiAEBEhcKCmxhc3RfZXJyb3IYBCABKAlIA4gBARI2Cg1sYXN0X2Vycm9yX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEkAKE3N1YnNjcmlwdGlvbl9oZWFsdGgYBiABKA4yIy5pbnRlZ3JhdGlvbnMudjEuU3Vic2NyaXB0aW9uSGVhbHRoEjAKC2F1dGhfc3RhdHVzGAcgASgOMhsuaW50ZWdyYXRpb25zLnYxLkF1dGhTdGF0dXMSHgoRZGVsZXRpb25fc3RyYXRlZ3kYCCABKAlIBYgBAUIPCg1fbGFzdF9zeW5jX2F0QhgKFl9sYXN0X3N5bmNfZHVyYXRpb25fbXNCGQoXX2xhc3Rfc3luY19yZWNvcmRfY291bnRCDQoLX2xhc3RfZXJyb3JCEAoOX2xhc3RfZXJyb3JfYXRCFAoSX2RlbGV0aW9uX3N0cmF0ZWd5IvIDChFJbnRlZ3JhdGlvbkNvbmZpZxI2CgRuYW1lGAEgASgJQii6SCVyIxABGEAyHV5bYS16XVthLXowLTldKigtW2EtejAtOV0rKSokEg8KB2VuYWJsZWQYAiABKAgSQgoKbWlkZGxld2FyZRgDIAEoCzImLmludGVncmF0aW9ucy52MS5JbnRlZ3JhdGlvbk1pZGRsZXdhcmVCBrpIA8gBARJECgtjcmVkZW50aWFscxgEIAEoCzInLmludGVncmF0aW9ucy52MS5JbnRlZ3JhdGlvbkNyZWRlbnRpYWxzQga6SAPIAQESOgoEc3luYxgFIAMoCzIsLmludGVncmF0aW9ucy52MS5JbnRlZ3JhdGlvbkNvbmZpZy5TeW5jRW50cnkSLgoIc2V0dGluZ3MYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESLgoIbWV0YWRhdGEYByABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQEaVAoJU3luY0VudHJ5EgsKA2tleRgBIAEoCRI2CgV2YWx1ZRgCIAEoCzInLmludGVncmF0aW9ucy52MS5JbnRlZ3JhdGlvblN5bmNNYXBwaW5nOgI4AUILCglfc2V0dGluZ3NCCwoJX21ldGFkYXRhIs8BChJFeHRlbnNpb25QbGFjZW1lbnQSPAoGdGFyZ2V0GAEgASgOMiAuaW50ZWdyYXRpb25zLnYxLkV4dGVuc2lvblRhcmdldEIKukgHggEEEAEgABIWCgVtb2RlbBgCIAEoCUIHukgEcgIQARIUCgN0YWIYAyABKAlCB7pIBHICEAESFgoFdGl0bGUYBCABKAlCB7pIBHICEAESKwoFaGludHMYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCCAoGX2hpbnRzIvABCg9FeHRlbnNpb25Db25maWcSNgoEbmFtZRgBIAEoCUIoukglciMQARhAMh1eW2Etel1bYS16MC05XSooLVthLXowLTldKykqJBIlCgN1cmwYAiABKAlCGLpIFXITEAEyD15odHRwczovL1teIF0rJBJBCgpwbGFjZW1lbnRzGAMgAygLMiMuaW50ZWdyYXRpb25zLnYxLkV4dGVuc2lvblBsYWNlbWVudEIIukgFkgECCAESLgoIbWV0YWRhdGEYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCCwoJX21ldGFkYXRhItwBChpJbnRlZ3JhdGlvbkNyZWRlbnRpYWxWYWx1ZRINCgV2YWx1ZRgBIAEoDBIZChFlbmNyeXB0aW9uX2tleV9pZBgCIAEoCRI1CgxsYXN0X3JlYWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESOAoPbGFzdF93cml0dGVuX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQg8KDV9sYXN0X3JlYWRfYXRCEgoQX2xhc3Rfd3JpdHRlbl9hdCJPCh9HZXRJbnRlZ3JhdGlvbkNyZWRlbnRpYWxSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSGAoQaW50ZWdyYXRpb25fbmFtZRgCIAEoCSJjCiBHZXRJbnRlZ3JhdGlvbkNyZWRlbnRpYWxSZXNwb25zZRI/CgpjcmVkZW50aWFsGAEgASgLMisuaW50ZWdyYXRpb25zLnYxLkludGVncmF0aW9uQ3JlZGVudGlhbFZhbHVlIoIBCiFXcml0ZUludGVncmF0aW9uQ3JlZGVudGlhbFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIYChBpbnRlZ3JhdGlvbl9uYW1lGAIgASgJEg0KBXZhbHVlGAMgASgMEhQKB2NvbnRleHQYBCABKAlIAIgBAUIKCghfY29udGV4dCJ0CiJXcml0ZUludGVncmF0aW9uQ3JlZGVudGlhbFJlc3BvbnNlEhkKEWVuY3J5cHRpb25fa2V5X2lkGAEgASgJEjMKD2xhc3Rfd3JpdHRlbl9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiSgoaSXNzdWVFeGNoYW5nZVRpY2tldFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIYChBpbnRlZ3JhdGlvbl9uYW1lGAIgASgJIl0KG0lzc3VlRXhjaGFuZ2VUaWNrZXRSZXNwb25zZRIOCgZ0aWNrZXQYASABKAkSLgoKZXhwaXJlc19hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAitQEKEkludGVncmF0aW9uU3VtbWFyeRIyCgZjb25maWcYASABKAsyIi5pbnRlZ3JhdGlvbnMudjEuSW50ZWdyYXRpb25Db25maWcSEgoKYXV0aG9yaXplZBgCIAEoCBI3CgZzdGF0dXMYAyABKAsyIi5pbnRlZ3JhdGlvbnMudjEuSW50ZWdyYXRpb25TdGF0dXNIAIgBARITCgt3ZWJob29rX3VybBgEIAEoCUIJCgdfc3RhdHVzIi0KF0xpc3RJbnRlZ3JhdGlvbnNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkiVQoYTGlzdEludGVncmF0aW9uc1Jlc3BvbnNlEjkKDGludGVncmF0aW9ucxgBIAMoCzIjLmludGVncmF0aW9ucy52MS5JbnRlZ3JhdGlvblN1bW1hcnkiOQoVR2V0SW50ZWdyYXRpb25SZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSDAoEbmFtZRgCIAEoCSK5AQoWR2V0SW50ZWdyYXRpb25SZXNwb25zZRIyCgZjb25maWcYASABKAsyIi5pbnRlZ3JhdGlvbnMudjEuSW50ZWdyYXRpb25Db25maWcSNwoGc3RhdHVzGAIgASgLMiIuaW50ZWdyYXRpb25zLnYxLkludGVncmF0aW9uU3RhdHVzSACIAQESEgoKYXV0aG9yaXplZBgDIAEoCBITCgt3ZWJob29rX3VybBgEIAEoCUIJCgdfc3RhdHVzImIKGFVwc2VydEludGVncmF0aW9uUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEjIKBmNvbmZpZxgCIAEoCzIiLmludGVncmF0aW9ucy52MS5JbnRlZ3JhdGlvbkNvbmZpZyJkChlVcHNlcnRJbnRlZ3JhdGlvblJlc3BvbnNlEjIKBmNvbmZpZxgBIAEoCzIiLmludGVncmF0aW9ucy52MS5JbnRlZ3JhdGlvbkNvbmZpZxITCgt3ZWJob29rX3VybBgCIAEoCSI8ChhEZWxldGVJbnRlZ3JhdGlvblJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIMCgRuYW1lGAIgASgJIhsKGURlbGV0ZUludGVncmF0aW9uUmVzcG9uc2UiKwoVTGlzdEV4dGVuc2lvbnNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkiTgoWTGlzdEV4dGVuc2lvbnNSZXNwb25zZRI0CgpleHRlbnNpb25zGAEgAygLMiAuaW50ZWdyYXRpb25zLnYxLkV4dGVuc2lvbkNvbmZpZyI3ChNHZXRFeHRlbnNpb25SZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSDAoEbmFtZRgCIAEoCSJLChRHZXRFeHRlbnNpb25SZXNwb25zZRIzCglleHRlbnNpb24YASABKAsyIC5pbnRlZ3JhdGlvbnMudjEuRXh0ZW5zaW9uQ29uZmlnIl4KFlVwc2VydEV4dGVuc2lvblJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIwCgZjb25maWcYAiABKAsyIC5pbnRlZ3JhdGlvbnMudjEuRXh0ZW5zaW9uQ29uZmlnIksKF1Vwc2VydEV4dGVuc2lvblJlc3BvbnNlEjAKBmNvbmZpZxgBIAEoCzIgLmludGVncmF0aW9ucy52MS5FeHRlbnNpb25Db25maWciOgoWRGVsZXRlRXh0ZW5zaW9uUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEgwKBG5hbWUYAiABKAkiGQoXRGVsZXRlRXh0ZW5zaW9uUmVzcG9uc2UiPwobR2V0SW50ZWdyYXRpb25TdGF0dXNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSDAoEbmFtZRgCIAEoCSLCAQocR2V0SW50ZWdyYXRpb25TdGF0dXNSZXNwb25zZRI3CgZzdGF0dXMYASABKAsyIi5pbnRlZ3JhdGlvbnMudjEuSW50ZWdyYXRpb25TdGF0dXNIAIgBARIuCgp1cGRhdGVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIbCg51cGRhdGVkX2J5X2p0aRgDIAEoCUgBiAEBQgkKB19zdGF0dXNCEQoPX3VwZGF0ZWRfYnlfanRpIjYKElRyaWdnZXJTeW5jUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEgwKBG5hbWUYAiABKAkikwEKE1RyaWdnZXJTeW5jUmVzcG9uc2USHgoWbWlkZGxld2FyZV9odHRwX3N0YXR1cxgBIAEoBRIXCg9taWRkbGV3YXJlX2JvZHkYAiABKAkSMAoMdHJpZ2dlcmVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCgl0b2tlbl9qdGkYBCABKAkiNgoPVmFsaWRhdGlvbklzc3VlEhIKCmZpZWxkX3BhdGgYASABKAkSDwoHbWVzc2FnZRgCIAEoCSJAChVWYWxpZGF0ZUNvbmZpZ1JlcXVlc3QSJwoGY29uZmlnGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJ+ChZWYWxpZGF0ZUNvbmZpZ1Jlc3BvbnNlEjAKBmVycm9ycxgBIAMoCzIgLmludGVncmF0aW9ucy52MS5WYWxpZGF0aW9uSXNzdWUSMgoId2FybmluZ3MYAiADKAsyIC5pbnRlZ3JhdGlvbnMudjEuVmFsaWRhdGlvbklzc3VlIqgBChJDb25maWdIaXN0b3J5RW50cnkSCgoCaWQYASABKAkSLQoJcHVzaGVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCglwdXNoZWRfYnkYAyABKAkSDgoGc291cmNlGAQgASgJEgoKAm9rGAUgASgIEhYKDnJlc3VsdF9zdW1tYXJ5GAYgASgJEhAKCGhhc19kaWZmGAcgASgIIk0KGExpc3RDb25maWdIaXN0b3J5UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEg0KBWxpbWl0GAIgASgFEg4KBmN1cnNvchgDIAEoCSJmChlMaXN0Q29uZmlnSGlzdG9yeVJlc3BvbnNlEjQKB2VudHJpZXMYASADKAsyIy5pbnRlZ3JhdGlvbnMudjEuQ29uZmlnSGlzdG9yeUVudHJ5EhMKC25leHRfY3Vyc29yGAIgASgJIj4KHEdldENvbmZpZ0hpc3RvcnlFbnRyeVJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIKCgJpZBgCIAEoCSKdAQodR2V0Q29uZmlnSGlzdG9yeUVudHJ5UmVzcG9uc2USMgoFZW50cnkYASABKAsyIy5pbnRlZ3JhdGlvbnMudjEuQ29uZmlnSGlzdG9yeUVudHJ5EiwKC2NvbmZpZ19qc29uGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIaChJkaWZmX2Zyb21fcHJldmlvdXMYAyABKAkqgAIKEkNyZWRlbnRpYWxTdHJhdGVneRIjCh9DUkVERU5USUFMX1NUUkFURUdZX1VOU1BFQ0lGSUVEEAASHQoZQ1JFREVOVElBTF9TVFJBVEVHWV9PQVVUSBABEh8KG0NSRURFTlRJQUxfU1RSQVRFR1lfQVBJX0tFWRACEiUKIUNSRURFTlRJQUxfU1RSQVRFR1lfU0hBUkVEX1NFQ1JFVBADEh8KG0NSRURFTlRJQUxfU1RSQVRFR1lfU1NIX0tFWRAEEhwKGENSRURFTlRJQUxfU1RSQVRFR1lfTk9ORRAFEh8KG0NSRURFTlRJQUxfU1RSQVRFR1lfTUFOQUdFRBAGKpQBChJTdWJzY3JpcHRpb25IZWFsdGgSIwofU1VCU0NSSVBUSU9OX0hFQUxUSF9VTlNQRUNJRklFRBAAEhoKFlNVQlNDUklQVElPTl9IRUFMVEhfT0sQARIdChlTVUJTQ1JJUFRJT05fSEVBTFRIX1NUQUxFEAISHgoaU1VCU0NSSVBUSU9OX0hFQUxUSF9CUk9LRU4QAypvCgpBdXRoU3RhdHVzEhsKF0FVVEhfU1RBVFVTX1VOU1BFQ0lGSUVEEAASEgoOQVVUSF9TVEFUVVNfT0sQARIXChNBVVRIX1NUQVRVU19FWFBJUkVEEAISFwoTQVVUSF9TVEFUVVNfUkVWT0tFRBADKnEKD0V4dGVuc2lvblRhcmdldBIgChxFWFRFTlNJT05fVEFSR0VUX1VOU1BFQ0lGSUVEEAASGwoXRVhURU5TSU9OX1RBUkdFVF9SRUNPUkQQARIfChtFWFRFTlNJT05fVEFSR0VUX01PREVMX0xJU1QQAjKoAgodSW50ZWdyYXRpb25DcmVkZW50aWFsc1NlcnZpY2USfwoYR2V0SW50ZWdyYXRpb25DcmVkZW50aWFsEjAuaW50ZWdyYXRpb25zLnYxLkdldEludGVncmF0aW9uQ3JlZGVudGlhbFJlcXVlc3QaMS5pbnRlZ3JhdGlvbnMudjEuR2V0SW50ZWdyYXRpb25DcmVkZW50aWFsUmVzcG9uc2UShQEKGldyaXRlSW50ZWdyYXRpb25DcmVkZW50aWFsEjIuaW50ZWdyYXRpb25zLnYxLldyaXRlSW50ZWdyYXRpb25DcmVkZW50aWFsUmVxdWVzdBozLmludGVncmF0aW9ucy52MS5Xcml0ZUludGVncmF0aW9uQ3JlZGVudGlhbFJlc3BvbnNlMooBChZJbnRlZ3JhdGlvbkF1dGhTZXJ2aWNlEnAKE0lzc3VlRXhjaGFuZ2VUaWNrZXQSKy5pbnRlZ3JhdGlvbnMudjEuSXNzdWVFeGNoYW5nZVRpY2tldFJlcXVlc3QaLC5pbnRlZ3JhdGlvbnMudjEuSXNzdWVFeGNoYW5nZVRpY2tldFJlc3BvbnNlMtsKChNJbnRlZ3JhdGlvbnNTZXJ2aWNlEmcKEExpc3RJbnRlZ3JhdGlvbnMSKC5pbnRlZ3JhdGlvbnMudjEuTGlzdEludGVncmF0aW9uc1JlcXVlc3QaKS5pbnRlZ3JhdGlvbnMudjEuTGlzdEludGVncmF0aW9uc1Jlc3BvbnNlEmEKDkdldEludGVncmF0aW9uEiYuaW50ZWdyYXRpb25zLnYxLkdldEludGVncmF0aW9uUmVxdWVzdBonLmludGVncmF0aW9ucy52MS5HZXRJbnRlZ3JhdGlvblJlc3BvbnNlEmoKEVVwc2VydEludGVncmF0aW9uEikuaW50ZWdyYXRpb25zLnYxLlVwc2VydEludGVncmF0aW9uUmVxdWVzdBoqLmludGVncmF0aW9ucy52MS5VcHNlcnRJbnRlZ3JhdGlvblJlc3BvbnNlEmoKEURlbGV0ZUludGVncmF0aW9uEikuaW50ZWdyYXRpb25zLnYxLkRlbGV0ZUludGVncmF0aW9uUmVxdWVzdBoqLmludGVncmF0aW9ucy52MS5EZWxldGVJbnRlZ3JhdGlvblJlc3BvbnNlEmEKDkxpc3RFeHRlbnNpb25zEiYuaW50ZWdyYXRpb25zLnYxLkxpc3RFeHRlbnNpb25zUmVxdWVzdBonLmludGVncmF0aW9ucy52MS5MaXN0RXh0ZW5zaW9uc1Jlc3BvbnNlElsKDEdldEV4dGVuc2lvbhIkLmludGVncmF0aW9ucy52MS5HZXRFeHRlbnNpb25SZXF1ZXN0GiUuaW50ZWdyYXRpb25zLnYxLkdldEV4dGVuc2lvblJlc3BvbnNlEmQKD1Vwc2VydEV4dGVuc2lvbhInLmludGVncmF0aW9ucy52MS5VcHNlcnRFeHRlbnNpb25SZXF1ZXN0GiguaW50ZWdyYXRpb25zLnYxLlVwc2VydEV4dGVuc2lvblJlc3BvbnNlEmQKD0RlbGV0ZUV4dGVuc2lvbhInLmludGVncmF0aW9ucy52MS5EZWxldGVFeHRlbnNpb25SZXF1ZXN0GiguaW50ZWdyYXRpb25zLnYxLkRlbGV0ZUV4dGVuc2lvblJlc3BvbnNlEnMKFEdldEludGVncmF0aW9uU3RhdHVzEiwuaW50ZWdyYXRpb25zLnYxLkdldEludGVncmF0aW9uU3RhdHVzUmVxdWVzdBotLmludGVncmF0aW9ucy52MS5HZXRJbnRlZ3JhdGlvblN0YXR1c1Jlc3BvbnNlElgKC1RyaWdnZXJTeW5jEiMuaW50ZWdyYXRpb25zLnYxLlRyaWdnZXJTeW5jUmVxdWVzdBokLmludGVncmF0aW9ucy52MS5UcmlnZ2VyU3luY1Jlc3BvbnNlEmEKDlZhbGlkYXRlQ29uZmlnEiYuaW50ZWdyYXRpb25zLnYxLlZhbGlkYXRlQ29uZmlnUmVxdWVzdBonLmludGVncmF0aW9ucy52MS5WYWxpZGF0ZUNvbmZpZ1Jlc3BvbnNlEmoKEUxpc3RDb25maWdIaXN0b3J5EikuaW50ZWdyYXRpb25zLnYxLkxpc3RDb25maWdIaXN0b3J5UmVxdWVzdBoqLmludGVncmF0aW9ucy52MS5MaXN0Q29uZmlnSGlzdG9yeVJlc3BvbnNlEnYKFUdldENvbmZpZ0hpc3RvcnlFbnRyeRItLmludGVncmF0aW9ucy52MS5HZXRDb25maWdIaXN0b3J5RW50cnlSZXF1ZXN0Gi4uaW50ZWdyYXRpb25zLnYxLkdldENvbmZpZ0hpc3RvcnlFbnRyeVJlc3BvbnNlQkVaQ2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9pbnRlZ3JhdGlvbnMvdjE7aW50ZWdyYXRpb25zdjFiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_struct, file_google_protobuf_timestamp]);
13
+ fileDesc("CiJpbnRlZ3JhdGlvbnMvdjEvaW50ZWdyYXRpb25zLnByb3RvEg9pbnRlZ3JhdGlvbnMudjEiPgoVSW50ZWdyYXRpb25NaWRkbGV3YXJlEiUKA3VybBgBIAEoCUIYukgVchMQATIPXmh0dHBzOi8vW14gXSskIpQBChZJbnRlZ3JhdGlvbkNyZWRlbnRpYWxzEkEKCHN0cmF0ZWd5GAEgASgOMiMuaW50ZWdyYXRpb25zLnYxLkNyZWRlbnRpYWxTdHJhdGVneUIKukgHggEEEAEgABIsCgZ2YWx1ZXMYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCCQoHX3ZhbHVlcyLLAQoOTW9kZWxTZWVkRmllbGQSFQoEdHlwZRgBIAEoCUIHukgEcgIQARIQCghyZXF1aXJlZBgCIAEoCBITCgtuYXR1cmFsX2tleRgDIAEoCBISCgVsYWJlbBgEIAEoCUgAiAEBEhYKCWhlbHBfdGV4dBgFIAEoCUgBiAEBEiwKBmNvbmZpZxgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBAUIICgZfbGFiZWxCDAoKX2hlbHBfdGV4dEIJCgdfY29uZmlnIp0BCglNb2RlbFNlZWQSQAoGZmllbGRzGAEgAygLMiYuaW50ZWdyYXRpb25zLnYxLk1vZGVsU2VlZC5GaWVsZHNFbnRyeUIIukgFmgECCAEaTgoLRmllbGRzRW50cnkSCwoDa2V5GAEgASgJEi4KBXZhbHVlGAIgASgLMh8uaW50ZWdyYXRpb25zLnYxLk1vZGVsU2VlZEZpZWxkOgI4ASKWAgoWSW50ZWdyYXRpb25TeW5jTWFwcGluZxIWCgVtb2RlbBgBIAEoCUIHukgEcgIQARIcCgtuYXR1cmFsX2tleRgCIAEoCUIHukgEcgIQARJTCgZmaWVsZHMYAyADKAsyMy5pbnRlZ3JhdGlvbnMudjEuSW50ZWdyYXRpb25TeW5jTWFwcGluZy5GaWVsZHNFbnRyeUIOukgLmgEICAEqBHICEAESMwoKbW9kZWxfc2VlZBgEIAEoCzIaLmludGVncmF0aW9ucy52MS5Nb2RlbFNlZWRIAIgBARotCgtGaWVsZHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg0KC19tb2RlbF9zZWVkIvUDChFJbnRlZ3JhdGlvblN0YXR1cxI1CgxsYXN0X3N5bmNfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESIgoVbGFzdF9zeW5jX2R1cmF0aW9uX21zGAIgASgDSAGIAQESIwoWbGFzdF9zeW5jX3JlY29yZF9jb3VudBgDIAEoA0gCiAEBEhcKCmxhc3RfZXJyb3IYBCABKAlIA4gBARI2Cg1sYXN0X2Vycm9yX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEkAKE3N1YnNjcmlwdGlvbl9oZWFsdGgYBiABKA4yIy5pbnRlZ3JhdGlvbnMudjEuU3Vic2NyaXB0aW9uSGVhbHRoEjAKC2F1dGhfc3RhdHVzGAcgASgOMhsuaW50ZWdyYXRpb25zLnYxLkF1dGhTdGF0dXMSHgoRZGVsZXRpb25fc3RyYXRlZ3kYCCABKAlIBYgBAUIPCg1fbGFzdF9zeW5jX2F0QhgKFl9sYXN0X3N5bmNfZHVyYXRpb25fbXNCGQoXX2xhc3Rfc3luY19yZWNvcmRfY291bnRCDQoLX2xhc3RfZXJyb3JCEAoOX2xhc3RfZXJyb3JfYXRCFAoSX2RlbGV0aW9uX3N0cmF0ZWd5IvIDChFJbnRlZ3JhdGlvbkNvbmZpZxI2CgRuYW1lGAEgASgJQii6SCVyIxABGEAyHV5bYS16XVthLXowLTldKigtW2EtejAtOV0rKSokEg8KB2VuYWJsZWQYAiABKAgSQgoKbWlkZGxld2FyZRgDIAEoCzImLmludGVncmF0aW9ucy52MS5JbnRlZ3JhdGlvbk1pZGRsZXdhcmVCBrpIA8gBARJECgtjcmVkZW50aWFscxgEIAEoCzInLmludGVncmF0aW9ucy52MS5JbnRlZ3JhdGlvbkNyZWRlbnRpYWxzQga6SAPIAQESOgoEc3luYxgFIAMoCzIsLmludGVncmF0aW9ucy52MS5JbnRlZ3JhdGlvbkNvbmZpZy5TeW5jRW50cnkSLgoIc2V0dGluZ3MYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESLgoIbWV0YWRhdGEYByABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQEaVAoJU3luY0VudHJ5EgsKA2tleRgBIAEoCRI2CgV2YWx1ZRgCIAEoCzInLmludGVncmF0aW9ucy52MS5JbnRlZ3JhdGlvblN5bmNNYXBwaW5nOgI4AUILCglfc2V0dGluZ3NCCwoJX21ldGFkYXRhIs8BChJFeHRlbnNpb25QbGFjZW1lbnQSPAoGdGFyZ2V0GAEgASgOMiAuaW50ZWdyYXRpb25zLnYxLkV4dGVuc2lvblRhcmdldEIKukgHggEEEAEgABIWCgVtb2RlbBgCIAEoCUIHukgEcgIQARIUCgN0YWIYAyABKAlCB7pIBHICEAESFgoFdGl0bGUYBCABKAlCB7pIBHICEAESKwoFaGludHMYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCCAoGX2hpbnRzIvABCg9FeHRlbnNpb25Db25maWcSNgoEbmFtZRgBIAEoCUIoukglciMQARhAMh1eW2Etel1bYS16MC05XSooLVthLXowLTldKykqJBIlCgN1cmwYAiABKAlCGLpIFXITEAEyD15odHRwczovL1teIF0rJBJBCgpwbGFjZW1lbnRzGAMgAygLMiMuaW50ZWdyYXRpb25zLnYxLkV4dGVuc2lvblBsYWNlbWVudEIIukgFkgECCAESLgoIbWV0YWRhdGEYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCCwoJX21ldGFkYXRhItwBChpJbnRlZ3JhdGlvbkNyZWRlbnRpYWxWYWx1ZRINCgV2YWx1ZRgBIAEoDBIZChFlbmNyeXB0aW9uX2tleV9pZBgCIAEoCRI1CgxsYXN0X3JlYWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESOAoPbGFzdF93cml0dGVuX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQg8KDV9sYXN0X3JlYWRfYXRCEgoQX2xhc3Rfd3JpdHRlbl9hdCJPCh9HZXRJbnRlZ3JhdGlvbkNyZWRlbnRpYWxSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSGAoQaW50ZWdyYXRpb25fbmFtZRgCIAEoCSJjCiBHZXRJbnRlZ3JhdGlvbkNyZWRlbnRpYWxSZXNwb25zZRI/CgpjcmVkZW50aWFsGAEgASgLMisuaW50ZWdyYXRpb25zLnYxLkludGVncmF0aW9uQ3JlZGVudGlhbFZhbHVlIoIBCiFXcml0ZUludGVncmF0aW9uQ3JlZGVudGlhbFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIYChBpbnRlZ3JhdGlvbl9uYW1lGAIgASgJEg0KBXZhbHVlGAMgASgMEhQKB2NvbnRleHQYBCABKAlIAIgBAUIKCghfY29udGV4dCJ0CiJXcml0ZUludGVncmF0aW9uQ3JlZGVudGlhbFJlc3BvbnNlEhkKEWVuY3J5cHRpb25fa2V5X2lkGAEgASgJEjMKD2xhc3Rfd3JpdHRlbl9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiSgoaSXNzdWVFeGNoYW5nZVRpY2tldFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIYChBpbnRlZ3JhdGlvbl9uYW1lGAIgASgJIl0KG0lzc3VlRXhjaGFuZ2VUaWNrZXRSZXNwb25zZRIOCgZ0aWNrZXQYASABKAkSLgoKZXhwaXJlc19hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiQAobUmVkZWVtRXhjaGFuZ2VUaWNrZXRSZXF1ZXN0Eg4KBnRpY2tldBgBIAEoCRIRCglhY3Rvcl9yZWYYAiABKAkitgEKHFJlZGVlbUV4Y2hhbmdlVGlja2V0UmVzcG9uc2USEQoJdGlja2V0X2lkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEhgKEGludGVncmF0aW9uX25hbWUYBCABKAkSEgoKY2FwYWJpbGl0eRgFIAEoCRIuCgpleHBpcmVzX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCK1AQoSSW50ZWdyYXRpb25TdW1tYXJ5EjIKBmNvbmZpZxgBIAEoCzIiLmludGVncmF0aW9ucy52MS5JbnRlZ3JhdGlvbkNvbmZpZxISCgphdXRob3JpemVkGAIgASgIEjcKBnN0YXR1cxgDIAEoCzIiLmludGVncmF0aW9ucy52MS5JbnRlZ3JhdGlvblN0YXR1c0gAiAEBEhMKC3dlYmhvb2tfdXJsGAQgASgJQgkKB19zdGF0dXMiLQoXTGlzdEludGVncmF0aW9uc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJVChhMaXN0SW50ZWdyYXRpb25zUmVzcG9uc2USOQoMaW50ZWdyYXRpb25zGAEgAygLMiMuaW50ZWdyYXRpb25zLnYxLkludGVncmF0aW9uU3VtbWFyeSI5ChVHZXRJbnRlZ3JhdGlvblJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIMCgRuYW1lGAIgASgJIrkBChZHZXRJbnRlZ3JhdGlvblJlc3BvbnNlEjIKBmNvbmZpZxgBIAEoCzIiLmludGVncmF0aW9ucy52MS5JbnRlZ3JhdGlvbkNvbmZpZxI3CgZzdGF0dXMYAiABKAsyIi5pbnRlZ3JhdGlvbnMudjEuSW50ZWdyYXRpb25TdGF0dXNIAIgBARISCgphdXRob3JpemVkGAMgASgIEhMKC3dlYmhvb2tfdXJsGAQgASgJQgkKB19zdGF0dXMiYgoYVXBzZXJ0SW50ZWdyYXRpb25SZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSMgoGY29uZmlnGAIgASgLMiIuaW50ZWdyYXRpb25zLnYxLkludGVncmF0aW9uQ29uZmlnImQKGVVwc2VydEludGVncmF0aW9uUmVzcG9uc2USMgoGY29uZmlnGAEgASgLMiIuaW50ZWdyYXRpb25zLnYxLkludGVncmF0aW9uQ29uZmlnEhMKC3dlYmhvb2tfdXJsGAIgASgJIjwKGERlbGV0ZUludGVncmF0aW9uUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEgwKBG5hbWUYAiABKAkiGwoZRGVsZXRlSW50ZWdyYXRpb25SZXNwb25zZSIrChVMaXN0RXh0ZW5zaW9uc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJOChZMaXN0RXh0ZW5zaW9uc1Jlc3BvbnNlEjQKCmV4dGVuc2lvbnMYASADKAsyIC5pbnRlZ3JhdGlvbnMudjEuRXh0ZW5zaW9uQ29uZmlnIjcKE0dldEV4dGVuc2lvblJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIMCgRuYW1lGAIgASgJIksKFEdldEV4dGVuc2lvblJlc3BvbnNlEjMKCWV4dGVuc2lvbhgBIAEoCzIgLmludGVncmF0aW9ucy52MS5FeHRlbnNpb25Db25maWciXgoWVXBzZXJ0RXh0ZW5zaW9uUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEjAKBmNvbmZpZxgCIAEoCzIgLmludGVncmF0aW9ucy52MS5FeHRlbnNpb25Db25maWciSwoXVXBzZXJ0RXh0ZW5zaW9uUmVzcG9uc2USMAoGY29uZmlnGAEgASgLMiAuaW50ZWdyYXRpb25zLnYxLkV4dGVuc2lvbkNvbmZpZyI6ChZEZWxldGVFeHRlbnNpb25SZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSDAoEbmFtZRgCIAEoCSIZChdEZWxldGVFeHRlbnNpb25SZXNwb25zZSI/ChtHZXRJbnRlZ3JhdGlvblN0YXR1c1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIMCgRuYW1lGAIgASgJIsIBChxHZXRJbnRlZ3JhdGlvblN0YXR1c1Jlc3BvbnNlEjcKBnN0YXR1cxgBIAEoCzIiLmludGVncmF0aW9ucy52MS5JbnRlZ3JhdGlvblN0YXR1c0gAiAEBEi4KCnVwZGF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhsKDnVwZGF0ZWRfYnlfanRpGAMgASgJSAGIAQFCCQoHX3N0YXR1c0IRCg9fdXBkYXRlZF9ieV9qdGki1wQKHlVwc2VydEludGVncmF0aW9uU3RhdHVzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhgKEGludGVncmF0aW9uX25hbWUYAiABKAkSNQoMbGFzdF9zeW5jX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEiIKFWxhc3Rfc3luY19kdXJhdGlvbl9tcxgEIAEoA0gBiAEBEiMKFmxhc3Rfc3luY19yZWNvcmRfY291bnQYBSABKANIAogBARIXCgpsYXN0X2Vycm9yGAYgASgJSAOIAQESNgoNbGFzdF9lcnJvcl9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIgChNzdWJzY3JpcHRpb25faGVhbHRoGAggASgJSAWIAQESGAoLYXV0aF9zdGF0dXMYCSABKAlIBogBARIeChFkZWxldGlvbl9zdHJhdGVneRgKIAEoCUgHiAEBEisKBWV4dHJhGAsgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgIiAEBQg8KDV9sYXN0X3N5bmNfYXRCGAoWX2xhc3Rfc3luY19kdXJhdGlvbl9tc0IZChdfbGFzdF9zeW5jX3JlY29yZF9jb3VudEINCgtfbGFzdF9lcnJvckIQCg5fbGFzdF9lcnJvcl9hdEIWChRfc3Vic2NyaXB0aW9uX2hlYWx0aEIOCgxfYXV0aF9zdGF0dXNCFAoSX2RlbGV0aW9uX3N0cmF0ZWd5QggKBl9leHRyYSJRCh9VcHNlcnRJbnRlZ3JhdGlvblN0YXR1c1Jlc3BvbnNlEi4KCnVwZGF0ZWRfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjYKElRyaWdnZXJTeW5jUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEgwKBG5hbWUYAiABKAkikwEKE1RyaWdnZXJTeW5jUmVzcG9uc2USHgoWbWlkZGxld2FyZV9odHRwX3N0YXR1cxgBIAEoBRIXCg9taWRkbGV3YXJlX2JvZHkYAiABKAkSMAoMdHJpZ2dlcmVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCgl0b2tlbl9qdGkYBCABKAkiNgoPVmFsaWRhdGlvbklzc3VlEhIKCmZpZWxkX3BhdGgYASABKAkSDwoHbWVzc2FnZRgCIAEoCSJAChVWYWxpZGF0ZUNvbmZpZ1JlcXVlc3QSJwoGY29uZmlnGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJ+ChZWYWxpZGF0ZUNvbmZpZ1Jlc3BvbnNlEjAKBmVycm9ycxgBIAMoCzIgLmludGVncmF0aW9ucy52MS5WYWxpZGF0aW9uSXNzdWUSMgoId2FybmluZ3MYAiADKAsyIC5pbnRlZ3JhdGlvbnMudjEuVmFsaWRhdGlvbklzc3VlIqgBChJDb25maWdIaXN0b3J5RW50cnkSCgoCaWQYASABKAkSLQoJcHVzaGVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCglwdXNoZWRfYnkYAyABKAkSDgoGc291cmNlGAQgASgJEgoKAm9rGAUgASgIEhYKDnJlc3VsdF9zdW1tYXJ5GAYgASgJEhAKCGhhc19kaWZmGAcgASgIIk0KGExpc3RDb25maWdIaXN0b3J5UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEg0KBWxpbWl0GAIgASgFEg4KBmN1cnNvchgDIAEoCSJmChlMaXN0Q29uZmlnSGlzdG9yeVJlc3BvbnNlEjQKB2VudHJpZXMYASADKAsyIy5pbnRlZ3JhdGlvbnMudjEuQ29uZmlnSGlzdG9yeUVudHJ5EhMKC25leHRfY3Vyc29yGAIgASgJIj4KHEdldENvbmZpZ0hpc3RvcnlFbnRyeVJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIKCgJpZBgCIAEoCSKdAQodR2V0Q29uZmlnSGlzdG9yeUVudHJ5UmVzcG9uc2USMgoFZW50cnkYASABKAsyIy5pbnRlZ3JhdGlvbnMudjEuQ29uZmlnSGlzdG9yeUVudHJ5EiwKC2NvbmZpZ19qc29uGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIaChJkaWZmX2Zyb21fcHJldmlvdXMYAyABKAkqgAIKEkNyZWRlbnRpYWxTdHJhdGVneRIjCh9DUkVERU5USUFMX1NUUkFURUdZX1VOU1BFQ0lGSUVEEAASHQoZQ1JFREVOVElBTF9TVFJBVEVHWV9PQVVUSBABEh8KG0NSRURFTlRJQUxfU1RSQVRFR1lfQVBJX0tFWRACEiUKIUNSRURFTlRJQUxfU1RSQVRFR1lfU0hBUkVEX1NFQ1JFVBADEh8KG0NSRURFTlRJQUxfU1RSQVRFR1lfU1NIX0tFWRAEEhwKGENSRURFTlRJQUxfU1RSQVRFR1lfTk9ORRAFEh8KG0NSRURFTlRJQUxfU1RSQVRFR1lfTUFOQUdFRBAGKpQBChJTdWJzY3JpcHRpb25IZWFsdGgSIwofU1VCU0NSSVBUSU9OX0hFQUxUSF9VTlNQRUNJRklFRBAAEhoKFlNVQlNDUklQVElPTl9IRUFMVEhfT0sQARIdChlTVUJTQ1JJUFRJT05fSEVBTFRIX1NUQUxFEAISHgoaU1VCU0NSSVBUSU9OX0hFQUxUSF9CUk9LRU4QAypvCgpBdXRoU3RhdHVzEhsKF0FVVEhfU1RBVFVTX1VOU1BFQ0lGSUVEEAASEgoOQVVUSF9TVEFUVVNfT0sQARIXChNBVVRIX1NUQVRVU19FWFBJUkVEEAISFwoTQVVUSF9TVEFUVVNfUkVWT0tFRBADKnEKD0V4dGVuc2lvblRhcmdldBIgChxFWFRFTlNJT05fVEFSR0VUX1VOU1BFQ0lGSUVEEAASGwoXRVhURU5TSU9OX1RBUkdFVF9SRUNPUkQQARIfChtFWFRFTlNJT05fVEFSR0VUX01PREVMX0xJU1QQAjKoAgodSW50ZWdyYXRpb25DcmVkZW50aWFsc1NlcnZpY2USfwoYR2V0SW50ZWdyYXRpb25DcmVkZW50aWFsEjAuaW50ZWdyYXRpb25zLnYxLkdldEludGVncmF0aW9uQ3JlZGVudGlhbFJlcXVlc3QaMS5pbnRlZ3JhdGlvbnMudjEuR2V0SW50ZWdyYXRpb25DcmVkZW50aWFsUmVzcG9uc2UShQEKGldyaXRlSW50ZWdyYXRpb25DcmVkZW50aWFsEjIuaW50ZWdyYXRpb25zLnYxLldyaXRlSW50ZWdyYXRpb25DcmVkZW50aWFsUmVxdWVzdBozLmludGVncmF0aW9ucy52MS5Xcml0ZUludGVncmF0aW9uQ3JlZGVudGlhbFJlc3BvbnNlMv8BChZJbnRlZ3JhdGlvbkF1dGhTZXJ2aWNlEnAKE0lzc3VlRXhjaGFuZ2VUaWNrZXQSKy5pbnRlZ3JhdGlvbnMudjEuSXNzdWVFeGNoYW5nZVRpY2tldFJlcXVlc3QaLC5pbnRlZ3JhdGlvbnMudjEuSXNzdWVFeGNoYW5nZVRpY2tldFJlc3BvbnNlEnMKFFJlZGVlbUV4Y2hhbmdlVGlja2V0EiwuaW50ZWdyYXRpb25zLnYxLlJlZGVlbUV4Y2hhbmdlVGlja2V0UmVxdWVzdBotLmludGVncmF0aW9ucy52MS5SZWRlZW1FeGNoYW5nZVRpY2tldFJlc3BvbnNlMtkLChNJbnRlZ3JhdGlvbnNTZXJ2aWNlEmcKEExpc3RJbnRlZ3JhdGlvbnMSKC5pbnRlZ3JhdGlvbnMudjEuTGlzdEludGVncmF0aW9uc1JlcXVlc3QaKS5pbnRlZ3JhdGlvbnMudjEuTGlzdEludGVncmF0aW9uc1Jlc3BvbnNlEmEKDkdldEludGVncmF0aW9uEiYuaW50ZWdyYXRpb25zLnYxLkdldEludGVncmF0aW9uUmVxdWVzdBonLmludGVncmF0aW9ucy52MS5HZXRJbnRlZ3JhdGlvblJlc3BvbnNlEmoKEVVwc2VydEludGVncmF0aW9uEikuaW50ZWdyYXRpb25zLnYxLlVwc2VydEludGVncmF0aW9uUmVxdWVzdBoqLmludGVncmF0aW9ucy52MS5VcHNlcnRJbnRlZ3JhdGlvblJlc3BvbnNlEmoKEURlbGV0ZUludGVncmF0aW9uEikuaW50ZWdyYXRpb25zLnYxLkRlbGV0ZUludGVncmF0aW9uUmVxdWVzdBoqLmludGVncmF0aW9ucy52MS5EZWxldGVJbnRlZ3JhdGlvblJlc3BvbnNlEmEKDkxpc3RFeHRlbnNpb25zEiYuaW50ZWdyYXRpb25zLnYxLkxpc3RFeHRlbnNpb25zUmVxdWVzdBonLmludGVncmF0aW9ucy52MS5MaXN0RXh0ZW5zaW9uc1Jlc3BvbnNlElsKDEdldEV4dGVuc2lvbhIkLmludGVncmF0aW9ucy52MS5HZXRFeHRlbnNpb25SZXF1ZXN0GiUuaW50ZWdyYXRpb25zLnYxLkdldEV4dGVuc2lvblJlc3BvbnNlEmQKD1Vwc2VydEV4dGVuc2lvbhInLmludGVncmF0aW9ucy52MS5VcHNlcnRFeHRlbnNpb25SZXF1ZXN0GiguaW50ZWdyYXRpb25zLnYxLlVwc2VydEV4dGVuc2lvblJlc3BvbnNlEmQKD0RlbGV0ZUV4dGVuc2lvbhInLmludGVncmF0aW9ucy52MS5EZWxldGVFeHRlbnNpb25SZXF1ZXN0GiguaW50ZWdyYXRpb25zLnYxLkRlbGV0ZUV4dGVuc2lvblJlc3BvbnNlEnMKFEdldEludGVncmF0aW9uU3RhdHVzEiwuaW50ZWdyYXRpb25zLnYxLkdldEludGVncmF0aW9uU3RhdHVzUmVxdWVzdBotLmludGVncmF0aW9ucy52MS5HZXRJbnRlZ3JhdGlvblN0YXR1c1Jlc3BvbnNlEnwKF1Vwc2VydEludGVncmF0aW9uU3RhdHVzEi8uaW50ZWdyYXRpb25zLnYxLlVwc2VydEludGVncmF0aW9uU3RhdHVzUmVxdWVzdBowLmludGVncmF0aW9ucy52MS5VcHNlcnRJbnRlZ3JhdGlvblN0YXR1c1Jlc3BvbnNlElgKC1RyaWdnZXJTeW5jEiMuaW50ZWdyYXRpb25zLnYxLlRyaWdnZXJTeW5jUmVxdWVzdBokLmludGVncmF0aW9ucy52MS5UcmlnZ2VyU3luY1Jlc3BvbnNlEmEKDlZhbGlkYXRlQ29uZmlnEiYuaW50ZWdyYXRpb25zLnYxLlZhbGlkYXRlQ29uZmlnUmVxdWVzdBonLmludGVncmF0aW9ucy52MS5WYWxpZGF0ZUNvbmZpZ1Jlc3BvbnNlEmoKEUxpc3RDb25maWdIaXN0b3J5EikuaW50ZWdyYXRpb25zLnYxLkxpc3RDb25maWdIaXN0b3J5UmVxdWVzdBoqLmludGVncmF0aW9ucy52MS5MaXN0Q29uZmlnSGlzdG9yeVJlc3BvbnNlEnYKFUdldENvbmZpZ0hpc3RvcnlFbnRyeRItLmludGVncmF0aW9ucy52MS5HZXRDb25maWdIaXN0b3J5RW50cnlSZXF1ZXN0Gi4uaW50ZWdyYXRpb25zLnYxLkdldENvbmZpZ0hpc3RvcnlFbnRyeVJlc3BvbnNlQkVaQ2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9pbnRlZ3JhdGlvbnMvdjE7aW50ZWdyYXRpb25zdjFiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_struct, file_google_protobuf_timestamp]);
14
14
 
15
15
  /**
16
16
  * Describes the message integrations.v1.IntegrationMiddleware.
@@ -124,208 +124,236 @@ export const IssueExchangeTicketRequestSchema = /*@__PURE__*/
124
124
  export const IssueExchangeTicketResponseSchema = /*@__PURE__*/
125
125
  messageDesc(file_integrations_v1_integrations, 15);
126
126
 
127
+ /**
128
+ * Describes the message integrations.v1.RedeemExchangeTicketRequest.
129
+ * Use `create(RedeemExchangeTicketRequestSchema)` to create a new message.
130
+ */
131
+ export const RedeemExchangeTicketRequestSchema = /*@__PURE__*/
132
+ messageDesc(file_integrations_v1_integrations, 16);
133
+
134
+ /**
135
+ * Describes the message integrations.v1.RedeemExchangeTicketResponse.
136
+ * Use `create(RedeemExchangeTicketResponseSchema)` to create a new message.
137
+ */
138
+ export const RedeemExchangeTicketResponseSchema = /*@__PURE__*/
139
+ messageDesc(file_integrations_v1_integrations, 17);
140
+
127
141
  /**
128
142
  * Describes the message integrations.v1.IntegrationSummary.
129
143
  * Use `create(IntegrationSummarySchema)` to create a new message.
130
144
  */
131
145
  export const IntegrationSummarySchema = /*@__PURE__*/
132
- messageDesc(file_integrations_v1_integrations, 16);
146
+ messageDesc(file_integrations_v1_integrations, 18);
133
147
 
134
148
  /**
135
149
  * Describes the message integrations.v1.ListIntegrationsRequest.
136
150
  * Use `create(ListIntegrationsRequestSchema)` to create a new message.
137
151
  */
138
152
  export const ListIntegrationsRequestSchema = /*@__PURE__*/
139
- messageDesc(file_integrations_v1_integrations, 17);
153
+ messageDesc(file_integrations_v1_integrations, 19);
140
154
 
141
155
  /**
142
156
  * Describes the message integrations.v1.ListIntegrationsResponse.
143
157
  * Use `create(ListIntegrationsResponseSchema)` to create a new message.
144
158
  */
145
159
  export const ListIntegrationsResponseSchema = /*@__PURE__*/
146
- messageDesc(file_integrations_v1_integrations, 18);
160
+ messageDesc(file_integrations_v1_integrations, 20);
147
161
 
148
162
  /**
149
163
  * Describes the message integrations.v1.GetIntegrationRequest.
150
164
  * Use `create(GetIntegrationRequestSchema)` to create a new message.
151
165
  */
152
166
  export const GetIntegrationRequestSchema = /*@__PURE__*/
153
- messageDesc(file_integrations_v1_integrations, 19);
167
+ messageDesc(file_integrations_v1_integrations, 21);
154
168
 
155
169
  /**
156
170
  * Describes the message integrations.v1.GetIntegrationResponse.
157
171
  * Use `create(GetIntegrationResponseSchema)` to create a new message.
158
172
  */
159
173
  export const GetIntegrationResponseSchema = /*@__PURE__*/
160
- messageDesc(file_integrations_v1_integrations, 20);
174
+ messageDesc(file_integrations_v1_integrations, 22);
161
175
 
162
176
  /**
163
177
  * Describes the message integrations.v1.UpsertIntegrationRequest.
164
178
  * Use `create(UpsertIntegrationRequestSchema)` to create a new message.
165
179
  */
166
180
  export const UpsertIntegrationRequestSchema = /*@__PURE__*/
167
- messageDesc(file_integrations_v1_integrations, 21);
181
+ messageDesc(file_integrations_v1_integrations, 23);
168
182
 
169
183
  /**
170
184
  * Describes the message integrations.v1.UpsertIntegrationResponse.
171
185
  * Use `create(UpsertIntegrationResponseSchema)` to create a new message.
172
186
  */
173
187
  export const UpsertIntegrationResponseSchema = /*@__PURE__*/
174
- messageDesc(file_integrations_v1_integrations, 22);
188
+ messageDesc(file_integrations_v1_integrations, 24);
175
189
 
176
190
  /**
177
191
  * Describes the message integrations.v1.DeleteIntegrationRequest.
178
192
  * Use `create(DeleteIntegrationRequestSchema)` to create a new message.
179
193
  */
180
194
  export const DeleteIntegrationRequestSchema = /*@__PURE__*/
181
- messageDesc(file_integrations_v1_integrations, 23);
195
+ messageDesc(file_integrations_v1_integrations, 25);
182
196
 
183
197
  /**
184
198
  * Describes the message integrations.v1.DeleteIntegrationResponse.
185
199
  * Use `create(DeleteIntegrationResponseSchema)` to create a new message.
186
200
  */
187
201
  export const DeleteIntegrationResponseSchema = /*@__PURE__*/
188
- messageDesc(file_integrations_v1_integrations, 24);
202
+ messageDesc(file_integrations_v1_integrations, 26);
189
203
 
190
204
  /**
191
205
  * Describes the message integrations.v1.ListExtensionsRequest.
192
206
  * Use `create(ListExtensionsRequestSchema)` to create a new message.
193
207
  */
194
208
  export const ListExtensionsRequestSchema = /*@__PURE__*/
195
- messageDesc(file_integrations_v1_integrations, 25);
209
+ messageDesc(file_integrations_v1_integrations, 27);
196
210
 
197
211
  /**
198
212
  * Describes the message integrations.v1.ListExtensionsResponse.
199
213
  * Use `create(ListExtensionsResponseSchema)` to create a new message.
200
214
  */
201
215
  export const ListExtensionsResponseSchema = /*@__PURE__*/
202
- messageDesc(file_integrations_v1_integrations, 26);
216
+ messageDesc(file_integrations_v1_integrations, 28);
203
217
 
204
218
  /**
205
219
  * Describes the message integrations.v1.GetExtensionRequest.
206
220
  * Use `create(GetExtensionRequestSchema)` to create a new message.
207
221
  */
208
222
  export const GetExtensionRequestSchema = /*@__PURE__*/
209
- messageDesc(file_integrations_v1_integrations, 27);
223
+ messageDesc(file_integrations_v1_integrations, 29);
210
224
 
211
225
  /**
212
226
  * Describes the message integrations.v1.GetExtensionResponse.
213
227
  * Use `create(GetExtensionResponseSchema)` to create a new message.
214
228
  */
215
229
  export const GetExtensionResponseSchema = /*@__PURE__*/
216
- messageDesc(file_integrations_v1_integrations, 28);
230
+ messageDesc(file_integrations_v1_integrations, 30);
217
231
 
218
232
  /**
219
233
  * Describes the message integrations.v1.UpsertExtensionRequest.
220
234
  * Use `create(UpsertExtensionRequestSchema)` to create a new message.
221
235
  */
222
236
  export const UpsertExtensionRequestSchema = /*@__PURE__*/
223
- messageDesc(file_integrations_v1_integrations, 29);
237
+ messageDesc(file_integrations_v1_integrations, 31);
224
238
 
225
239
  /**
226
240
  * Describes the message integrations.v1.UpsertExtensionResponse.
227
241
  * Use `create(UpsertExtensionResponseSchema)` to create a new message.
228
242
  */
229
243
  export const UpsertExtensionResponseSchema = /*@__PURE__*/
230
- messageDesc(file_integrations_v1_integrations, 30);
244
+ messageDesc(file_integrations_v1_integrations, 32);
231
245
 
232
246
  /**
233
247
  * Describes the message integrations.v1.DeleteExtensionRequest.
234
248
  * Use `create(DeleteExtensionRequestSchema)` to create a new message.
235
249
  */
236
250
  export const DeleteExtensionRequestSchema = /*@__PURE__*/
237
- messageDesc(file_integrations_v1_integrations, 31);
251
+ messageDesc(file_integrations_v1_integrations, 33);
238
252
 
239
253
  /**
240
254
  * Describes the message integrations.v1.DeleteExtensionResponse.
241
255
  * Use `create(DeleteExtensionResponseSchema)` to create a new message.
242
256
  */
243
257
  export const DeleteExtensionResponseSchema = /*@__PURE__*/
244
- messageDesc(file_integrations_v1_integrations, 32);
258
+ messageDesc(file_integrations_v1_integrations, 34);
245
259
 
246
260
  /**
247
261
  * Describes the message integrations.v1.GetIntegrationStatusRequest.
248
262
  * Use `create(GetIntegrationStatusRequestSchema)` to create a new message.
249
263
  */
250
264
  export const GetIntegrationStatusRequestSchema = /*@__PURE__*/
251
- messageDesc(file_integrations_v1_integrations, 33);
265
+ messageDesc(file_integrations_v1_integrations, 35);
252
266
 
253
267
  /**
254
268
  * Describes the message integrations.v1.GetIntegrationStatusResponse.
255
269
  * Use `create(GetIntegrationStatusResponseSchema)` to create a new message.
256
270
  */
257
271
  export const GetIntegrationStatusResponseSchema = /*@__PURE__*/
258
- messageDesc(file_integrations_v1_integrations, 34);
272
+ messageDesc(file_integrations_v1_integrations, 36);
273
+
274
+ /**
275
+ * Describes the message integrations.v1.UpsertIntegrationStatusRequest.
276
+ * Use `create(UpsertIntegrationStatusRequestSchema)` to create a new message.
277
+ */
278
+ export const UpsertIntegrationStatusRequestSchema = /*@__PURE__*/
279
+ messageDesc(file_integrations_v1_integrations, 37);
280
+
281
+ /**
282
+ * Describes the message integrations.v1.UpsertIntegrationStatusResponse.
283
+ * Use `create(UpsertIntegrationStatusResponseSchema)` to create a new message.
284
+ */
285
+ export const UpsertIntegrationStatusResponseSchema = /*@__PURE__*/
286
+ messageDesc(file_integrations_v1_integrations, 38);
259
287
 
260
288
  /**
261
289
  * Describes the message integrations.v1.TriggerSyncRequest.
262
290
  * Use `create(TriggerSyncRequestSchema)` to create a new message.
263
291
  */
264
292
  export const TriggerSyncRequestSchema = /*@__PURE__*/
265
- messageDesc(file_integrations_v1_integrations, 35);
293
+ messageDesc(file_integrations_v1_integrations, 39);
266
294
 
267
295
  /**
268
296
  * Describes the message integrations.v1.TriggerSyncResponse.
269
297
  * Use `create(TriggerSyncResponseSchema)` to create a new message.
270
298
  */
271
299
  export const TriggerSyncResponseSchema = /*@__PURE__*/
272
- messageDesc(file_integrations_v1_integrations, 36);
300
+ messageDesc(file_integrations_v1_integrations, 40);
273
301
 
274
302
  /**
275
303
  * Describes the message integrations.v1.ValidationIssue.
276
304
  * Use `create(ValidationIssueSchema)` to create a new message.
277
305
  */
278
306
  export const ValidationIssueSchema = /*@__PURE__*/
279
- messageDesc(file_integrations_v1_integrations, 37);
307
+ messageDesc(file_integrations_v1_integrations, 41);
280
308
 
281
309
  /**
282
310
  * Describes the message integrations.v1.ValidateConfigRequest.
283
311
  * Use `create(ValidateConfigRequestSchema)` to create a new message.
284
312
  */
285
313
  export const ValidateConfigRequestSchema = /*@__PURE__*/
286
- messageDesc(file_integrations_v1_integrations, 38);
314
+ messageDesc(file_integrations_v1_integrations, 42);
287
315
 
288
316
  /**
289
317
  * Describes the message integrations.v1.ValidateConfigResponse.
290
318
  * Use `create(ValidateConfigResponseSchema)` to create a new message.
291
319
  */
292
320
  export const ValidateConfigResponseSchema = /*@__PURE__*/
293
- messageDesc(file_integrations_v1_integrations, 39);
321
+ messageDesc(file_integrations_v1_integrations, 43);
294
322
 
295
323
  /**
296
324
  * Describes the message integrations.v1.ConfigHistoryEntry.
297
325
  * Use `create(ConfigHistoryEntrySchema)` to create a new message.
298
326
  */
299
327
  export const ConfigHistoryEntrySchema = /*@__PURE__*/
300
- messageDesc(file_integrations_v1_integrations, 40);
328
+ messageDesc(file_integrations_v1_integrations, 44);
301
329
 
302
330
  /**
303
331
  * Describes the message integrations.v1.ListConfigHistoryRequest.
304
332
  * Use `create(ListConfigHistoryRequestSchema)` to create a new message.
305
333
  */
306
334
  export const ListConfigHistoryRequestSchema = /*@__PURE__*/
307
- messageDesc(file_integrations_v1_integrations, 41);
335
+ messageDesc(file_integrations_v1_integrations, 45);
308
336
 
309
337
  /**
310
338
  * Describes the message integrations.v1.ListConfigHistoryResponse.
311
339
  * Use `create(ListConfigHistoryResponseSchema)` to create a new message.
312
340
  */
313
341
  export const ListConfigHistoryResponseSchema = /*@__PURE__*/
314
- messageDesc(file_integrations_v1_integrations, 42);
342
+ messageDesc(file_integrations_v1_integrations, 46);
315
343
 
316
344
  /**
317
345
  * Describes the message integrations.v1.GetConfigHistoryEntryRequest.
318
346
  * Use `create(GetConfigHistoryEntryRequestSchema)` to create a new message.
319
347
  */
320
348
  export const GetConfigHistoryEntryRequestSchema = /*@__PURE__*/
321
- messageDesc(file_integrations_v1_integrations, 43);
349
+ messageDesc(file_integrations_v1_integrations, 47);
322
350
 
323
351
  /**
324
352
  * Describes the message integrations.v1.GetConfigHistoryEntryResponse.
325
353
  * Use `create(GetConfigHistoryEntryResponseSchema)` to create a new message.
326
354
  */
327
355
  export const GetConfigHistoryEntryResponseSchema = /*@__PURE__*/
328
- messageDesc(file_integrations_v1_integrations, 44);
356
+ messageDesc(file_integrations_v1_integrations, 48);
329
357
 
330
358
  /**
331
359
  * Describes the enum integrations.v1.CredentialStrategy.