jooby-codec 1.2.0 → 1.3.0

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 (68) hide show
  1. package/dist/CommandBinaryBuffer.d.ts +4 -8
  2. package/dist/CommandBinaryBuffer.js +9 -4
  3. package/dist/CommandBinaryBuffer.js.map +1 -1
  4. package/dist/commands/downlink/CorrectTime2000.d.ts +3 -3
  5. package/dist/commands/downlink/CorrectTime2000.js +4 -4
  6. package/dist/commands/downlink/CorrectTime2000.js.map +1 -1
  7. package/dist/commands/downlink/ExAbsArchiveDaysMul.d.ts +47 -0
  8. package/dist/commands/downlink/ExAbsArchiveDaysMul.js +65 -0
  9. package/dist/commands/downlink/ExAbsArchiveDaysMul.js.map +1 -0
  10. package/dist/commands/downlink/ExAbsArchiveHoursMul.d.ts +47 -0
  11. package/dist/commands/downlink/ExAbsArchiveHoursMul.js +67 -0
  12. package/dist/commands/downlink/ExAbsArchiveHoursMul.js.map +1 -0
  13. package/dist/commands/downlink/GetArchiveDaysMul.d.ts +47 -0
  14. package/dist/commands/downlink/GetArchiveDaysMul.js +64 -0
  15. package/dist/commands/downlink/GetArchiveDaysMul.js.map +1 -0
  16. package/dist/commands/downlink/GetArchiveHoursMul.d.ts +5 -5
  17. package/dist/commands/downlink/GetArchiveHoursMul.js +5 -5
  18. package/dist/commands/downlink/GetArchiveHoursMul.js.map +1 -1
  19. package/dist/commands/downlink/SetParameter.d.ts +73 -0
  20. package/dist/commands/downlink/SetParameter.js +136 -0
  21. package/dist/commands/downlink/SetParameter.js.map +1 -0
  22. package/dist/commands/downlink/SetTime2000.d.ts +3 -3
  23. package/dist/commands/downlink/SetTime2000.js +4 -4
  24. package/dist/commands/downlink/SetTime2000.js.map +1 -1
  25. package/dist/commands/downlink/index.d.ts +4 -0
  26. package/dist/commands/downlink/index.js +4 -0
  27. package/dist/commands/downlink/index.js.map +1 -1
  28. package/dist/commands/uplink/DataDayMul.d.ts +1 -1
  29. package/dist/commands/uplink/DataDayMul.js +4 -4
  30. package/dist/commands/uplink/DataDayMul.js.map +1 -1
  31. package/dist/commands/uplink/DataHourMul.js +5 -5
  32. package/dist/commands/uplink/DataHourMul.js.map +1 -1
  33. package/dist/commands/uplink/ExAbsArchiveDaysMul.d.ts +46 -0
  34. package/dist/commands/uplink/ExAbsArchiveDaysMul.js +72 -0
  35. package/dist/commands/uplink/ExAbsArchiveDaysMul.js.map +1 -0
  36. package/dist/commands/uplink/ExAbsArchiveHoursMul.d.ts +11 -0
  37. package/dist/commands/uplink/ExAbsArchiveHoursMul.js +93 -0
  38. package/dist/commands/uplink/ExAbsArchiveHoursMul.js.map +1 -0
  39. package/dist/commands/uplink/ExAbsDayMul.js +3 -3
  40. package/dist/commands/uplink/ExAbsDayMul.js.map +1 -1
  41. package/dist/commands/uplink/ExAbsHourMul.js +5 -5
  42. package/dist/commands/uplink/ExAbsHourMul.js.map +1 -1
  43. package/dist/commands/uplink/GetArchiveDaysMul.d.ts +73 -0
  44. package/dist/commands/uplink/GetArchiveDaysMul.js +97 -0
  45. package/dist/commands/uplink/GetArchiveDaysMul.js.map +1 -0
  46. package/dist/commands/uplink/GetArchiveHoursMul.d.ts +2 -2
  47. package/dist/commands/uplink/GetArchiveHoursMul.js +6 -6
  48. package/dist/commands/uplink/GetArchiveHoursMul.js.map +1 -1
  49. package/dist/commands/uplink/NewEvent.d.ts +2 -2
  50. package/dist/commands/uplink/NewEvent.js +5 -5
  51. package/dist/commands/uplink/NewEvent.js.map +1 -1
  52. package/dist/commands/uplink/Time2000.d.ts +3 -3
  53. package/dist/commands/uplink/Time2000.js +4 -4
  54. package/dist/commands/uplink/Time2000.js.map +1 -1
  55. package/dist/commands/uplink/index.d.ts +3 -0
  56. package/dist/commands/uplink/index.js +3 -0
  57. package/dist/commands/uplink/index.js.map +1 -1
  58. package/dist/constants/deviceParameters.d.ts +15 -0
  59. package/dist/constants/deviceParameters.js +16 -0
  60. package/dist/constants/deviceParameters.js.map +1 -0
  61. package/dist/utils/bitSet.d.ts +2 -2
  62. package/dist/utils/bitSet.js +2 -3
  63. package/dist/utils/bitSet.js.map +1 -1
  64. package/dist/utils/time.d.ts +2 -2
  65. package/dist/utils/time.js +2 -2
  66. package/dist/utils/time.js.map +1 -1
  67. package/package.json +1 -1
  68. package/readme.md +3 -3
@@ -0,0 +1,73 @@
1
+ /**
2
+ * [[include:commands/downlink/SetParameter.md]]
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ import Command from '../../Command.js';
7
+ /**
8
+ * Initial values for pulse devices.
9
+ */
10
+ interface IParameterInitialData {
11
+ /**
12
+ * 4 byte int BE
13
+ */
14
+ value: number;
15
+ /**
16
+ * 4 byte int BE
17
+ */
18
+ meterValue: number;
19
+ pulseCoefficient: number;
20
+ }
21
+ interface IParameterInitialDataMultiChannel extends IParameterInitialData {
22
+ /**
23
+ * Channel that accept initial values.
24
+ */
25
+ channel: number;
26
+ }
27
+ interface IParameterAbsoluteDataStatus {
28
+ status: number;
29
+ }
30
+ type TParameter = IParameterInitialData | IParameterInitialDataMultiChannel | IParameterAbsoluteDataStatus;
31
+ /**
32
+ * SetParameter command parameters
33
+ *
34
+ * @example
35
+ * import {constants} from 'jooby-codec';
36
+ * {id: constants.deviceParameters.INITIAL_DATA, data: {value: 2023, meterValue: 204, pulseCoefficient: 100}}
37
+ */
38
+ interface ISetParameterParameters {
39
+ /**
40
+ * Parameter id - one of `constants/deviceParameters`.
41
+ */
42
+ id: number;
43
+ /**
44
+ * Parameter data, different - depending on id.
45
+ */
46
+ data: TParameter;
47
+ }
48
+ /**
49
+ * Downlink command.
50
+ *
51
+ * @example
52
+ * ```js
53
+ * import SetParameter from 'jooby-codec/commands/downlink/SetParameter';
54
+ *
55
+ * const parameters = {id: constants.deviceParameters.INITIAL_DATA, data: {value: 2023, meterValue: 204, pulseCoefficient: 100}};
56
+ * const command = new SetParameter(parameters);
57
+ *
58
+ * // output command binary in hex representation
59
+ * console.log(command.toHex());
60
+ * // 03 0a 17 00 00 00 cc 82 00 00 07 e7
61
+ * ```
62
+ * [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/downlink/SetParameter.md)
63
+ */
64
+ declare class SetParameter extends Command {
65
+ parameters: ISetParameterParameters;
66
+ constructor(parameters: ISetParameterParameters);
67
+ static readonly id = 3;
68
+ static readonly directionType = 1;
69
+ static readonly title = "SET_PARAMETER";
70
+ static fromBytes(data: Uint8Array): SetParameter;
71
+ toBytes(): Uint8Array;
72
+ }
73
+ export default SetParameter;
@@ -0,0 +1,136 @@
1
+ /**
2
+ * [[include:commands/downlink/SetParameter.md]]
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ import Command from '../../Command.js';
7
+ import CommandBinaryBuffer from '../../CommandBinaryBuffer.js';
8
+ import { DOWNLINK } from '../../constants/directionTypes.js';
9
+ import * as deviceParameters from '../../constants/deviceParameters.js';
10
+ const COMMAND_ID = 0x03;
11
+ const COMMAND_TITLE = 'SET_PARAMETER';
12
+ // max size for current implementation
13
+ const COMMAND_MAX_BODY_SIZE = 11;
14
+ const byteToPulseCoefficientMap = new Map([
15
+ [0x80, 1000],
16
+ [0x81, 5000],
17
+ [0x82, 100],
18
+ [0x83, 10],
19
+ [0x84, 1],
20
+ [0x85, 0.1],
21
+ [0x86, 0.01]
22
+ ]);
23
+ const pulseCoefficientToByteMap = new Map([...byteToPulseCoefficientMap.entries()].map(([key, value]) => [value, key]));
24
+ const isMSBSet = (value) => !!(value & 0x80);
25
+ const getPulseCoefficient = (buffer) => {
26
+ const pulseCoefficient = buffer.getUint8();
27
+ if (isMSBSet(pulseCoefficient)) {
28
+ const value = byteToPulseCoefficientMap.get(pulseCoefficient);
29
+ if (value) {
30
+ return value;
31
+ }
32
+ throw new Error('pulseCoefficient MSB is set, but value unknown');
33
+ }
34
+ return pulseCoefficient;
35
+ };
36
+ const setPulseCoefficient = (buffer, value) => {
37
+ if (pulseCoefficientToByteMap.has(value)) {
38
+ const byte = pulseCoefficientToByteMap.get(value);
39
+ if (byte) {
40
+ buffer.setUint8(byte);
41
+ }
42
+ else {
43
+ throw new Error('pulseCoefficient MSB is set, but value unknown');
44
+ }
45
+ }
46
+ else {
47
+ buffer.setUint8(value);
48
+ }
49
+ };
50
+ /**
51
+ * Downlink command.
52
+ *
53
+ * @example
54
+ * ```js
55
+ * import SetParameter from 'jooby-codec/commands/downlink/SetParameter';
56
+ *
57
+ * const parameters = {id: constants.deviceParameters.INITIAL_DATA, data: {value: 2023, meterValue: 204, pulseCoefficient: 100}};
58
+ * const command = new SetParameter(parameters);
59
+ *
60
+ * // output command binary in hex representation
61
+ * console.log(command.toHex());
62
+ * // 03 0a 17 00 00 00 cc 82 00 00 07 e7
63
+ * ```
64
+ * [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/downlink/SetParameter.md)
65
+ */
66
+ class SetParameter extends Command {
67
+ constructor(parameters) {
68
+ super();
69
+ this.parameters = parameters;
70
+ }
71
+ // data - only body (without header)
72
+ static fromBytes(data) {
73
+ const buffer = new CommandBinaryBuffer(data);
74
+ const id = buffer.getUint8();
75
+ let parameterData;
76
+ switch (id) {
77
+ case deviceParameters.INITIAL_DATA:
78
+ parameterData = {
79
+ meterValue: buffer.getUint32(false),
80
+ pulseCoefficient: getPulseCoefficient(buffer),
81
+ value: buffer.getUint32(false)
82
+ };
83
+ break;
84
+ case deviceParameters.INITIAL_DATA_MULTI_CHANNEL:
85
+ parameterData = {
86
+ channel: buffer.getUint8(),
87
+ meterValue: buffer.getUint32(false),
88
+ pulseCoefficient: getPulseCoefficient(buffer),
89
+ value: buffer.getUint32(false)
90
+ };
91
+ break;
92
+ case deviceParameters.ABSOLUTE_DATA_STATUS:
93
+ parameterData = {
94
+ status: buffer.getUint8()
95
+ };
96
+ break;
97
+ default:
98
+ throw new Error(`${SetParameter.getId()}: parameter ${id} is not supported`);
99
+ }
100
+ return new SetParameter({ id, data: parameterData });
101
+ }
102
+ // returns full message - header with body
103
+ toBytes() {
104
+ const { id, data } = this.parameters;
105
+ const buffer = new CommandBinaryBuffer(COMMAND_MAX_BODY_SIZE);
106
+ let parameterData;
107
+ buffer.setUint8(id);
108
+ switch (id) {
109
+ case deviceParameters.INITIAL_DATA:
110
+ parameterData = data;
111
+ buffer.setUint32(parameterData.meterValue, false);
112
+ setPulseCoefficient(buffer, parameterData.pulseCoefficient);
113
+ buffer.setUint32(parameterData.value, false);
114
+ break;
115
+ case deviceParameters.INITIAL_DATA_MULTI_CHANNEL:
116
+ parameterData = data;
117
+ buffer.setUint8(parameterData.channel);
118
+ buffer.setUint32(parameterData.meterValue, false);
119
+ setPulseCoefficient(buffer, parameterData.pulseCoefficient);
120
+ buffer.setUint32(parameterData.value, false);
121
+ break;
122
+ case deviceParameters.ABSOLUTE_DATA_STATUS:
123
+ parameterData = data;
124
+ buffer.setUint8(parameterData.status);
125
+ break;
126
+ default:
127
+ throw new Error(`${SetParameter.getId()}: parameter ${id} is not supported`);
128
+ }
129
+ return Command.toBytes(COMMAND_ID, buffer.getBytesToOffset());
130
+ }
131
+ }
132
+ SetParameter.id = COMMAND_ID;
133
+ SetParameter.directionType = DOWNLINK;
134
+ SetParameter.title = COMMAND_TITLE;
135
+ export default SetParameter;
136
+ //# sourceMappingURL=SetParameter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SetParameter.js","sourceRoot":"","sources":["../../../src/commands/downlink/SetParameter.ts"],"names":[],"mappings":"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"}
@@ -9,13 +9,13 @@ import Command from '../../Command.js';
9
9
  *
10
10
  * @example
11
11
  * // time: 2023-04-03T14:01:17.000Z
12
- * {sequenceNumber: 77, time: 733845677}
12
+ * {sequenceNumber: 77, seconds: 733845677}
13
13
  */
14
14
  interface IDownlinkSetTime2000Parameters {
15
15
  /** unique time manipulation operation number */
16
16
  sequenceNumber: number;
17
17
  /** seconds */
18
- time: number;
18
+ seconds: number;
19
19
  }
20
20
  /**
21
21
  * Downlink command.
@@ -24,7 +24,7 @@ interface IDownlinkSetTime2000Parameters {
24
24
  * ```js
25
25
  * import SetTime2000 from 'jooby-codec/commands/downlink/SetTime2000';
26
26
  *
27
- * const parameters = {sequenceNumber: 78, time: 123456};
27
+ * const parameters = {sequenceNumber: 78, seconds: 123456};
28
28
  * const command = new SetTime2000(parameters);
29
29
  *
30
30
  * // output command binary in hex representation
@@ -16,7 +16,7 @@ const COMMAND_BODY_SIZE = 5;
16
16
  * ```js
17
17
  * import SetTime2000 from 'jooby-codec/commands/downlink/SetTime2000';
18
18
  *
19
- * const parameters = {sequenceNumber: 78, time: 123456};
19
+ * const parameters = {sequenceNumber: 78, seconds: 123456};
20
20
  * const command = new SetTime2000(parameters);
21
21
  *
22
22
  * // output command binary in hex representation
@@ -38,7 +38,7 @@ class SetTime2000 extends Command {
38
38
  const buffer = new BinaryBuffer(data, false);
39
39
  const parameters = {
40
40
  sequenceNumber: buffer.getUint8(),
41
- time: buffer.getInt32()
41
+ seconds: buffer.getInt32()
42
42
  };
43
43
  if (!buffer.isEmpty) {
44
44
  throw new Error(`${this.getName()}. BinaryBuffer is not empty.`);
@@ -47,10 +47,10 @@ class SetTime2000 extends Command {
47
47
  }
48
48
  // returns full message - header with body
49
49
  toBytes() {
50
- const { sequenceNumber, time } = this.parameters;
50
+ const { sequenceNumber, seconds } = this.parameters;
51
51
  const buffer = new BinaryBuffer(COMMAND_BODY_SIZE, false);
52
52
  buffer.setUint8(sequenceNumber);
53
- buffer.setInt32(time);
53
+ buffer.setInt32(seconds);
54
54
  return Command.toBytes(COMMAND_ID, buffer.toUint8Array());
55
55
  }
56
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SetTime2000.js","sourceRoot":"","sources":["../../../src/commands/downlink/SetTime2000.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,YAAY,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAC,QAAQ,EAAC,MAAM,mCAAmC,CAAC;AAkB3D,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,aAAa,GAAG,eAAe,CAAC;AACtC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAG5B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAY,SAAQ,OAAO;IAC7B,YAAqB,UAA0C;QAC3D,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAAgC;IAE/D,CAAC;IAQD,oCAAoC;IACpC,MAAM,CAAC,SAAS,CAAG,IAAgB;QAC/B,IAAK,IAAI,CAAC,UAAU,KAAK,iBAAiB,EAAG;YACzC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,wBAAwB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SAChF;QAED,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG;YACf,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE;YACjC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE;SAC1B,CAAC;QAEF,IAAK,CAAC,MAAM,CAAC,OAAO,EAAG;YACnB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;SACpE;QAED,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IAED,0CAA0C;IAC1C,OAAO;QACH,MAAM,EAAC,cAAc,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAE1D,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEtB,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;;AAlCe,cAAE,GAAG,UAAU,CAAC;AAEhB,yBAAa,GAAG,QAAQ,CAAC;AAEzB,iBAAK,GAAG,aAAa,CAAC;AAkC1C,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"SetTime2000.js","sourceRoot":"","sources":["../../../src/commands/downlink/SetTime2000.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,YAAY,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAC,QAAQ,EAAC,MAAM,mCAAmC,CAAC;AAkB3D,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,aAAa,GAAG,eAAe,CAAC;AACtC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAG5B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAY,SAAQ,OAAO;IAC7B,YAAqB,UAA0C;QAC3D,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAAgC;IAE/D,CAAC;IAQD,oCAAoC;IACpC,MAAM,CAAC,SAAS,CAAG,IAAgB;QAC/B,IAAK,IAAI,CAAC,UAAU,KAAK,iBAAiB,EAAG;YACzC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,wBAAwB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SAChF;QAED,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG;YACf,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE;YACjC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE;SAC7B,CAAC;QAEF,IAAK,CAAC,MAAM,CAAC,OAAO,EAAG;YACnB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;SACpE;QAED,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IAED,0CAA0C;IAC1C,OAAO;QACH,MAAM,EAAC,cAAc,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAE1D,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEzB,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;;AAlCe,cAAE,GAAG,UAAU,CAAC;AAEhB,yBAAa,GAAG,QAAQ,CAAC;AAEzB,iBAAK,GAAG,aAAa,CAAC;AAkC1C,eAAe,WAAW,CAAC"}
@@ -4,7 +4,11 @@
4
4
  * @packageDocumentation
5
5
  */
6
6
  export { default as CorrectTime2000 } from './CorrectTime2000.js';
7
+ export { default as ExAbsArchiveDaysMul } from './ExAbsArchiveDaysMul.js';
8
+ export { default as ExAbsArchiveHoursMul } from './ExAbsArchiveHoursMul.js';
9
+ export { default as GetArchiveDaysMul } from './GetArchiveDaysMul.js';
7
10
  export { default as GetArchiveHoursMul } from './GetArchiveHoursMul.js';
8
11
  export { default as NewStatus } from './NewStatus.js';
12
+ export { default as SetParameter } from './SetParameter.js';
9
13
  export { default as SetTime2000 } from './SetTime2000.js';
10
14
  export { default as SoftRestart } from './SoftRestart.js';
@@ -4,8 +4,12 @@
4
4
  * @packageDocumentation
5
5
  */
6
6
  export { default as CorrectTime2000 } from './CorrectTime2000.js';
7
+ export { default as ExAbsArchiveDaysMul } from './ExAbsArchiveDaysMul.js';
8
+ export { default as ExAbsArchiveHoursMul } from './ExAbsArchiveHoursMul.js';
9
+ export { default as GetArchiveDaysMul } from './GetArchiveDaysMul.js';
7
10
  export { default as GetArchiveHoursMul } from './GetArchiveHoursMul.js';
8
11
  export { default as NewStatus } from './NewStatus.js';
12
+ export { default as SetParameter } from './SetParameter.js';
9
13
  export { default as SetTime2000 } from './SetTime2000.js';
10
14
  export { default as SoftRestart } from './SoftRestart.js';
11
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/downlink/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/downlink/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAC,OAAO,IAAI,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAC,OAAO,IAAI,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,kBAAkB,CAAC"}
@@ -6,7 +6,7 @@ interface IDataDayMulParameters extends IGetCurrentMulParameters {
6
6
  /**
7
7
  * Seconds since year 2000, i.e. timestamp (in seconds) - 946684800
8
8
  */
9
- time: number;
9
+ seconds: number;
10
10
  }
11
11
  declare class DataDayMul extends GetCurrentMul {
12
12
  parameters: IDataDayMulParameters;
@@ -15,7 +15,7 @@ class DataDayMul extends GetCurrentMul {
15
15
  this.parameters = parameters;
16
16
  }
17
17
  static fromBytes(data) {
18
- const parameters = { channels: [], time: 0 };
18
+ const parameters = { channels: [], seconds: 0 };
19
19
  const buffer = new CommandBinaryBuffer(data);
20
20
  const date = buffer.getDate();
21
21
  const channelArray = buffer.getChannels(false);
@@ -23,13 +23,13 @@ class DataDayMul extends GetCurrentMul {
23
23
  value: buffer.getExtendedValue(),
24
24
  index: channelIndex
25
25
  }));
26
- parameters.time = getSecondsFromDate(date);
26
+ parameters.seconds = getSecondsFromDate(date);
27
27
  return new DataDayMul(parameters);
28
28
  }
29
29
  toBytes() {
30
30
  const buffer = new CommandBinaryBuffer(COMMAND_BODY_MAX_SIZE);
31
- const { channels, time } = this.parameters;
32
- buffer.setDate(time);
31
+ const { channels, seconds } = this.parameters;
32
+ buffer.setDate(seconds);
33
33
  buffer.setChannels(channels.map(({ index }) => index));
34
34
  channels.forEach(({ value }) => buffer.setExtendedValue(value));
35
35
  return Command.toBytes(COMMAND_ID, buffer.getBytesToOffset());
@@ -1 +1 @@
1
- {"version":3,"file":"DataDayMul.js","sourceRoot":"","sources":["../../../src/commands/uplink/DataDayMul.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAE5D,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,mBAAmB,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAC,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AACvD,OAAO,aAAyC,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAczD,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,aAAa,GAAG,cAAc,CAAC;AAErC,qDAAqD;AACrD,cAAc;AACd,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAGjC,MAAM,UAAW,SAAQ,aAAa;IAClC,YAAqB,UAAiC;QAClD,KAAK,CAAC,UAAU,CAAC,CAAC;QADD,eAAU,GAAV,UAAU,CAAuB;IAEtD,CAAC;IAQD,MAAM,CAAC,SAAS,CAAG,IAAgB;QAC/B,MAAM,UAAU,GAA0B,EAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAC,CAAC;QAElE,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAE7C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE/C,UAAU,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACpD,KAAK,EAAE,MAAM,CAAC,gBAAgB,EAAE;YAChC,KAAK,EAAE,YAAY;SACtB,CAAC,CAAC,CAAC;QAEJ,UAAU,CAAC,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAE3C,OAAO,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACH,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;QAC9D,MAAM,EAAC,QAAQ,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAEzC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAC,KAAK,EAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACrD,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAC,KAAK,EAAC,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9D,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAClE,CAAC;;AAjCe,aAAE,GAAG,UAAU,CAAC;AAEhB,wBAAa,GAAG,MAAM,CAAC;AAEvB,gBAAK,GAAG,aAAa,CAAC;AAiC1C,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"DataDayMul.js","sourceRoot":"","sources":["../../../src/commands/uplink/DataDayMul.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAE5D,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,mBAAmB,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAC,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AACvD,OAAO,aAAyC,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAczD,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,aAAa,GAAG,cAAc,CAAC;AAErC,qDAAqD;AACrD,cAAc;AACd,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAGjC,MAAM,UAAW,SAAQ,aAAa;IAClC,YAAqB,UAAiC;QAClD,KAAK,CAAC,UAAU,CAAC,CAAC;QADD,eAAU,GAAV,UAAU,CAAuB;IAEtD,CAAC;IAQD,MAAM,CAAC,SAAS,CAAG,IAAgB;QAC/B,MAAM,UAAU,GAA0B,EAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAC,CAAC;QAErE,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAE7C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE/C,UAAU,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACpD,KAAK,EAAE,MAAM,CAAC,gBAAgB,EAAE;YAChC,KAAK,EAAE,YAAY;SACtB,CAAC,CAAC,CAAC;QAEJ,UAAU,CAAC,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAE9C,OAAO,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACH,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;QAC9D,MAAM,EAAC,QAAQ,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAE5C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxB,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAC,KAAK,EAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACrD,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAC,KAAK,EAAC,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9D,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAClE,CAAC;;AAjCe,aAAE,GAAG,UAAU,CAAC;AAEhB,wBAAa,GAAG,MAAM,CAAC;AAEvB,gBAAK,GAAG,aAAa,CAAC;AAiC1C,eAAe,UAAU,CAAC"}
@@ -38,12 +38,12 @@ class DataHourMul extends GetCurrentMul {
38
38
  value = buffer.getExtendedValue();
39
39
  counterDate.setTime(date.getTime());
40
40
  const diff = [];
41
- const channel = { value, index: channelIndex, time: getSecondsFromDate(counterDate), diff };
41
+ const channel = { value, index: channelIndex, seconds: getSecondsFromDate(counterDate), diff };
42
42
  channels.push(channel);
43
43
  for (let hourIndex = 0; hourIndex < hourAmount; ++hourIndex) {
44
44
  value = buffer.getExtendedValue();
45
45
  counterDate.setUTCHours(counterDate.getUTCHours() + hourIndex);
46
- diff.push({ value, time: getSecondsFromDate(counterDate) });
46
+ diff.push({ value, seconds: getSecondsFromDate(counterDate) });
47
47
  }
48
48
  }
49
49
  return new DataHourMul({ channels });
@@ -51,14 +51,14 @@ class DataHourMul extends GetCurrentMul {
51
51
  toBytes() {
52
52
  const buffer = new CommandBinaryBuffer(COMMAND_BODY_MAX_SIZE);
53
53
  const { channels } = this.parameters;
54
- const { time } = channels[0];
55
- const realDate = getDateFromSeconds(time);
54
+ const { seconds } = channels[0];
55
+ const realDate = getDateFromSeconds(seconds);
56
56
  const hour = realDate.getUTCHours();
57
57
  let hourAmount = channels[0].diff.length;
58
58
  if (hourAmount === 1) {
59
59
  hourAmount = 0;
60
60
  }
61
- buffer.setDate(time);
61
+ buffer.setDate(seconds);
62
62
  buffer.setHours(hour, hourAmount);
63
63
  buffer.setChannels(channels);
64
64
  for (const { value, diff } of channels) {
@@ -1 +1 @@
1
- {"version":3,"file":"DataHourMul.js","sourceRoot":"","sources":["../../../src/commands/uplink/DataHourMul.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DataHourMul.js","sourceRoot":"","sources":["../../../src/commands/uplink/DataHourMul.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import Command from '../../Command.js';
2
+ /**
3
+ * Channel absolute value by day.
4
+ */
5
+ interface IArchiveChannelDayAbsoluteValue {
6
+ value: number;
7
+ meterValue: number;
8
+ day: number;
9
+ seconds: number;
10
+ date: Date;
11
+ }
12
+ interface IArchiveChannelDayAbsolute {
13
+ /**
14
+ * channel number
15
+ */
16
+ index: number;
17
+ /**
18
+ * values by days
19
+ */
20
+ days: Array<IArchiveChannelDayAbsoluteValue>;
21
+ /**
22
+ * Channel pulse coefficient - IPK in bytes.
23
+ */
24
+ pulseCoefficient: number;
25
+ /** time */
26
+ seconds: number;
27
+ /**
28
+ * Normal date in UTC.
29
+ */
30
+ date: Date;
31
+ }
32
+ interface IUplinkExAbsArchiveDayMulParameters {
33
+ channels: Array<IArchiveChannelDayAbsolute>;
34
+ date: Date;
35
+ dayAmount: number;
36
+ }
37
+ declare class ExAbsArchiveDayMul extends Command {
38
+ parameters: IUplinkExAbsArchiveDayMulParameters;
39
+ constructor(parameters: IUplinkExAbsArchiveDayMulParameters);
40
+ static id: number;
41
+ static readonly directionType = 2;
42
+ static title: string;
43
+ static fromBytes(data: Uint8Array): ExAbsArchiveDayMul;
44
+ toBytes(): Uint8Array;
45
+ }
46
+ export default ExAbsArchiveDayMul;
@@ -0,0 +1,72 @@
1
+ import Command from '../../Command.js';
2
+ import CommandBinaryBuffer from '../../CommandBinaryBuffer.js';
3
+ import roundNumber from '../../utils/roundNumber.js';
4
+ import { getSecondsFromDate } from '../../utils/time.js';
5
+ import { UPLINK } from '../../constants/directionTypes.js';
6
+ const COMMAND_ID = 0x0d1f;
7
+ const COMMAND_TITLE = 'EX_ABS_ARCH_DAYS_MUL';
8
+ // date 2 bytes, channels 1 byte (max channels: 4), days 1 byte (max days - 255)
9
+ // 4 + (4 channels * (1 byte pulse coefficient + 5 bytes of day values) * 255 max days)
10
+ const COMMAND_BODY_MAX_SIZE = 6124;
11
+ class ExAbsArchiveDayMul extends Command {
12
+ constructor(parameters) {
13
+ super();
14
+ this.parameters = parameters;
15
+ this.parameters.channels = this.parameters.channels.sort((a, b) => a.index - b.index);
16
+ }
17
+ static fromBytes(data) {
18
+ const buffer = new CommandBinaryBuffer(data);
19
+ const date = buffer.getDate();
20
+ const channelArray = buffer.getChannels(true);
21
+ const dayAmount = buffer.getUint8();
22
+ const maxChannel = Math.max.apply(null, channelArray);
23
+ const counterDate = new Date(date);
24
+ let value;
25
+ const channels = [];
26
+ for (let channelIndex = 0; channelIndex <= maxChannel; ++channelIndex) {
27
+ // IPK_${channelIndex}
28
+ const pulseCoefficient = buffer.getUint8();
29
+ const days = [];
30
+ counterDate.setTime(date.getTime());
31
+ channels.push({
32
+ days,
33
+ pulseCoefficient,
34
+ index: channelIndex,
35
+ seconds: getSecondsFromDate(counterDate),
36
+ date: new Date(counterDate)
37
+ });
38
+ for (let day = 0; day < dayAmount; ++day) {
39
+ value = buffer.getExtendedValue();
40
+ counterDate.setTime(date.getTime());
41
+ counterDate.setUTCHours(counterDate.getUTCHours() + (day * 24));
42
+ days.push({
43
+ value,
44
+ day,
45
+ meterValue: roundNumber(value / pulseCoefficient),
46
+ date: new Date(counterDate),
47
+ seconds: getSecondsFromDate(counterDate)
48
+ });
49
+ }
50
+ }
51
+ return new ExAbsArchiveDayMul({ channels, date, dayAmount });
52
+ }
53
+ toBytes() {
54
+ const buffer = new CommandBinaryBuffer(COMMAND_BODY_MAX_SIZE);
55
+ const { channels, date, dayAmount } = this.parameters;
56
+ buffer.setDate(date);
57
+ buffer.setChannels(channels);
58
+ buffer.setUint8(dayAmount);
59
+ channels.forEach(({ days, pulseCoefficient }) => {
60
+ buffer.setUint8(pulseCoefficient);
61
+ days.forEach(({ value }) => {
62
+ buffer.setExtendedValue(value);
63
+ });
64
+ });
65
+ return Command.toBytes(COMMAND_ID, buffer.getBytesToOffset());
66
+ }
67
+ }
68
+ ExAbsArchiveDayMul.id = COMMAND_ID;
69
+ ExAbsArchiveDayMul.directionType = UPLINK;
70
+ ExAbsArchiveDayMul.title = COMMAND_TITLE;
71
+ export default ExAbsArchiveDayMul;
72
+ //# sourceMappingURL=ExAbsArchiveDaysMul.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExAbsArchiveDaysMul.js","sourceRoot":"","sources":["../../../src/commands/uplink/ExAbsArchiveDaysMul.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import GetCurrentMul from './GetCurrentMul.js';
2
+ declare class ExAbsArchiveHourMul extends GetCurrentMul {
3
+ parameters: any;
4
+ constructor(parameters: any);
5
+ static readonly id = 3103;
6
+ static readonly directionType = 2;
7
+ static readonly title = "EX_ABS_ARCH_HOUR_MUL";
8
+ static fromBytes(data: Uint8Array): any;
9
+ toBytes(): Uint8Array;
10
+ }
11
+ export default ExAbsArchiveHourMul;
@@ -0,0 +1,93 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
3
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
4
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
5
+ import Command from '../../Command.js';
6
+ import GetCurrentMul from './GetCurrentMul.js';
7
+ import { getSecondsFromDate, getDateFromSeconds } from '../../utils/time.js';
8
+ import CommandBinaryBuffer from '../../CommandBinaryBuffer.js';
9
+ import roundNumber from '../../utils/roundNumber.js';
10
+ import { UPLINK } from '../../constants/directionTypes.js';
11
+ // TODO: rework extended headers detection
12
+ const COMMAND_ID = 0x0c1f;
13
+ const COMMAND_TITLE = 'EX_ABS_ARCH_HOUR_MUL';
14
+ // date 2 bytes, hour 1 byte (max hours: 7), channels 1 byte (max channels: 4)
15
+ // 4 + (4 channels * 1 byte pulse coefficient) + (4 channels * 5 bytes of hour values) + (4 * 5 bytes of diff * 7 max hours diff)
16
+ const COMMAND_BODY_MAX_SIZE = 168;
17
+ class ExAbsArchiveHourMul extends GetCurrentMul {
18
+ // TODO: add interface for parameters
19
+ constructor(parameters) {
20
+ super(parameters);
21
+ this.parameters = parameters;
22
+ }
23
+ static fromBytes(data) {
24
+ const buffer = new CommandBinaryBuffer(data);
25
+ const date = buffer.getDate();
26
+ const { hour, hours } = buffer.getHours();
27
+ const channelArray = buffer.getChannels(true);
28
+ const maxChannel = Math.max.apply(null, channelArray);
29
+ date.setUTCHours(hour);
30
+ const counterDate = new Date(date);
31
+ let hourAmount = hours;
32
+ const channels = [];
33
+ if (hourAmount === 0) {
34
+ // one hour
35
+ hourAmount = 1;
36
+ }
37
+ for (let channelIndex = 0; channelIndex <= maxChannel; ++channelIndex) {
38
+ // IPK_${channelIndex}
39
+ const pulseCoefficient = buffer.getUint8();
40
+ // decode hour value for channel
41
+ const pulseValue = buffer.getExtendedValue();
42
+ const diff = [];
43
+ counterDate.setTime(date.getTime());
44
+ for (let hourIndex = 0; hourIndex < hourAmount; ++hourIndex) {
45
+ const value = buffer.getExtendedValue();
46
+ counterDate.setUTCHours(counterDate.getUTCHours() + hourIndex);
47
+ diff.push({
48
+ value,
49
+ pulseCoefficient,
50
+ seconds: getSecondsFromDate(counterDate),
51
+ meterValue: roundNumber((value + pulseValue) / pulseCoefficient)
52
+ });
53
+ }
54
+ channels.push({
55
+ diff,
56
+ pulseCoefficient,
57
+ index: channelIndex,
58
+ value: pulseValue,
59
+ seconds: getSecondsFromDate(date),
60
+ meterValue: roundNumber(pulseValue / pulseCoefficient)
61
+ });
62
+ }
63
+ return new ExAbsArchiveHourMul({ channels, date });
64
+ }
65
+ toBytes() {
66
+ const buffer = new CommandBinaryBuffer(COMMAND_BODY_MAX_SIZE);
67
+ const { channels } = this.parameters;
68
+ const { seconds } = channels[0];
69
+ const realDate = getDateFromSeconds(seconds);
70
+ const hour = realDate.getUTCHours();
71
+ let hourAmount = channels[0].diff.length;
72
+ // TODO: add link to doc
73
+ if (hourAmount === 1) {
74
+ hourAmount = 0;
75
+ }
76
+ buffer.setDate(seconds);
77
+ buffer.setHours(hour, hourAmount);
78
+ buffer.setChannels(channels);
79
+ for (const { value, diff, pulseCoefficient } of channels) {
80
+ buffer.setUint8(pulseCoefficient);
81
+ buffer.setExtendedValue(value);
82
+ for (const { value: diffValue } of diff) {
83
+ buffer.setExtendedValue(diffValue);
84
+ }
85
+ }
86
+ return Command.toBytes(COMMAND_ID, buffer.getBytesToOffset());
87
+ }
88
+ }
89
+ ExAbsArchiveHourMul.id = COMMAND_ID;
90
+ ExAbsArchiveHourMul.directionType = UPLINK;
91
+ ExAbsArchiveHourMul.title = COMMAND_TITLE;
92
+ export default ExAbsArchiveHourMul;
93
+ //# sourceMappingURL=ExAbsArchiveHoursMul.js.map