@alphauspkgs/blue-sdk-ts 1.0.33 → 1.0.34

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.
@@ -10,7 +10,7 @@ import type { RecommendationData } from "../../api/cover/recommendation/recommen
10
10
  import { file_api_cover_recommendation_recommendation } from "../../api/cover/recommendation/recommendation_pb";
11
11
  import type { Category, Result } from "../../api/cover/attribute_pb";
12
12
  import { file_api_cover_attribute } from "../../api/cover/attribute_pb";
13
- import type { MemberCostGroup, UserData } from "../../api/cover/user_pb";
13
+ import type { MemberCostGroup, User, UserData } from "../../api/cover/user_pb";
14
14
  import { file_api_cover_user } from "../../api/cover/user_pb";
15
15
  import type { Favorites, LayoutRequests, SideMenuState, ViewData, ViewLayout, ViewList, WidgetData } from "../../api/cover/view_pb";
16
16
  import { file_api_cover_view } from "../../api/cover/view_pb";
@@ -39,6 +39,8 @@ import { file_protos_operation } from "../../protos/operation_pb";
39
39
  import { file_google_api_annotations } from "../../google/api/annotations_pb";
40
40
  import type { EmptySchema } from "@bufbuild/protobuf/wkt";
41
41
  import { file_google_protobuf_empty, file_google_protobuf_struct } from "@bufbuild/protobuf/wkt";
42
+ import type { Role } from "../../api/cover/role_pb";
43
+ import { file_api_cover_role } from "../../api/cover/role_pb";
42
44
  import { file_protoc_gen_openapiv2_options_annotations } from "../../protoc-gen-openapiv2/options/annotations_pb";
43
45
  import type { JsonObject, Message } from "@bufbuild/protobuf";
44
46
 
@@ -46,7 +48,71 @@ import type { JsonObject, Message } from "@bufbuild/protobuf";
46
48
  * Describes the file cover/v1/cover.proto.
47
49
  */
48
50
  export const file_cover_v1_cover: GenFile = /*@__PURE__*/
49
- fileDesc("ChRjb3Zlci92MS9jb3Zlci5wcm90bxIQYmx1ZWFwaS5jb3Zlci52MSIhChNSZWludml0ZVVzZXJSZXF1ZXN0EgoKAmlkGAEgASgJIhYKFFJlaW52aXRlVXNlclJlc3BvbnNlIhIKEExpc3RVc2Vyc1JlcXVlc3Qi0gEKEUxpc3RVc2Vyc1Jlc3BvbnNlEj4KBXVzZXJzGAEgAygLMi8uYmx1ZWFwaS5jb3Zlci52MS5MaXN0VXNlcnNSZXNwb25zZS5Vc2VyU3VtbWFyeRp9CgtVc2VyU3VtbWFyeRIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIMCgRuYW1lGAMgASgJEg0KBXJvbGVzGAQgAygJEhEKCWFjdGl2YXRlZBgFIAEoCBIOCgZhdmF0YXIYBiABKAkSEwoLY29sb3JfdGhlbWUYByABKAkiUgoVVXBkYXRlVXNlclJvbGVSZXF1ZXN0Eg8KB3VzZXJfaWQYASABKAkSEAoIcm9sZV9pZHMYAiADKAkSFgoOY29zdF9ncm91cF9pZHMYAyADKAkiGAoWVXBkYXRlVXNlclJvbGVSZXNwb25zZSIfChFEZWxldGVVc2VyUmVxdWVzdBIKCgJpZBgBIAEoCSIUChJEZWxldGVVc2VyUmVzcG9uc2UiTQoSSW52aXRlVXNlcnNSZXF1ZXN0Eg4KBmVtYWlscxgBIAMoCRIPCgdyb2xlX2lkGAIgASgJEhYKDmNvc3RfZ3JvdXBfaWRzGAMgAygJIhUKE0ludml0ZVVzZXJzUmVzcG9uc2Ui7QEKHkV4ZWN1dGVSZWNvbW1lbmRhdGlvblYzUmVxdWVzdBILCgNpZHMYASADKAkSUQoLZXhlY3V0ZVR5cGUYAiABKA4yPC5ibHVlYXBpLmNvdmVyLnYxLkV4ZWN1dGVSZWNvbW1lbmRhdGlvblYzUmVxdWVzdC5FeGVjdXRlVHlwZSJrCgtFeGVjdXRlVHlwZRILCgdERUZBVUxUEAASFAoQTUFSS19BU19FWEVDVVRFRBABEhEKDVVORE9fRVhFQ1VURUQQAhITCg9TVUJNSVRfVEVNUExBVEUQAxIRCg1SRVRSWV9FWEVDVVRFEAQiSgofRXhlY3V0ZVJlY29tbWVuZGF0aW9uVjNSZXNwb25zZRInCgZyZXN1bHQYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IsMBChxMaXN0UmVjb21tZW5kYXRpb25zVjNSZXF1ZXN0EhMKC2Nvc3Rncm91cElkGAEgASgJEhAKCHN0YXR1c2VzGAIgAygJEkwKB2ZpbHRlcnMYAyADKAsyOy5ibHVlYXBpLmNvdmVyLnYxLkxpc3RSZWNvbW1lbmRhdGlvbnNWM1JlcXVlc3QuRmlsdGVyc0VudHJ5Gi4KDEZpbHRlcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIvUDChVSZWNvbW1lbmRhdGlvblN1bW1hcnkSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIOCgZ0YXJnZXQYAyABKAkSEgoKdGFyZ2V0TmFtZRgSIAEoCRIQCghjYXRlZ29yeRgEIAEoCRIMCgR0eXBlGAUgASgJEg4KBnZlbmRvchgNIAEoCRIOCgZzb3VyY2UYEyABKAkSDAoEY29kZRgOIAEoCRIUCgdzZXJ2aWNlGA8gASgJSACIAQESEwoGcmVnaW9uGBAgASgJSAGIAQESFwoKcmVzb3VyY2VJZBgRIAEoCUgCiAEBEh8KF2VzdGltYXRlZE1vbnRobHlTYXZpbmdzGAYgASgBEiIKGmVzdGltYXRlZE1vbnRobHlCZWZvcmVDb3N0GAcgASgBEiEKGWVzdGltYXRlZE1vbnRobHlBZnRlckNvc3QYCCABKAESEQoEcmlzaxgJIAEoCUgDiAEBEhMKBmVmZm9ydBgKIAEoCUgEiAEBEg4KBnN0YXR1cxgLIAEoCRIyChFhZGRpdGlvbmFsRGV0YWlscxgMIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RCCgoIX3NlcnZpY2VCCQoHX3JlZ2lvbkINCgtfcmVzb3VyY2VJZEIHCgVfcmlza0IJCgdfZWZmb3J0IikKGkdldFJlY29tbWVuZGF0aW9uVjNSZXF1ZXN0EgsKA2lkcxgBIAMoCSKSBQobR2V0UmVjb21tZW5kYXRpb25WM1Jlc3BvbnNlElsKD3JlY29tbWVuZGF0aW9ucxgBIAMoCzJCLmJsdWVhcGkuY292ZXIudjEuR2V0UmVjb21tZW5kYXRpb25WM1Jlc3BvbnNlLlJlY29tbWVuZGF0aW9uRGV0YWlsGpUEChRSZWNvbW1lbmRhdGlvbkRldGFpbBIKCgJpZBgBIAEoCRIMCgRuYW1lGAkgASgJEg4KBnZlbmRvchgCIAEoCRIOCgZzb3VyY2UYAyABKAkSDAoEY29kZRgEIAEoCRIUCgdzZXJ2aWNlGAUgASgJSACIAQESDgoGdGFyZ2V0GAcgASgJEhIKCnRhcmdldE5hbWUYCCABKAkSFAoMZGF0ZURldGVjdGVkGAYgASgJEhMKBnJlZ2lvbhgKIAEoCUgBiAEBEiIKGmVzdGltYXRlZE1vbnRobHlCZWZvcmVDb3N0GAsgASgBEiEKGWVzdGltYXRlZE1vbnRobHlBZnRlckNvc3QYDCABKAESHwoXZXN0aW1hdGVkTW9udGhseVNhdmluZ3MYDSABKAESFwoKcmVzb3VyY2VJZBgOIAEoCUgCiAEBEhAKCGNhdGVnb3J5GA8gASgJEgwKBHR5cGUYECABKAkSEwoLbGFzdFVwZGF0ZWQYESABKAkSDgoGc3RhdHVzGBIgASgJEhEKBHJpc2sYEyABKAlIA4gBARITCgZlZmZvcnQYFCABKAlIBIgBARIoCgdkZXRhaWxzGBUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEIKCghfc2VydmljZUIJCgdfcmVnaW9uQg0KC19yZXNvdXJjZUlkQgcKBV9yaXNrQgkKB19lZmZvcnQi6gEKG0dldENvc3RGb3JlY2FzdHNEYXRhUmVxdWVzdBITCgtjb3N0R3JvdXBJZBgBIAEoCRIRCglzdGFydFRpbWUYAiABKAkSDwoHZW5kVGltZRgDIAEoCRJOCgtncmFudWxhcml0eRgEIAEoDjI5LmJsdWVhcGkuY292ZXIudjEuR2V0Q29zdEZvcmVjYXN0c0RhdGFSZXF1ZXN0LkdyYW51bGFyaXR5IkIKC0dyYW51bGFyaXR5EhsKF0dSQU5VTEFSSVRZX1VOU1BFQ0lGSUVEEAASCQoFREFJTFkQARILCgdNT05USExZEAIiagocR2V0Q29zdEZvcmVjYXN0c0RhdGFSZXNwb25zZRIMCgRkYXRlGAEgASgJEhQKDGZvcmVjYXN0Q29zdBgCIAEoARISCgp1cHBlckJvdW5kGAMgASgBEhIKCmxvd2VyQm91bmQYBCABKAEiFgoUTGlzdEZvcmVjYXN0c1JlcXVlc3QiXAoVTGlzdEZvcmVjYXN0c1Jlc3BvbnNlEkMKE2Nvc3RGb3JlY2FzdERldGFpbHMYASADKAsyJi5ibHVlYXBpLmFwaS5jb3Zlci5Db3N0Rm9yZWNhc3REZXRhaWxzIvMBChlDcmVhdGVDb3N0Rm9yZWNhc3RSZXF1ZXN0EhQKDGZvcmVjYXN0TmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRIvCgljb3N0R3JvdXAYAyABKAsyHC5ibHVlYXBpLmFwaS5jb3Zlci5Db3N0R3JvdXASGwoTcGFzdEFjdHVhbENvc3RSYW5nZRgEIAEoAxIZChFsb29rRm9yd2FyZFBlcmlvZBgFIAEoAxJCChNleHRlcm5hbEFkanVzdG1lbnRzGAYgAygLMiUuYmx1ZWFwaS5hcGkuY292ZXIuRXh0ZXJuYWxBZGp1c3RtZW50IoACChpDcmVhdGVDb3N0Rm9yZWNhc3RSZXNwb25zZRIKCgJpZBgBIAEoCRIUCgxmb3JlY2FzdE5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSLwoJY29zdEdyb3VwGAQgASgLMhwuYmx1ZWFwaS5hcGkuY292ZXIuQ29zdEdyb3VwEhsKE3Bhc3RBY3R1YWxDb3N0UmFuZ2UYBSABKAMSGQoRbG9va0ZvcndhcmRQZXJpb2QYBiABKAMSQgoTZXh0ZXJuYWxBZGp1c3RtZW50cxgHIAMoCzIlLmJsdWVhcGkuYXBpLmNvdmVyLkV4dGVybmFsQWRqdXN0bWVudCIkChZHZXRDb3N0Rm9yZWNhc3RSZXF1ZXN0EgoKAmlkGAEgASgJIr8CChdHZXRDb3N0Rm9yZWNhc3RSZXNwb25zZRIKCgJpZBgBIAEoCRIUCgxmb3JlY2FzdE5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSLwoJY29zdEdyb3VwGAQgASgLMhwuYmx1ZWFwaS5hcGkuY292ZXIuQ29zdEdyb3VwEhsKE3Bhc3RBY3R1YWxDb3N0UmFuZ2UYBSABKAMSGQoRbG9va0ZvcndhcmRQZXJpb2QYBiABKAMSQgoTZXh0ZXJuYWxBZGp1c3RtZW50cxgHIAMoCzIlLmJsdWVhcGkuYXBpLmNvdmVyLkV4dGVybmFsQWRqdXN0bWVudBIRCgljcmVhdGVkQnkYCCABKAkSFAoMY3JlYXRpb25EYXRlGAkgASgJEhcKD2xhc3RVcGRhdGVkRGF0ZRgKIAEoCSL/AQoZVXBkYXRlQ29zdEZvcmVjYXN0UmVxdWVzdBIKCgJpZBgBIAEoCRIUCgxmb3JlY2FzdE5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSLwoJY29zdEdyb3VwGAQgASgLMhwuYmx1ZWFwaS5hcGkuY292ZXIuQ29zdEdyb3VwEhsKE3Bhc3RBY3R1YWxDb3N0UmFuZ2UYBSABKAMSGQoRbG9va0ZvcndhcmRQZXJpb2QYBiABKAMSQgoTZXh0ZXJuYWxBZGp1c3RtZW50cxgHIAMoCzIlLmJsdWVhcGkuYXBpLmNvdmVyLkV4dGVybmFsQWRqdXN0bWVudCLCAgoaVXBkYXRlQ29zdEZvcmVjYXN0UmVzcG9uc2USCgoCaWQYASABKAkSFAoMZm9yZWNhc3ROYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEi8KCWNvc3RHcm91cBgEIAEoCzIcLmJsdWVhcGkuYXBpLmNvdmVyLkNvc3RHcm91cBIbChNwYXN0QWN0dWFsQ29zdFJhbmdlGAUgASgDEhkKEWxvb2tGb3J3YXJkUGVyaW9kGAYgASgDEkIKE2V4dGVybmFsQWRqdXN0bWVudHMYByADKAsyJS5ibHVlYXBpLmFwaS5jb3Zlci5FeHRlcm5hbEFkanVzdG1lbnQSEQoJY3JlYXRlZEJ5GAggASgJEhQKDGNyZWF0aW9uRGF0ZRgJIAEoCRIXCg9sYXN0VXBkYXRlZERhdGUYCiABKAkiJwoZRGVsZXRlQ29zdEZvcmVjYXN0UmVxdWVzdBIKCgJpZBgBIAEoCSIoChpEZWxldGVDb3N0Rm9yZWNhc3RSZXNwb25zZRIKCgJpZBgBIAEoCSJvChZHZXRDb3N0VXNhZ2VWMlJlc3BvbnNlEg0KBXZhbHVlGAEgASgBEgwKBGRhdGUYAiABKAkSDgoGdmVuZG9yGAMgASgJEigKB2RldGFpbHMYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Ir8EChVHZXRDb3N0VXNhZ2VWMlJlcXVlc3QSEwoLY29zdEdyb3VwSWQYASABKAkSEQoJc3RhcnRUaW1lGAIgASgJEg8KB2VuZFRpbWUYAyABKAkSSAoLZ3JhbnVsYXJpdHkYBCABKA4yMy5ibHVlYXBpLmNvdmVyLnYxLkdldENvc3RVc2FnZVYyUmVxdWVzdC5HcmFudWxhcml0eRIQCghncm91cEJ5cxgFIAMoCRJCCghjYXRlZ29yeRgGIAEoDjIwLmJsdWVhcGkuY292ZXIudjEuR2V0Q29zdFVzYWdlVjJSZXF1ZXN0LkNhdGVnb3J5EhAKCGN1cnJlbmN5GAcgASgJEjoKCmF3c09wdGlvbnMYCCABKAsyJi5ibHVlYXBpLmFwaS5jb3Zlci5Db3N0R3JvdXBBd3NPcHRpb25zEkQKD2F6dXJlY3NwT3B0aW9ucxgJIAEoCzIrLmJsdWVhcGkuYXBpLmNvdmVyLkNvc3RHcm91cEF6dXJlQ3NwT3B0aW9ucxI6CgpnY3BPcHRpb25zGAogASgLMiYuYmx1ZWFwaS5hcGkuY292ZXIuQ29zdEdyb3VwR2NwT3B0aW9ucyJCCgtHcmFudWxhcml0eRIbChdHUkFOVUxBUklUWV9VTlNQRUNJRklFRBAAEgkKBURBSUxZEAESCwoHTU9OVEhMWRACIjkKCENhdGVnb3J5EhgKFENhdGVnb3J5X1VOU1BFQ0lGSUVEEAASCAoEQ09TVBABEgkKBVVTQUdFEAIiGQoXUG9wdWxhdGVEZW1vRGF0YVJlcXVlc3QiGgoYUG9wdWxhdGVEZW1vRGF0YVJlc3BvbnNlIhYKFFJlc2V0RGVtb0RhdGFSZXF1ZXN0IhcKFVJlc2V0RGVtb0RhdGFSZXNwb25zZSLfBgoZQ29udGFpbmVyQ29zdFVzYWdlUmVxdWVzdBITCgtjb3N0R3JvdXBJZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSSgoKbWV0cmljVHlwZRgDIAEoDjI2LmJsdWVhcGkuY292ZXIudjEuQ29udGFpbmVyQ29zdFVzYWdlUmVxdWVzdC5NZXRyaWNUeXBlEhEKCXN0YXJ0VGltZRgEIAEoCRIPCgdlbmRUaW1lGAUgASgJElAKC2dyYW51bGFyaXR5GAYgASgOMjsuYmx1ZWFwaS5jb3Zlci52MS5Db250YWluZXJDb3N0VXNhZ2VSZXF1ZXN0LlRpbWVHcmFudWxhcml0eRIQCghncm91cEJ5cxgHIAMoCRJLCgdmaWx0ZXJzGAggAygLMjouYmx1ZWFwaS5jb3Zlci52MS5Db250YWluZXJDb3N0VXNhZ2VSZXF1ZXN0LkZpbHRlckNyaXRlcmlhEkwKC3NlcnZpY2VUeXBlGAkgASgOMjcuYmx1ZWFwaS5jb3Zlci52MS5Db250YWluZXJDb3N0VXNhZ2VSZXF1ZXN0LlNlcnZpY2VUeXBlGs8BCg5GaWx0ZXJDcml0ZXJpYRILCgNrZXkYASABKAkSWwoIb3BlcmF0b3IYAiABKA4ySS5ibHVlYXBpLmNvdmVyLnYxLkNvbnRhaW5lckNvc3RVc2FnZVJlcXVlc3QuRmlsdGVyQ3JpdGVyaWEuRmlsdGVyT3BlcmF0b3ISDQoFdmFsdWUYAyABKAkiRAoORmlsdGVyT3BlcmF0b3ISGAoUT1BFUkFUT1JfVU5TUEVDSUZJRUQQABIJCgVFUVVBTBABEg0KCU5PVF9FUVVBTBACIkYKD1RpbWVHcmFudWxhcml0eRIbChdHUkFOVUxBUklUWV9VTlNQRUNJRklFRBAAEgkKBURBSUxZEAESCwoHTU9OVEhMWRACIloKCk1ldHJpY1R5cGUSFgoSTUVUUklDX1VOU1BFQ0lGSUVEEAASCAoEQ09TVBABEgkKBVVTQUdFEAISDgoKRUZGSUNJRU5DWRADEg8KC1VOVVNFRF9DT1NUEAQiOAoLU2VydmljZVR5cGUSFwoTU0VSVklDRV9VTlNQRUNJRklFRBAAEgcKA0VDUxABEgcKA0VLUxACItcKChpDb250YWluZXJDb3N0VXNhZ2VSZXNwb25zZRJLCgdyZXN1bHRzGAEgAygLMjouYmx1ZWFwaS5jb3Zlci52MS5Db250YWluZXJDb3N0VXNhZ2VSZXNwb25zZS5Hcm91cGVkUmVzdWx0ElMKCmhpZ2hsaWdodHMYAiABKAsyPy5ibHVlYXBpLmNvdmVyLnYxLkNvbnRhaW5lckNvc3RVc2FnZVJlc3BvbnNlLlJlc291cmNlSGlnaGxpZ2h0cxIRCgl0b3RhbENvc3QYAyABKAESFQoNYXZnRWZmaWNpZW5jeRgEIAEoARpECgpDb3N0TWV0cmljEg4KBmFtb3VudBgBIAEoARIQCghjdXJyZW5jeRgCIAEoCRIUCgx1bnVzZWRBbW91bnQYAyABKAEakAEKC1VzYWdlTWV0cmljEgwKBHVuaXQYASABKAkSFgoOcmVzZXJ2ZWRBbW91bnQYAiABKAESFAoMYWN0dWFsQW1vdW50GAMgASgBEhIKCmVmZmljaWVuY3kYBCABKAESFgoOY3B1VXRpbGl6YXRpb24YBSABKAESGQoRbWVtb3J5VXRpbGl6YXRpb24YBiABKAEawQEKD01ldHJpY0RhdGFQb2ludBIMCgRkYXRlGAEgASgJEkcKBGNvc3QYAiABKAsyNy5ibHVlYXBpLmNvdmVyLnYxLkNvbnRhaW5lckNvc3RVc2FnZVJlc3BvbnNlLkNvc3RNZXRyaWNIABJJCgV1c2FnZRgDIAEoCzI4LmJsdWVhcGkuY292ZXIudjEuQ29udGFpbmVyQ29zdFVzYWdlUmVzcG9uc2UuVXNhZ2VNZXRyaWNIAEIMCgptZXRyaWNEYXRhGkwKEVJlc291cmNlSGlnaGxpZ2h0EhIKCnJlc291cmNlSWQYASABKAkSFAoMcmVzb3VyY2VOYW1lGAIgASgJEg0KBXZhbHVlGAMgASgBGoQDChJSZXNvdXJjZUhpZ2hsaWdodHMSWgoSaGlnaGVzdENsdXN0ZXJDb3N0GAEgASgLMj4uYmx1ZWFwaS5jb3Zlci52MS5Db250YWluZXJDb3N0VXNhZ2VSZXNwb25zZS5SZXNvdXJjZUhpZ2hsaWdodBJZChFoaWdoZXN0VW51c2VkQ29zdBgCIAEoCzI+LmJsdWVhcGkuY292ZXIudjEuQ29udGFpbmVyQ29zdFVzYWdlUmVzcG9uc2UuUmVzb3VyY2VIaWdobGlnaHQSWwoTaGlnaGVzdFdvcmtsb2FkQ29zdBgDIAEoCzI+LmJsdWVhcGkuY292ZXIudjEuQ29udGFpbmVyQ29zdFVzYWdlUmVzcG9uc2UuUmVzb3VyY2VIaWdobGlnaHQSWgoSaGlnaGVzdENvbXB1dGVDb3N0GAQgASgLMj4uYmx1ZWFwaS5jb3Zlci52MS5Db250YWluZXJDb3N0VXNhZ2VSZXNwb25zZS5SZXNvdXJjZUhpZ2hsaWdodBr6AQoNR3JvdXBlZFJlc3VsdBJeCgphdHRyaWJ1dGVzGAEgAygLMkouYmx1ZWFwaS5jb3Zlci52MS5Db250YWluZXJDb3N0VXNhZ2VSZXNwb25zZS5Hcm91cGVkUmVzdWx0LkF0dHJpYnV0ZXNFbnRyeRJWChBtZXRyaWNEYXRhUG9pbnRzGAIgAygLMjwuYmx1ZWFwaS5jb3Zlci52MS5Db250YWluZXJDb3N0VXNhZ2VSZXNwb25zZS5NZXRyaWNEYXRhUG9pbnQaMQoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEijwQKGEdldEFJQ29zdEFuZFVzYWdlUmVxdWVzdBITCgtjb3N0R3JvdXBJZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSEQoJc3RhcnRUaW1lGAMgASgJEg8KB2VuZFRpbWUYBCABKAkSSwoLZ3JhbnVsYXJpdHkYBSABKA4yNi5ibHVlYXBpLmNvdmVyLnYxLkdldEFJQ29zdEFuZFVzYWdlUmVxdWVzdC5HcmFudWxhcml0eRIQCghncm91cEJ5cxgGIAMoCRJCCgdmaWx0ZXJzGAcgAygLMjEuYmx1ZWFwaS5jb3Zlci52MS5HZXRBSUNvc3RBbmRVc2FnZVJlcXVlc3QuRmlsdGVyGsIBCgZGaWx0ZXISCwoDa2V5GAEgASgJEkwKCG9wZXJhdG9yGAIgASgOMjouYmx1ZWFwaS5jb3Zlci52MS5HZXRBSUNvc3RBbmRVc2FnZVJlcXVlc3QuRmlsdGVyLk9wZXJhdG9yEg4KBnZhbHVlcxgDIAMoCRINCgV2YWx1ZRgEIAEoCSI+CghPcGVyYXRvchIYChRPUEVSQVRPUl9VTlNQRUNJRklFRBAAEgkKBUVRVUFMEAESDQoJTk9UX0VRVUFMEAIiQgoLR3JhbnVsYXJpdHkSGwoXR1JBTlVMQVJJVFlfVU5TUEVDSUZJRUQQABIJCgVEQUlMWRABEgsKB01PTlRITFkQAiKnBAoZR2V0QUlDb3N0QW5kVXNhZ2VSZXNwb25zZRJDCgdyZXN1bHRzGAEgAygLMjIuYmx1ZWFwaS5jb3Zlci52MS5HZXRBSUNvc3RBbmRVc2FnZVJlc3BvbnNlLlJlc3VsdBooCgRDb3N0Eg4KBmFtb3VudBgBIAEoARIQCghjdXJyZW5jeRgCIAEoCRolCgVVc2FnZRIMCgR1bml0GAEgASgJEg4KBmFtb3VudBgCIAEoARqYAQoGTWV0cmljEgwKBGRhdGUYASABKAkSPgoEY29zdBgCIAEoCzIwLmJsdWVhcGkuY292ZXIudjEuR2V0QUlDb3N0QW5kVXNhZ2VSZXNwb25zZS5Db3N0EkAKBXVzYWdlGAMgASgLMjEuYmx1ZWFwaS5jb3Zlci52MS5HZXRBSUNvc3RBbmRVc2FnZVJlc3BvbnNlLlVzYWdlGtgBCgZSZXN1bHQSVgoKYXR0cmlidXRlcxgBIAMoCzJCLmJsdWVhcGkuY292ZXIudjEuR2V0QUlDb3N0QW5kVXNhZ2VSZXNwb25zZS5SZXN1bHQuQXR0cmlidXRlc0VudHJ5EkMKB21ldHJpY3MYAiADKAsyMi5ibHVlYXBpLmNvdmVyLnYxLkdldEFJQ29zdEFuZFVzYWdlUmVzcG9uc2UuTWV0cmljGjEKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIhsKGUdldEV4ZWN1dGlvblN0YXR1c1JlcXVlc3QiVwoaR2V0RXhlY3V0aW9uU3RhdHVzUmVzcG9uc2USGAoQcmVjb21tZW5kYXRpb25JZBgBIAEoCRIOCgZzdGF0dXMYAiABKAkSDwoHbWVzc2FnZRgDIAEoCSI4ChZWZXJpZnlBUElBY2Nlc3NSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIOCgZ0YXJnZXQYAiABKAkiKQoXVmVyaWZ5QVBJQWNjZXNzUmVzcG9uc2USDgoGcmVzdWx0GAEgASgIImUKGkdldFJlY29tbWVuZGF0aW9uVjJSZXF1ZXN0EgoKAmlkGAEgASgJEhMKC2Nvc3RHcm91cElkGAIgASgJEhQKDHBlcmlvZE9wdGlvbhgDIAEoCRIQCghjdXJyZW5jeRgEIAEoCSJhChtHZXRSZWNvbW1lbmRhdGlvblYyUmVzcG9uc2USQgoEZGF0YRgBIAEoCzI0LmJsdWVhcGkuYXBpLmNvdmVyLnJlY29tbWVuZGF0aW9uLlJlY29tbWVuZGF0aW9uRGF0YSJRChFPbmJvYXJkT3JnUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCRIMCgRuYW1lGAMgASgJEg0KBW9yZ0lkGAQgASgJIkMKEk9uYm9hcmRPcmdSZXNwb25zZRItCgh1c2VyRGF0YRgBIAEoCzIbLmJsdWVhcGkuYXBpLmNvdmVyLlVzZXJEYXRhIk0KE0ludml0ZU1lbWJlclJlcXVlc3QSDQoFZW1haWwYASADKAkSEAoIaXNSZXNlbmQYAiABKAgSFQoNaW52aXRlQXNBZG1pbhgDIAEoCCIlChRJbnZpdGVNZW1iZXJSZXNwb25zZRINCgVlbWFpbBgBIAMoCSKkAQoTQWN0aXZhdGVVc2VyUmVxdWVzdBIOCgZ1c2VySWQYASABKAkSGAoQcHJldmlvdXNQYXNzd29yZBgCIAEoCRIQCghwYXNzd29yZBgDIAEoCRIMCgRuYW1lGAQgASgJEg4KBmxvY2FsZRgFIAEoCRINCgVlbWFpbBgGIAEoCRIPCgdpc0F1dGgwGAcgASgIEhMKC2F1dGgwVXNlcklkGAggASgJIkUKFEFjdGl2YXRlVXNlclJlc3BvbnNlEi0KCHVzZXJEYXRhGAEgASgLMhsuYmx1ZWFwaS5hcGkuY292ZXIuVXNlckRhdGEiWAoTQ3JlYXRlTWVtYmVyUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCRIMCgRuYW1lGAMgASgJEhIKCmNvc3Rncm91cHMYBCADKAkiRQoUQ3JlYXRlTWVtYmVyUmVzcG9uc2USLQoIdXNlckRhdGEYASABKAsyGy5ibHVlYXBpLmFwaS5jb3Zlci5Vc2VyRGF0YSITChFHZXRNZW1iZXJzUmVxdWVzdCJDChJHZXRNZW1iZXJzUmVzcG9uc2USLQoIdXNlckRhdGEYASADKAsyGy5ibHVlYXBpLmFwaS5jb3Zlci5Vc2VyRGF0YSIpChdHZXRNZW1iZXJEZXRhaWxzUmVxdWVzdBIOCgZ1c2VySWQYASABKAkiSQoYR2V0TWVtYmVyRGV0YWlsc1Jlc3BvbnNlEi0KCHVzZXJEYXRhGAEgASgLMhsuYmx1ZWFwaS5hcGkuY292ZXIuVXNlckRhdGEiKwoZR2V0TWVtYmVyQ29zdEdyb3VwUmVxdWVzdBIOCgZ1c2VySWQYASABKAkiVAoaR2V0TWVtYmVyQ29zdEdyb3VwUmVzcG9uc2USNgoKY29zdEdyb3VwcxgBIAMoCzIiLmJsdWVhcGkuYXBpLmNvdmVyLk1lbWJlckNvc3RHcm91cCJACh1VcGRhdGVNZW1iZXJQZXJtaXNzaW9uUmVxdWVzdBIOCgZ1c2VySWQYASABKAkSDwoHaXNBZG1pbhgCIAEoCCJPCh5VcGRhdGVNZW1iZXJQZXJtaXNzaW9uUmVzcG9uc2USLQoIdXNlckRhdGEYASABKAsyGy5ibHVlYXBpLmFwaS5jb3Zlci5Vc2VyRGF0YSIXChVHZXRVc2VyRGV0YWlsc1JlcXVlc3QiRwoWR2V0VXNlckRldGFpbHNSZXNwb25zZRItCgh1c2VyRGF0YRgBIAEoCzIbLmJsdWVhcGkuYXBpLmNvdmVyLlVzZXJEYXRhIikKF1VwZGF0ZVVzZXJBdmF0YXJSZXF1ZXN0Eg4KBmF2YXRhchgBIAEoCSJJChhVcGRhdGVVc2VyQXZhdGFyUmVzcG9uc2USLQoIdXNlckRhdGEYASABKAsyGy5ibHVlYXBpLmFwaS5jb3Zlci5Vc2VyRGF0YSIlChVVcGRhdGVVc2VySWNvblJlcXVlc3QSDAoEaWNvbhgBIAEoCSJHChZVcGRhdGVVc2VySWNvblJlc3BvbnNlEi0KCHVzZXJEYXRhGAEgASgLMhsuYmx1ZWFwaS5hcGkuY292ZXIuVXNlckRhdGEiMQobVXBkYXRlVXNlckNvbG9yVGhlbWVSZXF1ZXN0EhIKCmNvbG9yVGhlbWUYASABKAkiTQocVXBkYXRlVXNlckNvbG9yVGhlbWVSZXNwb25zZRItCgh1c2VyRGF0YRgBIAEoCzIbLmJsdWVhcGkuYXBpLmNvdmVyLlVzZXJEYXRhIiUKFVVwZGF0ZVVzZXJOYW1lUmVxdWVzdBIMCgRuYW1lGAEgASgJIkcKFlVwZGF0ZVVzZXJOYW1lUmVzcG9uc2USLQoIdXNlckRhdGEYASABKAsyGy5ibHVlYXBpLmFwaS5jb3Zlci5Vc2VyRGF0YSInChZVcGRhdGVVc2VyRW1haWxSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIkgKF1VwZGF0ZVVzZXJFbWFpbFJlc3BvbnNlEi0KCHVzZXJEYXRhGAEgASgLMhsuYmx1ZWFwaS5hcGkuY292ZXIuVXNlckRhdGEiKwoZVXBkYXRlVXNlck1haW5WaWV3UmVxdWVzdBIOCgZ2aWV3SWQYASABKAkiSwoaVXBkYXRlVXNlck1haW5WaWV3UmVzcG9uc2USLQoIdXNlckRhdGEYASABKAsyGy5ibHVlYXBpLmFwaS5jb3Zlci5Vc2VyRGF0YSJJChhSZXNldFVzZXJQYXNzd29yZFJlcXVlc3QSGAoQcHJldmlvdXNQYXNzd29yZBgBIAEoCRITCgtuZXdQYXNzd29yZBgCIAEoCSJKChlSZXNldFVzZXJQYXNzd29yZFJlc3BvbnNlEi0KCHVzZXJEYXRhGAEgASgLMhsuYmx1ZWFwaS5hcGkuY292ZXIuVXNlckRhdGEiKQoXVXBkYXRlVXNlckxvY2FsZVJlcXVlc3QSDgoGbG9jYWxlGAEgASgJIkkKGFVwZGF0ZVVzZXJMb2NhbGVSZXNwb25zZRItCgh1c2VyRGF0YRgBIAEoCzIbLmJsdWVhcGkuYXBpLmNvdmVyLlVzZXJEYXRhIi0KGVVwZGF0ZVVzZXJBcHBUaGVtZVJlcXVlc3QSEAoIYXBwVGhlbWUYASABKAkiSwoaVXBkYXRlVXNlckFwcFRoZW1lUmVzcG9uc2USLQoIdXNlckRhdGEYASABKAsyGy5ibHVlYXBpLmFwaS5jb3Zlci5Vc2VyRGF0YSJDChlVcGRhdGVVc2VyVGltZXpvbmVSZXF1ZXN0EhAKCHRpbWVab25lGAEgASgJEhQKDGF1dG9UaW1lWm9uZRgCIAEoCCJLChpVcGRhdGVVc2VyVGltZXpvbmVSZXNwb25zZRItCgh1c2VyRGF0YRgBIAEoCzIbLmJsdWVhcGkuYXBpLmNvdmVyLlVzZXJEYXRhIjEKG1VwZGF0ZVVzZXJBdHRyaWJ1dGVzUmVxdWVzdBISCgphdHRyaWJ1dGVzGAEgAygJIk0KHFVwZGF0ZVVzZXJBdHRyaWJ1dGVzUmVzcG9uc2USLQoIdXNlckRhdGEYASABKAsyGy5ibHVlYXBpLmFwaS5jb3Zlci5Vc2VyRGF0YSIlChNEZWxldGVNZW1iZXJSZXF1ZXN0Eg4KBnVzZXJJZBgBIAEoCSImChREZWxldGVNZW1iZXJSZXNwb25zZRIOCgZ1c2VySWQYASABKAkiJgoUUmVzZXRQYXNzd29yZFJlcXVlc3QSDgoGdXNlcklkGAEgASgJIicKFVJlc2V0UGFzc3dvcmRSZXNwb25zZRIOCgZ1c2VySWQYASABKAkiuwEKEUNyZWF0ZVZpZXdSZXF1ZXN0EgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSEQoJaXNQcml2YXRlGAMgASgIEhIKCmlzRWRpdGFibGUYBCABKAgSDAoEaWNvbhgFIAEoCRISCgpyZXBvcnRUeXBlGAYgASgJEhIKCmNvbG9yVGhlbWUYByABKAkSFAoMcmVwb3J0UGVyaW9kGAggASgJEhAKCGN1cnJlbmN5GAkgASgJIkMKEkNyZWF0ZVZpZXdSZXNwb25zZRItCgh2aWV3RGF0YRgBIAEoCzIbLmJsdWVhcGkuYXBpLmNvdmVyLlZpZXdEYXRhIhEKD0dldFZpZXdzUmVxdWVzdCJBChBHZXRWaWV3c1Jlc3BvbnNlEi0KCHZpZXdMaXN0GAEgAygLMhsuYmx1ZWFwaS5hcGkuY292ZXIuVmlld0xpc3QiJwoVR2V0Q3VycmVudFZpZXdSZXF1ZXN0Eg4KBnZpZXdJZBgBIAEoCSJHChZHZXRDdXJyZW50Vmlld1Jlc3BvbnNlEi0KCHZpZXdEYXRhGAEgASgLMhsuYmx1ZWFwaS5hcGkuY292ZXIuVmlld0RhdGEiGQoXR2V0RmF2b3JpdGVWaWV3c1JlcXVlc3QiSwoYR2V0RmF2b3JpdGVWaWV3c1Jlc3BvbnNlEi8KCWZhdm9yaXRlcxgBIAMoCzIcLmJsdWVhcGkuYXBpLmNvdmVyLkZhdm9yaXRlcyIkChJQdWJsaXNoVmlld1JlcXVlc3QSDgoGdmlld0lkGAEgASgJIiIKE1B1Ymxpc2hWaWV3UmVzcG9uc2USCwoDdXJsGAEgASgJIiQKEkFkZEZhdm9yaXRlUmVxdWVzdBIOCgZ2aWV3SWQYASABKAkiJQoTQWRkRmF2b3JpdGVSZXNwb25zZRIOCgZ2aWV3SWQYASABKAkiJwoVUmVtb3ZlRmF2b3JpdGVSZXF1ZXN0Eg4KBnZpZXdJZBgBIAEoCSIoChZSZW1vdmVGYXZvcml0ZVJlc3BvbnNlEg4KBnZpZXdJZBgBIAEoCSKPAQoRVXBkYXRlVmlld1JlcXVlc3QSDgoGdmlld0lkGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSDAoEaWNvbhgEIAEoCRIRCglpc1ByaXZhdGUYBSABKAgSEgoKaXNFZGl0YWJsZRgGIAEoCBISCgpjb2xvclRoZW1lGAcgASgJIiQKElVwZGF0ZVZpZXdSZXNwb25zZRIOCgZ2aWV3SWQYASABKAkiWAoXVXBkYXRlVmlld0xheW91dFJlcXVlc3QSDgoGdmlld0lkGAEgASgJEi0KBmxheW91dBgCIAMoCzIdLmJsdWVhcGkuYXBpLmNvdmVyLldpZGdldERhdGEiSQoYVXBkYXRlVmlld0xheW91dFJlc3BvbnNlEi0KBmxheW91dBgBIAMoCzIdLmJsdWVhcGkuYXBpLmNvdmVyLlZpZXdMYXlvdXQimgEKF1VwZGF0ZVZpZXdXaWRnZXRSZXF1ZXN0Eg4KBnZpZXdJZBgBIAEoCRIQCgh3aWRnZXRJZBgCIAEoCRIoCgdvcHRpb25zGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIzCghyZXF1ZXN0cxgEIAMoCzIhLmJsdWVhcGkuYXBpLmNvdmVyLkxheW91dFJlcXVlc3RzIl8KGFVwZGF0ZVZpZXdXaWRnZXRSZXNwb25zZRIQCgh3aWRnZXRJZBgBIAEoCRIxCgp3aWRnZXREYXRhGAIgASgLMh0uYmx1ZWFwaS5hcGkuY292ZXIuV2lkZ2V0RGF0YSJBChtVcGRhdGVWaWV3Q29sb3JUaGVtZVJlcXVlc3QSDgoGdmlld0lkGAEgASgJEhIKCmNvbG9yVGhlbWUYAiABKAkiTQocVXBkYXRlVmlld0NvbG9yVGhlbWVSZXNwb25zZRItCgh2aWV3RGF0YRgBIAEoCzIbLmJsdWVhcGkuYXBpLmNvdmVyLlZpZXdEYXRhIj0KGVVwZGF0ZVZpZXdDdXJyZW5jeVJlcXVlc3QSDgoGdmlld0lkGAEgASgJEhAKCGN1cnJlbmN5GAIgASgJIksKGlVwZGF0ZVZpZXdDdXJyZW5jeVJlc3BvbnNlEi0KCHZpZXdEYXRhGAEgASgLMhsuYmx1ZWFwaS5hcGkuY292ZXIuVmlld0RhdGEiNQobU2V0T3JnVXBkYXRlQ3VycmVuY3lSZXF1ZXN0EhYKDnVwZGF0ZUN1cnJlbmN5GAEgASgDIjYKHFNldE9yZ1VwZGF0ZUN1cnJlbmN5UmVzcG9uc2USFgoOdXBkYXRlQ3VycmVuY3kYASABKAMiHQobR2V0T3JnVXBkYXRlQ3VycmVuY3lSZXF1ZXN0IlkKHEdldE9yZ1VwZGF0ZUN1cnJlbmN5UmVzcG9uc2USDQoFb3JnSWQYASABKAkSFgoOdXBkYXRlQ3VycmVuY3kYAiABKAMSEgoKbGFzdFVwZGF0ZRgDIAEoCSI+ChhMaXN0RXhjaGFuZ2VSYXRlc1JlcXVlc3QSEQoJc3RhcnREYXRlGAEgASgJEg8KB2VuZERhdGUYAiABKAkiYgoZTGlzdEV4Y2hhbmdlUmF0ZXNSZXNwb25zZRINCgVvcmdJZBgBIAEoCRI2Cg1leGNoYW5nZVJhdGVzGAIgAygLMh8uYmx1ZWFwaS5jb3Zlci52MS5FeGNoYW5nZVJhdGVzIkIKDUV4Y2hhbmdlUmF0ZXMSDQoFbW9udGgYASABKAkSFAoMZXhjaGFuZ2VSYXRlGAIgASgCEgwKBGRhdGUYAyABKAkiIwoRRGVsZXRlVmlld1JlcXVlc3QSDgoGdmlld0lkGAEgASgJIiQKEkRlbGV0ZVZpZXdSZXNwb25zZRIOCgZ2aWV3SWQYASABKAkiZQoaVXBkYXRlU2lkZU1lbnVTdGF0ZVJlcXVlc3QSDgoGdmlld0lkGAEgASgJEjcKDXNpZGVtZW51c3RhdGUYAiADKAsyIC5ibHVlYXBpLmFwaS5jb3Zlci5TaWRlTWVudVN0YXRlIi0KG1VwZGF0ZVNpZGVNZW51U3RhdGVSZXNwb25zZRIOCgZ2aWV3SWQYASABKAkiQAoaQWRkU2lkZU1lbnVGYXZvcml0ZVJlcXVlc3QSDgoGdmlld0lkGAEgASgJEhIKCm1lbnVJdGVtSWQYAiABKAkiLQobQWRkU2lkZU1lbnVGYXZvcml0ZVJlc3BvbnNlEg4KBnZpZXdJZBgBIAEoCSJDCh1SZW1vdmVTaWRlTWVudUZhdm9yaXRlUmVxdWVzdBIOCgZ2aWV3SWQYASABKAkSEgoKbWVudUl0ZW1JZBgCIAEoCSIwCh5SZW1vdmVTaWRlTWVudUZhdm9yaXRlUmVzcG9uc2USDgoGdmlld0lkGAEgASgJItMBChZDcmVhdGVDb3N0R3JvdXBSZXF1ZXN0EgwKBG5hbWUYASABKAkSLgoEdHlwZRgHIAEoDjIgLmJsdWVhcGkuYXBpLmNvdmVyLkNvc3RHcm91cFR5cGUSEwoLZGVzY3JpcHRpb24YAiABKAkSDQoFaW1hZ2UYAyABKAkSDAoEaWNvbhgEIAEoCRISCgpjb2xvclRoZW1lGAUgASgJEjUKDGNvbWJpbmF0aW9ucxgGIAEoCzIfLmJsdWVhcGkuYXBpLmNvdmVyLkNvbWJpbmF0aW9ucyJSChdDcmVhdGVDb3N0R3JvdXBSZXNwb25zZRI3Cg1jb3N0R3JvdXBEYXRhGAEgASgLMiAuYmx1ZWFwaS5hcGkuY292ZXIuQ29zdEdyb3VwRGF0YSIWChRHZXRDb3N0R3JvdXBzUmVxdWVzdCJQChVHZXRDb3N0R3JvdXBzUmVzcG9uc2USNwoNY29zdEdyb3VwRGF0YRgBIAMoCzIgLmJsdWVhcGkuYXBpLmNvdmVyLkNvc3RHcm91cERhdGEiMQoaR2V0Q29zdEdyb3VwRGV0YWlsc1JlcXVlc3QSEwoLY29zdEdyb3VwSWQYASABKAkiVgobR2V0Q29zdEdyb3VwRGV0YWlsc1Jlc3BvbnNlEjcKDWNvc3RHcm91cERhdGEYASABKAsyIC5ibHVlYXBpLmFwaS5jb3Zlci5Db3N0R3JvdXBEYXRhIj8KGlVwZGF0ZUNvc3RHcm91cE5hbWVSZXF1ZXN0EhMKC2Nvc3RHcm91cElkGAEgASgJEgwKBG5hbWUYAiABKAkiKwobVXBkYXRlQ29zdEdyb3VwTmFtZVJlc3BvbnNlEgwKBG5hbWUYASABKAkiTQohVXBkYXRlQ29zdEdyb3VwRGVzY3JpcHRpb25SZXF1ZXN0EhMKC2Nvc3RHcm91cElkGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJIjkKIlVwZGF0ZUNvc3RHcm91cERlc2NyaXB0aW9uUmVzcG9uc2USEwoLZGVzY3JpcHRpb24YASABKAkiQQobVXBkYXRlQ29zdEdyb3VwSW1hZ2VSZXF1ZXN0EhMKC2Nvc3RHcm91cElkGAEgASgJEg0KBWltYWdlGAIgASgJIi0KHFVwZGF0ZUNvc3RHcm91cEltYWdlUmVzcG9uc2USDQoFaW1hZ2UYASABKAkiPwoaVXBkYXRlQ29zdEdyb3VwSWNvblJlcXVlc3QSEwoLY29zdEdyb3VwSWQYASABKAkSDAoEaWNvbhgCIAEoCSIrChtVcGRhdGVDb3N0R3JvdXBJY29uUmVzcG9uc2USDAoEaWNvbhgBIAEoCSJLCiBVcGRhdGVDb3N0R3JvdXBDb2xvclRoZW1lUmVxdWVzdBITCgtjb3N0R3JvdXBJZBgBIAEoCRISCgpjb2xvclRoZW1lGAIgASgJIjcKIVVwZGF0ZUNvc3RHcm91cENvbG9yVGhlbWVSZXNwb25zZRISCgpjb2xvclRoZW1lGAEgASgJInAKIlVwZGF0ZUNvc3RHcm91cENvbWJpbmF0aW9uc1JlcXVlc3QSEwoLY29zdEdyb3VwSWQYASABKAkSNQoMY29tYmluYXRpb25zGAIgASgLMh8uYmx1ZWFwaS5hcGkuY292ZXIuQ29tYmluYXRpb25zIlwKI1VwZGF0ZUNvc3RHcm91cENvbWJpbmF0aW9uc1Jlc3BvbnNlEjUKDGNvbWJpbmF0aW9ucxgBIAEoCzIfLmJsdWVhcGkuYXBpLmNvdmVyLkNvbWJpbmF0aW9ucyJDChxBc3NpZ25Db3N0R3JvdXBNZW1iZXJSZXF1ZXN0EhMKC2Nvc3RHcm91cElkGAEgASgJEg4KBnVzZXJJZBgCIAEoCSJECh1Bc3NpZ25Db3N0R3JvdXBNZW1iZXJSZXNwb25zZRITCgtjb3N0R3JvdXBJZBgBIAEoCRIOCgZ1c2VySWQYAiABKAkiQwocUmVtb3ZlQ29zdEdyb3VwTWVtYmVyUmVxdWVzdBITCgtjb3N0R3JvdXBJZBgBIAEoCRIOCgZ1c2VySWQYAiABKAkiRAodUmVtb3ZlQ29zdEdyb3VwTWVtYmVyUmVzcG9uc2USEwoLY29zdEdyb3VwSWQYASABKAkSDgoGdXNlcklkGAIgASgJIi0KFkRlbGV0ZUNvc3RHcm91cFJlcXVlc3QSEwoLY29zdEdyb3VwSWQYASABKAkiLgoXRGVsZXRlQ29zdEdyb3VwUmVzcG9uc2USEwoLY29zdEdyb3VwSWQYASABKAkiMgoiR2V0QWNjb3VudEFjY2Vzc1RlbXBsYXRlVXJsUmVxdWVzdBIMCgR0eXBlGAEgASgJIqABCiNHZXRBY2NvdW50QWNjZXNzVGVtcGxhdGVVcmxSZXNwb25zZRIRCglsYXVuY2hVcmwYASABKAkSEwoLdGVtcGxhdGVVcmwYAiABKAkSEQoJc3RhY2tOYW1lGAMgASgJEhEKCXByaW5jaXBhbBgEIAEoCRISCgpleHRlcm5hbElkGAUgASgJEhcKD3RlbXBsYXRlVmVyc2lvbhgGIAEoCSIaChhMaXN0QWNjb3VudEFjY2Vzc1JlcXVlc3QiKQoXR2V0QWNjb3VudEFjY2Vzc1JlcXVlc3QSDgoGdGFyZ2V0GAEgASgJItoCCg1BY2NvdW50QWNjZXNzEg4KBnRhcmdldBgBIAEoCRITCgthY2NvdW50TmFtZRgCIAEoCRITCgthY2NvdW50VHlwZRgDIAEoCRIPCgdwYXllcklkGAQgASgJEg8KB3JvbGVBcm4YBSABKAkSEgoKZXh0ZXJuYWxJZBgGIAEoCRIPCgdzdGFja0lkGAcgASgJEhMKC3N0YWNrUmVnaW9uGAggASgJEhMKC3RlbXBsYXRlVXJsGAkgASgJEhIKCmJ1Y2tldE5hbWUYCiABKAkSDgoGcHJlZml4GAsgASgJEhIKCnJlcG9ydE5hbWUYDCABKAkSQQoScmVnaXN0cmF0aW9uU3RhdHVzGA0gASgLMiUuYmx1ZWFwaS5hcGkuY292ZXIuUmVnaXN0cmF0aW9uU3RhdHVzEg4KBnN0YXR1cxgOIAEoCRITCgtsYXN0VXBkYXRlZBgPIAEoCSJDChpDcmVhdGVBY2NvdW50QWNjZXNzUmVxdWVzdBIOCgZ0YXJnZXQYASABKAkSFQoNZnJvbVRlcnJhZm9ybRgCIAEoCCJECiJDcmVhdGVBY2NvdW50QWNjZXNzU3RhY2tzZXRSZXF1ZXN0Eg4KBnRhcmdldBgBIAEoCRIOCgZyZWdpb24YAiABKAkiLAoaVXBkYXRlQWNjb3VudEFjY2Vzc1JlcXVlc3QSDgoGdGFyZ2V0GAEgASgJIjwKGkRlbGV0ZUFjY291bnRBY2Nlc3NSZXF1ZXN0Eg4KBnRhcmdldBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkiLwobRGVsZXRlQWNjb3VudEFjY2Vzc1Jlc3BvbnNlEhAKCHRhcmdldElkGAEgASgJIlAKFlJlZ2lzdGVyQWNjb3VudFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhEKCWFjY291bnRJZBgCIAEoCRITCgthY2NvdW50TmFtZRgDIAEoCSLmAQoRTGlzdEFzc2V0c1JlcXVlc3QSEwoLY29zdEdyb3VwSWQYASABKAkSEgoKc3RhcnRNb250aBgCIAEoCRIQCghlbmRNb250aBgDIAEoCRIaChJ3aXRoUmVjb21tZW5kYXRpb24YBCABKAgSNwoKYXdzT3B0aW9ucxgFIAMoCzIjLmJsdWVhcGkuY292ZXIudjEuTGlzdEFzc2V0c0ZpbHRlcnMSQQoUYXdzUHJvcGVydGllc09wdGlvbnMYBiADKAsyIy5ibHVlYXBpLmNvdmVyLnYxLkxpc3RBc3NldHNGaWx0ZXJzIo8BChFMaXN0QXNzZXRzRmlsdGVycxJHCgphbmRGaWx0ZXJzGAEgAygLMjMuYmx1ZWFwaS5jb3Zlci52MS5MaXN0QXNzZXRzRmlsdGVycy5BbmRGaWx0ZXJzRW50cnkaMQoPQW5kRmlsdGVyc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEivQEKCFJlc291cmNlEgwKBGRhdGUYASABKAkSDQoFb3JnSWQYAiABKAkSDgoGdmVuZG9yGAMgASgJEg8KB2FjY291bnQYBCABKAkSDwoHc2VydmljZRgFIAEoCRISCgpyZXNvdXJjZUlkGAYgASgJEhQKDHJlc291cmNlVHlwZRgHIAEoCRIMCgRjb3N0GAggASgBEhIKCnByb3BlcnRpZXMYCSABKAkSFgoOcmVjb21tZW5kYXRpb24YCiABKAki5gEKF0dldEFzc2V0c1N1bW1hcnlSZXF1ZXN0EhMKC2Nvc3RHcm91cElkGAEgASgJEhIKCnN0YXJ0TW9udGgYAiABKAkSEAoIZW5kTW9udGgYAyABKAkSFAoMY29tYmluZURhdGVzGAQgASgIEjcKCmF3c09wdGlvbnMYBSADKAsyIy5ibHVlYXBpLmNvdmVyLnYxLkxpc3RBc3NldHNGaWx0ZXJzEkEKFGF3c1Byb3BlcnRpZXNPcHRpb25zGAYgAygLMiMuYmx1ZWFwaS5jb3Zlci52MS5MaXN0QXNzZXRzRmlsdGVycyJrChhHZXRBc3NldHNTdW1tYXJ5UmVzcG9uc2USMAoHc3VtbWFyeRgBIAMoCzIfLmJsdWVhcGkuY292ZXIudjEuQXNzZXRzU3VtbWFyeRIdChVyZWNvbW1lbmRhdGlvblN1bW1hcnkYAiABKAkiWAoNQXNzZXRzU3VtbWFyeRIMCgRkYXRlGAEgASgJEg4KBnZlbmRvchgCIAEoCRIWCg50b3RhbFJlc291cmNlcxgDIAEoAxIRCgl0b3RhbENvc3QYBCABKAEiOgojUmVzb2x2ZUNvc3RHcm91cENvbWJpbmF0aW9uc1JlcXVlc3QSEwoLY29zdEdyb3VwSWQYASABKAkiaQokUmVzb2x2ZUNvc3RHcm91cENvbWJpbmF0aW9uc1Jlc3BvbnNlEhMKC2Nvc3RHcm91cElkGAEgASgJEiwKCGFjY291bnRzGAIgAygLMhouYmx1ZWFwaS5hcGkuY292ZXIuQWNjb3VudCLHBAoTR2V0Q29zdFVzYWdlUmVxdWVzdBITCgtjb3N0R3JvdXBJZBgBIAEoCRIRCglzdGFydFRpbWUYAiABKAkSDwoHZW5kVGltZRgDIAEoCRIUCgxncm91cEJ5TW9udGgYBCABKAgSDQoFbGltaXQYBSABKAMSEAoIY2F0ZWdvcnkYBiABKAkSDwoHZ3JvdXBCeRgHIAEoCRIXCg9pbmNsdWRlWmVyb0Nvc3QYCCABKAgSQwoKYXdzT3B0aW9ucxgJIAEoCzIvLmJsdWVhcGkuY292ZXIudjEuR2V0Q29zdFVzYWdlUmVxdWVzdEF3c09wdGlvbnMSRwoMYXp1cmVPcHRpb25zGAogASgLMjEuYmx1ZWFwaS5jb3Zlci52MS5HZXRDb3N0VXNhZ2VSZXF1ZXN0QXp1cmVPcHRpb25zEkMKCmdjcE9wdGlvbnMYCyABKAsyLy5ibHVlYXBpLmNvdmVyLnYxLkdldENvc3RVc2FnZVJlcXVlc3RHY3BPcHRpb25zEk0KD2F6dXJlY3NwT3B0aW9ucxgMIAEoCzI0LmJsdWVhcGkuY292ZXIudjEuR2V0Q29zdFVzYWdlUmVxdWVzdEF6dXJlQ3NwT3B0aW9ucxJJCg1jdXN0b21PcHRpb25zGA0gASgLMjIuYmx1ZWFwaS5jb3Zlci52MS5HZXRDb3N0VXNhZ2VSZXF1ZXN0Q3VzdG9tT3B0aW9ucxIXCg9pbmNsdWRlRm9yZWNhc3QYDiABKAgSEAoIY3VycmVuY3kYDyABKAki5wEKHUdldENvc3RVc2FnZVJlcXVlc3RBd3NPcHRpb25zEhYKDmdyb3VwQnlDb2x1bW5zGAEgASgJEhUKDWdyb3VwQWNjb3VudHMYAiABKAgSQQoHZmlsdGVycxgDIAMoCzIwLmJsdWVhcGkuY292ZXIudjEuUmVhZENvc3RzUmVxdWVzdE9wdGlvbnNGaWx0ZXJzEkQKCnRhZ0ZpbHRlcnMYBCADKAsyMC5ibHVlYXBpLmNvdmVyLnYxLlJlYWRDb3N0c1JlcXVlc3RPcHRpb25zRmlsdGVycxIOCgZ0YWdLZXkYBSABKAki2QEKH0dldENvc3RVc2FnZVJlcXVlc3RBenVyZU9wdGlvbnMSFgoOZ3JvdXBCeUNvbHVtbnMYASABKAkSFQoNZ3JvdXBBY2NvdW50cxgCIAEoCBJBCgdmaWx0ZXJzGAMgAygLMjAuYmx1ZWFwaS5jb3Zlci52MS5SZWFkQ29zdHNSZXF1ZXN0T3B0aW9uc0ZpbHRlcnMSRAoKdGFnRmlsdGVycxgEIAMoCzIwLmJsdWVhcGkuY292ZXIudjEuUmVhZENvc3RzUmVxdWVzdE9wdGlvbnNGaWx0ZXJzIv4CCh1HZXRDb3N0VXNhZ2VSZXF1ZXN0R2NwT3B0aW9ucxIWCg5ncm91cEJ5Q29sdW1ucxgBIAEoCRIVCg1ncm91cEFjY291bnRzGAIgASgIEkEKB2ZpbHRlcnMYAyADKAsyMC5ibHVlYXBpLmNvdmVyLnYxLlJlYWRDb3N0c1JlcXVlc3RPcHRpb25zRmlsdGVycxJECgp0YWdGaWx0ZXJzGAQgAygLMjAuYmx1ZWFwaS5jb3Zlci52MS5SZWFkQ29zdHNSZXF1ZXN0T3B0aW9uc0ZpbHRlcnMSRgoMbGFiZWxGaWx0ZXJzGAUgAygLMjAuYmx1ZWFwaS5jb3Zlci52MS5SZWFkQ29zdHNSZXF1ZXN0T3B0aW9uc0ZpbHRlcnMSTQoTcHJvamVjdExhYmVsRmlsdGVycxgGIAMoCzIwLmJsdWVhcGkuY292ZXIudjEuUmVhZENvc3RzUmVxdWVzdE9wdGlvbnNGaWx0ZXJzEg4KBnRhZ0tleRgHIAEoCSLsAQoiR2V0Q29zdFVzYWdlUmVxdWVzdEF6dXJlQ3NwT3B0aW9ucxIWCg5ncm91cEJ5Q29sdW1ucxgBIAEoCRIVCg1ncm91cEFjY291bnRzGAIgASgIEkEKB2ZpbHRlcnMYAyADKAsyMC5ibHVlYXBpLmNvdmVyLnYxLlJlYWRDb3N0c1JlcXVlc3RPcHRpb25zRmlsdGVycxJECgp0YWdGaWx0ZXJzGAQgAygLMjAuYmx1ZWFwaS5jb3Zlci52MS5SZWFkQ29zdHNSZXF1ZXN0T3B0aW9uc0ZpbHRlcnMSDgoGdGFnS2V5GAUgASgJIoEDCiBHZXRDb3N0VXNhZ2VSZXF1ZXN0Q3VzdG9tT3B0aW9ucxIWCg5ncm91cEJ5Q29sdW1ucxgBIAEoCRIVCg1ncm91cEFjY291bnRzGAIgASgIEkEKB2ZpbHRlcnMYAyADKAsyMC5ibHVlYXBpLmNvdmVyLnYxLlJlYWRDb3N0c1JlcXVlc3RPcHRpb25zRmlsdGVycxJECgp0YWdGaWx0ZXJzGAQgAygLMjAuYmx1ZWFwaS5jb3Zlci52MS5SZWFkQ29zdHNSZXF1ZXN0T3B0aW9uc0ZpbHRlcnMSRgoMbGFiZWxGaWx0ZXJzGAUgAygLMjAuYmx1ZWFwaS5jb3Zlci52MS5SZWFkQ29zdHNSZXF1ZXN0T3B0aW9uc0ZpbHRlcnMSTQoTcHJvamVjdExhYmVsRmlsdGVycxgGIAMoCzIwLmJsdWVhcGkuY292ZXIudjEuUmVhZENvc3RzUmVxdWVzdE9wdGlvbnNGaWx0ZXJzEg4KBnRhZ0tleRgHIAEoCSKpAQoeUmVhZENvc3RzUmVxdWVzdE9wdGlvbnNGaWx0ZXJzElQKCmFuZEZpbHRlcnMYASADKAsyQC5ibHVlYXBpLmNvdmVyLnYxLlJlYWRDb3N0c1JlcXVlc3RPcHRpb25zRmlsdGVycy5BbmRGaWx0ZXJzRW50cnkaMQoPQW5kRmlsdGVyc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEi9gMKCENvc3RJdGVtEg4KBnZlbmRvchgBIAEoCRIMCgRkYXRlGAIgASgJEg8KB3Byb2R1Y3QYAyABKAkSDwoHYWNjb3VudBgEIAEoCRIRCgl1c2FnZVR5cGUYECABKAkSEgoKY2hhcmdlVHlwZRgRIAEoCRIMCgRjb3N0GAUgASgBEg8KB2RldGFpbHMYBiABKAkSNAoIZm9yZWNhc3QYByABKAsyIi5ibHVlYXBpLmFwaS5jb3Zlci5Bd3NDb3N0Rm9yZWNhc3QSDgoGcmVnaW9uGAggASgJEhYKDmJpbGxpbmdBY2NvdW50GAkgASgJEhAKCHRhZ1ZhbHVlGAogASgJEhIKCmxhc3RVcGRhdGUYCyABKAkSDAoEdW5pdBgMIAEoCRIQCghjYXRlZ29yeRgNIAEoCRIOCgZ0YWdnZWQYDiABKAgSFQoNbnVtYmVyT2ZVbml0cxgSIAEoARJGCg51bml0Y29zdG1ldHJpYxgPIAMoCzIuLmJsdWVhcGkuY292ZXIudjEuQ29zdEl0ZW0uVW5pdGNvc3RtZXRyaWNFbnRyeRIaChJhbGxvY2F0aW9uQ2F0ZWdvcnkYEyABKAkaNQoTVW5pdGNvc3RtZXRyaWNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAE6AjgBIjoKI0dldFJpZ2h0U2l6aW5nUmVjb21tZW5kYXRpb25SZXF1ZXN0EhMKC2Nvc3RHcm91cElkGAEgASgJIlkKJEdldFJpZ2h0U2l6aW5nUmVjb21tZW5kYXRpb25SZXNwb25zZRIxCghyZXNvdXJjZRgBIAMoCzIfLmJsdWVhcGkuYXBpLmNvdmVyLlJlc291cmNlRGF0YSJ4ChlNb2RpZnlSZXNvdXJjZVR5cGVSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIRCglhY2NvdW50SWQYAiABKAkSEgoKcmVzb3VyY2VJZBgDIAEoCRIUCgxyZXNvdXJjZVR5cGUYBCABKAkSDgoGcmVnaW9uGAUgASgJImkKGk1vZGlmeVJlc291cmNlVHlwZVJlc3BvbnNlEhEKCWFjY291bnRJZBgBIAEoCRISCgpyZXNvdXJjZUlkGAIgASgJEhQKDHJlc291cmNlVHlwZRgDIAEoCRIOCgZyZWdpb24YBCABKAkiYQoYVGVybWluYXRlUmVzb3VyY2VSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIRCglhY2NvdW50SWQYAiABKAkSEgoKcmVzb3VyY2VJZBgDIAEoCRIOCgZyZWdpb24YBCABKAkiUgoZVGVybWluYXRlUmVzb3VyY2VSZXNwb25zZRIRCglhY2NvdW50SWQYASABKAkSEgoKcmVzb3VyY2VJZBgCIAEoCRIOCgZyZWdpb24YAyABKAkiQwoXVXBsb2FkQ2hhcmdlQ29kZVJlcXVlc3QSDAoEbmFtZRgBIAEoCRIMCgR0eXBlGAIgASgJEgwKBGZpbGUYAyABKAwiUgoYVXBsb2FkQ2hhcmdlQ29kZVJlc3BvbnNlEgwKBG5hbWUYASABKAkSKAoGc3RhdHVzGAIgASgOMhguYmx1ZWFwaS5jb3Zlci52MS5TdGF0dXMiSAoSQXNzaWduUGF5ZXJSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIRCglhY2NvdW50SWQYAiABKAkSDwoHcGF5ZXJJZBgDIAEoCSI5ChNBc3NpZ25QYXllclJlc3BvbnNlEhEKCWFjY291bnRJZBgBIAEoCRIPCgdwYXllcklkGAIgASgJIiIKEEdldFBheWVyc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJIiMKEUdldFBheWVyc1Jlc3BvbnNlEg4KBnBheWVycxgBIAMoCSI5ChJHZXRBY2NvdW50c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhMKC2Nvc3RHcm91cElkGAIgASgJIicKE0dldEFjY291bnRzUmVzcG9uc2USEAoIYWNjb3VudHMYASADKAkiOQoSR2V0U2VydmljZXNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRITCgtjb3N0R3JvdXBJZBgCIAEoCSInChNHZXRTZXJ2aWNlc1Jlc3BvbnNlEhAKCHNlcnZpY2VzGAEgAygJIjgKEUdldFJlZ2lvbnNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRITCgtjb3N0R3JvdXBJZBgCIAEoCSIlChJHZXRSZWdpb25zUmVzcG9uc2USDwoHcmVnaW9ucxgBIAMoCSI1Cg5HZXRUYWdzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSEwoLY29zdEdyb3VwSWQYAiABKAkiPgoPR2V0VGFnc1Jlc3BvbnNlEisKB3RhZ0RhdGEYASADKAsyGi5ibHVlYXBpLmFwaS5jb3Zlci5UYWdEYXRhIiAKD0xpc3RGZWVzUmVxdWVzdBINCgVtb250aBgBIAEoCSLtAgoKRmVlRGV0YWlscxIKCgJpZBgBIAEoCRINCgVvcmdJZBgCIAEoCRIOCgZ2ZW5kb3IYAyABKAkSDwoHYWNjb3VudBgEIAEoCRINCgVtb250aBgFIAEoCRIQCghsaW5lVHlwZRgGIAEoCRIPCgdmZWVUeXBlGAcgASgJEhMKC3Byb2R1Y3RDb2RlGAggASgJEhMKC2Rlc2NyaXB0aW9uGAkgASgJEg8KB3N0YXJ0ZWQYCiABKAkSFAoMdGltZUludGVydmFsGAsgASgJEhMKC3Byb2R1Y3ROYW1lGAwgASgJEhAKCGN1cnJlbmN5GA0gASgJEhMKC3NwbGl0U3RhdHVzGA4gASgJEhMKC2lzQWxsb2NhdGVkGA8gASgIEhEKCWlzQXBwbGllZBgQIAEoCBIVCg11bmJsZW5kZWRDb3N0GBEgASgBEhEKCXNvdXJjZUZlZRgSIAEoCRISCgpsYXN0VXBkYXRlGBMgASgJIiIKEVJlc3RvcmVGZWVSZXF1ZXN0Eg0KBWZlZUlkGAEgASgJIlEKFkdldENvc3RHcm91cEZlZVJlcXVlc3QSEwoLY29zdEdyb3VwSWQYASABKAkSEQoJc3RhcnRUaW1lGAIgASgJEg8KB2VuZFRpbWUYAyABKAkiZgoHRmVlSXRlbRIOCgZ2ZW5kb3IYASABKAkSDQoFbW9udGgYAiABKAkSDwoHcHJvZHVjdBgDIAEoCRIPCgdhY2NvdW50GAQgASgJEgwKBHR5cGUYBSABKAkSDAoEY29zdBgGIAEoASJJCglBbGxvY2F0b3ISDAoEdHlwZRgBIAEoCRINCgV2YWx1ZRgCIAEoCRIPCgdmb3JtdWxhGAMgASgJEg4KBm1vbnRocxgEIAEoAyJoCghDcml0ZXJpYRIwCgNhbmQYASADKAsyIy5ibHVlYXBpLmNvdmVyLnYxLkNyaXRlcmlhLkFuZEVudHJ5GioKCEFuZEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiogIKFENvc3RBbGxvY2F0b3JEZXRhaWxzEgoKAmlkGAEgASgJEhAKCGNhdGVnb3J5GAIgASgJEhIKCmV4cGlyYXRpb24YAyABKAMSEgoKc3RhcnRNb250aBgEIAEoCRIWCg5kZWZhdWx0QWNjb3VudBgFIAEoCRIxCghjcml0ZXJpYRgGIAEoCzIfLmJsdWVhcGkuYXBpLmNvdmVyLkNvbWJpbmF0aW9ucxIuCglhbGxvY2F0b3IYByADKAsyGy5ibHVlYXBpLmNvdmVyLnYxLkFsbG9jYXRvchISCgpjcmVhdGVUaW1lGAggASgJEhIKCnVwZGF0ZVRpbWUYCSABKAkSDAoEbmFtZRgKIAEoCRITCgtkZXNjcmlwdGlvbhgLIAEoCSL6AQoUQ29zdEFsbG9jYXRvclJlcXVlc3QSCgoCaWQYASABKAkSEAoIY2F0ZWdvcnkYAiABKAkSEgoKZXhwaXJhdGlvbhgDIAEoAxISCgpzdGFydE1vbnRoGAQgASgJEhYKDmRlZmF1bHRBY2NvdW50GAUgASgJEjEKCGNyaXRlcmlhGAYgASgLMh8uYmx1ZWFwaS5hcGkuY292ZXIuQ29tYmluYXRpb25zEi4KCWFsbG9jYXRvchgHIAMoCzIbLmJsdWVhcGkuY292ZXIudjEuQWxsb2NhdG9yEgwKBG5hbWUYCCABKAkSEwoLZGVzY3JpcHRpb24YCSABKAkiFwoVTGlzdEFsbG9jYXRvcnNSZXF1ZXN0IvABChZDcmVhdGVBbGxvY2F0b3JSZXF1ZXN0EhAKCGNhdGVnb3J5GAEgASgJEhIKCmV4cGlyYXRpb24YAiABKAMSEgoKc3RhcnRNb250aBgDIAEoCRIWCg5kZWZhdWx0QWNjb3VudBgEIAEoCRIxCghjcml0ZXJpYRgFIAEoCzIfLmJsdWVhcGkuYXBpLmNvdmVyLkNvbWJpbmF0aW9ucxIuCglhbGxvY2F0b3IYBiADKAsyGy5ibHVlYXBpLmNvdmVyLnYxLkFsbG9jYXRvchIMCgRuYW1lGAcgASgJEhMKC2Rlc2NyaXB0aW9uGAggASgJIjIKHkdldEFsbG9jYXRpb25BdHRyaWJ1dGVzUmVxdWVzdBIQCghjYXRlZ29yeRgBIAEoCSKxAQofR2V0QWxsb2NhdGlvbkF0dHJpYnV0ZXNSZXNwb25zZRJYCglhdHRyaWJ1dGUYASADKAsyRS5ibHVlYXBpLmNvdmVyLnYxLkdldEFsbG9jYXRpb25BdHRyaWJ1dGVzUmVzcG9uc2UuQWxsb2NhdGlvbkF0dHJpYnV0ZRo0ChNBbGxvY2F0aW9uQXR0cmlidXRlEgwKBHR5cGUYASABKAkSDwoHc2VydmljZRgCIAMoCSI+ChtHZXRBbGxvY2F0aW9uU291cmNlc1JlcXVlc3QSDAoEdHlwZRgBIAEoCRIRCglhY2NvdW50SWQYAiABKAki6wEKHEdldEFsbG9jYXRpb25Tb3VyY2VzUmVzcG9uc2USUAoGc291cmNlGAEgAygLMkAuYmx1ZWFwaS5jb3Zlci52MS5HZXRBbGxvY2F0aW9uU291cmNlc1Jlc3BvbnNlLkFsbG9jYXRpb25Tb3VyY2VzEisKB3RhZ0RhdGEYAiADKAsyGi5ibHVlYXBpLmFwaS5jb3Zlci5UYWdEYXRhGkwKEUFsbG9jYXRpb25Tb3VyY2VzEhMKC2FjY291bnROYW1lGAEgASgJEg8KB3NlcnZpY2UYAiABKAkSEQoJY29zdEdyb3VwGAMgASgJIiQKFkRlbGV0ZUFsbG9jYXRvclJlcXVlc3QSCgoCaWQYASABKAkiRwocUHJveHlDcmVhdGVDb21wbGV0aW9uUmVxdWVzdBInCgZwYXJhbXMYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Ii0KHVByb3h5Q3JlYXRlQ29tcGxldGlvblJlc3BvbnNlEgwKBGxpbmUYASABKAki1AQKE0FjY291bnRVc2FnZURldGFpbHMSCgoCaWQYASABKAkSDQoFb3JnSWQYAiABKAkSDgoGdmVuZG9yGAMgASgJEg8KB2FjY291bnQYBCABKAkSDAoEZGF0ZRgFIAEoCRITCgtwcm9kdWN0Q29kZRgGIAEoCRITCgtzZXJ2aWNlQ29kZRgHIAEoCRIOCgZyZWdpb24YCCABKAkSDAoEem9uZRgJIAEoCRIRCgl1c2FnZVR5cGUYCiABKAkSFAoMaW5zdGFuY2VUeXBlGAsgASgJEhEKCW9wZXJhdGlvbhgMIAEoCRIRCglpbnZvaWNlSWQYDSABKAkSEwoLZGVzY3JpcHRpb24YDiABKAkSEgoKcmVzb3VyY2VJZBgPIAEoCRIMCgR0YWdzGBAgASgJEhYKDmNvc3RDYXRlZ29yaWVzGBEgASgJEhMKC3VzYWdlQW1vdW50GBIgASgBEhkKEXRydWVVbmJsZW5kZWRDb3N0GBMgASgBEhUKDXVuYmxlbmRlZENvc3QYFCABKAESFQoNZWZmZWN0aXZlQ29zdBgVIAEoARIVCg1hbW9ydGl6ZWRDb3N0GBYgASgBEhoKEnB1YmxpY09uRGVtYW5kQ29zdBgXIAEoARIbChN1bnVzZWRBbW9ydGl6ZWRDb3N0GBggASgBEhIKCmxhc3RVcGRhdGUYGSABKAkSEwoLc3BsaXRTdGF0dXMYGiABKAkSEwoLaXNBbGxvY2F0ZWQYGyABKAgSEQoJaXNBcHBsaWVkGBwgASgIEg4KBnNvdXJjZRgdIAEoCSI9ChdMaXN0QWNjb3VudFVzYWdlUmVxdWVzdBIRCglzdGFydERhdGUYASABKAkSDwoHZW5kRGF0ZRgCIAEoCSIyChpSZXN0b3JlQWNjb3VudFVzYWdlUmVxdWVzdBIUCgxhbGxvY2F0aW9uSWQYASABKAkiIwoVUmVzdG9yZVNhdmluZ3NSZXF1ZXN0EgoKAmlkGAEgASgJIroCCg5TYXZpbmdzRGV0YWlscxIKCgJpZBgBIAEoCRINCgVvcmdJZBgCIAEoCRIOCgZ2ZW5kb3IYAyABKAkSDwoHYWNjb3VudBgEIAEoCRINCgVtb250aBgFIAEoCRIMCgR0eXBlGAYgASgJEgsKA2FybhgHIAEoCRITCgtwcm9kdWN0Q29kZRgIIAEoCRISCgpvZmZlckNsYXNzGAkgASgJEhAKCG9uZGVtYW5kGAogASgBEhUKDWVmZmVjdGl2ZUNvc3QYCyABKAESDwoHc2F2aW5ncxgMIAEoARITCgtzcGxpdFN0YXR1cxgNIAEoCRITCgtpc0FsbG9jYXRlZBgOIAEoCBIRCglpc0FwcGxpZWQYDyABKAgSDgoGc291cmNlGBAgASgJEhIKCmxhc3RVcGRhdGUYESABKAkiagodR2V0Q29zdEdyb3VwQWxsb2NhdGlvblJlcXVlc3QSEAoIY2F0ZWdvcnkYASABKAkSEwoLY29zdEdyb3VwSWQYAiABKAkSEQoJc3RhcnREYXRlGAMgASgJEg8KB2VuZERhdGUYBCABKAkigAEKDkFsbG9jYXRpb25JdGVtEg4KBnZlbmRvchgBIAEoCRINCgVtb250aBgCIAEoCRIPCgdwcm9kdWN0GAMgASgJEg8KB2FjY291bnQYBCABKAkSDAoEdHlwZRgFIAEoCRIMCgRjb3N0GAYgASgBEhEKCWNvc3RHcm91cBgHIAEoCSJfChdQcm9jZXNzQXV0aDBVc2VyUmVxdWVzdBIOCgZzb3VyY2UYASABKAkSEgoKY3VzdG9tZXJJZBgCIAEoCRINCgVlbWFpbBgDIAEoCRIRCglzdWJ1c2VySWQYBCABKAkiMAoYUHJvY2Vzc0F1dGgwVXNlclJlc3BvbnNlEhQKDGlzQXV0aG9yaXplZBgBIAEoCCKVAgoKRGF0YUFjY2VzcxIOCgZ0YXJnZXQYASABKAkSDQoFb3JnSWQYAiABKAkSMQoKZ2NwT3B0aW9ucxgDIAEoCzIdLmJsdWVhcGkuYXBpLmNvdmVyLkdjcE9wdGlvbnMSNQoMYXp1cmVPcHRpb25zGAQgASgLMh8uYmx1ZWFwaS5hcGkuY292ZXIuQXp1cmVPcHRpb25zEjEKCmF3c09wdGlvbnMYBSABKAsyHS5ibHVlYXBpLmFwaS5jb3Zlci5Bd3NPcHRpb25zEhMKC2FjY291bnRUeXBlGAYgASgJEhIKCmxhc3RVcGRhdGUYByABKAkSEgoKY3JlYXRlVGltZRgIIAEoCRIOCgZ2ZW5kb3IYCSABKAki7QEKGVJlZ2lzdGVyRGF0YUFjY2Vzc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg4KBnRhcmdldBgCIAEoCRITCgthY2NvdW50VHlwZRgDIAEoCRIxCgpnY3BPcHRpb25zGAQgASgLMh0uYmx1ZWFwaS5hcGkuY292ZXIuR2NwT3B0aW9ucxI1CgxhenVyZU9wdGlvbnMYBSABKAsyHy5ibHVlYXBpLmFwaS5jb3Zlci5BenVyZU9wdGlvbnMSMQoKYXdzT3B0aW9ucxgGIAEoCzIdLmJsdWVhcGkuYXBpLmNvdmVyLkF3c09wdGlvbnMi6wEKF1VwZGF0ZURhdGFBY2Nlc3NSZXF1ZXN0Eg4KBnRhcmdldBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSMQoKZ2NwT3B0aW9ucxgDIAEoCzIdLmJsdWVhcGkuYXBpLmNvdmVyLkdjcE9wdGlvbnMSNQoMYXp1cmVPcHRpb25zGAQgASgLMh8uYmx1ZWFwaS5hcGkuY292ZXIuQXp1cmVPcHRpb25zEjEKCmF3c09wdGlvbnMYBSABKAsyHS5ibHVlYXBpLmFwaS5jb3Zlci5Bd3NPcHRpb25zEhMKC2FjY291bnRUeXBlGAYgASgJIhcKFUxpc3REYXRhQWNjZXNzUmVxdWVzdCIhCh9MaXN0VW5yZWdpc3RlcmVkQWNjb3VudHNSZXF1ZXN0InEKIExpc3RVbnJlZ2lzdGVyZWRBY2NvdW50c1Jlc3BvbnNlEg0KBW9yZ0lkGAEgASgJEj4KEXVucmVnaXN0ZXJlZEFjY3RzGAIgAygLMiMuYmx1ZWFwaS5jb3Zlci52MS5VbnJlZ2lzdGVyZWRBY2N0cyJUChFVbnJlZ2lzdGVyZWRBY2N0cxIKCgJpZBgBIAEoCRIPCgdwYXllcklkGAIgASgJEg4KBnN0YXR1cxgDIAEoCRISCgpsYXN0VXBkYXRlGAQgASgJInwKFUJpbGxpbmdBY2NvdW50UmVxdWVzdBIRCgliaWxsaW5nSWQYASABKAkSEQoJZGF0YXNldElkGAIgASgJEhUKDWRhdGFzZXRSZWdpb24YAyABKAkSEQoJcHJvamVjdElkGAQgASgJEhMKC2JpbGxpbmdOYW1lGAUgASgJIlQKHUdldEFuZERlbGV0ZURhdGFBY2Nlc3NSZXF1ZXN0Eg4KBnRhcmdldBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSEwoLYWNjb3VudFR5cGUYAyABKAkiYQoiQWRkUGFydG5lckNlbnRlckNyZWRlbnRpYWxzUmVxdWVzdBIRCglhY2NvdW50SWQYASABKAkSFQoNYXBwbGljYXRpb25JZBgCIAEoCRIRCglzZWNyZXRLZXkYAyABKAkiJQoUQWRkTXBuU2V0dGluZ1JlcXVlc3QSDQoFbXBuSWQYASABKAki1gEKHEdldENvc3RHcm91cEF0dHJpYnV0ZVJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhUKDWF0dHJpYnV0ZVR5cGUYAiABKAkSEwoLY29zdEdyb3VwSWQYAyABKAkSPQoUZXhpc3RpbmdDb21iaW5hdGlvbnMYBCADKAsyHy5ibHVlYXBpLmFwaS5jb3Zlci5Db21iaW5hdGlvbnMSOwoSY3VycmVudENvbWJpbmF0aW9uGAUgASgLMh8uYmx1ZWFwaS5hcGkuY292ZXIuQ29tYmluYXRpb25zIncKHUdldENvc3RHcm91cEF0dHJpYnV0ZVJlc3BvbnNlEikKBnJlc3VsdBgBIAMoCzIZLmJsdWVhcGkuYXBpLmNvdmVyLlJlc3VsdBIrCgd0YWdEYXRhGAIgAygLMhouYmx1ZWFwaS5hcGkuY292ZXIuVGFnRGF0YSImChRHZXRDYXRlZ29yaWVzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkiRgoVR2V0Q2F0ZWdvcmllc1Jlc3BvbnNlEi0KCGNhdGVnb3J5GAEgAygLMhsuYmx1ZWFwaS5hcGkuY292ZXIuQ2F0ZWdvcnkiEgoQR2V0QWxlcnRzUmVxdWVzdCJEChFHZXRBbGVydHNSZXNwb25zZRIvCglhbGVydERhdGEYASABKAsyHC5ibHVlYXBpLmFwaS5jb3Zlci5BbGVydERhdGEihgEKEkNyZWF0ZUFsZXJ0UmVxdWVzdBIMCgRuYW1lGAEgASgJEhMKC2ZpeGVkQW1vdW50GAIgASgCEhIKCnBlcmNlbnRhZ2UYAyABKAISEwoLZ3JhbnVsYXJpdHkYBCABKAkSEgoKY29zdEdyb3VwcxgFIAMoCRIQCghjaGFubmVscxgGIAMoCSJGChNDcmVhdGVBbGVydFJlc3BvbnNlEi8KCWFsZXJ0RGF0YRgBIAEoCzIcLmJsdWVhcGkuYXBpLmNvdmVyLkFsZXJ0RGF0YSIkChZHZXRBbGVydERldGFpbHNSZXF1ZXN0EgoKAmlkGAEgASgJIkoKF0dldEFsZXJ0RGV0YWlsc1Jlc3BvbnNlEi8KCWFsZXJ0RGF0YRgBIAEoCzIcLmJsdWVhcGkuYXBpLmNvdmVyLkFsZXJ0RGF0YSIgChJEZWxldGVBbGVydFJlcXVlc3QSCgoCaWQYASABKAkiIQoTRGVsZXRlQWxlcnRSZXNwb25zZRIKCgJpZBgBIAEoCSKZAQoZVXBkYXRlQWxlcnREZXRhaWxzUmVxdWVzdBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2ZpeGVkQW1vdW50GAMgASgCEhIKCnBlcmNlbnRhZ2UYBCABKAISEwoLZ3JhbnVsYXJpdHkYBSABKAkSEgoKY29zdEdyb3VwcxgGIAMoCRIQCghjaGFubmVscxgHIAMoCSJNChpVcGRhdGVBbGVydERldGFpbHNSZXNwb25zZRIvCglhbGVydERhdGEYASABKAsyHC5ibHVlYXBpLmFwaS5jb3Zlci5BbGVydERhdGEiIgoSR2V0Q2hhbm5lbHNSZXF1ZXN0EgwKBHR5cGUYASABKAkiSgoTR2V0Q2hhbm5lbHNSZXNwb25zZRIzCgtjaGFubmVsRGF0YRgBIAEoCzIeLmJsdWVhcGkuYXBpLmNvdmVyLkNoYW5uZWxEYXRhIkYKFENyZWF0ZUNoYW5uZWxSZXF1ZXN0EgwKBG5hbWUYASABKAkSDAoEdHlwZRgCIAEoCRISCgp3ZWJob29rVXJsGAMgASgJIkwKFUNyZWF0ZUNoYW5uZWxSZXNwb25zZRIzCgtjaGFubmVsRGF0YRgBIAEoCzIeLmJsdWVhcGkuYXBpLmNvdmVyLkNoYW5uZWxEYXRhIiYKGEdldENoYW5uZWxEZXRhaWxzUmVxdWVzdBIKCgJpZBgBIAEoCSJQChlHZXRDaGFubmVsRGV0YWlsc1Jlc3BvbnNlEjMKC2NoYW5uZWxEYXRhGAEgASgLMh4uYmx1ZWFwaS5hcGkuY292ZXIuQ2hhbm5lbERhdGEiIgoURGVsZXRlQ2hhbm5lbFJlcXVlc3QSCgoCaWQYASABKAkiIwoVRGVsZXRlQ2hhbm5lbFJlc3BvbnNlEgoKAmlkGAEgASgJIlkKG1VwZGF0ZUNoYW5uZWxEZXRhaWxzUmVxdWVzdBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEgwKBHR5cGUYAyABKAkSEgoKd2ViaG9va1VybBgEIAEoCSJTChxVcGRhdGVDaGFubmVsRGV0YWlsc1Jlc3BvbnNlEjMKC2NoYW5uZWxEYXRhGAEgASgLMh4uYmx1ZWFwaS5hcGkuY292ZXIuQ2hhbm5lbERhdGEizwEKIUdldERpc2NvdW50UmVjb21tZW5kYXRpb25zUmVxdWVzdBITCgtjb3N0R3JvdXBJZBgBIAEoCRIvCglhd3NJbnB1dHMYAiABKAsyHC5ibHVlYXBpLmFwaS5jb3Zlci5Bd3NJbnB1dHMSMwoLYXp1cmVJbnB1dHMYAyABKAsyHi5ibHVlYXBpLmFwaS5jb3Zlci5BenVyZUlucHV0cxIvCglnY3BJbnB1dHMYBCABKAsyHC5ibHVlYXBpLmFwaS5jb3Zlci5HY3BJbnB1dHMiiQIKIkdldERpc2NvdW50UmVjb21tZW5kYXRpb25zUmVzcG9uc2USSQoSYXdzUmVjb21tZW5kYXRpb25zGAEgASgLMi0uYmx1ZWFwaS5hcGkuY292ZXIuQXdzRGlzY291bnRSZWNvbW1lbmRhdGlvbnMSTQoUYXp1cmVSZWNvbW1lbmRhdGlvbnMYAiABKAsyLy5ibHVlYXBpLmFwaS5jb3Zlci5BenVyZURpc2NvdW50UmVjb21tZW5kYXRpb25zEkkKEmdjcFJlY29tbWVuZGF0aW9ucxgDIAEoCzItLmJsdWVhcGkuYXBpLmNvdmVyLkdjcERpc2NvdW50UmVjb21tZW5kYXRpb25zIlcKHEdldEFub21hbHlpbkNvc3RHcm91cFJlcXVlc3QSEwoLY29zdEdyb3VwSWQYASABKAkSEQoJc3RhcnREYXRlGAIgASgJEg8KB2VuZERhdGUYAyABKAki4QEKC0Fub21hbHlEYXRhEg8KB2FjY291bnQYASABKAkSEwoLY29zdEdyb3VwSWQYAiABKAkSDgoGdmVuZG9yGAMgASgJEg8KB3Byb2R1Y3QYBCABKAkSDAoEZGF0ZRgFIAEoCRIRCgl0b3RhbENvc3QYBiABKAISEQoJaXNBbm9tYWx5GAcgASgIEhIKCmxvd2VyTGltaXQYCCABKAISEgoKdXBwZXJMaW1pdBgJIAEoAhITCgthbm9tYWx5Q29zdBgKIAEoAhIaChJhbm9tYWx5UHJvYmFiaWxpdHkYCyABKAIihQEKJENyZWF0ZURpc2NvdW50RXhwaXJhdGlvbkFsZXJ0UmVxdWVzdBITCgtmcmVxdWVuY2llcxgBIAMoAxISCgpjb3N0R3JvdXBzGAIgAygJEhQKDGFsZXJ0RW5hYmxlZBgDIAEoCBIQCghjaGFubmVscxgEIAMoCRIMCgRuYW1lGAUgASgJIjYKKE1hbmlwdWxhdGVEaXNjb3VudEV4cGlyYXRpb25BbGVydFJlcXVlc3QSCgoCaWQYASABKAkikQEKJFVwZGF0ZURpc2NvdW50RXhwaXJhdGlvbkFsZXJ0UmVxdWVzdBIKCgJpZBgBIAEoCRIUCgxhbGVydEVuYWJsZWQYAiABKAgSEAoIY2hhbm5lbHMYAyADKAkSEwoLZnJlcXVlbmNpZXMYBCADKAMSEgoKY29zdEdyb3VwcxgFIAMoCRIMCgRuYW1lGAYgASgJIukBChdEaXNjb3VudEV4cGlyeUFsZXJ0RGF0YRIKCgJpZBgBIAEoCRINCgVvcmdJZBgCIAEoCRIUCgxhbGVydEVuYWJsZWQYAyABKAgSEwoLZnJlcXVlbmNpZXMYBCADKAMSNQoKY29zdEdyb3VwcxgFIAMoCzIhLmJsdWVhcGkuYXBpLmNvdmVyLkFsZXJ0Q29zdEdyb3VwEg8KB2RldGFpbHMYBiABKAkSMgoIY2hhbm5lbHMYByABKAsyIC5ibHVlYXBpLmFwaS5jb3Zlci5BbGVydENoYW5uZWxzEgwKBG5hbWUYCCABKAkiJAoiTGlzdERpc2NvdW50RXhwaXJhdGlvbkFsZXJ0UmVxdWVzdCKFAQoZQ3JlYXRlQW5vbWFseUFsZXJ0UmVxdWVzdBIMCgRuYW1lGAEgASgJEhQKDGFsZXJ0RW5hYmxlZBgCIAEoCBIRCglmcmVxdWVuY3kYAyABKAkSEwoLY29zdEdyb3VwSWQYBCABKAkSHAoUbm90aWZpY2F0aW9uQ2hhbm5lbHMYBSADKAkiKwodTWFuaXB1bGF0ZUFub21hbHlBbGVydFJlcXVlc3QSCgoCaWQYASABKAki0AEKEEFub21hbHlBbGVydERhdGESCgoCaWQYASABKAkSDQoFb3JnSWQYAiABKAkSDAoEbmFtZRgDIAEoCRIUCgxhbGVydEVuYWJsZWQYBCABKAgSEQoJZnJlcXVlbmN5GAUgASgJEjYKC2Nvc3RHcm91cElkGAYgASgLMiEuYmx1ZWFwaS5hcGkuY292ZXIuQWxlcnRDb3N0R3JvdXASMgoIY2hhbm5lbHMYByABKAsyIC5ibHVlYXBpLmFwaS5jb3Zlci5BbGVydENoYW5uZWxzIhkKF0xpc3RBbm9tYWx5QWxlcnRSZXF1ZXN0IpEBChlVcGRhdGVBbm9tYWx5QWxlcnRSZXF1ZXN0EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSFAoMYWxlcnRFbmFibGVkGAMgASgIEhwKFG5vdGlmaWNhdGlvbkNoYW5uZWxzGAQgAygJEhEKCWZyZXF1ZW5jeRgFIAEoCRITCgtjb3N0R3JvdXBJZBgGIAEoCSKJAQoWUmVnaXN0ZXJOZXdVc2VyUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCRIMCgRuYW1lGAMgASgJEg8KB2NvbXBhbnkYBCABKAkSDAoEcm9sZRgFIAEoCRIOCgZhbW91bnQYBiABKAkSEQoJaW50ZW50aW9uGAcgASgJIi8KF1JlZ2lzdGVyTmV3VXNlclJlc3BvbnNlEhQKDGlzQXV0aG9yaXplZBgBIAEoCCImChVHZXRVc2VyUHJvZmlsZVJlcXVlc3QSDQoFZW1haWwYASABKAkizgEKFkdldFVzZXJQcm9maWxlUmVzcG9uc2USGQoRaGFzQ3JlYXRlZFByb2ZpbGUYASABKAgSDAoEbmFtZRgCIAEoCRIMCgRyb2xlGAMgASgJEg0KBXVzYWdlGAQgASgJEhEKCWludGVudGlvbhgFIAEoCRITCgtjb21wYW55TmFtZRgGIAEoCRIUCgxlbWFpbEFkZHJlc3MYByABKAkSEgoKbGlua1NvdXJjZRgIIAEoCRIcChRoYXNTdWJzY3JpYmVkVXBkYXRlcxgJIAEoCCKuAQoYVXBkYXRlVXNlclByb2ZpbGVSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEgwKBG5hbWUYAiABKAkSDAoEcm9sZRgDIAEoCRINCgV1c2FnZRgEIAEoCRIRCglpbnRlbnRpb24YBSABKAkSEwoLY29tcGFueU5hbWUYBiABKAkSEgoKbGlua1NvdXJjZRgHIAEoCRIcChRoYXNTdWJzY3JpYmVkVXBkYXRlcxgIIAEoCCKvAQoZVXBkYXRlVXNlclByb2ZpbGVSZXNwb25zZRINCgVlbWFpbBgBIAEoCRIMCgRuYW1lGAIgASgJEgwKBHJvbGUYAyABKAkSDQoFdXNhZ2UYBCABKAkSEQoJaW50ZW50aW9uGAUgASgJEhMKC2NvbXBhbnlOYW1lGAYgASgJEhIKCmxpbmtTb3VyY2UYByABKAkSHAoUaGFzU3Vic2NyaWJlZFVwZGF0ZXMYCCABKAgiSAoSTGlzdEJ1ZGdldHNSZXF1ZXN0Eh8KF2luY2x1ZGVTcGVuZEFuZEZvcmVjYXN0GAEgASgIEhEKCWNvc3RHcm91cBgCIAEoCSJIChNMaXN0QnVkZ2V0c1Jlc3BvbnNlEjEKCmJ1ZGdldERhdGEYASABKAsyHS5ibHVlYXBpLmFwaS5jb3Zlci5CdWRnZXREYXRhIh4KEEdldEJ1ZGdldFJlcXVlc3QSCgoCaWQYASABKAkiRgoRR2V0QnVkZ2V0UmVzcG9uc2USMQoKYnVkZ2V0RGF0YRgBIAEoCzIdLmJsdWVhcGkuYXBpLmNvdmVyLkJ1ZGdldERhdGEiSAoTQ3JlYXRlQnVkZ2V0UmVxdWVzdBIxCgpidWRnZXREYXRhGAEgASgLMh0uYmx1ZWFwaS5hcGkuY292ZXIuQnVkZ2V0RGF0YSJJChRDcmVhdGVCdWRnZXRSZXNwb25zZRIxCgpidWRnZXREYXRhGAEgASgLMh0uYmx1ZWFwaS5hcGkuY292ZXIuQnVkZ2V0RGF0YSIhChNEZWxldGVCdWRnZXRSZXF1ZXN0EgoKAmlkGAEgASgJIiIKFERlbGV0ZUJ1ZGdldFJlc3BvbnNlEgoKAmlkGAEgASgJIlQKE1VwZGF0ZUJ1ZGdldFJlcXVlc3QSCgoCaWQYASABKAkSMQoKYnVkZ2V0RGF0YRgCIAEoCzIdLmJsdWVhcGkuYXBpLmNvdmVyLkJ1ZGdldERhdGEiSQoUVXBkYXRlQnVkZ2V0UmVzcG9uc2USMQoKYnVkZ2V0RGF0YRgBIAEoCzIdLmJsdWVhcGkuYXBpLmNvdmVyLkJ1ZGdldERhdGEiSwouUmVzb2x2ZUFXU01hcmtldHBsYWNlVG9rZW5Gb3JPbmJvYXJkaW5nUmVxdWVzdBIZChFyZWdpc3RyYXRpb25Ub2tlbhgBIAEoCSJhCi9SZXNvbHZlQVdTTWFya2V0cGxhY2VUb2tlbkZvck9uYm9hcmRpbmdSZXNwb25zZRIaChJpc0FsbG93ZWRUb09uYm9hcmQYASABKAgSEgoKY3VzdG9tZXJJZBgCIAEoCSImCiRHZXRDdXN0b21lclN1YnNjcmlwdGlvblN0YXR1c1JlcXVlc3Qi8gEKJUdldEN1c3RvbWVyU3Vic2NyaXB0aW9uU3RhdHVzUmVzcG9uc2USFgoOZGF0ZVJlZ2lzdGVyZWQYASABKAkSGgoSc3Vic2NyaXB0aW9uRXhwaXJ5GAIgASgJEhAKCGRheXNMZWZ0GAMgASgFEhQKDGlzU3Vic2NyaWJlZBgEIAEoCBIRCglpc0V4cGlyZWQYBSABKAgSDAoEcGxhbhgGIAEoCRIOCgZhbW91bnQYByABKAkSFQoNcGF5bWVudE9wdGlvbhgIIAEoCRIVCg1wYXltZW50TWV0aG9kGAkgASgJEg4KBmNyZWRpdBgKIAEoASKzAQoWQ3JlYXRlUHJvZmlsaW5nUmVxdWVzdBIMCgRuYW1lGAEgASgJEgwKBHJvbGUYAiABKAkSDQoFdXNhZ2UYAyABKAkSEQoJaW50ZW50aW9uGAQgASgJEhMKC2NvbXBhbnlOYW1lGAUgASgJEhQKDGVtYWlsQWRkcmVzcxgGIAEoCRISCgpsaW5rU291cmNlGAcgASgJEhwKFGhhc1N1YnNjcmliZWRVcGRhdGVzGAggASgIIhkKF0NyZWF0ZVByb2ZpbGluZ1Jlc3BvbnNlIjkKG0FkZEluZm90b01hcmtldHBsYWNlUmVxdWVzdBIaChJjdXN0b21lcklkZW50aWZpZXIYASABKAkiHgocQWRkSW5mb3RvTWFya2V0cGxhY2VSZXNwb25zZSJ4ChdHZXRSZXBvcnRTdW1tYXJ5UmVxdWVzdBITCgtjb3N0R3JvdXBJZBgBIAEoCRIRCglzdGFydERhdGUYAiABKAkSDwoHZW5kRGF0ZRgDIAEoCRISCgpyZXBvcnRUeXBlGAQgASgJEhAKCGN1cnJlbmN5GAUgASgJIq4CChhHZXRSZXBvcnRTdW1tYXJ5UmVzcG9uc2USEwoLY29zdEdyb3VwSWQYASABKAkSEQoJc3RhcnREYXRlGAIgASgJEg8KB2VuZERhdGUYAyABKAkSPQoQZXhlY3V0aXZlU3VtbWFyeRgEIAEoCzIjLmJsdWVhcGkuYXBpLmNvdmVyLkV4ZWN1dGl2ZVN1bW1hcnkSXwohb3B0aW1pemF0aW9uUmVjb21tZW5kYXRpb25TdW1tYXJ5GAUgASgLMjQuYmx1ZWFwaS5hcGkuY292ZXIuT3B0aW1pemF0aW9uUmVjb21tZW5kYXRpb25TdW1tYXJ5EjkKDnNhdmluZ3NTdW1tYXJ5GAYgASgLMiEuYmx1ZWFwaS5hcGkuY292ZXIuU2F2aW5nc1N1bW1hcnkiqgIKGUxpc3RSZWNvbW1lbmRhdGlvblJlcXVlc3QSEwoLY29zdGdyb3VwSWQYASABKAkSFgoOZGF0ZVJhbmdlU3RhcnQYAiABKAkSFAoMZGF0ZVJhbmdlRW5kGAMgASgJEg4KBnZlbmRvchgEIAEoCRIOCgZzb3VyY2UYBSABKAkSGgoSb3B0aW1pemF0aW9uU3RhdHVzGAcgASgJEgwKBHR5cGUYCCABKAkSDgoGc3BUeXBlGAkgASgJEhEKCXJhdGVNb2RlbBgKIAEoCRIVCg1wYXltZW50T3B0aW9uGAsgASgJEgwKBHRlcm0YDCABKAkSDwoHc2VydmljZRgNIAEoCRIVCg1vZmZlcmluZ0NsYXNzGA4gASgJEhAKCGN1cnJlbmN5GA8gASgJItUCChtMaXN0UmVjb21tZW5kYXRpb25WMlJlcXVlc3QSEwoLY29zdGdyb3VwSWQYASABKAkSFgoOZGF0ZVJhbmdlU3RhcnQYAiABKAkSFAoMZGF0ZVJhbmdlRW5kGAMgASgJElAKDHJhdGVTZXR0aW5ncxgEIAEoCzI6LmJsdWVhcGkuY292ZXIudjEuTGlzdFJlY29tbWVuZGF0aW9uVjJSZXF1ZXN0LlJhdGVTZXR0aW5ncxIQCghjdXJyZW5jeRgFIAEoCRqOAQoMUmF0ZVNldHRpbmdzEg4KBnNwVHlwZRgBIAEoCRIRCglyYXRlTW9kZWwYAiABKAkSFQoNcGF5bWVudE9wdGlvbhgDIAEoCRIMCgR0ZXJtGAQgASgJEg8KB3NlcnZpY2UYBSABKAkSFQoNb2ZmZXJpbmdDbGFzcxgGIAEoCRIOCgZ2ZW5kb3IYByABKAki2gYKGkxpc3RSZWNvbW1lbmRhdGlvblJlc3BvbnNlEhgKEHJlY29tbWVuZGF0aW9uSWQYASABKAkSFgoOcmVjb21tZW5kYXRpb24YAiABKAkSDwoHc2VydmljZRgDIAEoCRIeChZlc3RpbWF0ZWRNb250aGx5U2F2aW5nGAQgASgBEhwKFGVzdGltYXRlZE1vbnRobHlDb3N0GAUgASgBEg8KB3Njb3JpbmcYBiABKAkSDgoGdmVuZG9yGAcgASgJEhAKCGNhdGVnb3J5GAggASgJEhoKEm9wdGltaXphdGlvblN0YXR1cxgJIAEoCRIUCgxlcnJvck1lc3NhZ2UYCiABKAkSEQoJYWNjb3VudElkGAsgASgJEhMKC2FjY291bnROYW1lGAwgASgJEhQKDGluc3RhbmNlTmFtZRgNIAEoCRISCgppbnN0YW5jZUlkGA4gASgJEhQKDGluc3RhbmNlVHlwZRgPIAEoCRIOCgZyZWdpb24YECABKAkSEgoKY29tbWl0bWVudBgRIAEoARIOCgZzcFR5cGUYEiABKAkSGAoQbnVtYmVyVG9QdXJjaGFzZRgTIAEoAxIOCgZyaVR5cGUYFCABKAkSDAoEdHlwZRgVIAEoCRIOCgZzb3VyY2UYFiABKAkSFwoPZGF0ZVJlY29tbWVuZGVkGBcgASgJEhsKE3JlY29tbWVuZGF0aW9uR3JvdXAYGCABKAkSFQoNbGFzdFVwZGF0ZWRBdBgZIAEoCRJTCg5wdXJjaGFzZU9wdGlvbhgaIAEoCzI7LmJsdWVhcGkuY292ZXIudjEuTGlzdFJlY29tbWVuZGF0aW9uUmVzcG9uc2UuUHVyY2hhc2VPcHRpb24azwEKDlB1cmNoYXNlT3B0aW9uEg4KBnNwVHlwZRgBIAEoCRIVCg1vZmZlcmluZ0NsYXNzGAIgASgJEhIKCmNvbW1pdG1lbnQYAyABKAESGAoQbnVtYmVyVG9QdXJjaGFzZRgEIAEoAxIVCg1wYXltZW50T3B0aW9uGAUgASgJEgwKBHRlcm0YBiABKAkSGQoRY3VycmVudEdlbmVyYXRpb24YByABKAgSEwoLc2VydmljZVR5cGUYCCABKAkSEwoLdXBmcm9udENvc3QYCSABKAEiUQoYR2V0UmVjb21tZW5kYXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJEhMKC2Nvc3RHcm91cElkGAIgASgJEhQKDHBlcmlvZE9wdGlvbhgDIAEoCSJeChlHZXRSZWNvbW1lbmRhdGlvblJlc3BvbnNlEkEKEnJlY29tbWVuZGF0aW9uRGF0YRgBIAEoCzIlLmJsdWVhcGkuYXBpLmNvdmVyLkFXU1JlY29tbWVuZGF0aW9ucyJEChpFeGVjdXRlT3B0aW1pemF0aW9uUmVxdWVzdBIYChByZWNvbW1lbmRhdGlvbklkGAEgASgJEgwKBHR5cGUYAiABKAkilAMKG0V4ZWN1dGVPcHRpbWl6YXRpb25SZXNwb25zZRJMCglhd3NPcHRpb24YASABKAsyNy5ibHVlYXBpLmNvdmVyLnYxLkV4ZWN1dGVPcHRpbWl6YXRpb25SZXNwb25zZS5BV1NPcHRpb25IABJMCglnY3BPcHRpb24YAiABKAsyNy5ibHVlYXBpLmNvdmVyLnYxLkV4ZWN1dGVPcHRpbWl6YXRpb25SZXNwb25zZS5HQ1BPcHRpb25IABJWCg5henVyZUNzcE9wdGlvbhgDIAEoCzI8LmJsdWVhcGkuY292ZXIudjEuRXhlY3V0ZU9wdGltaXphdGlvblJlc3BvbnNlLkF6dXJlQ1NQT3B0aW9uSAAaWAoJQVdTT3B0aW9uEhoKEmFwcHJvdmVUZW1wbGF0ZVVybBgBIAEoCRIYChByZWNvbW1lbmRhdGlvbklkGAIgASgJEhUKDWN1cnJlbnRTdGF0dXMYAyABKAkaCwoJR0NQT3B0aW9uGhAKDkF6dXJlQ1NQT3B0aW9uQggKBlZlbmRvciIjChVNYXJrQXNFeGVjdXRlZFJlcXVlc3QSCgoCaWQYASADKAkiGAoWTWFya0FzRXhlY3V0ZWRSZXNwb25zZSIvCiFVbmRvRXhlY3V0ZWRSZWNvbW1lbmRhdGlvblJlcXVlc3QSCgoCaWQYASADKAkiJAoiVW5kb0V4ZWN1dGVkUmVjb21tZW5kYXRpb25SZXNwb25zZSKnAQoaT3B0aW1pemF0aW9uSGlzdG9yeVJlcXVlc3QSEwoLY29zdGdyb3VwSWQYASABKAkSFgoOZGF0ZVJhbmdlU3RhcnQYAiABKAkSFAoMZGF0ZVJhbmdlRW5kGAMgASgJEg4KBnZlbmRvchgEIAEoCRIOCgZzb3VyY2UYBSABKAkSFAoMcGVyaW9kT3B0aW9uGAYgASgJEhAKCGN1cnJlbmN5GAcgASgJInYKG09wdGltaXphdGlvbkhpc3RvcnlSZXNwb25zZRJXCh1leGVjdXRlZFJlY29tbWVuZGF0aW9uRGV0YWlscxgCIAMoCzIwLmJsdWVhcGkuYXBpLmNvdmVyLkV4ZWN1dGVkUmVjb21tZW5kYXRpb25EZXRhaWxzImAKIVNldENvc3RHcm91cEV2ZW50SW5kaWNhdG9yUmVxdWVzdBITCgtjb3N0R3JvdXBJZBgBIAEoCRIPCgdhbm9tYWx5GAIgASgIEhUKDXZpc3VhbEJ1aWxkZXIYAyABKAgidAoiU2V0Q29zdEdyb3VwRXZlbnRJbmRpY2F0b3JSZXNwb25zZRITCgtjb3N0R3JvdXBJZBgBIAEoCRI5Cg5ldmVudEluZGljYXRvchgCIAEoCzIhLmJsdWVhcGkuYXBpLmNvdmVyLkV2ZW50SW5kaWNhdG9yInsKIVNldENvc3RHcm91cEFub21hbHlPcHRpb25zUmVxdWVzdBITCgtjb3N0R3JvdXBJZBgBIAEoCRIRCgl0aHJlc2hvbGQYAiABKAISFAoMaXNQZXJjZW50YWdlGAMgASgIEhgKEHBhc3REYXRhSW5Nb250aHMYBCABKAMidAoiU2V0Q29zdEdyb3VwQW5vbWFseU9wdGlvbnNSZXNwb25zZRITCgtjb3N0R3JvdXBJZBgBIAEoCRI5Cg5hbm9tYWx5T3B0aW9ucxgCIAEoCzIhLmJsdWVhcGkuYXBpLmNvdmVyLkFub21hbHlPcHRpb25zIi8KGFNldE9yZ0Zpc2NhbE1vbnRoUmVxdWVzdBITCgtmaXNjYWxNb250aBgBIAEoCSIwChlTZXRPcmdGaXNjYWxNb250aFJlc3BvbnNlEhMKC2Zpc2NhbE1vbnRoGAEgASgJIhoKGEdldE9yZ0Zpc2NhbE1vbnRoUmVxdWVzdCJIChlHZXRPcmdGaXNjYWxNb250aFJlc3BvbnNlEhMKC2Zpc2NhbE1vbnRoGAEgASgJEhYKDmRhdGVSZWdpc3RlcmVkGAIgASgJIlsKG1RyYW5zZmVyT3JnYW5pemF0aW9uUmVxdWVzdBIOCgZ0YXJnZXQYASABKAkSDgoGcmVnaW9uGAIgASgJEg0KBXBheWVyGAMgASgJEg0KBW9yZ0lkGAQgASgJIi4KHFRyYW5zZmVyT3JnYW5pemF0aW9uUmVzcG9uc2USDgoGdGFyZ2V0GAEgASgJIkUKIFVwZGF0ZUNvc3RHcm91cENyZWF0aW9uVUlSZXF1ZXN0EiEKGXVzZU5ld0Nvc3RHcm91cENyZWF0aW9uVUkYASABKAgiUgohVXBkYXRlQ29zdEdyb3VwQ3JlYXRpb25VSVJlc3BvbnNlEi0KCHVzZXJEYXRhGAEgASgLMhsuYmx1ZWFwaS5hcGkuY292ZXIuVXNlckRhdGEiFgoUTGlzdFVuaXRUeXBlc1JlcXVlc3QiTgoVTGlzdFVuaXRUeXBlc1Jlc3BvbnNlEjUKDHVuaXRDb3N0RGF0YRgBIAMoCzIfLmJsdWVhcGkuYXBpLmNvdmVyLlVuaXRDb3N0RGF0YSK2AQoVQ3JlYXRlVW5pdFR5cGVSZXF1ZXN0EhAKCHVuaXROYW1lGAEgASgJEi4KCXVuaXRJdGVtcxgCIAMoCzIbLmJsdWVhcGkuYXBpLmNvdmVyLlVuaXRJdGVtEkYKD3NoYXJlZFJlc291cmNlcxgDIAMoCzItLmJsdWVhcGkuYXBpLmNvdmVyLlNoYXJlZFJlc291cmNlc0NvbWJpbmF0aW9uEhMKC2Rlc2NyaXB0aW9uGAQgASgJIk8KFkNyZWF0ZVVuaXRUeXBlUmVzcG9uc2USNQoMdW5pdENvc3REYXRhGAEgASgLMh8uYmx1ZWFwaS5hcGkuY292ZXIuVW5pdENvc3REYXRhIiAKEkdldFVuaXRUeXBlUmVxdWVzdBIKCgJpZBgBIAEoCSJMChNHZXRVbml0VHlwZVJlc3BvbnNlEjUKDHVuaXRDb3N0RGF0YRgBIAEoCzIfLmJsdWVhcGkuYXBpLmNvdmVyLlVuaXRDb3N0RGF0YSLCAQoVVXBkYXRlVW5pdFR5cGVSZXF1ZXN0EgoKAmlkGAEgASgJEhAKCHVuaXROYW1lGAIgASgJEi4KCXVuaXRJdGVtcxgDIAMoCzIbLmJsdWVhcGkuYXBpLmNvdmVyLlVuaXRJdGVtEkYKD3NoYXJlZFJlc291cmNlcxgEIAMoCzItLmJsdWVhcGkuYXBpLmNvdmVyLlNoYXJlZFJlc291cmNlc0NvbWJpbmF0aW9uEhMKC2Rlc2NyaXB0aW9uGAUgASgJIk8KFlVwZGF0ZVVuaXRUeXBlUmVzcG9uc2USNQoMdW5pdENvc3REYXRhGAEgASgLMh8uYmx1ZWFwaS5hcGkuY292ZXIuVW5pdENvc3REYXRhIiMKFURlbGV0ZVVuaXRUeXBlUmVxdWVzdBIKCgJpZBgBIAEoCSIkChZEZWxldGVVbml0VHlwZVJlc3BvbnNlEgoKAmlkGAEgASgJIk8KEU1lcmdlVW5pdHNSZXF1ZXN0EhMKC3VuaXRDb3N0SWRzGAEgAygJEhAKCHVuaXROYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJIk0KEk1lcmdlVW5pdHNSZXNwb25zZRI3Cg5tZXJnZWRVbml0Q29zdBgBIAEoCzIfLmJsdWVhcGkuYXBpLmNvdmVyLlVuaXRDb3N0RGF0YSIbChlMaXN0U3VnZ2VzdGVkVW5pdHNSZXF1ZXN0IlYKGkxpc3RTdWdnZXN0ZWRVbml0c1Jlc3BvbnNlEjgKDnN1Z2dlc3RlZFVuaXRzGAEgAygLMiAuYmx1ZWFwaS5hcGkuY292ZXIuU3VnZ2VzdGVkVW5pdCJyChpNZXJnZVN1Z2dlc3RlZFVuaXRzUmVxdWVzdBIYChBzdWdnZXN0ZWRVbml0SWRzGAEgAygJEhMKC3VuaXRJdGVtSWRzGAIgAygJEhAKCHVuaXROYW1lGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJIl0KG01lcmdlU3VnZ2VzdGVkVW5pdHNSZXNwb25zZRI+ChRtZXJnZWRTdWdnZXN0ZWRVbml0cxgBIAEoCzIgLmJsdWVhcGkuYXBpLmNvdmVyLlN1Z2dlc3RlZFVuaXQiOgoeQ3JlYXRlVW5pdEZyb21TdWdnZXN0ZWRSZXF1ZXN0EhgKEHN1Z2dlc3RlZFVuaXRJZHMYASADKAkiNgofQ3JlYXRlVW5pdEZyb21TdWdnZXN0ZWRSZXNwb25zZRITCgt1bml0Q29zdElkcxgBIAMoCSIcChpMaXN0U2hhcmVkUmVzb3VyY2VzUmVxdWVzdCJlChtMaXN0U2hhcmVkUmVzb3VyY2VzUmVzcG9uc2USRgoPc2hhcmVkUmVzb3VyY2VzGAEgAygLMi0uYmx1ZWFwaS5hcGkuY292ZXIuU2hhcmVkUmVzb3VyY2VzQ29tYmluYXRpb24i0wIKHENyZWF0ZVNoYXJlZFJlc291cmNlc1JlcXVlc3QSGgoSc2hhcmVkUmVzb3VyY2VOYW1lGAEgASgJEk0KG3NoYXJlZFJlc291cmNlc0NvbWJpbmF0aW9ucxgCIAEoCzIoLmJsdWVhcGkuYXBpLmNvdmVyLlJlc291cmNlc0NvbWJpbmF0aW9ucxJWCgxkaXN0cmlidXRpb24YAyADKAsyQC5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZVNoYXJlZFJlc291cmNlc1JlcXVlc3QuRGlzdHJpYnV0aW9uRW50cnkSEQoJYWxsb2NhdGVkGAQgASgBEhMKC3VuYWxsb2NhdGVkGAUgASgBEhMKC2Rlc2NyaXB0aW9uGAYgASgJGjMKEURpc3RyaWJ1dGlvbkVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoAToCOAEiZwodQ3JlYXRlU2hhcmVkUmVzb3VyY2VzUmVzcG9uc2USRgoPc2hhcmVkUmVzb3VyY2VzGAEgASgLMi0uYmx1ZWFwaS5hcGkuY292ZXIuU2hhcmVkUmVzb3VyY2VzQ29tYmluYXRpb24iJwoZR2V0U2hhcmVkUmVzb3VyY2VzUmVxdWVzdBIKCgJpZBgBIAEoCSJkChpHZXRTaGFyZWRSZXNvdXJjZXNSZXNwb25zZRJGCg9zaGFyZWRSZXNvdXJjZXMYASABKAsyLS5ibHVlYXBpLmFwaS5jb3Zlci5TaGFyZWRSZXNvdXJjZXNDb21iaW5hdGlvbiLfAgocVXBkYXRlU2hhcmVkUmVzb3VyY2VzUmVxdWVzdBIKCgJpZBgBIAEoCRIaChJzaGFyZWRSZXNvdXJjZU5hbWUYAiABKAkSTQobc2hhcmVkUmVzb3VyY2VzQ29tYmluYXRpb25zGAMgASgLMiguYmx1ZWFwaS5hcGkuY292ZXIuUmVzb3VyY2VzQ29tYmluYXRpb25zElYKDGRpc3RyaWJ1dGlvbhgEIAMoCzJALmJsdWVhcGkuY292ZXIudjEuVXBkYXRlU2hhcmVkUmVzb3VyY2VzUmVxdWVzdC5EaXN0cmlidXRpb25FbnRyeRIRCglhbGxvY2F0ZWQYBSABKAESEwoLdW5hbGxvY2F0ZWQYBiABKAESEwoLZGVzY3JpcHRpb24YByABKAkaMwoRRGlzdHJpYnV0aW9uRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgBOgI4ASJnCh1VcGRhdGVTaGFyZWRSZXNvdXJjZXNSZXNwb25zZRJGCg9zaGFyZWRSZXNvdXJjZXMYASABKAsyLS5ibHVlYXBpLmFwaS5jb3Zlci5TaGFyZWRSZXNvdXJjZXNDb21iaW5hdGlvbiIqChxEZWxldGVTaGFyZWRSZXNvdXJjZXNSZXF1ZXN0EgoKAmlkGAEgASgJIisKHURlbGV0ZVNoYXJlZFJlc291cmNlc1Jlc3BvbnNlEgoKAmlkGAEgASgJIlcKFkxpc3RVbml0TWV0cmljc1JlcXVlc3QSGQoRYWdncmVnYXRpb25NZXRob2QYASABKAkSEgoKZGF0YVNvdXJjZRgCIAEoCRIOCgZzdGF0dXMYAyABKAkiTQoXTGlzdFVuaXRNZXRyaWNzUmVzcG9uc2USMgoLdW5pdE1ldHJpY3MYASADKAsyHS5ibHVlYXBpLmFwaS5jb3Zlci5Vbml0TWV0cmljIrkBChdDcmVhdGVVbml0TWV0cmljUmVxdWVzdBISCgptZXRyaWNOYW1lGAEgASgJEhkKEWFnZ3JlZ2F0aW9uTWV0aG9kGAIgASgJEhIKCmRhdGFTb3VyY2UYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkSEwoLY29zdGdyb3VwSWQYBSADKAkSMQoKc291cmNlSW5mbxgGIAEoCzIdLmJsdWVhcGkuYXBpLmNvdmVyLlNvdXJjZUluZm8iTQoYQ3JlYXRlVW5pdE1ldHJpY1Jlc3BvbnNlEjEKCnVuaXRNZXRyaWMYASABKAsyHS5ibHVlYXBpLmFwaS5jb3Zlci5Vbml0TWV0cmljIiIKFEdldFVuaXRNZXRyaWNSZXF1ZXN0EgoKAmlkGAEgASgJIkoKFUdldFVuaXRNZXRyaWNSZXNwb25zZRIxCgp1bml0TWV0cmljGAEgASgLMh0uYmx1ZWFwaS5hcGkuY292ZXIuVW5pdE1ldHJpYyLFAQoXVXBkYXRlVW5pdE1ldHJpY1JlcXVlc3QSCgoCaWQYASABKAkSEgoKbWV0cmljTmFtZRgCIAEoCRIZChFhZ2dyZWdhdGlvbk1ldGhvZBgDIAEoCRISCgpkYXRhU291cmNlGAQgASgJEhMKC2Rlc2NyaXB0aW9uGAUgASgJEhMKC2Nvc3Rncm91cElkGAYgAygJEjEKCnNvdXJjZUluZm8YByABKAsyHS5ibHVlYXBpLmFwaS5jb3Zlci5Tb3VyY2VJbmZvIk0KGFVwZGF0ZVVuaXRNZXRyaWNSZXNwb25zZRIxCgp1bml0TWV0cmljGAEgASgLMh0uYmx1ZWFwaS5hcGkuY292ZXIuVW5pdE1ldHJpYyIlChdEZWxldGVVbml0TWV0cmljUmVxdWVzdBIKCgJpZBgBIAEoCSImChhEZWxldGVVbml0TWV0cmljUmVzcG9uc2USCgoCaWQYASABKAkiZgoZUHJldmlld0dvb2dsZVNoZWV0UmVxdWVzdBIVCg1nb29nbGVTaGVldElkGAEgASgJEhAKCHNoZWV0VXJsGAIgASgJEhEKCXNoZWV0TmFtZRgDIAEoCRINCgVyYW5nZRgEIAEoCSJZChpQcmV2aWV3R29vZ2xlU2hlZXRSZXNwb25zZRIOCgZoZWFkZXIYASADKAkSKwoHcm93RGF0YRgCIAMoCzIaLmJsdWVhcGkuYXBpLmNvdmVyLlJvd0RhdGEiMwofQ29uZmlybUdvb2dsZVNoZWV0QWNjZXNzUmVxdWVzdBIQCghzaGVldFVybBgBIAEoCSJNCiBDb25maXJtR29vZ2xlU2hlZXRBY2Nlc3NSZXNwb25zZRIVCg1nb29nbGVTaGVldElkGAEgASgJEhIKCnNoZWV0TmFtZXMYAiADKAkidgocR2V0Q2xvdWR3YXRjaE1ldGFkYXRhUmVxdWVzdBIRCglhY2NvdW50SWQYASABKAkSDgoGcmVnaW9uGAIgASgJEgwKBHR5cGUYAyABKAkSEQoJbmFtZXNwYWNlGAQgASgJEhIKCm1ldHJpY05hbWUYBSABKAkivgEKHUdldENsb3Vkd2F0Y2hNZXRhZGF0YVJlc3BvbnNlEhIKCm5hbWVzcGFjZXMYASADKAkSDwoHbWV0cmljcxgCIAMoCRJNCgpkaW1lbnNpb25zGAMgAygLMjkuYmx1ZWFwaS5jb3Zlci52MS5HZXRDbG91ZHdhdGNoTWV0YWRhdGFSZXNwb25zZS5EaW1lbnNpb24aKQoJRGltZW5zaW9uEgwKBG5hbWUYASABKAkSDgoGdmFsdWVzGAIgAygJIoECChZHZXREaXNjb3VudFBsYW5SZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVvcmdJZBgCIAEoCRIYChByZWR1Y3Rpb25EaXNwbGF5GAMgASgJEhYKDmluY2x1ZGVEZXRhaWxzGAQgASgIEhAKCGZyb21EYXRlGAUgASgJEg4KBnRvRGF0ZRgGIAEoCRIPCgdwYXllcklkGAcgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAggASgJEg8KB2dyb3VwSWQYCSABKAkSEwoLY29zdEdyb3VwSWQYCiABKAkSEAoIYWNjb3VudHMYCyADKAkSEAoIc2VydmljZXMYDCADKAkiZwoXR2V0RGlzY291bnRQbGFuUmVzcG9uc2USDQoFb3JnSWQYASABKAkSPQoQYXdzRGlzY291bnRQbGFucxgCIAEoCzIjLmJsdWVhcGkuYXBpLmNvdmVyLkF3c0Rpc2NvdW50UGxhbnMicwocTGlzdE5vbnBlcmZvcm1pbmdSYXRlUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSEwoLY29zdEdyb3VwSWQYAiABKAkSEAoIZnJvbURhdGUYAyABKAkSDgoGdG9EYXRlGAQgASgJEgwKBHR5cGUYBSABKAkiyQEKHUxpc3ROb25wZXJmb3JtaW5nUmF0ZVJlc3BvbnNlElQKDW5vbnBlcmZvcm1pbmcYASADKAsyPS5ibHVlYXBpLmNvdmVyLnYxLkxpc3ROb25wZXJmb3JtaW5nUmF0ZVJlc3BvbnNlLk5vbnBlcmZvcm1pbmcaUgoNTm9ucGVyZm9ybWluZxIMCgR0eXBlGAEgASgJEg8KB2FjY291bnQYAiABKAkSEwoLdXRpbGl6YXRpb24YAyABKAESDQoFd2FzdGUYBCABKAEidAocTGlzdFVudGFnZ2VkUmVzb3VyY2VzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSEwoLY29zdEdyb3VwSWQYAiABKAkSEAoIZnJvbURhdGUYAyABKAkSDgoGdG9EYXRlGAQgASgJEg0KBWxpbWl0GAUgASgDIvkBCh1MaXN0VW50YWdnZWRSZXNvdXJjZXNSZXNwb25zZRJcChF1bnRhZ2dlZFJlc291cmNlcxgBIAMoCzJBLmJsdWVhcGkuY292ZXIudjEuTGlzdFVudGFnZ2VkUmVzb3VyY2VzUmVzcG9uc2UuVW50YWdnZWRSZXNvdXJjZXMaegoRVW50YWdnZWRSZXNvdXJjZXMSEAoIcmVzb3VyY2UYASABKAkSDwoHc2VydmljZRgCIAEoCRIRCglhY2NvdW50SWQYAyABKAkSEQoJY29zdEdyb3VwGAQgASgJEgwKBGNvc3QYBSABKAESDgoGdmVuZG9yGAYgASgJKj8KBlN0YXR1cxILCgdQRU5ESU5HEAASDwoLSU5fUFJPR1JFU1MQARILCgdTVUNDRVNTEAISCgoGRkFJTEVEEAMy5uIBCgVDb3ZlchJ3CgpPbmJvYXJkT3JnEiMuYmx1ZWFwaS5jb3Zlci52MS5PbmJvYXJkT3JnUmVxdWVzdBokLmJsdWVhcGkuY292ZXIudjEuT25ib2FyZE9yZ1Jlc3BvbnNlIh6C0+STAhg6ASoiEy92MS9tZW1iZXJzL29uYm9hcmQSfwoMSW52aXRlTWVtYmVyEiUuYmx1ZWFwaS5jb3Zlci52MS5JbnZpdGVNZW1iZXJSZXF1ZXN0GiYuYmx1ZWFwaS5jb3Zlci52MS5JbnZpdGVNZW1iZXJSZXNwb25zZSIgiAIBgtPkkwIXOgEqIhIvdjEvbWVtYmVycy9pbnZpdGUSfgoMQWN0aXZhdGVVc2VyEiUuYmx1ZWFwaS5jb3Zlci52MS5BY3RpdmF0ZVVzZXJSZXF1ZXN0GiYuYmx1ZWFwaS5jb3Zlci52MS5BY3RpdmF0ZVVzZXJSZXNwb25zZSIfgtPkkwIZOgEqIhQvdjEvbWVtYmVycy9hY3RpdmF0ZRJ1CgxDcmVhdGVNZW1iZXISJS5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZU1lbWJlclJlcXVlc3QaJi5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZU1lbWJlclJlc3BvbnNlIhaC0+STAhA6ASoiCy92MS9tZW1iZXJzEm8KCkdldE1lbWJlcnMSIy5ibHVlYXBpLmNvdmVyLnYxLkdldE1lbWJlcnNSZXF1ZXN0GiQuYmx1ZWFwaS5jb3Zlci52MS5HZXRNZW1iZXJzUmVzcG9uc2UiFogCAYLT5JMCDRILL3YxL21lbWJlcnMSigEKEEdldE1lbWJlckRldGFpbHMSKS5ibHVlYXBpLmNvdmVyLnYxLkdldE1lbWJlckRldGFpbHNSZXF1ZXN0GiouYmx1ZWFwaS5jb3Zlci52MS5HZXRNZW1iZXJEZXRhaWxzUmVzcG9uc2UiH4gCAYLT5JMCFhIUL3YxL21lbWJlcnMve3VzZXJJZH0SmgEKEkdldE1lbWJlckNvc3RHcm91cBIrLmJsdWVhcGkuY292ZXIudjEuR2V0TWVtYmVyQ29zdEdyb3VwUmVxdWVzdBosLmJsdWVhcGkuY292ZXIudjEuR2V0TWVtYmVyQ29zdEdyb3VwUmVzcG9uc2UiKYgCAYLT5JMCIBIeL3YxL21lbWJlcnMve3VzZXJJZH0vY29zdGdyb3VwEqcBChZVcGRhdGVNZW1iZXJQZXJtaXNzaW9uEi8uYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVNZW1iZXJQZXJtaXNzaW9uUmVxdWVzdBowLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlTWVtYmVyUGVybWlzc2lvblJlc3BvbnNlIiqIAgGC0+STAiE6ASoaHC92MS9tZW1iZXJzL3t1c2VySWR9L2lzYWRtaW4ScwoOR2V0VXNlckRldGFpbHMSJy5ibHVlYXBpLmNvdmVyLnYxLkdldFVzZXJEZXRhaWxzUmVxdWVzdBooLmJsdWVhcGkuY292ZXIudjEuR2V0VXNlckRldGFpbHNSZXNwb25zZSIOgtPkkwIIEgYvdjEvbWUSgwEKEFVwZGF0ZVVzZXJBdmF0YXISKS5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVzZXJBdmF0YXJSZXF1ZXN0GiouYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVVc2VyQXZhdGFyUmVzcG9uc2UiGILT5JMCEjoBKhoNL3YxL21lL2F2YXRhchJ7Cg5VcGRhdGVVc2VySWNvbhInLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVXNlckljb25SZXF1ZXN0GiguYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVVc2VySWNvblJlc3BvbnNlIhaC0+STAhA6ASoaCy92MS9tZS9pY29uEpMBChRVcGRhdGVVc2VyQ29sb3JUaGVtZRItLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVXNlckNvbG9yVGhlbWVSZXF1ZXN0Gi4uYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVVc2VyQ29sb3JUaGVtZVJlc3BvbnNlIhyC0+STAhY6ASoaES92MS9tZS9jb2xvcnRoZW1lEnsKDlVwZGF0ZVVzZXJOYW1lEicuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVVc2VyTmFtZVJlcXVlc3QaKC5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVzZXJOYW1lUmVzcG9uc2UiFoLT5JMCEDoBKhoLL3YxL21lL25hbWUSfwoPVXBkYXRlVXNlckVtYWlsEiguYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVVc2VyRW1haWxSZXF1ZXN0GikuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVVc2VyRW1haWxSZXNwb25zZSIXgtPkkwIROgEqGgwvdjEvbWUvZW1haWwSiwEKElVwZGF0ZVVzZXJNYWluVmlldxIrLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVXNlck1haW5WaWV3UmVxdWVzdBosLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVXNlck1haW5WaWV3UmVzcG9uc2UiGoLT5JMCFDoBKhoPL3YxL21lL21haW52aWV3EogBChFSZXNldFVzZXJQYXNzd29yZBIqLmJsdWVhcGkuY292ZXIudjEuUmVzZXRVc2VyUGFzc3dvcmRSZXF1ZXN0GisuYmx1ZWFwaS5jb3Zlci52MS5SZXNldFVzZXJQYXNzd29yZFJlc3BvbnNlIhqC0+STAhQ6ASoiDy92MS9tZS9wYXNzd29yZBKDAQoQVXBkYXRlVXNlckxvY2FsZRIpLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVXNlckxvY2FsZVJlcXVlc3QaKi5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVzZXJMb2NhbGVSZXNwb25zZSIYgtPkkwISOgEqGg0vdjEvbWUvbG9jYWxlEosBChJVcGRhdGVVc2VyQXBwVGhlbWUSKy5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVzZXJBcHBUaGVtZVJlcXVlc3QaLC5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVzZXJBcHBUaGVtZVJlc3BvbnNlIhqC0+STAhQ6ASoaDy92MS9tZS9hcHB0aGVtZRKLAQoSVXBkYXRlVXNlclRpbWV6b25lEisuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVVc2VyVGltZXpvbmVSZXF1ZXN0GiwuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVVc2VyVGltZXpvbmVSZXNwb25zZSIagtPkkwIUOgEqGg8vdjEvbWUvdGltZXpvbmUSkwEKFFVwZGF0ZVVzZXJBdHRyaWJ1dGVzEi0uYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVVc2VyQXR0cmlidXRlc1JlcXVlc3QaLi5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVzZXJBdHRyaWJ1dGVzUmVzcG9uc2UiHILT5JMCFjoBKhoRL3YxL21lL2F0dHJpYnV0ZXMSewoMRGVsZXRlTWVtYmVyEiUuYmx1ZWFwaS5jb3Zlci52MS5EZWxldGVNZW1iZXJSZXF1ZXN0GiYuYmx1ZWFwaS5jb3Zlci52MS5EZWxldGVNZW1iZXJSZXNwb25zZSIcgtPkkwIWKhQvdjEvbWVtYmVycy97dXNlcklkfRKGAQoNUmVzZXRQYXNzd29yZBImLmJsdWVhcGkuY292ZXIudjEuUmVzZXRQYXNzd29yZFJlcXVlc3QaJy5ibHVlYXBpLmNvdmVyLnYxLlJlc2V0UGFzc3dvcmRSZXNwb25zZSIkgtPkkwIeOgEqIhkvdjEvbWVtYmVycy9yZXNldHBhc3N3b3JkEm0KCkNyZWF0ZVZpZXcSIy5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZVZpZXdSZXF1ZXN0GiQuYmx1ZWFwaS5jb3Zlci52MS5DcmVhdGVWaWV3UmVzcG9uc2UiFILT5JMCDjoBKiIJL3YxL3ZpZXdzEmQKCEdldFZpZXdzEiEuYmx1ZWFwaS5jb3Zlci52MS5HZXRWaWV3c1JlcXVlc3QaIi5ibHVlYXBpLmNvdmVyLnYxLkdldFZpZXdzUmVzcG9uc2UiEYLT5JMCCxIJL3YxL3ZpZXdzEn8KDkdldEN1cnJlbnRWaWV3EicuYmx1ZWFwaS5jb3Zlci52MS5HZXRDdXJyZW50Vmlld1JlcXVlc3QaKC5ibHVlYXBpLmNvdmVyLnYxLkdldEN1cnJlbnRWaWV3UmVzcG9uc2UiGoLT5JMCFBISL3YxL3ZpZXdzL3t2aWV3SWR9EoYBChBHZXRGYXZvcml0ZVZpZXdzEikuYmx1ZWFwaS5jb3Zlci52MS5HZXRGYXZvcml0ZVZpZXdzUmVxdWVzdBoqLmJsdWVhcGkuY292ZXIudjEuR2V0RmF2b3JpdGVWaWV3c1Jlc3BvbnNlIhuC0+STAhUSEy92MS92aWV3cy9mYXZvcml0ZXMSeAoLUHVibGlzaFZpZXcSJC5ibHVlYXBpLmNvdmVyLnYxLlB1Ymxpc2hWaWV3UmVxdWVzdBolLmJsdWVhcGkuY292ZXIudjEuUHVibGlzaFZpZXdSZXNwb25zZSIcgtPkkwIWOgEqIhEvdjEvdmlld3MvcHVibGlzaBJ9CgtBZGRGYXZvcml0ZRIkLmJsdWVhcGkuY292ZXIudjEuQWRkRmF2b3JpdGVSZXF1ZXN0GiUuYmx1ZWFwaS5jb3Zlci52MS5BZGRGYXZvcml0ZVJlc3BvbnNlIiGC0+STAhs6ASoaFi92MS92aWV3cy9mYXZvcml0ZS9hZGQSiQEKDlJlbW92ZUZhdm9yaXRlEicuYmx1ZWFwaS5jb3Zlci52MS5SZW1vdmVGYXZvcml0ZVJlcXVlc3QaKC5ibHVlYXBpLmNvdmVyLnYxLlJlbW92ZUZhdm9yaXRlUmVzcG9uc2UiJILT5JMCHjoBKhoZL3YxL3ZpZXdzL2Zhdm9yaXRlL3JlbW92ZRJ2CgpVcGRhdGVWaWV3EiMuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVWaWV3UmVxdWVzdBokLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVmlld1Jlc3BvbnNlIh2C0+STAhc6ASoaEi92MS92aWV3cy97dmlld0lkfRKPAQoQVXBkYXRlVmlld0xheW91dBIpLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVmlld0xheW91dFJlcXVlc3QaKi5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVZpZXdMYXlvdXRSZXNwb25zZSIkgtPkkwIeOgEqGhkvdjEvdmlld3MvbGF5b3V0L3t2aWV3SWR9EpoBChBVcGRhdGVWaWV3V2lkZ2V0EikuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVWaWV3V2lkZ2V0UmVxdWVzdBoqLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVmlld1dpZGdldFJlc3BvbnNlIi+C0+STAik6ASoaJC92MS92aWV3cy9sYXlvdXQve3ZpZXdJZH0ve3dpZGdldElkfRKfAQoUVXBkYXRlVmlld0NvbG9yVGhlbWUSLS5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVZpZXdDb2xvclRoZW1lUmVxdWVzdBouLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVmlld0NvbG9yVGhlbWVSZXNwb25zZSIogtPkkwIiOgEqGh0vdjEvdmlld3Mve3ZpZXdJZH0vY29sb3J0aGVtZRKXAQoSVXBkYXRlVmlld0N1cnJlbmN5EisuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVWaWV3Q3VycmVuY3lSZXF1ZXN0GiwuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVWaWV3Q3VycmVuY3lSZXNwb25zZSImgtPkkwIgOgEqGhsvdjEvdmlld3Mve3ZpZXdJZH0vY3VycmVuY3kSnAEKFFNldE9yZ1VwZGF0ZUN1cnJlbmN5Ei0uYmx1ZWFwaS5jb3Zlci52MS5TZXRPcmdVcGRhdGVDdXJyZW5jeVJlcXVlc3QaLi5ibHVlYXBpLmNvdmVyLnYxLlNldE9yZ1VwZGF0ZUN1cnJlbmN5UmVzcG9uc2UiJYLT5JMCHzoBKiIaL3YxL29yZ2FuaXphdGlvbnMvY3VycmVuY3kSmQEKFEdldE9yZ1VwZGF0ZUN1cnJlbmN5Ei0uYmx1ZWFwaS5jb3Zlci52MS5HZXRPcmdVcGRhdGVDdXJyZW5jeVJlcXVlc3QaLi5ibHVlYXBpLmNvdmVyLnYxLkdldE9yZ1VwZGF0ZUN1cnJlbmN5UmVzcG9uc2UiIoLT5JMCHBIaL3YxL29yZ2FuaXphdGlvbnMvY3VycmVuY3kSjQEKEUxpc3RFeGNoYW5nZVJhdGVzEiouYmx1ZWFwaS5jb3Zlci52MS5MaXN0RXhjaGFuZ2VSYXRlc1JlcXVlc3QaKy5ibHVlYXBpLmNvdmVyLnYxLkxpc3RFeGNoYW5nZVJhdGVzUmVzcG9uc2UiH4LT5JMCGRIXL3YxL29yZ2FuaXphdGlvbnMvcmF0ZXMScwoKRGVsZXRlVmlldxIjLmJsdWVhcGkuY292ZXIudjEuRGVsZXRlVmlld1JlcXVlc3QaJC5ibHVlYXBpLmNvdmVyLnYxLkRlbGV0ZVZpZXdSZXNwb25zZSIagtPkkwIUKhIvdjEvdmlld3Mve3ZpZXdJZH0SnwEKE1VwZGF0ZVNpZGVNZW51U3RhdGUSLC5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVNpZGVNZW51U3RhdGVSZXF1ZXN0Gi0uYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVTaWRlTWVudVN0YXRlUmVzcG9uc2UiK4LT5JMCJToBKhogL3YxL3ZpZXdzL3t2aWV3SWR9L3NpZGVtZW51c3RhdGUSogEKE0FkZFNpZGVNZW51RmF2b3JpdGUSLC5ibHVlYXBpLmNvdmVyLnYxLkFkZFNpZGVNZW51RmF2b3JpdGVSZXF1ZXN0Gi0uYmx1ZWFwaS5jb3Zlci52MS5BZGRTaWRlTWVudUZhdm9yaXRlUmVzcG9uc2UiLoLT5JMCKDoBKiIjL3YxL3ZpZXdzL3t2aWV3SWR9L3NpZGVtZW51ZmF2b3JpdGUSrQEKFlJlbW92ZVNpZGVNZW51RmF2b3JpdGUSLy5ibHVlYXBpLmNvdmVyLnYxLlJlbW92ZVNpZGVNZW51RmF2b3JpdGVSZXF1ZXN0GjAuYmx1ZWFwaS5jb3Zlci52MS5SZW1vdmVTaWRlTWVudUZhdm9yaXRlUmVzcG9uc2UiMILT5JMCKjoBKiIlL3YxL3ZpZXdzL3t2aWV3SWR9L3NpZGVtZW51dW5mYXZvcml0ZRKBAQoPQ3JlYXRlQ29zdEdyb3VwEiguYmx1ZWFwaS5jb3Zlci52MS5DcmVhdGVDb3N0R3JvdXBSZXF1ZXN0GikuYmx1ZWFwaS5jb3Zlci52MS5DcmVhdGVDb3N0R3JvdXBSZXNwb25zZSIZgtPkkwITOgEqIg4vdjEvY29zdGdyb3VwcxJ4Cg1HZXRDb3N0R3JvdXBzEiYuYmx1ZWFwaS5jb3Zlci52MS5HZXRDb3N0R3JvdXBzUmVxdWVzdBonLmJsdWVhcGkuY292ZXIudjEuR2V0Q29zdEdyb3Vwc1Jlc3BvbnNlIhaC0+STAhASDi92MS9jb3N0Z3JvdXBzEngKDUdldENhdGVnb3JpZXMSJi5ibHVlYXBpLmNvdmVyLnYxLkdldENhdGVnb3JpZXNSZXF1ZXN0GicuYmx1ZWFwaS5jb3Zlci52MS5HZXRDYXRlZ29yaWVzUmVzcG9uc2UiFoLT5JMCEBIOL3YxL2NhdGVnb3JpZXMSmAEKE0dldENvc3RHcm91cERldGFpbHMSLC5ibHVlYXBpLmNvdmVyLnYxLkdldENvc3RHcm91cERldGFpbHNSZXF1ZXN0Gi0uYmx1ZWFwaS5jb3Zlci52MS5HZXRDb3N0R3JvdXBEZXRhaWxzUmVzcG9uc2UiJILT5JMCHhIcL3YxL2Nvc3Rncm91cHMve2Nvc3RHcm91cElkfRKgAQoTVXBkYXRlQ29zdEdyb3VwTmFtZRIsLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQ29zdEdyb3VwTmFtZVJlcXVlc3QaLS5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZUNvc3RHcm91cE5hbWVSZXNwb25zZSIsgtPkkwImOgEqGiEvdjEvY29zdGdyb3Vwcy97Y29zdEdyb3VwSWR9L25hbWUSvAEKGlVwZGF0ZUNvc3RHcm91cERlc2NyaXB0aW9uEjMuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVDb3N0R3JvdXBEZXNjcmlwdGlvblJlcXVlc3QaNC5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZUNvc3RHcm91cERlc2NyaXB0aW9uUmVzcG9uc2UiM4LT5JMCLToBKhooL3YxL2Nvc3Rncm91cHMve2Nvc3RHcm91cElkfS9kZXNjcmlwdGlvbhKkAQoUVXBkYXRlQ29zdEdyb3VwSW1hZ2USLS5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZUNvc3RHcm91cEltYWdlUmVxdWVzdBouLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQ29zdEdyb3VwSW1hZ2VSZXNwb25zZSItgtPkkwInOgEqGiIvdjEvY29zdGdyb3Vwcy97Y29zdEdyb3VwSWR9L2ltYWdlEqABChNVcGRhdGVDb3N0R3JvdXBJY29uEiwuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVDb3N0R3JvdXBJY29uUmVxdWVzdBotLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQ29zdEdyb3VwSWNvblJlc3BvbnNlIiyC0+STAiY6ASoaIS92MS9jb3N0Z3JvdXBzL3tjb3N0R3JvdXBJZH0vaWNvbhK4AQoZVXBkYXRlQ29zdEdyb3VwQ29sb3JUaGVtZRIyLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQ29zdEdyb3VwQ29sb3JUaGVtZVJlcXVlc3QaMy5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZUNvc3RHcm91cENvbG9yVGhlbWVSZXNwb25zZSIygtPkkwIsOgEqGicvdjEvY29zdGdyb3Vwcy97Y29zdEdyb3VwSWR9L2NvbG9ydGhlbWUSwAEKG1VwZGF0ZUNvc3RHcm91cENvbWJpbmF0aW9ucxI0LmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQ29zdEdyb3VwQ29tYmluYXRpb25zUmVxdWVzdBo1LmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQ29zdEdyb3VwQ29tYmluYXRpb25zUmVzcG9uc2UiNILT5JMCLjoBKhopL3YxL2Nvc3Rncm91cHMve2Nvc3RHcm91cElkfS9jb21iaW5hdGlvbnMSuwEKHFJlc29sdmVDb3N0R3JvdXBDb21iaW5hdGlvbnMSNS5ibHVlYXBpLmNvdmVyLnYxLlJlc29sdmVDb3N0R3JvdXBDb21iaW5hdGlvbnNSZXF1ZXN0GjYuYmx1ZWFwaS5jb3Zlci52MS5SZXNvbHZlQ29zdEdyb3VwQ29tYmluYXRpb25zUmVzcG9uc2UiLILT5JMCJhIkL3YxL2Nvc3Rncm91cHMvcmVzb2x2ZS97Y29zdEdyb3VwSWR9EqwBChVBc3NpZ25Db3N0R3JvdXBNZW1iZXISLi5ibHVlYXBpLmNvdmVyLnYxLkFzc2lnbkNvc3RHcm91cE1lbWJlclJlcXVlc3QaLy5ibHVlYXBpLmNvdmVyLnYxLkFzc2lnbkNvc3RHcm91cE1lbWJlclJlc3BvbnNlIjKC0+STAiw6ASoiJy92MS9jb3N0Z3JvdXBzL3tjb3N0R3JvdXBJZH0vbWVtYmVyL2FkZBKvAQoVUmVtb3ZlQ29zdEdyb3VwTWVtYmVyEi4uYmx1ZWFwaS5jb3Zlci52MS5SZW1vdmVDb3N0R3JvdXBNZW1iZXJSZXF1ZXN0Gi8uYmx1ZWFwaS5jb3Zlci52MS5SZW1vdmVDb3N0R3JvdXBNZW1iZXJSZXNwb25zZSI1gtPkkwIvOgEqIiovdjEvY29zdGdyb3Vwcy97Y29zdEdyb3VwSWR9L21lbWJlci9yZW1vdmUSjAEKD0RlbGV0ZUNvc3RHcm91cBIoLmJsdWVhcGkuY292ZXIudjEuRGVsZXRlQ29zdEdyb3VwUmVxdWVzdBopLmJsdWVhcGkuY292ZXIudjEuRGVsZXRlQ29zdEdyb3VwUmVzcG9uc2UiJILT5JMCHiocL3YxL2Nvc3Rncm91cHMve2Nvc3RHcm91cElkfRKmAQobR2V0QWNjb3VudEFjY2Vzc1RlbXBsYXRlVXJsEjQuYmx1ZWFwaS5jb3Zlci52MS5HZXRBY2NvdW50QWNjZXNzVGVtcGxhdGVVcmxSZXF1ZXN0GjUuYmx1ZWFwaS5jb3Zlci52MS5HZXRBY2NvdW50QWNjZXNzVGVtcGxhdGVVcmxSZXNwb25zZSIagtPkkwIUEhIvdjEvYXdzL2FjY3RhY2Nlc3MSigEKEUxpc3RBY2NvdW50QWNjZXNzEiouYmx1ZWFwaS5jb3Zlci52MS5MaXN0QWNjb3VudEFjY2Vzc1JlcXVlc3QaHy5ibHVlYXBpLmNvdmVyLnYxLkFjY291bnRBY2Nlc3MiJoLT5JMCIDoBKiIbL3YxL2F3cy9hY2N0YWNjZXNzL2FsbDpyZWFkMAESgwEKEEdldEFjY291bnRBY2Nlc3MSKS5ibHVlYXBpLmNvdmVyLnYxLkdldEFjY291bnRBY2Nlc3NSZXF1ZXN0Gh8uYmx1ZWFwaS5jb3Zlci52MS5BY2NvdW50QWNjZXNzIiOC0+STAh0SGy92MS9hd3MvYWNjdGFjY2Vzcy97dGFyZ2V0fRJ8Cg1HZXREYXRhQWNjZXNzEi8uYmx1ZWFwaS5jb3Zlci52MS5HZXRBbmREZWxldGVEYXRhQWNjZXNzUmVxdWVzdBocLmJsdWVhcGkuY292ZXIudjEuRGF0YUFjY2VzcyIcgtPkkwIWEhQvdjEvYWNjb3VudC97dGFyZ2V0fRJ5ChBEZWxldGVEYXRhQWNjZXNzEi8uYmx1ZWFwaS5jb3Zlci52MS5HZXRBbmREZWxldGVEYXRhQWNjZXNzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIcgtPkkwIWKhQvdjEvYWNjb3VudC97dGFyZ2V0fRKDAQoTQ3JlYXRlQWNjb3VudEFjY2VzcxIsLmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlQWNjb3VudEFjY2Vzc1JlcXVlc3QaHy5ibHVlYXBpLmNvdmVyLnYxLkFjY291bnRBY2Nlc3MiHYLT5JMCFzoBKiISL3YxL2F3cy9hY2N0YWNjZXNzEpwBChtDcmVhdGVBY2NvdW50QWNjZXNzU3RhY2tzZXQSNC5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZUFjY291bnRBY2Nlc3NTdGFja3NldFJlcXVlc3QaHy5ibHVlYXBpLmNvdmVyLnYxLkFjY291bnRBY2Nlc3MiJoLT5JMCIDoBKiIbL3YxL2F3cy9hY2N0YWNjZXNzL3N0YWNrc2V0EooBChZDcmVhdGVBY2NvdW50QWNjZXNzQ3VyEiwuYmx1ZWFwaS5jb3Zlci52MS5DcmVhdGVBY2NvdW50QWNjZXNzUmVxdWVzdBofLmJsdWVhcGkuY292ZXIudjEuQWNjb3VudEFjY2VzcyIhgtPkkwIbOgEqIhYvdjEvYXdzL2FjY3RhY2Nlc3MvY3VyEnsKE1VwZGF0ZUFjY291bnRBY2Nlc3MSLC5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZUFjY291bnRBY2Nlc3NSZXF1ZXN0GhEucHJvdG9zLk9wZXJhdGlvbiIjgtPkkwIdGhsvdjEvYXdzL2FjY3RhY2Nlc3Mve3RhcmdldH0SkwEKE0RlbGV0ZUFjY291bnRBY2Nlc3MSLC5ibHVlYXBpLmNvdmVyLnYxLkRlbGV0ZUFjY291bnRBY2Nlc3NSZXF1ZXN0Gi0uYmx1ZWFwaS5jb3Zlci52MS5EZWxldGVBY2NvdW50QWNjZXNzUmVzcG9uc2UiH4LT5JMCGSoXL3YxL2FjY3RhY2Nlc3Mve3RhcmdldH0SdAoPUmVnaXN0ZXJBY2NvdW50EiguYmx1ZWFwaS5jb3Zlci52MS5SZWdpc3RlckFjY291bnRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ih+C0+STAhk6ASoiFC92MS97dmVuZG9yfS9hY2NvdW50EnEKElJlZ2lzdGVyRGF0YUFjY2VzcxIrLmJsdWVhcGkuY292ZXIudjEuUmVnaXN0ZXJEYXRhQWNjZXNzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIWgtPkkwIQOgEqIgsvdjEvYWNjb3VudBJwChFBZGRCaWxsaW5nQWNjb3VudBInLmJsdWVhcGkuY292ZXIudjEuQmlsbGluZ0FjY291bnRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IhqC0+STAhQ6ASoiDy92MS9iaWxsaW5nYWNjdBJ3Cg5MaXN0RGF0YUFjY2VzcxInLmJsdWVhcGkuY292ZXIudjEuTGlzdERhdGFBY2Nlc3NSZXF1ZXN0GhwuYmx1ZWFwaS5jb3Zlci52MS5EYXRhQWNjZXNzIhyC0+STAhYiFC92MS9hY2NvdW50L2FsbDpyZWFkMAESqAEKGExpc3RVbnJlZ2lzdGVyZWRBY2NvdW50cxIxLmJsdWVhcGkuY292ZXIudjEuTGlzdFVucmVnaXN0ZXJlZEFjY291bnRzUmVxdWVzdBoyLmJsdWVhcGkuY292ZXIudjEuTGlzdFVucmVnaXN0ZXJlZEFjY291bnRzUmVzcG9uc2UiJYLT5JMCHyIdL3YxL2FjY291bnQvdW5yZWdpc3RlcmVkOnJlYWQSdgoQVXBkYXRlRGF0YUFjY2VzcxIpLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlRGF0YUFjY2Vzc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiH4LT5JMCGToBKhoUL3YxL2FjY291bnQve3RhcmdldH0SawoKTGlzdEFzc2V0cxIjLmJsdWVhcGkuY292ZXIudjEuTGlzdEFzc2V0c1JlcXVlc3QaGi5ibHVlYXBpLmNvdmVyLnYxLlJlc291cmNlIhqC0+STAhQ6ASoiDy92MS9hc3NldHM6cmVhZDABEpMBChBHZXRBc3NldHNTdW1tYXJ5EikuYmx1ZWFwaS5jb3Zlci52MS5HZXRBc3NldHNTdW1tYXJ5UmVxdWVzdBoqLmJsdWVhcGkuY292ZXIudjEuR2V0QXNzZXRzU3VtbWFyeVJlc3BvbnNlIiiC0+STAiISIC92MS9hc3NldHMvc3VtbWFyeS97Y29zdEdyb3VwSWR9EnIKDEdldENvc3RVc2FnZRIlLmJsdWVhcGkuY292ZXIudjEuR2V0Q29zdFVzYWdlUmVxdWVzdBoaLmJsdWVhcGkuY292ZXIudjEuQ29zdEl0ZW0iHYLT5JMCFzoBKiISL3YxL2Nvc3R1c2FnZTpyZWFkMAESwgEKHEdldFJpZ2h0U2l6aW5nUmVjb21tZW5kYXRpb24SNS5ibHVlYXBpLmNvdmVyLnYxLkdldFJpZ2h0U2l6aW5nUmVjb21tZW5kYXRpb25SZXF1ZXN0GjYuYmx1ZWFwaS5jb3Zlci52MS5HZXRSaWdodFNpemluZ1JlY29tbWVuZGF0aW9uUmVzcG9uc2UiM4LT5JMCLRIrL3YxL3JpZ2h0c2l6aW5ncmVjb21tZW5kYXRpb24ve2Nvc3RHcm91cElkfRKYAQoSTW9kaWZ5UmVzb3VyY2VUeXBlEisuYmx1ZWFwaS5jb3Zlci52MS5Nb2RpZnlSZXNvdXJjZVR5cGVSZXF1ZXN0GiwuYmx1ZWFwaS5jb3Zlci52MS5Nb2RpZnlSZXNvdXJjZVR5cGVSZXNwb25zZSIngtPkkwIhOgEqIhwvdjEve3ZlbmRvcn0vcmVzb3VyY2UvbW9kaWZ5EpgBChFUZXJtaW5hdGVSZXNvdXJjZRIqLmJsdWVhcGkuY292ZXIudjEuVGVybWluYXRlUmVzb3VyY2VSZXF1ZXN0GisuYmx1ZWFwaS5jb3Zlci52MS5UZXJtaW5hdGVSZXNvdXJjZVJlc3BvbnNlIiqC0+STAiQ6ASoiHy92MS97dmVuZG9yfS9yZXNvdXJjZS90ZXJtaW5hdGUSjQEKEFVwbG9hZENoYXJnZUNvZGUSKS5ibHVlYXBpLmNvdmVyLnYxLlVwbG9hZENoYXJnZUNvZGVSZXF1ZXN0GiouYmx1ZWFwaS5jb3Zlci52MS5VcGxvYWRDaGFyZ2VDb2RlUmVzcG9uc2UiIILT5JMCGjoBKiIVL3YxL2NoYXJnZWNvZGUvdXBsb2FkKAESegoLQXNzaWduUGF5ZXISJC5ibHVlYXBpLmNvdmVyLnYxLkFzc2lnblBheWVyUmVxdWVzdBolLmJsdWVhcGkuY292ZXIudjEuQXNzaWduUGF5ZXJSZXNwb25zZSIegtPkkwIYOgEqIhMvdjEve3ZlbmRvcn0vcGF5ZXJzEnEKCUdldFBheWVycxIiLmJsdWVhcGkuY292ZXIudjEuR2V0UGF5ZXJzUmVxdWVzdBojLmJsdWVhcGkuY292ZXIudjEuR2V0UGF5ZXJzUmVzcG9uc2UiG4LT5JMCFRITL3YxL3t2ZW5kb3J9L3BheWVycxKHAQoLR2V0QWNjb3VudHMSJC5ibHVlYXBpLmNvdmVyLnYxLkdldEFjY291bnRzUmVxdWVzdBolLmJsdWVhcGkuY292ZXIudjEuR2V0QWNjb3VudHNSZXNwb25zZSIrgtPkkwIlEiMvdjEve3ZlbmRvcn0vYWNjb3VudHMve2Nvc3RHcm91cElkfRKHAQoLR2V0U2VydmljZXMSJC5ibHVlYXBpLmNvdmVyLnYxLkdldFNlcnZpY2VzUmVxdWVzdBolLmJsdWVhcGkuY292ZXIudjEuR2V0U2VydmljZXNSZXNwb25zZSIrgtPkkwIlEiMvdjEve3ZlbmRvcn0vc2VydmljZXMve2Nvc3RHcm91cElkfRKDAQoKR2V0UmVnaW9ucxIjLmJsdWVhcGkuY292ZXIudjEuR2V0UmVnaW9uc1JlcXVlc3QaJC5ibHVlYXBpLmNvdmVyLnYxLkdldFJlZ2lvbnNSZXNwb25zZSIqgtPkkwIkEiIvdjEve3ZlbmRvcn0vcmVnaW9ucy97Y29zdEdyb3VwSWR9EncKB0dldFRhZ3MSIC5ibHVlYXBpLmNvdmVyLnYxLkdldFRhZ3NSZXF1ZXN0GiEuYmx1ZWFwaS5jb3Zlci52MS5HZXRUYWdzUmVzcG9uc2UiJ4LT5JMCIRIfL3YxL3t2ZW5kb3J9L3RhZ3Mve2Nvc3RHcm91cElkfRJ3CghMaXN0RmVlcxIhLmJsdWVhcGkuY292ZXIudjEuTGlzdEZlZXNSZXF1ZXN0GhwuYmx1ZWFwaS5jb3Zlci52MS5GZWVEZXRhaWxzIiiC0+STAiI6ASoiHS92MS9hbGxvY2F0aW9ucy9mZWVzL2FsbDpyZWFkMAESegoKUmVzdG9yZUZlZRIjLmJsdWVhcGkuY292ZXIudjEuUmVzdG9yZUZlZVJlcXVlc3QaHC5ibHVlYXBpLmNvdmVyLnYxLkZlZURldGFpbHMiJ4LT5JMCIToBKiIcL3YxL2FsbG9jYXRpb25zL2ZlZXMvcmVzdG9yZTABEn4KD0dldENvc3RHcm91cEZlZRIoLmJsdWVhcGkuY292ZXIudjEuR2V0Q29zdEdyb3VwRmVlUmVxdWVzdBoZLmJsdWVhcGkuY292ZXIudjEuRmVlSXRlbSIkgtPkkwIeOgEqIhkvdjEvYWxsb2NhdGlvbnMvZmVlczpyZWFkMAESewoOTGlzdEFsbG9jYXRvcnMSJy5ibHVlYXBpLmNvdmVyLnYxLkxpc3RBbGxvY2F0b3JzUmVxdWVzdBomLmJsdWVhcGkuY292ZXIudjEuQ29zdEFsbG9jYXRvckRldGFpbHMiFoLT5JMCEBIOL3YxL2FsbG9jYXRvcnMwARJ+Cg9DcmVhdGVBbGxvY2F0b3ISKC5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZUFsbG9jYXRvclJlcXVlc3QaJi5ibHVlYXBpLmNvdmVyLnYxLkNvc3RBbGxvY2F0b3JEZXRhaWxzIhmC0+STAhM6ASoiDi92MS9hbGxvY2F0b3JzEqABChdHZXRBbGxvY2F0aW9uQXR0cmlidXRlcxIwLmJsdWVhcGkuY292ZXIudjEuR2V0QWxsb2NhdGlvbkF0dHJpYnV0ZXNSZXF1ZXN0GjEuYmx1ZWFwaS5jb3Zlci52MS5HZXRBbGxvY2F0aW9uQXR0cmlidXRlc1Jlc3BvbnNlIiCC0+STAhoSGC92MS9hbGxvY2F0b3JzL2F0dHJpYnV0ZRKUAQoUR2V0QWxsb2NhdGlvblNvdXJjZXMSLS5ibHVlYXBpLmNvdmVyLnYxLkdldEFsbG9jYXRpb25Tb3VyY2VzUmVxdWVzdBouLmJsdWVhcGkuY292ZXIudjEuR2V0QWxsb2NhdGlvblNvdXJjZXNSZXNwb25zZSIdgtPkkwIXEhUvdjEvYWxsb2NhdG9ycy9zb3VyY2USgQEKD1VwZGF0ZUFsbG9jYXRvchImLmJsdWVhcGkuY292ZXIudjEuQ29zdEFsbG9jYXRvclJlcXVlc3QaJi5ibHVlYXBpLmNvdmVyLnYxLkNvc3RBbGxvY2F0b3JEZXRhaWxzIh6C0+STAhg6ASoaEy92MS9hbGxvY2F0b3JzL3tpZH0ScAoPRGVsZXRlQWxsb2NhdG9yEiguYmx1ZWFwaS5jb3Zlci52MS5EZWxldGVBbGxvY2F0b3JSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IhuC0+STAhUqEy92MS9hbGxvY2F0b3JzL3tpZH0SkAEKFVByb3h5Q3JlYXRlQ29tcGxldGlvbhIuLmJsdWVhcGkuY292ZXIudjEuUHJveHlDcmVhdGVDb21wbGV0aW9uUmVxdWVzdBovLmJsdWVhcGkuY292ZXIudjEuUHJveHlDcmVhdGVDb21wbGV0aW9uUmVzcG9uc2UiFILT5JMCDjoBKiIJL3YxL3gvcGNjMAESigEKFFNpbXVsYXRlRmVlQWxsb2NhdG9yEiguYmx1ZWFwaS5jb3Zlci52MS5DcmVhdGVBbGxvY2F0b3JSZXF1ZXN0GhwuYmx1ZWFwaS5jb3Zlci52MS5GZWVEZXRhaWxzIiiC0+STAiI6ASoiHS92MS9hbGxvY2F0aW9ucy9mZWVzL3NpbXVsYXRlMAESmAEKEExpc3RBY2NvdW50VXNhZ2USKS5ibHVlYXBpLmNvdmVyLnYxLkxpc3RBY2NvdW50VXNhZ2VSZXF1ZXN0GiUuYmx1ZWFwaS5jb3Zlci52MS5BY2NvdW50VXNhZ2VEZXRhaWxzIjCC0+STAio6ASoiJS92MS9hbGxvY2F0aW9ucy9hY2NvdW50dXNhZ2UvYWxsOnJlYWQwARKdAQoTUmVzdG9yZUFjY291bnRVc2FnZRIsLmJsdWVhcGkuY292ZXIudjEuUmVzdG9yZUFjY291bnRVc2FnZVJlcXVlc3QaJS5ibHVlYXBpLmNvdmVyLnYxLkFjY291bnRVc2FnZURldGFpbHMiL4LT5JMCKToBKiIkL3YxL2FsbG9jYXRpb25zL2FjY291bnR1c2FnZS9yZXN0b3JlMAESmwEKFFNpbXVsYXRlQWNjb3VudFVzYWdlEiguYmx1ZWFwaS5jb3Zlci52MS5DcmVhdGVBbGxvY2F0b3JSZXF1ZXN0GiUuYmx1ZWFwaS5jb3Zlci52MS5BY2NvdW50VXNhZ2VEZXRhaWxzIjCC0+STAio6ASoiJS92MS9hbGxvY2F0aW9ucy9hY2NvdW50dXNhZ2Uvc2ltdWxhdGUwARKBAQoLTGlzdFNhdmluZ3MSIS5ibHVlYXBpLmNvdmVyLnYxLkxpc3RGZWVzUmVxdWVzdBogLmJsdWVhcGkuY292ZXIudjEuU2F2aW5nc0RldGFpbHMiK4LT5JMCJToBKiIgL3YxL2FsbG9jYXRpb25zL3NhdmluZ3MvYWxsOnJlYWQwARKJAQoOUmVzdG9yZVNhdmluZ3MSJy5ibHVlYXBpLmNvdmVyLnYxLlJlc3RvcmVTYXZpbmdzUmVxdWVzdBogLmJsdWVhcGkuY292ZXIudjEuU2F2aW5nc0RldGFpbHMiKoLT5JMCJDoBKiIfL3YxL2FsbG9jYXRpb25zL3NhdmluZ3MvcmVzdG9yZTABEowBCg9TaW11bGF0ZVNhdmluZ3MSKC5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZUFsbG9jYXRvclJlcXVlc3QaIC5ibHVlYXBpLmNvdmVyLnYxLlNhdmluZ3NEZXRhaWxzIiuC0+STAiU6ASoiIC92MS9hbGxvY2F0aW9ucy9zYXZpbmdzL3NpbXVsYXRlMAESjgEKFkdldENvc3RHcm91cEFsbG9jYXRpb24SLy5ibHVlYXBpLmNvdmVyLnYxLkdldENvc3RHcm91cEFsbG9jYXRpb25SZXF1ZXN0GiAuYmx1ZWFwaS5jb3Zlci52MS5BbGxvY2F0aW9uSXRlbSIfgtPkkwIZOgEqIhQvdjEvYWxsb2NhdGlvbnM6cmVhZDABEocBChBQcm9jZXNzQXV0aDBVc2VyEikuYmx1ZWFwaS5jb3Zlci52MS5Qcm9jZXNzQXV0aDBVc2VyUmVxdWVzdBoqLmJsdWVhcGkuY292ZXIudjEuUHJvY2Vzc0F1dGgwVXNlclJlc3BvbnNlIhyC0+STAhY6ASoiES92MS9tZW1iZXJzL2F1dGgwEpsBChtBZGRQYXJ0bmVyQ2VudGVyQ3JlZGVudGlhbHMSNC5ibHVlYXBpLmNvdmVyLnYxLkFkZFBhcnRuZXJDZW50ZXJDcmVkZW50aWFsc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiLoLT5JMCKDoBKiIjL3YxL2F6dXJlL2NyZWRlbnRpYWxzL3BhcnRuZXJjZW50ZXISdQoNQWRkTXBuU2V0dGluZxImLmJsdWVhcGkuY292ZXIudjEuQWRkTXBuU2V0dGluZ1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiJILT5JMCHjoBKiIZL3YxL2F6dXJlL2NyZWRlbnRpYWxzL21wbhKTAQoVR2V0Q29zdEdyb3VwQXR0cmlidXRlEi4uYmx1ZWFwaS5jb3Zlci52MS5HZXRDb3N0R3JvdXBBdHRyaWJ1dGVSZXF1ZXN0Gi8uYmx1ZWFwaS5jb3Zlci52MS5HZXRDb3N0R3JvdXBBdHRyaWJ1dGVSZXNwb25zZSIZgtPkkwITOgEqIg4vdjEvYXR0cmlidXRlcxJvCglHZXRBbGVydHMSIi5ibHVlYXBpLmNvdmVyLnYxLkdldEFsZXJ0c1JlcXVlc3QaIy5ibHVlYXBpLmNvdmVyLnYxLkdldEFsZXJ0c1Jlc3BvbnNlIheC0+STAhESDy92MS9hbGVydHMvY29zdDABEnYKC0NyZWF0ZUFsZXJ0EiQuYmx1ZWFwaS5jb3Zlci52MS5DcmVhdGVBbGVydFJlcXVlc3QaJS5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZUFsZXJ0UmVzcG9uc2UiGoLT5JMCFDoBKiIPL3YxL2FsZXJ0cy9jb3N0EoQBCg9HZXRBbGVydERldGFpbHMSKC5ibHVlYXBpLmNvdmVyLnYxLkdldEFsZXJ0RGV0YWlsc1JlcXVlc3QaKS5ibHVlYXBpLmNvdmVyLnYxLkdldEFsZXJ0RGV0YWlsc1Jlc3BvbnNlIhyC0+STAhYSFC92MS9hbGVydHMvY29zdC97aWR9EngKC0RlbGV0ZUFsZXJ0EiQuYmx1ZWFwaS5jb3Zlci52MS5EZWxldGVBbGVydFJlcXVlc3QaJS5ibHVlYXBpLmNvdmVyLnYxLkRlbGV0ZUFsZXJ0UmVzcG9uc2UiHILT5JMCFioUL3YxL2FsZXJ0cy9jb3N0L3tpZH0SkAEKElVwZGF0ZUFsZXJ0RGV0YWlscxIrLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQWxlcnREZXRhaWxzUmVxdWVzdBosLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQWxlcnREZXRhaWxzUmVzcG9uc2UiH4LT5JMCGToBKhoUL3YxL2FsZXJ0cy9jb3N0L3tpZH0SegoLR2V0Q2hhbm5lbHMSJC5ibHVlYXBpLmNvdmVyLnYxLkdldENoYW5uZWxzUmVxdWVzdBolLmJsdWVhcGkuY292ZXIudjEuR2V0Q2hhbm5lbHNSZXNwb25zZSIcgtPkkwIWOgEqIhEvdjEvY2hhbm5lbHM6cmVhZDABEnkKDUNyZWF0ZUNoYW5uZWwSJi5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZUNoYW5uZWxSZXF1ZXN0GicuYmx1ZWFwaS5jb3Zlci52MS5DcmVhdGVDaGFubmVsUmVzcG9uc2UiF4LT5JMCEToBKiIML3YxL2NoYW5uZWxzEocBChFHZXRDaGFubmVsRGV0YWlscxIqLmJsdWVhcGkuY292ZXIudjEuR2V0Q2hhbm5lbERldGFpbHNSZXF1ZXN0GisuYmx1ZWFwaS5jb3Zlci52MS5HZXRDaGFubmVsRGV0YWlsc1Jlc3BvbnNlIhmC0+STAhMSES92MS9jaGFubmVscy97aWR9EnsKDURlbGV0ZUNoYW5uZWwSJi5ibHVlYXBpLmNvdmVyLnYxLkRlbGV0ZUNoYW5uZWxSZXF1ZXN0GicuYmx1ZWFwaS5jb3Zlci52MS5EZWxldGVDaGFubmVsUmVzcG9uc2UiGYLT5JMCEyoRL3YxL2NoYW5uZWxzL3tpZH0SkwEKFFVwZGF0ZUNoYW5uZWxEZXRhaWxzEi0uYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVDaGFubmVsRGV0YWlsc1JlcXVlc3QaLi5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZUNoYW5uZWxEZXRhaWxzUmVzcG9uc2UiHILT5JMCFjoBKhoRL3YxL2NoYW5uZWxzL3tpZH0SoAEKGkdldERpc2NvdW50UmVjb21tZW5kYXRpb25zEjMuYmx1ZWFwaS5jb3Zlci52MS5HZXREaXNjb3VudFJlY29tbWVuZGF0aW9uc1JlcXVlc3QaNC5ibHVlYXBpLmNvdmVyLnYxLkdldERpc2NvdW50UmVjb21tZW5kYXRpb25zUmVzcG9uc2UiF4LT5JMCEToBKiIML3YxL2Rpc2NvdW50EoABChVHZXRBbm9tYWx5aW5Db3N0R3JvdXASLi5ibHVlYXBpLmNvdmVyLnYxLkdldEFub21hbHlpbkNvc3RHcm91cFJlcXVlc3QaHS5ibHVlYXBpLmNvdmVyLnYxLkFub21hbHlEYXRhIhaC0+STAhA6ASoiCy92MS9hbm9tYWx5MAESlgEKHUNyZWF0ZURpc2NvdW50RXhwaXJhdGlvbkFsZXJ0EjYuYmx1ZWFwaS5jb3Zlci52MS5DcmVhdGVEaXNjb3VudEV4cGlyYXRpb25BbGVydFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiJYLT5JMCHzoBKiIaL3YxL2FsZXJ0cy9leHBpcmUvZGlzY291bnQSmwEKHVVwZGF0ZURpc2NvdW50RXhwaXJhdGlvbkFsZXJ0EjYuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVEaXNjb3VudEV4cGlyYXRpb25BbGVydFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiKoLT5JMCJDoBKhofL3YxL2FsZXJ0cy9leHBpcmUvZGlzY291bnQve2lkfRKsAQoaR2V0RGlzY291bnRFeHBpcmF0aW9uQWxlcnQSOi5ibHVlYXBpLmNvdmVyLnYxLk1hbmlwdWxhdGVEaXNjb3VudEV4cGlyYXRpb25BbGVydFJlcXVlc3QaKS5ibHVlYXBpLmNvdmVyLnYxLkRpc2NvdW50RXhwaXJ5QWxlcnREYXRhIieC0+STAiESHy92MS9hbGVydHMvZXhwaXJlL2Rpc2NvdW50L3tpZH0SrQEKG0xpc3REaXNjb3VudEV4cGlyYXRpb25BbGVydBI0LmJsdWVhcGkuY292ZXIudjEuTGlzdERpc2NvdW50RXhwaXJhdGlvbkFsZXJ0UmVxdWVzdBopLmJsdWVhcGkuY292ZXIudjEuRGlzY291bnRFeHBpcnlBbGVydERhdGEiK4LT5JMCJSIjL3YxL2FsZXJ0cy9leHBpcmUvZGlzY291bnQvYWxsOnJlYWQwARKcAQodRGVsZXRlRGlzY291bnRFeHBpcmF0aW9uQWxlcnQSOi5ibHVlYXBpLmNvdmVyLnYxLk1hbmlwdWxhdGVEaXNjb3VudEV4cGlyYXRpb25BbGVydFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiJ4LT5JMCISofL3YxL2FsZXJ0cy9leHBpcmUvZGlzY291bnQve2lkfRJ4ChJDcmVhdGVBbm9tYWx5QWxlcnQSKy5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZUFub21hbHlBbGVydFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiHYLT5JMCFzoBKiISL3YxL2FsZXJ0cy9hbm9tYWx5En4KEkRlbGV0ZUFub21hbHlBbGVydBIvLmJsdWVhcGkuY292ZXIudjEuTWFuaXB1bGF0ZUFub21hbHlBbGVydFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiH4LT5JMCGSoXL3YxL2FsZXJ0cy9hbm9tYWx5L3tpZH0SiAEKEExpc3RBbm9tYWx5QWxlcnQSKS5ibHVlYXBpLmNvdmVyLnYxLkxpc3RBbm9tYWx5QWxlcnRSZXF1ZXN0GiIuYmx1ZWFwaS5jb3Zlci52MS5Bbm9tYWx5QWxlcnREYXRhIiOC0+STAh0iGy92MS9hbGVydHMvYW5vbWFseS9hbGw6cmVhZDABEocBCg9HZXRBbm9tYWx5QWxlcnQSLy5ibHVlYXBpLmNvdmVyLnYxLk1hbmlwdWxhdGVBbm9tYWx5QWxlcnRSZXF1ZXN0GiIuYmx1ZWFwaS5jb3Zlci52MS5Bbm9tYWx5QWxlcnREYXRhIh+C0+STAhkSFy92MS9hbGVydHMvYW5vbWFseS97aWR9En0KElVwZGF0ZUFub21hbHlBbGVydBIrLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQW5vbWFseUFsZXJ0UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIigtPkkwIcOgEqGhcvdjEvYWxlcnRzL2Fub21hbHkve2lkfRKHAQoPUmVnaXN0ZXJOZXdVc2VyEiguYmx1ZWFwaS5jb3Zlci52MS5SZWdpc3Rlck5ld1VzZXJSZXF1ZXN0GikuYmx1ZWFwaS5jb3Zlci52MS5SZWdpc3Rlck5ld1VzZXJSZXNwb25zZSIfgtPkkwIZOgEqIhQvdjEvbWVtYmVycy9yZWdpc3RlchKIAQoOR2V0VXNlclByb2ZpbGUSJy5ibHVlYXBpLmNvdmVyLnYxLkdldFVzZXJQcm9maWxlUmVxdWVzdBooLmJsdWVhcGkuY292ZXIudjEuR2V0VXNlclByb2ZpbGVSZXNwb25zZSIjgtPkkwIdEhsvdjEvbWVtYmVycy9wcm9maWxlL3tlbWFpbH0SlAEKEVVwZGF0ZVVzZXJQcm9maWxlEiouYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVVc2VyUHJvZmlsZVJlcXVlc3QaKy5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVzZXJQcm9maWxlUmVzcG9uc2UiJoLT5JMCIDoBKhobL3YxL21lbWJlcnMvcHJvZmlsZS97ZW1haWx9EngKC0xpc3RCdWRnZXRzEiQuYmx1ZWFwaS5jb3Zlci52MS5MaXN0QnVkZ2V0c1JlcXVlc3QaJS5ibHVlYXBpLmNvdmVyLnYxLkxpc3RCdWRnZXRzUmVzcG9uc2UiGoLT5JMCFDoBKiIPL3YxL2J1ZGdldDpyZWFkMAESbQoJR2V0QnVkZ2V0EiIuYmx1ZWFwaS5jb3Zlci52MS5HZXRCdWRnZXRSZXF1ZXN0GiMuYmx1ZWFwaS5jb3Zlci52MS5HZXRCdWRnZXRSZXNwb25zZSIXgtPkkwIREg8vdjEvYnVkZ2V0L3tpZH0SdAoMQ3JlYXRlQnVkZ2V0EiUuYmx1ZWFwaS5jb3Zlci52MS5DcmVhdGVCdWRnZXRSZXF1ZXN0GiYuYmx1ZWFwaS5jb3Zlci52MS5DcmVhdGVCdWRnZXRSZXNwb25zZSIVgtPkkwIPOgEqIgovdjEvYnVkZ2V0EnYKDERlbGV0ZUJ1ZGdldBIlLmJsdWVhcGkuY292ZXIudjEuRGVsZXRlQnVkZ2V0UmVxdWVzdBomLmJsdWVhcGkuY292ZXIudjEuRGVsZXRlQnVkZ2V0UmVzcG9uc2UiF4LT5JMCESoPL3YxL2J1ZGdldC97aWR9EnkKDFVwZGF0ZUJ1ZGdldBIlLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQnVkZ2V0UmVxdWVzdBomLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQnVkZ2V0UmVzcG9uc2UiGoLT5JMCFDoBKhoPL3YxL2J1ZGdldC97aWR9EtcBCidSZXNvbHZlQVdTTWFya2V0cGxhY2VUb2tlbkZvck9uYm9hcmRpbmcSQC5ibHVlYXBpLmNvdmVyLnYxLlJlc29sdmVBV1NNYXJrZXRwbGFjZVRva2VuRm9yT25ib2FyZGluZ1JlcXVlc3QaQS5ibHVlYXBpLmNvdmVyLnYxLlJlc29sdmVBV1NNYXJrZXRwbGFjZVRva2VuRm9yT25ib2FyZGluZ1Jlc3BvbnNlIieC0+STAiE6ASoiHC92MS9tZW1iZXJzL2F3cy9zdWJzY3JpcHRpb24SrAEKHUdldEN1c3RvbWVyU3Vic2NyaXB0aW9uU3RhdHVzEjYuYmx1ZWFwaS5jb3Zlci52MS5HZXRDdXN0b21lclN1YnNjcmlwdGlvblN0YXR1c1JlcXVlc3QaNy5ibHVlYXBpLmNvdmVyLnYxLkdldEN1c3RvbWVyU3Vic2NyaXB0aW9uU3RhdHVzUmVzcG9uc2UiGoLT5JMCFBISL3YxL2JpbGxpbmcvc3RhdHVzEoYBCg9DcmVhdGVQcm9maWxpbmcSKC5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZVByb2ZpbGluZ1JlcXVlc3QaKS5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZVByb2ZpbGluZ1Jlc3BvbnNlIh6C0+STAhg6ASoiEy92MS9tZW1iZXJzL3Byb2ZpbGUSlgEKFEFkZEluZm90b01hcmtldHBsYWNlEi0uYmx1ZWFwaS5jb3Zlci52MS5BZGRJbmZvdG9NYXJrZXRwbGFjZVJlcXVlc3QaLi5ibHVlYXBpLmNvdmVyLnYxLkFkZEluZm90b01hcmtldHBsYWNlUmVzcG9uc2UiH4LT5JMCGToBKiIUL3YxL21hcmtldHBsYWNlL2luZm8SnAEKEEdldFJlcG9ydFN1bW1hcnkSKS5ibHVlYXBpLmNvdmVyLnYxLkdldFJlcG9ydFN1bW1hcnlSZXF1ZXN0GiouYmx1ZWFwaS5jb3Zlci52MS5HZXRSZXBvcnRTdW1tYXJ5UmVzcG9uc2UiMYLT5JMCKxIpL3YxL3JlcG9ydHMvaW5zaWdodC9zdW1tYXJ5L3tjb3N0R3JvdXBJZH0SnAEKE0xpc3RSZWNvbW1lbmRhdGlvbnMSKy5ibHVlYXBpLmNvdmVyLnYxLkxpc3RSZWNvbW1lbmRhdGlvblJlcXVlc3QaLC5ibHVlYXBpLmNvdmVyLnYxLkxpc3RSZWNvbW1lbmRhdGlvblJlc3BvbnNlIiiC0+STAiISIC92MS9yZWNvbW1lbmRhdGlvbnMvb3B0aW1pemF0aW9uMAESnwEKFUxpc3RSZWNvbW1lbmRhdGlvbnNWMhItLmJsdWVhcGkuY292ZXIudjEuTGlzdFJlY29tbWVuZGF0aW9uVjJSZXF1ZXN0GiwuYmx1ZWFwaS5jb3Zlci52MS5MaXN0UmVjb21tZW5kYXRpb25SZXNwb25zZSIngtPkkwIhOgEqIhwvdjEvcmVjb21tZW5kYXRpb25zL2FsbDpyZWFkMAESmwEKEUdldFJlY29tbWVuZGF0aW9uEiouYmx1ZWFwaS5jb3Zlci52MS5HZXRSZWNvbW1lbmRhdGlvblJlcXVlc3QaKy5ibHVlYXBpLmNvdmVyLnYxLkdldFJlY29tbWVuZGF0aW9uUmVzcG9uc2UiLYLT5JMCJxIlL3YxL3JlY29tbWVuZGF0aW9ucy9vcHRpbWl6YXRpb24ve2lkfRKcAQoTR2V0UmVjb21tZW5kYXRpb25WMhIsLmJsdWVhcGkuY292ZXIudjEuR2V0UmVjb21tZW5kYXRpb25WMlJlcXVlc3QaLS5ibHVlYXBpLmNvdmVyLnYxLkdldFJlY29tbWVuZGF0aW9uVjJSZXNwb25zZSIogtPkkwIiEiAvdjEvcmVjb21tZW5kYXRpb25zL2RldGFpbHMve2lkfRKaAQoTRXhlY3V0ZU9wdGltaXphdGlvbhIsLmJsdWVhcGkuY292ZXIudjEuRXhlY3V0ZU9wdGltaXphdGlvblJlcXVlc3QaLS5ibHVlYXBpLmNvdmVyLnYxLkV4ZWN1dGVPcHRpbWl6YXRpb25SZXNwb25zZSImgtPkkwIgOgEqIhsvdjEvcmVjb21tZW5kYXRpb25zL2V4ZWN1dGUSnQEKEkdldEV4ZWN1dGlvblN0YXR1cxIrLmJsdWVhcGkuY292ZXIudjEuR2V0RXhlY3V0aW9uU3RhdHVzUmVxdWVzdBosLmJsdWVhcGkuY292ZXIudjEuR2V0RXhlY3V0aW9uU3RhdHVzUmVzcG9uc2UiKoLT5JMCJBIiL3YxL3JlY29tbWVuZGF0aW9ucy9leGVjdXRlL3N0YXR1czABEpkBCg5NYXJrQXNFeGVjdXRlZBInLmJsdWVhcGkuY292ZXIudjEuTWFya0FzRXhlY3V0ZWRSZXF1ZXN0GiguYmx1ZWFwaS5jb3Zlci52MS5NYXJrQXNFeGVjdXRlZFJlc3BvbnNlIjSC0+STAi46ASoiKS92MS9yZWNvbW1lbmRhdGlvbnMvb3B0aW1pemF0aW9uL2V4ZWN1dGVkErkBChpVbmRvRXhlY3V0ZWRSZWNvbW1lbmRhdGlvbhIzLmJsdWVhcGkuY292ZXIudjEuVW5kb0V4ZWN1dGVkUmVjb21tZW5kYXRpb25SZXF1ZXN0GjQuYmx1ZWFwaS5jb3Zlci52MS5VbmRvRXhlY3V0ZWRSZWNvbW1lbmRhdGlvblJlc3BvbnNlIjCC0+STAio6ASoiJS92MS9yZWNvbW1lbmRhdGlvbnMvb3B0aW1pemF0aW9uL3VuZG8SpAEKE09wdGltaXphdGlvbkhpc3RvcnkSLC5ibHVlYXBpLmNvdmVyLnYxLk9wdGltaXphdGlvbkhpc3RvcnlSZXF1ZXN0Gi0uYmx1ZWFwaS5jb3Zlci52MS5PcHRpbWl6YXRpb25IaXN0b3J5UmVzcG9uc2UiMILT5JMCKhIoL3YxL3JlY29tbWVuZGF0aW9ucy9vcHRpbWl6YXRpb24vaGlzdG9yeRK/AQoaU2V0Q29zdEdyb3VwRXZlbnRJbmRpY2F0b3ISMy5ibHVlYXBpLmNvdmVyLnYxLlNldENvc3RHcm91cEV2ZW50SW5kaWNhdG9yUmVxdWVzdBo0LmJsdWVhcGkuY292ZXIudjEuU2V0Q29zdEdyb3VwRXZlbnRJbmRpY2F0b3JSZXNwb25zZSI2gtPkkwIwOgEqIisvdjEvY29zdGdyb3Vwcy97Y29zdEdyb3VwSWR9L2V2ZW50SW5kaWNhdG9yErgBChpTZXRDb3N0R3JvdXBBbm9tYWx5T3B0aW9ucxIzLmJsdWVhcGkuY292ZXIudjEuU2V0Q29zdEdyb3VwQW5vbWFseU9wdGlvbnNSZXF1ZXN0GjQuYmx1ZWFwaS5jb3Zlci52MS5TZXRDb3N0R3JvdXBBbm9tYWx5T3B0aW9uc1Jlc3BvbnNlIi+C0+STAik6ASoiJC92MS9jb3N0Z3JvdXBzL3tjb3N0R3JvdXBJZH0vYW5vbWFseRKQAQoRU2V0T3JnRmlzY2FsTW9udGgSKi5ibHVlYXBpLmNvdmVyLnYxLlNldE9yZ0Zpc2NhbE1vbnRoUmVxdWVzdBorLmJsdWVhcGkuY292ZXIudjEuU2V0T3JnRmlzY2FsTW9udGhSZXNwb25zZSIigtPkkwIcOgEqIhcvdjEvcmVwb3J0cy9maXNjYWxtb250aBKNAQoRR2V0T3JnRmlzY2FsTW9udGgSKi5ibHVlYXBpLmNvdmVyLnYxLkdldE9yZ0Zpc2NhbE1vbnRoUmVxdWVzdBorLmJsdWVhcGkuY292ZXIudjEuR2V0T3JnRmlzY2FsTW9udGhSZXNwb25zZSIfgtPkkwIZEhcvdjEvcmVwb3J0cy9maXNjYWxtb250aBKiAQoUVHJhbnNmZXJPcmdhbml6YXRpb24SLS5ibHVlYXBpLmNvdmVyLnYxLlRyYW5zZmVyT3JnYW5pemF0aW9uUmVxdWVzdBouLmJsdWVhcGkuY292ZXIudjEuVHJhbnNmZXJPcmdhbml6YXRpb25SZXNwb25zZSIrgtPkkwIlEiMvdjEvb3JnYW5pemF0aW9ucy90cmFuc2Zlci97dGFyZ2V0fRKpAQoZVXBkYXRlQ29zdEdyb3VwQ3JlYXRpb25VSRIyLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQ29zdEdyb3VwQ3JlYXRpb25VSVJlcXVlc3QaMy5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZUNvc3RHcm91cENyZWF0aW9uVUlSZXNwb25zZSIjgtPkkwIdOgEqGhgvdjEvbWUvY29zdGdyb3VwY3JlYXRpb24SdgoNTGlzdFVuaXRUeXBlcxImLmJsdWVhcGkuY292ZXIudjEuTGlzdFVuaXRUeXBlc1JlcXVlc3QaJy5ibHVlYXBpLmNvdmVyLnYxLkxpc3RVbml0VHlwZXNSZXNwb25zZSIUgtPkkwIOEgwvdjEvdW5pdGNvc3QSfAoOQ3JlYXRlVW5pdFR5cGUSJy5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZVVuaXRUeXBlUmVxdWVzdBooLmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlVW5pdFR5cGVSZXNwb25zZSIXgtPkkwIROgEqIgwvdjEvdW5pdGNvc3QSdQoLR2V0VW5pdFR5cGUSJC5ibHVlYXBpLmNvdmVyLnYxLkdldFVuaXRUeXBlUmVxdWVzdBolLmJsdWVhcGkuY292ZXIudjEuR2V0VW5pdFR5cGVSZXNwb25zZSIZgtPkkwITEhEvdjEvdW5pdGNvc3Qve2lkfRKBAQoOVXBkYXRlVW5pdFR5cGUSJy5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVuaXRUeXBlUmVxdWVzdBooLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVW5pdFR5cGVSZXNwb25zZSIcgtPkkwIWOgEqGhEvdjEvdW5pdGNvc3Qve2lkfRJ+Cg5EZWxldGVVbml0VHlwZRInLmJsdWVhcGkuY292ZXIudjEuRGVsZXRlVW5pdFR5cGVSZXF1ZXN0GiguYmx1ZWFwaS5jb3Zlci52MS5EZWxldGVVbml0VHlwZVJlc3BvbnNlIhmC0+STAhMqES92MS91bml0Y29zdC97aWR9EnYKCk1lcmdlVW5pdHMSIy5ibHVlYXBpLmNvdmVyLnYxLk1lcmdlVW5pdHNSZXF1ZXN0GiQuYmx1ZWFwaS5jb3Zlci52MS5NZXJnZVVuaXRzUmVzcG9uc2UiHYLT5JMCFzoBKiISL3YxL3VuaXRjb3N0L21lcmdlEpEBChJMaXN0U3VnZ2VzdGVkVW5pdHMSKy5ibHVlYXBpLmNvdmVyLnYxLkxpc3RTdWdnZXN0ZWRVbml0c1JlcXVlc3QaLC5ibHVlYXBpLmNvdmVyLnYxLkxpc3RTdWdnZXN0ZWRVbml0c1Jlc3BvbnNlIiCC0+STAhoSGC92MS91bml0Y29zdC9hdXRvc3VnZ2VzdBKdAQoTTWVyZ2VTdWdnZXN0ZWRVbml0cxIsLmJsdWVhcGkuY292ZXIudjEuTWVyZ2VTdWdnZXN0ZWRVbml0c1JlcXVlc3QaLS5ibHVlYXBpLmNvdmVyLnYxLk1lcmdlU3VnZ2VzdGVkVW5pdHNSZXNwb25zZSIpgtPkkwIjOgEqIh4vdjEvdW5pdGNvc3QvYXV0b3N1Z2dlc3QvbWVyZ2USqgEKF0NyZWF0ZVVuaXRGcm9tU3VnZ2VzdGVkEjAuYmx1ZWFwaS5jb3Zlci52MS5DcmVhdGVVbml0RnJvbVN1Z2dlc3RlZFJlcXVlc3QaMS5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZVVuaXRGcm9tU3VnZ2VzdGVkUmVzcG9uc2UiKoLT5JMCJDoBKiIfL3YxL3VuaXRjb3N0L2F1dG9zdWdnZXN0L2NyZWF0ZRKYAQoTTGlzdFNoYXJlZFJlc291cmNlcxIsLmJsdWVhcGkuY292ZXIudjEuTGlzdFNoYXJlZFJlc291cmNlc1JlcXVlc3QaLS5ibHVlYXBpLmNvdmVyLnYxLkxpc3RTaGFyZWRSZXNvdXJjZXNSZXNwb25zZSIkgtPkkwIeEhwvdjEvdW5pdGNvc3Qvc2hhcmVkcmVzb3VyY2VzEqABChRDcmVhdGVTaGFyZWRSZXNvdXJjZRIuLmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlU2hhcmVkUmVzb3VyY2VzUmVxdWVzdBovLmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlU2hhcmVkUmVzb3VyY2VzUmVzcG9uc2UiJ4LT5JMCIToBKiIcL3YxL3VuaXRjb3N0L3NoYXJlZHJlc291cmNlcxKZAQoRR2V0U2hhcmVkUmVzb3VyY2USKy5ibHVlYXBpLmNvdmVyLnYxLkdldFNoYXJlZFJlc291cmNlc1JlcXVlc3QaLC5ibHVlYXBpLmNvdmVyLnYxLkdldFNoYXJlZFJlc291cmNlc1Jlc3BvbnNlIimC0+STAiMSIS92MS91bml0Y29zdC9zaGFyZWRyZXNvdXJjZXMve2lkfRKlAQoUVXBkYXRlU2hhcmVkUmVzb3VyY2USLi5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVNoYXJlZFJlc291cmNlc1JlcXVlc3QaLy5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVNoYXJlZFJlc291cmNlc1Jlc3BvbnNlIiyC0+STAiY6ASoaIS92MS91bml0Y29zdC9zaGFyZWRyZXNvdXJjZXMve2lkfRKiAQoURGVsZXRlU2hhcmVkUmVzb3VyY2USLi5ibHVlYXBpLmNvdmVyLnYxLkRlbGV0ZVNoYXJlZFJlc291cmNlc1JlcXVlc3QaLy5ibHVlYXBpLmNvdmVyLnYxLkRlbGV0ZVNoYXJlZFJlc291cmNlc1Jlc3BvbnNlIimC0+STAiMqIS92MS91bml0Y29zdC9zaGFyZWRyZXNvdXJjZXMve2lkfRKEAQoPTGlzdFVuaXRNZXRyaWNzEiguYmx1ZWFwaS5jb3Zlci52MS5MaXN0VW5pdE1ldHJpY3NSZXF1ZXN0GikuYmx1ZWFwaS5jb3Zlci52MS5MaXN0VW5pdE1ldHJpY3NSZXNwb25zZSIcgtPkkwIWEhQvdjEvdW5pdGNvc3QvbWV0cmljcxKKAQoQQ3JlYXRlVW5pdE1ldHJpYxIpLmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlVW5pdE1ldHJpY1JlcXVlc3QaKi5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZVVuaXRNZXRyaWNSZXNwb25zZSIfgtPkkwIZOgEqIhQvdjEvdW5pdGNvc3QvbWV0cmljcxKDAQoNR2V0VW5pdE1ldHJpYxImLmJsdWVhcGkuY292ZXIudjEuR2V0VW5pdE1ldHJpY1JlcXVlc3QaJy5ibHVlYXBpLmNvdmVyLnYxLkdldFVuaXRNZXRyaWNSZXNwb25zZSIhgtPkkwIbEhkvdjEvdW5pdGNvc3QvbWV0cmljcy97aWR9Eo8BChBVcGRhdGVVbml0TWV0cmljEikuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVVbml0TWV0cmljUmVxdWVzdBoqLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVW5pdE1ldHJpY1Jlc3BvbnNlIiSC0+STAh46ASoaGS92MS91bml0Y29zdC9tZXRyaWNzL3tpZH0SjAEKEERlbGV0ZVVuaXRNZXRyaWMSKS5ibHVlYXBpLmNvdmVyLnYxLkRlbGV0ZVVuaXRNZXRyaWNSZXF1ZXN0GiouYmx1ZWFwaS5jb3Zlci52MS5EZWxldGVVbml0TWV0cmljUmVzcG9uc2UiIYLT5JMCGyoZL3YxL3VuaXRjb3N0L21ldHJpY3Mve2lkfRK2AQoYQ29uZmlybUdvb2dsZVNoZWV0QWNjZXNzEjEuYmx1ZWFwaS5jb3Zlci52MS5Db25maXJtR29vZ2xlU2hlZXRBY2Nlc3NSZXF1ZXN0GjIuYmx1ZWFwaS5jb3Zlci52MS5Db25maXJtR29vZ2xlU2hlZXRBY2Nlc3NSZXNwb25zZSIzgtPkkwItOgEqIigvdjEvdW5pdGNvc3QvbWV0cmljcy9nb29nbGVzaGVldC9jb25maXJtEqQBChJQcmV2aWV3R29vZ2xlU2hlZXQSKy5ibHVlYXBpLmNvdmVyLnYxLlByZXZpZXdHb29nbGVTaGVldFJlcXVlc3QaLC5ibHVlYXBpLmNvdmVyLnYxLlByZXZpZXdHb29nbGVTaGVldFJlc3BvbnNlIjOC0+STAi06ASoiKC92MS91bml0Y29zdC9tZXRyaWNzL2dvb2dsZXNoZWV0L3ByZXZpZXcSqgEKFUdldENsb3Vkd2F0Y2hNZXRhZGF0YRIuLmJsdWVhcGkuY292ZXIudjEuR2V0Q2xvdWR3YXRjaE1ldGFkYXRhUmVxdWVzdBovLmJsdWVhcGkuY292ZXIudjEuR2V0Q2xvdWR3YXRjaE1ldGFkYXRhUmVzcG9uc2UiMILT5JMCKhIoL3YxL3VuaXRjb3N0L21ldHJpY3MvY2xvdWR3YXRjaC9tZXRhZGF0YRKEAQoPVmVyaWZ5QVBJQWNjZXNzEiguYmx1ZWFwaS5jb3Zlci52MS5WZXJpZnlBUElBY2Nlc3NSZXF1ZXN0GikuYmx1ZWFwaS5jb3Zlci52MS5WZXJpZnlBUElBY2Nlc3NSZXNwb25zZSIcgtPkkwIWEhQvdjEvYXBpYWNjZXNzL3ZlcmlmeRKJAQoRR2V0QUlDb3N0QW5kVXNhZ2USKi5ibHVlYXBpLmNvdmVyLnYxLkdldEFJQ29zdEFuZFVzYWdlUmVxdWVzdBorLmJsdWVhcGkuY292ZXIudjEuR2V0QUlDb3N0QW5kVXNhZ2VSZXNwb25zZSIbgtPkkwIVOgEqIhAvdjEvYWkvY29zdHVzYWdlEpcBChVHZXRDb250YWluZXJDb3N0VXNhZ2USKy5ibHVlYXBpLmNvdmVyLnYxLkNvbnRhaW5lckNvc3RVc2FnZVJlcXVlc3QaLC5ibHVlYXBpLmNvdmVyLnYxLkNvbnRhaW5lckNvc3RVc2FnZVJlc3BvbnNlIiOC0+STAh06ASoiGC92MS9jb250YWluZXJzL2Nvc3R1c2FnZRKHAQoQUG9wdWxhdGVEZW1vRGF0YRIpLmJsdWVhcGkuY292ZXIudjEuUG9wdWxhdGVEZW1vRGF0YVJlcXVlc3QaKi5ibHVlYXBpLmNvdmVyLnYxLlBvcHVsYXRlRGVtb0RhdGFSZXNwb25zZSIcgtPkkwIWOgEqIhEvdjEvZGVtby9wb3B1bGF0ZRJ7Cg1SZXNldERlbW9EYXRhEiYuYmx1ZWFwaS5jb3Zlci52MS5SZXNldERlbW9EYXRhUmVxdWVzdBonLmJsdWVhcGkuY292ZXIudjEuUmVzZXREZW1vRGF0YVJlc3BvbnNlIhmC0+STAhM6ASoiDi92MS9kZW1vL3Jlc2V0EpkBCg9HZXREaXNjb3VudFBsYW4SKC5ibHVlYXBpLmNvdmVyLnYxLkdldERpc2NvdW50UGxhblJlcXVlc3QaKS5ibHVlYXBpLmNvdmVyLnYxLkdldERpc2NvdW50UGxhblJlc3BvbnNlIjGC0+STAis6ASoiJi92MS97dmVuZG9yfS9kaXNjb3VudHBsYW4ve29yZ0lkfTpyZWFkEn8KDkdldENvc3RVc2FnZVYyEicuYmx1ZWFwaS5jb3Zlci52MS5HZXRDb3N0VXNhZ2VWMlJlcXVlc3QaKC5ibHVlYXBpLmNvdmVyLnYxLkdldENvc3RVc2FnZVYyUmVzcG9uc2UiGILT5JMCEjoBKiINL3YxL2Nvc3R1c2FnZTABEqgBChVMaXN0Tm9ucGVyZm9ybWluZ1JhdGUSLi5ibHVlYXBpLmNvdmVyLnYxLkxpc3ROb25wZXJmb3JtaW5nUmF0ZVJlcXVlc3QaLy5ibHVlYXBpLmNvdmVyLnYxLkxpc3ROb25wZXJmb3JtaW5nUmF0ZVJlc3BvbnNlIi6C0+STAig6ASoiIy92MS9yZXBvcnRzL3JhdGUvbm9ucGVyZm9ybWluZzpyZWFkEqgBChVMaXN0VW50YWdnZWRSZXNvdXJjZXMSLi5ibHVlYXBpLmNvdmVyLnYxLkxpc3RVbnRhZ2dlZFJlc291cmNlc1JlcXVlc3QaLy5ibHVlYXBpLmNvdmVyLnYxLkxpc3RVbnRhZ2dlZFJlc291cmNlc1Jlc3BvbnNlIi6C0+STAig6ASoiIy92MS9yZXBvcnRzL3Jlc291cmNlcy91bnRhZ2dlZDpyZWFkEn8KDUxpc3RGb3JlY2FzdHMSJi5ibHVlYXBpLmNvdmVyLnYxLkxpc3RGb3JlY2FzdHNSZXF1ZXN0GicuYmx1ZWFwaS5jb3Zlci52MS5MaXN0Rm9yZWNhc3RzUmVzcG9uc2UiHYLT5JMCFzoBKiISL3YxL2ZvcmVjYXN0czpyZWFkEokBChJDcmVhdGVDb3N0Rm9yZWNhc3QSKy5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZUNvc3RGb3JlY2FzdFJlcXVlc3QaLC5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZUNvc3RGb3JlY2FzdFJlc3BvbnNlIhiC0+STAhI6ASoiDS92MS9mb3JlY2FzdHMSggEKD0dldENvc3RGb3JlY2FzdBIoLmJsdWVhcGkuY292ZXIudjEuR2V0Q29zdEZvcmVjYXN0UmVxdWVzdBopLmJsdWVhcGkuY292ZXIudjEuR2V0Q29zdEZvcmVjYXN0UmVzcG9uc2UiGoLT5JMCFBISL3YxL2ZvcmVjYXN0cy97aWR9Eo4BChJVcGRhdGVDb3N0Rm9yZWNhc3QSKy5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZUNvc3RGb3JlY2FzdFJlcXVlc3QaLC5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZUNvc3RGb3JlY2FzdFJlc3BvbnNlIh2C0+STAhc6ASoaEi92MS9mb3JlY2FzdHMve2lkfRKLAQoSRGVsZXRlQ29zdEZvcmVjYXN0EisuYmx1ZWFwaS5jb3Zlci52MS5EZWxldGVDb3N0Rm9yZWNhc3RSZXF1ZXN0GiwuYmx1ZWFwaS5jb3Zlci52MS5EZWxldGVDb3N0Rm9yZWNhc3RSZXNwb25zZSIagtPkkwIUKhIvdjEvZm9yZWNhc3RzL3tpZH0SmwEKFEdldENvc3RGb3JlY2FzdHNEYXRhEi0uYmx1ZWFwaS5jb3Zlci52MS5HZXRDb3N0Rm9yZWNhc3RzRGF0YVJlcXVlc3QaLi5ibHVlYXBpLmNvdmVyLnYxLkdldENvc3RGb3JlY2FzdHNEYXRhUmVzcG9uc2UiIoLT5JMCHDoBKiIXL3YxL2ZvcmVjYXN0cy9kYXRhOnJlYWQwARKPAQoTR2V0UmVjb21tZW5kYXRpb25WMxIsLmJsdWVhcGkuY292ZXIudjEuR2V0UmVjb21tZW5kYXRpb25WM1JlcXVlc3QaLS5ibHVlYXBpLmNvdmVyLnYxLkdldFJlY29tbWVuZGF0aW9uVjNSZXNwb25zZSIbgtPkkwIVEhMvdjEvcmVjb21tZW5kYXRpb25zEpwBChVMaXN0UmVjb21tZW5kYXRpb25zVjMSLi5ibHVlYXBpLmNvdmVyLnYxLkxpc3RSZWNvbW1lbmRhdGlvbnNWM1JlcXVlc3QaJy5ibHVlYXBpLmNvdmVyLnYxLlJlY29tbWVuZGF0aW9uU3VtbWFyeSIogtPkkwIiOgEqIh0vdjEvcmVjb21tZW5kYXRpb25zL3N1bW1hcmllczABEqUBChdFeGVjdXRlUmVjb21tZW5kYXRpb25WMxIwLmJsdWVhcGkuY292ZXIudjEuRXhlY3V0ZVJlY29tbWVuZGF0aW9uVjNSZXF1ZXN0GjEuYmx1ZWFwaS5jb3Zlci52MS5FeGVjdXRlUmVjb21tZW5kYXRpb25WM1Jlc3BvbnNlIiWC0+STAh86ASoiGi92MS9yZWNvbW1lbmRhdGlvbi9leGVjdXRlEnYKC0ludml0ZVVzZXJzEiQuYmx1ZWFwaS5jb3Zlci52MS5JbnZpdGVVc2Vyc1JlcXVlc3QaJS5ibHVlYXBpLmNvdmVyLnYxLkludml0ZVVzZXJzUmVzcG9uc2UiGoLT5JMCFDoBKiIPL3YxL3VzZXIvaW52aXRlEm4KCkRlbGV0ZVVzZXISIy5ibHVlYXBpLmNvdmVyLnYxLkRlbGV0ZVVzZXJSZXF1ZXN0GiQuYmx1ZWFwaS5jb3Zlci52MS5EZWxldGVVc2VyUmVzcG9uc2UiFYLT5JMCDyoNL3YxL3VzZXIve2lkfRKCAQoOVXBkYXRlVXNlclJvbGUSJy5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVzZXJSb2xlUmVxdWVzdBooLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVXNlclJvbGVSZXNwb25zZSIdgtPkkwIXOgEqGhIvdjEvdXNlci97dXNlcl9pZH0SZwoJTGlzdFVzZXJzEiIuYmx1ZWFwaS5jb3Zlci52MS5MaXN0VXNlcnNSZXF1ZXN0GiMuYmx1ZWFwaS5jb3Zlci52MS5MaXN0VXNlcnNSZXNwb25zZSIRgtPkkwILEgkvdjEvdXNlcnMSgAEKDFJlaW52aXRlVXNlchIlLmJsdWVhcGkuY292ZXIudjEuUmVpbnZpdGVVc2VyUmVxdWVzdBomLmJsdWVhcGkuY292ZXIudjEuUmVpbnZpdGVVc2VyUmVzcG9uc2UiIYLT5JMCGzoBKiIWL3YxL3VzZXIve2lkfS9yZWludml0ZRqXAZJBkwESQihCRVRBKSBDb3ZlciBBUEkuIEJhc2UgVVJMOiBodHRwczovL2FwaS5hbHBoYXVzLmNsb3VkL20vYmx1ZS9jb3ZlchpNChJTZXJ2aWNlIGRlZmluaXRpb24SN2h0dHBzOi8vZ2l0aHViLmNvbS9hbHBoYXVzbGFicy9ibHVlYXBpL3RyZWUvbWFpbi9jb3Zlci9CSwoXY2xvdWQuYWxwaGF1cy5hcGkuY292ZXJCCkNvdmVyUHJvdG9aJGdpdGh1Yi5jb20vYWxwaGF1c2xhYnMvYmx1ZWFwaS9jb3ZlcmIGcHJvdG8z", [file_api_cover_optimizationrecommendation, file_api_cover_recommendation_recommendation, file_api_cover_attribute, file_api_cover_user, file_api_cover_view, file_api_cover_unitcost, file_api_cover_costgroup, file_api_cover_accountaccess, file_api_cover_costforecast, file_api_cover_discountplan, file_api_cover_discountrecommendation, file_api_cover_rightsizingrecommendation, file_api_cover_alert, file_api_cover_budget, file_api_cover_insightreport, file_protos_operation, file_google_api_annotations, file_google_protobuf_empty, file_google_protobuf_struct, file_protoc_gen_openapiv2_options_annotations]);
51
+ fileDesc("ChRjb3Zlci92MS9jb3Zlci5wcm90bxIQYmx1ZWFwaS5jb3Zlci52MSITChFHZXRNeVJvbGVzUmVxdWVzdCI8ChJHZXRNeVJvbGVzUmVzcG9uc2USJgoFcm9sZXMYASADKAsyFy5ibHVlYXBpLmFwaS5jb3Zlci5Sb2xlIhwKDkdldFVzZXJSZXF1ZXN0EgoKAmlkGAEgASgJIjgKD0dldFVzZXJSZXNwb25zZRIlCgR1c2VyGAEgASgLMhcuYmx1ZWFwaS5hcGkuY292ZXIuVXNlciIhChNSZWludml0ZVVzZXJSZXF1ZXN0EgoKAmlkGAEgASgJIj0KFFJlaW52aXRlVXNlclJlc3BvbnNlEiUKBHVzZXIYASABKAsyFy5ibHVlYXBpLmFwaS5jb3Zlci5Vc2VyIhIKEExpc3RVc2Vyc1JlcXVlc3Qi0gEKEUxpc3RVc2Vyc1Jlc3BvbnNlEj4KBXVzZXJzGAEgAygLMi8uYmx1ZWFwaS5jb3Zlci52MS5MaXN0VXNlcnNSZXNwb25zZS5Vc2VyU3VtbWFyeRp9CgtVc2VyU3VtbWFyeRIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIMCgRuYW1lGAMgASgJEg0KBXJvbGVzGAQgAygJEhEKCWFjdGl2YXRlZBgFIAEoCBIOCgZhdmF0YXIYBiABKAkSEwoLY29sb3JfdGhlbWUYByABKAkikQEKFVVwZGF0ZVVzZXJSb2xlUmVxdWVzdBIPCgd1c2VyX2lkGAEgASgJEjsKBXJvbGVzGAIgAygLMiwuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVVc2VyUm9sZVJlcXVlc3QuUm9sZRoqCgRSb2xlEgoKAmlkGAEgASgJEhYKDmNvc3RfZ3JvdXBfaWRzGAIgAygJIj8KFlVwZGF0ZVVzZXJSb2xlUmVzcG9uc2USJQoEdXNlchgBIAEoCzIXLmJsdWVhcGkuYXBpLmNvdmVyLlVzZXIiHwoRRGVsZXRlVXNlclJlcXVlc3QSCgoCaWQYASABKAkiFAoSRGVsZXRlVXNlclJlc3BvbnNlIk0KEkludml0ZVVzZXJzUmVxdWVzdBIOCgZlbWFpbHMYASADKAkSDwoHcm9sZV9pZBgCIAEoCRIWCg5jb3N0X2dyb3VwX2lkcxgDIAMoCSI9ChNJbnZpdGVVc2Vyc1Jlc3BvbnNlEiYKBXVzZXJzGAEgAygLMhcuYmx1ZWFwaS5hcGkuY292ZXIuVXNlciLtAQoeRXhlY3V0ZVJlY29tbWVuZGF0aW9uVjNSZXF1ZXN0EgsKA2lkcxgBIAMoCRJRCgtleGVjdXRlVHlwZRgCIAEoDjI8LmJsdWVhcGkuY292ZXIudjEuRXhlY3V0ZVJlY29tbWVuZGF0aW9uVjNSZXF1ZXN0LkV4ZWN1dGVUeXBlImsKC0V4ZWN1dGVUeXBlEgsKB0RFRkFVTFQQABIUChBNQVJLX0FTX0VYRUNVVEVEEAESEQoNVU5ET19FWEVDVVRFRBACEhMKD1NVQk1JVF9URU1QTEFURRADEhEKDVJFVFJZX0VYRUNVVEUQBCJKCh9FeGVjdXRlUmVjb21tZW5kYXRpb25WM1Jlc3BvbnNlEicKBnJlc3VsdBgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiwwEKHExpc3RSZWNvbW1lbmRhdGlvbnNWM1JlcXVlc3QSEwoLY29zdGdyb3VwSWQYASABKAkSEAoIc3RhdHVzZXMYAiADKAkSTAoHZmlsdGVycxgDIAMoCzI7LmJsdWVhcGkuY292ZXIudjEuTGlzdFJlY29tbWVuZGF0aW9uc1YzUmVxdWVzdC5GaWx0ZXJzRW50cnkaLgoMRmlsdGVyc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEi9QMKFVJlY29tbWVuZGF0aW9uU3VtbWFyeRIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEg4KBnRhcmdldBgDIAEoCRISCgp0YXJnZXROYW1lGBIgASgJEhAKCGNhdGVnb3J5GAQgASgJEgwKBHR5cGUYBSABKAkSDgoGdmVuZG9yGA0gASgJEg4KBnNvdXJjZRgTIAEoCRIMCgRjb2RlGA4gASgJEhQKB3NlcnZpY2UYDyABKAlIAIgBARITCgZyZWdpb24YECABKAlIAYgBARIXCgpyZXNvdXJjZUlkGBEgASgJSAKIAQESHwoXZXN0aW1hdGVkTW9udGhseVNhdmluZ3MYBiABKAESIgoaZXN0aW1hdGVkTW9udGhseUJlZm9yZUNvc3QYByABKAESIQoZZXN0aW1hdGVkTW9udGhseUFmdGVyQ29zdBgIIAEoARIRCgRyaXNrGAkgASgJSAOIAQESEwoGZWZmb3J0GAogASgJSASIAQESDgoGc3RhdHVzGAsgASgJEjIKEWFkZGl0aW9uYWxEZXRhaWxzGAwgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEIKCghfc2VydmljZUIJCgdfcmVnaW9uQg0KC19yZXNvdXJjZUlkQgcKBV9yaXNrQgkKB19lZmZvcnQiKQoaR2V0UmVjb21tZW5kYXRpb25WM1JlcXVlc3QSCwoDaWRzGAEgAygJIpIFChtHZXRSZWNvbW1lbmRhdGlvblYzUmVzcG9uc2USWwoPcmVjb21tZW5kYXRpb25zGAEgAygLMkIuYmx1ZWFwaS5jb3Zlci52MS5HZXRSZWNvbW1lbmRhdGlvblYzUmVzcG9uc2UuUmVjb21tZW5kYXRpb25EZXRhaWwalQQKFFJlY29tbWVuZGF0aW9uRGV0YWlsEgoKAmlkGAEgASgJEgwKBG5hbWUYCSABKAkSDgoGdmVuZG9yGAIgASgJEg4KBnNvdXJjZRgDIAEoCRIMCgRjb2RlGAQgASgJEhQKB3NlcnZpY2UYBSABKAlIAIgBARIOCgZ0YXJnZXQYByABKAkSEgoKdGFyZ2V0TmFtZRgIIAEoCRIUCgxkYXRlRGV0ZWN0ZWQYBiABKAkSEwoGcmVnaW9uGAogASgJSAGIAQESIgoaZXN0aW1hdGVkTW9udGhseUJlZm9yZUNvc3QYCyABKAESIQoZZXN0aW1hdGVkTW9udGhseUFmdGVyQ29zdBgMIAEoARIfChdlc3RpbWF0ZWRNb250aGx5U2F2aW5ncxgNIAEoARIXCgpyZXNvdXJjZUlkGA4gASgJSAKIAQESEAoIY2F0ZWdvcnkYDyABKAkSDAoEdHlwZRgQIAEoCRITCgtsYXN0VXBkYXRlZBgRIAEoCRIOCgZzdGF0dXMYEiABKAkSEQoEcmlzaxgTIAEoCUgDiAEBEhMKBmVmZm9ydBgUIAEoCUgEiAEBEigKB2RldGFpbHMYFSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0QgoKCF9zZXJ2aWNlQgkKB19yZWdpb25CDQoLX3Jlc291cmNlSWRCBwoFX3Jpc2tCCQoHX2VmZm9ydCLqAQobR2V0Q29zdEZvcmVjYXN0c0RhdGFSZXF1ZXN0EhMKC2Nvc3RHcm91cElkGAEgASgJEhEKCXN0YXJ0VGltZRgCIAEoCRIPCgdlbmRUaW1lGAMgASgJEk4KC2dyYW51bGFyaXR5GAQgASgOMjkuYmx1ZWFwaS5jb3Zlci52MS5HZXRDb3N0Rm9yZWNhc3RzRGF0YVJlcXVlc3QuR3JhbnVsYXJpdHkiQgoLR3JhbnVsYXJpdHkSGwoXR1JBTlVMQVJJVFlfVU5TUEVDSUZJRUQQABIJCgVEQUlMWRABEgsKB01PTlRITFkQAiJqChxHZXRDb3N0Rm9yZWNhc3RzRGF0YVJlc3BvbnNlEgwKBGRhdGUYASABKAkSFAoMZm9yZWNhc3RDb3N0GAIgASgBEhIKCnVwcGVyQm91bmQYAyABKAESEgoKbG93ZXJCb3VuZBgEIAEoASIWChRMaXN0Rm9yZWNhc3RzUmVxdWVzdCJcChVMaXN0Rm9yZWNhc3RzUmVzcG9uc2USQwoTY29zdEZvcmVjYXN0RGV0YWlscxgBIAMoCzImLmJsdWVhcGkuYXBpLmNvdmVyLkNvc3RGb3JlY2FzdERldGFpbHMi8wEKGUNyZWF0ZUNvc3RGb3JlY2FzdFJlcXVlc3QSFAoMZm9yZWNhc3ROYW1lGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEi8KCWNvc3RHcm91cBgDIAEoCzIcLmJsdWVhcGkuYXBpLmNvdmVyLkNvc3RHcm91cBIbChNwYXN0QWN0dWFsQ29zdFJhbmdlGAQgASgDEhkKEWxvb2tGb3J3YXJkUGVyaW9kGAUgASgDEkIKE2V4dGVybmFsQWRqdXN0bWVudHMYBiADKAsyJS5ibHVlYXBpLmFwaS5jb3Zlci5FeHRlcm5hbEFkanVzdG1lbnQigAIKGkNyZWF0ZUNvc3RGb3JlY2FzdFJlc3BvbnNlEgoKAmlkGAEgASgJEhQKDGZvcmVjYXN0TmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRIvCgljb3N0R3JvdXAYBCABKAsyHC5ibHVlYXBpLmFwaS5jb3Zlci5Db3N0R3JvdXASGwoTcGFzdEFjdHVhbENvc3RSYW5nZRgFIAEoAxIZChFsb29rRm9yd2FyZFBlcmlvZBgGIAEoAxJCChNleHRlcm5hbEFkanVzdG1lbnRzGAcgAygLMiUuYmx1ZWFwaS5hcGkuY292ZXIuRXh0ZXJuYWxBZGp1c3RtZW50IiQKFkdldENvc3RGb3JlY2FzdFJlcXVlc3QSCgoCaWQYASABKAkivwIKF0dldENvc3RGb3JlY2FzdFJlc3BvbnNlEgoKAmlkGAEgASgJEhQKDGZvcmVjYXN0TmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRIvCgljb3N0R3JvdXAYBCABKAsyHC5ibHVlYXBpLmFwaS5jb3Zlci5Db3N0R3JvdXASGwoTcGFzdEFjdHVhbENvc3RSYW5nZRgFIAEoAxIZChFsb29rRm9yd2FyZFBlcmlvZBgGIAEoAxJCChNleHRlcm5hbEFkanVzdG1lbnRzGAcgAygLMiUuYmx1ZWFwaS5hcGkuY292ZXIuRXh0ZXJuYWxBZGp1c3RtZW50EhEKCWNyZWF0ZWRCeRgIIAEoCRIUCgxjcmVhdGlvbkRhdGUYCSABKAkSFwoPbGFzdFVwZGF0ZWREYXRlGAogASgJIv8BChlVcGRhdGVDb3N0Rm9yZWNhc3RSZXF1ZXN0EgoKAmlkGAEgASgJEhQKDGZvcmVjYXN0TmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRIvCgljb3N0R3JvdXAYBCABKAsyHC5ibHVlYXBpLmFwaS5jb3Zlci5Db3N0R3JvdXASGwoTcGFzdEFjdHVhbENvc3RSYW5nZRgFIAEoAxIZChFsb29rRm9yd2FyZFBlcmlvZBgGIAEoAxJCChNleHRlcm5hbEFkanVzdG1lbnRzGAcgAygLMiUuYmx1ZWFwaS5hcGkuY292ZXIuRXh0ZXJuYWxBZGp1c3RtZW50IsICChpVcGRhdGVDb3N0Rm9yZWNhc3RSZXNwb25zZRIKCgJpZBgBIAEoCRIUCgxmb3JlY2FzdE5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSLwoJY29zdEdyb3VwGAQgASgLMhwuYmx1ZWFwaS5hcGkuY292ZXIuQ29zdEdyb3VwEhsKE3Bhc3RBY3R1YWxDb3N0UmFuZ2UYBSABKAMSGQoRbG9va0ZvcndhcmRQZXJpb2QYBiABKAMSQgoTZXh0ZXJuYWxBZGp1c3RtZW50cxgHIAMoCzIlLmJsdWVhcGkuYXBpLmNvdmVyLkV4dGVybmFsQWRqdXN0bWVudBIRCgljcmVhdGVkQnkYCCABKAkSFAoMY3JlYXRpb25EYXRlGAkgASgJEhcKD2xhc3RVcGRhdGVkRGF0ZRgKIAEoCSInChlEZWxldGVDb3N0Rm9yZWNhc3RSZXF1ZXN0EgoKAmlkGAEgASgJIigKGkRlbGV0ZUNvc3RGb3JlY2FzdFJlc3BvbnNlEgoKAmlkGAEgASgJIm8KFkdldENvc3RVc2FnZVYyUmVzcG9uc2USDQoFdmFsdWUYASABKAESDAoEZGF0ZRgCIAEoCRIOCgZ2ZW5kb3IYAyABKAkSKAoHZGV0YWlscxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QivwQKFUdldENvc3RVc2FnZVYyUmVxdWVzdBITCgtjb3N0R3JvdXBJZBgBIAEoCRIRCglzdGFydFRpbWUYAiABKAkSDwoHZW5kVGltZRgDIAEoCRJICgtncmFudWxhcml0eRgEIAEoDjIzLmJsdWVhcGkuY292ZXIudjEuR2V0Q29zdFVzYWdlVjJSZXF1ZXN0LkdyYW51bGFyaXR5EhAKCGdyb3VwQnlzGAUgAygJEkIKCGNhdGVnb3J5GAYgASgOMjAuYmx1ZWFwaS5jb3Zlci52MS5HZXRDb3N0VXNhZ2VWMlJlcXVlc3QuQ2F0ZWdvcnkSEAoIY3VycmVuY3kYByABKAkSOgoKYXdzT3B0aW9ucxgIIAEoCzImLmJsdWVhcGkuYXBpLmNvdmVyLkNvc3RHcm91cEF3c09wdGlvbnMSRAoPYXp1cmVjc3BPcHRpb25zGAkgASgLMisuYmx1ZWFwaS5hcGkuY292ZXIuQ29zdEdyb3VwQXp1cmVDc3BPcHRpb25zEjoKCmdjcE9wdGlvbnMYCiABKAsyJi5ibHVlYXBpLmFwaS5jb3Zlci5Db3N0R3JvdXBHY3BPcHRpb25zIkIKC0dyYW51bGFyaXR5EhsKF0dSQU5VTEFSSVRZX1VOU1BFQ0lGSUVEEAASCQoFREFJTFkQARILCgdNT05USExZEAIiOQoIQ2F0ZWdvcnkSGAoUQ2F0ZWdvcnlfVU5TUEVDSUZJRUQQABIICgRDT1NUEAESCQoFVVNBR0UQAiIZChdQb3B1bGF0ZURlbW9EYXRhUmVxdWVzdCIaChhQb3B1bGF0ZURlbW9EYXRhUmVzcG9uc2UiFgoUUmVzZXREZW1vRGF0YVJlcXVlc3QiFwoVUmVzZXREZW1vRGF0YVJlc3BvbnNlIt8GChlDb250YWluZXJDb3N0VXNhZ2VSZXF1ZXN0EhMKC2Nvc3RHcm91cElkGAEgASgJEg4KBnZlbmRvchgCIAEoCRJKCgptZXRyaWNUeXBlGAMgASgOMjYuYmx1ZWFwaS5jb3Zlci52MS5Db250YWluZXJDb3N0VXNhZ2VSZXF1ZXN0Lk1ldHJpY1R5cGUSEQoJc3RhcnRUaW1lGAQgASgJEg8KB2VuZFRpbWUYBSABKAkSUAoLZ3JhbnVsYXJpdHkYBiABKA4yOy5ibHVlYXBpLmNvdmVyLnYxLkNvbnRhaW5lckNvc3RVc2FnZVJlcXVlc3QuVGltZUdyYW51bGFyaXR5EhAKCGdyb3VwQnlzGAcgAygJEksKB2ZpbHRlcnMYCCADKAsyOi5ibHVlYXBpLmNvdmVyLnYxLkNvbnRhaW5lckNvc3RVc2FnZVJlcXVlc3QuRmlsdGVyQ3JpdGVyaWESTAoLc2VydmljZVR5cGUYCSABKA4yNy5ibHVlYXBpLmNvdmVyLnYxLkNvbnRhaW5lckNvc3RVc2FnZVJlcXVlc3QuU2VydmljZVR5cGUazwEKDkZpbHRlckNyaXRlcmlhEgsKA2tleRgBIAEoCRJbCghvcGVyYXRvchgCIAEoDjJJLmJsdWVhcGkuY292ZXIudjEuQ29udGFpbmVyQ29zdFVzYWdlUmVxdWVzdC5GaWx0ZXJDcml0ZXJpYS5GaWx0ZXJPcGVyYXRvchINCgV2YWx1ZRgDIAEoCSJECg5GaWx0ZXJPcGVyYXRvchIYChRPUEVSQVRPUl9VTlNQRUNJRklFRBAAEgkKBUVRVUFMEAESDQoJTk9UX0VRVUFMEAIiRgoPVGltZUdyYW51bGFyaXR5EhsKF0dSQU5VTEFSSVRZX1VOU1BFQ0lGSUVEEAASCQoFREFJTFkQARILCgdNT05USExZEAIiWgoKTWV0cmljVHlwZRIWChJNRVRSSUNfVU5TUEVDSUZJRUQQABIICgRDT1NUEAESCQoFVVNBR0UQAhIOCgpFRkZJQ0lFTkNZEAMSDwoLVU5VU0VEX0NPU1QQBCI4CgtTZXJ2aWNlVHlwZRIXChNTRVJWSUNFX1VOU1BFQ0lGSUVEEAASBwoDRUNTEAESBwoDRUtTEAIi1woKGkNvbnRhaW5lckNvc3RVc2FnZVJlc3BvbnNlEksKB3Jlc3VsdHMYASADKAsyOi5ibHVlYXBpLmNvdmVyLnYxLkNvbnRhaW5lckNvc3RVc2FnZVJlc3BvbnNlLkdyb3VwZWRSZXN1bHQSUwoKaGlnaGxpZ2h0cxgCIAEoCzI/LmJsdWVhcGkuY292ZXIudjEuQ29udGFpbmVyQ29zdFVzYWdlUmVzcG9uc2UuUmVzb3VyY2VIaWdobGlnaHRzEhEKCXRvdGFsQ29zdBgDIAEoARIVCg1hdmdFZmZpY2llbmN5GAQgASgBGkQKCkNvc3RNZXRyaWMSDgoGYW1vdW50GAEgASgBEhAKCGN1cnJlbmN5GAIgASgJEhQKDHVudXNlZEFtb3VudBgDIAEoARqQAQoLVXNhZ2VNZXRyaWMSDAoEdW5pdBgBIAEoCRIWCg5yZXNlcnZlZEFtb3VudBgCIAEoARIUCgxhY3R1YWxBbW91bnQYAyABKAESEgoKZWZmaWNpZW5jeRgEIAEoARIWCg5jcHVVdGlsaXphdGlvbhgFIAEoARIZChFtZW1vcnlVdGlsaXphdGlvbhgGIAEoARrBAQoPTWV0cmljRGF0YVBvaW50EgwKBGRhdGUYASABKAkSRwoEY29zdBgCIAEoCzI3LmJsdWVhcGkuY292ZXIudjEuQ29udGFpbmVyQ29zdFVzYWdlUmVzcG9uc2UuQ29zdE1ldHJpY0gAEkkKBXVzYWdlGAMgASgLMjguYmx1ZWFwaS5jb3Zlci52MS5Db250YWluZXJDb3N0VXNhZ2VSZXNwb25zZS5Vc2FnZU1ldHJpY0gAQgwKCm1ldHJpY0RhdGEaTAoRUmVzb3VyY2VIaWdobGlnaHQSEgoKcmVzb3VyY2VJZBgBIAEoCRIUCgxyZXNvdXJjZU5hbWUYAiABKAkSDQoFdmFsdWUYAyABKAEahAMKElJlc291cmNlSGlnaGxpZ2h0cxJaChJoaWdoZXN0Q2x1c3RlckNvc3QYASABKAsyPi5ibHVlYXBpLmNvdmVyLnYxLkNvbnRhaW5lckNvc3RVc2FnZVJlc3BvbnNlLlJlc291cmNlSGlnaGxpZ2h0ElkKEWhpZ2hlc3RVbnVzZWRDb3N0GAIgASgLMj4uYmx1ZWFwaS5jb3Zlci52MS5Db250YWluZXJDb3N0VXNhZ2VSZXNwb25zZS5SZXNvdXJjZUhpZ2hsaWdodBJbChNoaWdoZXN0V29ya2xvYWRDb3N0GAMgASgLMj4uYmx1ZWFwaS5jb3Zlci52MS5Db250YWluZXJDb3N0VXNhZ2VSZXNwb25zZS5SZXNvdXJjZUhpZ2hsaWdodBJaChJoaWdoZXN0Q29tcHV0ZUNvc3QYBCABKAsyPi5ibHVlYXBpLmNvdmVyLnYxLkNvbnRhaW5lckNvc3RVc2FnZVJlc3BvbnNlLlJlc291cmNlSGlnaGxpZ2h0GvoBCg1Hcm91cGVkUmVzdWx0El4KCmF0dHJpYnV0ZXMYASADKAsySi5ibHVlYXBpLmNvdmVyLnYxLkNvbnRhaW5lckNvc3RVc2FnZVJlc3BvbnNlLkdyb3VwZWRSZXN1bHQuQXR0cmlidXRlc0VudHJ5ElYKEG1ldHJpY0RhdGFQb2ludHMYAiADKAsyPC5ibHVlYXBpLmNvdmVyLnYxLkNvbnRhaW5lckNvc3RVc2FnZVJlc3BvbnNlLk1ldHJpY0RhdGFQb2ludBoxCg9BdHRyaWJ1dGVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKPBAoYR2V0QUlDb3N0QW5kVXNhZ2VSZXF1ZXN0EhMKC2Nvc3RHcm91cElkGAEgASgJEg4KBnZlbmRvchgCIAEoCRIRCglzdGFydFRpbWUYAyABKAkSDwoHZW5kVGltZRgEIAEoCRJLCgtncmFudWxhcml0eRgFIAEoDjI2LmJsdWVhcGkuY292ZXIudjEuR2V0QUlDb3N0QW5kVXNhZ2VSZXF1ZXN0LkdyYW51bGFyaXR5EhAKCGdyb3VwQnlzGAYgAygJEkIKB2ZpbHRlcnMYByADKAsyMS5ibHVlYXBpLmNvdmVyLnYxLkdldEFJQ29zdEFuZFVzYWdlUmVxdWVzdC5GaWx0ZXIawgEKBkZpbHRlchILCgNrZXkYASABKAkSTAoIb3BlcmF0b3IYAiABKA4yOi5ibHVlYXBpLmNvdmVyLnYxLkdldEFJQ29zdEFuZFVzYWdlUmVxdWVzdC5GaWx0ZXIuT3BlcmF0b3ISDgoGdmFsdWVzGAMgAygJEg0KBXZhbHVlGAQgASgJIj4KCE9wZXJhdG9yEhgKFE9QRVJBVE9SX1VOU1BFQ0lGSUVEEAASCQoFRVFVQUwQARINCglOT1RfRVFVQUwQAiJCCgtHcmFudWxhcml0eRIbChdHUkFOVUxBUklUWV9VTlNQRUNJRklFRBAAEgkKBURBSUxZEAESCwoHTU9OVEhMWRACIqcEChlHZXRBSUNvc3RBbmRVc2FnZVJlc3BvbnNlEkMKB3Jlc3VsdHMYASADKAsyMi5ibHVlYXBpLmNvdmVyLnYxLkdldEFJQ29zdEFuZFVzYWdlUmVzcG9uc2UuUmVzdWx0GigKBENvc3QSDgoGYW1vdW50GAEgASgBEhAKCGN1cnJlbmN5GAIgASgJGiUKBVVzYWdlEgwKBHVuaXQYASABKAkSDgoGYW1vdW50GAIgASgBGpgBCgZNZXRyaWMSDAoEZGF0ZRgBIAEoCRI+CgRjb3N0GAIgASgLMjAuYmx1ZWFwaS5jb3Zlci52MS5HZXRBSUNvc3RBbmRVc2FnZVJlc3BvbnNlLkNvc3QSQAoFdXNhZ2UYAyABKAsyMS5ibHVlYXBpLmNvdmVyLnYxLkdldEFJQ29zdEFuZFVzYWdlUmVzcG9uc2UuVXNhZ2Ua2AEKBlJlc3VsdBJWCgphdHRyaWJ1dGVzGAEgAygLMkIuYmx1ZWFwaS5jb3Zlci52MS5HZXRBSUNvc3RBbmRVc2FnZVJlc3BvbnNlLlJlc3VsdC5BdHRyaWJ1dGVzRW50cnkSQwoHbWV0cmljcxgCIAMoCzIyLmJsdWVhcGkuY292ZXIudjEuR2V0QUlDb3N0QW5kVXNhZ2VSZXNwb25zZS5NZXRyaWMaMQoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiGwoZR2V0RXhlY3V0aW9uU3RhdHVzUmVxdWVzdCJXChpHZXRFeGVjdXRpb25TdGF0dXNSZXNwb25zZRIYChByZWNvbW1lbmRhdGlvbklkGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIPCgdtZXNzYWdlGAMgASgJIjgKFlZlcmlmeUFQSUFjY2Vzc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg4KBnRhcmdldBgCIAEoCSIpChdWZXJpZnlBUElBY2Nlc3NSZXNwb25zZRIOCgZyZXN1bHQYASABKAgiZQoaR2V0UmVjb21tZW5kYXRpb25WMlJlcXVlc3QSCgoCaWQYASABKAkSEwoLY29zdEdyb3VwSWQYAiABKAkSFAoMcGVyaW9kT3B0aW9uGAMgASgJEhAKCGN1cnJlbmN5GAQgASgJImEKG0dldFJlY29tbWVuZGF0aW9uVjJSZXNwb25zZRJCCgRkYXRhGAEgASgLMjQuYmx1ZWFwaS5hcGkuY292ZXIucmVjb21tZW5kYXRpb24uUmVjb21tZW5kYXRpb25EYXRhIlEKEU9uYm9hcmRPcmdSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhAKCHBhc3N3b3JkGAIgASgJEgwKBG5hbWUYAyABKAkSDQoFb3JnSWQYBCABKAkiQwoST25ib2FyZE9yZ1Jlc3BvbnNlEi0KCHVzZXJEYXRhGAEgASgLMhsuYmx1ZWFwaS5hcGkuY292ZXIuVXNlckRhdGEiTQoTSW52aXRlTWVtYmVyUmVxdWVzdBINCgVlbWFpbBgBIAMoCRIQCghpc1Jlc2VuZBgCIAEoCBIVCg1pbnZpdGVBc0FkbWluGAMgASgIIiUKFEludml0ZU1lbWJlclJlc3BvbnNlEg0KBWVtYWlsGAEgAygJIqQBChNBY3RpdmF0ZVVzZXJSZXF1ZXN0Eg4KBnVzZXJJZBgBIAEoCRIYChBwcmV2aW91c1Bhc3N3b3JkGAIgASgJEhAKCHBhc3N3b3JkGAMgASgJEgwKBG5hbWUYBCABKAkSDgoGbG9jYWxlGAUgASgJEg0KBWVtYWlsGAYgASgJEg8KB2lzQXV0aDAYByABKAgSEwoLYXV0aDBVc2VySWQYCCABKAkiRQoUQWN0aXZhdGVVc2VyUmVzcG9uc2USLQoIdXNlckRhdGEYASABKAsyGy5ibHVlYXBpLmFwaS5jb3Zlci5Vc2VyRGF0YSJYChNDcmVhdGVNZW1iZXJSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhAKCHBhc3N3b3JkGAIgASgJEgwKBG5hbWUYAyABKAkSEgoKY29zdGdyb3VwcxgEIAMoCSJFChRDcmVhdGVNZW1iZXJSZXNwb25zZRItCgh1c2VyRGF0YRgBIAEoCzIbLmJsdWVhcGkuYXBpLmNvdmVyLlVzZXJEYXRhIhMKEUdldE1lbWJlcnNSZXF1ZXN0IkMKEkdldE1lbWJlcnNSZXNwb25zZRItCgh1c2VyRGF0YRgBIAMoCzIbLmJsdWVhcGkuYXBpLmNvdmVyLlVzZXJEYXRhIikKF0dldE1lbWJlckRldGFpbHNSZXF1ZXN0Eg4KBnVzZXJJZBgBIAEoCSJJChhHZXRNZW1iZXJEZXRhaWxzUmVzcG9uc2USLQoIdXNlckRhdGEYASABKAsyGy5ibHVlYXBpLmFwaS5jb3Zlci5Vc2VyRGF0YSIrChlHZXRNZW1iZXJDb3N0R3JvdXBSZXF1ZXN0Eg4KBnVzZXJJZBgBIAEoCSJUChpHZXRNZW1iZXJDb3N0R3JvdXBSZXNwb25zZRI2Cgpjb3N0R3JvdXBzGAEgAygLMiIuYmx1ZWFwaS5hcGkuY292ZXIuTWVtYmVyQ29zdEdyb3VwIkAKHVVwZGF0ZU1lbWJlclBlcm1pc3Npb25SZXF1ZXN0Eg4KBnVzZXJJZBgBIAEoCRIPCgdpc0FkbWluGAIgASgIIk8KHlVwZGF0ZU1lbWJlclBlcm1pc3Npb25SZXNwb25zZRItCgh1c2VyRGF0YRgBIAEoCzIbLmJsdWVhcGkuYXBpLmNvdmVyLlVzZXJEYXRhIhcKFUdldFVzZXJEZXRhaWxzUmVxdWVzdCJHChZHZXRVc2VyRGV0YWlsc1Jlc3BvbnNlEi0KCHVzZXJEYXRhGAEgASgLMhsuYmx1ZWFwaS5hcGkuY292ZXIuVXNlckRhdGEiKQoXVXBkYXRlVXNlckF2YXRhclJlcXVlc3QSDgoGYXZhdGFyGAEgASgJIkkKGFVwZGF0ZVVzZXJBdmF0YXJSZXNwb25zZRItCgh1c2VyRGF0YRgBIAEoCzIbLmJsdWVhcGkuYXBpLmNvdmVyLlVzZXJEYXRhIiUKFVVwZGF0ZVVzZXJJY29uUmVxdWVzdBIMCgRpY29uGAEgASgJIkcKFlVwZGF0ZVVzZXJJY29uUmVzcG9uc2USLQoIdXNlckRhdGEYASABKAsyGy5ibHVlYXBpLmFwaS5jb3Zlci5Vc2VyRGF0YSIxChtVcGRhdGVVc2VyQ29sb3JUaGVtZVJlcXVlc3QSEgoKY29sb3JUaGVtZRgBIAEoCSJNChxVcGRhdGVVc2VyQ29sb3JUaGVtZVJlc3BvbnNlEi0KCHVzZXJEYXRhGAEgASgLMhsuYmx1ZWFwaS5hcGkuY292ZXIuVXNlckRhdGEiJQoVVXBkYXRlVXNlck5hbWVSZXF1ZXN0EgwKBG5hbWUYASABKAkiRwoWVXBkYXRlVXNlck5hbWVSZXNwb25zZRItCgh1c2VyRGF0YRgBIAEoCzIbLmJsdWVhcGkuYXBpLmNvdmVyLlVzZXJEYXRhIicKFlVwZGF0ZVVzZXJFbWFpbFJlcXVlc3QSDQoFZW1haWwYASABKAkiSAoXVXBkYXRlVXNlckVtYWlsUmVzcG9uc2USLQoIdXNlckRhdGEYASABKAsyGy5ibHVlYXBpLmFwaS5jb3Zlci5Vc2VyRGF0YSIrChlVcGRhdGVVc2VyTWFpblZpZXdSZXF1ZXN0Eg4KBnZpZXdJZBgBIAEoCSJLChpVcGRhdGVVc2VyTWFpblZpZXdSZXNwb25zZRItCgh1c2VyRGF0YRgBIAEoCzIbLmJsdWVhcGkuYXBpLmNvdmVyLlVzZXJEYXRhIkkKGFJlc2V0VXNlclBhc3N3b3JkUmVxdWVzdBIYChBwcmV2aW91c1Bhc3N3b3JkGAEgASgJEhMKC25ld1Bhc3N3b3JkGAIgASgJIkoKGVJlc2V0VXNlclBhc3N3b3JkUmVzcG9uc2USLQoIdXNlckRhdGEYASABKAsyGy5ibHVlYXBpLmFwaS5jb3Zlci5Vc2VyRGF0YSIpChdVcGRhdGVVc2VyTG9jYWxlUmVxdWVzdBIOCgZsb2NhbGUYASABKAkiSQoYVXBkYXRlVXNlckxvY2FsZVJlc3BvbnNlEi0KCHVzZXJEYXRhGAEgASgLMhsuYmx1ZWFwaS5hcGkuY292ZXIuVXNlckRhdGEiLQoZVXBkYXRlVXNlckFwcFRoZW1lUmVxdWVzdBIQCghhcHBUaGVtZRgBIAEoCSJLChpVcGRhdGVVc2VyQXBwVGhlbWVSZXNwb25zZRItCgh1c2VyRGF0YRgBIAEoCzIbLmJsdWVhcGkuYXBpLmNvdmVyLlVzZXJEYXRhIkMKGVVwZGF0ZVVzZXJUaW1lem9uZVJlcXVlc3QSEAoIdGltZVpvbmUYASABKAkSFAoMYXV0b1RpbWVab25lGAIgASgIIksKGlVwZGF0ZVVzZXJUaW1lem9uZVJlc3BvbnNlEi0KCHVzZXJEYXRhGAEgASgLMhsuYmx1ZWFwaS5hcGkuY292ZXIuVXNlckRhdGEiMQobVXBkYXRlVXNlckF0dHJpYnV0ZXNSZXF1ZXN0EhIKCmF0dHJpYnV0ZXMYASADKAkiTQocVXBkYXRlVXNlckF0dHJpYnV0ZXNSZXNwb25zZRItCgh1c2VyRGF0YRgBIAEoCzIbLmJsdWVhcGkuYXBpLmNvdmVyLlVzZXJEYXRhIiUKE0RlbGV0ZU1lbWJlclJlcXVlc3QSDgoGdXNlcklkGAEgASgJIiYKFERlbGV0ZU1lbWJlclJlc3BvbnNlEg4KBnVzZXJJZBgBIAEoCSImChRSZXNldFBhc3N3b3JkUmVxdWVzdBIOCgZ1c2VySWQYASABKAkiJwoVUmVzZXRQYXNzd29yZFJlc3BvbnNlEg4KBnVzZXJJZBgBIAEoCSK7AQoRQ3JlYXRlVmlld1JlcXVlc3QSDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRIRCglpc1ByaXZhdGUYAyABKAgSEgoKaXNFZGl0YWJsZRgEIAEoCBIMCgRpY29uGAUgASgJEhIKCnJlcG9ydFR5cGUYBiABKAkSEgoKY29sb3JUaGVtZRgHIAEoCRIUCgxyZXBvcnRQZXJpb2QYCCABKAkSEAoIY3VycmVuY3kYCSABKAkiQwoSQ3JlYXRlVmlld1Jlc3BvbnNlEi0KCHZpZXdEYXRhGAEgASgLMhsuYmx1ZWFwaS5hcGkuY292ZXIuVmlld0RhdGEiEQoPR2V0Vmlld3NSZXF1ZXN0IkEKEEdldFZpZXdzUmVzcG9uc2USLQoIdmlld0xpc3QYASADKAsyGy5ibHVlYXBpLmFwaS5jb3Zlci5WaWV3TGlzdCInChVHZXRDdXJyZW50Vmlld1JlcXVlc3QSDgoGdmlld0lkGAEgASgJIkcKFkdldEN1cnJlbnRWaWV3UmVzcG9uc2USLQoIdmlld0RhdGEYASABKAsyGy5ibHVlYXBpLmFwaS5jb3Zlci5WaWV3RGF0YSIZChdHZXRGYXZvcml0ZVZpZXdzUmVxdWVzdCJLChhHZXRGYXZvcml0ZVZpZXdzUmVzcG9uc2USLwoJZmF2b3JpdGVzGAEgAygLMhwuYmx1ZWFwaS5hcGkuY292ZXIuRmF2b3JpdGVzIiQKElB1Ymxpc2hWaWV3UmVxdWVzdBIOCgZ2aWV3SWQYASABKAkiIgoTUHVibGlzaFZpZXdSZXNwb25zZRILCgN1cmwYASABKAkiJAoSQWRkRmF2b3JpdGVSZXF1ZXN0Eg4KBnZpZXdJZBgBIAEoCSIlChNBZGRGYXZvcml0ZVJlc3BvbnNlEg4KBnZpZXdJZBgBIAEoCSInChVSZW1vdmVGYXZvcml0ZVJlcXVlc3QSDgoGdmlld0lkGAEgASgJIigKFlJlbW92ZUZhdm9yaXRlUmVzcG9uc2USDgoGdmlld0lkGAEgASgJIo8BChFVcGRhdGVWaWV3UmVxdWVzdBIOCgZ2aWV3SWQYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRIMCgRpY29uGAQgASgJEhEKCWlzUHJpdmF0ZRgFIAEoCBISCgppc0VkaXRhYmxlGAYgASgIEhIKCmNvbG9yVGhlbWUYByABKAkiJAoSVXBkYXRlVmlld1Jlc3BvbnNlEg4KBnZpZXdJZBgBIAEoCSJYChdVcGRhdGVWaWV3TGF5b3V0UmVxdWVzdBIOCgZ2aWV3SWQYASABKAkSLQoGbGF5b3V0GAIgAygLMh0uYmx1ZWFwaS5hcGkuY292ZXIuV2lkZ2V0RGF0YSJJChhVcGRhdGVWaWV3TGF5b3V0UmVzcG9uc2USLQoGbGF5b3V0GAEgAygLMh0uYmx1ZWFwaS5hcGkuY292ZXIuVmlld0xheW91dCKaAQoXVXBkYXRlVmlld1dpZGdldFJlcXVlc3QSDgoGdmlld0lkGAEgASgJEhAKCHdpZGdldElkGAIgASgJEigKB29wdGlvbnMYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EjMKCHJlcXVlc3RzGAQgAygLMiEuYmx1ZWFwaS5hcGkuY292ZXIuTGF5b3V0UmVxdWVzdHMiXwoYVXBkYXRlVmlld1dpZGdldFJlc3BvbnNlEhAKCHdpZGdldElkGAEgASgJEjEKCndpZGdldERhdGEYAiABKAsyHS5ibHVlYXBpLmFwaS5jb3Zlci5XaWRnZXREYXRhIkEKG1VwZGF0ZVZpZXdDb2xvclRoZW1lUmVxdWVzdBIOCgZ2aWV3SWQYASABKAkSEgoKY29sb3JUaGVtZRgCIAEoCSJNChxVcGRhdGVWaWV3Q29sb3JUaGVtZVJlc3BvbnNlEi0KCHZpZXdEYXRhGAEgASgLMhsuYmx1ZWFwaS5hcGkuY292ZXIuVmlld0RhdGEiPQoZVXBkYXRlVmlld0N1cnJlbmN5UmVxdWVzdBIOCgZ2aWV3SWQYASABKAkSEAoIY3VycmVuY3kYAiABKAkiSwoaVXBkYXRlVmlld0N1cnJlbmN5UmVzcG9uc2USLQoIdmlld0RhdGEYASABKAsyGy5ibHVlYXBpLmFwaS5jb3Zlci5WaWV3RGF0YSI1ChtTZXRPcmdVcGRhdGVDdXJyZW5jeVJlcXVlc3QSFgoOdXBkYXRlQ3VycmVuY3kYASABKAMiNgocU2V0T3JnVXBkYXRlQ3VycmVuY3lSZXNwb25zZRIWCg51cGRhdGVDdXJyZW5jeRgBIAEoAyIdChtHZXRPcmdVcGRhdGVDdXJyZW5jeVJlcXVlc3QiWQocR2V0T3JnVXBkYXRlQ3VycmVuY3lSZXNwb25zZRINCgVvcmdJZBgBIAEoCRIWCg51cGRhdGVDdXJyZW5jeRgCIAEoAxISCgpsYXN0VXBkYXRlGAMgASgJIj4KGExpc3RFeGNoYW5nZVJhdGVzUmVxdWVzdBIRCglzdGFydERhdGUYASABKAkSDwoHZW5kRGF0ZRgCIAEoCSJiChlMaXN0RXhjaGFuZ2VSYXRlc1Jlc3BvbnNlEg0KBW9yZ0lkGAEgASgJEjYKDWV4Y2hhbmdlUmF0ZXMYAiADKAsyHy5ibHVlYXBpLmNvdmVyLnYxLkV4Y2hhbmdlUmF0ZXMiQgoNRXhjaGFuZ2VSYXRlcxINCgVtb250aBgBIAEoCRIUCgxleGNoYW5nZVJhdGUYAiABKAISDAoEZGF0ZRgDIAEoCSIjChFEZWxldGVWaWV3UmVxdWVzdBIOCgZ2aWV3SWQYASABKAkiJAoSRGVsZXRlVmlld1Jlc3BvbnNlEg4KBnZpZXdJZBgBIAEoCSJlChpVcGRhdGVTaWRlTWVudVN0YXRlUmVxdWVzdBIOCgZ2aWV3SWQYASABKAkSNwoNc2lkZW1lbnVzdGF0ZRgCIAMoCzIgLmJsdWVhcGkuYXBpLmNvdmVyLlNpZGVNZW51U3RhdGUiLQobVXBkYXRlU2lkZU1lbnVTdGF0ZVJlc3BvbnNlEg4KBnZpZXdJZBgBIAEoCSJAChpBZGRTaWRlTWVudUZhdm9yaXRlUmVxdWVzdBIOCgZ2aWV3SWQYASABKAkSEgoKbWVudUl0ZW1JZBgCIAEoCSItChtBZGRTaWRlTWVudUZhdm9yaXRlUmVzcG9uc2USDgoGdmlld0lkGAEgASgJIkMKHVJlbW92ZVNpZGVNZW51RmF2b3JpdGVSZXF1ZXN0Eg4KBnZpZXdJZBgBIAEoCRISCgptZW51SXRlbUlkGAIgASgJIjAKHlJlbW92ZVNpZGVNZW51RmF2b3JpdGVSZXNwb25zZRIOCgZ2aWV3SWQYASABKAki0wEKFkNyZWF0ZUNvc3RHcm91cFJlcXVlc3QSDAoEbmFtZRgBIAEoCRIuCgR0eXBlGAcgASgOMiAuYmx1ZWFwaS5hcGkuY292ZXIuQ29zdEdyb3VwVHlwZRITCgtkZXNjcmlwdGlvbhgCIAEoCRINCgVpbWFnZRgDIAEoCRIMCgRpY29uGAQgASgJEhIKCmNvbG9yVGhlbWUYBSABKAkSNQoMY29tYmluYXRpb25zGAYgASgLMh8uYmx1ZWFwaS5hcGkuY292ZXIuQ29tYmluYXRpb25zIlIKF0NyZWF0ZUNvc3RHcm91cFJlc3BvbnNlEjcKDWNvc3RHcm91cERhdGEYASABKAsyIC5ibHVlYXBpLmFwaS5jb3Zlci5Db3N0R3JvdXBEYXRhIhYKFEdldENvc3RHcm91cHNSZXF1ZXN0IlAKFUdldENvc3RHcm91cHNSZXNwb25zZRI3Cg1jb3N0R3JvdXBEYXRhGAEgAygLMiAuYmx1ZWFwaS5hcGkuY292ZXIuQ29zdEdyb3VwRGF0YSIxChpHZXRDb3N0R3JvdXBEZXRhaWxzUmVxdWVzdBITCgtjb3N0R3JvdXBJZBgBIAEoCSJWChtHZXRDb3N0R3JvdXBEZXRhaWxzUmVzcG9uc2USNwoNY29zdEdyb3VwRGF0YRgBIAEoCzIgLmJsdWVhcGkuYXBpLmNvdmVyLkNvc3RHcm91cERhdGEiPwoaVXBkYXRlQ29zdEdyb3VwTmFtZVJlcXVlc3QSEwoLY29zdEdyb3VwSWQYASABKAkSDAoEbmFtZRgCIAEoCSIrChtVcGRhdGVDb3N0R3JvdXBOYW1lUmVzcG9uc2USDAoEbmFtZRgBIAEoCSJNCiFVcGRhdGVDb3N0R3JvdXBEZXNjcmlwdGlvblJlcXVlc3QSEwoLY29zdEdyb3VwSWQYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkiOQoiVXBkYXRlQ29zdEdyb3VwRGVzY3JpcHRpb25SZXNwb25zZRITCgtkZXNjcmlwdGlvbhgBIAEoCSJBChtVcGRhdGVDb3N0R3JvdXBJbWFnZVJlcXVlc3QSEwoLY29zdEdyb3VwSWQYASABKAkSDQoFaW1hZ2UYAiABKAkiLQocVXBkYXRlQ29zdEdyb3VwSW1hZ2VSZXNwb25zZRINCgVpbWFnZRgBIAEoCSI/ChpVcGRhdGVDb3N0R3JvdXBJY29uUmVxdWVzdBITCgtjb3N0R3JvdXBJZBgBIAEoCRIMCgRpY29uGAIgASgJIisKG1VwZGF0ZUNvc3RHcm91cEljb25SZXNwb25zZRIMCgRpY29uGAEgASgJIksKIFVwZGF0ZUNvc3RHcm91cENvbG9yVGhlbWVSZXF1ZXN0EhMKC2Nvc3RHcm91cElkGAEgASgJEhIKCmNvbG9yVGhlbWUYAiABKAkiNwohVXBkYXRlQ29zdEdyb3VwQ29sb3JUaGVtZVJlc3BvbnNlEhIKCmNvbG9yVGhlbWUYASABKAkicAoiVXBkYXRlQ29zdEdyb3VwQ29tYmluYXRpb25zUmVxdWVzdBITCgtjb3N0R3JvdXBJZBgBIAEoCRI1Cgxjb21iaW5hdGlvbnMYAiABKAsyHy5ibHVlYXBpLmFwaS5jb3Zlci5Db21iaW5hdGlvbnMiXAojVXBkYXRlQ29zdEdyb3VwQ29tYmluYXRpb25zUmVzcG9uc2USNQoMY29tYmluYXRpb25zGAEgASgLMh8uYmx1ZWFwaS5hcGkuY292ZXIuQ29tYmluYXRpb25zIkMKHEFzc2lnbkNvc3RHcm91cE1lbWJlclJlcXVlc3QSEwoLY29zdEdyb3VwSWQYASABKAkSDgoGdXNlcklkGAIgASgJIkQKHUFzc2lnbkNvc3RHcm91cE1lbWJlclJlc3BvbnNlEhMKC2Nvc3RHcm91cElkGAEgASgJEg4KBnVzZXJJZBgCIAEoCSJDChxSZW1vdmVDb3N0R3JvdXBNZW1iZXJSZXF1ZXN0EhMKC2Nvc3RHcm91cElkGAEgASgJEg4KBnVzZXJJZBgCIAEoCSJECh1SZW1vdmVDb3N0R3JvdXBNZW1iZXJSZXNwb25zZRITCgtjb3N0R3JvdXBJZBgBIAEoCRIOCgZ1c2VySWQYAiABKAkiLQoWRGVsZXRlQ29zdEdyb3VwUmVxdWVzdBITCgtjb3N0R3JvdXBJZBgBIAEoCSIuChdEZWxldGVDb3N0R3JvdXBSZXNwb25zZRITCgtjb3N0R3JvdXBJZBgBIAEoCSIyCiJHZXRBY2NvdW50QWNjZXNzVGVtcGxhdGVVcmxSZXF1ZXN0EgwKBHR5cGUYASABKAkioAEKI0dldEFjY291bnRBY2Nlc3NUZW1wbGF0ZVVybFJlc3BvbnNlEhEKCWxhdW5jaFVybBgBIAEoCRITCgt0ZW1wbGF0ZVVybBgCIAEoCRIRCglzdGFja05hbWUYAyABKAkSEQoJcHJpbmNpcGFsGAQgASgJEhIKCmV4dGVybmFsSWQYBSABKAkSFwoPdGVtcGxhdGVWZXJzaW9uGAYgASgJIhoKGExpc3RBY2NvdW50QWNjZXNzUmVxdWVzdCIpChdHZXRBY2NvdW50QWNjZXNzUmVxdWVzdBIOCgZ0YXJnZXQYASABKAki2gIKDUFjY291bnRBY2Nlc3MSDgoGdGFyZ2V0GAEgASgJEhMKC2FjY291bnROYW1lGAIgASgJEhMKC2FjY291bnRUeXBlGAMgASgJEg8KB3BheWVySWQYBCABKAkSDwoHcm9sZUFybhgFIAEoCRISCgpleHRlcm5hbElkGAYgASgJEg8KB3N0YWNrSWQYByABKAkSEwoLc3RhY2tSZWdpb24YCCABKAkSEwoLdGVtcGxhdGVVcmwYCSABKAkSEgoKYnVja2V0TmFtZRgKIAEoCRIOCgZwcmVmaXgYCyABKAkSEgoKcmVwb3J0TmFtZRgMIAEoCRJBChJyZWdpc3RyYXRpb25TdGF0dXMYDSABKAsyJS5ibHVlYXBpLmFwaS5jb3Zlci5SZWdpc3RyYXRpb25TdGF0dXMSDgoGc3RhdHVzGA4gASgJEhMKC2xhc3RVcGRhdGVkGA8gASgJIkMKGkNyZWF0ZUFjY291bnRBY2Nlc3NSZXF1ZXN0Eg4KBnRhcmdldBgBIAEoCRIVCg1mcm9tVGVycmFmb3JtGAIgASgIIkQKIkNyZWF0ZUFjY291bnRBY2Nlc3NTdGFja3NldFJlcXVlc3QSDgoGdGFyZ2V0GAEgASgJEg4KBnJlZ2lvbhgCIAEoCSIsChpVcGRhdGVBY2NvdW50QWNjZXNzUmVxdWVzdBIOCgZ0YXJnZXQYASABKAkiPAoaRGVsZXRlQWNjb3VudEFjY2Vzc1JlcXVlc3QSDgoGdGFyZ2V0GAEgASgJEg4KBnZlbmRvchgCIAEoCSIvChtEZWxldGVBY2NvdW50QWNjZXNzUmVzcG9uc2USEAoIdGFyZ2V0SWQYASABKAkiUAoWUmVnaXN0ZXJBY2NvdW50UmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSEQoJYWNjb3VudElkGAIgASgJEhMKC2FjY291bnROYW1lGAMgASgJIuYBChFMaXN0QXNzZXRzUmVxdWVzdBITCgtjb3N0R3JvdXBJZBgBIAEoCRISCgpzdGFydE1vbnRoGAIgASgJEhAKCGVuZE1vbnRoGAMgASgJEhoKEndpdGhSZWNvbW1lbmRhdGlvbhgEIAEoCBI3Cgphd3NPcHRpb25zGAUgAygLMiMuYmx1ZWFwaS5jb3Zlci52MS5MaXN0QXNzZXRzRmlsdGVycxJBChRhd3NQcm9wZXJ0aWVzT3B0aW9ucxgGIAMoCzIjLmJsdWVhcGkuY292ZXIudjEuTGlzdEFzc2V0c0ZpbHRlcnMijwEKEUxpc3RBc3NldHNGaWx0ZXJzEkcKCmFuZEZpbHRlcnMYASADKAsyMy5ibHVlYXBpLmNvdmVyLnYxLkxpc3RBc3NldHNGaWx0ZXJzLkFuZEZpbHRlcnNFbnRyeRoxCg9BbmRGaWx0ZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASK9AQoIUmVzb3VyY2USDAoEZGF0ZRgBIAEoCRINCgVvcmdJZBgCIAEoCRIOCgZ2ZW5kb3IYAyABKAkSDwoHYWNjb3VudBgEIAEoCRIPCgdzZXJ2aWNlGAUgASgJEhIKCnJlc291cmNlSWQYBiABKAkSFAoMcmVzb3VyY2VUeXBlGAcgASgJEgwKBGNvc3QYCCABKAESEgoKcHJvcGVydGllcxgJIAEoCRIWCg5yZWNvbW1lbmRhdGlvbhgKIAEoCSLmAQoXR2V0QXNzZXRzU3VtbWFyeVJlcXVlc3QSEwoLY29zdEdyb3VwSWQYASABKAkSEgoKc3RhcnRNb250aBgCIAEoCRIQCghlbmRNb250aBgDIAEoCRIUCgxjb21iaW5lRGF0ZXMYBCABKAgSNwoKYXdzT3B0aW9ucxgFIAMoCzIjLmJsdWVhcGkuY292ZXIudjEuTGlzdEFzc2V0c0ZpbHRlcnMSQQoUYXdzUHJvcGVydGllc09wdGlvbnMYBiADKAsyIy5ibHVlYXBpLmNvdmVyLnYxLkxpc3RBc3NldHNGaWx0ZXJzImsKGEdldEFzc2V0c1N1bW1hcnlSZXNwb25zZRIwCgdzdW1tYXJ5GAEgAygLMh8uYmx1ZWFwaS5jb3Zlci52MS5Bc3NldHNTdW1tYXJ5Eh0KFXJlY29tbWVuZGF0aW9uU3VtbWFyeRgCIAEoCSJYCg1Bc3NldHNTdW1tYXJ5EgwKBGRhdGUYASABKAkSDgoGdmVuZG9yGAIgASgJEhYKDnRvdGFsUmVzb3VyY2VzGAMgASgDEhEKCXRvdGFsQ29zdBgEIAEoASI6CiNSZXNvbHZlQ29zdEdyb3VwQ29tYmluYXRpb25zUmVxdWVzdBITCgtjb3N0R3JvdXBJZBgBIAEoCSJpCiRSZXNvbHZlQ29zdEdyb3VwQ29tYmluYXRpb25zUmVzcG9uc2USEwoLY29zdEdyb3VwSWQYASABKAkSLAoIYWNjb3VudHMYAiADKAsyGi5ibHVlYXBpLmFwaS5jb3Zlci5BY2NvdW50IscEChNHZXRDb3N0VXNhZ2VSZXF1ZXN0EhMKC2Nvc3RHcm91cElkGAEgASgJEhEKCXN0YXJ0VGltZRgCIAEoCRIPCgdlbmRUaW1lGAMgASgJEhQKDGdyb3VwQnlNb250aBgEIAEoCBINCgVsaW1pdBgFIAEoAxIQCghjYXRlZ29yeRgGIAEoCRIPCgdncm91cEJ5GAcgASgJEhcKD2luY2x1ZGVaZXJvQ29zdBgIIAEoCBJDCgphd3NPcHRpb25zGAkgASgLMi8uYmx1ZWFwaS5jb3Zlci52MS5HZXRDb3N0VXNhZ2VSZXF1ZXN0QXdzT3B0aW9ucxJHCgxhenVyZU9wdGlvbnMYCiABKAsyMS5ibHVlYXBpLmNvdmVyLnYxLkdldENvc3RVc2FnZVJlcXVlc3RBenVyZU9wdGlvbnMSQwoKZ2NwT3B0aW9ucxgLIAEoCzIvLmJsdWVhcGkuY292ZXIudjEuR2V0Q29zdFVzYWdlUmVxdWVzdEdjcE9wdGlvbnMSTQoPYXp1cmVjc3BPcHRpb25zGAwgASgLMjQuYmx1ZWFwaS5jb3Zlci52MS5HZXRDb3N0VXNhZ2VSZXF1ZXN0QXp1cmVDc3BPcHRpb25zEkkKDWN1c3RvbU9wdGlvbnMYDSABKAsyMi5ibHVlYXBpLmNvdmVyLnYxLkdldENvc3RVc2FnZVJlcXVlc3RDdXN0b21PcHRpb25zEhcKD2luY2x1ZGVGb3JlY2FzdBgOIAEoCBIQCghjdXJyZW5jeRgPIAEoCSLnAQodR2V0Q29zdFVzYWdlUmVxdWVzdEF3c09wdGlvbnMSFgoOZ3JvdXBCeUNvbHVtbnMYASABKAkSFQoNZ3JvdXBBY2NvdW50cxgCIAEoCBJBCgdmaWx0ZXJzGAMgAygLMjAuYmx1ZWFwaS5jb3Zlci52MS5SZWFkQ29zdHNSZXF1ZXN0T3B0aW9uc0ZpbHRlcnMSRAoKdGFnRmlsdGVycxgEIAMoCzIwLmJsdWVhcGkuY292ZXIudjEuUmVhZENvc3RzUmVxdWVzdE9wdGlvbnNGaWx0ZXJzEg4KBnRhZ0tleRgFIAEoCSLZAQofR2V0Q29zdFVzYWdlUmVxdWVzdEF6dXJlT3B0aW9ucxIWCg5ncm91cEJ5Q29sdW1ucxgBIAEoCRIVCg1ncm91cEFjY291bnRzGAIgASgIEkEKB2ZpbHRlcnMYAyADKAsyMC5ibHVlYXBpLmNvdmVyLnYxLlJlYWRDb3N0c1JlcXVlc3RPcHRpb25zRmlsdGVycxJECgp0YWdGaWx0ZXJzGAQgAygLMjAuYmx1ZWFwaS5jb3Zlci52MS5SZWFkQ29zdHNSZXF1ZXN0T3B0aW9uc0ZpbHRlcnMi/gIKHUdldENvc3RVc2FnZVJlcXVlc3RHY3BPcHRpb25zEhYKDmdyb3VwQnlDb2x1bW5zGAEgASgJEhUKDWdyb3VwQWNjb3VudHMYAiABKAgSQQoHZmlsdGVycxgDIAMoCzIwLmJsdWVhcGkuY292ZXIudjEuUmVhZENvc3RzUmVxdWVzdE9wdGlvbnNGaWx0ZXJzEkQKCnRhZ0ZpbHRlcnMYBCADKAsyMC5ibHVlYXBpLmNvdmVyLnYxLlJlYWRDb3N0c1JlcXVlc3RPcHRpb25zRmlsdGVycxJGCgxsYWJlbEZpbHRlcnMYBSADKAsyMC5ibHVlYXBpLmNvdmVyLnYxLlJlYWRDb3N0c1JlcXVlc3RPcHRpb25zRmlsdGVycxJNChNwcm9qZWN0TGFiZWxGaWx0ZXJzGAYgAygLMjAuYmx1ZWFwaS5jb3Zlci52MS5SZWFkQ29zdHNSZXF1ZXN0T3B0aW9uc0ZpbHRlcnMSDgoGdGFnS2V5GAcgASgJIuwBCiJHZXRDb3N0VXNhZ2VSZXF1ZXN0QXp1cmVDc3BPcHRpb25zEhYKDmdyb3VwQnlDb2x1bW5zGAEgASgJEhUKDWdyb3VwQWNjb3VudHMYAiABKAgSQQoHZmlsdGVycxgDIAMoCzIwLmJsdWVhcGkuY292ZXIudjEuUmVhZENvc3RzUmVxdWVzdE9wdGlvbnNGaWx0ZXJzEkQKCnRhZ0ZpbHRlcnMYBCADKAsyMC5ibHVlYXBpLmNvdmVyLnYxLlJlYWRDb3N0c1JlcXVlc3RPcHRpb25zRmlsdGVycxIOCgZ0YWdLZXkYBSABKAkigQMKIEdldENvc3RVc2FnZVJlcXVlc3RDdXN0b21PcHRpb25zEhYKDmdyb3VwQnlDb2x1bW5zGAEgASgJEhUKDWdyb3VwQWNjb3VudHMYAiABKAgSQQoHZmlsdGVycxgDIAMoCzIwLmJsdWVhcGkuY292ZXIudjEuUmVhZENvc3RzUmVxdWVzdE9wdGlvbnNGaWx0ZXJzEkQKCnRhZ0ZpbHRlcnMYBCADKAsyMC5ibHVlYXBpLmNvdmVyLnYxLlJlYWRDb3N0c1JlcXVlc3RPcHRpb25zRmlsdGVycxJGCgxsYWJlbEZpbHRlcnMYBSADKAsyMC5ibHVlYXBpLmNvdmVyLnYxLlJlYWRDb3N0c1JlcXVlc3RPcHRpb25zRmlsdGVycxJNChNwcm9qZWN0TGFiZWxGaWx0ZXJzGAYgAygLMjAuYmx1ZWFwaS5jb3Zlci52MS5SZWFkQ29zdHNSZXF1ZXN0T3B0aW9uc0ZpbHRlcnMSDgoGdGFnS2V5GAcgASgJIqkBCh5SZWFkQ29zdHNSZXF1ZXN0T3B0aW9uc0ZpbHRlcnMSVAoKYW5kRmlsdGVycxgBIAMoCzJALmJsdWVhcGkuY292ZXIudjEuUmVhZENvc3RzUmVxdWVzdE9wdGlvbnNGaWx0ZXJzLkFuZEZpbHRlcnNFbnRyeRoxCg9BbmRGaWx0ZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASL2AwoIQ29zdEl0ZW0SDgoGdmVuZG9yGAEgASgJEgwKBGRhdGUYAiABKAkSDwoHcHJvZHVjdBgDIAEoCRIPCgdhY2NvdW50GAQgASgJEhEKCXVzYWdlVHlwZRgQIAEoCRISCgpjaGFyZ2VUeXBlGBEgASgJEgwKBGNvc3QYBSABKAESDwoHZGV0YWlscxgGIAEoCRI0Cghmb3JlY2FzdBgHIAEoCzIiLmJsdWVhcGkuYXBpLmNvdmVyLkF3c0Nvc3RGb3JlY2FzdBIOCgZyZWdpb24YCCABKAkSFgoOYmlsbGluZ0FjY291bnQYCSABKAkSEAoIdGFnVmFsdWUYCiABKAkSEgoKbGFzdFVwZGF0ZRgLIAEoCRIMCgR1bml0GAwgASgJEhAKCGNhdGVnb3J5GA0gASgJEg4KBnRhZ2dlZBgOIAEoCBIVCg1udW1iZXJPZlVuaXRzGBIgASgBEkYKDnVuaXRjb3N0bWV0cmljGA8gAygLMi4uYmx1ZWFwaS5jb3Zlci52MS5Db3N0SXRlbS5Vbml0Y29zdG1ldHJpY0VudHJ5EhoKEmFsbG9jYXRpb25DYXRlZ29yeRgTIAEoCRo1ChNVbml0Y29zdG1ldHJpY0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoAToCOAEiOgojR2V0UmlnaHRTaXppbmdSZWNvbW1lbmRhdGlvblJlcXVlc3QSEwoLY29zdEdyb3VwSWQYASABKAkiWQokR2V0UmlnaHRTaXppbmdSZWNvbW1lbmRhdGlvblJlc3BvbnNlEjEKCHJlc291cmNlGAEgAygLMh8uYmx1ZWFwaS5hcGkuY292ZXIuUmVzb3VyY2VEYXRhIngKGU1vZGlmeVJlc291cmNlVHlwZVJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhEKCWFjY291bnRJZBgCIAEoCRISCgpyZXNvdXJjZUlkGAMgASgJEhQKDHJlc291cmNlVHlwZRgEIAEoCRIOCgZyZWdpb24YBSABKAkiaQoaTW9kaWZ5UmVzb3VyY2VUeXBlUmVzcG9uc2USEQoJYWNjb3VudElkGAEgASgJEhIKCnJlc291cmNlSWQYAiABKAkSFAoMcmVzb3VyY2VUeXBlGAMgASgJEg4KBnJlZ2lvbhgEIAEoCSJhChhUZXJtaW5hdGVSZXNvdXJjZVJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhEKCWFjY291bnRJZBgCIAEoCRISCgpyZXNvdXJjZUlkGAMgASgJEg4KBnJlZ2lvbhgEIAEoCSJSChlUZXJtaW5hdGVSZXNvdXJjZVJlc3BvbnNlEhEKCWFjY291bnRJZBgBIAEoCRISCgpyZXNvdXJjZUlkGAIgASgJEg4KBnJlZ2lvbhgDIAEoCSJDChdVcGxvYWRDaGFyZ2VDb2RlUmVxdWVzdBIMCgRuYW1lGAEgASgJEgwKBHR5cGUYAiABKAkSDAoEZmlsZRgDIAEoDCJSChhVcGxvYWRDaGFyZ2VDb2RlUmVzcG9uc2USDAoEbmFtZRgBIAEoCRIoCgZzdGF0dXMYAiABKA4yGC5ibHVlYXBpLmNvdmVyLnYxLlN0YXR1cyJIChJBc3NpZ25QYXllclJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhEKCWFjY291bnRJZBgCIAEoCRIPCgdwYXllcklkGAMgASgJIjkKE0Fzc2lnblBheWVyUmVzcG9uc2USEQoJYWNjb3VudElkGAEgASgJEg8KB3BheWVySWQYAiABKAkiIgoQR2V0UGF5ZXJzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkiIwoRR2V0UGF5ZXJzUmVzcG9uc2USDgoGcGF5ZXJzGAEgAygJIjkKEkdldEFjY291bnRzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSEwoLY29zdEdyb3VwSWQYAiABKAkiJwoTR2V0QWNjb3VudHNSZXNwb25zZRIQCghhY2NvdW50cxgBIAMoCSI5ChJHZXRTZXJ2aWNlc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhMKC2Nvc3RHcm91cElkGAIgASgJIicKE0dldFNlcnZpY2VzUmVzcG9uc2USEAoIc2VydmljZXMYASADKAkiOAoRR2V0UmVnaW9uc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhMKC2Nvc3RHcm91cElkGAIgASgJIiUKEkdldFJlZ2lvbnNSZXNwb25zZRIPCgdyZWdpb25zGAEgAygJIjUKDkdldFRhZ3NSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRITCgtjb3N0R3JvdXBJZBgCIAEoCSI+Cg9HZXRUYWdzUmVzcG9uc2USKwoHdGFnRGF0YRgBIAMoCzIaLmJsdWVhcGkuYXBpLmNvdmVyLlRhZ0RhdGEiIAoPTGlzdEZlZXNSZXF1ZXN0Eg0KBW1vbnRoGAEgASgJIu0CCgpGZWVEZXRhaWxzEgoKAmlkGAEgASgJEg0KBW9yZ0lkGAIgASgJEg4KBnZlbmRvchgDIAEoCRIPCgdhY2NvdW50GAQgASgJEg0KBW1vbnRoGAUgASgJEhAKCGxpbmVUeXBlGAYgASgJEg8KB2ZlZVR5cGUYByABKAkSEwoLcHJvZHVjdENvZGUYCCABKAkSEwoLZGVzY3JpcHRpb24YCSABKAkSDwoHc3RhcnRlZBgKIAEoCRIUCgx0aW1lSW50ZXJ2YWwYCyABKAkSEwoLcHJvZHVjdE5hbWUYDCABKAkSEAoIY3VycmVuY3kYDSABKAkSEwoLc3BsaXRTdGF0dXMYDiABKAkSEwoLaXNBbGxvY2F0ZWQYDyABKAgSEQoJaXNBcHBsaWVkGBAgASgIEhUKDXVuYmxlbmRlZENvc3QYESABKAESEQoJc291cmNlRmVlGBIgASgJEhIKCmxhc3RVcGRhdGUYEyABKAkiIgoRUmVzdG9yZUZlZVJlcXVlc3QSDQoFZmVlSWQYASABKAkiUQoWR2V0Q29zdEdyb3VwRmVlUmVxdWVzdBITCgtjb3N0R3JvdXBJZBgBIAEoCRIRCglzdGFydFRpbWUYAiABKAkSDwoHZW5kVGltZRgDIAEoCSJmCgdGZWVJdGVtEg4KBnZlbmRvchgBIAEoCRINCgVtb250aBgCIAEoCRIPCgdwcm9kdWN0GAMgASgJEg8KB2FjY291bnQYBCABKAkSDAoEdHlwZRgFIAEoCRIMCgRjb3N0GAYgASgBIkkKCUFsbG9jYXRvchIMCgR0eXBlGAEgASgJEg0KBXZhbHVlGAIgASgJEg8KB2Zvcm11bGEYAyABKAkSDgoGbW9udGhzGAQgASgDImgKCENyaXRlcmlhEjAKA2FuZBgBIAMoCzIjLmJsdWVhcGkuY292ZXIudjEuQ3JpdGVyaWEuQW5kRW50cnkaKgoIQW5kRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKiAgoUQ29zdEFsbG9jYXRvckRldGFpbHMSCgoCaWQYASABKAkSEAoIY2F0ZWdvcnkYAiABKAkSEgoKZXhwaXJhdGlvbhgDIAEoAxISCgpzdGFydE1vbnRoGAQgASgJEhYKDmRlZmF1bHRBY2NvdW50GAUgASgJEjEKCGNyaXRlcmlhGAYgASgLMh8uYmx1ZWFwaS5hcGkuY292ZXIuQ29tYmluYXRpb25zEi4KCWFsbG9jYXRvchgHIAMoCzIbLmJsdWVhcGkuY292ZXIudjEuQWxsb2NhdG9yEhIKCmNyZWF0ZVRpbWUYCCABKAkSEgoKdXBkYXRlVGltZRgJIAEoCRIMCgRuYW1lGAogASgJEhMKC2Rlc2NyaXB0aW9uGAsgASgJIvoBChRDb3N0QWxsb2NhdG9yUmVxdWVzdBIKCgJpZBgBIAEoCRIQCghjYXRlZ29yeRgCIAEoCRISCgpleHBpcmF0aW9uGAMgASgDEhIKCnN0YXJ0TW9udGgYBCABKAkSFgoOZGVmYXVsdEFjY291bnQYBSABKAkSMQoIY3JpdGVyaWEYBiABKAsyHy5ibHVlYXBpLmFwaS5jb3Zlci5Db21iaW5hdGlvbnMSLgoJYWxsb2NhdG9yGAcgAygLMhsuYmx1ZWFwaS5jb3Zlci52MS5BbGxvY2F0b3ISDAoEbmFtZRgIIAEoCRITCgtkZXNjcmlwdGlvbhgJIAEoCSIXChVMaXN0QWxsb2NhdG9yc1JlcXVlc3Qi8AEKFkNyZWF0ZUFsbG9jYXRvclJlcXVlc3QSEAoIY2F0ZWdvcnkYASABKAkSEgoKZXhwaXJhdGlvbhgCIAEoAxISCgpzdGFydE1vbnRoGAMgASgJEhYKDmRlZmF1bHRBY2NvdW50GAQgASgJEjEKCGNyaXRlcmlhGAUgASgLMh8uYmx1ZWFwaS5hcGkuY292ZXIuQ29tYmluYXRpb25zEi4KCWFsbG9jYXRvchgGIAMoCzIbLmJsdWVhcGkuY292ZXIudjEuQWxsb2NhdG9yEgwKBG5hbWUYByABKAkSEwoLZGVzY3JpcHRpb24YCCABKAkiMgoeR2V0QWxsb2NhdGlvbkF0dHJpYnV0ZXNSZXF1ZXN0EhAKCGNhdGVnb3J5GAEgASgJIrEBCh9HZXRBbGxvY2F0aW9uQXR0cmlidXRlc1Jlc3BvbnNlElgKCWF0dHJpYnV0ZRgBIAMoCzJFLmJsdWVhcGkuY292ZXIudjEuR2V0QWxsb2NhdGlvbkF0dHJpYnV0ZXNSZXNwb25zZS5BbGxvY2F0aW9uQXR0cmlidXRlGjQKE0FsbG9jYXRpb25BdHRyaWJ1dGUSDAoEdHlwZRgBIAEoCRIPCgdzZXJ2aWNlGAIgAygJIj4KG0dldEFsbG9jYXRpb25Tb3VyY2VzUmVxdWVzdBIMCgR0eXBlGAEgASgJEhEKCWFjY291bnRJZBgCIAEoCSLrAQocR2V0QWxsb2NhdGlvblNvdXJjZXNSZXNwb25zZRJQCgZzb3VyY2UYASADKAsyQC5ibHVlYXBpLmNvdmVyLnYxLkdldEFsbG9jYXRpb25Tb3VyY2VzUmVzcG9uc2UuQWxsb2NhdGlvblNvdXJjZXMSKwoHdGFnRGF0YRgCIAMoCzIaLmJsdWVhcGkuYXBpLmNvdmVyLlRhZ0RhdGEaTAoRQWxsb2NhdGlvblNvdXJjZXMSEwoLYWNjb3VudE5hbWUYASABKAkSDwoHc2VydmljZRgCIAEoCRIRCgljb3N0R3JvdXAYAyABKAkiJAoWRGVsZXRlQWxsb2NhdG9yUmVxdWVzdBIKCgJpZBgBIAEoCSJHChxQcm94eUNyZWF0ZUNvbXBsZXRpb25SZXF1ZXN0EicKBnBhcmFtcxgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiLQodUHJveHlDcmVhdGVDb21wbGV0aW9uUmVzcG9uc2USDAoEbGluZRgBIAEoCSLUBAoTQWNjb3VudFVzYWdlRGV0YWlscxIKCgJpZBgBIAEoCRINCgVvcmdJZBgCIAEoCRIOCgZ2ZW5kb3IYAyABKAkSDwoHYWNjb3VudBgEIAEoCRIMCgRkYXRlGAUgASgJEhMKC3Byb2R1Y3RDb2RlGAYgASgJEhMKC3NlcnZpY2VDb2RlGAcgASgJEg4KBnJlZ2lvbhgIIAEoCRIMCgR6b25lGAkgASgJEhEKCXVzYWdlVHlwZRgKIAEoCRIUCgxpbnN0YW5jZVR5cGUYCyABKAkSEQoJb3BlcmF0aW9uGAwgASgJEhEKCWludm9pY2VJZBgNIAEoCRITCgtkZXNjcmlwdGlvbhgOIAEoCRISCgpyZXNvdXJjZUlkGA8gASgJEgwKBHRhZ3MYECABKAkSFgoOY29zdENhdGVnb3JpZXMYESABKAkSEwoLdXNhZ2VBbW91bnQYEiABKAESGQoRdHJ1ZVVuYmxlbmRlZENvc3QYEyABKAESFQoNdW5ibGVuZGVkQ29zdBgUIAEoARIVCg1lZmZlY3RpdmVDb3N0GBUgASgBEhUKDWFtb3J0aXplZENvc3QYFiABKAESGgoScHVibGljT25EZW1hbmRDb3N0GBcgASgBEhsKE3VudXNlZEFtb3J0aXplZENvc3QYGCABKAESEgoKbGFzdFVwZGF0ZRgZIAEoCRITCgtzcGxpdFN0YXR1cxgaIAEoCRITCgtpc0FsbG9jYXRlZBgbIAEoCBIRCglpc0FwcGxpZWQYHCABKAgSDgoGc291cmNlGB0gASgJIj0KF0xpc3RBY2NvdW50VXNhZ2VSZXF1ZXN0EhEKCXN0YXJ0RGF0ZRgBIAEoCRIPCgdlbmREYXRlGAIgASgJIjIKGlJlc3RvcmVBY2NvdW50VXNhZ2VSZXF1ZXN0EhQKDGFsbG9jYXRpb25JZBgBIAEoCSIjChVSZXN0b3JlU2F2aW5nc1JlcXVlc3QSCgoCaWQYASABKAkiugIKDlNhdmluZ3NEZXRhaWxzEgoKAmlkGAEgASgJEg0KBW9yZ0lkGAIgASgJEg4KBnZlbmRvchgDIAEoCRIPCgdhY2NvdW50GAQgASgJEg0KBW1vbnRoGAUgASgJEgwKBHR5cGUYBiABKAkSCwoDYXJuGAcgASgJEhMKC3Byb2R1Y3RDb2RlGAggASgJEhIKCm9mZmVyQ2xhc3MYCSABKAkSEAoIb25kZW1hbmQYCiABKAESFQoNZWZmZWN0aXZlQ29zdBgLIAEoARIPCgdzYXZpbmdzGAwgASgBEhMKC3NwbGl0U3RhdHVzGA0gASgJEhMKC2lzQWxsb2NhdGVkGA4gASgIEhEKCWlzQXBwbGllZBgPIAEoCBIOCgZzb3VyY2UYECABKAkSEgoKbGFzdFVwZGF0ZRgRIAEoCSJqCh1HZXRDb3N0R3JvdXBBbGxvY2F0aW9uUmVxdWVzdBIQCghjYXRlZ29yeRgBIAEoCRITCgtjb3N0R3JvdXBJZBgCIAEoCRIRCglzdGFydERhdGUYAyABKAkSDwoHZW5kRGF0ZRgEIAEoCSKAAQoOQWxsb2NhdGlvbkl0ZW0SDgoGdmVuZG9yGAEgASgJEg0KBW1vbnRoGAIgASgJEg8KB3Byb2R1Y3QYAyABKAkSDwoHYWNjb3VudBgEIAEoCRIMCgR0eXBlGAUgASgJEgwKBGNvc3QYBiABKAESEQoJY29zdEdyb3VwGAcgASgJIl8KF1Byb2Nlc3NBdXRoMFVzZXJSZXF1ZXN0Eg4KBnNvdXJjZRgBIAEoCRISCgpjdXN0b21lcklkGAIgASgJEg0KBWVtYWlsGAMgASgJEhEKCXN1YnVzZXJJZBgEIAEoCSIwChhQcm9jZXNzQXV0aDBVc2VyUmVzcG9uc2USFAoMaXNBdXRob3JpemVkGAEgASgIIpUCCgpEYXRhQWNjZXNzEg4KBnRhcmdldBgBIAEoCRINCgVvcmdJZBgCIAEoCRIxCgpnY3BPcHRpb25zGAMgASgLMh0uYmx1ZWFwaS5hcGkuY292ZXIuR2NwT3B0aW9ucxI1CgxhenVyZU9wdGlvbnMYBCABKAsyHy5ibHVlYXBpLmFwaS5jb3Zlci5BenVyZU9wdGlvbnMSMQoKYXdzT3B0aW9ucxgFIAEoCzIdLmJsdWVhcGkuYXBpLmNvdmVyLkF3c09wdGlvbnMSEwoLYWNjb3VudFR5cGUYBiABKAkSEgoKbGFzdFVwZGF0ZRgHIAEoCRISCgpjcmVhdGVUaW1lGAggASgJEg4KBnZlbmRvchgJIAEoCSLtAQoZUmVnaXN0ZXJEYXRhQWNjZXNzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDgoGdGFyZ2V0GAIgASgJEhMKC2FjY291bnRUeXBlGAMgASgJEjEKCmdjcE9wdGlvbnMYBCABKAsyHS5ibHVlYXBpLmFwaS5jb3Zlci5HY3BPcHRpb25zEjUKDGF6dXJlT3B0aW9ucxgFIAEoCzIfLmJsdWVhcGkuYXBpLmNvdmVyLkF6dXJlT3B0aW9ucxIxCgphd3NPcHRpb25zGAYgASgLMh0uYmx1ZWFwaS5hcGkuY292ZXIuQXdzT3B0aW9ucyLrAQoXVXBkYXRlRGF0YUFjY2Vzc1JlcXVlc3QSDgoGdGFyZ2V0GAEgASgJEg4KBnZlbmRvchgCIAEoCRIxCgpnY3BPcHRpb25zGAMgASgLMh0uYmx1ZWFwaS5hcGkuY292ZXIuR2NwT3B0aW9ucxI1CgxhenVyZU9wdGlvbnMYBCABKAsyHy5ibHVlYXBpLmFwaS5jb3Zlci5BenVyZU9wdGlvbnMSMQoKYXdzT3B0aW9ucxgFIAEoCzIdLmJsdWVhcGkuYXBpLmNvdmVyLkF3c09wdGlvbnMSEwoLYWNjb3VudFR5cGUYBiABKAkiFwoVTGlzdERhdGFBY2Nlc3NSZXF1ZXN0IiEKH0xpc3RVbnJlZ2lzdGVyZWRBY2NvdW50c1JlcXVlc3QicQogTGlzdFVucmVnaXN0ZXJlZEFjY291bnRzUmVzcG9uc2USDQoFb3JnSWQYASABKAkSPgoRdW5yZWdpc3RlcmVkQWNjdHMYAiADKAsyIy5ibHVlYXBpLmNvdmVyLnYxLlVucmVnaXN0ZXJlZEFjY3RzIlQKEVVucmVnaXN0ZXJlZEFjY3RzEgoKAmlkGAEgASgJEg8KB3BheWVySWQYAiABKAkSDgoGc3RhdHVzGAMgASgJEhIKCmxhc3RVcGRhdGUYBCABKAkifAoVQmlsbGluZ0FjY291bnRSZXF1ZXN0EhEKCWJpbGxpbmdJZBgBIAEoCRIRCglkYXRhc2V0SWQYAiABKAkSFQoNZGF0YXNldFJlZ2lvbhgDIAEoCRIRCglwcm9qZWN0SWQYBCABKAkSEwoLYmlsbGluZ05hbWUYBSABKAkiVAodR2V0QW5kRGVsZXRlRGF0YUFjY2Vzc1JlcXVlc3QSDgoGdGFyZ2V0GAEgASgJEg4KBnZlbmRvchgCIAEoCRITCgthY2NvdW50VHlwZRgDIAEoCSJhCiJBZGRQYXJ0bmVyQ2VudGVyQ3JlZGVudGlhbHNSZXF1ZXN0EhEKCWFjY291bnRJZBgBIAEoCRIVCg1hcHBsaWNhdGlvbklkGAIgASgJEhEKCXNlY3JldEtleRgDIAEoCSIlChRBZGRNcG5TZXR0aW5nUmVxdWVzdBINCgVtcG5JZBgBIAEoCSLWAQocR2V0Q29zdEdyb3VwQXR0cmlidXRlUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSFQoNYXR0cmlidXRlVHlwZRgCIAEoCRITCgtjb3N0R3JvdXBJZBgDIAEoCRI9ChRleGlzdGluZ0NvbWJpbmF0aW9ucxgEIAMoCzIfLmJsdWVhcGkuYXBpLmNvdmVyLkNvbWJpbmF0aW9ucxI7ChJjdXJyZW50Q29tYmluYXRpb24YBSABKAsyHy5ibHVlYXBpLmFwaS5jb3Zlci5Db21iaW5hdGlvbnMidwodR2V0Q29zdEdyb3VwQXR0cmlidXRlUmVzcG9uc2USKQoGcmVzdWx0GAEgAygLMhkuYmx1ZWFwaS5hcGkuY292ZXIuUmVzdWx0EisKB3RhZ0RhdGEYAiADKAsyGi5ibHVlYXBpLmFwaS5jb3Zlci5UYWdEYXRhIiYKFEdldENhdGVnb3JpZXNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCSJGChVHZXRDYXRlZ29yaWVzUmVzcG9uc2USLQoIY2F0ZWdvcnkYASADKAsyGy5ibHVlYXBpLmFwaS5jb3Zlci5DYXRlZ29yeSISChBHZXRBbGVydHNSZXF1ZXN0IkQKEUdldEFsZXJ0c1Jlc3BvbnNlEi8KCWFsZXJ0RGF0YRgBIAEoCzIcLmJsdWVhcGkuYXBpLmNvdmVyLkFsZXJ0RGF0YSKGAQoSQ3JlYXRlQWxlcnRSZXF1ZXN0EgwKBG5hbWUYASABKAkSEwoLZml4ZWRBbW91bnQYAiABKAISEgoKcGVyY2VudGFnZRgDIAEoAhITCgtncmFudWxhcml0eRgEIAEoCRISCgpjb3N0R3JvdXBzGAUgAygJEhAKCGNoYW5uZWxzGAYgAygJIkYKE0NyZWF0ZUFsZXJ0UmVzcG9uc2USLwoJYWxlcnREYXRhGAEgASgLMhwuYmx1ZWFwaS5hcGkuY292ZXIuQWxlcnREYXRhIiQKFkdldEFsZXJ0RGV0YWlsc1JlcXVlc3QSCgoCaWQYASABKAkiSgoXR2V0QWxlcnREZXRhaWxzUmVzcG9uc2USLwoJYWxlcnREYXRhGAEgASgLMhwuYmx1ZWFwaS5hcGkuY292ZXIuQWxlcnREYXRhIiAKEkRlbGV0ZUFsZXJ0UmVxdWVzdBIKCgJpZBgBIAEoCSIhChNEZWxldGVBbGVydFJlc3BvbnNlEgoKAmlkGAEgASgJIpkBChlVcGRhdGVBbGVydERldGFpbHNSZXF1ZXN0EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZml4ZWRBbW91bnQYAyABKAISEgoKcGVyY2VudGFnZRgEIAEoAhITCgtncmFudWxhcml0eRgFIAEoCRISCgpjb3N0R3JvdXBzGAYgAygJEhAKCGNoYW5uZWxzGAcgAygJIk0KGlVwZGF0ZUFsZXJ0RGV0YWlsc1Jlc3BvbnNlEi8KCWFsZXJ0RGF0YRgBIAEoCzIcLmJsdWVhcGkuYXBpLmNvdmVyLkFsZXJ0RGF0YSIiChJHZXRDaGFubmVsc1JlcXVlc3QSDAoEdHlwZRgBIAEoCSJKChNHZXRDaGFubmVsc1Jlc3BvbnNlEjMKC2NoYW5uZWxEYXRhGAEgASgLMh4uYmx1ZWFwaS5hcGkuY292ZXIuQ2hhbm5lbERhdGEiRgoUQ3JlYXRlQ2hhbm5lbFJlcXVlc3QSDAoEbmFtZRgBIAEoCRIMCgR0eXBlGAIgASgJEhIKCndlYmhvb2tVcmwYAyABKAkiTAoVQ3JlYXRlQ2hhbm5lbFJlc3BvbnNlEjMKC2NoYW5uZWxEYXRhGAEgASgLMh4uYmx1ZWFwaS5hcGkuY292ZXIuQ2hhbm5lbERhdGEiJgoYR2V0Q2hhbm5lbERldGFpbHNSZXF1ZXN0EgoKAmlkGAEgASgJIlAKGUdldENoYW5uZWxEZXRhaWxzUmVzcG9uc2USMwoLY2hhbm5lbERhdGEYASABKAsyHi5ibHVlYXBpLmFwaS5jb3Zlci5DaGFubmVsRGF0YSIiChREZWxldGVDaGFubmVsUmVxdWVzdBIKCgJpZBgBIAEoCSIjChVEZWxldGVDaGFubmVsUmVzcG9uc2USCgoCaWQYASABKAkiWQobVXBkYXRlQ2hhbm5lbERldGFpbHNSZXF1ZXN0EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDAoEdHlwZRgDIAEoCRISCgp3ZWJob29rVXJsGAQgASgJIlMKHFVwZGF0ZUNoYW5uZWxEZXRhaWxzUmVzcG9uc2USMwoLY2hhbm5lbERhdGEYASABKAsyHi5ibHVlYXBpLmFwaS5jb3Zlci5DaGFubmVsRGF0YSLPAQohR2V0RGlzY291bnRSZWNvbW1lbmRhdGlvbnNSZXF1ZXN0EhMKC2Nvc3RHcm91cElkGAEgASgJEi8KCWF3c0lucHV0cxgCIAEoCzIcLmJsdWVhcGkuYXBpLmNvdmVyLkF3c0lucHV0cxIzCgthenVyZUlucHV0cxgDIAEoCzIeLmJsdWVhcGkuYXBpLmNvdmVyLkF6dXJlSW5wdXRzEi8KCWdjcElucHV0cxgEIAEoCzIcLmJsdWVhcGkuYXBpLmNvdmVyLkdjcElucHV0cyKJAgoiR2V0RGlzY291bnRSZWNvbW1lbmRhdGlvbnNSZXNwb25zZRJJChJhd3NSZWNvbW1lbmRhdGlvbnMYASABKAsyLS5ibHVlYXBpLmFwaS5jb3Zlci5Bd3NEaXNjb3VudFJlY29tbWVuZGF0aW9ucxJNChRhenVyZVJlY29tbWVuZGF0aW9ucxgCIAEoCzIvLmJsdWVhcGkuYXBpLmNvdmVyLkF6dXJlRGlzY291bnRSZWNvbW1lbmRhdGlvbnMSSQoSZ2NwUmVjb21tZW5kYXRpb25zGAMgASgLMi0uYmx1ZWFwaS5hcGkuY292ZXIuR2NwRGlzY291bnRSZWNvbW1lbmRhdGlvbnMiVwocR2V0QW5vbWFseWluQ29zdEdyb3VwUmVxdWVzdBITCgtjb3N0R3JvdXBJZBgBIAEoCRIRCglzdGFydERhdGUYAiABKAkSDwoHZW5kRGF0ZRgDIAEoCSLhAQoLQW5vbWFseURhdGESDwoHYWNjb3VudBgBIAEoCRITCgtjb3N0R3JvdXBJZBgCIAEoCRIOCgZ2ZW5kb3IYAyABKAkSDwoHcHJvZHVjdBgEIAEoCRIMCgRkYXRlGAUgASgJEhEKCXRvdGFsQ29zdBgGIAEoAhIRCglpc0Fub21hbHkYByABKAgSEgoKbG93ZXJMaW1pdBgIIAEoAhISCgp1cHBlckxpbWl0GAkgASgCEhMKC2Fub21hbHlDb3N0GAogASgCEhoKEmFub21hbHlQcm9iYWJpbGl0eRgLIAEoAiKFAQokQ3JlYXRlRGlzY291bnRFeHBpcmF0aW9uQWxlcnRSZXF1ZXN0EhMKC2ZyZXF1ZW5jaWVzGAEgAygDEhIKCmNvc3RHcm91cHMYAiADKAkSFAoMYWxlcnRFbmFibGVkGAMgASgIEhAKCGNoYW5uZWxzGAQgAygJEgwKBG5hbWUYBSABKAkiNgooTWFuaXB1bGF0ZURpc2NvdW50RXhwaXJhdGlvbkFsZXJ0UmVxdWVzdBIKCgJpZBgBIAEoCSKRAQokVXBkYXRlRGlzY291bnRFeHBpcmF0aW9uQWxlcnRSZXF1ZXN0EgoKAmlkGAEgASgJEhQKDGFsZXJ0RW5hYmxlZBgCIAEoCBIQCghjaGFubmVscxgDIAMoCRITCgtmcmVxdWVuY2llcxgEIAMoAxISCgpjb3N0R3JvdXBzGAUgAygJEgwKBG5hbWUYBiABKAki6QEKF0Rpc2NvdW50RXhwaXJ5QWxlcnREYXRhEgoKAmlkGAEgASgJEg0KBW9yZ0lkGAIgASgJEhQKDGFsZXJ0RW5hYmxlZBgDIAEoCBITCgtmcmVxdWVuY2llcxgEIAMoAxI1Cgpjb3N0R3JvdXBzGAUgAygLMiEuYmx1ZWFwaS5hcGkuY292ZXIuQWxlcnRDb3N0R3JvdXASDwoHZGV0YWlscxgGIAEoCRIyCghjaGFubmVscxgHIAEoCzIgLmJsdWVhcGkuYXBpLmNvdmVyLkFsZXJ0Q2hhbm5lbHMSDAoEbmFtZRgIIAEoCSIkCiJMaXN0RGlzY291bnRFeHBpcmF0aW9uQWxlcnRSZXF1ZXN0IoUBChlDcmVhdGVBbm9tYWx5QWxlcnRSZXF1ZXN0EgwKBG5hbWUYASABKAkSFAoMYWxlcnRFbmFibGVkGAIgASgIEhEKCWZyZXF1ZW5jeRgDIAEoCRITCgtjb3N0R3JvdXBJZBgEIAEoCRIcChRub3RpZmljYXRpb25DaGFubmVscxgFIAMoCSIrCh1NYW5pcHVsYXRlQW5vbWFseUFsZXJ0UmVxdWVzdBIKCgJpZBgBIAEoCSLQAQoQQW5vbWFseUFsZXJ0RGF0YRIKCgJpZBgBIAEoCRINCgVvcmdJZBgCIAEoCRIMCgRuYW1lGAMgASgJEhQKDGFsZXJ0RW5hYmxlZBgEIAEoCBIRCglmcmVxdWVuY3kYBSABKAkSNgoLY29zdEdyb3VwSWQYBiABKAsyIS5ibHVlYXBpLmFwaS5jb3Zlci5BbGVydENvc3RHcm91cBIyCghjaGFubmVscxgHIAEoCzIgLmJsdWVhcGkuYXBpLmNvdmVyLkFsZXJ0Q2hhbm5lbHMiGQoXTGlzdEFub21hbHlBbGVydFJlcXVlc3QikQEKGVVwZGF0ZUFub21hbHlBbGVydFJlcXVlc3QSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIUCgxhbGVydEVuYWJsZWQYAyABKAgSHAoUbm90aWZpY2F0aW9uQ2hhbm5lbHMYBCADKAkSEQoJZnJlcXVlbmN5GAUgASgJEhMKC2Nvc3RHcm91cElkGAYgASgJIokBChZSZWdpc3Rlck5ld1VzZXJSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhAKCHBhc3N3b3JkGAIgASgJEgwKBG5hbWUYAyABKAkSDwoHY29tcGFueRgEIAEoCRIMCgRyb2xlGAUgASgJEg4KBmFtb3VudBgGIAEoCRIRCglpbnRlbnRpb24YByABKAkiLwoXUmVnaXN0ZXJOZXdVc2VyUmVzcG9uc2USFAoMaXNBdXRob3JpemVkGAEgASgIIiYKFUdldFVzZXJQcm9maWxlUmVxdWVzdBINCgVlbWFpbBgBIAEoCSLOAQoWR2V0VXNlclByb2ZpbGVSZXNwb25zZRIZChFoYXNDcmVhdGVkUHJvZmlsZRgBIAEoCBIMCgRuYW1lGAIgASgJEgwKBHJvbGUYAyABKAkSDQoFdXNhZ2UYBCABKAkSEQoJaW50ZW50aW9uGAUgASgJEhMKC2NvbXBhbnlOYW1lGAYgASgJEhQKDGVtYWlsQWRkcmVzcxgHIAEoCRISCgpsaW5rU291cmNlGAggASgJEhwKFGhhc1N1YnNjcmliZWRVcGRhdGVzGAkgASgIIq4BChhVcGRhdGVVc2VyUHJvZmlsZVJlcXVlc3QSDQoFZW1haWwYASABKAkSDAoEbmFtZRgCIAEoCRIMCgRyb2xlGAMgASgJEg0KBXVzYWdlGAQgASgJEhEKCWludGVudGlvbhgFIAEoCRITCgtjb21wYW55TmFtZRgGIAEoCRISCgpsaW5rU291cmNlGAcgASgJEhwKFGhhc1N1YnNjcmliZWRVcGRhdGVzGAggASgIIq8BChlVcGRhdGVVc2VyUHJvZmlsZVJlc3BvbnNlEg0KBWVtYWlsGAEgASgJEgwKBG5hbWUYAiABKAkSDAoEcm9sZRgDIAEoCRINCgV1c2FnZRgEIAEoCRIRCglpbnRlbnRpb24YBSABKAkSEwoLY29tcGFueU5hbWUYBiABKAkSEgoKbGlua1NvdXJjZRgHIAEoCRIcChRoYXNTdWJzY3JpYmVkVXBkYXRlcxgIIAEoCCJIChJMaXN0QnVkZ2V0c1JlcXVlc3QSHwoXaW5jbHVkZVNwZW5kQW5kRm9yZWNhc3QYASABKAgSEQoJY29zdEdyb3VwGAIgASgJIkgKE0xpc3RCdWRnZXRzUmVzcG9uc2USMQoKYnVkZ2V0RGF0YRgBIAEoCzIdLmJsdWVhcGkuYXBpLmNvdmVyLkJ1ZGdldERhdGEiHgoQR2V0QnVkZ2V0UmVxdWVzdBIKCgJpZBgBIAEoCSJGChFHZXRCdWRnZXRSZXNwb25zZRIxCgpidWRnZXREYXRhGAEgASgLMh0uYmx1ZWFwaS5hcGkuY292ZXIuQnVkZ2V0RGF0YSJIChNDcmVhdGVCdWRnZXRSZXF1ZXN0EjEKCmJ1ZGdldERhdGEYASABKAsyHS5ibHVlYXBpLmFwaS5jb3Zlci5CdWRnZXREYXRhIkkKFENyZWF0ZUJ1ZGdldFJlc3BvbnNlEjEKCmJ1ZGdldERhdGEYASABKAsyHS5ibHVlYXBpLmFwaS5jb3Zlci5CdWRnZXREYXRhIiEKE0RlbGV0ZUJ1ZGdldFJlcXVlc3QSCgoCaWQYASABKAkiIgoURGVsZXRlQnVkZ2V0UmVzcG9uc2USCgoCaWQYASABKAkiVAoTVXBkYXRlQnVkZ2V0UmVxdWVzdBIKCgJpZBgBIAEoCRIxCgpidWRnZXREYXRhGAIgASgLMh0uYmx1ZWFwaS5hcGkuY292ZXIuQnVkZ2V0RGF0YSJJChRVcGRhdGVCdWRnZXRSZXNwb25zZRIxCgpidWRnZXREYXRhGAEgASgLMh0uYmx1ZWFwaS5hcGkuY292ZXIuQnVkZ2V0RGF0YSJLCi5SZXNvbHZlQVdTTWFya2V0cGxhY2VUb2tlbkZvck9uYm9hcmRpbmdSZXF1ZXN0EhkKEXJlZ2lzdHJhdGlvblRva2VuGAEgASgJImEKL1Jlc29sdmVBV1NNYXJrZXRwbGFjZVRva2VuRm9yT25ib2FyZGluZ1Jlc3BvbnNlEhoKEmlzQWxsb3dlZFRvT25ib2FyZBgBIAEoCBISCgpjdXN0b21lcklkGAIgASgJIiYKJEdldEN1c3RvbWVyU3Vic2NyaXB0aW9uU3RhdHVzUmVxdWVzdCLyAQolR2V0Q3VzdG9tZXJTdWJzY3JpcHRpb25TdGF0dXNSZXNwb25zZRIWCg5kYXRlUmVnaXN0ZXJlZBgBIAEoCRIaChJzdWJzY3JpcHRpb25FeHBpcnkYAiABKAkSEAoIZGF5c0xlZnQYAyABKAUSFAoMaXNTdWJzY3JpYmVkGAQgASgIEhEKCWlzRXhwaXJlZBgFIAEoCBIMCgRwbGFuGAYgASgJEg4KBmFtb3VudBgHIAEoCRIVCg1wYXltZW50T3B0aW9uGAggASgJEhUKDXBheW1lbnRNZXRob2QYCSABKAkSDgoGY3JlZGl0GAogASgBIrMBChZDcmVhdGVQcm9maWxpbmdSZXF1ZXN0EgwKBG5hbWUYASABKAkSDAoEcm9sZRgCIAEoCRINCgV1c2FnZRgDIAEoCRIRCglpbnRlbnRpb24YBCABKAkSEwoLY29tcGFueU5hbWUYBSABKAkSFAoMZW1haWxBZGRyZXNzGAYgASgJEhIKCmxpbmtTb3VyY2UYByABKAkSHAoUaGFzU3Vic2NyaWJlZFVwZGF0ZXMYCCABKAgiGQoXQ3JlYXRlUHJvZmlsaW5nUmVzcG9uc2UiOQobQWRkSW5mb3RvTWFya2V0cGxhY2VSZXF1ZXN0EhoKEmN1c3RvbWVySWRlbnRpZmllchgBIAEoCSIeChxBZGRJbmZvdG9NYXJrZXRwbGFjZVJlc3BvbnNlIngKF0dldFJlcG9ydFN1bW1hcnlSZXF1ZXN0EhMKC2Nvc3RHcm91cElkGAEgASgJEhEKCXN0YXJ0RGF0ZRgCIAEoCRIPCgdlbmREYXRlGAMgASgJEhIKCnJlcG9ydFR5cGUYBCABKAkSEAoIY3VycmVuY3kYBSABKAkirgIKGEdldFJlcG9ydFN1bW1hcnlSZXNwb25zZRITCgtjb3N0R3JvdXBJZBgBIAEoCRIRCglzdGFydERhdGUYAiABKAkSDwoHZW5kRGF0ZRgDIAEoCRI9ChBleGVjdXRpdmVTdW1tYXJ5GAQgASgLMiMuYmx1ZWFwaS5hcGkuY292ZXIuRXhlY3V0aXZlU3VtbWFyeRJfCiFvcHRpbWl6YXRpb25SZWNvbW1lbmRhdGlvblN1bW1hcnkYBSABKAsyNC5ibHVlYXBpLmFwaS5jb3Zlci5PcHRpbWl6YXRpb25SZWNvbW1lbmRhdGlvblN1bW1hcnkSOQoOc2F2aW5nc1N1bW1hcnkYBiABKAsyIS5ibHVlYXBpLmFwaS5jb3Zlci5TYXZpbmdzU3VtbWFyeSKqAgoZTGlzdFJlY29tbWVuZGF0aW9uUmVxdWVzdBITCgtjb3N0Z3JvdXBJZBgBIAEoCRIWCg5kYXRlUmFuZ2VTdGFydBgCIAEoCRIUCgxkYXRlUmFuZ2VFbmQYAyABKAkSDgoGdmVuZG9yGAQgASgJEg4KBnNvdXJjZRgFIAEoCRIaChJvcHRpbWl6YXRpb25TdGF0dXMYByABKAkSDAoEdHlwZRgIIAEoCRIOCgZzcFR5cGUYCSABKAkSEQoJcmF0ZU1vZGVsGAogASgJEhUKDXBheW1lbnRPcHRpb24YCyABKAkSDAoEdGVybRgMIAEoCRIPCgdzZXJ2aWNlGA0gASgJEhUKDW9mZmVyaW5nQ2xhc3MYDiABKAkSEAoIY3VycmVuY3kYDyABKAki1QIKG0xpc3RSZWNvbW1lbmRhdGlvblYyUmVxdWVzdBITCgtjb3N0Z3JvdXBJZBgBIAEoCRIWCg5kYXRlUmFuZ2VTdGFydBgCIAEoCRIUCgxkYXRlUmFuZ2VFbmQYAyABKAkSUAoMcmF0ZVNldHRpbmdzGAQgASgLMjouYmx1ZWFwaS5jb3Zlci52MS5MaXN0UmVjb21tZW5kYXRpb25WMlJlcXVlc3QuUmF0ZVNldHRpbmdzEhAKCGN1cnJlbmN5GAUgASgJGo4BCgxSYXRlU2V0dGluZ3MSDgoGc3BUeXBlGAEgASgJEhEKCXJhdGVNb2RlbBgCIAEoCRIVCg1wYXltZW50T3B0aW9uGAMgASgJEgwKBHRlcm0YBCABKAkSDwoHc2VydmljZRgFIAEoCRIVCg1vZmZlcmluZ0NsYXNzGAYgASgJEg4KBnZlbmRvchgHIAEoCSLaBgoaTGlzdFJlY29tbWVuZGF0aW9uUmVzcG9uc2USGAoQcmVjb21tZW5kYXRpb25JZBgBIAEoCRIWCg5yZWNvbW1lbmRhdGlvbhgCIAEoCRIPCgdzZXJ2aWNlGAMgASgJEh4KFmVzdGltYXRlZE1vbnRobHlTYXZpbmcYBCABKAESHAoUZXN0aW1hdGVkTW9udGhseUNvc3QYBSABKAESDwoHc2NvcmluZxgGIAEoCRIOCgZ2ZW5kb3IYByABKAkSEAoIY2F0ZWdvcnkYCCABKAkSGgoSb3B0aW1pemF0aW9uU3RhdHVzGAkgASgJEhQKDGVycm9yTWVzc2FnZRgKIAEoCRIRCglhY2NvdW50SWQYCyABKAkSEwoLYWNjb3VudE5hbWUYDCABKAkSFAoMaW5zdGFuY2VOYW1lGA0gASgJEhIKCmluc3RhbmNlSWQYDiABKAkSFAoMaW5zdGFuY2VUeXBlGA8gASgJEg4KBnJlZ2lvbhgQIAEoCRISCgpjb21taXRtZW50GBEgASgBEg4KBnNwVHlwZRgSIAEoCRIYChBudW1iZXJUb1B1cmNoYXNlGBMgASgDEg4KBnJpVHlwZRgUIAEoCRIMCgR0eXBlGBUgASgJEg4KBnNvdXJjZRgWIAEoCRIXCg9kYXRlUmVjb21tZW5kZWQYFyABKAkSGwoTcmVjb21tZW5kYXRpb25Hcm91cBgYIAEoCRIVCg1sYXN0VXBkYXRlZEF0GBkgASgJElMKDnB1cmNoYXNlT3B0aW9uGBogASgLMjsuYmx1ZWFwaS5jb3Zlci52MS5MaXN0UmVjb21tZW5kYXRpb25SZXNwb25zZS5QdXJjaGFzZU9wdGlvbhrPAQoOUHVyY2hhc2VPcHRpb24SDgoGc3BUeXBlGAEgASgJEhUKDW9mZmVyaW5nQ2xhc3MYAiABKAkSEgoKY29tbWl0bWVudBgDIAEoARIYChBudW1iZXJUb1B1cmNoYXNlGAQgASgDEhUKDXBheW1lbnRPcHRpb24YBSABKAkSDAoEdGVybRgGIAEoCRIZChFjdXJyZW50R2VuZXJhdGlvbhgHIAEoCBITCgtzZXJ2aWNlVHlwZRgIIAEoCRITCgt1cGZyb250Q29zdBgJIAEoASJRChhHZXRSZWNvbW1lbmRhdGlvblJlcXVlc3QSCgoCaWQYASABKAkSEwoLY29zdEdyb3VwSWQYAiABKAkSFAoMcGVyaW9kT3B0aW9uGAMgASgJIl4KGUdldFJlY29tbWVuZGF0aW9uUmVzcG9uc2USQQoScmVjb21tZW5kYXRpb25EYXRhGAEgASgLMiUuYmx1ZWFwaS5hcGkuY292ZXIuQVdTUmVjb21tZW5kYXRpb25zIkQKGkV4ZWN1dGVPcHRpbWl6YXRpb25SZXF1ZXN0EhgKEHJlY29tbWVuZGF0aW9uSWQYASABKAkSDAoEdHlwZRgCIAEoCSKUAwobRXhlY3V0ZU9wdGltaXphdGlvblJlc3BvbnNlEkwKCWF3c09wdGlvbhgBIAEoCzI3LmJsdWVhcGkuY292ZXIudjEuRXhlY3V0ZU9wdGltaXphdGlvblJlc3BvbnNlLkFXU09wdGlvbkgAEkwKCWdjcE9wdGlvbhgCIAEoCzI3LmJsdWVhcGkuY292ZXIudjEuRXhlY3V0ZU9wdGltaXphdGlvblJlc3BvbnNlLkdDUE9wdGlvbkgAElYKDmF6dXJlQ3NwT3B0aW9uGAMgASgLMjwuYmx1ZWFwaS5jb3Zlci52MS5FeGVjdXRlT3B0aW1pemF0aW9uUmVzcG9uc2UuQXp1cmVDU1BPcHRpb25IABpYCglBV1NPcHRpb24SGgoSYXBwcm92ZVRlbXBsYXRlVXJsGAEgASgJEhgKEHJlY29tbWVuZGF0aW9uSWQYAiABKAkSFQoNY3VycmVudFN0YXR1cxgDIAEoCRoLCglHQ1BPcHRpb24aEAoOQXp1cmVDU1BPcHRpb25CCAoGVmVuZG9yIiMKFU1hcmtBc0V4ZWN1dGVkUmVxdWVzdBIKCgJpZBgBIAMoCSIYChZNYXJrQXNFeGVjdXRlZFJlc3BvbnNlIi8KIVVuZG9FeGVjdXRlZFJlY29tbWVuZGF0aW9uUmVxdWVzdBIKCgJpZBgBIAMoCSIkCiJVbmRvRXhlY3V0ZWRSZWNvbW1lbmRhdGlvblJlc3BvbnNlIqcBChpPcHRpbWl6YXRpb25IaXN0b3J5UmVxdWVzdBITCgtjb3N0Z3JvdXBJZBgBIAEoCRIWCg5kYXRlUmFuZ2VTdGFydBgCIAEoCRIUCgxkYXRlUmFuZ2VFbmQYAyABKAkSDgoGdmVuZG9yGAQgASgJEg4KBnNvdXJjZRgFIAEoCRIUCgxwZXJpb2RPcHRpb24YBiABKAkSEAoIY3VycmVuY3kYByABKAkidgobT3B0aW1pemF0aW9uSGlzdG9yeVJlc3BvbnNlElcKHWV4ZWN1dGVkUmVjb21tZW5kYXRpb25EZXRhaWxzGAIgAygLMjAuYmx1ZWFwaS5hcGkuY292ZXIuRXhlY3V0ZWRSZWNvbW1lbmRhdGlvbkRldGFpbHMiYAohU2V0Q29zdEdyb3VwRXZlbnRJbmRpY2F0b3JSZXF1ZXN0EhMKC2Nvc3RHcm91cElkGAEgASgJEg8KB2Fub21hbHkYAiABKAgSFQoNdmlzdWFsQnVpbGRlchgDIAEoCCJ0CiJTZXRDb3N0R3JvdXBFdmVudEluZGljYXRvclJlc3BvbnNlEhMKC2Nvc3RHcm91cElkGAEgASgJEjkKDmV2ZW50SW5kaWNhdG9yGAIgASgLMiEuYmx1ZWFwaS5hcGkuY292ZXIuRXZlbnRJbmRpY2F0b3IiewohU2V0Q29zdEdyb3VwQW5vbWFseU9wdGlvbnNSZXF1ZXN0EhMKC2Nvc3RHcm91cElkGAEgASgJEhEKCXRocmVzaG9sZBgCIAEoAhIUCgxpc1BlcmNlbnRhZ2UYAyABKAgSGAoQcGFzdERhdGFJbk1vbnRocxgEIAEoAyJ0CiJTZXRDb3N0R3JvdXBBbm9tYWx5T3B0aW9uc1Jlc3BvbnNlEhMKC2Nvc3RHcm91cElkGAEgASgJEjkKDmFub21hbHlPcHRpb25zGAIgASgLMiEuYmx1ZWFwaS5hcGkuY292ZXIuQW5vbWFseU9wdGlvbnMiLwoYU2V0T3JnRmlzY2FsTW9udGhSZXF1ZXN0EhMKC2Zpc2NhbE1vbnRoGAEgASgJIjAKGVNldE9yZ0Zpc2NhbE1vbnRoUmVzcG9uc2USEwoLZmlzY2FsTW9udGgYASABKAkiGgoYR2V0T3JnRmlzY2FsTW9udGhSZXF1ZXN0IkgKGUdldE9yZ0Zpc2NhbE1vbnRoUmVzcG9uc2USEwoLZmlzY2FsTW9udGgYASABKAkSFgoOZGF0ZVJlZ2lzdGVyZWQYAiABKAkiWwobVHJhbnNmZXJPcmdhbml6YXRpb25SZXF1ZXN0Eg4KBnRhcmdldBgBIAEoCRIOCgZyZWdpb24YAiABKAkSDQoFcGF5ZXIYAyABKAkSDQoFb3JnSWQYBCABKAkiLgocVHJhbnNmZXJPcmdhbml6YXRpb25SZXNwb25zZRIOCgZ0YXJnZXQYASABKAkiRQogVXBkYXRlQ29zdEdyb3VwQ3JlYXRpb25VSVJlcXVlc3QSIQoZdXNlTmV3Q29zdEdyb3VwQ3JlYXRpb25VSRgBIAEoCCJSCiFVcGRhdGVDb3N0R3JvdXBDcmVhdGlvblVJUmVzcG9uc2USLQoIdXNlckRhdGEYASABKAsyGy5ibHVlYXBpLmFwaS5jb3Zlci5Vc2VyRGF0YSIWChRMaXN0VW5pdFR5cGVzUmVxdWVzdCJOChVMaXN0VW5pdFR5cGVzUmVzcG9uc2USNQoMdW5pdENvc3REYXRhGAEgAygLMh8uYmx1ZWFwaS5hcGkuY292ZXIuVW5pdENvc3REYXRhIrYBChVDcmVhdGVVbml0VHlwZVJlcXVlc3QSEAoIdW5pdE5hbWUYASABKAkSLgoJdW5pdEl0ZW1zGAIgAygLMhsuYmx1ZWFwaS5hcGkuY292ZXIuVW5pdEl0ZW0SRgoPc2hhcmVkUmVzb3VyY2VzGAMgAygLMi0uYmx1ZWFwaS5hcGkuY292ZXIuU2hhcmVkUmVzb3VyY2VzQ29tYmluYXRpb24SEwoLZGVzY3JpcHRpb24YBCABKAkiTwoWQ3JlYXRlVW5pdFR5cGVSZXNwb25zZRI1Cgx1bml0Q29zdERhdGEYASABKAsyHy5ibHVlYXBpLmFwaS5jb3Zlci5Vbml0Q29zdERhdGEiIAoSR2V0VW5pdFR5cGVSZXF1ZXN0EgoKAmlkGAEgASgJIkwKE0dldFVuaXRUeXBlUmVzcG9uc2USNQoMdW5pdENvc3REYXRhGAEgASgLMh8uYmx1ZWFwaS5hcGkuY292ZXIuVW5pdENvc3REYXRhIsIBChVVcGRhdGVVbml0VHlwZVJlcXVlc3QSCgoCaWQYASABKAkSEAoIdW5pdE5hbWUYAiABKAkSLgoJdW5pdEl0ZW1zGAMgAygLMhsuYmx1ZWFwaS5hcGkuY292ZXIuVW5pdEl0ZW0SRgoPc2hhcmVkUmVzb3VyY2VzGAQgAygLMi0uYmx1ZWFwaS5hcGkuY292ZXIuU2hhcmVkUmVzb3VyY2VzQ29tYmluYXRpb24SEwoLZGVzY3JpcHRpb24YBSABKAkiTwoWVXBkYXRlVW5pdFR5cGVSZXNwb25zZRI1Cgx1bml0Q29zdERhdGEYASABKAsyHy5ibHVlYXBpLmFwaS5jb3Zlci5Vbml0Q29zdERhdGEiIwoVRGVsZXRlVW5pdFR5cGVSZXF1ZXN0EgoKAmlkGAEgASgJIiQKFkRlbGV0ZVVuaXRUeXBlUmVzcG9uc2USCgoCaWQYASABKAkiTwoRTWVyZ2VVbml0c1JlcXVlc3QSEwoLdW5pdENvc3RJZHMYASADKAkSEAoIdW5pdE5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkiTQoSTWVyZ2VVbml0c1Jlc3BvbnNlEjcKDm1lcmdlZFVuaXRDb3N0GAEgASgLMh8uYmx1ZWFwaS5hcGkuY292ZXIuVW5pdENvc3REYXRhIhsKGUxpc3RTdWdnZXN0ZWRVbml0c1JlcXVlc3QiVgoaTGlzdFN1Z2dlc3RlZFVuaXRzUmVzcG9uc2USOAoOc3VnZ2VzdGVkVW5pdHMYASADKAsyIC5ibHVlYXBpLmFwaS5jb3Zlci5TdWdnZXN0ZWRVbml0InIKGk1lcmdlU3VnZ2VzdGVkVW5pdHNSZXF1ZXN0EhgKEHN1Z2dlc3RlZFVuaXRJZHMYASADKAkSEwoLdW5pdEl0ZW1JZHMYAiADKAkSEAoIdW5pdE5hbWUYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkiXQobTWVyZ2VTdWdnZXN0ZWRVbml0c1Jlc3BvbnNlEj4KFG1lcmdlZFN1Z2dlc3RlZFVuaXRzGAEgASgLMiAuYmx1ZWFwaS5hcGkuY292ZXIuU3VnZ2VzdGVkVW5pdCI6Ch5DcmVhdGVVbml0RnJvbVN1Z2dlc3RlZFJlcXVlc3QSGAoQc3VnZ2VzdGVkVW5pdElkcxgBIAMoCSI2Ch9DcmVhdGVVbml0RnJvbVN1Z2dlc3RlZFJlc3BvbnNlEhMKC3VuaXRDb3N0SWRzGAEgAygJIhwKGkxpc3RTaGFyZWRSZXNvdXJjZXNSZXF1ZXN0ImUKG0xpc3RTaGFyZWRSZXNvdXJjZXNSZXNwb25zZRJGCg9zaGFyZWRSZXNvdXJjZXMYASADKAsyLS5ibHVlYXBpLmFwaS5jb3Zlci5TaGFyZWRSZXNvdXJjZXNDb21iaW5hdGlvbiLTAgocQ3JlYXRlU2hhcmVkUmVzb3VyY2VzUmVxdWVzdBIaChJzaGFyZWRSZXNvdXJjZU5hbWUYASABKAkSTQobc2hhcmVkUmVzb3VyY2VzQ29tYmluYXRpb25zGAIgASgLMiguYmx1ZWFwaS5hcGkuY292ZXIuUmVzb3VyY2VzQ29tYmluYXRpb25zElYKDGRpc3RyaWJ1dGlvbhgDIAMoCzJALmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlU2hhcmVkUmVzb3VyY2VzUmVxdWVzdC5EaXN0cmlidXRpb25FbnRyeRIRCglhbGxvY2F0ZWQYBCABKAESEwoLdW5hbGxvY2F0ZWQYBSABKAESEwoLZGVzY3JpcHRpb24YBiABKAkaMwoRRGlzdHJpYnV0aW9uRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgBOgI4ASJnCh1DcmVhdGVTaGFyZWRSZXNvdXJjZXNSZXNwb25zZRJGCg9zaGFyZWRSZXNvdXJjZXMYASABKAsyLS5ibHVlYXBpLmFwaS5jb3Zlci5TaGFyZWRSZXNvdXJjZXNDb21iaW5hdGlvbiInChlHZXRTaGFyZWRSZXNvdXJjZXNSZXF1ZXN0EgoKAmlkGAEgASgJImQKGkdldFNoYXJlZFJlc291cmNlc1Jlc3BvbnNlEkYKD3NoYXJlZFJlc291cmNlcxgBIAEoCzItLmJsdWVhcGkuYXBpLmNvdmVyLlNoYXJlZFJlc291cmNlc0NvbWJpbmF0aW9uIt8CChxVcGRhdGVTaGFyZWRSZXNvdXJjZXNSZXF1ZXN0EgoKAmlkGAEgASgJEhoKEnNoYXJlZFJlc291cmNlTmFtZRgCIAEoCRJNChtzaGFyZWRSZXNvdXJjZXNDb21iaW5hdGlvbnMYAyABKAsyKC5ibHVlYXBpLmFwaS5jb3Zlci5SZXNvdXJjZXNDb21iaW5hdGlvbnMSVgoMZGlzdHJpYnV0aW9uGAQgAygLMkAuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVTaGFyZWRSZXNvdXJjZXNSZXF1ZXN0LkRpc3RyaWJ1dGlvbkVudHJ5EhEKCWFsbG9jYXRlZBgFIAEoARITCgt1bmFsbG9jYXRlZBgGIAEoARITCgtkZXNjcmlwdGlvbhgHIAEoCRozChFEaXN0cmlidXRpb25FbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAE6AjgBImcKHVVwZGF0ZVNoYXJlZFJlc291cmNlc1Jlc3BvbnNlEkYKD3NoYXJlZFJlc291cmNlcxgBIAEoCzItLmJsdWVhcGkuYXBpLmNvdmVyLlNoYXJlZFJlc291cmNlc0NvbWJpbmF0aW9uIioKHERlbGV0ZVNoYXJlZFJlc291cmNlc1JlcXVlc3QSCgoCaWQYASABKAkiKwodRGVsZXRlU2hhcmVkUmVzb3VyY2VzUmVzcG9uc2USCgoCaWQYASABKAkiVwoWTGlzdFVuaXRNZXRyaWNzUmVxdWVzdBIZChFhZ2dyZWdhdGlvbk1ldGhvZBgBIAEoCRISCgpkYXRhU291cmNlGAIgASgJEg4KBnN0YXR1cxgDIAEoCSJNChdMaXN0VW5pdE1ldHJpY3NSZXNwb25zZRIyCgt1bml0TWV0cmljcxgBIAMoCzIdLmJsdWVhcGkuYXBpLmNvdmVyLlVuaXRNZXRyaWMiuQEKF0NyZWF0ZVVuaXRNZXRyaWNSZXF1ZXN0EhIKCm1ldHJpY05hbWUYASABKAkSGQoRYWdncmVnYXRpb25NZXRob2QYAiABKAkSEgoKZGF0YVNvdXJjZRgDIAEoCRITCgtkZXNjcmlwdGlvbhgEIAEoCRITCgtjb3N0Z3JvdXBJZBgFIAMoCRIxCgpzb3VyY2VJbmZvGAYgASgLMh0uYmx1ZWFwaS5hcGkuY292ZXIuU291cmNlSW5mbyJNChhDcmVhdGVVbml0TWV0cmljUmVzcG9uc2USMQoKdW5pdE1ldHJpYxgBIAEoCzIdLmJsdWVhcGkuYXBpLmNvdmVyLlVuaXRNZXRyaWMiIgoUR2V0VW5pdE1ldHJpY1JlcXVlc3QSCgoCaWQYASABKAkiSgoVR2V0VW5pdE1ldHJpY1Jlc3BvbnNlEjEKCnVuaXRNZXRyaWMYASABKAsyHS5ibHVlYXBpLmFwaS5jb3Zlci5Vbml0TWV0cmljIsUBChdVcGRhdGVVbml0TWV0cmljUmVxdWVzdBIKCgJpZBgBIAEoCRISCgptZXRyaWNOYW1lGAIgASgJEhkKEWFnZ3JlZ2F0aW9uTWV0aG9kGAMgASgJEhIKCmRhdGFTb3VyY2UYBCABKAkSEwoLZGVzY3JpcHRpb24YBSABKAkSEwoLY29zdGdyb3VwSWQYBiADKAkSMQoKc291cmNlSW5mbxgHIAEoCzIdLmJsdWVhcGkuYXBpLmNvdmVyLlNvdXJjZUluZm8iTQoYVXBkYXRlVW5pdE1ldHJpY1Jlc3BvbnNlEjEKCnVuaXRNZXRyaWMYASABKAsyHS5ibHVlYXBpLmFwaS5jb3Zlci5Vbml0TWV0cmljIiUKF0RlbGV0ZVVuaXRNZXRyaWNSZXF1ZXN0EgoKAmlkGAEgASgJIiYKGERlbGV0ZVVuaXRNZXRyaWNSZXNwb25zZRIKCgJpZBgBIAEoCSJmChlQcmV2aWV3R29vZ2xlU2hlZXRSZXF1ZXN0EhUKDWdvb2dsZVNoZWV0SWQYASABKAkSEAoIc2hlZXRVcmwYAiABKAkSEQoJc2hlZXROYW1lGAMgASgJEg0KBXJhbmdlGAQgASgJIlkKGlByZXZpZXdHb29nbGVTaGVldFJlc3BvbnNlEg4KBmhlYWRlchgBIAMoCRIrCgdyb3dEYXRhGAIgAygLMhouYmx1ZWFwaS5hcGkuY292ZXIuUm93RGF0YSIzCh9Db25maXJtR29vZ2xlU2hlZXRBY2Nlc3NSZXF1ZXN0EhAKCHNoZWV0VXJsGAEgASgJIk0KIENvbmZpcm1Hb29nbGVTaGVldEFjY2Vzc1Jlc3BvbnNlEhUKDWdvb2dsZVNoZWV0SWQYASABKAkSEgoKc2hlZXROYW1lcxgCIAMoCSJ2ChxHZXRDbG91ZHdhdGNoTWV0YWRhdGFSZXF1ZXN0EhEKCWFjY291bnRJZBgBIAEoCRIOCgZyZWdpb24YAiABKAkSDAoEdHlwZRgDIAEoCRIRCgluYW1lc3BhY2UYBCABKAkSEgoKbWV0cmljTmFtZRgFIAEoCSK+AQodR2V0Q2xvdWR3YXRjaE1ldGFkYXRhUmVzcG9uc2USEgoKbmFtZXNwYWNlcxgBIAMoCRIPCgdtZXRyaWNzGAIgAygJEk0KCmRpbWVuc2lvbnMYAyADKAsyOS5ibHVlYXBpLmNvdmVyLnYxLkdldENsb3Vkd2F0Y2hNZXRhZGF0YVJlc3BvbnNlLkRpbWVuc2lvbhopCglEaW1lbnNpb24SDAoEbmFtZRgBIAEoCRIOCgZ2YWx1ZXMYAiADKAkigQIKFkdldERpc2NvdW50UGxhblJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg0KBW9yZ0lkGAIgASgJEhgKEHJlZHVjdGlvbkRpc3BsYXkYAyABKAkSFgoOaW5jbHVkZURldGFpbHMYBCABKAgSEAoIZnJvbURhdGUYBSABKAkSDgoGdG9EYXRlGAYgASgJEg8KB3BheWVySWQYByABKAkSGQoRYmlsbGluZ0ludGVybmFsSWQYCCABKAkSDwoHZ3JvdXBJZBgJIAEoCRITCgtjb3N0R3JvdXBJZBgKIAEoCRIQCghhY2NvdW50cxgLIAMoCRIQCghzZXJ2aWNlcxgMIAMoCSJnChdHZXREaXNjb3VudFBsYW5SZXNwb25zZRINCgVvcmdJZBgBIAEoCRI9ChBhd3NEaXNjb3VudFBsYW5zGAIgASgLMiMuYmx1ZWFwaS5hcGkuY292ZXIuQXdzRGlzY291bnRQbGFucyJzChxMaXN0Tm9ucGVyZm9ybWluZ1JhdGVSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRITCgtjb3N0R3JvdXBJZBgCIAEoCRIQCghmcm9tRGF0ZRgDIAEoCRIOCgZ0b0RhdGUYBCABKAkSDAoEdHlwZRgFIAEoCSLJAQodTGlzdE5vbnBlcmZvcm1pbmdSYXRlUmVzcG9uc2USVAoNbm9ucGVyZm9ybWluZxgBIAMoCzI9LmJsdWVhcGkuY292ZXIudjEuTGlzdE5vbnBlcmZvcm1pbmdSYXRlUmVzcG9uc2UuTm9ucGVyZm9ybWluZxpSCg1Ob25wZXJmb3JtaW5nEgwKBHR5cGUYASABKAkSDwoHYWNjb3VudBgCIAEoCRITCgt1dGlsaXphdGlvbhgDIAEoARINCgV3YXN0ZRgEIAEoASJ0ChxMaXN0VW50YWdnZWRSZXNvdXJjZXNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRITCgtjb3N0R3JvdXBJZBgCIAEoCRIQCghmcm9tRGF0ZRgDIAEoCRIOCgZ0b0RhdGUYBCABKAkSDQoFbGltaXQYBSABKAMi+QEKHUxpc3RVbnRhZ2dlZFJlc291cmNlc1Jlc3BvbnNlElwKEXVudGFnZ2VkUmVzb3VyY2VzGAEgAygLMkEuYmx1ZWFwaS5jb3Zlci52MS5MaXN0VW50YWdnZWRSZXNvdXJjZXNSZXNwb25zZS5VbnRhZ2dlZFJlc291cmNlcxp6ChFVbnRhZ2dlZFJlc291cmNlcxIQCghyZXNvdXJjZRgBIAEoCRIPCgdzZXJ2aWNlGAIgASgJEhEKCWFjY291bnRJZBgDIAEoCRIRCgljb3N0R3JvdXAYBCABKAkSDAoEY29zdBgFIAEoARIOCgZ2ZW5kb3IYBiABKAkqPwoGU3RhdHVzEgsKB1BFTkRJTkcQABIPCgtJTl9QUk9HUkVTUxABEgsKB1NVQ0NFU1MQAhIKCgZGQUlMRUQQAzLH5AEKBUNvdmVyEncKCk9uYm9hcmRPcmcSIy5ibHVlYXBpLmNvdmVyLnYxLk9uYm9hcmRPcmdSZXF1ZXN0GiQuYmx1ZWFwaS5jb3Zlci52MS5PbmJvYXJkT3JnUmVzcG9uc2UiHoLT5JMCGDoBKiITL3YxL21lbWJlcnMvb25ib2FyZBJ/CgxJbnZpdGVNZW1iZXISJS5ibHVlYXBpLmNvdmVyLnYxLkludml0ZU1lbWJlclJlcXVlc3QaJi5ibHVlYXBpLmNvdmVyLnYxLkludml0ZU1lbWJlclJlc3BvbnNlIiCIAgGC0+STAhc6ASoiEi92MS9tZW1iZXJzL2ludml0ZRJ+CgxBY3RpdmF0ZVVzZXISJS5ibHVlYXBpLmNvdmVyLnYxLkFjdGl2YXRlVXNlclJlcXVlc3QaJi5ibHVlYXBpLmNvdmVyLnYxLkFjdGl2YXRlVXNlclJlc3BvbnNlIh+C0+STAhk6ASoiFC92MS9tZW1iZXJzL2FjdGl2YXRlEngKDENyZWF0ZU1lbWJlchIlLmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlTWVtYmVyUmVxdWVzdBomLmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlTWVtYmVyUmVzcG9uc2UiGYgCAYLT5JMCEDoBKiILL3YxL21lbWJlcnMSbwoKR2V0TWVtYmVycxIjLmJsdWVhcGkuY292ZXIudjEuR2V0TWVtYmVyc1JlcXVlc3QaJC5ibHVlYXBpLmNvdmVyLnYxLkdldE1lbWJlcnNSZXNwb25zZSIWiAIBgtPkkwINEgsvdjEvbWVtYmVycxKKAQoQR2V0TWVtYmVyRGV0YWlscxIpLmJsdWVhcGkuY292ZXIudjEuR2V0TWVtYmVyRGV0YWlsc1JlcXVlc3QaKi5ibHVlYXBpLmNvdmVyLnYxLkdldE1lbWJlckRldGFpbHNSZXNwb25zZSIfiAIBgtPkkwIWEhQvdjEvbWVtYmVycy97dXNlcklkfRKaAQoSR2V0TWVtYmVyQ29zdEdyb3VwEisuYmx1ZWFwaS5jb3Zlci52MS5HZXRNZW1iZXJDb3N0R3JvdXBSZXF1ZXN0GiwuYmx1ZWFwaS5jb3Zlci52MS5HZXRNZW1iZXJDb3N0R3JvdXBSZXNwb25zZSIpiAIBgtPkkwIgEh4vdjEvbWVtYmVycy97dXNlcklkfS9jb3N0Z3JvdXASpwEKFlVwZGF0ZU1lbWJlclBlcm1pc3Npb24SLy5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZU1lbWJlclBlcm1pc3Npb25SZXF1ZXN0GjAuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVNZW1iZXJQZXJtaXNzaW9uUmVzcG9uc2UiKogCAYLT5JMCIToBKhocL3YxL21lbWJlcnMve3VzZXJJZH0vaXNhZG1pbhJzCg5HZXRVc2VyRGV0YWlscxInLmJsdWVhcGkuY292ZXIudjEuR2V0VXNlckRldGFpbHNSZXF1ZXN0GiguYmx1ZWFwaS5jb3Zlci52MS5HZXRVc2VyRGV0YWlsc1Jlc3BvbnNlIg6C0+STAggSBi92MS9tZRKDAQoQVXBkYXRlVXNlckF2YXRhchIpLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVXNlckF2YXRhclJlcXVlc3QaKi5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVzZXJBdmF0YXJSZXNwb25zZSIYgtPkkwISOgEqGg0vdjEvbWUvYXZhdGFyEnsKDlVwZGF0ZVVzZXJJY29uEicuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVVc2VySWNvblJlcXVlc3QaKC5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVzZXJJY29uUmVzcG9uc2UiFoLT5JMCEDoBKhoLL3YxL21lL2ljb24SkwEKFFVwZGF0ZVVzZXJDb2xvclRoZW1lEi0uYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVVc2VyQ29sb3JUaGVtZVJlcXVlc3QaLi5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVzZXJDb2xvclRoZW1lUmVzcG9uc2UiHILT5JMCFjoBKhoRL3YxL21lL2NvbG9ydGhlbWUSewoOVXBkYXRlVXNlck5hbWUSJy5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVzZXJOYW1lUmVxdWVzdBooLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVXNlck5hbWVSZXNwb25zZSIWgtPkkwIQOgEqGgsvdjEvbWUvbmFtZRJ/Cg9VcGRhdGVVc2VyRW1haWwSKC5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVzZXJFbWFpbFJlcXVlc3QaKS5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVzZXJFbWFpbFJlc3BvbnNlIheC0+STAhE6ASoaDC92MS9tZS9lbWFpbBKLAQoSVXBkYXRlVXNlck1haW5WaWV3EisuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVVc2VyTWFpblZpZXdSZXF1ZXN0GiwuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVVc2VyTWFpblZpZXdSZXNwb25zZSIagtPkkwIUOgEqGg8vdjEvbWUvbWFpbnZpZXcSiAEKEVJlc2V0VXNlclBhc3N3b3JkEiouYmx1ZWFwaS5jb3Zlci52MS5SZXNldFVzZXJQYXNzd29yZFJlcXVlc3QaKy5ibHVlYXBpLmNvdmVyLnYxLlJlc2V0VXNlclBhc3N3b3JkUmVzcG9uc2UiGoLT5JMCFDoBKiIPL3YxL21lL3Bhc3N3b3JkEoMBChBVcGRhdGVVc2VyTG9jYWxlEikuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVVc2VyTG9jYWxlUmVxdWVzdBoqLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVXNlckxvY2FsZVJlc3BvbnNlIhiC0+STAhI6ASoaDS92MS9tZS9sb2NhbGUSiwEKElVwZGF0ZVVzZXJBcHBUaGVtZRIrLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVXNlckFwcFRoZW1lUmVxdWVzdBosLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVXNlckFwcFRoZW1lUmVzcG9uc2UiGoLT5JMCFDoBKhoPL3YxL21lL2FwcHRoZW1lEosBChJVcGRhdGVVc2VyVGltZXpvbmUSKy5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVzZXJUaW1lem9uZVJlcXVlc3QaLC5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVzZXJUaW1lem9uZVJlc3BvbnNlIhqC0+STAhQ6ASoaDy92MS9tZS90aW1lem9uZRKTAQoUVXBkYXRlVXNlckF0dHJpYnV0ZXMSLS5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVzZXJBdHRyaWJ1dGVzUmVxdWVzdBouLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVXNlckF0dHJpYnV0ZXNSZXNwb25zZSIcgtPkkwIWOgEqGhEvdjEvbWUvYXR0cmlidXRlcxJ+CgxEZWxldGVNZW1iZXISJS5ibHVlYXBpLmNvdmVyLnYxLkRlbGV0ZU1lbWJlclJlcXVlc3QaJi5ibHVlYXBpLmNvdmVyLnYxLkRlbGV0ZU1lbWJlclJlc3BvbnNlIh+IAgGC0+STAhYqFC92MS9tZW1iZXJzL3t1c2VySWR9EoYBCg1SZXNldFBhc3N3b3JkEiYuYmx1ZWFwaS5jb3Zlci52MS5SZXNldFBhc3N3b3JkUmVxdWVzdBonLmJsdWVhcGkuY292ZXIudjEuUmVzZXRQYXNzd29yZFJlc3BvbnNlIiSC0+STAh46ASoiGS92MS9tZW1iZXJzL3Jlc2V0cGFzc3dvcmQSbQoKQ3JlYXRlVmlldxIjLmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlVmlld1JlcXVlc3QaJC5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZVZpZXdSZXNwb25zZSIUgtPkkwIOOgEqIgkvdjEvdmlld3MSZAoIR2V0Vmlld3MSIS5ibHVlYXBpLmNvdmVyLnYxLkdldFZpZXdzUmVxdWVzdBoiLmJsdWVhcGkuY292ZXIudjEuR2V0Vmlld3NSZXNwb25zZSIRgtPkkwILEgkvdjEvdmlld3MSfwoOR2V0Q3VycmVudFZpZXcSJy5ibHVlYXBpLmNvdmVyLnYxLkdldEN1cnJlbnRWaWV3UmVxdWVzdBooLmJsdWVhcGkuY292ZXIudjEuR2V0Q3VycmVudFZpZXdSZXNwb25zZSIagtPkkwIUEhIvdjEvdmlld3Mve3ZpZXdJZH0ShgEKEEdldEZhdm9yaXRlVmlld3MSKS5ibHVlYXBpLmNvdmVyLnYxLkdldEZhdm9yaXRlVmlld3NSZXF1ZXN0GiouYmx1ZWFwaS5jb3Zlci52MS5HZXRGYXZvcml0ZVZpZXdzUmVzcG9uc2UiG4LT5JMCFRITL3YxL3ZpZXdzL2Zhdm9yaXRlcxJ4CgtQdWJsaXNoVmlldxIkLmJsdWVhcGkuY292ZXIudjEuUHVibGlzaFZpZXdSZXF1ZXN0GiUuYmx1ZWFwaS5jb3Zlci52MS5QdWJsaXNoVmlld1Jlc3BvbnNlIhyC0+STAhY6ASoiES92MS92aWV3cy9wdWJsaXNoEn0KC0FkZEZhdm9yaXRlEiQuYmx1ZWFwaS5jb3Zlci52MS5BZGRGYXZvcml0ZVJlcXVlc3QaJS5ibHVlYXBpLmNvdmVyLnYxLkFkZEZhdm9yaXRlUmVzcG9uc2UiIYLT5JMCGzoBKhoWL3YxL3ZpZXdzL2Zhdm9yaXRlL2FkZBKJAQoOUmVtb3ZlRmF2b3JpdGUSJy5ibHVlYXBpLmNvdmVyLnYxLlJlbW92ZUZhdm9yaXRlUmVxdWVzdBooLmJsdWVhcGkuY292ZXIudjEuUmVtb3ZlRmF2b3JpdGVSZXNwb25zZSIkgtPkkwIeOgEqGhkvdjEvdmlld3MvZmF2b3JpdGUvcmVtb3ZlEnYKClVwZGF0ZVZpZXcSIy5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVZpZXdSZXF1ZXN0GiQuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVWaWV3UmVzcG9uc2UiHYLT5JMCFzoBKhoSL3YxL3ZpZXdzL3t2aWV3SWR9Eo8BChBVcGRhdGVWaWV3TGF5b3V0EikuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVWaWV3TGF5b3V0UmVxdWVzdBoqLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVmlld0xheW91dFJlc3BvbnNlIiSC0+STAh46ASoaGS92MS92aWV3cy9sYXlvdXQve3ZpZXdJZH0SmgEKEFVwZGF0ZVZpZXdXaWRnZXQSKS5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVZpZXdXaWRnZXRSZXF1ZXN0GiouYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVWaWV3V2lkZ2V0UmVzcG9uc2UiL4LT5JMCKToBKhokL3YxL3ZpZXdzL2xheW91dC97dmlld0lkfS97d2lkZ2V0SWR9Ep8BChRVcGRhdGVWaWV3Q29sb3JUaGVtZRItLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVmlld0NvbG9yVGhlbWVSZXF1ZXN0Gi4uYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVWaWV3Q29sb3JUaGVtZVJlc3BvbnNlIiiC0+STAiI6ASoaHS92MS92aWV3cy97dmlld0lkfS9jb2xvcnRoZW1lEpcBChJVcGRhdGVWaWV3Q3VycmVuY3kSKy5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVZpZXdDdXJyZW5jeVJlcXVlc3QaLC5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVZpZXdDdXJyZW5jeVJlc3BvbnNlIiaC0+STAiA6ASoaGy92MS92aWV3cy97dmlld0lkfS9jdXJyZW5jeRKcAQoUU2V0T3JnVXBkYXRlQ3VycmVuY3kSLS5ibHVlYXBpLmNvdmVyLnYxLlNldE9yZ1VwZGF0ZUN1cnJlbmN5UmVxdWVzdBouLmJsdWVhcGkuY292ZXIudjEuU2V0T3JnVXBkYXRlQ3VycmVuY3lSZXNwb25zZSIlgtPkkwIfOgEqIhovdjEvb3JnYW5pemF0aW9ucy9jdXJyZW5jeRKZAQoUR2V0T3JnVXBkYXRlQ3VycmVuY3kSLS5ibHVlYXBpLmNvdmVyLnYxLkdldE9yZ1VwZGF0ZUN1cnJlbmN5UmVxdWVzdBouLmJsdWVhcGkuY292ZXIudjEuR2V0T3JnVXBkYXRlQ3VycmVuY3lSZXNwb25zZSIigtPkkwIcEhovdjEvb3JnYW5pemF0aW9ucy9jdXJyZW5jeRKNAQoRTGlzdEV4Y2hhbmdlUmF0ZXMSKi5ibHVlYXBpLmNvdmVyLnYxLkxpc3RFeGNoYW5nZVJhdGVzUmVxdWVzdBorLmJsdWVhcGkuY292ZXIudjEuTGlzdEV4Y2hhbmdlUmF0ZXNSZXNwb25zZSIfgtPkkwIZEhcvdjEvb3JnYW5pemF0aW9ucy9yYXRlcxJzCgpEZWxldGVWaWV3EiMuYmx1ZWFwaS5jb3Zlci52MS5EZWxldGVWaWV3UmVxdWVzdBokLmJsdWVhcGkuY292ZXIudjEuRGVsZXRlVmlld1Jlc3BvbnNlIhqC0+STAhQqEi92MS92aWV3cy97dmlld0lkfRKfAQoTVXBkYXRlU2lkZU1lbnVTdGF0ZRIsLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlU2lkZU1lbnVTdGF0ZVJlcXVlc3QaLS5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVNpZGVNZW51U3RhdGVSZXNwb25zZSIrgtPkkwIlOgEqGiAvdjEvdmlld3Mve3ZpZXdJZH0vc2lkZW1lbnVzdGF0ZRKiAQoTQWRkU2lkZU1lbnVGYXZvcml0ZRIsLmJsdWVhcGkuY292ZXIudjEuQWRkU2lkZU1lbnVGYXZvcml0ZVJlcXVlc3QaLS5ibHVlYXBpLmNvdmVyLnYxLkFkZFNpZGVNZW51RmF2b3JpdGVSZXNwb25zZSIugtPkkwIoOgEqIiMvdjEvdmlld3Mve3ZpZXdJZH0vc2lkZW1lbnVmYXZvcml0ZRKtAQoWUmVtb3ZlU2lkZU1lbnVGYXZvcml0ZRIvLmJsdWVhcGkuY292ZXIudjEuUmVtb3ZlU2lkZU1lbnVGYXZvcml0ZVJlcXVlc3QaMC5ibHVlYXBpLmNvdmVyLnYxLlJlbW92ZVNpZGVNZW51RmF2b3JpdGVSZXNwb25zZSIwgtPkkwIqOgEqIiUvdjEvdmlld3Mve3ZpZXdJZH0vc2lkZW1lbnV1bmZhdm9yaXRlEoEBCg9DcmVhdGVDb3N0R3JvdXASKC5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZUNvc3RHcm91cFJlcXVlc3QaKS5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZUNvc3RHcm91cFJlc3BvbnNlIhmC0+STAhM6ASoiDi92MS9jb3N0Z3JvdXBzEngKDUdldENvc3RHcm91cHMSJi5ibHVlYXBpLmNvdmVyLnYxLkdldENvc3RHcm91cHNSZXF1ZXN0GicuYmx1ZWFwaS5jb3Zlci52MS5HZXRDb3N0R3JvdXBzUmVzcG9uc2UiFoLT5JMCEBIOL3YxL2Nvc3Rncm91cHMSeAoNR2V0Q2F0ZWdvcmllcxImLmJsdWVhcGkuY292ZXIudjEuR2V0Q2F0ZWdvcmllc1JlcXVlc3QaJy5ibHVlYXBpLmNvdmVyLnYxLkdldENhdGVnb3JpZXNSZXNwb25zZSIWgtPkkwIQEg4vdjEvY2F0ZWdvcmllcxKYAQoTR2V0Q29zdEdyb3VwRGV0YWlscxIsLmJsdWVhcGkuY292ZXIudjEuR2V0Q29zdEdyb3VwRGV0YWlsc1JlcXVlc3QaLS5ibHVlYXBpLmNvdmVyLnYxLkdldENvc3RHcm91cERldGFpbHNSZXNwb25zZSIkgtPkkwIeEhwvdjEvY29zdGdyb3Vwcy97Y29zdEdyb3VwSWR9EqABChNVcGRhdGVDb3N0R3JvdXBOYW1lEiwuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVDb3N0R3JvdXBOYW1lUmVxdWVzdBotLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQ29zdEdyb3VwTmFtZVJlc3BvbnNlIiyC0+STAiY6ASoaIS92MS9jb3N0Z3JvdXBzL3tjb3N0R3JvdXBJZH0vbmFtZRK8AQoaVXBkYXRlQ29zdEdyb3VwRGVzY3JpcHRpb24SMy5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZUNvc3RHcm91cERlc2NyaXB0aW9uUmVxdWVzdBo0LmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQ29zdEdyb3VwRGVzY3JpcHRpb25SZXNwb25zZSIzgtPkkwItOgEqGigvdjEvY29zdGdyb3Vwcy97Y29zdEdyb3VwSWR9L2Rlc2NyaXB0aW9uEqQBChRVcGRhdGVDb3N0R3JvdXBJbWFnZRItLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQ29zdEdyb3VwSW1hZ2VSZXF1ZXN0Gi4uYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVDb3N0R3JvdXBJbWFnZVJlc3BvbnNlIi2C0+STAic6ASoaIi92MS9jb3N0Z3JvdXBzL3tjb3N0R3JvdXBJZH0vaW1hZ2USoAEKE1VwZGF0ZUNvc3RHcm91cEljb24SLC5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZUNvc3RHcm91cEljb25SZXF1ZXN0Gi0uYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVDb3N0R3JvdXBJY29uUmVzcG9uc2UiLILT5JMCJjoBKhohL3YxL2Nvc3Rncm91cHMve2Nvc3RHcm91cElkfS9pY29uErgBChlVcGRhdGVDb3N0R3JvdXBDb2xvclRoZW1lEjIuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVDb3N0R3JvdXBDb2xvclRoZW1lUmVxdWVzdBozLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQ29zdEdyb3VwQ29sb3JUaGVtZVJlc3BvbnNlIjKC0+STAiw6ASoaJy92MS9jb3N0Z3JvdXBzL3tjb3N0R3JvdXBJZH0vY29sb3J0aGVtZRLAAQobVXBkYXRlQ29zdEdyb3VwQ29tYmluYXRpb25zEjQuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVDb3N0R3JvdXBDb21iaW5hdGlvbnNSZXF1ZXN0GjUuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVDb3N0R3JvdXBDb21iaW5hdGlvbnNSZXNwb25zZSI0gtPkkwIuOgEqGikvdjEvY29zdGdyb3Vwcy97Y29zdEdyb3VwSWR9L2NvbWJpbmF0aW9ucxK7AQocUmVzb2x2ZUNvc3RHcm91cENvbWJpbmF0aW9ucxI1LmJsdWVhcGkuY292ZXIudjEuUmVzb2x2ZUNvc3RHcm91cENvbWJpbmF0aW9uc1JlcXVlc3QaNi5ibHVlYXBpLmNvdmVyLnYxLlJlc29sdmVDb3N0R3JvdXBDb21iaW5hdGlvbnNSZXNwb25zZSIsgtPkkwImEiQvdjEvY29zdGdyb3Vwcy9yZXNvbHZlL3tjb3N0R3JvdXBJZH0SrAEKFUFzc2lnbkNvc3RHcm91cE1lbWJlchIuLmJsdWVhcGkuY292ZXIudjEuQXNzaWduQ29zdEdyb3VwTWVtYmVyUmVxdWVzdBovLmJsdWVhcGkuY292ZXIudjEuQXNzaWduQ29zdEdyb3VwTWVtYmVyUmVzcG9uc2UiMoLT5JMCLDoBKiInL3YxL2Nvc3Rncm91cHMve2Nvc3RHcm91cElkfS9tZW1iZXIvYWRkEq8BChVSZW1vdmVDb3N0R3JvdXBNZW1iZXISLi5ibHVlYXBpLmNvdmVyLnYxLlJlbW92ZUNvc3RHcm91cE1lbWJlclJlcXVlc3QaLy5ibHVlYXBpLmNvdmVyLnYxLlJlbW92ZUNvc3RHcm91cE1lbWJlclJlc3BvbnNlIjWC0+STAi86ASoiKi92MS9jb3N0Z3JvdXBzL3tjb3N0R3JvdXBJZH0vbWVtYmVyL3JlbW92ZRKMAQoPRGVsZXRlQ29zdEdyb3VwEiguYmx1ZWFwaS5jb3Zlci52MS5EZWxldGVDb3N0R3JvdXBSZXF1ZXN0GikuYmx1ZWFwaS5jb3Zlci52MS5EZWxldGVDb3N0R3JvdXBSZXNwb25zZSIkgtPkkwIeKhwvdjEvY29zdGdyb3Vwcy97Y29zdEdyb3VwSWR9EqYBChtHZXRBY2NvdW50QWNjZXNzVGVtcGxhdGVVcmwSNC5ibHVlYXBpLmNvdmVyLnYxLkdldEFjY291bnRBY2Nlc3NUZW1wbGF0ZVVybFJlcXVlc3QaNS5ibHVlYXBpLmNvdmVyLnYxLkdldEFjY291bnRBY2Nlc3NUZW1wbGF0ZVVybFJlc3BvbnNlIhqC0+STAhQSEi92MS9hd3MvYWNjdGFjY2VzcxKKAQoRTGlzdEFjY291bnRBY2Nlc3MSKi5ibHVlYXBpLmNvdmVyLnYxLkxpc3RBY2NvdW50QWNjZXNzUmVxdWVzdBofLmJsdWVhcGkuY292ZXIudjEuQWNjb3VudEFjY2VzcyImgtPkkwIgOgEqIhsvdjEvYXdzL2FjY3RhY2Nlc3MvYWxsOnJlYWQwARKDAQoQR2V0QWNjb3VudEFjY2VzcxIpLmJsdWVhcGkuY292ZXIudjEuR2V0QWNjb3VudEFjY2Vzc1JlcXVlc3QaHy5ibHVlYXBpLmNvdmVyLnYxLkFjY291bnRBY2Nlc3MiI4LT5JMCHRIbL3YxL2F3cy9hY2N0YWNjZXNzL3t0YXJnZXR9EnwKDUdldERhdGFBY2Nlc3MSLy5ibHVlYXBpLmNvdmVyLnYxLkdldEFuZERlbGV0ZURhdGFBY2Nlc3NSZXF1ZXN0GhwuYmx1ZWFwaS5jb3Zlci52MS5EYXRhQWNjZXNzIhyC0+STAhYSFC92MS9hY2NvdW50L3t0YXJnZXR9EnkKEERlbGV0ZURhdGFBY2Nlc3MSLy5ibHVlYXBpLmNvdmVyLnYxLkdldEFuZERlbGV0ZURhdGFBY2Nlc3NSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IhyC0+STAhYqFC92MS9hY2NvdW50L3t0YXJnZXR9EoMBChNDcmVhdGVBY2NvdW50QWNjZXNzEiwuYmx1ZWFwaS5jb3Zlci52MS5DcmVhdGVBY2NvdW50QWNjZXNzUmVxdWVzdBofLmJsdWVhcGkuY292ZXIudjEuQWNjb3VudEFjY2VzcyIdgtPkkwIXOgEqIhIvdjEvYXdzL2FjY3RhY2Nlc3MSnAEKG0NyZWF0ZUFjY291bnRBY2Nlc3NTdGFja3NldBI0LmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlQWNjb3VudEFjY2Vzc1N0YWNrc2V0UmVxdWVzdBofLmJsdWVhcGkuY292ZXIudjEuQWNjb3VudEFjY2VzcyImgtPkkwIgOgEqIhsvdjEvYXdzL2FjY3RhY2Nlc3Mvc3RhY2tzZXQSigEKFkNyZWF0ZUFjY291bnRBY2Nlc3NDdXISLC5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZUFjY291bnRBY2Nlc3NSZXF1ZXN0Gh8uYmx1ZWFwaS5jb3Zlci52MS5BY2NvdW50QWNjZXNzIiGC0+STAhs6ASoiFi92MS9hd3MvYWNjdGFjY2Vzcy9jdXISewoTVXBkYXRlQWNjb3VudEFjY2VzcxIsLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQWNjb3VudEFjY2Vzc1JlcXVlc3QaES5wcm90b3MuT3BlcmF0aW9uIiOC0+STAh0aGy92MS9hd3MvYWNjdGFjY2Vzcy97dGFyZ2V0fRKTAQoTRGVsZXRlQWNjb3VudEFjY2VzcxIsLmJsdWVhcGkuY292ZXIudjEuRGVsZXRlQWNjb3VudEFjY2Vzc1JlcXVlc3QaLS5ibHVlYXBpLmNvdmVyLnYxLkRlbGV0ZUFjY291bnRBY2Nlc3NSZXNwb25zZSIfgtPkkwIZKhcvdjEvYWNjdGFjY2Vzcy97dGFyZ2V0fRJ0Cg9SZWdpc3RlckFjY291bnQSKC5ibHVlYXBpLmNvdmVyLnYxLlJlZ2lzdGVyQWNjb3VudFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiH4LT5JMCGToBKiIUL3YxL3t2ZW5kb3J9L2FjY291bnQScQoSUmVnaXN0ZXJEYXRhQWNjZXNzEisuYmx1ZWFwaS5jb3Zlci52MS5SZWdpc3RlckRhdGFBY2Nlc3NSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IhaC0+STAhA6ASoiCy92MS9hY2NvdW50EnAKEUFkZEJpbGxpbmdBY2NvdW50EicuYmx1ZWFwaS5jb3Zlci52MS5CaWxsaW5nQWNjb3VudFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiGoLT5JMCFDoBKiIPL3YxL2JpbGxpbmdhY2N0EncKDkxpc3REYXRhQWNjZXNzEicuYmx1ZWFwaS5jb3Zlci52MS5MaXN0RGF0YUFjY2Vzc1JlcXVlc3QaHC5ibHVlYXBpLmNvdmVyLnYxLkRhdGFBY2Nlc3MiHILT5JMCFiIUL3YxL2FjY291bnQvYWxsOnJlYWQwARKoAQoYTGlzdFVucmVnaXN0ZXJlZEFjY291bnRzEjEuYmx1ZWFwaS5jb3Zlci52MS5MaXN0VW5yZWdpc3RlcmVkQWNjb3VudHNSZXF1ZXN0GjIuYmx1ZWFwaS5jb3Zlci52MS5MaXN0VW5yZWdpc3RlcmVkQWNjb3VudHNSZXNwb25zZSIlgtPkkwIfIh0vdjEvYWNjb3VudC91bnJlZ2lzdGVyZWQ6cmVhZBJ2ChBVcGRhdGVEYXRhQWNjZXNzEikuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVEYXRhQWNjZXNzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIfgtPkkwIZOgEqGhQvdjEvYWNjb3VudC97dGFyZ2V0fRJrCgpMaXN0QXNzZXRzEiMuYmx1ZWFwaS5jb3Zlci52MS5MaXN0QXNzZXRzUmVxdWVzdBoaLmJsdWVhcGkuY292ZXIudjEuUmVzb3VyY2UiGoLT5JMCFDoBKiIPL3YxL2Fzc2V0czpyZWFkMAESkwEKEEdldEFzc2V0c1N1bW1hcnkSKS5ibHVlYXBpLmNvdmVyLnYxLkdldEFzc2V0c1N1bW1hcnlSZXF1ZXN0GiouYmx1ZWFwaS5jb3Zlci52MS5HZXRBc3NldHNTdW1tYXJ5UmVzcG9uc2UiKILT5JMCIhIgL3YxL2Fzc2V0cy9zdW1tYXJ5L3tjb3N0R3JvdXBJZH0ScgoMR2V0Q29zdFVzYWdlEiUuYmx1ZWFwaS5jb3Zlci52MS5HZXRDb3N0VXNhZ2VSZXF1ZXN0GhouYmx1ZWFwaS5jb3Zlci52MS5Db3N0SXRlbSIdgtPkkwIXOgEqIhIvdjEvY29zdHVzYWdlOnJlYWQwARLCAQocR2V0UmlnaHRTaXppbmdSZWNvbW1lbmRhdGlvbhI1LmJsdWVhcGkuY292ZXIudjEuR2V0UmlnaHRTaXppbmdSZWNvbW1lbmRhdGlvblJlcXVlc3QaNi5ibHVlYXBpLmNvdmVyLnYxLkdldFJpZ2h0U2l6aW5nUmVjb21tZW5kYXRpb25SZXNwb25zZSIzgtPkkwItEisvdjEvcmlnaHRzaXppbmdyZWNvbW1lbmRhdGlvbi97Y29zdEdyb3VwSWR9EpgBChJNb2RpZnlSZXNvdXJjZVR5cGUSKy5ibHVlYXBpLmNvdmVyLnYxLk1vZGlmeVJlc291cmNlVHlwZVJlcXVlc3QaLC5ibHVlYXBpLmNvdmVyLnYxLk1vZGlmeVJlc291cmNlVHlwZVJlc3BvbnNlIieC0+STAiE6ASoiHC92MS97dmVuZG9yfS9yZXNvdXJjZS9tb2RpZnkSmAEKEVRlcm1pbmF0ZVJlc291cmNlEiouYmx1ZWFwaS5jb3Zlci52MS5UZXJtaW5hdGVSZXNvdXJjZVJlcXVlc3QaKy5ibHVlYXBpLmNvdmVyLnYxLlRlcm1pbmF0ZVJlc291cmNlUmVzcG9uc2UiKoLT5JMCJDoBKiIfL3YxL3t2ZW5kb3J9L3Jlc291cmNlL3Rlcm1pbmF0ZRKNAQoQVXBsb2FkQ2hhcmdlQ29kZRIpLmJsdWVhcGkuY292ZXIudjEuVXBsb2FkQ2hhcmdlQ29kZVJlcXVlc3QaKi5ibHVlYXBpLmNvdmVyLnYxLlVwbG9hZENoYXJnZUNvZGVSZXNwb25zZSIggtPkkwIaOgEqIhUvdjEvY2hhcmdlY29kZS91cGxvYWQoARJ6CgtBc3NpZ25QYXllchIkLmJsdWVhcGkuY292ZXIudjEuQXNzaWduUGF5ZXJSZXF1ZXN0GiUuYmx1ZWFwaS5jb3Zlci52MS5Bc3NpZ25QYXllclJlc3BvbnNlIh6C0+STAhg6ASoiEy92MS97dmVuZG9yfS9wYXllcnMScQoJR2V0UGF5ZXJzEiIuYmx1ZWFwaS5jb3Zlci52MS5HZXRQYXllcnNSZXF1ZXN0GiMuYmx1ZWFwaS5jb3Zlci52MS5HZXRQYXllcnNSZXNwb25zZSIbgtPkkwIVEhMvdjEve3ZlbmRvcn0vcGF5ZXJzEocBCgtHZXRBY2NvdW50cxIkLmJsdWVhcGkuY292ZXIudjEuR2V0QWNjb3VudHNSZXF1ZXN0GiUuYmx1ZWFwaS5jb3Zlci52MS5HZXRBY2NvdW50c1Jlc3BvbnNlIiuC0+STAiUSIy92MS97dmVuZG9yfS9hY2NvdW50cy97Y29zdEdyb3VwSWR9EocBCgtHZXRTZXJ2aWNlcxIkLmJsdWVhcGkuY292ZXIudjEuR2V0U2VydmljZXNSZXF1ZXN0GiUuYmx1ZWFwaS5jb3Zlci52MS5HZXRTZXJ2aWNlc1Jlc3BvbnNlIiuC0+STAiUSIy92MS97dmVuZG9yfS9zZXJ2aWNlcy97Y29zdEdyb3VwSWR9EoMBCgpHZXRSZWdpb25zEiMuYmx1ZWFwaS5jb3Zlci52MS5HZXRSZWdpb25zUmVxdWVzdBokLmJsdWVhcGkuY292ZXIudjEuR2V0UmVnaW9uc1Jlc3BvbnNlIiqC0+STAiQSIi92MS97dmVuZG9yfS9yZWdpb25zL3tjb3N0R3JvdXBJZH0SdwoHR2V0VGFncxIgLmJsdWVhcGkuY292ZXIudjEuR2V0VGFnc1JlcXVlc3QaIS5ibHVlYXBpLmNvdmVyLnYxLkdldFRhZ3NSZXNwb25zZSIngtPkkwIhEh8vdjEve3ZlbmRvcn0vdGFncy97Y29zdEdyb3VwSWR9EncKCExpc3RGZWVzEiEuYmx1ZWFwaS5jb3Zlci52MS5MaXN0RmVlc1JlcXVlc3QaHC5ibHVlYXBpLmNvdmVyLnYxLkZlZURldGFpbHMiKILT5JMCIjoBKiIdL3YxL2FsbG9jYXRpb25zL2ZlZXMvYWxsOnJlYWQwARJ6CgpSZXN0b3JlRmVlEiMuYmx1ZWFwaS5jb3Zlci52MS5SZXN0b3JlRmVlUmVxdWVzdBocLmJsdWVhcGkuY292ZXIudjEuRmVlRGV0YWlscyIngtPkkwIhOgEqIhwvdjEvYWxsb2NhdGlvbnMvZmVlcy9yZXN0b3JlMAESfgoPR2V0Q29zdEdyb3VwRmVlEiguYmx1ZWFwaS5jb3Zlci52MS5HZXRDb3N0R3JvdXBGZWVSZXF1ZXN0GhkuYmx1ZWFwaS5jb3Zlci52MS5GZWVJdGVtIiSC0+STAh46ASoiGS92MS9hbGxvY2F0aW9ucy9mZWVzOnJlYWQwARJ7Cg5MaXN0QWxsb2NhdG9ycxInLmJsdWVhcGkuY292ZXIudjEuTGlzdEFsbG9jYXRvcnNSZXF1ZXN0GiYuYmx1ZWFwaS5jb3Zlci52MS5Db3N0QWxsb2NhdG9yRGV0YWlscyIWgtPkkwIQEg4vdjEvYWxsb2NhdG9yczABEn4KD0NyZWF0ZUFsbG9jYXRvchIoLmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlQWxsb2NhdG9yUmVxdWVzdBomLmJsdWVhcGkuY292ZXIudjEuQ29zdEFsbG9jYXRvckRldGFpbHMiGYLT5JMCEzoBKiIOL3YxL2FsbG9jYXRvcnMSoAEKF0dldEFsbG9jYXRpb25BdHRyaWJ1dGVzEjAuYmx1ZWFwaS5jb3Zlci52MS5HZXRBbGxvY2F0aW9uQXR0cmlidXRlc1JlcXVlc3QaMS5ibHVlYXBpLmNvdmVyLnYxLkdldEFsbG9jYXRpb25BdHRyaWJ1dGVzUmVzcG9uc2UiIILT5JMCGhIYL3YxL2FsbG9jYXRvcnMvYXR0cmlidXRlEpQBChRHZXRBbGxvY2F0aW9uU291cmNlcxItLmJsdWVhcGkuY292ZXIudjEuR2V0QWxsb2NhdGlvblNvdXJjZXNSZXF1ZXN0Gi4uYmx1ZWFwaS5jb3Zlci52MS5HZXRBbGxvY2F0aW9uU291cmNlc1Jlc3BvbnNlIh2C0+STAhcSFS92MS9hbGxvY2F0b3JzL3NvdXJjZRKBAQoPVXBkYXRlQWxsb2NhdG9yEiYuYmx1ZWFwaS5jb3Zlci52MS5Db3N0QWxsb2NhdG9yUmVxdWVzdBomLmJsdWVhcGkuY292ZXIudjEuQ29zdEFsbG9jYXRvckRldGFpbHMiHoLT5JMCGDoBKhoTL3YxL2FsbG9jYXRvcnMve2lkfRJwCg9EZWxldGVBbGxvY2F0b3ISKC5ibHVlYXBpLmNvdmVyLnYxLkRlbGV0ZUFsbG9jYXRvclJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiG4LT5JMCFSoTL3YxL2FsbG9jYXRvcnMve2lkfRKQAQoVUHJveHlDcmVhdGVDb21wbGV0aW9uEi4uYmx1ZWFwaS5jb3Zlci52MS5Qcm94eUNyZWF0ZUNvbXBsZXRpb25SZXF1ZXN0Gi8uYmx1ZWFwaS5jb3Zlci52MS5Qcm94eUNyZWF0ZUNvbXBsZXRpb25SZXNwb25zZSIUgtPkkwIOOgEqIgkvdjEveC9wY2MwARKKAQoUU2ltdWxhdGVGZWVBbGxvY2F0b3ISKC5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZUFsbG9jYXRvclJlcXVlc3QaHC5ibHVlYXBpLmNvdmVyLnYxLkZlZURldGFpbHMiKILT5JMCIjoBKiIdL3YxL2FsbG9jYXRpb25zL2ZlZXMvc2ltdWxhdGUwARKYAQoQTGlzdEFjY291bnRVc2FnZRIpLmJsdWVhcGkuY292ZXIudjEuTGlzdEFjY291bnRVc2FnZVJlcXVlc3QaJS5ibHVlYXBpLmNvdmVyLnYxLkFjY291bnRVc2FnZURldGFpbHMiMILT5JMCKjoBKiIlL3YxL2FsbG9jYXRpb25zL2FjY291bnR1c2FnZS9hbGw6cmVhZDABEp0BChNSZXN0b3JlQWNjb3VudFVzYWdlEiwuYmx1ZWFwaS5jb3Zlci52MS5SZXN0b3JlQWNjb3VudFVzYWdlUmVxdWVzdBolLmJsdWVhcGkuY292ZXIudjEuQWNjb3VudFVzYWdlRGV0YWlscyIvgtPkkwIpOgEqIiQvdjEvYWxsb2NhdGlvbnMvYWNjb3VudHVzYWdlL3Jlc3RvcmUwARKbAQoUU2ltdWxhdGVBY2NvdW50VXNhZ2USKC5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZUFsbG9jYXRvclJlcXVlc3QaJS5ibHVlYXBpLmNvdmVyLnYxLkFjY291bnRVc2FnZURldGFpbHMiMILT5JMCKjoBKiIlL3YxL2FsbG9jYXRpb25zL2FjY291bnR1c2FnZS9zaW11bGF0ZTABEoEBCgtMaXN0U2F2aW5ncxIhLmJsdWVhcGkuY292ZXIudjEuTGlzdEZlZXNSZXF1ZXN0GiAuYmx1ZWFwaS5jb3Zlci52MS5TYXZpbmdzRGV0YWlscyIrgtPkkwIlOgEqIiAvdjEvYWxsb2NhdGlvbnMvc2F2aW5ncy9hbGw6cmVhZDABEokBCg5SZXN0b3JlU2F2aW5ncxInLmJsdWVhcGkuY292ZXIudjEuUmVzdG9yZVNhdmluZ3NSZXF1ZXN0GiAuYmx1ZWFwaS5jb3Zlci52MS5TYXZpbmdzRGV0YWlscyIqgtPkkwIkOgEqIh8vdjEvYWxsb2NhdGlvbnMvc2F2aW5ncy9yZXN0b3JlMAESjAEKD1NpbXVsYXRlU2F2aW5ncxIoLmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlQWxsb2NhdG9yUmVxdWVzdBogLmJsdWVhcGkuY292ZXIudjEuU2F2aW5nc0RldGFpbHMiK4LT5JMCJToBKiIgL3YxL2FsbG9jYXRpb25zL3NhdmluZ3Mvc2ltdWxhdGUwARKOAQoWR2V0Q29zdEdyb3VwQWxsb2NhdGlvbhIvLmJsdWVhcGkuY292ZXIudjEuR2V0Q29zdEdyb3VwQWxsb2NhdGlvblJlcXVlc3QaIC5ibHVlYXBpLmNvdmVyLnYxLkFsbG9jYXRpb25JdGVtIh+C0+STAhk6ASoiFC92MS9hbGxvY2F0aW9uczpyZWFkMAEShwEKEFByb2Nlc3NBdXRoMFVzZXISKS5ibHVlYXBpLmNvdmVyLnYxLlByb2Nlc3NBdXRoMFVzZXJSZXF1ZXN0GiouYmx1ZWFwaS5jb3Zlci52MS5Qcm9jZXNzQXV0aDBVc2VyUmVzcG9uc2UiHILT5JMCFjoBKiIRL3YxL21lbWJlcnMvYXV0aDASmwEKG0FkZFBhcnRuZXJDZW50ZXJDcmVkZW50aWFscxI0LmJsdWVhcGkuY292ZXIudjEuQWRkUGFydG5lckNlbnRlckNyZWRlbnRpYWxzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIugtPkkwIoOgEqIiMvdjEvYXp1cmUvY3JlZGVudGlhbHMvcGFydG5lcmNlbnRlchJ1Cg1BZGRNcG5TZXR0aW5nEiYuYmx1ZWFwaS5jb3Zlci52MS5BZGRNcG5TZXR0aW5nUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIkgtPkkwIeOgEqIhkvdjEvYXp1cmUvY3JlZGVudGlhbHMvbXBuEpMBChVHZXRDb3N0R3JvdXBBdHRyaWJ1dGUSLi5ibHVlYXBpLmNvdmVyLnYxLkdldENvc3RHcm91cEF0dHJpYnV0ZVJlcXVlc3QaLy5ibHVlYXBpLmNvdmVyLnYxLkdldENvc3RHcm91cEF0dHJpYnV0ZVJlc3BvbnNlIhmC0+STAhM6ASoiDi92MS9hdHRyaWJ1dGVzEm8KCUdldEFsZXJ0cxIiLmJsdWVhcGkuY292ZXIudjEuR2V0QWxlcnRzUmVxdWVzdBojLmJsdWVhcGkuY292ZXIudjEuR2V0QWxlcnRzUmVzcG9uc2UiF4LT5JMCERIPL3YxL2FsZXJ0cy9jb3N0MAESdgoLQ3JlYXRlQWxlcnQSJC5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZUFsZXJ0UmVxdWVzdBolLmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlQWxlcnRSZXNwb25zZSIagtPkkwIUOgEqIg8vdjEvYWxlcnRzL2Nvc3QShAEKD0dldEFsZXJ0RGV0YWlscxIoLmJsdWVhcGkuY292ZXIudjEuR2V0QWxlcnREZXRhaWxzUmVxdWVzdBopLmJsdWVhcGkuY292ZXIudjEuR2V0QWxlcnREZXRhaWxzUmVzcG9uc2UiHILT5JMCFhIUL3YxL2FsZXJ0cy9jb3N0L3tpZH0SeAoLRGVsZXRlQWxlcnQSJC5ibHVlYXBpLmNvdmVyLnYxLkRlbGV0ZUFsZXJ0UmVxdWVzdBolLmJsdWVhcGkuY292ZXIudjEuRGVsZXRlQWxlcnRSZXNwb25zZSIcgtPkkwIWKhQvdjEvYWxlcnRzL2Nvc3Qve2lkfRKQAQoSVXBkYXRlQWxlcnREZXRhaWxzEisuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVBbGVydERldGFpbHNSZXF1ZXN0GiwuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVBbGVydERldGFpbHNSZXNwb25zZSIfgtPkkwIZOgEqGhQvdjEvYWxlcnRzL2Nvc3Qve2lkfRJ6CgtHZXRDaGFubmVscxIkLmJsdWVhcGkuY292ZXIudjEuR2V0Q2hhbm5lbHNSZXF1ZXN0GiUuYmx1ZWFwaS5jb3Zlci52MS5HZXRDaGFubmVsc1Jlc3BvbnNlIhyC0+STAhY6ASoiES92MS9jaGFubmVsczpyZWFkMAESeQoNQ3JlYXRlQ2hhbm5lbBImLmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlQ2hhbm5lbFJlcXVlc3QaJy5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZUNoYW5uZWxSZXNwb25zZSIXgtPkkwIROgEqIgwvdjEvY2hhbm5lbHMShwEKEUdldENoYW5uZWxEZXRhaWxzEiouYmx1ZWFwaS5jb3Zlci52MS5HZXRDaGFubmVsRGV0YWlsc1JlcXVlc3QaKy5ibHVlYXBpLmNvdmVyLnYxLkdldENoYW5uZWxEZXRhaWxzUmVzcG9uc2UiGYLT5JMCExIRL3YxL2NoYW5uZWxzL3tpZH0SewoNRGVsZXRlQ2hhbm5lbBImLmJsdWVhcGkuY292ZXIudjEuRGVsZXRlQ2hhbm5lbFJlcXVlc3QaJy5ibHVlYXBpLmNvdmVyLnYxLkRlbGV0ZUNoYW5uZWxSZXNwb25zZSIZgtPkkwITKhEvdjEvY2hhbm5lbHMve2lkfRKTAQoUVXBkYXRlQ2hhbm5lbERldGFpbHMSLS5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZUNoYW5uZWxEZXRhaWxzUmVxdWVzdBouLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQ2hhbm5lbERldGFpbHNSZXNwb25zZSIcgtPkkwIWOgEqGhEvdjEvY2hhbm5lbHMve2lkfRKgAQoaR2V0RGlzY291bnRSZWNvbW1lbmRhdGlvbnMSMy5ibHVlYXBpLmNvdmVyLnYxLkdldERpc2NvdW50UmVjb21tZW5kYXRpb25zUmVxdWVzdBo0LmJsdWVhcGkuY292ZXIudjEuR2V0RGlzY291bnRSZWNvbW1lbmRhdGlvbnNSZXNwb25zZSIXgtPkkwIROgEqIgwvdjEvZGlzY291bnQSgAEKFUdldEFub21hbHlpbkNvc3RHcm91cBIuLmJsdWVhcGkuY292ZXIudjEuR2V0QW5vbWFseWluQ29zdEdyb3VwUmVxdWVzdBodLmJsdWVhcGkuY292ZXIudjEuQW5vbWFseURhdGEiFoLT5JMCEDoBKiILL3YxL2Fub21hbHkwARKWAQodQ3JlYXRlRGlzY291bnRFeHBpcmF0aW9uQWxlcnQSNi5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZURpc2NvdW50RXhwaXJhdGlvbkFsZXJ0UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIlgtPkkwIfOgEqIhovdjEvYWxlcnRzL2V4cGlyZS9kaXNjb3VudBKbAQodVXBkYXRlRGlzY291bnRFeHBpcmF0aW9uQWxlcnQSNi5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZURpc2NvdW50RXhwaXJhdGlvbkFsZXJ0UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIqgtPkkwIkOgEqGh8vdjEvYWxlcnRzL2V4cGlyZS9kaXNjb3VudC97aWR9EqwBChpHZXREaXNjb3VudEV4cGlyYXRpb25BbGVydBI6LmJsdWVhcGkuY292ZXIudjEuTWFuaXB1bGF0ZURpc2NvdW50RXhwaXJhdGlvbkFsZXJ0UmVxdWVzdBopLmJsdWVhcGkuY292ZXIudjEuRGlzY291bnRFeHBpcnlBbGVydERhdGEiJ4LT5JMCIRIfL3YxL2FsZXJ0cy9leHBpcmUvZGlzY291bnQve2lkfRKtAQobTGlzdERpc2NvdW50RXhwaXJhdGlvbkFsZXJ0EjQuYmx1ZWFwaS5jb3Zlci52MS5MaXN0RGlzY291bnRFeHBpcmF0aW9uQWxlcnRSZXF1ZXN0GikuYmx1ZWFwaS5jb3Zlci52MS5EaXNjb3VudEV4cGlyeUFsZXJ0RGF0YSIrgtPkkwIlIiMvdjEvYWxlcnRzL2V4cGlyZS9kaXNjb3VudC9hbGw6cmVhZDABEpwBCh1EZWxldGVEaXNjb3VudEV4cGlyYXRpb25BbGVydBI6LmJsdWVhcGkuY292ZXIudjEuTWFuaXB1bGF0ZURpc2NvdW50RXhwaXJhdGlvbkFsZXJ0UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIngtPkkwIhKh8vdjEvYWxlcnRzL2V4cGlyZS9kaXNjb3VudC97aWR9EngKEkNyZWF0ZUFub21hbHlBbGVydBIrLmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlQW5vbWFseUFsZXJ0UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIdgtPkkwIXOgEqIhIvdjEvYWxlcnRzL2Fub21hbHkSfgoSRGVsZXRlQW5vbWFseUFsZXJ0Ei8uYmx1ZWFwaS5jb3Zlci52MS5NYW5pcHVsYXRlQW5vbWFseUFsZXJ0UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIfgtPkkwIZKhcvdjEvYWxlcnRzL2Fub21hbHkve2lkfRKIAQoQTGlzdEFub21hbHlBbGVydBIpLmJsdWVhcGkuY292ZXIudjEuTGlzdEFub21hbHlBbGVydFJlcXVlc3QaIi5ibHVlYXBpLmNvdmVyLnYxLkFub21hbHlBbGVydERhdGEiI4LT5JMCHSIbL3YxL2FsZXJ0cy9hbm9tYWx5L2FsbDpyZWFkMAEShwEKD0dldEFub21hbHlBbGVydBIvLmJsdWVhcGkuY292ZXIudjEuTWFuaXB1bGF0ZUFub21hbHlBbGVydFJlcXVlc3QaIi5ibHVlYXBpLmNvdmVyLnYxLkFub21hbHlBbGVydERhdGEiH4LT5JMCGRIXL3YxL2FsZXJ0cy9hbm9tYWx5L3tpZH0SfQoSVXBkYXRlQW5vbWFseUFsZXJ0EisuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVBbm9tYWx5QWxlcnRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiKC0+STAhw6ASoaFy92MS9hbGVydHMvYW5vbWFseS97aWR9EocBCg9SZWdpc3Rlck5ld1VzZXISKC5ibHVlYXBpLmNvdmVyLnYxLlJlZ2lzdGVyTmV3VXNlclJlcXVlc3QaKS5ibHVlYXBpLmNvdmVyLnYxLlJlZ2lzdGVyTmV3VXNlclJlc3BvbnNlIh+C0+STAhk6ASoiFC92MS9tZW1iZXJzL3JlZ2lzdGVyEogBCg5HZXRVc2VyUHJvZmlsZRInLmJsdWVhcGkuY292ZXIudjEuR2V0VXNlclByb2ZpbGVSZXF1ZXN0GiguYmx1ZWFwaS5jb3Zlci52MS5HZXRVc2VyUHJvZmlsZVJlc3BvbnNlIiOC0+STAh0SGy92MS9tZW1iZXJzL3Byb2ZpbGUve2VtYWlsfRKUAQoRVXBkYXRlVXNlclByb2ZpbGUSKi5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVzZXJQcm9maWxlUmVxdWVzdBorLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVXNlclByb2ZpbGVSZXNwb25zZSImgtPkkwIgOgEqGhsvdjEvbWVtYmVycy9wcm9maWxlL3tlbWFpbH0SeAoLTGlzdEJ1ZGdldHMSJC5ibHVlYXBpLmNvdmVyLnYxLkxpc3RCdWRnZXRzUmVxdWVzdBolLmJsdWVhcGkuY292ZXIudjEuTGlzdEJ1ZGdldHNSZXNwb25zZSIagtPkkwIUOgEqIg8vdjEvYnVkZ2V0OnJlYWQwARJtCglHZXRCdWRnZXQSIi5ibHVlYXBpLmNvdmVyLnYxLkdldEJ1ZGdldFJlcXVlc3QaIy5ibHVlYXBpLmNvdmVyLnYxLkdldEJ1ZGdldFJlc3BvbnNlIheC0+STAhESDy92MS9idWRnZXQve2lkfRJ0CgxDcmVhdGVCdWRnZXQSJS5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZUJ1ZGdldFJlcXVlc3QaJi5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZUJ1ZGdldFJlc3BvbnNlIhWC0+STAg86ASoiCi92MS9idWRnZXQSdgoMRGVsZXRlQnVkZ2V0EiUuYmx1ZWFwaS5jb3Zlci52MS5EZWxldGVCdWRnZXRSZXF1ZXN0GiYuYmx1ZWFwaS5jb3Zlci52MS5EZWxldGVCdWRnZXRSZXNwb25zZSIXgtPkkwIRKg8vdjEvYnVkZ2V0L3tpZH0SeQoMVXBkYXRlQnVkZ2V0EiUuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVCdWRnZXRSZXF1ZXN0GiYuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVCdWRnZXRSZXNwb25zZSIagtPkkwIUOgEqGg8vdjEvYnVkZ2V0L3tpZH0S1wEKJ1Jlc29sdmVBV1NNYXJrZXRwbGFjZVRva2VuRm9yT25ib2FyZGluZxJALmJsdWVhcGkuY292ZXIudjEuUmVzb2x2ZUFXU01hcmtldHBsYWNlVG9rZW5Gb3JPbmJvYXJkaW5nUmVxdWVzdBpBLmJsdWVhcGkuY292ZXIudjEuUmVzb2x2ZUFXU01hcmtldHBsYWNlVG9rZW5Gb3JPbmJvYXJkaW5nUmVzcG9uc2UiJ4LT5JMCIToBKiIcL3YxL21lbWJlcnMvYXdzL3N1YnNjcmlwdGlvbhKsAQodR2V0Q3VzdG9tZXJTdWJzY3JpcHRpb25TdGF0dXMSNi5ibHVlYXBpLmNvdmVyLnYxLkdldEN1c3RvbWVyU3Vic2NyaXB0aW9uU3RhdHVzUmVxdWVzdBo3LmJsdWVhcGkuY292ZXIudjEuR2V0Q3VzdG9tZXJTdWJzY3JpcHRpb25TdGF0dXNSZXNwb25zZSIagtPkkwIUEhIvdjEvYmlsbGluZy9zdGF0dXMShgEKD0NyZWF0ZVByb2ZpbGluZxIoLmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlUHJvZmlsaW5nUmVxdWVzdBopLmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlUHJvZmlsaW5nUmVzcG9uc2UiHoLT5JMCGDoBKiITL3YxL21lbWJlcnMvcHJvZmlsZRKWAQoUQWRkSW5mb3RvTWFya2V0cGxhY2USLS5ibHVlYXBpLmNvdmVyLnYxLkFkZEluZm90b01hcmtldHBsYWNlUmVxdWVzdBouLmJsdWVhcGkuY292ZXIudjEuQWRkSW5mb3RvTWFya2V0cGxhY2VSZXNwb25zZSIfgtPkkwIZOgEqIhQvdjEvbWFya2V0cGxhY2UvaW5mbxKcAQoQR2V0UmVwb3J0U3VtbWFyeRIpLmJsdWVhcGkuY292ZXIudjEuR2V0UmVwb3J0U3VtbWFyeVJlcXVlc3QaKi5ibHVlYXBpLmNvdmVyLnYxLkdldFJlcG9ydFN1bW1hcnlSZXNwb25zZSIxgtPkkwIrEikvdjEvcmVwb3J0cy9pbnNpZ2h0L3N1bW1hcnkve2Nvc3RHcm91cElkfRKcAQoTTGlzdFJlY29tbWVuZGF0aW9ucxIrLmJsdWVhcGkuY292ZXIudjEuTGlzdFJlY29tbWVuZGF0aW9uUmVxdWVzdBosLmJsdWVhcGkuY292ZXIudjEuTGlzdFJlY29tbWVuZGF0aW9uUmVzcG9uc2UiKILT5JMCIhIgL3YxL3JlY29tbWVuZGF0aW9ucy9vcHRpbWl6YXRpb24wARKfAQoVTGlzdFJlY29tbWVuZGF0aW9uc1YyEi0uYmx1ZWFwaS5jb3Zlci52MS5MaXN0UmVjb21tZW5kYXRpb25WMlJlcXVlc3QaLC5ibHVlYXBpLmNvdmVyLnYxLkxpc3RSZWNvbW1lbmRhdGlvblJlc3BvbnNlIieC0+STAiE6ASoiHC92MS9yZWNvbW1lbmRhdGlvbnMvYWxsOnJlYWQwARKbAQoRR2V0UmVjb21tZW5kYXRpb24SKi5ibHVlYXBpLmNvdmVyLnYxLkdldFJlY29tbWVuZGF0aW9uUmVxdWVzdBorLmJsdWVhcGkuY292ZXIudjEuR2V0UmVjb21tZW5kYXRpb25SZXNwb25zZSItgtPkkwInEiUvdjEvcmVjb21tZW5kYXRpb25zL29wdGltaXphdGlvbi97aWR9EpwBChNHZXRSZWNvbW1lbmRhdGlvblYyEiwuYmx1ZWFwaS5jb3Zlci52MS5HZXRSZWNvbW1lbmRhdGlvblYyUmVxdWVzdBotLmJsdWVhcGkuY292ZXIudjEuR2V0UmVjb21tZW5kYXRpb25WMlJlc3BvbnNlIiiC0+STAiISIC92MS9yZWNvbW1lbmRhdGlvbnMvZGV0YWlscy97aWR9EpoBChNFeGVjdXRlT3B0aW1pemF0aW9uEiwuYmx1ZWFwaS5jb3Zlci52MS5FeGVjdXRlT3B0aW1pemF0aW9uUmVxdWVzdBotLmJsdWVhcGkuY292ZXIudjEuRXhlY3V0ZU9wdGltaXphdGlvblJlc3BvbnNlIiaC0+STAiA6ASoiGy92MS9yZWNvbW1lbmRhdGlvbnMvZXhlY3V0ZRKdAQoSR2V0RXhlY3V0aW9uU3RhdHVzEisuYmx1ZWFwaS5jb3Zlci52MS5HZXRFeGVjdXRpb25TdGF0dXNSZXF1ZXN0GiwuYmx1ZWFwaS5jb3Zlci52MS5HZXRFeGVjdXRpb25TdGF0dXNSZXNwb25zZSIqgtPkkwIkEiIvdjEvcmVjb21tZW5kYXRpb25zL2V4ZWN1dGUvc3RhdHVzMAESmQEKDk1hcmtBc0V4ZWN1dGVkEicuYmx1ZWFwaS5jb3Zlci52MS5NYXJrQXNFeGVjdXRlZFJlcXVlc3QaKC5ibHVlYXBpLmNvdmVyLnYxLk1hcmtBc0V4ZWN1dGVkUmVzcG9uc2UiNILT5JMCLjoBKiIpL3YxL3JlY29tbWVuZGF0aW9ucy9vcHRpbWl6YXRpb24vZXhlY3V0ZWQSuQEKGlVuZG9FeGVjdXRlZFJlY29tbWVuZGF0aW9uEjMuYmx1ZWFwaS5jb3Zlci52MS5VbmRvRXhlY3V0ZWRSZWNvbW1lbmRhdGlvblJlcXVlc3QaNC5ibHVlYXBpLmNvdmVyLnYxLlVuZG9FeGVjdXRlZFJlY29tbWVuZGF0aW9uUmVzcG9uc2UiMILT5JMCKjoBKiIlL3YxL3JlY29tbWVuZGF0aW9ucy9vcHRpbWl6YXRpb24vdW5kbxKkAQoTT3B0aW1pemF0aW9uSGlzdG9yeRIsLmJsdWVhcGkuY292ZXIudjEuT3B0aW1pemF0aW9uSGlzdG9yeVJlcXVlc3QaLS5ibHVlYXBpLmNvdmVyLnYxLk9wdGltaXphdGlvbkhpc3RvcnlSZXNwb25zZSIwgtPkkwIqEigvdjEvcmVjb21tZW5kYXRpb25zL29wdGltaXphdGlvbi9oaXN0b3J5Er8BChpTZXRDb3N0R3JvdXBFdmVudEluZGljYXRvchIzLmJsdWVhcGkuY292ZXIudjEuU2V0Q29zdEdyb3VwRXZlbnRJbmRpY2F0b3JSZXF1ZXN0GjQuYmx1ZWFwaS5jb3Zlci52MS5TZXRDb3N0R3JvdXBFdmVudEluZGljYXRvclJlc3BvbnNlIjaC0+STAjA6ASoiKy92MS9jb3N0Z3JvdXBzL3tjb3N0R3JvdXBJZH0vZXZlbnRJbmRpY2F0b3ISuAEKGlNldENvc3RHcm91cEFub21hbHlPcHRpb25zEjMuYmx1ZWFwaS5jb3Zlci52MS5TZXRDb3N0R3JvdXBBbm9tYWx5T3B0aW9uc1JlcXVlc3QaNC5ibHVlYXBpLmNvdmVyLnYxLlNldENvc3RHcm91cEFub21hbHlPcHRpb25zUmVzcG9uc2UiL4LT5JMCKToBKiIkL3YxL2Nvc3Rncm91cHMve2Nvc3RHcm91cElkfS9hbm9tYWx5EpABChFTZXRPcmdGaXNjYWxNb250aBIqLmJsdWVhcGkuY292ZXIudjEuU2V0T3JnRmlzY2FsTW9udGhSZXF1ZXN0GisuYmx1ZWFwaS5jb3Zlci52MS5TZXRPcmdGaXNjYWxNb250aFJlc3BvbnNlIiKC0+STAhw6ASoiFy92MS9yZXBvcnRzL2Zpc2NhbG1vbnRoEo0BChFHZXRPcmdGaXNjYWxNb250aBIqLmJsdWVhcGkuY292ZXIudjEuR2V0T3JnRmlzY2FsTW9udGhSZXF1ZXN0GisuYmx1ZWFwaS5jb3Zlci52MS5HZXRPcmdGaXNjYWxNb250aFJlc3BvbnNlIh+C0+STAhkSFy92MS9yZXBvcnRzL2Zpc2NhbG1vbnRoEqIBChRUcmFuc2Zlck9yZ2FuaXphdGlvbhItLmJsdWVhcGkuY292ZXIudjEuVHJhbnNmZXJPcmdhbml6YXRpb25SZXF1ZXN0Gi4uYmx1ZWFwaS5jb3Zlci52MS5UcmFuc2Zlck9yZ2FuaXphdGlvblJlc3BvbnNlIiuC0+STAiUSIy92MS9vcmdhbml6YXRpb25zL3RyYW5zZmVyL3t0YXJnZXR9EqkBChlVcGRhdGVDb3N0R3JvdXBDcmVhdGlvblVJEjIuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVDb3N0R3JvdXBDcmVhdGlvblVJUmVxdWVzdBozLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQ29zdEdyb3VwQ3JlYXRpb25VSVJlc3BvbnNlIiOC0+STAh06ASoaGC92MS9tZS9jb3N0Z3JvdXBjcmVhdGlvbhJ2Cg1MaXN0VW5pdFR5cGVzEiYuYmx1ZWFwaS5jb3Zlci52MS5MaXN0VW5pdFR5cGVzUmVxdWVzdBonLmJsdWVhcGkuY292ZXIudjEuTGlzdFVuaXRUeXBlc1Jlc3BvbnNlIhSC0+STAg4SDC92MS91bml0Y29zdBJ8Cg5DcmVhdGVVbml0VHlwZRInLmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlVW5pdFR5cGVSZXF1ZXN0GiguYmx1ZWFwaS5jb3Zlci52MS5DcmVhdGVVbml0VHlwZVJlc3BvbnNlIheC0+STAhE6ASoiDC92MS91bml0Y29zdBJ1CgtHZXRVbml0VHlwZRIkLmJsdWVhcGkuY292ZXIudjEuR2V0VW5pdFR5cGVSZXF1ZXN0GiUuYmx1ZWFwaS5jb3Zlci52MS5HZXRVbml0VHlwZVJlc3BvbnNlIhmC0+STAhMSES92MS91bml0Y29zdC97aWR9EoEBCg5VcGRhdGVVbml0VHlwZRInLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlVW5pdFR5cGVSZXF1ZXN0GiguYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVVbml0VHlwZVJlc3BvbnNlIhyC0+STAhY6ASoaES92MS91bml0Y29zdC97aWR9En4KDkRlbGV0ZVVuaXRUeXBlEicuYmx1ZWFwaS5jb3Zlci52MS5EZWxldGVVbml0VHlwZVJlcXVlc3QaKC5ibHVlYXBpLmNvdmVyLnYxLkRlbGV0ZVVuaXRUeXBlUmVzcG9uc2UiGYLT5JMCEyoRL3YxL3VuaXRjb3N0L3tpZH0SdgoKTWVyZ2VVbml0cxIjLmJsdWVhcGkuY292ZXIudjEuTWVyZ2VVbml0c1JlcXVlc3QaJC5ibHVlYXBpLmNvdmVyLnYxLk1lcmdlVW5pdHNSZXNwb25zZSIdgtPkkwIXOgEqIhIvdjEvdW5pdGNvc3QvbWVyZ2USkQEKEkxpc3RTdWdnZXN0ZWRVbml0cxIrLmJsdWVhcGkuY292ZXIudjEuTGlzdFN1Z2dlc3RlZFVuaXRzUmVxdWVzdBosLmJsdWVhcGkuY292ZXIudjEuTGlzdFN1Z2dlc3RlZFVuaXRzUmVzcG9uc2UiIILT5JMCGhIYL3YxL3VuaXRjb3N0L2F1dG9zdWdnZXN0Ep0BChNNZXJnZVN1Z2dlc3RlZFVuaXRzEiwuYmx1ZWFwaS5jb3Zlci52MS5NZXJnZVN1Z2dlc3RlZFVuaXRzUmVxdWVzdBotLmJsdWVhcGkuY292ZXIudjEuTWVyZ2VTdWdnZXN0ZWRVbml0c1Jlc3BvbnNlIimC0+STAiM6ASoiHi92MS91bml0Y29zdC9hdXRvc3VnZ2VzdC9tZXJnZRKqAQoXQ3JlYXRlVW5pdEZyb21TdWdnZXN0ZWQSMC5ibHVlYXBpLmNvdmVyLnYxLkNyZWF0ZVVuaXRGcm9tU3VnZ2VzdGVkUmVxdWVzdBoxLmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlVW5pdEZyb21TdWdnZXN0ZWRSZXNwb25zZSIqgtPkkwIkOgEqIh8vdjEvdW5pdGNvc3QvYXV0b3N1Z2dlc3QvY3JlYXRlEpgBChNMaXN0U2hhcmVkUmVzb3VyY2VzEiwuYmx1ZWFwaS5jb3Zlci52MS5MaXN0U2hhcmVkUmVzb3VyY2VzUmVxdWVzdBotLmJsdWVhcGkuY292ZXIudjEuTGlzdFNoYXJlZFJlc291cmNlc1Jlc3BvbnNlIiSC0+STAh4SHC92MS91bml0Y29zdC9zaGFyZWRyZXNvdXJjZXMSoAEKFENyZWF0ZVNoYXJlZFJlc291cmNlEi4uYmx1ZWFwaS5jb3Zlci52MS5DcmVhdGVTaGFyZWRSZXNvdXJjZXNSZXF1ZXN0Gi8uYmx1ZWFwaS5jb3Zlci52MS5DcmVhdGVTaGFyZWRSZXNvdXJjZXNSZXNwb25zZSIngtPkkwIhOgEqIhwvdjEvdW5pdGNvc3Qvc2hhcmVkcmVzb3VyY2VzEpkBChFHZXRTaGFyZWRSZXNvdXJjZRIrLmJsdWVhcGkuY292ZXIudjEuR2V0U2hhcmVkUmVzb3VyY2VzUmVxdWVzdBosLmJsdWVhcGkuY292ZXIudjEuR2V0U2hhcmVkUmVzb3VyY2VzUmVzcG9uc2UiKYLT5JMCIxIhL3YxL3VuaXRjb3N0L3NoYXJlZHJlc291cmNlcy97aWR9EqUBChRVcGRhdGVTaGFyZWRSZXNvdXJjZRIuLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlU2hhcmVkUmVzb3VyY2VzUmVxdWVzdBovLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlU2hhcmVkUmVzb3VyY2VzUmVzcG9uc2UiLILT5JMCJjoBKhohL3YxL3VuaXRjb3N0L3NoYXJlZHJlc291cmNlcy97aWR9EqIBChREZWxldGVTaGFyZWRSZXNvdXJjZRIuLmJsdWVhcGkuY292ZXIudjEuRGVsZXRlU2hhcmVkUmVzb3VyY2VzUmVxdWVzdBovLmJsdWVhcGkuY292ZXIudjEuRGVsZXRlU2hhcmVkUmVzb3VyY2VzUmVzcG9uc2UiKYLT5JMCIyohL3YxL3VuaXRjb3N0L3NoYXJlZHJlc291cmNlcy97aWR9EoQBCg9MaXN0VW5pdE1ldHJpY3MSKC5ibHVlYXBpLmNvdmVyLnYxLkxpc3RVbml0TWV0cmljc1JlcXVlc3QaKS5ibHVlYXBpLmNvdmVyLnYxLkxpc3RVbml0TWV0cmljc1Jlc3BvbnNlIhyC0+STAhYSFC92MS91bml0Y29zdC9tZXRyaWNzEooBChBDcmVhdGVVbml0TWV0cmljEikuYmx1ZWFwaS5jb3Zlci52MS5DcmVhdGVVbml0TWV0cmljUmVxdWVzdBoqLmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlVW5pdE1ldHJpY1Jlc3BvbnNlIh+C0+STAhk6ASoiFC92MS91bml0Y29zdC9tZXRyaWNzEoMBCg1HZXRVbml0TWV0cmljEiYuYmx1ZWFwaS5jb3Zlci52MS5HZXRVbml0TWV0cmljUmVxdWVzdBonLmJsdWVhcGkuY292ZXIudjEuR2V0VW5pdE1ldHJpY1Jlc3BvbnNlIiGC0+STAhsSGS92MS91bml0Y29zdC9tZXRyaWNzL3tpZH0SjwEKEFVwZGF0ZVVuaXRNZXRyaWMSKS5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVuaXRNZXRyaWNSZXF1ZXN0GiouYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVVbml0TWV0cmljUmVzcG9uc2UiJILT5JMCHjoBKhoZL3YxL3VuaXRjb3N0L21ldHJpY3Mve2lkfRKMAQoQRGVsZXRlVW5pdE1ldHJpYxIpLmJsdWVhcGkuY292ZXIudjEuRGVsZXRlVW5pdE1ldHJpY1JlcXVlc3QaKi5ibHVlYXBpLmNvdmVyLnYxLkRlbGV0ZVVuaXRNZXRyaWNSZXNwb25zZSIhgtPkkwIbKhkvdjEvdW5pdGNvc3QvbWV0cmljcy97aWR9ErYBChhDb25maXJtR29vZ2xlU2hlZXRBY2Nlc3MSMS5ibHVlYXBpLmNvdmVyLnYxLkNvbmZpcm1Hb29nbGVTaGVldEFjY2Vzc1JlcXVlc3QaMi5ibHVlYXBpLmNvdmVyLnYxLkNvbmZpcm1Hb29nbGVTaGVldEFjY2Vzc1Jlc3BvbnNlIjOC0+STAi06ASoiKC92MS91bml0Y29zdC9tZXRyaWNzL2dvb2dsZXNoZWV0L2NvbmZpcm0SpAEKElByZXZpZXdHb29nbGVTaGVldBIrLmJsdWVhcGkuY292ZXIudjEuUHJldmlld0dvb2dsZVNoZWV0UmVxdWVzdBosLmJsdWVhcGkuY292ZXIudjEuUHJldmlld0dvb2dsZVNoZWV0UmVzcG9uc2UiM4LT5JMCLToBKiIoL3YxL3VuaXRjb3N0L21ldHJpY3MvZ29vZ2xlc2hlZXQvcHJldmlldxKqAQoVR2V0Q2xvdWR3YXRjaE1ldGFkYXRhEi4uYmx1ZWFwaS5jb3Zlci52MS5HZXRDbG91ZHdhdGNoTWV0YWRhdGFSZXF1ZXN0Gi8uYmx1ZWFwaS5jb3Zlci52MS5HZXRDbG91ZHdhdGNoTWV0YWRhdGFSZXNwb25zZSIwgtPkkwIqEigvdjEvdW5pdGNvc3QvbWV0cmljcy9jbG91ZHdhdGNoL21ldGFkYXRhEoQBCg9WZXJpZnlBUElBY2Nlc3MSKC5ibHVlYXBpLmNvdmVyLnYxLlZlcmlmeUFQSUFjY2Vzc1JlcXVlc3QaKS5ibHVlYXBpLmNvdmVyLnYxLlZlcmlmeUFQSUFjY2Vzc1Jlc3BvbnNlIhyC0+STAhYSFC92MS9hcGlhY2Nlc3MvdmVyaWZ5EokBChFHZXRBSUNvc3RBbmRVc2FnZRIqLmJsdWVhcGkuY292ZXIudjEuR2V0QUlDb3N0QW5kVXNhZ2VSZXF1ZXN0GisuYmx1ZWFwaS5jb3Zlci52MS5HZXRBSUNvc3RBbmRVc2FnZVJlc3BvbnNlIhuC0+STAhU6ASoiEC92MS9haS9jb3N0dXNhZ2USlwEKFUdldENvbnRhaW5lckNvc3RVc2FnZRIrLmJsdWVhcGkuY292ZXIudjEuQ29udGFpbmVyQ29zdFVzYWdlUmVxdWVzdBosLmJsdWVhcGkuY292ZXIudjEuQ29udGFpbmVyQ29zdFVzYWdlUmVzcG9uc2UiI4LT5JMCHToBKiIYL3YxL2NvbnRhaW5lcnMvY29zdHVzYWdlEocBChBQb3B1bGF0ZURlbW9EYXRhEikuYmx1ZWFwaS5jb3Zlci52MS5Qb3B1bGF0ZURlbW9EYXRhUmVxdWVzdBoqLmJsdWVhcGkuY292ZXIudjEuUG9wdWxhdGVEZW1vRGF0YVJlc3BvbnNlIhyC0+STAhY6ASoiES92MS9kZW1vL3BvcHVsYXRlEnsKDVJlc2V0RGVtb0RhdGESJi5ibHVlYXBpLmNvdmVyLnYxLlJlc2V0RGVtb0RhdGFSZXF1ZXN0GicuYmx1ZWFwaS5jb3Zlci52MS5SZXNldERlbW9EYXRhUmVzcG9uc2UiGYLT5JMCEzoBKiIOL3YxL2RlbW8vcmVzZXQSmQEKD0dldERpc2NvdW50UGxhbhIoLmJsdWVhcGkuY292ZXIudjEuR2V0RGlzY291bnRQbGFuUmVxdWVzdBopLmJsdWVhcGkuY292ZXIudjEuR2V0RGlzY291bnRQbGFuUmVzcG9uc2UiMYLT5JMCKzoBKiImL3YxL3t2ZW5kb3J9L2Rpc2NvdW50cGxhbi97b3JnSWR9OnJlYWQSfwoOR2V0Q29zdFVzYWdlVjISJy5ibHVlYXBpLmNvdmVyLnYxLkdldENvc3RVc2FnZVYyUmVxdWVzdBooLmJsdWVhcGkuY292ZXIudjEuR2V0Q29zdFVzYWdlVjJSZXNwb25zZSIYgtPkkwISOgEqIg0vdjEvY29zdHVzYWdlMAESqAEKFUxpc3ROb25wZXJmb3JtaW5nUmF0ZRIuLmJsdWVhcGkuY292ZXIudjEuTGlzdE5vbnBlcmZvcm1pbmdSYXRlUmVxdWVzdBovLmJsdWVhcGkuY292ZXIudjEuTGlzdE5vbnBlcmZvcm1pbmdSYXRlUmVzcG9uc2UiLoLT5JMCKDoBKiIjL3YxL3JlcG9ydHMvcmF0ZS9ub25wZXJmb3JtaW5nOnJlYWQSqAEKFUxpc3RVbnRhZ2dlZFJlc291cmNlcxIuLmJsdWVhcGkuY292ZXIudjEuTGlzdFVudGFnZ2VkUmVzb3VyY2VzUmVxdWVzdBovLmJsdWVhcGkuY292ZXIudjEuTGlzdFVudGFnZ2VkUmVzb3VyY2VzUmVzcG9uc2UiLoLT5JMCKDoBKiIjL3YxL3JlcG9ydHMvcmVzb3VyY2VzL3VudGFnZ2VkOnJlYWQSfwoNTGlzdEZvcmVjYXN0cxImLmJsdWVhcGkuY292ZXIudjEuTGlzdEZvcmVjYXN0c1JlcXVlc3QaJy5ibHVlYXBpLmNvdmVyLnYxLkxpc3RGb3JlY2FzdHNSZXNwb25zZSIdgtPkkwIXOgEqIhIvdjEvZm9yZWNhc3RzOnJlYWQSiQEKEkNyZWF0ZUNvc3RGb3JlY2FzdBIrLmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlQ29zdEZvcmVjYXN0UmVxdWVzdBosLmJsdWVhcGkuY292ZXIudjEuQ3JlYXRlQ29zdEZvcmVjYXN0UmVzcG9uc2UiGILT5JMCEjoBKiINL3YxL2ZvcmVjYXN0cxKCAQoPR2V0Q29zdEZvcmVjYXN0EiguYmx1ZWFwaS5jb3Zlci52MS5HZXRDb3N0Rm9yZWNhc3RSZXF1ZXN0GikuYmx1ZWFwaS5jb3Zlci52MS5HZXRDb3N0Rm9yZWNhc3RSZXNwb25zZSIagtPkkwIUEhIvdjEvZm9yZWNhc3RzL3tpZH0SjgEKElVwZGF0ZUNvc3RGb3JlY2FzdBIrLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQ29zdEZvcmVjYXN0UmVxdWVzdBosLmJsdWVhcGkuY292ZXIudjEuVXBkYXRlQ29zdEZvcmVjYXN0UmVzcG9uc2UiHYLT5JMCFzoBKhoSL3YxL2ZvcmVjYXN0cy97aWR9EosBChJEZWxldGVDb3N0Rm9yZWNhc3QSKy5ibHVlYXBpLmNvdmVyLnYxLkRlbGV0ZUNvc3RGb3JlY2FzdFJlcXVlc3QaLC5ibHVlYXBpLmNvdmVyLnYxLkRlbGV0ZUNvc3RGb3JlY2FzdFJlc3BvbnNlIhqC0+STAhQqEi92MS9mb3JlY2FzdHMve2lkfRKbAQoUR2V0Q29zdEZvcmVjYXN0c0RhdGESLS5ibHVlYXBpLmNvdmVyLnYxLkdldENvc3RGb3JlY2FzdHNEYXRhUmVxdWVzdBouLmJsdWVhcGkuY292ZXIudjEuR2V0Q29zdEZvcmVjYXN0c0RhdGFSZXNwb25zZSIigtPkkwIcOgEqIhcvdjEvZm9yZWNhc3RzL2RhdGE6cmVhZDABEo8BChNHZXRSZWNvbW1lbmRhdGlvblYzEiwuYmx1ZWFwaS5jb3Zlci52MS5HZXRSZWNvbW1lbmRhdGlvblYzUmVxdWVzdBotLmJsdWVhcGkuY292ZXIudjEuR2V0UmVjb21tZW5kYXRpb25WM1Jlc3BvbnNlIhuC0+STAhUSEy92MS9yZWNvbW1lbmRhdGlvbnMSnAEKFUxpc3RSZWNvbW1lbmRhdGlvbnNWMxIuLmJsdWVhcGkuY292ZXIudjEuTGlzdFJlY29tbWVuZGF0aW9uc1YzUmVxdWVzdBonLmJsdWVhcGkuY292ZXIudjEuUmVjb21tZW5kYXRpb25TdW1tYXJ5IiiC0+STAiI6ASoiHS92MS9yZWNvbW1lbmRhdGlvbnMvc3VtbWFyaWVzMAESpQEKF0V4ZWN1dGVSZWNvbW1lbmRhdGlvblYzEjAuYmx1ZWFwaS5jb3Zlci52MS5FeGVjdXRlUmVjb21tZW5kYXRpb25WM1JlcXVlc3QaMS5ibHVlYXBpLmNvdmVyLnYxLkV4ZWN1dGVSZWNvbW1lbmRhdGlvblYzUmVzcG9uc2UiJYLT5JMCHzoBKiIaL3YxL3JlY29tbWVuZGF0aW9uL2V4ZWN1dGUSdwoLSW52aXRlVXNlcnMSJC5ibHVlYXBpLmNvdmVyLnYxLkludml0ZVVzZXJzUmVxdWVzdBolLmJsdWVhcGkuY292ZXIudjEuSW52aXRlVXNlcnNSZXNwb25zZSIbgtPkkwIVOgEqIhAvdjEvdXNlcnMvaW52aXRlEm8KCkRlbGV0ZVVzZXISIy5ibHVlYXBpLmNvdmVyLnYxLkRlbGV0ZVVzZXJSZXF1ZXN0GiQuYmx1ZWFwaS5jb3Zlci52MS5EZWxldGVVc2VyUmVzcG9uc2UiFoLT5JMCECoOL3YxL3VzZXJzL3tpZH0SgwEKDlVwZGF0ZVVzZXJSb2xlEicuYmx1ZWFwaS5jb3Zlci52MS5VcGRhdGVVc2VyUm9sZVJlcXVlc3QaKC5ibHVlYXBpLmNvdmVyLnYxLlVwZGF0ZVVzZXJSb2xlUmVzcG9uc2UiHoLT5JMCGDoBKhoTL3YxL3VzZXJzL3t1c2VyX2lkfRJnCglMaXN0VXNlcnMSIi5ibHVlYXBpLmNvdmVyLnYxLkxpc3RVc2Vyc1JlcXVlc3QaIy5ibHVlYXBpLmNvdmVyLnYxLkxpc3RVc2Vyc1Jlc3BvbnNlIhGC0+STAgsSCS92MS91c2VycxKBAQoMUmVpbnZpdGVVc2VyEiUuYmx1ZWFwaS5jb3Zlci52MS5SZWludml0ZVVzZXJSZXF1ZXN0GiYuYmx1ZWFwaS5jb3Zlci52MS5SZWludml0ZVVzZXJSZXNwb25zZSIigtPkkwIcOgEqIhcvdjEvdXNlcnMve2lkfS9yZWludml0ZRJmCgdHZXRVc2VyEiAuYmx1ZWFwaS5jb3Zlci52MS5HZXRVc2VyUmVxdWVzdBohLmJsdWVhcGkuY292ZXIudjEuR2V0VXNlclJlc3BvbnNlIhaC0+STAhASDi92MS91c2Vycy97aWR9Em0KCkdldE15Um9sZXMSIy5ibHVlYXBpLmNvdmVyLnYxLkdldE15Um9sZXNSZXF1ZXN0GiQuYmx1ZWFwaS5jb3Zlci52MS5HZXRNeVJvbGVzUmVzcG9uc2UiFILT5JMCDhIML3YxL21lL3JvbGVzGpcBkkGTARJCKEJFVEEpIENvdmVyIEFQSS4gQmFzZSBVUkw6IGh0dHBzOi8vYXBpLmFscGhhdXMuY2xvdWQvbS9ibHVlL2NvdmVyGk0KElNlcnZpY2UgZGVmaW5pdGlvbhI3aHR0cHM6Ly9naXRodWIuY29tL2FscGhhdXNsYWJzL2JsdWVhcGkvdHJlZS9tYWluL2NvdmVyL0JLChdjbG91ZC5hbHBoYXVzLmFwaS5jb3ZlckIKQ292ZXJQcm90b1okZ2l0aHViLmNvbS9hbHBoYXVzbGFicy9ibHVlYXBpL2NvdmVyYgZwcm90bzM", [file_api_cover_optimizationrecommendation, file_api_cover_recommendation_recommendation, file_api_cover_attribute, file_api_cover_user, file_api_cover_view, file_api_cover_unitcost, file_api_cover_costgroup, file_api_cover_accountaccess, file_api_cover_costforecast, file_api_cover_discountplan, file_api_cover_discountrecommendation, file_api_cover_rightsizingrecommendation, file_api_cover_alert, file_api_cover_budget, file_api_cover_insightreport, file_protos_operation, file_google_api_annotations, file_google_protobuf_empty, file_api_cover_role, file_google_protobuf_struct, file_protoc_gen_openapiv2_options_annotations]);
52
+
53
+ /**
54
+ * @generated from message blueapi.cover.v1.GetMyRolesRequest
55
+ */
56
+ export type GetMyRolesRequest = Message<"blueapi.cover.v1.GetMyRolesRequest"> & {
57
+ };
58
+
59
+ /**
60
+ * Describes the message blueapi.cover.v1.GetMyRolesRequest.
61
+ * Use `create(GetMyRolesRequestSchema)` to create a new message.
62
+ */
63
+ export const GetMyRolesRequestSchema: GenMessage<GetMyRolesRequest> = /*@__PURE__*/
64
+ messageDesc(file_cover_v1_cover, 0);
65
+
66
+ /**
67
+ * @generated from message blueapi.cover.v1.GetMyRolesResponse
68
+ */
69
+ export type GetMyRolesResponse = Message<"blueapi.cover.v1.GetMyRolesResponse"> & {
70
+ /**
71
+ * @generated from field: repeated blueapi.api.cover.Role roles = 1;
72
+ */
73
+ roles: Role[];
74
+ };
75
+
76
+ /**
77
+ * Describes the message blueapi.cover.v1.GetMyRolesResponse.
78
+ * Use `create(GetMyRolesResponseSchema)` to create a new message.
79
+ */
80
+ export const GetMyRolesResponseSchema: GenMessage<GetMyRolesResponse> = /*@__PURE__*/
81
+ messageDesc(file_cover_v1_cover, 1);
82
+
83
+ /**
84
+ * @generated from message blueapi.cover.v1.GetUserRequest
85
+ */
86
+ export type GetUserRequest = Message<"blueapi.cover.v1.GetUserRequest"> & {
87
+ /**
88
+ * @generated from field: string id = 1;
89
+ */
90
+ id: string;
91
+ };
92
+
93
+ /**
94
+ * Describes the message blueapi.cover.v1.GetUserRequest.
95
+ * Use `create(GetUserRequestSchema)` to create a new message.
96
+ */
97
+ export const GetUserRequestSchema: GenMessage<GetUserRequest> = /*@__PURE__*/
98
+ messageDesc(file_cover_v1_cover, 2);
99
+
100
+ /**
101
+ * @generated from message blueapi.cover.v1.GetUserResponse
102
+ */
103
+ export type GetUserResponse = Message<"blueapi.cover.v1.GetUserResponse"> & {
104
+ /**
105
+ * @generated from field: blueapi.api.cover.User user = 1;
106
+ */
107
+ user?: User;
108
+ };
109
+
110
+ /**
111
+ * Describes the message blueapi.cover.v1.GetUserResponse.
112
+ * Use `create(GetUserResponseSchema)` to create a new message.
113
+ */
114
+ export const GetUserResponseSchema: GenMessage<GetUserResponse> = /*@__PURE__*/
115
+ messageDesc(file_cover_v1_cover, 3);
50
116
 
51
117
  /**
52
118
  * @generated from message blueapi.cover.v1.ReinviteUserRequest
@@ -63,12 +129,16 @@ export type ReinviteUserRequest = Message<"blueapi.cover.v1.ReinviteUserRequest"
63
129
  * Use `create(ReinviteUserRequestSchema)` to create a new message.
64
130
  */
65
131
  export const ReinviteUserRequestSchema: GenMessage<ReinviteUserRequest> = /*@__PURE__*/
66
- messageDesc(file_cover_v1_cover, 0);
132
+ messageDesc(file_cover_v1_cover, 4);
67
133
 
68
134
  /**
69
135
  * @generated from message blueapi.cover.v1.ReinviteUserResponse
70
136
  */
71
137
  export type ReinviteUserResponse = Message<"blueapi.cover.v1.ReinviteUserResponse"> & {
138
+ /**
139
+ * @generated from field: blueapi.api.cover.User user = 1;
140
+ */
141
+ user?: User;
72
142
  };
73
143
 
74
144
  /**
@@ -76,7 +146,7 @@ export type ReinviteUserResponse = Message<"blueapi.cover.v1.ReinviteUserRespons
76
146
  * Use `create(ReinviteUserResponseSchema)` to create a new message.
77
147
  */
78
148
  export const ReinviteUserResponseSchema: GenMessage<ReinviteUserResponse> = /*@__PURE__*/
79
- messageDesc(file_cover_v1_cover, 1);
149
+ messageDesc(file_cover_v1_cover, 5);
80
150
 
81
151
  /**
82
152
  * @generated from message blueapi.cover.v1.ListUsersRequest
@@ -89,7 +159,7 @@ export type ListUsersRequest = Message<"blueapi.cover.v1.ListUsersRequest"> & {
89
159
  * Use `create(ListUsersRequestSchema)` to create a new message.
90
160
  */
91
161
  export const ListUsersRequestSchema: GenMessage<ListUsersRequest> = /*@__PURE__*/
92
- messageDesc(file_cover_v1_cover, 2);
162
+ messageDesc(file_cover_v1_cover, 6);
93
163
 
94
164
  /**
95
165
  * @generated from message blueapi.cover.v1.ListUsersResponse
@@ -106,7 +176,7 @@ export type ListUsersResponse = Message<"blueapi.cover.v1.ListUsersResponse"> &
106
176
  * Use `create(ListUsersResponseSchema)` to create a new message.
107
177
  */
108
178
  export const ListUsersResponseSchema: GenMessage<ListUsersResponse> = /*@__PURE__*/
109
- messageDesc(file_cover_v1_cover, 3);
179
+ messageDesc(file_cover_v1_cover, 7);
110
180
 
111
181
  /**
112
182
  * @generated from message blueapi.cover.v1.ListUsersResponse.UserSummary
@@ -153,7 +223,7 @@ export type ListUsersResponse_UserSummary = Message<"blueapi.cover.v1.ListUsersR
153
223
  * Use `create(ListUsersResponse_UserSummarySchema)` to create a new message.
154
224
  */
155
225
  export const ListUsersResponse_UserSummarySchema: GenMessage<ListUsersResponse_UserSummary> = /*@__PURE__*/
156
- messageDesc(file_cover_v1_cover, 3, 0);
226
+ messageDesc(file_cover_v1_cover, 7, 0);
157
227
 
158
228
  /**
159
229
  * @generated from message blueapi.cover.v1.UpdateUserRoleRequest
@@ -165,27 +235,48 @@ export type UpdateUserRoleRequest = Message<"blueapi.cover.v1.UpdateUserRoleRequ
165
235
  userId: string;
166
236
 
167
237
  /**
168
- * @generated from field: repeated string role_ids = 2;
238
+ * @generated from field: repeated blueapi.cover.v1.UpdateUserRoleRequest.Role roles = 2;
169
239
  */
170
- roleIds: string[];
240
+ roles: UpdateUserRoleRequest_Role[];
241
+ };
242
+
243
+ /**
244
+ * Describes the message blueapi.cover.v1.UpdateUserRoleRequest.
245
+ * Use `create(UpdateUserRoleRequestSchema)` to create a new message.
246
+ */
247
+ export const UpdateUserRoleRequestSchema: GenMessage<UpdateUserRoleRequest> = /*@__PURE__*/
248
+ messageDesc(file_cover_v1_cover, 8);
171
249
 
250
+ /**
251
+ * @generated from message blueapi.cover.v1.UpdateUserRoleRequest.Role
252
+ */
253
+ export type UpdateUserRoleRequest_Role = Message<"blueapi.cover.v1.UpdateUserRoleRequest.Role"> & {
172
254
  /**
173
- * @generated from field: repeated string cost_group_ids = 3;
255
+ * @generated from field: string id = 1;
256
+ */
257
+ id: string;
258
+
259
+ /**
260
+ * @generated from field: repeated string cost_group_ids = 2;
174
261
  */
175
262
  costGroupIds: string[];
176
263
  };
177
264
 
178
265
  /**
179
- * Describes the message blueapi.cover.v1.UpdateUserRoleRequest.
180
- * Use `create(UpdateUserRoleRequestSchema)` to create a new message.
266
+ * Describes the message blueapi.cover.v1.UpdateUserRoleRequest.Role.
267
+ * Use `create(UpdateUserRoleRequest_RoleSchema)` to create a new message.
181
268
  */
182
- export const UpdateUserRoleRequestSchema: GenMessage<UpdateUserRoleRequest> = /*@__PURE__*/
183
- messageDesc(file_cover_v1_cover, 4);
269
+ export const UpdateUserRoleRequest_RoleSchema: GenMessage<UpdateUserRoleRequest_Role> = /*@__PURE__*/
270
+ messageDesc(file_cover_v1_cover, 8, 0);
184
271
 
185
272
  /**
186
273
  * @generated from message blueapi.cover.v1.UpdateUserRoleResponse
187
274
  */
188
275
  export type UpdateUserRoleResponse = Message<"blueapi.cover.v1.UpdateUserRoleResponse"> & {
276
+ /**
277
+ * @generated from field: blueapi.api.cover.User user = 1;
278
+ */
279
+ user?: User;
189
280
  };
190
281
 
191
282
  /**
@@ -193,7 +284,7 @@ export type UpdateUserRoleResponse = Message<"blueapi.cover.v1.UpdateUserRoleRes
193
284
  * Use `create(UpdateUserRoleResponseSchema)` to create a new message.
194
285
  */
195
286
  export const UpdateUserRoleResponseSchema: GenMessage<UpdateUserRoleResponse> = /*@__PURE__*/
196
- messageDesc(file_cover_v1_cover, 5);
287
+ messageDesc(file_cover_v1_cover, 9);
197
288
 
198
289
  /**
199
290
  * @generated from message blueapi.cover.v1.DeleteUserRequest
@@ -210,7 +301,7 @@ export type DeleteUserRequest = Message<"blueapi.cover.v1.DeleteUserRequest"> &
210
301
  * Use `create(DeleteUserRequestSchema)` to create a new message.
211
302
  */
212
303
  export const DeleteUserRequestSchema: GenMessage<DeleteUserRequest> = /*@__PURE__*/
213
- messageDesc(file_cover_v1_cover, 6);
304
+ messageDesc(file_cover_v1_cover, 10);
214
305
 
215
306
  /**
216
307
  * @generated from message blueapi.cover.v1.DeleteUserResponse
@@ -223,7 +314,7 @@ export type DeleteUserResponse = Message<"blueapi.cover.v1.DeleteUserResponse">
223
314
  * Use `create(DeleteUserResponseSchema)` to create a new message.
224
315
  */
225
316
  export const DeleteUserResponseSchema: GenMessage<DeleteUserResponse> = /*@__PURE__*/
226
- messageDesc(file_cover_v1_cover, 7);
317
+ messageDesc(file_cover_v1_cover, 11);
227
318
 
228
319
  /**
229
320
  * @generated from message blueapi.cover.v1.InviteUsersRequest
@@ -250,12 +341,16 @@ export type InviteUsersRequest = Message<"blueapi.cover.v1.InviteUsersRequest">
250
341
  * Use `create(InviteUsersRequestSchema)` to create a new message.
251
342
  */
252
343
  export const InviteUsersRequestSchema: GenMessage<InviteUsersRequest> = /*@__PURE__*/
253
- messageDesc(file_cover_v1_cover, 8);
344
+ messageDesc(file_cover_v1_cover, 12);
254
345
 
255
346
  /**
256
347
  * @generated from message blueapi.cover.v1.InviteUsersResponse
257
348
  */
258
349
  export type InviteUsersResponse = Message<"blueapi.cover.v1.InviteUsersResponse"> & {
350
+ /**
351
+ * @generated from field: repeated blueapi.api.cover.User users = 1;
352
+ */
353
+ users: User[];
259
354
  };
260
355
 
261
356
  /**
@@ -263,7 +358,7 @@ export type InviteUsersResponse = Message<"blueapi.cover.v1.InviteUsersResponse"
263
358
  * Use `create(InviteUsersResponseSchema)` to create a new message.
264
359
  */
265
360
  export const InviteUsersResponseSchema: GenMessage<InviteUsersResponse> = /*@__PURE__*/
266
- messageDesc(file_cover_v1_cover, 9);
361
+ messageDesc(file_cover_v1_cover, 13);
267
362
 
268
363
  /**
269
364
  * @generated from message blueapi.cover.v1.ExecuteRecommendationV3Request
@@ -285,7 +380,7 @@ export type ExecuteRecommendationV3Request = Message<"blueapi.cover.v1.ExecuteRe
285
380
  * Use `create(ExecuteRecommendationV3RequestSchema)` to create a new message.
286
381
  */
287
382
  export const ExecuteRecommendationV3RequestSchema: GenMessage<ExecuteRecommendationV3Request> = /*@__PURE__*/
288
- messageDesc(file_cover_v1_cover, 10);
383
+ messageDesc(file_cover_v1_cover, 14);
289
384
 
290
385
  /**
291
386
  * @generated from enum blueapi.cover.v1.ExecuteRecommendationV3Request.ExecuteType
@@ -321,7 +416,7 @@ export enum ExecuteRecommendationV3Request_ExecuteType {
321
416
  * Describes the enum blueapi.cover.v1.ExecuteRecommendationV3Request.ExecuteType.
322
417
  */
323
418
  export const ExecuteRecommendationV3Request_ExecuteTypeSchema: GenEnum<ExecuteRecommendationV3Request_ExecuteType> = /*@__PURE__*/
324
- enumDesc(file_cover_v1_cover, 10, 0);
419
+ enumDesc(file_cover_v1_cover, 14, 0);
325
420
 
326
421
  /**
327
422
  * @generated from message blueapi.cover.v1.ExecuteRecommendationV3Response
@@ -338,7 +433,7 @@ export type ExecuteRecommendationV3Response = Message<"blueapi.cover.v1.ExecuteR
338
433
  * Use `create(ExecuteRecommendationV3ResponseSchema)` to create a new message.
339
434
  */
340
435
  export const ExecuteRecommendationV3ResponseSchema: GenMessage<ExecuteRecommendationV3Response> = /*@__PURE__*/
341
- messageDesc(file_cover_v1_cover, 11);
436
+ messageDesc(file_cover_v1_cover, 15);
342
437
 
343
438
  /**
344
439
  * @generated from message blueapi.cover.v1.ListRecommendationsV3Request
@@ -365,7 +460,7 @@ export type ListRecommendationsV3Request = Message<"blueapi.cover.v1.ListRecomme
365
460
  * Use `create(ListRecommendationsV3RequestSchema)` to create a new message.
366
461
  */
367
462
  export const ListRecommendationsV3RequestSchema: GenMessage<ListRecommendationsV3Request> = /*@__PURE__*/
368
- messageDesc(file_cover_v1_cover, 12);
463
+ messageDesc(file_cover_v1_cover, 16);
369
464
 
370
465
  /**
371
466
  * @generated from message blueapi.cover.v1.RecommendationSummary
@@ -472,7 +567,7 @@ export type RecommendationSummary = Message<"blueapi.cover.v1.RecommendationSumm
472
567
  * Use `create(RecommendationSummarySchema)` to create a new message.
473
568
  */
474
569
  export const RecommendationSummarySchema: GenMessage<RecommendationSummary> = /*@__PURE__*/
475
- messageDesc(file_cover_v1_cover, 13);
570
+ messageDesc(file_cover_v1_cover, 17);
476
571
 
477
572
  /**
478
573
  * @generated from message blueapi.cover.v1.GetRecommendationV3Request
@@ -489,7 +584,7 @@ export type GetRecommendationV3Request = Message<"blueapi.cover.v1.GetRecommenda
489
584
  * Use `create(GetRecommendationV3RequestSchema)` to create a new message.
490
585
  */
491
586
  export const GetRecommendationV3RequestSchema: GenMessage<GetRecommendationV3Request> = /*@__PURE__*/
492
- messageDesc(file_cover_v1_cover, 14);
587
+ messageDesc(file_cover_v1_cover, 18);
493
588
 
494
589
  /**
495
590
  * @generated from message blueapi.cover.v1.GetRecommendationV3Response
@@ -506,7 +601,7 @@ export type GetRecommendationV3Response = Message<"blueapi.cover.v1.GetRecommend
506
601
  * Use `create(GetRecommendationV3ResponseSchema)` to create a new message.
507
602
  */
508
603
  export const GetRecommendationV3ResponseSchema: GenMessage<GetRecommendationV3Response> = /*@__PURE__*/
509
- messageDesc(file_cover_v1_cover, 15);
604
+ messageDesc(file_cover_v1_cover, 19);
510
605
 
511
606
  /**
512
607
  * @generated from message blueapi.cover.v1.GetRecommendationV3Response.RecommendationDetail
@@ -623,7 +718,7 @@ export type GetRecommendationV3Response_RecommendationDetail = Message<"blueapi.
623
718
  * Use `create(GetRecommendationV3Response_RecommendationDetailSchema)` to create a new message.
624
719
  */
625
720
  export const GetRecommendationV3Response_RecommendationDetailSchema: GenMessage<GetRecommendationV3Response_RecommendationDetail> = /*@__PURE__*/
626
- messageDesc(file_cover_v1_cover, 15, 0);
721
+ messageDesc(file_cover_v1_cover, 19, 0);
627
722
 
628
723
  /**
629
724
  * @generated from message blueapi.cover.v1.GetCostForecastsDataRequest
@@ -661,7 +756,7 @@ export type GetCostForecastsDataRequest = Message<"blueapi.cover.v1.GetCostForec
661
756
  * Use `create(GetCostForecastsDataRequestSchema)` to create a new message.
662
757
  */
663
758
  export const GetCostForecastsDataRequestSchema: GenMessage<GetCostForecastsDataRequest> = /*@__PURE__*/
664
- messageDesc(file_cover_v1_cover, 16);
759
+ messageDesc(file_cover_v1_cover, 20);
665
760
 
666
761
  /**
667
762
  * @generated from enum blueapi.cover.v1.GetCostForecastsDataRequest.Granularity
@@ -687,7 +782,7 @@ export enum GetCostForecastsDataRequest_Granularity {
687
782
  * Describes the enum blueapi.cover.v1.GetCostForecastsDataRequest.Granularity.
688
783
  */
689
784
  export const GetCostForecastsDataRequest_GranularitySchema: GenEnum<GetCostForecastsDataRequest_Granularity> = /*@__PURE__*/
690
- enumDesc(file_cover_v1_cover, 16, 0);
785
+ enumDesc(file_cover_v1_cover, 20, 0);
691
786
 
692
787
  /**
693
788
  * @generated from message blueapi.cover.v1.GetCostForecastsDataResponse
@@ -719,7 +814,7 @@ export type GetCostForecastsDataResponse = Message<"blueapi.cover.v1.GetCostFore
719
814
  * Use `create(GetCostForecastsDataResponseSchema)` to create a new message.
720
815
  */
721
816
  export const GetCostForecastsDataResponseSchema: GenMessage<GetCostForecastsDataResponse> = /*@__PURE__*/
722
- messageDesc(file_cover_v1_cover, 17);
817
+ messageDesc(file_cover_v1_cover, 21);
723
818
 
724
819
  /**
725
820
  * @generated from message blueapi.cover.v1.ListForecastsRequest
@@ -732,7 +827,7 @@ export type ListForecastsRequest = Message<"blueapi.cover.v1.ListForecastsReques
732
827
  * Use `create(ListForecastsRequestSchema)` to create a new message.
733
828
  */
734
829
  export const ListForecastsRequestSchema: GenMessage<ListForecastsRequest> = /*@__PURE__*/
735
- messageDesc(file_cover_v1_cover, 18);
830
+ messageDesc(file_cover_v1_cover, 22);
736
831
 
737
832
  /**
738
833
  * @generated from message blueapi.cover.v1.ListForecastsResponse
@@ -749,7 +844,7 @@ export type ListForecastsResponse = Message<"blueapi.cover.v1.ListForecastsRespo
749
844
  * Use `create(ListForecastsResponseSchema)` to create a new message.
750
845
  */
751
846
  export const ListForecastsResponseSchema: GenMessage<ListForecastsResponse> = /*@__PURE__*/
752
- messageDesc(file_cover_v1_cover, 19);
847
+ messageDesc(file_cover_v1_cover, 23);
753
848
 
754
849
  /**
755
850
  * @generated from message blueapi.cover.v1.CreateCostForecastRequest
@@ -803,7 +898,7 @@ export type CreateCostForecastRequest = Message<"blueapi.cover.v1.CreateCostFore
803
898
  * Use `create(CreateCostForecastRequestSchema)` to create a new message.
804
899
  */
805
900
  export const CreateCostForecastRequestSchema: GenMessage<CreateCostForecastRequest> = /*@__PURE__*/
806
- messageDesc(file_cover_v1_cover, 20);
901
+ messageDesc(file_cover_v1_cover, 24);
807
902
 
808
903
  /**
809
904
  * @generated from message blueapi.cover.v1.CreateCostForecastResponse
@@ -850,7 +945,7 @@ export type CreateCostForecastResponse = Message<"blueapi.cover.v1.CreateCostFor
850
945
  * Use `create(CreateCostForecastResponseSchema)` to create a new message.
851
946
  */
852
947
  export const CreateCostForecastResponseSchema: GenMessage<CreateCostForecastResponse> = /*@__PURE__*/
853
- messageDesc(file_cover_v1_cover, 21);
948
+ messageDesc(file_cover_v1_cover, 25);
854
949
 
855
950
  /**
856
951
  * @generated from message blueapi.cover.v1.GetCostForecastRequest
@@ -869,7 +964,7 @@ export type GetCostForecastRequest = Message<"blueapi.cover.v1.GetCostForecastRe
869
964
  * Use `create(GetCostForecastRequestSchema)` to create a new message.
870
965
  */
871
966
  export const GetCostForecastRequestSchema: GenMessage<GetCostForecastRequest> = /*@__PURE__*/
872
- messageDesc(file_cover_v1_cover, 22);
967
+ messageDesc(file_cover_v1_cover, 26);
873
968
 
874
969
  /**
875
970
  * @generated from message blueapi.cover.v1.GetCostForecastResponse
@@ -931,7 +1026,7 @@ export type GetCostForecastResponse = Message<"blueapi.cover.v1.GetCostForecastR
931
1026
  * Use `create(GetCostForecastResponseSchema)` to create a new message.
932
1027
  */
933
1028
  export const GetCostForecastResponseSchema: GenMessage<GetCostForecastResponse> = /*@__PURE__*/
934
- messageDesc(file_cover_v1_cover, 23);
1029
+ messageDesc(file_cover_v1_cover, 27);
935
1030
 
936
1031
  /**
937
1032
  * @generated from message blueapi.cover.v1.UpdateCostForecastRequest
@@ -992,7 +1087,7 @@ export type UpdateCostForecastRequest = Message<"blueapi.cover.v1.UpdateCostFore
992
1087
  * Use `create(UpdateCostForecastRequestSchema)` to create a new message.
993
1088
  */
994
1089
  export const UpdateCostForecastRequestSchema: GenMessage<UpdateCostForecastRequest> = /*@__PURE__*/
995
- messageDesc(file_cover_v1_cover, 24);
1090
+ messageDesc(file_cover_v1_cover, 28);
996
1091
 
997
1092
  /**
998
1093
  * @generated from message blueapi.cover.v1.UpdateCostForecastResponse
@@ -1054,7 +1149,7 @@ export type UpdateCostForecastResponse = Message<"blueapi.cover.v1.UpdateCostFor
1054
1149
  * Use `create(UpdateCostForecastResponseSchema)` to create a new message.
1055
1150
  */
1056
1151
  export const UpdateCostForecastResponseSchema: GenMessage<UpdateCostForecastResponse> = /*@__PURE__*/
1057
- messageDesc(file_cover_v1_cover, 25);
1152
+ messageDesc(file_cover_v1_cover, 29);
1058
1153
 
1059
1154
  /**
1060
1155
  * @generated from message blueapi.cover.v1.DeleteCostForecastRequest
@@ -1073,7 +1168,7 @@ export type DeleteCostForecastRequest = Message<"blueapi.cover.v1.DeleteCostFore
1073
1168
  * Use `create(DeleteCostForecastRequestSchema)` to create a new message.
1074
1169
  */
1075
1170
  export const DeleteCostForecastRequestSchema: GenMessage<DeleteCostForecastRequest> = /*@__PURE__*/
1076
- messageDesc(file_cover_v1_cover, 26);
1171
+ messageDesc(file_cover_v1_cover, 30);
1077
1172
 
1078
1173
  /**
1079
1174
  * @generated from message blueapi.cover.v1.DeleteCostForecastResponse
@@ -1090,7 +1185,7 @@ export type DeleteCostForecastResponse = Message<"blueapi.cover.v1.DeleteCostFor
1090
1185
  * Use `create(DeleteCostForecastResponseSchema)` to create a new message.
1091
1186
  */
1092
1187
  export const DeleteCostForecastResponseSchema: GenMessage<DeleteCostForecastResponse> = /*@__PURE__*/
1093
- messageDesc(file_cover_v1_cover, 27);
1188
+ messageDesc(file_cover_v1_cover, 31);
1094
1189
 
1095
1190
  /**
1096
1191
  * @generated from message blueapi.cover.v1.GetCostUsageV2Response
@@ -1122,7 +1217,7 @@ export type GetCostUsageV2Response = Message<"blueapi.cover.v1.GetCostUsageV2Res
1122
1217
  * Use `create(GetCostUsageV2ResponseSchema)` to create a new message.
1123
1218
  */
1124
1219
  export const GetCostUsageV2ResponseSchema: GenMessage<GetCostUsageV2Response> = /*@__PURE__*/
1125
- messageDesc(file_cover_v1_cover, 28);
1220
+ messageDesc(file_cover_v1_cover, 32);
1126
1221
 
1127
1222
  /**
1128
1223
  * @generated from message blueapi.cover.v1.GetCostUsageV2Request
@@ -1184,7 +1279,7 @@ export type GetCostUsageV2Request = Message<"blueapi.cover.v1.GetCostUsageV2Requ
1184
1279
  * Use `create(GetCostUsageV2RequestSchema)` to create a new message.
1185
1280
  */
1186
1281
  export const GetCostUsageV2RequestSchema: GenMessage<GetCostUsageV2Request> = /*@__PURE__*/
1187
- messageDesc(file_cover_v1_cover, 29);
1282
+ messageDesc(file_cover_v1_cover, 33);
1188
1283
 
1189
1284
  /**
1190
1285
  * @generated from enum blueapi.cover.v1.GetCostUsageV2Request.Granularity
@@ -1210,7 +1305,7 @@ export enum GetCostUsageV2Request_Granularity {
1210
1305
  * Describes the enum blueapi.cover.v1.GetCostUsageV2Request.Granularity.
1211
1306
  */
1212
1307
  export const GetCostUsageV2Request_GranularitySchema: GenEnum<GetCostUsageV2Request_Granularity> = /*@__PURE__*/
1213
- enumDesc(file_cover_v1_cover, 29, 0);
1308
+ enumDesc(file_cover_v1_cover, 33, 0);
1214
1309
 
1215
1310
  /**
1216
1311
  * @generated from enum blueapi.cover.v1.GetCostUsageV2Request.Category
@@ -1236,7 +1331,7 @@ export enum GetCostUsageV2Request_Category {
1236
1331
  * Describes the enum blueapi.cover.v1.GetCostUsageV2Request.Category.
1237
1332
  */
1238
1333
  export const GetCostUsageV2Request_CategorySchema: GenEnum<GetCostUsageV2Request_Category> = /*@__PURE__*/
1239
- enumDesc(file_cover_v1_cover, 29, 1);
1334
+ enumDesc(file_cover_v1_cover, 33, 1);
1240
1335
 
1241
1336
  /**
1242
1337
  * @generated from message blueapi.cover.v1.PopulateDemoDataRequest
@@ -1249,7 +1344,7 @@ export type PopulateDemoDataRequest = Message<"blueapi.cover.v1.PopulateDemoData
1249
1344
  * Use `create(PopulateDemoDataRequestSchema)` to create a new message.
1250
1345
  */
1251
1346
  export const PopulateDemoDataRequestSchema: GenMessage<PopulateDemoDataRequest> = /*@__PURE__*/
1252
- messageDesc(file_cover_v1_cover, 30);
1347
+ messageDesc(file_cover_v1_cover, 34);
1253
1348
 
1254
1349
  /**
1255
1350
  * @generated from message blueapi.cover.v1.PopulateDemoDataResponse
@@ -1262,7 +1357,7 @@ export type PopulateDemoDataResponse = Message<"blueapi.cover.v1.PopulateDemoDat
1262
1357
  * Use `create(PopulateDemoDataResponseSchema)` to create a new message.
1263
1358
  */
1264
1359
  export const PopulateDemoDataResponseSchema: GenMessage<PopulateDemoDataResponse> = /*@__PURE__*/
1265
- messageDesc(file_cover_v1_cover, 31);
1360
+ messageDesc(file_cover_v1_cover, 35);
1266
1361
 
1267
1362
  /**
1268
1363
  * @generated from message blueapi.cover.v1.ResetDemoDataRequest
@@ -1275,7 +1370,7 @@ export type ResetDemoDataRequest = Message<"blueapi.cover.v1.ResetDemoDataReques
1275
1370
  * Use `create(ResetDemoDataRequestSchema)` to create a new message.
1276
1371
  */
1277
1372
  export const ResetDemoDataRequestSchema: GenMessage<ResetDemoDataRequest> = /*@__PURE__*/
1278
- messageDesc(file_cover_v1_cover, 32);
1373
+ messageDesc(file_cover_v1_cover, 36);
1279
1374
 
1280
1375
  /**
1281
1376
  * @generated from message blueapi.cover.v1.ResetDemoDataResponse
@@ -1288,7 +1383,7 @@ export type ResetDemoDataResponse = Message<"blueapi.cover.v1.ResetDemoDataRespo
1288
1383
  * Use `create(ResetDemoDataResponseSchema)` to create a new message.
1289
1384
  */
1290
1385
  export const ResetDemoDataResponseSchema: GenMessage<ResetDemoDataResponse> = /*@__PURE__*/
1291
- messageDesc(file_cover_v1_cover, 33);
1386
+ messageDesc(file_cover_v1_cover, 37);
1292
1387
 
1293
1388
  /**
1294
1389
  * @generated from message blueapi.cover.v1.ContainerCostUsageRequest
@@ -1345,7 +1440,7 @@ export type ContainerCostUsageRequest = Message<"blueapi.cover.v1.ContainerCostU
1345
1440
  * Use `create(ContainerCostUsageRequestSchema)` to create a new message.
1346
1441
  */
1347
1442
  export const ContainerCostUsageRequestSchema: GenMessage<ContainerCostUsageRequest> = /*@__PURE__*/
1348
- messageDesc(file_cover_v1_cover, 34);
1443
+ messageDesc(file_cover_v1_cover, 38);
1349
1444
 
1350
1445
  /**
1351
1446
  * @generated from message blueapi.cover.v1.ContainerCostUsageRequest.FilterCriteria
@@ -1372,7 +1467,7 @@ export type ContainerCostUsageRequest_FilterCriteria = Message<"blueapi.cover.v1
1372
1467
  * Use `create(ContainerCostUsageRequest_FilterCriteriaSchema)` to create a new message.
1373
1468
  */
1374
1469
  export const ContainerCostUsageRequest_FilterCriteriaSchema: GenMessage<ContainerCostUsageRequest_FilterCriteria> = /*@__PURE__*/
1375
- messageDesc(file_cover_v1_cover, 34, 0);
1470
+ messageDesc(file_cover_v1_cover, 38, 0);
1376
1471
 
1377
1472
  /**
1378
1473
  * @generated from enum blueapi.cover.v1.ContainerCostUsageRequest.FilterCriteria.FilterOperator
@@ -1398,7 +1493,7 @@ export enum ContainerCostUsageRequest_FilterCriteria_FilterOperator {
1398
1493
  * Describes the enum blueapi.cover.v1.ContainerCostUsageRequest.FilterCriteria.FilterOperator.
1399
1494
  */
1400
1495
  export const ContainerCostUsageRequest_FilterCriteria_FilterOperatorSchema: GenEnum<ContainerCostUsageRequest_FilterCriteria_FilterOperator> = /*@__PURE__*/
1401
- enumDesc(file_cover_v1_cover, 34, 0, 0);
1496
+ enumDesc(file_cover_v1_cover, 38, 0, 0);
1402
1497
 
1403
1498
  /**
1404
1499
  * @generated from enum blueapi.cover.v1.ContainerCostUsageRequest.TimeGranularity
@@ -1424,7 +1519,7 @@ export enum ContainerCostUsageRequest_TimeGranularity {
1424
1519
  * Describes the enum blueapi.cover.v1.ContainerCostUsageRequest.TimeGranularity.
1425
1520
  */
1426
1521
  export const ContainerCostUsageRequest_TimeGranularitySchema: GenEnum<ContainerCostUsageRequest_TimeGranularity> = /*@__PURE__*/
1427
- enumDesc(file_cover_v1_cover, 34, 0);
1522
+ enumDesc(file_cover_v1_cover, 38, 0);
1428
1523
 
1429
1524
  /**
1430
1525
  * @generated from enum blueapi.cover.v1.ContainerCostUsageRequest.MetricType
@@ -1460,7 +1555,7 @@ export enum ContainerCostUsageRequest_MetricType {
1460
1555
  * Describes the enum blueapi.cover.v1.ContainerCostUsageRequest.MetricType.
1461
1556
  */
1462
1557
  export const ContainerCostUsageRequest_MetricTypeSchema: GenEnum<ContainerCostUsageRequest_MetricType> = /*@__PURE__*/
1463
- enumDesc(file_cover_v1_cover, 34, 1);
1558
+ enumDesc(file_cover_v1_cover, 38, 1);
1464
1559
 
1465
1560
  /**
1466
1561
  * @generated from enum blueapi.cover.v1.ContainerCostUsageRequest.ServiceType
@@ -1486,7 +1581,7 @@ export enum ContainerCostUsageRequest_ServiceType {
1486
1581
  * Describes the enum blueapi.cover.v1.ContainerCostUsageRequest.ServiceType.
1487
1582
  */
1488
1583
  export const ContainerCostUsageRequest_ServiceTypeSchema: GenEnum<ContainerCostUsageRequest_ServiceType> = /*@__PURE__*/
1489
- enumDesc(file_cover_v1_cover, 34, 2);
1584
+ enumDesc(file_cover_v1_cover, 38, 2);
1490
1585
 
1491
1586
  /**
1492
1587
  * @generated from message blueapi.cover.v1.ContainerCostUsageResponse
@@ -1518,7 +1613,7 @@ export type ContainerCostUsageResponse = Message<"blueapi.cover.v1.ContainerCost
1518
1613
  * Use `create(ContainerCostUsageResponseSchema)` to create a new message.
1519
1614
  */
1520
1615
  export const ContainerCostUsageResponseSchema: GenMessage<ContainerCostUsageResponse> = /*@__PURE__*/
1521
- messageDesc(file_cover_v1_cover, 35);
1616
+ messageDesc(file_cover_v1_cover, 39);
1522
1617
 
1523
1618
  /**
1524
1619
  * @generated from message blueapi.cover.v1.ContainerCostUsageResponse.CostMetric
@@ -1545,7 +1640,7 @@ export type ContainerCostUsageResponse_CostMetric = Message<"blueapi.cover.v1.Co
1545
1640
  * Use `create(ContainerCostUsageResponse_CostMetricSchema)` to create a new message.
1546
1641
  */
1547
1642
  export const ContainerCostUsageResponse_CostMetricSchema: GenMessage<ContainerCostUsageResponse_CostMetric> = /*@__PURE__*/
1548
- messageDesc(file_cover_v1_cover, 35, 0);
1643
+ messageDesc(file_cover_v1_cover, 39, 0);
1549
1644
 
1550
1645
  /**
1551
1646
  * @generated from message blueapi.cover.v1.ContainerCostUsageResponse.UsageMetric
@@ -1587,7 +1682,7 @@ export type ContainerCostUsageResponse_UsageMetric = Message<"blueapi.cover.v1.C
1587
1682
  * Use `create(ContainerCostUsageResponse_UsageMetricSchema)` to create a new message.
1588
1683
  */
1589
1684
  export const ContainerCostUsageResponse_UsageMetricSchema: GenMessage<ContainerCostUsageResponse_UsageMetric> = /*@__PURE__*/
1590
- messageDesc(file_cover_v1_cover, 35, 1);
1685
+ messageDesc(file_cover_v1_cover, 39, 1);
1591
1686
 
1592
1687
  /**
1593
1688
  * @generated from message blueapi.cover.v1.ContainerCostUsageResponse.MetricDataPoint
@@ -1621,7 +1716,7 @@ export type ContainerCostUsageResponse_MetricDataPoint = Message<"blueapi.cover.
1621
1716
  * Use `create(ContainerCostUsageResponse_MetricDataPointSchema)` to create a new message.
1622
1717
  */
1623
1718
  export const ContainerCostUsageResponse_MetricDataPointSchema: GenMessage<ContainerCostUsageResponse_MetricDataPoint> = /*@__PURE__*/
1624
- messageDesc(file_cover_v1_cover, 35, 2);
1719
+ messageDesc(file_cover_v1_cover, 39, 2);
1625
1720
 
1626
1721
  /**
1627
1722
  * @generated from message blueapi.cover.v1.ContainerCostUsageResponse.ResourceHighlight
@@ -1648,7 +1743,7 @@ export type ContainerCostUsageResponse_ResourceHighlight = Message<"blueapi.cove
1648
1743
  * Use `create(ContainerCostUsageResponse_ResourceHighlightSchema)` to create a new message.
1649
1744
  */
1650
1745
  export const ContainerCostUsageResponse_ResourceHighlightSchema: GenMessage<ContainerCostUsageResponse_ResourceHighlight> = /*@__PURE__*/
1651
- messageDesc(file_cover_v1_cover, 35, 3);
1746
+ messageDesc(file_cover_v1_cover, 39, 3);
1652
1747
 
1653
1748
  /**
1654
1749
  * @generated from message blueapi.cover.v1.ContainerCostUsageResponse.ResourceHighlights
@@ -1680,7 +1775,7 @@ export type ContainerCostUsageResponse_ResourceHighlights = Message<"blueapi.cov
1680
1775
  * Use `create(ContainerCostUsageResponse_ResourceHighlightsSchema)` to create a new message.
1681
1776
  */
1682
1777
  export const ContainerCostUsageResponse_ResourceHighlightsSchema: GenMessage<ContainerCostUsageResponse_ResourceHighlights> = /*@__PURE__*/
1683
- messageDesc(file_cover_v1_cover, 35, 4);
1778
+ messageDesc(file_cover_v1_cover, 39, 4);
1684
1779
 
1685
1780
  /**
1686
1781
  * @generated from message blueapi.cover.v1.ContainerCostUsageResponse.GroupedResult
@@ -1702,7 +1797,7 @@ export type ContainerCostUsageResponse_GroupedResult = Message<"blueapi.cover.v1
1702
1797
  * Use `create(ContainerCostUsageResponse_GroupedResultSchema)` to create a new message.
1703
1798
  */
1704
1799
  export const ContainerCostUsageResponse_GroupedResultSchema: GenMessage<ContainerCostUsageResponse_GroupedResult> = /*@__PURE__*/
1705
- messageDesc(file_cover_v1_cover, 35, 5);
1800
+ messageDesc(file_cover_v1_cover, 39, 5);
1706
1801
 
1707
1802
  /**
1708
1803
  * @generated from message blueapi.cover.v1.GetAICostAndUsageRequest
@@ -1749,7 +1844,7 @@ export type GetAICostAndUsageRequest = Message<"blueapi.cover.v1.GetAICostAndUsa
1749
1844
  * Use `create(GetAICostAndUsageRequestSchema)` to create a new message.
1750
1845
  */
1751
1846
  export const GetAICostAndUsageRequestSchema: GenMessage<GetAICostAndUsageRequest> = /*@__PURE__*/
1752
- messageDesc(file_cover_v1_cover, 36);
1847
+ messageDesc(file_cover_v1_cover, 40);
1753
1848
 
1754
1849
  /**
1755
1850
  * @generated from message blueapi.cover.v1.GetAICostAndUsageRequest.Filter
@@ -1784,7 +1879,7 @@ export type GetAICostAndUsageRequest_Filter = Message<"blueapi.cover.v1.GetAICos
1784
1879
  * Use `create(GetAICostAndUsageRequest_FilterSchema)` to create a new message.
1785
1880
  */
1786
1881
  export const GetAICostAndUsageRequest_FilterSchema: GenMessage<GetAICostAndUsageRequest_Filter> = /*@__PURE__*/
1787
- messageDesc(file_cover_v1_cover, 36, 0);
1882
+ messageDesc(file_cover_v1_cover, 40, 0);
1788
1883
 
1789
1884
  /**
1790
1885
  * @generated from enum blueapi.cover.v1.GetAICostAndUsageRequest.Filter.Operator
@@ -1810,7 +1905,7 @@ export enum GetAICostAndUsageRequest_Filter_Operator {
1810
1905
  * Describes the enum blueapi.cover.v1.GetAICostAndUsageRequest.Filter.Operator.
1811
1906
  */
1812
1907
  export const GetAICostAndUsageRequest_Filter_OperatorSchema: GenEnum<GetAICostAndUsageRequest_Filter_Operator> = /*@__PURE__*/
1813
- enumDesc(file_cover_v1_cover, 36, 0, 0);
1908
+ enumDesc(file_cover_v1_cover, 40, 0, 0);
1814
1909
 
1815
1910
  /**
1816
1911
  * @generated from enum blueapi.cover.v1.GetAICostAndUsageRequest.Granularity
@@ -1836,7 +1931,7 @@ export enum GetAICostAndUsageRequest_Granularity {
1836
1931
  * Describes the enum blueapi.cover.v1.GetAICostAndUsageRequest.Granularity.
1837
1932
  */
1838
1933
  export const GetAICostAndUsageRequest_GranularitySchema: GenEnum<GetAICostAndUsageRequest_Granularity> = /*@__PURE__*/
1839
- enumDesc(file_cover_v1_cover, 36, 0);
1934
+ enumDesc(file_cover_v1_cover, 40, 0);
1840
1935
 
1841
1936
  /**
1842
1937
  * @generated from message blueapi.cover.v1.GetAICostAndUsageResponse
@@ -1853,7 +1948,7 @@ export type GetAICostAndUsageResponse = Message<"blueapi.cover.v1.GetAICostAndUs
1853
1948
  * Use `create(GetAICostAndUsageResponseSchema)` to create a new message.
1854
1949
  */
1855
1950
  export const GetAICostAndUsageResponseSchema: GenMessage<GetAICostAndUsageResponse> = /*@__PURE__*/
1856
- messageDesc(file_cover_v1_cover, 37);
1951
+ messageDesc(file_cover_v1_cover, 41);
1857
1952
 
1858
1953
  /**
1859
1954
  * @generated from message blueapi.cover.v1.GetAICostAndUsageResponse.Cost
@@ -1875,7 +1970,7 @@ export type GetAICostAndUsageResponse_Cost = Message<"blueapi.cover.v1.GetAICost
1875
1970
  * Use `create(GetAICostAndUsageResponse_CostSchema)` to create a new message.
1876
1971
  */
1877
1972
  export const GetAICostAndUsageResponse_CostSchema: GenMessage<GetAICostAndUsageResponse_Cost> = /*@__PURE__*/
1878
- messageDesc(file_cover_v1_cover, 37, 0);
1973
+ messageDesc(file_cover_v1_cover, 41, 0);
1879
1974
 
1880
1975
  /**
1881
1976
  * @generated from message blueapi.cover.v1.GetAICostAndUsageResponse.Usage
@@ -1897,7 +1992,7 @@ export type GetAICostAndUsageResponse_Usage = Message<"blueapi.cover.v1.GetAICos
1897
1992
  * Use `create(GetAICostAndUsageResponse_UsageSchema)` to create a new message.
1898
1993
  */
1899
1994
  export const GetAICostAndUsageResponse_UsageSchema: GenMessage<GetAICostAndUsageResponse_Usage> = /*@__PURE__*/
1900
- messageDesc(file_cover_v1_cover, 37, 1);
1995
+ messageDesc(file_cover_v1_cover, 41, 1);
1901
1996
 
1902
1997
  /**
1903
1998
  * @generated from message blueapi.cover.v1.GetAICostAndUsageResponse.Metric
@@ -1924,7 +2019,7 @@ export type GetAICostAndUsageResponse_Metric = Message<"blueapi.cover.v1.GetAICo
1924
2019
  * Use `create(GetAICostAndUsageResponse_MetricSchema)` to create a new message.
1925
2020
  */
1926
2021
  export const GetAICostAndUsageResponse_MetricSchema: GenMessage<GetAICostAndUsageResponse_Metric> = /*@__PURE__*/
1927
- messageDesc(file_cover_v1_cover, 37, 2);
2022
+ messageDesc(file_cover_v1_cover, 41, 2);
1928
2023
 
1929
2024
  /**
1930
2025
  * @generated from message blueapi.cover.v1.GetAICostAndUsageResponse.Result
@@ -1946,7 +2041,7 @@ export type GetAICostAndUsageResponse_Result = Message<"blueapi.cover.v1.GetAICo
1946
2041
  * Use `create(GetAICostAndUsageResponse_ResultSchema)` to create a new message.
1947
2042
  */
1948
2043
  export const GetAICostAndUsageResponse_ResultSchema: GenMessage<GetAICostAndUsageResponse_Result> = /*@__PURE__*/
1949
- messageDesc(file_cover_v1_cover, 37, 3);
2044
+ messageDesc(file_cover_v1_cover, 41, 3);
1950
2045
 
1951
2046
  /**
1952
2047
  * @generated from message blueapi.cover.v1.GetExecutionStatusRequest
@@ -1959,7 +2054,7 @@ export type GetExecutionStatusRequest = Message<"blueapi.cover.v1.GetExecutionSt
1959
2054
  * Use `create(GetExecutionStatusRequestSchema)` to create a new message.
1960
2055
  */
1961
2056
  export const GetExecutionStatusRequestSchema: GenMessage<GetExecutionStatusRequest> = /*@__PURE__*/
1962
- messageDesc(file_cover_v1_cover, 38);
2057
+ messageDesc(file_cover_v1_cover, 42);
1963
2058
 
1964
2059
  /**
1965
2060
  * @generated from message blueapi.cover.v1.GetExecutionStatusResponse
@@ -1986,7 +2081,7 @@ export type GetExecutionStatusResponse = Message<"blueapi.cover.v1.GetExecutionS
1986
2081
  * Use `create(GetExecutionStatusResponseSchema)` to create a new message.
1987
2082
  */
1988
2083
  export const GetExecutionStatusResponseSchema: GenMessage<GetExecutionStatusResponse> = /*@__PURE__*/
1989
- messageDesc(file_cover_v1_cover, 39);
2084
+ messageDesc(file_cover_v1_cover, 43);
1990
2085
 
1991
2086
  /**
1992
2087
  * Only supports gcp for now.
@@ -2014,7 +2109,7 @@ export type VerifyAPIAccessRequest = Message<"blueapi.cover.v1.VerifyAPIAccessRe
2014
2109
  * Use `create(VerifyAPIAccessRequestSchema)` to create a new message.
2015
2110
  */
2016
2111
  export const VerifyAPIAccessRequestSchema: GenMessage<VerifyAPIAccessRequest> = /*@__PURE__*/
2017
- messageDesc(file_cover_v1_cover, 40);
2112
+ messageDesc(file_cover_v1_cover, 44);
2018
2113
 
2019
2114
  /**
2020
2115
  * @generated from message blueapi.cover.v1.VerifyAPIAccessResponse
@@ -2031,7 +2126,7 @@ export type VerifyAPIAccessResponse = Message<"blueapi.cover.v1.VerifyAPIAccessR
2031
2126
  * Use `create(VerifyAPIAccessResponseSchema)` to create a new message.
2032
2127
  */
2033
2128
  export const VerifyAPIAccessResponseSchema: GenMessage<VerifyAPIAccessResponse> = /*@__PURE__*/
2034
- messageDesc(file_cover_v1_cover, 41);
2129
+ messageDesc(file_cover_v1_cover, 45);
2035
2130
 
2036
2131
  /**
2037
2132
  * @generated from message blueapi.cover.v1.GetRecommendationV2Request
@@ -2063,7 +2158,7 @@ export type GetRecommendationV2Request = Message<"blueapi.cover.v1.GetRecommenda
2063
2158
  * Use `create(GetRecommendationV2RequestSchema)` to create a new message.
2064
2159
  */
2065
2160
  export const GetRecommendationV2RequestSchema: GenMessage<GetRecommendationV2Request> = /*@__PURE__*/
2066
- messageDesc(file_cover_v1_cover, 42);
2161
+ messageDesc(file_cover_v1_cover, 46);
2067
2162
 
2068
2163
  /**
2069
2164
  * @generated from message blueapi.cover.v1.GetRecommendationV2Response
@@ -2080,7 +2175,7 @@ export type GetRecommendationV2Response = Message<"blueapi.cover.v1.GetRecommend
2080
2175
  * Use `create(GetRecommendationV2ResponseSchema)` to create a new message.
2081
2176
  */
2082
2177
  export const GetRecommendationV2ResponseSchema: GenMessage<GetRecommendationV2Response> = /*@__PURE__*/
2083
- messageDesc(file_cover_v1_cover, 43);
2178
+ messageDesc(file_cover_v1_cover, 47);
2084
2179
 
2085
2180
  /**
2086
2181
  * Request message for OnboardOrg
@@ -2114,7 +2209,7 @@ export type OnboardOrgRequest = Message<"blueapi.cover.v1.OnboardOrgRequest"> &
2114
2209
  * Use `create(OnboardOrgRequestSchema)` to create a new message.
2115
2210
  */
2116
2211
  export const OnboardOrgRequestSchema: GenMessage<OnboardOrgRequest> = /*@__PURE__*/
2117
- messageDesc(file_cover_v1_cover, 44);
2212
+ messageDesc(file_cover_v1_cover, 48);
2118
2213
 
2119
2214
  /**
2120
2215
  * Response message for OnboardOrg
@@ -2133,7 +2228,7 @@ export type OnboardOrgResponse = Message<"blueapi.cover.v1.OnboardOrgResponse">
2133
2228
  * Use `create(OnboardOrgResponseSchema)` to create a new message.
2134
2229
  */
2135
2230
  export const OnboardOrgResponseSchema: GenMessage<OnboardOrgResponse> = /*@__PURE__*/
2136
- messageDesc(file_cover_v1_cover, 45);
2231
+ messageDesc(file_cover_v1_cover, 49);
2137
2232
 
2138
2233
  /**
2139
2234
  * Request message for InviteMember
@@ -2162,7 +2257,7 @@ export type InviteMemberRequest = Message<"blueapi.cover.v1.InviteMemberRequest"
2162
2257
  * Use `create(InviteMemberRequestSchema)` to create a new message.
2163
2258
  */
2164
2259
  export const InviteMemberRequestSchema: GenMessage<InviteMemberRequest> = /*@__PURE__*/
2165
- messageDesc(file_cover_v1_cover, 46);
2260
+ messageDesc(file_cover_v1_cover, 50);
2166
2261
 
2167
2262
  /**
2168
2263
  * Response message for InviteMember
@@ -2181,7 +2276,7 @@ export type InviteMemberResponse = Message<"blueapi.cover.v1.InviteMemberRespons
2181
2276
  * Use `create(InviteMemberResponseSchema)` to create a new message.
2182
2277
  */
2183
2278
  export const InviteMemberResponseSchema: GenMessage<InviteMemberResponse> = /*@__PURE__*/
2184
- messageDesc(file_cover_v1_cover, 47);
2279
+ messageDesc(file_cover_v1_cover, 51);
2185
2280
 
2186
2281
  /**
2187
2282
  * Request message for ActivateUser
@@ -2239,7 +2334,7 @@ export type ActivateUserRequest = Message<"blueapi.cover.v1.ActivateUserRequest"
2239
2334
  * Use `create(ActivateUserRequestSchema)` to create a new message.
2240
2335
  */
2241
2336
  export const ActivateUserRequestSchema: GenMessage<ActivateUserRequest> = /*@__PURE__*/
2242
- messageDesc(file_cover_v1_cover, 48);
2337
+ messageDesc(file_cover_v1_cover, 52);
2243
2338
 
2244
2339
  /**
2245
2340
  * Response message for ActivateUser
@@ -2258,7 +2353,7 @@ export type ActivateUserResponse = Message<"blueapi.cover.v1.ActivateUserRespons
2258
2353
  * Use `create(ActivateUserResponseSchema)` to create a new message.
2259
2354
  */
2260
2355
  export const ActivateUserResponseSchema: GenMessage<ActivateUserResponse> = /*@__PURE__*/
2261
- messageDesc(file_cover_v1_cover, 49);
2356
+ messageDesc(file_cover_v1_cover, 53);
2262
2357
 
2263
2358
  /**
2264
2359
  * Request message for CreateMember
@@ -2292,7 +2387,7 @@ export type CreateMemberRequest = Message<"blueapi.cover.v1.CreateMemberRequest"
2292
2387
  * Use `create(CreateMemberRequestSchema)` to create a new message.
2293
2388
  */
2294
2389
  export const CreateMemberRequestSchema: GenMessage<CreateMemberRequest> = /*@__PURE__*/
2295
- messageDesc(file_cover_v1_cover, 50);
2390
+ messageDesc(file_cover_v1_cover, 54);
2296
2391
 
2297
2392
  /**
2298
2393
  * Response message for CreateMember
@@ -2311,7 +2406,7 @@ export type CreateMemberResponse = Message<"blueapi.cover.v1.CreateMemberRespons
2311
2406
  * Use `create(CreateMemberResponseSchema)` to create a new message.
2312
2407
  */
2313
2408
  export const CreateMemberResponseSchema: GenMessage<CreateMemberResponse> = /*@__PURE__*/
2314
- messageDesc(file_cover_v1_cover, 51);
2409
+ messageDesc(file_cover_v1_cover, 55);
2315
2410
 
2316
2411
  /**
2317
2412
  * Request message for GetMembers
@@ -2326,7 +2421,7 @@ export type GetMembersRequest = Message<"blueapi.cover.v1.GetMembersRequest"> &
2326
2421
  * Use `create(GetMembersRequestSchema)` to create a new message.
2327
2422
  */
2328
2423
  export const GetMembersRequestSchema: GenMessage<GetMembersRequest> = /*@__PURE__*/
2329
- messageDesc(file_cover_v1_cover, 52);
2424
+ messageDesc(file_cover_v1_cover, 56);
2330
2425
 
2331
2426
  /**
2332
2427
  * Response message for GetMembers
@@ -2345,7 +2440,7 @@ export type GetMembersResponse = Message<"blueapi.cover.v1.GetMembersResponse">
2345
2440
  * Use `create(GetMembersResponseSchema)` to create a new message.
2346
2441
  */
2347
2442
  export const GetMembersResponseSchema: GenMessage<GetMembersResponse> = /*@__PURE__*/
2348
- messageDesc(file_cover_v1_cover, 53);
2443
+ messageDesc(file_cover_v1_cover, 57);
2349
2444
 
2350
2445
  /**
2351
2446
  * Request message for GetMemberDetails
@@ -2366,7 +2461,7 @@ export type GetMemberDetailsRequest = Message<"blueapi.cover.v1.GetMemberDetails
2366
2461
  * Use `create(GetMemberDetailsRequestSchema)` to create a new message.
2367
2462
  */
2368
2463
  export const GetMemberDetailsRequestSchema: GenMessage<GetMemberDetailsRequest> = /*@__PURE__*/
2369
- messageDesc(file_cover_v1_cover, 54);
2464
+ messageDesc(file_cover_v1_cover, 58);
2370
2465
 
2371
2466
  /**
2372
2467
  * Response message for GetMemberDetails
@@ -2385,7 +2480,7 @@ export type GetMemberDetailsResponse = Message<"blueapi.cover.v1.GetMemberDetail
2385
2480
  * Use `create(GetMemberDetailsResponseSchema)` to create a new message.
2386
2481
  */
2387
2482
  export const GetMemberDetailsResponseSchema: GenMessage<GetMemberDetailsResponse> = /*@__PURE__*/
2388
- messageDesc(file_cover_v1_cover, 55);
2483
+ messageDesc(file_cover_v1_cover, 59);
2389
2484
 
2390
2485
  /**
2391
2486
  * Request message for GetMemberCostGroup
@@ -2406,7 +2501,7 @@ export type GetMemberCostGroupRequest = Message<"blueapi.cover.v1.GetMemberCostG
2406
2501
  * Use `create(GetMemberCostGroupRequestSchema)` to create a new message.
2407
2502
  */
2408
2503
  export const GetMemberCostGroupRequestSchema: GenMessage<GetMemberCostGroupRequest> = /*@__PURE__*/
2409
- messageDesc(file_cover_v1_cover, 56);
2504
+ messageDesc(file_cover_v1_cover, 60);
2410
2505
 
2411
2506
  /**
2412
2507
  * Response message for GetMemberCostGroup
@@ -2425,7 +2520,7 @@ export type GetMemberCostGroupResponse = Message<"blueapi.cover.v1.GetMemberCost
2425
2520
  * Use `create(GetMemberCostGroupResponseSchema)` to create a new message.
2426
2521
  */
2427
2522
  export const GetMemberCostGroupResponseSchema: GenMessage<GetMemberCostGroupResponse> = /*@__PURE__*/
2428
- messageDesc(file_cover_v1_cover, 57);
2523
+ messageDesc(file_cover_v1_cover, 61);
2429
2524
 
2430
2525
  /**
2431
2526
  * Request message for UpdateMemberPermission
@@ -2453,7 +2548,7 @@ export type UpdateMemberPermissionRequest = Message<"blueapi.cover.v1.UpdateMemb
2453
2548
  * Use `create(UpdateMemberPermissionRequestSchema)` to create a new message.
2454
2549
  */
2455
2550
  export const UpdateMemberPermissionRequestSchema: GenMessage<UpdateMemberPermissionRequest> = /*@__PURE__*/
2456
- messageDesc(file_cover_v1_cover, 58);
2551
+ messageDesc(file_cover_v1_cover, 62);
2457
2552
 
2458
2553
  /**
2459
2554
  * Response message for UpdateMemberPermission
@@ -2472,7 +2567,7 @@ export type UpdateMemberPermissionResponse = Message<"blueapi.cover.v1.UpdateMem
2472
2567
  * Use `create(UpdateMemberPermissionResponseSchema)` to create a new message.
2473
2568
  */
2474
2569
  export const UpdateMemberPermissionResponseSchema: GenMessage<UpdateMemberPermissionResponse> = /*@__PURE__*/
2475
- messageDesc(file_cover_v1_cover, 59);
2570
+ messageDesc(file_cover_v1_cover, 63);
2476
2571
 
2477
2572
  /**
2478
2573
  * Request message for GetUserDetails
@@ -2487,7 +2582,7 @@ export type GetUserDetailsRequest = Message<"blueapi.cover.v1.GetUserDetailsRequ
2487
2582
  * Use `create(GetUserDetailsRequestSchema)` to create a new message.
2488
2583
  */
2489
2584
  export const GetUserDetailsRequestSchema: GenMessage<GetUserDetailsRequest> = /*@__PURE__*/
2490
- messageDesc(file_cover_v1_cover, 60);
2585
+ messageDesc(file_cover_v1_cover, 64);
2491
2586
 
2492
2587
  /**
2493
2588
  * Response message for GetUserDetails
@@ -2506,7 +2601,7 @@ export type GetUserDetailsResponse = Message<"blueapi.cover.v1.GetUserDetailsRes
2506
2601
  * Use `create(GetUserDetailsResponseSchema)` to create a new message.
2507
2602
  */
2508
2603
  export const GetUserDetailsResponseSchema: GenMessage<GetUserDetailsResponse> = /*@__PURE__*/
2509
- messageDesc(file_cover_v1_cover, 61);
2604
+ messageDesc(file_cover_v1_cover, 65);
2510
2605
 
2511
2606
  /**
2512
2607
  * Request message for UpdateUserAvatar
@@ -2525,7 +2620,7 @@ export type UpdateUserAvatarRequest = Message<"blueapi.cover.v1.UpdateUserAvatar
2525
2620
  * Use `create(UpdateUserAvatarRequestSchema)` to create a new message.
2526
2621
  */
2527
2622
  export const UpdateUserAvatarRequestSchema: GenMessage<UpdateUserAvatarRequest> = /*@__PURE__*/
2528
- messageDesc(file_cover_v1_cover, 62);
2623
+ messageDesc(file_cover_v1_cover, 66);
2529
2624
 
2530
2625
  /**
2531
2626
  * Response message for UpdateUserAvatar
@@ -2544,7 +2639,7 @@ export type UpdateUserAvatarResponse = Message<"blueapi.cover.v1.UpdateUserAvata
2544
2639
  * Use `create(UpdateUserAvatarResponseSchema)` to create a new message.
2545
2640
  */
2546
2641
  export const UpdateUserAvatarResponseSchema: GenMessage<UpdateUserAvatarResponse> = /*@__PURE__*/
2547
- messageDesc(file_cover_v1_cover, 63);
2642
+ messageDesc(file_cover_v1_cover, 67);
2548
2643
 
2549
2644
  /**
2550
2645
  * Request message for UpdateUserIcon
@@ -2563,7 +2658,7 @@ export type UpdateUserIconRequest = Message<"blueapi.cover.v1.UpdateUserIconRequ
2563
2658
  * Use `create(UpdateUserIconRequestSchema)` to create a new message.
2564
2659
  */
2565
2660
  export const UpdateUserIconRequestSchema: GenMessage<UpdateUserIconRequest> = /*@__PURE__*/
2566
- messageDesc(file_cover_v1_cover, 64);
2661
+ messageDesc(file_cover_v1_cover, 68);
2567
2662
 
2568
2663
  /**
2569
2664
  * Response message for UpdateUserIcon
@@ -2582,7 +2677,7 @@ export type UpdateUserIconResponse = Message<"blueapi.cover.v1.UpdateUserIconRes
2582
2677
  * Use `create(UpdateUserIconResponseSchema)` to create a new message.
2583
2678
  */
2584
2679
  export const UpdateUserIconResponseSchema: GenMessage<UpdateUserIconResponse> = /*@__PURE__*/
2585
- messageDesc(file_cover_v1_cover, 65);
2680
+ messageDesc(file_cover_v1_cover, 69);
2586
2681
 
2587
2682
  /**
2588
2683
  * Request message for UpdateUserColorTheme
@@ -2601,7 +2696,7 @@ export type UpdateUserColorThemeRequest = Message<"blueapi.cover.v1.UpdateUserCo
2601
2696
  * Use `create(UpdateUserColorThemeRequestSchema)` to create a new message.
2602
2697
  */
2603
2698
  export const UpdateUserColorThemeRequestSchema: GenMessage<UpdateUserColorThemeRequest> = /*@__PURE__*/
2604
- messageDesc(file_cover_v1_cover, 66);
2699
+ messageDesc(file_cover_v1_cover, 70);
2605
2700
 
2606
2701
  /**
2607
2702
  * Response message for UpdateUserColorTheme
@@ -2620,7 +2715,7 @@ export type UpdateUserColorThemeResponse = Message<"blueapi.cover.v1.UpdateUserC
2620
2715
  * Use `create(UpdateUserColorThemeResponseSchema)` to create a new message.
2621
2716
  */
2622
2717
  export const UpdateUserColorThemeResponseSchema: GenMessage<UpdateUserColorThemeResponse> = /*@__PURE__*/
2623
- messageDesc(file_cover_v1_cover, 67);
2718
+ messageDesc(file_cover_v1_cover, 71);
2624
2719
 
2625
2720
  /**
2626
2721
  * Request message for UpdateUserName
@@ -2639,7 +2734,7 @@ export type UpdateUserNameRequest = Message<"blueapi.cover.v1.UpdateUserNameRequ
2639
2734
  * Use `create(UpdateUserNameRequestSchema)` to create a new message.
2640
2735
  */
2641
2736
  export const UpdateUserNameRequestSchema: GenMessage<UpdateUserNameRequest> = /*@__PURE__*/
2642
- messageDesc(file_cover_v1_cover, 68);
2737
+ messageDesc(file_cover_v1_cover, 72);
2643
2738
 
2644
2739
  /**
2645
2740
  * Response message for UpdateUserName
@@ -2658,7 +2753,7 @@ export type UpdateUserNameResponse = Message<"blueapi.cover.v1.UpdateUserNameRes
2658
2753
  * Use `create(UpdateUserNameResponseSchema)` to create a new message.
2659
2754
  */
2660
2755
  export const UpdateUserNameResponseSchema: GenMessage<UpdateUserNameResponse> = /*@__PURE__*/
2661
- messageDesc(file_cover_v1_cover, 69);
2756
+ messageDesc(file_cover_v1_cover, 73);
2662
2757
 
2663
2758
  /**
2664
2759
  * Request message for UpdateUserEmail
@@ -2677,7 +2772,7 @@ export type UpdateUserEmailRequest = Message<"blueapi.cover.v1.UpdateUserEmailRe
2677
2772
  * Use `create(UpdateUserEmailRequestSchema)` to create a new message.
2678
2773
  */
2679
2774
  export const UpdateUserEmailRequestSchema: GenMessage<UpdateUserEmailRequest> = /*@__PURE__*/
2680
- messageDesc(file_cover_v1_cover, 70);
2775
+ messageDesc(file_cover_v1_cover, 74);
2681
2776
 
2682
2777
  /**
2683
2778
  * Response message for UpdateUserEmail
@@ -2696,7 +2791,7 @@ export type UpdateUserEmailResponse = Message<"blueapi.cover.v1.UpdateUserEmailR
2696
2791
  * Use `create(UpdateUserEmailResponseSchema)` to create a new message.
2697
2792
  */
2698
2793
  export const UpdateUserEmailResponseSchema: GenMessage<UpdateUserEmailResponse> = /*@__PURE__*/
2699
- messageDesc(file_cover_v1_cover, 71);
2794
+ messageDesc(file_cover_v1_cover, 75);
2700
2795
 
2701
2796
  /**
2702
2797
  * Request message for UpdateUserMainView
@@ -2715,7 +2810,7 @@ export type UpdateUserMainViewRequest = Message<"blueapi.cover.v1.UpdateUserMain
2715
2810
  * Use `create(UpdateUserMainViewRequestSchema)` to create a new message.
2716
2811
  */
2717
2812
  export const UpdateUserMainViewRequestSchema: GenMessage<UpdateUserMainViewRequest> = /*@__PURE__*/
2718
- messageDesc(file_cover_v1_cover, 72);
2813
+ messageDesc(file_cover_v1_cover, 76);
2719
2814
 
2720
2815
  /**
2721
2816
  * Response message for UpdateUserMainView
@@ -2734,7 +2829,7 @@ export type UpdateUserMainViewResponse = Message<"blueapi.cover.v1.UpdateUserMai
2734
2829
  * Use `create(UpdateUserMainViewResponseSchema)` to create a new message.
2735
2830
  */
2736
2831
  export const UpdateUserMainViewResponseSchema: GenMessage<UpdateUserMainViewResponse> = /*@__PURE__*/
2737
- messageDesc(file_cover_v1_cover, 73);
2832
+ messageDesc(file_cover_v1_cover, 77);
2738
2833
 
2739
2834
  /**
2740
2835
  * Request message for ResetUserPassword
@@ -2758,7 +2853,7 @@ export type ResetUserPasswordRequest = Message<"blueapi.cover.v1.ResetUserPasswo
2758
2853
  * Use `create(ResetUserPasswordRequestSchema)` to create a new message.
2759
2854
  */
2760
2855
  export const ResetUserPasswordRequestSchema: GenMessage<ResetUserPasswordRequest> = /*@__PURE__*/
2761
- messageDesc(file_cover_v1_cover, 74);
2856
+ messageDesc(file_cover_v1_cover, 78);
2762
2857
 
2763
2858
  /**
2764
2859
  * Response message for ResetUserPassword
@@ -2777,7 +2872,7 @@ export type ResetUserPasswordResponse = Message<"blueapi.cover.v1.ResetUserPassw
2777
2872
  * Use `create(ResetUserPasswordResponseSchema)` to create a new message.
2778
2873
  */
2779
2874
  export const ResetUserPasswordResponseSchema: GenMessage<ResetUserPasswordResponse> = /*@__PURE__*/
2780
- messageDesc(file_cover_v1_cover, 75);
2875
+ messageDesc(file_cover_v1_cover, 79);
2781
2876
 
2782
2877
  /**
2783
2878
  * Request message for UpdateUserLocale
@@ -2796,7 +2891,7 @@ export type UpdateUserLocaleRequest = Message<"blueapi.cover.v1.UpdateUserLocale
2796
2891
  * Use `create(UpdateUserLocaleRequestSchema)` to create a new message.
2797
2892
  */
2798
2893
  export const UpdateUserLocaleRequestSchema: GenMessage<UpdateUserLocaleRequest> = /*@__PURE__*/
2799
- messageDesc(file_cover_v1_cover, 76);
2894
+ messageDesc(file_cover_v1_cover, 80);
2800
2895
 
2801
2896
  /**
2802
2897
  * Response message for UpdateUserLocale
@@ -2815,7 +2910,7 @@ export type UpdateUserLocaleResponse = Message<"blueapi.cover.v1.UpdateUserLocal
2815
2910
  * Use `create(UpdateUserLocaleResponseSchema)` to create a new message.
2816
2911
  */
2817
2912
  export const UpdateUserLocaleResponseSchema: GenMessage<UpdateUserLocaleResponse> = /*@__PURE__*/
2818
- messageDesc(file_cover_v1_cover, 77);
2913
+ messageDesc(file_cover_v1_cover, 81);
2819
2914
 
2820
2915
  /**
2821
2916
  * Request message for UpdateUserAppTheme
@@ -2834,7 +2929,7 @@ export type UpdateUserAppThemeRequest = Message<"blueapi.cover.v1.UpdateUserAppT
2834
2929
  * Use `create(UpdateUserAppThemeRequestSchema)` to create a new message.
2835
2930
  */
2836
2931
  export const UpdateUserAppThemeRequestSchema: GenMessage<UpdateUserAppThemeRequest> = /*@__PURE__*/
2837
- messageDesc(file_cover_v1_cover, 78);
2932
+ messageDesc(file_cover_v1_cover, 82);
2838
2933
 
2839
2934
  /**
2840
2935
  * Response message for UpdateUserAppTheme
@@ -2853,7 +2948,7 @@ export type UpdateUserAppThemeResponse = Message<"blueapi.cover.v1.UpdateUserApp
2853
2948
  * Use `create(UpdateUserAppThemeResponseSchema)` to create a new message.
2854
2949
  */
2855
2950
  export const UpdateUserAppThemeResponseSchema: GenMessage<UpdateUserAppThemeResponse> = /*@__PURE__*/
2856
- messageDesc(file_cover_v1_cover, 79);
2951
+ messageDesc(file_cover_v1_cover, 83);
2857
2952
 
2858
2953
  /**
2859
2954
  * Request message for UpdateUserTimezone
@@ -2877,7 +2972,7 @@ export type UpdateUserTimezoneRequest = Message<"blueapi.cover.v1.UpdateUserTime
2877
2972
  * Use `create(UpdateUserTimezoneRequestSchema)` to create a new message.
2878
2973
  */
2879
2974
  export const UpdateUserTimezoneRequestSchema: GenMessage<UpdateUserTimezoneRequest> = /*@__PURE__*/
2880
- messageDesc(file_cover_v1_cover, 80);
2975
+ messageDesc(file_cover_v1_cover, 84);
2881
2976
 
2882
2977
  /**
2883
2978
  * Response message for UpdateUserTimezone
@@ -2896,7 +2991,7 @@ export type UpdateUserTimezoneResponse = Message<"blueapi.cover.v1.UpdateUserTim
2896
2991
  * Use `create(UpdateUserTimezoneResponseSchema)` to create a new message.
2897
2992
  */
2898
2993
  export const UpdateUserTimezoneResponseSchema: GenMessage<UpdateUserTimezoneResponse> = /*@__PURE__*/
2899
- messageDesc(file_cover_v1_cover, 81);
2994
+ messageDesc(file_cover_v1_cover, 85);
2900
2995
 
2901
2996
  /**
2902
2997
  * Request message for UpdateUserAttributes
@@ -2915,7 +3010,7 @@ export type UpdateUserAttributesRequest = Message<"blueapi.cover.v1.UpdateUserAt
2915
3010
  * Use `create(UpdateUserAttributesRequestSchema)` to create a new message.
2916
3011
  */
2917
3012
  export const UpdateUserAttributesRequestSchema: GenMessage<UpdateUserAttributesRequest> = /*@__PURE__*/
2918
- messageDesc(file_cover_v1_cover, 82);
3013
+ messageDesc(file_cover_v1_cover, 86);
2919
3014
 
2920
3015
  /**
2921
3016
  * Response message for UpdateUserAttributes
@@ -2934,7 +3029,7 @@ export type UpdateUserAttributesResponse = Message<"blueapi.cover.v1.UpdateUserA
2934
3029
  * Use `create(UpdateUserAttributesResponseSchema)` to create a new message.
2935
3030
  */
2936
3031
  export const UpdateUserAttributesResponseSchema: GenMessage<UpdateUserAttributesResponse> = /*@__PURE__*/
2937
- messageDesc(file_cover_v1_cover, 83);
3032
+ messageDesc(file_cover_v1_cover, 87);
2938
3033
 
2939
3034
  /**
2940
3035
  * Request message for DeleteMember
@@ -2955,7 +3050,7 @@ export type DeleteMemberRequest = Message<"blueapi.cover.v1.DeleteMemberRequest"
2955
3050
  * Use `create(DeleteMemberRequestSchema)` to create a new message.
2956
3051
  */
2957
3052
  export const DeleteMemberRequestSchema: GenMessage<DeleteMemberRequest> = /*@__PURE__*/
2958
- messageDesc(file_cover_v1_cover, 84);
3053
+ messageDesc(file_cover_v1_cover, 88);
2959
3054
 
2960
3055
  /**
2961
3056
  * Response message for DeleteMember
@@ -2974,7 +3069,7 @@ export type DeleteMemberResponse = Message<"blueapi.cover.v1.DeleteMemberRespons
2974
3069
  * Use `create(DeleteMemberResponseSchema)` to create a new message.
2975
3070
  */
2976
3071
  export const DeleteMemberResponseSchema: GenMessage<DeleteMemberResponse> = /*@__PURE__*/
2977
- messageDesc(file_cover_v1_cover, 85);
3072
+ messageDesc(file_cover_v1_cover, 89);
2978
3073
 
2979
3074
  /**
2980
3075
  * Request message for ResetPassword
@@ -2995,7 +3090,7 @@ export type ResetPasswordRequest = Message<"blueapi.cover.v1.ResetPasswordReques
2995
3090
  * Use `create(ResetPasswordRequestSchema)` to create a new message.
2996
3091
  */
2997
3092
  export const ResetPasswordRequestSchema: GenMessage<ResetPasswordRequest> = /*@__PURE__*/
2998
- messageDesc(file_cover_v1_cover, 86);
3093
+ messageDesc(file_cover_v1_cover, 90);
2999
3094
 
3000
3095
  /**
3001
3096
  * Response message for ResetPassword
@@ -3014,7 +3109,7 @@ export type ResetPasswordResponse = Message<"blueapi.cover.v1.ResetPasswordRespo
3014
3109
  * Use `create(ResetPasswordResponseSchema)` to create a new message.
3015
3110
  */
3016
3111
  export const ResetPasswordResponseSchema: GenMessage<ResetPasswordResponse> = /*@__PURE__*/
3017
- messageDesc(file_cover_v1_cover, 87);
3112
+ messageDesc(file_cover_v1_cover, 91);
3018
3113
 
3019
3114
  /**
3020
3115
  * Request message for CreateView
@@ -3073,7 +3168,7 @@ export type CreateViewRequest = Message<"blueapi.cover.v1.CreateViewRequest"> &
3073
3168
  * Use `create(CreateViewRequestSchema)` to create a new message.
3074
3169
  */
3075
3170
  export const CreateViewRequestSchema: GenMessage<CreateViewRequest> = /*@__PURE__*/
3076
- messageDesc(file_cover_v1_cover, 88);
3171
+ messageDesc(file_cover_v1_cover, 92);
3077
3172
 
3078
3173
  /**
3079
3174
  * Response message for CreateView
@@ -3092,7 +3187,7 @@ export type CreateViewResponse = Message<"blueapi.cover.v1.CreateViewResponse">
3092
3187
  * Use `create(CreateViewResponseSchema)` to create a new message.
3093
3188
  */
3094
3189
  export const CreateViewResponseSchema: GenMessage<CreateViewResponse> = /*@__PURE__*/
3095
- messageDesc(file_cover_v1_cover, 89);
3190
+ messageDesc(file_cover_v1_cover, 93);
3096
3191
 
3097
3192
  /**
3098
3193
  * Request message for GetViews
@@ -3107,7 +3202,7 @@ export type GetViewsRequest = Message<"blueapi.cover.v1.GetViewsRequest"> & {
3107
3202
  * Use `create(GetViewsRequestSchema)` to create a new message.
3108
3203
  */
3109
3204
  export const GetViewsRequestSchema: GenMessage<GetViewsRequest> = /*@__PURE__*/
3110
- messageDesc(file_cover_v1_cover, 90);
3205
+ messageDesc(file_cover_v1_cover, 94);
3111
3206
 
3112
3207
  /**
3113
3208
  * Response message for GetViews
@@ -3126,7 +3221,7 @@ export type GetViewsResponse = Message<"blueapi.cover.v1.GetViewsResponse"> & {
3126
3221
  * Use `create(GetViewsResponseSchema)` to create a new message.
3127
3222
  */
3128
3223
  export const GetViewsResponseSchema: GenMessage<GetViewsResponse> = /*@__PURE__*/
3129
- messageDesc(file_cover_v1_cover, 91);
3224
+ messageDesc(file_cover_v1_cover, 95);
3130
3225
 
3131
3226
  /**
3132
3227
  * Request message for GetCurrentView
@@ -3147,7 +3242,7 @@ export type GetCurrentViewRequest = Message<"blueapi.cover.v1.GetCurrentViewRequ
3147
3242
  * Use `create(GetCurrentViewRequestSchema)` to create a new message.
3148
3243
  */
3149
3244
  export const GetCurrentViewRequestSchema: GenMessage<GetCurrentViewRequest> = /*@__PURE__*/
3150
- messageDesc(file_cover_v1_cover, 92);
3245
+ messageDesc(file_cover_v1_cover, 96);
3151
3246
 
3152
3247
  /**
3153
3248
  * Response message for GetCurrentView
@@ -3166,7 +3261,7 @@ export type GetCurrentViewResponse = Message<"blueapi.cover.v1.GetCurrentViewRes
3166
3261
  * Use `create(GetCurrentViewResponseSchema)` to create a new message.
3167
3262
  */
3168
3263
  export const GetCurrentViewResponseSchema: GenMessage<GetCurrentViewResponse> = /*@__PURE__*/
3169
- messageDesc(file_cover_v1_cover, 93);
3264
+ messageDesc(file_cover_v1_cover, 97);
3170
3265
 
3171
3266
  /**
3172
3267
  * Request message for GetFavoriteViews
@@ -3181,7 +3276,7 @@ export type GetFavoriteViewsRequest = Message<"blueapi.cover.v1.GetFavoriteViews
3181
3276
  * Use `create(GetFavoriteViewsRequestSchema)` to create a new message.
3182
3277
  */
3183
3278
  export const GetFavoriteViewsRequestSchema: GenMessage<GetFavoriteViewsRequest> = /*@__PURE__*/
3184
- messageDesc(file_cover_v1_cover, 94);
3279
+ messageDesc(file_cover_v1_cover, 98);
3185
3280
 
3186
3281
  /**
3187
3282
  * Response message for GetFavoriteViews
@@ -3200,7 +3295,7 @@ export type GetFavoriteViewsResponse = Message<"blueapi.cover.v1.GetFavoriteView
3200
3295
  * Use `create(GetFavoriteViewsResponseSchema)` to create a new message.
3201
3296
  */
3202
3297
  export const GetFavoriteViewsResponseSchema: GenMessage<GetFavoriteViewsResponse> = /*@__PURE__*/
3203
- messageDesc(file_cover_v1_cover, 95);
3298
+ messageDesc(file_cover_v1_cover, 99);
3204
3299
 
3205
3300
  /**
3206
3301
  * Request message for PublishView
@@ -3221,7 +3316,7 @@ export type PublishViewRequest = Message<"blueapi.cover.v1.PublishViewRequest">
3221
3316
  * Use `create(PublishViewRequestSchema)` to create a new message.
3222
3317
  */
3223
3318
  export const PublishViewRequestSchema: GenMessage<PublishViewRequest> = /*@__PURE__*/
3224
- messageDesc(file_cover_v1_cover, 96);
3319
+ messageDesc(file_cover_v1_cover, 100);
3225
3320
 
3226
3321
  /**
3227
3322
  * Response message for PublishView
@@ -3240,7 +3335,7 @@ export type PublishViewResponse = Message<"blueapi.cover.v1.PublishViewResponse"
3240
3335
  * Use `create(PublishViewResponseSchema)` to create a new message.
3241
3336
  */
3242
3337
  export const PublishViewResponseSchema: GenMessage<PublishViewResponse> = /*@__PURE__*/
3243
- messageDesc(file_cover_v1_cover, 97);
3338
+ messageDesc(file_cover_v1_cover, 101);
3244
3339
 
3245
3340
  /**
3246
3341
  * Request message for AddFavorite
@@ -3261,7 +3356,7 @@ export type AddFavoriteRequest = Message<"blueapi.cover.v1.AddFavoriteRequest">
3261
3356
  * Use `create(AddFavoriteRequestSchema)` to create a new message.
3262
3357
  */
3263
3358
  export const AddFavoriteRequestSchema: GenMessage<AddFavoriteRequest> = /*@__PURE__*/
3264
- messageDesc(file_cover_v1_cover, 98);
3359
+ messageDesc(file_cover_v1_cover, 102);
3265
3360
 
3266
3361
  /**
3267
3362
  * Response message for AddFavorite
@@ -3280,7 +3375,7 @@ export type AddFavoriteResponse = Message<"blueapi.cover.v1.AddFavoriteResponse"
3280
3375
  * Use `create(AddFavoriteResponseSchema)` to create a new message.
3281
3376
  */
3282
3377
  export const AddFavoriteResponseSchema: GenMessage<AddFavoriteResponse> = /*@__PURE__*/
3283
- messageDesc(file_cover_v1_cover, 99);
3378
+ messageDesc(file_cover_v1_cover, 103);
3284
3379
 
3285
3380
  /**
3286
3381
  * Request message for RemoveFavorite
@@ -3301,7 +3396,7 @@ export type RemoveFavoriteRequest = Message<"blueapi.cover.v1.RemoveFavoriteRequ
3301
3396
  * Use `create(RemoveFavoriteRequestSchema)` to create a new message.
3302
3397
  */
3303
3398
  export const RemoveFavoriteRequestSchema: GenMessage<RemoveFavoriteRequest> = /*@__PURE__*/
3304
- messageDesc(file_cover_v1_cover, 100);
3399
+ messageDesc(file_cover_v1_cover, 104);
3305
3400
 
3306
3401
  /**
3307
3402
  * Response message for RemoveFavorite
@@ -3320,7 +3415,7 @@ export type RemoveFavoriteResponse = Message<"blueapi.cover.v1.RemoveFavoriteRes
3320
3415
  * Use `create(RemoveFavoriteResponseSchema)` to create a new message.
3321
3416
  */
3322
3417
  export const RemoveFavoriteResponseSchema: GenMessage<RemoveFavoriteResponse> = /*@__PURE__*/
3323
- messageDesc(file_cover_v1_cover, 101);
3418
+ messageDesc(file_cover_v1_cover, 105);
3324
3419
 
3325
3420
  /**
3326
3421
  * Request message for UpdateView
@@ -3371,7 +3466,7 @@ export type UpdateViewRequest = Message<"blueapi.cover.v1.UpdateViewRequest"> &
3371
3466
  * Use `create(UpdateViewRequestSchema)` to create a new message.
3372
3467
  */
3373
3468
  export const UpdateViewRequestSchema: GenMessage<UpdateViewRequest> = /*@__PURE__*/
3374
- messageDesc(file_cover_v1_cover, 102);
3469
+ messageDesc(file_cover_v1_cover, 106);
3375
3470
 
3376
3471
  /**
3377
3472
  * Response message for UpdateView
@@ -3390,7 +3485,7 @@ export type UpdateViewResponse = Message<"blueapi.cover.v1.UpdateViewResponse">
3390
3485
  * Use `create(UpdateViewResponseSchema)` to create a new message.
3391
3486
  */
3392
3487
  export const UpdateViewResponseSchema: GenMessage<UpdateViewResponse> = /*@__PURE__*/
3393
- messageDesc(file_cover_v1_cover, 103);
3488
+ messageDesc(file_cover_v1_cover, 107);
3394
3489
 
3395
3490
  /**
3396
3491
  * Request message for UpdateViewLayout
@@ -3416,7 +3511,7 @@ export type UpdateViewLayoutRequest = Message<"blueapi.cover.v1.UpdateViewLayout
3416
3511
  * Use `create(UpdateViewLayoutRequestSchema)` to create a new message.
3417
3512
  */
3418
3513
  export const UpdateViewLayoutRequestSchema: GenMessage<UpdateViewLayoutRequest> = /*@__PURE__*/
3419
- messageDesc(file_cover_v1_cover, 104);
3514
+ messageDesc(file_cover_v1_cover, 108);
3420
3515
 
3421
3516
  /**
3422
3517
  * Response message for UpdateViewLayout
@@ -3435,7 +3530,7 @@ export type UpdateViewLayoutResponse = Message<"blueapi.cover.v1.UpdateViewLayou
3435
3530
  * Use `create(UpdateViewLayoutResponseSchema)` to create a new message.
3436
3531
  */
3437
3532
  export const UpdateViewLayoutResponseSchema: GenMessage<UpdateViewLayoutResponse> = /*@__PURE__*/
3438
- messageDesc(file_cover_v1_cover, 105);
3533
+ messageDesc(file_cover_v1_cover, 109);
3439
3534
 
3440
3535
  /**
3441
3536
  * Request message for UpdateViewWidget
@@ -3473,7 +3568,7 @@ export type UpdateViewWidgetRequest = Message<"blueapi.cover.v1.UpdateViewWidget
3473
3568
  * Use `create(UpdateViewWidgetRequestSchema)` to create a new message.
3474
3569
  */
3475
3570
  export const UpdateViewWidgetRequestSchema: GenMessage<UpdateViewWidgetRequest> = /*@__PURE__*/
3476
- messageDesc(file_cover_v1_cover, 106);
3571
+ messageDesc(file_cover_v1_cover, 110);
3477
3572
 
3478
3573
  /**
3479
3574
  * Response message for UpdateViewWidget
@@ -3497,7 +3592,7 @@ export type UpdateViewWidgetResponse = Message<"blueapi.cover.v1.UpdateViewWidge
3497
3592
  * Use `create(UpdateViewWidgetResponseSchema)` to create a new message.
3498
3593
  */
3499
3594
  export const UpdateViewWidgetResponseSchema: GenMessage<UpdateViewWidgetResponse> = /*@__PURE__*/
3500
- messageDesc(file_cover_v1_cover, 107);
3595
+ messageDesc(file_cover_v1_cover, 111);
3501
3596
 
3502
3597
  /**
3503
3598
  * Request message for UpdateViewColorTheme
@@ -3521,7 +3616,7 @@ export type UpdateViewColorThemeRequest = Message<"blueapi.cover.v1.UpdateViewCo
3521
3616
  * Use `create(UpdateViewColorThemeRequestSchema)` to create a new message.
3522
3617
  */
3523
3618
  export const UpdateViewColorThemeRequestSchema: GenMessage<UpdateViewColorThemeRequest> = /*@__PURE__*/
3524
- messageDesc(file_cover_v1_cover, 108);
3619
+ messageDesc(file_cover_v1_cover, 112);
3525
3620
 
3526
3621
  /**
3527
3622
  * Response message for UpdateViewColorTheme
@@ -3540,7 +3635,7 @@ export type UpdateViewColorThemeResponse = Message<"blueapi.cover.v1.UpdateViewC
3540
3635
  * Use `create(UpdateViewColorThemeResponseSchema)` to create a new message.
3541
3636
  */
3542
3637
  export const UpdateViewColorThemeResponseSchema: GenMessage<UpdateViewColorThemeResponse> = /*@__PURE__*/
3543
- messageDesc(file_cover_v1_cover, 109);
3638
+ messageDesc(file_cover_v1_cover, 113);
3544
3639
 
3545
3640
  /**
3546
3641
  * Request message for UpdateViewCurrency
@@ -3564,7 +3659,7 @@ export type UpdateViewCurrencyRequest = Message<"blueapi.cover.v1.UpdateViewCurr
3564
3659
  * Use `create(UpdateViewCurrencyRequestSchema)` to create a new message.
3565
3660
  */
3566
3661
  export const UpdateViewCurrencyRequestSchema: GenMessage<UpdateViewCurrencyRequest> = /*@__PURE__*/
3567
- messageDesc(file_cover_v1_cover, 110);
3662
+ messageDesc(file_cover_v1_cover, 114);
3568
3663
 
3569
3664
  /**
3570
3665
  * Response message for UpdateViewCurrency
@@ -3583,7 +3678,7 @@ export type UpdateViewCurrencyResponse = Message<"blueapi.cover.v1.UpdateViewCur
3583
3678
  * Use `create(UpdateViewCurrencyResponseSchema)` to create a new message.
3584
3679
  */
3585
3680
  export const UpdateViewCurrencyResponseSchema: GenMessage<UpdateViewCurrencyResponse> = /*@__PURE__*/
3586
- messageDesc(file_cover_v1_cover, 111);
3681
+ messageDesc(file_cover_v1_cover, 115);
3587
3682
 
3588
3683
  /**
3589
3684
  * @generated from message blueapi.cover.v1.SetOrgUpdateCurrencyRequest
@@ -3602,7 +3697,7 @@ export type SetOrgUpdateCurrencyRequest = Message<"blueapi.cover.v1.SetOrgUpdate
3602
3697
  * Use `create(SetOrgUpdateCurrencyRequestSchema)` to create a new message.
3603
3698
  */
3604
3699
  export const SetOrgUpdateCurrencyRequestSchema: GenMessage<SetOrgUpdateCurrencyRequest> = /*@__PURE__*/
3605
- messageDesc(file_cover_v1_cover, 112);
3700
+ messageDesc(file_cover_v1_cover, 116);
3606
3701
 
3607
3702
  /**
3608
3703
  * @generated from message blueapi.cover.v1.SetOrgUpdateCurrencyResponse
@@ -3619,7 +3714,7 @@ export type SetOrgUpdateCurrencyResponse = Message<"blueapi.cover.v1.SetOrgUpdat
3619
3714
  * Use `create(SetOrgUpdateCurrencyResponseSchema)` to create a new message.
3620
3715
  */
3621
3716
  export const SetOrgUpdateCurrencyResponseSchema: GenMessage<SetOrgUpdateCurrencyResponse> = /*@__PURE__*/
3622
- messageDesc(file_cover_v1_cover, 113);
3717
+ messageDesc(file_cover_v1_cover, 117);
3623
3718
 
3624
3719
  /**
3625
3720
  * @generated from message blueapi.cover.v1.GetOrgUpdateCurrencyRequest
@@ -3632,7 +3727,7 @@ export type GetOrgUpdateCurrencyRequest = Message<"blueapi.cover.v1.GetOrgUpdate
3632
3727
  * Use `create(GetOrgUpdateCurrencyRequestSchema)` to create a new message.
3633
3728
  */
3634
3729
  export const GetOrgUpdateCurrencyRequestSchema: GenMessage<GetOrgUpdateCurrencyRequest> = /*@__PURE__*/
3635
- messageDesc(file_cover_v1_cover, 114);
3730
+ messageDesc(file_cover_v1_cover, 118);
3636
3731
 
3637
3732
  /**
3638
3733
  * @generated from message blueapi.cover.v1.GetOrgUpdateCurrencyResponse
@@ -3659,7 +3754,7 @@ export type GetOrgUpdateCurrencyResponse = Message<"blueapi.cover.v1.GetOrgUpdat
3659
3754
  * Use `create(GetOrgUpdateCurrencyResponseSchema)` to create a new message.
3660
3755
  */
3661
3756
  export const GetOrgUpdateCurrencyResponseSchema: GenMessage<GetOrgUpdateCurrencyResponse> = /*@__PURE__*/
3662
- messageDesc(file_cover_v1_cover, 115);
3757
+ messageDesc(file_cover_v1_cover, 119);
3663
3758
 
3664
3759
  /**
3665
3760
  * Request message for ListExchangeRates
@@ -3687,7 +3782,7 @@ export type ListExchangeRatesRequest = Message<"blueapi.cover.v1.ListExchangeRat
3687
3782
  * Use `create(ListExchangeRatesRequestSchema)` to create a new message.
3688
3783
  */
3689
3784
  export const ListExchangeRatesRequestSchema: GenMessage<ListExchangeRatesRequest> = /*@__PURE__*/
3690
- messageDesc(file_cover_v1_cover, 116);
3785
+ messageDesc(file_cover_v1_cover, 120);
3691
3786
 
3692
3787
  /**
3693
3788
  * Response message for ListExchangeRates
@@ -3711,7 +3806,7 @@ export type ListExchangeRatesResponse = Message<"blueapi.cover.v1.ListExchangeRa
3711
3806
  * Use `create(ListExchangeRatesResponseSchema)` to create a new message.
3712
3807
  */
3713
3808
  export const ListExchangeRatesResponseSchema: GenMessage<ListExchangeRatesResponse> = /*@__PURE__*/
3714
- messageDesc(file_cover_v1_cover, 117);
3809
+ messageDesc(file_cover_v1_cover, 121);
3715
3810
 
3716
3811
  /**
3717
3812
  * @generated from message blueapi.cover.v1.ExchangeRates
@@ -3738,7 +3833,7 @@ export type ExchangeRates = Message<"blueapi.cover.v1.ExchangeRates"> & {
3738
3833
  * Use `create(ExchangeRatesSchema)` to create a new message.
3739
3834
  */
3740
3835
  export const ExchangeRatesSchema: GenMessage<ExchangeRates> = /*@__PURE__*/
3741
- messageDesc(file_cover_v1_cover, 118);
3836
+ messageDesc(file_cover_v1_cover, 122);
3742
3837
 
3743
3838
  /**
3744
3839
  * Request message for DeleteView
@@ -3759,7 +3854,7 @@ export type DeleteViewRequest = Message<"blueapi.cover.v1.DeleteViewRequest"> &
3759
3854
  * Use `create(DeleteViewRequestSchema)` to create a new message.
3760
3855
  */
3761
3856
  export const DeleteViewRequestSchema: GenMessage<DeleteViewRequest> = /*@__PURE__*/
3762
- messageDesc(file_cover_v1_cover, 119);
3857
+ messageDesc(file_cover_v1_cover, 123);
3763
3858
 
3764
3859
  /**
3765
3860
  * Response message for DeleteView
@@ -3778,7 +3873,7 @@ export type DeleteViewResponse = Message<"blueapi.cover.v1.DeleteViewResponse">
3778
3873
  * Use `create(DeleteViewResponseSchema)` to create a new message.
3779
3874
  */
3780
3875
  export const DeleteViewResponseSchema: GenMessage<DeleteViewResponse> = /*@__PURE__*/
3781
- messageDesc(file_cover_v1_cover, 120);
3876
+ messageDesc(file_cover_v1_cover, 124);
3782
3877
 
3783
3878
  /**
3784
3879
  * Request message for UpdateSideMenuState
@@ -3804,7 +3899,7 @@ export type UpdateSideMenuStateRequest = Message<"blueapi.cover.v1.UpdateSideMen
3804
3899
  * Use `create(UpdateSideMenuStateRequestSchema)` to create a new message.
3805
3900
  */
3806
3901
  export const UpdateSideMenuStateRequestSchema: GenMessage<UpdateSideMenuStateRequest> = /*@__PURE__*/
3807
- messageDesc(file_cover_v1_cover, 121);
3902
+ messageDesc(file_cover_v1_cover, 125);
3808
3903
 
3809
3904
  /**
3810
3905
  * Response message for UpdateSideMenuState
@@ -3823,7 +3918,7 @@ export type UpdateSideMenuStateResponse = Message<"blueapi.cover.v1.UpdateSideMe
3823
3918
  * Use `create(UpdateSideMenuStateResponseSchema)` to create a new message.
3824
3919
  */
3825
3920
  export const UpdateSideMenuStateResponseSchema: GenMessage<UpdateSideMenuStateResponse> = /*@__PURE__*/
3826
- messageDesc(file_cover_v1_cover, 122);
3921
+ messageDesc(file_cover_v1_cover, 126);
3827
3922
 
3828
3923
  /**
3829
3924
  * Request message for AddSideMenuFavorite
@@ -3849,7 +3944,7 @@ export type AddSideMenuFavoriteRequest = Message<"blueapi.cover.v1.AddSideMenuFa
3849
3944
  * Use `create(AddSideMenuFavoriteRequestSchema)` to create a new message.
3850
3945
  */
3851
3946
  export const AddSideMenuFavoriteRequestSchema: GenMessage<AddSideMenuFavoriteRequest> = /*@__PURE__*/
3852
- messageDesc(file_cover_v1_cover, 123);
3947
+ messageDesc(file_cover_v1_cover, 127);
3853
3948
 
3854
3949
  /**
3855
3950
  * Response message for AddSideMenuFavorite
@@ -3868,7 +3963,7 @@ export type AddSideMenuFavoriteResponse = Message<"blueapi.cover.v1.AddSideMenuF
3868
3963
  * Use `create(AddSideMenuFavoriteResponseSchema)` to create a new message.
3869
3964
  */
3870
3965
  export const AddSideMenuFavoriteResponseSchema: GenMessage<AddSideMenuFavoriteResponse> = /*@__PURE__*/
3871
- messageDesc(file_cover_v1_cover, 124);
3966
+ messageDesc(file_cover_v1_cover, 128);
3872
3967
 
3873
3968
  /**
3874
3969
  * Request message for RemoveSideMenuFavorite
@@ -3894,7 +3989,7 @@ export type RemoveSideMenuFavoriteRequest = Message<"blueapi.cover.v1.RemoveSide
3894
3989
  * Use `create(RemoveSideMenuFavoriteRequestSchema)` to create a new message.
3895
3990
  */
3896
3991
  export const RemoveSideMenuFavoriteRequestSchema: GenMessage<RemoveSideMenuFavoriteRequest> = /*@__PURE__*/
3897
- messageDesc(file_cover_v1_cover, 125);
3992
+ messageDesc(file_cover_v1_cover, 129);
3898
3993
 
3899
3994
  /**
3900
3995
  * Response message for RemoveSideMenuFavorite
@@ -3913,7 +4008,7 @@ export type RemoveSideMenuFavoriteResponse = Message<"blueapi.cover.v1.RemoveSid
3913
4008
  * Use `create(RemoveSideMenuFavoriteResponseSchema)` to create a new message.
3914
4009
  */
3915
4010
  export const RemoveSideMenuFavoriteResponseSchema: GenMessage<RemoveSideMenuFavoriteResponse> = /*@__PURE__*/
3916
- messageDesc(file_cover_v1_cover, 126);
4011
+ messageDesc(file_cover_v1_cover, 130);
3917
4012
 
3918
4013
  /**
3919
4014
  * Request message for CreateCostGroup
@@ -3962,7 +4057,7 @@ export type CreateCostGroupRequest = Message<"blueapi.cover.v1.CreateCostGroupRe
3962
4057
  * Use `create(CreateCostGroupRequestSchema)` to create a new message.
3963
4058
  */
3964
4059
  export const CreateCostGroupRequestSchema: GenMessage<CreateCostGroupRequest> = /*@__PURE__*/
3965
- messageDesc(file_cover_v1_cover, 127);
4060
+ messageDesc(file_cover_v1_cover, 131);
3966
4061
 
3967
4062
  /**
3968
4063
  * Response message for CreateCostGroup
@@ -3981,7 +4076,7 @@ export type CreateCostGroupResponse = Message<"blueapi.cover.v1.CreateCostGroupR
3981
4076
  * Use `create(CreateCostGroupResponseSchema)` to create a new message.
3982
4077
  */
3983
4078
  export const CreateCostGroupResponseSchema: GenMessage<CreateCostGroupResponse> = /*@__PURE__*/
3984
- messageDesc(file_cover_v1_cover, 128);
4079
+ messageDesc(file_cover_v1_cover, 132);
3985
4080
 
3986
4081
  /**
3987
4082
  * Request message for GetCostGroups
@@ -3996,7 +4091,7 @@ export type GetCostGroupsRequest = Message<"blueapi.cover.v1.GetCostGroupsReques
3996
4091
  * Use `create(GetCostGroupsRequestSchema)` to create a new message.
3997
4092
  */
3998
4093
  export const GetCostGroupsRequestSchema: GenMessage<GetCostGroupsRequest> = /*@__PURE__*/
3999
- messageDesc(file_cover_v1_cover, 129);
4094
+ messageDesc(file_cover_v1_cover, 133);
4000
4095
 
4001
4096
  /**
4002
4097
  * Response message for GetCostGroups
@@ -4015,7 +4110,7 @@ export type GetCostGroupsResponse = Message<"blueapi.cover.v1.GetCostGroupsRespo
4015
4110
  * Use `create(GetCostGroupsResponseSchema)` to create a new message.
4016
4111
  */
4017
4112
  export const GetCostGroupsResponseSchema: GenMessage<GetCostGroupsResponse> = /*@__PURE__*/
4018
- messageDesc(file_cover_v1_cover, 130);
4113
+ messageDesc(file_cover_v1_cover, 134);
4019
4114
 
4020
4115
  /**
4021
4116
  * Request message for GetCostGroupDetails
@@ -4036,7 +4131,7 @@ export type GetCostGroupDetailsRequest = Message<"blueapi.cover.v1.GetCostGroupD
4036
4131
  * Use `create(GetCostGroupDetailsRequestSchema)` to create a new message.
4037
4132
  */
4038
4133
  export const GetCostGroupDetailsRequestSchema: GenMessage<GetCostGroupDetailsRequest> = /*@__PURE__*/
4039
- messageDesc(file_cover_v1_cover, 131);
4134
+ messageDesc(file_cover_v1_cover, 135);
4040
4135
 
4041
4136
  /**
4042
4137
  * Response message for GetCostGroupDetails
@@ -4055,7 +4150,7 @@ export type GetCostGroupDetailsResponse = Message<"blueapi.cover.v1.GetCostGroup
4055
4150
  * Use `create(GetCostGroupDetailsResponseSchema)` to create a new message.
4056
4151
  */
4057
4152
  export const GetCostGroupDetailsResponseSchema: GenMessage<GetCostGroupDetailsResponse> = /*@__PURE__*/
4058
- messageDesc(file_cover_v1_cover, 132);
4153
+ messageDesc(file_cover_v1_cover, 136);
4059
4154
 
4060
4155
  /**
4061
4156
  * Request message for UpdateCostGroupName
@@ -4083,7 +4178,7 @@ export type UpdateCostGroupNameRequest = Message<"blueapi.cover.v1.UpdateCostGro
4083
4178
  * Use `create(UpdateCostGroupNameRequestSchema)` to create a new message.
4084
4179
  */
4085
4180
  export const UpdateCostGroupNameRequestSchema: GenMessage<UpdateCostGroupNameRequest> = /*@__PURE__*/
4086
- messageDesc(file_cover_v1_cover, 133);
4181
+ messageDesc(file_cover_v1_cover, 137);
4087
4182
 
4088
4183
  /**
4089
4184
  * Response message for UpdateCostGroupName
@@ -4102,7 +4197,7 @@ export type UpdateCostGroupNameResponse = Message<"blueapi.cover.v1.UpdateCostGr
4102
4197
  * Use `create(UpdateCostGroupNameResponseSchema)` to create a new message.
4103
4198
  */
4104
4199
  export const UpdateCostGroupNameResponseSchema: GenMessage<UpdateCostGroupNameResponse> = /*@__PURE__*/
4105
- messageDesc(file_cover_v1_cover, 134);
4200
+ messageDesc(file_cover_v1_cover, 138);
4106
4201
 
4107
4202
  /**
4108
4203
  * Request message for UpdateCostGroupDescription
@@ -4130,7 +4225,7 @@ export type UpdateCostGroupDescriptionRequest = Message<"blueapi.cover.v1.Update
4130
4225
  * Use `create(UpdateCostGroupDescriptionRequestSchema)` to create a new message.
4131
4226
  */
4132
4227
  export const UpdateCostGroupDescriptionRequestSchema: GenMessage<UpdateCostGroupDescriptionRequest> = /*@__PURE__*/
4133
- messageDesc(file_cover_v1_cover, 135);
4228
+ messageDesc(file_cover_v1_cover, 139);
4134
4229
 
4135
4230
  /**
4136
4231
  * Response message for UpdateCostGroupDescription
@@ -4149,7 +4244,7 @@ export type UpdateCostGroupDescriptionResponse = Message<"blueapi.cover.v1.Updat
4149
4244
  * Use `create(UpdateCostGroupDescriptionResponseSchema)` to create a new message.
4150
4245
  */
4151
4246
  export const UpdateCostGroupDescriptionResponseSchema: GenMessage<UpdateCostGroupDescriptionResponse> = /*@__PURE__*/
4152
- messageDesc(file_cover_v1_cover, 136);
4247
+ messageDesc(file_cover_v1_cover, 140);
4153
4248
 
4154
4249
  /**
4155
4250
  * Request message for UpdateCostGroupImage
@@ -4177,7 +4272,7 @@ export type UpdateCostGroupImageRequest = Message<"blueapi.cover.v1.UpdateCostGr
4177
4272
  * Use `create(UpdateCostGroupImageRequestSchema)` to create a new message.
4178
4273
  */
4179
4274
  export const UpdateCostGroupImageRequestSchema: GenMessage<UpdateCostGroupImageRequest> = /*@__PURE__*/
4180
- messageDesc(file_cover_v1_cover, 137);
4275
+ messageDesc(file_cover_v1_cover, 141);
4181
4276
 
4182
4277
  /**
4183
4278
  * Response message for UpdateCostGroupImage
@@ -4196,7 +4291,7 @@ export type UpdateCostGroupImageResponse = Message<"blueapi.cover.v1.UpdateCostG
4196
4291
  * Use `create(UpdateCostGroupImageResponseSchema)` to create a new message.
4197
4292
  */
4198
4293
  export const UpdateCostGroupImageResponseSchema: GenMessage<UpdateCostGroupImageResponse> = /*@__PURE__*/
4199
- messageDesc(file_cover_v1_cover, 138);
4294
+ messageDesc(file_cover_v1_cover, 142);
4200
4295
 
4201
4296
  /**
4202
4297
  * Request message for UpdateCostGroupIcon
@@ -4224,7 +4319,7 @@ export type UpdateCostGroupIconRequest = Message<"blueapi.cover.v1.UpdateCostGro
4224
4319
  * Use `create(UpdateCostGroupIconRequestSchema)` to create a new message.
4225
4320
  */
4226
4321
  export const UpdateCostGroupIconRequestSchema: GenMessage<UpdateCostGroupIconRequest> = /*@__PURE__*/
4227
- messageDesc(file_cover_v1_cover, 139);
4322
+ messageDesc(file_cover_v1_cover, 143);
4228
4323
 
4229
4324
  /**
4230
4325
  * Response message for UpdateCostGroupIcon
@@ -4243,7 +4338,7 @@ export type UpdateCostGroupIconResponse = Message<"blueapi.cover.v1.UpdateCostGr
4243
4338
  * Use `create(UpdateCostGroupIconResponseSchema)` to create a new message.
4244
4339
  */
4245
4340
  export const UpdateCostGroupIconResponseSchema: GenMessage<UpdateCostGroupIconResponse> = /*@__PURE__*/
4246
- messageDesc(file_cover_v1_cover, 140);
4341
+ messageDesc(file_cover_v1_cover, 144);
4247
4342
 
4248
4343
  /**
4249
4344
  * Request message for UpdateCostGroupColorTheme
@@ -4271,7 +4366,7 @@ export type UpdateCostGroupColorThemeRequest = Message<"blueapi.cover.v1.UpdateC
4271
4366
  * Use `create(UpdateCostGroupColorThemeRequestSchema)` to create a new message.
4272
4367
  */
4273
4368
  export const UpdateCostGroupColorThemeRequestSchema: GenMessage<UpdateCostGroupColorThemeRequest> = /*@__PURE__*/
4274
- messageDesc(file_cover_v1_cover, 141);
4369
+ messageDesc(file_cover_v1_cover, 145);
4275
4370
 
4276
4371
  /**
4277
4372
  * Response message for UpdateCostGroupColorTheme
@@ -4290,7 +4385,7 @@ export type UpdateCostGroupColorThemeResponse = Message<"blueapi.cover.v1.Update
4290
4385
  * Use `create(UpdateCostGroupColorThemeResponseSchema)` to create a new message.
4291
4386
  */
4292
4387
  export const UpdateCostGroupColorThemeResponseSchema: GenMessage<UpdateCostGroupColorThemeResponse> = /*@__PURE__*/
4293
- messageDesc(file_cover_v1_cover, 142);
4388
+ messageDesc(file_cover_v1_cover, 146);
4294
4389
 
4295
4390
  /**
4296
4391
  * Request message for UpdateCostGroupCombinations
@@ -4316,7 +4411,7 @@ export type UpdateCostGroupCombinationsRequest = Message<"blueapi.cover.v1.Updat
4316
4411
  * Use `create(UpdateCostGroupCombinationsRequestSchema)` to create a new message.
4317
4412
  */
4318
4413
  export const UpdateCostGroupCombinationsRequestSchema: GenMessage<UpdateCostGroupCombinationsRequest> = /*@__PURE__*/
4319
- messageDesc(file_cover_v1_cover, 143);
4414
+ messageDesc(file_cover_v1_cover, 147);
4320
4415
 
4321
4416
  /**
4322
4417
  * Response message for UpdateCostGroupCombinations
@@ -4335,7 +4430,7 @@ export type UpdateCostGroupCombinationsResponse = Message<"blueapi.cover.v1.Upda
4335
4430
  * Use `create(UpdateCostGroupCombinationsResponseSchema)` to create a new message.
4336
4431
  */
4337
4432
  export const UpdateCostGroupCombinationsResponseSchema: GenMessage<UpdateCostGroupCombinationsResponse> = /*@__PURE__*/
4338
- messageDesc(file_cover_v1_cover, 144);
4433
+ messageDesc(file_cover_v1_cover, 148);
4339
4434
 
4340
4435
  /**
4341
4436
  * Request message for AssignCostGroupMember
@@ -4363,7 +4458,7 @@ export type AssignCostGroupMemberRequest = Message<"blueapi.cover.v1.AssignCostG
4363
4458
  * Use `create(AssignCostGroupMemberRequestSchema)` to create a new message.
4364
4459
  */
4365
4460
  export const AssignCostGroupMemberRequestSchema: GenMessage<AssignCostGroupMemberRequest> = /*@__PURE__*/
4366
- messageDesc(file_cover_v1_cover, 145);
4461
+ messageDesc(file_cover_v1_cover, 149);
4367
4462
 
4368
4463
  /**
4369
4464
  * Response message for AssignCostGroupMember
@@ -4387,7 +4482,7 @@ export type AssignCostGroupMemberResponse = Message<"blueapi.cover.v1.AssignCost
4387
4482
  * Use `create(AssignCostGroupMemberResponseSchema)` to create a new message.
4388
4483
  */
4389
4484
  export const AssignCostGroupMemberResponseSchema: GenMessage<AssignCostGroupMemberResponse> = /*@__PURE__*/
4390
- messageDesc(file_cover_v1_cover, 146);
4485
+ messageDesc(file_cover_v1_cover, 150);
4391
4486
 
4392
4487
  /**
4393
4488
  * Request message for RemoveCostGroupMember
@@ -4415,7 +4510,7 @@ export type RemoveCostGroupMemberRequest = Message<"blueapi.cover.v1.RemoveCostG
4415
4510
  * Use `create(RemoveCostGroupMemberRequestSchema)` to create a new message.
4416
4511
  */
4417
4512
  export const RemoveCostGroupMemberRequestSchema: GenMessage<RemoveCostGroupMemberRequest> = /*@__PURE__*/
4418
- messageDesc(file_cover_v1_cover, 147);
4513
+ messageDesc(file_cover_v1_cover, 151);
4419
4514
 
4420
4515
  /**
4421
4516
  * Response message for RemoveCostGroupMember
@@ -4439,7 +4534,7 @@ export type RemoveCostGroupMemberResponse = Message<"blueapi.cover.v1.RemoveCost
4439
4534
  * Use `create(RemoveCostGroupMemberResponseSchema)` to create a new message.
4440
4535
  */
4441
4536
  export const RemoveCostGroupMemberResponseSchema: GenMessage<RemoveCostGroupMemberResponse> = /*@__PURE__*/
4442
- messageDesc(file_cover_v1_cover, 148);
4537
+ messageDesc(file_cover_v1_cover, 152);
4443
4538
 
4444
4539
  /**
4445
4540
  * Request message for DeleteCostGroup
@@ -4460,7 +4555,7 @@ export type DeleteCostGroupRequest = Message<"blueapi.cover.v1.DeleteCostGroupRe
4460
4555
  * Use `create(DeleteCostGroupRequestSchema)` to create a new message.
4461
4556
  */
4462
4557
  export const DeleteCostGroupRequestSchema: GenMessage<DeleteCostGroupRequest> = /*@__PURE__*/
4463
- messageDesc(file_cover_v1_cover, 149);
4558
+ messageDesc(file_cover_v1_cover, 153);
4464
4559
 
4465
4560
  /**
4466
4561
  * Response message for DeleteCostGroup
@@ -4479,7 +4574,7 @@ export type DeleteCostGroupResponse = Message<"blueapi.cover.v1.DeleteCostGroupR
4479
4574
  * Use `create(DeleteCostGroupResponseSchema)` to create a new message.
4480
4575
  */
4481
4576
  export const DeleteCostGroupResponseSchema: GenMessage<DeleteCostGroupResponse> = /*@__PURE__*/
4482
- messageDesc(file_cover_v1_cover, 150);
4577
+ messageDesc(file_cover_v1_cover, 154);
4483
4578
 
4484
4579
  /**
4485
4580
  * Request message for the GetAccountAccessTemplateUrlRequest rpc.
@@ -4500,7 +4595,7 @@ export type GetAccountAccessTemplateUrlRequest = Message<"blueapi.cover.v1.GetAc
4500
4595
  * Use `create(GetAccountAccessTemplateUrlRequestSchema)` to create a new message.
4501
4596
  */
4502
4597
  export const GetAccountAccessTemplateUrlRequestSchema: GenMessage<GetAccountAccessTemplateUrlRequest> = /*@__PURE__*/
4503
- messageDesc(file_cover_v1_cover, 151);
4598
+ messageDesc(file_cover_v1_cover, 155);
4504
4599
 
4505
4600
  /**
4506
4601
  * Response message for the GetAccountAccessTemplateUrlResponse rpc.
@@ -4554,7 +4649,7 @@ export type GetAccountAccessTemplateUrlResponse = Message<"blueapi.cover.v1.GetA
4554
4649
  * Use `create(GetAccountAccessTemplateUrlResponseSchema)` to create a new message.
4555
4650
  */
4556
4651
  export const GetAccountAccessTemplateUrlResponseSchema: GenMessage<GetAccountAccessTemplateUrlResponse> = /*@__PURE__*/
4557
- messageDesc(file_cover_v1_cover, 152);
4652
+ messageDesc(file_cover_v1_cover, 156);
4558
4653
 
4559
4654
  /**
4560
4655
  * Request message for the ListAccountAccess rpc.
@@ -4569,7 +4664,7 @@ export type ListAccountAccessRequest = Message<"blueapi.cover.v1.ListAccountAcce
4569
4664
  * Use `create(ListAccountAccessRequestSchema)` to create a new message.
4570
4665
  */
4571
4666
  export const ListAccountAccessRequestSchema: GenMessage<ListAccountAccessRequest> = /*@__PURE__*/
4572
- messageDesc(file_cover_v1_cover, 153);
4667
+ messageDesc(file_cover_v1_cover, 157);
4573
4668
 
4574
4669
  /**
4575
4670
  * Request message for the GetAccountAccess rpc.
@@ -4590,7 +4685,7 @@ export type GetAccountAccessRequest = Message<"blueapi.cover.v1.GetAccountAccess
4590
4685
  * Use `create(GetAccountAccessRequestSchema)` to create a new message.
4591
4686
  */
4592
4687
  export const GetAccountAccessRequestSchema: GenMessage<GetAccountAccessRequest> = /*@__PURE__*/
4593
- messageDesc(file_cover_v1_cover, 154);
4688
+ messageDesc(file_cover_v1_cover, 158);
4594
4689
 
4595
4690
  /**
4596
4691
  * Response message for GetAccountAccess, CreateAccountAccess rpc.
@@ -4709,7 +4804,7 @@ export type AccountAccess = Message<"blueapi.cover.v1.AccountAccess"> & {
4709
4804
  * Use `create(AccountAccessSchema)` to create a new message.
4710
4805
  */
4711
4806
  export const AccountAccessSchema: GenMessage<AccountAccess> = /*@__PURE__*/
4712
- messageDesc(file_cover_v1_cover, 155);
4807
+ messageDesc(file_cover_v1_cover, 159);
4713
4808
 
4714
4809
  /**
4715
4810
  * Request message for the CreateAccountAccess rpc.
@@ -4737,7 +4832,7 @@ export type CreateAccountAccessRequest = Message<"blueapi.cover.v1.CreateAccount
4737
4832
  * Use `create(CreateAccountAccessRequestSchema)` to create a new message.
4738
4833
  */
4739
4834
  export const CreateAccountAccessRequestSchema: GenMessage<CreateAccountAccessRequest> = /*@__PURE__*/
4740
- messageDesc(file_cover_v1_cover, 156);
4835
+ messageDesc(file_cover_v1_cover, 160);
4741
4836
 
4742
4837
  /**
4743
4838
  * Request message for the CreateAccountAccessStackset rpc.
@@ -4765,7 +4860,7 @@ export type CreateAccountAccessStacksetRequest = Message<"blueapi.cover.v1.Creat
4765
4860
  * Use `create(CreateAccountAccessStacksetRequestSchema)` to create a new message.
4766
4861
  */
4767
4862
  export const CreateAccountAccessStacksetRequestSchema: GenMessage<CreateAccountAccessStacksetRequest> = /*@__PURE__*/
4768
- messageDesc(file_cover_v1_cover, 157);
4863
+ messageDesc(file_cover_v1_cover, 161);
4769
4864
 
4770
4865
  /**
4771
4866
  * Request message for the UpdateAccountAccess rpc.
@@ -4786,7 +4881,7 @@ export type UpdateAccountAccessRequest = Message<"blueapi.cover.v1.UpdateAccount
4786
4881
  * Use `create(UpdateAccountAccessRequestSchema)` to create a new message.
4787
4882
  */
4788
4883
  export const UpdateAccountAccessRequestSchema: GenMessage<UpdateAccountAccessRequest> = /*@__PURE__*/
4789
- messageDesc(file_cover_v1_cover, 158);
4884
+ messageDesc(file_cover_v1_cover, 162);
4790
4885
 
4791
4886
  /**
4792
4887
  * Request message for the DeleteAccountAccess rpc.
@@ -4812,7 +4907,7 @@ export type DeleteAccountAccessRequest = Message<"blueapi.cover.v1.DeleteAccount
4812
4907
  * Use `create(DeleteAccountAccessRequestSchema)` to create a new message.
4813
4908
  */
4814
4909
  export const DeleteAccountAccessRequestSchema: GenMessage<DeleteAccountAccessRequest> = /*@__PURE__*/
4815
- messageDesc(file_cover_v1_cover, 159);
4910
+ messageDesc(file_cover_v1_cover, 163);
4816
4911
 
4817
4912
  /**
4818
4913
  * Response message for the DeleteAccountAccess rpc.
@@ -4831,7 +4926,7 @@ export type DeleteAccountAccessResponse = Message<"blueapi.cover.v1.DeleteAccoun
4831
4926
  * Use `create(DeleteAccountAccessResponseSchema)` to create a new message.
4832
4927
  */
4833
4928
  export const DeleteAccountAccessResponseSchema: GenMessage<DeleteAccountAccessResponse> = /*@__PURE__*/
4834
- messageDesc(file_cover_v1_cover, 160);
4929
+ messageDesc(file_cover_v1_cover, 164);
4835
4930
 
4836
4931
  /**
4837
4932
  * Request message for the RegisterAccount rpc.
@@ -4866,7 +4961,7 @@ export type RegisterAccountRequest = Message<"blueapi.cover.v1.RegisterAccountRe
4866
4961
  * Use `create(RegisterAccountRequestSchema)` to create a new message.
4867
4962
  */
4868
4963
  export const RegisterAccountRequestSchema: GenMessage<RegisterAccountRequest> = /*@__PURE__*/
4869
- messageDesc(file_cover_v1_cover, 161);
4964
+ messageDesc(file_cover_v1_cover, 165);
4870
4965
 
4871
4966
  /**
4872
4967
  * Request message for the Asset.ListResources rpc.
@@ -4922,7 +5017,7 @@ export type ListAssetsRequest = Message<"blueapi.cover.v1.ListAssetsRequest"> &
4922
5017
  * Use `create(ListAssetsRequestSchema)` to create a new message.
4923
5018
  */
4924
5019
  export const ListAssetsRequestSchema: GenMessage<ListAssetsRequest> = /*@__PURE__*/
4925
- messageDesc(file_cover_v1_cover, 162);
5020
+ messageDesc(file_cover_v1_cover, 166);
4926
5021
 
4927
5022
  /**
4928
5023
  * @generated from message blueapi.cover.v1.ListAssetsFilters
@@ -4939,7 +5034,7 @@ export type ListAssetsFilters = Message<"blueapi.cover.v1.ListAssetsFilters"> &
4939
5034
  * Use `create(ListAssetsFiltersSchema)` to create a new message.
4940
5035
  */
4941
5036
  export const ListAssetsFiltersSchema: GenMessage<ListAssetsFilters> = /*@__PURE__*/
4942
- messageDesc(file_cover_v1_cover, 163);
5037
+ messageDesc(file_cover_v1_cover, 167);
4943
5038
 
4944
5039
  /**
4945
5040
  * @generated from message blueapi.cover.v1.Resource
@@ -5021,7 +5116,7 @@ export type Resource = Message<"blueapi.cover.v1.Resource"> & {
5021
5116
  * Use `create(ResourceSchema)` to create a new message.
5022
5117
  */
5023
5118
  export const ResourceSchema: GenMessage<Resource> = /*@__PURE__*/
5024
- messageDesc(file_cover_v1_cover, 164);
5119
+ messageDesc(file_cover_v1_cover, 168);
5025
5120
 
5026
5121
  /**
5027
5122
  * @generated from message blueapi.cover.v1.GetAssetsSummaryRequest
@@ -5075,7 +5170,7 @@ export type GetAssetsSummaryRequest = Message<"blueapi.cover.v1.GetAssetsSummary
5075
5170
  * Use `create(GetAssetsSummaryRequestSchema)` to create a new message.
5076
5171
  */
5077
5172
  export const GetAssetsSummaryRequestSchema: GenMessage<GetAssetsSummaryRequest> = /*@__PURE__*/
5078
- messageDesc(file_cover_v1_cover, 165);
5173
+ messageDesc(file_cover_v1_cover, 169);
5079
5174
 
5080
5175
  /**
5081
5176
  * @generated from message blueapi.cover.v1.GetAssetsSummaryResponse
@@ -5099,7 +5194,7 @@ export type GetAssetsSummaryResponse = Message<"blueapi.cover.v1.GetAssetsSummar
5099
5194
  * Use `create(GetAssetsSummaryResponseSchema)` to create a new message.
5100
5195
  */
5101
5196
  export const GetAssetsSummaryResponseSchema: GenMessage<GetAssetsSummaryResponse> = /*@__PURE__*/
5102
- messageDesc(file_cover_v1_cover, 166);
5197
+ messageDesc(file_cover_v1_cover, 170);
5103
5198
 
5104
5199
  /**
5105
5200
  * @generated from message blueapi.cover.v1.AssetsSummary
@@ -5139,7 +5234,7 @@ export type AssetsSummary = Message<"blueapi.cover.v1.AssetsSummary"> & {
5139
5234
  * Use `create(AssetsSummarySchema)` to create a new message.
5140
5235
  */
5141
5236
  export const AssetsSummarySchema: GenMessage<AssetsSummary> = /*@__PURE__*/
5142
- messageDesc(file_cover_v1_cover, 167);
5237
+ messageDesc(file_cover_v1_cover, 171);
5143
5238
 
5144
5239
  /**
5145
5240
  * @generated from message blueapi.cover.v1.ResolveCostGroupCombinationsRequest
@@ -5158,7 +5253,7 @@ export type ResolveCostGroupCombinationsRequest = Message<"blueapi.cover.v1.Reso
5158
5253
  * Use `create(ResolveCostGroupCombinationsRequestSchema)` to create a new message.
5159
5254
  */
5160
5255
  export const ResolveCostGroupCombinationsRequestSchema: GenMessage<ResolveCostGroupCombinationsRequest> = /*@__PURE__*/
5161
- messageDesc(file_cover_v1_cover, 168);
5256
+ messageDesc(file_cover_v1_cover, 172);
5162
5257
 
5163
5258
  /**
5164
5259
  * @generated from message blueapi.cover.v1.ResolveCostGroupCombinationsResponse
@@ -5180,7 +5275,7 @@ export type ResolveCostGroupCombinationsResponse = Message<"blueapi.cover.v1.Res
5180
5275
  * Use `create(ResolveCostGroupCombinationsResponseSchema)` to create a new message.
5181
5276
  */
5182
5277
  export const ResolveCostGroupCombinationsResponseSchema: GenMessage<ResolveCostGroupCombinationsResponse> = /*@__PURE__*/
5183
- messageDesc(file_cover_v1_cover, 169);
5278
+ messageDesc(file_cover_v1_cover, 173);
5184
5279
 
5185
5280
  /**
5186
5281
  * @generated from message blueapi.cover.v1.GetCostUsageRequest
@@ -5304,7 +5399,7 @@ export type GetCostUsageRequest = Message<"blueapi.cover.v1.GetCostUsageRequest"
5304
5399
  * Use `create(GetCostUsageRequestSchema)` to create a new message.
5305
5400
  */
5306
5401
  export const GetCostUsageRequestSchema: GenMessage<GetCostUsageRequest> = /*@__PURE__*/
5307
- messageDesc(file_cover_v1_cover, 170);
5402
+ messageDesc(file_cover_v1_cover, 174);
5308
5403
 
5309
5404
  /**
5310
5405
  * @generated from message blueapi.cover.v1.GetCostUsageRequestAwsOptions
@@ -5358,7 +5453,7 @@ export type GetCostUsageRequestAwsOptions = Message<"blueapi.cover.v1.GetCostUsa
5358
5453
  * Use `create(GetCostUsageRequestAwsOptionsSchema)` to create a new message.
5359
5454
  */
5360
5455
  export const GetCostUsageRequestAwsOptionsSchema: GenMessage<GetCostUsageRequestAwsOptions> = /*@__PURE__*/
5361
- messageDesc(file_cover_v1_cover, 171);
5456
+ messageDesc(file_cover_v1_cover, 175);
5362
5457
 
5363
5458
  /**
5364
5459
  * @generated from message blueapi.cover.v1.GetCostUsageRequestAzureOptions
@@ -5404,7 +5499,7 @@ export type GetCostUsageRequestAzureOptions = Message<"blueapi.cover.v1.GetCostU
5404
5499
  * Use `create(GetCostUsageRequestAzureOptionsSchema)` to create a new message.
5405
5500
  */
5406
5501
  export const GetCostUsageRequestAzureOptionsSchema: GenMessage<GetCostUsageRequestAzureOptions> = /*@__PURE__*/
5407
- messageDesc(file_cover_v1_cover, 172);
5502
+ messageDesc(file_cover_v1_cover, 176);
5408
5503
 
5409
5504
  /**
5410
5505
  * @generated from message blueapi.cover.v1.GetCostUsageRequestGcpOptions
@@ -5466,7 +5561,7 @@ export type GetCostUsageRequestGcpOptions = Message<"blueapi.cover.v1.GetCostUsa
5466
5561
  * Use `create(GetCostUsageRequestGcpOptionsSchema)` to create a new message.
5467
5562
  */
5468
5563
  export const GetCostUsageRequestGcpOptionsSchema: GenMessage<GetCostUsageRequestGcpOptions> = /*@__PURE__*/
5469
- messageDesc(file_cover_v1_cover, 173);
5564
+ messageDesc(file_cover_v1_cover, 177);
5470
5565
 
5471
5566
  /**
5472
5567
  * @generated from message blueapi.cover.v1.GetCostUsageRequestAzureCspOptions
@@ -5518,7 +5613,7 @@ export type GetCostUsageRequestAzureCspOptions = Message<"blueapi.cover.v1.GetCo
5518
5613
  * Use `create(GetCostUsageRequestAzureCspOptionsSchema)` to create a new message.
5519
5614
  */
5520
5615
  export const GetCostUsageRequestAzureCspOptionsSchema: GenMessage<GetCostUsageRequestAzureCspOptions> = /*@__PURE__*/
5521
- messageDesc(file_cover_v1_cover, 174);
5616
+ messageDesc(file_cover_v1_cover, 178);
5522
5617
 
5523
5618
  /**
5524
5619
  * @generated from message blueapi.cover.v1.GetCostUsageRequestCustomOptions
@@ -5580,7 +5675,7 @@ export type GetCostUsageRequestCustomOptions = Message<"blueapi.cover.v1.GetCost
5580
5675
  * Use `create(GetCostUsageRequestCustomOptionsSchema)` to create a new message.
5581
5676
  */
5582
5677
  export const GetCostUsageRequestCustomOptionsSchema: GenMessage<GetCostUsageRequestCustomOptions> = /*@__PURE__*/
5583
- messageDesc(file_cover_v1_cover, 175);
5678
+ messageDesc(file_cover_v1_cover, 179);
5584
5679
 
5585
5680
  /**
5586
5681
  * A map of "key:value" column filters. Dependent on `groupByColumns` and/or `groupByMonth`. The key indicates the column name while the value is the filter value prefixed by either "eq:" (equal), "re:" (regular expressions based on https://github.com/google/re2), or "!re:" (reverse "re:"). No prefix is the same as "eq:". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 && mapfilter2 && mapfilter3, etc.
@@ -5601,7 +5696,7 @@ export type ReadCostsRequestOptionsFilters = Message<"blueapi.cover.v1.ReadCosts
5601
5696
  * Use `create(ReadCostsRequestOptionsFiltersSchema)` to create a new message.
5602
5697
  */
5603
5698
  export const ReadCostsRequestOptionsFiltersSchema: GenMessage<ReadCostsRequestOptionsFilters> = /*@__PURE__*/
5604
- messageDesc(file_cover_v1_cover, 176);
5699
+ messageDesc(file_cover_v1_cover, 180);
5605
5700
 
5606
5701
  /**
5607
5702
  * Response message wrapper for cloud costs.
@@ -5739,7 +5834,7 @@ export type CostItem = Message<"blueapi.cover.v1.CostItem"> & {
5739
5834
  * Use `create(CostItemSchema)` to create a new message.
5740
5835
  */
5741
5836
  export const CostItemSchema: GenMessage<CostItem> = /*@__PURE__*/
5742
- messageDesc(file_cover_v1_cover, 177);
5837
+ messageDesc(file_cover_v1_cover, 181);
5743
5838
 
5744
5839
  /**
5745
5840
  * Request message for GetRightSizingRecommendation
@@ -5760,7 +5855,7 @@ export type GetRightSizingRecommendationRequest = Message<"blueapi.cover.v1.GetR
5760
5855
  * Use `create(GetRightSizingRecommendationRequestSchema)` to create a new message.
5761
5856
  */
5762
5857
  export const GetRightSizingRecommendationRequestSchema: GenMessage<GetRightSizingRecommendationRequest> = /*@__PURE__*/
5763
- messageDesc(file_cover_v1_cover, 178);
5858
+ messageDesc(file_cover_v1_cover, 182);
5764
5859
 
5765
5860
  /**
5766
5861
  * Response message for GetRightSizingRecommendation
@@ -5779,7 +5874,7 @@ export type GetRightSizingRecommendationResponse = Message<"blueapi.cover.v1.Get
5779
5874
  * Use `create(GetRightSizingRecommendationResponseSchema)` to create a new message.
5780
5875
  */
5781
5876
  export const GetRightSizingRecommendationResponseSchema: GenMessage<GetRightSizingRecommendationResponse> = /*@__PURE__*/
5782
- messageDesc(file_cover_v1_cover, 179);
5877
+ messageDesc(file_cover_v1_cover, 183);
5783
5878
 
5784
5879
  /**
5785
5880
  * Request message for ModifyResourceType
@@ -5828,7 +5923,7 @@ export type ModifyResourceTypeRequest = Message<"blueapi.cover.v1.ModifyResource
5828
5923
  * Use `create(ModifyResourceTypeRequestSchema)` to create a new message.
5829
5924
  */
5830
5925
  export const ModifyResourceTypeRequestSchema: GenMessage<ModifyResourceTypeRequest> = /*@__PURE__*/
5831
- messageDesc(file_cover_v1_cover, 180);
5926
+ messageDesc(file_cover_v1_cover, 184);
5832
5927
 
5833
5928
  /**
5834
5929
  * Response message for ModifyResourceType
@@ -5862,7 +5957,7 @@ export type ModifyResourceTypeResponse = Message<"blueapi.cover.v1.ModifyResourc
5862
5957
  * Use `create(ModifyResourceTypeResponseSchema)` to create a new message.
5863
5958
  */
5864
5959
  export const ModifyResourceTypeResponseSchema: GenMessage<ModifyResourceTypeResponse> = /*@__PURE__*/
5865
- messageDesc(file_cover_v1_cover, 181);
5960
+ messageDesc(file_cover_v1_cover, 185);
5866
5961
 
5867
5962
  /**
5868
5963
  * Request message for TerminateResource
@@ -5904,7 +5999,7 @@ export type TerminateResourceRequest = Message<"blueapi.cover.v1.TerminateResour
5904
5999
  * Use `create(TerminateResourceRequestSchema)` to create a new message.
5905
6000
  */
5906
6001
  export const TerminateResourceRequestSchema: GenMessage<TerminateResourceRequest> = /*@__PURE__*/
5907
- messageDesc(file_cover_v1_cover, 182);
6002
+ messageDesc(file_cover_v1_cover, 186);
5908
6003
 
5909
6004
  /**
5910
6005
  * Response message for TerminateResource
@@ -5933,7 +6028,7 @@ export type TerminateResourceResponse = Message<"blueapi.cover.v1.TerminateResou
5933
6028
  * Use `create(TerminateResourceResponseSchema)` to create a new message.
5934
6029
  */
5935
6030
  export const TerminateResourceResponseSchema: GenMessage<TerminateResourceResponse> = /*@__PURE__*/
5936
- messageDesc(file_cover_v1_cover, 183);
6031
+ messageDesc(file_cover_v1_cover, 187);
5937
6032
 
5938
6033
  /**
5939
6034
  * (WIP): Request message for Upload Charge Code
@@ -5974,7 +6069,7 @@ export type UploadChargeCodeRequest = Message<"blueapi.cover.v1.UploadChargeCode
5974
6069
  * Use `create(UploadChargeCodeRequestSchema)` to create a new message.
5975
6070
  */
5976
6071
  export const UploadChargeCodeRequestSchema: GenMessage<UploadChargeCodeRequest> = /*@__PURE__*/
5977
- messageDesc(file_cover_v1_cover, 184);
6072
+ messageDesc(file_cover_v1_cover, 188);
5978
6073
 
5979
6074
  /**
5980
6075
  * (WIP): Response message for Upload Charge Code
@@ -6002,7 +6097,7 @@ export type UploadChargeCodeResponse = Message<"blueapi.cover.v1.UploadChargeCod
6002
6097
  * Use `create(UploadChargeCodeResponseSchema)` to create a new message.
6003
6098
  */
6004
6099
  export const UploadChargeCodeResponseSchema: GenMessage<UploadChargeCodeResponse> = /*@__PURE__*/
6005
- messageDesc(file_cover_v1_cover, 185);
6100
+ messageDesc(file_cover_v1_cover, 189);
6006
6101
 
6007
6102
  /**
6008
6103
  * Request message for AssignPayer
@@ -6037,7 +6132,7 @@ export type AssignPayerRequest = Message<"blueapi.cover.v1.AssignPayerRequest">
6037
6132
  * Use `create(AssignPayerRequestSchema)` to create a new message.
6038
6133
  */
6039
6134
  export const AssignPayerRequestSchema: GenMessage<AssignPayerRequest> = /*@__PURE__*/
6040
- messageDesc(file_cover_v1_cover, 186);
6135
+ messageDesc(file_cover_v1_cover, 190);
6041
6136
 
6042
6137
  /**
6043
6138
  * Response message for AssignPayer
@@ -6061,7 +6156,7 @@ export type AssignPayerResponse = Message<"blueapi.cover.v1.AssignPayerResponse"
6061
6156
  * Use `create(AssignPayerResponseSchema)` to create a new message.
6062
6157
  */
6063
6158
  export const AssignPayerResponseSchema: GenMessage<AssignPayerResponse> = /*@__PURE__*/
6064
- messageDesc(file_cover_v1_cover, 187);
6159
+ messageDesc(file_cover_v1_cover, 191);
6065
6160
 
6066
6161
  /**
6067
6162
  * Request message for GetPayers
@@ -6082,7 +6177,7 @@ export type GetPayersRequest = Message<"blueapi.cover.v1.GetPayersRequest"> & {
6082
6177
  * Use `create(GetPayersRequestSchema)` to create a new message.
6083
6178
  */
6084
6179
  export const GetPayersRequestSchema: GenMessage<GetPayersRequest> = /*@__PURE__*/
6085
- messageDesc(file_cover_v1_cover, 188);
6180
+ messageDesc(file_cover_v1_cover, 192);
6086
6181
 
6087
6182
  /**
6088
6183
  * Response message for GetPayers
@@ -6101,7 +6196,7 @@ export type GetPayersResponse = Message<"blueapi.cover.v1.GetPayersResponse"> &
6101
6196
  * Use `create(GetPayersResponseSchema)` to create a new message.
6102
6197
  */
6103
6198
  export const GetPayersResponseSchema: GenMessage<GetPayersResponse> = /*@__PURE__*/
6104
- messageDesc(file_cover_v1_cover, 189);
6199
+ messageDesc(file_cover_v1_cover, 193);
6105
6200
 
6106
6201
  /**
6107
6202
  * Request message for GetAccounts
@@ -6127,7 +6222,7 @@ export type GetAccountsRequest = Message<"blueapi.cover.v1.GetAccountsRequest">
6127
6222
  * Use `create(GetAccountsRequestSchema)` to create a new message.
6128
6223
  */
6129
6224
  export const GetAccountsRequestSchema: GenMessage<GetAccountsRequest> = /*@__PURE__*/
6130
- messageDesc(file_cover_v1_cover, 190);
6225
+ messageDesc(file_cover_v1_cover, 194);
6131
6226
 
6132
6227
  /**
6133
6228
  * Response message for GetAccounts
@@ -6146,7 +6241,7 @@ export type GetAccountsResponse = Message<"blueapi.cover.v1.GetAccountsResponse"
6146
6241
  * Use `create(GetAccountsResponseSchema)` to create a new message.
6147
6242
  */
6148
6243
  export const GetAccountsResponseSchema: GenMessage<GetAccountsResponse> = /*@__PURE__*/
6149
- messageDesc(file_cover_v1_cover, 191);
6244
+ messageDesc(file_cover_v1_cover, 195);
6150
6245
 
6151
6246
  /**
6152
6247
  * Request message for GetServices
@@ -6172,7 +6267,7 @@ export type GetServicesRequest = Message<"blueapi.cover.v1.GetServicesRequest">
6172
6267
  * Use `create(GetServicesRequestSchema)` to create a new message.
6173
6268
  */
6174
6269
  export const GetServicesRequestSchema: GenMessage<GetServicesRequest> = /*@__PURE__*/
6175
- messageDesc(file_cover_v1_cover, 192);
6270
+ messageDesc(file_cover_v1_cover, 196);
6176
6271
 
6177
6272
  /**
6178
6273
  * Response message for GetServices
@@ -6191,7 +6286,7 @@ export type GetServicesResponse = Message<"blueapi.cover.v1.GetServicesResponse"
6191
6286
  * Use `create(GetServicesResponseSchema)` to create a new message.
6192
6287
  */
6193
6288
  export const GetServicesResponseSchema: GenMessage<GetServicesResponse> = /*@__PURE__*/
6194
- messageDesc(file_cover_v1_cover, 193);
6289
+ messageDesc(file_cover_v1_cover, 197);
6195
6290
 
6196
6291
  /**
6197
6292
  * Request message for GetRegions
@@ -6217,7 +6312,7 @@ export type GetRegionsRequest = Message<"blueapi.cover.v1.GetRegionsRequest"> &
6217
6312
  * Use `create(GetRegionsRequestSchema)` to create a new message.
6218
6313
  */
6219
6314
  export const GetRegionsRequestSchema: GenMessage<GetRegionsRequest> = /*@__PURE__*/
6220
- messageDesc(file_cover_v1_cover, 194);
6315
+ messageDesc(file_cover_v1_cover, 198);
6221
6316
 
6222
6317
  /**
6223
6318
  * Response message for GetRegions
@@ -6236,7 +6331,7 @@ export type GetRegionsResponse = Message<"blueapi.cover.v1.GetRegionsResponse">
6236
6331
  * Use `create(GetRegionsResponseSchema)` to create a new message.
6237
6332
  */
6238
6333
  export const GetRegionsResponseSchema: GenMessage<GetRegionsResponse> = /*@__PURE__*/
6239
- messageDesc(file_cover_v1_cover, 195);
6334
+ messageDesc(file_cover_v1_cover, 199);
6240
6335
 
6241
6336
  /**
6242
6337
  * Request message for GetTags
@@ -6262,7 +6357,7 @@ export type GetTagsRequest = Message<"blueapi.cover.v1.GetTagsRequest"> & {
6262
6357
  * Use `create(GetTagsRequestSchema)` to create a new message.
6263
6358
  */
6264
6359
  export const GetTagsRequestSchema: GenMessage<GetTagsRequest> = /*@__PURE__*/
6265
- messageDesc(file_cover_v1_cover, 196);
6360
+ messageDesc(file_cover_v1_cover, 200);
6266
6361
 
6267
6362
  /**
6268
6363
  * Response message for GetTags
@@ -6281,7 +6376,7 @@ export type GetTagsResponse = Message<"blueapi.cover.v1.GetTagsResponse"> & {
6281
6376
  * Use `create(GetTagsResponseSchema)` to create a new message.
6282
6377
  */
6283
6378
  export const GetTagsResponseSchema: GenMessage<GetTagsResponse> = /*@__PURE__*/
6284
- messageDesc(file_cover_v1_cover, 197);
6379
+ messageDesc(file_cover_v1_cover, 201);
6285
6380
 
6286
6381
  /**
6287
6382
  * Request message for the ListFees rpc.
@@ -6300,7 +6395,7 @@ export type ListFeesRequest = Message<"blueapi.cover.v1.ListFeesRequest"> & {
6300
6395
  * Use `create(ListFeesRequestSchema)` to create a new message.
6301
6396
  */
6302
6397
  export const ListFeesRequestSchema: GenMessage<ListFeesRequest> = /*@__PURE__*/
6303
- messageDesc(file_cover_v1_cover, 198);
6398
+ messageDesc(file_cover_v1_cover, 202);
6304
6399
 
6305
6400
  /**
6306
6401
  * Response message for GetFeeDetails, CreateFeeReallocation rpc.
@@ -6409,7 +6504,7 @@ export type FeeDetails = Message<"blueapi.cover.v1.FeeDetails"> & {
6409
6504
  * Use `create(FeeDetailsSchema)` to create a new message.
6410
6505
  */
6411
6506
  export const FeeDetailsSchema: GenMessage<FeeDetails> = /*@__PURE__*/
6412
- messageDesc(file_cover_v1_cover, 199);
6507
+ messageDesc(file_cover_v1_cover, 203);
6413
6508
 
6414
6509
  /**
6415
6510
  * Request message for the RestoreFee rpc.
@@ -6430,7 +6525,7 @@ export type RestoreFeeRequest = Message<"blueapi.cover.v1.RestoreFeeRequest"> &
6430
6525
  * Use `create(RestoreFeeRequestSchema)` to create a new message.
6431
6526
  */
6432
6527
  export const RestoreFeeRequestSchema: GenMessage<RestoreFeeRequest> = /*@__PURE__*/
6433
- messageDesc(file_cover_v1_cover, 200);
6528
+ messageDesc(file_cover_v1_cover, 204);
6434
6529
 
6435
6530
  /**
6436
6531
  * Request message for the GetCostGroupFee rpc.
@@ -6461,7 +6556,7 @@ export type GetCostGroupFeeRequest = Message<"blueapi.cover.v1.GetCostGroupFeeRe
6461
6556
  * Use `create(GetCostGroupFeeRequestSchema)` to create a new message.
6462
6557
  */
6463
6558
  export const GetCostGroupFeeRequestSchema: GenMessage<GetCostGroupFeeRequest> = /*@__PURE__*/
6464
- messageDesc(file_cover_v1_cover, 201);
6559
+ messageDesc(file_cover_v1_cover, 205);
6465
6560
 
6466
6561
  /**
6467
6562
  * Response message wrapper for cost group fees.
@@ -6505,7 +6600,7 @@ export type FeeItem = Message<"blueapi.cover.v1.FeeItem"> & {
6505
6600
  * Use `create(FeeItemSchema)` to create a new message.
6506
6601
  */
6507
6602
  export const FeeItemSchema: GenMessage<FeeItem> = /*@__PURE__*/
6508
- messageDesc(file_cover_v1_cover, 202);
6603
+ messageDesc(file_cover_v1_cover, 206);
6509
6604
 
6510
6605
  /**
6511
6606
  * @generated from message blueapi.cover.v1.Allocator
@@ -6545,7 +6640,7 @@ export type Allocator = Message<"blueapi.cover.v1.Allocator"> & {
6545
6640
  * Use `create(AllocatorSchema)` to create a new message.
6546
6641
  */
6547
6642
  export const AllocatorSchema: GenMessage<Allocator> = /*@__PURE__*/
6548
- messageDesc(file_cover_v1_cover, 203);
6643
+ messageDesc(file_cover_v1_cover, 207);
6549
6644
 
6550
6645
  /**
6551
6646
  * A map of "key:value" attribute filters. The key indicates the column name while the value is the filter value prefixed by either "eq:" (equal), "re:" (regular expressions based on https://github.com/google/re2), or "!re:" (reverse "re:"). No prefix is the same as "eq:". Multiple map items will use the logical 'and' operator, e.g. mapfilter1 && mapfilter2 && mapfilter3, etc.
@@ -6564,7 +6659,7 @@ export type Criteria = Message<"blueapi.cover.v1.Criteria"> & {
6564
6659
  * Use `create(CriteriaSchema)` to create a new message.
6565
6660
  */
6566
6661
  export const CriteriaSchema: GenMessage<Criteria> = /*@__PURE__*/
6567
- messageDesc(file_cover_v1_cover, 204);
6662
+ messageDesc(file_cover_v1_cover, 208);
6568
6663
 
6569
6664
  /**
6570
6665
  * @generated from message blueapi.cover.v1.CostAllocatorDetails
@@ -6637,7 +6732,7 @@ export type CostAllocatorDetails = Message<"blueapi.cover.v1.CostAllocatorDetail
6637
6732
  * Use `create(CostAllocatorDetailsSchema)` to create a new message.
6638
6733
  */
6639
6734
  export const CostAllocatorDetailsSchema: GenMessage<CostAllocatorDetails> = /*@__PURE__*/
6640
- messageDesc(file_cover_v1_cover, 205);
6735
+ messageDesc(file_cover_v1_cover, 209);
6641
6736
 
6642
6737
  /**
6643
6738
  * @generated from message blueapi.cover.v1.CostAllocatorRequest
@@ -6700,7 +6795,7 @@ export type CostAllocatorRequest = Message<"blueapi.cover.v1.CostAllocatorReques
6700
6795
  * Use `create(CostAllocatorRequestSchema)` to create a new message.
6701
6796
  */
6702
6797
  export const CostAllocatorRequestSchema: GenMessage<CostAllocatorRequest> = /*@__PURE__*/
6703
- messageDesc(file_cover_v1_cover, 206);
6798
+ messageDesc(file_cover_v1_cover, 210);
6704
6799
 
6705
6800
  /**
6706
6801
  * Request message for the ListAllocators rpc.
@@ -6715,7 +6810,7 @@ export type ListAllocatorsRequest = Message<"blueapi.cover.v1.ListAllocatorsRequ
6715
6810
  * Use `create(ListAllocatorsRequestSchema)` to create a new message.
6716
6811
  */
6717
6812
  export const ListAllocatorsRequestSchema: GenMessage<ListAllocatorsRequest> = /*@__PURE__*/
6718
- messageDesc(file_cover_v1_cover, 207);
6813
+ messageDesc(file_cover_v1_cover, 211);
6719
6814
 
6720
6815
  /**
6721
6816
  * Request message for the CreateAllocator rpc.
@@ -6777,7 +6872,7 @@ export type CreateAllocatorRequest = Message<"blueapi.cover.v1.CreateAllocatorRe
6777
6872
  * Use `create(CreateAllocatorRequestSchema)` to create a new message.
6778
6873
  */
6779
6874
  export const CreateAllocatorRequestSchema: GenMessage<CreateAllocatorRequest> = /*@__PURE__*/
6780
- messageDesc(file_cover_v1_cover, 208);
6875
+ messageDesc(file_cover_v1_cover, 212);
6781
6876
 
6782
6877
  /**
6783
6878
  * Request message for the GetAllocationAttributes rpc.
@@ -6796,7 +6891,7 @@ export type GetAllocationAttributesRequest = Message<"blueapi.cover.v1.GetAlloca
6796
6891
  * Use `create(GetAllocationAttributesRequestSchema)` to create a new message.
6797
6892
  */
6798
6893
  export const GetAllocationAttributesRequestSchema: GenMessage<GetAllocationAttributesRequest> = /*@__PURE__*/
6799
- messageDesc(file_cover_v1_cover, 209);
6894
+ messageDesc(file_cover_v1_cover, 213);
6800
6895
 
6801
6896
  /**
6802
6897
  * Response message for the GetAllocationAttributes rpc.
@@ -6815,7 +6910,7 @@ export type GetAllocationAttributesResponse = Message<"blueapi.cover.v1.GetAlloc
6815
6910
  * Use `create(GetAllocationAttributesResponseSchema)` to create a new message.
6816
6911
  */
6817
6912
  export const GetAllocationAttributesResponseSchema: GenMessage<GetAllocationAttributesResponse> = /*@__PURE__*/
6818
- messageDesc(file_cover_v1_cover, 210);
6913
+ messageDesc(file_cover_v1_cover, 214);
6819
6914
 
6820
6915
  /**
6821
6916
  * @generated from message blueapi.cover.v1.GetAllocationAttributesResponse.AllocationAttribute
@@ -6837,7 +6932,7 @@ export type GetAllocationAttributesResponse_AllocationAttribute = Message<"bluea
6837
6932
  * Use `create(GetAllocationAttributesResponse_AllocationAttributeSchema)` to create a new message.
6838
6933
  */
6839
6934
  export const GetAllocationAttributesResponse_AllocationAttributeSchema: GenMessage<GetAllocationAttributesResponse_AllocationAttribute> = /*@__PURE__*/
6840
- messageDesc(file_cover_v1_cover, 210, 0);
6935
+ messageDesc(file_cover_v1_cover, 214, 0);
6841
6936
 
6842
6937
  /**
6843
6938
  * Request message for the GetAllocationSources rpc.
@@ -6861,7 +6956,7 @@ export type GetAllocationSourcesRequest = Message<"blueapi.cover.v1.GetAllocatio
6861
6956
  * Use `create(GetAllocationSourcesRequestSchema)` to create a new message.
6862
6957
  */
6863
6958
  export const GetAllocationSourcesRequestSchema: GenMessage<GetAllocationSourcesRequest> = /*@__PURE__*/
6864
- messageDesc(file_cover_v1_cover, 211);
6959
+ messageDesc(file_cover_v1_cover, 215);
6865
6960
 
6866
6961
  /**
6867
6962
  * Response message for the GetAllocationSources rpc.
@@ -6885,7 +6980,7 @@ export type GetAllocationSourcesResponse = Message<"blueapi.cover.v1.GetAllocati
6885
6980
  * Use `create(GetAllocationSourcesResponseSchema)` to create a new message.
6886
6981
  */
6887
6982
  export const GetAllocationSourcesResponseSchema: GenMessage<GetAllocationSourcesResponse> = /*@__PURE__*/
6888
- messageDesc(file_cover_v1_cover, 212);
6983
+ messageDesc(file_cover_v1_cover, 216);
6889
6984
 
6890
6985
  /**
6891
6986
  * @generated from message blueapi.cover.v1.GetAllocationSourcesResponse.AllocationSources
@@ -6912,7 +7007,7 @@ export type GetAllocationSourcesResponse_AllocationSources = Message<"blueapi.co
6912
7007
  * Use `create(GetAllocationSourcesResponse_AllocationSourcesSchema)` to create a new message.
6913
7008
  */
6914
7009
  export const GetAllocationSourcesResponse_AllocationSourcesSchema: GenMessage<GetAllocationSourcesResponse_AllocationSources> = /*@__PURE__*/
6915
- messageDesc(file_cover_v1_cover, 212, 0);
7010
+ messageDesc(file_cover_v1_cover, 216, 0);
6916
7011
 
6917
7012
  /**
6918
7013
  * Request message for the DeleteAllocator rpc.
@@ -6933,7 +7028,7 @@ export type DeleteAllocatorRequest = Message<"blueapi.cover.v1.DeleteAllocatorRe
6933
7028
  * Use `create(DeleteAllocatorRequestSchema)` to create a new message.
6934
7029
  */
6935
7030
  export const DeleteAllocatorRequestSchema: GenMessage<DeleteAllocatorRequest> = /*@__PURE__*/
6936
- messageDesc(file_cover_v1_cover, 213);
7031
+ messageDesc(file_cover_v1_cover, 217);
6937
7032
 
6938
7033
  /**
6939
7034
  * Request message for the ProxyCreateCompletion rpc.
@@ -6952,7 +7047,7 @@ export type ProxyCreateCompletionRequest = Message<"blueapi.cover.v1.ProxyCreate
6952
7047
  * Use `create(ProxyCreateCompletionRequestSchema)` to create a new message.
6953
7048
  */
6954
7049
  export const ProxyCreateCompletionRequestSchema: GenMessage<ProxyCreateCompletionRequest> = /*@__PURE__*/
6955
- messageDesc(file_cover_v1_cover, 214);
7050
+ messageDesc(file_cover_v1_cover, 218);
6956
7051
 
6957
7052
  /**
6958
7053
  * Response message for the ProxyCreateCompletion rpc.
@@ -6971,7 +7066,7 @@ export type ProxyCreateCompletionResponse = Message<"blueapi.cover.v1.ProxyCreat
6971
7066
  * Use `create(ProxyCreateCompletionResponseSchema)` to create a new message.
6972
7067
  */
6973
7068
  export const ProxyCreateCompletionResponseSchema: GenMessage<ProxyCreateCompletionResponse> = /*@__PURE__*/
6974
- messageDesc(file_cover_v1_cover, 215);
7069
+ messageDesc(file_cover_v1_cover, 219);
6975
7070
 
6976
7071
  /**
6977
7072
  * Response message for SimulateAccountCostAllocator rpc.
@@ -7130,7 +7225,7 @@ export type AccountUsageDetails = Message<"blueapi.cover.v1.AccountUsageDetails"
7130
7225
  * Use `create(AccountUsageDetailsSchema)` to create a new message.
7131
7226
  */
7132
7227
  export const AccountUsageDetailsSchema: GenMessage<AccountUsageDetails> = /*@__PURE__*/
7133
- messageDesc(file_cover_v1_cover, 216);
7228
+ messageDesc(file_cover_v1_cover, 220);
7134
7229
 
7135
7230
  /**
7136
7231
  * Request message for the RestoreAccountUsage rpc.
@@ -7154,7 +7249,7 @@ export type ListAccountUsageRequest = Message<"blueapi.cover.v1.ListAccountUsage
7154
7249
  * Use `create(ListAccountUsageRequestSchema)` to create a new message.
7155
7250
  */
7156
7251
  export const ListAccountUsageRequestSchema: GenMessage<ListAccountUsageRequest> = /*@__PURE__*/
7157
- messageDesc(file_cover_v1_cover, 217);
7252
+ messageDesc(file_cover_v1_cover, 221);
7158
7253
 
7159
7254
  /**
7160
7255
  * Request message for the RestoreAccountUsage rpc.
@@ -7175,7 +7270,7 @@ export type RestoreAccountUsageRequest = Message<"blueapi.cover.v1.RestoreAccoun
7175
7270
  * Use `create(RestoreAccountUsageRequestSchema)` to create a new message.
7176
7271
  */
7177
7272
  export const RestoreAccountUsageRequestSchema: GenMessage<RestoreAccountUsageRequest> = /*@__PURE__*/
7178
- messageDesc(file_cover_v1_cover, 218);
7273
+ messageDesc(file_cover_v1_cover, 222);
7179
7274
 
7180
7275
  /**
7181
7276
  * Request message for the RestoreSavings rpc.
@@ -7196,7 +7291,7 @@ export type RestoreSavingsRequest = Message<"blueapi.cover.v1.RestoreSavingsRequ
7196
7291
  * Use `create(RestoreSavingsRequestSchema)` to create a new message.
7197
7292
  */
7198
7293
  export const RestoreSavingsRequestSchema: GenMessage<RestoreSavingsRequest> = /*@__PURE__*/
7199
- messageDesc(file_cover_v1_cover, 219);
7294
+ messageDesc(file_cover_v1_cover, 223);
7200
7295
 
7201
7296
  /**
7202
7297
  * Response message for ListSavings, RestoreSavings, SimulateSavings rpc.
@@ -7295,7 +7390,7 @@ export type SavingsDetails = Message<"blueapi.cover.v1.SavingsDetails"> & {
7295
7390
  * Use `create(SavingsDetailsSchema)` to create a new message.
7296
7391
  */
7297
7392
  export const SavingsDetailsSchema: GenMessage<SavingsDetails> = /*@__PURE__*/
7298
- messageDesc(file_cover_v1_cover, 220);
7393
+ messageDesc(file_cover_v1_cover, 224);
7299
7394
 
7300
7395
  /**
7301
7396
  * Request message for the GetCostGroupAllocation rpc.
@@ -7333,7 +7428,7 @@ export type GetCostGroupAllocationRequest = Message<"blueapi.cover.v1.GetCostGro
7333
7428
  * Use `create(GetCostGroupAllocationRequestSchema)` to create a new message.
7334
7429
  */
7335
7430
  export const GetCostGroupAllocationRequestSchema: GenMessage<GetCostGroupAllocationRequest> = /*@__PURE__*/
7336
- messageDesc(file_cover_v1_cover, 221);
7431
+ messageDesc(file_cover_v1_cover, 225);
7337
7432
 
7338
7433
  /**
7339
7434
  * Response message wrapper for cost group allocations.
@@ -7382,7 +7477,7 @@ export type AllocationItem = Message<"blueapi.cover.v1.AllocationItem"> & {
7382
7477
  * Use `create(AllocationItemSchema)` to create a new message.
7383
7478
  */
7384
7479
  export const AllocationItemSchema: GenMessage<AllocationItem> = /*@__PURE__*/
7385
- messageDesc(file_cover_v1_cover, 222);
7480
+ messageDesc(file_cover_v1_cover, 226);
7386
7481
 
7387
7482
  /**
7388
7483
  * Request message for AddUserFromAuth0asRoot rpc
@@ -7416,7 +7511,7 @@ export type ProcessAuth0UserRequest = Message<"blueapi.cover.v1.ProcessAuth0User
7416
7511
  * Use `create(ProcessAuth0UserRequestSchema)` to create a new message.
7417
7512
  */
7418
7513
  export const ProcessAuth0UserRequestSchema: GenMessage<ProcessAuth0UserRequest> = /*@__PURE__*/
7419
- messageDesc(file_cover_v1_cover, 223);
7514
+ messageDesc(file_cover_v1_cover, 227);
7420
7515
 
7421
7516
  /**
7422
7517
  * Response message wrapper for adding user from Auth0 as root
@@ -7435,7 +7530,7 @@ export type ProcessAuth0UserResponse = Message<"blueapi.cover.v1.ProcessAuth0Use
7435
7530
  * Use `create(ProcessAuth0UserResponseSchema)` to create a new message.
7436
7531
  */
7437
7532
  export const ProcessAuth0UserResponseSchema: GenMessage<ProcessAuth0UserResponse> = /*@__PURE__*/
7438
- messageDesc(file_cover_v1_cover, 224);
7533
+ messageDesc(file_cover_v1_cover, 228);
7439
7534
 
7440
7535
  /**
7441
7536
  * Message Response for GetDataAccess. For Azure and GCP
@@ -7508,7 +7603,7 @@ export type DataAccess = Message<"blueapi.cover.v1.DataAccess"> & {
7508
7603
  * Use `create(DataAccessSchema)` to create a new message.
7509
7604
  */
7510
7605
  export const DataAccessSchema: GenMessage<DataAccess> = /*@__PURE__*/
7511
- messageDesc(file_cover_v1_cover, 225);
7606
+ messageDesc(file_cover_v1_cover, 229);
7512
7607
 
7513
7608
  /**
7514
7609
  * Request message for Register Data Access. For azure and gcp.
@@ -7564,7 +7659,7 @@ export type RegisterDataAccessRequest = Message<"blueapi.cover.v1.RegisterDataAc
7564
7659
  * Use `create(RegisterDataAccessRequestSchema)` to create a new message.
7565
7660
  */
7566
7661
  export const RegisterDataAccessRequestSchema: GenMessage<RegisterDataAccessRequest> = /*@__PURE__*/
7567
- messageDesc(file_cover_v1_cover, 226);
7662
+ messageDesc(file_cover_v1_cover, 230);
7568
7663
 
7569
7664
  /**
7570
7665
  * Request message for UpdateDataAccess (GCP/Azure)
@@ -7620,7 +7715,7 @@ export type UpdateDataAccessRequest = Message<"blueapi.cover.v1.UpdateDataAccess
7620
7715
  * Use `create(UpdateDataAccessRequestSchema)` to create a new message.
7621
7716
  */
7622
7717
  export const UpdateDataAccessRequestSchema: GenMessage<UpdateDataAccessRequest> = /*@__PURE__*/
7623
- messageDesc(file_cover_v1_cover, 227);
7718
+ messageDesc(file_cover_v1_cover, 231);
7624
7719
 
7625
7720
  /**
7626
7721
  * Request message for ListDataAccess
@@ -7635,7 +7730,7 @@ export type ListDataAccessRequest = Message<"blueapi.cover.v1.ListDataAccessRequ
7635
7730
  * Use `create(ListDataAccessRequestSchema)` to create a new message.
7636
7731
  */
7637
7732
  export const ListDataAccessRequestSchema: GenMessage<ListDataAccessRequest> = /*@__PURE__*/
7638
- messageDesc(file_cover_v1_cover, 228);
7733
+ messageDesc(file_cover_v1_cover, 232);
7639
7734
 
7640
7735
  /**
7641
7736
  * Request message for ListUnregisteredAccounts
@@ -7650,7 +7745,7 @@ export type ListUnregisteredAccountsRequest = Message<"blueapi.cover.v1.ListUnre
7650
7745
  * Use `create(ListUnregisteredAccountsRequestSchema)` to create a new message.
7651
7746
  */
7652
7747
  export const ListUnregisteredAccountsRequestSchema: GenMessage<ListUnregisteredAccountsRequest> = /*@__PURE__*/
7653
- messageDesc(file_cover_v1_cover, 229);
7748
+ messageDesc(file_cover_v1_cover, 233);
7654
7749
 
7655
7750
  /**
7656
7751
  * Response message for ListUnregisteredAccounts
@@ -7674,7 +7769,7 @@ export type ListUnregisteredAccountsResponse = Message<"blueapi.cover.v1.ListUnr
7674
7769
  * Use `create(ListUnregisteredAccountsResponseSchema)` to create a new message.
7675
7770
  */
7676
7771
  export const ListUnregisteredAccountsResponseSchema: GenMessage<ListUnregisteredAccountsResponse> = /*@__PURE__*/
7677
- messageDesc(file_cover_v1_cover, 230);
7772
+ messageDesc(file_cover_v1_cover, 234);
7678
7773
 
7679
7774
  /**
7680
7775
  * @generated from message blueapi.cover.v1.UnregisteredAccts
@@ -7708,7 +7803,7 @@ export type UnregisteredAccts = Message<"blueapi.cover.v1.UnregisteredAccts"> &
7708
7803
  * Use `create(UnregisteredAcctsSchema)` to create a new message.
7709
7804
  */
7710
7805
  export const UnregisteredAcctsSchema: GenMessage<UnregisteredAccts> = /*@__PURE__*/
7711
- messageDesc(file_cover_v1_cover, 231);
7806
+ messageDesc(file_cover_v1_cover, 235);
7712
7807
 
7713
7808
  /**
7714
7809
  * Request message for AddBillingAccount
@@ -7757,7 +7852,7 @@ export type BillingAccountRequest = Message<"blueapi.cover.v1.BillingAccountRequ
7757
7852
  * Use `create(BillingAccountRequestSchema)` to create a new message.
7758
7853
  */
7759
7854
  export const BillingAccountRequestSchema: GenMessage<BillingAccountRequest> = /*@__PURE__*/
7760
- messageDesc(file_cover_v1_cover, 232);
7855
+ messageDesc(file_cover_v1_cover, 236);
7761
7856
 
7762
7857
  /**
7763
7858
  * @generated from message blueapi.cover.v1.GetAndDeleteDataAccessRequest
@@ -7790,7 +7885,7 @@ export type GetAndDeleteDataAccessRequest = Message<"blueapi.cover.v1.GetAndDele
7790
7885
  * Use `create(GetAndDeleteDataAccessRequestSchema)` to create a new message.
7791
7886
  */
7792
7887
  export const GetAndDeleteDataAccessRequestSchema: GenMessage<GetAndDeleteDataAccessRequest> = /*@__PURE__*/
7793
- messageDesc(file_cover_v1_cover, 233);
7888
+ messageDesc(file_cover_v1_cover, 237);
7794
7889
 
7795
7890
  /**
7796
7891
  * Request message for AddPartnerCenterCredentials
@@ -7825,7 +7920,7 @@ export type AddPartnerCenterCredentialsRequest = Message<"blueapi.cover.v1.AddPa
7825
7920
  * Use `create(AddPartnerCenterCredentialsRequestSchema)` to create a new message.
7826
7921
  */
7827
7922
  export const AddPartnerCenterCredentialsRequestSchema: GenMessage<AddPartnerCenterCredentialsRequest> = /*@__PURE__*/
7828
- messageDesc(file_cover_v1_cover, 234);
7923
+ messageDesc(file_cover_v1_cover, 238);
7829
7924
 
7830
7925
  /**
7831
7926
  * Request message for AddMpnSetting
@@ -7846,7 +7941,7 @@ export type AddMpnSettingRequest = Message<"blueapi.cover.v1.AddMpnSettingReques
7846
7941
  * Use `create(AddMpnSettingRequestSchema)` to create a new message.
7847
7942
  */
7848
7943
  export const AddMpnSettingRequestSchema: GenMessage<AddMpnSettingRequest> = /*@__PURE__*/
7849
- messageDesc(file_cover_v1_cover, 235);
7944
+ messageDesc(file_cover_v1_cover, 239);
7850
7945
 
7851
7946
  /**
7852
7947
  * Request message for GetCostGroupAttribute
@@ -7892,7 +7987,7 @@ export type GetCostGroupAttributeRequest = Message<"blueapi.cover.v1.GetCostGrou
7892
7987
  * Use `create(GetCostGroupAttributeRequestSchema)` to create a new message.
7893
7988
  */
7894
7989
  export const GetCostGroupAttributeRequestSchema: GenMessage<GetCostGroupAttributeRequest> = /*@__PURE__*/
7895
- messageDesc(file_cover_v1_cover, 236);
7990
+ messageDesc(file_cover_v1_cover, 240);
7896
7991
 
7897
7992
  /**
7898
7993
  * Response message for GetCostGroupAttribute
@@ -7916,7 +8011,7 @@ export type GetCostGroupAttributeResponse = Message<"blueapi.cover.v1.GetCostGro
7916
8011
  * Use `create(GetCostGroupAttributeResponseSchema)` to create a new message.
7917
8012
  */
7918
8013
  export const GetCostGroupAttributeResponseSchema: GenMessage<GetCostGroupAttributeResponse> = /*@__PURE__*/
7919
- messageDesc(file_cover_v1_cover, 237);
8014
+ messageDesc(file_cover_v1_cover, 241);
7920
8015
 
7921
8016
  /**
7922
8017
  * @generated from message blueapi.cover.v1.GetCategoriesRequest
@@ -7933,7 +8028,7 @@ export type GetCategoriesRequest = Message<"blueapi.cover.v1.GetCategoriesReques
7933
8028
  * Use `create(GetCategoriesRequestSchema)` to create a new message.
7934
8029
  */
7935
8030
  export const GetCategoriesRequestSchema: GenMessage<GetCategoriesRequest> = /*@__PURE__*/
7936
- messageDesc(file_cover_v1_cover, 238);
8031
+ messageDesc(file_cover_v1_cover, 242);
7937
8032
 
7938
8033
  /**
7939
8034
  * @generated from message blueapi.cover.v1.GetCategoriesResponse
@@ -7950,7 +8045,7 @@ export type GetCategoriesResponse = Message<"blueapi.cover.v1.GetCategoriesRespo
7950
8045
  * Use `create(GetCategoriesResponseSchema)` to create a new message.
7951
8046
  */
7952
8047
  export const GetCategoriesResponseSchema: GenMessage<GetCategoriesResponse> = /*@__PURE__*/
7953
- messageDesc(file_cover_v1_cover, 239);
8048
+ messageDesc(file_cover_v1_cover, 243);
7954
8049
 
7955
8050
  /**
7956
8051
  * Request message for GetAlerts
@@ -7965,7 +8060,7 @@ export type GetAlertsRequest = Message<"blueapi.cover.v1.GetAlertsRequest"> & {
7965
8060
  * Use `create(GetAlertsRequestSchema)` to create a new message.
7966
8061
  */
7967
8062
  export const GetAlertsRequestSchema: GenMessage<GetAlertsRequest> = /*@__PURE__*/
7968
- messageDesc(file_cover_v1_cover, 240);
8063
+ messageDesc(file_cover_v1_cover, 244);
7969
8064
 
7970
8065
  /**
7971
8066
  * Response message for GetAlerts
@@ -7984,7 +8079,7 @@ export type GetAlertsResponse = Message<"blueapi.cover.v1.GetAlertsResponse"> &
7984
8079
  * Use `create(GetAlertsResponseSchema)` to create a new message.
7985
8080
  */
7986
8081
  export const GetAlertsResponseSchema: GenMessage<GetAlertsResponse> = /*@__PURE__*/
7987
- messageDesc(file_cover_v1_cover, 241);
8082
+ messageDesc(file_cover_v1_cover, 245);
7988
8083
 
7989
8084
  /**
7990
8085
  * Request message for CreateAlert
@@ -8038,7 +8133,7 @@ export type CreateAlertRequest = Message<"blueapi.cover.v1.CreateAlertRequest">
8038
8133
  * Use `create(CreateAlertRequestSchema)` to create a new message.
8039
8134
  */
8040
8135
  export const CreateAlertRequestSchema: GenMessage<CreateAlertRequest> = /*@__PURE__*/
8041
- messageDesc(file_cover_v1_cover, 242);
8136
+ messageDesc(file_cover_v1_cover, 246);
8042
8137
 
8043
8138
  /**
8044
8139
  * Response message for CreateAlert
@@ -8057,7 +8152,7 @@ export type CreateAlertResponse = Message<"blueapi.cover.v1.CreateAlertResponse"
8057
8152
  * Use `create(CreateAlertResponseSchema)` to create a new message.
8058
8153
  */
8059
8154
  export const CreateAlertResponseSchema: GenMessage<CreateAlertResponse> = /*@__PURE__*/
8060
- messageDesc(file_cover_v1_cover, 243);
8155
+ messageDesc(file_cover_v1_cover, 247);
8061
8156
 
8062
8157
  /**
8063
8158
  * Request message for GetAlertDetails
@@ -8078,7 +8173,7 @@ export type GetAlertDetailsRequest = Message<"blueapi.cover.v1.GetAlertDetailsRe
8078
8173
  * Use `create(GetAlertDetailsRequestSchema)` to create a new message.
8079
8174
  */
8080
8175
  export const GetAlertDetailsRequestSchema: GenMessage<GetAlertDetailsRequest> = /*@__PURE__*/
8081
- messageDesc(file_cover_v1_cover, 244);
8176
+ messageDesc(file_cover_v1_cover, 248);
8082
8177
 
8083
8178
  /**
8084
8179
  * Response message for GetAlertDetails
@@ -8097,7 +8192,7 @@ export type GetAlertDetailsResponse = Message<"blueapi.cover.v1.GetAlertDetailsR
8097
8192
  * Use `create(GetAlertDetailsResponseSchema)` to create a new message.
8098
8193
  */
8099
8194
  export const GetAlertDetailsResponseSchema: GenMessage<GetAlertDetailsResponse> = /*@__PURE__*/
8100
- messageDesc(file_cover_v1_cover, 245);
8195
+ messageDesc(file_cover_v1_cover, 249);
8101
8196
 
8102
8197
  /**
8103
8198
  * Request message for DeleteAlert
@@ -8118,7 +8213,7 @@ export type DeleteAlertRequest = Message<"blueapi.cover.v1.DeleteAlertRequest">
8118
8213
  * Use `create(DeleteAlertRequestSchema)` to create a new message.
8119
8214
  */
8120
8215
  export const DeleteAlertRequestSchema: GenMessage<DeleteAlertRequest> = /*@__PURE__*/
8121
- messageDesc(file_cover_v1_cover, 246);
8216
+ messageDesc(file_cover_v1_cover, 250);
8122
8217
 
8123
8218
  /**
8124
8219
  * Response message for DeleteAlert
@@ -8137,7 +8232,7 @@ export type DeleteAlertResponse = Message<"blueapi.cover.v1.DeleteAlertResponse"
8137
8232
  * Use `create(DeleteAlertResponseSchema)` to create a new message.
8138
8233
  */
8139
8234
  export const DeleteAlertResponseSchema: GenMessage<DeleteAlertResponse> = /*@__PURE__*/
8140
- messageDesc(file_cover_v1_cover, 247);
8235
+ messageDesc(file_cover_v1_cover, 251);
8141
8236
 
8142
8237
  /**
8143
8238
  * Request message for UpdateAlertDetails
@@ -8199,7 +8294,7 @@ export type UpdateAlertDetailsRequest = Message<"blueapi.cover.v1.UpdateAlertDet
8199
8294
  * Use `create(UpdateAlertDetailsRequestSchema)` to create a new message.
8200
8295
  */
8201
8296
  export const UpdateAlertDetailsRequestSchema: GenMessage<UpdateAlertDetailsRequest> = /*@__PURE__*/
8202
- messageDesc(file_cover_v1_cover, 248);
8297
+ messageDesc(file_cover_v1_cover, 252);
8203
8298
 
8204
8299
  /**
8205
8300
  * Response message for UpdateAlertDetails
@@ -8218,7 +8313,7 @@ export type UpdateAlertDetailsResponse = Message<"blueapi.cover.v1.UpdateAlertDe
8218
8313
  * Use `create(UpdateAlertDetailsResponseSchema)` to create a new message.
8219
8314
  */
8220
8315
  export const UpdateAlertDetailsResponseSchema: GenMessage<UpdateAlertDetailsResponse> = /*@__PURE__*/
8221
- messageDesc(file_cover_v1_cover, 249);
8316
+ messageDesc(file_cover_v1_cover, 253);
8222
8317
 
8223
8318
  /**
8224
8319
  * Request message for GetChannels
@@ -8240,7 +8335,7 @@ export type GetChannelsRequest = Message<"blueapi.cover.v1.GetChannelsRequest">
8240
8335
  * Use `create(GetChannelsRequestSchema)` to create a new message.
8241
8336
  */
8242
8337
  export const GetChannelsRequestSchema: GenMessage<GetChannelsRequest> = /*@__PURE__*/
8243
- messageDesc(file_cover_v1_cover, 250);
8338
+ messageDesc(file_cover_v1_cover, 254);
8244
8339
 
8245
8340
  /**
8246
8341
  * Response message for GetChannels
@@ -8259,7 +8354,7 @@ export type GetChannelsResponse = Message<"blueapi.cover.v1.GetChannelsResponse"
8259
8354
  * Use `create(GetChannelsResponseSchema)` to create a new message.
8260
8355
  */
8261
8356
  export const GetChannelsResponseSchema: GenMessage<GetChannelsResponse> = /*@__PURE__*/
8262
- messageDesc(file_cover_v1_cover, 251);
8357
+ messageDesc(file_cover_v1_cover, 255);
8263
8358
 
8264
8359
  /**
8265
8360
  * Request message for CreateChannel
@@ -8294,7 +8389,7 @@ export type CreateChannelRequest = Message<"blueapi.cover.v1.CreateChannelReques
8294
8389
  * Use `create(CreateChannelRequestSchema)` to create a new message.
8295
8390
  */
8296
8391
  export const CreateChannelRequestSchema: GenMessage<CreateChannelRequest> = /*@__PURE__*/
8297
- messageDesc(file_cover_v1_cover, 252);
8392
+ messageDesc(file_cover_v1_cover, 256);
8298
8393
 
8299
8394
  /**
8300
8395
  * Response message for CreateChannel
@@ -8313,7 +8408,7 @@ export type CreateChannelResponse = Message<"blueapi.cover.v1.CreateChannelRespo
8313
8408
  * Use `create(CreateChannelResponseSchema)` to create a new message.
8314
8409
  */
8315
8410
  export const CreateChannelResponseSchema: GenMessage<CreateChannelResponse> = /*@__PURE__*/
8316
- messageDesc(file_cover_v1_cover, 253);
8411
+ messageDesc(file_cover_v1_cover, 257);
8317
8412
 
8318
8413
  /**
8319
8414
  * Request message for GetChannelDetails
@@ -8334,7 +8429,7 @@ export type GetChannelDetailsRequest = Message<"blueapi.cover.v1.GetChannelDetai
8334
8429
  * Use `create(GetChannelDetailsRequestSchema)` to create a new message.
8335
8430
  */
8336
8431
  export const GetChannelDetailsRequestSchema: GenMessage<GetChannelDetailsRequest> = /*@__PURE__*/
8337
- messageDesc(file_cover_v1_cover, 254);
8432
+ messageDesc(file_cover_v1_cover, 258);
8338
8433
 
8339
8434
  /**
8340
8435
  * Response message for GetChannelDetails
@@ -8353,7 +8448,7 @@ export type GetChannelDetailsResponse = Message<"blueapi.cover.v1.GetChannelDeta
8353
8448
  * Use `create(GetChannelDetailsResponseSchema)` to create a new message.
8354
8449
  */
8355
8450
  export const GetChannelDetailsResponseSchema: GenMessage<GetChannelDetailsResponse> = /*@__PURE__*/
8356
- messageDesc(file_cover_v1_cover, 255);
8451
+ messageDesc(file_cover_v1_cover, 259);
8357
8452
 
8358
8453
  /**
8359
8454
  * Request message for DeleteChannel
@@ -8374,7 +8469,7 @@ export type DeleteChannelRequest = Message<"blueapi.cover.v1.DeleteChannelReques
8374
8469
  * Use `create(DeleteChannelRequestSchema)` to create a new message.
8375
8470
  */
8376
8471
  export const DeleteChannelRequestSchema: GenMessage<DeleteChannelRequest> = /*@__PURE__*/
8377
- messageDesc(file_cover_v1_cover, 256);
8472
+ messageDesc(file_cover_v1_cover, 260);
8378
8473
 
8379
8474
  /**
8380
8475
  * Response message for DeleteChannel
@@ -8393,7 +8488,7 @@ export type DeleteChannelResponse = Message<"blueapi.cover.v1.DeleteChannelRespo
8393
8488
  * Use `create(DeleteChannelResponseSchema)` to create a new message.
8394
8489
  */
8395
8490
  export const DeleteChannelResponseSchema: GenMessage<DeleteChannelResponse> = /*@__PURE__*/
8396
- messageDesc(file_cover_v1_cover, 257);
8491
+ messageDesc(file_cover_v1_cover, 261);
8397
8492
 
8398
8493
  /**
8399
8494
  * Request message for UpdateChannelDetails
@@ -8436,7 +8531,7 @@ export type UpdateChannelDetailsRequest = Message<"blueapi.cover.v1.UpdateChanne
8436
8531
  * Use `create(UpdateChannelDetailsRequestSchema)` to create a new message.
8437
8532
  */
8438
8533
  export const UpdateChannelDetailsRequestSchema: GenMessage<UpdateChannelDetailsRequest> = /*@__PURE__*/
8439
- messageDesc(file_cover_v1_cover, 258);
8534
+ messageDesc(file_cover_v1_cover, 262);
8440
8535
 
8441
8536
  /**
8442
8537
  * Response message for UpdateChannelDetails
@@ -8455,7 +8550,7 @@ export type UpdateChannelDetailsResponse = Message<"blueapi.cover.v1.UpdateChann
8455
8550
  * Use `create(UpdateChannelDetailsResponseSchema)` to create a new message.
8456
8551
  */
8457
8552
  export const UpdateChannelDetailsResponseSchema: GenMessage<UpdateChannelDetailsResponse> = /*@__PURE__*/
8458
- messageDesc(file_cover_v1_cover, 259);
8553
+ messageDesc(file_cover_v1_cover, 263);
8459
8554
 
8460
8555
  /**
8461
8556
  * Request message for GetDiscountRecomemendations
@@ -8497,7 +8592,7 @@ export type GetDiscountRecommendationsRequest = Message<"blueapi.cover.v1.GetDis
8497
8592
  * Use `create(GetDiscountRecommendationsRequestSchema)` to create a new message.
8498
8593
  */
8499
8594
  export const GetDiscountRecommendationsRequestSchema: GenMessage<GetDiscountRecommendationsRequest> = /*@__PURE__*/
8500
- messageDesc(file_cover_v1_cover, 260);
8595
+ messageDesc(file_cover_v1_cover, 264);
8501
8596
 
8502
8597
  /**
8503
8598
  * Response message for GetDiscountRecommendations
@@ -8526,7 +8621,7 @@ export type GetDiscountRecommendationsResponse = Message<"blueapi.cover.v1.GetDi
8526
8621
  * Use `create(GetDiscountRecommendationsResponseSchema)` to create a new message.
8527
8622
  */
8528
8623
  export const GetDiscountRecommendationsResponseSchema: GenMessage<GetDiscountRecommendationsResponse> = /*@__PURE__*/
8529
- messageDesc(file_cover_v1_cover, 261);
8624
+ messageDesc(file_cover_v1_cover, 265);
8530
8625
 
8531
8626
  /**
8532
8627
  * Request message for getting anomaly
@@ -8559,7 +8654,7 @@ export type GetAnomalyinCostGroupRequest = Message<"blueapi.cover.v1.GetAnomalyi
8559
8654
  * Use `create(GetAnomalyinCostGroupRequestSchema)` to create a new message.
8560
8655
  */
8561
8656
  export const GetAnomalyinCostGroupRequestSchema: GenMessage<GetAnomalyinCostGroupRequest> = /*@__PURE__*/
8562
- messageDesc(file_cover_v1_cover, 262);
8657
+ messageDesc(file_cover_v1_cover, 266);
8563
8658
 
8564
8659
  /**
8565
8660
  * Message response for anomaly detection
@@ -8638,7 +8733,7 @@ export type AnomalyData = Message<"blueapi.cover.v1.AnomalyData"> & {
8638
8733
  * Use `create(AnomalyDataSchema)` to create a new message.
8639
8734
  */
8640
8735
  export const AnomalyDataSchema: GenMessage<AnomalyData> = /*@__PURE__*/
8641
- messageDesc(file_cover_v1_cover, 263);
8736
+ messageDesc(file_cover_v1_cover, 267);
8642
8737
 
8643
8738
  /**
8644
8739
  * Request message for CreateDiscountExpirationAlert
@@ -8689,7 +8784,7 @@ export type CreateDiscountExpirationAlertRequest = Message<"blueapi.cover.v1.Cre
8689
8784
  * Use `create(CreateDiscountExpirationAlertRequestSchema)` to create a new message.
8690
8785
  */
8691
8786
  export const CreateDiscountExpirationAlertRequestSchema: GenMessage<CreateDiscountExpirationAlertRequest> = /*@__PURE__*/
8692
- messageDesc(file_cover_v1_cover, 264);
8787
+ messageDesc(file_cover_v1_cover, 268);
8693
8788
 
8694
8789
  /**
8695
8790
  * @generated from message blueapi.cover.v1.ManipulateDiscountExpirationAlertRequest
@@ -8708,7 +8803,7 @@ export type ManipulateDiscountExpirationAlertRequest = Message<"blueapi.cover.v1
8708
8803
  * Use `create(ManipulateDiscountExpirationAlertRequestSchema)` to create a new message.
8709
8804
  */
8710
8805
  export const ManipulateDiscountExpirationAlertRequestSchema: GenMessage<ManipulateDiscountExpirationAlertRequest> = /*@__PURE__*/
8711
- messageDesc(file_cover_v1_cover, 265);
8806
+ messageDesc(file_cover_v1_cover, 269);
8712
8807
 
8713
8808
  /**
8714
8809
  * @generated from message blueapi.cover.v1.UpdateDiscountExpirationAlertRequest
@@ -8762,7 +8857,7 @@ export type UpdateDiscountExpirationAlertRequest = Message<"blueapi.cover.v1.Upd
8762
8857
  * Use `create(UpdateDiscountExpirationAlertRequestSchema)` to create a new message.
8763
8858
  */
8764
8859
  export const UpdateDiscountExpirationAlertRequestSchema: GenMessage<UpdateDiscountExpirationAlertRequest> = /*@__PURE__*/
8765
- messageDesc(file_cover_v1_cover, 266);
8860
+ messageDesc(file_cover_v1_cover, 270);
8766
8861
 
8767
8862
  /**
8768
8863
  * @generated from message blueapi.cover.v1.DiscountExpiryAlertData
@@ -8814,7 +8909,7 @@ export type DiscountExpiryAlertData = Message<"blueapi.cover.v1.DiscountExpiryAl
8814
8909
  * Use `create(DiscountExpiryAlertDataSchema)` to create a new message.
8815
8910
  */
8816
8911
  export const DiscountExpiryAlertDataSchema: GenMessage<DiscountExpiryAlertData> = /*@__PURE__*/
8817
- messageDesc(file_cover_v1_cover, 267);
8912
+ messageDesc(file_cover_v1_cover, 271);
8818
8913
 
8819
8914
  /**
8820
8915
  * Request message for ListDiscountExpirationAlert
@@ -8829,7 +8924,7 @@ export type ListDiscountExpirationAlertRequest = Message<"blueapi.cover.v1.ListD
8829
8924
  * Use `create(ListDiscountExpirationAlertRequestSchema)` to create a new message.
8830
8925
  */
8831
8926
  export const ListDiscountExpirationAlertRequestSchema: GenMessage<ListDiscountExpirationAlertRequest> = /*@__PURE__*/
8832
- messageDesc(file_cover_v1_cover, 268);
8927
+ messageDesc(file_cover_v1_cover, 272);
8833
8928
 
8834
8929
  /**
8835
8930
  * Rquest message for CreateAnomalyAlert
@@ -8878,7 +8973,7 @@ export type CreateAnomalyAlertRequest = Message<"blueapi.cover.v1.CreateAnomalyA
8878
8973
  * Use `create(CreateAnomalyAlertRequestSchema)` to create a new message.
8879
8974
  */
8880
8975
  export const CreateAnomalyAlertRequestSchema: GenMessage<CreateAnomalyAlertRequest> = /*@__PURE__*/
8881
- messageDesc(file_cover_v1_cover, 269);
8976
+ messageDesc(file_cover_v1_cover, 273);
8882
8977
 
8883
8978
  /**
8884
8979
  * @generated from message blueapi.cover.v1.ManipulateAnomalyAlertRequest
@@ -8897,7 +8992,7 @@ export type ManipulateAnomalyAlertRequest = Message<"blueapi.cover.v1.Manipulate
8897
8992
  * Use `create(ManipulateAnomalyAlertRequestSchema)` to create a new message.
8898
8993
  */
8899
8994
  export const ManipulateAnomalyAlertRequestSchema: GenMessage<ManipulateAnomalyAlertRequest> = /*@__PURE__*/
8900
- messageDesc(file_cover_v1_cover, 270);
8995
+ messageDesc(file_cover_v1_cover, 274);
8901
8996
 
8902
8997
  /**
8903
8998
  * @generated from message blueapi.cover.v1.AnomalyAlertData
@@ -8944,7 +9039,7 @@ export type AnomalyAlertData = Message<"blueapi.cover.v1.AnomalyAlertData"> & {
8944
9039
  * Use `create(AnomalyAlertDataSchema)` to create a new message.
8945
9040
  */
8946
9041
  export const AnomalyAlertDataSchema: GenMessage<AnomalyAlertData> = /*@__PURE__*/
8947
- messageDesc(file_cover_v1_cover, 271);
9042
+ messageDesc(file_cover_v1_cover, 275);
8948
9043
 
8949
9044
  /**
8950
9045
  * Request message for ListAnomalyAlert
@@ -8959,7 +9054,7 @@ export type ListAnomalyAlertRequest = Message<"blueapi.cover.v1.ListAnomalyAlert
8959
9054
  * Use `create(ListAnomalyAlertRequestSchema)` to create a new message.
8960
9055
  */
8961
9056
  export const ListAnomalyAlertRequestSchema: GenMessage<ListAnomalyAlertRequest> = /*@__PURE__*/
8962
- messageDesc(file_cover_v1_cover, 272);
9057
+ messageDesc(file_cover_v1_cover, 276);
8963
9058
 
8964
9059
  /**
8965
9060
  * @generated from message blueapi.cover.v1.UpdateAnomalyAlertRequest
@@ -9013,7 +9108,7 @@ export type UpdateAnomalyAlertRequest = Message<"blueapi.cover.v1.UpdateAnomalyA
9013
9108
  * Use `create(UpdateAnomalyAlertRequestSchema)` to create a new message.
9014
9109
  */
9015
9110
  export const UpdateAnomalyAlertRequestSchema: GenMessage<UpdateAnomalyAlertRequest> = /*@__PURE__*/
9016
- messageDesc(file_cover_v1_cover, 273);
9111
+ messageDesc(file_cover_v1_cover, 277);
9017
9112
 
9018
9113
  /**
9019
9114
  * Request message for RegisterNewUser
@@ -9076,7 +9171,7 @@ export type RegisterNewUserRequest = Message<"blueapi.cover.v1.RegisterNewUserRe
9076
9171
  * Use `create(RegisterNewUserRequestSchema)` to create a new message.
9077
9172
  */
9078
9173
  export const RegisterNewUserRequestSchema: GenMessage<RegisterNewUserRequest> = /*@__PURE__*/
9079
- messageDesc(file_cover_v1_cover, 274);
9174
+ messageDesc(file_cover_v1_cover, 278);
9080
9175
 
9081
9176
  /**
9082
9177
  * @generated from message blueapi.cover.v1.RegisterNewUserResponse
@@ -9093,7 +9188,7 @@ export type RegisterNewUserResponse = Message<"blueapi.cover.v1.RegisterNewUserR
9093
9188
  * Use `create(RegisterNewUserResponseSchema)` to create a new message.
9094
9189
  */
9095
9190
  export const RegisterNewUserResponseSchema: GenMessage<RegisterNewUserResponse> = /*@__PURE__*/
9096
- messageDesc(file_cover_v1_cover, 275);
9191
+ messageDesc(file_cover_v1_cover, 279);
9097
9192
 
9098
9193
  /**
9099
9194
  * Request message for GetUserProfile
@@ -9114,7 +9209,7 @@ export type GetUserProfileRequest = Message<"blueapi.cover.v1.GetUserProfileRequ
9114
9209
  * Use `create(GetUserProfileRequestSchema)` to create a new message.
9115
9210
  */
9116
9211
  export const GetUserProfileRequestSchema: GenMessage<GetUserProfileRequest> = /*@__PURE__*/
9117
- messageDesc(file_cover_v1_cover, 276);
9212
+ messageDesc(file_cover_v1_cover, 280);
9118
9213
 
9119
9214
  /**
9120
9215
  * @generated from message blueapi.cover.v1.GetUserProfileResponse
@@ -9171,7 +9266,7 @@ export type GetUserProfileResponse = Message<"blueapi.cover.v1.GetUserProfileRes
9171
9266
  * Use `create(GetUserProfileResponseSchema)` to create a new message.
9172
9267
  */
9173
9268
  export const GetUserProfileResponseSchema: GenMessage<GetUserProfileResponse> = /*@__PURE__*/
9174
- messageDesc(file_cover_v1_cover, 277);
9269
+ messageDesc(file_cover_v1_cover, 281);
9175
9270
 
9176
9271
  /**
9177
9272
  * Request message for UpdateUserProfile
@@ -9227,7 +9322,7 @@ export type UpdateUserProfileRequest = Message<"blueapi.cover.v1.UpdateUserProfi
9227
9322
  * Use `create(UpdateUserProfileRequestSchema)` to create a new message.
9228
9323
  */
9229
9324
  export const UpdateUserProfileRequestSchema: GenMessage<UpdateUserProfileRequest> = /*@__PURE__*/
9230
- messageDesc(file_cover_v1_cover, 278);
9325
+ messageDesc(file_cover_v1_cover, 282);
9231
9326
 
9232
9327
  /**
9233
9328
  * @generated from message blueapi.cover.v1.UpdateUserProfileResponse
@@ -9279,7 +9374,7 @@ export type UpdateUserProfileResponse = Message<"blueapi.cover.v1.UpdateUserProf
9279
9374
  * Use `create(UpdateUserProfileResponseSchema)` to create a new message.
9280
9375
  */
9281
9376
  export const UpdateUserProfileResponseSchema: GenMessage<UpdateUserProfileResponse> = /*@__PURE__*/
9282
- messageDesc(file_cover_v1_cover, 279);
9377
+ messageDesc(file_cover_v1_cover, 283);
9283
9378
 
9284
9379
  /**
9285
9380
  * @generated from message blueapi.cover.v1.ListBudgetsRequest
@@ -9305,7 +9400,7 @@ export type ListBudgetsRequest = Message<"blueapi.cover.v1.ListBudgetsRequest">
9305
9400
  * Use `create(ListBudgetsRequestSchema)` to create a new message.
9306
9401
  */
9307
9402
  export const ListBudgetsRequestSchema: GenMessage<ListBudgetsRequest> = /*@__PURE__*/
9308
- messageDesc(file_cover_v1_cover, 280);
9403
+ messageDesc(file_cover_v1_cover, 284);
9309
9404
 
9310
9405
  /**
9311
9406
  * @generated from message blueapi.cover.v1.ListBudgetsResponse
@@ -9322,7 +9417,7 @@ export type ListBudgetsResponse = Message<"blueapi.cover.v1.ListBudgetsResponse"
9322
9417
  * Use `create(ListBudgetsResponseSchema)` to create a new message.
9323
9418
  */
9324
9419
  export const ListBudgetsResponseSchema: GenMessage<ListBudgetsResponse> = /*@__PURE__*/
9325
- messageDesc(file_cover_v1_cover, 281);
9420
+ messageDesc(file_cover_v1_cover, 285);
9326
9421
 
9327
9422
  /**
9328
9423
  * @generated from message blueapi.cover.v1.GetBudgetRequest
@@ -9341,7 +9436,7 @@ export type GetBudgetRequest = Message<"blueapi.cover.v1.GetBudgetRequest"> & {
9341
9436
  * Use `create(GetBudgetRequestSchema)` to create a new message.
9342
9437
  */
9343
9438
  export const GetBudgetRequestSchema: GenMessage<GetBudgetRequest> = /*@__PURE__*/
9344
- messageDesc(file_cover_v1_cover, 282);
9439
+ messageDesc(file_cover_v1_cover, 286);
9345
9440
 
9346
9441
  /**
9347
9442
  * @generated from message blueapi.cover.v1.GetBudgetResponse
@@ -9358,7 +9453,7 @@ export type GetBudgetResponse = Message<"blueapi.cover.v1.GetBudgetResponse"> &
9358
9453
  * Use `create(GetBudgetResponseSchema)` to create a new message.
9359
9454
  */
9360
9455
  export const GetBudgetResponseSchema: GenMessage<GetBudgetResponse> = /*@__PURE__*/
9361
- messageDesc(file_cover_v1_cover, 283);
9456
+ messageDesc(file_cover_v1_cover, 287);
9362
9457
 
9363
9458
  /**
9364
9459
  * @generated from message blueapi.cover.v1.CreateBudgetRequest
@@ -9375,7 +9470,7 @@ export type CreateBudgetRequest = Message<"blueapi.cover.v1.CreateBudgetRequest"
9375
9470
  * Use `create(CreateBudgetRequestSchema)` to create a new message.
9376
9471
  */
9377
9472
  export const CreateBudgetRequestSchema: GenMessage<CreateBudgetRequest> = /*@__PURE__*/
9378
- messageDesc(file_cover_v1_cover, 284);
9473
+ messageDesc(file_cover_v1_cover, 288);
9379
9474
 
9380
9475
  /**
9381
9476
  * @generated from message blueapi.cover.v1.CreateBudgetResponse
@@ -9392,7 +9487,7 @@ export type CreateBudgetResponse = Message<"blueapi.cover.v1.CreateBudgetRespons
9392
9487
  * Use `create(CreateBudgetResponseSchema)` to create a new message.
9393
9488
  */
9394
9489
  export const CreateBudgetResponseSchema: GenMessage<CreateBudgetResponse> = /*@__PURE__*/
9395
- messageDesc(file_cover_v1_cover, 285);
9490
+ messageDesc(file_cover_v1_cover, 289);
9396
9491
 
9397
9492
  /**
9398
9493
  * @generated from message blueapi.cover.v1.DeleteBudgetRequest
@@ -9411,7 +9506,7 @@ export type DeleteBudgetRequest = Message<"blueapi.cover.v1.DeleteBudgetRequest"
9411
9506
  * Use `create(DeleteBudgetRequestSchema)` to create a new message.
9412
9507
  */
9413
9508
  export const DeleteBudgetRequestSchema: GenMessage<DeleteBudgetRequest> = /*@__PURE__*/
9414
- messageDesc(file_cover_v1_cover, 286);
9509
+ messageDesc(file_cover_v1_cover, 290);
9415
9510
 
9416
9511
  /**
9417
9512
  * @generated from message blueapi.cover.v1.DeleteBudgetResponse
@@ -9428,7 +9523,7 @@ export type DeleteBudgetResponse = Message<"blueapi.cover.v1.DeleteBudgetRespons
9428
9523
  * Use `create(DeleteBudgetResponseSchema)` to create a new message.
9429
9524
  */
9430
9525
  export const DeleteBudgetResponseSchema: GenMessage<DeleteBudgetResponse> = /*@__PURE__*/
9431
- messageDesc(file_cover_v1_cover, 287);
9526
+ messageDesc(file_cover_v1_cover, 291);
9432
9527
 
9433
9528
  /**
9434
9529
  * @generated from message blueapi.cover.v1.UpdateBudgetRequest
@@ -9452,7 +9547,7 @@ export type UpdateBudgetRequest = Message<"blueapi.cover.v1.UpdateBudgetRequest"
9452
9547
  * Use `create(UpdateBudgetRequestSchema)` to create a new message.
9453
9548
  */
9454
9549
  export const UpdateBudgetRequestSchema: GenMessage<UpdateBudgetRequest> = /*@__PURE__*/
9455
- messageDesc(file_cover_v1_cover, 288);
9550
+ messageDesc(file_cover_v1_cover, 292);
9456
9551
 
9457
9552
  /**
9458
9553
  * @generated from message blueapi.cover.v1.UpdateBudgetResponse
@@ -9469,7 +9564,7 @@ export type UpdateBudgetResponse = Message<"blueapi.cover.v1.UpdateBudgetRespons
9469
9564
  * Use `create(UpdateBudgetResponseSchema)` to create a new message.
9470
9565
  */
9471
9566
  export const UpdateBudgetResponseSchema: GenMessage<UpdateBudgetResponse> = /*@__PURE__*/
9472
- messageDesc(file_cover_v1_cover, 289);
9567
+ messageDesc(file_cover_v1_cover, 293);
9473
9568
 
9474
9569
  /**
9475
9570
  * @generated from message blueapi.cover.v1.ResolveAWSMarketplaceTokenForOnboardingRequest
@@ -9486,7 +9581,7 @@ export type ResolveAWSMarketplaceTokenForOnboardingRequest = Message<"blueapi.co
9486
9581
  * Use `create(ResolveAWSMarketplaceTokenForOnboardingRequestSchema)` to create a new message.
9487
9582
  */
9488
9583
  export const ResolveAWSMarketplaceTokenForOnboardingRequestSchema: GenMessage<ResolveAWSMarketplaceTokenForOnboardingRequest> = /*@__PURE__*/
9489
- messageDesc(file_cover_v1_cover, 290);
9584
+ messageDesc(file_cover_v1_cover, 294);
9490
9585
 
9491
9586
  /**
9492
9587
  * @generated from message blueapi.cover.v1.ResolveAWSMarketplaceTokenForOnboardingResponse
@@ -9508,7 +9603,7 @@ export type ResolveAWSMarketplaceTokenForOnboardingResponse = Message<"blueapi.c
9508
9603
  * Use `create(ResolveAWSMarketplaceTokenForOnboardingResponseSchema)` to create a new message.
9509
9604
  */
9510
9605
  export const ResolveAWSMarketplaceTokenForOnboardingResponseSchema: GenMessage<ResolveAWSMarketplaceTokenForOnboardingResponse> = /*@__PURE__*/
9511
- messageDesc(file_cover_v1_cover, 291);
9606
+ messageDesc(file_cover_v1_cover, 295);
9512
9607
 
9513
9608
  /**
9514
9609
  * @generated from message blueapi.cover.v1.GetCustomerSubscriptionStatusRequest
@@ -9521,7 +9616,7 @@ export type GetCustomerSubscriptionStatusRequest = Message<"blueapi.cover.v1.Get
9521
9616
  * Use `create(GetCustomerSubscriptionStatusRequestSchema)` to create a new message.
9522
9617
  */
9523
9618
  export const GetCustomerSubscriptionStatusRequestSchema: GenMessage<GetCustomerSubscriptionStatusRequest> = /*@__PURE__*/
9524
- messageDesc(file_cover_v1_cover, 292);
9619
+ messageDesc(file_cover_v1_cover, 296);
9525
9620
 
9526
9621
  /**
9527
9622
  * @generated from message blueapi.cover.v1.GetCustomerSubscriptionStatusResponse
@@ -9583,7 +9678,7 @@ export type GetCustomerSubscriptionStatusResponse = Message<"blueapi.cover.v1.Ge
9583
9678
  * Use `create(GetCustomerSubscriptionStatusResponseSchema)` to create a new message.
9584
9679
  */
9585
9680
  export const GetCustomerSubscriptionStatusResponseSchema: GenMessage<GetCustomerSubscriptionStatusResponse> = /*@__PURE__*/
9586
- messageDesc(file_cover_v1_cover, 293);
9681
+ messageDesc(file_cover_v1_cover, 297);
9587
9682
 
9588
9683
  /**
9589
9684
  * @generated from message blueapi.cover.v1.CreateProfilingRequest
@@ -9635,7 +9730,7 @@ export type CreateProfilingRequest = Message<"blueapi.cover.v1.CreateProfilingRe
9635
9730
  * Use `create(CreateProfilingRequestSchema)` to create a new message.
9636
9731
  */
9637
9732
  export const CreateProfilingRequestSchema: GenMessage<CreateProfilingRequest> = /*@__PURE__*/
9638
- messageDesc(file_cover_v1_cover, 294);
9733
+ messageDesc(file_cover_v1_cover, 298);
9639
9734
 
9640
9735
  /**
9641
9736
  * @generated from message blueapi.cover.v1.CreateProfilingResponse
@@ -9648,7 +9743,7 @@ export type CreateProfilingResponse = Message<"blueapi.cover.v1.CreateProfilingR
9648
9743
  * Use `create(CreateProfilingResponseSchema)` to create a new message.
9649
9744
  */
9650
9745
  export const CreateProfilingResponseSchema: GenMessage<CreateProfilingResponse> = /*@__PURE__*/
9651
- messageDesc(file_cover_v1_cover, 295);
9746
+ messageDesc(file_cover_v1_cover, 299);
9652
9747
 
9653
9748
  /**
9654
9749
  * @generated from message blueapi.cover.v1.AddInfotoMarketplaceRequest
@@ -9665,7 +9760,7 @@ export type AddInfotoMarketplaceRequest = Message<"blueapi.cover.v1.AddInfotoMar
9665
9760
  * Use `create(AddInfotoMarketplaceRequestSchema)` to create a new message.
9666
9761
  */
9667
9762
  export const AddInfotoMarketplaceRequestSchema: GenMessage<AddInfotoMarketplaceRequest> = /*@__PURE__*/
9668
- messageDesc(file_cover_v1_cover, 296);
9763
+ messageDesc(file_cover_v1_cover, 300);
9669
9764
 
9670
9765
  /**
9671
9766
  * @generated from message blueapi.cover.v1.AddInfotoMarketplaceResponse
@@ -9678,7 +9773,7 @@ export type AddInfotoMarketplaceResponse = Message<"blueapi.cover.v1.AddInfotoMa
9678
9773
  * Use `create(AddInfotoMarketplaceResponseSchema)` to create a new message.
9679
9774
  */
9680
9775
  export const AddInfotoMarketplaceResponseSchema: GenMessage<AddInfotoMarketplaceResponse> = /*@__PURE__*/
9681
- messageDesc(file_cover_v1_cover, 297);
9776
+ messageDesc(file_cover_v1_cover, 301);
9682
9777
 
9683
9778
  /**
9684
9779
  * @generated from message blueapi.cover.v1.GetReportSummaryRequest
@@ -9725,7 +9820,7 @@ export type GetReportSummaryRequest = Message<"blueapi.cover.v1.GetReportSummary
9725
9820
  * Use `create(GetReportSummaryRequestSchema)` to create a new message.
9726
9821
  */
9727
9822
  export const GetReportSummaryRequestSchema: GenMessage<GetReportSummaryRequest> = /*@__PURE__*/
9728
- messageDesc(file_cover_v1_cover, 298);
9823
+ messageDesc(file_cover_v1_cover, 302);
9729
9824
 
9730
9825
  /**
9731
9826
  * @generated from message blueapi.cover.v1.GetReportSummaryResponse
@@ -9767,7 +9862,7 @@ export type GetReportSummaryResponse = Message<"blueapi.cover.v1.GetReportSummar
9767
9862
  * Use `create(GetReportSummaryResponseSchema)` to create a new message.
9768
9863
  */
9769
9864
  export const GetReportSummaryResponseSchema: GenMessage<GetReportSummaryResponse> = /*@__PURE__*/
9770
- messageDesc(file_cover_v1_cover, 299);
9865
+ messageDesc(file_cover_v1_cover, 303);
9771
9866
 
9772
9867
  /**
9773
9868
  * @generated from message blueapi.cover.v1.ListRecommendationRequest
@@ -9865,7 +9960,7 @@ export type ListRecommendationRequest = Message<"blueapi.cover.v1.ListRecommenda
9865
9960
  * Use `create(ListRecommendationRequestSchema)` to create a new message.
9866
9961
  */
9867
9962
  export const ListRecommendationRequestSchema: GenMessage<ListRecommendationRequest> = /*@__PURE__*/
9868
- messageDesc(file_cover_v1_cover, 300);
9963
+ messageDesc(file_cover_v1_cover, 304);
9869
9964
 
9870
9965
  /**
9871
9966
  * @generated from message blueapi.cover.v1.ListRecommendationV2Request
@@ -9904,7 +9999,7 @@ export type ListRecommendationV2Request = Message<"blueapi.cover.v1.ListRecommen
9904
9999
  * Use `create(ListRecommendationV2RequestSchema)` to create a new message.
9905
10000
  */
9906
10001
  export const ListRecommendationV2RequestSchema: GenMessage<ListRecommendationV2Request> = /*@__PURE__*/
9907
- messageDesc(file_cover_v1_cover, 301);
10002
+ messageDesc(file_cover_v1_cover, 305);
9908
10003
 
9909
10004
  /**
9910
10005
  * @generated from message blueapi.cover.v1.ListRecommendationV2Request.RateSettings
@@ -9951,7 +10046,7 @@ export type ListRecommendationV2Request_RateSettings = Message<"blueapi.cover.v1
9951
10046
  * Use `create(ListRecommendationV2Request_RateSettingsSchema)` to create a new message.
9952
10047
  */
9953
10048
  export const ListRecommendationV2Request_RateSettingsSchema: GenMessage<ListRecommendationV2Request_RateSettings> = /*@__PURE__*/
9954
- messageDesc(file_cover_v1_cover, 301, 0);
10049
+ messageDesc(file_cover_v1_cover, 305, 0);
9955
10050
 
9956
10051
  /**
9957
10052
  * @generated from message blueapi.cover.v1.ListRecommendationResponse
@@ -10093,7 +10188,7 @@ export type ListRecommendationResponse = Message<"blueapi.cover.v1.ListRecommend
10093
10188
  * Use `create(ListRecommendationResponseSchema)` to create a new message.
10094
10189
  */
10095
10190
  export const ListRecommendationResponseSchema: GenMessage<ListRecommendationResponse> = /*@__PURE__*/
10096
- messageDesc(file_cover_v1_cover, 302);
10191
+ messageDesc(file_cover_v1_cover, 306);
10097
10192
 
10098
10193
  /**
10099
10194
  * @generated from message blueapi.cover.v1.ListRecommendationResponse.PurchaseOption
@@ -10150,7 +10245,7 @@ export type ListRecommendationResponse_PurchaseOption = Message<"blueapi.cover.v
10150
10245
  * Use `create(ListRecommendationResponse_PurchaseOptionSchema)` to create a new message.
10151
10246
  */
10152
10247
  export const ListRecommendationResponse_PurchaseOptionSchema: GenMessage<ListRecommendationResponse_PurchaseOption> = /*@__PURE__*/
10153
- messageDesc(file_cover_v1_cover, 302, 0);
10248
+ messageDesc(file_cover_v1_cover, 306, 0);
10154
10249
 
10155
10250
  /**
10156
10251
  * @generated from message blueapi.cover.v1.GetRecommendationRequest
@@ -10179,7 +10274,7 @@ export type GetRecommendationRequest = Message<"blueapi.cover.v1.GetRecommendati
10179
10274
  * Use `create(GetRecommendationRequestSchema)` to create a new message.
10180
10275
  */
10181
10276
  export const GetRecommendationRequestSchema: GenMessage<GetRecommendationRequest> = /*@__PURE__*/
10182
- messageDesc(file_cover_v1_cover, 303);
10277
+ messageDesc(file_cover_v1_cover, 307);
10183
10278
 
10184
10279
  /**
10185
10280
  * @generated from message blueapi.cover.v1.GetRecommendationResponse
@@ -10196,7 +10291,7 @@ export type GetRecommendationResponse = Message<"blueapi.cover.v1.GetRecommendat
10196
10291
  * Use `create(GetRecommendationResponseSchema)` to create a new message.
10197
10292
  */
10198
10293
  export const GetRecommendationResponseSchema: GenMessage<GetRecommendationResponse> = /*@__PURE__*/
10199
- messageDesc(file_cover_v1_cover, 304);
10294
+ messageDesc(file_cover_v1_cover, 308);
10200
10295
 
10201
10296
  /**
10202
10297
  * @generated from message blueapi.cover.v1.ExecuteOptimizationRequest
@@ -10218,7 +10313,7 @@ export type ExecuteOptimizationRequest = Message<"blueapi.cover.v1.ExecuteOptimi
10218
10313
  * Use `create(ExecuteOptimizationRequestSchema)` to create a new message.
10219
10314
  */
10220
10315
  export const ExecuteOptimizationRequestSchema: GenMessage<ExecuteOptimizationRequest> = /*@__PURE__*/
10221
- messageDesc(file_cover_v1_cover, 305);
10316
+ messageDesc(file_cover_v1_cover, 309);
10222
10317
 
10223
10318
  /**
10224
10319
  * @generated from message blueapi.cover.v1.ExecuteOptimizationResponse
@@ -10253,7 +10348,7 @@ export type ExecuteOptimizationResponse = Message<"blueapi.cover.v1.ExecuteOptim
10253
10348
  * Use `create(ExecuteOptimizationResponseSchema)` to create a new message.
10254
10349
  */
10255
10350
  export const ExecuteOptimizationResponseSchema: GenMessage<ExecuteOptimizationResponse> = /*@__PURE__*/
10256
- messageDesc(file_cover_v1_cover, 306);
10351
+ messageDesc(file_cover_v1_cover, 310);
10257
10352
 
10258
10353
  /**
10259
10354
  * @generated from message blueapi.cover.v1.ExecuteOptimizationResponse.AWSOption
@@ -10280,7 +10375,7 @@ export type ExecuteOptimizationResponse_AWSOption = Message<"blueapi.cover.v1.Ex
10280
10375
  * Use `create(ExecuteOptimizationResponse_AWSOptionSchema)` to create a new message.
10281
10376
  */
10282
10377
  export const ExecuteOptimizationResponse_AWSOptionSchema: GenMessage<ExecuteOptimizationResponse_AWSOption> = /*@__PURE__*/
10283
- messageDesc(file_cover_v1_cover, 306, 0);
10378
+ messageDesc(file_cover_v1_cover, 310, 0);
10284
10379
 
10285
10380
  /**
10286
10381
  * @generated from message blueapi.cover.v1.ExecuteOptimizationResponse.GCPOption
@@ -10293,7 +10388,7 @@ export type ExecuteOptimizationResponse_GCPOption = Message<"blueapi.cover.v1.Ex
10293
10388
  * Use `create(ExecuteOptimizationResponse_GCPOptionSchema)` to create a new message.
10294
10389
  */
10295
10390
  export const ExecuteOptimizationResponse_GCPOptionSchema: GenMessage<ExecuteOptimizationResponse_GCPOption> = /*@__PURE__*/
10296
- messageDesc(file_cover_v1_cover, 306, 1);
10391
+ messageDesc(file_cover_v1_cover, 310, 1);
10297
10392
 
10298
10393
  /**
10299
10394
  * @generated from message blueapi.cover.v1.ExecuteOptimizationResponse.AzureCSPOption
@@ -10306,7 +10401,7 @@ export type ExecuteOptimizationResponse_AzureCSPOption = Message<"blueapi.cover.
10306
10401
  * Use `create(ExecuteOptimizationResponse_AzureCSPOptionSchema)` to create a new message.
10307
10402
  */
10308
10403
  export const ExecuteOptimizationResponse_AzureCSPOptionSchema: GenMessage<ExecuteOptimizationResponse_AzureCSPOption> = /*@__PURE__*/
10309
- messageDesc(file_cover_v1_cover, 306, 2);
10404
+ messageDesc(file_cover_v1_cover, 310, 2);
10310
10405
 
10311
10406
  /**
10312
10407
  * @generated from message blueapi.cover.v1.MarkAsExecutedRequest
@@ -10323,7 +10418,7 @@ export type MarkAsExecutedRequest = Message<"blueapi.cover.v1.MarkAsExecutedRequ
10323
10418
  * Use `create(MarkAsExecutedRequestSchema)` to create a new message.
10324
10419
  */
10325
10420
  export const MarkAsExecutedRequestSchema: GenMessage<MarkAsExecutedRequest> = /*@__PURE__*/
10326
- messageDesc(file_cover_v1_cover, 307);
10421
+ messageDesc(file_cover_v1_cover, 311);
10327
10422
 
10328
10423
  /**
10329
10424
  * @generated from message blueapi.cover.v1.MarkAsExecutedResponse
@@ -10336,7 +10431,7 @@ export type MarkAsExecutedResponse = Message<"blueapi.cover.v1.MarkAsExecutedRes
10336
10431
  * Use `create(MarkAsExecutedResponseSchema)` to create a new message.
10337
10432
  */
10338
10433
  export const MarkAsExecutedResponseSchema: GenMessage<MarkAsExecutedResponse> = /*@__PURE__*/
10339
- messageDesc(file_cover_v1_cover, 308);
10434
+ messageDesc(file_cover_v1_cover, 312);
10340
10435
 
10341
10436
  /**
10342
10437
  * @generated from message blueapi.cover.v1.UndoExecutedRecommendationRequest
@@ -10353,7 +10448,7 @@ export type UndoExecutedRecommendationRequest = Message<"blueapi.cover.v1.UndoEx
10353
10448
  * Use `create(UndoExecutedRecommendationRequestSchema)` to create a new message.
10354
10449
  */
10355
10450
  export const UndoExecutedRecommendationRequestSchema: GenMessage<UndoExecutedRecommendationRequest> = /*@__PURE__*/
10356
- messageDesc(file_cover_v1_cover, 309);
10451
+ messageDesc(file_cover_v1_cover, 313);
10357
10452
 
10358
10453
  /**
10359
10454
  * @generated from message blueapi.cover.v1.UndoExecutedRecommendationResponse
@@ -10366,7 +10461,7 @@ export type UndoExecutedRecommendationResponse = Message<"blueapi.cover.v1.UndoE
10366
10461
  * Use `create(UndoExecutedRecommendationResponseSchema)` to create a new message.
10367
10462
  */
10368
10463
  export const UndoExecutedRecommendationResponseSchema: GenMessage<UndoExecutedRecommendationResponse> = /*@__PURE__*/
10369
- messageDesc(file_cover_v1_cover, 310);
10464
+ messageDesc(file_cover_v1_cover, 314);
10370
10465
 
10371
10466
  /**
10372
10467
  * @generated from message blueapi.cover.v1.OptimizationHistoryRequest
@@ -10427,7 +10522,7 @@ export type OptimizationHistoryRequest = Message<"blueapi.cover.v1.OptimizationH
10427
10522
  * Use `create(OptimizationHistoryRequestSchema)` to create a new message.
10428
10523
  */
10429
10524
  export const OptimizationHistoryRequestSchema: GenMessage<OptimizationHistoryRequest> = /*@__PURE__*/
10430
- messageDesc(file_cover_v1_cover, 311);
10525
+ messageDesc(file_cover_v1_cover, 315);
10431
10526
 
10432
10527
  /**
10433
10528
  * @generated from message blueapi.cover.v1.OptimizationHistoryResponse
@@ -10444,7 +10539,7 @@ export type OptimizationHistoryResponse = Message<"blueapi.cover.v1.Optimization
10444
10539
  * Use `create(OptimizationHistoryResponseSchema)` to create a new message.
10445
10540
  */
10446
10541
  export const OptimizationHistoryResponseSchema: GenMessage<OptimizationHistoryResponse> = /*@__PURE__*/
10447
- messageDesc(file_cover_v1_cover, 312);
10542
+ messageDesc(file_cover_v1_cover, 316);
10448
10543
 
10449
10544
  /**
10450
10545
  * @generated from message blueapi.cover.v1.SetCostGroupEventIndicatorRequest
@@ -10477,7 +10572,7 @@ export type SetCostGroupEventIndicatorRequest = Message<"blueapi.cover.v1.SetCos
10477
10572
  * Use `create(SetCostGroupEventIndicatorRequestSchema)` to create a new message.
10478
10573
  */
10479
10574
  export const SetCostGroupEventIndicatorRequestSchema: GenMessage<SetCostGroupEventIndicatorRequest> = /*@__PURE__*/
10480
- messageDesc(file_cover_v1_cover, 313);
10575
+ messageDesc(file_cover_v1_cover, 317);
10481
10576
 
10482
10577
  /**
10483
10578
  * @generated from message blueapi.cover.v1.SetCostGroupEventIndicatorResponse
@@ -10499,7 +10594,7 @@ export type SetCostGroupEventIndicatorResponse = Message<"blueapi.cover.v1.SetCo
10499
10594
  * Use `create(SetCostGroupEventIndicatorResponseSchema)` to create a new message.
10500
10595
  */
10501
10596
  export const SetCostGroupEventIndicatorResponseSchema: GenMessage<SetCostGroupEventIndicatorResponse> = /*@__PURE__*/
10502
- messageDesc(file_cover_v1_cover, 314);
10597
+ messageDesc(file_cover_v1_cover, 318);
10503
10598
 
10504
10599
  /**
10505
10600
  * @generated from message blueapi.cover.v1.SetCostGroupAnomalyOptionsRequest
@@ -10539,7 +10634,7 @@ export type SetCostGroupAnomalyOptionsRequest = Message<"blueapi.cover.v1.SetCos
10539
10634
  * Use `create(SetCostGroupAnomalyOptionsRequestSchema)` to create a new message.
10540
10635
  */
10541
10636
  export const SetCostGroupAnomalyOptionsRequestSchema: GenMessage<SetCostGroupAnomalyOptionsRequest> = /*@__PURE__*/
10542
- messageDesc(file_cover_v1_cover, 315);
10637
+ messageDesc(file_cover_v1_cover, 319);
10543
10638
 
10544
10639
  /**
10545
10640
  * @generated from message blueapi.cover.v1.SetCostGroupAnomalyOptionsResponse
@@ -10561,7 +10656,7 @@ export type SetCostGroupAnomalyOptionsResponse = Message<"blueapi.cover.v1.SetCo
10561
10656
  * Use `create(SetCostGroupAnomalyOptionsResponseSchema)` to create a new message.
10562
10657
  */
10563
10658
  export const SetCostGroupAnomalyOptionsResponseSchema: GenMessage<SetCostGroupAnomalyOptionsResponse> = /*@__PURE__*/
10564
- messageDesc(file_cover_v1_cover, 316);
10659
+ messageDesc(file_cover_v1_cover, 320);
10565
10660
 
10566
10661
  /**
10567
10662
  * @generated from message blueapi.cover.v1.SetOrgFiscalMonthRequest
@@ -10580,7 +10675,7 @@ export type SetOrgFiscalMonthRequest = Message<"blueapi.cover.v1.SetOrgFiscalMon
10580
10675
  * Use `create(SetOrgFiscalMonthRequestSchema)` to create a new message.
10581
10676
  */
10582
10677
  export const SetOrgFiscalMonthRequestSchema: GenMessage<SetOrgFiscalMonthRequest> = /*@__PURE__*/
10583
- messageDesc(file_cover_v1_cover, 317);
10678
+ messageDesc(file_cover_v1_cover, 321);
10584
10679
 
10585
10680
  /**
10586
10681
  * @generated from message blueapi.cover.v1.SetOrgFiscalMonthResponse
@@ -10597,7 +10692,7 @@ export type SetOrgFiscalMonthResponse = Message<"blueapi.cover.v1.SetOrgFiscalMo
10597
10692
  * Use `create(SetOrgFiscalMonthResponseSchema)` to create a new message.
10598
10693
  */
10599
10694
  export const SetOrgFiscalMonthResponseSchema: GenMessage<SetOrgFiscalMonthResponse> = /*@__PURE__*/
10600
- messageDesc(file_cover_v1_cover, 318);
10695
+ messageDesc(file_cover_v1_cover, 322);
10601
10696
 
10602
10697
  /**
10603
10698
  * @generated from message blueapi.cover.v1.GetOrgFiscalMonthRequest
@@ -10610,7 +10705,7 @@ export type GetOrgFiscalMonthRequest = Message<"blueapi.cover.v1.GetOrgFiscalMon
10610
10705
  * Use `create(GetOrgFiscalMonthRequestSchema)` to create a new message.
10611
10706
  */
10612
10707
  export const GetOrgFiscalMonthRequestSchema: GenMessage<GetOrgFiscalMonthRequest> = /*@__PURE__*/
10613
- messageDesc(file_cover_v1_cover, 319);
10708
+ messageDesc(file_cover_v1_cover, 323);
10614
10709
 
10615
10710
  /**
10616
10711
  * @generated from message blueapi.cover.v1.GetOrgFiscalMonthResponse
@@ -10632,7 +10727,7 @@ export type GetOrgFiscalMonthResponse = Message<"blueapi.cover.v1.GetOrgFiscalMo
10632
10727
  * Use `create(GetOrgFiscalMonthResponseSchema)` to create a new message.
10633
10728
  */
10634
10729
  export const GetOrgFiscalMonthResponseSchema: GenMessage<GetOrgFiscalMonthResponse> = /*@__PURE__*/
10635
- messageDesc(file_cover_v1_cover, 320);
10730
+ messageDesc(file_cover_v1_cover, 324);
10636
10731
 
10637
10732
  /**
10638
10733
  * @generated from message blueapi.cover.v1.TransferOrganizationRequest
@@ -10672,7 +10767,7 @@ export type TransferOrganizationRequest = Message<"blueapi.cover.v1.TransferOrga
10672
10767
  * Use `create(TransferOrganizationRequestSchema)` to create a new message.
10673
10768
  */
10674
10769
  export const TransferOrganizationRequestSchema: GenMessage<TransferOrganizationRequest> = /*@__PURE__*/
10675
- messageDesc(file_cover_v1_cover, 321);
10770
+ messageDesc(file_cover_v1_cover, 325);
10676
10771
 
10677
10772
  /**
10678
10773
  * @generated from message blueapi.cover.v1.TransferOrganizationResponse
@@ -10689,7 +10784,7 @@ export type TransferOrganizationResponse = Message<"blueapi.cover.v1.TransferOrg
10689
10784
  * Use `create(TransferOrganizationResponseSchema)` to create a new message.
10690
10785
  */
10691
10786
  export const TransferOrganizationResponseSchema: GenMessage<TransferOrganizationResponse> = /*@__PURE__*/
10692
- messageDesc(file_cover_v1_cover, 322);
10787
+ messageDesc(file_cover_v1_cover, 326);
10693
10788
 
10694
10789
  /**
10695
10790
  * @generated from message blueapi.cover.v1.UpdateCostGroupCreationUIRequest
@@ -10706,7 +10801,7 @@ export type UpdateCostGroupCreationUIRequest = Message<"blueapi.cover.v1.UpdateC
10706
10801
  * Use `create(UpdateCostGroupCreationUIRequestSchema)` to create a new message.
10707
10802
  */
10708
10803
  export const UpdateCostGroupCreationUIRequestSchema: GenMessage<UpdateCostGroupCreationUIRequest> = /*@__PURE__*/
10709
- messageDesc(file_cover_v1_cover, 323);
10804
+ messageDesc(file_cover_v1_cover, 327);
10710
10805
 
10711
10806
  /**
10712
10807
  * @generated from message blueapi.cover.v1.UpdateCostGroupCreationUIResponse
@@ -10723,7 +10818,7 @@ export type UpdateCostGroupCreationUIResponse = Message<"blueapi.cover.v1.Update
10723
10818
  * Use `create(UpdateCostGroupCreationUIResponseSchema)` to create a new message.
10724
10819
  */
10725
10820
  export const UpdateCostGroupCreationUIResponseSchema: GenMessage<UpdateCostGroupCreationUIResponse> = /*@__PURE__*/
10726
- messageDesc(file_cover_v1_cover, 324);
10821
+ messageDesc(file_cover_v1_cover, 328);
10727
10822
 
10728
10823
  /**
10729
10824
  * @generated from message blueapi.cover.v1.ListUnitTypesRequest
@@ -10736,7 +10831,7 @@ export type ListUnitTypesRequest = Message<"blueapi.cover.v1.ListUnitTypesReques
10736
10831
  * Use `create(ListUnitTypesRequestSchema)` to create a new message.
10737
10832
  */
10738
10833
  export const ListUnitTypesRequestSchema: GenMessage<ListUnitTypesRequest> = /*@__PURE__*/
10739
- messageDesc(file_cover_v1_cover, 325);
10834
+ messageDesc(file_cover_v1_cover, 329);
10740
10835
 
10741
10836
  /**
10742
10837
  * @generated from message blueapi.cover.v1.ListUnitTypesResponse
@@ -10753,7 +10848,7 @@ export type ListUnitTypesResponse = Message<"blueapi.cover.v1.ListUnitTypesRespo
10753
10848
  * Use `create(ListUnitTypesResponseSchema)` to create a new message.
10754
10849
  */
10755
10850
  export const ListUnitTypesResponseSchema: GenMessage<ListUnitTypesResponse> = /*@__PURE__*/
10756
- messageDesc(file_cover_v1_cover, 326);
10851
+ messageDesc(file_cover_v1_cover, 330);
10757
10852
 
10758
10853
  /**
10759
10854
  * @generated from message blueapi.cover.v1.CreateUnitTypeRequest
@@ -10785,7 +10880,7 @@ export type CreateUnitTypeRequest = Message<"blueapi.cover.v1.CreateUnitTypeRequ
10785
10880
  * Use `create(CreateUnitTypeRequestSchema)` to create a new message.
10786
10881
  */
10787
10882
  export const CreateUnitTypeRequestSchema: GenMessage<CreateUnitTypeRequest> = /*@__PURE__*/
10788
- messageDesc(file_cover_v1_cover, 327);
10883
+ messageDesc(file_cover_v1_cover, 331);
10789
10884
 
10790
10885
  /**
10791
10886
  * @generated from message blueapi.cover.v1.CreateUnitTypeResponse
@@ -10802,7 +10897,7 @@ export type CreateUnitTypeResponse = Message<"blueapi.cover.v1.CreateUnitTypeRes
10802
10897
  * Use `create(CreateUnitTypeResponseSchema)` to create a new message.
10803
10898
  */
10804
10899
  export const CreateUnitTypeResponseSchema: GenMessage<CreateUnitTypeResponse> = /*@__PURE__*/
10805
- messageDesc(file_cover_v1_cover, 328);
10900
+ messageDesc(file_cover_v1_cover, 332);
10806
10901
 
10807
10902
  /**
10808
10903
  * @generated from message blueapi.cover.v1.GetUnitTypeRequest
@@ -10821,7 +10916,7 @@ export type GetUnitTypeRequest = Message<"blueapi.cover.v1.GetUnitTypeRequest">
10821
10916
  * Use `create(GetUnitTypeRequestSchema)` to create a new message.
10822
10917
  */
10823
10918
  export const GetUnitTypeRequestSchema: GenMessage<GetUnitTypeRequest> = /*@__PURE__*/
10824
- messageDesc(file_cover_v1_cover, 329);
10919
+ messageDesc(file_cover_v1_cover, 333);
10825
10920
 
10826
10921
  /**
10827
10922
  * @generated from message blueapi.cover.v1.GetUnitTypeResponse
@@ -10838,7 +10933,7 @@ export type GetUnitTypeResponse = Message<"blueapi.cover.v1.GetUnitTypeResponse"
10838
10933
  * Use `create(GetUnitTypeResponseSchema)` to create a new message.
10839
10934
  */
10840
10935
  export const GetUnitTypeResponseSchema: GenMessage<GetUnitTypeResponse> = /*@__PURE__*/
10841
- messageDesc(file_cover_v1_cover, 330);
10936
+ messageDesc(file_cover_v1_cover, 334);
10842
10937
 
10843
10938
  /**
10844
10939
  * @generated from message blueapi.cover.v1.UpdateUnitTypeRequest
@@ -10885,7 +10980,7 @@ export type UpdateUnitTypeRequest = Message<"blueapi.cover.v1.UpdateUnitTypeRequ
10885
10980
  * Use `create(UpdateUnitTypeRequestSchema)` to create a new message.
10886
10981
  */
10887
10982
  export const UpdateUnitTypeRequestSchema: GenMessage<UpdateUnitTypeRequest> = /*@__PURE__*/
10888
- messageDesc(file_cover_v1_cover, 331);
10983
+ messageDesc(file_cover_v1_cover, 335);
10889
10984
 
10890
10985
  /**
10891
10986
  * @generated from message blueapi.cover.v1.UpdateUnitTypeResponse
@@ -10902,7 +10997,7 @@ export type UpdateUnitTypeResponse = Message<"blueapi.cover.v1.UpdateUnitTypeRes
10902
10997
  * Use `create(UpdateUnitTypeResponseSchema)` to create a new message.
10903
10998
  */
10904
10999
  export const UpdateUnitTypeResponseSchema: GenMessage<UpdateUnitTypeResponse> = /*@__PURE__*/
10905
- messageDesc(file_cover_v1_cover, 332);
11000
+ messageDesc(file_cover_v1_cover, 336);
10906
11001
 
10907
11002
  /**
10908
11003
  * @generated from message blueapi.cover.v1.DeleteUnitTypeRequest
@@ -10921,7 +11016,7 @@ export type DeleteUnitTypeRequest = Message<"blueapi.cover.v1.DeleteUnitTypeRequ
10921
11016
  * Use `create(DeleteUnitTypeRequestSchema)` to create a new message.
10922
11017
  */
10923
11018
  export const DeleteUnitTypeRequestSchema: GenMessage<DeleteUnitTypeRequest> = /*@__PURE__*/
10924
- messageDesc(file_cover_v1_cover, 333);
11019
+ messageDesc(file_cover_v1_cover, 337);
10925
11020
 
10926
11021
  /**
10927
11022
  * @generated from message blueapi.cover.v1.DeleteUnitTypeResponse
@@ -10938,7 +11033,7 @@ export type DeleteUnitTypeResponse = Message<"blueapi.cover.v1.DeleteUnitTypeRes
10938
11033
  * Use `create(DeleteUnitTypeResponseSchema)` to create a new message.
10939
11034
  */
10940
11035
  export const DeleteUnitTypeResponseSchema: GenMessage<DeleteUnitTypeResponse> = /*@__PURE__*/
10941
- messageDesc(file_cover_v1_cover, 334);
11036
+ messageDesc(file_cover_v1_cover, 338);
10942
11037
 
10943
11038
  /**
10944
11039
  * @generated from message blueapi.cover.v1.MergeUnitsRequest
@@ -10965,7 +11060,7 @@ export type MergeUnitsRequest = Message<"blueapi.cover.v1.MergeUnitsRequest"> &
10965
11060
  * Use `create(MergeUnitsRequestSchema)` to create a new message.
10966
11061
  */
10967
11062
  export const MergeUnitsRequestSchema: GenMessage<MergeUnitsRequest> = /*@__PURE__*/
10968
- messageDesc(file_cover_v1_cover, 335);
11063
+ messageDesc(file_cover_v1_cover, 339);
10969
11064
 
10970
11065
  /**
10971
11066
  * @generated from message blueapi.cover.v1.MergeUnitsResponse
@@ -10982,7 +11077,7 @@ export type MergeUnitsResponse = Message<"blueapi.cover.v1.MergeUnitsResponse">
10982
11077
  * Use `create(MergeUnitsResponseSchema)` to create a new message.
10983
11078
  */
10984
11079
  export const MergeUnitsResponseSchema: GenMessage<MergeUnitsResponse> = /*@__PURE__*/
10985
- messageDesc(file_cover_v1_cover, 336);
11080
+ messageDesc(file_cover_v1_cover, 340);
10986
11081
 
10987
11082
  /**
10988
11083
  * @generated from message blueapi.cover.v1.ListSuggestedUnitsRequest
@@ -10995,7 +11090,7 @@ export type ListSuggestedUnitsRequest = Message<"blueapi.cover.v1.ListSuggestedU
10995
11090
  * Use `create(ListSuggestedUnitsRequestSchema)` to create a new message.
10996
11091
  */
10997
11092
  export const ListSuggestedUnitsRequestSchema: GenMessage<ListSuggestedUnitsRequest> = /*@__PURE__*/
10998
- messageDesc(file_cover_v1_cover, 337);
11093
+ messageDesc(file_cover_v1_cover, 341);
10999
11094
 
11000
11095
  /**
11001
11096
  * @generated from message blueapi.cover.v1.ListSuggestedUnitsResponse
@@ -11012,7 +11107,7 @@ export type ListSuggestedUnitsResponse = Message<"blueapi.cover.v1.ListSuggested
11012
11107
  * Use `create(ListSuggestedUnitsResponseSchema)` to create a new message.
11013
11108
  */
11014
11109
  export const ListSuggestedUnitsResponseSchema: GenMessage<ListSuggestedUnitsResponse> = /*@__PURE__*/
11015
- messageDesc(file_cover_v1_cover, 338);
11110
+ messageDesc(file_cover_v1_cover, 342);
11016
11111
 
11017
11112
  /**
11018
11113
  * @generated from message blueapi.cover.v1.MergeSuggestedUnitsRequest
@@ -11044,7 +11139,7 @@ export type MergeSuggestedUnitsRequest = Message<"blueapi.cover.v1.MergeSuggeste
11044
11139
  * Use `create(MergeSuggestedUnitsRequestSchema)` to create a new message.
11045
11140
  */
11046
11141
  export const MergeSuggestedUnitsRequestSchema: GenMessage<MergeSuggestedUnitsRequest> = /*@__PURE__*/
11047
- messageDesc(file_cover_v1_cover, 339);
11142
+ messageDesc(file_cover_v1_cover, 343);
11048
11143
 
11049
11144
  /**
11050
11145
  * @generated from message blueapi.cover.v1.MergeSuggestedUnitsResponse
@@ -11061,7 +11156,7 @@ export type MergeSuggestedUnitsResponse = Message<"blueapi.cover.v1.MergeSuggest
11061
11156
  * Use `create(MergeSuggestedUnitsResponseSchema)` to create a new message.
11062
11157
  */
11063
11158
  export const MergeSuggestedUnitsResponseSchema: GenMessage<MergeSuggestedUnitsResponse> = /*@__PURE__*/
11064
- messageDesc(file_cover_v1_cover, 340);
11159
+ messageDesc(file_cover_v1_cover, 344);
11065
11160
 
11066
11161
  /**
11067
11162
  * @generated from message blueapi.cover.v1.CreateUnitFromSuggestedRequest
@@ -11078,7 +11173,7 @@ export type CreateUnitFromSuggestedRequest = Message<"blueapi.cover.v1.CreateUni
11078
11173
  * Use `create(CreateUnitFromSuggestedRequestSchema)` to create a new message.
11079
11174
  */
11080
11175
  export const CreateUnitFromSuggestedRequestSchema: GenMessage<CreateUnitFromSuggestedRequest> = /*@__PURE__*/
11081
- messageDesc(file_cover_v1_cover, 341);
11176
+ messageDesc(file_cover_v1_cover, 345);
11082
11177
 
11083
11178
  /**
11084
11179
  * @generated from message blueapi.cover.v1.CreateUnitFromSuggestedResponse
@@ -11095,7 +11190,7 @@ export type CreateUnitFromSuggestedResponse = Message<"blueapi.cover.v1.CreateUn
11095
11190
  * Use `create(CreateUnitFromSuggestedResponseSchema)` to create a new message.
11096
11191
  */
11097
11192
  export const CreateUnitFromSuggestedResponseSchema: GenMessage<CreateUnitFromSuggestedResponse> = /*@__PURE__*/
11098
- messageDesc(file_cover_v1_cover, 342);
11193
+ messageDesc(file_cover_v1_cover, 346);
11099
11194
 
11100
11195
  /**
11101
11196
  * @generated from message blueapi.cover.v1.ListSharedResourcesRequest
@@ -11108,7 +11203,7 @@ export type ListSharedResourcesRequest = Message<"blueapi.cover.v1.ListSharedRes
11108
11203
  * Use `create(ListSharedResourcesRequestSchema)` to create a new message.
11109
11204
  */
11110
11205
  export const ListSharedResourcesRequestSchema: GenMessage<ListSharedResourcesRequest> = /*@__PURE__*/
11111
- messageDesc(file_cover_v1_cover, 343);
11206
+ messageDesc(file_cover_v1_cover, 347);
11112
11207
 
11113
11208
  /**
11114
11209
  * @generated from message blueapi.cover.v1.ListSharedResourcesResponse
@@ -11125,7 +11220,7 @@ export type ListSharedResourcesResponse = Message<"blueapi.cover.v1.ListSharedRe
11125
11220
  * Use `create(ListSharedResourcesResponseSchema)` to create a new message.
11126
11221
  */
11127
11222
  export const ListSharedResourcesResponseSchema: GenMessage<ListSharedResourcesResponse> = /*@__PURE__*/
11128
- messageDesc(file_cover_v1_cover, 344);
11223
+ messageDesc(file_cover_v1_cover, 348);
11129
11224
 
11130
11225
  /**
11131
11226
  * @generated from message blueapi.cover.v1.CreateSharedResourcesRequest
@@ -11169,7 +11264,7 @@ export type CreateSharedResourcesRequest = Message<"blueapi.cover.v1.CreateShare
11169
11264
  * Use `create(CreateSharedResourcesRequestSchema)` to create a new message.
11170
11265
  */
11171
11266
  export const CreateSharedResourcesRequestSchema: GenMessage<CreateSharedResourcesRequest> = /*@__PURE__*/
11172
- messageDesc(file_cover_v1_cover, 345);
11267
+ messageDesc(file_cover_v1_cover, 349);
11173
11268
 
11174
11269
  /**
11175
11270
  * @generated from message blueapi.cover.v1.CreateSharedResourcesResponse
@@ -11186,7 +11281,7 @@ export type CreateSharedResourcesResponse = Message<"blueapi.cover.v1.CreateShar
11186
11281
  * Use `create(CreateSharedResourcesResponseSchema)` to create a new message.
11187
11282
  */
11188
11283
  export const CreateSharedResourcesResponseSchema: GenMessage<CreateSharedResourcesResponse> = /*@__PURE__*/
11189
- messageDesc(file_cover_v1_cover, 346);
11284
+ messageDesc(file_cover_v1_cover, 350);
11190
11285
 
11191
11286
  /**
11192
11287
  * @generated from message blueapi.cover.v1.GetSharedResourcesRequest
@@ -11205,7 +11300,7 @@ export type GetSharedResourcesRequest = Message<"blueapi.cover.v1.GetSharedResou
11205
11300
  * Use `create(GetSharedResourcesRequestSchema)` to create a new message.
11206
11301
  */
11207
11302
  export const GetSharedResourcesRequestSchema: GenMessage<GetSharedResourcesRequest> = /*@__PURE__*/
11208
- messageDesc(file_cover_v1_cover, 347);
11303
+ messageDesc(file_cover_v1_cover, 351);
11209
11304
 
11210
11305
  /**
11211
11306
  * @generated from message blueapi.cover.v1.GetSharedResourcesResponse
@@ -11222,7 +11317,7 @@ export type GetSharedResourcesResponse = Message<"blueapi.cover.v1.GetSharedReso
11222
11317
  * Use `create(GetSharedResourcesResponseSchema)` to create a new message.
11223
11318
  */
11224
11319
  export const GetSharedResourcesResponseSchema: GenMessage<GetSharedResourcesResponse> = /*@__PURE__*/
11225
- messageDesc(file_cover_v1_cover, 348);
11320
+ messageDesc(file_cover_v1_cover, 352);
11226
11321
 
11227
11322
  /**
11228
11323
  * @generated from message blueapi.cover.v1.UpdateSharedResourcesRequest
@@ -11283,7 +11378,7 @@ export type UpdateSharedResourcesRequest = Message<"blueapi.cover.v1.UpdateShare
11283
11378
  * Use `create(UpdateSharedResourcesRequestSchema)` to create a new message.
11284
11379
  */
11285
11380
  export const UpdateSharedResourcesRequestSchema: GenMessage<UpdateSharedResourcesRequest> = /*@__PURE__*/
11286
- messageDesc(file_cover_v1_cover, 349);
11381
+ messageDesc(file_cover_v1_cover, 353);
11287
11382
 
11288
11383
  /**
11289
11384
  * @generated from message blueapi.cover.v1.UpdateSharedResourcesResponse
@@ -11300,7 +11395,7 @@ export type UpdateSharedResourcesResponse = Message<"blueapi.cover.v1.UpdateShar
11300
11395
  * Use `create(UpdateSharedResourcesResponseSchema)` to create a new message.
11301
11396
  */
11302
11397
  export const UpdateSharedResourcesResponseSchema: GenMessage<UpdateSharedResourcesResponse> = /*@__PURE__*/
11303
- messageDesc(file_cover_v1_cover, 350);
11398
+ messageDesc(file_cover_v1_cover, 354);
11304
11399
 
11305
11400
  /**
11306
11401
  * @generated from message blueapi.cover.v1.DeleteSharedResourcesRequest
@@ -11319,7 +11414,7 @@ export type DeleteSharedResourcesRequest = Message<"blueapi.cover.v1.DeleteShare
11319
11414
  * Use `create(DeleteSharedResourcesRequestSchema)` to create a new message.
11320
11415
  */
11321
11416
  export const DeleteSharedResourcesRequestSchema: GenMessage<DeleteSharedResourcesRequest> = /*@__PURE__*/
11322
- messageDesc(file_cover_v1_cover, 351);
11417
+ messageDesc(file_cover_v1_cover, 355);
11323
11418
 
11324
11419
  /**
11325
11420
  * @generated from message blueapi.cover.v1.DeleteSharedResourcesResponse
@@ -11336,7 +11431,7 @@ export type DeleteSharedResourcesResponse = Message<"blueapi.cover.v1.DeleteShar
11336
11431
  * Use `create(DeleteSharedResourcesResponseSchema)` to create a new message.
11337
11432
  */
11338
11433
  export const DeleteSharedResourcesResponseSchema: GenMessage<DeleteSharedResourcesResponse> = /*@__PURE__*/
11339
- messageDesc(file_cover_v1_cover, 352);
11434
+ messageDesc(file_cover_v1_cover, 356);
11340
11435
 
11341
11436
  /**
11342
11437
  * @generated from message blueapi.cover.v1.ListUnitMetricsRequest
@@ -11369,7 +11464,7 @@ export type ListUnitMetricsRequest = Message<"blueapi.cover.v1.ListUnitMetricsRe
11369
11464
  * Use `create(ListUnitMetricsRequestSchema)` to create a new message.
11370
11465
  */
11371
11466
  export const ListUnitMetricsRequestSchema: GenMessage<ListUnitMetricsRequest> = /*@__PURE__*/
11372
- messageDesc(file_cover_v1_cover, 353);
11467
+ messageDesc(file_cover_v1_cover, 357);
11373
11468
 
11374
11469
  /**
11375
11470
  * @generated from message blueapi.cover.v1.ListUnitMetricsResponse
@@ -11386,7 +11481,7 @@ export type ListUnitMetricsResponse = Message<"blueapi.cover.v1.ListUnitMetricsR
11386
11481
  * Use `create(ListUnitMetricsResponseSchema)` to create a new message.
11387
11482
  */
11388
11483
  export const ListUnitMetricsResponseSchema: GenMessage<ListUnitMetricsResponse> = /*@__PURE__*/
11389
- messageDesc(file_cover_v1_cover, 354);
11484
+ messageDesc(file_cover_v1_cover, 358);
11390
11485
 
11391
11486
  /**
11392
11487
  * @generated from message blueapi.cover.v1.CreateUnitMetricRequest
@@ -11430,7 +11525,7 @@ export type CreateUnitMetricRequest = Message<"blueapi.cover.v1.CreateUnitMetric
11430
11525
  * Use `create(CreateUnitMetricRequestSchema)` to create a new message.
11431
11526
  */
11432
11527
  export const CreateUnitMetricRequestSchema: GenMessage<CreateUnitMetricRequest> = /*@__PURE__*/
11433
- messageDesc(file_cover_v1_cover, 355);
11528
+ messageDesc(file_cover_v1_cover, 359);
11434
11529
 
11435
11530
  /**
11436
11531
  * @generated from message blueapi.cover.v1.CreateUnitMetricResponse
@@ -11447,7 +11542,7 @@ export type CreateUnitMetricResponse = Message<"blueapi.cover.v1.CreateUnitMetri
11447
11542
  * Use `create(CreateUnitMetricResponseSchema)` to create a new message.
11448
11543
  */
11449
11544
  export const CreateUnitMetricResponseSchema: GenMessage<CreateUnitMetricResponse> = /*@__PURE__*/
11450
- messageDesc(file_cover_v1_cover, 356);
11545
+ messageDesc(file_cover_v1_cover, 360);
11451
11546
 
11452
11547
  /**
11453
11548
  * @generated from message blueapi.cover.v1.GetUnitMetricRequest
@@ -11466,7 +11561,7 @@ export type GetUnitMetricRequest = Message<"blueapi.cover.v1.GetUnitMetricReques
11466
11561
  * Use `create(GetUnitMetricRequestSchema)` to create a new message.
11467
11562
  */
11468
11563
  export const GetUnitMetricRequestSchema: GenMessage<GetUnitMetricRequest> = /*@__PURE__*/
11469
- messageDesc(file_cover_v1_cover, 357);
11564
+ messageDesc(file_cover_v1_cover, 361);
11470
11565
 
11471
11566
  /**
11472
11567
  * @generated from message blueapi.cover.v1.GetUnitMetricResponse
@@ -11483,7 +11578,7 @@ export type GetUnitMetricResponse = Message<"blueapi.cover.v1.GetUnitMetricRespo
11483
11578
  * Use `create(GetUnitMetricResponseSchema)` to create a new message.
11484
11579
  */
11485
11580
  export const GetUnitMetricResponseSchema: GenMessage<GetUnitMetricResponse> = /*@__PURE__*/
11486
- messageDesc(file_cover_v1_cover, 358);
11581
+ messageDesc(file_cover_v1_cover, 362);
11487
11582
 
11488
11583
  /**
11489
11584
  * @generated from message blueapi.cover.v1.UpdateUnitMetricRequest
@@ -11544,7 +11639,7 @@ export type UpdateUnitMetricRequest = Message<"blueapi.cover.v1.UpdateUnitMetric
11544
11639
  * Use `create(UpdateUnitMetricRequestSchema)` to create a new message.
11545
11640
  */
11546
11641
  export const UpdateUnitMetricRequestSchema: GenMessage<UpdateUnitMetricRequest> = /*@__PURE__*/
11547
- messageDesc(file_cover_v1_cover, 359);
11642
+ messageDesc(file_cover_v1_cover, 363);
11548
11643
 
11549
11644
  /**
11550
11645
  * @generated from message blueapi.cover.v1.UpdateUnitMetricResponse
@@ -11561,7 +11656,7 @@ export type UpdateUnitMetricResponse = Message<"blueapi.cover.v1.UpdateUnitMetri
11561
11656
  * Use `create(UpdateUnitMetricResponseSchema)` to create a new message.
11562
11657
  */
11563
11658
  export const UpdateUnitMetricResponseSchema: GenMessage<UpdateUnitMetricResponse> = /*@__PURE__*/
11564
- messageDesc(file_cover_v1_cover, 360);
11659
+ messageDesc(file_cover_v1_cover, 364);
11565
11660
 
11566
11661
  /**
11567
11662
  * @generated from message blueapi.cover.v1.DeleteUnitMetricRequest
@@ -11580,7 +11675,7 @@ export type DeleteUnitMetricRequest = Message<"blueapi.cover.v1.DeleteUnitMetric
11580
11675
  * Use `create(DeleteUnitMetricRequestSchema)` to create a new message.
11581
11676
  */
11582
11677
  export const DeleteUnitMetricRequestSchema: GenMessage<DeleteUnitMetricRequest> = /*@__PURE__*/
11583
- messageDesc(file_cover_v1_cover, 361);
11678
+ messageDesc(file_cover_v1_cover, 365);
11584
11679
 
11585
11680
  /**
11586
11681
  * @generated from message blueapi.cover.v1.DeleteUnitMetricResponse
@@ -11597,7 +11692,7 @@ export type DeleteUnitMetricResponse = Message<"blueapi.cover.v1.DeleteUnitMetri
11597
11692
  * Use `create(DeleteUnitMetricResponseSchema)` to create a new message.
11598
11693
  */
11599
11694
  export const DeleteUnitMetricResponseSchema: GenMessage<DeleteUnitMetricResponse> = /*@__PURE__*/
11600
- messageDesc(file_cover_v1_cover, 362);
11695
+ messageDesc(file_cover_v1_cover, 366);
11601
11696
 
11602
11697
  /**
11603
11698
  * @generated from message blueapi.cover.v1.PreviewGoogleSheetRequest
@@ -11641,7 +11736,7 @@ export type PreviewGoogleSheetRequest = Message<"blueapi.cover.v1.PreviewGoogleS
11641
11736
  * Use `create(PreviewGoogleSheetRequestSchema)` to create a new message.
11642
11737
  */
11643
11738
  export const PreviewGoogleSheetRequestSchema: GenMessage<PreviewGoogleSheetRequest> = /*@__PURE__*/
11644
- messageDesc(file_cover_v1_cover, 363);
11739
+ messageDesc(file_cover_v1_cover, 367);
11645
11740
 
11646
11741
  /**
11647
11742
  * @generated from message blueapi.cover.v1.PreviewGoogleSheetResponse
@@ -11667,7 +11762,7 @@ export type PreviewGoogleSheetResponse = Message<"blueapi.cover.v1.PreviewGoogle
11667
11762
  * Use `create(PreviewGoogleSheetResponseSchema)` to create a new message.
11668
11763
  */
11669
11764
  export const PreviewGoogleSheetResponseSchema: GenMessage<PreviewGoogleSheetResponse> = /*@__PURE__*/
11670
- messageDesc(file_cover_v1_cover, 364);
11765
+ messageDesc(file_cover_v1_cover, 368);
11671
11766
 
11672
11767
  /**
11673
11768
  * @generated from message blueapi.cover.v1.ConfirmGoogleSheetAccessRequest
@@ -11687,7 +11782,7 @@ export type ConfirmGoogleSheetAccessRequest = Message<"blueapi.cover.v1.ConfirmG
11687
11782
  * Use `create(ConfirmGoogleSheetAccessRequestSchema)` to create a new message.
11688
11783
  */
11689
11784
  export const ConfirmGoogleSheetAccessRequestSchema: GenMessage<ConfirmGoogleSheetAccessRequest> = /*@__PURE__*/
11690
- messageDesc(file_cover_v1_cover, 365);
11785
+ messageDesc(file_cover_v1_cover, 369);
11691
11786
 
11692
11787
  /**
11693
11788
  * @generated from message blueapi.cover.v1.ConfirmGoogleSheetAccessResponse
@@ -11715,7 +11810,7 @@ export type ConfirmGoogleSheetAccessResponse = Message<"blueapi.cover.v1.Confirm
11715
11810
  * Use `create(ConfirmGoogleSheetAccessResponseSchema)` to create a new message.
11716
11811
  */
11717
11812
  export const ConfirmGoogleSheetAccessResponseSchema: GenMessage<ConfirmGoogleSheetAccessResponse> = /*@__PURE__*/
11718
- messageDesc(file_cover_v1_cover, 366);
11813
+ messageDesc(file_cover_v1_cover, 370);
11719
11814
 
11720
11815
  /**
11721
11816
  * @generated from message blueapi.cover.v1.GetCloudwatchMetadataRequest
@@ -11767,7 +11862,7 @@ export type GetCloudwatchMetadataRequest = Message<"blueapi.cover.v1.GetCloudwat
11767
11862
  * Use `create(GetCloudwatchMetadataRequestSchema)` to create a new message.
11768
11863
  */
11769
11864
  export const GetCloudwatchMetadataRequestSchema: GenMessage<GetCloudwatchMetadataRequest> = /*@__PURE__*/
11770
- messageDesc(file_cover_v1_cover, 367);
11865
+ messageDesc(file_cover_v1_cover, 371);
11771
11866
 
11772
11867
  /**
11773
11868
  * @generated from message blueapi.cover.v1.GetCloudwatchMetadataResponse
@@ -11794,7 +11889,7 @@ export type GetCloudwatchMetadataResponse = Message<"blueapi.cover.v1.GetCloudwa
11794
11889
  * Use `create(GetCloudwatchMetadataResponseSchema)` to create a new message.
11795
11890
  */
11796
11891
  export const GetCloudwatchMetadataResponseSchema: GenMessage<GetCloudwatchMetadataResponse> = /*@__PURE__*/
11797
- messageDesc(file_cover_v1_cover, 368);
11892
+ messageDesc(file_cover_v1_cover, 372);
11798
11893
 
11799
11894
  /**
11800
11895
  * @generated from message blueapi.cover.v1.GetCloudwatchMetadataResponse.Dimension
@@ -11816,7 +11911,7 @@ export type GetCloudwatchMetadataResponse_Dimension = Message<"blueapi.cover.v1.
11816
11911
  * Use `create(GetCloudwatchMetadataResponse_DimensionSchema)` to create a new message.
11817
11912
  */
11818
11913
  export const GetCloudwatchMetadataResponse_DimensionSchema: GenMessage<GetCloudwatchMetadataResponse_Dimension> = /*@__PURE__*/
11819
- messageDesc(file_cover_v1_cover, 368, 0);
11914
+ messageDesc(file_cover_v1_cover, 372, 0);
11820
11915
 
11821
11916
  /**
11822
11917
  * Request message for GetDiscountPlan
@@ -11914,7 +12009,7 @@ export type GetDiscountPlanRequest = Message<"blueapi.cover.v1.GetDiscountPlanRe
11914
12009
  * Use `create(GetDiscountPlanRequestSchema)` to create a new message.
11915
12010
  */
11916
12011
  export const GetDiscountPlanRequestSchema: GenMessage<GetDiscountPlanRequest> = /*@__PURE__*/
11917
- messageDesc(file_cover_v1_cover, 369);
12012
+ messageDesc(file_cover_v1_cover, 373);
11918
12013
 
11919
12014
  /**
11920
12015
  * Response message for GetDiscountPlan
@@ -11938,7 +12033,7 @@ export type GetDiscountPlanResponse = Message<"blueapi.cover.v1.GetDiscountPlanR
11938
12033
  * Use `create(GetDiscountPlanResponseSchema)` to create a new message.
11939
12034
  */
11940
12035
  export const GetDiscountPlanResponseSchema: GenMessage<GetDiscountPlanResponse> = /*@__PURE__*/
11941
- messageDesc(file_cover_v1_cover, 370);
12036
+ messageDesc(file_cover_v1_cover, 374);
11942
12037
 
11943
12038
  /**
11944
12039
  * Request message for ListNonperformingRate
@@ -11987,7 +12082,7 @@ export type ListNonperformingRateRequest = Message<"blueapi.cover.v1.ListNonperf
11987
12082
  * Use `create(ListNonperformingRateRequestSchema)` to create a new message.
11988
12083
  */
11989
12084
  export const ListNonperformingRateRequestSchema: GenMessage<ListNonperformingRateRequest> = /*@__PURE__*/
11990
- messageDesc(file_cover_v1_cover, 371);
12085
+ messageDesc(file_cover_v1_cover, 375);
11991
12086
 
11992
12087
  /**
11993
12088
  * Response message for ListNonperformingRate
@@ -12006,7 +12101,7 @@ export type ListNonperformingRateResponse = Message<"blueapi.cover.v1.ListNonper
12006
12101
  * Use `create(ListNonperformingRateResponseSchema)` to create a new message.
12007
12102
  */
12008
12103
  export const ListNonperformingRateResponseSchema: GenMessage<ListNonperformingRateResponse> = /*@__PURE__*/
12009
- messageDesc(file_cover_v1_cover, 372);
12104
+ messageDesc(file_cover_v1_cover, 376);
12010
12105
 
12011
12106
  /**
12012
12107
  * @generated from message blueapi.cover.v1.ListNonperformingRateResponse.Nonperforming
@@ -12038,7 +12133,7 @@ export type ListNonperformingRateResponse_Nonperforming = Message<"blueapi.cover
12038
12133
  * Use `create(ListNonperformingRateResponse_NonperformingSchema)` to create a new message.
12039
12134
  */
12040
12135
  export const ListNonperformingRateResponse_NonperformingSchema: GenMessage<ListNonperformingRateResponse_Nonperforming> = /*@__PURE__*/
12041
- messageDesc(file_cover_v1_cover, 372, 0);
12136
+ messageDesc(file_cover_v1_cover, 376, 0);
12042
12137
 
12043
12138
  /**
12044
12139
  * Request message for ListUntaggedResources
@@ -12087,7 +12182,7 @@ export type ListUntaggedResourcesRequest = Message<"blueapi.cover.v1.ListUntagge
12087
12182
  * Use `create(ListUntaggedResourcesRequestSchema)` to create a new message.
12088
12183
  */
12089
12184
  export const ListUntaggedResourcesRequestSchema: GenMessage<ListUntaggedResourcesRequest> = /*@__PURE__*/
12090
- messageDesc(file_cover_v1_cover, 373);
12185
+ messageDesc(file_cover_v1_cover, 377);
12091
12186
 
12092
12187
  /**
12093
12188
  * Response message for ListUntaggedResources
@@ -12106,7 +12201,7 @@ export type ListUntaggedResourcesResponse = Message<"blueapi.cover.v1.ListUntagg
12106
12201
  * Use `create(ListUntaggedResourcesResponseSchema)` to create a new message.
12107
12202
  */
12108
12203
  export const ListUntaggedResourcesResponseSchema: GenMessage<ListUntaggedResourcesResponse> = /*@__PURE__*/
12109
- messageDesc(file_cover_v1_cover, 374);
12204
+ messageDesc(file_cover_v1_cover, 378);
12110
12205
 
12111
12206
  /**
12112
12207
  * @generated from message blueapi.cover.v1.ListUntaggedResourcesResponse.UntaggedResources
@@ -12148,7 +12243,7 @@ export type ListUntaggedResourcesResponse_UntaggedResources = Message<"blueapi.c
12148
12243
  * Use `create(ListUntaggedResourcesResponse_UntaggedResourcesSchema)` to create a new message.
12149
12244
  */
12150
12245
  export const ListUntaggedResourcesResponse_UntaggedResourcesSchema: GenMessage<ListUntaggedResourcesResponse_UntaggedResources> = /*@__PURE__*/
12151
- messageDesc(file_cover_v1_cover, 374, 0);
12246
+ messageDesc(file_cover_v1_cover, 378, 0);
12152
12247
 
12153
12248
  /**
12154
12249
  * Status of upload file
@@ -12224,6 +12319,7 @@ export const Cover: GenService<{
12224
12319
  * Create a member
12225
12320
  *
12226
12321
  * @generated from rpc blueapi.cover.v1.Cover.CreateMember
12322
+ * @deprecated
12227
12323
  */
12228
12324
  createMember: {
12229
12325
  methodKind: "unary";
@@ -12398,6 +12494,7 @@ export const Cover: GenService<{
12398
12494
  * Deletes a user
12399
12495
  *
12400
12496
  * @generated from rpc blueapi.cover.v1.Cover.DeleteMember
12497
+ * @deprecated
12401
12498
  */
12402
12499
  deleteMember: {
12403
12500
  methodKind: "unary";
@@ -14172,6 +14269,26 @@ export const Cover: GenService<{
14172
14269
  input: typeof ReinviteUserRequestSchema;
14173
14270
  output: typeof ReinviteUserResponseSchema;
14174
14271
  },
14272
+ /**
14273
+ * Retrieves a user's details by their ID.
14274
+ *
14275
+ * @generated from rpc blueapi.cover.v1.Cover.GetUser
14276
+ */
14277
+ getUser: {
14278
+ methodKind: "unary";
14279
+ input: typeof GetUserRequestSchema;
14280
+ output: typeof GetUserResponseSchema;
14281
+ },
14282
+ /**
14283
+ * Lists the roles and cost groups assigned to the authenticated user.
14284
+ *
14285
+ * @generated from rpc blueapi.cover.v1.Cover.GetMyRoles
14286
+ */
14287
+ getMyRoles: {
14288
+ methodKind: "unary";
14289
+ input: typeof GetMyRolesRequestSchema;
14290
+ output: typeof GetMyRolesResponseSchema;
14291
+ },
14175
14292
  }> = /*@__PURE__*/
14176
14293
  serviceDesc(file_cover_v1_cover, 0);
14177
14294