@nubisco/openbridge 1.6.0 → 1.7.1

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/dist/daemon.js CHANGED
@@ -10,6 +10,8 @@ import { waitForFreePort } from './port.js';
10
10
  import { rotateIfLarge } from './log-rotation.js';
11
11
  import { DeviceEventLog } from './device-events.js';
12
12
  import { ObservationStore } from './observations.js';
13
+ import { NotificationStore, observeDevices, observePlugins, pluginLoadFailed, pluginLoaded } from './notifications.js';
14
+ import { listDevices } from './services/bridge.js';
13
15
  import { loadConfig, defaultConfigPath } from '@nubisco/openbridge-config';
14
16
  import { createServer } from './server.js';
15
17
  import { DeviceSeries, DEFAULT_TIERS } from './timeseries.js';
@@ -54,6 +56,8 @@ export class Daemon {
54
56
  /** Per-device event timeline, written by plugins through ctx.recordEvent */
55
57
  deviceEvents = new DeviceEventLog(join(OPENBRIDGE_HOME, 'device-events'));
56
58
  observations = new ObservationStore(OPENBRIDGE_HOME);
59
+ /** The bell: devices that stop answering, plugins that fail, updates. */
60
+ notifications = new NotificationStore(join(OPENBRIDGE_HOME, 'notifications.json'));
57
61
  /**
58
62
  * Per-device providers of machine state to attach to an observation.
59
63
  *
@@ -232,9 +236,13 @@ export class Daemon {
232
236
  const pluginFn = loadHomebridgePlugin(pluginPath);
233
237
  pluginFn(homebridgeAPI);
234
238
  log.info(`Registered platform: ${platformConfig.platform}`);
239
+ pluginLoaded(this.notifications, pluginPath);
235
240
  }
236
241
  catch (err) {
237
242
  log.error(`Failed to load plugin ${platformConfig.plugin}: ${err}`);
243
+ // Configured by path in config.platforms, and never registered, so
244
+ // there is no inspector to open. The config is where it is fixed.
245
+ pluginLoadFailed(this.notifications, { key: pluginPath, name: String(platformConfig.platform), target: { kind: 'config' } }, err, Date.now());
238
246
  }
239
247
  }
240
248
  const platformLogger = Logger.create('hap');
@@ -358,8 +366,43 @@ export class Daemon {
358
366
  }
359
367
  // ── HTTP server ───────────────────────────────────────────────────────────
360
368
  const localPluginSources = config.localPluginSources ?? [];
361
- const server = await createServer(this.registry, homebridgeAPI, hapInfo, localPluginSources, this.knownHbPackageNames, this.controls, this.restrictedControls, this.homekitVisibility, this.homekitServiceTypes, (deviceId) => this.resolveNativeAccessory(deviceId), (deviceId) => this.nativeAccessoryUuid(deviceId), this.deviceEvents, this.observations, (deviceId) => this.observationContexts.get(deviceId)?.());
369
+ const server = await createServer(this.registry, homebridgeAPI, hapInfo, localPluginSources, this.knownHbPackageNames, this.controls, this.restrictedControls, this.homekitVisibility, this.homekitServiceTypes, (deviceId) => this.resolveNativeAccessory(deviceId), (deviceId) => this.nativeAccessoryUuid(deviceId), this.deviceEvents, this.observations, (deviceId) => this.observationContexts.get(deviceId)?.(), this.notifications);
362
370
  await server.listen({ port, host: '0.0.0.0' });
371
+ // ── Notifications ─────────────────────────────────────────────────────────
372
+ // Read from state the daemon already keeps: device health from the
373
+ // telemetry stamps, plugin status from the registry. Fifteen seconds is
374
+ // short enough to catch a plugin that errors and is restarted by the
375
+ // watchdog below, which waits at least a minute, and cheap, since it reads
376
+ // memory and writes only when something crossed a line.
377
+ const bridgeView = {
378
+ registry: this.registry,
379
+ home: OPENBRIDGE_HOME,
380
+ hapAPI: homebridgeAPI,
381
+ controls: this.controls,
382
+ restrictedControls: this.restrictedControls,
383
+ deviceEvents: this.deviceEvents,
384
+ observations: this.observations,
385
+ homekitServiceTypes: this.homekitServiceTypes,
386
+ nativeAccessoryUuid: null,
387
+ };
388
+ const watchForNotifications = () => {
389
+ try {
390
+ const now = Date.now();
391
+ observePlugins(this.notifications, this.registry.getAll().map((p) => ({
392
+ id: p.id,
393
+ name: p.platformName ?? p.manifest.name,
394
+ status: p.status,
395
+ error: p.error,
396
+ disabled: p.disabled,
397
+ })), now);
398
+ observeDevices(this.notifications, listDevices(bridgeView), now);
399
+ }
400
+ catch (err) {
401
+ log.debug(`Notification watch failed: ${err}`);
402
+ }
403
+ };
404
+ setInterval(watchForNotifications, 15_000).unref();
405
+ watchForNotifications();
363
406
  // ── Energy history sampling ───────────────────────────────────────────────
364
407
  setInterval(() => {
365
408
  this.sampleEnergyHistory();
@@ -482,11 +525,14 @@ export class Daemon {
482
525
  this.registry.updateStatus(name, 'stopped');
483
526
  }
484
527
  log.info(`Loaded native plugin from marketplace: ${name} v${pkg.version ?? '?'}`);
528
+ pluginLoaded(this.notifications, name);
485
529
  loaded = true;
486
530
  break;
487
531
  }
488
532
  catch (err) {
489
533
  log.error(`Failed to load native plugin ${name}: ${err}`);
534
+ // Registered as a stopped plugin below, so its inspector exists.
535
+ pluginLoadFailed(this.notifications, { key: name, name, target: { kind: 'plugin', id: name } }, err, Date.now());
490
536
  }
491
537
  }
492
538
  }
@@ -549,11 +595,13 @@ export class Daemon {
549
595
  if (launched)
550
596
  launched.instance.packageName = name;
551
597
  log.info(`Loaded Homebridge plugin from marketplace: ${name} v${pkg.version ?? '?'}`);
598
+ pluginLoaded(this.notifications, name);
552
599
  continue;
553
600
  }
554
601
  }
555
602
  catch (err) {
556
603
  log.error(`Failed to load Homebridge plugin ${name}: ${err}`);
604
+ pluginLoadFailed(this.notifications, { key: name, name, target: { kind: 'plugin', id: name } }, err, Date.now());
557
605
  }
558
606
  }
559
607
  }
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The bell's HTTP and live surface.
3
+ *
4
+ * GET /api/notifications?limit=50 newest rows for the person asking, with read state, plus the unread count
5
+ * POST /api/notifications/read { ids?: string[] } marks those rows read, or all of them without ids
6
+ * WS /ws/notifications { type: 'changed' } whenever a row is added or this person read one
7
+ *
8
+ * The socket carries a nudge, not the row. A tab re-reads the list when it is
9
+ * told something changed, so the list it shows is always the server's, read
10
+ * state and count included, and a missed message costs nothing but a moment.
11
+ *
12
+ * Read state belongs to the signed-in person (the session's user id), or to a
13
+ * single local person when sign-in is off. The auth hook in auth.ts already
14
+ * gates /api/* and /ws/* when sign-in is on.
15
+ */
16
+ import type { FastifyInstance, FastifyRequest } from 'fastify';
17
+ import { type TAuthConfig } from './auth.js';
18
+ import { type NotificationStore } from './notifications.js';
19
+ export declare function notificationUser(authConfig: TAuthConfig | null, req: FastifyRequest): string;
20
+ export declare function registerNotificationRoutes(app: FastifyInstance, store: NotificationStore, authConfig: TAuthConfig | null): void;
21
+ //# sourceMappingURL=notification-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-routes.d.ts","sourceRoot":"","sources":["../src/notification-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE9D,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,WAAW,CAAA;AACzD,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEvE,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,EAAE,cAAc,GAAG,MAAM,CAG5F;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE,iBAAiB,EACxB,UAAU,EAAE,WAAW,GAAG,IAAI,GAC7B,IAAI,CA2BN"}
@@ -0,0 +1,37 @@
1
+ import { readSession } from './auth.js';
2
+ import { LOCAL_USER } from './notifications.js';
3
+ export function notificationUser(authConfig, req) {
4
+ if (!authConfig)
5
+ return LOCAL_USER;
6
+ return readSession(authConfig, req)?.userId ?? LOCAL_USER;
7
+ }
8
+ export function registerNotificationRoutes(app, store, authConfig) {
9
+ app.get('/api/notifications', async (req) => {
10
+ const limit = Number(req.query.limit ?? 50);
11
+ return store.list(notificationUser(authConfig, req), Number.isFinite(limit) ? limit : 50);
12
+ });
13
+ app.post('/api/notifications/read', async (req) => {
14
+ const raw = req.body?.ids;
15
+ const ids = Array.isArray(raw) ? raw.filter((id) => typeof id === 'string') : undefined;
16
+ return { unread: store.markRead(notificationUser(authConfig, req), ids) };
17
+ });
18
+ app.get('/ws/notifications', { websocket: true }, (ws, req) => {
19
+ const userId = notificationUser(authConfig, req);
20
+ const unsubscribe = store.subscribe((event) => {
21
+ // A row added reaches everybody. Somebody reading reaches only their
22
+ // own other tabs, whose badge just went stale.
23
+ if (event.type === 'read' && event.userId !== userId)
24
+ return;
25
+ if (ws.readyState !== ws.OPEN)
26
+ return;
27
+ try {
28
+ ws.send(JSON.stringify({ type: 'changed' }));
29
+ }
30
+ catch {
31
+ /* disconnected */
32
+ }
33
+ });
34
+ ws.on('close', unsubscribe);
35
+ });
36
+ }
37
+ //# sourceMappingURL=notification-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-routes.js","sourceRoot":"","sources":["../src/notification-routes.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,WAAW,EAAoB,MAAM,WAAW,CAAA;AACzD,OAAO,EAAE,UAAU,EAA0B,MAAM,oBAAoB,CAAA;AAEvE,MAAM,UAAU,gBAAgB,CAAC,UAA8B,EAAE,GAAmB;IAClF,IAAI,CAAC,UAAU;QAAE,OAAO,UAAU,CAAA;IAClC,OAAO,WAAW,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,MAAM,IAAI,UAAU,CAAA;AAC3D,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,GAAoB,EACpB,KAAwB,EACxB,UAA8B;IAE9B,GAAG,CAAC,GAAG,CAAsC,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC/E,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;QAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAC3F,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,IAAI,CAA0C,yBAAyB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACzF,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,CAAA;QACzB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACrG,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;IAC3E,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,EAAa,EAAE,GAAG,EAAE,EAAE;QACvE,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;QAChD,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YAC5C,qEAAqE;YACrE,+CAA+C;YAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;gBAAE,OAAM;YAC5D,IAAI,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,IAAI;gBAAE,OAAM;YACrC,IAAI,CAAC;gBACH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;YAC9C,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB;YACpB,CAAC;QACH,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,157 @@
1
+ import type { DeviceHealth, PluginStatus } from '@nubisco/openbridge-core';
2
+ /** Newest rows kept. Older ones fall off the end. */
3
+ export declare const MAX_NOTIFICATIONS = 200;
4
+ /**
5
+ * How long a device must be silent, continuously, before the bell rings.
6
+ *
7
+ * Ten minutes, set by Jose. Long enough that a router reboot or a slow poll
8
+ * never rings, short enough that a gate that has fallen off the network is
9
+ * noticed the same evening rather than from HomeKit a day later.
10
+ */
11
+ export declare const OFFLINE_AFTER_SECONDS: number;
12
+ /** The person whose read state is kept when sign-in is off. */
13
+ export declare const LOCAL_USER = "local";
14
+ export type NotificationKind = 'device.offline' | 'device.online' | 'plugin.failed' | 'update.openbridge' | 'update.plugin';
15
+ /** Colour by consequence: warning needs doing, success is relief, info is news. */
16
+ export type NotificationVariant = 'warning' | 'success' | 'info';
17
+ /** Where a row opens. Null makes the row honestly inert. */
18
+ export type NotificationTarget = {
19
+ kind: 'device';
20
+ id: string;
21
+ } | {
22
+ kind: 'plugin';
23
+ id: string;
24
+ } | {
25
+ kind: 'settings';
26
+ } | {
27
+ kind: 'config';
28
+ };
29
+ export interface StoredNotification {
30
+ id: string;
31
+ kind: NotificationKind;
32
+ title: string;
33
+ body: string;
34
+ variant: NotificationVariant;
35
+ target: NotificationTarget | null;
36
+ createdAt: string;
37
+ }
38
+ export interface NotificationView extends StoredNotification {
39
+ read: boolean;
40
+ }
41
+ export interface NotificationInput {
42
+ /** The thing and the state that justified it. Announced at most once. */
43
+ key: string;
44
+ kind: NotificationKind;
45
+ title: string;
46
+ body: string;
47
+ variant: NotificationVariant;
48
+ target: NotificationTarget | null;
49
+ }
50
+ interface Outage {
51
+ /** When the device last answered, which is when the outage began. */
52
+ since: string;
53
+ }
54
+ export declare class NotificationStore {
55
+ private readonly path;
56
+ private readonly clock;
57
+ private state;
58
+ private listeners;
59
+ constructor(path: string, clock?: () => number);
60
+ /**
61
+ * Add a row, unless its key has been announced before.
62
+ *
63
+ * Returns the row, or null when nothing was written. Never throws: the bell
64
+ * is a report about the bridge, and failing to write one must not take down
65
+ * the thing it reports on.
66
+ */
67
+ add(input: NotificationInput): StoredNotification | null;
68
+ /** The newest rows as one person sees them, and their unread count over every row. */
69
+ list(userId: string, limit?: number): {
70
+ notifications: NotificationView[];
71
+ unread: number;
72
+ };
73
+ /**
74
+ * The badge. Counted over every stored row, never over the page the client
75
+ * happened to load, which is how Acta's badge came to understate.
76
+ */
77
+ unreadCount(userId: string): number;
78
+ /** Mark some rows read for one person, or all of them when no ids are given. */
79
+ markRead(userId: string, ids?: string[]): number;
80
+ /** Told about every write, for live delivery to open tabs. */
81
+ subscribe(listener: (event: {
82
+ type: 'added' | 'read';
83
+ userId?: string;
84
+ }) => void): () => void;
85
+ outage(deviceId: string): Outage | undefined;
86
+ setOutage(deviceId: string, outage: Outage | null): void;
87
+ failing(key: string): string | undefined;
88
+ setFailing(key: string, error: string | null): void;
89
+ private pruneReadState;
90
+ private emit;
91
+ private load;
92
+ private save;
93
+ }
94
+ export interface ObservedDevice {
95
+ id: string;
96
+ name: string;
97
+ pluginStatus: string;
98
+ health: DeviceHealth;
99
+ }
100
+ /**
101
+ * Turn device health, read on every tick, into one row when a device crosses
102
+ * the line and one when it comes back.
103
+ *
104
+ * Health is derived from the `_updatedAt` stamp `reportTelemetry` writes for
105
+ * every device of every native plugin (see device-health.ts), so this needs no
106
+ * cooperation from plugins. A device of a plugin that is not running is
107
+ * skipped: the plugin's own failure explains all of its devices at once, and
108
+ * thirty rows saying "not responding" would bury the one that says why.
109
+ */
110
+ export declare function observeDevices(store: NotificationStore, devices: ObservedDevice[], now: number): void;
111
+ export interface ObservedPlugin {
112
+ id: string;
113
+ name: string;
114
+ status: PluginStatus;
115
+ error?: string;
116
+ disabled?: boolean;
117
+ }
118
+ /**
119
+ * One row when a plugin enters the error state, and none while it stays
120
+ * there or is retried and fails the same way again.
121
+ *
122
+ * Cleared once the plugin runs, so a crash after a recovery is news again.
123
+ * The failing set is stored, so a plugin that fails the same way at every
124
+ * start does not ring again on every restart of the daemon.
125
+ */
126
+ export declare function observePlugins(store: NotificationStore, plugins: ObservedPlugin[], now: number): void;
127
+ /**
128
+ * A plugin that could not be loaded at all.
129
+ *
130
+ * Distinct from the error state above: a module that throws on import never
131
+ * reaches the registry as a running plugin, so there is no status to watch.
132
+ * The daemon calls this from the places it catches the failure.
133
+ */
134
+ export declare function pluginLoadFailed(store: NotificationStore, plugin: {
135
+ key: string;
136
+ name: string;
137
+ target: NotificationTarget | null;
138
+ }, err: unknown, now: number): void;
139
+ /** The counterpart: a plugin that loaded is no longer failing to. */
140
+ export declare function pluginLoaded(store: NotificationStore, pluginKey: string): void;
141
+ /**
142
+ * Whether `latest` is newer than `current`, by numeric dotted version.
143
+ *
144
+ * Not `!==`: a development build ahead of npm would otherwise be told to
145
+ * "update" to an older release.
146
+ */
147
+ export declare function isNewer(latest: string, current: string): boolean;
148
+ /** One row per new OpenBridge version, however often the check runs. */
149
+ export declare function openBridgeUpdate(store: NotificationStore, current: string, latest: string | null): void;
150
+ /** One row per new plugin version, however often the check runs. */
151
+ export declare function pluginUpdate(store: NotificationStore, plugin: {
152
+ id: string;
153
+ name: string;
154
+ current: string;
155
+ }, latest: string): void;
156
+ export {};
157
+ //# sourceMappingURL=notifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE1E,qDAAqD;AACrD,eAAO,MAAM,iBAAiB,MAAM,CAAA;AAKpC;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,QAAU,CAAA;AAE5C,+DAA+D;AAC/D,eAAO,MAAM,UAAU,UAAU,CAAA;AAEjC,MAAM,MAAM,gBAAgB,GACxB,gBAAgB,GAChB,eAAe,GACf,eAAe,GACf,mBAAmB,GACnB,eAAe,CAAA;AAEnB,mFAAmF;AACnF,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAA;AAEhE,4DAA4D;AAC5D,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAA;AAEtB,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,gBAAgB,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,mBAAmB,CAAA;IAC5B,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAA;IACjC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,IAAI,EAAE,OAAO,CAAA;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,gBAAgB,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,mBAAmB,CAAA;IAC5B,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAA;CAClC;AAED,UAAU,MAAM;IACd,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAA;CACd;AAkBD,qBAAa,iBAAiB;IAK1B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IALxB,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,SAAS,CAA0E;gBAGxE,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAM,MAAiB;IAKjD;;;;;;OAMG;IACH,GAAG,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,IAAI;IAuBxD,sFAAsF;IACtF,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG;QAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAOvF;;;OAGG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAKnC,gFAAgF;IAChF,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;IAahD,8DAA8D;IAC9D,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAO7F,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI5C,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAMxD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIxC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAUnD,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,IAAI;IAiBZ,OAAO,CAAC,IAAI;CAYb;AAID,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,YAAY,CAAA;CACrB;AAWD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAsCrG;AAID,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,YAAY,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAoBrG;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAA;CAAE,EACxE,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,MAAM,GACV,IAAI,CAaN;AAED,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAE9E;AASD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAehE;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAUvG;AAED,oEAAoE;AACpE,wBAAgB,YAAY,CAC1B,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EACrD,MAAM,EAAE,MAAM,GACb,IAAI,CAUN"}