@xxmachina/components 19.7.0 → 19.8.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"xxmachina-components-pages-command.mjs","sources":["../tmp-esm2022/pages/command/command.page.js","../tmp-esm2022/pages/command/xxmachina-components-pages-command.js"],"sourcesContent":["var CommandPageStore_1;\nimport { __decorate, __metadata } from \"tslib\";\nimport { Component, computed, Directive, effect, inject, input, untracked } from '@angular/core';\nimport { FormArray, FormControl, FormGroup } from '@angular/forms';\nimport { RouterOutletFrame } from '@ng-atomic/components/frames/router-outlet';\nimport { CommandService } from '@xxmachina/components/services/command';\nimport { _computed, applyToInput, Effect, InjectableComponent, NgAtomicComponent, provideEffect, TokenizedType } from '@ng-atomic/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { FormTemplate, FormTemplateStore } from '@ng-atomic/components/templates/form';\nimport { getInvalid$, getValue$, injectRouteData, injectRouteData$, injectRouteParam, injectRouteParam$, injectRouteParamMap, injectRouteSkip, injectUnflattenRouteParam$ } from '@ng-atomic/common/utils';\nimport { map, tap, filter, combineLatest, shareReplay, of } from 'rxjs';\nimport { AppService } from '@ng-atomic/common/services/app';\nimport { injectNavStartActionsV2, makeDI } from '@ng-atomic/common/services/ui';\nimport { Query, QueryHelper } from '@xxmachina/common/domain/models';\nimport { injectUnflattenRouteParam } from '@ng-atomic/common/utils';\nimport { merge, pick } from 'lodash-es';\nimport { injectOne$ } from '@ng-atomic/common/stores/entities';\nimport { MachinaDevService } from '@xxmachina/components/services/debug';\nimport { EndpointHelper } from '@xxmachina/common/domain/models';\nimport { derivedAsync } from 'ngxtension/derived-async';\nimport { CommandFeature } from '@xxmachina/components/features/command';\nimport { TabsFrame } from '@ng-atomic/components/frames/tabs';\nimport { QueryFormGroup } from '@xxmachina/components/groups/query-form';\nimport { CommandFormGroup } from '@xxmachina/components/groups/command-form';\nimport { QueryFeature, QueryGraphqlSchemaFeature } from '@xxmachina/components/features/query';\nimport { CloudStorageService } from '@nx-ddd/common/infrastructure/externals/cloud-storage';\nimport { injectErrorMessageResolver } from '@ng-atomic/common/pipes/error';\nimport * as i0 from \"@angular/core\";\nvar ActionId;\n(function (ActionId) {\n ActionId[\"EXECUTE_COMMAND\"] = \"execute-command\";\n ActionId[\"FILE_SELECTED\"] = \"file-selected\";\n})(ActionId || (ActionId = {}));\nfunction buildFormData(form, formData = new FormData(), parentKey = '') {\n Object.keys(form.controls).forEach(key => {\n const control = form.get(key);\n const formKey = parentKey ? `${parentKey}.${key}` : key;\n if (control instanceof FormGroup || control instanceof FormArray) {\n // 子のFormGroupやFormArrayを再帰的に処理\n buildFormData(control, formData, formKey);\n }\n else if (control instanceof FormControl) {\n // フォームの値を追加\n const value = control.value;\n if (value !== null && value !== undefined) {\n formData.append(formKey, value);\n }\n }\n });\n return formData;\n}\nfunction buildData(form, contentType) {\n if (contentType === 'multipart/form-data') {\n return buildFormData(form);\n }\n else {\n return form.getRawValue();\n }\n}\nexport function buildActions(hasPermission, invalid) {\n return hasPermission\n ? [{ id: ActionId.EXECUTE_COMMAND, name: '実行', disabled: invalid }]\n : [{ id: ActionId.EXECUTE_COMMAND, name: '実行権限がありません', disabled: true }];\n}\nlet CommandPageStore = class CommandPageStore extends InjectableComponent {\n static { CommandPageStore_1 = this; }\n static { this.ActionId = ActionId; }\n static { this.DI = makeDI(CommandPageStore_1, () => {\n const dev = inject(MachinaDevService);\n return () => ({\n style: {\n width: 'var(--page-width-lv1)',\n },\n baseUrls: [],\n command: {\n id: '1',\n webApiRequest: {\n serverUrl: null,\n apiJsonUrl: null,\n path: '/users',\n method: 'GET',\n bodySchema: null,\n },\n },\n navEndActions: [],\n additionalFormFieldMap: (dev.isDevMode() ? {} : {\n 'id': { type: 'hidden' },\n '__typename': { type: 'hidden' },\n 'kind': { type: 'hidden' },\n }),\n });\n }, ['@xxmachina/components', 'pages', 'command']); }\n static { this.Config = CommandPageStore_1.DI.Config; }\n static { this.Initializer = CommandPageStore_1.DI.Initializer; }\n static provideDefault() {\n return [\n CommandPageStore_1.DI.provideConfig(),\n CommandPageStore_1.provideDefaultInitializer(),\n CommandPageStore_1.provideDefaultEffects(),\n ];\n }\n static provideCustom() {\n return [\n CommandPageStore_1.provideDefault(),\n CommandPageStore_1.provideCommandIdFromRouteDataInitializer(),\n CommandPageStore_1.provideSetupInitializeQueryInitializer(),\n ];\n }\n static provideDefaultV2() {\n return [\n CommandPageStore_1.Config.provide(),\n CommandPageStore_1.provideDefaultInitializer(),\n CommandPageStore_1.provideDefaultEffects(),\n CommandPageStore_1.provideCommandIdFromRouteDataInitializer(),\n CommandPageStore_1.provideSetupInitializeQueryInitializer(),\n CommandPageStore_1.provideInitialFormValueFromQueryResult(),\n CommandPageStore_1.provideQueryFromRouteData(),\n ];\n }\n static provideDefaultInitializer() {\n return [\n CommandPageStore_1.providePatchFormFromRouteParamInitializer(),\n CommandPageStore_1.providePatchCommandFormValueFromCommandInitializer(),\n CommandPageStore_1.provideInitialFormValueFromQueryResult()\n ];\n }\n static provideDefaultEffects() {\n return [\n CommandPageStore_1.provideExecuteCommandEffect(),\n CommandPageStore_1.provideBackEffect(),\n QueryFeature.provideDefaultEffects(),\n ];\n }\n static provideCommandFromRouteParamInitializer(paramName = 'commandId') {\n return CommandPageStore_1.Initializer.provide((store) => {\n const commandId = injectRouteParam(paramName);\n const service = inject(CommandService);\n effect(() => applyToInput(store, 'command', service.getCommand(commandId())));\n });\n }\n static provideCommandIdFromRouteDataInitializer() {\n return CommandPageStore_1.Initializer.provide((store) => {\n const commandId = injectRouteData('commandId');\n const service = inject(CommandService);\n effect(() => applyToInput(store, 'command', service.getCommand(commandId())));\n });\n }\n static providePatchFormFromRouteParamInitializer() {\n return [\n CommandPageStore_1.Initializer.provide(store => {\n effect(() => store.form().patchValue(store.data()));\n }),\n ];\n }\n static providePatchCommandFormValueFromCommandInitializer() {\n return [\n CommandPageStore_1.Initializer.provide(store => {\n effect(() => {\n if (!store.command())\n return;\n store.feature.commandForm().patchValue({ ...store.command() });\n });\n })\n ];\n }\n static provideQueryIdFromRouteParam(key = 'queryId') {\n return CommandPageStore_1.Initializer.provide((store) => {\n const queryId$ = injectRouteParam$(key);\n const params$ = injectUnflattenRouteParam$('data');\n const query$ = injectOne$(Query, { id: queryId$ });\n const setupQuery = derivedAsync(() => combineLatest({\n query: query$,\n params: params$,\n }).pipe(filter(({ query, params }) => !!query && !!params), map(({ query, params }) => QueryHelper.setup(query, params)), tap((query) => console.debug('[CommandPage] query:', query)), shareReplay(1)));\n effect(() => {\n console.debug('[CommandPage] setupQuery:', setupQuery());\n store.queryFeature.form.patchValue(setupQuery());\n });\n });\n }\n static provideQueryFromRouteData(key = 'query') {\n return CommandPageStore_1.Initializer.provide((store) => {\n const params$ = injectUnflattenRouteParam$('data');\n const query$ = injectRouteData$(key);\n const setupQuery = derivedAsync(() => combineLatest({\n query: query$,\n params: params$,\n }).pipe(filter(({ query, params }) => !!query), map(({ query, params }) => QueryHelper.setup(query, params)), shareReplay(1)));\n effect(() => { store.queryFeature.form.patchValue(setupQuery()); });\n });\n }\n static provideRouteParamsToDataInitializer(projector) {\n return CommandPageStore_1.Initializer.provide((store) => {\n const route = inject(ActivatedRoute);\n const data = derivedAsync(() => route.params.pipe(map(params => projector(params))));\n effect(() => applyToInput(store, 'data', data()));\n });\n }\n static provideRouteParamMapToDataInitializer(projector) {\n return CommandPageStore_1.Initializer.provide((store) => {\n const paramMap = injectRouteParamMap({ merge: true });\n const data = computed(() => projector(paramMap()));\n effect(() => applyToInput(store, 'data', data()));\n });\n }\n static provideSetupInitializeQueryInitializer() {\n return CommandPageStore_1.Initializer.provide((store) => {\n const initializeQuery = derivedAsync(() => combineLatest({\n initializeQuery: of(store.initializeQuery()),\n data: of(store.data())\n }).pipe(filter(({ initializeQuery, data }) => !!initializeQuery && !!data), map(({ initializeQuery, data }) => QueryHelper.setup(initializeQuery, data)), filter((initializeQuery) => !!initializeQuery), shareReplay(1)));\n effect(() => store.queryFeature.form.patchValue(initializeQuery()));\n });\n }\n static provideInitialFormValueFromQueryResult() {\n return CommandPageStore_1.Initializer.provide((store) => {\n effect(() => store.form().patchValue(store.queryFeature.result()));\n store.queryFeature.refresh();\n });\n }\n static provideExecuteCommandEffect() {\n return provideEffect(ActionId.EXECUTE_COMMAND, () => {\n const store = inject(CommandPageStore_1);\n const app = inject(AppService);\n const paramKeys = computed(() => EndpointHelper.extract(store.feature.path()));\n const resolvedParams = computed(() => pick(store.data(), paramKeys()));\n return () => {\n const resolvedEndpoint = EndpointHelper.resolve(store.feature.path(), resolvedParams());\n const data = buildData(store.form(), store.command()?.webApiRequest?.contentType);\n const command = merge(store.command(), store.feature.commandForm().getRawValue(), { webApiRequest: { path: resolvedEndpoint } });\n app.loading.await(() => {\n return store.feature.execute(command, data).then(() => {\n app.snackBar.open('成功しました。');\n // history.back();\n }).catch((error) => {\n console.error(error);\n app.snackBar.openError(error);\n });\n });\n };\n });\n }\n static provideBackEffect() {\n return provideEffect(FormTemplateStore.ActionId.BACK, () => {\n return () => history.back();\n });\n }\n static provideFileSelectedEffect() {\n return provideEffect(CommandPageStore_1.ActionId.FILE_SELECTED, () => {\n const store = inject(CommandPageStore_1);\n return (payload) => {\n store.form().patchValue({ file: payload.files?.[0] });\n };\n });\n }\n static provideDebugFormInitializer() {\n return CommandPageStore_1.Initializer.provide(() => {\n const store = inject(CommandPageStore_1);\n // FormGroupを再帰的に調べる関数(invalidなコントロールのみ)\n const getInvalidControls = (formGroup, path = '') => {\n let invalidControls = [];\n Object.keys(formGroup.controls).forEach(key => {\n const control = formGroup.controls[key];\n const currentPath = path ? `${path}.${key}` : key;\n // invalidなコントロールを記録\n if (control.invalid) {\n invalidControls.push({\n path: currentPath,\n errors: control.errors,\n value: control.value,\n status: control.status,\n valid: control.valid,\n invalid: control.invalid,\n dirty: control.dirty,\n touched: control.touched\n });\n }\n // FormGroupの場合は再帰的に調べる\n if (control.controls) {\n invalidControls = invalidControls.concat(getInvalidControls(control, currentPath));\n }\n });\n return invalidControls;\n };\n const formValue_ = derivedAsync(() => getValue$(store.form()));\n effect(() => {\n const formValue = formValue_();\n const form = untracked(() => store.form());\n console.log('[CommandPage] Form value changed:', formValue);\n console.log('[CommandPage] CommandForm valid:', form?.valid);\n console.log('[CommandPage] CommandForm status:', form?.status);\n if (form) {\n const invalidControls = getInvalidControls(form);\n const invalidPaths = invalidControls.map(control => control.path);\n console.log(`[CommandPage] Found ${invalidControls.length} INVALID controls:`);\n console.log('[CommandPage] INVALID PATHS:', invalidPaths);\n }\n });\n });\n }\n static provideSelectedFileUploadEffect(callbackFactory, { validator = () => null, getPath, }) {\n return provideEffect(CommandPageStore_1.ActionId.FILE_SELECTED, () => {\n const storage = inject(CloudStorageService);\n const app = inject(AppService);\n const callback = callbackFactory();\n const errorMessageResolver = injectErrorMessageResolver();\n return (payload) => {\n const file = payload.files?.[0];\n const errors = validator(file);\n if (errors && Object.keys(errors).length > 0) {\n app.snackBar.open(errorMessageResolver(errors));\n return;\n }\n return app.loading.await(() => {\n const path = getPath();\n return storage.upload(path, file).then(() => {\n app.snackBar.open('ファイルをアップロードしました');\n return storage.getDownloadUrl(path).then((imageUrl) => {\n return callback({ file, path, url: imageUrl });\n });\n }).catch((error) => {\n console.error(error);\n app.snackBar.open('ファイルのアップロードに失敗しました');\n });\n });\n };\n });\n }\n #navStartActions;\n constructor() {\n super();\n this.feature = inject(CommandFeature);\n this.config = CommandPageStore_1.Config.inject();\n this.queryFeature = inject(QueryFeature);\n this.style = input(_computed(() => this.config().style));\n this.#navStartActions = injectNavStartActionsV2();\n this.navStartActions = input(_computed(() => this.#navStartActions()));\n this.navEndActions = input(_computed(() => this.config().navEndActions));\n this.command = input(_computed(() => this.config().command));\n this.form = input(_computed(() => this.feature.form()));\n this.extractedFormFieldMap = input(_computed(() => this.feature.extractedFormFieldMap()));\n this.additionalFormFieldMap = input(_computed(() => this.config().additionalFormFieldMap));\n this.formFieldMap = input(_computed(() => ({\n ...this.extractedFormFieldMap(),\n ...this.additionalFormFieldMap()\n })));\n this.formFieldKeys = input(_computed(() => []));\n this.formFlatExcludes = input(_computed(() => []));\n this._initializeQuery = injectRouteData('query');\n this.initializeQuery = input(_computed(() => this._initializeQuery()));\n this._data = injectUnflattenRouteParam('data');\n this.data = input(_computed(() => this._data()));\n this.formInvalid = derivedAsync(() => getInvalid$(this.form()));\n this.title = input(_computed(() => this.feature.title()));\n this.actions = derivedAsync(() => buildActions(this.feature.hasPermission(this.command()), this.formInvalid()));\n this.skip = injectRouteSkip();\n CommandPageStore_1.Initializer.initializeStore(this);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: CommandPageStore, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.5\", type: CommandPageStore, isStandalone: true, inputs: { style: { classPropertyName: \"style\", publicName: \"style\", isSignal: true, isRequired: false, transformFunction: null }, navStartActions: { classPropertyName: \"navStartActions\", publicName: \"navStartActions\", isSignal: true, isRequired: false, transformFunction: null }, navEndActions: { classPropertyName: \"navEndActions\", publicName: \"navEndActions\", isSignal: true, isRequired: false, transformFunction: null }, command: { classPropertyName: \"command\", publicName: \"command\", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: \"form\", publicName: \"form\", isSignal: true, isRequired: false, transformFunction: null }, extractedFormFieldMap: { classPropertyName: \"extractedFormFieldMap\", publicName: \"extractedFormFieldMap\", isSignal: true, isRequired: false, transformFunction: null }, additionalFormFieldMap: { classPropertyName: \"additionalFormFieldMap\", publicName: \"additionalFormFieldMap\", isSignal: true, isRequired: false, transformFunction: null }, formFieldMap: { classPropertyName: \"formFieldMap\", publicName: \"formFieldMap\", isSignal: true, isRequired: false, transformFunction: null }, formFieldKeys: { classPropertyName: \"formFieldKeys\", publicName: \"formFieldKeys\", isSignal: true, isRequired: false, transformFunction: null }, formFlatExcludes: { classPropertyName: \"formFlatExcludes\", publicName: \"formFlatExcludes\", isSignal: true, isRequired: false, transformFunction: null }, initializeQuery: { classPropertyName: \"initializeQuery\", publicName: \"initializeQuery\", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: \"data\", publicName: \"data\", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: \"title\", publicName: \"title\", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }\n};\nCommandPageStore = CommandPageStore_1 = __decorate([\n TokenizedType(),\n __metadata(\"design:paramtypes\", [])\n], CommandPageStore);\nexport { CommandPageStore };\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: CommandPageStore, decorators: [{\n type: Directive,\n args: [{ standalone: true }]\n }], ctorParameters: () => [] });\nexport class CommandPage extends NgAtomicComponent {\n constructor() {\n super(...arguments);\n this.store = inject(CommandPageStore);\n this.route = inject(ActivatedRoute);\n this.app = inject(AppService);\n this.parentRouterOutletFrame = inject(RouterOutletFrame, { optional: true });\n }\n onFileSelected(payload) {\n this.dispatch({ id: ActionId.FILE_SELECTED, payload });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: CommandPage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.5\", type: CommandPage, isStandalone: true, selector: \"pages-command\", providers: [\n CommandFeature,\n QueryFeature,\n QueryGraphqlSchemaFeature\n ], usesInheritance: true, hostDirectives: [{ directive: CommandPageStore, inputs: [\"style\", \"style\", \"navEndActions\", \"navEndActions\", \"command\", \"command\", \"form\", \"form\", \"additionalFormFieldMap\", \"additionalFormFieldMap\", \"formFieldMap\", \"formFieldMap\", \"formFlatExcludes\", \"formFlatExcludes\", \"initializeQuery\", \"initializeQuery\", \"data\", \"data\"] }], ngImport: i0, template: `\n <frames-router-outlet [skip]=\"store.skip()\" (action)=\"dispatch($event)\">\n <templates-form\n [form]=\"store.form()\"\n [style]=\"store.style()\"\n [fieldMap]=\"store.formFieldMap()\"\n [fieldKeys]=\"store.formFieldKeys()\"\n [formFlatExcludes]=\"store.formFlatExcludes()\"\n [title]=\"store.title()\"\n [navStartActions]=\"store.navStartActions()\"\n [navEndActions]=\"store.navEndActions()\"\n [actions]=\"store.actions()\"\n (action)=\"dispatch($event)\"\n >\n <frames-tabs [labels]=\"['Command', 'InitializeQuery']\" dashboard>\n <ng-template #tab>\n <groups-command-form (action)=\"dispatch($event)\"/>\n </ng-template>\n <ng-template #tab>\n <groups-query-form\n [form]=\"store.queryFeature.form\"\n (action)=\"dispatch($event)\"\n />\n </ng-template>\n </frames-tabs> \n </templates-form>\n </frames-router-outlet>\n `, isInline: true, styles: [\":host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-command-i4mZ: var(--page-width-lv1)}:host .template{--first-content-height: 0px;width:var(--page-width-lv1-SCOPED-IN-command-i4mZ)}:host .template div[dashboard]{padding:0;box-sizing:border-box}\\n\"], dependencies: [{ kind: \"component\", type: RouterOutletFrame, selector: \"frames-router-outlet\", outputs: [\"events\"] }, { kind: \"component\", type: FormTemplate, selector: \"templates-form\" }, { kind: \"component\", type: TabsFrame, selector: \"frames-tabs\", inputs: [\"labels\"], outputs: [\"selectedTabIndexChange\"] }, { kind: \"component\", type: CommandFormGroup, selector: \"groups-command-form\", inputs: [\"apiJsonUrls\"] }, { kind: \"component\", type: QueryFormGroup, selector: \"groups-query-form\", inputs: [\"form\", \"keyActions\"] }] }); }\n}\n__decorate([\n Effect(FormTemplateStore.ActionId.FILE_SELECTED),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], CommandPage.prototype, \"onFileSelected\", null);\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: CommandPage, decorators: [{\n type: Component,\n args: [{ selector: 'pages-command', imports: [\n RouterOutletFrame,\n FormTemplate,\n TabsFrame,\n CommandFormGroup,\n QueryFormGroup\n ], providers: [\n CommandFeature,\n QueryFeature,\n QueryGraphqlSchemaFeature\n ], template: `\n <frames-router-outlet [skip]=\"store.skip()\" (action)=\"dispatch($event)\">\n <templates-form\n [form]=\"store.form()\"\n [style]=\"store.style()\"\n [fieldMap]=\"store.formFieldMap()\"\n [fieldKeys]=\"store.formFieldKeys()\"\n [formFlatExcludes]=\"store.formFlatExcludes()\"\n [title]=\"store.title()\"\n [navStartActions]=\"store.navStartActions()\"\n [navEndActions]=\"store.navEndActions()\"\n [actions]=\"store.actions()\"\n (action)=\"dispatch($event)\"\n >\n <frames-tabs [labels]=\"['Command', 'InitializeQuery']\" dashboard>\n <ng-template #tab>\n <groups-command-form (action)=\"dispatch($event)\"/>\n </ng-template>\n <ng-template #tab>\n <groups-query-form\n [form]=\"store.queryFeature.form\"\n (action)=\"dispatch($event)\"\n />\n </ng-template>\n </frames-tabs> \n </templates-form>\n </frames-router-outlet>\n `, hostDirectives: [\n {\n directive: CommandPageStore,\n inputs: [\n 'style',\n 'navEndActions',\n 'command',\n 'form',\n 'additionalFormFieldMap',\n 'formFieldMap',\n 'formFlatExcludes',\n 'initializeQuery',\n 'data',\n ]\n },\n ], styles: [\":host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-command-i4mZ: var(--page-width-lv1)}:host .template{--first-content-height: 0px;width:var(--page-width-lv1-SCOPED-IN-command-i4mZ)}:host .template div[dashboard]{padding:0;box-sizing:border-box}\\n\"] }]\n }], propDecorators: { onFileSelected: [] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQHh4bWFjaGluYS9jb21wb25lbnRzL3NyYy9saWIvcGFnZXMvY29tbWFuZC9jb21tYW5kLnBhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVksU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBbUIsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBVSxZQUFZLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoSixPQUFPLEVBQUUsY0FBYyxFQUFvQixNQUFNLGlCQUFpQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM00sT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEYsT0FBTyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVyRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDL0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDNUYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBRTNFLElBQUssUUFHSjtBQUhELFdBQUssUUFBUTtJQUNYLCtDQUFtQyxDQUFBO0lBQ25DLDJDQUErQixDQUFBO0FBQ2pDLENBQUMsRUFISSxRQUFRLEtBQVIsUUFBUSxRQUdaO0FBRUQsU0FBUyxhQUFhLENBQUMsSUFBMkIsRUFBRSxXQUFxQixJQUFJLFFBQVEsRUFBRSxFQUFFLFNBQVMsR0FBRyxFQUFFO0lBQ3JHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUV4RCxJQUFJLE9BQU8sWUFBWSxTQUFTLElBQUksT0FBTyxZQUFZLFNBQVMsRUFBRSxDQUFDO1lBQ2pFLCtCQUErQjtZQUMvQixhQUFhLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1QyxDQUFDO2FBQU0sSUFBSSxPQUFPLFlBQVksV0FBVyxFQUFFLENBQUM7WUFDMUMsWUFBWTtZQUNaLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDNUIsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDMUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxJQUFxQixFQUFFLFdBQW1CO0lBQzNELElBQUksV0FBVyxLQUFLLHFCQUFxQixFQUFFLENBQUM7UUFDMUMsT0FBTyxhQUFhLENBQUMsSUFBaUIsQ0FBQyxDQUFDO0lBQzFDLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUIsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLGFBQXNCLEVBQUUsT0FBZ0I7SUFDbkUsT0FBTyxhQUFhO1FBQ2xCLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxlQUFlLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDbkUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0FBQzVFLENBQUM7QUFJTSxJQUFNLGdCQUFnQixHQUF0QixNQUFNLGdCQUFpQixTQUFRLG1CQUFtQjs7YUFDdkMsYUFBUSxHQUFHLFFBQVEsQUFBWCxDQUFZO2FBQ3BCLE9BQUUsR0FBRyxNQUFNLENBQUMsa0JBQWdCLEVBQUUsR0FBRyxFQUFFO1FBQ2pELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNaLEtBQUssRUFBRTtnQkFDTCxLQUFLLEVBQUUsdUJBQXVCO2FBQy9CO1lBQ0QsUUFBUSxFQUFFLEVBQWM7WUFDeEIsT0FBTyxFQUFXO2dCQUNoQixFQUFFLEVBQUUsR0FBRztnQkFDUCxhQUFhLEVBQUU7b0JBQ2IsU0FBUyxFQUFFLElBQUk7b0JBQ2YsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRSxRQUFRO29CQUNkLE1BQU0sRUFBRSxLQUFLO29CQUNiLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjthQUNGO1lBQ0QsYUFBYSxFQUFZLEVBQUU7WUFDM0Isc0JBQXNCLEVBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM1RCxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2dCQUN4QixZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2dCQUNoQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2FBQzNCLENBQUM7U0FDSCxDQUFDLENBQUM7SUFDTCxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsQUF4Qi9CLENBd0JnQzthQUNsQyxXQUFNLEdBQUcsa0JBQWdCLENBQUMsRUFBRSxDQUFDLE1BQU0sQUFBN0IsQ0FBOEI7YUFDcEMsZ0JBQVcsR0FBRyxrQkFBZ0IsQ0FBQyxFQUFFLENBQUMsV0FBVyxBQUFsQyxDQUFtQztJQUU5RCxNQUFNLENBQUMsY0FBYztRQUNuQixPQUFPO1lBQ0wsa0JBQWdCLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRTtZQUNuQyxrQkFBZ0IsQ0FBQyx5QkFBeUIsRUFBRTtZQUM1QyxrQkFBZ0IsQ0FBQyxxQkFBcUIsRUFBRTtTQUN6QyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxhQUFhO1FBQ2xCLE9BQU87WUFDTCxrQkFBZ0IsQ0FBQyxjQUFjLEVBQUU7WUFDakMsa0JBQWdCLENBQUMsd0NBQXdDLEVBQUU7WUFDM0Qsa0JBQWdCLENBQUMsc0NBQXNDLEVBQUU7U0FDMUQsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCO1FBQ3JCLE9BQU87WUFDTCxrQkFBZ0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ2pDLGtCQUFnQixDQUFDLHlCQUF5QixFQUFFO1lBQzVDLGtCQUFnQixDQUFDLHFCQUFxQixFQUFFO1lBQ3hDLGtCQUFnQixDQUFDLHdDQUF3QyxFQUFFO1lBQzNELGtCQUFnQixDQUFDLHNDQUFzQyxFQUFFO1lBQ3pELGtCQUFnQixDQUFDLHNDQUFzQyxFQUFFO1lBQ3pELGtCQUFnQixDQUFDLHlCQUF5QixFQUFFO1NBQzdDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLHlCQUF5QjtRQUM5QixPQUFPO1lBQ0wsa0JBQWdCLENBQUMseUNBQXlDLEVBQUU7WUFDNUQsa0JBQWdCLENBQUMsa0RBQWtELEVBQUU7WUFDckUsa0JBQWdCLENBQUMsc0NBQXNDLEVBQUU7U0FDMUQsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMscUJBQXFCO1FBQzFCLE9BQU87WUFDTCxrQkFBZ0IsQ0FBQywyQkFBMkIsRUFBRTtZQUM5QyxrQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRTtZQUNwQyxZQUFZLENBQUMscUJBQXFCLEVBQUU7U0FDckMsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsdUNBQXVDLENBQUMsU0FBUyxHQUFHLFdBQVc7UUFDcEUsT0FBTyxrQkFBZ0IsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDcEQsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDOUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyx3Q0FBd0M7UUFDN0MsT0FBTyxrQkFBZ0IsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDcEQsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFTLFdBQVcsQ0FBQyxDQUFDO1lBQ3ZELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN2QyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMseUNBQXlDO1FBQzlDLE9BQU87WUFDTCxrQkFBZ0IsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUMzQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RELENBQUMsQ0FBQztTQUNILENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLGtEQUFrRDtRQUN2RCxPQUFPO1lBQ0wsa0JBQWdCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDM0MsTUFBTSxDQUFDLEdBQUcsRUFBRTtvQkFDVixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTt3QkFBRSxPQUFPO29CQUM3QixLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDakUsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUM7U0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLEdBQUcsU0FBUztRQUNqRCxPQUFPLGtCQUFnQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNwRCxNQUFNLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QyxNQUFNLE9BQU8sR0FBRywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDbkQsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQztnQkFDbEQsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsTUFBTSxFQUFFLE9BQU87YUFDaEIsQ0FBQyxDQUFDLElBQUksQ0FDTCxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQ2xELEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUM1RCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFDNUQsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUMsQ0FBQztZQUNILE1BQU0sQ0FBQyxHQUFHLEVBQUU7Z0JBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RCxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUNuRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLEdBQUcsT0FBTztRQUM1QyxPQUFPLGtCQUFnQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNwRCxNQUFNLE9BQU8sR0FBRywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuRCxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBUSxHQUFHLENBQUMsQ0FBQztZQUM1QyxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDO2dCQUNsRCxLQUFLLEVBQUUsTUFBTTtnQkFDYixNQUFNLEVBQUUsT0FBTzthQUNoQixDQUFDLENBQUMsSUFBSSxDQUNMLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQ3RDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUM1RCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLFNBQWtEO1FBQzNGLE9BQU8sa0JBQWdCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3BELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNyQyxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JGLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLHFDQUFxQyxDQUFDLFNBQW9EO1FBQy9GLE9BQU8sa0JBQWdCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3BELE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7WUFDcEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkQsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsc0NBQXNDO1FBQzNDLE9BQU8sa0JBQWdCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3BELE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUM7Z0JBQ3ZELGVBQWUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUM1QyxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUN2QixDQUFDLENBQUMsSUFBSSxDQUNMLE1BQU0sQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFDbEUsR0FBRyxDQUFDLENBQUMsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQzVFLE1BQU0sQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUM5QyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLHNDQUFzQztRQUMzQyxPQUFPLGtCQUFnQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNwRCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuRSxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQywyQkFBMkI7UUFDaEMsT0FBTyxhQUFhLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7WUFDbEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLGtCQUFnQixDQUFDLENBQUM7WUFDdkMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQy9CLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQy9FLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUV2RSxPQUFPLEdBQUcsRUFBRTtnQkFDVixNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO2dCQUN4RixNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBQ2xGLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FDbkIsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUNmLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQ3pDLEVBQUUsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsQ0FDOUMsQ0FBQztnQkFDRixHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7b0JBQ3JCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7d0JBQ3BELEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3dCQUM3QixrQkFBa0I7b0JBQ3BCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO3dCQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNyQixHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDaEMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUE7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsaUJBQWlCO1FBQ3RCLE9BQU8sYUFBYSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFO1lBQ3pELE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyx5QkFBeUI7UUFDOUIsT0FBTyxhQUFhLENBQUMsa0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7WUFDakUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLGtCQUFnQixDQUFDLENBQUM7WUFDdkMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNqQixLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDdkQsQ0FBQyxDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLDJCQUEyQjtRQUNoQyxPQUFPLGtCQUFnQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQy9DLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxrQkFBZ0IsQ0FBQyxDQUFDO1lBRXZDLHdDQUF3QztZQUN4QyxNQUFNLGtCQUFrQixHQUFHLENBQUMsU0FBYyxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRTtnQkFDdkQsSUFBSSxlQUFlLEdBQVUsRUFBRSxDQUFDO2dCQUVoQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQzVDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3hDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztvQkFFbEQsb0JBQW9CO29CQUNwQixJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDcEIsZUFBZSxDQUFDLElBQUksQ0FBQzs0QkFDbkIsSUFBSSxFQUFFLFdBQVc7NEJBQ2pCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTs0QkFDdEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLOzRCQUNwQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07NEJBQ3RCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSzs0QkFDcEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPOzRCQUN4QixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7NEJBQ3BCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTzt5QkFDekIsQ0FBQyxDQUFDO29CQUNMLENBQUM7b0JBRUQsdUJBQXVCO29CQUN2QixJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDckIsZUFBZSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7b0JBQ3JGLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsT0FBTyxlQUFlLENBQUM7WUFDekIsQ0FBQyxDQUFDO1lBRUYsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRS9ELE1BQU0sQ0FBQyxHQUFHLEVBQUU7Z0JBQ1YsTUFBTSxTQUFTLEdBQUcsVUFBVSxFQUFFLENBQUM7Z0JBQy9CLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDNUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQzdELE9BQU8sQ0FBQyxHQUFHLENBQUMsbUNBQW1DLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLElBQUksRUFBRSxDQUFDO29CQUNULE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNqRCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNsRSxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixlQUFlLENBQUMsTUFBTSxvQkFBb0IsQ0FBQyxDQUFDO29CQUMvRSxPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUM1RCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsK0JBQStCLENBQ3BDLGVBQWdHLEVBQ2hHLEVBQ0UsU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksRUFDdEIsT0FBTyxHQUlSO1FBRUQsT0FBTyxhQUFhLENBQUMsa0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7WUFDakUsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDNUMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQy9CLE1BQU0sUUFBUSxHQUFHLGVBQWUsRUFBRSxDQUFDO1lBQ25DLE1BQU0sb0JBQW9CLEdBQUcsMEJBQTBCLEVBQUUsQ0FBQztZQUUxRCxPQUFPLENBQUMsT0FBd0MsRUFBRSxFQUFFO2dCQUNsRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzdDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBQ2hELE9BQU87Z0JBQ1QsQ0FBQztnQkFDRCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtvQkFDNUIsTUFBTSxJQUFJLEdBQUcsT0FBTyxFQUFFLENBQUM7b0JBQ3ZCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTt3QkFDMUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQzt3QkFDckMsT0FBTyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFOzRCQUNwRCxPQUFPLFFBQVEsQ0FBQyxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUM7d0JBQy9DLENBQUMsQ0FBQyxDQUFDO29CQUNMLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO3dCQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNyQixHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO29CQUMxQyxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQU1RLGdCQUFnQixDQUE2QjtJQXNCdEQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQTNCRCxZQUFPLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pDLFdBQU0sR0FBRyxrQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUMsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEMsVUFBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEQscUJBQWdCLEdBQUcsdUJBQXVCLEVBQUUsQ0FBQztRQUM3QyxvQkFBZSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLGtCQUFhLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUNwRSxZQUFPLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN4RCxTQUFJLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRCwwQkFBcUIsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckYsMkJBQXNCLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLGlCQUFZLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBZSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzNELEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQy9CLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1NBQ2pDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDSSxrQkFBYSxHQUFHLEtBQUssQ0FBVyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRCxxQkFBZ0IsR0FBRyxLQUFLLENBQVcsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUMscUJBQWdCLEdBQUcsZUFBZSxDQUFRLE9BQU8sQ0FBQyxDQUFDO1FBQzdELG9CQUFlLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEQsVUFBSyxHQUFHLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELFNBQUksR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEMsZ0JBQVcsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckUsVUFBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckQsWUFBTyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRyxTQUFJLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFJaEMsa0JBQWdCLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDOzhHQTdWVSxnQkFBZ0I7a0dBQWhCLGdCQUFnQjs7QUFBaEIsZ0JBQWdCO0lBRjVCLGFBQWEsRUFBRTs7R0FFSCxnQkFBZ0IsQ0E4VjVCOzsyRkE5VlksZ0JBQWdCO2tCQUQ1QixTQUFTO21CQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTs7QUE2Wi9CLE1BQU0sT0FBTyxXQUFZLFNBQVEsaUJBQWlCO0lBNURsRDs7UUE2RHFCLFVBQUssR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMzQyxVQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9CLFFBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekIsNEJBQXVCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7S0FNaEY7SUFIVyxjQUFjLENBQUMsT0FBTztRQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDOzhHQVRVLFdBQVc7a0dBQVgsV0FBVyw0REFuRFg7WUFDVCxjQUFjO1lBQ2QsWUFBWTtZQUNaLHlCQUF5QjtTQUMxQix1REE3V1UsZ0JBQWdCLG1UQThXakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCVCxvVkF0Q0MsaUJBQWlCLHNGQUNqQixZQUFZLDJEQUNaLFNBQVMsaUhBQ1QsZ0JBQWdCLHlGQUNoQixjQUFjOztBQTRETjtJQURULE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDOzs7O2lEQUdoRDsyRkFUVSxXQUFXO2tCQTVEdkIsU0FBUzsrQkFDRSxlQUFlLFdBQ2hCO3dCQUNQLGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixTQUFTO3dCQUNULGdCQUFnQjt3QkFDaEIsY0FBYztxQkFDZixhQUNVO3dCQUNULGNBQWM7d0JBQ2QsWUFBWTt3QkFDWix5QkFBeUI7cUJBQzFCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCVCxrQkFFZTt3QkFDZDs0QkFDRSxTQUFTLEVBQUUsZ0JBQWdCOzRCQUMzQixNQUFNLEVBQUU7Z0NBQ04sT0FBTztnQ0FDUCxlQUFlO2dDQUNmLFNBQVM7Z0NBQ1QsTUFBTTtnQ0FDTix3QkFBd0I7Z0NBQ3hCLGNBQWM7Z0NBQ2Qsa0JBQWtCO2dDQUNsQixpQkFBaUI7Z0NBQ2pCLE1BQU07NkJBQ1A7eUJBQ0Y7cUJBQ0Y7OEJBU1MsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIERpcmVjdGl2ZSwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBQcm92aWRlciwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJvdXRlck91dGxldEZyYW1lIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL2ZyYW1lcy9yb3V0ZXItb3V0bGV0JztcbmltcG9ydCB7IENvbW1hbmRTZXJ2aWNlIH0gZnJvbSAnQHh4bWFjaGluYS9jb21wb25lbnRzL3NlcnZpY2VzL2NvbW1hbmQnO1xuaW1wb3J0IHsgX2NvbXB1dGVkLCBBY3Rpb24sIGFwcGx5VG9JbnB1dCwgRWZmZWN0LCBJbmplY3RhYmxlQ29tcG9uZW50LCBOZ0F0b21pY0NvbXBvbmVudCwgcHJvdmlkZUVmZmVjdCwgVG9rZW5pemVkVHlwZSB9IGZyb20gJ0BuZy1hdG9taWMvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1NYXAsIFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGb3JtVGVtcGxhdGUsIEZvcm1UZW1wbGF0ZVN0b3JlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL3RlbXBsYXRlcy9mb3JtJztcbmltcG9ydCB7IGdldEludmFsaWQkLCBnZXRWYWx1ZSQsIGluamVjdFJvdXRlRGF0YSwgaW5qZWN0Um91dGVEYXRhJCwgaW5qZWN0Um91dGVQYXJhbSwgaW5qZWN0Um91dGVQYXJhbSQsIGluamVjdFJvdXRlUGFyYW1NYXAsIGluamVjdFJvdXRlU2tpcCwgaW5qZWN0VW5mbGF0dGVuUm91dGVQYXJhbSQgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi91dGlscyc7XG5pbXBvcnQgeyBtYXAsIHRhcCwgZmlsdGVyLCBjb21iaW5lTGF0ZXN0LCBzaGFyZVJlcGxheSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvcm1GaWVsZE1hcCB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3BpcGVzL3NtYXJ0LWZpZWxkJztcbmltcG9ydCB7IEFwcFNlcnZpY2UgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9hcHAnO1xuaW1wb3J0IHsgaW5qZWN0TmF2U3RhcnRBY3Rpb25zVjIsIG1ha2VESSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3VpJztcbmltcG9ydCB7IFF1ZXJ5LCBRdWVyeUhlbHBlciB9IGZyb20gJ0B4eG1hY2hpbmEvY29tbW9uL2RvbWFpbi9tb2RlbHMnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ0B4eG1hY2hpbmEvY29tbW9uL2RvbWFpbi9tb2RlbHMnO1xuaW1wb3J0IHsgaW5qZWN0VW5mbGF0dGVuUm91dGVQYXJhbSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IG1lcmdlLCBwaWNrIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IGluamVjdE9uZSQgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zdG9yZXMvZW50aXRpZXMnO1xuaW1wb3J0IHsgTWFjaGluYURldlNlcnZpY2UgfSBmcm9tICdAeHhtYWNoaW5hL2NvbXBvbmVudHMvc2VydmljZXMvZGVidWcnO1xuaW1wb3J0IHsgRW5kcG9pbnRIZWxwZXIgfSBmcm9tICdAeHhtYWNoaW5hL2NvbW1vbi9kb21haW4vbW9kZWxzJztcbmltcG9ydCB7IGRlcml2ZWRBc3luYyB9IGZyb20gJ25neHRlbnNpb24vZGVyaXZlZC1hc3luYyc7XG5pbXBvcnQgeyBDb21tYW5kRmVhdHVyZSB9IGZyb20gJ0B4eG1hY2hpbmEvY29tcG9uZW50cy9mZWF0dXJlcy9jb21tYW5kJztcbmltcG9ydCB7IFRhYnNGcmFtZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9mcmFtZXMvdGFicyc7XG5pbXBvcnQgeyBRdWVyeUZvcm1Hcm91cCB9IGZyb20gJ0B4eG1hY2hpbmEvY29tcG9uZW50cy9ncm91cHMvcXVlcnktZm9ybSc7XG5pbXBvcnQgeyBDb21tYW5kRm9ybUdyb3VwIH0gZnJvbSAnQHh4bWFjaGluYS9jb21wb25lbnRzL2dyb3Vwcy9jb21tYW5kLWZvcm0nO1xuaW1wb3J0IHsgUXVlcnlGZWF0dXJlLCBRdWVyeUdyYXBocWxTY2hlbWFGZWF0dXJlIH0gZnJvbSAnQHh4bWFjaGluYS9jb21wb25lbnRzL2ZlYXR1cmVzL3F1ZXJ5JztcbmltcG9ydCB7IENsb3VkU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAbngtZGRkL2NvbW1vbi9pbmZyYXN0cnVjdHVyZS9leHRlcm5hbHMvY2xvdWQtc3RvcmFnZSc7XG5pbXBvcnQgeyBpbmplY3RFcnJvck1lc3NhZ2VSZXNvbHZlciB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3BpcGVzL2Vycm9yJztcblxuZW51bSBBY3Rpb25JZCB7XG4gIEVYRUNVVEVfQ09NTUFORCA9ICdleGVjdXRlLWNvbW1hbmQnLFxuICBGSUxFX1NFTEVDVEVEID0gJ2ZpbGUtc2VsZWN0ZWQnLFxufVxuXG5mdW5jdGlvbiBidWlsZEZvcm1EYXRhKGZvcm06IEZvcm1Hcm91cCB8IEZvcm1BcnJheSwgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCksIHBhcmVudEtleSA9ICcnKTogRm9ybURhdGEge1xuICBPYmplY3Qua2V5cyhmb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgY29uc3QgY29udHJvbCA9IGZvcm0uZ2V0KGtleSk7XG4gICAgY29uc3QgZm9ybUtleSA9IHBhcmVudEtleSA/IGAke3BhcmVudEtleX0uJHtrZXl9YCA6IGtleTtcblxuICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwIHx8IGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgIC8vIOWtkOOBrkZvcm1Hcm91cOOChEZvcm1BcnJheeOCkuWGjeW4sOeahOOBq+WHpueQhlxuICAgICAgYnVpbGRGb3JtRGF0YShjb250cm9sLCBmb3JtRGF0YSwgZm9ybUtleSk7XG4gICAgfSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcbiAgICAgIC8vIOODleOCqeODvOODoOOBruWApOOCkui/veWKoFxuICAgICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGZvcm1LZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBmb3JtRGF0YTtcbn1cblxuZnVuY3Rpb24gYnVpbGREYXRhKGZvcm06IEFic3RyYWN0Q29udHJvbCwgY29udGVudFR5cGU6IHN0cmluZykge1xuICBpZiAoY29udGVudFR5cGUgPT09ICdtdWx0aXBhcnQvZm9ybS1kYXRhJykge1xuICAgIHJldHVybiBidWlsZEZvcm1EYXRhKGZvcm0gYXMgRm9ybUdyb3VwKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZm9ybS5nZXRSYXdWYWx1ZSgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEFjdGlvbnMoaGFzUGVybWlzc2lvbjogYm9vbGVhbiwgaW52YWxpZDogYm9vbGVhbik6IEFjdGlvbltdIHtcbiAgcmV0dXJuIGhhc1Blcm1pc3Npb25cbiAgICA/IFt7IGlkOiBBY3Rpb25JZC5FWEVDVVRFX0NPTU1BTkQsIG5hbWU6ICflrp/ooYwnLCBkaXNhYmxlZDogaW52YWxpZCB9XVxuICAgIDogW3sgaWQ6IEFjdGlvbklkLkVYRUNVVEVfQ09NTUFORCwgbmFtZTogJ+Wun+ihjOaoqemZkOOBjOOBguOCiuOBvuOBm+OCkycsIGRpc2FibGVkOiB0cnVlIH1dXG59XG5cbkBUb2tlbml6ZWRUeXBlKClcbkBEaXJlY3RpdmUoeyBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgQ29tbWFuZFBhZ2VTdG9yZSBleHRlbmRzIEluamVjdGFibGVDb21wb25lbnQge1xuICBzdGF0aWMgcmVhZG9ubHkgQWN0aW9uSWQgPSBBY3Rpb25JZDtcbiAgc3RhdGljIHJlYWRvbmx5IERJID0gbWFrZURJKENvbW1hbmRQYWdlU3RvcmUsICgpID0+IHtcbiAgICBjb25zdCBkZXYgPSBpbmplY3QoTWFjaGluYURldlNlcnZpY2UpO1xuICAgIHJldHVybiAoKSA9PiAoe1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgd2lkdGg6ICd2YXIoLS1wYWdlLXdpZHRoLWx2MSknLFxuICAgICAgfSxcbiAgICAgIGJhc2VVcmxzOiBbXSBhcyBzdHJpbmdbXSxcbiAgICAgIGNvbW1hbmQ6IDxDb21tYW5kPntcbiAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgd2ViQXBpUmVxdWVzdDoge1xuICAgICAgICAgIHNlcnZlclVybDogbnVsbCxcbiAgICAgICAgICBhcGlKc29uVXJsOiBudWxsLFxuICAgICAgICAgIHBhdGg6ICcvdXNlcnMnLFxuICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgYm9keVNjaGVtYTogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBuYXZFbmRBY3Rpb25zOiA8QWN0aW9uW10+W10sXG4gICAgICBhZGRpdGlvbmFsRm9ybUZpZWxkTWFwOiA8Rm9ybUZpZWxkTWFwPihkZXYuaXNEZXZNb2RlKCkgPyB7fSA6IHtcbiAgICAgICAgJ2lkJzogeyB0eXBlOiAnaGlkZGVuJyB9LFxuICAgICAgICAnX190eXBlbmFtZSc6IHsgdHlwZTogJ2hpZGRlbicgfSxcbiAgICAgICAgJ2tpbmQnOiB7IHR5cGU6ICdoaWRkZW4nIH0sXG4gICAgICB9KSxcbiAgICB9KTtcbiAgfSwgWydAeHhtYWNoaW5hL2NvbXBvbmVudHMnLCAncGFnZXMnLCAnY29tbWFuZCddKTtcbiAgc3RhdGljIHJlYWRvbmx5IENvbmZpZyA9IENvbW1hbmRQYWdlU3RvcmUuREkuQ29uZmlnO1xuICBzdGF0aWMgcmVhZG9ubHkgSW5pdGlhbGl6ZXIgPSBDb21tYW5kUGFnZVN0b3JlLkRJLkluaXRpYWxpemVyO1xuXG4gIHN0YXRpYyBwcm92aWRlRGVmYXVsdCgpOiBQcm92aWRlcltdIHtcbiAgICByZXR1cm4gW1xuICAgICAgQ29tbWFuZFBhZ2VTdG9yZS5ESS5wcm92aWRlQ29uZmlnKCksXG4gICAgICBDb21tYW5kUGFnZVN0b3JlLnByb3ZpZGVEZWZhdWx0SW5pdGlhbGl6ZXIoKSxcbiAgICAgIENvbW1hbmRQYWdlU3RvcmUucHJvdmlkZURlZmF1bHRFZmZlY3RzKCksXG4gICAgXTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlQ3VzdG9tKCk6IFByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbXG4gICAgICBDb21tYW5kUGFnZVN0b3JlLnByb3ZpZGVEZWZhdWx0KCksXG4gICAgICBDb21tYW5kUGFnZVN0b3JlLnByb3ZpZGVDb21tYW5kSWRGcm9tUm91dGVEYXRhSW5pdGlhbGl6ZXIoKSxcbiAgICAgIENvbW1hbmRQYWdlU3RvcmUucHJvdmlkZVNldHVwSW5pdGlhbGl6ZVF1ZXJ5SW5pdGlhbGl6ZXIoKSxcbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVEZWZhdWx0VjIoKTogUHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIENvbW1hbmRQYWdlU3RvcmUuQ29uZmlnLnByb3ZpZGUoKSxcbiAgICAgIENvbW1hbmRQYWdlU3RvcmUucHJvdmlkZURlZmF1bHRJbml0aWFsaXplcigpLFxuICAgICAgQ29tbWFuZFBhZ2VTdG9yZS5wcm92aWRlRGVmYXVsdEVmZmVjdHMoKSxcbiAgICAgIENvbW1hbmRQYWdlU3RvcmUucHJvdmlkZUNvbW1hbmRJZEZyb21Sb3V0ZURhdGFJbml0aWFsaXplcigpLFxuICAgICAgQ29tbWFuZFBhZ2VTdG9yZS5wcm92aWRlU2V0dXBJbml0aWFsaXplUXVlcnlJbml0aWFsaXplcigpLFxuICAgICAgQ29tbWFuZFBhZ2VTdG9yZS5wcm92aWRlSW5pdGlhbEZvcm1WYWx1ZUZyb21RdWVyeVJlc3VsdCgpLFxuICAgICAgQ29tbWFuZFBhZ2VTdG9yZS5wcm92aWRlUXVlcnlGcm9tUm91dGVEYXRhKCksXG4gICAgXTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlRGVmYXVsdEluaXRpYWxpemVyKCk6IFByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbXG4gICAgICBDb21tYW5kUGFnZVN0b3JlLnByb3ZpZGVQYXRjaEZvcm1Gcm9tUm91dGVQYXJhbUluaXRpYWxpemVyKCksXG4gICAgICBDb21tYW5kUGFnZVN0b3JlLnByb3ZpZGVQYXRjaENvbW1hbmRGb3JtVmFsdWVGcm9tQ29tbWFuZEluaXRpYWxpemVyKCksXG4gICAgICBDb21tYW5kUGFnZVN0b3JlLnByb3ZpZGVJbml0aWFsRm9ybVZhbHVlRnJvbVF1ZXJ5UmVzdWx0KClcbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVEZWZhdWx0RWZmZWN0cygpOiBQcm92aWRlcltdIHtcbiAgICByZXR1cm4gW1xuICAgICAgQ29tbWFuZFBhZ2VTdG9yZS5wcm92aWRlRXhlY3V0ZUNvbW1hbmRFZmZlY3QoKSxcbiAgICAgIENvbW1hbmRQYWdlU3RvcmUucHJvdmlkZUJhY2tFZmZlY3QoKSxcbiAgICAgIFF1ZXJ5RmVhdHVyZS5wcm92aWRlRGVmYXVsdEVmZmVjdHMoKSxcbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVDb21tYW5kRnJvbVJvdXRlUGFyYW1Jbml0aWFsaXplcihwYXJhbU5hbWUgPSAnY29tbWFuZElkJyk6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4gQ29tbWFuZFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgY29uc3QgY29tbWFuZElkID0gaW5qZWN0Um91dGVQYXJhbShwYXJhbU5hbWUpO1xuICAgICAgY29uc3Qgc2VydmljZSA9IGluamVjdChDb21tYW5kU2VydmljZSk7XG4gICAgICBlZmZlY3QoKCkgPT4gYXBwbHlUb0lucHV0KHN0b3JlLCAnY29tbWFuZCcsIHNlcnZpY2UuZ2V0Q29tbWFuZChjb21tYW5kSWQoKSkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlQ29tbWFuZElkRnJvbVJvdXRlRGF0YUluaXRpYWxpemVyKCk6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4gQ29tbWFuZFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgY29uc3QgY29tbWFuZElkID0gaW5qZWN0Um91dGVEYXRhPHN0cmluZz4oJ2NvbW1hbmRJZCcpO1xuICAgICAgY29uc3Qgc2VydmljZSA9IGluamVjdChDb21tYW5kU2VydmljZSk7XG4gICAgICBlZmZlY3QoKCkgPT4gYXBwbHlUb0lucHV0KHN0b3JlLCAnY29tbWFuZCcsIHNlcnZpY2UuZ2V0Q29tbWFuZChjb21tYW5kSWQoKSkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlUGF0Y2hGb3JtRnJvbVJvdXRlUGFyYW1Jbml0aWFsaXplcigpIHtcbiAgICByZXR1cm4gW1xuICAgICAgQ29tbWFuZFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKHN0b3JlID0+IHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHN0b3JlLmZvcm0oKS5wYXRjaFZhbHVlKHN0b3JlLmRhdGEoKSkpO1xuICAgICAgfSksXG4gICAgXVxuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVQYXRjaENvbW1hbmRGb3JtVmFsdWVGcm9tQ29tbWFuZEluaXRpYWxpemVyKCkge1xuICAgIHJldHVybiBbXG4gICAgICBDb21tYW5kUGFnZVN0b3JlLkluaXRpYWxpemVyLnByb3ZpZGUoc3RvcmUgPT4ge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgIGlmICghc3RvcmUuY29tbWFuZCgpKSByZXR1cm47XG4gICAgICAgICAgc3RvcmUuZmVhdHVyZS5jb21tYW5kRm9ybSgpLnBhdGNoVmFsdWUoeyAuLi5zdG9yZS5jb21tYW5kKCkgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVRdWVyeUlkRnJvbVJvdXRlUGFyYW0oa2V5ID0gJ3F1ZXJ5SWQnKTogUHJvdmlkZXIge1xuICAgIHJldHVybiBDb21tYW5kUGFnZVN0b3JlLkluaXRpYWxpemVyLnByb3ZpZGUoKHN0b3JlKSA9PiB7XG4gICAgICBjb25zdCBxdWVyeUlkJCA9IGluamVjdFJvdXRlUGFyYW0kKGtleSk7XG4gICAgICBjb25zdCBwYXJhbXMkID0gaW5qZWN0VW5mbGF0dGVuUm91dGVQYXJhbSQoJ2RhdGEnKTtcbiAgICAgIGNvbnN0IHF1ZXJ5JCA9IGluamVjdE9uZSQoUXVlcnksIHsgaWQ6IHF1ZXJ5SWQkIH0pO1xuICAgICAgY29uc3Qgc2V0dXBRdWVyeSA9IGRlcml2ZWRBc3luYygoKSA9PiBjb21iaW5lTGF0ZXN0KHtcbiAgICAgICAgcXVlcnk6IHF1ZXJ5JCxcbiAgICAgICAgcGFyYW1zOiBwYXJhbXMkLFxuICAgICAgfSkucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IHF1ZXJ5LCBwYXJhbXMgfSkgPT4gISFxdWVyeSAmJiAhIXBhcmFtcyksXG4gICAgICAgIG1hcCgoeyBxdWVyeSwgcGFyYW1zIH0pID0+IFF1ZXJ5SGVscGVyLnNldHVwKHF1ZXJ5LCBwYXJhbXMpKSxcbiAgICAgICAgdGFwKChxdWVyeSkgPT4gY29uc29sZS5kZWJ1ZygnW0NvbW1hbmRQYWdlXSBxdWVyeTonLCBxdWVyeSkpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICAgICkpO1xuICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc29sZS5kZWJ1ZygnW0NvbW1hbmRQYWdlXSBzZXR1cFF1ZXJ5OicsIHNldHVwUXVlcnkoKSk7XG4gICAgICAgIHN0b3JlLnF1ZXJ5RmVhdHVyZS5mb3JtLnBhdGNoVmFsdWUoc2V0dXBRdWVyeSgpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVRdWVyeUZyb21Sb3V0ZURhdGEoa2V5ID0gJ3F1ZXJ5Jyk6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4gQ29tbWFuZFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1zJCA9IGluamVjdFVuZmxhdHRlblJvdXRlUGFyYW0kKCdkYXRhJyk7XG4gICAgICBjb25zdCBxdWVyeSQgPSBpbmplY3RSb3V0ZURhdGEkPFF1ZXJ5PihrZXkpO1xuICAgICAgY29uc3Qgc2V0dXBRdWVyeSA9IGRlcml2ZWRBc3luYygoKSA9PiBjb21iaW5lTGF0ZXN0KHtcbiAgICAgICAgcXVlcnk6IHF1ZXJ5JCxcbiAgICAgICAgcGFyYW1zOiBwYXJhbXMkLFxuICAgICAgfSkucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IHF1ZXJ5LCBwYXJhbXMgfSkgPT4gISFxdWVyeSksXG4gICAgICAgIG1hcCgoeyBxdWVyeSwgcGFyYW1zIH0pID0+IFF1ZXJ5SGVscGVyLnNldHVwKHF1ZXJ5LCBwYXJhbXMpKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSksXG4gICAgICApKTtcbiAgICAgIGVmZmVjdCgoKSA9PiB7IHN0b3JlLnF1ZXJ5RmVhdHVyZS5mb3JtLnBhdGNoVmFsdWUoc2V0dXBRdWVyeSgpKTsgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZVJvdXRlUGFyYW1zVG9EYXRhSW5pdGlhbGl6ZXIocHJvamVjdG9yOiAocGFyYW1zOiBQYXJhbXMpID0+IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm92aWRlcltdIHtcbiAgICByZXR1cm4gQ29tbWFuZFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgY29uc3Qgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICAgICAgY29uc3QgZGF0YSA9IGRlcml2ZWRBc3luYygoKSA9PiByb3V0ZS5wYXJhbXMucGlwZShtYXAocGFyYW1zID0+IHByb2plY3RvcihwYXJhbXMpKSkpO1xuICAgICAgZWZmZWN0KCgpID0+IGFwcGx5VG9JbnB1dChzdG9yZSwgJ2RhdGEnLCBkYXRhKCkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlUm91dGVQYXJhbU1hcFRvRGF0YUluaXRpYWxpemVyKHByb2plY3RvcjogKHBhcmFtczogUGFyYW1NYXApID0+IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm92aWRlcltdIHtcbiAgICByZXR1cm4gQ29tbWFuZFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1NYXAgPSBpbmplY3RSb3V0ZVBhcmFtTWFwKHttZXJnZTogdHJ1ZX0pO1xuICAgICAgY29uc3QgZGF0YSA9IGNvbXB1dGVkKCgpID0+IHByb2plY3RvcihwYXJhbU1hcCgpKSk7XG4gICAgICBlZmZlY3QoKCkgPT4gYXBwbHlUb0lucHV0KHN0b3JlLCAnZGF0YScsIGRhdGEoKSkpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVTZXR1cEluaXRpYWxpemVRdWVyeUluaXRpYWxpemVyKCk6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4gQ29tbWFuZFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgY29uc3QgaW5pdGlhbGl6ZVF1ZXJ5ID0gZGVyaXZlZEFzeW5jKCgpID0+IGNvbWJpbmVMYXRlc3Qoe1xuICAgICAgICBpbml0aWFsaXplUXVlcnk6IG9mKHN0b3JlLmluaXRpYWxpemVRdWVyeSgpKSxcbiAgICAgICAgZGF0YTogb2Yoc3RvcmUuZGF0YSgpKVxuICAgICAgfSkucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IGluaXRpYWxpemVRdWVyeSwgZGF0YSB9KSA9PiAhIWluaXRpYWxpemVRdWVyeSAmJiAhIWRhdGEpLFxuICAgICAgICBtYXAoKHsgaW5pdGlhbGl6ZVF1ZXJ5LCBkYXRhIH0pID0+IFF1ZXJ5SGVscGVyLnNldHVwKGluaXRpYWxpemVRdWVyeSwgZGF0YSkpLFxuICAgICAgICBmaWx0ZXIoKGluaXRpYWxpemVRdWVyeSkgPT4gISFpbml0aWFsaXplUXVlcnkpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICAgICkpO1xuICAgICAgXG4gICAgICBlZmZlY3QoKCkgPT4gc3RvcmUucXVlcnlGZWF0dXJlLmZvcm0ucGF0Y2hWYWx1ZShpbml0aWFsaXplUXVlcnkoKSkpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVJbml0aWFsRm9ybVZhbHVlRnJvbVF1ZXJ5UmVzdWx0KCk6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4gQ29tbWFuZFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgZWZmZWN0KCgpID0+IHN0b3JlLmZvcm0oKS5wYXRjaFZhbHVlKHN0b3JlLnF1ZXJ5RmVhdHVyZS5yZXN1bHQoKSkpO1xuICAgICAgc3RvcmUucXVlcnlGZWF0dXJlLnJlZnJlc2goKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlRXhlY3V0ZUNvbW1hbmRFZmZlY3QoKTogUHJvdmlkZXIge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KEFjdGlvbklkLkVYRUNVVEVfQ09NTUFORCwgKCkgPT4ge1xuICAgICAgY29uc3Qgc3RvcmUgPSBpbmplY3QoQ29tbWFuZFBhZ2VTdG9yZSk7XG4gICAgICBjb25zdCBhcHAgPSBpbmplY3QoQXBwU2VydmljZSk7XG4gICAgICBjb25zdCBwYXJhbUtleXMgPSBjb21wdXRlZCgoKSA9PiBFbmRwb2ludEhlbHBlci5leHRyYWN0KHN0b3JlLmZlYXR1cmUucGF0aCgpKSk7XG4gICAgICBjb25zdCByZXNvbHZlZFBhcmFtcyA9IGNvbXB1dGVkKCgpID0+IHBpY2soc3RvcmUuZGF0YSgpLCBwYXJhbUtleXMoKSkpO1xuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjb25zdCByZXNvbHZlZEVuZHBvaW50ID0gRW5kcG9pbnRIZWxwZXIucmVzb2x2ZShzdG9yZS5mZWF0dXJlLnBhdGgoKSwgcmVzb2x2ZWRQYXJhbXMoKSk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBidWlsZERhdGEoc3RvcmUuZm9ybSgpLCBzdG9yZS5jb21tYW5kKCk/LndlYkFwaVJlcXVlc3Q/LmNvbnRlbnRUeXBlKTtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9IG1lcmdlKFxuICAgICAgICAgIHN0b3JlLmNvbW1hbmQoKSxcbiAgICAgICAgICBzdG9yZS5mZWF0dXJlLmNvbW1hbmRGb3JtKCkuZ2V0UmF3VmFsdWUoKSxcbiAgICAgICAgICB7IHdlYkFwaVJlcXVlc3Q6IHsgcGF0aDogcmVzb2x2ZWRFbmRwb2ludCB9IH0sXG4gICAgICAgICk7XG4gICAgICAgIGFwcC5sb2FkaW5nLmF3YWl0KCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gc3RvcmUuZmVhdHVyZS5leGVjdXRlKGNvbW1hbmQsIGRhdGEpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgYXBwLnNuYWNrQmFyLm9wZW4oJ+aIkOWKn+OBl+OBvuOBl+OBn+OAgicpO1xuICAgICAgICAgICAgLy8gaGlzdG9yeS5iYWNrKCk7XG4gICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIGFwcC5zbmFja0Jhci5vcGVuRXJyb3IoZXJyb3IpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlQmFja0VmZmVjdCgpOiBQcm92aWRlciB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoRm9ybVRlbXBsYXRlU3RvcmUuQWN0aW9uSWQuQkFDSywgKCkgPT4ge1xuICAgICAgcmV0dXJuICgpID0+IGhpc3RvcnkuYmFjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVGaWxlU2VsZWN0ZWRFZmZlY3QoKTogUHJvdmlkZXIge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KENvbW1hbmRQYWdlU3RvcmUuQWN0aW9uSWQuRklMRV9TRUxFQ1RFRCwgKCkgPT4ge1xuICAgICAgY29uc3Qgc3RvcmUgPSBpbmplY3QoQ29tbWFuZFBhZ2VTdG9yZSk7XG4gICAgICByZXR1cm4gKHBheWxvYWQpID0+IHtcbiAgICAgICAgc3RvcmUuZm9ybSgpLnBhdGNoVmFsdWUoeyBmaWxlOiBwYXlsb2FkLmZpbGVzPy5bMF0gfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlRGVidWdGb3JtSW5pdGlhbGl6ZXIoKTogUHJvdmlkZXIge1xuICAgIHJldHVybiBDb21tYW5kUGFnZVN0b3JlLkluaXRpYWxpemVyLnByb3ZpZGUoKCkgPT4ge1xuICAgICAgY29uc3Qgc3RvcmUgPSBpbmplY3QoQ29tbWFuZFBhZ2VTdG9yZSk7XG4gICAgICBcbiAgICAgIC8vIEZvcm1Hcm91cOOCkuWGjeW4sOeahOOBq+iqv+OBueOCi+mWouaVsO+8iGludmFsaWTjgarjgrPjg7Pjg4jjg63jg7zjg6vjga7jgb/vvIlcbiAgICAgIGNvbnN0IGdldEludmFsaWRDb250cm9scyA9IChmb3JtR3JvdXA6IGFueSwgcGF0aCA9ICcnKSA9PiB7XG4gICAgICAgIGxldCBpbnZhbGlkQ29udHJvbHM6IGFueVtdID0gW107XG4gICAgICAgIFxuICAgICAgICBPYmplY3Qua2V5cyhmb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmNvbnRyb2xzW2tleV07XG4gICAgICAgICAgY29uc3QgY3VycmVudFBhdGggPSBwYXRoID8gYCR7cGF0aH0uJHtrZXl9YCA6IGtleTtcbiAgICAgICAgICBcbiAgICAgICAgICAvLyBpbnZhbGlk44Gq44Kz44Oz44OI44Ot44O844Or44KS6KiY6YyyXG4gICAgICAgICAgaWYgKGNvbnRyb2wuaW52YWxpZCkge1xuICAgICAgICAgICAgaW52YWxpZENvbnRyb2xzLnB1c2goe1xuICAgICAgICAgICAgICBwYXRoOiBjdXJyZW50UGF0aCxcbiAgICAgICAgICAgICAgZXJyb3JzOiBjb250cm9sLmVycm9ycyxcbiAgICAgICAgICAgICAgdmFsdWU6IGNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICAgIHN0YXR1czogY29udHJvbC5zdGF0dXMsXG4gICAgICAgICAgICAgIHZhbGlkOiBjb250cm9sLnZhbGlkLFxuICAgICAgICAgICAgICBpbnZhbGlkOiBjb250cm9sLmludmFsaWQsXG4gICAgICAgICAgICAgIGRpcnR5OiBjb250cm9sLmRpcnR5LFxuICAgICAgICAgICAgICB0b3VjaGVkOiBjb250cm9sLnRvdWNoZWRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICAvLyBGb3JtR3JvdXDjga7loLTlkIjjga/lho3luLDnmoTjgavoqr/jgbnjgotcbiAgICAgICAgICBpZiAoY29udHJvbC5jb250cm9scykge1xuICAgICAgICAgICAgaW52YWxpZENvbnRyb2xzID0gaW52YWxpZENvbnRyb2xzLmNvbmNhdChnZXRJbnZhbGlkQ29udHJvbHMoY29udHJvbCwgY3VycmVudFBhdGgpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIGludmFsaWRDb250cm9scztcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGZvcm1WYWx1ZV8gPSBkZXJpdmVkQXN5bmMoKCkgPT4gZ2V0VmFsdWUkKHN0b3JlLmZvcm0oKSkpO1xuICAgICAgXG4gICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSBmb3JtVmFsdWVfKCk7XG4gICAgICAgIGNvbnN0IGZvcm0gPSB1bnRyYWNrZWQoKCkgPT4gc3RvcmUuZm9ybSgpKTtcbiAgICAgICAgY29uc29sZS5sb2coJ1tDb21tYW5kUGFnZV0gRm9ybSB2YWx1ZSBjaGFuZ2VkOicsIGZvcm1WYWx1ZSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdbQ29tbWFuZFBhZ2VdIENvbW1hbmRGb3JtIHZhbGlkOicsIGZvcm0/LnZhbGlkKTtcbiAgICAgICAgY29uc29sZS5sb2coJ1tDb21tYW5kUGFnZV0gQ29tbWFuZEZvcm0gc3RhdHVzOicsIGZvcm0/LnN0YXR1cyk7XG4gICAgICAgIGlmIChmb3JtKSB7XG4gICAgICAgICAgY29uc3QgaW52YWxpZENvbnRyb2xzID0gZ2V0SW52YWxpZENvbnRyb2xzKGZvcm0pO1xuICAgICAgICAgIGNvbnN0IGludmFsaWRQYXRocyA9IGludmFsaWRDb250cm9scy5tYXAoY29udHJvbCA9PiBjb250cm9sLnBhdGgpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBbQ29tbWFuZFBhZ2VdIEZvdW5kICR7aW52YWxpZENvbnRyb2xzLmxlbmd0aH0gSU5WQUxJRCBjb250cm9sczpgKTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnW0NvbW1hbmRQYWdlXSBJTlZBTElEIFBBVEhTOicsIGludmFsaWRQYXRocyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVTZWxlY3RlZEZpbGVVcGxvYWRFZmZlY3QoXG4gICAgY2FsbGJhY2tGYWN0b3J5OiAoKSA9PiAocmVzdWx0OiB7ZmlsZTogRmlsZSwgcGF0aDogc3RyaW5nLCB1cmw6IHN0cmluZ30pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+LFxuICAgIHtcbiAgICAgIHZhbGlkYXRvciA9ICgpID0+IG51bGwsXG4gICAgICBnZXRQYXRoLFxuICAgIH06IHtcbiAgICAgIHZhbGlkYXRvcj86IChmaWxlOiBGaWxlKSA9PiB7dHlwZTogYm9vbGVhbiwgc2l6ZTogYm9vbGVhbn0gfCBudWxsLFxuICAgICAgZ2V0UGF0aDogKCkgPT4gc3RyaW5nLFxuICAgIH1cbiAgKTogUHJvdmlkZXIge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KENvbW1hbmRQYWdlU3RvcmUuQWN0aW9uSWQuRklMRV9TRUxFQ1RFRCwgKCkgPT4ge1xuICAgICAgY29uc3Qgc3RvcmFnZSA9IGluamVjdChDbG91ZFN0b3JhZ2VTZXJ2aWNlKTtcbiAgICAgIGNvbnN0IGFwcCA9IGluamVjdChBcHBTZXJ2aWNlKTtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gY2FsbGJhY2tGYWN0b3J5KCk7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2VSZXNvbHZlciA9IGluamVjdEVycm9yTWVzc2FnZVJlc29sdmVyKCk7XG4gIFxuICAgICAgcmV0dXJuIChwYXlsb2FkOiB7IHNjb3BlOiBzdHJpbmcsIGZpbGVzOiBGaWxlW119KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGUgPSBwYXlsb2FkLmZpbGVzPy5bMF07XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRvcihmaWxlKTtcbiAgICAgICAgaWYgKGVycm9ycyAmJiBPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBhcHAuc25hY2tCYXIub3BlbihlcnJvck1lc3NhZ2VSZXNvbHZlcihlcnJvcnMpKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFwcC5sb2FkaW5nLmF3YWl0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBwYXRoID0gZ2V0UGF0aCgpO1xuICAgICAgICAgIHJldHVybiBzdG9yYWdlLnVwbG9hZChwYXRoLCBmaWxlKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGFwcC5zbmFja0Jhci5vcGVuKCfjg5XjgqHjgqTjg6vjgpLjgqLjg4Pjg5fjg63jg7zjg4njgZfjgb7jgZfjgZ8nKTtcbiAgICAgICAgICAgIHJldHVybiBzdG9yYWdlLmdldERvd25sb2FkVXJsKHBhdGgpLnRoZW4oKGltYWdlVXJsKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayh7ZmlsZSwgcGF0aCwgdXJsOiBpbWFnZVVybH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIGFwcC5zbmFja0Jhci5vcGVuKCfjg5XjgqHjgqTjg6vjga7jgqLjg4Pjg5fjg63jg7zjg4njgavlpLHmlZfjgZfjgb7jgZfjgZ8nKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZWFkb25seSBmZWF0dXJlID0gaW5qZWN0KENvbW1hbmRGZWF0dXJlKTtcbiAgcmVhZG9ubHkgY29uZmlnID0gQ29tbWFuZFBhZ2VTdG9yZS5Db25maWcuaW5qZWN0KCk7XG4gIHJlYWRvbmx5IHF1ZXJ5RmVhdHVyZSA9IGluamVjdChRdWVyeUZlYXR1cmUpO1xuICByZWFkb25seSBzdHlsZSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnN0eWxlKSk7XG4gIHJlYWRvbmx5ICNuYXZTdGFydEFjdGlvbnMgPSBpbmplY3ROYXZTdGFydEFjdGlvbnNWMigpO1xuICByZWFkb25seSBuYXZTdGFydEFjdGlvbnMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy4jbmF2U3RhcnRBY3Rpb25zKCkpKTtcbiAgcmVhZG9ubHkgbmF2RW5kQWN0aW9ucyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLm5hdkVuZEFjdGlvbnMpKTtcbiAgcmVhZG9ubHkgY29tbWFuZCA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmNvbW1hbmQpKTtcbiAgcmVhZG9ubHkgZm9ybSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmZlYXR1cmUuZm9ybSgpKSk7XG4gIHJlYWRvbmx5IGV4dHJhY3RlZEZvcm1GaWVsZE1hcCA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmZlYXR1cmUuZXh0cmFjdGVkRm9ybUZpZWxkTWFwKCkpKTtcbiAgcmVhZG9ubHkgYWRkaXRpb25hbEZvcm1GaWVsZE1hcCA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmFkZGl0aW9uYWxGb3JtRmllbGRNYXApKTtcbiAgcmVhZG9ubHkgZm9ybUZpZWxkTWFwID0gaW5wdXQoX2NvbXB1dGVkPEZvcm1GaWVsZE1hcD4oKCkgPT4gKHtcbiAgICAuLi50aGlzLmV4dHJhY3RlZEZvcm1GaWVsZE1hcCgpLFxuICAgIC4uLnRoaXMuYWRkaXRpb25hbEZvcm1GaWVsZE1hcCgpXG4gIH0pKSk7XG4gIHJlYWRvbmx5IGZvcm1GaWVsZEtleXMgPSBpbnB1dDxzdHJpbmdbXT4oX2NvbXB1dGVkKCgpID0+IFtdKSk7XG4gIHJlYWRvbmx5IGZvcm1GbGF0RXhjbHVkZXMgPSBpbnB1dDxzdHJpbmdbXT4oX2NvbXB1dGVkKCgpID0+IFtdKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfaW5pdGlhbGl6ZVF1ZXJ5ID0gaW5qZWN0Um91dGVEYXRhPFF1ZXJ5PigncXVlcnknKTtcbiAgcmVhZG9ubHkgaW5pdGlhbGl6ZVF1ZXJ5ID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuX2luaXRpYWxpemVRdWVyeSgpKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfZGF0YSA9IGluamVjdFVuZmxhdHRlblJvdXRlUGFyYW0oJ2RhdGEnKTtcbiAgcmVhZG9ubHkgZGF0YSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLl9kYXRhKCkpKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvcm1JbnZhbGlkID0gZGVyaXZlZEFzeW5jKCgpID0+IGdldEludmFsaWQkKHRoaXMuZm9ybSgpKSk7XG4gIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuZmVhdHVyZS50aXRsZSgpKSk7XG4gIHJlYWRvbmx5IGFjdGlvbnMgPSBkZXJpdmVkQXN5bmMoKCkgPT4gYnVpbGRBY3Rpb25zKHRoaXMuZmVhdHVyZS5oYXNQZXJtaXNzaW9uKHRoaXMuY29tbWFuZCgpKSwgdGhpcy5mb3JtSW52YWxpZCgpKSk7XG4gIHJlYWRvbmx5IHNraXAgPSBpbmplY3RSb3V0ZVNraXAoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIENvbW1hbmRQYWdlU3RvcmUuSW5pdGlhbGl6ZXIuaW5pdGlhbGl6ZVN0b3JlKHRoaXMpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BhZ2VzLWNvbW1hbmQnLFxuICBpbXBvcnRzOiBbXG4gICAgUm91dGVyT3V0bGV0RnJhbWUsXG4gICAgRm9ybVRlbXBsYXRlLFxuICAgIFRhYnNGcmFtZSxcbiAgICBDb21tYW5kRm9ybUdyb3VwLFxuICAgIFF1ZXJ5Rm9ybUdyb3VwXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIENvbW1hbmRGZWF0dXJlLFxuICAgIFF1ZXJ5RmVhdHVyZSxcbiAgICBRdWVyeUdyYXBocWxTY2hlbWFGZWF0dXJlXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gIDxmcmFtZXMtcm91dGVyLW91dGxldCBbc2tpcF09XCJzdG9yZS5za2lwKClcIiAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIj5cbiAgICA8dGVtcGxhdGVzLWZvcm1cbiAgICAgIFtmb3JtXT1cInN0b3JlLmZvcm0oKVwiXG4gICAgICBbc3R5bGVdPVwic3RvcmUuc3R5bGUoKVwiXG4gICAgICBbZmllbGRNYXBdPVwic3RvcmUuZm9ybUZpZWxkTWFwKClcIlxuICAgICAgW2ZpZWxkS2V5c109XCJzdG9yZS5mb3JtRmllbGRLZXlzKClcIlxuICAgICAgW2Zvcm1GbGF0RXhjbHVkZXNdPVwic3RvcmUuZm9ybUZsYXRFeGNsdWRlcygpXCJcbiAgICAgIFt0aXRsZV09XCJzdG9yZS50aXRsZSgpXCJcbiAgICAgIFtuYXZTdGFydEFjdGlvbnNdPVwic3RvcmUubmF2U3RhcnRBY3Rpb25zKClcIlxuICAgICAgW25hdkVuZEFjdGlvbnNdPVwic3RvcmUubmF2RW5kQWN0aW9ucygpXCJcbiAgICAgIFthY3Rpb25zXT1cInN0b3JlLmFjdGlvbnMoKVwiXG4gICAgICAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIlxuICAgID5cbiAgICAgIDxmcmFtZXMtdGFicyBbbGFiZWxzXT1cIlsnQ29tbWFuZCcsICdJbml0aWFsaXplUXVlcnknXVwiIGRhc2hib2FyZD5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN0YWI+XG4gICAgICAgICAgPGdyb3Vwcy1jb21tYW5kLWZvcm0gKGFjdGlvbik9XCJkaXNwYXRjaCgkZXZlbnQpXCIvPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RhYj5cbiAgICAgICAgICA8Z3JvdXBzLXF1ZXJ5LWZvcm1cbiAgICAgICAgICAgIFtmb3JtXT1cInN0b3JlLnF1ZXJ5RmVhdHVyZS5mb3JtXCJcbiAgICAgICAgICAgIChhY3Rpb24pPVwiZGlzcGF0Y2goJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZnJhbWVzLXRhYnM+IFxuICAgIDwvdGVtcGxhdGVzLWZvcm0+XG4gIDwvZnJhbWVzLXJvdXRlci1vdXRsZXQ+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2NvbW1hbmQucGFnZS5zY3NzJ10sXG4gIGhvc3REaXJlY3RpdmVzOiBbXG4gICAge1xuICAgICAgZGlyZWN0aXZlOiBDb21tYW5kUGFnZVN0b3JlLFxuICAgICAgaW5wdXRzOiBbXG4gICAgICAgICdzdHlsZScsXG4gICAgICAgICduYXZFbmRBY3Rpb25zJyxcbiAgICAgICAgJ2NvbW1hbmQnLFxuICAgICAgICAnZm9ybScsXG4gICAgICAgICdhZGRpdGlvbmFsRm9ybUZpZWxkTWFwJyxcbiAgICAgICAgJ2Zvcm1GaWVsZE1hcCcsXG4gICAgICAgICdmb3JtRmxhdEV4Y2x1ZGVzJyxcbiAgICAgICAgJ2luaXRpYWxpemVRdWVyeScsXG4gICAgICAgICdkYXRhJyxcbiAgICAgIF1cbiAgICB9LFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENvbW1hbmRQYWdlIGV4dGVuZHMgTmdBdG9taWNDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RvcmUgPSBpbmplY3QoQ29tbWFuZFBhZ2VTdG9yZSk7XG4gIHJlYWRvbmx5IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcmVhZG9ubHkgYXBwID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICByZWFkb25seSBwYXJlbnRSb3V0ZXJPdXRsZXRGcmFtZSA9IGluamVjdChSb3V0ZXJPdXRsZXRGcmFtZSwge29wdGlvbmFsOiB0cnVlfSk7XG5cbiAgQEVmZmVjdChGb3JtVGVtcGxhdGVTdG9yZS5BY3Rpb25JZC5GSUxFX1NFTEVDVEVEKVxuICBwcm90ZWN0ZWQgb25GaWxlU2VsZWN0ZWQocGF5bG9hZCkge1xuICAgIHRoaXMuZGlzcGF0Y2goeyBpZDogQWN0aW9uSWQuRklMRV9TRUxFQ1RFRCwgcGF5bG9hZCB9KTtcbiAgfVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHhtYWNoaW5hLWNvbXBvbmVudHMtcGFnZXMtY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0B4eG1hY2hpbmEvY29tcG9uZW50cy9zcmMvbGliL3BhZ2VzL2NvbW1hbmQveHhtYWNoaW5hLWNvbXBvbmVudHMtcGFnZXMtY29tbWFuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xxmachina-components-pages-command.mjs","sources":["../tmp-esm2022/pages/command/command.page.js","../tmp-esm2022/pages/command/xxmachina-components-pages-command.js"],"sourcesContent":["var CommandPageStore_1;\nimport { __decorate, __metadata } from \"tslib\";\nimport { Component, computed, Directive, effect, inject, input, untracked } from '@angular/core';\nimport { FormArray, FormControl, FormGroup } from '@angular/forms';\nimport { RouterOutletFrame } from '@ng-atomic/components/frames/router-outlet';\nimport { CommandService } from '@xxmachina/components/services/command';\nimport { _computed, applyToInput, Effect, InjectableComponent, NgAtomicComponent, provideEffect, TokenizedType } from '@ng-atomic/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { FormTemplate, FormTemplateStore } from '@ng-atomic/components/templates/form';\nimport { getInvalid$, getValue$, injectRouteData, injectRouteData$, injectRouteParam, injectRouteParam$, injectRouteParamMap, injectRouteSkip, injectUnflattenRouteParam$ } from '@ng-atomic/common/utils';\nimport { map, tap, filter, combineLatest, shareReplay, of } from 'rxjs';\nimport { AppService } from '@ng-atomic/common/services/app';\nimport { injectNavStartActionsV2, makeDI } from '@ng-atomic/common/services/ui';\nimport { Query, QueryHelper } from '@xxmachina/common/domain/models';\nimport { injectUnflattenRouteParam } from '@ng-atomic/common/utils';\nimport { merge, pick } from 'lodash-es';\nimport { injectOne$ } from '@ng-atomic/common/stores/entities';\nimport { MachinaDevService } from '@xxmachina/components/services/debug';\nimport { EndpointHelper } from '@xxmachina/common/domain/models';\nimport { derivedAsync } from 'ngxtension/derived-async';\nimport { CommandFeature } from '@xxmachina/components/features/command';\nimport { TabsFrame } from '@ng-atomic/components/frames/tabs';\nimport { QueryFormGroup } from '@xxmachina/components/groups/query-form';\nimport { CommandFormGroup } from '@xxmachina/components/groups/command-form';\nimport { QueryFeature, QueryGraphqlSchemaFeature } from '@xxmachina/components/features/query';\nimport { CloudStorageService } from '@nx-ddd/common/infrastructure/externals/cloud-storage';\nimport { injectErrorMessageResolver } from '@ng-atomic/common/pipes/error';\nimport * as i0 from \"@angular/core\";\nvar ActionId;\n(function (ActionId) {\n ActionId[\"EXECUTE_COMMAND\"] = \"execute-command\";\n ActionId[\"FILE_SELECTED\"] = \"file-selected\";\n})(ActionId || (ActionId = {}));\nfunction buildFormData(form, formData = new FormData(), parentKey = '') {\n Object.keys(form.controls).forEach(key => {\n const control = form.get(key);\n const formKey = parentKey ? `${parentKey}.${key}` : key;\n if (control instanceof FormGroup || control instanceof FormArray) {\n // 子のFormGroupやFormArrayを再帰的に処理\n buildFormData(control, formData, formKey);\n }\n else if (control instanceof FormControl) {\n // フォームの値を追加\n const value = control.value;\n if (value !== null && value !== undefined) {\n formData.append(formKey, value);\n }\n }\n });\n return formData;\n}\nfunction buildData(form, contentType) {\n if (contentType === 'multipart/form-data') {\n return buildFormData(form);\n }\n else {\n return form.getRawValue();\n }\n}\nexport function buildActions(hasPermission, invalid) {\n return hasPermission\n ? [{ id: ActionId.EXECUTE_COMMAND, name: '実行', disabled: invalid }]\n : [{ id: ActionId.EXECUTE_COMMAND, name: '実行権限がありません', disabled: true }];\n}\nlet CommandPageStore = class CommandPageStore extends InjectableComponent {\n static { CommandPageStore_1 = this; }\n static { this.ActionId = ActionId; }\n static { this.DI = makeDI(CommandPageStore_1, () => {\n const dev = inject(MachinaDevService);\n return () => ({\n style: {\n width: 'var(--page-width-lv1)',\n },\n baseUrls: [],\n command: {\n id: '1',\n webApiRequest: {\n serverUrl: null,\n apiJsonUrl: null,\n path: '/users',\n method: 'GET',\n bodySchema: null,\n },\n },\n navEndActions: [],\n additionalFormFieldMap: (dev.isDevMode() ? {} : {\n 'id': { type: 'hidden' },\n '__typename': { type: 'hidden' },\n 'kind': { type: 'hidden' },\n }),\n });\n }, ['@xxmachina/components', 'pages', 'command']); }\n static { this.Config = CommandPageStore_1.DI.Config; }\n static { this.Initializer = CommandPageStore_1.DI.Initializer; }\n static provideDefault() {\n return [\n CommandPageStore_1.DI.provideConfig(),\n CommandPageStore_1.provideDefaultInitializer(),\n CommandPageStore_1.provideDefaultEffects(),\n ];\n }\n static provideCustom() {\n return [\n CommandPageStore_1.provideDefault(),\n CommandPageStore_1.provideCommandIdFromRouteDataInitializer(),\n CommandPageStore_1.provideSetupInitializeQueryInitializer(),\n ];\n }\n static provideDefaultV2() {\n return [\n CommandPageStore_1.Config.provide(),\n CommandPageStore_1.provideDefaultInitializer(),\n CommandPageStore_1.provideDefaultEffects(),\n CommandPageStore_1.provideCommandIdFromRouteDataInitializer(),\n CommandPageStore_1.provideSetupInitializeQueryInitializer(),\n CommandPageStore_1.provideInitialFormValueFromQueryResult(),\n CommandPageStore_1.provideQueryFromRouteData(),\n ];\n }\n static provideDefaultInitializer() {\n return [\n CommandPageStore_1.providePatchFormFromRouteParamInitializer(),\n CommandPageStore_1.providePatchCommandFormValueFromCommandInitializer(),\n CommandPageStore_1.provideInitialFormValueFromQueryResult()\n ];\n }\n static provideDefaultEffects() {\n return [\n CommandPageStore_1.provideExecuteCommandEffect(),\n CommandPageStore_1.provideBackEffect(),\n QueryFeature.provideDefaultEffects(),\n ];\n }\n static provideCommandFromRouteParamInitializer(paramName = 'commandId') {\n return CommandPageStore_1.Initializer.provide((store) => {\n const commandId = injectRouteParam(paramName);\n const service = inject(CommandService);\n effect(() => applyToInput(store, 'command', service.getCommand(commandId())));\n });\n }\n static provideCommandIdFromRouteDataInitializer() {\n return CommandPageStore_1.Initializer.provide((store) => {\n const commandId = injectRouteData('commandId');\n const service = inject(CommandService);\n effect(() => applyToInput(store, 'command', service.getCommand(commandId())));\n });\n }\n static providePatchFormFromRouteParamInitializer() {\n return [\n CommandPageStore_1.Initializer.provide(store => {\n effect(() => store.form().patchValue(store.data()));\n }),\n ];\n }\n static providePatchCommandFormValueFromCommandInitializer() {\n return [\n CommandPageStore_1.Initializer.provide(store => {\n effect(() => {\n if (!store.command())\n return;\n store.feature.commandForm().patchValue({ ...store.command() });\n });\n })\n ];\n }\n static provideQueryIdFromRouteParam(key = 'queryId') {\n return CommandPageStore_1.Initializer.provide((store) => {\n const queryId$ = injectRouteParam$(key);\n const params$ = injectUnflattenRouteParam$('data');\n const query$ = injectOne$(Query, { id: queryId$ });\n const setupQuery = derivedAsync(() => combineLatest({\n query: query$,\n params: params$,\n }).pipe(filter(({ query, params }) => !!query && !!params), map(({ query, params }) => QueryHelper.setup(query, params)), tap((query) => console.debug('[CommandPage] query:', query)), shareReplay(1)));\n effect(() => {\n console.debug('[CommandPage] setupQuery:', setupQuery());\n store.queryFeature.form.patchValue(setupQuery());\n });\n });\n }\n static provideQueryFromRouteData(key = 'query') {\n return CommandPageStore_1.Initializer.provide((store) => {\n const params$ = injectUnflattenRouteParam$('data');\n const query$ = injectRouteData$(key);\n const setupQuery = derivedAsync(() => combineLatest({\n query: query$,\n params: params$,\n }).pipe(filter(({ query, params }) => !!query), map(({ query, params }) => QueryHelper.setup(query, params)), shareReplay(1)));\n effect(() => { store.queryFeature.form.patchValue(setupQuery()); });\n });\n }\n static provideRouteParamsToDataInitializer(projector) {\n return CommandPageStore_1.Initializer.provide((store) => {\n const route = inject(ActivatedRoute);\n const data = derivedAsync(() => route.params.pipe(map(params => projector(params))));\n effect(() => applyToInput(store, 'data', data()));\n });\n }\n static provideRouteParamMapToDataInitializer(projector) {\n return CommandPageStore_1.Initializer.provide((store) => {\n const paramMap = injectRouteParamMap({ merge: true });\n const data = computed(() => projector(paramMap()));\n effect(() => applyToInput(store, 'data', data()));\n });\n }\n static provideSetupInitializeQueryInitializer() {\n return CommandPageStore_1.Initializer.provide((store) => {\n const initializeQuery = derivedAsync(() => combineLatest({\n initializeQuery: of(store.initializeQuery()),\n data: of(store.data())\n }).pipe(filter(({ initializeQuery, data }) => !!initializeQuery && !!data), map(({ initializeQuery, data }) => QueryHelper.setup(initializeQuery, data)), filter((initializeQuery) => !!initializeQuery), shareReplay(1)));\n effect(() => store.queryFeature.form.patchValue(initializeQuery()));\n });\n }\n static provideInitialFormValueFromQueryResult() {\n return CommandPageStore_1.Initializer.provide((store) => {\n effect(() => store.form().patchValue(store.queryFeature.result()));\n store.queryFeature.refresh();\n });\n }\n static provideExecuteCommandEffect() {\n return provideEffect(ActionId.EXECUTE_COMMAND, () => {\n const store = inject(CommandPageStore_1);\n const app = inject(AppService);\n const paramKeys = computed(() => EndpointHelper.extract(store.feature.path()));\n const resolvedParams = computed(() => pick(store.data(), paramKeys()));\n return () => {\n const resolvedEndpoint = EndpointHelper.resolve(store.feature.path(), resolvedParams());\n const data = buildData(store.form(), store.command()?.webApiRequest?.contentType);\n const command = merge(store.command(), store.feature.commandForm().getRawValue(), { webApiRequest: { path: resolvedEndpoint } });\n app.loading.await(() => {\n return store.feature.execute(command, data).then(() => {\n app.snackBar.open('成功しました。');\n // history.back();\n }).catch((error) => {\n console.error(error);\n app.snackBar.openError(error);\n });\n });\n };\n });\n }\n static provideBackEffect() {\n return provideEffect(FormTemplateStore.ActionId.BACK, () => {\n return () => history.back();\n });\n }\n static provideFileSelectedEffect() {\n return provideEffect(CommandPageStore_1.ActionId.FILE_SELECTED, () => {\n const store = inject(CommandPageStore_1);\n return (payload) => {\n store.form().patchValue({ file: payload.files?.[0] });\n };\n });\n }\n static provideDebugFormInitializer() {\n return CommandPageStore_1.Initializer.provide(() => {\n const store = inject(CommandPageStore_1);\n // FormGroupを再帰的に調べる関数(invalidなコントロールのみ)\n const getInvalidControls = (formGroup, path = '') => {\n let invalidControls = [];\n Object.keys(formGroup.controls).forEach(key => {\n const control = formGroup.controls[key];\n const currentPath = path ? `${path}.${key}` : key;\n // invalidなコントロールを記録\n if (control.invalid) {\n invalidControls.push({\n path: currentPath,\n errors: control.errors,\n value: control.value,\n status: control.status,\n valid: control.valid,\n invalid: control.invalid,\n dirty: control.dirty,\n touched: control.touched\n });\n }\n // FormGroupの場合は再帰的に調べる\n if (control.controls) {\n invalidControls = invalidControls.concat(getInvalidControls(control, currentPath));\n }\n });\n return invalidControls;\n };\n const formValue_ = derivedAsync(() => getValue$(store.form()));\n effect(() => {\n const formValue = formValue_();\n const form = untracked(() => store.form());\n console.log('[CommandPage] Form value changed:', formValue);\n console.log('[CommandPage] CommandForm valid:', form?.valid);\n console.log('[CommandPage] CommandForm status:', form?.status);\n if (form) {\n const invalidControls = getInvalidControls(form);\n const invalidPaths = invalidControls.map(control => control.path);\n console.log(`[CommandPage] Found ${invalidControls.length} INVALID controls:`);\n console.log('[CommandPage] INVALID PATHS:', invalidPaths);\n }\n });\n });\n }\n static provideSelectedFileUploadEffect(callbackFactory, { validator = () => null, getPath, }) {\n return provideEffect(CommandPageStore_1.ActionId.FILE_SELECTED, () => {\n const storage = inject(CloudStorageService);\n const app = inject(AppService);\n const callback = callbackFactory();\n const errorMessageResolver = injectErrorMessageResolver();\n return (payload) => {\n const file = payload.files?.[0];\n const errors = validator(file);\n if (errors && Object.keys(errors).length > 0) {\n app.snackBar.open(errorMessageResolver(errors));\n return;\n }\n return app.loading.await(() => {\n const path = getPath();\n return storage.upload(path, file).then(() => {\n app.snackBar.open('ファイルをアップロードしました');\n return storage.getDownloadUrl(path).then((imageUrl) => {\n return callback({ file, path, url: imageUrl });\n });\n }).catch((error) => {\n console.error(error);\n app.snackBar.open('ファイルのアップロードに失敗しました');\n });\n });\n };\n });\n }\n #navStartActions;\n constructor() {\n super();\n this.feature = inject(CommandFeature);\n this.config = CommandPageStore_1.Config.inject();\n this.queryFeature = inject(QueryFeature);\n this.style = input(_computed(() => this.config().style));\n this.#navStartActions = injectNavStartActionsV2();\n this.navStartActions = input(_computed(() => this.#navStartActions()));\n this.navEndActions = input(_computed(() => this.config().navEndActions));\n this.command = input(_computed(() => this.config().command));\n this.form = input(_computed(() => this.feature.form()));\n this.extractedFormFieldMap = input(_computed(() => this.feature.extractedFormFieldMap()));\n this.additionalFormFieldMap = input(_computed(() => this.config().additionalFormFieldMap));\n this.formFieldMap = input(_computed(() => ({\n ...this.extractedFormFieldMap(),\n ...this.additionalFormFieldMap()\n })));\n this.formFieldKeys = input(_computed(() => []));\n this.formFlatExcludes = input(_computed(() => []));\n this._initializeQuery = injectRouteData('query');\n this.initializeQuery = input(_computed(() => this._initializeQuery()));\n this._data = injectUnflattenRouteParam('data');\n this.data = input(_computed(() => this._data()));\n this.formInvalid = derivedAsync(() => getInvalid$(this.form()));\n this.title = input(_computed(() => this.feature.title()));\n this.actions = derivedAsync(() => buildActions(this.feature.hasPermission(this.command()), this.formInvalid()));\n this.skip = injectRouteSkip();\n CommandPageStore_1.Initializer.initializeStore(this);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: CommandPageStore, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.5\", type: CommandPageStore, isStandalone: true, inputs: { style: { classPropertyName: \"style\", publicName: \"style\", isSignal: true, isRequired: false, transformFunction: null }, navStartActions: { classPropertyName: \"navStartActions\", publicName: \"navStartActions\", isSignal: true, isRequired: false, transformFunction: null }, navEndActions: { classPropertyName: \"navEndActions\", publicName: \"navEndActions\", isSignal: true, isRequired: false, transformFunction: null }, command: { classPropertyName: \"command\", publicName: \"command\", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: \"form\", publicName: \"form\", isSignal: true, isRequired: false, transformFunction: null }, extractedFormFieldMap: { classPropertyName: \"extractedFormFieldMap\", publicName: \"extractedFormFieldMap\", isSignal: true, isRequired: false, transformFunction: null }, additionalFormFieldMap: { classPropertyName: \"additionalFormFieldMap\", publicName: \"additionalFormFieldMap\", isSignal: true, isRequired: false, transformFunction: null }, formFieldMap: { classPropertyName: \"formFieldMap\", publicName: \"formFieldMap\", isSignal: true, isRequired: false, transformFunction: null }, formFieldKeys: { classPropertyName: \"formFieldKeys\", publicName: \"formFieldKeys\", isSignal: true, isRequired: false, transformFunction: null }, formFlatExcludes: { classPropertyName: \"formFlatExcludes\", publicName: \"formFlatExcludes\", isSignal: true, isRequired: false, transformFunction: null }, initializeQuery: { classPropertyName: \"initializeQuery\", publicName: \"initializeQuery\", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: \"data\", publicName: \"data\", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: \"title\", publicName: \"title\", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }\n};\nCommandPageStore = CommandPageStore_1 = __decorate([\n TokenizedType(),\n __metadata(\"design:paramtypes\", [])\n], CommandPageStore);\nexport { CommandPageStore };\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: CommandPageStore, decorators: [{\n type: Directive,\n args: [{ standalone: true }]\n }], ctorParameters: () => [] });\nexport class CommandPage extends NgAtomicComponent {\n constructor() {\n super(...arguments);\n this.store = inject(CommandPageStore);\n this.route = inject(ActivatedRoute);\n this.app = inject(AppService);\n this.parentRouterOutletFrame = inject(RouterOutletFrame, { optional: true });\n }\n onFileSelected(payload) {\n this.dispatch({ id: ActionId.FILE_SELECTED, payload });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: CommandPage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.5\", type: CommandPage, isStandalone: true, selector: \"pages-command\", providers: [\n CommandFeature,\n QueryFeature,\n QueryGraphqlSchemaFeature\n ], usesInheritance: true, hostDirectives: [{ directive: CommandPageStore, inputs: [\"style\", \"style\", \"navEndActions\", \"navEndActions\", \"command\", \"command\", \"form\", \"form\", \"additionalFormFieldMap\", \"additionalFormFieldMap\", \"formFieldMap\", \"formFieldMap\", \"formFlatExcludes\", \"formFlatExcludes\", \"initializeQuery\", \"initializeQuery\", \"data\", \"data\"] }], ngImport: i0, template: `\n <frames-router-outlet [skip]=\"store.skip()\" (action)=\"dispatch($event)\">\n <templates-form\n [form]=\"store.form()\"\n [style]=\"store.style()\"\n [fieldMap]=\"store.formFieldMap()\"\n [fieldKeys]=\"store.formFieldKeys()\"\n [formFlatExcludes]=\"store.formFlatExcludes()\"\n [title]=\"store.title()\"\n [navStartActions]=\"store.navStartActions()\"\n [navEndActions]=\"store.navEndActions()\"\n [actions]=\"store.actions()\"\n (action)=\"dispatch($event)\"\n >\n <frames-tabs [labels]=\"['Command', 'InitializeQuery']\" dashboard>\n <ng-template #tab>\n <groups-command-form (action)=\"dispatch($event)\"/>\n </ng-template>\n <ng-template #tab>\n <groups-query-form\n [form]=\"store.queryFeature.form\"\n (action)=\"dispatch($event)\"\n />\n </ng-template>\n </frames-tabs> \n </templates-form>\n </frames-router-outlet>\n `, isInline: true, styles: [\":host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-command-7Srb: var(--page-width-lv1)}:host .template{--first-content-height: 0px;width:var(--page-width-lv1-SCOPED-IN-command-7Srb)}:host .template div[dashboard]{padding:0;box-sizing:border-box}\\n\"], dependencies: [{ kind: \"component\", type: RouterOutletFrame, selector: \"frames-router-outlet\", outputs: [\"events\"] }, { kind: \"component\", type: FormTemplate, selector: \"templates-form\" }, { kind: \"component\", type: TabsFrame, selector: \"frames-tabs\", inputs: [\"labels\"], outputs: [\"selectedTabIndexChange\"] }, { kind: \"component\", type: CommandFormGroup, selector: \"groups-command-form\", inputs: [\"apiJsonUrls\"] }, { kind: \"component\", type: QueryFormGroup, selector: \"groups-query-form\", inputs: [\"form\", \"keyActions\"] }] }); }\n}\n__decorate([\n Effect(FormTemplateStore.ActionId.FILE_SELECTED),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], CommandPage.prototype, \"onFileSelected\", null);\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: CommandPage, decorators: [{\n type: Component,\n args: [{ selector: 'pages-command', imports: [\n RouterOutletFrame,\n FormTemplate,\n TabsFrame,\n CommandFormGroup,\n QueryFormGroup\n ], providers: [\n CommandFeature,\n QueryFeature,\n QueryGraphqlSchemaFeature\n ], template: `\n <frames-router-outlet [skip]=\"store.skip()\" (action)=\"dispatch($event)\">\n <templates-form\n [form]=\"store.form()\"\n [style]=\"store.style()\"\n [fieldMap]=\"store.formFieldMap()\"\n [fieldKeys]=\"store.formFieldKeys()\"\n [formFlatExcludes]=\"store.formFlatExcludes()\"\n [title]=\"store.title()\"\n [navStartActions]=\"store.navStartActions()\"\n [navEndActions]=\"store.navEndActions()\"\n [actions]=\"store.actions()\"\n (action)=\"dispatch($event)\"\n >\n <frames-tabs [labels]=\"['Command', 'InitializeQuery']\" dashboard>\n <ng-template #tab>\n <groups-command-form (action)=\"dispatch($event)\"/>\n </ng-template>\n <ng-template #tab>\n <groups-query-form\n [form]=\"store.queryFeature.form\"\n (action)=\"dispatch($event)\"\n />\n </ng-template>\n </frames-tabs> \n </templates-form>\n </frames-router-outlet>\n `, hostDirectives: [\n {\n directive: CommandPageStore,\n inputs: [\n 'style',\n 'navEndActions',\n 'command',\n 'form',\n 'additionalFormFieldMap',\n 'formFieldMap',\n 'formFlatExcludes',\n 'initializeQuery',\n 'data',\n ]\n },\n ], styles: [\":host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-command-7Srb: var(--page-width-lv1)}:host .template{--first-content-height: 0px;width:var(--page-width-lv1-SCOPED-IN-command-7Srb)}:host .template div[dashboard]{padding:0;box-sizing:border-box}\\n\"] }]\n }], propDecorators: { onFileSelected: [] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQHh4bWFjaGluYS9jb21wb25lbnRzL3NyYy9saWIvcGFnZXMvY29tbWFuZC9jb21tYW5kLnBhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVksU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBbUIsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBVSxZQUFZLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoSixPQUFPLEVBQUUsY0FBYyxFQUFvQixNQUFNLGlCQUFpQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM00sT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FB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TyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDOzhHQVRVLFdBQVc7a0dBQVgsV0FBVyw0REFuRFg7WUFDVCxjQUFjO1lBQ2QsWUFBWTtZQUNaLHlCQUF5QjtTQUMxQix1REE3V1UsZ0JBQWdCLG1UQThXakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCVCxvVkF0Q0MsaUJBQWlCLHNGQUNqQixZQUFZLDJEQUNaLFNBQVMsaUhBQ1QsZ0JBQWdCLHlGQUNoQixjQUFjOztBQTRETjtJQURULE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDOzs7O2lEQUdoRDsyRkFUVSxXQUFXO2tCQTVEdkIsU0FBUzsrQkFDRSxlQUFlLFdBQ2hCO3dCQUNQLGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixTQUFTO3dCQUNULGdCQUFnQjt3QkFDaEIsY0FBYztxQkFDZixhQUNVO3dCQUNULGNBQWM7d0JBQ2QsWUFBWTt3QkFDWix5QkFBeUI7cUJBQzFCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCVCxrQkFFZTt3QkFDZDs0QkFDRSxTQUFTLEVBQUUsZ0JBQWdCOzRCQUMzQixNQUFNLEVBQUU7Z0NBQ04sT0FBTztnQ0FDUCxlQUFlO2dDQUNmLFNBQVM7Z0NBQ1QsTUFBTTtnQ0FDTix3QkFBd0I7Z0NBQ3hCLGNBQWM7Z0NBQ2Qsa0JBQWtCO2dDQUNsQixpQkFBaUI7Z0NBQ2pCLE1BQU07NkJBQ1A7eUJBQ0Y7cUJBQ0Y7OEJBU1MsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIERpcmVjdGl2ZSwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBQcm92aWRlciwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJvdXRlck91dGxldEZyYW1lIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL2ZyYW1lcy9yb3V0ZXItb3V0bGV0JztcbmltcG9ydCB7IENvbW1hbmRTZXJ2aWNlIH0gZnJvbSAnQHh4bWFjaGluYS9jb21wb25lbnRzL3NlcnZpY2VzL2NvbW1hbmQnO1xuaW1wb3J0IHsgX2NvbXB1dGVkLCBBY3Rpb24sIGFwcGx5VG9JbnB1dCwgRWZmZWN0LCBJbmplY3RhYmxlQ29tcG9uZW50LCBOZ0F0b21pY0NvbXBvbmVudCwgcHJvdmlkZUVmZmVjdCwgVG9rZW5pemVkVHlwZSB9IGZyb20gJ0BuZy1hdG9taWMvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1NYXAsIFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGb3JtVGVtcGxhdGUsIEZvcm1UZW1wbGF0ZVN0b3JlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL3RlbXBsYXRlcy9mb3JtJztcbmltcG9ydCB7IGdldEludmFsaWQkLCBnZXRWYWx1ZSQsIGluamVjdFJvdXRlRGF0YSwgaW5qZWN0Um91dGVEYXRhJCwgaW5qZWN0Um91dGVQYXJhbSwgaW5qZWN0Um91dGVQYXJhbSQsIGluamVjdFJvdXRlUGFyYW1NYXAsIGluamVjdFJvdXRlU2tpcCwgaW5qZWN0VW5mbGF0dGVuUm91dGVQYXJhbSQgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi91dGlscyc7XG5pbXBvcnQgeyBtYXAsIHRhcCwgZmlsdGVyLCBjb21iaW5lTGF0ZXN0LCBzaGFyZVJlcGxheSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvcm1GaWVsZE1hcCB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3BpcGVzL3NtYXJ0LWZpZWxkJztcbmltcG9ydCB7IEFwcFNlcnZpY2UgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9hcHAnO1xuaW1wb3J0IHsgaW5qZWN0TmF2U3RhcnRBY3Rpb25zVjIsIG1ha2VESSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3VpJztcbmltcG9ydCB7IFF1ZXJ5LCBRdWVyeUhlbHBlciB9IGZyb20gJ0B4eG1hY2hpbmEvY29tbW9uL2RvbWFpbi9tb2RlbHMnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ0B4eG1hY2hpbmEvY29tbW9uL2RvbWFpbi9tb2RlbHMnO1xuaW1wb3J0IHsgaW5qZWN0VW5mbGF0dGVuUm91dGVQYXJhbSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IG1lcmdlLCBwaWNrIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IGluamVjdE9uZSQgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zdG9yZXMvZW50aXRpZXMnO1xuaW1wb3J0IHsgTWFjaGluYURldlNlcnZpY2UgfSBmcm9tICdAeHhtYWNoaW5hL2NvbXBvbmVudHMvc2VydmljZXMvZGVidWcnO1xuaW1wb3J0IHsgRW5kcG9pbnRIZWxwZXIgfSBmcm9tICdAeHhtYWNoaW5hL2NvbW1vbi9kb21haW4vbW9kZWxzJztcbmltcG9ydCB7IGRlcml2ZWRBc3luYyB9IGZyb20gJ25neHRlbnNpb24vZGVyaXZlZC1hc3luYyc7XG5pbXBvcnQgeyBDb21tYW5kRmVhdHVyZSB9IGZyb20gJ0B4eG1hY2hpbmEvY29tcG9uZW50cy9mZWF0dXJlcy9jb21tYW5kJztcbmltcG9ydCB7IFRhYnNGcmFtZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9mcmFtZXMvdGFicyc7XG5pbXBvcnQgeyBRdWVyeUZvcm1Hcm91cCB9IGZyb20gJ0B4eG1hY2hpbmEvY29tcG9uZW50cy9ncm91cHMvcXVlcnktZm9ybSc7XG5pbXBvcnQgeyBDb21tYW5kRm9ybUdyb3VwIH0gZnJvbSAnQHh4bWFjaGluYS9jb21wb25lbnRzL2dyb3Vwcy9jb21tYW5kLWZvcm0nO1xuaW1wb3J0IHsgUXVlcnlGZWF0dXJlLCBRdWVyeUdyYXBocWxTY2hlbWFGZWF0dXJlIH0gZnJvbSAnQHh4bWFjaGluYS9jb21wb25lbnRzL2ZlYXR1cmVzL3F1ZXJ5JztcbmltcG9ydCB7IENsb3VkU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAbngtZGRkL2NvbW1vbi9pbmZyYXN0cnVjdHVyZS9leHRlcm5hbHMvY2xvdWQtc3RvcmFnZSc7XG5pbXBvcnQgeyBpbmplY3RFcnJvck1lc3NhZ2VSZXNvbHZlciB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3BpcGVzL2Vycm9yJztcblxuZW51bSBBY3Rpb25JZCB7XG4gIEVYRUNVVEVfQ09NTUFORCA9ICdleGVjdXRlLWNvbW1hbmQnLFxuICBGSUxFX1NFTEVDVEVEID0gJ2ZpbGUtc2VsZWN0ZWQnLFxufVxuXG5mdW5jdGlvbiBidWlsZEZvcm1EYXRhKGZvcm06IEZvcm1Hcm91cCB8IEZvcm1BcnJheSwgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCksIHBhcmVudEtleSA9ICcnKTogRm9ybURhdGEge1xuICBPYmplY3Qua2V5cyhmb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgY29uc3QgY29udHJvbCA9IGZvcm0uZ2V0KGtleSk7XG4gICAgY29uc3QgZm9ybUtleSA9IHBhcmVudEtleSA/IGAke3BhcmVudEtleX0uJHtrZXl9YCA6IGtleTtcblxuICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwIHx8IGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgIC8vIOWtkOOBrkZvcm1Hcm91cOOChEZvcm1BcnJheeOCkuWGjeW4sOeahOOBq+WHpueQhlxuICAgICAgYnVpbGRGb3JtRGF0YShjb250cm9sLCBmb3JtRGF0YSwgZm9ybUtleSk7XG4gICAgfSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcbiAgICAgIC8vIOODleOCqeODvOODoOOBruWApOOCkui/veWKoFxuICAgICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGZvcm1LZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBmb3JtRGF0YTtcbn1cblxuZnVuY3Rpb24gYnVpbGREYXRhKGZvcm06IEFic3RyYWN0Q29udHJvbCwgY29udGVudFR5cGU6IHN0cmluZykge1xuICBpZiAoY29udGVudFR5cGUgPT09ICdtdWx0aXBhcnQvZm9ybS1kYXRhJykge1xuICAgIHJldHVybiBidWlsZEZvcm1EYXRhKGZvcm0gYXMgRm9ybUdyb3VwKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZm9ybS5nZXRSYXdWYWx1ZSgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEFjdGlvbnMoaGFzUGVybWlzc2lvbjogYm9vbGVhbiwgaW52YWxpZDogYm9vbGVhbik6IEFjdGlvbltdIHtcbiAgcmV0dXJuIGhhc1Blcm1pc3Npb25cbiAgICA/IFt7IGlkOiBBY3Rpb25JZC5FWEVDVVRFX0NPTU1BTkQsIG5hbWU6ICflrp/ooYwnLCBkaXNhYmxlZDogaW52YWxpZCB9XVxuICAgIDogW3sgaWQ6IEFjdGlvbklkLkVYRUNVVEVfQ09NTUFORCwgbmFtZTogJ+Wun+ihjOaoqemZkOOBjOOBguOCiuOBvuOBm+OCkycsIGRpc2FibGVkOiB0cnVlIH1dXG59XG5cbkBUb2tlbml6ZWRUeXBlKClcbkBEaXJlY3RpdmUoeyBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgQ29tbWFuZFBhZ2VTdG9yZSBleHRlbmRzIEluamVjdGFibGVDb21wb25lbnQge1xuICBzdGF0aWMgcmVhZG9ubHkgQWN0aW9uSWQgPSBBY3Rpb25JZDtcbiAgc3RhdGljIHJlYWRvbmx5IERJID0gbWFrZURJKENvbW1hbmRQYWdlU3RvcmUsICgpID0+IHtcbiAgICBjb25zdCBkZXYgPSBpbmplY3QoTWFjaGluYURldlNlcnZpY2UpO1xuICAgIHJldHVybiAoKSA9PiAoe1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgd2lkdGg6ICd2YXIoLS1wYWdlLXdpZHRoLWx2MSknLFxuICAgICAgfSxcbiAgICAgIGJhc2VVcmxzOiBbXSBhcyBzdHJpbmdbXSxcbiAgICAgIGNvbW1hbmQ6IDxDb21tYW5kPntcbiAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgd2ViQXBpUmVxdWVzdDoge1xuICAgICAgICAgIHNlcnZlclVybDogbnVsbCxcbiAgICAgICAgICBhcGlKc29uVXJsOiBudWxsLFxuICAgICAgICAgIHBhdGg6ICcvdXNlcnMnLFxuICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgYm9keVNjaGVtYTogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBuYXZFbmRBY3Rpb25zOiA8QWN0aW9uW10+W10sXG4gICAgICBhZGRpdGlvbmFsRm9ybUZpZWxkTWFwOiA8Rm9ybUZpZWxkTWFwPihkZXYuaXNEZXZNb2RlKCkgPyB7fSA6IHtcbiAgICAgICAgJ2lkJzogeyB0eXBlOiAnaGlkZGVuJyB9LFxuICAgICAgICAnX190eXBlbmFtZSc6IHsgdHlwZTogJ2hpZGRlbicgfSxcbiAgICAgICAgJ2tpbmQnOiB7IHR5cGU6ICdoaWRkZW4nIH0sXG4gICAgICB9KSxcbiAgICB9KTtcbiAgfSwgWydAeHhtYWNoaW5hL2NvbXBvbmVudHMnLCAncGFnZXMnLCAnY29tbWFuZCddKTtcbiAgc3RhdGljIHJlYWRvbmx5IENvbmZpZyA9IENvbW1hbmRQYWdlU3RvcmUuREkuQ29uZmlnO1xuICBzdGF0aWMgcmVhZG9ubHkgSW5pdGlhbGl6ZXIgPSBDb21tYW5kUGFnZVN0b3JlLkRJLkluaXRpYWxpemVyO1xuXG4gIHN0YXRpYyBwcm92aWRlRGVmYXVsdCgpOiBQcm92aWRlcltdIHtcbiAgICByZXR1cm4gW1xuICAgICAgQ29tbWFuZFBhZ2VTdG9yZS5ESS5wcm92aWRlQ29uZmlnKCksXG4gICAgICBDb21tYW5kUGFnZVN0b3JlLnByb3ZpZGVEZWZhdWx0SW5pdGlhbGl6ZXIoKSxcbiAgICAgIENvbW1hbmRQYWdlU3RvcmUucHJvdmlkZURlZmF1bHRFZmZlY3RzKCksXG4gICAgXTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlQ3VzdG9tKCk6IFByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbXG4gICAgICBDb21tYW5kUGFnZVN0b3JlLnByb3ZpZGVEZWZhdWx0KCksXG4gICAgICBDb21tYW5kUGFnZVN0b3JlLnByb3ZpZGVDb21tYW5kSWRGcm9tUm91dGVEYXRhSW5pdGlhbGl6ZXIoKSxcbiAgICAgIENvbW1hbmRQYWdlU3RvcmUucHJvdmlkZVNldHVwSW5pdGlhbGl6ZVF1ZXJ5SW5pdGlhbGl6ZXIoKSxcbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVEZWZhdWx0VjIoKTogUHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIENvbW1hbmRQYWdlU3RvcmUuQ29uZmlnLnByb3ZpZGUoKSxcbiAgICAgIENvbW1hbmRQYWdlU3RvcmUucHJvdmlkZURlZmF1bHRJbml0aWFsaXplcigpLFxuICAgICAgQ29tbWFuZFBhZ2VTdG9yZS5wcm92aWRlRGVmYXVsdEVmZmVjdHMoKSxcbiAgICAgIENvbW1hbmRQYWdlU3RvcmUucHJvdmlkZUNvbW1hbmRJZEZyb21Sb3V0ZURhdGFJbml0aWFsaXplcigpLFxuICAgICAgQ29tbWFuZFBhZ2VTdG9yZS5wcm92aWRlU2V0dXBJbml0aWFsaXplUXVlcnlJbml0aWFsaXplcigpLFxuICAgICAgQ29tbWFuZFBhZ2VTdG9yZS5wcm92aWRlSW5pdGlhbEZvcm1WYWx1ZUZyb21RdWVyeVJlc3VsdCgpLFxuICAgICAgQ29tbWFuZFBhZ2VTdG9yZS5wcm92aWRlUXVlcnlGcm9tUm91dGVEYXRhKCksXG4gICAgXTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlRGVmYXVsdEluaXRpYWxpemVyKCk6IFByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbXG4gICAgICBDb21tYW5kUGFnZVN0b3JlLnByb3ZpZGVQYXRjaEZvcm1Gcm9tUm91dGVQYXJhbUluaXRpYWxpemVyKCksXG4gICAgICBDb21tYW5kUGFnZVN0b3JlLnByb3ZpZGVQYXRjaENvbW1hbmRGb3JtVmFsdWVGcm9tQ29tbWFuZEluaXRpYWxpemVyKCksXG4gICAgICBDb21tYW5kUGFnZVN0b3JlLnByb3ZpZGVJbml0aWFsRm9ybVZhbHVlRnJvbVF1ZXJ5UmVzdWx0KClcbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVEZWZhdWx0RWZmZWN0cygpOiBQcm92aWRlcltdIHtcbiAgICByZXR1cm4gW1xuICAgICAgQ29tbWFuZFBhZ2VTdG9yZS5wcm92aWRlRXhlY3V0ZUNvbW1hbmRFZmZlY3QoKSxcbiAgICAgIENvbW1hbmRQYWdlU3RvcmUucHJvdmlkZUJhY2tFZmZlY3QoKSxcbiAgICAgIFF1ZXJ5RmVhdHVyZS5wcm92aWRlRGVmYXVsdEVmZmVjdHMoKSxcbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVDb21tYW5kRnJvbVJvdXRlUGFyYW1Jbml0aWFsaXplcihwYXJhbU5hbWUgPSAnY29tbWFuZElkJyk6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4gQ29tbWFuZFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgY29uc3QgY29tbWFuZElkID0gaW5qZWN0Um91dGVQYXJhbShwYXJhbU5hbWUpO1xuICAgICAgY29uc3Qgc2VydmljZSA9IGluamVjdChDb21tYW5kU2VydmljZSk7XG4gICAgICBlZmZlY3QoKCkgPT4gYXBwbHlUb0lucHV0KHN0b3JlLCAnY29tbWFuZCcsIHNlcnZpY2UuZ2V0Q29tbWFuZChjb21tYW5kSWQoKSkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlQ29tbWFuZElkRnJvbVJvdXRlRGF0YUluaXRpYWxpemVyKCk6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4gQ29tbWFuZFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgY29uc3QgY29tbWFuZElkID0gaW5qZWN0Um91dGVEYXRhPHN0cmluZz4oJ2NvbW1hbmRJZCcpO1xuICAgICAgY29uc3Qgc2VydmljZSA9IGluamVjdChDb21tYW5kU2VydmljZSk7XG4gICAgICBlZmZlY3QoKCkgPT4gYXBwbHlUb0lucHV0KHN0b3JlLCAnY29tbWFuZCcsIHNlcnZpY2UuZ2V0Q29tbWFuZChjb21tYW5kSWQoKSkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlUGF0Y2hGb3JtRnJvbVJvdXRlUGFyYW1Jbml0aWFsaXplcigpIHtcbiAgICByZXR1cm4gW1xuICAgICAgQ29tbWFuZFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKHN0b3JlID0+IHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHN0b3JlLmZvcm0oKS5wYXRjaFZhbHVlKHN0b3JlLmRhdGEoKSkpO1xuICAgICAgfSksXG4gICAgXVxuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVQYXRjaENvbW1hbmRGb3JtVmFsdWVGcm9tQ29tbWFuZEluaXRpYWxpemVyKCkge1xuICAgIHJldHVybiBbXG4gICAgICBDb21tYW5kUGFnZVN0b3JlLkluaXRpYWxpemVyLnByb3ZpZGUoc3RvcmUgPT4ge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgIGlmICghc3RvcmUuY29tbWFuZCgpKSByZXR1cm47XG4gICAgICAgICAgc3RvcmUuZmVhdHVyZS5jb21tYW5kRm9ybSgpLnBhdGNoVmFsdWUoeyAuLi5zdG9yZS5jb21tYW5kKCkgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVRdWVyeUlkRnJvbVJvdXRlUGFyYW0oa2V5ID0gJ3F1ZXJ5SWQnKTogUHJvdmlkZXIge1xuICAgIHJldHVybiBDb21tYW5kUGFnZVN0b3JlLkluaXRpYWxpemVyLnByb3ZpZGUoKHN0b3JlKSA9PiB7XG4gICAgICBjb25zdCBxdWVyeUlkJCA9IGluamVjdFJvdXRlUGFyYW0kKGtleSk7XG4gICAgICBjb25zdCBwYXJhbXMkID0gaW5qZWN0VW5mbGF0dGVuUm91dGVQYXJhbSQoJ2RhdGEnKTtcbiAgICAgIGNvbnN0IHF1ZXJ5JCA9IGluamVjdE9uZSQoUXVlcnksIHsgaWQ6IHF1ZXJ5SWQkIH0pO1xuICAgICAgY29uc3Qgc2V0dXBRdWVyeSA9IGRlcml2ZWRBc3luYygoKSA9PiBjb21iaW5lTGF0ZXN0KHtcbiAgICAgICAgcXVlcnk6IHF1ZXJ5JCxcbiAgICAgICAgcGFyYW1zOiBwYXJhbXMkLFxuICAgICAgfSkucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IHF1ZXJ5LCBwYXJhbXMgfSkgPT4gISFxdWVyeSAmJiAhIXBhcmFtcyksXG4gICAgICAgIG1hcCgoeyBxdWVyeSwgcGFyYW1zIH0pID0+IFF1ZXJ5SGVscGVyLnNldHVwKHF1ZXJ5LCBwYXJhbXMpKSxcbiAgICAgICAgdGFwKChxdWVyeSkgPT4gY29uc29sZS5kZWJ1ZygnW0NvbW1hbmRQYWdlXSBxdWVyeTonLCBxdWVyeSkpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICAgICkpO1xuICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc29sZS5kZWJ1ZygnW0NvbW1hbmRQYWdlXSBzZXR1cFF1ZXJ5OicsIHNldHVwUXVlcnkoKSk7XG4gICAgICAgIHN0b3JlLnF1ZXJ5RmVhdHVyZS5mb3JtLnBhdGNoVmFsdWUoc2V0dXBRdWVyeSgpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVRdWVyeUZyb21Sb3V0ZURhdGEoa2V5ID0gJ3F1ZXJ5Jyk6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4gQ29tbWFuZFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1zJCA9IGluamVjdFVuZmxhdHRlblJvdXRlUGFyYW0kKCdkYXRhJyk7XG4gICAgICBjb25zdCBxdWVyeSQgPSBpbmplY3RSb3V0ZURhdGEkPFF1ZXJ5PihrZXkpO1xuICAgICAgY29uc3Qgc2V0dXBRdWVyeSA9IGRlcml2ZWRBc3luYygoKSA9PiBjb21iaW5lTGF0ZXN0KHtcbiAgICAgICAgcXVlcnk6IHF1ZXJ5JCxcbiAgICAgICAgcGFyYW1zOiBwYXJhbXMkLFxuICAgICAgfSkucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IHF1ZXJ5LCBwYXJhbXMgfSkgPT4gISFxdWVyeSksXG4gICAgICAgIG1hcCgoeyBxdWVyeSwgcGFyYW1zIH0pID0+IFF1ZXJ5SGVscGVyLnNldHVwKHF1ZXJ5LCBwYXJhbXMpKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSksXG4gICAgICApKTtcbiAgICAgIGVmZmVjdCgoKSA9PiB7IHN0b3JlLnF1ZXJ5RmVhdHVyZS5mb3JtLnBhdGNoVmFsdWUoc2V0dXBRdWVyeSgpKTsgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZVJvdXRlUGFyYW1zVG9EYXRhSW5pdGlhbGl6ZXIocHJvamVjdG9yOiAocGFyYW1zOiBQYXJhbXMpID0+IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm92aWRlcltdIHtcbiAgICByZXR1cm4gQ29tbWFuZFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgY29uc3Qgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICAgICAgY29uc3QgZGF0YSA9IGRlcml2ZWRBc3luYygoKSA9PiByb3V0ZS5wYXJhbXMucGlwZShtYXAocGFyYW1zID0+IHByb2plY3RvcihwYXJhbXMpKSkpO1xuICAgICAgZWZmZWN0KCgpID0+IGFwcGx5VG9JbnB1dChzdG9yZSwgJ2RhdGEnLCBkYXRhKCkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlUm91dGVQYXJhbU1hcFRvRGF0YUluaXRpYWxpemVyKHByb2plY3RvcjogKHBhcmFtczogUGFyYW1NYXApID0+IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm92aWRlcltdIHtcbiAgICByZXR1cm4gQ29tbWFuZFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1NYXAgPSBpbmplY3RSb3V0ZVBhcmFtTWFwKHttZXJnZTogdHJ1ZX0pO1xuICAgICAgY29uc3QgZGF0YSA9IGNvbXB1dGVkKCgpID0+IHByb2plY3RvcihwYXJhbU1hcCgpKSk7XG4gICAgICBlZmZlY3QoKCkgPT4gYXBwbHlUb0lucHV0KHN0b3JlLCAnZGF0YScsIGRhdGEoKSkpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVTZXR1cEluaXRpYWxpemVRdWVyeUluaXRpYWxpemVyKCk6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4gQ29tbWFuZFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgY29uc3QgaW5pdGlhbGl6ZVF1ZXJ5ID0gZGVyaXZlZEFzeW5jKCgpID0+IGNvbWJpbmVMYXRlc3Qoe1xuICAgICAgICBpbml0aWFsaXplUXVlcnk6IG9mKHN0b3JlLmluaXRpYWxpemVRdWVyeSgpKSxcbiAgICAgICAgZGF0YTogb2Yoc3RvcmUuZGF0YSgpKVxuICAgICAgfSkucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IGluaXRpYWxpemVRdWVyeSwgZGF0YSB9KSA9PiAhIWluaXRpYWxpemVRdWVyeSAmJiAhIWRhdGEpLFxuICAgICAgICBtYXAoKHsgaW5pdGlhbGl6ZVF1ZXJ5LCBkYXRhIH0pID0+IFF1ZXJ5SGVscGVyLnNldHVwKGluaXRpYWxpemVRdWVyeSwgZGF0YSkpLFxuICAgICAgICBmaWx0ZXIoKGluaXRpYWxpemVRdWVyeSkgPT4gISFpbml0aWFsaXplUXVlcnkpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICAgICkpO1xuICAgICAgXG4gICAgICBlZmZlY3QoKCkgPT4gc3RvcmUucXVlcnlGZWF0dXJlLmZvcm0ucGF0Y2hWYWx1ZShpbml0aWFsaXplUXVlcnkoKSkpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVJbml0aWFsRm9ybVZhbHVlRnJvbVF1ZXJ5UmVzdWx0KCk6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4gQ29tbWFuZFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgZWZmZWN0KCgpID0+IHN0b3JlLmZvcm0oKS5wYXRjaFZhbHVlKHN0b3JlLnF1ZXJ5RmVhdHVyZS5yZXN1bHQoKSkpO1xuICAgICAgc3RvcmUucXVlcnlGZWF0dXJlLnJlZnJlc2goKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlRXhlY3V0ZUNvbW1hbmRFZmZlY3QoKTogUHJvdmlkZXIge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KEFjdGlvbklkLkVYRUNVVEVfQ09NTUFORCwgKCkgPT4ge1xuICAgICAgY29uc3Qgc3RvcmUgPSBpbmplY3QoQ29tbWFuZFBhZ2VTdG9yZSk7XG4gICAgICBjb25zdCBhcHAgPSBpbmplY3QoQXBwU2VydmljZSk7XG4gICAgICBjb25zdCBwYXJhbUtleXMgPSBjb21wdXRlZCgoKSA9PiBFbmRwb2ludEhlbHBlci5leHRyYWN0KHN0b3JlLmZlYXR1cmUucGF0aCgpKSk7XG4gICAgICBjb25zdCByZXNvbHZlZFBhcmFtcyA9IGNvbXB1dGVkKCgpID0+IHBpY2soc3RvcmUuZGF0YSgpLCBwYXJhbUtleXMoKSkpO1xuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjb25zdCByZXNvbHZlZEVuZHBvaW50ID0gRW5kcG9pbnRIZWxwZXIucmVzb2x2ZShzdG9yZS5mZWF0dXJlLnBhdGgoKSwgcmVzb2x2ZWRQYXJhbXMoKSk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBidWlsZERhdGEoc3RvcmUuZm9ybSgpLCBzdG9yZS5jb21tYW5kKCk/LndlYkFwaVJlcXVlc3Q/LmNvbnRlbnRUeXBlKTtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9IG1lcmdlKFxuICAgICAgICAgIHN0b3JlLmNvbW1hbmQoKSxcbiAgICAgICAgICBzdG9yZS5mZWF0dXJlLmNvbW1hbmRGb3JtKCkuZ2V0UmF3VmFsdWUoKSxcbiAgICAgICAgICB7IHdlYkFwaVJlcXVlc3Q6IHsgcGF0aDogcmVzb2x2ZWRFbmRwb2ludCB9IH0sXG4gICAgICAgICk7XG4gICAgICAgIGFwcC5sb2FkaW5nLmF3YWl0KCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gc3RvcmUuZmVhdHVyZS5leGVjdXRlKGNvbW1hbmQsIGRhdGEpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgYXBwLnNuYWNrQmFyLm9wZW4oJ+aIkOWKn+OBl+OBvuOBl+OBn+OAgicpO1xuICAgICAgICAgICAgLy8gaGlzdG9yeS5iYWNrKCk7XG4gICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIGFwcC5zbmFja0Jhci5vcGVuRXJyb3IoZXJyb3IpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlQmFja0VmZmVjdCgpOiBQcm92aWRlciB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoRm9ybVRlbXBsYXRlU3RvcmUuQWN0aW9uSWQuQkFDSywgKCkgPT4ge1xuICAgICAgcmV0dXJuICgpID0+IGhpc3RvcnkuYmFjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVGaWxlU2VsZWN0ZWRFZmZlY3QoKTogUHJvdmlkZXIge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KENvbW1hbmRQYWdlU3RvcmUuQWN0aW9uSWQuRklMRV9TRUxFQ1RFRCwgKCkgPT4ge1xuICAgICAgY29uc3Qgc3RvcmUgPSBpbmplY3QoQ29tbWFuZFBhZ2VTdG9yZSk7XG4gICAgICByZXR1cm4gKHBheWxvYWQpID0+IHtcbiAgICAgICAgc3RvcmUuZm9ybSgpLnBhdGNoVmFsdWUoeyBmaWxlOiBwYXlsb2FkLmZpbGVzPy5bMF0gfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlRGVidWdGb3JtSW5pdGlhbGl6ZXIoKTogUHJvdmlkZXIge1xuICAgIHJldHVybiBDb21tYW5kUGFnZVN0b3JlLkluaXRpYWxpemVyLnByb3ZpZGUoKCkgPT4ge1xuICAgICAgY29uc3Qgc3RvcmUgPSBpbmplY3QoQ29tbWFuZFBhZ2VTdG9yZSk7XG4gICAgICBcbiAgICAgIC8vIEZvcm1Hcm91cOOCkuWGjeW4sOeahOOBq+iqv+OBueOCi+mWouaVsO+8iGludmFsaWTjgarjgrPjg7Pjg4jjg63jg7zjg6vjga7jgb/vvIlcbiAgICAgIGNvbnN0IGdldEludmFsaWRDb250cm9scyA9IChmb3JtR3JvdXA6IGFueSwgcGF0aCA9ICcnKSA9PiB7XG4gICAgICAgIGxldCBpbnZhbGlkQ29udHJvbHM6IGFueVtdID0gW107XG4gICAgICAgIFxuICAgICAgICBPYmplY3Qua2V5cyhmb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmNvbnRyb2xzW2tleV07XG4gICAgICAgICAgY29uc3QgY3VycmVudFBhdGggPSBwYXRoID8gYCR7cGF0aH0uJHtrZXl9YCA6IGtleTtcbiAgICAgICAgICBcbiAgICAgICAgICAvLyBpbnZhbGlk44Gq44Kz44Oz44OI44Ot44O844Or44KS6KiY6YyyXG4gICAgICAgICAgaWYgKGNvbnRyb2wuaW52YWxpZCkge1xuICAgICAgICAgICAgaW52YWxpZENvbnRyb2xzLnB1c2goe1xuICAgICAgICAgICAgICBwYXRoOiBjdXJyZW50UGF0aCxcbiAgICAgICAgICAgICAgZXJyb3JzOiBjb250cm9sLmVycm9ycyxcbiAgICAgICAgICAgICAgdmFsdWU6IGNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICAgIHN0YXR1czogY29udHJvbC5zdGF0dXMsXG4gICAgICAgICAgICAgIHZhbGlkOiBjb250cm9sLnZhbGlkLFxuICAgICAgICAgICAgICBpbnZhbGlkOiBjb250cm9sLmludmFsaWQsXG4gICAgICAgICAgICAgIGRpcnR5OiBjb250cm9sLmRpcnR5LFxuICAgICAgICAgICAgICB0b3VjaGVkOiBjb250cm9sLnRvdWNoZWRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICAvLyBGb3JtR3JvdXDjga7loLTlkIjjga/lho3luLDnmoTjgavoqr/jgbnjgotcbiAgICAgICAgICBpZiAoY29udHJvbC5jb250cm9scykge1xuICAgICAgICAgICAgaW52YWxpZENvbnRyb2xzID0gaW52YWxpZENvbnRyb2xzLmNvbmNhdChnZXRJbnZhbGlkQ29udHJvbHMoY29udHJvbCwgY3VycmVudFBhdGgpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIGludmFsaWRDb250cm9scztcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGZvcm1WYWx1ZV8gPSBkZXJpdmVkQXN5bmMoKCkgPT4gZ2V0VmFsdWUkKHN0b3JlLmZvcm0oKSkpO1xuICAgICAgXG4gICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSBmb3JtVmFsdWVfKCk7XG4gICAgICAgIGNvbnN0IGZvcm0gPSB1bnRyYWNrZWQoKCkgPT4gc3RvcmUuZm9ybSgpKTtcbiAgICAgICAgY29uc29sZS5sb2coJ1tDb21tYW5kUGFnZV0gRm9ybSB2YWx1ZSBjaGFuZ2VkOicsIGZvcm1WYWx1ZSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdbQ29tbWFuZFBhZ2VdIENvbW1hbmRGb3JtIHZhbGlkOicsIGZvcm0/LnZhbGlkKTtcbiAgICAgICAgY29uc29sZS5sb2coJ1tDb21tYW5kUGFnZV0gQ29tbWFuZEZvcm0gc3RhdHVzOicsIGZvcm0/LnN0YXR1cyk7XG4gICAgICAgIGlmIChmb3JtKSB7XG4gICAgICAgICAgY29uc3QgaW52YWxpZENvbnRyb2xzID0gZ2V0SW52YWxpZENvbnRyb2xzKGZvcm0pO1xuICAgICAgICAgIGNvbnN0IGludmFsaWRQYXRocyA9IGludmFsaWRDb250cm9scy5tYXAoY29udHJvbCA9PiBjb250cm9sLnBhdGgpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBbQ29tbWFuZFBhZ2VdIEZvdW5kICR7aW52YWxpZENvbnRyb2xzLmxlbmd0aH0gSU5WQUxJRCBjb250cm9sczpgKTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnW0NvbW1hbmRQYWdlXSBJTlZBTElEIFBBVEhTOicsIGludmFsaWRQYXRocyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVTZWxlY3RlZEZpbGVVcGxvYWRFZmZlY3QoXG4gICAgY2FsbGJhY2tGYWN0b3J5OiAoKSA9PiAocmVzdWx0OiB7ZmlsZTogRmlsZSwgcGF0aDogc3RyaW5nLCB1cmw6IHN0cmluZ30pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+LFxuICAgIHtcbiAgICAgIHZhbGlkYXRvciA9ICgpID0+IG51bGwsXG4gICAgICBnZXRQYXRoLFxuICAgIH06IHtcbiAgICAgIHZhbGlkYXRvcj86IChmaWxlOiBGaWxlKSA9PiB7dHlwZTogYm9vbGVhbiwgc2l6ZTogYm9vbGVhbn0gfCBudWxsLFxuICAgICAgZ2V0UGF0aDogKCkgPT4gc3RyaW5nLFxuICAgIH1cbiAgKTogUHJvdmlkZXIge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KENvbW1hbmRQYWdlU3RvcmUuQWN0aW9uSWQuRklMRV9TRUxFQ1RFRCwgKCkgPT4ge1xuICAgICAgY29uc3Qgc3RvcmFnZSA9IGluamVjdChDbG91ZFN0b3JhZ2VTZXJ2aWNlKTtcbiAgICAgIGNvbnN0IGFwcCA9IGluamVjdChBcHBTZXJ2aWNlKTtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gY2FsbGJhY2tGYWN0b3J5KCk7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2VSZXNvbHZlciA9IGluamVjdEVycm9yTWVzc2FnZVJlc29sdmVyKCk7XG4gIFxuICAgICAgcmV0dXJuIChwYXlsb2FkOiB7IHNjb3BlOiBzdHJpbmcsIGZpbGVzOiBGaWxlW119KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGUgPSBwYXlsb2FkLmZpbGVzPy5bMF07XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRvcihmaWxlKTtcbiAgICAgICAgaWYgKGVycm9ycyAmJiBPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBhcHAuc25hY2tCYXIub3BlbihlcnJvck1lc3NhZ2VSZXNvbHZlcihlcnJvcnMpKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFwcC5sb2FkaW5nLmF3YWl0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBwYXRoID0gZ2V0UGF0aCgpO1xuICAgICAgICAgIHJldHVybiBzdG9yYWdlLnVwbG9hZChwYXRoLCBmaWxlKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGFwcC5zbmFja0Jhci5vcGVuKCfjg5XjgqHjgqTjg6vjgpLjgqLjg4Pjg5fjg63jg7zjg4njgZfjgb7jgZfjgZ8nKTtcbiAgICAgICAgICAgIHJldHVybiBzdG9yYWdlLmdldERvd25sb2FkVXJsKHBhdGgpLnRoZW4oKGltYWdlVXJsKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayh7ZmlsZSwgcGF0aCwgdXJsOiBpbWFnZVVybH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIGFwcC5zbmFja0Jhci5vcGVuKCfjg5XjgqHjgqTjg6vjga7jgqLjg4Pjg5fjg63jg7zjg4njgavlpLHmlZfjgZfjgb7jgZfjgZ8nKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZWFkb25seSBmZWF0dXJlID0gaW5qZWN0KENvbW1hbmRGZWF0dXJlKTtcbiAgcmVhZG9ubHkgY29uZmlnID0gQ29tbWFuZFBhZ2VTdG9yZS5Db25maWcuaW5qZWN0KCk7XG4gIHJlYWRvbmx5IHF1ZXJ5RmVhdHVyZSA9IGluamVjdChRdWVyeUZlYXR1cmUpO1xuICByZWFkb25seSBzdHlsZSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnN0eWxlKSk7XG4gIHJlYWRvbmx5ICNuYXZTdGFydEFjdGlvbnMgPSBpbmplY3ROYXZTdGFydEFjdGlvbnNWMigpO1xuICByZWFkb25seSBuYXZTdGFydEFjdGlvbnMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy4jbmF2U3RhcnRBY3Rpb25zKCkpKTtcbiAgcmVhZG9ubHkgbmF2RW5kQWN0aW9ucyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLm5hdkVuZEFjdGlvbnMpKTtcbiAgcmVhZG9ubHkgY29tbWFuZCA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmNvbW1hbmQpKTtcbiAgcmVhZG9ubHkgZm9ybSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmZlYXR1cmUuZm9ybSgpKSk7XG4gIHJlYWRvbmx5IGV4dHJhY3RlZEZvcm1GaWVsZE1hcCA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmZlYXR1cmUuZXh0cmFjdGVkRm9ybUZpZWxkTWFwKCkpKTtcbiAgcmVhZG9ubHkgYWRkaXRpb25hbEZvcm1GaWVsZE1hcCA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmFkZGl0aW9uYWxGb3JtRmllbGRNYXApKTtcbiAgcmVhZG9ubHkgZm9ybUZpZWxkTWFwID0gaW5wdXQoX2NvbXB1dGVkPEZvcm1GaWVsZE1hcD4oKCkgPT4gKHtcbiAgICAuLi50aGlzLmV4dHJhY3RlZEZvcm1GaWVsZE1hcCgpLFxuICAgIC4uLnRoaXMuYWRkaXRpb25hbEZvcm1GaWVsZE1hcCgpXG4gIH0pKSk7XG4gIHJlYWRvbmx5IGZvcm1GaWVsZEtleXMgPSBpbnB1dDxzdHJpbmdbXT4oX2NvbXB1dGVkKCgpID0+IFtdKSk7XG4gIHJlYWRvbmx5IGZvcm1GbGF0RXhjbHVkZXMgPSBpbnB1dDxzdHJpbmdbXT4oX2NvbXB1dGVkKCgpID0+IFtdKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfaW5pdGlhbGl6ZVF1ZXJ5ID0gaW5qZWN0Um91dGVEYXRhPFF1ZXJ5PigncXVlcnknKTtcbiAgcmVhZG9ubHkgaW5pdGlhbGl6ZVF1ZXJ5ID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuX2luaXRpYWxpemVRdWVyeSgpKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfZGF0YSA9IGluamVjdFVuZmxhdHRlblJvdXRlUGFyYW0oJ2RhdGEnKTtcbiAgcmVhZG9ubHkgZGF0YSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLl9kYXRhKCkpKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvcm1JbnZhbGlkID0gZGVyaXZlZEFzeW5jKCgpID0+IGdldEludmFsaWQkKHRoaXMuZm9ybSgpKSk7XG4gIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuZmVhdHVyZS50aXRsZSgpKSk7XG4gIHJlYWRvbmx5IGFjdGlvbnMgPSBkZXJpdmVkQXN5bmMoKCkgPT4gYnVpbGRBY3Rpb25zKHRoaXMuZmVhdHVyZS5oYXNQZXJtaXNzaW9uKHRoaXMuY29tbWFuZCgpKSwgdGhpcy5mb3JtSW52YWxpZCgpKSk7XG4gIHJlYWRvbmx5IHNraXAgPSBpbmplY3RSb3V0ZVNraXAoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIENvbW1hbmRQYWdlU3RvcmUuSW5pdGlhbGl6ZXIuaW5pdGlhbGl6ZVN0b3JlKHRoaXMpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BhZ2VzLWNvbW1hbmQnLFxuICBpbXBvcnRzOiBbXG4gICAgUm91dGVyT3V0bGV0RnJhbWUsXG4gICAgRm9ybVRlbXBsYXRlLFxuICAgIFRhYnNGcmFtZSxcbiAgICBDb21tYW5kRm9ybUdyb3VwLFxuICAgIFF1ZXJ5Rm9ybUdyb3VwXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIENvbW1hbmRGZWF0dXJlLFxuICAgIFF1ZXJ5RmVhdHVyZSxcbiAgICBRdWVyeUdyYXBocWxTY2hlbWFGZWF0dXJlXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gIDxmcmFtZXMtcm91dGVyLW91dGxldCBbc2tpcF09XCJzdG9yZS5za2lwKClcIiAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIj5cbiAgICA8dGVtcGxhdGVzLWZvcm1cbiAgICAgIFtmb3JtXT1cInN0b3JlLmZvcm0oKVwiXG4gICAgICBbc3R5bGVdPVwic3RvcmUuc3R5bGUoKVwiXG4gICAgICBbZmllbGRNYXBdPVwic3RvcmUuZm9ybUZpZWxkTWFwKClcIlxuICAgICAgW2ZpZWxkS2V5c109XCJzdG9yZS5mb3JtRmllbGRLZXlzKClcIlxuICAgICAgW2Zvcm1GbGF0RXhjbHVkZXNdPVwic3RvcmUuZm9ybUZsYXRFeGNsdWRlcygpXCJcbiAgICAgIFt0aXRsZV09XCJzdG9yZS50aXRsZSgpXCJcbiAgICAgIFtuYXZTdGFydEFjdGlvbnNdPVwic3RvcmUubmF2U3RhcnRBY3Rpb25zKClcIlxuICAgICAgW25hdkVuZEFjdGlvbnNdPVwic3RvcmUubmF2RW5kQWN0aW9ucygpXCJcbiAgICAgIFthY3Rpb25zXT1cInN0b3JlLmFjdGlvbnMoKVwiXG4gICAgICAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIlxuICAgID5cbiAgICAgIDxmcmFtZXMtdGFicyBbbGFiZWxzXT1cIlsnQ29tbWFuZCcsICdJbml0aWFsaXplUXVlcnknXVwiIGRhc2hib2FyZD5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN0YWI+XG4gICAgICAgICAgPGdyb3Vwcy1jb21tYW5kLWZvcm0gKGFjdGlvbik9XCJkaXNwYXRjaCgkZXZlbnQpXCIvPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RhYj5cbiAgICAgICAgICA8Z3JvdXBzLXF1ZXJ5LWZvcm1cbiAgICAgICAgICAgIFtmb3JtXT1cInN0b3JlLnF1ZXJ5RmVhdHVyZS5mb3JtXCJcbiAgICAgICAgICAgIChhY3Rpb24pPVwiZGlzcGF0Y2goJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZnJhbWVzLXRhYnM+IFxuICAgIDwvdGVtcGxhdGVzLWZvcm0+XG4gIDwvZnJhbWVzLXJvdXRlci1vdXRsZXQ+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2NvbW1hbmQucGFnZS5zY3NzJ10sXG4gIGhvc3REaXJlY3RpdmVzOiBbXG4gICAge1xuICAgICAgZGlyZWN0aXZlOiBDb21tYW5kUGFnZVN0b3JlLFxuICAgICAgaW5wdXRzOiBbXG4gICAgICAgICdzdHlsZScsXG4gICAgICAgICduYXZFbmRBY3Rpb25zJyxcbiAgICAgICAgJ2NvbW1hbmQnLFxuICAgICAgICAnZm9ybScsXG4gICAgICAgICdhZGRpdGlvbmFsRm9ybUZpZWxkTWFwJyxcbiAgICAgICAgJ2Zvcm1GaWVsZE1hcCcsXG4gICAgICAgICdmb3JtRmxhdEV4Y2x1ZGVzJyxcbiAgICAgICAgJ2luaXRpYWxpemVRdWVyeScsXG4gICAgICAgICdkYXRhJyxcbiAgICAgIF1cbiAgICB9LFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENvbW1hbmRQYWdlIGV4dGVuZHMgTmdBdG9taWNDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RvcmUgPSBpbmplY3QoQ29tbWFuZFBhZ2VTdG9yZSk7XG4gIHJlYWRvbmx5IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcmVhZG9ubHkgYXBwID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICByZWFkb25seSBwYXJlbnRSb3V0ZXJPdXRsZXRGcmFtZSA9IGluamVjdChSb3V0ZXJPdXRsZXRGcmFtZSwge29wdGlvbmFsOiB0cnVlfSk7XG5cbiAgQEVmZmVjdChGb3JtVGVtcGxhdGVTdG9yZS5BY3Rpb25JZC5GSUxFX1NFTEVDVEVEKVxuICBwcm90ZWN0ZWQgb25GaWxlU2VsZWN0ZWQocGF5bG9hZCkge1xuICAgIHRoaXMuZGlzcGF0Y2goeyBpZDogQWN0aW9uSWQuRklMRV9TRUxFQ1RFRCwgcGF5bG9hZCB9KTtcbiAgfVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHhtYWNoaW5hLWNvbXBvbmVudHMtcGFnZXMtY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0B4eG1hY2hpbmEvY29tcG9uZW50cy9zcmMvbGliL3BhZ2VzL2NvbW1hbmQveHhtYWNoaW5hLWNvbXBvbmVudHMtcGFnZXMtY29tbWFuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
@@ -690,7 +690,7 @@ class QueryPage extends NgAtomicComponent {
690
690
  <groups-query-form dashboard (action)="dispatch($event)" />
691
691
  </templates-index>
692
692
  </frames-router-outlet>
693
- `, isInline: true, styles: ["@charset \"UTF-8\";:host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-query-ogfL: var(--page-width-lv1);--page-width-lv3-SCOPED-IN-query-ogfL: var(--page-width-lv3);--primary-color-SCOPED-IN-query-ogfL: var(--primary-color);--on-primary-color-SCOPED-IN-query-ogfL: var(--on-primary-color);--surface-color-SCOPED-IN-query-ogfL: var(--surface-color);--on-surface-color-SCOPED-IN-query-ogfL: var(--on-surface-color);--on-background-color-SCOPED-IN-query-ogfL: var(--on-background-color);--background-color-SCOPED-IN-query-ogfL: var(--background-color);--navigator-background-color-SCOPED-IN-query-ogfL: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-query-ogfL: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-query-ogfL: var(--table-background-color);--table-on-background-color-SCOPED-IN-query-ogfL: var(--table-on-background-color);--is-debug: 1;--is-debug-SCOPED-IN-query-ogfL: var(--is-debug)}:host *{--primary-color: var(--primary-color-SCOPED-IN-query-ogfL);--on-primary-color: var(--on-primary-color-SCOPED-IN-query-ogfL);--surface-color: var(--surface-color-SCOPED-IN-query-ogfL);--on-surface-color: var(--on-surface-color-SCOPED-IN-query-ogfL);--background-color: var(--background-color-SCOPED-IN-query-ogfL);--on-background-color: var(--on-background-color-SCOPED-IN-query-ogfL);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-query-ogfL);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-query-ogfL);--table-background-color: var(--table-background-color-SCOPED-IN-query-ogfL);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-query-ogfL);--is-debug: var(--is-debug-SCOPED-IN-query-ogfL)}:host templates-index{padding-left:0;box-sizing:border-box;--first-content-height: calc(var(--is-debug-SCOPED-IN-query-ogfL) * 300px);transition:padding-left .3s}:host templates-index div[navDashboard]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:16px;box-sizing:border-box}:host templates-index div[navDashboard] ng-atomic-form-section-builder{--horizontal-padding: 0}\n"], dependencies: [{ kind: "component", type: IndexTemplate, selector: "templates-index" }, { kind: "component", type: RouterOutletFrame, selector: "frames-router-outlet", outputs: ["events"] }, { kind: "component", type: NgAtomicFormSectionBuilder, selector: "ng-atomic-form-section-builder", inputs: ["form", "formFlatExcludes", "fieldMap", "fieldKeys"] }, { kind: "component", type: QueryFormGroup, selector: "groups-query-form", inputs: ["form", "keyActions"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
693
+ `, isInline: true, styles: ["@charset \"UTF-8\";:host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-query-crqf: var(--page-width-lv1);--page-width-lv3-SCOPED-IN-query-crqf: var(--page-width-lv3);--primary-color-SCOPED-IN-query-crqf: var(--primary-color);--on-primary-color-SCOPED-IN-query-crqf: var(--on-primary-color);--surface-color-SCOPED-IN-query-crqf: var(--surface-color);--on-surface-color-SCOPED-IN-query-crqf: var(--on-surface-color);--on-background-color-SCOPED-IN-query-crqf: var(--on-background-color);--background-color-SCOPED-IN-query-crqf: var(--background-color);--navigator-background-color-SCOPED-IN-query-crqf: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-query-crqf: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-query-crqf: var(--table-background-color);--table-on-background-color-SCOPED-IN-query-crqf: var(--table-on-background-color);--is-debug: 1;--is-debug-SCOPED-IN-query-crqf: var(--is-debug)}:host *{--primary-color: var(--primary-color-SCOPED-IN-query-crqf);--on-primary-color: var(--on-primary-color-SCOPED-IN-query-crqf);--surface-color: var(--surface-color-SCOPED-IN-query-crqf);--on-surface-color: var(--on-surface-color-SCOPED-IN-query-crqf);--background-color: var(--background-color-SCOPED-IN-query-crqf);--on-background-color: var(--on-background-color-SCOPED-IN-query-crqf);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-query-crqf);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-query-crqf);--table-background-color: var(--table-background-color-SCOPED-IN-query-crqf);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-query-crqf);--is-debug: var(--is-debug-SCOPED-IN-query-crqf)}:host templates-index{padding-left:0;box-sizing:border-box;--first-content-height: calc(var(--is-debug-SCOPED-IN-query-crqf) * 300px);transition:padding-left .3s}:host templates-index div[navDashboard]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:16px;box-sizing:border-box}:host templates-index div[navDashboard] ng-atomic-form-section-builder{--horizontal-padding: 0}\n"], dependencies: [{ kind: "component", type: IndexTemplate, selector: "templates-index" }, { kind: "component", type: RouterOutletFrame, selector: "frames-router-outlet", outputs: ["events"] }, { kind: "component", type: NgAtomicFormSectionBuilder, selector: "ng-atomic-form-section-builder", inputs: ["form", "formFlatExcludes", "fieldMap", "fieldKeys"] }, { kind: "component", type: QueryFormGroup, selector: "groups-query-form", inputs: ["form", "keyActions"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
694
694
  }
695
695
  __decorate([
696
696
  Effect(IndexTemplateStore.ActionId.BACK),
@@ -771,7 +771,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImpor
771
771
  'pageSizeOptions'
772
772
  ]
773
773
  },
774
- ], styles: ["@charset \"UTF-8\";:host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-query-ogfL: var(--page-width-lv1);--page-width-lv3-SCOPED-IN-query-ogfL: var(--page-width-lv3);--primary-color-SCOPED-IN-query-ogfL: var(--primary-color);--on-primary-color-SCOPED-IN-query-ogfL: var(--on-primary-color);--surface-color-SCOPED-IN-query-ogfL: var(--surface-color);--on-surface-color-SCOPED-IN-query-ogfL: var(--on-surface-color);--on-background-color-SCOPED-IN-query-ogfL: var(--on-background-color);--background-color-SCOPED-IN-query-ogfL: var(--background-color);--navigator-background-color-SCOPED-IN-query-ogfL: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-query-ogfL: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-query-ogfL: var(--table-background-color);--table-on-background-color-SCOPED-IN-query-ogfL: var(--table-on-background-color);--is-debug: 1;--is-debug-SCOPED-IN-query-ogfL: var(--is-debug)}:host *{--primary-color: var(--primary-color-SCOPED-IN-query-ogfL);--on-primary-color: var(--on-primary-color-SCOPED-IN-query-ogfL);--surface-color: var(--surface-color-SCOPED-IN-query-ogfL);--on-surface-color: var(--on-surface-color-SCOPED-IN-query-ogfL);--background-color: var(--background-color-SCOPED-IN-query-ogfL);--on-background-color: var(--on-background-color-SCOPED-IN-query-ogfL);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-query-ogfL);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-query-ogfL);--table-background-color: var(--table-background-color-SCOPED-IN-query-ogfL);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-query-ogfL);--is-debug: var(--is-debug-SCOPED-IN-query-ogfL)}:host templates-index{padding-left:0;box-sizing:border-box;--first-content-height: calc(var(--is-debug-SCOPED-IN-query-ogfL) * 300px);transition:padding-left .3s}:host templates-index div[navDashboard]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:16px;box-sizing:border-box}:host templates-index div[navDashboard] ng-atomic-form-section-builder{--horizontal-padding: 0}\n"] }]
774
+ ], styles: ["@charset \"UTF-8\";:host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-query-crqf: var(--page-width-lv1);--page-width-lv3-SCOPED-IN-query-crqf: var(--page-width-lv3);--primary-color-SCOPED-IN-query-crqf: var(--primary-color);--on-primary-color-SCOPED-IN-query-crqf: var(--on-primary-color);--surface-color-SCOPED-IN-query-crqf: var(--surface-color);--on-surface-color-SCOPED-IN-query-crqf: var(--on-surface-color);--on-background-color-SCOPED-IN-query-crqf: var(--on-background-color);--background-color-SCOPED-IN-query-crqf: var(--background-color);--navigator-background-color-SCOPED-IN-query-crqf: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-query-crqf: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-query-crqf: var(--table-background-color);--table-on-background-color-SCOPED-IN-query-crqf: var(--table-on-background-color);--is-debug: 1;--is-debug-SCOPED-IN-query-crqf: var(--is-debug)}:host *{--primary-color: var(--primary-color-SCOPED-IN-query-crqf);--on-primary-color: var(--on-primary-color-SCOPED-IN-query-crqf);--surface-color: var(--surface-color-SCOPED-IN-query-crqf);--on-surface-color: var(--on-surface-color-SCOPED-IN-query-crqf);--background-color: var(--background-color-SCOPED-IN-query-crqf);--on-background-color: var(--on-background-color-SCOPED-IN-query-crqf);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-query-crqf);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-query-crqf);--table-background-color: var(--table-background-color-SCOPED-IN-query-crqf);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-query-crqf);--is-debug: var(--is-debug-SCOPED-IN-query-crqf)}:host templates-index{padding-left:0;box-sizing:border-box;--first-content-height: calc(var(--is-debug-SCOPED-IN-query-crqf) * 300px);transition:padding-left .3s}:host templates-index div[navDashboard]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:16px;box-sizing:border-box}:host templates-index div[navDashboard] ng-atomic-form-section-builder{--horizontal-padding: 0}\n"] }]
775
775
  }], ctorParameters: () => [], propDecorators: { back: [], navigateToIframe: [], expandPage: [], itemClick: [] } });
776
776
 
777
777
  /**