@yuuvis/client-cli 18.1.0 → 18.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -0
- package/cli/commands/add/app.d.ts +6 -0
- package/cli/commands/add/app.js +30 -0
- package/cli/commands/add/app.js.map +1 -0
- package/cli/commands/add.d.ts +4 -0
- package/cli/commands/add.js +12 -0
- package/cli/commands/add.js.map +1 -0
- package/cli/commands/generate/app.js +11 -9
- package/cli/commands/generate/app.js.map +1 -1
- package/cli/commands/new.js +1 -2
- package/cli/commands/new.js.map +1 -1
- package/package.json +1 -1
- package/schematics/factories/add-app/index.d.ts +2 -0
- package/schematics/factories/add-app/index.js +43 -0
- package/schematics/factories/add-app/index.js.map +1 -0
- package/schematics/factories/add-app/schema.json +17 -0
- package/schematics/factories/collection.json +6 -2
- package/schematics/factories/generate-app/index.js +4 -4
- package/schematics/factories/generate-app/index.js.map +1 -1
- package/schematics/factories/generate-app/schema.json +2 -3
- package/schematics/factories/new/index.js +24 -6
- package/schematics/factories/new/index.js.map +1 -1
- package/schematics/project-metadata.d.ts +17 -0
- package/schematics/project-metadata.js +71 -0
- package/schematics/project-metadata.js.map +1 -0
- package/schematics/schematics-util.d.ts +4 -1
- package/schematics/schematics-util.js +69 -0
- package/schematics/schematics-util.js.map +1 -1
- package/schematics/tasks/clean-up-ng-app.js +21 -4
- package/schematics/tasks/clean-up-ng-app.js.map +1 -1
- package/schematics/tasks/copy-extensions-files.d.ts +2 -1
- package/schematics/tasks/copy-extensions-files.js +22 -7
- package/schematics/tasks/copy-extensions-files.js.map +1 -1
- package/schematics/tasks/copy-files.d.ts +2 -1
- package/schematics/tasks/copy-files.js +38 -25
- package/schematics/tasks/copy-files.js.map +1 -1
- package/schematics/tasks/copy-ui-files.d.ts +2 -1
- package/schematics/tasks/copy-ui-files.js +22 -7
- package/schematics/tasks/copy-ui-files.js.map +1 -1
- package/schematics/tasks/create-update-manifest.js +15 -3
- package/schematics/tasks/create-update-manifest.js.map +1 -1
- package/schematics/tasks/generate-library.js +1 -1
- package/schematics/tasks/generate-library.js.map +1 -1
- package/schematics/tasks/npm-install.d.ts +1 -1
- package/schematics/tasks/npm-install.js +6 -7
- package/schematics/tasks/npm-install.js.map +1 -1
- package/schematics/tasks/update-angular-json.js +1 -1
- package/schematics/tasks/update-angular-json.js.map +1 -1
- package/schematics/tasks/update-app-config.d.ts +1 -1
- package/schematics/tasks/update-app-config.js +16 -4
- package/schematics/tasks/update-app-config.js.map +1 -1
- package/schematics/tasks/update-app-routes.d.ts +1 -1
- package/schematics/tasks/update-app-routes.js +37 -6
- package/schematics/tasks/update-app-routes.js.map +1 -1
- package/schematics/tasks/update-library-component.js +16 -3
- package/schematics/tasks/update-library-component.js.map +1 -1
- package/schematics/tasks/update-library-public-api.js +16 -3
- package/schematics/tasks/update-library-public-api.js.map +1 -1
- package/schematics/tasks/update-library-tsconfig.js +20 -6
- package/schematics/tasks/update-library-tsconfig.js.map +1 -1
- package/schematics/tasks/update-package-json.d.ts +1 -1
- package/schematics/tasks/update-package-json.js +17 -13
- package/schematics/tasks/update-package-json.js.map +1 -1
- package/schematics/utils.d.ts +15 -0
- package/schematics/utils.js +40 -0
- package/schematics/utils.js.map +1 -1
|
@@ -1,11 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
12
|
exports.updateLibraryTsConfig = updateLibraryTsConfig;
|
|
4
13
|
const schematics_1 = require("@angular-devkit/schematics");
|
|
14
|
+
const project_metadata_1 = require("../project-metadata");
|
|
15
|
+
const utils_1 = require("../utils");
|
|
5
16
|
function updateLibraryTsConfig(options) {
|
|
6
|
-
return (tree) => {
|
|
17
|
+
return (tree) => __awaiter(this, void 0, void 0, function* () {
|
|
7
18
|
try {
|
|
8
|
-
const
|
|
19
|
+
const project = yield project_metadata_1.ProjectMetadata.fromTree(tree);
|
|
20
|
+
const librarySourceRoot = yield project.getLibrarySourceRoot(options.name);
|
|
21
|
+
const filePath = (0, utils_1.buildPath)(project.projectRoot, 'tsconfig.json');
|
|
22
|
+
const tsconfigBuffer = tree.read(filePath);
|
|
9
23
|
if (!tsconfigBuffer) {
|
|
10
24
|
throw new schematics_1.SchematicsException('tsconfig.json not found');
|
|
11
25
|
}
|
|
@@ -18,14 +32,14 @@ function updateLibraryTsConfig(options) {
|
|
|
18
32
|
parsedTsconfig.compilerOptions = parsedTsconfig.compilerOptions || {};
|
|
19
33
|
parsedTsconfig.compilerOptions.paths = parsedTsconfig.compilerOptions.paths || {};
|
|
20
34
|
parsedTsconfig.compilerOptions.paths[options.name] = [
|
|
21
|
-
`./${
|
|
35
|
+
`./${librarySourceRoot}/public-api.ts`
|
|
22
36
|
];
|
|
23
|
-
tree.overwrite(
|
|
37
|
+
tree.overwrite(filePath, `${comment}\n${JSON.stringify(parsedTsconfig, null, 2)}\n`);
|
|
24
38
|
return tree;
|
|
25
39
|
}
|
|
26
40
|
catch (error) {
|
|
27
|
-
throw new schematics_1.SchematicsException(`Failed to parse tsconfig.json as JSON AST Object
|
|
41
|
+
throw new schematics_1.SchematicsException(`Failed to parse tsconfig.json as JSON AST Object. ${error}`);
|
|
28
42
|
}
|
|
29
|
-
};
|
|
43
|
+
});
|
|
30
44
|
}
|
|
31
45
|
//# sourceMappingURL=update-library-tsconfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-library-tsconfig.js","sourceRoot":"","sources":["../../../src/schematics/tasks/update-library-tsconfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update-library-tsconfig.js","sourceRoot":"","sources":["../../../src/schematics/tasks/update-library-tsconfig.ts"],"names":[],"mappings":";;;;;;;;;;;AAIA,sDAiCC;AArCD,2DAA6E;AAC7E,0DAAsD;AACtD,oCAAqC;AAErC,SAAgB,qBAAqB,CAAC,OAAY;IAChD,OAAO,CAAO,IAAU,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,kCAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3E,MAAM,QAAQ,GAAG,IAAA,iBAAS,EAAC,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAEjE,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,IAAI,gCAAmB,CAAC,yBAAyB,CAAC,CAAC;YAC3D,CAAC;YACD,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACjD,MAAM,UAAU,GAAW,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAW,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACnD,MAAM,OAAO,GAAW,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;YACjE,MAAM,QAAQ,GAAW,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;YAEtE,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAE5C,cAAc,CAAC,eAAe,GAAG,cAAc,CAAC,eAAe,IAAI,EAAE,CAAC;YACtE,cAAc,CAAC,eAAe,CAAC,KAAK,GAAG,cAAc,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE,CAAC;YAElF,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;gBACnD,KAAK,iBAAiB,gBAAgB;aACvC,CAAC;YAEF,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAErF,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,gCAAmB,CAAC,qDAAqD,KAAK,EAAE,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { Rule } from "@angular-devkit/schematics";
|
|
2
|
-
export default function updatePackageJson(
|
|
2
|
+
export default function updatePackageJson(packageJsonPath: string, extObj: any): Rule;
|
|
@@ -1,24 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.default = updatePackageJson;
|
|
4
|
-
function updatePackageJson(
|
|
5
|
-
return (tree
|
|
6
|
-
const packageJsonPath = `${options.name}/package.json`;
|
|
4
|
+
function updatePackageJson(packageJsonPath, extObj) {
|
|
5
|
+
return (tree) => {
|
|
7
6
|
if (tree.exists(packageJsonPath)) {
|
|
8
7
|
const packageJsonBuffer = tree.read(packageJsonPath);
|
|
9
8
|
if (packageJsonBuffer) {
|
|
10
9
|
const packageJson = JSON.parse(packageJsonBuffer.toString());
|
|
11
10
|
packageJson.dependencies = packageJson.dependencies || {};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
11
|
+
if (extObj.dependencies) {
|
|
12
|
+
packageJson.dependencies = packageJson.dependencies || {};
|
|
13
|
+
packageJson.dependencies = Object.assign(Object.assign({}, packageJson.dependencies), extObj.dependencies);
|
|
14
|
+
packageJson.dependencies = Object.fromEntries(Object.entries(packageJson.dependencies).sort());
|
|
15
|
+
}
|
|
16
|
+
if (extObj.devDependencies) {
|
|
17
|
+
packageJson.devDependencies = packageJson.devDependencies || {};
|
|
18
|
+
packageJson.devDependencies = Object.assign(Object.assign({}, packageJson.devDependencies), extObj.devDependencies);
|
|
19
|
+
packageJson.devDependencies = Object.fromEntries(Object.entries(packageJson.devDependencies).sort());
|
|
20
|
+
}
|
|
21
|
+
if (extObj.scripts) {
|
|
22
|
+
packageJson.scripts = packageJson.scripts || {};
|
|
23
|
+
packageJson.scripts = Object.assign(Object.assign({}, packageJson.scripts), extObj.scripts);
|
|
24
|
+
packageJson.scripts = Object.fromEntries(Object.entries(packageJson.scripts).sort());
|
|
25
|
+
}
|
|
22
26
|
tree.overwrite(packageJsonPath, JSON.stringify(packageJson, null, 2));
|
|
23
27
|
}
|
|
24
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-package-json.js","sourceRoot":"","sources":["../../../src/schematics/tasks/update-package-json.ts"],"names":[],"mappings":";;AAEA,
|
|
1
|
+
{"version":3,"file":"update-package-json.js","sourceRoot":"","sources":["../../../src/schematics/tasks/update-package-json.ts"],"names":[],"mappings":";;AAEA,oCAwCC;AAxCD,SAAwB,iBAAiB,CAAC,eAAuB,EAAE,MAAW;IAC5E,OAAO,CAAC,IAAU,EAAE,EAAE;QACpB,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;YACjC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACrD,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC7D,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC;gBAE1D,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;oBACxB,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC;oBAC1D,WAAW,CAAC,YAAY,mCACnB,WAAW,CAAC,YAAY,GACxB,MAAM,CAAC,YAAY,CACvB,CAAC;oBACF,WAAW,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACjG,CAAC;gBAED,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;oBAC3B,WAAW,CAAC,eAAe,GAAG,WAAW,CAAC,eAAe,IAAI,EAAE,CAAC;oBAChE,WAAW,CAAC,eAAe,mCACtB,WAAW,CAAC,eAAe,GAC3B,MAAM,CAAC,eAAe,CAC1B,CAAC;oBACF,WAAW,CAAC,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACvG,CAAC;gBAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;oBAChD,WAAW,CAAC,OAAO,mCACd,WAAW,CAAC,OAAO,GACnB,MAAM,CAAC,OAAO,CAClB,CAAC;oBACF,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACvF,CAAC;gBAED,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAA;AACH,CAAC"}
|
package/schematics/utils.d.ts
CHANGED
|
@@ -1,2 +1,17 @@
|
|
|
1
|
+
export interface PackageSpecifier {
|
|
2
|
+
name: string;
|
|
3
|
+
version?: string;
|
|
4
|
+
}
|
|
1
5
|
export declare function getLibraryPathFromName(libraryName: string): string;
|
|
2
6
|
export declare function extractNamesFromPackageName(name: string): [string, string, string];
|
|
7
|
+
/**
|
|
8
|
+
* Splits an NPM package specifier into name and version.
|
|
9
|
+
*
|
|
10
|
+
* Examples:
|
|
11
|
+
* - "mylib" => { name: "mylib", version: undefined }
|
|
12
|
+
* - "mylib@1.2.3" => { name: "mylib", version: "1.2.3" }
|
|
13
|
+
* - "@scope/mylib@latest" => { name: "@scope/mylib", version: "latest" }
|
|
14
|
+
* - "@scope/mylib" => { name: "@scope/mylib", version: undefined }
|
|
15
|
+
*/
|
|
16
|
+
export declare function parsePackageSpecifier(specifier: string): PackageSpecifier;
|
|
17
|
+
export declare function buildPath(...pathParts: string[]): string;
|
package/schematics/utils.js
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.getLibraryPathFromName = getLibraryPathFromName;
|
|
4
7
|
exports.extractNamesFromPackageName = extractNamesFromPackageName;
|
|
8
|
+
exports.parsePackageSpecifier = parsePackageSpecifier;
|
|
9
|
+
exports.buildPath = buildPath;
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
5
11
|
const constants_1 = require("./constants");
|
|
6
12
|
function getLibraryPathFromName(libraryName) {
|
|
7
13
|
if (libraryName.startsWith("@")) {
|
|
@@ -15,4 +21,38 @@ function extractNamesFromPackageName(name) {
|
|
|
15
21
|
const shortName = libraryName.includes("-") ? libraryName.split("-").pop() || "" : libraryName;
|
|
16
22
|
return [namespace.slice(1), libraryName, shortName];
|
|
17
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Splits an NPM package specifier into name and version.
|
|
26
|
+
*
|
|
27
|
+
* Examples:
|
|
28
|
+
* - "mylib" => { name: "mylib", version: undefined }
|
|
29
|
+
* - "mylib@1.2.3" => { name: "mylib", version: "1.2.3" }
|
|
30
|
+
* - "@scope/mylib@latest" => { name: "@scope/mylib", version: "latest" }
|
|
31
|
+
* - "@scope/mylib" => { name: "@scope/mylib", version: undefined }
|
|
32
|
+
*/
|
|
33
|
+
function parsePackageSpecifier(specifier) {
|
|
34
|
+
// Scoped packages start with "@", e.g. "@scope/pkg"
|
|
35
|
+
if (specifier.startsWith('@')) {
|
|
36
|
+
const secondAtIndex = specifier.indexOf('@', 1); // skip the "@" in "@scope"
|
|
37
|
+
if (secondAtIndex === -1) {
|
|
38
|
+
return { name: specifier };
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
name: specifier.substring(0, secondAtIndex),
|
|
42
|
+
version: specifier.substring(secondAtIndex + 1),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// Unscoped package, version is after last "@"
|
|
46
|
+
const atIndex = specifier.lastIndexOf('@');
|
|
47
|
+
if (atIndex === -1) {
|
|
48
|
+
return { name: specifier };
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
name: specifier.substring(0, atIndex),
|
|
52
|
+
version: specifier.substring(atIndex + 1),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function buildPath(...pathParts) {
|
|
56
|
+
return path_1.default.join(...pathParts);
|
|
57
|
+
}
|
|
18
58
|
//# sourceMappingURL=utils.js.map
|
package/schematics/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/schematics/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/schematics/utils.ts"],"names":[],"mappings":";;;;;AAQA,wDAMC;AAED,kEAIC;AAWD,sDAuBC;AAED,8BAGC;AA3DD,gDAAwB;AACxB,2CAA4C;AAO5C,SAAgB,sBAAsB,CAAC,WAAmB;IACxD,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,2BAA2B,CAAC,WAAW,CAAC,CAAC;QACrE,OAAO,GAAG,yBAAa,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,GAAG,yBAAa,IAAI,WAAW,EAAE,CAAC;AAC3C,CAAC;AAED,SAAgB,2BAA2B,CAAC,IAAY;IACtD,MAAM,CAAC,SAAS,GAAG,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACpG,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;IAC/F,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,qBAAqB,CAAC,SAAiB;IACrD,oDAAoD;IACpD,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,2BAA2B;QAC5E,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC7B,CAAC;QACD,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC;YAC3C,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC;SAChD,CAAC;IACJ,CAAC;IAED,8CAA8C;IAC9C,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC7B,CAAC;IAED,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC;QACrC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED,SAAgB,SAAS,CAAC,GAAG,SAAmB;IAC9C,OAAO,cAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;AAEjC,CAAC"}
|