@zwave-js/cc 15.22.5 → 15.23.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 (241) hide show
  1. package/build/cjs/cc/AlarmSensorCC._validateArgs.d.ts +1 -1
  2. package/build/cjs/cc/AssociationCC._validateArgs.d.ts +8 -8
  3. package/build/cjs/cc/AssociationGroupInfoCC._validateArgs.d.ts +6 -6
  4. package/build/cjs/cc/BarrierOperatorCC._validateArgs.d.ts +4 -4
  5. package/build/cjs/cc/BasicCC._validateArgs.d.ts +1 -1
  6. package/build/cjs/cc/BasicWindowCoveringCC._validateArgs.d.ts +2 -2
  7. package/build/cjs/cc/BinarySensorCC._validateArgs.d.ts +3 -3
  8. package/build/cjs/cc/BinarySwitchCC._validateArgs.d.ts +1 -1
  9. package/build/cjs/cc/CentralSceneCC._validateArgs.d.ts +1 -1
  10. package/build/cjs/cc/ClimateControlScheduleCC._validateArgs.d.ts +3 -3
  11. package/build/cjs/cc/ClockCC._validateArgs.d.ts +1 -1
  12. package/build/cjs/cc/ColorSwitchCC._validateArgs.d.ts +4 -4
  13. package/build/cjs/cc/ConfigurationCC._validateArgs.d.ts +9 -9
  14. package/build/cjs/cc/DoorLockCC._validateArgs.d.ts +2 -2
  15. package/build/cjs/cc/DoorLockCC.d.ts +7 -3
  16. package/build/cjs/cc/DoorLockCC.js +164 -15
  17. package/build/cjs/cc/DoorLockCC.js.map +2 -2
  18. package/build/cjs/cc/DoorLockLoggingCC._validateArgs.d.ts +1 -1
  19. package/build/cjs/cc/EnergyProductionCC._validateArgs.d.ts +1 -1
  20. package/build/cjs/cc/EntryControlCC._validateArgs.d.ts +1 -1
  21. package/build/cjs/cc/FirmwareUpdateMetaDataCC._validateArgs.d.ts +6 -6
  22. package/build/cjs/cc/HumidityControlModeCC._validateArgs.d.ts +1 -1
  23. package/build/cjs/cc/HumidityControlSetpointCC._validateArgs.d.ts +4 -4
  24. package/build/cjs/cc/IndicatorCC._validateArgs.d.ts +9 -9
  25. package/build/cjs/cc/IrrigationCC._validateArgs.d.ts +10 -10
  26. package/build/cjs/cc/LanguageCC._validateArgs.d.ts +1 -1
  27. package/build/cjs/cc/LockCC._validateArgs.d.ts +1 -1
  28. package/build/cjs/cc/LockCC.d.ts +2 -1
  29. package/build/cjs/cc/LockCC.js +11 -2
  30. package/build/cjs/cc/LockCC.js.map +2 -2
  31. package/build/cjs/cc/ManufacturerProprietaryCC._validateArgs.d.ts +2 -2
  32. package/build/cjs/cc/ManufacturerSpecificCC._validateArgs.d.ts +2 -2
  33. package/build/cjs/cc/MeterCC._validateArgs.d.ts +5 -5
  34. package/build/cjs/cc/MultiChannelAssociationCC._validateArgs.d.ts +5 -5
  35. package/build/cjs/cc/MultiChannelCC._validateArgs.d.ts +4 -4
  36. package/build/cjs/cc/MultiCommandCC._validateArgs.d.ts +1 -1
  37. package/build/cjs/cc/MultilevelSensorCC._validateArgs.d.ts +3 -3
  38. package/build/cjs/cc/MultilevelSwitchCC._validateArgs.d.ts +2 -2
  39. package/build/cjs/cc/NodeNamingCC._validateArgs.d.ts +2 -2
  40. package/build/cjs/cc/NotificationCC._validateArgs.d.ts +4 -4
  41. package/build/cjs/cc/PowerlevelCC._validateArgs.d.ts +4 -4
  42. package/build/cjs/cc/ProtectionCC._validateArgs.d.ts +3 -3
  43. package/build/cjs/cc/SceneActivationCC._validateArgs.d.ts +1 -1
  44. package/build/cjs/cc/SceneActuatorConfigurationCC._validateArgs.d.ts +2 -2
  45. package/build/cjs/cc/SceneControllerConfigurationCC._validateArgs.d.ts +3 -3
  46. package/build/cjs/cc/ScheduleEntryLockCC._validateArgs.d.ts +8 -8
  47. package/build/cjs/cc/SoundSwitchCC._validateArgs.d.ts +3 -3
  48. package/build/cjs/cc/ThermostatFanModeCC._validateArgs.d.ts +1 -1
  49. package/build/cjs/cc/ThermostatModeCC._validateArgs.d.ts +1 -1
  50. package/build/cjs/cc/ThermostatOperatingStateCC._validateArgs.d.ts +2 -0
  51. package/build/cjs/cc/ThermostatOperatingStateCC._validateArgs.js +51 -0
  52. package/build/cjs/cc/ThermostatOperatingStateCC._validateArgs.js.map +7 -0
  53. package/build/cjs/cc/ThermostatOperatingStateCC.d.ts +43 -2
  54. package/build/cjs/cc/ThermostatOperatingStateCC.js +272 -1
  55. package/build/cjs/cc/ThermostatOperatingStateCC.js.map +2 -2
  56. package/build/cjs/cc/ThermostatSetbackCC._validateArgs.d.ts +1 -1
  57. package/build/cjs/cc/ThermostatSetpointCC._validateArgs.d.ts +3 -3
  58. package/build/cjs/cc/TimeCC._validateArgs.d.ts +4 -4
  59. package/build/cjs/cc/TimeParametersCC._validateArgs.d.ts +1 -1
  60. package/build/cjs/cc/UserCodeCC._validateArgs.d.ts +6 -6
  61. package/build/cjs/cc/UserCredentialCC._validateArgs.d.ts +24 -0
  62. package/build/cjs/cc/UserCredentialCC._validateArgs.js +338 -0
  63. package/build/cjs/cc/UserCredentialCC._validateArgs.js.map +7 -0
  64. package/build/cjs/cc/UserCredentialCC.d.ts +452 -0
  65. package/build/cjs/cc/UserCredentialCC.js +2855 -0
  66. package/build/cjs/cc/UserCredentialCC.js.map +7 -0
  67. package/build/cjs/cc/VersionCC._validateArgs.d.ts +3 -3
  68. package/build/cjs/cc/WakeUpCC._validateArgs.d.ts +1 -1
  69. package/build/cjs/cc/WindowCoveringCC._validateArgs.d.ts +4 -4
  70. package/build/cjs/cc/ZWavePlusCC._validateArgs.d.ts +1 -1
  71. package/build/cjs/cc/_CCValues.generated.d.ts +4907 -3369
  72. package/build/cjs/cc/_CCValues.generated.js +828 -0
  73. package/build/cjs/cc/_CCValues.generated.js.map +2 -2
  74. package/build/cjs/cc/index.d.ts +6 -3
  75. package/build/cjs/cc/index.js +106 -0
  76. package/build/cjs/cc/index.js.map +2 -2
  77. package/build/cjs/cc/manufacturerProprietary/FibaroCC._validateArgs.d.ts +2 -2
  78. package/build/cjs/lib/CommandClass.js +0 -1
  79. package/build/cjs/lib/CommandClass.js.map +1 -1
  80. package/build/cjs/lib/Values.d.ts +5 -5
  81. package/build/cjs/lib/Values.js.map +1 -1
  82. package/build/cjs/lib/_CCAPI.generated.d.ts +2 -0
  83. package/build/cjs/lib/_CCAPI.generated.js.map +1 -1
  84. package/build/cjs/lib/_Types.d.ts +153 -1
  85. package/build/cjs/lib/_Types.js +163 -0
  86. package/build/cjs/lib/_Types.js.map +3 -3
  87. package/build/esm/cc/AlarmSensorCC._validateArgs.d.ts +1 -1
  88. package/build/esm/cc/AlarmSensorCC._validateArgs.d.ts.map +1 -1
  89. package/build/esm/cc/AssociationCC._validateArgs.d.ts +8 -8
  90. package/build/esm/cc/AssociationCC._validateArgs.d.ts.map +1 -1
  91. package/build/esm/cc/AssociationGroupInfoCC._validateArgs.d.ts +6 -6
  92. package/build/esm/cc/AssociationGroupInfoCC._validateArgs.d.ts.map +1 -1
  93. package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
  94. package/build/esm/cc/BarrierOperatorCC._validateArgs.d.ts +4 -4
  95. package/build/esm/cc/BarrierOperatorCC._validateArgs.d.ts.map +1 -1
  96. package/build/esm/cc/BasicCC._validateArgs.d.ts +1 -1
  97. package/build/esm/cc/BasicCC._validateArgs.d.ts.map +1 -1
  98. package/build/esm/cc/BasicWindowCoveringCC._validateArgs.d.ts +2 -2
  99. package/build/esm/cc/BasicWindowCoveringCC._validateArgs.d.ts.map +1 -1
  100. package/build/esm/cc/BinarySensorCC._validateArgs.d.ts +3 -3
  101. package/build/esm/cc/BinarySensorCC._validateArgs.d.ts.map +1 -1
  102. package/build/esm/cc/BinarySwitchCC._validateArgs.d.ts +1 -1
  103. package/build/esm/cc/BinarySwitchCC._validateArgs.d.ts.map +1 -1
  104. package/build/esm/cc/CentralSceneCC._validateArgs.d.ts +1 -1
  105. package/build/esm/cc/CentralSceneCC._validateArgs.d.ts.map +1 -1
  106. package/build/esm/cc/ClimateControlScheduleCC._validateArgs.d.ts +3 -3
  107. package/build/esm/cc/ClimateControlScheduleCC._validateArgs.d.ts.map +1 -1
  108. package/build/esm/cc/ClockCC._validateArgs.d.ts +1 -1
  109. package/build/esm/cc/ClockCC._validateArgs.d.ts.map +1 -1
  110. package/build/esm/cc/ColorSwitchCC._validateArgs.d.ts +4 -4
  111. package/build/esm/cc/ColorSwitchCC._validateArgs.d.ts.map +1 -1
  112. package/build/esm/cc/ConfigurationCC._validateArgs.d.ts +9 -9
  113. package/build/esm/cc/ConfigurationCC._validateArgs.d.ts.map +1 -1
  114. package/build/esm/cc/DoorLockCC._validateArgs.d.ts +2 -2
  115. package/build/esm/cc/DoorLockCC._validateArgs.d.ts.map +1 -1
  116. package/build/esm/cc/DoorLockCC.d.ts +7 -3
  117. package/build/esm/cc/DoorLockCC.d.ts.map +1 -1
  118. package/build/esm/cc/DoorLockCC.js +192 -27
  119. package/build/esm/cc/DoorLockCC.js.map +1 -1
  120. package/build/esm/cc/DoorLockLoggingCC._validateArgs.d.ts +1 -1
  121. package/build/esm/cc/DoorLockLoggingCC._validateArgs.d.ts.map +1 -1
  122. package/build/esm/cc/EnergyProductionCC._validateArgs.d.ts +1 -1
  123. package/build/esm/cc/EnergyProductionCC._validateArgs.d.ts.map +1 -1
  124. package/build/esm/cc/EntryControlCC._validateArgs.d.ts +1 -1
  125. package/build/esm/cc/EntryControlCC._validateArgs.d.ts.map +1 -1
  126. package/build/esm/cc/FirmwareUpdateMetaDataCC._validateArgs.d.ts +6 -6
  127. package/build/esm/cc/FirmwareUpdateMetaDataCC._validateArgs.d.ts.map +1 -1
  128. package/build/esm/cc/HumidityControlModeCC._validateArgs.d.ts +1 -1
  129. package/build/esm/cc/HumidityControlModeCC._validateArgs.d.ts.map +1 -1
  130. package/build/esm/cc/HumidityControlSetpointCC._validateArgs.d.ts +4 -4
  131. package/build/esm/cc/HumidityControlSetpointCC._validateArgs.d.ts.map +1 -1
  132. package/build/esm/cc/IndicatorCC._validateArgs.d.ts +9 -9
  133. package/build/esm/cc/IndicatorCC._validateArgs.d.ts.map +1 -1
  134. package/build/esm/cc/IrrigationCC._validateArgs.d.ts +10 -10
  135. package/build/esm/cc/IrrigationCC._validateArgs.d.ts.map +1 -1
  136. package/build/esm/cc/LanguageCC._validateArgs.d.ts +1 -1
  137. package/build/esm/cc/LanguageCC._validateArgs.d.ts.map +1 -1
  138. package/build/esm/cc/LockCC._validateArgs.d.ts +1 -1
  139. package/build/esm/cc/LockCC._validateArgs.d.ts.map +1 -1
  140. package/build/esm/cc/LockCC.d.ts +2 -1
  141. package/build/esm/cc/LockCC.d.ts.map +1 -1
  142. package/build/esm/cc/LockCC.js +12 -7
  143. package/build/esm/cc/LockCC.js.map +1 -1
  144. package/build/esm/cc/ManufacturerProprietaryCC._validateArgs.d.ts +2 -2
  145. package/build/esm/cc/ManufacturerProprietaryCC._validateArgs.d.ts.map +1 -1
  146. package/build/esm/cc/ManufacturerSpecificCC._validateArgs.d.ts +2 -2
  147. package/build/esm/cc/ManufacturerSpecificCC._validateArgs.d.ts.map +1 -1
  148. package/build/esm/cc/MeterCC._validateArgs.d.ts +5 -5
  149. package/build/esm/cc/MeterCC._validateArgs.d.ts.map +1 -1
  150. package/build/esm/cc/MultiChannelAssociationCC._validateArgs.d.ts +5 -5
  151. package/build/esm/cc/MultiChannelAssociationCC._validateArgs.d.ts.map +1 -1
  152. package/build/esm/cc/MultiChannelCC._validateArgs.d.ts +4 -4
  153. package/build/esm/cc/MultiChannelCC._validateArgs.d.ts.map +1 -1
  154. package/build/esm/cc/MultiCommandCC._validateArgs.d.ts +1 -1
  155. package/build/esm/cc/MultiCommandCC._validateArgs.d.ts.map +1 -1
  156. package/build/esm/cc/MultilevelSensorCC._validateArgs.d.ts +3 -3
  157. package/build/esm/cc/MultilevelSensorCC._validateArgs.d.ts.map +1 -1
  158. package/build/esm/cc/MultilevelSwitchCC._validateArgs.d.ts +2 -2
  159. package/build/esm/cc/MultilevelSwitchCC._validateArgs.d.ts.map +1 -1
  160. package/build/esm/cc/NodeNamingCC._validateArgs.d.ts +2 -2
  161. package/build/esm/cc/NodeNamingCC._validateArgs.d.ts.map +1 -1
  162. package/build/esm/cc/NotificationCC._validateArgs.d.ts +4 -4
  163. package/build/esm/cc/NotificationCC._validateArgs.d.ts.map +1 -1
  164. package/build/esm/cc/PowerlevelCC._validateArgs.d.ts +4 -4
  165. package/build/esm/cc/PowerlevelCC._validateArgs.d.ts.map +1 -1
  166. package/build/esm/cc/ProtectionCC._validateArgs.d.ts +3 -3
  167. package/build/esm/cc/ProtectionCC._validateArgs.d.ts.map +1 -1
  168. package/build/esm/cc/SceneActivationCC._validateArgs.d.ts +1 -1
  169. package/build/esm/cc/SceneActivationCC._validateArgs.d.ts.map +1 -1
  170. package/build/esm/cc/SceneActuatorConfigurationCC._validateArgs.d.ts +2 -2
  171. package/build/esm/cc/SceneActuatorConfigurationCC._validateArgs.d.ts.map +1 -1
  172. package/build/esm/cc/SceneControllerConfigurationCC._validateArgs.d.ts +3 -3
  173. package/build/esm/cc/SceneControllerConfigurationCC._validateArgs.d.ts.map +1 -1
  174. package/build/esm/cc/ScheduleEntryLockCC._validateArgs.d.ts +8 -8
  175. package/build/esm/cc/ScheduleEntryLockCC._validateArgs.d.ts.map +1 -1
  176. package/build/esm/cc/SoundSwitchCC._validateArgs.d.ts +3 -3
  177. package/build/esm/cc/SoundSwitchCC._validateArgs.d.ts.map +1 -1
  178. package/build/esm/cc/ThermostatFanModeCC._validateArgs.d.ts +1 -1
  179. package/build/esm/cc/ThermostatFanModeCC._validateArgs.d.ts.map +1 -1
  180. package/build/esm/cc/ThermostatModeCC._validateArgs.d.ts +1 -1
  181. package/build/esm/cc/ThermostatModeCC._validateArgs.d.ts.map +1 -1
  182. package/build/esm/cc/ThermostatOperatingStateCC._validateArgs.d.ts +2 -0
  183. package/build/esm/cc/ThermostatOperatingStateCC._validateArgs.d.ts.map +1 -0
  184. package/build/esm/cc/ThermostatOperatingStateCC._validateArgs.js +12 -0
  185. package/build/esm/cc/ThermostatOperatingStateCC._validateArgs.js.map +1 -0
  186. package/build/esm/cc/ThermostatOperatingStateCC.d.ts +43 -2
  187. package/build/esm/cc/ThermostatOperatingStateCC.d.ts.map +1 -1
  188. package/build/esm/cc/ThermostatOperatingStateCC.js +253 -6
  189. package/build/esm/cc/ThermostatOperatingStateCC.js.map +1 -1
  190. package/build/esm/cc/ThermostatSetbackCC._validateArgs.d.ts +1 -1
  191. package/build/esm/cc/ThermostatSetbackCC._validateArgs.d.ts.map +1 -1
  192. package/build/esm/cc/ThermostatSetpointCC._validateArgs.d.ts +3 -3
  193. package/build/esm/cc/ThermostatSetpointCC._validateArgs.d.ts.map +1 -1
  194. package/build/esm/cc/TimeCC._validateArgs.d.ts +4 -4
  195. package/build/esm/cc/TimeCC._validateArgs.d.ts.map +1 -1
  196. package/build/esm/cc/TimeParametersCC._validateArgs.d.ts +1 -1
  197. package/build/esm/cc/TimeParametersCC._validateArgs.d.ts.map +1 -1
  198. package/build/esm/cc/TransportServiceCC.d.ts.map +1 -1
  199. package/build/esm/cc/UserCodeCC._validateArgs.d.ts +6 -6
  200. package/build/esm/cc/UserCodeCC._validateArgs.d.ts.map +1 -1
  201. package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
  202. package/build/esm/cc/UserCredentialCC._validateArgs.d.ts +24 -0
  203. package/build/esm/cc/UserCredentialCC._validateArgs.d.ts.map +1 -0
  204. package/build/esm/cc/UserCredentialCC._validateArgs.js +233 -0
  205. package/build/esm/cc/UserCredentialCC._validateArgs.js.map +1 -0
  206. package/build/esm/cc/UserCredentialCC.d.ts +452 -0
  207. package/build/esm/cc/UserCredentialCC.d.ts.map +1 -0
  208. package/build/esm/cc/UserCredentialCC.js +2731 -0
  209. package/build/esm/cc/UserCredentialCC.js.map +1 -0
  210. package/build/esm/cc/VersionCC._validateArgs.d.ts +3 -3
  211. package/build/esm/cc/VersionCC._validateArgs.d.ts.map +1 -1
  212. package/build/esm/cc/WakeUpCC._validateArgs.d.ts +1 -1
  213. package/build/esm/cc/WakeUpCC._validateArgs.d.ts.map +1 -1
  214. package/build/esm/cc/WindowCoveringCC._validateArgs.d.ts +4 -4
  215. package/build/esm/cc/WindowCoveringCC._validateArgs.d.ts.map +1 -1
  216. package/build/esm/cc/ZWavePlusCC._validateArgs.d.ts +1 -1
  217. package/build/esm/cc/ZWavePlusCC._validateArgs.d.ts.map +1 -1
  218. package/build/esm/cc/_CCValues.generated.d.ts +4907 -3369
  219. package/build/esm/cc/_CCValues.generated.d.ts.map +1 -1
  220. package/build/esm/cc/_CCValues.generated.js +898 -0
  221. package/build/esm/cc/_CCValues.generated.js.map +1 -1
  222. package/build/esm/cc/index.d.ts +6 -3
  223. package/build/esm/cc/index.d.ts.map +1 -1
  224. package/build/esm/cc/index.js +39 -2
  225. package/build/esm/cc/index.js.map +1 -1
  226. package/build/esm/cc/manufacturerProprietary/FibaroCC._validateArgs.d.ts +2 -2
  227. package/build/esm/cc/manufacturerProprietary/FibaroCC._validateArgs.d.ts.map +1 -1
  228. package/build/esm/lib/CommandClass.js +1 -3
  229. package/build/esm/lib/CommandClass.js.map +1 -1
  230. package/build/esm/lib/Security2/shared.d.ts.map +1 -1
  231. package/build/esm/lib/Values.d.ts +5 -5
  232. package/build/esm/lib/Values.d.ts.map +1 -1
  233. package/build/esm/lib/Values.js +1 -4
  234. package/build/esm/lib/Values.js.map +1 -1
  235. package/build/esm/lib/_CCAPI.generated.d.ts +2 -0
  236. package/build/esm/lib/_CCAPI.generated.d.ts.map +1 -1
  237. package/build/esm/lib/_Types.d.ts +153 -1
  238. package/build/esm/lib/_Types.d.ts.map +1 -1
  239. package/build/esm/lib/_Types.js +141 -5
  240. package/build/esm/lib/_Types.js.map +1 -1
  241. package/package.json +8 -8
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src_gen/cc/DoorLockCC.ts"],
4
- "sourcesContent": ["import * as __validateArgs from \"./DoorLockCC._validateArgs.js\";\nconst { validateArgs_DoorLockCCAPI_set, validateArgs_DoorLockCCAPI_setConfiguration } = __validateArgs;\nimport { CommandClasses, Duration, type EndpointId, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, type SupervisionResult, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, enumValuesToMetadataStates, parseBitMask, supervisedCommandSucceeded, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, getEnumMemberName, pick } from \"@zwave-js/shared\";\nimport { isArray } from \"alcalzone-shared/typeguards\";\nimport { CCAPI, POLL_VALUE, PhysicalCCAPI, type PollValueImplementation, SET_VALUE, type SetValueImplementation, throwUnsupportedProperty, throwWrongValueType, } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { type DoorHandleStatus, DoorLockCommand, DoorLockMode, DoorLockOperationType, } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { DoorLockCCValues } from \"./_CCValues.generated.js\";\nexport { DoorLockCCValues };\nexport function shouldAutoCreateLatchStatusValue(ctx: GetValueDB, endpoint: EndpointId): boolean {\n const valueDB = ctx.tryGetValueDB(endpoint.nodeId);\n if (!valueDB)\n return false;\n return !!valueDB.getValue(DoorLockCCValues.latchSupported.endpoint(endpoint.index));\n}\nexport function shouldAutoCreateBoltStatusValue(ctx: GetValueDB, endpoint: EndpointId): boolean {\n const valueDB = ctx.tryGetValueDB(endpoint.nodeId);\n if (!valueDB)\n return false;\n return !!valueDB.getValue(DoorLockCCValues.boltSupported.endpoint(endpoint.index));\n}\nexport function shouldAutoCreateDoorStatusValue(ctx: GetValueDB, endpoint: EndpointId): boolean {\n const valueDB = ctx.tryGetValueDB(endpoint.nodeId);\n if (!valueDB)\n return false;\n return !!valueDB.getValue(DoorLockCCValues.doorSupported.endpoint(endpoint.index));\n}\nexport function shouldAutoCreateTwistAssistConfigValue(ctx: GetValueDB, endpoint: EndpointId): boolean {\n const valueDB = ctx.tryGetValueDB(endpoint.nodeId);\n if (!valueDB)\n return false;\n return !!valueDB.getValue(DoorLockCCValues.twistAssistSupported.endpoint(endpoint.index));\n}\nexport function shouldAutoCreateBlockToBlockConfigValue(ctx: GetValueDB, endpoint: EndpointId): boolean {\n const valueDB = ctx.tryGetValueDB(endpoint.nodeId);\n if (!valueDB)\n return false;\n return !!valueDB.getValue(DoorLockCCValues.blockToBlockSupported.endpoint(endpoint.index));\n}\nexport function shouldAutoCreateAutoRelockConfigValue(ctx: GetValueDB, endpoint: EndpointId): boolean {\n const valueDB = ctx.tryGetValueDB(endpoint.nodeId);\n if (!valueDB)\n return false;\n return !!valueDB.getValue(DoorLockCCValues.autoRelockSupported.endpoint(endpoint.index));\n}\nexport function shouldAutoCreateHoldAndReleaseConfigValue(ctx: GetValueDB, endpoint: EndpointId): boolean {\n const valueDB = ctx.tryGetValueDB(endpoint.nodeId);\n if (!valueDB)\n return false;\n return !!valueDB.getValue(DoorLockCCValues.holdAndReleaseSupported.endpoint(endpoint.index));\n}\nconst configurationSetParameters = [\n \"operationType\",\n \"outsideHandlesCanOpenDoorConfiguration\",\n \"insideHandlesCanOpenDoorConfiguration\",\n \"lockTimeoutConfiguration\",\n \"autoRelockTime\",\n \"holdAndReleaseTime\",\n \"twistAssist\",\n \"blockToBlock\",\n] as const;\n@API(CommandClasses[\"Door Lock\"])\nexport class DoorLockCCAPI extends PhysicalCCAPI {\n public supportsCommand(cmd: DoorLockCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case DoorLockCommand.OperationSet:\n case DoorLockCommand.OperationGet:\n case DoorLockCommand.ConfigurationSet:\n case DoorLockCommand.ConfigurationGet:\n return true; // This is mandatory\n case DoorLockCommand.CapabilitiesGet:\n return this.version >= 4;\n }\n return super.supportsCommand(cmd);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: DoorLockCCAPI, { property }, value) {\n if (property === \"targetMode\") {\n if (typeof value !== \"number\") {\n throwWrongValueType(this.ccId, property, \"number\", typeof value);\n }\n const result = await this.set(value);\n // Verify the current value after a delay, unless the command was supervised and successful\n if (supervisedCommandSucceeded(result)) {\n this.getValueDB().setValue(DoorLockCCValues.currentMode.endpoint(this.endpoint.index), value);\n }\n else {\n this.schedulePoll({ property }, value);\n }\n return result;\n }\n else if (typeof property === \"string\"\n && configurationSetParameters.includes(property as any)) {\n // checking every type here would create a LOT of duplicate code, so we don't\n // ConfigurationSet expects all parameters --> read the others from cache\n const config = {\n [property]: value,\n } as DoorLockCCConfigurationSetOptions;\n for (const param of configurationSetParameters) {\n if (param !== property) {\n (config as any)[param] = this.tryGetValueDB()?.getValue({\n commandClass: this.ccId,\n endpoint: this.endpoint.index,\n property: param,\n });\n }\n }\n // Fix insideHandlesCanOpenDoorConfiguration is not iterable\n const allTrue: DoorHandleStatus = [true, true, true, true];\n if (!config.insideHandlesCanOpenDoorConfiguration) {\n config.insideHandlesCanOpenDoorConfiguration = allTrue;\n }\n if (!config.outsideHandlesCanOpenDoorConfiguration) {\n config.outsideHandlesCanOpenDoorConfiguration = allTrue;\n }\n const result = await this.setConfiguration(config);\n // Verify the current value after a delay, unless the command was supervised and successful\n if (!supervisedCommandSucceeded(result)) {\n this.schedulePoll({ property }, value);\n }\n return result;\n }\n else {\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: DoorLockCCAPI, { property }) {\n switch (property) {\n case \"currentMode\":\n case \"targetMode\":\n case \"duration\":\n case \"outsideHandlesCanOpenDoor\":\n case \"insideHandlesCanOpenDoor\":\n case \"latchStatus\":\n case \"boltStatus\":\n case \"doorStatus\":\n case \"lockTimeout\":\n return (await this.get())?.[property];\n case \"operationType\":\n case \"outsideHandlesCanOpenDoorConfiguration\":\n case \"insideHandlesCanOpenDoorConfiguration\":\n case \"lockTimeoutConfiguration\":\n case \"autoRelockTime\":\n case \"holdAndReleaseTime\":\n case \"twistAssist\":\n case \"blockToBlock\":\n return (await this.getConfiguration())?.[property];\n default:\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getCapabilities() {\n this.assertSupportsCommand(DoorLockCommand, DoorLockCommand.CapabilitiesGet);\n const cc = new DoorLockCCCapabilitiesGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<DoorLockCCCapabilitiesReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"autoRelockSupported\",\n \"blockToBlockSupported\",\n \"boltSupported\",\n \"doorSupported\",\n \"holdAndReleaseSupported\",\n \"latchSupported\",\n \"twistAssistSupported\",\n \"supportedDoorLockModes\",\n \"supportedInsideHandles\",\n \"supportedOperationTypes\",\n \"supportedOutsideHandles\",\n ]);\n }\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async get() {\n this.assertSupportsCommand(DoorLockCommand, DoorLockCommand.OperationGet);\n const cc = new DoorLockCCOperationGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<DoorLockCCOperationReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"currentMode\",\n \"targetMode\",\n \"duration\",\n \"outsideHandlesCanOpenDoor\",\n \"insideHandlesCanOpenDoor\",\n \"latchStatus\",\n \"boltStatus\",\n \"doorStatus\",\n \"lockTimeout\",\n ]);\n }\n }\n @validateArgs_DoorLockCCAPI_set()\n public async set(mode: DoorLockMode): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(DoorLockCommand, DoorLockCommand.OperationSet);\n const cc = new DoorLockCCOperationSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n mode,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_DoorLockCCAPI_setConfiguration()\n public async setConfiguration(configuration: DoorLockCCConfigurationSetOptions): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(DoorLockCommand, DoorLockCommand.ConfigurationSet);\n const cc = new DoorLockCCConfigurationSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...configuration,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getConfiguration() {\n this.assertSupportsCommand(DoorLockCommand, DoorLockCommand.ConfigurationGet);\n const cc = new DoorLockCCConfigurationGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<DoorLockCCConfigurationReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"operationType\",\n \"outsideHandlesCanOpenDoorConfiguration\",\n \"insideHandlesCanOpenDoorConfiguration\",\n \"lockTimeoutConfiguration\",\n \"autoRelockTime\",\n \"holdAndReleaseTime\",\n \"twistAssist\",\n \"blockToBlock\",\n ]);\n }\n }\n}\n@commandClass(CommandClasses[\"Door Lock\"])\n@implementedVersion(4)\n@ccValues(DoorLockCCValues)\nexport class DoorLockCC extends CommandClass {\n declare ccCommand: DoorLockCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Door Lock\"], ctx, endpoint).withOptions({\n priority: MessagePriority.NodeQuery,\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n // We need to do some queries after a potential timeout\n // In this case, do now mark this CC as interviewed completely\n let hadCriticalTimeout = false;\n // By default, assume all status sensors to be supported\n let doorSupported = true;\n let boltSupported = true;\n let latchSupported = true;\n if (api.version >= 4) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"requesting lock capabilities...\",\n direction: \"outbound\",\n });\n const resp = await api.getCapabilities();\n if (resp) {\n const logMessage = `received lock capabilities:\nsupported operation types: ${resp.supportedOperationTypes\n .map((t) => getEnumMemberName(DoorLockOperationType, t))\n .join(\", \")}\nsupported door lock modes: ${resp.supportedDoorLockModes\n .map((t) => getEnumMemberName(DoorLockMode, t))\n .map((str) => `\\n\u00B7 ${str}`)\n .join(\"\")}\nsupported outside handles: ${resp.supportedOutsideHandles\n .map(String)\n .join(\", \")}\nsupported inside handles: ${resp.supportedInsideHandles.map(String).join(\", \")}\nsupports door status: ${resp.doorSupported}\nsupports bolt status: ${resp.boltSupported}\nsupports latch status: ${resp.latchSupported}\nsupports auto-relock: ${resp.autoRelockSupported}\nsupports hold-and-release: ${resp.holdAndReleaseSupported}\nsupports twist assist: ${resp.twistAssistSupported}\nsupports block to block: ${resp.blockToBlockSupported}`;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n doorSupported = resp.doorSupported;\n boltSupported = resp.boltSupported;\n latchSupported = resp.latchSupported;\n // Update metadata of settable states\n const targetModeValue = DoorLockCCValues.targetMode;\n this.setMetadata(ctx, targetModeValue, {\n ...targetModeValue.meta,\n states: enumValuesToMetadataStates(DoorLockMode, resp.supportedDoorLockModes),\n });\n const operationTypeValue = DoorLockCCValues.operationType;\n this.setMetadata(ctx, operationTypeValue, {\n ...operationTypeValue.meta,\n states: enumValuesToMetadataStates(DoorLockOperationType, resp.supportedOperationTypes),\n });\n }\n else {\n hadCriticalTimeout = true;\n }\n }\n if (!hadCriticalTimeout) {\n // Save support information for the status values\n const doorStatusValue = DoorLockCCValues.doorStatus;\n if (doorSupported)\n this.setMetadata(ctx, doorStatusValue);\n this.setValue(ctx, DoorLockCCValues.doorSupported, doorSupported);\n const latchStatusValue = DoorLockCCValues.latchStatus;\n if (latchSupported)\n this.setMetadata(ctx, latchStatusValue);\n this.setValue(ctx, DoorLockCCValues.latchSupported, latchSupported);\n const boltStatusValue = DoorLockCCValues.boltStatus;\n if (boltSupported)\n this.setMetadata(ctx, boltStatusValue);\n this.setValue(ctx, DoorLockCCValues.boltSupported, boltSupported);\n }\n await this.refreshValues(ctx);\n // Remember that the interview is complete\n if (!hadCriticalTimeout)\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Door Lock\"], ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"requesting lock configuration...\",\n direction: \"outbound\",\n });\n const config = await api.getConfiguration();\n if (config) {\n let logMessage = `received lock configuration:\noperation type: ${getEnumMemberName(DoorLockOperationType, config.operationType)}`;\n if (config.operationType === DoorLockOperationType.Timed) {\n logMessage += `\nlock timeout: ${config.lockTimeoutConfiguration} seconds\n`;\n }\n logMessage += `\noutside handles can open door: ${config.outsideHandlesCanOpenDoorConfiguration\n .map(String)\n .join(\", \")}\ninside handles can open door: ${config.insideHandlesCanOpenDoorConfiguration\n .map(String)\n .join(\", \")}`;\n if (api.version >= 4) {\n logMessage += `\nauto-relock time ${config.autoRelockTime ?? \"-\"} seconds\nhold-and-release time ${config.holdAndReleaseTime ?? \"-\"} seconds\ntwist assist ${!!config.twistAssist}\nblock to block ${!!config.blockToBlock}`;\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"requesting current lock status...\",\n direction: \"outbound\",\n });\n const status = await api.get();\n if (status) {\n let logMessage = `received lock status:\ncurrent mode: ${getEnumMemberName(DoorLockMode, status.currentMode)}`;\n if (status.targetMode != undefined) {\n logMessage += `\ntarget mode: ${getEnumMemberName(DoorLockMode, status.targetMode)}\nremaining duration: ${status.duration?.toString() ?? \"undefined\"}`;\n }\n if (status.lockTimeout != undefined) {\n logMessage += `\nlock timeout: ${status.lockTimeout} seconds`;\n }\n if (status.doorStatus != undefined) {\n logMessage += `\ndoor status: ${status.doorStatus}`;\n }\n if (status.boltStatus != undefined) {\n logMessage += `\nbolt status: ${status.boltStatus}`;\n }\n if (status.latchStatus != undefined) {\n logMessage += `\nlatch status: ${status.latchStatus}`;\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n }\n }\n /**\n * Returns whether the node supports auto relock.\n * This only works AFTER the node has been interviewed.\n */\n public static supportsAutoRelockCached(ctx: GetValueDB, endpoint: EndpointId): boolean {\n return !!ctx\n .getValueDB(endpoint.nodeId)\n .getValue(DoorLockCCValues.autoRelockSupported.endpoint(endpoint.index));\n }\n /**\n * Returns whether the node supports hold and release.\n * This only works AFTER the node has been interviewed.\n */\n public static supportsHoldAndReleaseCached(ctx: GetValueDB, endpoint: EndpointId): boolean {\n return !!ctx\n .getValueDB(endpoint.nodeId)\n .getValue(DoorLockCCValues.holdAndReleaseSupported.endpoint(endpoint.index));\n }\n /**\n * Returns whether the node supports twist assist.\n * This only works AFTER the node has been interviewed.\n */\n public static supportsTwistAssistCached(ctx: GetValueDB, endpoint: EndpointId): boolean {\n return !!ctx\n .getValueDB(endpoint.nodeId)\n .getValue(DoorLockCCValues.twistAssistSupported.endpoint(endpoint.index));\n }\n /**\n * Returns whether the node supports block to block.\n * This only works AFTER the node has been interviewed.\n */\n public static supportsBlockToBlockCached(ctx: GetValueDB, endpoint: EndpointId): boolean {\n return !!ctx\n .getValueDB(endpoint.nodeId)\n .getValue(DoorLockCCValues.blockToBlockSupported.endpoint(endpoint.index));\n }\n /**\n * Returns the supported outside handles.\n * This only works AFTER the node has been interviewed.\n */\n public static getSupportedOutsideHandlesCached(ctx: GetValueDB, endpoint: EndpointId): MaybeNotKnown<DoorHandleStatus> {\n return ctx\n .getValueDB(endpoint.nodeId)\n .getValue(DoorLockCCValues.supportedOutsideHandles.endpoint(endpoint.index));\n }\n /**\n * Returns the supported inside handles.\n * This only works AFTER the node has been interviewed.\n */\n public static getSupportedInsideHandlesCached(ctx: GetValueDB, endpoint: EndpointId): MaybeNotKnown<DoorHandleStatus> {\n return ctx\n .getValueDB(endpoint.nodeId)\n .getValue(DoorLockCCValues.supportedInsideHandles.endpoint(endpoint.index));\n }\n}\n// @publicAPI\nexport interface DoorLockCCOperationSetOptions {\n mode: DoorLockMode;\n}\n@CCCommand(DoorLockCommand.OperationSet)\n@useSupervision()\nexport class DoorLockCCOperationSet extends DoorLockCC {\n public constructor(options: WithAddress<DoorLockCCOperationSetOptions>) {\n super(options);\n if (options.mode === DoorLockMode.Unknown) {\n throw new ZWaveError(`Unknown is not a valid door lock target state!`, ZWaveErrorCodes.Argument_Invalid);\n }\n this.mode = options.mode;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): DoorLockCCOperationSet {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new DoorLockCCOperationSet({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public mode: DoorLockMode;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.mode]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"target mode\": getEnumMemberName(DoorLockMode, this.mode),\n },\n };\n }\n}\n// @publicAPI\nexport interface DoorLockCCOperationReportOptions {\n currentMode: DoorLockMode;\n outsideHandlesCanOpenDoor: DoorHandleStatus;\n insideHandlesCanOpenDoor: DoorHandleStatus;\n doorStatus?: \"closed\" | \"open\";\n boltStatus?: \"unlocked\" | \"locked\";\n latchStatus?: \"closed\" | \"open\";\n lockTimeout?: number;\n targetMode?: DoorLockMode;\n duration?: Duration;\n}\n@CCCommand(DoorLockCommand.OperationReport)\n@ccValueProperty(\"currentMode\", DoorLockCCValues.currentMode)\n@ccValueProperty(\"targetMode\", DoorLockCCValues.targetMode)\n@ccValueProperty(\"duration\", DoorLockCCValues.duration)\n@ccValueProperty(\"outsideHandlesCanOpenDoor\", DoorLockCCValues.outsideHandlesCanOpenDoor)\n@ccValueProperty(\"insideHandlesCanOpenDoor\", DoorLockCCValues.insideHandlesCanOpenDoor)\n@ccValueProperty(\"lockTimeout\", DoorLockCCValues.lockTimeout)\nexport class DoorLockCCOperationReport extends DoorLockCC {\n public constructor(options: WithAddress<DoorLockCCOperationReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.currentMode = options.currentMode;\n this.outsideHandlesCanOpenDoor = options.outsideHandlesCanOpenDoor;\n this.insideHandlesCanOpenDoor = options.insideHandlesCanOpenDoor;\n this.doorStatus = options.doorStatus;\n this.boltStatus = options.boltStatus;\n this.latchStatus = options.latchStatus;\n this.lockTimeout = options.lockTimeout;\n this.targetMode = options.targetMode;\n this.duration = options.duration;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): DoorLockCCOperationReport {\n validatePayload(raw.payload.length >= 5);\n const currentMode: DoorLockMode = raw.payload[0];\n const outsideHandlesCanOpenDoor: DoorHandleStatus = [\n !!(raw.payload[1] & 16),\n !!(raw.payload[1] & 32),\n !!(raw.payload[1] & 64),\n !!(raw.payload[1] & 128),\n ];\n const insideHandlesCanOpenDoor: DoorHandleStatus = [\n !!(raw.payload[1] & 0b0001),\n !!(raw.payload[1] & 0b0010),\n !!(raw.payload[1] & 0b0100),\n !!(raw.payload[1] & 0b1000),\n ];\n const doorStatus: \"closed\" | \"open\" | undefined = !!(raw.payload[2] & 0b1)\n ? \"closed\"\n : \"open\";\n const boltStatus: \"unlocked\" | \"locked\" | undefined = !!(raw.payload[2] & 0b10) ? \"unlocked\" : \"locked\";\n const latchStatus: \"closed\" | \"open\" | undefined = !!(raw.payload[2] & 0b100)\n ? \"closed\"\n : \"open\";\n // Ignore invalid timeout values\n const lockTimeoutMinutes = raw.payload[3];\n const lockTimeoutSeconds = raw.payload[4];\n let lockTimeout: number | undefined;\n if (lockTimeoutMinutes <= 253 && lockTimeoutSeconds <= 59) {\n lockTimeout = lockTimeoutSeconds + lockTimeoutMinutes * 60;\n }\n let targetMode: DoorLockMode | undefined;\n let duration: Duration | undefined;\n if (raw.payload.length >= 7) {\n targetMode = raw.payload[5];\n duration = Duration.parseReport(raw.payload[6]);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n currentMode,\n outsideHandlesCanOpenDoor,\n insideHandlesCanOpenDoor,\n doorStatus,\n boltStatus,\n latchStatus,\n lockTimeout,\n targetMode,\n duration,\n });\n }\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n // Only store the door/bolt/latch status if the lock supports it\n const supportsDoorStatus = !!this.getValue(ctx, DoorLockCCValues.doorSupported);\n if (supportsDoorStatus) {\n this.setValue(ctx, DoorLockCCValues.doorStatus, this.doorStatus);\n }\n const supportsBoltStatus = !!this.getValue(ctx, DoorLockCCValues.boltSupported);\n if (supportsBoltStatus) {\n this.setValue(ctx, DoorLockCCValues.boltStatus, this.boltStatus);\n }\n const supportsLatchStatus = !!this.getValue(ctx, DoorLockCCValues.latchSupported);\n if (supportsLatchStatus) {\n this.setValue(ctx, DoorLockCCValues.latchStatus, this.latchStatus);\n }\n return true;\n }\n public readonly currentMode: DoorLockMode;\n public readonly targetMode?: DoorLockMode;\n public readonly duration?: Duration;\n public readonly outsideHandlesCanOpenDoor: DoorHandleStatus;\n public readonly insideHandlesCanOpenDoor: DoorHandleStatus;\n public readonly latchStatus?: \"open\" | \"closed\";\n public readonly boltStatus?: \"locked\" | \"unlocked\";\n public readonly doorStatus?: \"open\" | \"closed\";\n public readonly lockTimeout?: number; // in seconds\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"current mode\": getEnumMemberName(DoorLockMode, this.currentMode),\n \"active outside handles\": this.outsideHandlesCanOpenDoor.join(\", \"),\n \"active inside handles\": this.insideHandlesCanOpenDoor.join(\", \"),\n };\n if (this.latchStatus != undefined) {\n message[\"latch status\"] = this.latchStatus;\n }\n if (this.boltStatus != undefined) {\n message[\"bolt status\"] = this.boltStatus;\n }\n if (this.doorStatus != undefined) {\n message[\"door status\"] = this.doorStatus;\n }\n if (this.targetMode != undefined) {\n message[\"target mode\"] = getEnumMemberName(DoorLockMode, this.targetMode);\n }\n if (this.duration != undefined) {\n message[\"remaining duration\"] = this.duration.toString();\n }\n if (this.lockTimeout != undefined) {\n message[\"lock timeout\"] = `${this.lockTimeout} seconds`;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(DoorLockCommand.OperationGet)\n@expectedCCResponse(DoorLockCCOperationReport)\nexport class DoorLockCCOperationGet extends DoorLockCC {\n}\n// @publicAPI\nexport interface DoorLockCCConfigurationReportOptions {\n operationType: DoorLockOperationType;\n outsideHandlesCanOpenDoorConfiguration: DoorHandleStatus;\n insideHandlesCanOpenDoorConfiguration: DoorHandleStatus;\n lockTimeoutConfiguration?: number;\n autoRelockTime?: number;\n holdAndReleaseTime?: number;\n twistAssist?: boolean;\n blockToBlock?: boolean;\n}\n@CCCommand(DoorLockCommand.ConfigurationReport)\n@ccValueProperty(\"operationType\", DoorLockCCValues.operationType)\n@ccValueProperty(\"outsideHandlesCanOpenDoorConfiguration\", DoorLockCCValues.outsideHandlesCanOpenDoorConfiguration)\n@ccValueProperty(\"insideHandlesCanOpenDoorConfiguration\", DoorLockCCValues.insideHandlesCanOpenDoorConfiguration)\n@ccValueProperty(\"lockTimeoutConfiguration\", DoorLockCCValues.lockTimeoutConfiguration)\nexport class DoorLockCCConfigurationReport extends DoorLockCC {\n public constructor(options: WithAddress<DoorLockCCConfigurationReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.operationType = options.operationType;\n this.outsideHandlesCanOpenDoorConfiguration =\n options.outsideHandlesCanOpenDoorConfiguration;\n this.insideHandlesCanOpenDoorConfiguration =\n options.insideHandlesCanOpenDoorConfiguration;\n this.lockTimeoutConfiguration = options.lockTimeoutConfiguration;\n this.autoRelockTime = options.autoRelockTime;\n this.holdAndReleaseTime = options.holdAndReleaseTime;\n this.twistAssist = options.twistAssist;\n this.blockToBlock = options.blockToBlock;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): DoorLockCCConfigurationReport {\n validatePayload(raw.payload.length >= 4);\n const operationType: DoorLockOperationType = raw.payload[0];\n const outsideHandlesCanOpenDoorConfiguration: DoorHandleStatus = [\n !!(raw.payload[1] & 16),\n !!(raw.payload[1] & 32),\n !!(raw.payload[1] & 64),\n !!(raw.payload[1] & 128),\n ];\n const insideHandlesCanOpenDoorConfiguration: DoorHandleStatus = [\n !!(raw.payload[1] & 0b0001),\n !!(raw.payload[1] & 0b0010),\n !!(raw.payload[1] & 0b0100),\n !!(raw.payload[1] & 0b1000),\n ];\n let lockTimeoutConfiguration: number | undefined;\n if (operationType === DoorLockOperationType.Timed) {\n const lockTimeoutMinutes = raw.payload[2];\n const lockTimeoutSeconds = raw.payload[3];\n if (lockTimeoutMinutes <= 0xfd && lockTimeoutSeconds <= 59) {\n lockTimeoutConfiguration = lockTimeoutSeconds\n + lockTimeoutMinutes * 60;\n }\n }\n let autoRelockTime: number | undefined;\n let holdAndReleaseTime: number | undefined;\n let twistAssist: boolean | undefined;\n let blockToBlock: boolean | undefined;\n if (raw.payload.length >= 5) {\n autoRelockTime = raw.payload.readUInt16BE(4);\n holdAndReleaseTime = raw.payload.readUInt16BE(6);\n const flags = raw.payload[8];\n twistAssist = !!(flags & 0b1);\n blockToBlock = !!(flags & 0b10);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n operationType,\n outsideHandlesCanOpenDoorConfiguration,\n insideHandlesCanOpenDoorConfiguration,\n lockTimeoutConfiguration,\n autoRelockTime,\n holdAndReleaseTime,\n twistAssist,\n blockToBlock,\n });\n }\n public readonly operationType: DoorLockOperationType;\n public readonly outsideHandlesCanOpenDoorConfiguration: DoorHandleStatus;\n public readonly insideHandlesCanOpenDoorConfiguration: DoorHandleStatus;\n public readonly lockTimeoutConfiguration?: number;\n // These are not always supported and have to be persisted manually\n // to avoid unsupported values being exposed to the user\n public readonly autoRelockTime?: number;\n public readonly holdAndReleaseTime?: number;\n public readonly twistAssist?: boolean;\n public readonly blockToBlock?: boolean;\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n // Only store the autoRelockTime etc. params if the lock supports it\n const supportsAutoRelock = !!this.getValue(ctx, DoorLockCCValues.autoRelockSupported);\n if (supportsAutoRelock) {\n this.setValue(ctx, DoorLockCCValues.autoRelockTime, this.autoRelockTime);\n }\n const supportsHoldAndRelease = !!this.getValue(ctx, DoorLockCCValues.holdAndReleaseSupported);\n if (supportsHoldAndRelease) {\n this.setValue(ctx, DoorLockCCValues.holdAndReleaseTime, this.holdAndReleaseTime);\n }\n const supportsTwistAssist = !!this.getValue(ctx, DoorLockCCValues.twistAssistSupported);\n if (supportsTwistAssist) {\n this.setValue(ctx, DoorLockCCValues.twistAssist, this.twistAssist);\n }\n const supportsBlockToBlock = !!this.getValue(ctx, DoorLockCCValues.blockToBlockSupported);\n if (supportsBlockToBlock) {\n this.setValue(ctx, DoorLockCCValues.blockToBlock, this.blockToBlock);\n }\n return true;\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"operation type\": getEnumMemberName(DoorLockOperationType, this.operationType),\n \"outside handle configuration\": this\n .outsideHandlesCanOpenDoorConfiguration.join(\", \"),\n \"inside handle configuration\": this\n .insideHandlesCanOpenDoorConfiguration.join(\", \"),\n };\n if (this.lockTimeoutConfiguration != undefined) {\n message[\"timed mode duration\"] = `${this.lockTimeoutConfiguration} seconds`;\n }\n if (this.autoRelockTime != undefined) {\n message[\"auto-relock time\"] = `${this.autoRelockTime} seconds`;\n }\n if (this.holdAndReleaseTime != undefined) {\n message[\"hold-and-release time\"] = `${this.holdAndReleaseTime} seconds`;\n }\n if (this.twistAssist != undefined) {\n message[\"twist assist enabled\"] = this.twistAssist;\n }\n if (this.blockToBlock != undefined) {\n message[\"block-to-block enabled\"] = this.blockToBlock;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(DoorLockCommand.ConfigurationGet)\n@expectedCCResponse(DoorLockCCConfigurationReport)\nexport class DoorLockCCConfigurationGet extends DoorLockCC {\n}\n// @publicAPI\nexport type DoorLockCCConfigurationSetOptions = ({\n operationType: DoorLockOperationType.Timed;\n lockTimeoutConfiguration: number;\n} | {\n operationType: DoorLockOperationType.Constant;\n lockTimeoutConfiguration?: undefined;\n}) & {\n outsideHandlesCanOpenDoorConfiguration: DoorHandleStatus;\n insideHandlesCanOpenDoorConfiguration: DoorHandleStatus;\n // V4+\n autoRelockTime?: number;\n holdAndReleaseTime?: number;\n twistAssist?: boolean;\n blockToBlock?: boolean;\n};\n@CCCommand(DoorLockCommand.ConfigurationSet)\n@useSupervision()\nexport class DoorLockCCConfigurationSet extends DoorLockCC {\n public constructor(options: WithAddress<DoorLockCCConfigurationSetOptions>) {\n super(options);\n this.operationType = options.operationType;\n this.outsideHandlesCanOpenDoorConfiguration =\n options.outsideHandlesCanOpenDoorConfiguration;\n this.insideHandlesCanOpenDoorConfiguration =\n options.insideHandlesCanOpenDoorConfiguration;\n this.lockTimeoutConfiguration = options.lockTimeoutConfiguration;\n this.autoRelockTime = options.autoRelockTime;\n this.holdAndReleaseTime = options.holdAndReleaseTime;\n this.twistAssist = options.twistAssist;\n this.blockToBlock = options.blockToBlock;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): DoorLockCCConfigurationSet {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new DoorLockCCConfigurationSet({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public operationType: DoorLockOperationType;\n public outsideHandlesCanOpenDoorConfiguration: DoorHandleStatus;\n public insideHandlesCanOpenDoorConfiguration: DoorHandleStatus;\n public lockTimeoutConfiguration?: number;\n public autoRelockTime?: number;\n public holdAndReleaseTime?: number;\n public twistAssist?: boolean;\n public blockToBlock?: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n const insideHandles = isArray(this.insideHandlesCanOpenDoorConfiguration)\n ? this.insideHandlesCanOpenDoorConfiguration\n : [];\n const outsideHandles = isArray(this.outsideHandlesCanOpenDoorConfiguration)\n ? this.outsideHandlesCanOpenDoorConfiguration\n : [];\n const handles = [...insideHandles, ...outsideHandles]\n .map((val, i) => (val ? 1 << i : 0))\n .reduce((acc, cur) => acc | cur, 0);\n let lockTimeoutMinutes: number;\n let lockTimeoutSeconds: number;\n if (this.operationType === DoorLockOperationType.Constant) {\n lockTimeoutMinutes = lockTimeoutSeconds = 0xfe;\n }\n else {\n lockTimeoutMinutes = Math.floor(this.lockTimeoutConfiguration! / 60);\n lockTimeoutSeconds = this.lockTimeoutConfiguration! % 60;\n }\n const flags = (this.twistAssist ? 0b1 : 0)\n | (this.blockToBlock ? 0b10 : 0);\n this.payload = Bytes.from([\n this.operationType,\n handles,\n lockTimeoutMinutes,\n lockTimeoutSeconds,\n // placeholder for auto relock time\n 0,\n 0,\n // placeholder for hold and release time\n 0,\n 0,\n flags,\n ]);\n this.payload.writeUInt16BE((this.autoRelockTime ?? 0) & 0xffff, 4);\n this.payload.writeUInt16BE((this.holdAndReleaseTime ?? 0) & 0xffff, 6);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const insideHandles = isArray(this.insideHandlesCanOpenDoorConfiguration)\n ? this.insideHandlesCanOpenDoorConfiguration\n : [];\n const outsideHandles = isArray(this.outsideHandlesCanOpenDoorConfiguration)\n ? this.outsideHandlesCanOpenDoorConfiguration\n : [];\n const message: MessageRecord = {\n \"operation type\": getEnumMemberName(DoorLockOperationType, this.operationType),\n \"outside handle configuration\": outsideHandles.join(\", \"),\n \"inside handle configuration\": insideHandles.join(\", \"),\n };\n if (this.lockTimeoutConfiguration != undefined) {\n message[\"timed mode duration\"] = `${this.lockTimeoutConfiguration} seconds`;\n }\n if (this.autoRelockTime != undefined) {\n message[\"auto-relock time\"] = `${this.autoRelockTime} seconds`;\n }\n if (this.holdAndReleaseTime != undefined) {\n message[\"hold-and-release time\"] = `${this.holdAndReleaseTime} seconds`;\n }\n if (this.twistAssist != undefined) {\n message[\"enable twist assist\"] = this.twistAssist;\n }\n if (this.blockToBlock != undefined) {\n message[\"enable block-to-block\"] = this.blockToBlock;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface DoorLockCCCapabilitiesReportOptions {\n supportedOperationTypes: DoorLockOperationType[];\n supportedDoorLockModes: DoorLockMode[];\n supportedOutsideHandles: DoorHandleStatus;\n supportedInsideHandles: DoorHandleStatus;\n doorSupported: boolean;\n boltSupported: boolean;\n latchSupported: boolean;\n blockToBlockSupported: boolean;\n twistAssistSupported: boolean;\n holdAndReleaseSupported: boolean;\n autoRelockSupported: boolean;\n}\n@CCCommand(DoorLockCommand.CapabilitiesReport)\n@ccValueProperty(\"supportedOutsideHandles\", DoorLockCCValues.supportedOutsideHandles)\n@ccValueProperty(\"supportedInsideHandles\", DoorLockCCValues.supportedInsideHandles)\n@ccValueProperty(\"autoRelockSupported\", DoorLockCCValues.autoRelockSupported)\n@ccValueProperty(\"holdAndReleaseSupported\", DoorLockCCValues.holdAndReleaseSupported)\n@ccValueProperty(\"twistAssistSupported\", DoorLockCCValues.twistAssistSupported)\n@ccValueProperty(\"blockToBlockSupported\", DoorLockCCValues.blockToBlockSupported)\nexport class DoorLockCCCapabilitiesReport extends DoorLockCC {\n public constructor(options: WithAddress<DoorLockCCCapabilitiesReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.supportedOperationTypes = options.supportedOperationTypes;\n this.supportedDoorLockModes = options.supportedDoorLockModes;\n this.supportedOutsideHandles = options.supportedOutsideHandles;\n this.supportedInsideHandles = options.supportedInsideHandles;\n this.doorSupported = options.doorSupported;\n this.boltSupported = options.boltSupported;\n this.latchSupported = options.latchSupported;\n this.blockToBlockSupported = options.blockToBlockSupported;\n this.twistAssistSupported = options.twistAssistSupported;\n this.holdAndReleaseSupported = options.holdAndReleaseSupported;\n this.autoRelockSupported = options.autoRelockSupported;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): DoorLockCCCapabilitiesReport {\n // parse variable length operation type bit mask\n validatePayload(raw.payload.length >= 1);\n const bitMaskLength = raw.payload[0] & 0b11111;\n let offset = 1;\n validatePayload(raw.payload.length >= offset + bitMaskLength + 1);\n const supportedOperationTypes: DoorLockOperationType[] = parseBitMask(raw.payload.subarray(offset, offset + bitMaskLength), \n // bit 0 is reserved, bitmask starts at 1\n 0);\n offset += bitMaskLength;\n // parse variable length door lock mode list\n const listLength = raw.payload[offset];\n offset += 1;\n validatePayload(raw.payload.length >= offset + listLength + 3);\n const supportedDoorLockModes: DoorLockMode[] = [\n ...raw.payload.subarray(offset, offset + listLength),\n ];\n offset += listLength;\n const supportedOutsideHandles: DoorHandleStatus = [\n !!(raw.payload[offset] & 16),\n !!(raw.payload[offset] & 32),\n !!(raw.payload[offset] & 64),\n !!(raw.payload[offset] & 128),\n ];\n const supportedInsideHandles: DoorHandleStatus = [\n !!(raw.payload[offset] & 0b0001),\n !!(raw.payload[offset] & 0b0010),\n !!(raw.payload[offset] & 0b0100),\n !!(raw.payload[offset] & 0b1000),\n ];\n const doorSupported = !!(raw.payload[offset + 1] & 0b1);\n const boltSupported = !!(raw.payload[offset + 1] & 0b10);\n const latchSupported = !!(raw.payload[offset + 1] & 0b100);\n const blockToBlockSupported = !!(raw.payload[offset + 2] & 0b1);\n const twistAssistSupported = !!(raw.payload[offset + 2] & 0b10);\n const holdAndReleaseSupported = !!(raw.payload[offset + 2] & 0b100);\n const autoRelockSupported = !!(raw.payload[offset + 2] & 0b1000);\n return new this({\n nodeId: ctx.sourceNodeId,\n supportedOperationTypes,\n supportedDoorLockModes,\n supportedOutsideHandles,\n supportedInsideHandles,\n doorSupported,\n boltSupported,\n latchSupported,\n blockToBlockSupported,\n twistAssistSupported,\n holdAndReleaseSupported,\n autoRelockSupported,\n });\n }\n public readonly supportedOperationTypes: readonly DoorLockOperationType[];\n public readonly supportedDoorLockModes: readonly DoorLockMode[];\n public readonly supportedOutsideHandles: DoorHandleStatus;\n public readonly supportedInsideHandles: DoorHandleStatus;\n // These 3 are not automatically persisted because in CC version 3\n // we have to assume them to be supported. In v4 we can query this.\n public readonly latchSupported: boolean;\n public readonly boltSupported: boolean;\n public readonly doorSupported: boolean;\n public readonly autoRelockSupported: boolean;\n public readonly holdAndReleaseSupported: boolean;\n public readonly twistAssistSupported: boolean;\n public readonly blockToBlockSupported: boolean;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n door: this.doorSupported,\n bolt: this.boltSupported,\n latch: this.latchSupported,\n \"block-to-block feature\": this.blockToBlockSupported,\n \"twist assist feature\": this.twistAssistSupported,\n \"hold-and-release feature\": this.holdAndReleaseSupported,\n \"auto-relock feature\": this.autoRelockSupported,\n \"operation types\": this.supportedOperationTypes\n .map((t) => `\\n\u00B7 ${getEnumMemberName(DoorLockOperationType, t)}`)\n .join(\"\"),\n \"door lock modes\": this.supportedDoorLockModes\n .map((t) => `\\n\u00B7 ${getEnumMemberName(DoorLockMode, t)}`)\n .join(\"\"),\n \"outside handles\": this.supportedOutsideHandles.join(\", \"),\n \"inside handles\": this.supportedInsideHandles.join(\", \"),\n },\n };\n }\n}\n@CCCommand(DoorLockCommand.CapabilitiesGet)\n@expectedCCResponse(DoorLockCCCapabilitiesReport)\nexport class DoorLockCCCapabilitiesGet extends DoorLockCC {\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as __validateArgs from \"./DoorLockCC._validateArgs.js\";\nconst { validateArgs_DoorLockCCAPI_set, validateArgs_DoorLockCCAPI_setConfiguration } = __validateArgs;\nimport { CommandClasses, Duration, type EndpointId, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, type SupervisionResult, SupervisionStatus, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, encodeBitMask, enumValuesToMetadataStates, parseBitMask, supervisedCommandSucceeded, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, getEnumMemberName, pick } from \"@zwave-js/shared\";\nimport { isArray } from \"alcalzone-shared/typeguards\";\nimport { CCAPI, POLL_VALUE, PhysicalCCAPI, type PollValueImplementation, SET_VALUE, SET_VALUE_HOOKS, type SetValueImplementation, type SetValueImplementationHooksFactory, throwUnsupportedProperty, throwWrongValueType, } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { type DoorHandleStatus, DoorLockCommand, DoorLockMode, DoorLockOperationType, } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { DoorLockCCValues } from \"./_CCValues.generated.js\";\nexport { DoorLockCCValues };\nexport function shouldAutoCreateLatchStatusValue(ctx: GetValueDB, endpoint: EndpointId): boolean {\n const valueDB = ctx.tryGetValueDB(endpoint.nodeId);\n if (!valueDB)\n return false;\n return !!valueDB.getValue(DoorLockCCValues.latchSupported.endpoint(endpoint.index));\n}\nexport function shouldAutoCreateBoltStatusValue(ctx: GetValueDB, endpoint: EndpointId): boolean {\n const valueDB = ctx.tryGetValueDB(endpoint.nodeId);\n if (!valueDB)\n return false;\n return !!valueDB.getValue(DoorLockCCValues.boltSupported.endpoint(endpoint.index));\n}\nexport function shouldAutoCreateDoorStatusValue(ctx: GetValueDB, endpoint: EndpointId): boolean {\n const valueDB = ctx.tryGetValueDB(endpoint.nodeId);\n if (!valueDB)\n return false;\n return !!valueDB.getValue(DoorLockCCValues.doorSupported.endpoint(endpoint.index));\n}\nexport function shouldAutoCreateTwistAssistConfigValue(ctx: GetValueDB, endpoint: EndpointId): boolean {\n const valueDB = ctx.tryGetValueDB(endpoint.nodeId);\n if (!valueDB)\n return false;\n return !!valueDB.getValue(DoorLockCCValues.twistAssistSupported.endpoint(endpoint.index));\n}\nexport function shouldAutoCreateBlockToBlockConfigValue(ctx: GetValueDB, endpoint: EndpointId): boolean {\n const valueDB = ctx.tryGetValueDB(endpoint.nodeId);\n if (!valueDB)\n return false;\n return !!valueDB.getValue(DoorLockCCValues.blockToBlockSupported.endpoint(endpoint.index));\n}\nexport function shouldAutoCreateAutoRelockConfigValue(ctx: GetValueDB, endpoint: EndpointId): boolean {\n const valueDB = ctx.tryGetValueDB(endpoint.nodeId);\n if (!valueDB)\n return false;\n return !!valueDB.getValue(DoorLockCCValues.autoRelockSupported.endpoint(endpoint.index));\n}\nexport function shouldAutoCreateHoldAndReleaseConfigValue(ctx: GetValueDB, endpoint: EndpointId): boolean {\n const valueDB = ctx.tryGetValueDB(endpoint.nodeId);\n if (!valueDB)\n return false;\n return !!valueDB.getValue(DoorLockCCValues.holdAndReleaseSupported.endpoint(endpoint.index));\n}\nconst configurationSetParameters = [\n \"operationType\",\n \"outsideHandlesCanOpenDoorConfiguration\",\n \"insideHandlesCanOpenDoorConfiguration\",\n \"lockTimeoutConfiguration\",\n \"autoRelockTime\",\n \"holdAndReleaseTime\",\n \"twistAssist\",\n \"blockToBlock\",\n] as const;\n@API(CommandClasses[\"Door Lock\"])\nexport class DoorLockCCAPI extends PhysicalCCAPI {\n public supportsCommand(cmd: DoorLockCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case DoorLockCommand.OperationSet:\n case DoorLockCommand.OperationGet:\n case DoorLockCommand.ConfigurationSet:\n case DoorLockCommand.ConfigurationGet:\n return true; // This is mandatory\n case DoorLockCommand.CapabilitiesGet:\n return this.version >= 4;\n }\n return super.supportsCommand(cmd);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: DoorLockCCAPI, { property }, value) {\n if (property === \"targetMode\") {\n if (typeof value !== \"number\") {\n throwWrongValueType(this.ccId, property, \"number\", typeof value);\n }\n return this.set(value);\n }\n else if (typeof property === \"string\"\n && configurationSetParameters.includes(property as any)) {\n // checking every type here would create a LOT of duplicate code, so we don't\n // ConfigurationSet expects all parameters --> read the others from cache\n const config = {\n [property]: value,\n } as DoorLockCCConfigurationSetOptions;\n for (const param of configurationSetParameters) {\n if (param !== property) {\n (config as any)[param] = this.tryGetValueDB()?.getValue({\n commandClass: this.ccId,\n endpoint: this.endpoint.index,\n property: param,\n });\n }\n }\n // Fix insideHandlesCanOpenDoorConfiguration is not iterable\n const allTrue: DoorHandleStatus = [true, true, true, true];\n if (!config.insideHandlesCanOpenDoorConfiguration) {\n config.insideHandlesCanOpenDoorConfiguration = allTrue;\n }\n if (!config.outsideHandlesCanOpenDoorConfiguration) {\n config.outsideHandlesCanOpenDoorConfiguration = allTrue;\n }\n const result = await this.setConfiguration(config);\n // Verify the current value after a delay, unless the command was supervised and successful\n if (!supervisedCommandSucceeded(result)) {\n this.schedulePoll({ property }, value);\n }\n return result;\n }\n else {\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n protected [SET_VALUE_HOOKS]: SetValueImplementationHooksFactory = ({ property }, value) => {\n if (property === \"targetMode\" && typeof value === \"number\") {\n const targetMode = value;\n const currentModeValueId = DoorLockCCValues.currentMode.endpoint(this.endpoint.index);\n return {\n isSplitStateTargetValue: true,\n supervisionDelayedUpdates: true,\n optimisticallyUpdateRelatedValues: (_supervisedAndSuccessful) => {\n this.tryGetValueDB()?.setValue(currentModeValueId, targetMode);\n },\n supervisionOnSuccess: () => {\n this.tryGetValueDB()?.setValue(currentModeValueId, targetMode);\n },\n supervisionOnFailure: async () => {\n try {\n await this.get();\n }\n catch {\n // ignore\n }\n },\n verifyChanges: async (result) => {\n switch (result?.status) {\n case SupervisionStatus.Success:\n case SupervisionStatus.Working:\n return;\n case SupervisionStatus.Fail:\n case SupervisionStatus.NoSupport:\n try {\n await this.get();\n }\n catch {\n // ignore\n }\n return;\n default:\n this.schedulePoll({ property: \"currentMode\" }, targetMode);\n }\n },\n };\n }\n };\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: DoorLockCCAPI, { property }) {\n switch (property) {\n case \"currentMode\":\n case \"targetMode\":\n case \"duration\":\n case \"outsideHandlesCanOpenDoor\":\n case \"insideHandlesCanOpenDoor\":\n case \"latchStatus\":\n case \"boltStatus\":\n case \"doorStatus\":\n case \"lockTimeout\":\n return (await this.get())?.[property];\n case \"operationType\":\n case \"outsideHandlesCanOpenDoorConfiguration\":\n case \"insideHandlesCanOpenDoorConfiguration\":\n case \"lockTimeoutConfiguration\":\n case \"autoRelockTime\":\n case \"holdAndReleaseTime\":\n case \"twistAssist\":\n case \"blockToBlock\":\n return (await this.getConfiguration())?.[property];\n default:\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getCapabilities() {\n this.assertSupportsCommand(DoorLockCommand, DoorLockCommand.CapabilitiesGet);\n const cc = new DoorLockCCCapabilitiesGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<DoorLockCCCapabilitiesReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"autoRelockSupported\",\n \"blockToBlockSupported\",\n \"boltSupported\",\n \"doorSupported\",\n \"holdAndReleaseSupported\",\n \"latchSupported\",\n \"twistAssistSupported\",\n \"supportedDoorLockModes\",\n \"supportedInsideHandles\",\n \"supportedOperationTypes\",\n \"supportedOutsideHandles\",\n ]);\n }\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async get() {\n this.assertSupportsCommand(DoorLockCommand, DoorLockCommand.OperationGet);\n const cc = new DoorLockCCOperationGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<DoorLockCCOperationReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"currentMode\",\n \"targetMode\",\n \"duration\",\n \"outsideHandlesCanOpenDoor\",\n \"insideHandlesCanOpenDoor\",\n \"latchStatus\",\n \"boltStatus\",\n \"doorStatus\",\n \"lockTimeout\",\n ]);\n }\n }\n @validateArgs_DoorLockCCAPI_set()\n public async set(mode: DoorLockMode): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(DoorLockCommand, DoorLockCommand.OperationSet);\n const cc = new DoorLockCCOperationSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n mode,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_DoorLockCCAPI_setConfiguration()\n public async setConfiguration(configuration: DoorLockCCConfigurationSetOptions): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(DoorLockCommand, DoorLockCommand.ConfigurationSet);\n const cc = new DoorLockCCConfigurationSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...configuration,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getConfiguration() {\n this.assertSupportsCommand(DoorLockCommand, DoorLockCommand.ConfigurationGet);\n const cc = new DoorLockCCConfigurationGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<DoorLockCCConfigurationReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"operationType\",\n \"outsideHandlesCanOpenDoorConfiguration\",\n \"insideHandlesCanOpenDoorConfiguration\",\n \"lockTimeoutConfiguration\",\n \"autoRelockTime\",\n \"holdAndReleaseTime\",\n \"twistAssist\",\n \"blockToBlock\",\n ]);\n }\n }\n}\n@commandClass(CommandClasses[\"Door Lock\"])\n@implementedVersion(4)\n@ccValues(DoorLockCCValues)\nexport class DoorLockCC extends CommandClass {\n declare ccCommand: DoorLockCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Door Lock\"], ctx, endpoint).withOptions({\n priority: MessagePriority.NodeQuery,\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n // We need to do some queries after a potential timeout\n // In this case, do now mark this CC as interviewed completely\n let hadCriticalTimeout = false;\n // By default, assume all status sensors to be supported\n let doorSupported = true;\n let boltSupported = true;\n let latchSupported = true;\n if (api.version >= 4) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"requesting lock capabilities...\",\n direction: \"outbound\",\n });\n const resp = await api.getCapabilities();\n if (resp) {\n const logMessage = `received lock capabilities:\nsupported operation types: ${resp.supportedOperationTypes\n .map((t) => getEnumMemberName(DoorLockOperationType, t))\n .join(\", \")}\nsupported door lock modes: ${resp.supportedDoorLockModes\n .map((t) => getEnumMemberName(DoorLockMode, t))\n .map((str) => `\\n\u00B7 ${str}`)\n .join(\"\")}\nsupported outside handles: ${resp.supportedOutsideHandles\n .map(String)\n .join(\", \")}\nsupported inside handles: ${resp.supportedInsideHandles.map(String).join(\", \")}\nsupports door status: ${resp.doorSupported}\nsupports bolt status: ${resp.boltSupported}\nsupports latch status: ${resp.latchSupported}\nsupports auto-relock: ${resp.autoRelockSupported}\nsupports hold-and-release: ${resp.holdAndReleaseSupported}\nsupports twist assist: ${resp.twistAssistSupported}\nsupports block to block: ${resp.blockToBlockSupported}`;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n doorSupported = resp.doorSupported;\n boltSupported = resp.boltSupported;\n latchSupported = resp.latchSupported;\n // Update metadata of settable states\n const targetModeValue = DoorLockCCValues.targetMode;\n this.setMetadata(ctx, targetModeValue, {\n ...targetModeValue.meta,\n states: enumValuesToMetadataStates(DoorLockMode, resp.supportedDoorLockModes),\n });\n const operationTypeValue = DoorLockCCValues.operationType;\n this.setMetadata(ctx, operationTypeValue, {\n ...operationTypeValue.meta,\n states: enumValuesToMetadataStates(DoorLockOperationType, resp.supportedOperationTypes),\n });\n }\n else {\n hadCriticalTimeout = true;\n }\n }\n if (!hadCriticalTimeout) {\n // Save support information for the status values\n const doorStatusValue = DoorLockCCValues.doorStatus;\n if (doorSupported)\n this.setMetadata(ctx, doorStatusValue);\n this.setValue(ctx, DoorLockCCValues.doorSupported, doorSupported);\n const latchStatusValue = DoorLockCCValues.latchStatus;\n if (latchSupported)\n this.setMetadata(ctx, latchStatusValue);\n this.setValue(ctx, DoorLockCCValues.latchSupported, latchSupported);\n const boltStatusValue = DoorLockCCValues.boltStatus;\n if (boltSupported)\n this.setMetadata(ctx, boltStatusValue);\n this.setValue(ctx, DoorLockCCValues.boltSupported, boltSupported);\n }\n await this.refreshValues(ctx);\n // Remember that the interview is complete\n if (!hadCriticalTimeout)\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Door Lock\"], ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"requesting lock configuration...\",\n direction: \"outbound\",\n });\n const config = await api.getConfiguration();\n if (config) {\n let logMessage = `received lock configuration:\noperation type: ${getEnumMemberName(DoorLockOperationType, config.operationType)}`;\n if (config.operationType === DoorLockOperationType.Timed) {\n logMessage += `\nlock timeout: ${config.lockTimeoutConfiguration} seconds\n`;\n }\n logMessage += `\noutside handles can open door: ${config.outsideHandlesCanOpenDoorConfiguration\n .map(String)\n .join(\", \")}\ninside handles can open door: ${config.insideHandlesCanOpenDoorConfiguration\n .map(String)\n .join(\", \")}`;\n if (api.version >= 4) {\n logMessage += `\nauto-relock time ${config.autoRelockTime ?? \"-\"} seconds\nhold-and-release time ${config.holdAndReleaseTime ?? \"-\"} seconds\ntwist assist ${!!config.twistAssist}\nblock to block ${!!config.blockToBlock}`;\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"requesting current lock status...\",\n direction: \"outbound\",\n });\n const status = await api.get();\n if (status) {\n let logMessage = `received lock status:\ncurrent mode: ${getEnumMemberName(DoorLockMode, status.currentMode)}`;\n if (status.targetMode != undefined) {\n logMessage += `\ntarget mode: ${getEnumMemberName(DoorLockMode, status.targetMode)}\nremaining duration: ${status.duration?.toString() ?? \"undefined\"}`;\n }\n if (status.lockTimeout != undefined) {\n logMessage += `\nlock timeout: ${status.lockTimeout} seconds`;\n }\n if (status.doorStatus != undefined) {\n logMessage += `\ndoor status: ${status.doorStatus}`;\n }\n if (status.boltStatus != undefined) {\n logMessage += `\nbolt status: ${status.boltStatus}`;\n }\n if (status.latchStatus != undefined) {\n logMessage += `\nlatch status: ${status.latchStatus}`;\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n }\n }\n /**\n * Returns whether the node supports auto relock.\n * This only works AFTER the node has been interviewed.\n */\n public static supportsAutoRelockCached(ctx: GetValueDB, endpoint: EndpointId): boolean {\n return !!ctx\n .getValueDB(endpoint.nodeId)\n .getValue(DoorLockCCValues.autoRelockSupported.endpoint(endpoint.index));\n }\n /**\n * Returns whether the node supports hold and release.\n * This only works AFTER the node has been interviewed.\n */\n public static supportsHoldAndReleaseCached(ctx: GetValueDB, endpoint: EndpointId): boolean {\n return !!ctx\n .getValueDB(endpoint.nodeId)\n .getValue(DoorLockCCValues.holdAndReleaseSupported.endpoint(endpoint.index));\n }\n /**\n * Returns whether the node supports twist assist.\n * This only works AFTER the node has been interviewed.\n */\n public static supportsTwistAssistCached(ctx: GetValueDB, endpoint: EndpointId): boolean {\n return !!ctx\n .getValueDB(endpoint.nodeId)\n .getValue(DoorLockCCValues.twistAssistSupported.endpoint(endpoint.index));\n }\n /**\n * Returns whether the node supports block to block.\n * This only works AFTER the node has been interviewed.\n */\n public static supportsBlockToBlockCached(ctx: GetValueDB, endpoint: EndpointId): boolean {\n return !!ctx\n .getValueDB(endpoint.nodeId)\n .getValue(DoorLockCCValues.blockToBlockSupported.endpoint(endpoint.index));\n }\n /**\n * Returns the supported outside handles.\n * This only works AFTER the node has been interviewed.\n */\n public static getSupportedOutsideHandlesCached(ctx: GetValueDB, endpoint: EndpointId): MaybeNotKnown<DoorHandleStatus> {\n return ctx\n .getValueDB(endpoint.nodeId)\n .getValue(DoorLockCCValues.supportedOutsideHandles.endpoint(endpoint.index));\n }\n /**\n * Returns the supported inside handles.\n * This only works AFTER the node has been interviewed.\n */\n public static getSupportedInsideHandlesCached(ctx: GetValueDB, endpoint: EndpointId): MaybeNotKnown<DoorHandleStatus> {\n return ctx\n .getValueDB(endpoint.nodeId)\n .getValue(DoorLockCCValues.supportedInsideHandles.endpoint(endpoint.index));\n }\n}\n// @publicAPI\nexport interface DoorLockCCOperationSetOptions {\n mode: DoorLockMode;\n}\n@CCCommand(DoorLockCommand.OperationSet)\n@useSupervision()\nexport class DoorLockCCOperationSet extends DoorLockCC {\n public constructor(options: WithAddress<DoorLockCCOperationSetOptions>) {\n super(options);\n if (options.mode === DoorLockMode.Unknown) {\n throw new ZWaveError(`Unknown is not a valid door lock target state!`, ZWaveErrorCodes.Argument_Invalid);\n }\n this.mode = options.mode;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): DoorLockCCOperationSet {\n validatePayload(raw.payload.length >= 1);\n const mode: DoorLockMode = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n mode,\n });\n }\n public mode: DoorLockMode;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.mode]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"target mode\": getEnumMemberName(DoorLockMode, this.mode),\n },\n };\n }\n}\n// @publicAPI\nexport interface DoorLockCCOperationReportOptions {\n currentMode: DoorLockMode;\n outsideHandlesCanOpenDoor: DoorHandleStatus;\n insideHandlesCanOpenDoor: DoorHandleStatus;\n doorStatus?: \"closed\" | \"open\";\n boltStatus?: \"unlocked\" | \"locked\";\n latchStatus?: \"closed\" | \"open\";\n lockTimeout?: number;\n targetMode?: DoorLockMode;\n duration?: Duration;\n}\n@CCCommand(DoorLockCommand.OperationReport)\n@ccValueProperty(\"currentMode\", DoorLockCCValues.currentMode)\n@ccValueProperty(\"targetMode\", DoorLockCCValues.targetMode)\n@ccValueProperty(\"duration\", DoorLockCCValues.duration)\n@ccValueProperty(\"outsideHandlesCanOpenDoor\", DoorLockCCValues.outsideHandlesCanOpenDoor)\n@ccValueProperty(\"insideHandlesCanOpenDoor\", DoorLockCCValues.insideHandlesCanOpenDoor)\n@ccValueProperty(\"lockTimeout\", DoorLockCCValues.lockTimeout)\nexport class DoorLockCCOperationReport extends DoorLockCC {\n public constructor(options: WithAddress<DoorLockCCOperationReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.currentMode = options.currentMode;\n this.outsideHandlesCanOpenDoor = options.outsideHandlesCanOpenDoor;\n this.insideHandlesCanOpenDoor = options.insideHandlesCanOpenDoor;\n this.doorStatus = options.doorStatus;\n this.boltStatus = options.boltStatus;\n this.latchStatus = options.latchStatus;\n this.lockTimeout = options.lockTimeout;\n this.targetMode = options.targetMode;\n this.duration = options.duration;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): DoorLockCCOperationReport {\n validatePayload(raw.payload.length >= 5);\n const currentMode: DoorLockMode = raw.payload[0];\n const outsideHandlesCanOpenDoor: DoorHandleStatus = [\n !!(raw.payload[1] & 16),\n !!(raw.payload[1] & 32),\n !!(raw.payload[1] & 64),\n !!(raw.payload[1] & 128),\n ];\n const insideHandlesCanOpenDoor: DoorHandleStatus = [\n !!(raw.payload[1] & 0b0001),\n !!(raw.payload[1] & 0b0010),\n !!(raw.payload[1] & 0b0100),\n !!(raw.payload[1] & 0b1000),\n ];\n const doorStatus: \"closed\" | \"open\" | undefined = !!(raw.payload[2] & 0b1)\n ? \"closed\"\n : \"open\";\n const boltStatus: \"unlocked\" | \"locked\" | undefined = !!(raw.payload[2] & 0b10) ? \"unlocked\" : \"locked\";\n const latchStatus: \"closed\" | \"open\" | undefined = !!(raw.payload[2] & 0b100)\n ? \"closed\"\n : \"open\";\n // Ignore invalid timeout values\n const lockTimeoutMinutes = raw.payload[3];\n const lockTimeoutSeconds = raw.payload[4];\n let lockTimeout: number | undefined;\n if (lockTimeoutMinutes <= 253 && lockTimeoutSeconds <= 59) {\n lockTimeout = lockTimeoutSeconds + lockTimeoutMinutes * 60;\n }\n let targetMode: DoorLockMode | undefined;\n let duration: Duration | undefined;\n if (raw.payload.length >= 7) {\n targetMode = raw.payload[5];\n duration = Duration.parseReport(raw.payload[6]);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n currentMode,\n outsideHandlesCanOpenDoor,\n insideHandlesCanOpenDoor,\n doorStatus,\n boltStatus,\n latchStatus,\n lockTimeout,\n targetMode,\n duration,\n });\n }\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n const handles = [\n ...this.insideHandlesCanOpenDoor,\n ...this.outsideHandlesCanOpenDoor,\n ]\n .map((val, i) => (val ? 1 << i : 0))\n .reduce((acc, cur) => acc | cur, 0);\n const doorCondition = (this.doorStatus === \"closed\" ? 0b1 : 0)\n | (this.boltStatus === \"unlocked\" ? 0b10 : 0)\n | (this.latchStatus === \"closed\" ? 0b100 : 0);\n let lockTimeoutMinutes = 0xfe;\n let lockTimeoutSeconds = 0xfe;\n if (this.lockTimeout != undefined) {\n lockTimeoutMinutes = Math.floor(this.lockTimeout / 60);\n lockTimeoutSeconds = this.lockTimeout % 60;\n }\n const payload = [\n this.currentMode,\n handles,\n doorCondition,\n lockTimeoutMinutes,\n lockTimeoutSeconds,\n ];\n if (this.targetMode != undefined) {\n payload.push(this.targetMode);\n payload.push((this.duration ?? Duration.default()).serializeReport());\n }\n this.payload = Bytes.from(payload);\n return super.serialize(ctx);\n }\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n // Only store the door/bolt/latch status if the lock supports it\n const supportsDoorStatus = !!this.getValue(ctx, DoorLockCCValues.doorSupported);\n if (supportsDoorStatus) {\n this.setValue(ctx, DoorLockCCValues.doorStatus, this.doorStatus);\n }\n const supportsBoltStatus = !!this.getValue(ctx, DoorLockCCValues.boltSupported);\n if (supportsBoltStatus) {\n this.setValue(ctx, DoorLockCCValues.boltStatus, this.boltStatus);\n }\n const supportsLatchStatus = !!this.getValue(ctx, DoorLockCCValues.latchSupported);\n if (supportsLatchStatus) {\n this.setValue(ctx, DoorLockCCValues.latchStatus, this.latchStatus);\n }\n return true;\n }\n public readonly currentMode: DoorLockMode;\n public readonly targetMode?: DoorLockMode;\n public readonly duration?: Duration;\n public readonly outsideHandlesCanOpenDoor: DoorHandleStatus;\n public readonly insideHandlesCanOpenDoor: DoorHandleStatus;\n public readonly latchStatus?: \"open\" | \"closed\";\n public readonly boltStatus?: \"locked\" | \"unlocked\";\n public readonly doorStatus?: \"open\" | \"closed\";\n public readonly lockTimeout?: number; // in seconds\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"current mode\": getEnumMemberName(DoorLockMode, this.currentMode),\n \"active outside handles\": this.outsideHandlesCanOpenDoor.join(\", \"),\n \"active inside handles\": this.insideHandlesCanOpenDoor.join(\", \"),\n };\n if (this.latchStatus != undefined) {\n message[\"latch status\"] = this.latchStatus;\n }\n if (this.boltStatus != undefined) {\n message[\"bolt status\"] = this.boltStatus;\n }\n if (this.doorStatus != undefined) {\n message[\"door status\"] = this.doorStatus;\n }\n if (this.targetMode != undefined) {\n message[\"target mode\"] = getEnumMemberName(DoorLockMode, this.targetMode);\n }\n if (this.duration != undefined) {\n message[\"remaining duration\"] = this.duration.toString();\n }\n if (this.lockTimeout != undefined) {\n message[\"lock timeout\"] = `${this.lockTimeout} seconds`;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(DoorLockCommand.OperationGet)\n@expectedCCResponse(DoorLockCCOperationReport)\nexport class DoorLockCCOperationGet extends DoorLockCC {\n}\n// @publicAPI\nexport interface DoorLockCCConfigurationReportOptions {\n operationType: DoorLockOperationType;\n outsideHandlesCanOpenDoorConfiguration: DoorHandleStatus;\n insideHandlesCanOpenDoorConfiguration: DoorHandleStatus;\n lockTimeoutConfiguration?: number;\n autoRelockTime?: number;\n holdAndReleaseTime?: number;\n twistAssist?: boolean;\n blockToBlock?: boolean;\n}\n@CCCommand(DoorLockCommand.ConfigurationReport)\n@ccValueProperty(\"operationType\", DoorLockCCValues.operationType)\n@ccValueProperty(\"outsideHandlesCanOpenDoorConfiguration\", DoorLockCCValues.outsideHandlesCanOpenDoorConfiguration)\n@ccValueProperty(\"insideHandlesCanOpenDoorConfiguration\", DoorLockCCValues.insideHandlesCanOpenDoorConfiguration)\n@ccValueProperty(\"lockTimeoutConfiguration\", DoorLockCCValues.lockTimeoutConfiguration)\nexport class DoorLockCCConfigurationReport extends DoorLockCC {\n public constructor(options: WithAddress<DoorLockCCConfigurationReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.operationType = options.operationType;\n this.outsideHandlesCanOpenDoorConfiguration =\n options.outsideHandlesCanOpenDoorConfiguration;\n this.insideHandlesCanOpenDoorConfiguration =\n options.insideHandlesCanOpenDoorConfiguration;\n this.lockTimeoutConfiguration = options.lockTimeoutConfiguration;\n this.autoRelockTime = options.autoRelockTime;\n this.holdAndReleaseTime = options.holdAndReleaseTime;\n this.twistAssist = options.twistAssist;\n this.blockToBlock = options.blockToBlock;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): DoorLockCCConfigurationReport {\n validatePayload(raw.payload.length >= 4);\n const operationType: DoorLockOperationType = raw.payload[0];\n const outsideHandlesCanOpenDoorConfiguration: DoorHandleStatus = [\n !!(raw.payload[1] & 16),\n !!(raw.payload[1] & 32),\n !!(raw.payload[1] & 64),\n !!(raw.payload[1] & 128),\n ];\n const insideHandlesCanOpenDoorConfiguration: DoorHandleStatus = [\n !!(raw.payload[1] & 0b0001),\n !!(raw.payload[1] & 0b0010),\n !!(raw.payload[1] & 0b0100),\n !!(raw.payload[1] & 0b1000),\n ];\n let lockTimeoutConfiguration: number | undefined;\n if (operationType === DoorLockOperationType.Timed) {\n const lockTimeoutMinutes = raw.payload[2];\n const lockTimeoutSeconds = raw.payload[3];\n if (lockTimeoutMinutes <= 0xfd && lockTimeoutSeconds <= 59) {\n lockTimeoutConfiguration = lockTimeoutSeconds\n + lockTimeoutMinutes * 60;\n }\n }\n let autoRelockTime: number | undefined;\n let holdAndReleaseTime: number | undefined;\n let twistAssist: boolean | undefined;\n let blockToBlock: boolean | undefined;\n if (raw.payload.length >= 5) {\n autoRelockTime = raw.payload.readUInt16BE(4);\n holdAndReleaseTime = raw.payload.readUInt16BE(6);\n const flags = raw.payload[8];\n twistAssist = !!(flags & 0b1);\n blockToBlock = !!(flags & 0b10);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n operationType,\n outsideHandlesCanOpenDoorConfiguration,\n insideHandlesCanOpenDoorConfiguration,\n lockTimeoutConfiguration,\n autoRelockTime,\n holdAndReleaseTime,\n twistAssist,\n blockToBlock,\n });\n }\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n const handles = [\n ...this.insideHandlesCanOpenDoorConfiguration,\n ...this.outsideHandlesCanOpenDoorConfiguration,\n ]\n .map((val, i) => (val ? 1 << i : 0))\n .reduce((acc, cur) => acc | cur, 0);\n let lockTimeoutMinutes: number;\n let lockTimeoutSeconds: number;\n if (this.operationType === DoorLockOperationType.Timed\n && this.lockTimeoutConfiguration != undefined) {\n lockTimeoutMinutes = Math.floor(this.lockTimeoutConfiguration / 60);\n lockTimeoutSeconds = this.lockTimeoutConfiguration % 60;\n }\n else {\n lockTimeoutMinutes = lockTimeoutSeconds = 0xfe;\n }\n const flags = (this.twistAssist ? 0b1 : 0)\n | (this.blockToBlock ? 0b10 : 0);\n this.payload = Bytes.from([\n this.operationType,\n handles,\n lockTimeoutMinutes,\n lockTimeoutSeconds,\n ]);\n if (this.autoRelockTime != undefined\n || this.holdAndReleaseTime != undefined\n || this.twistAssist != undefined\n || this.blockToBlock != undefined) {\n const extended = Bytes.alloc(5);\n extended.writeUInt16BE((this.autoRelockTime ?? 0) & 0xffff, 0);\n extended.writeUInt16BE((this.holdAndReleaseTime ?? 0) & 0xffff, 2);\n extended[4] = flags;\n this.payload = Bytes.concat([this.payload, extended]);\n }\n return super.serialize(ctx);\n }\n public readonly operationType: DoorLockOperationType;\n public readonly outsideHandlesCanOpenDoorConfiguration: DoorHandleStatus;\n public readonly insideHandlesCanOpenDoorConfiguration: DoorHandleStatus;\n public readonly lockTimeoutConfiguration?: number;\n // These are not always supported and have to be persisted manually\n // to avoid unsupported values being exposed to the user\n public readonly autoRelockTime?: number;\n public readonly holdAndReleaseTime?: number;\n public readonly twistAssist?: boolean;\n public readonly blockToBlock?: boolean;\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n // Only store the autoRelockTime etc. params if the lock supports it\n const supportsAutoRelock = !!this.getValue(ctx, DoorLockCCValues.autoRelockSupported);\n if (supportsAutoRelock) {\n this.setValue(ctx, DoorLockCCValues.autoRelockTime, this.autoRelockTime);\n }\n const supportsHoldAndRelease = !!this.getValue(ctx, DoorLockCCValues.holdAndReleaseSupported);\n if (supportsHoldAndRelease) {\n this.setValue(ctx, DoorLockCCValues.holdAndReleaseTime, this.holdAndReleaseTime);\n }\n const supportsTwistAssist = !!this.getValue(ctx, DoorLockCCValues.twistAssistSupported);\n if (supportsTwistAssist) {\n this.setValue(ctx, DoorLockCCValues.twistAssist, this.twistAssist);\n }\n const supportsBlockToBlock = !!this.getValue(ctx, DoorLockCCValues.blockToBlockSupported);\n if (supportsBlockToBlock) {\n this.setValue(ctx, DoorLockCCValues.blockToBlock, this.blockToBlock);\n }\n return true;\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"operation type\": getEnumMemberName(DoorLockOperationType, this.operationType),\n \"outside handle configuration\": this\n .outsideHandlesCanOpenDoorConfiguration.join(\", \"),\n \"inside handle configuration\": this\n .insideHandlesCanOpenDoorConfiguration.join(\", \"),\n };\n if (this.lockTimeoutConfiguration != undefined) {\n message[\"timed mode duration\"] = `${this.lockTimeoutConfiguration} seconds`;\n }\n if (this.autoRelockTime != undefined) {\n message[\"auto-relock time\"] = `${this.autoRelockTime} seconds`;\n }\n if (this.holdAndReleaseTime != undefined) {\n message[\"hold-and-release time\"] = `${this.holdAndReleaseTime} seconds`;\n }\n if (this.twistAssist != undefined) {\n message[\"twist assist enabled\"] = this.twistAssist;\n }\n if (this.blockToBlock != undefined) {\n message[\"block-to-block enabled\"] = this.blockToBlock;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(DoorLockCommand.ConfigurationGet)\n@expectedCCResponse(DoorLockCCConfigurationReport)\nexport class DoorLockCCConfigurationGet extends DoorLockCC {\n}\n// @publicAPI\nexport type DoorLockCCConfigurationSetOptions = ({\n operationType: DoorLockOperationType.Timed;\n lockTimeoutConfiguration: number;\n} | {\n operationType: DoorLockOperationType.Constant;\n lockTimeoutConfiguration?: undefined;\n}) & {\n outsideHandlesCanOpenDoorConfiguration: DoorHandleStatus;\n insideHandlesCanOpenDoorConfiguration: DoorHandleStatus;\n // V4+\n autoRelockTime?: number;\n holdAndReleaseTime?: number;\n twistAssist?: boolean;\n blockToBlock?: boolean;\n};\n@CCCommand(DoorLockCommand.ConfigurationSet)\n@useSupervision()\nexport class DoorLockCCConfigurationSet extends DoorLockCC {\n public constructor(options: WithAddress<DoorLockCCConfigurationSetOptions>) {\n super(options);\n this.operationType = options.operationType;\n this.outsideHandlesCanOpenDoorConfiguration =\n options.outsideHandlesCanOpenDoorConfiguration;\n this.insideHandlesCanOpenDoorConfiguration =\n options.insideHandlesCanOpenDoorConfiguration;\n this.lockTimeoutConfiguration = options.lockTimeoutConfiguration;\n this.autoRelockTime = options.autoRelockTime;\n this.holdAndReleaseTime = options.holdAndReleaseTime;\n this.twistAssist = options.twistAssist;\n this.blockToBlock = options.blockToBlock;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): DoorLockCCConfigurationSet {\n validatePayload(raw.payload.length >= 4);\n const operationType: DoorLockOperationType = raw.payload[0];\n const outsideHandlesCanOpenDoorConfiguration: DoorHandleStatus = [\n !!(raw.payload[1] & 16),\n !!(raw.payload[1] & 32),\n !!(raw.payload[1] & 64),\n !!(raw.payload[1] & 128),\n ];\n const insideHandlesCanOpenDoorConfiguration: DoorHandleStatus = [\n !!(raw.payload[1] & 0b0001),\n !!(raw.payload[1] & 0b0010),\n !!(raw.payload[1] & 0b0100),\n !!(raw.payload[1] & 0b1000),\n ];\n let lockTimeoutConfiguration: number | undefined;\n if (operationType === DoorLockOperationType.Timed) {\n const lockTimeoutMinutes = raw.payload[2];\n const lockTimeoutSeconds = raw.payload[3];\n if (lockTimeoutMinutes <= 0xfd && lockTimeoutSeconds <= 59) {\n lockTimeoutConfiguration = lockTimeoutSeconds\n + lockTimeoutMinutes * 60;\n }\n }\n let autoRelockTime: number | undefined;\n let holdAndReleaseTime: number | undefined;\n let twistAssist: boolean | undefined;\n let blockToBlock: boolean | undefined;\n if (raw.payload.length >= 9) {\n autoRelockTime = raw.payload.readUInt16BE(4);\n holdAndReleaseTime = raw.payload.readUInt16BE(6);\n const flags = raw.payload[8];\n twistAssist = !!(flags & 0b1);\n blockToBlock = !!(flags & 0b10);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n operationType,\n outsideHandlesCanOpenDoorConfiguration,\n insideHandlesCanOpenDoorConfiguration,\n lockTimeoutConfiguration,\n autoRelockTime,\n holdAndReleaseTime,\n twistAssist,\n blockToBlock,\n } as WithAddress<DoorLockCCConfigurationSetOptions>);\n }\n public operationType: DoorLockOperationType;\n public outsideHandlesCanOpenDoorConfiguration: DoorHandleStatus;\n public insideHandlesCanOpenDoorConfiguration: DoorHandleStatus;\n public lockTimeoutConfiguration?: number;\n public autoRelockTime?: number;\n public holdAndReleaseTime?: number;\n public twistAssist?: boolean;\n public blockToBlock?: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n const insideHandles = isArray(this.insideHandlesCanOpenDoorConfiguration)\n ? this.insideHandlesCanOpenDoorConfiguration\n : [];\n const outsideHandles = isArray(this.outsideHandlesCanOpenDoorConfiguration)\n ? this.outsideHandlesCanOpenDoorConfiguration\n : [];\n const handles = [...insideHandles, ...outsideHandles]\n .map((val, i) => (val ? 1 << i : 0))\n .reduce((acc, cur) => acc | cur, 0);\n let lockTimeoutMinutes: number;\n let lockTimeoutSeconds: number;\n if (this.operationType === DoorLockOperationType.Constant) {\n lockTimeoutMinutes = lockTimeoutSeconds = 0xfe;\n }\n else {\n lockTimeoutMinutes = Math.floor(this.lockTimeoutConfiguration! / 60);\n lockTimeoutSeconds = this.lockTimeoutConfiguration! % 60;\n }\n const flags = (this.twistAssist ? 0b1 : 0)\n | (this.blockToBlock ? 0b10 : 0);\n this.payload = Bytes.from([\n this.operationType,\n handles,\n lockTimeoutMinutes,\n lockTimeoutSeconds,\n // placeholder for auto relock time\n 0,\n 0,\n // placeholder for hold and release time\n 0,\n 0,\n flags,\n ]);\n this.payload.writeUInt16BE((this.autoRelockTime ?? 0) & 0xffff, 4);\n this.payload.writeUInt16BE((this.holdAndReleaseTime ?? 0) & 0xffff, 6);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const insideHandles = isArray(this.insideHandlesCanOpenDoorConfiguration)\n ? this.insideHandlesCanOpenDoorConfiguration\n : [];\n const outsideHandles = isArray(this.outsideHandlesCanOpenDoorConfiguration)\n ? this.outsideHandlesCanOpenDoorConfiguration\n : [];\n const message: MessageRecord = {\n \"operation type\": getEnumMemberName(DoorLockOperationType, this.operationType),\n \"outside handle configuration\": outsideHandles.join(\", \"),\n \"inside handle configuration\": insideHandles.join(\", \"),\n };\n if (this.lockTimeoutConfiguration != undefined) {\n message[\"timed mode duration\"] = `${this.lockTimeoutConfiguration} seconds`;\n }\n if (this.autoRelockTime != undefined) {\n message[\"auto-relock time\"] = `${this.autoRelockTime} seconds`;\n }\n if (this.holdAndReleaseTime != undefined) {\n message[\"hold-and-release time\"] = `${this.holdAndReleaseTime} seconds`;\n }\n if (this.twistAssist != undefined) {\n message[\"enable twist assist\"] = this.twistAssist;\n }\n if (this.blockToBlock != undefined) {\n message[\"enable block-to-block\"] = this.blockToBlock;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface DoorLockCCCapabilitiesReportOptions {\n supportedOperationTypes: DoorLockOperationType[];\n supportedDoorLockModes: DoorLockMode[];\n supportedOutsideHandles: DoorHandleStatus;\n supportedInsideHandles: DoorHandleStatus;\n doorSupported: boolean;\n boltSupported: boolean;\n latchSupported: boolean;\n blockToBlockSupported: boolean;\n twistAssistSupported: boolean;\n holdAndReleaseSupported: boolean;\n autoRelockSupported: boolean;\n}\n@CCCommand(DoorLockCommand.CapabilitiesReport)\n@ccValueProperty(\"supportedOutsideHandles\", DoorLockCCValues.supportedOutsideHandles)\n@ccValueProperty(\"supportedInsideHandles\", DoorLockCCValues.supportedInsideHandles)\n@ccValueProperty(\"autoRelockSupported\", DoorLockCCValues.autoRelockSupported)\n@ccValueProperty(\"holdAndReleaseSupported\", DoorLockCCValues.holdAndReleaseSupported)\n@ccValueProperty(\"twistAssistSupported\", DoorLockCCValues.twistAssistSupported)\n@ccValueProperty(\"blockToBlockSupported\", DoorLockCCValues.blockToBlockSupported)\nexport class DoorLockCCCapabilitiesReport extends DoorLockCC {\n public constructor(options: WithAddress<DoorLockCCCapabilitiesReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.supportedOperationTypes = options.supportedOperationTypes;\n this.supportedDoorLockModes = options.supportedDoorLockModes;\n this.supportedOutsideHandles = options.supportedOutsideHandles;\n this.supportedInsideHandles = options.supportedInsideHandles;\n this.doorSupported = options.doorSupported;\n this.boltSupported = options.boltSupported;\n this.latchSupported = options.latchSupported;\n this.blockToBlockSupported = options.blockToBlockSupported;\n this.twistAssistSupported = options.twistAssistSupported;\n this.holdAndReleaseSupported = options.holdAndReleaseSupported;\n this.autoRelockSupported = options.autoRelockSupported;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): DoorLockCCCapabilitiesReport {\n // parse variable length operation type bit mask\n validatePayload(raw.payload.length >= 1);\n const bitMaskLength = raw.payload[0] & 0b11111;\n let offset = 1;\n validatePayload(raw.payload.length >= offset + bitMaskLength + 1);\n const supportedOperationTypes: DoorLockOperationType[] = parseBitMask(raw.payload.subarray(offset, offset + bitMaskLength), \n // bit 0 is reserved, bitmask starts at 1\n 0);\n offset += bitMaskLength;\n // parse variable length door lock mode list\n const listLength = raw.payload[offset];\n offset += 1;\n validatePayload(raw.payload.length >= offset + listLength + 3);\n const supportedDoorLockModes: DoorLockMode[] = [\n ...raw.payload.subarray(offset, offset + listLength),\n ];\n offset += listLength;\n const supportedOutsideHandles: DoorHandleStatus = [\n !!(raw.payload[offset] & 16),\n !!(raw.payload[offset] & 32),\n !!(raw.payload[offset] & 64),\n !!(raw.payload[offset] & 128),\n ];\n const supportedInsideHandles: DoorHandleStatus = [\n !!(raw.payload[offset] & 0b0001),\n !!(raw.payload[offset] & 0b0010),\n !!(raw.payload[offset] & 0b0100),\n !!(raw.payload[offset] & 0b1000),\n ];\n const doorSupported = !!(raw.payload[offset + 1] & 0b1);\n const boltSupported = !!(raw.payload[offset + 1] & 0b10);\n const latchSupported = !!(raw.payload[offset + 1] & 0b100);\n const blockToBlockSupported = !!(raw.payload[offset + 2] & 0b1);\n const twistAssistSupported = !!(raw.payload[offset + 2] & 0b10);\n const holdAndReleaseSupported = !!(raw.payload[offset + 2] & 0b100);\n const autoRelockSupported = !!(raw.payload[offset + 2] & 0b1000);\n return new this({\n nodeId: ctx.sourceNodeId,\n supportedOperationTypes,\n supportedDoorLockModes,\n supportedOutsideHandles,\n supportedInsideHandles,\n doorSupported,\n boltSupported,\n latchSupported,\n blockToBlockSupported,\n twistAssistSupported,\n holdAndReleaseSupported,\n autoRelockSupported,\n });\n }\n public readonly supportedOperationTypes: readonly DoorLockOperationType[];\n public readonly supportedDoorLockModes: readonly DoorLockMode[];\n public readonly supportedOutsideHandles: DoorHandleStatus;\n public readonly supportedInsideHandles: DoorHandleStatus;\n // These 3 are not automatically persisted because in CC version 3\n // we have to assume them to be supported. In v4 we can query this.\n public readonly latchSupported: boolean;\n public readonly boltSupported: boolean;\n public readonly doorSupported: boolean;\n public readonly autoRelockSupported: boolean;\n public readonly holdAndReleaseSupported: boolean;\n public readonly twistAssistSupported: boolean;\n public readonly blockToBlockSupported: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n // Operation type bitmask (variable length)\n const operationTypeMask = encodeBitMask(this.supportedOperationTypes, undefined, 0);\n // Door lock mode list\n const modeList = Bytes.from(this.supportedDoorLockModes as number[]);\n const handles = [\n ...this.supportedInsideHandles,\n ...this.supportedOutsideHandles,\n ]\n .map((val, i) => (val ? 1 << i : 0))\n .reduce((acc, cur) => acc | cur, 0);\n const componentStatus = (this.doorSupported ? 0b1 : 0)\n | (this.boltSupported ? 0b10 : 0)\n | (this.latchSupported ? 0b100 : 0);\n const featureFlags = (this.blockToBlockSupported ? 0b1 : 0)\n | (this.twistAssistSupported ? 0b10 : 0)\n | (this.holdAndReleaseSupported ? 0b100 : 0)\n | (this.autoRelockSupported ? 0b1000 : 0);\n this.payload = Bytes.concat([\n [operationTypeMask.length & 0b11111],\n operationTypeMask,\n [modeList.length],\n modeList,\n [handles, componentStatus, featureFlags],\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n door: this.doorSupported,\n bolt: this.boltSupported,\n latch: this.latchSupported,\n \"block-to-block feature\": this.blockToBlockSupported,\n \"twist assist feature\": this.twistAssistSupported,\n \"hold-and-release feature\": this.holdAndReleaseSupported,\n \"auto-relock feature\": this.autoRelockSupported,\n \"operation types\": this.supportedOperationTypes\n .map((t) => `\\n\u00B7 ${getEnumMemberName(DoorLockOperationType, t)}`)\n .join(\"\"),\n \"door lock modes\": this.supportedDoorLockModes\n .map((t) => `\\n\u00B7 ${getEnumMemberName(DoorLockMode, t)}`)\n .join(\"\"),\n \"outside handles\": this.supportedOutsideHandles.join(\", \"),\n \"inside handles\": this.supportedInsideHandles.join(\", \"),\n },\n };\n }\n}\n@CCCommand(DoorLockCommand.CapabilitiesGet)\n@expectedCCResponse(DoorLockCCCapabilitiesReport)\nexport class DoorLockCCCapabilitiesGet extends DoorLockCC {\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qBAAgC;AAEhC,kBAA8W;AAC9W,oBAA+C;AAC/C,wBAAwB;AACxB,iBAAiO;AACjO,0BAAkJ;AAClJ,oCAAiI;AAEjI,mBAA6F;AAE7F,gCAAiC;AAVjC,MAAM,EAAE,gCAAgC,4CAA2C,IAAK;AAYlF,SAAU,iCAAiC,KAAiB,UAAoB;AAClF,QAAM,UAAU,IAAI,cAAc,SAAS,MAAM;AACjD,MAAI,CAAC;AACD,WAAO;AACX,SAAO,CAAC,CAAC,QAAQ,SAAS,2CAAiB,eAAe,SAAS,SAAS,KAAK,CAAC;AACtF;AALgB;AAMV,SAAU,gCAAgC,KAAiB,UAAoB;AACjF,QAAM,UAAU,IAAI,cAAc,SAAS,MAAM;AACjD,MAAI,CAAC;AACD,WAAO;AACX,SAAO,CAAC,CAAC,QAAQ,SAAS,2CAAiB,cAAc,SAAS,SAAS,KAAK,CAAC;AACrF;AALgB;AAMV,SAAU,gCAAgC,KAAiB,UAAoB;AACjF,QAAM,UAAU,IAAI,cAAc,SAAS,MAAM;AACjD,MAAI,CAAC;AACD,WAAO;AACX,SAAO,CAAC,CAAC,QAAQ,SAAS,2CAAiB,cAAc,SAAS,SAAS,KAAK,CAAC;AACrF;AALgB;AAMV,SAAU,uCAAuC,KAAiB,UAAoB;AACxF,QAAM,UAAU,IAAI,cAAc,SAAS,MAAM;AACjD,MAAI,CAAC;AACD,WAAO;AACX,SAAO,CAAC,CAAC,QAAQ,SAAS,2CAAiB,qBAAqB,SAAS,SAAS,KAAK,CAAC;AAC5F;AALgB;AAMV,SAAU,wCAAwC,KAAiB,UAAoB;AACzF,QAAM,UAAU,IAAI,cAAc,SAAS,MAAM;AACjD,MAAI,CAAC;AACD,WAAO;AACX,SAAO,CAAC,CAAC,QAAQ,SAAS,2CAAiB,sBAAsB,SAAS,SAAS,KAAK,CAAC;AAC7F;AALgB;AAMV,SAAU,sCAAsC,KAAiB,UAAoB;AACvF,QAAM,UAAU,IAAI,cAAc,SAAS,MAAM;AACjD,MAAI,CAAC;AACD,WAAO;AACX,SAAO,CAAC,CAAC,QAAQ,SAAS,2CAAiB,oBAAoB,SAAS,SAAS,KAAK,CAAC;AAC3F;AALgB;AAMV,SAAU,0CAA0C,KAAiB,UAAoB;AAC3F,QAAM,UAAU,IAAI,cAAc,SAAS,MAAM;AACjD,MAAI,CAAC;AACD,WAAO;AACX,SAAO,CAAC,CAAC,QAAQ,SAAS,2CAAiB,wBAAwB,SAAS,SAAS,KAAK,CAAC;AAC/F;AALgB;AAMhB,MAAM,6BAA6B;EAC/B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;IAGS,iBAAa,MAAA;8BADzB,mCAAI,2BAAe,WAAW,CAAC,CAAC;;;;oBACE;;;;qCAAA,YAAa;WAAA;;;;;;;;yBA4K3C,+BAA8B,CAAE;sCAUhC,4CAA2C,CAAE;AAT9C,qCAAA,MAAA,MAAA,iBAAA,EAAA,MAAA,UAAA,MAAA,OAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,SAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,KAAb,OAAgB,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AAUhB,qCAAA,MAAA,MAAA,8BAAA,EAAA,MAAA,UAAA,MAAA,oBAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,sBAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,kBAAb,OAA6B,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AAvLjC,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACF,gBAAgB,KAAoB;AACvC,cAAQ,KAAK;QACT,KAAK,6BAAgB;QACrB,KAAK,6BAAgB;QACrB,KAAK,6BAAgB;QACrB,KAAK,6BAAgB;AACjB,iBAAO;;QACX,KAAK,6BAAgB;AACjB,iBAAO,KAAK,WAAW;MAC/B;AACA,aAAO,MAAM,gBAAgB,GAAG;IACpC;IACA,KAAwB,oBAAS,IAAC;AAC9B,aAAO,eAAqC,EAAE,SAAQ,GAAI,OAAK;AAC3D,YAAI,aAAa,cAAc;AAC3B,cAAI,OAAO,UAAU,UAAU;AAC3B,gDAAoB,KAAK,MAAM,UAAU,UAAU,OAAO,KAAK;UACnE;AACA,iBAAO,KAAK,IAAI,KAAK;QACzB,WACS,OAAO,aAAa,YACtB,2BAA2B,SAAS,QAAe,GAAG;AAGzD,gBAAM,SAAS;YACX,CAAC,QAAQ,GAAG;;AAEhB,qBAAW,SAAS,4BAA4B;AAC5C,gBAAI,UAAU,UAAU;AACnB,qBAAe,KAAK,IAAI,KAAK,cAAa,GAAI,SAAS;gBACpD,cAAc,KAAK;gBACnB,UAAU,KAAK,SAAS;gBACxB,UAAU;eACb;YACL;UACJ;AAEA,gBAAM,UAA4B,CAAC,MAAM,MAAM,MAAM,IAAI;AACzD,cAAI,CAAC,OAAO,uCAAuC;AAC/C,mBAAO,wCAAwC;UACnD;AACA,cAAI,CAAC,OAAO,wCAAwC;AAChD,mBAAO,yCAAyC;UACpD;AACA,gBAAM,SAAS,MAAM,KAAK,iBAAiB,MAAM;AAEjD,cAAI,KAAC,wCAA2B,MAAM,GAAG;AACrC,iBAAK,aAAa,EAAE,SAAQ,GAAI,KAAK;UACzC;AACA,iBAAO;QACX,OACK;AACD,mDAAyB,KAAK,MAAM,QAAQ;QAChD;MACJ;IACJ;IACU,CAAC,0BAAe,SAzDjB,gCAAA,MAAA,0BAAA,GAyDyD,CAAC,EAAE,SAAQ,GAAI,UAAS;AACtF,UAAI,aAAa,gBAAgB,OAAO,UAAU,UAAU;AACxD,cAAM,aAAa;AACnB,cAAM,qBAAqB,2CAAiB,YAAY,SAAS,KAAK,SAAS,KAAK;AACpF,eAAO;UACH,yBAAyB;UACzB,2BAA2B;UAC3B,mCAAmC,wBAAC,6BAA4B;AAC5D,iBAAK,cAAa,GAAI,SAAS,oBAAoB,UAAU;UACjE,GAFmC;UAGnC,sBAAsB,6BAAK;AACvB,iBAAK,cAAa,GAAI,SAAS,oBAAoB,UAAU;UACjE,GAFsB;UAGtB,sBAAsB,mCAAW;AAC7B,gBAAI;AACA,oBAAM,KAAK,IAAG;YAClB,QACM;YAEN;UACJ,GAPsB;UAQtB,eAAe,8BAAO,WAAU;AAC5B,oBAAQ,QAAQ,QAAQ;cACpB,KAAK,8BAAkB;cACvB,KAAK,8BAAkB;AACnB;cACJ,KAAK,8BAAkB;cACvB,KAAK,8BAAkB;AACnB,oBAAI;AACA,wBAAM,KAAK,IAAG;gBAClB,QACM;gBAEN;AACA;cACJ;AACI,qBAAK,aAAa,EAAE,UAAU,cAAa,GAAI,UAAU;YACjE;UACJ,GAjBe;;MAmBvB;IACJ;IACA,KAAe,qBAAU,IAAC;AACtB,aAAO,eAAqC,EAAE,SAAQ,GAAE;AACpD,gBAAQ,UAAU;UACd,KAAK;UACL,KAAK;UACL,KAAK;UACL,KAAK;UACL,KAAK;UACL,KAAK;UACL,KAAK;UACL,KAAK;UACL,KAAK;AACD,oBAAQ,MAAM,KAAK,IAAG,KAAM,QAAQ;UACxC,KAAK;UACL,KAAK;UACL,KAAK;UACL,KAAK;UACL,KAAK;UACL,KAAK;UACL,KAAK;UACL,KAAK;AACD,oBAAQ,MAAM,KAAK,iBAAgB,KAAM,QAAQ;UACrD;AACI,qDAAyB,KAAK,MAAM,QAAQ;QACpD;MACJ;IACJ;;IAEO,MAAM,kBAAe;AACxB,WAAK,sBAAsB,8BAAiB,6BAAgB,eAAe;AAC3E,YAAM,KAAK,IAAI,0BAA0B;QACrC,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;OAChC;AACD,YAAM,WAAW,MAAM,KAAK,KAAK,YAA0C,IAAI,KAAK,cAAc;AAClG,UAAI,UAAU;AACV,mBAAO,oBAAK,UAAU;UAClB;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;SACH;MACL;IACJ;;IAEO,MAAM,MAAG;AACZ,WAAK,sBAAsB,8BAAiB,6BAAgB,YAAY;AACxE,YAAM,KAAK,IAAI,uBAAuB;QAClC,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;OAChC;AACD,YAAM,WAAW,MAAM,KAAK,KAAK,YAAuC,IAAI,KAAK,cAAc;AAC/F,UAAI,UAAU;AACV,mBAAO,oBAAK,UAAU;UAClB;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;SACH;MACL;IACJ;IAEO,MAAM,IAAI,MAAkB;AAC/B,WAAK,sBAAsB,8BAAiB,6BAAgB,YAAY;AACxE,YAAM,KAAK,IAAI,uBAAuB;QAClC,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B;OACH;AACD,aAAO,KAAK,KAAK,YAAY,IAAI,KAAK,cAAc;IACxD;IAEO,MAAM,iBAAiB,eAAgD;AAC1E,WAAK,sBAAsB,8BAAiB,6BAAgB,gBAAgB;AAC5E,YAAM,KAAK,IAAI,2BAA2B;QACtC,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B,GAAG;OACN;AACD,aAAO,KAAK,KAAK,YAAY,IAAI,KAAK,cAAc;IACxD;;IAEO,MAAM,mBAAgB;AACzB,WAAK,sBAAsB,8BAAiB,6BAAgB,gBAAgB;AAC5E,YAAM,KAAK,IAAI,2BAA2B;QACtC,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;OAChC;AACD,YAAM,WAAW,MAAM,KAAK,KAAK,YAA2C,IAAI,KAAK,cAAc;AACnG,UAAI,UAAU;AACV,mBAAO,oBAAK,UAAU;UAClB;UACA;UACA;UACA;UACA;UACA;UACA;UACA;SACH;MACL;IACJ;;;;IAKS,cAAU,MAAA;8BAHtB,4CAAa,2BAAe,WAAW,CAAC,OACxC,kDAAmB,CAAC,OACpB,wCAAS,0CAAgB,CAAC;;;;oBACK;kCAAA,YAAY;WAAA;;;;;;;;AAA5C,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IAEF,MAAM,UAAU,KAAqB;AACxC,YAAM,OAAO,KAAK,QAAQ,GAAG;AAC7B,YAAM,WAAW,KAAK,YAAY,GAAG;AACrC,YAAM,MAAM,iBAAM,OAAO,2BAAe,WAAW,GAAG,KAAK,QAAQ,EAAE,YAAY;QAC7E,UAAU,4BAAgB;OAC7B;AACD,UAAI,QAAQ,KAAK,IAAI;QACjB,UAAU,KAAK;QACf,SAAS,gBAAgB,KAAK,MAAM;QACpC,WAAW;OACd;AAGD,UAAI,qBAAqB;AAEzB,UAAI,gBAAgB;AACpB,UAAI,gBAAgB;AACpB,UAAI,iBAAiB;AACrB,UAAI,IAAI,WAAW,GAAG;AAClB,YAAI,QAAQ,KAAK,IAAI;UACjB,UAAU,KAAK;UACf,SAAS;UACT,WAAW;SACd;AACD,cAAM,OAAO,MAAM,IAAI,gBAAe;AACtC,YAAI,MAAM;AACN,gBAAM,aAAa;6BACN,KAAK,wBACb,IAAI,CAAC,UAAM,iCAAkB,oCAAuB,CAAC,CAAC,EACtD,KAAK,IAAI,CAAC;6BACF,KAAK,uBACb,IAAI,CAAC,UAAM,iCAAkB,2BAAc,CAAC,CAAC,EAC7C,IAAI,CAAC,QAAQ;OAAO,GAAG,EAAE,EACzB,KAAK,EAAE,CAAC;6BACA,KAAK,wBACb,IAAI,MAAM,EACV,KAAK,IAAI,CAAC;6BACF,KAAK,uBAAuB,IAAI,MAAM,EAAE,KAAK,IAAI,CAAC;6BAClD,KAAK,aAAa;6BAClB,KAAK,aAAa;6BAClB,KAAK,cAAc;6BACnB,KAAK,mBAAmB;6BACxB,KAAK,uBAAuB;6BAC5B,KAAK,oBAAoB;6BACzB,KAAK,qBAAqB;AACvC,cAAI,QAAQ,KAAK,IAAI;YACjB,UAAU,KAAK;YACf,SAAS;YACT,WAAW;WACd;AACD,0BAAgB,KAAK;AACrB,0BAAgB,KAAK;AACrB,2BAAiB,KAAK;AAEtB,gBAAM,kBAAkB,2CAAiB;AACzC,eAAK,YAAY,KAAK,iBAAiB;YACnC,GAAG,gBAAgB;YACnB,YAAQ,wCAA2B,2BAAc,KAAK,sBAAsB;WAC/E;AACD,gBAAM,qBAAqB,2CAAiB;AAC5C,eAAK,YAAY,KAAK,oBAAoB;YACtC,GAAG,mBAAmB;YACtB,YAAQ,wCAA2B,oCAAuB,KAAK,uBAAuB;WACzF;QACL,OACK;AACD,+BAAqB;QACzB;MACJ;AACA,UAAI,CAAC,oBAAoB;AAErB,cAAM,kBAAkB,2CAAiB;AACzC,YAAI;AACA,eAAK,YAAY,KAAK,eAAe;AACzC,aAAK,SAAS,KAAK,2CAAiB,eAAe,aAAa;AAChE,cAAM,mBAAmB,2CAAiB;AAC1C,YAAI;AACA,eAAK,YAAY,KAAK,gBAAgB;AAC1C,aAAK,SAAS,KAAK,2CAAiB,gBAAgB,cAAc;AAClE,cAAM,kBAAkB,2CAAiB;AACzC,YAAI;AACA,eAAK,YAAY,KAAK,eAAe;AACzC,aAAK,SAAS,KAAK,2CAAiB,eAAe,aAAa;MACpE;AACA,YAAM,KAAK,cAAc,GAAG;AAE5B,UAAI,CAAC;AACD,aAAK,qBAAqB,KAAK,IAAI;IAC3C;IACO,MAAM,cAAc,KAA2B,SAA8B;AAChF,YAAM,OAAO,KAAK,QAAQ,GAAG;AAC7B,YAAM,WAAW,KAAK,YAAY,GAAG;AACrC,YAAM,MAAM,iBAAM,OAAO,2BAAe,WAAW,GAAG,KAAK,QAAQ,EAAE,YAAY;QAC7E,UAAU,SAAS,YAAY,4BAAgB;OAClD;AACD,UAAI,QAAQ,KAAK,IAAI;QACjB,UAAU,KAAK;QACf,SAAS;QACT,WAAW;OACd;AACD,YAAM,SAAS,MAAM,IAAI,iBAAgB;AACzC,UAAI,QAAQ;AACR,YAAI,aAAa;qCACI,iCAAkB,oCAAuB,OAAO,aAAa,CAAC;AACnF,YAAI,OAAO,kBAAkB,mCAAsB,OAAO;AACtD,wBAAc;iCACG,OAAO,wBAAwB;;QAEpD;AACA,sBAAc;iCACO,OAAO,uCACvB,IAAI,MAAM,EACV,KAAK,IAAI,CAAC;iCACM,OAAO,sCACvB,IAAI,MAAM,EACV,KAAK,IAAI,CAAC;AACf,YAAI,IAAI,WAAW,GAAG;AAClB,wBAAc;iCACG,OAAO,kBAAkB,GAAG;iCAC5B,OAAO,sBAAsB,GAAG;iCAChC,CAAC,CAAC,OAAO,WAAW;iCACpB,CAAC,CAAC,OAAO,YAAY;QAC1C;AACA,YAAI,QAAQ,KAAK,IAAI;UACjB,UAAU,KAAK;UACf,SAAS;UACT,WAAW;SACd;MACL;AACA,UAAI,QAAQ,KAAK,IAAI;QACjB,UAAU,KAAK;QACf,SAAS;QACT,WAAW;OACd;AACD,YAAM,SAAS,MAAM,IAAI,IAAG;AAC5B,UAAI,QAAQ;AACR,YAAI,aAAa;0BACP,iCAAkB,2BAAc,OAAO,WAAW,CAAC;AAC7D,YAAI,OAAO,cAAc,QAAW;AAChC,wBAAc;0BACR,iCAAkB,2BAAc,OAAO,UAAU,CAAC;sBAClD,OAAO,UAAU,SAAQ,KAAM,WAAW;QACpD;AACA,YAAI,OAAO,eAAe,QAAW;AACjC,wBAAc;sBACR,OAAO,WAAW;QAC5B;AACA,YAAI,OAAO,cAAc,QAAW;AAChC,wBAAc;sBACR,OAAO,UAAU;QAC3B;AACA,YAAI,OAAO,cAAc,QAAW;AAChC,wBAAc;sBACR,OAAO,UAAU;QAC3B;AACA,YAAI,OAAO,eAAe,QAAW;AACjC,wBAAc;sBACR,OAAO,WAAW;QAC5B;AACA,YAAI,QAAQ,KAAK,IAAI;UACjB,UAAU,KAAK;UACf,SAAS;UACT,WAAW;SACd;MACL;IACJ;;;;;IAKO,OAAO,yBAAyB,KAAiB,UAAoB;AACxE,aAAO,CAAC,CAAC,IACJ,WAAW,SAAS,MAAM,EAC1B,SAAS,2CAAiB,oBAAoB,SAAS,SAAS,KAAK,CAAC;IAC/E;;;;;IAKO,OAAO,6BAA6B,KAAiB,UAAoB;AAC5E,aAAO,CAAC,CAAC,IACJ,WAAW,SAAS,MAAM,EAC1B,SAAS,2CAAiB,wBAAwB,SAAS,SAAS,KAAK,CAAC;IACnF;;;;;IAKO,OAAO,0BAA0B,KAAiB,UAAoB;AACzE,aAAO,CAAC,CAAC,IACJ,WAAW,SAAS,MAAM,EAC1B,SAAS,2CAAiB,qBAAqB,SAAS,SAAS,KAAK,CAAC;IAChF;;;;;IAKO,OAAO,2BAA2B,KAAiB,UAAoB;AAC1E,aAAO,CAAC,CAAC,IACJ,WAAW,SAAS,MAAM,EAC1B,SAAS,2CAAiB,sBAAsB,SAAS,SAAS,KAAK,CAAC;IACjF;;;;;IAKO,OAAO,iCAAiC,KAAiB,UAAoB;AAChF,aAAO,IACF,WAAW,SAAS,MAAM,EAC1B,SAAS,2CAAiB,wBAAwB,SAAS,SAAS,KAAK,CAAC;IACnF;;;;;IAKO,OAAO,gCAAgC,KAAiB,UAAoB;AAC/E,aAAO,IACF,WAAW,SAAS,MAAM,EAC1B,SAAS,2CAAiB,uBAAuB,SAAS,SAAS,KAAK,CAAC;IAClF;;;;IAQS,0BAAsB,MAAA;8BAFlC,yCAAU,6BAAgB,YAAY,OACtC,8CAAc,CAAE;;;;oBAC2B;8CAAA,YAAU;WAAA;;;;;;;;AAAtD,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACT,YAAmB,SAAmD;AAClE,YAAM,OAAO;AACb,UAAI,QAAQ,SAAS,0BAAa,SAAS;AACvC,cAAM,IAAI,uBAAW,kDAAkD,4BAAgB,gBAAgB;MAC3G;AACA,WAAK,OAAO,QAAQ;IACxB;IACO,OAAO,KAAK,KAAY,KAAqB;AAChD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,OAAqB,IAAI,QAAQ,CAAC;AACxC,aAAO,IAAI,KAAK;QACZ,QAAQ,IAAI;QACZ;OACH;IACL;IACO;IACA,UAAU,KAAsB;AACnC,WAAK,UAAU,oBAAM,KAAK,CAAC,KAAK,IAAI,CAAC;AACrC,aAAO,MAAM,UAAU,GAAG;IAC9B;IACO,WAAW,KAAgB;AAC9B,aAAO;QACH,GAAG,MAAM,WAAW,GAAG;QACvB,SAAS;UACL,mBAAe,iCAAkB,2BAAc,KAAK,IAAI;;;IAGpE;;;;IAqBS,6BAAyB,MAAA;8BAPrC,yCAAU,6BAAgB,eAAe,OACzC,+CAAgB,eAAe,2CAAiB,WAAW,OAC3D,+CAAgB,cAAc,2CAAiB,UAAU,OACzD,+CAAgB,YAAY,2CAAiB,QAAQ,OACrD,+CAAgB,6BAA6B,2CAAiB,yBAAyB,OACvF,+CAAgB,4BAA4B,2CAAiB,wBAAwB,OACrF,+CAAgB,eAAe,2CAAiB,WAAW,CAAC;;;;oBACd;iDAAA,YAAU;WAAA;;;;;;;;AAAzD,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACT,YAAmB,SAAsD;AACrE,YAAM,OAAO;AAEb,WAAK,cAAc,QAAQ;AAC3B,WAAK,4BAA4B,QAAQ;AACzC,WAAK,2BAA2B,QAAQ;AACxC,WAAK,aAAa,QAAQ;AAC1B,WAAK,aAAa,QAAQ;AAC1B,WAAK,cAAc,QAAQ;AAC3B,WAAK,cAAc,QAAQ;AAC3B,WAAK,aAAa,QAAQ;AAC1B,WAAK,WAAW,QAAQ;IAC5B;IACO,OAAO,KAAK,KAAY,KAAqB;AAChD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,cAA4B,IAAI,QAAQ,CAAC;AAC/C,YAAM,4BAA8C;QAChD,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;QACpB,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;QACpB,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;QACpB,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;;AAExB,YAAM,2BAA6C;QAC/C,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;QACpB,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;QACpB,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;QACpB,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;;AAExB,YAAM,aAA4C,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,KAChE,WACA;AACN,YAAM,aAAgD,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,KAAQ,aAAa;AAC/F,YAAM,cAA6C,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,KACjE,WACA;AAEN,YAAM,qBAAqB,IAAI,QAAQ,CAAC;AACxC,YAAM,qBAAqB,IAAI,QAAQ,CAAC;AACxC,UAAI;AACJ,UAAI,sBAAsB,OAAO,sBAAsB,IAAI;AACvD,sBAAc,qBAAqB,qBAAqB;MAC5D;AACA,UAAI;AACJ,UAAI;AACJ,UAAI,IAAI,QAAQ,UAAU,GAAG;AACzB,qBAAa,IAAI,QAAQ,CAAC;AAC1B,mBAAW,qBAAS,YAAY,IAAI,QAAQ,CAAC,CAAC;MAClD;AACA,aAAO,IAAI,KAAK;QACZ,QAAQ,IAAI;QACZ;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;OACH;IACL;IACO,UAAU,KAAsB;AACnC,YAAM,UAAU;QACZ,GAAG,KAAK;QACR,GAAG,KAAK;QAEP,IAAI,CAAC,KAAK,MAAO,MAAM,KAAK,IAAI,CAAE,EAClC,OAAO,CAAC,KAAK,QAAQ,MAAM,KAAK,CAAC;AACtC,YAAM,iBAAiB,KAAK,eAAe,WAAW,IAAM,MACrD,KAAK,eAAe,aAAa,IAAO,MACxC,KAAK,gBAAgB,WAAW,IAAQ;AAC/C,UAAI,qBAAqB;AACzB,UAAI,qBAAqB;AACzB,UAAI,KAAK,eAAe,QAAW;AAC/B,6BAAqB,KAAK,MAAM,KAAK,cAAc,EAAE;AACrD,6BAAqB,KAAK,cAAc;MAC5C;AACA,YAAM,UAAU;QACZ,KAAK;QACL;QACA;QACA;QACA;;AAEJ,UAAI,KAAK,cAAc,QAAW;AAC9B,gBAAQ,KAAK,KAAK,UAAU;AAC5B,gBAAQ,MAAM,KAAK,YAAY,qBAAS,QAAO,GAAI,gBAAe,CAAE;MACxE;AACA,WAAK,UAAU,oBAAM,KAAK,OAAO;AACjC,aAAO,MAAM,UAAU,GAAG;IAC9B;IACO,cAAc,KAAyB;AAC1C,UAAI,CAAC,MAAM,cAAc,GAAG;AACxB,eAAO;AAEX,YAAM,qBAAqB,CAAC,CAAC,KAAK,SAAS,KAAK,2CAAiB,aAAa;AAC9E,UAAI,oBAAoB;AACpB,aAAK,SAAS,KAAK,2CAAiB,YAAY,KAAK,UAAU;MACnE;AACA,YAAM,qBAAqB,CAAC,CAAC,KAAK,SAAS,KAAK,2CAAiB,aAAa;AAC9E,UAAI,oBAAoB;AACpB,aAAK,SAAS,KAAK,2CAAiB,YAAY,KAAK,UAAU;MACnE;AACA,YAAM,sBAAsB,CAAC,CAAC,KAAK,SAAS,KAAK,2CAAiB,cAAc;AAChF,UAAI,qBAAqB;AACrB,aAAK,SAAS,KAAK,2CAAiB,aAAa,KAAK,WAAW;MACrE;AACA,aAAO;IACX;IACgB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IACT,WAAW,KAAgB;AAC9B,YAAM,UAAyB;QAC3B,oBAAgB,iCAAkB,2BAAc,KAAK,WAAW;QAChE,0BAA0B,KAAK,0BAA0B,KAAK,IAAI;QAClE,yBAAyB,KAAK,yBAAyB,KAAK,IAAI;;AAEpE,UAAI,KAAK,eAAe,QAAW;AAC/B,gBAAQ,cAAc,IAAI,KAAK;MACnC;AACA,UAAI,KAAK,cAAc,QAAW;AAC9B,gBAAQ,aAAa,IAAI,KAAK;MAClC;AACA,UAAI,KAAK,cAAc,QAAW;AAC9B,gBAAQ,aAAa,IAAI,KAAK;MAClC;AACA,UAAI,KAAK,cAAc,QAAW;AAC9B,gBAAQ,aAAa,QAAI,iCAAkB,2BAAc,KAAK,UAAU;MAC5E;AACA,UAAI,KAAK,YAAY,QAAW;AAC5B,gBAAQ,oBAAoB,IAAI,KAAK,SAAS,SAAQ;MAC1D;AACA,UAAI,KAAK,eAAe,QAAW;AAC/B,gBAAQ,cAAc,IAAI,GAAG,KAAK,WAAW;MACjD;AACA,aAAO;QACH,GAAG,MAAM,WAAW,GAAG;QACvB;;IAER;;;;IAIS,0BAAsB,MAAA;8BAFlC,yCAAU,6BAAgB,YAAY,OACtC,kDAAmB,yBAAyB,CAAC;;;;oBACF;8CAAA,YAAU;WAAA;;;;;;;;AAAtD,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;;;;IAkBA,iCAA6B,MAAA;8BALzC,yCAAU,6BAAgB,mBAAmB,OAC7C,+CAAgB,iBAAiB,2CAAiB,aAAa,OAC/D,+CAAgB,0CAA0C,2CAAiB,sCAAsC,OACjH,+CAAgB,yCAAyC,2CAAiB,qCAAqC,OAC/G,+CAAgB,4BAA4B,2CAAiB,wBAAwB,CAAC;;;;oBACpC;qDAAA,YAAU;WAAA;;;;;;;;AAA7D,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACT,YAAmB,SAA0D;AACzE,YAAM,OAAO;AAEb,WAAK,gBAAgB,QAAQ;AAC7B,WAAK,yCACD,QAAQ;AACZ,WAAK,wCACD,QAAQ;AACZ,WAAK,2BAA2B,QAAQ;AACxC,WAAK,iBAAiB,QAAQ;AAC9B,WAAK,qBAAqB,QAAQ;AAClC,WAAK,cAAc,QAAQ;AAC3B,WAAK,eAAe,QAAQ;IAChC;IACO,OAAO,KAAK,KAAY,KAAqB;AAChD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,gBAAuC,IAAI,QAAQ,CAAC;AAC1D,YAAM,yCAA2D;QAC7D,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;QACpB,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;QACpB,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;QACpB,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;;AAExB,YAAM,wCAA0D;QAC5D,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;QACpB,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;QACpB,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;QACpB,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;;AAExB,UAAI;AACJ,UAAI,kBAAkB,mCAAsB,OAAO;AAC/C,cAAM,qBAAqB,IAAI,QAAQ,CAAC;AACxC,cAAM,qBAAqB,IAAI,QAAQ,CAAC;AACxC,YAAI,sBAAsB,OAAQ,sBAAsB,IAAI;AACxD,qCAA2B,qBACrB,qBAAqB;QAC/B;MACJ;AACA,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI,IAAI,QAAQ,UAAU,GAAG;AACzB,yBAAiB,IAAI,QAAQ,aAAa,CAAC;AAC3C,6BAAqB,IAAI,QAAQ,aAAa,CAAC;AAC/C,cAAM,QAAQ,IAAI,QAAQ,CAAC;AAC3B,sBAAc,CAAC,EAAE,QAAQ;AACzB,uBAAe,CAAC,EAAE,QAAQ;MAC9B;AACA,aAAO,IAAI,KAAK;QACZ,QAAQ,IAAI;QACZ;QACA;QACA;QACA;QACA;QACA;QACA;QACA;OACH;IACL;IACO,UAAU,KAAsB;AACnC,YAAM,UAAU;QACZ,GAAG,KAAK;QACR,GAAG,KAAK;QAEP,IAAI,CAAC,KAAK,MAAO,MAAM,KAAK,IAAI,CAAE,EAClC,OAAO,CAAC,KAAK,QAAQ,MAAM,KAAK,CAAC;AACtC,UAAI;AACJ,UAAI;AACJ,UAAI,KAAK,kBAAkB,mCAAsB,SAC1C,KAAK,4BAA4B,QAAW;AAC/C,6BAAqB,KAAK,MAAM,KAAK,2BAA2B,EAAE;AAClE,6BAAqB,KAAK,2BAA2B;MACzD,OACK;AACD,6BAAqB,qBAAqB;MAC9C;AACA,YAAM,SAAS,KAAK,cAAc,IAAM,MACjC,KAAK,eAAe,IAAO;AAClC,WAAK,UAAU,oBAAM,KAAK;QACtB,KAAK;QACL;QACA;QACA;OACH;AACD,UAAI,KAAK,kBAAkB,UACpB,KAAK,sBAAsB,UAC3B,KAAK,eAAe,UACpB,KAAK,gBAAgB,QAAW;AACnC,cAAM,WAAW,oBAAM,MAAM,CAAC;AAC9B,iBAAS,eAAe,KAAK,kBAAkB,KAAK,OAAQ,CAAC;AAC7D,iBAAS,eAAe,KAAK,sBAAsB,KAAK,OAAQ,CAAC;AACjE,iBAAS,CAAC,IAAI;AACd,aAAK,UAAU,oBAAM,OAAO,CAAC,KAAK,SAAS,QAAQ,CAAC;MACxD;AACA,aAAO,MAAM,UAAU,GAAG;IAC9B;IACgB;IACA;IACA;IACA;;;IAGA;IACA;IACA;IACA;IACT,cAAc,KAAyB;AAC1C,UAAI,CAAC,MAAM,cAAc,GAAG;AACxB,eAAO;AAEX,YAAM,qBAAqB,CAAC,CAAC,KAAK,SAAS,KAAK,2CAAiB,mBAAmB;AACpF,UAAI,oBAAoB;AACpB,aAAK,SAAS,KAAK,2CAAiB,gBAAgB,KAAK,cAAc;MAC3E;AACA,YAAM,yBAAyB,CAAC,CAAC,KAAK,SAAS,KAAK,2CAAiB,uBAAuB;AAC5F,UAAI,wBAAwB;AACxB,aAAK,SAAS,KAAK,2CAAiB,oBAAoB,KAAK,kBAAkB;MACnF;AACA,YAAM,sBAAsB,CAAC,CAAC,KAAK,SAAS,KAAK,2CAAiB,oBAAoB;AACtF,UAAI,qBAAqB;AACrB,aAAK,SAAS,KAAK,2CAAiB,aAAa,KAAK,WAAW;MACrE;AACA,YAAM,uBAAuB,CAAC,CAAC,KAAK,SAAS,KAAK,2CAAiB,qBAAqB;AACxF,UAAI,sBAAsB;AACtB,aAAK,SAAS,KAAK,2CAAiB,cAAc,KAAK,YAAY;MACvE;AACA,aAAO;IACX;IACO,WAAW,KAAgB;AAC9B,YAAM,UAAyB;QAC3B,sBAAkB,iCAAkB,oCAAuB,KAAK,aAAa;QAC7E,gCAAgC,KAC3B,uCAAuC,KAAK,IAAI;QACrD,+BAA+B,KAC1B,sCAAsC,KAAK,IAAI;;AAExD,UAAI,KAAK,4BAA4B,QAAW;AAC5C,gBAAQ,qBAAqB,IAAI,GAAG,KAAK,wBAAwB;MACrE;AACA,UAAI,KAAK,kBAAkB,QAAW;AAClC,gBAAQ,kBAAkB,IAAI,GAAG,KAAK,cAAc;MACxD;AACA,UAAI,KAAK,sBAAsB,QAAW;AACtC,gBAAQ,uBAAuB,IAAI,GAAG,KAAK,kBAAkB;MACjE;AACA,UAAI,KAAK,eAAe,QAAW;AAC/B,gBAAQ,sBAAsB,IAAI,KAAK;MAC3C;AACA,UAAI,KAAK,gBAAgB,QAAW;AAChC,gBAAQ,wBAAwB,IAAI,KAAK;MAC7C;AACA,aAAO;QACH,GAAG,MAAM,WAAW,GAAG;QACvB;;IAER;;;;IAIS,8BAA0B,MAAA;8BAFtC,yCAAU,6BAAgB,gBAAgB,OAC1C,kDAAmB,6BAA6B,CAAC;;;;oBACF;kDAAA,YAAU;WAAA;;;;;;;;AAA1D,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;;;;IAoBA,8BAA0B,MAAA;8BAFtC,yCAAU,6BAAgB,gBAAgB,OAC1C,8CAAc,CAAE;;;;oBAC+B;kDAAA,YAAU;WAAA;;;;;;;;AAA1D,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACT,YAAmB,SAAuD;AACtE,YAAM,OAAO;AACb,WAAK,gBAAgB,QAAQ;AAC7B,WAAK,yCACD,QAAQ;AACZ,WAAK,wCACD,QAAQ;AACZ,WAAK,2BAA2B,QAAQ;AACxC,WAAK,iBAAiB,QAAQ;AAC9B,WAAK,qBAAqB,QAAQ;AAClC,WAAK,cAAc,QAAQ;AAC3B,WAAK,eAAe,QAAQ;IAChC;IACO,OAAO,KAAK,KAAY,KAAqB;AAChD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,gBAAuC,IAAI,QAAQ,CAAC;AAC1D,YAAM,yCAA2D;QAC7D,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;QACpB,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;QACpB,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;QACpB,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;;AAExB,YAAM,wCAA0D;QAC5D,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;QACpB,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;QACpB,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;QACpB,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI;;AAExB,UAAI;AACJ,UAAI,kBAAkB,mCAAsB,OAAO;AAC/C,cAAM,qBAAqB,IAAI,QAAQ,CAAC;AACxC,cAAM,qBAAqB,IAAI,QAAQ,CAAC;AACxC,YAAI,sBAAsB,OAAQ,sBAAsB,IAAI;AACxD,qCAA2B,qBACrB,qBAAqB;QAC/B;MACJ;AACA,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI,IAAI,QAAQ,UAAU,GAAG;AACzB,yBAAiB,IAAI,QAAQ,aAAa,CAAC;AAC3C,6BAAqB,IAAI,QAAQ,aAAa,CAAC;AAC/C,cAAM,QAAQ,IAAI,QAAQ,CAAC;AAC3B,sBAAc,CAAC,EAAE,QAAQ;AACzB,uBAAe,CAAC,EAAE,QAAQ;MAC9B;AACA,aAAO,IAAI,KAAK;QACZ,QAAQ,IAAI;QACZ;QACA;QACA;QACA;QACA;QACA;QACA;QACA;OAC+C;IACvD;IACO;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,UAAU,KAAsB;AACnC,YAAM,oBAAgB,2BAAQ,KAAK,qCAAqC,IAClE,KAAK,wCACL,CAAA;AACN,YAAM,qBAAiB,2BAAQ,KAAK,sCAAsC,IACpE,KAAK,yCACL,CAAA;AACN,YAAM,UAAU,CAAC,GAAG,eAAe,GAAG,cAAc,EAC/C,IAAI,CAAC,KAAK,MAAO,MAAM,KAAK,IAAI,CAAE,EAClC,OAAO,CAAC,KAAK,QAAQ,MAAM,KAAK,CAAC;AACtC,UAAI;AACJ,UAAI;AACJ,UAAI,KAAK,kBAAkB,mCAAsB,UAAU;AACvD,6BAAqB,qBAAqB;MAC9C,OACK;AACD,6BAAqB,KAAK,MAAM,KAAK,2BAA4B,EAAE;AACnE,6BAAqB,KAAK,2BAA4B;MAC1D;AACA,YAAM,SAAS,KAAK,cAAc,IAAM,MACjC,KAAK,eAAe,IAAO;AAClC,WAAK,UAAU,oBAAM,KAAK;QACtB,KAAK;QACL;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;OACH;AACD,WAAK,QAAQ,eAAe,KAAK,kBAAkB,KAAK,OAAQ,CAAC;AACjE,WAAK,QAAQ,eAAe,KAAK,sBAAsB,KAAK,OAAQ,CAAC;AACrE,aAAO,MAAM,UAAU,GAAG;IAC9B;IACO,WAAW,KAAgB;AAC9B,YAAM,oBAAgB,2BAAQ,KAAK,qCAAqC,IAClE,KAAK,wCACL,CAAA;AACN,YAAM,qBAAiB,2BAAQ,KAAK,sCAAsC,IACpE,KAAK,yCACL,CAAA;AACN,YAAM,UAAyB;QAC3B,sBAAkB,iCAAkB,oCAAuB,KAAK,aAAa;QAC7E,gCAAgC,eAAe,KAAK,IAAI;QACxD,+BAA+B,cAAc,KAAK,IAAI;;AAE1D,UAAI,KAAK,4BAA4B,QAAW;AAC5C,gBAAQ,qBAAqB,IAAI,GAAG,KAAK,wBAAwB;MACrE;AACA,UAAI,KAAK,kBAAkB,QAAW;AAClC,gBAAQ,kBAAkB,IAAI,GAAG,KAAK,cAAc;MACxD;AACA,UAAI,KAAK,sBAAsB,QAAW;AACtC,gBAAQ,uBAAuB,IAAI,GAAG,KAAK,kBAAkB;MACjE;AACA,UAAI,KAAK,eAAe,QAAW;AAC/B,gBAAQ,qBAAqB,IAAI,KAAK;MAC1C;AACA,UAAI,KAAK,gBAAgB,QAAW;AAChC,gBAAQ,uBAAuB,IAAI,KAAK;MAC5C;AACA,aAAO;QACH,GAAG,MAAM,WAAW,GAAG;QACvB;;IAER;;;;IAuBS,gCAA4B,MAAA;8BAPxC,yCAAU,6BAAgB,kBAAkB,OAC5C,+CAAgB,2BAA2B,2CAAiB,uBAAuB,OACnF,+CAAgB,0BAA0B,2CAAiB,sBAAsB,OACjF,+CAAgB,uBAAuB,2CAAiB,mBAAmB,OAC3E,+CAAgB,2BAA2B,2CAAiB,uBAAuB,OACnF,+CAAgB,wBAAwB,2CAAiB,oBAAoB,OAC7E,+CAAgB,yBAAyB,2CAAiB,qBAAqB,CAAC;;;;oBAC/B;oDAAA,YAAU;WAAA;;;;;;;;AAA5D,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACT,YAAmB,SAAyD;AACxE,YAAM,OAAO;AAEb,WAAK,0BAA0B,QAAQ;AACvC,WAAK,yBAAyB,QAAQ;AACtC,WAAK,0BAA0B,QAAQ;AACvC,WAAK,yBAAyB,QAAQ;AACtC,WAAK,gBAAgB,QAAQ;AAC7B,WAAK,gBAAgB,QAAQ;AAC7B,WAAK,iBAAiB,QAAQ;AAC9B,WAAK,wBAAwB,QAAQ;AACrC,WAAK,uBAAuB,QAAQ;AACpC,WAAK,0BAA0B,QAAQ;AACvC,WAAK,sBAAsB,QAAQ;IACvC;IACO,OAAO,KAAK,KAAY,KAAqB;AAEhD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,gBAAgB,IAAI,QAAQ,CAAC,IAAI;AACvC,UAAI,SAAS;AACb,uCAAgB,IAAI,QAAQ,UAAU,SAAS,gBAAgB,CAAC;AAChE,YAAM,8BAAmD;QAAa,IAAI,QAAQ,SAAS,QAAQ,SAAS,aAAa;;QAEzH;MAAC;AACD,gBAAU;AAEV,YAAM,aAAa,IAAI,QAAQ,MAAM;AACrC,gBAAU;AACV,uCAAgB,IAAI,QAAQ,UAAU,SAAS,aAAa,CAAC;AAC7D,YAAM,yBAAyC;QAC3C,GAAG,IAAI,QAAQ,SAAS,QAAQ,SAAS,UAAU;;AAEvD,gBAAU;AACV,YAAM,0BAA4C;QAC9C,CAAC,EAAE,IAAI,QAAQ,MAAM,IAAI;QACzB,CAAC,EAAE,IAAI,QAAQ,MAAM,IAAI;QACzB,CAAC,EAAE,IAAI,QAAQ,MAAM,IAAI;QACzB,CAAC,EAAE,IAAI,QAAQ,MAAM,IAAI;;AAE7B,YAAM,yBAA2C;QAC7C,CAAC,EAAE,IAAI,QAAQ,MAAM,IAAI;QACzB,CAAC,EAAE,IAAI,QAAQ,MAAM,IAAI;QACzB,CAAC,EAAE,IAAI,QAAQ,MAAM,IAAI;QACzB,CAAC,EAAE,IAAI,QAAQ,MAAM,IAAI;;AAE7B,YAAM,gBAAgB,CAAC,EAAE,IAAI,QAAQ,SAAS,CAAC,IAAI;AACnD,YAAM,gBAAgB,CAAC,EAAE,IAAI,QAAQ,SAAS,CAAC,IAAI;AACnD,YAAM,iBAAiB,CAAC,EAAE,IAAI,QAAQ,SAAS,CAAC,IAAI;AACpD,YAAM,wBAAwB,CAAC,EAAE,IAAI,QAAQ,SAAS,CAAC,IAAI;AAC3D,YAAM,uBAAuB,CAAC,EAAE,IAAI,QAAQ,SAAS,CAAC,IAAI;AAC1D,YAAM,0BAA0B,CAAC,EAAE,IAAI,QAAQ,SAAS,CAAC,IAAI;AAC7D,YAAM,sBAAsB,CAAC,EAAE,IAAI,QAAQ,SAAS,CAAC,IAAI;AACzD,aAAO,IAAI,KAAK;QACZ,QAAQ,IAAI;QACZ;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;OACH;IACL;IACgB;IACA;IACA;IACA;;;IAGA;IACA;IACA;IACA;IACA;IACA;IACA;IACT,UAAU,KAAsB;AAEnC,YAAM,wBAAoB,2BAAc,KAAK,yBAAyB,QAAW,CAAC;AAElF,YAAM,WAAW,oBAAM,KAAK,KAAK,sBAAkC;AACnE,YAAM,UAAU;QACZ,GAAG,KAAK;QACR,GAAG,KAAK;QAEP,IAAI,CAAC,KAAK,MAAO,MAAM,KAAK,IAAI,CAAE,EAClC,OAAO,CAAC,KAAK,QAAQ,MAAM,KAAK,CAAC;AACtC,YAAM,mBAAmB,KAAK,gBAAgB,IAAM,MAC7C,KAAK,gBAAgB,IAAO,MAC5B,KAAK,iBAAiB,IAAQ;AACrC,YAAM,gBAAgB,KAAK,wBAAwB,IAAM,MAClD,KAAK,uBAAuB,IAAO,MACnC,KAAK,0BAA0B,IAAQ,MACvC,KAAK,sBAAsB,IAAS;AAC3C,WAAK,UAAU,oBAAM,OAAO;QACxB,CAAC,kBAAkB,SAAS,EAAO;QACnC;QACA,CAAC,SAAS,MAAM;QAChB;QACA,CAAC,SAAS,iBAAiB,YAAY;OAC1C;AACD,aAAO,MAAM,UAAU,GAAG;IAC9B;IACO,WAAW,KAAgB;AAC9B,aAAO;QACH,GAAG,MAAM,WAAW,GAAG;QACvB,SAAS;UACL,MAAM,KAAK;UACX,MAAM,KAAK;UACX,OAAO,KAAK;UACZ,0BAA0B,KAAK;UAC/B,wBAAwB,KAAK;UAC7B,4BAA4B,KAAK;UACjC,uBAAuB,KAAK;UAC5B,mBAAmB,KAAK,wBACnB,IAAI,CAAC,MAAM;WAAO,iCAAkB,oCAAuB,CAAC,CAAC,EAAE,EAC/D,KAAK,EAAE;UACZ,mBAAmB,KAAK,uBACnB,IAAI,CAAC,MAAM;WAAO,iCAAkB,2BAAc,CAAC,CAAC,EAAE,EACtD,KAAK,EAAE;UACZ,mBAAmB,KAAK,wBAAwB,KAAK,IAAI;UACzD,kBAAkB,KAAK,uBAAuB,KAAK,IAAI;;;IAGnE;;;;IAIS,6BAAyB,MAAA;8BAFrC,yCAAU,6BAAgB,eAAe,OACzC,kDAAmB,4BAA4B,CAAC;;;;oBACF;iDAAA,YAAU;WAAA;;;;;;;;AAAzD,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;;;;",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,2 @@
1
- export declare function validateArgs_DoorLockLoggingCCAPI_getRecord(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
1
+ export declare function validateArgs_DoorLockLoggingCCAPI_getRecord(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
2
2
  //# sourceMappingURL=DoorLockLoggingCC._validateArgs.d.ts.map
@@ -1,2 +1,2 @@
1
- export declare function validateArgs_EnergyProductionCCAPI_get(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
1
+ export declare function validateArgs_EnergyProductionCCAPI_get(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
2
2
  //# sourceMappingURL=EnergyProductionCC._validateArgs.d.ts.map
@@ -1,2 +1,2 @@
1
- export declare function validateArgs_EntryControlCCAPI_setConfiguration(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
1
+ export declare function validateArgs_EntryControlCCAPI_setConfiguration(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
2
2
  //# sourceMappingURL=EntryControlCC._validateArgs.d.ts.map
@@ -1,7 +1,7 @@
1
- export declare function validateArgs_FirmwareUpdateMetaDataCCAPI_reportMetaData(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
2
- export declare function validateArgs_FirmwareUpdateMetaDataCCAPI_requestUpdate(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
3
- export declare function validateArgs_FirmwareUpdateMetaDataCCAPI_respondToUpdateRequest(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
4
- export declare function validateArgs_FirmwareUpdateMetaDataCCAPI_respondToDownloadRequest(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
5
- export declare function validateArgs_FirmwareUpdateMetaDataCCAPI_sendFirmwareFragment(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
6
- export declare function validateArgs_FirmwareUpdateMetaDataCCAPI_activateFirmware(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
1
+ export declare function validateArgs_FirmwareUpdateMetaDataCCAPI_reportMetaData(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
2
+ export declare function validateArgs_FirmwareUpdateMetaDataCCAPI_requestUpdate(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
3
+ export declare function validateArgs_FirmwareUpdateMetaDataCCAPI_respondToUpdateRequest(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
4
+ export declare function validateArgs_FirmwareUpdateMetaDataCCAPI_respondToDownloadRequest(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
5
+ export declare function validateArgs_FirmwareUpdateMetaDataCCAPI_sendFirmwareFragment(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
6
+ export declare function validateArgs_FirmwareUpdateMetaDataCCAPI_activateFirmware(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
7
7
  //# sourceMappingURL=FirmwareUpdateMetaDataCC._validateArgs.d.ts.map
@@ -1,2 +1,2 @@
1
- export declare function validateArgs_HumidityControlModeCCAPI_set(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
1
+ export declare function validateArgs_HumidityControlModeCCAPI_set(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
2
2
  //# sourceMappingURL=HumidityControlModeCC._validateArgs.d.ts.map
@@ -1,5 +1,5 @@
1
- export declare function validateArgs_HumidityControlSetpointCCAPI_get(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
2
- export declare function validateArgs_HumidityControlSetpointCCAPI_set(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
3
- export declare function validateArgs_HumidityControlSetpointCCAPI_getCapabilities(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
4
- export declare function validateArgs_HumidityControlSetpointCCAPI_getSupportedScales(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
1
+ export declare function validateArgs_HumidityControlSetpointCCAPI_get(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
2
+ export declare function validateArgs_HumidityControlSetpointCCAPI_set(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
3
+ export declare function validateArgs_HumidityControlSetpointCCAPI_getCapabilities(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
4
+ export declare function validateArgs_HumidityControlSetpointCCAPI_getSupportedScales(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
5
5
  //# sourceMappingURL=HumidityControlSetpointCC._validateArgs.d.ts.map
@@ -1,10 +1,10 @@
1
- export declare function validateArgs_IndicatorCCAPI_get(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
2
- export declare function validateArgs_IndicatorCCAPI_set(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
3
- export declare function validateArgs_IndicatorCCAPI_sendReport(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
4
- export declare function validateArgs_IndicatorCCAPI_getSupported(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
5
- export declare function validateArgs_IndicatorCCAPI_reportSupported(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
6
- export declare function validateArgs_IndicatorCCAPI_reportDescription(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
7
- export declare function validateArgs_IndicatorCCAPI_setTimeout(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
8
- export declare function validateArgs_IndicatorCCAPI_getTimeout(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
9
- export declare function validateArgs_IndicatorCCAPI_getDescription(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
1
+ export declare function validateArgs_IndicatorCCAPI_get(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
2
+ export declare function validateArgs_IndicatorCCAPI_set(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
3
+ export declare function validateArgs_IndicatorCCAPI_sendReport(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
4
+ export declare function validateArgs_IndicatorCCAPI_getSupported(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
5
+ export declare function validateArgs_IndicatorCCAPI_reportSupported(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
6
+ export declare function validateArgs_IndicatorCCAPI_reportDescription(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
7
+ export declare function validateArgs_IndicatorCCAPI_setTimeout(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
8
+ export declare function validateArgs_IndicatorCCAPI_getTimeout(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
9
+ export declare function validateArgs_IndicatorCCAPI_getDescription(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
10
10
  //# sourceMappingURL=IndicatorCC._validateArgs.d.ts.map
@@ -1,11 +1,11 @@
1
- export declare function validateArgs_IrrigationCCAPI_setSystemConfig(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
2
- export declare function validateArgs_IrrigationCCAPI_getValveInfo(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
3
- export declare function validateArgs_IrrigationCCAPI_setValveConfig(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
4
- export declare function validateArgs_IrrigationCCAPI_getValveConfig(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
5
- export declare function validateArgs_IrrigationCCAPI_runValve(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
6
- export declare function validateArgs_IrrigationCCAPI_shutoffValve(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
7
- export declare function validateArgs_IrrigationCCAPI_setValveTable(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
8
- export declare function validateArgs_IrrigationCCAPI_getValveTable(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
9
- export declare function validateArgs_IrrigationCCAPI_runTables(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
10
- export declare function validateArgs_IrrigationCCAPI_shutoffSystem(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
1
+ export declare function validateArgs_IrrigationCCAPI_setSystemConfig(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
2
+ export declare function validateArgs_IrrigationCCAPI_getValveInfo(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
3
+ export declare function validateArgs_IrrigationCCAPI_setValveConfig(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
4
+ export declare function validateArgs_IrrigationCCAPI_getValveConfig(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
5
+ export declare function validateArgs_IrrigationCCAPI_runValve(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
6
+ export declare function validateArgs_IrrigationCCAPI_shutoffValve(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
7
+ export declare function validateArgs_IrrigationCCAPI_setValveTable(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
8
+ export declare function validateArgs_IrrigationCCAPI_getValveTable(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
9
+ export declare function validateArgs_IrrigationCCAPI_runTables(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
10
+ export declare function validateArgs_IrrigationCCAPI_shutoffSystem(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
11
11
  //# sourceMappingURL=IrrigationCC._validateArgs.d.ts.map
@@ -1,2 +1,2 @@
1
- export declare function validateArgs_LanguageCCAPI_set(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
1
+ export declare function validateArgs_LanguageCCAPI_set(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
2
2
  //# sourceMappingURL=LanguageCC._validateArgs.d.ts.map
@@ -1,2 +1,2 @@
1
- export declare function validateArgs_LockCCAPI_set(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext<unknown, (this: unknown, ...args: any) => any>) => void | T;
1
+ export declare function validateArgs_LockCCAPI_set(): <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext) => T | void;
2
2
  //# sourceMappingURL=LockCC._validateArgs.d.ts.map
@@ -27,7 +27,7 @@ export interface LockCCSetOptions {
27
27
  }
28
28
  export declare class LockCCSet extends LockCC {
29
29
  constructor(options: WithAddress<LockCCSetOptions>);
30
- static from(_raw: CCRaw, _ctx: CCParsingContext): LockCCSet;
30
+ static from(raw: CCRaw, ctx: CCParsingContext): LockCCSet;
31
31
  locked: boolean;
32
32
  serialize(ctx: CCEncodingContext): Promise<Bytes>;
33
33
  toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
@@ -39,6 +39,7 @@ export declare class LockCCReport extends LockCC {
39
39
  constructor(options: WithAddress<LockCCReportOptions>);
40
40
  static from(raw: CCRaw, ctx: CCParsingContext): LockCCReport;
41
41
  readonly locked: boolean;
42
+ serialize(ctx: CCEncodingContext): Promise<Bytes>;
42
43
  toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
43
44
  }
44
45
  export declare class LockCCGet extends LockCC {
@@ -203,8 +203,13 @@ let LockCCSet = (() => {
203
203
  super(options);
204
204
  this.locked = options.locked;
205
205
  }
206
- static from(_raw, _ctx) {
207
- throw new import_core.ZWaveError(`${this.name}: deserialization not implemented`, import_core.ZWaveErrorCodes.Deserialization_NotImplemented);
206
+ static from(raw, ctx) {
207
+ (0, import_core.validatePayload)(raw.payload.length >= 1);
208
+ const locked = raw.payload[0] === 1;
209
+ return new this({
210
+ nodeId: ctx.sourceNodeId,
211
+ locked
212
+ });
208
213
  }
209
214
  locked;
210
215
  serialize(ctx) {
@@ -253,6 +258,10 @@ let LockCCReport = (() => {
253
258
  });
254
259
  }
255
260
  locked;
261
+ serialize(ctx) {
262
+ this.payload = import_shared.Bytes.from([this.locked ? 1 : 0]);
263
+ return super.serialize(ctx);
264
+ }
256
265
  toLogEntry(ctx) {
257
266
  return {
258
267
  ...super.toLogEntry(ctx),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src_gen/cc/LockCC.ts"],
4
- "sourcesContent": ["import * as __validateArgs from \"./LockCC._validateArgs.js\";\nconst { validateArgs_LockCCAPI_set } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type SupervisionResult, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, supervisedCommandSucceeded, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes } from \"@zwave-js/shared\";\nimport { CCAPI, POLL_VALUE, PhysicalCCAPI, type PollValueImplementation, SET_VALUE, type SetValueImplementation, throwUnsupportedProperty, throwWrongValueType, } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { LockCommand } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { LockCCValues } from \"./_CCValues.generated.js\";\nexport { LockCCValues };\n@API(CommandClasses.Lock)\nexport class LockCCAPI extends PhysicalCCAPI {\n public supportsCommand(cmd: LockCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case LockCommand.Get:\n case LockCommand.Set:\n return true; // This is mandatory\n }\n return super.supportsCommand(cmd);\n }\n public async get(): Promise<MaybeNotKnown<boolean>> {\n this.assertSupportsCommand(LockCommand, LockCommand.Get);\n const cc = new LockCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<LockCCReport>(cc, this.commandOptions);\n return response?.locked;\n }\n /**\n * Locks or unlocks the lock\n * @param locked Whether the lock should be locked\n */\n @validateArgs_LockCCAPI_set()\n public async set(locked: boolean): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(LockCommand, LockCommand.Set);\n const cc = new LockCCSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n locked,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: LockCCAPI, { property }, value) {\n if (property !== \"locked\") {\n throwUnsupportedProperty(this.ccId, property);\n }\n if (typeof value !== \"boolean\") {\n throwWrongValueType(this.ccId, property, \"boolean\", typeof value);\n }\n const result = await this.set(value);\n // Verify the current value after a delay, unless the command was supervised and successful\n if (!supervisedCommandSucceeded(result)) {\n this.schedulePoll({ property }, value);\n }\n return result;\n };\n }\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: LockCCAPI, { property }) {\n if (property === \"locked\")\n return this.get();\n throwUnsupportedProperty(this.ccId, property);\n };\n }\n}\n@commandClass(CommandClasses.Lock)\n@implementedVersion(1)\n@ccValues(LockCCValues)\nexport class LockCC extends CommandClass {\n declare ccCommand: LockCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n await this.refreshValues(ctx);\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses.Lock, ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n });\n ctx.logNode(node.id, {\n message: \"requesting current lock state...\",\n direction: \"outbound\",\n });\n const locked = await api.get();\n const logMessage = `the lock is ${locked ? \"locked\" : \"unlocked\"}`;\n ctx.logNode(node.id, {\n message: logMessage,\n direction: \"inbound\",\n });\n }\n}\n// @publicAPI\nexport interface LockCCSetOptions {\n locked: boolean;\n}\n@CCCommand(LockCommand.Set)\n@useSupervision()\nexport class LockCCSet extends LockCC {\n public constructor(options: WithAddress<LockCCSetOptions>) {\n super(options);\n this.locked = options.locked;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): LockCCSet {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new LockCCSet({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public locked: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.locked ? 1 : 0]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { locked: this.locked },\n };\n }\n}\n// @publicAPI\nexport interface LockCCReportOptions {\n locked: boolean;\n}\n@CCCommand(LockCommand.Report)\n@ccValueProperty(\"locked\", LockCCValues.locked)\nexport class LockCCReport extends LockCC {\n public constructor(options: WithAddress<LockCCReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.locked = options.locked;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): LockCCReport {\n validatePayload(raw.payload.length >= 1);\n const locked = raw.payload[0] === 1;\n return new this({\n nodeId: ctx.sourceNodeId,\n locked,\n });\n }\n public readonly locked: boolean;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { locked: this.locked },\n };\n }\n}\n@CCCommand(LockCommand.Get)\n@expectedCCResponse(LockCCReport)\nexport class LockCCGet extends LockCC {\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as __validateArgs from \"./LockCC._validateArgs.js\";\nconst { validateArgs_LockCCAPI_set } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type SupervisionResult, ValueMetadata, type WithAddress, supervisedCommandSucceeded, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes } from \"@zwave-js/shared\";\nimport { CCAPI, POLL_VALUE, PhysicalCCAPI, type PollValueImplementation, SET_VALUE, type SetValueImplementation, throwUnsupportedProperty, throwWrongValueType, } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { LockCommand } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { LockCCValues } from \"./_CCValues.generated.js\";\nexport { LockCCValues };\n@API(CommandClasses.Lock)\nexport class LockCCAPI extends PhysicalCCAPI {\n public supportsCommand(cmd: LockCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case LockCommand.Get:\n case LockCommand.Set:\n return true; // This is mandatory\n }\n return super.supportsCommand(cmd);\n }\n public async get(): Promise<MaybeNotKnown<boolean>> {\n this.assertSupportsCommand(LockCommand, LockCommand.Get);\n const cc = new LockCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<LockCCReport>(cc, this.commandOptions);\n return response?.locked;\n }\n /**\n * Locks or unlocks the lock\n * @param locked Whether the lock should be locked\n */\n @validateArgs_LockCCAPI_set()\n public async set(locked: boolean): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(LockCommand, LockCommand.Set);\n const cc = new LockCCSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n locked,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: LockCCAPI, { property }, value) {\n if (property !== \"locked\") {\n throwUnsupportedProperty(this.ccId, property);\n }\n if (typeof value !== \"boolean\") {\n throwWrongValueType(this.ccId, property, \"boolean\", typeof value);\n }\n const result = await this.set(value);\n // Verify the current value after a delay, unless the command was supervised and successful\n if (!supervisedCommandSucceeded(result)) {\n this.schedulePoll({ property }, value);\n }\n return result;\n };\n }\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: LockCCAPI, { property }) {\n if (property === \"locked\")\n return this.get();\n throwUnsupportedProperty(this.ccId, property);\n };\n }\n}\n@commandClass(CommandClasses.Lock)\n@implementedVersion(1)\n@ccValues(LockCCValues)\nexport class LockCC extends CommandClass {\n declare ccCommand: LockCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n await this.refreshValues(ctx);\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses.Lock, ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n });\n ctx.logNode(node.id, {\n message: \"requesting current lock state...\",\n direction: \"outbound\",\n });\n const locked = await api.get();\n const logMessage = `the lock is ${locked ? \"locked\" : \"unlocked\"}`;\n ctx.logNode(node.id, {\n message: logMessage,\n direction: \"inbound\",\n });\n }\n}\n// @publicAPI\nexport interface LockCCSetOptions {\n locked: boolean;\n}\n@CCCommand(LockCommand.Set)\n@useSupervision()\nexport class LockCCSet extends LockCC {\n public constructor(options: WithAddress<LockCCSetOptions>) {\n super(options);\n this.locked = options.locked;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): LockCCSet {\n validatePayload(raw.payload.length >= 1);\n const locked = raw.payload[0] === 1;\n return new this({\n nodeId: ctx.sourceNodeId,\n locked,\n });\n }\n public locked: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.locked ? 1 : 0]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { locked: this.locked },\n };\n }\n}\n// @publicAPI\nexport interface LockCCReportOptions {\n locked: boolean;\n}\n@CCCommand(LockCommand.Report)\n@ccValueProperty(\"locked\", LockCCValues.locked)\nexport class LockCCReport extends LockCC {\n public constructor(options: WithAddress<LockCCReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.locked = options.locked;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): LockCCReport {\n validatePayload(raw.payload.length >= 1);\n const locked = raw.payload[0] === 1;\n return new this({\n nodeId: ctx.sourceNodeId,\n locked,\n });\n }\n public readonly locked: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.locked ? 1 : 0]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { locked: this.locked },\n };\n }\n}\n@CCCommand(LockCommand.Get)\n@expectedCCResponse(LockCCReport)\nexport class LockCCGet extends LockCC {\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }