@projectqai/proto 0.0.36 → 0.0.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/device.ts CHANGED
@@ -321,33 +321,41 @@ export async function attach<S extends SchemaProperties>(opts: AttachOptions<S>)
321
321
  })();
322
322
  };
323
323
 
324
- // Watch for config changes
325
-
326
- const stream = client.watchEntities(
327
- create(ListEntitiesRequestSchema, { filter: create(EntityFilterSchema, { id: entityID }) }),
328
- ...(opts.signal ? [{ signal: opts.signal }] : []),
329
- );
324
+ // Watch for config changes — retry on transient stream errors
330
325
 
331
326
  try {
332
- for await (const event of stream) {
333
- if (!event.entity) continue;
334
-
335
- if (event.t === EntityChange.EntityChangeExpired || event.t === EntityChange.EntityChangeUnobserved) {
327
+ while (!outerAbort.signal.aborted) {
328
+ const stream = client.watchEntities(
329
+ create(ListEntitiesRequestSchema, { filter: create(EntityFilterSchema, { id: entityID }) }),
330
+ ...(opts.signal ? [{ signal: opts.signal }] : []),
331
+ );
332
+
333
+ try {
334
+ for await (const event of stream) {
335
+ if (!event.entity) continue;
336
+
337
+ if (event.t === EntityChange.EntityChangeExpired || event.t === EntityChange.EntityChangeUnobserved) {
338
+ stop();
339
+ continue;
340
+ }
341
+ if (event.t !== EntityChange.EntityChangeUpdated) continue;
342
+
343
+ const e = event.entity;
344
+ if (!e.config) { stop(); continue; }
345
+ if (e.config.version === currentConfigVersion && runningAbort) continue;
346
+
347
+ stop();
348
+ currentConfigVersion = e.config.version;
349
+ start(e);
350
+ }
351
+ break; // clean end of stream
352
+ } catch (err) {
353
+ if (isCanceled(err) || opts.signal?.aborted) break;
354
+ console.error(`watch stream error, reconnecting entity=${entityID}`, err);
336
355
  stop();
337
- continue;
356
+ await sleep(5_000, outerAbort.signal);
338
357
  }
339
- if (event.t !== EntityChange.EntityChangeUpdated) continue;
340
-
341
- const e = event.entity;
342
- if (!e.config) { stop(); continue; }
343
- if (e.config.version === currentConfigVersion && runningAbort) continue;
344
-
345
- stop();
346
- currentConfigVersion = e.config.version;
347
- start(e);
348
358
  }
349
- } catch (err) {
350
- if (!isCanceled(err)) throw err;
351
359
  } finally {
352
360
  stop();
353
361
  outerAbort.abort();
@@ -1793,6 +1793,11 @@ export declare type DeviceComponent = Message<"world.DeviceComponent"> & {
1793
1793
  * @generated from field: optional world.MeshtasticDevice meshtastic = 26;
1794
1794
  */
1795
1795
  meshtastic?: MeshtasticDevice;
1796
+
1797
+ /**
1798
+ * @generated from field: optional world.BleDevice ble = 27;
1799
+ */
1800
+ ble?: BleDevice;
1796
1801
  };
1797
1802
 
1798
1803
  /**
@@ -2026,6 +2031,38 @@ export declare type LPWANDevice = Message<"world.LPWANDevice"> & {
2026
2031
  */
2027
2032
  export declare const LPWANDeviceSchema: GenMessage<LPWANDevice>;
2028
2033
 
2034
+ /**
2035
+ * @generated from message world.BleDevice
2036
+ */
2037
+ export declare type BleDevice = Message<"world.BleDevice"> & {
2038
+ /**
2039
+ * MAC address or platform-specific identifier
2040
+ *
2041
+ * @generated from field: optional string address = 1;
2042
+ */
2043
+ address?: string;
2044
+
2045
+ /**
2046
+ * advertised device name
2047
+ *
2048
+ * @generated from field: optional string name = 2;
2049
+ */
2050
+ name?: string;
2051
+
2052
+ /**
2053
+ * advertised GATT service UUIDs
2054
+ *
2055
+ * @generated from field: repeated string service_uuids = 4;
2056
+ */
2057
+ serviceUuids: string[];
2058
+ };
2059
+
2060
+ /**
2061
+ * Describes the message world.BleDevice.
2062
+ * Use `create(BleDeviceSchema)` to create a new message.
2063
+ */
2064
+ export declare const BleDeviceSchema: GenMessage<BleDevice>;
2065
+
2029
2066
  /**
2030
2067
  * Configuration pushed onto an entity. The engine delivers entities with
2031
2068
  * Config to the matching controller via Reconcile.
@@ -2315,6 +2352,27 @@ export declare type DeviceFilter = Message<"world.DeviceFilter"> & {
2315
2352
  * @generated from field: optional string unique_hardware_id = 4;
2316
2353
  */
2317
2354
  uniqueHardwareId?: string;
2355
+
2356
+ /**
2357
+ * match device class string (e.g. "usb_serial", "radio")
2358
+ *
2359
+ * @generated from field: optional string device_class = 5;
2360
+ */
2361
+ deviceClass?: string;
2362
+
2363
+ /**
2364
+ * match BLE device properties
2365
+ *
2366
+ * @generated from field: optional world.BleDeviceFilter ble = 6;
2367
+ */
2368
+ ble?: BleDeviceFilter;
2369
+
2370
+ /**
2371
+ * match USB device properties
2372
+ *
2373
+ * @generated from field: optional world.UsbDeviceFilter usb = 7;
2374
+ */
2375
+ usb?: UsbDeviceFilter;
2318
2376
  };
2319
2377
 
2320
2378
  /**
@@ -2323,6 +2381,87 @@ export declare type DeviceFilter = Message<"world.DeviceFilter"> & {
2323
2381
  */
2324
2382
  export declare const DeviceFilterSchema: GenMessage<DeviceFilter>;
2325
2383
 
2384
+ /**
2385
+ * Matches against BleDevice fields. All set fields must match.
2386
+ *
2387
+ * @generated from message world.BleDeviceFilter
2388
+ */
2389
+ export declare type BleDeviceFilter = Message<"world.BleDeviceFilter"> & {
2390
+ /**
2391
+ * @generated from field: optional string address = 1;
2392
+ */
2393
+ address?: string;
2394
+
2395
+ /**
2396
+ * @generated from field: optional string name = 2;
2397
+ */
2398
+ name?: string;
2399
+
2400
+ /**
2401
+ * @generated from field: repeated string service_uuids = 4;
2402
+ */
2403
+ serviceUuids: string[];
2404
+ };
2405
+
2406
+ /**
2407
+ * Describes the message world.BleDeviceFilter.
2408
+ * Use `create(BleDeviceFilterSchema)` to create a new message.
2409
+ */
2410
+ export declare const BleDeviceFilterSchema: GenMessage<BleDeviceFilter>;
2411
+
2412
+ /**
2413
+ * Matches against UsbDevice fields. All set fields must match.
2414
+ *
2415
+ * @generated from message world.UsbDeviceFilter
2416
+ */
2417
+ export declare type UsbDeviceFilter = Message<"world.UsbDeviceFilter"> & {
2418
+ /**
2419
+ * @generated from field: optional uint32 vendor_id = 1;
2420
+ */
2421
+ vendorId?: number;
2422
+
2423
+ /**
2424
+ * @generated from field: optional uint32 product_id = 2;
2425
+ */
2426
+ productId?: number;
2427
+
2428
+ /**
2429
+ * @generated from field: optional uint32 device_class = 3;
2430
+ */
2431
+ deviceClass?: number;
2432
+
2433
+ /**
2434
+ * @generated from field: optional uint32 device_subclass = 4;
2435
+ */
2436
+ deviceSubclass?: number;
2437
+
2438
+ /**
2439
+ * @generated from field: optional uint32 device_protocol = 5;
2440
+ */
2441
+ deviceProtocol?: number;
2442
+
2443
+ /**
2444
+ * @generated from field: optional string manufacturer_name = 6;
2445
+ */
2446
+ manufacturerName?: string;
2447
+
2448
+ /**
2449
+ * @generated from field: optional string product_name = 7;
2450
+ */
2451
+ productName?: string;
2452
+
2453
+ /**
2454
+ * @generated from field: optional string serial_number = 8;
2455
+ */
2456
+ serialNumber?: string;
2457
+ };
2458
+
2459
+ /**
2460
+ * Describes the message world.UsbDeviceFilter.
2461
+ * Use `create(UsbDeviceFilterSchema)` to create a new message.
2462
+ */
2463
+ export declare const UsbDeviceFilterSchema: GenMessage<UsbDeviceFilter>;
2464
+
2326
2465
  /**
2327
2466
  * @generated from message world.ConfigurationFilter
2328
2467
  */
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("Cgt3b3JsZC5wcm90bxIFd29ybGQinxEKBkVudGl0eRIKCgJpZBgBIAEoCRISCgVsYWJlbBgCIAEoCUgAiAEBEioKCmNvbnRyb2xsZXIYAyABKAsyES53b3JsZC5Db250cm9sbGVySAGIAQESJgoIbGlmZXRpbWUYBCABKAsyDy53b3JsZC5MaWZldGltZUgCiAEBEiYKCHByaW9yaXR5GAUgASgOMg8ud29ybGQuUHJpb3JpdHlIA4gBARIgCgVsZWFzZRgGIAEoCzIMLndvcmxkLkxlYXNlSASIAQESJAoHcm91dGluZxgHIAEoCzIOLndvcmxkLlJvdXRpbmdIBYgBARIsCgNnZW8YCyABKAsyGi53b3JsZC5HZW9TcGF0aWFsQ29tcG9uZW50SAaIAQESKwoGc3ltYm9sGAwgASgLMhYud29ybGQuU3ltYm9sQ29tcG9uZW50SAeIAQESKwoGY2FtZXJhGA8gASgLMhYud29ybGQuQ2FtZXJhQ29tcG9uZW50SAiIAQESMQoJZGV0ZWN0aW9uGBAgASgLMhkud29ybGQuRGV0ZWN0aW9uQ29tcG9uZW50SAmIAQESLQoHYmVhcmluZxgRIAEoCzIXLndvcmxkLkJlYXJpbmdDb21wb25lbnRICogBARIpCgV0cmFjaxgVIAEoCzIVLndvcmxkLlRyYWNrQ29tcG9uZW50SAuIAQESLQoHbG9jYXRvchgWIAEoCzIXLndvcmxkLkxvY2F0b3JDb21wb25lbnRIDIgBARIzCgpraW5lbWF0aWNzGBggASgLMhoud29ybGQuS2luZW1hdGljc0NvbXBvbmVudEgNiAEBEiwKBXNoYXBlGBkgASgLMhgud29ybGQuR2VvU2hhcGVDb21wb25lbnRIDogBARI7Cg5jbGFzc2lmaWNhdGlvbhgaIAEoCzIeLndvcmxkLkNsYXNzaWZpY2F0aW9uQ29tcG9uZW50SA+IAQESNQoLdHJhbnNwb25kZXIYGyABKAsyGy53b3JsZC5UcmFuc3BvbmRlckNvbXBvbmVudEgQiAEBEjsKDmFkbWluaXN0cmF0aXZlGBwgASgLMh4ud29ybGQuQWRtaW5pc3RyYXRpdmVDb21wb25lbnRIEYgBARI1CgtvcmllbnRhdGlvbhgeIAEoCzIbLndvcmxkLk9yaWVudGF0aW9uQ29tcG9uZW50SBKIAQESMwoKbmF2aWdhdGlvbhgiIAEoCzIaLndvcmxkLk5hdmlnYXRpb25Db21wb25lbnRIE4gBARIpCgVwb3dlchghIAEoCzIVLndvcmxkLlBvd2VyQ29tcG9uZW50SBSIAQESLQoHY2FwdHVyZRgjIAEoCzIXLndvcmxkLkNhcHR1cmVDb21wb25lbnRIFYgBARIvCgh0YXNrYWJsZRgXIAEoCzIYLndvcmxkLlRhc2thYmxlQ29tcG9uZW50SBaIAQESKwoGZGV2aWNlGDIgASgLMhYud29ybGQuRGV2aWNlQ29tcG9uZW50SBeIAQESMgoGY29uZmlnGDMgASgLMh0ud29ybGQuQ29uZmlndXJhdGlvbkNvbXBvbmVudEgYiAEBEjcKDGNvbmZpZ3VyYWJsZRg0IAEoCzIcLndvcmxkLkNvbmZpZ3VyYWJsZUNvbXBvbmVudEgZiAEBEi0KB21pc3Npb24YHyABKAsyFy53b3JsZC5NaXNzaW9uQ29tcG9uZW50SBqIAQESJwoEbGluaxggIAEoCzIULndvcmxkLkxpbmtDb21wb25lbnRIG4gBARIrCgZtZXRyaWMYJCABKAsyFi53b3JsZC5NZXRyaWNDb21wb25lbnRIHIgBARIrCgZzZW5zb3IYJSABKAsyFi53b3JsZC5TZW5zb3JDb21wb25lbnRIHYgBARI0Cgtsb2NhbF9zaGFwZRgdIAEoCzIaLndvcmxkLkxvY2FsU2hhcGVDb21wb25lbnRIHogBARInCgRwb3NlGCYgASgLMhQud29ybGQuUG9zZUNvbXBvbmVudEgfiAEBEjoKDnRhc2tfZXhlY3V0aW9uGCkgASgLMh0ud29ybGQuVGFza0V4ZWN1dGlvbkNvbXBvbmVudEggiAEBEjkKDWludGVyYWN0aXZpdHkYPCABKAsyHS53b3JsZC5JbnRlcmFjdGl2aXR5Q29tcG9uZW50SCGIAQESNAoLdGFyZ2V0X3Bvc2UYPiABKAsyGi53b3JsZC5UYXJnZXRQb3NlQ29tcG9uZW50SCKIAQESJwoEY2hhdBgnIAEoCzIULndvcmxkLkNoYXRDb21wb25lbnRII4gBAUIICgZfbGFiZWxCDQoLX2NvbnRyb2xsZXJCCwoJX2xpZmV0aW1lQgsKCV9wcmlvcml0eUIICgZfbGVhc2VCCgoIX3JvdXRpbmdCBgoEX2dlb0IJCgdfc3ltYm9sQgkKB19jYW1lcmFCDAoKX2RldGVjdGlvbkIKCghfYmVhcmluZ0IICgZfdHJhY2tCCgoIX2xvY2F0b3JCDQoLX2tpbmVtYXRpY3NCCAoGX3NoYXBlQhEKD19jbGFzc2lmaWNhdGlvbkIOCgxfdHJhbnNwb25kZXJCEQoPX2FkbWluaXN0cmF0aXZlQg4KDF9vcmllbnRhdGlvbkINCgtfbmF2aWdhdGlvbkIICgZfcG93ZXJCCgoIX2NhcHR1cmVCCwoJX3Rhc2thYmxlQgkKB19kZXZpY2VCCQoHX2NvbmZpZ0IPCg1fY29uZmlndXJhYmxlQgoKCF9taXNzaW9uQgcKBV9saW5rQgkKB19tZXRyaWNCCQoHX3NlbnNvckIOCgxfbG9jYWxfc2hhcGVCBwoFX3Bvc2VCEQoPX3Rhc2tfZXhlY3V0aW9uQhAKDl9pbnRlcmFjdGl2aXR5Qg4KDF90YXJnZXRfcG9zZUIHCgVfY2hhdEoECAgQCUoECAkQCkoECAoQCyJgCgpDb250cm9sbGVyEg8KAmlkGAEgASgJSACIAQESEQoEbm9kZRgCIAEoCUgBiAEBEhMKBm9yaWdpbhgDIAEoCUgCiAEBQgUKA19pZEIHCgVfbm9kZUIJCgdfb3JpZ2luIlkKBUxlYXNlEhIKCmNvbnRyb2xsZXIYASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyKvAgoITGlmZXRpbWUSLQoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIuCgV1bnRpbBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIuCgVmcmVzaBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIzCgpjb21wb25lbnRzGAQgAygLMh8ud29ybGQuTGlmZXRpbWUuQ29tcG9uZW50c0VudHJ5GkIKD0NvbXBvbmVudHNFbnRyeRILCgNrZXkYASABKAUSHgoFdmFsdWUYAiABKAsyDy53b3JsZC5MaWZldGltZToCOAFCBwoFX2Zyb21CCAoGX3VudGlsQggKBl9mcmVzaCIXCgdDaGFubmVsEgwKBG5hbWUYASABKAkiKwoHUm91dGluZxIgCghjaGFubmVscxgBIAMoCzIOLndvcmxkLkNoYW5uZWwinwEKE0dlb1NwYXRpYWxDb21wb25lbnQSEQoJbG9uZ2l0dWRlGAEgASgBEhAKCGxhdGl0dWRlGAIgASgBEhUKCGFsdGl0dWRlGAMgASgBSACIAQESMAoKY292YXJpYW5jZRgEIAEoCzIXLndvcmxkLkNvdmFyaWFuY2VNYXRyaXhIAYgBAUILCglfYWx0aXR1ZGVCDQoLX2NvdmFyaWFuY2UiJgoPU3ltYm9sQ29tcG9uZW50EhMKC21pbFN0ZDI1MjVDGAEgASgJImIKFkludGVyYWN0aXZpdHlDb21wb25lbnQSEQoEaWNvbhgBIAEoCUgAiAEBEhoKDXJlZmVyZW5jZV91cmwYAyABKAlIAYgBAUIHCgVfaWNvbkIQCg5fcmVmZXJlbmNlX3VybCLKAQoLTWVkaWFTdHJlYW0SDQoFbGFiZWwYASABKAkSCwoDdXJsGAIgASgJEiwKCHByb3RvY29sGAMgASgOMhoud29ybGQuTWVkaWFTdHJlYW1Qcm90b2NvbBIkCgRyb2xlGAkgASgOMhYud29ybGQuTWVkaWFTdHJlYW1Sb2xlEg0KBWNvZGVjGAogASgJEhIKBXdpZHRoGAsgASgFSACIAQESEwoGaGVpZ2h0GAwgASgFSAGIAQFCCAoGX3dpZHRoQgkKB19oZWlnaHQijgIKD0NhbWVyYUNvbXBvbmVudBIjCgdzdHJlYW1zGAEgAygLMhIud29ybGQuTWVkaWFTdHJlYW0SGAoLZm9jYWxfcG9pbnQYAiABKAlIAIgBARIQCgNmb3YYAyABKAFIAYgBARIWCglyYW5nZV9taW4YBCABKAFIAogBARIWCglyYW5nZV9tYXgYBSABKAFIA4gBARIVCghmb3Zfd2lkZRgGIAEoAUgEiAEBEhUKCGZvdl90ZWxlGAcgASgBSAWIAQFCDgoMX2ZvY2FsX3BvaW50QgYKBF9mb3ZCDAoKX3JhbmdlX21pbkIMCgpfcmFuZ2VfbWF4QgsKCV9mb3Zfd2lkZUILCglfZm92X3RlbGUiwAEKEkRldGVjdGlvbkNvbXBvbmVudBIdChBkZXRlY3RvckVudGl0eUlkGAEgASgJSACIAQESGwoOY2xhc3NpZmljYXRpb24YAiABKAlIAYgBARI1CgxsYXN0TWVhc3VyZWQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCEwoRX2RldGVjdG9yRW50aXR5SWRCEQoPX2NsYXNzaWZpY2F0aW9uQg8KDV9sYXN0TWVhc3VyZWQiWgoQQmVhcmluZ0NvbXBvbmVudBIUCgdhemltdXRoGAEgASgBSACIAQESFgoJZWxldmF0aW9uGAIgASgBSAGIAQFCCgoIX2F6aW11dGhCDAoKX2VsZXZhdGlvbiIjCg9TZW5zb3JDb21wb25lbnQSEAoIY292ZXJhZ2UYAiADKAkiOAoKUXVhdGVybmlvbhIJCgF4GAEgASgBEgkKAXkYAiABKAESCQoBehgDIAEoARIJCgF3GAQgASgBIq4BChBDb3ZhcmlhbmNlTWF0cml4EhAKA214eBgBIAEoAUgAiAEBEhAKA214eRgCIAEoAUgBiAEBEhAKA214ehgDIAEoAUgCiAEBEhAKA215eRgEIAEoAUgDiAEBEhAKA215ehgFIAEoAUgEiAEBEhAKA216ehgGIAEoAUgFiAEBQgYKBF9teHhCBgoEX214eUIGCgRfbXh6QgYKBF9teXlCBgoEX215ekIGCgRfbXp6IswBCg9DYXJ0ZXNpYW5PZmZzZXQSDgoGZWFzdF9tGAEgASgBEg8KB25vcnRoX20YAiABKAESEQoEdXBfbRgDIAEoAUgAiAEBEjAKCmNvdmFyaWFuY2UYBCABKAsyFy53b3JsZC5Db3ZhcmlhbmNlTWF0cml4SAGIAQESKwoLb3JpZW50YXRpb24YBSABKAsyES53b3JsZC5RdWF0ZXJuaW9uSAKIAQFCBwoFX3VwX21CDQoLX2NvdmFyaWFuY2VCDgoMX29yaWVudGF0aW9uIoIDCgtQb2xhck9mZnNldBIPCgdhemltdXRoGAEgASgBEhYKCWVsZXZhdGlvbhgCIAEoAUgAiAEBEhIKBXJhbmdlGAMgASgBSAGIAQESNAoKY292YXJpYW5jZRgEIAEoCzIXLndvcmxkLkNvdmFyaWFuY2VNYXRyaXhCAhgBSAKIAQESHgoRYXppbXV0aF9lcnJvcl9kZWcYCiABKAFIA4gBARIgChNlbGV2YXRpb25fZXJyb3JfZGVnGAsgASgBSASIAQESGgoNcmFuZ2VfZXJyb3JfbRgMIAEoAUgFiAEBEisKC29yaWVudGF0aW9uGAUgASgLMhEud29ybGQuUXVhdGVybmlvbkgGiAEBQgwKCl9lbGV2YXRpb25CCAoGX3JhbmdlQg0KC19jb3ZhcmlhbmNlQhQKEl9hemltdXRoX2Vycm9yX2RlZ0IWChRfZWxldmF0aW9uX2Vycm9yX2RlZ0IQCg5fcmFuZ2VfZXJyb3JfbUIOCgxfb3JpZW50YXRpb24iewoNUG9zZUNvbXBvbmVudBIOCgZwYXJlbnQYASABKAkSKwoJY2FydGVzaWFuGAIgASgLMhYud29ybGQuQ2FydGVzaWFuT2Zmc2V0SAASIwoFcG9sYXIYAyABKAsyEi53b3JsZC5Qb2xhck9mZnNldEgAQggKBm9mZnNldCJxChNUYXJnZXRQb3NlQ29tcG9uZW50EisKCWNhcnRlc2lhbhgBIAEoCzIWLndvcmxkLkNhcnRlc2lhbk9mZnNldEgAEiMKBXBvbGFyGAIgASgLMhIud29ybGQuUG9sYXJPZmZzZXRIAEIICgZvZmZzZXQiSgoPQW5ndWxhclZlbG9jaXR5EhEKCXJvbGxfcmF0ZRgBIAEoARISCgpwaXRjaF9yYXRlGAIgASgBEhAKCHlhd19yYXRlGAMgASgBIn8KFE9yaWVudGF0aW9uQ29tcG9uZW50EiYKC29yaWVudGF0aW9uGAEgASgLMhEud29ybGQuUXVhdGVybmlvbhIwCgpjb3ZhcmlhbmNlGAIgASgLMhcud29ybGQuQ292YXJpYW5jZU1hdHJpeEgAiAEBQg0KC19jb3ZhcmlhbmNlIpABCg5UcmFja0NvbXBvbmVudBIUCgd0cmFja2VyGAEgASgJSACIAQESFAoHaGlzdG9yeRgCIAEoCUgBiAEBEhcKCnByZWRpY3Rpb24YAyABKAlIAogBARISCgpkZXRlY3Rpb25zGAQgAygJQgoKCF90cmFja2VyQgoKCF9oaXN0b3J5Qg0KC19wcmVkaWN0aW9uIisKEExvY2F0b3JDb21wb25lbnQSFwoPbG9jYXRlZEVudGl0eUlkGAEgASgJIjUKD1Rhc2thYmxlQ29udGV4dBIVCghlbnRpdHlJZBgBIAEoCUgAiAEBQgsKCV9lbnRpdHlJZCI2ChBUYXNrYWJsZUFzc2lnbmVlEhUKCGVudGl0eUlkGAEgASgJSACIAQFCCwoJX2VudGl0eUlkIvUBChFUYXNrYWJsZUNvbXBvbmVudBIVCghyZXNlcnZlZBgBIAEoCUgAiAEBEhIKBWxhYmVsGAIgASgJSAGIAQESJwoHY29udGV4dBgDIAMoCzIWLndvcmxkLlRhc2thYmxlQ29udGV4dBIpCghhc3NpZ25lZRgEIAMoCzIXLndvcmxkLlRhc2thYmxlQXNzaWduZWUSJwoGc2NoZW1hGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIhCgRtb2RlGAYgASgOMhMud29ybGQuVGFza2FibGVNb2RlQgsKCV9yZXNlcnZlZEIICgZfbGFiZWwi1QEKFlRhc2tFeGVjdXRpb25Db21wb25lbnQSDAoEdGFzaxgBIAEoCRIwCgpwYXJhbWV0ZXJzGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEigKBXN0YXRlGAMgASgOMhkud29ybGQuVGFza0V4ZWN1dGlvblN0YXRlEhMKBnJlYXNvbhgEIAEoCUgBiAEBEhUKCHByaW9yaXR5GAUgASgNSAKIAQFCDQoLX3BhcmFtZXRlcnNCCQoHX3JlYXNvbkILCglfcHJpb3JpdHkiogEKDUtpbmVtYXRpY3NFbnUSEQoEZWFzdBgBIAEoAUgAiAEBEhIKBW5vcnRoGAIgASgBSAGIAQESDwoCdXAYAyABKAFIAogBARIwCgpjb3ZhcmlhbmNlGAQgASgLMhcud29ybGQuQ292YXJpYW5jZU1hdHJpeEgDiAEBQgcKBV9lYXN0QggKBl9ub3J0aEIFCgNfdXBCDQoLX2NvdmFyaWFuY2Ui7wEKE0tpbmVtYXRpY3NDb21wb25lbnQSLgoLdmVsb2NpdHlFbnUYASABKAsyFC53b3JsZC5LaW5lbWF0aWNzRW51SACIAQESMgoPYWNjZWxlcmF0aW9uRW51GAIgASgLMhQud29ybGQuS2luZW1hdGljc0VudUgBiAEBEjgKE2FuZ3VsYXJWZWxvY2l0eUJvZHkYAyABKAsyFi53b3JsZC5Bbmd1bGFyVmVsb2NpdHlIAogBAUIOCgxfdmVsb2NpdHlFbnVCEgoQX2FjY2VsZXJhdGlvbkVudUIWChRfYW5ndWxhclZlbG9jaXR5Qm9keSJCCghHZW9tZXRyeRIPCgN3a2IYASABKAxCAhgBEiUKBnBsYW5hchgCIAEoCzIVLndvcmxkLlBsYW5hckdlb21ldHJ5IkgKEUdlb1NoYXBlQ29tcG9uZW50EiYKCGdlb21ldHJ5GAEgASgLMg8ud29ybGQuR2VvbWV0cnlIAIgBAUILCglfZ2VvbWV0cnkiZAoTTG9jYWxTaGFwZUNvbXBvbmVudBITCgtyZWxhdGl2ZV90bxgCIAEoCRIrCghnZW9tZXRyeRgBIAEoCzIULndvcmxkLkxvY2FsR2VvbWV0cnlIAIgBAUILCglfZ2VvbWV0cnkiqAEKF0NsYXNzaWZpY2F0aW9uQ29tcG9uZW50EjwKCWRpbWVuc2lvbhgBIAEoDjIkLndvcmxkLkNsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uSACIAQESNAoIaWRlbnRpdHkYAiABKA4yHS53b3JsZC5DbGFzc2lmaWNhdGlvbklkZW50aXR5SAGIAQFCDAoKX2RpbWVuc2lvbkILCglfaWRlbnRpdHkilAEKDlRyYW5zcG9uZGVyQUlTEhEKBG1tc2kYASABKA1IAIgBARIQCgNpbW8YAiABKA1IAYgBARIVCghjYWxsc2lnbhgDIAEoCUgCiAEBEhgKC3Zlc3NlbF9uYW1lGAQgASgJSAOIAQFCBwoFX21tc2lCBgoEX2ltb0ILCglfY2FsbHNpZ25CDgoMX3Zlc3NlbF9uYW1lImMKD1RyYW5zcG9uZGVyQURTQhIZCgxpY2FvX2FkZHJlc3MYASABKA1IAIgBARIWCglmbGlnaHRfaWQYAiABKAlIAYgBAUIPCg1faWNhb19hZGRyZXNzQgwKCl9mbGlnaHRfaWQiewoUVHJhbnNwb25kZXJDb21wb25lbnQSJwoDYWlzGAEgASgLMhUud29ybGQuVHJhbnNwb25kZXJBSVNIAIgBARIpCgRhZHNiGAIgASgLMhYud29ybGQuVHJhbnNwb25kZXJBRFNCSAGIAQFCBgoEX2Fpc0IHCgVfYWRzYiLbAgoXQWRtaW5pc3RyYXRpdmVDb21wb25lbnQSDwoCaWQYASABKAlIAIgBARIRCgRmbGFnGAIgASgJSAGIAQESEgoFb3duZXIYAyABKAlIAogBARIZCgxtYW51ZmFjdHVyZXIYBCABKAlIA4gBARISCgVtb2RlbBgFIAEoCUgEiAEBEhcKCnllYXJfYnVpbHQYBiABKA1IBYgBARIVCghsZW5ndGhfbRgHIAEoAkgGiAEBEhcKCnRvbm5hZ2VfZ3QYCCABKAJIB4gBARIcCg9lbmdpbmVfcG93ZXJfa3cYCSABKAJICIgBAUIFCgNfaWRCBwoFX2ZsYWdCCAoGX293bmVyQg8KDV9tYW51ZmFjdHVyZXJCCAoGX21vZGVsQg0KC195ZWFyX2J1aWx0QgsKCV9sZW5ndGhfbUINCgtfdG9ubmFnZV9ndEISChBfZW5naW5lX3Bvd2VyX2t3IvABChNOYXZpZ2F0aW9uQ29tcG9uZW50EigKBG1vZGUYASABKA4yFS53b3JsZC5OYXZpZ2F0aW9uTW9kZUgAiAEBEhIKBWFybWVkGAIgASgISAGIAQESFgoJZW1lcmdlbmN5GAMgASgISAKIAQESHQoQd2F5cG9pbnRfY3VycmVudBgEIAEoDUgDiAEBEhsKDndheXBvaW50X3RvdGFsGAUgASgNSASIAQFCBwoFX21vZGVCCAoGX2FybWVkQgwKCl9lbWVyZ2VuY3lCEwoRX3dheXBvaW50X2N1cnJlbnRCEQoPX3dheXBvaW50X3RvdGFsIq0BChBNaXNzaW9uQ29tcG9uZW50Eg8KB21lbWJlcnMYASADKAkSGAoLZGVzY3JpcHRpb24YAiABKAlIAIgBARIYCgtkZXN0aW5hdGlvbhgDIAEoCUgBiAEBEiwKA2V0YRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBAUIOCgxfZGVzY3JpcHRpb25CDgoMX2Rlc3RpbmF0aW9uQgYKBF9ldGEixAIKDUxpbmtDb21wb25lbnQSJgoGc3RhdHVzGAEgASgOMhEud29ybGQuTGlua1N0YXR1c0gAiAEBEhUKCHJzc2lfZGJtGAIgASgRSAGIAQESEwoGc25yX2RiGAMgASgRSAKIAQESEAoDdmlhGAUgASgJSAOIAQESHAoPbGFzdF9sYXRlbmN5X21zGAYgASgNSASIAQESGwoOYXZnX2xhdGVuY3lfbXMYByABKA1IBYgBARIyCglsYXN0X3NlZW4YCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAaIAQFCCQoHX3N0YXR1c0ILCglfcnNzaV9kYm1CCQoHX3Nucl9kYkIGCgRfdmlhQhIKEF9sYXN0X2xhdGVuY3lfbXNCEQoPX2F2Z19sYXRlbmN5X21zQgwKCl9sYXN0X3NlZW4i7AEKEENhcHR1cmVDb21wb25lbnQSFAoHcGF5bG9hZBgBIAEoDEgAiAEBEhEKBHBvcnQYAiABKA1IAYgBARIZCgxjb250ZW50X3R5cGUYAyABKAlIAogBARIYCgtjYXB0dXJlZF9ieRgEIAEoCUgDiAEBEjQKC2NhcHR1cmVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBQgoKCF9wYXlsb2FkQgcKBV9wb3J0Qg8KDV9jb250ZW50X3R5cGVCDgoMX2NhcHR1cmVkX2J5Qg4KDF9jYXB0dXJlZF9hdCKsAQoOUG93ZXJDb21wb25lbnQSJQoYYmF0dGVyeV9jaGFyZ2VfcmVtYWluaW5nGAEgASgCSACIAQESFAoHdm9sdGFnZRgCIAEoAkgBiAEBEh4KEXJlbWFpbmluZ19zZWNvbmRzGAMgASgNSAKIAQFCGwoZX2JhdHRlcnlfY2hhcmdlX3JlbWFpbmluZ0IKCghfdm9sdGFnZUIUChJfcmVtYWluaW5nX3NlY29uZHMiMQoRRGV2aWNlQ2xhc3NPcHRpb24SDQoFY2xhc3MYASABKAkSDQoFbGFiZWwYAiABKAki6gIKFUNvbmZpZ3VyYWJsZUNvbXBvbmVudBInCgZzY2hlbWEYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EiYKBXZhbHVlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBInCgVzdGF0ZRgDIAEoDjIYLndvcmxkLkNvbmZpZ3VyYWJsZVN0YXRlEhIKBWVycm9yGAQgASgJSACIAQESEgoFbGFiZWwYBSABKAlIAYgBARIXCg9hcHBsaWVkX3ZlcnNpb24YBiABKAQSOgoYc3VwcG9ydGVkX2RldmljZV9jbGFzc2VzGAcgAygLMhgud29ybGQuRGV2aWNlQ2xhc3NPcHRpb24SNQoMc2NoZWR1bGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBQggKBl9lcnJvckIICgZfbGFiZWxCDwoNX3NjaGVkdWxlZF9hdCLoBAoPRGV2aWNlQ29tcG9uZW50EhMKBnBhcmVudBgBIAEoCUgAiAEBEhMKC2NvbXBvc2l0aW9uGAIgAygJEh8KEnVuaXF1ZV9oYXJkd2FyZV9pZBgEIAEoCUgBiAEBEiEKBXN0YXRlGAYgASgOMhIud29ybGQuRGV2aWNlU3RhdGUSEgoFZXJyb3IYByABKAlIAogBARISCgVjbGFzcxgKIAEoCUgDiAEBEhUKCGNhdGVnb3J5GA0gASgJSASIAQESJAoEbm9kZRgUIAEoCzIRLndvcmxkLk5vZGVEZXZpY2VIBYgBARIiCgN1c2IYFSABKAsyEC53b3JsZC5Vc2JEZXZpY2VIBogBARIgCgJpcBgWIAEoCzIPLndvcmxkLklwRGV2aWNlSAeIAQESKAoGc2VyaWFsGBcgASgLMhMud29ybGQuU2VyaWFsRGV2aWNlSAiIAQESLAoIZXRoZXJuZXQYGCABKAsyFS53b3JsZC5FdGhlcm5ldERldmljZUgJiAEBEiYKBWxwd2FuGBkgASgLMhIud29ybGQuTFBXQU5EZXZpY2VICogBARIwCgptZXNodGFzdGljGBogASgLMhcud29ybGQuTWVzaHRhc3RpY0RldmljZUgLiAEBQgkKB19wYXJlbnRCFQoTX3VuaXF1ZV9oYXJkd2FyZV9pZEIICgZfZXJyb3JCCAoGX2NsYXNzQgsKCV9jYXRlZ29yeUIHCgVfbm9kZUIGCgRfdXNiQgUKA19pcEIJCgdfc2VyaWFsQgsKCV9ldGhlcm5ldEIICgZfbHB3YW5CDQoLX21lc2h0YXN0aWMioAIKCk5vZGVEZXZpY2USFQoIaG9zdG5hbWUYASABKAlIAIgBARIPCgJvcxgCIAEoCUgBiAEBEhEKBGFyY2gYAyABKAlIAogBARIUCgdudW1fY3B1GAQgASgNSAOIAQESFwoKb3NfdmVyc2lvbhgFIAEoCUgEiAEBEhsKDmh5ZHJpc192ZXJzaW9uGAYgASgJSAWIAQESJAoXaHlkcmlzX3VwZGF0ZV9hdmFpbGFibGUYByABKAlIBogBAUILCglfaG9zdG5hbWVCBQoDX29zQgcKBV9hcmNoQgoKCF9udW1fY3B1Qg0KC19vc192ZXJzaW9uQhEKD19oeWRyaXNfdmVyc2lvbkIaChhfaHlkcmlzX3VwZGF0ZV9hdmFpbGFibGUi+QIKCVVzYkRldmljZRIWCgl2ZW5kb3JfaWQYASABKA1IAIgBARIXCgpwcm9kdWN0X2lkGAIgASgNSAGIAQESGQoMZGV2aWNlX2NsYXNzGAMgASgNSAKIAQESHAoPZGV2aWNlX3N1YmNsYXNzGAQgASgNSAOIAQESHAoPZGV2aWNlX3Byb3RvY29sGAUgASgNSASIAQESHgoRbWFudWZhY3R1cmVyX25hbWUYBiABKAlIBYgBARIZCgxwcm9kdWN0X25hbWUYByABKAlIBogBARIaCg1zZXJpYWxfbnVtYmVyGAggASgJSAeIAQFCDAoKX3ZlbmRvcl9pZEINCgtfcHJvZHVjdF9pZEIPCg1fZGV2aWNlX2NsYXNzQhIKEF9kZXZpY2Vfc3ViY2xhc3NCEgoQX2RldmljZV9wcm90b2NvbEIUChJfbWFudWZhY3R1cmVyX25hbWVCDwoNX3Byb2R1Y3RfbmFtZUIQCg5fc2VyaWFsX251bWJlciJCCghJcERldmljZRIRCgRob3N0GAEgASgJSACIAQESEQoEcG9ydBgCIAEoDUgBiAEBQgcKBV9ob3N0QgcKBV9wb3J0IloKDkV0aGVybmV0RGV2aWNlEhgKC21hY19hZGRyZXNzGAEgASgJSACIAQESEwoGdmVuZG9yGAIgASgJSAGIAQFCDgoMX21hY19hZGRyZXNzQgkKB192ZW5kb3IiUAoMU2VyaWFsRGV2aWNlEhEKBHBhdGgYASABKAlIAIgBARIWCgliYXVkX3JhdGUYAiABKA1IAYgBAUIHCgVfcGF0aEIMCgpfYmF1ZF9yYXRlItwBChBNZXNodGFzdGljRGV2aWNlEhUKCG5vZGVfbnVtGAEgASgNSACIAQESFgoJbG9uZ19uYW1lGAIgASgJSAGIAQESFwoKc2hvcnRfbmFtZRgDIAEoCUgCiAEBEhsKDmhhcmR3YXJlX21vZGVsGAQgASgJSAOIAQESFwoKcHVibGljX2tleRgFIAEoDEgEiAEBQgsKCV9ub2RlX251bUIMCgpfbG9uZ19uYW1lQg0KC19zaG9ydF9uYW1lQhEKD19oYXJkd2FyZV9tb2RlbEINCgtfcHVibGljX2tleSJJCgtMUFdBTkRldmljZRIQCgNldWkYASABKAlIAIgBARIUCgdhZGRyZXNzGAIgASgJSAGIAQFCBgoEX2V1aUIKCghfYWRkcmVzcyJRChZDb25maWd1cmF0aW9uQ29tcG9uZW50EiYKBXZhbHVlGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIPCgd2ZXJzaW9uGAUgASgEIqABCg1DaGF0Q29tcG9uZW50EhMKBnNlbmRlchgBIAEoCUgAiAEBEg8KAnRvGAMgASgJSAGIAQESDwoHbWVzc2FnZRgEIAEoCRIVCghyZXBseV90bxgFIAEoCUgCiAEBEhUKCHJlYWN0aW9uGAYgASgISAOIAQFCCQoHX3NlbmRlckIFCgNfdG9CCwoJX3JlcGx5X3RvQgsKCV9yZWFjdGlvbiLVBAoMRW50aXR5RmlsdGVyEg8KAmlkGAEgASgJSACIAQESEgoFbGFiZWwYAiABKAlIAYgBARIiCgNnZW8YAyABKAsyEC53b3JsZC5HZW9GaWx0ZXJIAogBARIsCgh0YXNrYWJsZRgEIAEoCzIVLndvcmxkLlRhc2thYmxlRmlsdGVySAOIAQESEQoJY29tcG9uZW50GAUgAygNEjAKCmNvbnRyb2xsZXIYByABKAsyFy53b3JsZC5Db250cm9sbGVyRmlsdGVySASIAQESJgoFdHJhY2sYCCABKAsyEi53b3JsZC5UcmFja0ZpbHRlckgFiAEBEioKB21pc3Npb24YCSABKAsyFC53b3JsZC5NaXNzaW9uRmlsdGVySAaIAQESKgoHY2hhbm5lbBgKIAEoCzIULndvcmxkLkNoYW5uZWxGaWx0ZXJIB4gBARIoCgZkZXZpY2UYMiABKAsyEy53b3JsZC5EZXZpY2VGaWx0ZXJICIgBARIvCgZjb25maWcYMyABKAsyGi53b3JsZC5Db25maWd1cmF0aW9uRmlsdGVySAmIAQESHwoCb3IYZCADKAsyEy53b3JsZC5FbnRpdHlGaWx0ZXISIAoDbm90GGUgASgLMhMud29ybGQuRW50aXR5RmlsdGVyQgUKA19pZEIICgZfbGFiZWxCBgoEX2dlb0ILCglfdGFza2FibGVCDQoLX2NvbnRyb2xsZXJCCAoGX3RyYWNrQgoKCF9taXNzaW9uQgoKCF9jaGFubmVsQgkKB19kZXZpY2VCCQoHX2NvbmZpZyIqChBDb250cm9sbGVyRmlsdGVyEg8KAmlkGAEgASgJSACIAQFCBQoDX2lkIi8KC1RyYWNrRmlsdGVyEhQKB3RyYWNrZXIYASABKAlIAIgBAUIKCghfdHJhY2tlciJdCg1NaXNzaW9uRmlsdGVyEhcKCm1pc3Npb25faWQYASABKAlIAIgBARIWCgltZW1iZXJfaWQYAiABKAlIAYgBAUINCgtfbWlzc2lvbl9pZEIMCgpfbWVtYmVyX2lkIocBCg5UYXNrYWJsZUZpbHRlchIsCgdjb250ZXh0GAEgASgLMhYud29ybGQuVGFza2FibGVDb250ZXh0SACIAQESLgoIYXNzaWduZWUYAiABKAsyFy53b3JsZC5UYXNrYWJsZUFzc2lnbmVlSAGIAQFCCgoIX2NvbnRleHRCCwoJX2Fzc2lnbmVlIk4KCUdlb0ZpbHRlchIjCghnZW9tZXRyeRgBIAEoCzIPLndvcmxkLkdlb21ldHJ5SAASFQoLZ2VvRW50aXR5SWQYAiABKAlIAEIFCgNnZW8iZgoMRGV2aWNlRmlsdGVyEhMKBnBhcmVudBgBIAEoCUgAiAEBEh8KEnVuaXF1ZV9oYXJkd2FyZV9pZBgEIAEoCUgBiAEBQgkKB19wYXJlbnRCFQoTX3VuaXF1ZV9oYXJkd2FyZV9pZCIVChNDb25maWd1cmF0aW9uRmlsdGVyIh0KDUNoYW5uZWxGaWx0ZXISDAoEbmFtZRgBIAEoCSK0AQoNV2F0Y2hCZWhhdmlvchIYCgttYXhfcmF0ZV9oehgBIAEoAkgAiAEBEioKDG1pbl9wcmlvcml0eRgDIAEoDjIPLndvcmxkLlByaW9yaXR5SAGIAQESIgoVa2VlcGFsaXZlX2ludGVydmFsX21zGAQgASgNSAKIAQFCDgoMX21heF9yYXRlX2h6Qg8KDV9taW5fcHJpb3JpdHlCGAoWX2tlZXBhbGl2ZV9pbnRlcnZhbF9tcyJ8ChNMaXN0RW50aXRpZXNSZXF1ZXN0EiMKBmZpbHRlchgCIAEoCzITLndvcmxkLkVudGl0eUZpbHRlchIsCgliZWhhdmlvdXIYBCABKAsyFC53b3JsZC5XYXRjaEJlaGF2aW9ySACIAQFCDAoKX2JlaGF2aW91ckoECAEQAiI3ChRMaXN0RW50aXRpZXNSZXNwb25zZRIfCghlbnRpdGllcxgBIAMoCzINLndvcmxkLkVudGl0eSJaChNFbnRpdHlDaGFuZ2VSZXF1ZXN0Eh4KB2NoYW5nZXMYASADKAsyDS53b3JsZC5FbnRpdHkSIwoMcmVwbGFjZW1lbnRzGAIgAygLMg0ud29ybGQuRW50aXR5IiEKE0V4cGlyZUVudGl0eVJlcXVlc3QSCgoCaWQYASABKAkiFgoURXhwaXJlRW50aXR5UmVzcG9uc2UiNwoURW50aXR5Q2hhbmdlUmVzcG9uc2USEAoIYWNjZXB0ZWQYASABKAgSDQoFZGVidWcYAiABKAkiUgoRRW50aXR5Q2hhbmdlRXZlbnQSHQoGZW50aXR5GAEgASgLMg0ud29ybGQuRW50aXR5Eh4KAXQYAiABKA4yEy53b3JsZC5FbnRpdHlDaGFuZ2UiPQoRRW50aXR5Q2hhbmdlQmF0Y2gSKAoGZXZlbnRzGAEgAygLMhgud29ybGQuRW50aXR5Q2hhbmdlRXZlbnQiHgoQR2V0RW50aXR5UmVxdWVzdBIKCgJpZBgBIAEoCSIyChFHZXRFbnRpdHlSZXNwb25zZRIdCgZlbnRpdHkYASABKAsyDS53b3JsZC5FbnRpdHkiFQoTR2V0TG9jYWxOb2RlUmVxdWVzdCJGChRHZXRMb2NhbE5vZGVSZXNwb25zZRIdCgZlbnRpdHkYASABKAsyDS53b3JsZC5FbnRpdHkSDwoHbm9kZV9pZBgCIAEoCSIRCg9PYnNlcnZlclJlcXVlc3QicwoNT2JzZXJ2ZXJTdGF0ZRIcCgNnZW8YASABKAsyDy53b3JsZC5HZW9tZXRyeRI0Cgt2aWV3SGlzdG9yeRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIOCgxfdmlld0hpc3RvcnkiRgoOUnVuVGFza1JlcXVlc3QSEAoIZW50aXR5SWQYASABKAkSFQoIcHJpb3JpdHkYAiABKA1IAIgBAUILCglfcHJpb3JpdHkigwEKD1J1blRhc2tSZXNwb25zZRITCgtleGVjdXRpb25JZBgBIAEoCRIhCgZzdGF0dXMYAiABKA4yES53b3JsZC5UYXNrU3RhdHVzEiAKE2h1bWFuUmVhZGFibGVSZWFzb24YAyABKAlIAIgBAUIWChRfaHVtYW5SZWFkYWJsZVJlYXNvbiISChBIYXJkUmVzZXRSZXF1ZXN0IhMKEUhhcmRSZXNldFJlc3BvbnNlKmIKCFByaW9yaXR5EhcKE1ByaW9yaXR5VW5zcGVjaWZpZWQQABITCg9Qcmlvcml0eVJvdXRpbmUQARIVChFQcmlvcml0eUltbWVkaWF0ZRACEhEKDVByaW9yaXR5Rmxhc2gQAyrsAQoTTWVkaWFTdHJlYW1Qcm90b2NvbBIiCh5NZWRpYVN0cmVhbVByb3RvY29sVW5zcGVjaWZpZWQQABIdChlNZWRpYVN0cmVhbVByb3RvY29sV2VicnRjEAESGgoWTWVkaWFTdHJlYW1Qcm90b2NvbEhscxACEhwKGE1lZGlhU3RyZWFtUHJvdG9jb2xNanBlZxADEhwKGE1lZGlhU3RyZWFtUHJvdG9jb2xJbWFnZRAEEh0KGU1lZGlhU3RyZWFtUHJvdG9jb2xJZnJhbWUQBRIbChdNZWRpYVN0cmVhbVByb3RvY29sUnRzcBAGKn8KD01lZGlhU3RyZWFtUm9sZRIeChpNZWRpYVN0cmVhbVJvbGVVbnNwZWNpZmllZBAAEhcKE01lZGlhU3RyZWFtUm9sZU1haW4QARIWChJNZWRpYVN0cmVhbVJvbGVTdWIQAhIbChdNZWRpYVN0cmVhbVJvbGVTbmFwc2hvdBADKnoKDFRhc2thYmxlTW9kZRIZChVUYXNrYWJsZU1vZGVFeGNsdXNpdmUQABIZChVUYXNrYWJsZU1vZGVSZWNvbmNpbGUQARIVChFUYXNrYWJsZU1vZGVTcGF3bhACEh0KGVRhc2thYmxlTW9kZVByaW9yaXR5UXVldWUQAyqRAQoSVGFza0V4ZWN1dGlvblN0YXRlEh0KGVRhc2tFeGVjdXRpb25TdGF0ZVBlbmRpbmcQABIdChlUYXNrRXhlY3V0aW9uU3RhdGVSdW5uaW5nEAESHwobVGFza0V4ZWN1dGlvblN0YXRlQ29tcGxldGVkEAISHAoYVGFza0V4ZWN1dGlvblN0YXRlRmFpbGVkEAMqjAIKFkNsYXNzaWZpY2F0aW9uSWRlbnRpdHkSIQodQ2xhc3NpZmljYXRpb25JZGVudGl0eUludmFsaWQQABIhCh1DbGFzc2lmaWNhdGlvbklkZW50aXR5UGVuZGluZxABEiEKHUNsYXNzaWZpY2F0aW9uSWRlbnRpdHlVbmtub3duEAISIAocQ2xhc3NpZmljYXRpb25JZGVudGl0eUZyaWVuZBADEiEKHUNsYXNzaWZpY2F0aW9uSWRlbnRpdHlOZXV0cmFsEAQSIQodQ2xhc3NpZmljYXRpb25JZGVudGl0eUhvc3RpbGUQBRIhCh1DbGFzc2lmaWNhdGlvbklkZW50aXR5U3VzcGVjdBAGKsQCCh1DbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvbhIoCiRDbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvbkludmFsaWQQABIoCiRDbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvblVua25vd24QARImCiJDbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvblNwYWNlEAISJAogQ2xhc3NpZmljYXRpb25CYXR0bGVEaW1lbnNpb25BaXIQAxInCiNDbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvbkdyb3VuZBAEEisKJ0NsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uU2VhU3VyZmFjZRAFEisKJ0NsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uU3Vic3VyZmFjZRAGKvYBCg5OYXZpZ2F0aW9uTW9kZRIdChlOYXZpZ2F0aW9uTW9kZVVuc3BlY2lmaWVkEAASGQoVTmF2aWdhdGlvbk1vZGVQbGFubmVkEAESHAoYTmF2aWdhdGlvbk1vZGVTdGF0aW9uYXJ5EAISGgoWTmF2aWdhdGlvbk1vZGVVbmRlcndheRADEhwKGE5hdmlnYXRpb25Nb2RlQXV0b25vbW91cxAEEhgKFE5hdmlnYXRpb25Nb2RlR3VpZGVkEAUSGwoXTmF2aWdhdGlvbk1vZGVMb2l0ZXJpbmcQBhIbChdOYXZpZ2F0aW9uTW9kZVJldHVybmluZxAHKmwKCkxpbmtTdGF0dXMSGQoVTGlua1N0YXR1c1Vuc3BlY2lmaWVkEAASFwoTTGlua1N0YXR1c0Nvbm5lY3RlZBABEhYKEkxpbmtTdGF0dXNEZWdyYWRlZBACEhIKDkxpbmtTdGF0dXNMb3N0EAMqUwoLRGV2aWNlU3RhdGUSFgoSRGV2aWNlU3RhdGVQZW5kaW5nEAASFQoRRGV2aWNlU3RhdGVBY3RpdmUQARIVChFEZXZpY2VTdGF0ZUZhaWxlZBACKsoBChFDb25maWd1cmFibGVTdGF0ZRIdChlDb25maWd1cmFibGVTdGF0ZUluYWN0aXZlEAASHQoZQ29uZmlndXJhYmxlU3RhdGVTdGFydGluZxABEhsKF0NvbmZpZ3VyYWJsZVN0YXRlQWN0aXZlEAISGwoXQ29uZmlndXJhYmxlU3RhdGVGYWlsZWQQAxIdChlDb25maWd1cmFibGVTdGF0ZUNvbmZsaWN0EAQSHgoaQ29uZmlndXJhYmxlU3RhdGVTY2hlZHVsZWQQBSp1CgxFbnRpdHlDaGFuZ2USFwoTRW50aXR5Q2hhbmdlSW52YWxpZBAAEhcKE0VudGl0eUNoYW5nZVVwZGF0ZWQQARIXChNFbnRpdHlDaGFuZ2VFeHBpcmVkEAISGgoWRW50aXR5Q2hhbmdlVW5vYnNlcnZlZBADKr8ICg9FbnRpdHlDb21wb25lbnQSHgoaRW50aXR5Q29tcG9uZW50VW5zcGVjaWZpZWQQABIYChRFbnRpdHlDb21wb25lbnRMYWJlbBACEh0KGUVudGl0eUNvbXBvbmVudENvbnRyb2xsZXIQAxIbChdFbnRpdHlDb21wb25lbnRMaWZldGltZRAEEhsKF0VudGl0eUNvbXBvbmVudFByaW9yaXR5EAUSGAoURW50aXR5Q29tcG9uZW50TGVhc2UQBhIaChZFbnRpdHlDb21wb25lbnRSb3V0aW5nEAcSFgoSRW50aXR5Q29tcG9uZW50R2VvEAsSGQoVRW50aXR5Q29tcG9uZW50U3ltYm9sEAwSGQoVRW50aXR5Q29tcG9uZW50Q2FtZXJhEA8SHAoYRW50aXR5Q29tcG9uZW50RGV0ZWN0aW9uEBASGgoWRW50aXR5Q29tcG9uZW50QmVhcmluZxAREhgKFEVudGl0eUNvbXBvbmVudFRyYWNrEBUSGgoWRW50aXR5Q29tcG9uZW50TG9jYXRvchAWEhsKF0VudGl0eUNvbXBvbmVudFRhc2thYmxlEBcSHQoZRW50aXR5Q29tcG9uZW50S2luZW1hdGljcxAYEhgKFEVudGl0eUNvbXBvbmVudFNoYXBlEBkSIQodRW50aXR5Q29tcG9uZW50Q2xhc3NpZmljYXRpb24QGhIeChpFbnRpdHlDb21wb25lbnRUcmFuc3BvbmRlchAbEiEKHUVudGl0eUNvbXBvbmVudEFkbWluaXN0cmF0aXZlEBwSHQoZRW50aXR5Q29tcG9uZW50TG9jYWxTaGFwZRAdEh4KGkVudGl0eUNvbXBvbmVudE9yaWVudGF0aW9uEB4SGgoWRW50aXR5Q29tcG9uZW50TWlzc2lvbhAfEhcKE0VudGl0eUNvbXBvbmVudExpbmsQIBIYChRFbnRpdHlDb21wb25lbnRQb3dlchAhEh0KGUVudGl0eUNvbXBvbmVudE5hdmlnYXRpb24QIhIaChZFbnRpdHlDb21wb25lbnRDYXB0dXJlECMSGQoVRW50aXR5Q29tcG9uZW50TWV0cmljECQSGQoVRW50aXR5Q29tcG9uZW50U2Vuc29yECUSFwoTRW50aXR5Q29tcG9uZW50UG9zZRAmEhcKE0VudGl0eUNvbXBvbmVudENoYXQQJxIgChxFbnRpdHlDb21wb25lbnRUYXNrRXhlY3V0aW9uECkSGQoVRW50aXR5Q29tcG9uZW50RGV2aWNlEDISGQoVRW50aXR5Q29tcG9uZW50Q29uZmlnEDMSHwobRW50aXR5Q29tcG9uZW50Q29uZmlndXJhYmxlEDQSIAocRW50aXR5Q29tcG9uZW50SW50ZXJhY3Rpdml0eRA8Eh0KGUVudGl0eUNvbXBvbmVudFRhcmdldFBvc2UQPippCgpUYXNrU3RhdHVzEhUKEVRhc2tTdGF0dXNJbnZhbGlkEAASFQoRVGFza1N0YXR1c1J1bm5pbmcQARIXChNUYXNrU3RhdHVzQ29tcGxldGVkEAISFAoQVGFza1N0YXR1c0ZhaWxlZBADMq0ECgxXb3JsZFNlcnZpY2USRwoMTGlzdEVudGl0aWVzEhoud29ybGQuTGlzdEVudGl0aWVzUmVxdWVzdBobLndvcmxkLkxpc3RFbnRpdGllc1Jlc3BvbnNlEj4KCUdldEVudGl0eRIXLndvcmxkLkdldEVudGl0eVJlcXVlc3QaGC53b3JsZC5HZXRFbnRpdHlSZXNwb25zZRJHCg1XYXRjaEVudGl0aWVzEhoud29ybGQuTGlzdEVudGl0aWVzUmVxdWVzdBoYLndvcmxkLkVudGl0eUNoYW5nZUV2ZW50MAESPwoEUHVzaBIaLndvcmxkLkVudGl0eUNoYW5nZVJlcXVlc3QaGy53b3JsZC5FbnRpdHlDaGFuZ2VSZXNwb25zZRJHCgxFeHBpcmVFbnRpdHkSGi53b3JsZC5FeHBpcmVFbnRpdHlSZXF1ZXN0Ghsud29ybGQuRXhwaXJlRW50aXR5UmVzcG9uc2USRwoMR2V0TG9jYWxOb2RlEhoud29ybGQuR2V0TG9jYWxOb2RlUmVxdWVzdBobLndvcmxkLkdldExvY2FsTm9kZVJlc3BvbnNlEjgKB1J1blRhc2sSFS53b3JsZC5SdW5UYXNrUmVxdWVzdBoWLndvcmxkLlJ1blRhc2tSZXNwb25zZRI+CglIYXJkUmVzZXQSFy53b3JsZC5IYXJkUmVzZXRSZXF1ZXN0Ghgud29ybGQuSGFyZFJlc2V0UmVzcG9uc2VCIFoeZ2l0aHViLmNvbS9wcm9qZWN0cWFpL3Byb3RvL2dvYgZwcm90bzM", [file_geometry, file_google_protobuf_struct, file_google_protobuf_timestamp, file_metrics]);
14
+ fileDesc("Cgt3b3JsZC5wcm90bxIFd29ybGQinxEKBkVudGl0eRIKCgJpZBgBIAEoCRISCgVsYWJlbBgCIAEoCUgAiAEBEioKCmNvbnRyb2xsZXIYAyABKAsyES53b3JsZC5Db250cm9sbGVySAGIAQESJgoIbGlmZXRpbWUYBCABKAsyDy53b3JsZC5MaWZldGltZUgCiAEBEiYKCHByaW9yaXR5GAUgASgOMg8ud29ybGQuUHJpb3JpdHlIA4gBARIgCgVsZWFzZRgGIAEoCzIMLndvcmxkLkxlYXNlSASIAQESJAoHcm91dGluZxgHIAEoCzIOLndvcmxkLlJvdXRpbmdIBYgBARIsCgNnZW8YCyABKAsyGi53b3JsZC5HZW9TcGF0aWFsQ29tcG9uZW50SAaIAQESKwoGc3ltYm9sGAwgASgLMhYud29ybGQuU3ltYm9sQ29tcG9uZW50SAeIAQESKwoGY2FtZXJhGA8gASgLMhYud29ybGQuQ2FtZXJhQ29tcG9uZW50SAiIAQESMQoJZGV0ZWN0aW9uGBAgASgLMhkud29ybGQuRGV0ZWN0aW9uQ29tcG9uZW50SAmIAQESLQoHYmVhcmluZxgRIAEoCzIXLndvcmxkLkJlYXJpbmdDb21wb25lbnRICogBARIpCgV0cmFjaxgVIAEoCzIVLndvcmxkLlRyYWNrQ29tcG9uZW50SAuIAQESLQoHbG9jYXRvchgWIAEoCzIXLndvcmxkLkxvY2F0b3JDb21wb25lbnRIDIgBARIzCgpraW5lbWF0aWNzGBggASgLMhoud29ybGQuS2luZW1hdGljc0NvbXBvbmVudEgNiAEBEiwKBXNoYXBlGBkgASgLMhgud29ybGQuR2VvU2hhcGVDb21wb25lbnRIDogBARI7Cg5jbGFzc2lmaWNhdGlvbhgaIAEoCzIeLndvcmxkLkNsYXNzaWZpY2F0aW9uQ29tcG9uZW50SA+IAQESNQoLdHJhbnNwb25kZXIYGyABKAsyGy53b3JsZC5UcmFuc3BvbmRlckNvbXBvbmVudEgQiAEBEjsKDmFkbWluaXN0cmF0aXZlGBwgASgLMh4ud29ybGQuQWRtaW5pc3RyYXRpdmVDb21wb25lbnRIEYgBARI1CgtvcmllbnRhdGlvbhgeIAEoCzIbLndvcmxkLk9yaWVudGF0aW9uQ29tcG9uZW50SBKIAQESMwoKbmF2aWdhdGlvbhgiIAEoCzIaLndvcmxkLk5hdmlnYXRpb25Db21wb25lbnRIE4gBARIpCgVwb3dlchghIAEoCzIVLndvcmxkLlBvd2VyQ29tcG9uZW50SBSIAQESLQoHY2FwdHVyZRgjIAEoCzIXLndvcmxkLkNhcHR1cmVDb21wb25lbnRIFYgBARIvCgh0YXNrYWJsZRgXIAEoCzIYLndvcmxkLlRhc2thYmxlQ29tcG9uZW50SBaIAQESKwoGZGV2aWNlGDIgASgLMhYud29ybGQuRGV2aWNlQ29tcG9uZW50SBeIAQESMgoGY29uZmlnGDMgASgLMh0ud29ybGQuQ29uZmlndXJhdGlvbkNvbXBvbmVudEgYiAEBEjcKDGNvbmZpZ3VyYWJsZRg0IAEoCzIcLndvcmxkLkNvbmZpZ3VyYWJsZUNvbXBvbmVudEgZiAEBEi0KB21pc3Npb24YHyABKAsyFy53b3JsZC5NaXNzaW9uQ29tcG9uZW50SBqIAQESJwoEbGluaxggIAEoCzIULndvcmxkLkxpbmtDb21wb25lbnRIG4gBARIrCgZtZXRyaWMYJCABKAsyFi53b3JsZC5NZXRyaWNDb21wb25lbnRIHIgBARIrCgZzZW5zb3IYJSABKAsyFi53b3JsZC5TZW5zb3JDb21wb25lbnRIHYgBARI0Cgtsb2NhbF9zaGFwZRgdIAEoCzIaLndvcmxkLkxvY2FsU2hhcGVDb21wb25lbnRIHogBARInCgRwb3NlGCYgASgLMhQud29ybGQuUG9zZUNvbXBvbmVudEgfiAEBEjoKDnRhc2tfZXhlY3V0aW9uGCkgASgLMh0ud29ybGQuVGFza0V4ZWN1dGlvbkNvbXBvbmVudEggiAEBEjkKDWludGVyYWN0aXZpdHkYPCABKAsyHS53b3JsZC5JbnRlcmFjdGl2aXR5Q29tcG9uZW50SCGIAQESNAoLdGFyZ2V0X3Bvc2UYPiABKAsyGi53b3JsZC5UYXJnZXRQb3NlQ29tcG9uZW50SCKIAQESJwoEY2hhdBgnIAEoCzIULndvcmxkLkNoYXRDb21wb25lbnRII4gBAUIICgZfbGFiZWxCDQoLX2NvbnRyb2xsZXJCCwoJX2xpZmV0aW1lQgsKCV9wcmlvcml0eUIICgZfbGVhc2VCCgoIX3JvdXRpbmdCBgoEX2dlb0IJCgdfc3ltYm9sQgkKB19jYW1lcmFCDAoKX2RldGVjdGlvbkIKCghfYmVhcmluZ0IICgZfdHJhY2tCCgoIX2xvY2F0b3JCDQoLX2tpbmVtYXRpY3NCCAoGX3NoYXBlQhEKD19jbGFzc2lmaWNhdGlvbkIOCgxfdHJhbnNwb25kZXJCEQoPX2FkbWluaXN0cmF0aXZlQg4KDF9vcmllbnRhdGlvbkINCgtfbmF2aWdhdGlvbkIICgZfcG93ZXJCCgoIX2NhcHR1cmVCCwoJX3Rhc2thYmxlQgkKB19kZXZpY2VCCQoHX2NvbmZpZ0IPCg1fY29uZmlndXJhYmxlQgoKCF9taXNzaW9uQgcKBV9saW5rQgkKB19tZXRyaWNCCQoHX3NlbnNvckIOCgxfbG9jYWxfc2hhcGVCBwoFX3Bvc2VCEQoPX3Rhc2tfZXhlY3V0aW9uQhAKDl9pbnRlcmFjdGl2aXR5Qg4KDF90YXJnZXRfcG9zZUIHCgVfY2hhdEoECAgQCUoECAkQCkoECAoQCyJgCgpDb250cm9sbGVyEg8KAmlkGAEgASgJSACIAQESEQoEbm9kZRgCIAEoCUgBiAEBEhMKBm9yaWdpbhgDIAEoCUgCiAEBQgUKA19pZEIHCgVfbm9kZUIJCgdfb3JpZ2luIlkKBUxlYXNlEhIKCmNvbnRyb2xsZXIYASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyKvAgoITGlmZXRpbWUSLQoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIuCgV1bnRpbBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIuCgVmcmVzaBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIzCgpjb21wb25lbnRzGAQgAygLMh8ud29ybGQuTGlmZXRpbWUuQ29tcG9uZW50c0VudHJ5GkIKD0NvbXBvbmVudHNFbnRyeRILCgNrZXkYASABKAUSHgoFdmFsdWUYAiABKAsyDy53b3JsZC5MaWZldGltZToCOAFCBwoFX2Zyb21CCAoGX3VudGlsQggKBl9mcmVzaCIXCgdDaGFubmVsEgwKBG5hbWUYASABKAkiKwoHUm91dGluZxIgCghjaGFubmVscxgBIAMoCzIOLndvcmxkLkNoYW5uZWwinwEKE0dlb1NwYXRpYWxDb21wb25lbnQSEQoJbG9uZ2l0dWRlGAEgASgBEhAKCGxhdGl0dWRlGAIgASgBEhUKCGFsdGl0dWRlGAMgASgBSACIAQESMAoKY292YXJpYW5jZRgEIAEoCzIXLndvcmxkLkNvdmFyaWFuY2VNYXRyaXhIAYgBAUILCglfYWx0aXR1ZGVCDQoLX2NvdmFyaWFuY2UiJgoPU3ltYm9sQ29tcG9uZW50EhMKC21pbFN0ZDI1MjVDGAEgASgJImIKFkludGVyYWN0aXZpdHlDb21wb25lbnQSEQoEaWNvbhgBIAEoCUgAiAEBEhoKDXJlZmVyZW5jZV91cmwYAyABKAlIAYgBAUIHCgVfaWNvbkIQCg5fcmVmZXJlbmNlX3VybCLKAQoLTWVkaWFTdHJlYW0SDQoFbGFiZWwYASABKAkSCwoDdXJsGAIgASgJEiwKCHByb3RvY29sGAMgASgOMhoud29ybGQuTWVkaWFTdHJlYW1Qcm90b2NvbBIkCgRyb2xlGAkgASgOMhYud29ybGQuTWVkaWFTdHJlYW1Sb2xlEg0KBWNvZGVjGAogASgJEhIKBXdpZHRoGAsgASgFSACIAQESEwoGaGVpZ2h0GAwgASgFSAGIAQFCCAoGX3dpZHRoQgkKB19oZWlnaHQijgIKD0NhbWVyYUNvbXBvbmVudBIjCgdzdHJlYW1zGAEgAygLMhIud29ybGQuTWVkaWFTdHJlYW0SGAoLZm9jYWxfcG9pbnQYAiABKAlIAIgBARIQCgNmb3YYAyABKAFIAYgBARIWCglyYW5nZV9taW4YBCABKAFIAogBARIWCglyYW5nZV9tYXgYBSABKAFIA4gBARIVCghmb3Zfd2lkZRgGIAEoAUgEiAEBEhUKCGZvdl90ZWxlGAcgASgBSAWIAQFCDgoMX2ZvY2FsX3BvaW50QgYKBF9mb3ZCDAoKX3JhbmdlX21pbkIMCgpfcmFuZ2VfbWF4QgsKCV9mb3Zfd2lkZUILCglfZm92X3RlbGUiwAEKEkRldGVjdGlvbkNvbXBvbmVudBIdChBkZXRlY3RvckVudGl0eUlkGAEgASgJSACIAQESGwoOY2xhc3NpZmljYXRpb24YAiABKAlIAYgBARI1CgxsYXN0TWVhc3VyZWQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCEwoRX2RldGVjdG9yRW50aXR5SWRCEQoPX2NsYXNzaWZpY2F0aW9uQg8KDV9sYXN0TWVhc3VyZWQiWgoQQmVhcmluZ0NvbXBvbmVudBIUCgdhemltdXRoGAEgASgBSACIAQESFgoJZWxldmF0aW9uGAIgASgBSAGIAQFCCgoIX2F6aW11dGhCDAoKX2VsZXZhdGlvbiIjCg9TZW5zb3JDb21wb25lbnQSEAoIY292ZXJhZ2UYAiADKAkiOAoKUXVhdGVybmlvbhIJCgF4GAEgASgBEgkKAXkYAiABKAESCQoBehgDIAEoARIJCgF3GAQgASgBIq4BChBDb3ZhcmlhbmNlTWF0cml4EhAKA214eBgBIAEoAUgAiAEBEhAKA214eRgCIAEoAUgBiAEBEhAKA214ehgDIAEoAUgCiAEBEhAKA215eRgEIAEoAUgDiAEBEhAKA215ehgFIAEoAUgEiAEBEhAKA216ehgGIAEoAUgFiAEBQgYKBF9teHhCBgoEX214eUIGCgRfbXh6QgYKBF9teXlCBgoEX215ekIGCgRfbXp6IswBCg9DYXJ0ZXNpYW5PZmZzZXQSDgoGZWFzdF9tGAEgASgBEg8KB25vcnRoX20YAiABKAESEQoEdXBfbRgDIAEoAUgAiAEBEjAKCmNvdmFyaWFuY2UYBCABKAsyFy53b3JsZC5Db3ZhcmlhbmNlTWF0cml4SAGIAQESKwoLb3JpZW50YXRpb24YBSABKAsyES53b3JsZC5RdWF0ZXJuaW9uSAKIAQFCBwoFX3VwX21CDQoLX2NvdmFyaWFuY2VCDgoMX29yaWVudGF0aW9uIoIDCgtQb2xhck9mZnNldBIPCgdhemltdXRoGAEgASgBEhYKCWVsZXZhdGlvbhgCIAEoAUgAiAEBEhIKBXJhbmdlGAMgASgBSAGIAQESNAoKY292YXJpYW5jZRgEIAEoCzIXLndvcmxkLkNvdmFyaWFuY2VNYXRyaXhCAhgBSAKIAQESHgoRYXppbXV0aF9lcnJvcl9kZWcYCiABKAFIA4gBARIgChNlbGV2YXRpb25fZXJyb3JfZGVnGAsgASgBSASIAQESGgoNcmFuZ2VfZXJyb3JfbRgMIAEoAUgFiAEBEisKC29yaWVudGF0aW9uGAUgASgLMhEud29ybGQuUXVhdGVybmlvbkgGiAEBQgwKCl9lbGV2YXRpb25CCAoGX3JhbmdlQg0KC19jb3ZhcmlhbmNlQhQKEl9hemltdXRoX2Vycm9yX2RlZ0IWChRfZWxldmF0aW9uX2Vycm9yX2RlZ0IQCg5fcmFuZ2VfZXJyb3JfbUIOCgxfb3JpZW50YXRpb24iewoNUG9zZUNvbXBvbmVudBIOCgZwYXJlbnQYASABKAkSKwoJY2FydGVzaWFuGAIgASgLMhYud29ybGQuQ2FydGVzaWFuT2Zmc2V0SAASIwoFcG9sYXIYAyABKAsyEi53b3JsZC5Qb2xhck9mZnNldEgAQggKBm9mZnNldCJxChNUYXJnZXRQb3NlQ29tcG9uZW50EisKCWNhcnRlc2lhbhgBIAEoCzIWLndvcmxkLkNhcnRlc2lhbk9mZnNldEgAEiMKBXBvbGFyGAIgASgLMhIud29ybGQuUG9sYXJPZmZzZXRIAEIICgZvZmZzZXQiSgoPQW5ndWxhclZlbG9jaXR5EhEKCXJvbGxfcmF0ZRgBIAEoARISCgpwaXRjaF9yYXRlGAIgASgBEhAKCHlhd19yYXRlGAMgASgBIn8KFE9yaWVudGF0aW9uQ29tcG9uZW50EiYKC29yaWVudGF0aW9uGAEgASgLMhEud29ybGQuUXVhdGVybmlvbhIwCgpjb3ZhcmlhbmNlGAIgASgLMhcud29ybGQuQ292YXJpYW5jZU1hdHJpeEgAiAEBQg0KC19jb3ZhcmlhbmNlIpABCg5UcmFja0NvbXBvbmVudBIUCgd0cmFja2VyGAEgASgJSACIAQESFAoHaGlzdG9yeRgCIAEoCUgBiAEBEhcKCnByZWRpY3Rpb24YAyABKAlIAogBARISCgpkZXRlY3Rpb25zGAQgAygJQgoKCF90cmFja2VyQgoKCF9oaXN0b3J5Qg0KC19wcmVkaWN0aW9uIisKEExvY2F0b3JDb21wb25lbnQSFwoPbG9jYXRlZEVudGl0eUlkGAEgASgJIjUKD1Rhc2thYmxlQ29udGV4dBIVCghlbnRpdHlJZBgBIAEoCUgAiAEBQgsKCV9lbnRpdHlJZCI2ChBUYXNrYWJsZUFzc2lnbmVlEhUKCGVudGl0eUlkGAEgASgJSACIAQFCCwoJX2VudGl0eUlkIvUBChFUYXNrYWJsZUNvbXBvbmVudBIVCghyZXNlcnZlZBgBIAEoCUgAiAEBEhIKBWxhYmVsGAIgASgJSAGIAQESJwoHY29udGV4dBgDIAMoCzIWLndvcmxkLlRhc2thYmxlQ29udGV4dBIpCghhc3NpZ25lZRgEIAMoCzIXLndvcmxkLlRhc2thYmxlQXNzaWduZWUSJwoGc2NoZW1hGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIhCgRtb2RlGAYgASgOMhMud29ybGQuVGFza2FibGVNb2RlQgsKCV9yZXNlcnZlZEIICgZfbGFiZWwi1QEKFlRhc2tFeGVjdXRpb25Db21wb25lbnQSDAoEdGFzaxgBIAEoCRIwCgpwYXJhbWV0ZXJzGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEigKBXN0YXRlGAMgASgOMhkud29ybGQuVGFza0V4ZWN1dGlvblN0YXRlEhMKBnJlYXNvbhgEIAEoCUgBiAEBEhUKCHByaW9yaXR5GAUgASgNSAKIAQFCDQoLX3BhcmFtZXRlcnNCCQoHX3JlYXNvbkILCglfcHJpb3JpdHkiogEKDUtpbmVtYXRpY3NFbnUSEQoEZWFzdBgBIAEoAUgAiAEBEhIKBW5vcnRoGAIgASgBSAGIAQESDwoCdXAYAyABKAFIAogBARIwCgpjb3ZhcmlhbmNlGAQgASgLMhcud29ybGQuQ292YXJpYW5jZU1hdHJpeEgDiAEBQgcKBV9lYXN0QggKBl9ub3J0aEIFCgNfdXBCDQoLX2NvdmFyaWFuY2Ui7wEKE0tpbmVtYXRpY3NDb21wb25lbnQSLgoLdmVsb2NpdHlFbnUYASABKAsyFC53b3JsZC5LaW5lbWF0aWNzRW51SACIAQESMgoPYWNjZWxlcmF0aW9uRW51GAIgASgLMhQud29ybGQuS2luZW1hdGljc0VudUgBiAEBEjgKE2FuZ3VsYXJWZWxvY2l0eUJvZHkYAyABKAsyFi53b3JsZC5Bbmd1bGFyVmVsb2NpdHlIAogBAUIOCgxfdmVsb2NpdHlFbnVCEgoQX2FjY2VsZXJhdGlvbkVudUIWChRfYW5ndWxhclZlbG9jaXR5Qm9keSJCCghHZW9tZXRyeRIPCgN3a2IYASABKAxCAhgBEiUKBnBsYW5hchgCIAEoCzIVLndvcmxkLlBsYW5hckdlb21ldHJ5IkgKEUdlb1NoYXBlQ29tcG9uZW50EiYKCGdlb21ldHJ5GAEgASgLMg8ud29ybGQuR2VvbWV0cnlIAIgBAUILCglfZ2VvbWV0cnkiZAoTTG9jYWxTaGFwZUNvbXBvbmVudBITCgtyZWxhdGl2ZV90bxgCIAEoCRIrCghnZW9tZXRyeRgBIAEoCzIULndvcmxkLkxvY2FsR2VvbWV0cnlIAIgBAUILCglfZ2VvbWV0cnkiqAEKF0NsYXNzaWZpY2F0aW9uQ29tcG9uZW50EjwKCWRpbWVuc2lvbhgBIAEoDjIkLndvcmxkLkNsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uSACIAQESNAoIaWRlbnRpdHkYAiABKA4yHS53b3JsZC5DbGFzc2lmaWNhdGlvbklkZW50aXR5SAGIAQFCDAoKX2RpbWVuc2lvbkILCglfaWRlbnRpdHkilAEKDlRyYW5zcG9uZGVyQUlTEhEKBG1tc2kYASABKA1IAIgBARIQCgNpbW8YAiABKA1IAYgBARIVCghjYWxsc2lnbhgDIAEoCUgCiAEBEhgKC3Zlc3NlbF9uYW1lGAQgASgJSAOIAQFCBwoFX21tc2lCBgoEX2ltb0ILCglfY2FsbHNpZ25CDgoMX3Zlc3NlbF9uYW1lImMKD1RyYW5zcG9uZGVyQURTQhIZCgxpY2FvX2FkZHJlc3MYASABKA1IAIgBARIWCglmbGlnaHRfaWQYAiABKAlIAYgBAUIPCg1faWNhb19hZGRyZXNzQgwKCl9mbGlnaHRfaWQiewoUVHJhbnNwb25kZXJDb21wb25lbnQSJwoDYWlzGAEgASgLMhUud29ybGQuVHJhbnNwb25kZXJBSVNIAIgBARIpCgRhZHNiGAIgASgLMhYud29ybGQuVHJhbnNwb25kZXJBRFNCSAGIAQFCBgoEX2Fpc0IHCgVfYWRzYiLbAgoXQWRtaW5pc3RyYXRpdmVDb21wb25lbnQSDwoCaWQYASABKAlIAIgBARIRCgRmbGFnGAIgASgJSAGIAQESEgoFb3duZXIYAyABKAlIAogBARIZCgxtYW51ZmFjdHVyZXIYBCABKAlIA4gBARISCgVtb2RlbBgFIAEoCUgEiAEBEhcKCnllYXJfYnVpbHQYBiABKA1IBYgBARIVCghsZW5ndGhfbRgHIAEoAkgGiAEBEhcKCnRvbm5hZ2VfZ3QYCCABKAJIB4gBARIcCg9lbmdpbmVfcG93ZXJfa3cYCSABKAJICIgBAUIFCgNfaWRCBwoFX2ZsYWdCCAoGX293bmVyQg8KDV9tYW51ZmFjdHVyZXJCCAoGX21vZGVsQg0KC195ZWFyX2J1aWx0QgsKCV9sZW5ndGhfbUINCgtfdG9ubmFnZV9ndEISChBfZW5naW5lX3Bvd2VyX2t3IvABChNOYXZpZ2F0aW9uQ29tcG9uZW50EigKBG1vZGUYASABKA4yFS53b3JsZC5OYXZpZ2F0aW9uTW9kZUgAiAEBEhIKBWFybWVkGAIgASgISAGIAQESFgoJZW1lcmdlbmN5GAMgASgISAKIAQESHQoQd2F5cG9pbnRfY3VycmVudBgEIAEoDUgDiAEBEhsKDndheXBvaW50X3RvdGFsGAUgASgNSASIAQFCBwoFX21vZGVCCAoGX2FybWVkQgwKCl9lbWVyZ2VuY3lCEwoRX3dheXBvaW50X2N1cnJlbnRCEQoPX3dheXBvaW50X3RvdGFsIq0BChBNaXNzaW9uQ29tcG9uZW50Eg8KB21lbWJlcnMYASADKAkSGAoLZGVzY3JpcHRpb24YAiABKAlIAIgBARIYCgtkZXN0aW5hdGlvbhgDIAEoCUgBiAEBEiwKA2V0YRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBAUIOCgxfZGVzY3JpcHRpb25CDgoMX2Rlc3RpbmF0aW9uQgYKBF9ldGEixAIKDUxpbmtDb21wb25lbnQSJgoGc3RhdHVzGAEgASgOMhEud29ybGQuTGlua1N0YXR1c0gAiAEBEhUKCHJzc2lfZGJtGAIgASgRSAGIAQESEwoGc25yX2RiGAMgASgRSAKIAQESEAoDdmlhGAUgASgJSAOIAQESHAoPbGFzdF9sYXRlbmN5X21zGAYgASgNSASIAQESGwoOYXZnX2xhdGVuY3lfbXMYByABKA1IBYgBARIyCglsYXN0X3NlZW4YCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAaIAQFCCQoHX3N0YXR1c0ILCglfcnNzaV9kYm1CCQoHX3Nucl9kYkIGCgRfdmlhQhIKEF9sYXN0X2xhdGVuY3lfbXNCEQoPX2F2Z19sYXRlbmN5X21zQgwKCl9sYXN0X3NlZW4i7AEKEENhcHR1cmVDb21wb25lbnQSFAoHcGF5bG9hZBgBIAEoDEgAiAEBEhEKBHBvcnQYAiABKA1IAYgBARIZCgxjb250ZW50X3R5cGUYAyABKAlIAogBARIYCgtjYXB0dXJlZF9ieRgEIAEoCUgDiAEBEjQKC2NhcHR1cmVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBQgoKCF9wYXlsb2FkQgcKBV9wb3J0Qg8KDV9jb250ZW50X3R5cGVCDgoMX2NhcHR1cmVkX2J5Qg4KDF9jYXB0dXJlZF9hdCKsAQoOUG93ZXJDb21wb25lbnQSJQoYYmF0dGVyeV9jaGFyZ2VfcmVtYWluaW5nGAEgASgCSACIAQESFAoHdm9sdGFnZRgCIAEoAkgBiAEBEh4KEXJlbWFpbmluZ19zZWNvbmRzGAMgASgNSAKIAQFCGwoZX2JhdHRlcnlfY2hhcmdlX3JlbWFpbmluZ0IKCghfdm9sdGFnZUIUChJfcmVtYWluaW5nX3NlY29uZHMiMQoRRGV2aWNlQ2xhc3NPcHRpb24SDQoFY2xhc3MYASABKAkSDQoFbGFiZWwYAiABKAki6gIKFUNvbmZpZ3VyYWJsZUNvbXBvbmVudBInCgZzY2hlbWEYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EiYKBXZhbHVlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBInCgVzdGF0ZRgDIAEoDjIYLndvcmxkLkNvbmZpZ3VyYWJsZVN0YXRlEhIKBWVycm9yGAQgASgJSACIAQESEgoFbGFiZWwYBSABKAlIAYgBARIXCg9hcHBsaWVkX3ZlcnNpb24YBiABKAQSOgoYc3VwcG9ydGVkX2RldmljZV9jbGFzc2VzGAcgAygLMhgud29ybGQuRGV2aWNlQ2xhc3NPcHRpb24SNQoMc2NoZWR1bGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBQggKBl9lcnJvckIICgZfbGFiZWxCDwoNX3NjaGVkdWxlZF9hdCKUBQoPRGV2aWNlQ29tcG9uZW50EhMKBnBhcmVudBgBIAEoCUgAiAEBEhMKC2NvbXBvc2l0aW9uGAIgAygJEh8KEnVuaXF1ZV9oYXJkd2FyZV9pZBgEIAEoCUgBiAEBEiEKBXN0YXRlGAYgASgOMhIud29ybGQuRGV2aWNlU3RhdGUSEgoFZXJyb3IYByABKAlIAogBARISCgVjbGFzcxgKIAEoCUgDiAEBEhUKCGNhdGVnb3J5GA0gASgJSASIAQESJAoEbm9kZRgUIAEoCzIRLndvcmxkLk5vZGVEZXZpY2VIBYgBARIiCgN1c2IYFSABKAsyEC53b3JsZC5Vc2JEZXZpY2VIBogBARIgCgJpcBgWIAEoCzIPLndvcmxkLklwRGV2aWNlSAeIAQESKAoGc2VyaWFsGBcgASgLMhMud29ybGQuU2VyaWFsRGV2aWNlSAiIAQESLAoIZXRoZXJuZXQYGCABKAsyFS53b3JsZC5FdGhlcm5ldERldmljZUgJiAEBEiYKBWxwd2FuGBkgASgLMhIud29ybGQuTFBXQU5EZXZpY2VICogBARIwCgptZXNodGFzdGljGBogASgLMhcud29ybGQuTWVzaHRhc3RpY0RldmljZUgLiAEBEiIKA2JsZRgbIAEoCzIQLndvcmxkLkJsZURldmljZUgMiAEBQgkKB19wYXJlbnRCFQoTX3VuaXF1ZV9oYXJkd2FyZV9pZEIICgZfZXJyb3JCCAoGX2NsYXNzQgsKCV9jYXRlZ29yeUIHCgVfbm9kZUIGCgRfdXNiQgUKA19pcEIJCgdfc2VyaWFsQgsKCV9ldGhlcm5ldEIICgZfbHB3YW5CDQoLX21lc2h0YXN0aWNCBgoEX2JsZSKgAgoKTm9kZURldmljZRIVCghob3N0bmFtZRgBIAEoCUgAiAEBEg8KAm9zGAIgASgJSAGIAQESEQoEYXJjaBgDIAEoCUgCiAEBEhQKB251bV9jcHUYBCABKA1IA4gBARIXCgpvc192ZXJzaW9uGAUgASgJSASIAQESGwoOaHlkcmlzX3ZlcnNpb24YBiABKAlIBYgBARIkChdoeWRyaXNfdXBkYXRlX2F2YWlsYWJsZRgHIAEoCUgGiAEBQgsKCV9ob3N0bmFtZUIFCgNfb3NCBwoFX2FyY2hCCgoIX251bV9jcHVCDQoLX29zX3ZlcnNpb25CEQoPX2h5ZHJpc192ZXJzaW9uQhoKGF9oeWRyaXNfdXBkYXRlX2F2YWlsYWJsZSL5AgoJVXNiRGV2aWNlEhYKCXZlbmRvcl9pZBgBIAEoDUgAiAEBEhcKCnByb2R1Y3RfaWQYAiABKA1IAYgBARIZCgxkZXZpY2VfY2xhc3MYAyABKA1IAogBARIcCg9kZXZpY2Vfc3ViY2xhc3MYBCABKA1IA4gBARIcCg9kZXZpY2VfcHJvdG9jb2wYBSABKA1IBIgBARIeChFtYW51ZmFjdHVyZXJfbmFtZRgGIAEoCUgFiAEBEhkKDHByb2R1Y3RfbmFtZRgHIAEoCUgGiAEBEhoKDXNlcmlhbF9udW1iZXIYCCABKAlIB4gBAUIMCgpfdmVuZG9yX2lkQg0KC19wcm9kdWN0X2lkQg8KDV9kZXZpY2VfY2xhc3NCEgoQX2RldmljZV9zdWJjbGFzc0ISChBfZGV2aWNlX3Byb3RvY29sQhQKEl9tYW51ZmFjdHVyZXJfbmFtZUIPCg1fcHJvZHVjdF9uYW1lQhAKDl9zZXJpYWxfbnVtYmVyIkIKCElwRGV2aWNlEhEKBGhvc3QYASABKAlIAIgBARIRCgRwb3J0GAIgASgNSAGIAQFCBwoFX2hvc3RCBwoFX3BvcnQiWgoORXRoZXJuZXREZXZpY2USGAoLbWFjX2FkZHJlc3MYASABKAlIAIgBARITCgZ2ZW5kb3IYAiABKAlIAYgBAUIOCgxfbWFjX2FkZHJlc3NCCQoHX3ZlbmRvciJQCgxTZXJpYWxEZXZpY2USEQoEcGF0aBgBIAEoCUgAiAEBEhYKCWJhdWRfcmF0ZRgCIAEoDUgBiAEBQgcKBV9wYXRoQgwKCl9iYXVkX3JhdGUi3AEKEE1lc2h0YXN0aWNEZXZpY2USFQoIbm9kZV9udW0YASABKA1IAIgBARIWCglsb25nX25hbWUYAiABKAlIAYgBARIXCgpzaG9ydF9uYW1lGAMgASgJSAKIAQESGwoOaGFyZHdhcmVfbW9kZWwYBCABKAlIA4gBARIXCgpwdWJsaWNfa2V5GAUgASgMSASIAQFCCwoJX25vZGVfbnVtQgwKCl9sb25nX25hbWVCDQoLX3Nob3J0X25hbWVCEQoPX2hhcmR3YXJlX21vZGVsQg0KC19wdWJsaWNfa2V5IkkKC0xQV0FORGV2aWNlEhAKA2V1aRgBIAEoCUgAiAEBEhQKB2FkZHJlc3MYAiABKAlIAYgBAUIGCgRfZXVpQgoKCF9hZGRyZXNzImAKCUJsZURldmljZRIUCgdhZGRyZXNzGAEgASgJSACIAQESEQoEbmFtZRgCIAEoCUgBiAEBEhUKDXNlcnZpY2VfdXVpZHMYBCADKAlCCgoIX2FkZHJlc3NCBwoFX25hbWUiUQoWQ29uZmlndXJhdGlvbkNvbXBvbmVudBImCgV2YWx1ZRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSDwoHdmVyc2lvbhgFIAEoBCKgAQoNQ2hhdENvbXBvbmVudBITCgZzZW5kZXIYASABKAlIAIgBARIPCgJ0bxgDIAEoCUgBiAEBEg8KB21lc3NhZ2UYBCABKAkSFQoIcmVwbHlfdG8YBSABKAlIAogBARIVCghyZWFjdGlvbhgGIAEoCEgDiAEBQgkKB19zZW5kZXJCBQoDX3RvQgsKCV9yZXBseV90b0ILCglfcmVhY3Rpb24i1QQKDEVudGl0eUZpbHRlchIPCgJpZBgBIAEoCUgAiAEBEhIKBWxhYmVsGAIgASgJSAGIAQESIgoDZ2VvGAMgASgLMhAud29ybGQuR2VvRmlsdGVySAKIAQESLAoIdGFza2FibGUYBCABKAsyFS53b3JsZC5UYXNrYWJsZUZpbHRlckgDiAEBEhEKCWNvbXBvbmVudBgFIAMoDRIwCgpjb250cm9sbGVyGAcgASgLMhcud29ybGQuQ29udHJvbGxlckZpbHRlckgEiAEBEiYKBXRyYWNrGAggASgLMhIud29ybGQuVHJhY2tGaWx0ZXJIBYgBARIqCgdtaXNzaW9uGAkgASgLMhQud29ybGQuTWlzc2lvbkZpbHRlckgGiAEBEioKB2NoYW5uZWwYCiABKAsyFC53b3JsZC5DaGFubmVsRmlsdGVySAeIAQESKAoGZGV2aWNlGDIgASgLMhMud29ybGQuRGV2aWNlRmlsdGVySAiIAQESLwoGY29uZmlnGDMgASgLMhoud29ybGQuQ29uZmlndXJhdGlvbkZpbHRlckgJiAEBEh8KAm9yGGQgAygLMhMud29ybGQuRW50aXR5RmlsdGVyEiAKA25vdBhlIAEoCzITLndvcmxkLkVudGl0eUZpbHRlckIFCgNfaWRCCAoGX2xhYmVsQgYKBF9nZW9CCwoJX3Rhc2thYmxlQg0KC19jb250cm9sbGVyQggKBl90cmFja0IKCghfbWlzc2lvbkIKCghfY2hhbm5lbEIJCgdfZGV2aWNlQgkKB19jb25maWciKgoQQ29udHJvbGxlckZpbHRlchIPCgJpZBgBIAEoCUgAiAEBQgUKA19pZCIvCgtUcmFja0ZpbHRlchIUCgd0cmFja2VyGAEgASgJSACIAQFCCgoIX3RyYWNrZXIiXQoNTWlzc2lvbkZpbHRlchIXCgptaXNzaW9uX2lkGAEgASgJSACIAQESFgoJbWVtYmVyX2lkGAIgASgJSAGIAQFCDQoLX21pc3Npb25faWRCDAoKX21lbWJlcl9pZCKHAQoOVGFza2FibGVGaWx0ZXISLAoHY29udGV4dBgBIAEoCzIWLndvcmxkLlRhc2thYmxlQ29udGV4dEgAiAEBEi4KCGFzc2lnbmVlGAIgASgLMhcud29ybGQuVGFza2FibGVBc3NpZ25lZUgBiAEBQgoKCF9jb250ZXh0QgsKCV9hc3NpZ25lZSJOCglHZW9GaWx0ZXISIwoIZ2VvbWV0cnkYASABKAsyDy53b3JsZC5HZW9tZXRyeUgAEhUKC2dlb0VudGl0eUlkGAIgASgJSABCBQoDZ2VvIvYBCgxEZXZpY2VGaWx0ZXISEwoGcGFyZW50GAEgASgJSACIAQESHwoSdW5pcXVlX2hhcmR3YXJlX2lkGAQgASgJSAGIAQESGQoMZGV2aWNlX2NsYXNzGAUgASgJSAKIAQESKAoDYmxlGAYgASgLMhYud29ybGQuQmxlRGV2aWNlRmlsdGVySAOIAQESKAoDdXNiGAcgASgLMhYud29ybGQuVXNiRGV2aWNlRmlsdGVySASIAQFCCQoHX3BhcmVudEIVChNfdW5pcXVlX2hhcmR3YXJlX2lkQg8KDV9kZXZpY2VfY2xhc3NCBgoEX2JsZUIGCgRfdXNiImYKD0JsZURldmljZUZpbHRlchIUCgdhZGRyZXNzGAEgASgJSACIAQESEQoEbmFtZRgCIAEoCUgBiAEBEhUKDXNlcnZpY2VfdXVpZHMYBCADKAlCCgoIX2FkZHJlc3NCBwoFX25hbWUi/wIKD1VzYkRldmljZUZpbHRlchIWCgl2ZW5kb3JfaWQYASABKA1IAIgBARIXCgpwcm9kdWN0X2lkGAIgASgNSAGIAQESGQoMZGV2aWNlX2NsYXNzGAMgASgNSAKIAQESHAoPZGV2aWNlX3N1YmNsYXNzGAQgASgNSAOIAQESHAoPZGV2aWNlX3Byb3RvY29sGAUgASgNSASIAQESHgoRbWFudWZhY3R1cmVyX25hbWUYBiABKAlIBYgBARIZCgxwcm9kdWN0X25hbWUYByABKAlIBogBARIaCg1zZXJpYWxfbnVtYmVyGAggASgJSAeIAQFCDAoKX3ZlbmRvcl9pZEINCgtfcHJvZHVjdF9pZEIPCg1fZGV2aWNlX2NsYXNzQhIKEF9kZXZpY2Vfc3ViY2xhc3NCEgoQX2RldmljZV9wcm90b2NvbEIUChJfbWFudWZhY3R1cmVyX25hbWVCDwoNX3Byb2R1Y3RfbmFtZUIQCg5fc2VyaWFsX251bWJlciIVChNDb25maWd1cmF0aW9uRmlsdGVyIh0KDUNoYW5uZWxGaWx0ZXISDAoEbmFtZRgBIAEoCSK0AQoNV2F0Y2hCZWhhdmlvchIYCgttYXhfcmF0ZV9oehgBIAEoAkgAiAEBEioKDG1pbl9wcmlvcml0eRgDIAEoDjIPLndvcmxkLlByaW9yaXR5SAGIAQESIgoVa2VlcGFsaXZlX2ludGVydmFsX21zGAQgASgNSAKIAQFCDgoMX21heF9yYXRlX2h6Qg8KDV9taW5fcHJpb3JpdHlCGAoWX2tlZXBhbGl2ZV9pbnRlcnZhbF9tcyJ8ChNMaXN0RW50aXRpZXNSZXF1ZXN0EiMKBmZpbHRlchgCIAEoCzITLndvcmxkLkVudGl0eUZpbHRlchIsCgliZWhhdmlvdXIYBCABKAsyFC53b3JsZC5XYXRjaEJlaGF2aW9ySACIAQFCDAoKX2JlaGF2aW91ckoECAEQAiI3ChRMaXN0RW50aXRpZXNSZXNwb25zZRIfCghlbnRpdGllcxgBIAMoCzINLndvcmxkLkVudGl0eSJaChNFbnRpdHlDaGFuZ2VSZXF1ZXN0Eh4KB2NoYW5nZXMYASADKAsyDS53b3JsZC5FbnRpdHkSIwoMcmVwbGFjZW1lbnRzGAIgAygLMg0ud29ybGQuRW50aXR5IiEKE0V4cGlyZUVudGl0eVJlcXVlc3QSCgoCaWQYASABKAkiFgoURXhwaXJlRW50aXR5UmVzcG9uc2UiNwoURW50aXR5Q2hhbmdlUmVzcG9uc2USEAoIYWNjZXB0ZWQYASABKAgSDQoFZGVidWcYAiABKAkiUgoRRW50aXR5Q2hhbmdlRXZlbnQSHQoGZW50aXR5GAEgASgLMg0ud29ybGQuRW50aXR5Eh4KAXQYAiABKA4yEy53b3JsZC5FbnRpdHlDaGFuZ2UiPQoRRW50aXR5Q2hhbmdlQmF0Y2gSKAoGZXZlbnRzGAEgAygLMhgud29ybGQuRW50aXR5Q2hhbmdlRXZlbnQiHgoQR2V0RW50aXR5UmVxdWVzdBIKCgJpZBgBIAEoCSIyChFHZXRFbnRpdHlSZXNwb25zZRIdCgZlbnRpdHkYASABKAsyDS53b3JsZC5FbnRpdHkiFQoTR2V0TG9jYWxOb2RlUmVxdWVzdCJGChRHZXRMb2NhbE5vZGVSZXNwb25zZRIdCgZlbnRpdHkYASABKAsyDS53b3JsZC5FbnRpdHkSDwoHbm9kZV9pZBgCIAEoCSIRCg9PYnNlcnZlclJlcXVlc3QicwoNT2JzZXJ2ZXJTdGF0ZRIcCgNnZW8YASABKAsyDy53b3JsZC5HZW9tZXRyeRI0Cgt2aWV3SGlzdG9yeRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIOCgxfdmlld0hpc3RvcnkiRgoOUnVuVGFza1JlcXVlc3QSEAoIZW50aXR5SWQYASABKAkSFQoIcHJpb3JpdHkYAiABKA1IAIgBAUILCglfcHJpb3JpdHkigwEKD1J1blRhc2tSZXNwb25zZRITCgtleGVjdXRpb25JZBgBIAEoCRIhCgZzdGF0dXMYAiABKA4yES53b3JsZC5UYXNrU3RhdHVzEiAKE2h1bWFuUmVhZGFibGVSZWFzb24YAyABKAlIAIgBAUIWChRfaHVtYW5SZWFkYWJsZVJlYXNvbiISChBIYXJkUmVzZXRSZXF1ZXN0IhMKEUhhcmRSZXNldFJlc3BvbnNlKmIKCFByaW9yaXR5EhcKE1ByaW9yaXR5VW5zcGVjaWZpZWQQABITCg9Qcmlvcml0eVJvdXRpbmUQARIVChFQcmlvcml0eUltbWVkaWF0ZRACEhEKDVByaW9yaXR5Rmxhc2gQAyrsAQoTTWVkaWFTdHJlYW1Qcm90b2NvbBIiCh5NZWRpYVN0cmVhbVByb3RvY29sVW5zcGVjaWZpZWQQABIdChlNZWRpYVN0cmVhbVByb3RvY29sV2VicnRjEAESGgoWTWVkaWFTdHJlYW1Qcm90b2NvbEhscxACEhwKGE1lZGlhU3RyZWFtUHJvdG9jb2xNanBlZxADEhwKGE1lZGlhU3RyZWFtUHJvdG9jb2xJbWFnZRAEEh0KGU1lZGlhU3RyZWFtUHJvdG9jb2xJZnJhbWUQBRIbChdNZWRpYVN0cmVhbVByb3RvY29sUnRzcBAGKn8KD01lZGlhU3RyZWFtUm9sZRIeChpNZWRpYVN0cmVhbVJvbGVVbnNwZWNpZmllZBAAEhcKE01lZGlhU3RyZWFtUm9sZU1haW4QARIWChJNZWRpYVN0cmVhbVJvbGVTdWIQAhIbChdNZWRpYVN0cmVhbVJvbGVTbmFwc2hvdBADKnoKDFRhc2thYmxlTW9kZRIZChVUYXNrYWJsZU1vZGVFeGNsdXNpdmUQABIZChVUYXNrYWJsZU1vZGVSZWNvbmNpbGUQARIVChFUYXNrYWJsZU1vZGVTcGF3bhACEh0KGVRhc2thYmxlTW9kZVByaW9yaXR5UXVldWUQAyqRAQoSVGFza0V4ZWN1dGlvblN0YXRlEh0KGVRhc2tFeGVjdXRpb25TdGF0ZVBlbmRpbmcQABIdChlUYXNrRXhlY3V0aW9uU3RhdGVSdW5uaW5nEAESHwobVGFza0V4ZWN1dGlvblN0YXRlQ29tcGxldGVkEAISHAoYVGFza0V4ZWN1dGlvblN0YXRlRmFpbGVkEAMqjAIKFkNsYXNzaWZpY2F0aW9uSWRlbnRpdHkSIQodQ2xhc3NpZmljYXRpb25JZGVudGl0eUludmFsaWQQABIhCh1DbGFzc2lmaWNhdGlvbklkZW50aXR5UGVuZGluZxABEiEKHUNsYXNzaWZpY2F0aW9uSWRlbnRpdHlVbmtub3duEAISIAocQ2xhc3NpZmljYXRpb25JZGVudGl0eUZyaWVuZBADEiEKHUNsYXNzaWZpY2F0aW9uSWRlbnRpdHlOZXV0cmFsEAQSIQodQ2xhc3NpZmljYXRpb25JZGVudGl0eUhvc3RpbGUQBRIhCh1DbGFzc2lmaWNhdGlvbklkZW50aXR5U3VzcGVjdBAGKsQCCh1DbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvbhIoCiRDbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvbkludmFsaWQQABIoCiRDbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvblVua25vd24QARImCiJDbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvblNwYWNlEAISJAogQ2xhc3NpZmljYXRpb25CYXR0bGVEaW1lbnNpb25BaXIQAxInCiNDbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvbkdyb3VuZBAEEisKJ0NsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uU2VhU3VyZmFjZRAFEisKJ0NsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uU3Vic3VyZmFjZRAGKvYBCg5OYXZpZ2F0aW9uTW9kZRIdChlOYXZpZ2F0aW9uTW9kZVVuc3BlY2lmaWVkEAASGQoVTmF2aWdhdGlvbk1vZGVQbGFubmVkEAESHAoYTmF2aWdhdGlvbk1vZGVTdGF0aW9uYXJ5EAISGgoWTmF2aWdhdGlvbk1vZGVVbmRlcndheRADEhwKGE5hdmlnYXRpb25Nb2RlQXV0b25vbW91cxAEEhgKFE5hdmlnYXRpb25Nb2RlR3VpZGVkEAUSGwoXTmF2aWdhdGlvbk1vZGVMb2l0ZXJpbmcQBhIbChdOYXZpZ2F0aW9uTW9kZVJldHVybmluZxAHKmwKCkxpbmtTdGF0dXMSGQoVTGlua1N0YXR1c1Vuc3BlY2lmaWVkEAASFwoTTGlua1N0YXR1c0Nvbm5lY3RlZBABEhYKEkxpbmtTdGF0dXNEZWdyYWRlZBACEhIKDkxpbmtTdGF0dXNMb3N0EAMqUwoLRGV2aWNlU3RhdGUSFgoSRGV2aWNlU3RhdGVQZW5kaW5nEAASFQoRRGV2aWNlU3RhdGVBY3RpdmUQARIVChFEZXZpY2VTdGF0ZUZhaWxlZBACKsoBChFDb25maWd1cmFibGVTdGF0ZRIdChlDb25maWd1cmFibGVTdGF0ZUluYWN0aXZlEAASHQoZQ29uZmlndXJhYmxlU3RhdGVTdGFydGluZxABEhsKF0NvbmZpZ3VyYWJsZVN0YXRlQWN0aXZlEAISGwoXQ29uZmlndXJhYmxlU3RhdGVGYWlsZWQQAxIdChlDb25maWd1cmFibGVTdGF0ZUNvbmZsaWN0EAQSHgoaQ29uZmlndXJhYmxlU3RhdGVTY2hlZHVsZWQQBSp1CgxFbnRpdHlDaGFuZ2USFwoTRW50aXR5Q2hhbmdlSW52YWxpZBAAEhcKE0VudGl0eUNoYW5nZVVwZGF0ZWQQARIXChNFbnRpdHlDaGFuZ2VFeHBpcmVkEAISGgoWRW50aXR5Q2hhbmdlVW5vYnNlcnZlZBADKr8ICg9FbnRpdHlDb21wb25lbnQSHgoaRW50aXR5Q29tcG9uZW50VW5zcGVjaWZpZWQQABIYChRFbnRpdHlDb21wb25lbnRMYWJlbBACEh0KGUVudGl0eUNvbXBvbmVudENvbnRyb2xsZXIQAxIbChdFbnRpdHlDb21wb25lbnRMaWZldGltZRAEEhsKF0VudGl0eUNvbXBvbmVudFByaW9yaXR5EAUSGAoURW50aXR5Q29tcG9uZW50TGVhc2UQBhIaChZFbnRpdHlDb21wb25lbnRSb3V0aW5nEAcSFgoSRW50aXR5Q29tcG9uZW50R2VvEAsSGQoVRW50aXR5Q29tcG9uZW50U3ltYm9sEAwSGQoVRW50aXR5Q29tcG9uZW50Q2FtZXJhEA8SHAoYRW50aXR5Q29tcG9uZW50RGV0ZWN0aW9uEBASGgoWRW50aXR5Q29tcG9uZW50QmVhcmluZxAREhgKFEVudGl0eUNvbXBvbmVudFRyYWNrEBUSGgoWRW50aXR5Q29tcG9uZW50TG9jYXRvchAWEhsKF0VudGl0eUNvbXBvbmVudFRhc2thYmxlEBcSHQoZRW50aXR5Q29tcG9uZW50S2luZW1hdGljcxAYEhgKFEVudGl0eUNvbXBvbmVudFNoYXBlEBkSIQodRW50aXR5Q29tcG9uZW50Q2xhc3NpZmljYXRpb24QGhIeChpFbnRpdHlDb21wb25lbnRUcmFuc3BvbmRlchAbEiEKHUVudGl0eUNvbXBvbmVudEFkbWluaXN0cmF0aXZlEBwSHQoZRW50aXR5Q29tcG9uZW50TG9jYWxTaGFwZRAdEh4KGkVudGl0eUNvbXBvbmVudE9yaWVudGF0aW9uEB4SGgoWRW50aXR5Q29tcG9uZW50TWlzc2lvbhAfEhcKE0VudGl0eUNvbXBvbmVudExpbmsQIBIYChRFbnRpdHlDb21wb25lbnRQb3dlchAhEh0KGUVudGl0eUNvbXBvbmVudE5hdmlnYXRpb24QIhIaChZFbnRpdHlDb21wb25lbnRDYXB0dXJlECMSGQoVRW50aXR5Q29tcG9uZW50TWV0cmljECQSGQoVRW50aXR5Q29tcG9uZW50U2Vuc29yECUSFwoTRW50aXR5Q29tcG9uZW50UG9zZRAmEhcKE0VudGl0eUNvbXBvbmVudENoYXQQJxIgChxFbnRpdHlDb21wb25lbnRUYXNrRXhlY3V0aW9uECkSGQoVRW50aXR5Q29tcG9uZW50RGV2aWNlEDISGQoVRW50aXR5Q29tcG9uZW50Q29uZmlnEDMSHwobRW50aXR5Q29tcG9uZW50Q29uZmlndXJhYmxlEDQSIAocRW50aXR5Q29tcG9uZW50SW50ZXJhY3Rpdml0eRA8Eh0KGUVudGl0eUNvbXBvbmVudFRhcmdldFBvc2UQPippCgpUYXNrU3RhdHVzEhUKEVRhc2tTdGF0dXNJbnZhbGlkEAASFQoRVGFza1N0YXR1c1J1bm5pbmcQARIXChNUYXNrU3RhdHVzQ29tcGxldGVkEAISFAoQVGFza1N0YXR1c0ZhaWxlZBADMq0ECgxXb3JsZFNlcnZpY2USRwoMTGlzdEVudGl0aWVzEhoud29ybGQuTGlzdEVudGl0aWVzUmVxdWVzdBobLndvcmxkLkxpc3RFbnRpdGllc1Jlc3BvbnNlEj4KCUdldEVudGl0eRIXLndvcmxkLkdldEVudGl0eVJlcXVlc3QaGC53b3JsZC5HZXRFbnRpdHlSZXNwb25zZRJHCg1XYXRjaEVudGl0aWVzEhoud29ybGQuTGlzdEVudGl0aWVzUmVxdWVzdBoYLndvcmxkLkVudGl0eUNoYW5nZUV2ZW50MAESPwoEUHVzaBIaLndvcmxkLkVudGl0eUNoYW5nZVJlcXVlc3QaGy53b3JsZC5FbnRpdHlDaGFuZ2VSZXNwb25zZRJHCgxFeHBpcmVFbnRpdHkSGi53b3JsZC5FeHBpcmVFbnRpdHlSZXF1ZXN0Ghsud29ybGQuRXhwaXJlRW50aXR5UmVzcG9uc2USRwoMR2V0TG9jYWxOb2RlEhoud29ybGQuR2V0TG9jYWxOb2RlUmVxdWVzdBobLndvcmxkLkdldExvY2FsTm9kZVJlc3BvbnNlEjgKB1J1blRhc2sSFS53b3JsZC5SdW5UYXNrUmVxdWVzdBoWLndvcmxkLlJ1blRhc2tSZXNwb25zZRI+CglIYXJkUmVzZXQSFy53b3JsZC5IYXJkUmVzZXRSZXF1ZXN0Ghgud29ybGQuSGFyZFJlc2V0UmVzcG9uc2VCIFoeZ2l0aHViLmNvbS9wcm9qZWN0cWFpL3Byb3RvL2dvYgZwcm90bzM", [file_geometry, file_google_protobuf_struct, file_google_protobuf_timestamp, file_metrics]);
15
15
 
16
16
  /**
17
17
  * Describes the message world.Entity.
@@ -384,215 +384,236 @@ export const MeshtasticDeviceSchema = /*@__PURE__*/
384
384
  export const LPWANDeviceSchema = /*@__PURE__*/
385
385
  messageDesc(file_world, 52);
386
386
 
387
+ /**
388
+ * Describes the message world.BleDevice.
389
+ * Use `create(BleDeviceSchema)` to create a new message.
390
+ */
391
+ export const BleDeviceSchema = /*@__PURE__*/
392
+ messageDesc(file_world, 53);
393
+
387
394
  /**
388
395
  * Describes the message world.ConfigurationComponent.
389
396
  * Use `create(ConfigurationComponentSchema)` to create a new message.
390
397
  */
391
398
  export const ConfigurationComponentSchema = /*@__PURE__*/
392
- messageDesc(file_world, 53);
399
+ messageDesc(file_world, 54);
393
400
 
394
401
  /**
395
402
  * Describes the message world.ChatComponent.
396
403
  * Use `create(ChatComponentSchema)` to create a new message.
397
404
  */
398
405
  export const ChatComponentSchema = /*@__PURE__*/
399
- messageDesc(file_world, 54);
406
+ messageDesc(file_world, 55);
400
407
 
401
408
  /**
402
409
  * Describes the message world.EntityFilter.
403
410
  * Use `create(EntityFilterSchema)` to create a new message.
404
411
  */
405
412
  export const EntityFilterSchema = /*@__PURE__*/
406
- messageDesc(file_world, 55);
413
+ messageDesc(file_world, 56);
407
414
 
408
415
  /**
409
416
  * Describes the message world.ControllerFilter.
410
417
  * Use `create(ControllerFilterSchema)` to create a new message.
411
418
  */
412
419
  export const ControllerFilterSchema = /*@__PURE__*/
413
- messageDesc(file_world, 56);
420
+ messageDesc(file_world, 57);
414
421
 
415
422
  /**
416
423
  * Describes the message world.TrackFilter.
417
424
  * Use `create(TrackFilterSchema)` to create a new message.
418
425
  */
419
426
  export const TrackFilterSchema = /*@__PURE__*/
420
- messageDesc(file_world, 57);
427
+ messageDesc(file_world, 58);
421
428
 
422
429
  /**
423
430
  * Describes the message world.MissionFilter.
424
431
  * Use `create(MissionFilterSchema)` to create a new message.
425
432
  */
426
433
  export const MissionFilterSchema = /*@__PURE__*/
427
- messageDesc(file_world, 58);
434
+ messageDesc(file_world, 59);
428
435
 
429
436
  /**
430
437
  * Describes the message world.TaskableFilter.
431
438
  * Use `create(TaskableFilterSchema)` to create a new message.
432
439
  */
433
440
  export const TaskableFilterSchema = /*@__PURE__*/
434
- messageDesc(file_world, 59);
441
+ messageDesc(file_world, 60);
435
442
 
436
443
  /**
437
444
  * Describes the message world.GeoFilter.
438
445
  * Use `create(GeoFilterSchema)` to create a new message.
439
446
  */
440
447
  export const GeoFilterSchema = /*@__PURE__*/
441
- messageDesc(file_world, 60);
448
+ messageDesc(file_world, 61);
442
449
 
443
450
  /**
444
451
  * Describes the message world.DeviceFilter.
445
452
  * Use `create(DeviceFilterSchema)` to create a new message.
446
453
  */
447
454
  export const DeviceFilterSchema = /*@__PURE__*/
448
- messageDesc(file_world, 61);
455
+ messageDesc(file_world, 62);
456
+
457
+ /**
458
+ * Describes the message world.BleDeviceFilter.
459
+ * Use `create(BleDeviceFilterSchema)` to create a new message.
460
+ */
461
+ export const BleDeviceFilterSchema = /*@__PURE__*/
462
+ messageDesc(file_world, 63);
463
+
464
+ /**
465
+ * Describes the message world.UsbDeviceFilter.
466
+ * Use `create(UsbDeviceFilterSchema)` to create a new message.
467
+ */
468
+ export const UsbDeviceFilterSchema = /*@__PURE__*/
469
+ messageDesc(file_world, 64);
449
470
 
450
471
  /**
451
472
  * Describes the message world.ConfigurationFilter.
452
473
  * Use `create(ConfigurationFilterSchema)` to create a new message.
453
474
  */
454
475
  export const ConfigurationFilterSchema = /*@__PURE__*/
455
- messageDesc(file_world, 62);
476
+ messageDesc(file_world, 65);
456
477
 
457
478
  /**
458
479
  * Describes the message world.ChannelFilter.
459
480
  * Use `create(ChannelFilterSchema)` to create a new message.
460
481
  */
461
482
  export const ChannelFilterSchema = /*@__PURE__*/
462
- messageDesc(file_world, 63);
483
+ messageDesc(file_world, 66);
463
484
 
464
485
  /**
465
486
  * Describes the message world.WatchBehavior.
466
487
  * Use `create(WatchBehaviorSchema)` to create a new message.
467
488
  */
468
489
  export const WatchBehaviorSchema = /*@__PURE__*/
469
- messageDesc(file_world, 64);
490
+ messageDesc(file_world, 67);
470
491
 
471
492
  /**
472
493
  * Describes the message world.ListEntitiesRequest.
473
494
  * Use `create(ListEntitiesRequestSchema)` to create a new message.
474
495
  */
475
496
  export const ListEntitiesRequestSchema = /*@__PURE__*/
476
- messageDesc(file_world, 65);
497
+ messageDesc(file_world, 68);
477
498
 
478
499
  /**
479
500
  * Describes the message world.ListEntitiesResponse.
480
501
  * Use `create(ListEntitiesResponseSchema)` to create a new message.
481
502
  */
482
503
  export const ListEntitiesResponseSchema = /*@__PURE__*/
483
- messageDesc(file_world, 66);
504
+ messageDesc(file_world, 69);
484
505
 
485
506
  /**
486
507
  * Describes the message world.EntityChangeRequest.
487
508
  * Use `create(EntityChangeRequestSchema)` to create a new message.
488
509
  */
489
510
  export const EntityChangeRequestSchema = /*@__PURE__*/
490
- messageDesc(file_world, 67);
511
+ messageDesc(file_world, 70);
491
512
 
492
513
  /**
493
514
  * Describes the message world.ExpireEntityRequest.
494
515
  * Use `create(ExpireEntityRequestSchema)` to create a new message.
495
516
  */
496
517
  export const ExpireEntityRequestSchema = /*@__PURE__*/
497
- messageDesc(file_world, 68);
518
+ messageDesc(file_world, 71);
498
519
 
499
520
  /**
500
521
  * Describes the message world.ExpireEntityResponse.
501
522
  * Use `create(ExpireEntityResponseSchema)` to create a new message.
502
523
  */
503
524
  export const ExpireEntityResponseSchema = /*@__PURE__*/
504
- messageDesc(file_world, 69);
525
+ messageDesc(file_world, 72);
505
526
 
506
527
  /**
507
528
  * Describes the message world.EntityChangeResponse.
508
529
  * Use `create(EntityChangeResponseSchema)` to create a new message.
509
530
  */
510
531
  export const EntityChangeResponseSchema = /*@__PURE__*/
511
- messageDesc(file_world, 70);
532
+ messageDesc(file_world, 73);
512
533
 
513
534
  /**
514
535
  * Describes the message world.EntityChangeEvent.
515
536
  * Use `create(EntityChangeEventSchema)` to create a new message.
516
537
  */
517
538
  export const EntityChangeEventSchema = /*@__PURE__*/
518
- messageDesc(file_world, 71);
539
+ messageDesc(file_world, 74);
519
540
 
520
541
  /**
521
542
  * Describes the message world.EntityChangeBatch.
522
543
  * Use `create(EntityChangeBatchSchema)` to create a new message.
523
544
  */
524
545
  export const EntityChangeBatchSchema = /*@__PURE__*/
525
- messageDesc(file_world, 72);
546
+ messageDesc(file_world, 75);
526
547
 
527
548
  /**
528
549
  * Describes the message world.GetEntityRequest.
529
550
  * Use `create(GetEntityRequestSchema)` to create a new message.
530
551
  */
531
552
  export const GetEntityRequestSchema = /*@__PURE__*/
532
- messageDesc(file_world, 73);
553
+ messageDesc(file_world, 76);
533
554
 
534
555
  /**
535
556
  * Describes the message world.GetEntityResponse.
536
557
  * Use `create(GetEntityResponseSchema)` to create a new message.
537
558
  */
538
559
  export const GetEntityResponseSchema = /*@__PURE__*/
539
- messageDesc(file_world, 74);
560
+ messageDesc(file_world, 77);
540
561
 
541
562
  /**
542
563
  * Describes the message world.GetLocalNodeRequest.
543
564
  * Use `create(GetLocalNodeRequestSchema)` to create a new message.
544
565
  */
545
566
  export const GetLocalNodeRequestSchema = /*@__PURE__*/
546
- messageDesc(file_world, 75);
567
+ messageDesc(file_world, 78);
547
568
 
548
569
  /**
549
570
  * Describes the message world.GetLocalNodeResponse.
550
571
  * Use `create(GetLocalNodeResponseSchema)` to create a new message.
551
572
  */
552
573
  export const GetLocalNodeResponseSchema = /*@__PURE__*/
553
- messageDesc(file_world, 76);
574
+ messageDesc(file_world, 79);
554
575
 
555
576
  /**
556
577
  * Describes the message world.ObserverRequest.
557
578
  * Use `create(ObserverRequestSchema)` to create a new message.
558
579
  */
559
580
  export const ObserverRequestSchema = /*@__PURE__*/
560
- messageDesc(file_world, 77);
581
+ messageDesc(file_world, 80);
561
582
 
562
583
  /**
563
584
  * Describes the message world.ObserverState.
564
585
  * Use `create(ObserverStateSchema)` to create a new message.
565
586
  */
566
587
  export const ObserverStateSchema = /*@__PURE__*/
567
- messageDesc(file_world, 78);
588
+ messageDesc(file_world, 81);
568
589
 
569
590
  /**
570
591
  * Describes the message world.RunTaskRequest.
571
592
  * Use `create(RunTaskRequestSchema)` to create a new message.
572
593
  */
573
594
  export const RunTaskRequestSchema = /*@__PURE__*/
574
- messageDesc(file_world, 79);
595
+ messageDesc(file_world, 82);
575
596
 
576
597
  /**
577
598
  * Describes the message world.RunTaskResponse.
578
599
  * Use `create(RunTaskResponseSchema)` to create a new message.
579
600
  */
580
601
  export const RunTaskResponseSchema = /*@__PURE__*/
581
- messageDesc(file_world, 80);
602
+ messageDesc(file_world, 83);
582
603
 
583
604
  /**
584
605
  * Describes the message world.HardResetRequest.
585
606
  * Use `create(HardResetRequestSchema)` to create a new message.
586
607
  */
587
608
  export const HardResetRequestSchema = /*@__PURE__*/
588
- messageDesc(file_world, 81);
609
+ messageDesc(file_world, 84);
589
610
 
590
611
  /**
591
612
  * Describes the message world.HardResetResponse.
592
613
  * Use `create(HardResetResponseSchema)` to create a new message.
593
614
  */
594
615
  export const HardResetResponseSchema = /*@__PURE__*/
595
- messageDesc(file_world, 82);
616
+ messageDesc(file_world, 85);
596
617
 
597
618
  /**
598
619
  * Describes the enum world.Priority.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectqai/proto",
3
- "version": "0.0.36",
3
+ "version": "0.0.37",
4
4
  "author": "projectq-release-bot",
5
5
  "type": "module",
6
6
  "exports": {