keycloakify 4.4.0 → 4.5.2
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/CHANGELOG.md +22 -0
- package/README.md +6 -1
- package/bin/KeycloakVersion.d.ts +1 -1
- package/bin/KeycloakVersion.js +1 -1
- package/bin/KeycloakVersion.js.map +1 -1
- package/bin/build-keycloak-theme/build-keycloak-theme.js +12 -3
- package/bin/build-keycloak-theme/build-keycloak-theme.js.map +1 -1
- package/bin/build-keycloak-theme/generateDebugFiles/generateDebugFiles.d.ts +2 -1
- package/bin/build-keycloak-theme/generateDebugFiles/generateDebugFiles.js.map +1 -1
- package/bin/build-keycloak-theme/generateDebugFiles/standalone-ha_16.1.0.xml +652 -0
- package/bin/build-keycloak-theme/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +8 -0
- package/bin/build-keycloak-theme/generateKeycloakThemeResources.d.ts +2 -1
- package/bin/build-keycloak-theme/generateKeycloakThemeResources.js +5 -5
- package/bin/build-keycloak-theme/generateKeycloakThemeResources.js.map +1 -1
- package/bin/download-builtin-keycloak-theme.js +1 -1
- package/lib/getKcContext/getKcContext.js +9 -1
- package/lib/getKcContext/getKcContext.js.map +1 -1
- package/lib/getKcContext/kcContextMocks/urlResourcesPath.js +1 -1
- package/lib/getKcContext/kcContextMocks/urlResourcesPath.js.map +1 -1
- package/lib/tools/pathBasename.d.ts +1 -0
- package/lib/tools/pathBasename.js +8 -0
- package/lib/tools/pathBasename.js.map +1 -0
- package/package.json +7 -1
- package/src/bin/KeycloakVersion.ts +1 -1
- package/src/bin/build-keycloak-theme/build-keycloak-theme.ts +15 -3
- package/src/bin/build-keycloak-theme/generateDebugFiles/generateDebugFiles.ts +2 -1
- package/src/bin/build-keycloak-theme/generateDebugFiles/standalone-ha_16.1.0.xml +652 -0
- package/src/bin/build-keycloak-theme/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +8 -0
- package/src/bin/build-keycloak-theme/generateKeycloakThemeResources.ts +10 -7
- package/src/bin/download-builtin-keycloak-theme.ts +1 -1
- package/src/lib/getKcContext/getKcContext.ts +12 -1
- package/src/lib/getKcContext/kcContextMocks/urlResourcesPath.ts +1 -1
- package/src/lib/tools/pathBasename.ts +3 -0
package/CHANGELOG.md
CHANGED
@@ -1,3 +1,25 @@
|
|
1
|
+
### **4.5.2** (2022-01-20)
|
2
|
+
|
3
|
+
- Test container uses Keycloak 16.1.0
|
4
|
+
- Merge pull request #78 from InseeFrLab/Ann2827/pull
|
5
|
+
|
6
|
+
Ann2827/pull
|
7
|
+
- Refactor #78
|
8
|
+
- Compat with Keycloak 16 (and probably 17, 18) #79
|
9
|
+
- Warning about compat issues with Keycloak 16
|
10
|
+
- fix: changes
|
11
|
+
- fix: Errors on pages login-idp-link-confirm and login-idp-link-email
|
12
|
+
|
13
|
+
ref: https://github.com/InseeFrLab/keycloakify/issues/75
|
14
|
+
|
15
|
+
### **4.5.1** (2022-01-18)
|
16
|
+
|
17
|
+
- fix previous version
|
18
|
+
|
19
|
+
## **4.5.0** (2022-01-18)
|
20
|
+
|
21
|
+
- Read public/CNAME for domain name in --externel-assets mode
|
22
|
+
|
1
23
|
## **4.4.0** (2022-01-01)
|
2
24
|
|
3
25
|
- Merge pull request #73 from lazToum/main
|
package/README.md
CHANGED
@@ -30,6 +30,10 @@
|
|
30
30
|
<img src="https://user-images.githubusercontent.com/6702424/110260457-a1c3d380-7fac-11eb-853a-80459b65626b.png">
|
31
31
|
</p>
|
32
32
|
|
33
|
+
> **New in v4.4.0**: Feature [`login-page-expired.ftl`](https://user-images.githubusercontent.com/6702424/147856832-38c042a7-9fc8-473f-9595-e00123095ca6.png).
|
34
|
+
> Every time a page is added it's a breaking change for non CSS-only theme.
|
35
|
+
> Change [this](https://github.com/garronej/keycloakify-demo-app/blob/812754109c61157741f4a0b222026deb1538a02d/src/KcApp/KcApp.tsx#L18) and [this](https://github.com/garronej/keycloakify-demo-app/blob/812754109c61157741f4a0b222026deb1538a02d/src/KcApp/KcApp.tsx#L39) to update.
|
36
|
+
|
33
37
|
# Motivations
|
34
38
|
|
35
39
|
Keycloak provides [theme support](https://www.keycloak.org/docs/latest/server_development/#_themes) for web pages. This allows customizing the look and feel of end-user facing pages so they can be integrated with your applications.
|
@@ -99,6 +103,7 @@ Tested with the following Keycloak versions:
|
|
99
103
|
- [11.0.3](https://hub.docker.com/layers/jboss/keycloak/11.0.3/images/sha256-4438f1e51c1369371cb807dffa526e1208086b3ebb9cab009830a178de949782?context=explore)
|
100
104
|
- [12.0.4](https://hub.docker.com/layers/jboss/keycloak/12.0.4/images/sha256-67e0c88e69bd0c7aef972c40bdeb558a974013a28b3668ca790ed63a04d70584?context=explore)
|
101
105
|
- [15.0.2](https://hub.docker.com/layers/jboss/keycloak/15.0.2/images/sha256-d8ed1ee5df42a178c341f924377da75db49eab08ea9f058ff39a8ed7ee05ec93?context=explore)
|
106
|
+
- [16.1.0](https://hub.docker.com/layers/jboss/keycloak/16.1.0/images/sha256-6ecb9492224c6cfbb55d43f64a5ab634145d8cc1eba14eae8c37e3afde89546e?context=explore)
|
102
107
|
|
103
108
|
This tool will be maintained to stay compatible with Keycloak v11 and up, however, the default pages you will get
|
104
109
|
(before you customize it) will always be the ones of Keycloak v11.
|
@@ -291,7 +296,7 @@ If you are specifically building a theme to integrate with an app or a website t
|
|
291
296
|
to first browse unauthenticated before logging in, you will get a significant
|
292
297
|
performance boost if you jump through those hoops:
|
293
298
|
|
294
|
-
- Provide the url of your app in the `homepage` field of package.json. [ex](https://github.com/garronej/keycloakify-demo-app/blob/7847cc70ef374ab26a6cc7953461cf25603e9a6d/package.json#L2)
|
299
|
+
- Provide the url of your app in the `homepage` field of package.json. [ex](https://github.com/garronej/keycloakify-demo-app/blob/7847cc70ef374ab26a6cc7953461cf25603e9a6d/package.json#L2) or in a `public/CNAME` file. [ex](https://github.com/garronej/keycloakify-demo-app/blob/main/public/CNAME).
|
295
300
|
- Build the theme using `npx build-keycloak-theme --external-assets` [ex](https://github.com/garronej/keycloakify-demo-app/blob/7847cc70ef374ab26a6cc7953461cf25603e9a6d/.github/workflows/ci.yaml#L21)
|
296
301
|
- Enable [long-term assets caching](https://create-react-app.dev/docs/production-build/#static-file-caching) on the server hosting your app.
|
297
302
|
- Make sure not to build your app and the keycloak theme separately
|
package/bin/KeycloakVersion.d.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export declare const keycloakVersions: readonly ["11.0.3", "15.0.2"];
|
1
|
+
export declare const keycloakVersions: readonly ["11.0.3", "15.0.2", "16.1.0"];
|
2
2
|
export declare type KeycloakVersion = typeof keycloakVersions[number];
|
package/bin/KeycloakVersion.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.keycloakVersions = void 0;
|
4
|
-
exports.keycloakVersions = ["11.0.3", "15.0.2"];
|
4
|
+
exports.keycloakVersions = ["11.0.3", "15.0.2", "16.1.0"];
|
5
5
|
//# sourceMappingURL=KeycloakVersion.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"KeycloakVersion.js","sourceRoot":"","sources":["../src/bin/KeycloakVersion.ts"],"names":[],"mappings":";;;AAAa,QAAA,gBAAgB,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAU,CAAC"}
|
1
|
+
{"version":3,"file":"KeycloakVersion.js","sourceRoot":"","sources":["../src/bin/KeycloakVersion.ts"],"names":[],"mappings":";;;AAAa,QAAA,gBAAgB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC"}
|
@@ -38,6 +38,7 @@ var path_1 = require("path");
|
|
38
38
|
var child_process = __importStar(require("child_process"));
|
39
39
|
var generateDebugFiles_1 = require("./generateDebugFiles");
|
40
40
|
var url_1 = require("url");
|
41
|
+
var fs = __importStar(require("fs"));
|
41
42
|
var reactProjectDirPath = process.cwd();
|
42
43
|
var doUseExternalAssets = ((_a = process.argv[2]) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === "--external-assets";
|
43
44
|
var parsedPackageJson = require((0, path_1.join)(reactProjectDirPath, "package.json"));
|
@@ -57,7 +58,14 @@ function main() {
|
|
57
58
|
(0, generateKeycloakThemeResources_1.generateKeycloakThemeResources)(__assign(__assign({ keycloakThemeBuildingDirPath: exports.keycloakThemeBuildingDirPath, "reactAppBuildDirPath": (0, path_1.join)(reactProjectDirPath, "build"), themeName: themeName }, (function () {
|
58
59
|
var url = (function () {
|
59
60
|
var homepage = parsedPackageJson.homepage;
|
60
|
-
|
61
|
+
if (homepage !== undefined) {
|
62
|
+
return new url_1.URL(homepage);
|
63
|
+
}
|
64
|
+
var cnameFilePath = (0, path_1.join)(reactProjectDirPath, "public", "CNAME");
|
65
|
+
if (fs.existsSync(cnameFilePath)) {
|
66
|
+
return new url_1.URL("https://" + fs.readFileSync(cnameFilePath).toString("utf8").replace(/\s+$/, ""));
|
67
|
+
}
|
68
|
+
return undefined;
|
61
69
|
})();
|
62
70
|
return {
|
63
71
|
"urlPathname": url === undefined ? "/" : url.pathname.replace(/([^/])$/, "$1/"),
|
@@ -73,7 +81,7 @@ function main() {
|
|
73
81
|
};
|
74
82
|
})()), { extraPagesId: extraPagesId, extraThemeProperties: extraThemeProperties,
|
75
83
|
//We have to leave it at that otherwise we break our default theme.
|
76
|
-
//Problem is that we can't guarantee that the the old resources
|
84
|
+
//Problem is that we can't guarantee that the the old resources
|
77
85
|
//will still be available on the newer keycloak version.
|
78
86
|
"keycloakVersion": "11.0.3" }));
|
79
87
|
var jarFilePath = (0, generateJavaStackFiles_1.generateJavaStackFiles)({
|
@@ -88,7 +96,8 @@ function main() {
|
|
88
96
|
(0, generateDebugFiles_1.generateDebugFiles)({
|
89
97
|
keycloakThemeBuildingDirPath: exports.keycloakThemeBuildingDirPath,
|
90
98
|
themeName: themeName,
|
91
|
-
|
99
|
+
//We want, however to test in a container running the latest Keycloak version
|
100
|
+
"keycloakVersion": "16.1.0",
|
92
101
|
});
|
93
102
|
console.log([
|
94
103
|
"",
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"build-keycloak-theme.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/build-keycloak-theme.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mFAAkF;AAClF,mEAAkE;AAClE,6BAA4F;AAC5F,2DAA+C;AAC/C,2DAAyF;AACzF,2BAA0B;
|
1
|
+
{"version":3,"file":"build-keycloak-theme.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/build-keycloak-theme.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mFAAkF;AAClF,mEAAkE;AAClE,6BAA4F;AAC5F,2DAA+C;AAC/C,2DAAyF;AACzF,2BAA0B;AAC1B,qCAAyB;AAQzB,IAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAE1C,IAAM,mBAAmB,GAAG,CAAA,MAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,0CAAE,WAAW,EAAE,MAAK,mBAAmB,CAAC;AAEnF,IAAM,iBAAiB,GAAsB,OAAO,CAAC,IAAA,WAAQ,EAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC,CAAC;AAEvF,QAAA,4BAA4B,GAAG,IAAA,WAAQ,EAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;AAE5F,SAAS,iBAAiB,CAAC,IAAY;IACnC,OAAO,IAAI;SACN,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;SACvB,KAAK,CAAC,GAAG,CAAC;SACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,SAAgB,IAAI;;IAChB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAElD,IAAM,YAAY,GAAa,MAAA,MAAC,iBAAyB,CAAC,aAAa,CAAC,0CAAG,YAAY,CAAC,mCAAI,EAAE,CAAC;IAC/F,IAAM,oBAAoB,GAAa,MAAA,MAAC,iBAAyB,CAAC,aAAa,CAAC,0CAAG,sBAAsB,CAAC,mCAAI,EAAE,CAAC;IACjH,IAAM,SAAS,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAE5D,IAAA,+DAA8B,sBAC1B,4BAA4B,sCAAA,EAC5B,sBAAsB,EAAE,IAAA,WAAQ,EAAC,mBAAmB,EAAE,OAAO,CAAC,EAC9D,SAAS,WAAA,IACN,CAAC;QACA,IAAM,GAAG,GAAG,CAAC;YACD,IAAA,QAAQ,GAAK,iBAAiB,SAAtB,CAAuB;YAEvC,IAAI,QAAQ,KAAK,SAAS,EAAE;gBACxB,OAAO,IAAI,SAAG,CAAC,QAAQ,CAAC,CAAC;aAC5B;YAED,IAAM,aAAa,GAAG,IAAA,WAAQ,EAAC,mBAAmB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAEvE,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;gBAC9B,OAAO,IAAI,SAAG,CAAC,aAAW,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAG,CAAC,CAAC;aACpG;YAED,OAAO,SAAS,CAAC;QACrB,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO;YACH,aAAa,EAAE,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;YAC/E,WAAW,EAAE,CAAC,mBAAmB;gBAC7B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,CAAC;oBACG,IAAI,GAAG,KAAK,SAAS,EAAE;wBACnB,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;wBACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;qBACpB;oBAED,OAAO,GAAG,CAAC,MAAM,CAAC;gBACtB,CAAC,CAAC,EAAE;SACb,CAAC;IACN,CAAC,CAAC,EAAE,KACJ,YAAY,cAAA,EACZ,oBAAoB,sBAAA;QACpB,mEAAmE;QACnE,+DAA+D;QAC/D,wDAAwD;QACxD,iBAAiB,EAAE,QAAQ,IAC7B,CAAC;IAEK,IAAA,WAAW,GAAK,IAAA,+CAAsB,EAAC;QAC3C,OAAO,EAAE,iBAAiB,CAAC,OAAO;QAClC,SAAS,WAAA;QACT,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;QACpC,4BAA4B,sCAAA;KAC/B,CAAC,YALiB,CAKhB;IAEH,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE;QAClC,KAAK,EAAE,oCAA4B;KACtC,CAAC,CAAC;IAEH,IAAA,uCAAkB,EAAC;QACf,4BAA4B,sCAAA;QAC5B,SAAS,WAAA;QACT,6EAA6E;QAC7E,iBAAiB,EAAE,QAAQ;KAC9B,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CACP;QACI,EAAE;QACF,sEAA+D,IAAA,eAAY,EAAC,mBAAmB,EAAE,WAAW,CAAC,kBAAK;QAClH,8HAA4H;QAC5H,EAAE;QACF,2EAA2E;QAC3E,EAAE;QACF,cAAc;QACd,4BAA4B;QAC5B,oCAAoC;QACpC,kCAAkC;QAClC,yCAAyC;QACzC,oBAAoB;QACpB,kBAAkB;QAClB,iBAAiB;QACjB,kBAAkB;QAClB,gDAA8C,IAAA,eAAY,EAAC,WAAW,CAAC,4BAAuB,IAAA,eAAY,EAAC,WAAW,CAAG;QACzH,yBAAyB;QACzB,gCAAgC;QAChC,sCAAsC;QACtC,UAAU;QACV,8BAA8B;QAC9B,gCAAgC;QAChC,qEAAqE;QACrE,iBAAiB;QACjB,2BAA2B;QAC3B,oBAAoB;QACpB,+BAA+B;QAC/B,wBAAwB;QACxB,uBAAuB;QACvB,yCAAyC;QACzC,EAAE;QACF,EAAE;QACF,8HAA8H;QAC9H,EAAE;QACF,sBAAU,IAAA,eAAY,EAAC,mBAAmB,EAAE,IAAA,WAAQ,EAAC,oCAA4B,EAAE,kDAA6B,CAAC,CAAC,kBAAK;QACvH,EAAE;QACF,yCAAyC;QACzC,2FAA2F;QAC3F,kCAAkC;QAClC,oFAAoF;QACpF,2BAAyB,SAAS,sDAAmD;QACrF,iIAAyG;QACzG,EAAE;QACF,0DAA0D;QAC1D,EAAE;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,CACf,CAAC;AACN,CAAC;AArHD,oBAqHC"}
|
@@ -1,7 +1,8 @@
|
|
1
|
+
import type { KeycloakVersion } from "../../KeycloakVersion";
|
1
2
|
export declare const containerLaunchScriptBasename = "start_keycloak_testing_container.sh";
|
2
3
|
/** Files for being able to run a hot reload keycloak container */
|
3
4
|
export declare function generateDebugFiles(params: {
|
4
|
-
keycloakVersion:
|
5
|
+
keycloakVersion: KeycloakVersion;
|
5
6
|
themeName: string;
|
6
7
|
keycloakThemeBuildingDirPath: string;
|
7
8
|
}): void;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generateDebugFiles.js","sourceRoot":"","sources":["../../../src/bin/build-keycloak-theme/generateDebugFiles/generateDebugFiles.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAyB;AACzB,6BAAgE;
|
1
|
+
{"version":3,"file":"generateDebugFiles.js","sourceRoot":"","sources":["../../../src/bin/build-keycloak-theme/generateDebugFiles/generateDebugFiles.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAyB;AACzB,6BAAgE;AAGnD,QAAA,6BAA6B,GAAG,qCAAqC,CAAC;AAEnF,kEAAkE;AAClE,SAAgB,kBAAkB,CAAC,MAAqG;IAC5H,IAAA,SAAS,GAAoD,MAAM,UAA1D,EAAE,4BAA4B,GAAsB,MAAM,6BAA5B,EAAE,eAAe,GAAK,MAAM,gBAAX,CAAY;IAE5E,EAAE,CAAC,aAAa,CACZ,IAAA,WAAQ,EAAC,4BAA4B,EAAE,YAAY,CAAC,EACpD,MAAM,CAAC,IAAI,CACP;QACI,yBAAuB,eAAiB;QACxC,EAAE;QACF,WAAW;QACX,EAAE;QACF,WAAW;QACX,EAAE;QACF,iEAAiE;QACjE,EAAE;QACF,wDAAwD;KAC3D,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,MAAM,CACT,CACJ,CAAC;IAEF,IAAM,WAAW,GAAM,SAAS,yBAAsB,CAAC;IACvD,IAAM,aAAa,GAAG,4BAA4B,CAAC;IAEnD,EAAE,CAAC,aAAa,CACZ,IAAA,WAAQ,EAAC,4BAA4B,EAAE,qCAA6B,CAAC,EACrE,MAAM,CAAC,IAAI,CACP;QACI,aAAa;QACb,EAAE;QACF,QAAM,4BAA8B;QACpC,EAAE;QACF,eAAa,aAAa,aAAU;QACpC,EAAE;QACF,uBAAqB,WAAa;QAClC,EAAE;QACF,eAAe;QACf,oBAAoB;QACpB,eAAa,aAAa,QAAK;QAC/B,8BAA8B;QAC9B,kCAAkC;QAClC,+CAA+C;QAC/C,WAAS,IAAA,WAAQ,EACb,4BAA4B,EAC5B,KAAK,EACL,MAAM,EACN,WAAW,EACX,OAAO,EACP,SAAS,CACZ,oCAA+B,SAAS,WAAQ;QACjD,YAAU,WAAW,YAAS;QAC9B,EAAE;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,MAAM,CACT,EACD,EAAE,MAAM,EAAE,GAAK,EAAE,CACpB,CAAC;IAEF,IAAM,oBAAoB,GAAG,IAAA,WAAQ,EAAC,4BAA4B,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC;IAE1G,IAAI;QACA,EAAE,CAAC,SAAS,CAAC,IAAA,cAAW,EAAC,oBAAoB,CAAC,CAAC,CAAC;KACnD;IAAC,WAAM,GAAE;IAEV,EAAE,CAAC,aAAa,CACZ,oBAAoB,EACpB,EAAE;SACG,YAAY,CAAC,IAAA,WAAQ,EAAC,SAAS,EAAE,mBAAiB,eAAe,SAAM,CAAC,CAAC;SACzE,QAAQ,CAAC,MAAM,CAAC;SAChB,OAAO,CACJ,IAAI,MAAM,CACN,CAAC,sCAAsC,EAAE,iCAAiC,EAAE,uCAAuC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EACjI,GAAG,CACN,EACD,CAAC,iCAAiC,EAAE,kCAAkC,EAAE,wCAAwC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/H,CACR,CAAC;AACN,CAAC;AA7ED,gDA6EC"}
|