matterbridge-example-dynamic-platform 1.1.4-dev.1 → 1.1.4

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/CHANGELOG.md CHANGED
@@ -4,15 +4,20 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  If you like this project and find it useful, please consider giving it a star on GitHub at https://github.com/Luligu/matterbridge-example-dynamic-platform and sponsoring it.
6
6
 
7
- ## [1.1.4-dev.1] - 2024-12-17
7
+ ## [1.1.4] - 2024-12-21
8
+
9
+ ### Added
10
+
11
+ - [platform]: Added call to super.OnConfigure() and super.OnShutDown() to check endpoints numbers.
12
+
13
+ ### Changed
8
14
 
9
- - [package]: Added thermostat Heat only with two external temperature sensors (tagged like Indoor and Outdoor).
10
- - [package]: Added thermostat Cool only.
11
- - [package]: Added an airPurifier device with temperature and humidity sensor (supported by Apple Home).
12
- - [package]: Added a pumpDevice device.
13
- - [package]: Added a waterValve device.
14
- - [package]: Require matterbridge 1.6.7.
15
15
  - [package]: Updated dependencies.
16
+ - [package]: Updated package.
17
+
18
+ ### Fixed
19
+
20
+ - [thermostat]: Fixed temperature
16
21
 
17
22
  <a href="https://www.buymeacoffee.com/luligugithub">
18
23
  <img src="./yellow-button.png" alt="Buy me a coffee" width="120">
@@ -20,11 +25,16 @@ If you like this project and find it useful, please consider giving it a star on
20
25
 
21
26
  ## [1.1.3] - 2024-12-16
22
27
 
28
+ ### Added
29
+
23
30
  - [package]: Added thermostat Heat only with two external temperature sensors (tagged like Indoor and Outdoor).
24
31
  - [package]: Added thermostat Cool only.
25
32
  - [package]: Added an airPurifier device with temperature and humidity sensor (supported by Apple Home).
26
33
  - [package]: Added a pumpDevice device.
27
34
  - [package]: Added a waterValve device.
35
+
36
+ ### Changed
37
+
28
38
  - [package]: Require matterbridge 1.6.7.
29
39
  - [package]: Updated dependencies.
30
40
 
@@ -34,9 +44,14 @@ If you like this project and find it useful, please consider giving it a star on
34
44
 
35
45
  ## [1.1.2] - 2024-12-12
36
46
 
47
+ ### Added
48
+
37
49
  - [package]: Added the Matter 1.3 airConditioner device (not supported by Apple Home).
38
50
  - [package]: Require matterbridge 1.6.6.
39
51
  - [package]: Added Jest test with 100% coverage.
52
+
53
+ ### Changed
54
+
40
55
  - [package]: Updated package.
41
56
  - [package]: Updated dependencies.
42
57
 
@@ -0,0 +1,14 @@
1
+ import { Matterbridge, PlatformConfig } from 'matterbridge';
2
+ import { AnsiLogger } from 'matterbridge/logger';
3
+ import { ExampleMatterbridgeDynamicPlatform } from './platform.js';
4
+ /**
5
+ * This is the standard interface for Matterbridge plugins.
6
+ * Each plugin should export a default function that follows this signature.
7
+ *
8
+ * @param {Matterbridge} matterbridge - The Matterbridge instance.
9
+ * @param {AnsiLogger} log - The logger instance.
10
+ * @param {PlatformConfig} config - The platform configuration.
11
+ * @returns {ExampleMatterbridgeDynamicPlatform} The initialized platform.
12
+ */
13
+ export default function initializePlugin(matterbridge: Matterbridge, log: AnsiLogger, config: PlatformConfig): ExampleMatterbridgeDynamicPlatform;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,kCAAkC,EAAE,MAAM,eAAe,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,GAAG,kCAAkC,CAEhJ"}
package/dist/index.js CHANGED
@@ -1,4 +1,14 @@
1
1
  import { ExampleMatterbridgeDynamicPlatform } from './platform.js';
2
+ /**
3
+ * This is the standard interface for Matterbridge plugins.
4
+ * Each plugin should export a default function that follows this signature.
5
+ *
6
+ * @param {Matterbridge} matterbridge - The Matterbridge instance.
7
+ * @param {AnsiLogger} log - The logger instance.
8
+ * @param {PlatformConfig} config - The platform configuration.
9
+ * @returns {ExampleMatterbridgeDynamicPlatform} The initialized platform.
10
+ */
2
11
  export default function initializePlugin(matterbridge, log, config) {
3
12
  return new ExampleMatterbridgeDynamicPlatform(matterbridge, log, config);
4
13
  }
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kCAAkC,EAAE,MAAM,eAAe,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,YAA0B,EAAE,GAAe,EAAE,MAAsB;IAC1G,OAAO,IAAI,kCAAkC,CAAC,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { AtLeastOne, DeviceTypeDefinition, EndpointOptions, PlatformConfig } from 'matterbridge';
2
+ import { Matterbridge, /* MatterbridgeEndpoint as */ MatterbridgeDevice, MatterbridgeDynamicPlatform } from 'matterbridge';
3
+ import { AnsiLogger } from 'matterbridge/logger';
4
+ export declare class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatform {
5
+ switch: MatterbridgeDevice | undefined;
6
+ lightOnOff: MatterbridgeDevice | undefined;
7
+ dimmer: MatterbridgeDevice | undefined;
8
+ light: MatterbridgeDevice | undefined;
9
+ lightXY: MatterbridgeDevice | undefined;
10
+ lightHS: MatterbridgeDevice | undefined;
11
+ lightCT: MatterbridgeDevice | undefined;
12
+ outlet: MatterbridgeDevice | undefined;
13
+ cover: MatterbridgeDevice | undefined;
14
+ lock: MatterbridgeDevice | undefined;
15
+ thermoAuto: MatterbridgeDevice | undefined;
16
+ thermoHeat: MatterbridgeDevice | undefined;
17
+ thermoCool: MatterbridgeDevice | undefined;
18
+ fan: MatterbridgeDevice | undefined;
19
+ waterLeak: MatterbridgeDevice | undefined;
20
+ waterFreeze: MatterbridgeDevice | undefined;
21
+ rain: MatterbridgeDevice | undefined;
22
+ smoke: MatterbridgeDevice | undefined;
23
+ airQuality: MatterbridgeDevice | undefined;
24
+ airConditioner: MatterbridgeDevice | undefined;
25
+ airPurifier: MatterbridgeDevice | undefined;
26
+ pump: MatterbridgeDevice | undefined;
27
+ valve: MatterbridgeDevice | undefined;
28
+ switchInterval: NodeJS.Timeout | undefined;
29
+ lightInterval: NodeJS.Timeout | undefined;
30
+ outletInterval: NodeJS.Timeout | undefined;
31
+ coverInterval: NodeJS.Timeout | undefined;
32
+ lockInterval: NodeJS.Timeout | undefined;
33
+ thermoInterval: NodeJS.Timeout | undefined;
34
+ fanInterval: NodeJS.Timeout | undefined;
35
+ waterLeakInterval: NodeJS.Timeout | undefined;
36
+ waterFreezeInterval: NodeJS.Timeout | undefined;
37
+ rainInterval: NodeJS.Timeout | undefined;
38
+ smokeInterval: NodeJS.Timeout | undefined;
39
+ airQualityInterval: NodeJS.Timeout | undefined;
40
+ airConditionerInterval: NodeJS.Timeout | undefined;
41
+ bridgedDevices: Map<string, MatterbridgeDevice>;
42
+ fanModeLookup: string[];
43
+ createMutableDevice(definition: DeviceTypeDefinition | AtLeastOne<DeviceTypeDefinition>, options?: EndpointOptions, debug?: boolean): Promise<MatterbridgeDevice>;
44
+ constructor(matterbridge: Matterbridge, log: AnsiLogger, config: PlatformConfig);
45
+ onStart(reason?: string): Promise<void>;
46
+ onConfigure(): Promise<void>;
47
+ onShutdown(reason?: string): Promise<void>;
48
+ }
49
+ //# sourceMappingURL=platform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
package/dist/platform.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { AirQuality, AirQualityCluster, BooleanStateCluster, BooleanStateConfiguration, CarbonDioxideConcentrationMeasurement, CarbonMonoxideConcentrationMeasurement, ColorControl, ColorControlCluster, DoorLock, DoorLockCluster, FanControl, FanControlCluster, FlowMeasurement, FlowMeasurementCluster, FormaldehydeConcentrationMeasurement, LevelControlCluster, MatterbridgeEndpoint, NitrogenDioxideConcentrationMeasurement, OnOffCluster, OzoneConcentrationMeasurement, Pm10ConcentrationMeasurement, Pm1ConcentrationMeasurement, Pm25ConcentrationMeasurement, RadonConcentrationMeasurement, RelativeHumidityMeasurement, RelativeHumidityMeasurementCluster, SmokeCoAlarm, SmokeCoAlarmCluster, TemperatureMeasurement, TemperatureMeasurementCluster, Thermostat, ThermostatCluster, TotalVolatileOrganicCompoundsConcentrationMeasurement, WindowCovering, WindowCoveringCluster, airConditioner, airQualitySensor, bridgedNode, colorTemperatureLight, coverDevice, dimmableLight, doorLockDevice, fanDevice, flowSensor, humiditySensor, onOffLight, onOffOutlet, onOffSwitch, powerSource, rainSensor, smokeCoAlarm, temperatureSensor, thermostatDevice, waterFreezeDetector, waterLeakDetector, LocationTag, airPurifier, pumpDevice, waterValve, } from 'matterbridge';
2
- import { MatterbridgeDevice, MatterbridgeDynamicPlatform } from 'matterbridge';
2
+ import { /* MatterbridgeEndpoint as */ MatterbridgeDevice, MatterbridgeDynamicPlatform } from 'matterbridge';
3
3
  import { isValidBoolean, isValidNumber } from 'matterbridge/utils';
4
4
  export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatform {
5
5
  switch;
@@ -50,6 +50,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
50
50
  }
51
51
  constructor(matterbridge, log, config) {
52
52
  super(matterbridge, log, config);
53
+ // Verify that Matterbridge is the correct version
53
54
  if (this.verifyMatterbridgeVersion === undefined || typeof this.verifyMatterbridgeVersion !== 'function' || !this.verifyMatterbridgeVersion('1.6.7')) {
54
55
  throw new Error(`This plugin requires Matterbridge version >= "1.6.7". Please update Matterbridge from ${this.matterbridge.matterbridgeVersion} to the latest version in the frontend.`);
55
56
  }
@@ -57,6 +58,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
57
58
  }
58
59
  async onStart(reason) {
59
60
  this.log.info('onStart called with reason:', reason ?? 'none');
61
+ // Create a switch device
60
62
  this.switch = await this.createMutableDevice([onOffSwitch, bridgedNode], { uniqueStorageKey: 'Switch' }, this.config.debug);
61
63
  this.switch.log.logName = 'Switch';
62
64
  this.switch.createDefaultIdentifyClusterServer();
@@ -79,6 +81,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
79
81
  await this.switch?.setAttribute(OnOffCluster.id, 'onOff', false, this.switch.log, this.switch);
80
82
  this.switch?.log.info('Command off called');
81
83
  });
84
+ // Create a on off light device
82
85
  this.lightOnOff = await this.createMutableDevice([onOffLight, bridgedNode], { uniqueStorageKey: 'Light (on/off)' }, this.config.debug);
83
86
  this.lightOnOff.log.logName = 'Light (on/off)';
84
87
  this.lightOnOff.createDefaultIdentifyClusterServer();
@@ -101,6 +104,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
101
104
  await this.light?.setAttribute(OnOffCluster.id, 'onOff', false, this.lightOnOff?.log, this.lightOnOff);
102
105
  this.lightOnOff?.log.info('Command off called');
103
106
  });
107
+ // Create a dimmer device
104
108
  this.dimmer = await this.createMutableDevice([dimmableLight, bridgedNode], { uniqueStorageKey: 'Dimmer' }, this.config.debug);
105
109
  this.dimmer.log.logName = 'Dimmer';
106
110
  this.dimmer.createDefaultIdentifyClusterServer();
@@ -132,6 +136,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
132
136
  await this.dimmer?.setAttribute(LevelControlCluster.id, 'currentLevel', level, this.dimmer.log, this.dimmer);
133
137
  this.dimmer?.log.debug(`Command moveToLevelWithOnOff called request: ${level}`);
134
138
  });
139
+ // Create a light device
135
140
  this.light = await this.createMutableDevice([colorTemperatureLight, bridgedNode], { uniqueStorageKey: 'Light (XY, HS and CT)' }, this.config.debug);
136
141
  this.light.log.logName = 'Light (XY, HS and CT)';
137
142
  this.light.createDefaultIdentifyClusterServer();
@@ -186,7 +191,8 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
186
191
  await this.light?.setAttribute(ColorControlCluster.id, 'colorTemperatureMireds', request.colorTemperatureMireds, this.light?.log, this.light);
187
192
  this.light?.log.debug(`Command moveToColorTemperature called request: ${request.colorTemperatureMireds} attributes: ${attributes.colorTemperatureMireds?.getLocal()}`);
188
193
  });
189
- this.lightHS = await this.createMutableDevice([colorTemperatureLight, bridgedNode], { uniqueStorageKey: 'Light (HS)' }, this.config.debug);
194
+ // Create a light device with HS color control
195
+ this.lightHS = await this.createMutableDevice([colorTemperatureLight, bridgedNode], { uniqueStorageKey: 'Light (HS, CT)' }, this.config.debug);
190
196
  this.lightHS.log.logName = 'Light (HS, CT)';
191
197
  this.lightHS.createDefaultIdentifyClusterServer();
192
198
  this.lightHS.createDefaultGroupsClusterServer();
@@ -195,6 +201,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
195
201
  this.lightHS.createDefaultOnOffClusterServer();
196
202
  this.lightHS.createDefaultLevelControlClusterServer();
197
203
  this.lightHS.createHsColorControlClusterServer();
204
+ // await this.lightHS.configureColorControlCluster(true, false, false, ColorControl.ColorMode.CurrentHueAndCurrentSaturation);
198
205
  this.lightHS.addDeviceType(powerSource);
199
206
  this.lightHS.createDefaultPowerSourceWiredClusterServer();
200
207
  await this.registerDevice(this.lightHS);
@@ -235,7 +242,8 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
235
242
  await this.light?.setAttribute(ColorControlCluster.id, 'colorTemperatureMireds', request.colorTemperatureMireds, this.light?.log, this.light);
236
243
  this.light?.log.debug(`Command moveToColorTemperature called request: ${request.colorTemperatureMireds} attributes: ${attributes.colorTemperatureMireds?.getLocal()}`);
237
244
  });
238
- this.lightXY = await this.createMutableDevice([colorTemperatureLight, bridgedNode], { uniqueStorageKey: 'Light (XY)' }, this.config.debug);
245
+ // Create a light device with XY color control
246
+ this.lightXY = await this.createMutableDevice([colorTemperatureLight, bridgedNode], { uniqueStorageKey: 'Light (XY, CT)' }, this.config.debug);
239
247
  this.lightXY.log.logName = 'Light (XY, CT)';
240
248
  this.lightXY.createDefaultIdentifyClusterServer();
241
249
  this.lightXY.createDefaultGroupsClusterServer();
@@ -276,6 +284,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
276
284
  await this.light?.setAttribute(ColorControlCluster.id, 'colorTemperatureMireds', request.colorTemperatureMireds, this.light?.log, this.light);
277
285
  this.light?.log.debug(`Command moveToColorTemperature called request: ${request.colorTemperatureMireds} attributes: ${attributes.colorTemperatureMireds?.getLocal()}`);
278
286
  });
287
+ // Create a light device with CT color control
279
288
  this.lightCT = await this.createMutableDevice([colorTemperatureLight, bridgedNode], { uniqueStorageKey: 'Light (CT)' }, this.config.debug);
280
289
  this.lightCT.log.logName = 'Light (CT)';
281
290
  this.lightCT.createDefaultIdentifyClusterServer();
@@ -285,6 +294,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
285
294
  this.lightCT.createDefaultOnOffClusterServer();
286
295
  this.lightCT.createDefaultLevelControlClusterServer();
287
296
  this.lightCT.createCtColorControlClusterServer();
297
+ // await this.lightCT.configureColorControlCluster(false, false, true, ColorControl.ColorMode.ColorTemperatureMireds);
288
298
  this.lightCT.addDeviceType(powerSource);
289
299
  this.lightCT.createDefaultPowerSourceReplaceableBatteryClusterServer(70);
290
300
  await this.registerDevice(this.lightCT);
@@ -312,6 +322,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
312
322
  await this.lightCT?.setAttribute(ColorControlCluster.id, 'colorTemperatureMireds', request.colorTemperatureMireds, this.lightCT?.log, this.lightCT);
313
323
  this.lightCT?.log.debug(`Command moveToColorTemperature called request: ${request.colorTemperatureMireds}`);
314
324
  });
325
+ // Create an outlet device
315
326
  this.outlet = await this.createMutableDevice([onOffOutlet, bridgedNode], { uniqueStorageKey: 'Outlet' }, this.config.debug);
316
327
  this.outlet.log.logName = 'Outlet';
317
328
  this.outlet.createDefaultIdentifyClusterServer();
@@ -334,6 +345,8 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
334
345
  await this.outlet?.setAttribute(OnOffCluster.id, 'onOff', false, this.outlet?.log, this.outlet);
335
346
  this.outlet?.log.info('Command off called');
336
347
  });
348
+ // Create a window covering device
349
+ // Matter uses 10000 = fully closed 0 = fully opened
337
350
  this.cover = await this.createMutableDevice([coverDevice, bridgedNode], { uniqueStorageKey: 'Cover' }, this.config.debug);
338
351
  this.cover.log.logName = 'Cover';
339
352
  this.cover.createDefaultIdentifyClusterServer();
@@ -367,6 +380,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
367
380
  await this.cover?.setWindowCoveringCurrentTargetStatus(liftPercent100thsValue, liftPercent100thsValue, WindowCovering.MovementStatus.Stopped);
368
381
  this.cover?.log.info(`Command goToLiftPercentage ${liftPercent100thsValue} called`);
369
382
  });
383
+ // Create a lock device
370
384
  this.lock = await this.createMutableDevice([doorLockDevice, bridgedNode], { uniqueStorageKey: 'Lock' }, this.config.debug);
371
385
  this.lock.log.logName = 'Lock';
372
386
  this.lock.createDefaultIdentifyClusterServer();
@@ -387,7 +401,8 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
387
401
  await this.lock?.setAttribute(DoorLockCluster.id, 'lockState', DoorLock.LockState.Unlocked, this.lock?.log, this.lock);
388
402
  this.lock?.log.info('Command unlockDoor called');
389
403
  });
390
- this.thermoAuto = await this.createMutableDevice([thermostatDevice, bridgedNode], { uniqueStorageKey: 'ThermostatAuto' }, this.config.debug);
404
+ // Create a thermostat with AutoMode device
405
+ this.thermoAuto = await this.createMutableDevice([thermostatDevice, bridgedNode], { uniqueStorageKey: 'Thermostat (AutoMode)' }, this.config.debug);
391
406
  this.thermoAuto.log.logName = 'Thermostat (AutoMode)';
392
407
  this.thermoAuto.createDefaultIdentifyClusterServer();
393
408
  this.thermoAuto.createDefaultGroupsClusterServer();
@@ -434,7 +449,8 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
434
449
  this.thermoAuto.subscribeAttribute(ThermostatCluster.id, 'occupiedCoolingSetpoint', async (value) => {
435
450
  this.thermoAuto?.log.info('Subscribe occupiedCoolingSetpoint called with:', value / 100);
436
451
  }, this.thermoAuto.log, this.thermoAuto);
437
- this.thermoHeat = await this.createMutableDevice([thermostatDevice, bridgedNode], { uniqueStorageKey: 'ThermostatHeat' }, this.config.debug);
452
+ // Create a thermostat with Heat device
453
+ this.thermoHeat = await this.createMutableDevice([thermostatDevice, bridgedNode], { uniqueStorageKey: 'Thermostat (Heat)' }, this.config.debug);
438
454
  this.thermoHeat.log.logName = 'Thermostat (Heat)';
439
455
  this.thermoHeat.createDefaultIdentifyClusterServer();
440
456
  this.thermoHeat.createDefaultGroupsClusterServer();
@@ -468,7 +484,8 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
468
484
  this.thermoHeat.subscribeAttribute(ThermostatCluster.id, 'occupiedHeatingSetpoint', async (value) => {
469
485
  this.thermoHeat?.log.info('Subscribe occupiedHeatingSetpoint called with:', value / 100);
470
486
  }, this.thermoHeat.log);
471
- this.thermoCool = await this.createMutableDevice([thermostatDevice, bridgedNode], { uniqueStorageKey: 'ThermostatCool' }, this.config.debug);
487
+ // Create a thermostat with Cool device
488
+ this.thermoCool = await this.createMutableDevice([thermostatDevice, bridgedNode], { uniqueStorageKey: 'Thermostat (Cool)' }, this.config.debug);
472
489
  this.thermoCool.log.logName = 'Thermostat (Cool)';
473
490
  this.thermoCool.createDefaultIdentifyClusterServer();
474
491
  this.thermoCool.createDefaultGroupsClusterServer();
@@ -492,6 +509,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
492
509
  this.thermoCool.subscribeAttribute(ThermostatCluster.id, 'occupiedCoolingSetpoint', async (value) => {
493
510
  this.thermoCool?.log.info('Subscribe occupiedCoolingSetpoint called with:', value / 100);
494
511
  }, this.thermoCool.log);
512
+ // Create a airPurifier device
495
513
  this.airPurifier = await this.createMutableDevice([airPurifier, temperatureSensor, humiditySensor, bridgedNode], { uniqueStorageKey: 'Air purifier' }, this.config.debug);
496
514
  this.airPurifier.log.logName = 'Air purifier';
497
515
  this.airPurifier.createDefaultBridgedDeviceBasicInformationClusterServer('Air purifier', '0x96584864AP', 0xfff1, 'Matterbridge', 'Matterbridge Air purifier', parseInt(this.version.replace(/\D/g, '')), this.version === '' ? 'Unknown' : this.version, parseInt(this.matterbridge.matterbridgeVersion.replace(/\D/g, '')), this.matterbridge.matterbridgeVersion);
@@ -506,6 +524,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
506
524
  this.airPurifier.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
507
525
  this.airPurifier?.log.info(`Command identify called identifyTime:${identifyTime}`);
508
526
  });
527
+ // Apple sends Off and High
509
528
  this.airPurifier.subscribeAttribute(FanControlCluster.id, 'fanMode', async (newValue, oldValue) => {
510
529
  this.fan?.log.info(`Fan mode changed from ${this.fanModeLookup[oldValue]} to ${this.fanModeLookup[newValue]}`);
511
530
  if (newValue === FanControl.FanMode.Off) {
@@ -532,7 +551,8 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
532
551
  if (isValidNumber(newValue, 0, 100))
533
552
  await this.airPurifier?.setAttribute(FanControlCluster.id, 'percentCurrent', newValue, this.airPurifier?.log);
534
553
  }, this.airPurifier.log);
535
- this.airConditioner = await this.createMutableDevice([airConditioner, bridgedNode], { uniqueStorageKey: 'Air conditioner' }, this.config.debug);
554
+ // Create a airConditioner device
555
+ this.airConditioner = await this.createMutableDevice([airConditioner, /* fanDevice, temperatureSensor, humiditySensor,*/ bridgedNode], { uniqueStorageKey: 'Air conditioner' }, this.config.debug);
536
556
  this.airConditioner.log.logName = 'Air conditioner';
537
557
  this.airConditioner.createDefaultBridgedDeviceBasicInformationClusterServer('Air conditioner', '0x96382864AC', 0xfff1, 'Matterbridge', 'Matterbridge Air conditioner', parseInt(this.version.replace(/\D/g, '')), this.version === '' ? 'Unknown' : this.version, parseInt(this.matterbridge.matterbridgeVersion.replace(/\D/g, '')), this.matterbridge.matterbridgeVersion);
538
558
  this.airConditioner.createDefaultIdentifyClusterServer();
@@ -568,6 +588,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
568
588
  await this.airConditioner?.setAttribute(FanControlCluster.id, 'percentSetting', null, this.airConditioner?.log);
569
589
  this.airConditioner?.log.info('Command off called');
570
590
  });
591
+ // Create a pumpDevice device
571
592
  this.pump = await this.createMutableDevice([pumpDevice, bridgedNode], { uniqueStorageKey: 'Pump' }, this.config.debug);
572
593
  this.pump.log.logName = 'Pump';
573
594
  this.pump.createDefaultBridgedDeviceBasicInformationClusterServer('Pump', '0x96382864PUMP', 0xfff1, 'Matterbridge', 'Matterbridge Pump', parseInt(this.version.replace(/\D/g, '')), this.version === '' ? 'Unknown' : this.version, parseInt(this.matterbridge.matterbridgeVersion.replace(/\D/g, '')), this.matterbridge.matterbridgeVersion);
@@ -589,6 +610,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
589
610
  await this.pump?.setAttribute(OnOffCluster.id, 'onOff', false, this.pump?.log);
590
611
  this.pump?.log.info('Command off called');
591
612
  });
613
+ // Create a waterValve device
592
614
  this.valve = await this.createMutableDevice([waterValve, bridgedNode], { uniqueStorageKey: 'Water valve' }, this.config.debug);
593
615
  this.valve.log.logName = 'Water valve';
594
616
  this.valve.createDefaultBridgedDeviceBasicInformationClusterServer('Water valve', '0x96382864WV', 0xfff1, 'Matterbridge', 'Matterbridge Water valve', parseInt(this.version.replace(/\D/g, '')), this.version === '' ? 'Unknown' : this.version, parseInt(this.matterbridge.matterbridgeVersion.replace(/\D/g, '')), this.matterbridge.matterbridgeVersion);
@@ -601,6 +623,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
601
623
  this.valve.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
602
624
  this.valve?.log.info(`Command identify called identifyTime:${identifyTime}`);
603
625
  });
626
+ // Create a fan device
604
627
  this.fan = await this.createMutableDevice([fanDevice, bridgedNode], { uniqueStorageKey: 'Fan' }, this.config.debug);
605
628
  this.fan.log.logName = 'Fan';
606
629
  this.fan.createDefaultBridgedDeviceBasicInformationClusterServer('Fan', 'serial_980545631228', 0xfff1, 'Matterbridge', 'Matterbridge Fan', parseInt(this.version.replace(/\D/g, '')), this.version === '' ? 'Unknown' : this.version, parseInt(this.matterbridge.matterbridgeVersion.replace(/\D/g, '')), this.matterbridge.matterbridgeVersion);
@@ -638,6 +661,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
638
661
  if (isValidNumber(newValue, 0, 100))
639
662
  await this.fan?.setAttribute(FanControlCluster.id, 'speedCurrent', newValue, this.fan?.log);
640
663
  }, this.fan.log);
664
+ /** ********************* Create a waterLeakDetector device ***********************/
641
665
  this.waterLeak = await this.createMutableDevice([waterLeakDetector, bridgedNode], { uniqueStorageKey: 'Water leak detector' }, this.config.debug);
642
666
  this.waterLeak.log.logName = 'Water leak detector';
643
667
  this.waterLeak.createDefaultBridgedDeviceBasicInformationClusterServer('Water leak detector', 'serial_98745631222', 0xfff1, 'Matterbridge', 'Matterbridge WaterLeakDetector', parseInt(this.version.replace(/\D/g, '')), this.version === '' ? 'Unknown' : this.version, parseInt(this.matterbridge.matterbridgeVersion.replace(/\D/g, '')), this.matterbridge.matterbridgeVersion);
@@ -645,6 +669,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
645
669
  await this.registerDevice(this.waterLeak);
646
670
  this.bridgedDevices.set(this.waterLeak.deviceName ?? '', this.waterLeak);
647
671
  await this.waterLeak.setAttribute(BooleanStateCluster.id, 'stateValue', false, this.waterLeak.log);
672
+ /** ********************* Create a waterFreezeDetector device ***********************/
648
673
  this.waterFreeze = await this.createMutableDevice([waterFreezeDetector, bridgedNode], { uniqueStorageKey: 'Water freeze detector' }, this.config.debug);
649
674
  this.waterFreeze.log.logName = 'Water freeze detector';
650
675
  this.waterFreeze.createDefaultBridgedDeviceBasicInformationClusterServer('Water freeze detector', 'serial_98745631223', 0xfff1, 'Matterbridge', 'Matterbridge WaterFreezeDetector', parseInt(this.version.replace(/\D/g, '')), this.version === '' ? 'Unknown' : this.version, parseInt(this.matterbridge.matterbridgeVersion.replace(/\D/g, '')), this.matterbridge.matterbridgeVersion);
@@ -652,6 +677,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
652
677
  await this.registerDevice(this.waterFreeze);
653
678
  this.bridgedDevices.set(this.waterFreeze.deviceName ?? '', this.waterFreeze);
654
679
  await this.waterFreeze.setAttribute(BooleanStateCluster.id, 'stateValue', false, this.waterFreeze.log);
680
+ /** ********************* Create a rainSensor device ***********************/
655
681
  this.rain = await this.createMutableDevice([rainSensor, bridgedNode], { uniqueStorageKey: 'Rain sensor' }, this.config.debug);
656
682
  this.rain.log.logName = 'Rain sensor';
657
683
  this.rain.createDefaultBridgedDeviceBasicInformationClusterServer('Rain sensor', 'serial_98745631224', 0xfff1, 'Matterbridge', 'Matterbridge RainSensor', parseInt(this.version.replace(/\D/g, '')), this.version === '' ? 'Unknown' : this.version, parseInt(this.matterbridge.matterbridgeVersion.replace(/\D/g, '')), this.matterbridge.matterbridgeVersion);
@@ -659,6 +685,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
659
685
  await this.registerDevice(this.rain);
660
686
  this.bridgedDevices.set(this.rain.deviceName ?? '', this.rain);
661
687
  await this.rain.setAttribute(BooleanStateCluster.id, 'stateValue', false, this.rain.log);
688
+ /** ********************* Create a smokeCoAlarm device ***********************/
662
689
  this.smoke = await this.createMutableDevice([smokeCoAlarm, bridgedNode], { uniqueStorageKey: 'Smoke alarm sensor' }, this.config.debug);
663
690
  this.smoke.log.logName = 'Smoke alarm sensor';
664
691
  this.smoke.createDefaultBridgedDeviceBasicInformationClusterServer('Smoke alarm sensor', 'serial_94745631225', 0xfff1, 'Matterbridge', 'Matterbridge SmokeCoAlarm', parseInt(this.version.replace(/\D/g, '')), this.version === '' ? 'Unknown' : this.version, parseInt(this.matterbridge.matterbridgeVersion.replace(/\D/g, '')), this.matterbridge.matterbridgeVersion);
@@ -668,6 +695,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
668
695
  await this.smoke.setAttribute(SmokeCoAlarmCluster.id, 'smokeState', SmokeCoAlarm.AlarmState.Normal, this.smoke.log);
669
696
  await this.smoke.setAttribute(SmokeCoAlarmCluster.id, 'coState', SmokeCoAlarm.AlarmState.Normal, this.smoke.log);
670
697
  await this.smoke.setAttribute(CarbonMonoxideConcentrationMeasurement.Cluster.id, 'measuredValue', 100, this.smoke.log);
698
+ // Create an airQuality device
671
699
  this.airQuality = await this.createMutableDevice([airQualitySensor, bridgedNode], { uniqueStorageKey: 'Air quality sensor' }, this.config.debug);
672
700
  this.airQuality.log.logName = 'Air quality Sensor';
673
701
  this.airQuality.createDefaultBridgedDeviceBasicInformationClusterServer('Air quality sensor', 'serial_987484318322', 0xfff1, 'Matterbridge', 'Matterbridge Air Quality Sensor', parseInt(this.version.replace(/\D/g, '')), this.version === '' ? 'Unknown' : this.version, parseInt(this.matterbridge.matterbridgeVersion.replace(/\D/g, '')), this.matterbridge.matterbridgeVersion);
@@ -702,9 +730,12 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
702
730
  await this.airQuality.setAttribute(TotalVolatileOrganicCompoundsConcentrationMeasurement.Cluster.id, 'measuredValue', 100, this.airQuality.log);
703
731
  }
704
732
  async onConfigure() {
733
+ await super.onConfigure();
705
734
  this.log.info('onConfigure called');
735
+ // Set switch to off
706
736
  await this.switch?.setAttribute(OnOffCluster.id, 'onOff', false, this.switch.log);
707
737
  this.switch?.log.info('Set switch initial onOff to false');
738
+ // Toggle switch onOff every minute
708
739
  this.switchInterval = setInterval(async () => {
709
740
  const status = this.switch?.getAttribute(OnOffCluster.id, 'onOff', this.switch.log);
710
741
  if (isValidBoolean(status)) {
@@ -712,29 +743,35 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
712
743
  this.switch?.log.info(`Set switch onOff to ${!status}`);
713
744
  }
714
745
  }, 60 * 1000 + 100);
746
+ // Set light on/off to off
715
747
  await this.lightOnOff?.setAttribute(OnOffCluster.id, 'onOff', false, this.lightOnOff.log);
716
748
  this.lightOnOff?.log.info('Set light initial onOff to false.');
749
+ // Set light on/off to off
717
750
  await this.dimmer?.setAttribute(OnOffCluster.id, 'onOff', false, this.dimmer.log);
718
751
  await this.dimmer?.setAttribute(LevelControlCluster.id, 'currentLevel', 1, this.dimmer.log);
719
752
  this.dimmer?.log.info(`Set dimmer initial onOff to false, currentLevel to 1.`);
753
+ // Set light to off, level to 0 and hue to 0 and saturation to 50% (pink color)
720
754
  await this.light?.setAttribute(OnOffCluster.id, 'onOff', false, this.light.log);
721
755
  await this.light?.setAttribute(LevelControlCluster.id, 'currentLevel', 1, this.light.log);
722
756
  await this.light?.setAttribute(ColorControlCluster.id, 'currentHue', 0, this.light.log);
723
757
  await this.light?.setAttribute(ColorControlCluster.id, 'currentSaturation', 128, this.light.log);
724
758
  await this.light?.configureColorControlMode(ColorControl.ColorMode.CurrentHueAndCurrentSaturation);
725
759
  this.light?.log.info('Set light initial onOff to false, currentLevel to 1, hue to 0 and saturation to 50%.');
760
+ // Set light XY to true, level to 100% and XY to red
726
761
  await this.lightXY?.setAttribute(OnOffCluster.id, 'onOff', true, this.lightXY.log);
727
762
  await this.lightXY?.setAttribute(LevelControlCluster.id, 'currentLevel', 254, this.lightXY.log);
728
763
  await this.lightXY?.setAttribute(ColorControlCluster.id, 'currentX', 0.7006 * 65536, this.lightXY.log);
729
764
  await this.lightXY?.setAttribute(ColorControlCluster.id, 'currentY', 0.2993 * 65536, this.lightXY.log);
730
765
  await this.lightXY?.configureColorControlMode(ColorControl.ColorMode.CurrentXAndCurrentY);
731
766
  this.lightXY?.log.info('Set light XY initial onOff to true, currentLevel to 254, X to 0.7006 and Y to 0.2993.');
767
+ // Set light HS to off, level to 0 and hue to 0 and saturation to 50% (pink color)
732
768
  await this.lightHS?.setAttribute(OnOffCluster.id, 'onOff', false, this.lightHS.log);
733
769
  await this.lightHS?.setAttribute(LevelControlCluster.id, 'currentLevel', 1, this.lightHS.log);
734
770
  await this.lightHS?.setAttribute(ColorControlCluster.id, 'currentHue', 0, this.lightHS.log);
735
771
  await this.lightHS?.setAttribute(ColorControlCluster.id, 'currentSaturation', 128, this.lightHS.log);
736
772
  await this.lightHS?.configureColorControlMode(ColorControl.ColorMode.CurrentHueAndCurrentSaturation);
737
773
  this.lightHS?.log.info('Set light HS initial onOff to false, currentLevel to 1, hue to 0 and saturation to 50%.');
774
+ // Set light CT to true, level to 50% and colorTemperatureMireds to 250
738
775
  await this.lightCT?.setAttribute(OnOffCluster.id, 'onOff', true, this.lightCT.log);
739
776
  await this.lightCT?.setAttribute(LevelControlCluster.id, 'currentLevel', 128, this.lightCT.log);
740
777
  await this.lightCT?.setAttribute(ColorControlCluster.id, 'colorTemperatureMireds', 250, this.lightCT.log);
@@ -781,8 +818,10 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
781
818
  this.log.error(`Invalid state ${state} or level ${level}`);
782
819
  }
783
820
  }, 60 * 1000 + 200);
821
+ // Set outlet to off
784
822
  await this.outlet?.setAttribute(OnOffCluster.id, 'onOff', false, this.outlet.log);
785
823
  this.outlet?.log.info('Set outlet initial onOff to false');
824
+ // Toggle outlet onOff every minute
786
825
  this.outletInterval = setInterval(async () => {
787
826
  const state = this.outlet?.getAttribute(OnOffCluster.id, 'onOff', this.outlet.log);
788
827
  if (isValidBoolean(state)) {
@@ -790,8 +829,10 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
790
829
  this.outlet?.log.info(`Set outlet onOff to ${!state}`);
791
830
  }
792
831
  }, 60 * 1000 + 300);
832
+ // Set cover to target = current position and status to stopped (current position is persisted in the cluster)
793
833
  await this.cover?.setWindowCoveringTargetAsCurrentAndStopped();
794
834
  this.cover?.log.info('Set cover initial targetPositionLiftPercent100ths = currentPositionLiftPercent100ths and operationalStatus to Stopped.');
835
+ // Increment cover position every minute
795
836
  this.coverInterval = setInterval(async () => {
796
837
  let position = this.cover?.getAttribute(WindowCoveringCluster.id, 'currentPositionLiftPercent100ths', this.cover.log);
797
838
  if (isValidNumber(position, 0, 10000)) {
@@ -802,8 +843,10 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
802
843
  this.cover?.log.info(`Set cover current and target positionLiftPercent100ths to ${position} and operationalStatus to Stopped`);
803
844
  }
804
845
  }, 60 * 1000 + 400);
846
+ // Set lock to Locked
805
847
  await this.lock?.setAttribute(DoorLockCluster.id, 'lockState', DoorLock.LockState.Locked, this.lock.log);
806
848
  this.lock?.log.info('Set lock initial lockState to Locked');
849
+ // Toggle lock every minute
807
850
  this.lockInterval = setInterval(async () => {
808
851
  const status = this.lock?.getAttribute(DoorLockCluster.id, 'lockState', this.lock.log);
809
852
  if (isValidNumber(status, DoorLock.LockState.Locked, DoorLock.LockState.Unlocked)) {
@@ -811,6 +854,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
811
854
  this.lock?.log.info(`Set lock lockState to ${status === DoorLock.LockState.Locked ? 'Unlocked' : 'Locked'}`);
812
855
  }
813
856
  }, 60 * 1000 + 500);
857
+ // Set local to 16°C
814
858
  await this.thermoAuto?.setAttribute(ThermostatCluster.id, 'localTemperature', 16 * 100, this.thermoAuto.log);
815
859
  await this.thermoAuto?.setAttribute(ThermostatCluster.id, 'systemMode', Thermostat.SystemMode.Auto, this.thermoAuto.log);
816
860
  this.thermoAuto?.log.info('Set thermostat initial localTemperature to 16°C and mode Auto');
@@ -821,6 +865,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
821
865
  const flow = this.thermoAuto?.getChildEndpointByName('Flow');
822
866
  await this.thermoAuto?.setAttribute(FlowMeasurementCluster.id, 'measuredValue', 10, this.thermoAuto.log, flow);
823
867
  this.thermoAuto?.log.info('Set thermostat ext temperature to 16°C, ext humidity to 50% and ext valve flow to 10');
868
+ // Increment localTemperature every minute
824
869
  this.thermoInterval = setInterval(async () => {
825
870
  let temperature = this.thermoAuto?.getAttribute(ThermostatCluster.id, 'localTemperature', this.thermoAuto.log);
826
871
  if (isValidNumber(temperature, 1600, 2400)) {
@@ -843,7 +888,9 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
843
888
  this.thermoCool?.log.info(`Set thermostat localTemperature to ${temperature / 100}°C`);
844
889
  }
845
890
  }, 60 * 1000 + 600);
891
+ // Set airConditioner to on
846
892
  await this.airConditioner?.setAttribute(OnOffCluster.id, 'onOff', true, this.airConditioner.log);
893
+ // Increment airConditioner localTemperature every minute
847
894
  this.airConditionerInterval = setInterval(async () => {
848
895
  let temperature = this.airConditioner?.getAttribute(ThermostatCluster.id, 'localTemperature', this.airConditioner.log);
849
896
  if (isValidNumber(temperature, 1600, 2400)) {
@@ -854,12 +901,14 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
854
901
  this.airConditioner?.log.info(`Set airConditioner localTemperature to ${temperature / 100}°C`);
855
902
  }
856
903
  }, 60 * 1000 + 550);
904
+ // Set fan to auto
857
905
  this.fan?.log.info('Set fan initial fanMode to Auto, percentCurrent and percentSetting to 50 and speedCurrent and speedSetting to 50');
858
906
  await this.fan?.setAttribute(FanControlCluster.id, 'fanMode', FanControl.FanMode.Auto, this.fan.log);
859
907
  await this.fan?.setAttribute(FanControlCluster.id, 'percentCurrent', 50, this.fan.log);
860
908
  await this.fan?.setAttribute(FanControlCluster.id, 'percentSetting', 50, this.fan.log);
861
909
  await this.fan?.setAttribute(FanControlCluster.id, 'speedCurrent', 50, this.fan.log);
862
910
  await this.fan?.setAttribute(FanControlCluster.id, 'speedSetting', 50, this.fan.log);
911
+ // Increment fan percentCurrent every minute
863
912
  this.fanInterval = setInterval(async () => {
864
913
  const mode = this.fan?.getAttribute(FanControlCluster.id, 'fanMode', this.fan.log);
865
914
  let value = this.fan?.getAttribute(FanControlCluster.id, 'percentCurrent', this.fan.log);
@@ -870,7 +919,9 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
870
919
  this.fan?.log.info(`Set fan percentCurrent and percentSetting to ${value}`);
871
920
  }
872
921
  }, 60 * 1000 + 700);
922
+ // Set waterLeak to false
873
923
  await this.waterLeak?.setAttribute(BooleanStateCluster.id, 'stateValue', false, this.waterLeak.log);
924
+ // Toggle waterLeak every minute
874
925
  this.waterLeakInterval = setInterval(async () => {
875
926
  let value = this.waterLeak?.getAttribute(BooleanStateCluster.id, 'stateValue', this.waterLeak.log);
876
927
  if (isValidBoolean(value)) {
@@ -879,7 +930,9 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
879
930
  this.waterLeak?.log.info(`Set waterLeak stateValue to ${value}`);
880
931
  }
881
932
  }, 60 * 1000 + 800);
933
+ // Set waterFreeze to false
882
934
  await this.waterFreeze?.setAttribute(BooleanStateCluster.id, 'stateValue', false, this.waterFreeze.log);
935
+ // Toggle waterFreeze every minute
883
936
  this.waterFreezeInterval = setInterval(async () => {
884
937
  let value = this.waterFreeze?.getAttribute(BooleanStateCluster.id, 'stateValue', this.waterFreeze.log);
885
938
  if (isValidBoolean(value)) {
@@ -888,7 +941,9 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
888
941
  this.waterFreeze?.log.info(`Set waterFreeze stateValue to ${value}`);
889
942
  }
890
943
  }, 60 * 1000 + 900);
944
+ // Set rain to false
891
945
  await this.rain?.setAttribute(BooleanStateCluster.id, 'stateValue', false, this.rain.log);
946
+ // Toggle rain every minute
892
947
  this.rainInterval = setInterval(async () => {
893
948
  let value = this.rain?.getAttribute(BooleanStateCluster.id, 'stateValue', this.rain.log);
894
949
  if (isValidBoolean(value)) {
@@ -897,8 +952,10 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
897
952
  this.rain?.log.info(`Set rain stateValue to ${value}`);
898
953
  }
899
954
  }, 60 * 1000 + 1000);
955
+ // Set smoke to Normal
900
956
  await this.smoke?.setAttribute(SmokeCoAlarmCluster.id, 'smokeState', SmokeCoAlarm.AlarmState.Normal, this.smoke.log);
901
957
  await this.smoke?.setAttribute(SmokeCoAlarmCluster.id, 'coState', SmokeCoAlarm.AlarmState.Normal, this.smoke.log);
958
+ // Toggle smoke every minute
902
959
  this.smokeInterval = setInterval(async () => {
903
960
  let value = this.smoke?.getAttribute(SmokeCoAlarmCluster.id, 'smokeState', this.smoke.log);
904
961
  if (isValidNumber(value, SmokeCoAlarm.AlarmState.Normal, SmokeCoAlarm.AlarmState.Critical)) {
@@ -908,7 +965,9 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
908
965
  this.smoke?.log.info(`Set smoke smokeState and coState to ${value}`);
909
966
  }
910
967
  }, 60 * 1000 + 1100);
968
+ // Set air quality to Normal
911
969
  this.airQuality?.setAttribute(AirQualityCluster.id, 'airQuality', AirQuality.AirQualityEnum.Good, this.airQuality.log);
970
+ // Toggle air quality every minute
912
971
  this.airQualityInterval = setInterval(async () => {
913
972
  let value = this.airQuality?.getAttribute(AirQualityCluster.id, 'airQuality', this.airQuality?.log);
914
973
  if (isValidNumber(value, AirQuality.AirQualityEnum.Good, AirQuality.AirQualityEnum.ExtremelyPoor)) {
@@ -919,6 +978,7 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
919
978
  }, 60 * 1000 + 1100);
920
979
  }
921
980
  async onShutdown(reason) {
981
+ await super.onShutdown(reason);
922
982
  this.log.info('onShutdown called with reason:', reason ?? 'none');
923
983
  clearInterval(this.switchInterval);
924
984
  clearInterval(this.lightInterval);
@@ -937,3 +997,4 @@ export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatf
937
997
  await this.unregisterAllDevices();
938
998
  }
939
999
  }
1000
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,iBAAiB,EAGjB,mBAAmB,EACnB,yBAAyB,EACzB,qCAAqC,EACrC,sCAAsC,EACtC,YAAY,EACZ,mBAAmB,EAEnB,QAAQ,EACR,eAAe,EAEf,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,oCAAoC,EACpC,mBAAmB,EACnB,oBAAoB,EACpB,uCAAuC,EACvC,YAAY,EACZ,6BAA6B,EAE7B,4BAA4B,EAC5B,2BAA2B,EAC3B,4BAA4B,EAC5B,6BAA6B,EAC7B,2BAA2B,EAC3B,kCAAkC,EAClC,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,6BAA6B,EAC7B,UAAU,EACV,iBAAiB,EACjB,qDAAqD,EAErD,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,WAAW,EACX,aAAa,EACb,cAAc,EACd,SAAS,EACT,UAAU,EACV,cAAc,EACd,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,UAAU,EACV,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EAAgB,6BAA6B,CAAC,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAC3H,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnE,MAAM,OAAO,kCAAmC,SAAQ,2BAA2B;IACjF,MAAM,CAAiC;IACvC,UAAU,CAAiC;IAC3C,MAAM,CAAiC;IACvC,KAAK,CAAiC;IACtC,OAAO,CAAiC;IACxC,OAAO,CAAiC;IACxC,OAAO,CAAiC;IACxC,MAAM,CAAiC;IACvC,KAAK,CAAiC;IACtC,IAAI,CAAiC;IACrC,UAAU,CAAiC;IAC3C,UAAU,CAAiC;IAC3C,UAAU,CAAiC;IAC3C,GAAG,CAAiC;IACpC,SAAS,CAAiC;IAC1C,WAAW,CAAiC;IAC5C,IAAI,CAAiC;IACrC,KAAK,CAAiC;IACtC,UAAU,CAAiC;IAC3C,cAAc,CAAiC;IAC/C,WAAW,CAAiC;IAC5C,IAAI,CAAiC;IACrC,KAAK,CAAiC;IAEtC,cAAc,CAA6B;IAC3C,aAAa,CAA6B;IAC1C,cAAc,CAA6B;IAC3C,aAAa,CAA6B;IAC1C,YAAY,CAA6B;IACzC,cAAc,CAA6B;IAC3C,WAAW,CAA6B;IACxC,iBAAiB,CAA6B;IAC9C,mBAAmB,CAA6B;IAChD,YAAY,CAA6B;IACzC,aAAa,CAA6B;IAC1C,kBAAkB,CAA6B;IAC/C,sBAAsB,CAA6B;IAEnD,cAAc,GAAG,IAAI,GAAG,EAA8B,CAAC;IAEvD,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAExE,KAAK,CAAC,mBAAmB,CAAC,UAAmE,EAAE,UAA2B,EAAE,EAAE,KAAK,GAAG,KAAK;QACzI,IAAI,MAA0B,CAAC;QAC/B,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI;YAAE,MAAM,GAAG,IAAI,oBAAoB,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAkC,CAAC;;YAC/H,MAAM,GAAG,IAAI,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACjE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,YAAY,YAA0B,EAAE,GAAe,EAAE,MAAsB;QAC7E,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAEjC,kDAAkD;QAClD,IAAI,IAAI,CAAC,yBAAyB,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,yBAAyB,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;YACrJ,MAAM,IAAI,KAAK,CACb,yFAAyF,IAAI,CAAC,YAAY,CAAC,mBAAmB,yCAAyC,CACxK,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAe;QACpC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,MAAM,IAAI,MAAM,CAAC,CAAC;QAE/D,yBAAyB;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QACvI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,kCAAkC,EAAE,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,gCAAgC,EAAE,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,gCAAgC,EAAE,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,uDAAuD,CACjE,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,cAAc,EACd,qBAAqB,EACrB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,+BAA+B,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,wDAAwD,CAAC,EAAE,CAAC,CAAC;QACzE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEnE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YAChF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9F,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/F,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,+BAA+B;QAC/B,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QAClJ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,GAAG,gBAAgB,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,kCAAkC,EAAE,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,gCAAgC,EAAE,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,gCAAgC,EAAE,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,uDAAuD,CACrE,gBAAgB,EAChB,cAAc,EACd,MAAM,EACN,cAAc,EACd,2BAA2B,EAC3B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,+BAA+B,EAAE,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,0CAA0C,EAAE,CAAC;QAC7D,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3E,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YACpF,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACtG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACvG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,yBAAyB;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QACzI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,kCAAkC,EAAE,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,gCAAgC,EAAE,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,gCAAgC,EAAE,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,uDAAuD,CACjE,QAAQ,EACR,aAAa,EACb,MAAM,EACN,cAAc,EACd,qBAAqB,EACrB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,+BAA+B,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,sCAAsC,EAAE,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,uDAAuD,CAAC,EAAE,CAAC,CAAC;QACxE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEnE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YAChF,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9F,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/F,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YAC5E,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7G,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACrF,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7G,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,gDAAgD,KAAK,EAAE,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,wBAAwB;QACxB,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,qBAAqB,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QAC/J,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,uBAAuB,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,kCAAkC,EAAE,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,uDAAuD,CAChE,uBAAuB,EACvB,YAAY,EACZ,MAAM,EACN,cAAc,EACd,oBAAoB,EACpB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,+BAA+B,EAAE,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,sCAAsC,EAAE,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,sCAAsC,EAAE,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,uDAAuD,CAAC,EAAE,CAAC,CAAC;QACvE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YAC/E,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5F,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7F,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YAC3E,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3G,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACpF,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3G,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,gDAAgD,KAAK,EAAE,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE;YACpF,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACxG,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACxG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,yCAAyC,MAAM,GAAG,KAAK,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC;QACvG,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE;YAC/I,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACvG,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACrH,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CACnB,sDAAsD,GAAG,eAAe,UAAU,oBAAoB,UAAU,EAAE,QAAQ,EAAE,eAAe,iBAAiB,EAAE,QAAQ,EAAE,EAAE,CAC3K,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE;YACtH,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACvG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,yCAAyC,GAAG,oBAAoB,UAAU,EAAE,QAAQ,EAAE,eAAe,iBAAiB,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC9J,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE;YACpI,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACrH,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CACnB,uDAAuD,UAAU,oBAAoB,UAAU,EAAE,QAAQ,EAAE,eAAe,iBAAiB,EAAE,QAAQ,EAAE,EAAE,CAC1J,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE;YACvF,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,wBAAwB,EAAE,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9I,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,kDAAkD,OAAO,CAAC,sBAAsB,gBAAgB,UAAU,CAAC,sBAAsB,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QACzK,CAAC,CAAC,CAAC;QAEH,8CAA8C;QAC9C,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,qBAAqB,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QAC1J,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,gBAAgB,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,kCAAkC,EAAE,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,gCAAgC,EAAE,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,gCAAgC,EAAE,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,uDAAuD,CAClE,gBAAgB,EAChB,YAAY,EACZ,MAAM,EACN,cAAc,EACd,oBAAoB,EACpB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,+BAA+B,EAAE,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,sCAAsC,EAAE,CAAC;QACtD,IAAI,CAAC,OAAO,CAAC,iCAAiC,EAAE,CAAC;QACjD,8HAA8H;QAC9H,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,0CAA0C,EAAE,CAAC;QAC1D,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAErE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YACjF,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAClG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YAC3G,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACjH,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,uCAAuC,KAAK,gBAAgB,YAAY,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YACpH,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACjH,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,gDAAgD,KAAK,gBAAgB,YAAY,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC3H,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE;YACjJ,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7G,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3H,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CACrB,sDAAsD,GAAG,eAAe,UAAU,oBAAoB,UAAU,EAAE,QAAQ,EAAE,eAAe,iBAAiB,EAAE,QAAQ,EAAE,EAAE,CAC3K,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE;YACxH,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7G,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,yCAAyC,GAAG,oBAAoB,UAAU,EAAE,QAAQ,EAAE,eAAe,iBAAiB,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAChK,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE;YACtI,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3H,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CACrB,uDAAuD,UAAU,oBAAoB,UAAU,EAAE,QAAQ,EAAE,eAAe,iBAAiB,EAAE,QAAQ,EAAE,EAAE,CAC1J,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE;YACzF,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,wBAAwB,EAAE,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9I,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,kDAAkD,OAAO,CAAC,sBAAsB,gBAAgB,UAAU,CAAC,sBAAsB,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QACzK,CAAC,CAAC,CAAC;QAEH,8CAA8C;QAC9C,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,qBAAqB,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QAC1J,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,gBAAgB,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,kCAAkC,EAAE,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,gCAAgC,EAAE,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,gCAAgC,EAAE,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,uDAAuD,CAClE,gBAAgB,EAChB,YAAY,EACZ,MAAM,EACN,cAAc,EACd,oBAAoB,EACpB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,+BAA+B,EAAE,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,sCAAsC,EAAE,CAAC;QACtD,IAAI,CAAC,OAAO,CAAC,iCAAiC,EAAE,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,0CAA0C,EAAE,CAAC;QAC1D,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAErE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YACjF,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAClG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YAC7E,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACjH,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACtF,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACjH,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,gDAAgD,KAAK,EAAE,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE;YACtF,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1G,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1G,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,yCAAyC,MAAM,GAAG,KAAK,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC;QACzG,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE;YACzF,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,wBAAwB,EAAE,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9I,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,kDAAkD,OAAO,CAAC,sBAAsB,gBAAgB,UAAU,CAAC,sBAAsB,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QACzK,CAAC,CAAC,CAAC;QAEH,8CAA8C;QAC9C,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,qBAAqB,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QACtJ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,YAAY,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,kCAAkC,EAAE,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,gCAAgC,EAAE,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,gCAAgC,EAAE,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,uDAAuD,CAClE,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,cAAc,EACd,oBAAoB,EACpB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,+BAA+B,EAAE,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,sCAAsC,EAAE,CAAC;QACtD,IAAI,CAAC,OAAO,CAAC,iCAAiC,EAAE,CAAC;QACjD,sHAAsH;QACtH,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,uDAAuD,CAAC,EAAE,CAAC,CAAC;QACzE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAErE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YACjF,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAClG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YAC7E,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACjH,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACtF,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACjH,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,gDAAgD,KAAK,EAAE,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YAC7E,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,wBAAwB,EAAE,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACpJ,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,kDAAkD,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAC9G,CAAC,CAAC,CAAC;QAEH,0BAA0B;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QACvI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,kCAAkC,EAAE,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,gCAAgC,EAAE,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,gCAAgC,EAAE,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,uDAAuD,CACjE,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,cAAc,EACd,qBAAqB,EACrB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,+BAA+B,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,0CAA0C,EAAE,CAAC;QACzD,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEnE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YAChF,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/F,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAChG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,kCAAkC;QAClC,sDAAsD;QACtD,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QACrI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,kCAAkC,EAAE,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,uDAAuD,CAChE,OAAO,EACP,YAAY,EACZ,MAAM,EACN,cAAc,EACd,oBAAoB,EACpB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,wCAAwC,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,wDAAwD,CAAC,EAAE,CAAC,CAAC;QACxE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjE,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAC3B,qBAAqB,CAAC,EAAE,EACxB,MAAM,EACN,CACE,QAKE,EACF,QAKE,EACF,EAAE;YACF,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAClB,+BAA+B,QAAQ,OAAO,QAAQ,cAAc,QAAQ,CAAC,sBAAsB,kBAAkB,QAAQ,CAAC,eAAe,kBAAkB,QAAQ,CAAC,eAAe,UAAU,QAAQ,CAAC,WAAW,EAAE,CACxN,CAAC;QACJ,CAAC,EACD,IAAI,CAAC,KAAK,CAAC,GAAG,CACf,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YAC/E,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,IAAI,CAAC,KAAK,EAAE,0CAA0C,EAAE,CAAC;YAC/D,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,IAAI,CAAC,KAAK,EAAE,oCAAoC,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC5G,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,IAAI,CAAC,KAAK,EAAE,oCAAoC,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACpG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,sBAAsB,EAAE,EAAE,EAAE,EAAE;YACnG,MAAM,IAAI,CAAC,KAAK,EAAE,oCAAoC,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC9I,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,8BAA8B,sBAAsB,SAAS,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,cAAc,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QACtI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,uDAAuD,CAC/D,MAAM,EACN,YAAY,EACZ,MAAM,EACN,cAAc,EACd,mBAAmB,EACnB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,wDAAwD,CAAC,EAAE,CAAC,CAAC;QACvE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/D,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YAC9E,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACrH,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACvH,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,2CAA2C;QAC3C,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QAC/J,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,GAAG,uBAAuB,CAAC;QACtD,IAAI,CAAC,UAAU,CAAC,kCAAkC,EAAE,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,gCAAgC,EAAE,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,gCAAgC,EAAE,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,uDAAuD,CACrE,uBAAuB,EACvB,aAAa,EACb,MAAM,EACN,cAAc,EACd,yBAAyB,EACzB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,oCAAoC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,wDAAwD,CAAC,EAAE,CAAC,CAAC;QAE7E,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,mCAAmC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1H,SAAS,CAAC,gBAAgB,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,yBAAyB,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAEvF,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,mCAAmC,CAAC,aAAa,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/I,SAAS,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,yBAAyB,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QAEhG,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,mCAAmC,CAAC,UAAU,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,2BAA2B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAClJ,aAAa,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,OAAO,CAAC,EAAE,yBAAyB,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QAEzG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3E,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YACpF,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,eAAe,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,gBAAgB,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE;YAC5G,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,4CAA4C,gBAAgB,kBAAkB,aAAa,EAAE,CAAC,CAAC;QAC3H,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE;YAC9F,MAAM,wBAAwB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1D,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,gDAAgD,wBAAwB,CAAC,IAAI,CAAC,YAAY,MAAM,GAAG,EAAE,EAAE,CAAC,CAAC;YACnI,IAAI,IAAI,KAAK,UAAU,CAAC,sBAAsB,CAAC,IAAI,IAAI,IAAI,KAAK,UAAU,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;gBACvG,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,yBAAyB,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,GAAG,EAAE,CAAC;gBAC1I,MAAM,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,yBAAyB,EAAE,QAAQ,GAAG,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBAC3H,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,8BAA8B,EAAE,QAAQ,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,IAAI,KAAK,UAAU,CAAC,sBAAsB,CAAC,IAAI,IAAI,IAAI,KAAK,UAAU,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;gBACvG,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,yBAAyB,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,GAAG,EAAE,CAAC;gBAC1I,MAAM,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,yBAAyB,EAAE,QAAQ,GAAG,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBAC3H,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,8BAA8B,EAAE,QAAQ,CAAC,CAAC;YACtE,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAChC,iBAAiB,CAAC,EAAE,EACpB,YAAY,EACZ,KAAK,EAAE,KAAK,EAAE,EAAE;YACd,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YACvH,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,mCAAmC,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1F,CAAC,EACD,IAAI,CAAC,UAAU,CAAC,GAAG,EACnB,IAAI,CAAC,UAAU,CAChB,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAChC,iBAAiB,CAAC,EAAE,EACpB,yBAAyB,EACzB,KAAK,EAAE,KAAK,EAAE,EAAE;YACd,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,gDAAgD,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC;QAC3F,CAAC,EACD,IAAI,CAAC,UAAU,CAAC,GAAG,EACnB,IAAI,CAAC,UAAU,CAChB,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAChC,iBAAiB,CAAC,EAAE,EACpB,yBAAyB,EACzB,KAAK,EAAE,KAAK,EAAE,EAAE;YACd,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,gDAAgD,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC;QAC3F,CAAC,EACD,IAAI,CAAC,UAAU,CAAC,GAAG,EACnB,IAAI,CAAC,UAAU,CAChB,CAAC;QAEF,uCAAuC;QACvC,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QAC3J,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,GAAG,mBAAmB,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,kCAAkC,EAAE,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,gCAAgC,EAAE,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,gCAAgC,EAAE,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,uDAAuD,CACrE,mBAAmB,EACnB,aAAa,EACb,MAAM,EACN,cAAc,EACd,yBAAyB,EACzB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,2CAA2C,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,wDAAwD,CAAC,EAAE,CAAC,CAAC;QAE7E,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC,iBAAiB,CAAC,EAAE;YAC1F,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;SACpH,CAAC,CAAC;QACH,UAAU,CAAC,kCAAkC,EAAE,CAAC;QAChD,UAAU,CAAC,gDAAgD,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QAEtE,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,iBAAiB,CAAC,EAAE;YAC5F,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;SACtH,CAAC,CAAC;QACH,WAAW,CAAC,kCAAkC,EAAE,CAAC;QACjD,WAAW,CAAC,gDAAgD,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QAEvE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3E,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YACpF,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,eAAe,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,gBAAgB,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE;YAC5G,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,4CAA4C,gBAAgB,kBAAkB,aAAa,EAAE,CAAC,CAAC;QAC3H,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAChC,iBAAiB,CAAC,EAAE,EACpB,YAAY,EACZ,KAAK,EAAE,KAAK,EAAE,EAAE;YACd,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YACvH,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,mCAAmC,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1F,CAAC,EACD,IAAI,CAAC,UAAU,CAAC,GAAG,CACpB,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAChC,iBAAiB,CAAC,EAAE,EACpB,yBAAyB,EACzB,KAAK,EAAE,KAAK,EAAE,EAAE;YACd,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,gDAAgD,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC;QAC3F,CAAC,EACD,IAAI,CAAC,UAAU,CAAC,GAAG,CACpB,CAAC;QAEF,uCAAuC;QACvC,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QAC3J,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,GAAG,mBAAmB,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,kCAAkC,EAAE,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,gCAAgC,EAAE,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,gCAAgC,EAAE,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,uDAAuD,CACrE,mBAAmB,EACnB,aAAa,EACb,MAAM,EACN,cAAc,EACd,yBAAyB,EACzB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,2CAA2C,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,wDAAwD,CAAC,EAAE,CAAC,CAAC;QAE7E,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3E,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YACpF,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,eAAe,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,gBAAgB,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE;YAC5G,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,4CAA4C,gBAAgB,kBAAkB,aAAa,EAAE,CAAC,CAAC;QAC3H,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAChC,iBAAiB,CAAC,EAAE,EACpB,YAAY,EACZ,KAAK,EAAE,KAAK,EAAE,EAAE;YACd,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YACvH,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,mCAAmC,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1F,CAAC,EACD,IAAI,CAAC,UAAU,CAAC,GAAG,CACpB,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAChC,iBAAiB,CAAC,EAAE,EACpB,yBAAyB,EACzB,KAAK,EAAE,KAAK,EAAE,EAAE;YACd,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,gDAAgD,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC;QAC3F,CAAC,EACD,IAAI,CAAC,UAAU,CAAC,GAAG,CACpB,CAAC;QAEF,8BAA8B;QAC9B,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAC/C,CAAC,WAAW,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,CAAC,EAC7D,EAAE,gBAAgB,EAAE,cAAc,EAAE,EACpC,IAAI,CAAC,MAAM,CAAC,KAAgB,CAC7B,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,GAAG,cAAc,CAAC;QAC9C,IAAI,CAAC,WAAW,CAAC,uDAAuD,CACtE,cAAc,EACd,cAAc,EACd,MAAM,EACN,cAAc,EACd,2BAA2B,EAC3B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,kCAAkC,EAAE,CAAC;QACtD,IAAI,CAAC,WAAW,CAAC,oCAAoC,EAAE,CAAC;QACxD,IAAI,CAAC,WAAW,CAAC,gDAAgD,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QAC5E,IAAI,CAAC,WAAW,CAAC,qDAAqD,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QAEjF,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,CAAC,0CAA0C,EAAE,CAAC;QAE9D,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE7E,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YACrF,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QACH,2BAA2B;QAC3B,IAAI,CAAC,WAAW,CAAC,kBAAkB,CACjC,iBAAiB,CAAC,EAAE,EACpB,SAAS,EACT,KAAK,EAAE,QAA4B,EAAE,QAA4B,EAAE,EAAE;YACnE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/G,IAAI,QAAQ,KAAK,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACxC,MAAM,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YACzG,CAAC;iBAAM,IAAI,QAAQ,KAAK,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBAC/C,MAAM,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAC1G,CAAC;iBAAM,IAAI,QAAQ,KAAK,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAClD,MAAM,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAC1G,CAAC;iBAAM,IAAI,QAAQ,KAAK,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAChD,MAAM,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAC3G,CAAC;iBAAM,IAAI,QAAQ,KAAK,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBAC9C,MAAM,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAC3G,CAAC;iBAAM,IAAI,QAAQ,KAAK,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAChD,MAAM,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAC1G,CAAC;QACH,CAAC,EACD,IAAI,CAAC,WAAW,CAAC,GAAG,CACrB,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,kBAAkB,CACjC,iBAAiB,CAAC,EAAE,EACpB,gBAAgB,EAChB,KAAK,EAAE,QAAuB,EAAE,QAAuB,EAAE,EAAE;YACzD,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,gCAAgC,QAAQ,OAAO,QAAQ,EAAE,CAAC,CAAC;YAC9E,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC;gBAAE,MAAM,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACrJ,CAAC,EACD,IAAI,CAAC,WAAW,CAAC,GAAG,CACrB,CAAC;QAEF,iCAAiC;QACjC,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAClD,CAAC,cAAc,EAAE,kDAAkD,CAAC,WAAW,CAAC,EAChF,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,EACvC,IAAI,CAAC,MAAM,CAAC,KAAgB,CAC7B,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,GAAG,iBAAiB,CAAC;QACpD,IAAI,CAAC,cAAc,CAAC,uDAAuD,CACzE,iBAAiB,EACjB,cAAc,EACd,MAAM,EACN,cAAc,EACd,8BAA8B,EAC9B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,kCAAkC,EAAE,CAAC;QACzD,IAAI,CAAC,cAAc,CAAC,iCAAiC,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,cAAc,CAAC,oCAAoC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,cAAc,CAAC,oCAAoC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClF,IAAI,CAAC,cAAc,CAAC,gDAAgD,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QAC/E,IAAI,CAAC,cAAc,CAAC,qDAAqD,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QAEpF,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,CAAC,cAAc,CAAC,0CAA0C,EAAE,CAAC;QAEjE,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEnE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAEnF,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YACxF,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YAClG,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YAClG,MAAM,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YACtH,MAAM,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,6BAA6B,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YAC/H,MAAM,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,kCAAkC,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YACpI,MAAM,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YAC5G,MAAM,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YACnG,MAAM,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YAClH,MAAM,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,6BAA6B,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YAC3H,MAAM,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,kCAAkC,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YAChI,MAAM,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YAC9G,MAAM,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YAChH,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,6BAA6B;QAC7B,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QAClI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,uDAAuD,CAC/D,MAAM,EACN,gBAAgB,EAChB,MAAM,EACN,cAAc,EACd,mBAAmB,EACnB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,qDAAqD,EAAE,CAAC;QAElE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,0CAA0C,EAAE,CAAC;QAEvD,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/D,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YAC9E,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YAC3C,MAAM,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC9E,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC/E,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,6BAA6B;QAC7B,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QAC1I,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,aAAa,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,uDAAuD,CAChE,aAAa,EACb,cAAc,EACd,MAAM,EACN,cAAc,EACd,0BAA0B,EAC1B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,kCAAkC,EAAE,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,sDAAsD,EAAE,CAAC;QAEpE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,0CAA0C,EAAE,CAAC;QAExD,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YAC/E,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,sBAAsB;QACtB,IAAI,CAAC,GAAG,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QAC/H,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,uDAAuD,CAC9D,KAAK,EACL,qBAAqB,EACrB,MAAM,EACN,cAAc,EACd,kBAAkB,EAClB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAE7D,IAAI,CAAC,GAAG,CAAC,kBAAkB,CACzB,iBAAiB,CAAC,EAAE,EACpB,SAAS,EACT,KAAK,EAAE,QAA4B,EAAE,QAA4B,EAAE,EAAE;YACnE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/G,IAAI,QAAQ,KAAK,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACxC,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACzF,CAAC;iBAAM,IAAI,QAAQ,KAAK,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBAC/C,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC1F,CAAC;iBAAM,IAAI,QAAQ,KAAK,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAClD,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC1F,CAAC;iBAAM,IAAI,QAAQ,KAAK,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAChD,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC3F,CAAC;iBAAM,IAAI,QAAQ,KAAK,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBAC9C,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC3F,CAAC;iBAAM,IAAI,QAAQ,KAAK,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAChD,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,GAAG,EACZ,IAAI,CAAC,GAAG,CACT,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,kBAAkB,CACzB,iBAAiB,CAAC,EAAE,EACpB,gBAAgB,EAChB,KAAK,EAAE,QAAuB,EAAE,QAAuB,EAAE,EAAE;YACzD,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,gCAAgC,QAAQ,OAAO,QAAQ,EAAE,CAAC,CAAC;YAC9E,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC;gBAAE,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACrI,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,GAAG,CACb,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,kBAAkB,CACzB,iBAAiB,CAAC,EAAE,EACpB,cAAc,EACd,KAAK,EAAE,QAAuB,EAAE,QAAuB,EAAE,EAAE;YACzD,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,8BAA8B,QAAQ,OAAO,QAAQ,EAAE,CAAC,CAAC;YAC5E,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC;gBAAE,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACnI,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,GAAG,CACb,CAAC;QAEF,oFAAoF;QACpF,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,iBAAiB,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QAC7J,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,SAAS,CAAC,uDAAuD,CACpE,qBAAqB,EACrB,oBAAoB,EACpB,MAAM,EACN,cAAc,EACd,gCAAgC,EAChC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3G,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACzE,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEnG,sFAAsF;QACtF,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QACnK,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,GAAG,uBAAuB,CAAC;QACvD,IAAI,CAAC,WAAW,CAAC,uDAAuD,CACtE,uBAAuB,EACvB,oBAAoB,EACpB,MAAM,EACN,cAAc,EACd,kCAAkC,EAClC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/G,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7E,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAEvG,6EAA6E;QAC7E,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QACzI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,aAAa,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,uDAAuD,CAC/D,aAAa,EACb,oBAAoB,EACpB,MAAM,EACN,cAAc,EACd,yBAAyB,EACzB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/F,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEzF,+EAA+E;QAC/E,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QACnJ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,oBAAoB,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,uDAAuD,CAChE,oBAAoB,EACpB,oBAAoB,EACpB,MAAM,EACN,cAAc,EACd,2BAA2B,EAC3B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,sCAAsC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/G,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpH,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjH,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,sCAAsC,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEvH,8BAA8B;QAC9B,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QAC5J,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,GAAG,oBAAoB,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,uDAAuD,CACrE,oBAAoB,EACpB,qBAAqB,EACrB,MAAM,EACN,cAAc,EACd,iCAAiC,EACjC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EACzC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAC9C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACtC,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,8BAA8B,CAC5C,CAAC,gBAAgB,CAAC,EAClB;YACE,sBAAsB,CAAC,OAAO,CAAC,EAAE;YACjC,2BAA2B,CAAC,OAAO,CAAC,EAAE;YACtC,sCAAsC,CAAC,OAAO,CAAC,EAAE;YACjD,qCAAqC,CAAC,OAAO,CAAC,EAAE;YAChD,uCAAuC,CAAC,OAAO,CAAC,EAAE;YAClD,6BAA6B,CAAC,OAAO,CAAC,EAAE;YACxC,oCAAoC,CAAC,OAAO,CAAC,EAAE;YAC/C,2BAA2B,CAAC,OAAO,CAAC,EAAE;YACtC,4BAA4B,CAAC,OAAO,CAAC,EAAE;YACvC,4BAA4B,CAAC,OAAO,CAAC,EAAE;YACvC,6BAA6B,CAAC,OAAO,CAAC,EAAE;YACxC,qDAAqD,CAAC,OAAO,CAAC,EAAE;SACjE,CACF,CAAC;QACF,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3E,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC7H,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAClH,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,2BAA2B,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACvH,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,sCAAsC,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAChI,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,qCAAqC,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAChI,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,uCAAuC,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAChI,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,6BAA6B,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACtH,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,oCAAoC,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC7H,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,2BAA2B,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACtH,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,4BAA4B,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACvH,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,4BAA4B,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACvH,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,6BAA6B,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACxH,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,qDAAqD,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAClJ,CAAC;IAEQ,KAAK,CAAC,WAAW;QACxB,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAEpC,oBAAoB;QACpB,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClF,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAC3D,mCAAmC;QACnC,IAAI,CAAC,cAAc,GAAG,WAAW,CAC/B,KAAK,IAAI,EAAE;YACT,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpF,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACpF,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC,EACD,EAAE,GAAG,IAAI,GAAG,GAAG,CAChB,CAAC;QAEF,0BAA0B;QAC1B,MAAM,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC1F,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAE/D,0BAA0B;QAC1B,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClF,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5F,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;QAE/E,+EAA+E;QAC/E,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChF,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1F,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxF,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,mBAAmB,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjG,MAAM,IAAI,CAAC,KAAK,EAAE,yBAAyB,CAAC,YAAY,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;QACnG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC;QAE7G,oDAAoD;QACpD,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnF,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChG,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvG,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvG,MAAM,IAAI,CAAC,OAAO,EAAE,yBAAyB,CAAC,YAAY,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC1F,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;QAEhH,kFAAkF;QAClF,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpF,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9F,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5F,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,mBAAmB,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrG,MAAM,IAAI,CAAC,OAAO,EAAE,yBAAyB,CAAC,YAAY,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;QACrG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,yFAAyF,CAAC,CAAC;QAElH,uEAAuE;QACvE,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnF,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChG,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,wBAAwB,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1G,MAAM,IAAI,CAAC,OAAO,EAAE,yBAAyB,CAAC,YAAY,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAC7F,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,yFAAyF,CAAC,CAAC;QAElH,IAAI,CAAC,aAAa,GAAG,WAAW,CAC9B,KAAK,IAAI,EAAE;YACT,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjF,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7F,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC1D,KAAK,IAAI,EAAE,CAAC;gBACZ,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;oBACjB,KAAK,GAAG,CAAC,CAAC;oBACV,MAAM,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBAC1F,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAClF,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAChF,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACpF,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACpF,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACpF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;oBAC3C,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChG,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC9F,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAClG,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAClG,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAClG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;gBACvD,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;oBAC1F,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACjF,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC/E,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACnF,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACnF,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACnF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;oBAC1C,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChG,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC9F,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAClG,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAClG,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAClG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,KAAK,aAAa,KAAK,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,EACD,EAAE,GAAG,IAAI,GAAG,GAAG,CAChB,CAAC;QAEF,oBAAoB;QACpB,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClF,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAC3D,mCAAmC;QACnC,IAAI,CAAC,cAAc,GAAG,WAAW,CAC/B,KAAK,IAAI,EAAE;YACT,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACnF,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACnF,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC;YACzD,CAAC;QACH,CAAC,EACD,EAAE,GAAG,IAAI,GAAG,GAAG,CAChB,CAAC;QAEF,8GAA8G;QAC9G,MAAM,IAAI,CAAC,KAAK,EAAE,0CAA0C,EAAE,CAAC;QAC/D,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,wHAAwH,CAAC,CAAC;QAC/I,wCAAwC;QACxC,IAAI,CAAC,aAAa,GAAG,WAAW,CAC9B,KAAK,IAAI,EAAE;YACT,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,qBAAqB,CAAC,EAAE,EAAE,kCAAkC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtH,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;gBACtC,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACjD,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,qBAAqB,CAAC,EAAE,EAAE,iCAAiC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACtH,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,qBAAqB,CAAC,EAAE,EAAE,kCAAkC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvH,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAC5B,qBAAqB,CAAC,EAAE,EACxB,mBAAmB,EACnB,EAAE,MAAM,EAAE,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,EAC3I,IAAI,CAAC,KAAK,CAAC,GAAG,CACf,CAAC;gBACF,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,6DAA6D,QAAQ,mCAAmC,CAAC,CAAC;YACjI,CAAC;QACH,CAAC,EACD,EAAE,GAAG,IAAI,GAAG,GAAG,CAChB,CAAC;QAEF,qBAAqB;QACrB,MAAM,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QAC5D,2BAA2B;QAC3B,IAAI,CAAC,YAAY,GAAG,WAAW,CAC7B,KAAK,IAAI,EAAE;YACT,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvF,IAAI,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClF,MAAM,IAAI,CAAC,IAAI,EAAE,YAAY,CAC3B,eAAe,CAAC,EAAE,EAClB,WAAW,EACX,MAAM,KAAK,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAC9F,IAAI,CAAC,IAAI,CAAC,GAAG,CACd,CAAC;gBACF,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,yBAAyB,MAAM,KAAK,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/G,CAAC;QACH,CAAC,EACD,EAAE,GAAG,IAAI,GAAG,GAAG,CAChB,CAAC;QAEF,oBAAoB;QACpB,MAAM,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC7G,MAAM,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACzH,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QAC3F,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,aAAa,CAAC,CAAC;QAC3E,MAAM,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,6BAA6B,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACnI,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;QACrE,MAAM,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,kCAAkC,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrI,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,sBAAsB,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/G,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC;QAElH,0CAA0C;QAC1C,IAAI,CAAC,cAAc,GAAG,WAAW,CAC/B,KAAK,IAAI,EAAE;YACT,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,kBAAkB,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC/G,IAAI,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC3C,WAAW,GAAG,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;gBAClE,MAAM,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,kBAAkB,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAChH,MAAM,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,kBAAkB,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAChH,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,eAAe,CAAmC,CAAC;gBAC1G,MAAM,MAAM,EAAE,YAAY,CAAC,6BAA6B,CAAC,EAAE,EAAE,eAAe,EAAE,WAAW,GAAG,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBACtH,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,gBAAgB,CAAmC,CAAC;gBAC5G,MAAM,OAAO,EAAE,YAAY,CAAC,6BAA6B,CAAC,EAAE,EAAE,eAAe,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBAExH,MAAM,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,kBAAkB,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAChH,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,aAAa,CAAC,CAAC;gBACpE,MAAM,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,6BAA6B,CAAC,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC/H,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;gBACrE,MAAM,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,kCAAkC,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACrI,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;gBAC7D,MAAM,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,sBAAsB,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC/G,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,sCAAsC,WAAW,GAAG,GAAG,IAAI,CAAC,CAAC;gBACvF,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,sCAAsC,WAAW,GAAG,GAAG,IAAI,CAAC,CAAC;gBACvF,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,sCAAsC,WAAW,GAAG,GAAG,IAAI,CAAC,CAAC;YACzF,CAAC;QACH,CAAC,EACD,EAAE,GAAG,IAAI,GAAG,GAAG,CAChB,CAAC;QAEF,2BAA2B;QAC3B,MAAM,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACjG,yDAAyD;QACzD,IAAI,CAAC,sBAAsB,GAAG,WAAW,CACvC,KAAK,IAAI,EAAE;YACT,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,kBAAkB,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACvH,IAAI,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC3C,WAAW,GAAG,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;gBAClE,MAAM,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,kBAAkB,EAAE,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBACxH,MAAM,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,6BAA6B,CAAC,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBACjI,MAAM,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,kCAAkC,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBACnI,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,0CAA0C,WAAW,GAAG,GAAG,IAAI,CAAC,CAAC;YACjG,CAAC;QACH,CAAC,EACD,EAAE,GAAG,IAAI,GAAG,GAAG,CAChB,CAAC;QAEF,kBAAkB;QAClB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,kHAAkH,CAAC,CAAC;QACvI,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrG,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvF,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvF,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrF,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrF,4CAA4C;QAC5C,IAAI,CAAC,WAAW,GAAG,WAAW,CAC5B,KAAK,IAAI,EAAE;YACT,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnF,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzF,IAAI,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC7I,KAAK,GAAG,KAAK,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC3C,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC1F,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC1F,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,gDAAgD,KAAK,EAAE,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC,EACD,EAAE,GAAG,IAAI,GAAG,GAAG,CAChB,CAAC;QAEF,yBAAyB;QACzB,MAAM,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACpG,gCAAgC;QAChC,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAClC,KAAK,IAAI,EAAE;YACT,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnG,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,KAAK,GAAG,CAAC,KAAK,CAAC;gBACf,MAAM,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACpG,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;YACnE,CAAC;QACH,CAAC,EACD,EAAE,GAAG,IAAI,GAAG,GAAG,CAChB,CAAC;QAEF,2BAA2B;QAC3B,MAAM,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxG,kCAAkC;QAClC,IAAI,CAAC,mBAAmB,GAAG,WAAW,CACpC,KAAK,IAAI,EAAE;YACT,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACvG,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,KAAK,GAAG,CAAC,KAAK,CAAC;gBACf,MAAM,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBACxG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,iCAAiC,KAAK,EAAE,CAAC,CAAC;YACvE,CAAC;QACH,CAAC,EACD,EAAE,GAAG,IAAI,GAAG,GAAG,CAChB,CAAC;QAEF,oBAAoB;QACpB,MAAM,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1F,2BAA2B;QAC3B,IAAI,CAAC,YAAY,GAAG,WAAW,CAC7B,KAAK,IAAI,EAAE;YACT,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzF,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,KAAK,GAAG,CAAC,KAAK,CAAC;gBACf,MAAM,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC1F,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;YACzD,CAAC;QACH,CAAC,EACD,EAAE,GAAG,IAAI,GAAG,IAAI,CACjB,CAAC;QAEF,sBAAsB;QACtB,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrH,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClH,4BAA4B;QAC5B,IAAI,CAAC,aAAa,GAAG,WAAW,CAC9B,KAAK,IAAI,EAAE;YACT,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3F,IAAI,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3F,KAAK,GAAG,KAAK,KAAK,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC;gBACrH,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC5F,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACzF,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC;YACvE,CAAC;QACH,CAAC,EACD,EAAE,GAAG,IAAI,GAAG,IAAI,CACjB,CAAC;QAEF,4BAA4B;QAC5B,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACvH,kCAAkC;QAClC,IAAI,CAAC,kBAAkB,GAAG,WAAW,CACnC,KAAK,IAAI,EAAE;YACT,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YACpG,IAAI,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC;gBAClG,KAAK,GAAG,KAAK,IAAI,UAAU,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBACtG,MAAM,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACpG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,sBAAsB,KAAK,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,EACD,EAAE,GAAG,IAAI,GAAG,IAAI,CACjB,CAAC;IACJ,CAAC;IAEQ,KAAK,CAAC,UAAU,CAAC,MAAe;QACvC,MAAM,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gCAAgC,EAAE,MAAM,IAAI,MAAM,CAAC,CAAC;QAClE,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAClC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAClC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACtC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACxC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAClC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACvC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,KAAK,IAAI;YAAE,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;IACnF,CAAC;CACF"}
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "matterbridge-example-dynamic-platform",
3
- "version": "1.1.4-dev.1",
3
+ "version": "1.1.4",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "matterbridge-example-dynamic-platform",
9
- "version": "1.1.4-dev.1",
9
+ "version": "1.1.4",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "node-ansi-logger": "3.0.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "matterbridge-example-dynamic-platform",
3
- "version": "1.1.4-dev.1",
3
+ "version": "1.1.4",
4
4
  "description": "Matterbridge dynamic plugin",
5
5
  "author": "https://github.com/Luligu",
6
6
  "license": "MIT",