@ontemper/sdk 0.6.0-pr-7774.1 → 0.7.0-postgresql.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +36 -4
  2. package/dist/As2.d.ts +7 -4
  3. package/dist/As2.d.ts.map +1 -1
  4. package/dist/As2.js +39 -218
  5. package/dist/As2.js.map +1 -1
  6. package/dist/As2Destination.d.ts +2 -0
  7. package/dist/As2Destination.d.ts.map +1 -1
  8. package/dist/As2Destination.js +7 -5
  9. package/dist/As2Destination.js.map +1 -1
  10. package/dist/As2Testing.d.ts +5 -0
  11. package/dist/As2Testing.d.ts.map +1 -1
  12. package/dist/As2Testing.js +1 -0
  13. package/dist/As2Testing.js.map +1 -1
  14. package/dist/As2Transport.d.ts +30 -0
  15. package/dist/As2Transport.d.ts.map +1 -0
  16. package/dist/As2Transport.js +88 -0
  17. package/dist/As2Transport.js.map +1 -0
  18. package/dist/As2Wire.d.ts +338 -0
  19. package/dist/As2Wire.d.ts.map +1 -0
  20. package/dist/As2Wire.js +202 -0
  21. package/dist/As2Wire.js.map +1 -0
  22. package/dist/Contract/RuntimeApi.d.ts +19 -0
  23. package/dist/Contract/RuntimeApi.d.ts.map +1 -1
  24. package/dist/Contract/RuntimeApi.js +1 -1
  25. package/dist/Contract/RuntimeApi.js.map +1 -1
  26. package/dist/HttpApiResource.d.ts +12 -0
  27. package/dist/HttpApiResource.d.ts.map +1 -1
  28. package/dist/HttpApiResource.js +1 -1
  29. package/dist/HttpApiResource.js.map +1 -1
  30. package/dist/HttpClient.d.ts +19 -0
  31. package/dist/HttpClient.d.ts.map +1 -1
  32. package/dist/HttpClient.js +10 -5
  33. package/dist/HttpClient.js.map +1 -1
  34. package/dist/Manifest.d.ts +1 -1
  35. package/dist/Manifest.d.ts.map +1 -1
  36. package/dist/Manifest.js +1 -1
  37. package/dist/Manifest.js.map +1 -1
  38. package/dist/PostgreSql.d.ts +22 -0
  39. package/dist/PostgreSql.d.ts.map +1 -0
  40. package/dist/PostgreSql.js +56 -0
  41. package/dist/PostgreSql.js.map +1 -0
  42. package/dist/PostgreSqlPool.d.ts +60 -0
  43. package/dist/PostgreSqlPool.d.ts.map +1 -0
  44. package/dist/PostgreSqlPool.js +116 -0
  45. package/dist/PostgreSqlPool.js.map +1 -0
  46. package/dist/PostgreSqlTimeouts.d.ts +4 -0
  47. package/dist/PostgreSqlTimeouts.d.ts.map +1 -0
  48. package/dist/PostgreSqlTimeouts.js +16 -0
  49. package/dist/PostgreSqlTimeouts.js.map +1 -0
  50. package/dist/PostgreSqlTunnel.d.ts +25 -0
  51. package/dist/PostgreSqlTunnel.d.ts.map +1 -0
  52. package/dist/PostgreSqlTunnel.js +114 -0
  53. package/dist/PostgreSqlTunnel.js.map +1 -0
  54. package/dist/RuntimeResources.d.ts +10 -1
  55. package/dist/RuntimeResources.d.ts.map +1 -1
  56. package/dist/RuntimeResources.js +15 -3
  57. package/dist/RuntimeResources.js.map +1 -1
  58. package/package.json +24 -4
package/README.md CHANGED
@@ -313,11 +313,41 @@ const sent = yield * as2.send(document, { partner, idempotencyKey: order.id });
313
313
  Provide `As2.layer`, and mark each route a partner posts to with `.annotate(As2Route, true)`. `receive`, `confirm`,
314
314
  and `deliverMdn` are the steps `inbound` composes. A Run that the gateway admits as AS2 (`triggerKind: 'as2'`), or any
315
315
  request to a marked route, starts on a fresh trace, and its request lines log only allowlisted headers and no body. AS2 lines carry ids, outcomes, and byte counts, never the document, a receipt body, or a key. A
316
- failure is an `As2Error` with `operation`, `code`, `status`, and `retryable`. Partner TLS settings and proxies are
317
- not supported yet: `send` refuses them before it packs. In tests, provide `memoryAs2().layer` from
316
+ failure is an `As2Error` with `operation`, `code`, `status`, and `retryable`. On Bun (Firecracker), `send` applies
317
+ a partner's CA, client certificate, SNI name, and proxy, and an async MDN goes to the address the destination check
318
+ approved; another runtime refuses a partner with TLS settings or a proxy. In tests, provide `memoryAs2().layer` from
318
319
  `@temper/workflow/as2/testing` and pass its `fetch` to `testPlatform`; it keeps the platform ledger rules and runs
319
320
  no crypto.
320
321
 
322
+ ## PostgreSQL
323
+
324
+ `@temper/workflow/postgresql` opens a `pg.Pool` for a PostgreSQL Resource by key. It loads `pg` and `ws`, which
325
+ the workflow installs; no other entry point loads them. TypeScript code also needs `@types/pg`.
326
+
327
+ ```ts
328
+ import { createPostgresqlPool, makePostgresqlPool } from '@temper/workflow/postgresql';
329
+
330
+ // A script or a module-level pool; the caller ends it with `pool.end()`.
331
+ const pool = await createPostgresqlPool('orders-db');
332
+
333
+ // In an Effect service: the pool ends with the scope, and its password masks the workflow's log lines.
334
+ const Ledger = Layer.effect(LedgerService, Effect.map(makePostgresqlPool('orders-db'), makeLedger));
335
+ ```
336
+
337
+ The pool resolves the Resource through the runtime API and opens no connection until the first query. It
338
+ holds at most 5 connections, with a 10 s connect timeout, a 30 s idle timeout, and a 10 s statement timeout.
339
+ A statement timeout logs `temper.database.query.timeout`, and an idle connection error logs
340
+ `temper.database.connection.error`, without the query or the server text. `sslmode` maps to TLS as libpq does
341
+ (`disable`, `require`, `verify-ca`, `verify-full`; default `verify-full`). A Resource without a password sends an
342
+ empty one, never `PGPASSWORD` or `.pgpass`. A record with an SSH tunnel or RDS IAM authentication fails with
343
+ `InvalidResourceError`.
344
+
345
+ Deployed workflows and external databases connect over native TCP. In a builder sandbox
346
+ (`TEMPER_DATABASE_TUNNEL=websocket`), a Temper-managed Resource connects through the Resources-authenticated
347
+ WebSocket tunnel. Each physical connection reads the current runtime token, and a refused tunnel fails the
348
+ connection without a TCP fallback. `createPostgresqlPool` registers the password in the process-wide secret
349
+ registry; inside a workflow handler, prefer `makePostgresqlPool`, which registers it in the workflow's own.
350
+
321
351
  ## Versions
322
352
 
323
353
  CI publishes every version to npm as `@ontemper/sdk`; nobody publishes by hand. Workflow code keeps
@@ -331,9 +361,11 @@ npm install --save-exact @temper/workflow@npm:@ontemper/sdk@<version>
331
361
  A published version never changes. The workflow template and the examples pin one exact
332
362
  version; `pnpm sdk:pin` moves them all together.
333
363
 
334
- The package has eight entry points: `@temper/workflow`, `@temper/workflow/testing`,
364
+ The package has nine entry points: `@temper/workflow`, `@temper/workflow/testing`,
335
365
  `@temper/workflow/contract`, `@temper/workflow/sftp`, `@temper/workflow/sftp/testing`,
336
- `@temper/workflow/edi`, `@temper/workflow/as2`, and `@temper/workflow/as2/testing`. Only `/sftp` loads `ssh2`. `@temper/workflow/contract` holds the runtime Resources HttpApi and the
366
+ `@temper/workflow/edi`, `@temper/workflow/as2`, `@temper/workflow/as2/testing`, and `@temper/workflow/postgresql`.
367
+ Only `/sftp` loads `ssh2`, and only `/postgresql` loads `pg` and `ws` (optional peer dependencies).
368
+ `@temper/workflow/contract` holds the runtime Resources HttpApi and the
337
369
  manifest, trigger, and invocation schemas that the platform imports. Workflow code rarely needs it.
338
370
 
339
371
  ## Develop and release
package/dist/As2.d.ts CHANGED
@@ -2,9 +2,10 @@ import { Context, Effect, Layer } from 'effect';
2
2
  import { HttpClient, type HttpServerRequest, HttpServerResponse } from 'effect/http';
3
3
  import { type LookupAddresses } from './As2Destination.js';
4
4
  import { As2Error } from './As2Error.js';
5
- import { As2IdentityResource, As2PartnerResource } from './As2Resource.js';
5
+ import type { As2IdentityResource, As2PartnerResource } from './As2Resource.js';
6
6
  import { Invocation } from './Invocation.js';
7
7
  export { As2Error } from './As2Error.js';
8
+ export { as2FailureResponse } from './As2Wire.js';
8
9
  export { As2Route } from './As2Route.js';
9
10
  export type { LookupAddresses } from './As2Destination.js';
10
11
  export { As2IdentityResource, As2PartnerResource } from './As2Resource.js';
@@ -138,8 +139,6 @@ export declare const AS2_ASYNC_RECEIPT_PATH = "/as2/mdn";
138
139
  export declare const unquoteAs2Id: (value: string | undefined) => string;
139
140
  /** Runs `effect` on the exchange's verified trace; with none, on the current one. */
140
141
  export declare const withExchangeTrace: (customerTraceId: string | null) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
141
- /** Legacy `as2Endpoint`: a partner decides whether to resend from the status, so it gets the status and a generic message. */
142
- export declare const as2FailureResponse: (error: As2Error) => HttpServerResponse.HttpServerResponse;
143
142
  declare const As2_base: Context.ServiceClass<As2, "@temper/workflow/As2", As2Client>;
144
143
  /**
145
144
  * First-party AS2 on the workflow's `HttpClient`, logger, and Run token: `yield* As2` in a handler layer and
@@ -147,9 +146,13 @@ declare const As2_base: Context.ServiceClass<As2, "@temper/workflow/As2", As2Cli
147
146
  */
148
147
  export declare class As2 extends As2_base {
149
148
  static readonly layer: Layer.Layer<As2, never, HttpClient.HttpClient>;
150
- /** `layer` with a replaced name lookup for the async-MDN destination check. */
149
+ /**
150
+ * `layer` with a replaced name lookup for the async-MDN destination check, and optionally the runtime: `bun`
151
+ * applies partner TLS, proxies, and address pinning through the `fetch` options Bun takes.
152
+ */
151
153
  static readonly layerWith: (options: {
152
154
  readonly lookupAddresses: LookupAddresses;
155
+ readonly runtime?: 'bun' | 'fetch';
153
156
  }) => Layer.Layer<As2, never, HttpClient.HttpClient>;
154
157
  }
155
158
  //# sourceMappingURL=As2.d.ts.map
package/dist/As2.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"As2.d.ts","sourceRoot":"","sources":["../src/As2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"As2.d.ts","sourceRoot":"","sources":["../src/As2.ts"],"names":[],"mappings":"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"}
package/dist/As2.js CHANGED
@@ -1,13 +1,15 @@
1
- import { Config, Context, Duration, Effect, Layer, Option, Predicate, Redacted, Schema, Stream } from 'effect';
2
- import { FetchHttpClient, HttpClient, HttpClientError, HttpClientRequest, HttpServerResponse, } from 'effect/http';
3
- import { isPublicDestination, lookupAllAddresses } from './As2Destination.js';
1
+ import { Context, Duration, Effect, Layer, Option, Redacted, Schema, Stream } from 'effect';
2
+ import { FetchHttpClient, HttpClient, HttpClientRequest, HttpServerResponse, } from 'effect/http';
3
+ import { lookupAllAddresses, publicAddressesOf } from './As2Destination.js';
4
4
  import { As2Error } from './As2Error.js';
5
- import { As2IdentityResource, As2PartnerResource } from './As2Resource.js';
5
+ import { bunFetch, deliveryTransport, pinnedDestination } from './As2Transport.js';
6
+ import { AcknowledgeAnswer, answerAs2Failures, as2Line, bytesOf, CAPACITY_BACKOFF_MS, CAPACITY_RETRIES, ConfirmAnswer, endOf, endpointOf, ErrorAnswer, fromBase64, headerOf, isEmptyBody, isHttpUrl, MAX_PARTNER_RESPONSE_BYTES, originOf, PackAnswer, partiesOf, present, protocolHeaders, ReceiveAnswer, Settings, SettleAnswer, symbolicCause, toBase64, wireParties, } from './As2Wire.js';
6
7
  import { isTransientStatus } from './EdiError.js';
7
8
  import { Invocation } from './Invocation.js';
8
9
  import { CurrentLogContext, TRACE_HEADER, withSpanLines } from './LogContext.js';
9
10
  import { registerSecrets } from './Redaction.js';
10
11
  export { As2Error } from './As2Error.js';
12
+ export { as2FailureResponse } from './As2Wire.js';
11
13
  export { As2Route } from './As2Route.js';
12
14
  export { As2IdentityResource, As2PartnerResource } from './As2Resource.js';
13
15
  /** The route an async receipt is posted to, under the sending workflow's own URL. */
@@ -26,191 +28,6 @@ export const withExchangeTrace = (customerTraceId) => (effect) => customerTraceI
26
28
  ...fiber.getRef(CurrentLogContext),
27
29
  traceId: customerTraceId,
28
30
  }));
29
- // Must stay in lockstep with AS2_HEADER_NAMES in apps/api/src/Platform/As2/Domain.ts; scripts/check-sdk-consistency.ts pins the sets.
30
- const AS2_HEADERS = new Set([
31
- 'as2-from',
32
- 'as2-to',
33
- 'as2-version',
34
- 'content-transfer-encoding',
35
- 'content-type',
36
- 'disposition-notification-options',
37
- 'disposition-notification-to',
38
- 'message-id',
39
- 'mime-version',
40
- 'receipt-delivery-option',
41
- 'subject',
42
- ]);
43
- /** Inbound headers are untrusted and may carry credentials: only protocol headers reach the platform. */
44
- const protocolHeaders = (headers) => Object.fromEntries(Object.entries(headers).flatMap(([name, value]) => value !== undefined && AS2_HEADERS.has(name.toLowerCase()) ? [[name.toLowerCase(), value]] : []));
45
- const headerOf = (headers, name) => Object.entries(headers).find(([key]) => key.toLowerCase() === name)?.[1];
46
- /** A partner's largest legitimate answer is a signed MDN of some KiB; a gateway that streams more fails the delivery. */
47
- const MAX_PARTNER_RESPONSE_BYTES = 8 * 1024 * 1024;
48
- /** ENGINE_BUSY answers 503 before any work, so a bounded retry is safe; every AS2 call is idempotent. */
49
- const CAPACITY_RETRIES = 3;
50
- const CAPACITY_BACKOFF_MS = 500;
51
- const HeaderMap = Schema.Record(Schema.String, Schema.String);
52
- const MdnMode = Schema.Literals(['sync', 'async']);
53
- const ReceiveAnswer = Schema.Union([
54
- Schema.Struct({
55
- kind: Schema.Literal('received'),
56
- messageId: Schema.String,
57
- payloadB64: Schema.String,
58
- payloadContentType: Schema.NullOr(Schema.String),
59
- mic: Schema.String,
60
- deliveryToken: Schema.String,
61
- mdnMode: MdnMode,
62
- customerTraceId: Schema.NullOr(Schema.String),
63
- }),
64
- Schema.Struct({
65
- kind: Schema.Literal('duplicate'),
66
- messageId: Schema.String,
67
- mic: Schema.String,
68
- mdnHeaders: Schema.NullOr(HeaderMap),
69
- mdnBodyB64: Schema.NullOr(Schema.String),
70
- mdnMode: MdnMode,
71
- mdnDeliveryUrl: Schema.NullOr(Schema.String),
72
- customerTraceId: Schema.NullOr(Schema.String),
73
- }),
74
- Schema.Struct({ kind: Schema.Literal('inFlight'), messageId: Schema.String }),
75
- Schema.Struct({ kind: Schema.Literal('parked'), messageId: Schema.String }),
76
- ]);
77
- const AcknowledgeAnswer = Schema.Struct({
78
- messageId: Schema.String,
79
- mic: Schema.String,
80
- mdnHeaders: Schema.NullOr(HeaderMap),
81
- mdnBodyB64: Schema.NullOr(Schema.String),
82
- mdnMode: MdnMode,
83
- mdnDeliveryUrl: Schema.NullOr(Schema.String),
84
- alreadyAcknowledged: Schema.Boolean,
85
- customerTraceId: Schema.NullOr(Schema.String),
86
- });
87
- const PackAnswer = Schema.Struct({
88
- messageId: Schema.String,
89
- as2Headers: HeaderMap,
90
- envelopeBodyB64: Schema.String,
91
- mic: Schema.String,
92
- partnerUrl: Schema.NullOr(Schema.String),
93
- mdnMode: Schema.Literals(['none', 'sync', 'async']),
94
- replayed: Schema.Boolean,
95
- customerTraceId: Schema.NullOr(Schema.String),
96
- });
97
- const ConfirmAnswer = Schema.Struct({
98
- outcome: Schema.Literals(['confirmed', 'failed']),
99
- messageId: Schema.String,
100
- disposition: Schema.NullOr(Schema.String),
101
- receivedMic: Schema.NullOr(Schema.String),
102
- packMic: Schema.NullOr(Schema.String),
103
- micMatched: Schema.Boolean,
104
- originatingTraceId: Schema.NullOr(Schema.String),
105
- });
106
- const SettleAnswer = Schema.Struct({
107
- outcome: Schema.Literal('confirmed'),
108
- messageId: Schema.String,
109
- customerTraceId: Schema.NullOr(Schema.String),
110
- });
111
- const ErrorAnswer = Schema.Struct({
112
- error: Schema.Struct({ code: Schema.String, message: Schema.String }),
113
- });
114
- const Settings = Config.all({
115
- apiUrl: Config.option(Config.String('UNNBOUND_API_URL')),
116
- // Hosts other than Firecracker pass no Run token; their workflow token is in the environment.
117
- envToken: Config.option(Config.Redacted('TEMPER_RUN_TOKEN')),
118
- sandboxToken: Config.option(Config.Redacted('UNNBOUND_SANDBOX_JWT')),
119
- workflowUrl: Config.option(Config.String('UNNBOUND_WORKFLOW_URL')),
120
- });
121
- const present = (token) => Option.filter(token, (value) => Redacted.value(value).length > 0);
122
- const toBase64 = (bytes) => Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString('base64');
123
- const fromBase64 = (text) => new Uint8Array(Buffer.from(text, 'base64'));
124
- const bytesOf = (value) => Predicate.isString(value) ? new TextEncoder().encode(value) : value;
125
- const keyPairSecrets = (slots) => [
126
- slots.privateKey,
127
- slots.secondaryPrivateKey,
128
- ];
129
- const tlsSecrets = (tls) => [
130
- tls?.clientKey,
131
- tls?.clientKeyPassphrase,
132
- ];
133
- /** Every secret field of the two records: the wire carries them in clear, so each becomes a log mask first. */
134
- const secretsOf = ({ partner, identity }) => [
135
- ...(identity.keys.mode === 'combined'
136
- ? keyPairSecrets(identity.keys)
137
- : [...keyPairSecrets(identity.keys.signing), ...keyPairSecrets(identity.keys.encryption)]),
138
- partner.httpAuth.type === 'basic' ? partner.httpAuth.password : undefined,
139
- ...tlsSecrets(partner.tls),
140
- partner.proxy?.auth.type === 'basic' ? partner.proxy.auth.password : undefined,
141
- ...tlsSecrets(partner.proxy?.tls),
142
- ].flatMap((secret) => (secret === undefined ? [] : [Redacted.value(secret)]));
143
- const partiesOf = (operation, options) => Effect.gen(function* () {
144
- const identity = options.identity ?? options.partner.identity;
145
- // The decoded record always carries one; a hand-built value may not.
146
- if (!Predicate.isObject(identity)) {
147
- return yield* new As2Error({
148
- operation,
149
- code: 'NOT_CONFIGURED',
150
- retryable: false,
151
- message: 'An AS2 identity is required: pass one, or resolve a partner record that references one.',
152
- });
153
- }
154
- return { partner: options.partner, identity };
155
- });
156
- /** The platform wants the partner without its inlined identity, and the identity beside it. */
157
- const wireParties = ({ partner, identity }) => Effect.gen(function* () {
158
- yield* registerSecrets(secretsOf({ partner, identity }));
159
- const { identity: _inlined, ...wirePartner } = Schema.encodeSync(As2PartnerResource)(partner);
160
- return { partner: wirePartner, identity: Schema.encodeSync(As2IdentityResource)(identity) };
161
- });
162
- const isHttpUrl = (value) => {
163
- if (!URL.canParse(value))
164
- return false;
165
- const protocol = new URL(value).protocol;
166
- return protocol === 'http:' || protocol === 'https:';
167
- };
168
- // Userinfo, query, and fragment can carry credentials, so they never reach a log line.
169
- const endpointOf = (url) => {
170
- if (!isHttpUrl(url))
171
- return {};
172
- const parsed = new URL(url);
173
- const scheme = parsed.protocol === 'https:' ? 'https' : 'http';
174
- const port = parsed.port !== '' ? Number(parsed.port) : scheme === 'https' ? 443 : 80;
175
- return { host: parsed.host, url: `${parsed.protocol}//${parsed.hostname}:${port}${parsed.pathname}`, scheme, port };
176
- };
177
- // A partner-chosen async-MDN URL can carry a credential in its path, so only its origin is logged.
178
- const originOf = (url) => {
179
- const endpoint = endpointOf(url);
180
- if (endpoint.scheme === undefined)
181
- return {};
182
- return { ...endpoint, url: `${endpoint.scheme}://${new URL(url).hostname}:${endpoint.port}` };
183
- };
184
- const as2Line = (fields) => {
185
- const as2 = {};
186
- for (const [key, value] of Object.entries(fields))
187
- if (value !== undefined)
188
- as2[key] = value;
189
- return { type: 'as2', as2 };
190
- };
191
- /** Answers each `As2Error` with the status a partner reads; every other failure passes through unchanged. */
192
- const answerAs2Failures = (effect) => Effect.catch(effect, (error) => error instanceof As2Error
193
- ? Effect.succeed(as2FailureResponse(error))
194
- : // SAFETY: the instanceof check above took every As2Error out of this branch.
195
- Effect.fail(error));
196
- const isEmptyBody = (error) => HttpClientError.isHttpClientError(error) && error.reason._tag === 'EmptyBodyError';
197
- /** The outcome fields of a span's end line: none while it runs, else its outcome and, on failure, the error code. */
198
- const endOf = (outcome, success) => outcome === undefined
199
- ? {}
200
- : outcome.error === undefined
201
- ? { outcome: success }
202
- : { outcome: 'failed', errorCode: outcome.error instanceof As2Error ? outcome.error.code : 'UNKNOWN' };
203
- /** A fetch error can quote the URL, so a failure keeps only a symbolic code from its cause chain. */
204
- const symbolicCause = (error) => {
205
- let current = error;
206
- for (let depth = 0; depth < 8 && current !== undefined; depth++) {
207
- const code = Predicate.hasProperty(current, 'code') ? current.code : undefined;
208
- if (Predicate.isString(code) && /^[A-Z][A-Z0-9_]*$/.test(code))
209
- return code;
210
- current = current.cause instanceof Error ? current.cause : undefined;
211
- }
212
- return 'unknown';
213
- };
214
31
  const retryLater = () => HttpServerResponse.text('AS2 message is being processed; retry later', {
215
32
  status: 503,
216
33
  headers: { 'retry-after': '60' },
@@ -222,18 +39,7 @@ const receiptResponse = (mdnMode, mdn) => mdnMode === 'async' || mdn === null
222
39
  headers: mdn.headers,
223
40
  contentType: headerOf(mdn.headers, 'content-type'),
224
41
  });
225
- const RETRYABLE_WIRE = [502, 503, 504];
226
- const PERMANENT_WIRE = [400, 413, 422];
227
- /** Legacy `as2Endpoint`: a partner decides whether to resend from the status, so it gets the status and a generic message. */
228
- export const as2FailureResponse = (error) => {
229
- const status = error.status;
230
- if (status !== undefined && RETRYABLE_WIRE.includes(status))
231
- return HttpServerResponse.jsonUnsafe({ message: 'AS2 message could not be processed; retry later' }, { status });
232
- if (status !== undefined && PERMANENT_WIRE.includes(status))
233
- return HttpServerResponse.jsonUnsafe({ message: 'AS2 message was rejected and should not be resent' }, { status });
234
- return HttpServerResponse.jsonUnsafe({ message: 'Internal server error' }, { status: 500 });
235
- };
236
- const makeAs2 = (lookupAddresses) => Effect.gen(function* () {
42
+ const makeAs2 = (lookupAddresses, bun) => Effect.gen(function* () {
237
43
  const client = yield* HttpClient.HttpClient;
238
44
  const settings = (operation) => Settings.pipe(Effect.mapError((cause) => new As2Error({
239
45
  operation,
@@ -486,18 +292,22 @@ const makeAs2 = (lookupAddresses) => Effect.gen(function* () {
486
292
  const parsed = new URL(url);
487
293
  if (parsed.username !== '' || parsed.password !== '')
488
294
  return yield* refuseMdn('MDN_DELIVERY_FAILED', 'The MDN destination carries credentials.');
489
- const allowed = yield* Effect.tryPromise({
490
- try: () => isPublicDestination(parsed.hostname, lookupAddresses),
295
+ const addresses = yield* Effect.tryPromise({
296
+ try: () => publicAddressesOf(parsed.hostname, lookupAddresses),
491
297
  catch: (cause) => deliveryFailure('MDN_DELIVERY_FAILED', 'deliverMdn', cause instanceof Error ? cause : new Error('lookup failed')),
492
298
  });
493
- if (!allowed) {
299
+ const checked = addresses?.[0];
300
+ if (checked === undefined) {
494
301
  return yield* refuseMdn('MDN_DESTINATION_BLOCKED', 'The MDN destination resolves to a private or reserved address.');
495
302
  }
303
+ // On Bun the POST goes to the checked address, as legacy dialed it, so a name that rebinds cannot redirect it.
304
+ const pinned = bun ? pinnedDestination(parsed, checked) : undefined;
305
+ const outbound = { redirect: 'manual', ...pinned?.transport };
496
306
  const response = yield* client
497
- .execute(HttpClientRequest.post(url).pipe(HttpClientRequest.bodyUint8Array(mdn.body, headerOf(mdn.headers, 'content-type')), HttpClientRequest.setHeaders(mdn.headers)))
307
+ .execute(HttpClientRequest.post(pinned?.url ?? url).pipe(HttpClientRequest.bodyUint8Array(mdn.body, headerOf(mdn.headers, 'content-type')), HttpClientRequest.setHeaders(mdn.headers), (request) => (pinned === undefined ? request : HttpClientRequest.setHeader(request, 'host', pinned.host))))
498
308
  .pipe(Effect.provideService(HttpClient.TracerDisabledWhen, () => true),
499
309
  // The partner controls the URL; a redirect would send the POST where the destination check never looked.
500
- Effect.provideService(FetchHttpClient.RequestInit, { redirect: 'manual' }), Effect.mapError((cause) => deliveryFailure('MDN_DELIVERY_FAILED', 'deliverMdn', cause)));
310
+ Effect.provideService(FetchHttpClient.RequestInit, outbound), Effect.mapError((cause) => deliveryFailure('MDN_DELIVERY_FAILED', 'deliverMdn', cause)));
501
311
  status = response.status;
502
312
  yield* readCapped(response, 'deliverMdn', 'MDN_DELIVERY_FAILED');
503
313
  if (response.status < 200 || response.status >= 300) {
@@ -520,7 +330,6 @@ const makeAs2 = (lookupAddresses) => Effect.gen(function* () {
520
330
  })), Effect.asVoid);
521
331
  };
522
332
  const refuse = (code, message) => Effect.fail(new As2Error({ operation: 'send', code, retryable: false, message }));
523
- const hasTls = (tls) => tls !== undefined && Object.values(tls).some((value) => value !== undefined);
524
333
  /** Checks that run before pack: pack records a pending message, so a refusal after it would strand that row. */
525
334
  const checkDestination = (url, options) => Effect.gen(function* () {
526
335
  const { partner } = options;
@@ -530,18 +339,18 @@ const makeAs2 = (lookupAddresses) => Effect.gen(function* () {
530
339
  if (parsed.username !== '' || parsed.password !== '')
531
340
  return yield* refuse('INVALID_PARTNER_URL', 'The partner URL must not carry credentials.');
532
341
  const basic = partner.httpAuth.type === 'basic';
342
+ const credentialed = basic || partner.tls?.clientCertificate !== undefined || partner.tls?.clientKey !== undefined;
533
343
  const configured = partner.url;
534
344
  if (options.url !== undefined &&
535
- basic &&
345
+ credentialed &&
536
346
  (configured === undefined || parsed.origin !== new URL(configured).origin)) {
537
347
  return yield* refuse('PARTNER_CREDENTIAL_ORIGIN_MISMATCH', 'Partner credentials go only to the origin of the partner URL.');
538
348
  }
539
349
  if (basic && parsed.protocol !== 'https:')
540
350
  return yield* refuse('INSECURE_CREDENTIAL_TRANSPORT', 'HTTP Basic delivery auth requires an https:// partner URL.');
541
- // The workflow fetch sends no client certificate, custom CA, SNI name, or proxy: refusing beats skipping them.
542
- if (hasTls(partner.tls) || partner.proxy !== undefined) {
543
- return yield* refuse('UNSUPPORTED_TRANSPORT', 'Partner TLS settings and proxies are not supported by @temper/workflow AS2 yet.');
544
- }
351
+ const transport = deliveryTransport(partner, parsed, bun);
352
+ if (transport.kind === 'refused')
353
+ return yield* refuse(transport.code, transport.message);
545
354
  });
546
355
  const receiptUrlFor = (partner, options) => Effect.gen(function* () {
547
356
  if (partner.receipt !== 'async')
@@ -565,13 +374,22 @@ const makeAs2 = (lookupAddresses) => Effect.gen(function* () {
565
374
  return Effect.gen(function* () {
566
375
  if (auth.type === 'basic')
567
376
  yield* registerSecrets([Redacted.value(auth.password)]);
377
+ const transport = deliveryTransport(parties.partner, new URL(url), bun);
378
+ if (transport.kind === 'refused') {
379
+ return yield* new As2Error({
380
+ operation: 'send',
381
+ code: transport.code,
382
+ retryable: false,
383
+ message: transport.message,
384
+ });
385
+ }
386
+ // AS2 endpoints are fixed, agreed URLs; a redirect would send the envelope where the partner's gateway chose.
387
+ const outbound = { redirect: 'manual', ...transport.transport };
568
388
  const response = yield* client
569
389
  .execute(HttpClientRequest.post(url).pipe(HttpClientRequest.bodyUint8Array(envelope, headerOf(as2Headers, 'content-type')), HttpClientRequest.setHeaders(as2Headers), (request) => auth.type === 'basic'
570
390
  ? HttpClientRequest.basicAuth(request, auth.username, Redacted.value(auth.password))
571
391
  : request))
572
- .pipe(Effect.provideService(HttpClient.TracerDisabledWhen, () => true),
573
- // AS2 endpoints are fixed, agreed URLs; a redirect would send the envelope where the partner's gateway chose.
574
- Effect.provideService(FetchHttpClient.RequestInit, { redirect: 'manual' }), Effect.mapError((cause) => deliveryFailure('DELIVERY_FAILED', 'send', cause)));
392
+ .pipe(Effect.provideService(HttpClient.TracerDisabledWhen, () => true), Effect.provideService(FetchHttpClient.RequestInit, outbound), Effect.mapError((cause) => deliveryFailure('DELIVERY_FAILED', 'send', cause)));
575
393
  status = response.status;
576
394
  const body = yield* readCapped(response, 'send', 'DELIVERY_FAILED');
577
395
  if (response.status < 200 || response.status >= 300) {
@@ -701,8 +519,11 @@ const makeAs2 = (lookupAddresses) => Effect.gen(function* () {
701
519
  * provide `As2.layer`. All S/MIME crypto runs on the platform; the SDK carries bytes and records.
702
520
  */
703
521
  export class As2 extends Context.Service()('@temper/workflow/As2') {
704
- static layer = Layer.effect(As2, makeAs2(lookupAllAddresses));
705
- /** `layer` with a replaced name lookup for the async-MDN destination check. */
706
- static layerWith = (options) => Layer.effect(As2, makeAs2(options.lookupAddresses));
522
+ static layer = Layer.effect(As2, makeAs2(lookupAllAddresses, bunFetch()));
523
+ /**
524
+ * `layer` with a replaced name lookup for the async-MDN destination check, and optionally the runtime: `bun`
525
+ * applies partner TLS, proxies, and address pinning through the `fetch` options Bun takes.
526
+ */
527
+ static layerWith = (options) => Layer.effect(As2, makeAs2(options.lookupAddresses, (options.runtime ?? (bunFetch() ? 'bun' : 'fetch')) === 'bun'));
707
528
  }
708
529
  //# sourceMappingURL=As2.js.map
package/dist/As2.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"As2.js","sourceRoot":"","sources":["../src/As2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC/G,OAAO,EACL,eAAe,EACf,UAAU,EACV,eAAe,EACf,iBAAiB,EAGjB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,mBAAmB,EAAwB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EAAE,QAAQ,EAAqB,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAoC,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACnH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AA8I3E,qFAAqF;AACrF,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAC;AAEjD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAyB,EAAU,EAAE;IAChE,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IAC7F,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,qFAAqF;AACrF,MAAM,CAAC,MAAM,iBAAiB,GAC5B,CAAC,eAA8B,EAAE,EAAE,CACnC,CAAU,MAA8B,EAA0B,EAAE,CAClE,eAAe,KAAK,IAAI;IACtB,CAAC,CAAC,MAAM;IACR,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CACzB,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE;QAC/C,GAAG,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAClC,OAAO,EAAE,eAAe;KACzB,CAAC,CACH,CAAC;AAEV,sIAAsI;AACtI,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,UAAU;IACV,QAAQ;IACR,aAAa;IACb,2BAA2B;IAC3B,cAAc;IACd,kCAAkC;IAClC,6BAA6B;IAC7B,YAAY;IACZ,cAAc;IACd,yBAAyB;IACzB,SAAS;CACV,CAAC,CAAC;AAEH,yGAAyG;AACzG,MAAM,eAAe,GAAG,CAAC,OAAqD,EAAE,EAAE,CAChF,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAA2B,EAAE,CACzE,KAAK,KAAK,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAChG,CACF,CAAC;AAEJ,MAAM,QAAQ,GAAG,CAAC,OAAyC,EAAE,IAAY,EAAsB,EAAE,CAC/F,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE3E,yHAAyH;AACzH,MAAM,0BAA0B,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACnD,yGAAyG;AACzG,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACnD,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;IACjC,MAAM,CAAC,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;QAChC,SAAS,EAAE,MAAM,CAAC,MAAM;QACxB,UAAU,EAAE,MAAM,CAAC,MAAM;QACzB,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAChD,GAAG,EAAE,MAAM,CAAC,MAAM;QAClB,aAAa,EAAE,MAAM,CAAC,MAAM;QAC5B,OAAO,EAAE,OAAO;QAChB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;KAC9C,CAAC;IACF,MAAM,CAAC,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACjC,SAAS,EAAE,MAAM,CAAC,MAAM;QACxB,GAAG,EAAE,MAAM,CAAC,MAAM;QAClB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;QACpC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QACxC,OAAO,EAAE,OAAO;QAChB,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5C,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;KAC9C,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAC7E,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;CAC5E,CAAC,CAAC;AACH,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,OAAO;IAChB,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5C,mBAAmB,EAAE,MAAM,CAAC,OAAO;IACnC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;CAC9C,CAAC,CAAC;AACH,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,UAAU,EAAE,SAAS;IACrB,eAAe,EAAE,MAAM,CAAC,MAAM;IAC9B,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,QAAQ,EAAE,MAAM,CAAC,OAAO;IACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;CAC9C,CAAC,CAAC;AACH,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACjD,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC,OAAO;IAC1B,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;CACjD,CAAC,CAAC;AACH,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;CAC9C,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;CACtE,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACxD,8FAA8F;IAC9F,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAC5D,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IACpE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;CACnE,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,CAAC,KAAuC,EAAE,EAAE,CAC1D,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAEpE,MAAM,QAAQ,GAAG,CAAC,KAAiB,EAAE,EAAE,CACrC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACnF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAc,EAAE,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC7F,MAAM,OAAO,GAAG,CAAC,KAA0B,EAAc,EAAE,CACzD,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAItE,MAAM,cAAc,GAAG,CAAC,KAA6E,EAAE,EAAE,CAAC;IACxG,KAAK,CAAC,UAAU;IAChB,KAAK,CAAC,mBAAmB;CAC1B,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,GAAuF,EAAE,EAAE,CAAC;IAC9G,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,mBAAmB;CACzB,CAAC;AAEF,+GAA+G;AAC/G,MAAM,SAAS,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAW,EAAiB,EAAE,CAClE;IACE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU;QACnC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC/B,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5F,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;IACzE,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1B,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;IAC9E,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;CAClC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAOhF,MAAM,SAAS,GAAG,CAChB,SAAuB,EACvB,OAAsG,EACtG,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,QAAQ,GAAoC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC/F,qEAAqE;IACrE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC;YACzB,SAAS;YACT,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,yFAAyF;SACnG,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAoB,CAAC;AAClE,CAAC,CAAC,CAAC;AAEL,+FAA+F;AAC/F,MAAM,WAAW,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAW,EAAE,EAAE,CACrD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,KAAK,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC;IAC9F,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC9F,CAAC,CAAC,CAAC;AAEL,MAAM,SAAS,GAAG,CAAC,KAAa,EAAW,EAAE;IAC3C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;IACzC,OAAO,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,QAAQ,CAAC;AACvD,CAAC,CAAC;AAIF,uFAAuF;AACvF,MAAM,UAAU,GAAG,CAAC,GAAW,EAAY,EAAE;IAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACtH,CAAC,CAAC;AAEF,mGAAmG;AACnG,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAY,EAAE;IACzC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAC7C,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;AAChG,CAAC,CAAC;AAyBF,MAAM,OAAO,GAAG,CAAC,MAA0C,EAAa,EAAE;IACxE,MAAM,GAAG,GAA8C,EAAE,CAAC;IAC1D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,IAAI,KAAK,KAAK,SAAS;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC7F,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC9B,CAAC,CAAC;AAEF,6GAA6G;AAC7G,MAAM,iBAAiB,GAAG,CACxB,MAA8B,EACqD,EAAE,CACrF,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAC7B,KAAK,YAAY,QAAQ;IACvB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC,6EAA6E;QAC7E,MAAM,CAAC,IAAI,CAAC,KAA6B,CAAC,CAC/C,CAAC;AAEJ,MAAM,WAAW,GAAG,CAAC,KAAiD,EAAW,EAAE,CACjF,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,gBAAgB,CAAC;AAErF,qHAAqH;AACrH,MAAM,KAAK,GAAG,CAAI,OAAmC,EAAE,OAAiB,EAAE,EAAE,CAC1E,OAAO,KAAK,SAAS;IACnB,CAAC,CAAC,EAAE;IACJ,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS;QAC3B,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE;QACtB,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,YAAY,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAE7G,qGAAqG;AACrG,MAAM,aAAa,GAAG,CAAC,KAAY,EAAU,EAAE;IAC7C,IAAI,OAAO,GAAsB,KAAK,CAAC;IACvC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,OAAO,KAAK,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC;QAChE,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/E,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5E,OAAO,GAAG,OAAO,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,GAAG,EAAE,CACtB,kBAAkB,CAAC,IAAI,CAAC,6CAA6C,EAAE;IACrE,MAAM,EAAE,GAAG;IACX,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;CACjC,CAAC,CAAC;AAEL,MAAM,eAAe,GAAG,CAAC,OAAyB,EAAE,GAAkB,EAAE,EAAE,CACxE,OAAO,KAAK,OAAO,IAAI,GAAG,KAAK,IAAI;IACjC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC3C,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE;QACtC,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC;KACnD,CAAC,CAAC;AAET,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACvC,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEvC,8HAA8H;AAC9H,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAe,EAAyC,EAAE;IAC3F,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,IAAI,MAAM,KAAK,SAAS,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC;QACzD,OAAO,kBAAkB,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,iDAAiD,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACnH,IAAI,MAAM,KAAK,SAAS,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC;QACzD,OAAO,kBAAkB,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,mDAAmD,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACrH,OAAO,kBAAkB,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AAC9F,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,eAAgC,EAAE,EAAE,CACnD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;IAE5C,MAAM,QAAQ,GAAG,CAAC,SAAuB,EAAE,EAAE,CAC3C,QAAQ,CAAC,IAAI,CACX,MAAM,CAAC,QAAQ,CACb,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,QAAQ,CAAC;QACX,SAAS;QACT,IAAI,EAAE,gBAAgB;QACtB,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,gCAAgC,KAAK,CAAC,OAAO,EAAE;KACzD,CAAC,CACL,CACF,CAAC;IAEJ,0GAA0G;IAC1G,MAAM,QAAQ,GAAG,CAAO,SAAuB,EAAE,IAAY,EAAE,IAAO,EAAE,MAAyB,EAAE,EAAE,CACnG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrE,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC;gBACzB,SAAS;gBACT,IAAI,EAAE,gBAAgB;gBACtB,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,8DAA8D;aACxE,CAAC,CAAC;QACL,CAAC;QACD,MAAM,KAAK,GACT,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YACzB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YAC/B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QAClF,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC;gBACzB,SAAS;gBACT,IAAI,EAAE,gBAAgB;gBACtB,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,8DAA8D;aACxE,CAAC,CAAC;QACL,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,wBAAwB,IAAI,EAAE,CAAC;QAC/E,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAC9C,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAC1C,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CACvC,CAAC;QACF,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI;YAClD,4GAA4G;YAC5G,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;YAChE,iEAAiE;YACjE,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EACzE,MAAM,CAAC,QAAQ,CACb,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,QAAQ,CAAC;gBACX,SAAS;gBACT,IAAI,EAAE,eAAe;gBACrB,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,mCAAmC,aAAa,CAAC,KAAK,CAAC,EAAE;aACnE,CAAC,CACL,CACF,CAAC;YACF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,GAAG,gBAAgB,EAAE,CAAC;gBAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;gBACtE,MAAM,IAAI,GACR,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC;oBACtC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,IAAI;oBAC9B,CAAC,CAAC,mBAAmB,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;gBAC1C,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC3C,SAAS;YACX,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CACvC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,EACvD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAChC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CACtC,CAAC;gBACF,OAAO,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC;oBACzB,SAAS;oBACT,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC;oBACxF,SAAS,EAAE,iBAAiB,CAAC,MAAM,CAAC;oBACpC,MAAM;oBACN,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,iCAAiC,MAAM,GAAG;iBACxE,CAAC,CAAC;YACL,CAAC;YACD,OAAO,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAC9B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,EAClD,MAAM,CAAC,QAAQ,CACb,GAAG,EAAE,CACH,IAAI,QAAQ,CAAC;gBACX,SAAS;gBACT,IAAI,EAAE,sBAAsB;gBAC5B,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,OAAO,EAAE,8CAA8C;aACxD,CAAC,CACL,CACF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,MAAM,KAAK,GAAG,CACZ,OAAgD,EAChD,OAAsB,EACtB,SAAuB,EACiB,EAAE;QAC1C,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtE,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACzC,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,QAAQ,CAAC;gBACX,SAAS;gBACT,IAAI,EAAE,sBAAsB;gBAC5B,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,6CAA6C;aACvD,CAAC,CACH,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC,CAAC;IAEF,6EAA6E;IAC7E,MAAM,SAAS,GAAG,CAChB,OAAe,EACf,MAA0C,EAC1C,eAAe,GAAkB,IAAI,EACrC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC;IAEvF,MAAM,IAAI,GAAG,CAAC,OAAe,EAAE,MAA0C,EAAE,EAAE,CAC3E,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAExE,MAAM,WAAW,GAAG,CAAC,aAAqB,EAA2D,EAAE,CACrG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,EAAE,EAAE,aAAa,EAAE,EAAE,iBAAiB,CAAC,CAAC;QACnG,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC9E,KAAK,CAAC,CAAC,SAAS,CACd,oBAAoB,EACpB;YACE,SAAS,EAAE,cAAc;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,WAAW;YACpB,QAAQ,EAAE,MAAM,CAAC,mBAAmB;YACpC,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU;SACjC,EACD,MAAM,CAAC,eAAe,CACvB,CAAC;QACF,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG;YACH,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC;SAClB,CAAC;IACjC,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,IAAI,CAAC,6BAA6B,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAC1F,CACF,CAAC;IAEJ,MAAM,WAAW,GAAG,CAAC,SAAuB,EAAE,OAA4C,EAAE,EAAE,CAC5F,OAAO,CAAC,WAAW,CAAC,IAAI,CACtB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,EAC9C,MAAM,CAAC,QAAQ,CACb,GAAG,EAAE,CACH,IAAI,QAAQ,CAAC;QACX,SAAS;QACT,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,qCAAqC;KAC/C,CAAC,CACL,CACF,CAAC;IAEJ,MAAM,OAAO,GAAG,CAAC,OAA0B,EAAyD,EAAE,CACpG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAChF,MAAM,eAAe,GAAG,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAClF,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE,eAAe;YACvB,IAAI,EAAE,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACxF,QAAQ,EAAE,OAAO,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;YAC3D,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;YAC5B,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;YAC9B,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;QACF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACxC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;YACzE,OAAO,KAAK,CAAC,CAAC,QAAQ,CACpB,SAAS,EACT,SAAS,EACT,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,EAC3F,aAAa,CACd,CAAC;QACJ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACvG,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3D,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,qBAAqB,EAAE;gBACvG,GAAG,MAAM;gBACT,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,MAAM,CAAC,IAAI;aACrB,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAuB,CAAC;QACzG,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC1E,KAAK,CAAC,CAAC,SAAS,CACd,iCAAiC,EACjC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,EACzF,MAAM,CAAC,eAAe,CACvB,CAAC;YACF,OAAO;gBACL,IAAI,EAAE,WAAW;gBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,GAAG;gBACH,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,mBAAmB,EAAE,IAAI;gBACzB,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC;aACxB,CAAC;QAC3B,CAAC;QACD,KAAK,CAAC,CAAC,SAAS,CACd,uBAAuB,EACvB;YACE,GAAG,MAAM;YACT,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,MAAM,CAAC,kBAAkB,IAAI,SAAS;YACnD,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,UAAU;SACpB,EACD,MAAM,CAAC,eAAe,CACvB,CAAC;QACF,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;YACtC,WAAW,EAAE,MAAM,CAAC,kBAAkB;YACtC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC;SACzB,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEL,MAAM,OAAO,GAAG,CAAC,OAA0B,EAAyD,EAAE,CACpG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,GAAG,GAAW,OAAO,CAAC,GAAG,IAAI;YACjC,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE;YACvC,IAAI,EAAE,KAAK,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC;SACrD,CAAC;QACF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACxC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;YACzE,OAAO,KAAK,CAAC,CAAC,QAAQ,CACpB,SAAS,EACT,SAAS,EACT;gBACE,GAAG,OAAO;gBACV,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,IAAI;gBACpD,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;gBACxC,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;aAC/B,EACD,aAAa,CACd,CAAC;QACJ,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,IAAI,CAAC,8BAA8B,EAAE;YACnC,SAAS,EAAE,YAAY;YACvB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;YAC9B,SAAS,EAAE,KAAK,CAAC,IAAI;SACtB,CAAC,CACH,CACF,CAAC;QACF,4GAA4G;QAC5G,MAAM,IAAI,GAAG,OAAO,CAAC;YACnB,SAAS,EAAE,YAAY;YACvB,iBAAiB,EAAE,MAAM,CAAC,SAAS;YACnC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;YAC9B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS;YAC5C,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,SAAS;YAC1D,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU;SAChC,CAAC,CAAC;QACH,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,KAAK,WAAW;YACnC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC;YAC3C,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;QACjD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEL,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,SAAuB,EAAE,KAAY,EAAE,EAAE,CAC9E,IAAI,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAEzG,oFAAoF;IACpF,MAAM,UAAU,GAAG,CAAC,QAA+C,EAAE,SAAuB,EAAE,IAAY,EAAE,EAAE,CAC5G,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;YAC5B,SAAS;YACT,IAAI;YACJ,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,OAAO,EAAE,uCAAuC;SACjD,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,0BAA0B;YAAE,OAAO,KAAK,CAAC,CAAC,QAAQ,CAAC;QAC/F,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAClD,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,IAAI,GAAG,0BAA0B,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACjF,CAAC,CAAC,CAAC,IAAI;QACL,qFAAqF;QACrF,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAC9C,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAC1G,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC;QAC7B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEL,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,GAAW,EAAiC,EAAE;QAC7E,IAAI,MAA0B,CAAC;QAC/B,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,EAAE,CAClD,MAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1F,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;gBACjB,OAAO,KAAK,CAAC,CAAC,SAAS,CAAC,qBAAqB,EAAE,4CAA4C,CAAC,CAAC;YAC/F,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,MAAM,CAAC,QAAQ,KAAK,EAAE,IAAI,MAAM,CAAC,QAAQ,KAAK,EAAE;gBAClD,OAAO,KAAK,CAAC,CAAC,SAAS,CAAC,qBAAqB,EAAE,0CAA0C,CAAC,CAAC;YAC7F,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;gBACvC,GAAG,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC;gBAChE,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,eAAe,CACb,qBAAqB,EACrB,YAAY,EACZ,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAC5D;aACJ,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,KAAK,CAAC,CAAC,SAAS,CACrB,yBAAyB,EACzB,gEAAgE,CACjE,CAAC;YACJ,CAAC;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM;iBAC3B,OAAO,CACN,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAC9B,iBAAiB,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,EACjF,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAC1C,CACF;iBACA,IAAI,CACH,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;YAChE,yGAAyG;YACzG,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAC1E,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,qBAAqB,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CACxF,CAAC;YACJ,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YACzB,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAC;YACjE,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBACpD,OAAO,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC;oBACzB,SAAS,EAAE,YAAY;oBACvB,IAAI,EAAE,qBAAqB;oBAC3B,SAAS,EAAE,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAC7C,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,OAAO,EAAE,6BAA6B,QAAQ,CAAC,MAAM,GAAG;iBACzD,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC,IAAI,CACL,aAAa,CAAC,kBAAkB,EAAE,CAAC,OAAO,EAAE,EAAE,CAC5C,OAAO,CAAC;YACN,SAAS,EAAE,aAAa;YACxB,GAAG,QAAQ,CAAC,GAAG,CAAC;YAChB,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC;YAC1C,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC;YACtC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU;YAC/B,MAAM;YACN,GAAG,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC;SAC/B,CAAC,CACH,EACD,MAAM,CAAC,MAAM,CACd,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,EAAE,CAC/C,MAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAEpF,MAAM,MAAM,GAAG,CAAC,GAA8B,EAAE,EAAE,CAChD,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAE/E,gHAAgH;IAChH,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAE,OAAuB,EAAE,EAAE,CAChE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,qBAAqB,EAAE,yCAAyC,CAAC,CAAC;QAC5G,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,CAAC,QAAQ,KAAK,EAAE,IAAI,MAAM,CAAC,QAAQ,KAAK,EAAE;YAClD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,qBAAqB,EAAE,6CAA6C,CAAC,CAAC;QAC7F,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC;QAChD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;QAC/B,IACE,OAAO,CAAC,GAAG,KAAK,SAAS;YACzB,KAAK;YACL,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAC1E,CAAC;YACD,OAAO,KAAK,CAAC,CAAC,MAAM,CAClB,oCAAoC,EACpC,+DAA+D,CAChE,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ;YACvC,OAAO,KAAK,CAAC,CAAC,MAAM,CAClB,+BAA+B,EAC/B,4DAA4D,CAC7D,CAAC;QACJ,+GAA+G;QAC/G,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACvD,OAAO,KAAK,CAAC,CAAC,MAAM,CAClB,uBAAuB,EACvB,iFAAiF,CAClF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,MAAM,aAAa,GAAG,CAAC,OAA2B,EAAE,OAAuB,EAAE,EAAE,CAC7E,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QAC7C,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC;gBAChC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,oCAAoC,CAAC,CAAC;YAC/E,OAAO,OAAO,CAAC,UAAU,CAAC;QAC5B,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC/F,kFAAkF;QAClF,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,WAAW,EAAE,CAAC;QACzF,IAAI,WAAW,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAC,CAAC,MAAM,CAClB,gBAAgB,EAChB,+FAA+F,CAChG,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,sBAAsB,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;IAEL,MAAM,OAAO,GAAG,CACd,GAAW,EACX,QAAoB,EACpB,UAA4C,EAC5C,OAAgB,EAChB,SAAiB,EACjB,EAAE;QACF,IAAI,MAA0B,CAAC;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;QACtC,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;gBAAE,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACnF,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM;iBAC3B,OAAO,CACN,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAC9B,iBAAiB,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,EAChF,iBAAiB,CAAC,UAAU,CAAC,UAAU,CAAC,EACxC,CAAC,OAAO,EAAE,EAAE,CACV,IAAI,CAAC,IAAI,KAAK,OAAO;gBACnB,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACpF,CAAC,CAAC,OAAO,CACd,CACF;iBACA,IAAI,CACH,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;YAChE,8GAA8G;YAC9G,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAC1E,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAC9E,CAAC;YACJ,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YACzB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;YACpE,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBACpD,OAAO,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC;oBACzB,SAAS,EAAE,MAAM;oBACjB,IAAI,EAAE,iBAAiB;oBACvB,SAAS,EAAE,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAC7C,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,OAAO,EAAE,6BAA6B,QAAQ,CAAC,MAAM,GAAG;iBACzD,CAAC,CAAC;YACL,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,IAAI,EAAmB,CAAC;QACrE,CAAC,CAAC,CAAC,IAAI,CACL,aAAa,CAAS,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE,CAChD,OAAO,CAAC;YACN,SAAS,EAAE,SAAS;YACpB,SAAS;YACT,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK;YAC/B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;YAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;YAC9B,GAAG,UAAU,CAAC,GAAG,CAAC;YAClB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,CAAC;YACV,MAAM;YACN,GAAG,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC;SAC/B,CAAC,CACH,CACF,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,YAAiC,EAAE,OAAuB,EAAE,EAAE;QAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QACtC,MAAM,OAAO,GAAgB;YAC3B,SAAS,EAAE,MAAM;YACjB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;YAC9B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;YAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC;QACF,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;YACpD,IAAI,QAAQ,KAAK,SAAS;gBACxB,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,yDAAyD,CAAC,CAAC;YACpG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7C,KAAK,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAClD,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;YACzC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,QAAQ,CAC5B,MAAM,EACN,MAAM,EACN;gBACE,GAAG,IAAI;gBACP,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC;gBAC7B,kBAAkB,EAAE,OAAO,CAAC,WAAW;gBACvC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;gBAChC,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,IAAI;gBAC9C,UAAU;aACX,EACD,UAAU,CACX,CAAC;YACF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC;YACzD,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YACrC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YACnC,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM;gBAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAChE,gGAAgG;YAChG,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,eAAe,KAAK,IAAI;gBAAE,OAAO,CAAC,kBAAkB,GAAG,MAAM,CAAC,eAAe,CAAC;YAC5G,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACxC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,OAAO,CAC9B,GAAG,EACH,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,EAClC,MAAM,CAAC,UAAU,EACjB,OAAO,EACP,MAAM,CAAC,SAAS,CACjB,CAAC;YACF,MAAM,MAAM,GAAG,CACb,OAAiC,EACjC,WAA0B,EAC1B,eAA8B,EAC9B,EAAE;gBACF,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;gBAC1B,OAAO;oBACL,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,OAAO;oBACP,WAAW;oBACX,eAAe;iBACQ,CAAC;YAC5B,CAAC,CAAC;YACF,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;gBAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,QAAQ,CAC7B,MAAM,EACN,iBAAiB,EACjB,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,EACxC,YAAY,CACb,CAAC;gBACF,OAAO,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBAClG,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;oBAC9B,OAAO,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC;wBACzB,SAAS,EAAE,MAAM;wBACjB,IAAI,EAAE,aAAa;wBACnB,SAAS,EAAE,KAAK;wBAChB,OAAO,EAAE,mEAAmE;qBAC7E,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;YACzD,CAAC;YACD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC;gBAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,iBAAiB,EAAE,MAAM,CAAC,SAAS;gBACnC,GAAG,EAAE,SAAS;aACf,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CACb,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,QAAQ,CAAC;gBACX,SAAS,EAAE,MAAM;gBACjB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CACL,CACF,CAAC;YACF,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC;YACzD,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;YAC1C,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC,IAAI,CACL,aAAa,CAAgB,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CACnD,OAAO,CAAC,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAC/F,CACF,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CACd,OAAgC,EAChC,MAA6D,EACyC,EAAE,CACxG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1F,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnG,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW;YAAE,OAAO,QAAQ,CAAC,QAAQ,CAAC;QAC5F,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC1C,MAAM,OAAO,GACX,QAAQ,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC1G,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI;gBACxF,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;YACzD,OAAO,OAAO,CAAC,QAAQ,CAAC;QAC1B,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;QACxE,OAAO,QAAQ,CAAC,eAAe,KAAK,IAAI;YACtC,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC,IAAI;IACL,yGAAyG;IACzG,iBAAiB,CAClB,CAAC;IAEJ,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAsB,CAAC;AAC7E,CAAC,CAAC,CAAC;AAEL;;;GAGG;AACH,MAAM,OAAO,GAAI,SAAQ,OAAO,CAAC,OAAO,EAAkB,CAAC,sBAAsB,CAAC;IAChF,MAAM,CAAU,KAAK,GAAmD,KAAK,CAAC,MAAM,CAClF,GAAG,EACH,OAAO,CAAC,kBAAkB,CAAC,CAC5B,CAAC;IACF,+EAA+E;IAC/E,MAAM,CAAU,SAAS,GAAG,CAAC,OAE5B,EAAkD,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;CAC3G"}
1
+ {"version":3,"file":"As2.js","sourceRoot":"","sources":["../src/As2.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@ export type LookupAddresses = (hostname: string) => Promise<ReadonlyArray<string
3
3
  export declare const lookupAllAddresses: LookupAddresses;
4
4
  /** Only global unicast addresses pass: loopback, private, link-local, metadata, and mapped forms fail. */
5
5
  export declare const isPublicAddress: (address: string) => boolean;
6
+ /** The addresses a host reaches when every one is public; `undefined` for a private, reserved, or unresolved host. */
7
+ export declare const publicAddressesOf: (host: string, lookupAddresses: LookupAddresses) => Promise<ReadonlyArray<string> | undefined>;
6
8
  /** An IP literal must be public; a name passes only when every address it resolves to is public. */
7
9
  export declare const isPublicDestination: (host: string, lookupAddresses: LookupAddresses) => Promise<boolean>;
8
10
  //# sourceMappingURL=As2Destination.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"As2Destination.d.ts","sourceRoot":"","sources":["../src/As2Destination.ts"],"names":[],"mappings":"AAGA,wDAAwD;AACxD,MAAM,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AAEnF,eAAO,MAAM,kBAAkB,EAAE,eACyD,CAAC;AAwC3F,0GAA0G;AAC1G,eAAO,MAAM,eAAe,YAAa,MAAM,KAAG,OAKjD,CAAC;AAEF,oGAAoG;AACpG,eAAO,MAAM,mBAAmB,SAAgB,MAAM,mBAAmB,eAAe,KAAG,OAAO,CAAC,OAAO,CAOzG,CAAC"}
1
+ {"version":3,"file":"As2Destination.d.ts","sourceRoot":"","sources":["../src/As2Destination.ts"],"names":[],"mappings":"AAGA,wDAAwD;AACxD,MAAM,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AAEnF,eAAO,MAAM,kBAAkB,EAAE,eACyD,CAAC;AAwC3F,0GAA0G;AAC1G,eAAO,MAAM,eAAe,YAAa,MAAM,KAAG,OAKjD,CAAC;AAEF,sHAAsH;AACtH,eAAO,MAAM,iBAAiB,SACtB,MAAM,mBACK,eAAe,KAC/B,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAO3C,CAAC;AAEF,oGAAoG;AACpG,eAAO,MAAM,mBAAmB,SAAgB,MAAM,mBAAmB,eAAe,KAAG,OAAO,CAAC,OAAO,CAC1C,CAAC"}