homebridge-unifi-protect 4.4.2 → 5.0.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 (47) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +8 -12
  3. package/config.schema.json +30 -9
  4. package/dist/index.js +1 -1
  5. package/dist/protect-accessory.js +145 -2
  6. package/dist/protect-accessory.js.map +1 -1
  7. package/dist/protect-camera.js +56 -162
  8. package/dist/protect-camera.js.map +1 -1
  9. package/dist/protect-doorbell.js +14 -26
  10. package/dist/protect-doorbell.js.map +1 -1
  11. package/dist/protect-ffmpeg.js +24 -5
  12. package/dist/protect-ffmpeg.js.map +1 -1
  13. package/dist/protect-light.js +111 -0
  14. package/dist/protect-light.js.map +1 -0
  15. package/dist/protect-liveviews.js +2 -2
  16. package/dist/protect-liveviews.js.map +1 -1
  17. package/dist/protect-mqtt.js +47 -19
  18. package/dist/protect-mqtt.js.map +1 -1
  19. package/dist/protect-nvr-events.js +205 -61
  20. package/dist/protect-nvr-events.js.map +1 -1
  21. package/dist/protect-nvr-systeminfo.js +174 -0
  22. package/dist/protect-nvr-systeminfo.js.map +1 -0
  23. package/dist/protect-nvr.js +167 -61
  24. package/dist/protect-nvr.js.map +1 -1
  25. package/dist/protect-options.js +7 -0
  26. package/dist/protect-options.js.map +1 -0
  27. package/dist/protect-platform.js +9 -3
  28. package/dist/protect-platform.js.map +1 -1
  29. package/dist/protect-rtp.js +1 -1
  30. package/dist/protect-rtp.js.map +1 -1
  31. package/dist/protect-securitysystem.js +3 -4
  32. package/dist/protect-securitysystem.js.map +1 -1
  33. package/dist/protect-sensor.js +357 -0
  34. package/dist/protect-sensor.js.map +1 -0
  35. package/dist/protect-stream.js +76 -23
  36. package/dist/protect-stream.js.map +1 -1
  37. package/dist/protect-viewer.js +170 -0
  38. package/dist/protect-viewer.js.map +1 -0
  39. package/dist/settings.js +6 -2
  40. package/dist/settings.js.map +1 -1
  41. package/package.json +15 -17
  42. package/dist/protect-api-updates.js +0 -166
  43. package/dist/protect-api-updates.js.map +0 -1
  44. package/dist/protect-api.js +0 -555
  45. package/dist/protect-api.js.map +0 -1
  46. package/dist/protect-types.js +0 -3
  47. package/dist/protect-types.js.map +0 -1
@@ -1,14 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ProtectCamera = exports.PROTECT_SWITCH_MOTION_TRIGGER = exports.PROTECT_SWITCH_MOTION_SENSOR = exports.PROTECT_SWITCH_DOORBELL_TRIGGER = exports.PROTECT_CONTACT_MOTION_SMARTDETECT = void 0;
3
+ exports.ProtectCamera = void 0;
4
4
  const protect_accessory_1 = require("./protect-accessory");
5
+ const settings_1 = require("./settings");
5
6
  const protect_stream_1 = require("./protect-stream");
6
- // Manage our contact sensor types.
7
- exports.PROTECT_CONTACT_MOTION_SMARTDETECT = "ContactMotionSmartDetect";
8
- // Manage our switch types.
9
- exports.PROTECT_SWITCH_DOORBELL_TRIGGER = "DoorbellTrigger";
10
- exports.PROTECT_SWITCH_MOTION_SENSOR = "MotionSensorSwitch";
11
- exports.PROTECT_SWITCH_MOTION_TRIGGER = "MotionSensorTrigger";
12
7
  class ProtectCamera extends protect_accessory_1.ProtectAccessory {
13
8
  // Configure a camera accessory for HomeKit.
14
9
  async configureDevice() {
@@ -18,8 +13,8 @@ class ProtectCamera extends protect_accessory_1.ProtectAccessory {
18
13
  this.isVideoConfigured = false;
19
14
  this.rtspQuality = {};
20
15
  this.smartDetectTypes = [];
21
- // Save the camera object before we wipeout the context.
22
- const camera = this.accessory.context.camera;
16
+ // Save the device object before we wipeout the context.
17
+ const device = this.accessory.context.device;
23
18
  // Default motion detection support to on.
24
19
  let detectMotion = true;
25
20
  // Save the motion sensor switch state before we wipeout the context.
@@ -28,11 +23,11 @@ class ProtectCamera extends protect_accessory_1.ProtectAccessory {
28
23
  }
29
24
  // Clean out the context object in case it's been polluted somehow.
30
25
  this.accessory.context = {};
31
- this.accessory.context.camera = camera;
26
+ this.accessory.context.device = device;
32
27
  this.accessory.context.nvr = (_a = this.nvr.nvrApi.bootstrap) === null || _a === void 0 ? void 0 : _a.nvr.mac;
33
28
  this.accessory.context.detectMotion = detectMotion;
34
29
  // If the camera supports it, check to see if we have smart motion events enabled.
35
- if (camera.featureFlags.hasSmartDetect && ((_b = this.nvr) === null || _b === void 0 ? void 0 : _b.optionEnabled(camera, "Motion.SmartDetect", false))) {
30
+ if (device.featureFlags.hasSmartDetect && ((_b = this.nvr) === null || _b === void 0 ? void 0 : _b.optionEnabled(device, "Motion.SmartDetect", false))) {
36
31
  // We deal with smart motion detection options here and save them on the ProtectCamera instance because
37
32
  // we're trying to optimize and reduce the number of feature option lookups we do in realtime, when possible.
38
33
  // Reading a stream of constant events and having to perform a string comparison through a list of options multiple
@@ -40,7 +35,7 @@ class ProtectCamera extends protect_accessory_1.ProtectAccessory {
40
35
  // that lookup once, here, and set the appropriate option booleans for faster lookup and use later in event
41
36
  // detection.
42
37
  // Check for the smart motion detection object types that UniFi Protect supports.
43
- this.smartDetectTypes = camera.featureFlags.smartDetectTypes.filter(x => { var _a; return (_a = this.nvr) === null || _a === void 0 ? void 0 : _a.optionEnabled(camera, "Motion.SmartDetect." + x); });
38
+ this.smartDetectTypes = device.featureFlags.smartDetectTypes.filter(x => { var _a; return (_a = this.nvr) === null || _a === void 0 ? void 0 : _a.optionEnabled(device, "Motion.SmartDetect." + x); });
44
39
  // Inform the user of what smart detection object types we're configured for.
45
40
  this.log.info("%s: Smart motion detection enabled%s.", this.name(), this.smartDetectTypes.length ? ": " + this.smartDetectTypes.join(", ") : "");
46
41
  }
@@ -61,66 +56,15 @@ class ProtectCamera extends protect_accessory_1.ProtectAccessory {
61
56
  this.configureDoorbellTrigger();
62
57
  return true;
63
58
  }
64
- // Configure the camera device information for HomeKit.
65
- configureInfo() {
66
- var _a, _b, _c, _d, _e;
67
- const accessory = this.accessory;
68
- const camera = accessory.context.camera;
69
- const hap = this.hap;
70
- // Update the manufacturer information for this camera.
71
- (_a = accessory
72
- .getService(hap.Service.AccessoryInformation)) === null || _a === void 0 ? void 0 : _a.updateCharacteristic(hap.Characteristic.Manufacturer, "Ubiquiti Networks");
73
- // Update the model information for this camera.
74
- (_b = accessory
75
- .getService(hap.Service.AccessoryInformation)) === null || _b === void 0 ? void 0 : _b.updateCharacteristic(hap.Characteristic.Model, camera.type);
76
- // Update the serial number for this camera.
77
- (_c = accessory
78
- .getService(hap.Service.AccessoryInformation)) === null || _c === void 0 ? void 0 : _c.updateCharacteristic(hap.Characteristic.SerialNumber, camera.mac);
79
- // Update the hardware revision for this camera.
80
- (_d = accessory
81
- .getService(hap.Service.AccessoryInformation)) === null || _d === void 0 ? void 0 : _d.updateCharacteristic(hap.Characteristic.HardwareRevision, camera.hardwareRevision);
82
- // Update the firmware revision for this camera.
83
- (_e = accessory
84
- .getService(hap.Service.AccessoryInformation)) === null || _e === void 0 ? void 0 : _e.updateCharacteristic(hap.Characteristic.FirmwareRevision, camera.firmwareVersion);
85
- return true;
86
- }
87
- // Configure the camera motion sensor for HomeKit.
88
- configureMotionSensor() {
89
- var _a;
90
- const accessory = this.accessory;
91
- const hap = this.hap;
92
- // Find the motion sensor service, if it exists.
93
- let motionService = accessory.getService(hap.Service.MotionSensor);
94
- // Have we disabled motion sensors?
95
- if (!((_a = this.nvr) === null || _a === void 0 ? void 0 : _a.optionEnabled(accessory.context.camera, "Motion.Sensor"))) {
96
- if (motionService) {
97
- accessory.removeService(motionService);
98
- }
99
- this.log.info("%s: Disabling motion sensor.", this.name());
100
- return false;
101
- }
102
- // The motion sensor has already been configured.
103
- if (motionService) {
104
- return true;
105
- }
106
- // We don't have it, add the motion sensor to the camera.
107
- motionService = new hap.Service.MotionSensor(accessory.displayName);
108
- if (!motionService) {
109
- this.log.error("%s: Unable to add motion sensor.", this.name());
110
- return false;
111
- }
112
- accessory.addService(motionService);
113
- return true;
114
- }
115
59
  // Configure discrete smart motion contact sensors for HomeKit.
116
60
  configureMotionSmartSensor() {
117
61
  var _a, _b, _c, _d, _e, _f;
118
- const camera = this.accessory.context.camera;
62
+ const device = this.accessory.context.device;
119
63
  // Check for object-centric contact sensors that are no longer enabled and remove them.
120
- for (const objectService of this.accessory.services.filter(x => { var _a; return (_a = x.subtype) === null || _a === void 0 ? void 0 : _a.startsWith(exports.PROTECT_CONTACT_MOTION_SMARTDETECT + "."); })) {
64
+ for (const objectService of this.accessory.services.filter(x => { var _a; return (_a = x.subtype) === null || _a === void 0 ? void 0 : _a.startsWith(protect_accessory_1.PROTECT_CONTACT_MOTION_SMARTDETECT + "."); })) {
121
65
  // If we have motion sensors as well as object contact sensors enabled, and we have this object type enabled on this camera, we're good here.
122
- if (((_a = this.nvr) === null || _a === void 0 ? void 0 : _a.optionEnabled(camera, "Motion.Sensor")) &&
123
- ((_b = this.nvr) === null || _b === void 0 ? void 0 : _b.optionEnabled(camera, "Motion.SmartDetect.ObjectSensors", false))) {
66
+ if (((_a = this.nvr) === null || _a === void 0 ? void 0 : _a.optionEnabled(device, "Motion.Sensor")) &&
67
+ ((_b = this.nvr) === null || _b === void 0 ? void 0 : _b.optionEnabled(device, "Motion.SmartDetect.ObjectSensors", false))) {
124
68
  continue;
125
69
  }
126
70
  // We don't have this contact sensor enabled, remove it.
@@ -128,20 +72,20 @@ class ProtectCamera extends protect_accessory_1.ProtectAccessory {
128
72
  this.log.info("%s: Disabling smart motion contact sensor: %s.", this.name(), (_c = objectService.subtype) === null || _c === void 0 ? void 0 : _c.slice(((_d = objectService.subtype) === null || _d === void 0 ? void 0 : _d.indexOf(".")) + 1));
129
73
  }
130
74
  // Have we disabled motion sensors? If so, we're done.
131
- if (!((_e = this.nvr) === null || _e === void 0 ? void 0 : _e.optionEnabled(camera, "Motion.Sensor"))) {
75
+ if (!((_e = this.nvr) === null || _e === void 0 ? void 0 : _e.optionEnabled(device, "Motion.Sensor"))) {
132
76
  return false;
133
77
  }
134
78
  // Have we enabled discrete contact sensors for specific object types? If not, we're done here.
135
- if (!((_f = this.nvr) === null || _f === void 0 ? void 0 : _f.optionEnabled(camera, "Motion.SmartDetect.ObjectSensors", false))) {
79
+ if (!((_f = this.nvr) === null || _f === void 0 ? void 0 : _f.optionEnabled(device, "Motion.SmartDetect.ObjectSensors", false))) {
136
80
  return false;
137
81
  }
138
82
  // Add individual contact sensors for each object detection type, if needed.
139
- for (const smartDetectType of camera.featureFlags.smartDetectTypes) {
83
+ for (const smartDetectType of device.featureFlags.smartDetectTypes) {
140
84
  // See if we already have this contact sensor configured.
141
- let contactService = this.accessory.getServiceById(this.hap.Service.ContactSensor, exports.PROTECT_CONTACT_MOTION_SMARTDETECT + "." + smartDetectType);
85
+ let contactService = this.accessory.getServiceById(this.hap.Service.ContactSensor, protect_accessory_1.PROTECT_CONTACT_MOTION_SMARTDETECT + "." + smartDetectType);
142
86
  // If not, let's add it.
143
87
  if (!contactService) {
144
- contactService = new this.hap.Service.ContactSensor(this.accessory.displayName + " " + smartDetectType.charAt(0).toUpperCase() + smartDetectType.slice(1), exports.PROTECT_CONTACT_MOTION_SMARTDETECT + "." + smartDetectType);
88
+ contactService = new this.hap.Service.ContactSensor(this.accessory.displayName + " " + smartDetectType.charAt(0).toUpperCase() + smartDetectType.slice(1), protect_accessory_1.PROTECT_CONTACT_MOTION_SMARTDETECT + "." + smartDetectType);
145
89
  // Something went wrong, we're done here.
146
90
  if (!contactService) {
147
91
  this.log.error("%s: Unable to add smart motion contact sensor for %s detection.", this.name(), smartDetectType);
@@ -153,57 +97,17 @@ class ProtectCamera extends protect_accessory_1.ProtectAccessory {
153
97
  // Initialize the sensor.
154
98
  contactService.updateCharacteristic(this.hap.Characteristic.ContactSensorState, false);
155
99
  }
156
- this.log.info("%s: Smart motion contact sensor%s enabled: %s.", this.name(), camera.featureFlags.smartDetectTypes.length > 1 ? "s" : "", camera.featureFlags.smartDetectTypes.join(", "));
157
- return true;
158
- }
159
- // Configure a switch to easily activate or deactivate motion sensor detection for HomeKit.
160
- configureMotionSwitch() {
161
- var _a, _b, _c;
162
- // Find the switch service, if it exists.
163
- let switchService = this.accessory.getServiceById(this.hap.Service.Switch, exports.PROTECT_SWITCH_MOTION_SENSOR);
164
- // Have we disabled motion sensors or the motion switch? Motion switches are disabled by default.
165
- if (!((_a = this.nvr) === null || _a === void 0 ? void 0 : _a.optionEnabled(this.accessory.context.camera, "Motion.Sensor")) ||
166
- !((_b = this.nvr) === null || _b === void 0 ? void 0 : _b.optionEnabled(this.accessory.context.camera, "Motion.Switch", false))) {
167
- if (switchService) {
168
- this.accessory.removeService(switchService);
169
- }
170
- // If we disable the switch, make sure we fully reset it's state.
171
- this.accessory.context.detectMotion = true;
172
- return false;
173
- }
174
- this.log.info("%s: Enabling motion sensor switch.", this.name());
175
- // Add the switch to the camera, if needed.
176
- if (!switchService) {
177
- switchService = new this.hap.Service.Switch(this.accessory.displayName + " Motion Events", exports.PROTECT_SWITCH_MOTION_SENSOR);
178
- if (!switchService) {
179
- this.log.error("%s: Unable to add motion sensor switch.", this.name());
180
- return false;
181
- }
182
- this.accessory.addService(switchService);
183
- }
184
- // Activate or deactivate motion detection.
185
- (_c = switchService
186
- .getCharacteristic(this.hap.Characteristic.On)) === null || _c === void 0 ? void 0 : _c.on("get" /* GET */, (callback) => {
187
- callback(null, this.accessory.context.detectMotion === true);
188
- }).on("set" /* SET */, (value, callback) => {
189
- if (this.accessory.context.detectMotion !== value) {
190
- this.log.info("%s: Motion detection %s.", this.name(), (value === true) ? "enabled" : "disabled");
191
- }
192
- this.accessory.context.detectMotion = value === true;
193
- callback(null);
194
- });
195
- // Initialize the switch.
196
- switchService.updateCharacteristic(this.hap.Characteristic.On, this.accessory.context.detectMotion);
100
+ this.log.info("%s: Smart motion contact sensor%s enabled: %s.", this.name(), device.featureFlags.smartDetectTypes.length > 1 ? "s" : "", device.featureFlags.smartDetectTypes.join(", "));
197
101
  return true;
198
102
  }
199
103
  // Configure a switch to manually trigger a motion sensor event for HomeKit.
200
104
  configureMotionTrigger() {
201
105
  var _a, _b, _c;
202
106
  // Find the switch service, if it exists.
203
- let triggerService = this.accessory.getServiceById(this.hap.Service.Switch, exports.PROTECT_SWITCH_MOTION_TRIGGER);
107
+ let triggerService = this.accessory.getServiceById(this.hap.Service.Switch, protect_accessory_1.PROTECT_SWITCH_MOTION_TRIGGER);
204
108
  // Motion triggers are disabled by default and primarily exist for automation purposes.
205
- if (!((_a = this.nvr) === null || _a === void 0 ? void 0 : _a.optionEnabled(this.accessory.context.camera, "Motion.Sensor")) ||
206
- !((_b = this.nvr) === null || _b === void 0 ? void 0 : _b.optionEnabled(this.accessory.context.camera, "Motion.Trigger", false))) {
109
+ if (!((_a = this.nvr) === null || _a === void 0 ? void 0 : _a.optionEnabled(this.accessory.context.device, "Motion.Sensor")) ||
110
+ !((_b = this.nvr) === null || _b === void 0 ? void 0 : _b.optionEnabled(this.accessory.context.device, "Motion.Trigger", false))) {
207
111
  if (triggerService) {
208
112
  this.accessory.removeService(triggerService);
209
113
  }
@@ -211,7 +115,7 @@ class ProtectCamera extends protect_accessory_1.ProtectAccessory {
211
115
  }
212
116
  // Add the switch to the camera, if needed.
213
117
  if (!triggerService) {
214
- triggerService = new this.hap.Service.Switch(this.accessory.displayName + " Motion Trigger", exports.PROTECT_SWITCH_MOTION_TRIGGER);
118
+ triggerService = new this.hap.Service.Switch(this.accessory.displayName + " Motion Trigger", protect_accessory_1.PROTECT_SWITCH_MOTION_TRIGGER);
215
119
  if (!triggerService) {
216
120
  this.log.error("%s: Unable to add motion sensor trigger.", this.name());
217
121
  return false;
@@ -219,7 +123,7 @@ class ProtectCamera extends protect_accessory_1.ProtectAccessory {
219
123
  this.accessory.addService(triggerService);
220
124
  }
221
125
  const motionService = this.accessory.getService(this.hap.Service.MotionSensor);
222
- const switchService = this.accessory.getServiceById(this.hap.Service.Switch, exports.PROTECT_SWITCH_MOTION_SENSOR);
126
+ const switchService = this.accessory.getServiceById(this.hap.Service.Switch, protect_accessory_1.PROTECT_SWITCH_MOTION_SENSOR);
223
127
  // Activate or deactivate motion detection.
224
128
  (_c = triggerService
225
129
  .getCharacteristic(this.hap.Characteristic.On)) === null || _c === void 0 ? void 0 : _c.on("get" /* GET */, (callback) => {
@@ -256,13 +160,13 @@ class ProtectCamera extends protect_accessory_1.ProtectAccessory {
256
160
  // Configure a switch to manually trigger a doorbell ring event for HomeKit.
257
161
  configureDoorbellTrigger() {
258
162
  var _a, _b;
259
- const camera = this.accessory.context.camera;
163
+ const camera = this.accessory.context.device;
260
164
  // Find the switch service, if it exists.
261
- let triggerService = this.accessory.getServiceById(this.hap.Service.Switch, exports.PROTECT_SWITCH_DOORBELL_TRIGGER);
165
+ let triggerService = this.accessory.getServiceById(this.hap.Service.Switch, protect_accessory_1.PROTECT_SWITCH_DOORBELL_TRIGGER);
262
166
  // See if we have a doorbell service configured.
263
167
  let doorbellService = this.accessory.getService(this.hap.Service.Doorbell);
264
168
  // Doorbell switches are disabled by default and primarily exist for automation purposes.
265
- if (!((_a = this.nvr) === null || _a === void 0 ? void 0 : _a.optionEnabled(this.accessory.context.camera, "Doorbell.Trigger", false))) {
169
+ if (!((_a = this.nvr) === null || _a === void 0 ? void 0 : _a.optionEnabled(this.accessory.context.device, "Doorbell.Trigger", false))) {
266
170
  if (triggerService) {
267
171
  this.accessory.removeService(triggerService);
268
172
  }
@@ -288,7 +192,7 @@ class ProtectCamera extends protect_accessory_1.ProtectAccessory {
288
192
  }
289
193
  // Add the switch to the camera, if needed.
290
194
  if (!triggerService) {
291
- triggerService = new this.hap.Service.Switch(this.accessory.displayName + " Doorbell Trigger", exports.PROTECT_SWITCH_DOORBELL_TRIGGER);
195
+ triggerService = new this.hap.Service.Switch(this.accessory.displayName + " Doorbell Trigger", protect_accessory_1.PROTECT_SWITCH_DOORBELL_TRIGGER);
292
196
  if (!triggerService) {
293
197
  this.log.error("%s: Unable to add the doorbell trigger.", this.name());
294
198
  return false;
@@ -352,12 +256,12 @@ class ProtectCamera extends protect_accessory_1.ProtectAccessory {
352
256
  configureTwoWayAudio() {
353
257
  var _a, _b;
354
258
  // Identify twoway-capable devices.
355
- if (!this.accessory.context.camera.hasSpeaker) {
259
+ if (!this.accessory.context.device.hasSpeaker) {
356
260
  return this.twoWayAudio = false;
357
261
  }
358
262
  // Enabled by default unless disabled by the user.
359
- return this.twoWayAudio = ((_a = this.nvr) === null || _a === void 0 ? void 0 : _a.optionEnabled(this.accessory.context.camera, "Audio")) &&
360
- ((_b = this.nvr) === null || _b === void 0 ? void 0 : _b.optionEnabled(this.accessory.context.camera, "Audio.TwoWay"));
263
+ return this.twoWayAudio = ((_a = this.nvr) === null || _a === void 0 ? void 0 : _a.optionEnabled(this.accessory.context.device, "Audio")) &&
264
+ ((_b = this.nvr) === null || _b === void 0 ? void 0 : _b.optionEnabled(this.accessory.context.device, "Audio.TwoWay"));
361
265
  }
362
266
  // Find an RTSP configuration for a given target resolution.
363
267
  findRtsp(width, height, camera = null, address = "", rtspEntries = this.rtspEntries) {
@@ -424,23 +328,34 @@ class ProtectCamera extends protect_accessory_1.ProtectAccessory {
424
328
  }
425
329
  // Configure a camera accessory for HomeKit.
426
330
  async configureVideoStream() {
427
- var _a;
331
+ var _a, _b;
428
332
  const bootstrap = this.nvr.nvrApi.bootstrap;
429
- let camera = this.accessory.context.camera;
333
+ let device = this.accessory.context.device;
430
334
  const nvr = this.nvr;
431
335
  const nvrApi = this.nvr.nvrApi;
432
336
  const rtspEntries = [];
433
337
  // No channels exist on this camera or we don't have access to the bootstrap configuration.
434
- if (!(camera === null || camera === void 0 ? void 0 : camera.channels) || !bootstrap) {
338
+ if (!(device === null || device === void 0 ? void 0 : device.channels) || !bootstrap) {
435
339
  return false;
436
340
  }
437
341
  // Enable RTSP on the camera if needed and get the list of RTSP streams we have ultimately configured.
438
- camera = (_a = await nvrApi.enableRtsp(camera)) !== null && _a !== void 0 ? _a : camera;
342
+ device = (_a = await nvrApi.enableRtsp(device)) !== null && _a !== void 0 ? _a : device;
439
343
  // Figure out which camera channels are RTSP-enabled, and user-enabled.
440
- const cameraChannels = camera.channels.filter(x => x.isRtspEnabled && nvr.optionEnabled(camera, "Video.Stream." + x.name));
344
+ const cameraChannels = device.channels.filter(x => x.isRtspEnabled && nvr.optionEnabled(device, "Video.Stream." + x.name));
345
+ // Make sure we've got a HomeKit compatible IDR frame interval. If not, let's take care of that.
346
+ let idrChannels = cameraChannels.filter(x => x.idrInterval !== settings_1.PROTECT_HOMEKIT_IDR_INTERVAL);
347
+ if (idrChannels.length) {
348
+ // Edit the channel map.
349
+ idrChannels = idrChannels.map(x => {
350
+ x.idrInterval = settings_1.PROTECT_HOMEKIT_IDR_INTERVAL;
351
+ return x;
352
+ });
353
+ device = (_b = await nvrApi.updateCamera(device, { channels: idrChannels })) !== null && _b !== void 0 ? _b : device;
354
+ this.accessory.context.device = device;
355
+ }
441
356
  // Set the camera and shapshot URLs.
442
- const cameraUrl = "rtsp://" + bootstrap.nvr.host + ":" + bootstrap.nvr.ports.rtsp.toString() + "/";
443
- this.snapshotUrl = nvrApi.camerasUrl() + "/" + camera.id + "/snapshot";
357
+ const cameraUrl = "rtsp://" + nvr.nvrAddress + ":" + bootstrap.nvr.ports.rtsp.toString() + "/";
358
+ this.snapshotUrl = nvrApi.camerasUrl() + "/" + device.id + "/snapshot";
444
359
  // No RTSP streams are available that meet our criteria - we're done.
445
360
  if (!cameraChannels.length) {
446
361
  this.log.info("%s: No RTSP stream profiles have been configured for this camera. %s", this.name(), "Enable at least one RTSP stream profile in the UniFi Protect webUI to resolve this issue or " +
@@ -486,19 +401,19 @@ class ProtectCamera extends protect_accessory_1.ProtectAccessory {
486
401
  return true;
487
402
  }
488
403
  // Inform users about our RTSP entry mapping, if we're debugging.
489
- if (nvr.optionEnabled(camera, "Debug.Video.Startup", false)) {
404
+ if (nvr.optionEnabled(device, "Debug.Video.Startup", false)) {
490
405
  for (const entry of this.rtspEntries) {
491
406
  this.log.info("%s: Mapping resolution: %s.", this.name(), this.getResolution(entry.resolution) + " => " + entry.name);
492
407
  }
493
408
  }
494
409
  // Check to see if the user has requested a specific stream quality for this camera.
495
- if (nvr.optionEnabled(camera, "Video.Stream.Only.Low", false)) {
410
+ if (nvr.optionEnabled(device, "Video.Stream.Only.Low", false)) {
496
411
  this.rtspQuality.Default = "LOW";
497
412
  }
498
- else if (nvr.optionEnabled(camera, "Video.Stream.Only.Medium", false)) {
413
+ else if (nvr.optionEnabled(device, "Video.Stream.Only.Medium", false)) {
499
414
  this.rtspQuality.Default = "MEDIUM";
500
415
  }
501
- else if (nvr.optionEnabled(camera, "Video.Stream.Only.High", false)) {
416
+ else if (nvr.optionEnabled(device, "Video.Stream.Only.High", false)) {
502
417
  this.rtspQuality.Default = "HIGH";
503
418
  }
504
419
  // Inform the user if we've set a default.
@@ -513,22 +428,11 @@ class ProtectCamera extends protect_accessory_1.ProtectAccessory {
513
428
  }
514
429
  // Configure MQTT capabilities of this camera.
515
430
  configureMqtt() {
516
- var _a, _b, _c;
431
+ var _a, _b;
517
432
  const bootstrap = this.nvr.nvrApi.bootstrap;
518
- const camera = this.accessory.context.camera;
519
- // Trigger a motion event in MQTT, if requested to do so.
520
- (_a = this.nvr.mqtt) === null || _a === void 0 ? void 0 : _a.subscribe(this.accessory, "motion/trigger", (message) => {
521
- const value = message.toString();
522
- // When we get the right message, we trigger the motion event.
523
- if ((value === null || value === void 0 ? void 0 : value.toLowerCase()) !== "true") {
524
- return;
525
- }
526
- // Trigger the motion event.
527
- this.nvr.events.motionEventHandler(this.accessory, Date.now());
528
- this.log.info("%s: Motion event triggered via MQTT.", this.name());
529
- });
433
+ const device = this.accessory.context.device;
530
434
  // Return the RTSP URLs when requested.
531
- (_b = this.nvr.mqtt) === null || _b === void 0 ? void 0 : _b.subscribe(this.accessory, "rtsp/get", (message) => {
435
+ (_a = this.nvr.mqtt) === null || _a === void 0 ? void 0 : _a.subscribe(this.accessory, "rtsp/get", (message) => {
532
436
  var _a;
533
437
  const value = message.toString();
534
438
  // When we get the right message, we trigger the snapshot request.
@@ -537,7 +441,7 @@ class ProtectCamera extends protect_accessory_1.ProtectAccessory {
537
441
  }
538
442
  const urlInfo = {};
539
443
  // Grab all the available RTSP channels.
540
- for (const channel of camera.channels) {
444
+ for (const channel of device.channels) {
541
445
  if (!bootstrap || !channel.isRtspEnabled) {
542
446
  continue;
543
447
  }
@@ -547,7 +451,7 @@ class ProtectCamera extends protect_accessory_1.ProtectAccessory {
547
451
  this.log.info("%s: RTSP information published via MQTT.", this.name());
548
452
  });
549
453
  // Trigger snapshots when requested.
550
- (_c = this.nvr.mqtt) === null || _c === void 0 ? void 0 : _c.subscribe(this.accessory, "snapshot/trigger", (message) => {
454
+ (_b = this.nvr.mqtt) === null || _b === void 0 ? void 0 : _b.subscribe(this.accessory, "snapshot/trigger", (message) => {
551
455
  var _a;
552
456
  const value = message.toString();
553
457
  // When we get the right message, we trigger the snapshot request.
@@ -588,16 +492,6 @@ class ProtectCamera extends protect_accessory_1.ProtectAccessory {
588
492
  getResolution(resolution) {
589
493
  return resolution[0].toString() + "x" + resolution[1].toString() + "@" + resolution[2].toString() + "fps";
590
494
  }
591
- // Utility function for reserved identifiers for switches.
592
- isReservedName(name) {
593
- return name === undefined ? false :
594
- [
595
- exports.PROTECT_CONTACT_MOTION_SMARTDETECT.toUpperCase(),
596
- exports.PROTECT_SWITCH_DOORBELL_TRIGGER.toUpperCase(),
597
- exports.PROTECT_SWITCH_MOTION_SENSOR.toUpperCase(),
598
- exports.PROTECT_SWITCH_MOTION_TRIGGER.toUpperCase()
599
- ].includes(name.toUpperCase());
600
- }
601
495
  }
602
496
  exports.ProtectCamera = ProtectCamera;
603
497
  //# sourceMappingURL=protect-camera.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"protect-camera.js","sourceRoot":"","sources":["../src/protect-camera.ts"],"names":[],"mappings":";;;AAWA,2DAAuD;AAGvD,qDAA4D;AAE5D,mCAAmC;AACtB,QAAA,kCAAkC,GAAG,0BAA0B,CAAC;AAE7E,2BAA2B;AACd,QAAA,+BAA+B,GAAG,iBAAiB,CAAC;AACpD,QAAA,4BAA4B,GAAG,oBAAoB,CAAC;AACpD,QAAA,6BAA6B,GAAG,qBAAqB,CAAC;AASnE,MAAa,aAAc,SAAQ,oCAAgB;IAWjD,4CAA4C;IAClC,KAAK,CAAC,eAAe;;QAE7B,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAE3B,wDAAwD;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAA6B,CAAC;QAEpE,0CAA0C;QAC1C,IAAI,YAAY,GAAG,IAAI,CAAC;QAExB,qEAAqE;QACrE,IAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE;YACpD,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAuB,CAAC;SAC/D;QAED,mEAAmE;QACnE,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QACvC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,GAAG,MAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,0CAAE,GAAG,CAAC,GAAG,CAAC;QAChE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;QAEnD,kFAAkF;QAClF,IAAG,MAAM,CAAC,YAAY,CAAC,cAAc,KAAI,MAAA,IAAI,CAAC,GAAG,0CAAE,aAAa,CAAC,MAAM,EAAE,oBAAoB,EAAE,KAAK,CAAC,CAAA,EAAE;YAErG,uGAAuG;YACvG,6GAA6G;YAC7G,mHAAmH;YACnH,iHAAiH;YACjH,2GAA2G;YAC3G,aAAa;YAEb,iFAAiF;YACjF,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAC,OAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,aAAa,CAAC,MAAM,EAAE,qBAAqB,GAAG,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC;YAErI,6EAA6E;YAC7E,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uCAAuC,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAClJ;QAED,mCAAmC;QACnC,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,2BAA2B;QAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,+BAA+B;QAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9B,0CAA0C;QAC1C,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAElC,wDAAwD;QACxD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAElC,kCAAkC;QAClC,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uDAAuD;IAC/C,aAAa;;QAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,MAA6B,CAAC;QAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAErB,uDAAuD;QACvD,MAAA,SAAS;aACN,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,0CAC3C,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;QAE/E,gDAAgD;QAChD,MAAA,SAAS;aACN,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,0CAC3C,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAEhE,4CAA4C;QAC5C,MAAA,SAAS;aACN,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,0CAC3C,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAEtE,gDAAgD;QAChD,MAAA,SAAS;aACN,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,0CAC3C,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAEvF,gDAAgD;QAChD,MAAA,SAAS;aACN,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,0CAC3C,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QAEtF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kDAAkD;IAC1C,qBAAqB;;QAE3B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAErB,gDAAgD;QAChD,IAAI,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAEnE,mCAAmC;QACnC,IAAG,CAAC,CAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,MAA6B,EAAE,eAAe,CAAC,CAAA,EAAE;YAE7F,IAAG,aAAa,EAAE;gBAChB,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;aACxC;YAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,OAAO,KAAK,CAAC;SACd;QAED,iDAAiD;QACjD,IAAG,aAAa,EAAE;YAChB,OAAO,IAAI,CAAC;SACb;QAED,yDAAyD;QACzD,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAEpE,IAAG,CAAC,aAAa,EAAE;YACjB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kCAAkC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAChE,OAAO,KAAK,CAAC;SACd;QAED,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+DAA+D;IACvD,0BAA0B;;QAEhC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAA6B,CAAC;QAEpE,uFAAuF;QACvF,KAAI,MAAM,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,OAAO,0CAAE,UAAU,CAAC,0CAAkC,GAAG,GAAG,CAAC,CAAA,EAAA,CAAC,EAAE;YAE/H,6IAA6I;YAC7I,IAAG,CAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC;iBACjD,MAAA,IAAI,CAAC,GAAG,0CAAE,aAAa,CAAC,MAAM,EAAE,kCAAkC,EAAE,KAAK,CAAC,CAAA,EAAE;gBAC5E,SAAS;aACV;YAED,wDAAwD;YACxD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gDAAgD,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAA,aAAa,CAAC,OAAO,0CAAE,KAAK,CAAC,CAAA,MAAA,aAAa,CAAC,OAAO,0CAAE,OAAO,CAAC,GAAG,CAAC,IAAG,CAAC,CAAC,CAAC,CAAC;SACrJ;QAED,sDAAsD;QACtD,IAAG,CAAC,CAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA,EAAE;YACpD,OAAO,KAAK,CAAC;SACd;QAED,+FAA+F;QAC/F,IAAG,CAAC,CAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,aAAa,CAAC,MAAM,EAAE,kCAAkC,EAAE,KAAK,CAAC,CAAA,EAAE;YAC9E,OAAO,KAAK,CAAC;SACd;QAED,4EAA4E;QAC5E,KAAI,MAAM,eAAe,IAAI,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE;YAEjE,yDAAyD;YACzD,IAAI,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,0CAAkC,GAAG,GAAG,GAAG,eAAe,CAAC,CAAC;YAE/I,wBAAwB;YACxB,IAAG,CAAC,cAAc,EAAE;gBAElB,cAAc,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EACvJ,0CAAkC,GAAG,GAAG,GAAG,eAAe,CAAC,CAAC;gBAE9D,yCAAyC;gBACzC,IAAG,CAAC,cAAc,EAAE;oBAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iEAAiE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;oBAChH,OAAO,KAAK,CAAC;iBACd;gBAED,iCAAiC;gBACjC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;aAC3C;YAED,yBAAyB;YACzB,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;SACxF;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gDAAgD,EAAE,IAAI,CAAC,IAAI,EAAE,EACzE,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE/G,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2FAA2F;IACnF,qBAAqB;;QAE3B,yCAAyC;QACzC,IAAI,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,oCAA4B,CAAC,CAAC;QAEzG,iGAAiG;QACjG,IAAG,CAAC,CAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAA6B,EAAE,eAAe,CAAC,CAAA;YAChG,CAAC,CAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAA6B,EAAE,eAAe,EAAE,KAAK,CAAC,CAAA,EAAE;YAExG,IAAG,aAAa,EAAE;gBAChB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;aAC7C;YAED,iEAAiE;YACjE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;YAC3C,OAAO,KAAK,CAAC;SACd;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAEjE,2CAA2C;QAC3C,IAAG,CAAC,aAAa,EAAE;YACjB,aAAa,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,gBAAgB,EAAE,oCAA4B,CAAC,CAAC;YAEzH,IAAG,CAAC,aAAa,EAAE;gBACjB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,yCAAyC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBACvE,OAAO,KAAK,CAAC;aACd;YAED,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;SAC1C;QAED,2CAA2C;QAC3C,MAAA,aAAa;aACV,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,0CAC5C,EAAE,kBAA+B,CAAC,QAAmC,EAAE,EAAE;YACzE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC;QAC/D,CAAC,EACA,EAAE,kBAA+B,CAAC,KAA0B,EAAE,QAAmC,EAAE,EAAE;YACpG,IAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,KAAK,KAAK,EAAE;gBAChD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;aACnG;YAED,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,KAAK,IAAI,CAAC;YACrD,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QAEL,yBAAyB;QACzB,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAuB,CAAC,CAAC;QAE/G,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4EAA4E;IACpE,sBAAsB;;QAE5B,yCAAyC;QACzC,IAAI,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,qCAA6B,CAAC,CAAC;QAE3G,uFAAuF;QACvF,IAAG,CAAC,CAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAA6B,EAAE,eAAe,CAAC,CAAA;YAChG,CAAC,CAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAA6B,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAA,EAAE;YAEzG,IAAG,cAAc,EAAE;gBACjB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;aAC9C;YAED,OAAO,KAAK,CAAC;SACd;QAED,2CAA2C;QAC3C,IAAG,CAAC,cAAc,EAAE;YAClB,cAAc,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,iBAAiB,EAAE,qCAA6B,CAAC,CAAC;YAE5H,IAAG,CAAC,cAAc,EAAE;gBAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0CAA0C,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBACxE,OAAO,KAAK,CAAC;aACd;YAED,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;SAC3C;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/E,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,oCAA4B,CAAC,CAAC;QAE3G,2CAA2C;QAC3C,MAAA,cAAc;aACX,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,0CAC5C,EAAE,kBAA+B,CAAC,QAAmC,EAAE,EAAE;YACzE,QAAQ,CAAC,IAAI,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACjG,CAAC,EACA,EAAE,kBAA+B,CAAC,KAA0B,EAAE,QAAmC,EAAE,EAAE;YAEpG,IAAG,KAAK,EAAE;gBAER,8CAA8C;gBAC9C,IAAG,aAAa,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;oBACtF,UAAU,CAAC,GAAG,EAAE;wBACd,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;oBAC1E,CAAC,EAAE,EAAE,CAAC,CAAC;iBAER;qBAAM;oBAEL,4BAA4B;oBAC5B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC/D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;iBAC3D;aAEF;iBAAM;gBAEL,0DAA0D;gBAC1D,IAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,EAAE;oBACjF,UAAU,CAAC,GAAG,EAAE;wBACd,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBACzE,CAAC,EAAE,EAAE,CAAC,CAAC;iBACR;aACF;YAED,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QAEL,yBAAyB;QACzB,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAEvE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gDAAgD,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAE7E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4EAA4E;IACpE,wBAAwB;;QAE9B,MAAM,MAAM,GAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAA8B,CAAC;QAEtE,yCAAyC;QACzC,IAAI,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,uCAA+B,CAAC,CAAC;QAE7G,gDAAgD;QAChD,IAAI,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE3E,yFAAyF;QACzF,IAAG,CAAC,CAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAA6B,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAA,EAAE;YAE5G,IAAG,cAAc,EAAE;gBACjB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;aAC9C;YAED,0GAA0G;YAC1G,4CAA4C;YAC5C,IAAG,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,IAAI,eAAe,EAAE;gBACnD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;aAC/C;YAED,OAAO,KAAK,CAAC;SACd;QAED,qHAAqH;QACrH,uBAAuB;QACvB,IAAG,CAAC,eAAe,EAAE;YAEnB,kCAAkC;YAClC,IAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE;gBACjC,OAAO,KAAK,CAAC;aACd;YAED,iCAAiC;YACjC,IAAG,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE;gBAC5E,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0CAA0C,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBACxE,OAAO,KAAK,CAAC;aACd;SACF;QAED,2CAA2C;QAC3C,IAAG,CAAC,cAAc,EAAE;YAClB,cAAc,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,mBAAmB,EAAE,uCAA+B,CAAC,CAAC;YAEhI,IAAG,CAAC,cAAc,EAAE;gBAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,yCAAyC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBACvE,OAAO,KAAK,CAAC;aACd;YAED,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;SAC3C;QAED,wBAAwB;QACxB,MAAA,cAAc;aACX,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,0CAC5C,EAAE,kBAA+B,CAAC,QAAmC,EAAE,EAAE;YACzE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC,EACA,EAAE,kBAA+B,CAAC,KAA0B,EAAE,QAAmC,EAAE,EAAE;YAEpG,IAAG,KAAK,EAAE;gBAER,4BAA4B;gBAC5B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACjE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;aAElE;iBAAM;gBAEL,mEAAmE;gBACnE,IAAG,IAAI,CAAC,SAAS,EAAE;oBAEjB,UAAU,CAAC,GAAG,EAAE;wBACd,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBACzE,CAAC,EAAE,EAAE,CAAC,CAAC;iBACR;aACF;YAED,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QAEL,yBAAyB;QACzB,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAEvE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2CAA2C,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAExE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8CAA8C;IACpC,sBAAsB;QAE9B,0EAA0E;QAC1E,IAAG,IAAI,CAAC,oBAAoB,EAAE;YAC5B,OAAO,IAAI,CAAC;SACb;QAED,2CAA2C;QAC3C,IAAI,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE3E,iGAAiG;QACjG,kDAAkD;QAClD,IAAG,CAAC,eAAe,EAAE;YACnB,eAAe,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAE5E,IAAG,CAAC,eAAe,EAAE;gBACnB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3D,OAAO,KAAK,CAAC;aACd;YAED,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;SAC5C;QAED,eAAe;aACZ,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,uBAAuB,CAAC;aAClE,EAAE,kBAA+B,CAAC,QAAmC,EAAE,EAAE;YAExE,2FAA2F;YAC3F,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEL,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+CAA+C;IACvC,oBAAoB;;QAE1B,mCAAmC;QACnC,IAAG,CAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAA8B,CAAC,UAAU,EAAE;YACrE,OAAO,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SACjC;QAED,kDAAkD;QAClD,OAAO,IAAI,CAAC,WAAW,GAAG,CAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAA6B,EAAE,OAAO,CAAC;aAC9G,MAAA,IAAI,CAAC,GAAG,0CAAE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAA6B,EAAE,cAAc,CAAC,CAAA,CAAC;IAClG,CAAC;IAED,4DAA4D;IACrD,QAAQ,CAAC,KAAa,EAAE,MAAc,EAAE,SAAqC,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC,WAAW;;QAEpI,8CAA8C;QAC9C,IAAG,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACtC,OAAO,IAAI,CAAC;SACb;QAED,qFAAqF;QACrF,IAAG,MAAM,IAAI,OAAO,EAAE;YAEpB,iEAAiE;YACjE,IAAG,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE;gBAE7B,2EAA2E;gBAC3E,IAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,uBAAuB,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;oBAChF,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;iBACnC;qBAAM,IAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,0BAA0B,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;oBAC1F,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;iBACtC;qBAAM,IAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,wBAAwB,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;oBACxF,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;iBACpC;qBAAM;oBACL,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;iBACpC;aACF;YAED,8DAA8D;YAC9D,IAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE;gBACvC,OAAO,MAAA,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,mCAAI,IAAI,CAAC;aAClG;SACF;QAED,kFAAkF;QAClF,IAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YAC3B,OAAO,MAAA,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,mCAAI,IAAI,CAAC;SACjG;QAED,wGAAwG;QACxG,qCAAqC;QACrC,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;QAErG,IAAG,SAAS,EAAE;YACZ,OAAO,SAAS,CAAC;SAClB;QAED,0GAA0G;QAC1G,8GAA8G;QAC9G,iDAAiD;QACjD,IAAG,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE;YAErC,KAAI,MAAM,KAAK,IAAI,WAAW,EAAE;gBAE9B,+CAA+C;gBAC/C,IAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE;oBAC7B,SAAS;iBACV;gBAED,gCAAgC;gBAChC,OAAO,KAAK,CAAC;aACd;SACF;QAED,4GAA4G;QAC5G,yBAAyB;QACzB,KAAI,MAAM,KAAK,IAAI,WAAW,EAAE;YAC9B,IAAG,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;gBAC/B,OAAO,KAAK,CAAC;aACd;SACF;QAED,yEAAyE;QACzE,OAAO,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,4CAA4C;IACrC,KAAK,CAAC,oBAAoB;;QAE/B,MAAM,SAAS,GAA+B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QACxE,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAA6B,CAAC;QAClE,MAAM,GAAG,GAAe,IAAI,CAAC,GAAG,CAAC;QACjC,MAAM,MAAM,GAAe,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAC3C,MAAM,WAAW,GAAgB,EAAE,CAAC;QAEpC,2FAA2F;QAC3F,IAAG,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAA,IAAI,CAAC,SAAS,EAAE;YAClC,OAAO,KAAK,CAAC;SACd;QAED,sGAAsG;QACtG,MAAM,GAAG,MAAA,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,mCAAI,MAAM,CAAC;QAEnD,uEAAuE;QACvE,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3H,oCAAoC;QACpC,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC;QACnG,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,WAAW,CAAC;QAEvE,qEAAqE;QACrE,IAAG,CAAC,cAAc,CAAC,MAAM,EAAE;YACzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sEAAsE,EAClF,IAAI,CAAC,IAAI,EAAE,EACX,8FAA8F;gBAC9F,qHAAqH,CACtH,CAAC;YAEF,OAAO,KAAK,CAAC;SACd;QAED,yFAAyF;QACzF,KAAI,MAAM,OAAO,IAAI,cAAc,EAAE;YAEnC,gEAAgE;YAChE,IAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE;gBACxH,SAAS;aACV;YAED,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO;gBACjC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG;gBAClG,UAAU,EAAE,CAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAE,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;SACrG;QAED,kDAAkD;QAClD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEpD,2HAA2H;QAC3H,uBAAuB;QACvB,0BAA0B;QAC1B,wBAAwB;QACxB,8BAA8B;QAC9B,KAAI,MAAM,KAAK,IAAI,CAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAE,EAAG;YAE3F,+CAA+C;YAC/C,IAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC5H,SAAS;aACV;YAED,mDAAmD;YACnD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAEvF,IAAG,CAAC,SAAS,EAAE;gBACb,SAAS;aACV;YAED,2DAA2D;YAC3D,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,CAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAE,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;YAEzI,gFAAgF;YAChF,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACrD;QAED,oEAAoE;QACpE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,gDAAgD;QAChD,IAAG,IAAI,CAAC,iBAAiB,EAAE;YACzB,OAAO,IAAI,CAAC;SACb;QAED,iEAAiE;QACjE,IAAG,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,qBAAqB,EAAE,KAAK,CAAC,EAAE;YAC1D,KAAI,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE;gBACnC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;aACvH;SACF;QAED,oFAAoF;QACpF,IAAG,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,uBAAuB,EAAE,KAAK,CAAC,EAAE;YAC5D,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;SAClC;aAAM,IAAG,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,0BAA0B,EAAE,KAAK,CAAC,EAAE;YACtE,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;SACrC;aAAM,IAAG,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,wBAAwB,EAAE,KAAK,CAAC,EAAE;YACpE,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC;SACnC;QAED,0CAA0C;QAC1C,IAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YAC3B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qDAAqD,EAAE,IAAI,CAAC,IAAI,EAAE,EAC9E,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;SACzF;QAED,+EAA+E;QAC/E,IAAI,CAAC,MAAM,GAAG,IAAI,yCAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAE9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8CAA8C;IACpC,aAAa;;QACrB,MAAM,SAAS,GAA+B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QACxE,MAAM,MAAM,GAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAA8B,CAAC;QAEtE,yDAAyD;QACzD,MAAA,IAAI,CAAC,GAAG,CAAC,IAAI,0CAAE,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC,OAAe,EAAE,EAAE;YAC7E,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YAEjC,8DAA8D;YAC9D,IAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,EAAE,MAAK,MAAM,EAAE;gBAClC,OAAO;aACR;YAED,4BAA4B;YAC5B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,uCAAuC;QACvC,MAAA,IAAI,CAAC,GAAG,CAAC,IAAI,0CAAE,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,OAAe,EAAE,EAAE;;YACvE,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YAEjC,kEAAkE;YAClE,IAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,EAAE,MAAK,MAAM,EAAE;gBAClC,OAAO;aACR;YAED,MAAM,OAAO,GAAgC,EAAE,CAAC;YAEhD,wCAAwC;YACxC,KAAI,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE;gBACpC,IAAG,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;oBACvC,SAAS;iBACV;gBAED,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;aAC9H;YAED,MAAA,IAAI,CAAC,GAAG,CAAC,IAAI,0CAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0CAA0C,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,oCAAoC;QACpC,MAAA,IAAI,CAAC,GAAG,CAAC,IAAI,0CAAE,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,EAAE,CAAC,OAAe,EAAE,EAAE;;YAC/E,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YAEjC,kEAAkE;YAClE,IAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,EAAE,MAAK,MAAM,EAAE;gBAClC,OAAO;aACR;YAED,KAAK,CAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,qBAAqB,EAAE,CAAA,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kCAAkC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8CAA8C;IACtC,iBAAiB,CAAC,CAAY,EAAE,CAAY;QAElD,eAAe;QACf,IAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;YACpC,OAAO,CAAC,CAAC;SACV;QAED,IAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;YACpC,OAAO,CAAC,CAAC,CAAC;SACX;QAED,gBAAgB;QAChB,IAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;YACpC,OAAO,CAAC,CAAC;SACV;QAED,IAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;YACpC,OAAO,CAAC,CAAC,CAAC;SACX;QAED,aAAa;QACb,IAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;YACpC,OAAO,CAAC,CAAC;SACV;QAED,IAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;YACpC,OAAO,CAAC,CAAC,CAAC;SACX;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED,iDAAiD;IACzC,aAAa,CAAC,UAAoC;QAExD,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC5G,CAAC;IAED,0DAA0D;IAChD,cAAc,CAAC,IAAwB;QAC/C,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACjC;gBACE,0CAAkC,CAAC,WAAW,EAAE;gBAChD,uCAA+B,CAAC,WAAW,EAAE;gBAC7C,oCAA4B,CAAC,WAAW,EAAE;gBAC1C,qCAA6B,CAAC,WAAW,EAAE;aAC5C,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACnC,CAAC;CACF;AA3wBD,sCA2wBC"}
1
+ {"version":3,"file":"protect-camera.js","sourceRoot":"","sources":["../src/protect-camera.ts"],"names":[],"mappings":"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"}
@@ -12,15 +12,15 @@ class ProtectDoorbell extends protect_camera_1.ProtectCamera {
12
12
  this.isMessagesFromControllerEnabled = true;
13
13
  this.messageSwitches = [];
14
14
  // We only want to deal with cameras with chimes.
15
- if (!((_f = this.accessory.context.camera) === null || _f === void 0 ? void 0 : _f.featureFlags.hasChime)) {
15
+ if (!((_f = this.accessory.context.device) === null || _f === void 0 ? void 0 : _f.featureFlags.hasChime)) {
16
16
  return false;
17
17
  }
18
18
  // The user has disabled the doorbell message functionality.
19
- if (!this.nvr.optionEnabled(this.accessory.context.camera, "Doorbell.Messages")) {
19
+ if (!this.nvr.optionEnabled(this.accessory.context.device, "Doorbell.Messages")) {
20
20
  this.isMessagesEnabled = false;
21
21
  }
22
22
  // The user has disabled the doorbell message functionality.
23
- if (!this.nvr.optionEnabled(this.accessory.context.camera, "Doorbell.Messages.FromDoorbell")) {
23
+ if (!this.nvr.optionEnabled(this.accessory.context.device, "Doorbell.Messages.FromDoorbell")) {
24
24
  this.isMessagesFromControllerEnabled = false;
25
25
  }
26
26
  // Call our parent to setup the camera portion of the doorbell.
@@ -28,25 +28,13 @@ class ProtectDoorbell extends protect_camera_1.ProtectCamera {
28
28
  // Let's setup the doorbell-specific attributes.
29
29
  this.configureVideoDoorbell();
30
30
  this.nvr.doorbellCount++;
31
- // Configure the contact sensor, if we have one.
32
- this.configureContactSensor();
33
31
  // Now, make the doorbell LCD message functionality available.
34
32
  return this.configureDoorbellLcdSwitch();
35
33
  }
36
- // Deprecated - remove contact sensor service, if it was previously configured.
37
- configureContactSensor() {
38
- // Find the contact sensor service, if it exists.
39
- const contactService = this.accessory.getService(this.hap.Service.ContactSensor);
40
- // Contact sensors are now deprecated. Remove them if found.
41
- if (contactService) {
42
- this.accessory.removeService(contactService);
43
- }
44
- return false;
45
- }
46
34
  // Configure our access to the Doorbell LCD screen.
47
35
  configureDoorbellLcdSwitch() {
48
36
  var _a, _b, _c;
49
- const camera = (_a = this.accessory) === null || _a === void 0 ? void 0 : _a.context.camera;
37
+ const camera = (_a = this.accessory) === null || _a === void 0 ? void 0 : _a.context.device;
50
38
  // Make sure we're configuring a camera device with an LCD screen (aka a doorbell).
51
39
  if (((camera === null || camera === void 0 ? void 0 : camera.modelKey) !== "camera") || !(camera === null || camera === void 0 ? void 0 : camera.featureFlags.hasLcdScreen)) {
52
40
  return false;
@@ -106,10 +94,10 @@ class ProtectDoorbell extends protect_camera_1.ProtectCamera {
106
94
  if ((value === null || value === void 0 ? void 0 : value.toLowerCase()) !== "true") {
107
95
  return;
108
96
  }
109
- const camera = this.accessory.context.camera;
110
- const doorbellMessage = (_b = (_a = camera.lcdMessage) === null || _a === void 0 ? void 0 : _a.text) !== null && _b !== void 0 ? _b : "";
111
- const doorbellDuration = (("resetAt" in camera.lcdMessage) && camera.lcdMessage.resetAt !== null) ?
112
- Math.round((camera.lcdMessage.resetAt - Date.now()) / 1000) : 0;
97
+ const device = this.accessory.context.device;
98
+ const doorbellMessage = (_b = (_a = device.lcdMessage) === null || _a === void 0 ? void 0 : _a.text) !== null && _b !== void 0 ? _b : "";
99
+ const doorbellDuration = (("resetAt" in device.lcdMessage) && device.lcdMessage.resetAt !== null) ?
100
+ Math.round((device.lcdMessage.resetAt - Date.now()) / 1000) : 0;
113
101
  // Publish the current message.
114
102
  (_c = this.nvr.mqtt) === null || _c === void 0 ? void 0 : _c.publish(this.accessory, "message", JSON.stringify({ duration: doorbellDuration, message: doorbellMessage }));
115
103
  this.log.info("%s: Doorbell message information published via MQTT.", this.name());
@@ -172,7 +160,7 @@ class ProtectDoorbell extends protect_camera_1.ProtectCamera {
172
160
  }
173
161
  // Get the list of messages from the doorbell and the user configuration.
174
162
  getMessages() {
175
- var _a, _b, _c, _d, _e, _f;
163
+ var _a, _b, _c, _d;
176
164
  // First, we get our builtin and configured messages from the controller.
177
165
  const doorbellSettings = (_d = (_c = (_b = (_a = this.nvr) === null || _a === void 0 ? void 0 : _a.nvrApi) === null || _b === void 0 ? void 0 : _b.bootstrap) === null || _c === void 0 ? void 0 : _c.nvr) === null || _d === void 0 ? void 0 : _d.doorbellSettings;
178
166
  // Something's not right with the configuration...we're done.
@@ -182,7 +170,7 @@ class ProtectDoorbell extends protect_camera_1.ProtectCamera {
182
170
  let doorbellMessages = [];
183
171
  // Grab any messages that the user has configured.
184
172
  if (this.nvr.config.doorbellMessages) {
185
- for (const configEntry of (_f = (_e = this.nvr) === null || _e === void 0 ? void 0 : _e.config) === null || _f === void 0 ? void 0 : _f.doorbellMessages) {
173
+ for (const configEntry of this.nvr.config.doorbellMessages) {
186
174
  let duration = this.defaultDuration;
187
175
  // If we've set a duration, let's honor it. If it's less than zero, use the default duration.
188
176
  if (("duration" in configEntry) && !isNaN(configEntry.duration) && (configEntry.duration >= 0)) {
@@ -297,13 +285,13 @@ class ProtectDoorbell extends protect_camera_1.ProtectCamera {
297
285
  payload.resetAt = 0;
298
286
  }
299
287
  // Push the update to the doorbell.
300
- const newCamera = await this.nvr.nvrApi.updateCamera(this.accessory.context.camera, { lcdMessage: payload });
301
- if (!newCamera) {
288
+ const newDevice = await this.nvr.nvrApi.updateCamera(this.accessory.context.device, { lcdMessage: payload });
289
+ if (!newDevice) {
302
290
  this.log.error("%s: Unable to set doorbell message. Please ensure this username has the Administrator role in UniFi Protect.", this.name());
303
291
  return false;
304
292
  }
305
- // Set the context to our updated camera configuration.
306
- this.accessory.context.camera = newCamera;
293
+ // Set the context to our updated device configuration.
294
+ this.accessory.context.device = newDevice;
307
295
  return true;
308
296
  }
309
297
  }