UNPKG

ontimize-web-ngx

Version:
175 lines 24.5 kB
import { DefaultServiceComponentStateClass } from './o-component-state.class'; import { Util } from '../../util/util'; export class OTableComponentStateClass extends DefaultServiceComponentStateClass { constructor() { super(...arguments); this['grouped-column-types'] = []; } get filterBuilderValues() { return this['filter-builder-values']; } set filterBuilderValues(value) { this['filter-builder-values'] = value; } get selectColumnVisible() { return this['select-column-visible']; } set selectColumnVisible(value) { this['select-column-visible'] = value; } get quickFilterValue() { return this['filter']; } set quickFilterValue(value) { this['filter'] = value; } get columnsDisplay() { return this['oColumns-display']; } set columnsDisplay(value) { this['oColumns-display'] = value; } getColumnDisplay(oCol) { return (this.columnsDisplay || []).find(col => col.attr === oCol.attr); } get initialConfiguration() { return this['initial-configuration']; } set initialConfiguration(value) { this['initial-configuration'] = value; } get sortColumns() { return this['sort-columns']; } set sortColumns(value) { this['sort-columns'] = value; } get groupedColumnTypes() { return this['grouped-column-types']; } set groupedColumnTypes(value) { this['grouped-column-types'] = value; } get filterColumns() { return this['filter-columns']; } set filterColumns(value) { this['filter-columns'] = value; } get filterColumnActiveByDefault() { return this['filter-column-active-by-default']; } get groupedColumns() { return this['grouped-columns']; } set groupedColumns(value) { this['grouped-columns'] = value; } get columnValueFilters() { return this['column-value-filters'] || []; } set columnValueFilters(value) { this['column-value-filters'] = value; } get storedFilters() { return this['user-stored-filters'] || []; } addStoredFilter(filter) { if (!Util.isDefined(this['user-stored-filters'])) { this['user-stored-filters'] = []; } this.storedFilters.push(filter); } deleteStoredFilter(filterName) { const index = this.storedFilters.findIndex((item) => item.name === filterName); if (index >= 0) { this.storedFilters.splice(index, 1); } } getStoredFilter(filterName) { let result; const filter = this.storedFilters.find((item) => item.name === filterName); if (filter) { result = filter['stored-filter']; } return result; } applyFilter(filterName) { const filter = this.getStoredFilter(filterName); if (filter) { this.columnValueFilters = filter['column-value-filters']; this.quickFilterValue = filter['filter']; this.filterCaseSensitive = filter['filter-case-sensitive']; this.filterBuilderValues = filter['filter-builder-values']; this.oColumns = filter['oColumns']; } } get storedConfigurations() { return this['user-stored-configurations'] || []; } addStoredConfiguration(configuration) { if (!Util.isDefined(this['user-stored-configurations'])) { this['user-stored-configurations'] = []; } this.storedConfigurations.push(configuration); } deleteStoredConfiguration(configurationName) { const index = this.storedConfigurations.findIndex((item) => item.name === configurationName); if (index >= 0) { this.storedConfigurations.splice(index, 1); } } getStoredConfiguration(configurationName) { return this.storedConfigurations.find((item) => item.name === configurationName); } applyConfiguration(configurationName) { const configuration = this.getStoredConfiguration(configurationName); if (configuration) { const properties = configuration['stored-properties'] || []; const conf = configuration['stored-configuration']; this.copyPropertiesFromConfiguration(properties, conf); } } reset(pageable) { const result = { 'user-stored-filters': this.storedFilters, 'user-stored-configurations': this.storedConfigurations }; if (pageable) { result['totalQueryRecordsNumber'] = this.totalQueryRecordsNumber; } result['currentPage'] = 0; Object.assign(this, {}); Object.assign(this, result); } copyPropertiesFromConfiguration(properties, configuration) { properties.forEach(property => { switch (property) { case 'sort-columns': this.sortColumns = configuration['sort-columns']; break; case 'oColumns-display': this.columnsDisplay = configuration['oColumns-display']; this.selectColumnVisible = configuration['select-column-visible']; break; case 'quick-filter': case 'columns-filter': this.columnValueFilters = configuration['column-value-filters']; break; case 'grouped-columns': this.groupedColumns = configuration['grouped-columns']; break; case 'page': this.currentPage = configuration['currentPage']; this.totalQueryRecordsNumber = configuration['totalQueryRecordsNumber']; this.queryRecordOffset = configuration['queryRecordOffset']; this.queryRows = configuration['query-rows']; break; case 'filter-builder': this.filterBuilderValues = configuration['filter-builder']; break; } }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb21wb25lbnQtc3RhdGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvc2VydmljZXMvc3RhdGUvby10YWJsZS1jb21wb25lbnQtc3RhdGUuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJOUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3ZDLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxpQ0FBaUM7SUFBaEY7O1FBOEJZLDRCQUFzQixHQUEwQixFQUFFLENBQUM7SUFzTS9ELENBQUM7SUFwTUMsSUFBVyxtQkFBbUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsSUFBVyxtQkFBbUIsQ0FBQyxLQUE2QjtRQUMxRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksbUJBQW1CLENBQUMsS0FBYztRQUNwQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLGdCQUFnQixDQUFDLEtBQWE7UUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksY0FBYyxDQUFDLEtB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Q29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE9Db2x1bW4gfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3RhYmxlL2NvbHVtbi9vLWNvbHVtbi5jbGFzcyc7XG5pbXBvcnQge1xuICBPRmlsdGVyQ29sdW1uXG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9oZWFkZXIvdGFibGUtY29sdW1ucy1maWx0ZXIvY29sdW1ucy9vLXRhYmxlLWNvbHVtbnMtZmlsdGVyLWNvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0NvbHVtbkRpc3BsYXkgfSBmcm9tICcuLi8uLi90eXBlcy90YWJsZS9vLWNvbHVtbi1kaXNwbGF5LnR5cGUnO1xuaW1wb3J0IHsgT0NvbHVtblNlYXJjaGFibGUgfSBmcm9tICcuLi8uLi90eXBlcy90YWJsZS9vLWNvbHVtbi1zZWFyY2hhYmxlLnR5cGUnO1xuaW1wb3J0IHsgT0NvbHVtblZhbHVlRmlsdGVyIH0gZnJvbSAnLi4vLi4vdHlwZXMvdGFibGUvby1jb2x1bW4tdmFsdWUtZmlsdGVyLnR5cGUnO1xuaW1wb3J0IHsgRGVmYXVsdFNlcnZpY2VDb21wb25lbnRTdGF0ZUNsYXNzIH0gZnJvbSAnLi9vLWNvbXBvbmVudC1zdGF0ZS5jbGFzcyc7XG5pbXBvcnQgeyBPVGFibGVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMvdGFibGUvby10YWJsZS1jb25maWd1cmF0aW9uLnR5cGUnO1xuaW1wb3J0IHsgT1RhYmxlRmlsdGVyc1N0YXR1cywgT1RhYmxlU3RvcmVkRmlsdGVyIH0gZnJvbSAnLi4vLi4vdHlwZXMvdGFibGUvby10YWJsZS1maWx0ZXItc3RhdHVzLnR5cGUnO1xuaW1wb3J0IHsgT0ZpbHRlckJ1aWxkZXJWYWx1ZXMgfSBmcm9tICcuLi8uLi90eXBlcy9vLWZpbHRlci1idWlsZGVyLXZhbHVlcy50eXBlJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0dyb3VwZWRDb2x1bW5UeXBlcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIE9UYWJsZUNvbXBvbmVudFN0YXRlQ2xhc3MgZXh0ZW5kcyBEZWZhdWx0U2VydmljZUNvbXBvbmVudFN0YXRlQ2xhc3Mge1xuICAvLyBzb3J0XG4gIHByb3RlY3RlZCAnc29ydC1jb2x1bW5zJzogc3RyaW5nO1xuICAvLyBjb2x1bW5zLWRpc3BsYXlcbiAgcHJvdGVjdGVkICdvQ29sdW1ucy1kaXNwbGF5JzogT0NvbHVtbkRpc3BsYXlbXTtcbiAgcHJvdGVjdGVkICdzZWxlY3QtY29sdW1uLXZpc2libGUnOiBib29sZWFuO1xuICAvLyBxdWljay1maWx0ZXJcbiAgcHJvdGVjdGVkICdmaWx0ZXInOiBzdHJpbmc7XG4gIHByb3RlY3RlZCAnb0NvbHVtbnMnOiBPQ29sdW1uU2VhcmNoYWJsZVtdO1xuICAvLyBjb2x1bW5zLWZpbHRlclxuICBwcm90ZWN0ZWQgJ2NvbHVtbi12YWx1ZS1maWx0ZXJzJzogT0NvbHVtblZhbHVlRmlsdGVyW107XG4gIC8vIHBhZ2VcbiAgJ2N1cnJlbnRQYWdlJzogbnVtYmVyO1xuICAvLyBzZWxlY3Rpb25cbiAgJ3NlbGVjdGlvbic6IGFueVtdO1xuICAvLyBpbml0aWFsLWNvbmZpZ3VyYXRpb25cbiAgcHJvdGVjdGVkICdpbml0aWFsLWNvbmZpZ3VyYXRpb24nOiBPVGFibGVDb21wb25lbnRTdGF0ZUNsYXNzO1xuICAvLyBmaWx0ZXItY29sdW1uLWFjdGl2ZVxuICBwcm90ZWN0ZWQgJ2ZpbHRlci1jb2x1bW4tYWN0aXZlJzogYm9vbGVhbjtcbiAgLy8gZmlsdGVyLWNvbHVtbnNcbiAgcHJvdGVjdGVkICdmaWx0ZXItY29sdW1ucyc6IE9GaWx0ZXJDb2x1bW5bXTtcbiAgcHJvdGVjdGVkICdmaWx0ZXItY29sdW1uLWFjdGl2ZS1ieS1kZWZhdWx0JzogYm9vbGVhbjtcbiAgLy8gZ3JvdXBlZC1jb2x1bW5zXG4gIHByb3RlY3RlZCAnZ3JvdXBlZC1jb2x1bW5zJzogc3RyaW5nW107XG4gIC8vIHN0b3JlZCBmaWx0ZXJzIGFuZCBjb25maWd1cmF0aW9uc1xuICBwcm90ZWN0ZWQgJ3VzZXItc3RvcmVkLWZpbHRlcnMnOiBPVGFibGVGaWx0ZXJzU3RhdHVzW107XG4gIHByb3RlY3RlZCAndXNlci1zdG9yZWQtY29uZmlndXJhdGlvbnMnOiBPVGFibGVDb25maWd1cmF0aW9uW107XG4gIC8vIHN0b3JlZCBmaWx0ZXJzIGJ1aWxkZXIgdmFsdWVzXG4gIHByb3RlY3RlZCAnZmlsdGVyLWJ1aWxkZXItdmFsdWVzJzogT0ZpbHRlckJ1aWxkZXJWYWx1ZXNbXTtcblxuICBwcm90ZWN0ZWQgJ2dyb3VwZWQtY29sdW1uLXR5cGVzJzogT0dyb3VwZWRDb2x1bW5UeXBlc1tdID0gW107XG5cbiAgcHVibGljIGdldCBmaWx0ZXJCdWlsZGVyVmFsdWVzKCk6IE9GaWx0ZXJCdWlsZGVyVmFsdWVzW10ge1xuICAgIHJldHVybiB0aGlzWydmaWx0ZXItYnVpbGRlci12YWx1ZXMnXTtcbiAgfVxuICBwdWJsaWMgc2V0IGZpbHRlckJ1aWxkZXJWYWx1ZXModmFsdWU6IE9GaWx0ZXJCdWlsZGVyVmFsdWVzW10pIHtcbiAgICB0aGlzWydmaWx0ZXItYnVpbGRlci12YWx1ZXMnXSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHNlbGVjdENvbHVtblZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXNbJ3NlbGVjdC1jb2x1bW4tdmlzaWJsZSddO1xuICB9XG5cbiAgc2V0IHNlbGVjdENvbHVtblZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzWydzZWxlY3QtY29sdW1uLXZpc2libGUnXSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHF1aWNrRmlsdGVyVmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpc1snZmlsdGVyJ107XG4gIH1cblxuICBzZXQgcXVpY2tGaWx0ZXJWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpc1snZmlsdGVyJ10gPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBjb2x1bW5zRGlzcGxheSgpOiBPQ29sdW1uRGlzcGxheVtdIHtcbiAgICByZXR1cm4gdGhpc1snb0NvbHVtbnMtZGlzcGxheSddO1xuICB9XG5cbiAgc2V0IGNvbHVtbnNEaXNwbGF5KHZhbHVlOiBPQ29sdW1uRGlzcGxheVtdKSB7XG4gICAgdGhpc1snb0NvbHVtbnMtZGlzcGxheSddID0gdmFsdWU7XG4gIH1cblxuICBnZXRDb2x1bW5EaXNwbGF5KG9Db2w6IE9Db2x1bW4pOiBPQ29sdW1uRGlzcGxheSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbHVtbnNEaXNwbGF5IHx8IFtdKS5maW5kKGNvbCA9PiBjb2wuYXR0ciA9PT0gb0NvbC5hdHRyKTtcbiAgfVxuXG4gIGdldCBpbml0aWFsQ29uZmlndXJhdGlvbigpOiBPVGFibGVDb21wb25lbnRTdGF0ZUNsYXNzIHtcbiAgICByZXR1cm4gdGhpc1snaW5pdGlhbC1jb25maWd1cmF0aW9uJ107XG4gIH1cblxuICBzZXQgaW5pdGlhbENvbmZpZ3VyYXRpb24odmFsdWU6IE9UYWJsZUNvbXBvbmVudFN0YXRlQ2xhc3MpIHtcbiAgICB0aGlzWydpbml0aWFsLWNvbmZpZ3VyYXRpb24nXSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHNvcnRDb2x1bW5zKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXNbJ3NvcnQtY29sdW1ucyddO1xuICB9XG5cbiAgc2V0IHNvcnRDb2x1bW5zKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzWydzb3J0LWNvbHVtbnMnXSA9IHZhbHVlO1xuICB9XG4gIGdldCBncm91cGVkQ29sdW1uVHlwZXMoKTogT0dyb3VwZWRDb2x1bW5UeXBlc1tdIHtcbiAgICByZXR1cm4gdGhpc1snZ3JvdXBlZC1jb2x1bW4tdHlwZXMnXTtcbiAgfVxuICBzZXQgZ3JvdXBlZENvbHVtblR5cGVzKHZhbHVlOiBPR3JvdXBlZENvbHVtblR5cGVzW10pIHtcbiAgICB0aGlzWydncm91cGVkLWNvbHVtbi10eXBlcyddID0gdmFsdWU7XG4gIH1cbiAgZ2V0IGZpbHRlckNvbHVtbnMoKTogT0ZpbHRlckNvbHVtbltdIHtcbiAgICByZXR1cm4gdGhpc1snZmlsdGVyLWNvbHVtbnMnXTtcbiAgfVxuXG4gIHNldCBmaWx0ZXJDb2x1bW5zKHZhbHVlOiBPRmlsdGVyQ29sdW1uW10pIHtcbiAgICB0aGlzWydmaWx0ZXItY29sdW1ucyddID0gdmFsdWU7XG4gIH1cblxuICBnZXQgZmlsdGVyQ29sdW1uQWN0aXZlQnlEZWZhdWx0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzWydmaWx0ZXItY29sdW1uLWFjdGl2ZS1ieS1kZWZhdWx0J107XG4gIH1cblxuICBnZXQgZ3JvdXBlZENvbHVtbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzWydncm91cGVkLWNvbHVtbnMnXTtcbiAgfVxuXG4gIHNldCBncm91cGVkQ29sdW1ucyh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzWydncm91cGVkLWNvbHVtbnMnXSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGNvbHVtblZhbHVlRmlsdGVycygpOiBPQ29sdW1uVmFsdWVGaWx0ZXJbXSB7XG4gICAgcmV0dXJuIHRoaXNbJ2NvbHVtbi12YWx1ZS1maWx0ZXJzJ10gfHwgW107XG4gIH1cblxuICBzZXQgY29sdW1uVmFsdWVGaWx0ZXJzKHZhbHVlOiBPQ29sdW1uVmFsdWVGaWx0ZXJbXSkge1xuICAgIHRoaXNbJ2NvbHVtbi12YWx1ZS1maWx0ZXJzJ10gPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzdG9yZWRGaWx0ZXJzKCk6IE9UYWJsZUZpbHRlcnNTdGF0dXNbXSB7XG4gICAgcmV0dXJuIHRoaXNbJ3VzZXItc3RvcmVkLWZpbHRlcnMnXSB8fCBbXTtcbiAgfVxuXG4gIGFkZFN0b3JlZEZpbHRlcihmaWx0ZXI6IE9UYWJsZUZpbHRlcnNTdGF0dXMpIHtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHRoaXNbJ3VzZXItc3RvcmVkLWZpbHRlcnMnXSkpIHtcbiAgICAgIHRoaXNbJ3VzZXItc3RvcmVkLWZpbHRlcnMnXSA9IFtdO1xuICAgIH1cbiAgICB0aGlzLnN0b3JlZEZpbHRlcnMucHVzaChmaWx0ZXIpO1xuICB9XG5cbiAgZGVsZXRlU3RvcmVkRmlsdGVyKGZpbHRlck5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zdG9yZWRGaWx0ZXJzLmZpbmRJbmRleCgoaXRlbTogT1RhYmxlRmlsdGVyc1N0YXR1cykgPT4gaXRlbS5uYW1lID09PSBmaWx0ZXJOYW1lKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdGhpcy5zdG9yZWRGaWx0ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0U3RvcmVkRmlsdGVyKGZpbHRlck5hbWU6IHN0cmluZyk6IE9UYWJsZVN0b3JlZEZpbHRlciB7XG4gICAgbGV0IHJlc3VsdDogT1RhYmxlU3RvcmVkRmlsdGVyO1xuICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuc3RvcmVkRmlsdGVycy5maW5kKChpdGVtOiBPVGFibGVGaWx0ZXJzU3RhdHVzKSA9PiBpdGVtLm5hbWUgPT09IGZpbHRlck5hbWUpO1xuICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgIHJlc3VsdCA9IGZpbHRlclsnc3RvcmVkLWZpbHRlciddO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYXBwbHlGaWx0ZXIoZmlsdGVyTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgZmlsdGVyID0gdGhpcy5nZXRTdG9yZWRGaWx0ZXIoZmlsdGVyTmFtZSk7XG4gICAgaWYgKGZpbHRlcikge1xuICAgICAgdGhpcy5jb2x1bW5WYWx1ZUZpbHRlcnMgPSBmaWx0ZXJbJ2NvbHVtbi12YWx1ZS1maWx0ZXJzJ107XG4gICAgICB0aGlzLnF1aWNrRmlsdGVyVmFsdWUgPSBmaWx0ZXJbJ2ZpbHRlciddO1xuICAgICAgdGhpcy5maWx0ZXJDYXNlU2Vuc2l0aXZlID0gZmlsdGVyWydmaWx0ZXItY2FzZS1zZW5zaXRpdmUnXTtcbiAgICAgIHRoaXMuZmlsdGVyQnVpbGRlclZhbHVlcyA9IGZpbHRlclsnZmlsdGVyLWJ1aWxkZXItdmFsdWVzJ107XG4gICAgICB0aGlzLm9Db2x1bW5zID0gZmlsdGVyWydvQ29sdW1ucyddO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzdG9yZWRDb25maWd1cmF0aW9ucygpOiBPVGFibGVDb25maWd1cmF0aW9uW10ge1xuICAgIHJldHVybiB0aGlzWyd1c2VyLXN0b3JlZC1jb25maWd1cmF0aW9ucyddIHx8IFtdO1xuICB9XG5cbiAgYWRkU3RvcmVkQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uOiBPVGFibGVDb25maWd1cmF0aW9uKSB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzWyd1c2VyLXN0b3JlZC1jb25maWd1cmF0aW9ucyddKSkge1xuICAgICAgdGhpc1sndXNlci1zdG9yZWQtY29uZmlndXJhdGlvbnMnXSA9IFtdO1xuICAgIH1cbiAgICB0aGlzLnN0b3JlZENvbmZpZ3VyYXRpb25zLnB1c2goY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBkZWxldGVTdG9yZWRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb25OYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc3RvcmVkQ29uZmlndXJhdGlvbnMuZmluZEluZGV4KChpdGVtOiBPVGFibGVDb25maWd1cmF0aW9uKSA9PiBpdGVtLm5hbWUgPT09IGNvbmZpZ3VyYXRpb25OYW1lKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdGhpcy5zdG9yZWRDb25maWd1cmF0aW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIGdldFN0b3JlZENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbk5hbWU6IHN0cmluZyk6IE9UYWJsZUNvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlZENvbmZpZ3VyYXRpb25zLmZpbmQoKGl0ZW06IE9UYWJsZUNvbmZpZ3VyYXRpb24pID0+IGl0ZW0ubmFtZSA9PT0gY29uZmlndXJhdGlvbk5hbWUpO1xuICB9XG5cbiAgYXBwbHlDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb25OYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGhpcy5nZXRTdG9yZWRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb25OYW1lKTtcbiAgICBpZiAoY29uZmlndXJhdGlvbikge1xuICAgICAgY29uc3QgcHJvcGVydGllcyA9IGNvbmZpZ3VyYXRpb25bJ3N0b3JlZC1wcm9wZXJ0aWVzJ10gfHwgW107XG4gICAgICBjb25zdCBjb25mOiBPVGFibGVDb21wb25lbnRTdGF0ZUNsYXNzID0gY29uZmlndXJhdGlvblsnc3RvcmVkLWNvbmZpZ3VyYXRpb24nXTtcbiAgICAgIHRoaXMuY29weVByb3BlcnRpZXNGcm9tQ29uZmlndXJhdGlvbihwcm9wZXJ0aWVzLCBjb25mKTtcbiAgICB9XG4gIH1cblxuICByZXNldChwYWdlYWJsZTogYm9vbGVhbikge1xuICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgICd1c2VyLXN0b3JlZC1maWx0ZXJzJzogdGhpcy5zdG9yZWRGaWx0ZXJzLFxuICAgICAgJ3VzZXItc3RvcmVkLWNvbmZpZ3VyYXRpb25zJzogdGhpcy5zdG9yZWRDb25maWd1cmF0aW9uc1xuICAgIH07XG4gICAgaWYgKHBhZ2VhYmxlKSB7XG4gICAgICByZXN1bHRbJ3RvdGFsUXVlcnlSZWNvcmRzTnVtYmVyJ10gPSB0aGlzLnRvdGFsUXVlcnlSZWNvcmRzTnVtYmVyO1xuICAgIH1cbiAgICByZXN1bHRbJ2N1cnJlbnRQYWdlJ10gPSAwO1xuXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCB7fSk7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCByZXN1bHQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvcHlQcm9wZXJ0aWVzRnJvbUNvbmZpZ3VyYXRpb24ocHJvcGVydGllczogc3RyaW5nW10sIGNvbmZpZ3VyYXRpb246IE9UYWJsZUNvbXBvbmVudFN0YXRlQ2xhc3MpIHtcbiAgICBwcm9wZXJ0aWVzLmZvckVhY2gocHJvcGVydHkgPT4ge1xuICAgICAgc3dpdGNoIChwcm9wZXJ0eSkge1xuICAgICAgICBjYXNlICdzb3J0LWNvbHVtbnMnOlxuICAgICAgICAgIHRoaXMuc29ydENvbHVtbnMgPSBjb25maWd1cmF0aW9uWydzb3J0LWNvbHVtbnMnXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnb0NvbHVtbnMtZGlzcGxheSc6XG4gICAgICAgICAgdGhpcy5jb2x1bW5zRGlzcGxheSA9IGNvbmZpZ3VyYXRpb25bJ29Db2x1bW5zLWRpc3BsYXknXTtcbiAgICAgICAgICB0aGlzLnNlbGVjdENvbHVtblZpc2libGUgPSBjb25maWd1cmF0aW9uWydzZWxlY3QtY29sdW1uLXZpc2libGUnXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncXVpY2stZmlsdGVyJzpcbiAgICAgICAgY2FzZSAnY29sdW1ucy1maWx0ZXInOlxuICAgICAgICAgIHRoaXMuY29sdW1uVmFsdWVGaWx0ZXJzID0gY29uZmlndXJhdGlvblsnY29sdW1uLXZhbHVlLWZpbHRlcnMnXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZ3JvdXBlZC1jb2x1bW5zJzpcbiAgICAgICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zID0gY29uZmlndXJhdGlvblsnZ3JvdXBlZC1jb2x1bW5zJ107XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhZ2UnOlxuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBjb25maWd1cmF0aW9uWydjdXJyZW50UGFnZSddO1xuICAgICAgICAgIHRoaXMudG90YWxRdWVyeVJlY29yZHNOdW1iZXIgPSBjb25maWd1cmF0aW9uWyd0b3RhbFF1ZXJ5UmVjb3Jkc051bWJlciddO1xuICAgICAgICAgIHRoaXMucXVlcnlSZWNvcmRPZmZzZXQgPSBjb25maWd1cmF0aW9uWydxdWVyeVJlY29yZE9mZnNldCddO1xuICAgICAgICAgIHRoaXMucXVlcnlSb3dzID0gY29uZmlndXJhdGlvblsncXVlcnktcm93cyddO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdmaWx0ZXItYnVpbGRlcic6XG4gICAgICAgICAgdGhpcy5maWx0ZXJCdWlsZGVyVmFsdWVzID0gY29uZmlndXJhdGlvblsnZmlsdGVyLWJ1aWxkZXInXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19