isy-nodejs 1.0.6-alpha.0 → 1.0.6-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/dist/esm/CodeGeneration/EnumFactory.js +1 -1
  2. package/dist/esm/CodeGeneration/EnumFactory.js.map +1 -1
  3. package/dist/esm/CodeGeneration/NodeClassFactory.js +5 -4
  4. package/dist/esm/CodeGeneration/NodeClassFactory.js.map +1 -1
  5. package/dist/esm/Converters.js.map +1 -1
  6. package/dist/esm/Definitions/Global/Drivers.js +7 -5
  7. package/dist/esm/Definitions/Global/Drivers.js.map +1 -1
  8. package/dist/esm/Devices/DynamicNode.js +19 -0
  9. package/dist/esm/Devices/DynamicNode.js.map +1 -0
  10. package/dist/esm/Devices/GenericNode.js +17 -0
  11. package/dist/esm/Devices/GenericNode.js.map +1 -0
  12. package/dist/esm/Devices/Insteon/InsteonDevice.js.map +1 -1
  13. package/dist/esm/Devices/Insteon/InsteonDeviceFactory.js +86 -102
  14. package/dist/esm/Devices/Insteon/InsteonDeviceFactory.js.map +1 -1
  15. package/dist/esm/Devices/Insteon/InsteonLockDevice.js +4 -5
  16. package/dist/esm/Devices/Insteon/InsteonLockDevice.js.map +1 -1
  17. package/dist/esm/Devices/Insteon/InsteonMotionSensorDevice.js +4 -5
  18. package/dist/esm/Devices/Insteon/InsteonMotionSensorDevice.js.map +1 -1
  19. package/dist/esm/Devices/Insteon/InsteonRelayDevice.js.map +1 -1
  20. package/dist/esm/Devices/Insteon/InsteonThermostatDevice.js +2 -24
  21. package/dist/esm/Devices/Insteon/InsteonThermostatDevice.js.map +1 -1
  22. package/dist/esm/Devices/Insteon/index.js +3 -0
  23. package/dist/esm/Devices/Insteon/index.js.map +1 -1
  24. package/dist/esm/Devices/MapsTo.js +0 -11
  25. package/dist/esm/Devices/MapsTo.js.map +1 -1
  26. package/dist/esm/Devices/NodeFactory.js +1 -1
  27. package/dist/esm/Devices/NodeFactory.js.map +1 -1
  28. package/dist/esm/Devices/ZWave/ZWaveBaseDevice.js +2 -2
  29. package/dist/esm/Devices/ZWave/ZWaveBaseDevice.js.map +1 -1
  30. package/dist/esm/Devices/ZWave/ZWaveDimmerSwitchDevice.js +2 -2
  31. package/dist/esm/Devices/ZWave/ZWaveDimmerSwitchDevice.js.map +1 -1
  32. package/dist/esm/Devices/ZWave/ZWaveLockDevice.js +5 -5
  33. package/dist/esm/Devices/ZWave/ZWaveLockDevice.js.map +1 -1
  34. package/dist/esm/ISY.js +3 -3
  35. package/dist/esm/ISY.js.map +1 -1
  36. package/dist/esm/ISYConstants.js +0 -5
  37. package/dist/esm/ISYConstants.js.map +1 -1
  38. package/dist/esm/ISYNode.js +12 -7
  39. package/dist/esm/ISYNode.js.map +1 -1
  40. package/dist/esm/ISYScene.js +3 -3
  41. package/dist/esm/ISYScene.js.map +1 -1
  42. package/dist/esm/Matter/Behaviors/ISYBridgedDeviceBehavior.js +1 -1
  43. package/dist/esm/Matter/Behaviors/ISYBridgedDeviceBehavior.js.map +1 -1
  44. package/dist/esm/Matter/Behaviors/ISYClusterBehavior.js +1 -0
  45. package/dist/esm/Matter/Behaviors/ISYClusterBehavior.js.map +1 -1
  46. package/dist/esm/Matter/Mappings/Insteon.js +3 -5
  47. package/dist/esm/Matter/Mappings/Insteon.js.map +1 -1
  48. package/dist/esm/Matter/Mappings/MappingRegistry.js +26 -9
  49. package/dist/esm/Matter/Mappings/MappingRegistry.js.map +1 -1
  50. package/dist/esm/Utils.js.map +1 -1
  51. package/dist/esm/types/CodeGeneration/EnumFactory.d.ts +2 -2
  52. package/dist/esm/types/CodeGeneration/EnumFactory.d.ts.map +1 -1
  53. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts +11 -9
  54. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts.map +1 -1
  55. package/dist/esm/types/Converters.d.ts +25 -16
  56. package/dist/esm/types/Converters.d.ts.map +1 -1
  57. package/dist/esm/types/Definitions/Global/Drivers.d.ts.map +1 -1
  58. package/dist/esm/types/Devices/DynamicNode.d.ts +11 -0
  59. package/dist/esm/types/Devices/DynamicNode.d.ts.map +1 -0
  60. package/dist/esm/types/Devices/EndpointFor.d.ts +3 -3
  61. package/dist/esm/types/Devices/GenericNode.d.ts +9 -0
  62. package/dist/esm/types/Devices/GenericNode.d.ts.map +1 -0
  63. package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts +10 -10
  64. package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts.map +1 -1
  65. package/dist/esm/types/Devices/Insteon/InsteonDeviceFactory.d.ts +3 -4
  66. package/dist/esm/types/Devices/Insteon/InsteonDeviceFactory.d.ts.map +1 -1
  67. package/dist/esm/types/Devices/Insteon/InsteonMotionSensorDevice.d.ts +3 -3
  68. package/dist/esm/types/Devices/Insteon/InsteonMotionSensorDevice.d.ts.map +1 -1
  69. package/dist/esm/types/Devices/Insteon/InsteonRelayDevice.d.ts.map +1 -1
  70. package/dist/esm/types/Devices/Insteon/InsteonThermostatDevice.d.ts +2 -9
  71. package/dist/esm/types/Devices/Insteon/InsteonThermostatDevice.d.ts.map +1 -1
  72. package/dist/esm/types/Devices/Insteon/index.d.ts +3 -0
  73. package/dist/esm/types/Devices/Insteon/index.d.ts.map +1 -1
  74. package/dist/esm/types/Devices/MapsTo.d.ts +1 -3
  75. package/dist/esm/types/Devices/MapsTo.d.ts.map +1 -1
  76. package/dist/esm/types/Devices/ZWave/ZWaveBaseDevice.d.ts +2 -2
  77. package/dist/esm/types/Devices/ZWave/ZWaveBaseDevice.d.ts.map +1 -1
  78. package/dist/esm/types/Devices/ZWave/ZWaveDimmerSwitchDevice.d.ts +2 -2
  79. package/dist/esm/types/Devices/ZWave/ZWaveDimmerSwitchDevice.d.ts.map +1 -1
  80. package/dist/esm/types/Devices/ZWave/ZWaveLockDevice.d.ts +2 -1
  81. package/dist/esm/types/Devices/ZWave/ZWaveLockDevice.d.ts.map +1 -1
  82. package/dist/esm/types/ISY.d.ts.map +1 -1
  83. package/dist/esm/types/ISYConstants.d.ts +0 -263
  84. package/dist/esm/types/ISYConstants.d.ts.map +1 -1
  85. package/dist/esm/types/ISYNode.d.ts +5 -5
  86. package/dist/esm/types/ISYNode.d.ts.map +1 -1
  87. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts +4 -4
  88. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts.map +1 -1
  89. package/dist/esm/types/Matter/Behaviors/ISYClusterBehavior.d.ts +2 -2
  90. package/dist/esm/types/Matter/Behaviors/ISYClusterBehavior.d.ts.map +1 -1
  91. package/dist/esm/types/Matter/Mappings/Insteon.d.ts.map +1 -1
  92. package/dist/esm/types/Matter/Mappings/MappingRegistry.d.ts +35 -21
  93. package/dist/esm/types/Matter/Mappings/MappingRegistry.d.ts.map +1 -1
  94. package/dist/esm/types/Model/EnumDefinition.d.ts +1 -1
  95. package/dist/esm/types/Utils.d.ts +5 -5
  96. package/dist/esm/types/Utils.d.ts.map +1 -1
  97. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  98. package/package.json +3 -2
  99. package/src/CodeGeneration/EnumFactory.ts +1 -1
  100. package/src/CodeGeneration/NodeClassFactory.ts +7 -4
  101. package/src/Converters.ts +7 -4
  102. package/src/Definitions/Global/Drivers.ts +8 -6
  103. package/src/Devices/DynamicNode.ts +37 -0
  104. package/src/Devices/GenericNode.ts +31 -0
  105. package/src/Devices/Insteon/InsteonDevice.ts +0 -3
  106. package/src/Devices/Insteon/InsteonDeviceFactory.ts +93 -104
  107. package/src/Devices/Insteon/InsteonFanDevice.ts +1 -1
  108. package/src/Devices/Insteon/InsteonLockDevice.ts +5 -5
  109. package/src/Devices/Insteon/InsteonMotionSensorDevice.ts +8 -5
  110. package/src/Devices/Insteon/InsteonRelayDevice.ts +1 -8
  111. package/src/Devices/Insteon/InsteonThermostatDevice.ts +3 -20
  112. package/src/Devices/Insteon/index.ts +6 -0
  113. package/src/Devices/MapsTo.ts +0 -25
  114. package/src/Devices/NCD/Generated/Relay.ts +17 -14
  115. package/src/Devices/NodeFactory.ts +1 -1
  116. package/src/Devices/ZWave/ZWaveBaseDevice.ts +2 -1
  117. package/src/Devices/ZWave/ZWaveDimmerSwitchDevice.ts +2 -1
  118. package/src/Devices/ZWave/ZWaveLockDevice.ts +7 -6
  119. package/src/Devices/ZigBeeLegacy/Generated/Relay.ts +14 -17
  120. package/src/Devices/ZigBeeLegacy/Generated/Thermostat.ts +70 -87
  121. package/src/ISY.ts +3 -4
  122. package/src/ISYConstants.ts +0 -10
  123. package/src/ISYNode.ts +7 -2
  124. package/src/ISYScene.ts +3 -3
  125. package/src/Matter/Behaviors/ISYBridgedDeviceBehavior.ts +12 -30
  126. package/src/Matter/Behaviors/ISYClusterBehavior.ts +8 -7
  127. package/src/Matter/Mappings/Insteon.ts +7 -7
  128. package/src/Matter/Mappings/MappingRegistry.ts +93 -35
  129. package/src/Utils.ts +21 -18
@@ -1,23 +1,7 @@
1
1
  import { Category } from '../../Definitions/Global/Categories.js';
2
2
  import { parseTypeCode } from '../../Utils.js';
3
- import { InsteonDimmableDevice } from './InsteonDimmableDevice.js';
4
- import { InsteonDimmerOutletDevice } from './InsteonDimmerOutletDevice.js';
5
- import { InsteonDimmerSwitchDevice } from './InsteonDimmerSwitchDevice.js';
6
- import { InsteonDoorWindowSensorDevice } from './InsteonDoorWindowSensorDevice.js';
7
- import { InsteonFanDevice, InsteonFanMotorDevice } from './InsteonFanDevice.js';
8
- import { InsteonKeypadButtonDevice } from './InsteonKeypadDevice.js';
9
- import { InsteonKeypadDimmerDevice } from './InsteonKeypadDimmerDevice.js';
10
- import { InsteonKeypadRelayDevice } from './InsteonKeypadRelayDevice.js';
11
- import { InsteonLeakSensorDevice } from './InsteonLeakSensorDevice.js';
12
- import { InsteonMotionSensorDevice } from './InsteonMotionSensorDevice.js';
13
- import { InsteonOnOffOutletDevice } from './InsteonOnOffOutletDevice.js';
14
- import { InsteonRelayDevice } from './InsteonRelayDevice.js';
15
- import { InsteonRelaySwitchDevice } from './InsteonRelaySwitchDevice.js';
3
+ import * as Insteon from './index.js';
16
4
  import { Family } from '../../Definitions/index.js';
17
- import { InsteonBaseDevice } from './InsteonBaseDevice.js';
18
- import { InsteonSmokeSensorDevice } from './InsteonSmokeSensorDevice.js';
19
- import { InsteonThermostatDevice } from './InsteonThermostatDevice.js';
20
- import { InsteonLockDevice } from './InsteonLockDevice.js';
21
5
  export class InsteonDeviceFactory {
22
6
  // public static buildDeviceMap() {
23
7
  // var fams = new Map<Family, FamilyDef<Family>>();
@@ -66,7 +50,7 @@ export class InsteonDeviceFactory {
66
50
  return this.getInsteonDeviceDetails(node);
67
51
  }
68
52
  else {
69
- return { name: "Unsupported Device", class: InsteonBaseDevice, unsupported: true };
53
+ return { name: "Unsupported Device", class: Insteon.Base, unsupported: true };
70
54
  }
71
55
  }
72
56
  static getInsteonDeviceDetails(node) {
@@ -111,8 +95,8 @@ export class InsteonDeviceFactory {
111
95
  }
112
96
  if (deviceDetails) {
113
97
  deviceDetails.version = type.firmwareVersion;
114
- if (deviceDetails.class === InsteonOnOffOutletDevice && subAddress !== '1') {
115
- deviceDetails.class = InsteonRelayDevice;
98
+ if (deviceDetails.class === Insteon.OnOffOutlet && subAddress !== '1') {
99
+ deviceDetails.class = Insteon.RelayLampSwitch.Node;
116
100
  }
117
101
  }
118
102
  if (!deviceDetails) {
@@ -120,7 +104,7 @@ export class InsteonDeviceFactory {
120
104
  { name: 'Unsupported Insteon Device', class: null, unsupported: true };
121
105
  }
122
106
  if (!deviceDetails.class) {
123
- deviceDetails.class = InsteonBaseDevice;
107
+ deviceDetails.class = Insteon.Base;
124
108
  deviceDetails.unsupported = true;
125
109
  }
126
110
  return deviceDetails;
@@ -173,7 +157,7 @@ export class InsteonDeviceFactory {
173
157
  }
174
158
  static getSwitchLightInfo(deviceCode, subAddress) {
175
159
  const c = String.fromCharCode(deviceCode);
176
- let retVal = { name: 'Generic Insteon Relay', class: InsteonRelayDevice };
160
+ let retVal = { name: 'Generic Insteon Relay', class: Insteon.RelayLampSwitch.Node };
177
161
  switch (c) {
178
162
  case String.fromCharCode(6):
179
163
  retVal = { name: 'ApplianceLinc - Outdoor Plugin Module', modelNumber: '2456S3E' };
@@ -185,10 +169,10 @@ export class InsteonDeviceFactory {
185
169
  retVal = { name: 'ApplianceLinc', modelNumber: '2456S3' };
186
170
  break;
187
171
  case '\n':
188
- retVal = { name: 'SwitchLinc Relay', modelNumber: '2476ST', class: InsteonRelaySwitchDevice };
172
+ retVal = { name: 'SwitchLinc Relay', modelNumber: '2476ST', class: Insteon.RelayLampSwitch.Node };
189
173
  break;
190
174
  case String.fromCharCode(11):
191
- retVal.class = InsteonRelaySwitchDevice;
175
+ retVal.class = Insteon.RelayLampSwitch.Node;
192
176
  retVal.name = 'Icon On/Off Switch';
193
177
  retVal.modelNumber = '2876S';
194
178
  break;
@@ -196,26 +180,26 @@ export class InsteonDeviceFactory {
196
180
  retVal = { name: 'Icon Appliance Adapter', modelNumber: '2856S3' };
197
181
  break;
198
182
  case '\r':
199
- retVal = { name: 'ToggleLinc Relay', modelNumber: '2466S', class: InsteonRelaySwitchDevice };
183
+ retVal = { name: 'ToggleLinc Relay', modelNumber: '2466S', class: Insteon.RelayLampSwitch.Node };
200
184
  break;
201
185
  case String.fromCharCode(26):
202
- retVal = { name: 'ToggleLinc Relay', modelNumber: '2466S', class: InsteonRelaySwitchDevice };
186
+ retVal = { name: 'ToggleLinc Relay', modelNumber: '2466S', class: Insteon.RelayLampSwitch.Node };
203
187
  break;
204
188
  case String.fromCharCode(14):
205
189
  break;
206
190
  case ')':
207
- retVal = { name: 'SwitchLinc Relay Timer', modelNumber: '2476ST', class: InsteonRelaySwitchDevice };
191
+ retVal = { name: 'SwitchLinc Relay Timer', modelNumber: '2476ST', class: Insteon.RelayLampSwitch.Node };
208
192
  break;
209
193
  case String.fromCharCode(17):
210
194
  retVal = {
211
- name: 'EZSwitch30', class: InsteonRelaySwitchDevice
195
+ name: 'EZSwitch30', class: Insteon.RelayLampSwitch.Node
212
196
  };
213
197
  break;
214
198
  case String.fromCharCode(15):
215
- retVal = { name: 'KeypadLinc Relay', modelNumber: '2486S/WH6', class: InsteonKeypadRelayDevice };
199
+ retVal = { name: 'KeypadLinc Relay', modelNumber: '2486S/WH6', class: Insteon.KeypadRelay.Node };
216
200
  break;
217
201
  case String.fromCharCode(5):
218
- retVal = { name: 'KeypadLinc Relay (8 buttons)', modelNumber: '2486S/WH8', class: InsteonKeypadRelayDevice };
202
+ retVal = { name: 'KeypadLinc Relay (8 buttons)', modelNumber: '2486S/WH8', class: Insteon.KeypadRelay.Node };
219
203
  break;
220
204
  case String.fromCharCode(16):
221
205
  retVal = { name: 'In-LineLinc Relay', modelNumber: '2475S' };
@@ -227,54 +211,54 @@ export class InsteonDeviceFactory {
227
211
  retVal = { name: 'Icon SwitchLinc Relay for Bell Canada', modelNumber: 'B2475S' };
228
212
  break;
229
213
  case '\b':
230
- retVal = { name: 'OutletLinc', modelNumber: '2473', class: InsteonOnOffOutletDevice };
214
+ retVal = { name: 'OutletLinc', modelNumber: '2473', class: Insteon.OnOffOutlet };
231
215
  break;
232
216
  case String.fromCharCode(18):
233
- retVal = { name: 'Companion Switch', modelNumber: '2474S', class: InsteonRelaySwitchDevice };
217
+ retVal = { name: 'Companion Switch', modelNumber: '2474S', class: Insteon.RelayLampSwitch.Node };
234
218
  break;
235
219
  case String.fromCharCode(21):
236
- retVal = { name: 'SwitchLinc Relay W/ Sense', modelNumber: '2476S', class: InsteonRelaySwitchDevice };
220
+ retVal = { name: 'SwitchLinc Relay W/ Sense', modelNumber: '2476S', class: Insteon.RelayLampSwitch.Node };
237
221
  break;
238
222
  case String.fromCharCode(23):
239
- retVal = { name: 'Icon Relay 3-Pin', modelNumber: '2856S3B', class: InsteonRelaySwitchDevice };
223
+ retVal = { name: 'Icon Relay 3-Pin', modelNumber: '2856S3B', class: Insteon.RelayLampSwitch.Node };
240
224
  break;
241
225
  case String.fromCharCode(22):
242
- retVal = { name: ' Icon Relay Switch', modelNumber: '2876SB', class: InsteonRelaySwitchDevice };
226
+ retVal = { name: ' Icon Relay Switch', modelNumber: '2876SB', class: Insteon.RelayLampSwitch.Node };
243
227
  break;
244
228
  case String.fromCharCode(24):
245
- retVal = { name: 'SwitchLinc Relay 220 V.', modelNumber: '2494S220', class: InsteonRelaySwitchDevice };
229
+ retVal = { name: 'SwitchLinc Relay 220 V.', modelNumber: '2494S220', class: Insteon.RelayLampSwitch.Node };
246
230
  break;
247
231
  case String.fromCharCode(25):
248
- retVal = { name: 'SwitchLinc Relay 220 V. w/Beeper', modelNumber: '2494S220', class: InsteonRelaySwitchDevice };
232
+ retVal = { name: 'SwitchLinc Relay 220 V. w/Beeper', modelNumber: '2494S220', class: Insteon.RelayLampSwitch.Node };
249
233
  break;
250
234
  case String.fromCharCode(28):
251
- retVal = { name: 'SwitchLinc Relay - Remote Control On/Off Switch', modelNumber: '2476S', class: InsteonRelaySwitchDevice };
235
+ retVal = { name: 'SwitchLinc Relay - Remote Control On/Off Switch', modelNumber: '2476S', class: Insteon.RelayLampSwitch.Node };
252
236
  break;
253
237
  case '%':
254
- retVal = { name: 'KeypadLinc Timer Relay (8 buttons)', modelNumber: '2484S/WH8', class: InsteonKeypadRelayDevice };
238
+ retVal = { name: 'KeypadLinc Timer Relay (8 buttons)', modelNumber: '2484S/WH8', class: Insteon.KeypadRelay.Node };
255
239
  break;
256
240
  case ' ':
257
- retVal = { name: 'KeypadLinc Relay', modelNumber: '2486S/WH6-SP', class: InsteonKeypadRelayDevice };
241
+ retVal = { name: 'KeypadLinc Relay', modelNumber: '2486S/WH6-SP', class: Insteon.KeypadRelay.Node };
258
242
  break;
259
243
  case '!':
260
- retVal = { name: 'OutletLinc', modelNumber: '2473-SP', class: InsteonOnOffOutletDevice };
244
+ retVal = { name: 'OutletLinc', modelNumber: '2473-SP', class: Insteon.OnOffOutlet };
261
245
  break;
262
246
  case '#':
263
- retVal = { name: 'SwitchLinc Relay - Remote Control On/Off Switch', modelNumber: '2476S-SP', class: InsteonRelaySwitchDevice };
247
+ retVal = { name: 'SwitchLinc Relay - Remote Control On/Off Switch', modelNumber: '2476S-SP', class: Insteon.RelayLampSwitch.Node };
264
248
  case '"':
265
- retVal = { name: 'In-LineLinc Relay', modelNumber: '2475S-SP', class: InsteonRelaySwitchDevice };
249
+ retVal = { name: 'In-LineLinc Relay', modelNumber: '2475S-SP', class: Insteon.RelayLampSwitch.Node };
266
250
  break;
267
251
  case String.fromCharCode(30):
268
- retVal = { name: 'KeypadLinc Relay', modelNumber: '2487S', class: InsteonKeypadRelayDevice };
252
+ retVal = { name: 'KeypadLinc Relay', modelNumber: '2487S', class: Insteon.KeypadRelay.Node };
269
253
  break;
270
254
  case ',':
271
- retVal = { name: 'Dual Band KeypadLinc Relay', modelNumber: '2487S', class: InsteonKeypadRelayDevice };
255
+ retVal = { name: 'Dual Band KeypadLinc Relay', modelNumber: '2487S', class: Insteon.KeypadRelay.Node };
272
256
  break;
273
257
  case String.fromCharCode(31):
274
- retVal = { name: 'Dual Band InlineLinc On/Off Switch', modelNumber: '2475SDB', class: InsteonRelaySwitchDevice };
258
+ retVal = { name: 'Dual Band InlineLinc On/Off Switch', modelNumber: '2475SDB', class: Insteon.RelayLampSwitch.Node };
275
259
  break;
276
260
  case '*':
277
- retVal = { name: 'Dual Band SwitchLinc On/Off Switch', modelNumber: '2477S', class: InsteonRelaySwitchDevice };
261
+ retVal = { name: 'Dual Band SwitchLinc On/Off Switch', modelNumber: '2477S', class: Insteon.RelayLampSwitch.Node };
278
262
  break;
279
263
  case '/':
280
264
  retVal = { name: 'Micro Module On/Off', modelNumber: '2443-222' };
@@ -289,16 +273,16 @@ export class InsteonDeviceFactory {
289
273
  retVal = { name: 'Micro Module On/Off', modelNumber: '2443-522' };
290
274
  break;
291
275
  case '.':
292
- retVal = { name: 'Din Rail Relay', modelNumber: '2453-222', class: InsteonRelaySwitchDevice };
276
+ retVal = { name: 'Din Rail Relay', modelNumber: '2453-222', class: Insteon.RelayLampSwitch.Node };
293
277
  break;
294
278
  case '3':
295
- retVal = { name: 'Din Rail Relay', modelNumber: '2453-422', class: InsteonRelaySwitchDevice };
279
+ retVal = { name: 'Din Rail Relay', modelNumber: '2453-422', class: Insteon.RelayLampSwitch.Node };
296
280
  break;
297
281
  case '4':
298
- retVal = { name: 'Din Rail Relay', modelNumber: '2453-522', class: InsteonRelaySwitchDevice };
282
+ retVal = { name: 'Din Rail Relay', modelNumber: '2453-522', class: Insteon.RelayLampSwitch.Node };
299
283
  break;
300
284
  case '=':
301
- retVal = { name: 'Din Rail Relay', modelNumber: '2453-522', class: InsteonRelaySwitchDevice };
285
+ retVal = { name: 'Din Rail Relay', modelNumber: '2453-522', class: Insteon.RelayLampSwitch.Node };
302
286
  break;
303
287
  case '7':
304
288
  retVal = { name: 'On/Off Module', modelNumber: '2635-222', };
@@ -321,23 +305,23 @@ export class InsteonDeviceFactory {
321
305
  case '6':
322
306
  retVal = { name: 'Plugin Relay', modelNumber: '2633-522' };
323
307
  }
324
- if (subAddress != '1' && retVal.class === InsteonKeypadRelayDevice) {
325
- retVal.class = InsteonKeypadButtonDevice;
308
+ if (subAddress != '1' && retVal.class === Insteon.KeypadRelay.Node) {
309
+ retVal.class = Insteon.KeypadButton.Node;
326
310
  }
327
311
  if (retVal.class === undefined) {
328
- retVal.class = InsteonRelayDevice;
312
+ retVal.class = Insteon.RelayLampSwitch.Node;
329
313
  }
330
314
  return retVal;
331
315
  }
332
316
  static getDimLightInfo(deviceCode, subAddress, node) {
333
317
  const c = String.fromCharCode(deviceCode);
334
- let retVal = { name: "Generic Insteon Dimmer", class: InsteonDimmableDevice };
318
+ let retVal = { name: "Generic Insteon Dimmer", class: Insteon.DimmerLamp.Node };
335
319
  switch (c) {
336
320
  case String.fromCharCode(0):
337
321
  retVal = { name: 'LampLinc', modelNumber: '2456D3' };
338
322
  break;
339
323
  case String.fromCharCode(1):
340
- retVal = { name: 'SwitchLinc Dimmer', modelNumber: '2476D', class: InsteonDimmerSwitchDevice };
324
+ retVal = { name: 'SwitchLinc Dimmer', modelNumber: '2476D', class: Insteon.DimmerLampSwitch.Node };
341
325
  break;
342
326
  case String.fromCharCode(2):
343
327
  retVal = { name: 'In-LineLinc Dimmable', modelNumber: '2475D' };
@@ -346,7 +330,7 @@ export class InsteonDeviceFactory {
346
330
  retVal = { name: 'Icon Switch Dimmer', modelNumber: '2876D3' };
347
331
  break;
348
332
  case String.fromCharCode(4):
349
- retVal = { name: 'SwitchLinc Dimmer', modelNumber: '2476DH', class: InsteonDimmerSwitchDevice };
333
+ retVal = { name: 'SwitchLinc Dimmer', modelNumber: '2476DH', class: Insteon.DimmerLampSwitch.Node };
350
334
  break;
351
335
  case String.fromCharCode(6):
352
336
  retVal = { name: 'LampLinc 2 Pin', modelNumber: '2456D2' };
@@ -364,7 +348,7 @@ export class InsteonDeviceFactory {
364
348
  retVal = { name: 'SocketLinc', modelNumber: '2454D' };
365
349
  break;
366
350
  case '\f':
367
- retVal = { name: 'KeypadLinc Dimmer 8 Button', modelNumber: '2486DWH8', class: InsteonKeypadDimmerDevice };
351
+ retVal = { name: 'KeypadLinc Dimmer 8 Button', modelNumber: '2486DWH8', class: Insteon.KeypadDimmer.Node };
368
352
  break;
369
353
  case String.fromCharCode(19):
370
354
  retVal = { name: 'Icon SwitchLinc Dimmer for Bell Canada' };
@@ -372,22 +356,22 @@ export class InsteonDeviceFactory {
372
356
  case String.fromCharCode(23):
373
357
  break;
374
358
  case String.fromCharCode(31):
375
- retVal = { name: 'ToggleLinc Dimmer', modelNumber: '2466D', class: InsteonDimmerSwitchDevice };
359
+ retVal = { name: 'ToggleLinc Dimmer', modelNumber: '2466D', class: Insteon.DimmerLampSwitch.Node };
376
360
  break;
377
361
  case String.fromCharCode(24):
378
362
  retVal = { name: 'Companion Dimmer', modelNumber: '2474D' };
379
363
  break;
380
364
  case String.fromCharCode(26):
381
- retVal = { name: 'InlineLinc Dimmer', modelNumber: '2475D', class: InsteonDimmerSwitchDevice };
365
+ retVal = { name: 'InlineLinc Dimmer', modelNumber: '2475D', class: Insteon.DimmerLampSwitch.Node };
382
366
  break;
383
367
  case String.fromCharCode(5):
384
368
  retVal = { name: 'KeypadLinc Countdown Timer', modelNumber: '2484DWH8' };
385
369
  break;
386
370
  case String.fromCharCode(27):
387
- retVal = { name: 'KeypadLinc Dimmer 6 Buttons', modelNumber: '2486D', class: InsteonKeypadDimmerDevice };
371
+ retVal = { name: 'KeypadLinc Dimmer 6 Buttons', modelNumber: '2486D', class: Insteon.KeypadDimmer.Node };
388
372
  break;
389
373
  case String.fromCharCode(28):
390
- retVal = { name: 'KeypadLinc Dimmer 8 Buttons', modelNumber: '2486D', class: InsteonKeypadDimmerDevice };
374
+ retVal = { name: 'KeypadLinc Dimmer 8 Buttons', modelNumber: '2486D', class: Insteon.KeypadDimmer.Node };
391
375
  break;
392
376
  case String.fromCharCode(25):
393
377
  retVal = { name: 'SwitchLinc Dimmer W/Beeper', modelNumber: '2476D' };
@@ -399,31 +383,31 @@ export class InsteonDeviceFactory {
399
383
  retVal = { name: 'Icon Dimmer', modelNumber: '2876DB' };
400
384
  break;
401
385
  case String.fromCharCode(29):
402
- retVal = { name: 'SwitchLinc Dimmer 1000W', modelNumber: '2476DH', class: InsteonDimmerSwitchDevice };
386
+ retVal = { name: 'SwitchLinc Dimmer 1000W', modelNumber: '2476DH', class: Insteon.DimmerLampSwitch.Node };
403
387
  break;
404
388
  case '"':
405
389
  retVal = { name: 'LampLinc 2-Pin Dimmer', modelNumber: '2457D2X' };
406
390
  break;
407
391
  case 'U':
408
- retVal = { name: 'Dual Band Switchlinc Dimmer', modelNumber: '2432-622', class: InsteonDimmerSwitchDevice };
392
+ retVal = { name: 'Dual Band Switchlinc Dimmer', modelNumber: '2432-622', class: Insteon.DimmerLampSwitch.Node };
409
393
  break;
410
394
  case ' ':
411
- retVal = { name: 'Dual Band SwitchLinc Dimmer', modelNumber: '2477D', class: InsteonDimmerSwitchDevice };
395
+ retVal = { name: 'Dual Band SwitchLinc Dimmer', modelNumber: '2477D', class: Insteon.DimmerLampSwitch.Node };
412
396
  break;
413
397
  case '1':
414
- retVal = { name: 'Dual Band SwitchLinc Dimmer (240V)', modelNumber: '2478D', class: InsteonDimmerSwitchDevice };
398
+ retVal = { name: 'Dual Band SwitchLinc Dimmer (240V)', modelNumber: '2478D', class: Insteon.DimmerLampSwitch.Node };
415
399
  break;
416
400
  case '-':
417
- retVal = { name: 'Dual Band SwitchLinc Dimmer', modelNumber: '2477DH', class: InsteonDimmerSwitchDevice };
401
+ retVal = { name: 'Dual Band SwitchLinc Dimmer', modelNumber: '2477DH', class: Insteon.DimmerLampSwitch.Node };
418
402
  break;
419
403
  case '\'':
420
- retVal = { name: 'Dual Band SwitchLinc Dimmer', modelNumber: '2477D-SP', class: InsteonDimmerSwitchDevice };
404
+ retVal = { name: 'Dual Band SwitchLinc Dimmer', modelNumber: '2477D-SP', class: Insteon.DimmerLampSwitch.Node };
421
405
  break;
422
406
  case '+':
423
- retVal = { name: 'Dual Band SwitchLinc Dimmer', modelNumber: '2477DH-SP', class: InsteonDimmerSwitchDevice };
407
+ retVal = { name: 'Dual Band SwitchLinc Dimmer', modelNumber: '2477DH-SP', class: Insteon.DimmerLampSwitch.Node };
424
408
  break;
425
409
  case ')':
426
- retVal = { name: 'KeypadLinc Dimmer 8 Buttons', modelNumber: '2486D-SP', class: InsteonDimmerSwitchDevice };
410
+ retVal = { name: 'KeypadLinc Dimmer 8 Buttons', modelNumber: '2486D-SP', class: Insteon.DimmerLampSwitch.Node };
427
411
  break;
428
412
  case '*':
429
413
  retVal = { name: 'LampLinc 2-Pin Dimmer', modelNumber: '2457D2X-SP' };
@@ -441,16 +425,16 @@ export class InsteonDeviceFactory {
441
425
  retVal = { name: 'Ballast Dimmer', modelNumber: '2446-522' };
442
426
  break;
443
427
  case '.':
444
- retVal = { name: 'FanLinc', modelNumber: '2475F', class: InsteonFanDevice };
428
+ retVal = { name: 'FanLinc', modelNumber: '2475F', class: Insteon.Fan };
445
429
  break;
446
430
  case '!':
447
- retVal = { name: 'Dual Band OutletLinc Dimmer', modelNumber: '2472D', class: InsteonDimmerOutletDevice };
431
+ retVal = { name: 'Dual Band OutletLinc Dimmer', modelNumber: '2472D', class: Insteon.DimmerOutlet };
448
432
  break;
449
433
  case '0':
450
- retVal = { name: 'SwitchLinc Dimmer', modelNumber: '2476D', class: InsteonDimmerSwitchDevice };
434
+ retVal = { name: 'SwitchLinc Dimmer', modelNumber: '2476D', class: Insteon.DimmerLampSwitch.Node };
451
435
  break;
452
436
  case '$':
453
- retVal = { name: 'SwitchLinc Dimmer 2-Wire', modelNumber: '2474DWH', class: InsteonDimmerSwitchDevice };
437
+ retVal = { name: 'SwitchLinc Dimmer 2-Wire', modelNumber: '2474DWH', class: Insteon.DimmerLampSwitch.Node };
454
438
  break;
455
439
  case '2':
456
440
  retVal = { name: 'InLineLinc Dimmer', modelNumber: '2475DA1' };
@@ -486,13 +470,13 @@ export class InsteonDeviceFactory {
486
470
  retVal = { name: 'Din Rail Dimmer', modelNumber: '2452-522' };
487
471
  break;
488
472
  case 'B':
489
- retVal = { name: 'KeypadLinc Dimmer 5 Buttons', modelNumber: '2334-2', class: InsteonKeypadDimmerDevice };
473
+ retVal = { name: 'KeypadLinc Dimmer 5 Buttons', modelNumber: '2334-2', class: Insteon.KeypadDimmer.Node };
490
474
  break;
491
475
  case 'A':
492
- retVal = { name: 'KeypadLinc Dimmer 8 Buttons', modelNumber: '2334-2', class: InsteonKeypadDimmerDevice };
476
+ retVal = { name: 'KeypadLinc Dimmer 8 Buttons', modelNumber: '2334-2', class: Insteon.KeypadDimmer.Node };
493
477
  break;
494
478
  case 'V':
495
- retVal = { name: 'KeypadLinc Dimmer 6 Buttons', modelNumber: '2334-632', class: InsteonKeypadDimmerDevice };
479
+ retVal = { name: 'KeypadLinc Dimmer 6 Buttons', modelNumber: '2334-632', class: Insteon.KeypadDimmer.Node };
496
480
  break;
497
481
  case String.fromCharCode(11):
498
482
  retVal = { name: 'Plugin Dimmer', modelNumber: '2632-422' };
@@ -509,14 +493,14 @@ export class InsteonDeviceFactory {
509
493
  case String.fromCharCode(18):
510
494
  retVal = { name: 'Plugin Dimmer', modelNumber: '2632-522' };
511
495
  }
512
- if (subAddress !== '1' && retVal.class === InsteonKeypadDimmerDevice) {
513
- retVal.class = InsteonKeypadButtonDevice;
496
+ if (subAddress !== '1' && retVal.class === Insteon.KeypadDimmer.Node) {
497
+ retVal.class = Insteon.KeypadButton.Node;
514
498
  }
515
499
  if (node.nodeDefId === 'FanLincMotor') {
516
- retVal.class = InsteonFanMotorDevice;
500
+ retVal.class = Insteon.FanLincMotor.Node;
517
501
  }
518
502
  if (retVal?.class === undefined) {
519
- retVal.class = InsteonDimmableDevice;
503
+ retVal.class = Insteon.DimmerLamp.Node;
520
504
  }
521
505
  return retVal;
522
506
  }
@@ -675,66 +659,66 @@ export class InsteonDeviceFactory {
675
659
  let retVal = null;
676
660
  switch (c) {
677
661
  case String.fromCharCode(1):
678
- retVal = { name: 'INSTEON Motion Sensor', modelNumber: '2842-222', class: InsteonMotionSensorDevice };
662
+ retVal = { name: 'INSTEON Motion Sensor', modelNumber: '2842-222', class: Insteon.MotionSensor };
679
663
  break;
680
664
  case String.fromCharCode(4):
681
- retVal = { name: 'INSTEON Motion Sensor', modelNumber: '2842-422', class: InsteonMotionSensorDevice };
665
+ retVal = { name: 'INSTEON Motion Sensor', modelNumber: '2842-422', class: Insteon.MotionSensor };
682
666
  break;
683
667
  case String.fromCharCode(5):
684
- retVal = { name: 'INSTEON Motion Sensor', modelNumber: '2842-522', class: InsteonMotionSensorDevice };
668
+ retVal = { name: 'INSTEON Motion Sensor', modelNumber: '2842-522', class: Insteon.MotionSensor };
685
669
  break;
686
670
  case String.fromCharCode(3):
687
- retVal = { name: 'INSTEON Motion Sensor', modelNumber: '2420M-SP', class: InsteonMotionSensorDevice };
671
+ retVal = { name: 'INSTEON Motion Sensor', modelNumber: '2420M-SP', class: Insteon.MotionSensor };
688
672
  break;
689
673
  case String.fromCharCode(2):
690
- retVal = { name: 'TriggerLinc', modelNumber: '2421', class: InsteonDoorWindowSensorDevice };
674
+ retVal = { name: 'TriggerLinc', modelNumber: '2421', class: Insteon.DoorWindowSensor };
691
675
  break;
692
676
  case '\t':
693
- retVal = { name: 'Open/Close Sensor', modelNumber: '2843-222', class: InsteonDoorWindowSensorDevice };
677
+ retVal = { name: 'Open/Close Sensor', modelNumber: '2843-222', class: Insteon.DoorWindowSensor };
694
678
  break;
695
679
  case String.fromCharCode(6):
696
- retVal = { name: 'Open/Close Sensor', modelNumber: '2843-422', class: InsteonDoorWindowSensorDevice };
680
+ retVal = { name: 'Open/Close Sensor', modelNumber: '2843-422', class: Insteon.DoorWindowSensor };
697
681
  break;
698
682
  case String.fromCharCode(7):
699
683
  break;
700
684
  case String.fromCharCode(25):
701
- retVal = { name: 'Open/Close Sensor', modelNumber: '2843-522', class: InsteonDoorWindowSensorDevice };
685
+ retVal = { name: 'Open/Close Sensor', modelNumber: '2843-522', class: Insteon.DoorWindowSensor };
702
686
  break;
703
687
  case '\b':
704
- retVal = { name: 'Leak Sensor', modelNumber: '2852-222', class: InsteonLeakSensorDevice };
688
+ retVal = { name: 'Leak Sensor', modelNumber: '2852-222', class: Insteon.LeakSensor };
705
689
  break;
706
690
  case '\r':
707
- retVal = { name: 'Leak Sensor', modelNumber: '2852-422', class: InsteonLeakSensorDevice };
691
+ retVal = { name: 'Leak Sensor', modelNumber: '2852-422', class: Insteon.LeakSensor };
708
692
  break;
709
693
  case String.fromCharCode(14):
710
- retVal = { name: 'Leak Sensor', modelNumber: '2852-522', class: InsteonLeakSensorDevice };
694
+ retVal = { name: 'Leak Sensor', modelNumber: '2852-522', class: Insteon.LeakSensor };
711
695
  break;
712
696
  case String.fromCharCode(26):
713
- retVal = { name: 'Leak Sensor', modelNumber: '2852-522', class: InsteonLeakSensorDevice };
697
+ retVal = { name: 'Leak Sensor', modelNumber: '2852-522', class: Insteon.LeakSensor };
714
698
  break;
715
699
  case '\n':
716
- retVal = { name: 'INSTEON Smoke Sensor', modelNumber: '', class: InsteonSmokeSensorDevice };
700
+ retVal = { name: 'INSTEON Smoke Sensor', modelNumber: '', class: Insteon.SmokeSensor };
717
701
  break;
718
702
  case String.fromCharCode(17):
719
- retVal = { name: 'INSTEON Hidden Door Sensor', modelNumber: '2845-222', class: InsteonDoorWindowSensorDevice };
703
+ retVal = { name: 'INSTEON Hidden Door Sensor', modelNumber: '2845-222', class: Insteon.DoorWindowSensor };
720
704
  break;
721
705
  case String.fromCharCode(20):
722
- retVal = { name: 'INSTEON Hidden Door Sensor', modelNumber: '2845-422', class: InsteonDoorWindowSensorDevice };
706
+ retVal = { name: 'INSTEON Hidden Door Sensor', modelNumber: '2845-422', class: Insteon.DoorWindowSensor };
723
707
  break;
724
708
  case String.fromCharCode(21):
725
709
  break;
726
710
  case String.fromCharCode(27):
727
- retVal = { name: 'INSTEON Hidden Door Sensor', modelNumber: '2845-522', class: InsteonDoorWindowSensorDevice };
711
+ retVal = { name: 'INSTEON Hidden Door Sensor', modelNumber: '2845-522', class: Insteon.DoorWindowSensor };
728
712
  break;
729
713
  case String.fromCharCode(22):
730
- retVal = { name: 'Insteon Motion Sensor II', modelNumber: '2844-222', class: InsteonMotionSensorDevice };
714
+ retVal = { name: 'Insteon Motion Sensor II', modelNumber: '2844-222', class: Insteon.MotionSensor };
731
715
  break;
732
716
  case String.fromCharCode(24):
733
- retVal = { name: 'Insteon Motion Sensor II', modelNumber: '2844-522', class: InsteonMotionSensorDevice };
717
+ retVal = { name: 'Insteon Motion Sensor II', modelNumber: '2844-522', class: Insteon.MotionSensor };
734
718
  }
735
719
  if ((node.nodeDefId === 'BinaryAlarm' || node.nodeDefId === 'BinaryAlarm_ADV') && subAddress !== '1') {
736
720
  if (retVal) {
737
- retVal.class = InsteonBaseDevice;
721
+ retVal.class = Insteon.Base;
738
722
  }
739
723
  }
740
724
  return retVal;
@@ -814,13 +798,13 @@ export class InsteonDeviceFactory {
814
798
  retVal = { name: 'All-In-One INSTEON Thermostat Adapter', modelNumber: '2491T' };
815
799
  }
816
800
  if (retVal?.class === undefined) {
817
- retVal.class = InsteonThermostatDevice;
801
+ retVal.class = Insteon.Thermostat.Node;
818
802
  }
819
803
  return retVal;
820
804
  }
821
805
  static getAccessControlInfo(deviceCode) {
822
806
  const c = String.fromCharCode(deviceCode);
823
- const retVal = { name: '', modelNumber: '', class: InsteonLockDevice };
807
+ const retVal = { name: '', modelNumber: '', class: Insteon.Lock };
824
808
  switch (c) {
825
809
  case String.fromCharCode(6):
826
810
  retVal.name = 'MorningLinc';
@@ -1 +1 @@
1
- {"version":3,"file":"InsteonDeviceFactory.js","sourceRoot":"","sources":["../../../../src/Devices/Insteon/InsteonDeviceFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAKzE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAI3D,MAAM,OAAO,oBAAoB;IAEhC,mCAAmC;IAEnC,oDAAoD;IACpD,yBAAyB;IACzB,gCAAgC;IAChC,0IAA0I;IAC1I,gDAAgD;IAChD,2CAA2C;IAC3C,uGAAuG;IACvG,8BAA8B;IAC9B,kBAAkB;IAClB,yCAAyC;IACzC,yBAAyB;IACzB,gDAAgD;IAChD,4BAA4B;IAC5B,uBAAuB;IACvB,4BAA4B;IAC5B,0BAA0B;IAC1B,kBAAkB;IAClB,uBAAuB;IACvB,kBAAkB;IAClB,qBAAqB;IACrB,oBAAoB;IACpB,oBAAoB;IACpB,WAAW;IACX,6BAA6B;IAC7B,8BAA8B;IAC9B,4CAA4C;IAC5C,qCAAqC;IACrC,SAAS;IACT,kIAAkI;IAClI,QAAQ;IAGR,QAAQ;IACR,kDAAkD;IAClD,oEAAoE;IACpE,QAAQ;IACR,KAAK;IAEL,MAAM;IACN,+DAA+D;IAC/D,IAAI;IAEJ,MAAM,CAAC,gBAAgB,CAAC,IAAc;QACrC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;QAC1C,2DAA2D;QAC3D,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;YACnD,iDAAiD;YACjD,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAE3C,CAAC;aAAM,CAAC;YAAC,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAAC,CAAC;IAC/F,CAAC;IAEM,MAAM,CAAC,uBAAuB,CAAC,IAAc;QACnD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAW,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAEjD,yCAAyC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAEnC,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,IAAI,QAAQ,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;YACtC,aAAa,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACpE,CAAC;aAAM,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC3B,aAAa,GAAG,oBAAoB,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QACpF,CAAC;aAAM,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC3B,aAAa,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACjF,CAAC;aAAM,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC3B,aAAa,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACvE,CAAC;aAAM,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC3B,aAAa,GAAG,oBAAoB,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;QACxE,CAAC;aAAM,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC3B,aAAa,GAAG,oBAAoB,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;QAC3E,CAAC;aAAM,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC3B,aAAa,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACnE,CAAC;aAAM,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;YAC5B,aAAa,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACvE,CAAC;aAAM,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;YAC5B,aAAa,GAAG,oBAAoB,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAC3E,CAAC;aAAM,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC3B,aAAa,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACtE,CAAC;aAAM,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;YAC5B,aAAa,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,aAAa,EAAE,CAAC;YACnB,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;YAC7C,IAAI,aAAa,CAAC,KAAK,KAAK,wBAAwB,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;gBAC5E,aAAa,CAAC,KAAK,GAAG,kBAAkB,CAAC;YAC1C,CAAC;QACF,CAAC;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;YACpB,aAAa;gBACZ,EAAE,IAAI,EAAE,4BAA4B,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC1B,aAAa,CAAC,KAAK,GAAG,iBAAiB,CAAC;YACxC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC;QAClC,CAAC;QACD,OAAO,aAAa,CAAC;QAErB,wDAAwD;IACzD,CAAC;IAEM,MAAM,CAAC,oBAAoB,CAAC,UAAkB;QACpD,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,QAAQ,CAAC,EAAE,CAAC;YACX,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;gBAC5D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;gBACzD,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;gBACjE,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;gBAC9D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;gBAC3D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;gBAC3D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;gBAC9D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;gBAC/D,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;gBAC9B,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG;oBACR,IAAI,EAAE,UAAU;iBAChB,CAAC;gBACF,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;QAC/D,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,wBAAwB,CAAC,UAAkB;QACxD,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,sCAAsC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/F,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAAC,UAAkB,EAAE,UAAkB;QACtE,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAG,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,kBAAkB,EAAkG,CAAC;QAC1K,QAAQ,CAAC,EAAE,CAAC;YACX,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,uCAAuC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;gBACnF,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;gBACvD,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;gBAC1D,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBAC9F,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,KAAK,GAAG,wBAAwB,CAAC;gBACxC,MAAM,CAAC,IAAI,GAAG,oBAAoB,CAAC;gBACnC,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC;gBAC7B,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,wBAAwB,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;gBACnE,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBAC7F,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBAC7F,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,wBAAwB,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBACpG,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG;oBACR,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,wBAAwB;iBACnD,CAAC;gBACF,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBACjG,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,8BAA8B,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBAC7G,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;gBAC7D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,4BAA4B,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;gBACvE,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,uCAAuC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;gBAClF,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBACtF,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBAC7F,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,2BAA2B,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBACtG,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBAC/F,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBAChG,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBACvG,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,kCAAkC,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBAChH,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,iDAAiD,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBAC5H,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,oCAAoC,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBACnH,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBACpG,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBACzF,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,iDAAiD,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;YAChI,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBACjG,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBAC7F,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,4BAA4B,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBACvG,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,oCAAoC,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBACjH,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,oCAAoC,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBAC/G,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAClE,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAClE,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAClE,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAClE,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBAC9F,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBAC9F,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBAC9F,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBAC9F,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,GAAG,CAAC;gBAC7D,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACpE,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC5D,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC3D,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC3D,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC3D,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;QAC7D,CAAC;QACD,IAAI,UAAU,IAAI,GAAG,IAAI,MAAM,CAAC,KAAK,KAAK,wBAAwB,EAAE,CAAC;YACpE,MAAM,CAAC,KAAK,GAAG,yBAAgC,CAAC;QACjD,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAAC,MAAM,CAAC,KAAK,GAAG,kBAAkB,CAAC;QAAC,CAAC;QACtE,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,UAAkB,EAAE,UAAkB,EAAE,IAAc;QACpF,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAG,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,qBAAqB,EAKxE,CAAC;QACJ,QAAQ,CAAC,EAAE,CAAC;YACX,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;gBACrD,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBAC/F,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;gBAChE,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;gBAC/D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBAChG,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;gBAC3D,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;gBAC7D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;gBAChE,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;gBACnE,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;gBACtD,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,4BAA4B,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBAC3G,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,wCAAwC,EAAE,CAAC;gBAC5D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBAC/F,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;gBAC5D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBAC/F,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,4BAA4B,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACzE,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBACzG,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAE3B,MAAM,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBACzG,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,4BAA4B,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;gBACtE,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;gBAC5D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;gBACxD,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBACtG,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;gBACnE,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBAC5G,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBACzG,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,oCAAoC,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBAChH,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBAC1G,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBAC5G,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBAC7G,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBAC5G,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;gBACtE,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAChE,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;gBAC5D,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC7D,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC7D,MAAM;YACP,KAAK,GAAG;gBAEP,MAAM,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;gBAC5E,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBACzG,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBAC/F,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,0BAA0B,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBACxG,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;gBAC/D,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,+BAA+B,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC5E,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,gCAAgC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC7E,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAClE,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAClE,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAClE,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAClE,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC9D,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC9D,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC9D,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC9D,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBAC1G,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBAC1G,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBAC5G,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC5D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC5D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC5D,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC5D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;QAC9D,CAAC;QACD,IAAI,UAAU,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,KAAK,yBAAyB,EAAE,CAAC;YACtE,MAAM,CAAC,KAAK,GAAG,yBAAyB,CAAC;QAC1C,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,KAAK,cAAc,EAAE,CAAC;YACvC,MAAM,CAAC,KAAK,GAAG,qBAAqB,CAAC;QACtC,CAAC;QACD,IAAI,MAAM,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;YAAC,MAAM,CAAC,KAAK,GAAG,qBAAqB,CAAC;QAAC,CAAC;QAC1E,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,UAAkB;QAClD,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,QAAQ,CAAC,EAAE,CAAC;YACX,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;gBACrD,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;gBACrD,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;gBAC1D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;gBACxD,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;gBACpD,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAClE,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,8BAA8B,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC3E,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,8BAA8B,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC3E,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC1E,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACjE,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC1E,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC1E,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC1E,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACjE,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC1E,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC1E,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;QACnE,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,UAAkB;QACjD,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,QAAQ,CAAC,EAAE,CAAC;YACX,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;gBACjD,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,2CAA2C,EAAE,CAAC;gBAC/D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG;oBACR,IAAI,EAAE,0CAA0C;iBAChD,CAAC;gBACF,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG;oBACR,IAAI,EAAE,yCAAyC;iBAC/C,CAAC;gBACF,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG;oBACR,IAAI,EAAE,kBAAkB;iBACxB,CAAC;gBACF,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG;oBACR,IAAI,EAAE,4BAA4B;iBAClC,CAAC;gBACF,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG;oBACR,IAAI,EAAE,iBAAiB;iBACvB,CAAC;gBACF,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG;oBACR,IAAI,EAAE,iBAAiB;iBACvB,CAAC;gBACF,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;gBACxD,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;gBAC/D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACzD,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACzD,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACzD,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACzD,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACrD,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACrD,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACrD,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACrD,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC9D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC9D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC9D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC9D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC3D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACpD,MAAM;YACP,KAAK,GAAG;gBACP,MAAM,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;QACtD,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,MAAM,CAAC,UAAkB,EAAE,UAAkB,EAAE,IAAI;QACjE,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,QAAQ,CAAC,EAAE,CAAC;YACX,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBACtG,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBACtG,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBACtG,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBACtG,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;gBAC5F,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;gBACtG,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;gBACtG,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;gBACtG,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;gBAC1F,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;gBAC1F,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;gBAC1F,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;gBAC1F,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;gBAC5F,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,4BAA4B,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;gBAC/G,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,4BAA4B,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;gBAC/G,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,4BAA4B,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;gBAC/G,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,0BAA0B,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBACzG,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,0BAA0B,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;QAC3G,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,aAAa,IAAI,IAAI,CAAC,SAAS,KAAK,iBAAiB,CAAC,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;YACtG,IAAI,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,KAAK,GAAG,iBAAiB,CAAC;YAClC,CAAC;QACF,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,UAAkB;QACtD,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,QAAQ,CAAC,EAAE,CAAC;YACX,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG;oBACR,IAAI,EAAE,2BAA2B;iBACjC,CAAC;gBACF,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG;oBACR,IAAI,EAAE,2BAA2B;iBACjC,CAAC;gBACF,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG;oBACR,IAAI,EAAE,gCAAgC;iBACtC,CAAC;gBACF,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG;oBACR,IAAI,EAAE,kBAAkB;iBACxB,CAAC;gBACF,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG;oBACR,IAAI,EAAE,kBAAkB;iBACxB,CAAC;gBACF,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,4BAA4B,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;gBACtE,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,4BAA4B,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACzE,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;gBAC/D,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACjE,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACjE,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACjE,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACjE,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,8BAA8B,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC3E,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,yCAAyC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACtF,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,yCAAyC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACtF,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,kCAAkC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC/E,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,6CAA6C,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBAC1F,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,6CAA6C,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;gBAC5F,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;gBACzE,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,IAAI,EAAE,uCAAuC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;QACnF,CAAC;QACD,IAAI,MAAM,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;YAAC,MAAM,CAAC,KAAK,GAAG,uBAAuB,CAAC;QAAC,CAAC;QAC5E,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,UAAkB;QACrD,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;QACvE,QAAQ,CAAC,EAAE,CAAC;YACX,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC;gBAC5B,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAClC,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAAC,UAAkB;QACpD,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,QAAQ,CAAC,EAAE,CAAC;YACX,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG;oBACR,IAAI,EAAE,6BAA6B;iBACnC,CAAC;gBACF,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;gBACxD,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG;oBACR,IAAI,EAAE,gDAAgD,EAAE,WAAW,EAAE,SAAS;iBAC9E,CAAC;gBACF,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG,EAAE,IAAI,EAAE,8CAA8C,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;gBAC1F,MAAM;YACP,KAAK,IAAI;gBACR,MAAM,GAAG;oBACR,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU;iBAC/C,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAAC,UAAkB;QACnD,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,QAAQ,CAAC,EAAE,CAAC;YACX,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACtE,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACtE,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACtE,MAAM;YACP,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;QACxE,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;CACD"}
1
+ {"version":3,"file":"InsteonDeviceFactory.js","sourceRoot":"","sources":["../../../../src/Devices/Insteon/InsteonDeviceFactory.ts"],"names":[],"mappings":"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"}