@projectqai/proto 0.0.50 → 0.0.51

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.
@@ -139,37 +139,30 @@ export declare type Entity = Message<"world.Entity"> & {
139
139
  */
140
140
  gnss?: GnssComponent;
141
141
 
142
- /**
143
- * experimental, dont use yet externally
144
- *
145
- * @generated from field: optional world.TaskableComponent taskable = 23;
146
- */
147
- taskable?: TaskableComponent;
148
-
149
142
  /**
150
143
  * @generated from field: optional world.DeviceComponent device = 50;
151
144
  */
152
145
  device?: DeviceComponent;
153
146
 
154
147
  /**
155
- * @generated from field: optional world.ConfigurationComponent config = 51;
148
+ * @generated from field: optional world.LinkComponent link = 32;
156
149
  */
157
- config?: ConfigurationComponent;
150
+ link?: LinkComponent;
158
151
 
159
152
  /**
160
- * @generated from field: optional world.ConfigurableComponent configurable = 52;
153
+ * @generated from field: optional world.PoseComponent pose = 38;
161
154
  */
162
- configurable?: ConfigurableComponent;
155
+ pose?: PoseComponent;
163
156
 
164
157
  /**
165
- * @generated from field: optional world.MissionComponent mission = 31;
158
+ * @generated from field: optional world.TargetPoseComponent target_pose = 62;
166
159
  */
167
- mission?: MissionComponent;
160
+ targetPose?: TargetPoseComponent;
168
161
 
169
162
  /**
170
- * @generated from field: optional world.LinkComponent link = 32;
163
+ * @generated from field: optional world.LocalShapeComponent local_shape = 29;
171
164
  */
172
- link?: LinkComponent;
165
+ localShape?: LocalShapeComponent;
173
166
 
174
167
  /**
175
168
  * @generated from field: optional world.MetricComponent metric = 36;
@@ -177,25 +170,37 @@ export declare type Entity = Message<"world.Entity"> & {
177
170
  metric?: MetricComponent;
178
171
 
179
172
  /**
180
- * @generated from field: optional world.SensorComponent sensor = 37;
173
+ * @generated from field: optional world.ConfigurationComponent config = 51;
181
174
  */
182
- sensor?: SensorComponent;
175
+ config?: ConfigurationComponent;
183
176
 
184
177
  /**
185
- * @generated from field: optional world.LocalShapeComponent local_shape = 29;
178
+ * @generated from field: optional world.ConfigurableComponent configurable = 52;
186
179
  */
187
- localShape?: LocalShapeComponent;
180
+ configurable?: ConfigurableComponent;
188
181
 
189
182
  /**
190
- * @generated from field: optional world.PoseComponent pose = 38;
183
+ * experimental, dont use yet externally
184
+ *
185
+ * @generated from field: optional world.TaskableComponent taskable = 23;
191
186
  */
192
- pose?: PoseComponent;
187
+ taskable?: TaskableComponent;
193
188
 
194
189
  /**
195
190
  * @generated from field: optional world.TaskExecutionComponent task_execution = 41;
196
191
  */
197
192
  taskExecution?: TaskExecutionComponent;
198
193
 
194
+ /**
195
+ * @generated from field: optional world.MissionComponent mission = 31;
196
+ */
197
+ mission?: MissionComponent;
198
+
199
+ /**
200
+ * @generated from field: optional world.SensorComponent sensor = 37;
201
+ */
202
+ sensor?: SensorComponent;
203
+
199
204
  /**
200
205
  * @generated from field: optional world.InteractivityComponent interactivity = 60;
201
206
  */
@@ -206,11 +211,6 @@ export declare type Entity = Message<"world.Entity"> & {
206
211
  */
207
212
  artifact?: ArtifactComponent;
208
213
 
209
- /**
210
- * @generated from field: optional world.TargetPoseComponent target_pose = 62;
211
- */
212
- targetPose?: TargetPoseComponent;
213
-
214
214
  /**
215
215
  * @generated from field: optional world.ChatComponent chat = 39;
216
216
  */
@@ -220,6 +220,11 @@ export declare type Entity = Message<"world.Entity"> & {
220
220
  * @generated from field: optional world.AssemblyComponent assembly = 40;
221
221
  */
222
222
  assembly?: AssemblyComponent;
223
+
224
+ /**
225
+ * @generated from field: optional world.MapLayerComponent map_layer = 63;
226
+ */
227
+ mapLayer?: MapLayerComponent;
223
228
  };
224
229
 
225
230
  /**
@@ -1130,14 +1135,55 @@ export declare type TaskableAssignee = Message<"world.TaskableAssignee"> & {
1130
1135
  */
1131
1136
  export declare const TaskableAssigneeSchema: GenMessage<TaskableAssignee>;
1132
1137
 
1138
+ /**
1139
+ * @generated from message world.TaskableTarget
1140
+ */
1141
+ export declare type TaskableTarget = Message<"world.TaskableTarget"> & {
1142
+ /**
1143
+ * if set, the task prefers entities in this list as target.
1144
+ *
1145
+ * @generated from field: optional world.EntityFilter filter = 1;
1146
+ */
1147
+ filter?: EntityFilter;
1148
+
1149
+ /**
1150
+ * if set, the task prefers entities (or positions) that are inside the geo regions defined by these entities
1151
+ *
1152
+ * @generated from field: repeated string within = 2;
1153
+ */
1154
+ within: string[];
1155
+
1156
+ /**
1157
+ * maximum number of targets per execution. default = 1
1158
+ *
1159
+ * @generated from field: optional uint32 max_targets = 3;
1160
+ */
1161
+ maxTargets?: number;
1162
+
1163
+ /**
1164
+ * if set, the task accepts an arbitrary geo position
1165
+ *
1166
+ * @generated from field: optional bool position = 4;
1167
+ */
1168
+ position?: boolean;
1169
+ };
1170
+
1171
+ /**
1172
+ * Describes the message world.TaskableTarget.
1173
+ * Use `create(TaskableTargetSchema)` to create a new message.
1174
+ */
1175
+ export declare const TaskableTargetSchema: GenMessage<TaskableTarget>;
1176
+
1133
1177
  /**
1134
1178
  * @generated from message world.TaskableComponent
1135
1179
  */
1136
1180
  export declare type TaskableComponent = Message<"world.TaskableComponent"> & {
1137
1181
  /**
1138
- * @generated from field: optional string reserved = 1;
1182
+ * priority for which task should be shown first. higher = more important
1183
+ *
1184
+ * @generated from field: optional uint32 priority = 1;
1139
1185
  */
1140
- reserved?: string;
1186
+ priority?: number;
1141
1187
 
1142
1188
  /**
1143
1189
  * @generated from field: optional string label = 2;
@@ -1163,6 +1209,40 @@ export declare type TaskableComponent = Message<"world.TaskableComponent"> & {
1163
1209
  * @generated from field: world.TaskableMode mode = 6;
1164
1210
  */
1165
1211
  mode: TaskableMode;
1212
+
1213
+ /**
1214
+ * @generated from field: optional world.TaskableTarget target = 7;
1215
+ */
1216
+ target?: TaskableTarget;
1217
+
1218
+ /**
1219
+ * @generated from field: optional string icon = 8;
1220
+ */
1221
+ icon?: string;
1222
+
1223
+ /**
1224
+ * a human or LLM readable description of the effect this task will have.
1225
+ * similar to llm tool descriptions, i.e. "power up the sensor", "closes the entry gate"
1226
+ *
1227
+ * @generated from field: optional string effect = 9;
1228
+ */
1229
+ effect?: string;
1230
+
1231
+ /**
1232
+ * this can be used by task providers to emit multiple alternative options of the same task ranked by priority
1233
+ * for example [ {grouping: target.gate, assignee: camera1, grouping_priority: 1000 } ,
1234
+ * {grouping: target.gate, assignee: camera2, grouping_priority:1001 }]
1235
+ * would show only the camera thats closer or less busy as option first _after_ determining if the task is shown at all
1236
+ * a ui might also decide to display all alternatives.
1237
+ *
1238
+ * @generated from field: optional string grouping = 10;
1239
+ */
1240
+ grouping?: string;
1241
+
1242
+ /**
1243
+ * @generated from field: optional uint32 grouping_priority = 11;
1244
+ */
1245
+ groupingPriority?: number;
1166
1246
  };
1167
1247
 
1168
1248
  /**
@@ -1176,6 +1256,27 @@ export declare const TaskableComponentSchema: GenMessage<TaskableComponent>;
1176
1256
  * Created by RunTask, referencing a TaskableComponent entity as the definition.
1177
1257
  * The controller that owns the taskable watches for these and executes them.
1178
1258
  *
1259
+ * @generated from message world.TaskExecutionTarget
1260
+ */
1261
+ export declare type TaskExecutionTarget = Message<"world.TaskExecutionTarget"> & {
1262
+ /**
1263
+ * @generated from field: repeated string entity = 1;
1264
+ */
1265
+ entity: string[];
1266
+
1267
+ /**
1268
+ * @generated from field: optional world.Geometry position = 2;
1269
+ */
1270
+ position?: Geometry;
1271
+ };
1272
+
1273
+ /**
1274
+ * Describes the message world.TaskExecutionTarget.
1275
+ * Use `create(TaskExecutionTargetSchema)` to create a new message.
1276
+ */
1277
+ export declare const TaskExecutionTargetSchema: GenMessage<TaskExecutionTarget>;
1278
+
1279
+ /**
1179
1280
  * @generated from message world.TaskExecutionComponent
1180
1281
  */
1181
1282
  export declare type TaskExecutionComponent = Message<"world.TaskExecutionComponent"> & {
@@ -1213,6 +1314,11 @@ export declare type TaskExecutionComponent = Message<"world.TaskExecutionCompone
1213
1314
  * @generated from field: optional uint32 priority = 5;
1214
1315
  */
1215
1316
  priority?: number;
1317
+
1318
+ /**
1319
+ * @generated from field: optional world.TaskExecutionTarget target = 6;
1320
+ */
1321
+ target?: TaskExecutionTarget;
1216
1322
  };
1217
1323
 
1218
1324
  /**
@@ -2370,6 +2476,102 @@ export declare type AssemblyComponent = Message<"world.AssemblyComponent"> & {
2370
2476
  */
2371
2477
  export declare const AssemblyComponentSchema: GenMessage<AssemblyComponent>;
2372
2478
 
2479
+ /**
2480
+ * Toggleable overlays over the base map
2481
+ *
2482
+ * @generated from message world.MapLayerComponent
2483
+ */
2484
+ export declare type MapLayerComponent = Message<"world.MapLayerComponent"> & {
2485
+ /**
2486
+ * @generated from field: int32 z_index = 1;
2487
+ */
2488
+ zIndex: number;
2489
+
2490
+ /**
2491
+ * @generated from field: float opacity = 2;
2492
+ */
2493
+ opacity: number;
2494
+
2495
+ /**
2496
+ * @generated from oneof world.MapLayerComponent.source
2497
+ */
2498
+ source: {
2499
+ /**
2500
+ * @generated from field: world.MapLayerComponent.Tile tiles = 10;
2501
+ */
2502
+ value: MapLayerComponent_Tile;
2503
+ case: "tiles";
2504
+ } | {
2505
+ /**
2506
+ * @generated from field: world.MapLayerComponent.Image image = 11;
2507
+ */
2508
+ value: MapLayerComponent_Image;
2509
+ case: "image";
2510
+ } | { case: undefined; value?: undefined };
2511
+ };
2512
+
2513
+ /**
2514
+ * Describes the message world.MapLayerComponent.
2515
+ * Use `create(MapLayerComponentSchema)` to create a new message.
2516
+ */
2517
+ export declare const MapLayerComponentSchema: GenMessage<MapLayerComponent>;
2518
+
2519
+ /**
2520
+ * XYZ tile template e.g. "https://.../{z}/{x}/{y}.png"
2521
+ *
2522
+ * @generated from message world.MapLayerComponent.Tile
2523
+ */
2524
+ export declare type MapLayerComponent_Tile = Message<"world.MapLayerComponent.Tile"> & {
2525
+ /**
2526
+ * @generated from field: string url = 1;
2527
+ */
2528
+ url: string;
2529
+ };
2530
+
2531
+ /**
2532
+ * Describes the message world.MapLayerComponent.Tile.
2533
+ * Use `create(MapLayerComponent_TileSchema)` to create a new message.
2534
+ */
2535
+ export declare const MapLayerComponent_TileSchema: GenMessage<MapLayerComponent_Tile>;
2536
+
2537
+ /**
2538
+ * single bitmap covering [west, south, east, north] in WGS84.
2539
+ *
2540
+ * @generated from message world.MapLayerComponent.Image
2541
+ */
2542
+ export declare type MapLayerComponent_Image = Message<"world.MapLayerComponent.Image"> & {
2543
+ /**
2544
+ * @generated from field: string url = 1;
2545
+ */
2546
+ url: string;
2547
+
2548
+ /**
2549
+ * @generated from field: double west = 2;
2550
+ */
2551
+ west: number;
2552
+
2553
+ /**
2554
+ * @generated from field: double south = 3;
2555
+ */
2556
+ south: number;
2557
+
2558
+ /**
2559
+ * @generated from field: double east = 4;
2560
+ */
2561
+ east: number;
2562
+
2563
+ /**
2564
+ * @generated from field: double north = 5;
2565
+ */
2566
+ north: number;
2567
+ };
2568
+
2569
+ /**
2570
+ * Describes the message world.MapLayerComponent.Image.
2571
+ * Use `create(MapLayerComponent_ImageSchema)` to create a new message.
2572
+ */
2573
+ export declare const MapLayerComponent_ImageSchema: GenMessage<MapLayerComponent_Image>;
2574
+
2373
2575
  /**
2374
2576
  * @generated from message world.EntityFilter
2375
2577
  */
@@ -3072,6 +3274,11 @@ export declare type RunTaskRequest = Message<"world.RunTaskRequest"> & {
3072
3274
  * @generated from field: optional uint32 priority = 2;
3073
3275
  */
3074
3276
  priority?: number;
3277
+
3278
+ /**
3279
+ * @generated from field: optional world.TaskExecutionTarget target = 6;
3280
+ */
3281
+ target?: TaskExecutionTarget;
3075
3282
  };
3076
3283
 
3077
3284
  /**
@@ -3134,6 +3341,48 @@ export declare type HardResetResponse = Message<"world.HardResetResponse"> & {
3134
3341
  */
3135
3342
  export declare const HardResetResponseSchema: GenMessage<HardResetResponse>;
3136
3343
 
3344
+ /**
3345
+ * @generated from message world.TimeSyncRequest
3346
+ */
3347
+ export declare type TimeSyncRequest = Message<"world.TimeSyncRequest"> & {
3348
+ /**
3349
+ * @generated from field: google.protobuf.Timestamp t1 = 1;
3350
+ */
3351
+ t1?: Timestamp;
3352
+ };
3353
+
3354
+ /**
3355
+ * Describes the message world.TimeSyncRequest.
3356
+ * Use `create(TimeSyncRequestSchema)` to create a new message.
3357
+ */
3358
+ export declare const TimeSyncRequestSchema: GenMessage<TimeSyncRequest>;
3359
+
3360
+ /**
3361
+ * @generated from message world.TimeSyncResponse
3362
+ */
3363
+ export declare type TimeSyncResponse = Message<"world.TimeSyncResponse"> & {
3364
+ /**
3365
+ * @generated from field: google.protobuf.Timestamp t1 = 1;
3366
+ */
3367
+ t1?: Timestamp;
3368
+
3369
+ /**
3370
+ * @generated from field: google.protobuf.Timestamp t2 = 2;
3371
+ */
3372
+ t2?: Timestamp;
3373
+
3374
+ /**
3375
+ * @generated from field: google.protobuf.Timestamp t3 = 3;
3376
+ */
3377
+ t3?: Timestamp;
3378
+ };
3379
+
3380
+ /**
3381
+ * Describes the message world.TimeSyncResponse.
3382
+ * Use `create(TimeSyncResponseSchema)` to create a new message.
3383
+ */
3384
+ export declare const TimeSyncResponseSchema: GenMessage<TimeSyncResponse>;
3385
+
3137
3386
  /**
3138
3387
  * @generated from enum world.Priority
3139
3388
  */
@@ -4075,6 +4324,11 @@ export enum EntityComponent {
4075
4324
  * @generated from enum value: EntityComponentTargetPose = 62;
4076
4325
  */
4077
4326
  EntityComponentTargetPose = 62,
4327
+
4328
+ /**
4329
+ * @generated from enum value: EntityComponentMapLayer = 63;
4330
+ */
4331
+ EntityComponentMapLayer = 63,
4078
4332
  }
4079
4333
 
4080
4334
  /**
@@ -4198,5 +4452,15 @@ export declare const WorldService: GenService<{
4198
4452
  input: typeof HardResetRequestSchema;
4199
4453
  output: typeof HardResetResponseSchema;
4200
4454
  },
4455
+ /**
4456
+ * NTP-style time synchronization for federation clock offset estimation
4457
+ *
4458
+ * @generated from rpc world.WorldService.TimeSync
4459
+ */
4460
+ timeSync: {
4461
+ methodKind: "unary";
4462
+ input: typeof TimeSyncRequestSchema;
4463
+ output: typeof TimeSyncResponseSchema;
4464
+ },
4201
4465
  }>;
4202
4466
 
package/dist/world_pb.js CHANGED
@@ -11,7 +11,7 @@ import { file_metrics } from "./metrics_pb.js";
11
11
  * Describes the file world.proto.
12
12
  */
13
13
  export const file_world = /*@__PURE__*/
14
- fileDesc("Cgt3b3JsZC5wcm90bxIFd29ybGQizRIKBkVudGl0eRIKCgJpZBgBIAEoCRISCgVsYWJlbBgCIAEoCUgAiAEBEioKCmNvbnRyb2xsZXIYAyABKAsyES53b3JsZC5Db250cm9sbGVySAGIAQESJgoIbGlmZXRpbWUYBCABKAsyDy53b3JsZC5MaWZldGltZUgCiAEBEiYKCHByaW9yaXR5GAUgASgOMg8ud29ybGQuUHJpb3JpdHlIA4gBARIgCgVsZWFzZRgGIAEoCzIMLndvcmxkLkxlYXNlSASIAQESJAoHcm91dGluZxgHIAEoCzIOLndvcmxkLlJvdXRpbmdIBYgBARIsCgNnZW8YCyABKAsyGi53b3JsZC5HZW9TcGF0aWFsQ29tcG9uZW50SAaIAQESKwoGc3ltYm9sGAwgASgLMhYud29ybGQuU3ltYm9sQ29tcG9uZW50SAeIAQESKwoGY2FtZXJhGA8gASgLMhYud29ybGQuQ2FtZXJhQ29tcG9uZW50SAiIAQESMQoJZGV0ZWN0aW9uGBAgASgLMhkud29ybGQuRGV0ZWN0aW9uQ29tcG9uZW50SAmIAQESLQoHYmVhcmluZxgRIAEoCzIXLndvcmxkLkJlYXJpbmdDb21wb25lbnRICogBARIpCgV0cmFjaxgVIAEoCzIVLndvcmxkLlRyYWNrQ29tcG9uZW50SAuIAQESLQoHbG9jYXRvchgWIAEoCzIXLndvcmxkLkxvY2F0b3JDb21wb25lbnRIDIgBARIzCgpraW5lbWF0aWNzGBggASgLMhoud29ybGQuS2luZW1hdGljc0NvbXBvbmVudEgNiAEBEiwKBXNoYXBlGBkgASgLMhgud29ybGQuR2VvU2hhcGVDb21wb25lbnRIDogBARI7Cg5jbGFzc2lmaWNhdGlvbhgaIAEoCzIeLndvcmxkLkNsYXNzaWZpY2F0aW9uQ29tcG9uZW50SA+IAQESNQoLdHJhbnNwb25kZXIYGyABKAsyGy53b3JsZC5UcmFuc3BvbmRlckNvbXBvbmVudEgQiAEBEjsKDmFkbWluaXN0cmF0aXZlGBwgASgLMh4ud29ybGQuQWRtaW5pc3RyYXRpdmVDb21wb25lbnRIEYgBARI1CgtvcmllbnRhdGlvbhgeIAEoCzIbLndvcmxkLk9yaWVudGF0aW9uQ29tcG9uZW50SBKIAQESMwoKbmF2aWdhdGlvbhgiIAEoCzIaLndvcmxkLk5hdmlnYXRpb25Db21wb25lbnRIE4gBARIpCgVwb3dlchghIAEoCzIVLndvcmxkLlBvd2VyQ29tcG9uZW50SBSIAQESLQoHY2FwdHVyZRgjIAEoCzIXLndvcmxkLkNhcHR1cmVDb21wb25lbnRIFYgBARInCgRnbnNzGCogASgLMhQud29ybGQuR25zc0NvbXBvbmVudEgWiAEBEi8KCHRhc2thYmxlGBcgASgLMhgud29ybGQuVGFza2FibGVDb21wb25lbnRIF4gBARIrCgZkZXZpY2UYMiABKAsyFi53b3JsZC5EZXZpY2VDb21wb25lbnRIGIgBARIyCgZjb25maWcYMyABKAsyHS53b3JsZC5Db25maWd1cmF0aW9uQ29tcG9uZW50SBmIAQESNwoMY29uZmlndXJhYmxlGDQgASgLMhwud29ybGQuQ29uZmlndXJhYmxlQ29tcG9uZW50SBqIAQESLQoHbWlzc2lvbhgfIAEoCzIXLndvcmxkLk1pc3Npb25Db21wb25lbnRIG4gBARInCgRsaW5rGCAgASgLMhQud29ybGQuTGlua0NvbXBvbmVudEgciAEBEisKBm1ldHJpYxgkIAEoCzIWLndvcmxkLk1ldHJpY0NvbXBvbmVudEgdiAEBEisKBnNlbnNvchglIAEoCzIWLndvcmxkLlNlbnNvckNvbXBvbmVudEgeiAEBEjQKC2xvY2FsX3NoYXBlGB0gASgLMhoud29ybGQuTG9jYWxTaGFwZUNvbXBvbmVudEgfiAEBEicKBHBvc2UYJiABKAsyFC53b3JsZC5Qb3NlQ29tcG9uZW50SCCIAQESOgoOdGFza19leGVjdXRpb24YKSABKAsyHS53b3JsZC5UYXNrRXhlY3V0aW9uQ29tcG9uZW50SCGIAQESOQoNaW50ZXJhY3Rpdml0eRg8IAEoCzIdLndvcmxkLkludGVyYWN0aXZpdHlDb21wb25lbnRIIogBARIvCghhcnRpZmFjdBg9IAEoCzIYLndvcmxkLkFydGlmYWN0Q29tcG9uZW50SCOIAQESNAoLdGFyZ2V0X3Bvc2UYPiABKAsyGi53b3JsZC5UYXJnZXRQb3NlQ29tcG9uZW50SCSIAQESJwoEY2hhdBgnIAEoCzIULndvcmxkLkNoYXRDb21wb25lbnRIJYgBARIvCghhc3NlbWJseRgoIAEoCzIYLndvcmxkLkFzc2VtYmx5Q29tcG9uZW50SCaIAQFCCAoGX2xhYmVsQg0KC19jb250cm9sbGVyQgsKCV9saWZldGltZUILCglfcHJpb3JpdHlCCAoGX2xlYXNlQgoKCF9yb3V0aW5nQgYKBF9nZW9CCQoHX3N5bWJvbEIJCgdfY2FtZXJhQgwKCl9kZXRlY3Rpb25CCgoIX2JlYXJpbmdCCAoGX3RyYWNrQgoKCF9sb2NhdG9yQg0KC19raW5lbWF0aWNzQggKBl9zaGFwZUIRCg9fY2xhc3NpZmljYXRpb25CDgoMX3RyYW5zcG9uZGVyQhEKD19hZG1pbmlzdHJhdGl2ZUIOCgxfb3JpZW50YXRpb25CDQoLX25hdmlnYXRpb25CCAoGX3Bvd2VyQgoKCF9jYXB0dXJlQgcKBV9nbnNzQgsKCV90YXNrYWJsZUIJCgdfZGV2aWNlQgkKB19jb25maWdCDwoNX2NvbmZpZ3VyYWJsZUIKCghfbWlzc2lvbkIHCgVfbGlua0IJCgdfbWV0cmljQgkKB19zZW5zb3JCDgoMX2xvY2FsX3NoYXBlQgcKBV9wb3NlQhEKD190YXNrX2V4ZWN1dGlvbkIQCg5faW50ZXJhY3Rpdml0eUILCglfYXJ0aWZhY3RCDgoMX3RhcmdldF9wb3NlQgcKBV9jaGF0QgsKCV9hc3NlbWJseUoECAgQCUoECAkQCkoECAoQCyJgCgpDb250cm9sbGVyEg8KAmlkGAEgASgJSACIAQESEQoEbm9kZRgCIAEoCUgBiAEBEhMKBm9yaWdpbhgDIAEoCUgCiAEBQgUKA19pZEIHCgVfbm9kZUIJCgdfb3JpZ2luIlkKBUxlYXNlEhIKCmNvbnRyb2xsZXIYASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyKvAgoITGlmZXRpbWUSLQoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIuCgV1bnRpbBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIuCgVmcmVzaBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIzCgpjb21wb25lbnRzGAQgAygLMh8ud29ybGQuTGlmZXRpbWUuQ29tcG9uZW50c0VudHJ5GkIKD0NvbXBvbmVudHNFbnRyeRILCgNrZXkYASABKAUSHgoFdmFsdWUYAiABKAsyDy53b3JsZC5MaWZldGltZToCOAFCBwoFX2Zyb21CCAoGX3VudGlsQggKBl9mcmVzaCIXCgdDaGFubmVsEgwKBG5hbWUYASABKAkiKwoHUm91dGluZxIgCghjaGFubmVscxgBIAMoCzIOLndvcmxkLkNoYW5uZWwinwEKE0dlb1NwYXRpYWxDb21wb25lbnQSEQoJbG9uZ2l0dWRlGAEgASgBEhAKCGxhdGl0dWRlGAIgASgBEhUKCGFsdGl0dWRlGAMgASgBSACIAQESMAoKY292YXJpYW5jZRgEIAEoCzIXLndvcmxkLkNvdmFyaWFuY2VNYXRyaXhIAYgBAUILCglfYWx0aXR1ZGVCDQoLX2NvdmFyaWFuY2UihQIKDUduc3NDb21wb25lbnQSKQoIZml4X3R5cGUYASABKA4yEi53b3JsZC5HbnNzRml4VHlwZUgAiAEBEh8KEnNhdGVsbGl0ZXNfdmlzaWJsZRgCIAEoDUgBiAEBEhwKD3NhdGVsbGl0ZXNfdXNlZBgDIAEoDUgCiAEBEhEKBGhkb3AYBCABKAJIA4gBARIRCgR2ZG9wGAUgASgCSASIAQESEQoEcGRvcBgGIAEoAkgFiAEBQgsKCV9maXhfdHlwZUIVChNfc2F0ZWxsaXRlc192aXNpYmxlQhIKEF9zYXRlbGxpdGVzX3VzZWRCBwoFX2hkb3BCBwoFX3Zkb3BCBwoFX3Bkb3AiJgoPU3ltYm9sQ29tcG9uZW50EhMKC21pbFN0ZDI1MjVDGAEgASgJImIKFkludGVyYWN0aXZpdHlDb21wb25lbnQSEQoEaWNvbhgBIAEoCUgAiAEBEhoKDXJlZmVyZW5jZV91cmwYAyABKAlIAYgBAUIHCgVfaWNvbkIQCg5fcmVmZXJlbmNlX3VybCLKAQoLTWVkaWFTdHJlYW0SDQoFbGFiZWwYASABKAkSCwoDdXJsGAIgASgJEiwKCHByb3RvY29sGAMgASgOMhoud29ybGQuTWVkaWFTdHJlYW1Qcm90b2NvbBIkCgRyb2xlGAkgASgOMhYud29ybGQuTWVkaWFTdHJlYW1Sb2xlEg0KBWNvZGVjGAogASgJEhIKBXdpZHRoGAsgASgFSACIAQESEwoGaGVpZ2h0GAwgASgFSAGIAQFCCAoGX3dpZHRoQgkKB19oZWlnaHQijgIKD0NhbWVyYUNvbXBvbmVudBIjCgdzdHJlYW1zGAEgAygLMhIud29ybGQuTWVkaWFTdHJlYW0SGAoLZm9jYWxfcG9pbnQYAiABKAlIAIgBARIQCgNmb3YYAyABKAFIAYgBARIWCglyYW5nZV9taW4YBCABKAFIAogBARIWCglyYW5nZV9tYXgYBSABKAFIA4gBARIVCghmb3Zfd2lkZRgGIAEoAUgEiAEBEhUKCGZvdl90ZWxlGAcgASgBSAWIAQFCDgoMX2ZvY2FsX3BvaW50QgYKBF9mb3ZCDAoKX3JhbmdlX21pbkIMCgpfcmFuZ2VfbWF4QgsKCV9mb3Zfd2lkZUILCglfZm92X3RlbGUiHwoQQXJ0aWZhY3RMb2NhdGlvbhILCgN1cmwYASABKAkiqAEKEUFydGlmYWN0Q29tcG9uZW50EgoKAmlkGAEgASgJEhQKDGNvbnRlbnRfdHlwZRgCIAEoCRIpCghsb2NhdGlvbhgDIAMoCzIXLndvcmxkLkFydGlmYWN0TG9jYXRpb24SFwoKc2l6ZV9ieXRlcxgEIAEoA0gAiAEBEhMKBnNoYTI1NhgFIAEoCUgBiAEBQg0KC19zaXplX2J5dGVzQgkKB19zaGEyNTYi0gEKEkRldGVjdGlvbkNvbXBvbmVudBIdChBkZXRlY3RvckVudGl0eUlkGAEgASgJSACIAQESGwoOY2xhc3NpZmljYXRpb24YAiABKAlIAYgBARI1CgxsYXN0TWVhc3VyZWQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESEAoIZXZpZGVuY2UYBCADKAlCEwoRX2RldGVjdG9yRW50aXR5SWRCEQoPX2NsYXNzaWZpY2F0aW9uQg8KDV9sYXN0TWVhc3VyZWQiWgoQQmVhcmluZ0NvbXBvbmVudBIUCgdhemltdXRoGAEgASgBSACIAQESFgoJZWxldmF0aW9uGAIgASgBSAGIAQFCCgoIX2F6aW11dGhCDAoKX2VsZXZhdGlvbiIjCg9TZW5zb3JDb21wb25lbnQSEAoIY292ZXJhZ2UYAiADKAkiOAoKUXVhdGVybmlvbhIJCgF4GAEgASgBEgkKAXkYAiABKAESCQoBehgDIAEoARIJCgF3GAQgASgBIq4BChBDb3ZhcmlhbmNlTWF0cml4EhAKA214eBgBIAEoAUgAiAEBEhAKA214eRgCIAEoAUgBiAEBEhAKA214ehgDIAEoAUgCiAEBEhAKA215eRgEIAEoAUgDiAEBEhAKA215ehgFIAEoAUgEiAEBEhAKA216ehgGIAEoAUgFiAEBQgYKBF9teHhCBgoEX214eUIGCgRfbXh6QgYKBF9teXlCBgoEX215ekIGCgRfbXp6IswBCg9DYXJ0ZXNpYW5PZmZzZXQSDgoGZWFzdF9tGAEgASgBEg8KB25vcnRoX20YAiABKAESEQoEdXBfbRgDIAEoAUgAiAEBEjAKCmNvdmFyaWFuY2UYBCABKAsyFy53b3JsZC5Db3ZhcmlhbmNlTWF0cml4SAGIAQESKwoLb3JpZW50YXRpb24YBSABKAsyES53b3JsZC5RdWF0ZXJuaW9uSAKIAQFCBwoFX3VwX21CDQoLX2NvdmFyaWFuY2VCDgoMX29yaWVudGF0aW9uIoIDCgtQb2xhck9mZnNldBIPCgdhemltdXRoGAEgASgBEhYKCWVsZXZhdGlvbhgCIAEoAUgAiAEBEhIKBXJhbmdlGAMgASgBSAGIAQESNAoKY292YXJpYW5jZRgEIAEoCzIXLndvcmxkLkNvdmFyaWFuY2VNYXRyaXhCAhgBSAKIAQESHgoRYXppbXV0aF9lcnJvcl9kZWcYCiABKAFIA4gBARIgChNlbGV2YXRpb25fZXJyb3JfZGVnGAsgASgBSASIAQESGgoNcmFuZ2VfZXJyb3JfbRgMIAEoAUgFiAEBEisKC29yaWVudGF0aW9uGAUgASgLMhEud29ybGQuUXVhdGVybmlvbkgGiAEBQgwKCl9lbGV2YXRpb25CCAoGX3JhbmdlQg0KC19jb3ZhcmlhbmNlQhQKEl9hemltdXRoX2Vycm9yX2RlZ0IWChRfZWxldmF0aW9uX2Vycm9yX2RlZ0IQCg5fcmFuZ2VfZXJyb3JfbUIOCgxfb3JpZW50YXRpb24iewoNUG9zZUNvbXBvbmVudBIOCgZwYXJlbnQYASABKAkSKwoJY2FydGVzaWFuGAIgASgLMhYud29ybGQuQ2FydGVzaWFuT2Zmc2V0SAASIwoFcG9sYXIYAyABKAsyEi53b3JsZC5Qb2xhck9mZnNldEgAQggKBm9mZnNldCJxChNUYXJnZXRQb3NlQ29tcG9uZW50EisKCWNhcnRlc2lhbhgBIAEoCzIWLndvcmxkLkNhcnRlc2lhbk9mZnNldEgAEiMKBXBvbGFyGAIgASgLMhIud29ybGQuUG9sYXJPZmZzZXRIAEIICgZvZmZzZXQiSgoPQW5ndWxhclZlbG9jaXR5EhEKCXJvbGxfcmF0ZRgBIAEoARISCgpwaXRjaF9yYXRlGAIgASgBEhAKCHlhd19yYXRlGAMgASgBIn8KFE9yaWVudGF0aW9uQ29tcG9uZW50EiYKC29yaWVudGF0aW9uGAEgASgLMhEud29ybGQuUXVhdGVybmlvbhIwCgpjb3ZhcmlhbmNlGAIgASgLMhcud29ybGQuQ292YXJpYW5jZU1hdHJpeEgAiAEBQg0KC19jb3ZhcmlhbmNlIpABCg5UcmFja0NvbXBvbmVudBIUCgd0cmFja2VyGAEgASgJSACIAQESFAoHaGlzdG9yeRgCIAEoCUgBiAEBEhcKCnByZWRpY3Rpb24YAyABKAlIAogBARISCgpkZXRlY3Rpb25zGAQgAygJQgoKCF90cmFja2VyQgoKCF9oaXN0b3J5Qg0KC19wcmVkaWN0aW9uIisKEExvY2F0b3JDb21wb25lbnQSFwoPbG9jYXRlZEVudGl0eUlkGAEgASgJIjUKD1Rhc2thYmxlQ29udGV4dBIVCghlbnRpdHlJZBgBIAEoCUgAiAEBQgsKCV9lbnRpdHlJZCI2ChBUYXNrYWJsZUFzc2lnbmVlEhUKCGVudGl0eUlkGAEgASgJSACIAQFCCwoJX2VudGl0eUlkIvUBChFUYXNrYWJsZUNvbXBvbmVudBIVCghyZXNlcnZlZBgBIAEoCUgAiAEBEhIKBWxhYmVsGAIgASgJSAGIAQESJwoHY29udGV4dBgDIAMoCzIWLndvcmxkLlRhc2thYmxlQ29udGV4dBIpCghhc3NpZ25lZRgEIAMoCzIXLndvcmxkLlRhc2thYmxlQXNzaWduZWUSJwoGc2NoZW1hGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIhCgRtb2RlGAYgASgOMhMud29ybGQuVGFza2FibGVNb2RlQgsKCV9yZXNlcnZlZEIICgZfbGFiZWwi1QEKFlRhc2tFeGVjdXRpb25Db21wb25lbnQSDAoEdGFzaxgBIAEoCRIwCgpwYXJhbWV0ZXJzGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEigKBXN0YXRlGAMgASgOMhkud29ybGQuVGFza0V4ZWN1dGlvblN0YXRlEhMKBnJlYXNvbhgEIAEoCUgBiAEBEhUKCHByaW9yaXR5GAUgASgNSAKIAQFCDQoLX3BhcmFtZXRlcnNCCQoHX3JlYXNvbkILCglfcHJpb3JpdHkiogEKDUtpbmVtYXRpY3NFbnUSEQoEZWFzdBgBIAEoAUgAiAEBEhIKBW5vcnRoGAIgASgBSAGIAQESDwoCdXAYAyABKAFIAogBARIwCgpjb3ZhcmlhbmNlGAQgASgLMhcud29ybGQuQ292YXJpYW5jZU1hdHJpeEgDiAEBQgcKBV9lYXN0QggKBl9ub3J0aEIFCgNfdXBCDQoLX2NvdmFyaWFuY2Ui7wEKE0tpbmVtYXRpY3NDb21wb25lbnQSLgoLdmVsb2NpdHlFbnUYASABKAsyFC53b3JsZC5LaW5lbWF0aWNzRW51SACIAQESMgoPYWNjZWxlcmF0aW9uRW51GAIgASgLMhQud29ybGQuS2luZW1hdGljc0VudUgBiAEBEjgKE2FuZ3VsYXJWZWxvY2l0eUJvZHkYAyABKAsyFi53b3JsZC5Bbmd1bGFyVmVsb2NpdHlIAogBAUIOCgxfdmVsb2NpdHlFbnVCEgoQX2FjY2VsZXJhdGlvbkVudUIWChRfYW5ndWxhclZlbG9jaXR5Qm9keSJCCghHZW9tZXRyeRIPCgN3a2IYASABKAxCAhgBEiUKBnBsYW5hchgCIAEoCzIVLndvcmxkLlBsYW5hckdlb21ldHJ5IkgKEUdlb1NoYXBlQ29tcG9uZW50EiYKCGdlb21ldHJ5GAEgASgLMg8ud29ybGQuR2VvbWV0cnlIAIgBAUILCglfZ2VvbWV0cnkiZAoTTG9jYWxTaGFwZUNvbXBvbmVudBITCgtyZWxhdGl2ZV90bxgCIAEoCRIrCghnZW9tZXRyeRgBIAEoCzIULndvcmxkLkxvY2FsR2VvbWV0cnlIAIgBAUILCglfZ2VvbWV0cnkiqAEKF0NsYXNzaWZpY2F0aW9uQ29tcG9uZW50EjwKCWRpbWVuc2lvbhgBIAEoDjIkLndvcmxkLkNsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uSACIAQESNAoIaWRlbnRpdHkYAiABKA4yHS53b3JsZC5DbGFzc2lmaWNhdGlvbklkZW50aXR5SAGIAQFCDAoKX2RpbWVuc2lvbkILCglfaWRlbnRpdHkilAEKDlRyYW5zcG9uZGVyQUlTEhEKBG1tc2kYASABKA1IAIgBARIQCgNpbW8YAiABKA1IAYgBARIVCghjYWxsc2lnbhgDIAEoCUgCiAEBEhgKC3Zlc3NlbF9uYW1lGAQgASgJSAOIAQFCBwoFX21tc2lCBgoEX2ltb0ILCglfY2FsbHNpZ25CDgoMX3Zlc3NlbF9uYW1lImMKD1RyYW5zcG9uZGVyQURTQhIZCgxpY2FvX2FkZHJlc3MYASABKA1IAIgBARIWCglmbGlnaHRfaWQYAiABKAlIAYgBAUIPCg1faWNhb19hZGRyZXNzQgwKCl9mbGlnaHRfaWQiewoUVHJhbnNwb25kZXJDb21wb25lbnQSJwoDYWlzGAEgASgLMhUud29ybGQuVHJhbnNwb25kZXJBSVNIAIgBARIpCgRhZHNiGAIgASgLMhYud29ybGQuVHJhbnNwb25kZXJBRFNCSAGIAQFCBgoEX2Fpc0IHCgVfYWRzYiKhAwoXQWRtaW5pc3RyYXRpdmVDb21wb25lbnQSDwoCaWQYASABKAlIAIgBARIRCgRmbGFnGAIgASgJSAGIAQESEgoFb3duZXIYAyABKAlIAogBARIZCgxtYW51ZmFjdHVyZXIYBCABKAlIA4gBARISCgVtb2RlbBgFIAEoCUgEiAEBEhcKCnllYXJfYnVpbHQYBiABKA1IBYgBARIVCghsZW5ndGhfbRgHIAEoAkgGiAEBEhQKB3dpZHRoX20YCiABKAJIB4gBARIVCghoZWlnaHRfbRgLIAEoAkgIiAEBEhcKCnRvbm5hZ2VfZ3QYCCABKAJICYgBARIcCg9lbmdpbmVfcG93ZXJfa3cYCSABKAJICogBAUIFCgNfaWRCBwoFX2ZsYWdCCAoGX293bmVyQg8KDV9tYW51ZmFjdHVyZXJCCAoGX21vZGVsQg0KC195ZWFyX2J1aWx0QgsKCV9sZW5ndGhfbUIKCghfd2lkdGhfbUILCglfaGVpZ2h0X21CDQoLX3Rvbm5hZ2VfZ3RCEgoQX2VuZ2luZV9wb3dlcl9rdyLwAQoTTmF2aWdhdGlvbkNvbXBvbmVudBIoCgRtb2RlGAEgASgOMhUud29ybGQuTmF2aWdhdGlvbk1vZGVIAIgBARISCgVhcm1lZBgCIAEoCEgBiAEBEhYKCWVtZXJnZW5jeRgDIAEoCEgCiAEBEh0KEHdheXBvaW50X2N1cnJlbnQYBCABKA1IA4gBARIbCg53YXlwb2ludF90b3RhbBgFIAEoDUgEiAEBQgcKBV9tb2RlQggKBl9hcm1lZEIMCgpfZW1lcmdlbmN5QhMKEV93YXlwb2ludF9jdXJyZW50QhEKD193YXlwb2ludF90b3RhbCKtAQoQTWlzc2lvbkNvbXBvbmVudBIPCgdtZW1iZXJzGAEgAygJEhgKC2Rlc2NyaXB0aW9uGAIgASgJSACIAQESGAoLZGVzdGluYXRpb24YAyABKAlIAYgBARIsCgNldGEYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCDgoMX2Rlc2NyaXB0aW9uQg4KDF9kZXN0aW5hdGlvbkIGCgRfZXRhIqwECg1MaW5rQ29tcG9uZW50EiYKBnN0YXR1cxgBIAEoDjIRLndvcmxkLkxpbmtTdGF0dXNIAIgBARIVCghyc3NpX2RibRgCIAEoEUgBiAEBEhMKBnNucl9kYhgDIAEoEUgCiAEBEhAKA3ZpYRgFIAEoCUgDiAEBEhwKD2xhc3RfbGF0ZW5jeV9tcxgGIAEoDUgEiAEBEhsKDmF2Z19sYXRlbmN5X21zGAcgASgNSAWIAQESMgoJbGFzdF9zZWVuGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgGiAEBEiEKFGxpbmtfcXVhbGl0eV9wZXJjZW50GAkgASgNSAeIAQESGAoLdHhfcG93ZXJfbXcYCiABKA1ICIgBARIbCg5hY3RpdmVfYW50ZW5uYRgLIAEoDUgJiAEBEhQKB3JmX21vZGUYDCABKAlICogBARIbCg5wYWNrZXRfcmF0ZV9oehgNIAEoDUgLiAEBQgkKB19zdGF0dXNCCwoJX3Jzc2lfZGJtQgkKB19zbnJfZGJCBgoEX3ZpYUISChBfbGFzdF9sYXRlbmN5X21zQhEKD19hdmdfbGF0ZW5jeV9tc0IMCgpfbGFzdF9zZWVuQhcKFV9saW5rX3F1YWxpdHlfcGVyY2VudEIOCgxfdHhfcG93ZXJfbXdCEQoPX2FjdGl2ZV9hbnRlbm5hQgoKCF9yZl9tb2RlQhEKD19wYWNrZXRfcmF0ZV9oeiL9AQoQQ2FwdHVyZUNvbXBvbmVudBIUCgdwYXlsb2FkGAEgASgMSACIAQESEQoEcG9ydBgCIAEoDUgBiAEBEhkKDGNvbnRlbnRfdHlwZRgDIAEoCUgCiAEBEhgKC2NhcHR1cmVkX2J5GAQgASgJSAOIAQESNAoLY2FwdHVyZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESDwoHY29udGVudBgGIAMoCUIKCghfcGF5bG9hZEIHCgVfcG9ydEIPCg1fY29udGVudF90eXBlQg4KDF9jYXB0dXJlZF9ieUIOCgxfY2FwdHVyZWRfYXQiiAIKDlBvd2VyQ29tcG9uZW50EiUKGGJhdHRlcnlfY2hhcmdlX3JlbWFpbmluZxgBIAEoAkgAiAEBEhQKB3ZvbHRhZ2UYAiABKAJIAYgBARIeChFyZW1haW5pbmdfc2Vjb25kcxgDIAEoDUgCiAEBEhYKCWN1cnJlbnRfYRgEIAEoAkgDiAEBEh4KEWNhcGFjaXR5X3VzZWRfbWFoGAUgASgCSASIAQFCGwoZX2JhdHRlcnlfY2hhcmdlX3JlbWFpbmluZ0IKCghfdm9sdGFnZUIUChJfcmVtYWluaW5nX3NlY29uZHNCDAoKX2N1cnJlbnRfYUIUChJfY2FwYWNpdHlfdXNlZF9tYWgiMQoRRGV2aWNlQ2xhc3NPcHRpb24SDQoFY2xhc3MYASABKAkSDQoFbGFiZWwYAiABKAki6gIKFUNvbmZpZ3VyYWJsZUNvbXBvbmVudBInCgZzY2hlbWEYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EiYKBXZhbHVlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBInCgVzdGF0ZRgDIAEoDjIYLndvcmxkLkNvbmZpZ3VyYWJsZVN0YXRlEhIKBWVycm9yGAQgASgJSACIAQESEgoFbGFiZWwYBSABKAlIAYgBARIXCg9hcHBsaWVkX3ZlcnNpb24YBiABKAQSOgoYc3VwcG9ydGVkX2RldmljZV9jbGFzc2VzGAcgAygLMhgud29ybGQuRGV2aWNlQ2xhc3NPcHRpb24SNQoMc2NoZWR1bGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBQggKBl9lcnJvckIICgZfbGFiZWxCDwoNX3NjaGVkdWxlZF9hdCKUBQoPRGV2aWNlQ29tcG9uZW50EhMKBnBhcmVudBgBIAEoCUgAiAEBEhMKC2NvbXBvc2l0aW9uGAIgAygJEh8KEnVuaXF1ZV9oYXJkd2FyZV9pZBgEIAEoCUgBiAEBEiEKBXN0YXRlGAYgASgOMhIud29ybGQuRGV2aWNlU3RhdGUSEgoFZXJyb3IYByABKAlIAogBARISCgVjbGFzcxgKIAEoCUgDiAEBEhUKCGNhdGVnb3J5GA0gASgJSASIAQESJAoEbm9kZRgUIAEoCzIRLndvcmxkLk5vZGVEZXZpY2VIBYgBARIiCgN1c2IYFSABKAsyEC53b3JsZC5Vc2JEZXZpY2VIBogBARIgCgJpcBgWIAEoCzIPLndvcmxkLklwRGV2aWNlSAeIAQESKAoGc2VyaWFsGBcgASgLMhMud29ybGQuU2VyaWFsRGV2aWNlSAiIAQESLAoIZXRoZXJuZXQYGCABKAsyFS53b3JsZC5FdGhlcm5ldERldmljZUgJiAEBEiYKBWxwd2FuGBkgASgLMhIud29ybGQuTFBXQU5EZXZpY2VICogBARIwCgptZXNodGFzdGljGBogASgLMhcud29ybGQuTWVzaHRhc3RpY0RldmljZUgLiAEBEiIKA2JsZRgbIAEoCzIQLndvcmxkLkJsZURldmljZUgMiAEBQgkKB19wYXJlbnRCFQoTX3VuaXF1ZV9oYXJkd2FyZV9pZEIICgZfZXJyb3JCCAoGX2NsYXNzQgsKCV9jYXRlZ29yeUIHCgVfbm9kZUIGCgRfdXNiQgUKA19pcEIJCgdfc2VyaWFsQgsKCV9ldGhlcm5ldEIICgZfbHB3YW5CDQoLX21lc2h0YXN0aWNCBgoEX2JsZSJtCgpNaXNzaW9uS2l0Ei8KB2xheW91dHMYASADKAsyHi53b3JsZC5NaXNzaW9uS2l0LkxheW91dHNFbnRyeRouCgxMYXlvdXRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLdAgoKTm9kZURldmljZRIVCghob3N0bmFtZRgBIAEoCUgAiAEBEg8KAm9zGAIgASgJSAGIAQESEQoEYXJjaBgDIAEoCUgCiAEBEhQKB251bV9jcHUYBCABKA1IA4gBARIXCgpvc192ZXJzaW9uGAUgASgJSASIAQESGwoOaHlkcmlzX3ZlcnNpb24YBiABKAlIBYgBARIkChdoeWRyaXNfdXBkYXRlX2F2YWlsYWJsZRgHIAEoCUgGiAEBEisKC21pc3Npb25fa2l0GAggASgLMhEud29ybGQuTWlzc2lvbktpdEgHiAEBQgsKCV9ob3N0bmFtZUIFCgNfb3NCBwoFX2FyY2hCCgoIX251bV9jcHVCDQoLX29zX3ZlcnNpb25CEQoPX2h5ZHJpc192ZXJzaW9uQhoKGF9oeWRyaXNfdXBkYXRlX2F2YWlsYWJsZUIOCgxfbWlzc2lvbl9raXQi+QIKCVVzYkRldmljZRIWCgl2ZW5kb3JfaWQYASABKA1IAIgBARIXCgpwcm9kdWN0X2lkGAIgASgNSAGIAQESGQoMZGV2aWNlX2NsYXNzGAMgASgNSAKIAQESHAoPZGV2aWNlX3N1YmNsYXNzGAQgASgNSAOIAQESHAoPZGV2aWNlX3Byb3RvY29sGAUgASgNSASIAQESHgoRbWFudWZhY3R1cmVyX25hbWUYBiABKAlIBYgBARIZCgxwcm9kdWN0X25hbWUYByABKAlIBogBARIaCg1zZXJpYWxfbnVtYmVyGAggASgJSAeIAQFCDAoKX3ZlbmRvcl9pZEINCgtfcHJvZHVjdF9pZEIPCg1fZGV2aWNlX2NsYXNzQhIKEF9kZXZpY2Vfc3ViY2xhc3NCEgoQX2RldmljZV9wcm90b2NvbEIUChJfbWFudWZhY3R1cmVyX25hbWVCDwoNX3Byb2R1Y3RfbmFtZUIQCg5fc2VyaWFsX251bWJlciJCCghJcERldmljZRIRCgRob3N0GAEgASgJSACIAQESEQoEcG9ydBgCIAEoDUgBiAEBQgcKBV9ob3N0QgcKBV9wb3J0IloKDkV0aGVybmV0RGV2aWNlEhgKC21hY19hZGRyZXNzGAEgASgJSACIAQESEwoGdmVuZG9yGAIgASgJSAGIAQFCDgoMX21hY19hZGRyZXNzQgkKB192ZW5kb3IiUAoMU2VyaWFsRGV2aWNlEhEKBHBhdGgYASABKAlIAIgBARIWCgliYXVkX3JhdGUYAiABKA1IAYgBAUIHCgVfcGF0aEIMCgpfYmF1ZF9yYXRlItwBChBNZXNodGFzdGljRGV2aWNlEhUKCG5vZGVfbnVtGAEgASgNSACIAQESFgoJbG9uZ19uYW1lGAIgASgJSAGIAQESFwoKc2hvcnRfbmFtZRgDIAEoCUgCiAEBEhsKDmhhcmR3YXJlX21vZGVsGAQgASgJSAOIAQESFwoKcHVibGljX2tleRgFIAEoDEgEiAEBQgsKCV9ub2RlX251bUIMCgpfbG9uZ19uYW1lQg0KC19zaG9ydF9uYW1lQhEKD19oYXJkd2FyZV9tb2RlbEINCgtfcHVibGljX2tleSJJCgtMUFdBTkRldmljZRIQCgNldWkYASABKAlIAIgBARIUCgdhZGRyZXNzGAIgASgJSAGIAQFCBgoEX2V1aUIKCghfYWRkcmVzcyJgCglCbGVEZXZpY2USFAoHYWRkcmVzcxgBIAEoCUgAiAEBEhEKBG5hbWUYAiABKAlIAYgBARIVCg1zZXJ2aWNlX3V1aWRzGAQgAygJQgoKCF9hZGRyZXNzQgcKBV9uYW1lIlEKFkNvbmZpZ3VyYXRpb25Db21wb25lbnQSJgoFdmFsdWUYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg8KB3ZlcnNpb24YBSABKAQioAEKDUNoYXRDb21wb25lbnQSEwoGc2VuZGVyGAEgASgJSACIAQESDwoCdG8YAyABKAlIAYgBARIPCgdtZXNzYWdlGAQgASgJEhUKCHJlcGx5X3RvGAUgASgJSAKIAQESFQoIcmVhY3Rpb24YBiABKAhIA4gBAUIJCgdfc2VuZGVyQgUKA190b0ILCglfcmVwbHlfdG9CCwoJX3JlYWN0aW9uIkQKEUFzc2VtYmx5Q29tcG9uZW50EhMKBnBhcmVudBgBIAEoCUgAiAEBEg8KB291dGxpbmUYAiADKAlCCQoHX3BhcmVudCLVBAoMRW50aXR5RmlsdGVyEg8KAmlkGAEgASgJSACIAQESEgoFbGFiZWwYAiABKAlIAYgBARIiCgNnZW8YAyABKAsyEC53b3JsZC5HZW9GaWx0ZXJIAogBARIsCgh0YXNrYWJsZRgEIAEoCzIVLndvcmxkLlRhc2thYmxlRmlsdGVySAOIAQESEQoJY29tcG9uZW50GAUgAygNEjAKCmNvbnRyb2xsZXIYByABKAsyFy53b3JsZC5Db250cm9sbGVyRmlsdGVySASIAQESJgoFdHJhY2sYCCABKAsyEi53b3JsZC5UcmFja0ZpbHRlckgFiAEBEioKB21pc3Npb24YCSABKAsyFC53b3JsZC5NaXNzaW9uRmlsdGVySAaIAQESKgoHY2hhbm5lbBgKIAEoCzIULndvcmxkLkNoYW5uZWxGaWx0ZXJIB4gBARIoCgZkZXZpY2UYMiABKAsyEy53b3JsZC5EZXZpY2VGaWx0ZXJICIgBARIvCgZjb25maWcYMyABKAsyGi53b3JsZC5Db25maWd1cmF0aW9uRmlsdGVySAmIAQESHwoCb3IYZCADKAsyEy53b3JsZC5FbnRpdHlGaWx0ZXISIAoDbm90GGUgASgLMhMud29ybGQuRW50aXR5RmlsdGVyQgUKA19pZEIICgZfbGFiZWxCBgoEX2dlb0ILCglfdGFza2FibGVCDQoLX2NvbnRyb2xsZXJCCAoGX3RyYWNrQgoKCF9taXNzaW9uQgoKCF9jaGFubmVsQgkKB19kZXZpY2VCCQoHX2NvbmZpZyIqChBDb250cm9sbGVyRmlsdGVyEg8KAmlkGAEgASgJSACIAQFCBQoDX2lkIi8KC1RyYWNrRmlsdGVyEhQKB3RyYWNrZXIYASABKAlIAIgBAUIKCghfdHJhY2tlciJdCg1NaXNzaW9uRmlsdGVyEhcKCm1pc3Npb25faWQYASABKAlIAIgBARIWCgltZW1iZXJfaWQYAiABKAlIAYgBAUINCgtfbWlzc2lvbl9pZEIMCgpfbWVtYmVyX2lkIocBCg5UYXNrYWJsZUZpbHRlchIsCgdjb250ZXh0GAEgASgLMhYud29ybGQuVGFza2FibGVDb250ZXh0SACIAQESLgoIYXNzaWduZWUYAiABKAsyFy53b3JsZC5UYXNrYWJsZUFzc2lnbmVlSAGIAQFCCgoIX2NvbnRleHRCCwoJX2Fzc2lnbmVlIk4KCUdlb0ZpbHRlchIjCghnZW9tZXRyeRgBIAEoCzIPLndvcmxkLkdlb21ldHJ5SAASFQoLZ2VvRW50aXR5SWQYAiABKAlIAEIFCgNnZW8i9gEKDERldmljZUZpbHRlchITCgZwYXJlbnQYASABKAlIAIgBARIfChJ1bmlxdWVfaGFyZHdhcmVfaWQYBCABKAlIAYgBARIZCgxkZXZpY2VfY2xhc3MYBSABKAlIAogBARIoCgNibGUYBiABKAsyFi53b3JsZC5CbGVEZXZpY2VGaWx0ZXJIA4gBARIoCgN1c2IYByABKAsyFi53b3JsZC5Vc2JEZXZpY2VGaWx0ZXJIBIgBAUIJCgdfcGFyZW50QhUKE191bmlxdWVfaGFyZHdhcmVfaWRCDwoNX2RldmljZV9jbGFzc0IGCgRfYmxlQgYKBF91c2IiZgoPQmxlRGV2aWNlRmlsdGVyEhQKB2FkZHJlc3MYASABKAlIAIgBARIRCgRuYW1lGAIgASgJSAGIAQESFQoNc2VydmljZV91dWlkcxgEIAMoCUIKCghfYWRkcmVzc0IHCgVfbmFtZSL/AgoPVXNiRGV2aWNlRmlsdGVyEhYKCXZlbmRvcl9pZBgBIAEoDUgAiAEBEhcKCnByb2R1Y3RfaWQYAiABKA1IAYgBARIZCgxkZXZpY2VfY2xhc3MYAyABKA1IAogBARIcCg9kZXZpY2Vfc3ViY2xhc3MYBCABKA1IA4gBARIcCg9kZXZpY2VfcHJvdG9jb2wYBSABKA1IBIgBARIeChFtYW51ZmFjdHVyZXJfbmFtZRgGIAEoCUgFiAEBEhkKDHByb2R1Y3RfbmFtZRgHIAEoCUgGiAEBEhoKDXNlcmlhbF9udW1iZXIYCCABKAlIB4gBAUIMCgpfdmVuZG9yX2lkQg0KC19wcm9kdWN0X2lkQg8KDV9kZXZpY2VfY2xhc3NCEgoQX2RldmljZV9zdWJjbGFzc0ISChBfZGV2aWNlX3Byb3RvY29sQhQKEl9tYW51ZmFjdHVyZXJfbmFtZUIPCg1fcHJvZHVjdF9uYW1lQhAKDl9zZXJpYWxfbnVtYmVyIhUKE0NvbmZpZ3VyYXRpb25GaWx0ZXIiHQoNQ2hhbm5lbEZpbHRlchIMCgRuYW1lGAEgASgJIpMBCgpTb3J0T3B0aW9uEh8KBWZpZWxkGAEgASgOMhAud29ybGQuU29ydEZpZWxkEhIKCmRlc2NlbmRpbmcYAiABKAgSEwoJbWV0cmljX2lkGBQgASgNSAASKAoLbWV0cmljX2tpbmQYFSABKA4yES53b3JsZC5NZXRyaWNLaW5kSABCEQoPbWV0cmljX3NlbGVjdG9yIrQBCg1XYXRjaEJlaGF2aW9yEhgKC21heF9yYXRlX2h6GAEgASgCSACIAQESKgoMbWluX3ByaW9yaXR5GAMgASgOMg8ud29ybGQuUHJpb3JpdHlIAYgBARIiChVrZWVwYWxpdmVfaW50ZXJ2YWxfbXMYBCABKA1IAogBAUIOCgxfbWF4X3JhdGVfaHpCDwoNX21pbl9wcmlvcml0eUIYChZfa2VlcGFsaXZlX2ludGVydmFsX21zIp0BChNMaXN0RW50aXRpZXNSZXF1ZXN0EiMKBmZpbHRlchgCIAEoCzITLndvcmxkLkVudGl0eUZpbHRlchIfCgRzb3J0GAMgAygLMhEud29ybGQuU29ydE9wdGlvbhIsCgliZWhhdmlvdXIYBCABKAsyFC53b3JsZC5XYXRjaEJlaGF2aW9ySACIAQFCDAoKX2JlaGF2aW91ckoECAEQAiI3ChRMaXN0RW50aXRpZXNSZXNwb25zZRIfCghlbnRpdGllcxgBIAMoCzINLndvcmxkLkVudGl0eSJaChNFbnRpdHlDaGFuZ2VSZXF1ZXN0Eh4KB2NoYW5nZXMYASADKAsyDS53b3JsZC5FbnRpdHkSIwoMcmVwbGFjZW1lbnRzGAIgAygLMg0ud29ybGQuRW50aXR5IiEKE0V4cGlyZUVudGl0eVJlcXVlc3QSCgoCaWQYASABKAkiFgoURXhwaXJlRW50aXR5UmVzcG9uc2UiNwoURW50aXR5Q2hhbmdlUmVzcG9uc2USEAoIYWNjZXB0ZWQYASABKAgSDQoFZGVidWcYAiABKAkiUgoRRW50aXR5Q2hhbmdlRXZlbnQSHQoGZW50aXR5GAEgASgLMg0ud29ybGQuRW50aXR5Eh4KAXQYAiABKA4yEy53b3JsZC5FbnRpdHlDaGFuZ2UiPQoRRW50aXR5Q2hhbmdlQmF0Y2gSKAoGZXZlbnRzGAEgAygLMhgud29ybGQuRW50aXR5Q2hhbmdlRXZlbnQiHgoQR2V0RW50aXR5UmVxdWVzdBIKCgJpZBgBIAEoCSIyChFHZXRFbnRpdHlSZXNwb25zZRIdCgZlbnRpdHkYASABKAsyDS53b3JsZC5FbnRpdHkiFQoTR2V0TG9jYWxOb2RlUmVxdWVzdCJGChRHZXRMb2NhbE5vZGVSZXNwb25zZRIdCgZlbnRpdHkYASABKAsyDS53b3JsZC5FbnRpdHkSDwoHbm9kZV9pZBgCIAEoCSIRCg9PYnNlcnZlclJlcXVlc3QicwoNT2JzZXJ2ZXJTdGF0ZRIcCgNnZW8YASABKAsyDy53b3JsZC5HZW9tZXRyeRI0Cgt2aWV3SGlzdG9yeRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIOCgxfdmlld0hpc3RvcnkiRgoOUnVuVGFza1JlcXVlc3QSEAoIZW50aXR5SWQYASABKAkSFQoIcHJpb3JpdHkYAiABKA1IAIgBAUILCglfcHJpb3JpdHkigwEKD1J1blRhc2tSZXNwb25zZRITCgtleGVjdXRpb25JZBgBIAEoCRIhCgZzdGF0dXMYAiABKA4yES53b3JsZC5UYXNrU3RhdHVzEiAKE2h1bWFuUmVhZGFibGVSZWFzb24YAyABKAlIAIgBAUIWChRfaHVtYW5SZWFkYWJsZVJlYXNvbiI6ChBIYXJkUmVzZXRSZXF1ZXN0EhcKCm1pc3Npb25faWQYASABKAlIAIgBAUINCgtfbWlzc2lvbl9pZCITChFIYXJkUmVzZXRSZXNwb25zZSpiCghQcmlvcml0eRIXChNQcmlvcml0eVVuc3BlY2lmaWVkEAASEwoPUHJpb3JpdHlSb3V0aW5lEAESFQoRUHJpb3JpdHlJbW1lZGlhdGUQAhIRCg1Qcmlvcml0eUZsYXNoEAMqjwEKC0duc3NGaXhUeXBlEhMKD0duc3NGaXhUeXBlTm9uZRAAEhEKDUduc3NGaXhUeXBlMkQQARIRCg1HbnNzRml4VHlwZTNEEAISEwoPR25zc0ZpeFR5cGVER1BTEAMSFwoTR25zc0ZpeFR5cGVSdGtGbG9hdBAEEhcKE0duc3NGaXhUeXBlUnRrRml4ZWQQBSrsAQoTTWVkaWFTdHJlYW1Qcm90b2NvbBIiCh5NZWRpYVN0cmVhbVByb3RvY29sVW5zcGVjaWZpZWQQABIdChlNZWRpYVN0cmVhbVByb3RvY29sV2VicnRjEAESGgoWTWVkaWFTdHJlYW1Qcm90b2NvbEhscxACEhwKGE1lZGlhU3RyZWFtUHJvdG9jb2xNanBlZxADEhwKGE1lZGlhU3RyZWFtUHJvdG9jb2xJbWFnZRAEEh0KGU1lZGlhU3RyZWFtUHJvdG9jb2xJZnJhbWUQBRIbChdNZWRpYVN0cmVhbVByb3RvY29sUnRzcBAGKn8KD01lZGlhU3RyZWFtUm9sZRIeChpNZWRpYVN0cmVhbVJvbGVVbnNwZWNpZmllZBAAEhcKE01lZGlhU3RyZWFtUm9sZU1haW4QARIWChJNZWRpYVN0cmVhbVJvbGVTdWIQAhIbChdNZWRpYVN0cmVhbVJvbGVTbmFwc2hvdBADKnoKDFRhc2thYmxlTW9kZRIZChVUYXNrYWJsZU1vZGVFeGNsdXNpdmUQABIZChVUYXNrYWJsZU1vZGVSZWNvbmNpbGUQARIVChFUYXNrYWJsZU1vZGVTcGF3bhACEh0KGVRhc2thYmxlTW9kZVByaW9yaXR5UXVldWUQAyqRAQoSVGFza0V4ZWN1dGlvblN0YXRlEh0KGVRhc2tFeGVjdXRpb25TdGF0ZVBlbmRpbmcQABIdChlUYXNrRXhlY3V0aW9uU3RhdGVSdW5uaW5nEAESHwobVGFza0V4ZWN1dGlvblN0YXRlQ29tcGxldGVkEAISHAoYVGFza0V4ZWN1dGlvblN0YXRlRmFpbGVkEAMqjAIKFkNsYXNzaWZpY2F0aW9uSWRlbnRpdHkSIQodQ2xhc3NpZmljYXRpb25JZGVudGl0eUludmFsaWQQABIhCh1DbGFzc2lmaWNhdGlvbklkZW50aXR5UGVuZGluZxABEiEKHUNsYXNzaWZpY2F0aW9uSWRlbnRpdHlVbmtub3duEAISIAocQ2xhc3NpZmljYXRpb25JZGVudGl0eUZyaWVuZBADEiEKHUNsYXNzaWZpY2F0aW9uSWRlbnRpdHlOZXV0cmFsEAQSIQodQ2xhc3NpZmljYXRpb25JZGVudGl0eUhvc3RpbGUQBRIhCh1DbGFzc2lmaWNhdGlvbklkZW50aXR5U3VzcGVjdBAGKsQCCh1DbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvbhIoCiRDbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvbkludmFsaWQQABIoCiRDbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvblVua25vd24QARImCiJDbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvblNwYWNlEAISJAogQ2xhc3NpZmljYXRpb25CYXR0bGVEaW1lbnNpb25BaXIQAxInCiNDbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvbkdyb3VuZBAEEisKJ0NsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uU2VhU3VyZmFjZRAFEisKJ0NsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uU3Vic3VyZmFjZRAGKvYBCg5OYXZpZ2F0aW9uTW9kZRIdChlOYXZpZ2F0aW9uTW9kZVVuc3BlY2lmaWVkEAASGQoVTmF2aWdhdGlvbk1vZGVQbGFubmVkEAESHAoYTmF2aWdhdGlvbk1vZGVTdGF0aW9uYXJ5EAISGgoWTmF2aWdhdGlvbk1vZGVVbmRlcndheRADEhwKGE5hdmlnYXRpb25Nb2RlQXV0b25vbW91cxAEEhgKFE5hdmlnYXRpb25Nb2RlR3VpZGVkEAUSGwoXTmF2aWdhdGlvbk1vZGVMb2l0ZXJpbmcQBhIbChdOYXZpZ2F0aW9uTW9kZVJldHVybmluZxAHKmwKCkxpbmtTdGF0dXMSGQoVTGlua1N0YXR1c1Vuc3BlY2lmaWVkEAASFwoTTGlua1N0YXR1c0Nvbm5lY3RlZBABEhYKEkxpbmtTdGF0dXNEZWdyYWRlZBACEhIKDkxpbmtTdGF0dXNMb3N0EAMqUwoLRGV2aWNlU3RhdGUSFgoSRGV2aWNlU3RhdGVQZW5kaW5nEAASFQoRRGV2aWNlU3RhdGVBY3RpdmUQARIVChFEZXZpY2VTdGF0ZUZhaWxlZBACKsoBChFDb25maWd1cmFibGVTdGF0ZRIdChlDb25maWd1cmFibGVTdGF0ZUluYWN0aXZlEAASHQoZQ29uZmlndXJhYmxlU3RhdGVTdGFydGluZxABEhsKF0NvbmZpZ3VyYWJsZVN0YXRlQWN0aXZlEAISGwoXQ29uZmlndXJhYmxlU3RhdGVGYWlsZWQQAxIdChlDb25maWd1cmFibGVTdGF0ZUNvbmZsaWN0EAQSHgoaQ29uZmlndXJhYmxlU3RhdGVTY2hlZHVsZWQQBSqeCAoJU29ydEZpZWxkEhgKFFNvcnRGaWVsZFVuc3BlY2lmaWVkEAASEgoOU29ydEZpZWxkTGFiZWwQARIVChFTb3J0RmllbGRQcmlvcml0eRACEhkKFVNvcnRGaWVsZExpZmV0aW1lRnJvbRAKEhoKFlNvcnRGaWVsZExpZmV0aW1lVW50aWwQCxIaChZTb3J0RmllbGRMaWZldGltZUZyZXNoEAwSGAoUU29ydEZpZWxkR2VvTGF0aXR1ZGUQFBIZChVTb3J0RmllbGRHZW9Mb25naXR1ZGUQFRIYChRTb3J0RmllbGRHZW9BbHRpdHVkZRAWEiMKH1NvcnRGaWVsZENsYXNzaWZpY2F0aW9uSWRlbnRpdHkQHhIkCiBTb3J0RmllbGRDbGFzc2lmaWNhdGlvbkRpbWVuc2lvbhAfEhsKF1NvcnRGaWVsZEJlYXJpbmdBemltdXRoEDISHQoZU29ydEZpZWxkQmVhcmluZ0VsZXZhdGlvbhAzEiEKHVNvcnRGaWVsZEFkbWluaXN0cmF0aXZlTGVuZ3RoEEYSIAocU29ydEZpZWxkQWRtaW5pc3RyYXRpdmVXaWR0aBBHEiEKHVNvcnRGaWVsZEFkbWluaXN0cmF0aXZlSGVpZ2h0EEgSIgoeU29ydEZpZWxkQWRtaW5pc3RyYXRpdmVUb25uYWdlEEkSJgoiU29ydEZpZWxkQWRtaW5pc3RyYXRpdmVFbmdpbmVQb3dlchBKEiQKIFNvcnRGaWVsZEFkbWluaXN0cmF0aXZlWWVhckJ1aWx0EEsSFQoRU29ydEZpZWxkTGlua1Jzc2kQWhIUChBTb3J0RmllbGRMaW5rU25yEFsSHAoYU29ydEZpZWxkTGlua0xhc3RMYXRlbmN5EFwSGwoXU29ydEZpZWxkTGlua0F2Z0xhdGVuY3kQXRIYChRTb3J0RmllbGRMaW5rUXVhbGl0eRBeEhkKFVNvcnRGaWVsZExpbmtMYXN0U2VlbhBfEhsKF1NvcnRGaWVsZExpbmtQYWNrZXRSYXRlEGASHwobU29ydEZpZWxkUG93ZXJCYXR0ZXJ5Q2hhcmdlEGQSGQoVU29ydEZpZWxkUG93ZXJWb2x0YWdlEGUSIgoeU29ydEZpZWxkUG93ZXJSZW1haW5pbmdTZWNvbmRzEGYSGQoVU29ydEZpZWxkUG93ZXJDdXJyZW50EGcSHgoaU29ydEZpZWxkUG93ZXJDYXBhY2l0eVVzZWQQaBIZChRTb3J0RmllbGREZXZpY2VTdGF0ZRCCARIZChRTb3J0RmllbGRNZXRyaWNWYWx1ZRCWARIeChlTb3J0RmllbGRNZXRyaWNNZWFzdXJlZEF0EJcBEh4KGVNvcnRGaWVsZE1ldHJpY0FsZXJ0TGV2ZWwQmAEqdQoMRW50aXR5Q2hhbmdlEhcKE0VudGl0eUNoYW5nZUludmFsaWQQABIXChNFbnRpdHlDaGFuZ2VVcGRhdGVkEAESFwoTRW50aXR5Q2hhbmdlRXhwaXJlZBACEhoKFkVudGl0eUNoYW5nZVVub2JzZXJ2ZWQQAyr1CAoPRW50aXR5Q29tcG9uZW50Eh4KGkVudGl0eUNvbXBvbmVudFVuc3BlY2lmaWVkEAASGAoURW50aXR5Q29tcG9uZW50TGFiZWwQAhIdChlFbnRpdHlDb21wb25lbnRDb250cm9sbGVyEAMSGwoXRW50aXR5Q29tcG9uZW50TGlmZXRpbWUQBBIbChdFbnRpdHlDb21wb25lbnRQcmlvcml0eRAFEhgKFEVudGl0eUNvbXBvbmVudExlYXNlEAYSGgoWRW50aXR5Q29tcG9uZW50Um91dGluZxAHEhYKEkVudGl0eUNvbXBvbmVudEdlbxALEhkKFUVudGl0eUNvbXBvbmVudFN5bWJvbBAMEhkKFUVudGl0eUNvbXBvbmVudENhbWVyYRAPEhwKGEVudGl0eUNvbXBvbmVudERldGVjdGlvbhAQEhoKFkVudGl0eUNvbXBvbmVudEJlYXJpbmcQERIYChRFbnRpdHlDb21wb25lbnRUcmFjaxAVEhoKFkVudGl0eUNvbXBvbmVudExvY2F0b3IQFhIbChdFbnRpdHlDb21wb25lbnRUYXNrYWJsZRAXEh0KGUVudGl0eUNvbXBvbmVudEtpbmVtYXRpY3MQGBIYChRFbnRpdHlDb21wb25lbnRTaGFwZRAZEiEKHUVudGl0eUNvbXBvbmVudENsYXNzaWZpY2F0aW9uEBoSHgoaRW50aXR5Q29tcG9uZW50VHJhbnNwb25kZXIQGxIhCh1FbnRpdHlDb21wb25lbnRBZG1pbmlzdHJhdGl2ZRAcEh0KGUVudGl0eUNvbXBvbmVudExvY2FsU2hhcGUQHRIeChpFbnRpdHlDb21wb25lbnRPcmllbnRhdGlvbhAeEhoKFkVudGl0eUNvbXBvbmVudE1pc3Npb24QHxIXChNFbnRpdHlDb21wb25lbnRMaW5rECASGAoURW50aXR5Q29tcG9uZW50UG93ZXIQIRIdChlFbnRpdHlDb21wb25lbnROYXZpZ2F0aW9uECISGgoWRW50aXR5Q29tcG9uZW50Q2FwdHVyZRAjEhkKFUVudGl0eUNvbXBvbmVudE1ldHJpYxAkEhkKFUVudGl0eUNvbXBvbmVudFNlbnNvchAlEhcKE0VudGl0eUNvbXBvbmVudFBvc2UQJhIXChNFbnRpdHlDb21wb25lbnRDaGF0ECcSIAocRW50aXR5Q29tcG9uZW50VGFza0V4ZWN1dGlvbhApEhcKE0VudGl0eUNvbXBvbmVudEduc3MQKhIZChVFbnRpdHlDb21wb25lbnREZXZpY2UQMhIZChVFbnRpdHlDb21wb25lbnRDb25maWcQMxIfChtFbnRpdHlDb21wb25lbnRDb25maWd1cmFibGUQNBIgChxFbnRpdHlDb21wb25lbnRJbnRlcmFjdGl2aXR5EDwSGwoXRW50aXR5Q29tcG9uZW50QXJ0aWZhY3QQPRIdChlFbnRpdHlDb21wb25lbnRUYXJnZXRQb3NlED4qaQoKVGFza1N0YXR1cxIVChFUYXNrU3RhdHVzSW52YWxpZBAAEhUKEVRhc2tTdGF0dXNSdW5uaW5nEAESFwoTVGFza1N0YXR1c0NvbXBsZXRlZBACEhQKEFRhc2tTdGF0dXNGYWlsZWQQAzKtBAoMV29ybGRTZXJ2aWNlEkcKDExpc3RFbnRpdGllcxIaLndvcmxkLkxpc3RFbnRpdGllc1JlcXVlc3QaGy53b3JsZC5MaXN0RW50aXRpZXNSZXNwb25zZRI+CglHZXRFbnRpdHkSFy53b3JsZC5HZXRFbnRpdHlSZXF1ZXN0Ghgud29ybGQuR2V0RW50aXR5UmVzcG9uc2USRwoNV2F0Y2hFbnRpdGllcxIaLndvcmxkLkxpc3RFbnRpdGllc1JlcXVlc3QaGC53b3JsZC5FbnRpdHlDaGFuZ2VFdmVudDABEj8KBFB1c2gSGi53b3JsZC5FbnRpdHlDaGFuZ2VSZXF1ZXN0Ghsud29ybGQuRW50aXR5Q2hhbmdlUmVzcG9uc2USRwoMRXhwaXJlRW50aXR5Ehoud29ybGQuRXhwaXJlRW50aXR5UmVxdWVzdBobLndvcmxkLkV4cGlyZUVudGl0eVJlc3BvbnNlEkcKDEdldExvY2FsTm9kZRIaLndvcmxkLkdldExvY2FsTm9kZVJlcXVlc3QaGy53b3JsZC5HZXRMb2NhbE5vZGVSZXNwb25zZRI4CgdSdW5UYXNrEhUud29ybGQuUnVuVGFza1JlcXVlc3QaFi53b3JsZC5SdW5UYXNrUmVzcG9uc2USPgoJSGFyZFJlc2V0Ehcud29ybGQuSGFyZFJlc2V0UmVxdWVzdBoYLndvcmxkLkhhcmRSZXNldFJlc3BvbnNlQiBaHmdpdGh1Yi5jb20vcHJvamVjdHFhaS9wcm90by9nb2IGcHJvdG8z", [file_geometry, file_google_protobuf_struct, file_google_protobuf_timestamp, file_metrics]);
14
+ fileDesc("Cgt3b3JsZC5wcm90bxIFd29ybGQijRMKBkVudGl0eRIKCgJpZBgBIAEoCRISCgVsYWJlbBgCIAEoCUgAiAEBEioKCmNvbnRyb2xsZXIYAyABKAsyES53b3JsZC5Db250cm9sbGVySAGIAQESJgoIbGlmZXRpbWUYBCABKAsyDy53b3JsZC5MaWZldGltZUgCiAEBEiYKCHByaW9yaXR5GAUgASgOMg8ud29ybGQuUHJpb3JpdHlIA4gBARIgCgVsZWFzZRgGIAEoCzIMLndvcmxkLkxlYXNlSASIAQESJAoHcm91dGluZxgHIAEoCzIOLndvcmxkLlJvdXRpbmdIBYgBARIsCgNnZW8YCyABKAsyGi53b3JsZC5HZW9TcGF0aWFsQ29tcG9uZW50SAaIAQESKwoGc3ltYm9sGAwgASgLMhYud29ybGQuU3ltYm9sQ29tcG9uZW50SAeIAQESKwoGY2FtZXJhGA8gASgLMhYud29ybGQuQ2FtZXJhQ29tcG9uZW50SAiIAQESMQoJZGV0ZWN0aW9uGBAgASgLMhkud29ybGQuRGV0ZWN0aW9uQ29tcG9uZW50SAmIAQESLQoHYmVhcmluZxgRIAEoCzIXLndvcmxkLkJlYXJpbmdDb21wb25lbnRICogBARIpCgV0cmFjaxgVIAEoCzIVLndvcmxkLlRyYWNrQ29tcG9uZW50SAuIAQESLQoHbG9jYXRvchgWIAEoCzIXLndvcmxkLkxvY2F0b3JDb21wb25lbnRIDIgBARIzCgpraW5lbWF0aWNzGBggASgLMhoud29ybGQuS2luZW1hdGljc0NvbXBvbmVudEgNiAEBEiwKBXNoYXBlGBkgASgLMhgud29ybGQuR2VvU2hhcGVDb21wb25lbnRIDogBARI7Cg5jbGFzc2lmaWNhdGlvbhgaIAEoCzIeLndvcmxkLkNsYXNzaWZpY2F0aW9uQ29tcG9uZW50SA+IAQESNQoLdHJhbnNwb25kZXIYGyABKAsyGy53b3JsZC5UcmFuc3BvbmRlckNvbXBvbmVudEgQiAEBEjsKDmFkbWluaXN0cmF0aXZlGBwgASgLMh4ud29ybGQuQWRtaW5pc3RyYXRpdmVDb21wb25lbnRIEYgBARI1CgtvcmllbnRhdGlvbhgeIAEoCzIbLndvcmxkLk9yaWVudGF0aW9uQ29tcG9uZW50SBKIAQESMwoKbmF2aWdhdGlvbhgiIAEoCzIaLndvcmxkLk5hdmlnYXRpb25Db21wb25lbnRIE4gBARIpCgVwb3dlchghIAEoCzIVLndvcmxkLlBvd2VyQ29tcG9uZW50SBSIAQESLQoHY2FwdHVyZRgjIAEoCzIXLndvcmxkLkNhcHR1cmVDb21wb25lbnRIFYgBARInCgRnbnNzGCogASgLMhQud29ybGQuR25zc0NvbXBvbmVudEgWiAEBEisKBmRldmljZRgyIAEoCzIWLndvcmxkLkRldmljZUNvbXBvbmVudEgXiAEBEicKBGxpbmsYICABKAsyFC53b3JsZC5MaW5rQ29tcG9uZW50SBiIAQESJwoEcG9zZRgmIAEoCzIULndvcmxkLlBvc2VDb21wb25lbnRIGYgBARI0Cgt0YXJnZXRfcG9zZRg+IAEoCzIaLndvcmxkLlRhcmdldFBvc2VDb21wb25lbnRIGogBARI0Cgtsb2NhbF9zaGFwZRgdIAEoCzIaLndvcmxkLkxvY2FsU2hhcGVDb21wb25lbnRIG4gBARIrCgZtZXRyaWMYJCABKAsyFi53b3JsZC5NZXRyaWNDb21wb25lbnRIHIgBARIyCgZjb25maWcYMyABKAsyHS53b3JsZC5Db25maWd1cmF0aW9uQ29tcG9uZW50SB2IAQESNwoMY29uZmlndXJhYmxlGDQgASgLMhwud29ybGQuQ29uZmlndXJhYmxlQ29tcG9uZW50SB6IAQESLwoIdGFza2FibGUYFyABKAsyGC53b3JsZC5UYXNrYWJsZUNvbXBvbmVudEgfiAEBEjoKDnRhc2tfZXhlY3V0aW9uGCkgASgLMh0ud29ybGQuVGFza0V4ZWN1dGlvbkNvbXBvbmVudEggiAEBEi0KB21pc3Npb24YHyABKAsyFy53b3JsZC5NaXNzaW9uQ29tcG9uZW50SCGIAQESKwoGc2Vuc29yGCUgASgLMhYud29ybGQuU2Vuc29yQ29tcG9uZW50SCKIAQESOQoNaW50ZXJhY3Rpdml0eRg8IAEoCzIdLndvcmxkLkludGVyYWN0aXZpdHlDb21wb25lbnRII4gBARIvCghhcnRpZmFjdBg9IAEoCzIYLndvcmxkLkFydGlmYWN0Q29tcG9uZW50SCSIAQESJwoEY2hhdBgnIAEoCzIULndvcmxkLkNoYXRDb21wb25lbnRIJYgBARIvCghhc3NlbWJseRgoIAEoCzIYLndvcmxkLkFzc2VtYmx5Q29tcG9uZW50SCaIAQESMAoJbWFwX2xheWVyGD8gASgLMhgud29ybGQuTWFwTGF5ZXJDb21wb25lbnRIJ4gBAUIICgZfbGFiZWxCDQoLX2NvbnRyb2xsZXJCCwoJX2xpZmV0aW1lQgsKCV9wcmlvcml0eUIICgZfbGVhc2VCCgoIX3JvdXRpbmdCBgoEX2dlb0IJCgdfc3ltYm9sQgkKB19jYW1lcmFCDAoKX2RldGVjdGlvbkIKCghfYmVhcmluZ0IICgZfdHJhY2tCCgoIX2xvY2F0b3JCDQoLX2tpbmVtYXRpY3NCCAoGX3NoYXBlQhEKD19jbGFzc2lmaWNhdGlvbkIOCgxfdHJhbnNwb25kZXJCEQoPX2FkbWluaXN0cmF0aXZlQg4KDF9vcmllbnRhdGlvbkINCgtfbmF2aWdhdGlvbkIICgZfcG93ZXJCCgoIX2NhcHR1cmVCBwoFX2duc3NCCQoHX2RldmljZUIHCgVfbGlua0IHCgVfcG9zZUIOCgxfdGFyZ2V0X3Bvc2VCDgoMX2xvY2FsX3NoYXBlQgkKB19tZXRyaWNCCQoHX2NvbmZpZ0IPCg1fY29uZmlndXJhYmxlQgsKCV90YXNrYWJsZUIRCg9fdGFza19leGVjdXRpb25CCgoIX21pc3Npb25CCQoHX3NlbnNvckIQCg5faW50ZXJhY3Rpdml0eUILCglfYXJ0aWZhY3RCBwoFX2NoYXRCCwoJX2Fzc2VtYmx5QgwKCl9tYXBfbGF5ZXJKBAgIEAlKBAgJEApKBAgKEAsiYAoKQ29udHJvbGxlchIPCgJpZBgBIAEoCUgAiAEBEhEKBG5vZGUYAiABKAlIAYgBARITCgZvcmlnaW4YAyABKAlIAogBAUIFCgNfaWRCBwoFX25vZGVCCQoHX29yaWdpbiJZCgVMZWFzZRISCgpjb250cm9sbGVyGAEgASgJEjAKB2V4cGlyZXMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCCgoIX2V4cGlyZXMirwIKCExpZmV0aW1lEi0KBGZyb20YASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESLgoFdW50aWwYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESLgoFZnJlc2gYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESMwoKY29tcG9uZW50cxgEIAMoCzIfLndvcmxkLkxpZmV0aW1lLkNvbXBvbmVudHNFbnRyeRpCCg9Db21wb25lbnRzRW50cnkSCwoDa2V5GAEgASgFEh4KBXZhbHVlGAIgASgLMg8ud29ybGQuTGlmZXRpbWU6AjgBQgcKBV9mcm9tQggKBl91bnRpbEIICgZfZnJlc2giFwoHQ2hhbm5lbBIMCgRuYW1lGAEgASgJIisKB1JvdXRpbmcSIAoIY2hhbm5lbHMYASADKAsyDi53b3JsZC5DaGFubmVsIp8BChNHZW9TcGF0aWFsQ29tcG9uZW50EhEKCWxvbmdpdHVkZRgBIAEoARIQCghsYXRpdHVkZRgCIAEoARIVCghhbHRpdHVkZRgDIAEoAUgAiAEBEjAKCmNvdmFyaWFuY2UYBCABKAsyFy53b3JsZC5Db3ZhcmlhbmNlTWF0cml4SAGIAQFCCwoJX2FsdGl0dWRlQg0KC19jb3ZhcmlhbmNlIoUCCg1HbnNzQ29tcG9uZW50EikKCGZpeF90eXBlGAEgASgOMhIud29ybGQuR25zc0ZpeFR5cGVIAIgBARIfChJzYXRlbGxpdGVzX3Zpc2libGUYAiABKA1IAYgBARIcCg9zYXRlbGxpdGVzX3VzZWQYAyABKA1IAogBARIRCgRoZG9wGAQgASgCSAOIAQESEQoEdmRvcBgFIAEoAkgEiAEBEhEKBHBkb3AYBiABKAJIBYgBAUILCglfZml4X3R5cGVCFQoTX3NhdGVsbGl0ZXNfdmlzaWJsZUISChBfc2F0ZWxsaXRlc191c2VkQgcKBV9oZG9wQgcKBV92ZG9wQgcKBV9wZG9wIiYKD1N5bWJvbENvbXBvbmVudBITCgttaWxTdGQyNTI1QxgBIAEoCSJiChZJbnRlcmFjdGl2aXR5Q29tcG9uZW50EhEKBGljb24YASABKAlIAIgBARIaCg1yZWZlcmVuY2VfdXJsGAMgASgJSAGIAQFCBwoFX2ljb25CEAoOX3JlZmVyZW5jZV91cmwiygEKC01lZGlhU3RyZWFtEg0KBWxhYmVsGAEgASgJEgsKA3VybBgCIAEoCRIsCghwcm90b2NvbBgDIAEoDjIaLndvcmxkLk1lZGlhU3RyZWFtUHJvdG9jb2wSJAoEcm9sZRgJIAEoDjIWLndvcmxkLk1lZGlhU3RyZWFtUm9sZRINCgVjb2RlYxgKIAEoCRISCgV3aWR0aBgLIAEoBUgAiAEBEhMKBmhlaWdodBgMIAEoBUgBiAEBQggKBl93aWR0aEIJCgdfaGVpZ2h0Io4CCg9DYW1lcmFDb21wb25lbnQSIwoHc3RyZWFtcxgBIAMoCzISLndvcmxkLk1lZGlhU3RyZWFtEhgKC2ZvY2FsX3BvaW50GAIgASgJSACIAQESEAoDZm92GAMgASgBSAGIAQESFgoJcmFuZ2VfbWluGAQgASgBSAKIAQESFgoJcmFuZ2VfbWF4GAUgASgBSAOIAQESFQoIZm92X3dpZGUYBiABKAFIBIgBARIVCghmb3ZfdGVsZRgHIAEoAUgFiAEBQg4KDF9mb2NhbF9wb2ludEIGCgRfZm92QgwKCl9yYW5nZV9taW5CDAoKX3JhbmdlX21heEILCglfZm92X3dpZGVCCwoJX2Zvdl90ZWxlIh8KEEFydGlmYWN0TG9jYXRpb24SCwoDdXJsGAEgASgJIqgBChFBcnRpZmFjdENvbXBvbmVudBIKCgJpZBgBIAEoCRIUCgxjb250ZW50X3R5cGUYAiABKAkSKQoIbG9jYXRpb24YAyADKAsyFy53b3JsZC5BcnRpZmFjdExvY2F0aW9uEhcKCnNpemVfYnl0ZXMYBCABKANIAIgBARITCgZzaGEyNTYYBSABKAlIAYgBAUINCgtfc2l6ZV9ieXRlc0IJCgdfc2hhMjU2ItIBChJEZXRlY3Rpb25Db21wb25lbnQSHQoQZGV0ZWN0b3JFbnRpdHlJZBgBIAEoCUgAiAEBEhsKDmNsYXNzaWZpY2F0aW9uGAIgASgJSAGIAQESNQoMbGFzdE1lYXN1cmVkGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEhAKCGV2aWRlbmNlGAQgAygJQhMKEV9kZXRlY3RvckVudGl0eUlkQhEKD19jbGFzc2lmaWNhdGlvbkIPCg1fbGFzdE1lYXN1cmVkIloKEEJlYXJpbmdDb21wb25lbnQSFAoHYXppbXV0aBgBIAEoAUgAiAEBEhYKCWVsZXZhdGlvbhgCIAEoAUgBiAEBQgoKCF9hemltdXRoQgwKCl9lbGV2YXRpb24iIwoPU2Vuc29yQ29tcG9uZW50EhAKCGNvdmVyYWdlGAIgAygJIjgKClF1YXRlcm5pb24SCQoBeBgBIAEoARIJCgF5GAIgASgBEgkKAXoYAyABKAESCQoBdxgEIAEoASKuAQoQQ292YXJpYW5jZU1hdHJpeBIQCgNteHgYASABKAFIAIgBARIQCgNteHkYAiABKAFIAYgBARIQCgNteHoYAyABKAFIAogBARIQCgNteXkYBCABKAFIA4gBARIQCgNteXoYBSABKAFIBIgBARIQCgNtenoYBiABKAFIBYgBAUIGCgRfbXh4QgYKBF9teHlCBgoEX214ekIGCgRfbXl5QgYKBF9teXpCBgoEX216eiLMAQoPQ2FydGVzaWFuT2Zmc2V0Eg4KBmVhc3RfbRgBIAEoARIPCgdub3J0aF9tGAIgASgBEhEKBHVwX20YAyABKAFIAIgBARIwCgpjb3ZhcmlhbmNlGAQgASgLMhcud29ybGQuQ292YXJpYW5jZU1hdHJpeEgBiAEBEisKC29yaWVudGF0aW9uGAUgASgLMhEud29ybGQuUXVhdGVybmlvbkgCiAEBQgcKBV91cF9tQg0KC19jb3ZhcmlhbmNlQg4KDF9vcmllbnRhdGlvbiKCAwoLUG9sYXJPZmZzZXQSDwoHYXppbXV0aBgBIAEoARIWCgllbGV2YXRpb24YAiABKAFIAIgBARISCgVyYW5nZRgDIAEoAUgBiAEBEjQKCmNvdmFyaWFuY2UYBCABKAsyFy53b3JsZC5Db3ZhcmlhbmNlTWF0cml4QgIYAUgCiAEBEh4KEWF6aW11dGhfZXJyb3JfZGVnGAogASgBSAOIAQESIAoTZWxldmF0aW9uX2Vycm9yX2RlZxgLIAEoAUgEiAEBEhoKDXJhbmdlX2Vycm9yX20YDCABKAFIBYgBARIrCgtvcmllbnRhdGlvbhgFIAEoCzIRLndvcmxkLlF1YXRlcm5pb25IBogBAUIMCgpfZWxldmF0aW9uQggKBl9yYW5nZUINCgtfY292YXJpYW5jZUIUChJfYXppbXV0aF9lcnJvcl9kZWdCFgoUX2VsZXZhdGlvbl9lcnJvcl9kZWdCEAoOX3JhbmdlX2Vycm9yX21CDgoMX29yaWVudGF0aW9uInsKDVBvc2VDb21wb25lbnQSDgoGcGFyZW50GAEgASgJEisKCWNhcnRlc2lhbhgCIAEoCzIWLndvcmxkLkNhcnRlc2lhbk9mZnNldEgAEiMKBXBvbGFyGAMgASgLMhIud29ybGQuUG9sYXJPZmZzZXRIAEIICgZvZmZzZXQicQoTVGFyZ2V0UG9zZUNvbXBvbmVudBIrCgljYXJ0ZXNpYW4YASABKAsyFi53b3JsZC5DYXJ0ZXNpYW5PZmZzZXRIABIjCgVwb2xhchgCIAEoCzISLndvcmxkLlBvbGFyT2Zmc2V0SABCCAoGb2Zmc2V0IkoKD0FuZ3VsYXJWZWxvY2l0eRIRCglyb2xsX3JhdGUYASABKAESEgoKcGl0Y2hfcmF0ZRgCIAEoARIQCgh5YXdfcmF0ZRgDIAEoASJ/ChRPcmllbnRhdGlvbkNvbXBvbmVudBImCgtvcmllbnRhdGlvbhgBIAEoCzIRLndvcmxkLlF1YXRlcm5pb24SMAoKY292YXJpYW5jZRgCIAEoCzIXLndvcmxkLkNvdmFyaWFuY2VNYXRyaXhIAIgBAUINCgtfY292YXJpYW5jZSKQAQoOVHJhY2tDb21wb25lbnQSFAoHdHJhY2tlchgBIAEoCUgAiAEBEhQKB2hpc3RvcnkYAiABKAlIAYgBARIXCgpwcmVkaWN0aW9uGAMgASgJSAKIAQESEgoKZGV0ZWN0aW9ucxgEIAMoCUIKCghfdHJhY2tlckIKCghfaGlzdG9yeUINCgtfcHJlZGljdGlvbiIrChBMb2NhdG9yQ29tcG9uZW50EhcKD2xvY2F0ZWRFbnRpdHlJZBgBIAEoCSI1Cg9UYXNrYWJsZUNvbnRleHQSFQoIZW50aXR5SWQYASABKAlIAIgBAUILCglfZW50aXR5SWQiNgoQVGFza2FibGVBc3NpZ25lZRIVCghlbnRpdHlJZBgBIAEoCUgAiAEBQgsKCV9lbnRpdHlJZCKjAQoOVGFza2FibGVUYXJnZXQSKAoGZmlsdGVyGAEgASgLMhMud29ybGQuRW50aXR5RmlsdGVySACIAQESDgoGd2l0aGluGAIgAygJEhgKC21heF90YXJnZXRzGAMgASgNSAGIAQESFQoIcG9zaXRpb24YBCABKAhIAogBAUIJCgdfZmlsdGVyQg4KDF9tYXhfdGFyZ2V0c0ILCglfcG9zaXRpb24iwgMKEVRhc2thYmxlQ29tcG9uZW50EhUKCHByaW9yaXR5GAEgASgNSACIAQESEgoFbGFiZWwYAiABKAlIAYgBARInCgdjb250ZXh0GAMgAygLMhYud29ybGQuVGFza2FibGVDb250ZXh0EikKCGFzc2lnbmVlGAQgAygLMhcud29ybGQuVGFza2FibGVBc3NpZ25lZRInCgZzY2hlbWEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EiEKBG1vZGUYBiABKA4yEy53b3JsZC5UYXNrYWJsZU1vZGUSKgoGdGFyZ2V0GAcgASgLMhUud29ybGQuVGFza2FibGVUYXJnZXRIAogBARIRCgRpY29uGAggASgJSAOIAQESEwoGZWZmZWN0GAkgASgJSASIAQESFQoIZ3JvdXBpbmcYCiABKAlIBYgBARIeChFncm91cGluZ19wcmlvcml0eRgLIAEoDUgGiAEBQgsKCV9wcmlvcml0eUIICgZfbGFiZWxCCQoHX3RhcmdldEIHCgVfaWNvbkIJCgdfZWZmZWN0QgsKCV9ncm91cGluZ0IUChJfZ3JvdXBpbmdfcHJpb3JpdHkiWgoTVGFza0V4ZWN1dGlvblRhcmdldBIOCgZlbnRpdHkYASADKAkSJgoIcG9zaXRpb24YAiABKAsyDy53b3JsZC5HZW9tZXRyeUgAiAEBQgsKCV9wb3NpdGlvbiKRAgoWVGFza0V4ZWN1dGlvbkNvbXBvbmVudBIMCgR0YXNrGAEgASgJEjAKCnBhcmFtZXRlcnMYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESKAoFc3RhdGUYAyABKA4yGS53b3JsZC5UYXNrRXhlY3V0aW9uU3RhdGUSEwoGcmVhc29uGAQgASgJSAGIAQESFQoIcHJpb3JpdHkYBSABKA1IAogBARIvCgZ0YXJnZXQYBiABKAsyGi53b3JsZC5UYXNrRXhlY3V0aW9uVGFyZ2V0SAOIAQFCDQoLX3BhcmFtZXRlcnNCCQoHX3JlYXNvbkILCglfcHJpb3JpdHlCCQoHX3RhcmdldCKiAQoNS2luZW1hdGljc0VudRIRCgRlYXN0GAEgASgBSACIAQESEgoFbm9ydGgYAiABKAFIAYgBARIPCgJ1cBgDIAEoAUgCiAEBEjAKCmNvdmFyaWFuY2UYBCABKAsyFy53b3JsZC5Db3ZhcmlhbmNlTWF0cml4SAOIAQFCBwoFX2Vhc3RCCAoGX25vcnRoQgUKA191cEINCgtfY292YXJpYW5jZSLvAQoTS2luZW1hdGljc0NvbXBvbmVudBIuCgt2ZWxvY2l0eUVudRgBIAEoCzIULndvcmxkLktpbmVtYXRpY3NFbnVIAIgBARIyCg9hY2NlbGVyYXRpb25FbnUYAiABKAsyFC53b3JsZC5LaW5lbWF0aWNzRW51SAGIAQESOAoTYW5ndWxhclZlbG9jaXR5Qm9keRgDIAEoCzIWLndvcmxkLkFuZ3VsYXJWZWxvY2l0eUgCiAEBQg4KDF92ZWxvY2l0eUVudUISChBfYWNjZWxlcmF0aW9uRW51QhYKFF9hbmd1bGFyVmVsb2NpdHlCb2R5IkIKCEdlb21ldHJ5Eg8KA3drYhgBIAEoDEICGAESJQoGcGxhbmFyGAIgASgLMhUud29ybGQuUGxhbmFyR2VvbWV0cnkiSAoRR2VvU2hhcGVDb21wb25lbnQSJgoIZ2VvbWV0cnkYASABKAsyDy53b3JsZC5HZW9tZXRyeUgAiAEBQgsKCV9nZW9tZXRyeSJkChNMb2NhbFNoYXBlQ29tcG9uZW50EhMKC3JlbGF0aXZlX3RvGAIgASgJEisKCGdlb21ldHJ5GAEgASgLMhQud29ybGQuTG9jYWxHZW9tZXRyeUgAiAEBQgsKCV9nZW9tZXRyeSKoAQoXQ2xhc3NpZmljYXRpb25Db21wb25lbnQSPAoJZGltZW5zaW9uGAEgASgOMiQud29ybGQuQ2xhc3NpZmljYXRpb25CYXR0bGVEaW1lbnNpb25IAIgBARI0CghpZGVudGl0eRgCIAEoDjIdLndvcmxkLkNsYXNzaWZpY2F0aW9uSWRlbnRpdHlIAYgBAUIMCgpfZGltZW5zaW9uQgsKCV9pZGVudGl0eSKUAQoOVHJhbnNwb25kZXJBSVMSEQoEbW1zaRgBIAEoDUgAiAEBEhAKA2ltbxgCIAEoDUgBiAEBEhUKCGNhbGxzaWduGAMgASgJSAKIAQESGAoLdmVzc2VsX25hbWUYBCABKAlIA4gBAUIHCgVfbW1zaUIGCgRfaW1vQgsKCV9jYWxsc2lnbkIOCgxfdmVzc2VsX25hbWUiYwoPVHJhbnNwb25kZXJBRFNCEhkKDGljYW9fYWRkcmVzcxgBIAEoDUgAiAEBEhYKCWZsaWdodF9pZBgCIAEoCUgBiAEBQg8KDV9pY2FvX2FkZHJlc3NCDAoKX2ZsaWdodF9pZCJ7ChRUcmFuc3BvbmRlckNvbXBvbmVudBInCgNhaXMYASABKAsyFS53b3JsZC5UcmFuc3BvbmRlckFJU0gAiAEBEikKBGFkc2IYAiABKAsyFi53b3JsZC5UcmFuc3BvbmRlckFEU0JIAYgBAUIGCgRfYWlzQgcKBV9hZHNiIqEDChdBZG1pbmlzdHJhdGl2ZUNvbXBvbmVudBIPCgJpZBgBIAEoCUgAiAEBEhEKBGZsYWcYAiABKAlIAYgBARISCgVvd25lchgDIAEoCUgCiAEBEhkKDG1hbnVmYWN0dXJlchgEIAEoCUgDiAEBEhIKBW1vZGVsGAUgASgJSASIAQESFwoKeWVhcl9idWlsdBgGIAEoDUgFiAEBEhUKCGxlbmd0aF9tGAcgASgCSAaIAQESFAoHd2lkdGhfbRgKIAEoAkgHiAEBEhUKCGhlaWdodF9tGAsgASgCSAiIAQESFwoKdG9ubmFnZV9ndBgIIAEoAkgJiAEBEhwKD2VuZ2luZV9wb3dlcl9rdxgJIAEoAkgKiAEBQgUKA19pZEIHCgVfZmxhZ0IICgZfb3duZXJCDwoNX21hbnVmYWN0dXJlckIICgZfbW9kZWxCDQoLX3llYXJfYnVpbHRCCwoJX2xlbmd0aF9tQgoKCF93aWR0aF9tQgsKCV9oZWlnaHRfbUINCgtfdG9ubmFnZV9ndEISChBfZW5naW5lX3Bvd2VyX2t3IvABChNOYXZpZ2F0aW9uQ29tcG9uZW50EigKBG1vZGUYASABKA4yFS53b3JsZC5OYXZpZ2F0aW9uTW9kZUgAiAEBEhIKBWFybWVkGAIgASgISAGIAQESFgoJZW1lcmdlbmN5GAMgASgISAKIAQESHQoQd2F5cG9pbnRfY3VycmVudBgEIAEoDUgDiAEBEhsKDndheXBvaW50X3RvdGFsGAUgASgNSASIAQFCBwoFX21vZGVCCAoGX2FybWVkQgwKCl9lbWVyZ2VuY3lCEwoRX3dheXBvaW50X2N1cnJlbnRCEQoPX3dheXBvaW50X3RvdGFsIq0BChBNaXNzaW9uQ29tcG9uZW50Eg8KB21lbWJlcnMYASADKAkSGAoLZGVzY3JpcHRpb24YAiABKAlIAIgBARIYCgtkZXN0aW5hdGlvbhgDIAEoCUgBiAEBEiwKA2V0YRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBAUIOCgxfZGVzY3JpcHRpb25CDgoMX2Rlc3RpbmF0aW9uQgYKBF9ldGEirAQKDUxpbmtDb21wb25lbnQSJgoGc3RhdHVzGAEgASgOMhEud29ybGQuTGlua1N0YXR1c0gAiAEBEhUKCHJzc2lfZGJtGAIgASgRSAGIAQESEwoGc25yX2RiGAMgASgRSAKIAQESEAoDdmlhGAUgASgJSAOIAQESHAoPbGFzdF9sYXRlbmN5X21zGAYgASgNSASIAQESGwoOYXZnX2xhdGVuY3lfbXMYByABKA1IBYgBARIyCglsYXN0X3NlZW4YCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAaIAQESIQoUbGlua19xdWFsaXR5X3BlcmNlbnQYCSABKA1IB4gBARIYCgt0eF9wb3dlcl9tdxgKIAEoDUgIiAEBEhsKDmFjdGl2ZV9hbnRlbm5hGAsgASgNSAmIAQESFAoHcmZfbW9kZRgMIAEoCUgKiAEBEhsKDnBhY2tldF9yYXRlX2h6GA0gASgNSAuIAQFCCQoHX3N0YXR1c0ILCglfcnNzaV9kYm1CCQoHX3Nucl9kYkIGCgRfdmlhQhIKEF9sYXN0X2xhdGVuY3lfbXNCEQoPX2F2Z19sYXRlbmN5X21zQgwKCl9sYXN0X3NlZW5CFwoVX2xpbmtfcXVhbGl0eV9wZXJjZW50Qg4KDF90eF9wb3dlcl9td0IRCg9fYWN0aXZlX2FudGVubmFCCgoIX3JmX21vZGVCEQoPX3BhY2tldF9yYXRlX2h6Iv0BChBDYXB0dXJlQ29tcG9uZW50EhQKB3BheWxvYWQYASABKAxIAIgBARIRCgRwb3J0GAIgASgNSAGIAQESGQoMY29udGVudF90eXBlGAMgASgJSAKIAQESGAoLY2FwdHVyZWRfYnkYBCABKAlIA4gBARI0CgtjYXB0dXJlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIPCgdjb250ZW50GAYgAygJQgoKCF9wYXlsb2FkQgcKBV9wb3J0Qg8KDV9jb250ZW50X3R5cGVCDgoMX2NhcHR1cmVkX2J5Qg4KDF9jYXB0dXJlZF9hdCKIAgoOUG93ZXJDb21wb25lbnQSJQoYYmF0dGVyeV9jaGFyZ2VfcmVtYWluaW5nGAEgASgCSACIAQESFAoHdm9sdGFnZRgCIAEoAkgBiAEBEh4KEXJlbWFpbmluZ19zZWNvbmRzGAMgASgNSAKIAQESFgoJY3VycmVudF9hGAQgASgCSAOIAQESHgoRY2FwYWNpdHlfdXNlZF9tYWgYBSABKAJIBIgBAUIbChlfYmF0dGVyeV9jaGFyZ2VfcmVtYWluaW5nQgoKCF92b2x0YWdlQhQKEl9yZW1haW5pbmdfc2Vjb25kc0IMCgpfY3VycmVudF9hQhQKEl9jYXBhY2l0eV91c2VkX21haCIxChFEZXZpY2VDbGFzc09wdGlvbhINCgVjbGFzcxgBIAEoCRINCgVsYWJlbBgCIAEoCSLqAgoVQ29uZmlndXJhYmxlQ29tcG9uZW50EicKBnNjaGVtYRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSJgoFdmFsdWUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EicKBXN0YXRlGAMgASgOMhgud29ybGQuQ29uZmlndXJhYmxlU3RhdGUSEgoFZXJyb3IYBCABKAlIAIgBARISCgVsYWJlbBgFIAEoCUgBiAEBEhcKD2FwcGxpZWRfdmVyc2lvbhgGIAEoBBI6ChhzdXBwb3J0ZWRfZGV2aWNlX2NsYXNzZXMYByADKAsyGC53b3JsZC5EZXZpY2VDbGFzc09wdGlvbhI1CgxzY2hlZHVsZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCCAoGX2Vycm9yQggKBl9sYWJlbEIPCg1fc2NoZWR1bGVkX2F0IpQFCg9EZXZpY2VDb21wb25lbnQSEwoGcGFyZW50GAEgASgJSACIAQESEwoLY29tcG9zaXRpb24YAiADKAkSHwoSdW5pcXVlX2hhcmR3YXJlX2lkGAQgASgJSAGIAQESIQoFc3RhdGUYBiABKA4yEi53b3JsZC5EZXZpY2VTdGF0ZRISCgVlcnJvchgHIAEoCUgCiAEBEhIKBWNsYXNzGAogASgJSAOIAQESFQoIY2F0ZWdvcnkYDSABKAlIBIgBARIkCgRub2RlGBQgASgLMhEud29ybGQuTm9kZURldmljZUgFiAEBEiIKA3VzYhgVIAEoCzIQLndvcmxkLlVzYkRldmljZUgGiAEBEiAKAmlwGBYgASgLMg8ud29ybGQuSXBEZXZpY2VIB4gBARIoCgZzZXJpYWwYFyABKAsyEy53b3JsZC5TZXJpYWxEZXZpY2VICIgBARIsCghldGhlcm5ldBgYIAEoCzIVLndvcmxkLkV0aGVybmV0RGV2aWNlSAmIAQESJgoFbHB3YW4YGSABKAsyEi53b3JsZC5MUFdBTkRldmljZUgKiAEBEjAKCm1lc2h0YXN0aWMYGiABKAsyFy53b3JsZC5NZXNodGFzdGljRGV2aWNlSAuIAQESIgoDYmxlGBsgASgLMhAud29ybGQuQmxlRGV2aWNlSAyIAQFCCQoHX3BhcmVudEIVChNfdW5pcXVlX2hhcmR3YXJlX2lkQggKBl9lcnJvckIICgZfY2xhc3NCCwoJX2NhdGVnb3J5QgcKBV9ub2RlQgYKBF91c2JCBQoDX2lwQgkKB19zZXJpYWxCCwoJX2V0aGVybmV0QggKBl9scHdhbkINCgtfbWVzaHRhc3RpY0IGCgRfYmxlIm0KCk1pc3Npb25LaXQSLwoHbGF5b3V0cxgBIAMoCzIeLndvcmxkLk1pc3Npb25LaXQuTGF5b3V0c0VudHJ5Gi4KDExheW91dHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIt0CCgpOb2RlRGV2aWNlEhUKCGhvc3RuYW1lGAEgASgJSACIAQESDwoCb3MYAiABKAlIAYgBARIRCgRhcmNoGAMgASgJSAKIAQESFAoHbnVtX2NwdRgEIAEoDUgDiAEBEhcKCm9zX3ZlcnNpb24YBSABKAlIBIgBARIbCg5oeWRyaXNfdmVyc2lvbhgGIAEoCUgFiAEBEiQKF2h5ZHJpc191cGRhdGVfYXZhaWxhYmxlGAcgASgJSAaIAQESKwoLbWlzc2lvbl9raXQYCCABKAsyES53b3JsZC5NaXNzaW9uS2l0SAeIAQFCCwoJX2hvc3RuYW1lQgUKA19vc0IHCgVfYXJjaEIKCghfbnVtX2NwdUINCgtfb3NfdmVyc2lvbkIRCg9faHlkcmlzX3ZlcnNpb25CGgoYX2h5ZHJpc191cGRhdGVfYXZhaWxhYmxlQg4KDF9taXNzaW9uX2tpdCL5AgoJVXNiRGV2aWNlEhYKCXZlbmRvcl9pZBgBIAEoDUgAiAEBEhcKCnByb2R1Y3RfaWQYAiABKA1IAYgBARIZCgxkZXZpY2VfY2xhc3MYAyABKA1IAogBARIcCg9kZXZpY2Vfc3ViY2xhc3MYBCABKA1IA4gBARIcCg9kZXZpY2VfcHJvdG9jb2wYBSABKA1IBIgBARIeChFtYW51ZmFjdHVyZXJfbmFtZRgGIAEoCUgFiAEBEhkKDHByb2R1Y3RfbmFtZRgHIAEoCUgGiAEBEhoKDXNlcmlhbF9udW1iZXIYCCABKAlIB4gBAUIMCgpfdmVuZG9yX2lkQg0KC19wcm9kdWN0X2lkQg8KDV9kZXZpY2VfY2xhc3NCEgoQX2RldmljZV9zdWJjbGFzc0ISChBfZGV2aWNlX3Byb3RvY29sQhQKEl9tYW51ZmFjdHVyZXJfbmFtZUIPCg1fcHJvZHVjdF9uYW1lQhAKDl9zZXJpYWxfbnVtYmVyIkIKCElwRGV2aWNlEhEKBGhvc3QYASABKAlIAIgBARIRCgRwb3J0GAIgASgNSAGIAQFCBwoFX2hvc3RCBwoFX3BvcnQiWgoORXRoZXJuZXREZXZpY2USGAoLbWFjX2FkZHJlc3MYASABKAlIAIgBARITCgZ2ZW5kb3IYAiABKAlIAYgBAUIOCgxfbWFjX2FkZHJlc3NCCQoHX3ZlbmRvciJQCgxTZXJpYWxEZXZpY2USEQoEcGF0aBgBIAEoCUgAiAEBEhYKCWJhdWRfcmF0ZRgCIAEoDUgBiAEBQgcKBV9wYXRoQgwKCl9iYXVkX3JhdGUi3AEKEE1lc2h0YXN0aWNEZXZpY2USFQoIbm9kZV9udW0YASABKA1IAIgBARIWCglsb25nX25hbWUYAiABKAlIAYgBARIXCgpzaG9ydF9uYW1lGAMgASgJSAKIAQESGwoOaGFyZHdhcmVfbW9kZWwYBCABKAlIA4gBARIXCgpwdWJsaWNfa2V5GAUgASgMSASIAQFCCwoJX25vZGVfbnVtQgwKCl9sb25nX25hbWVCDQoLX3Nob3J0X25hbWVCEQoPX2hhcmR3YXJlX21vZGVsQg0KC19wdWJsaWNfa2V5IkkKC0xQV0FORGV2aWNlEhAKA2V1aRgBIAEoCUgAiAEBEhQKB2FkZHJlc3MYAiABKAlIAYgBAUIGCgRfZXVpQgoKCF9hZGRyZXNzImAKCUJsZURldmljZRIUCgdhZGRyZXNzGAEgASgJSACIAQESEQoEbmFtZRgCIAEoCUgBiAEBEhUKDXNlcnZpY2VfdXVpZHMYBCADKAlCCgoIX2FkZHJlc3NCBwoFX25hbWUiUQoWQ29uZmlndXJhdGlvbkNvbXBvbmVudBImCgV2YWx1ZRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSDwoHdmVyc2lvbhgFIAEoBCKgAQoNQ2hhdENvbXBvbmVudBITCgZzZW5kZXIYASABKAlIAIgBARIPCgJ0bxgDIAEoCUgBiAEBEg8KB21lc3NhZ2UYBCABKAkSFQoIcmVwbHlfdG8YBSABKAlIAogBARIVCghyZWFjdGlvbhgGIAEoCEgDiAEBQgkKB19zZW5kZXJCBQoDX3RvQgsKCV9yZXBseV90b0ILCglfcmVhY3Rpb24iRAoRQXNzZW1ibHlDb21wb25lbnQSEwoGcGFyZW50GAEgASgJSACIAQESDwoHb3V0bGluZRgCIAMoCUIJCgdfcGFyZW50IoUCChFNYXBMYXllckNvbXBvbmVudBIPCgd6X2luZGV4GAEgASgFEg8KB29wYWNpdHkYAiABKAISLgoFdGlsZXMYCiABKAsyHS53b3JsZC5NYXBMYXllckNvbXBvbmVudC5UaWxlSAASLwoFaW1hZ2UYCyABKAsyHi53b3JsZC5NYXBMYXllckNvbXBvbmVudC5JbWFnZUgAGhMKBFRpbGUSCwoDdXJsGAEgASgJGk4KBUltYWdlEgsKA3VybBgBIAEoCRIMCgR3ZXN0GAIgASgBEg0KBXNvdXRoGAMgASgBEgwKBGVhc3QYBCABKAESDQoFbm9ydGgYBSABKAFCCAoGc291cmNlItUECgxFbnRpdHlGaWx0ZXISDwoCaWQYASABKAlIAIgBARISCgVsYWJlbBgCIAEoCUgBiAEBEiIKA2dlbxgDIAEoCzIQLndvcmxkLkdlb0ZpbHRlckgCiAEBEiwKCHRhc2thYmxlGAQgASgLMhUud29ybGQuVGFza2FibGVGaWx0ZXJIA4gBARIRCgljb21wb25lbnQYBSADKA0SMAoKY29udHJvbGxlchgHIAEoCzIXLndvcmxkLkNvbnRyb2xsZXJGaWx0ZXJIBIgBARImCgV0cmFjaxgIIAEoCzISLndvcmxkLlRyYWNrRmlsdGVySAWIAQESKgoHbWlzc2lvbhgJIAEoCzIULndvcmxkLk1pc3Npb25GaWx0ZXJIBogBARIqCgdjaGFubmVsGAogASgLMhQud29ybGQuQ2hhbm5lbEZpbHRlckgHiAEBEigKBmRldmljZRgyIAEoCzITLndvcmxkLkRldmljZUZpbHRlckgIiAEBEi8KBmNvbmZpZxgzIAEoCzIaLndvcmxkLkNvbmZpZ3VyYXRpb25GaWx0ZXJICYgBARIfCgJvchhkIAMoCzITLndvcmxkLkVudGl0eUZpbHRlchIgCgNub3QYZSABKAsyEy53b3JsZC5FbnRpdHlGaWx0ZXJCBQoDX2lkQggKBl9sYWJlbEIGCgRfZ2VvQgsKCV90YXNrYWJsZUINCgtfY29udHJvbGxlckIICgZfdHJhY2tCCgoIX21pc3Npb25CCgoIX2NoYW5uZWxCCQoHX2RldmljZUIJCgdfY29uZmlnIioKEENvbnRyb2xsZXJGaWx0ZXISDwoCaWQYASABKAlIAIgBAUIFCgNfaWQiLwoLVHJhY2tGaWx0ZXISFAoHdHJhY2tlchgBIAEoCUgAiAEBQgoKCF90cmFja2VyIl0KDU1pc3Npb25GaWx0ZXISFwoKbWlzc2lvbl9pZBgBIAEoCUgAiAEBEhYKCW1lbWJlcl9pZBgCIAEoCUgBiAEBQg0KC19taXNzaW9uX2lkQgwKCl9tZW1iZXJfaWQihwEKDlRhc2thYmxlRmlsdGVyEiwKB2NvbnRleHQYASABKAsyFi53b3JsZC5UYXNrYWJsZUNvbnRleHRIAIgBARIuCghhc3NpZ25lZRgCIAEoCzIXLndvcmxkLlRhc2thYmxlQXNzaWduZWVIAYgBAUIKCghfY29udGV4dEILCglfYXNzaWduZWUiTgoJR2VvRmlsdGVyEiMKCGdlb21ldHJ5GAEgASgLMg8ud29ybGQuR2VvbWV0cnlIABIVCgtnZW9FbnRpdHlJZBgCIAEoCUgAQgUKA2dlbyL2AQoMRGV2aWNlRmlsdGVyEhMKBnBhcmVudBgBIAEoCUgAiAEBEh8KEnVuaXF1ZV9oYXJkd2FyZV9pZBgEIAEoCUgBiAEBEhkKDGRldmljZV9jbGFzcxgFIAEoCUgCiAEBEigKA2JsZRgGIAEoCzIWLndvcmxkLkJsZURldmljZUZpbHRlckgDiAEBEigKA3VzYhgHIAEoCzIWLndvcmxkLlVzYkRldmljZUZpbHRlckgEiAEBQgkKB19wYXJlbnRCFQoTX3VuaXF1ZV9oYXJkd2FyZV9pZEIPCg1fZGV2aWNlX2NsYXNzQgYKBF9ibGVCBgoEX3VzYiJmCg9CbGVEZXZpY2VGaWx0ZXISFAoHYWRkcmVzcxgBIAEoCUgAiAEBEhEKBG5hbWUYAiABKAlIAYgBARIVCg1zZXJ2aWNlX3V1aWRzGAQgAygJQgoKCF9hZGRyZXNzQgcKBV9uYW1lIv8CCg9Vc2JEZXZpY2VGaWx0ZXISFgoJdmVuZG9yX2lkGAEgASgNSACIAQESFwoKcHJvZHVjdF9pZBgCIAEoDUgBiAEBEhkKDGRldmljZV9jbGFzcxgDIAEoDUgCiAEBEhwKD2RldmljZV9zdWJjbGFzcxgEIAEoDUgDiAEBEhwKD2RldmljZV9wcm90b2NvbBgFIAEoDUgEiAEBEh4KEW1hbnVmYWN0dXJlcl9uYW1lGAYgASgJSAWIAQESGQoMcHJvZHVjdF9uYW1lGAcgASgJSAaIAQESGgoNc2VyaWFsX251bWJlchgIIAEoCUgHiAEBQgwKCl92ZW5kb3JfaWRCDQoLX3Byb2R1Y3RfaWRCDwoNX2RldmljZV9jbGFzc0ISChBfZGV2aWNlX3N1YmNsYXNzQhIKEF9kZXZpY2VfcHJvdG9jb2xCFAoSX21hbnVmYWN0dXJlcl9uYW1lQg8KDV9wcm9kdWN0X25hbWVCEAoOX3NlcmlhbF9udW1iZXIiFQoTQ29uZmlndXJhdGlvbkZpbHRlciIdCg1DaGFubmVsRmlsdGVyEgwKBG5hbWUYASABKAkikwEKClNvcnRPcHRpb24SHwoFZmllbGQYASABKA4yEC53b3JsZC5Tb3J0RmllbGQSEgoKZGVzY2VuZGluZxgCIAEoCBITCgltZXRyaWNfaWQYFCABKA1IABIoCgttZXRyaWNfa2luZBgVIAEoDjIRLndvcmxkLk1ldHJpY0tpbmRIAEIRCg9tZXRyaWNfc2VsZWN0b3IitAEKDVdhdGNoQmVoYXZpb3ISGAoLbWF4X3JhdGVfaHoYASABKAJIAIgBARIqCgxtaW5fcHJpb3JpdHkYAyABKA4yDy53b3JsZC5Qcmlvcml0eUgBiAEBEiIKFWtlZXBhbGl2ZV9pbnRlcnZhbF9tcxgEIAEoDUgCiAEBQg4KDF9tYXhfcmF0ZV9oekIPCg1fbWluX3ByaW9yaXR5QhgKFl9rZWVwYWxpdmVfaW50ZXJ2YWxfbXMinQEKE0xpc3RFbnRpdGllc1JlcXVlc3QSIwoGZmlsdGVyGAIgASgLMhMud29ybGQuRW50aXR5RmlsdGVyEh8KBHNvcnQYAyADKAsyES53b3JsZC5Tb3J0T3B0aW9uEiwKCWJlaGF2aW91chgEIAEoCzIULndvcmxkLldhdGNoQmVoYXZpb3JIAIgBAUIMCgpfYmVoYXZpb3VySgQIARACIjcKFExpc3RFbnRpdGllc1Jlc3BvbnNlEh8KCGVudGl0aWVzGAEgAygLMg0ud29ybGQuRW50aXR5IloKE0VudGl0eUNoYW5nZVJlcXVlc3QSHgoHY2hhbmdlcxgBIAMoCzINLndvcmxkLkVudGl0eRIjCgxyZXBsYWNlbWVudHMYAiADKAsyDS53b3JsZC5FbnRpdHkiIQoTRXhwaXJlRW50aXR5UmVxdWVzdBIKCgJpZBgBIAEoCSIWChRFeHBpcmVFbnRpdHlSZXNwb25zZSI3ChRFbnRpdHlDaGFuZ2VSZXNwb25zZRIQCghhY2NlcHRlZBgBIAEoCBINCgVkZWJ1ZxgCIAEoCSJSChFFbnRpdHlDaGFuZ2VFdmVudBIdCgZlbnRpdHkYASABKAsyDS53b3JsZC5FbnRpdHkSHgoBdBgCIAEoDjITLndvcmxkLkVudGl0eUNoYW5nZSI9ChFFbnRpdHlDaGFuZ2VCYXRjaBIoCgZldmVudHMYASADKAsyGC53b3JsZC5FbnRpdHlDaGFuZ2VFdmVudCIeChBHZXRFbnRpdHlSZXF1ZXN0EgoKAmlkGAEgASgJIjIKEUdldEVudGl0eVJlc3BvbnNlEh0KBmVudGl0eRgBIAEoCzINLndvcmxkLkVudGl0eSIVChNHZXRMb2NhbE5vZGVSZXF1ZXN0IkYKFEdldExvY2FsTm9kZVJlc3BvbnNlEh0KBmVudGl0eRgBIAEoCzINLndvcmxkLkVudGl0eRIPCgdub2RlX2lkGAIgASgJIhEKD09ic2VydmVyUmVxdWVzdCJzCg1PYnNlcnZlclN0YXRlEhwKA2dlbxgBIAEoCzIPLndvcmxkLkdlb21ldHJ5EjQKC3ZpZXdIaXN0b3J5GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg4KDF92aWV3SGlzdG9yeSKCAQoOUnVuVGFza1JlcXVlc3QSEAoIZW50aXR5SWQYASABKAkSFQoIcHJpb3JpdHkYAiABKA1IAIgBARIvCgZ0YXJnZXQYBiABKAsyGi53b3JsZC5UYXNrRXhlY3V0aW9uVGFyZ2V0SAGIAQFCCwoJX3ByaW9yaXR5QgkKB190YXJnZXQigwEKD1J1blRhc2tSZXNwb25zZRITCgtleGVjdXRpb25JZBgBIAEoCRIhCgZzdGF0dXMYAiABKA4yES53b3JsZC5UYXNrU3RhdHVzEiAKE2h1bWFuUmVhZGFibGVSZWFzb24YAyABKAlIAIgBAUIWChRfaHVtYW5SZWFkYWJsZVJlYXNvbiI6ChBIYXJkUmVzZXRSZXF1ZXN0EhcKCm1pc3Npb25faWQYASABKAlIAIgBAUINCgtfbWlzc2lvbl9pZCITChFIYXJkUmVzZXRSZXNwb25zZSI5Cg9UaW1lU3luY1JlcXVlc3QSJgoCdDEYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIooBChBUaW1lU3luY1Jlc3BvbnNlEiYKAnQxGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBImCgJ0MhgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJgoCdDMYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wKmIKCFByaW9yaXR5EhcKE1ByaW9yaXR5VW5zcGVjaWZpZWQQABITCg9Qcmlvcml0eVJvdXRpbmUQARIVChFQcmlvcml0eUltbWVkaWF0ZRACEhEKDVByaW9yaXR5Rmxhc2gQAyqPAQoLR25zc0ZpeFR5cGUSEwoPR25zc0ZpeFR5cGVOb25lEAASEQoNR25zc0ZpeFR5cGUyRBABEhEKDUduc3NGaXhUeXBlM0QQAhITCg9HbnNzRml4VHlwZURHUFMQAxIXChNHbnNzRml4VHlwZVJ0a0Zsb2F0EAQSFwoTR25zc0ZpeFR5cGVSdGtGaXhlZBAFKuwBChNNZWRpYVN0cmVhbVByb3RvY29sEiIKHk1lZGlhU3RyZWFtUHJvdG9jb2xVbnNwZWNpZmllZBAAEh0KGU1lZGlhU3RyZWFtUHJvdG9jb2xXZWJydGMQARIaChZNZWRpYVN0cmVhbVByb3RvY29sSGxzEAISHAoYTWVkaWFTdHJlYW1Qcm90b2NvbE1qcGVnEAMSHAoYTWVkaWFTdHJlYW1Qcm90b2NvbEltYWdlEAQSHQoZTWVkaWFTdHJlYW1Qcm90b2NvbElmcmFtZRAFEhsKF01lZGlhU3RyZWFtUHJvdG9jb2xSdHNwEAYqfwoPTWVkaWFTdHJlYW1Sb2xlEh4KGk1lZGlhU3RyZWFtUm9sZVVuc3BlY2lmaWVkEAASFwoTTWVkaWFTdHJlYW1Sb2xlTWFpbhABEhYKEk1lZGlhU3RyZWFtUm9sZVN1YhACEhsKF01lZGlhU3RyZWFtUm9sZVNuYXBzaG90EAMqegoMVGFza2FibGVNb2RlEhkKFVRhc2thYmxlTW9kZUV4Y2x1c2l2ZRAAEhkKFVRhc2thYmxlTW9kZVJlY29uY2lsZRABEhUKEVRhc2thYmxlTW9kZVNwYXduEAISHQoZVGFza2FibGVNb2RlUHJpb3JpdHlRdWV1ZRADKpEBChJUYXNrRXhlY3V0aW9uU3RhdGUSHQoZVGFza0V4ZWN1dGlvblN0YXRlUGVuZGluZxAAEh0KGVRhc2tFeGVjdXRpb25TdGF0ZVJ1bm5pbmcQARIfChtUYXNrRXhlY3V0aW9uU3RhdGVDb21wbGV0ZWQQAhIcChhUYXNrRXhlY3V0aW9uU3RhdGVGYWlsZWQQAyqMAgoWQ2xhc3NpZmljYXRpb25JZGVudGl0eRIhCh1DbGFzc2lmaWNhdGlvbklkZW50aXR5SW52YWxpZBAAEiEKHUNsYXNzaWZpY2F0aW9uSWRlbnRpdHlQZW5kaW5nEAESIQodQ2xhc3NpZmljYXRpb25JZGVudGl0eVVua25vd24QAhIgChxDbGFzc2lmaWNhdGlvbklkZW50aXR5RnJpZW5kEAMSIQodQ2xhc3NpZmljYXRpb25JZGVudGl0eU5ldXRyYWwQBBIhCh1DbGFzc2lmaWNhdGlvbklkZW50aXR5SG9zdGlsZRAFEiEKHUNsYXNzaWZpY2F0aW9uSWRlbnRpdHlTdXNwZWN0EAYqxAIKHUNsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uEigKJENsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uSW52YWxpZBAAEigKJENsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uVW5rbm93bhABEiYKIkNsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uU3BhY2UQAhIkCiBDbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvbkFpchADEicKI0NsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uR3JvdW5kEAQSKwonQ2xhc3NpZmljYXRpb25CYXR0bGVEaW1lbnNpb25TZWFTdXJmYWNlEAUSKwonQ2xhc3NpZmljYXRpb25CYXR0bGVEaW1lbnNpb25TdWJzdXJmYWNlEAYq9gEKDk5hdmlnYXRpb25Nb2RlEh0KGU5hdmlnYXRpb25Nb2RlVW5zcGVjaWZpZWQQABIZChVOYXZpZ2F0aW9uTW9kZVBsYW5uZWQQARIcChhOYXZpZ2F0aW9uTW9kZVN0YXRpb25hcnkQAhIaChZOYXZpZ2F0aW9uTW9kZVVuZGVyd2F5EAMSHAoYTmF2aWdhdGlvbk1vZGVBdXRvbm9tb3VzEAQSGAoUTmF2aWdhdGlvbk1vZGVHdWlkZWQQBRIbChdOYXZpZ2F0aW9uTW9kZUxvaXRlcmluZxAGEhsKF05hdmlnYXRpb25Nb2RlUmV0dXJuaW5nEAcqbAoKTGlua1N0YXR1cxIZChVMaW5rU3RhdHVzVW5zcGVjaWZpZWQQABIXChNMaW5rU3RhdHVzQ29ubmVjdGVkEAESFgoSTGlua1N0YXR1c0RlZ3JhZGVkEAISEgoOTGlua1N0YXR1c0xvc3QQAypTCgtEZXZpY2VTdGF0ZRIWChJEZXZpY2VTdGF0ZVBlbmRpbmcQABIVChFEZXZpY2VTdGF0ZUFjdGl2ZRABEhUKEURldmljZVN0YXRlRmFpbGVkEAIqygEKEUNvbmZpZ3VyYWJsZVN0YXRlEh0KGUNvbmZpZ3VyYWJsZVN0YXRlSW5hY3RpdmUQABIdChlDb25maWd1cmFibGVTdGF0ZVN0YXJ0aW5nEAESGwoXQ29uZmlndXJhYmxlU3RhdGVBY3RpdmUQAhIbChdDb25maWd1cmFibGVTdGF0ZUZhaWxlZBADEh0KGUNvbmZpZ3VyYWJsZVN0YXRlQ29uZmxpY3QQBBIeChpDb25maWd1cmFibGVTdGF0ZVNjaGVkdWxlZBAFKp4ICglTb3J0RmllbGQSGAoUU29ydEZpZWxkVW5zcGVjaWZpZWQQABISCg5Tb3J0RmllbGRMYWJlbBABEhUKEVNvcnRGaWVsZFByaW9yaXR5EAISGQoVU29ydEZpZWxkTGlmZXRpbWVGcm9tEAoSGgoWU29ydEZpZWxkTGlmZXRpbWVVbnRpbBALEhoKFlNvcnRGaWVsZExpZmV0aW1lRnJlc2gQDBIYChRTb3J0RmllbGRHZW9MYXRpdHVkZRAUEhkKFVNvcnRGaWVsZEdlb0xvbmdpdHVkZRAVEhgKFFNvcnRGaWVsZEdlb0FsdGl0dWRlEBYSIwofU29ydEZpZWxkQ2xhc3NpZmljYXRpb25JZGVudGl0eRAeEiQKIFNvcnRGaWVsZENsYXNzaWZpY2F0aW9uRGltZW5zaW9uEB8SGwoXU29ydEZpZWxkQmVhcmluZ0F6aW11dGgQMhIdChlTb3J0RmllbGRCZWFyaW5nRWxldmF0aW9uEDMSIQodU29ydEZpZWxkQWRtaW5pc3RyYXRpdmVMZW5ndGgQRhIgChxTb3J0RmllbGRBZG1pbmlzdHJhdGl2ZVdpZHRoEEcSIQodU29ydEZpZWxkQWRtaW5pc3RyYXRpdmVIZWlnaHQQSBIiCh5Tb3J0RmllbGRBZG1pbmlzdHJhdGl2ZVRvbm5hZ2UQSRImCiJTb3J0RmllbGRBZG1pbmlzdHJhdGl2ZUVuZ2luZVBvd2VyEEoSJAogU29ydEZpZWxkQWRtaW5pc3RyYXRpdmVZZWFyQnVpbHQQSxIVChFTb3J0RmllbGRMaW5rUnNzaRBaEhQKEFNvcnRGaWVsZExpbmtTbnIQWxIcChhTb3J0RmllbGRMaW5rTGFzdExhdGVuY3kQXBIbChdTb3J0RmllbGRMaW5rQXZnTGF0ZW5jeRBdEhgKFFNvcnRGaWVsZExpbmtRdWFsaXR5EF4SGQoVU29ydEZpZWxkTGlua0xhc3RTZWVuEF8SGwoXU29ydEZpZWxkTGlua1BhY2tldFJhdGUQYBIfChtTb3J0RmllbGRQb3dlckJhdHRlcnlDaGFyZ2UQZBIZChVTb3J0RmllbGRQb3dlclZvbHRhZ2UQZRIiCh5Tb3J0RmllbGRQb3dlclJlbWFpbmluZ1NlY29uZHMQZhIZChVTb3J0RmllbGRQb3dlckN1cnJlbnQQZxIeChpTb3J0RmllbGRQb3dlckNhcGFjaXR5VXNlZBBoEhkKFFNvcnRGaWVsZERldmljZVN0YXRlEIIBEhkKFFNvcnRGaWVsZE1ldHJpY1ZhbHVlEJYBEh4KGVNvcnRGaWVsZE1ldHJpY01lYXN1cmVkQXQQlwESHgoZU29ydEZpZWxkTWV0cmljQWxlcnRMZXZlbBCYASp1CgxFbnRpdHlDaGFuZ2USFwoTRW50aXR5Q2hhbmdlSW52YWxpZBAAEhcKE0VudGl0eUNoYW5nZVVwZGF0ZWQQARIXChNFbnRpdHlDaGFuZ2VFeHBpcmVkEAISGgoWRW50aXR5Q2hhbmdlVW5vYnNlcnZlZBADKpIJCg9FbnRpdHlDb21wb25lbnQSHgoaRW50aXR5Q29tcG9uZW50VW5zcGVjaWZpZWQQABIYChRFbnRpdHlDb21wb25lbnRMYWJlbBACEh0KGUVudGl0eUNvbXBvbmVudENvbnRyb2xsZXIQAxIbChdFbnRpdHlDb21wb25lbnRMaWZldGltZRAEEhsKF0VudGl0eUNvbXBvbmVudFByaW9yaXR5EAUSGAoURW50aXR5Q29tcG9uZW50TGVhc2UQBhIaChZFbnRpdHlDb21wb25lbnRSb3V0aW5nEAcSFgoSRW50aXR5Q29tcG9uZW50R2VvEAsSGQoVRW50aXR5Q29tcG9uZW50U3ltYm9sEAwSGQoVRW50aXR5Q29tcG9uZW50Q2FtZXJhEA8SHAoYRW50aXR5Q29tcG9uZW50RGV0ZWN0aW9uEBASGgoWRW50aXR5Q29tcG9uZW50QmVhcmluZxAREhgKFEVudGl0eUNvbXBvbmVudFRyYWNrEBUSGgoWRW50aXR5Q29tcG9uZW50TG9jYXRvchAWEhsKF0VudGl0eUNvbXBvbmVudFRhc2thYmxlEBcSHQoZRW50aXR5Q29tcG9uZW50S2luZW1hdGljcxAYEhgKFEVudGl0eUNvbXBvbmVudFNoYXBlEBkSIQodRW50aXR5Q29tcG9uZW50Q2xhc3NpZmljYXRpb24QGhIeChpFbnRpdHlDb21wb25lbnRUcmFuc3BvbmRlchAbEiEKHUVudGl0eUNvbXBvbmVudEFkbWluaXN0cmF0aXZlEBwSHQoZRW50aXR5Q29tcG9uZW50TG9jYWxTaGFwZRAdEh4KGkVudGl0eUNvbXBvbmVudE9yaWVudGF0aW9uEB4SGgoWRW50aXR5Q29tcG9uZW50TWlzc2lvbhAfEhcKE0VudGl0eUNvbXBvbmVudExpbmsQIBIYChRFbnRpdHlDb21wb25lbnRQb3dlchAhEh0KGUVudGl0eUNvbXBvbmVudE5hdmlnYXRpb24QIhIaChZFbnRpdHlDb21wb25lbnRDYXB0dXJlECMSGQoVRW50aXR5Q29tcG9uZW50TWV0cmljECQSGQoVRW50aXR5Q29tcG9uZW50U2Vuc29yECUSFwoTRW50aXR5Q29tcG9uZW50UG9zZRAmEhcKE0VudGl0eUNvbXBvbmVudENoYXQQJxIgChxFbnRpdHlDb21wb25lbnRUYXNrRXhlY3V0aW9uECkSFwoTRW50aXR5Q29tcG9uZW50R25zcxAqEhkKFUVudGl0eUNvbXBvbmVudERldmljZRAyEhkKFUVudGl0eUNvbXBvbmVudENvbmZpZxAzEh8KG0VudGl0eUNvbXBvbmVudENvbmZpZ3VyYWJsZRA0EiAKHEVudGl0eUNvbXBvbmVudEludGVyYWN0aXZpdHkQPBIbChdFbnRpdHlDb21wb25lbnRBcnRpZmFjdBA9Eh0KGUVudGl0eUNvbXBvbmVudFRhcmdldFBvc2UQPhIbChdFbnRpdHlDb21wb25lbnRNYXBMYXllchA/KmkKClRhc2tTdGF0dXMSFQoRVGFza1N0YXR1c0ludmFsaWQQABIVChFUYXNrU3RhdHVzUnVubmluZxABEhcKE1Rhc2tTdGF0dXNDb21wbGV0ZWQQAhIUChBUYXNrU3RhdHVzRmFpbGVkEAMy6gQKDFdvcmxkU2VydmljZRJHCgxMaXN0RW50aXRpZXMSGi53b3JsZC5MaXN0RW50aXRpZXNSZXF1ZXN0Ghsud29ybGQuTGlzdEVudGl0aWVzUmVzcG9uc2USPgoJR2V0RW50aXR5Ehcud29ybGQuR2V0RW50aXR5UmVxdWVzdBoYLndvcmxkLkdldEVudGl0eVJlc3BvbnNlEkcKDVdhdGNoRW50aXRpZXMSGi53b3JsZC5MaXN0RW50aXRpZXNSZXF1ZXN0Ghgud29ybGQuRW50aXR5Q2hhbmdlRXZlbnQwARI/CgRQdXNoEhoud29ybGQuRW50aXR5Q2hhbmdlUmVxdWVzdBobLndvcmxkLkVudGl0eUNoYW5nZVJlc3BvbnNlEkcKDEV4cGlyZUVudGl0eRIaLndvcmxkLkV4cGlyZUVudGl0eVJlcXVlc3QaGy53b3JsZC5FeHBpcmVFbnRpdHlSZXNwb25zZRJHCgxHZXRMb2NhbE5vZGUSGi53b3JsZC5HZXRMb2NhbE5vZGVSZXF1ZXN0Ghsud29ybGQuR2V0TG9jYWxOb2RlUmVzcG9uc2USOAoHUnVuVGFzaxIVLndvcmxkLlJ1blRhc2tSZXF1ZXN0GhYud29ybGQuUnVuVGFza1Jlc3BvbnNlEj4KCUhhcmRSZXNldBIXLndvcmxkLkhhcmRSZXNldFJlcXVlc3QaGC53b3JsZC5IYXJkUmVzZXRSZXNwb25zZRI7CghUaW1lU3luYxIWLndvcmxkLlRpbWVTeW5jUmVxdWVzdBoXLndvcmxkLlRpbWVTeW5jUmVzcG9uc2VCIFoeZ2l0aHViLmNvbS9wcm9qZWN0cWFpL3Byb3RvL2dvYgZwcm90bzM", [file_geometry, file_google_protobuf_struct, file_google_protobuf_timestamp, file_metrics]);
15
15
 
16
16
  /**
17
17
  * Describes the message world.Entity.
@@ -216,446 +216,495 @@ export const TaskableContextSchema = /*@__PURE__*/
216
216
  export const TaskableAssigneeSchema = /*@__PURE__*/
217
217
  messageDesc(file_world, 28);
218
218
 
219
+ /**
220
+ * Describes the message world.TaskableTarget.
221
+ * Use `create(TaskableTargetSchema)` to create a new message.
222
+ */
223
+ export const TaskableTargetSchema = /*@__PURE__*/
224
+ messageDesc(file_world, 29);
225
+
219
226
  /**
220
227
  * Describes the message world.TaskableComponent.
221
228
  * Use `create(TaskableComponentSchema)` to create a new message.
222
229
  */
223
230
  export const TaskableComponentSchema = /*@__PURE__*/
224
- messageDesc(file_world, 29);
231
+ messageDesc(file_world, 30);
232
+
233
+ /**
234
+ * Describes the message world.TaskExecutionTarget.
235
+ * Use `create(TaskExecutionTargetSchema)` to create a new message.
236
+ */
237
+ export const TaskExecutionTargetSchema = /*@__PURE__*/
238
+ messageDesc(file_world, 31);
225
239
 
226
240
  /**
227
241
  * Describes the message world.TaskExecutionComponent.
228
242
  * Use `create(TaskExecutionComponentSchema)` to create a new message.
229
243
  */
230
244
  export const TaskExecutionComponentSchema = /*@__PURE__*/
231
- messageDesc(file_world, 30);
245
+ messageDesc(file_world, 32);
232
246
 
233
247
  /**
234
248
  * Describes the message world.KinematicsEnu.
235
249
  * Use `create(KinematicsEnuSchema)` to create a new message.
236
250
  */
237
251
  export const KinematicsEnuSchema = /*@__PURE__*/
238
- messageDesc(file_world, 31);
252
+ messageDesc(file_world, 33);
239
253
 
240
254
  /**
241
255
  * Describes the message world.KinematicsComponent.
242
256
  * Use `create(KinematicsComponentSchema)` to create a new message.
243
257
  */
244
258
  export const KinematicsComponentSchema = /*@__PURE__*/
245
- messageDesc(file_world, 32);
259
+ messageDesc(file_world, 34);
246
260
 
247
261
  /**
248
262
  * Describes the message world.Geometry.
249
263
  * Use `create(GeometrySchema)` to create a new message.
250
264
  */
251
265
  export const GeometrySchema = /*@__PURE__*/
252
- messageDesc(file_world, 33);
266
+ messageDesc(file_world, 35);
253
267
 
254
268
  /**
255
269
  * Describes the message world.GeoShapeComponent.
256
270
  * Use `create(GeoShapeComponentSchema)` to create a new message.
257
271
  */
258
272
  export const GeoShapeComponentSchema = /*@__PURE__*/
259
- messageDesc(file_world, 34);
273
+ messageDesc(file_world, 36);
260
274
 
261
275
  /**
262
276
  * Describes the message world.LocalShapeComponent.
263
277
  * Use `create(LocalShapeComponentSchema)` to create a new message.
264
278
  */
265
279
  export const LocalShapeComponentSchema = /*@__PURE__*/
266
- messageDesc(file_world, 35);
280
+ messageDesc(file_world, 37);
267
281
 
268
282
  /**
269
283
  * Describes the message world.ClassificationComponent.
270
284
  * Use `create(ClassificationComponentSchema)` to create a new message.
271
285
  */
272
286
  export const ClassificationComponentSchema = /*@__PURE__*/
273
- messageDesc(file_world, 36);
287
+ messageDesc(file_world, 38);
274
288
 
275
289
  /**
276
290
  * Describes the message world.TransponderAIS.
277
291
  * Use `create(TransponderAISSchema)` to create a new message.
278
292
  */
279
293
  export const TransponderAISSchema = /*@__PURE__*/
280
- messageDesc(file_world, 37);
294
+ messageDesc(file_world, 39);
281
295
 
282
296
  /**
283
297
  * Describes the message world.TransponderADSB.
284
298
  * Use `create(TransponderADSBSchema)` to create a new message.
285
299
  */
286
300
  export const TransponderADSBSchema = /*@__PURE__*/
287
- messageDesc(file_world, 38);
301
+ messageDesc(file_world, 40);
288
302
 
289
303
  /**
290
304
  * Describes the message world.TransponderComponent.
291
305
  * Use `create(TransponderComponentSchema)` to create a new message.
292
306
  */
293
307
  export const TransponderComponentSchema = /*@__PURE__*/
294
- messageDesc(file_world, 39);
308
+ messageDesc(file_world, 41);
295
309
 
296
310
  /**
297
311
  * Describes the message world.AdministrativeComponent.
298
312
  * Use `create(AdministrativeComponentSchema)` to create a new message.
299
313
  */
300
314
  export const AdministrativeComponentSchema = /*@__PURE__*/
301
- messageDesc(file_world, 40);
315
+ messageDesc(file_world, 42);
302
316
 
303
317
  /**
304
318
  * Describes the message world.NavigationComponent.
305
319
  * Use `create(NavigationComponentSchema)` to create a new message.
306
320
  */
307
321
  export const NavigationComponentSchema = /*@__PURE__*/
308
- messageDesc(file_world, 41);
322
+ messageDesc(file_world, 43);
309
323
 
310
324
  /**
311
325
  * Describes the message world.MissionComponent.
312
326
  * Use `create(MissionComponentSchema)` to create a new message.
313
327
  */
314
328
  export const MissionComponentSchema = /*@__PURE__*/
315
- messageDesc(file_world, 42);
329
+ messageDesc(file_world, 44);
316
330
 
317
331
  /**
318
332
  * Describes the message world.LinkComponent.
319
333
  * Use `create(LinkComponentSchema)` to create a new message.
320
334
  */
321
335
  export const LinkComponentSchema = /*@__PURE__*/
322
- messageDesc(file_world, 43);
336
+ messageDesc(file_world, 45);
323
337
 
324
338
  /**
325
339
  * Describes the message world.CaptureComponent.
326
340
  * Use `create(CaptureComponentSchema)` to create a new message.
327
341
  */
328
342
  export const CaptureComponentSchema = /*@__PURE__*/
329
- messageDesc(file_world, 44);
343
+ messageDesc(file_world, 46);
330
344
 
331
345
  /**
332
346
  * Describes the message world.PowerComponent.
333
347
  * Use `create(PowerComponentSchema)` to create a new message.
334
348
  */
335
349
  export const PowerComponentSchema = /*@__PURE__*/
336
- messageDesc(file_world, 45);
350
+ messageDesc(file_world, 47);
337
351
 
338
352
  /**
339
353
  * Describes the message world.DeviceClassOption.
340
354
  * Use `create(DeviceClassOptionSchema)` to create a new message.
341
355
  */
342
356
  export const DeviceClassOptionSchema = /*@__PURE__*/
343
- messageDesc(file_world, 46);
357
+ messageDesc(file_world, 48);
344
358
 
345
359
  /**
346
360
  * Describes the message world.ConfigurableComponent.
347
361
  * Use `create(ConfigurableComponentSchema)` to create a new message.
348
362
  */
349
363
  export const ConfigurableComponentSchema = /*@__PURE__*/
350
- messageDesc(file_world, 47);
364
+ messageDesc(file_world, 49);
351
365
 
352
366
  /**
353
367
  * Describes the message world.DeviceComponent.
354
368
  * Use `create(DeviceComponentSchema)` to create a new message.
355
369
  */
356
370
  export const DeviceComponentSchema = /*@__PURE__*/
357
- messageDesc(file_world, 48);
371
+ messageDesc(file_world, 50);
358
372
 
359
373
  /**
360
374
  * Describes the message world.MissionKit.
361
375
  * Use `create(MissionKitSchema)` to create a new message.
362
376
  */
363
377
  export const MissionKitSchema = /*@__PURE__*/
364
- messageDesc(file_world, 49);
378
+ messageDesc(file_world, 51);
365
379
 
366
380
  /**
367
381
  * Describes the message world.NodeDevice.
368
382
  * Use `create(NodeDeviceSchema)` to create a new message.
369
383
  */
370
384
  export const NodeDeviceSchema = /*@__PURE__*/
371
- messageDesc(file_world, 50);
385
+ messageDesc(file_world, 52);
372
386
 
373
387
  /**
374
388
  * Describes the message world.UsbDevice.
375
389
  * Use `create(UsbDeviceSchema)` to create a new message.
376
390
  */
377
391
  export const UsbDeviceSchema = /*@__PURE__*/
378
- messageDesc(file_world, 51);
392
+ messageDesc(file_world, 53);
379
393
 
380
394
  /**
381
395
  * Describes the message world.IpDevice.
382
396
  * Use `create(IpDeviceSchema)` to create a new message.
383
397
  */
384
398
  export const IpDeviceSchema = /*@__PURE__*/
385
- messageDesc(file_world, 52);
399
+ messageDesc(file_world, 54);
386
400
 
387
401
  /**
388
402
  * Describes the message world.EthernetDevice.
389
403
  * Use `create(EthernetDeviceSchema)` to create a new message.
390
404
  */
391
405
  export const EthernetDeviceSchema = /*@__PURE__*/
392
- messageDesc(file_world, 53);
406
+ messageDesc(file_world, 55);
393
407
 
394
408
  /**
395
409
  * Describes the message world.SerialDevice.
396
410
  * Use `create(SerialDeviceSchema)` to create a new message.
397
411
  */
398
412
  export const SerialDeviceSchema = /*@__PURE__*/
399
- messageDesc(file_world, 54);
413
+ messageDesc(file_world, 56);
400
414
 
401
415
  /**
402
416
  * Describes the message world.MeshtasticDevice.
403
417
  * Use `create(MeshtasticDeviceSchema)` to create a new message.
404
418
  */
405
419
  export const MeshtasticDeviceSchema = /*@__PURE__*/
406
- messageDesc(file_world, 55);
420
+ messageDesc(file_world, 57);
407
421
 
408
422
  /**
409
423
  * Describes the message world.LPWANDevice.
410
424
  * Use `create(LPWANDeviceSchema)` to create a new message.
411
425
  */
412
426
  export const LPWANDeviceSchema = /*@__PURE__*/
413
- messageDesc(file_world, 56);
427
+ messageDesc(file_world, 58);
414
428
 
415
429
  /**
416
430
  * Describes the message world.BleDevice.
417
431
  * Use `create(BleDeviceSchema)` to create a new message.
418
432
  */
419
433
  export const BleDeviceSchema = /*@__PURE__*/
420
- messageDesc(file_world, 57);
434
+ messageDesc(file_world, 59);
421
435
 
422
436
  /**
423
437
  * Describes the message world.ConfigurationComponent.
424
438
  * Use `create(ConfigurationComponentSchema)` to create a new message.
425
439
  */
426
440
  export const ConfigurationComponentSchema = /*@__PURE__*/
427
- messageDesc(file_world, 58);
441
+ messageDesc(file_world, 60);
428
442
 
429
443
  /**
430
444
  * Describes the message world.ChatComponent.
431
445
  * Use `create(ChatComponentSchema)` to create a new message.
432
446
  */
433
447
  export const ChatComponentSchema = /*@__PURE__*/
434
- messageDesc(file_world, 59);
448
+ messageDesc(file_world, 61);
435
449
 
436
450
  /**
437
451
  * Describes the message world.AssemblyComponent.
438
452
  * Use `create(AssemblyComponentSchema)` to create a new message.
439
453
  */
440
454
  export const AssemblyComponentSchema = /*@__PURE__*/
441
- messageDesc(file_world, 60);
455
+ messageDesc(file_world, 62);
456
+
457
+ /**
458
+ * Describes the message world.MapLayerComponent.
459
+ * Use `create(MapLayerComponentSchema)` to create a new message.
460
+ */
461
+ export const MapLayerComponentSchema = /*@__PURE__*/
462
+ messageDesc(file_world, 63);
463
+
464
+ /**
465
+ * Describes the message world.MapLayerComponent.Tile.
466
+ * Use `create(MapLayerComponent_TileSchema)` to create a new message.
467
+ */
468
+ export const MapLayerComponent_TileSchema = /*@__PURE__*/
469
+ messageDesc(file_world, 63, 0);
470
+
471
+ /**
472
+ * Describes the message world.MapLayerComponent.Image.
473
+ * Use `create(MapLayerComponent_ImageSchema)` to create a new message.
474
+ */
475
+ export const MapLayerComponent_ImageSchema = /*@__PURE__*/
476
+ messageDesc(file_world, 63, 1);
442
477
 
443
478
  /**
444
479
  * Describes the message world.EntityFilter.
445
480
  * Use `create(EntityFilterSchema)` to create a new message.
446
481
  */
447
482
  export const EntityFilterSchema = /*@__PURE__*/
448
- messageDesc(file_world, 61);
483
+ messageDesc(file_world, 64);
449
484
 
450
485
  /**
451
486
  * Describes the message world.ControllerFilter.
452
487
  * Use `create(ControllerFilterSchema)` to create a new message.
453
488
  */
454
489
  export const ControllerFilterSchema = /*@__PURE__*/
455
- messageDesc(file_world, 62);
490
+ messageDesc(file_world, 65);
456
491
 
457
492
  /**
458
493
  * Describes the message world.TrackFilter.
459
494
  * Use `create(TrackFilterSchema)` to create a new message.
460
495
  */
461
496
  export const TrackFilterSchema = /*@__PURE__*/
462
- messageDesc(file_world, 63);
497
+ messageDesc(file_world, 66);
463
498
 
464
499
  /**
465
500
  * Describes the message world.MissionFilter.
466
501
  * Use `create(MissionFilterSchema)` to create a new message.
467
502
  */
468
503
  export const MissionFilterSchema = /*@__PURE__*/
469
- messageDesc(file_world, 64);
504
+ messageDesc(file_world, 67);
470
505
 
471
506
  /**
472
507
  * Describes the message world.TaskableFilter.
473
508
  * Use `create(TaskableFilterSchema)` to create a new message.
474
509
  */
475
510
  export const TaskableFilterSchema = /*@__PURE__*/
476
- messageDesc(file_world, 65);
511
+ messageDesc(file_world, 68);
477
512
 
478
513
  /**
479
514
  * Describes the message world.GeoFilter.
480
515
  * Use `create(GeoFilterSchema)` to create a new message.
481
516
  */
482
517
  export const GeoFilterSchema = /*@__PURE__*/
483
- messageDesc(file_world, 66);
518
+ messageDesc(file_world, 69);
484
519
 
485
520
  /**
486
521
  * Describes the message world.DeviceFilter.
487
522
  * Use `create(DeviceFilterSchema)` to create a new message.
488
523
  */
489
524
  export const DeviceFilterSchema = /*@__PURE__*/
490
- messageDesc(file_world, 67);
525
+ messageDesc(file_world, 70);
491
526
 
492
527
  /**
493
528
  * Describes the message world.BleDeviceFilter.
494
529
  * Use `create(BleDeviceFilterSchema)` to create a new message.
495
530
  */
496
531
  export const BleDeviceFilterSchema = /*@__PURE__*/
497
- messageDesc(file_world, 68);
532
+ messageDesc(file_world, 71);
498
533
 
499
534
  /**
500
535
  * Describes the message world.UsbDeviceFilter.
501
536
  * Use `create(UsbDeviceFilterSchema)` to create a new message.
502
537
  */
503
538
  export const UsbDeviceFilterSchema = /*@__PURE__*/
504
- messageDesc(file_world, 69);
539
+ messageDesc(file_world, 72);
505
540
 
506
541
  /**
507
542
  * Describes the message world.ConfigurationFilter.
508
543
  * Use `create(ConfigurationFilterSchema)` to create a new message.
509
544
  */
510
545
  export const ConfigurationFilterSchema = /*@__PURE__*/
511
- messageDesc(file_world, 70);
546
+ messageDesc(file_world, 73);
512
547
 
513
548
  /**
514
549
  * Describes the message world.ChannelFilter.
515
550
  * Use `create(ChannelFilterSchema)` to create a new message.
516
551
  */
517
552
  export const ChannelFilterSchema = /*@__PURE__*/
518
- messageDesc(file_world, 71);
553
+ messageDesc(file_world, 74);
519
554
 
520
555
  /**
521
556
  * Describes the message world.SortOption.
522
557
  * Use `create(SortOptionSchema)` to create a new message.
523
558
  */
524
559
  export const SortOptionSchema = /*@__PURE__*/
525
- messageDesc(file_world, 72);
560
+ messageDesc(file_world, 75);
526
561
 
527
562
  /**
528
563
  * Describes the message world.WatchBehavior.
529
564
  * Use `create(WatchBehaviorSchema)` to create a new message.
530
565
  */
531
566
  export const WatchBehaviorSchema = /*@__PURE__*/
532
- messageDesc(file_world, 73);
567
+ messageDesc(file_world, 76);
533
568
 
534
569
  /**
535
570
  * Describes the message world.ListEntitiesRequest.
536
571
  * Use `create(ListEntitiesRequestSchema)` to create a new message.
537
572
  */
538
573
  export const ListEntitiesRequestSchema = /*@__PURE__*/
539
- messageDesc(file_world, 74);
574
+ messageDesc(file_world, 77);
540
575
 
541
576
  /**
542
577
  * Describes the message world.ListEntitiesResponse.
543
578
  * Use `create(ListEntitiesResponseSchema)` to create a new message.
544
579
  */
545
580
  export const ListEntitiesResponseSchema = /*@__PURE__*/
546
- messageDesc(file_world, 75);
581
+ messageDesc(file_world, 78);
547
582
 
548
583
  /**
549
584
  * Describes the message world.EntityChangeRequest.
550
585
  * Use `create(EntityChangeRequestSchema)` to create a new message.
551
586
  */
552
587
  export const EntityChangeRequestSchema = /*@__PURE__*/
553
- messageDesc(file_world, 76);
588
+ messageDesc(file_world, 79);
554
589
 
555
590
  /**
556
591
  * Describes the message world.ExpireEntityRequest.
557
592
  * Use `create(ExpireEntityRequestSchema)` to create a new message.
558
593
  */
559
594
  export const ExpireEntityRequestSchema = /*@__PURE__*/
560
- messageDesc(file_world, 77);
595
+ messageDesc(file_world, 80);
561
596
 
562
597
  /**
563
598
  * Describes the message world.ExpireEntityResponse.
564
599
  * Use `create(ExpireEntityResponseSchema)` to create a new message.
565
600
  */
566
601
  export const ExpireEntityResponseSchema = /*@__PURE__*/
567
- messageDesc(file_world, 78);
602
+ messageDesc(file_world, 81);
568
603
 
569
604
  /**
570
605
  * Describes the message world.EntityChangeResponse.
571
606
  * Use `create(EntityChangeResponseSchema)` to create a new message.
572
607
  */
573
608
  export const EntityChangeResponseSchema = /*@__PURE__*/
574
- messageDesc(file_world, 79);
609
+ messageDesc(file_world, 82);
575
610
 
576
611
  /**
577
612
  * Describes the message world.EntityChangeEvent.
578
613
  * Use `create(EntityChangeEventSchema)` to create a new message.
579
614
  */
580
615
  export const EntityChangeEventSchema = /*@__PURE__*/
581
- messageDesc(file_world, 80);
616
+ messageDesc(file_world, 83);
582
617
 
583
618
  /**
584
619
  * Describes the message world.EntityChangeBatch.
585
620
  * Use `create(EntityChangeBatchSchema)` to create a new message.
586
621
  */
587
622
  export const EntityChangeBatchSchema = /*@__PURE__*/
588
- messageDesc(file_world, 81);
623
+ messageDesc(file_world, 84);
589
624
 
590
625
  /**
591
626
  * Describes the message world.GetEntityRequest.
592
627
  * Use `create(GetEntityRequestSchema)` to create a new message.
593
628
  */
594
629
  export const GetEntityRequestSchema = /*@__PURE__*/
595
- messageDesc(file_world, 82);
630
+ messageDesc(file_world, 85);
596
631
 
597
632
  /**
598
633
  * Describes the message world.GetEntityResponse.
599
634
  * Use `create(GetEntityResponseSchema)` to create a new message.
600
635
  */
601
636
  export const GetEntityResponseSchema = /*@__PURE__*/
602
- messageDesc(file_world, 83);
637
+ messageDesc(file_world, 86);
603
638
 
604
639
  /**
605
640
  * Describes the message world.GetLocalNodeRequest.
606
641
  * Use `create(GetLocalNodeRequestSchema)` to create a new message.
607
642
  */
608
643
  export const GetLocalNodeRequestSchema = /*@__PURE__*/
609
- messageDesc(file_world, 84);
644
+ messageDesc(file_world, 87);
610
645
 
611
646
  /**
612
647
  * Describes the message world.GetLocalNodeResponse.
613
648
  * Use `create(GetLocalNodeResponseSchema)` to create a new message.
614
649
  */
615
650
  export const GetLocalNodeResponseSchema = /*@__PURE__*/
616
- messageDesc(file_world, 85);
651
+ messageDesc(file_world, 88);
617
652
 
618
653
  /**
619
654
  * Describes the message world.ObserverRequest.
620
655
  * Use `create(ObserverRequestSchema)` to create a new message.
621
656
  */
622
657
  export const ObserverRequestSchema = /*@__PURE__*/
623
- messageDesc(file_world, 86);
658
+ messageDesc(file_world, 89);
624
659
 
625
660
  /**
626
661
  * Describes the message world.ObserverState.
627
662
  * Use `create(ObserverStateSchema)` to create a new message.
628
663
  */
629
664
  export const ObserverStateSchema = /*@__PURE__*/
630
- messageDesc(file_world, 87);
665
+ messageDesc(file_world, 90);
631
666
 
632
667
  /**
633
668
  * Describes the message world.RunTaskRequest.
634
669
  * Use `create(RunTaskRequestSchema)` to create a new message.
635
670
  */
636
671
  export const RunTaskRequestSchema = /*@__PURE__*/
637
- messageDesc(file_world, 88);
672
+ messageDesc(file_world, 91);
638
673
 
639
674
  /**
640
675
  * Describes the message world.RunTaskResponse.
641
676
  * Use `create(RunTaskResponseSchema)` to create a new message.
642
677
  */
643
678
  export const RunTaskResponseSchema = /*@__PURE__*/
644
- messageDesc(file_world, 89);
679
+ messageDesc(file_world, 92);
645
680
 
646
681
  /**
647
682
  * Describes the message world.HardResetRequest.
648
683
  * Use `create(HardResetRequestSchema)` to create a new message.
649
684
  */
650
685
  export const HardResetRequestSchema = /*@__PURE__*/
651
- messageDesc(file_world, 90);
686
+ messageDesc(file_world, 93);
652
687
 
653
688
  /**
654
689
  * Describes the message world.HardResetResponse.
655
690
  * Use `create(HardResetResponseSchema)` to create a new message.
656
691
  */
657
692
  export const HardResetResponseSchema = /*@__PURE__*/
658
- messageDesc(file_world, 91);
693
+ messageDesc(file_world, 94);
694
+
695
+ /**
696
+ * Describes the message world.TimeSyncRequest.
697
+ * Use `create(TimeSyncRequestSchema)` to create a new message.
698
+ */
699
+ export const TimeSyncRequestSchema = /*@__PURE__*/
700
+ messageDesc(file_world, 95);
701
+
702
+ /**
703
+ * Describes the message world.TimeSyncResponse.
704
+ * Use `create(TimeSyncResponseSchema)` to create a new message.
705
+ */
706
+ export const TimeSyncResponseSchema = /*@__PURE__*/
707
+ messageDesc(file_world, 96);
659
708
 
660
709
  /**
661
710
  * Describes the enum world.Priority.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectqai/proto",
3
- "version": "0.0.50",
3
+ "version": "0.0.51",
4
4
  "author": "projectq-release-bot",
5
5
  "type": "module",
6
6
  "exports": {