@ng-atomic/components 19.3.1 → 19.3.2-preview-fix-local-storage-token-duplication.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/ng-atomic-components-atoms-icon.mjs +2 -2
- package/fesm2022/ng-atomic-components-atoms-icon.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-atoms-value-cell.mjs +2 -2
- package/fesm2022/ng-atomic-components-atoms-value-cell.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-app.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-app.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-auto-layout.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-auto-layout.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-breadcrumb-navbar.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-breadcrumb-navbar.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-card.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-card.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-columns.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-divider.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-divider.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-drawer.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-drawer.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-entrance.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-entrance.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-fab.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-fab.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-horizontal-divider.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-horizontal-divider.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-line-up.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-line-up.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-loading.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-loading.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-router-outlet.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-router-outlet.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-scroll.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-scroll.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-side-nav.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-side-nav.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-smart-menu.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-smart-menu.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-frames-vertical-hide.mjs +2 -2
- package/fesm2022/ng-atomic-components-frames-vertical-hide.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-molecules-date-input-field.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-date-input-field.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-molecules-date-range-input-field.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-date-range-input-field.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-molecules-grid-item.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-grid-item.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-molecules-loading-box.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-loading-box.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-molecules-navigation-list-item.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-navigation-list-item.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-molecules-select-input-field.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-select-input-field.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-molecules-thread-message.mjs +2 -2
- package/fesm2022/ng-atomic-components-molecules-thread-message.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-action-buttons-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-action-buttons-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-action-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-action-input-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-breadcrumb-navbar.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-breadcrumb-navbar.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-card-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-card-input-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-cvc-and-exp-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-cvc-and-exp-input-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-date-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-date-input-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-date-range-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-date-range-input-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-definition-list.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-definition-list.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-file-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-file-input-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-grid-cards-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-grid-cards-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-heading.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-heading.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-menu-footer.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-menu-footer.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-menu-header.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-menu-header.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-messages-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-messages-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-navigation-list.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-navigation-list.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-navigator.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-navigator.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-number-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-number-input-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-paginator.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-paginator.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-password-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-password-input-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-select-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-select-input-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-slider-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-slider-input-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-social-login-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-social-login-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-table.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-table.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-text-input-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-text-input-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-textarea-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-textarea-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-organisms-thread-messages-section.mjs +2 -2
- package/fesm2022/ng-atomic-components-organisms-thread-messages-section.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-pages-_index.mjs +2 -2
- package/fesm2022/ng-atomic-components-pages-_index.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-pages-columns.mjs +2 -2
- package/fesm2022/ng-atomic-components-pages-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-pages-form.mjs +2 -2
- package/fesm2022/ng-atomic-components-pages-form.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-_index.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-_index.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-background.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-background.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-code-editor.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-code-editor.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-columns.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-entrance.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-entrance.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-form.mjs +4 -4
- package/fesm2022/ng-atomic-components-templates-form.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-icon-button-menu.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-icon-button-menu.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-menu.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-menu.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-selection.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-selection.mjs.map +1 -1
- package/fesm2022/ng-atomic-components-templates-settings.mjs +2 -2
- package/fesm2022/ng-atomic-components-templates-settings.mjs.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-components-pages-_index.mjs","sources":["../tmp-esm2022/pages/_index/index.page.js","../tmp-esm2022/pages/_index/ng-atomic-components-pages-_index.js"],"sourcesContent":["var IndexPageStore_1, IndexPageDashboardStore_1;\nimport { __decorate, __metadata } from \"tslib\";\nimport { Component, Directive, InjectionToken, Injector, computed, effect, inject, input, runInInjectionContext, signal } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { RouterOutletFrame, RouterOutletFrameStore } from '@ng-atomic/components/frames/router-outlet';\nimport { convertToItemsMap, getType, IndexTemplate } from '@ng-atomic/components/templates/_index';\nimport { injectAll } from '@ng-atomic/common/stores/entities';\nimport { injectModel, injectModelName } from '@ng-atomic/common/pipes/domain';\nimport { Effect, InjectableComponent, NgAtomicComponent, TokenizedType, _computed, applyToInput, computeFake, provideComponent, provideEffect, resolveActions } from '@ng-atomic/core';\nimport { buildColumns, injectIndexForm } from '@ng-atomic/components/organisms/table';\nimport { injectIsRootPage, injectNavStartActions, injectSideAppNavStartActions, makeDI, NavActionId } from '@ng-atomic/common/services/ui';\nimport { injectEntityIdName } from '@ng-atomic/components/pages/form';\nimport { computedRawValue, getRawValue$, injectChildRouteParam, injectHasNext, injectRouteSkip } from \"@ng-atomic/common/utils\";\nimport { AppService } from '@ng-atomic/common/services/app';\nimport { IndexPipe } from '@ng-atomic/common/pipes/index';\nimport { map, startWith } from 'rxjs';\nimport { makeInitializerConfig } from '@ng-atomic/common/services/initializer';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { IndexLengthPipe } from '@ng-atomic/common/pipes/index-length';\nimport { SheetService } from '@ng-atomic/common/services/sheets';\nimport { NgAtomicFormSectionBuilder } from '@ng-atomic/components/templates/form';\nimport { derivedAsync } from 'ngxtension/derived-async';\nimport * as i0 from \"@angular/core\";\nexport function injectHighlight(key) {\n const itemId = injectChildRouteParam(key);\n return computed(() => new SelectionModel(true, itemId() ? [itemId()] : []));\n}\nconst FILTER_FUNC = new InjectionToken('FILTER_FUNC');\nexport function provideFilterFunc(useFactory) {\n const wrapped = () => (injector = inject(Injector)) => runInInjectionContext(injector, useFactory);\n return { provide: FILTER_FUNC, useFactory: wrapped };\n}\nexport function injectFilterFunc() {\n return (inject(FILTER_FUNC, { optional: true }) ?? (() => () => true))();\n}\nvar ActionId;\n(function (ActionId) {\n ActionId[\"BACK\"] = \"[@ng-atomic/components:pages/index] Back\";\n ActionId[\"CHECKBOX_CLICK\"] = \"[@ng-atomic/components/pages/index] CheckboxClick\";\n ActionId[\"HEADER_CHECKBOX_CLICK\"] = \"[@ng-atomic/components/pages/index] HeaderCheckboxClick\";\n ActionId[\"TABLE_HEADER_CLICK\"] = \"[@ng-atomic/components/pages/index] TableHeaderClick\";\n ActionId[\"TABLE_CHECKBOX_CLICK\"] = \"[@ng-atomic/components/pages/index] TableCheckboxClick\";\n ActionId[\"ADD\"] = \"[@ng-atomic/components/pages/index] Add\";\n ActionId[\"DETAIL\"] = \"[@ng-atomic/components/pages/index] Detail\";\n ActionId[\"CLOSE\"] = \"[@ng-atomic/components/pages/index] Close\";\n ActionId[\"LIST_ITEM_BUTTON_CLICKED\"] = \"[@ng-atomic/components/pages/index] ListItemButtonClick\";\n ActionId[\"TOGGLE_QUERY_FORM\"] = \"[@ng-atomic/components/pages/index] ToggleQueryForm\";\n})(ActionId || (ActionId = {}));\nexport function toggleAllSelection(selection, items) {\n if (selection.selected.length === items.length) {\n return new SelectionModel(true, []);\n }\n else {\n return new SelectionModel(true, items.map(entry => entry.id));\n }\n}\nfunction tryJsonParse(value) {\n try {\n return JSON.parse(value);\n }\n catch {\n return {};\n }\n}\nexport function recoveryFormValue(form, key = 'default') {\n // FormControlの場合とFormGroupの場合で処理を分ける\n if (form instanceof FormGroup) {\n form.patchValue(tryJsonParse(localStorage.getItem(key)));\n form.valueChanges.subscribe(value => {\n localStorage.setItem(key, JSON.stringify(value));\n });\n }\n else {\n const value = localStorage.getItem(key);\n console.debug('loaded:', value);\n form.setValue(value);\n form.valueChanges.subscribe(value => {\n console.debug('value:', value);\n localStorage.setItem(key, value);\n });\n }\n}\nexport function createToggleNavModeAction(navMode) {\n return {\n id: ActionId.TOGGLE_QUERY_FORM,\n icon: navMode === 'collapsed' ? 'expand_less' : 'expand_more',\n };\n}\nlet IndexPageStore = class IndexPageStore extends InjectableComponent {\n static { IndexPageStore_1 = this; }\n static { this.ActionId = ActionId; }\n static { this.DI = makeDI(IndexPageStore_1, () => {\n const highlight = injectHighlight(injectEntityIdName());\n const isRootPage = injectIsRootPage();\n const navStartActions = injectNavStartActions(isRootPage);\n const filterFunc = injectFilterFunc();\n const modelName = injectModelName();\n return () => ({\n style: {\n width: 'var(--page-width-lv3)',\n 'padding-left': `0`,\n },\n groupedBy: null,\n groupKeys: [],\n items: [],\n itemsMap: undefined,\n itemActions: (() => []),\n itemsMapper: undefined,\n itemsLength: 0,\n filterFunc,\n title: modelName() ? `${modelName()}一覧` : `取得中...`,\n type: 'table',\n selection: new SelectionModel(true, []),\n highlight: highlight(),\n form: new FormGroup({}),\n tableChildrenKey: null,\n navStartActions: navStartActions(),\n navEndActions: [],\n });\n }, ['components', 'pages', 'index']); }\n static { this.Config = {\n provide: IndexPageStore_1.DI.provideConfig,\n inject: IndexPageStore_1.DI.injectConfig,\n }; }\n static provideDefault() {\n return [\n IndexPageStore_1.provideDefaultConfig(),\n IndexPageStore_1.provideDefaultInitializer(),\n IndexPageStore_1.provideDefaultEffects(),\n ];\n }\n static provideDefaultInitializer() {\n return [\n IndexPageStore_1.provideFormInitializer(),\n IndexPageStore_1.provideFormValueStorageInitializer(),\n IndexPageStore_1.provideItemsLengthInitializer(),\n IndexPageStore_1.provideItemsMapperInitializer(),\n IndexPageStore_1.provideAutoTogglePageInitializer(),\n ];\n }\n static provideDefaultEffects() {\n return [\n IndexPageStore_1.provideDetailEffect(),\n IndexPageStore_1.provideAddEffect(),\n IndexPageStore_1.provideBackEffect(),\n IndexPageStore_1.provideHeaderCheckboxClickEffect(),\n IndexPageStore_1.provideCheckboxClickEffect(),\n IndexPageStore_1.provideTableHeaderClickEffect(),\n IndexPageStore_1.provideSideNavEffects(),\n ];\n }\n static provideDefaultConfig() {\n return [\n IndexPageStore_1.Config.provide(),\n IndexPageStore_1.provideItemActionsConfig(),\n IndexPageStore_1.provideTypeConfig(),\n ];\n }\n static provideTypeConfig() {\n return IndexPageStore_1.Config.provide(() => {\n return (config, context) => ({ ...config, type: getType(context) });\n });\n }\n static provideItemsFromRepository() {\n return IndexPageStore_1.Config.provide(() => {\n const Model = injectModel();\n const items = Model ? injectAll(Model) : signal([]);\n return (config) => ({ ...config, items: items() });\n });\n }\n static provideItemActionsConfig() {\n return IndexPageStore_1.Config.provide(() => {\n return (config) => ({\n ...config,\n itemActions: (item) => [\n { id: ActionId.DETAIL, icon: 'open_in_new', name: '詳細', payload: item },\n ],\n });\n });\n }\n static provideSideAppNavStartActions() {\n return IndexPageStore_1.Config.provide(() => {\n const navStartActions = injectSideAppNavStartActions();\n return (config) => ({\n ...config,\n navStartActions: navStartActions(),\n });\n });\n }\n static { this.Initializer = makeInitializerConfig(IndexPageStore_1); }\n static provideFormInitializer() {\n return IndexPageStore_1.Initializer.provide((store) => {\n const form = injectIndexForm({\n columns: buildColumns([\n 'id',\n 'createdAt',\n 'updatedAt',\n (item) => [{ id: ActionId.DETAIL, icon: 'open_in_new', name: '詳細', payload: item }],\n ]),\n });\n applyToInput(store, 'form', form);\n });\n }\n static provideFormValueStorageInitializer() {\n return IndexPageStore_1.Initializer.provide((store) => {\n const route = inject(ActivatedRoute);\n const paths = route.pathFromRoot.map(r => r?.routeConfig?.path);\n const key = `@ng-atomic/components/pages/index:${paths.filter((path) => !!path).join('/')}`;\n recoveryFormValue(store.form(), key);\n });\n }\n static provideItemsLengthInitializer() {\n return [\n IndexLengthPipe,\n IndexPageStore_1.Initializer.provide((store) => {\n const pipe = inject(IndexLengthPipe);\n const formValue = computedRawValue(() => store.form());\n effect(() => {\n const itemsLength = pipe.transform(store.items(), formValue());\n applyToInput(store, 'itemsLength', itemsLength);\n });\n }),\n ];\n }\n static provideItemsMapperInitializer() {\n return [\n IndexPipe,\n IndexPageStore_1.Initializer.provide((store) => {\n const formValue = computedRawValue(() => store.form());\n const indexPipe = inject(IndexPipe);\n effect(() => {\n const value = formValue();\n const itemsMapper = (items) => {\n const filterFunc = store.filterFunc();\n return indexPipe.transform(items.filter(filterFunc), value);\n };\n applyToInput(store, 'itemsMapper', itemsMapper);\n });\n }),\n ];\n }\n static provideDisplayedItemsPaginationInitializer() {\n return IndexPageStore_1.DI.provideInitializer((store) => {\n const page = derivedAsync(() => getRawValue$(store.form()).pipe(map(value => value.page)));\n effect(() => {\n const offset = page()?.index * (page()?.size ?? 100);\n const limit = offset + (page()?.size ?? 100);\n applyToInput(store, 'displayedItems', store.items().slice(offset, limit));\n });\n });\n }\n static provideColumnsInitializer(useFactory) {\n return [\n IndexPageStore_1.Initializer.provide((store) => {\n const columns = useFactory();\n const form = injectIndexForm({ columns: buildColumns(columns) });\n applyToInput(store, 'form', form);\n }),\n ];\n }\n static provideItemsInitializer(itemsFactory) {\n return [\n IndexPageStore_1.Initializer.provide((store) => {\n effect(() => {\n const items = itemsFactory();\n applyToInput(store, 'items', items);\n console.debug('items:', items);\n });\n }),\n ];\n }\n static provideToggleQueryFormNavEndActions() {\n return [\n IndexPageStore_1.Initializer.provide((store) => {\n effect(() => {\n applyToInput(store, 'navEndActions', [\n store.queryFormDisplayed() ? createToggleNavModeAction(store.navMode()) : null,\n ].filter(Boolean));\n });\n }),\n provideEffect(ActionId.TOGGLE_QUERY_FORM, () => {\n const store = inject(IndexPageStore_1);\n return () => {\n applyToInput(store, 'navMode', store.navMode() === 'collapsed' ? 'expanded' : 'collapsed');\n };\n }),\n ];\n }\n static provideBackEffect() {\n return provideEffect(IndexPageStore_1.ActionId.BACK, () => {\n return () => history.back();\n });\n }\n static provideDetailEffect() {\n return provideEffect(IndexPageStore_1.ActionId.DETAIL, () => {\n const app = inject(AppService);\n const store = inject(IndexPageStore_1);\n const hasNext = injectHasNext();\n return (item) => {\n app.router.navigate([item.id], {\n relativeTo: store.route,\n replaceUrl: hasNext(),\n });\n };\n });\n }\n static provideAddEffect() {\n return provideEffect(IndexPageStore_1.ActionId.ADD, () => {\n const app = inject(AppService);\n const hasNext = injectHasNext();\n const route = inject(ActivatedRoute);\n return () => {\n app.router.navigate(['new'], {\n relativeTo: route,\n replaceUrl: !!hasNext(),\n });\n };\n });\n }\n static provideCheckboxClickEffect() {\n return provideEffect(IndexPageStore_1.ActionId.TABLE_CHECKBOX_CLICK, () => {\n const store = inject(IndexPageStore_1);\n return (item) => {\n store.selection().toggle(item.id);\n };\n });\n }\n static provideTableHeaderClickEffect() {\n return provideEffect(IndexPageStore_1.ActionId.TABLE_HEADER_CLICK, () => {\n const store = inject(IndexPageStore_1);\n return (key) => {\n const sort = store.form().get(['sort']).value;\n const order = key === sort.key && sort.order === 'asc' ? 'desc' : 'asc';\n store.form().patchValue({ sort: { key, order } });\n };\n });\n }\n static provideSideNavEffects() {\n return provideEffect(NavActionId.TOGGLE_SIDE_NAV, () => {\n const app = inject(AppService);\n return () => app.sideNav.toggle();\n });\n }\n static provideHeaderCheckboxClickEffect() {\n return provideEffect(IndexPageStore_1.ActionId.HEADER_CHECKBOX_CLICK, () => {\n const store = inject(IndexPageStore_1);\n return () => {\n const selection = toggleAllSelection(store.selection(), store.displayedItems());\n applyToInput(store, 'selection', selection);\n };\n });\n }\n static provideAutoTogglePageInitializer() {\n return [\n provideEffect(RouterOutletFrameStore.ActionId.DEACTIVATED, () => {\n const store = inject(IndexPageStore_1);\n const style = computeFake(store.style());\n return () => {\n applyToInput(store, 'style', { ...style, paddingLeft: `0` });\n };\n }),\n IndexPageStore_1.Initializer.provide((store) => {\n const hasNext = injectHasNext();\n const style = computeFake(store.style());\n effect(() => {\n if (hasNext()) {\n setTimeout(() => {\n if (style.width === 'var(--page-width-lv3)') {\n applyToInput(store, 'style', {\n ...style,\n paddingLeft: 'var(--page-width-lv1)',\n });\n }\n }, 300);\n }\n });\n }),\n ];\n }\n constructor() {\n super();\n this.config = IndexPageStore_1.Config.inject();\n this.style = input(_computed(() => this.config().style));\n this.route = inject(ActivatedRoute);\n this.groupedBy = input(_computed(() => this.config().groupedBy));\n this.groupKeys = input(_computed(() => this.config().groupKeys));\n this.type = input(_computed(() => this.config().type));\n this.items = input(_computed(() => this.config().items));\n this.itemsMap = input(_computed(() => convertToItemsMap(this.displayedItems(), { mapper: this.itemsMapper() })));\n this.itemActions = input(_computed(() => this.config().itemActions));\n this.title = input(_computed(() => this.config().title));\n this.form = input(_computed(() => this.config().form));\n this.selection = input(_computed(() => this.config().selection));\n this.highlight = input(_computed(() => this.config().highlight));\n this.navStartActions = input(_computed(() => this.config().navStartActions));\n this.navEndActions = input(_computed(() => this.config().navEndActions));\n this.filterFunc = input(_computed(() => this.config().filterFunc));\n this.itemsMapper = input(_computed(() => this.config().itemsMapper));\n this.tableChildrenKey = input(_computed(() => this.config().tableChildrenKey));\n this.itemsLength = input(_computed(() => this.config().itemsLength));\n this.displayedItems = input(_computed(() => {\n let items = this.items() ?? [];\n const filterFunc = this.filterFunc();\n items = filterFunc ? items.filter(filterFunc) : items;\n const itemsMapper = this.itemsMapper();\n return itemsMapper ? itemsMapper(items) : items;\n }));\n this.selectedIds = derivedAsync(() => {\n return this.selection().changed.pipe(startWith(null), map(() => this.selection().selected ?? []));\n }, { initialValue: [] });\n this.selected = computed(() => {\n const items = this.items() ?? [];\n const selectedIdSet = new Set(this.selectedIds());\n return (items ?? []).filter(entry => selectedIdSet.has(entry.id));\n });\n this.isAllSelected = computed(() => {\n return this.displayedItems().every(entry => this.selectedIds().includes(entry.id));\n });\n this.skip = injectRouteSkip();\n this.fb = inject(FormBuilder);\n this.queryForm = input(_computed(() => this.fb.group({\n status: [''],\n })));\n this.queryFormFieldMap = input({});\n this.queryFormDisplayed = input(false);\n this.navMode = input('expanded');\n IndexPageStore_1.Initializer.initializeStore(this);\n effect(() => {\n console.debug('[IndexPageStore] itemsMap:', this.itemsMap());\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: IndexPageStore, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.5\", type: IndexPageStore, isStandalone: true, inputs: { style: { classPropertyName: \"style\", publicName: \"style\", isSignal: true, isRequired: false, transformFunction: null }, groupedBy: { classPropertyName: \"groupedBy\", publicName: \"groupedBy\", isSignal: true, isRequired: false, transformFunction: null }, groupKeys: { classPropertyName: \"groupKeys\", publicName: \"groupKeys\", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: \"type\", publicName: \"type\", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: \"items\", publicName: \"items\", isSignal: true, isRequired: false, transformFunction: null }, itemsMap: { classPropertyName: \"itemsMap\", publicName: \"itemsMap\", isSignal: true, isRequired: false, transformFunction: null }, itemActions: { classPropertyName: \"itemActions\", publicName: \"itemActions\", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: \"title\", publicName: \"title\", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: \"form\", publicName: \"form\", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: \"selection\", publicName: \"selection\", isSignal: true, isRequired: false, transformFunction: null }, highlight: { classPropertyName: \"highlight\", publicName: \"highlight\", 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 }, filterFunc: { classPropertyName: \"filterFunc\", publicName: \"filterFunc\", isSignal: true, isRequired: false, transformFunction: null }, itemsMapper: { classPropertyName: \"itemsMapper\", publicName: \"itemsMapper\", isSignal: true, isRequired: false, transformFunction: null }, tableChildrenKey: { classPropertyName: \"tableChildrenKey\", publicName: \"tableChildrenKey\", isSignal: true, isRequired: false, transformFunction: null }, itemsLength: { classPropertyName: \"itemsLength\", publicName: \"itemsLength\", isSignal: true, isRequired: false, transformFunction: null }, displayedItems: { classPropertyName: \"displayedItems\", publicName: \"displayedItems\", isSignal: true, isRequired: false, transformFunction: null }, queryForm: { classPropertyName: \"queryForm\", publicName: \"queryForm\", isSignal: true, isRequired: false, transformFunction: null }, queryFormFieldMap: { classPropertyName: \"queryFormFieldMap\", publicName: \"queryFormFieldMap\", isSignal: true, isRequired: false, transformFunction: null }, queryFormDisplayed: { classPropertyName: \"queryFormDisplayed\", publicName: \"queryFormDisplayed\", isSignal: true, isRequired: false, transformFunction: null }, navMode: { classPropertyName: \"navMode\", publicName: \"navMode\", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }\n};\nIndexPageStore = IndexPageStore_1 = __decorate([\n TokenizedType(),\n __metadata(\"design:paramtypes\", [])\n], IndexPageStore);\nexport { IndexPageStore };\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: IndexPageStore, decorators: [{\n type: Directive,\n args: [{ standalone: true }]\n }], ctorParameters: () => [] });\nlet IndexPageDashboardStore = class IndexPageDashboardStore extends InjectableComponent {\n static { IndexPageDashboardStore_1 = this; }\n static { this.provideComponent = (factory) => provideComponent(IndexPageDashboardStore_1, factory); }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: IndexPageDashboardStore, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: IndexPageDashboardStore, isStandalone: true, selector: \"ng-dashboard\", usesInheritance: true, ngImport: i0 }); }\n};\nIndexPageDashboardStore = IndexPageDashboardStore_1 = __decorate([\n TokenizedType()\n], IndexPageDashboardStore);\nexport { IndexPageDashboardStore };\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: IndexPageDashboardStore, decorators: [{\n type: Directive,\n args: [{ standalone: true, selector: 'ng-dashboard' }]\n }] });\nexport class IndexPageDashboard extends NgAtomicComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: IndexPageDashboard, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.5\", type: IndexPageDashboard, isStandalone: true, selector: \"ng-dashboard\", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: IndexPageDashboard, decorators: [{\n type: Component,\n args: [{ selector: 'ng-dashboard', template: '' }]\n }] });\nexport class IndexPage extends NgAtomicComponent {\n constructor() {\n super(...arguments);\n this.store = inject(IndexPageStore);\n this.router = inject(Router);\n this.sheet = inject(SheetService);\n }\n back() {\n this.dispatch({ id: IndexPageStore.ActionId.BACK });\n }\n close() {\n this.dispatch({ id: ActionId.CLOSE });\n }\n itemClick(item) {\n this.dispatch({ id: ActionId.DETAIL, payload: item });\n }\n onHeaderCheckboxClick(item) {\n this.dispatch({ id: IndexPageStore.ActionId.HEADER_CHECKBOX_CLICK, payload: item });\n }\n // MEMO(@nontangent): シートのアクションをページに持たせるべきかは要検討。\n onItemButtonClicked(item) {\n const actions = resolveActions(this.store.itemActions(), item);\n this.sheet.openActions(actions).then((action) => {\n this.dispatch({\n id: action.id,\n payload: action.payload,\n });\n });\n }\n onTableHeaderClick(payload) {\n this.dispatch({ id: IndexPageStore.ActionId.TABLE_HEADER_CLICK, payload });\n }\n onCheckboxClick(payload) {\n this.dispatch({ id: IndexPageStore.ActionId.TABLE_CHECKBOX_CLICK, payload });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: IndexPage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: IndexPage, isStandalone: true, selector: \"pages-index\", usesInheritance: true, hostDirectives: [{ directive: IndexPageStore, inputs: [\"items\", \"items\", \"itemsMap\", \"itemsMap\", \"displayedItems\", \"displayedItems\"] }], ngImport: i0, template: `\n <frames-router-outlet [skip]=\"store.skip()\" (action)=\"dispatch($event)\">\n <templates-index\n [style]=\"store.style()\"\n [title]=\"store.title()\"\n [type]=\"store.type()\"\n [tableChildrenKey]=\"store.tableChildrenKey()\"\n [items]=\"store.displayedItems()\"\n [itemsMap]=\"store.itemsMap()\"\n [itemsLength]=\"store.itemsLength()\"\n [itemActions]=\"store.itemActions()\"\n [groupedBy]=\"store.groupedBy()\"\n [groupKeys]=\"store.groupKeys()\"\n [form]=\"store.form()\"\n [selection]=\"store.selection()\"\n [highlight]=\"store.highlight()\"\n [navStartActions]=\"store.navStartActions()\"\n [navEndActions]=\"store.navEndActions()\"\n [navMode]=\"store.navMode()\"\n (action)=\"dispatch($event)\"\n >\n @if (store.queryFormDisplayed()) {\n <div navDashboard>\n <ng-atomic-form-section-builder\n [form]=\"store.queryForm()\"\n [fieldMap]=\"store.queryFormFieldMap()\"\n />\n </div>\n }\n <ng-dashboard dashboard injectable/>\n </templates-index>\n </frames-router-outlet>\n `, isInline: true, styles: [\"@charset \\\"UTF-8\\\";:host{width:100%;height:100%;display:block;--page-width-lv3-SCOPED-IN-index-VIpj: var(--page-width-lv3);--primary-color-SCOPED-IN-index-VIpj: var(--primary-color);--on-primary-color-SCOPED-IN-index-VIpj: var(--on-primary-color);--surface-color-SCOPED-IN-index-VIpj: var(--surface-color);--on-surface-color-SCOPED-IN-index-VIpj: var(--on-surface-color);--on-background-color-SCOPED-IN-index-VIpj: var(--on-background-color);--background-color-SCOPED-IN-index-VIpj: var(--background-color);--navigator-background-color-SCOPED-IN-index-VIpj: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-index-VIpj: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-index-VIpj: var(--table-background-color);--table-on-background-color-SCOPED-IN-index-VIpj: var(--table-on-background-color);--first-content-height: 0px;--first-content-height-SCOPED-IN-index-VIpj: var(--first-content-height)}:host .template{width:var(--page-width-lv3-SCOPED-IN-index-VIpj);padding-left:0;box-sizing:border-box;transition:padding-left .3s;--first-content-height: var(--first-content-height-SCOPED-IN-index-VIpj)}:host .template div[navDashboard]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:16px;box-sizing:border-box}:host .template div[navDashboard] ng-atomic-form-section-builder{--horizontal-padding: 0}:host *{--primary-color: var(--primary-color-SCOPED-IN-index-VIpj);--on-primary-color: var(--on-primary-color-SCOPED-IN-index-VIpj);--surface-color: var(--surface-color-SCOPED-IN-index-VIpj);--on-surface-color: var(--on-surface-color-SCOPED-IN-index-VIpj);--background-color: var(--background-color-SCOPED-IN-index-VIpj);--on-background-color: var(--on-background-color-SCOPED-IN-index-VIpj);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-index-VIpj);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-index-VIpj);--table-background-color: var(--table-background-color-SCOPED-IN-index-VIpj);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-index-VIpj)}\\n\"], dependencies: [{ kind: \"component\", type: RouterOutletFrame, selector: \"frames-router-outlet\", outputs: [\"events\"] }, { kind: \"component\", type: IndexTemplate, selector: \"templates-index\" }, { kind: \"component\", type: NgAtomicFormSectionBuilder, selector: \"ng-atomic-form-section-builder\", inputs: [\"form\", \"formFlatExcludes\", \"fieldMap\", \"fieldKeys\"] }, { kind: \"directive\", type: IndexPageDashboardStore, selector: \"ng-dashboard\" }] }); }\n}\n__decorate([\n Effect(IndexTemplate.ActionId.BACK),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], IndexPage.prototype, \"back\", null);\n__decorate([\n Effect(NavActionId.CLOSE),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], IndexPage.prototype, \"close\", null);\n__decorate([\n Effect(IndexTemplate.ActionId.ITEM_CLICK),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], IndexPage.prototype, \"itemClick\", null);\n__decorate([\n Effect(IndexTemplate.ActionId.TABLE_HEADER_CHECKBOX_CLICK),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], IndexPage.prototype, \"onHeaderCheckboxClick\", null);\n__decorate([\n Effect(IndexTemplate.ActionId.LIST_ITEM_BUTTON_CLICKED),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], IndexPage.prototype, \"onItemButtonClicked\", null);\n__decorate([\n Effect(IndexTemplate.ActionId.TABLE_HEADER_CLICK),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], IndexPage.prototype, \"onTableHeaderClick\", null);\n__decorate([\n Effect(IndexTemplate.ActionId.TABLE_CHECKBOX_CLICK),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], IndexPage.prototype, \"onCheckboxClick\", null);\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: IndexPage, decorators: [{\n type: Component,\n args: [{ selector: 'pages-index', imports: [\n RouterOutletFrame,\n IndexTemplate,\n NgAtomicFormSectionBuilder,\n IndexPageDashboardStore,\n ], template: `\n <frames-router-outlet [skip]=\"store.skip()\" (action)=\"dispatch($event)\">\n <templates-index\n [style]=\"store.style()\"\n [title]=\"store.title()\"\n [type]=\"store.type()\"\n [tableChildrenKey]=\"store.tableChildrenKey()\"\n [items]=\"store.displayedItems()\"\n [itemsMap]=\"store.itemsMap()\"\n [itemsLength]=\"store.itemsLength()\"\n [itemActions]=\"store.itemActions()\"\n [groupedBy]=\"store.groupedBy()\"\n [groupKeys]=\"store.groupKeys()\"\n [form]=\"store.form()\"\n [selection]=\"store.selection()\"\n [highlight]=\"store.highlight()\"\n [navStartActions]=\"store.navStartActions()\"\n [navEndActions]=\"store.navEndActions()\"\n [navMode]=\"store.navMode()\"\n (action)=\"dispatch($event)\"\n >\n @if (store.queryFormDisplayed()) {\n <div navDashboard>\n <ng-atomic-form-section-builder\n [form]=\"store.queryForm()\"\n [fieldMap]=\"store.queryFormFieldMap()\"\n />\n </div>\n }\n <ng-dashboard dashboard injectable/>\n </templates-index>\n </frames-router-outlet>\n `, hostDirectives: [\n {\n directive: IndexPageStore,\n inputs: [\n 'items',\n 'itemsMap',\n 'displayedItems',\n ],\n },\n ], styles: [\"@charset \\\"UTF-8\\\";:host{width:100%;height:100%;display:block;--page-width-lv3-SCOPED-IN-index-VIpj: var(--page-width-lv3);--primary-color-SCOPED-IN-index-VIpj: var(--primary-color);--on-primary-color-SCOPED-IN-index-VIpj: var(--on-primary-color);--surface-color-SCOPED-IN-index-VIpj: var(--surface-color);--on-surface-color-SCOPED-IN-index-VIpj: var(--on-surface-color);--on-background-color-SCOPED-IN-index-VIpj: var(--on-background-color);--background-color-SCOPED-IN-index-VIpj: var(--background-color);--navigator-background-color-SCOPED-IN-index-VIpj: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-index-VIpj: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-index-VIpj: var(--table-background-color);--table-on-background-color-SCOPED-IN-index-VIpj: var(--table-on-background-color);--first-content-height: 0px;--first-content-height-SCOPED-IN-index-VIpj: var(--first-content-height)}:host .template{width:var(--page-width-lv3-SCOPED-IN-index-VIpj);padding-left:0;box-sizing:border-box;transition:padding-left .3s;--first-content-height: var(--first-content-height-SCOPED-IN-index-VIpj)}:host .template div[navDashboard]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:16px;box-sizing:border-box}:host .template div[navDashboard] ng-atomic-form-section-builder{--horizontal-padding: 0}:host *{--primary-color: var(--primary-color-SCOPED-IN-index-VIpj);--on-primary-color: var(--on-primary-color-SCOPED-IN-index-VIpj);--surface-color: var(--surface-color-SCOPED-IN-index-VIpj);--on-surface-color: var(--on-surface-color-SCOPED-IN-index-VIpj);--background-color: var(--background-color-SCOPED-IN-index-VIpj);--on-background-color: var(--on-background-color-SCOPED-IN-index-VIpj);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-index-VIpj);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-index-VIpj);--table-background-color: var(--table-background-color-SCOPED-IN-index-VIpj);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-index-VIpj)}\\n\"] }]\n }], propDecorators: { back: [], close: [], itemClick: [], onHeaderCheckboxClick: [], onItemButtonClicked: [], onTableHeaderClick: [], onCheckboxClick: [] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tcG9uZW50cy9zcmMvbGliL3BhZ2VzL19pbmRleC9pbmRleC5wYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBb0IsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN2RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBWSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlFLE9BQU8sRUFBVyxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbk4sT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUEr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dCwgRGlyZWN0aXZlLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIFByb3ZpZGVyLCBTaWduYWwsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IFJvdXRlck91dGxldEZyYW1lLCBSb3V0ZXJPdXRsZXRGcmFtZVN0b3JlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL2ZyYW1lcy9yb3V0ZXItb3V0bGV0JztcbmltcG9ydCB7IGNvbnZlcnRUb0l0ZW1zTWFwLCBnZXRUeXBlLCBJbmRleFRlbXBsYXRlLCBJdGVtc01hcCB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy90ZW1wbGF0ZXMvX2luZGV4JztcbmltcG9ydCB7IGluamVjdEFsbCB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3N0b3Jlcy9lbnRpdGllcyc7XG5pbXBvcnQgeyBpbmplY3RNb2RlbCwgaW5qZWN0TW9kZWxOYW1lIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vcGlwZXMvZG9tYWluJztcbmltcG9ydCB7IEFjdGlvbnMsIEVmZmVjdCwgSW5qZWN0YWJsZUNvbXBvbmVudCwgTmdBdG9taWNDb21wb25lbnQsIFRva2VuaXplZFR5cGUsIFR5cGVPclR5cGVGYWN0b3J5LCBfY29tcHV0ZWQsIGFwcGx5VG9JbnB1dCwgY29tcHV0ZUZha2UsIHByb3ZpZGVDb21wb25lbnQsIHByb3ZpZGVFZmZlY3QsIHJlc29sdmVBY3Rpb25zIH0gZnJvbSAnQG5nLWF0b21pYy9jb3JlJztcbmltcG9ydCB7IGJ1aWxkQ29sdW1ucywgaW5qZWN0SW5kZXhGb3JtIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL29yZ2FuaXNtcy90YWJsZSc7XG5pbXBvcnQgeyBpbmplY3RJc1Jvb3RQYWdlLCBpbmplY3ROYXZTdGFydEFjdGlvbnMsIGluamVjdFNpZGVBcHBOYXZTdGFydEFjdGlvbnMsIG1ha2VESSwgTmF2QWN0aW9uSWQgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy91aSc7XG5pbXBvcnQgeyBpbmplY3RFbnRpdHlJZE5hbWUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvcGFnZXMvZm9ybSc7XG5pbXBvcnQgeyBjb21wdXRlZFJhd1ZhbHVlLCBnZXRSYXdWYWx1ZSQsIGluamVjdENoaWxkUm91dGVQYXJhbSwgaW5qZWN0SGFzTmV4dCwgaW5qZWN0Um91dGVTa2lwIH0gZnJvbSBcIkBuZy1hdG9taWMvY29tbW9uL3V0aWxzXCI7XG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvYXBwJztcbmltcG9ydCB7IEluZGV4UGlwZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3BpcGVzL2luZGV4JztcbmltcG9ydCB7IG1hcCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYWtlSW5pdGlhbGl6ZXJDb25maWcgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9pbml0aWFsaXplcic7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbmRleExlbmd0aFBpcGUgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9waXBlcy9pbmRleC1sZW5ndGgnO1xuaW1wb3J0IHsgU2hlZXRTZXJ2aWNlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvc2hlZXRzJztcbmltcG9ydCB7IE5nQXRvbWljRm9ybVNlY3Rpb25CdWlsZGVyIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL3RlbXBsYXRlcy9mb3JtJztcbmltcG9ydCB7IEZvcm1GaWVsZE1hcCB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3BpcGVzL3NtYXJ0LWZpZWxkJztcbmltcG9ydCB7IGRlcml2ZWRBc3luYyB9IGZyb20gJ25neHRlbnNpb24vZGVyaXZlZC1hc3luYyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RIaWdobGlnaHQoa2V5OiBzdHJpbmcpOiBTaWduYWw8U2VsZWN0aW9uTW9kZWw8c3RyaW5nPj4ge1xuICBjb25zdCBpdGVtSWQgPSBpbmplY3RDaGlsZFJvdXRlUGFyYW0oa2V5KTtcbiAgcmV0dXJuIGNvbXB1dGVkKCgpID0+IG5ldyBTZWxlY3Rpb25Nb2RlbDxzdHJpbmc+KHRydWUsIGl0ZW1JZCgpID8gW2l0ZW1JZCgpXSA6IFtdKSk7XG59XG5cbnR5cGUgRmlsdGVyRnVuYyA9IChpdGVtOiB7IGlkOiBzdHJpbmcgfSkgPT4gYm9vbGVhbjtcbmNvbnN0IEZJTFRFUl9GVU5DID0gbmV3IEluamVjdGlvblRva2VuPChpbmplY3Rvcj86IEluamVjdG9yKSA9PiBGaWx0ZXJGdW5jPignRklMVEVSX0ZVTkMnKTtcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRmlsdGVyRnVuYyh1c2VGYWN0b3J5OiAoKSA9PiBGaWx0ZXJGdW5jKSB7XG4gIGNvbnN0IHdyYXBwZWQgPSAoKSA9PiAoaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpKSA9PiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsIHVzZUZhY3RvcnkpO1xuICByZXR1cm4geyBwcm92aWRlOiBGSUxURVJfRlVOQywgdXNlRmFjdG9yeTogd3JhcHBlZCB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEZpbHRlckZ1bmMoKSB7XG4gIHJldHVybiAoaW5qZWN0KEZJTFRFUl9GVU5DLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/ICgoKSA9PiAoKSA9PiB0cnVlKSkoKTtcbn1cblxuZW51bSBBY3Rpb25JZCB7XG4gIEJBQ0sgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50czpwYWdlcy9pbmRleF0gQmFjaycsXG4gIENIRUNLQk9YX0NMSUNLID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHMvcGFnZXMvaW5kZXhdIENoZWNrYm94Q2xpY2snLFxuICBIRUFERVJfQ0hFQ0tCT1hfQ0xJQ0sgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50cy9wYWdlcy9pbmRleF0gSGVhZGVyQ2hlY2tib3hDbGljaycsXG4gIFRBQkxFX0hFQURFUl9DTElDSyA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzL2luZGV4XSBUYWJsZUhlYWRlckNsaWNrJyxcbiAgVEFCTEVfQ0hFQ0tCT1hfQ0xJQ0sgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50cy9wYWdlcy9pbmRleF0gVGFibGVDaGVja2JveENsaWNrJyxcbiAgQUREID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHMvcGFnZXMvaW5kZXhdIEFkZCcsXG4gIERFVEFJTCA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzL2luZGV4XSBEZXRhaWwnLFxuICBDTE9TRSA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzL2luZGV4XSBDbG9zZScsXG4gIExJU1RfSVRFTV9CVVRUT05fQ0xJQ0tFRCA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzL2luZGV4XSBMaXN0SXRlbUJ1dHRvbkNsaWNrJyxcbiAgVE9HR0xFX1FVRVJZX0ZPUk0gPSAnW0BuZy1hdG9taWMvY29tcG9uZW50cy9wYWdlcy9pbmRleF0gVG9nZ2xlUXVlcnlGb3JtJyxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZUFsbFNlbGVjdGlvbihzZWxlY3Rpb246IFNlbGVjdGlvbk1vZGVsPHN0cmluZz4sIGl0ZW1zOiB7IGlkOiBzdHJpbmcgfVtdKSB7XG4gIGlmIChzZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoID09PSBpdGVtcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbmV3IFNlbGVjdGlvbk1vZGVsPHN0cmluZz4odHJ1ZSwgW10pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgU2VsZWN0aW9uTW9kZWw8c3RyaW5nPih0cnVlLCBpdGVtcy5tYXAoZW50cnkgPT4gZW50cnkuaWQpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0cnlKc29uUGFyc2UodmFsdWU6IHN0cmluZykge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWNvdmVyeUZvcm1WYWx1ZShmb3JtOiBBYnN0cmFjdENvbnRyb2wsIGtleSA9ICdkZWZhdWx0Jykge1xuICAvLyBGb3JtQ29udHJvbOOBruWgtOWQiOOBqEZvcm1Hcm91cOOBruWgtOWQiOOBp+WHpueQhuOCkuWIhuOBkeOCi1xuICBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgIGZvcm0ucGF0Y2hWYWx1ZSh0cnlKc29uUGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSkpO1xuICAgIGZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgIGNvbnNvbGUuZGVidWcoJ2xvYWRlZDonLCB2YWx1ZSk7XG4gICAgZm9ybS5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ3ZhbHVlOicsIHZhbHVlKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUb2dnbGVOYXZNb2RlQWN0aW9uKG5hdk1vZGU6ICdleHBhbmRlZCcgfCAnY29sbGFwc2VkJykge1xuICByZXR1cm4ge1xuICAgIGlkOiBBY3Rpb25JZC5UT0dHTEVfUVVFUllfRk9STSxcbiAgICBpY29uOiBuYXZNb2RlID09PSAnY29sbGFwc2VkJyA/ICdleHBhbmRfbGVzcycgOiAnZXhwYW5kX21vcmUnLFxuICB9O1xufVxuXG5AVG9rZW5pemVkVHlwZSgpXG5ARGlyZWN0aXZlKHsgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIEluZGV4UGFnZVN0b3JlPFQ+IGV4dGVuZHMgSW5qZWN0YWJsZUNvbXBvbmVudCB7XG4gIHN0YXRpYyByZWFkb25seSBBY3Rpb25JZCA9IEFjdGlvbklkO1xuICBzdGF0aWMgcmVhZG9ubHkgREkgPSBtYWtlREkoSW5kZXhQYWdlU3RvcmUsICgpID0+IHtcbiAgICBjb25zdCBoaWdobGlnaHQgPSBpbmplY3RIaWdobGlnaHQoaW5qZWN0RW50aXR5SWROYW1lKCkpO1xuICAgIGNvbnN0IGlzUm9vdFBhZ2UgPSBpbmplY3RJc1Jvb3RQYWdlKCk7XG4gICAgY29uc3QgbmF2U3RhcnRBY3Rpb25zID0gaW5qZWN0TmF2U3RhcnRBY3Rpb25zKGlzUm9vdFBhZ2UpO1xuICAgIGNvbnN0IGZpbHRlckZ1bmMgPSBpbmplY3RGaWx0ZXJGdW5jKCk7XG4gICAgY29uc3QgbW9kZWxOYW1lID0gaW5qZWN0TW9kZWxOYW1lKCk7XG4gICAgcmV0dXJuICgpID0+ICh7XG4gICAgICBzdHlsZToge1xuICAgICAgICB3aWR0aDogJ3ZhcigtLXBhZ2Utd2lkdGgtbHYzKScsXG4gICAgICAgICdwYWRkaW5nLWxlZnQnOiBgMGAsXG4gICAgICB9IGFzIFBhcnRpYWw8Q1NTU3R5bGVEZWNsYXJhdGlvbj4sXG4gICAgICBncm91cGVkQnk6IDxzdHJpbmc+bnVsbCxcbiAgICAgIGdyb3VwS2V5czogW10sXG4gICAgICBpdGVtczogW10sXG4gICAgICBpdGVtc01hcDogPEl0ZW1zTWFwPGFueT4+dW5kZWZpbmVkLFxuICAgICAgaXRlbUFjdGlvbnM6ICgoKSA9PiBbXSkgYXMgQWN0aW9ucyxcbiAgICAgIGl0ZW1zTWFwcGVyOiA8KGl0ZW1zOiBhbnlbXSkgPT4gYW55W10+dW5kZWZpbmVkLFxuICAgICAgaXRlbXNMZW5ndGg6IDAsXG4gICAgICBmaWx0ZXJGdW5jLFxuICAgICAgdGl0bGU6IG1vZGVsTmFtZSgpID8gYCR7bW9kZWxOYW1lKCl95LiA6KanYCA6IGDlj5blvpfkuK0uLi5gLFxuICAgICAgdHlwZTogPCdsaXN0JyB8ICd0YWJsZScgfCAnZ3JpZCc+J3RhYmxlJyxcbiAgICAgIHNlbGVjdGlvbjogbmV3IFNlbGVjdGlvbk1vZGVsPHN0cmluZz4odHJ1ZSwgW10pLFxuICAgICAgaGlnaGxpZ2h0OiBoaWdobGlnaHQoKSxcbiAgICAgIGZvcm06IG5ldyBGb3JtR3JvdXAoe30pIGFzIEFic3RyYWN0Q29udHJvbCxcbiAgICAgIHRhYmxlQ2hpbGRyZW5LZXk6IG51bGwsXG4gICAgICBuYXZTdGFydEFjdGlvbnM6IG5hdlN0YXJ0QWN0aW9ucygpLFxuICAgICAgbmF2RW5kQWN0aW9uczogPEFjdGlvbnM+W10sXG4gICAgfSk7XG4gIH0sIFsnY29tcG9uZW50cycsICdwYWdlcycsICdpbmRleCddKTtcblxuICBzdGF0aWMgcmVhZG9ubHkgQ29uZmlnID0ge1xuICAgIHByb3ZpZGU6IEluZGV4UGFnZVN0b3JlLkRJLnByb3ZpZGVDb25maWcsXG4gICAgaW5qZWN0OiBJbmRleFBhZ2VTdG9yZS5ESS5pbmplY3RDb25maWcsXG4gIH07XG5cbiAgc3RhdGljIHByb3ZpZGVEZWZhdWx0KCkge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlRGVmYXVsdENvbmZpZygpLFxuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZURlZmF1bHRJbml0aWFsaXplcigpLFxuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZURlZmF1bHRFZmZlY3RzKCksXG4gICAgXTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlRGVmYXVsdEluaXRpYWxpemVyKCkge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlRm9ybUluaXRpYWxpemVyKCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlRm9ybVZhbHVlU3RvcmFnZUluaXRpYWxpemVyKCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlSXRlbXNMZW5ndGhJbml0aWFsaXplcigpLFxuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZUl0ZW1zTWFwcGVySW5pdGlhbGl6ZXIoKSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVBdXRvVG9nZ2xlUGFnZUluaXRpYWxpemVyKCksXG4gICAgXTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlRGVmYXVsdEVmZmVjdHMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVEZXRhaWxFZmZlY3QoKSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVBZGRFZmZlY3QoKSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVCYWNrRWZmZWN0KCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlSGVhZGVyQ2hlY2tib3hDbGlja0VmZmVjdCgpLFxuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZUNoZWNrYm94Q2xpY2tFZmZlY3QoKSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVUYWJsZUhlYWRlckNsaWNrRWZmZWN0KCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlU2lkZU5hdkVmZmVjdHMoKSxcbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVEZWZhdWx0Q29uZmlnKCkge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleFBhZ2VTdG9yZS5Db25maWcucHJvdmlkZSgpLFxuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZUl0ZW1BY3Rpb25zQ29uZmlnKCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlVHlwZUNvbmZpZygpLFxuICAgIF1cbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlVHlwZUNvbmZpZygpIHtcbiAgICByZXR1cm4gSW5kZXhQYWdlU3RvcmUuQ29uZmlnLnByb3ZpZGUoKCkgPT4ge1xuICAgICAgcmV0dXJuIChjb25maWcsIGNvbnRleHQpID0+ICh7IC4uLmNvbmZpZywgdHlwZTogZ2V0VHlwZShjb250ZXh0KSB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlSXRlbXNGcm9tUmVwb3NpdG9yeSgpIHtcbiAgICByZXR1cm4gSW5kZXhQYWdlU3RvcmUuQ29uZmlnLnByb3ZpZGUoKCkgPT4ge1xuICAgICAgY29uc3QgTW9kZWwgPSBpbmplY3RNb2RlbCgpO1xuICAgICAgY29uc3QgaXRlbXMgPSBNb2RlbCA/IGluamVjdEFsbChNb2RlbCkgOiBzaWduYWwoW10pO1xuICAgICAgcmV0dXJuIChjb25maWcpID0+ICh7IC4uLmNvbmZpZywgaXRlbXM6IGl0ZW1zKCkgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZUl0ZW1BY3Rpb25zQ29uZmlnKCkge1xuICAgIHJldHVybiBJbmRleFBhZ2VTdG9yZS5Db25maWcucHJvdmlkZSgoKSA9PiB7XG4gICAgICByZXR1cm4gKGNvbmZpZykgPT4gKHtcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICBpdGVtQWN0aW9uczogKGl0ZW0pID0+IFtcbiAgICAgICAgICB7IGlkOiBBY3Rpb25JZC5ERVRBSUwsIGljb246ICdvcGVuX2luX25ldycsIG5hbWU6ICfoqbPntLAnLCBwYXlsb2FkOiBpdGVtIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlU2lkZUFwcE5hdlN0YXJ0QWN0aW9ucygpIHtcbiAgICByZXR1cm4gSW5kZXhQYWdlU3RvcmUuQ29uZmlnLnByb3ZpZGUoKCkgPT4ge1xuICAgICAgY29uc3QgbmF2U3RhcnRBY3Rpb25zID0gaW5qZWN0U2lkZUFwcE5hdlN0YXJ0QWN0aW9ucygpO1xuICAgICAgcmV0dXJuIChjb25maWcpID0+ICh7XG4gICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgbmF2U3RhcnRBY3Rpb25zOiBuYXZTdGFydEFjdGlvbnMoKSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIEluaXRpYWxpemVyID0gbWFrZUluaXRpYWxpemVyQ29uZmlnKEluZGV4UGFnZVN0b3JlKTtcbiAgc3RhdGljIHByb3ZpZGVGb3JtSW5pdGlhbGl6ZXIoKSB7XG4gICAgcmV0dXJuIEluZGV4UGFnZVN0b3JlLkluaXRpYWxpemVyLnByb3ZpZGUoKHN0b3JlKSA9PiB7XG4gICAgICBjb25zdCBmb3JtID0gaW5qZWN0SW5kZXhGb3JtKHtcbiAgICAgICAgY29sdW1uczogYnVpbGRDb2x1bW5zKFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICdjcmVhdGVkQXQnLFxuICAgICAgICAgICd1cGRhdGVkQXQnLFxuICAgICAgICAgIChpdGVtOiB7IGlkOiBzdHJpbmcgfSkgPT4gW3sgaWQ6IEFjdGlvbklkLkRFVEFJTCwgaWNvbjogJ29wZW5faW5fbmV3JywgbmFtZTogJ+ips+e0sCcsIHBheWxvYWQ6IGl0ZW0gfV0sXG4gICAgICAgIF0pLFxuICAgICAgfSk7XG4gICAgICBhcHBseVRvSW5wdXQoc3RvcmUsICdmb3JtJywgZm9ybSk7XG4gICAgfSk7XG4gIH1cbiAgc3RhdGljIHByb3ZpZGVGb3JtVmFsdWVTdG9yYWdlSW5pdGlhbGl6ZXIoKSB7XG4gICAgcmV0dXJuIEluZGV4UGFnZVN0b3JlLkluaXRpYWxpemVyLnByb3ZpZGUoKHN0b3JlKSA9PiB7XG4gICAgICBjb25zdCByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgICBjb25zdCBwYXRocyA9IHJvdXRlLnBhdGhGcm9tUm9vdC5tYXAociA9PiByPy5yb3V0ZUNvbmZpZz8ucGF0aCk7XG4gICAgICBjb25zdCBrZXkgPSBgQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzL2luZGV4OiR7cGF0aHMuZmlsdGVyKChwYXRoKSA9PiAhIXBhdGgpLmpvaW4oJy8nKX1gO1xuICAgICAgcmVjb3ZlcnlGb3JtVmFsdWUoc3RvcmUuZm9ybSgpLCBrZXkpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVJdGVtc0xlbmd0aEluaXRpYWxpemVyKCkge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleExlbmd0aFBpcGUsXG4gICAgICBJbmRleFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgICBjb25zdCBwaXBlID0gaW5qZWN0KEluZGV4TGVuZ3RoUGlwZSk7XG4gICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IGNvbXB1dGVkUmF3VmFsdWUoKCkgPT4gc3RvcmUuZm9ybSgpKTtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpdGVtc0xlbmd0aCA9IHBpcGUudHJhbnNmb3JtKHN0b3JlLml0ZW1zKCksIGZvcm1WYWx1ZSgpKTtcbiAgICAgICAgICBhcHBseVRvSW5wdXQoc3RvcmUsICdpdGVtc0xlbmd0aCcsIGl0ZW1zTGVuZ3RoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVJdGVtc01hcHBlckluaXRpYWxpemVyKCkge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleFBpcGUsXG4gICAgICBJbmRleFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSBjb21wdXRlZFJhd1ZhbHVlKCgpID0+IHN0b3JlLmZvcm0oKSk7XG4gICAgICAgIGNvbnN0IGluZGV4UGlwZSA9IGluamVjdChJbmRleFBpcGUpO1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gZm9ybVZhbHVlKCkgYXMgYW55O1xuICAgICAgICAgIGNvbnN0IGl0ZW1zTWFwcGVyID0gKGl0ZW1zOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyRnVuYyA9IHN0b3JlLmZpbHRlckZ1bmMoKTtcbiAgICAgICAgICAgIHJldHVybiBpbmRleFBpcGUudHJhbnNmb3JtKGl0ZW1zLmZpbHRlcihmaWx0ZXJGdW5jKSwgdmFsdWUpO1xuICAgICAgICAgIH07XG4gICAgICAgICAgYXBwbHlUb0lucHV0KHN0b3JlLCAnaXRlbXNNYXBwZXInLCBpdGVtc01hcHBlcik7XG4gICAgICAgIH0pO1xuICAgICAgfSksXG4gICAgXTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlRGlzcGxheWVkSXRlbXNQYWdpbmF0aW9uSW5pdGlhbGl6ZXIoKTogUHJvdmlkZXIge1xuICAgIHJldHVybiBJbmRleFBhZ2VTdG9yZS5ESS5wcm92aWRlSW5pdGlhbGl6ZXIoKHN0b3JlKSA9PiB7XG4gICAgICBjb25zdCBwYWdlID0gZGVyaXZlZEFzeW5jKCgpID0+IGdldFJhd1ZhbHVlJChzdG9yZS5mb3JtKCkpLnBpcGUobWFwKHZhbHVlID0+IHZhbHVlLnBhZ2UpKSk7XG4gICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBwYWdlKCk/LmluZGV4ICogKHBhZ2UoKT8uc2l6ZSA/PyAxMDApXG4gICAgICAgIGNvbnN0IGxpbWl0ID0gb2Zmc2V0ICsgKHBhZ2UoKT8uc2l6ZSA/PyAxMDApO1xuICAgICAgICBhcHBseVRvSW5wdXQoc3RvcmUsICdkaXNwbGF5ZWRJdGVtcycsIHN0b3JlLml0ZW1zKCkuc2xpY2Uob2Zmc2V0LCBsaW1pdCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZUNvbHVtbnNJbml0aWFsaXplcih1c2VGYWN0b3J5OiAoKSA9PiBzdHJpbmdbXSk6IFByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gdXNlRmFjdG9yeSgpO1xuICAgICAgICBjb25zdCBmb3JtID0gaW5qZWN0SW5kZXhGb3JtKHsgY29sdW1uczogYnVpbGRDb2x1bW5zKGNvbHVtbnMpIH0pO1xuICAgICAgICBhcHBseVRvSW5wdXQoc3RvcmUsICdmb3JtJywgZm9ybSk7XG4gICAgICB9KSxcbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVJdGVtc0luaXRpYWxpemVyKGl0ZW1zRmFjdG9yeTogKCkgPT4gYW55W10pOiBQcm92aWRlcltdIHtcbiAgICByZXR1cm4gW1xuICAgICAgSW5kZXhQYWdlU3RvcmUuSW5pdGlhbGl6ZXIucHJvdmlkZSgoc3RvcmUpID0+IHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpdGVtcyA9IGl0ZW1zRmFjdG9yeSgpO1xuICAgICAgICAgIGFwcGx5VG9JbnB1dChzdG9yZSwgJ2l0ZW1zJywgaXRlbXMpO1xuICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ2l0ZW1zOicsIGl0ZW1zKTtcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVUb2dnbGVRdWVyeUZvcm1OYXZFbmRBY3Rpb25zKCk6IFByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgIGFwcGx5VG9JbnB1dChzdG9yZSwgJ25hdkVuZEFjdGlvbnMnLCBbXG4gICAgICAgICAgICBzdG9yZS5xdWVyeUZvcm1EaXNwbGF5ZWQoKSA/IGNyZWF0ZVRvZ2dsZU5hdk1vZGVBY3Rpb24oc3RvcmUubmF2TW9kZSgpKSA6IG51bGwsXG4gICAgICAgICAgXS5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgcHJvdmlkZUVmZmVjdChBY3Rpb25JZC5UT0dHTEVfUVVFUllfRk9STSwgKCkgPT4ge1xuICAgICAgICBjb25zdCBzdG9yZSA9IGluamVjdChJbmRleFBhZ2VTdG9yZSk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgYXBwbHlUb0lucHV0KHN0b3JlLCAnbmF2TW9kZScsIHN0b3JlLm5hdk1vZGUoKSA9PT0gJ2NvbGxhcHNlZCcgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCcpO1xuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgXTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlQmFja0VmZmVjdCgpIHtcbiAgICByZXR1cm4gcHJvdmlkZUVmZmVjdChJbmRleFBhZ2VTdG9yZS5BY3Rpb25JZC5CQUNLLCAoKSA9PiB7XG4gICAgICByZXR1cm4gKCkgPT4gaGlzdG9yeS5iYWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZURldGFpbEVmZmVjdCgpIHtcbiAgICByZXR1cm4gcHJvdmlkZUVmZmVjdChJbmRleFBhZ2VTdG9yZS5BY3Rpb25JZC5ERVRBSUwsICgpID0+IHtcbiAgICAgIGNvbnN0IGFwcCA9IGluamVjdChBcHBTZXJ2aWNlKTtcbiAgICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0KEluZGV4UGFnZVN0b3JlKTtcbiAgICAgIGNvbnN0IGhhc05leHQgPSBpbmplY3RIYXNOZXh0KCk7XG4gICAgICByZXR1cm4gKGl0ZW06IHsgaWQ6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgIGFwcC5yb3V0ZXIubmF2aWdhdGUoW2l0ZW0uaWRdLCB7XG4gICAgICAgICAgcmVsYXRpdmVUbzogc3RvcmUucm91dGUsXG4gICAgICAgICAgcmVwbGFjZVVybDogaGFzTmV4dCgpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlQWRkRWZmZWN0KCkge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KEluZGV4UGFnZVN0b3JlLkFjdGlvbklkLkFERCwgKCkgPT4ge1xuICAgICAgY29uc3QgYXBwID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICAgICAgY29uc3QgaGFzTmV4dCA9IGluamVjdEhhc05leHQoKTtcbiAgICAgIGNvbnN0IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGFwcC5yb3V0ZXIubmF2aWdhdGUoWyduZXcnXSwge1xuICAgICAgICAgIHJlbGF0aXZlVG86IHJvdXRlLFxuICAgICAgICAgIHJlcGxhY2VVcmw6ICEhaGFzTmV4dCgpLFxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZUNoZWNrYm94Q2xpY2tFZmZlY3QoKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoSW5kZXhQYWdlU3RvcmUuQWN0aW9uSWQuVEFCTEVfQ0hFQ0tCT1hfQ0xJQ0ssICgpID0+IHtcbiAgICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0KEluZGV4UGFnZVN0b3JlKTtcbiAgICAgIHJldHVybiAoaXRlbTogeyBpZDogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgc3RvcmUuc2VsZWN0aW9uKCkudG9nZ2xlKGl0ZW0uaWQpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlVGFibGVIZWFkZXJDbGlja0VmZmVjdCgpIHtcbiAgICByZXR1cm4gcHJvdmlkZUVmZmVjdChJbmRleFBhZ2VTdG9yZS5BY3Rpb25JZC5UQUJMRV9IRUFERVJfQ0xJQ0ssICgpID0+IHtcbiAgICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0KEluZGV4UGFnZVN0b3JlKTtcbiAgICAgIHJldHVybiAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3Qgc29ydCA9IHN0b3JlLmZvcm0oKS5nZXQoWydzb3J0J10pLnZhbHVlO1xuICAgICAgICBjb25zdCBvcmRlciA9IGtleSA9PT0gc29ydC5rZXkgJiYgc29ydC5vcmRlciA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJztcbiAgICAgICAgc3RvcmUuZm9ybSgpLnBhdGNoVmFsdWUoeyBzb3J0OiB7IGtleSwgb3JkZXIgfSB9KTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZVNpZGVOYXZFZmZlY3RzKCkge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KE5hdkFjdGlvbklkLlRPR0dMRV9TSURFX05BViwgKCkgPT4ge1xuICAgICAgY29uc3QgYXBwID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICAgICAgcmV0dXJuICgpID0+IGFwcC5zaWRlTmF2LnRvZ2dsZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVIZWFkZXJDaGVja2JveENsaWNrRWZmZWN0KCkge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KEluZGV4UGFnZVN0b3JlLkFjdGlvbklkLkhFQURFUl9DSEVDS0JPWF9DTElDSywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3RvcmUgPSBpbmplY3QoSW5kZXhQYWdlU3RvcmUpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdG9nZ2xlQWxsU2VsZWN0aW9uKHN0b3JlLnNlbGVjdGlvbigpLCBzdG9yZS5kaXNwbGF5ZWRJdGVtcygpKTtcbiAgICAgICAgYXBwbHlUb0lucHV0KHN0b3JlLCAnc2VsZWN0aW9uJywgc2VsZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlQXV0b1RvZ2dsZVBhZ2VJbml0aWFsaXplcigpOiBQcm92aWRlcltdIHtcbiAgICByZXR1cm4gW1xuICAgICAgcHJvdmlkZUVmZmVjdChSb3V0ZXJPdXRsZXRGcmFtZVN0b3JlLkFjdGlvbklkLkRFQUNUSVZBVEVELCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0KEluZGV4UGFnZVN0b3JlKTtcbiAgICAgICAgY29uc3Qgc3R5bGUgPSBjb21wdXRlRmFrZShzdG9yZS5zdHlsZSgpKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICBhcHBseVRvSW5wdXQoc3RvcmUsICdzdHlsZScsIHsgLi4uc3R5bGUsIHBhZGRpbmdMZWZ0OiBgMGAgfSk7XG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLkluaXRpYWxpemVyLnByb3ZpZGUoKHN0b3JlKSA9PiB7XG4gICAgICAgIGNvbnN0IGhhc05leHQgPSBpbmplY3RIYXNOZXh0KCk7XG4gICAgICAgIGNvbnN0IHN0eWxlID0gY29tcHV0ZUZha2Uoc3RvcmUuc3R5bGUoKSk7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgaWYgKGhhc05leHQoKSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChzdHlsZS53aWR0aCA9PT0gJ3ZhcigtLXBhZ2Utd2lkdGgtbHYzKScpIHtcbiAgICAgICAgICAgICAgICBhcHBseVRvSW5wdXQoc3RvcmUsICdzdHlsZScsIHtcbiAgICAgICAgICAgICAgICAgIC4uLnN0eWxlLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQ6ICd2YXIoLS1wYWdlLXdpZHRoLWx2MSknLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICBdO1xuICB9XG5cbiAgcmVhZG9ubHkgY29uZmlnID0gSW5kZXhQYWdlU3RvcmUuQ29uZmlnLmluamVjdCgpO1xuICByZWFkb25seSBzdHlsZSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnN0eWxlKSk7XG4gIHJlYWRvbmx5IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcmVhZG9ubHkgZ3JvdXBlZEJ5ID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuZ3JvdXBlZEJ5KSk7XG4gIHJlYWRvbmx5IGdyb3VwS2V5cyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmdyb3VwS2V5cykpO1xuICByZWFkb25seSB0eXBlID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkudHlwZSkpO1xuICByZWFkb25seSBpdGVtcyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLml0ZW1zKSk7XG4gIHJlYWRvbmx5IGl0ZW1zTWFwID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IGNvbnZlcnRUb0l0ZW1zTWFwKHRoaXMuZGlzcGxheWVkSXRlbXMoKSwgeyBtYXBwZXI6IHRoaXMuaXRlbXNNYXBwZXIoKSB9KSkpO1xuICByZWFkb25seSBpdGVtQWN0aW9ucyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLml0ZW1BY3Rpb25zKSk7XG4gIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkudGl0bGUpKTtcbiAgcmVhZG9ubHkgZm9ybSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmZvcm0pKTtcbiAgcmVhZG9ubHkgc2VsZWN0aW9uID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuc2VsZWN0aW9uKSk7XG4gIHJlYWRvbmx5IGhpZ2hsaWdodCA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmhpZ2hsaWdodCkpO1xuICByZWFkb25seSBuYXZTdGFydEFjdGlvbnMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5uYXZTdGFydEFjdGlvbnMpKTtcbiAgcmVhZG9ubHkgbmF2RW5kQWN0aW9ucyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLm5hdkVuZEFjdGlvbnMpKTtcbiAgcmVhZG9ubHkgZmlsdGVyRnVuYyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmZpbHRlckZ1bmMpKTtcbiAgcmVhZG9ubHkgaXRlbXNNYXBwZXIgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5pdGVtc01hcHBlcikpO1xuICByZWFkb25seSB0YWJsZUNoaWxkcmVuS2V5ID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkudGFibGVDaGlsZHJlbktleSkpO1xuXG4gIHJlYWRvbmx5IGl0ZW1zTGVuZ3RoID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuaXRlbXNMZW5ndGgpKTtcbiAgcmVhZG9ubHkgZGlzcGxheWVkSXRlbXMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBpdGVtcyA9IHRoaXMuaXRlbXMoKSA/PyBbXTtcbiAgICBjb25zdCBmaWx0ZXJGdW5jID0gdGhpcy5maWx0ZXJGdW5jKCk7XG4gICAgaXRlbXMgPSBmaWx0ZXJGdW5jID8gaXRlbXMuZmlsdGVyKGZpbHRlckZ1bmMpIDogaXRlbXM7XG4gICAgY29uc3QgaXRlbXNNYXBwZXIgPSB0aGlzLml0ZW1zTWFwcGVyKCk7XG4gICAgcmV0dXJuIGl0ZW1zTWFwcGVyID8gaXRlbXNNYXBwZXIoaXRlbXMpIDogaXRlbXM7XG4gIH0pKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRJZHMgPSBkZXJpdmVkQXN5bmMoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbigpLmNoYW5nZWQucGlwZShcbiAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgIG1hcCgoKSA9PiB0aGlzLnNlbGVjdGlvbigpLnNlbGVjdGVkID8/IFtdKSxcbiAgICApO1xuICB9LCB7IGluaXRpYWxWYWx1ZTogW10gfSk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtcygpID8/IFtdO1xuICAgIGNvbnN0IHNlbGVjdGVkSWRTZXQgPSBuZXcgU2V0KHRoaXMuc2VsZWN0ZWRJZHMoKSk7XG4gICAgcmV0dXJuIChpdGVtcyA/PyBbXSkuZmlsdGVyKGVudHJ5ID0+IHNlbGVjdGVkSWRTZXQuaGFzKGVudHJ5LmlkKSk7XG4gIH0pO1xuICByZWFkb25seSBpc0FsbFNlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXllZEl0ZW1zKCkuZXZlcnkoZW50cnkgPT4gdGhpcy5zZWxlY3RlZElkcygpLmluY2x1ZGVzKGVudHJ5LmlkKSk7XG4gIH0pO1xuICByZWFkb25seSBza2lwID0gaW5qZWN0Um91dGVTa2lwKCk7XG5cbiAgcmVhZG9ubHkgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xuICByZWFkb25seSBxdWVyeUZvcm0gPSBpbnB1dDxGb3JtR3JvdXA+KF9jb21wdXRlZCgoKSA9PiB0aGlzLmZiLmdyb3VwKHtcbiAgICBzdGF0dXM6IFsnJ10sXG4gIH0pKSk7XG4gIHJlYWRvbmx5IHF1ZXJ5Rm9ybUZpZWxkTWFwID0gaW5wdXQ8Rm9ybUZpZWxkTWFwPih7fSk7XG4gIHJlYWRvbmx5IHF1ZXJ5Rm9ybURpc3BsYXllZCA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgbmF2TW9kZSA9IGlucHV0PCdleHBhbmRlZCcgfCAnY29sbGFwc2VkJz4oJ2V4cGFuZGVkJyk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBJbmRleFBhZ2VTdG9yZS5Jbml0aWFsaXplci5pbml0aWFsaXplU3RvcmUodGhpcyk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW0luZGV4UGFnZVN0b3JlXSBpdGVtc01hcDonLCB0aGlzLml0ZW1zTWFwKCkpO1xuICAgIH0pO1xuICB9XG59XG5cbkBUb2tlbml6ZWRUeXBlKClcbkBEaXJlY3RpdmUoeyBzdGFuZGFsb25lOiB0cnVlLCBzZWxlY3RvcjogJ25nLWRhc2hib2FyZCcgfSlcbmV4cG9ydCBjbGFzcyBJbmRleFBhZ2VEYXNoYm9hcmRTdG9yZSBleHRlbmRzIEluamVjdGFibGVDb21wb25lbnQge1xuICBzdGF0aWMgcHJvdmlkZUNvbXBvbmVudCA9IDxUPihmYWN0b3J5OiBUeXBlT3JUeXBlRmFjdG9yeTxUPikgPT4gcHJvdmlkZUNvbXBvbmVudChJbmRleFBhZ2VEYXNoYm9hcmRTdG9yZSwgZmFjdG9yeSk7XG59XG5cbkBDb21wb25lbnQoeyBzZWxlY3RvcjogJ25nLWRhc2hib2FyZCcsIHRlbXBsYXRlOiAnJyB9KVxuZXhwb3J0IGNsYXNzIEluZGV4UGFnZURhc2hib2FyZCBleHRlbmRzIE5nQXRvbWljQ29tcG9uZW50IHsgfVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwYWdlcy1pbmRleCcsXG4gIGltcG9ydHM6IFtcbiAgICBSb3V0ZXJPdXRsZXRGcmFtZSxcbiAgICBJbmRleFRlbXBsYXRlLFxuICAgIE5nQXRvbWljRm9ybVNlY3Rpb25CdWlsZGVyLFxuICAgIEluZGV4UGFnZURhc2hib2FyZFN0b3JlLFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICA8ZnJhbWVzLXJvdXRlci1vdXRsZXQgW3NraXBdPVwic3RvcmUuc2tpcCgpXCIgKGFjdGlvbik9XCJkaXNwYXRjaCgkZXZlbnQpXCI+XG4gICAgPHRlbXBsYXRlcy1pbmRleFxuICAgICAgW3N0eWxlXT1cInN0b3JlLnN0eWxlKClcIlxuICAgICAgW3RpdGxlXT1cInN0b3JlLnRpdGxlKClcIlxuICAgICAgW3R5cGVdPVwic3RvcmUudHlwZSgpXCJcbiAgICAgIFt0YWJsZUNoaWxkcmVuS2V5XT1cInN0b3JlLnRhYmxlQ2hpbGRyZW5LZXkoKVwiXG4gICAgICBbaXRlbXNdPVwic3RvcmUuZGlzcGxheWVkSXRlbXMoKVwiXG4gICAgICBbaXRlbXNNYXBdPVwic3RvcmUuaXRlbXNNYXAoKVwiXG4gICAgICBbaXRlbXNMZW5ndGhdPVwic3RvcmUuaXRlbXNMZW5ndGgoKVwiXG4gICAgICBbaXRlbUFjdGlvbnNdPVwic3RvcmUuaXRlbUFjdGlvbnMoKVwiXG4gICAgICBbZ3JvdXBlZEJ5XT1cInN0b3JlLmdyb3VwZWRCeSgpXCJcbiAgICAgIFtncm91cEtleXNdPVwic3RvcmUuZ3JvdXBLZXlzKClcIlxuICAgICAgW2Zvcm1dPVwic3RvcmUuZm9ybSgpXCJcbiAgICAgIFtzZWxlY3Rpb25dPVwic3RvcmUuc2VsZWN0aW9uKClcIlxuICAgICAgW2hpZ2hsaWdodF09XCJzdG9yZS5oaWdobGlnaHQoKVwiXG4gICAgICBbbmF2U3RhcnRBY3Rpb25zXT1cInN0b3JlLm5hdlN0YXJ0QWN0aW9ucygpXCJcbiAgICAgIFtuYXZFbmRBY3Rpb25zXT1cInN0b3JlLm5hdkVuZEFjdGlvbnMoKVwiXG4gICAgICBbbmF2TW9kZV09XCJzdG9yZS5uYXZNb2RlKClcIlxuICAgICAgKGFjdGlvbik9XCJkaXNwYXRjaCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICBAaWYgKHN0b3JlLnF1ZXJ5Rm9ybURpc3BsYXllZCgpKSB7XG4gICAgICAgIDxkaXYgbmF2RGFzaGJvYXJkPlxuICAgICAgICAgIDxuZy1hdG9taWMtZm9ybS1zZWN0aW9uLWJ1aWxkZXJcbiAgICAgICAgICAgIFtmb3JtXT1cInN0b3JlLnF1ZXJ5Rm9ybSgpXCJcbiAgICAgICAgICAgIFtmaWVsZE1hcF09XCJzdG9yZS5xdWVyeUZvcm1GaWVsZE1hcCgpXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIDxuZy1kYXNoYm9hcmQgZGFzaGJvYXJkIGluamVjdGFibGUvPlxuICAgIDwvdGVtcGxhdGVzLWluZGV4PlxuICA8L2ZyYW1lcy1yb3V0ZXItb3V0bGV0PlxuICBgLFxuICBzdHlsZVVybDogJy4vaW5kZXgucGFnZS5zY3NzJyxcbiAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICB7XG4gICAgICBkaXJlY3RpdmU6IEluZGV4UGFnZVN0b3JlLFxuICAgICAgaW5wdXRzOiBbXG4gICAgICAgICdpdGVtcycsXG4gICAgICAgICdpdGVtc01hcCcsXG4gICAgICAgICdkaXNwbGF5ZWRJdGVtcycsXG4gICAgICBdLFxuICAgIH0sXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSW5kZXhQYWdlIGV4dGVuZHMgTmdBdG9taWNDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgc3RvcmUgPSBpbmplY3QoSW5kZXhQYWdlU3RvcmUpO1xuICBwcm90ZWN0ZWQgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByb3RlY3RlZCBzaGVldCA9IGluamVjdChTaGVldFNlcnZpY2UpO1xuXG4gIEBFZmZlY3QoSW5kZXhUZW1wbGF0ZS5BY3Rpb25JZC5CQUNLKVxuICBwcm90ZWN0ZWQgYmFjaygpIHtcbiAgICB0aGlzLmRpc3BhdGNoKHsgaWQ6IEluZGV4UGFnZVN0b3JlLkFjdGlvbklkLkJBQ0sgfSk7XG4gIH1cblxuICBARWZmZWN0KE5hdkFjdGlvbklkLkNMT1NFKVxuICBwcm90ZWN0ZWQgY2xvc2UoKSB7XG4gICAgdGhpcy5kaXNwYXRjaCh7IGlkOiBBY3Rpb25JZC5DTE9TRSB9KTtcbiAgfVxuXG4gIEBFZmZlY3QoSW5kZXhUZW1wbGF0ZS5BY3Rpb25JZC5JVEVNX0NMSUNLKVxuICBwcm90ZWN0ZWQgaXRlbUNsaWNrKGl0ZW06IHsgaWQ6IHN0cmluZyB9KSB7XG4gICAgdGhpcy5kaXNwYXRjaCh7IGlkOiBBY3Rpb25JZC5ERVRBSUwsIHBheWxvYWQ6IGl0ZW0gfSk7XG4gIH1cblxuICBARWZmZWN0KEluZGV4VGVtcGxhdGUuQWN0aW9uSWQuVEFCTEVfSEVBREVSX0NIRUNLQk9YX0NMSUNLKVxuICBwcm90ZWN0ZWQgb25IZWFkZXJDaGVja2JveENsaWNrKGl0ZW06IHsgaWQ6IHN0cmluZyB9KSB7XG4gICAgdGhpcy5kaXNwYXRjaCh7IGlkOiBJbmRleFBhZ2VTdG9yZS5BY3Rpb25JZC5IRUFERVJfQ0hFQ0tCT1hfQ0xJQ0ssIHBheWxvYWQ6IGl0ZW0gfSk7XG4gIH1cblxuICAvLyBNRU1PKEBub250YW5nZW50KTog44K344O844OI44Gu44Ki44Kv44K344On44Oz44KS44Oa44O844K444Gr5oyB44Gf44Gb44KL44G544GN44GL44Gv6KaB5qSc6KiO44CCXG4gIEBFZmZlY3QoSW5kZXhUZW1wbGF0ZS5BY3Rpb25JZC5MSVNUX0lURU1fQlVUVE9OX0NMSUNLRUQpXG4gIHByb3RlY3RlZCBvbkl0ZW1CdXR0b25DbGlja2VkKGl0ZW06IGFueSkge1xuICAgIGNvbnN0IGFjdGlvbnMgPSByZXNvbHZlQWN0aW9ucyh0aGlzLnN0b3JlLml0ZW1BY3Rpb25zKCksIGl0ZW0pO1xuICAgIHRoaXMuc2hlZXQub3BlbkFjdGlvbnMoYWN0aW9ucykudGhlbigoYWN0aW9uKSA9PiB7XG4gICAgICB0aGlzLmRpc3BhdGNoKHtcbiAgICAgICAgaWQ6IGFjdGlvbi5pZCxcbiAgICAgICAgcGF5bG9hZDogYWN0aW9uLnBheWxvYWQsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIEBFZmZlY3QoSW5kZXhUZW1wbGF0ZS5BY3Rpb25JZC5UQUJMRV9IRUFERVJfQ0xJQ0spXG4gIHByb3RlY3RlZCBvblRhYmxlSGVhZGVyQ2xpY2socGF5bG9hZDogYW55KSB7XG4gICAgdGhpcy5kaXNwYXRjaCh7IGlkOiBJbmRleFBhZ2VTdG9yZS5BY3Rpb25JZC5UQUJMRV9IRUFERVJfQ0xJQ0ssIHBheWxvYWQgfSk7XG4gIH1cblxuICBARWZmZWN0KEluZGV4VGVtcGxhdGUuQWN0aW9uSWQuVEFCTEVfQ0hFQ0tCT1hfQ0xJQ0spXG4gIHByb3RlY3RlZCBvbkNoZWNrYm94Q2xpY2socGF5bG9hZDogYW55KSB7XG4gICAgdGhpcy5kaXNwYXRjaCh7IGlkOiBJbmRleFBhZ2VTdG9yZS5BY3Rpb25JZC5UQUJMRV9DSEVDS0JPWF9DTElDSywgcGF5bG9hZCB9KTtcbiAgfVxuXG4gIC8vIEBFZmZlY3QoUm91dGVyT3V0bGV0RnJhbWVTdG9yZS5BY3Rpb25JZC5ERUFDVElWQVRFRClcbiAgLy8gcHJvdGVjdGVkIG9uRGVhY3RpdmF0ZWQoKSB7XG5cbiAgLy8gfVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbXBvbmVudHMtcGFnZXMtX2luZGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21wb25lbnRzL3NyYy9saWIvcGFnZXMvX2luZGV4L25nLWF0b21pYy1jb21wb25lbnRzLXBhZ2VzLV9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-atomic-components-pages-_index.mjs","sources":["../tmp-esm2022/pages/_index/index.page.js","../tmp-esm2022/pages/_index/ng-atomic-components-pages-_index.js"],"sourcesContent":["var IndexPageStore_1, IndexPageDashboardStore_1;\nimport { __decorate, __metadata } from \"tslib\";\nimport { Component, Directive, InjectionToken, Injector, computed, effect, inject, input, runInInjectionContext, signal } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { RouterOutletFrame, RouterOutletFrameStore } from '@ng-atomic/components/frames/router-outlet';\nimport { convertToItemsMap, getType, IndexTemplate } from '@ng-atomic/components/templates/_index';\nimport { injectAll } from '@ng-atomic/common/stores/entities';\nimport { injectModel, injectModelName } from '@ng-atomic/common/pipes/domain';\nimport { Effect, InjectableComponent, NgAtomicComponent, TokenizedType, _computed, applyToInput, computeFake, provideComponent, provideEffect, resolveActions } from '@ng-atomic/core';\nimport { buildColumns, injectIndexForm } from '@ng-atomic/components/organisms/table';\nimport { injectIsRootPage, injectNavStartActions, injectSideAppNavStartActions, makeDI, NavActionId } from '@ng-atomic/common/services/ui';\nimport { injectEntityIdName } from '@ng-atomic/components/pages/form';\nimport { computedRawValue, getRawValue$, injectChildRouteParam, injectHasNext, injectRouteSkip } from \"@ng-atomic/common/utils\";\nimport { AppService } from '@ng-atomic/common/services/app';\nimport { IndexPipe } from '@ng-atomic/common/pipes/index';\nimport { map, startWith } from 'rxjs';\nimport { makeInitializerConfig } from '@ng-atomic/common/services/initializer';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { IndexLengthPipe } from '@ng-atomic/common/pipes/index-length';\nimport { SheetService } from '@ng-atomic/common/services/sheets';\nimport { NgAtomicFormSectionBuilder } from '@ng-atomic/components/templates/form';\nimport { derivedAsync } from 'ngxtension/derived-async';\nimport * as i0 from \"@angular/core\";\nexport function injectHighlight(key) {\n const itemId = injectChildRouteParam(key);\n return computed(() => new SelectionModel(true, itemId() ? [itemId()] : []));\n}\nconst FILTER_FUNC = new InjectionToken('FILTER_FUNC');\nexport function provideFilterFunc(useFactory) {\n const wrapped = () => (injector = inject(Injector)) => runInInjectionContext(injector, useFactory);\n return { provide: FILTER_FUNC, useFactory: wrapped };\n}\nexport function injectFilterFunc() {\n return (inject(FILTER_FUNC, { optional: true }) ?? (() => () => true))();\n}\nvar ActionId;\n(function (ActionId) {\n ActionId[\"BACK\"] = \"[@ng-atomic/components:pages/index] Back\";\n ActionId[\"CHECKBOX_CLICK\"] = \"[@ng-atomic/components/pages/index] CheckboxClick\";\n ActionId[\"HEADER_CHECKBOX_CLICK\"] = \"[@ng-atomic/components/pages/index] HeaderCheckboxClick\";\n ActionId[\"TABLE_HEADER_CLICK\"] = \"[@ng-atomic/components/pages/index] TableHeaderClick\";\n ActionId[\"TABLE_CHECKBOX_CLICK\"] = \"[@ng-atomic/components/pages/index] TableCheckboxClick\";\n ActionId[\"ADD\"] = \"[@ng-atomic/components/pages/index] Add\";\n ActionId[\"DETAIL\"] = \"[@ng-atomic/components/pages/index] Detail\";\n ActionId[\"CLOSE\"] = \"[@ng-atomic/components/pages/index] Close\";\n ActionId[\"LIST_ITEM_BUTTON_CLICKED\"] = \"[@ng-atomic/components/pages/index] ListItemButtonClick\";\n ActionId[\"TOGGLE_QUERY_FORM\"] = \"[@ng-atomic/components/pages/index] ToggleQueryForm\";\n})(ActionId || (ActionId = {}));\nexport function toggleAllSelection(selection, items) {\n if (selection.selected.length === items.length) {\n return new SelectionModel(true, []);\n }\n else {\n return new SelectionModel(true, items.map(entry => entry.id));\n }\n}\nfunction tryJsonParse(value) {\n try {\n return JSON.parse(value);\n }\n catch {\n return {};\n }\n}\nexport function recoveryFormValue(form, key = 'default') {\n // FormControlの場合とFormGroupの場合で処理を分ける\n if (form instanceof FormGroup) {\n form.patchValue(tryJsonParse(localStorage.getItem(key)));\n form.valueChanges.subscribe(value => {\n localStorage.setItem(key, JSON.stringify(value));\n });\n }\n else {\n const value = localStorage.getItem(key);\n console.debug('loaded:', value);\n form.setValue(value);\n form.valueChanges.subscribe(value => {\n console.debug('value:', value);\n localStorage.setItem(key, value);\n });\n }\n}\nexport function createToggleNavModeAction(navMode) {\n return {\n id: ActionId.TOGGLE_QUERY_FORM,\n icon: navMode === 'collapsed' ? 'expand_less' : 'expand_more',\n };\n}\nlet IndexPageStore = class IndexPageStore extends InjectableComponent {\n static { IndexPageStore_1 = this; }\n static { this.ActionId = ActionId; }\n static { this.DI = makeDI(IndexPageStore_1, () => {\n const highlight = injectHighlight(injectEntityIdName());\n const isRootPage = injectIsRootPage();\n const navStartActions = injectNavStartActions(isRootPage);\n const filterFunc = injectFilterFunc();\n const modelName = injectModelName();\n return () => ({\n style: {\n width: 'var(--page-width-lv3)',\n 'padding-left': `0`,\n },\n groupedBy: null,\n groupKeys: [],\n items: [],\n itemsMap: undefined,\n itemActions: (() => []),\n itemsMapper: undefined,\n itemsLength: 0,\n filterFunc,\n title: modelName() ? `${modelName()}一覧` : `取得中...`,\n type: 'table',\n selection: new SelectionModel(true, []),\n highlight: highlight(),\n form: new FormGroup({}),\n tableChildrenKey: null,\n navStartActions: navStartActions(),\n navEndActions: [],\n });\n }, ['components', 'pages', 'index']); }\n static { this.Config = {\n provide: IndexPageStore_1.DI.provideConfig,\n inject: IndexPageStore_1.DI.injectConfig,\n }; }\n static provideDefault() {\n return [\n IndexPageStore_1.provideDefaultConfig(),\n IndexPageStore_1.provideDefaultInitializer(),\n IndexPageStore_1.provideDefaultEffects(),\n ];\n }\n static provideDefaultInitializer() {\n return [\n IndexPageStore_1.provideFormInitializer(),\n IndexPageStore_1.provideFormValueStorageInitializer(),\n IndexPageStore_1.provideItemsLengthInitializer(),\n IndexPageStore_1.provideItemsMapperInitializer(),\n IndexPageStore_1.provideAutoTogglePageInitializer(),\n ];\n }\n static provideDefaultEffects() {\n return [\n IndexPageStore_1.provideDetailEffect(),\n IndexPageStore_1.provideAddEffect(),\n IndexPageStore_1.provideBackEffect(),\n IndexPageStore_1.provideHeaderCheckboxClickEffect(),\n IndexPageStore_1.provideCheckboxClickEffect(),\n IndexPageStore_1.provideTableHeaderClickEffect(),\n IndexPageStore_1.provideSideNavEffects(),\n ];\n }\n static provideDefaultConfig() {\n return [\n IndexPageStore_1.Config.provide(),\n IndexPageStore_1.provideItemActionsConfig(),\n IndexPageStore_1.provideTypeConfig(),\n ];\n }\n static provideTypeConfig() {\n return IndexPageStore_1.Config.provide(() => {\n return (config, context) => ({ ...config, type: getType(context) });\n });\n }\n static provideItemsFromRepository() {\n return IndexPageStore_1.Config.provide(() => {\n const Model = injectModel();\n const items = Model ? injectAll(Model) : signal([]);\n return (config) => ({ ...config, items: items() });\n });\n }\n static provideItemActionsConfig() {\n return IndexPageStore_1.Config.provide(() => {\n return (config) => ({\n ...config,\n itemActions: (item) => [\n { id: ActionId.DETAIL, icon: 'open_in_new', name: '詳細', payload: item },\n ],\n });\n });\n }\n static provideSideAppNavStartActions() {\n return IndexPageStore_1.Config.provide(() => {\n const navStartActions = injectSideAppNavStartActions();\n return (config) => ({\n ...config,\n navStartActions: navStartActions(),\n });\n });\n }\n static { this.Initializer = makeInitializerConfig(IndexPageStore_1); }\n static provideFormInitializer() {\n return IndexPageStore_1.Initializer.provide((store) => {\n const form = injectIndexForm({\n columns: buildColumns([\n 'id',\n 'createdAt',\n 'updatedAt',\n (item) => [{ id: ActionId.DETAIL, icon: 'open_in_new', name: '詳細', payload: item }],\n ]),\n });\n applyToInput(store, 'form', form);\n });\n }\n static provideFormValueStorageInitializer() {\n return IndexPageStore_1.Initializer.provide((store) => {\n const route = inject(ActivatedRoute);\n const paths = route.pathFromRoot.map(r => r?.routeConfig?.path);\n const key = `@ng-atomic/components/pages/index:${paths.filter((path) => !!path).join('/')}`;\n recoveryFormValue(store.form(), key);\n });\n }\n static provideItemsLengthInitializer() {\n return [\n IndexLengthPipe,\n IndexPageStore_1.Initializer.provide((store) => {\n const pipe = inject(IndexLengthPipe);\n const formValue = computedRawValue(() => store.form());\n effect(() => {\n const itemsLength = pipe.transform(store.items(), formValue());\n applyToInput(store, 'itemsLength', itemsLength);\n });\n }),\n ];\n }\n static provideItemsMapperInitializer() {\n return [\n IndexPipe,\n IndexPageStore_1.Initializer.provide((store) => {\n const formValue = computedRawValue(() => store.form());\n const indexPipe = inject(IndexPipe);\n effect(() => {\n const value = formValue();\n const itemsMapper = (items) => {\n const filterFunc = store.filterFunc();\n return indexPipe.transform(items.filter(filterFunc), value);\n };\n applyToInput(store, 'itemsMapper', itemsMapper);\n });\n }),\n ];\n }\n static provideDisplayedItemsPaginationInitializer() {\n return IndexPageStore_1.DI.provideInitializer((store) => {\n const page = derivedAsync(() => getRawValue$(store.form()).pipe(map(value => value.page)));\n effect(() => {\n const offset = page()?.index * (page()?.size ?? 100);\n const limit = offset + (page()?.size ?? 100);\n applyToInput(store, 'displayedItems', store.items().slice(offset, limit));\n });\n });\n }\n static provideColumnsInitializer(useFactory) {\n return [\n IndexPageStore_1.Initializer.provide((store) => {\n const columns = useFactory();\n const form = injectIndexForm({ columns: buildColumns(columns) });\n applyToInput(store, 'form', form);\n }),\n ];\n }\n static provideItemsInitializer(itemsFactory) {\n return [\n IndexPageStore_1.Initializer.provide((store) => {\n effect(() => {\n const items = itemsFactory();\n applyToInput(store, 'items', items);\n console.debug('items:', items);\n });\n }),\n ];\n }\n static provideToggleQueryFormNavEndActions() {\n return [\n IndexPageStore_1.Initializer.provide((store) => {\n effect(() => {\n applyToInput(store, 'navEndActions', [\n store.queryFormDisplayed() ? createToggleNavModeAction(store.navMode()) : null,\n ].filter(Boolean));\n });\n }),\n provideEffect(ActionId.TOGGLE_QUERY_FORM, () => {\n const store = inject(IndexPageStore_1);\n return () => {\n applyToInput(store, 'navMode', store.navMode() === 'collapsed' ? 'expanded' : 'collapsed');\n };\n }),\n ];\n }\n static provideBackEffect() {\n return provideEffect(IndexPageStore_1.ActionId.BACK, () => {\n return () => history.back();\n });\n }\n static provideDetailEffect() {\n return provideEffect(IndexPageStore_1.ActionId.DETAIL, () => {\n const app = inject(AppService);\n const store = inject(IndexPageStore_1);\n const hasNext = injectHasNext();\n return (item) => {\n app.router.navigate([item.id], {\n relativeTo: store.route,\n replaceUrl: hasNext(),\n });\n };\n });\n }\n static provideAddEffect() {\n return provideEffect(IndexPageStore_1.ActionId.ADD, () => {\n const app = inject(AppService);\n const hasNext = injectHasNext();\n const route = inject(ActivatedRoute);\n return () => {\n app.router.navigate(['new'], {\n relativeTo: route,\n replaceUrl: !!hasNext(),\n });\n };\n });\n }\n static provideCheckboxClickEffect() {\n return provideEffect(IndexPageStore_1.ActionId.TABLE_CHECKBOX_CLICK, () => {\n const store = inject(IndexPageStore_1);\n return (item) => {\n store.selection().toggle(item.id);\n };\n });\n }\n static provideTableHeaderClickEffect() {\n return provideEffect(IndexPageStore_1.ActionId.TABLE_HEADER_CLICK, () => {\n const store = inject(IndexPageStore_1);\n return (key) => {\n const sort = store.form().get(['sort']).value;\n const order = key === sort.key && sort.order === 'asc' ? 'desc' : 'asc';\n store.form().patchValue({ sort: { key, order } });\n };\n });\n }\n static provideSideNavEffects() {\n return provideEffect(NavActionId.TOGGLE_SIDE_NAV, () => {\n const app = inject(AppService);\n return () => app.sideNav.toggle();\n });\n }\n static provideHeaderCheckboxClickEffect() {\n return provideEffect(IndexPageStore_1.ActionId.HEADER_CHECKBOX_CLICK, () => {\n const store = inject(IndexPageStore_1);\n return () => {\n const selection = toggleAllSelection(store.selection(), store.displayedItems());\n applyToInput(store, 'selection', selection);\n };\n });\n }\n static provideAutoTogglePageInitializer() {\n return [\n provideEffect(RouterOutletFrameStore.ActionId.DEACTIVATED, () => {\n const store = inject(IndexPageStore_1);\n const style = computeFake(store.style());\n return () => {\n applyToInput(store, 'style', { ...style, paddingLeft: `0` });\n };\n }),\n IndexPageStore_1.Initializer.provide((store) => {\n const hasNext = injectHasNext();\n const style = computeFake(store.style());\n effect(() => {\n if (hasNext()) {\n setTimeout(() => {\n if (style.width === 'var(--page-width-lv3)') {\n applyToInput(store, 'style', {\n ...style,\n paddingLeft: 'var(--page-width-lv1)',\n });\n }\n }, 300);\n }\n });\n }),\n ];\n }\n constructor() {\n super();\n this.config = IndexPageStore_1.Config.inject();\n this.style = input(_computed(() => this.config().style));\n this.route = inject(ActivatedRoute);\n this.groupedBy = input(_computed(() => this.config().groupedBy));\n this.groupKeys = input(_computed(() => this.config().groupKeys));\n this.type = input(_computed(() => this.config().type));\n this.items = input(_computed(() => this.config().items));\n this.itemsMap = input(_computed(() => convertToItemsMap(this.displayedItems(), { mapper: this.itemsMapper() })));\n this.itemActions = input(_computed(() => this.config().itemActions));\n this.title = input(_computed(() => this.config().title));\n this.form = input(_computed(() => this.config().form));\n this.selection = input(_computed(() => this.config().selection));\n this.highlight = input(_computed(() => this.config().highlight));\n this.navStartActions = input(_computed(() => this.config().navStartActions));\n this.navEndActions = input(_computed(() => this.config().navEndActions));\n this.filterFunc = input(_computed(() => this.config().filterFunc));\n this.itemsMapper = input(_computed(() => this.config().itemsMapper));\n this.tableChildrenKey = input(_computed(() => this.config().tableChildrenKey));\n this.itemsLength = input(_computed(() => this.config().itemsLength));\n this.displayedItems = input(_computed(() => {\n let items = this.items() ?? [];\n const filterFunc = this.filterFunc();\n items = filterFunc ? items.filter(filterFunc) : items;\n const itemsMapper = this.itemsMapper();\n return itemsMapper ? itemsMapper(items) : items;\n }));\n this.selectedIds = derivedAsync(() => {\n return this.selection().changed.pipe(startWith(null), map(() => this.selection().selected ?? []));\n }, { initialValue: [] });\n this.selected = computed(() => {\n const items = this.items() ?? [];\n const selectedIdSet = new Set(this.selectedIds());\n return (items ?? []).filter(entry => selectedIdSet.has(entry.id));\n });\n this.isAllSelected = computed(() => {\n return this.displayedItems().every(entry => this.selectedIds().includes(entry.id));\n });\n this.skip = injectRouteSkip();\n this.fb = inject(FormBuilder);\n this.queryForm = input(_computed(() => this.fb.group({\n status: [''],\n })));\n this.queryFormFieldMap = input({});\n this.queryFormDisplayed = input(false);\n this.navMode = input('expanded');\n IndexPageStore_1.Initializer.initializeStore(this);\n effect(() => {\n console.debug('[IndexPageStore] itemsMap:', this.itemsMap());\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: IndexPageStore, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.5\", type: IndexPageStore, isStandalone: true, inputs: { style: { classPropertyName: \"style\", publicName: \"style\", isSignal: true, isRequired: false, transformFunction: null }, groupedBy: { classPropertyName: \"groupedBy\", publicName: \"groupedBy\", isSignal: true, isRequired: false, transformFunction: null }, groupKeys: { classPropertyName: \"groupKeys\", publicName: \"groupKeys\", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: \"type\", publicName: \"type\", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: \"items\", publicName: \"items\", isSignal: true, isRequired: false, transformFunction: null }, itemsMap: { classPropertyName: \"itemsMap\", publicName: \"itemsMap\", isSignal: true, isRequired: false, transformFunction: null }, itemActions: { classPropertyName: \"itemActions\", publicName: \"itemActions\", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: \"title\", publicName: \"title\", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: \"form\", publicName: \"form\", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: \"selection\", publicName: \"selection\", isSignal: true, isRequired: false, transformFunction: null }, highlight: { classPropertyName: \"highlight\", publicName: \"highlight\", 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 }, filterFunc: { classPropertyName: \"filterFunc\", publicName: \"filterFunc\", isSignal: true, isRequired: false, transformFunction: null }, itemsMapper: { classPropertyName: \"itemsMapper\", publicName: \"itemsMapper\", isSignal: true, isRequired: false, transformFunction: null }, tableChildrenKey: { classPropertyName: \"tableChildrenKey\", publicName: \"tableChildrenKey\", isSignal: true, isRequired: false, transformFunction: null }, itemsLength: { classPropertyName: \"itemsLength\", publicName: \"itemsLength\", isSignal: true, isRequired: false, transformFunction: null }, displayedItems: { classPropertyName: \"displayedItems\", publicName: \"displayedItems\", isSignal: true, isRequired: false, transformFunction: null }, queryForm: { classPropertyName: \"queryForm\", publicName: \"queryForm\", isSignal: true, isRequired: false, transformFunction: null }, queryFormFieldMap: { classPropertyName: \"queryFormFieldMap\", publicName: \"queryFormFieldMap\", isSignal: true, isRequired: false, transformFunction: null }, queryFormDisplayed: { classPropertyName: \"queryFormDisplayed\", publicName: \"queryFormDisplayed\", isSignal: true, isRequired: false, transformFunction: null }, navMode: { classPropertyName: \"navMode\", publicName: \"navMode\", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }\n};\nIndexPageStore = IndexPageStore_1 = __decorate([\n TokenizedType(),\n __metadata(\"design:paramtypes\", [])\n], IndexPageStore);\nexport { IndexPageStore };\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: IndexPageStore, decorators: [{\n type: Directive,\n args: [{ standalone: true }]\n }], ctorParameters: () => [] });\nlet IndexPageDashboardStore = class IndexPageDashboardStore extends InjectableComponent {\n static { IndexPageDashboardStore_1 = this; }\n static { this.provideComponent = (factory) => provideComponent(IndexPageDashboardStore_1, factory); }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: IndexPageDashboardStore, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: IndexPageDashboardStore, isStandalone: true, selector: \"ng-dashboard\", usesInheritance: true, ngImport: i0 }); }\n};\nIndexPageDashboardStore = IndexPageDashboardStore_1 = __decorate([\n TokenizedType()\n], IndexPageDashboardStore);\nexport { IndexPageDashboardStore };\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: IndexPageDashboardStore, decorators: [{\n type: Directive,\n args: [{ standalone: true, selector: 'ng-dashboard' }]\n }] });\nexport class IndexPageDashboard extends NgAtomicComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: IndexPageDashboard, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.5\", type: IndexPageDashboard, isStandalone: true, selector: \"ng-dashboard\", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: IndexPageDashboard, decorators: [{\n type: Component,\n args: [{ selector: 'ng-dashboard', template: '' }]\n }] });\nexport class IndexPage extends NgAtomicComponent {\n constructor() {\n super(...arguments);\n this.store = inject(IndexPageStore);\n this.router = inject(Router);\n this.sheet = inject(SheetService);\n }\n back() {\n this.dispatch({ id: IndexPageStore.ActionId.BACK });\n }\n close() {\n this.dispatch({ id: ActionId.CLOSE });\n }\n itemClick(item) {\n this.dispatch({ id: ActionId.DETAIL, payload: item });\n }\n onHeaderCheckboxClick(item) {\n this.dispatch({ id: IndexPageStore.ActionId.HEADER_CHECKBOX_CLICK, payload: item });\n }\n // MEMO(@nontangent): シートのアクションをページに持たせるべきかは要検討。\n onItemButtonClicked(item) {\n const actions = resolveActions(this.store.itemActions(), item);\n this.sheet.openActions(actions).then((action) => {\n this.dispatch({\n id: action.id,\n payload: action.payload,\n });\n });\n }\n onTableHeaderClick(payload) {\n this.dispatch({ id: IndexPageStore.ActionId.TABLE_HEADER_CLICK, payload });\n }\n onCheckboxClick(payload) {\n this.dispatch({ id: IndexPageStore.ActionId.TABLE_CHECKBOX_CLICK, payload });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: IndexPage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: IndexPage, isStandalone: true, selector: \"pages-index\", usesInheritance: true, hostDirectives: [{ directive: IndexPageStore, inputs: [\"items\", \"items\", \"itemsMap\", \"itemsMap\", \"displayedItems\", \"displayedItems\"] }], ngImport: i0, template: `\n <frames-router-outlet [skip]=\"store.skip()\" (action)=\"dispatch($event)\">\n <templates-index\n [style]=\"store.style()\"\n [title]=\"store.title()\"\n [type]=\"store.type()\"\n [tableChildrenKey]=\"store.tableChildrenKey()\"\n [items]=\"store.displayedItems()\"\n [itemsMap]=\"store.itemsMap()\"\n [itemsLength]=\"store.itemsLength()\"\n [itemActions]=\"store.itemActions()\"\n [groupedBy]=\"store.groupedBy()\"\n [groupKeys]=\"store.groupKeys()\"\n [form]=\"store.form()\"\n [selection]=\"store.selection()\"\n [highlight]=\"store.highlight()\"\n [navStartActions]=\"store.navStartActions()\"\n [navEndActions]=\"store.navEndActions()\"\n [navMode]=\"store.navMode()\"\n (action)=\"dispatch($event)\"\n >\n @if (store.queryFormDisplayed()) {\n <div navDashboard>\n <ng-atomic-form-section-builder\n [form]=\"store.queryForm()\"\n [fieldMap]=\"store.queryFormFieldMap()\"\n />\n </div>\n }\n <ng-dashboard dashboard injectable/>\n </templates-index>\n </frames-router-outlet>\n `, isInline: true, styles: [\"@charset \\\"UTF-8\\\";:host{width:100%;height:100%;display:block;--page-width-lv3-SCOPED-IN-index-an20: var(--page-width-lv3);--primary-color-SCOPED-IN-index-an20: var(--primary-color);--on-primary-color-SCOPED-IN-index-an20: var(--on-primary-color);--surface-color-SCOPED-IN-index-an20: var(--surface-color);--on-surface-color-SCOPED-IN-index-an20: var(--on-surface-color);--on-background-color-SCOPED-IN-index-an20: var(--on-background-color);--background-color-SCOPED-IN-index-an20: var(--background-color);--navigator-background-color-SCOPED-IN-index-an20: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-index-an20: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-index-an20: var(--table-background-color);--table-on-background-color-SCOPED-IN-index-an20: var(--table-on-background-color);--first-content-height: 0px;--first-content-height-SCOPED-IN-index-an20: var(--first-content-height)}:host .template{width:var(--page-width-lv3-SCOPED-IN-index-an20);padding-left:0;box-sizing:border-box;transition:padding-left .3s;--first-content-height: var(--first-content-height-SCOPED-IN-index-an20)}:host .template div[navDashboard]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:16px;box-sizing:border-box}:host .template div[navDashboard] ng-atomic-form-section-builder{--horizontal-padding: 0}:host *{--primary-color: var(--primary-color-SCOPED-IN-index-an20);--on-primary-color: var(--on-primary-color-SCOPED-IN-index-an20);--surface-color: var(--surface-color-SCOPED-IN-index-an20);--on-surface-color: var(--on-surface-color-SCOPED-IN-index-an20);--background-color: var(--background-color-SCOPED-IN-index-an20);--on-background-color: var(--on-background-color-SCOPED-IN-index-an20);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-index-an20);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-index-an20);--table-background-color: var(--table-background-color-SCOPED-IN-index-an20);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-index-an20)}\\n\"], dependencies: [{ kind: \"component\", type: RouterOutletFrame, selector: \"frames-router-outlet\", outputs: [\"events\"] }, { kind: \"component\", type: IndexTemplate, selector: \"templates-index\" }, { kind: \"component\", type: NgAtomicFormSectionBuilder, selector: \"ng-atomic-form-section-builder\", inputs: [\"form\", \"formFlatExcludes\", \"fieldMap\", \"fieldKeys\"] }, { kind: \"directive\", type: IndexPageDashboardStore, selector: \"ng-dashboard\" }] }); }\n}\n__decorate([\n Effect(IndexTemplate.ActionId.BACK),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], IndexPage.prototype, \"back\", null);\n__decorate([\n Effect(NavActionId.CLOSE),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], IndexPage.prototype, \"close\", null);\n__decorate([\n Effect(IndexTemplate.ActionId.ITEM_CLICK),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], IndexPage.prototype, \"itemClick\", null);\n__decorate([\n Effect(IndexTemplate.ActionId.TABLE_HEADER_CHECKBOX_CLICK),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], IndexPage.prototype, \"onHeaderCheckboxClick\", null);\n__decorate([\n Effect(IndexTemplate.ActionId.LIST_ITEM_BUTTON_CLICKED),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], IndexPage.prototype, \"onItemButtonClicked\", null);\n__decorate([\n Effect(IndexTemplate.ActionId.TABLE_HEADER_CLICK),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], IndexPage.prototype, \"onTableHeaderClick\", null);\n__decorate([\n Effect(IndexTemplate.ActionId.TABLE_CHECKBOX_CLICK),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], IndexPage.prototype, \"onCheckboxClick\", null);\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: IndexPage, decorators: [{\n type: Component,\n args: [{ selector: 'pages-index', imports: [\n RouterOutletFrame,\n IndexTemplate,\n NgAtomicFormSectionBuilder,\n IndexPageDashboardStore,\n ], template: `\n <frames-router-outlet [skip]=\"store.skip()\" (action)=\"dispatch($event)\">\n <templates-index\n [style]=\"store.style()\"\n [title]=\"store.title()\"\n [type]=\"store.type()\"\n [tableChildrenKey]=\"store.tableChildrenKey()\"\n [items]=\"store.displayedItems()\"\n [itemsMap]=\"store.itemsMap()\"\n [itemsLength]=\"store.itemsLength()\"\n [itemActions]=\"store.itemActions()\"\n [groupedBy]=\"store.groupedBy()\"\n [groupKeys]=\"store.groupKeys()\"\n [form]=\"store.form()\"\n [selection]=\"store.selection()\"\n [highlight]=\"store.highlight()\"\n [navStartActions]=\"store.navStartActions()\"\n [navEndActions]=\"store.navEndActions()\"\n [navMode]=\"store.navMode()\"\n (action)=\"dispatch($event)\"\n >\n @if (store.queryFormDisplayed()) {\n <div navDashboard>\n <ng-atomic-form-section-builder\n [form]=\"store.queryForm()\"\n [fieldMap]=\"store.queryFormFieldMap()\"\n />\n </div>\n }\n <ng-dashboard dashboard injectable/>\n </templates-index>\n </frames-router-outlet>\n `, hostDirectives: [\n {\n directive: IndexPageStore,\n inputs: [\n 'items',\n 'itemsMap',\n 'displayedItems',\n ],\n },\n ], styles: [\"@charset \\\"UTF-8\\\";:host{width:100%;height:100%;display:block;--page-width-lv3-SCOPED-IN-index-an20: var(--page-width-lv3);--primary-color-SCOPED-IN-index-an20: var(--primary-color);--on-primary-color-SCOPED-IN-index-an20: var(--on-primary-color);--surface-color-SCOPED-IN-index-an20: var(--surface-color);--on-surface-color-SCOPED-IN-index-an20: var(--on-surface-color);--on-background-color-SCOPED-IN-index-an20: var(--on-background-color);--background-color-SCOPED-IN-index-an20: var(--background-color);--navigator-background-color-SCOPED-IN-index-an20: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-index-an20: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-index-an20: var(--table-background-color);--table-on-background-color-SCOPED-IN-index-an20: var(--table-on-background-color);--first-content-height: 0px;--first-content-height-SCOPED-IN-index-an20: var(--first-content-height)}:host .template{width:var(--page-width-lv3-SCOPED-IN-index-an20);padding-left:0;box-sizing:border-box;transition:padding-left .3s;--first-content-height: var(--first-content-height-SCOPED-IN-index-an20)}:host .template div[navDashboard]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:16px;box-sizing:border-box}:host .template div[navDashboard] ng-atomic-form-section-builder{--horizontal-padding: 0}:host *{--primary-color: var(--primary-color-SCOPED-IN-index-an20);--on-primary-color: var(--on-primary-color-SCOPED-IN-index-an20);--surface-color: var(--surface-color-SCOPED-IN-index-an20);--on-surface-color: var(--on-surface-color-SCOPED-IN-index-an20);--background-color: var(--background-color-SCOPED-IN-index-an20);--on-background-color: var(--on-background-color-SCOPED-IN-index-an20);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-index-an20);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-index-an20);--table-background-color: var(--table-background-color-SCOPED-IN-index-an20);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-index-an20)}\\n\"] }]\n }], propDecorators: { back: [], close: [], itemClick: [], onHeaderCheckboxClick: [], onItemButtonClicked: [], onTableHeaderClick: [], onCheckboxClick: [] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tcG9uZW50cy9zcmMvbGliL3BhZ2VzL19pbmRleC9pbmRleC5wYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBb0IsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN2RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBWSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlFLE9BQU8sRUFBVyxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbk4sT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUEr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dCwgRGlyZWN0aXZlLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIFByb3ZpZGVyLCBTaWduYWwsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IFJvdXRlck91dGxldEZyYW1lLCBSb3V0ZXJPdXRsZXRGcmFtZVN0b3JlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL2ZyYW1lcy9yb3V0ZXItb3V0bGV0JztcbmltcG9ydCB7IGNvbnZlcnRUb0l0ZW1zTWFwLCBnZXRUeXBlLCBJbmRleFRlbXBsYXRlLCBJdGVtc01hcCB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy90ZW1wbGF0ZXMvX2luZGV4JztcbmltcG9ydCB7IGluamVjdEFsbCB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3N0b3Jlcy9lbnRpdGllcyc7XG5pbXBvcnQgeyBpbmplY3RNb2RlbCwgaW5qZWN0TW9kZWxOYW1lIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vcGlwZXMvZG9tYWluJztcbmltcG9ydCB7IEFjdGlvbnMsIEVmZmVjdCwgSW5qZWN0YWJsZUNvbXBvbmVudCwgTmdBdG9taWNDb21wb25lbnQsIFRva2VuaXplZFR5cGUsIFR5cGVPclR5cGVGYWN0b3J5LCBfY29tcHV0ZWQsIGFwcGx5VG9JbnB1dCwgY29tcHV0ZUZha2UsIHByb3ZpZGVDb21wb25lbnQsIHByb3ZpZGVFZmZlY3QsIHJlc29sdmVBY3Rpb25zIH0gZnJvbSAnQG5nLWF0b21pYy9jb3JlJztcbmltcG9ydCB7IGJ1aWxkQ29sdW1ucywgaW5qZWN0SW5kZXhGb3JtIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL29yZ2FuaXNtcy90YWJsZSc7XG5pbXBvcnQgeyBpbmplY3RJc1Jvb3RQYWdlLCBpbmplY3ROYXZTdGFydEFjdGlvbnMsIGluamVjdFNpZGVBcHBOYXZTdGFydEFjdGlvbnMsIG1ha2VESSwgTmF2QWN0aW9uSWQgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy91aSc7XG5pbXBvcnQgeyBpbmplY3RFbnRpdHlJZE5hbWUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvcGFnZXMvZm9ybSc7XG5pbXBvcnQgeyBjb21wdXRlZFJhd1ZhbHVlLCBnZXRSYXdWYWx1ZSQsIGluamVjdENoaWxkUm91dGVQYXJhbSwgaW5qZWN0SGFzTmV4dCwgaW5qZWN0Um91dGVTa2lwIH0gZnJvbSBcIkBuZy1hdG9taWMvY29tbW9uL3V0aWxzXCI7XG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvYXBwJztcbmltcG9ydCB7IEluZGV4UGlwZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3BpcGVzL2luZGV4JztcbmltcG9ydCB7IG1hcCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYWtlSW5pdGlhbGl6ZXJDb25maWcgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9pbml0aWFsaXplcic7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbmRleExlbmd0aFBpcGUgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9waXBlcy9pbmRleC1sZW5ndGgnO1xuaW1wb3J0IHsgU2hlZXRTZXJ2aWNlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvc2hlZXRzJztcbmltcG9ydCB7IE5nQXRvbWljRm9ybVNlY3Rpb25CdWlsZGVyIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL3RlbXBsYXRlcy9mb3JtJztcbmltcG9ydCB7IEZvcm1GaWVsZE1hcCB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3BpcGVzL3NtYXJ0LWZpZWxkJztcbmltcG9ydCB7IGRlcml2ZWRBc3luYyB9IGZyb20gJ25neHRlbnNpb24vZGVyaXZlZC1hc3luYyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RIaWdobGlnaHQoa2V5OiBzdHJpbmcpOiBTaWduYWw8U2VsZWN0aW9uTW9kZWw8c3RyaW5nPj4ge1xuICBjb25zdCBpdGVtSWQgPSBpbmplY3RDaGlsZFJvdXRlUGFyYW0oa2V5KTtcbiAgcmV0dXJuIGNvbXB1dGVkKCgpID0+IG5ldyBTZWxlY3Rpb25Nb2RlbDxzdHJpbmc+KHRydWUsIGl0ZW1JZCgpID8gW2l0ZW1JZCgpXSA6IFtdKSk7XG59XG5cbnR5cGUgRmlsdGVyRnVuYyA9IChpdGVtOiB7IGlkOiBzdHJpbmcgfSkgPT4gYm9vbGVhbjtcbmNvbnN0IEZJTFRFUl9GVU5DID0gbmV3IEluamVjdGlvblRva2VuPChpbmplY3Rvcj86IEluamVjdG9yKSA9PiBGaWx0ZXJGdW5jPignRklMVEVSX0ZVTkMnKTtcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRmlsdGVyRnVuYyh1c2VGYWN0b3J5OiAoKSA9PiBGaWx0ZXJGdW5jKSB7XG4gIGNvbnN0IHdyYXBwZWQgPSAoKSA9PiAoaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpKSA9PiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsIHVzZUZhY3RvcnkpO1xuICByZXR1cm4geyBwcm92aWRlOiBGSUxURVJfRlVOQywgdXNlRmFjdG9yeTogd3JhcHBlZCB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEZpbHRlckZ1bmMoKSB7XG4gIHJldHVybiAoaW5qZWN0KEZJTFRFUl9GVU5DLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/ICgoKSA9PiAoKSA9PiB0cnVlKSkoKTtcbn1cblxuZW51bSBBY3Rpb25JZCB7XG4gIEJBQ0sgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50czpwYWdlcy9pbmRleF0gQmFjaycsXG4gIENIRUNLQk9YX0NMSUNLID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHMvcGFnZXMvaW5kZXhdIENoZWNrYm94Q2xpY2snLFxuICBIRUFERVJfQ0hFQ0tCT1hfQ0xJQ0sgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50cy9wYWdlcy9pbmRleF0gSGVhZGVyQ2hlY2tib3hDbGljaycsXG4gIFRBQkxFX0hFQURFUl9DTElDSyA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzL2luZGV4XSBUYWJsZUhlYWRlckNsaWNrJyxcbiAgVEFCTEVfQ0hFQ0tCT1hfQ0xJQ0sgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50cy9wYWdlcy9pbmRleF0gVGFibGVDaGVja2JveENsaWNrJyxcbiAgQUREID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHMvcGFnZXMvaW5kZXhdIEFkZCcsXG4gIERFVEFJTCA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzL2luZGV4XSBEZXRhaWwnLFxuICBDTE9TRSA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzL2luZGV4XSBDbG9zZScsXG4gIExJU1RfSVRFTV9CVVRUT05fQ0xJQ0tFRCA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzL2luZGV4XSBMaXN0SXRlbUJ1dHRvbkNsaWNrJyxcbiAgVE9HR0xFX1FVRVJZX0ZPUk0gPSAnW0BuZy1hdG9taWMvY29tcG9uZW50cy9wYWdlcy9pbmRleF0gVG9nZ2xlUXVlcnlGb3JtJyxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZUFsbFNlbGVjdGlvbihzZWxlY3Rpb246IFNlbGVjdGlvbk1vZGVsPHN0cmluZz4sIGl0ZW1zOiB7IGlkOiBzdHJpbmcgfVtdKSB7XG4gIGlmIChzZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoID09PSBpdGVtcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbmV3IFNlbGVjdGlvbk1vZGVsPHN0cmluZz4odHJ1ZSwgW10pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgU2VsZWN0aW9uTW9kZWw8c3RyaW5nPih0cnVlLCBpdGVtcy5tYXAoZW50cnkgPT4gZW50cnkuaWQpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0cnlKc29uUGFyc2UodmFsdWU6IHN0cmluZykge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWNvdmVyeUZvcm1WYWx1ZShmb3JtOiBBYnN0cmFjdENvbnRyb2wsIGtleSA9ICdkZWZhdWx0Jykge1xuICAvLyBGb3JtQ29udHJvbOOBruWgtOWQiOOBqEZvcm1Hcm91cOOBruWgtOWQiOOBp+WHpueQhuOCkuWIhuOBkeOCi1xuICBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgIGZvcm0ucGF0Y2hWYWx1ZSh0cnlKc29uUGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSkpO1xuICAgIGZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgIGNvbnNvbGUuZGVidWcoJ2xvYWRlZDonLCB2YWx1ZSk7XG4gICAgZm9ybS5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ3ZhbHVlOicsIHZhbHVlKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUb2dnbGVOYXZNb2RlQWN0aW9uKG5hdk1vZGU6ICdleHBhbmRlZCcgfCAnY29sbGFwc2VkJykge1xuICByZXR1cm4ge1xuICAgIGlkOiBBY3Rpb25JZC5UT0dHTEVfUVVFUllfRk9STSxcbiAgICBpY29uOiBuYXZNb2RlID09PSAnY29sbGFwc2VkJyA/ICdleHBhbmRfbGVzcycgOiAnZXhwYW5kX21vcmUnLFxuICB9O1xufVxuXG5AVG9rZW5pemVkVHlwZSgpXG5ARGlyZWN0aXZlKHsgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIEluZGV4UGFnZVN0b3JlPFQ+IGV4dGVuZHMgSW5qZWN0YWJsZUNvbXBvbmVudCB7XG4gIHN0YXRpYyByZWFkb25seSBBY3Rpb25JZCA9IEFjdGlvbklkO1xuICBzdGF0aWMgcmVhZG9ubHkgREkgPSBtYWtlREkoSW5kZXhQYWdlU3RvcmUsICgpID0+IHtcbiAgICBjb25zdCBoaWdobGlnaHQgPSBpbmplY3RIaWdobGlnaHQoaW5qZWN0RW50aXR5SWROYW1lKCkpO1xuICAgIGNvbnN0IGlzUm9vdFBhZ2UgPSBpbmplY3RJc1Jvb3RQYWdlKCk7XG4gICAgY29uc3QgbmF2U3RhcnRBY3Rpb25zID0gaW5qZWN0TmF2U3RhcnRBY3Rpb25zKGlzUm9vdFBhZ2UpO1xuICAgIGNvbnN0IGZpbHRlckZ1bmMgPSBpbmplY3RGaWx0ZXJGdW5jKCk7XG4gICAgY29uc3QgbW9kZWxOYW1lID0gaW5qZWN0TW9kZWxOYW1lKCk7XG4gICAgcmV0dXJuICgpID0+ICh7XG4gICAgICBzdHlsZToge1xuICAgICAgICB3aWR0aDogJ3ZhcigtLXBhZ2Utd2lkdGgtbHYzKScsXG4gICAgICAgICdwYWRkaW5nLWxlZnQnOiBgMGAsXG4gICAgICB9IGFzIFBhcnRpYWw8Q1NTU3R5bGVEZWNsYXJhdGlvbj4sXG4gICAgICBncm91cGVkQnk6IDxzdHJpbmc+bnVsbCxcbiAgICAgIGdyb3VwS2V5czogW10sXG4gICAgICBpdGVtczogW10sXG4gICAgICBpdGVtc01hcDogPEl0ZW1zTWFwPGFueT4+dW5kZWZpbmVkLFxuICAgICAgaXRlbUFjdGlvbnM6ICgoKSA9PiBbXSkgYXMgQWN0aW9ucyxcbiAgICAgIGl0ZW1zTWFwcGVyOiA8KGl0ZW1zOiBhbnlbXSkgPT4gYW55W10+dW5kZWZpbmVkLFxuICAgICAgaXRlbXNMZW5ndGg6IDAsXG4gICAgICBmaWx0ZXJGdW5jLFxuICAgICAgdGl0bGU6IG1vZGVsTmFtZSgpID8gYCR7bW9kZWxOYW1lKCl95LiA6KanYCA6IGDlj5blvpfkuK0uLi5gLFxuICAgICAgdHlwZTogPCdsaXN0JyB8ICd0YWJsZScgfCAnZ3JpZCc+J3RhYmxlJyxcbiAgICAgIHNlbGVjdGlvbjogbmV3IFNlbGVjdGlvbk1vZGVsPHN0cmluZz4odHJ1ZSwgW10pLFxuICAgICAgaGlnaGxpZ2h0OiBoaWdobGlnaHQoKSxcbiAgICAgIGZvcm06IG5ldyBGb3JtR3JvdXAoe30pIGFzIEFic3RyYWN0Q29udHJvbCxcbiAgICAgIHRhYmxlQ2hpbGRyZW5LZXk6IG51bGwsXG4gICAgICBuYXZTdGFydEFjdGlvbnM6IG5hdlN0YXJ0QWN0aW9ucygpLFxuICAgICAgbmF2RW5kQWN0aW9uczogPEFjdGlvbnM+W10sXG4gICAgfSk7XG4gIH0sIFsnY29tcG9uZW50cycsICdwYWdlcycsICdpbmRleCddKTtcblxuICBzdGF0aWMgcmVhZG9ubHkgQ29uZmlnID0ge1xuICAgIHByb3ZpZGU6IEluZGV4UGFnZVN0b3JlLkRJLnByb3ZpZGVDb25maWcsXG4gICAgaW5qZWN0OiBJbmRleFBhZ2VTdG9yZS5ESS5pbmplY3RDb25maWcsXG4gIH07XG5cbiAgc3RhdGljIHByb3ZpZGVEZWZhdWx0KCkge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlRGVmYXVsdENvbmZpZygpLFxuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZURlZmF1bHRJbml0aWFsaXplcigpLFxuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZURlZmF1bHRFZmZlY3RzKCksXG4gICAgXTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlRGVmYXVsdEluaXRpYWxpemVyKCkge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlRm9ybUluaXRpYWxpemVyKCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlRm9ybVZhbHVlU3RvcmFnZUluaXRpYWxpemVyKCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlSXRlbXNMZW5ndGhJbml0aWFsaXplcigpLFxuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZUl0ZW1zTWFwcGVySW5pdGlhbGl6ZXIoKSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVBdXRvVG9nZ2xlUGFnZUluaXRpYWxpemVyKCksXG4gICAgXTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlRGVmYXVsdEVmZmVjdHMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVEZXRhaWxFZmZlY3QoKSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVBZGRFZmZlY3QoKSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVCYWNrRWZmZWN0KCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlSGVhZGVyQ2hlY2tib3hDbGlja0VmZmVjdCgpLFxuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZUNoZWNrYm94Q2xpY2tFZmZlY3QoKSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVUYWJsZUhlYWRlckNsaWNrRWZmZWN0KCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlU2lkZU5hdkVmZmVjdHMoKSxcbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVEZWZhdWx0Q29uZmlnKCkge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleFBhZ2VTdG9yZS5Db25maWcucHJvdmlkZSgpLFxuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZUl0ZW1BY3Rpb25zQ29uZmlnKCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlVHlwZUNvbmZpZygpLFxuICAgIF1cbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlVHlwZUNvbmZpZygpIHtcbiAgICByZXR1cm4gSW5kZXhQYWdlU3RvcmUuQ29uZmlnLnByb3ZpZGUoKCkgPT4ge1xuICAgICAgcmV0dXJuIChjb25maWcsIGNvbnRleHQpID0+ICh7IC4uLmNvbmZpZywgdHlwZTogZ2V0VHlwZShjb250ZXh0KSB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlSXRlbXNGcm9tUmVwb3NpdG9yeSgpIHtcbiAgICByZXR1cm4gSW5kZXhQYWdlU3RvcmUuQ29uZmlnLnByb3ZpZGUoKCkgPT4ge1xuICAgICAgY29uc3QgTW9kZWwgPSBpbmplY3RNb2RlbCgpO1xuICAgICAgY29uc3QgaXRlbXMgPSBNb2RlbCA/IGluamVjdEFsbChNb2RlbCkgOiBzaWduYWwoW10pO1xuICAgICAgcmV0dXJuIChjb25maWcpID0+ICh7IC4uLmNvbmZpZywgaXRlbXM6IGl0ZW1zKCkgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZUl0ZW1BY3Rpb25zQ29uZmlnKCkge1xuICAgIHJldHVybiBJbmRleFBhZ2VTdG9yZS5Db25maWcucHJvdmlkZSgoKSA9PiB7XG4gICAgICByZXR1cm4gKGNvbmZpZykgPT4gKHtcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICBpdGVtQWN0aW9uczogKGl0ZW0pID0+IFtcbiAgICAgICAgICB7IGlkOiBBY3Rpb25JZC5ERVRBSUwsIGljb246ICdvcGVuX2luX25ldycsIG5hbWU6ICfoqbPntLAnLCBwYXlsb2FkOiBpdGVtIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlU2lkZUFwcE5hdlN0YXJ0QWN0aW9ucygpIHtcbiAgICByZXR1cm4gSW5kZXhQYWdlU3RvcmUuQ29uZmlnLnByb3ZpZGUoKCkgPT4ge1xuICAgICAgY29uc3QgbmF2U3RhcnRBY3Rpb25zID0gaW5qZWN0U2lkZUFwcE5hdlN0YXJ0QWN0aW9ucygpO1xuICAgICAgcmV0dXJuIChjb25maWcpID0+ICh7XG4gICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgbmF2U3RhcnRBY3Rpb25zOiBuYXZTdGFydEFjdGlvbnMoKSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIEluaXRpYWxpemVyID0gbWFrZUluaXRpYWxpemVyQ29uZmlnKEluZGV4UGFnZVN0b3JlKTtcbiAgc3RhdGljIHByb3ZpZGVGb3JtSW5pdGlhbGl6ZXIoKSB7XG4gICAgcmV0dXJuIEluZGV4UGFnZVN0b3JlLkluaXRpYWxpemVyLnByb3ZpZGUoKHN0b3JlKSA9PiB7XG4gICAgICBjb25zdCBmb3JtID0gaW5qZWN0SW5kZXhGb3JtKHtcbiAgICAgICAgY29sdW1uczogYnVpbGRDb2x1bW5zKFtcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICdjcmVhdGVkQXQnLFxuICAgICAgICAgICd1cGRhdGVkQXQnLFxuICAgICAgICAgIChpdGVtOiB7IGlkOiBzdHJpbmcgfSkgPT4gW3sgaWQ6IEFjdGlvbklkLkRFVEFJTCwgaWNvbjogJ29wZW5faW5fbmV3JywgbmFtZTogJ+ips+e0sCcsIHBheWxvYWQ6IGl0ZW0gfV0sXG4gICAgICAgIF0pLFxuICAgICAgfSk7XG4gICAgICBhcHBseVRvSW5wdXQoc3RvcmUsICdmb3JtJywgZm9ybSk7XG4gICAgfSk7XG4gIH1cbiAgc3RhdGljIHByb3ZpZGVGb3JtVmFsdWVTdG9yYWdlSW5pdGlhbGl6ZXIoKSB7XG4gICAgcmV0dXJuIEluZGV4UGFnZVN0b3JlLkluaXRpYWxpemVyLnByb3ZpZGUoKHN0b3JlKSA9PiB7XG4gICAgICBjb25zdCByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgICBjb25zdCBwYXRocyA9IHJvdXRlLnBhdGhGcm9tUm9vdC5tYXAociA9PiByPy5yb3V0ZUNvbmZpZz8ucGF0aCk7XG4gICAgICBjb25zdCBrZXkgPSBgQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzL2luZGV4OiR7cGF0aHMuZmlsdGVyKChwYXRoKSA9PiAhIXBhdGgpLmpvaW4oJy8nKX1gO1xuICAgICAgcmVjb3ZlcnlGb3JtVmFsdWUoc3RvcmUuZm9ybSgpLCBrZXkpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVJdGVtc0xlbmd0aEluaXRpYWxpemVyKCkge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleExlbmd0aFBpcGUsXG4gICAgICBJbmRleFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgICBjb25zdCBwaXBlID0gaW5qZWN0KEluZGV4TGVuZ3RoUGlwZSk7XG4gICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IGNvbXB1dGVkUmF3VmFsdWUoKCkgPT4gc3RvcmUuZm9ybSgpKTtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpdGVtc0xlbmd0aCA9IHBpcGUudHJhbnNmb3JtKHN0b3JlLml0ZW1zKCksIGZvcm1WYWx1ZSgpKTtcbiAgICAgICAgICBhcHBseVRvSW5wdXQoc3RvcmUsICdpdGVtc0xlbmd0aCcsIGl0ZW1zTGVuZ3RoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVJdGVtc01hcHBlckluaXRpYWxpemVyKCkge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleFBpcGUsXG4gICAgICBJbmRleFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSBjb21wdXRlZFJhd1ZhbHVlKCgpID0+IHN0b3JlLmZvcm0oKSk7XG4gICAgICAgIGNvbnN0IGluZGV4UGlwZSA9IGluamVjdChJbmRleFBpcGUpO1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gZm9ybVZhbHVlKCkgYXMgYW55O1xuICAgICAgICAgIGNvbnN0IGl0ZW1zTWFwcGVyID0gKGl0ZW1zOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyRnVuYyA9IHN0b3JlLmZpbHRlckZ1bmMoKTtcbiAgICAgICAgICAgIHJldHVybiBpbmRleFBpcGUudHJhbnNmb3JtKGl0ZW1zLmZpbHRlcihmaWx0ZXJGdW5jKSwgdmFsdWUpO1xuICAgICAgICAgIH07XG4gICAgICAgICAgYXBwbHlUb0lucHV0KHN0b3JlLCAnaXRlbXNNYXBwZXInLCBpdGVtc01hcHBlcik7XG4gICAgICAgIH0pO1xuICAgICAgfSksXG4gICAgXTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlRGlzcGxheWVkSXRlbXNQYWdpbmF0aW9uSW5pdGlhbGl6ZXIoKTogUHJvdmlkZXIge1xuICAgIHJldHVybiBJbmRleFBhZ2VTdG9yZS5ESS5wcm92aWRlSW5pdGlhbGl6ZXIoKHN0b3JlKSA9PiB7XG4gICAgICBjb25zdCBwYWdlID0gZGVyaXZlZEFzeW5jKCgpID0+IGdldFJhd1ZhbHVlJChzdG9yZS5mb3JtKCkpLnBpcGUobWFwKHZhbHVlID0+IHZhbHVlLnBhZ2UpKSk7XG4gICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBwYWdlKCk/LmluZGV4ICogKHBhZ2UoKT8uc2l6ZSA/PyAxMDApXG4gICAgICAgIGNvbnN0IGxpbWl0ID0gb2Zmc2V0ICsgKHBhZ2UoKT8uc2l6ZSA/PyAxMDApO1xuICAgICAgICBhcHBseVRvSW5wdXQoc3RvcmUsICdkaXNwbGF5ZWRJdGVtcycsIHN0b3JlLml0ZW1zKCkuc2xpY2Uob2Zmc2V0LCBsaW1pdCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZUNvbHVtbnNJbml0aWFsaXplcih1c2VGYWN0b3J5OiAoKSA9PiBzdHJpbmdbXSk6IFByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gdXNlRmFjdG9yeSgpO1xuICAgICAgICBjb25zdCBmb3JtID0gaW5qZWN0SW5kZXhGb3JtKHsgY29sdW1uczogYnVpbGRDb2x1bW5zKGNvbHVtbnMpIH0pO1xuICAgICAgICBhcHBseVRvSW5wdXQoc3RvcmUsICdmb3JtJywgZm9ybSk7XG4gICAgICB9KSxcbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVJdGVtc0luaXRpYWxpemVyKGl0ZW1zRmFjdG9yeTogKCkgPT4gYW55W10pOiBQcm92aWRlcltdIHtcbiAgICByZXR1cm4gW1xuICAgICAgSW5kZXhQYWdlU3RvcmUuSW5pdGlhbGl6ZXIucHJvdmlkZSgoc3RvcmUpID0+IHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpdGVtcyA9IGl0ZW1zRmFjdG9yeSgpO1xuICAgICAgICAgIGFwcGx5VG9JbnB1dChzdG9yZSwgJ2l0ZW1zJywgaXRlbXMpO1xuICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ2l0ZW1zOicsIGl0ZW1zKTtcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVUb2dnbGVRdWVyeUZvcm1OYXZFbmRBY3Rpb25zKCk6IFByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgIGFwcGx5VG9JbnB1dChzdG9yZSwgJ25hdkVuZEFjdGlvbnMnLCBbXG4gICAgICAgICAgICBzdG9yZS5xdWVyeUZvcm1EaXNwbGF5ZWQoKSA/IGNyZWF0ZVRvZ2dsZU5hdk1vZGVBY3Rpb24oc3RvcmUubmF2TW9kZSgpKSA6IG51bGwsXG4gICAgICAgICAgXS5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgcHJvdmlkZUVmZmVjdChBY3Rpb25JZC5UT0dHTEVfUVVFUllfRk9STSwgKCkgPT4ge1xuICAgICAgICBjb25zdCBzdG9yZSA9IGluamVjdChJbmRleFBhZ2VTdG9yZSk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgYXBwbHlUb0lucHV0KHN0b3JlLCAnbmF2TW9kZScsIHN0b3JlLm5hdk1vZGUoKSA9PT0gJ2NvbGxhcHNlZCcgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCcpO1xuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgXTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlQmFja0VmZmVjdCgpIHtcbiAgICByZXR1cm4gcHJvdmlkZUVmZmVjdChJbmRleFBhZ2VTdG9yZS5BY3Rpb25JZC5CQUNLLCAoKSA9PiB7XG4gICAgICByZXR1cm4gKCkgPT4gaGlzdG9yeS5iYWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZURldGFpbEVmZmVjdCgpIHtcbiAgICByZXR1cm4gcHJvdmlkZUVmZmVjdChJbmRleFBhZ2VTdG9yZS5BY3Rpb25JZC5ERVRBSUwsICgpID0+IHtcbiAgICAgIGNvbnN0IGFwcCA9IGluamVjdChBcHBTZXJ2aWNlKTtcbiAgICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0KEluZGV4UGFnZVN0b3JlKTtcbiAgICAgIGNvbnN0IGhhc05leHQgPSBpbmplY3RIYXNOZXh0KCk7XG4gICAgICByZXR1cm4gKGl0ZW06IHsgaWQ6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgIGFwcC5yb3V0ZXIubmF2aWdhdGUoW2l0ZW0uaWRdLCB7XG4gICAgICAgICAgcmVsYXRpdmVUbzogc3RvcmUucm91dGUsXG4gICAgICAgICAgcmVwbGFjZVVybDogaGFzTmV4dCgpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlQWRkRWZmZWN0KCkge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KEluZGV4UGFnZVN0b3JlLkFjdGlvbklkLkFERCwgKCkgPT4ge1xuICAgICAgY29uc3QgYXBwID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICAgICAgY29uc3QgaGFzTmV4dCA9IGluamVjdEhhc05leHQoKTtcbiAgICAgIGNvbnN0IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGFwcC5yb3V0ZXIubmF2aWdhdGUoWyduZXcnXSwge1xuICAgICAgICAgIHJlbGF0aXZlVG86IHJvdXRlLFxuICAgICAgICAgIHJlcGxhY2VVcmw6ICEhaGFzTmV4dCgpLFxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZUNoZWNrYm94Q2xpY2tFZmZlY3QoKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoSW5kZXhQYWdlU3RvcmUuQWN0aW9uSWQuVEFCTEVfQ0hFQ0tCT1hfQ0xJQ0ssICgpID0+IHtcbiAgICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0KEluZGV4UGFnZVN0b3JlKTtcbiAgICAgIHJldHVybiAoaXRlbTogeyBpZDogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgc3RvcmUuc2VsZWN0aW9uKCkudG9nZ2xlKGl0ZW0uaWQpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlVGFibGVIZWFkZXJDbGlja0VmZmVjdCgpIHtcbiAgICByZXR1cm4gcHJvdmlkZUVmZmVjdChJbmRleFBhZ2VTdG9yZS5BY3Rpb25JZC5UQUJMRV9IRUFERVJfQ0xJQ0ssICgpID0+IHtcbiAgICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0KEluZGV4UGFnZVN0b3JlKTtcbiAgICAgIHJldHVybiAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3Qgc29ydCA9IHN0b3JlLmZvcm0oKS5nZXQoWydzb3J0J10pLnZhbHVlO1xuICAgICAgICBjb25zdCBvcmRlciA9IGtleSA9PT0gc29ydC5rZXkgJiYgc29ydC5vcmRlciA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJztcbiAgICAgICAgc3RvcmUuZm9ybSgpLnBhdGNoVmFsdWUoeyBzb3J0OiB7IGtleSwgb3JkZXIgfSB9KTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZVNpZGVOYXZFZmZlY3RzKCkge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KE5hdkFjdGlvbklkLlRPR0dMRV9TSURFX05BViwgKCkgPT4ge1xuICAgICAgY29uc3QgYXBwID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICAgICAgcmV0dXJuICgpID0+IGFwcC5zaWRlTmF2LnRvZ2dsZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVIZWFkZXJDaGVja2JveENsaWNrRWZmZWN0KCkge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KEluZGV4UGFnZVN0b3JlLkFjdGlvbklkLkhFQURFUl9DSEVDS0JPWF9DTElDSywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3RvcmUgPSBpbmplY3QoSW5kZXhQYWdlU3RvcmUpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdG9nZ2xlQWxsU2VsZWN0aW9uKHN0b3JlLnNlbGVjdGlvbigpLCBzdG9yZS5kaXNwbGF5ZWRJdGVtcygpKTtcbiAgICAgICAgYXBwbHlUb0lucHV0KHN0b3JlLCAnc2VsZWN0aW9uJywgc2VsZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlQXV0b1RvZ2dsZVBhZ2VJbml0aWFsaXplcigpOiBQcm92aWRlcltdIHtcbiAgICByZXR1cm4gW1xuICAgICAgcHJvdmlkZUVmZmVjdChSb3V0ZXJPdXRsZXRGcmFtZVN0b3JlLkFjdGlvbklkLkRFQUNUSVZBVEVELCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0KEluZGV4UGFnZVN0b3JlKTtcbiAgICAgICAgY29uc3Qgc3R5bGUgPSBjb21wdXRlRmFrZShzdG9yZS5zdHlsZSgpKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICBhcHBseVRvSW5wdXQoc3RvcmUsICdzdHlsZScsIHsgLi4uc3R5bGUsIHBhZGRpbmdMZWZ0OiBgMGAgfSk7XG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLkluaXRpYWxpemVyLnByb3ZpZGUoKHN0b3JlKSA9PiB7XG4gICAgICAgIGNvbnN0IGhhc05leHQgPSBpbmplY3RIYXNOZXh0KCk7XG4gICAgICAgIGNvbnN0IHN0eWxlID0gY29tcHV0ZUZha2Uoc3RvcmUuc3R5bGUoKSk7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgaWYgKGhhc05leHQoKSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChzdHlsZS53aWR0aCA9PT0gJ3ZhcigtLXBhZ2Utd2lkdGgtbHYzKScpIHtcbiAgICAgICAgICAgICAgICBhcHBseVRvSW5wdXQoc3RvcmUsICdzdHlsZScsIHtcbiAgICAgICAgICAgICAgICAgIC4uLnN0eWxlLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQ6ICd2YXIoLS1wYWdlLXdpZHRoLWx2MSknLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICBdO1xuICB9XG5cbiAgcmVhZG9ubHkgY29uZmlnID0gSW5kZXhQYWdlU3RvcmUuQ29uZmlnLmluamVjdCgpO1xuICByZWFkb25seSBzdHlsZSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnN0eWxlKSk7XG4gIHJlYWRvbmx5IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcmVhZG9ubHkgZ3JvdXBlZEJ5ID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuZ3JvdXBlZEJ5KSk7XG4gIHJlYWRvbmx5IGdyb3VwS2V5cyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmdyb3VwS2V5cykpO1xuICByZWFkb25seSB0eXBlID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkudHlwZSkpO1xuICByZWFkb25seSBpdGVtcyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLml0ZW1zKSk7XG4gIHJlYWRvbmx5IGl0ZW1zTWFwID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IGNvbnZlcnRUb0l0ZW1zTWFwKHRoaXMuZGlzcGxheWVkSXRlbXMoKSwgeyBtYXBwZXI6IHRoaXMuaXRlbXNNYXBwZXIoKSB9KSkpO1xuICByZWFkb25seSBpdGVtQWN0aW9ucyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLml0ZW1BY3Rpb25zKSk7XG4gIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkudGl0bGUpKTtcbiAgcmVhZG9ubHkgZm9ybSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmZvcm0pKTtcbiAgcmVhZG9ubHkgc2VsZWN0aW9uID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuc2VsZWN0aW9uKSk7XG4gIHJlYWRvbmx5IGhpZ2hsaWdodCA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmhpZ2hsaWdodCkpO1xuICByZWFkb25seSBuYXZTdGFydEFjdGlvbnMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5uYXZTdGFydEFjdGlvbnMpKTtcbiAgcmVhZG9ubHkgbmF2RW5kQWN0aW9ucyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLm5hdkVuZEFjdGlvbnMpKTtcbiAgcmVhZG9ubHkgZmlsdGVyRnVuYyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmZpbHRlckZ1bmMpKTtcbiAgcmVhZG9ubHkgaXRlbXNNYXBwZXIgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5pdGVtc01hcHBlcikpO1xuICByZWFkb25seSB0YWJsZUNoaWxkcmVuS2V5ID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkudGFibGVDaGlsZHJlbktleSkpO1xuXG4gIHJlYWRvbmx5IGl0ZW1zTGVuZ3RoID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuaXRlbXNMZW5ndGgpKTtcbiAgcmVhZG9ubHkgZGlzcGxheWVkSXRlbXMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBpdGVtcyA9IHRoaXMuaXRlbXMoKSA/PyBbXTtcbiAgICBjb25zdCBmaWx0ZXJGdW5jID0gdGhpcy5maWx0ZXJGdW5jKCk7XG4gICAgaXRlbXMgPSBmaWx0ZXJGdW5jID8gaXRlbXMuZmlsdGVyKGZpbHRlckZ1bmMpIDogaXRlbXM7XG4gICAgY29uc3QgaXRlbXNNYXBwZXIgPSB0aGlzLml0ZW1zTWFwcGVyKCk7XG4gICAgcmV0dXJuIGl0ZW1zTWFwcGVyID8gaXRlbXNNYXBwZXIoaXRlbXMpIDogaXRlbXM7XG4gIH0pKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRJZHMgPSBkZXJpdmVkQXN5bmMoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbigpLmNoYW5nZWQucGlwZShcbiAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgIG1hcCgoKSA9PiB0aGlzLnNlbGVjdGlvbigpLnNlbGVjdGVkID8/IFtdKSxcbiAgICApO1xuICB9LCB7IGluaXRpYWxWYWx1ZTogW10gfSk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtcygpID8/IFtdO1xuICAgIGNvbnN0IHNlbGVjdGVkSWRTZXQgPSBuZXcgU2V0KHRoaXMuc2VsZWN0ZWRJZHMoKSk7XG4gICAgcmV0dXJuIChpdGVtcyA/PyBbXSkuZmlsdGVyKGVudHJ5ID0+IHNlbGVjdGVkSWRTZXQuaGFzKGVudHJ5LmlkKSk7XG4gIH0pO1xuICByZWFkb25seSBpc0FsbFNlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXllZEl0ZW1zKCkuZXZlcnkoZW50cnkgPT4gdGhpcy5zZWxlY3RlZElkcygpLmluY2x1ZGVzKGVudHJ5LmlkKSk7XG4gIH0pO1xuICByZWFkb25seSBza2lwID0gaW5qZWN0Um91dGVTa2lwKCk7XG5cbiAgcmVhZG9ubHkgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xuICByZWFkb25seSBxdWVyeUZvcm0gPSBpbnB1dDxGb3JtR3JvdXA+KF9jb21wdXRlZCgoKSA9PiB0aGlzLmZiLmdyb3VwKHtcbiAgICBzdGF0dXM6IFsnJ10sXG4gIH0pKSk7XG4gIHJlYWRvbmx5IHF1ZXJ5Rm9ybUZpZWxkTWFwID0gaW5wdXQ8Rm9ybUZpZWxkTWFwPih7fSk7XG4gIHJlYWRvbmx5IHF1ZXJ5Rm9ybURpc3BsYXllZCA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgbmF2TW9kZSA9IGlucHV0PCdleHBhbmRlZCcgfCAnY29sbGFwc2VkJz4oJ2V4cGFuZGVkJyk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBJbmRleFBhZ2VTdG9yZS5Jbml0aWFsaXplci5pbml0aWFsaXplU3RvcmUodGhpcyk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW0luZGV4UGFnZVN0b3JlXSBpdGVtc01hcDonLCB0aGlzLml0ZW1zTWFwKCkpO1xuICAgIH0pO1xuICB9XG59XG5cbkBUb2tlbml6ZWRUeXBlKClcbkBEaXJlY3RpdmUoeyBzdGFuZGFsb25lOiB0cnVlLCBzZWxlY3RvcjogJ25nLWRhc2hib2FyZCcgfSlcbmV4cG9ydCBjbGFzcyBJbmRleFBhZ2VEYXNoYm9hcmRTdG9yZSBleHRlbmRzIEluamVjdGFibGVDb21wb25lbnQge1xuICBzdGF0aWMgcHJvdmlkZUNvbXBvbmVudCA9IDxUPihmYWN0b3J5OiBUeXBlT3JUeXBlRmFjdG9yeTxUPikgPT4gcHJvdmlkZUNvbXBvbmVudChJbmRleFBhZ2VEYXNoYm9hcmRTdG9yZSwgZmFjdG9yeSk7XG59XG5cbkBDb21wb25lbnQoeyBzZWxlY3RvcjogJ25nLWRhc2hib2FyZCcsIHRlbXBsYXRlOiAnJyB9KVxuZXhwb3J0IGNsYXNzIEluZGV4UGFnZURhc2hib2FyZCBleHRlbmRzIE5nQXRvbWljQ29tcG9uZW50IHsgfVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwYWdlcy1pbmRleCcsXG4gIGltcG9ydHM6IFtcbiAgICBSb3V0ZXJPdXRsZXRGcmFtZSxcbiAgICBJbmRleFRlbXBsYXRlLFxuICAgIE5nQXRvbWljRm9ybVNlY3Rpb25CdWlsZGVyLFxuICAgIEluZGV4UGFnZURhc2hib2FyZFN0b3JlLFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICA8ZnJhbWVzLXJvdXRlci1vdXRsZXQgW3NraXBdPVwic3RvcmUuc2tpcCgpXCIgKGFjdGlvbik9XCJkaXNwYXRjaCgkZXZlbnQpXCI+XG4gICAgPHRlbXBsYXRlcy1pbmRleFxuICAgICAgW3N0eWxlXT1cInN0b3JlLnN0eWxlKClcIlxuICAgICAgW3RpdGxlXT1cInN0b3JlLnRpdGxlKClcIlxuICAgICAgW3R5cGVdPVwic3RvcmUudHlwZSgpXCJcbiAgICAgIFt0YWJsZUNoaWxkcmVuS2V5XT1cInN0b3JlLnRhYmxlQ2hpbGRyZW5LZXkoKVwiXG4gICAgICBbaXRlbXNdPVwic3RvcmUuZGlzcGxheWVkSXRlbXMoKVwiXG4gICAgICBbaXRlbXNNYXBdPVwic3RvcmUuaXRlbXNNYXAoKVwiXG4gICAgICBbaXRlbXNMZW5ndGhdPVwic3RvcmUuaXRlbXNMZW5ndGgoKVwiXG4gICAgICBbaXRlbUFjdGlvbnNdPVwic3RvcmUuaXRlbUFjdGlvbnMoKVwiXG4gICAgICBbZ3JvdXBlZEJ5XT1cInN0b3JlLmdyb3VwZWRCeSgpXCJcbiAgICAgIFtncm91cEtleXNdPVwic3RvcmUuZ3JvdXBLZXlzKClcIlxuICAgICAgW2Zvcm1dPVwic3RvcmUuZm9ybSgpXCJcbiAgICAgIFtzZWxlY3Rpb25dPVwic3RvcmUuc2VsZWN0aW9uKClcIlxuICAgICAgW2hpZ2hsaWdodF09XCJzdG9yZS5oaWdobGlnaHQoKVwiXG4gICAgICBbbmF2U3RhcnRBY3Rpb25zXT1cInN0b3JlLm5hdlN0YXJ0QWN0aW9ucygpXCJcbiAgICAgIFtuYXZFbmRBY3Rpb25zXT1cInN0b3JlLm5hdkVuZEFjdGlvbnMoKVwiXG4gICAgICBbbmF2TW9kZV09XCJzdG9yZS5uYXZNb2RlKClcIlxuICAgICAgKGFjdGlvbik9XCJkaXNwYXRjaCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICBAaWYgKHN0b3JlLnF1ZXJ5Rm9ybURpc3BsYXllZCgpKSB7XG4gICAgICAgIDxkaXYgbmF2RGFzaGJvYXJkPlxuICAgICAgICAgIDxuZy1hdG9taWMtZm9ybS1zZWN0aW9uLWJ1aWxkZXJcbiAgICAgICAgICAgIFtmb3JtXT1cInN0b3JlLnF1ZXJ5Rm9ybSgpXCJcbiAgICAgICAgICAgIFtmaWVsZE1hcF09XCJzdG9yZS5xdWVyeUZvcm1GaWVsZE1hcCgpXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIDxuZy1kYXNoYm9hcmQgZGFzaGJvYXJkIGluamVjdGFibGUvPlxuICAgIDwvdGVtcGxhdGVzLWluZGV4PlxuICA8L2ZyYW1lcy1yb3V0ZXItb3V0bGV0PlxuICBgLFxuICBzdHlsZVVybDogJy4vaW5kZXgucGFnZS5zY3NzJyxcbiAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICB7XG4gICAgICBkaXJlY3RpdmU6IEluZGV4UGFnZVN0b3JlLFxuICAgICAgaW5wdXRzOiBbXG4gICAgICAgICdpdGVtcycsXG4gICAgICAgICdpdGVtc01hcCcsXG4gICAgICAgICdkaXNwbGF5ZWRJdGVtcycsXG4gICAgICBdLFxuICAgIH0sXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSW5kZXhQYWdlIGV4dGVuZHMgTmdBdG9taWNDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgc3RvcmUgPSBpbmplY3QoSW5kZXhQYWdlU3RvcmUpO1xuICBwcm90ZWN0ZWQgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByb3RlY3RlZCBzaGVldCA9IGluamVjdChTaGVldFNlcnZpY2UpO1xuXG4gIEBFZmZlY3QoSW5kZXhUZW1wbGF0ZS5BY3Rpb25JZC5CQUNLKVxuICBwcm90ZWN0ZWQgYmFjaygpIHtcbiAgICB0aGlzLmRpc3BhdGNoKHsgaWQ6IEluZGV4UGFnZVN0b3JlLkFjdGlvbklkLkJBQ0sgfSk7XG4gIH1cblxuICBARWZmZWN0KE5hdkFjdGlvbklkLkNMT1NFKVxuICBwcm90ZWN0ZWQgY2xvc2UoKSB7XG4gICAgdGhpcy5kaXNwYXRjaCh7IGlkOiBBY3Rpb25JZC5DTE9TRSB9KTtcbiAgfVxuXG4gIEBFZmZlY3QoSW5kZXhUZW1wbGF0ZS5BY3Rpb25JZC5JVEVNX0NMSUNLKVxuICBwcm90ZWN0ZWQgaXRlbUNsaWNrKGl0ZW06IHsgaWQ6IHN0cmluZyB9KSB7XG4gICAgdGhpcy5kaXNwYXRjaCh7IGlkOiBBY3Rpb25JZC5ERVRBSUwsIHBheWxvYWQ6IGl0ZW0gfSk7XG4gIH1cblxuICBARWZmZWN0KEluZGV4VGVtcGxhdGUuQWN0aW9uSWQuVEFCTEVfSEVBREVSX0NIRUNLQk9YX0NMSUNLKVxuICBwcm90ZWN0ZWQgb25IZWFkZXJDaGVja2JveENsaWNrKGl0ZW06IHsgaWQ6IHN0cmluZyB9KSB7XG4gICAgdGhpcy5kaXNwYXRjaCh7IGlkOiBJbmRleFBhZ2VTdG9yZS5BY3Rpb25JZC5IRUFERVJfQ0hFQ0tCT1hfQ0xJQ0ssIHBheWxvYWQ6IGl0ZW0gfSk7XG4gIH1cblxuICAvLyBNRU1PKEBub250YW5nZW50KTog44K344O844OI44Gu44Ki44Kv44K344On44Oz44KS44Oa44O844K444Gr5oyB44Gf44Gb44KL44G544GN44GL44Gv6KaB5qSc6KiO44CCXG4gIEBFZmZlY3QoSW5kZXhUZW1wbGF0ZS5BY3Rpb25JZC5MSVNUX0lURU1fQlVUVE9OX0NMSUNLRUQpXG4gIHByb3RlY3RlZCBvbkl0ZW1CdXR0b25DbGlja2VkKGl0ZW06IGFueSkge1xuICAgIGNvbnN0IGFjdGlvbnMgPSByZXNvbHZlQWN0aW9ucyh0aGlzLnN0b3JlLml0ZW1BY3Rpb25zKCksIGl0ZW0pO1xuICAgIHRoaXMuc2hlZXQub3BlbkFjdGlvbnMoYWN0aW9ucykudGhlbigoYWN0aW9uKSA9PiB7XG4gICAgICB0aGlzLmRpc3BhdGNoKHtcbiAgICAgICAgaWQ6IGFjdGlvbi5pZCxcbiAgICAgICAgcGF5bG9hZDogYWN0aW9uLnBheWxvYWQsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIEBFZmZlY3QoSW5kZXhUZW1wbGF0ZS5BY3Rpb25JZC5UQUJMRV9IRUFERVJfQ0xJQ0spXG4gIHByb3RlY3RlZCBvblRhYmxlSGVhZGVyQ2xpY2socGF5bG9hZDogYW55KSB7XG4gICAgdGhpcy5kaXNwYXRjaCh7IGlkOiBJbmRleFBhZ2VTdG9yZS5BY3Rpb25JZC5UQUJMRV9IRUFERVJfQ0xJQ0ssIHBheWxvYWQgfSk7XG4gIH1cblxuICBARWZmZWN0KEluZGV4VGVtcGxhdGUuQWN0aW9uSWQuVEFCTEVfQ0hFQ0tCT1hfQ0xJQ0spXG4gIHByb3RlY3RlZCBvbkNoZWNrYm94Q2xpY2socGF5bG9hZDogYW55KSB7XG4gICAgdGhpcy5kaXNwYXRjaCh7IGlkOiBJbmRleFBhZ2VTdG9yZS5BY3Rpb25JZC5UQUJMRV9DSEVDS0JPWF9DTElDSywgcGF5bG9hZCB9KTtcbiAgfVxuXG4gIC8vIEBFZmZlY3QoUm91dGVyT3V0bGV0RnJhbWVTdG9yZS5BY3Rpb25JZC5ERUFDVElWQVRFRClcbiAgLy8gcHJvdGVjdGVkIG9uRGVhY3RpdmF0ZWQoKSB7XG5cbiAgLy8gfVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbXBvbmVudHMtcGFnZXMtX2luZGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21wb25lbnRzL3NyYy9saWIvcGFnZXMvX2luZGV4L25nLWF0b21pYy1jb21wb25lbnRzLXBhZ2VzLV9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|