@provoly/dashboard 1.3.1 → 1.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/esm2022/import/i18n/en.translations.mjs +4 -4
- package/esm2022/import/i18n/fr.translations.mjs +4 -4
- package/esm2022/lib/core/access/access.service.mjs +4 -1
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.mjs +13 -8
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +33 -42
- package/esm2022/presentation/components/presentation.component.mjs +4 -8
- package/esm2022/presentation/i18n/en.translations.mjs +3 -2
- package/esm2022/presentation/i18n/fr.translations.mjs +3 -2
- package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +17 -9
- package/esm2022/toolbox/components/toolbox.component.mjs +3 -3
- package/esm2022/toolbox/shared/presentation-form/presentation-form.component.mjs +13 -9
- package/esm2022/widgets/widget-table/component/widget-table.component.mjs +3 -3
- package/esm2022/widgets/widget-table/i18n/en.translations.mjs +10 -2
- package/esm2022/widgets/widget-table/i18n/fr.translations.mjs +10 -2
- package/esm2022/widgets/widget-table/style/css.component.mjs +2 -2
- package/fesm2022/provoly-dashboard-import.mjs +6 -6
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +39 -50
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +16 -8
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +25 -21
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +22 -6
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +15 -7
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/import/i18n/en.translations.d.ts +3 -3
- package/import/i18n/fr.translations.d.ts +3 -3
- package/lib/core/access/access.service.d.ts +3 -0
- package/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.d.ts +3 -3
- package/package.json +1 -1
- package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +3 -1
- package/presentation/components/presentation.component.d.ts +4 -8
- package/presentation/i18n/en.translations.d.ts +1 -0
- package/presentation/i18n/fr.translations.d.ts +1 -0
- package/restitution/components/restitution-catalog/restitution-catalog.component.d.ts +5 -3
- package/toolbox/shared/presentation-form/presentation-form.component.d.ts +3 -2
- package/widgets/widget-table/i18n/en.translations.d.ts +8 -0
- package/widgets/widget-table/i18n/fr.translations.d.ts +8 -0
- package/widgets/widget-table/style/_o-widget-table.scss +4 -0
|
@@ -231,10 +231,10 @@ export class WidgetTableComponent extends DataWidgetComponent {
|
|
|
231
231
|
this.actualPage$.next(number);
|
|
232
232
|
}
|
|
233
233
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetTableComponent, deps: [{ token: i1.Store }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
234
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: WidgetTableComponent, selector: "pry-widget-table", usesInheritance: true, ngImport: i0, template: "<pry-widget-table-css></pry-widget-table-css>\n<div class=\"o-widget o-widget--table\">\n @if (displayHeader$ | async) {\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n (click)=\"refresh()\"\n >\n <pry-settings\n (click)=\"refresh()\"\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n (triggerClick)=\"this.refresh()\"\n class=\"o-settings\"\n >\n @if (optionsCopy && optionsCopy.style) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_style_headerTextAlign\">Align header text :</label>\n <pry-select\n [items]=\"ALIGNMENT_OPTIONS\"\n [ngModel]=\"optionsCopy.style.headerTextAlign\"\n (ngModelChange)=\"updateStyle($event, 'headerTextAlign')\"\n id=\"table_style_headerTextAlign\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_style_cellTextAlign\">Align cell text :</label>\n <pry-select\n [items]=\"ALIGNMENT_OPTIONS\"\n [ngModel]=\"optionsCopy.style.cellTextAlign\"\n (ngModelChange)=\"updateStyle($event, 'cellTextAlign')\"\n id=\"table_style_cellTextAlign\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_style_verticalSeparator\">Vertical separator :</label>\n <pry-checkbox\n [ngModel]=\"optionsCopy.style.showVerticalSeparator\"\n (ngModelChange)=\"updateStyle($event, 'showVerticalSeparator')\"\n id=\"table_style_verticalSeparator\"\n ></pry-checkbox>\n </div>\n }\n\n <div class=\"o-settings__popup__content__actions\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text -link-like\" (click)=\"addColumn()\">\n <pry-icon iconSvg=\"post_add\"></pry-icon>\n {{ '@pry.widget.table.addColumn' | i18n }}\n </button>\n </div>\n\n @for (columnDef of optionsCopy?.columns ?? []; track columnDef.attributeId; let i = $index) {\n <div class=\"o-settings__popup__content__fields\" (click)=\"refresh()\">\n <div class=\"o-settings__popup__content__fields__head\">\n <div class=\"m-btn-group\">\n @if (i > 0) {\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n }\n @if (i < (optionsCopy?.columns?.length ?? 0) - 1) {\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i + 1)\">\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n }\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_property\">{{ '@pry.widget.table.property' | i18n }}</label>\n <pry-select\n (click)=\"refresh()\"\n (ngModelChange)=\"changePropertyName($event, columnDef)\"\n [items]=\"properties$ | async\"\n [ngModel]=\"columnDef.property\"\n bindLabel=\"label\"\n bindValue=\"property\"\n id=\"table_property\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_label\">{{ '@pry.widget.table.label' | i18n }}</label>\n <input\n id=\"table_label\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeLabel($event, columnDef)\"\n [value]=\"columnDef.label\"\n />\n </div>\n </div>\n <button\n (click)=\"deleteColumn(i)\"\n aria-label=\"delete\"\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.table.deleteColumn' | i18n }}</span>\n </button>\n </div>\n }\n </pry-settings>\n </pry-widget-header>\n }\n\n <div class=\"a-table-wrapper\">\n @if (pagination$ | async; as pagination) {\n @if (pagination?.items ?? []; as allObjects) {\n @if (pagination.noFillersItems === 0) {\n <div class=\"no-result\" [style.height.%]=\"pagination.totalPages > 0 ? 80 : 100\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.table.empty' | i18n }}</span>\n </div>\n } @else if (pagination.noFillersItems > 0) {\n @if ((selectedIds$ | async) ?? []; as selectedIds) {\n @if ((columns$ | async) ?? []; as columns) {\n <table\n class=\"a-table\"\n [class.-show-vertical-separator]=\"optionsCopy?.style?.showVerticalSeparator\"\n [attr.aria-label]=\"'@pry.widget.table.description' | i18n\"\n >\n <thead>\n <tr>\n @if (allObjects?.length ?? 0 > 0) {\n <th>\n <pry-checkbox [ngModel]=\"areAllSelected\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n }\n @for (column of columns; track column.attributeId; let i = $index) {\n <th\n resizable\n (click)=\"setOrder(column)\"\n [ngClass]=\"'u-txt-' + optionsCopy?.style?.headerTextAlign\"\n >\n <span>{{ column.label }}</span>\n @if (quickOrder$ | async; as quickOrder) {\n @if (quickOrder.attribute === column.attributeId) {\n <pry-icon\n [iconSvg]=\"quickOrder.asc ? 'chevron_top' : 'chevron_bottom'\"\n [height]=\"12\"\n [width]=\"12\"\n ></pry-icon>\n }\n }\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (item of allObjects; track item.id) {\n <tr\n [class.is-selected]=\"selectedIds.includes(item.id)\"\n [class.context-menu-selected]=\"contextMenuClickedId === item.id && (isContextMenuOpened$ | async)\"\n (contextmenu)=\"contextMenu($event, item)\"\n detachRow\n (selectedValue)=\"selection($event, item)\"\n [class.filler]=\"item.metadata!['__widget-table-filler']\"\n >\n <td class=\"checkbox-wrapper\">\n <pry-checkbox [ngModel]=\"selectedIds.includes(item.id)\"></pry-checkbox>\n </td>\n @for (column of columns; track column.attributeId) {\n <td class=\"u-ellipsis\" [ngClass]=\"'u-txt-' + optionsCopy?.style?.cellTextAlign\">\n @if (column.property === 'metadata') {\n <pry-metadata [item]=\"item\"></pry-metadata>\n }\n @if (column.property === 'oClass') {\n <p class=\"content-img\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId: { type: 'class', output: 'name' } | async\"\n />\n </p>\n }\n @if (!['metadata', 'oClass'].includes(column.property)) {\n <pry-expand-value [value]=\"item | getValue: column.property | async\"></pry-expand-value>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n }\n }\n }\n @if (pagination.totalPages > 0) {\n <div class=\"a-table-pagination\">\n <div class=\"a-table-pagination__spacing\">\n <div>\n <button (click)=\"goToPage(0)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button (click)=\"goToPage(pagination.page - 1)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n <p>{{ pagination.page + 1 }} / {{ pagination.loadedPages }}</p>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.page + 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.loadedPages - 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n ({{\n '@pry.widget.table.remaining' | i18n: { remaining: pagination.totalPages - pagination.loadedPages }\n }})\n </div>\n </div>\n </div>\n }\n }\n }\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["triggerClick", "saveTriggered", "changeTitle"] }, { kind: "component", type: i4.MetadataComponent, selector: "pry-metadata", inputs: ["item"] }, { kind: "component", type: i4.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "openData$", "additionalOptions", "headerOptions", "displayCount", "datasourceIds", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: i6.ResizableComponent, selector: "th[resizable]" }, { kind: "directive", type: i7.ResizableDirective, selector: "[resizable]", outputs: ["resizable"] }, { kind: "component", type: i8.PryWidgetTableCssComponent, selector: "pry-widget-table-css" }, { kind: "component", type: i9.ExpandValueComponent, selector: "pry-expand-value", inputs: ["value"] }, { kind: "directive", type: i10.DetachRowDirective, selector: "[detachRow]", outputs: ["selectedValue"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i4.TranslateItemToSymbolPipe, name: "translateItemToSymbol" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i11.GetValuePipe, name: "getValue" }] }); }
|
|
234
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: WidgetTableComponent, selector: "pry-widget-table", usesInheritance: true, ngImport: i0, template: "<pry-widget-table-css></pry-widget-table-css>\n<div class=\"o-widget o-widget--table\">\n @if (displayHeader$ | async) {\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n (click)=\"refresh()\"\n >\n <pry-settings\n (click)=\"refresh()\"\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n (triggerClick)=\"this.refresh()\"\n class=\"o-settings\"\n >\n @if (optionsCopy && optionsCopy.style) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_style_headerTextAlign\">{{\n '@pry.widget.table.headerTextAlign' | i18n\n }}</label>\n <pry-select\n [items]=\"ALIGNMENT_OPTIONS\"\n [ngModel]=\"optionsCopy.style.headerTextAlign\"\n (ngModelChange)=\"updateStyle($event, 'headerTextAlign')\"\n id=\"table_style_headerTextAlign\"\n i18nPrefix=\"@pry.widget.table.align.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_style_cellTextAlign\">{{\n '@pry.widget.table.cellTextAlign' | i18n\n }}</label>\n <pry-select\n [items]=\"ALIGNMENT_OPTIONS\"\n [ngModel]=\"optionsCopy.style.cellTextAlign\"\n (ngModelChange)=\"updateStyle($event, 'cellTextAlign')\"\n id=\"table_style_cellTextAlign\"\n i18nPrefix=\"@pry.widget.table.align.\"\n ></pry-select>\n </div>\n <div\n class=\"m-form-label-field u-display-flex -row -justify-space-between o-widget--table__vertical-separator\"\n >\n <label class=\"a-label\" for=\"table_style_verticalSeparator\">{{\n '@pry.widget.table.verticalSeparator' | i18n\n }}</label>\n <pry-checkbox\n [ngModel]=\"optionsCopy.style.showVerticalSeparator\"\n (ngModelChange)=\"updateStyle($event, 'showVerticalSeparator')\"\n id=\"table_style_verticalSeparator\"\n ></pry-checkbox>\n </div>\n }\n\n <div class=\"o-settings__popup__content__actions\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text -link-like\" (click)=\"addColumn()\">\n <pry-icon iconSvg=\"post_add\"></pry-icon>\n {{ '@pry.widget.table.addColumn' | i18n }}\n </button>\n </div>\n\n @for (columnDef of optionsCopy?.columns ?? []; track columnDef.attributeId; let i = $index) {\n <div class=\"o-settings__popup__content__fields\" (click)=\"refresh()\">\n <div class=\"o-settings__popup__content__fields__head\">\n <div class=\"m-btn-group\">\n @if (i > 0) {\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n }\n @if (i < (optionsCopy?.columns?.length ?? 0) - 1) {\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i + 1)\">\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n }\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_property\">{{ '@pry.widget.table.property' | i18n }}</label>\n <pry-select\n (click)=\"refresh()\"\n (ngModelChange)=\"changePropertyName($event, columnDef)\"\n [items]=\"properties$ | async\"\n [ngModel]=\"columnDef.property\"\n bindLabel=\"label\"\n bindValue=\"property\"\n id=\"table_property\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_label\">{{ '@pry.widget.table.label' | i18n }}</label>\n <input\n id=\"table_label\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeLabel($event, columnDef)\"\n [value]=\"columnDef.label\"\n />\n </div>\n </div>\n <button\n (click)=\"deleteColumn(i)\"\n aria-label=\"delete\"\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.table.deleteColumn' | i18n }}</span>\n </button>\n </div>\n }\n </pry-settings>\n </pry-widget-header>\n }\n\n <div class=\"a-table-wrapper\">\n @if (pagination$ | async; as pagination) {\n @if (pagination?.items ?? []; as allObjects) {\n @if (pagination.noFillersItems === 0) {\n <div class=\"no-result\" [style.height.%]=\"pagination.totalPages > 0 ? 80 : 100\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.table.empty' | i18n }}</span>\n </div>\n } @else if (pagination.noFillersItems > 0) {\n @if ((selectedIds$ | async) ?? []; as selectedIds) {\n @if ((columns$ | async) ?? []; as columns) {\n <table\n class=\"a-table\"\n [class.-show-vertical-separator]=\"optionsCopy?.style?.showVerticalSeparator\"\n [attr.aria-label]=\"'@pry.widget.table.description' | i18n\"\n >\n <thead>\n <tr>\n @if (allObjects?.length ?? 0 > 0) {\n <th>\n <pry-checkbox [ngModel]=\"areAllSelected\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n }\n @for (column of columns; track column.attributeId; let i = $index) {\n <th\n resizable\n (click)=\"setOrder(column)\"\n [ngClass]=\"'u-txt-' + optionsCopy?.style?.headerTextAlign\"\n >\n <span>{{ column.label }}</span>\n @if (quickOrder$ | async; as quickOrder) {\n @if (quickOrder.attribute === column.attributeId) {\n <pry-icon\n [iconSvg]=\"quickOrder.asc ? 'chevron_top' : 'chevron_bottom'\"\n [height]=\"12\"\n [width]=\"12\"\n ></pry-icon>\n }\n }\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (item of allObjects; track item.id) {\n <tr\n [class.is-selected]=\"selectedIds.includes(item.id)\"\n [class.context-menu-selected]=\"contextMenuClickedId === item.id && (isContextMenuOpened$ | async)\"\n (contextmenu)=\"contextMenu($event, item)\"\n detachRow\n (selectedValue)=\"selection($event, item)\"\n [class.filler]=\"item.metadata!['__widget-table-filler']\"\n >\n <td class=\"checkbox-wrapper\">\n <pry-checkbox [ngModel]=\"selectedIds.includes(item.id)\"></pry-checkbox>\n </td>\n @for (column of columns; track column.attributeId) {\n <td class=\"u-ellipsis\" [ngClass]=\"'u-txt-' + optionsCopy?.style?.cellTextAlign\">\n @if (column.property === 'metadata') {\n <pry-metadata [item]=\"item\"></pry-metadata>\n }\n @if (column.property === 'oClass') {\n <p class=\"content-img\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId: { type: 'class', output: 'name' } | async\"\n />\n </p>\n }\n @if (!['metadata', 'oClass'].includes(column.property)) {\n <pry-expand-value [value]=\"item | getValue: column.property | async\"></pry-expand-value>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n }\n }\n }\n @if (pagination.totalPages > 0) {\n <div class=\"a-table-pagination\">\n <div class=\"a-table-pagination__spacing\">\n <div>\n <button (click)=\"goToPage(0)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button (click)=\"goToPage(pagination.page - 1)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n <p>{{ pagination.page + 1 }} / {{ pagination.loadedPages }}</p>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.page + 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.loadedPages - 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n ({{\n '@pry.widget.table.remaining' | i18n: { remaining: pagination.totalPages - pagination.loadedPages }\n }})\n </div>\n </div>\n </div>\n }\n }\n }\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["triggerClick", "saveTriggered", "changeTitle"] }, { kind: "component", type: i4.MetadataComponent, selector: "pry-metadata", inputs: ["item"] }, { kind: "component", type: i4.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "openData$", "additionalOptions", "headerOptions", "displayCount", "datasourceIds", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: i6.ResizableComponent, selector: "th[resizable]" }, { kind: "directive", type: i7.ResizableDirective, selector: "[resizable]", outputs: ["resizable"] }, { kind: "component", type: i8.PryWidgetTableCssComponent, selector: "pry-widget-table-css" }, { kind: "component", type: i9.ExpandValueComponent, selector: "pry-expand-value", inputs: ["value"] }, { kind: "directive", type: i10.DetachRowDirective, selector: "[detachRow]", outputs: ["selectedValue"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i4.TranslateItemToSymbolPipe, name: "translateItemToSymbol" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i11.GetValuePipe, name: "getValue" }] }); }
|
|
235
235
|
}
|
|
236
236
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetTableComponent, decorators: [{
|
|
237
237
|
type: Component,
|
|
238
|
-
args: [{ selector: 'pry-widget-table', template: "<pry-widget-table-css></pry-widget-table-css>\n<div class=\"o-widget o-widget--table\">\n @if (displayHeader$ | async) {\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n (click)=\"refresh()\"\n >\n <pry-settings\n (click)=\"refresh()\"\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n (triggerClick)=\"this.refresh()\"\n class=\"o-settings\"\n >\n @if (optionsCopy && optionsCopy.style) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_style_headerTextAlign\">Align header text :</label>\n <pry-select\n [items]=\"ALIGNMENT_OPTIONS\"\n [ngModel]=\"optionsCopy.style.headerTextAlign\"\n (ngModelChange)=\"updateStyle($event, 'headerTextAlign')\"\n id=\"table_style_headerTextAlign\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_style_cellTextAlign\">Align cell text :</label>\n <pry-select\n [items]=\"ALIGNMENT_OPTIONS\"\n [ngModel]=\"optionsCopy.style.cellTextAlign\"\n (ngModelChange)=\"updateStyle($event, 'cellTextAlign')\"\n id=\"table_style_cellTextAlign\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_style_verticalSeparator\">Vertical separator :</label>\n <pry-checkbox\n [ngModel]=\"optionsCopy.style.showVerticalSeparator\"\n (ngModelChange)=\"updateStyle($event, 'showVerticalSeparator')\"\n id=\"table_style_verticalSeparator\"\n ></pry-checkbox>\n </div>\n }\n\n <div class=\"o-settings__popup__content__actions\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text -link-like\" (click)=\"addColumn()\">\n <pry-icon iconSvg=\"post_add\"></pry-icon>\n {{ '@pry.widget.table.addColumn' | i18n }}\n </button>\n </div>\n\n @for (columnDef of optionsCopy?.columns ?? []; track columnDef.attributeId; let i = $index) {\n <div class=\"o-settings__popup__content__fields\" (click)=\"refresh()\">\n <div class=\"o-settings__popup__content__fields__head\">\n <div class=\"m-btn-group\">\n @if (i > 0) {\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n }\n @if (i < (optionsCopy?.columns?.length ?? 0) - 1) {\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i + 1)\">\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n }\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_property\">{{ '@pry.widget.table.property' | i18n }}</label>\n <pry-select\n (click)=\"refresh()\"\n (ngModelChange)=\"changePropertyName($event, columnDef)\"\n [items]=\"properties$ | async\"\n [ngModel]=\"columnDef.property\"\n bindLabel=\"label\"\n bindValue=\"property\"\n id=\"table_property\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_label\">{{ '@pry.widget.table.label' | i18n }}</label>\n <input\n id=\"table_label\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeLabel($event, columnDef)\"\n [value]=\"columnDef.label\"\n />\n </div>\n </div>\n <button\n (click)=\"deleteColumn(i)\"\n aria-label=\"delete\"\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.table.deleteColumn' | i18n }}</span>\n </button>\n </div>\n }\n </pry-settings>\n </pry-widget-header>\n }\n\n <div class=\"a-table-wrapper\">\n @if (pagination$ | async; as pagination) {\n @if (pagination?.items ?? []; as allObjects) {\n @if (pagination.noFillersItems === 0) {\n <div class=\"no-result\" [style.height.%]=\"pagination.totalPages > 0 ? 80 : 100\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.table.empty' | i18n }}</span>\n </div>\n } @else if (pagination.noFillersItems > 0) {\n @if ((selectedIds$ | async) ?? []; as selectedIds) {\n @if ((columns$ | async) ?? []; as columns) {\n <table\n class=\"a-table\"\n [class.-show-vertical-separator]=\"optionsCopy?.style?.showVerticalSeparator\"\n [attr.aria-label]=\"'@pry.widget.table.description' | i18n\"\n >\n <thead>\n <tr>\n @if (allObjects?.length ?? 0 > 0) {\n <th>\n <pry-checkbox [ngModel]=\"areAllSelected\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n }\n @for (column of columns; track column.attributeId; let i = $index) {\n <th\n resizable\n (click)=\"setOrder(column)\"\n [ngClass]=\"'u-txt-' + optionsCopy?.style?.headerTextAlign\"\n >\n <span>{{ column.label }}</span>\n @if (quickOrder$ | async; as quickOrder) {\n @if (quickOrder.attribute === column.attributeId) {\n <pry-icon\n [iconSvg]=\"quickOrder.asc ? 'chevron_top' : 'chevron_bottom'\"\n [height]=\"12\"\n [width]=\"12\"\n ></pry-icon>\n }\n }\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (item of allObjects; track item.id) {\n <tr\n [class.is-selected]=\"selectedIds.includes(item.id)\"\n [class.context-menu-selected]=\"contextMenuClickedId === item.id && (isContextMenuOpened$ | async)\"\n (contextmenu)=\"contextMenu($event, item)\"\n detachRow\n (selectedValue)=\"selection($event, item)\"\n [class.filler]=\"item.metadata!['__widget-table-filler']\"\n >\n <td class=\"checkbox-wrapper\">\n <pry-checkbox [ngModel]=\"selectedIds.includes(item.id)\"></pry-checkbox>\n </td>\n @for (column of columns; track column.attributeId) {\n <td class=\"u-ellipsis\" [ngClass]=\"'u-txt-' + optionsCopy?.style?.cellTextAlign\">\n @if (column.property === 'metadata') {\n <pry-metadata [item]=\"item\"></pry-metadata>\n }\n @if (column.property === 'oClass') {\n <p class=\"content-img\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId: { type: 'class', output: 'name' } | async\"\n />\n </p>\n }\n @if (!['metadata', 'oClass'].includes(column.property)) {\n <pry-expand-value [value]=\"item | getValue: column.property | async\"></pry-expand-value>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n }\n }\n }\n @if (pagination.totalPages > 0) {\n <div class=\"a-table-pagination\">\n <div class=\"a-table-pagination__spacing\">\n <div>\n <button (click)=\"goToPage(0)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button (click)=\"goToPage(pagination.page - 1)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n <p>{{ pagination.page + 1 }} / {{ pagination.loadedPages }}</p>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.page + 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.loadedPages - 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n ({{\n '@pry.widget.table.remaining' | i18n: { remaining: pagination.totalPages - pagination.loadedPages }\n }})\n </div>\n </div>\n </div>\n }\n }\n }\n </div>\n</div>\n" }]
|
|
238
|
+
args: [{ selector: 'pry-widget-table', template: "<pry-widget-table-css></pry-widget-table-css>\n<div class=\"o-widget o-widget--table\">\n @if (displayHeader$ | async) {\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n (click)=\"refresh()\"\n >\n <pry-settings\n (click)=\"refresh()\"\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n (triggerClick)=\"this.refresh()\"\n class=\"o-settings\"\n >\n @if (optionsCopy && optionsCopy.style) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_style_headerTextAlign\">{{\n '@pry.widget.table.headerTextAlign' | i18n\n }}</label>\n <pry-select\n [items]=\"ALIGNMENT_OPTIONS\"\n [ngModel]=\"optionsCopy.style.headerTextAlign\"\n (ngModelChange)=\"updateStyle($event, 'headerTextAlign')\"\n id=\"table_style_headerTextAlign\"\n i18nPrefix=\"@pry.widget.table.align.\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_style_cellTextAlign\">{{\n '@pry.widget.table.cellTextAlign' | i18n\n }}</label>\n <pry-select\n [items]=\"ALIGNMENT_OPTIONS\"\n [ngModel]=\"optionsCopy.style.cellTextAlign\"\n (ngModelChange)=\"updateStyle($event, 'cellTextAlign')\"\n id=\"table_style_cellTextAlign\"\n i18nPrefix=\"@pry.widget.table.align.\"\n ></pry-select>\n </div>\n <div\n class=\"m-form-label-field u-display-flex -row -justify-space-between o-widget--table__vertical-separator\"\n >\n <label class=\"a-label\" for=\"table_style_verticalSeparator\">{{\n '@pry.widget.table.verticalSeparator' | i18n\n }}</label>\n <pry-checkbox\n [ngModel]=\"optionsCopy.style.showVerticalSeparator\"\n (ngModelChange)=\"updateStyle($event, 'showVerticalSeparator')\"\n id=\"table_style_verticalSeparator\"\n ></pry-checkbox>\n </div>\n }\n\n <div class=\"o-settings__popup__content__actions\">\n <button type=\"button\" class=\"a-btn a-btn--icon-text -link-like\" (click)=\"addColumn()\">\n <pry-icon iconSvg=\"post_add\"></pry-icon>\n {{ '@pry.widget.table.addColumn' | i18n }}\n </button>\n </div>\n\n @for (columnDef of optionsCopy?.columns ?? []; track columnDef.attributeId; let i = $index) {\n <div class=\"o-settings__popup__content__fields\" (click)=\"refresh()\">\n <div class=\"o-settings__popup__content__fields__head\">\n <div class=\"m-btn-group\">\n @if (i > 0) {\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n }\n @if (i < (optionsCopy?.columns?.length ?? 0) - 1) {\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i + 1)\">\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n }\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_property\">{{ '@pry.widget.table.property' | i18n }}</label>\n <pry-select\n (click)=\"refresh()\"\n (ngModelChange)=\"changePropertyName($event, columnDef)\"\n [items]=\"properties$ | async\"\n [ngModel]=\"columnDef.property\"\n bindLabel=\"label\"\n bindValue=\"property\"\n id=\"table_property\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"table_label\">{{ '@pry.widget.table.label' | i18n }}</label>\n <input\n id=\"table_label\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeLabel($event, columnDef)\"\n [value]=\"columnDef.label\"\n />\n </div>\n </div>\n <button\n (click)=\"deleteColumn(i)\"\n aria-label=\"delete\"\n type=\"button\"\n class=\"a-btn a-btn--icon-text -link-like\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.table.deleteColumn' | i18n }}</span>\n </button>\n </div>\n }\n </pry-settings>\n </pry-widget-header>\n }\n\n <div class=\"a-table-wrapper\">\n @if (pagination$ | async; as pagination) {\n @if (pagination?.items ?? []; as allObjects) {\n @if (pagination.noFillersItems === 0) {\n <div class=\"no-result\" [style.height.%]=\"pagination.totalPages > 0 ? 80 : 100\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.table.empty' | i18n }}</span>\n </div>\n } @else if (pagination.noFillersItems > 0) {\n @if ((selectedIds$ | async) ?? []; as selectedIds) {\n @if ((columns$ | async) ?? []; as columns) {\n <table\n class=\"a-table\"\n [class.-show-vertical-separator]=\"optionsCopy?.style?.showVerticalSeparator\"\n [attr.aria-label]=\"'@pry.widget.table.description' | i18n\"\n >\n <thead>\n <tr>\n @if (allObjects?.length ?? 0 > 0) {\n <th>\n <pry-checkbox [ngModel]=\"areAllSelected\" (ngModelChange)=\"selectAll($event)\"></pry-checkbox>\n </th>\n }\n @for (column of columns; track column.attributeId; let i = $index) {\n <th\n resizable\n (click)=\"setOrder(column)\"\n [ngClass]=\"'u-txt-' + optionsCopy?.style?.headerTextAlign\"\n >\n <span>{{ column.label }}</span>\n @if (quickOrder$ | async; as quickOrder) {\n @if (quickOrder.attribute === column.attributeId) {\n <pry-icon\n [iconSvg]=\"quickOrder.asc ? 'chevron_top' : 'chevron_bottom'\"\n [height]=\"12\"\n [width]=\"12\"\n ></pry-icon>\n }\n }\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (item of allObjects; track item.id) {\n <tr\n [class.is-selected]=\"selectedIds.includes(item.id)\"\n [class.context-menu-selected]=\"contextMenuClickedId === item.id && (isContextMenuOpened$ | async)\"\n (contextmenu)=\"contextMenu($event, item)\"\n detachRow\n (selectedValue)=\"selection($event, item)\"\n [class.filler]=\"item.metadata!['__widget-table-filler']\"\n >\n <td class=\"checkbox-wrapper\">\n <pry-checkbox [ngModel]=\"selectedIds.includes(item.id)\"></pry-checkbox>\n </td>\n @for (column of columns; track column.attributeId) {\n <td class=\"u-ellipsis\" [ngClass]=\"'u-txt-' + optionsCopy?.style?.cellTextAlign\">\n @if (column.property === 'metadata') {\n <pry-metadata [item]=\"item\"></pry-metadata>\n }\n @if (column.property === 'oClass') {\n <p class=\"content-img\">\n <img\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"item | translateItemToSymbol | async\"\n [alt]=\"item.oClass | translateId: { type: 'class', output: 'name' } | async\"\n />\n </p>\n }\n @if (!['metadata', 'oClass'].includes(column.property)) {\n <pry-expand-value [value]=\"item | getValue: column.property | async\"></pry-expand-value>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n }\n }\n }\n @if (pagination.totalPages > 0) {\n <div class=\"a-table-pagination\">\n <div class=\"a-table-pagination__spacing\">\n <div>\n <button (click)=\"goToPage(0)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button (click)=\"goToPage(pagination.page - 1)\" [disabled]=\"pagination.page <= 0\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n <p>{{ pagination.page + 1 }} / {{ pagination.loadedPages }}</p>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.page + 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n </div>\n <div>\n <button\n (click)=\"goToPage(pagination.loadedPages - 1)\"\n [disabled]=\"pagination.page + 1 >= pagination.loadedPages\"\n >\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n </div>\n <div class=\"a-table-pagination__spacing__label\">\n ({{\n '@pry.widget.table.remaining' | i18n: { remaining: pagination.totalPages - pagination.loadedPages }\n }})\n </div>\n </div>\n </div>\n }\n }\n }\n </div>\n</div>\n" }]
|
|
239
239
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }] });
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LXRhYmxlL2NvbXBvbmVudC93aWRnZXQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtdGFibGUvY29tcG9uZW50L3dpZGdldC10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUV6RSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUVsQixZQUFZLEVBQ1osY0FBYyxFQUVkLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQUUsMEJBQTBCLEVBRS9DLGNBQWMsRUFDZCxTQUFTLEVBRVQsU0FBUyxFQUlULG9CQUFvQixFQUNyQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sS0FBSyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQWdCekUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG1CQUFtQjtJQXVCM0QsWUFDRSxLQUFpQixFQUNqQixFQUFjLEVBQ04sR0FBc0I7UUFFOUIsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUZULFFBQUcsR0FBSCxHQUFH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Q0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQWdCLENBQUM7b0JBQ2hELE1BQU07Z0JBQ1IsS0FBSyx1QkFBdUI7b0JBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQWlCLENBQUM7b0JBQ2pELE1BQU07WUFDVixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxTQUFTLENBQUMsTUFBd0IsRUFBRSxXQUFvQztRQUM5RSxJQUFJLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQyxTQUFTLEtBQUssTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pFLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sV0FBVyxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzdGLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYSxFQUFFLElBQVU7UUFDcEMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBYztRQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDOzhHQW5UVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiwrRUMzQ2pDLHFyV0EyUEE7OzJGRGhOYSxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0Usa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBBTElHTk1FTlRfT1BUSU9OUyxcbiAgYmFzZUl0ZW1Qcm9wZXJ0aWVzLFxuICBDbGFzcyxcbiAgQ2xhc3NBY3Rpb25zLFxuICBDbGFzc1NlbGVjdG9ycyxcbiAgQ29sdW1uRGVmaW5pdGlvbixcbiAgQ29uZmlnU2VsZWN0b3JzLFxuICBDb250ZXh0TWVudUFjdGlvbnMsXG4gIENvbnRleHRNZW51U2VsZWN0b3JzLFxuICBEYXNoYm9hcmRBY3Rpb25zLFxuICBEYXNoYm9hcmRTZWxlY3RvcnMsXG4gIERhdGFXaWRnZXRDb21wb25lbnQsIERFRkFVTFRfVEFCTEVfV0lER0VUX1NUWUxFLFxuICBGaWVsZCxcbiAgRmllbGRTZWxlY3RvcnMsXG4gIEZpZWxkVHlwZSxcbiAgSXRlbSxcbiAgSXRlbVV0aWxzLFxuICBPcmRlclZhbHVlLFxuICBSZXN1bHRPcmRlcixcbiAgVGFibGVXaWRnZXRPcHRpb25zLCBUYWJsZVdpZGdldFN0eWxlLFxuICBXSURHRVRfSEVBREVSX0hFSUdIVFxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbC9lczYnO1xuaW1wb3J0IHsgYXVkaXRUaW1lLCBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIHRha2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBmaWx0ZXIsIG1hcCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uIHtcbiAgdG90YWxQYWdlczogbnVtYmVyO1xuICBwYWdlOiBudW1iZXI7XG4gIHJvd3M6IG51bWJlcjtcbiAgaXRlbXM6IEl0ZW1bXTtcbiAgbG9hZGVkOiBudW1iZXI7XG4gIGxvYWRlZFBhZ2VzOiBudW1iZXI7XG4gIG5vRmlsbGVyc0l0ZW1zOiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS13aWRnZXQtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0LXRhYmxlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRUYWJsZUNvbXBvbmVudCBleHRlbmRzIERhdGFXaWRnZXRDb21wb25lbnQge1xuICBvcHRpb25zJDogT2JzZXJ2YWJsZTxUYWJsZVdpZGdldE9wdGlvbnM+O1xuICBjb2x1bW5zJDogT2JzZXJ2YWJsZTxDb2x1bW5EZWZpbml0aW9uW10+O1xuICBvcHRpb25zQ29weT86IFRhYmxlV2lkZ2V0T3B0aW9ucztcbiAgZmllbGRzJDogT2JzZXJ2YWJsZTxGaWVsZFtdPjtcbiAgc2VsZWN0ZWRJZHMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcbiAgQXJyYXkgPSBBcnJheTtcbiAgY3VycmVudENsYXNzZXM6IHN0cmluZ1tdID0gW107XG4gIHNlbGVjdGVkSWRzOiBzdHJpbmdbXSA9IFtdO1xuICBXSURHRVRfSEVBREVSX0hFSUdIVCA9IFdJREdFVF9IRUFERVJfSEVJR0hUO1xuICBwcml2YXRlIGNsYXNzZXMkOiBPYnNlcnZhYmxlPENsYXNzW10+O1xuICBwcm9wZXJ0aWVzJDogT2JzZXJ2YWJsZTx7IGxhYmVsOiBzdHJpbmc7IHByb3BlcnR5OiBzdHJpbmcgfVtdPjtcbiAgYWxsU2VsZWN0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhcmVBbGxTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBhbGxJZHM6IHN0cmluZ1tdID0gW107XG4gIGNvbnRleHRNZW51Q2xpY2tlZElkOiBzdHJpbmcgPSAnJztcbiAgaXNDb250ZXh0TWVudU9wZW5lZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHF1aWNrT3JkZXIkOiBPYnNlcnZhYmxlPFJlc3VsdE9yZGVyIHwgdW5kZWZpbmVkPjtcbiAgcHJpdmF0ZSBfcmVmcmVzaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KHVuZGVmaW5lZCk7XG4gIGFjdHVhbFBhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICBwYWdpbmF0aW9uJDogT2JzZXJ2YWJsZTxQYWdpbmF0aW9uPjtcbiAgaXNPcGVuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc3RvcmU6IFN0b3JlPGFueT4sXG4gICAgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHN1cGVyKHN0b3JlLCBlbCk7XG5cbiAgICB0aGlzLmNsYXNzZXMkID0gdGhpcy5zdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3Nlcyk7XG5cbiAgICB0aGlzLmZpZWxkcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnJlc3VsdFNldCQsIHRoaXMuY2xhc3NlcyQsIHRoaXMuc3RvcmUuc2VsZWN0KEZpZWxkU2VsZWN0b3JzLmZpZWxkcyldKS5waXBlKFxuICAgICAgbWFwKFxuICAgICAgICAoW3Jlc3VsdFNldCwgY2xhc3NlcywgZmllbGRzXSkgPT5cbiAgICAgICAgICBbXG4gICAgICAgICAgICAuLi5JdGVtVXRpbHMuZ2V0RmllbGRzRm9yQ2xhc3NlcyhPYmplY3Qua2V5cyhyZXN1bHRTZXQuaXRlbXMpLCBjbGFzc2VzLCBmaWVsZHMpLFxuICAgICAgICAgICAgLi4uYmFzZUl0ZW1Qcm9wZXJ0aWVzLm1hcCgocCkgPT4gKHsgbmFtZTogcCwgaWQ6IHAgfSkgYXMgRmllbGQpXG4gICAgICAgICAgXSBhcyBGaWVsZFtdXG4gICAgICApLFxuICAgICAgbWFwKChmaWVsZHMpID0+IGZpZWxkcy5maWx0ZXIoKGZpZWxkKSA9PiBmaWVsZC50eXBlICE9PSBGaWVsZFR5cGUuUkFXKSlcbiAgICApO1xuXG4gICAgdGhpcy5vcHRpb25zJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5tYW5pZmVzdCQucGlwZShtYXAoKG1hbmlmZXN0KSA9PiBtYW5pZmVzdC5vcHRpb25zIGFzIFRhYmxlV2lkZ2V0T3B0aW9ucykpLFxuICAgICAgdGhpcy5yZXN1bHRTZXQkLFxuICAgICAgdGhpcy5jbGFzc2VzJCxcbiAgICAgIHRoaXMuZmllbGRzJCxcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy50YWJsZURlZmF1bHRBdHRyaWJ1dGVzRGVmaW5pdGlvbnMpXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW29wdGlvbnMsIHJlc3VsdFNldCwgY2xhc3NlcywgZmllbGRzLCBkZWZzXSkgPT4ge1xuICAgICAgICBpZiAoIW9wdGlvbnMuY29sdW1ucyB8fCBvcHRpb25zLmNvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IEl0ZW1VdGlscy5nZXRBdHRyaWJ1dGVzRnJvbVJzKHJlc3VsdFNldCwgY2xhc3NlcywgZmllbGRzLCBkZWZzKTtcbiAgICAgICAgICBjb25zdCB1bmlxdWVQcm9wcyA9IFsuLi5uZXcgU2V0KGF0dHJpYnV0ZXMubWFwKCh7IG5hbWUsIHRlY2huaWNhbE5hbWUgfSkgPT4gKHsgbmFtZSwgdGVjaG5pY2FsTmFtZSB9KSkpXTtcblxuICAgICAgICAgIG9wdGlvbnMuY29sdW1ucyA9IHVuaXF1ZVByb3BzLm1hcCgocHJvcGVydHkpID0+ICh7XG4gICAgICAgICAgICBwcm9wZXJ0eTogcHJvcGVydHkudGVjaG5pY2FsTmFtZSxcbiAgICAgICAgICAgIGxhYmVsOiBwcm9wZXJ0eS5uYW1lLFxuICAgICAgICAgICAgYXR0cmlidXRlSWQ6IGF0dHJpYnV0ZXMuZmluZCgoYXR0cikgPT4gYXR0ci50ZWNobmljYWxOYW1lID09PSBwcm9wZXJ0eS50ZWNobmljYWxOYW1lKT8uaWRcbiAgICAgICAgICB9KSkgYXMgQ29sdW1uRGVmaW5pdGlvbltdO1xuICAgICAgICB9XG4gICAgICAgIG9wdGlvbnMuc3R5bGUgPSBvcHRpb25zLnN0eWxlID8/IERFRkFVTFRfVEFCTEVfV0lER0VUX1NUWUxFLnZhbHVlO1xuICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLm9wdGlvbnMkLnBpcGUoZmlsdGVyKChvcHQpID0+ICEhb3B0KSkuc3Vic2NyaWJlKChvcHRpb25zKSA9PiB7XG4gICAgICAgIHRoaXMub3B0aW9uc0NvcHkgPSB7IC4uLihKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpKSBhcyBUYWJsZVdpZGdldE9wdGlvbnMpIH07XG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmFsbEl0ZW1zJC5zdWJzY3JpYmUoKGFsbE9iamVjdHMpID0+ICh0aGlzLmFsbElkcyA9IGFsbE9iamVjdHMubWFwKChvYmopID0+IG9iai5pZCkpKSk7XG5cbiAgICBjb25zdCBIRUFERVJfU0laRSA9IDMwO1xuICAgIGNvbnN0IFBBR0lOQVRJT05fU0laRSA9IDM1O1xuICAgIGNvbnN0IExJTkVfU0laRSA9IDMwO1xuXG4gICAgdGhpcy5wYWdpbmF0aW9uJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5hbGxJdGVtcyQsXG4gICAgICB0aGlzLmFjdHVhbFBhZ2UkLFxuICAgICAgdGhpcy53aWRnZXRTaXplJCxcbiAgICAgIHRoaXMucmVzdWx0U2V0JCxcbiAgICAgIHRoaXMuZGlzcGxheUhlYWRlciRcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbaXRlbXMsIGFjdHVhbFBhZ2UsIHNpemUsIHJzLCBoZWFkZXJQcmVzZW50XSkgPT4ge1xuICAgICAgICBjb25zdCByb3dzID0gTWF0aC5tYXgoXG4gICAgICAgICAgMSxcbiAgICAgICAgICBNYXRoLmZsb29yKFxuICAgICAgICAgICAgKHNpemUuaGVpZ2h0IC0gSEVBREVSX1NJWkUgLSBQQUdJTkFUSU9OX1NJWkUgLSAoaGVhZGVyUHJlc2VudCA/IFdJREdFVF9IRUFERVJfSEVJR0hULnZhbHVlIDogMCkpIC8gTElORV9TSVpFXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCB0b3RhbCA9IE9iamVjdC52YWx1ZXMocnMuY291bnQgPz8ge30pLnJlZHVjZSgocCwgYykgPT4gYy5jb3VudCArIHAsIDApO1xuICAgICAgICBjb25zdCBsb2FkZWRQYWdlcyA9IE1hdGguY2VpbChpdGVtcy5sZW5ndGggLyByb3dzKTtcbiAgICAgICAgY29uc3QgcGFnZSA9IGFjdHVhbFBhZ2UgPD0gbG9hZGVkUGFnZXMgPyBhY3R1YWxQYWdlIDogTWF0aC5tYXgoMCwgbG9hZGVkUGFnZXMgLSAxKTtcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBpdGVtcy5maWx0ZXIoKF8sIGlkeCkgPT4gaWR4ID49IHJvd3MgKiBwYWdlICYmIGlkeCA8IHJvd3MgKiAocGFnZSArIDEpKTtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRXaXRoRmlsbGVycyA9XG4gICAgICAgICAgZmlsdGVyZWQubGVuZ3RoID09PSByb3dzXG4gICAgICAgICAgICA/IGZpbHRlcmVkXG4gICAgICAgICAgICA6IGZpbHRlcmVkLmNvbmNhdChcbiAgICAgICAgICAgICAgICBuZXcgQXJyYXkocm93cyAtIGZpbHRlcmVkLmxlbmd0aCkuZmlsbCh7XG4gICAgICAgICAgICAgICAgICBtZXRhZGF0YTogeyAnX193aWRnZXQtdGFibGUtZmlsbGVyJzogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgfSBhcyB1bmtub3duIGFzIEl0ZW0pXG4gICAgICAgICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcm93cyxcbiAgICAgICAgICBwYWdlLFxuICAgICAgICAgIGl0ZW1zOiBmaWx0ZXJlZFdpdGhGaWxsZXJzLFxuICAgICAgICAgIG5vRmlsbGVyc0l0ZW1zOiBmaWx0ZXJlZC5sZW5ndGgsXG4gICAgICAgICAgdG90YWwsXG4gICAgICAgICAgdG90YWxQYWdlczogTWF0aC5jZWlsKHRvdGFsIC8gcm93cyksXG4gICAgICAgICAgbG9hZGVkOiBpdGVtcy5sZW5ndGgsXG4gICAgICAgICAgbG9hZGVkUGFnZXNcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5wYWdpbmF0aW9uJC5waXBlKGF1ZGl0VGltZSgyMDApKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWZyZXNoKCkpKTtcblxuICAgIHRoaXMuY29sdW1ucyQgPSB0aGlzLm9wdGlvbnMkLnBpcGUoXG4gICAgICBtYXAoKG9wdGlvbnMpID0+IG9wdGlvbnM/LmNvbHVtbnMgPz8gW10pLFxuICAgICAgdGFwKCgpID0+IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZWZyZXNoKCksIDUwMCkpXG4gICAgKTtcblxuICAgIHRoaXMuaXNDb250ZXh0TWVudU9wZW5lZCQgPSB0aGlzLnN0b3JlLnNlbGVjdChDb250ZXh0TWVudVNlbGVjdG9ycy5vcGVuZWQpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMucmVzdWx0U2V0JFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKHJzKSA9PiAhIXJzKSxcbiAgICAgICAgICBtYXAoKHJzKSA9PiBPYmplY3Qua2V5cyhycy5pdGVtcykpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoY2xhc3NlcykgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRDbGFzc2VzLmxlbmd0aCA+IDAgJiYgIWVxdWFsKHRoaXMuY3VycmVudENsYXNzZXMsIGNsYXNzZXMpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMub3B0aW9uc0NvcHkpIHtcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zQ29weSA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVsZXRlIHRoaXMub3B0aW9uc0NvcHkuY29sdW1ucztcbiAgICAgICAgICAgIHRoaXMuZW1pdE1hbmlmZXN0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY3VycmVudENsYXNzZXMgPSBjbGFzc2VzO1xuICAgICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnNlbGVjdGVkSWRzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLnNlbGVjdGVkSWRzJC5zdWJzY3JpYmUoKHNlbGVjdGVkSWRzKSA9PiB0aGlzLnNlbGVjdGVkSWRzID09PSBzZWxlY3RlZElkcykpO1xuXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDbGFzc0FjdGlvbnMubG9hZCgpKTtcblxuICAgIHRoaXMucHJvcGVydGllcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnJlc3VsdFNldCQsIHRoaXMuY2xhc3NlcyQsIHRoaXMuZmllbGRzJF0pLnBpcGUoXG4gICAgICBtYXAoKFtycywgY2xhc3NlcywgZmllbGRzXSkgPT4gW1xuICAgICAgICAuLi5PYmplY3Qua2V5cyhycy5pdGVtcylcbiAgICAgICAgICAubWFwKChjbGFzc0lkKSA9PiAoY2xhc3Nlcy5maW5kKChjbCkgPT4gY2wuaWQgPT09IGNsYXNzSWQpID8/IHsgYXR0cmlidXRlczogW10gfSkuYXR0cmlidXRlcylcbiAgICAgICAgICAuZmxhdCgpXG4gICAgICAgICAgLm1hcCgoYXR0cikgPT4gKHsgdGVjaG5pY2FsTmFtZTogYXR0ci50ZWNobmljYWxOYW1lLCBuYW1lOiBhdHRyLm5hbWUgfSkpXG4gICAgICBdKSxcbiAgICAgIG1hcCgocHJvcHMpID0+IHtcbiAgICAgICAgY29uc3Qgc29ydGVkUHJvcHMgPSBbLi4ucHJvcHNdO1xuICAgICAgICBzb3J0ZWRQcm9wcy5zb3J0KChwQSwgcEIpID0+IHBBLm5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKS5sb2NhbGVDb21wYXJlKHBCLm5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKSkpO1xuICAgICAgICByZXR1cm4gc29ydGVkUHJvcHM7XG4gICAgICB9KSxcbiAgICAgIG1hcCgocHJvcHMpID0+IHByb3BzLm1hcCgocHJvcCkgPT4gKHsgbGFiZWw6IHByb3AubmFtZSwgcHJvcGVydHk6IHByb3AudGVjaG5pY2FsTmFtZSB9KSkpLFxuICAgICAgdGFwKCgpID0+IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZWZyZXNoKCksIDUwMCkpXG4gICAgKTtcblxuICAgIHRoaXMuYWxsU2VsZWN0ZWQkID0gY29tYmluZUxhdGVzdChbdGhpcy5zZWxlY3RlZElkcyQsIHRoaXMuYWxsSXRlbXMkXSkucGlwZShcbiAgICAgIG1hcCgoW3NlbGVjdGVkSWRzLCBhbGxPYmplY3RzXSkgPT4ge1xuICAgICAgICBjb25zdCBhbGxJZHMgPSBhbGxPYmplY3RzLm1hcCgob2JqZWN0KSA9PiBvYmplY3QuaWQpO1xuICAgICAgICByZXR1cm4gIWFsbElkcy5maW5kKChpZCkgPT4gIXNlbGVjdGVkSWRzLmluY2x1ZGVzKGlkKSk7XG4gICAgICB9KSxcbiAgICAgIHRhcCgoYWxsU2VsZWN0ZWQpID0+ICh0aGlzLmFyZUFsbFNlbGVjdGVkID0gYWxsU2VsZWN0ZWQpKVxuICAgICk7XG5cbiAgICB0aGlzLnF1aWNrT3JkZXIkID0gY29tYmluZUxhdGVzdChbdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnF1aWNrT3JkZXIpLCB0aGlzLmRhdGFzb3VyY2VJZHMkXSkucGlwZShcbiAgICAgIG1hcCgoW29yZGVyLCBucXNdKSA9PiAobnFzLmxlbmd0aCA9PT0gMSA/IG9yZGVyW25xc1swXV0gOiB1bmRlZmluZWQpKVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuX3JlZnJlc2gkLnBpcGUoZGVsYXkoMTAwKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSkpO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLl9yZWZyZXNoJC5uZXh0KCk7XG4gICAgdGhpcy5pc09wZW4gPSAhdGhpcy5pc09wZW47XG4gIH1cblxuICBlbWl0TWFuaWZlc3QoKSB7XG4gICAgdGhpcy5tYW5pZmVzdE1vZGlmaWVkLmVtaXQoe1xuICAgICAgd2lkZ2V0SW5kZXg6IHRoaXMud2lkZ2V0SW5kZXgsXG4gICAgICBtYW5pZmVzdDogeyAuLi50aGlzLm1hbmlmZXN0LCBvcHRpb25zOiB0aGlzLm9wdGlvbnNDb3B5IH1cbiAgICB9KTtcbiAgfVxuXG4gIGFkZENvbHVtbigpIHtcbiAgICBpZiAoIXRoaXMub3B0aW9uc0NvcHk/LmNvbHVtbnMpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkgPSB7IGNvbHVtbnM6IFtdIH07XG4gICAgfVxuICAgIHRoaXMub3B0aW9uc0NvcHkuY29sdW1ucz8ucHVzaCh7IGxhYmVsOiAnJywgcHJvcGVydHk6ICcnIH0pO1xuICAgIHRoaXMucmVmcmVzaCgpO1xuICB9XG5cbiAgY2hhbmdlUHJvcGVydHlOYW1lKCRldmVudDogYW55LCBjb2x1bW5EZWY6IENvbHVtbkRlZmluaXRpb24pIHtcbiAgICBjb2x1bW5EZWYucHJvcGVydHkgPSAkZXZlbnQ7XG4gICAgdGhpcy5yZWZyZXNoKCk7XG4gIH1cblxuICBjaGFuZ2VMYWJlbCgkZXZlbnQ6IEV2ZW50LCBjb2x1bW5EZWY6IENvbHVtbkRlZmluaXRpb24pIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgbmV3TGFiZWwgPSAkZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZTtcbiAgICBpZiAoY29sdW1uRGVmLmxhYmVsICE9PSBuZXdMYWJlbCkge1xuICAgICAgY29sdW1uRGVmLmxhYmVsID0gbmV3TGFiZWw7XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICBkZWxldGVDb2x1bW4oaTogbnVtYmVyKSB7XG4gICAgdGhpcy5vcHRpb25zQ29weT8uY29sdW1ucz8uc3BsaWNlKGksIDEpO1xuICAgIHRoaXMucmVmcmVzaCgpO1xuICB9XG5cbiAgc2VsZWN0aW9uKCRldmVudDogTW91c2VFdmVudCwgaXRlbTogSXRlbSkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3QoeyBpZDogaXRlbS5pZCwgY3VtdWxhdGl2ZTogISRldmVudC5zaGlmdEtleSB9KSk7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgY29udGV4dE1lbnUoJGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBJdGVtKSB7XG4gICAgaWYgKHRoaXMubWFuaWZlc3QuY29udGV4dE1lbnUgIT09IGZhbHNlKSB7XG4gICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgIENvbnRleHRNZW51QWN0aW9ucy5vcGVuKHtcbiAgICAgICAgICBpdGVtSWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgY2xpZW50WDogJGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgY2xpZW50WTogJGV2ZW50LmNsaWVudFksXG4gICAgICAgICAgcmVzdWx0U2V0OiBBcnJheS5pc0FycmF5KHRoaXMubWFuaWZlc3QuZGF0YXNvdXJjZSkgPyB0aGlzLm1hbmlmZXN0LmRhdGFzb3VyY2VbMF0gOiB0aGlzLm1hbmlmZXN0LmRhdGFzb3VyY2UsXG4gICAgICAgICAgZnJvbTogJ3RhYmxlJyxcbiAgICAgICAgICBhbGxvd09iamVjdENyZWF0aW9uOiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuY29udGV4dE1lbnVDbGlja2VkSWQgPSBpdGVtLmlkO1xuICAgIH1cbiAgfVxuXG4gIGludmVydExheWVycyhpZHg6IG51bWJlciwgaWR4V2l0aDogbnVtYmVyKSB7XG4gICAgaWYgKCEhdGhpcy5vcHRpb25zQ29weSAmJiAhIXRoaXMub3B0aW9uc0NvcHkuY29sdW1ucykge1xuICAgICAgY29uc3QgdG1wID0gdGhpcy5vcHRpb25zQ29weS5jb2x1bW5zW2lkeFdpdGhdO1xuICAgICAgdGhpcy5vcHRpb25zQ29weS5jb2x1bW5zW2lkeFdpdGhdID0gdGhpcy5vcHRpb25zQ29weS5jb2x1bW5zW2lkeF07XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5LmNvbHVtbnNbaWR4XSA9IHRtcDtcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEFsbCgkZXZlbnQ6IGFueSkge1xuICAgIGlmICgkZXZlbnQpIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RNYW55KHsgaWRzOiB0aGlzLmFsbElkcyB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RNYW55KHsgaWRzOiBbXSB9KSk7XG4gICAgfVxuICB9XG5cbiAgc2V0T3JkZXIoY29sdW1uOiBDb2x1bW5EZWZpbml0aW9uKSB7XG4gICAgdGhpcy5kYXRhc291cmNlSWRzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIGZpbHRlcigobnFzKSA9PiBucXMubGVuZ3RoID09PSAxKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5xdWlja09yZGVyJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFtucXMsIGFjdHVhbE9yZGVyXSkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMucXVpY2tPcmRlcih7XG4gICAgICAgICAgICBkYXRhc291cmNlSWQ6IG5xc1swXSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZTogY29sdW1uLmF0dHJpYnV0ZUlkID8/ICcnLFxuICAgICAgICAgICAgYXNjOiB0aGlzLm5leHRPcmRlcihjb2x1bW4sIGFjdHVhbE9yZGVyKVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZVN0eWxlKCRldmVudDogc3RyaW5nIHwgYm9vbGVhbiwgcHJvcDoga2V5b2YgVGFibGVXaWRnZXRTdHlsZSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5ICYmIHRoaXMub3B0aW9uc0NvcHkuc3R5bGUpIHtcbiAgICAgIHN3aXRjaCAocHJvcCkge1xuICAgICAgICBjYXNlICdoZWFkZXJUZXh0QWxpZ24nOlxuICAgICAgICBjYXNlICdjZWxsVGV4dEFsaWduJzpcbiAgICAgICAgICB0aGlzLm9wdGlvbnNDb3B5LnN0eWxlW3Byb3BdID0gJGV2ZW50IGFzIHN0cmluZztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc2hvd1ZlcnRpY2FsU2VwYXJhdG9yJzpcbiAgICAgICAgICB0aGlzLm9wdGlvbnNDb3B5LnN0eWxlW3Byb3BdID0gJGV2ZW50IGFzIGJvb2xlYW47XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBuZXh0T3JkZXIoY29sdW1uOiBDb2x1bW5EZWZpbml0aW9uLCBhY3R1YWxPcmRlcjogUmVzdWx0T3JkZXIgfCB1bmRlZmluZWQpOiBPcmRlclZhbHVlIHtcbiAgICBpZiAoIWFjdHVhbE9yZGVyIHx8IGFjdHVhbE9yZGVyLmF0dHJpYnV0ZSAhPT0gY29sdW1uLmF0dHJpYnV0ZUlkKSB7XG4gICAgICByZXR1cm4gJ2FzYyc7XG4gICAgfVxuICAgIHJldHVybiBhY3R1YWxPcmRlci5hc2MgPT09ICdhc2MnID8gJ2Rlc2MnIDogYWN0dWFsT3JkZXIuYXNjID09PSAnZGVzYycgPyB1bmRlZmluZWQgOiAnYXNjJztcbiAgfVxuXG4gIHRyYWNrT2JqZWN0cyhpbmRleDogbnVtYmVyLCBpdGVtOiBJdGVtKSB7XG4gICAgcmV0dXJuIGl0ZW0uaWQ7XG4gIH1cblxuICBnb1RvUGFnZShudW1iZXI6IG51bWJlcikge1xuICAgIHRoaXMuYWN0dWFsUGFnZSQubmV4dChudW1iZXIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEFMSUdOTUVOVF9PUFRJT05TID0gQUxJR05NRU5UX09QVElPTlM7XG59XG4iLCI8cHJ5LXdpZGdldC10YWJsZS1jc3M+PC9wcnktd2lkZ2V0LXRhYmxlLWNzcz5cbjxkaXYgY2xhc3M9XCJvLXdpZGdldCBvLXdpZGdldC0tdGFibGVcIj5cbiAgQGlmIChkaXNwbGF5SGVhZGVyJCB8IGFzeW5jKSB7XG4gICAgPHByeS13aWRnZXQtaGVhZGVyXG4gICAgICBbZGF0YXNvdXJjZUlkc109XCIoZGF0YXNvdXJjZUlkcyQgfCBhc3luYykgPz8gW11cIlxuICAgICAgW3dpZGdldEluZGV4XT1cIndpZGdldEluZGV4XCJcbiAgICAgIFttYW5pZmVzdF09XCJtYW5pZmVzdFwiXG4gICAgICAobWFuaWZlc3RNb2RpZmllZCk9XCJtYW5pZmVzdE1vZGlmaWVkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAjaGVhZGVyXG4gICAgICBbaGVhZGVyT3B0aW9uc109XCIoZGlzcGxheUhlYWRlciQgfCBhc3luYykgPz8ge31cIlxuICAgICAgKGNsaWNrKT1cInJlZnJlc2goKVwiXG4gICAgPlxuICAgICAgPHByeS1zZXR0aW5nc1xuICAgICAgICAoY2xpY2spPVwicmVmcmVzaCgpXCJcbiAgICAgICAgKHNhdmVUcmlnZ2VyZWQpPVwiZW1pdE1hbmlmZXN0KClcIlxuICAgICAgICAoY2hhbmdlVGl0bGUpPVwiY2hhbmdlV2lkZ2V0VGl0bGUoJGV2ZW50KVwiXG4gICAgICAgIFtoZWFkZXJQcmVzZW50XT1cImRpc3BsYXlIZWFkZXIkIHwgYXN5bmNcIlxuICAgICAgICBbd2lkZ2V0SW5kZXhdPVwid2lkZ2V0SW5kZXhcIlxuICAgICAgICBbaGVhZGVyXT1cImhlYWRlclwiXG4gICAgICAgIFtvcGVuJF09XCJvcGVuJFwiXG4gICAgICAgICh0cmlnZ2VyQ2xpY2spPVwidGhpcy5yZWZyZXNoKClcIlxuICAgICAgICBjbGFzcz1cIm8tc2V0dGluZ3NcIlxuICAgICAgPlxuICAgICAgICBAaWYgKG9wdGlvbnNDb3B5ICYmIG9wdGlvbnNDb3B5LnN0eWxlKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cInRhYmxlX3N0eWxlX2hlYWRlclRleHRBbGlnblwiPkFsaWduIGhlYWRlciB0ZXh0IDo8L2xhYmVsPlxuICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgW2l0ZW1zXT1cIkFMSUdOTUVOVF9PUFRJT05TXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuc3R5bGUuaGVhZGVyVGV4dEFsaWduXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU3R5bGUoJGV2ZW50LCAnaGVhZGVyVGV4dEFsaWduJylcIlxuICAgICAgICAgICAgICBpZD1cInRhYmxlX3N0eWxlX2hlYWRlclRleHRBbGlnblwiXG4gICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJ0YWJsZV9zdHlsZV9jZWxsVGV4dEFsaWduXCI+QWxpZ24gY2VsbCB0ZXh0IDo8L2xhYmVsPlxuICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgW2l0ZW1zXT1cIkFMSUdOTUVOVF9PUFRJT05TXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuc3R5bGUuY2VsbFRleHRBbGlnblwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVN0eWxlKCRldmVudCwgJ2NlbGxUZXh0QWxpZ24nKVwiXG4gICAgICAgICAgICAgIGlkPVwidGFibGVfc3R5bGVfY2VsbFRleHRBbGlnblwiXG4gICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJ0YWJsZV9zdHlsZV92ZXJ0aWNhbFNlcGFyYXRvclwiPlZlcnRpY2FsIHNlcGFyYXRvciA6PC9sYWJlbD5cbiAgICAgICAgICAgIDxwcnktY2hlY2tib3hcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuc3R5bGUuc2hvd1ZlcnRpY2FsU2VwYXJhdG9yXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU3R5bGUoJGV2ZW50LCAnc2hvd1ZlcnRpY2FsU2VwYXJhdG9yJylcIlxuICAgICAgICAgICAgICBpZD1cInRhYmxlX3N0eWxlX3ZlcnRpY2FsU2VwYXJhdG9yXCJcbiAgICAgICAgICAgID48L3ByeS1jaGVja2JveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19wb3B1cF9fY29udGVudF9fYWN0aW9uc1wiPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tdGV4dCAtbGluay1saWtlXCIgKGNsaWNrKT1cImFkZENvbHVtbigpXCI+XG4gICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cInBvc3RfYWRkXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgIHt7ICdAcHJ5LndpZGdldC50YWJsZS5hZGRDb2x1bW4nIHwgaTE4biB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAZm9yIChjb2x1bW5EZWYgb2Ygb3B0aW9uc0NvcHk/LmNvbHVtbnMgPz8gW107IHRyYWNrIGNvbHVtbkRlZi5hdHRyaWJ1dGVJZDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBfX2NvbnRlbnRfX2ZpZWxkc1wiIChjbGljayk9XCJyZWZyZXNoKClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19wb3B1cF9fY29udGVudF9fZmllbGRzX19oZWFkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWJ0bi1ncm91cFwiPlxuICAgICAgICAgICAgICAgIEBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seVwiIChjbGljayk9XCJpbnZlcnRMYXllcnMoaSwgaSAtIDEpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiZmxlY2hlX2hhdXRcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkuYWN0aW9uLm1vdmVVcCcgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoaSA8IChvcHRpb25zQ29weT8uY29sdW1ucz8ubGVuZ3RoID8/IDApIC0gMSkge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCIgKGNsaWNrKT1cImludmVydExheWVycyhpLCBpICsgMSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJmbGVjaGVfYmFzXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LmFjdGlvbi5tb3ZlRG93bicgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBfX2NvbnRlbnRfX2ZpZWxkc19fY29udGVudFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cInRhYmxlX3Byb3BlcnR5XCI+e3sgJ0Bwcnkud2lkZ2V0LnRhYmxlLnByb3BlcnR5JyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVmcmVzaCgpXCJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZVByb3BlcnR5TmFtZSgkZXZlbnQsIGNvbHVtbkRlZilcIlxuICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cInByb3BlcnRpZXMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiY29sdW1uRGVmLnByb3BlcnR5XCJcbiAgICAgICAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgIGJpbmRWYWx1ZT1cInByb3BlcnR5XCJcbiAgICAgICAgICAgICAgICAgIGlkPVwidGFibGVfcHJvcGVydHlcIlxuICAgICAgICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwidGFibGVfbGFiZWxcIj57eyAnQHByeS53aWRnZXQudGFibGUubGFiZWwnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBpZD1cInRhYmxlX2xhYmVsXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJjaGFuZ2VMYWJlbCgkZXZlbnQsIGNvbHVtbkRlZilcIlxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImNvbHVtbkRlZi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUNvbHVtbihpKVwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJkZWxldGVcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi10ZXh0IC1saW5rLWxpa2VcIlxuICAgICAgICAgICAgICBkYXRhLWZ1bmM9XCJkZWxldGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImRlbGV0ZVwiIFt3aWR0aF09XCIxOVwiIFtoZWlnaHRdPVwiMTlcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICA8c3Bhbj57eyAnQHByeS53aWRnZXQudGFibGUuZGVsZXRlQ29sdW1uJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9wcnktc2V0dGluZ3M+XG4gICAgPC9wcnktd2lkZ2V0LWhlYWRlcj5cbiAgfVxuXG4gIDxkaXYgY2xhc3M9XCJhLXRhYmxlLXdyYXBwZXJcIj5cbiAgICBAaWYgKHBhZ2luYXRpb24kIHwgYXN5bmM7IGFzIHBhZ2luYXRpb24pIHtcbiAgICAgIEBpZiAocGFnaW5hdGlvbj8uaXRlbXMgPz8gW107IGFzIGFsbE9iamVjdHMpIHtcbiAgICAgICAgQGlmIChwYWdpbmF0aW9uLm5vRmlsbGVyc0l0ZW1zID09PSAwKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5vLXJlc3VsdFwiIFtzdHlsZS5oZWlnaHQuJV09XCJwYWdpbmF0aW9uLnRvdGFsUGFnZXMgPiAwID8gODAgOiAxMDBcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgY2xhc3M9XCJuby1yZXN1bHRfX3NlYXJjaFwiXG4gICAgICAgICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9zdmdzL3ByeV9yZWNoZXJjaGVfcGFzX2RlX3Jlc3VsdGF0LnN2Z1wiXG4gICAgICAgICAgICAgIGFsdD1cInt7ICdAcHJ5LndpZGdldC50YWJsZS5lbXB0eScgfCBpMThuIH19XCJcbiAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5vLXJlc3VsdF9fdGV4dFwiPnt7ICdAcHJ5LndpZGdldC50YWJsZS5lbXB0eScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIGlmIChwYWdpbmF0aW9uLm5vRmlsbGVyc0l0ZW1zID4gMCkge1xuICAgICAgICAgIEBpZiAoKHNlbGVjdGVkSWRzJCB8IGFzeW5jKSA/PyBbXTsgYXMgc2VsZWN0ZWRJZHMpIHtcbiAgICAgICAgICAgIEBpZiAoKGNvbHVtbnMkIHwgYXN5bmMpID8/IFtdOyBhcyBjb2x1bW5zKSB7XG4gICAgICAgICAgICAgIDx0YWJsZVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYS10YWJsZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLi1zaG93LXZlcnRpY2FsLXNlcGFyYXRvcl09XCJvcHRpb25zQ29weT8uc3R5bGU/LnNob3dWZXJ0aWNhbFNlcGFyYXRvclwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQHByeS53aWRnZXQudGFibGUuZGVzY3JpcHRpb24nIHwgaTE4blwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYWxsT2JqZWN0cz8ubGVuZ3RoID8/IDAgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1jaGVja2JveCBbbmdNb2RlbF09XCJhcmVBbGxTZWxlY3RlZFwiIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdEFsbCgkZXZlbnQpXCI+PC9wcnktY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgY29sdW1uLmF0dHJpYnV0ZUlkOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXphYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0T3JkZXIoY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIndS10eHQtJyArIG9wdGlvbnNDb3B5Py5zdHlsZT8uaGVhZGVyVGV4dEFsaWduXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBjb2x1bW4ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHF1aWNrT3JkZXIkIHwgYXN5bmM7IGFzIHF1aWNrT3JkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChxdWlja09yZGVyLmF0dHJpYnV0ZSA9PT0gY29sdW1uLmF0dHJpYnV0ZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvblN2Z109XCJxdWlja09yZGVyLmFzYyA/ICdjaGV2cm9uX3RvcCcgOiAnY2hldnJvbl9ib3R0b20nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dpZHRoXT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGFsbE9iamVjdHM7IHRyYWNrIGl0ZW0uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInNlbGVjdGVkSWRzLmluY2x1ZGVzKGl0ZW0uaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuY29udGV4dC1tZW51LXNlbGVjdGVkXT1cImNvbnRleHRNZW51Q2xpY2tlZElkID09PSBpdGVtLmlkICYmIChpc0NvbnRleHRNZW51T3BlbmVkJCB8IGFzeW5jKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNvbnRleHRtZW51KT1cImNvbnRleHRNZW51KCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgIGRldGFjaFJvd1xuICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZFZhbHVlKT1cInNlbGVjdGlvbigkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmlsbGVyXT1cIml0ZW0ubWV0YWRhdGEhWydfX3dpZGdldC10YWJsZS1maWxsZXInXVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjaGVja2JveC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LWNoZWNrYm94IFtuZ01vZGVsXT1cInNlbGVjdGVkSWRzLmluY2x1ZGVzKGl0ZW0uaWQpXCI+PC9wcnktY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgY29sdW1uLmF0dHJpYnV0ZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ1LWVsbGlwc2lzXCIgW25nQ2xhc3NdPVwiJ3UtdHh0LScgKyBvcHRpb25zQ29weT8uc3R5bGU/LmNlbGxUZXh0QWxpZ25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4ucHJvcGVydHkgPT09ICdtZXRhZGF0YScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LW1ldGFkYXRhIFtpdGVtXT1cIml0ZW1cIj48L3ByeS1tZXRhZGF0YT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbi5wcm9wZXJ0eSA9PT0gJ29DbGFzcycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImNvbnRlbnQtaW1nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIml0ZW0gfCB0cmFuc2xhdGVJdGVtVG9TeW1ib2wgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiaXRlbS5vQ2xhc3MgfCB0cmFuc2xhdGVJZDogeyB0eXBlOiAnY2xhc3MnLCBvdXRwdXQ6ICduYW1lJyB9IHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghWydtZXRhZGF0YScsICdvQ2xhc3MnXS5pbmNsdWRlcyhjb2x1bW4ucHJvcGVydHkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1leHBhbmQtdmFsdWUgW3ZhbHVlXT1cIml0ZW0gfCBnZXRWYWx1ZTogY29sdW1uLnByb3BlcnR5IHwgYXN5bmNcIj48L3ByeS1leHBhbmQtdmFsdWU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpZiAocGFnaW5hdGlvbi50b3RhbFBhZ2VzID4gMCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhLXRhYmxlLXBhZ2luYXRpb25cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhLXRhYmxlLXBhZ2luYXRpb25fX3NwYWNpbmdcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJnb1RvUGFnZSgwKVwiIFtkaXNhYmxlZF09XCJwYWdpbmF0aW9uLnBhZ2UgPD0gMFwiPlxuICAgICAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJza2lwLWxlZnQtZmlsbFwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImdvVG9QYWdlKHBhZ2luYXRpb24ucGFnZSAtIDEpXCIgW2Rpc2FibGVkXT1cInBhZ2luYXRpb24ucGFnZSA8PSAwXCI+XG4gICAgICAgICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImFycm93LWxlZnQtcy1maWxsXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhLXRhYmxlLXBhZ2luYXRpb25fX3NwYWNpbmdfX2xhYmVsXCI+XG4gICAgICAgICAgICAgICAgPHA+e3sgcGFnaW5hdGlvbi5wYWdlICsgMSB9fSAvIHt7IHBhZ2luYXRpb24ubG9hZGVkUGFnZXMgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdpbmF0aW9uLnBhZ2UgKyAxKVwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicGFnaW5hdGlvbi5wYWdlICsgMSA+PSBwYWdpbmF0aW9uLmxvYWRlZFBhZ2VzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImFycm93LXJpZ2h0LXMtZmlsbFwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdpbmF0aW9uLmxvYWRlZFBhZ2VzIC0gMSlcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInBhZ2luYXRpb24ucGFnZSArIDEgPj0gcGFnaW5hdGlvbi5sb2FkZWRQYWdlc1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJza2lwLXJpZ2h0LWZpbGxcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImEtdGFibGUtcGFnaW5hdGlvbl9fc3BhY2luZ19fbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAoe3tcbiAgICAgICAgICAgICAgICAgICdAcHJ5LndpZGdldC50YWJsZS5yZW1haW5pbmcnIHwgaTE4bjogeyByZW1haW5pbmc6IHBhZ2luYXRpb24udG90YWxQYWdlcyAtIHBhZ2luYXRpb24ubG9hZGVkUGFnZXMgfVxuICAgICAgICAgICAgICAgIH19KVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LXRhYmxlL2NvbXBvbmVudC93aWRnZXQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtdGFibGUvY29tcG9uZW50L3dpZGdldC10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUV6RSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUVsQixZQUFZLEVBQ1osY0FBYyxFQUVkLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQUUsMEJBQTBCLEVBRS9DLGNBQWMsRUFDZCxTQUFTLEVBRVQsU0FBUyxFQUlULG9CQUFvQixFQUNyQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sS0FBSyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQWdCekUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG1CQUFtQjtJQXVCM0QsWUFDRSxLQUFpQixFQUNqQixFQUFjLEVBQ04sR0FBc0I7UUFFOUIsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUZULFFBQUcsR0FBSCxHQUFH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Q0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQWdCLENBQUM7b0JBQ2hELE1BQU07Z0JBQ1IsS0FBSyx1QkFBdUI7b0JBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQWlCLENBQUM7b0JBQ2pELE1BQU07WUFDVixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxTQUFTLENBQUMsTUFBd0IsRUFBRSxXQUFvQztRQUM5RSxJQUFJLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQyxTQUFTLEtBQUssTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pFLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sV0FBVyxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzdGLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYSxFQUFFLElBQVU7UUFDcEMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBYztRQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDOzhHQW5UVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiwrRUMzQ2pDLHVqWEFxUUE7OzJGRDFOYSxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0Usa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBBTElHTk1FTlRfT1BUSU9OUyxcbiAgYmFzZUl0ZW1Qcm9wZXJ0aWVzLFxuICBDbGFzcyxcbiAgQ2xhc3NBY3Rpb25zLFxuICBDbGFzc1NlbGVjdG9ycyxcbiAgQ29sdW1uRGVmaW5pdGlvbixcbiAgQ29uZmlnU2VsZWN0b3JzLFxuICBDb250ZXh0TWVudUFjdGlvbnMsXG4gIENvbnRleHRNZW51U2VsZWN0b3JzLFxuICBEYXNoYm9hcmRBY3Rpb25zLFxuICBEYXNoYm9hcmRTZWxlY3RvcnMsXG4gIERhdGFXaWRnZXRDb21wb25lbnQsIERFRkFVTFRfVEFCTEVfV0lER0VUX1NUWUxFLFxuICBGaWVsZCxcbiAgRmllbGRTZWxlY3RvcnMsXG4gIEZpZWxkVHlwZSxcbiAgSXRlbSxcbiAgSXRlbVV0aWxzLFxuICBPcmRlclZhbHVlLFxuICBSZXN1bHRPcmRlcixcbiAgVGFibGVXaWRnZXRPcHRpb25zLCBUYWJsZVdpZGdldFN0eWxlLFxuICBXSURHRVRfSEVBREVSX0hFSUdIVFxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbC9lczYnO1xuaW1wb3J0IHsgYXVkaXRUaW1lLCBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIHRha2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBmaWx0ZXIsIG1hcCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uIHtcbiAgdG90YWxQYWdlczogbnVtYmVyO1xuICBwYWdlOiBudW1iZXI7XG4gIHJvd3M6IG51bWJlcjtcbiAgaXRlbXM6IEl0ZW1bXTtcbiAgbG9hZGVkOiBudW1iZXI7XG4gIGxvYWRlZFBhZ2VzOiBudW1iZXI7XG4gIG5vRmlsbGVyc0l0ZW1zOiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS13aWRnZXQtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0LXRhYmxlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRUYWJsZUNvbXBvbmVudCBleHRlbmRzIERhdGFXaWRnZXRDb21wb25lbnQge1xuICBvcHRpb25zJDogT2JzZXJ2YWJsZTxUYWJsZVdpZGdldE9wdGlvbnM+O1xuICBjb2x1bW5zJDogT2JzZXJ2YWJsZTxDb2x1bW5EZWZpbml0aW9uW10+O1xuICBvcHRpb25zQ29weT86IFRhYmxlV2lkZ2V0T3B0aW9ucztcbiAgZmllbGRzJDogT2JzZXJ2YWJsZTxGaWVsZFtdPjtcbiAgc2VsZWN0ZWRJZHMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcbiAgQXJyYXkgPSBBcnJheTtcbiAgY3VycmVudENsYXNzZXM6IHN0cmluZ1tdID0gW107XG4gIHNlbGVjdGVkSWRzOiBzdHJpbmdbXSA9IFtdO1xuICBXSURHRVRfSEVBREVSX0hFSUdIVCA9IFdJREdFVF9IRUFERVJfSEVJR0hUO1xuICBwcml2YXRlIGNsYXNzZXMkOiBPYnNlcnZhYmxlPENsYXNzW10+O1xuICBwcm9wZXJ0aWVzJDogT2JzZXJ2YWJsZTx7IGxhYmVsOiBzdHJpbmc7IHByb3BlcnR5OiBzdHJpbmcgfVtdPjtcbiAgYWxsU2VsZWN0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhcmVBbGxTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBhbGxJZHM6IHN0cmluZ1tdID0gW107XG4gIGNvbnRleHRNZW51Q2xpY2tlZElkOiBzdHJpbmcgPSAnJztcbiAgaXNDb250ZXh0TWVudU9wZW5lZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHF1aWNrT3JkZXIkOiBPYnNlcnZhYmxlPFJlc3VsdE9yZGVyIHwgdW5kZWZpbmVkPjtcbiAgcHJpdmF0ZSBfcmVmcmVzaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KHVuZGVmaW5lZCk7XG4gIGFjdHVhbFBhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICBwYWdpbmF0aW9uJDogT2JzZXJ2YWJsZTxQYWdpbmF0aW9uPjtcbiAgaXNPcGVuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc3RvcmU6IFN0b3JlPGFueT4sXG4gICAgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHN1cGVyKHN0b3JlLCBlbCk7XG5cbiAgICB0aGlzLmNsYXNzZXMkID0gdGhpcy5zdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3Nlcyk7XG5cbiAgICB0aGlzLmZpZWxkcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnJlc3VsdFNldCQsIHRoaXMuY2xhc3NlcyQsIHRoaXMuc3RvcmUuc2VsZWN0KEZpZWxkU2VsZWN0b3JzLmZpZWxkcyldKS5waXBlKFxuICAgICAgbWFwKFxuICAgICAgICAoW3Jlc3VsdFNldCwgY2xhc3NlcywgZmllbGRzXSkgPT5cbiAgICAgICAgICBbXG4gICAgICAgICAgICAuLi5JdGVtVXRpbHMuZ2V0RmllbGRzRm9yQ2xhc3NlcyhPYmplY3Qua2V5cyhyZXN1bHRTZXQuaXRlbXMpLCBjbGFzc2VzLCBmaWVsZHMpLFxuICAgICAgICAgICAgLi4uYmFzZUl0ZW1Qcm9wZXJ0aWVzLm1hcCgocCkgPT4gKHsgbmFtZTogcCwgaWQ6IHAgfSkgYXMgRmllbGQpXG4gICAgICAgICAgXSBhcyBGaWVsZFtdXG4gICAgICApLFxuICAgICAgbWFwKChmaWVsZHMpID0+IGZpZWxkcy5maWx0ZXIoKGZpZWxkKSA9PiBmaWVsZC50eXBlICE9PSBGaWVsZFR5cGUuUkFXKSlcbiAgICApO1xuXG4gICAgdGhpcy5vcHRpb25zJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5tYW5pZmVzdCQucGlwZShtYXAoKG1hbmlmZXN0KSA9PiBtYW5pZmVzdC5vcHRpb25zIGFzIFRhYmxlV2lkZ2V0T3B0aW9ucykpLFxuICAgICAgdGhpcy5yZXN1bHRTZXQkLFxuICAgICAgdGhpcy5jbGFzc2VzJCxcbiAgICAgIHRoaXMuZmllbGRzJCxcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy50YWJsZURlZmF1bHRBdHRyaWJ1dGVzRGVmaW5pdGlvbnMpXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW29wdGlvbnMsIHJlc3VsdFNldCwgY2xhc3NlcywgZmllbGRzLCBkZWZzXSkgPT4ge1xuICAgICAgICBpZiAoIW9wdGlvbnMuY29sdW1ucyB8fCBvcHRpb25zLmNvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IEl0ZW1VdGlscy5nZXRBdHRyaWJ1dGVzRnJvbVJzKHJlc3VsdFNldCwgY2xhc3NlcywgZmllbGRzLCBkZWZzKTtcbiAgICAgICAgICBjb25zdCB1bmlxdWVQcm9wcyA9IFsuLi5uZXcgU2V0KGF0dHJpYnV0ZXMubWFwKCh7IG5hbWUsIHRlY2huaWNhbE5hbWUgfSkgPT4gKHsgbmFtZSwgdGVjaG5pY2FsTmFtZSB9KSkpXTtcblxuICAgICAgICAgIG9wdGlvbnMuY29sdW1ucyA9IHVuaXF1ZVByb3BzLm1hcCgocHJvcGVydHkpID0+ICh7XG4gICAgICAgICAgICBwcm9wZXJ0eTogcHJvcGVydHkudGVjaG5pY2FsTmFtZSxcbiAgICAgICAgICAgIGxhYmVsOiBwcm9wZXJ0eS5uYW1lLFxuICAgICAgICAgICAgYXR0cmlidXRlSWQ6IGF0dHJpYnV0ZXMuZmluZCgoYXR0cikgPT4gYXR0ci50ZWNobmljYWxOYW1lID09PSBwcm9wZXJ0eS50ZWNobmljYWxOYW1lKT8uaWRcbiAgICAgICAgICB9KSkgYXMgQ29sdW1uRGVmaW5pdGlvbltdO1xuICAgICAgICB9XG4gICAgICAgIG9wdGlvbnMuc3R5bGUgPSBvcHRpb25zLnN0eWxlID8/IERFRkFVTFRfVEFCTEVfV0lER0VUX1NUWUxFLnZhbHVlO1xuICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLm9wdGlvbnMkLnBpcGUoZmlsdGVyKChvcHQpID0+ICEhb3B0KSkuc3Vic2NyaWJlKChvcHRpb25zKSA9PiB7XG4gICAgICAgIHRoaXMub3B0aW9uc0NvcHkgPSB7IC4uLihKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpKSBhcyBUYWJsZVdpZGdldE9wdGlvbnMpIH07XG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmFsbEl0ZW1zJC5zdWJzY3JpYmUoKGFsbE9iamVjdHMpID0+ICh0aGlzLmFsbElkcyA9IGFsbE9iamVjdHMubWFwKChvYmopID0+IG9iai5pZCkpKSk7XG5cbiAgICBjb25zdCBIRUFERVJfU0laRSA9IDMwO1xuICAgIGNvbnN0IFBBR0lOQVRJT05fU0laRSA9IDM1O1xuICAgIGNvbnN0IExJTkVfU0laRSA9IDMwO1xuXG4gICAgdGhpcy5wYWdpbmF0aW9uJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5hbGxJdGVtcyQsXG4gICAgICB0aGlzLmFjdHVhbFBhZ2UkLFxuICAgICAgdGhpcy53aWRnZXRTaXplJCxcbiAgICAgIHRoaXMucmVzdWx0U2V0JCxcbiAgICAgIHRoaXMuZGlzcGxheUhlYWRlciRcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbaXRlbXMsIGFjdHVhbFBhZ2UsIHNpemUsIHJzLCBoZWFkZXJQcmVzZW50XSkgPT4ge1xuICAgICAgICBjb25zdCByb3dzID0gTWF0aC5tYXgoXG4gICAgICAgICAgMSxcbiAgICAgICAgICBNYXRoLmZsb29yKFxuICAgICAgICAgICAgKHNpemUuaGVpZ2h0IC0gSEVBREVSX1NJWkUgLSBQQUdJTkFUSU9OX1NJWkUgLSAoaGVhZGVyUHJlc2VudCA/IFdJREdFVF9IRUFERVJfSEVJR0hULnZhbHVlIDogMCkpIC8gTElORV9TSVpFXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCB0b3RhbCA9IE9iamVjdC52YWx1ZXMocnMuY291bnQgPz8ge30pLnJlZHVjZSgocCwgYykgPT4gYy5jb3VudCArIHAsIDApO1xuICAgICAgICBjb25zdCBsb2FkZWRQYWdlcyA9IE1hdGguY2VpbChpdGVtcy5sZW5ndGggLyByb3dzKTtcbiAgICAgICAgY29uc3QgcGFnZSA9IGFjdHVhbFBhZ2UgPD0gbG9hZGVkUGFnZXMgPyBhY3R1YWxQYWdlIDogTWF0aC5tYXgoMCwgbG9hZGVkUGFnZXMgLSAxKTtcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBpdGVtcy5maWx0ZXIoKF8sIGlkeCkgPT4gaWR4ID49IHJvd3MgKiBwYWdlICYmIGlkeCA8IHJvd3MgKiAocGFnZSArIDEpKTtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRXaXRoRmlsbGVycyA9XG4gICAgICAgICAgZmlsdGVyZWQubGVuZ3RoID09PSByb3dzXG4gICAgICAgICAgICA/IGZpbHRlcmVkXG4gICAgICAgICAgICA6IGZpbHRlcmVkLmNvbmNhdChcbiAgICAgICAgICAgICAgICBuZXcgQXJyYXkocm93cyAtIGZpbHRlcmVkLmxlbmd0aCkuZmlsbCh7XG4gICAgICAgICAgICAgICAgICBtZXRhZGF0YTogeyAnX193aWRnZXQtdGFibGUtZmlsbGVyJzogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgfSBhcyB1bmtub3duIGFzIEl0ZW0pXG4gICAgICAgICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcm93cyxcbiAgICAgICAgICBwYWdlLFxuICAgICAgICAgIGl0ZW1zOiBmaWx0ZXJlZFdpdGhGaWxsZXJzLFxuICAgICAgICAgIG5vRmlsbGVyc0l0ZW1zOiBmaWx0ZXJlZC5sZW5ndGgsXG4gICAgICAgICAgdG90YWwsXG4gICAgICAgICAgdG90YWxQYWdlczogTWF0aC5jZWlsKHRvdGFsIC8gcm93cyksXG4gICAgICAgICAgbG9hZGVkOiBpdGVtcy5sZW5ndGgsXG4gICAgICAgICAgbG9hZGVkUGFnZXNcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5wYWdpbmF0aW9uJC5waXBlKGF1ZGl0VGltZSgyMDApKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWZyZXNoKCkpKTtcblxuICAgIHRoaXMuY29sdW1ucyQgPSB0aGlzLm9wdGlvbnMkLnBpcGUoXG4gICAgICBtYXAoKG9wdGlvbnMpID0+IG9wdGlvbnM/LmNvbHVtbnMgPz8gW10pLFxuICAgICAgdGFwKCgpID0+IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZWZyZXNoKCksIDUwMCkpXG4gICAgKTtcblxuICAgIHRoaXMuaXNDb250ZXh0TWVudU9wZW5lZCQgPSB0aGlzLnN0b3JlLnNlbGVjdChDb250ZXh0TWVudVNlbGVjdG9ycy5vcGVuZWQpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMucmVzdWx0U2V0JFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKHJzKSA9PiAhIXJzKSxcbiAgICAgICAgICBtYXAoKHJzKSA9PiBPYmplY3Qua2V5cyhycy5pdGVtcykpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoY2xhc3NlcykgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRDbGFzc2VzLmxlbmd0aCA+IDAgJiYgIWVxdWFsKHRoaXMuY3VycmVudENsYXNzZXMsIGNsYXNzZXMpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMub3B0aW9uc0NvcHkpIHtcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zQ29weSA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVsZXRlIHRoaXMub3B0aW9uc0NvcHkuY29sdW1ucztcbiAgICAgICAgICAgIHRoaXMuZW1pdE1hbmlmZXN0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY3VycmVudENsYXNzZXMgPSBjbGFzc2VzO1xuICAgICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnNlbGVjdGVkSWRzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLnNlbGVjdGVkSWRzJC5zdWJzY3JpYmUoKHNlbGVjdGVkSWRzKSA9PiB0aGlzLnNlbGVjdGVkSWRzID09PSBzZWxlY3RlZElkcykpO1xuXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDbGFzc0FjdGlvbnMubG9hZCgpKTtcblxuICAgIHRoaXMucHJvcGVydGllcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnJlc3VsdFNldCQsIHRoaXMuY2xhc3NlcyQsIHRoaXMuZmllbGRzJF0pLnBpcGUoXG4gICAgICBtYXAoKFtycywgY2xhc3NlcywgZmllbGRzXSkgPT4gW1xuICAgICAgICAuLi5PYmplY3Qua2V5cyhycy5pdGVtcylcbiAgICAgICAgICAubWFwKChjbGFzc0lkKSA9PiAoY2xhc3Nlcy5maW5kKChjbCkgPT4gY2wuaWQgPT09IGNsYXNzSWQpID8/IHsgYXR0cmlidXRlczogW10gfSkuYXR0cmlidXRlcylcbiAgICAgICAgICAuZmxhdCgpXG4gICAgICAgICAgLm1hcCgoYXR0cikgPT4gKHsgdGVjaG5pY2FsTmFtZTogYXR0ci50ZWNobmljYWxOYW1lLCBuYW1lOiBhdHRyLm5hbWUgfSkpXG4gICAgICBdKSxcbiAgICAgIG1hcCgocHJvcHMpID0+IHtcbiAgICAgICAgY29uc3Qgc29ydGVkUHJvcHMgPSBbLi4ucHJvcHNdO1xuICAgICAgICBzb3J0ZWRQcm9wcy5zb3J0KChwQSwgcEIpID0+IHBBLm5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKS5sb2NhbGVDb21wYXJlKHBCLm5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKSkpO1xuICAgICAgICByZXR1cm4gc29ydGVkUHJvcHM7XG4gICAgICB9KSxcbiAgICAgIG1hcCgocHJvcHMpID0+IHByb3BzLm1hcCgocHJvcCkgPT4gKHsgbGFiZWw6IHByb3AubmFtZSwgcHJvcGVydHk6IHByb3AudGVjaG5pY2FsTmFtZSB9KSkpLFxuICAgICAgdGFwKCgpID0+IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZWZyZXNoKCksIDUwMCkpXG4gICAgKTtcblxuICAgIHRoaXMuYWxsU2VsZWN0ZWQkID0gY29tYmluZUxhdGVzdChbdGhpcy5zZWxlY3RlZElkcyQsIHRoaXMuYWxsSXRlbXMkXSkucGlwZShcbiAgICAgIG1hcCgoW3NlbGVjdGVkSWRzLCBhbGxPYmplY3RzXSkgPT4ge1xuICAgICAgICBjb25zdCBhbGxJZHMgPSBhbGxPYmplY3RzLm1hcCgob2JqZWN0KSA9PiBvYmplY3QuaWQpO1xuICAgICAgICByZXR1cm4gIWFsbElkcy5maW5kKChpZCkgPT4gIXNlbGVjdGVkSWRzLmluY2x1ZGVzKGlkKSk7XG4gICAgICB9KSxcbiAgICAgIHRhcCgoYWxsU2VsZWN0ZWQpID0+ICh0aGlzLmFyZUFsbFNlbGVjdGVkID0gYWxsU2VsZWN0ZWQpKVxuICAgICk7XG5cbiAgICB0aGlzLnF1aWNrT3JkZXIkID0gY29tYmluZUxhdGVzdChbdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnF1aWNrT3JkZXIpLCB0aGlzLmRhdGFzb3VyY2VJZHMkXSkucGlwZShcbiAgICAgIG1hcCgoW29yZGVyLCBucXNdKSA9PiAobnFzLmxlbmd0aCA9PT0gMSA/IG9yZGVyW25xc1swXV0gOiB1bmRlZmluZWQpKVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuX3JlZnJlc2gkLnBpcGUoZGVsYXkoMTAwKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSkpO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLl9yZWZyZXNoJC5uZXh0KCk7XG4gICAgdGhpcy5pc09wZW4gPSAhdGhpcy5pc09wZW47XG4gIH1cblxuICBlbWl0TWFuaWZlc3QoKSB7XG4gICAgdGhpcy5tYW5pZmVzdE1vZGlmaWVkLmVtaXQoe1xuICAgICAgd2lkZ2V0SW5kZXg6IHRoaXMud2lkZ2V0SW5kZXgsXG4gICAgICBtYW5pZmVzdDogeyAuLi50aGlzLm1hbmlmZXN0LCBvcHRpb25zOiB0aGlzLm9wdGlvbnNDb3B5IH1cbiAgICB9KTtcbiAgfVxuXG4gIGFkZENvbHVtbigpIHtcbiAgICBpZiAoIXRoaXMub3B0aW9uc0NvcHk/LmNvbHVtbnMpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkgPSB7IGNvbHVtbnM6IFtdIH07XG4gICAgfVxuICAgIHRoaXMub3B0aW9uc0NvcHkuY29sdW1ucz8ucHVzaCh7IGxhYmVsOiAnJywgcHJvcGVydHk6ICcnIH0pO1xuICAgIHRoaXMucmVmcmVzaCgpO1xuICB9XG5cbiAgY2hhbmdlUHJvcGVydHlOYW1lKCRldmVudDogYW55LCBjb2x1bW5EZWY6IENvbHVtbkRlZmluaXRpb24pIHtcbiAgICBjb2x1bW5EZWYucHJvcGVydHkgPSAkZXZlbnQ7XG4gICAgdGhpcy5yZWZyZXNoKCk7XG4gIH1cblxuICBjaGFuZ2VMYWJlbCgkZXZlbnQ6IEV2ZW50LCBjb2x1bW5EZWY6IENvbHVtbkRlZmluaXRpb24pIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgbmV3TGFiZWwgPSAkZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZTtcbiAgICBpZiAoY29sdW1uRGVmLmxhYmVsICE9PSBuZXdMYWJlbCkge1xuICAgICAgY29sdW1uRGVmLmxhYmVsID0gbmV3TGFiZWw7XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICBkZWxldGVDb2x1bW4oaTogbnVtYmVyKSB7XG4gICAgdGhpcy5vcHRpb25zQ29weT8uY29sdW1ucz8uc3BsaWNlKGksIDEpO1xuICAgIHRoaXMucmVmcmVzaCgpO1xuICB9XG5cbiAgc2VsZWN0aW9uKCRldmVudDogTW91c2VFdmVudCwgaXRlbTogSXRlbSkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3QoeyBpZDogaXRlbS5pZCwgY3VtdWxhdGl2ZTogISRldmVudC5zaGlmdEtleSB9KSk7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgY29udGV4dE1lbnUoJGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBJdGVtKSB7XG4gICAgaWYgKHRoaXMubWFuaWZlc3QuY29udGV4dE1lbnUgIT09IGZhbHNlKSB7XG4gICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgIENvbnRleHRNZW51QWN0aW9ucy5vcGVuKHtcbiAgICAgICAgICBpdGVtSWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgY2xpZW50WDogJGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgY2xpZW50WTogJGV2ZW50LmNsaWVudFksXG4gICAgICAgICAgcmVzdWx0U2V0OiBBcnJheS5pc0FycmF5KHRoaXMubWFuaWZlc3QuZGF0YXNvdXJjZSkgPyB0aGlzLm1hbmlmZXN0LmRhdGFzb3VyY2VbMF0gOiB0aGlzLm1hbmlmZXN0LmRhdGFzb3VyY2UsXG4gICAgICAgICAgZnJvbTogJ3RhYmxlJyxcbiAgICAgICAgICBhbGxvd09iamVjdENyZWF0aW9uOiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuY29udGV4dE1lbnVDbGlja2VkSWQgPSBpdGVtLmlkO1xuICAgIH1cbiAgfVxuXG4gIGludmVydExheWVycyhpZHg6IG51bWJlciwgaWR4V2l0aDogbnVtYmVyKSB7XG4gICAgaWYgKCEhdGhpcy5vcHRpb25zQ29weSAmJiAhIXRoaXMub3B0aW9uc0NvcHkuY29sdW1ucykge1xuICAgICAgY29uc3QgdG1wID0gdGhpcy5vcHRpb25zQ29weS5jb2x1bW5zW2lkeFdpdGhdO1xuICAgICAgdGhpcy5vcHRpb25zQ29weS5jb2x1bW5zW2lkeFdpdGhdID0gdGhpcy5vcHRpb25zQ29weS5jb2x1bW5zW2lkeF07XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5LmNvbHVtbnNbaWR4XSA9IHRtcDtcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEFsbCgkZXZlbnQ6IGFueSkge1xuICAgIGlmICgkZXZlbnQpIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RNYW55KHsgaWRzOiB0aGlzLmFsbElkcyB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RNYW55KHsgaWRzOiBbXSB9KSk7XG4gICAgfVxuICB9XG5cbiAgc2V0T3JkZXIoY29sdW1uOiBDb2x1bW5EZWZpbml0aW9uKSB7XG4gICAgdGhpcy5kYXRhc291cmNlSWRzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIGZpbHRlcigobnFzKSA9PiBucXMubGVuZ3RoID09PSAxKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5xdWlja09yZGVyJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFtucXMsIGFjdHVhbE9yZGVyXSkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMucXVpY2tPcmRlcih7XG4gICAgICAgICAgICBkYXRhc291cmNlSWQ6IG5xc1swXSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZTogY29sdW1uLmF0dHJpYnV0ZUlkID8/ICcnLFxuICAgICAgICAgICAgYXNjOiB0aGlzLm5leHRPcmRlcihjb2x1bW4sIGFjdHVhbE9yZGVyKVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZVN0eWxlKCRldmVudDogc3RyaW5nIHwgYm9vbGVhbiwgcHJvcDoga2V5b2YgVGFibGVXaWRnZXRTdHlsZSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5ICYmIHRoaXMub3B0aW9uc0NvcHkuc3R5bGUpIHtcbiAgICAgIHN3aXRjaCAocHJvcCkge1xuICAgICAgICBjYXNlICdoZWFkZXJUZXh0QWxpZ24nOlxuICAgICAgICBjYXNlICdjZWxsVGV4dEFsaWduJzpcbiAgICAgICAgICB0aGlzLm9wdGlvbnNDb3B5LnN0eWxlW3Byb3BdID0gJGV2ZW50IGFzIHN0cmluZztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc2hvd1ZlcnRpY2FsU2VwYXJhdG9yJzpcbiAgICAgICAgICB0aGlzLm9wdGlvbnNDb3B5LnN0eWxlW3Byb3BdID0gJGV2ZW50IGFzIGJvb2xlYW47XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBuZXh0T3JkZXIoY29sdW1uOiBDb2x1bW5EZWZpbml0aW9uLCBhY3R1YWxPcmRlcjogUmVzdWx0T3JkZXIgfCB1bmRlZmluZWQpOiBPcmRlclZhbHVlIHtcbiAgICBpZiAoIWFjdHVhbE9yZGVyIHx8IGFjdHVhbE9yZGVyLmF0dHJpYnV0ZSAhPT0gY29sdW1uLmF0dHJpYnV0ZUlkKSB7XG4gICAgICByZXR1cm4gJ2FzYyc7XG4gICAgfVxuICAgIHJldHVybiBhY3R1YWxPcmRlci5hc2MgPT09ICdhc2MnID8gJ2Rlc2MnIDogYWN0dWFsT3JkZXIuYXNjID09PSAnZGVzYycgPyB1bmRlZmluZWQgOiAnYXNjJztcbiAgfVxuXG4gIHRyYWNrT2JqZWN0cyhpbmRleDogbnVtYmVyLCBpdGVtOiBJdGVtKSB7XG4gICAgcmV0dXJuIGl0ZW0uaWQ7XG4gIH1cblxuICBnb1RvUGFnZShudW1iZXI6IG51bWJlcikge1xuICAgIHRoaXMuYWN0dWFsUGFnZSQubmV4dChudW1iZXIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEFMSUdOTUVOVF9PUFRJT05TID0gQUxJR05NRU5UX09QVElPTlM7XG59XG4iLCI8cHJ5LXdpZGdldC10YWJsZS1jc3M+PC9wcnktd2lkZ2V0LXRhYmxlLWNzcz5cbjxkaXYgY2xhc3M9XCJvLXdpZGdldCBvLXdpZGdldC0tdGFibGVcIj5cbiAgQGlmIChkaXNwbGF5SGVhZGVyJCB8IGFzeW5jKSB7XG4gICAgPHByeS13aWRnZXQtaGVhZGVyXG4gICAgICBbZGF0YXNvdXJjZUlkc109XCIoZGF0YXNvdXJjZUlkcyQgfCBhc3luYykgPz8gW11cIlxuICAgICAgW3dpZGdldEluZGV4XT1cIndpZGdldEluZGV4XCJcbiAgICAgIFttYW5pZmVzdF09XCJtYW5pZmVzdFwiXG4gICAgICAobWFuaWZlc3RNb2RpZmllZCk9XCJtYW5pZmVzdE1vZGlmaWVkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAjaGVhZGVyXG4gICAgICBbaGVhZGVyT3B0aW9uc109XCIoZGlzcGxheUhlYWRlciQgfCBhc3luYykgPz8ge31cIlxuICAgICAgKGNsaWNrKT1cInJlZnJlc2goKVwiXG4gICAgPlxuICAgICAgPHByeS1zZXR0aW5nc1xuICAgICAgICAoY2xpY2spPVwicmVmcmVzaCgpXCJcbiAgICAgICAgKHNhdmVUcmlnZ2VyZWQpPVwiZW1pdE1hbmlmZXN0KClcIlxuICAgICAgICAoY2hhbmdlVGl0bGUpPVwiY2hhbmdlV2lkZ2V0VGl0bGUoJGV2ZW50KVwiXG4gICAgICAgIFtoZWFkZXJQcmVzZW50XT1cImRpc3BsYXlIZWFkZXIkIHwgYXN5bmNcIlxuICAgICAgICBbd2lkZ2V0SW5kZXhdPVwid2lkZ2V0SW5kZXhcIlxuICAgICAgICBbaGVhZGVyXT1cImhlYWRlclwiXG4gICAgICAgIFtvcGVuJF09XCJvcGVuJFwiXG4gICAgICAgICh0cmlnZ2VyQ2xpY2spPVwidGhpcy5yZWZyZXNoKClcIlxuICAgICAgICBjbGFzcz1cIm8tc2V0dGluZ3NcIlxuICAgICAgPlxuICAgICAgICBAaWYgKG9wdGlvbnNDb3B5ICYmIG9wdGlvbnNDb3B5LnN0eWxlKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cInRhYmxlX3N0eWxlX2hlYWRlclRleHRBbGlnblwiPnt7XG4gICAgICAgICAgICAgICdAcHJ5LndpZGdldC50YWJsZS5oZWFkZXJUZXh0QWxpZ24nIHwgaTE4blxuICAgICAgICAgICAgfX08L2xhYmVsPlxuICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgW2l0ZW1zXT1cIkFMSUdOTUVOVF9PUFRJT05TXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuc3R5bGUuaGVhZGVyVGV4dEFsaWduXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU3R5bGUoJGV2ZW50LCAnaGVhZGVyVGV4dEFsaWduJylcIlxuICAgICAgICAgICAgICBpZD1cInRhYmxlX3N0eWxlX2hlYWRlclRleHRBbGlnblwiXG4gICAgICAgICAgICAgIGkxOG5QcmVmaXg9XCJAcHJ5LndpZGdldC50YWJsZS5hbGlnbi5cIlxuICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwidGFibGVfc3R5bGVfY2VsbFRleHRBbGlnblwiPnt7XG4gICAgICAgICAgICAgICdAcHJ5LndpZGdldC50YWJsZS5jZWxsVGV4dEFsaWduJyB8IGkxOG5cbiAgICAgICAgICAgIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgIFtpdGVtc109XCJBTElHTk1FTlRfT1BUSU9OU1wiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LnN0eWxlLmNlbGxUZXh0QWxpZ25cIlxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVTdHlsZSgkZXZlbnQsICdjZWxsVGV4dEFsaWduJylcIlxuICAgICAgICAgICAgICBpZD1cInRhYmxlX3N0eWxlX2NlbGxUZXh0QWxpZ25cIlxuICAgICAgICAgICAgICBpMThuUHJlZml4PVwiQHByeS53aWRnZXQudGFibGUuYWxpZ24uXCJcbiAgICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgdS1kaXNwbGF5LWZsZXggLXJvdyAtanVzdGlmeS1zcGFjZS1iZXR3ZWVuIG8td2lkZ2V0LS10YWJsZV9fdmVydGljYWwtc2VwYXJhdG9yXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwidGFibGVfc3R5bGVfdmVydGljYWxTZXBhcmF0b3JcIj57e1xuICAgICAgICAgICAgICAnQHByeS53aWRnZXQudGFibGUudmVydGljYWxTZXBhcmF0b3InIHwgaTE4blxuICAgICAgICAgICAgfX08L2xhYmVsPlxuICAgICAgICAgICAgPHByeS1jaGVja2JveFxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5zdHlsZS5zaG93VmVydGljYWxTZXBhcmF0b3JcIlxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVTdHlsZSgkZXZlbnQsICdzaG93VmVydGljYWxTZXBhcmF0b3InKVwiXG4gICAgICAgICAgICAgIGlkPVwidGFibGVfc3R5bGVfdmVydGljYWxTZXBhcmF0b3JcIlxuICAgICAgICAgICAgPjwvcHJ5LWNoZWNrYm94PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm8tc2V0dGluZ3NfX3BvcHVwX19jb250ZW50X19hY3Rpb25zXCI+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi10ZXh0IC1saW5rLWxpa2VcIiAoY2xpY2spPVwiYWRkQ29sdW1uKClcIj5cbiAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwicG9zdF9hZGRcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAge3sgJ0Bwcnkud2lkZ2V0LnRhYmxlLmFkZENvbHVtbicgfCBpMThuIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBmb3IgKGNvbHVtbkRlZiBvZiBvcHRpb25zQ29weT8uY29sdW1ucyA/PyBbXTsgdHJhY2sgY29sdW1uRGVmLmF0dHJpYnV0ZUlkOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19wb3B1cF9fY29udGVudF9fZmllbGRzXCIgKGNsaWNrKT1cInJlZnJlc2goKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tc2V0dGluZ3NfX3BvcHVwX19jb250ZW50X19maWVsZHNfX2hlYWRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgQGlmIChpID4gMCkge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCIgKGNsaWNrKT1cImludmVydExheWVycyhpLCBpIC0gMSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJmbGVjaGVfaGF1dFwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5hY3Rpb24ubW92ZVVwJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChpIDwgKG9wdGlvbnNDb3B5Py5jb2x1bW5zPy5sZW5ndGggPz8gMCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHlcIiAoY2xpY2spPVwiaW52ZXJ0TGF5ZXJzKGksIGkgKyAxKVwiPlxuICAgICAgICAgICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImZsZWNoZV9iYXNcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkuYWN0aW9uLm1vdmVEb3duJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19wb3B1cF9fY29udGVudF9fZmllbGRzX19jb250ZW50XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwidGFibGVfcHJvcGVydHlcIj57eyAnQHByeS53aWRnZXQudGFibGUucHJvcGVydHknIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWZyZXNoKClcIlxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlUHJvcGVydHlOYW1lKCRldmVudCwgY29sdW1uRGVmKVwiXG4gICAgICAgICAgICAgICAgICBbaXRlbXNdPVwicHJvcGVydGllcyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJjb2x1bW5EZWYucHJvcGVydHlcIlxuICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgYmluZFZhbHVlPVwicHJvcGVydHlcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJ0YWJsZV9wcm9wZXJ0eVwiXG4gICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJ0YWJsZV9sYWJlbFwiPnt7ICdAcHJ5LndpZGdldC50YWJsZS5sYWJlbCcgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIGlkPVwidGFibGVfbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgKGlucHV0KT1cImNoYW5nZUxhYmVsKCRldmVudCwgY29sdW1uRGVmKVwiXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY29sdW1uRGVmLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlQ29sdW1uKGkpXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cImRlbGV0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLXRleHQgLWxpbmstbGlrZVwiXG4gICAgICAgICAgICAgIGRhdGEtZnVuYz1cImRlbGV0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiZGVsZXRlXCIgW3dpZHRoXT1cIjE5XCIgW2hlaWdodF09XCIxOVwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgIDxzcGFuPnt7ICdAcHJ5LndpZGdldC50YWJsZS5kZWxldGVDb2x1bW4nIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L3ByeS1zZXR0aW5ncz5cbiAgICA8L3ByeS13aWRnZXQtaGVhZGVyPlxuICB9XG5cbiAgPGRpdiBjbGFzcz1cImEtdGFibGUtd3JhcHBlclwiPlxuICAgIEBpZiAocGFnaW5hdGlvbiQgfCBhc3luYzsgYXMgcGFnaW5hdGlvbikge1xuICAgICAgQGlmIChwYWdpbmF0aW9uPy5pdGVtcyA/PyBbXTsgYXMgYWxsT2JqZWN0cykge1xuICAgICAgICBAaWYgKHBhZ2luYXRpb24ubm9GaWxsZXJzSXRlbXMgPT09IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibm8tcmVzdWx0XCIgW3N0eWxlLmhlaWdodC4lXT1cInBhZ2luYXRpb24udG90YWxQYWdlcyA+IDAgPyA4MCA6IDEwMFwiPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBjbGFzcz1cIm5vLXJlc3VsdF9fc2VhcmNoXCJcbiAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL3N2Z3MvcHJ5X3JlY2hlcmNoZV9wYXNfZGVfcmVzdWx0YXQuc3ZnXCJcbiAgICAgICAgICAgICAgYWx0PVwie3sgJ0Bwcnkud2lkZ2V0LnRhYmxlLmVtcHR5JyB8IGkxOG4gfX1cIlxuICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm8tcmVzdWx0X190ZXh0XCI+e3sgJ0Bwcnkud2lkZ2V0LnRhYmxlLmVtcHR5JyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2UgaWYgKHBhZ2luYXRpb24ubm9GaWxsZXJzSXRlbXMgPiAwKSB7XG4gICAgICAgICAgQGlmICgoc2VsZWN0ZWRJZHMkIHwgYXN5bmMpID8/IFtdOyBhcyBzZWxlY3RlZElkcykge1xuICAgICAgICAgICAgQGlmICgoY29sdW1ucyQgfCBhc3luYykgPz8gW107IGFzIGNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgPHRhYmxlXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhLXRhYmxlXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuLXNob3ctdmVydGljYWwtc2VwYXJhdG9yXT1cIm9wdGlvbnNDb3B5Py5zdHlsZT8uc2hvd1ZlcnRpY2FsU2VwYXJhdG9yXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidAcHJ5LndpZGdldC50YWJsZS5kZXNjcmlwdGlvbicgfCBpMThuXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChhbGxPYmplY3RzPy5sZW5ndGggPz8gMCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICA8dGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LWNoZWNrYm94IFtuZ01vZGVsXT1cImFyZUFsbFNlbGVjdGVkXCIgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0QWxsKCRldmVudClcIj48L3ByeS1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFjayBjb2x1bW4uYXR0cmlidXRlSWQ7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNpemFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRPcmRlcihjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIid1LXR4dC0nICsgb3B0aW9uc0NvcHk/LnN0eWxlPy5oZWFkZXJUZXh0QWxpZ25cIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbHVtbi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocXVpY2tPcmRlciQgfCBhc3luYzsgYXMgcXVpY2tPcmRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHF1aWNrT3JkZXIuYXR0cmlidXRlID09PSBjb2x1bW4uYXR0cmlidXRlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uU3ZnXT1cInF1aWNrT3JkZXIuYXNjID8gJ2NoZXZyb25fdG9wJyA6ICdjaGV2cm9uX2JvdHRvbSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hlaWdodF09XCIxMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgYWxsT2JqZWN0czsgdHJhY2sgaXRlbS5pZCkge1xuICAgICAgICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwic2VsZWN0ZWRJZHMuaW5jbHVkZXMoaXRlbS5pZClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5jb250ZXh0LW1lbnUtc2VsZWN0ZWRdPVwiY29udGV4dE1lbnVDbGlja2VkSWQgPT09IGl0ZW0uaWQgJiYgKGlzQ29udGV4dE1lbnVPcGVuZWQkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY29udGV4dG1lbnUpPVwiY29udGV4dE1lbnUoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgZGV0YWNoUm93XG4gICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkVmFsdWUpPVwic2VsZWN0aW9uKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5maWxsZXJdPVwiaXRlbS5tZXRhZGF0YSFbJ19fd2lkZ2V0LXRhYmxlLWZpbGxlciddXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNoZWNrYm94LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktY2hlY2tib3ggW25nTW9kZWxdPVwic2VsZWN0ZWRJZHMuaW5jbHVkZXMoaXRlbS5pZClcIj48L3ByeS1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFjayBjb2x1bW4uYXR0cmlidXRlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInUtZWxsaXBzaXNcIiBbbmdDbGFzc109XCIndS10eHQtJyArIG9wdGlvbnNDb3B5Py5zdHlsZT8uY2VsbFRleHRBbGlnblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbi5wcm9wZXJ0eSA9PT0gJ21ldGFkYXRhJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktbWV0YWRhdGEgW2l0ZW1dPVwiaXRlbVwiPjwvcHJ5LW1ldGFkYXRhPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uLnByb3BlcnR5ID09PSAnb0NsYXNzJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY29udGVudC1pbWdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hlaWdodF09XCIyNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt3aWR0aF09XCIyNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaXRlbSB8IHRyYW5zbGF0ZUl0ZW1Ub1N5bWJvbCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJpdGVtLm9DbGFzcyB8IHRyYW5zbGF0ZUlkOiB7IHR5cGU6ICdjbGFzcycsIG91dHB1dDogJ25hbWUnIH0gfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFbJ21ldGFkYXRhJywgJ29DbGFzcyddLmluY2x1ZGVzKGNvbHVtbi5wcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LWV4cGFuZC12YWx1ZSBbdmFsdWVdPVwiaXRlbSB8IGdldFZhbHVlOiBjb2x1bW4ucHJvcGVydHkgfCBhc3luY1wiPjwvcHJ5LWV4cGFuZC12YWx1ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChwYWdpbmF0aW9uLnRvdGFsUGFnZXMgPiAwKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImEtdGFibGUtcGFnaW5hdGlvblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImEtdGFibGUtcGFnaW5hdGlvbl9fc3BhY2luZ1wiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImdvVG9QYWdlKDApXCIgW2Rpc2FibGVkXT1cInBhZ2luYXRpb24ucGFnZSA8PSAwXCI+XG4gICAgICAgICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cInNraXAtbGVmdC1maWxsXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZ29Ub1BhZ2UocGFnaW5hdGlvbi5wYWdlIC0gMSlcIiBbZGlzYWJsZWRdPVwicGFnaW5hdGlvbi5wYWdlIDw9IDBcIj5cbiAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiYXJyb3ctbGVmdC1zLWZpbGxcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImEtdGFibGUtcGFnaW5hdGlvbl9fc3BhY2luZ19fbGFiZWxcIj5cbiAgICAgICAgICAgICAgICA8cD57eyBwYWdpbmF0aW9uLnBhZ2UgKyAxIH19IC8ge3sgcGFnaW5hdGlvbi5sb2FkZWRQYWdlcyB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHBhZ2luYXRpb24ucGFnZSArIDEpXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwYWdpbmF0aW9uLnBhZ2UgKyAxID49IHBhZ2luYXRpb24ubG9hZGVkUGFnZXNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiYXJyb3ctcmlnaHQtcy1maWxsXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHBhZ2luYXRpb24ubG9hZGVkUGFnZXMgLSAxKVwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicGFnaW5hdGlvbi5wYWdlICsgMSA+PSBwYWdpbmF0aW9uLmxvYWRlZFBhZ2VzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cInNraXAtcmlnaHQtZmlsbFwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYS10YWJsZS1wYWdpbmF0aW9uX19zcGFjaW5nX19sYWJlbFwiPlxuICAgICAgICAgICAgICAgICh7e1xuICAgICAgICAgICAgICAgICAgJ0Bwcnkud2lkZ2V0LnRhYmxlLnJlbWFpbmluZycgfCBpMThuOiB7IHJlbWFpbmluZzogcGFnaW5hdGlvbi50b3RhbFBhZ2VzIC0gcGFnaW5hdGlvbi5sb2FkZWRQYWdlcyB9XG4gICAgICAgICAgICAgICAgfX0pXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -8,9 +8,17 @@ export const enTranslations = {
|
|
|
8
8
|
label: 'Column label',
|
|
9
9
|
empty: 'No data to display',
|
|
10
10
|
description: 'Dataset elements',
|
|
11
|
-
remaining: '{{remaining}} pages to load'
|
|
11
|
+
remaining: '{{remaining}} pages to load',
|
|
12
|
+
headerTextAlign: 'Align header content',
|
|
13
|
+
cellTextAlign: 'Align cell content',
|
|
14
|
+
verticalSeparator: 'Vertical separator',
|
|
15
|
+
align: {
|
|
16
|
+
left: 'Left',
|
|
17
|
+
center: 'Center',
|
|
18
|
+
right: 'Right'
|
|
19
|
+
}
|
|
12
20
|
}
|
|
13
21
|
}
|
|
14
22
|
}
|
|
15
23
|
};
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW4udHJhbnNsYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtdGFibGUvaTE4bi9lbi50cmFuc2xhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLE1BQU0sRUFBRTtRQUNOLE1BQU0sRUFBRTtZQUNOLEtBQUssRUFBRTtnQkFDTCxTQUFTLEVBQUUsWUFBWTtnQkFDdkIsWUFBWSxFQUFFLFFBQVE7Z0JBQ3RCLFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLEtBQUssRUFBRSxjQUFjO2dCQUNyQixLQUFLLEVBQUUsb0JBQW9CO2dCQUMzQixXQUFXLEVBQUUsa0JBQWtCO2dCQUMvQixTQUFTLEVBQUUsNkJBQTZCO2dCQUN4QyxlQUFlLEVBQUUsc0JBQXNCO2dCQUN2QyxhQUFhLEVBQUUsb0JBQW9CO2dCQUNuQyxpQkFBaUIsRUFBRSxvQkFBb0I7Z0JBQ3ZDLEtBQUssRUFBRTtvQkFDTCxJQUFJLEVBQUUsTUFBTTtvQkFDWixNQUFNLEVBQUUsUUFBUTtvQkFDaEIsS0FBSyxFQUFFLE9BQU87aUJBQ2Y7YUFDRjtTQUNGO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGVuVHJhbnNsYXRpb25zID0ge1xuICAnQHByeSc6IHtcbiAgICB3aWRnZXQ6IHtcbiAgICAgIHRhYmxlOiB7XG4gICAgICAgIGFkZENvbHVtbjogJ0FkZCBjb2x1bW4nLFxuICAgICAgICBkZWxldGVDb2x1bW46ICdEZWxldGUnLFxuICAgICAgICBwcm9wZXJ0eTogJ1Byb3BlcnR5IHRvIGRpc3BsYXknLFxuICAgICAgICBsYWJlbDogJ0NvbHVtbiBsYWJlbCcsXG4gICAgICAgIGVtcHR5OiAnTm8gZGF0YSB0byBkaXNwbGF5JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdEYXRhc2V0IGVsZW1lbnRzJyxcbiAgICAgICAgcmVtYWluaW5nOiAne3tyZW1haW5pbmd9fSBwYWdlcyB0byBsb2FkJyxcbiAgICAgICAgaGVhZGVyVGV4dEFsaWduOiAnQWxpZ24gaGVhZGVyIGNvbnRlbnQnLFxuICAgICAgICBjZWxsVGV4dEFsaWduOiAnQWxpZ24gY2VsbCBjb250ZW50JyxcbiAgICAgICAgdmVydGljYWxTZXBhcmF0b3I6ICdWZXJ0aWNhbCBzZXBhcmF0b3InLFxuICAgICAgICBhbGlnbjoge1xuICAgICAgICAgIGxlZnQ6ICdMZWZ0JyxcbiAgICAgICAgICBjZW50ZXI6ICdDZW50ZXInLFxuICAgICAgICAgIHJpZ2h0OiAnUmlnaHQnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG4iXX0=
|
|
@@ -8,9 +8,17 @@ export const frTranslations = {
|
|
|
8
8
|
label: 'Libellé de la colonne',
|
|
9
9
|
empty: 'Aucune donnée à afficher',
|
|
10
10
|
description: 'Eléments du jeu de données',
|
|
11
|
-
remaining: '{{remaining}} pages restant à charger'
|
|
11
|
+
remaining: '{{remaining}} pages restant à charger',
|
|
12
|
+
headerTextAlign: "Alignement de l'en-tête :",
|
|
13
|
+
cellTextAlign: 'Alignement du contenu :',
|
|
14
|
+
verticalSeparator: 'Séparateur vertical :',
|
|
15
|
+
align: {
|
|
16
|
+
left: 'Gauche',
|
|
17
|
+
center: 'Centre',
|
|
18
|
+
right: 'Droite'
|
|
19
|
+
}
|
|
12
20
|
}
|
|
13
21
|
}
|
|
14
22
|
}
|
|
15
23
|
};
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnIudHJhbnNsYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtdGFibGUvaTE4bi9mci50cmFuc2xhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLE1BQU0sRUFBRTtRQUNOLE1BQU0sRUFBRTtZQUNOLEtBQUssRUFBRTtnQkFDTCxTQUFTLEVBQUUscUJBQXFCO2dCQUNoQyxZQUFZLEVBQUUsV0FBVztnQkFDekIsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsS0FBSyxFQUFFLHVCQUF1QjtnQkFDOUIsS0FBSyxFQUFFLDBCQUEwQjtnQkFDakMsV0FBVyxFQUFFLDRCQUE0QjtnQkFDekMsU0FBUyxFQUFFLHVDQUF1QztnQkFDbEQsZUFBZSxFQUFFLDJCQUEyQjtnQkFDNUMsYUFBYSxFQUFFLHlCQUF5QjtnQkFDeEMsaUJBQWlCLEVBQUUsdUJBQXVCO2dCQUMxQyxLQUFLLEVBQUU7b0JBQ0wsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsTUFBTSxFQUFFLFFBQVE7b0JBQ2hCLEtBQUssRUFBRSxRQUFRO2lCQUNoQjthQUNGO1NBQ0Y7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZnJUcmFuc2xhdGlvbnMgPSB7XG4gICdAcHJ5Jzoge1xuICAgIHdpZGdldDoge1xuICAgICAgdGFibGU6IHtcbiAgICAgICAgYWRkQ29sdW1uOiAnQWpvdXRlciB1bmUgY29sb25uZScsXG4gICAgICAgIGRlbGV0ZUNvbHVtbjogJ1N1cHByaW1lcicsXG4gICAgICAgIHByb3BlcnR5OiAnUHJvcHJpw6l0w6kgw6AgYWZmaWNoZXInLFxuICAgICAgICBsYWJlbDogJ0xpYmVsbMOpIGRlIGxhIGNvbG9ubmUnLFxuICAgICAgICBlbXB0eTogJ0F1Y3VuZSBkb25uw6llIMOgIGFmZmljaGVyJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdFbMOpbWVudHMgZHUgamV1IGRlIGRvbm7DqWVzJyxcbiAgICAgICAgcmVtYWluaW5nOiAne3tyZW1haW5pbmd9fSBwYWdlcyByZXN0YW50IMOgIGNoYXJnZXInLFxuICAgICAgICBoZWFkZXJUZXh0QWxpZ246IFwiQWxpZ25lbWVudCBkZSBsJ2VuLXTDqnRlIDpcIixcbiAgICAgICAgY2VsbFRleHRBbGlnbjogJ0FsaWduZW1lbnQgZHUgY29udGVudSA6JyxcbiAgICAgICAgdmVydGljYWxTZXBhcmF0b3I6ICdTw6lwYXJhdGV1ciB2ZXJ0aWNhbCA6JyxcbiAgICAgICAgYWxpZ246IHtcbiAgICAgICAgICBsZWZ0OiAnR2F1Y2hlJyxcbiAgICAgICAgICBjZW50ZXI6ICdDZW50cmUnLFxuICAgICAgICAgIHJpZ2h0OiAnRHJvaXRlJ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuIl19
|
|
@@ -2,10 +2,10 @@ import { Component, ViewEncapsulation } from '@angular/core';
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class PryWidgetTableCssComponent {
|
|
4
4
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryWidgetTableCssComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryWidgetTableCssComponent, selector: "pry-widget-table-css", ngImport: i0, template: '', isInline: true, styles: [".o-widget--table{display:flex;flex-direction:column;font-size:.75rem}.o-widget--table .no-result{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%}.o-widget--table .no-result__search{width:40%;margin-bottom:2.5rem}.o-widget--table .no-result__text{max-width:18.375rem;line-height:1.25rem;text-align:center}.o-widget--table .a-table:last-child .bar{display:none}.o-widget--table .a-table .wrapper{display:flex;justify-content:flex-end}.o-widget--table .a-table .content{flex:1}.o-widget--table .a-table .bar{position:absolute;top:0;bottom:0;justify-self:flex-end;width:2px;margin:0 -.75rem 0 .75rem;border-left:2px solid transparent;border-right:2px solid transparent;background-clip:content-box;opacity:0;cursor:ew-resize;transition:opacity .3s}.o-widget--table .a-table .bar:hover,.o-widget--table .a-table .bar:active{opacity:1}.o-widget--table .a-table thead tr,.o-widget--table .a-table thead tr th{height:1.875rem;white-space:nowrap}.o-widget--table .a-table td,.o-widget--table .a-table th{margin:.3125rem;padding:.28125rem}.o-widget--table .a-table .checkbox-wrapper{height:auto}\n"], encapsulation: i0.ViewEncapsulation.None }); }
|
|
5
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryWidgetTableCssComponent, selector: "pry-widget-table-css", ngImport: i0, template: '', isInline: true, styles: [".o-widget--table{display:flex;flex-direction:column;font-size:.75rem}.o-widget--table .no-result{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%}.o-widget--table .no-result__search{width:40%;margin-bottom:2.5rem}.o-widget--table .no-result__text{max-width:18.375rem;line-height:1.25rem;text-align:center}.o-widget--table .a-table:last-child .bar{display:none}.o-widget--table .a-table .wrapper{display:flex;justify-content:flex-end}.o-widget--table .a-table .content{flex:1}.o-widget--table .a-table .bar{position:absolute;top:0;bottom:0;justify-self:flex-end;width:2px;margin:0 -.75rem 0 .75rem;border-left:2px solid transparent;border-right:2px solid transparent;background-clip:content-box;opacity:0;cursor:ew-resize;transition:opacity .3s}.o-widget--table .a-table .bar:hover,.o-widget--table .a-table .bar:active{opacity:1}.o-widget--table .a-table thead tr,.o-widget--table .a-table thead tr th{height:1.875rem;white-space:nowrap}.o-widget--table .a-table td,.o-widget--table .a-table th{margin:.3125rem;padding:.28125rem}.o-widget--table .a-table .checkbox-wrapper{height:auto}.o-widget--table__vertical-separator{margin-top:.625rem}\n"], encapsulation: i0.ViewEncapsulation.None }); }
|
|
6
6
|
}
|
|
7
7
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryWidgetTableCssComponent, decorators: [{
|
|
8
8
|
type: Component,
|
|
9
|
-
args: [{ selector: 'pry-widget-table-css', template: '', encapsulation: ViewEncapsulation.None, styles: [".o-widget--table{display:flex;flex-direction:column;font-size:.75rem}.o-widget--table .no-result{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%}.o-widget--table .no-result__search{width:40%;margin-bottom:2.5rem}.o-widget--table .no-result__text{max-width:18.375rem;line-height:1.25rem;text-align:center}.o-widget--table .a-table:last-child .bar{display:none}.o-widget--table .a-table .wrapper{display:flex;justify-content:flex-end}.o-widget--table .a-table .content{flex:1}.o-widget--table .a-table .bar{position:absolute;top:0;bottom:0;justify-self:flex-end;width:2px;margin:0 -.75rem 0 .75rem;border-left:2px solid transparent;border-right:2px solid transparent;background-clip:content-box;opacity:0;cursor:ew-resize;transition:opacity .3s}.o-widget--table .a-table .bar:hover,.o-widget--table .a-table .bar:active{opacity:1}.o-widget--table .a-table thead tr,.o-widget--table .a-table thead tr th{height:1.875rem;white-space:nowrap}.o-widget--table .a-table td,.o-widget--table .a-table th{margin:.3125rem;padding:.28125rem}.o-widget--table .a-table .checkbox-wrapper{height:auto}\n"] }]
|
|
9
|
+
args: [{ selector: 'pry-widget-table-css', template: '', encapsulation: ViewEncapsulation.None, styles: [".o-widget--table{display:flex;flex-direction:column;font-size:.75rem}.o-widget--table .no-result{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%}.o-widget--table .no-result__search{width:40%;margin-bottom:2.5rem}.o-widget--table .no-result__text{max-width:18.375rem;line-height:1.25rem;text-align:center}.o-widget--table .a-table:last-child .bar{display:none}.o-widget--table .a-table .wrapper{display:flex;justify-content:flex-end}.o-widget--table .a-table .content{flex:1}.o-widget--table .a-table .bar{position:absolute;top:0;bottom:0;justify-self:flex-end;width:2px;margin:0 -.75rem 0 .75rem;border-left:2px solid transparent;border-right:2px solid transparent;background-clip:content-box;opacity:0;cursor:ew-resize;transition:opacity .3s}.o-widget--table .a-table .bar:hover,.o-widget--table .a-table .bar:active{opacity:1}.o-widget--table .a-table thead tr,.o-widget--table .a-table thead tr th{height:1.875rem;white-space:nowrap}.o-widget--table .a-table td,.o-widget--table .a-table th{margin:.3125rem;padding:.28125rem}.o-widget--table .a-table .checkbox-wrapper{height:auto}.o-widget--table__vertical-separator{margin-top:.625rem}\n"] }]
|
|
10
10
|
}] });
|
|
11
11
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LXRhYmxlL3N0eWxlL2Nzcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRN0QsTUFBTSxPQUFPLDBCQUEwQjs4R0FBMUIsMEJBQTBCO2tHQUExQiwwQkFBMEIsNERBSjNCLEVBQUU7OzJGQUlELDBCQUEwQjtrQkFOdEMsU0FBUzsrQkFDRSxzQkFBc0IsWUFDdEIsRUFBRSxpQkFFRyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktd2lkZ2V0LXRhYmxlLWNzcycsXG4gIHRlbXBsYXRlOiAnJyxcbiAgc3R5bGVVcmxzOiBbJy4vX28td2lkZ2V0LXRhYmxlLnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBQcnlXaWRnZXRUYWJsZUNzc0NvbXBvbmVudCB7fVxuIl19
|
|
@@ -237,9 +237,9 @@ const enTranslations = {
|
|
|
237
237
|
code: {
|
|
238
238
|
UNRECOGNIZED: 'Provided file contains a column "{{name}}", which is not present in the chosen dataset',
|
|
239
239
|
FILE_MANDATORY: 'No file was provided',
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
240
|
+
NO_ATTRIBUTES: 'No corresponding attribute found in uploaded file',
|
|
241
|
+
FORMAT: '"{{name}}": "{{receivedValue}}" could not be converted to type "{{type}}"',
|
|
242
|
+
STORAGE: 'Storage stack trace error: {{elasticError}}'
|
|
243
243
|
},
|
|
244
244
|
normalize: 'Standardize geographic shapes'
|
|
245
245
|
}
|
|
@@ -275,9 +275,9 @@ const frTranslations = {
|
|
|
275
275
|
code: {
|
|
276
276
|
UNRECOGNIZED: "Le fichier fourni contient une colonne «\u00A0{{name}}\u00A0», qui n'est pas présente dans le jeu de données choisi",
|
|
277
277
|
FILE_MANDATORY: 'Aucun fichier fourni',
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
278
|
+
NO_ATTRIBUTES: "Aucun attribut correspondant n'a été trouvé dans le fichier fourni",
|
|
279
|
+
FORMAT: "«\u00A0{{name}}\u00A0»: «\u00A0{{receivedValue}}\u00A0» n'a pas pu être convertie en type «\u00A0{{type}}\u00A0»",
|
|
280
|
+
STORAGE: 'Storage stack trace error: {{elasticError}}'
|
|
281
281
|
},
|
|
282
282
|
normalize: 'Normaliser les formes géographiques'
|
|
283
283
|
}
|