@essential-apps/shopify-test-runner 1.0.28 → 1.0.29
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/edge/edgeProxy.js +1 -1
- package/dist/edge/edgeProxy.js.map +1 -1
- package/dist/lib/neonWsProxy.d.ts +1 -1
- package/dist/lib/neonWsProxy.js +1 -1
- package/dist/playwright/baseConfig.d.ts +1 -1
- package/dist/scripts/devOnlineBackend.js +1 -1
- package/dist/scripts/devOnlineBackend.js.map +1 -1
- package/dist/scripts/runOffline.js +12 -12
- package/dist/scripts/runOffline.js.map +1 -1
- package/dist/scripts/runOfflineTests.d.ts +3 -0
- package/dist/scripts/runOfflineTests.d.ts.map +1 -0
- package/dist/scripts/{runOfflineFullTests.js → runOfflineTests.js} +68 -68
- package/dist/scripts/runOfflineTests.js.map +1 -0
- package/dist/scripts/runTests.js +1 -1
- package/dist/scripts/runTests.js.map +1 -1
- package/dist/scripts/runVm.js +2 -2
- package/dist/scripts/runVm.js.map +1 -1
- package/dist/vite/onlineConfig.d.ts +1 -1
- package/dist/vite/onlineConfig.js +1 -1
- package/package.json +1 -1
- package/src/edge/edgeProxy.ts +1 -1
- package/src/lib/neonWsProxy.ts +1 -1
- package/src/playwright/baseConfig.ts +1 -1
- package/src/scripts/devOnlineBackend.ts +1 -1
- package/src/scripts/runOffline.ts +12 -12
- package/src/scripts/{runOfflineFullTests.ts → runOfflineTests.ts} +67 -67
- package/src/scripts/runTests.ts +1 -1
- package/src/scripts/runVm.ts +2 -2
- package/src/vite/onlineConfig.ts +1 -1
- package/dist/scripts/runOfflineFullTests.d.ts +0 -3
- package/dist/scripts/runOfflineFullTests.d.ts.map +0 -1
- package/dist/scripts/runOfflineFullTests.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* runOfflineTests — full-stack offline orchestrator.
|
|
4
4
|
*
|
|
5
5
|
* Boots the entire offline stack in ONE Node process:
|
|
6
6
|
*
|
|
@@ -13,14 +13,14 @@
|
|
|
13
13
|
* reaches our Admin GraphQL mock
|
|
14
14
|
* - Playwright as a child process, with mock URLs in env
|
|
15
15
|
*
|
|
16
|
-
* The Playwright fixture (`
|
|
16
|
+
* The Playwright fixture (`offlineTest`, orchestrated mode)
|
|
17
17
|
* reads the mock URLs from env and routes browser requests via
|
|
18
18
|
* `page.route()`. Tests mutate ShopState via control-plane HTTP
|
|
19
19
|
* endpoints exposed by the storefront mock (mounted under
|
|
20
20
|
* `/__test__/state/*`).
|
|
21
21
|
*
|
|
22
22
|
* This is the offline counterpart to runTests.ts (online mode).
|
|
23
|
-
* Online tests still go via runTests.ts; offline
|
|
23
|
+
* Online tests still go via runTests.ts; offline tests via this.
|
|
24
24
|
*
|
|
25
25
|
* Env it sets in the spawned Remix backend:
|
|
26
26
|
* SHOPIFY_API_SECRET = mock JWT secret (so JWTs validate)
|
|
@@ -100,7 +100,7 @@ function dropOrphanDatabases(prefix) {
|
|
|
100
100
|
.filter((s) => s.length > 0);
|
|
101
101
|
if (orphans.length === 0)
|
|
102
102
|
return;
|
|
103
|
-
console.log(`[
|
|
103
|
+
console.log(`[runOfflineTests] cleanup: dropping ${orphans.length} orphan DB(s)…`);
|
|
104
104
|
for (const name of orphans) {
|
|
105
105
|
try {
|
|
106
106
|
// `--force` (psql 13+) terminates any leftover connections
|
|
@@ -119,7 +119,7 @@ function dropOrphanDatabases(prefix) {
|
|
|
119
119
|
catch (err) {
|
|
120
120
|
// If psql isn't available at all we just skip cleanup; the
|
|
121
121
|
// primary createdb below will fail loudly anyway.
|
|
122
|
-
console.warn(`[
|
|
122
|
+
console.warn(`[runOfflineTests] orphan-DB cleanup failed: ${err.message}`);
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
/**
|
|
@@ -249,7 +249,7 @@ function ensureOfflineSetup() {
|
|
|
249
249
|
hostsContent = readFileSync(hostsPath, 'utf8');
|
|
250
250
|
}
|
|
251
251
|
catch {
|
|
252
|
-
console.warn(`[
|
|
252
|
+
console.warn(`[runOfflineTests] could not read ${hostsPath}; skipping /etc/hosts setup`);
|
|
253
253
|
return;
|
|
254
254
|
}
|
|
255
255
|
const hostsToAdd = [];
|
|
@@ -276,10 +276,10 @@ function ensureOfflineSetup() {
|
|
|
276
276
|
if (hostsToAdd.length > 0) {
|
|
277
277
|
try {
|
|
278
278
|
writeFileSync(hostsPath, hostsContent + '\n' + hostsToAdd.join('\n') + '\n');
|
|
279
|
-
console.log(`[
|
|
279
|
+
console.log(`[runOfflineTests] wrote ${hostsToAdd.length} /etc/hosts entries`);
|
|
280
280
|
}
|
|
281
281
|
catch (err) {
|
|
282
|
-
console.warn(`[
|
|
282
|
+
console.warn(`[runOfflineTests] could not write ${hostsPath}: ${err.message}. ` +
|
|
283
283
|
`Browser may resolve Shopify hostnames to real Shopify on the internet.`);
|
|
284
284
|
}
|
|
285
285
|
}
|
|
@@ -299,12 +299,12 @@ function ensureOfflineSetup() {
|
|
|
299
299
|
if (existing !== TEST_CA_CERT_PEM) {
|
|
300
300
|
writeFileSync(systemCertDest, TEST_CA_CERT_PEM);
|
|
301
301
|
execSync('update-ca-certificates >/dev/null 2>&1 || true', { stdio: 'ignore' });
|
|
302
|
-
console.log('[
|
|
302
|
+
console.log('[runOfflineTests] installed edge CA into system trust store');
|
|
303
303
|
}
|
|
304
304
|
process.env['NODE_EXTRA_CA_CERTS'] = systemCertDest;
|
|
305
305
|
}
|
|
306
306
|
catch (err) {
|
|
307
|
-
console.warn(`[
|
|
307
|
+
console.warn(`[runOfflineTests] could not install edge CA: ${err.message}. ` +
|
|
308
308
|
`TLS connections to the edge may fail.`);
|
|
309
309
|
}
|
|
310
310
|
// Chrome / Chromium on Linux verifies certs against NSS DB
|
|
@@ -336,10 +336,10 @@ function ensureOfflineSetup() {
|
|
|
336
336
|
execSync(`certutil -d sql:${nssDir} -D -n edge-ca >/dev/null 2>&1 || true`, { stdio: 'ignore' });
|
|
337
337
|
execSync(`certutil -d sql:${nssDir} -A -t "C,," -n edge-ca -i ${tmpCaPath}`, { stdio: 'ignore' });
|
|
338
338
|
unlinkSync(tmpCaPath);
|
|
339
|
-
console.log('[
|
|
339
|
+
console.log('[runOfflineTests] installed edge CA into NSS DB (Chrome)');
|
|
340
340
|
}
|
|
341
341
|
catch (err) {
|
|
342
|
-
console.warn(`[
|
|
342
|
+
console.warn(`[runOfflineTests] could not install edge CA into NSS DB: ${err.message}. ` +
|
|
343
343
|
`Chrome will reject the edge's cert. Verify libnss3-tools is installed in the image.`);
|
|
344
344
|
}
|
|
345
345
|
}
|
|
@@ -375,7 +375,7 @@ async function startOfflineDnsRedirect() {
|
|
|
375
375
|
resolver = await startOfflineResolver({ upstream });
|
|
376
376
|
}
|
|
377
377
|
catch (err) {
|
|
378
|
-
console.warn(`[
|
|
378
|
+
console.warn(`[runOfflineTests] offline DNS resolver failed to bind 127.0.0.1:53: ` +
|
|
379
379
|
`${err.message}. page.request may resolve Shopify ` +
|
|
380
380
|
`hostnames to real Shopify on the internet.`);
|
|
381
381
|
return null;
|
|
@@ -388,11 +388,11 @@ async function startOfflineDnsRedirect() {
|
|
|
388
388
|
// function-runner binary) — that round-trip routinely exceeds 1s,
|
|
389
389
|
// so an aggressive timeout would spuriously fail real lookups.
|
|
390
390
|
writeFileSync('/etc/resolv.conf', 'nameserver 127.0.0.1\n');
|
|
391
|
-
console.log('[
|
|
391
|
+
console.log('[runOfflineTests] offline DNS resolver on 127.0.0.1:53 ' +
|
|
392
392
|
`(Shopify → loopback${upstream ? `, else → ${upstream}` : ', else → SERVFAIL'})`);
|
|
393
393
|
}
|
|
394
394
|
catch (err) {
|
|
395
|
-
console.warn(`[
|
|
395
|
+
console.warn(`[runOfflineTests] could not repoint /etc/resolv.conf: ` +
|
|
396
396
|
`${err.message}. c-ares clients may bypass the resolver.`);
|
|
397
397
|
}
|
|
398
398
|
return resolver;
|
|
@@ -482,7 +482,7 @@ function seedSession(env, shopDomain) {
|
|
|
482
482
|
* - Supervisor (no `TEST_OFFLINE_SHARD_INDEX` set, N>1):
|
|
483
483
|
* 1. Build cache check + build once (so shards don't race)
|
|
484
484
|
* 2. Orphan-DB cleanup once
|
|
485
|
-
* 3. Spawn N child processes (`node ...
|
|
485
|
+
* 3. Spawn N child processes (`node ... runOfflineTests.ts`)
|
|
486
486
|
* each with `TEST_OFFLINE_SHARD_INDEX=k`, `TEST_OFFLINE_SKIP_BUILD=true`
|
|
487
487
|
* 4. Stream child stdout/stderr prefixed with [shard k]
|
|
488
488
|
* 5. Wait for all, exit with worst exit code
|
|
@@ -514,13 +514,13 @@ async function main() {
|
|
|
514
514
|
// strategy or invasive Chromium/Node bypasses. We tried that path
|
|
515
515
|
// (page.route() + host-resolver-rules + a Node socket-layer shim);
|
|
516
516
|
// it worked but maintained ~400 lines of bypass code in parallel.
|
|
517
|
-
// Use `npm run test:offline
|
|
517
|
+
// Use `npm run test:offline` from the consuming app — it
|
|
518
518
|
// routes through `runDockerOffline.ts` which spawns the
|
|
519
519
|
// `essential-upsell-test:latest` image where TEST_IN_CONTAINER=true
|
|
520
520
|
// is set by docker/entrypoint.sh.
|
|
521
521
|
if (process.env['TEST_IN_CONTAINER'] !== 'true') {
|
|
522
|
-
console.error('[
|
|
523
|
-
' Run: `npm run test:offline
|
|
522
|
+
console.error('[runOfflineTests] FATAL: must run inside the offline container.\n' +
|
|
523
|
+
' Run: `npm run test:offline` (which invokes runDockerOffline.ts)\n' +
|
|
524
524
|
' If you are seeing this from inside what should be a container, the\n' +
|
|
525
525
|
" entrypoint script (tests/offline/docker/entrypoint.sh) didn't run or\n" +
|
|
526
526
|
" didn't export TEST_IN_CONTAINER=true.");
|
|
@@ -565,15 +565,15 @@ async function main() {
|
|
|
565
565
|
// schema, but we DO want SCOPES to match what the app expects.
|
|
566
566
|
const scopes = process.env['SCOPES'] ?? 'write_products,read_products,write_discounts,read_discounts';
|
|
567
567
|
const playwrightConfig = process.env['TEST_PLAYWRIGHT_CONFIG'] ??
|
|
568
|
-
'tests/offline/playwright.offline
|
|
568
|
+
'tests/offline/playwright.offline.config.ts';
|
|
569
569
|
const isChildShard = shardIndex !== null;
|
|
570
570
|
// Backend port: shard k uses BASE + (k-1); single-worker uses BASE.
|
|
571
571
|
const baseBackendPort = Number(process.env['TEST_OFFLINE_BACKEND_PORT'] ?? '8181');
|
|
572
572
|
const backendPort = String(isChildShard ? baseBackendPort + (shardIndex - 1) : baseBackendPort);
|
|
573
573
|
// Production Remix serves via plain HTTP (remix-serve has no TLS).
|
|
574
|
-
// Vite dev had self-signed HTTPS; offline
|
|
574
|
+
// Vite dev had self-signed HTTPS; offline uses HTTP. The mock
|
|
575
575
|
// admin shell serves the iframe pointing here; mixed-content
|
|
576
|
-
// warnings are silenced via Chrome flags in the
|
|
576
|
+
// warnings are silenced via Chrome flags in the offlineStack
|
|
577
577
|
// fixture.
|
|
578
578
|
const backendUrl = `http://localhost:${backendPort}`;
|
|
579
579
|
// Skip the build if TEST_OFFLINE_SKIP_BUILD=true and a recent build
|
|
@@ -586,14 +586,14 @@ async function main() {
|
|
|
586
586
|
const dbName = `${dbPrefix}_${randomUUID().replace(/-/g, '_')}`;
|
|
587
587
|
const dbConn = dbUrl(dbName);
|
|
588
588
|
const preserveDb = process.env['TEST_PRESERVE_DB'] === 'true';
|
|
589
|
-
console.log(`[
|
|
590
|
-
console.log(`[
|
|
589
|
+
console.log(`[runOfflineTests] Test DB: ${dbConn}`);
|
|
590
|
+
console.log(`[runOfflineTests] Backend: ${backendUrl}`);
|
|
591
591
|
// Drop orphan DBs from previous crashed runs. The supervisor
|
|
592
592
|
// already did this once — children skip.
|
|
593
593
|
if (!isChildShard) {
|
|
594
594
|
dropOrphanDatabases(dbPrefix);
|
|
595
595
|
}
|
|
596
|
-
console.log('[
|
|
596
|
+
console.log('[runOfflineTests] createdb…');
|
|
597
597
|
execSync(`createdb -h ${PG_HOST} -p ${PG_PORT} ${dbName}`, { stdio: 'inherit' });
|
|
598
598
|
// ── Mock servers (in-process, sharing one ShopState) ─────
|
|
599
599
|
const state = new ShopState({
|
|
@@ -615,7 +615,7 @@ async function main() {
|
|
|
615
615
|
if (process.env['TEST_OFFLINE_EXPLORE'] === 'true') {
|
|
616
616
|
seedExploreProducts(state);
|
|
617
617
|
}
|
|
618
|
-
console.log('[
|
|
618
|
+
console.log('[runOfflineTests] booting mock servers…');
|
|
619
619
|
// 127.0.0.1 binding is the safe default — orchestrator and child
|
|
620
620
|
// both reach the mocks on loopback. Used to be subtly broken
|
|
621
621
|
// because we ran Playwright via execSync (sync, blocks the event
|
|
@@ -642,7 +642,7 @@ async function main() {
|
|
|
642
642
|
? resolve(process.cwd(), process.env['TEST_OFFLINE_POST_PURCHASE_EXT'])
|
|
643
643
|
: undefined;
|
|
644
644
|
if (postPurchaseExtensionPath && !existsSync(postPurchaseExtensionPath)) {
|
|
645
|
-
throw new Error(`[
|
|
645
|
+
throw new Error(`[runOfflineTests] TEST_OFFLINE_POST_PURCHASE_EXT points at ${postPurchaseExtensionPath} but the file doesn't exist. ` +
|
|
646
646
|
`Build the extension first — the bundled .js must exist on disk before the test run.`);
|
|
647
647
|
}
|
|
648
648
|
// The orchestrator owns the DB lifecycle: we build the
|
|
@@ -672,7 +672,7 @@ async function main() {
|
|
|
672
672
|
clientId: MOCK_CLIENT_ID,
|
|
673
673
|
jwtSecret: DEFAULT_MOCK_JWT_SECRET,
|
|
674
674
|
}), startOpts);
|
|
675
|
-
console.log(`[
|
|
675
|
+
console.log(`[runOfflineTests] mocks ready:\n` +
|
|
676
676
|
` shell: ${adminShell.baseUrl}\n` +
|
|
677
677
|
` admin GQL: ${adminApi.baseUrl}\n` +
|
|
678
678
|
` storefront GQL: ${storefrontApi.baseUrl}\n` +
|
|
@@ -689,10 +689,10 @@ async function main() {
|
|
|
689
689
|
for (const p of probes) {
|
|
690
690
|
try {
|
|
691
691
|
const r = await fetch(p.url, p.init);
|
|
692
|
-
console.log(`[
|
|
692
|
+
console.log(`[runOfflineTests] probe ${p.name}: ${r.status}`);
|
|
693
693
|
}
|
|
694
694
|
catch (e) {
|
|
695
|
-
console.log(`[
|
|
695
|
+
console.log(`[runOfflineTests] probe ${p.name}: FAILED ${e.message}`);
|
|
696
696
|
}
|
|
697
697
|
}
|
|
698
698
|
// ── Edge proxy (HTTPS) ──────────────────────────────────────
|
|
@@ -736,14 +736,14 @@ async function main() {
|
|
|
736
736
|
hostname: '0.0.0.0',
|
|
737
737
|
port: 443,
|
|
738
738
|
});
|
|
739
|
-
console.log(`[
|
|
739
|
+
console.log(`[runOfflineTests] edge proxy: ${edge.baseUrl}`);
|
|
740
740
|
// ── Neon-local WS proxy (zero-app-touch) ──────────────────
|
|
741
741
|
// Bridge the app's @neondatabase/serverless driver to THIS run's local
|
|
742
742
|
// Postgres without the app changing its prisma client. The shim
|
|
743
743
|
// (preloaded into the backend below) points neonConfig.wsProxy here;
|
|
744
744
|
// the proxy reads the driver's `?address=` and forwards to Postgres.
|
|
745
745
|
const neonProxy = await startNeonWsProxy({ targetHost: PG_HOST, targetPort: Number(PG_PORT) });
|
|
746
|
-
console.log(`[
|
|
746
|
+
console.log(`[runOfflineTests] neon ws-proxy: 127.0.0.1:${neonProxy.port} → Postgres ${PG_HOST}:${PG_PORT}`);
|
|
747
747
|
// ── Backend env ───────────────────────────────────────────
|
|
748
748
|
const mswLoader = resolveMswLoaderPath();
|
|
749
749
|
const neonShim = resolveNeonShimPath();
|
|
@@ -837,7 +837,7 @@ async function main() {
|
|
|
837
837
|
? { SHOPIFY_UPSELLS_ID: process.env['SHOPIFY_UPSELLS_ID'] }
|
|
838
838
|
: {}),
|
|
839
839
|
};
|
|
840
|
-
console.log('[
|
|
840
|
+
console.log('[runOfflineTests] prisma migrate deploy…');
|
|
841
841
|
// Strip the MSW loader from NODE_OPTIONS for prisma's invocation.
|
|
842
842
|
// MSW shouldn't intercept Postgres connections (it's HTTP-only),
|
|
843
843
|
// but loading it from inside `npx prisma` triggers a silent
|
|
@@ -859,15 +859,15 @@ async function main() {
|
|
|
859
859
|
// a no-op for apps that don't need it.
|
|
860
860
|
const extraSchema = resolve(process.cwd(), 'tests/offline/offline-extra-schema.sql');
|
|
861
861
|
if (existsSync(extraSchema)) {
|
|
862
|
-
console.log('[
|
|
862
|
+
console.log('[runOfflineTests] applying extra schema (tests/offline/offline-extra-schema.sql)…');
|
|
863
863
|
execSync(`psql -h ${PG_HOST} -p ${PG_PORT} -d ${dbName} -v ON_ERROR_STOP=1 -f ${JSON.stringify(extraSchema)}`, { stdio: 'inherit', env: prismaEnv });
|
|
864
864
|
}
|
|
865
|
-
console.log('[
|
|
865
|
+
console.log('[runOfflineTests] seeding session row…');
|
|
866
866
|
try {
|
|
867
867
|
seedSession(prismaEnv, DEFAULT_SHOP_DOMAIN);
|
|
868
868
|
}
|
|
869
869
|
catch (err) {
|
|
870
|
-
console.warn(`[
|
|
870
|
+
console.warn(`[runOfflineTests] session seed failed (continuing): ${err.message}`);
|
|
871
871
|
}
|
|
872
872
|
// ── Backend (Vite) ────────────────────────────────────────
|
|
873
873
|
let dev = null;
|
|
@@ -921,7 +921,7 @@ async function main() {
|
|
|
921
921
|
* the conventional exit code (`128 + signal`).
|
|
922
922
|
*/
|
|
923
923
|
const onSignal = (sig) => {
|
|
924
|
-
console.log(`\n[
|
|
924
|
+
console.log(`\n[runOfflineTests] received ${sig}, tearing down…`);
|
|
925
925
|
cleanup();
|
|
926
926
|
// 128 + signal number is the POSIX convention.
|
|
927
927
|
process.exit(sig === 'SIGINT' ? 130 : 143);
|
|
@@ -956,14 +956,14 @@ async function main() {
|
|
|
956
956
|
const skipBuildBecauseExplicit = skipBuild;
|
|
957
957
|
const skipBuildBecauseCache = cachedHash === currentBuildHash;
|
|
958
958
|
if (skipBuildBecauseExplicit) {
|
|
959
|
-
console.log('[
|
|
959
|
+
console.log('[runOfflineTests] skipping build (TEST_OFFLINE_SKIP_BUILD=true)');
|
|
960
960
|
}
|
|
961
961
|
else if (skipBuildBecauseCache) {
|
|
962
|
-
console.log(`[
|
|
962
|
+
console.log(`[runOfflineTests] build cache HIT (${currentBuildHash.slice(0, 12)}) — skipping npm run build. ` +
|
|
963
963
|
`Force with TEST_OFFLINE_FORCE_BUILD=true.`);
|
|
964
964
|
}
|
|
965
965
|
else {
|
|
966
|
-
console.log(`[
|
|
966
|
+
console.log(`[runOfflineTests] build cache MISS — running npm run build. ` +
|
|
967
967
|
`(${cachedHash ? `was ${cachedHash.slice(0, 12)}, now ` : 'no cache, '}${currentBuildHash.slice(0, 12)})`);
|
|
968
968
|
execSync('npm run build', {
|
|
969
969
|
stdio: 'inherit',
|
|
@@ -973,7 +973,7 @@ async function main() {
|
|
|
973
973
|
// crashed build leaves stale `build/` we shouldn't endorse.
|
|
974
974
|
writeFileSync(buildCachePath, currentBuildHash);
|
|
975
975
|
}
|
|
976
|
-
console.log('[
|
|
976
|
+
console.log('[runOfflineTests] booting Remix prod server (remix-serve)…');
|
|
977
977
|
// Resolve remix-serve's CLI path directly — `npx remix-serve`
|
|
978
978
|
// on some systems alters NODE_OPTIONS (it spawns a child via
|
|
979
979
|
// npm-cli with PATH manipulation), which silently drops our
|
|
@@ -1008,9 +1008,9 @@ async function main() {
|
|
|
1008
1008
|
stdio: ['inherit', 'inherit', 1],
|
|
1009
1009
|
env: backendRuntimeEnv,
|
|
1010
1010
|
});
|
|
1011
|
-
console.log(`[
|
|
1011
|
+
console.log(`[runOfflineTests] waiting for backend at ${backendUrl}…`);
|
|
1012
1012
|
await waitForReady(backendUrl, READY_TIMEOUT_MS);
|
|
1013
|
-
console.log('[
|
|
1013
|
+
console.log('[runOfflineTests] backend ready.');
|
|
1014
1014
|
// ── Pre-warm Remix routes ──────────────────────────────────
|
|
1015
1015
|
// remix-serve lazy-compiles each route's loader/action module on
|
|
1016
1016
|
// first authenticated request. The first /app navigation in a
|
|
@@ -1029,7 +1029,7 @@ async function main() {
|
|
|
1029
1029
|
//
|
|
1030
1030
|
// Failures are non-fatal — the next real test request will
|
|
1031
1031
|
// surface a clearer error than "warm-up failed".
|
|
1032
|
-
console.log('[
|
|
1032
|
+
console.log('[runOfflineTests] pre-warming hot Remix routes…');
|
|
1033
1033
|
const warmupToken = await mintIdToken({
|
|
1034
1034
|
shop: DEFAULT_SHOP_DOMAIN,
|
|
1035
1035
|
clientId: MOCK_CLIENT_ID,
|
|
@@ -1060,7 +1060,7 @@ async function main() {
|
|
|
1060
1060
|
authorization: `Bearer ${warmupToken}`,
|
|
1061
1061
|
// shopify-app-remix's `isbot` check returns 410 for
|
|
1062
1062
|
// Node's default User-Agent. Match the same UA the
|
|
1063
|
-
// browser context uses in tests (see
|
|
1063
|
+
// browser context uses in tests (see offlineStack
|
|
1064
1064
|
// fixture) so the request reaches the loader.
|
|
1065
1065
|
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 ' +
|
|
1066
1066
|
'(KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36',
|
|
@@ -1079,7 +1079,7 @@ async function main() {
|
|
|
1079
1079
|
return { path, error: err.message, ms: Date.now() - tStart };
|
|
1080
1080
|
}
|
|
1081
1081
|
}));
|
|
1082
|
-
console.log(`[
|
|
1082
|
+
console.log(`[runOfflineTests] route pre-warm done (${Date.now() - t0}ms):`);
|
|
1083
1083
|
for (const r of warmupResults) {
|
|
1084
1084
|
const status = 'error' in r ? `ERR ${r.error}` : `${r.status}${r.location ? ` → ${r.location}` : ''}`;
|
|
1085
1085
|
console.log(` ${r.ms}ms ${status} ${r.path.split('?')[0]}`);
|
|
@@ -1103,7 +1103,7 @@ async function main() {
|
|
|
1103
1103
|
if (process.env['TEST_OFFLINE_EXPLORE'] === 'true') {
|
|
1104
1104
|
const adminUrl = process.env['TEST_OFFLINE_EXPLORE_URL'] ??
|
|
1105
1105
|
`https://admin.shopify.com/store/test/apps/${DEFAULT_APP_HANDLE}/app`;
|
|
1106
|
-
console.log('[
|
|
1106
|
+
console.log('[runOfflineTests] explore mode — launching Chrome at:');
|
|
1107
1107
|
console.log(` ${adminUrl}`);
|
|
1108
1108
|
console.log('');
|
|
1109
1109
|
console.log(' Useful URLs you can navigate to (all routed via the edge proxy):');
|
|
@@ -1205,7 +1205,7 @@ async function main() {
|
|
|
1205
1205
|
await sfPage.goto(storefrontUrl, { waitUntil: 'domcontentloaded' });
|
|
1206
1206
|
}
|
|
1207
1207
|
catch (err) {
|
|
1208
|
-
console.error(`[
|
|
1208
|
+
console.error(`[runOfflineTests] explore: storefront tab failed to load (${err.message}) — continuing`);
|
|
1209
1209
|
}
|
|
1210
1210
|
// Leave the admin tab focused as the active one.
|
|
1211
1211
|
await explorePage.bringToFront().catch(() => { });
|
|
@@ -1227,7 +1227,7 @@ async function main() {
|
|
|
1227
1227
|
return;
|
|
1228
1228
|
}
|
|
1229
1229
|
// ── Playwright ─────────────────────────────────────────
|
|
1230
|
-
console.log('[
|
|
1230
|
+
console.log('[runOfflineTests] running Playwright…');
|
|
1231
1231
|
// Headed-under-Xvfb is the DEFAULT for offline runs (production-
|
|
1232
1232
|
// faithful, ~4% slower than headless). Opt OUT with
|
|
1233
1233
|
// TEST_OFFLINE_HEADLESS=true. Full-screen recording (TEST_OFFLINE_VIDEO)
|
|
@@ -1252,7 +1252,7 @@ async function main() {
|
|
|
1252
1252
|
hasFfmpeg = false;
|
|
1253
1253
|
}
|
|
1254
1254
|
if (!hasFfmpeg) {
|
|
1255
|
-
console.error('[
|
|
1255
|
+
console.error('[runOfflineTests] TEST_OFFLINE_VIDEO set but `ffmpeg` is missing from the ' +
|
|
1256
1256
|
'VM image — rebuild it (it predates video support): ' +
|
|
1257
1257
|
'`container image rm essential-apps/shopify-test-vm:latest` then re-run. ' +
|
|
1258
1258
|
'Continuing headed WITHOUT recording.');
|
|
@@ -1273,14 +1273,14 @@ async function main() {
|
|
|
1273
1273
|
}
|
|
1274
1274
|
headedReady = existsSync('/tmp/.X11-unix/X99');
|
|
1275
1275
|
if (!headedReady) {
|
|
1276
|
-
console.error('[
|
|
1276
|
+
console.error('[runOfflineTests] WARNING: Xvfb :99 did not start — falling back to headless');
|
|
1277
1277
|
videoOn = false;
|
|
1278
1278
|
headedOn = false;
|
|
1279
1279
|
process.env['TEST_OFFLINE_VIDEO'] = 'false';
|
|
1280
1280
|
process.env['TEST_OFFLINE_HEADED'] = 'false';
|
|
1281
1281
|
}
|
|
1282
1282
|
else {
|
|
1283
|
-
console.error(`[
|
|
1283
|
+
console.error(`[runOfflineTests] headed under Xvfb :99 (${videoOn ? 'recording' : 'no recording'})`);
|
|
1284
1284
|
}
|
|
1285
1285
|
}
|
|
1286
1286
|
const playwrightEnv = {
|
|
@@ -1355,7 +1355,7 @@ async function main() {
|
|
|
1355
1355
|
// a file path, `--repeat-each`, etc. The docker runner already
|
|
1356
1356
|
// forwards user args verbatim into this script's argv; we just
|
|
1357
1357
|
// pass them through to playwright so single-test iteration is
|
|
1358
|
-
// possible (`npm run test:offline
|
|
1358
|
+
// possible (`npm run test:offline -- --grep "PDP form"`).
|
|
1359
1359
|
// Skip our own known flags (currently none after the launcher
|
|
1360
1360
|
// strips them — process.argv[0] is `node`, argv[1] is this
|
|
1361
1361
|
// script).
|
|
@@ -1379,10 +1379,10 @@ async function main() {
|
|
|
1379
1379
|
exitCode = 0;
|
|
1380
1380
|
}
|
|
1381
1381
|
catch (err) {
|
|
1382
|
-
console.error(`[
|
|
1382
|
+
console.error(`[runOfflineTests] failed: ${err.message}`);
|
|
1383
1383
|
}
|
|
1384
1384
|
finally {
|
|
1385
|
-
console.log('[
|
|
1385
|
+
console.log('[runOfflineTests] tearing down…');
|
|
1386
1386
|
// `cleanup()` kills the backend AND drops the DB (with
|
|
1387
1387
|
// preserveDb honored). It's the same function the signal
|
|
1388
1388
|
// handlers call, so the teardown path is identical whether
|
|
@@ -1400,7 +1400,7 @@ async function main() {
|
|
|
1400
1400
|
partnerApi.close(),
|
|
1401
1401
|
]);
|
|
1402
1402
|
if (preserveDb) {
|
|
1403
|
-
console.log(`[
|
|
1403
|
+
console.log(`[runOfflineTests] DB preserved: ${dbName}`);
|
|
1404
1404
|
}
|
|
1405
1405
|
}
|
|
1406
1406
|
process.exit(exitCode);
|
|
@@ -1427,23 +1427,23 @@ function loadExtensions() {
|
|
|
1427
1427
|
parsed = JSON.parse(raw);
|
|
1428
1428
|
}
|
|
1429
1429
|
catch (err) {
|
|
1430
|
-
throw new Error(`[
|
|
1430
|
+
throw new Error(`[runOfflineTests] TEST_OFFLINE_EXTENSIONS_JSON is not valid JSON: ${err.message}`);
|
|
1431
1431
|
}
|
|
1432
1432
|
if (!Array.isArray(parsed)) {
|
|
1433
|
-
throw new Error(`[
|
|
1433
|
+
throw new Error(`[runOfflineTests] TEST_OFFLINE_EXTENSIONS_JSON must be a JSON array; got ${typeof parsed}`);
|
|
1434
1434
|
}
|
|
1435
1435
|
const out = [];
|
|
1436
1436
|
for (const entry of parsed) {
|
|
1437
1437
|
if (typeof entry !== 'object' || entry === null) {
|
|
1438
|
-
throw new Error(`[
|
|
1438
|
+
throw new Error(`[runOfflineTests] extension entry must be an object: ${JSON.stringify(entry)}`);
|
|
1439
1439
|
}
|
|
1440
1440
|
const e = entry;
|
|
1441
1441
|
if (typeof e.name !== 'string' || typeof e.rootDir !== 'string') {
|
|
1442
|
-
throw new Error(`[
|
|
1442
|
+
throw new Error(`[runOfflineTests] each extension needs { name: string, rootDir: string }; got ${JSON.stringify(entry)}`);
|
|
1443
1443
|
}
|
|
1444
1444
|
const rootDir = resolve(process.cwd(), e.rootDir);
|
|
1445
1445
|
if (!existsSync(rootDir)) {
|
|
1446
|
-
throw new Error(`[
|
|
1446
|
+
throw new Error(`[runOfflineTests] extension rootDir does not exist: ${rootDir}`);
|
|
1447
1447
|
}
|
|
1448
1448
|
out.push({
|
|
1449
1449
|
name: e.name,
|
|
@@ -1452,7 +1452,7 @@ function loadExtensions() {
|
|
|
1452
1452
|
});
|
|
1453
1453
|
}
|
|
1454
1454
|
if (out.length > 0) {
|
|
1455
|
-
console.log(`[
|
|
1455
|
+
console.log(`[runOfflineTests] loaded ${out.length} extension(s): ${out.map((e) => `${e.name}=${e.rootDir}`).join(', ')}`);
|
|
1456
1456
|
}
|
|
1457
1457
|
return out;
|
|
1458
1458
|
}
|
|
@@ -1564,7 +1564,7 @@ function seedExploreProducts(state) {
|
|
|
1564
1564
|
state.addCollection({ handle: 'frontpage', title: 'Home page', productHandles: handles });
|
|
1565
1565
|
}
|
|
1566
1566
|
async function runSupervisor(workers) {
|
|
1567
|
-
console.log(`[
|
|
1567
|
+
console.log(`[runOfflineTests] supervisor: spawning ${workers} shard(s)…`);
|
|
1568
1568
|
// Pre-build: each child would otherwise duplicate the build (or
|
|
1569
1569
|
// race on the cache). Build here once, then pass SKIP_BUILD=true
|
|
1570
1570
|
// to children. The build cache check still runs (cheap), so this
|
|
@@ -1576,10 +1576,10 @@ async function runSupervisor(workers) {
|
|
|
1576
1576
|
? readFileSync(buildCachePath, 'utf8').trim()
|
|
1577
1577
|
: null;
|
|
1578
1578
|
if (cachedHash === currentBuildHash) {
|
|
1579
|
-
console.log(`[
|
|
1579
|
+
console.log(`[runOfflineTests] supervisor: build cache HIT (${currentBuildHash.slice(0, 12)})`);
|
|
1580
1580
|
}
|
|
1581
1581
|
else {
|
|
1582
|
-
console.log(`[
|
|
1582
|
+
console.log(`[runOfflineTests] supervisor: build cache MISS — running npm run build…`);
|
|
1583
1583
|
execSync('npm run build', {
|
|
1584
1584
|
stdio: 'inherit',
|
|
1585
1585
|
// `TEST_OFFLINE=true` switches the consuming app's
|
|
@@ -1612,7 +1612,7 @@ async function runSupervisor(workers) {
|
|
|
1612
1612
|
};
|
|
1613
1613
|
children.push(new Promise((resolveChild, rejectChild) => {
|
|
1614
1614
|
// Re-exec ourselves through `node --import tsx` so TS still
|
|
1615
|
-
// parses. argv[1] points at the user's `
|
|
1615
|
+
// parses. argv[1] points at the user's `runOfflineTests.ts`
|
|
1616
1616
|
// by the time we're invoked from the consuming app's
|
|
1617
1617
|
// npm script.
|
|
1618
1618
|
const proc = spawn(process.execPath, ['--import', 'tsx', childScript], { stdio: 'inherit', env: childEnv });
|
|
@@ -1622,11 +1622,11 @@ async function runSupervisor(workers) {
|
|
|
1622
1622
|
}
|
|
1623
1623
|
const exitCodes = await Promise.all(children);
|
|
1624
1624
|
const worst = exitCodes.reduce((a, b) => Math.max(a, b), 0);
|
|
1625
|
-
console.log(`[
|
|
1625
|
+
console.log(`[runOfflineTests] supervisor: shard exit codes [${exitCodes.join(', ')}]; overall=${worst}`);
|
|
1626
1626
|
return worst;
|
|
1627
1627
|
}
|
|
1628
1628
|
main().catch((err) => {
|
|
1629
1629
|
console.error(err);
|
|
1630
1630
|
process.exit(1);
|
|
1631
1631
|
});
|
|
1632
|
-
//# sourceMappingURL=
|
|
1632
|
+
//# sourceMappingURL=runOfflineTests.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runOfflineTests.js","sourceRoot":"","sources":["../../src/scripts/runOfflineTests.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAqB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,oBAAoB,GAErB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACjG,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,eAAe,GAGhB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,qCAAqC,CAAC;AAC3D,OAAO,EACL,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,GAIhB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,uBAAuB,EACvB,WAAW,GAEZ,MAAM,yCAAyC,CAAC;AAEjD,MAAM,uBAAuB,GAAG,IAAI,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AACtF,MAAM,OAAO,GAAG,WAAW,CAAC;AAC5B,MAAM,OAAO,GAAG,MAAM,CAAC;AACvB,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAEjC,MAAM,mBAAmB,GAAG,yBAAyB,CAAC;AACtD,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,eAAe,CAAC;AAChF,8DAA8D;AAC9D,qEAAqE;AACrE,kEAAkE;AAClE,qEAAqE;AACrE,uDAAuD;AACvD,MAAM,cAAc,GAAG,cAAc,CAAC;AAMtC,SAAS,WAAW;IAClB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,sBAAsB,OAAO,GAAG,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAgB,CAAC;IACrE,IAAI,CAAC,GAAG,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAClE,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,KAAK,CAAC,IAAY;IACzB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;IACpE,OAAO,gBAAgB,IAAI,IAAI,OAAO,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,mBAAmB,CAAC,MAAc;IACzC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CACrB,WAAW,OAAO,OAAO,OAAO,4EAA4E,MAAM,MAAM,EACxH,EAAE,QAAQ,EAAE,MAAM,EAAE,CACrB,CAAC;QACF,MAAM,OAAO,GAAG,MAAM;aACnB,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACjC,OAAO,CAAC,GAAG,CAAC,uCAAuC,OAAO,CAAC,MAAM,gBAAgB,CAAC,CAAC;QACnF,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,2DAA2D;gBAC3D,2DAA2D;gBAC3D,+BAA+B;gBAC/B,QAAQ,CAAC,qBAAqB,OAAO,OAAO,OAAO,IAAI,IAAI,6BAA6B,OAAO,OAAO,OAAO,IAAI,IAAI,EAAE,EAAE;oBACvH,KAAK,EAAE,QAAQ;iBAChB,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,6DAA6D;gBAC7D,yDAAyD;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,2DAA2D;QAC3D,kDAAkD;QAClD,OAAO,CAAC,IAAI,CAAC,+CAAgD,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACxF,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,eAAe,CAAC,MAAc,EAAE,UAAkB,EAAE,MAAc;IACzE,OAAO,KAAK,IAAI,EAAE;QAChB,iEAAiE;QACjE,gEAAgE;QAChE,8DAA8D;QAC9D,yDAAyD;QACzD,2BAA2B;QAC3B,MAAM,OAAO;QACX,6DAA6D;QAC7D,8DAA8D;QAC9D,gCAAgC;QAChC,4EAA4E;YAC5E,oBAAoB,UAAU,OAAO,UAAU,mDAAmD,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK;YACjI,iCAAiC;YACjC,+GAA+G,CAAC;QAClH,MAAM,GAAG,GAAG;;;;;;;;;;;;;QAaR,OAAO;;KAEV,CAAC;QACF,yDAAyD;QACzD,0DAA0D;QAC1D,0DAA0D;QAC1D,yCAAyC;QACzC,MAAM,OAAO,GAAG,OAAO,CACrB,MAAM,EAAE,EACR,oBAAoB,UAAU,EAAE,MAAM,CACvC,CAAC;QACF,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC;YACH,QAAQ,CACN,WAAW,OAAO,OAAO,OAAO,OAAO,MAAM,0BAA0B,OAAO,EAAE,EAChF,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CACtC,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAI,GAA2B,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YACrE,MAAM,MAAM,GAAI,GAA2B,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YACrE,MAAM,IAAI,KAAK,CACb,0BAA2B,GAAa,CAAC,OAAO,IAAI;gBAClD,WAAW,MAAM,aAAa,MAAM,0CAA0C,OAAO,EAAE,CAC1F,CAAC;QACJ,CAAC;QACD,IAAI,CAAC;YACH,UAAU,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,KAAK,UAAU,YAAY,CAAC,GAAW,EAAE,SAAiB;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC3B,QAAQ,EAAE,QAAQ;gBAClB,8DAA8D;gBAC9D,UAAU,EAAE,uBAA8B;aAC5B,CAAC,CAAC;YAClB,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO;QAC7B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAI,CAAW,CAAC,OAAO,CAAC;QACjC,CAAC;QACD,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,iBAAiB,OAAO,EAAE,CAAC,CAAC;AAClF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,kBAAkB;IACzB,8DAA8D;IAC9D,kEAAkE;IAClE,6DAA6D;IAC7D,gEAAgE;IAChE,gEAAgE;IAChE,YAAY;IAEZ,kEAAkE;IAClE,kEAAkE;IAClE,sDAAsD;IACtD,gEAAgE;IAChE,8DAA8D;IAC9D,iEAAiE;IACjE,kBAAkB;IAClB,MAAM,SAAS,GAAG,YAAY,CAAC;IAC/B,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,CAAC;QACH,YAAY,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,oCAAoC,SAAS,6BAA6B,CAAC,CAAC;QACzF,OAAO;IACT,CAAC;IACD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI;QACjB,yBAAyB;QACzB,mBAAmB;QACnB,iBAAiB;QACjB,0DAA0D;QAC1D,2DAA2D;QAC3D,iDAAiD;QACjD,oDAAoD;QACpD,sBAAsB;QACtB,kEAAkE;QAClE,iEAAiE;QACjE,uEAAuE;QACvE,sBAAsB;KACvB,EAAE,CAAC;QACF,IAAI,CAAC,IAAI,MAAM,CAAC,uBAAuB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAClG,UAAU,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,+DAA+D;QAC/D,+BAA+B;IACjC,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,aAAa,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,2BAA2B,UAAU,CAAC,MAAM,qBAAqB,CAAC,CAAC;QACjF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CACV,qCAAqC,SAAS,KAAM,GAAa,CAAC,OAAO,IAAI;gBAC3E,wEAAwE,CAC3E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,8DAA8D;IAC9D,6DAA6D;IAC7D,+DAA+D;IAC/D,MAAM,cAAc,GAAG,8CAA8C,CAAC;IACtE,IAAI,CAAC;QACH,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,QAAQ,GAAG,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;QACD,IAAI,QAAQ,KAAK,gBAAgB,EAAE,CAAC;YAClC,aAAa,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;YAChD,QAAQ,CAAC,gDAAgD,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,cAAc,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,gDAAiD,GAAa,CAAC,OAAO,IAAI;YACxE,uCAAuC,CAC1C,CAAC;IACJ,CAAC;IAED,2DAA2D;IAC3D,8DAA8D;IAC9D,+DAA+D;IAC/D,2DAA2D;IAC3D,+DAA+D;IAC/D,4DAA4D;IAC5D,6DAA6D;IAC7D,sCAAsC;IACtC,EAAE;IACF,yBAAyB;IACzB,kEAAkE;IAClE,8CAA8C;IAC9C,4DAA4D;IAC5D,4CAA4C;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,aAAa,CAAC;QAC9D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACvC,QAAQ,CAAC,uCAAuC,MAAM,EAAE,EAAE;gBACxD,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;QACL,CAAC;QACD,2DAA2D;QAC3D,MAAM,SAAS,GAAG,kBAAkB,CAAC;QACrC,aAAa,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAC3C,6DAA6D;QAC7D,QAAQ,CACN,mBAAmB,MAAM,wCAAwC,EACjE,EAAE,KAAK,EAAE,QAAQ,EAAE,CACpB,CAAC;QACF,QAAQ,CACN,mBAAmB,MAAM,8BAA8B,SAAS,EAAE,EAClE,EAAE,KAAK,EAAE,QAAQ,EAAE,CACpB,CAAC;QACF,UAAU,CAAC,SAAS,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,4DAA6D,GAAa,CAAC,OAAO,IAAI;YACpF,qFAAqF,CACxF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,KAAK,UAAU,uBAAuB;IACpC,8DAA8D;IAC9D,oDAAoD;IACpD,IAAI,QAAQ,GAAkB,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,WAAW;YAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;IACrE,CAAC;IAED,IAAI,QAAyB,CAAC;IAC9B,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,oBAAoB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,sEAAsE;YACpE,GAAI,GAAa,CAAC,OAAO,qCAAqC;YAC9D,4CAA4C,CAC/C,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,gEAAgE;QAChE,iEAAiE;QACjE,gEAAgE;QAChE,2DAA2D;QAC3D,kEAAkE;QAClE,+DAA+D;QAC/D,aAAa,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CACT,yDAAyD;YACvD,sBAAsB,QAAQ,CAAC,CAAC,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC,CAAC,mBAAmB,GAAG,CACnF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,wDAAwD;YACtD,GAAI,GAAa,CAAC,OAAO,2CAA2C,CACvE,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAS,oBAAoB;IAC3B,MAAM,SAAS,GAAG,OAAO,CACvB,OAAO,CAAC,GAAG,EAAE,EACb,+EAA+E,CAChF,CAAC;IACF,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,2BAA2B,SAAS,oBAAoB;YACtD,kEAAkE;YAClE,gBAAgB,CACnB,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB;IAC1B,MAAM,SAAS,GAAG,OAAO,CACvB,OAAO,CAAC,GAAG,EAAE,EACb,mFAAmF,CACpF,CAAC;IACF,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,gCAAgC,SAAS,oBAAoB;YAC3D,kEAAkE;YAClE,gBAAgB,CACnB,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,GAA2B,EAAE,UAAkB;IAClE,mEAAmE;IACnE,kEAAkE;IAClE,oDAAoD;IACpD,MAAM,OAAO,GAAG,OAAO,CACrB,OAAO,CAAC,GAAG,EAAE,EACb,iBAAiB,UAAU,EAAE,MAAM,CACpC,CAAC;IACF,MAAM,MAAM,GAAG;QACb,gDAAgD;QAChD,oCAAoC;QACpC,+BAA+B;QAC/B,2BAA2B,UAAU,MAAM;QAC3C,eAAe;QACf,aAAa;QACb,oBAAoB,UAAU,IAAI;QAClC,cAAc,UAAU,IAAI;QAC5B,4BAA4B;QAC5B,sBAAsB;QACtB,uCAAuC;QACvC,sCAAsC;QACtC,MAAM;QACN,KAAK;QACL,6BAA6B;QAC7B,kCAAkC;KACnC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,IAAI,CAAC;QACH,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/B,QAAQ,CAAC,QAAQ,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACzD,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,UAAU,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,KAAK,UAAU,IAAI;IACjB,uEAAuE;IACvE,iEAAiE;IACjE,gEAAgE;IAChE,yDAAyD;IACzD,0DAA0D;IAC1D,yDAAyD;IACzD,8DAA8D;IAC9D,gDAAgD;IAChD,EAAE;IACF,kEAAkE;IAClE,kEAAkE;IAClE,mEAAmE;IACnE,kEAAkE;IAClE,yDAAyD;IACzD,wDAAwD;IACxD,oEAAoE;IACpE,kCAAkC;IAClC,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,MAAM,EAAE,CAAC;QAChD,OAAO,CAAC,KAAK,CACX,mEAAmE;YACjE,qEAAqE;YACrE,wEAAwE;YACxE,0EAA0E;YAC1E,yCAAyC,CAC5C,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,6DAA6D;IAC7D,qEAAqE;IACrE,kEAAkE;IAClE,+DAA+D;IAC/D,8DAA8D;IAC9D,gEAAgE;IAChE,wCAAwC;IACxC,kBAAkB,EAAE,CAAC;IAErB,+DAA+D;IAC/D,gEAAgE;IAChE,sDAAsD;IACtD,MAAM,eAAe,GAAG,MAAM,uBAAuB,EAAE,CAAC;IAExD,6DAA6D;IAC7D,6DAA6D;IAC7D,+DAA+D;IAC/D,6DAA6D;IAC7D,kEAAkE;IAClE,sDAAsD;IACtD,EAAE;IACF,mEAAmE;IACnE,kEAAkE;IAClE,sBAAsB;IACtB,EAAE;IACF,oEAAoE;IACpE,iEAAiE;IACjE,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC/B,CAAC,EACD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,GAAG,CAAC,CACnD,CAAC;IACF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;QACxD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACjD,CAAC,CAAC,IAAI,CAAC;IACT,IAAI,gBAAgB,GAAG,CAAC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,4DAA4D;IAC5D,4DAA4D;IAC5D,mDAAmD;IAEnD,oEAAoE;IACpE,+DAA+D;IAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,6DAA6D,CAAC;IACtG,MAAM,gBAAgB,GACpB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;QACrC,4CAA4C,CAAC;IAC/C,MAAM,YAAY,GAAG,UAAU,KAAK,IAAI,CAAC;IACzC,oEAAoE;IACpE,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,IAAI,MAAM,CAAC,CAAC;IACnF,MAAM,WAAW,GAAG,MAAM,CACxB,YAAY,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CACpE,CAAC;IACF,mEAAmE;IACnE,8DAA8D;IAC9D,6DAA6D;IAC7D,6DAA6D;IAC7D,WAAW;IACX,MAAM,UAAU,GAAG,oBAAoB,WAAW,EAAE,CAAC;IACrD,oEAAoE;IACpE,mEAAmE;IACnE,iCAAiC;IACjC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,KAAK,MAAM,CAAC;IAEpE,6DAA6D;IAC7D,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,GAAG,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAChF,MAAM,MAAM,GAAG,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;IAChE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,MAAM,CAAC;IAE9D,OAAO,CAAC,GAAG,CAAC,8BAA8B,MAAM,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC;IAExD,6DAA6D;IAC7D,yCAAyC;IACzC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,QAAQ,CAAC,eAAe,OAAO,OAAO,OAAO,IAAI,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAEjF,4DAA4D;IAC5D,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC;QAC1B,IAAI,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE;KAC7E,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,WAAW,mBAAmB,EAAE,CAAC;IAEpD,oDAAoD;IACpD,iEAAiE;IACjE,oEAAoE;IACpE,+DAA+D;IAC/D,qDAAqD;IACrD,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAElC,+DAA+D;IAC/D,6DAA6D;IAC7D,6DAA6D;IAC7D,gEAAgE;IAChE,8DAA8D;IAC9D,wCAAwC;IACxC,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,MAAM,EAAE,CAAC;QACnD,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,iEAAiE;IACjE,6DAA6D;IAC7D,iEAAiE;IACjE,6DAA6D;IAC7D,8DAA8D;IAC9D,MAAM,QAAQ,GAAG,WAAW,CAAC;IAC7B,MAAM,SAAS,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAElD,qEAAqE;IACrE,yDAAyD;IACzD,gEAAgE;IAChE,yDAAyD;IACzD,EAAE;IACF,gEAAgE;IAChE,iEAAiE;IACjE,mEAAmE;IACnE,kDAAkD;IAClD,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IAEpC,8DAA8D;IAC9D,4DAA4D;IAC5D,8DAA8D;IAC9D,0DAA0D;IAC1D,6CAA6C;IAC7C,MAAM,yBAAyB,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC;QAC7E,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAE,CAAC;QACxE,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,yBAAyB,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CACb,8DAA8D,yBAAyB,+BAA+B;YACpH,qFAAqF,CACxF,CAAC;IACJ,CAAC;IAED,uDAAuD;IACvD,+DAA+D;IAC/D,+DAA+D;IAC/D,0DAA0D;IAC1D,4DAA4D;IAC5D,4DAA4D;IAC5D,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAEzE,MAAM,cAAc,GAAsB,MAAM,eAAe,CAC7D,mBAAmB,CAAC;QAClB,KAAK;QACL,KAAK,EAAE,IAAI;QACX,eAAe,EAAE,UAAU;QAC3B,kBAAkB,EAAE,IAAI;QACxB,UAAU;QACV,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;QAC/B,GAAG,CAAC,yBAAyB;YAC3B,CAAC,CAAC,EAAE,yBAAyB,EAAE;YAC/B,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,EACF,SAAS,CACV,CAAC;IACF,MAAM,QAAQ,GAAoB,MAAM,aAAa,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IAC5F,MAAM,aAAa,GAAyB,MAAM,kBAAkB,CAClE,mBAAmB,CAAC,EAAE,KAAK,EAAE,CAAC,EAC9B,SAAS,CACV,CAAC;IACF,MAAM,UAAU,GAAsB,MAAM,eAAe,CACzD,gBAAgB,CAAC,EAAE,KAAK,EAAE,CAAC,EAC3B,SAAS,CACV,CAAC;IACF,MAAM,UAAU,GAAqB,MAAM,cAAc,CACvD,kBAAkB,CAAC;QACjB,KAAK;QACL,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,cAAc;QACxB,SAAS,EAAE,uBAAuB;KACnC,CAAC,EACF,SAAS,CACV,CAAC;IACF,OAAO,CAAC,GAAG,CACT,kCAAkC;QAChC,oBAAoB,UAAU,CAAC,OAAO,IAAI;QAC1C,oBAAoB,QAAQ,CAAC,OAAO,IAAI;QACxC,sBAAsB,aAAa,CAAC,OAAO,IAAI;QAC/C,oBAAoB,cAAc,CAAC,OAAO,IAAI;QAC9C,oBAAoB,UAAU,CAAC,OAAO,EAAE,CAC3C,CAAC;IACF,gEAAgE;IAChE,MAAM,MAAM,GAA4D;QACtE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,OAAO,oBAAoB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;QAC1F,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,OAAO,iCAAiC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,EAAE;QAC/L,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,OAAO,2BAA2B,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,EAAE;QACnM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;QAClF,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC,OAAO,0BAA0B,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;KAClH,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,IAAI,YAAa,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,gEAAgE;IAChE,yDAAyD;IACzD,gEAAgE;IAChE,eAAe;IACf,EAAE;IACF,iEAAiE;IACjE,mEAAmE;IACnE,uEAAuE;IACvE,iEAAiE;IACjE,mEAAmE;IACnE,iEAAiE;IACjE,yBAAyB;IACzB,EAAE;IACF,qEAAqE;IACrE,kEAAkE;IAClE,6DAA6D;IAC7D,oEAAoE;IACpE,sDAAsD;IACtD,EAAE;IACF,mEAAmE;IACnE,gEAAgE;IAChE,mEAAmE;IACnE,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC;QAChC,QAAQ,EAAE;YACR,UAAU,EAAE,cAAc,CAAC,OAAO;YAClC,QAAQ,EAAE,QAAQ,CAAC,OAAO;YAC1B,aAAa,EAAE,aAAa,CAAC,OAAO;YACpC,UAAU,EAAE,UAAU,CAAC,OAAO;YAC9B,UAAU,EAAE,UAAU,CAAC,OAAO;SAC/B;QACD,UAAU,EAAE,mBAAmB;QAC/B,6DAA6D;QAC7D,4DAA4D;QAC5D,6CAA6C;QAC7C,+DAA+D;QAC/D,+DAA+D;QAC/D,iCAAiC;QACjC,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,GAAG;KACV,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAE7D,6DAA6D;IAC7D,uEAAuE;IACvE,gEAAgE;IAChE,qEAAqE;IACrE,qEAAqE;IACrE,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CACT,8CAA8C,SAAS,CAAC,IAAI,eAAe,OAAO,IAAI,OAAO,EAAE,CAChG,CAAC;IAEF,6DAA6D;IAC7D,MAAM,SAAS,GAAG,oBAAoB,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IACvC,MAAM,UAAU,GAAsB;QACpC,qEAAqE;QACrE,mEAAmE;QACnE,oEAAoE;QACpE,oEAAoE;QACpE,qEAAqE;QACrE,wDAAwD;QACxD,uEAAuE;QACvE,oEAAoE;QACpE,qEAAqE;QACrE,sEAAsE;QACtE,+DAA+D;QAC/D,mEAAmE;QACnE,+DAA+D;QAC/D,uCAAuC;QACvC,GAAG,OAAO,CAAC,GAAG;QACd,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE;QAC/B,oEAAoE;QACpE,uEAAuE;QACvE,mDAAmD;QACnD,oEAAoE;QACpE,8DAA8D;QAC9D,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO;QACpC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE;QAC/B,QAAQ,EAAE,MAAM;QAChB,YAAY,EAAE,MAAM;QACpB,UAAU,EAAE,MAAM;QAClB,sEAAsE;QACtE,2EAA2E;QAC3E,yEAAyE;QACzE,yEAAyE;QACzE,wEAAwE;QACxE,wEAAwE;QACxE,2EAA2E;QAC3E,wEAAwE;QACxE,oEAAoE;QACpE,sBAAsB,EAAE,MAAM;QAC9B,kEAAkE;QAClE,wDAAwD;QACxD,eAAe,EAAE,cAAc;QAC/B,kBAAkB,EAAE,uBAAuB;QAC3C,MAAM,EAAE,MAAM;QACd,eAAe,EAAE,UAAU;QAC3B,IAAI,EAAE,WAAW;QACjB,iEAAiE;QACjE,oEAAoE;QACpE,kEAAkE;QAClE,+DAA+D;QAC/D,oEAAoE;QACpE,mEAAmE;QACnE,iEAAiE;QACjE,4DAA4D;QAC5D,iDAAiD;QACjD,0BAA0B,EAAE,EAAE;QAC9B,uBAAuB,EAAE,EAAE;QAC3B,yDAAyD;QACzD,kEAAkE;QAClE,2DAA2D;QAC3D,oEAAoE;QACpE,4DAA4D;QAC5D,YAAY,EACV,YAAY,IAAI,CAAC,SAAS,CAAC,UAAU,SAAS,EAAE,CAAC,GAAG;YACpD,YAAY,IAAI,CAAC,SAAS,CAAC,UAAU,QAAQ,EAAE,CAAC,GAAG;YACnD,gDAAgD;QAClD,iEAAiE;QACjE,kEAAkE;QAClE,sDAAsD;QACtD,8BAA8B,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;QACtD,gEAAgE;QAChE,+DAA+D;QAC/D,iDAAiD;QACjD,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC;YAClD,CAAC,CAAC,EAAE,iCAAiC,EAAE,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,EAAE;YACzF,CAAC,CAAC,EAAE,CAAC;QACP,+BAA+B,EAAE,QAAQ,CAAC,OAAO;QACjD,6DAA6D;QAC7D,4DAA4D;QAC5D,0DAA0D;QAC1D,gEAAgE;QAChE,uDAAuD;QACvD,iCAAiC,EAAE,UAAU,CAAC,OAAO;QACrD,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,WAAW;QAC5D,+BAA+B,EAC7B,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,IAAI,UAAU;QAC9D,4BAA4B,EAC1B,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,IAAI,oBAAoB;QACrE,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,MAAM;QACzD,YAAY,EAAE,MAAM;QACpB,iDAAiD;QACjD,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;YACnC,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE;YAC3D,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,kEAAkE;IAClE,iEAAiE;IACjE,4DAA4D;IAC5D,iEAAiE;IACjE,iEAAiE;IACjE,+DAA+D;IAC/D,iEAAiE;IACjE,+DAA+D;IAC/D,MAAM,SAAS,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC;IACpC,OAAO,SAAS,CAAC,cAAc,CAAC,CAAC;IACjC,QAAQ,CAAC,2BAA2B,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IAE5E,sEAAsE;IACtE,uEAAuE;IACvE,yEAAyE;IACzE,yCAAyC;IACzC,uEAAuE;IACvE,sEAAsE;IACtE,4EAA4E;IAC5E,uCAAuC;IACvC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,wCAAwC,CAAC,CAAC;IACrF,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;QACjG,QAAQ,CACN,WAAW,OAAO,OAAO,OAAO,OAAO,MAAM,0BAA0B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,EACpG,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CACrC,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,IAAI,CAAC;QACH,WAAW,CAAC,SAAmC,EAAE,mBAAmB,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,uDAAwD,GAAa,CAAC,OAAO,EAAE,CAChF,CAAC;IACJ,CAAC;IAED,6DAA6D;IAC7D,IAAI,GAAG,GAAwB,IAAI,CAAC;IAEpC;;;;;;;;;;;;OAYG;IACH,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,CAAC;YAAC,MAAM,CAAC;gBACP,yCAAyC;YAC3C,CAAC;QACH,CAAC;QACD,gEAAgE;QAChE,6DAA6D;QAC7D,IAAI,CAAC;YACH,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,0DAA0D;gBAC1D,wDAAwD;gBACxD,+CAA+C;gBAC/C,QAAQ,CACN,qBAAqB,OAAO,OAAO,OAAO,IAAI,MAAM,6BAA6B,OAAO,OAAO,OAAO,IAAI,MAAM,EAAE,EAClH,EAAE,KAAK,EAAE,QAAQ,EAAE,CACpB,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,2DAA2D;gBAC3D,yBAAyB;YAC3B,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF;;;;;OAKG;IACH,MAAM,QAAQ,GAAG,CAAC,GAAyB,EAAQ,EAAE;QACnD,OAAO,CAAC,GAAG,CAAC,gCAAgC,GAAG,iBAAiB,CAAC,CAAC;QAClE,OAAO,EAAE,CAAC;QACV,+CAA+C;QAC/C,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAEjD,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,CAAC;QACH,iEAAiE;QACjE,gEAAgE;QAChE,4DAA4D;QAC5D,gEAAgE;QAChE,sBAAsB;QACtB,EAAE;QACF,gEAAgE;QAChE,gEAAgE;QAChE,6DAA6D;QAC7D,8DAA8D;QAC9D,wDAAwD;QACxD,EAAE;QACF,+DAA+D;QAC/D,8DAA8D;QAC9D,yDAAyD;QACzD,yDAAyD;QACzD,iDAAiD;QACjD,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,yBAAyB,CAAC,CAAC;QACzE,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,KAAK,MAAM,CAAC;QACtE,MAAM,UAAU,GACd,CAAC,UAAU,IAAI,UAAU,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,uBAAuB,CAAC;YAC9E,CAAC,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE;YAC7C,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,wBAAwB,GAAG,SAAS,CAAC;QAC3C,MAAM,qBAAqB,GAAG,UAAU,KAAK,gBAAgB,CAAC;QAE9D,IAAI,wBAAwB,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;QACjF,CAAC;aAAM,IAAI,qBAAqB,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CACT,sCAAsC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,8BAA8B;gBAC/F,2CAA2C,CAC9C,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CACT,8DAA8D;gBAC5D,IAAI,UAAU,CAAC,CAAC,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAC5G,CAAC;YACF,QAAQ,CAAC,eAAe,EAAE;gBACxB,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE;aAC/C,CAAC,CAAC;YACH,yDAAyD;YACzD,4DAA4D;YAC5D,aAAa,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QAC1E,8DAA8D;QAC9D,6DAA6D;QAC7D,4DAA4D;QAC5D,8DAA8D;QAC9D,kBAAkB;QAClB,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,+BAA+B,CAAC,CAAC;QAC9E,MAAM,iBAAiB,GAAsB;YAC3C,GAAG,UAAU;YACb,IAAI,EAAE,WAAW;YACjB,6DAA6D;YAC7D,4DAA4D;YAC5D,8CAA8C;YAC9C,2DAA2D;YAC3D,kBAAkB;YAClB,QAAQ,EAAE,MAAM;SACjB,CAAC;QACF,8DAA8D;QAC9D,qEAAqE;QACrE,sEAAsE;QACtE,kEAAkE;QAClE,oEAAoE;QACpE,qEAAqE;QACrE,gEAAgE;QAChE,oEAAoE;QACpE,+DAA+D;QAC/D,OAAO,iBAAiB,CAAC,IAAI,CAAC;QAC9B,GAAG,GAAG,KAAK,CACT,aAAa,EACb,CAAC,yBAAyB,CAAC,EAC3B;YACE,iEAAiE;YACjE,kEAAkE;YAClE,8DAA8D;YAC9D,6CAA6C;YAC7C,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;YAChC,GAAG,EAAE,iBAAiB;SACvB,CACF,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,4CAA4C,UAAU,GAAG,CAAC,CAAC;QACvE,MAAM,YAAY,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAEhD,8DAA8D;QAC9D,iEAAiE;QACjE,8DAA8D;QAC9D,mEAAmE;QACnE,kEAAkE;QAClE,4DAA4D;QAC5D,+DAA+D;QAC/D,gEAAgE;QAChE,4BAA4B;QAC5B,EAAE;QACF,iEAAiE;QACjE,iEAAiE;QACjE,+DAA+D;QAC/D,kEAAkE;QAClE,kCAAkC;QAClC,EAAE;QACF,2DAA2D;QAC3D,iDAAiD;QACjD,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC;YACpC,IAAI,EAAE,mBAAmB;YACzB,QAAQ,EAAE,cAAc;YACxB,MAAM,EAAE,uBAAuB;SAChC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,mBAAmB,QAAQ,CAAC,CAAC,QAAQ,CACrE,QAAQ,CACT,CAAC;QACF,MAAM,WAAW,GACf,QAAQ,kBAAkB,CAAC,UAAU,CAAC,EAAE;YACxC,SAAS,mBAAmB,EAAE;YAC9B,aAAa;YACb,aAAa,WAAW,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG;YACnB,+DAA+D;YAC/D,iEAAiE;YACjE,4DAA4D;YAC5D,QAAQ,WAAW,EAAE;YACrB,QAAQ,WAAW,qBAAqB;YACxC,QAAQ,WAAW,4BAA4B;YAC/C,4DAA4D;YAC5D,oBAAoB,WAAW,EAAE;YACjC,oBAAoB,WAAW,iCAAiC;SACjE,CAAC;QACF,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CACrC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,GAAG,IAAI,EAAE,EAAE;oBAC/C,OAAO,EAAE;wBACP,aAAa,EAAE,UAAU,WAAW,EAAE;wBACtC,oDAAoD;wBACpD,mDAAmD;wBACnD,kDAAkD;wBAClD,8CAA8C;wBAC9C,YAAY,EACV,qEAAqE;4BACrE,oDAAoD;qBACvD;oBACD,QAAQ,EAAE,QAAQ;iBACnB,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBAClC,OAAO;oBACL,IAAI;oBACJ,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM;oBACvB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI;iBAC/C,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,EAAE,IAAI,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;YAC1E,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QACF,OAAO,CAAC,GAAG,CACT,0CAA0C,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAChE,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC9B,MAAM,MAAM,GACV,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACzF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,0DAA0D;QAC1D,2DAA2D;QAC3D,iEAAiE;QACjE,oEAAoE;QACpE,+DAA+D;QAC/D,6DAA6D;QAC7D,iEAAiE;QACjE,sDAAsD;QACtD,mDAAmD;QACnD,gEAAgE;QAChE,+DAA+D;QAC/D,EAAE;QACF,4DAA4D;QAC5D,4DAA4D;QAC5D,6DAA6D;QAC7D,OAAO;QACP,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,MAAM,EAAE,CAAC;YACnD,MAAM,QAAQ,GACZ,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;gBACvC,6CAA6C,kBAAkB,MAAM,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,6BAA6B,mBAAmB,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,6BAA6B,mBAAmB,uBAAuB,CAAC,CAAC;YACrF,OAAO,CAAC,GAAG,CAAC,6BAA6B,mBAAmB,OAAO,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAE/B,2DAA2D;YAC3D,4CAA4C;YAC5C,EAAE;YACF,6DAA6D;YAC7D,8DAA8D;YAC9D,8DAA8D;YAC9D,6CAA6C;YAC7C,+DAA+D;YAC/D,8DAA8D;YAC9D,4DAA4D;YAC5D,sDAAsD;YACtD,2DAA2D;YAC3D,4DAA4D;YAC5D,wCAAwC;YACxC,4DAA4D;YAC5D,iDAAiD;YACjD,EAAE;YACF,yDAAyD;YACzD,0DAA0D;YAC1D,2DAA2D;YAC3D,4DAA4D;YAC5D,8DAA8D;YAC9D,mBAAmB;YACnB,IAAI,CAAC;gBACH,MAAM,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACnE,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;YAED,4DAA4D;YAC5D,yEAAyE;YACzE,kEAAkE;YAClE,iEAAiE;YACjE,kDAAkD;YAClD,4DAA4D;YAC5D,8DAA8D;YAC9D,0BAA0B;YAC1B,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC1D,MAAM,WAAW,GAAG,gBAAgB,CAAC,QAAQ,CAAC;YAC9C,UAAU,CAAC,kBAAkB,CAAC,CAAC;YAC/B,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,uBAAuB,CAC1D,sBAAsB,EACtB;gBACE,QAAQ,EAAE,KAAK;gBACf,iBAAiB,EAAE,IAAI;gBACvB,2DAA2D;gBAC3D,0DAA0D;gBAC1D,sDAAsD;gBACtD,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;gBACtC,wDAAwD;gBACxD,yCAAyC;gBACzC,SAAS,EACP,qEAAqE;oBACrE,oDAAoD;gBACtD,IAAI,EAAE;oBACJ,cAAc;oBACd,gBAAgB;oBAChB,4BAA4B;oBAC5B,gEAAgE;oBAChE,wOAAwO;oBACxO,2DAA2D;oBAC3D,kCAAkC;oBAClC,kHAAkH;oBAClH,sDAAsD;oBACtD,uDAAuD;oBACvD,yDAAyD;oBACzD,4CAA4C;oBAC5C,uBAAuB;oBACvB,kDAAkD;oBAClD,mDAAmD;oBACnD,sDAAsD;oBACtD,wDAAwD;oBACxD,sDAAsD;oBACtD,wCAAwC;oBACxC,iDAAiD;oBACjD,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,KAAK,GAAG;wBACzD,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC;iBACvC;aACF,CACF,CAAC;YACF,MAAM,WAAW,GACf,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,MAAM,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAEpE,gEAAgE;YAChE,iEAAiE;YACjE,kEAAkE;YAClE,gEAAgE;YAChE,6DAA6D;YAC7D,MAAM,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC;gBAClD,WAAW,mBAAmB,GAAG,CAAC;YACpC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;gBAC1C,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACtE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CACX,6DAA8D,GAAa,CAAC,OAAO,gBAAgB,CACpG,CAAC;YACJ,CAAC;YACD,iDAAiD;YACjD,MAAM,WAAW,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,+BAA+B,aAAa,EAAE,CAAC,CAAC;YAE5D,oCAAoC;YACpC,mEAAmE;YACnE,+DAA+D;YAC/D,8DAA8D;YAC9D,MAAM,IAAI,OAAO,CAAO,CAAC,WAAW,EAAE,EAAE;gBACtC,MAAM,QAAQ,GAAG,GAAG,EAAE;oBACpB,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBACnC,WAAW,EAAE,CAAC;gBAChB,CAAC,CAAC;gBACF,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC5C,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;YACH,QAAQ,GAAG,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QAED,0DAA0D;QAC1D,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,iEAAiE;QACjE,oDAAoD;QACpD,yEAAyE;QACzE,qEAAqE;QACrE,oEAAoE;QACpE,+DAA+D;QAC/D,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,MAAM,CAAC;QAC3D,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,KAAK,MAAM,CAAC;QACnE,IAAI,QAAQ,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,MAAM,IAAI,CAAC,UAAU,CAAC;QAChF,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,OAAO,EAAE,CAAC;YACZ,+DAA+D;YAC/D,iEAAiE;YACjE,mEAAmE;YACnE,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBACvE,aAAa,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACxD,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS,GAAG,KAAK,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CACX,4EAA4E;oBAC1E,qDAAqD;oBACrD,0EAA0E;oBAC1E,sCAAsC,CACzC,CAAC;gBACF,OAAO,GAAG,KAAK,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC;YAC9C,CAAC;QACH,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBACtC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBAChE,MAAM,EAAE,GAAG,SAAS,CAClB,MAAM,EACN,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,EACjE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CACpC,CAAC;gBACF,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACtB,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;oBACnE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;YACD,WAAW,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;YAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CACX,8EAA8E,CAC/E,CAAC;gBACF,OAAO,GAAG,KAAK,CAAC;gBAChB,QAAQ,GAAG,KAAK,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,OAAO,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CACX,4CAA4C,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,GAAG,CACtF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAsB;YACvC,GAAG,OAAO,CAAC,GAAG;YACd,wEAAwE;YACxE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,mEAAmE;YACnE,0DAA0D;YAC1D,mEAAmE;YACnE,mEAAmE;YACnE,iEAAiE;YACjE,kEAAkE;YAClE,8DAA8D;YAC9D,8CAA8C;YAC9C,YAAY,EAAE,MAAM;YACpB,UAAU,EAAE,MAAM;YAClB,yBAAyB,EAAE,MAAM;YACjC,iCAAiC,EAAE,UAAU,CAAC,OAAO;YACrD,+BAA+B,EAAE,QAAQ,CAAC,OAAO;YACjD,oCAAoC,EAAE,aAAa,CAAC,OAAO;YAC3D,gCAAgC,EAAE,cAAc,CAAC,OAAO;YACxD,6BAA6B,EAAE,UAAU;YACzC,iCAAiC,EAAE,UAAU,CAAC,OAAO;YACrD,6BAA6B,EAAE,mBAAmB;YAClD,4BAA4B,EAAE,kBAAkB;YAChD,2BAA2B,EAAE,cAAc;YAC3C,0BAA0B,EAAE,IAAI,CAAC,OAAO;YACxC,2BAA2B,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,mEAAmE;YACnE,qEAAqE;YACrE,kEAAkE;YAClE,oEAAoE;YACpE,mEAAmE;YACnE,mDAAmD;YACnD,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,WAAW;YAC5D,+BAA+B,EAC7B,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,IAAI,UAAU;YAC9D,4BAA4B,EAC1B,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,IAAI,oBAAoB;YACrE,qEAAqE;YACrE,sEAAsE;YACtE,sCAAsC;YACtC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,MAAM;YACzD,0DAA0D;YAC1D,oEAAoE;YACpE,gEAAgE;YAChE,mEAAmE;YACnE,kEAAkE;YAClE,kEAAkE;YAClE,8BAA8B;SAC/B,CAAC;QACF,uDAAuD;QACvD,4DAA4D;QAC5D,2DAA2D;QAC3D,0CAA0C;QAC1C,+DAA+D;QAC/D,4DAA4D;QAC5D,4DAA4D;QAC5D,2DAA2D;QAC3D,iCAAiC;QACjC,MAAM,cAAc,GAAa;YAC/B,YAAY;YACZ,MAAM;YACN,UAAU;YACV,gBAAgB;SACjB,CAAC;QACF,IAAI,YAAY,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;YACzC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,UAAU,IAAI,gBAAgB,EAAE,CAAC,CAAC;YACpE,6DAA6D;YAC7D,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,sBAAsB,UAAU,EAAE,CAAC,CAAC;YACpE,aAAa,CAAC,wBAAwB,CAAC,GAAG,2BAA2B,UAAU,EAAE,CAAC;QACpF,CAAC;QACD,8DAA8D;QAC9D,+DAA+D;QAC/D,+DAA+D;QAC/D,8DAA8D;QAC9D,0DAA0D;QAC1D,8DAA8D;QAC9D,2DAA2D;QAC3D,WAAW;QACX,sEAAsE;QACtE,+DAA+D;QAC/D,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI;aAC1B,KAAK,CAAC,CAAC,CAAC;aACR,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;QAClD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,cAAc,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,kBAAkB,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE;YAC/E,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;YACpF,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YAClD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,IAAI,kBAAkB,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,+BAA+B,kBAAkB,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,QAAQ,GAAG,CAAC,CAAC;IACf,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,6BAA8B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC/C,uDAAuD;QACvD,yDAAyD;QACzD,2DAA2D;QAC3D,oCAAoC;QACpC,OAAO,EAAE,CAAC;QACV,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;QAEnB,0DAA0D;QAC1D,eAAe,EAAE,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,CAAC,UAAU,CAAC;YACvB,IAAI,CAAC,KAAK,EAAE;YACZ,UAAU,CAAC,KAAK,EAAE;YAClB,QAAQ,CAAC,KAAK,EAAE;YAChB,aAAa,CAAC,KAAK,EAAE;YACrB,cAAc,CAAC,KAAK,EAAE;YACtB,UAAU,CAAC,KAAK,EAAE;SACnB,CAAC,CAAC;QAEH,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,mCAAmC,MAAM,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC;AAED,kEAAkE;AAClE,yEAAyE;AACzE,4CAA4C;AAE5C;;;;;;;;;GASG;AACH,SAAS,cAAc;IACrB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IACxD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,qEAAsE,GAAa,CAAC,OAAO,EAAE,CAC9F,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,4EAA4E,OAAO,MAAM,EAAE,CAC5F,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,wDAAwD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnG,CAAC;QACD,MAAM,CAAC,GAAG,KAAiE,CAAC;QAC5E,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CACb,iFAAiF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CACzG,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uDAAuD,OAAO,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO;YACP,OAAO,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK;SAC7B,CAAC,CAAC;IACL,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CACT,4BAA4B,GAAG,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9G,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;GAQG;AACH,SAAS,mBAAmB,CAAC,KAAgB;IAC3C,mEAAmE;IACnE,gEAAgE;IAChE,iEAAiE;IACjE,kEAAkE;IAClE,mEAAmE;IACnE,EAAE;IACF,6DAA6D;IAC7D,kEAAkE;IAClE,+DAA+D;IAC/D,gEAAgE;IAChE,UAAU;IACV,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAC3B,qDAAqD,IAAI,EAAE,CAAC;IAC9D,gEAAgE;IAChE,+DAA+D;IAC/D,+DAA+D;IAC/D,+DAA+D;IAC/D,gEAAgE;IAChE,2DAA2D;IAC3D,MAAM,QAAQ,GAOT;QACH,EAAE,KAAK,EAAE,cAAc,EAAM,MAAM,EAAE,cAAc,EAAM,KAAK,EAAE,KAAK,EAAmB,WAAW,EAAE,uCAAuC,EAAG,KAAK,EAAE,qEAAqE,EAAE;QAC7N,EAAE,KAAK,EAAE,YAAY,EAAQ,MAAM,EAAE,YAAY,EAAQ,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAG,WAAW,EAAE,yCAAyC,EAAE,KAAK,EAAE,kEAAkE,EAAE;QAC7N,EAAE,KAAK,EAAE,gBAAgB,EAAI,MAAM,EAAE,gBAAgB,EAAI,KAAK,EAAE,KAAK,EAAmB,WAAW,EAAE,uCAAuC,EAAG,KAAK,EAAE,kCAAkC,EAAE;QAC1L,EAAE,KAAK,EAAE,gBAAgB,EAAI,MAAM,EAAE,gBAAgB,EAAI,KAAK,EAAE,KAAK,EAAmB,WAAW,EAAE,8BAA8B,EAAY,KAAK,EAAE,+BAA+B,EAAE;QACvL,EAAE,KAAK,EAAE,cAAc,EAAM,MAAM,EAAE,cAAc,EAAM,KAAK,EAAE,KAAK,EAAmB,WAAW,EAAE,2BAA2B,EAAe,KAAK,EAAE,sCAAsC,EAAE;QAC9L,EAAE,KAAK,EAAE,iBAAiB,EAAG,MAAM,EAAE,iBAAiB,EAAG,KAAK,EAAE,KAAK,EAAmB,WAAW,EAAE,mCAAmC,EAAO,KAAK,EAAE,8EAA8E,EAAE;KACvO,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QAC3D,KAAK,CAAC,UAAU,CAAC;YACf,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,gBAAgB,EAAE,CAAC,CAAC,WAAW;YAC/B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,gBAAgB,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;YACrC,MAAM,EAAE,kBAAkB;YAC1B,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC;YACzB,yDAAyD;YACzD,cAAc,EAAE,GAAG;YACnB,kEAAkE;YAClE,6DAA6D;YAC7D,+DAA+D;YAC/D,yDAAyD;YACzD,cAAc,EAAE;gBACd,GAAG,GAAG;gBACN,YAAY,EAAE,CAAC;gBACf,UAAU,EAAE,OAAO;gBACnB,aAAa,EAAE,GAAG;aACnB;YACD,4DAA4D;YAC5D,6DAA6D;YAC7D,+DAA+D;YAC/D,yCAAyC;YACzC,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,GAAG,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC;oBACvB,QAAQ,EAAE,CAAC;oBACX,UAAU,EAAE,OAAO;oBACnB,YAAY,EAAE,CAAC;oBACf,aAAa,EAAE,GAAG;oBAClB,GAAG,GAAG;iBACP;aACF;YACD,MAAM,EAAE,CAAC,GAAG,CAAC;SACd,CAAC,CAAC;IACL,CAAC;IACD,4DAA4D;IAC5D,2DAA2D;IAC3D,2DAA2D;IAC3D,6DAA6D;IAC7D,+DAA+D;IAC/D,2DAA2D;IAC3D,oDAAoD;IACpD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC9C,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,EAAQ,KAAK,EAAE,cAAc,EAAM,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;IACjG,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAS,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;AACnG,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAAe;IAC1C,OAAO,CAAC,GAAG,CAAC,0CAA0C,OAAO,YAAY,CAAC,CAAC;IAE3E,gEAAgE;IAChE,iEAAiE;IACjE,iEAAiE;IACjE,6BAA6B;IAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9B,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;IACnE,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,UAAU,GACd,UAAU,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,uBAAuB,CAAC;QAC/D,CAAC,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE;QAC7C,CAAC,CAAC,IAAI,CAAC;IACX,IAAI,UAAU,KAAK,gBAAgB,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,kDAAkD,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAClG,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;QACvF,QAAQ,CAAC,eAAe,EAAE;YACxB,KAAK,EAAE,SAAS;YAChB,mDAAmD;YACnD,yDAAyD;YACzD,yDAAyD;YACzD,6DAA6D;YAC7D,uDAAuD;YACvD,0DAA0D;YAC1D,6DAA6D;YAC7D,6DAA6D;YAC7D,6DAA6D;YAC7D,0CAA0C;YAC1C,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE;SACtE,CAAC,CAAC;QACH,aAAa,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAClD,CAAC;IAED,uDAAuD;IACvD,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,GAAG,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAChF,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAE9B,gCAAgC;IAChC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAsB;YAClC,GAAG,OAAO,CAAC,GAAG;YACd,wBAAwB,EAAE,MAAM,CAAC,CAAC,CAAC;YACnC,oBAAoB,EAAE,MAAM,CAAC,OAAO,CAAC;YACrC,uBAAuB,EAAE,MAAM;SAChC,CAAC;QACF,QAAQ,CAAC,IAAI,CACX,IAAI,OAAO,CAAS,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE;YAChD,4DAA4D;YAC5D,4DAA4D;YAC5D,qDAAqD;YACrD,cAAc;YACd,MAAM,IAAI,GAAG,KAAK,CAChB,OAAO,CAAC,QAAQ,EAChB,CAAC,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC,EAChC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,CACpC,CAAC;YACF,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAChC,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CACT,mDAAmD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,KAAK,EAAE,CAC7F,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/scripts/runTests.js
CHANGED
|
@@ -142,7 +142,7 @@ async function main() {
|
|
|
142
142
|
// from .env.test only.
|
|
143
143
|
const backendEnv = {
|
|
144
144
|
PATH: process.env['PATH'] ?? '',
|
|
145
|
-
// See
|
|
145
|
+
// See runOfflineTests.ts for the long-form note — empty HOME
|
|
146
146
|
// makes npm write its cache to literal `~/.npm` in cwd.
|
|
147
147
|
HOME: process.env['HOME'] || '/root',
|
|
148
148
|
USER: process.env['USER'] ?? '',
|