@dynamic-labs-wallet/browser 1.0.13 → 1.0.15

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.
package/index.cjs CHANGED
@@ -101,32 +101,6 @@ const ARGON2_HASH_LENGTH = 32;
101
101
  */ const PBKDF2_ITERATIONS_V1 = 100000;
102
102
  const PBKDF2_ITERATIONS_V2 = 1000000;
103
103
 
104
- /**
105
- * Derives a key using Argon2id algorithm
106
- * @param params - Key derivation parameters
107
- * @param encryptionConfig - Encryption configuration
108
- * @returns Promise<CryptoKey>
109
- */ const deriveArgon2Key = async ({ password, salt }, encryptionConfig)=>{
110
- const argon2id = await loadArgon2idWasm();
111
- const argon2Config = encryptionConfig;
112
- const passwordBytes = new TextEncoder().encode(password);
113
- const hash = argon2id({
114
- password: passwordBytes,
115
- salt: salt,
116
- parallelism: argon2Config.parallelism || ARGON2_PARALLELISM,
117
- passes: argon2Config.iterations,
118
- memorySize: argon2Config.memorySize || ARGON2_MEMORY_SIZE,
119
- tagLength: argon2Config.hashLength || ARGON2_HASH_LENGTH
120
- });
121
- return crypto.subtle.importKey('raw', new Uint8Array(hash), {
122
- name: encryptionConfig.algorithm,
123
- length: encryptionConfig.algorithmLength
124
- }, false, [
125
- 'encrypt',
126
- 'decrypt'
127
- ]);
128
- };
129
-
130
104
  /**
131
105
  * Encryption configuration for each version
132
106
  */ const ENCRYPTION_VERSIONS = {
@@ -179,6 +153,48 @@ const PBKDF2_ITERATIONS_V2 = 1000000;
179
153
  return config.keyDerivation === ARGON2_ALGORITHM;
180
154
  };
181
155
 
156
+ /**
157
+ * Derives the raw Argon2id hash bytes for the given params/config.
158
+ *
159
+ * Exposed separately from {@link deriveArgon2Key} for the backup self-test's
160
+ * determinism probe: it lets the caller derive twice from identical inputs and
161
+ * diff the results to detect Argon2id non-determinism (suspected on
162
+ * memory-constrained clients). The raw bytes are AES key material and must
163
+ * never be logged or persisted — keep them in-process.
164
+ */ const deriveRawArgon2Bytes = async ({ password, salt }, encryptionConfig)=>{
165
+ const argon2id = await loadArgon2idWasm();
166
+ const argon2Config = encryptionConfig;
167
+ const passwordBytes = new TextEncoder().encode(password);
168
+ const hash = argon2id({
169
+ password: passwordBytes,
170
+ salt: salt,
171
+ parallelism: argon2Config.parallelism || ARGON2_PARALLELISM,
172
+ passes: argon2Config.iterations,
173
+ memorySize: argon2Config.memorySize || ARGON2_MEMORY_SIZE,
174
+ tagLength: argon2Config.hashLength || ARGON2_HASH_LENGTH
175
+ });
176
+ return new Uint8Array(hash);
177
+ };
178
+ /**
179
+ * Derives a key using Argon2id algorithm
180
+ * @param params - Key derivation parameters
181
+ * @param encryptionConfig - Encryption configuration
182
+ * @returns Promise<CryptoKey>
183
+ */ const deriveArgon2Key = async (params, encryptionConfig, // In-process hook receiving the raw derived bytes (key material — never log).
184
+ // Lets the backup self-test reuse the keys it already derives instead of
185
+ // running extra Argon2 derivations to detect drift.
186
+ onRawKey)=>{
187
+ const hash = await deriveRawArgon2Bytes(params, encryptionConfig);
188
+ onRawKey == null ? void 0 : onRawKey(hash);
189
+ return crypto.subtle.importKey('raw', new Uint8Array(hash), {
190
+ name: encryptionConfig.algorithm,
191
+ length: encryptionConfig.algorithmLength
192
+ }, false, [
193
+ 'encrypt',
194
+ 'decrypt'
195
+ ]);
196
+ };
197
+
182
198
  /**
183
199
  * Utility functions for encryption operations
184
200
  * These functions are separated to avoid circular dependencies
@@ -253,18 +269,20 @@ const KEY_SHARE_DECRYPTION_ERROR = 'Decryption failed.';
253
269
  */ const isInvalidPasswordError = (error)=>error instanceof Error && error.name === 'OperationError';
254
270
  /**
255
271
  * Get the appropriate key derivation function based on the encryption config
256
- */ const getKey = async (params, encryptionConfig)=>{
272
+ */ const getKey = async (params, encryptionConfig, onRawKey)=>{
257
273
  // Use Argon2 for v3, PBKDF2 for v1 and v2
258
274
  if (encryptionConfig.keyDerivation === ARGON2_ALGORITHM) {
259
- return deriveArgon2Key(params, encryptionConfig);
275
+ return deriveArgon2Key(params, encryptionConfig, onRawKey);
260
276
  } else {
277
+ // PBKDF2 derives a non-extractable CryptoKey directly, so raw bytes are
278
+ // unavailable; the hook simply doesn't fire (drift probe is v3-only anyway).
261
279
  return derivePBKDF2Key(params, encryptionConfig);
262
280
  }
263
281
  };
264
282
  /**
265
283
  * Encrypts data using the specified encryption version.
266
284
  * Always uses the latest encryption configuration for new encryptions by default.
267
- */ const encryptData = async ({ data, password, version = ENCRYPTION_VERSION_CURRENT })=>{
285
+ */ const encryptData = async ({ data, password, version = ENCRYPTION_VERSION_CURRENT, onRawKey })=>{
268
286
  const encryptionConfig = getEncryptionConfig(version);
269
287
  try {
270
288
  // Generate a random salt and IV
@@ -273,7 +291,7 @@ const KEY_SHARE_DECRYPTION_ERROR = 'Decryption failed.';
273
291
  const key = await getKey({
274
292
  password,
275
293
  salt
276
- }, encryptionConfig);
294
+ }, encryptionConfig, onRawKey);
277
295
  // Convert the input string to bytes
278
296
  const dataBytes = new TextEncoder().encode(data);
279
297
  // Encrypt the data
@@ -298,7 +316,7 @@ const KEY_SHARE_DECRYPTION_ERROR = 'Decryption failed.';
298
316
  * Uses the version field from the data to determine encryption parameters.
299
317
  * Falls back to legacy version for backward compatibility if no version is specified.
300
318
  * For v3 (Argon2), retries with parallelism=1 if an OperationError occurs.
301
- */ const decryptData = async ({ data, password })=>{
319
+ */ const decryptData = async ({ data, password, onRawKey })=>{
302
320
  const { salt, iv, cipher, version } = data;
303
321
  // Ensure proper base64 padding for all values
304
322
  const paddedSalt = ensureBase64Padding(salt);
@@ -313,7 +331,7 @@ const KEY_SHARE_DECRYPTION_ERROR = 'Decryption failed.';
313
331
  const key = await getKey({
314
332
  password,
315
333
  salt: saltBytes
316
- }, encryptionConfig);
334
+ }, encryptionConfig, onRawKey);
317
335
  const decryptedData = await crypto.subtle.decrypt({
318
336
  name: AES_GCM_ALGORITHM,
319
337
  iv: ivBytes
@@ -332,7 +350,7 @@ const KEY_SHARE_DECRYPTION_ERROR = 'Decryption failed.';
332
350
  const key = await getKey({
333
351
  password,
334
352
  salt: saltBytes
335
- }, modifiedConfig);
353
+ }, modifiedConfig, onRawKey);
336
354
  const decryptedData = await crypto.subtle.decrypt({
337
355
  name: AES_GCM_ALGORITHM,
338
356
  iv: ivBytes
@@ -1782,12 +1800,21 @@ const logError = ({ message, error, context, level = 'error' })=>{
1782
1800
  return;
1783
1801
  }
1784
1802
  const resolvedLevel = isExpectedUserError(error) ? 'info' : level;
1803
+ // Surface the unwrapped `cause` (name only — never its raw fields, which may
1804
+ // carry key material). Errors like EncryptionSelfTestFailedError wrap the real
1805
+ // failure (e.g. KeyShareDecryptionError) as `cause`; without this the original
1806
+ // failure mode is invisible in logs.
1807
+ const cause = error instanceof Error ? error.cause : undefined;
1785
1808
  core.Logger[resolvedLevel]('[DynamicWaasWalletClient] Error in browser client', {
1786
1809
  message,
1787
1810
  error: error instanceof Error ? {
1788
1811
  name: error.name,
1789
1812
  message: error.message
1790
1813
  } : String(error),
1814
+ cause: cause instanceof Error ? {
1815
+ name: cause.name,
1816
+ message: cause.message
1817
+ } : undefined,
1791
1818
  context
1792
1819
  });
1793
1820
  };
@@ -4720,26 +4747,122 @@ class DynamicWalletClient {
4720
4747
  // AES-GCM authenticates the ciphertext, so a wrong key fails to decrypt
4721
4748
  // rather than returning corrupted plaintext — "decrypt did not throw" is a
4722
4749
  // sufficient guarantee the cipher is recoverable.
4723
- async assertEncryptionRoundTrip({ password, encrypted, walletId, accountAddress }) {
4750
+ async assertEncryptionRoundTrip({ password, encrypted, encryptKeyBytes, walletId, accountAddress }) {
4724
4751
  if (!encrypted) return;
4752
+ // Capture the decrypt-side derived key (envId path only) so a failure can be
4753
+ // diffed against the encrypt key without any extra Argon2 derivation.
4754
+ let decryptKeyBytes;
4755
+ const onRawKey = password ? undefined : (k)=>decryptKeyBytes != null ? decryptKeyBytes : decryptKeyBytes = k;
4725
4756
  try {
4726
4757
  await this.decryptKeyShare({
4727
4758
  keyShare: encrypted,
4728
- password
4759
+ password,
4760
+ onRawKey
4729
4761
  });
4730
4762
  } catch (error) {
4731
- throw new EncryptionSelfTestFailedError({
4763
+ // Only a genuine ciphertext-integrity failure (AES-GCM auth failure /
4764
+ // wrong key material) means the backup is unrecoverable — that's the
4765
+ // terminal, non-retryable condition this self-test exists to catch.
4766
+ // Anything else (most commonly a failure to fetch the Argon2id WASM,
4767
+ // which surfaces as "Fetch error GET .../argon2id/simd.wasm") means the
4768
+ // self-test never actually ran: the crypto engine couldn't load. That's a
4769
+ // transient network error, so rethrow it as-is rather than masking it
4770
+ // behind "backup aborted" — it stays visible in logs and stays retryable.
4771
+ if (error instanceof InvalidPasswordError || error instanceof KeyShareDecryptionError) {
4772
+ this.logSelfTestDiagnostics({
4773
+ encrypted,
4774
+ password,
4775
+ walletId,
4776
+ accountAddress,
4777
+ cause: error,
4778
+ encryptKeyBytes,
4779
+ decryptKeyBytes
4780
+ });
4781
+ throw new EncryptionSelfTestFailedError({
4782
+ walletId,
4783
+ accountAddress,
4784
+ cause: error
4785
+ });
4786
+ }
4787
+ throw error;
4788
+ }
4789
+ }
4790
+ /**
4791
+ * Diagnostics for backup self-test failures. ONLY runs on the envId-default
4792
+ * path (no user password): envId is public, so the salt/iv/version emitted
4793
+ * here are non-secret.
4794
+ *
4795
+ * Reuses the encrypt- and decrypt-side keys that the backup already derived
4796
+ * (no extra Argon2 work — important, since the failing clients are the
4797
+ * memory-constrained ones) and logs the byte-wise XOR of the two: equal keys
4798
+ * give an all-zero diff, any non-zero byte localises the Argon2id drift that
4799
+ * broke this round-trip. The XOR of two unknown keys is not usable key
4800
+ * material, and the raw keys are never logged.
4801
+ */ logSelfTestDiagnostics({ encrypted, password, walletId, accountAddress, cause, encryptKeyBytes, decryptKeyBytes }) {
4802
+ // Hard gate: a user-supplied password must never reach these logs, even
4803
+ // derived or diffed. Only the public-envId path is instrumented.
4804
+ if (password) return;
4805
+ try {
4806
+ const decoded = JSON.parse(Buffer.from(encrypted, 'base64').toString());
4807
+ var _decoded_version;
4808
+ const version = (_decoded_version = decoded.version) != null ? _decoded_version : 'unknown';
4809
+ const config = getEncryptionConfig(version);
4810
+ const toHex = (a)=>Array.from(a, (b)=>b.toString(16).padStart(2, '0')).join('');
4811
+ // Diff the two real derivations when both were captured (v3/Argon2 only —
4812
+ // PBKDF2 keys are non-extractable so no bytes are available).
4813
+ let drift;
4814
+ if (encryptKeyBytes && decryptKeyBytes) {
4815
+ const len = Math.min(encryptKeyBytes.length, decryptKeyBytes.length);
4816
+ const xor = new Uint8Array(len);
4817
+ const driftPositions = [];
4818
+ for(let i = 0; i < len; i++){
4819
+ xor[i] = encryptKeyBytes[i] ^ decryptKeyBytes[i];
4820
+ if (xor[i] !== 0) driftPositions.push(i);
4821
+ }
4822
+ drift = {
4823
+ keyLength: len,
4824
+ keyDriftXor: toHex(xor),
4825
+ keyDriftByteCount: driftPositions.length,
4826
+ keyDriftPositions: driftPositions
4827
+ };
4828
+ }
4829
+ this.logger.error('[keyshare-selftest] self-test failed', _extends({
4830
+ walletId,
4831
+ accountAddress,
4832
+ environmentId: this.environmentId,
4833
+ userId: this.userId,
4834
+ version,
4835
+ salt: decoded.salt,
4836
+ iv: decoded.iv,
4837
+ saltLength: base64ToBytes(ensureBase64Padding(decoded.salt)).length,
4838
+ cipherLength: base64ToBytes(ensureBase64Padding(decoded.cipher)).length,
4839
+ causeName: cause instanceof Error ? cause.name : undefined,
4840
+ causeContext: cause instanceof KeyShareDecryptionError ? cause.context : undefined,
4841
+ // Whether both real keys were available to diff (false ⇒ non-v3 or a key wasn't captured).
4842
+ keyDriftAvailable: !!drift
4843
+ }, drift, {
4844
+ argon2: isArgon2Config(config) ? {
4845
+ memorySize: config.memorySize,
4846
+ iterations: config.iterations,
4847
+ parallelism: config.parallelism,
4848
+ hashLength: config.hashLength
4849
+ } : undefined
4850
+ }));
4851
+ } catch (diagError) {
4852
+ // Diagnostics must never mask the real failure.
4853
+ this.logger.warn('[keyshare-selftest] diagnostics failed to run', {
4732
4854
  walletId,
4733
4855
  accountAddress,
4734
- cause: error
4856
+ error: diagError instanceof Error ? diagError.message : String(diagError)
4735
4857
  });
4736
4858
  }
4737
4859
  }
4738
- async encryptKeyShare({ keyShare, password }) {
4860
+ async encryptKeyShare({ keyShare, password, onRawKey }) {
4739
4861
  const serializedKeyShare = JSON.stringify(keyShare);
4740
4862
  const encryptedKeyShare = await encryptData({
4741
4863
  data: serializedKeyShare,
4742
- password: password != null ? password : this.environmentId
4864
+ password: password != null ? password : this.environmentId,
4865
+ onRawKey
4743
4866
  });
4744
4867
  this.logPasswordSharePresence(password, 'encrypt');
4745
4868
  // stringify the encrypted key share, convert to base64, and store it
@@ -5121,12 +5244,24 @@ class DynamicWalletClient {
5121
5244
  }
5122
5245
  const bitcoinConfig = this.getBitcoinConfigForChain(walletData.chainName, accountAddress);
5123
5246
  const isPasswordEncrypted = shouldValidatePassword(password, this.environmentId);
5247
+ // On the envId-default path, capture each share's derived encrypt key
5248
+ // (keyed by its ciphertext blob) so the self-test can diff it against the
5249
+ // decrypt key it derives — detecting Argon2id drift with NO extra
5250
+ // derivations. Skipped entirely when a user password is set; keys are
5251
+ // in-process only and cleared right after the self-test.
5252
+ const encryptKeyByBlob = isPasswordEncrypted ? undefined : new Map();
5124
5253
  // Pre-encrypt all shares once, with retry to handle transient WebCrypto errors.
5125
5254
  // This avoids re-running expensive Argon2id key derivation on every retry attempt.
5126
- const encryptWithRetry = (keyShare)=>retryPromise(()=>this.encryptKeyShare({
5255
+ const encryptWithRetry = (keyShare)=>retryPromise(async ()=>{
5256
+ let rawKey;
5257
+ const blob = await this.encryptKeyShare({
5127
5258
  keyShare,
5128
- password
5129
- }), {
5259
+ password,
5260
+ onRawKey: encryptKeyByBlob ? (k)=>rawKey = k : undefined
5261
+ });
5262
+ if (encryptKeyByBlob && rawKey) encryptKeyByBlob.set(blob, rawKey);
5263
+ return blob;
5264
+ }, {
5130
5265
  maxAttempts: 3,
5131
5266
  operationName: 'encrypt key share'
5132
5267
  });
@@ -5149,12 +5284,19 @@ class DynamicWalletClient {
5149
5284
  var _preEncryptedDynamicShares_;
5150
5285
  // Fail fast before any upload if the just-written cipher can't be read
5151
5286
  // back with the same key material. Runs once per backup, not per share.
5152
- await this.assertEncryptionRoundTrip({
5153
- password,
5154
- encrypted: (_preEncryptedDynamicShares_ = preEncryptedDynamicShares[0]) != null ? _preEncryptedDynamicShares_ : (_preEncryptedCloudShares_ = preEncryptedCloudShares[0]) == null ? void 0 : _preEncryptedCloudShares_.encrypted[0],
5155
- walletId: walletData.walletId,
5156
- accountAddress
5157
- });
5287
+ const selfTestBlob = (_preEncryptedDynamicShares_ = preEncryptedDynamicShares[0]) != null ? _preEncryptedDynamicShares_ : (_preEncryptedCloudShares_ = preEncryptedCloudShares[0]) == null ? void 0 : _preEncryptedCloudShares_.encrypted[0];
5288
+ try {
5289
+ await this.assertEncryptionRoundTrip({
5290
+ password,
5291
+ encrypted: selfTestBlob,
5292
+ encryptKeyBytes: selfTestBlob ? encryptKeyByBlob == null ? void 0 : encryptKeyByBlob.get(selfTestBlob) : undefined,
5293
+ walletId: walletData.walletId,
5294
+ accountAddress
5295
+ });
5296
+ } finally{
5297
+ // Drop captured key material promptly regardless of outcome.
5298
+ encryptKeyByBlob == null ? void 0 : encryptKeyByBlob.clear();
5299
+ }
5158
5300
  // Step 1: Upload shares in parallel, each with its own retry
5159
5301
  const uploadPromises = [];
5160
5302
  if (distribution.clientShares.length > 0) {
@@ -5310,6 +5452,7 @@ class DynamicWalletClient {
5310
5452
  }));
5311
5453
  return backupData;
5312
5454
  } catch (error) {
5455
+ var _error_cause_context;
5313
5456
  const errorReason = classifyPasswordBackupError(error);
5314
5457
  const logFn = isUserActionablePasswordBackupErrorReason(errorReason) ? this.logger.warn : this.logger.error;
5315
5458
  logFn.call(this.logger, '[backupSharesWithDistribution] failed', _extends({}, logContext, {
@@ -5317,7 +5460,11 @@ class DynamicWalletClient {
5317
5460
  errorReason,
5318
5461
  errorName: error instanceof Error ? error.name : undefined,
5319
5462
  errorMessage: error instanceof Error ? error.message : String(error),
5320
- errorStack: error instanceof Error ? error.stack : undefined
5463
+ errorStack: error instanceof Error ? error.stack : undefined,
5464
+ // Unwrap the wrapped cause (name only — never raw fields) so self-test
5465
+ // failures show the underlying KeyShareDecryptionError / kdfVersion.
5466
+ errorCauseName: error instanceof Error && error.cause instanceof Error ? error.cause.name : undefined,
5467
+ kdfVersion: error instanceof Error && error.cause instanceof KeyShareDecryptionError ? (_error_cause_context = error.cause.context) == null ? void 0 : _error_cause_context.kdfVersion : undefined
5321
5468
  }));
5322
5469
  logError({
5323
5470
  message: 'Error in backupSharesWithDistribution',
@@ -5666,7 +5813,7 @@ class DynamicWalletClient {
5666
5813
  throw error;
5667
5814
  }
5668
5815
  }
5669
- async decryptKeyShare({ keyShare, password }) {
5816
+ async decryptKeyShare({ keyShare, password, onRawKey }) {
5670
5817
  const decodedKeyShare = JSON.parse(Buffer.from(keyShare, 'base64').toString());
5671
5818
  // Track whether a user-supplied password was provided so we can emit a
5672
5819
  // distinct error class on failure. The default `environmentId` fallback is
@@ -5678,7 +5825,8 @@ class DynamicWalletClient {
5678
5825
  try {
5679
5826
  const decryptedKeyShare = await decryptData({
5680
5827
  data: decodedKeyShare,
5681
- password: effectivePassword
5828
+ password: effectivePassword,
5829
+ onRawKey
5682
5830
  });
5683
5831
  this.logPasswordSharePresence(password, 'decrypt');
5684
5832
  this.logger.info('[keyshare-decryption] key share decrypted', {
package/index.esm.js CHANGED
@@ -102,32 +102,6 @@ const ARGON2_HASH_LENGTH = 32;
102
102
  */ const PBKDF2_ITERATIONS_V1 = 100000;
103
103
  const PBKDF2_ITERATIONS_V2 = 1000000;
104
104
 
105
- /**
106
- * Derives a key using Argon2id algorithm
107
- * @param params - Key derivation parameters
108
- * @param encryptionConfig - Encryption configuration
109
- * @returns Promise<CryptoKey>
110
- */ const deriveArgon2Key = async ({ password, salt }, encryptionConfig)=>{
111
- const argon2id = await loadArgon2idWasm();
112
- const argon2Config = encryptionConfig;
113
- const passwordBytes = new TextEncoder().encode(password);
114
- const hash = argon2id({
115
- password: passwordBytes,
116
- salt: salt,
117
- parallelism: argon2Config.parallelism || ARGON2_PARALLELISM,
118
- passes: argon2Config.iterations,
119
- memorySize: argon2Config.memorySize || ARGON2_MEMORY_SIZE,
120
- tagLength: argon2Config.hashLength || ARGON2_HASH_LENGTH
121
- });
122
- return crypto.subtle.importKey('raw', new Uint8Array(hash), {
123
- name: encryptionConfig.algorithm,
124
- length: encryptionConfig.algorithmLength
125
- }, false, [
126
- 'encrypt',
127
- 'decrypt'
128
- ]);
129
- };
130
-
131
105
  /**
132
106
  * Encryption configuration for each version
133
107
  */ const ENCRYPTION_VERSIONS = {
@@ -180,6 +154,48 @@ const PBKDF2_ITERATIONS_V2 = 1000000;
180
154
  return config.keyDerivation === ARGON2_ALGORITHM;
181
155
  };
182
156
 
157
+ /**
158
+ * Derives the raw Argon2id hash bytes for the given params/config.
159
+ *
160
+ * Exposed separately from {@link deriveArgon2Key} for the backup self-test's
161
+ * determinism probe: it lets the caller derive twice from identical inputs and
162
+ * diff the results to detect Argon2id non-determinism (suspected on
163
+ * memory-constrained clients). The raw bytes are AES key material and must
164
+ * never be logged or persisted — keep them in-process.
165
+ */ const deriveRawArgon2Bytes = async ({ password, salt }, encryptionConfig)=>{
166
+ const argon2id = await loadArgon2idWasm();
167
+ const argon2Config = encryptionConfig;
168
+ const passwordBytes = new TextEncoder().encode(password);
169
+ const hash = argon2id({
170
+ password: passwordBytes,
171
+ salt: salt,
172
+ parallelism: argon2Config.parallelism || ARGON2_PARALLELISM,
173
+ passes: argon2Config.iterations,
174
+ memorySize: argon2Config.memorySize || ARGON2_MEMORY_SIZE,
175
+ tagLength: argon2Config.hashLength || ARGON2_HASH_LENGTH
176
+ });
177
+ return new Uint8Array(hash);
178
+ };
179
+ /**
180
+ * Derives a key using Argon2id algorithm
181
+ * @param params - Key derivation parameters
182
+ * @param encryptionConfig - Encryption configuration
183
+ * @returns Promise<CryptoKey>
184
+ */ const deriveArgon2Key = async (params, encryptionConfig, // In-process hook receiving the raw derived bytes (key material — never log).
185
+ // Lets the backup self-test reuse the keys it already derives instead of
186
+ // running extra Argon2 derivations to detect drift.
187
+ onRawKey)=>{
188
+ const hash = await deriveRawArgon2Bytes(params, encryptionConfig);
189
+ onRawKey == null ? void 0 : onRawKey(hash);
190
+ return crypto.subtle.importKey('raw', new Uint8Array(hash), {
191
+ name: encryptionConfig.algorithm,
192
+ length: encryptionConfig.algorithmLength
193
+ }, false, [
194
+ 'encrypt',
195
+ 'decrypt'
196
+ ]);
197
+ };
198
+
183
199
  /**
184
200
  * Utility functions for encryption operations
185
201
  * These functions are separated to avoid circular dependencies
@@ -254,18 +270,20 @@ const KEY_SHARE_DECRYPTION_ERROR = 'Decryption failed.';
254
270
  */ const isInvalidPasswordError = (error)=>error instanceof Error && error.name === 'OperationError';
255
271
  /**
256
272
  * Get the appropriate key derivation function based on the encryption config
257
- */ const getKey = async (params, encryptionConfig)=>{
273
+ */ const getKey = async (params, encryptionConfig, onRawKey)=>{
258
274
  // Use Argon2 for v3, PBKDF2 for v1 and v2
259
275
  if (encryptionConfig.keyDerivation === ARGON2_ALGORITHM) {
260
- return deriveArgon2Key(params, encryptionConfig);
276
+ return deriveArgon2Key(params, encryptionConfig, onRawKey);
261
277
  } else {
278
+ // PBKDF2 derives a non-extractable CryptoKey directly, so raw bytes are
279
+ // unavailable; the hook simply doesn't fire (drift probe is v3-only anyway).
262
280
  return derivePBKDF2Key(params, encryptionConfig);
263
281
  }
264
282
  };
265
283
  /**
266
284
  * Encrypts data using the specified encryption version.
267
285
  * Always uses the latest encryption configuration for new encryptions by default.
268
- */ const encryptData = async ({ data, password, version = ENCRYPTION_VERSION_CURRENT })=>{
286
+ */ const encryptData = async ({ data, password, version = ENCRYPTION_VERSION_CURRENT, onRawKey })=>{
269
287
  const encryptionConfig = getEncryptionConfig(version);
270
288
  try {
271
289
  // Generate a random salt and IV
@@ -274,7 +292,7 @@ const KEY_SHARE_DECRYPTION_ERROR = 'Decryption failed.';
274
292
  const key = await getKey({
275
293
  password,
276
294
  salt
277
- }, encryptionConfig);
295
+ }, encryptionConfig, onRawKey);
278
296
  // Convert the input string to bytes
279
297
  const dataBytes = new TextEncoder().encode(data);
280
298
  // Encrypt the data
@@ -299,7 +317,7 @@ const KEY_SHARE_DECRYPTION_ERROR = 'Decryption failed.';
299
317
  * Uses the version field from the data to determine encryption parameters.
300
318
  * Falls back to legacy version for backward compatibility if no version is specified.
301
319
  * For v3 (Argon2), retries with parallelism=1 if an OperationError occurs.
302
- */ const decryptData = async ({ data, password })=>{
320
+ */ const decryptData = async ({ data, password, onRawKey })=>{
303
321
  const { salt, iv, cipher, version } = data;
304
322
  // Ensure proper base64 padding for all values
305
323
  const paddedSalt = ensureBase64Padding(salt);
@@ -314,7 +332,7 @@ const KEY_SHARE_DECRYPTION_ERROR = 'Decryption failed.';
314
332
  const key = await getKey({
315
333
  password,
316
334
  salt: saltBytes
317
- }, encryptionConfig);
335
+ }, encryptionConfig, onRawKey);
318
336
  const decryptedData = await crypto.subtle.decrypt({
319
337
  name: AES_GCM_ALGORITHM,
320
338
  iv: ivBytes
@@ -333,7 +351,7 @@ const KEY_SHARE_DECRYPTION_ERROR = 'Decryption failed.';
333
351
  const key = await getKey({
334
352
  password,
335
353
  salt: saltBytes
336
- }, modifiedConfig);
354
+ }, modifiedConfig, onRawKey);
337
355
  const decryptedData = await crypto.subtle.decrypt({
338
356
  name: AES_GCM_ALGORITHM,
339
357
  iv: ivBytes
@@ -1783,12 +1801,21 @@ const logError = ({ message, error, context, level = 'error' })=>{
1783
1801
  return;
1784
1802
  }
1785
1803
  const resolvedLevel = isExpectedUserError(error) ? 'info' : level;
1804
+ // Surface the unwrapped `cause` (name only — never its raw fields, which may
1805
+ // carry key material). Errors like EncryptionSelfTestFailedError wrap the real
1806
+ // failure (e.g. KeyShareDecryptionError) as `cause`; without this the original
1807
+ // failure mode is invisible in logs.
1808
+ const cause = error instanceof Error ? error.cause : undefined;
1786
1809
  Logger[resolvedLevel]('[DynamicWaasWalletClient] Error in browser client', {
1787
1810
  message,
1788
1811
  error: error instanceof Error ? {
1789
1812
  name: error.name,
1790
1813
  message: error.message
1791
1814
  } : String(error),
1815
+ cause: cause instanceof Error ? {
1816
+ name: cause.name,
1817
+ message: cause.message
1818
+ } : undefined,
1792
1819
  context
1793
1820
  });
1794
1821
  };
@@ -4721,26 +4748,122 @@ class DynamicWalletClient {
4721
4748
  // AES-GCM authenticates the ciphertext, so a wrong key fails to decrypt
4722
4749
  // rather than returning corrupted plaintext — "decrypt did not throw" is a
4723
4750
  // sufficient guarantee the cipher is recoverable.
4724
- async assertEncryptionRoundTrip({ password, encrypted, walletId, accountAddress }) {
4751
+ async assertEncryptionRoundTrip({ password, encrypted, encryptKeyBytes, walletId, accountAddress }) {
4725
4752
  if (!encrypted) return;
4753
+ // Capture the decrypt-side derived key (envId path only) so a failure can be
4754
+ // diffed against the encrypt key without any extra Argon2 derivation.
4755
+ let decryptKeyBytes;
4756
+ const onRawKey = password ? undefined : (k)=>decryptKeyBytes != null ? decryptKeyBytes : decryptKeyBytes = k;
4726
4757
  try {
4727
4758
  await this.decryptKeyShare({
4728
4759
  keyShare: encrypted,
4729
- password
4760
+ password,
4761
+ onRawKey
4730
4762
  });
4731
4763
  } catch (error) {
4732
- throw new EncryptionSelfTestFailedError({
4764
+ // Only a genuine ciphertext-integrity failure (AES-GCM auth failure /
4765
+ // wrong key material) means the backup is unrecoverable — that's the
4766
+ // terminal, non-retryable condition this self-test exists to catch.
4767
+ // Anything else (most commonly a failure to fetch the Argon2id WASM,
4768
+ // which surfaces as "Fetch error GET .../argon2id/simd.wasm") means the
4769
+ // self-test never actually ran: the crypto engine couldn't load. That's a
4770
+ // transient network error, so rethrow it as-is rather than masking it
4771
+ // behind "backup aborted" — it stays visible in logs and stays retryable.
4772
+ if (error instanceof InvalidPasswordError || error instanceof KeyShareDecryptionError) {
4773
+ this.logSelfTestDiagnostics({
4774
+ encrypted,
4775
+ password,
4776
+ walletId,
4777
+ accountAddress,
4778
+ cause: error,
4779
+ encryptKeyBytes,
4780
+ decryptKeyBytes
4781
+ });
4782
+ throw new EncryptionSelfTestFailedError({
4783
+ walletId,
4784
+ accountAddress,
4785
+ cause: error
4786
+ });
4787
+ }
4788
+ throw error;
4789
+ }
4790
+ }
4791
+ /**
4792
+ * Diagnostics for backup self-test failures. ONLY runs on the envId-default
4793
+ * path (no user password): envId is public, so the salt/iv/version emitted
4794
+ * here are non-secret.
4795
+ *
4796
+ * Reuses the encrypt- and decrypt-side keys that the backup already derived
4797
+ * (no extra Argon2 work — important, since the failing clients are the
4798
+ * memory-constrained ones) and logs the byte-wise XOR of the two: equal keys
4799
+ * give an all-zero diff, any non-zero byte localises the Argon2id drift that
4800
+ * broke this round-trip. The XOR of two unknown keys is not usable key
4801
+ * material, and the raw keys are never logged.
4802
+ */ logSelfTestDiagnostics({ encrypted, password, walletId, accountAddress, cause, encryptKeyBytes, decryptKeyBytes }) {
4803
+ // Hard gate: a user-supplied password must never reach these logs, even
4804
+ // derived or diffed. Only the public-envId path is instrumented.
4805
+ if (password) return;
4806
+ try {
4807
+ const decoded = JSON.parse(Buffer.from(encrypted, 'base64').toString());
4808
+ var _decoded_version;
4809
+ const version = (_decoded_version = decoded.version) != null ? _decoded_version : 'unknown';
4810
+ const config = getEncryptionConfig(version);
4811
+ const toHex = (a)=>Array.from(a, (b)=>b.toString(16).padStart(2, '0')).join('');
4812
+ // Diff the two real derivations when both were captured (v3/Argon2 only —
4813
+ // PBKDF2 keys are non-extractable so no bytes are available).
4814
+ let drift;
4815
+ if (encryptKeyBytes && decryptKeyBytes) {
4816
+ const len = Math.min(encryptKeyBytes.length, decryptKeyBytes.length);
4817
+ const xor = new Uint8Array(len);
4818
+ const driftPositions = [];
4819
+ for(let i = 0; i < len; i++){
4820
+ xor[i] = encryptKeyBytes[i] ^ decryptKeyBytes[i];
4821
+ if (xor[i] !== 0) driftPositions.push(i);
4822
+ }
4823
+ drift = {
4824
+ keyLength: len,
4825
+ keyDriftXor: toHex(xor),
4826
+ keyDriftByteCount: driftPositions.length,
4827
+ keyDriftPositions: driftPositions
4828
+ };
4829
+ }
4830
+ this.logger.error('[keyshare-selftest] self-test failed', _extends({
4831
+ walletId,
4832
+ accountAddress,
4833
+ environmentId: this.environmentId,
4834
+ userId: this.userId,
4835
+ version,
4836
+ salt: decoded.salt,
4837
+ iv: decoded.iv,
4838
+ saltLength: base64ToBytes(ensureBase64Padding(decoded.salt)).length,
4839
+ cipherLength: base64ToBytes(ensureBase64Padding(decoded.cipher)).length,
4840
+ causeName: cause instanceof Error ? cause.name : undefined,
4841
+ causeContext: cause instanceof KeyShareDecryptionError ? cause.context : undefined,
4842
+ // Whether both real keys were available to diff (false ⇒ non-v3 or a key wasn't captured).
4843
+ keyDriftAvailable: !!drift
4844
+ }, drift, {
4845
+ argon2: isArgon2Config(config) ? {
4846
+ memorySize: config.memorySize,
4847
+ iterations: config.iterations,
4848
+ parallelism: config.parallelism,
4849
+ hashLength: config.hashLength
4850
+ } : undefined
4851
+ }));
4852
+ } catch (diagError) {
4853
+ // Diagnostics must never mask the real failure.
4854
+ this.logger.warn('[keyshare-selftest] diagnostics failed to run', {
4733
4855
  walletId,
4734
4856
  accountAddress,
4735
- cause: error
4857
+ error: diagError instanceof Error ? diagError.message : String(diagError)
4736
4858
  });
4737
4859
  }
4738
4860
  }
4739
- async encryptKeyShare({ keyShare, password }) {
4861
+ async encryptKeyShare({ keyShare, password, onRawKey }) {
4740
4862
  const serializedKeyShare = JSON.stringify(keyShare);
4741
4863
  const encryptedKeyShare = await encryptData({
4742
4864
  data: serializedKeyShare,
4743
- password: password != null ? password : this.environmentId
4865
+ password: password != null ? password : this.environmentId,
4866
+ onRawKey
4744
4867
  });
4745
4868
  this.logPasswordSharePresence(password, 'encrypt');
4746
4869
  // stringify the encrypted key share, convert to base64, and store it
@@ -5122,12 +5245,24 @@ class DynamicWalletClient {
5122
5245
  }
5123
5246
  const bitcoinConfig = this.getBitcoinConfigForChain(walletData.chainName, accountAddress);
5124
5247
  const isPasswordEncrypted = shouldValidatePassword(password, this.environmentId);
5248
+ // On the envId-default path, capture each share's derived encrypt key
5249
+ // (keyed by its ciphertext blob) so the self-test can diff it against the
5250
+ // decrypt key it derives — detecting Argon2id drift with NO extra
5251
+ // derivations. Skipped entirely when a user password is set; keys are
5252
+ // in-process only and cleared right after the self-test.
5253
+ const encryptKeyByBlob = isPasswordEncrypted ? undefined : new Map();
5125
5254
  // Pre-encrypt all shares once, with retry to handle transient WebCrypto errors.
5126
5255
  // This avoids re-running expensive Argon2id key derivation on every retry attempt.
5127
- const encryptWithRetry = (keyShare)=>retryPromise(()=>this.encryptKeyShare({
5256
+ const encryptWithRetry = (keyShare)=>retryPromise(async ()=>{
5257
+ let rawKey;
5258
+ const blob = await this.encryptKeyShare({
5128
5259
  keyShare,
5129
- password
5130
- }), {
5260
+ password,
5261
+ onRawKey: encryptKeyByBlob ? (k)=>rawKey = k : undefined
5262
+ });
5263
+ if (encryptKeyByBlob && rawKey) encryptKeyByBlob.set(blob, rawKey);
5264
+ return blob;
5265
+ }, {
5131
5266
  maxAttempts: 3,
5132
5267
  operationName: 'encrypt key share'
5133
5268
  });
@@ -5150,12 +5285,19 @@ class DynamicWalletClient {
5150
5285
  var _preEncryptedDynamicShares_;
5151
5286
  // Fail fast before any upload if the just-written cipher can't be read
5152
5287
  // back with the same key material. Runs once per backup, not per share.
5153
- await this.assertEncryptionRoundTrip({
5154
- password,
5155
- encrypted: (_preEncryptedDynamicShares_ = preEncryptedDynamicShares[0]) != null ? _preEncryptedDynamicShares_ : (_preEncryptedCloudShares_ = preEncryptedCloudShares[0]) == null ? void 0 : _preEncryptedCloudShares_.encrypted[0],
5156
- walletId: walletData.walletId,
5157
- accountAddress
5158
- });
5288
+ const selfTestBlob = (_preEncryptedDynamicShares_ = preEncryptedDynamicShares[0]) != null ? _preEncryptedDynamicShares_ : (_preEncryptedCloudShares_ = preEncryptedCloudShares[0]) == null ? void 0 : _preEncryptedCloudShares_.encrypted[0];
5289
+ try {
5290
+ await this.assertEncryptionRoundTrip({
5291
+ password,
5292
+ encrypted: selfTestBlob,
5293
+ encryptKeyBytes: selfTestBlob ? encryptKeyByBlob == null ? void 0 : encryptKeyByBlob.get(selfTestBlob) : undefined,
5294
+ walletId: walletData.walletId,
5295
+ accountAddress
5296
+ });
5297
+ } finally{
5298
+ // Drop captured key material promptly regardless of outcome.
5299
+ encryptKeyByBlob == null ? void 0 : encryptKeyByBlob.clear();
5300
+ }
5159
5301
  // Step 1: Upload shares in parallel, each with its own retry
5160
5302
  const uploadPromises = [];
5161
5303
  if (distribution.clientShares.length > 0) {
@@ -5311,6 +5453,7 @@ class DynamicWalletClient {
5311
5453
  }));
5312
5454
  return backupData;
5313
5455
  } catch (error) {
5456
+ var _error_cause_context;
5314
5457
  const errorReason = classifyPasswordBackupError(error);
5315
5458
  const logFn = isUserActionablePasswordBackupErrorReason(errorReason) ? this.logger.warn : this.logger.error;
5316
5459
  logFn.call(this.logger, '[backupSharesWithDistribution] failed', _extends({}, logContext, {
@@ -5318,7 +5461,11 @@ class DynamicWalletClient {
5318
5461
  errorReason,
5319
5462
  errorName: error instanceof Error ? error.name : undefined,
5320
5463
  errorMessage: error instanceof Error ? error.message : String(error),
5321
- errorStack: error instanceof Error ? error.stack : undefined
5464
+ errorStack: error instanceof Error ? error.stack : undefined,
5465
+ // Unwrap the wrapped cause (name only — never raw fields) so self-test
5466
+ // failures show the underlying KeyShareDecryptionError / kdfVersion.
5467
+ errorCauseName: error instanceof Error && error.cause instanceof Error ? error.cause.name : undefined,
5468
+ kdfVersion: error instanceof Error && error.cause instanceof KeyShareDecryptionError ? (_error_cause_context = error.cause.context) == null ? void 0 : _error_cause_context.kdfVersion : undefined
5322
5469
  }));
5323
5470
  logError({
5324
5471
  message: 'Error in backupSharesWithDistribution',
@@ -5667,7 +5814,7 @@ class DynamicWalletClient {
5667
5814
  throw error;
5668
5815
  }
5669
5816
  }
5670
- async decryptKeyShare({ keyShare, password }) {
5817
+ async decryptKeyShare({ keyShare, password, onRawKey }) {
5671
5818
  const decodedKeyShare = JSON.parse(Buffer.from(keyShare, 'base64').toString());
5672
5819
  // Track whether a user-supplied password was provided so we can emit a
5673
5820
  // distinct error class on failure. The default `environmentId` fallback is
@@ -5679,7 +5826,8 @@ class DynamicWalletClient {
5679
5826
  try {
5680
5827
  const decryptedKeyShare = await decryptData({
5681
5828
  data: decodedKeyShare,
5682
- password: effectivePassword
5829
+ password: effectivePassword,
5830
+ onRawKey
5683
5831
  });
5684
5832
  this.logPasswordSharePresence(password, 'decrypt');
5685
5833
  this.logger.info('[keyshare-decryption] key share decrypted', {
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@dynamic-labs-wallet/browser",
3
- "version": "1.0.13",
3
+ "version": "1.0.15",
4
4
  "license": "Licensed under the Dynamic Labs, Inc. Terms Of Service (https://www.dynamic.xyz/terms-conditions)",
5
5
  "type": "module",
6
6
  "dependencies": {
7
- "@dynamic-labs-wallet/core": "1.0.13",
7
+ "@dynamic-labs-wallet/core": "1.0.15",
8
8
  "@dynamic-labs-wallet/forward-mpc-client": "0.10.1",
9
- "@dynamic-labs-wallet/primitives": "1.0.13",
9
+ "@dynamic-labs-wallet/primitives": "1.0.15",
10
10
  "@dynamic-labs/sdk-api-core": "^0.0.984",
11
11
  "argon2id": "1.0.1",
12
12
  "axios": "1.16.0",
@@ -1,10 +1,20 @@
1
1
  import type { EncryptionConfig } from './config.js';
2
2
  import type { KeyDerivationParams } from './types.js';
3
+ /**
4
+ * Derives the raw Argon2id hash bytes for the given params/config.
5
+ *
6
+ * Exposed separately from {@link deriveArgon2Key} for the backup self-test's
7
+ * determinism probe: it lets the caller derive twice from identical inputs and
8
+ * diff the results to detect Argon2id non-determinism (suspected on
9
+ * memory-constrained clients). The raw bytes are AES key material and must
10
+ * never be logged or persisted — keep them in-process.
11
+ */
12
+ export declare const deriveRawArgon2Bytes: ({ password, salt }: KeyDerivationParams, encryptionConfig: EncryptionConfig) => Promise<Uint8Array>;
3
13
  /**
4
14
  * Derives a key using Argon2id algorithm
5
15
  * @param params - Key derivation parameters
6
16
  * @param encryptionConfig - Encryption configuration
7
17
  * @returns Promise<CryptoKey>
8
18
  */
9
- export declare const deriveArgon2Key: ({ password, salt }: KeyDerivationParams, encryptionConfig: EncryptionConfig) => Promise<CryptoKey>;
19
+ export declare const deriveArgon2Key: (params: KeyDerivationParams, encryptionConfig: EncryptionConfig, onRawKey?: (raw: Uint8Array) => void) => Promise<CryptoKey>;
10
20
  //# sourceMappingURL=argon2.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"argon2.d.ts","sourceRoot":"","sources":["../../../src/backup/encryption/argon2.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,KAAK,EAA0B,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE9E;;;;;GAKG;AACH,eAAO,MAAM,eAAe,uBACN,mBAAmB,oBACrB,gBAAgB,KACjC,OAAO,CAAC,SAAS,CAyBnB,CAAC"}
1
+ {"version":3,"file":"argon2.d.ts","sourceRoot":"","sources":["../../../src/backup/encryption/argon2.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,KAAK,EAA0B,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE9E;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,uBACX,mBAAmB,oBACrB,gBAAgB,KACjC,OAAO,CAAC,UAAU,CAgBpB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,WAClB,mBAAmB,oBACT,gBAAgB,aAIvB,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,KACnC,OAAO,CAAC,SAAS,CAcnB,CAAC"}
@@ -32,10 +32,12 @@ export declare class KeyShareDecryptionError extends Error {
32
32
  * Encrypts data using the specified encryption version.
33
33
  * Always uses the latest encryption configuration for new encryptions by default.
34
34
  */
35
- export declare const encryptData: ({ data, password, version, }: {
35
+ export declare const encryptData: ({ data, password, version, onRawKey, }: {
36
36
  data: string;
37
37
  password: string;
38
38
  version?: string;
39
+ /** In-process hook receiving the raw derived key bytes — key material, never log. */
40
+ onRawKey?: (raw: Uint8Array) => void;
39
41
  }) => Promise<EncryptedData>;
40
42
  /**
41
43
  * Decrypts data with version-based configuration.
@@ -43,9 +45,11 @@ export declare const encryptData: ({ data, password, version, }: {
43
45
  * Falls back to legacy version for backward compatibility if no version is specified.
44
46
  * For v3 (Argon2), retries with parallelism=1 if an OperationError occurs.
45
47
  */
46
- export declare const decryptData: ({ data, password }: {
48
+ export declare const decryptData: ({ data, password, onRawKey, }: {
47
49
  data: DecryptionData;
48
50
  password: string;
51
+ /** In-process hook receiving the raw derived key bytes — key material, never log. */
52
+ onRawKey?: (raw: Uint8Array) => void;
49
53
  }) => Promise<string>;
50
54
  /**
51
55
  * Gets encryption metadata for a specific version.
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/backup/encryption/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAMpE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAuB,MAAM,YAAY,CAAC;AAGrF,eAAO,MAAM,sBAAsB,mFAAmF,CAAC;AAEvH,qBAAa,oBAAqB,SAAQ,KAAK;;CAK9C;AAED,eAAO,MAAM,0BAA0B,uBAAuB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,SAAgB,OAAO,CAAC,EAAE,yBAAyB,CAAC;gBAExC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,yBAAyB,CAAA;KAAE;CAU/E;AAoBD;;;GAGG;AACH,eAAO,MAAM,WAAW,iCAIrB;IACD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,KAAG,OAAO,CAAC,aAAa,CA2BxB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,uBAA8B;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KAAG,OAAO,CAAC,MAAM,CAyDhH,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,+BAA+B,YAAa,MAAM,KAAG,kBAmBjE,CAAC"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/backup/encryption/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAMpE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAuB,MAAM,YAAY,CAAC;AAGrF,eAAO,MAAM,sBAAsB,mFAAmF,CAAC;AAEvH,qBAAa,oBAAqB,SAAQ,KAAK;;CAK9C;AAED,eAAO,MAAM,0BAA0B,uBAAuB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,SAAgB,OAAO,CAAC,EAAE,yBAAyB,CAAC;gBAExC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,yBAAyB,CAAA;KAAE;CAU/E;AA0BD;;;GAGG;AACH,eAAO,MAAM,WAAW,2CAKrB;IACD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;CACtC,KAAG,OAAO,CAAC,aAAa,CA2BxB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,kCAIrB;IACD,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;CACtC,KAAG,OAAO,CAAC,MAAM,CAyDjB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,+BAA+B,YAAa,MAAM,KAAG,kBAmBjE,CAAC"}
package/src/client.d.ts CHANGED
@@ -418,9 +418,24 @@ export declare class DynamicWalletClient {
418
418
  rawPublicKey: EcdsaPublicKey | Uint8Array | string | undefined;
419
419
  }>;
420
420
  private assertEncryptionRoundTrip;
421
- encryptKeyShare({ keyShare, password }: {
421
+ /**
422
+ * Diagnostics for backup self-test failures. ONLY runs on the envId-default
423
+ * path (no user password): envId is public, so the salt/iv/version emitted
424
+ * here are non-secret.
425
+ *
426
+ * Reuses the encrypt- and decrypt-side keys that the backup already derived
427
+ * (no extra Argon2 work — important, since the failing clients are the
428
+ * memory-constrained ones) and logs the byte-wise XOR of the two: equal keys
429
+ * give an all-zero diff, any non-zero byte localises the Argon2id drift that
430
+ * broke this round-trip. The XOR of two unknown keys is not usable key
431
+ * material, and the raw keys are never logged.
432
+ */
433
+ private logSelfTestDiagnostics;
434
+ encryptKeyShare({ keyShare, password, onRawKey, }: {
422
435
  keyShare: ClientKeyShare;
423
436
  password?: string;
437
+ /** In-process hook receiving the raw derived key bytes — key material, never log. */
438
+ onRawKey?: (raw: Uint8Array) => void;
424
439
  }): Promise<string>;
425
440
  /**
426
441
  * helper function to store encrypted backup by wallet from iframe local storage
@@ -590,9 +605,11 @@ export declare class DynamicWalletClient {
590
605
  signedSessionId: string;
591
606
  passwordUpdateBatchId?: string;
592
607
  }): Promise<void>;
593
- decryptKeyShare({ keyShare, password }: {
608
+ decryptKeyShare({ keyShare, password, onRawKey, }: {
594
609
  keyShare: string;
595
610
  password?: string;
611
+ /** In-process hook receiving the raw derived key bytes — key material, never log. */
612
+ onRawKey?: (raw: Uint8Array) => void;
596
613
  }): Promise<ClientKeyShare>;
597
614
  /**
598
615
  * Validates that the provided password is consistent with existing encrypted wallets.
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../packages/src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../packages/src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,cAAc,EAGd,WAAW,EACX,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,QAAQ,EACR,cAAc,EACd,gBAAgB,EAOhB,wBAAwB,EACxB,eAAe,EAWf,KAAK,oCAAoC,EAEzC,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAExB,KAAK,sBAAsB,EAE5B,MAAM,2BAA2B,CAAC;AAKnC,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAsCnF,OAAO,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAiBxF,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EASL,eAAe,EACf,KAAK,IAAI,EACT,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACtB,MAAM,YAAY,CAAC;AAgCpB,KAAK,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,kCAAkC;IACjD,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;CACjD;AAED,qBAAa,mBAAmB;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IAEtB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAa;IACjD,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAa;IAEpD,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAQ;IACrE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACtC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAM;IAC3D,SAAS,CAAC,OAAO,EAAG,gBAAgB,CAAC;IACrC,SAAS,CAAC,aAAa,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,IAAI,CAAQ;IACjE,SAAS,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACtC,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAClD,SAAS,CAAC,iBAAiB,UAAS;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAM;IACzC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IAClD,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAM;IACpD,SAAS,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IACjE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAoC;IAIpE,OAAO,CAAC,MAAM,CAAC,eAAe,CAAK;IAEnC;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAuB;IAEtD;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAwB;IAEpE;;;OAGG;YACW,sBAAsB;gBAalC,EACE,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,UAAU,EACV,KAAK,EACL,YAAY,EACZ,QAA0B,EAC1B,SAAqB,EACrB,sBAAsB,EAEtB,UAAU,EACV,gBAAgB,EAChB,8BAA8B,EAC9B,YAAY,EACZ,MAAM,GACP,EAAE,wBAAwB,EAC3B,eAAe,CAAC,EAAE,kCAAkC;IA6EtD;;OAEG;WACW,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IAIlE;;OAEG;WACW,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IAI3D;;OAEG;WACW,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IAInE;;;;;;;;OAQG;WACW,aAAa,IAAI,IAAI;IAMnC;;;;OAIG;WACW,gBAAgB,IAAI,IAAI;IAKtC;;;OAGG;IACH,SAAS,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIhF;;;;OAIG;cACa,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuBjH;;;OAGG;IACH,SAAS,CAAC,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAQpF,WAAW,IAAI,QAAQ;IAI9B;;;OAGG;IACU,sBAAsB;IAInC;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IA8BzB,iBAAiB,CAAC,SAAS,EAAE,MAAM;IA8CnC,UAAU,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAYxE;;OAEG;cACa,WAAW,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAyB7E,sBAAsB,CAAC,EAC3B,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,OAAO,EACP,kBAAkB,GACnB,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;QACjC,kBAAkB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;KAC9F;IAqBK,sBAAsB,CAAC,EAC3B,SAAS,EACT,wBAAwB,EACxB,aAAa,GACd,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAmB/B,eAAe,CAAC,EACpB,SAAS,EACT,QAAQ,EACR,cAAc,EACd,aAAa,GACd,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,cAAc,CAAC;QACzB,cAAc,EAAE,WAAW,GAAG,SAAS,CAAC;QACxC,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B,GAAG,OAAO,CAAC,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;IAiB7D;;;;;;;;;;;;;;OAcG;IACG,sBAAsB,CAAC,EAC3B,SAAS,EACT,MAAM,EACN,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,aAAa,EACb,gBAAgB,EAChB,YAAY,GACb,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,uBAAuB,EAAE,sBAAsB,EAAE,CAAC;QAClD,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;KAC7B,GAAG,OAAO,CAAC;QACV,YAAY,EAAE,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;QAC/D,mBAAmB,EAAE,cAAc,EAAE,CAAC;QACtC,eAAe,EAAE,eAAe,CAAC;KAClC,CAAC;IAwEF,0EAA0E;IAC1E,OAAO,CAAC,oBAAoB;IAItB,YAAY,CAAC,EACjB,SAAS,EACT,MAAM,EAAE,aAAa,EACrB,eAAe,EAAE,sBAAsB,EACvC,uBAAuB,EACvB,wBAAwB,EACxB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,WAAW,GACZ,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,uBAAuB,EAAE,sBAAsB,EAAE,CAAC;QAClD,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B;;;;WAIG;QACH,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAC;KAC5E,GAAG,OAAO,CAAC;QACV,YAAY,EAAE,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;QAC/D,mBAAmB,EAAE,cAAc,EAAE,CAAC;QACtC,eAAe,EAAE,eAAe,CAAC;KAClC,CAAC;IA0HI,MAAM,CAAC,IAAI,EAAE;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;QACjC,kBAAkB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QACxE,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC;QACV,YAAY,EAAE,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;QAC/D,eAAe,EAAE,cAAc,EAAE,CAAC;KACnC,CAAC;YAkBY,gBAAgB;IA8HxB,mBAAmB,CAAC,IAAI,EAAE;QAC9B,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;QACjC,kBAAkB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QACxE,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,4DAA4D;QAC5D,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC;QACV,YAAY,EAAE,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;QAC/D,eAAe,EAAE,cAAc,EAAE,CAAC;KACnC,CAAC;YAeY,6BAA6B;IAqJrC,UAAU,CAAC,EACf,QAAQ,EACR,UAAU,EACV,OAAO,EACP,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,MAAM,EACN,OAAO,EACP,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;QAC7B,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,kBAAkB,CAAC;QAC7B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;QACjC,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B;IA2BD,OAAO,CAAC,2BAA2B;IAsCnC,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,0BAA0B;IAO5B,oBAAoB,CAAC,EACzB,SAAS,EACT,OAAO,EACP,MAAM,EACN,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,aAAa,GACd,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;QAC7B,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,cAAc,CAAC;QACzB,cAAc,EAAE,WAAW,GAAG,SAAS,CAAC;QACxC,gBAAgB,EAAE,aAAa,CAAC;QAChC,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B,GAAG,OAAO,CAAC,UAAU,GAAG,cAAc,CAAC;IAiDlC,UAAU,CAAC,EACf,SAAS,EACT,OAAO,EACP,MAAM,EAAE,aAAa,EACrB,QAAQ,EACR,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,WAAW,GACZ,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;QAC7B,MAAM,EAAE,MAAM,CAAC;QACf,gBAAgB,EAAE,MAAM,CAAC;QACzB,QAAQ,EAAE,cAAc,CAAC;QACzB,cAAc,EAAE,WAAW,GAAG,SAAS,CAAC;QACxC,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B;;;;;WAKG;QACH,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;KACrC,GAAG,OAAO,CAAC,UAAU,GAAG,cAAc,CAAC;IAgHxC;;;;;;OAMG;YACW,0BAA0B;IAoDlC,IAAI,CAAC,EACT,cAAc,EACd,OAAO,EACP,SAAS,EACT,QAAoB,EACpB,WAAmB,EACnB,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,OAAO,EACP,OAAO,EACP,YAAY,EACZ,aAAa,GACd,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,OAAO,CAAC,EAAE,kBAAkB,CAAC;QAC7B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;QACjC,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B,GAAG,OAAO,CAAC,UAAU,GAAG,cAAc,CAAC;YAmB1B,YAAY;IAuMpB,0BAA0B,CAAC,EAC/B,cAAc,EACd,SAAS,EACT,QAAoB,EACpB,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,YAAY,GACb,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,YAAY,CAAC,EAAE,YAAY,CAAC;KAC7B;IAcD;;;;;;;;;OASG;IACH,OAAO,CAAC,gCAAgC;IAsDxC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;YAclB,kCAAkC;YAoOlC,mBAAmB;IAQ3B,WAAW,CAAC,EAChB,SAAS,EACT,cAAc,EACd,aAAa,GACd,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,cAAc,CAAC;QAC/B,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B;IA2BD;;;;;;;;;;;;;OAaG;IACG,eAAe,CAAC,EACpB,SAAS,EACT,MAAM,EACN,cAAc,EACd,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,GAC7B,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,gBAAgB,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,2BAA2B,EAAE,wBAAwB,CAAC;QACtD,2BAA2B,EAAE,wBAAwB,CAAC;QACtD,4BAA4B,CAAC,EAAE,OAAO,CAAC;KACxC,GAAG,OAAO,CAAC;QACV,0BAA0B,EAAE,sBAAsB,EAAE,CAAC;QACrD,kBAAkB,EAAE,MAAM,EAAE,CAAC;QAC7B,uBAAuB,EAAE,MAAM,EAAE,CAAC;QAClC,uBAAuB,EAAE,cAAc,EAAE,CAAC;KAC3C,CAAC;IAgDI,OAAO,CAAC,EACZ,SAAS,EACT,cAAc,EACd,2BAA2B,EAC3B,2BAA2B,EAC3B,QAAoB,EACpB,eAAe,EACf,cAAmB,EACnB,4BAAoC,EACpC,QAAQ,EACR,mBAAmB,EACnB,gBAAwB,EACxB,sBAAsB,GACvB,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,2BAA2B,EAAE,wBAAwB,CAAC;QACtD,2BAA2B,EAAE,wBAAwB,CAAC;QACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;QAClC,4BAA4B,CAAC,EAAE,OAAO,CAAC;QACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC;IAiCD,OAAO,CAAC,6BAA6B;YA0CvB,6BAA6B;IA4C3C,OAAO,CAAC,iCAAiC;IAyEzC,OAAO,CAAC,uBAAuB;IAqC/B,OAAO,CAAC,oCAAoC;YAkC9B,eAAe;YA+Zf,0BAA0B;IAwElC,iBAAiB,CAAC,EACtB,cAAc,EACd,QAAoB,EACpB,eAAe,EACf,QAAQ,GACT,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IAyCK,gBAAgB,CAAC,EACrB,cAAc,EACd,QAAoB,EACpB,eAAe,EACf,QAAQ,GACT,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IAyDD,OAAO,CAAC,kBAAkB;IAgBpB,SAAS,CAAC,EACd,cAAc,EACd,SAAS,EACT,aAAa,EACb,QAAoB,EACpB,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,YAAY,GACb,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,YAAY,CAAC,EAAE,YAAY,CAAC;KAC7B;;;cA8Ee,wBAAwB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS;cAsBrE,gBAAgB,CAC9B,SAAS,EAAE,SAAS,EACpB,qBAAqB,EAAE,cAAc,EACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM;cA0BH,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB;IAgBzG,gBAAgB,CAAC,EACrB,SAAS,EACT,SAAS,EACT,cAAc,GACf,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,cAAc,EAAE,CAAC;QAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC;QACV,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;QACtC,YAAY,EAAE,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;KAChE,CAAC;YA0DY,yBAAyB;IAkDvC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,sBAAsB;IAuFxB,eAAe,CAAC,EACpB,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,EAAE;QACD,QAAQ,EAAE,cAAc,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,qFAAqF;QACrF,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;KACtC;IAaD;;OAEG;YACW,kCAAkC;IAsChD;;;OAGG;IACG,6BAA6B,CAAC,EAAE,cAAc,EAAE,EAAE;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAiC9G;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,wBAAwB,CAAC,EACjC,cAAc,EACd,QAAQ,EACR,SAAS,EACT,wBAAwB,EACxB,cAAc,EACd,UAAU,EACV,YAAY,EACZ,cAAc,EACd,eAAoB,GACrB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC;QAC5B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC3C,GAAG,IAAI;IAwBR;;;OAGG;IACH;;OAEG;IACH,OAAO,CAAC,mBAAmB;YAgBb,gCAAgC;IAe9C;;;;;;;OAOG;IACG,2BAA2B,CAAC,EAChC,cAAc,EACd,eAAe,GAChB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,cAAc,EAAE,CAAC;KACnC,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BjB;;;;;;;OAOG;YACW,iBAAiB;YAYjB,sBAAsB;YAuEtB,0BAA0B;IAqCxC;;;;;;;OAOG;YACW,4BAA4B;YAY5B,qBAAqB;YA4CrB,qBAAqB;IA4DnC,OAAO,CAAC,gCAAgC;IAsBlC,4BAA4B,CAAC,EACjC,cAAc,EACd,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,yBAAiC,EACjC,qBAAqB,EACrB,sBAAsB,GACvB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,iBAAiB,CAAC;QAChC,yBAAyB,CAAC,EAAE,OAAO,CAAC;QACpC,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC;;;;;;;;8BA9tHoC,CAAC;;;YAyjIxB,yBAAyB;IAiGvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACG,4BAA4B,CAAC,EACjC,cAAc,EACd,eAA2B,EAC3B,QAAoB,EACpB,eAAe,EACf,cAAmB,EACnB,iBAA6B,EAC7B,qBAAqB,EACrB,sBAAsB,GACvB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;QACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;QAClC,iBAAiB,CAAC,EAAE,cAAc,CAAC;QACnC,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC;;;;;;;;;;8BA3sIoC,CAAC;;;YAyyIxB,mBAAmB;IAcjC,OAAO,CAAC,wBAAwB;IAehC,OAAO,CAAC,2BAA2B;IAWnC,OAAO,CAAC,2BAA2B;IAqB7B,cAAc,CAAC,EACnB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,qBAAqB,GACtB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;KAChC;IAkDK,WAAW,CAAC,EAChB,cAAc,EACd,WAAW,EACX,eAAe,EACf,qBAAqB,GACtB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;QACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;KAChC;IAyCK,eAAe,CAAC,EACpB,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,qFAAqF;QACrF,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;KACtC,GAAG,OAAO,CAAC,cAAc,CAAC;IAwC3B;;;;;;;OAOG;IACH;;;;OAIG;YACW,sCAAsC;IA+DpD,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,sBAAsB;cAMd,uCAAuC,CAAC,EACtD,QAAQ,EACR,eAAe,GAChB,EAAE;QACD,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCjB;;;;OAIG;cACa,iCAAiC,CAAC,EAChD,cAAc,EACd,QAAQ,EACR,eAAe,GAChB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BjB;;;;;OAKG;YACW,8BAA8B;YAmC9B,2BAA2B;IAKzC;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,EACd,wBAAwB,EACxB,wBAAwB,EACxB,eAAe,EACf,UAAsB,GACvB,EAAE;QACD,wBAAwB,EAAE,kBAAkB,CAAC;QAC7C,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,eAAe,EAAE,eAAe,CAAC;QACjC,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG;QACF,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAClD,kBAAkB,EAAE,MAAM,CAAC;KAC5B;IA2CK,8BAA8B,CAAC,EACnC,cAAc,EACd,QAAQ,EACR,eAAe,EACf,eAAe,EACf,UAAsB,EACtB,oBAA2B,EAC3B,QAAQ,GACT,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,eAAe,CAAC;QACjC,eAAe,EAAE,MAAM,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;YAcf,sCAAsC;IA4F9C,cAAc;IAmCpB;;;;OAIG;YACW,8BAA8B;IA0D5C;;;;;;;;;;;OAWG;IACG,4BAA4B,CAAC,EACjC,cAAc,EACd,QAAQ,EACR,eAAe,EACf,sBAAsB,GACvB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBjB;;;;;;;;OAQG;YACW,0BAA0B;IAyCxC;;;;;;;;;OASG;IACG,uBAAuB,CAAC,EAC5B,cAAc,EACd,QAAQ,EACR,eAAe,GAChB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC,IAAI,CAAC;IASjB;;;;;;;OAOG;YACW,qBAAqB;IA8BnC;;;;;;;;;;;;OAYG;YACW,4BAA4B;IAsD1C;;;;;;OAMG;YACW,uBAAuB;IAkC/B,oCAAoC,CAAC,EACzC,cAAc,EACd,QAAQ,EACR,eAAe,EACf,sBAAsB,GACvB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,GAAG,OAAO,CAAC,IAAI,CAAC;IAyGX,qBAAqB,CAAC,EAC1B,cAAc,EACd,QAAQ,EACR,eAAe,GAChB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB;IAmCK,kBAAkB,CAAC,EACvB,cAAc,EACd,QAAQ,EACR,eAAe,GAChB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB;IAYD;;;;;OAKG;YACW,iBAAiB;IAsD/B;;;;OAIG;IACG,cAAc,CAAC,EACnB,cAAc,EACd,QAAoB,EACpB,eAAe,GAChB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB;IAwBK,mBAAmB,CAAC,EAAE,cAAc,EAAE,EAAE;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAK3F;;OAEG;IACG,4BAA4B,CAAC,EACjC,cAAc,EACd,eAAiD,GAClD,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,eAAe,CAAC;KACnC,GAAG,OAAO,CAAC,OAAO,CAAC;IAYpB;;OAEG;IACG,uCAAuC,CAAC,EAC5C,cAAc,EACd,eAAiD,GAClD,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,eAAe,CAAC;KACnC,GAAG,OAAO,CAAC,OAAO,CAAC;YAsBN,+BAA+B;IASvC,iCAAiC,CAAC,EAAE,cAAc,EAAE,EAAE;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAwBtG,0BAA0B;IAYlC,SAAS,CAAC,EACd,cAAc,EACd,eAA8C,EAC9C,UAAsB,EACtB,QAAoB,EACpB,eAAe,GAChB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,eAAe,CAAC;QAClC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsL7B;;;;;;;;;;;;;;;OAeG;IACG,sBAAsB,CAAC,EAC3B,cAAc,EACd,eAAe,EACf,QAAQ,GACT,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA4ChC;;;;;OAKG;YACW,4BAA4B;IAgD1C;;;;;;;;OAQG;IACG,YAAY,CAAC,EACjB,cAAc,EACd,QAAQ,EACR,eAAe,EACf,QAAQ,GACT,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmI7B;;OAEG;YACW,2BAA2B;IA8BnC,aAAa,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI7C,UAAU;IAoFhB;;;OAGG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM;IAQzB,WAAW,CAAC,EAChB,QAAQ,EACR,wBAAwB,EACxB,SAAa,GACd,EAAE;QACD,QAAQ,EAAE,YAAY,CAAC;QACvB,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;IAsEK,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAiC/C,QAAQ,CACZ,QAAQ,CAAC,EAAE,YAAY,EACvB,wBAAwB,CAAC,EAAE,wBAAwB,GAClD,OAAO,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAQrC,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;IAKrD;;;;OAIG;IACH,OAAO,CAAC,YAAY;IASpB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,wBAAwB,EAAE,wBAAwB,GAAG,MAAM;IAKhG,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,wBAAwB,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IA0DpH,eAAe,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,YAAY,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;CAQ3F"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/services/logger.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,QAAQ,wCAKlB;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B,KAAG,IAYH,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/services/logger.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,QAAQ,wCAKlB;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B,KAAG,IAkBH,CAAC"}