homebridge-tsvesync 1.0.70 → 1.0.72

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.
@@ -5,18 +5,55 @@ import { DeviceCapabilities, VeSyncHumidifier } from '../types/device.types';
5
5
  export declare class HumidifierAccessory extends BaseAccessory {
6
6
  protected readonly device: VeSyncHumidifier;
7
7
  private capabilities;
8
+ private isHumid200S;
8
9
  private isHumid200300S;
10
+ private isHumid1000S;
11
+ private isSuperior6000S;
9
12
  private lightService?;
13
+ private temperatureService?;
14
+ private filterService?;
10
15
  constructor(platform: TSVESyncPlatform, accessory: PlatformAccessory, device: VeSyncHumidifier);
16
+ /**
17
+ * Detect if the device is a Humid200S
18
+ */
19
+ private detectHumid200S;
11
20
  /**
12
21
  * Detect if the device is a Humid200300S
13
22
  */
14
23
  private detectHumid200300S;
24
+ /**
25
+ * Detect if the device is a Humid1000S
26
+ */
27
+ private detectHumid1000S;
28
+ /**
29
+ * Detect if the device is a Superior6000S
30
+ */
31
+ private detectSuperior6000S;
15
32
  protected setupService(): void;
16
33
  /**
17
- * Set up night light service for Humid200300S devices
34
+ * Set up night light service for devices that support it
18
35
  */
19
36
  private setupNightLightService;
37
+ /**
38
+ * Set up temperature sensor service for Superior6000S
39
+ */
40
+ private setupTemperatureService;
41
+ /**
42
+ * Get temperature for Superior6000S
43
+ */
44
+ private getTemperature;
45
+ /**
46
+ * Set up filter maintenance service for Superior6000S
47
+ */
48
+ private setupFilterService;
49
+ /**
50
+ * Get filter change indication for Superior6000S
51
+ */
52
+ private getFilterChangeIndication;
53
+ /**
54
+ * Get filter life level for Superior6000S
55
+ */
56
+ private getFilterLifeLevel;
20
57
  /**
21
58
  * Get night light on state
22
59
  */
@@ -1 +1 @@
1
- {"version":3,"file":"humidifier.accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/humidifier.accessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,iBAAiB,EAAW,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAuD7E,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAC5C,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,YAAY,CAAC,CAAU;gBAG7B,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,gBAAgB;IA0B1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B,SAAS,CAAC,YAAY,IAAI,IAAI;IAqH9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA0B9B;;OAEG;YACW,eAAe;IAO7B;;OAEG;YACW,eAAe;IAoB7B;;OAEG;YACW,uBAAuB;IAMrC;;OAEG;YACW,uBAAuB;IAmBrC;;OAEG;cACa,0BAA0B,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IA2NvE,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;YAcvC,SAAS;YA4BT,SAAS;YAqJT,gBAAgB;YAqBhB,cAAc;YA4Jd,sBAAsB;IA0EpC;;OAEG;IACH;;OAEG;YACW,iBAAiB;IAsB/B;;OAEG;YACW,iBAAiB;IAkE/B,OAAO,CAAC,gCAAgC;CAWzC"}
1
+ {"version":3,"file":"humidifier.accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/humidifier.accessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,iBAAiB,EAAW,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AA6E7E,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAC5C,OAAO,CAAC,YAAY,CAAqB;IAGzC,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,eAAe,CAAU;IAGjC,OAAO,CAAC,YAAY,CAAC,CAAU;IAC/B,OAAO,CAAC,kBAAkB,CAAC,CAAU;IACrC,OAAO,CAAC,aAAa,CAAC,CAAU;gBAG9B,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,gBAAgB;IAsC1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyB1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuBxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B,SAAS,CAAC,YAAY,IAAI,IAAI;IA2H9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA0B9B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA8B/B;;OAEG;YACW,cAAc;IAW5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmC1B;;OAEG;YACW,yBAAyB;IAYvC;;OAEG;YACW,kBAAkB;IAYhC;;OAEG;YACW,eAAe;IAO7B;;OAEG;YACW,eAAe;IAoB7B;;OAEG;YACW,uBAAuB;IAMrC;;OAEG;YACW,uBAAuB;IAmBrC;;OAEG;cACa,0BAA0B,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IA2PvE,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;YAcvC,SAAS;YA4BT,SAAS;YAuJT,gBAAgB;YAqBhB,cAAc;YA4Jd,sBAAsB;IAmFpC;;OAEG;IACH;;OAEG;YACW,iBAAiB;IAsB/B;;OAEG;YACW,iBAAiB;IAkE/B,OAAO,CAAC,gCAAgC;CAWzC"}
@@ -18,11 +18,43 @@ class HumidifierAccessory extends base_accessory_1.BaseAccessory {
18
18
  hasChildLock: true,
19
19
  hasSwingMode: false,
20
20
  };
21
- // Detect if this is a Humid200300S device
21
+ // Detect device type
22
+ this.isHumid200S = this.detectHumid200S();
22
23
  this.isHumid200300S = this.detectHumid200300S();
23
- if (this.isHumid200300S) {
24
+ this.isHumid1000S = this.detectHumid1000S();
25
+ this.isSuperior6000S = this.detectSuperior6000S();
26
+ // Log detected device type
27
+ if (this.isHumid200S) {
28
+ this.platform.log.debug(`Detected Humid200S device: ${this.device.deviceName}`);
29
+ }
30
+ else if (this.isHumid200300S) {
24
31
  this.platform.log.debug(`Detected Humid200300S device: ${this.device.deviceName}`);
25
32
  }
33
+ else if (this.isHumid1000S) {
34
+ this.platform.log.debug(`Detected Humid1000S device: ${this.device.deviceName}`);
35
+ }
36
+ else if (this.isSuperior6000S) {
37
+ this.platform.log.debug(`Detected Superior6000S device: ${this.device.deviceName}`);
38
+ }
39
+ else {
40
+ this.platform.log.debug(`Unknown humidifier type: ${this.device.deviceName}, using default implementation`);
41
+ }
42
+ }
43
+ /**
44
+ * Detect if the device is a Humid200S
45
+ */
46
+ detectHumid200S() {
47
+ const deviceType = this.device.deviceType.toUpperCase();
48
+ // Classic200S is a Humid200S device
49
+ if (deviceType.includes('CLASSIC200S')) {
50
+ return true;
51
+ }
52
+ // Check for mist level range 1-3 which is specific to Humid200S
53
+ const extendedDevice = this.device;
54
+ if (extendedDevice.mistLevel !== undefined && extendedDevice.mistLevel <= 3) {
55
+ return true;
56
+ }
57
+ return false;
26
58
  }
27
59
  /**
28
60
  * Detect if the device is a Humid200300S
@@ -34,9 +66,62 @@ class HumidifierAccessory extends base_accessory_1.BaseAccessory {
34
66
  (extendedDevice.details && typeof extendedDevice.details.night_light_brightness !== 'undefined')) {
35
67
  return true;
36
68
  }
37
- // Check device type for Classic200S or Classic300S
69
+ // Check device type for Classic300S or Dual200S
38
70
  const deviceType = this.device.deviceType.toUpperCase();
39
- return deviceType.includes('CLASSIC200S') || deviceType.includes('CLASSIC300S');
71
+ if (deviceType.includes('CLASSIC300S') || deviceType.includes('DUAL200S')) {
72
+ return true;
73
+ }
74
+ // Check for LUH-A601S, LUH-A602S, LUH-O451S, LUH-O601S series
75
+ if (deviceType.includes('LUH-A601S') ||
76
+ deviceType.includes('LUH-A602S') ||
77
+ deviceType.includes('LUH-O451S') ||
78
+ deviceType.includes('LUH-O601S')) {
79
+ return true;
80
+ }
81
+ return false;
82
+ }
83
+ /**
84
+ * Detect if the device is a Humid1000S
85
+ */
86
+ detectHumid1000S() {
87
+ const deviceType = this.device.deviceType.toUpperCase();
88
+ // Check for LUH-M101S series
89
+ if (deviceType.includes('LUH-M101S-WUS') || deviceType.includes('LUH-M101S-WEUR')) {
90
+ return true;
91
+ }
92
+ // Check for OasisMist1000S
93
+ if (deviceType.includes('OASISMIST1000S')) {
94
+ return true;
95
+ }
96
+ // Check for powerSwitch field and night light control
97
+ const extendedDevice = this.device;
98
+ if (extendedDevice.powerSwitch !== undefined &&
99
+ typeof extendedDevice.setNightLight === 'function') {
100
+ return true;
101
+ }
102
+ return false;
103
+ }
104
+ /**
105
+ * Detect if the device is a Superior6000S
106
+ */
107
+ detectSuperior6000S() {
108
+ const deviceType = this.device.deviceType.toUpperCase();
109
+ // Check for LEH-S601S series
110
+ if (deviceType.includes('LEH-S601S-WUS') || deviceType.includes('LEH-S601S-WUSR')) {
111
+ return true;
112
+ }
113
+ // Check for Superior6000S
114
+ if (deviceType.includes('SUPERIOR6000S')) {
115
+ return true;
116
+ }
117
+ // Check for temperature or drying mode properties
118
+ const extendedDevice = this.device;
119
+ if (extendedDevice.temperature !== undefined ||
120
+ extendedDevice.dryingModeEnabled !== undefined ||
121
+ extendedDevice.filterLifePercentage !== undefined) {
122
+ return true;
123
+ }
124
+ return false;
40
125
  }
41
126
  setupService() {
42
127
  // No need to check for capabilities initialization since we set defaults in constructor
@@ -108,13 +193,18 @@ class HumidifierAccessory extends base_accessory_1.BaseAccessory {
108
193
  if (this.capabilities && this.capabilities.hasChildLock) {
109
194
  this.setupCharacteristic(this.platform.Characteristic.LockPhysicalControls, async () => false, async (value) => { throw new Error('Locking physical controls is not supported by the tsvesync API.'); });
110
195
  }
111
- // Add night light service for Humid200300S devices
112
- if (this.isHumid200300S) {
196
+ // Add night light service for devices that support it
197
+ if (this.isHumid200300S || this.isHumid1000S) {
113
198
  this.setupNightLightService();
114
199
  }
200
+ // Add temperature sensor service for Superior6000S
201
+ if (this.isSuperior6000S) {
202
+ this.setupTemperatureService();
203
+ this.setupFilterService();
204
+ }
115
205
  }
116
206
  /**
117
- * Set up night light service for Humid200300S devices
207
+ * Set up night light service for devices that support it
118
208
  */
119
209
  setupNightLightService() {
120
210
  this.platform.log.debug(`Setting up night light service for device: ${this.device.deviceName}`);
@@ -126,6 +216,72 @@ class HumidifierAccessory extends base_accessory_1.BaseAccessory {
126
216
  // Set up brightness characteristic
127
217
  this.setupCharacteristic(this.platform.Characteristic.Brightness, this.getNightLightBrightness.bind(this), this.setNightLightBrightness.bind(this), undefined, this.lightService);
128
218
  }
219
+ /**
220
+ * Set up temperature sensor service for Superior6000S
221
+ */
222
+ setupTemperatureService() {
223
+ this.platform.log.debug(`Setting up temperature sensor service for device: ${this.device.deviceName}`);
224
+ // Get or create the temperature sensor service
225
+ this.temperatureService = this.accessory.getService(this.platform.Service.TemperatureSensor) ||
226
+ this.accessory.addService(this.platform.Service.TemperatureSensor);
227
+ // Set up current temperature characteristic
228
+ this.setupCharacteristic(this.platform.Characteristic.CurrentTemperature, this.getTemperature.bind(this), undefined, {
229
+ minValue: -50,
230
+ maxValue: 100,
231
+ minStep: 0.1
232
+ }, this.temperatureService);
233
+ // Set name for the temperature sensor
234
+ this.setupCharacteristic(this.platform.Characteristic.Name, async () => `${this.device.deviceName} Temperature`, undefined, undefined, this.temperatureService);
235
+ }
236
+ /**
237
+ * Get temperature for Superior6000S
238
+ */
239
+ async getTemperature() {
240
+ const extendedDevice = this.device;
241
+ // Get temperature from device
242
+ const temperature = extendedDevice.temperature ||
243
+ (extendedDevice.details && extendedDevice.details.temperature) ||
244
+ 20; // Default to 20°C if not available
245
+ return temperature;
246
+ }
247
+ /**
248
+ * Set up filter maintenance service for Superior6000S
249
+ */
250
+ setupFilterService() {
251
+ this.platform.log.debug(`Setting up filter maintenance service for device: ${this.device.deviceName}`);
252
+ // Get or create the filter maintenance service
253
+ this.filterService = this.accessory.getService(this.platform.Service.FilterMaintenance) ||
254
+ this.accessory.addService(this.platform.Service.FilterMaintenance);
255
+ // Set up filter change indication characteristic
256
+ this.setupCharacteristic(this.platform.Characteristic.FilterChangeIndication, this.getFilterChangeIndication.bind(this), undefined, undefined, this.filterService);
257
+ // Set up filter life level characteristic
258
+ this.setupCharacteristic(this.platform.Characteristic.FilterLifeLevel, this.getFilterLifeLevel.bind(this), undefined, undefined, this.filterService);
259
+ // Set name for the filter service
260
+ this.setupCharacteristic(this.platform.Characteristic.Name, async () => `${this.device.deviceName} Filter`, undefined, undefined, this.filterService);
261
+ }
262
+ /**
263
+ * Get filter change indication for Superior6000S
264
+ */
265
+ async getFilterChangeIndication() {
266
+ const extendedDevice = this.device;
267
+ // Get filter life percentage
268
+ const filterLife = extendedDevice.filterLifePercentage ||
269
+ (extendedDevice.details && extendedDevice.details.filter_life) ||
270
+ 100; // Default to 100% if not available
271
+ // Return 1 (CHANGE_FILTER) if filter life is below 10%, otherwise 0 (FILTER_OK)
272
+ return filterLife < 10 ? 1 : 0;
273
+ }
274
+ /**
275
+ * Get filter life level for Superior6000S
276
+ */
277
+ async getFilterLifeLevel() {
278
+ const extendedDevice = this.device;
279
+ // Get filter life percentage
280
+ const filterLife = extendedDevice.filterLifePercentage ||
281
+ (extendedDevice.details && extendedDevice.details.filter_life) ||
282
+ 100; // Default to 100% if not available
283
+ return filterLife;
284
+ }
129
285
  /**
130
286
  * Get night light on state
131
287
  */
@@ -372,13 +528,16 @@ class HumidifierAccessory extends base_accessory_1.BaseAccessory {
372
528
  const waterTankLifted = (details === null || details === void 0 ? void 0 : details.water_tank_lifted) ||
373
529
  (extendedDevice.details && extendedDevice.details.water_tank_lifted);
374
530
  const waterLow = waterLacks || waterTankLifted;
531
+ // Note: VeSync devices only support a boolean water_lacks property, not a percentage water level
532
+ // We map this to 0% or 100% for HomeKit's WaterLevel characteristic
375
533
  if (this.service.getCharacteristic(this.platform.Characteristic.WaterLevel)) {
376
534
  // Map water level as 0 for low water, 100 for sufficient water
377
535
  this.service.updateCharacteristic(this.platform.Characteristic.WaterLevel, waterLow ? 0 : 100);
536
+ this.platform.log.debug(`Water level for ${this.device.deviceName}: ${waterLow ? 'Low (0%)' : 'OK (100%)'}`);
378
537
  }
379
538
  }
380
- // Update night light characteristics for Humid200300S devices
381
- if (this.isHumid200300S && this.lightService) {
539
+ // Update night light characteristics for devices that support it
540
+ if ((this.isHumid200300S || this.isHumid1000S) && this.lightService) {
382
541
  const brightness = extendedDevice.nightLightBrightness ||
383
542
  (extendedDevice.details && extendedDevice.details.night_light_brightness) || 0;
384
543
  // Update on/off state
@@ -386,6 +545,22 @@ class HumidifierAccessory extends base_accessory_1.BaseAccessory {
386
545
  // Update brightness
387
546
  this.lightService.updateCharacteristic(this.platform.Characteristic.Brightness, brightness);
388
547
  }
548
+ // Update temperature for Superior6000S
549
+ if (this.isSuperior6000S && this.temperatureService) {
550
+ const temperature = extendedDevice.temperature ||
551
+ (extendedDevice.details && extendedDevice.details.temperature) ||
552
+ 20; // Default to 20°C if not available
553
+ this.temperatureService.updateCharacteristic(this.platform.Characteristic.CurrentTemperature, temperature);
554
+ }
555
+ // Update filter life for Superior6000S
556
+ if (this.isSuperior6000S && this.filterService) {
557
+ const filterLife = extendedDevice.filterLifePercentage ||
558
+ (extendedDevice.details && extendedDevice.details.filter_life) ||
559
+ 100; // Default to 100% if not available
560
+ this.filterService.updateCharacteristic(this.platform.Characteristic.FilterLifeLevel, filterLife);
561
+ this.filterService.updateCharacteristic(this.platform.Characteristic.FilterChangeIndication, filterLife < 10 ? 1 : 0 // 1 = CHANGE_FILTER, 0 = FILTER_OK
562
+ );
563
+ }
389
564
  }
390
565
  getDeviceCapabilities() {
391
566
  return {
@@ -459,15 +634,16 @@ class HumidifierAccessory extends base_accessory_1.BaseAccessory {
459
634
  return;
460
635
  }
461
636
  let success = false;
462
- // Try to turn the device on/off using the appropriate method
637
+ // Try to turn the device on/off using the appropriate method based on device type
463
638
  if (isOn) {
464
639
  // Turn on the device
465
640
  this.platform.log.debug(`Attempting to turn ON device: ${this.device.deviceName}`);
641
+ // Use the appropriate method based on device type
466
642
  success = await this.device.turnOn();
467
643
  // If successful, set the device to manual mode
468
644
  if (success) {
469
- // For Humid200300S devices, use the specific setManualMode method if available
470
- if (this.isHumid200300S && typeof extendedDevice.setManualMode === 'function') {
645
+ // For devices with specific mode setting methods, use them
646
+ if (typeof extendedDevice.setManualMode === 'function') {
471
647
  this.platform.log.debug(`Setting device to manual mode using setManualMode: ${this.device.deviceName}`);
472
648
  const modeSuccess = await extendedDevice.setManualMode();
473
649
  this.platform.log.debug(`Set manual mode result: ${modeSuccess ? 'success' : 'failed'}`);
@@ -737,12 +913,20 @@ class HumidifierAccessory extends base_accessory_1.BaseAccessory {
737
913
  else {
738
914
  speed = 9;
739
915
  }
740
- // Check if this is a Humid200300S device and use setMistLevel if available
916
+ // Adjust speed based on device type
741
917
  const extendedDevice = this.device;
742
918
  let success = false;
743
- if (this.isHumid200300S && typeof extendedDevice.setMistLevel === 'function') {
744
- // Use setMistLevel for Humid200300S devices
745
- this.platform.log.debug(`Setting mist level to ${speed} for Humid200300S device: ${this.device.deviceName}`);
919
+ // For Humid200S devices, limit mist level to 1-3
920
+ if (this.isHumid200S) {
921
+ // Limit speed to 1-3 for Humid200S devices
922
+ speed = Math.min(speed, 3);
923
+ this.platform.log.debug(`Limiting mist level to ${speed} for Humid200S device: ${this.device.deviceName}`);
924
+ }
925
+ // Use the appropriate method based on device type
926
+ if ((this.isHumid200S || this.isHumid200300S || this.isHumid1000S || this.isSuperior6000S) &&
927
+ typeof extendedDevice.setMistLevel === 'function') {
928
+ // Use setMistLevel for devices that support it
929
+ this.platform.log.debug(`Setting mist level to ${speed} for device: ${this.device.deviceName}`);
746
930
  success = await extendedDevice.setMistLevel(speed);
747
931
  }
748
932
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"humidifier.accessory.js","sourceRoot":"","sources":["../../src/accessories/humidifier.accessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"humidifier.accessory.js","sourceRoot":"","sources":["../../src/accessories/humidifier.accessory.ts"],"names":[],"mappings":";;;AACA,qDAAiD;AA+EjD,MAAa,mBAAoB,SAAQ,8BAAa;IAepD,YACE,QAA0B,EAC1B,SAA4B,EAC5B,MAAwB;QAExB,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,mEAAmE;QACnE,IAAI,CAAC,YAAY,GAAG;YAClB,aAAa,EAAE,KAAK;YACpB,YAAY,EAAE,KAAK;YACnB,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,KAAK;YACpB,aAAa,EAAE,IAAI;YACnB,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,KAAK;SACpB,CAAC;QAEF,qBAAqB;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAElD,2BAA2B;QAC3B,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;SACjF;aAAM,IAAI,IAAI,CAAC,cAAc,EAAE;YAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,iCAAiC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;SACpF;aAAM,IAAI,IAAI,CAAC,YAAY,EAAE;YAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,+BAA+B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;SAClF;aAAM,IAAI,IAAI,CAAC,eAAe,EAAE;YAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,kCAAkC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;SACrF;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,MAAM,CAAC,UAAU,gCAAgC,CAAC,CAAC;SAC7G;IACH,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAExD,oCAAoC;QACpC,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;YACtC,OAAO,IAAI,CAAC;SACb;QAED,gEAAgE;QAChE,MAAM,cAAc,GAAG,IAAI,CAAC,MAAkC,CAAC;QAC/D,IAAI,cAAc,CAAC,SAAS,KAAK,SAAS,IAAI,cAAc,CAAC,SAAS,IAAI,CAAC,EAAE;YAC3E,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,4DAA4D;QAC5D,MAAM,cAAc,GAAG,IAAI,CAAC,MAAkC,CAAC;QAC/D,IAAI,OAAO,cAAc,CAAC,oBAAoB,KAAK,WAAW;YAC1D,CAAC,cAAc,CAAC,OAAO,IAAI,OAAO,cAAc,CAAC,OAAO,CAAC,sBAAsB,KAAK,WAAW,CAAC,EAAE;YACpG,OAAO,IAAI,CAAC;SACb;QAED,gDAAgD;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QACxD,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YACzE,OAAO,IAAI,CAAC;SACb;QAED,8DAA8D;QAC9D,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC;YAChC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC;YAChC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC;YAChC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACpC,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAExD,6BAA6B;QAC7B,IAAI,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;YACjF,OAAO,IAAI,CAAC;SACb;QAED,2BAA2B;QAC3B,IAAI,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;YACzC,OAAO,IAAI,CAAC;SACb;QAED,sDAAsD;QACtD,MAAM,cAAc,GAAG,IAAI,CAAC,MAAkC,CAAC;QAC/D,IAAI,cAAc,CAAC,WAAW,KAAK,SAAS;YACxC,OAAO,cAAc,CAAC,aAAa,KAAK,UAAU,EAAE;YACtD,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,mBAAmB;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAExD,6BAA6B;QAC7B,IAAI,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;YACjF,OAAO,IAAI,CAAC;SACb;QAED,0BAA0B;QAC1B,IAAI,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;YACxC,OAAO,IAAI,CAAC;SACb;QAED,kDAAkD;QAClD,MAAM,cAAc,GAAG,IAAI,CAAC,MAAkC,CAAC;QAC/D,IAAI,cAAc,CAAC,WAAW,KAAK,SAAS;YACxC,cAAc,CAAC,iBAAiB,KAAK,SAAS;YAC9C,cAAc,CAAC,oBAAoB,KAAK,SAAS,EAAE;YACrD,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAES,YAAY;QACpB,wFAAwF;QAExF,uCAAuC;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC;YACpF,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAE1E,sDAAsD;QACtD,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,mCAAmC,EAAE,EAAE,CAAC,CAAC;QACxG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kCAAkC,EAAE,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;QACrG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAEvF,kCAAkC;QAClC,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAC1B,CAAC;QAEF,sDAAsD;QACtD,6CAA6C;QAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,MAAkC,CAAC;QAC/D,MAAM,gBAAgB,GAAG,OAAO,cAAc,CAAC,WAAW,KAAK,UAAU;YACjD,CAAC,OAAO,cAAc,CAAC,OAAO,KAAK,UAAU,IAAI,cAAc,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAEzG,2EAA2E;QAC3E,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,iCAAiC,CAAC,CAAC;QAEvH,0DAA0D;QAC1D,qFAAqF;QACrF,2EAA2E;QAC3E,eAAe,CAAC,QAAQ,CAAC;YACvB,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC7C,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,iCAAiC,EAC9D,KAAK,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAClD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/B,CAAC;QAEF,uCAAuC;QACvC,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,EAC1C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAChC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CACvC,CAAC;QAEF,0BAA0B;QAC1B,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EACjC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CACnC,CAAC;QAEF,6CAA6C;QAC7C,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;YACtD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,EAAE;gBAC1F,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;aACtF;YAED,8CAA8C;YAC9C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,mCAAmC,CAAC,EAAE;gBACtG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,mCAAmC,CAAC,CAAC;aAClG;YAED,sEAAsE;YACtE,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,mCAAmC,CAAC,CAAC;YAC5H,kBAAkB,CAAC,QAAQ,CAAC;gBAC1B,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE,CAAC;aACX,CAAC,CAAC;YAEH,iEAAiE;YACjE,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,sFAAsF,CAAC,CAAC;YAEhH,sCAAsC;YACtC,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,mCAAmC,EAChE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EACjC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAClC,CAAC;YAEF,wFAAwF;YACxF,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;gBAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,kCAAkC,cAAc,GAAG,CAAC,CAAC;gBAC7E,kBAAkB,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,0CAA0C,KAAK,EAAE,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;SACJ;QAED,oGAAoG;QACpG,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;YACxD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;gBAC7E,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;aACzE;SACF;QAED,yDAAyD;QACzD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;YACvD,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,oBAAoB,EACjD,KAAK,IAAI,EAAE,CAAC,KAAK,EACjB,KAAK,EAAE,KAA0B,EAAE,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC,CAAC,CAAC,CAC9H,CAAC;SACH;QAED,sDAAsD;QACtD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,EAAE;YAC5C,IAAI,CAAC,sBAAsB,EAAE,CAAC;SAC/B;QAED,mDAAmD;QACnD,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;IACH,CAAC;IAED;;OAEG;IACK,sBAAsB;QAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,8CAA8C,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAEhG,sCAAsC;QACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC;YAC1D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;QAE3F,+BAA+B;QAC/B,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAC/B,SAAS,EACT,IAAI,CAAC,YAAY,CAClB,CAAC;QAEF,mCAAmC;QACnC,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EACvC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EACvC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EACvC,SAAS,EACT,IAAI,CAAC,YAAY,CAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,uBAAuB;QAC7B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,qDAAqD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAEvG,+CAA+C;QAC/C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC;YAC1F,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAErE,4CAA4C;QAC5C,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,EAC/C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAC9B,SAAS,EACT;YACE,QAAQ,EAAE,CAAC,EAAE;YACb,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,GAAG;SACb,EACD,IAAI,CAAC,kBAAkB,CACxB,CAAC;QAEF,sCAAsC;QACtC,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EACjC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,cAAc,EACnD,SAAS,EACT,SAAS,EACT,IAAI,CAAC,kBAAkB,CACxB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc;QAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAkC,CAAC;QAE/D,8BAA8B;QAC9B,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW;YAC3B,CAAC,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9D,EAAE,CAAC,CAAC,mCAAmC;QAE1D,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,qDAAqD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAEvG,+CAA+C;QAC/C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC;YACrF,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAErE,iDAAiD;QACjD,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,sBAAsB,EACnD,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EACzC,SAAS,EACT,SAAS,EACT,IAAI,CAAC,aAAa,CACnB,CAAC;QAEF,0CAA0C;QAC1C,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,eAAe,EAC5C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAClC,SAAS,EACT,SAAS,EACT,IAAI,CAAC,aAAa,CACnB,CAAC;QAEF,kCAAkC;QAClC,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EACjC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,SAAS,EAC9C,SAAS,EACT,SAAS,EACT,IAAI,CAAC,aAAa,CACnB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,yBAAyB;QACrC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAkC,CAAC;QAE/D,6BAA6B;QAC7B,MAAM,UAAU,GAAG,cAAc,CAAC,oBAAoB;YACpC,CAAC,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9D,GAAG,CAAC,CAAC,mCAAmC;QAE1D,gFAAgF;QAChF,OAAO,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB;QAC9B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAkC,CAAC;QAE/D,6BAA6B;QAC7B,MAAM,UAAU,GAAG,cAAc,CAAC,oBAAoB;YACpC,CAAC,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9D,GAAG,CAAC,CAAC,mCAAmC;QAE1D,OAAO,UAAU,CAAC;IACpB,CAAC;IAGD;;OAEG;IACK,KAAK,CAAC,eAAe;QAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAkC,CAAC;QAC/D,MAAM,UAAU,GAAG,cAAc,CAAC,oBAAoB;YACpD,CAAC,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACjF,OAAO,UAAU,GAAG,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAAC,KAA0B;QACtD,IAAI;YACF,MAAM,IAAI,GAAG,KAAgB,CAAC;YAC9B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAkC,CAAC;YAE/D,IAAI,OAAO,cAAc,CAAC,uBAAuB,KAAK,UAAU,EAAE;gBAChE,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;gBAEzE,IAAI,CAAC,OAAO,EAAE;oBACZ,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC;iBACtE;aACF;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;aACpE;SACF;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;SACxD;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,uBAAuB;QACnC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAkC,CAAC;QAC/D,OAAO,cAAc,CAAC,oBAAoB;YACxC,CAAC,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACnF,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,uBAAuB,CAAC,KAA0B;QAC9D,IAAI;YACF,MAAM,UAAU,GAAG,KAAe,CAAC;YACnC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAkC,CAAC;YAE/D,IAAI,OAAO,cAAc,CAAC,uBAAuB,KAAK,UAAU,EAAE;gBAChE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;gBAEzE,IAAI,CAAC,OAAO,EAAE;oBACZ,MAAM,IAAI,KAAK,CAAC,2CAA2C,UAAU,EAAE,CAAC,CAAC;iBAC1E;aACF;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;aACpE;SACF;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;SAC7D;IACH,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,0BAA0B,CAAC,OAAY;;QACrD,2FAA2F;QAC3F,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAEhF,+BAA+B;QAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAkC,CAAC;QAE/D,IAAI,OAAO,EAAE;YACX,4DAA4D;YAC5D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CACrB,kBAAkB,OAAO,CAAC,YAAY,IAAI;gBAC1C,UAAU,OAAO,CAAC,KAAK,IAAI;gBAC3B,SAAS,OAAO,CAAC,IAAI,IAAI;gBACzB,aAAa,OAAO,CAAC,QAAQ,IAAI;gBACjC,cAAc,cAAc,CAAC,SAAS,EAAE,CACzC,CAAC;SACH;QAED,uEAAuE;QACvE,IAAI;YACF,IAAI,OAAO,cAAc,CAAC,UAAU,KAAK,UAAU,EAAE;gBACnD,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC;gBAClC,4DAA4D;gBAC5D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CACrB,4BAA4B,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI;oBACxD,UAAU,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI;oBAC/B,SAAS,cAAc,CAAC,IAAI,IAAI;oBAChC,aAAa,cAAc,CAAC,QAAQ,IAAI;oBACxC,cAAc,cAAc,CAAC,SAAS,EAAE,CACzC,CAAC;aACH;SACF;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;SACtE;QAED,gDAAgD;QAChD,2EAA2E;QAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,IAAI,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,kBAAkB,QAAQ,aAAa,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QAE3H,+EAA+E;QAC/E,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EACnC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACjB,CAAC;QAEF,4CAA4C;QAC5C,6EAA6E;QAC7E,YAAY;QACZ,kCAAkC;QAClC,sDAAsD;QACtD,kFAAkF;QAClF,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,sBAAsB;QAE5C,IAAI,QAAQ,EAAE;YACZ,IAAI,cAAc,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACpC,YAAY,GAAG,CAAC,CAAC,CAAC,yCAAyC;aAC5D;iBAAM,IAAI,cAAc,CAAC,IAAI,KAAK,MAAM,IAAI,cAAc,CAAC,IAAI,KAAK,OAAO,EAAE;gBAC5E,6DAA6D;gBAC7D,MAAM,eAAe,GAAG,cAAc,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC;oBAC/C,cAAc,CAAC,eAAe,CAAC,CAAC;oBAChC,CAAA,MAAA,cAAc,CAAC,OAAO,0CAAE,gBAAgB;wBACxC,CAAC,CAAC;gBAEzB,yCAAyC;gBACzC,MAAM,cAAc,GAAG,cAAc,CAAC,QAAQ;qBACxB,MAAA,cAAc,CAAC,aAAa,0CAAE,oBAAoB,CAAA;qBAClD,MAAA,cAAc,CAAC,OAAO,0CAAE,eAAe,CAAA;oBACvC,EAAE,CAAC,CAAC,kCAAkC;gBAE5D,mDAAmD;gBACnD,IAAI,eAAe,GAAG,cAAc,EAAE;oBACpC,YAAY,GAAG,CAAC,CAAC,CAAC,yCAAyC;oBAC3D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,+BAA+B,eAAe,qBAAqB,cAAc,iCAAiC,CAAC,CAAC;iBAC7I;qBAAM;oBACL,YAAY,GAAG,CAAC,CAAC,CAAC,+BAA+B;oBACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,+BAA+B,eAAe,wBAAwB,cAAc,0BAA0B,CAAC,CAAC;iBACzI;aACF;SACF;QAED,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kCAAkC,EAC/D,YAAY,CACb,CAAC;QAEF,2CAA2C;QAC3C,gGAAgG;QAChG,WAAW;QACX,6CAA6C;QAC7C,+BAA+B;QAC/B,yEAAyE;QACzE,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC,wBAAwB;QAE7C,IAAI,cAAc,CAAC,IAAI,KAAK,MAAM,EAAE;YAClC,WAAW,GAAG,CAAC,CAAC,CAAC,6BAA6B;SAC/C;QAED,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,iCAAiC,EAC9D,WAAW,CACZ,CAAC;QAEF,mFAAmF;QACnF,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,uDAAuD;QACvD,IAAI,QAAQ,EAAE;YACZ,IAAI,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,SAAS,KAAK,SAAS,EAAE;gBACjE,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC;gBAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,gBAAgB,SAAS,EAAE,CAAC,CAAC;gBAErF,yDAAyD;gBACzD,QAAQ,SAAS,EAAE;oBACjB,KAAK,CAAC;wBAAE,aAAa,GAAG,EAAE,CAAC;wBAAC,MAAM;oBAClC,KAAK,CAAC;wBAAE,aAAa,GAAG,EAAE,CAAC;wBAAC,MAAM;oBAClC,KAAK,CAAC;wBAAE,aAAa,GAAG,EAAE,CAAC;wBAAC,MAAM;oBAClC,KAAK,CAAC;wBAAE,aAAa,GAAG,EAAE,CAAC;wBAAC,MAAM;oBAClC,KAAK,CAAC;wBAAE,aAAa,GAAG,EAAE,CAAC;wBAAC,MAAM;oBAClC,KAAK,CAAC;wBAAE,aAAa,GAAG,EAAE,CAAC;wBAAC,MAAM;oBAClC,KAAK,CAAC;wBAAE,aAAa,GAAG,EAAE,CAAC;wBAAC,MAAM;oBAClC,KAAK,CAAC;wBAAE,aAAa,GAAG,EAAE,CAAC;wBAAC,MAAM;oBAClC,KAAK,CAAC;wBAAE,aAAa,GAAG,GAAG,CAAC;wBAAC,MAAM;iBACpC;aACF;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;gBAC1C,uCAAuC;gBACvC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,WAAW,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBACxF,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;oBACzB,KAAK,CAAC;wBAAE,aAAa,GAAG,EAAE,CAAC;wBAAC,MAAM;oBAClC,KAAK,CAAC;wBAAE,aAAa,GAAG,EAAE,CAAC;wBAAC,MAAM;oBAClC,KAAK,CAAC;wBAAE,aAAa,GAAG,EAAE,CAAC;wBAAC,MAAM;oBAClC,KAAK,CAAC;wBAAE,aAAa,GAAG,EAAE,CAAC;wBAAC,MAAM;oBAClC,KAAK,CAAC;wBAAE,aAAa,GAAG,EAAE,CAAC;wBAAC,MAAM;oBAClC,KAAK,CAAC;wBAAE,aAAa,GAAG,EAAE,CAAC;wBAAC,MAAM;oBAClC,KAAK,CAAC;wBAAE,aAAa,GAAG,EAAE,CAAC;wBAAC,MAAM;oBAClC,KAAK,CAAC;wBAAE,aAAa,GAAG,EAAE,CAAC;wBAAC,MAAM;oBAClC,KAAK,CAAC;wBAAE,aAAa,GAAG,GAAG,CAAC;wBAAC,MAAM;iBACpC;aACF;SACF;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,6BAA6B,aAAa,iBAAiB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7G,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,EAC1C,aAAa,CACd,CAAC;QAEF,wCAAwC;QACxC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;YACtD,6DAA6D;YAC7D,MAAM,eAAe,GAAG,cAAc,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC;gBAC/C,cAAc,CAAC,eAAe,CAAC,CAAC;gBAChC,CAAA,MAAA,cAAc,CAAC,OAAO,0CAAE,gBAAgB;oBACxC,CAAC,CAAC;YAGzB,oEAAoE;YACpE,IAAI,eAAe,GAAG,CAAC,EAAE;gBACvB,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,EACpD,eAAe,CAChB,CAAC;aACH;YAED,yCAAyC;YACzC,6FAA6F;YAC7F,MAAM,cAAc,GAAG,cAAc,CAAC,QAAQ;iBACxB,MAAA,cAAc,CAAC,aAAa,0CAAE,oBAAoB,CAAA;iBAClD,MAAA,cAAc,CAAC,OAAO,0CAAE,eAAe,CAAA;gBACvC,EAAE,CAAC,CAAC,kCAAkC;YAG5D,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,mCAAmC,CAAC,EAAE;gBACrG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,mCAAmC,EAChE,cAAc,CACf,CAAC;aACH;SACF;QAED,gFAAgF;QAChF,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;YACxD,0EAA0E;YAC1E,MAAM,UAAU,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW;gBACrC,CAAC,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAEjE,MAAM,eAAe,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,iBAAiB;gBAChD,CAAC,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAEvE,MAAM,QAAQ,GAAG,UAAU,IAAI,eAAe,CAAC;YAE/C,iGAAiG;YACjG,oEAAoE;YACpE,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;gBAC3E,+DAA+D;gBAC/D,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EACvC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CACnB,CAAC;gBACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;aAC9G;SACF;QAED,iEAAiE;QACjE,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;YACnE,MAAM,UAAU,GAAG,cAAc,CAAC,oBAAoB;gBACpD,CAAC,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAEjF,sBAAsB;YACtB,IAAI,CAAC,YAAY,CAAC,oBAAoB,CACpC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAC/B,UAAU,GAAG,CAAC,CACf,CAAC;YAEF,oBAAoB;YACpB,IAAI,CAAC,YAAY,CAAC,oBAAoB,CACpC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EACvC,UAAU,CACX,CAAC;SACH;QAED,uCAAuC;QACvC,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACnD,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW;gBAC5C,CAAC,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC;gBAC9D,EAAE,CAAC,CAAC,mCAAmC;YAEzC,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAC1C,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,EAC/C,WAAW,CACZ,CAAC;SACH;QAED,uCAAuC;QACvC,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,aAAa,EAAE;YAC9C,MAAM,UAAU,GAAG,cAAc,CAAC,oBAAoB;gBACpD,CAAC,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC;gBAC9D,GAAG,CAAC,CAAC,mCAAmC;YAE1C,IAAI,CAAC,aAAa,CAAC,oBAAoB,CACrC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,eAAe,EAC5C,UAAU,CACX,CAAC;YAEF,IAAI,CAAC,aAAa,CAAC,oBAAoB,CACrC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,sBAAsB,EACnD,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC;aAC5D,CAAC;SACH;IACH,CAAC;IAES,qBAAqB;QAC7B,OAAO;YACL,aAAa,EAAE,KAAK;YACpB,YAAY,EAAE,KAAK;YACnB,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,KAAK;YACpB,aAAa,EAAE,IAAI;YACnB,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,KAAK;SACpB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,8CAA8C;QAC9C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,IAAI,CAAC,MAAM,CAAC,UAAU,qBAAqB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QAEnI,yCAAyC;QACzC,IAAI;YACF,MAAM,cAAc,GAAG,IAAI,CAAC,MAAkC,CAAC;YAC/D,IAAI,OAAO,cAAc,CAAC,UAAU,KAAK,UAAU,EAAE;gBACnD,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,MAAM,CAAC,YAAY,WAAW,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;aAC/G;SACF;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAC;SACrE;QAED,+DAA+D;QAC/D,2EAA2E;QAC3E,2FAA2F;QAC3F,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,IAAI,CAAC;QAEnD,uDAAuD;QACvD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,aAAa,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QAExI,gEAAgE;QAChE,gDAAgD;QAChD,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,KAA0B;;QAChD,IAAI;YACF,MAAM,IAAI,GAAG,KAAe,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,MAAM,CAAC,UAAU,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAE9F,qDAAqD;YACrD,MAAM,cAAc,GAAG,IAAI,CAAC,MAAkC,CAAC;YAE/D,4EAA4E;YAC5E,IAAI;gBACF,IAAI,OAAO,cAAc,CAAC,UAAU,KAAK,UAAU,EAAE;oBACnD,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC;oBAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,yCAAyC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;iBAC9F;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAC;aACrE;YAED,uCAAuC;YACvC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,IAAI,CAAC;YACtD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,yBAAyB,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,sBAAsB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAExH,qEAAqE;YACrE,IAAI,WAAW,KAAK,IAAI,EAAE;gBACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,eAAe,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,qBAAqB,CAAC,CAAC;gBAEjH,mEAAmE;gBACnE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EACnC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACb,CAAC;gBAEF,0DAA0D;gBAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC;oBACzB,CAAC,cAAc,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B;oBACzE,CAAC,CAAC,CAAC,eAAe;gBAEpB,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kCAAkC,EAC/D,YAAY,CACb,CAAC;gBAEF,wDAAwD;gBACxD,MAAM,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACnD,OAAO;aACR;YAED,IAAI,OAAO,GAAG,KAAK,CAAC;YAEpB,kFAAkF;YAClF,IAAI,IAAI,EAAE;gBACR,qBAAqB;gBACrB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,iCAAiC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;gBAEnF,kDAAkD;gBAClD,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBAErC,+CAA+C;gBAC/C,IAAI,OAAO,EAAE;oBACX,2DAA2D;oBAC3D,IAAI,OAAO,cAAc,CAAC,aAAa,KAAK,UAAU,EAAE;wBACtD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,sDAAsD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;wBACxG,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,CAAC;wBACzD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,2BAA2B,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAC1F;yBAAM,IAAI,OAAO,cAAc,CAAC,OAAO,KAAK,UAAU,EAAE;wBACvD,iDAAiD;wBACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,gDAAgD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;wBAClG,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;wBAC3D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,2BAA2B,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAC1F;iBACF;aACF;iBAAM;gBACL,sBAAsB;gBACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,kCAAkC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;gBACpF,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;aACvC;YAED,IAAI,CAAC,OAAO,EAAE;gBACZ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,wBAAwB,CAAC,CAAC;aACzF;YAED,iDAAiD;YACjD,IAAI,OAAO,cAAc,CAAC,UAAU,KAAK,UAAU,EAAE;gBACnD,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CACrB,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,yBAAyB;oBACzD,WAAW,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI;oBACvC,SAAS,cAAc,CAAC,IAAI,IAAI;oBAChC,UAAU,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI;oBAC/B,cAAc,cAAc,CAAC,SAAS,EAAE,CACzC,CAAC;aACH;YAED,qDAAqD;YACrD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,IAAI,CAAC;YACrD,IAAI,UAAU,KAAK,IAAI,EAAE;gBACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CACpB,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,oCAAoC;oBACpE,WAAW,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CACvE,CAAC;aACH;YAED,8EAA8E;YAC9E,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EACnC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACnB,CAAC;YAEF,0DAA0D;YAC1D,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,sBAAsB;YAE5C,IAAI,UAAU,EAAE;gBACd,IAAI,cAAc,CAAC,IAAI,KAAK,QAAQ,EAAE;oBACpC,YAAY,GAAG,CAAC,CAAC,CAAC,yCAAyC;iBAC5D;qBAAM,IAAI,cAAc,CAAC,IAAI,KAAK,MAAM,IAAI,cAAc,CAAC,IAAI,KAAK,OAAO,EAAE;oBAC5E,6DAA6D;oBAC7D,MAAM,eAAe,GAAG,cAAc,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC;wBAC/C,cAAc,CAAC,eAAe,CAAC,CAAC;wBAChC,CAAA,MAAA,cAAc,CAAC,OAAO,0CAAE,gBAAgB;4BACxC,CAAC,CAAC;oBAEzB,yCAAyC;oBACzC,MAAM,cAAc,GAAG,cAAc,CAAC,QAAQ;yBACxB,MAAA,cAAc,CAAC,aAAa,0CAAE,oBAAoB,CAAA;yBAClD,MAAA,cAAc,CAAC,OAAO,0CAAE,eAAe,CAAA;wBACvC,EAAE,CAAC,CAAC,kCAAkC;oBAE5D,mDAAmD;oBACnD,IAAI,eAAe,GAAG,cAAc,EAAE;wBACpC,YAAY,GAAG,CAAC,CAAC,CAAC,yCAAyC;wBAC3D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,+BAA+B,eAAe,qBAAqB,cAAc,iCAAiC,CAAC,CAAC;qBAC7I;yBAAM;wBACL,YAAY,GAAG,CAAC,CAAC,CAAC,+BAA+B;wBACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,+BAA+B,eAAe,wBAAwB,cAAc,0BAA0B,CAAC,CAAC;qBACzI;iBACF;aACF;YAED,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kCAAkC,EAC/D,YAAY,CACb,CAAC;YAEF,0CAA0C;YAC1C,MAAM,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SAC1E;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;SACnD;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE;YACjE,OAAO,CAAC,CAAC;SACV;QAED,2DAA2D;QAC3D,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACzB,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACjB,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAClB,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAClB,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAClB,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAClB,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAClB,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAClB,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAClB,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAClB,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC;YACnB,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;SACnB;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,KAA0B;;QACrD,IAAI;YACF,gGAAgG;YAChG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,2BAA2B,KAAK,gBAAgB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YAElG,MAAM,MAAM,GAAG,IAAI,CAAC,MAAkC,CAAC;YAEvD,mDAAmD;YACnD,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,IAAI,EAAE;gBACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,mDAAmD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;gBACrG,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACjD,IAAI,CAAC,aAAa,EAAE;oBAClB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;iBAClE;gBAED,0CAA0C;gBAC1C,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;oBAC3C,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;oBAC1B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAmC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;iBACxF;aACF;YAED,4CAA4C;YAC5C,IAAI,IAAI,GAAW,QAAQ,CAAC,CAAC,yBAAyB;YAEtD,QAAQ,KAAK,EAAE;gBACb,KAAK,CAAC,EAAE,OAAO;oBACb,IAAI,GAAG,MAAM,CAAC;oBACd,MAAM;gBACR,KAAK,CAAC,EAAE,aAAa;oBACnB,IAAI,GAAG,QAAQ,CAAC;oBAChB,MAAM;gBACR,KAAK,CAAC,EAAE,+DAA+D;oBACrE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,+CAA+C,IAAI,CAAC,MAAM,CAAC,UAAU,6BAA6B,CAAC,CAAC;oBAC3H,IAAI,GAAG,QAAQ,CAAC;oBAChB,MAAM;gBACR;oBACE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,+BAA+B,KAAK,gCAAgC,CAAC,CAAC;oBAC7F,IAAI,GAAG,QAAQ,CAAC;aACnB;YAED,2BAA2B;YAC3B,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE;gBACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,kBAAkB,IAAI,0BAA0B,CAAC,CAAC;gBAE1G,kDAAkD;gBAClD,MAAM,WAAW,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,IAAI,CAAC,yBAAyB,CAC5B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,iCAAiC,EAC9D,WAAW,CACZ,CAAC;gBAEF,OAAO;aACR;YAED,IAAI,OAAO,GAAG,KAAK,CAAC;YAEpB,+EAA+E;YAC/E,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,IAAI,KAAK,MAAM,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE;oBAC/D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,8CAA8C,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;oBAChG,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;oBACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,yBAAyB,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;iBACpF;qBAAM,IAAI,IAAI,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,UAAU,EAAE;oBAC1E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,gDAAgD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;oBAClG,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;oBACvC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,2BAA2B,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;iBACtF;qBAAM,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU,IAAI,IAAI,KAAK,OAAO,EAAE;oBACxE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,+CAA+C,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;oBACjG,OAAO,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;oBACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,0BAA0B,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;iBACrF;qBAAM,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE;oBAC/C,gEAAgE;oBAChE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,IAAI,kDAAkD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;oBAC3H,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAmC,CAAC,CAAC;oBACpE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;iBAC/E;qBAAM;oBACL,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;iBACxE;aACF;iBAAM,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE;gBAC/C,+DAA+D;gBAC/D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,IAAI,gBAAgB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;gBACzF,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAmC,CAAC,CAAC;gBACpE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;aAC/E;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;aACxE;YAED,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC;aACzD;YAED,iDAAiD;YACjD,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;gBAC3C,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC1B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,wBAAwB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;aAChG;YAED,oDAAoD;YACpD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;YAC/B,IAAI,UAAU,KAAK,IAAI,EAAE;gBACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CACpB,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,mCAAmC;oBACnE,WAAW,IAAI,aAAa,UAAU,EAAE,CACzC,CAAC;aACH;YAED,mDAAmD;YACnD,MAAM,WAAW,GAAG,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,IAAI,CAAC,yBAAyB,CAC5B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,iCAAiC,EAC9D,WAAW,CACZ,CAAC;YAEF,0DAA0D;YAC1D,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,sBAAsB;YAE5C,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,IAAI,EAAE;gBACrC,IAAI,UAAU,KAAK,QAAQ,EAAE;oBAC3B,YAAY,GAAG,CAAC,CAAC,CAAC,yCAAyC;iBAC5D;qBAAM,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,OAAO,EAAE;oBAC1D,6DAA6D;oBAC7D,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC;wBACvC,MAAM,CAAC,eAAe,CAAC,CAAC;wBACxB,CAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,gBAAgB;4BAChC,CAAC,CAAC;oBAEzB,yCAAyC;oBACzC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ;yBAChB,MAAA,MAAM,CAAC,aAAa,0CAAE,oBAAoB,CAAA;yBAC1C,MAAA,MAAM,CAAC,OAAO,0CAAE,eAAe,CAAA;wBAC/B,EAAE,CAAC,CAAC,kCAAkC;oBAE5D,mDAAmD;oBACnD,IAAI,eAAe,GAAG,cAAc,EAAE;wBACpC,YAAY,GAAG,CAAC,CAAC,CAAC,yCAAyC;wBAC3D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,+BAA+B,eAAe,qBAAqB,cAAc,iCAAiC,CAAC,CAAC;qBAC7I;yBAAM;wBACL,YAAY,GAAG,CAAC,CAAC,CAAC,+BAA+B;wBACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,+BAA+B,eAAe,wBAAwB,cAAc,0BAA0B,CAAC,CAAC;qBACzI;iBACF;aACF;YAED,IAAI,CAAC,yBAAyB,CAC5B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kCAAkC,EAC/D,YAAY,CACb,CAAC;YAEF,0CAA0C;YAC1C,MAAM,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACpD;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;SACnD;IACH,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,KAA0B;QAC7D,IAAI;YACF,MAAM,UAAU,GAAG,KAAe,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,6BAA6B,UAAU,iBAAiB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YAE1G,IAAI,UAAU,KAAK,CAAC,EAAE;gBACpB,oDAAoD;gBACpD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,MAAM,CAAC,UAAU,2BAA2B,CAAC,CAAC;gBACjG,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC5C,IAAI,CAAC,OAAO,EAAE;oBACZ,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;iBAC9C;gBACD,OAAO;aACR;YAED,2DAA2D;YAC3D,IAAI,KAAa,CAAC;YAClB,IAAI,UAAU,IAAI,EAAE,EAAE;gBACpB,KAAK,GAAG,CAAC,CAAC;aACX;iBAAM,IAAI,UAAU,IAAI,EAAE,EAAE;gBAC3B,KAAK,GAAG,CAAC,CAAC;aACX;iBAAM,IAAI,UAAU,IAAI,EAAE,EAAE;gBAC3B,KAAK,GAAG,CAAC,CAAC;aACX;iBAAM,IAAI,UAAU,IAAI,EAAE,EAAE;gBAC3B,KAAK,GAAG,CAAC,CAAC;aACX;iBAAM,IAAI,UAAU,IAAI,EAAE,EAAE;gBAC3B,KAAK,GAAG,CAAC,CAAC;aACX;iBAAM,IAAI,UAAU,IAAI,EAAE,EAAE;gBAC3B,KAAK,GAAG,CAAC,CAAC;aACX;iBAAM,IAAI,UAAU,IAAI,EAAE,EAAE;gBAC3B,KAAK,GAAG,CAAC,CAAC;aACX;iBAAM,IAAI,UAAU,IAAI,EAAE,EAAE;gBAC3B,KAAK,GAAG,CAAC,CAAC;aACX;iBAAM;gBACL,KAAK,GAAG,CAAC,CAAC;aACX;YAED,oCAAoC;YACpC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAkC,CAAC;YAC/D,IAAI,OAAO,GAAG,KAAK,CAAC;YAEpB,iDAAiD;YACjD,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,2CAA2C;gBAC3C,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,0BAA0B,KAAK,0BAA0B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;aAC5G;YAED,kDAAkD;YAClD,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,CAAC;gBACtF,OAAO,cAAc,CAAC,YAAY,KAAK,UAAU,EAAE;gBACrD,+CAA+C;gBAC/C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,yBAAyB,KAAK,gBAAgB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;gBAChG,OAAO,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACpD;iBAAM;gBACL,yDAAyD;gBACzD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,KAAK,gBAAgB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC/F,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aACnD;YAED,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;aACpD;YAED,iDAAiD;YACjD,IAAI,OAAO,cAAc,CAAC,UAAU,KAAK,UAAU,EAAE;gBACnD,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC;gBAElC,oDAAoD;gBACpD,IAAI,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,SAAS,KAAK,SAAS,EAAE;oBACjE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,8BAA8B,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC;iBACnH;qBAAM;oBACL,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,yBAAyB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;iBACvG;aACF;YAED,0CAA0C;YAC1C,MAAM,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACpD;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;SACrD;IACH,CAAC;IAED;;OAEG;IACH;;OAEG;IACK,KAAK,CAAC,iBAAiB;QAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAkC,CAAC;QAE/D,6FAA6F;QAC7F,IAAI,OAAO,cAAc,CAAC,QAAQ,KAAK,WAAW,EAAE;YAClD,OAAO,cAAc,CAAC,QAAQ,CAAC;SAChC;QAED,sDAAsD;QACtD,IAAI,cAAc,CAAC,aAAa,IAAI,OAAO,cAAc,CAAC,aAAa,CAAC,oBAAoB,KAAK,WAAW,EAAE;YAC5G,OAAO,cAAc,CAAC,aAAa,CAAC,oBAAoB,CAAC;SAC1D;QAED,iDAAiD;QACjD,IAAI,cAAc,CAAC,OAAO,IAAI,OAAO,cAAc,CAAC,OAAO,CAAC,eAAe,KAAK,WAAW,EAAE;YAC3F,OAAO,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC;SAC/C;QAED,oDAAoD;QACpD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAAC,KAA0B;;QACxD,IAAI;YACF,MAAM,cAAc,GAAG,KAAe,CAAC;YAGvC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,cAAc,iBAAiB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YAE/G,MAAM,cAAc,GAAG,IAAI,CAAC,MAAkC,CAAC;YAG/D,mDAAmD;YACnD,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,IAAI,EAAE;gBACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,sDAAsD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;gBACxG,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACjD,IAAI,CAAC,aAAa,EAAE;oBAClB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;iBACrE;aACF;YAED,IAAI,OAAO,GAAG,KAAK,CAAC;YAEpB,mDAAmD;YACnD,IAAI,OAAO,cAAc,CAAC,WAAW,KAAK,UAAU,EAAE;gBACpD,8CAA8C;gBAC9C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,cAAc,wBAAwB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC/G,OAAO,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;aAE5D;iBAAM,IAAI,OAAO,cAAc,CAAC,iBAAiB,KAAK,UAAU,EAAE;gBACjE,oDAAoD;gBACpD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,cAAc,8BAA8B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;gBACrH,OAAO,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;aAElE;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;aACxE;YAED,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,oCAAoC,cAAc,GAAG,CAAC,CAAC;aACxE;YAED,iDAAiD;YACjD,IAAI,OAAO,cAAc,CAAC,UAAU,KAAK,UAAU,EAAE;gBACnD,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC;gBAElC,wCAAwC;gBACxC,MAAM,aAAa,GAAG,CAAA,MAAA,cAAc,CAAC,OAAO,0CAAE,eAAe,KAAI,cAAc,CAAC,cAAc,CAAC;gBAC/F,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,mCAAmC,aAAa,GAAG,CAAC,CAAC;aAE9G;YAED,4CAA4C;YAC5C,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,mCAAmC,EAChE,cAAc,CACf,CAAC;YAEF,0CAA0C;YAC1C,MAAM,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEnD,8BAA8B;YAC9B,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;SACjE;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;SACtD;IACH,CAAC;IAEO,gCAAgC,CACtC,OAAgB,EAChB,cAAmB,EACnB,KAA0B;QAE1B,OAAO,CAAC,oBAAoB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAEpD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CACrB,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,aAAa,cAAc,CAAC,IAAI,OAAO,KAAK,EAAE,CACzE,CAAC;IACJ,CAAC;CACF;AAvxCD,kDAuxCC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homebridge-tsvesync",
3
- "version": "1.0.70",
3
+ "version": "1.0.72",
4
4
  "description": "Homebridge plugin for VeSync devices including Levoit air purifiers, humidifiers, and Etekcity smart outlets",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -98,7 +98,7 @@
98
98
  "axios": "^1.6.5",
99
99
  "dotenv": "^16.3.1",
100
100
  "js-yaml": "^4.1.0",
101
- "tsvesync": "1.0.70"
101
+ "tsvesync": "1.0.72"
102
102
  },
103
103
  "devDependencies": {
104
104
  "@types/jest": "^29.5.11",
@@ -11,9 +11,11 @@ interface ExtendedVeSyncHumidifier extends VeSyncHumidifier {
11
11
 
12
12
  // Night light properties and methods
13
13
  nightLightBrightness?: number;
14
+ nightLightStatus?: string;
14
15
  setNightLightBrightness?(brightness: number): Promise<boolean>;
16
+ setNightLight?(enabled: boolean, brightness?: number): Promise<boolean>;
15
17
 
16
- // Humid200300S specific methods (from API documentation)
18
+ // Common methods across humidifier types
17
19
  setMistLevel?(level: number): Promise<boolean>;
18
20
  setHumidity?(humidity: number): Promise<boolean>;
19
21
  setAutoMode?(): Promise<boolean>;
@@ -22,18 +24,35 @@ interface ExtendedVeSyncHumidifier extends VeSyncHumidifier {
22
24
  setDisplay?(on: boolean): Promise<boolean>;
23
25
  turnOnDisplay?(): Promise<boolean>;
24
26
  turnOffDisplay?(): Promise<boolean>;
27
+ setIndicatorLightSwitch?(on: boolean): Promise<boolean>;
28
+
29
+ // Automatic stop methods
25
30
  automaticStopOn?(): Promise<boolean>;
26
31
  automaticStopOff?(): Promise<boolean>;
32
+ setAutomaticStop?(enabled: boolean): Promise<boolean>;
33
+
34
+ // Superior6000S specific methods
35
+ setDryingModeEnabled?(enabled: boolean): Promise<boolean>;
27
36
 
28
- // Humid200300S specific properties
37
+ // Common properties
29
38
  mistLevel?: number;
30
39
  // Note: humidity must be non-optional to match VeSyncHumidifier interface
31
40
  humidity: number;
32
41
  currentHumidity?: number; // Actual humidity reading in the room
33
42
  mode?: string;
34
43
  screenStatus?: 'on' | 'off';
44
+ enabled?: boolean; // Used by Humid200S for power control
45
+ powerSwitch?: boolean; // Used by Humid1000S and Superior6000S for power control
35
46
 
36
- // For Humid200300S specific details
47
+ // Superior6000S specific properties
48
+ temperature?: number;
49
+ filterLifePercentage?: number;
50
+ dryingModeEnabled?: boolean;
51
+ dryingModeState?: string | null;
52
+ dryingModeLevel?: string | null;
53
+ dryingModeSecondsRemaining?: number;
54
+
55
+ // For device-specific details
37
56
  details?: {
38
57
  target_humidity?: number;
39
58
  night_light_brightness?: number;
@@ -42,6 +61,9 @@ interface ExtendedVeSyncHumidifier extends VeSyncHumidifier {
42
61
  water_tank_lifted?: boolean;
43
62
  humidity_high?: boolean;
44
63
  automatic_stop?: boolean;
64
+ automatic_stop_configured?: boolean;
65
+ temperature?: number;
66
+ filter_life?: number;
45
67
  };
46
68
 
47
69
  // Device configuration object
@@ -59,8 +81,17 @@ interface ExtendedVeSyncHumidifier extends VeSyncHumidifier {
59
81
  export class HumidifierAccessory extends BaseAccessory {
60
82
  protected readonly device: VeSyncHumidifier;
61
83
  private capabilities: DeviceCapabilities; // Removed readonly to allow re-initialization
84
+
85
+ // Device type flags
86
+ private isHumid200S: boolean;
62
87
  private isHumid200300S: boolean;
88
+ private isHumid1000S: boolean;
89
+ private isSuperior6000S: boolean;
90
+
91
+ // Services
63
92
  private lightService?: Service;
93
+ private temperatureService?: Service;
94
+ private filterService?: Service;
64
95
 
65
96
  constructor(
66
97
  platform: TSVESyncPlatform,
@@ -83,12 +114,44 @@ export class HumidifierAccessory extends BaseAccessory {
83
114
  hasSwingMode: false,
84
115
  };
85
116
 
86
- // Detect if this is a Humid200300S device
117
+ // Detect device type
118
+ this.isHumid200S = this.detectHumid200S();
87
119
  this.isHumid200300S = this.detectHumid200300S();
120
+ this.isHumid1000S = this.detectHumid1000S();
121
+ this.isSuperior6000S = this.detectSuperior6000S();
88
122
 
89
- if (this.isHumid200300S) {
123
+ // Log detected device type
124
+ if (this.isHumid200S) {
125
+ this.platform.log.debug(`Detected Humid200S device: ${this.device.deviceName}`);
126
+ } else if (this.isHumid200300S) {
90
127
  this.platform.log.debug(`Detected Humid200300S device: ${this.device.deviceName}`);
128
+ } else if (this.isHumid1000S) {
129
+ this.platform.log.debug(`Detected Humid1000S device: ${this.device.deviceName}`);
130
+ } else if (this.isSuperior6000S) {
131
+ this.platform.log.debug(`Detected Superior6000S device: ${this.device.deviceName}`);
132
+ } else {
133
+ this.platform.log.debug(`Unknown humidifier type: ${this.device.deviceName}, using default implementation`);
134
+ }
135
+ }
136
+
137
+ /**
138
+ * Detect if the device is a Humid200S
139
+ */
140
+ private detectHumid200S(): boolean {
141
+ const deviceType = this.device.deviceType.toUpperCase();
142
+
143
+ // Classic200S is a Humid200S device
144
+ if (deviceType.includes('CLASSIC200S')) {
145
+ return true;
146
+ }
147
+
148
+ // Check for mist level range 1-3 which is specific to Humid200S
149
+ const extendedDevice = this.device as ExtendedVeSyncHumidifier;
150
+ if (extendedDevice.mistLevel !== undefined && extendedDevice.mistLevel <= 3) {
151
+ return true;
91
152
  }
153
+
154
+ return false;
92
155
  }
93
156
 
94
157
  /**
@@ -102,9 +165,74 @@ export class HumidifierAccessory extends BaseAccessory {
102
165
  return true;
103
166
  }
104
167
 
105
- // Check device type for Classic200S or Classic300S
168
+ // Check device type for Classic300S or Dual200S
169
+ const deviceType = this.device.deviceType.toUpperCase();
170
+ if (deviceType.includes('CLASSIC300S') || deviceType.includes('DUAL200S')) {
171
+ return true;
172
+ }
173
+
174
+ // Check for LUH-A601S, LUH-A602S, LUH-O451S, LUH-O601S series
175
+ if (deviceType.includes('LUH-A601S') ||
176
+ deviceType.includes('LUH-A602S') ||
177
+ deviceType.includes('LUH-O451S') ||
178
+ deviceType.includes('LUH-O601S')) {
179
+ return true;
180
+ }
181
+
182
+ return false;
183
+ }
184
+
185
+ /**
186
+ * Detect if the device is a Humid1000S
187
+ */
188
+ private detectHumid1000S(): boolean {
189
+ const deviceType = this.device.deviceType.toUpperCase();
190
+
191
+ // Check for LUH-M101S series
192
+ if (deviceType.includes('LUH-M101S-WUS') || deviceType.includes('LUH-M101S-WEUR')) {
193
+ return true;
194
+ }
195
+
196
+ // Check for OasisMist1000S
197
+ if (deviceType.includes('OASISMIST1000S')) {
198
+ return true;
199
+ }
200
+
201
+ // Check for powerSwitch field and night light control
202
+ const extendedDevice = this.device as ExtendedVeSyncHumidifier;
203
+ if (extendedDevice.powerSwitch !== undefined &&
204
+ typeof extendedDevice.setNightLight === 'function') {
205
+ return true;
206
+ }
207
+
208
+ return false;
209
+ }
210
+
211
+ /**
212
+ * Detect if the device is a Superior6000S
213
+ */
214
+ private detectSuperior6000S(): boolean {
106
215
  const deviceType = this.device.deviceType.toUpperCase();
107
- return deviceType.includes('CLASSIC200S') || deviceType.includes('CLASSIC300S');
216
+
217
+ // Check for LEH-S601S series
218
+ if (deviceType.includes('LEH-S601S-WUS') || deviceType.includes('LEH-S601S-WUSR')) {
219
+ return true;
220
+ }
221
+
222
+ // Check for Superior6000S
223
+ if (deviceType.includes('SUPERIOR6000S')) {
224
+ return true;
225
+ }
226
+
227
+ // Check for temperature or drying mode properties
228
+ const extendedDevice = this.device as ExtendedVeSyncHumidifier;
229
+ if (extendedDevice.temperature !== undefined ||
230
+ extendedDevice.dryingModeEnabled !== undefined ||
231
+ extendedDevice.filterLifePercentage !== undefined) {
232
+ return true;
233
+ }
234
+
235
+ return false;
108
236
  }
109
237
 
110
238
  protected setupService(): void {
@@ -218,14 +346,20 @@ export class HumidifierAccessory extends BaseAccessory {
218
346
  );
219
347
  }
220
348
 
221
- // Add night light service for Humid200300S devices
222
- if (this.isHumid200300S) {
349
+ // Add night light service for devices that support it
350
+ if (this.isHumid200300S || this.isHumid1000S) {
223
351
  this.setupNightLightService();
224
352
  }
353
+
354
+ // Add temperature sensor service for Superior6000S
355
+ if (this.isSuperior6000S) {
356
+ this.setupTemperatureService();
357
+ this.setupFilterService();
358
+ }
225
359
  }
226
360
 
227
361
  /**
228
- * Set up night light service for Humid200300S devices
362
+ * Set up night light service for devices that support it
229
363
  */
230
364
  private setupNightLightService(): void {
231
365
  this.platform.log.debug(`Setting up night light service for device: ${this.device.deviceName}`);
@@ -253,6 +387,121 @@ export class HumidifierAccessory extends BaseAccessory {
253
387
  );
254
388
  }
255
389
 
390
+ /**
391
+ * Set up temperature sensor service for Superior6000S
392
+ */
393
+ private setupTemperatureService(): void {
394
+ this.platform.log.debug(`Setting up temperature sensor service for device: ${this.device.deviceName}`);
395
+
396
+ // Get or create the temperature sensor service
397
+ this.temperatureService = this.accessory.getService(this.platform.Service.TemperatureSensor) ||
398
+ this.accessory.addService(this.platform.Service.TemperatureSensor);
399
+
400
+ // Set up current temperature characteristic
401
+ this.setupCharacteristic(
402
+ this.platform.Characteristic.CurrentTemperature,
403
+ this.getTemperature.bind(this),
404
+ undefined,
405
+ {
406
+ minValue: -50,
407
+ maxValue: 100,
408
+ minStep: 0.1
409
+ },
410
+ this.temperatureService
411
+ );
412
+
413
+ // Set name for the temperature sensor
414
+ this.setupCharacteristic(
415
+ this.platform.Characteristic.Name,
416
+ async () => `${this.device.deviceName} Temperature`,
417
+ undefined,
418
+ undefined,
419
+ this.temperatureService
420
+ );
421
+ }
422
+
423
+ /**
424
+ * Get temperature for Superior6000S
425
+ */
426
+ private async getTemperature(): Promise<CharacteristicValue> {
427
+ const extendedDevice = this.device as ExtendedVeSyncHumidifier;
428
+
429
+ // Get temperature from device
430
+ const temperature = extendedDevice.temperature ||
431
+ (extendedDevice.details && extendedDevice.details.temperature) ||
432
+ 20; // Default to 20°C if not available
433
+
434
+ return temperature;
435
+ }
436
+
437
+ /**
438
+ * Set up filter maintenance service for Superior6000S
439
+ */
440
+ private setupFilterService(): void {
441
+ this.platform.log.debug(`Setting up filter maintenance service for device: ${this.device.deviceName}`);
442
+
443
+ // Get or create the filter maintenance service
444
+ this.filterService = this.accessory.getService(this.platform.Service.FilterMaintenance) ||
445
+ this.accessory.addService(this.platform.Service.FilterMaintenance);
446
+
447
+ // Set up filter change indication characteristic
448
+ this.setupCharacteristic(
449
+ this.platform.Characteristic.FilterChangeIndication,
450
+ this.getFilterChangeIndication.bind(this),
451
+ undefined,
452
+ undefined,
453
+ this.filterService
454
+ );
455
+
456
+ // Set up filter life level characteristic
457
+ this.setupCharacteristic(
458
+ this.platform.Characteristic.FilterLifeLevel,
459
+ this.getFilterLifeLevel.bind(this),
460
+ undefined,
461
+ undefined,
462
+ this.filterService
463
+ );
464
+
465
+ // Set name for the filter service
466
+ this.setupCharacteristic(
467
+ this.platform.Characteristic.Name,
468
+ async () => `${this.device.deviceName} Filter`,
469
+ undefined,
470
+ undefined,
471
+ this.filterService
472
+ );
473
+ }
474
+
475
+ /**
476
+ * Get filter change indication for Superior6000S
477
+ */
478
+ private async getFilterChangeIndication(): Promise<CharacteristicValue> {
479
+ const extendedDevice = this.device as ExtendedVeSyncHumidifier;
480
+
481
+ // Get filter life percentage
482
+ const filterLife = extendedDevice.filterLifePercentage ||
483
+ (extendedDevice.details && extendedDevice.details.filter_life) ||
484
+ 100; // Default to 100% if not available
485
+
486
+ // Return 1 (CHANGE_FILTER) if filter life is below 10%, otherwise 0 (FILTER_OK)
487
+ return filterLife < 10 ? 1 : 0;
488
+ }
489
+
490
+ /**
491
+ * Get filter life level for Superior6000S
492
+ */
493
+ private async getFilterLifeLevel(): Promise<CharacteristicValue> {
494
+ const extendedDevice = this.device as ExtendedVeSyncHumidifier;
495
+
496
+ // Get filter life percentage
497
+ const filterLife = extendedDevice.filterLifePercentage ||
498
+ (extendedDevice.details && extendedDevice.details.filter_life) ||
499
+ 100; // Default to 100% if not available
500
+
501
+ return filterLife;
502
+ }
503
+
504
+
256
505
  /**
257
506
  * Get night light on state
258
507
  */
@@ -511,17 +760,20 @@ export class HumidifierAccessory extends BaseAccessory {
511
760
 
512
761
  const waterLow = waterLacks || waterTankLifted;
513
762
 
763
+ // Note: VeSync devices only support a boolean water_lacks property, not a percentage water level
764
+ // We map this to 0% or 100% for HomeKit's WaterLevel characteristic
514
765
  if (this.service.getCharacteristic(this.platform.Characteristic.WaterLevel)) {
515
766
  // Map water level as 0 for low water, 100 for sufficient water
516
767
  this.service.updateCharacteristic(
517
768
  this.platform.Characteristic.WaterLevel,
518
769
  waterLow ? 0 : 100
519
770
  );
771
+ this.platform.log.debug(`Water level for ${this.device.deviceName}: ${waterLow ? 'Low (0%)' : 'OK (100%)'}`);
520
772
  }
521
773
  }
522
774
 
523
- // Update night light characteristics for Humid200300S devices
524
- if (this.isHumid200300S && this.lightService) {
775
+ // Update night light characteristics for devices that support it
776
+ if ((this.isHumid200300S || this.isHumid1000S) && this.lightService) {
525
777
  const brightness = extendedDevice.nightLightBrightness ||
526
778
  (extendedDevice.details && extendedDevice.details.night_light_brightness) || 0;
527
779
 
@@ -537,6 +789,35 @@ export class HumidifierAccessory extends BaseAccessory {
537
789
  brightness
538
790
  );
539
791
  }
792
+
793
+ // Update temperature for Superior6000S
794
+ if (this.isSuperior6000S && this.temperatureService) {
795
+ const temperature = extendedDevice.temperature ||
796
+ (extendedDevice.details && extendedDevice.details.temperature) ||
797
+ 20; // Default to 20°C if not available
798
+
799
+ this.temperatureService.updateCharacteristic(
800
+ this.platform.Characteristic.CurrentTemperature,
801
+ temperature
802
+ );
803
+ }
804
+
805
+ // Update filter life for Superior6000S
806
+ if (this.isSuperior6000S && this.filterService) {
807
+ const filterLife = extendedDevice.filterLifePercentage ||
808
+ (extendedDevice.details && extendedDevice.details.filter_life) ||
809
+ 100; // Default to 100% if not available
810
+
811
+ this.filterService.updateCharacteristic(
812
+ this.platform.Characteristic.FilterLifeLevel,
813
+ filterLife
814
+ );
815
+
816
+ this.filterService.updateCharacteristic(
817
+ this.platform.Characteristic.FilterChangeIndication,
818
+ filterLife < 10 ? 1 : 0 // 1 = CHANGE_FILTER, 0 = FILTER_OK
819
+ );
820
+ }
540
821
  }
541
822
 
542
823
  protected getDeviceCapabilities(): DeviceCapabilities {
@@ -630,16 +911,18 @@ export class HumidifierAccessory extends BaseAccessory {
630
911
 
631
912
  let success = false;
632
913
 
633
- // Try to turn the device on/off using the appropriate method
914
+ // Try to turn the device on/off using the appropriate method based on device type
634
915
  if (isOn) {
635
916
  // Turn on the device
636
917
  this.platform.log.debug(`Attempting to turn ON device: ${this.device.deviceName}`);
918
+
919
+ // Use the appropriate method based on device type
637
920
  success = await this.device.turnOn();
638
921
 
639
922
  // If successful, set the device to manual mode
640
923
  if (success) {
641
- // For Humid200300S devices, use the specific setManualMode method if available
642
- if (this.isHumid200300S && typeof extendedDevice.setManualMode === 'function') {
924
+ // For devices with specific mode setting methods, use them
925
+ if (typeof extendedDevice.setManualMode === 'function') {
643
926
  this.platform.log.debug(`Setting device to manual mode using setManualMode: ${this.device.deviceName}`);
644
927
  const modeSuccess = await extendedDevice.setManualMode();
645
928
  this.platform.log.debug(`Set manual mode result: ${modeSuccess ? 'success' : 'failed'}`);
@@ -944,13 +1227,22 @@ export class HumidifierAccessory extends BaseAccessory {
944
1227
  speed = 9;
945
1228
  }
946
1229
 
947
- // Check if this is a Humid200300S device and use setMistLevel if available
1230
+ // Adjust speed based on device type
948
1231
  const extendedDevice = this.device as ExtendedVeSyncHumidifier;
949
1232
  let success = false;
950
1233
 
951
- if (this.isHumid200300S && typeof extendedDevice.setMistLevel === 'function') {
952
- // Use setMistLevel for Humid200300S devices
953
- this.platform.log.debug(`Setting mist level to ${speed} for Humid200300S device: ${this.device.deviceName}`);
1234
+ // For Humid200S devices, limit mist level to 1-3
1235
+ if (this.isHumid200S) {
1236
+ // Limit speed to 1-3 for Humid200S devices
1237
+ speed = Math.min(speed, 3);
1238
+ this.platform.log.debug(`Limiting mist level to ${speed} for Humid200S device: ${this.device.deviceName}`);
1239
+ }
1240
+
1241
+ // Use the appropriate method based on device type
1242
+ if ((this.isHumid200S || this.isHumid200300S || this.isHumid1000S || this.isSuperior6000S) &&
1243
+ typeof extendedDevice.setMistLevel === 'function') {
1244
+ // Use setMistLevel for devices that support it
1245
+ this.platform.log.debug(`Setting mist level to ${speed} for device: ${this.device.deviceName}`);
954
1246
  success = await extendedDevice.setMistLevel(speed);
955
1247
  } else {
956
1248
  // Fall back to changeFanSpeed for other humidifier types