homebridge-salus-cloud 0.1.31 → 0.1.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -110,6 +110,10 @@ Examples:
110
110
  - Primary write path matches Salus app behavior via AWS IoT thing-shadow updates (`state.desired.<baseKey>.properties`).
111
111
  - Automatic AWS IoT credential refresh and signing-service fallback (`iotdevicegateway` -> `iotdata`) for tenant variations.
112
112
  - Service API write payload fallbacks remain enabled as a compatibility safety net.
113
+ - Per-poll property refresh (with cached fallback on transient errors) to keep HomeKit target/current values up-to-date.
114
+ - Thermostat write confirmation loop verifies that setpoint actually changed in cloud state; failed convergence is surfaced as HomeKit communication failure instead of silent no-op.
115
+ - Thermostat setpoint writes mirror both effective and command fields (`HeatingSetpoint*` + `SetHeatingSetpoint*`) to keep Salus app and Home app in sync when the cloud updates them asynchronously.
116
+ - Device online state is inferred from Salus connectivity datapoints (`connected`, `OnlineState`, `OnlineStatus_i`, etc.) and mapped to HomeKit reachability so disconnected devices can show as not responding.
113
117
  - Immediate short re-poll after write to keep HomeKit state aligned.
114
118
  - Detailed logs for auth, discovery, shadow sync, writes, retries, and failures.
115
119
 
@@ -1,5 +1,5 @@
1
1
  import type { API, Characteristic, DynamicPlatformPlugin, Logging, PlatformAccessory, PlatformConfig, Service } from 'homebridge';
2
- import type { SalusDevice } from './types.js';
2
+ import type { SalusDevice, SalusPropertyMap } from './types.js';
3
3
  export declare class SalusHomebridgePlatform implements DynamicPlatformPlugin {
4
4
  readonly log: Logging;
5
5
  readonly api: API;
@@ -19,6 +19,7 @@ export declare class SalusHomebridgePlatform implements DynamicPlatformPlugin {
19
19
  constructor(log: Logging, config: PlatformConfig, api: API);
20
20
  configureAccessory(accessory: PlatformAccessory): void;
21
21
  writeDeviceProperty(device: SalusDevice, propertyName: string, value: unknown): Promise<void>;
22
+ readDeviceProperties(device: SalusDevice): Promise<SalusPropertyMap>;
22
23
  getUnmappedConstraintList(): string[];
23
24
  private schedulePoll;
24
25
  private pollDevices;
package/dist/platform.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/no-use-before-define */
2
2
  import { getCatalogEntry, inferKindFromCatalog } from './deviceCatalog.js';
3
- import { hasAnyPropertyBase } from './propertyUtils.js';
3
+ import { getBooleanProperty, hasAnyPropertyBase } from './propertyUtils.js';
4
4
  import { SalusCloudClient } from './salusCloudClient.js';
5
5
  import { SalusPlatformAccessory } from './platformAccessory.js';
6
6
  import { PLATFORM_NAME, PLUGIN_NAME } from './settings.js';
@@ -198,6 +198,12 @@ export class SalusHomebridgePlatform {
198
198
  throw error;
199
199
  }
200
200
  }
201
+ async readDeviceProperties(device) {
202
+ if (!this.cloudClient) {
203
+ throw new Error('Salus cloud client is not initialized due to missing credentials.');
204
+ }
205
+ return await this.cloudClient.listProperties(device.dsn);
206
+ }
201
207
  getUnmappedConstraintList() {
202
208
  return [...UNSUPPORTED_CONSTRAINTS];
203
209
  }
@@ -239,16 +245,18 @@ export class SalusHomebridgePlatform {
239
245
  const deviceSnapshots = await mapWithConcurrency(uniqueDevices, this.maxParallelPropertyRequests, async (device) => {
240
246
  try {
241
247
  const properties = await this.cloudClient.listProperties(device.dsn);
242
- const profile = this.deriveProfile(device, properties);
243
- return { device, properties, profile };
248
+ const normalizedDevice = normalizeDeviceOnlineState(device, properties);
249
+ const profile = this.deriveProfile(normalizedDevice, properties);
250
+ return { device: normalizedDevice, properties, profile };
244
251
  }
245
252
  catch (error) {
246
253
  const cachedFallback = this.cloudClient.getCachedProperties(device.dsn);
247
254
  const fallbackProperties = cachedFallback ?? new Map();
248
- const profile = this.deriveProfile(device, fallbackProperties);
255
+ const normalizedDevice = normalizeDeviceOnlineState(device, fallbackProperties);
256
+ const profile = this.deriveProfile(normalizedDevice, fallbackProperties);
249
257
  this.log.info(`Property sync degraded for ${device.name} (${device.dsn}): ${asErrorMessage(error)}.`
250
258
  + ` Continuing with ${cachedFallback ? 'cached' : 'empty'} properties.`);
251
- return { device, properties: fallbackProperties, profile };
259
+ return { device: normalizedDevice, properties: fallbackProperties, profile };
252
260
  }
253
261
  });
254
262
  let updatedDeviceCount = 0;
@@ -561,6 +569,39 @@ function sanitizeHomeKitName(name, fallback) {
561
569
  }
562
570
  return 'Salus Device';
563
571
  }
572
+ function normalizeDeviceOnlineState(device, properties) {
573
+ if (device.online !== undefined) {
574
+ return device;
575
+ }
576
+ const inferredOnline = inferOnlineStateFromProperties(properties);
577
+ if (inferredOnline === undefined) {
578
+ return device;
579
+ }
580
+ return {
581
+ ...device,
582
+ online: inferredOnline,
583
+ };
584
+ }
585
+ function inferOnlineStateFromProperties(properties) {
586
+ const directOnline = getBooleanProperty(properties, [
587
+ 'connected',
588
+ 'OnlineState',
589
+ 'OnlineStatus_i',
590
+ 'WiFiConnected_d',
591
+ 'LANConnected_d',
592
+ 'CloudStatus',
593
+ ]);
594
+ if (directOnline !== undefined) {
595
+ return directOnline;
596
+ }
597
+ const lostConnection = getBooleanProperty(properties, [
598
+ 'LostConnectionState',
599
+ ]);
600
+ if (lostConnection !== undefined) {
601
+ return !lostConnection;
602
+ }
603
+ return undefined;
604
+ }
564
605
  function isDuplicateBridgeRegistrationError(error) {
565
606
  if (!(error instanceof Error)) {
566
607
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAI5D,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG3D,MAAM,6BAA6B,GAAG,EAAE,CAAC;AACzC,MAAM,sCAAsC,GAAG,CAAC,CAAC;AACjD,MAAM,yBAAyB,GAAG,EAAE,CAAC;AACrC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AACtC,MAAM,mCAAmC,GAAG,CAAC,CAAC;AAE9C,MAAM,yBAAyB,GAAG;IAChC,sBAAsB;IACtB,0BAA0B;IAC1B,6BAA6B;IAC7B,wBAAwB;IACxB,2BAA2B;IAC3B,eAAe;IACf,mBAAmB;IACnB,8BAA8B;IAC9B,qBAAqB;IACrB,iBAAiB;IACjB,qBAAqB;IACrB,wBAAwB;IACxB,mBAAmB;IACnB,sBAAsB;IACtB,UAAU;IACV,cAAc;IACd,yBAAyB;IACzB,gBAAgB;IAChB,sBAAsB;IACtB,0BAA0B;IAC1B,6BAA6B;IAC7B,wBAAwB;IACxB,2BAA2B;IAC3B,eAAe;IACf,mBAAmB;IACnB,8BAA8B;IAC9B,oBAAoB;IACpB,iBAAiB;IACjB,qBAAqB;IACrB,wBAAwB;IACxB,mBAAmB;IACnB,sBAAsB;IACtB,UAAU;IACV,cAAc;IACd,yBAAyB;IACzB,eAAe;IACf,yBAAyB;IACzB,oBAAoB;IACpB,yBAAyB;IACzB,oBAAoB;IACpB,eAAe;IACf,YAAY;IACZ,cAAc;IACd,aAAa;IACb,UAAU;IACV,aAAa;CACd,CAAC;AACF,MAAM,kCAAkC,GAAG;IACzC,sBAAsB;IACtB,0BAA0B;IAC1B,6BAA6B;IAC7B,mBAAmB;IACnB,8BAA8B;IAC9B,qBAAqB;IACrB,iBAAiB;IACjB,qBAAqB;IACrB,wBAAwB;IACxB,cAAc;IACd,yBAAyB;IACzB,gBAAgB;IAChB,sBAAsB;IACtB,0BAA0B;IAC1B,6BAA6B;IAC7B,mBAAmB;IACnB,8BAA8B;IAC9B,oBAAoB;IACpB,iBAAiB;IACjB,qBAAqB;IACrB,wBAAwB;IACxB,cAAc;IACd,yBAAyB;IACzB,eAAe;IACf,yBAAyB;IACzB,oBAAoB;IACpB,yBAAyB;IACzB,oBAAoB;IACpB,wBAAwB;IACxB,2BAA2B;IAC3B,eAAe;IACf,mBAAmB;IACnB,sBAAsB;IACtB,UAAU;CACX,CAAC;AACF,MAAM,mCAAmC,GAAG;IAC1C,eAAe;IACf,YAAY;IACZ,cAAc;IACd,aAAa;IACb,UAAU;IACV,aAAa;CACd,CAAC;AACF,MAAM,mCAAmC,GAAG;IAC1C,uBAAuB;IACvB,yBAAyB;IACzB,kBAAkB;IAClB,oBAAoB;IACpB,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,oBAAoB;IACpB,aAAa;IACb,eAAe;IACf,cAAc;IACd,cAAc;IACd,sBAAsB;IACtB,iBAAiB;CAClB,CAAC;AACF,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AAC5E,MAAM,uBAAuB,GAAG,CAAC,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;AACrG,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;AAC1F,MAAM,yBAAyB,GAAG,CAAC,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AACzF,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;AACtE,MAAM,sBAAsB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACrE,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAClD,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC/C,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AACnD,MAAM,0BAA0B,GAAG,CAAC,uBAAuB,EAAE,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;AACvG,MAAM,uBAAuB,GAAG,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;AACjE,MAAM,0BAA0B,GAAG,CAAC,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC;AAE9F,MAAM,uBAAuB,GAAG;IAC9B,wFAAwF;IACxF,mHAAmH;IACnH,wHAAwH;IACxH,iIAAiI;IACjI,uGAAuG;CACxG,CAAC;AAEF,MAAM,OAAO,uBAAuB;IAiBhB;IAEA;IAlBF,OAAO,CAAiB;IACxB,cAAc,CAAwB;IACtC,WAAW,GAAmC,IAAI,GAAG,EAAE,CAAC;IAEvD,iBAAiB,GAAwC,IAAI,GAAG,EAAE,CAAC;IACnE,WAAW,CAAsB;IACjC,WAAW,CAA0B;IACrC,cAAc,CAAS;IACvB,2BAA2B,CAAS;IACpC,0BAA0B,GAAwB,IAAI,GAAG,EAAE,CAAC;IACrE,SAAS,GAA0B,IAAI,CAAC;IACxC,cAAc,GAAG,KAAK,CAAC;IACvB,eAAe,GAAG,KAAK,CAAC;IACxB,oCAAoC,GAAG,KAAK,CAAC;IAErD,YACkB,GAAY,EAC5B,MAAsB,EACN,GAAQ;QAFR,QAAG,GAAH,GAAG,CAAS;QAEZ,QAAG,GAAH,GAAG,CAAK;QAExB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,MAA6B,CAAC;QACjD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CACpC,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,6BAA6B,EACrE,yBAAyB,EACzB,yBAAyB,CAC1B,GAAG,KAAK,CAAC,CAAC;QACX,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,GAAG,CACzC,CAAC,EACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,2BAA2B,IAAI,sCAAsC,CAAC,CACnG,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC1D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8FAA8F,CAAC,CAAC;QACjH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACpE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YACrC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;YAC/E,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;YAC3B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB,CAAC,SAA4B;QAC7C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IACxE,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,MAAmB,EAAE,YAAoB,EAAE,KAAc;QACxF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;YACrE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;YAC5G,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,2BAA2B,YAAY,OAAO,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtG,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEM,yBAAyB;QAC9B,OAAO,CAAC,GAAG,uBAAuB,CAAC,CAAC;IACtC,CAAC;IAEO,YAAY,CAAC,OAAe;QAClC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC/B,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1B,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;YAChF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;QAE1C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;YACrD,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC;iBAC7C,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAAC;iBAC7D,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACxG,MAAM,aAAa,GAAG,0BAA0B,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACnF,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;gBACnC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACzE,CAAC;YAED,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAC9C,aAAa,EACb,IAAI,CAAC,2BAA2B,EAChC,KAAK,EAAE,MAAM,EAAE,EAAE;gBACf,IAAI,CAAC;oBACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAY,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACtE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;oBACvD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;gBACzC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,cAAc,GAAG,IAAI,CAAC,WAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACzE,MAAM,kBAAkB,GAAG,cAAc,IAAI,IAAI,GAAG,EAAE,CAAC;oBACvD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;oBAC/D,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,8BAA8B,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,GAAG;0BACpF,oBAAoB,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,cAAc,CACxE,CAAC;oBACF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC;gBAC7D,CAAC;YACH,CAAC,CACF,CAAC;YAEF,IAAI,kBAAkB,GAAG,CAAC,CAAC;YAC3B,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;gBACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,SAAS;gBACX,CAAC;gBACD,kBAAkB,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;gBACxE,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrD,IAAI,iBAAiB,EAAE,CAAC;oBACtB,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC3G,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;YAED,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,aAAa,CAAC,MAAM,0BAA0B,kBAAkB,uBAAuB,CAAC,CAAC;QAClI,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,MAAmB,EAAE,OAAsB,EAAE,UAA4B,EAAE,IAAY;QAC1G,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,iBAA8E,CAAC;QACrH,IAAI,oBAAoB,CAAC,iBAAiB,EAAE,CAAC;YAC3C,oFAAoF;YACpF,6EAA6E;YAC7E,oBAAoB,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACrD,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAI,SAAsD,CAAC,uBAAuB,CAAC;QACrG,IAAI,YAAY,EAAE,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,oFAAoF,CAAC,CAAC;YAC5I,wEAAwE;YACxE,uEAAuE;YACvE,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC;YAChC,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;QAC/B,CAAC;QACD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAmC,CAAC;QAC9D,OAAO,CAAC,MAAM,GAAG;YACf,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;QACF,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAE1B,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7E,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAErD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACtC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;QACrF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,kCAAkC,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,oCAAoC,EAAE,CAAC;oBAC/C,IAAI,CAAC,oCAAoC,GAAG,IAAI,CAAC;oBACjD,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;wBACpC,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,oFAAoF;8BAClF,uDAAuD,CAC1D,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;oBAC3C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sDAAsD,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;gBACvG,CAAC;gBACD,OAAO;YACT,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,wBAAwB,CAC9B,SAA4B,EAC5B,MAAmB,EACnB,OAAsB,EACtB,UAA4B;QAE5B,MAAM,eAAe,GAAG,SAAS,CAAC,WAAW,KAAK,MAAM,CAAC,IAAI,CAAC;QAC9D,IAAI,eAAe,EAAE,CAAC;YACpB,SAAS,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;QACtC,CAAC;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,OAAmC,CAAC;QAC9D,OAAO,CAAC,MAAM,GAAG;YACf,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;QACF,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAEhD,IAAI,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,sBAAsB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACvE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;IAEO,sBAAsB,CAAC,eAA4B;QACzD,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACnC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,oBAAoB,GAAG,CAAC,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACjD,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,SAAS;YACX,CAAC;YAED,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9E,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;YAC5D,IAAI,gBAAgB,GAAG,mCAAmC,EAAE,CAAC;gBAC3D,oBAAoB,IAAI,CAAC,CAAC;gBAC1B,SAAS;YACX,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wCAAwC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/E,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YAChF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,oBAAoB,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,iCAAiC,oBAAoB,yBAAyB;kBAC5E,wCAAwC,mCAAmC,qBAAqB,CACnG,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,MAAmB,EAAE,UAA4B;QACrE,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;QACjE,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,iBAAiB,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;QAE1E,MAAM,WAAW,GAAG,CAAC,GAAG,uBAAuB,CAAC,CAAC;QACjD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1B,WAAW,CAAC,IAAI,CAAC,gGAAgG,CAAC,CAAC;QACrH,CAAC;QACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,WAAW,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC9B,WAAW,CAAC,IAAI,CAAC,qGAAqG,CAAC,CAAC;QAC1H,CAAC;QAED,OAAO;YACL,IAAI;YACJ,OAAO;YACP,WAAW;SACZ,CAAC;IACJ,CAAC;CACF;AAcD,SAAS,uBAAuB,CAAC,UAA4B;IAC3D,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,mBAAmB,CAAC,EAAE,CAAC;QACxD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,uBAAuB,CAAC,EAAE,CAAC;QAC5D,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,mBAAmB,CAAC,EAAE,CAAC;QACxD,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,oBAAoB,CAAC,EAAE,CAAC;QACzD,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE,CAAC;QACtD,OAAO,sBAAsB,CAAC;IAChC,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,qBAAqB,CAAC,EAAE,CAAC;QAC1D,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,sBAAsB,CAAC,EAAE,CAAC;QAC3D,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,0BAA0B,CAAC,EAAE,CAAC;QAC/D,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,uBAAuB,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,0BAA0B,CAAC,EAAE,CAAC;QAC3H,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,0BAA0B,CAAC,EAAE,CAAC;QAC/D,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,yBAAyB,CAAC,EAAE,CAAC;QAC9D,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,oBAAoB,CAAC,EAAE,CAAC;QACzD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CACxB,mBAAsD,EACtD,oBAAuD;IAEvD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,OAAO,oBAAoB,IAAI,QAAQ,CAAC;IAC1C,CAAC;IACD,IAAI,CAAC,oBAAoB,IAAI,oBAAoB,KAAK,mBAAmB,EAAE,CAAC;QAC1E,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,4DAA4D;IAC5D,IAAI,mBAAmB,KAAK,QAAQ,IAAI,oBAAoB,KAAK,QAAQ,EAAE,CAAC;QAC1E,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IACD,IAAI,mBAAmB,KAAK,mBAAmB;WAC1C,CAAC,oBAAoB,KAAK,gBAAgB,IAAI,oBAAoB,KAAK,kBAAkB,CAAC,EAAE,CAAC;QAChG,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,SAAS,kBAAkB,CAAC,UAA4B;IACtD,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,yBAAyB,CAAC,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yEAAyE;IACzE,+DAA+D;IAC/D,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,EAAE,kCAAkC,CAAC,CAAC;IACvF,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,EAAE,mCAAmC,CAAC,CAAC;IACxF,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,EAAE,mCAAmC,CAAC,CAAC;IAExF,OAAO,WAAW,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,gCAAgC,CAAC,MAAmB;IAC3D,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IACnD,OAAO,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACnH,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAsB;IAChD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,0BAA0B,CAAC,GAAQ,EAAE,OAAsB,EAAE,GAAY;IAChF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzB,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,CACN,iDAAiD,QAAQ,CAAC,GAAG,QAAQ,MAAM,CAAC,GAAG,GAAG;kBAChF,YAAY,QAAQ,CAAC,GAAG,iBAAiB,MAAM,CAAC,GAAG,GAAG,CACzD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CACN,iDAAiD,QAAQ,CAAC,GAAG,QAAQ,MAAM,CAAC,GAAG,GAAG;kBAChF,mBAAmB,MAAM,CAAC,GAAG,GAAG,CACnC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAiB,EAAE,KAAkB;IAClE,MAAM,SAAS,GAAG,iCAAiC,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,iCAAiC,CAAC,KAAK,CAAC,CAAC;IAC5D,IAAI,UAAU,GAAG,SAAS,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iCAAiC,CAAC,MAAmB;IAC5D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/C,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC7C,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3D,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,QAAgB;IACzD,MAAM,SAAS,GAAG,CAAC,IAAI,IAAI,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,MAAM,UAAU,GAAG,SAAS;SACzB,SAAS,CAAC,MAAM,CAAC;SACjB,UAAU,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAClC,UAAU,CAAC,kBAAkB,EAAE,GAAG,CAAC;SACnC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;SACvB,IAAI,EAAE,CAAC;IACV,MAAM,YAAY,GAAG,UAAU;SAC5B,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC;SACjC,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC;SACjC,IAAI,EAAE,CAAC;IACV,IAAI,YAAY,KAAK,EAAE,EAAE,CAAC;QACxB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,kBAAkB,GAAG,CAAC,QAAQ,IAAI,cAAc,CAAC;SACpD,SAAS,CAAC,MAAM,CAAC;SACjB,UAAU,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAClC,UAAU,CAAC,kBAAkB,EAAE,GAAG,CAAC;SACnC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;SACvB,IAAI,EAAE,CAAC;IACV,IAAI,kBAAkB,KAAK,EAAE,EAAE,CAAC;QAC9B,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,kCAAkC,CAAC,KAAc;IACxD,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC5C,OAAO,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAC7C,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,KAAU,EACV,WAAmB,EACnB,MAA+B;IAE/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE,MAAM,OAAO,GAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACxB,SAAS,CAAC;YACR,MAAM,KAAK,GAAG,SAAS,CAAC;YACxB,SAAS,IAAI,CAAC,CAAC;YACf,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC1B,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,KAAK,CAAC,KAAa,EAAE,QAAgB,EAAE,QAAgB;IAC9D,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAI5D,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG3D,MAAM,6BAA6B,GAAG,EAAE,CAAC;AACzC,MAAM,sCAAsC,GAAG,CAAC,CAAC;AACjD,MAAM,yBAAyB,GAAG,EAAE,CAAC;AACrC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AACtC,MAAM,mCAAmC,GAAG,CAAC,CAAC;AAE9C,MAAM,yBAAyB,GAAG;IAChC,sBAAsB;IACtB,0BAA0B;IAC1B,6BAA6B;IAC7B,wBAAwB;IACxB,2BAA2B;IAC3B,eAAe;IACf,mBAAmB;IACnB,8BAA8B;IAC9B,qBAAqB;IACrB,iBAAiB;IACjB,qBAAqB;IACrB,wBAAwB;IACxB,mBAAmB;IACnB,sBAAsB;IACtB,UAAU;IACV,cAAc;IACd,yBAAyB;IACzB,gBAAgB;IAChB,sBAAsB;IACtB,0BAA0B;IAC1B,6BAA6B;IAC7B,wBAAwB;IACxB,2BAA2B;IAC3B,eAAe;IACf,mBAAmB;IACnB,8BAA8B;IAC9B,oBAAoB;IACpB,iBAAiB;IACjB,qBAAqB;IACrB,wBAAwB;IACxB,mBAAmB;IACnB,sBAAsB;IACtB,UAAU;IACV,cAAc;IACd,yBAAyB;IACzB,eAAe;IACf,yBAAyB;IACzB,oBAAoB;IACpB,yBAAyB;IACzB,oBAAoB;IACpB,eAAe;IACf,YAAY;IACZ,cAAc;IACd,aAAa;IACb,UAAU;IACV,aAAa;CACd,CAAC;AACF,MAAM,kCAAkC,GAAG;IACzC,sBAAsB;IACtB,0BAA0B;IAC1B,6BAA6B;IAC7B,mBAAmB;IACnB,8BAA8B;IAC9B,qBAAqB;IACrB,iBAAiB;IACjB,qBAAqB;IACrB,wBAAwB;IACxB,cAAc;IACd,yBAAyB;IACzB,gBAAgB;IAChB,sBAAsB;IACtB,0BAA0B;IAC1B,6BAA6B;IAC7B,mBAAmB;IACnB,8BAA8B;IAC9B,oBAAoB;IACpB,iBAAiB;IACjB,qBAAqB;IACrB,wBAAwB;IACxB,cAAc;IACd,yBAAyB;IACzB,eAAe;IACf,yBAAyB;IACzB,oBAAoB;IACpB,yBAAyB;IACzB,oBAAoB;IACpB,wBAAwB;IACxB,2BAA2B;IAC3B,eAAe;IACf,mBAAmB;IACnB,sBAAsB;IACtB,UAAU;CACX,CAAC;AACF,MAAM,mCAAmC,GAAG;IAC1C,eAAe;IACf,YAAY;IACZ,cAAc;IACd,aAAa;IACb,UAAU;IACV,aAAa;CACd,CAAC;AACF,MAAM,mCAAmC,GAAG;IAC1C,uBAAuB;IACvB,yBAAyB;IACzB,kBAAkB;IAClB,oBAAoB;IACpB,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,oBAAoB;IACpB,aAAa;IACb,eAAe;IACf,cAAc;IACd,cAAc;IACd,sBAAsB;IACtB,iBAAiB;CAClB,CAAC;AACF,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AAC5E,MAAM,uBAAuB,GAAG,CAAC,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;AACrG,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;AAC1F,MAAM,yBAAyB,GAAG,CAAC,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AACzF,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;AACtE,MAAM,sBAAsB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACrE,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAClD,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC/C,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AACnD,MAAM,0BAA0B,GAAG,CAAC,uBAAuB,EAAE,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;AACvG,MAAM,uBAAuB,GAAG,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;AACjE,MAAM,0BAA0B,GAAG,CAAC,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC;AAE9F,MAAM,uBAAuB,GAAG;IAC9B,wFAAwF;IACxF,mHAAmH;IACnH,wHAAwH;IACxH,iIAAiI;IACjI,uGAAuG;CACxG,CAAC;AAEF,MAAM,OAAO,uBAAuB;IAiBhB;IAEA;IAlBF,OAAO,CAAiB;IACxB,cAAc,CAAwB;IACtC,WAAW,GAAmC,IAAI,GAAG,EAAE,CAAC;IAEvD,iBAAiB,GAAwC,IAAI,GAAG,EAAE,CAAC;IACnE,WAAW,CAAsB;IACjC,WAAW,CAA0B;IACrC,cAAc,CAAS;IACvB,2BAA2B,CAAS;IACpC,0BAA0B,GAAwB,IAAI,GAAG,EAAE,CAAC;IACrE,SAAS,GAA0B,IAAI,CAAC;IACxC,cAAc,GAAG,KAAK,CAAC;IACvB,eAAe,GAAG,KAAK,CAAC;IACxB,oCAAoC,GAAG,KAAK,CAAC;IAErD,YACkB,GAAY,EAC5B,MAAsB,EACN,GAAQ;QAFR,QAAG,GAAH,GAAG,CAAS;QAEZ,QAAG,GAAH,GAAG,CAAK;QAExB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,MAA6B,CAAC;QACjD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CACpC,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,6BAA6B,EACrE,yBAAyB,EACzB,yBAAyB,CAC1B,GAAG,KAAK,CAAC,CAAC;QACX,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,GAAG,CACzC,CAAC,EACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,2BAA2B,IAAI,sCAAsC,CAAC,CACnG,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC1D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8FAA8F,CAAC,CAAC;QACjH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACpE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YACrC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;YAC/E,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;YAC3B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB,CAAC,SAA4B;QAC7C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IACxE,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,MAAmB,EAAE,YAAoB,EAAE,KAAc;QACxF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;YACrE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;YAC5G,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,2BAA2B,YAAY,OAAO,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtG,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAAC,MAAmB;QACnD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3D,CAAC;IAEM,yBAAyB;QAC9B,OAAO,CAAC,GAAG,uBAAuB,CAAC,CAAC;IACtC,CAAC;IAEO,YAAY,CAAC,OAAe;QAClC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC/B,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1B,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;YAChF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;QAE1C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;YACrD,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC;iBAC7C,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAAC;iBAC7D,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACxG,MAAM,aAAa,GAAG,0BAA0B,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACnF,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;gBACnC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACzE,CAAC;YAED,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAC9C,aAAa,EACb,IAAI,CAAC,2BAA2B,EAChC,KAAK,EAAE,MAAM,EAAE,EAAE;gBACf,IAAI,CAAC;oBACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAY,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACtE,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;oBACxE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;oBACjE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;gBAC3D,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,cAAc,GAAG,IAAI,CAAC,WAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACzE,MAAM,kBAAkB,GAAG,cAAc,IAAI,IAAI,GAAG,EAAE,CAAC;oBACvD,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;oBAChF,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;oBACzE,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,8BAA8B,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,GAAG;0BACpF,oBAAoB,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,cAAc,CACxE,CAAC;oBACF,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC;gBAC/E,CAAC;YACH,CAAC,CACF,CAAC;YAEF,IAAI,kBAAkB,GAAG,CAAC,CAAC;YAC3B,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;gBACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,SAAS;gBACX,CAAC;gBACD,kBAAkB,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;gBACxE,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrD,IAAI,iBAAiB,EAAE,CAAC;oBACtB,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC3G,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;YAED,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,aAAa,CAAC,MAAM,0BAA0B,kBAAkB,uBAAuB,CAAC,CAAC;QAClI,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,MAAmB,EAAE,OAAsB,EAAE,UAA4B,EAAE,IAAY;QAC1G,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,iBAA8E,CAAC;QACrH,IAAI,oBAAoB,CAAC,iBAAiB,EAAE,CAAC;YAC3C,oFAAoF;YACpF,6EAA6E;YAC7E,oBAAoB,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACrD,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAI,SAAsD,CAAC,uBAAuB,CAAC;QACrG,IAAI,YAAY,EAAE,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,oFAAoF,CAAC,CAAC;YAC5I,wEAAwE;YACxE,uEAAuE;YACvE,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC;YAChC,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;QAC/B,CAAC;QACD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAmC,CAAC;QAC9D,OAAO,CAAC,MAAM,GAAG;YACf,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;QACF,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAE1B,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7E,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAErD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACtC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;QACrF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,kCAAkC,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,oCAAoC,EAAE,CAAC;oBAC/C,IAAI,CAAC,oCAAoC,GAAG,IAAI,CAAC;oBACjD,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;wBACpC,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,oFAAoF;8BAClF,uDAAuD,CAC1D,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;oBAC3C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sDAAsD,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;gBACvG,CAAC;gBACD,OAAO;YACT,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,wBAAwB,CAC9B,SAA4B,EAC5B,MAAmB,EACnB,OAAsB,EACtB,UAA4B;QAE5B,MAAM,eAAe,GAAG,SAAS,CAAC,WAAW,KAAK,MAAM,CAAC,IAAI,CAAC;QAC9D,IAAI,eAAe,EAAE,CAAC;YACpB,SAAS,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;QACtC,CAAC;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,OAAmC,CAAC;QAC9D,OAAO,CAAC,MAAM,GAAG;YACf,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;QACF,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAEhD,IAAI,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,sBAAsB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACvE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;IAEO,sBAAsB,CAAC,eAA4B;QACzD,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACnC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,oBAAoB,GAAG,CAAC,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACjD,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,SAAS;YACX,CAAC;YAED,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9E,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;YAC5D,IAAI,gBAAgB,GAAG,mCAAmC,EAAE,CAAC;gBAC3D,oBAAoB,IAAI,CAAC,CAAC;gBAC1B,SAAS;YACX,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wCAAwC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/E,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YAChF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,oBAAoB,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,iCAAiC,oBAAoB,yBAAyB;kBAC5E,wCAAwC,mCAAmC,qBAAqB,CACnG,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,MAAmB,EAAE,UAA4B;QACrE,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;QACjE,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,iBAAiB,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;QAE1E,MAAM,WAAW,GAAG,CAAC,GAAG,uBAAuB,CAAC,CAAC;QACjD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1B,WAAW,CAAC,IAAI,CAAC,gGAAgG,CAAC,CAAC;QACrH,CAAC;QACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,WAAW,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC9B,WAAW,CAAC,IAAI,CAAC,qGAAqG,CAAC,CAAC;QAC1H,CAAC;QAED,OAAO;YACL,IAAI;YACJ,OAAO;YACP,WAAW;SACZ,CAAC;IACJ,CAAC;CACF;AAcD,SAAS,uBAAuB,CAAC,UAA4B;IAC3D,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,mBAAmB,CAAC,EAAE,CAAC;QACxD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,uBAAuB,CAAC,EAAE,CAAC;QAC5D,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,mBAAmB,CAAC,EAAE,CAAC;QACxD,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,oBAAoB,CAAC,EAAE,CAAC;QACzD,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE,CAAC;QACtD,OAAO,sBAAsB,CAAC;IAChC,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,qBAAqB,CAAC,EAAE,CAAC;QAC1D,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,sBAAsB,CAAC,EAAE,CAAC;QAC3D,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,0BAA0B,CAAC,EAAE,CAAC;QAC/D,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,uBAAuB,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,0BAA0B,CAAC,EAAE,CAAC;QAC3H,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,0BAA0B,CAAC,EAAE,CAAC;QAC/D,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,yBAAyB,CAAC,EAAE,CAAC;QAC9D,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,EAAE,oBAAoB,CAAC,EAAE,CAAC;QACzD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CACxB,mBAAsD,EACtD,oBAAuD;IAEvD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,OAAO,oBAAoB,IAAI,QAAQ,CAAC;IAC1C,CAAC;IACD,IAAI,CAAC,oBAAoB,IAAI,oBAAoB,KAAK,mBAAmB,EAAE,CAAC;QAC1E,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,4DAA4D;IAC5D,IAAI,mBAAmB,KAAK,QAAQ,IAAI,oBAAoB,KAAK,QAAQ,EAAE,CAAC;QAC1E,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IACD,IAAI,mBAAmB,KAAK,mBAAmB;WAC1C,CAAC,oBAAoB,KAAK,gBAAgB,IAAI,oBAAoB,KAAK,kBAAkB,CAAC,EAAE,CAAC;QAChG,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,SAAS,kBAAkB,CAAC,UAA4B;IACtD,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,yBAAyB,CAAC,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yEAAyE;IACzE,+DAA+D;IAC/D,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,EAAE,kCAAkC,CAAC,CAAC;IACvF,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,EAAE,mCAAmC,CAAC,CAAC;IACxF,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,EAAE,mCAAmC,CAAC,CAAC;IAExF,OAAO,WAAW,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,gCAAgC,CAAC,MAAmB;IAC3D,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IACnD,OAAO,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACnH,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAsB;IAChD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,0BAA0B,CAAC,GAAQ,EAAE,OAAsB,EAAE,GAAY;IAChF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzB,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,CACN,iDAAiD,QAAQ,CAAC,GAAG,QAAQ,MAAM,CAAC,GAAG,GAAG;kBAChF,YAAY,QAAQ,CAAC,GAAG,iBAAiB,MAAM,CAAC,GAAG,GAAG,CACzD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CACN,iDAAiD,QAAQ,CAAC,GAAG,QAAQ,MAAM,CAAC,GAAG,GAAG;kBAChF,mBAAmB,MAAM,CAAC,GAAG,GAAG,CACnC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAiB,EAAE,KAAkB;IAClE,MAAM,SAAS,GAAG,iCAAiC,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,iCAAiC,CAAC,KAAK,CAAC,CAAC;IAC5D,IAAI,UAAU,GAAG,SAAS,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iCAAiC,CAAC,MAAmB;IAC5D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/C,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC7C,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3D,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,QAAgB;IACzD,MAAM,SAAS,GAAG,CAAC,IAAI,IAAI,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,MAAM,UAAU,GAAG,SAAS;SACzB,SAAS,CAAC,MAAM,CAAC;SACjB,UAAU,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAClC,UAAU,CAAC,kBAAkB,EAAE,GAAG,CAAC;SACnC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;SACvB,IAAI,EAAE,CAAC;IACV,MAAM,YAAY,GAAG,UAAU;SAC5B,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC;SACjC,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC;SACjC,IAAI,EAAE,CAAC;IACV,IAAI,YAAY,KAAK,EAAE,EAAE,CAAC;QACxB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,kBAAkB,GAAG,CAAC,QAAQ,IAAI,cAAc,CAAC;SACpD,SAAS,CAAC,MAAM,CAAC;SACjB,UAAU,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAClC,UAAU,CAAC,kBAAkB,EAAE,GAAG,CAAC;SACnC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;SACvB,IAAI,EAAE,CAAC;IACV,IAAI,kBAAkB,KAAK,EAAE,EAAE,CAAC;QAC9B,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,0BAA0B,CAAC,MAAmB,EAAE,UAA4B;IACnF,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,cAAc,GAAG,8BAA8B,CAAC,UAAU,CAAC,CAAC;IAClE,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO;QACL,GAAG,MAAM;QACT,MAAM,EAAE,cAAc;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B,CAAC,UAA4B;IAClE,MAAM,YAAY,GAAG,kBAAkB,CAAC,UAAU,EAAE;QAClD,WAAW;QACX,aAAa;QACb,gBAAgB;QAChB,iBAAiB;QACjB,gBAAgB;QAChB,aAAa;KACd,CAAC,CAAC;IACH,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,cAAc,GAAG,kBAAkB,CAAC,UAAU,EAAE;QACpD,qBAAqB;KACtB,CAAC,CAAC;IACH,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,CAAC,cAAc,CAAC;IACzB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,kCAAkC,CAAC,KAAc;IACxD,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC5C,OAAO,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAC7C,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,KAAU,EACV,WAAmB,EACnB,MAA+B;IAE/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE,MAAM,OAAO,GAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACxB,SAAS,CAAC;YACR,MAAM,KAAK,GAAG,SAAS,CAAC;YACxB,SAAS,IAAI,CAAC,CAAC;YACf,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC1B,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,KAAK,CAAC,KAAa,EAAE,QAAgB,EAAE,QAAgB;IAC9D,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AACvD,CAAC"}
@@ -16,6 +16,7 @@ export declare class SalusPlatformAccessory {
16
16
  private cachedSystemMode;
17
17
  constructor(platform: SalusHomebridgePlatform, accessory: PlatformAccessory, device: SalusDevice, profile: DeviceProfile);
18
18
  updateFromCloud(device: SalusDevice, profile: DeviceProfile, properties: SalusPropertyMap): void;
19
+ private applyDeviceReachabilityState;
19
20
  getCurrentKind(): HomeKitDeviceKind;
20
21
  private setAccessoryInformation;
21
22
  private ensureService;
@@ -30,6 +31,7 @@ export declare class SalusPlatformAccessory {
30
31
  private refreshWriteTargets;
31
32
  private updateServiceCharacteristics;
32
33
  private updateThermostatCharacteristics;
34
+ private resolveEffectiveThermostatSetpoint;
33
35
  private updateSwitchCharacteristics;
34
36
  private updateOutletCharacteristics;
35
37
  private updateLightbulbCharacteristics;
@@ -50,6 +52,7 @@ export declare class SalusPlatformAccessory {
50
52
  private resolveGenericBoolean;
51
53
  private getPropertyValue;
52
54
  private setTargetTemperature;
55
+ private ensureThermostatTargetApplied;
53
56
  private setTargetHeatingCoolingState;
54
57
  private setOnOff;
55
58
  private setBrightness;
@@ -16,6 +16,18 @@ const THERMOSTAT_CURRENT_TEMP = [
16
16
  'Temperature',
17
17
  'MeasuredValue',
18
18
  ];
19
+ const THERMOSTAT_HEAT_SETPOINT_COMMAND = [
20
+ 'SetHeatingSetpoint_x100',
21
+ 'SetHeatingSetpoint',
22
+ 'SetTargetTemperature_x100',
23
+ 'SetTargetTemperature',
24
+ ];
25
+ const THERMOSTAT_COOL_SETPOINT_COMMAND = [
26
+ 'SetCoolingSetpoint_x100',
27
+ 'SetCoolingSetpoint',
28
+ 'SetTargetTemperature_x100',
29
+ 'SetTargetTemperature',
30
+ ];
19
31
  const THERMOSTAT_HEAT_SETPOINT = [
20
32
  'HeatingSetpoint_x100',
21
33
  'SetHeatingSetpoint_x100',
@@ -66,8 +78,8 @@ const THERMOSTAT_HOLD_TYPE = ['HoldType', 'SetHoldType'];
66
78
  const THERMOSTAT_HUMIDITY = ['RelativeHumidity_x100', 'RelativeHumidity', 'Humidity_x100', 'Humidity'];
67
79
  const WRITE_SYSTEM_MODE = ['SetSystemMode', 'SystemMode'];
68
80
  const WRITE_HEAT_SETPOINT = [
69
- 'SetHeatingSetpoint_x100',
70
81
  'HeatingSetpoint_x100',
82
+ 'SetHeatingSetpoint_x100',
71
83
  'SetTargetTemperature_x100',
72
84
  'TargetTemperature_x100',
73
85
  'Setpoint_x100',
@@ -80,8 +92,8 @@ const WRITE_HEAT_SETPOINT = [
80
92
  'CloudySetpoint',
81
93
  ];
82
94
  const WRITE_COOL_SETPOINT = [
83
- 'SetCoolingSetpoint_x100',
84
95
  'CoolingSetpoint_x100',
96
+ 'SetCoolingSetpoint_x100',
85
97
  'SetTargetTemperature_x100',
86
98
  'TargetTemperature_x100',
87
99
  'Setpoint_x100',
@@ -94,9 +106,9 @@ const WRITE_COOL_SETPOINT = [
94
106
  'SunnySetpoint',
95
107
  ];
96
108
  const WRITE_AUTO_HEAT_SETPOINT = [
109
+ 'HeatingSetpoint_x100',
97
110
  'SetAutoHeatingSetpoint_x100',
98
111
  'SetHeatingSetpoint_x100',
99
- 'HeatingSetpoint_x100',
100
112
  'SetTargetTemperature_x100',
101
113
  'TargetTemperature_x100',
102
114
  'Setpoint_x100',
@@ -110,9 +122,9 @@ const WRITE_AUTO_HEAT_SETPOINT = [
110
122
  'CloudySetpoint',
111
123
  ];
112
124
  const WRITE_AUTO_COOL_SETPOINT = [
125
+ 'CoolingSetpoint_x100',
113
126
  'SetAutoCoolingSetpoint_x100',
114
127
  'SetCoolingSetpoint_x100',
115
- 'CoolingSetpoint_x100',
116
128
  'SetTargetTemperature_x100',
117
129
  'TargetTemperature_x100',
118
130
  'Setpoint_x100',
@@ -193,9 +205,31 @@ export class SalusPlatformAccessory {
193
205
  this.platform.log.info(`Reconfigured ${device.name} (${device.dsn}) as ${profile.kind}`);
194
206
  }
195
207
  this.service.updateCharacteristic(this.platform.Characteristic.Name, this.device.name);
208
+ this.applyDeviceReachabilityState();
196
209
  this.refreshWriteTargets();
197
210
  this.updateServiceCharacteristics();
198
211
  }
212
+ applyDeviceReachabilityState() {
213
+ if (typeof this.device.online !== 'boolean') {
214
+ return;
215
+ }
216
+ const expectedReachable = this.device.online;
217
+ const hapAccessory = this.accessory._associatedHAPAccessory;
218
+ if (hapAccessory && typeof hapAccessory.reachable === 'boolean' && hapAccessory.reachable !== expectedReachable) {
219
+ hapAccessory.reachable = expectedReachable;
220
+ this.platform.log.info(`${this.device.name} (${this.device.dsn}) marked as ${expectedReachable ? 'reachable' : 'unreachable'} based on Salus cloud online state.`);
221
+ }
222
+ if (this.service.testCharacteristic(this.platform.Characteristic.StatusActive)) {
223
+ const statusActive = expectedReachable ? 1 : 0;
224
+ this.service.updateCharacteristic(this.platform.Characteristic.StatusActive, statusActive);
225
+ }
226
+ if (this.service.testCharacteristic(this.platform.Characteristic.StatusFault)) {
227
+ const statusFault = expectedReachable
228
+ ? this.platform.Characteristic.StatusFault.NO_FAULT
229
+ : this.platform.Characteristic.StatusFault.GENERAL_FAULT;
230
+ this.service.updateCharacteristic(this.platform.Characteristic.StatusFault, statusFault);
231
+ }
232
+ }
199
233
  getCurrentKind() {
200
234
  return this.currentKind;
201
235
  }
@@ -372,8 +406,8 @@ export class SalusPlatformAccessory {
372
406
  }
373
407
  updateThermostatCharacteristics() {
374
408
  const currentTempRaw = getNumberProperty(this.latestProperties, THERMOSTAT_CURRENT_TEMP);
375
- const heatingSetpointRaw = getNumberProperty(this.latestProperties, THERMOSTAT_HEAT_SETPOINT);
376
- const coolingSetpointRaw = getNumberProperty(this.latestProperties, THERMOSTAT_COOL_SETPOINT);
409
+ const heatingSetpointRaw = this.resolveEffectiveThermostatSetpoint(THERMOSTAT_HEAT_SETPOINT, THERMOSTAT_HEAT_SETPOINT_COMMAND);
410
+ const coolingSetpointRaw = this.resolveEffectiveThermostatSetpoint(THERMOSTAT_COOL_SETPOINT, THERMOSTAT_COOL_SETPOINT_COMMAND);
377
411
  const systemModeRaw = getNumberProperty(this.latestProperties, THERMOSTAT_SYSTEM_MODE);
378
412
  const runningStateRaw = getNumberProperty(this.latestProperties, THERMOSTAT_RUNNING_STATE);
379
413
  const holdTypeRaw = getNumberProperty(this.latestProperties, THERMOSTAT_HOLD_TYPE);
@@ -418,6 +452,24 @@ export class SalusPlatformAccessory {
418
452
  this.service.updateCharacteristic(this.platform.Characteristic.CurrentRelativeHumidity, clamp(humidity, 0, 100));
419
453
  }
420
454
  }
455
+ resolveEffectiveThermostatSetpoint(primaryCandidates, commandCandidates) {
456
+ const primaryRaw = getNumberProperty(this.latestProperties, primaryCandidates);
457
+ const commandRaw = getNumberProperty(this.latestProperties, commandCandidates);
458
+ if (primaryRaw === undefined) {
459
+ return commandRaw;
460
+ }
461
+ if (commandRaw === undefined) {
462
+ return primaryRaw;
463
+ }
464
+ const primaryC = normalizeTemperatureFromX100(primaryRaw);
465
+ const commandC = normalizeTemperatureFromX100(commandRaw);
466
+ // Some Salus tenants update command and effective setpoint fields asynchronously.
467
+ // Prefer command value when mismatch is meaningful to avoid stale HomeKit display.
468
+ if (Math.abs(primaryC - commandC) >= 0.4) {
469
+ return commandRaw;
470
+ }
471
+ return primaryRaw;
472
+ }
421
473
  updateSwitchCharacteristics() {
422
474
  const on = this.resolveOnOffState();
423
475
  if (on !== undefined) {
@@ -635,23 +687,55 @@ export class SalusPlatformAccessory {
635
687
  queuedProperties.add(property);
636
688
  writes.push({ property, value: sampleLooksX100 ? scaledX100 : scaledPlain });
637
689
  };
690
+ const enqueueMirrorWrite = (property) => {
691
+ if (!property) {
692
+ return;
693
+ }
694
+ enqueueWrite(property);
695
+ };
638
696
  if (targetState === this.platform.Characteristic.TargetHeatingCoolingState.COOL) {
639
- enqueueWrite(pickFirstProperty([
697
+ const primary = pickFirstProperty([
640
698
  this.writeTargets.coolSetpoint,
641
699
  this.writeTargets.autoCoolSetpoint,
642
700
  this.writeTargets.heatSetpoint,
701
+ ]);
702
+ enqueueWrite(primary);
703
+ enqueueMirrorWrite(findPropertyByBaseName(this.latestProperties, [
704
+ 'CoolingSetpoint_x100',
705
+ 'SetCoolingSetpoint_x100',
706
+ 'CoolingSetpoint',
707
+ 'SetCoolingSetpoint',
643
708
  ]));
644
709
  }
645
710
  else if (targetState === this.platform.Characteristic.TargetHeatingCoolingState.AUTO) {
646
711
  enqueueWrite(pickFirstProperty([this.writeTargets.autoHeatSetpoint, this.writeTargets.heatSetpoint]));
647
712
  enqueueWrite(pickFirstProperty([this.writeTargets.autoCoolSetpoint, this.writeTargets.coolSetpoint]));
713
+ enqueueMirrorWrite(findPropertyByBaseName(this.latestProperties, [
714
+ 'HeatingSetpoint_x100',
715
+ 'SetHeatingSetpoint_x100',
716
+ 'HeatingSetpoint',
717
+ 'SetHeatingSetpoint',
718
+ ]));
719
+ enqueueMirrorWrite(findPropertyByBaseName(this.latestProperties, [
720
+ 'CoolingSetpoint_x100',
721
+ 'SetCoolingSetpoint_x100',
722
+ 'CoolingSetpoint',
723
+ 'SetCoolingSetpoint',
724
+ ]));
648
725
  }
649
726
  else {
650
- enqueueWrite(pickFirstProperty([
727
+ const primary = pickFirstProperty([
651
728
  this.writeTargets.heatSetpoint,
652
729
  this.writeTargets.autoHeatSetpoint,
653
730
  this.writeTargets.coolSetpoint,
654
731
  this.writeTargets.autoCoolSetpoint,
732
+ ]);
733
+ enqueueWrite(primary);
734
+ enqueueMirrorWrite(findPropertyByBaseName(this.latestProperties, [
735
+ 'HeatingSetpoint_x100',
736
+ 'SetHeatingSetpoint_x100',
737
+ 'HeatingSetpoint',
738
+ 'SetHeatingSetpoint',
655
739
  ]));
656
740
  }
657
741
  if (writes.length === 0) {
@@ -660,8 +744,49 @@ export class SalusPlatformAccessory {
660
744
  for (const write of writes) {
661
745
  await this.platform.writeDeviceProperty(this.device, write.property, write.value);
662
746
  }
747
+ await this.ensureThermostatTargetApplied(targetTemperature, targetState);
663
748
  this.platform.log.info(`Set thermostat target for ${this.device.name} to ${targetTemperature.toFixed(1)}°C`);
664
749
  }
750
+ async ensureThermostatTargetApplied(expectedTemperatureC, targetState) {
751
+ const maxAttempts = 6;
752
+ const toleranceC = 0.4;
753
+ let lastObserved;
754
+ let lastError;
755
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
756
+ try {
757
+ const properties = await this.platform.readDeviceProperties(this.device);
758
+ const primaryObserved = targetState === this.platform.Characteristic.TargetHeatingCoolingState.COOL
759
+ ? getNumberProperty(properties, THERMOSTAT_COOL_SETPOINT)
760
+ : getNumberProperty(properties, THERMOSTAT_HEAT_SETPOINT);
761
+ const commandObserved = targetState === this.platform.Characteristic.TargetHeatingCoolingState.COOL
762
+ ? getNumberProperty(properties, THERMOSTAT_COOL_SETPOINT_COMMAND)
763
+ : getNumberProperty(properties, THERMOSTAT_HEAT_SETPOINT_COMMAND);
764
+ const observedValues = [primaryObserved, commandObserved]
765
+ .filter((value) => value !== undefined)
766
+ .map((value) => clamp(normalizeTemperatureFromX100(value), 4.5, 35));
767
+ if (observedValues.length > 0) {
768
+ lastObserved = observedValues[0];
769
+ if (observedValues.some((observed) => Math.abs(observed - expectedTemperatureC) <= toleranceC)) {
770
+ return;
771
+ }
772
+ }
773
+ }
774
+ catch (error) {
775
+ lastError = error;
776
+ }
777
+ if (attempt < maxAttempts) {
778
+ await sleep(1_500);
779
+ }
780
+ }
781
+ if (lastError) {
782
+ this.platform.log.warn(`Unable to confirm thermostat setpoint for ${this.device.name} after write: ${asErrorMessage(lastError)}`);
783
+ }
784
+ else {
785
+ this.platform.log.warn(`Thermostat setpoint for ${this.device.name} did not converge to ${expectedTemperatureC.toFixed(1)}°C`
786
+ + `${lastObserved !== undefined ? ` (latest observed ${lastObserved.toFixed(1)}°C)` : ''}`);
787
+ }
788
+ throw this.communicationFailure('Thermostat setpoint write was not applied by Salus cloud');
789
+ }
665
790
  async setTargetHeatingCoolingState(value) {
666
791
  const hkStateRaw = parseCharacteristicNumber(value);
667
792
  if (hkStateRaw === undefined) {
@@ -943,4 +1068,7 @@ function asErrorMessage(error) {
943
1068
  }
944
1069
  return String(error);
945
1070
  }
1071
+ function sleep(ms) {
1072
+ return new Promise((resolve) => setTimeout(resolve, ms));
1073
+ }
946
1074
  //# sourceMappingURL=platformAccessory.js.map