@githolon/runtime 0.113.4 → 0.114.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/RUNTIME-SOURCES.sha256 +52 -43
  2. package/dist/application-reception.js +1 -1
  3. package/dist/nomos-native-runtime.js +2608 -600
  4. package/dist/nomos-runner-web.js +1 -1
  5. package/dist/nomos-runner-worker.js +3062 -862
  6. package/dist/nomos-runner.js +3007 -843
  7. package/dist/remote-reception.cjs +21 -21
  8. package/dist/remote-reception.js +21 -21
  9. package/dist/typescript-application-desk.js +24 -25
  10. package/package.json +1 -1
  11. package/runner/node-entry.mjs +2803 -690
  12. package/src/protocol/nomos/kernel/v1/kernel_pb.d.ts +349 -0
  13. package/src/protocol/nomos/kernel/v1/kernel_pb.js +310 -275
  14. package/src/protocol/nomos/runtime/v2/application_desk_pb.d.ts +8 -0
  15. package/src/protocol/nomos/runtime/v2/application_desk_pb.js +1 -1
  16. package/src/protocol/nomos/runtime/v2/correspondence_desk_pb.d.ts +220 -0
  17. package/src/protocol/nomos/runtime/v2/correspondence_desk_pb.js +62 -20
  18. package/src/protocol/nomos/runtime/v2/model_adoption_desk_pb.d.ts +14 -2
  19. package/src/protocol/nomos/runtime/v2/model_adoption_desk_pb.js +1 -1
  20. package/src/protocol/nomos/runtime/v2/observability_desk_pb.d.ts +111 -2
  21. package/src/protocol/nomos/runtime/v2/observability_desk_pb.js +27 -12
  22. package/src/protocol/nomos/runtime/v2/receiving_group_desk_pb.d.ts +0 -29
  23. package/src/protocol/nomos/runtime/v2/receiving_group_desk_pb.js +6 -13
  24. package/src/protocol/nomos/runtime/v2/residency_desk_pb.d.ts +19 -0
  25. package/src/protocol/nomos/runtime/v2/residency_desk_pb.js +1 -1
  26. package/src/typescript_application_desk.public.d.ts +0 -1
@@ -70,6 +70,14 @@ export declare type WatchRequest = Message<"nomos.runtime.v2.WatchRequest"> & {
70
70
  * @generated from field: uint32 interval_millis = 5;
71
71
  */
72
72
  intervalMillis: number;
73
+
74
+ /**
75
+ * The consumer merges `WatchChanged.application_delta` itself (CAP-731). Without it the runtime
76
+ * delivers only complete results, as before.
77
+ *
78
+ * @generated from field: bool accept_row_delta = 6;
79
+ */
80
+ acceptRowDelta: boolean;
73
81
  };
74
82
 
75
83
  /**
@@ -10,7 +10,7 @@ import { file_nomos_runtime_v2_credentials_desk } from "./credentials_desk_pb.js
10
10
  * Describes the file nomos/runtime/v2/application_desk.proto.
11
11
  */
12
12
  export const file_nomos_runtime_v2_application_desk = /*@__PURE__*/
13
- fileDesc("Cidub21vcy9ydW50aW1lL3YyL2FwcGxpY2F0aW9uX2Rlc2sucHJvdG8SEG5vbW9zLnJ1bnRpbWUudjIijAEKEUtlcm5lbENhbGxSZXF1ZXN0Eg8KB3Nlc3Npb24YASABKAkSLQoHcmVxdWVzdBgCIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5DYWxsUmVxdWVzdBI3Cg5jcmVkZW50aWFsX3VzZRgDIAEoDjIfLm5vbW9zLnJ1bnRpbWUudjIuQ3JlZGVudGlhbFVzZSKqAQoMV2F0Y2hSZXF1ZXN0Eg8KB3Nlc3Npb24YASABKAkSFwoPc3Vic2NyaXB0aW9uX2lkGAIgASgJEikKBGtpbmQYAyABKA4yGy5ub21vcy5ydW50aW1lLnYyLldhdGNoS2luZBIsCgVxdWVyeRgEIAEoCzIdLm5vbW9zLmtlcm5lbC52MS5RdWVyeVJlcXVlc3QSFwoPaW50ZXJ2YWxfbWlsbGlzGAUgASgNIicKDFdhdGNoU3RhcnRlZBIXCg9zdWJzY3JpcHRpb25faWQYASABKAkiKQoOVW53YXRjaFJlcXVlc3QSFwoPc3Vic2NyaXB0aW9uX2lkGAEgASgJIicKDFdhdGNoU3RvcHBlZBIXCg9zdWJzY3JpcHRpb25faWQYASABKAkqqAEKCVdhdGNoS2luZBIaChZXQVRDSF9LSU5EX1VOU1BFQ0lGSUVEEAASFAoQV0FUQ0hfS0lORF9RVUVSWRABEhQKEFdBVENIX0tJTkRfQllfSUQQAhIWChJXQVRDSF9LSU5EX1NQQVRJQUwQAxIXChNXQVRDSF9LSU5EX0FDVElWSVRZEAQiBAgFEAUqHFdBVENIX0tJTkRfUEVORElOR19DT05GTElDVFNiBnByb3RvMw", [file_nomos_kernel_v1_kernel, file_nomos_runtime_v2_credentials_desk]);
13
+ fileDesc("Cidub21vcy9ydW50aW1lL3YyL2FwcGxpY2F0aW9uX2Rlc2sucHJvdG8SEG5vbW9zLnJ1bnRpbWUudjIijAEKEUtlcm5lbENhbGxSZXF1ZXN0Eg8KB3Nlc3Npb24YASABKAkSLQoHcmVxdWVzdBgCIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5DYWxsUmVxdWVzdBI3Cg5jcmVkZW50aWFsX3VzZRgDIAEoDjIfLm5vbW9zLnJ1bnRpbWUudjIuQ3JlZGVudGlhbFVzZSLEAQoMV2F0Y2hSZXF1ZXN0Eg8KB3Nlc3Npb24YASABKAkSFwoPc3Vic2NyaXB0aW9uX2lkGAIgASgJEikKBGtpbmQYAyABKA4yGy5ub21vcy5ydW50aW1lLnYyLldhdGNoS2luZBIsCgVxdWVyeRgEIAEoCzIdLm5vbW9zLmtlcm5lbC52MS5RdWVyeVJlcXVlc3QSFwoPaW50ZXJ2YWxfbWlsbGlzGAUgASgNEhgKEGFjY2VwdF9yb3dfZGVsdGEYBiABKAgiJwoMV2F0Y2hTdGFydGVkEhcKD3N1YnNjcmlwdGlvbl9pZBgBIAEoCSIpCg5VbndhdGNoUmVxdWVzdBIXCg9zdWJzY3JpcHRpb25faWQYASABKAkiJwoMV2F0Y2hTdG9wcGVkEhcKD3N1YnNjcmlwdGlvbl9pZBgBIAEoCSqoAQoJV2F0Y2hLaW5kEhoKFldBVENIX0tJTkRfVU5TUEVDSUZJRUQQABIUChBXQVRDSF9LSU5EX1FVRVJZEAESFAoQV0FUQ0hfS0lORF9CWV9JRBACEhYKEldBVENIX0tJTkRfU1BBVElBTBADEhcKE1dBVENIX0tJTkRfQUNUSVZJVFkQBCIECAUQBSocV0FUQ0hfS0lORF9QRU5ESU5HX0NPTkZMSUNUU2IGcHJvdG8z", [file_nomos_kernel_v1_kernel, file_nomos_runtime_v2_credentials_desk]);
14
14
 
15
15
  /**
16
16
  * Describes the message nomos.runtime.v2.KernelCallRequest.
@@ -581,6 +581,15 @@ export declare type SyncWorkspaceResponse = Message<"nomos.runtime.v2.SyncWorksp
581
581
  * @generated from field: optional nomos.runtime.v2.PreservedLocalCopy preserved_local_copy = 27;
582
582
  */
583
583
  preservedLocalCopy?: PreservedLocalCopy | undefined;
584
+
585
+ /**
586
+ * The custodian (or the edge relaying to it) answered that it is opening this workspace from
587
+ * verified custody: nothing was judged. This is the custodian's hint for when to ask again.
588
+ * Distinct from a refusal, a transport failure or an offline round.
589
+ *
590
+ * @generated from field: optional uint32 custodian_warming_retry_after_millis = 28;
591
+ */
592
+ custodianWarmingRetryAfterMillis?: number | undefined;
584
593
  };
585
594
 
586
595
  /**
@@ -2822,6 +2831,17 @@ export declare type CustodyOfferBatchRequest = Message<"nomos.runtime.v2.Custody
2822
2831
  * @generated from field: optional string continues_after = 9;
2823
2832
  */
2824
2833
  continuesAfter?: string | undefined;
2834
+
2835
+ /**
2836
+ * Set by the live link's relay (CAP-684): the custodian answers this batch with its admission as
2837
+ * soon as it is judged, and `sealed_main` says how much of it is durable. Without it a custodian
2838
+ * holds an admitted answer until its main is retained in custody (the HTTP lane). The sender keeps
2839
+ * its recovery suffix above the sealed main, so a custodian that restarts without the unsealed
2840
+ * admission is simply offered it again.
2841
+ *
2842
+ * @generated from field: bool acknowledge_admission = 10;
2843
+ */
2844
+ acknowledgeAdmission: boolean;
2825
2845
  };
2826
2846
 
2827
2847
  /**
@@ -2981,10 +3001,20 @@ export declare type PeerSocketReceipt = Message<"nomos.runtime.v2.PeerSocketRece
2981
3001
  case: "received";
2982
3002
  } | {
2983
3003
  /**
3004
+ * A shell that cannot say how the socket ended. Prefer `closure`.
3005
+ *
2984
3006
  * @generated from field: bool closed = 4;
2985
3007
  */
2986
3008
  value: boolean;
2987
3009
  case: "closed";
3010
+ } | {
3011
+ /**
3012
+ * The socket ended, as the shell observed it (CAP-683).
3013
+ *
3014
+ * @generated from field: nomos.runtime.v2.PeerSocketClosure closure = 5;
3015
+ */
3016
+ value: PeerSocketClosure;
3017
+ case: "closure";
2988
3018
  } | { case: undefined; value?: undefined };
2989
3019
  };
2990
3020
 
@@ -2994,6 +3024,126 @@ export declare type PeerSocketReceipt = Message<"nomos.runtime.v2.PeerSocketRece
2994
3024
  */
2995
3025
  export declare const PeerSocketReceiptSchema: GenMessage<PeerSocketReceipt>;
2996
3026
 
3027
+ /**
3028
+ * How a live socket ended. Bounded: the reason is at most 123 bytes (RFC 6455's close reason).
3029
+ *
3030
+ * @generated from message nomos.runtime.v2.PeerSocketClosure
3031
+ */
3032
+ export declare type PeerSocketClosure = Message<"nomos.runtime.v2.PeerSocketClosure"> & {
3033
+ /**
3034
+ * The WebSocket close code, when the close carried one (1000, 1001, 1006, ...).
3035
+ *
3036
+ * @generated from field: optional uint32 code = 1;
3037
+ */
3038
+ code?: number | undefined;
3039
+
3040
+ /**
3041
+ * @generated from field: string reason = 2;
3042
+ */
3043
+ reason: string;
3044
+
3045
+ /**
3046
+ * The closing handshake completed.
3047
+ *
3048
+ * @generated from field: bool clean = 3;
3049
+ */
3050
+ clean: boolean;
3051
+
3052
+ /**
3053
+ * @generated from field: nomos.runtime.v2.PeerSocketCloseInitiator initiator = 4;
3054
+ */
3055
+ initiator: PeerSocketCloseInitiator;
3056
+ };
3057
+
3058
+ /**
3059
+ * Describes the message nomos.runtime.v2.PeerSocketClosure.
3060
+ * Use `create(PeerSocketClosureSchema)` to create a new message.
3061
+ */
3062
+ export declare const PeerSocketClosureSchema: GenMessage<PeerSocketClosure>;
3063
+
3064
+ /**
3065
+ * One closed live connection, correlated with what that connection had carried (CAP-683). The
3066
+ * runtime keeps a bounded record of recent closes; nothing here costs a history walk or a network
3067
+ * call, and none of it is on the write path.
3068
+ *
3069
+ * @generated from message nomos.runtime.v2.LiveLinkClosure
3070
+ */
3071
+ export declare type LiveLinkClosure = Message<"nomos.runtime.v2.LiveLinkClosure"> & {
3072
+ /**
3073
+ * @generated from field: string connection_id = 1;
3074
+ */
3075
+ connectionId: string;
3076
+
3077
+ /**
3078
+ * @generated from field: string workspace = 2;
3079
+ */
3080
+ workspace: string;
3081
+
3082
+ /**
3083
+ * @generated from field: nomos.runtime.v2.LiveLinkRole role = 3;
3084
+ */
3085
+ role: LiveLinkRole;
3086
+
3087
+ /**
3088
+ * @generated from field: nomos.runtime.v2.PeerSocketClosure socket = 4;
3089
+ */
3090
+ socket?: PeerSocketClosure | undefined;
3091
+
3092
+ /**
3093
+ * @generated from field: uint64 closed_at_unix_millis = 5;
3094
+ */
3095
+ closedAtUnixMillis: bigint;
3096
+
3097
+ /**
3098
+ * How long the socket had been open; 0 when it never opened.
3099
+ *
3100
+ * @generated from field: uint64 open_millis = 6;
3101
+ */
3102
+ openMillis: bigint;
3103
+
3104
+ /**
3105
+ * Admissions this connection carried, and the last of them.
3106
+ *
3107
+ * @generated from field: uint32 admissions = 7;
3108
+ */
3109
+ admissions: number;
3110
+
3111
+ /**
3112
+ * @generated from field: optional string last_admission_request_id = 8;
3113
+ */
3114
+ lastAdmissionRequestId?: string | undefined;
3115
+
3116
+ /**
3117
+ * @generated from field: optional string last_admitted_main = 9;
3118
+ */
3119
+ lastAdmittedMain?: string | undefined;
3120
+
3121
+ /**
3122
+ * @generated from field: optional string last_sealed_main = 10;
3123
+ */
3124
+ lastSealedMain?: string | undefined;
3125
+
3126
+ /**
3127
+ * The last frontier the upstream announced on this connection.
3128
+ *
3129
+ * @generated from field: optional string last_frontier = 11;
3130
+ */
3131
+ lastFrontier?: string | undefined;
3132
+
3133
+ /**
3134
+ * This replica's own batches still awaiting their admission when it closed.
3135
+ *
3136
+ * @generated from field: uint32 unanswered_batches = 12;
3137
+ */
3138
+ unansweredBatches: number;
3139
+ };
3140
+
3141
+ /**
3142
+ * Describes the message nomos.runtime.v2.LiveLinkClosure.
3143
+ * Use `create(LiveLinkClosureSchema)` to create a new message.
3144
+ */
3145
+ export declare const LiveLinkClosureSchema: GenMessage<LiveLinkClosure>;
3146
+
2997
3147
  /**
2998
3148
  * @generated from message nomos.runtime.v2.PeerSocketObserved
2999
3149
  */
@@ -3703,3 +3853,73 @@ export enum DeviceRecoveryAdmissionStage {
3703
3853
  * Describes the enum nomos.runtime.v2.DeviceRecoveryAdmissionStage.
3704
3854
  */
3705
3855
  export declare const DeviceRecoveryAdmissionStageSchema: GenEnum<DeviceRecoveryAdmissionStage>;
3856
+
3857
+ /**
3858
+ * Who ended a live socket.
3859
+ *
3860
+ * @generated from enum nomos.runtime.v2.PeerSocketCloseInitiator
3861
+ */
3862
+ export enum PeerSocketCloseInitiator {
3863
+ /**
3864
+ * @generated from enum value: PEER_SOCKET_CLOSE_INITIATOR_UNSPECIFIED = 0;
3865
+ */
3866
+ UNSPECIFIED = 0,
3867
+
3868
+ /**
3869
+ * The runtime asked for it: a PeerSocketEffect close (a timed-out open, a disconnect).
3870
+ *
3871
+ * @generated from enum value: PEER_SOCKET_CLOSE_INITIATOR_RUNTIME = 1;
3872
+ */
3873
+ RUNTIME = 1,
3874
+
3875
+ /**
3876
+ * The shell, on its own account: the origin fence refused the open, a send found no open
3877
+ * socket, a receipt could not be delivered, or the host shut down.
3878
+ *
3879
+ * @generated from enum value: PEER_SOCKET_CLOSE_INITIATOR_SHELL = 2;
3880
+ */
3881
+ SHELL = 2,
3882
+
3883
+ /**
3884
+ * The remote end or the network: a close frame, a reset, or a connect that failed.
3885
+ *
3886
+ * @generated from enum value: PEER_SOCKET_CLOSE_INITIATOR_REMOTE = 3;
3887
+ */
3888
+ REMOTE = 3,
3889
+ }
3890
+
3891
+ /**
3892
+ * Describes the enum nomos.runtime.v2.PeerSocketCloseInitiator.
3893
+ */
3894
+ export declare const PeerSocketCloseInitiatorSchema: GenEnum<PeerSocketCloseInitiator>;
3895
+
3896
+ /**
3897
+ * Which side of the live link a connection served.
3898
+ *
3899
+ * @generated from enum nomos.runtime.v2.LiveLinkRole
3900
+ */
3901
+ export enum LiveLinkRole {
3902
+ /**
3903
+ * @generated from enum value: LIVE_LINK_ROLE_UNSPECIFIED = 0;
3904
+ */
3905
+ UNSPECIFIED = 0,
3906
+
3907
+ /**
3908
+ * A replica following its upstream custodian.
3909
+ *
3910
+ * @generated from enum value: LIVE_LINK_ROLE_PEER = 1;
3911
+ */
3912
+ PEER = 1,
3913
+
3914
+ /**
3915
+ * A hosted publisher relaying a custodian's frontier.
3916
+ *
3917
+ * @generated from enum value: LIVE_LINK_ROLE_RELAY = 2;
3918
+ */
3919
+ RELAY = 2,
3920
+ }
3921
+
3922
+ /**
3923
+ * Describes the enum nomos.runtime.v2.LiveLinkRole.
3924
+ */
3925
+ export declare const LiveLinkRoleSchema: GenEnum<LiveLinkRole>;
@@ -13,7 +13,7 @@ import { file_nomos_runtime_v2_maintenance_desk } from "./maintenance_desk_pb.js
13
13
  * Describes the file nomos/runtime/v2/correspondence_desk.proto.
14
14
  */
15
15
  export const file_nomos_runtime_v2_correspondence_desk = /*@__PURE__*/
16
- fileDesc("Cipub21vcy9ydW50aW1lL3YyL2NvcnJlc3BvbmRlbmNlX2Rlc2sucHJvdG8SEG5vbW9zLnJ1bnRpbWUudjIi0AIKFVNoYXJlV29ya3NwYWNlUmVxdWVzdBIPCgdzdWJqZWN0GAEgASgJEhAKCHJlbGF0aW9uGAIgASgJEhoKEmFzc2VydGVyX3ByaW5jaXBhbBgDIAEoCRIOCgZvYmplY3QYBCABKAkSHAoPaG9tZV9sYXdfc2hhMjU2GAUgASgJSACIAQESGgoNYXV0aG9yX3NlY3JldBgGIAEoDEgBiAEBEh8KEmFzc2VydGVyX3dvcmtzcGFjZRgHIAEoCUgCiAEBEhgKC2F0dGVzdGVkX2F0GAggASgJSAOIAQESFwoKYXV0aF90b2tlbhgJIAEoDEgEiAEBQhIKEF9ob21lX2xhd19zaGEyNTZCEAoOX2F1dGhvcl9zZWNyZXRCFQoTX2Fzc2VydGVyX3dvcmtzcGFjZUIOCgxfYXR0ZXN0ZWRfYXRCDQoLX2F1dGhfdG9rZW4ikgEKFFNoYXJlV29ya3NwYWNlUmVzdWx0EjgKB291dGNvbWUYASABKA4yJy5ub21vcy5ydW50aW1lLnYyLlNoYXJlV29ya3NwYWNlT3V0Y29tZRITCgZzdGF0dXMYAiABKA1IAIgBARIUCgdtZXNzYWdlGAMgASgJSAGIAQFCCQoHX3N0YXR1c0IKCghfbWVzc2FnZSLKAQodUGFyZW50U2lnbmVyRW5yb2xsbWVudFJlcXVlc3QSDgoGcGFyZW50GAEgASgJEhEKCXByaW5jaXBhbBgCIAEoCRIXCgprZXlfc2hhMjU2GAMgASgJSACIAQESFwoKcHVibGljX2tleRgEIAEoDEgBiAEBEhcKCmF1dGhfdG9rZW4YBSABKAxIAogBARIOCgZyZW1vdGUYBiABKAhCDQoLX2tleV9zaGEyNTZCDQoLX3B1YmxpY19rZXlCDQoLX2F1dGhfdG9rZW4i1AEKFlBhcmVudFNpZ25lckVucm9sbG1lbnQSDgoGcGFyZW50GAEgASgJEhEKCXByaW5jaXBhbBgCIAEoCRISCgprZXlfc2hhMjU2GAMgASgJEg4KBm9iamVjdBgEIAEoCRIQCghyZWxhdGlvbhgFIAEoCRIQCghlbnJvbGxlZBgGIAEoCBIPCgdyZXZva2VkGAcgASgIEhkKDHZlcmlmaWVkX3ZpYRgIIAEoCUgAiAEBEhIKCmNoZWNrZWRfYXQYCSABKAlCDwoNX3ZlcmlmaWVkX3ZpYSLcAgojRW5zdXJlUGFyZW50U2lnbmVyRW5yb2xsbWVudFJlcXVlc3QSDgoGcGFyZW50GAEgASgJEhEKCXByaW5jaXBhbBgCIAEoCRIXCgpwdWJsaWNfa2V5GAMgASgMSACIAQESGgoNYXV0aG9yX3NlY3JldBgEIAEoDEgBiAEBEhMKBmRvbWFpbhgFIAEoCUgCiAEBEhYKCWRpcmVjdGl2ZRgGIAEoCUgDiAEBEhcKCmF1dGhfdG9rZW4YByABKAxIBIgBARIVCghpZF90b2tlbhgIIAEoDEgFiAEBEhkKDHZlcmlmaWVkX3ZpYRgJIAEoCUgGiAEBQg0KC19wdWJsaWNfa2V5QhAKDl9hdXRob3Jfc2VjcmV0QgkKB19kb21haW5CDAoKX2RpcmVjdGl2ZUINCgtfYXV0aF90b2tlbkILCglfaWRfdG9rZW5CDwoNX3ZlcmlmaWVkX3ZpYSLZAQoiRW5zdXJlUGFyZW50U2lnbmVyRW5yb2xsbWVudFJlc3VsdBIOCgZwYXJlbnQYASABKAkSEQoJcHJpbmNpcGFsGAIgASgJEhIKCmtleV9zaGEyNTYYAyABKAkSEAoIZW5yb2xsZWQYBCABKAgSEAoIcmVwYWlyZWQYBSABKAgSEwoGZG9tYWluGAYgASgJSACIAQESFgoJZGlyZWN0aXZlGAcgASgJSAGIAQESEgoKY2hlY2tlZF9hdBgIIAEoCUIJCgdfZG9tYWluQgwKCl9kaXJlY3RpdmUiHQobVmVyaWZ5V29ya3NwYWNlQ2hhaW5SZXF1ZXN0IrsBChpWZXJpZnlXb3Jrc3BhY2VDaGFpblJlc3VsdBINCgV2YWxpZBgBIAEoCBISCgVlcnJvchgCIAEoCUgAiAEBEhgKC3BsYW5zX3JlcnVuGAMgASgESAGIAQESOgoHaGlzdG9yeRgEIAEoCzIkLm5vbW9zLnJ1bnRpbWUudjIuVmVyaWZ5Q2hhaW5IaXN0b3J5SAKIAQFCCAoGX2Vycm9yQg4KDF9wbGFuc19yZXJ1bkIKCghfaGlzdG9yeSKHAQoSVmVyaWZ5Q2hhaW5IaXN0b3J5Eg0KBXN0YXRlGAEgASgJEg4KBmFuY2hvchgCIAEoCRIQCghib3VuZGFyeRgDIAMoCRIMCgR3YWxrGAQgASgJEh0KEHZlcmlmaWVkX2NvbW1pdHMYBSABKARIAIgBAUITChFfdmVyaWZpZWRfY29tbWl0cyJ/ChRTeW5jV29ya3NwYWNlUmVxdWVzdBINCgVhZG1pdBgCIAEoCBIRCgl3b3Jrc3BhY2UYAyABKAkSHwoScmVwbGFjZV9sb2NhbF9oZWFkGAQgASgJSACIAQFCFQoTX3JlcGxhY2VfbG9jYWxfaGVhZEoECAEQAlIHc2Vzc2lvbiKqCQoVU3luY1dvcmtzcGFjZVJlc3BvbnNlEhEKCXdvcmtzcGFjZRgBIAEoCRIaCg1wcmV2aW91c19oZWFkGAIgASgJSACIAQESGQoMY3VycmVudF9oZWFkGAMgASgJSAGIAQESEAoIYWRtaXR0ZWQYBCABKAQSDwoHcmVmdXNlZBgFIAEoBBIQCghkZWZlcnJlZBgGIAEoBBISCgpsb2NhbF9vbmx5GAcgASgIEg4KBnB1bGxlZBgIIAEoCBIQCghkaXZlcmdlZBgJIAEoCBIaChJyZWNvbm5lY3RfcmVxdWlyZWQYCiABKAgSEwoLc3RpbGxfYWhlYWQYCyABKAgSDwoHb2ZmbGluZRgMIAEoCBITCgtwdXNoX2ZhaWxlZBgNIAEoCBIdChVkaXJlY3Rfb2ZmZXJfZGVmZXJyZWQYDiABKAgSNQoOYmlydGhfb3V0Y29tZXMYDyADKAsyHS5ub21vcy5rZXJuZWwudjEuQmlydGhPdXRjb21lEhsKE2FkbWl0dGVkX2ludGVudF9pZHMYECADKAkSHAoUY29udmVyZ2VkX2ludGVudF9pZHMYESADKAkSQgoKcHVzaF9lcnJvchgSIAEoCzIpLm5vbW9zLnJ1bnRpbWUudjIuUnVudGltZVRyYW5zcG9ydEZhaWx1cmVIAogBARJHCg9kaXNjb3ZlcnlfZXJyb3IYEyABKAsyKS5ub21vcy5ydW50aW1lLnYyLlJ1bnRpbWVUcmFuc3BvcnRGYWlsdXJlSAOIAQESMwoHdGltaW5ncxgUIAEoCzIiLm5vbW9zLnJ1bnRpbWUudjIuU3luY1BoYXNlVGltaW5ncxJBCg1vZmZlcl9yZWNlaXB0GBUgASgLMiUubm9tb3MucnVudGltZS52Mi5DdXN0b2R5T2ZmZXJSZWNlaXB0SASIAQESOQoOcmVtb3RlX3JlZnVzYWwYFiABKAsyHC5ub21vcy5rZXJuZWwudjEuU3luY1JlZnVzYWxIBYgBARJHChRjdXN0b2R5X2Rpc2FncmVlbWVudBgXIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5DdXN0b2R5RGlzYWdyZWVtZW50SAaIAQESGAoQY3VzdG9keV9yZXBsYWNlZBgYIAEoCBIVCg1tYWluX2FkdmFuY2VkGBkgASgIEkAKD3JlYm9ybl9yZW1vdGVseRgaIAEoCzIiLm5vbW9zLnJ1bnRpbWUudjIuV29ya3NwYWNlUmViaXJ0aEgHiAEBEkcKFHByZXNlcnZlZF9sb2NhbF9jb3B5GBsgASgLMiQubm9tb3MucnVudGltZS52Mi5QcmVzZXJ2ZWRMb2NhbENvcHlICIgBAUIQCg5fcHJldmlvdXNfaGVhZEIPCg1fY3VycmVudF9oZWFkQg0KC19wdXNoX2Vycm9yQhIKEF9kaXNjb3ZlcnlfZXJyb3JCEAoOX29mZmVyX3JlY2VpcHRCEQoPX3JlbW90ZV9yZWZ1c2FsQhcKFV9jdXN0b2R5X2Rpc2FncmVlbWVudEISChBfcmVib3JuX3JlbW90ZWx5QhcKFV9wcmVzZXJ2ZWRfbG9jYWxfY29weSLoAQoTQ3VzdG9keU9mZmVyUmVjZWlwdBISCgpyZXF1ZXN0X2lkGAEgASgJEkMKCWFkbWlzc2lvbhgKIAEoCzIuLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keU9mZmVyQWRtaXNzaW9uUmVjZWlwdEgAEjgKB2ZhaWx1cmUYCyABKAsyJS5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlPZmZlckZhaWx1cmVIABIzCgdibG9ja2VkGAwgASgLMiAubm9tb3MucnVudGltZS52Mi5SdW50aW1lQmxvY2tlZEgAQgkKB291dGNvbWUihgIKHEN1c3RvZHlPZmZlckFkbWlzc2lvblJlY2VpcHQSDAoEbWFpbhgBIAEoCRIYCgtzZWFsZWRfbWFpbhgCIAEoCUgAiAEBEjsKCHNlc3Npb25zGAMgAygLMikubm9tb3MucnVudGltZS52Mi5DdXN0b2R5U2Vzc2lvbkFkbWlzc2lvbhI1Cg5iaXJ0aF9vdXRjb21lcxgEIAMoCzIdLm5vbW9zLmtlcm5lbC52MS5CaXJ0aE91dGNvbWUSOgoHdGltaW5ncxgFIAEoCzIpLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUFkbWlzc2lvblRpbWluZ3NCDgoMX3NlYWxlZF9tYWluIrMBChNDdXN0b2R5T2ZmZXJGYWlsdXJlEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIRCgljb21wb25lbnQYAyABKAkSFgoJd29ya3NwYWNlGAQgASgJSACIAQESEwoGZG9tYWluGAUgASgJSAGIAQESFgoJZGlyZWN0aXZlGAYgASgJSAKIAQFCDAoKX3dvcmtzcGFjZUIJCgdfZG9tYWluQgwKCl9kaXJlY3RpdmUiXQoXUnVudGltZVRyYW5zcG9ydEZhaWx1cmUSEAoIZW5kcG9pbnQYASABKAkSDgoGc3RhdHVzGAIgASgREg8KB3JlZnVzZWQYAyABKAgSDwoHbWVzc2FnZRgEIAEoCSLFAQoQU3luY1BoYXNlVGltaW5ncxITCgtwdXNoX21pbGxpcxgBIAEoARIUCgxhZG1pdF9taWxsaXMYAiABKAESFwoPcHJlZmV0Y2hfbWlsbGlzGAMgASgBEhcKD2NvbnZlcmdlX21pbGxpcxgEIAEoARISCgpwdXNoX2J5dGVzGAUgASgEEhUKDXNlcnZlcl9taWxsaXMYBiABKAESFQoNb2ZmZXJfaW5fcHVzaBgHIAEoCBISCgpwdWxsX2J5dGVzGAggASgEIjQKH1JlZnJlc2hSZXBsaWNhQ3JlZGVudGlhbFJlcXVlc3QSEQoJd29ya3NwYWNlGAEgASgJIosBCgxHaXRSZWFkTGVhc2USFgoOZm9ybWF0X3ZlcnNpb24YASABKA0SEQoJd29ya3NwYWNlGAIgASgJEg4KBnJlbW90ZRgDIAEoCRINCgV0b2tlbhgEIAEoCRITCgt0dGxfc2Vjb25kcxgFIAEoDRIcChRleHBpcmVzX3VuaXhfc2Vjb25kcxgGIAEoBCJuCg9HaXRGZXRjaFJlcXVlc3QSDwoHc2Vzc2lvbhgBIAEoCRItCgVsZWFzZRgCIAEoCzIeLm5vbW9zLnJ1bnRpbWUudjIuR2l0UmVhZExlYXNlEgwKBHdhbnQYAyABKAkSDQoFaGF2ZXMYBCADKAkiagoOR2l0RmV0Y2hSZXN1bHQSHQoQc3RhZ2VkX3BhY2tfZmlsZRgBIAEoCUgAiAEBEgwKBGhlYWQYAiABKAkSFgoOcmVjZWl2ZWRfYnl0ZXMYAyABKARCEwoRX3N0YWdlZF9wYWNrX2ZpbGUitgEKHkRlbGl2ZXJXb3Jrc3BhY2VFZmZlY3RzUmVxdWVzdBIWCg5zb3VyY2Vfc2Vzc2lvbhgBIAEoCRIYChB0YXJnZXRfd29ya3NwYWNlGAIgASgJEhoKDXNvdXJjZV9jb21taXQYAyABKAlIAIgBARIeChFzb3VyY2Vfb2ZmZXJfcGF0aBgEIAEoCUgBiAEBQhAKDl9zb3VyY2VfY29tbWl0QhQKEl9zb3VyY2Vfb2ZmZXJfcGF0aCJRChxEZWxpdmVySHR0cE9ibGlnYXRpb25SZXF1ZXN0EhYKDnNvdXJjZV9zZXNzaW9uGAEgASgJEhkKEXNvdXJjZV9vZmZlcl9wYXRoGAIgASgJIrsBChdIdHRwT2JsaWdhdGlvbkRlbGl2ZXJlZBIYChBzb3VyY2Vfd29ya3NwYWNlGAEgASgJEhEKCWF0dGVtcHRlZBgCIAEoCBIRCglkZWxpdmVyZWQYAyABKAgSEQoJcmV0cnlhYmxlGAQgASgIEhsKE3ByZXBhcmF0aW9uX3BlbmRpbmcYBSABKAgSHAoPcmV0cnlfYXRfbWlsbGlzGAYgASgESACIAQFCEgoQX3JldHJ5X2F0X21pbGxpcyI2ChxSZWNvdmVyQ29ycmVzcG9uZGVuY2VSZXF1ZXN0EhYKDnNvdXJjZV9zZXNzaW9uGAEgASgJIqwBChdDb3JyZXNwb25kZW5jZVJlY292ZXJlZBIYChBzb3VyY2Vfd29ya3NwYWNlGAEgASgJEg8KB3BlbmRpbmcYAiABKAgSIAoTbmV4dF93YWtlX2F0X21pbGxpcxgDIAEoBEgAiAEBEhoKDXJldGFpbmVkX2hlYWQYBCABKAlIAYgBAUIWChRfbmV4dF93YWtlX2F0X21pbGxpc0IQCg5fcmV0YWluZWRfaGVhZCL2AgoZV29ya3NwYWNlRWZmZWN0c0RlbGl2ZXJlZBIYChBzb3VyY2Vfd29ya3NwYWNlGAEgASgJEhgKEHRhcmdldF93b3Jrc3BhY2UYAiABKAkSEQoJYXR0ZW1wdGVkGAMgASgEEhEKCWRlbGl2ZXJlZBgEIAEoBBIPCgdyZWZ1c2VkGAUgASgEEhEKCXJldHJ5YWJsZRgGIAEoBBIcCg9yZXRyeV9hdF9taWxsaXMYByABKARIAIgBARIbChNwcmVwYXJhdGlvbl9wZW5kaW5nGAggASgIEhgKC3RhcmdldF9oZWFkGAkgASgJSAGIAQESHwoXc291cmNlX291dGNvbWVfcmVjb3JkZWQYCiABKAgSQQoMcmV0cnlfcmVhc29uGAsgASgLMisubm9tb3MucnVudGltZS52Mi5Db3JyZXNwb25kZW5jZVJldHJ5UmVhc29uQhIKEF9yZXRyeV9hdF9taWxsaXNCDgoMX3RhcmdldF9oZWFkIjsKGUNvcnJlc3BvbmRlbmNlUmV0cnlSZWFzb24SDgoGcmVhc29uGAEgASgJEg4KBmRldGFpbBgCIAEoCSKsAwobUmVtb3RlR2VuZXJhdGVkT2ZmZXJSZXF1ZXN0EhYKDnNvdXJjZV9zZXNzaW9uGAEgASgJEhgKEHRhcmdldF93b3Jrc3BhY2UYAiABKAkSDQoFYWN0b3IYAyABKAkSFQoNYXV0aG9yX3NlY3JldBgEIAEoDBISCgphdXRoX3Rva2VuGAUgASgMEi4KBGNhbGwYBiABKAsyHi5ub21vcy5rZXJuZWwudjEuRGlyZWN0aXZlQ2FsbEgAEkAKD21vZGVsX2xpZmVjeWNsZRgJIAEoCzIlLm5vbW9zLmtlcm5lbC52MS5Nb2RlbExpZmVjeWNsZUludGVudEgAEkEKEWJpcnRoX2NlcnRpZmljYXRlGAcgASgLMiEubm9tb3Mua2VybmVsLnYxLkJpcnRoQ2VydGlmaWNhdGVIAYgBARIhChRyZXF1aXJlZF90YXJnZXRfaGVhZBgIIAEoCUgCiAEBEhAKCGxhd191c2R6GAogASgMQggKBmludGVudEIUChJfYmlydGhfY2VydGlmaWNhdGVCFwoVX3JlcXVpcmVkX3RhcmdldF9oZWFkIj8KHFJlbW90ZUdlbmVyYXRlZE9mZmVyQWNjZXB0ZWQSEQoJd29ya3NwYWNlGAEgASgJEgwKBGhlYWQYAiABKAkiygIKDlBlZXJIdHRwRWZmZWN0EhEKCWVmZmVjdF9pZBgBIAEoCRIwCgZtZXRob2QYAiABKA4yIC5ub21vcy5ydW50aW1lLnYyLlBlZXJIdHRwTWV0aG9kEgsKA3VybBgDIAEoCRIZCgxjb250ZW50X3R5cGUYBCABKAlIAIgBARIMCgRib2R5GAUgASgMEhkKDGJlYXJlcl90b2tlbhgGIAEoDEgBiAEBEhMKBmFjY2VwdBgHIAEoCUgCiAEBEhsKDnRpbWVvdXRfbWlsbGlzGAggASgNSAOIAQESHAoPaWRlbXBvdGVuY3lfa2V5GAkgASgJSASIAQFCDwoNX2NvbnRlbnRfdHlwZUIPCg1fYmVhcmVyX3Rva2VuQgkKB19hY2NlcHRCEQoPX3RpbWVvdXRfbWlsbGlzQhIKEF9pZGVtcG90ZW5jeV9rZXkiXAoQUGVlckh0dHBSZXNwb25zZRIOCgZzdGF0dXMYASABKA0SGQoMY29udGVudF90eXBlGAIgASgJSACIAQESDAoEYm9keRgDIAEoDEIPCg1fY29udGVudF90eXBlIl8KEVBlZXJFZmZlY3RGYWlsdXJlEjkKBnJlYXNvbhgBIAEoDjIpLm5vbW9zLnJ1bnRpbWUudjIuUGVlckVmZmVjdEZhaWx1cmVSZWFzb24SDwoHbWVzc2FnZRgCIAEoCSKZCAoRUGVlckVmZmVjdFJlY2VpcHQSEQoJZWZmZWN0X2lkGAEgASgJEjYKCHJlc3BvbnNlGAogASgLMiIubm9tb3MucnVudGltZS52Mi5QZWVySHR0cFJlc3BvbnNlSAASNgoHZmFpbHVyZRgLIAEoCzIjLm5vbW9zLnJ1bnRpbWUudjIuUGVlckVmZmVjdEZhaWx1cmVIABI7CglnaXRfZmV0Y2gYDCABKAsyJi5ub21vcy5ydW50aW1lLnYyLlBlZXJHaXRGZXRjaFJlc3BvbnNlSAASOQoIZ2l0X3B1c2gYDSABKAsyJS5ub21vcy5ydW50aW1lLnYyLlBlZXJHaXRQdXNoUmVzcG9uc2VIABJNChZib3JuX2N1c3RvZHlfcGVyc2lzdGVkGA4gASgLMisubm9tb3MucnVudGltZS52Mi5QZXJzaXN0Qm9ybkN1c3RvZHlSZWNlaXB0SAASUAoUd29ya3NwYWNlX2Rpc2NvdmVyZWQYDyABKAsyMC5ub21vcy5kaXNjb3ZlcnkudjEuRGlzY292ZXJlZFdvcmtzcGFjZVBsYWNlbWVudEgAEkIKDWxvY2FsX2N1c3RvZHkYECABKAsyKS5ub21vcy5ydW50aW1lLnYyLlBlZXJMb2NhbEN1c3RvZHlSZWNlaXB0SAASPwoRZnJvbnRpZXJfcmV0YWluZWQYESABKAsyIi5ub21vcy5ydW50aW1lLnYyLkZyb250aWVyUmV0YWluZWRIABIsCgV3b2tlbhgSIAEoCzIbLm5vbW9zLnJ1bnRpbWUudjIuUGVlcldva2VuSAASSQoUY3JlZGVudGlhbF9yZWZyZXNoZWQYEyABKAsyKS5ub21vcy5ydW50aW1lLnYyLlBlZXJDcmVkZW50aWFsUmVmcmVzaGVkSAASPwoPZGV2aWNlX2lkZW50aXR5GBQgASgLMiQubm9tb3MucnVudGltZS52Mi5QZWVyRGV2aWNlSWRlbnRpdHlIABI3CgtsYXdfcGFja2FnZRgVIAEoCzIgLm5vbW9zLnJ1bnRpbWUudjIuUGVlckxhd1BhY2thZ2VIABJOChNoaXN0b3J5X2FjcXVpc2l0aW9uGBYgASgLMi8ubm9tb3MucnVudGltZS52Mi5QZWVySGlzdG9yeUFjcXVpc2l0aW9uUmVjZWlwdEgAEkEKEGNvbnNvbGVfZW5yb2xsZWQYFyABKAsyJS5ub21vcy5ydW50aW1lLnYyLlBlZXJDb25zb2xlRW5yb2xsZWRIABJSChljb25zb2xlX2Vucm9sbWVudF9yZWZ1c2VkGBggASgLMi0ubm9tb3MucnVudGltZS52Mi5QZWVyQ29uc29sZUVucm9sbWVudFJlZnVzZWRIAEIJCgdvdXRjb21lIucBChJQZWVyR2l0RmV0Y2hFZmZlY3QSEQoJZWZmZWN0X2lkGAEgASgJEi0KBWxlYXNlGAIgASgLMh4ubm9tb3MucnVudGltZS52Mi5HaXRSZWFkTGVhc2USEQoEd2FudBgDIAEoCUgAiAEBEg0KBWhhdmVzGAQgAygJEhEKCXJlZmVyZW5jZRgFIAEoCRISCgVkZXB0aBgGIAEoDUgBiAEBEjMKCWFsb25nc2lkZRgHIAEoCzIgLm5vbW9zLnJ1bnRpbWUudjIuUGVlckh0dHBFZmZlY3RCBwoFX3dhbnRCCAoGX2RlcHRoIpIBChRQZWVyR2l0RmV0Y2hSZXNwb25zZRIMCgRwYWNrGAEgASgMEgwKBGhlYWQYAiABKAkSFgoOcmVjZWl2ZWRfYnl0ZXMYAyABKAQSDwoHc2hhbGxvdxgEIAMoCRI1CglhbG9uZ3NpZGUYBSABKAsyIi5ub21vcy5ydW50aW1lLnYyLlBlZXJIdHRwUmVzcG9uc2UimAEKEVBlZXJHaXRQdXNoRWZmZWN0EhEKCWVmZmVjdF9pZBgBIAEoCRIOCgZyZW1vdGUYAiABKAkSGQoMYmVhcmVyX3Rva2VuGAMgASgMSACIAQESGAoQc2Vzc2lvbl9pZGVudGl0eRgEIAEoCRIMCgRoZWFkGAUgASgJEgwKBHBhY2sYBiABKAxCDwoNX2JlYXJlcl90b2tlbiJYChNQZWVyR2l0UHVzaFJlc3BvbnNlEhEKCXJlZmVyZW5jZRgBIAEoCRIMCgRoZWFkGAIgASgJEhIKCnNlbnRfYnl0ZXMYAyABKAQSDAoEbm9vcBgEIAEoCCItCgtSZXRhaW5lZFJlZhIRCglyZWZlcmVuY2UYASABKAkSCwoDb2lkGAIgASgJIocBChRSZXRhaW5Gcm9udGllckVmZmVjdBIRCgllZmZlY3RfaWQYASABKAkSEQoJd29ya3NwYWNlGAIgASgJEg4KBmJyYW5jaBgDIAEoCRIMCgRoZWFkGAQgASgJEisKBHJlZnMYBSADKAsyHS5ub21vcy5ydW50aW1lLnYyLlJldGFpbmVkUmVmIqIBChBGcm9udGllclJldGFpbmVkEhEKCXdvcmtzcGFjZRgBIAEoCRIOCgZicmFuY2gYAiABKAkSDAoEaGVhZBgDIAEoCRIQCghyZXRhaW5lZBgEIAEoCBITCgZkZXRhaWwYBSABKAlIAIgBARIrCgRyZWZzGAYgAygLMh0ubm9tb3MucnVudGltZS52Mi5SZXRhaW5lZFJlZkIJCgdfZGV0YWlsIl4KGFBlcnNpc3RCb3JuQ3VzdG9keUVmZmVjdBIRCgllZmZlY3RfaWQYASABKAkSLwoIY2hpbGRyZW4YAiADKAsyHS5ub21vcy5ydW50aW1lLnYyLkJvcm5DdXN0b2R5IpcBChRQZXJzaXN0ZWRCb3JuQ3VzdG9keRIRCgl3b3Jrc3BhY2UYASABKAkSDAoEaGVhZBgCIAEoCRIRCglwZXJzaXN0ZWQYAyABKAgSEwoGZGV0YWlsGAQgASgJSACIAQESKwoEcmVmcxgFIAMoCzIdLm5vbW9zLnJ1bnRpbWUudjIuUmV0YWluZWRSZWZCCQoHX2RldGFpbCJVChlQZXJzaXN0Qm9ybkN1c3RvZHlSZWNlaXB0EjgKCGNoaWxkcmVuGAEgAygLMiYubm9tb3MucnVudGltZS52Mi5QZXJzaXN0ZWRCb3JuQ3VzdG9keSKYBwoVQ29ycmVzcG9uZGVuY2VQZW5kaW5nEg8KB3dvcmtfaWQYASABKAkSMAoEaHR0cBgCIAEoCzIgLm5vbW9zLnJ1bnRpbWUudjIuUGVlckh0dHBFZmZlY3RIABI5CglnaXRfZmV0Y2gYAyABKAsyJC5ub21vcy5ydW50aW1lLnYyLlBlZXJHaXRGZXRjaEVmZmVjdEgAEjcKCGdpdF9wdXNoGAQgASgLMiMubm9tb3MucnVudGltZS52Mi5QZWVyR2l0UHVzaEVmZmVjdEgAEkoKFHBlcnNpc3RfYm9ybl9jdXN0b2R5GAUgASgLMioubm9tb3MucnVudGltZS52Mi5QZXJzaXN0Qm9ybkN1c3RvZHlFZmZlY3RIABJNChN3b3Jrc3BhY2VfZGlzY292ZXJ5GAYgASgLMi4ubm9tb3MucnVudGltZS52Mi5QZWVyV29ya3NwYWNlRGlzY292ZXJ5RWZmZWN0SAASQQoNbG9jYWxfY3VzdG9keRgHIAEoCzIoLm5vbW9zLnJ1bnRpbWUudjIuUGVlckxvY2FsQ3VzdG9keUVmZmVjdEgAEkEKD3JldGFpbl9mcm9udGllchgIIAEoCzImLm5vbW9zLnJ1bnRpbWUudjIuUmV0YWluRnJvbnRpZXJFZmZlY3RIABIwCgR3YWtlGAkgASgLMiAubm9tb3MucnVudGltZS52Mi5QZWVyV2FrZUVmZmVjdEgAEksKEnJlZnJlc2hfY3JlZGVudGlhbBgKIAEoCzItLm5vbW9zLnJ1bnRpbWUudjIuUGVlckNyZWRlbnRpYWxSZWZyZXNoRWZmZWN0SAASRQoPZGV2aWNlX2lkZW50aXR5GAsgASgLMioubm9tb3MucnVudGltZS52Mi5QZWVyRGV2aWNlSWRlbnRpdHlFZmZlY3RIABI9CgtsYXdfcGFja2FnZRgMIAEoCzImLm5vbW9zLnJ1bnRpbWUudjIuUGVlckxhd1BhY2thZ2VFZmZlY3RIABJNChNoaXN0b3J5X2FjcXVpc2l0aW9uGA0gASgLMi4ubm9tb3MucnVudGltZS52Mi5QZWVySGlzdG9yeUFjcXVpc2l0aW9uRWZmZWN0SAASSQoRY29uc29sZV9lbnJvbG1lbnQYDiABKAsyLC5ub21vcy5ydW50aW1lLnYyLlBlZXJDb25zb2xlRW5yb2xtZW50RWZmZWN0SABCCAoGZWZmZWN0IqABChpQZWVyQ29uc29sZUVucm9sbWVudEVmZmVjdBIRCgllZmZlY3RfaWQYASABKAkSFwoPZGV2aWNlX2lkZW50aXR5GAIgASgJEhIKCmNhcGFiaWxpdHkYAyABKAkSDwoHY29uc29sZRgEIAEoCRIOCgZ0ZW5hbnQYBSABKAkSDQoFc2NvcGUYBiABKAkSEgoKd29ya3NwYWNlcxgHIAMoCSKpAQoTUGVlckNvbnNvbGVFbnJvbGxlZBIRCglwcmluY2lwYWwYASABKAkSEAoIa2V5X2hhc2gYAiABKAkSPwoFaGVhZHMYAyADKAsyMC5ub21vcy5ydW50aW1lLnYyLlBlZXJDb25zb2xlRW5yb2xsZWQuSGVhZHNFbnRyeRosCgpIZWFkc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEicgobUGVlckNvbnNvbGVFbnJvbG1lbnRSZWZ1c2VkEg4KBnN0YXR1cxgBIAEoDRIPCgdtZXNzYWdlGAIgASgJEgwKBGNvZGUYAyABKAkSFgoJcmV0cnlhYmxlGAQgASgISACIAQFCDAoKX3JldHJ5YWJsZSJjChxQZWVySGlzdG9yeUFjcXVpc2l0aW9uRWZmZWN0EhEKCWVmZmVjdF9pZBgBIAEoCRIRCgl3b3Jrc3BhY2UYAiABKAkSHQoVY3JlZGVudGlhbF9jYXBhYmlsaXR5GAMgASgJIlUKHVBlZXJIaXN0b3J5QWNxdWlzaXRpb25SZWNlaXB0EhEKCXdvcmtzcGFjZRgBIAEoCRIPCgdjaGFuZ2VkGAIgASgIEhAKCGNvbXBsZXRlGAMgASgIIjkKDlBlZXJXYWtlRWZmZWN0EhEKCWVmZmVjdF9pZBgBIAEoCRIUCgxkZWxheV9taWxsaXMYAiABKA0iCwoJUGVlcldva2VuItYBChtQZWVyQ3JlZGVudGlhbFJlZnJlc2hFZmZlY3QSEQoJZWZmZWN0X2lkGAEgASgJEhIKCmNhcGFiaWxpdHkYAiABKAkSHQoQZGV2aWNlX2NoYWxsZW5nZRgDIAEoCUgAiAEBEhQKDGFsbG93X2NhY2hlZBgEIAEoCBInChpyZWplY3RlZF9hdXRoX3Rva2VuX3NoYTI1NhgFIAEoDEgBiAEBQhMKEV9kZXZpY2VfY2hhbGxlbmdlQh0KG19yZWplY3RlZF9hdXRoX3Rva2VuX3NoYTI1NiJvChdQZWVyQ3JlZGVudGlhbFJlZnJlc2hlZBIXCgphdXRoX3Rva2VuGAEgASgMSACIAQESGgoNYXV0aG9yX3NlY3JldBgCIAEoDEgBiAEBQg0KC19hdXRoX3Rva2VuQhAKDl9hdXRob3Jfc2VjcmV0IsYCChhQZWVyRGV2aWNlSWRlbnRpdHlFZmZlY3QSEQoJZWZmZWN0X2lkGAEgASgJEhAKCGlkZW50aXR5GAIgASgJEjgKBGxvYWQYAyABKAsyKC5ub21vcy5ydW50aW1lLnYyLlBlZXJEZXZpY2VJZGVudGl0eUxvYWRIABI4CgRzYXZlGAQgASgLMigubm9tb3MucnVudGltZS52Mi5QZWVyRGV2aWNlSWRlbnRpdHlTYXZlSAASQQoNbG9hZF9yZWNvdmVyeRgFIAEoCzIoLm5vbW9zLnJ1bnRpbWUudjIuUGVlckRldmljZVJlY292ZXJ5TG9hZEgAEkEKDXNhdmVfcmVjb3ZlcnkYBiABKAsyKC5ub21vcy5ydW50aW1lLnYyLlBlZXJEZXZpY2VSZWNvdmVyeVNhdmVIAEILCglvcGVyYXRpb24iGAoWUGVlckRldmljZUlkZW50aXR5TG9hZCIoChZQZWVyRGV2aWNlSWRlbnRpdHlTYXZlEg4KBnNlY3JldBgBIAEoDCIYChZQZWVyRGV2aWNlUmVjb3ZlcnlMb2FkIlAKFlBlZXJEZXZpY2VSZWNvdmVyeVNhdmUSNgoGcmVjb3JkGAEgASgLMiYubm9tb3MucnVudGltZS52Mi5EZXZpY2VSZWNvdmVyeVJlY29yZCKLAgoURGV2aWNlUmVjb3ZlcnlSZWNvcmQSDwoHdmVyc2lvbhgBIAEoDRITCgthcHBsaWNhdGlvbhgCIAEoCRIRCglwcmluY2lwYWwYAyABKAkSFwoPcHJldmlvdXNfc2VjcmV0GAQgASgMEhgKEGNhbmRpZGF0ZV9zZWNyZXQYBSABKAwSFwoPZW5yb2xsbWVudF9oZWFkGAYgASgJEhUKDXJlY292ZXJ5X2hlYWQYByABKAkSRAoRcGVuZGluZ19hZG1pc3Npb24YCCABKAsyKS5ub21vcy5ydW50aW1lLnYyLkRldmljZVJlY292ZXJ5QWRtaXNzaW9uEhEKCWNvbXBsZXRlZBgJIAEoCCKxAQoXRGV2aWNlUmVjb3ZlcnlBZG1pc3Npb24SPQoFc3RhZ2UYASABKA4yLi5ub21vcy5ydW50aW1lLnYyLkRldmljZVJlY292ZXJ5QWRtaXNzaW9uU3RhZ2USEgoKcmVxdWVzdF9pZBgCIAEoBBIRCgl3b3Jrc3BhY2UYAyABKAkSMAoGZWZmZWN0GAQgASgLMiAubm9tb3MucnVudGltZS52Mi5QZWVySHR0cEVmZmVjdCJuChJQZWVyRGV2aWNlSWRlbnRpdHkSEwoGc2VjcmV0GAEgASgMSACIAQESOAoIcmVjb3ZlcnkYAiABKAsyJi5ub21vcy5ydW50aW1lLnYyLkRldmljZVJlY292ZXJ5UmVjb3JkQgkKB19zZWNyZXQiPQoUUGVlckxhd1BhY2thZ2VFZmZlY3QSEQoJZWZmZWN0X2lkGAEgASgJEhIKCmxhd19zaGEyNTYYAiABKAkiIgoOUGVlckxhd1BhY2thZ2USEAoIbGF3X3VzZHoYASABKAwiRAocUGVlcldvcmtzcGFjZURpc2NvdmVyeUVmZmVjdBIRCgllZmZlY3RfaWQYASABKAkSEQoJd29ya3NwYWNlGAIgASgJIj4KFlBlZXJMb2NhbEN1c3RvZHlFZmZlY3QSEQoJZWZmZWN0X2lkGAEgASgJEhEKCXdvcmtzcGFjZRgCIAEoCSKDAQoXUGVlckxvY2FsQ3VzdG9keVJlY2VpcHQSEQoJd29ya3NwYWNlGAEgASgJEhEKCWF2YWlsYWJsZRgCIAEoCBI2CgdvcGVuaW5nGAMgASgLMiAubm9tb3MucnVudGltZS52Mi5DdXN0b2R5T3BlbmluZ0gAiAEBQgoKCF9vcGVuaW5nIi8KGkhpc3RvcnlBY3F1aXNpdGlvblJlY292ZXJ5EhEKCXdvcmtzcGFjZRgBIAEoCSLeAQodQ29udGludWVDb3JyZXNwb25kZW5jZVJlcXVlc3QSDwoHd29ya19pZBgBIAEoCRI0CgdyZWNlaXB0GAIgASgLMiMubm9tb3MucnVudGltZS52Mi5QZWVyRWZmZWN0UmVjZWlwdBJWChtyZWNvdmVyX2hpc3RvcnlfYWNxdWlzaXRpb24YAyABKAsyLC5ub21vcy5ydW50aW1lLnYyLkhpc3RvcnlBY3F1aXNpdGlvblJlY292ZXJ5SACIAQFCHgocX3JlY292ZXJfaGlzdG9yeV9hY3F1aXNpdGlvbiKGAgoUUmVtb3RlT2ZmZXJBZG1pc3Npb24SEQoJd29ya3NwYWNlGAEgASgJEgwKBG1haW4YAiABKAkSGAoLc2VhbGVkX21haW4YAyABKAlIAIgBARIvCgd2ZXJkaWN0GAQgASgLMh4ubm9tb3Mua2VybmVsLnYxLk9mZmVyUmVzcG9uc2USMwoMYm9ybl9jdXN0b2R5GAUgAygLMh0ubm9tb3MucnVudGltZS52Mi5Cb3JuQ3VzdG9keRITCgtyZXN1bHRfcGFjaxgGIAEoDBIYCgtyZXN1bHRfYmFzZRgHIAEoCUgBiAEBQg4KDF9zZWFsZWRfbWFpbkIOCgxfcmVzdWx0X2Jhc2UiSgoOQm9ybkN1c3RvZHlSZWYSKgoDcmVmGAEgASgLMh0ubm9tb3MucnVudGltZS52Mi5SZXRhaW5lZFJlZhIMCgRwYWNrGAIgASgMIoEBCgtCb3JuQ3VzdG9keRItCgVjaGlsZBgBIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5Cb3JuV29ya3NwYWNlEgwKBHBhY2sYAiABKAwSNQoLcHVibGljYXRpb24YAyADKAsyIC5ub21vcy5ydW50aW1lLnYyLkJvcm5DdXN0b2R5UmVmIosDChhDdXN0b2R5T2ZmZXJCYXRjaFJlcXVlc3QSGAoQcHJvdG9jb2xfdmVyc2lvbhgBIAEoDRISCgpyZXF1ZXN0X2lkGAIgASgJEjcKBmlubGluZRgDIAEoCzIlLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUlubGluZU9mZmVyc0gAEkYKEXNlc3Npb25fY2FuZGlkYXRlGAQgASgLMikubm9tb3MucnVudGltZS52Mi5DdXN0b2R5U2Vzc2lvbkNhbmRpZGF0ZUgAEhYKCWJhc2VfaGVhZBgFIAEoCUgBiAEBEhUKDWV2aWRlbmNlX3BhY2sYBiABKAwSGgoNb2JzZXJ2ZWRfaGVhZBgHIAEoCUgCiAEBEhkKEWZhc3RfZm9yd2FyZF9vbmx5GAggASgIEhwKD2NvbnRpbnVlc19hZnRlchgJIAEoCUgDiAEBQggKBnNvdXJjZUIMCgpfYmFzZV9oZWFkQhAKDl9vYnNlcnZlZF9oZWFkQhIKEF9jb250aW51ZXNfYWZ0ZXIiwwEKDkxpdmVPZmZlckZyYW1lEjIKCGZyb250aWVyGAEgASgLMh4ubm9tb3MucnVudGltZS52Mi5MaXZlRnJvbnRpZXJIABI8CgZvZmZlcnMYAiABKAsyKi5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlPZmZlckJhdGNoUmVxdWVzdEgAEjQKCWFkbWlzc2lvbhgDIAEoCzIfLm5vbW9zLnJ1bnRpbWUudjIuTGl2ZUFkbWlzc2lvbkgAQgkKB21lc3NhZ2UiWgoNTGl2ZUFkbWlzc2lvbhISCgpyZXF1ZXN0X2lkGAEgASgJEjUKCWFkbWlzc2lvbhgCIAEoCzIiLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUFkbWlzc2lvbiIuCgxMaXZlRnJvbnRpZXISDAoEaGVhZBgBIAEoCRIQCghyZXNwb25zZRgCIAEoCCJrChBQZWVyU29ja2V0RWZmZWN0EhUKDWNvbm5lY3Rpb25faWQYASABKAkSEgoIb3Blbl91cmwYAiABKAlIABIOCgRzZW5kGAMgASgMSAASDwoFY2xvc2UYBCABKAhIAEILCglvcGVyYXRpb24icQoRUGVlclNvY2tldFJlY2VpcHQSFQoNY29ubmVjdGlvbl9pZBgBIAEoCRIQCgZvcGVuZWQYAiABKAhIABISCghyZWNlaXZlZBgDIAEoDEgAEhAKBmNsb3NlZBgEIAEoCEgAQg0KC29ic2VydmF0aW9uIhQKElBlZXJTb2NrZXRPYnNlcnZlZCI9ChdFeHBvcnRMaXZlT2ZmZXJzUmVxdWVzdBIPCgdzZXNzaW9uGAEgASgJEhEKCWJhc2VfaGVhZBgCIAEoCSJOChJDdXN0b2R5SW50ZW50T2ZmZXISDwoHc2Vzc2lvbhgBIAEoCRISCgpjb21taXRfb2lkGAIgASgJEhMKC2NoYW5nZV91c2RhGAMgASgMIksKE0N1c3RvZHlJbmxpbmVPZmZlcnMSNAoGb2ZmZXJzGAEgAygLMiQubm9tb3MucnVudGltZS52Mi5DdXN0b2R5SW50ZW50T2ZmZXIiLAoXQ3VzdG9keVNlc3Npb25DYW5kaWRhdGUSEQoJcmVmZXJlbmNlGAEgASgJIoIEChBDdXN0b2R5QWRtaXNzaW9uEgwKBG1haW4YASABKAkSGAoLc2VhbGVkX21haW4YAiABKAlIAIgBARI7CghzZXNzaW9ucxgDIAMoCzIpLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keVNlc3Npb25BZG1pc3Npb24SNQoOYmlydGhfb3V0Y29tZXMYBCADKAsyHS5ub21vcy5rZXJuZWwudjEuQmlydGhPdXRjb21lEjMKDGJvcm5fY3VzdG9keRgFIAMoCzIdLm5vbW9zLnJ1bnRpbWUudjIuQm9ybkN1c3RvZHkSEwoLcmVzdWx0X3BhY2sYBiABKAwSGAoLcmVzdWx0X2Jhc2UYByABKAlIAYgBARI6Cgd0aW1pbmdzGAggASgLMikubm9tb3MucnVudGltZS52Mi5DdXN0b2R5QWRtaXNzaW9uVGltaW5ncxIeChFyZWNvdmVyeV9yZXF1aXJlZBgJIAEoCEgCiAEBEkYKEWxvY2FsX21haW50ZW5hbmNlGAogASgLMiYubm9tb3MucnVudGltZS52Mi5NYWludGVuYW5jZVNjaGVkdWxlZEgDiAEBQg4KDF9zZWFsZWRfbWFpbkIOCgxfcmVzdWx0X2Jhc2VCFAoSX3JlY292ZXJ5X3JlcXVpcmVkQhQKEl9sb2NhbF9tYWludGVuYW5jZSJlChdDdXN0b2R5U2Vzc2lvbkFkbWlzc2lvbhIPCgdzZXNzaW9uGAEgASgJEjkKB2ludGVudHMYAiADKAsyKC5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlJbnRlbnRBZG1pc3Npb24i1AMKFkN1c3RvZHlJbnRlbnRBZG1pc3Npb24SEgoKY29tbWl0X29pZBgBIAEoCRIWCglpbnRlbnRfaWQYAiABKAlIAYgBARI7CghhZG1pdHRlZBgKIAEoCzInLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUludGVudEFkbWl0dGVkSAASOQoHc2tpcHBlZBgLIAEoCzImLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUludGVudFNraXBwZWRIABI5CgdyZWZ1c2VkGAwgASgLMiYubm9tb3MucnVudGltZS52Mi5DdXN0b2R5SW50ZW50UmVmdXNlZEgAEkQKDWRlYWRfbGV0dGVyZWQYDSABKAsyKy5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlJbnRlbnREZWFkTGV0dGVyZWRIABI5CgdibG9ja2VkGA4gASgLMiYubm9tb3MucnVudGltZS52Mi5DdXN0b2R5SW50ZW50QmxvY2tlZEgAEkEKC3F1YXJhbnRpbmVkGA8gASgLMioubm9tb3MucnVudGltZS52Mi5DdXN0b2R5SW50ZW50UXVhcmFudGluZWRIAEIJCgdvdXRjb21lQgwKCl9pbnRlbnRfaWQikAEKFUN1c3RvZHlJbnRlbnRBZG1pdHRlZBIMCgRoZWFkGAEgASgJEjMKB2NyZWF0ZWQYAiADKAsyIi5ub21vcy5rZXJuZWwudjEuT2ZmZXJBZ2dyZWdhdGVSZWYSNAoIYWZmZWN0ZWQYAyADKAsyIi5ub21vcy5rZXJuZWwudjEuT2ZmZXJBZ2dyZWdhdGVSZWYiLwoUQ3VzdG9keUludGVudFNraXBwZWQSFwoPYWxyZWFkeV9vbl9tYWluGAEgASgIIpoBChRDdXN0b2R5SW50ZW50UmVmdXNlZBIPCgdtZXNzYWdlGAEgASgJEhEKBGhpbnQYAyABKAlIAIgBARI0CgdyZWZ1c2FsGAQgASgLMh4ubm9tb3Mua2VybmVsLnYxLktlcm5lbFJlZnVzYWxIAYgBAUIHCgVfaGludEIKCghfcmVmdXNhbEoECAIQA1INZGVhZF9sZXR0ZXJlZCJ+ChlDdXN0b2R5SW50ZW50RGVhZExldHRlcmVkEg8KB21lc3NhZ2UYASABKAkSEQoEaGludBgCIAEoCUgAiAEBEh4KEWN1c3RvZHlfcmVmZXJlbmNlGAMgASgJSAGIAQFCBwoFX2hpbnRCFAoSX2N1c3RvZHlfcmVmZXJlbmNlIiYKFEN1c3RvZHlJbnRlbnRCbG9ja2VkEg4KBmRldGFpbBgBIAEoCSKVAQoYQ3VzdG9keUludGVudFF1YXJhbnRpbmVkEg4KBnJlYXNvbhgBIAEoCRIZChFhdXRob3JlZF9sYXdfaGFzaBgCIAEoCRIYChBjdXJyZW50X2xhd19oYXNoGAMgASgJEh4KEWN1c3RvZHlfcmVmZXJlbmNlGAQgASgJSACIAQFCFAoSX2N1c3RvZHlfcmVmZXJlbmNlIu0BChdDdXN0b2R5QWRtaXNzaW9uVGltaW5ncxIUCgx0b3RhbF9taWxsaXMYASABKAESEwoLc2Nhbl9taWxsaXMYAiABKAESFAoMZmV0Y2hfbWlsbGlzGAMgASgBEhMKC3NlYWxfbWlsbGlzGAQgASgBEhgKEGdhdGVfZm9sZF9taWxsaXMYBSABKAESFAoMaW50ZW50X2NvdW50GAYgASgNEhUKDXNlc3Npb25fY291bnQYByABKA0SNQoFc3BhbnMYCCADKAsyJi5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlBZG1pc3Npb25TcGFuIpcBChRDdXN0b2R5QWRtaXNzaW9uU3BhbhIKCgJpZBgBIAEoCRINCgV0cmFjaxgCIAEoCRIMCgRuYW1lGAMgASgJEgwKBGtpbmQYBCABKAkSDQoFZGVwdGgYBSABKA0SGwoTc3RhcnRlZF91bml4X21pbGxpcxgGIAEoARIcChRmaW5pc2hlZF91bml4X21pbGxpcxgHIAEoASJdChdXb3Jrc3BhY2VFZmZlY3REZWZlcnJlZBIYChB0YXJnZXRfd29ya3NwYWNlGAEgASgJEhoKEnJldHJ5X2FmdGVyX21pbGxpcxgCIAEoBBIMCgRoZWxkGAMgASgEIvoBCg1PdXRib3hTdW1tYXJ5EhEKCXdvcmtzcGFjZRgBIAEoCRIPCgdlbnRyaWVzGAIgASgEEjQKB3RhcmdldHMYAyADKAsyIy5ub21vcy5ydW50aW1lLnYyLk91dGJveFRhcmdldENvdW50Eh8KEm5leHRfZHVlX2F0X21pbGxpcxgEIAEoBEgAiAEBEhQKDHdvcmtfcGVuZGluZxgFIAEoCBIQCghyZXNpZGVudBgGIAEoCBIVCg1lbnRyaWVzX3RvdGFsGAcgASgNEhgKEGVudHJpZXNfcHJlcGFyZWQYCCABKA1CFQoTX25leHRfZHVlX2F0X21pbGxpcyI+ChFPdXRib3hUYXJnZXRDb3VudBIYChB0YXJnZXRfd29ya3NwYWNlGAEgASgJEg8KB2VudHJpZXMYAiABKAQqvAEKFVNoYXJlV29ya3NwYWNlT3V0Y29tZRInCiNTSEFSRV9XT1JLU1BBQ0VfT1VUQ09NRV9VTlNQRUNJRklFRBAAEiUKIVNIQVJFX1dPUktTUEFDRV9PVVRDT01FX0RFTElWRVJFRBABEi4KKlNIQVJFX1dPUktTUEFDRV9PVVRDT01FX0FXQUlUSU5HX1JFQ0lQSUVOVBACEiMKH1NIQVJFX1dPUktTUEFDRV9PVVRDT01FX1JFRlVTRUQQAypnCg5QZWVySHR0cE1ldGhvZBIgChxQRUVSX0hUVFBfTUVUSE9EX1VOU1BFQ0lGSUVEEAASGAoUUEVFUl9IVFRQX01FVEhPRF9HRVQQARIZChVQRUVSX0hUVFBfTUVUSE9EX1BPU1QQAiq/AQoXUGVlckVmZmVjdEZhaWx1cmVSZWFzb24SKgomUEVFUl9FRkZFQ1RfRkFJTFVSRV9SRUFTT05fVU5TUEVDSUZJRUQQABImCiJQRUVSX0VGRkVDVF9GQUlMVVJFX1JFQVNPTl9PRkZMSU5FEAESJgoiUEVFUl9FRkZFQ1RfRkFJTFVSRV9SRUFTT05fVElNRU9VVBACEigKJFBFRVJfRUZGRUNUX0ZBSUxVUkVfUkVBU09OX1RSQU5TUE9SVBADKq0BChxEZXZpY2VSZWNvdmVyeUFkbWlzc2lvblN0YWdlEi8KK0RFVklDRV9SRUNPVkVSWV9BRE1JU1NJT05fU1RBR0VfVU5TUEVDSUZJRUQQABIuCipERVZJQ0VfUkVDT1ZFUllfQURNSVNTSU9OX1NUQUdFX0VOUk9MTE1FTlQQARIsCihERVZJQ0VfUkVDT1ZFUllfQURNSVNTSU9OX1NUQUdFX1JFQ09WRVJZEAJiBnByb3RvMw", [file_nomos_kernel_v1_kernel, file_nomos_runtime_v2_placement_desk, file_nomos_discovery_v1_workspace_placement, file_nomos_runtime_v2_custody_desk, file_nomos_runtime_v2_maintenance_desk]);
16
+ fileDesc("Cipub21vcy9ydW50aW1lL3YyL2NvcnJlc3BvbmRlbmNlX2Rlc2sucHJvdG8SEG5vbW9zLnJ1bnRpbWUudjIi0AIKFVNoYXJlV29ya3NwYWNlUmVxdWVzdBIPCgdzdWJqZWN0GAEgASgJEhAKCHJlbGF0aW9uGAIgASgJEhoKEmFzc2VydGVyX3ByaW5jaXBhbBgDIAEoCRIOCgZvYmplY3QYBCABKAkSHAoPaG9tZV9sYXdfc2hhMjU2GAUgASgJSACIAQESGgoNYXV0aG9yX3NlY3JldBgGIAEoDEgBiAEBEh8KEmFzc2VydGVyX3dvcmtzcGFjZRgHIAEoCUgCiAEBEhgKC2F0dGVzdGVkX2F0GAggASgJSAOIAQESFwoKYXV0aF90b2tlbhgJIAEoDEgEiAEBQhIKEF9ob21lX2xhd19zaGEyNTZCEAoOX2F1dGhvcl9zZWNyZXRCFQoTX2Fzc2VydGVyX3dvcmtzcGFjZUIOCgxfYXR0ZXN0ZWRfYXRCDQoLX2F1dGhfdG9rZW4ikgEKFFNoYXJlV29ya3NwYWNlUmVzdWx0EjgKB291dGNvbWUYASABKA4yJy5ub21vcy5ydW50aW1lLnYyLlNoYXJlV29ya3NwYWNlT3V0Y29tZRITCgZzdGF0dXMYAiABKA1IAIgBARIUCgdtZXNzYWdlGAMgASgJSAGIAQFCCQoHX3N0YXR1c0IKCghfbWVzc2FnZSLKAQodUGFyZW50U2lnbmVyRW5yb2xsbWVudFJlcXVlc3QSDgoGcGFyZW50GAEgASgJEhEKCXByaW5jaXBhbBgCIAEoCRIXCgprZXlfc2hhMjU2GAMgASgJSACIAQESFwoKcHVibGljX2tleRgEIAEoDEgBiAEBEhcKCmF1dGhfdG9rZW4YBSABKAxIAogBARIOCgZyZW1vdGUYBiABKAhCDQoLX2tleV9zaGEyNTZCDQoLX3B1YmxpY19rZXlCDQoLX2F1dGhfdG9rZW4i1AEKFlBhcmVudFNpZ25lckVucm9sbG1lbnQSDgoGcGFyZW50GAEgASgJEhEKCXByaW5jaXBhbBgCIAEoCRISCgprZXlfc2hhMjU2GAMgASgJEg4KBm9iamVjdBgEIAEoCRIQCghyZWxhdGlvbhgFIAEoCRIQCghlbnJvbGxlZBgGIAEoCBIPCgdyZXZva2VkGAcgASgIEhkKDHZlcmlmaWVkX3ZpYRgIIAEoCUgAiAEBEhIKCmNoZWNrZWRfYXQYCSABKAlCDwoNX3ZlcmlmaWVkX3ZpYSLcAgojRW5zdXJlUGFyZW50U2lnbmVyRW5yb2xsbWVudFJlcXVlc3QSDgoGcGFyZW50GAEgASgJEhEKCXByaW5jaXBhbBgCIAEoCRIXCgpwdWJsaWNfa2V5GAMgASgMSACIAQESGgoNYXV0aG9yX3NlY3JldBgEIAEoDEgBiAEBEhMKBmRvbWFpbhgFIAEoCUgCiAEBEhYKCWRpcmVjdGl2ZRgGIAEoCUgDiAEBEhcKCmF1dGhfdG9rZW4YByABKAxIBIgBARIVCghpZF90b2tlbhgIIAEoDEgFiAEBEhkKDHZlcmlmaWVkX3ZpYRgJIAEoCUgGiAEBQg0KC19wdWJsaWNfa2V5QhAKDl9hdXRob3Jfc2VjcmV0QgkKB19kb21haW5CDAoKX2RpcmVjdGl2ZUINCgtfYXV0aF90b2tlbkILCglfaWRfdG9rZW5CDwoNX3ZlcmlmaWVkX3ZpYSLZAQoiRW5zdXJlUGFyZW50U2lnbmVyRW5yb2xsbWVudFJlc3VsdBIOCgZwYXJlbnQYASABKAkSEQoJcHJpbmNpcGFsGAIgASgJEhIKCmtleV9zaGEyNTYYAyABKAkSEAoIZW5yb2xsZWQYBCABKAgSEAoIcmVwYWlyZWQYBSABKAgSEwoGZG9tYWluGAYgASgJSACIAQESFgoJZGlyZWN0aXZlGAcgASgJSAGIAQESEgoKY2hlY2tlZF9hdBgIIAEoCUIJCgdfZG9tYWluQgwKCl9kaXJlY3RpdmUiHQobVmVyaWZ5V29ya3NwYWNlQ2hhaW5SZXF1ZXN0IrsBChpWZXJpZnlXb3Jrc3BhY2VDaGFpblJlc3VsdBINCgV2YWxpZBgBIAEoCBISCgVlcnJvchgCIAEoCUgAiAEBEhgKC3BsYW5zX3JlcnVuGAMgASgESAGIAQESOgoHaGlzdG9yeRgEIAEoCzIkLm5vbW9zLnJ1bnRpbWUudjIuVmVyaWZ5Q2hhaW5IaXN0b3J5SAKIAQFCCAoGX2Vycm9yQg4KDF9wbGFuc19yZXJ1bkIKCghfaGlzdG9yeSKHAQoSVmVyaWZ5Q2hhaW5IaXN0b3J5Eg0KBXN0YXRlGAEgASgJEg4KBmFuY2hvchgCIAEoCRIQCghib3VuZGFyeRgDIAMoCRIMCgR3YWxrGAQgASgJEh0KEHZlcmlmaWVkX2NvbW1pdHMYBSABKARIAIgBAUITChFfdmVyaWZpZWRfY29tbWl0cyJ/ChRTeW5jV29ya3NwYWNlUmVxdWVzdBINCgVhZG1pdBgCIAEoCBIRCgl3b3Jrc3BhY2UYAyABKAkSHwoScmVwbGFjZV9sb2NhbF9oZWFkGAQgASgJSACIAQFCFQoTX3JlcGxhY2VfbG9jYWxfaGVhZEoECAEQAlIHc2Vzc2lvbiKGCgoVU3luY1dvcmtzcGFjZVJlc3BvbnNlEhEKCXdvcmtzcGFjZRgBIAEoCRIaCg1wcmV2aW91c19oZWFkGAIgASgJSACIAQESGQoMY3VycmVudF9oZWFkGAMgASgJSAGIAQESEAoIYWRtaXR0ZWQYBCABKAQSDwoHcmVmdXNlZBgFIAEoBBIQCghkZWZlcnJlZBgGIAEoBBISCgpsb2NhbF9vbmx5GAcgASgIEg4KBnB1bGxlZBgIIAEoCBIQCghkaXZlcmdlZBgJIAEoCBIaChJyZWNvbm5lY3RfcmVxdWlyZWQYCiABKAgSEwoLc3RpbGxfYWhlYWQYCyABKAgSDwoHb2ZmbGluZRgMIAEoCBITCgtwdXNoX2ZhaWxlZBgNIAEoCBIdChVkaXJlY3Rfb2ZmZXJfZGVmZXJyZWQYDiABKAgSNQoOYmlydGhfb3V0Y29tZXMYDyADKAsyHS5ub21vcy5rZXJuZWwudjEuQmlydGhPdXRjb21lEhsKE2FkbWl0dGVkX2ludGVudF9pZHMYECADKAkSHAoUY29udmVyZ2VkX2ludGVudF9pZHMYESADKAkSQgoKcHVzaF9lcnJvchgSIAEoCzIpLm5vbW9zLnJ1bnRpbWUudjIuUnVudGltZVRyYW5zcG9ydEZhaWx1cmVIAogBARJHCg9kaXNjb3ZlcnlfZXJyb3IYEyABKAsyKS5ub21vcy5ydW50aW1lLnYyLlJ1bnRpbWVUcmFuc3BvcnRGYWlsdXJlSAOIAQESMwoHdGltaW5ncxgUIAEoCzIiLm5vbW9zLnJ1bnRpbWUudjIuU3luY1BoYXNlVGltaW5ncxJBCg1vZmZlcl9yZWNlaXB0GBUgASgLMiUubm9tb3MucnVudGltZS52Mi5DdXN0b2R5T2ZmZXJSZWNlaXB0SASIAQESOQoOcmVtb3RlX3JlZnVzYWwYFiABKAsyHC5ub21vcy5rZXJuZWwudjEuU3luY1JlZnVzYWxIBYgBARJHChRjdXN0b2R5X2Rpc2FncmVlbWVudBgXIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5DdXN0b2R5RGlzYWdyZWVtZW50SAaIAQESGAoQY3VzdG9keV9yZXBsYWNlZBgYIAEoCBIVCg1tYWluX2FkdmFuY2VkGBkgASgIEkAKD3JlYm9ybl9yZW1vdGVseRgaIAEoCzIiLm5vbW9zLnJ1bnRpbWUudjIuV29ya3NwYWNlUmViaXJ0aEgHiAEBEkcKFHByZXNlcnZlZF9sb2NhbF9jb3B5GBsgASgLMiQubm9tb3MucnVudGltZS52Mi5QcmVzZXJ2ZWRMb2NhbENvcHlICIgBARIxCiRjdXN0b2RpYW5fd2FybWluZ19yZXRyeV9hZnRlcl9taWxsaXMYHCABKA1ICYgBAUIQCg5fcHJldmlvdXNfaGVhZEIPCg1fY3VycmVudF9oZWFkQg0KC19wdXNoX2Vycm9yQhIKEF9kaXNjb3ZlcnlfZXJyb3JCEAoOX29mZmVyX3JlY2VpcHRCEQoPX3JlbW90ZV9yZWZ1c2FsQhcKFV9jdXN0b2R5X2Rpc2FncmVlbWVudEISChBfcmVib3JuX3JlbW90ZWx5QhcKFV9wcmVzZXJ2ZWRfbG9jYWxfY29weUInCiVfY3VzdG9kaWFuX3dhcm1pbmdfcmV0cnlfYWZ0ZXJfbWlsbGlzIugBChNDdXN0b2R5T2ZmZXJSZWNlaXB0EhIKCnJlcXVlc3RfaWQYASABKAkSQwoJYWRtaXNzaW9uGAogASgLMi4ubm9tb3MucnVudGltZS52Mi5DdXN0b2R5T2ZmZXJBZG1pc3Npb25SZWNlaXB0SAASOAoHZmFpbHVyZRgLIAEoCzIlLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keU9mZmVyRmFpbHVyZUgAEjMKB2Jsb2NrZWQYDCABKAsyIC5ub21vcy5ydW50aW1lLnYyLlJ1bnRpbWVCbG9ja2VkSABCCQoHb3V0Y29tZSKGAgocQ3VzdG9keU9mZmVyQWRtaXNzaW9uUmVjZWlwdBIMCgRtYWluGAEgASgJEhgKC3NlYWxlZF9tYWluGAIgASgJSACIAQESOwoIc2Vzc2lvbnMYAyADKAsyKS5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlTZXNzaW9uQWRtaXNzaW9uEjUKDmJpcnRoX291dGNvbWVzGAQgAygLMh0ubm9tb3Mua2VybmVsLnYxLkJpcnRoT3V0Y29tZRI6Cgd0aW1pbmdzGAUgASgLMikubm9tb3MucnVudGltZS52Mi5DdXN0b2R5QWRtaXNzaW9uVGltaW5nc0IOCgxfc2VhbGVkX21haW4iswEKE0N1c3RvZHlPZmZlckZhaWx1cmUSDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEhEKCWNvbXBvbmVudBgDIAEoCRIWCgl3b3Jrc3BhY2UYBCABKAlIAIgBARITCgZkb21haW4YBSABKAlIAYgBARIWCglkaXJlY3RpdmUYBiABKAlIAogBAUIMCgpfd29ya3NwYWNlQgkKB19kb21haW5CDAoKX2RpcmVjdGl2ZSJdChdSdW50aW1lVHJhbnNwb3J0RmFpbHVyZRIQCghlbmRwb2ludBgBIAEoCRIOCgZzdGF0dXMYAiABKBESDwoHcmVmdXNlZBgDIAEoCBIPCgdtZXNzYWdlGAQgASgJIsUBChBTeW5jUGhhc2VUaW1pbmdzEhMKC3B1c2hfbWlsbGlzGAEgASgBEhQKDGFkbWl0X21pbGxpcxgCIAEoARIXCg9wcmVmZXRjaF9taWxsaXMYAyABKAESFwoPY29udmVyZ2VfbWlsbGlzGAQgASgBEhIKCnB1c2hfYnl0ZXMYBSABKAQSFQoNc2VydmVyX21pbGxpcxgGIAEoARIVCg1vZmZlcl9pbl9wdXNoGAcgASgIEhIKCnB1bGxfYnl0ZXMYCCABKAQiNAofUmVmcmVzaFJlcGxpY2FDcmVkZW50aWFsUmVxdWVzdBIRCgl3b3Jrc3BhY2UYASABKAkiiwEKDEdpdFJlYWRMZWFzZRIWCg5mb3JtYXRfdmVyc2lvbhgBIAEoDRIRCgl3b3Jrc3BhY2UYAiABKAkSDgoGcmVtb3RlGAMgASgJEg0KBXRva2VuGAQgASgJEhMKC3R0bF9zZWNvbmRzGAUgASgNEhwKFGV4cGlyZXNfdW5peF9zZWNvbmRzGAYgASgEIm4KD0dpdEZldGNoUmVxdWVzdBIPCgdzZXNzaW9uGAEgASgJEi0KBWxlYXNlGAIgASgLMh4ubm9tb3MucnVudGltZS52Mi5HaXRSZWFkTGVhc2USDAoEd2FudBgDIAEoCRINCgVoYXZlcxgEIAMoCSJqCg5HaXRGZXRjaFJlc3VsdBIdChBzdGFnZWRfcGFja19maWxlGAEgASgJSACIAQESDAoEaGVhZBgCIAEoCRIWCg5yZWNlaXZlZF9ieXRlcxgDIAEoBEITChFfc3RhZ2VkX3BhY2tfZmlsZSK2AQoeRGVsaXZlcldvcmtzcGFjZUVmZmVjdHNSZXF1ZXN0EhYKDnNvdXJjZV9zZXNzaW9uGAEgASgJEhgKEHRhcmdldF93b3Jrc3BhY2UYAiABKAkSGgoNc291cmNlX2NvbW1pdBgDIAEoCUgAiAEBEh4KEXNvdXJjZV9vZmZlcl9wYXRoGAQgASgJSAGIAQFCEAoOX3NvdXJjZV9jb21taXRCFAoSX3NvdXJjZV9vZmZlcl9wYXRoIlEKHERlbGl2ZXJIdHRwT2JsaWdhdGlvblJlcXVlc3QSFgoOc291cmNlX3Nlc3Npb24YASABKAkSGQoRc291cmNlX29mZmVyX3BhdGgYAiABKAkiuwEKF0h0dHBPYmxpZ2F0aW9uRGVsaXZlcmVkEhgKEHNvdXJjZV93b3Jrc3BhY2UYASABKAkSEQoJYXR0ZW1wdGVkGAIgASgIEhEKCWRlbGl2ZXJlZBgDIAEoCBIRCglyZXRyeWFibGUYBCABKAgSGwoTcHJlcGFyYXRpb25fcGVuZGluZxgFIAEoCBIcCg9yZXRyeV9hdF9taWxsaXMYBiABKARIAIgBAUISChBfcmV0cnlfYXRfbWlsbGlzIjYKHFJlY292ZXJDb3JyZXNwb25kZW5jZVJlcXVlc3QSFgoOc291cmNlX3Nlc3Npb24YASABKAkirAEKF0NvcnJlc3BvbmRlbmNlUmVjb3ZlcmVkEhgKEHNvdXJjZV93b3Jrc3BhY2UYASABKAkSDwoHcGVuZGluZxgCIAEoCBIgChNuZXh0X3dha2VfYXRfbWlsbGlzGAMgASgESACIAQESGgoNcmV0YWluZWRfaGVhZBgEIAEoCUgBiAEBQhYKFF9uZXh0X3dha2VfYXRfbWlsbGlzQhAKDl9yZXRhaW5lZF9oZWFkIvYCChlXb3Jrc3BhY2VFZmZlY3RzRGVsaXZlcmVkEhgKEHNvdXJjZV93b3Jrc3BhY2UYASABKAkSGAoQdGFyZ2V0X3dvcmtzcGFjZRgCIAEoCRIRCglhdHRlbXB0ZWQYAyABKAQSEQoJZGVsaXZlcmVkGAQgASgEEg8KB3JlZnVzZWQYBSABKAQSEQoJcmV0cnlhYmxlGAYgASgEEhwKD3JldHJ5X2F0X21pbGxpcxgHIAEoBEgAiAEBEhsKE3ByZXBhcmF0aW9uX3BlbmRpbmcYCCABKAgSGAoLdGFyZ2V0X2hlYWQYCSABKAlIAYgBARIfChdzb3VyY2Vfb3V0Y29tZV9yZWNvcmRlZBgKIAEoCBJBCgxyZXRyeV9yZWFzb24YCyABKAsyKy5ub21vcy5ydW50aW1lLnYyLkNvcnJlc3BvbmRlbmNlUmV0cnlSZWFzb25CEgoQX3JldHJ5X2F0X21pbGxpc0IOCgxfdGFyZ2V0X2hlYWQiOwoZQ29ycmVzcG9uZGVuY2VSZXRyeVJlYXNvbhIOCgZyZWFzb24YASABKAkSDgoGZGV0YWlsGAIgASgJIqwDChtSZW1vdGVHZW5lcmF0ZWRPZmZlclJlcXVlc3QSFgoOc291cmNlX3Nlc3Npb24YASABKAkSGAoQdGFyZ2V0X3dvcmtzcGFjZRgCIAEoCRINCgVhY3RvchgDIAEoCRIVCg1hdXRob3Jfc2VjcmV0GAQgASgMEhIKCmF1dGhfdG9rZW4YBSABKAwSLgoEY2FsbBgGIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5EaXJlY3RpdmVDYWxsSAASQAoPbW9kZWxfbGlmZWN5Y2xlGAkgASgLMiUubm9tb3Mua2VybmVsLnYxLk1vZGVsTGlmZWN5Y2xlSW50ZW50SAASQQoRYmlydGhfY2VydGlmaWNhdGUYByABKAsyIS5ub21vcy5rZXJuZWwudjEuQmlydGhDZXJ0aWZpY2F0ZUgBiAEBEiEKFHJlcXVpcmVkX3RhcmdldF9oZWFkGAggASgJSAKIAQESEAoIbGF3X3VzZHoYCiABKAxCCAoGaW50ZW50QhQKEl9iaXJ0aF9jZXJ0aWZpY2F0ZUIXChVfcmVxdWlyZWRfdGFyZ2V0X2hlYWQiPwocUmVtb3RlR2VuZXJhdGVkT2ZmZXJBY2NlcHRlZBIRCgl3b3Jrc3BhY2UYASABKAkSDAoEaGVhZBgCIAEoCSLKAgoOUGVlckh0dHBFZmZlY3QSEQoJZWZmZWN0X2lkGAEgASgJEjAKBm1ldGhvZBgCIAEoDjIgLm5vbW9zLnJ1bnRpbWUudjIuUGVlckh0dHBNZXRob2QSCwoDdXJsGAMgASgJEhkKDGNvbnRlbnRfdHlwZRgEIAEoCUgAiAEBEgwKBGJvZHkYBSABKAwSGQoMYmVhcmVyX3Rva2VuGAYgASgMSAGIAQESEwoGYWNjZXB0GAcgASgJSAKIAQESGwoOdGltZW91dF9taWxsaXMYCCABKA1IA4gBARIcCg9pZGVtcG90ZW5jeV9rZXkYCSABKAlIBIgBAUIPCg1fY29udGVudF90eXBlQg8KDV9iZWFyZXJfdG9rZW5CCQoHX2FjY2VwdEIRCg9fdGltZW91dF9taWxsaXNCEgoQX2lkZW1wb3RlbmN5X2tleSJcChBQZWVySHR0cFJlc3BvbnNlEg4KBnN0YXR1cxgBIAEoDRIZCgxjb250ZW50X3R5cGUYAiABKAlIAIgBARIMCgRib2R5GAMgASgMQg8KDV9jb250ZW50X3R5cGUiXwoRUGVlckVmZmVjdEZhaWx1cmUSOQoGcmVhc29uGAEgASgOMikubm9tb3MucnVudGltZS52Mi5QZWVyRWZmZWN0RmFpbHVyZVJlYXNvbhIPCgdtZXNzYWdlGAIgASgJIpkIChFQZWVyRWZmZWN0UmVjZWlwdBIRCgllZmZlY3RfaWQYASABKAkSNgoIcmVzcG9uc2UYCiABKAsyIi5ub21vcy5ydW50aW1lLnYyLlBlZXJIdHRwUmVzcG9uc2VIABI2CgdmYWlsdXJlGAsgASgLMiMubm9tb3MucnVudGltZS52Mi5QZWVyRWZmZWN0RmFpbHVyZUgAEjsKCWdpdF9mZXRjaBgMIAEoCzImLm5vbW9zLnJ1bnRpbWUudjIuUGVlckdpdEZldGNoUmVzcG9uc2VIABI5CghnaXRfcHVzaBgNIAEoCzIlLm5vbW9zLnJ1bnRpbWUudjIuUGVlckdpdFB1c2hSZXNwb25zZUgAEk0KFmJvcm5fY3VzdG9keV9wZXJzaXN0ZWQYDiABKAsyKy5ub21vcy5ydW50aW1lLnYyLlBlcnNpc3RCb3JuQ3VzdG9keVJlY2VpcHRIABJQChR3b3Jrc3BhY2VfZGlzY292ZXJlZBgPIAEoCzIwLm5vbW9zLmRpc2NvdmVyeS52MS5EaXNjb3ZlcmVkV29ya3NwYWNlUGxhY2VtZW50SAASQgoNbG9jYWxfY3VzdG9keRgQIAEoCzIpLm5vbW9zLnJ1bnRpbWUudjIuUGVlckxvY2FsQ3VzdG9keVJlY2VpcHRIABI/ChFmcm9udGllcl9yZXRhaW5lZBgRIAEoCzIiLm5vbW9zLnJ1bnRpbWUudjIuRnJvbnRpZXJSZXRhaW5lZEgAEiwKBXdva2VuGBIgASgLMhsubm9tb3MucnVudGltZS52Mi5QZWVyV29rZW5IABJJChRjcmVkZW50aWFsX3JlZnJlc2hlZBgTIAEoCzIpLm5vbW9zLnJ1bnRpbWUudjIuUGVlckNyZWRlbnRpYWxSZWZyZXNoZWRIABI/Cg9kZXZpY2VfaWRlbnRpdHkYFCABKAsyJC5ub21vcy5ydW50aW1lLnYyLlBlZXJEZXZpY2VJZGVudGl0eUgAEjcKC2xhd19wYWNrYWdlGBUgASgLMiAubm9tb3MucnVudGltZS52Mi5QZWVyTGF3UGFja2FnZUgAEk4KE2hpc3RvcnlfYWNxdWlzaXRpb24YFiABKAsyLy5ub21vcy5ydW50aW1lLnYyLlBlZXJIaXN0b3J5QWNxdWlzaXRpb25SZWNlaXB0SAASQQoQY29uc29sZV9lbnJvbGxlZBgXIAEoCzIlLm5vbW9zLnJ1bnRpbWUudjIuUGVlckNvbnNvbGVFbnJvbGxlZEgAElIKGWNvbnNvbGVfZW5yb2xtZW50X3JlZnVzZWQYGCABKAsyLS5ub21vcy5ydW50aW1lLnYyLlBlZXJDb25zb2xlRW5yb2xtZW50UmVmdXNlZEgAQgkKB291dGNvbWUi5wEKElBlZXJHaXRGZXRjaEVmZmVjdBIRCgllZmZlY3RfaWQYASABKAkSLQoFbGVhc2UYAiABKAsyHi5ub21vcy5ydW50aW1lLnYyLkdpdFJlYWRMZWFzZRIRCgR3YW50GAMgASgJSACIAQESDQoFaGF2ZXMYBCADKAkSEQoJcmVmZXJlbmNlGAUgASgJEhIKBWRlcHRoGAYgASgNSAGIAQESMwoJYWxvbmdzaWRlGAcgASgLMiAubm9tb3MucnVudGltZS52Mi5QZWVySHR0cEVmZmVjdEIHCgVfd2FudEIICgZfZGVwdGgikgEKFFBlZXJHaXRGZXRjaFJlc3BvbnNlEgwKBHBhY2sYASABKAwSDAoEaGVhZBgCIAEoCRIWCg5yZWNlaXZlZF9ieXRlcxgDIAEoBBIPCgdzaGFsbG93GAQgAygJEjUKCWFsb25nc2lkZRgFIAEoCzIiLm5vbW9zLnJ1bnRpbWUudjIuUGVlckh0dHBSZXNwb25zZSKYAQoRUGVlckdpdFB1c2hFZmZlY3QSEQoJZWZmZWN0X2lkGAEgASgJEg4KBnJlbW90ZRgCIAEoCRIZCgxiZWFyZXJfdG9rZW4YAyABKAxIAIgBARIYChBzZXNzaW9uX2lkZW50aXR5GAQgASgJEgwKBGhlYWQYBSABKAkSDAoEcGFjaxgGIAEoDEIPCg1fYmVhcmVyX3Rva2VuIlgKE1BlZXJHaXRQdXNoUmVzcG9uc2USEQoJcmVmZXJlbmNlGAEgASgJEgwKBGhlYWQYAiABKAkSEgoKc2VudF9ieXRlcxgDIAEoBBIMCgRub29wGAQgASgIIi0KC1JldGFpbmVkUmVmEhEKCXJlZmVyZW5jZRgBIAEoCRILCgNvaWQYAiABKAkihwEKFFJldGFpbkZyb250aWVyRWZmZWN0EhEKCWVmZmVjdF9pZBgBIAEoCRIRCgl3b3Jrc3BhY2UYAiABKAkSDgoGYnJhbmNoGAMgASgJEgwKBGhlYWQYBCABKAkSKwoEcmVmcxgFIAMoCzIdLm5vbW9zLnJ1bnRpbWUudjIuUmV0YWluZWRSZWYiogEKEEZyb250aWVyUmV0YWluZWQSEQoJd29ya3NwYWNlGAEgASgJEg4KBmJyYW5jaBgCIAEoCRIMCgRoZWFkGAMgASgJEhAKCHJldGFpbmVkGAQgASgIEhMKBmRldGFpbBgFIAEoCUgAiAEBEisKBHJlZnMYBiADKAsyHS5ub21vcy5ydW50aW1lLnYyLlJldGFpbmVkUmVmQgkKB19kZXRhaWwiXgoYUGVyc2lzdEJvcm5DdXN0b2R5RWZmZWN0EhEKCWVmZmVjdF9pZBgBIAEoCRIvCghjaGlsZHJlbhgCIAMoCzIdLm5vbW9zLnJ1bnRpbWUudjIuQm9ybkN1c3RvZHkilwEKFFBlcnNpc3RlZEJvcm5DdXN0b2R5EhEKCXdvcmtzcGFjZRgBIAEoCRIMCgRoZWFkGAIgASgJEhEKCXBlcnNpc3RlZBgDIAEoCBITCgZkZXRhaWwYBCABKAlIAIgBARIrCgRyZWZzGAUgAygLMh0ubm9tb3MucnVudGltZS52Mi5SZXRhaW5lZFJlZkIJCgdfZGV0YWlsIlUKGVBlcnNpc3RCb3JuQ3VzdG9keVJlY2VpcHQSOAoIY2hpbGRyZW4YASADKAsyJi5ub21vcy5ydW50aW1lLnYyLlBlcnNpc3RlZEJvcm5DdXN0b2R5IpgHChVDb3JyZXNwb25kZW5jZVBlbmRpbmcSDwoHd29ya19pZBgBIAEoCRIwCgRodHRwGAIgASgLMiAubm9tb3MucnVudGltZS52Mi5QZWVySHR0cEVmZmVjdEgAEjkKCWdpdF9mZXRjaBgDIAEoCzIkLm5vbW9zLnJ1bnRpbWUudjIuUGVlckdpdEZldGNoRWZmZWN0SAASNwoIZ2l0X3B1c2gYBCABKAsyIy5ub21vcy5ydW50aW1lLnYyLlBlZXJHaXRQdXNoRWZmZWN0SAASSgoUcGVyc2lzdF9ib3JuX2N1c3RvZHkYBSABKAsyKi5ub21vcy5ydW50aW1lLnYyLlBlcnNpc3RCb3JuQ3VzdG9keUVmZmVjdEgAEk0KE3dvcmtzcGFjZV9kaXNjb3ZlcnkYBiABKAsyLi5ub21vcy5ydW50aW1lLnYyLlBlZXJXb3Jrc3BhY2VEaXNjb3ZlcnlFZmZlY3RIABJBCg1sb2NhbF9jdXN0b2R5GAcgASgLMigubm9tb3MucnVudGltZS52Mi5QZWVyTG9jYWxDdXN0b2R5RWZmZWN0SAASQQoPcmV0YWluX2Zyb250aWVyGAggASgLMiYubm9tb3MucnVudGltZS52Mi5SZXRhaW5Gcm9udGllckVmZmVjdEgAEjAKBHdha2UYCSABKAsyIC5ub21vcy5ydW50aW1lLnYyLlBlZXJXYWtlRWZmZWN0SAASSwoScmVmcmVzaF9jcmVkZW50aWFsGAogASgLMi0ubm9tb3MucnVudGltZS52Mi5QZWVyQ3JlZGVudGlhbFJlZnJlc2hFZmZlY3RIABJFCg9kZXZpY2VfaWRlbnRpdHkYCyABKAsyKi5ub21vcy5ydW50aW1lLnYyLlBlZXJEZXZpY2VJZGVudGl0eUVmZmVjdEgAEj0KC2xhd19wYWNrYWdlGAwgASgLMiYubm9tb3MucnVudGltZS52Mi5QZWVyTGF3UGFja2FnZUVmZmVjdEgAEk0KE2hpc3RvcnlfYWNxdWlzaXRpb24YDSABKAsyLi5ub21vcy5ydW50aW1lLnYyLlBlZXJIaXN0b3J5QWNxdWlzaXRpb25FZmZlY3RIABJJChFjb25zb2xlX2Vucm9sbWVudBgOIAEoCzIsLm5vbW9zLnJ1bnRpbWUudjIuUGVlckNvbnNvbGVFbnJvbG1lbnRFZmZlY3RIAEIICgZlZmZlY3QioAEKGlBlZXJDb25zb2xlRW5yb2xtZW50RWZmZWN0EhEKCWVmZmVjdF9pZBgBIAEoCRIXCg9kZXZpY2VfaWRlbnRpdHkYAiABKAkSEgoKY2FwYWJpbGl0eRgDIAEoCRIPCgdjb25zb2xlGAQgASgJEg4KBnRlbmFudBgFIAEoCRINCgVzY29wZRgGIAEoCRISCgp3b3Jrc3BhY2VzGAcgAygJIqkBChNQZWVyQ29uc29sZUVucm9sbGVkEhEKCXByaW5jaXBhbBgBIAEoCRIQCghrZXlfaGFzaBgCIAEoCRI/CgVoZWFkcxgDIAMoCzIwLm5vbW9zLnJ1bnRpbWUudjIuUGVlckNvbnNvbGVFbnJvbGxlZC5IZWFkc0VudHJ5GiwKCkhlYWRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJyChtQZWVyQ29uc29sZUVucm9sbWVudFJlZnVzZWQSDgoGc3RhdHVzGAEgASgNEg8KB21lc3NhZ2UYAiABKAkSDAoEY29kZRgDIAEoCRIWCglyZXRyeWFibGUYBCABKAhIAIgBAUIMCgpfcmV0cnlhYmxlImMKHFBlZXJIaXN0b3J5QWNxdWlzaXRpb25FZmZlY3QSEQoJZWZmZWN0X2lkGAEgASgJEhEKCXdvcmtzcGFjZRgCIAEoCRIdChVjcmVkZW50aWFsX2NhcGFiaWxpdHkYAyABKAkiVQodUGVlckhpc3RvcnlBY3F1aXNpdGlvblJlY2VpcHQSEQoJd29ya3NwYWNlGAEgASgJEg8KB2NoYW5nZWQYAiABKAgSEAoIY29tcGxldGUYAyABKAgiOQoOUGVlcldha2VFZmZlY3QSEQoJZWZmZWN0X2lkGAEgASgJEhQKDGRlbGF5X21pbGxpcxgCIAEoDSILCglQZWVyV29rZW4i1gEKG1BlZXJDcmVkZW50aWFsUmVmcmVzaEVmZmVjdBIRCgllZmZlY3RfaWQYASABKAkSEgoKY2FwYWJpbGl0eRgCIAEoCRIdChBkZXZpY2VfY2hhbGxlbmdlGAMgASgJSACIAQESFAoMYWxsb3dfY2FjaGVkGAQgASgIEicKGnJlamVjdGVkX2F1dGhfdG9rZW5fc2hhMjU2GAUgASgMSAGIAQFCEwoRX2RldmljZV9jaGFsbGVuZ2VCHQobX3JlamVjdGVkX2F1dGhfdG9rZW5fc2hhMjU2Im8KF1BlZXJDcmVkZW50aWFsUmVmcmVzaGVkEhcKCmF1dGhfdG9rZW4YASABKAxIAIgBARIaCg1hdXRob3Jfc2VjcmV0GAIgASgMSAGIAQFCDQoLX2F1dGhfdG9rZW5CEAoOX2F1dGhvcl9zZWNyZXQixgIKGFBlZXJEZXZpY2VJZGVudGl0eUVmZmVjdBIRCgllZmZlY3RfaWQYASABKAkSEAoIaWRlbnRpdHkYAiABKAkSOAoEbG9hZBgDIAEoCzIoLm5vbW9zLnJ1bnRpbWUudjIuUGVlckRldmljZUlkZW50aXR5TG9hZEgAEjgKBHNhdmUYBCABKAsyKC5ub21vcy5ydW50aW1lLnYyLlBlZXJEZXZpY2VJZGVudGl0eVNhdmVIABJBCg1sb2FkX3JlY292ZXJ5GAUgASgLMigubm9tb3MucnVudGltZS52Mi5QZWVyRGV2aWNlUmVjb3ZlcnlMb2FkSAASQQoNc2F2ZV9yZWNvdmVyeRgGIAEoCzIoLm5vbW9zLnJ1bnRpbWUudjIuUGVlckRldmljZVJlY292ZXJ5U2F2ZUgAQgsKCW9wZXJhdGlvbiIYChZQZWVyRGV2aWNlSWRlbnRpdHlMb2FkIigKFlBlZXJEZXZpY2VJZGVudGl0eVNhdmUSDgoGc2VjcmV0GAEgASgMIhgKFlBlZXJEZXZpY2VSZWNvdmVyeUxvYWQiUAoWUGVlckRldmljZVJlY292ZXJ5U2F2ZRI2CgZyZWNvcmQYASABKAsyJi5ub21vcy5ydW50aW1lLnYyLkRldmljZVJlY292ZXJ5UmVjb3JkIosCChREZXZpY2VSZWNvdmVyeVJlY29yZBIPCgd2ZXJzaW9uGAEgASgNEhMKC2FwcGxpY2F0aW9uGAIgASgJEhEKCXByaW5jaXBhbBgDIAEoCRIXCg9wcmV2aW91c19zZWNyZXQYBCABKAwSGAoQY2FuZGlkYXRlX3NlY3JldBgFIAEoDBIXCg9lbnJvbGxtZW50X2hlYWQYBiABKAkSFQoNcmVjb3ZlcnlfaGVhZBgHIAEoCRJEChFwZW5kaW5nX2FkbWlzc2lvbhgIIAEoCzIpLm5vbW9zLnJ1bnRpbWUudjIuRGV2aWNlUmVjb3ZlcnlBZG1pc3Npb24SEQoJY29tcGxldGVkGAkgASgIIrEBChdEZXZpY2VSZWNvdmVyeUFkbWlzc2lvbhI9CgVzdGFnZRgBIAEoDjIuLm5vbW9zLnJ1bnRpbWUudjIuRGV2aWNlUmVjb3ZlcnlBZG1pc3Npb25TdGFnZRISCgpyZXF1ZXN0X2lkGAIgASgEEhEKCXdvcmtzcGFjZRgDIAEoCRIwCgZlZmZlY3QYBCABKAsyIC5ub21vcy5ydW50aW1lLnYyLlBlZXJIdHRwRWZmZWN0Im4KElBlZXJEZXZpY2VJZGVudGl0eRITCgZzZWNyZXQYASABKAxIAIgBARI4CghyZWNvdmVyeRgCIAEoCzImLm5vbW9zLnJ1bnRpbWUudjIuRGV2aWNlUmVjb3ZlcnlSZWNvcmRCCQoHX3NlY3JldCI9ChRQZWVyTGF3UGFja2FnZUVmZmVjdBIRCgllZmZlY3RfaWQYASABKAkSEgoKbGF3X3NoYTI1NhgCIAEoCSIiCg5QZWVyTGF3UGFja2FnZRIQCghsYXdfdXNkehgBIAEoDCJEChxQZWVyV29ya3NwYWNlRGlzY292ZXJ5RWZmZWN0EhEKCWVmZmVjdF9pZBgBIAEoCRIRCgl3b3Jrc3BhY2UYAiABKAkiPgoWUGVlckxvY2FsQ3VzdG9keUVmZmVjdBIRCgllZmZlY3RfaWQYASABKAkSEQoJd29ya3NwYWNlGAIgASgJIoMBChdQZWVyTG9jYWxDdXN0b2R5UmVjZWlwdBIRCgl3b3Jrc3BhY2UYASABKAkSEQoJYXZhaWxhYmxlGAIgASgIEjYKB29wZW5pbmcYAyABKAsyIC5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlPcGVuaW5nSACIAQFCCgoIX29wZW5pbmciLwoaSGlzdG9yeUFjcXVpc2l0aW9uUmVjb3ZlcnkSEQoJd29ya3NwYWNlGAEgASgJIt4BCh1Db250aW51ZUNvcnJlc3BvbmRlbmNlUmVxdWVzdBIPCgd3b3JrX2lkGAEgASgJEjQKB3JlY2VpcHQYAiABKAsyIy5ub21vcy5ydW50aW1lLnYyLlBlZXJFZmZlY3RSZWNlaXB0ElYKG3JlY292ZXJfaGlzdG9yeV9hY3F1aXNpdGlvbhgDIAEoCzIsLm5vbW9zLnJ1bnRpbWUudjIuSGlzdG9yeUFjcXVpc2l0aW9uUmVjb3ZlcnlIAIgBAUIeChxfcmVjb3Zlcl9oaXN0b3J5X2FjcXVpc2l0aW9uIoYCChRSZW1vdGVPZmZlckFkbWlzc2lvbhIRCgl3b3Jrc3BhY2UYASABKAkSDAoEbWFpbhgCIAEoCRIYCgtzZWFsZWRfbWFpbhgDIAEoCUgAiAEBEi8KB3ZlcmRpY3QYBCABKAsyHi5ub21vcy5rZXJuZWwudjEuT2ZmZXJSZXNwb25zZRIzCgxib3JuX2N1c3RvZHkYBSADKAsyHS5ub21vcy5ydW50aW1lLnYyLkJvcm5DdXN0b2R5EhMKC3Jlc3VsdF9wYWNrGAYgASgMEhgKC3Jlc3VsdF9iYXNlGAcgASgJSAGIAQFCDgoMX3NlYWxlZF9tYWluQg4KDF9yZXN1bHRfYmFzZSJKCg5Cb3JuQ3VzdG9keVJlZhIqCgNyZWYYASABKAsyHS5ub21vcy5ydW50aW1lLnYyLlJldGFpbmVkUmVmEgwKBHBhY2sYAiABKAwigQEKC0Jvcm5DdXN0b2R5Ei0KBWNoaWxkGAEgASgLMh4ubm9tb3Mua2VybmVsLnYxLkJvcm5Xb3Jrc3BhY2USDAoEcGFjaxgCIAEoDBI1CgtwdWJsaWNhdGlvbhgDIAMoCzIgLm5vbW9zLnJ1bnRpbWUudjIuQm9ybkN1c3RvZHlSZWYiqgMKGEN1c3RvZHlPZmZlckJhdGNoUmVxdWVzdBIYChBwcm90b2NvbF92ZXJzaW9uGAEgASgNEhIKCnJlcXVlc3RfaWQYAiABKAkSNwoGaW5saW5lGAMgASgLMiUubm9tb3MucnVudGltZS52Mi5DdXN0b2R5SW5saW5lT2ZmZXJzSAASRgoRc2Vzc2lvbl9jYW5kaWRhdGUYBCABKAsyKS5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlTZXNzaW9uQ2FuZGlkYXRlSAASFgoJYmFzZV9oZWFkGAUgASgJSAGIAQESFQoNZXZpZGVuY2VfcGFjaxgGIAEoDBIaCg1vYnNlcnZlZF9oZWFkGAcgASgJSAKIAQESGQoRZmFzdF9mb3J3YXJkX29ubHkYCCABKAgSHAoPY29udGludWVzX2FmdGVyGAkgASgJSAOIAQESHQoVYWNrbm93bGVkZ2VfYWRtaXNzaW9uGAogASgIQggKBnNvdXJjZUIMCgpfYmFzZV9oZWFkQhAKDl9vYnNlcnZlZF9oZWFkQhIKEF9jb250aW51ZXNfYWZ0ZXIiwwEKDkxpdmVPZmZlckZyYW1lEjIKCGZyb250aWVyGAEgASgLMh4ubm9tb3MucnVudGltZS52Mi5MaXZlRnJvbnRpZXJIABI8CgZvZmZlcnMYAiABKAsyKi5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlPZmZlckJhdGNoUmVxdWVzdEgAEjQKCWFkbWlzc2lvbhgDIAEoCzIfLm5vbW9zLnJ1bnRpbWUudjIuTGl2ZUFkbWlzc2lvbkgAQgkKB21lc3NhZ2UiWgoNTGl2ZUFkbWlzc2lvbhISCgpyZXF1ZXN0X2lkGAEgASgJEjUKCWFkbWlzc2lvbhgCIAEoCzIiLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUFkbWlzc2lvbiIuCgxMaXZlRnJvbnRpZXISDAoEaGVhZBgBIAEoCRIQCghyZXNwb25zZRgCIAEoCCJrChBQZWVyU29ja2V0RWZmZWN0EhUKDWNvbm5lY3Rpb25faWQYASABKAkSEgoIb3Blbl91cmwYAiABKAlIABIOCgRzZW5kGAMgASgMSAASDwoFY2xvc2UYBCABKAhIAEILCglvcGVyYXRpb24iqQEKEVBlZXJTb2NrZXRSZWNlaXB0EhUKDWNvbm5lY3Rpb25faWQYASABKAkSEAoGb3BlbmVkGAIgASgISAASEgoIcmVjZWl2ZWQYAyABKAxIABIQCgZjbG9zZWQYBCABKAhIABI2CgdjbG9zdXJlGAUgASgLMiMubm9tb3MucnVudGltZS52Mi5QZWVyU29ja2V0Q2xvc3VyZUgAQg0KC29ic2VydmF0aW9uIo0BChFQZWVyU29ja2V0Q2xvc3VyZRIRCgRjb2RlGAEgASgNSACIAQESDgoGcmVhc29uGAIgASgJEg0KBWNsZWFuGAMgASgIEj0KCWluaXRpYXRvchgEIAEoDjIqLm5vbW9zLnJ1bnRpbWUudjIuUGVlclNvY2tldENsb3NlSW5pdGlhdG9yQgcKBV9jb2RlIuIDCg9MaXZlTGlua0Nsb3N1cmUSFQoNY29ubmVjdGlvbl9pZBgBIAEoCRIRCgl3b3Jrc3BhY2UYAiABKAkSLAoEcm9sZRgDIAEoDjIeLm5vbW9zLnJ1bnRpbWUudjIuTGl2ZUxpbmtSb2xlEjMKBnNvY2tldBgEIAEoCzIjLm5vbW9zLnJ1bnRpbWUudjIuUGVlclNvY2tldENsb3N1cmUSHQoVY2xvc2VkX2F0X3VuaXhfbWlsbGlzGAUgASgEEhMKC29wZW5fbWlsbGlzGAYgASgEEhIKCmFkbWlzc2lvbnMYByABKA0SJgoZbGFzdF9hZG1pc3Npb25fcmVxdWVzdF9pZBgIIAEoCUgAiAEBEh8KEmxhc3RfYWRtaXR0ZWRfbWFpbhgJIAEoCUgBiAEBEh0KEGxhc3Rfc2VhbGVkX21haW4YCiABKAlIAogBARIaCg1sYXN0X2Zyb250aWVyGAsgASgJSAOIAQESGgoSdW5hbnN3ZXJlZF9iYXRjaGVzGAwgASgNQhwKGl9sYXN0X2FkbWlzc2lvbl9yZXF1ZXN0X2lkQhUKE19sYXN0X2FkbWl0dGVkX21haW5CEwoRX2xhc3Rfc2VhbGVkX21haW5CEAoOX2xhc3RfZnJvbnRpZXIiFAoSUGVlclNvY2tldE9ic2VydmVkIj0KF0V4cG9ydExpdmVPZmZlcnNSZXF1ZXN0Eg8KB3Nlc3Npb24YASABKAkSEQoJYmFzZV9oZWFkGAIgASgJIk4KEkN1c3RvZHlJbnRlbnRPZmZlchIPCgdzZXNzaW9uGAEgASgJEhIKCmNvbW1pdF9vaWQYAiABKAkSEwoLY2hhbmdlX3VzZGEYAyABKAwiSwoTQ3VzdG9keUlubGluZU9mZmVycxI0CgZvZmZlcnMYASADKAsyJC5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlJbnRlbnRPZmZlciIsChdDdXN0b2R5U2Vzc2lvbkNhbmRpZGF0ZRIRCglyZWZlcmVuY2UYASABKAkiggQKEEN1c3RvZHlBZG1pc3Npb24SDAoEbWFpbhgBIAEoCRIYCgtzZWFsZWRfbWFpbhgCIAEoCUgAiAEBEjsKCHNlc3Npb25zGAMgAygLMikubm9tb3MucnVudGltZS52Mi5DdXN0b2R5U2Vzc2lvbkFkbWlzc2lvbhI1Cg5iaXJ0aF9vdXRjb21lcxgEIAMoCzIdLm5vbW9zLmtlcm5lbC52MS5CaXJ0aE91dGNvbWUSMwoMYm9ybl9jdXN0b2R5GAUgAygLMh0ubm9tb3MucnVudGltZS52Mi5Cb3JuQ3VzdG9keRITCgtyZXN1bHRfcGFjaxgGIAEoDBIYCgtyZXN1bHRfYmFzZRgHIAEoCUgBiAEBEjoKB3RpbWluZ3MYCCABKAsyKS5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlBZG1pc3Npb25UaW1pbmdzEh4KEXJlY292ZXJ5X3JlcXVpcmVkGAkgASgISAKIAQESRgoRbG9jYWxfbWFpbnRlbmFuY2UYCiABKAsyJi5ub21vcy5ydW50aW1lLnYyLk1haW50ZW5hbmNlU2NoZWR1bGVkSAOIAQFCDgoMX3NlYWxlZF9tYWluQg4KDF9yZXN1bHRfYmFzZUIUChJfcmVjb3ZlcnlfcmVxdWlyZWRCFAoSX2xvY2FsX21haW50ZW5hbmNlImUKF0N1c3RvZHlTZXNzaW9uQWRtaXNzaW9uEg8KB3Nlc3Npb24YASABKAkSOQoHaW50ZW50cxgCIAMoCzIoLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUludGVudEFkbWlzc2lvbiLUAwoWQ3VzdG9keUludGVudEFkbWlzc2lvbhISCgpjb21taXRfb2lkGAEgASgJEhYKCWludGVudF9pZBgCIAEoCUgBiAEBEjsKCGFkbWl0dGVkGAogASgLMicubm9tb3MucnVudGltZS52Mi5DdXN0b2R5SW50ZW50QWRtaXR0ZWRIABI5Cgdza2lwcGVkGAsgASgLMiYubm9tb3MucnVudGltZS52Mi5DdXN0b2R5SW50ZW50U2tpcHBlZEgAEjkKB3JlZnVzZWQYDCABKAsyJi5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlJbnRlbnRSZWZ1c2VkSAASRAoNZGVhZF9sZXR0ZXJlZBgNIAEoCzIrLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUludGVudERlYWRMZXR0ZXJlZEgAEjkKB2Jsb2NrZWQYDiABKAsyJi5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlJbnRlbnRCbG9ja2VkSAASQQoLcXVhcmFudGluZWQYDyABKAsyKi5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlJbnRlbnRRdWFyYW50aW5lZEgAQgkKB291dGNvbWVCDAoKX2ludGVudF9pZCKQAQoVQ3VzdG9keUludGVudEFkbWl0dGVkEgwKBGhlYWQYASABKAkSMwoHY3JlYXRlZBgCIAMoCzIiLm5vbW9zLmtlcm5lbC52MS5PZmZlckFnZ3JlZ2F0ZVJlZhI0CghhZmZlY3RlZBgDIAMoCzIiLm5vbW9zLmtlcm5lbC52MS5PZmZlckFnZ3JlZ2F0ZVJlZiIvChRDdXN0b2R5SW50ZW50U2tpcHBlZBIXCg9hbHJlYWR5X29uX21haW4YASABKAgimgEKFEN1c3RvZHlJbnRlbnRSZWZ1c2VkEg8KB21lc3NhZ2UYASABKAkSEQoEaGludBgDIAEoCUgAiAEBEjQKB3JlZnVzYWwYBCABKAsyHi5ub21vcy5rZXJuZWwudjEuS2VybmVsUmVmdXNhbEgBiAEBQgcKBV9oaW50QgoKCF9yZWZ1c2FsSgQIAhADUg1kZWFkX2xldHRlcmVkIn4KGUN1c3RvZHlJbnRlbnREZWFkTGV0dGVyZWQSDwoHbWVzc2FnZRgBIAEoCRIRCgRoaW50GAIgASgJSACIAQESHgoRY3VzdG9keV9yZWZlcmVuY2UYAyABKAlIAYgBAUIHCgVfaGludEIUChJfY3VzdG9keV9yZWZlcmVuY2UiJgoUQ3VzdG9keUludGVudEJsb2NrZWQSDgoGZGV0YWlsGAEgASgJIpUBChhDdXN0b2R5SW50ZW50UXVhcmFudGluZWQSDgoGcmVhc29uGAEgASgJEhkKEWF1dGhvcmVkX2xhd19oYXNoGAIgASgJEhgKEGN1cnJlbnRfbGF3X2hhc2gYAyABKAkSHgoRY3VzdG9keV9yZWZlcmVuY2UYBCABKAlIAIgBAUIUChJfY3VzdG9keV9yZWZlcmVuY2Ui7QEKF0N1c3RvZHlBZG1pc3Npb25UaW1pbmdzEhQKDHRvdGFsX21pbGxpcxgBIAEoARITCgtzY2FuX21pbGxpcxgCIAEoARIUCgxmZXRjaF9taWxsaXMYAyABKAESEwoLc2VhbF9taWxsaXMYBCABKAESGAoQZ2F0ZV9mb2xkX21pbGxpcxgFIAEoARIUCgxpbnRlbnRfY291bnQYBiABKA0SFQoNc2Vzc2lvbl9jb3VudBgHIAEoDRI1CgVzcGFucxgIIAMoCzImLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUFkbWlzc2lvblNwYW4ilwEKFEN1c3RvZHlBZG1pc3Npb25TcGFuEgoKAmlkGAEgASgJEg0KBXRyYWNrGAIgASgJEgwKBG5hbWUYAyABKAkSDAoEa2luZBgEIAEoCRINCgVkZXB0aBgFIAEoDRIbChNzdGFydGVkX3VuaXhfbWlsbGlzGAYgASgBEhwKFGZpbmlzaGVkX3VuaXhfbWlsbGlzGAcgASgBIl0KF1dvcmtzcGFjZUVmZmVjdERlZmVycmVkEhgKEHRhcmdldF93b3Jrc3BhY2UYASABKAkSGgoScmV0cnlfYWZ0ZXJfbWlsbGlzGAIgASgEEgwKBGhlbGQYAyABKAQi+gEKDU91dGJveFN1bW1hcnkSEQoJd29ya3NwYWNlGAEgASgJEg8KB2VudHJpZXMYAiABKAQSNAoHdGFyZ2V0cxgDIAMoCzIjLm5vbW9zLnJ1bnRpbWUudjIuT3V0Ym94VGFyZ2V0Q291bnQSHwoSbmV4dF9kdWVfYXRfbWlsbGlzGAQgASgESACIAQESFAoMd29ya19wZW5kaW5nGAUgASgIEhAKCHJlc2lkZW50GAYgASgIEhUKDWVudHJpZXNfdG90YWwYByABKA0SGAoQZW50cmllc19wcmVwYXJlZBgIIAEoDUIVChNfbmV4dF9kdWVfYXRfbWlsbGlzIj4KEU91dGJveFRhcmdldENvdW50EhgKEHRhcmdldF93b3Jrc3BhY2UYASABKAkSDwoHZW50cmllcxgCIAEoBCq8AQoVU2hhcmVXb3Jrc3BhY2VPdXRjb21lEicKI1NIQVJFX1dPUktTUEFDRV9PVVRDT01FX1VOU1BFQ0lGSUVEEAASJQohU0hBUkVfV09SS1NQQUNFX09VVENPTUVfREVMSVZFUkVEEAESLgoqU0hBUkVfV09SS1NQQUNFX09VVENPTUVfQVdBSVRJTkdfUkVDSVBJRU5UEAISIwofU0hBUkVfV09SS1NQQUNFX09VVENPTUVfUkVGVVNFRBADKmcKDlBlZXJIdHRwTWV0aG9kEiAKHFBFRVJfSFRUUF9NRVRIT0RfVU5TUEVDSUZJRUQQABIYChRQRUVSX0hUVFBfTUVUSE9EX0dFVBABEhkKFVBFRVJfSFRUUF9NRVRIT0RfUE9TVBACKr8BChdQZWVyRWZmZWN0RmFpbHVyZVJlYXNvbhIqCiZQRUVSX0VGRkVDVF9GQUlMVVJFX1JFQVNPTl9VTlNQRUNJRklFRBAAEiYKIlBFRVJfRUZGRUNUX0ZBSUxVUkVfUkVBU09OX09GRkxJTkUQARImCiJQRUVSX0VGRkVDVF9GQUlMVVJFX1JFQVNPTl9USU1FT1VUEAISKAokUEVFUl9FRkZFQ1RfRkFJTFVSRV9SRUFTT05fVFJBTlNQT1JUEAMqrQEKHERldmljZVJlY292ZXJ5QWRtaXNzaW9uU3RhZ2USLworREVWSUNFX1JFQ09WRVJZX0FETUlTU0lPTl9TVEFHRV9VTlNQRUNJRklFRBAAEi4KKkRFVklDRV9SRUNPVkVSWV9BRE1JU1NJT05fU1RBR0VfRU5ST0xMTUVOVBABEiwKKERFVklDRV9SRUNPVkVSWV9BRE1JU1NJT05fU1RBR0VfUkVDT1ZFUlkQAiq/AQoYUGVlclNvY2tldENsb3NlSW5pdGlhdG9yEisKJ1BFRVJfU09DS0VUX0NMT1NFX0lOSVRJQVRPUl9VTlNQRUNJRklFRBAAEicKI1BFRVJfU09DS0VUX0NMT1NFX0lOSVRJQVRPUl9SVU5USU1FEAESJQohUEVFUl9TT0NLRVRfQ0xPU0VfSU5JVElBVE9SX1NIRUxMEAISJgoiUEVFUl9TT0NLRVRfQ0xPU0VfSU5JVElBVE9SX1JFTU9URRADKmEKDExpdmVMaW5rUm9sZRIeChpMSVZFX0xJTktfUk9MRV9VTlNQRUNJRklFRBAAEhcKE0xJVkVfTElOS19ST0xFX1BFRVIQARIYChRMSVZFX0xJTktfUk9MRV9SRUxBWRACYgZwcm90bzM", [file_nomos_kernel_v1_kernel, file_nomos_runtime_v2_placement_desk, file_nomos_discovery_v1_workspace_placement, file_nomos_runtime_v2_custody_desk, file_nomos_runtime_v2_maintenance_desk]);
17
17
 
18
18
  /**
19
19
  * Describes the message nomos.runtime.v2.ShareWorkspaceRequest.
@@ -554,138 +554,152 @@ export const PeerSocketEffectSchema = /*@__PURE__*/
554
554
  export const PeerSocketReceiptSchema = /*@__PURE__*/
555
555
  messageDesc(file_nomos_runtime_v2_correspondence_desk, 76);
556
556
 
557
+ /**
558
+ * Describes the message nomos.runtime.v2.PeerSocketClosure.
559
+ * Use `create(PeerSocketClosureSchema)` to create a new message.
560
+ */
561
+ export const PeerSocketClosureSchema = /*@__PURE__*/
562
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 77);
563
+
564
+ /**
565
+ * Describes the message nomos.runtime.v2.LiveLinkClosure.
566
+ * Use `create(LiveLinkClosureSchema)` to create a new message.
567
+ */
568
+ export const LiveLinkClosureSchema = /*@__PURE__*/
569
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 78);
570
+
557
571
  /**
558
572
  * Describes the message nomos.runtime.v2.PeerSocketObserved.
559
573
  * Use `create(PeerSocketObservedSchema)` to create a new message.
560
574
  */
561
575
  export const PeerSocketObservedSchema = /*@__PURE__*/
562
- messageDesc(file_nomos_runtime_v2_correspondence_desk, 77);
576
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 79);
563
577
 
564
578
  /**
565
579
  * Describes the message nomos.runtime.v2.ExportLiveOffersRequest.
566
580
  * Use `create(ExportLiveOffersRequestSchema)` to create a new message.
567
581
  */
568
582
  export const ExportLiveOffersRequestSchema = /*@__PURE__*/
569
- messageDesc(file_nomos_runtime_v2_correspondence_desk, 78);
583
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 80);
570
584
 
571
585
  /**
572
586
  * Describes the message nomos.runtime.v2.CustodyIntentOffer.
573
587
  * Use `create(CustodyIntentOfferSchema)` to create a new message.
574
588
  */
575
589
  export const CustodyIntentOfferSchema = /*@__PURE__*/
576
- messageDesc(file_nomos_runtime_v2_correspondence_desk, 79);
590
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 81);
577
591
 
578
592
  /**
579
593
  * Describes the message nomos.runtime.v2.CustodyInlineOffers.
580
594
  * Use `create(CustodyInlineOffersSchema)` to create a new message.
581
595
  */
582
596
  export const CustodyInlineOffersSchema = /*@__PURE__*/
583
- messageDesc(file_nomos_runtime_v2_correspondence_desk, 80);
597
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 82);
584
598
 
585
599
  /**
586
600
  * Describes the message nomos.runtime.v2.CustodySessionCandidate.
587
601
  * Use `create(CustodySessionCandidateSchema)` to create a new message.
588
602
  */
589
603
  export const CustodySessionCandidateSchema = /*@__PURE__*/
590
- messageDesc(file_nomos_runtime_v2_correspondence_desk, 81);
604
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 83);
591
605
 
592
606
  /**
593
607
  * Describes the message nomos.runtime.v2.CustodyAdmission.
594
608
  * Use `create(CustodyAdmissionSchema)` to create a new message.
595
609
  */
596
610
  export const CustodyAdmissionSchema = /*@__PURE__*/
597
- messageDesc(file_nomos_runtime_v2_correspondence_desk, 82);
611
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 84);
598
612
 
599
613
  /**
600
614
  * Describes the message nomos.runtime.v2.CustodySessionAdmission.
601
615
  * Use `create(CustodySessionAdmissionSchema)` to create a new message.
602
616
  */
603
617
  export const CustodySessionAdmissionSchema = /*@__PURE__*/
604
- messageDesc(file_nomos_runtime_v2_correspondence_desk, 83);
618
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 85);
605
619
 
606
620
  /**
607
621
  * Describes the message nomos.runtime.v2.CustodyIntentAdmission.
608
622
  * Use `create(CustodyIntentAdmissionSchema)` to create a new message.
609
623
  */
610
624
  export const CustodyIntentAdmissionSchema = /*@__PURE__*/
611
- messageDesc(file_nomos_runtime_v2_correspondence_desk, 84);
625
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 86);
612
626
 
613
627
  /**
614
628
  * Describes the message nomos.runtime.v2.CustodyIntentAdmitted.
615
629
  * Use `create(CustodyIntentAdmittedSchema)` to create a new message.
616
630
  */
617
631
  export const CustodyIntentAdmittedSchema = /*@__PURE__*/
618
- messageDesc(file_nomos_runtime_v2_correspondence_desk, 85);
632
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 87);
619
633
 
620
634
  /**
621
635
  * Describes the message nomos.runtime.v2.CustodyIntentSkipped.
622
636
  * Use `create(CustodyIntentSkippedSchema)` to create a new message.
623
637
  */
624
638
  export const CustodyIntentSkippedSchema = /*@__PURE__*/
625
- messageDesc(file_nomos_runtime_v2_correspondence_desk, 86);
639
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 88);
626
640
 
627
641
  /**
628
642
  * Describes the message nomos.runtime.v2.CustodyIntentRefused.
629
643
  * Use `create(CustodyIntentRefusedSchema)` to create a new message.
630
644
  */
631
645
  export const CustodyIntentRefusedSchema = /*@__PURE__*/
632
- messageDesc(file_nomos_runtime_v2_correspondence_desk, 87);
646
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 89);
633
647
 
634
648
  /**
635
649
  * Describes the message nomos.runtime.v2.CustodyIntentDeadLettered.
636
650
  * Use `create(CustodyIntentDeadLetteredSchema)` to create a new message.
637
651
  */
638
652
  export const CustodyIntentDeadLetteredSchema = /*@__PURE__*/
639
- messageDesc(file_nomos_runtime_v2_correspondence_desk, 88);
653
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 90);
640
654
 
641
655
  /**
642
656
  * Describes the message nomos.runtime.v2.CustodyIntentBlocked.
643
657
  * Use `create(CustodyIntentBlockedSchema)` to create a new message.
644
658
  */
645
659
  export const CustodyIntentBlockedSchema = /*@__PURE__*/
646
- messageDesc(file_nomos_runtime_v2_correspondence_desk, 89);
660
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 91);
647
661
 
648
662
  /**
649
663
  * Describes the message nomos.runtime.v2.CustodyIntentQuarantined.
650
664
  * Use `create(CustodyIntentQuarantinedSchema)` to create a new message.
651
665
  */
652
666
  export const CustodyIntentQuarantinedSchema = /*@__PURE__*/
653
- messageDesc(file_nomos_runtime_v2_correspondence_desk, 90);
667
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 92);
654
668
 
655
669
  /**
656
670
  * Describes the message nomos.runtime.v2.CustodyAdmissionTimings.
657
671
  * Use `create(CustodyAdmissionTimingsSchema)` to create a new message.
658
672
  */
659
673
  export const CustodyAdmissionTimingsSchema = /*@__PURE__*/
660
- messageDesc(file_nomos_runtime_v2_correspondence_desk, 91);
674
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 93);
661
675
 
662
676
  /**
663
677
  * Describes the message nomos.runtime.v2.CustodyAdmissionSpan.
664
678
  * Use `create(CustodyAdmissionSpanSchema)` to create a new message.
665
679
  */
666
680
  export const CustodyAdmissionSpanSchema = /*@__PURE__*/
667
- messageDesc(file_nomos_runtime_v2_correspondence_desk, 92);
681
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 94);
668
682
 
669
683
  /**
670
684
  * Describes the message nomos.runtime.v2.WorkspaceEffectDeferred.
671
685
  * Use `create(WorkspaceEffectDeferredSchema)` to create a new message.
672
686
  */
673
687
  export const WorkspaceEffectDeferredSchema = /*@__PURE__*/
674
- messageDesc(file_nomos_runtime_v2_correspondence_desk, 93);
688
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 95);
675
689
 
676
690
  /**
677
691
  * Describes the message nomos.runtime.v2.OutboxSummary.
678
692
  * Use `create(OutboxSummarySchema)` to create a new message.
679
693
  */
680
694
  export const OutboxSummarySchema = /*@__PURE__*/
681
- messageDesc(file_nomos_runtime_v2_correspondence_desk, 94);
695
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 96);
682
696
 
683
697
  /**
684
698
  * Describes the message nomos.runtime.v2.OutboxTargetCount.
685
699
  * Use `create(OutboxTargetCountSchema)` to create a new message.
686
700
  */
687
701
  export const OutboxTargetCountSchema = /*@__PURE__*/
688
- messageDesc(file_nomos_runtime_v2_correspondence_desk, 95);
702
+ messageDesc(file_nomos_runtime_v2_correspondence_desk, 97);
689
703
 
690
704
  /**
691
705
  * Describes the enum nomos.runtime.v2.ShareWorkspaceOutcome.
@@ -740,3 +754,31 @@ export const DeviceRecoveryAdmissionStageSchema = /*@__PURE__*/
740
754
  */
741
755
  export const DeviceRecoveryAdmissionStage = /*@__PURE__*/
742
756
  tsEnum(DeviceRecoveryAdmissionStageSchema);
757
+
758
+ /**
759
+ * Describes the enum nomos.runtime.v2.PeerSocketCloseInitiator.
760
+ */
761
+ export const PeerSocketCloseInitiatorSchema = /*@__PURE__*/
762
+ enumDesc(file_nomos_runtime_v2_correspondence_desk, 4);
763
+
764
+ /**
765
+ * Who ended a live socket.
766
+ *
767
+ * @generated from enum nomos.runtime.v2.PeerSocketCloseInitiator
768
+ */
769
+ export const PeerSocketCloseInitiator = /*@__PURE__*/
770
+ tsEnum(PeerSocketCloseInitiatorSchema);
771
+
772
+ /**
773
+ * Describes the enum nomos.runtime.v2.LiveLinkRole.
774
+ */
775
+ export const LiveLinkRoleSchema = /*@__PURE__*/
776
+ enumDesc(file_nomos_runtime_v2_correspondence_desk, 5);
777
+
778
+ /**
779
+ * Which side of the live link a connection served.
780
+ *
781
+ * @generated from enum nomos.runtime.v2.LiveLinkRole
782
+ */
783
+ export const LiveLinkRole = /*@__PURE__*/
784
+ tsEnum(LiveLinkRoleSchema);
@@ -24,8 +24,10 @@ export declare type AdoptApplicationModelRequest = Message<"nomos.runtime.v2.Ado
24
24
  session: string;
25
25
 
26
26
  /**
27
- * The approved package identity from the generated descriptor: the kernel-derived
28
- * content identity of the compiled `.law.usdz` closure (64 lowercase hex).
27
+ * The approved package identity from the generated descriptor: the content
28
+ * identity of the compiled `.law.usdz` closure (64 lowercase hex). It names the
29
+ * bytes the shell supplies when the desk stages, and the law a package-lane
30
+ * workspace serves; it is not what a unit-lane workspace serves.
29
31
  *
30
32
  * @generated from field: string law_sha256 = 2;
31
33
  */
@@ -55,6 +57,16 @@ export declare type AdoptApplicationModelRequest = Message<"nomos.runtime.v2.Ado
55
57
  * @generated from field: bool dry_run = 5;
56
58
  */
57
59
  dryRun: boolean;
60
+
61
+ /**
62
+ * THE LAW the application approves: the unit set identity of its compiled
63
+ * `build/<name>.units` (64 lowercase hex, CAP-773). A unit-lane workspace is on
64
+ * the approved law when the closure it serves is composed from exactly these
65
+ * units, whatever its kernel's composer. REQUIRED.
66
+ *
67
+ * @generated from field: string unit_set = 6;
68
+ */
69
+ unitSet: string;
58
70
  };
59
71
 
60
72
  /**
@@ -9,7 +9,7 @@ import { file_nomos_kernel_v1_kernel } from "../../kernel/v1/kernel_pb.js";
9
9
  * Describes the file nomos/runtime/v2/model_adoption_desk.proto.
10
10
  */
11
11
  export const file_nomos_runtime_v2_model_adoption_desk = /*@__PURE__*/
12
- fileDesc("Cipub21vcy9ydW50aW1lL3YyL21vZGVsX2Fkb3B0aW9uX2Rlc2sucHJvdG8SEG5vbW9zLnJ1bnRpbWUudjIihAEKHEFkb3B0QXBwbGljYXRpb25Nb2RlbFJlcXVlc3QSDwoHc2Vzc2lvbhgBIAEoCRISCgpsYXdfc2hhMjU2GAIgASgJEhMKC2RvbWFpbl9rZXlzGAMgAygJEhkKEWFjY2VwdGFuY2VfcmVhc29uGAQgASgJEg8KB2RyeV9ydW4YBSABKAgikgIKF0FwcGxpY2F0aW9uTW9kZWxBZG9wdGVkEhEKCXdvcmtzcGFjZRgBIAEoCRI3CgdvdXRjb21lGAIgASgOMiYubm9tb3MucnVudGltZS52Mi5Nb2RlbEFkb3B0aW9uT3V0Y29tZRIfChJjdXJyZW50X2xhd19zaGEyNTYYAyABKAlIAIgBARITCgZkZXRhaWwYBCABKAlIAYgBARJECgp0cmFuc2l0aW9uGAUgASgLMisubm9tb3Mua2VybmVsLnYxLkZyb250aWVyVHJhbnNpdGlvblJlc3BvbnNlSAKIAQFCFQoTX2N1cnJlbnRfbGF3X3NoYTI1NkIJCgdfZGV0YWlsQg0KC190cmFuc2l0aW9uIvABChVNb2RlbEFkb3B0aW9uUHJvZ3Jlc3MSEQoJd29ya3NwYWNlGAEgASgJEjMKBXBoYXNlGAIgASgOMiQubm9tb3MucnVudGltZS52Mi5Nb2RlbEFkb3B0aW9uUGhhc2USNwoHb3V0Y29tZRgDIAEoDjImLm5vbW9zLnJ1bnRpbWUudjIuTW9kZWxBZG9wdGlvbk91dGNvbWUSEwoGZGV0YWlsGAQgASgJSACIAQESHwoSY3VycmVudF9sYXdfc2hhMjU2GAUgASgJSAGIAQFCCQoHX2RldGFpbEIVChNfY3VycmVudF9sYXdfc2hhMjU2KvkBChRNb2RlbEFkb3B0aW9uT3V0Y29tZRImCiJNT0RFTF9BRE9QVElPTl9PVVRDT01FX1VOU1BFQ0lGSUVEEAASJgoiTU9ERUxfQURPUFRJT05fT1VUQ09NRV9JTl9QUk9HUkVTUxABEiIKHk1PREVMX0FET1BUSU9OX09VVENPTUVfQ1VSUkVOVBACEiIKHk1PREVMX0FET1BUSU9OX09VVENPTUVfQURPUFRFRBADEiMKH01PREVMX0FET1BUSU9OX09VVENPTUVfREVGRVJSRUQQBBIkCiBNT0RFTF9BRE9QVElPTl9PVVRDT01FX1BSRVZJRVdFRBAFKr0BChJNb2RlbEFkb3B0aW9uUGhhc2USJAogTU9ERUxfQURPUFRJT05fUEhBU0VfVU5TUEVDSUZJRUQQABIgChxNT0RFTF9BRE9QVElPTl9QSEFTRV9PQlNFUlZFEAESHgoaTU9ERUxfQURPUFRJT05fUEhBU0VfU1RBR0UQAhIgChxNT0RFTF9BRE9QVElPTl9QSEFTRV9QUk9NT1RFEAMSHQoZTU9ERUxfQURPUFRJT05fUEhBU0VfU1lOQxAEYgZwcm90bzM", [file_nomos_kernel_v1_kernel]);
12
+ fileDesc("Cipub21vcy9ydW50aW1lL3YyL21vZGVsX2Fkb3B0aW9uX2Rlc2sucHJvdG8SEG5vbW9zLnJ1bnRpbWUudjIilgEKHEFkb3B0QXBwbGljYXRpb25Nb2RlbFJlcXVlc3QSDwoHc2Vzc2lvbhgBIAEoCRISCgpsYXdfc2hhMjU2GAIgASgJEhMKC2RvbWFpbl9rZXlzGAMgAygJEhkKEWFjY2VwdGFuY2VfcmVhc29uGAQgASgJEg8KB2RyeV9ydW4YBSABKAgSEAoIdW5pdF9zZXQYBiABKAkikgIKF0FwcGxpY2F0aW9uTW9kZWxBZG9wdGVkEhEKCXdvcmtzcGFjZRgBIAEoCRI3CgdvdXRjb21lGAIgASgOMiYubm9tb3MucnVudGltZS52Mi5Nb2RlbEFkb3B0aW9uT3V0Y29tZRIfChJjdXJyZW50X2xhd19zaGEyNTYYAyABKAlIAIgBARITCgZkZXRhaWwYBCABKAlIAYgBARJECgp0cmFuc2l0aW9uGAUgASgLMisubm9tb3Mua2VybmVsLnYxLkZyb250aWVyVHJhbnNpdGlvblJlc3BvbnNlSAKIAQFCFQoTX2N1cnJlbnRfbGF3X3NoYTI1NkIJCgdfZGV0YWlsQg0KC190cmFuc2l0aW9uIvABChVNb2RlbEFkb3B0aW9uUHJvZ3Jlc3MSEQoJd29ya3NwYWNlGAEgASgJEjMKBXBoYXNlGAIgASgOMiQubm9tb3MucnVudGltZS52Mi5Nb2RlbEFkb3B0aW9uUGhhc2USNwoHb3V0Y29tZRgDIAEoDjImLm5vbW9zLnJ1bnRpbWUudjIuTW9kZWxBZG9wdGlvbk91dGNvbWUSEwoGZGV0YWlsGAQgASgJSACIAQESHwoSY3VycmVudF9sYXdfc2hhMjU2GAUgASgJSAGIAQFCCQoHX2RldGFpbEIVChNfY3VycmVudF9sYXdfc2hhMjU2KvkBChRNb2RlbEFkb3B0aW9uT3V0Y29tZRImCiJNT0RFTF9BRE9QVElPTl9PVVRDT01FX1VOU1BFQ0lGSUVEEAASJgoiTU9ERUxfQURPUFRJT05fT1VUQ09NRV9JTl9QUk9HUkVTUxABEiIKHk1PREVMX0FET1BUSU9OX09VVENPTUVfQ1VSUkVOVBACEiIKHk1PREVMX0FET1BUSU9OX09VVENPTUVfQURPUFRFRBADEiMKH01PREVMX0FET1BUSU9OX09VVENPTUVfREVGRVJSRUQQBBIkCiBNT0RFTF9BRE9QVElPTl9PVVRDT01FX1BSRVZJRVdFRBAFKr0BChJNb2RlbEFkb3B0aW9uUGhhc2USJAogTU9ERUxfQURPUFRJT05fUEhBU0VfVU5TUEVDSUZJRUQQABIgChxNT0RFTF9BRE9QVElPTl9QSEFTRV9PQlNFUlZFEAESHgoaTU9ERUxfQURPUFRJT05fUEhBU0VfU1RBR0UQAhIgChxNT0RFTF9BRE9QVElPTl9QSEFTRV9QUk9NT1RFEAMSHQoZTU9ERUxfQURPUFRJT05fUEhBU0VfU1lOQxAEYgZwcm90bzM", [file_nomos_kernel_v1_kernel]);
13
13
 
14
14
  /**
15
15
  * Describes the message nomos.runtime.v2.AdoptApplicationModelRequest.