@torkbot/sandbox 0.3.1 → 0.5.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.
package/dist/index.js CHANGED
@@ -51,11 +51,11 @@ class DefinedSandbox {
51
51
  const networkPolicy = this.#options.network === undefined
52
52
  ? undefined
53
53
  : createNetworkPolicyHookRegistration(this.#options.network);
54
- const launchOptions = await toInternalSandboxOptions(this.#options, options, networkPolicy?.network);
54
+ const launchOptions = await toInternalSandboxOptions(this.#options, options, networkPolicy?.network, (networkPolicy?.hooks.length ?? 0) > 0);
55
55
  try {
56
56
  validateInternalSandboxOptions(launchOptions);
57
57
  const hostOptions = toHostSpawnOptions(launchOptions, networkPolicy?.hooks ?? []);
58
- const hostVm = await HostProcessSandboxVm.spawn(launchOptions, hostOptions, new Map((networkPolicy?.hooks ?? []).map((hook) => [hook.id, hook])));
58
+ const hostVm = await HostProcessSandboxVm.spawn(launchOptions, hostOptions, new Map((networkPolicy?.hooks ?? []).map((hook) => [hook.id, hook])), networkPolicy?.connectionHook);
59
59
  return new HostBackedSandboxVm(hostVm, launchOptions);
60
60
  }
61
61
  catch (error) {
@@ -204,6 +204,7 @@ function toHostSpawnOptions(options, requestHeaderHooks) {
204
204
  origin: hook.selector.origin,
205
205
  })),
206
206
  },
207
+ policy: options.network?.policy,
207
208
  };
208
209
  return {
209
210
  kernel: {
@@ -229,8 +230,8 @@ function toHostSpawnOptions(options, requestHeaderHooks) {
229
230
  network,
230
231
  };
231
232
  }
232
- async function toInternalSandboxOptions(config, boot, network) {
233
- const rootfs = await lowerRootfs(config.rootfs);
233
+ async function toInternalSandboxOptions(config, boot, network, httpInterception = false) {
234
+ const rootfs = await lowerRootfs(config.rootfs, { httpInterception });
234
235
  return {
235
236
  resources: config.resources,
236
237
  rootfs,
@@ -246,30 +247,7 @@ async function toInternalSandboxOptions(config, boot, network) {
246
247
  }
247
248
  function createNetworkPolicyHookRegistration(policy) {
248
249
  const hook = async (request) => {
249
- const grants = [];
250
- const connection = {
251
- transport: "tcp",
252
- host: request.url.hostname,
253
- ip: request.destination.upstreamIp,
254
- port: request.destination.upstreamPort,
255
- allow() {
256
- grants.push({ kind: "http" });
257
- return {};
258
- },
259
- allowHttp(middleware) {
260
- grants.push({ kind: "http", middleware });
261
- return {};
262
- },
263
- };
264
- await policy[networkPolicyHandler](connection);
265
- if (grants.length === 0) {
266
- throw new Error(`network connection denied: ${request.url.origin}`);
267
- }
268
- for (const grant of grants) {
269
- if (grant.kind === "http") {
270
- await grant.middleware?.(request);
271
- }
272
- }
250
+ void request;
273
251
  };
274
252
  const hooks = [
275
253
  {
@@ -287,41 +265,182 @@ function createNetworkPolicyHookRegistration(policy) {
287
265
  ];
288
266
  return {
289
267
  hooks,
268
+ connectionHook: {
269
+ hook: policy[networkPolicyHandler],
270
+ active: true,
271
+ },
290
272
  network: {
273
+ policy: {
274
+ connectionHook: true,
275
+ },
291
276
  outbound: {
292
277
  policy: "deny",
293
278
  rules: [
294
279
  { action: "accept", scope: "public-internet", ports: [] },
280
+ { action: "accept", protocol: "tcp", cidr: "10.0.2.1/32", ports: [53] },
295
281
  { action: "accept", protocol: "udp", cidr: "10.0.2.1/32", ports: [53] },
296
282
  ],
297
283
  },
298
284
  },
299
285
  };
300
286
  }
301
- async function lowerRootfs(rootfs) {
287
+ function createNetworkEndpoint(ip, port) {
288
+ return {
289
+ ip,
290
+ port,
291
+ isLoopback: () => isLoopbackIp(ip),
292
+ isPrivate: () => isPrivateIp(ip),
293
+ isLinkLocal: () => isLinkLocalIp(ip),
294
+ isMulticast: () => isMulticastIp(ip),
295
+ isBroadcast: () => ip === "255.255.255.255",
296
+ isDocumentation: () => isDocumentationIp(ip),
297
+ isReserved: () => isReservedIp(ip),
298
+ isPublicInternet: () => isPublicInternetIp(ip),
299
+ };
300
+ }
301
+ function isLoopbackIp(ip) {
302
+ const ipv4 = parseIpv4(ip);
303
+ if (ipv4 !== undefined) {
304
+ return ipv4[0] === 127;
305
+ }
306
+ return normalizeIpv6(ip) === "::1";
307
+ }
308
+ function isPrivateIp(ip) {
309
+ const ipv4 = parseIpv4(ip);
310
+ if (ipv4 !== undefined) {
311
+ return ipv4[0] === 10
312
+ || (ipv4[0] === 172 && ipv4[1] >= 16 && ipv4[1] <= 31)
313
+ || (ipv4[0] === 192 && ipv4[1] === 168);
314
+ }
315
+ return ipv6StartsWith(ip, "fc") || ipv6StartsWith(ip, "fd");
316
+ }
317
+ function isLinkLocalIp(ip) {
318
+ const ipv4 = parseIpv4(ip);
319
+ if (ipv4 !== undefined) {
320
+ return ipv4[0] === 169 && ipv4[1] === 254;
321
+ }
322
+ return ipv6StartsWith(ip, "fe8")
323
+ || ipv6StartsWith(ip, "fe9")
324
+ || ipv6StartsWith(ip, "fea")
325
+ || ipv6StartsWith(ip, "feb");
326
+ }
327
+ function isMulticastIp(ip) {
328
+ const ipv4 = parseIpv4(ip);
329
+ if (ipv4 !== undefined) {
330
+ return ipv4[0] >= 224 && ipv4[0] <= 239;
331
+ }
332
+ return ipv6StartsWith(ip, "ff");
333
+ }
334
+ function isDocumentationIp(ip) {
335
+ const ipv4 = parseIpv4(ip);
336
+ if (ipv4 !== undefined) {
337
+ return (ipv4[0] === 192 && ipv4[1] === 0 && ipv4[2] === 2)
338
+ || (ipv4[0] === 198 && ipv4[1] === 51 && ipv4[2] === 100)
339
+ || (ipv4[0] === 203 && ipv4[1] === 0 && ipv4[2] === 113);
340
+ }
341
+ return normalizeIpv6(ip).startsWith("2001:db8:");
342
+ }
343
+ function isReservedIp(ip) {
344
+ const ipv4 = parseIpv4(ip);
345
+ if (ipv4 !== undefined) {
346
+ return ipv4[0] === 0
347
+ || (ipv4[0] === 100 && ipv4[1] >= 64 && ipv4[1] <= 127)
348
+ || (ipv4[0] === 192 && ipv4[1] === 0 && ipv4[2] === 0)
349
+ || (ipv4[0] === 192 && ipv4[1] === 88 && ipv4[2] === 99)
350
+ || (ipv4[0] === 198 && (ipv4[1] === 18 || ipv4[1] === 19))
351
+ || ipv4[0] >= 240
352
+ || isDocumentationIp(ip);
353
+ }
354
+ return normalizeIpv6(ip).startsWith("2001:db8:");
355
+ }
356
+ function isPublicInternetIp(ip) {
357
+ return parseIpv4(ip) !== undefined
358
+ && !isLoopbackIp(ip)
359
+ && !isPrivateIp(ip)
360
+ && !isLinkLocalIp(ip)
361
+ && !isMulticastIp(ip)
362
+ && !isReservedIp(ip)
363
+ && !isDocumentationIp(ip)
364
+ && ip !== "255.255.255.255";
365
+ }
366
+ function parseIpv4(ip) {
367
+ const parts = ip.split(".");
368
+ if (parts.length !== 4) {
369
+ return undefined;
370
+ }
371
+ const octets = parts.map((part) => {
372
+ if (!/^(0|[1-9][0-9]{0,2})$/.test(part)) {
373
+ return undefined;
374
+ }
375
+ const value = Number(part);
376
+ return value <= 255 ? value : undefined;
377
+ });
378
+ return octets.every((part) => part !== undefined)
379
+ ? octets
380
+ : undefined;
381
+ }
382
+ function normalizeIpv6(ip) {
383
+ return ip.toLowerCase();
384
+ }
385
+ function ipv6StartsWith(ip, prefix) {
386
+ return parseIpv4(ip) === undefined && normalizeIpv6(ip).startsWith(prefix);
387
+ }
388
+ async function lowerRootfs(rootfs, options = {}) {
302
389
  switch (rootfs.kind) {
303
- case "built-in-rootfs":
390
+ case "built-in-rootfs": {
391
+ if (options.httpInterception === true) {
392
+ return lowerCowRootfs(rootfs, createEphemeralCowBlockStore());
393
+ }
304
394
  return {
305
395
  path: builtInRootfsPath(rootfs.name),
306
396
  readonly: true,
307
397
  format: "qcow2",
308
398
  };
399
+ }
309
400
  case "cow-rootfs":
310
- return {
311
- path: builtInRootfsPath(rootfs.base.name),
312
- readonly: false,
313
- format: "qcow2",
314
- storage: {
315
- kind: "cow-block-store",
316
- blockSize: rootfs.writable.blockSize,
317
- blockStore: rootfs.writable,
318
- context: {
319
- base: builtInRootfsIdentity(rootfs.base.name),
320
- },
321
- },
322
- };
401
+ return lowerCowRootfs(rootfs.base, rootfs.writable);
323
402
  }
324
403
  }
404
+ function lowerCowRootfs(base, writable) {
405
+ return {
406
+ path: builtInRootfsPath(base.name),
407
+ readonly: false,
408
+ format: "qcow2",
409
+ storage: {
410
+ kind: "cow-block-store",
411
+ blockSize: writable.blockSize,
412
+ blockStore: writable,
413
+ context: {
414
+ base: builtInRootfsIdentity(base.name),
415
+ },
416
+ },
417
+ };
418
+ }
419
+ function createEphemeralCowBlockStore() {
420
+ const blocks = new Map();
421
+ return {
422
+ blockSize: 65536,
423
+ async list() {
424
+ return Array.from(blocks.keys());
425
+ },
426
+ async read(range) {
427
+ const chunks = [];
428
+ for (let offset = 0; offset < range.count; offset += 1) {
429
+ const start = range.start + BigInt(offset);
430
+ const data = blocks.get(start);
431
+ if (data !== undefined) {
432
+ chunks.push({ start, data: data.slice() });
433
+ }
434
+ }
435
+ return chunks;
436
+ },
437
+ async write(chunks) {
438
+ for (const chunk of chunks) {
439
+ blocks.set(chunk.start, chunk.data.slice());
440
+ }
441
+ },
442
+ };
443
+ }
325
444
  function validateRootfs(rootfs) {
326
445
  switch (rootfs.kind) {
327
446
  case "built-in-rootfs":
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EACL,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,UAAU,CAAC;AA8JlB,MAAM,oBAAoB,GAAkB,MAAM,CAAC,sBAAsB,CAAC,CAAC;AA2E3E,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,OAAO,CAAC,IAAuB;QAC7B,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,IAAI;SACL,CAAC;IACJ,CAAC;IACD,GAAG,CAAC,OAAqF;QACvF,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC;IACJ,CAAC;CACF,CAAC;AAIF,SAAS,SAAS,CAAC,UAA6B;IAC9C,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,MAAM,EAAE,sBAAsB;IAC9B,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,MAAM,CAAC,mBAAoD;QACzD,OAAO;YACL,IAAI,EAAE,gBAAgB;YACtB,CAAC,oBAAoB,CAAC,EAAE,mBAAmB;SAC5C,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,OAAiC;IAC7D,gCAAgC,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAOD,MAAM,cAAc;IACT,QAAQ,CAA2B;IAE5C,YAAY,OAAiC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAO,GAAuB,EAAE;QACzC,0BAA0B,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS;YACvD,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,mCAAmC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,aAAa,GAAG,MAAM,wBAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QACrG,IAAI,CAAC;YACH,8BAA8B,CAAC,aAAa,CAAC,CAAC;YAC9C,MAAM,WAAW,GAAG,kBAAkB,CAAC,aAAa,EAAE,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YAClF,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAC7C,aAAa,EACb,WAAW,EACX,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CACrE,CAAC;YACF,OAAO,IAAI,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAED,MAAM,mBAAmB;IACd,OAAO,CAAiB;IACxB,WAAW,CAAsB;IACjC,KAAK,CAA2B;IAChC,SAAS,CAA2B;IACpC,QAAQ,CAAyB;IAEjC,OAAO,CAMd;IACF,OAAO,GAAG,KAAK,CAAC;IAEhB,YACE,MAMC,EACD,OAA+B;QAE/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,oBAAoB,CAAC;YACtC,SAAS,EAAE,MAAM,CAAC,gBAAgB;YAClC,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACrE,IAAI,CAAC,SAAS,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACjE,IAAI,MAAM,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;YAC9C,IAAI,CAAC,WAAW,GAAG;gBACjB,oBAAoB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE;aACjF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,SAAkB,CAAC;QACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/C,IAAI,CAAC;gBACH,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;oBAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACtD,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;wBAC1B,MAAM,IAAI,KAAK,CAAC,4CAA4C,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;oBACnG,CAAC;oBACD,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;wBAClB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;oBACnB,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,GAAG,KAAK,CAAC;YACpB,CAAC;QACH,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;gBAAS,CAAC;QACX,CAAC;QACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,SAAS,CAAC;QAClB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,IAAI,CACR,OAAe,EACf,IAAI,GAAsB,EAAE,EAC5B,OAAO,GAAuB,EAAE;QAEhC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,KAAK,CACT,OAAe,EACf,IAAI,GAAsB,EAAE,EAC5B,OAAO,GAAwB,EAAE;QAEjC,OAAO,MAAM,IAAI,yBAAyB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;aACxE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;CACF;AAED,MAAM,wBAAwB;IACnB,QAAQ,CAAiB;IACzB,IAAI,CAAqB;IAElC,YAAY,OAAuB,EAAE,GAAuB;QAC1D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,IAAI,CACR,OAAe,EACf,IAAI,GAAsB,EAAE,EAC5B,OAAO,GAAuB,EAAE;QAEhC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;QACrC,MAAM,GAAG,GAAG,GAAG,KAAK,SAAS;YAC3B,CAAC,CAAC,OAAO,CAAC,GAAG;YACb,CAAC,CAAC;gBACE,GAAG,OAAO,CAAC,GAAG;gBACd,gBAAgB,EAAE,GAAG;gBACrB,GAAG,EAAE,GAAG;aACT,CAAC;QACN,MAAM,IAAI,GAAG,GAAG,KAAK,SAAS;YAC5B,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;YACpB,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,yCAAyC,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QACpG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACtC,IAAI;YACJ,GAAG;SACJ,CAAC,CAAC;QACH,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;IACJ,CAAC;CAEF;AAED,MAAM,yBAAyB;IACpB,QAAQ,CAAiB;IACzB,IAAI,CAAqB;IAElC,YAAY,OAAuB,EAAE,GAAuB;QAC1D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,KAAK,CACT,OAAe,EACf,IAAI,GAAsB,EAAE,EAC5B,OAAO,GAAwB,EAAE;QAEjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;QACrC,MAAM,GAAG,GAAG,GAAG,KAAK,SAAS;YAC3B,CAAC,CAAC,OAAO,CAAC,GAAG;YACb,CAAC,CAAC;gBACE,GAAG,OAAO,CAAC,GAAG;gBACd,gBAAgB,EAAE,GAAG;gBACrB,GAAG,EAAE,GAAG;aACT,CAAC;QACN,MAAM,IAAI,GAAG,GAAG,KAAK,SAAS;YAC5B,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;YACpB,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,yCAAyC,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QACrG,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC/B,IAAI;YACJ,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;CACF;AAED,SAAS,kBAAkB,CACzB,OAA+B,EAC/B,kBAA0D;IAE1D,IACE,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,IAAI,KAAK,SAAS,CAAC;WACnE,OAAO,CAAC,OAAO,EAAE,QAAQ,KAAK,SAAS,EAC1C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAC;IAChH,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC;QAC9E,CAAC,CAAC,SAAS;QACX,CAAC,CAAC;YACA,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ;YACnC,IAAI,EAAE,kBAAkB,CAAC,MAAM,KAAK,CAAC;mBAChC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,KAAK,SAAS;gBACxD,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC;oBACA,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB;oBACzD,eAAe,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,eAAe;oBACvD,kBAAkB,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBACpD,EAAE,EAAE,IAAI,CAAC,EAAE;wBACX,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;qBAC7B,CAAC,CAAC;iBACJ;SACJ,CAAC;IAEJ,OAAO;QACL,MAAM,EAAE;YACN,MAAM,EAAE,SAAS;SAClB;QACD,GAAG,EAAE;YACH,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI;SAC/B;QACD,MAAM,EAAE;YACN,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS;SAClC;QACD,IAAI,EAAE;YACJ,SAAS,EAAE,cAAc;SAC1B;QACD,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACpC,OAAO;gBACL,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,UAAU,CAAC;aACxD,CAAC;QACJ,CAAC,CAAC;QACF,OAAO;KACR,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,MAAgC,EAChC,IAAwB,EACxB,OAA+B;IAE/B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,MAAM;QACN,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE;YAC/D,OAAO;gBACL,IAAI;gBACJ,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC;QACJ,CAAC,CAAC;QACF,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAS,mCAAmC,CAAC,MAAqB;IAChE,MAAM,IAAI,GAA0B,KAAK,EAAE,OAAO,EAAE,EAAE;QACpD,MAAM,MAAM,GAGP,EAAE,CAAC;QACR,MAAM,UAAU,GAA6B;YAC3C,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;YAC1B,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC,UAAU;YAClC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,YAAY;YACtC,KAAK;gBACH,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC9B,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,SAAS,CAAC,UAAkC;gBAC1C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC1C,OAAO,EAAE,CAAC;YACZ,CAAC;SACF,CAAC;QAEF,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,MAAM,KAAK,GAAuC;QAChD;YACE,EAAE,EAAE,qBAAqB;YACzB,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;YAChC,IAAI;YACJ,MAAM,EAAE,IAAI;SACb;QACD;YACE,EAAE,EAAE,sBAAsB;YAC1B,QAAQ,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;YACjC,IAAI;YACJ,MAAM,EAAE,IAAI;SACb;KACF,CAAC;IACF,OAAO;QACL,KAAK;QACL,OAAO,EAAE;YACP,QAAQ,EAAE;gBACR,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE;oBACL,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAAE,EAAE;oBACzD,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE;iBACxE;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,MAAc;IAEd,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,iBAAiB;YACpB,OAAO;gBACL,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC;gBACpC,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,OAAO;aAChB,CAAC;QACJ,KAAK,YAAY;YACf,OAAO;gBACL,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzC,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE;oBACP,IAAI,EAAE,iBAAiB;oBACvB,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS;oBACpC,UAAU,EAAE,MAAM,CAAC,QAAQ;oBAC3B,OAAO,EAAE;wBACP,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;qBAC9C;iBACF;aACF,CAAC;IACN,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,iBAAiB;YACpB,yBAAyB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvC,OAAO;QACT,KAAK,YAAY;YACf,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;YAC1G,CAAC;YACD,yBAAyB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACpC,OAAO;QACT;YACE,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;IACN,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,UAA6B;IACvD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,UAAU,CAAC,SAAS,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;IACvG,CAAC;IACD,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC;AAED,SAAS,gCAAgC,CAAC,OAAiC;IACzE,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC;QACxH,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClG,CAAC;IACD,IACE,OAAO,CAAC,SAAS,EAAE,SAAS,KAAK,SAAS;WACvC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC,CAAC,EACvF,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAChG,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClG,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY;IAC7C,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CAAC,OAA2B;IAC7D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QAClE,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACtC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uDAAuD,IAAI,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,IACE,2BAA2B,CAAC,MAAM,CAAC,UAAU,CAAC;eAC3C,CAAC,wBAAwB,CAAC,MAAM,CAAC,UAAU,CAAC,EAC/C,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,+FAA+F,IAAI,EAAE,CAAC,CAAC;QACzH,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAED,SAAS,8BAA8B,CAAC,OAA+B;IACrE,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QACzC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC5C,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,kDAAkD,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAClG,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;QAC1D,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,KAAmB;IAC1D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,mBAAmB,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,mBAAmB,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,6BAA6B,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,IAAI,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,0CAA0C,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAoC;IACjE,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,MAAM,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CAAC,2DAA2D,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtD,IAAI,OAAO,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7E,MAAM,IAAI,KAAK,CAAC,gDAAgD,KAAK,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,iDAAiD,KAAK,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,iDAAiD,KAAK,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,gBAAgB,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,kDAAkD,KAAK,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,6EAA6E,KAAK,EAAE,CAAC,CAAC;IACxG,CAAC;IAED,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,iDAAiD,KAAK,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,gBAAgB,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,kDAAkD,KAAK,EAAE,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACrF,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,KAAK,EAAE;QACtE,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,cAAc,GAAG,gBAAgB,CAAC,MAAM,KAAK,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9C,IAAI,CAAC,CAAC,cAAc,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAS,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC5F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { SandboxFileSystem, HttpRequestMiddleware, SandboxBlockStore, SandboxBlockStoreContext } from "./index.ts";
1
+ import type { SandboxFileSystem, HttpRequestMiddleware, NetworkConnectionRequestHandler, SandboxBlockStore, SandboxBlockStoreContext } from "./index.ts";
2
2
  export interface SandboxHttpRequestSelector {
3
3
  readonly origin: string;
4
4
  }
@@ -30,6 +30,9 @@ export interface InternalNetworkConfig {
30
30
  readonly origin: string;
31
31
  }[];
32
32
  };
33
+ readonly policy?: {
34
+ readonly connectionHook: true;
35
+ };
33
36
  }
34
37
  export interface InternalMount {
35
38
  readonly path: string;
@@ -61,4 +64,8 @@ export type RegisteredHttpRequestHeadersHook = {
61
64
  readonly hook: HttpRequestMiddleware;
62
65
  active: boolean;
63
66
  };
67
+ export type RegisteredNetworkConnectionHook = {
68
+ readonly hook: NetworkConnectionRequestHandler;
69
+ active: boolean;
70
+ };
64
71
  //# sourceMappingURL=launch-options.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"launch-options.d.ts","sourceRoot":"","sources":["../src/launch-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,2BAA2B,GACnC;IACE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,CAAC;AAEN,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,2BAA2B,EAAE,CAAC;KACxD,CAAC;IACF,QAAQ,CAAC,IAAI,CAAC,EAAE;QACd,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS;YACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;YACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;SACzB,EAAE,CAAC;KACL,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;CACxC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE;QACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,OAAO,CAAC,EAAE;YACjB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;YACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;YAC3B,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;YACvC,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;SAC5C,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,qBAAqB,CAAC;IACzC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,gCAAgC,GAAG;IAC7C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC"}
1
+ {"version":3,"file":"launch-options.d.ts","sourceRoot":"","sources":["../src/launch-options.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,9 @@ export type HostSpawnSandboxOptions = {
40
40
  readonly origin: string;
41
41
  }[];
42
42
  };
43
+ readonly policy?: {
44
+ readonly connectionHook: true;
45
+ };
43
46
  };
44
47
  };
45
48
  //# sourceMappingURL=spawn-options.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spawn-options.d.ts","sourceRoot":"","sources":["../src/spawn-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAEvE,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE;QACb,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC;KAChF,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;KACpC,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,OAAO,CAAC,EAAE;YACjB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;YACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;SAC5B,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS;QACzB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;QAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;KAC7B,EAAE,CAAC;IACJ,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;YACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,2BAA2B,EAAE,CAAC;SACxD,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,EAAE;YACd,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;YACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;YAClC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS;gBACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;gBACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;aACzB,EAAE,CAAC;SACL,CAAC;KACH,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"spawn-options.d.ts","sourceRoot":"","sources":["../src/spawn-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAEvE,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE;QACb,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC;KAChF,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;KACpC,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,OAAO,CAAC,EAAE;YACjB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;YACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;SAC5B,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS;QACzB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;QAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;KAC7B,EAAE,CAAC;IACJ,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;YACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,2BAA2B,EAAE,CAAC;SACxD,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,EAAE;YACd,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;YACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;YAClC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS;gBACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;gBACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;aACzB,EAAE,CAAC;SACL,CAAC;QACF,QAAQ,CAAC,MAAM,CAAC,EAAE;YAChB,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC;SAC/B,CAAC;KACH,CAAC;CACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@torkbot/sandbox",
3
- "version": "0.3.1",
3
+ "version": "0.5.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "A TypeScript-first Node.js library for spawning libkrun-backed microVMs.",
@@ -34,7 +34,7 @@
34
34
  "just-bash": "^2.14.5"
35
35
  },
36
36
  "optionalDependencies": {
37
- "@torkbot/sandbox-darwin-arm64": "0.3.1",
38
- "@torkbot/sandbox-linux-x64-gnu": "0.3.1"
37
+ "@torkbot/sandbox-darwin-arm64": "0.5.0",
38
+ "@torkbot/sandbox-linux-x64-gnu": "0.5.0"
39
39
  }
40
40
  }