@angular/build 22.2.0-next.3 → 22.2.0-next.5
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/package.json +10 -10
- package/src/builders/application/chunk-optimizer.d.ts +2 -2
- package/src/builders/application/chunk-optimizer.js +5 -5
- package/src/builders/application/chunk-optimizer.js.map +1 -1
- package/src/builders/application/execute-build.js +42 -17
- package/src/builders/application/execute-build.js.map +1 -1
- package/src/builders/application/execute-post-bundle.d.ts +2 -2
- package/src/builders/application/execute-post-bundle.js +4 -4
- package/src/builders/application/execute-post-bundle.js.map +1 -1
- package/src/builders/application/i18n.js +35 -2
- package/src/builders/application/i18n.js.map +1 -1
- package/src/builders/application/options.d.ts +14 -0
- package/src/builders/application/options.js +2 -1
- package/src/builders/application/options.js.map +1 -1
- package/src/builders/application/setup-bundling.js +3 -1
- package/src/builders/application/setup-bundling.js.map +1 -1
- package/src/builders/unit-test/runners/vitest/build-options.js +6 -0
- package/src/builders/unit-test/runners/vitest/build-options.js.map +1 -1
- package/src/tools/angular/angular-host.d.ts +1 -2
- package/src/tools/angular/angular-host.js +3 -3
- package/src/tools/angular/angular-host.js.map +1 -1
- package/src/tools/angular/compilation/angular-compilation.d.ts +23 -10
- package/src/tools/angular/compilation/angular-compilation.js +11 -1
- package/src/tools/angular/compilation/angular-compilation.js.map +1 -1
- package/src/tools/angular/compilation/aot-compilation.d.ts +4 -10
- package/src/tools/angular/compilation/aot-compilation.js +23 -14
- package/src/tools/angular/compilation/aot-compilation.js.map +1 -1
- package/src/tools/angular/compilation/factory.d.ts +5 -3
- package/src/tools/angular/compilation/factory.js +10 -5
- package/src/tools/angular/compilation/factory.js.map +1 -1
- package/src/tools/angular/compilation/index.d.ts +2 -2
- package/src/tools/angular/compilation/index.js.map +1 -1
- package/src/tools/angular/compilation/jit-compilation.d.ts +4 -7
- package/src/tools/angular/compilation/jit-compilation.js +14 -11
- package/src/tools/angular/compilation/jit-compilation.js.map +1 -1
- package/src/tools/angular/compilation/noop-compilation.d.ts +3 -8
- package/src/tools/angular/compilation/noop-compilation.js +1 -1
- package/src/tools/angular/compilation/noop-compilation.js.map +1 -1
- package/src/tools/angular/compilation/parallel-compilation.d.ts +2 -8
- package/src/tools/angular/compilation/parallel-compilation.js +43 -19
- package/src/tools/angular/compilation/parallel-compilation.js.map +1 -1
- package/src/tools/angular/compilation/parallel-worker.d.ts +3 -15
- package/src/tools/angular/compilation/parallel-worker.js +94 -66
- package/src/tools/angular/compilation/parallel-worker.js.map +1 -1
- package/src/tools/angular/linker/oxc-linker.d.ts +13 -17
- package/src/tools/angular/linker/oxc-linker.js +27 -89
- package/src/tools/angular/linker/oxc-linker.js.map +1 -1
- package/src/tools/esbuild/angular/compiler-plugin.js +51 -21
- package/src/tools/esbuild/angular/compiler-plugin.js.map +1 -1
- package/src/tools/esbuild/angular/component-stylesheets.d.ts +3 -3
- package/src/tools/esbuild/angular/component-stylesheets.js +43 -15
- package/src/tools/esbuild/angular/component-stylesheets.js.map +1 -1
- package/src/tools/esbuild/angular/source-file-cache.d.ts +1 -2
- package/src/tools/esbuild/angular/source-file-cache.js +1 -11
- package/src/tools/esbuild/angular/source-file-cache.js.map +1 -1
- package/src/tools/esbuild/application-code-bundle.js +10 -9
- package/src/tools/esbuild/application-code-bundle.js.map +1 -1
- package/src/tools/esbuild/budget-stats.js +3 -3
- package/src/tools/esbuild/budget-stats.js.map +1 -1
- package/src/tools/esbuild/bundler-context.d.ts +23 -7
- package/src/tools/esbuild/bundler-context.js +108 -42
- package/src/tools/esbuild/bundler-context.js.map +1 -1
- package/src/tools/esbuild/cache.d.ts +10 -0
- package/src/tools/esbuild/cache.js +18 -0
- package/src/tools/esbuild/cache.js.map +1 -1
- package/src/tools/esbuild/i18n-inliner-worker.d.ts +59 -6
- package/src/tools/esbuild/i18n-inliner-worker.js +252 -71
- package/src/tools/esbuild/i18n-inliner-worker.js.map +1 -1
- package/src/tools/esbuild/i18n-inliner.d.ts +39 -5
- package/src/tools/esbuild/i18n-inliner.js +209 -83
- package/src/tools/esbuild/i18n-inliner.js.map +1 -1
- package/src/tools/esbuild/i18n-locale-plugin.d.ts +32 -0
- package/src/tools/esbuild/i18n-locale-plugin.js +112 -103
- package/src/tools/esbuild/i18n-locale-plugin.js.map +1 -1
- package/src/tools/esbuild/i18n-translation-encoder.d.ts +20 -0
- package/src/tools/esbuild/i18n-translation-encoder.js +92 -0
- package/src/tools/esbuild/i18n-translation-encoder.js.map +1 -0
- package/src/tools/esbuild/i18n-translation-reader.d.ts +40 -0
- package/src/tools/esbuild/i18n-translation-reader.js +164 -0
- package/src/tools/esbuild/i18n-translation-reader.js.map +1 -0
- package/src/tools/esbuild/javascript-transformer-worker.js +36 -46
- package/src/tools/esbuild/javascript-transformer-worker.js.map +1 -1
- package/src/tools/esbuild/license-extractor.d.ts +1 -1
- package/src/tools/esbuild/license-extractor.js +89 -86
- package/src/tools/esbuild/license-extractor.js.map +1 -1
- package/src/tools/esbuild/load-result-cache.d.ts +1 -0
- package/src/tools/esbuild/load-result-cache.js +24 -11
- package/src/tools/esbuild/load-result-cache.js.map +1 -1
- package/src/tools/esbuild/utils.d.ts +2 -2
- package/src/tools/esbuild/utils.js +9 -6
- package/src/tools/esbuild/utils.js.map +1 -1
- package/src/tools/oxc/oxc-transform.d.ts +3 -0
- package/src/tools/oxc/oxc-transform.js +53 -32
- package/src/tools/oxc/oxc-transform.js.map +1 -1
- package/src/utils/i18n-options.d.ts +1 -0
- package/src/utils/i18n-options.js.map +1 -1
- package/src/utils/index-file/auto-csp.js +36 -17
- package/src/utils/index-file/auto-csp.js.map +1 -1
- package/src/utils/normalize-cache.js +1 -1
- package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.d.ts +1 -1
- package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.js +12 -9
- package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.js.map +1 -1
- package/src/utils/server-rendering/esm-in-memory-loader/utils.d.ts +8 -0
- package/src/utils/server-rendering/esm-in-memory-loader/utils.js +30 -0
- package/src/utils/server-rendering/esm-in-memory-loader/utils.js.map +1 -1
- package/src/utils/server-rendering/prerender.js +70 -30
- package/src/utils/server-rendering/prerender.js.map +1 -1
- package/src/utils/server-rendering/render-worker.d.ts +7 -4
- package/src/utils/server-rendering/render-worker.js +29 -7
- package/src/utils/server-rendering/render-worker.js.map +1 -1
|
@@ -21,7 +21,7 @@ const manifest_1 = require("./manifest");
|
|
|
21
21
|
const models_1 = require("./models");
|
|
22
22
|
const utils_2 = require("./utils");
|
|
23
23
|
async function prerenderPages(workspaceRoot, baseHref, appShellOptions, prerenderOptions, outputFiles, assets, outputMode, sourcemap = false, maxThreads = 1) {
|
|
24
|
-
const
|
|
24
|
+
const rawOutputFiles = {};
|
|
25
25
|
const serverBundlesSourceMaps = new Map();
|
|
26
26
|
const warnings = [];
|
|
27
27
|
const errors = [];
|
|
@@ -34,21 +34,22 @@ async function prerenderPages(workspaceRoot, baseHref, appShellOptions, prerende
|
|
|
34
34
|
serverBundlesSourceMaps.set(path.slice(0, -4), text);
|
|
35
35
|
}
|
|
36
36
|
else {
|
|
37
|
-
|
|
37
|
+
rawOutputFiles[path] = text;
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
// Inline sourcemap into JS file. This is needed to make Node.js resolve sourcemaps
|
|
41
41
|
// when using `--enable-source-maps` when using in memory files.
|
|
42
42
|
for (const [filePath, map] of serverBundlesSourceMaps) {
|
|
43
|
-
const jsContent =
|
|
43
|
+
const jsContent = rawOutputFiles[filePath];
|
|
44
44
|
if (jsContent) {
|
|
45
|
-
|
|
45
|
+
rawOutputFiles[filePath] =
|
|
46
46
|
jsContent +
|
|
47
|
-
|
|
47
|
+
'\n//# sourceMappingURL=' +
|
|
48
48
|
`data:application/json;base64,${Buffer.from(map).toString('base64')}`;
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
serverBundlesSourceMaps.clear();
|
|
52
|
+
const outputFilesForWorker = (0, utils_1.createSharedServerFiles)(rawOutputFiles);
|
|
52
53
|
const assetsReversed = {};
|
|
53
54
|
for (const { source, destination } of assets) {
|
|
54
55
|
// Assets are not stored with baseHref when using i18n,
|
|
@@ -101,7 +102,8 @@ async function prerenderPages(workspaceRoot, baseHref, appShellOptions, prerende
|
|
|
101
102
|
// We could re-generate it from the start, but that would require a number of options to be passed down.
|
|
102
103
|
const manifest = outputFilesForWorker[manifest_1.SERVER_APP_MANIFEST_FILENAME];
|
|
103
104
|
if (manifest) {
|
|
104
|
-
|
|
105
|
+
const manifestText = new TextDecoder().decode(manifest);
|
|
106
|
+
outputFilesForWorker[manifest_1.SERVER_APP_MANIFEST_FILENAME] = (0, utils_1.createSharedFile)(manifestText.replace('routes: undefined,', `routes: ${JSON.stringify(serializableRouteTreeNodeForPrerender, undefined, 2)},`));
|
|
105
107
|
}
|
|
106
108
|
// Render routes
|
|
107
109
|
const { errors: renderingErrors, output } = await renderPages(baseHref, sourcemap, serializableRouteTreeNodeForPrerender, maxThreads, workspaceRoot, outputFilesForWorker, assetsReversed, outputMode, appShellRoute ?? appShellOptions?.route);
|
|
@@ -116,13 +118,46 @@ async function prerenderPages(workspaceRoot, baseHref, appShellOptions, prerende
|
|
|
116
118
|
async function renderPages(baseHref, sourcemap, serializableRouteTreeNode, maxThreads, workspaceRoot, outputFilesForWorker, assetFilesForWorker, outputMode, appShellRoute) {
|
|
117
119
|
const output = {};
|
|
118
120
|
const errors = [];
|
|
121
|
+
const baseHrefPathnameWithLeadingSlash = new URL(baseHref, 'http://localhost').pathname;
|
|
122
|
+
const appShellRouteWithoutBaseHref = appShellRoute
|
|
123
|
+
? (0, url_1.addTrailingSlash)(appShellRoute).startsWith(baseHrefPathnameWithLeadingSlash)
|
|
124
|
+
? (0, url_1.addLeadingSlash)(appShellRoute.slice(baseHrefPathnameWithLeadingSlash.length))
|
|
125
|
+
: (0, url_1.addLeadingSlash)(appShellRoute)
|
|
126
|
+
: undefined;
|
|
127
|
+
const routesToRender = [];
|
|
128
|
+
for (const { route, redirectTo } of serializableRouteTreeNode) {
|
|
129
|
+
// Remove the base href from the file output path.
|
|
130
|
+
const routeWithoutBaseHref = (0, url_1.addTrailingSlash)(route).startsWith(baseHrefPathnameWithLeadingSlash)
|
|
131
|
+
? (0, url_1.addLeadingSlash)(route.slice(baseHrefPathnameWithLeadingSlash.length))
|
|
132
|
+
: route;
|
|
133
|
+
const outPath = (0, url_1.stripLeadingSlash)(node_path_1.posix.join(routeWithoutBaseHref, 'index.html'));
|
|
134
|
+
if (typeof redirectTo === 'string') {
|
|
135
|
+
output[outPath] = { content: (0, utils_2.generateRedirectStaticPage)(redirectTo), appShellRoute: false };
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
routesToRender.push({
|
|
139
|
+
route,
|
|
140
|
+
outPath,
|
|
141
|
+
isAppShell: appShellRouteWithoutBaseHref === routeWithoutBaseHref,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
if (routesToRender.length === 0) {
|
|
145
|
+
return {
|
|
146
|
+
errors,
|
|
147
|
+
output,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
// Batch routes to reduce IPC overhead while ensuring enough batches exist for load balancing across worker threads.
|
|
151
|
+
const batchSize = Math.max(1, Math.min(50, Math.ceil(routesToRender.length / (maxThreads * 4))));
|
|
152
|
+
const numBatches = Math.ceil(routesToRender.length / batchSize);
|
|
153
|
+
const effectiveMaxThreads = Math.min(numBatches, maxThreads);
|
|
119
154
|
const workerExecArgv = [utils_1.IMPORT_EXEC_ARGV];
|
|
120
155
|
if (sourcemap) {
|
|
121
156
|
workerExecArgv.push('--enable-source-maps');
|
|
122
157
|
}
|
|
123
158
|
const renderWorker = new worker_pool_1.WorkerPool({
|
|
124
159
|
filename: require.resolve('./render-worker'),
|
|
125
|
-
maxThreads:
|
|
160
|
+
maxThreads: effectiveMaxThreads,
|
|
126
161
|
workerData: {
|
|
127
162
|
workspaceRoot,
|
|
128
163
|
outputFiles: outputFilesForWorker,
|
|
@@ -137,35 +172,40 @@ async function renderPages(baseHref, sourcemap, serializableRouteTreeNode, maxTh
|
|
|
137
172
|
},
|
|
138
173
|
});
|
|
139
174
|
try {
|
|
175
|
+
const routeOutPathMap = new Map();
|
|
176
|
+
for (const item of routesToRender) {
|
|
177
|
+
routeOutPathMap.set(item.route, item);
|
|
178
|
+
}
|
|
140
179
|
const renderingPromises = [];
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
const
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
}
|
|
180
|
+
for (let i = 0; i < routesToRender.length; i += batchSize) {
|
|
181
|
+
const batch = routesToRender.slice(i, i + batchSize);
|
|
182
|
+
const urls = batch.map((item) => item.route);
|
|
183
|
+
const renderBatchPromise = renderWorker.run(urls);
|
|
184
|
+
const batchResultPromise = renderBatchPromise
|
|
185
|
+
.then((results) => {
|
|
186
|
+
for (const { url, content, error } of results) {
|
|
187
|
+
if (error) {
|
|
188
|
+
errors.push(`An error occurred while prerendering route '${url}'.\n\n${error}`);
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
if (content !== null) {
|
|
192
|
+
const routeInfo = routeOutPathMap.get(url);
|
|
193
|
+
if (routeInfo) {
|
|
194
|
+
output[routeInfo.outPath] = {
|
|
195
|
+
content,
|
|
196
|
+
appShellRoute: routeInfo.isAppShell,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
161
200
|
}
|
|
162
201
|
})
|
|
163
202
|
.catch((err) => {
|
|
164
203
|
(0, error_1.assertIsError)(err);
|
|
165
|
-
|
|
166
|
-
|
|
204
|
+
for (const url of urls) {
|
|
205
|
+
errors.push(`An error occurred while prerendering route '${url}'.\n\n${err.stack ?? err.message ?? err.code ?? err}`);
|
|
206
|
+
}
|
|
167
207
|
});
|
|
168
|
-
renderingPromises.push(
|
|
208
|
+
renderingPromises.push(batchResultPromise);
|
|
169
209
|
}
|
|
170
210
|
await Promise.all(renderingPromises);
|
|
171
211
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prerender.js","sourceRoot":"","sources":["prerender.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;
|
|
1
|
+
{"version":3,"file":"prerender.js","sourceRoot":"","sources":["prerender.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,12 +12,15 @@ export interface RenderWorkerData extends ESMInMemoryFileLoaderWorkerData {
|
|
|
12
12
|
outputMode: OutputMode | undefined;
|
|
13
13
|
hasSsrEntry: boolean;
|
|
14
14
|
}
|
|
15
|
-
export interface
|
|
15
|
+
export interface RenderResultItem {
|
|
16
16
|
url: string;
|
|
17
|
+
content: string | null;
|
|
18
|
+
error?: string;
|
|
17
19
|
}
|
|
20
|
+
export type RenderResult = RenderResultItem[];
|
|
18
21
|
/**
|
|
19
|
-
* Renders
|
|
22
|
+
* Renders routes in batch or individual URL.
|
|
20
23
|
*/
|
|
21
|
-
declare function
|
|
22
|
-
declare const _default: Promise<typeof
|
|
24
|
+
declare function renderPages(urls: string[]): Promise<RenderResult>;
|
|
25
|
+
declare const _default: Promise<typeof renderPages>;
|
|
23
26
|
export default _default;
|
|
@@ -41,6 +41,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
41
41
|
})();
|
|
42
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
43
|
const node_worker_threads_1 = require("node:worker_threads");
|
|
44
|
+
const error_1 = require("../error");
|
|
44
45
|
const fetch_patch_1 = require("./fetch-patch");
|
|
45
46
|
const launch_server_1 = require("./launch-server");
|
|
46
47
|
const load_esm_from_memory_1 = require("./load-esm-from-memory");
|
|
@@ -51,13 +52,9 @@ const utils_1 = require("./utils");
|
|
|
51
52
|
const { outputMode, hasSsrEntry } = node_worker_threads_1.workerData;
|
|
52
53
|
let serverURL = launch_server_1.DEFAULT_URL;
|
|
53
54
|
/**
|
|
54
|
-
* Renders
|
|
55
|
+
* Renders a single route URL.
|
|
55
56
|
*/
|
|
56
|
-
async function renderPage(
|
|
57
|
-
const { ɵgetOrCreateAngularServerApp: getOrCreateAngularServerApp } = await (0, load_esm_from_memory_1.loadEsmModuleFromMemory)('./main.server.mjs');
|
|
58
|
-
const angularServerApp = getOrCreateAngularServerApp({
|
|
59
|
-
allowStaticRouteRender: true,
|
|
60
|
-
});
|
|
57
|
+
async function renderPage(url, angularServerApp) {
|
|
61
58
|
const response = await angularServerApp.handle(new Request(new URL(url, serverURL), { signal: AbortSignal.timeout(30_000) }));
|
|
62
59
|
if (!response) {
|
|
63
60
|
return null;
|
|
@@ -65,6 +62,31 @@ async function renderPage({ url }) {
|
|
|
65
62
|
const location = response.headers.get('Location');
|
|
66
63
|
return location ? (0, utils_1.generateRedirectStaticPage)(location) : response.text();
|
|
67
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Renders routes in batch or individual URL.
|
|
67
|
+
*/
|
|
68
|
+
async function renderPages(urls) {
|
|
69
|
+
const { ɵgetOrCreateAngularServerApp: getOrCreateAngularServerApp } = await (0, load_esm_from_memory_1.loadEsmModuleFromMemory)('./main.server.mjs');
|
|
70
|
+
const angularServerApp = getOrCreateAngularServerApp({
|
|
71
|
+
allowStaticRouteRender: true,
|
|
72
|
+
});
|
|
73
|
+
const results = [];
|
|
74
|
+
for (const currentUrl of urls) {
|
|
75
|
+
try {
|
|
76
|
+
const content = await renderPage(currentUrl, angularServerApp);
|
|
77
|
+
results.push({ url: currentUrl, content });
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
(0, error_1.assertIsError)(err);
|
|
81
|
+
results.push({
|
|
82
|
+
url: currentUrl,
|
|
83
|
+
content: null,
|
|
84
|
+
error: err.stack ?? err.message ?? err.code ?? `${err}`,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return results;
|
|
89
|
+
}
|
|
68
90
|
async function initialize() {
|
|
69
91
|
// Load the compiler because `@angular/ssr/node` depends on `@angular/` packages,
|
|
70
92
|
// which must be processed by the runtime linker, even if they are not used.
|
|
@@ -73,7 +95,7 @@ async function initialize() {
|
|
|
73
95
|
serverURL = await (0, launch_server_1.launchServer)();
|
|
74
96
|
}
|
|
75
97
|
(0, fetch_patch_1.patchFetchToLoadInMemoryAssets)(serverURL);
|
|
76
|
-
return
|
|
98
|
+
return renderPages;
|
|
77
99
|
}
|
|
78
100
|
exports.default = initialize();
|
|
79
101
|
//# sourceMappingURL=render-worker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-worker.js","sourceRoot":"","sources":["render-worker.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,6DAAiD;
|
|
1
|
+
{"version":3,"file":"render-worker.js","sourceRoot":"","sources":["render-worker.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,6DAAiD;AAEjD,oCAAyC;AAEzC,+CAA+D;AAC/D,mDAA4D;AAC5D,iEAAiE;AACjE,mCAAqD;AAgBrD;;GAEG;AACH,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,gCAGnC,CAAC;AAEF,IAAI,SAAS,GAAG,2BAAW,CAAC;AAE5B;;GAEG;AACH,KAAK,UAAU,UAAU,CACvB,GAAW,EACX,gBAA4E;IAE5E,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAC5C,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAC9E,CAAC;IAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAElD,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAA,kCAA0B,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,IAAc;IACvC,MAAM,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,GACjE,MAAM,IAAA,8CAAuB,EAAC,mBAAmB,CAAC,CAAC;IAErD,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;QACnD,sBAAsB,EAAE,IAAI;KAC7B,CAAC,CAAC;IAEH,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,KAAK,MAAM,UAAU,IAAI,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAA,qBAAa,EAAC,GAAG,CAAC,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC;gBACX,GAAG,EAAE,UAAU;gBACf,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,GAAG,EAAE;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,iFAAiF;IACjF,4EAA4E;IAC5E,wDAAa,mBAAmB,GAAC,CAAC;IAElC,IAAI,UAAU,KAAK,SAAS,IAAI,WAAW,EAAE,CAAC;QAC5C,SAAS,GAAG,MAAM,IAAA,4BAAY,GAAE,CAAC;IACnC,CAAC;IAED,IAAA,4CAA8B,EAAC,SAAS,CAAC,CAAC;IAE1C,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,kBAAe,UAAU,EAAE,CAAC"}
|