aril 1.0.4 → 1.0.5-dev-2025-04-30
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/esm2022/boot/config/api/src/api.service.mjs +1 -6
- package/esm2022/boot/mfe/src/bootstrap.mjs +257 -2
- package/esm2022/ui/editor/aril-ui-editor.mjs +5 -0
- package/esm2022/ui/editor/index.mjs +3 -0
- package/esm2022/ui/editor/src/aril-editor.component.mjs +159 -0
- package/esm2022/ui/editor/src/types.mjs +24 -0
- package/fesm2022/{aril-app.component-1u4fN5iR.mjs → aril-app.component-Ux9msiiR.mjs} +2 -1
- package/fesm2022/aril-app.component-Ux9msiiR.mjs.map +1 -0
- package/fesm2022/aril-boot-config-api.mjs +0 -5
- package/fesm2022/aril-boot-config-api.mjs.map +1 -1
- package/fesm2022/{aril-boot-mfe-app.component-uibOq039.mjs → aril-boot-mfe-app.component-RW39gJnT.mjs} +3 -2
- package/fesm2022/aril-boot-mfe-app.component-RW39gJnT.mjs.map +1 -0
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-BidobbPl.mjs +368 -0
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-BidobbPl.mjs.map +1 -0
- package/fesm2022/aril-boot-mfe.mjs +2 -1
- package/fesm2022/aril-boot-mfe.mjs.map +1 -1
- package/fesm2022/aril-ui-editor.mjs +189 -0
- package/fesm2022/aril-ui-editor.mjs.map +1 -0
- package/fesm2022/aril.mjs +257 -2
- package/fesm2022/aril.mjs.map +1 -1
- package/package.json +86 -78
- package/ui/editor/index.d.ts +2 -0
- package/ui/editor/src/aril-editor.component.d.ts +23 -0
- package/ui/editor/src/types.d.ts +21 -0
- package/fesm2022/aril-app.component-1u4fN5iR.mjs.map +0 -1
- package/fesm2022/aril-boot-mfe-app.component-uibOq039.mjs.map +0 -1
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-sashUxA6.mjs +0 -113
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-sashUxA6.mjs.map +0 -1
|
@@ -8,11 +8,6 @@ export const loadApiConfigs = (httpClient, keycloak, appName, microAppService) =
|
|
|
8
8
|
.pipe(switchMap((configs) => {
|
|
9
9
|
globalThis.hostMenuItems = signal([]);
|
|
10
10
|
Object.assign(API_CONFIGS, { ...configs });
|
|
11
|
-
globalThis.mwApi = API_CONFIGS.mwApi;
|
|
12
|
-
if (isDevMode())
|
|
13
|
-
globalThis.hostAPI = API_CONFIGS.api;
|
|
14
|
-
else if (appName === Apps.MNG)
|
|
15
|
-
API_CONFIGS.api = window.location.origin + '/host/v1'; // Dynamic API for MNG (Standalone Production Mode)
|
|
16
11
|
return from(keycloak.init({
|
|
17
12
|
config: API_CONFIGS.keycloak,
|
|
18
13
|
loadUserProfileAtStartUp: true,
|
|
@@ -47,4 +42,4 @@ export function setApiConfigOnMFEMode(httpClient, keycloak, appName) {
|
|
|
47
42
|
return firstValueFrom(observable$);
|
|
48
43
|
};
|
|
49
44
|
}
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2Jvb3QvY29uZmlnL2FwaS9zcmMvYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFtQixNQUFNLGtCQUFrQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUk3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVqRSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FDMUIsQ0FBQyxVQUFzQixFQUFFLFFBQXlCLEVBQUUsT0FBZSxFQUFFLGVBQWlDLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUMvRyxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQzdCLFVBQVU7S0FDUixHQUFHLENBQW9CLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO0tBQzVGLElBQUksQ0FDSixTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtJQUNwQixVQUFrQixDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFL0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFFM0MsT0FBTyxJQUFJLENBQ1YsUUFBUSxDQUFDLElBQUksQ0FBQztRQUNiLE1BQU0sRUFBRSxXQUFXLENBQUMsUUFBUTtRQUM1Qix3QkFBd0IsRUFBRSxJQUFJO1FBQzlCLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUU7UUFDbEUsa0JBQWtCLEVBQUUsQ0FBQyxTQUFTLENBQUM7S0FDL0IsQ0FBQyxDQUNGLENBQUMsSUFBSSxDQUNMLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDYixnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUMxQyxNQUFNLEdBQUcsR0FBSSxLQUFxQixDQUFDLE1BQU0sQ0FBQztRQUMxQyxhQUFhLENBQUMsSUFBSSxXQUFXLENBQUMsR0FBRyxHQUFHLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU3RSxRQUFRLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxpQkFBaUIsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUN2RCxhQUFhLENBQUMsSUFBSSxXQUFXLENBQUMsR0FBRyxHQUFHLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoRixDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUMsQ0FDRixDQUNELENBQUM7QUFDSCxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUM1RTtLQUNBLFNBQVMsRUFBRTtLQUNYLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FDZCxDQUFDO0FBRUo7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNwQyxVQUFzQixFQUN0QixRQUF5QixFQUN6QixPQUFlO0lBRWYsT0FBTyxHQUFHLEVBQUU7UUFDWCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBMkIsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sV0FBVyxHQUFHLFVBQVU7YUFDNUIsR0FBRyxDQUNILFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsSUFBSSxzQ0FBc0M7WUFDNUUsQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZO2dCQUNyQyxDQUFDLENBQUMsTUFBTSxPQUFPLFdBQVcsQ0FDMUI7YUFDQSxJQUFJLENBQ0osR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDZixNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FDRixDQUFDO1FBRUgsT0FBTyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEMsQ0FBQyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGlzRGV2TW9kZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBLZXljbG9ha0V2ZW50VHlwZSwgS2V5Y2xvYWtTZXJ2aWNlIH0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XHJcbmltcG9ydCB7IEVNUFRZLCBmaW5hbGl6ZSwgZmlyc3RWYWx1ZUZyb20sIGZyb20sIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBNaWNyb0FwcFNlcnZpY2UgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5cclxuaW1wb3J0IHsgQXBpQ29uZmlnc0ZhY3RvcnksIEFwcHMsIGFwcFBvcnRzIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcclxuXHJcbmV4cG9ydCBjb25zdCBBUElfQ09ORklHUyA9IG5ldyBBcGlDb25maWdzRmFjdG9yeSgpO1xyXG5cclxuZXhwb3J0IGNvbnN0IGxvYWRBcGlDb25maWdzID1cclxuXHQoaHR0cENsaWVudDogSHR0cENsaWVudCwga2V5Y2xvYWs6IEtleWNsb2FrU2VydmljZSwgYXBwTmFtZTogc3RyaW5nLCBtaWNyb0FwcFNlcnZpY2U/OiBNaWNyb0FwcFNlcnZpY2UpID0+ICgpID0+XHJcblx0XHRuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT5cclxuXHRcdFx0aHR0cENsaWVudFxyXG5cdFx0XHRcdC5nZXQ8QXBpQ29uZmlnc0ZhY3Rvcnk+KGlzRGV2TW9kZSgpID8gJy4vYXNzZXRzL2xvY2FsLWNvbmZpZ3MvYXBpLmxvY2FsLmpzb24nIDogJy4vYXBpLmpzb24nKVxyXG5cdFx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdFx0c3dpdGNoTWFwKChjb25maWdzKSA9PiB7XHJcblx0XHRcdFx0XHRcdChnbG9iYWxUaGlzIGFzIGFueSkuaG9zdE1lbnVJdGVtcyA9IHNpZ25hbChbXSk7XHJcblxyXG5cdFx0XHRcdFx0XHRPYmplY3QuYXNzaWduKEFQSV9DT05GSUdTLCB7IC4uLmNvbmZpZ3MgfSk7XHJcblxyXG5cdFx0XHRcdFx0XHRyZXR1cm4gZnJvbShcclxuXHRcdFx0XHRcdFx0XHRrZXljbG9hay5pbml0KHtcclxuXHRcdFx0XHRcdFx0XHRcdGNvbmZpZzogQVBJX0NPTkZJR1Mua2V5Y2xvYWssXHJcblx0XHRcdFx0XHRcdFx0XHRsb2FkVXNlclByb2ZpbGVBdFN0YXJ0VXA6IHRydWUsXHJcblx0XHRcdFx0XHRcdFx0XHRpbml0T3B0aW9uczogeyBvbkxvYWQ6ICdsb2dpbi1yZXF1aXJlZCcsIGNoZWNrTG9naW5JZnJhbWU6IGZhbHNlIH0sXHJcblx0XHRcdFx0XHRcdFx0XHRiZWFyZXJFeGNsdWRlZFVybHM6IFsnL2Fzc2V0cyddXHJcblx0XHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdFx0KS5waXBlKFxyXG5cdFx0XHRcdFx0XHRcdGZpbmFsaXplKCgpID0+XHJcblx0XHRcdFx0XHRcdFx0XHRhZGRFdmVudExpc3RlbmVyKCdtb2R1bGUtcmVhZHknLCAoZXZlbnQpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgYXBwID0gKGV2ZW50IGFzIEN1c3RvbUV2ZW50KS5kZXRhaWw7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KGAke2FwcH06aW5pdC1rZXljbG9ha2AsIHsgZGV0YWlsOiBrZXljbG9hayB9KSk7XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRrZXljbG9hay5rZXljbG9ha0V2ZW50cyQuc3Vic2NyaWJlKChlKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGUudHlwZSA9PT0gS2V5Y2xvYWtFdmVudFR5cGUuT25BdXRoUmVmcmVzaFN1Y2Nlc3MpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KGAke2FwcH06dXBkYXRlLWtleWNsb2FrYCwgeyBkZXRhaWw6IGtleWNsb2FrIH0pKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9KSxcclxuXHRcdFx0XHRcdHN3aXRjaE1hcCgoKSA9PiBtaWNyb0FwcFNlcnZpY2U/LmluaXQoaHR0cENsaWVudCwgQVBJX0NPTkZJR1MuYXBpKSA/PyBFTVBUWSlcclxuXHRcdFx0XHQpXHJcblx0XHRcdFx0LnN1YnNjcmliZSgpXHJcblx0XHRcdFx0LmFkZChyZXNvbHZlKVxyXG5cdFx0KTtcclxuXHJcbi8qKlxyXG4gKiBvbmx5IHdvcmtzIHdoZW4gaXNIb3N0TW9kZSBpcyB0cnVlXHJcbiAqIG1pY3JvLWFwcCBhY2Nlc3MgaXRzIG93biBhcGkuanNvbiBmaWxlIHdoZW4gb3BlbmVkIGluIGhvc3RcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBzZXRBcGlDb25maWdPbk1GRU1vZGUoXHJcblx0aHR0cENsaWVudDogSHR0cENsaWVudCxcclxuXHRrZXljbG9hazogS2V5Y2xvYWtTZXJ2aWNlLFxyXG5cdGFwcE5hbWU6IHN0cmluZ1xyXG4pOiAoKSA9PiBQcm9taXNlPGFueT4ge1xyXG5cdHJldHVybiAoKSA9PiB7XHJcblx0XHRjb25zdCBwb3J0ID0gYXBwUG9ydHNbYXBwTmFtZS50b1VwcGVyQ2FzZSgpIGFzIGtleW9mIHR5cGVvZiBhcHBQb3J0c107XHJcblx0XHRjb25zdCBvYnNlcnZhYmxlJCA9IGh0dHBDbGllbnRcclxuXHRcdFx0LmdldDxBcGlDb25maWdzRmFjdG9yeT4oXHJcblx0XHRcdFx0aXNEZXZNb2RlKCkgPyBgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L2Fzc2V0cy9sb2NhbC1jb25maWdzL2FwaS5sb2NhbC5qc29uYFxyXG5cdFx0XHRcdDogYXBwTmFtZSA9PT0gQXBwcy5NTkcgPyAnLi9hcGkuanNvbidcclxuXHRcdFx0XHQ6IGAuLi8ke2FwcE5hbWV9L2FwaS5qc29uYFxyXG5cdFx0XHQpXHJcblx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdHRhcCgoY29uZmlncykgPT4ge1xyXG5cdFx0XHRcdFx0T2JqZWN0LmFzc2lnbihBUElfQ09ORklHUywgeyAuLi5jb25maWdzIH0pO1xyXG5cdFx0XHRcdH0pXHJcblx0XHRcdCk7XHJcblxyXG5cdFx0cmV0dXJuIGZpcnN0VmFsdWVGcm9tKG9ic2VydmFibGUkKTtcclxuXHR9O1xyXG59XHJcbiJdfQ==
|
|
@@ -16,6 +16,7 @@ import { provideHost } from 'aril/provider';
|
|
|
16
16
|
import { StyleLoaderService } from 'aril/util/loaders';
|
|
17
17
|
import { appComponentLoader } from './appComponentLoader';
|
|
18
18
|
import { loadStyles } from './loadStyles';
|
|
19
|
+
import { MonacoEditorModule, NGX_MONACO_EDITOR_CONFIG } from 'ngx-monaco-editor-v2';
|
|
19
20
|
export var appName;
|
|
20
21
|
export var menuItems = [];
|
|
21
22
|
export const boot = (_appName, _routes, _menuItems) => {
|
|
@@ -23,6 +24,258 @@ export const boot = (_appName, _routes, _menuItems) => {
|
|
|
23
24
|
return;
|
|
24
25
|
appName = _appName;
|
|
25
26
|
menuItems = _menuItems;
|
|
27
|
+
const monacoConfig = {
|
|
28
|
+
baseUrl: 'assets',
|
|
29
|
+
defaultOptions: { scrollBeyondLastLine: false },
|
|
30
|
+
onMonacoLoad: () => {
|
|
31
|
+
// JSON düzenleyici ayarları
|
|
32
|
+
if (monaco && monaco.languages && monaco.languages.json) {
|
|
33
|
+
monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
|
|
34
|
+
validate: true,
|
|
35
|
+
allowComments: false,
|
|
36
|
+
schemas: []
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
// JavaScript/TypeScript düzenleyici ayarları
|
|
40
|
+
if (monaco && monaco.languages && monaco.languages.typescript) {
|
|
41
|
+
monaco.languages.typescript.javascriptDefaults.setCompilerOptions({
|
|
42
|
+
target: monaco.languages.typescript.ScriptTarget.ES2016,
|
|
43
|
+
allowNonTsExtensions: true,
|
|
44
|
+
moduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs,
|
|
45
|
+
module: monaco.languages.typescript.ModuleKind.CommonJS,
|
|
46
|
+
noEmit: true,
|
|
47
|
+
typeRoots: ["node_modules/@types"]
|
|
48
|
+
});
|
|
49
|
+
// TypeScript düzenleyici ayarları
|
|
50
|
+
monaco.languages.typescript.typescriptDefaults.setCompilerOptions({
|
|
51
|
+
target: monaco.languages.typescript.ScriptTarget.ES2016,
|
|
52
|
+
allowNonTsExtensions: true,
|
|
53
|
+
moduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs,
|
|
54
|
+
module: monaco.languages.typescript.ModuleKind.CommonJS,
|
|
55
|
+
noEmit: true,
|
|
56
|
+
typeRoots: ["node_modules/@types"]
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
// HTML, XML ve diğer markup dilleri için ayarlar
|
|
60
|
+
if (monaco && monaco.languages && monaco.languages.html) {
|
|
61
|
+
monaco.languages.html.htmlDefaults.setOptions({
|
|
62
|
+
format: {
|
|
63
|
+
tabSize: 2,
|
|
64
|
+
insertSpaces: true
|
|
65
|
+
},
|
|
66
|
+
suggest: {
|
|
67
|
+
html5: true
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
// Python için syntax highlighting ve özel formatlamalar
|
|
72
|
+
if (monaco && monaco.languages) {
|
|
73
|
+
monaco.languages.registerDocumentFormattingEditProvider('python', {
|
|
74
|
+
provideDocumentFormattingEdits: function (model) {
|
|
75
|
+
// Basit bir Python formatlaması örneği
|
|
76
|
+
// Gerçek projede daha kapsamlı bir formatter kullanılabilir
|
|
77
|
+
const text = model.getValue();
|
|
78
|
+
// Burada Python formatlaması yapılabilir
|
|
79
|
+
return [
|
|
80
|
+
{
|
|
81
|
+
range: model.getFullModelRange(),
|
|
82
|
+
text: text // Formatlanmış metin
|
|
83
|
+
}
|
|
84
|
+
];
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
// Python için özel linting kuralları
|
|
88
|
+
monaco.languages.registerCompletionItemProvider('python', {
|
|
89
|
+
provideCompletionItems: function (model, position) {
|
|
90
|
+
const suggestions = [
|
|
91
|
+
{
|
|
92
|
+
label: 'def',
|
|
93
|
+
kind: monaco.languages.CompletionItemKind.Keyword,
|
|
94
|
+
insertText: 'def ${1:function_name}(${2:parameters}):\n\t${3:pass}',
|
|
95
|
+
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
96
|
+
documentation: 'Fonksiyon tanımlama'
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
label: 'class',
|
|
100
|
+
kind: monaco.languages.CompletionItemKind.Keyword,
|
|
101
|
+
insertText: 'class ${1:ClassName}:\n\tdef __init__(self, ${2:parameters}):\n\t\t${3:pass}',
|
|
102
|
+
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
103
|
+
documentation: 'Sınıf tanımlama'
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
label: 'if',
|
|
107
|
+
kind: monaco.languages.CompletionItemKind.Keyword,
|
|
108
|
+
insertText: 'if ${1:condition}:\n\t${2:pass}',
|
|
109
|
+
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
110
|
+
documentation: 'If bloğu'
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
label: 'for',
|
|
114
|
+
kind: monaco.languages.CompletionItemKind.Keyword,
|
|
115
|
+
insertText: 'for ${1:item} in ${2:iterable}:\n\t${3:pass}',
|
|
116
|
+
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
117
|
+
documentation: 'For döngüsü'
|
|
118
|
+
}
|
|
119
|
+
];
|
|
120
|
+
return { suggestions: suggestions };
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
// Lua için özel ayarlar
|
|
125
|
+
if (monaco && monaco.languages) {
|
|
126
|
+
monaco.languages.registerDocumentFormattingEditProvider('lua', {
|
|
127
|
+
provideDocumentFormattingEdits: function (model) {
|
|
128
|
+
const text = model.getValue();
|
|
129
|
+
// Lua formatlaması
|
|
130
|
+
return [
|
|
131
|
+
{
|
|
132
|
+
range: model.getFullModelRange(),
|
|
133
|
+
text: text // Formatlanmış metin
|
|
134
|
+
}
|
|
135
|
+
];
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
// Lua için özel öneriler
|
|
139
|
+
monaco.languages.registerCompletionItemProvider('lua', {
|
|
140
|
+
provideCompletionItems: function (model, position) {
|
|
141
|
+
const suggestions = [
|
|
142
|
+
{
|
|
143
|
+
label: 'function',
|
|
144
|
+
kind: monaco.languages.CompletionItemKind.Keyword,
|
|
145
|
+
insertText: 'function ${1:name}(${2:params})\n\t${3:-- body}\nend',
|
|
146
|
+
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
147
|
+
documentation: 'Fonksiyon tanımlama'
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
label: 'if',
|
|
151
|
+
kind: monaco.languages.CompletionItemKind.Keyword,
|
|
152
|
+
insertText: 'if ${1:condition} then\n\t${2:-- body}\nend',
|
|
153
|
+
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
154
|
+
documentation: 'If bloğu'
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
label: 'for',
|
|
158
|
+
kind: monaco.languages.CompletionItemKind.Keyword,
|
|
159
|
+
insertText: 'for ${1:i}=${2:1},${3:10} do\n\t${4:-- body}\nend',
|
|
160
|
+
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
161
|
+
documentation: 'For döngüsü'
|
|
162
|
+
}
|
|
163
|
+
];
|
|
164
|
+
return { suggestions: suggestions };
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
// Java için özel ayarlar
|
|
169
|
+
if (monaco && monaco.languages) {
|
|
170
|
+
monaco.languages.registerDocumentFormattingEditProvider('java', {
|
|
171
|
+
provideDocumentFormattingEdits: function (model) {
|
|
172
|
+
const text = model.getValue();
|
|
173
|
+
// Java formatlaması
|
|
174
|
+
return [
|
|
175
|
+
{
|
|
176
|
+
range: model.getFullModelRange(),
|
|
177
|
+
text: text // Formatlanmış metin
|
|
178
|
+
}
|
|
179
|
+
];
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
// Java için özel öneriler
|
|
183
|
+
monaco.languages.registerCompletionItemProvider('java', {
|
|
184
|
+
provideCompletionItems: function (model, position) {
|
|
185
|
+
const suggestions = [
|
|
186
|
+
{
|
|
187
|
+
label: 'class',
|
|
188
|
+
kind: monaco.languages.CompletionItemKind.Keyword,
|
|
189
|
+
insertText: 'public class ${1:ClassName} {\n\t${2}\n}',
|
|
190
|
+
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
191
|
+
documentation: 'Sınıf tanımlama'
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
label: 'main',
|
|
195
|
+
kind: monaco.languages.CompletionItemKind.Snippet,
|
|
196
|
+
insertText: 'public static void main(String[] args) {\n\t${1}\n}',
|
|
197
|
+
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
198
|
+
documentation: 'Main metodu'
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
label: 'sout',
|
|
202
|
+
kind: monaco.languages.CompletionItemKind.Snippet,
|
|
203
|
+
insertText: 'System.out.println(${1});',
|
|
204
|
+
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
205
|
+
documentation: 'Konsola yazdırma'
|
|
206
|
+
}
|
|
207
|
+
];
|
|
208
|
+
return { suggestions: suggestions };
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
// HTML için özel ayarlar
|
|
213
|
+
if (monaco && monaco.languages) {
|
|
214
|
+
monaco.languages.registerCompletionItemProvider('html', {
|
|
215
|
+
provideCompletionItems: function (model, position) {
|
|
216
|
+
const suggestions = [
|
|
217
|
+
{
|
|
218
|
+
label: 'html5',
|
|
219
|
+
kind: monaco.languages.CompletionItemKind.Snippet,
|
|
220
|
+
insertText: '<!DOCTYPE html>\n<html lang="en">\n<head>\n\t<meta charset="UTF-8">\n\t<meta name="viewport" content="width=device-width, initial-scale=1.0">\n\t<title>${1:Document}</title>\n</head>\n<body>\n\t${2}\n</body>\n</html>',
|
|
221
|
+
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
222
|
+
documentation: 'HTML5 taslağı'
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
label: 'div',
|
|
226
|
+
kind: monaco.languages.CompletionItemKind.Snippet,
|
|
227
|
+
insertText: '<div class="${1:className}">\n\t${2}\n</div>',
|
|
228
|
+
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
229
|
+
documentation: 'Div elementi'
|
|
230
|
+
}
|
|
231
|
+
];
|
|
232
|
+
return { suggestions: suggestions };
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
// XML için özel ayarlar
|
|
237
|
+
if (monaco && monaco.languages) {
|
|
238
|
+
monaco.languages.registerCompletionItemProvider('xml', {
|
|
239
|
+
provideCompletionItems: function (model, position) {
|
|
240
|
+
const suggestions = [
|
|
241
|
+
{
|
|
242
|
+
label: 'xml',
|
|
243
|
+
kind: monaco.languages.CompletionItemKind.Snippet,
|
|
244
|
+
insertText: '<?xml version="1.0" encoding="UTF-8"?>\n<${1:root}>\n\t${2}\n</${1:root}>',
|
|
245
|
+
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
246
|
+
documentation: 'XML taslağı'
|
|
247
|
+
}
|
|
248
|
+
];
|
|
249
|
+
return { suggestions: suggestions };
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
// JSON için özel ayarlar ve şema doğrulama
|
|
254
|
+
if (monaco && monaco.languages && monaco.languages.json) {
|
|
255
|
+
monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
|
|
256
|
+
validate: true,
|
|
257
|
+
allowComments: false,
|
|
258
|
+
schemas: [
|
|
259
|
+
{
|
|
260
|
+
uri: "http://myserver/schema/package.schema.json",
|
|
261
|
+
fileMatch: ["package.json"],
|
|
262
|
+
schema: {
|
|
263
|
+
type: "object",
|
|
264
|
+
properties: {
|
|
265
|
+
name: { type: "string" },
|
|
266
|
+
version: { type: "string" },
|
|
267
|
+
dependencies: {
|
|
268
|
+
type: "object"
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
]
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
// Daha fazla dil ekleme ve özelleştirme işlemleri buraya eklenebilir
|
|
277
|
+
}
|
|
278
|
+
};
|
|
26
279
|
const appBootConfig = {
|
|
27
280
|
providers: [
|
|
28
281
|
provideAnimations(),
|
|
@@ -56,7 +309,9 @@ export const boot = (_appName, _routes, _menuItems) => {
|
|
|
56
309
|
{
|
|
57
310
|
provide: i18nFolderName,
|
|
58
311
|
useValue: _appName
|
|
59
|
-
}
|
|
312
|
+
},
|
|
313
|
+
importProvidersFrom(MonacoEditorModule.forRoot()),
|
|
314
|
+
{ provide: NGX_MONACO_EDITOR_CONFIG, useValue: monacoConfig }
|
|
60
315
|
]
|
|
61
316
|
};
|
|
62
317
|
createApplication(appBootConfig).then((appRef) => {
|
|
@@ -66,4 +321,4 @@ export const boot = (_appName, _routes, _menuItems) => {
|
|
|
66
321
|
});
|
|
67
322
|
});
|
|
68
323
|
};
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L21mZS9zcmMvYm9vdHN0cmFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFxQixtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQ04sa0JBQWtCLEVBRWxCLGFBQWEsRUFDYix5QkFBeUIsRUFDekIsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHlCQUF5QixFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXJHLE9BQU8sRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLEVBQVEsaUJBQWlCLEVBQWtCLE1BQU0sdUJBQXVCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUxQyxNQUFNLENBQUMsSUFBSSxPQUFhLENBQUM7QUFDekIsTUFBTSxDQUFDLElBQUksU0FBUyxHQUFxQixFQUFFLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsUUFBYyxFQUFFLE9BQWUsRUFBRSxVQUE0QixFQUFFLEVBQUU7SUFDckYsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sUUFBUSxFQUFFLENBQUM7UUFBRSxPQUFPO0lBRWxELE9BQU8sR0FBRyxRQUFRLENBQUM7SUFDbkIsU0FBUyxHQUFHLFVBQVUsQ0FBQztJQUV2QixNQUFNLGFBQWEsR0FBc0I7UUFDeEMsU0FBUyxFQUFFO1lBQ1YsaUJBQWlCLEVBQUU7WUFDbkIsV0FBVyxDQUFDLE9BQU8sQ0FBQztZQUNwQix5QkFBeUI7WUFDekIsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7WUFDOUQsYUFBYSxDQUFDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztZQUM5RixFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUU7WUFDNUQsbUJBQW1CLENBQUMsVUFBVSxFQUFFLHFCQUFxQixDQUFDO1lBQ3RELFNBQVMsRUFBRTtZQUNYLGNBQWM7WUFDZCxtQkFBbUI7WUFDbkI7Z0JBQ0MsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLFVBQVUsRUFBUSxVQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsY0FBYztnQkFDakYsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFLGVBQWUsRUFBRSxjQUFjLENBQUM7YUFDbkQ7WUFDRDtnQkFDQyxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsVUFBVSxFQUFFLFdBQVc7Z0JBQ3ZCLEtBQUssRUFBRSxJQUFJO2dCQUNYLElBQUksRUFBRSxDQUFDLGtCQUFrQixDQUFDO2FBQzFCO1lBQ0Q7Z0JBQ0MsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLFVBQVUsRUFBRSxVQUFVO2dCQUN0QixLQUFLLEVBQUUsSUFBSTtnQkFDWCxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxjQUFjLENBQUM7YUFDMUM7WUFDRDtnQkFDQyxPQUFPLEVBQUUsY0FBYztnQkFDdkIsUUFBUSxFQUFFLFFBQVE7YUFDbEI7U0FDRDtLQUNELENBQUM7SUFFRixpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUNoRCxrQkFBa0IsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQzFDLE1BQU0sR0FBRyxHQUFHLG1CQUFtQixDQUFDLFlBQVksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUM3RSxjQUFjLENBQUMsTUFBTSxDQUFDLE9BQU8sT0FBTyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIHByb3ZpZGVIdHRwQ2xpZW50LCB3aXRoSW50ZXJjZXB0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBBUFBfSU5JVElBTElaRVIsIEFwcGxpY2F0aW9uQ29uZmlnLCBpbXBvcnRQcm92aWRlcnNGcm9tIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNyZWF0ZUN1c3RvbUVsZW1lbnQgfSBmcm9tICdAYW5ndWxhci9lbGVtZW50cyc7XHJcbmltcG9ydCB7IGNyZWF0ZUFwcGxpY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IHByb3ZpZGVBbmltYXRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcclxuaW1wb3J0IHtcclxuXHRSb3V0ZVJldXNlU3RyYXRlZ3ksXHJcblx0Um91dGVzLFxyXG5cdHByb3ZpZGVSb3V0ZXIsXHJcblx0d2l0aENvbXBvbmVudElucHV0QmluZGluZyxcclxuXHR3aXRoSGFzaExvY2F0aW9uLFxyXG5cdHdpdGhWaWV3VHJhbnNpdGlvbnNcclxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcblxyXG5pbXBvcnQgeyBLZXljbG9ha0FuZ3VsYXJNb2R1bGUsIEtleWNsb2FrQmVhcmVySW50ZXJjZXB0b3IsIEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5cclxuaW1wb3J0IHsgbG9hZEFwaUNvbmZpZ3MsIHNldEFwaUNvbmZpZ09uTUZFTW9kZSB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBpJztcclxuaW1wb3J0IHsgQXBwcywgQXJpbFJldXNlU3RyYXRlZ3ksIFBsdWdpbk1lbnVJdGVtIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuaW1wb3J0IHsgZ2V0Tmdab25lLCBsb2FkUGx1Z2lucyB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvcGx1Z2lucyc7XHJcbmltcG9ydCB7IEh0dHBCYWNrZW5kU2VydmljZSB9IGZyb20gJ2FyaWwvaHR0cCc7XHJcbmltcG9ydCB7IGkxOG5Gb2xkZXJOYW1lLCBpMThuTW9kdWxlIH0gZnJvbSAnYXJpbC9pMThuJztcclxuaW1wb3J0IHsga2V5Y2xvYWtBdXRoSW50ZXJjZXB0b3IgfSBmcm9tICdhcmlsL2tleWNsb2FrJztcclxuaW1wb3J0IHsgcHJvdmlkZUhvc3QgfSBmcm9tICdhcmlsL3Byb3ZpZGVyJztcclxuaW1wb3J0IHsgU3R5bGVMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnYXJpbC91dGlsL2xvYWRlcnMnO1xyXG5cclxuaW1wb3J0IHsgYXBwQ29tcG9uZW50TG9hZGVyIH0gZnJvbSAnLi9hcHBDb21wb25lbnRMb2FkZXInO1xyXG5pbXBvcnQgeyBsb2FkU3R5bGVzIH0gZnJvbSAnLi9sb2FkU3R5bGVzJztcclxuXHJcbmV4cG9ydCB2YXIgYXBwTmFtZTogQXBwcztcclxuZXhwb3J0IHZhciBtZW51SXRlbXM6IFBsdWdpbk1lbnVJdGVtW10gPSBbXTtcclxuXHJcbmV4cG9ydCBjb25zdCBib290ID0gKF9hcHBOYW1lOiBBcHBzLCBfcm91dGVzOiBSb3V0ZXMsIF9tZW51SXRlbXM6IFBsdWdpbk1lbnVJdGVtW10pID0+IHtcclxuXHRpZiAoY3VzdG9tRWxlbWVudHMuZ2V0KGBhcHAtJHtfYXBwTmFtZX1gKSkgcmV0dXJuO1xyXG5cclxuXHRhcHBOYW1lID0gX2FwcE5hbWU7XHJcblx0bWVudUl0ZW1zID0gX21lbnVJdGVtcztcclxuXHJcblx0Y29uc3QgYXBwQm9vdENvbmZpZzogQXBwbGljYXRpb25Db25maWcgPSB7XHJcblx0XHRwcm92aWRlcnM6IFtcclxuXHRcdFx0cHJvdmlkZUFuaW1hdGlvbnMoKSxcclxuXHRcdFx0cHJvdmlkZUhvc3QoYXBwTmFtZSksXHJcblx0XHRcdEtleWNsb2FrQmVhcmVySW50ZXJjZXB0b3IsXHJcblx0XHRcdHByb3ZpZGVIdHRwQ2xpZW50KHdpdGhJbnRlcmNlcHRvcnMoW2tleWNsb2FrQXV0aEludGVyY2VwdG9yXSkpLFxyXG5cdFx0XHRwcm92aWRlUm91dGVyKF9yb3V0ZXMsIHdpdGhDb21wb25lbnRJbnB1dEJpbmRpbmcoKSwgd2l0aEhhc2hMb2NhdGlvbigpLCB3aXRoVmlld1RyYW5zaXRpb25zKCkpLFxyXG5cdFx0XHR7IHByb3ZpZGU6IFJvdXRlUmV1c2VTdHJhdGVneSwgdXNlQ2xhc3M6IEFyaWxSZXVzZVN0cmF0ZWd5IH0sXHJcblx0XHRcdGltcG9ydFByb3ZpZGVyc0Zyb20oaTE4bk1vZHVsZSwgS2V5Y2xvYWtBbmd1bGFyTW9kdWxlKSxcclxuXHRcdFx0Z2V0Tmdab25lKCksXHJcblx0XHRcdE1lc3NhZ2VTZXJ2aWNlLFxyXG5cdFx0XHRDb25maXJtYXRpb25TZXJ2aWNlLFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0cHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxyXG5cdFx0XHRcdHVzZUZhY3Rvcnk6ICg8YW55Pmdsb2JhbFRoaXMpLmlzSG9zdE1vZGUgPyBzZXRBcGlDb25maWdPbk1GRU1vZGUgOiBsb2FkQXBpQ29uZmlncyxcclxuXHRcdFx0XHRtdWx0aTogdHJ1ZSxcclxuXHRcdFx0XHRkZXBzOiBbSHR0cENsaWVudCwgS2V5Y2xvYWtTZXJ2aWNlLCBpMThuRm9sZGVyTmFtZV1cclxuXHRcdFx0fSxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcclxuXHRcdFx0XHR1c2VGYWN0b3J5OiBsb2FkUGx1Z2lucyxcclxuXHRcdFx0XHRtdWx0aTogdHJ1ZSxcclxuXHRcdFx0XHRkZXBzOiBbSHR0cEJhY2tlbmRTZXJ2aWNlXVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0cHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxyXG5cdFx0XHRcdHVzZUZhY3Rvcnk6IGxvYWRTdHlsZXMsXHJcblx0XHRcdFx0bXVsdGk6IHRydWUsXHJcblx0XHRcdFx0ZGVwczogW1N0eWxlTG9hZGVyU2VydmljZSwgaTE4bkZvbGRlck5hbWVdXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHRwcm92aWRlOiBpMThuRm9sZGVyTmFtZSxcclxuXHRcdFx0XHR1c2VWYWx1ZTogX2FwcE5hbWVcclxuXHRcdFx0fVxyXG5cdFx0XVxyXG5cdH07XHJcblxyXG5cdGNyZWF0ZUFwcGxpY2F0aW9uKGFwcEJvb3RDb25maWcpLnRoZW4oKGFwcFJlZikgPT4ge1xyXG5cdFx0YXBwQ29tcG9uZW50TG9hZGVyKCkudGhlbigoQXBwQ29tcG9uZW50KSA9PiB7XHJcblx0XHRcdGNvbnN0IGFwcCA9IGNyZWF0ZUN1c3RvbUVsZW1lbnQoQXBwQ29tcG9uZW50LCB7IGluamVjdG9yOiBhcHBSZWYuaW5qZWN0b3IgfSk7XHJcblx0XHRcdGN1c3RvbUVsZW1lbnRzLmRlZmluZShgYXBwLSR7YXBwTmFtZX1gLCBhcHApO1xyXG5cdFx0fSk7XHJcblx0fSk7XHJcbn07XHJcbiJdfQ==
|
|
324
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L21mZS9zcmMvYm9vdHN0cmFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFxQixtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQ04sa0JBQWtCLEVBRWxCLGFBQWEsRUFDYix5QkFBeUIsRUFDekIsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHlCQUF5QixFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXJHLE9BQU8sRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLEVBQVEsaUJBQWlCLEVBQWtCLE1BQU0sdUJBQXVCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxD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QUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQzFDLE1BQU0sR0FBRyxHQUFHLG1CQUFtQixDQUFDLFlBQVksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUM3RSxjQUFjLENBQUMsTUFBTSxDQUFDLE9BQU8sT0FBTyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIHByb3ZpZGVIdHRwQ2xpZW50LCB3aXRoSW50ZXJjZXB0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBBUFBfSU5JVElBTElaRVIsIEFwcGxpY2F0aW9uQ29uZmlnLCBpbXBvcnRQcm92aWRlcnNGcm9tIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNyZWF0ZUN1c3RvbUVsZW1lbnQgfSBmcm9tICdAYW5ndWxhci9lbGVtZW50cyc7XHJcbmltcG9ydCB7IGNyZWF0ZUFwcGxpY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IHByb3ZpZGVBbmltYXRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcclxuaW1wb3J0IHtcclxuXHRSb3V0ZVJldXNlU3RyYXRlZ3ksXHJcblx0Um91dGVzLFxyXG5cdHByb3ZpZGVSb3V0ZXIsXHJcblx0d2l0aENvbXBvbmVudElucHV0QmluZGluZyxcclxuXHR3aXRoSGFzaExvY2F0aW9uLFxyXG5cdHdpdGhWaWV3VHJhbnNpdGlvbnNcclxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcblxyXG5pbXBvcnQgeyBLZXljbG9ha0FuZ3VsYXJNb2R1bGUsIEtleWNsb2FrQmVhcmVySW50ZXJjZXB0b3IsIEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5cclxuaW1wb3J0IHsgbG9hZEFwaUNvbmZpZ3MsIHNldEFwaUNvbmZpZ09uTUZFTW9kZSB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBpJztcclxuaW1wb3J0IHsgQXBwcywgQXJpbFJldXNlU3RyYXRlZ3ksIFBsdWdpbk1lbnVJdGVtIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuaW1wb3J0IHsgZ2V0Tmdab25lLCBsb2FkUGx1Z2lucyB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvcGx1Z2lucyc7XHJcbmltcG9ydCB7IEh0dHBCYWNrZW5kU2VydmljZSB9IGZyb20gJ2FyaWwvaHR0cCc7XHJcbmltcG9ydCB7IGkxOG5Gb2xkZXJOYW1lLCBpMThuTW9kdWxlIH0gZnJvbSAnYXJpbC9pMThuJztcclxuaW1wb3J0IHsga2V5Y2xvYWtBdXRoSW50ZXJjZXB0b3IgfSBmcm9tICdhcmlsL2tleWNsb2FrJztcclxuaW1wb3J0IHsgcHJvdmlkZUhvc3QgfSBmcm9tICdhcmlsL3Byb3ZpZGVyJztcclxuaW1wb3J0IHsgU3R5bGVMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnYXJpbC91dGlsL2xvYWRlcnMnO1xyXG5cclxuaW1wb3J0IHsgYXBwQ29tcG9uZW50TG9hZGVyIH0gZnJvbSAnLi9hcHBDb21wb25lbnRMb2FkZXInO1xyXG5pbXBvcnQgeyBsb2FkU3R5bGVzIH0gZnJvbSAnLi9sb2FkU3R5bGVzJztcclxuaW1wb3J0IHsgTW9uYWNvRWRpdG9yTW9kdWxlLCBOR1hfTU9OQUNPX0VESVRPUl9DT05GSUcgfSBmcm9tICduZ3gtbW9uYWNvLWVkaXRvci12Mic7XHJcblxyXG5leHBvcnQgdmFyIGFwcE5hbWU6IEFwcHM7XHJcbmV4cG9ydCB2YXIgbWVudUl0ZW1zOiBQbHVnaW5NZW51SXRlbVtdID0gW107XHJcbmRlY2xhcmUgY29uc3QgbW9uYWNvOiBhbnk7XHJcblxyXG5leHBvcnQgY29uc3QgYm9vdCA9IChfYXBwTmFtZTogQXBwcywgX3JvdXRlczogUm91dGVzLCBfbWVudUl0ZW1zOiBQbHVnaW5NZW51SXRlbVtdKSA9PiB7XHJcblx0aWYgKGN1c3RvbUVsZW1lbnRzLmdldChgYXBwLSR7X2FwcE5hbWV9YCkpIHJldHVybjtcclxuXHJcblx0YXBwTmFtZSA9IF9hcHBOYW1lO1xyXG5cdG1lbnVJdGVtcyA9IF9tZW51SXRlbXM7XHJcblxyXG5cdGNvbnN0IG1vbmFjb0NvbmZpZyA9IHtcclxuXHRcdGJhc2VVcmw6ICdhc3NldHMnLFxyXG5cdFx0ZGVmYXVsdE9wdGlvbnM6IHsgc2Nyb2xsQmV5b25kTGFzdExpbmU6IGZhbHNlIH0sXHJcblx0XHRvbk1vbmFjb0xvYWQ6ICgpID0+IHtcclxuXHRcdFx0Ly8gSlNPTiBkw7x6ZW5sZXlpY2kgYXlhcmxhcsSxXHJcblx0XHRcdGlmIChtb25hY28gJiYgbW9uYWNvLmxhbmd1YWdlcyAmJiBtb25hY28ubGFuZ3VhZ2VzLmpzb24pIHtcclxuXHRcdFx0XHRtb25hY28ubGFuZ3VhZ2VzLmpzb24uanNvbkRlZmF1bHRzLnNldERpYWdub3N0aWNzT3B0aW9ucyh7XHJcblx0XHRcdFx0XHR2YWxpZGF0ZTogdHJ1ZSxcclxuXHRcdFx0XHRcdGFsbG93Q29tbWVudHM6IGZhbHNlLFxyXG5cdFx0XHRcdFx0c2NoZW1hczogW11cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFxyXG5cdFx0XHQvLyBKYXZhU2NyaXB0L1R5cGVTY3JpcHQgZMO8emVubGV5aWNpIGF5YXJsYXLEsVxyXG5cdFx0XHRpZiAobW9uYWNvICYmIG1vbmFjby5sYW5ndWFnZXMgJiYgbW9uYWNvLmxhbmd1YWdlcy50eXBlc2NyaXB0KSB7XHJcblx0XHRcdFx0bW9uYWNvLmxhbmd1YWdlcy50eXBlc2NyaXB0LmphdmFzY3JpcHREZWZhdWx0cy5zZXRDb21waWxlck9wdGlvbnMoe1xyXG5cdFx0XHRcdFx0dGFyZ2V0OiBtb25hY28ubGFuZ3VhZ2VzLnR5cGVzY3JpcHQuU2NyaXB0VGFyZ2V0LkVTMjAxNixcclxuXHRcdFx0XHRcdGFsbG93Tm9uVHNFeHRlbnNpb25zOiB0cnVlLFxyXG5cdFx0XHRcdFx0bW9kdWxlUmVzb2x1dGlvbjogbW9uYWNvLmxhbmd1YWdlcy50eXBlc2NyaXB0Lk1vZHVsZVJlc29sdXRpb25LaW5kLk5vZGVKcyxcclxuXHRcdFx0XHRcdG1vZHVsZTogbW9uYWNvLmxhbmd1YWdlcy50eXBlc2NyaXB0Lk1vZHVsZUtpbmQuQ29tbW9uSlMsXHJcblx0XHRcdFx0XHRub0VtaXQ6IHRydWUsXHJcblx0XHRcdFx0XHR0eXBlUm9vdHM6IFtcIm5vZGVfbW9kdWxlcy9AdHlwZXNcIl1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHQvLyBUeXBlU2NyaXB0IGTDvHplbmxleWljaSBheWFybGFyxLFcclxuXHRcdFx0XHRtb25hY28ubGFuZ3VhZ2VzLnR5cGVzY3JpcHQudHlwZXNjcmlwdERlZmF1bHRzLnNldENvbXBpbGVyT3B0aW9ucyh7XHJcblx0XHRcdFx0XHR0YXJnZXQ6IG1vbmFjby5sYW5ndWFnZXMudHlwZXNjcmlwdC5TY3JpcHRUYXJnZXQuRVMyMDE2LFxyXG5cdFx0XHRcdFx0YWxsb3dOb25Uc0V4dGVuc2lvbnM6IHRydWUsXHJcblx0XHRcdFx0XHRtb2R1bGVSZXNvbHV0aW9uOiBtb25hY28ubGFuZ3VhZ2VzLnR5cGVzY3JpcHQuTW9kdWxlUmVzb2x1dGlvbktpbmQuTm9kZUpzLFxyXG5cdFx0XHRcdFx0bW9kdWxlOiBtb25hY28ubGFuZ3VhZ2VzLnR5cGVzY3JpcHQuTW9kdWxlS2luZC5Db21tb25KUyxcclxuXHRcdFx0XHRcdG5vRW1pdDogdHJ1ZSxcclxuXHRcdFx0XHRcdHR5cGVSb290czogW1wibm9kZV9tb2R1bGVzL0B0eXBlc1wiXVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHRcdFxyXG5cdFx0XHQvLyBIVE1MLCBYTUwgdmUgZGnEn2VyIG1hcmt1cCBkaWxsZXJpIGnDp2luIGF5YXJsYXJcclxuXHRcdFx0aWYgKG1vbmFjbyAmJiBtb25hY28ubGFuZ3VhZ2VzICYmIG1vbmFjby5sYW5ndWFnZXMuaHRtbCkge1xyXG5cdFx0XHRcdG1vbmFjby5sYW5ndWFnZXMuaHRtbC5odG1sRGVmYXVsdHMuc2V0T3B0aW9ucyh7XHJcblx0XHRcdFx0XHRmb3JtYXQ6IHtcclxuXHRcdFx0XHRcdFx0dGFiU2l6ZTogMixcclxuXHRcdFx0XHRcdFx0aW5zZXJ0U3BhY2VzOiB0cnVlXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0c3VnZ2VzdDoge1xyXG5cdFx0XHRcdFx0XHRodG1sNTogdHJ1ZVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHRcdFxyXG5cdFx0XHQvLyBQeXRob24gacOnaW4gc3ludGF4IGhpZ2hsaWdodGluZyB2ZSDDtnplbCBmb3JtYXRsYW1hbGFyXHJcbmlmIChtb25hY28gJiYgbW9uYWNvLmxhbmd1YWdlcykge1xyXG4gIG1vbmFjby5sYW5ndWFnZXMucmVnaXN0ZXJEb2N1bWVudEZvcm1hdHRpbmdFZGl0UHJvdmlkZXIoJ3B5dGhvbicsIHtcclxuICAgIHByb3ZpZGVEb2N1bWVudEZvcm1hdHRpbmdFZGl0czogZnVuY3Rpb24obW9kZWw6YW55KSB7XHJcbiAgICAgIC8vIEJhc2l0IGJpciBQeXRob24gZm9ybWF0bGFtYXPEsSDDtnJuZcSfaVxyXG4gICAgICAvLyBHZXLDp2VrIHByb2plZGUgZGFoYSBrYXBzYW1sxLEgYmlyIGZvcm1hdHRlciBrdWxsYW7EsWxhYmlsaXJcclxuICAgICAgY29uc3QgdGV4dCA9IG1vZGVsLmdldFZhbHVlKCk7XHJcbiAgICAgIC8vIEJ1cmFkYSBQeXRob24gZm9ybWF0bGFtYXPEsSB5YXDEsWxhYmlsaXJcclxuICAgICAgcmV0dXJuIFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICByYW5nZTogbW9kZWwuZ2V0RnVsbE1vZGVsUmFuZ2UoKSxcclxuICAgICAgICAgIHRleHQ6IHRleHQgLy8gRm9ybWF0bGFubcSxxZ8gbWV0aW5cclxuICAgICAgICB9XHJcbiAgICAgIF07XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgXHJcbiAgLy8gUHl0aG9uIGnDp2luIMO2emVsIGxpbnRpbmcga3VyYWxsYXLEsVxyXG4gIG1vbmFjby5sYW5ndWFnZXMucmVnaXN0ZXJDb21wbGV0aW9uSXRlbVByb3ZpZGVyKCdweXRob24nLCB7XHJcbiAgICBwcm92aWRlQ29tcGxldGlvbkl0ZW1zOiBmdW5jdGlvbihtb2RlbDphbnksIHBvc2l0aW9uOmFueSkge1xyXG4gICAgICBjb25zdCBzdWdnZXN0aW9ucyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsYWJlbDogJ2RlZicsXHJcbiAgICAgICAgICBraW5kOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtS2luZC5LZXl3b3JkLFxyXG4gICAgICAgICAgaW5zZXJ0VGV4dDogJ2RlZiAkezE6ZnVuY3Rpb25fbmFtZX0oJHsyOnBhcmFtZXRlcnN9KTpcXG5cXHQkezM6cGFzc30nLFxyXG4gICAgICAgICAgaW5zZXJ0VGV4dFJ1bGVzOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtSW5zZXJ0VGV4dFJ1bGUuSW5zZXJ0QXNTbmlwcGV0LFxyXG4gICAgICAgICAgZG9jdW1lbnRhdGlvbjogJ0ZvbmtzaXlvbiB0YW7EsW1sYW1hJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6ICdjbGFzcycsXHJcbiAgICAgICAgICBraW5kOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtS2luZC5LZXl3b3JkLFxyXG4gICAgICAgICAgaW5zZXJ0VGV4dDogJ2NsYXNzICR7MTpDbGFzc05hbWV9OlxcblxcdGRlZiBfX2luaXRfXyhzZWxmLCAkezI6cGFyYW1ldGVyc30pOlxcblxcdFxcdCR7MzpwYXNzfScsXHJcbiAgICAgICAgICBpbnNlcnRUZXh0UnVsZXM6IG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1JbnNlcnRUZXh0UnVsZS5JbnNlcnRBc1NuaXBwZXQsXHJcbiAgICAgICAgICBkb2N1bWVudGF0aW9uOiAnU8SxbsSxZiB0YW7EsW1sYW1hJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6ICdpZicsXHJcbiAgICAgICAgICBraW5kOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtS2luZC5LZXl3b3JkLFxyXG4gICAgICAgICAgaW5zZXJ0VGV4dDogJ2lmICR7MTpjb25kaXRpb259OlxcblxcdCR7MjpwYXNzfScsXHJcbiAgICAgICAgICBpbnNlcnRUZXh0UnVsZXM6IG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1JbnNlcnRUZXh0UnVsZS5JbnNlcnRBc1NuaXBwZXQsXHJcbiAgICAgICAgICBkb2N1bWVudGF0aW9uOiAnSWYgYmxvxJ91J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6ICdmb3InLFxyXG4gICAgICAgICAga2luZDogbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUtpbmQuS2V5d29yZCxcclxuICAgICAgICAgIGluc2VydFRleHQ6ICdmb3IgJHsxOml0ZW19IGluICR7MjppdGVyYWJsZX06XFxuXFx0JHszOnBhc3N9JyxcclxuICAgICAgICAgIGluc2VydFRleHRSdWxlczogbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUluc2VydFRleHRSdWxlLkluc2VydEFzU25pcHBldCxcclxuICAgICAgICAgIGRvY3VtZW50YXRpb246ICdGb3IgZMO2bmfDvHPDvCdcclxuICAgICAgICB9XHJcbiAgICAgIF07XHJcbiAgICAgIFxyXG4gICAgICByZXR1cm4geyBzdWdnZXN0aW9uczogc3VnZ2VzdGlvbnMgfTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuLy8gTHVhIGnDp2luIMO2emVsIGF5YXJsYXJcclxuaWYgKG1vbmFjbyAmJiBtb25hY28ubGFuZ3VhZ2VzKSB7XHJcbiAgbW9uYWNvLmxhbmd1YWdlcy5yZWdpc3RlckRvY3VtZW50Rm9ybWF0dGluZ0VkaXRQcm92aWRlcignbHVhJywge1xyXG4gICAgcHJvdmlkZURvY3VtZW50Rm9ybWF0dGluZ0VkaXRzOiBmdW5jdGlvbihtb2RlbDphbnkpIHtcclxuICAgICAgY29uc3QgdGV4dCA9IG1vZGVsLmdldFZhbHVlKCk7XHJcbiAgICAgIC8vIEx1YSBmb3JtYXRsYW1hc8SxXHJcbiAgICAgIHJldHVybiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcmFuZ2U6IG1vZGVsLmdldEZ1bGxNb2RlbFJhbmdlKCksXHJcbiAgICAgICAgICB0ZXh0OiB0ZXh0IC8vIEZvcm1hdGxhbm3EscWfIG1ldGluXHJcbiAgICAgICAgfVxyXG4gICAgICBdO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIFxyXG4gIC8vIEx1YSBpw6dpbiDDtnplbCDDtm5lcmlsZXJcclxuICBtb25hY28ubGFuZ3VhZ2VzLnJlZ2lzdGVyQ29tcGxldGlvbkl0ZW1Qcm92aWRlcignbHVhJywge1xyXG4gICAgcHJvdmlkZUNvbXBsZXRpb25JdGVtczogZnVuY3Rpb24obW9kZWw6YW55LCBwb3NpdGlvbjphbnkpIHtcclxuICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6ICdmdW5jdGlvbicsXHJcbiAgICAgICAgICBraW5kOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtS2luZC5LZXl3b3JkLFxyXG4gICAgICAgICAgaW5zZXJ0VGV4dDogJ2Z1bmN0aW9uICR7MTpuYW1lfSgkezI6cGFyYW1zfSlcXG5cXHQkezM6LS0gYm9keX1cXG5lbmQnLFxyXG4gICAgICAgICAgaW5zZXJ0VGV4dFJ1bGVzOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtSW5zZXJ0VGV4dFJ1bGUuSW5zZXJ0QXNTbmlwcGV0LFxyXG4gICAgICAgICAgZG9jdW1lbnRhdGlvbjogJ0ZvbmtzaXlvbiB0YW7EsW1sYW1hJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6ICdpZicsXHJcbiAgICAgICAgICBraW5kOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtS2luZC5LZXl3b3JkLFxyXG4gICAgICAgICAgaW5zZXJ0VGV4dDogJ2lmICR7MTpjb25kaXRpb259IHRoZW5cXG5cXHQkezI6LS0gYm9keX1cXG5lbmQnLFxyXG4gICAgICAgICAgaW5zZXJ0VGV4dFJ1bGVzOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtSW5zZXJ0VGV4dFJ1bGUuSW5zZXJ0QXNTbmlwcGV0LFxyXG4gICAgICAgICAgZG9jdW1lbnRhdGlvbjogJ0lmIGJsb8SfdSdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiAnZm9yJyxcclxuICAgICAgICAgIGtpbmQ6IG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1LaW5kLktleXdvcmQsXHJcbiAgICAgICAgICBpbnNlcnRUZXh0OiAnZm9yICR7MTppfT0kezI6MX0sJHszOjEwfSBkb1xcblxcdCR7NDotLSBib2R5fVxcbmVuZCcsXHJcbiAgICAgICAgICBpbnNlcnRUZXh0UnVsZXM6IG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1JbnNlcnRUZXh0UnVsZS5JbnNlcnRBc1NuaXBwZXQsXHJcbiAgICAgICAgICBkb2N1bWVudGF0aW9uOiAnRm9yIGTDtm5nw7xzw7wnXHJcbiAgICAgICAgfVxyXG4gICAgICBdO1xyXG4gICAgICBcclxuICAgICAgcmV0dXJuIHsgc3VnZ2VzdGlvbnM6IHN1Z2dlc3Rpb25zIH07XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbi8vIEphdmEgacOnaW4gw7Z6ZWwgYXlhcmxhclxyXG5pZiAobW9uYWNvICYmIG1vbmFjby5sYW5ndWFnZXMpIHtcclxuICBtb25hY28ubGFuZ3VhZ2VzLnJlZ2lzdGVyRG9jdW1lbnRGb3JtYXR0aW5nRWRpdFByb3ZpZGVyKCdqYXZhJywge1xyXG4gICAgcHJvdmlkZURvY3VtZW50Rm9ybWF0dGluZ0VkaXRzOiBmdW5jdGlvbihtb2RlbDphbnkpIHtcclxuICAgICAgY29uc3QgdGV4dCA9IG1vZGVsLmdldFZhbHVlKCk7XHJcbiAgICAgIC8vIEphdmEgZm9ybWF0bGFtYXPEsVxyXG4gICAgICByZXR1cm4gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHJhbmdlOiBtb2RlbC5nZXRGdWxsTW9kZWxSYW5nZSgpLFxyXG4gICAgICAgICAgdGV4dDogdGV4dCAvLyBGb3JtYXRsYW5txLHFnyBtZXRpblxyXG4gICAgICAgIH1cclxuICAgICAgXTtcclxuICAgIH1cclxuICB9KTtcclxuICBcclxuICAvLyBKYXZhIGnDp2luIMO2emVsIMO2bmVyaWxlclxyXG4gIG1vbmFjby5sYW5ndWFnZXMucmVnaXN0ZXJDb21wbGV0aW9uSXRlbVByb3ZpZGVyKCdqYXZhJywge1xyXG4gICAgcHJvdmlkZUNvbXBsZXRpb25JdGVtczogZnVuY3Rpb24obW9kZWw6YW55LCBwb3NpdGlvbjphbnkpIHtcclxuICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6ICdjbGFzcycsXHJcbiAgICAgICAgICBraW5kOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtS2luZC5LZXl3b3JkLFxyXG4gICAgICAgICAgaW5zZXJ0VGV4dDogJ3B1YmxpYyBjbGFzcyAkezE6Q2xhc3NOYW1lfSB7XFxuXFx0JHsyfVxcbn0nLFxyXG4gICAgICAgICAgaW5zZXJ0VGV4dFJ1bGVzOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtSW5zZXJ0VGV4dFJ1bGUuSW5zZXJ0QXNTbmlwcGV0LFxyXG4gICAgICAgICAgZG9jdW1lbnRhdGlvbjogJ1PEsW7EsWYgdGFuxLFtbGFtYSdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiAnbWFpbicsXHJcbiAgICAgICAgICBraW5kOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtS2luZC5TbmlwcGV0LFxyXG4gICAgICAgICAgaW5zZXJ0VGV4dDogJ3B1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHtcXG5cXHQkezF9XFxufScsXHJcbiAgICAgICAgICBpbnNlcnRUZXh0UnVsZXM6IG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1JbnNlcnRUZXh0UnVsZS5JbnNlcnRBc1NuaXBwZXQsXHJcbiAgICAgICAgICBkb2N1bWVudGF0aW9uOiAnTWFpbiBtZXRvZHUnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsYWJlbDogJ3NvdXQnLFxyXG4gICAgICAgICAga2luZDogbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUtpbmQuU25pcHBldCxcclxuICAgICAgICAgIGluc2VydFRleHQ6ICdTeXN0ZW0ub3V0LnByaW50bG4oJHsxfSk7JyxcclxuICAgICAgICAgIGluc2VydFRleHRSdWxlczogbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUluc2VydFRleHRSdWxlLkluc2VydEFzU25pcHBldCxcclxuICAgICAgICAgIGRvY3VtZW50YXRpb246ICdLb25zb2xhIHlhemTEsXJtYSdcclxuICAgICAgICB9XHJcbiAgICAgIF07XHJcbiAgICAgIFxyXG4gICAgICByZXR1cm4geyBzdWdnZXN0aW9uczogc3VnZ2VzdGlvbnMgfTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuLy8gSFRNTCBpw6dpbiDDtnplbCBheWFybGFyXHJcbmlmIChtb25hY28gJiYgbW9uYWNvLmxhbmd1YWdlcykge1xyXG4gIG1vbmFjby5sYW5ndWFnZXMucmVnaXN0ZXJDb21wbGV0aW9uSXRlbVByb3ZpZGVyKCdodG1sJywge1xyXG4gICAgcHJvdmlkZUNvbXBsZXRpb25JdGVtczogZnVuY3Rpb24obW9kZWw6YW55LCBwb3NpdGlvbjphbnkpIHtcclxuICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6ICdodG1sNScsXHJcbiAgICAgICAgICBraW5kOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtS2luZC5TbmlwcGV0LFxyXG4gICAgICAgICAgaW5zZXJ0VGV4dDogJzwhRE9DVFlQRSBodG1sPlxcbjxodG1sIGxhbmc9XCJlblwiPlxcbjxoZWFkPlxcblxcdDxtZXRhIGNoYXJzZXQ9XCJVVEYtOFwiPlxcblxcdDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wXCI+XFxuXFx0PHRpdGxlPiR7MTpEb2N1bWVudH08L3RpdGxlPlxcbjwvaGVhZD5cXG48Ym9keT5cXG5cXHQkezJ9XFxuPC9ib2R5PlxcbjwvaHRtbD4nLFxyXG4gICAgICAgICAgaW5zZXJ0VGV4dFJ1bGVzOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtSW5zZXJ0VGV4dFJ1bGUuSW5zZXJ0QXNTbmlwcGV0LFxyXG4gICAgICAgICAgZG9jdW1lbnRhdGlvbjogJ0hUTUw1IHRhc2xhxJ/EsSdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiAnZGl2JyxcclxuICAgICAgICAgIGtpbmQ6IG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1LaW5kLlNuaXBwZXQsXHJcbiAgICAgICAgICBpbnNlcnRUZXh0OiAnPGRpdiBjbGFzcz1cIiR7MTpjbGFzc05hbWV9XCI+XFxuXFx0JHsyfVxcbjwvZGl2PicsXHJcbiAgICAgICAgICBpbnNlcnRUZXh0UnVsZXM6IG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1JbnNlcnRUZXh0UnVsZS5JbnNlcnRBc1NuaXBwZXQsXHJcbiAgICAgICAgICBkb2N1bWVudGF0aW9uOiAnRGl2IGVsZW1lbnRpJ1xyXG4gICAgICAgIH1cclxuICAgICAgXTtcclxuICAgICAgXHJcbiAgICAgIHJldHVybiB7IHN1Z2dlc3Rpb25zOiBzdWdnZXN0aW9ucyB9O1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG4vLyBYTUwgacOnaW4gw7Z6ZWwgYXlhcmxhclxyXG5pZiAobW9uYWNvICYmIG1vbmFjby5sYW5ndWFnZXMpIHtcclxuICBtb25hY28ubGFuZ3VhZ2VzLnJlZ2lzdGVyQ29tcGxldGlvbkl0ZW1Qcm92aWRlcigneG1sJywge1xyXG4gICAgcHJvdmlkZUNvbXBsZXRpb25JdGVtczogZnVuY3Rpb24obW9kZWw6YW55LCBwb3NpdGlvbjphbnkpIHtcclxuICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6ICd4bWwnLFxyXG4gICAgICAgICAga2luZDogbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUtpbmQuU25pcHBldCxcclxuICAgICAgICAgIGluc2VydFRleHQ6ICc8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz5cXG48JHsxOnJvb3R9PlxcblxcdCR7Mn1cXG48LyR7MTpyb290fT4nLFxyXG4gICAgICAgICAgaW5zZXJ0VGV4dFJ1bGVzOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtSW5zZXJ0VGV4dFJ1bGUuSW5zZXJ0QXNTbmlwcGV0LFxyXG4gICAgICAgICAgZG9jdW1lbnRhdGlvbjogJ1hNTCB0YXNsYcSfxLEnXHJcbiAgICAgICAgfVxyXG4gICAgICBdO1xyXG4gICAgICBcclxuICAgICAgcmV0dXJuIHsgc3VnZ2VzdGlvbnM6IHN1Z2dlc3Rpb25zIH07XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbi8vIEpTT04gacOnaW4gw7Z6ZWwgYXlhcmxhciB2ZSDFn2VtYSBkb8SfcnVsYW1hXHJcbmlmIChtb25hY28gJiYgbW9uYWNvLmxhbmd1YWdlcyAmJiBtb25hY28ubGFuZ3VhZ2VzLmpzb24pIHtcclxuICBtb25hY28ubGFuZ3VhZ2VzLmpzb24uanNvbkRlZmF1bHRzLnNldERpYWdub3N0aWNzT3B0aW9ucyh7XHJcbiAgICB2YWxpZGF0ZTogdHJ1ZSxcclxuICAgIGFsbG93Q29tbWVudHM6IGZhbHNlLFxyXG4gICAgc2NoZW1hczogW1xyXG4gICAgICB7XHJcbiAgICAgICAgdXJpOiBcImh0dHA6Ly9teXNlcnZlci9zY2hlbWEvcGFja2FnZS5zY2hlbWEuanNvblwiLFxyXG4gICAgICAgIGZpbGVNYXRjaDogW1wicGFja2FnZS5qc29uXCJdLFxyXG4gICAgICAgIHNjaGVtYToge1xyXG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcclxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgICAgICAgbmFtZTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXHJcbiAgICAgICAgICAgIHZlcnNpb246IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxyXG4gICAgICAgICAgICBkZXBlbmRlbmNpZXM6IHtcclxuICAgICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIF1cclxuICB9KTtcclxufVxyXG5cdFx0XHRcclxuXHRcdFx0Ly8gRGFoYSBmYXpsYSBkaWwgZWtsZW1lIHZlIMO2emVsbGXFn3Rpcm1lIGnFn2xlbWxlcmkgYnVyYXlhIGVrbGVuZWJpbGlyXHJcblx0XHR9XHJcblx0fTtcclxuXHJcblx0Y29uc3QgYXBwQm9vdENvbmZpZzogQXBwbGljYXRpb25Db25maWcgPSB7XHJcblx0XHRwcm92aWRlcnM6IFtcclxuXHRcdFx0cHJvdmlkZUFuaW1hdGlvbnMoKSxcclxuXHRcdFx0cHJvdmlkZUhvc3QoYXBwTmFtZSksXHJcblx0XHRcdEtleWNsb2FrQmVhcmVySW50ZXJjZXB0b3IsXHJcblx0XHRcdHByb3ZpZGVIdHRwQ2xpZW50KHdpdGhJbnRlcmNlcHRvcnMoW2tleWNsb2FrQXV0aEludGVyY2VwdG9yXSkpLFxyXG5cdFx0XHRwcm92aWRlUm91dGVyKF9yb3V0ZXMsIHdpdGhDb21wb25lbnRJbnB1dEJpbmRpbmcoKSwgd2l0aEhhc2hMb2NhdGlvbigpLCB3aXRoVmlld1RyYW5zaXRpb25zKCkpLFxyXG5cdFx0XHR7IHByb3ZpZGU6IFJvdXRlUmV1c2VTdHJhdGVneSwgdXNlQ2xhc3M6IEFyaWxSZXVzZVN0cmF0ZWd5IH0sXHJcblx0XHRcdGltcG9ydFByb3ZpZGVyc0Zyb20oaTE4bk1vZHVsZSwgS2V5Y2xvYWtBbmd1bGFyTW9kdWxlKSxcclxuXHRcdFx0Z2V0Tmdab25lKCksXHJcblx0XHRcdE1lc3NhZ2VTZXJ2aWNlLFxyXG5cdFx0XHRDb25maXJtYXRpb25TZXJ2aWNlLFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0cHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxyXG5cdFx0XHRcdHVzZUZhY3Rvcnk6ICg8YW55Pmdsb2JhbFRoaXMpLmlzSG9zdE1vZGUgPyBzZXRBcGlDb25maWdPbk1GRU1vZGUgOiBsb2FkQXBpQ29uZmlncyxcclxuXHRcdFx0XHRtdWx0aTogdHJ1ZSxcclxuXHRcdFx0XHRkZXBzOiBbSHR0cENsaWVudCwgS2V5Y2xvYWtTZXJ2aWNlLCBpMThuRm9sZGVyTmFtZV1cclxuXHRcdFx0fSxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcclxuXHRcdFx0XHR1c2VGYWN0b3J5OiBsb2FkUGx1Z2lucyxcclxuXHRcdFx0XHRtdWx0aTogdHJ1ZSxcclxuXHRcdFx0XHRkZXBzOiBbSHR0cEJhY2tlbmRTZXJ2aWNlXVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0cHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxyXG5cdFx0XHRcdHVzZUZhY3Rvcnk6IGxvYWRTdHlsZXMsXHJcblx0XHRcdFx0bXVsdGk6IHRydWUsXHJcblx0XHRcdFx0ZGVwczogW1N0eWxlTG9hZGVyU2VydmljZSwgaTE4bkZvbGRlck5hbWVdXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHRwcm92aWRlOiBpMThuRm9sZGVyTmFtZSxcclxuXHRcdFx0XHR1c2VWYWx1ZTogX2FwcE5hbWVcclxuXHRcdFx0fSxcclxuXHRcdFx0aW1wb3J0UHJvdmlkZXJzRnJvbShNb25hY29FZGl0b3JNb2R1bGUuZm9yUm9vdCgpKSxcclxuICAgIFx0eyBwcm92aWRlOiBOR1hfTU9OQUNPX0VESVRPUl9DT05GSUcsIHVzZVZhbHVlOiBtb25hY29Db25maWcgfVxyXG5cdFx0XVxyXG5cdH07XHJcblxyXG5cdGNyZWF0ZUFwcGxpY2F0aW9uKGFwcEJvb3RDb25maWcpLnRoZW4oKGFwcFJlZikgPT4ge1xyXG5cdFx0YXBwQ29tcG9uZW50TG9hZGVyKCkudGhlbigoQXBwQ29tcG9uZW50KSA9PiB7XHJcblx0XHRcdGNvbnN0IGFwcCA9IGNyZWF0ZUN1c3RvbUVsZW1lbnQoQXBwQ29tcG9uZW50LCB7IGluamVjdG9yOiBhcHBSZWYuaW5qZWN0b3IgfSk7XHJcblx0XHRcdGN1c3RvbUVsZW1lbnRzLmRlZmluZShgYXBwLSR7YXBwTmFtZX1gLCBhcHApO1xyXG5cdFx0fSk7XHJcblx0fSk7XHJcbn07XHJcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpbC11aS1lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpL2VkaXRvci9hcmlsLXVpLWVkaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './src/aril-editor.component';
|
|
2
|
+
export * from './src/types';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpL2VkaXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvYXJpbC1lZGl0b3IuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvdHlwZXMnO1xyXG4iXX0=
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/* eslint-disable @angular-eslint/component-selector */
|
|
2
|
+
import { Component, Input, ViewEncapsulation } from '@angular/core';
|
|
3
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import { MonacoEditorModule } from 'ngx-monaco-editor-v2';
|
|
5
|
+
import { CommonModule } from '@angular/common';
|
|
6
|
+
import { BaseInputComponent, ValueAccessorDirective, InputErrorMessagePipe } from 'aril/ui/lib';
|
|
7
|
+
import { TooltipModule } from 'primeng/tooltip';
|
|
8
|
+
import { MonacoLanguageType, MonacoThemeType } from './types';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "aril/ui/lib";
|
|
11
|
+
import * as i2 from "@angular/forms";
|
|
12
|
+
import * as i3 from "ngx-monaco-editor-v2";
|
|
13
|
+
import * as i4 from "primeng/tooltip";
|
|
14
|
+
export class ArilEditorComponent extends BaseInputComponent {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this.language = MonacoLanguageType.JSON;
|
|
18
|
+
this.theme = MonacoThemeType.VS_DARK;
|
|
19
|
+
this.showLanguageSelector = false;
|
|
20
|
+
this.editorOptions = {};
|
|
21
|
+
}
|
|
22
|
+
get languageLabel() {
|
|
23
|
+
return this.language.toUpperCase();
|
|
24
|
+
}
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
this.initializeEditor();
|
|
27
|
+
}
|
|
28
|
+
ngOnDestroy() {
|
|
29
|
+
if (this.editorInstance) {
|
|
30
|
+
this.editorInstance.dispose();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
initializeEditor() {
|
|
34
|
+
this.editorOptions = {
|
|
35
|
+
theme: this.theme,
|
|
36
|
+
language: this.language,
|
|
37
|
+
automaticLayout: false,
|
|
38
|
+
minimap: {
|
|
39
|
+
enabled: true
|
|
40
|
+
},
|
|
41
|
+
scrollBeyondLastLine: false,
|
|
42
|
+
lineNumbers: 'on',
|
|
43
|
+
tabSize: 2,
|
|
44
|
+
renderLineHighlight: 'all',
|
|
45
|
+
wordWrap: 'on',
|
|
46
|
+
formatOnType: true,
|
|
47
|
+
formatOnPaste: true
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
onEditorInit(editor) {
|
|
51
|
+
this.editorInstance = editor;
|
|
52
|
+
if (editor) {
|
|
53
|
+
// Editör temasını ayarla
|
|
54
|
+
monaco.editor.setTheme(this.theme);
|
|
55
|
+
// Dile göre doğrulama ayarları
|
|
56
|
+
this.setupLanguageValidation();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
setupLanguageValidation() {
|
|
60
|
+
if (!this.editorInstance)
|
|
61
|
+
return;
|
|
62
|
+
try {
|
|
63
|
+
// Her dil için uygun validasyon ayarı
|
|
64
|
+
switch (this.language) {
|
|
65
|
+
case MonacoLanguageType.JAVASCRIPT:
|
|
66
|
+
case MonacoLanguageType.TYPESCRIPT:
|
|
67
|
+
this.setupJSValidation();
|
|
68
|
+
break;
|
|
69
|
+
case MonacoLanguageType.JSON:
|
|
70
|
+
this.setupJSONValidation();
|
|
71
|
+
break;
|
|
72
|
+
case MonacoLanguageType.HTML:
|
|
73
|
+
case MonacoLanguageType.XML:
|
|
74
|
+
this.setupHTMLValidation();
|
|
75
|
+
break;
|
|
76
|
+
// Python, Lua ve Java için özel validasyon gerekli
|
|
77
|
+
// Bu diller için Monaco'nun built-in validasyonu yok
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
console.error('Language validation setup error:', e);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
setupJSValidation() {
|
|
85
|
+
if (!this.editorInstance)
|
|
86
|
+
return;
|
|
87
|
+
try {
|
|
88
|
+
if (monaco && monaco.languages && monaco.languages.typescript) {
|
|
89
|
+
const compilerOptions = {
|
|
90
|
+
target: monaco.languages.typescript.ScriptTarget.ES2020,
|
|
91
|
+
allowNonTsExtensions: true,
|
|
92
|
+
module: monaco.languages.typescript.ModuleKind.CommonJS,
|
|
93
|
+
noSemanticValidation: false,
|
|
94
|
+
noSyntaxValidation: false
|
|
95
|
+
};
|
|
96
|
+
if (this.language === MonacoLanguageType.JAVASCRIPT) {
|
|
97
|
+
monaco.languages.typescript.javascriptDefaults.setCompilerOptions(compilerOptions);
|
|
98
|
+
monaco.languages.typescript.javascriptDefaults.setDiagnosticsOptions({
|
|
99
|
+
noSemanticValidation: false,
|
|
100
|
+
noSyntaxValidation: false
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
monaco.languages.typescript.typescriptDefaults.setCompilerOptions(compilerOptions);
|
|
105
|
+
monaco.languages.typescript.typescriptDefaults.setDiagnosticsOptions({
|
|
106
|
+
noSemanticValidation: false,
|
|
107
|
+
noSyntaxValidation: false
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (e) {
|
|
113
|
+
console.error('JS/TS validation setup error:', e);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
setupJSONValidation() {
|
|
117
|
+
if (!this.editorInstance)
|
|
118
|
+
return;
|
|
119
|
+
try {
|
|
120
|
+
if (monaco.languages && monaco.languages.json) {
|
|
121
|
+
monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
|
|
122
|
+
validate: true,
|
|
123
|
+
allowComments: true,
|
|
124
|
+
schemas: []
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
catch (e) {
|
|
129
|
+
console.error('JSON validation setup error:', e);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
setupHTMLValidation() {
|
|
133
|
+
if (!this.editorInstance)
|
|
134
|
+
return;
|
|
135
|
+
try {
|
|
136
|
+
if (monaco.languages && monaco.languages.html) {
|
|
137
|
+
monaco.languages.html.htmlDefaults.setDiagnosticsOptions({
|
|
138
|
+
validate: true
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch (e) {
|
|
143
|
+
console.error('HTML validation setup error:', e);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ArilEditorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
147
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ArilEditorComponent, isStandalone: true, selector: "aril-editor[ngModel], aril-editor[formControl], aril-editor[formControlName]", inputs: { language: "language", theme: "theme", showLanguageSelector: "showLanguageSelector" }, usesInheritance: true, hostDirectives: [{ directive: i1.ValueAccessorDirective }], ngImport: i0, template: "<div \r\n [pTooltip]=\"ngControl.invalid ? (ngControl.control.value | inputErrorMessage: ngControl) : ''\"\r\n [tooltipOptions]=\"tooltipOptions\"\r\n [class.p-invalid]=\"ngControl.invalid && (ngControl.dirty || ngControl.touched)\"\r\n class=\"aril-editor-container\">\r\n <ngx-monaco-editor\r\n [options]=\"editorOptions\"\r\n [formControl]=\"ngControl.control\"\r\n (onInit)=\"onEditorInit($event)\"\r\n (ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n >\r\n </ngx-monaco-editor>\r\n</div>", styles: [".aril-editor-container{width:100%;padding:0}.p-invalid{border:1px solid var(--red-500);border-bottom:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MonacoEditorModule }, { kind: "component", type: i3.EditorComponent, selector: "ngx-monaco-editor", inputs: ["options", "model"] }, { kind: "pipe", type: InputErrorMessagePipe, name: "inputErrorMessage" }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
148
|
+
}
|
|
149
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ArilEditorComponent, decorators: [{
|
|
150
|
+
type: Component,
|
|
151
|
+
args: [{ selector: 'aril-editor[ngModel], aril-editor[formControl], aril-editor[formControlName]', standalone: true, imports: [CommonModule, FormsModule, ReactiveFormsModule, MonacoEditorModule, InputErrorMessagePipe, TooltipModule], encapsulation: ViewEncapsulation.None, hostDirectives: [ValueAccessorDirective], template: "<div \r\n [pTooltip]=\"ngControl.invalid ? (ngControl.control.value | inputErrorMessage: ngControl) : ''\"\r\n [tooltipOptions]=\"tooltipOptions\"\r\n [class.p-invalid]=\"ngControl.invalid && (ngControl.dirty || ngControl.touched)\"\r\n class=\"aril-editor-container\">\r\n <ngx-monaco-editor\r\n [options]=\"editorOptions\"\r\n [formControl]=\"ngControl.control\"\r\n (onInit)=\"onEditorInit($event)\"\r\n (ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n >\r\n </ngx-monaco-editor>\r\n</div>", styles: [".aril-editor-container{width:100%;padding:0}.p-invalid{border:1px solid var(--red-500);border-bottom:none}\n"] }]
|
|
152
|
+
}], propDecorators: { language: [{
|
|
153
|
+
type: Input
|
|
154
|
+
}], theme: [{
|
|
155
|
+
type: Input
|
|
156
|
+
}], showLanguageSelector: [{
|
|
157
|
+
type: Input
|
|
158
|
+
}] } });
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpbC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS9lZGl0b3Ivc3JjL2FyaWwtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWkvZWRpdG9yL3NyYy9hcmlsLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsaUJBQWlCLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUM7Ozs7OztBQWE5RCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsa0JBQWtCO0lBVDNEOztRQVVVLGFBQVEsR0FBdUIsa0JBQWtCLENBQUMsSUFBSSxDQUFDO1FBQ3ZELFVBQUssR0FBb0IsZUFBZSxDQUFDLE9BQU8sQ0FBQztRQUNqRCx5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFFdEMsa0JBQWEsR0FBUSxFQUFFLENBQUM7S0FvSXhCO0lBaklBLElBQUksYUFBYTtRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVE7UUFDUCxJQUFJLENB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QUksTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMvQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUM7b0JBQ3hELFFBQVEsRUFBRSxJQUFJO2lCQUNkLENBQUMsQ0FBQztZQUNKLENBQUM7UUFDRixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsOEJBQThCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEQsQ0FBQztJQUNGLENBQUM7OEdBeElXLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDJUQ3BCaEMsNGdCQVlNLHFLREVLLFlBQVksOEJBQUUsV0FBVyxzSUFBRSxtQkFBbUIsaU5BQUUsa0JBQWtCLHdJQUFFLHFCQUFxQix5REFBRSxhQUFhOzsyRkFNdEcsbUJBQW1CO2tCQVQvQixTQUFTOytCQUNDLDhFQUE4RSxjQUM1RSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLGFBQWEsQ0FBQyxpQkFHcEcsaUJBQWlCLENBQUMsSUFBSSxrQkFDckIsQ0FBQyxzQkFBc0IsQ0FBQzs4QkFHL0IsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1vbmFjb0VkaXRvck1vZHVsZSB9IGZyb20gJ25neC1tb25hY28tZWRpdG9yLXYyJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQmFzZUlucHV0Q29tcG9uZW50LCBWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlLCBJbnB1dEVycm9yTWVzc2FnZVBpcGUgfSBmcm9tICdhcmlsL3VpL2xpYic7XHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBNb25hY29MYW5ndWFnZVR5cGUsIE1vbmFjb1RoZW1lVHlwZSB9IGZyb20gJy4vdHlwZXMnO1xyXG5cclxuZGVjbGFyZSBjb25zdCBtb25hY286IGFueTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXJpbC1lZGl0b3JbbmdNb2RlbF0sIGFyaWwtZWRpdG9yW2Zvcm1Db250cm9sXSwgYXJpbC1lZGl0b3JbZm9ybUNvbnRyb2xOYW1lXScsXHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTW9uYWNvRWRpdG9yTW9kdWxlLCBJbnB1dEVycm9yTWVzc2FnZVBpcGUsIFRvb2x0aXBNb2R1bGVdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9hcmlsLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vYXJpbC1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcclxuXHRlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG5cdGhvc3REaXJlY3RpdmVzOiBbVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFyaWxFZGl0b3JDb21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblx0QElucHV0KCkgbGFuZ3VhZ2U6IE1vbmFjb0xhbmd1YWdlVHlwZSA9IE1vbmFjb0xhbmd1YWdlVHlwZS5KU09OO1xyXG5cdEBJbnB1dCgpIHRoZW1lOiBNb25hY29UaGVtZVR5cGUgPSBNb25hY29UaGVtZVR5cGUuVlNfREFSSztcclxuXHRASW5wdXQoKSBzaG93TGFuZ3VhZ2VTZWxlY3RvciA9IGZhbHNlO1xyXG5cclxuXHRlZGl0b3JPcHRpb25zOiBhbnkgPSB7fTtcclxuXHRlZGl0b3JJbnN0YW5jZTogYW55O1xyXG5cclxuXHRnZXQgbGFuZ3VhZ2VMYWJlbCgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMubGFuZ3VhZ2UudG9VcHBlckNhc2UoKTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5pbml0aWFsaXplRWRpdG9yKCk7XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmVkaXRvckluc3RhbmNlKSB7XHJcblx0XHRcdHRoaXMuZWRpdG9ySW5zdGFuY2UuZGlzcG9zZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBpbml0aWFsaXplRWRpdG9yKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5lZGl0b3JPcHRpb25zID0ge1xyXG5cdFx0XHR0aGVtZTogdGhpcy50aGVtZSxcclxuXHRcdFx0bGFuZ3VhZ2U6IHRoaXMubGFuZ3VhZ2UsXHJcblx0XHRcdGF1dG9tYXRpY0xheW91dDogZmFsc2UsXHJcblx0XHRcdG1pbmltYXA6IHtcclxuXHRcdFx0XHRlbmFibGVkOiB0cnVlXHJcblx0XHRcdH0sXHJcblx0XHRcdHNjcm9sbEJleW9uZExhc3RMaW5lOiBmYWxzZSxcclxuXHRcdFx0bGluZU51bWJlcnM6ICdvbicsXHJcblx0XHRcdHRhYlNpemU6IDIsXHJcblx0XHRcdHJlbmRlckxpbmVIaWdobGlnaHQ6ICdhbGwnLFxyXG5cdFx0XHR3b3JkV3JhcDogJ29uJyxcclxuXHRcdFx0Zm9ybWF0T25UeXBlOiB0cnVlLFxyXG5cdFx0XHRmb3JtYXRPblBhc3RlOiB0cnVlXHJcblx0XHR9O1xyXG5cdH1cclxuXHJcblx0b25FZGl0b3JJbml0KGVkaXRvcjogYW55KTogdm9pZCB7XHJcblx0XHR0aGlzLmVkaXRvckluc3RhbmNlID0gZWRpdG9yO1xyXG5cclxuXHRcdGlmIChlZGl0b3IpIHtcclxuXHRcdFx0Ly8gRWRpdMO2ciB0ZW1hc8SxbsSxIGF5YXJsYVxyXG5cdFx0XHRtb25hY28uZWRpdG9yLnNldFRoZW1lKHRoaXMudGhlbWUpO1xyXG5cdFx0XHQvLyBEaWxlIGfDtnJlIGRvxJ9ydWxhbWEgYXlhcmxhcsSxXHJcblx0XHRcdHRoaXMuc2V0dXBMYW5ndWFnZVZhbGlkYXRpb24oKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc2V0dXBMYW5ndWFnZVZhbGlkYXRpb24oKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuZWRpdG9ySW5zdGFuY2UpIHJldHVybjtcclxuXHJcblx0XHR0cnkge1xyXG5cdFx0XHQvLyBIZXIgZGlsIGnDp2luIHV5Z3VuIHZhbGlkYXN5b24gYXlhcsSxXHJcblx0XHRcdHN3aXRjaCAodGhpcy5sYW5ndWFnZSkge1xyXG5cdFx0XHRcdGNhc2UgTW9uYWNvTGFuZ3VhZ2VUeXBlLkpBVkFTQ1JJUFQ6XHJcblx0XHRcdFx0Y2FzZSBNb25hY29MYW5ndWFnZVR5cGUuVFlQRVNDUklQVDpcclxuXHRcdFx0XHRcdHRoaXMuc2V0dXBKU1ZhbGlkYXRpb24oKTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgTW9uYWNvTGFuZ3VhZ2VUeXBlLkpTT046XHJcblx0XHRcdFx0XHR0aGlzLnNldHVwSlNPTlZhbGlkYXRpb24oKTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgTW9uYWNvTGFuZ3VhZ2VUeXBlLkhUTUw6XHJcblx0XHRcdFx0Y2FzZSBNb25hY29MYW5ndWFnZVR5cGUuWE1MOlxyXG5cdFx0XHRcdFx0dGhpcy5zZXR1cEhUTUxWYWxpZGF0aW9uKCk7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHQvLyBQeXRob24sIEx1YSB2ZSBKYXZhIGnDp2luIMO2emVsIHZhbGlkYXN5b24gZ2VyZWtsaVxyXG5cdFx0XHRcdC8vIEJ1IGRpbGxlciBpw6dpbiBNb25hY28nbnVuIGJ1aWx0LWluIHZhbGlkYXN5b251IHlva1xyXG5cdFx0XHR9XHJcblx0XHR9IGNhdGNoIChlKSB7XHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ0xhbmd1YWdlIHZhbGlkYXRpb24gc2V0dXAgZXJyb3I6JywgZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHNldHVwSlNWYWxpZGF0aW9uKCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLmVkaXRvckluc3RhbmNlKSByZXR1cm47XHJcblxyXG5cdFx0dHJ5IHtcclxuXHRcdFx0aWYgKG1vbmFjbyAmJiBtb25hY28ubGFuZ3VhZ2VzICYmIG1vbmFjby5sYW5ndWFnZXMudHlwZXNjcmlwdCkge1xyXG5cdFx0XHRcdGNvbnN0IGNvbXBpbGVyT3B0aW9ucyA9IHtcclxuXHRcdFx0XHRcdHRhcmdldDogbW9uYWNvLmxhbmd1YWdlcy50eXBlc2NyaXB0LlNjcmlwdFRhcmdldC5FUzIwMjAsXHJcblx0XHRcdFx0XHRhbGxvd05vblRzRXh0ZW5zaW9uczogdHJ1ZSxcclxuXHRcdFx0XHRcdG1vZHVsZTogbW9uYWNvLmxhbmd1YWdlcy50eXBlc2NyaXB0Lk1vZHVsZUtpbmQuQ29tbW9uSlMsXHJcblx0XHRcdFx0XHRub1NlbWFudGljVmFsaWRhdGlvbjogZmFsc2UsXHJcblx0XHRcdFx0XHRub1N5bnRheFZhbGlkYXRpb246IGZhbHNlXHJcblx0XHRcdFx0fTtcclxuXHJcblx0XHRcdFx0aWYgKHRoaXMubGFuZ3VhZ2UgPT09IE1vbmFjb0xhbmd1YWdlVHlwZS5KQVZBU0NSSVBUKSB7XHJcblx0XHRcdFx0XHRtb25hY28ubGFuZ3VhZ2VzLnR5cGVzY3JpcHQuamF2YXNjcmlwdERlZmF1bHRzLnNldENvbXBpbGVyT3B0aW9ucyhjb21waWxlck9wdGlvbnMpO1xyXG5cdFx0XHRcdFx0bW9uYWNvLmxhbmd1YWdlcy50eXBlc2NyaXB0LmphdmFzY3JpcHREZWZhdWx0cy5zZXREaWFnbm9zdGljc09wdGlvbnMoe1xyXG5cdFx0XHRcdFx0XHRub1NlbWFudGljVmFsaWRhdGlvbjogZmFsc2UsXHJcblx0XHRcdFx0XHRcdG5vU3ludGF4VmFsaWRhdGlvbjogZmFsc2VcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRtb25hY28ubGFuZ3VhZ2VzLnR5cGVzY3JpcHQudHlwZXNjcmlwdERlZmF1bHRzLnNldENvbXBpbGVyT3B0aW9ucyhjb21waWxlck9wdGlvbnMpO1xyXG5cdFx0XHRcdFx0bW9uYWNvLmxhbmd1YWdlcy50eXBlc2NyaXB0LnR5cGVzY3JpcHREZWZhdWx0cy5zZXREaWFnbm9zdGljc09wdGlvbnMoe1xyXG5cdFx0XHRcdFx0XHRub1NlbWFudGljVmFsaWRhdGlvbjogZmFsc2UsXHJcblx0XHRcdFx0XHRcdG5vU3ludGF4VmFsaWRhdGlvbjogZmFsc2VcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSBjYXRjaCAoZSkge1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKCdKUy9UUyB2YWxpZGF0aW9uIHNldHVwIGVycm9yOicsIGUpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzZXR1cEpTT05WYWxpZGF0aW9uKCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLmVkaXRvckluc3RhbmNlKSByZXR1cm47XHJcblxyXG5cdFx0dHJ5IHtcclxuXHRcdFx0aWYgKG1vbmFjby5sYW5ndWFnZXMgJiYgbW9uYWNvLmxhbmd1YWdlcy5qc29uKSB7XHJcblx0XHRcdFx0bW9uYWNvLmxhbmd1YWdlcy5qc29uLmpzb25EZWZhdWx0cy5zZXREaWFnbm9zdGljc09wdGlvbnMoe1xyXG5cdFx0XHRcdFx0dmFsaWRhdGU6IHRydWUsXHJcblx0XHRcdFx0XHRhbGxvd0NvbW1lbnRzOiB0cnVlLFxyXG5cdFx0XHRcdFx0c2NoZW1hczogW11cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSBjYXRjaCAoZSkge1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKCdKU09OIHZhbGlkYXRpb24gc2V0dXAgZXJyb3I6JywgZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHNldHVwSFRNTFZhbGlkYXRpb24oKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuZWRpdG9ySW5zdGFuY2UpIHJldHVybjtcclxuXHJcblx0XHR0cnkge1xyXG5cdFx0XHRpZiAobW9uYWNvLmxhbmd1YWdlcyAmJiBtb25hY28ubGFuZ3VhZ2VzLmh0bWwpIHtcclxuXHRcdFx0XHRtb25hY28ubGFuZ3VhZ2VzLmh0bWwuaHRtbERlZmF1bHRzLnNldERpYWdub3N0aWNzT3B0aW9ucyh7XHJcblx0XHRcdFx0XHR2YWxpZGF0ZTogdHJ1ZVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9IGNhdGNoIChlKSB7XHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ0hUTUwgdmFsaWRhdGlvbiBzZXR1cCBlcnJvcjonLCBlKTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiPGRpdiBcclxuICBbcFRvb2x0aXBdPVwibmdDb250cm9sLmludmFsaWQgPyAobmdDb250cm9sLmNvbnRyb2wudmFsdWUgfCBpbnB1dEVycm9yTWVzc2FnZTogbmdDb250cm9sKSA6ICcnXCJcclxuICBbdG9vbHRpcE9wdGlvbnNdPVwidG9vbHRpcE9wdGlvbnNcIlxyXG4gIFtjbGFzcy5wLWludmFsaWRdPVwibmdDb250cm9sLmludmFsaWQgJiYgKG5nQ29udHJvbC5kaXJ0eSB8fCBuZ0NvbnRyb2wudG91Y2hlZClcIlxyXG4gIGNsYXNzPVwiYXJpbC1lZGl0b3ItY29udGFpbmVyXCI+XHJcbiAgPG5neC1tb25hY28tZWRpdG9yXHJcbiAgICBbb3B0aW9uc109XCJlZGl0b3JPcHRpb25zXCJcclxuICAgIFtmb3JtQ29udHJvbF09XCJuZ0NvbnRyb2wuY29udHJvbFwiXHJcbiAgICAob25Jbml0KT1cIm9uRWRpdG9ySW5pdCgkZXZlbnQpXCJcclxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIm5nQ29udHJvbC52aWV3VG9Nb2RlbFVwZGF0ZSgkZXZlbnQpXCJcclxuICA+XHJcbiAgPC9uZ3gtbW9uYWNvLWVkaXRvcj5cclxuPC9kaXY+Il19
|