@secrecy/lib 1.0.0-dev.9 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/dist/BaseClient.d.ts +111 -0
  4. package/dist/BaseClient.js +506 -0
  5. package/{lib → dist}/PopupTools.d.ts +4 -4
  6. package/dist/PopupTools.js +195 -0
  7. package/{lib → dist}/ZeusThunder.d.ts +0 -0
  8. package/dist/ZeusThunder.js +65 -0
  9. package/dist/cache.d.ts +6 -0
  10. package/dist/cache.js +4 -0
  11. package/dist/client/SecrecyAppClient.d.ts +17 -0
  12. package/dist/client/SecrecyAppClient.js +226 -0
  13. package/dist/client/SecrecyCloudClient.d.ts +89 -0
  14. package/dist/client/SecrecyCloudClient.js +1405 -0
  15. package/dist/client/SecrecyDbClient.d.ts +21 -0
  16. package/dist/client/SecrecyDbClient.js +177 -0
  17. package/dist/client/SecrecyMailClient.d.ts +42 -0
  18. package/dist/client/SecrecyMailClient.js +1022 -0
  19. package/dist/client/SecrecyPayClient.d.ts +28 -0
  20. package/dist/client/SecrecyPayClient.js +68 -0
  21. package/dist/client/SecrecyWalletClient.d.ts +30 -0
  22. package/dist/client/SecrecyWalletClient.js +73 -0
  23. package/{lib → dist}/client/convert/file.d.ts +3 -3
  24. package/dist/client/convert/file.js +33 -0
  25. package/dist/client/convert/mail.d.ts +3 -0
  26. package/dist/client/convert/mail.js +42 -0
  27. package/dist/client/convert/node.d.ts +9 -0
  28. package/dist/client/convert/node.js +87 -0
  29. package/{lib → dist}/client/helpers.d.ts +9 -4
  30. package/dist/client/helpers.js +119 -0
  31. package/dist/client/index.d.ts +34 -0
  32. package/dist/client/index.js +46 -0
  33. package/{lib → dist}/client/storage.d.ts +0 -0
  34. package/dist/client/storage.js +12 -0
  35. package/dist/client/types/File.d.ts +14 -0
  36. package/dist/client/types/File.js +3 -0
  37. package/dist/client/types/Inputs.d.ts +16 -0
  38. package/dist/client/types/Inputs.js +3 -0
  39. package/dist/client/types/Node.d.ts +56 -0
  40. package/dist/client/types/Node.js +3 -0
  41. package/dist/client/types/UserAppNotifications.d.ts +6 -0
  42. package/dist/client/types/UserAppNotifications.js +3 -0
  43. package/dist/client/types/UserAppSettings.d.ts +5 -0
  44. package/dist/client/types/UserAppSettings.js +3 -0
  45. package/{lib → dist}/client/types/index.d.ts +25 -59
  46. package/dist/client/types/index.js +8 -0
  47. package/dist/client/types/selectors.d.ts +400 -0
  48. package/dist/client/types/selectors.js +135 -0
  49. package/{lib → dist}/crypto/file.d.ts +2 -2
  50. package/dist/crypto/file.js +195 -0
  51. package/{lib → dist}/crypto/index.d.ts +0 -0
  52. package/dist/crypto/index.js +45 -0
  53. package/dist/error.d.ts +33 -0
  54. package/dist/error.js +3 -0
  55. package/dist/index.d.ts +14 -0
  56. package/dist/index.js +10 -0
  57. package/{lib → dist}/minify/index.d.ts +0 -0
  58. package/dist/minify/index.js +23 -0
  59. package/{lib → dist}/minify/lz4.d.ts +0 -0
  60. package/dist/minify/lz4.js +539 -0
  61. package/{lib → dist}/sodium.d.ts +0 -0
  62. package/dist/sodium.js +6 -0
  63. package/{lib → dist}/utils/store-buddy.d.ts +1 -1
  64. package/dist/utils/store-buddy.js +58 -0
  65. package/{lib → dist}/utils/time.d.ts +0 -0
  66. package/dist/utils/time.js +12 -0
  67. package/{lib → dist/utils}/utils.d.ts +0 -0
  68. package/dist/utils/utils.js +47 -0
  69. package/{lib → dist}/worker/md5.d.ts +0 -0
  70. package/dist/worker/md5.js +24 -0
  71. package/{lib → dist}/worker/sodium.d.ts +0 -0
  72. package/dist/worker/sodium.js +118 -0
  73. package/{lib → dist}/worker/workerCodes.d.ts +0 -0
  74. package/dist/worker/workerCodes.js +255 -0
  75. package/{lib → dist}/zeus/const.d.ts +5 -0
  76. package/dist/zeus/const.js +1679 -0
  77. package/dist/zeus/index.d.ts +7941 -0
  78. package/dist/zeus/index.js +599 -0
  79. package/package.json +64 -54
  80. package/lib/BaseClient.d.ts +0 -266
  81. package/lib/BaseClient.js +0 -1332
  82. package/lib/PopupTools.js +0 -213
  83. package/lib/ZeusThunder.js +0 -115
  84. package/lib/cache.d.ts +0 -7
  85. package/lib/cache.js +0 -5
  86. package/lib/client/admin/index.d.ts +0 -10
  87. package/lib/client/admin/index.js +0 -145
  88. package/lib/client/convert/file.js +0 -39
  89. package/lib/client/convert/folder.d.ts +0 -8
  90. package/lib/client/convert/folder.js +0 -264
  91. package/lib/client/convert/mail.d.ts +0 -3
  92. package/lib/client/convert/mail.js +0 -46
  93. package/lib/client/convert/vFile.d.ts +0 -5
  94. package/lib/client/convert/vFile.js +0 -164
  95. package/lib/client/helpers.js +0 -116
  96. package/lib/client/index.d.ts +0 -169
  97. package/lib/client/index.js +0 -3803
  98. package/lib/client/storage.js +0 -12
  99. package/lib/client/types/File.d.ts +0 -21
  100. package/lib/client/types/File.js +0 -2
  101. package/lib/client/types/FilesOnUsersOnApplications.d.ts +0 -9
  102. package/lib/client/types/FilesOnUsersOnApplications.js +0 -2
  103. package/lib/client/types/Folder.d.ts +0 -68
  104. package/lib/client/types/Folder.js +0 -7
  105. package/lib/client/types/Inputs.d.ts +0 -21
  106. package/lib/client/types/Inputs.js +0 -2
  107. package/lib/client/types/UserAppNotifications.d.ts +0 -6
  108. package/lib/client/types/UserAppNotifications.js +0 -2
  109. package/lib/client/types/UserAppSettings.d.ts +0 -7
  110. package/lib/client/types/UserAppSettings.js +0 -2
  111. package/lib/client/types/VFile.d.ts +0 -62
  112. package/lib/client/types/VFile.js +0 -4
  113. package/lib/client/types/index.js +0 -9
  114. package/lib/client/types/queries.d.ts +0 -535
  115. package/lib/client/types/queries.js +0 -192
  116. package/lib/crypto/file.js +0 -291
  117. package/lib/crypto/index.js +0 -37
  118. package/lib/index.d.ts +0 -12
  119. package/lib/index.js +0 -41
  120. package/lib/minify/index.js +0 -28
  121. package/lib/minify/lz4.js +0 -633
  122. package/lib/sodium.js +0 -28
  123. package/lib/utils/store-buddy.js +0 -69
  124. package/lib/utils/time.js +0 -22
  125. package/lib/utils.js +0 -188
  126. package/lib/worker/__mock__/sodium.worker.d.ts +0 -19
  127. package/lib/worker/__mock__/sodium.worker.js +0 -57
  128. package/lib/worker/md5.js +0 -43
  129. package/lib/worker/sodium.js +0 -155
  130. package/lib/worker/workerCodes.js +0 -3
  131. package/lib/zeus/const.js +0 -1671
  132. package/lib/zeus/index.d.ts +0 -33302
  133. package/lib/zeus/index.js +0 -558
@@ -0,0 +1,195 @@
1
+ import { setup, sodium } from "../sodium.js";
2
+ import SparkMD5 from "spark-md5";
3
+ import { chunks } from "../utils/utils.js";
4
+ function assert(c, message) {
5
+ if (!c) {
6
+ throw new Error(message);
7
+ }
8
+ }
9
+ export function secretstreamKeygen() {
10
+ return sodium.crypto_secretstream_xchacha20poly1305_keygen();
11
+ }
12
+ function encrypt(key) {
13
+ let destroyed = false;
14
+ const {
15
+ state,
16
+ header
17
+ } = sodium.crypto_secretstream_xchacha20poly1305_init_push(key);
18
+ const encrypt = (tag, plaintext) => {
19
+ assert(destroyed === false, "state already destroyed");
20
+ return sodium.crypto_secretstream_xchacha20poly1305_push(state, plaintext, null, tag);
21
+ };
22
+ function destroy() {
23
+ assert(destroyed === false, "state already destroyed");
24
+ destroyed = true;
25
+ }
26
+ return {
27
+ encrypt,
28
+ destroy,
29
+ header
30
+ };
31
+ }
32
+ function decrypt(header, key) {
33
+ assert(header.byteLength >= sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES, `header must be at least HEADERBYTES (${sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES}) long`);
34
+ assert(key.byteLength >= sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES, `key must be at least KEYBYTES (${sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES}) long`);
35
+ let destroyed = false;
36
+ const state = sodium.crypto_secretstream_xchacha20poly1305_init_pull(header, key);
37
+ const decrypt = ciphertext => {
38
+ assert(destroyed === false, "state already destroyed");
39
+ return sodium.crypto_secretstream_xchacha20poly1305_pull(state, ciphertext);
40
+ };
41
+ function destroy() {
42
+ assert(destroyed === false, "state already destroyed");
43
+ destroyed = true;
44
+ }
45
+ return {
46
+ decrypt,
47
+ destroy
48
+ };
49
+ }
50
+ export const CHUNK_SIZE = 8192;
51
+ export async function encryptSecretstream(key, data, progress, abort) {
52
+ await setup();
53
+ const {
54
+ encrypt: crypt,
55
+ destroy,
56
+ header
57
+ } = encrypt(key);
58
+ const cryptedChunk = CHUNK_SIZE + sodium.crypto_secretstream_xchacha20poly1305_ABYTES;
59
+ const max = Math.ceil(data.byteLength / CHUNK_SIZE) * cryptedChunk + header.byteLength;
60
+ progress?.({
61
+ percent: 0,
62
+ total: max,
63
+ current: 0
64
+ });
65
+ const final = new Uint8Array(max);
66
+ const sparkEncrypted = new SparkMD5.ArrayBuffer();
67
+ const spark = new SparkMD5.ArrayBuffer();
68
+ final.set(header);
69
+ sparkEncrypted.append(header);
70
+ let total = header.byteLength;
71
+ progress?.({
72
+ percent: total / max,
73
+ total: max,
74
+ current: total
75
+ });
76
+ let lastPercent = total / max;
77
+ for (const chunk of chunks(data, CHUNK_SIZE)) {
78
+ if (abort?.signal.aborted) {
79
+ throw new Error(`Encrypt aborted`);
80
+ }
81
+ spark.append(chunk);
82
+ const tag = chunk.length < CHUNK_SIZE ? sodium.crypto_secretstream_xchacha20poly1305_TAG_FINAL : sodium.crypto_secretstream_xchacha20poly1305_TAG_MESSAGE;
83
+ const crypted = crypt(tag, chunk);
84
+ sparkEncrypted.append(crypted);
85
+ final.set(crypted, total);
86
+ total += crypted.byteLength;
87
+ const percent = total / max;
88
+ if (percent > lastPercent + 0.01) {
89
+ progress?.({
90
+ percent,
91
+ total: max,
92
+ current: total
93
+ });
94
+ lastPercent = percent;
95
+ }
96
+ }
97
+ destroy();
98
+ progress?.({
99
+ percent: 1,
100
+ total,
101
+ current: total
102
+ });
103
+ return {
104
+ data: final.slice(0, total),
105
+ md5Encrypted: sparkEncrypted.end(),
106
+ md5: spark.end()
107
+ };
108
+ }
109
+ export async function decryptSecretstream(key, data, progress, abort) {
110
+ await setup();
111
+ const header = data.slice(0, sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES);
112
+ data = data.slice(sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES);
113
+ const {
114
+ decrypt: decryptt,
115
+ destroy
116
+ } = decrypt(header, key);
117
+ const chunkSize = CHUNK_SIZE + sodium.crypto_secretstream_xchacha20poly1305_ABYTES;
118
+ const max = Math.ceil(data.byteLength / chunkSize) * CHUNK_SIZE;
119
+ progress?.({
120
+ percent: 0,
121
+ total: max,
122
+ current: 0
123
+ });
124
+ const final = new Uint8Array(max);
125
+ let total = 0;
126
+ let lastPercent = total / max;
127
+ for (const chunk of chunks(data, chunkSize)) {
128
+ if (abort?.signal.aborted) {
129
+ throw new Error(`Decrypt aborted`);
130
+ }
131
+ const tmp = decryptt(chunk);
132
+ final.set(tmp.message, total);
133
+ total += tmp.message.byteLength;
134
+ const percent = total / max;
135
+ if (percent > lastPercent + 0.01) {
136
+ progress?.({
137
+ percent,
138
+ total: max,
139
+ current: total
140
+ });
141
+ lastPercent = percent;
142
+ }
143
+ }
144
+ destroy();
145
+ progress?.({
146
+ percent: 1,
147
+ total,
148
+ current: total
149
+ });
150
+ return final.slice(0, total);
151
+ }
152
+
153
+ // async function mainSecretstream(random: Uint8Array): Promise<void> {
154
+ // const key = secretstreamKeygen();
155
+ // console.time("secretstream_encrypt");
156
+ // const crypted = encryptSecretstream(key, random);
157
+ // console.timeEnd("secretstream_encrypt");
158
+ // console.time("secretstream_decrypt");
159
+ // const decrypted = decryptSecretstream(key, crypted);
160
+ // console.timeEnd("secretstream_decrypt");
161
+ // const first = to_hex(random).slice(0, 32);
162
+ // const final = to_hex(decrypted).slice(0, 32);
163
+ // console.log({
164
+ // first,
165
+ // final,
166
+ // equals: first === final
167
+ // });
168
+ // }
169
+ // async function mainSecretbox(random: Uint8Array): Promise<void> {
170
+ // const key = generateSecretBox();
171
+ // console.time("secretbox_encrypt");
172
+ // const crypted = encryptFile(random, key);
173
+ // console.timeEnd("secretbox_encrypt");
174
+ // console.time("secretbox_decrypt");
175
+ // const decrypted = decryptFile(crypted, key);
176
+ // console.timeEnd("secretbox_decrypt");
177
+ // const first = to_hex(random).slice(0, 32);
178
+ // const final = to_hex(decrypted).slice(0, 32);
179
+ // console.log({
180
+ // first,
181
+ // final,
182
+ // equals: first === final
183
+ // });
184
+ // }
185
+
186
+ // async function main(): Promise<void> {
187
+ // await ready;
188
+ // console.time("randombytes_buf");
189
+ // const random = randombytes_buf(1_000_000 * 1024);
190
+ // console.timeEnd("randombytes_buf");
191
+ // await Promise.all([mainSecretstream(random), mainSecretbox(random)]);
192
+ // }
193
+
194
+ // main();
195
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZXR1cCIsInNvZGl1bSIsIlNwYXJrTUQ1IiwiY2h1bmtzIiwiYXNzZXJ0IiwiYyIsIm1lc3NhZ2UiLCJFcnJvciIsInNlY3JldHN0cmVhbUtleWdlbiIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfa2V5Z2VuIiwiZW5jcnlwdCIsImtleSIsImRlc3Ryb3llZCIsInN0YXRlIiwiaGVhZGVyIiwiY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9pbml0X3B1c2giLCJ0YWciLCJwbGFpbnRleHQiLCJjcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X3B1c2giLCJkZXN0cm95IiwiZGVjcnlwdCIsImJ5dGVMZW5ndGgiLCJjcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0hFQURFUkJZVEVTIiwiY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9LRVlCWVRFUyIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfaW5pdF9wdWxsIiwiY2lwaGVydGV4dCIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfcHVsbCIsIkNIVU5LX1NJWkUiLCJlbmNyeXB0U2VjcmV0c3RyZWFtIiwiZGF0YSIsInByb2dyZXNzIiwiYWJvcnQiLCJjcnlwdCIsImNyeXB0ZWRDaHVuayIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfQUJZVEVTIiwibWF4IiwiTWF0aCIsImNlaWwiLCJwZXJjZW50IiwidG90YWwiLCJjdXJyZW50IiwiZmluYWwiLCJVaW50OEFycmF5Iiwic3BhcmtFbmNyeXB0ZWQiLCJBcnJheUJ1ZmZlciIsInNwYXJrIiwic2V0IiwiYXBwZW5kIiwibGFzdFBlcmNlbnQiLCJjaHVuayIsInNpZ25hbCIsImFib3J0ZWQiLCJsZW5ndGgiLCJjcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X1RBR19GSU5BTCIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfVEFHX01FU1NBR0UiLCJjcnlwdGVkIiwic2xpY2UiLCJtZDVFbmNyeXB0ZWQiLCJlbmQiLCJtZDUiLCJkZWNyeXB0U2VjcmV0c3RyZWFtIiwiZGVjcnlwdHQiLCJjaHVua1NpemUiLCJ0bXAiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY3J5cHRvL2ZpbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBNZXNzYWdlVGFnIH0gZnJvbSBcImxpYnNvZGl1bS13cmFwcGVyc1wiO1xuaW1wb3J0IHsgc2V0dXAsIHNvZGl1bSB9IGZyb20gXCIuLi9zb2RpdW0uanNcIjtcbmltcG9ydCBTcGFya01ENSBmcm9tIFwic3BhcmstbWQ1XCI7XG5pbXBvcnQgeyBjaHVua3MgfSBmcm9tIFwiLi4vdXRpbHMvdXRpbHMuanNcIjtcblxuZXhwb3J0IHR5cGUgRW5jcnlwdGVkRmlsZSA9IHtcbiAgZGF0YTogVWludDhBcnJheTtcbiAgbWQ1OiBzdHJpbmc7XG4gIG1kNUVuY3J5cHRlZDogc3RyaW5nO1xufTtcblxuZnVuY3Rpb24gYXNzZXJ0KGM6IGJvb2xlYW4sIG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoIWMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIH1cbn1cblxudHlwZSBFbmNyeXB0Rm4gPSAodGFnOiBudW1iZXIsIHBsYWludGV4dDogVWludDhBcnJheSkgPT4gVWludDhBcnJheTtcblxudHlwZSBEZWNyeXB0Rm4gPSAoY2lwaGVydGV4dDogVWludDhBcnJheSkgPT4gTWVzc2FnZVRhZztcblxuZXhwb3J0IGZ1bmN0aW9uIHNlY3JldHN0cmVhbUtleWdlbigpOiBVaW50OEFycmF5IHtcbiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X2tleWdlbigpO1xufVxuXG5mdW5jdGlvbiBlbmNyeXB0KGtleTogVWludDhBcnJheSk6IHtcbiAgZGVzdHJveTogKCkgPT4gdm9pZDtcbiAgZW5jcnlwdDogRW5jcnlwdEZuO1xuICBoZWFkZXI6IFVpbnQ4QXJyYXk7XG59IHtcbiAgbGV0IGRlc3Ryb3llZCA9IGZhbHNlO1xuICBjb25zdCB7IHN0YXRlLCBoZWFkZXIgfSA9XG4gICAgc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfaW5pdF9wdXNoKGtleSk7XG5cbiAgY29uc3QgZW5jcnlwdDogRW5jcnlwdEZuID0gKHRhZywgcGxhaW50ZXh0KSA9PiB7XG4gICAgYXNzZXJ0KGRlc3Ryb3llZCA9PT0gZmFsc2UsIFwic3RhdGUgYWxyZWFkeSBkZXN0cm95ZWRcIik7XG5cbiAgICByZXR1cm4gc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfcHVzaChcbiAgICAgIHN0YXRlLFxuICAgICAgcGxhaW50ZXh0LFxuICAgICAgbnVsbCxcbiAgICAgIHRhZ1xuICAgICk7XG4gIH07XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpOiB2b2lkIHtcbiAgICBhc3NlcnQoZGVzdHJveWVkID09PSBmYWxzZSwgXCJzdGF0ZSBhbHJlYWR5IGRlc3Ryb3llZFwiKTtcbiAgICBkZXN0cm95ZWQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlbmNyeXB0LFxuICAgIGRlc3Ryb3ksXG4gICAgaGVhZGVyXG4gIH07XG59XG5cbmZ1bmN0aW9uIGRlY3J5cHQoXG4gIGhlYWRlcjogVWludDhBcnJheSxcbiAga2V5OiBVaW50OEFycmF5XG4pOiB7XG4gIGRlc3Ryb3k6ICgpID0+IHZvaWQ7XG4gIGRlY3J5cHQ6IERlY3J5cHRGbjtcbn0ge1xuICBhc3NlcnQoXG4gICAgaGVhZGVyLmJ5dGVMZW5ndGggPj1cbiAgICAgIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0hFQURFUkJZVEVTLFxuICAgIGBoZWFkZXIgbXVzdCBiZSBhdCBsZWFzdCBIRUFERVJCWVRFUyAoJHtzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9IRUFERVJCWVRFU30pIGxvbmdgXG4gICk7XG4gIGFzc2VydChcbiAgICBrZXkuYnl0ZUxlbmd0aCA+PSBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9LRVlCWVRFUyxcbiAgICBga2V5IG11c3QgYmUgYXQgbGVhc3QgS0VZQllURVMgKCR7c29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfS0VZQllURVN9KSBsb25nYFxuICApO1xuXG4gIGxldCBkZXN0cm95ZWQgPSBmYWxzZTtcbiAgY29uc3Qgc3RhdGUgPSBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9pbml0X3B1bGwoXG4gICAgaGVhZGVyLFxuICAgIGtleVxuICApO1xuXG4gIGNvbnN0IGRlY3J5cHQ6IERlY3J5cHRGbiA9IGNpcGhlcnRleHQgPT4ge1xuICAgIGFzc2VydChkZXN0cm95ZWQgPT09IGZhbHNlLCBcInN0YXRlIGFscmVhZHkgZGVzdHJveWVkXCIpO1xuXG4gICAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X3B1bGwoc3RhdGUsIGNpcGhlcnRleHQpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgYXNzZXJ0KGRlc3Ryb3llZCA9PT0gZmFsc2UsIFwic3RhdGUgYWxyZWFkeSBkZXN0cm95ZWRcIik7XG4gICAgZGVzdHJveWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZGVjcnlwdCxcbiAgICBkZXN0cm95XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBDSFVOS19TSVpFID0gODE5MjtcblxuZXhwb3J0IHR5cGUgUHJvZ3Jlc3MgPSB7XG4gIHBlcmNlbnQ6IG51bWJlcjtcbiAgdG90YWw6IG51bWJlcjtcbiAgY3VycmVudDogbnVtYmVyO1xufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuY3J5cHRTZWNyZXRzdHJlYW0oXG4gIGtleTogVWludDhBcnJheSxcbiAgZGF0YTogVWludDhBcnJheSxcbiAgcHJvZ3Jlc3M/OiAocHJvZ3Jlc3M6IFByb2dyZXNzKSA9PiBQcm9taXNlPHZvaWQ+LFxuICBhYm9ydD86IEFib3J0Q29udHJvbGxlclxuKTogUHJvbWlzZTxFbmNyeXB0ZWRGaWxlPiB7XG4gIGF3YWl0IHNldHVwKCk7XG4gIGNvbnN0IHsgZW5jcnlwdDogY3J5cHQsIGRlc3Ryb3ksIGhlYWRlciB9ID0gZW5jcnlwdChrZXkpO1xuICBjb25zdCBjcnlwdGVkQ2h1bmsgPVxuICAgIENIVU5LX1NJWkUgKyBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9BQllURVM7XG4gIGNvbnN0IG1heCA9XG4gICAgTWF0aC5jZWlsKGRhdGEuYnl0ZUxlbmd0aCAvIENIVU5LX1NJWkUpICogY3J5cHRlZENodW5rICsgaGVhZGVyLmJ5dGVMZW5ndGg7XG5cbiAgcHJvZ3Jlc3M/Lih7XG4gICAgcGVyY2VudDogMCxcbiAgICB0b3RhbDogbWF4LFxuICAgIGN1cnJlbnQ6IDBcbiAgfSk7XG4gIGNvbnN0IGZpbmFsID0gbmV3IFVpbnQ4QXJyYXkobWF4KTtcbiAgY29uc3Qgc3BhcmtFbmNyeXB0ZWQgPSBuZXcgU3BhcmtNRDUuQXJyYXlCdWZmZXIoKTtcbiAgY29uc3Qgc3BhcmsgPSBuZXcgU3BhcmtNRDUuQXJyYXlCdWZmZXIoKTtcblxuICBmaW5hbC5zZXQoaGVhZGVyKTtcbiAgc3BhcmtFbmNyeXB0ZWQuYXBwZW5kKGhlYWRlcik7XG4gIGxldCB0b3RhbCA9IGhlYWRlci5ieXRlTGVuZ3RoO1xuICBwcm9ncmVzcz8uKHtcbiAgICBwZXJjZW50OiB0b3RhbCAvIG1heCxcbiAgICB0b3RhbDogbWF4LFxuICAgIGN1cnJlbnQ6IHRvdGFsXG4gIH0pO1xuICBsZXQgbGFzdFBlcmNlbnQgPSB0b3RhbCAvIG1heDtcblxuICBmb3IgKGNvbnN0IGNodW5rIG9mIGNodW5rcyhkYXRhLCBDSFVOS19TSVpFKSkge1xuICAgIGlmIChhYm9ydD8uc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRW5jcnlwdCBhYm9ydGVkYCk7XG4gICAgfVxuICAgIHNwYXJrLmFwcGVuZChjaHVuayk7XG4gICAgY29uc3QgdGFnID1cbiAgICAgIGNodW5rLmxlbmd0aCA8IENIVU5LX1NJWkVcbiAgICAgICAgPyBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9UQUdfRklOQUxcbiAgICAgICAgOiBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9UQUdfTUVTU0FHRTtcbiAgICBjb25zdCBjcnlwdGVkID0gY3J5cHQodGFnLCBjaHVuayk7XG4gICAgc3BhcmtFbmNyeXB0ZWQuYXBwZW5kKGNyeXB0ZWQpO1xuICAgIGZpbmFsLnNldChjcnlwdGVkLCB0b3RhbCk7XG4gICAgdG90YWwgKz0gY3J5cHRlZC5ieXRlTGVuZ3RoO1xuICAgIGNvbnN0IHBlcmNlbnQgPSB0b3RhbCAvIG1heDtcbiAgICBpZiAocGVyY2VudCA+IGxhc3RQZXJjZW50ICsgMC4wMSkge1xuICAgICAgcHJvZ3Jlc3M/Lih7XG4gICAgICAgIHBlcmNlbnQsXG4gICAgICAgIHRvdGFsOiBtYXgsXG4gICAgICAgIGN1cnJlbnQ6IHRvdGFsXG4gICAgICB9KTtcbiAgICAgIGxhc3RQZXJjZW50ID0gcGVyY2VudDtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95KCk7XG4gIHByb2dyZXNzPy4oe1xuICAgIHBlcmNlbnQ6IDEsXG4gICAgdG90YWwsXG4gICAgY3VycmVudDogdG90YWxcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgZGF0YTogZmluYWwuc2xpY2UoMCwgdG90YWwpLFxuICAgIG1kNUVuY3J5cHRlZDogc3BhcmtFbmNyeXB0ZWQuZW5kKCksXG4gICAgbWQ1OiBzcGFyay5lbmQoKVxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVjcnlwdFNlY3JldHN0cmVhbShcbiAga2V5OiBVaW50OEFycmF5LFxuICBkYXRhOiBVaW50OEFycmF5LFxuICBwcm9ncmVzcz86IChwcm9ncmVzczogUHJvZ3Jlc3MpID0+IFByb21pc2U8dm9pZD4sXG4gIGFib3J0PzogQWJvcnRDb250cm9sbGVyXG4pOiBQcm9taXNlPFVpbnQ4QXJyYXk+IHtcbiAgYXdhaXQgc2V0dXAoKTtcbiAgY29uc3QgaGVhZGVyID0gZGF0YS5zbGljZShcbiAgICAwLFxuICAgIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0hFQURFUkJZVEVTXG4gICk7XG4gIGRhdGEgPSBkYXRhLnNsaWNlKHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0hFQURFUkJZVEVTKTtcblxuICBjb25zdCB7IGRlY3J5cHQ6IGRlY3J5cHR0LCBkZXN0cm95IH0gPSBkZWNyeXB0KGhlYWRlciwga2V5KTtcbiAgY29uc3QgY2h1bmtTaXplID1cbiAgICBDSFVOS19TSVpFICsgc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfQUJZVEVTO1xuICBjb25zdCBtYXggPSBNYXRoLmNlaWwoZGF0YS5ieXRlTGVuZ3RoIC8gY2h1bmtTaXplKSAqIENIVU5LX1NJWkU7XG5cbiAgcHJvZ3Jlc3M/Lih7XG4gICAgcGVyY2VudDogMCxcbiAgICB0b3RhbDogbWF4LFxuICAgIGN1cnJlbnQ6IDBcbiAgfSk7XG4gIGNvbnN0IGZpbmFsID0gbmV3IFVpbnQ4QXJyYXkobWF4KTtcbiAgbGV0IHRvdGFsID0gMDtcblxuICBsZXQgbGFzdFBlcmNlbnQgPSB0b3RhbCAvIG1heDtcblxuICBmb3IgKGNvbnN0IGNodW5rIG9mIGNodW5rcyhkYXRhLCBjaHVua1NpemUpKSB7XG4gICAgaWYgKGFib3J0Py5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEZWNyeXB0IGFib3J0ZWRgKTtcbiAgICB9XG4gICAgY29uc3QgdG1wID0gZGVjcnlwdHQoY2h1bmspO1xuICAgIGZpbmFsLnNldCh0bXAubWVzc2FnZSwgdG90YWwpO1xuICAgIHRvdGFsICs9IHRtcC5tZXNzYWdlLmJ5dGVMZW5ndGg7XG4gICAgY29uc3QgcGVyY2VudCA9IHRvdGFsIC8gbWF4O1xuICAgIGlmIChwZXJjZW50ID4gbGFzdFBlcmNlbnQgKyAwLjAxKSB7XG4gICAgICBwcm9ncmVzcz8uKHtcbiAgICAgICAgcGVyY2VudCxcbiAgICAgICAgdG90YWw6IG1heCxcbiAgICAgICAgY3VycmVudDogdG90YWxcbiAgICAgIH0pO1xuICAgICAgbGFzdFBlcmNlbnQgPSBwZXJjZW50O1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3koKTtcbiAgcHJvZ3Jlc3M/Lih7XG4gICAgcGVyY2VudDogMSxcbiAgICB0b3RhbCxcbiAgICBjdXJyZW50OiB0b3RhbFxuICB9KTtcbiAgcmV0dXJuIGZpbmFsLnNsaWNlKDAsIHRvdGFsKTtcbn1cblxuLy8gYXN5bmMgZnVuY3Rpb24gbWFpblNlY3JldHN0cmVhbShyYW5kb206IFVpbnQ4QXJyYXkpOiBQcm9taXNlPHZvaWQ+IHtcbi8vICAgY29uc3Qga2V5ID0gc2VjcmV0c3RyZWFtS2V5Z2VuKCk7XG4vLyAgIGNvbnNvbGUudGltZShcInNlY3JldHN0cmVhbV9lbmNyeXB0XCIpO1xuLy8gICBjb25zdCBjcnlwdGVkID0gZW5jcnlwdFNlY3JldHN0cmVhbShrZXksIHJhbmRvbSk7XG4vLyAgIGNvbnNvbGUudGltZUVuZChcInNlY3JldHN0cmVhbV9lbmNyeXB0XCIpO1xuLy8gICBjb25zb2xlLnRpbWUoXCJzZWNyZXRzdHJlYW1fZGVjcnlwdFwiKTtcbi8vICAgY29uc3QgZGVjcnlwdGVkID0gZGVjcnlwdFNlY3JldHN0cmVhbShrZXksIGNyeXB0ZWQpO1xuLy8gICBjb25zb2xlLnRpbWVFbmQoXCJzZWNyZXRzdHJlYW1fZGVjcnlwdFwiKTtcbi8vICAgY29uc3QgZmlyc3QgPSB0b19oZXgocmFuZG9tKS5zbGljZSgwLCAzMik7XG4vLyAgIGNvbnN0IGZpbmFsID0gdG9faGV4KGRlY3J5cHRlZCkuc2xpY2UoMCwgMzIpO1xuLy8gICBjb25zb2xlLmxvZyh7XG4vLyAgICAgZmlyc3QsXG4vLyAgICAgZmluYWwsXG4vLyAgICAgZXF1YWxzOiBmaXJzdCA9PT0gZmluYWxcbi8vICAgfSk7XG4vLyB9XG4vLyBhc3luYyBmdW5jdGlvbiBtYWluU2VjcmV0Ym94KHJhbmRvbTogVWludDhBcnJheSk6IFByb21pc2U8dm9pZD4ge1xuLy8gICBjb25zdCBrZXkgPSBnZW5lcmF0ZVNlY3JldEJveCgpO1xuLy8gICBjb25zb2xlLnRpbWUoXCJzZWNyZXRib3hfZW5jcnlwdFwiKTtcbi8vICAgY29uc3QgY3J5cHRlZCA9IGVuY3J5cHRGaWxlKHJhbmRvbSwga2V5KTtcbi8vICAgY29uc29sZS50aW1lRW5kKFwic2VjcmV0Ym94X2VuY3J5cHRcIik7XG4vLyAgIGNvbnNvbGUudGltZShcInNlY3JldGJveF9kZWNyeXB0XCIpO1xuLy8gICBjb25zdCBkZWNyeXB0ZWQgPSBkZWNyeXB0RmlsZShjcnlwdGVkLCBrZXkpO1xuLy8gICBjb25zb2xlLnRpbWVFbmQoXCJzZWNyZXRib3hfZGVjcnlwdFwiKTtcbi8vICAgY29uc3QgZmlyc3QgPSB0b19oZXgocmFuZG9tKS5zbGljZSgwLCAzMik7XG4vLyAgIGNvbnN0IGZpbmFsID0gdG9faGV4KGRlY3J5cHRlZCkuc2xpY2UoMCwgMzIpO1xuLy8gICBjb25zb2xlLmxvZyh7XG4vLyAgICAgZmlyc3QsXG4vLyAgICAgZmluYWwsXG4vLyAgICAgZXF1YWxzOiBmaXJzdCA9PT0gZmluYWxcbi8vICAgfSk7XG4vLyB9XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIG1haW4oKTogUHJvbWlzZTx2b2lkPiB7XG4vLyAgIGF3YWl0IHJlYWR5O1xuLy8gICBjb25zb2xlLnRpbWUoXCJyYW5kb21ieXRlc19idWZcIik7XG4vLyAgIGNvbnN0IHJhbmRvbSA9IHJhbmRvbWJ5dGVzX2J1ZigxXzAwMF8wMDAgKiAxMDI0KTtcbi8vICAgY29uc29sZS50aW1lRW5kKFwicmFuZG9tYnl0ZXNfYnVmXCIpO1xuLy8gICBhd2FpdCBQcm9taXNlLmFsbChbbWFpblNlY3JldHN0cmVhbShyYW5kb20pLCBtYWluU2VjcmV0Ym94KHJhbmRvbSldKTtcbi8vIH1cblxuLy8gbWFpbigpO1xuIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUFTQSxLQUFLLEVBQUVDLE1BQU0sUUFBUSxjQUFjO0FBQzVDLE9BQU9DLFFBQVEsTUFBTSxXQUFXO0FBQ2hDLFNBQVNDLE1BQU0sUUFBUSxtQkFBbUI7QUFRMUMsU0FBU0MsTUFBTSxDQUFDQyxDQUFVLEVBQUVDLE9BQWUsRUFBUTtFQUNqRCxJQUFJLENBQUNELENBQUMsRUFBRTtJQUNOLE1BQU0sSUFBSUUsS0FBSyxDQUFDRCxPQUFPLENBQUM7RUFDMUI7QUFDRjtBQU1BLE9BQU8sU0FBU0Usa0JBQWtCLEdBQWU7RUFDL0MsT0FBT1AsTUFBTSxDQUFDUSw0Q0FBNEMsRUFBRTtBQUM5RDtBQUVBLFNBQVNDLE9BQU8sQ0FBQ0MsR0FBZSxFQUk5QjtFQUNBLElBQUlDLFNBQVMsR0FBRyxLQUFLO0VBQ3JCLE1BQU07SUFBRUMsS0FBSztJQUFFQztFQUFPLENBQUMsR0FDckJiLE1BQU0sQ0FBQ2MsK0NBQStDLENBQUNKLEdBQUcsQ0FBQztFQUU3RCxNQUFNRCxPQUFrQixHQUFHLENBQUNNLEdBQUcsRUFBRUMsU0FBUyxLQUFLO0lBQzdDYixNQUFNLENBQUNRLFNBQVMsS0FBSyxLQUFLLEVBQUUseUJBQXlCLENBQUM7SUFFdEQsT0FBT1gsTUFBTSxDQUFDaUIsMENBQTBDLENBQ3RETCxLQUFLLEVBQ0xJLFNBQVMsRUFDVCxJQUFJLEVBQ0pELEdBQUcsQ0FDSjtFQUNILENBQUM7RUFFRCxTQUFTRyxPQUFPLEdBQVM7SUFDdkJmLE1BQU0sQ0FBQ1EsU0FBUyxLQUFLLEtBQUssRUFBRSx5QkFBeUIsQ0FBQztJQUN0REEsU0FBUyxHQUFHLElBQUk7RUFD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
File without changes
@@ -0,0 +1,45 @@
1
+ import { concatenate } from "../utils/utils.js";
2
+ import { sodium } from "../sodium.js";
3
+ export function encryptCryptoBox(data, publicKeyBob, privateKeyAlice) {
4
+ const nonce = sodium.randombytes_buf(sodium.crypto_box_NONCEBYTES);
5
+ const crypt = sodium.crypto_box_easy(data, nonce, sodium.from_hex(publicKeyBob), sodium.from_hex(privateKeyAlice));
6
+ return concatenate(nonce, crypt);
7
+ }
8
+ export function generateCryptoBoxKeyPair() {
9
+ return sodium.crypto_box_keypair("hex");
10
+ }
11
+ export function decryptCryptoBox(data, publicKeyAlice, privateKeyBob) {
12
+ if (data.length < sodium.crypto_box_NONCEBYTES + sodium.crypto_box_MACBYTES) {
13
+ throw "data too short";
14
+ }
15
+ const nonce = data.slice(0, sodium.crypto_box_NONCEBYTES);
16
+ const cipher = data.slice(sodium.crypto_box_NONCEBYTES);
17
+ return sodium.crypto_box_open_easy(cipher, nonce, sodium.from_hex(publicKeyAlice), sodium.from_hex(privateKeyBob));
18
+ }
19
+ export function generateSecretBoxKey() {
20
+ return sodium.randombytes_buf(sodium.crypto_secretbox_KEYBYTES, "hex");
21
+ }
22
+ export function encryptSecretBox(data, key) {
23
+ const nonce = sodium.randombytes_buf(sodium.crypto_secretbox_NONCEBYTES);
24
+ const crypt = sodium.crypto_secretbox_easy(data, nonce, sodium.from_hex(key));
25
+ return concatenate(nonce, crypt);
26
+ }
27
+ export function decryptSecretBox(data, key) {
28
+ if (data.length < sodium.crypto_secretbox_NONCEBYTES + sodium.crypto_secretbox_MACBYTES) {
29
+ throw "data too short";
30
+ }
31
+ const nonce = data.slice(0, sodium.crypto_secretbox_NONCEBYTES);
32
+ const cipher = data.slice(sodium.crypto_secretbox_NONCEBYTES);
33
+ return sodium.crypto_secretbox_open_easy(cipher, nonce, sodium.from_hex(key));
34
+ }
35
+ export function encryptAnonymous(data, receiverPublicKey) {
36
+ return sodium.crypto_box_seal(data, sodium.from_hex(receiverPublicKey));
37
+ }
38
+ export function decryptAnonymous(data, _ref) {
39
+ let {
40
+ privateKey,
41
+ publicKey
42
+ } = _ref;
43
+ return sodium.crypto_box_seal_open(data, sodium.from_hex(publicKey), sodium.from_hex(privateKey));
44
+ }
45
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb25jYXRlbmF0ZSIsInNvZGl1bSIsImVuY3J5cHRDcnlwdG9Cb3giLCJkYXRhIiwicHVibGljS2V5Qm9iIiwicHJpdmF0ZUtleUFsaWNlIiwibm9uY2UiLCJyYW5kb21ieXRlc19idWYiLCJjcnlwdG9fYm94X05PTkNFQllURVMiLCJjcnlwdCIsImNyeXB0b19ib3hfZWFzeSIsImZyb21faGV4IiwiZ2VuZXJhdGVDcnlwdG9Cb3hLZXlQYWlyIiwiY3J5cHRvX2JveF9rZXlwYWlyIiwiZGVjcnlwdENyeXB0b0JveCIsInB1YmxpY0tleUFsaWNlIiwicHJpdmF0ZUtleUJvYiIsImxlbmd0aCIsImNyeXB0b19ib3hfTUFDQllURVMiLCJzbGljZSIsImNpcGhlciIsImNyeXB0b19ib3hfb3Blbl9lYXN5IiwiZ2VuZXJhdGVTZWNyZXRCb3hLZXkiLCJjcnlwdG9fc2VjcmV0Ym94X0tFWUJZVEVTIiwiZW5jcnlwdFNlY3JldEJveCIsImtleSIsImNyeXB0b19zZWNyZXRib3hfTk9OQ0VCWVRFUyIsImNyeXB0b19zZWNyZXRib3hfZWFzeSIsImRlY3J5cHRTZWNyZXRCb3giLCJjcnlwdG9fc2VjcmV0Ym94X01BQ0JZVEVTIiwiY3J5cHRvX3NlY3JldGJveF9vcGVuX2Vhc3kiLCJlbmNyeXB0QW5vbnltb3VzIiwicmVjZWl2ZXJQdWJsaWNLZXkiLCJjcnlwdG9fYm94X3NlYWwiLCJkZWNyeXB0QW5vbnltb3VzIiwicHJpdmF0ZUtleSIsInB1YmxpY0tleSIsImNyeXB0b19ib3hfc2VhbF9vcGVuIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NyeXB0by9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25jYXRlbmF0ZSB9IGZyb20gXCIuLi91dGlscy91dGlscy5qc1wiO1xuaW1wb3J0IHsgc29kaXVtIH0gZnJvbSBcIi4uL3NvZGl1bS5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleVBhaXIge1xuICBwdWJsaWNLZXk6IHN0cmluZztcbiAgcHJpdmF0ZUtleTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jcnlwdENyeXB0b0JveChcbiAgZGF0YTogVWludDhBcnJheSxcbiAgcHVibGljS2V5Qm9iOiBzdHJpbmcsXG4gIHByaXZhdGVLZXlBbGljZTogc3RyaW5nXG4pOiBVaW50OEFycmF5IHtcbiAgY29uc3Qgbm9uY2UgPSBzb2RpdW0ucmFuZG9tYnl0ZXNfYnVmKHNvZGl1bS5jcnlwdG9fYm94X05PTkNFQllURVMpO1xuICBjb25zdCBjcnlwdCA9IHNvZGl1bS5jcnlwdG9fYm94X2Vhc3koXG4gICAgZGF0YSxcbiAgICBub25jZSxcbiAgICBzb2RpdW0uZnJvbV9oZXgocHVibGljS2V5Qm9iKSxcbiAgICBzb2RpdW0uZnJvbV9oZXgocHJpdmF0ZUtleUFsaWNlKVxuICApO1xuICByZXR1cm4gY29uY2F0ZW5hdGUobm9uY2UsIGNyeXB0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQ3J5cHRvQm94S2V5UGFpcigpOiBLZXlQYWlyIHtcbiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fYm94X2tleXBhaXIoXCJoZXhcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNyeXB0Q3J5cHRvQm94KFxuICBkYXRhOiBVaW50OEFycmF5LFxuICBwdWJsaWNLZXlBbGljZTogc3RyaW5nLFxuICBwcml2YXRlS2V5Qm9iOiBzdHJpbmdcbik6IFVpbnQ4QXJyYXkge1xuICBpZiAoZGF0YS5sZW5ndGggPCBzb2RpdW0uY3J5cHRvX2JveF9OT05DRUJZVEVTICsgc29kaXVtLmNyeXB0b19ib3hfTUFDQllURVMpIHtcbiAgICB0aHJvdyBcImRhdGEgdG9vIHNob3J0XCI7XG4gIH1cbiAgY29uc3Qgbm9uY2UgPSBkYXRhLnNsaWNlKDAsIHNvZGl1bS5jcnlwdG9fYm94X05PTkNFQllURVMpO1xuICBjb25zdCBjaXBoZXIgPSBkYXRhLnNsaWNlKHNvZGl1bS5jcnlwdG9fYm94X05PTkNFQllURVMpO1xuICByZXR1cm4gc29kaXVtLmNyeXB0b19ib3hfb3Blbl9lYXN5KFxuICAgIGNpcGhlcixcbiAgICBub25jZSxcbiAgICBzb2RpdW0uZnJvbV9oZXgocHVibGljS2V5QWxpY2UpLFxuICAgIHNvZGl1bS5mcm9tX2hleChwcml2YXRlS2V5Qm9iKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVTZWNyZXRCb3hLZXkoKTogc3RyaW5nIHtcbiAgcmV0dXJuIHNvZGl1bS5yYW5kb21ieXRlc19idWYoc29kaXVtLmNyeXB0b19zZWNyZXRib3hfS0VZQllURVMsIFwiaGV4XCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jcnlwdFNlY3JldEJveChkYXRhOiBVaW50OEFycmF5LCBrZXk6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICBjb25zdCBub25jZSA9IHNvZGl1bS5yYW5kb21ieXRlc19idWYoc29kaXVtLmNyeXB0b19zZWNyZXRib3hfTk9OQ0VCWVRFUyk7XG4gIGNvbnN0IGNyeXB0ID0gc29kaXVtLmNyeXB0b19zZWNyZXRib3hfZWFzeShkYXRhLCBub25jZSwgc29kaXVtLmZyb21faGV4KGtleSkpO1xuICByZXR1cm4gY29uY2F0ZW5hdGUobm9uY2UsIGNyeXB0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY3J5cHRTZWNyZXRCb3goZGF0YTogVWludDhBcnJheSwga2V5OiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgaWYgKFxuICAgIGRhdGEubGVuZ3RoIDxcbiAgICBzb2RpdW0uY3J5cHRvX3NlY3JldGJveF9OT05DRUJZVEVTICsgc29kaXVtLmNyeXB0b19zZWNyZXRib3hfTUFDQllURVNcbiAgKSB7XG4gICAgdGhyb3cgXCJkYXRhIHRvbyBzaG9ydFwiO1xuICB9XG4gIGNvbnN0IG5vbmNlID0gZGF0YS5zbGljZSgwLCBzb2RpdW0uY3J5cHRvX3NlY3JldGJveF9OT05DRUJZVEVTKTtcbiAgY29uc3QgY2lwaGVyID0gZGF0YS5zbGljZShzb2RpdW0uY3J5cHRvX3NlY3JldGJveF9OT05DRUJZVEVTKTtcbiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fc2VjcmV0Ym94X29wZW5fZWFzeShjaXBoZXIsIG5vbmNlLCBzb2RpdW0uZnJvbV9oZXgoa2V5KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNyeXB0QW5vbnltb3VzKFxuICBkYXRhOiBVaW50OEFycmF5LFxuICByZWNlaXZlclB1YmxpY0tleTogc3RyaW5nXG4pOiBVaW50OEFycmF5IHtcbiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fYm94X3NlYWwoZGF0YSwgc29kaXVtLmZyb21faGV4KHJlY2VpdmVyUHVibGljS2V5KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNyeXB0QW5vbnltb3VzKFxuICBkYXRhOiBVaW50OEFycmF5LFxuICB7IHByaXZhdGVLZXksIHB1YmxpY0tleSB9OiBLZXlQYWlyXG4pOiBVaW50OEFycmF5IHtcbiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fYm94X3NlYWxfb3BlbihcbiAgICBkYXRhLFxuICAgIHNvZGl1bS5mcm9tX2hleChwdWJsaWNLZXkpLFxuICAgIHNvZGl1bS5mcm9tX2hleChwcml2YXRlS2V5KVxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxXQUFXLFFBQVEsbUJBQW1CO0FBQy9DLFNBQVNDLE1BQU0sUUFBUSxjQUFjO0FBT3JDLE9BQU8sU0FBU0MsZ0JBQWdCLENBQzlCQyxJQUFnQixFQUNoQkMsWUFBb0IsRUFDcEJDLGVBQXVCLEVBQ1g7RUFDWixNQUFNQyxLQUFLLEdBQUdMLE1BQU0sQ0FBQ00sZUFBZSxDQUFDTixNQUFNLENBQUNPLHFCQUFxQixDQUFDO0VBQ2xFLE1BQU1DLEtBQUssR0FBR1IsTUFBTSxDQUFDUyxlQUFlLENBQ2xDUCxJQUFJLEVBQ0pHLEtBQUssRUFDTEwsTUFBTSxDQUFDVSxRQUFRLENBQUNQLFlBQVksQ0FBQyxFQUM3QkgsTUFBTSxDQUFDVSxRQUFRLENBQUNOLGVBQWUsQ0FBQyxDQUNqQztFQUNELE9BQU9MLFdBQVcsQ0FBQ00sS0FBSyxFQUFFRyxLQUFLLENBQUM7QUFD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
@@ -0,0 +1,33 @@
1
+ export type ErrorType = "ErrorUpgradePlan" | "ErrorNotFound" | "ErrorNotExist" | "ErrorAccessDenied" | "ErrorLangNotExist" | "ErrorLimit" | "ErrorStripe" | "ErrorBasic";
2
+ export interface ErrorBase {
3
+ message: string;
4
+ __typename: ErrorType;
5
+ }
6
+ export interface ErrorUpgradePlan extends ErrorBase {
7
+ __typename: "ErrorUpgradePlan";
8
+ }
9
+ export interface ErrorNotFound extends ErrorBase {
10
+ __typename: "ErrorNotFound";
11
+ field?: string | undefined;
12
+ }
13
+ export interface ErrorNotExist extends ErrorBase {
14
+ __typename: "ErrorNotExist";
15
+ field?: string | undefined;
16
+ }
17
+ export interface ErrorAccessDenied extends ErrorBase {
18
+ __typename: "ErrorAccessDenied";
19
+ }
20
+ export interface ErrorLangNotExist extends ErrorBase {
21
+ __typename: "ErrorLangNotExist";
22
+ }
23
+ export interface ErrorLimit extends ErrorBase {
24
+ __typename: "ErrorLimit";
25
+ field?: string | undefined;
26
+ }
27
+ export interface ErrorBasic extends ErrorBase {
28
+ __typename: "ErrorBasic";
29
+ }
30
+ export interface ErrorStripe extends ErrorBase {
31
+ __typename: "ErrorStripe";
32
+ }
33
+ export type SecrecyError = ErrorUpgradePlan | ErrorNotFound | ErrorNotExist | ErrorAccessDenied | ErrorLangNotExist | ErrorLimit | ErrorStripe | ErrorBasic;
package/dist/error.js ADDED
@@ -0,0 +1,3 @@
1
+ export {};
2
+ export {};
3
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEVycm9yVHlwZSA9XG4gIHwgXCJFcnJvclVwZ3JhZGVQbGFuXCJcbiAgfCBcIkVycm9yTm90Rm91bmRcIlxuICB8IFwiRXJyb3JOb3RFeGlzdFwiXG4gIHwgXCJFcnJvckFjY2Vzc0RlbmllZFwiXG4gIHwgXCJFcnJvckxhbmdOb3RFeGlzdFwiXG4gIHwgXCJFcnJvckxpbWl0XCJcbiAgfCBcIkVycm9yU3RyaXBlXCJcbiAgfCBcIkVycm9yQmFzaWNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFcnJvckJhc2Uge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIF9fdHlwZW5hbWU6IEVycm9yVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFcnJvclVwZ3JhZGVQbGFuIGV4dGVuZHMgRXJyb3JCYXNlIHtcbiAgX190eXBlbmFtZTogXCJFcnJvclVwZ3JhZGVQbGFuXCI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JOb3RGb3VuZCBleHRlbmRzIEVycm9yQmFzZSB7XG4gIF9fdHlwZW5hbWU6IFwiRXJyb3JOb3RGb3VuZFwiO1xuICBmaWVsZD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFcnJvck5vdEV4aXN0IGV4dGVuZHMgRXJyb3JCYXNlIHtcbiAgX190eXBlbmFtZTogXCJFcnJvck5vdEV4aXN0XCI7XG4gIGZpZWxkPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yQWNjZXNzRGVuaWVkIGV4dGVuZHMgRXJyb3JCYXNlIHtcbiAgX190eXBlbmFtZTogXCJFcnJvckFjY2Vzc0RlbmllZFwiO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yTGFuZ05vdEV4aXN0IGV4dGVuZHMgRXJyb3JCYXNlIHtcbiAgX190eXBlbmFtZTogXCJFcnJvckxhbmdOb3RFeGlzdFwiO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yTGltaXQgZXh0ZW5kcyBFcnJvckJhc2Uge1xuICBfX3R5cGVuYW1lOiBcIkVycm9yTGltaXRcIjtcbiAgZmllbGQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JCYXNpYyBleHRlbmRzIEVycm9yQmFzZSB7XG4gIF9fdHlwZW5hbWU6IFwiRXJyb3JCYXNpY1wiO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yU3RyaXBlIGV4dGVuZHMgRXJyb3JCYXNlIHtcbiAgX190eXBlbmFtZTogXCJFcnJvclN0cmlwZVwiO1xufVxuXG5leHBvcnQgdHlwZSBTZWNyZWN5RXJyb3IgPVxuICB8IEVycm9yVXBncmFkZVBsYW5cbiAgfCBFcnJvck5vdEZvdW5kXG4gIHwgRXJyb3JOb3RFeGlzdFxuICB8IEVycm9yQWNjZXNzRGVuaWVkXG4gIHwgRXJyb3JMYW5nTm90RXhpc3RcbiAgfCBFcnJvckxpbWl0XG4gIHwgRXJyb3JTdHJpcGVcbiAgfCBFcnJvckJhc2ljO1xuIl0sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,14 @@
1
+ export * from "./client/index.js";
2
+ export * from "./crypto/index.js";
3
+ export type { Progress } from "./crypto/file.js";
4
+ export type { User, QueryLimits, DownloadProgress, UserData, MailLimitsValues, CloudLimits, SendReport, SuccessResponse } from "./BaseClient.js";
5
+ export { BaseClient } from "./BaseClient.js";
6
+ export type { Node, NodeFull, FileMetadata, SecrecyUserApp, BaseMail, ReceivedMail, SentMail, PublicUser, UserAppSettings, NodeSize, UserAppNotifications, MailFile, MailIntegrity, DraftMail, Mail, WaitingReceivedMail, MailRecipientInput } from "./client/types/index.js";
7
+ export * from "./client/helpers.js";
8
+ export * from "./sodium.js";
9
+ export * from "./utils/store-buddy.js";
10
+ export { Lang, FileContentType, MailType, PlanKind, Rights, PayInputType, UserRole, InfuraNetwork, Thunder } from "./zeus/index.js";
11
+ export type { GraphQLTypes } from "./zeus/index.js";
12
+ export * from "./error.js";
13
+ export type { InputType } from "./zeus";
14
+ export { Selector } from "./zeus";
package/dist/index.js ADDED
@@ -0,0 +1,10 @@
1
+ export * from "./client/index.js";
2
+ export * from "./crypto/index.js";
3
+ export { BaseClient } from "./BaseClient.js";
4
+ export * from "./client/helpers.js";
5
+ export * from "./sodium.js";
6
+ export * from "./utils/store-buddy.js";
7
+ export { Lang, FileContentType, MailType, PlanKind, Rights, PayInputType, UserRole, InfuraNetwork, Thunder } from "./zeus/index.js";
8
+ export * from "./error.js";
9
+ export { Selector } from "./zeus";
10
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlQ2xpZW50IiwiTGFuZyIsIkZpbGVDb250ZW50VHlwZSIsIk1haWxUeXBlIiwiUGxhbktpbmQiLCJSaWdodHMiLCJQYXlJbnB1dFR5cGUiLCJVc2VyUm9sZSIsIkluZnVyYU5ldHdvcmsiLCJUaHVuZGVyIiwiU2VsZWN0b3IiXSwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vY2xpZW50L2luZGV4LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jcnlwdG8vaW5kZXguanNcIjtcbmV4cG9ydCB0eXBlIHsgUHJvZ3Jlc3MgfSBmcm9tIFwiLi9jcnlwdG8vZmlsZS5qc1wiO1xuZXhwb3J0IHR5cGUge1xuICBVc2VyLFxuICBRdWVyeUxpbWl0cyxcbiAgRG93bmxvYWRQcm9ncmVzcyxcbiAgVXNlckRhdGEsXG4gIE1haWxMaW1pdHNWYWx1ZXMsXG4gIENsb3VkTGltaXRzLFxuICBTZW5kUmVwb3J0LFxuICBTdWNjZXNzUmVzcG9uc2Vcbn0gZnJvbSBcIi4vQmFzZUNsaWVudC5qc1wiO1xuZXhwb3J0IHsgQmFzZUNsaWVudCB9IGZyb20gXCIuL0Jhc2VDbGllbnQuanNcIjtcbmV4cG9ydCB0eXBlIHtcbiAgTm9kZSxcbiAgTm9kZUZ1bGwsXG4gIEZpbGVNZXRhZGF0YSxcbiAgU2VjcmVjeVVzZXJBcHAsXG4gIEJhc2VNYWlsLFxuICBSZWNlaXZlZE1haWwsXG4gIFNlbnRNYWlsLFxuICBQdWJsaWNVc2VyLFxuICBVc2VyQXBwU2V0dGluZ3MsXG4gIE5vZGVTaXplLFxuICBVc2VyQXBwTm90aWZpY2F0aW9ucyxcbiAgTWFpbEZpbGUsXG4gIE1haWxJbnRlZ3JpdHksXG4gIERyYWZ0TWFpbCxcbiAgTWFpbCxcbiAgV2FpdGluZ1JlY2VpdmVkTWFpbCxcbiAgTWFpbFJlY2lwaWVudElucHV0XG59IGZyb20gXCIuL2NsaWVudC90eXBlcy9pbmRleC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY2xpZW50L2hlbHBlcnMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NvZGl1bS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHMvc3RvcmUtYnVkZHkuanNcIjtcbmV4cG9ydCB7XG4gIExhbmcsXG4gIEZpbGVDb250ZW50VHlwZSxcbiAgTWFpbFR5cGUsXG4gIFBsYW5LaW5kLFxuICBSaWdodHMsXG4gIFBheUlucHV0VHlwZSxcbiAgVXNlclJvbGUsXG4gIEluZnVyYU5ldHdvcmssXG4gIFRodW5kZXJcbn0gZnJvbSBcIi4vemV1cy9pbmRleC5qc1wiO1xuZXhwb3J0IHR5cGUgeyBHcmFwaFFMVHlwZXMgfSBmcm9tIFwiLi96ZXVzL2luZGV4LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lcnJvci5qc1wiO1xuZXhwb3J0IHR5cGUgeyBJbnB1dFR5cGUgfSBmcm9tIFwiLi96ZXVzXCI7XG5leHBvcnQgeyBTZWxlY3RvciB9IGZyb20gXCIuL3pldXNcIjtcbiJdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUI7QUFDakMsY0FBYyxtQkFBbUI7QUFZakMsU0FBU0EsVUFBVSxRQUFRLGlCQUFpQjtBQW9CNUMsY0FBYyxxQkFBcUI7QUFDbkMsY0FBYyxhQUFhO0FBQzNCLGNBQWMsd0JBQXdCO0FBQ3RDLFNBQ0VDLElBQUksRUFDSkMsZUFBZSxFQUNmQyxRQUFRLEVBQ1JDLFFBQVEsRUFDUkMsTUFBTSxFQUNOQyxZQUFZLEVBQ1pDLFFBQVEsRUFDUkMsYUFBYSxFQUNiQyxPQUFPLFFBQ0YsaUJBQWlCO0FBRXhCLGNBQWMsWUFBWTtBQUUxQixTQUFTQyxRQUFRLFFBQVEsUUFBUSJ9
File without changes
@@ -0,0 +1,23 @@
1
+ import { calcUncompressedLen, compressBlockBound, compressBlockHC, uncompressBlock } from "./lz4.js";
2
+ import { concatenate } from "../utils/utils.js";
3
+ export function compress(data) {
4
+ if (data.byteLength > 15_000_000) {
5
+ return concatenate(new Uint8Array([0]), data);
6
+ }
7
+ const compressed = new Uint8Array(compressBlockBound(data.byteLength));
8
+ const compressedSize = compressBlockHC(data, compressed, 0);
9
+ if (compressedSize === 0) {
10
+ return concatenate(new Uint8Array([0]), data);
11
+ }
12
+ return concatenate(new Uint8Array([1]), compressed.slice(0, compressedSize));
13
+ }
14
+ export function uncompress(data) {
15
+ const realData = data.slice(1);
16
+ if (data[0] === 0) {
17
+ return realData;
18
+ }
19
+ const dst = new Uint8Array(calcUncompressedLen(realData));
20
+ const uncompressedSize = uncompressBlock(realData, dst);
21
+ return dst.slice(0, uncompressedSize);
22
+ }
23
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjYWxjVW5jb21wcmVzc2VkTGVuIiwiY29tcHJlc3NCbG9ja0JvdW5kIiwiY29tcHJlc3NCbG9ja0hDIiwidW5jb21wcmVzc0Jsb2NrIiwiY29uY2F0ZW5hdGUiLCJjb21wcmVzcyIsImRhdGEiLCJieXRlTGVuZ3RoIiwiVWludDhBcnJheSIsImNvbXByZXNzZWQiLCJjb21wcmVzc2VkU2l6ZSIsInNsaWNlIiwidW5jb21wcmVzcyIsInJlYWxEYXRhIiwiZHN0IiwidW5jb21wcmVzc2VkU2l6ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taW5pZnkvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY2FsY1VuY29tcHJlc3NlZExlbixcbiAgY29tcHJlc3NCbG9ja0JvdW5kLFxuICBjb21wcmVzc0Jsb2NrSEMsXG4gIHVuY29tcHJlc3NCbG9ja1xufSBmcm9tIFwiLi9sejQuanNcIjtcbmltcG9ydCB7IGNvbmNhdGVuYXRlIH0gZnJvbSBcIi4uL3V0aWxzL3V0aWxzLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wcmVzcyhkYXRhOiBVaW50OEFycmF5KTogVWludDhBcnJheSB7XG4gIGlmIChkYXRhLmJ5dGVMZW5ndGggPiAxNV8wMDBfMDAwKSB7XG4gICAgcmV0dXJuIGNvbmNhdGVuYXRlKG5ldyBVaW50OEFycmF5KFswXSksIGRhdGEpO1xuICB9XG4gIGNvbnN0IGNvbXByZXNzZWQgPSBuZXcgVWludDhBcnJheShjb21wcmVzc0Jsb2NrQm91bmQoZGF0YS5ieXRlTGVuZ3RoKSk7XG4gIGNvbnN0IGNvbXByZXNzZWRTaXplID0gY29tcHJlc3NCbG9ja0hDKGRhdGEsIGNvbXByZXNzZWQsIDApO1xuICBpZiAoY29tcHJlc3NlZFNpemUgPT09IDApIHtcbiAgICByZXR1cm4gY29uY2F0ZW5hdGUobmV3IFVpbnQ4QXJyYXkoWzBdKSwgZGF0YSk7XG4gIH1cbiAgcmV0dXJuIGNvbmNhdGVuYXRlKG5ldyBVaW50OEFycmF5KFsxXSksIGNvbXByZXNzZWQuc2xpY2UoMCwgY29tcHJlc3NlZFNpemUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuY29tcHJlc3MoZGF0YTogVWludDhBcnJheSk6IFVpbnQ4QXJyYXkge1xuICBjb25zdCByZWFsRGF0YSA9IGRhdGEuc2xpY2UoMSk7XG4gIGlmIChkYXRhWzBdID09PSAwKSB7XG4gICAgcmV0dXJuIHJlYWxEYXRhO1xuICB9XG4gIGNvbnN0IGRzdCA9IG5ldyBVaW50OEFycmF5KGNhbGNVbmNvbXByZXNzZWRMZW4ocmVhbERhdGEpKTtcbiAgY29uc3QgdW5jb21wcmVzc2VkU2l6ZSA9IHVuY29tcHJlc3NCbG9jayhyZWFsRGF0YSwgZHN0KTtcbiAgcmV0dXJuIGRzdC5zbGljZSgwLCB1bmNvbXByZXNzZWRTaXplKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FDRUEsbUJBQW1CLEVBQ25CQyxrQkFBa0IsRUFDbEJDLGVBQWUsRUFDZkMsZUFBZSxRQUNWLFVBQVU7QUFDakIsU0FBU0MsV0FBVyxRQUFRLG1CQUFtQjtBQUUvQyxPQUFPLFNBQVNDLFFBQVEsQ0FBQ0MsSUFBZ0IsRUFBYztFQUNyRCxJQUFJQSxJQUFJLENBQUNDLFVBQVUsR0FBRyxVQUFVLEVBQUU7SUFDaEMsT0FBT0gsV0FBVyxDQUFDLElBQUlJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVGLElBQUksQ0FBQztFQUMvQztFQUNBLE1BQU1HLFVBQVUsR0FBRyxJQUFJRCxVQUFVLENBQUNQLGtCQUFrQixDQUFDSyxJQUFJLENBQUNDLFVBQVUsQ0FBQyxDQUFDO0VBQ3RFLE1BQU1HLGNBQWMsR0FBR1IsZUFBZSxDQUFDSSxJQUFJLEVBQUVHLFVBQVUsRUFBRSxDQUFDLENBQUM7RUFDM0QsSUFBSUMsY0FBYyxLQUFLLENBQUMsRUFBRTtJQUN4QixPQUFPTixXQUFXLENBQUMsSUFBSUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUYsSUFBSSxDQUFDO0VBQy9DO0VBQ0EsT0FBT0YsV0FBVyxDQUFDLElBQUlJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVDLFVBQVUsQ0FBQ0UsS0FBSyxDQUFDLENBQUMsRUFBRUQsY0FBYyxDQUFDLENBQUM7QUFDOUU7QUFFQSxPQUFPLFNBQVNFLFVBQVUsQ0FBQ04sSUFBZ0IsRUFBYztFQUN2RCxNQUFNTyxRQUFRLEdBQUdQLElBQUksQ0FBQ0ssS0FBSyxDQUFDLENBQUMsQ0FBQztFQUM5QixJQUFJTCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQ2pCLE9BQU9PLFFBQVE7RUFDakI7RUFDQSxNQUFNQyxHQUFHLEdBQUcsSUFBSU4sVUFBVSxDQUFDUixtQkFBbUIsQ0FBQ2EsUUFBUSxDQUFDLENBQUM7RUFDekQsTUFBTUUsZ0JBQWdCLEdBQUdaLGVBQWUsQ0FBQ1UsUUFBUSxFQUFFQyxHQUFHLENBQUM7RUFDdkQsT0FBT0EsR0FBRyxDQUFDSCxLQUFLLENBQUMsQ0FBQyxFQUFFSSxnQkFBZ0IsQ0FBQztBQUN2QyJ9
File without changes