@serve.zone/coremail 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/changelog.md +22 -0
  2. package/dist_ts/00_commitinfo_data.js +1 -1
  3. package/dist_ts/classes.auth.d.ts +19 -0
  4. package/dist_ts/classes.auth.js +58 -1
  5. package/dist_ts/classes.coremail.d.ts +3 -0
  6. package/dist_ts/classes.coremail.js +11 -4
  7. package/dist_ts/classes.gateway.d.ts +11 -1
  8. package/dist_ts/classes.gateway.js +101 -63
  9. package/dist_ts/classes.inbound.d.ts +10 -1
  10. package/dist_ts/classes.inbound.js +45 -7
  11. package/dist_ts/classes.maintenance.js +16 -1
  12. package/dist_ts/classes.models.d.ts +24 -2
  13. package/dist_ts/classes.models.js +72 -2
  14. package/dist_ts/classes.server.d.ts +6 -12
  15. package/dist_ts/classes.server.js +18 -78
  16. package/dist_ts/classes.smtpsubmission.d.ts +85 -0
  17. package/dist_ts/classes.smtpsubmission.js +379 -0
  18. package/dist_ts/classes.storage.d.ts +9 -0
  19. package/dist_ts/classes.storage.js +44 -1
  20. package/dist_ts/classes.submissions.d.ts +27 -1
  21. package/dist_ts/classes.submissions.js +164 -14
  22. package/dist_ts/coremail.errors.d.ts +18 -0
  23. package/dist_ts/coremail.errors.js +84 -0
  24. package/dist_ts/coremail.log.d.ts +1 -1
  25. package/dist_ts/coremail.log.js +1 -1
  26. package/dist_ts/coremail.mime.d.ts +15 -0
  27. package/dist_ts/coremail.mime.js +76 -1
  28. package/dist_ts/coremail.persistence.d.ts +38 -1
  29. package/dist_ts/coremail.persistence.js +124 -40
  30. package/dist_ts/coremail.stats.d.ts +72 -0
  31. package/dist_ts/coremail.stats.js +242 -0
  32. package/dist_ts/coremail.validation.d.ts +15 -2
  33. package/dist_ts/coremail.validation.js +26 -78
  34. package/dist_ts/interfaces.d.ts +18 -0
  35. package/dist_ts/plugins.d.ts +1 -0
  36. package/dist_ts/plugins.js +2 -1
  37. package/package.json +4 -3
  38. package/readme.md +51 -2
  39. package/ts/00_commitinfo_data.ts +1 -1
  40. package/ts/classes.auth.ts +77 -0
  41. package/ts/classes.coremail.ts +20 -0
  42. package/ts/classes.gateway.ts +121 -66
  43. package/ts/classes.inbound.ts +71 -6
  44. package/ts/classes.maintenance.ts +14 -0
  45. package/ts/classes.models.ts +67 -1
  46. package/ts/classes.server.ts +22 -86
  47. package/ts/classes.smtpsubmission.ts +466 -0
  48. package/ts/classes.storage.ts +54 -0
  49. package/ts/classes.submissions.ts +247 -12
  50. package/ts/coremail.errors.ts +111 -0
  51. package/ts/coremail.log.ts +1 -0
  52. package/ts/coremail.mime.ts +89 -0
  53. package/ts/coremail.persistence.ts +196 -48
  54. package/ts/coremail.stats.ts +342 -0
  55. package/ts/coremail.validation.ts +31 -103
  56. package/ts/interfaces.ts +20 -0
  57. package/ts/plugins.ts +1 -0
package/changelog.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026-09-15 - 1.3.0
4
+
5
+ ### Features
6
+
7
+ - accept authenticated SMTP submissions and report per-service mail statistics (msa)
8
+ - Add `CoreMailSubmissionService.submitRaw()`, the exact-byte outbound entry point: it enforces the same binding authority, sender authorization, serialized-MIME byte budget and minute/day quota the API path enforces, stores the submitted bytes verbatim as the submission's immutable MIME, and leaves the record in exactly the state `finalize()` leaves an API submission in, so the existing outbound worker and gateway hand it off unchanged.
9
+ - Record how each submission entered CoreMail (`source: 'api' | 'smtp'`) and expose it on the wire. Records persisted before the discriminator existed are read as API submissions. An SMTP submission has no part descriptors, which is the only place the parts rules are relaxed.
10
+ - Add `CoreMailSmtpSubmissionServer`, a smartmta-backed SMTP submission listener (MSA) driven by `ICoreMailDesiredState.smtp`. It runs only when the listener is enabled and both PEM secrets resolve, restarts when the smtp section changes, and joins shutdown. SMTP AUTH uses the binding id as the username and any accepted binding credential as the password, verified through the same argon2id code and per-identity limiter the socket path uses. smartmta owns the transport only: nothing is stored, queued or forwarded by it.
11
+ - Report the listener on `GET /ready` as `smtpSubmission`. An enabled listener that cannot present certificate material stays down and is reported unavailable rather than falling open to cleartext.
12
+ - Add per-binding daily mail counters and the control-session `coreMailGetServiceMailStatistics` method with an opaque composite cursor and a bounded page size. Every counter increment commits in the same transaction as the durable transition it counts, so replayed transitions never double-count. Counter rows are retained for 90 days.
13
+ - Answer gateway-facing handlers with the same privacy-safe typed error envelope the workload handlers use, so the transport can distinguish `QUOTA_EXCEEDED` from `STATE_CONFLICT`.
14
+ - Populate inbound `messageId` and `subject` from a bounded prefix of the stored message, which the gateway message descriptor cannot carry.
15
+ - Adopt the contract package's `normalizeCoreMailGatewayMessage` and `normalizeCoreMailConnectionInfo` in place of local copies, pinned by a routing-handle digest regression test.
16
+
17
+ ### Fixes
18
+
19
+ - Consume @push.rocks/smartmta 9.6.1, which ships the third-party notices for the statically linked mailer-bin the Docker image redistributes.
20
+
21
+ ### Maintenance
22
+
23
+ - Update tstest to 6.1.0 for the release.
24
+
3
25
  ## 2026-09-15 - 1.2.0
4
26
 
5
27
  ### Features
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/coremail',
6
- version: '1.2.0',
6
+ version: '1.3.0',
7
7
  description: 'Authenticated mail persistence and delivery orchestration for serve.zone workloads.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLHFGQUFxRjtDQUNuRyxDQUFBIn0=
@@ -54,6 +54,25 @@ export declare class CoreMailAuth {
54
54
  private requireSecretShape;
55
55
  private verify;
56
56
  authenticateControl(peerArg: ICoreMailPeer, requestArg: plugins.serveZoneInterfaces.requests.coremail.IReq_CoreMailAuthenticateControl['request']): Promise<ICoreMailControlSession>;
57
+ /**
58
+ * Verify an SMTP submission credential.
59
+ *
60
+ * SMTP AUTH carries no credential id, so every currently accepted verifier
61
+ * of the binding is tried. Verification, the argon2id code and the
62
+ * per-identity limiter are the socket path's: the identity key is the same
63
+ * `workload:<bindingId>`, so a brute force cannot escape the limit by
64
+ * switching surface.
65
+ *
66
+ * Returns undefined for every refusal — an unknown binding, a binding that
67
+ * is not active or not outbound-capable, and a wrong secret are deliberately
68
+ * indistinguishable to the caller.
69
+ */
70
+ authenticateSmtpSubmission(bindingIdArg: string, secretArg: string): Promise<{
71
+ binding: plugins.serveZoneInterfaces.data.ICoreMailBindingDesiredState;
72
+ configEpoch: number;
73
+ credentialId: string;
74
+ credentialVersion: number;
75
+ } | undefined>;
57
76
  authenticateWorkload(peerArg: ICoreMailPeer, requestArg: plugins.serveZoneInterfaces.requests.coremail.IReq_CoreMailAuthenticateWorkload['request']): Promise<ICoreMailWorkloadSession>;
58
77
  requireControlSession(peerArg: ICoreMailPeer): ICoreMailControlSession;
59
78
  requireWorkloadSession(peerArg: ICoreMailPeer, operationArg: plugins.serveZoneInterfaces.data.TCoreMailWorkloadOperation): Promise<{
@@ -215,6 +215,63 @@ export class CoreMailAuth {
215
215
  throw new CoreMailAuthenticationError();
216
216
  }
217
217
  }
218
+ /**
219
+ * Verify an SMTP submission credential.
220
+ *
221
+ * SMTP AUTH carries no credential id, so every currently accepted verifier
222
+ * of the binding is tried. Verification, the argon2id code and the
223
+ * per-identity limiter are the socket path's: the identity key is the same
224
+ * `workload:<bindingId>`, so a brute force cannot escape the limit by
225
+ * switching surface.
226
+ *
227
+ * Returns undefined for every refusal — an unknown binding, a binding that
228
+ * is not active or not outbound-capable, and a wrong secret are deliberately
229
+ * indistinguishable to the caller.
230
+ */
231
+ async authenticateSmtpSubmission(bindingIdArg, secretArg) {
232
+ let failureCode = 'INVALID_INPUT';
233
+ try {
234
+ const desiredState = await this.getActiveDesiredState();
235
+ const bindingId = requireCoreMailIdentifier(bindingIdArg, 'bindingId');
236
+ const secret = this.requireSecretShape(secretArg);
237
+ failureCode = 'UNKNOWN_BINDING';
238
+ const binding = desiredState?.bindings.find((bindingArg) => bindingArg.bindingId === bindingId
239
+ && bindingArg.state === 'active'
240
+ && bindingArg.capabilities.includes('outbound'));
241
+ if (!desiredState || !binding) {
242
+ throw new CoreMailAuthenticationError();
243
+ }
244
+ failureCode = 'UNKNOWN_CREDENTIAL';
245
+ const accepted = binding.credentials.filter((credentialArg) => findAcceptedVerifier(binding.credentials, credentialArg.credentialId, credentialArg.version, this.now()) !== undefined);
246
+ if (accepted.length === 0) {
247
+ throw new CoreMailAuthenticationError();
248
+ }
249
+ failureCode = 'VERIFIER_REJECTED';
250
+ for (const verifier of accepted) {
251
+ try {
252
+ await this.verify(verifier, secret, `workload:${bindingId}`);
253
+ }
254
+ catch (error) {
255
+ if (error instanceof CoreMailAuthLimitError)
256
+ throw error;
257
+ continue;
258
+ }
259
+ return {
260
+ binding,
261
+ configEpoch: desiredState.configEpoch,
262
+ credentialId: verifier.credentialId,
263
+ credentialVersion: verifier.version,
264
+ };
265
+ }
266
+ throw new CoreMailAuthenticationError();
267
+ }
268
+ catch (error) {
269
+ await logCoreMailFailure('auth', error instanceof CoreMailAuthLimitError
270
+ ? 'LIMITER_EXHAUSTED'
271
+ : failureCode, undefined, { surface: 'smtp' }).catch(() => undefined);
272
+ return undefined;
273
+ }
274
+ }
218
275
  async authenticateWorkload(peerArg, requestArg) {
219
276
  this.requireFreshPeer(peerArg);
220
277
  let failureCode = 'INVALID_INPUT';
@@ -310,4 +367,4 @@ export class CoreMailAuth {
310
367
  return { session, binding };
311
368
  }
312
369
  }
313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBUXhDLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsMEJBQTBCLEdBQzNCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFPdkQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsZ0NBQWdDLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsNEJBQTRCLENBQUM7QUFFdkUsTUFBTSxPQUFPLDJCQUE0QixTQUFRLEtBQUs7SUFDcEQ7UUFDRSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLDZCQUE2QixDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSwyQkFBMkI7SUFDckU7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsd0JBQXdCLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLDBCQUEyQixTQUFRLEtBQUs7SUFDbkQ7UUFDRSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsSUFBSSxHQUFHLDRCQUE0QixDQUFDO0lBQzNDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxLQUFLO0lBQ3REO1FBQ0UsS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLElBQUksR0FBRywrQkFBK0IsQ0FBQztJQUM5QyxDQUFDO0NBQ0Y7QUF1QkQsTUFBTSxPQUFPLG1CQUFtQjtJQUNiLGVBQWUsQ0FBUztJQUN4QixjQUFjLENBQVM7SUFDdkIsYUFBYSxDQUFTO0lBQ3RCLGdCQUFnQixDQUFTO0lBQ3pCLHVCQUF1QixDQUFTO0lBQ2hDLGlCQUFpQixDQUFTO0lBQzFCLEdBQUcsQ0FBZTtJQUUzQixRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ0osT0FBTyxHQUFrQixFQUFFLENBQUM7SUFDNUIsZUFBZSxHQUFHLElBQUksR0FBRyxFQUEyQixDQUFDO0lBRXRFLFlBQW1CLGFBQTBDLEVBQUU7UUFDN0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxVQUFVLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO1FBQ3RELElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUM7UUFDdkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLFVBQVUsQ0FBQyx1QkFBdUIsSUFBSSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxpQkFBaUIsSUFBSSxLQUFLLENBQUM7UUFDL0QsSUFBSSxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDeEMsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPO1lBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07WUFDNUIsVUFBVSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSTtTQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxHQUFHLENBQ2QsV0FBbUIsRUFDbkIsT0FBeUI7UUFFekIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQztZQUNILE9BQU8sTUFBTSxPQUFPLEVBQUUsQ0FBQztRQUN6QixDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxXQUFtQjtRQUM5QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BDLE1BQU0sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQztnQkFDakMsWUFBWSxFQUFFLEdBQUc7YUFDbEIsQ0FBQyxDQUFDO1lBQ0gsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDN0UsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUN0QixJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQzNELENBQUM7WUFDRixNQUFNLENBQUMsWUFBWSxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDM0MsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksc0JBQXNCLEVBQUUsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxlQUFlLENBQUMsTUFBYztRQUNwQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3ZELE9BQU87UUFDVCxDQUFDO1FBQ0QsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN0RCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLENBQUM7a0JBQzNELElBQUksQ0FBQyx1QkFBdUIsQ0FDL0IsQ0FBQztZQUNGLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztvQkFDdkQsT0FBTztnQkFDVCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN2RCxPQUFPO1lBQ1QsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLFdBQVc7UUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUksc0JBQXNCLEVBQUUsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsTUFBTSxJQUFJLE9BQU8sQ0FBTyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsRUFBRTtZQUNoRCxNQUFNLE1BQU0sR0FBZ0I7Z0JBQzFCLEtBQUssRUFBRSxHQUFHLEVBQUU7b0JBQ1YsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDM0IsVUFBVSxFQUFFLENBQUM7Z0JBQ2YsQ0FBQztnQkFDRCxNQUFNLEVBQUUsR0FBRyxFQUFFO29CQUNYLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUMzQyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDZixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ2hDLENBQUM7b0JBQ0QsU0FBUyxDQUFDLElBQUksc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO2dCQUMxQyxDQUFDO2dCQUNELEtBQUssRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUM7YUFDN0QsQ0FBQztZQUNGLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFdBQVc7UUFDakIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztDQUNGO0FBRUQsTUFBTSxvQkFBb0IsR0FBRyxDQUMzQixjQUFtQyxFQUNuQyxlQUF1QixFQUN2QixvQkFBNEIsRUFDNUIsTUFBYyxFQUNpQixFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQ3hFLGFBQWEsQ0FBQyxZQUFZLEtBQUssZUFBZTtPQUMzQyxhQUFhLENBQUMsT0FBTyxLQUFLLG9CQUFvQjtPQUM5QyxDQUNELGFBQWEsQ0FBQyxLQUFLLEtBQUssU0FBUztXQUM5QixDQUNELGFBQWEsQ0FBQyxLQUFLLEtBQUssVUFBVTtlQUMvQixhQUFhLENBQUMsV0FBVyxLQUFLLFNBQVM7ZUFDdkMsYUFBYSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQ3ZDLENBQ0YsQ0FDRixDQUFDO0FBRUYsTUFBTSxPQUFPLFlBQVk7SUFJSjtJQUVBO0lBRUE7SUFQSCxPQUFPLENBQXNCO0lBRTdDLFlBQ21CLGdCQUMyQyxFQUMzQyxxQkFDc0IsRUFDdEIsTUFBb0IsSUFBSSxDQUFDLEdBQUc7UUFKNUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUMyQjtRQUMzQywwQkFBcUIsR0FBckIscUJBQXFCLENBQ0M7UUFDdEIsUUFBRyxHQUFILEdBQUcsQ0FBeUI7UUFFN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLG1CQUFtQixDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUFzQjtRQUM3QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ25FLElBQ0UsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUM7ZUFDakMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztlQUMvQixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUNoQyxDQUFDO1lBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUseUJBQXlCLENBQUMsQ0FBQztZQUMvQyxNQUFNLElBQUksMkJBQTJCLEVBQUUsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFNBQWtCO1FBQzNDLElBQ0UsT0FBTyxTQUFTLEtBQUssUUFBUTtlQUMxQixTQUFTLENBQUMsTUFBTSxHQUFHLEVBQUU7ZUFDckIsU0FBUyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQ3pCLENBQUM7WUFDRCxNQUFNLElBQUksMkJBQTJCLEVBQUUsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVPLEtBQUssQ0FBQyxNQUFNLENBQ2xCLFdBQThCLEVBQzlCLFNBQWlCLEVBQ2pCLFdBQW1CO1FBRW5CLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQzlELE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsQ0FDL0QsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSwyQkFBMkIsRUFBRSxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLG1CQUFtQixDQUM5QixPQUFzQixFQUN0QixVQUMyRjtRQUUzRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0IsSUFBSSxXQUFXLEdBQUcsZUFBZSxDQUFDO1FBQ2xDLElBQUksWUFBZ0MsQ0FBQztRQUNyQyxJQUFJLENBQUM7WUFDSCxZQUFZLEdBQUcseUJBQXlCLENBQ3RDLFVBQVUsQ0FBQyxZQUFZLEVBQ3ZCLGNBQWMsQ0FDZixDQUFDO1lBQ0YsTUFBTSxpQkFBaUIsR0FBRywwQkFBMEIsQ0FDbEQsVUFBVSxDQUFDLGlCQUFpQixFQUM1QixtQkFBbUIsRUFDbkIsQ0FBQyxDQUNGLENBQUM7WUFDRixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM5RSxXQUFXLEdBQUcsb0JBQW9CLENBQUM7WUFDbkMsTUFBTSxRQUFRLEdBQUcsb0JBQW9CLENBQ25DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQ2pDLFlBQVksRUFDWixpQkFBaUIsRUFDakIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUNYLENBQUM7WUFDRixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxJQUFJLDJCQUEyQixFQUFFLENBQUM7WUFDMUMsQ0FBQztZQUNELFdBQVcsR0FBRyxtQkFBbUIsQ0FBQztZQUNsQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsWUFBWSxFQUFFLENBQUMsQ0FBQztZQUN6RSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUEwQjtnQkFDckQsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUNsQixZQUFZO2dCQUNaLGlCQUFpQjtnQkFDakIsZUFBZSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7YUFDNUIsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDOUMsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sa0JBQWtCLENBQ3RCLE1BQU0sRUFDTixLQUFLLFlBQVksc0JBQXNCLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQzNFLFNBQVMsRUFDVDtnQkFDRSxJQUFJLEVBQUUsU0FBUztnQkFDZixHQUFHLENBQUMsWUFBWSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDO2FBQ3hELENBQ0YsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekIsTUFBTSxJQUFJLDJCQUEyQixFQUFFLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsb0JBQW9CLENBQy9CLE9BQXNCLEVBQ3RCLFVBQzRGO1FBRTVGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQixJQUFJLFdBQVcsR0FBRyxlQUFlLENBQUM7UUFDbEMsSUFBSSxTQUE2QixDQUFDO1FBQ2xDLElBQUksWUFBZ0MsQ0FBQztRQUNyQyxJQUFJLENBQUM7WUFDSCxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ3hELFNBQVMsR0FBRyx5QkFBeUIsQ0FDbkMsVUFBVSxDQUFDLFNBQVMsRUFDcEIsV0FBVyxDQUNaLENBQUM7WUFDRixZQUFZLEdBQUcseUJBQXlCLENBQ3RDLFVBQVUsQ0FBQyxZQUFZLEVBQ3ZCLGNBQWMsQ0FDZixDQUFDO1lBQ0YsTUFBTSxpQkFBaUIsR0FBRywwQkFBMEIsQ0FDbEQsVUFBVSxDQUFDLGlCQUFpQixFQUM1QixtQkFBbUIsRUFDbkIsQ0FBQyxDQUNGLENBQUM7WUFDRixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM5RSxXQUFXLEdBQUcsaUJBQWlCLENBQUM7WUFDaEMsTUFBTSxPQUFPLEdBQUcsWUFBWSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUN6RCxVQUFVLENBQUMsU0FBUyxLQUFLLFNBQVM7bUJBQy9CLFVBQVUsQ0FBQyxLQUFLLEtBQUssVUFBVSxDQUNuQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUM5RCxNQUFNLElBQUksMkJBQTJCLEVBQUUsQ0FBQztZQUMxQyxDQUFDO1lBQ0QsV0FBVyxHQUFHLG9CQUFvQixDQUFDO1lBQ25DLE1BQU0sUUFBUSxHQUFHLG9CQUFvQixDQUNuQyxPQUFPLENBQUMsV0FBVyxFQUNuQixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FDWCxDQUFDO1lBQ0YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNkLE1BQU0sSUFBSSwyQkFBMkIsRUFBRSxDQUFDO1lBQzFDLENBQUM7WUFDRCxXQUFXLEdBQUcsbUJBQW1CLENBQUM7WUFDbEMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDdkUsTUFBTSxpQkFBaUIsR0FDckIsT0FBTyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxpQ0FBaUMsQ0FDaEUsT0FBTyxDQUFDLEtBQUssRUFDYixPQUFPLENBQUMsWUFBWSxDQUNyQixDQUFDO1lBQ0osTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBMkI7Z0JBQ3RELElBQUksRUFBRSxVQUFVO2dCQUNoQixNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQ2xCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtnQkFDMUIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO2dCQUM1QixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7Z0JBQzVCLGVBQWUsRUFBRSxPQUFPLENBQUMsUUFBUTtnQkFDakMsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO2dCQUNyQyxZQUFZO2dCQUNaLGlCQUFpQjtnQkFDakIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxLQUFLO2dCQUMzQixZQUFZLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUNHO2dCQUN4RCxpQkFBaUIsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxDQUNRO2dCQUMvRCxzQkFBc0IsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLHNCQUFzQjtnQkFDbkUsZUFBZSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7YUFDNUIsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDOUMsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sa0JBQWtCLENBQ3RCLE1BQU0sRUFDTixLQUFLLFlBQVksc0JBQXNCLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQzNFLFNBQVMsRUFDVDtnQkFDRSxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsR0FBRyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQztnQkFDakQsR0FBRyxDQUFDLFlBQVksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQzthQUN4RCxDQUNGLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3pCLE1BQU0sSUFBSSwyQkFBMkIsRUFBRSxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0lBRU0scUJBQXFCLENBQUMsT0FBc0I7UUFDakQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQWlDLENBQUM7UUFDckYsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM1RSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sSUFBSSwwQkFBMEIsRUFBRSxDQUFDO1FBQ3pDLENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FDbkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFDakMsT0FBTyxDQUFDLFlBQVksRUFDcEIsT0FBTyxDQUFDLGlCQUFpQixFQUN6QixJQUFJLENBQUMsR0FBRyxFQUFFLENBQ1gsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLENBQUM7WUFDekMsTUFBTSxJQUFJLDBCQUEwQixFQUFFLENBQUM7UUFDekMsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFTSxLQUFLLENBQUMsc0JBQXNCLENBQ2pDLE9BQXNCLEVBQ3RCLFlBQXlFO1FBS3pFLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFpQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxVQUFVLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDN0UsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztZQUM3QyxNQUFNLElBQUksMEJBQTBCLEVBQUUsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN4RCxNQUFNLE9BQU8sR0FBRyxZQUFZLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQ3pELFVBQVUsQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLFNBQVM7ZUFDdkMsVUFBVSxDQUFDLFNBQVMsS0FBSyxPQUFPLENBQUMsU0FBUztlQUMxQyxVQUFVLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQyxRQUFRO2VBQ3hDLFVBQVUsQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDLGVBQWU7ZUFDL0MsVUFBVSxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsWUFBWSxDQUM3QyxDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsT0FBTyxJQUFJLG9CQUFvQixDQUM5QyxPQUFPLENBQUMsV0FBVyxFQUNuQixPQUFPLENBQUMsWUFBWSxFQUNwQixPQUFPLENBQUMsaUJBQWlCLEVBQ3pCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FDWCxDQUFDO1FBQ0YsSUFDRSxDQUFDLFlBQVk7ZUFDVixZQUFZLENBQUMsV0FBVyxLQUFLLE9BQU8sQ0FBQyxXQUFXO2VBQ2hELENBQUMsT0FBTztlQUNSLENBQUMsUUFBUSxFQUNaLENBQUM7WUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sSUFBSSwwQkFBMEIsRUFBRSxDQUFDO1FBQ3pDLENBQUM7UUFDRCxNQUFNLGlCQUFpQixHQUNyQixPQUFPLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxDQUNoRSxPQUFPLENBQUMsS0FBSyxFQUNiLE9BQU8sQ0FBQyxZQUFZLENBQ3JCLENBQUM7UUFDSixJQUNFLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7ZUFDOUMsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQzVDLENBQUM7WUFDRCxNQUFNLElBQUksNkJBQTZCLEVBQUUsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUM5QixDQUFDO0NBQ0YifQ==
370
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBUXhDLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsMEJBQTBCLEdBQzNCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFPdkQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsZ0NBQWdDLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsNEJBQTRCLENBQUM7QUFFdkUsTUFBTSxPQUFPLDJCQUE0QixTQUFRLEtBQUs7SUFDcEQ7UUFDRSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLDZCQUE2QixDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSwyQkFBMkI7SUFDckU7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsd0JBQXdCLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLDBCQUEyQixTQUFRLEtBQUs7SUFDbkQ7UUFDRSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsSUFBSSxHQUFHLDRCQUE0QixDQUFDO0lBQzNDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxLQUFLO0lBQ3REO1FBQ0UsS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLElBQUksR0FBRywrQkFBK0IsQ0FBQztJQUM5QyxDQUFDO0NBQ0Y7QUF1QkQsTUFBTSxPQUFPLG1CQUFtQjtJQUNiLGVBQWUsQ0FBUztJQUN4QixjQUFjLENBQVM7SUFDdkIsYUFBYSxDQUFTO0lB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
@@ -6,6 +6,7 @@ import { CoreMailInboundService } from './classes.inbound.js';
6
6
  import { CoreMailMaintenanceService } from './classes.maintenance.js';
7
7
  import { type ICoreMailModels } from './classes.models.js';
8
8
  import { CoreMailServer } from './classes.server.js';
9
+ import { CoreMailSmtpSubmissionServer } from './classes.smtpsubmission.js';
9
10
  import { CoreMailStorage } from './classes.storage.js';
10
11
  import { CoreMailSubmissionService } from './classes.submissions.js';
11
12
  import { CoreMailTransferService } from './classes.transfer.js';
@@ -22,6 +23,7 @@ export declare class CoreMail {
22
23
  readonly inbound: CoreMailInboundService;
23
24
  readonly maintenance: CoreMailMaintenanceService;
24
25
  readonly gateway: CoreMailGateway;
26
+ readonly smtpSubmission: CoreMailSmtpSubmissionServer;
25
27
  readonly server: CoreMailServer;
26
28
  readonly outboundWorker: CoreMailOutboundWorker;
27
29
  private lifecycleState;
@@ -30,6 +32,7 @@ export declare class CoreMail {
30
32
  private databaseStarted;
31
33
  private storageStarted;
32
34
  private gatewayStarted;
35
+ private smtpSubmissionStarted;
33
36
  private serverStarted;
34
37
  private workerStarted;
35
38
  private maintenanceStarted;
@@ -7,6 +7,7 @@ import { CoreMailInboundService } from './classes.inbound.js';
7
7
  import { CoreMailMaintenanceService } from './classes.maintenance.js';
8
8
  import { createCoreMailModels, prepareCoreMailModelsForTransactions, } from './classes.models.js';
9
9
  import { CoreMailServer } from './classes.server.js';
10
+ import { CoreMailSmtpSubmissionServer } from './classes.smtpsubmission.js';
10
11
  import { CoreMailStorage } from './classes.storage.js';
11
12
  import { CoreMailSubmissionService } from './classes.submissions.js';
12
13
  import { CoreMailTransferService } from './classes.transfer.js';
@@ -22,6 +23,7 @@ export class CoreMail {
22
23
  inbound;
23
24
  maintenance;
24
25
  gateway;
26
+ smtpSubmission;
25
27
  server;
26
28
  outboundWorker;
27
29
  lifecycleState = 'new';
@@ -30,6 +32,7 @@ export class CoreMail {
30
32
  databaseStarted = false;
31
33
  storageStarted = false;
32
34
  gatewayStarted = false;
35
+ smtpSubmissionStarted = false;
33
36
  serverStarted = false;
34
37
  workerStarted = false;
35
38
  maintenanceStarted = false;
@@ -43,10 +46,11 @@ export class CoreMail {
43
46
  this.desiredState = new CoreMailDesiredStateService(this.database, this.models, this.storage, this.transfers, configArg.replica, (bindingArg, configEpochArg) => server?.activeSessionCounts(bindingArg, configEpochArg) ?? []);
44
47
  this.auth = new CoreMailAuth(configArg.controlBootstrap, this.desiredState.getActiveDesiredState);
45
48
  this.submissions = new CoreMailSubmissionService(this.database, this.models, this.storage, this.transfers);
46
- this.inbound = new CoreMailInboundService(this.database, this.models, this.transfers, configArg.replica.serviceId, this.desiredState.getActiveDesiredState, configArg.resolveRuntimeSecret);
47
- this.gateway = new CoreMailGateway(configArg, this.models, this.transfers, this.inbound, this.desiredState.getActiveDesiredState);
49
+ this.inbound = new CoreMailInboundService(this.database, this.models, this.transfers, this.storage, configArg.replica.serviceId, this.desiredState.getActiveDesiredState, configArg.resolveRuntimeSecret);
50
+ this.gateway = new CoreMailGateway(configArg, this.database, this.models, this.transfers, this.inbound, this.desiredState.getActiveDesiredState);
51
+ this.smtpSubmission = new CoreMailSmtpSubmissionServer(configArg, this.auth, this.submissions, this.desiredState.getActiveDesiredState);
48
52
  this.maintenance = new CoreMailMaintenanceService(this.models, this.storage);
49
- this.server = server = new CoreMailServer(configArg, this.database, this.storage, this.transfers, this.desiredState, this.auth, this.submissions, this.inbound, this.gateway);
53
+ this.server = server = new CoreMailServer(configArg, this.database, this.models, this.storage, this.transfers, this.desiredState, this.auth, this.submissions, this.inbound, this.gateway, this.smtpSubmission);
50
54
  this.outboundWorker = new CoreMailOutboundWorker(this.models, this.transfers, this.gateway, configArg.replica.taskId, configArg.replica.serviceId);
51
55
  }
52
56
  async start() {
@@ -93,6 +97,8 @@ export class CoreMail {
93
97
  await this.desiredState.start();
94
98
  this.gateway.start();
95
99
  this.gatewayStarted = true;
100
+ this.smtpSubmission.start();
101
+ this.smtpSubmissionStarted = true;
96
102
  await this.server.start();
97
103
  this.serverStarted = true;
98
104
  this.maintenance.start();
@@ -143,6 +149,7 @@ export class CoreMail {
143
149
  await stopOne(this.workerStarted, () => this.outboundWorker.stop(), () => { this.workerStarted = false; });
144
150
  await stopOne(this.serverStarted, () => this.server.stop(), () => { this.serverStarted = false; });
145
151
  await stopOne(this.maintenanceStarted, () => this.maintenance.stop(), () => { this.maintenanceStarted = false; });
152
+ await stopOne(this.smtpSubmissionStarted, () => this.smtpSubmission.stop(), () => { this.smtpSubmissionStarted = false; });
146
153
  await stopOne(this.gatewayStarted, () => this.gateway.stop(), () => { this.gatewayStarted = false; });
147
154
  await this.transfers.stop().catch((error) => errors.push(error));
148
155
  await stopOne(this.storageStarted, () => this.storage.stop(), () => { this.storageStarted = false; });
@@ -152,4 +159,4 @@ export class CoreMail {
152
159
  }
153
160
  }
154
161
  }
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jb3JlbWFpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMuY29yZW1haWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hFLE9BQU8sRUFDTCxlQUFlLEVBQ2Ysc0JBQXNCLEdBQ3ZCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixvQ0FBb0MsR0FFckMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBV2hFLE1BQU0sT0FBTyxRQUFRO0lBQ0gsTUFBTSxDQUFrQjtJQUN4QixRQUFRLENBQWdDO0lBQ3hDLE1BQU0sQ0FBa0I7SUFDeEIsT0FBTyxDQUFrQjtJQUN6QixTQUFTLENBQTBCO0lBQ25DLFlBQVksQ0FBOEI7SUFDMUMsSUFBSSxDQUFlO0lBQ25CLFdBQVcsQ0FBNEI7SUFDdkMsT0FBTyxDQUF5QjtJQUNoQyxXQUFXLENBQTZCO0lBQ3hDLE9BQU8sQ0FBa0I7SUFDekIsTUFBTSxDQUFpQjtJQUN2Qixj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
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jb3JlbWFpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMuY29yZW1haWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hFLE9BQU8sRUFDTCxlQUFlLEVBQ2Ysc0JBQXNCLEdBQ3ZCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixvQ0FBb0MsR0FFckMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBV2hFLE1BQU0sT0FBTyxRQUFRO0lBQ0gsTUFBTSxDQUFrQjtJQUN4QixRQUFRLENBQWdDO0lBQ3hDLE1BQU0sQ0FBa0I7SUFDeEIsT0FBTyxDQUFrQjtJQUN6QixTQUFTLENBQTBCO0lBQ25DLFlBQVksQ0FBOEI7SUFDMUMsSUFBSSxDQUFlO0lBQ25CLFdBQVcsQ0FBNEI7SUFDdkMsT0FBTyxDQUF5QjtJQUNoQyxXQUFXLENB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
@@ -11,6 +11,7 @@ export declare const stableStringify: (valueArg: unknown) => string;
11
11
  export declare const requireMatchingCoreMailTransferOrigin: (valueArg: unknown, expectedArg: string) => string;
12
12
  export declare class CoreMailGateway {
13
13
  private readonly config;
14
+ private readonly database;
14
15
  private readonly models;
15
16
  private readonly transfers;
16
17
  private readonly inbound;
@@ -25,13 +26,22 @@ export declare class CoreMailGateway {
25
26
  private statusSubscription;
26
27
  private authenticationTask;
27
28
  private authenticatingSignature;
28
- constructor(config: ICoreMailConfig, models: ICoreMailModels, transfers: CoreMailTransferService, inbound: CoreMailInboundService, getDesiredState: () => Promise<TDesiredState | null>, now?: () => number);
29
+ constructor(config: ICoreMailConfig, database: plugins.smartdata.SmartdataDb, models: ICoreMailModels, transfers: CoreMailTransferService, inbound: CoreMailInboundService, getDesiredState: () => Promise<TDesiredState | null>, now?: () => number);
29
30
  start(): void;
30
31
  stop(): Promise<void>;
31
32
  isReady(): boolean;
32
33
  getTransferOrigin(): string | null;
33
34
  private runReconciliationLoop;
34
35
  private connect;
36
+ /**
37
+ * The gateway-facing router.
38
+ *
39
+ * Every handler goes through the same privacy-safe envelope the workload
40
+ * router uses, so dcrouter observes the typed `ICoreMailErrorData` code —
41
+ * `QUOTA_EXCEEDED` versus `STATE_CONFLICT` decides whether it defers a
42
+ * message or rejects it — instead of an opaque error string.
43
+ */
44
+ createGatewayRouter(signatureArg: string): plugins.typedrequest.TypedRouter;
35
45
  private queueAuthentication;
36
46
  private requireAuthenticated;
37
47
  private disconnect;