@elderbyte/ngx-starter 16.2.1 → 16.2.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.
@@ -1,7 +1,7 @@
1
- import { Injectable } from '@angular/core';
2
- import { map } from 'rxjs/operators';
3
- import { ComparatorBuilder } from '../data/field-comparator';
4
- import { DelegateListDataSource } from '../data/datasource/fetcher/delegate-data-source';
1
+ import { Injectable } from "@angular/core";
2
+ import { map } from "rxjs/operators";
3
+ import { ComparatorBuilder } from "../data/field-comparator";
4
+ import { DelegateListDataSource } from "../data/datasource/fetcher/delegate-data-source";
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@ngx-translate/core";
7
7
  export class TranslatedEnumValue {
@@ -43,7 +43,7 @@ export class ElderEnumTranslationService {
43
43
  });
44
44
  }), map((data) => {
45
45
  return sort ?
46
- data.sort(ComparatorBuilder.fieldSort(asc ? 'displayValue' : '-displayValue')) :
46
+ data.sort(ComparatorBuilder.fieldSort(asc ? "displayValue" : "-displayValue")) :
47
47
  data;
48
48
  }));
49
49
  }
@@ -55,8 +55,11 @@ export class ElderEnumTranslationService {
55
55
  * @param enumKey key of the translation to load
56
56
  */
57
57
  translateOne(translationPrefix, enumKey) {
58
- return this.translateService.get(translationPrefix + '.' + enumKey)
59
- .pipe(map(translatedValue => new TranslatedEnumValue(enumKey, translatedValue)));
58
+ return this.translateService.get(translationPrefix + "." + enumKey)
59
+ .pipe(map(translatedValue => new TranslatedEnumValue(enumKey, this.addPrefixIfNotNull(enumKey, translatedValue))));
60
+ }
61
+ addPrefixIfNotNull(enumKey, translatedValue) {
62
+ return enumKey ? translatedValue : "";
60
63
  }
61
64
  /**
62
65
  * Creates a data source of translations of the given enum class.
@@ -67,15 +70,15 @@ export class ElderEnumTranslationService {
67
70
  * @param asc if true, data will be sorted in ascending order
68
71
  */
69
72
  enumDateSource(enumClass, translationPrefix, sort = true, asc = true) {
70
- return DelegateListDataSource.listFetcher(() => this.translate(enumClass, translationPrefix, sort, asc), 'value', (id) => this.translateOne(translationPrefix, id));
73
+ return DelegateListDataSource.listFetcher(() => this.translate(enumClass, translationPrefix, sort, asc), "value", (id) => this.translateOne(translationPrefix, id));
71
74
  }
72
75
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderEnumTranslationService, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
73
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderEnumTranslationService, providedIn: 'root' }); }
76
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderEnumTranslationService, providedIn: "root" }); }
74
77
  }
75
78
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderEnumTranslationService, decorators: [{
76
79
  type: Injectable,
77
80
  args: [{
78
- providedIn: 'root'
81
+ providedIn: "root"
79
82
  }]
80
83
  }], ctorParameters: function () { return [{ type: i1.TranslateService }]; } });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItZW51bS10cmFuc2xhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tbW9uL2VudW1zL2VsZGVyLWVudW0tdHJhbnNsYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUduQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxpREFBaUQsQ0FBQzs7O0FBR3ZGLE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsWUFDUyxLQUFhLEVBQ2IsWUFBb0I7UUFEcEIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLGlCQUFZLEdBQVosWUFBWSxDQUFRO0lBRTdCLENBQUM7Q0FFRjtBQUtELE1BQU0sT0FBTywyQkFBMkI7SUFFdEM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ1UsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFFNUMsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUU1RTs7Ozs7Ozs7T0FRRztJQUNJLFNBQVMsQ0FDZCxTQUFjLEVBQ2QsaUJBQXlCLEVBQ3pCLElBQUksR0FBRyxJQUFJLEVBQ1gsR0FBRyxHQUFHLElBQUk7UUFHVixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQ3pELEdBQUcsQ0FBQyxDQUFDLFdBQXlCLEVBQUUsRUFBRTtZQUNoQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2lCQUMxQixHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ2IsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNyQyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksT0FBTyxDQUFDO2dCQUNyRCxPQUFPLElBQUksbUJBQW1CLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3hELENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsSUFBMkIsRUFBRSxFQUFFO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEYsSUFBSSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUVKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxZQUFZLENBQ2pCLGlCQUF5QixFQUN6QixPQUFlO1FBR2YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGlCQUFpQixHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUM7YUFDaEUsSUFBSSxDQUNILEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLElBQUksbUJBQW1CLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQzFFLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLGNBQWMsQ0FDbkIsU0FBYyxFQUNkLGlCQUF5QixFQUN6QixJQUFJLEdBQUcsSUFBSSxFQUNYLEdBQUcsR0FBRyxJQUFJO1FBRVYsT0FBTyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsRUFDekQsT0FBTyxFQUNQLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUNqRCxDQUFDO0lBQ0osQ0FBQzs4R0ExRlUsMkJBQTJCO2tIQUEzQiwyQkFBMkIsY0FGMUIsTUFBTTs7MkZBRVAsMkJBQTJCO2tCQUh2QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0NvbXBhcmF0b3JCdWlsZGVyfSBmcm9tICcuLi9kYXRhL2ZpZWxkLWNvbXBhcmF0b3InO1xuaW1wb3J0IHtJRGF0YVNvdXJjZX0gZnJvbSAnLi4vZGF0YS9kYXRhc291cmNlL2RhdGEtc291cmNlJztcbmltcG9ydCB7RGVsZWdhdGVMaXN0RGF0YVNvdXJjZX0gZnJvbSAnLi4vZGF0YS9kYXRhc291cmNlL2ZldGNoZXIvZGVsZWdhdGUtZGF0YS1zb3VyY2UnO1xuXG5cbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVkRW51bVZhbHVlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdmFsdWU6IHN0cmluZyxcbiAgICBwdWJsaWMgZGlzcGxheVZhbHVlOiBzdHJpbmdcbiAgKSB7XG4gIH1cblxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBFbGRlckVudW1UcmFuc2xhdGlvblNlcnZpY2Uge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBUcmFuc2xhdGVzIHRoZSBnaXZlbiBFbnVtIGNsYXNzLiBMb2FkcyB0cmFuc2xhdGlvbnMgb2YgZ2l2ZW4gdHJhbnNsYXRpb25QcmVmaXhcbiAgICogYW5kIGNyZWF0ZXMgZm9yIGVhY2ggZW51bSB2YWx1ZSBhIFRyYW5zbGF0ZWRFbnVtVmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSBlbnVtQ2xhc3MgZW51bSB0byB0cmFuc2xhdGVcbiAgICogQHBhcmFtIHRyYW5zbGF0aW9uUHJlZml4IHByZWZpeCB0byBsb2FkIHRyYW5zbGF0aW9uc1xuICAgKiBAcGFyYW0gc29ydCBpZiB0cnVlLCBkYXRhIHdpbGwgYmUgc29ydGVkIGJ5IHRyYW5zbGF0aW9uc1xuICAgKiBAcGFyYW0gYXNjIGlmIHRydWUsIGRhdGEgd2lsbCBiZSBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyXG4gICAqL1xuICBwdWJsaWMgdHJhbnNsYXRlKFxuICAgIGVudW1DbGFzczogYW55LFxuICAgIHRyYW5zbGF0aW9uUHJlZml4OiBzdHJpbmcsXG4gICAgc29ydCA9IHRydWUsXG4gICAgYXNjID0gdHJ1ZVxuICApOiBPYnNlcnZhYmxlPFRyYW5zbGF0ZWRFbnVtVmFsdWVbXT4ge1xuXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0odHJhbnNsYXRpb25QcmVmaXgpLnBpcGUoXG4gICAgICBtYXAoKHRyYW5zbGF0aW9uOiBzdHJpbmcgfCBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGVudW1DbGFzcylcbiAgICAgICAgICAubWFwKGVudW1LZXkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZW51bVZhbHVlID0gZW51bUNsYXNzW2VudW1LZXldO1xuICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRlZCA9IHRyYW5zbGF0aW9uW2VudW1WYWx1ZV0gPz8gZW51bUtleTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVHJhbnNsYXRlZEVudW1WYWx1ZShlbnVtVmFsdWUsIHRyYW5zbGF0ZWQpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSksXG4gICAgICBtYXAoKGRhdGE6IFRyYW5zbGF0ZWRFbnVtVmFsdWVbXSkgPT4ge1xuICAgICAgICByZXR1cm4gc29ydCA/XG4gICAgICAgICAgZGF0YS5zb3J0KENvbXBhcmF0b3JCdWlsZGVyLmZpZWxkU29ydChhc2MgPyAnZGlzcGxheVZhbHVlJyA6ICctZGlzcGxheVZhbHVlJykpIDpcbiAgICAgICAgICBkYXRhO1xuICAgICAgfSlcbiAgICApO1xuXG4gIH1cblxuICAvKipcbiAgICogVHJhbnNsYXRlcyB0aGUgZ2l2ZW4gZWxlbWVudC4gTG9hZHMgdGhlIHRyYW5zbGF0aW9uXG4gICAqIGFuZCBjcmVhdGVzIGEgVHJhbnNsYXRlZEVudW1WYWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHRyYW5zbGF0aW9uUHJlZml4IHByZWZpeCB0byBsb2FkIHRyYW5zbGF0aW9uXG4gICAqIEBwYXJhbSBlbnVtS2V5IGtleSBvZiB0aGUgdHJhbnNsYXRpb24gdG8gbG9hZFxuICAgKi9cbiAgcHVibGljIHRyYW5zbGF0ZU9uZShcbiAgICB0cmFuc2xhdGlvblByZWZpeDogc3RyaW5nLFxuICAgIGVudW1LZXk6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFRyYW5zbGF0ZWRFbnVtVmFsdWU+IHtcblxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KHRyYW5zbGF0aW9uUHJlZml4ICsgJy4nICsgZW51bUtleSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAodHJhbnNsYXRlZFZhbHVlID0+IG5ldyBUcmFuc2xhdGVkRW51bVZhbHVlKGVudW1LZXksIHRyYW5zbGF0ZWRWYWx1ZSkpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBkYXRhIHNvdXJjZSBvZiB0cmFuc2xhdGlvbnMgb2YgdGhlIGdpdmVuIGVudW0gY2xhc3MuXG4gICAqXG4gICAqIEBwYXJhbSBlbnVtQ2xhc3MgZW51bSB0byB0cmFuc2xhdGVcbiAgICogQHBhcmFtIHRyYW5zbGF0aW9uUHJlZml4IHByZWZpeCB0byBsb2FkIHRyYW5zbGF0aW9uc1xuICAgKiBAcGFyYW0gc29ydCBpZiB0cnVlLCBkYXRhIHdpbGwgYmUgc29ydGVkIGJ5IHRyYW5zbGF0aW9uc1xuICAgKiBAcGFyYW0gYXNjIGlmIHRydWUsIGRhdGEgd2lsbCBiZSBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyXG4gICAqL1xuICBwdWJsaWMgZW51bURhdGVTb3VyY2UoXG4gICAgZW51bUNsYXNzOiBhbnksXG4gICAgdHJhbnNsYXRpb25QcmVmaXg6IHN0cmluZyxcbiAgICBzb3J0ID0gdHJ1ZSxcbiAgICBhc2MgPSB0cnVlXG4gICk6IElEYXRhU291cmNlPFRyYW5zbGF0ZWRFbnVtVmFsdWU+IHtcbiAgICByZXR1cm4gRGVsZWdhdGVMaXN0RGF0YVNvdXJjZS5saXN0RmV0Y2hlcigoKSA9PlxuICAgICAgICB0aGlzLnRyYW5zbGF0ZShlbnVtQ2xhc3MsIHRyYW5zbGF0aW9uUHJlZml4LCBzb3J0LCBhc2MpLFxuICAgICAgJ3ZhbHVlJyxcbiAgICAgIChpZCkgPT4gdGhpcy50cmFuc2xhdGVPbmUodHJhbnNsYXRpb25QcmVmaXgsIGlkKVxuICAgICk7XG4gIH1cblxuXG59XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItZW51bS10cmFuc2xhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tbW9uL2VudW1zL2VsZGVyLWVudW0tdHJhbnNsYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7O0FBR3pGLE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsWUFDUyxLQUFhLEVBQ2IsWUFBb0I7UUFEcEIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLGlCQUFZLEdBQVosWUFBWSxDQUFRO0lBRTdCLENBQUM7Q0FFRjtBQUtELE1BQU0sT0FBTywyQkFBMkI7SUFFdEM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ1UsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFFNUMsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUU1RTs7Ozs7Ozs7T0FRRztJQUNJLFNBQVMsQ0FDZCxTQUFjLEVBQ2QsaUJBQXlCLEVBQ3pCLElBQUksR0FBRyxJQUFJLEVBQ1gsR0FBRyxHQUFHLElBQUk7UUFHVixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQ3pELEdBQUcsQ0FBQyxDQUFDLFdBQXlCLEVBQUUsRUFBRTtZQUNoQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2lCQUMxQixHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ2IsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNyQyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksT0FBTyxDQUFDO2dCQUNyRCxPQUFPLElBQUksbUJBQW1CLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3hELENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsSUFBMkIsRUFBRSxFQUFFO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEYsSUFBSSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUVKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxZQUFZLENBQ2pCLGlCQUF5QixFQUN6QixPQUFlO1FBR2YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGlCQUFpQixHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUM7YUFDaEUsSUFBSSxDQUNILEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUNwQixJQUFJLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FDdkYsQ0FBQztJQUNOLENBQUM7SUFFTyxrQkFBa0IsQ0FDeEIsT0FBZ0IsRUFDaEIsZUFBdUI7UUFFdkIsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksY0FBYyxDQUNuQixTQUFjLEVBQ2QsaUJBQXlCLEVBQ3pCLElBQUksR0FBRyxJQUFJLEVBQ1gsR0FBRyxHQUFHLElBQUk7UUFFVixPQUFPLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUN6RCxPQUFPLEVBQ1AsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLENBQ2pELENBQUM7SUFDSixDQUFDOzhHQWxHVSwyQkFBMkI7a0hBQTNCLDJCQUEyQixjQUYxQixNQUFNOzsyRkFFUCwyQkFBMkI7a0JBSHZDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBDb21wYXJhdG9yQnVpbGRlciB9IGZyb20gXCIuLi9kYXRhL2ZpZWxkLWNvbXBhcmF0b3JcIjtcbmltcG9ydCB7IElEYXRhU291cmNlIH0gZnJvbSBcIi4uL2RhdGEvZGF0YXNvdXJjZS9kYXRhLXNvdXJjZVwiO1xuaW1wb3J0IHsgRGVsZWdhdGVMaXN0RGF0YVNvdXJjZSB9IGZyb20gXCIuLi9kYXRhL2RhdGFzb3VyY2UvZmV0Y2hlci9kZWxlZ2F0ZS1kYXRhLXNvdXJjZVwiO1xuXG5cbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVkRW51bVZhbHVlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdmFsdWU6IHN0cmluZyxcbiAgICBwdWJsaWMgZGlzcGxheVZhbHVlOiBzdHJpbmdcbiAgKSB7XG4gIH1cblxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyRW51bVRyYW5zbGF0aW9uU2VydmljZSB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIFRyYW5zbGF0ZXMgdGhlIGdpdmVuIEVudW0gY2xhc3MuIExvYWRzIHRyYW5zbGF0aW9ucyBvZiBnaXZlbiB0cmFuc2xhdGlvblByZWZpeFxuICAgKiBhbmQgY3JlYXRlcyBmb3IgZWFjaCBlbnVtIHZhbHVlIGEgVHJhbnNsYXRlZEVudW1WYWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIGVudW1DbGFzcyBlbnVtIHRvIHRyYW5zbGF0ZVxuICAgKiBAcGFyYW0gdHJhbnNsYXRpb25QcmVmaXggcHJlZml4IHRvIGxvYWQgdHJhbnNsYXRpb25zXG4gICAqIEBwYXJhbSBzb3J0IGlmIHRydWUsIGRhdGEgd2lsbCBiZSBzb3J0ZWQgYnkgdHJhbnNsYXRpb25zXG4gICAqIEBwYXJhbSBhc2MgaWYgdHJ1ZSwgZGF0YSB3aWxsIGJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXJcbiAgICovXG4gIHB1YmxpYyB0cmFuc2xhdGUoXG4gICAgZW51bUNsYXNzOiBhbnksXG4gICAgdHJhbnNsYXRpb25QcmVmaXg6IHN0cmluZyxcbiAgICBzb3J0ID0gdHJ1ZSxcbiAgICBhc2MgPSB0cnVlXG4gICk6IE9ic2VydmFibGU8VHJhbnNsYXRlZEVudW1WYWx1ZVtdPiB7XG5cbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSh0cmFuc2xhdGlvblByZWZpeCkucGlwZShcbiAgICAgIG1hcCgodHJhbnNsYXRpb246IHN0cmluZyB8IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZW51bUNsYXNzKVxuICAgICAgICAgIC5tYXAoZW51bUtleSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbnVtVmFsdWUgPSBlbnVtQ2xhc3NbZW51bUtleV07XG4gICAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkID0gdHJhbnNsYXRpb25bZW51bVZhbHVlXSA/PyBlbnVtS2V5O1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBUcmFuc2xhdGVkRW51bVZhbHVlKGVudW1WYWx1ZSwgdHJhbnNsYXRlZCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgoZGF0YTogVHJhbnNsYXRlZEVudW1WYWx1ZVtdKSA9PiB7XG4gICAgICAgIHJldHVybiBzb3J0ID9cbiAgICAgICAgICBkYXRhLnNvcnQoQ29tcGFyYXRvckJ1aWxkZXIuZmllbGRTb3J0KGFzYyA/IFwiZGlzcGxheVZhbHVlXCIgOiBcIi1kaXNwbGF5VmFsdWVcIikpIDpcbiAgICAgICAgICBkYXRhO1xuICAgICAgfSlcbiAgICApO1xuXG4gIH1cblxuICAvKipcbiAgICogVHJhbnNsYXRlcyB0aGUgZ2l2ZW4gZWxlbWVudC4gTG9hZHMgdGhlIHRyYW5zbGF0aW9uXG4gICAqIGFuZCBjcmVhdGVzIGEgVHJhbnNsYXRlZEVudW1WYWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHRyYW5zbGF0aW9uUHJlZml4IHByZWZpeCB0byBsb2FkIHRyYW5zbGF0aW9uXG4gICAqIEBwYXJhbSBlbnVtS2V5IGtleSBvZiB0aGUgdHJhbnNsYXRpb24gdG8gbG9hZFxuICAgKi9cbiAgcHVibGljIHRyYW5zbGF0ZU9uZShcbiAgICB0cmFuc2xhdGlvblByZWZpeDogc3RyaW5nLFxuICAgIGVudW1LZXk6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFRyYW5zbGF0ZWRFbnVtVmFsdWU+IHtcblxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KHRyYW5zbGF0aW9uUHJlZml4ICsgXCIuXCIgKyBlbnVtS2V5KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCh0cmFuc2xhdGVkVmFsdWUgPT5cbiAgICAgICAgICBuZXcgVHJhbnNsYXRlZEVudW1WYWx1ZShlbnVtS2V5LCB0aGlzLmFkZFByZWZpeElmTm90TnVsbChlbnVtS2V5LCB0cmFuc2xhdGVkVmFsdWUpKSlcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFkZFByZWZpeElmTm90TnVsbChcbiAgICBlbnVtS2V5IDogc3RyaW5nLFxuICAgIHRyYW5zbGF0ZWRWYWx1ZTogc3RyaW5nXG4gICkge1xuICAgIHJldHVybiBlbnVtS2V5ID8gdHJhbnNsYXRlZFZhbHVlIDogXCJcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZGF0YSBzb3VyY2Ugb2YgdHJhbnNsYXRpb25zIG9mIHRoZSBnaXZlbiBlbnVtIGNsYXNzLlxuICAgKlxuICAgKiBAcGFyYW0gZW51bUNsYXNzIGVudW0gdG8gdHJhbnNsYXRlXG4gICAqIEBwYXJhbSB0cmFuc2xhdGlvblByZWZpeCBwcmVmaXggdG8gbG9hZCB0cmFuc2xhdGlvbnNcbiAgICogQHBhcmFtIHNvcnQgaWYgdHJ1ZSwgZGF0YSB3aWxsIGJlIHNvcnRlZCBieSB0cmFuc2xhdGlvbnNcbiAgICogQHBhcmFtIGFzYyBpZiB0cnVlLCBkYXRhIHdpbGwgYmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlclxuICAgKi9cbiAgcHVibGljIGVudW1EYXRlU291cmNlKFxuICAgIGVudW1DbGFzczogYW55LFxuICAgIHRyYW5zbGF0aW9uUHJlZml4OiBzdHJpbmcsXG4gICAgc29ydCA9IHRydWUsXG4gICAgYXNjID0gdHJ1ZVxuICApOiBJRGF0YVNvdXJjZTxUcmFuc2xhdGVkRW51bVZhbHVlPiB7XG4gICAgcmV0dXJuIERlbGVnYXRlTGlzdERhdGFTb3VyY2UubGlzdEZldGNoZXIoKCkgPT5cbiAgICAgICAgdGhpcy50cmFuc2xhdGUoZW51bUNsYXNzLCB0cmFuc2xhdGlvblByZWZpeCwgc29ydCwgYXNjKSxcbiAgICAgIFwidmFsdWVcIixcbiAgICAgIChpZCkgPT4gdGhpcy50cmFuc2xhdGVPbmUodHJhbnNsYXRpb25QcmVmaXgsIGlkKVxuICAgICk7XG4gIH1cblxuXG59XG4iXX0=
@@ -1,10 +1,11 @@
1
- import { ContentChildren, Directive, Input } from "@angular/core";
1
+ import { ContentChildren, Directive, Input, Optional, SkipSelf } from "@angular/core";
2
2
  import { LoggerFactory } from "@elderbyte/ts-logger";
3
3
  import { combineLatestWith, debounceTime, map, skip, startWith, switchMap, takeUntil } from "rxjs/operators";
4
4
  import { BehaviorSubject } from "rxjs/internal/BehaviorSubject";
5
5
  import { Subject } from "rxjs/internal/Subject";
6
6
  import { combineLatest } from "rxjs";
7
7
  import { Filter } from "../../../common/data/filters/filter";
8
+ import { FilterContext } from "../../../common/data/filters/filter-context";
8
9
  import { ElderSearchInputDirective } from "./elder-search-input.directive";
9
10
  import * as i0 from "@angular/core";
10
11
  /**
@@ -12,16 +13,17 @@ import * as i0 from "@angular/core";
12
13
  * and holds their values in a central search model.
13
14
  */
14
15
  export class ElderSearchContextDirective {
15
- constructor() {
16
- /***************************************************************************
17
- * *
18
- * Fields *
19
- * *
20
- **************************************************************************/
16
+ /***************************************************************************
17
+ * *
18
+ * Constructor *
19
+ * *
20
+ **************************************************************************/
21
+ constructor(parentContext) {
22
+ this.parentContext = parentContext;
23
+ this.childSearchInputs$ = new BehaviorSubject([]);
21
24
  this.forcedFilters$ = new BehaviorSubject([]);
22
25
  this.log = LoggerFactory.getLogger(this.constructor.name);
23
26
  this._unsubscribe$ = new Subject();
24
- this._searchInputs = new BehaviorSubject([]);
25
27
  this._searchStates = new BehaviorSubject([]);
26
28
  this._filters$ = new BehaviorSubject([]);
27
29
  this._initialFilters$ = new BehaviorSubject([]);
@@ -31,18 +33,16 @@ export class ElderSearchContextDirective {
31
33
  * Life Cycle *
32
34
  * *
33
35
  **************************************************************************/
36
+ ngAfterContentInit() {
37
+ if (!this.isParentContextNull()) {
38
+ this.registerInputsToParentContext();
39
+ }
40
+ }
34
41
  ngAfterViewInit() {
35
- this._searchInputs.next(this.searchInputs.toArray());
36
- this.searchInputs.changes
37
- .pipe(startWith(this.searchInputs), takeUntil(this._unsubscribe$), map(input => input), switchMap(inputs => combineLatest(inputs.map(i => i.state$))), combineLatestWith(this.forcedFilters$), debounceTime(5)).subscribe(([states, forcedFilters]) => {
38
- this._searchStates.next(states);
39
- const userFilters = this.convertToFilters(states);
40
- this._filters$.next(userFilters);
41
- this.applyFilters(userFilters, forcedFilters);
42
- });
43
- this.initialFilters$.pipe(takeUntil(this._unsubscribe$), skip(1)).subscribe((initialFilters) => {
44
- this.searchInputs.forEach(input => input.setInitialFilter(initialFilters));
45
- });
42
+ if (this.isParentContextNull()) {
43
+ this.subscribeSearchInputs();
44
+ this.subscribeInitialFilters();
45
+ }
46
46
  }
47
47
  ngOnDestroy() {
48
48
  this._unsubscribe$.next();
@@ -54,7 +54,7 @@ export class ElderSearchContextDirective {
54
54
  * *
55
55
  **************************************************************************/
56
56
  set filterContext(value) {
57
- this._filterContext = value;
57
+ this._filterContext = value instanceof FilterContext ? value : null;
58
58
  }
59
59
  get filterContext() {
60
60
  return this._filterContext;
@@ -106,6 +106,9 @@ export class ElderSearchContextDirective {
106
106
  * Public API *
107
107
  * *
108
108
  **************************************************************************/
109
+ registerInput(searchInputs) {
110
+ this.childSearchInputs$.next([...this.childSearchInputs$.getValue(), ...searchInputs]);
111
+ }
109
112
  registerInitialFilters(filters) {
110
113
  this._initialFilters$.next(filters);
111
114
  }
@@ -113,7 +116,6 @@ export class ElderSearchContextDirective {
113
116
  this.attributesSnapshot
114
117
  .filter(attr => !attr.readonly)
115
118
  .forEach(a => {
116
- console.log(a.name);
117
119
  a.reset();
118
120
  });
119
121
  }
@@ -122,6 +124,32 @@ export class ElderSearchContextDirective {
122
124
  * Private *
123
125
  * *
124
126
  **************************************************************************/
127
+ registerInputsToParentContext() {
128
+ if (!this.isParentContextNull()) {
129
+ this.parentContext.registerInput(this.searchInputs.toArray());
130
+ }
131
+ }
132
+ isParentContextNull() {
133
+ return this.parentContext === null;
134
+ }
135
+ subscribeSearchInputs() {
136
+ this.searchInputs.changes
137
+ .pipe(startWith(this.searchInputs), takeUntil(this._unsubscribe$), map(input => input), combineLatestWith(this.childSearchInputs$), map(([inputs, childInputs]) => this.zipInputsWithChildInputs(inputs.toArray(), childInputs)), switchMap(inputs => combineLatest(inputs.map(i => i.state$))), combineLatestWith(this.forcedFilters$), debounceTime(5)).subscribe(([states, forcedFilters]) => {
138
+ this._searchStates.next(states);
139
+ const userFilters = this.convertToFilters(states);
140
+ this._filters$.next(userFilters);
141
+ this.applyFilters(userFilters, forcedFilters);
142
+ });
143
+ }
144
+ zipInputsWithChildInputs(inputs, childInputs) {
145
+ return [...inputs, ...childInputs];
146
+ }
147
+ subscribeInitialFilters() {
148
+ this.initialFilters$.pipe(takeUntil(this._unsubscribe$), combineLatestWith(this.childSearchInputs$), skip(1)).subscribe(([initialFilters, childSearchInputs]) => {
149
+ var searchInputs = this.zipInputsWithChildInputs(this.searchInputs.toArray(), childSearchInputs);
150
+ searchInputs.forEach(input => input.setInitialFilter(initialFilters));
151
+ });
152
+ }
125
153
  convertToFilters(states) {
126
154
  return states
127
155
  .map(s => new Filter(s.queryKey, s.queryValue));
@@ -134,7 +162,7 @@ export class ElderSearchContextDirective {
134
162
  this.log.trace("Search-Model filters updated:", Array.from(context.filtersSnapshot));
135
163
  }
136
164
  }
137
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderSearchContextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
165
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderSearchContextDirective, deps: [{ token: ElderSearchContextDirective, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
138
166
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ElderSearchContextDirective, selector: "[elderSearchContext]", inputs: { filterContext: ["elderSearchContext", "filterContext"], forcedFilters: "forcedFilters" }, queries: [{ propertyName: "searchInputs", predicate: ElderSearchInputDirective, descendants: true }], exportAs: ["elderSearchContext"], ngImport: i0 }); }
139
167
  }
140
168
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderSearchContextDirective, decorators: [{
@@ -143,7 +171,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
143
171
  selector: "[elderSearchContext]",
144
172
  exportAs: "elderSearchContext"
145
173
  }]
146
- }], propDecorators: { searchInputs: [{
174
+ }], ctorParameters: function () { return [{ type: ElderSearchContextDirective, decorators: [{
175
+ type: SkipSelf
176
+ }, {
177
+ type: Optional
178
+ }] }]; }, propDecorators: { searchInputs: [{
147
179
  type: ContentChildren,
148
180
  args: [ElderSearchInputDirective, { descendants: true }]
149
181
  }], filterContext: [{
@@ -152,4 +184,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
152
184
  }], forcedFilters: [{
153
185
  type: Input
154
186
  }] } });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9zZWFyY2gvZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQVEsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRzdELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUUzRTs7O0dBR0c7QUFLSCxNQUFNLE9BQU8sMkJBQTJCO0lBSnhDO1FBT0U7Ozs7b0ZBSTRFO1FBRXBFLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVcsRUFBRSxDQUFDLENBQUM7UUFFMUMsUUFBRyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRCxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFcEMsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBZ0Is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Q0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUVwRSxnQkFBZ0IsQ0FBQyxNQUEwQjtRQUNqRCxPQUFPLE1BQU07YUFDVixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTyxZQUFZLENBQ2xCLFdBQXFCLEVBQ3JCLGFBQXVCO1FBRXZCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDbkMsSUFBSSxPQUFPLEVBQUU7WUFDWCxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ25DLE9BQU8sQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsK0JBQStCLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztTQUN0RjtJQUNILENBQUM7OEdBNUtVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLDZMQUNyQix5QkFBeUI7OzJGQUQvQiwyQkFBMkI7a0JBSnZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsUUFBUSxFQUFFLG9CQUFvQjtpQkFDL0I7OEJBRW9FLFlBQVk7c0JBQTlFLGVBQWU7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQWlFdEQsYUFBYTtzQkFEdkIsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBZ0JoQixhQUFhO3NCQUR2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIElucHV0LCBPbkRlc3Ryb3ksIFF1ZXJ5TGlzdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBMb2dnZXJGYWN0b3J5IH0gZnJvbSBcIkBlbGRlcmJ5dGUvdHMtbG9nZ2VyXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anMvaW50ZXJuYWwvT2JzZXJ2YWJsZVwiO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdFdpdGgsIGRlYm91bmNlVGltZSwgbWFwLCBza2lwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dCB9IGZyb20gXCIuL21vZGVsL3NlYXJjaC1pbnB1dFwiO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSBcInJ4anMvaW50ZXJuYWwvQmVoYXZpb3JTdWJqZWN0XCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anMvaW50ZXJuYWwvU3ViamVjdFwiO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZnJvbSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL2RhdGEvZmlsdGVycy9maWx0ZXJcIjtcbmltcG9ydCB7IEZpbHRlckNvbnRleHQgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL2RhdGEvZmlsdGVycy9maWx0ZXItY29udGV4dFwiO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXRTdGF0ZSB9IGZyb20gXCIuL21vZGVsL3NlYXJjaC1pbnB1dC1zdGF0ZVwiO1xuaW1wb3J0IHsgRWxkZXJTZWFyY2hJbnB1dERpcmVjdGl2ZSB9IGZyb20gXCIuL2VsZGVyLXNlYXJjaC1pbnB1dC5kaXJlY3RpdmVcIjtcblxuLyoqXG4gKiBUaGUgc2VhcmNoIGNvbnRhaW5lciBtYW5hZ2VzIGEgZ3JvdXAgb2Ygc2VhcmNoLWlucHV0c1xuICogYW5kIGhvbGRzIHRoZWlyIHZhbHVlcyBpbiBhIGNlbnRyYWwgc2VhcmNoIG1vZGVsLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW2VsZGVyU2VhcmNoQ29udGV4dF1cIixcbiAgZXhwb3J0QXM6IFwiZWxkZXJTZWFyY2hDb250ZXh0XCJcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJTZWFyY2hDb250ZXh0RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQENvbnRlbnRDaGlsZHJlbihFbGRlclNlYXJjaElucHV0RGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHNlYXJjaElucHV0cyE6IFF1ZXJ5TGlzdDxFbGRlclNlYXJjaElucHV0RGlyZWN0aXZlPjtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGZvcmNlZEZpbHRlcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJbXT4oW10pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF91bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlYXJjaElucHV0cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VhcmNoSW5wdXRbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZWFyY2hTdGF0ZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlYXJjaElucHV0U3RhdGVbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9maWx0ZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsdGVyW10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5pdGlhbEZpbHRlcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJbXT4oW10pO1xuXG4gIHByaXZhdGUgX2ZpbHRlckNvbnRleHQ6IEZpbHRlckNvbnRleHQ7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zZWFyY2hJbnB1dHMubmV4dCh0aGlzLnNlYXJjaElucHV0cy50b0FycmF5KCkpO1xuXG4gICAgdGhpcy5zZWFyY2hJbnB1dHMuY2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh0aGlzLnNlYXJjaElucHV0cyksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpLFxuICAgICAgICBtYXAoaW5wdXQgPT4gaW5wdXQgYXMgUXVlcnlMaXN0PEVsZGVyU2VhcmNoSW5wdXREaXJlY3RpdmU+KSxcbiAgICAgICAgc3dpdGNoTWFwKGlucHV0cyA9PiBjb21iaW5lTGF0ZXN0KGlucHV0cy5tYXAoaSA9PiBpLnN0YXRlJCkpKSxcbiAgICAgICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy5mb3JjZWRGaWx0ZXJzJCksXG4gICAgICAgIGRlYm91bmNlVGltZSg1KVxuICAgICAgKS5zdWJzY3JpYmUoKFtzdGF0ZXMsIGZvcmNlZEZpbHRlcnNdKSA9PiB7XG4gICAgICB0aGlzLl9zZWFyY2hTdGF0ZXMubmV4dChzdGF0ZXMpO1xuICAgICAgY29uc3QgdXNlckZpbHRlcnMgPSB0aGlzLmNvbnZlcnRUb0ZpbHRlcnMoc3RhdGVzKTtcbiAgICAgIHRoaXMuX2ZpbHRlcnMkLm5leHQodXNlckZpbHRlcnMpO1xuICAgICAgdGhpcy5hcHBseUZpbHRlcnModXNlckZpbHRlcnMsIGZvcmNlZEZpbHRlcnMpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5pbml0aWFsRmlsdGVycyQucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpLFxuICAgICAgc2tpcCgxKVxuICAgICkuc3Vic2NyaWJlKChpbml0aWFsRmlsdGVycykgPT4ge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dHMuZm9yRWFjaChpbnB1dCA9PiBpbnB1dC5zZXRJbml0aWFsRmlsdGVyKGluaXRpYWxGaWx0ZXJzKSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fdW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLl91bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBJbnB1dChcImVsZGVyU2VhcmNoQ29udGV4dFwiKVxuICBwdWJsaWMgc2V0IGZpbHRlckNvbnRleHQodmFsdWU6IEZpbHRlckNvbnRleHQpIHtcbiAgICB0aGlzLl9maWx0ZXJDb250ZXh0ID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpbHRlckNvbnRleHQoKTogRmlsdGVyQ29udGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckNvbnRleHQ7XG4gIH1cblxuICAvKipcbiAgICogRm9yY2VkIGZpbHRlcnMgYXJlIGFsd2F5cyBtZXJnZWQgaW50byB0aGUgZmluYWwgRmlsdGVyQ29udGV4dC5cbiAgICpcbiAgICogVGhpcyBtZWFucyB0aGV5IG92ZXJyaWRlIHVzZXIgZGVmaW5lZCBmaWx0ZXJzLCBidXQgYXR0ZW1wdFxuICAgKiB0byBhbHNvIGtlZXAgdGhlIHVzZXJzIGludGVudCAoYnkgbWVyZ2luZykgdGhlbS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZm9yY2VkRmlsdGVycyhmaWx0ZXJzOiBGaWx0ZXJbXSkge1xuICAgIHRoaXMuZm9yY2VkRmlsdGVycyQubmV4dChmaWx0ZXJzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZm9yY2VkRmlsdGVycygpOiBGaWx0ZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuZm9yY2VkRmlsdGVycyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXR0cmlidXRlcygpOiBPYnNlcnZhYmxlPFNlYXJjaElucHV0W10+IHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hJbnB1dHMuY2hhbmdlcy5waXBlKFxuICAgICAgbWFwKGlucHV0cyA9PiBpbnB1dHMgYXMgUXVlcnlMaXN0PEVsZGVyU2VhcmNoSW5wdXREaXJlY3RpdmU+KSxcbiAgICAgIG1hcChpbnB1dHMgPT4gaW5wdXRzLnRvQXJyYXkoKSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBhdHRyaWJ1dGVzU25hcHNob3QoKTogU2VhcmNoSW5wdXRbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoSW5wdXRzLnRvQXJyYXkoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdGVzJCgpOiBPYnNlcnZhYmxlPFNlYXJjaElucHV0U3RhdGVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hTdGF0ZXMuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlc1NuYXBzaG90KCk6IFNlYXJjaElucHV0U3RhdGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaFN0YXRlcy5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdXNlciB0b3VjaGVkIGF0dHJpYnV0ZXMuIChpZ25vcmluZyBmYWxsYmFja3MpXG4gICAqL1xuICBwdWJsaWMgZ2V0IHVzZXJEZWZpbmVkQXR0cmlidXRlcyQoKTogT2JzZXJ2YWJsZTxTZWFyY2hJbnB1dFN0YXRlW10+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZXMkLnBpcGUoXG4gICAgICBtYXAoc3RhdGVzID0+IHN0YXRlcy5maWx0ZXIocyA9PiAhcy5wcmlzdGluZSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGFjdGl2ZSBmaWx0ZXJzXG4gICAqL1xuICBwdWJsaWMgZ2V0IGZpbHRlcnMkKCk6IE9ic2VydmFibGU8RmlsdGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVycyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluaXRpYWxGaWx0ZXJzJCgpOiBPYnNlcnZhYmxlPEZpbHRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2luaXRpYWxGaWx0ZXJzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlsdGVyc1NuYXBzaG90KCk6IEZpbHRlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVycyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyByZWdpc3RlckluaXRpYWxGaWx0ZXJzKGZpbHRlcnM6IEZpbHRlcltdKSB7XG4gICAgdGhpcy5faW5pdGlhbEZpbHRlcnMkLm5leHQoZmlsdGVycyk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdHRyaWJ1dGVzU25hcHNob3RcbiAgICAgIC5maWx0ZXIoYXR0ciA9PiAhYXR0ci5yZWFkb25seSlcbiAgICAgIC5mb3JFYWNoKGEgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhhLm5hbWUpO1xuICAgICAgICBhLnJlc2V0KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgY29udmVydFRvRmlsdGVycyhzdGF0ZXM6IFNlYXJjaElucHV0U3RhdGVbXSk6IEZpbHRlcltdIHtcbiAgICByZXR1cm4gc3RhdGVzXG4gICAgICAubWFwKHMgPT4gbmV3IEZpbHRlcihzLnF1ZXJ5S2V5LCBzLnF1ZXJ5VmFsdWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXJzKFxuICAgIHVzZXJGaWx0ZXJzOiBGaWx0ZXJbXSxcbiAgICBmb3JjZWRGaWx0ZXJzOiBGaWx0ZXJbXVxuICApOiB2b2lkIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5maWx0ZXJDb250ZXh0O1xuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb250ZXh0LnVwZGF0ZUZpbHRlcnModXNlckZpbHRlcnMpO1xuICAgICAgY29udGV4dC5tZXJnZUZpbHRlcnMoZm9yY2VkRmlsdGVycyk7XG4gICAgICB0aGlzLmxvZy50cmFjZShcIlNlYXJjaC1Nb2RlbCBmaWx0ZXJzIHVwZGF0ZWQ6XCIsIEFycmF5LmZyb20oY29udGV4dC5maWx0ZXJzU25hcHNob3QpKTtcbiAgICB9XG4gIH1cbn1cblxuIl19
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9zZWFyY2gvZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxlQUFlLEVBQ2YsU0FBUyxFQUNULEtBQUssRUFFTCxRQUFRLEVBRVIsUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUU1RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFFM0U7OztHQUdHO0FBS0gsTUFBTSxPQUFPLDJCQUEyQjtJQXVCdEM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQW1ELGFBQTBDO1FBQTFDLGtCQUFhLEdBQWIsYUFBYSxDQUE2QjtRQXBCckYsdUJBQWtCLEdBQUcsSUFBSSxlQUFlLENBQThCLEVBQUUsQ0FBQyxDQUFDO1FBRTFFLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVcsRUFB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LEtBQUs7dUJBQUMsb0JBQW9CO2dCQWdCaEIsYUFBYTtzQkFEdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LCBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBRdWVyeUxpc3QsXG4gIFNraXBTZWxmXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBMb2dnZXJGYWN0b3J5IH0gZnJvbSBcIkBlbGRlcmJ5dGUvdHMtbG9nZ2VyXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anMvaW50ZXJuYWwvT2JzZXJ2YWJsZVwiO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdFdpdGgsIGRlYm91bmNlVGltZSwgbWFwLCBza2lwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dCB9IGZyb20gXCIuL21vZGVsL3NlYXJjaC1pbnB1dFwiO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSBcInJ4anMvaW50ZXJuYWwvQmVoYXZpb3JTdWJqZWN0XCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anMvaW50ZXJuYWwvU3ViamVjdFwiO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL2RhdGEvZmlsdGVycy9maWx0ZXJcIjtcbmltcG9ydCB7IEZpbHRlckNvbnRleHQgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL2RhdGEvZmlsdGVycy9maWx0ZXItY29udGV4dFwiO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXRTdGF0ZSB9IGZyb20gXCIuL21vZGVsL3NlYXJjaC1pbnB1dC1zdGF0ZVwiO1xuaW1wb3J0IHsgRWxkZXJTZWFyY2hJbnB1dERpcmVjdGl2ZSB9IGZyb20gXCIuL2VsZGVyLXNlYXJjaC1pbnB1dC5kaXJlY3RpdmVcIjtcblxuLyoqXG4gKiBUaGUgc2VhcmNoIGNvbnRhaW5lciBtYW5hZ2VzIGEgZ3JvdXAgb2Ygc2VhcmNoLWlucHV0c1xuICogYW5kIGhvbGRzIHRoZWlyIHZhbHVlcyBpbiBhIGNlbnRyYWwgc2VhcmNoIG1vZGVsLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW2VsZGVyU2VhcmNoQ29udGV4dF1cIixcbiAgZXhwb3J0QXM6IFwiZWxkZXJTZWFyY2hDb250ZXh0XCJcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJTZWFyY2hDb250ZXh0RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBAQ29udGVudENoaWxkcmVuKEVsZGVyU2VhcmNoSW5wdXREaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgc2VhcmNoSW5wdXRzITogUXVlcnlMaXN0PEVsZGVyU2VhcmNoSW5wdXREaXJlY3RpdmU+O1xuICBwcml2YXRlIGNoaWxkU2VhcmNoSW5wdXRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RWxkZXJTZWFyY2hJbnB1dERpcmVjdGl2ZVtdPihbXSk7XG5cbiAgcHJpdmF0ZSBmb3JjZWRGaWx0ZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsdGVyW10+KFtdKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zZWFyY2hTdGF0ZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlYXJjaElucHV0U3RhdGVbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9maWx0ZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsdGVyW10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5pdGlhbEZpbHRlcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJbXT4oW10pO1xuXG4gIHByaXZhdGUgX2ZpbHRlckNvbnRleHQ6IEZpbHRlckNvbnRleHQ7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKEBTa2lwU2VsZigpIEBPcHRpb25hbCgpIHByaXZhdGUgcGFyZW50Q29udGV4dDogRWxkZXJTZWFyY2hDb250ZXh0RGlyZWN0aXZlKSB7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGlmKCF0aGlzLmlzUGFyZW50Q29udGV4dE51bGwoKSkge1xuICAgICAgdGhpcy5yZWdpc3RlcklucHV0c1RvUGFyZW50Q29udGV4dCgpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1BhcmVudENvbnRleHROdWxsKCkpIHtcbiAgICAgIHRoaXMuc3Vic2NyaWJlU2VhcmNoSW5wdXRzKCk7XG4gICAgICB0aGlzLnN1YnNjcmliZUluaXRpYWxGaWx0ZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3Vuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy5fdW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASW5wdXQoXCJlbGRlclNlYXJjaENvbnRleHRcIilcbiAgcHVibGljIHNldCBmaWx0ZXJDb250ZXh0KHZhbHVlOiBGaWx0ZXJDb250ZXh0IHwgc3RyaW5nKSB7XG4gICAgdGhpcy5fZmlsdGVyQ29udGV4dCA9IHZhbHVlIGluc3RhbmNlb2YgRmlsdGVyQ29udGV4dCA/IHZhbHVlIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlsdGVyQ29udGV4dCgpOiBGaWx0ZXJDb250ZXh0IHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyQ29udGV4dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JjZWQgZmlsdGVycyBhcmUgYWx3YXlzIG1lcmdlZCBpbnRvIHRoZSBmaW5hbCBGaWx0ZXJDb250ZXh0LlxuICAgKlxuICAgKiBUaGlzIG1lYW5zIHRoZXkgb3ZlcnJpZGUgdXNlciBkZWZpbmVkIGZpbHRlcnMsIGJ1dCBhdHRlbXB0XG4gICAqIHRvIGFsc28ga2VlcCB0aGUgdXNlcnMgaW50ZW50IChieSBtZXJnaW5nKSB0aGVtLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmb3JjZWRGaWx0ZXJzKGZpbHRlcnM6IEZpbHRlcltdKSB7XG4gICAgdGhpcy5mb3JjZWRGaWx0ZXJzJC5uZXh0KGZpbHRlcnMpO1xuICB9XG5cbiAgcHVibGljIGdldCBmb3JjZWRGaWx0ZXJzKCk6IEZpbHRlcltdIHtcbiAgICByZXR1cm4gdGhpcy5mb3JjZWRGaWx0ZXJzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBhdHRyaWJ1dGVzKCk6IE9ic2VydmFibGU8U2VhcmNoSW5wdXRbXT4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaElucHV0cy5jaGFuZ2VzLnBpcGUoXG4gICAgICBtYXAoaW5wdXRzID0+IGlucHV0cyBhcyBRdWVyeUxpc3Q8RWxkZXJTZWFyY2hJbnB1dERpcmVjdGl2ZT4pLFxuICAgICAgbWFwKGlucHV0cyA9PiBpbnB1dHMudG9BcnJheSgpKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGF0dHJpYnV0ZXNTbmFwc2hvdCgpOiBTZWFyY2hJbnB1dFtdIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hJbnB1dHMudG9BcnJheSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGF0ZXMkKCk6IE9ic2VydmFibGU8U2VhcmNoSW5wdXRTdGF0ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaFN0YXRlcy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdGVzU25hcHNob3QoKTogU2VhcmNoSW5wdXRTdGF0ZVtdIHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoU3RhdGVzLmdldFZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCB1c2VyIHRvdWNoZWQgYXR0cmlidXRlcy4gKGlnbm9yaW5nIGZhbGxiYWNrcylcbiAgICovXG4gIHB1YmxpYyBnZXQgdXNlckRlZmluZWRBdHRyaWJ1dGVzJCgpOiBPYnNlcnZhYmxlPFNlYXJjaElucHV0U3RhdGVbXT4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlcyQucGlwZShcbiAgICAgIG1hcChzdGF0ZXMgPT4gc3RhdGVzLmZpbHRlcihzID0+ICFzLnByaXN0aW5lKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgYWN0aXZlIGZpbHRlcnNcbiAgICovXG4gIHB1YmxpYyBnZXQgZmlsdGVycyQoKTogT2JzZXJ2YWJsZTxGaWx0ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5pdGlhbEZpbHRlcnMkKCk6IE9ic2VydmFibGU8RmlsdGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5faW5pdGlhbEZpbHRlcnMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXJzU25hcHNob3QoKTogRmlsdGVyW10ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHJlZ2lzdGVySW5wdXQoc2VhcmNoSW5wdXRzOiBFbGRlclNlYXJjaElucHV0RGlyZWN0aXZlW10pIHtcbiAgICB0aGlzLmNoaWxkU2VhcmNoSW5wdXRzJC5uZXh0KFsuLi50aGlzLmNoaWxkU2VhcmNoSW5wdXRzJC5nZXRWYWx1ZSgpLCAuLi5zZWFyY2hJbnB1dHNdKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlckluaXRpYWxGaWx0ZXJzKGZpbHRlcnM6IEZpbHRlcltdKSB7XG4gICAgdGhpcy5faW5pdGlhbEZpbHRlcnMkLm5leHQoZmlsdGVycyk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdHRyaWJ1dGVzU25hcHNob3RcbiAgICAgIC5maWx0ZXIoYXR0ciA9PiAhYXR0ci5yZWFkb25seSlcbiAgICAgIC5mb3JFYWNoKGEgPT4ge1xuICAgICAgICBhLnJlc2V0KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cbiAgcHJpdmF0ZSByZWdpc3RlcklucHV0c1RvUGFyZW50Q29udGV4dCgpIHtcbiAgICBpZighdGhpcy5pc1BhcmVudENvbnRleHROdWxsKCkpIHtcbiAgICAgIHRoaXMucGFyZW50Q29udGV4dC5yZWdpc3RlcklucHV0KHRoaXMuc2VhcmNoSW5wdXRzLnRvQXJyYXkoKSlcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzUGFyZW50Q29udGV4dE51bGwoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50Q29udGV4dCA9PT0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlU2VhcmNoSW5wdXRzKCkge1xuICAgIHRoaXMuc2VhcmNoSW5wdXRzLmNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgodGhpcy5zZWFyY2hJbnB1dHMpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUkKSxcbiAgICAgICAgbWFwKGlucHV0ID0+IGlucHV0IGFzIFF1ZXJ5TGlzdDxFbGRlclNlYXJjaElucHV0RGlyZWN0aXZlPiksXG4gICAgICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMuY2hpbGRTZWFyY2hJbnB1dHMkKSxcbiAgICAgICAgbWFwKChbaW5wdXRzLCBjaGlsZElucHV0c10pID0+IHRoaXMuemlwSW5wdXRzV2l0aENoaWxkSW5wdXRzKGlucHV0cy50b0FycmF5KCksIGNoaWxkSW5wdXRzKSksXG4gICAgICAgIHN3aXRjaE1hcChpbnB1dHMgPT4gY29tYmluZUxhdGVzdChpbnB1dHMubWFwKGkgPT4gaS5zdGF0ZSQpKSksXG4gICAgICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMuZm9yY2VkRmlsdGVycyQpLFxuICAgICAgICBkZWJvdW5jZVRpbWUoNSlcbiAgICAgICkuc3Vic2NyaWJlKChbc3RhdGVzLCBmb3JjZWRGaWx0ZXJzXSkgPT4ge1xuICAgICAgdGhpcy5fc2VhcmNoU3RhdGVzLm5leHQoc3RhdGVzKTtcbiAgICAgIGNvbnN0IHVzZXJGaWx0ZXJzID0gdGhpcy5jb252ZXJ0VG9GaWx0ZXJzKHN0YXRlcyk7XG4gICAgICB0aGlzLl9maWx0ZXJzJC5uZXh0KHVzZXJGaWx0ZXJzKTtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKHVzZXJGaWx0ZXJzLCBmb3JjZWRGaWx0ZXJzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgemlwSW5wdXRzV2l0aENoaWxkSW5wdXRzKFxuICAgIGlucHV0czogRWxkZXJTZWFyY2hJbnB1dERpcmVjdGl2ZVtdLFxuICAgIGNoaWxkSW5wdXRzOiBFbGRlclNlYXJjaElucHV0RGlyZWN0aXZlW11cbiAgKSB7XG4gICAgcmV0dXJuIFsuLi5pbnB1dHMsIC4uLmNoaWxkSW5wdXRzXTtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlSW5pdGlhbEZpbHRlcnMoKSB7XG4gICAgdGhpcy5pbml0aWFsRmlsdGVycyQucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpLFxuICAgICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy5jaGlsZFNlYXJjaElucHV0cyQpLFxuICAgICAgc2tpcCgxKVxuICAgICkuc3Vic2NyaWJlKChbaW5pdGlhbEZpbHRlcnMsIGNoaWxkU2VhcmNoSW5wdXRzXSkgPT4ge1xuICAgICAgdmFyIHNlYXJjaElucHV0cyA9IHRoaXMuemlwSW5wdXRzV2l0aENoaWxkSW5wdXRzKHRoaXMuc2VhcmNoSW5wdXRzLnRvQXJyYXkoKSwgY2hpbGRTZWFyY2hJbnB1dHMpO1xuICAgICAgc2VhcmNoSW5wdXRzLmZvckVhY2goaW5wdXQgPT4gaW5wdXQuc2V0SW5pdGlhbEZpbHRlcihpbml0aWFsRmlsdGVycykpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0VG9GaWx0ZXJzKHN0YXRlczogU2VhcmNoSW5wdXRTdGF0ZVtdKTogRmlsdGVyW10ge1xuICAgIHJldHVybiBzdGF0ZXNcbiAgICAgIC5tYXAocyA9PiBuZXcgRmlsdGVyKHMucXVlcnlLZXksIHMucXVlcnlWYWx1ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUZpbHRlcnMoXG4gICAgdXNlckZpbHRlcnM6IEZpbHRlcltdLFxuICAgIGZvcmNlZEZpbHRlcnM6IEZpbHRlcltdXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmZpbHRlckNvbnRleHQ7XG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIGNvbnRleHQudXBkYXRlRmlsdGVycyh1c2VyRmlsdGVycyk7XG4gICAgICBjb250ZXh0Lm1lcmdlRmlsdGVycyhmb3JjZWRGaWx0ZXJzKTtcbiAgICAgIHRoaXMubG9nLnRyYWNlKFwiU2VhcmNoLU1vZGVsIGZpbHRlcnMgdXBkYXRlZDpcIiwgQXJyYXkuZnJvbShjb250ZXh0LmZpbHRlcnNTbmFwc2hvdCkpO1xuICAgIH1cbiAgfVxufVxuXG4iXX0=
@@ -105,7 +105,6 @@ export class ElderSearchInputDirective {
105
105
  }
106
106
  stateObservable() {
107
107
  return this.initialValueDirective.valueChanges$.pipe(takeUntil(this._unsubscribe$), map(value => {
108
- console.warn(value + "|" + this.name);
109
108
  const queryValue = this.convertRawModelValueToQueryString(value);
110
109
  const pristine = !this.isAttributeValuePresent(value);
111
110
  return new SearchInputState(this.name, queryValue, this.queryKey || this.name, pristine);
@@ -237,4 +236,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
237
236
  type: Input,
238
237
  args: ["valueAsId"]
239
238
  }] } });
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvc2VhcmNoL2VsZGVyLXNlYXJjaC1pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFLckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUl2RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7OztBQUV6Rjs7R0FFRztBQUtILE1BQU0sT0FBTyx5QkFBeUI7SUE4Q3BDOzs7O2dGQUk0RTtJQUU1RSxZQUNVLGFBQTBDLEVBQzFDLGVBQWtDLEVBQzFCLE9BQWdCO1FBRnhCLGtCQUFhLEdBQWIsYUFBYSxDQUE2QjtRQUMxQyxvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUFDMUIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQXREbEMsb0dBQW9HO1FBQ25GLDBCQUFxQixHQUFHLElBQUksMEJBQTBCLENBQUMsSUFBSSxDQUFD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LENBQUM7SUFDM0IsQ0FBQztJQUVPLGlCQUFpQixDQUFDLE1BQTZCO1FBQ3JELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFlBQVksS0FBSyxFQUFFO2dCQUN0QixPQUFPLENBQUMsQ0FBQzthQUNWO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNaO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEMsQ0FBQzs4R0F2UlUseUJBQXlCO2tHQUF6Qix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBSnJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsUUFBUSxFQUFFLGtCQUFrQjtpQkFDN0I7OzBCQXdESSxJQUFJOzRDQXpDQSxRQUFRO3NCQURkLEtBQUs7dUJBQUMscUJBQXFCO2dCQU9yQixjQUFjO3NCQURwQixLQUFLO3VCQUFDLDJCQUEyQjtnQkFRM0IsV0FBVztzQkFEakIsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBSWxCLFVBQVU7c0JBRGhCLEtBQUs7dUJBQUMsWUFBWTtnQkFPWixhQUFhO3NCQURuQixLQUFLO3VCQUFDLDBCQUEwQjtnQkFJMUIsU0FBUztzQkFEZixLQUFLO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBIb3N0LCBJbnB1dCwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IExvZ2dlckZhY3RvcnkgfSBmcm9tIFwiQGVsZGVyYnl0ZS90cy1sb2dnZXJcIjtcbmltcG9ydCB7IEVsZGVyU2VhcmNoQ29udGV4dERpcmVjdGl2ZSB9IGZyb20gXCIuL2VsZGVyLXNlYXJjaC1jb250ZXh0LmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzL2ludGVybmFsL09ic2VydmFibGVcIjtcbmltcG9ydCB7IE5nTW9kZWwgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IFNlYXJjaElucHV0IH0gZnJvbSBcIi4vbW9kZWwvc2VhcmNoLWlucHV0XCI7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBQcm9wZXJ0eVBhdGhVdGlsIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi91dGlscy9wcm9wZXJ0eS1wYXRoLXV0aWxcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dFN0YXRlIH0gZnJvbSBcIi4vbW9kZWwvc2VhcmNoLWlucHV0LXN0YXRlXCI7XG5pbXBvcnQgeyBPYmplY3RzIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9vYmplY3RzXCI7XG5pbXBvcnQgeyBDb2xsZWN0aW9uVXRpbCB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vdXRpbHMvY29sbGVjdGlvbi11dGlsXCI7XG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL2RhdGEvZmlsdGVycy9maWx0ZXJcIjtcbmltcG9ydCB7IExvY2FsUGFnZWREYXRhU291cmNlIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGFzb3VyY2UvbG9jYWwvbG9jYWwtcGFnZWQtZGF0YS1zb3VyY2VcIjtcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29lcmNpb25cIjtcbmltcG9ydCB7IEVsZGVySW5pdGlhbFZhbHVlRGlyZWN0aXZlIH0gZnJvbSBcIi4uL2RpcmVjdGl2ZXMvZWxkZXItaW5pdGlhbC12YWx1ZS5kaXJlY3RpdmVcIjtcblxuLyoqXG4gKiBTZWFyY2ggbmFtZSBhZGFwdGVyIGZvciBpbnB1dCBjb250cm9scy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBcIltlbGRlclNlYXJjaElucHV0XVwiLFxuICBleHBvcnRBczogXCJlbGRlclNlYXJjaElucHV0XCJcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJTZWFyY2hJbnB1dERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgU2VhcmNoSW5wdXQge1xuICAvL1RPRE86IEluIEFuZ3VsYXIgMTYsIHVzZSBzdGFuZGFsb25lIGRpcmVjdGl2ZXMgYW5kIGhvc3QgY29tcG9uZW50IHRvIGluamVjdCBkaXJlY3RpdmUgdG8gY29tcG9uZW50XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5pdGlhbFZhbHVlRGlyZWN0aXZlID0gbmV3IEVsZGVySW5pdGlhbFZhbHVlRGlyZWN0aXZlKHRoaXMubmdNb2RlbCk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVXN1YWxseSB0aGUgY29udHJvbCBuYW1lIGlzIHVzZWQsIHRoaXMgYWxsb3dzIGEgY3VzdG9tIHF1ZXJ5IGtleVxuICAgKi9cbiAgQElucHV0KFwiZWxkZXJTZWFyY2hJbnB1dEtleVwiKVxuICBwdWJsaWMgcXVlcnlLZXk6IHN0cmluZztcblxuICAvKipcbiAgICogKE9wdGlvbmFsKSBGdW5jdGlvbiB3aGljaCB0cmFuc2Zvcm1zIHRoZSB2YWx1ZSBvYmplY3QgdG8gYSBxdWVyeSBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgQElucHV0KFwiZWxkZXJTZWFyY2hJbnB1dFRyYW5zZm9ybVwiKVxuICBwdWJsaWMgdmFsdWVUcmFuc2Zvcm06ICgodmFsdWU6IGFueSkgPT4gc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsKTtcblxuICAvKipcbiAgICogKE9wdGlvbmFsLCBEZWZhdWx0KSBQYXRoIG9uIHRoZSB2YWx1ZSBvYmplY3QgdG8gdXNlIGFzIHF1ZXJ5IHBhcmFtIHZhbHVlXG4gICAqICB2YWx1ZSA9IFwidHlwZS5pZFwiXG4gICAqL1xuICBASW5wdXQoXCJlbGRlclNlYXJjaElucHV0XCIpXG4gIHB1YmxpYyByZXNvbHZlUGF0aDogc3RyaW5nO1xuXG4gIEBJbnB1dChcImRhdGFTb3VyY2VcIilcbiAgcHVibGljIGRhdGFTb3VyY2U6IExvY2FsUGFnZWREYXRhU291cmNlPGFueT47XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVXNlIHRoaXMgdmFsdWUgZm9yIHRoZSBxdWVyeSBpZiBub25lIGlzIHByb3ZpZGVkLlxuICAgKi9cbiAgQElucHV0KFwiZWxkZXJTZWFyY2hJbnB1dEZhbGxiYWNrXCIpXG4gIHB1YmxpYyBmYWxsYmFja1ZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICBASW5wdXQoXCJ2YWx1ZUFzSWRcIilcbiAgcHVibGljIHZhbHVlQXNJZDogQm9vbGVhbklucHV0O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZWFyY2hJbnB1dFN0YXRlPihudWxsKTtcbiAgcHJpdmF0ZSBfZXh0cmFjdGVkTmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBfdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VhcmNoQ29udGV4dDogRWxkZXJTZWFyY2hDb250ZXh0RGlyZWN0aXZlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASG9zdCgpIHByaXZhdGUgbmdNb2RlbDogTmdNb2RlbFxuICApIHtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBMaWZlIEN5Y2xlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZXh0cmFjdGVkTmFtZSA9IHRoaXMuZXh0cmFjdE5hbWUoKTtcblxuICAgIGNvbnNvbGUubG9nKHRoaXMuZXh0cmFjdE5hbWUoKSArIFwifFwiICsgdGhpcy5xdWVyeUtleSArIFwifFwiICsgdGhpcy5yZXNvbHZlUGF0aCk7XG5cbiAgICB0aGlzLnN0YXRlT2JzZXJ2YWJsZSgpLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICB0aGlzLmVtaXRTdGF0ZShzdGF0ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fdW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLl91bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBnZXQgc3RhdGUkKCk6IE9ic2VydmFibGU8U2VhcmNoSW5wdXRTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZS5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgZmlsdGVyKHMgPT4gISFzKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlU25hcHNob3QoKTogU2VhcmNoSW5wdXRTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5xdWVyeUtleSkge1xuICAgICAgcmV0dXJuIHRoaXMucXVlcnlLZXk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9leHRyYWN0ZWROYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZXh0cmFjdGVkTmFtZTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBzZWFyY2ggbmFtZSBrZXkgbmFtZS5cIiArXG4gICAgICBcIiBFaXRoZXIgc3BlY2lmeSB0aGUgbmFtZSBwcm9wZXJ0eSBvciBleHBsaWNpdGx5IHNldCBbZWxkZXJTZWFyY2hJbnB1dEtleV0uXCIpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm5nTW9kZWwudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5nTW9kZWwuaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGhhc0ZhbGxiYWNrKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTZWFyY2hJbnB1dFN0YXRlLmlzVmFsdWVEZWZpbmVkKHRoaXMuZmFsbGJhY2tWYWx1ZSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgc2V0SW5pdGlhbEZpbHRlcihmaWx0ZXJzOiBGaWx0ZXJbXSkge1xuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gdGhpcy5maW5kRmlsdGVyRm9yVGhpc0lucHV0KGZpbHRlcnMpO1xuICAgIGlmIChmaWx0ZXJWYWx1ZSkge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvbnZlcnRRdWVyeVN0cmluZ1RvUmF3TW9kZWxWYWx1ZShmaWx0ZXJWYWx1ZS52YWx1ZSk7XG4gICAgICB0aGlzLmluaXRpYWxWYWx1ZURpcmVjdGl2ZS5zZXRJbml0aWFsVmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLm5nTW9kZWwucmVzZXQoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgZmluZEZpbHRlckZvclRoaXNJbnB1dChmaWx0ZXJzOiBGaWx0ZXJbXSk6IEZpbHRlciB7XG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVycykge1xuICAgICAgaWYgKGZpbHRlci5rZXkgPT09IHRoaXMucXVlcnlLZXkgfHwgZmlsdGVyLmtleSA9PT0gdGhpcy5leHRyYWN0TmFtZSgpKSB7XG4gICAgICAgIHJldHVybiBmaWx0ZXI7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0ZU9ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxTZWFyY2hJbnB1dFN0YXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbFZhbHVlRGlyZWN0aXZlLnZhbHVlQ2hhbmdlcyQucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpLFxuICAgICAgbWFwKHZhbHVlID0+IHtcblxuICAgICAgICBjb25zb2xlLndhcm4odmFsdWUgKyBcInxcIiArIHRoaXMubmFtZSk7XG4gICAgICAgIGNvbnN0IHF1ZXJ5VmFsdWUgPSB0aGlzLmNvbnZlcnRSYXdNb2RlbFZhbHVlVG9RdWVyeVN0cmluZyh2YWx1ZSk7XG4gICAgICAgIGNvbnN0IHByaXN0aW5lID0gIXRoaXMuaXNBdHRyaWJ1dGVWYWx1ZVByZXNlbnQodmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBuZXcgU2VhcmNoSW5wdXRTdGF0ZShcbiAgICAgICAgICB0aGlzLm5hbWUsXG4gICAgICAgICAgcXVlcnlWYWx1ZSxcbiAgICAgICAgICB0aGlzLnF1ZXJ5S2V5IHx8IHRoaXMubmFtZSxcbiAgICAgICAgICBwcmlzdGluZVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0UXVlcnlTdHJpbmdUb1Jhd01vZGVsVmFsdWUocXVlcnlTdHJpbmc6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCkge1xuICAgIGlmIChPYmplY3RzLm5vbk51bGwocXVlcnlTdHJpbmcpKSB7XG4gICAgICByZXR1cm4gcXVlcnlTdHJpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFJhd01vZGVsVmFsdWVUb1F1ZXJ5U3RyaW5nKG1vZGVsOiBhbnkpOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwge1xuXG4gICAgbGV0IHF1ZXJ5VmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAodGhpcy52YWx1ZUFzSWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBxdWVyeVZhbHVlID0gdGhpcy5jaGVja0FuZENvbnZlcnRGYXVsdHlWYWx1ZXNUb051bGwobW9kZWwpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0F0dHJpYnV0ZVZhbHVlUHJlc2VudChtb2RlbCkpIHtcbiAgICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZSBpcyBwcmVzZW50XG4gICAgICBxdWVyeVZhbHVlID0gdGhpcy5yZXNvbHZlVmFsdWUobW9kZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5oYXNGYWxsYmFjaykge1xuICAgICAgICBxdWVyeVZhbHVlID0gdGhpcy5mYWxsYmFja1ZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBxdWVyeVZhbHVlO1xuICB9XG5cbiAgcHVibGljIGVtaXRTdGF0ZShzdGF0ZTogU2VhcmNoSW5wdXRTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlLm5leHQoc3RhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0FuZENvbnZlcnRGYXVsdHlWYWx1ZXNUb051bGwodmFsdWU6IGFueSkge1xuICAgIGxldCBmaXhlZFZhbHVlID0gdmFsdWU7XG4gICAgZml4ZWRWYWx1ZSA9IHRoaXMuY29udmVydEVtcHR5QXJyYXlUb051bGwoZml4ZWRWYWx1ZSk7XG4gICAgZml4ZWRWYWx1ZSA9IHRoaXMuY29udmVydEVtcHR5U3RyaW5nVG9OdWxsKGZpeGVkVmFsdWUpO1xuXG4gICAgcmV0dXJuIGZpeGVkVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRFbXB0eUFycmF5VG9OdWxsKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRFbXB0eVN0cmluZ1RvTnVsbCh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGlzQXR0cmlidXRlVmFsdWVQcmVzZW50KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU2VhcmNoSW5wdXRTdGF0ZS5pc1ZhbHVlRGVmaW5lZCh2YWx1ZSlcbiAgICAgICYmICh2YWx1ZSArIFwiXCIpLmxlbmd0aCAhPT0gMDtcbiAgfVxuXG5cbiAgcHJpdmF0ZSByZXNvbHZlVmFsdWUodmFsdWU6IGFueSk6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCB7XG4gICAgaWYgKE9iamVjdHMubm9uTnVsbCh2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG5cbiAgICAgICAgY29uc3QgcmVzb2x2ZWRWYWx1ZXMgPSB2YWx1ZVxuICAgICAgICAgIC5tYXAodiA9PiB0aGlzLnJlc29sdmVTaW5nbGVWYWx1ZSh2KSlcbiAgICAgICAgICAuZmlsdGVyKHYgPT4gT2JqZWN0cy5ub25OdWxsKHYpKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jb25jYXRJZk5lY2Vzc2FyeShyZXNvbHZlZFZhbHVlcyk7XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVTaW5nbGVWYWx1ZSh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVNpbmdsZVZhbHVlKHZhbHVlOiBhbnkpOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwge1xuICAgIHZhbHVlID0gUHJvcGVydHlQYXRoVXRpbC5yZXNvbHZlVmFsdWUodmFsdWUsIHRoaXMucmVzb2x2ZVBhdGgpO1xuICAgIHZhbHVlID0gdGhpcy52YWx1ZVRyYW5zZm9ybSA/IHRoaXMudmFsdWVUcmFuc2Zvcm0odmFsdWUpIDogdmFsdWU7XG5cblxuICAgIGlmIChPYmplY3RzLm5vbk51bGwodmFsdWUpKSB7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAuZmlsdGVyKGkgPT4gT2JqZWN0cy5ub25OdWxsKGkpKVxuICAgICAgICAgIC5tYXAoaSA9PiBpLnRvU3RyaW5nKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdE5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMubmdNb2RlbC5uYW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25jYXRJZk5lY2Vzc2FyeSh2YWx1ZXM6IChzdHJpbmcgfCBzdHJpbmdbXSlbXSk6IGFueVtdIHtcbiAgICBjb25zdCBhcnJheXMgPSB2YWx1ZXMubWFwKHYgPT4ge1xuICAgICAgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBbdl07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIENvbGxlY3Rpb25VdGlsLmZsYXR0ZW4oYXJyYXlzKTtcbiAgfVxuXG59XG4iXX0=
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvc2VhcmNoL2VsZGVyLXNlYXJjaC1pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFLckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUl2RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7OztBQUV6Rjs7R0FFRztBQUtILE1BQU0sT0FBTyx5QkFBeUI7SUE4Q3BDOzs7O2dGQUk0RTtJQUU1RSxZQUNVLGFBQTBDLEVBQzFDLGVBQWtDLEVBQzFCLE9BQWdCO1FBRnhCLGtCQUFhLEdBQWIsYUFBYSxDQUE2QjtRQUMxQyxvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUFDMUIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQXREbEMsb0dBQW9HO1FBQ25GLDBCQUFxQixHQUFHLElBQUksMEJBQTBCLENBQUMsSUFBSSxDQUFD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R0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzVCLElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRTtnQkFDdEIsT0FBTyxDQUFDLENBQUM7YUFDVjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDWjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OEdBdFJVLHlCQUF5QjtrR0FBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRSxrQkFBa0I7aUJBQzdCOzswQkF3REksSUFBSTs0Q0F6Q0EsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLHFCQUFxQjtnQkFPckIsY0FBYztzQkFEcEIsS0FBSzt1QkFBQywyQkFBMkI7Z0JBUTNCLFdBQVc7c0JBRGpCLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUlsQixVQUFVO3NCQURoQixLQUFLO3VCQUFDLFlBQVk7Z0JBT1osYUFBYTtzQkFEbkIsS0FBSzt1QkFBQywwQkFBMEI7Z0JBSTFCLFNBQVM7c0JBRGYsS0FBSzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSG9zdCwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBMb2dnZXJGYWN0b3J5IH0gZnJvbSBcIkBlbGRlcmJ5dGUvdHMtbG9nZ2VyXCI7XG5pbXBvcnQgeyBFbGRlclNlYXJjaENvbnRleHREaXJlY3RpdmUgfSBmcm9tIFwiLi9lbGRlci1zZWFyY2gtY29udGV4dC5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqcy9pbnRlcm5hbC9PYnNlcnZhYmxlXCI7XG5pbXBvcnQgeyBOZ01vZGVsIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dCB9IGZyb20gXCIuL21vZGVsL3NlYXJjaC1pbnB1dFwiO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgUHJvcGVydHlQYXRoVXRpbCB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vdXRpbHMvcHJvcGVydHktcGF0aC11dGlsXCI7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXRTdGF0ZSB9IGZyb20gXCIuL21vZGVsL3NlYXJjaC1pbnB1dC1zdGF0ZVwiO1xuaW1wb3J0IHsgT2JqZWN0cyB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vb2JqZWN0c1wiO1xuaW1wb3J0IHsgQ29sbGVjdGlvblV0aWwgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL3V0aWxzL2NvbGxlY3Rpb24tdXRpbFwiO1xuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9kYXRhL2ZpbHRlcnMvZmlsdGVyXCI7XG5pbXBvcnQgeyBMb2NhbFBhZ2VkRGF0YVNvdXJjZSB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhc291cmNlL2xvY2FsL2xvY2FsLXBhZ2VkLWRhdGEtc291cmNlXCI7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvZXJjaW9uXCI7XG5pbXBvcnQgeyBFbGRlckluaXRpYWxWYWx1ZURpcmVjdGl2ZSB9IGZyb20gXCIuLi9kaXJlY3RpdmVzL2VsZGVyLWluaXRpYWwtdmFsdWUuZGlyZWN0aXZlXCI7XG5cbi8qKlxuICogU2VhcmNoIG5hbWUgYWRhcHRlciBmb3IgaW5wdXQgY29udHJvbHMuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbZWxkZXJTZWFyY2hJbnB1dF1cIixcbiAgZXhwb3J0QXM6IFwiZWxkZXJTZWFyY2hJbnB1dFwiXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2VhcmNoSW5wdXREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIFNlYXJjaElucHV0IHtcbiAgLy9UT0RPOiBJbiBBbmd1bGFyIDE2LCB1c2Ugc3RhbmRhbG9uZSBkaXJlY3RpdmVzIGFuZCBob3N0IGNvbXBvbmVudCB0byBpbmplY3QgZGlyZWN0aXZlIHRvIGNvbXBvbmVudFxuICBwcml2YXRlIHJlYWRvbmx5IGluaXRpYWxWYWx1ZURpcmVjdGl2ZSA9IG5ldyBFbGRlckluaXRpYWxWYWx1ZURpcmVjdGl2ZSh0aGlzLm5nTW9kZWwpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFVzdWFsbHkgdGhlIGNvbnRyb2wgbmFtZSBpcyB1c2VkLCB0aGlzIGFsbG93cyBhIGN1c3RvbSBxdWVyeSBrZXlcbiAgICovXG4gIEBJbnB1dChcImVsZGVyU2VhcmNoSW5wdXRLZXlcIilcbiAgcHVibGljIHF1ZXJ5S2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgRnVuY3Rpb24gd2hpY2ggdHJhbnNmb3JtcyB0aGUgdmFsdWUgb2JqZWN0IHRvIGEgcXVlcnkgcGFyYW0gdmFsdWVcbiAgICovXG4gIEBJbnB1dChcImVsZGVyU2VhcmNoSW5wdXRUcmFuc2Zvcm1cIilcbiAgcHVibGljIHZhbHVlVHJhbnNmb3JtOiAoKHZhbHVlOiBhbnkpID0+IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCk7XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCwgRGVmYXVsdCkgUGF0aCBvbiB0aGUgdmFsdWUgb2JqZWN0IHRvIHVzZSBhcyBxdWVyeSBwYXJhbSB2YWx1ZVxuICAgKiAgdmFsdWUgPSBcInR5cGUuaWRcIlxuICAgKi9cbiAgQElucHV0KFwiZWxkZXJTZWFyY2hJbnB1dFwiKVxuICBwdWJsaWMgcmVzb2x2ZVBhdGg6IHN0cmluZztcblxuICBASW5wdXQoXCJkYXRhU291cmNlXCIpXG4gIHB1YmxpYyBkYXRhU291cmNlOiBMb2NhbFBhZ2VkRGF0YVNvdXJjZTxhbnk+O1xuXG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFVzZSB0aGlzIHZhbHVlIGZvciB0aGUgcXVlcnkgaWYgbm9uZSBpcyBwcm92aWRlZC5cbiAgICovXG4gIEBJbnB1dChcImVsZGVyU2VhcmNoSW5wdXRGYWxsYmFja1wiKVxuICBwdWJsaWMgZmFsbGJhY2tWYWx1ZTogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgQElucHV0KFwidmFsdWVBc0lkXCIpXG4gIHB1YmxpYyB2YWx1ZUFzSWQ6IEJvb2xlYW5JbnB1dDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VhcmNoSW5wdXRTdGF0ZT4obnVsbCk7XG4gIHByaXZhdGUgX2V4dHJhY3RlZE5hbWU6IHN0cmluZyB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Vuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlYXJjaENvbnRleHQ6IEVsZGVyU2VhcmNoQ29udGV4dERpcmVjdGl2ZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEhvc3QoKSBwcml2YXRlIG5nTW9kZWw6IE5nTW9kZWxcbiAgKSB7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2V4dHJhY3RlZE5hbWUgPSB0aGlzLmV4dHJhY3ROYW1lKCk7XG5cbiAgICBjb25zb2xlLmxvZyh0aGlzLmV4dHJhY3ROYW1lKCkgKyBcInxcIiArIHRoaXMucXVlcnlLZXkgKyBcInxcIiArIHRoaXMucmVzb2x2ZVBhdGgpO1xuXG4gICAgdGhpcy5zdGF0ZU9ic2VydmFibGUoKS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgdGhpcy5lbWl0U3RhdGUoc3RhdGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3Vuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy5fdW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZ2V0IHN0YXRlJCgpOiBPYnNlcnZhYmxlPFNlYXJjaElucHV0U3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgIGZpbHRlcihzID0+ICEhcylcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGF0ZVNuYXBzaG90KCk6IFNlYXJjaElucHV0U3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucXVlcnlLZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLnF1ZXJ5S2V5O1xuICAgIH1cbiAgICBpZiAodGhpcy5fZXh0cmFjdGVkTmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2V4dHJhY3RlZE5hbWU7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGQgbm90IGRldGVybWluZSB0aGUgc2VhcmNoIG5hbWUga2V5IG5hbWUuXCIgK1xuICAgICAgXCIgRWl0aGVyIHNwZWNpZnkgdGhlIG5hbWUgcHJvcGVydHkgb3IgZXhwbGljaXRseSBzZXQgW2VsZGVyU2VhcmNoSW5wdXRLZXldLlwiKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5uZ01vZGVsLnZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCByZWFkb25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uZ01vZGVsLmlzRGlzYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldCBoYXNGYWxsYmFjaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU2VhcmNoSW5wdXRTdGF0ZS5pc1ZhbHVlRGVmaW5lZCh0aGlzLmZhbGxiYWNrVmFsdWUpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHNldEluaXRpYWxGaWx0ZXIoZmlsdGVyczogRmlsdGVyW10pIHtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHRoaXMuZmluZEZpbHRlckZvclRoaXNJbnB1dChmaWx0ZXJzKTtcbiAgICBpZiAoZmlsdGVyVmFsdWUpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jb252ZXJ0UXVlcnlTdHJpbmdUb1Jhd01vZGVsVmFsdWUoZmlsdGVyVmFsdWUudmFsdWUpO1xuICAgICAgdGhpcy5pbml0aWFsVmFsdWVEaXJlY3RpdmUuc2V0SW5pdGlhbFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5uZ01vZGVsLnJlc2V0KCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGZpbmRGaWx0ZXJGb3JUaGlzSW5wdXQoZmlsdGVyczogRmlsdGVyW10pOiBGaWx0ZXIge1xuICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlcnMpIHtcbiAgICAgIGlmIChmaWx0ZXIua2V5ID09PSB0aGlzLnF1ZXJ5S2V5IHx8IGZpbHRlci5rZXkgPT09IHRoaXMuZXh0cmFjdE5hbWUoKSkge1xuICAgICAgICByZXR1cm4gZmlsdGVyO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGVPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8U2VhcmNoSW5wdXRTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxWYWx1ZURpcmVjdGl2ZS52YWx1ZUNoYW5nZXMkLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUkKSxcbiAgICAgIG1hcCh2YWx1ZSA9PiB7XG5cbiAgICAgICAgY29uc3QgcXVlcnlWYWx1ZSA9IHRoaXMuY29udmVydFJhd01vZGVsVmFsdWVUb1F1ZXJ5U3RyaW5nKHZhbHVlKTtcbiAgICAgICAgY29uc3QgcHJpc3RpbmUgPSAhdGhpcy5pc0F0dHJpYnV0ZVZhbHVlUHJlc2VudCh2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBTZWFyY2hJbnB1dFN0YXRlKFxuICAgICAgICAgIHRoaXMubmFtZSxcbiAgICAgICAgICBxdWVyeVZhbHVlLFxuICAgICAgICAgIHRoaXMucXVlcnlLZXkgfHwgdGhpcy5uYW1lLFxuICAgICAgICAgIHByaXN0aW5lXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRRdWVyeVN0cmluZ1RvUmF3TW9kZWxWYWx1ZShxdWVyeVN0cmluZzogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsKSB7XG4gICAgaWYgKE9iamVjdHMubm9uTnVsbChxdWVyeVN0cmluZykpIHtcbiAgICAgIHJldHVybiBxdWVyeVN0cmluZztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0UmF3TW9kZWxWYWx1ZVRvUXVlcnlTdHJpbmcobW9kZWw6IGFueSk6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCB7XG5cbiAgICBsZXQgcXVlcnlWYWx1ZTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsID0gbnVsbDtcblxuICAgIGlmICh0aGlzLnZhbHVlQXNJZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHF1ZXJ5VmFsdWUgPSB0aGlzLmNoZWNrQW5kQ29udmVydEZhdWx0eVZhbHVlc1RvTnVsbChtb2RlbCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQXR0cmlidXRlVmFsdWVQcmVzZW50KG1vZGVsKSkge1xuICAgICAgLy8gQXR0cmlidXRlIHZhbHVlIGlzIHByZXNlbnRcbiAgICAgIHF1ZXJ5VmFsdWUgPSB0aGlzLnJlc29sdmVWYWx1ZShtb2RlbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmhhc0ZhbGxiYWNrKSB7XG4gICAgICAgIHF1ZXJ5VmFsdWUgPSB0aGlzLmZhbGxiYWNrVmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1ZXJ5VmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZW1pdFN0YXRlKHN0YXRlOiBTZWFyY2hJbnB1dFN0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUubmV4dChzdGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQW5kQ29udmVydEZhdWx0eVZhbHVlc1RvTnVsbCh2YWx1ZTogYW55KSB7XG4gICAgbGV0IGZpeGVkVmFsdWUgPSB2YWx1ZTtcbiAgICBmaXhlZFZhbHVlID0gdGhpcy5jb252ZXJ0RW1wdHlBcnJheVRvTnVsbChmaXhlZFZhbHVlKTtcbiAgICBmaXhlZFZhbHVlID0gdGhpcy5jb252ZXJ0RW1wdHlTdHJpbmdUb051bGwoZml4ZWRWYWx1ZSk7XG5cbiAgICByZXR1cm4gZml4ZWRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEVtcHR5QXJyYXlUb051bGwodmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5ICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEVtcHR5U3RyaW5nVG9OdWxsKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNBdHRyaWJ1dGVWYWx1ZVByZXNlbnQodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTZWFyY2hJbnB1dFN0YXRlLmlzVmFsdWVEZWZpbmVkKHZhbHVlKVxuICAgICAgJiYgKHZhbHVlICsgXCJcIikubGVuZ3RoICE9PSAwO1xuICB9XG5cblxuICBwcml2YXRlIHJlc29sdmVWYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsIHtcbiAgICBpZiAoT2JqZWN0cy5ub25OdWxsKHZhbHVlKSkge1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcblxuICAgICAgICBjb25zdCByZXNvbHZlZFZhbHVlcyA9IHZhbHVlXG4gICAgICAgICAgLm1hcCh2ID0+IHRoaXMucmVzb2x2ZVNpbmdsZVZhbHVlKHYpKVxuICAgICAgICAgIC5maWx0ZXIodiA9PiBPYmplY3RzLm5vbk51bGwodikpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNvbmNhdElmTmVjZXNzYXJ5KHJlc29sdmVkVmFsdWVzKTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZVNpbmdsZVZhbHVlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlU2luZ2xlVmFsdWUodmFsdWU6IGFueSk6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCB7XG4gICAgdmFsdWUgPSBQcm9wZXJ0eVBhdGhVdGlsLnJlc29sdmVWYWx1ZSh2YWx1ZSwgdGhpcy5yZXNvbHZlUGF0aCk7XG4gICAgdmFsdWUgPSB0aGlzLnZhbHVlVHJhbnNmb3JtID8gdGhpcy52YWx1ZVRyYW5zZm9ybSh2YWx1ZSkgOiB2YWx1ZTtcblxuXG4gICAgaWYgKE9iamVjdHMubm9uTnVsbCh2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgIC5maWx0ZXIoaSA9PiBPYmplY3RzLm5vbk51bGwoaSkpXG4gICAgICAgICAgLm1hcChpID0+IGkudG9TdHJpbmcoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0TmFtZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5uZ01vZGVsLm5hbWU7XG4gIH1cblxuICBwcml2YXRlIGNvbmNhdElmTmVjZXNzYXJ5KHZhbHVlczogKHN0cmluZyB8IHN0cmluZ1tdKVtdKTogYW55W10ge1xuICAgIGNvbnN0IGFycmF5cyA9IHZhbHVlcy5tYXAodiA9PiB7XG4gICAgICBpZiAodiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFt2XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gQ29sbGVjdGlvblV0aWwuZmxhdHRlbihhcnJheXMpO1xuICB9XG5cbn1cbiJdfQ==
@@ -92,11 +92,11 @@ export class ElderSearchBoxComponent {
92
92
  this.searchModel.reset();
93
93
  }
94
94
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderSearchBoxComponent, deps: [{ token: i1.ElderSearchContextDirective }], target: i0.ɵɵFactoryTarget.Component }); }
95
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ElderSearchBoxComponent, selector: "elder-search-box", inputs: { autoPanel: "autoPanel", name: "name", queryKey: "queryKey", placeholder: "placeholder", label: "label", hint: "hint", autocomplete: "autocomplete", appearance: "appearance", dense: "dense" }, host: { classAttribute: "elder-form-field-host" }, queries: [{ propertyName: "advancedSearch", first: true, predicate: ElderSearchPanelComponent, descendants: true }], viewQueries: [{ propertyName: "search", first: true, predicate: ["search"], descendants: true }], exportAs: ["elderSearchBox"], ngImport: i0, template: "<div class=\"layout-row place-stretch-center full flex\" style=\"overflow: hidden\">\n <mat-form-field\n *ngIf=\"overlayState$ | async as overlayState\"\n [appearance]=\"appearance\"\n class=\"elder-search-box-field flex-auto\" subscriptSizing=\"dynamic\"\n [elderDense]=\"dense\">\n\n <button matPrefix mat-icon-button type=\"button\"\n [elderOverlayTrigger]=\"searchPanel\" (click)=\"blurFocus($event)\"\n >\n <mat-icon>search</mat-icon>\n </button>\n\n <input matInput type=\"text\" [name]=\"name\" [placeholder]=\"placeholder\" #search cdkFocusInitial\n ngModel\n elderSearchInput [elderSearchInputKey]=\"queryKey\" #searchInput=\"elderSearchInput\"\n [autocomplete]=\"(autoPanel && overlayState.hasOverlay) ? 'off' : autocomplete\"\n [elderOverlayOrigin]=\"searchPanel\"\n [elderOverlayTrigger]=\"searchPanel\"\n [elderOverlayTriggerType]=\"'focus'\"\n [elderOverlayTriggerEnabled]=\"autoPanel && overlayState.hasOverlay && (searchInput?.state$ | async)?.pristine\"\n >\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n\n <div class=\"layout-row\" matSuffix *ngIf=\"searchModel.userDefinedAttributes$ | async as userDefinedFilters\">\n\n <button mat-icon-button type=\"button\"\n *ngIf=\"userDefinedFilters.length > 0\"\n (click)=\"clearSearch($event)\"\n name=\"clear\" aria-label=\"Clear\">\n <mat-icon>close</mat-icon>\n </button>\n\n <button mat-icon-button type=\"button\"\n *ngIf=\"overlayState.hasOverlay\" name=\"openPanel\"\n [elderOverlayTrigger]=\"searchPanel\" (click)=\"blurFocus($event)\">\n <mat-icon\n [matBadge]=\"userDefinedFilters.length\"\n matBadgeSize=\"small\"\n [matBadgeOverlap]=\"true\"\n [matBadgeHidden]=\"userDefinedFilters.length == 0\"\n matBadgeColor=\"accent\"\n [color]=\"userDefinedFilters.length > 0 ? 'accent' : undefined\"\n >\n filter_list\n </mat-icon>\n </button>\n </div>\n </mat-form-field>\n</div>\n\n\n<!-- Overlay Panel for advanced search -->\n<elder-overlay #searchPanel=\"elderOverlay\">\n <elder-dialog-panel class=\"elder-search-panel-container\">\n\n <!-- Project the users search inputs here -->\n <ng-content select=\"elder-search-panel\"></ng-content>\n\n <div class=\"layout-row place-between-center\">\n <button mat-raised-button type=\"button\" name=\"clear\"\n (click)=\"clearSearch($event)\">{{'context.reset' | translate}}\n </button>\n\n <button mat-raised-button type=\"button\" name=\"ok\" color=\"primary\"\n (click)=\"searchPanel.closeOverlay()\">Ok\n </button>\n </div>\n </elder-dialog-panel>\n</elder-overlay>\n", styles: [".elder-search-box-field{margin-top:4px;margin-bottom:4px}.elder-search-panel-container{min-width:250px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { 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: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i9.ElderOverlayComponent, selector: "elder-overlay", inputs: ["originX", "originY", "overlayX", "overlayY", "offsetY", "offsetX", "backdrop", "backdropVisible", "origin", "positionStrategy", "overlaySize"], outputs: ["keydownEvents", "attachedChange"], exportAs: ["elderOverlay"] }, { kind: "directive", type: i10.ElderOverlayTriggerDirective, selector: "[elderOverlayTrigger]", inputs: ["elderOverlayTrigger", "elderOverlayTriggerType", "elderOverlayTriggerEnabled"] }, { kind: "directive", type: i11.ElderOverlayOriginDirective, selector: "[elderOverlayOrigin]", inputs: ["elderOverlayOrigin"] }, { kind: "component", type: i12.ElderDialogPanelComponent, selector: "elder-dialog-panel" }, { kind: "directive", type: i13.ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "directive", type: i14.ElderSearchInputDirective, selector: "[elderSearchInput]", inputs: ["elderSearchInputKey", "elderSearchInputTransform", "elderSearchInput", "dataSource", "elderSearchInputFallback", "valueAsId"], exportAs: ["elderSearchInput"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i15.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
95
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ElderSearchBoxComponent, selector: "elder-search-box", inputs: { autoPanel: "autoPanel", name: "name", queryKey: "queryKey", placeholder: "placeholder", label: "label", hint: "hint", autocomplete: "autocomplete", appearance: "appearance", dense: "dense" }, host: { classAttribute: "elder-form-field-host" }, queries: [{ propertyName: "advancedSearch", first: true, predicate: ElderSearchPanelComponent, descendants: true }], viewQueries: [{ propertyName: "search", first: true, predicate: ["search"], descendants: true }], exportAs: ["elderSearchBox"], ngImport: i0, template: "<div class=\"layout-row place-stretch-center full flex\" style=\"overflow: hidden\" elderSearchContext>\n <mat-form-field\n *ngIf=\"overlayState$ | async as overlayState\"\n [appearance]=\"appearance\"\n class=\"elder-search-box-field flex-auto\" subscriptSizing=\"dynamic\"\n [elderDense]=\"dense\">\n\n <button matPrefix mat-icon-button type=\"button\"\n [elderOverlayTrigger]=\"searchPanel\" (click)=\"blurFocus($event)\"\n >\n <mat-icon>search</mat-icon>\n </button>\n\n <input matInput type=\"text\" [name]=\"name\" [placeholder]=\"placeholder\" #search cdkFocusInitial\n ngModel\n elderSearchInput [elderSearchInputKey]=\"queryKey\" #searchInput=\"elderSearchInput\"\n [autocomplete]=\"(autoPanel && overlayState.hasOverlay) ? 'off' : autocomplete\"\n [elderOverlayOrigin]=\"searchPanel\"\n [elderOverlayTrigger]=\"searchPanel\"\n [elderOverlayTriggerType]=\"'focus'\"\n [elderOverlayTriggerEnabled]=\"autoPanel && overlayState.hasOverlay && (searchInput?.state$ | async)?.pristine\"\n >\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n\n <div class=\"layout-row\" matSuffix *ngIf=\"searchModel.userDefinedAttributes$ | async as userDefinedFilters\">\n\n <button mat-icon-button type=\"button\"\n *ngIf=\"userDefinedFilters.length > 0\"\n (click)=\"clearSearch($event)\"\n name=\"clear\" aria-label=\"Clear\">\n <mat-icon>close</mat-icon>\n </button>\n\n <button mat-icon-button type=\"button\"\n *ngIf=\"overlayState.hasOverlay\" name=\"openPanel\"\n [elderOverlayTrigger]=\"searchPanel\" (click)=\"blurFocus($event)\">\n <mat-icon\n [matBadge]=\"userDefinedFilters.length\"\n matBadgeSize=\"small\"\n [matBadgeOverlap]=\"true\"\n [matBadgeHidden]=\"userDefinedFilters.length == 0\"\n matBadgeColor=\"accent\"\n [color]=\"userDefinedFilters.length > 0 ? 'accent' : undefined\"\n >\n filter_list\n </mat-icon>\n </button>\n </div>\n </mat-form-field>\n</div>\n\n\n<!-- Overlay Panel for advanced search -->\n<elder-overlay #searchPanel=\"elderOverlay\">\n <elder-dialog-panel class=\"elder-search-panel-container\">\n\n <!-- Project the users search inputs here -->\n <ng-content select=\"elder-search-panel\"></ng-content>\n\n <div class=\"layout-row place-between-center\">\n <button mat-raised-button type=\"button\" name=\"clear\"\n (click)=\"clearSearch($event)\">{{'context.reset' | translate}}\n </button>\n\n <button mat-raised-button type=\"button\" name=\"ok\" color=\"primary\"\n (click)=\"searchPanel.closeOverlay()\">Ok\n </button>\n </div>\n </elder-dialog-panel>\n</elder-overlay>\n", styles: [".elder-search-box-field{margin-top:4px;margin-bottom:4px}.elder-search-panel-container{min-width:250px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { 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: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i9.ElderOverlayComponent, selector: "elder-overlay", inputs: ["originX", "originY", "overlayX", "overlayY", "offsetY", "offsetX", "backdrop", "backdropVisible", "origin", "positionStrategy", "overlaySize"], outputs: ["keydownEvents", "attachedChange"], exportAs: ["elderOverlay"] }, { kind: "directive", type: i10.ElderOverlayTriggerDirective, selector: "[elderOverlayTrigger]", inputs: ["elderOverlayTrigger", "elderOverlayTriggerType", "elderOverlayTriggerEnabled"] }, { kind: "directive", type: i11.ElderOverlayOriginDirective, selector: "[elderOverlayOrigin]", inputs: ["elderOverlayOrigin"] }, { kind: "component", type: i12.ElderDialogPanelComponent, selector: "elder-dialog-panel" }, { kind: "directive", type: i13.ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "directive", type: i1.ElderSearchContextDirective, selector: "[elderSearchContext]", inputs: ["elderSearchContext", "forcedFilters"], exportAs: ["elderSearchContext"] }, { kind: "directive", type: i14.ElderSearchInputDirective, selector: "[elderSearchInput]", inputs: ["elderSearchInputKey", "elderSearchInputTransform", "elderSearchInput", "dataSource", "elderSearchInputFallback", "valueAsId"], exportAs: ["elderSearchInput"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i15.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
96
96
  }
97
97
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderSearchBoxComponent, decorators: [{
98
98
  type: Component,
99
- args: [{ selector: 'elder-search-box', exportAs: 'elderSearchBox', host: { 'class': 'elder-form-field-host' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-row place-stretch-center full flex\" style=\"overflow: hidden\">\n <mat-form-field\n *ngIf=\"overlayState$ | async as overlayState\"\n [appearance]=\"appearance\"\n class=\"elder-search-box-field flex-auto\" subscriptSizing=\"dynamic\"\n [elderDense]=\"dense\">\n\n <button matPrefix mat-icon-button type=\"button\"\n [elderOverlayTrigger]=\"searchPanel\" (click)=\"blurFocus($event)\"\n >\n <mat-icon>search</mat-icon>\n </button>\n\n <input matInput type=\"text\" [name]=\"name\" [placeholder]=\"placeholder\" #search cdkFocusInitial\n ngModel\n elderSearchInput [elderSearchInputKey]=\"queryKey\" #searchInput=\"elderSearchInput\"\n [autocomplete]=\"(autoPanel && overlayState.hasOverlay) ? 'off' : autocomplete\"\n [elderOverlayOrigin]=\"searchPanel\"\n [elderOverlayTrigger]=\"searchPanel\"\n [elderOverlayTriggerType]=\"'focus'\"\n [elderOverlayTriggerEnabled]=\"autoPanel && overlayState.hasOverlay && (searchInput?.state$ | async)?.pristine\"\n >\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n\n <div class=\"layout-row\" matSuffix *ngIf=\"searchModel.userDefinedAttributes$ | async as userDefinedFilters\">\n\n <button mat-icon-button type=\"button\"\n *ngIf=\"userDefinedFilters.length > 0\"\n (click)=\"clearSearch($event)\"\n name=\"clear\" aria-label=\"Clear\">\n <mat-icon>close</mat-icon>\n </button>\n\n <button mat-icon-button type=\"button\"\n *ngIf=\"overlayState.hasOverlay\" name=\"openPanel\"\n [elderOverlayTrigger]=\"searchPanel\" (click)=\"blurFocus($event)\">\n <mat-icon\n [matBadge]=\"userDefinedFilters.length\"\n matBadgeSize=\"small\"\n [matBadgeOverlap]=\"true\"\n [matBadgeHidden]=\"userDefinedFilters.length == 0\"\n matBadgeColor=\"accent\"\n [color]=\"userDefinedFilters.length > 0 ? 'accent' : undefined\"\n >\n filter_list\n </mat-icon>\n </button>\n </div>\n </mat-form-field>\n</div>\n\n\n<!-- Overlay Panel for advanced search -->\n<elder-overlay #searchPanel=\"elderOverlay\">\n <elder-dialog-panel class=\"elder-search-panel-container\">\n\n <!-- Project the users search inputs here -->\n <ng-content select=\"elder-search-panel\"></ng-content>\n\n <div class=\"layout-row place-between-center\">\n <button mat-raised-button type=\"button\" name=\"clear\"\n (click)=\"clearSearch($event)\">{{'context.reset' | translate}}\n </button>\n\n <button mat-raised-button type=\"button\" name=\"ok\" color=\"primary\"\n (click)=\"searchPanel.closeOverlay()\">Ok\n </button>\n </div>\n </elder-dialog-panel>\n</elder-overlay>\n", styles: [".elder-search-box-field{margin-top:4px;margin-bottom:4px}.elder-search-panel-container{min-width:250px}\n"] }]
99
+ args: [{ selector: 'elder-search-box', exportAs: 'elderSearchBox', host: { 'class': 'elder-form-field-host' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-row place-stretch-center full flex\" style=\"overflow: hidden\" elderSearchContext>\n <mat-form-field\n *ngIf=\"overlayState$ | async as overlayState\"\n [appearance]=\"appearance\"\n class=\"elder-search-box-field flex-auto\" subscriptSizing=\"dynamic\"\n [elderDense]=\"dense\">\n\n <button matPrefix mat-icon-button type=\"button\"\n [elderOverlayTrigger]=\"searchPanel\" (click)=\"blurFocus($event)\"\n >\n <mat-icon>search</mat-icon>\n </button>\n\n <input matInput type=\"text\" [name]=\"name\" [placeholder]=\"placeholder\" #search cdkFocusInitial\n ngModel\n elderSearchInput [elderSearchInputKey]=\"queryKey\" #searchInput=\"elderSearchInput\"\n [autocomplete]=\"(autoPanel && overlayState.hasOverlay) ? 'off' : autocomplete\"\n [elderOverlayOrigin]=\"searchPanel\"\n [elderOverlayTrigger]=\"searchPanel\"\n [elderOverlayTriggerType]=\"'focus'\"\n [elderOverlayTriggerEnabled]=\"autoPanel && overlayState.hasOverlay && (searchInput?.state$ | async)?.pristine\"\n >\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n\n <div class=\"layout-row\" matSuffix *ngIf=\"searchModel.userDefinedAttributes$ | async as userDefinedFilters\">\n\n <button mat-icon-button type=\"button\"\n *ngIf=\"userDefinedFilters.length > 0\"\n (click)=\"clearSearch($event)\"\n name=\"clear\" aria-label=\"Clear\">\n <mat-icon>close</mat-icon>\n </button>\n\n <button mat-icon-button type=\"button\"\n *ngIf=\"overlayState.hasOverlay\" name=\"openPanel\"\n [elderOverlayTrigger]=\"searchPanel\" (click)=\"blurFocus($event)\">\n <mat-icon\n [matBadge]=\"userDefinedFilters.length\"\n matBadgeSize=\"small\"\n [matBadgeOverlap]=\"true\"\n [matBadgeHidden]=\"userDefinedFilters.length == 0\"\n matBadgeColor=\"accent\"\n [color]=\"userDefinedFilters.length > 0 ? 'accent' : undefined\"\n >\n filter_list\n </mat-icon>\n </button>\n </div>\n </mat-form-field>\n</div>\n\n\n<!-- Overlay Panel for advanced search -->\n<elder-overlay #searchPanel=\"elderOverlay\">\n <elder-dialog-panel class=\"elder-search-panel-container\">\n\n <!-- Project the users search inputs here -->\n <ng-content select=\"elder-search-panel\"></ng-content>\n\n <div class=\"layout-row place-between-center\">\n <button mat-raised-button type=\"button\" name=\"clear\"\n (click)=\"clearSearch($event)\">{{'context.reset' | translate}}\n </button>\n\n <button mat-raised-button type=\"button\" name=\"ok\" color=\"primary\"\n (click)=\"searchPanel.closeOverlay()\">Ok\n </button>\n </div>\n </elder-dialog-panel>\n</elder-overlay>\n", styles: [".elder-search-box-field{margin-top:4px;margin-bottom:4px}.elder-search-panel-container{min-width:250px}\n"] }]
100
100
  }], ctorParameters: function () { return [{ type: i1.ElderSearchContextDirective }]; }, propDecorators: { search: [{
101
101
  type: ViewChild,
102
102
  args: ['search']
@@ -122,4 +122,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
122
122
  }], dense: [{
123
123
  type: Input
124
124
  }] } });
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL3NlYXJjaC9zZWFyY2gtYm94L2VsZGVyLXNlYXJjaC1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9zZWFyY2gvc2VhcmNoLWJveC9lbGRlci1zZWFyY2gtYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDNEIsdUJBQXVCLEVBQ3hELFNBQVMsRUFBRSxZQUFZLEVBQ1gsS0FBSyxFQUVqQixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQUk1RCxNQUFNLE9BQU8sWUFBWTtJQUN2QixZQUNTLFVBQW1CO1FBQW5CLGVBQVUsR0FBVixVQUFVLENBQVM7SUFDeEIsQ0FBQztDQUNOO0FBV0QsTUFBTSxPQUFPLHVCQUF1QjtJQXNEbEM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ2tCLFdBQXdDO1FBQXhDLGdCQUFXLEdBQVgsV0FBVyxDQUE2QjtRQTNEMUQ7Ozs7b0ZBSTRFO1FBRTNELFdBQU0sR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEQsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBT3BDLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQWUsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUUzRjs7OztvRkFJNEU7UUFFNUU7O1dBRUc7UUFFSSxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBR2pCLFNBQUksR0FBRyxrQkFBa0IsQ0FBQztRQUcxQixhQUFRLEdBQUcsT0FBTyxDQUFDO1FBV2xCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFHaEIsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFjNUIsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUVyRSxRQUFRO0lBRWYsQ0FBQztJQUVNLGVBQWU7SUFFdEIsQ0FBQztJQUdNLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFNUUsSUFDVyxLQUFLLENBQUMsS0FBYyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLElBQVcsS0FBSyxLQUFjLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFHbkQ7Ozs7Z0ZBSTRFO0lBRXJFLFNBQVMsQ0FBQyxLQUFVO1FBQ3pCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXLENBQUMsS0FBVTtRQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7OEdBbkhVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLGlXQWVwQix5QkFBeUIsZ0xDN0N6Qyw4eEZBc0VBOzsyRkR4Q2EsdUJBQXVCO2tCQVRuQyxTQUFTOytCQUNFLGtCQUFrQixZQUNsQixnQkFBZ0IsUUFJcEIsRUFBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUMsbUJBQ3ZCLHVCQUF1QixDQUFDLE1BQU07a0hBZTFCLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFFc0IsY0FBYztzQkFBdEQsWUFBWTt1QkFBQyx5QkFBeUI7Z0JBY2hDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsS0FBSztzQkFEWCxLQUFLO2dCQUlDLElBQUk7c0JBRFYsS0FBSztnQkFNQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBNkNLLEtBQUs7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvZ2dlckZhY3RvcnkgfSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0VsZGVyU2VhcmNoQ29udGV4dERpcmVjdGl2ZX0gZnJvbSAnLi4vZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlJztcbmltcG9ydCB7RWxkZXJTZWFyY2hQYW5lbENvbXBvbmVudH0gZnJvbSAnLi9lbGRlci1zZWFyY2gtcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRBcHBlYXJhbmNlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcblxuXG5leHBvcnQgY2xhc3MgT3ZlcmxheVN0YXRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGhhc092ZXJsYXk6IGJvb2xlYW5cbiAgKSB7IH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZWxkZXItc2VhcmNoLWJveCcsXG4gIGV4cG9ydEFzOiAnZWxkZXJTZWFyY2hCb3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vZWxkZXItc2VhcmNoLWJveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZGVyLXNlYXJjaC1ib3guY29tcG9uZW50LnNjc3MnXSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XG4gIGhvc3Q6IHsnY2xhc3MnOiAnZWxkZXItZm9ybS1maWVsZC1ob3N0J30sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2VhcmNoQm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLy8gVGhlIHNlYXJjaCBleHByZXNzaW9uIGlucHV0IEVsZW1lbnRcbiAgQFZpZXdDaGlsZCgnc2VhcmNoJykgc2VhcmNoOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoRWxkZXJTZWFyY2hQYW5lbENvbXBvbmVudCkgYWR2YW5jZWRTZWFyY2g6IEVsZGVyU2VhcmNoUGFuZWxDb21wb25lbnQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IG92ZXJsYXlTdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE92ZXJsYXlTdGF0ZT4obmV3IE92ZXJsYXlTdGF0ZShmYWxzZSkpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBEaXNwbGF5IHRoZSBzZWFyY2ggcGFuZWwgaW1tZWRpYXRlbHkgd2hlbiB0aGUgdXNlciBlbnRlcnMgdGhlIHNlYXJjaCBib3guXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXV0b1BhbmVsID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbmFtZSA9ICdzZWFyY2hFeHByZXNzaW9uJztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcXVlcnlLZXkgPSAncXVlcnknO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaW50OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfZGVuc2UgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYXV0b2NvbXBsZXRlID0gJ29mZic7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGFwcGVhcmFuY2U6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2U7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHNlYXJjaE1vZGVsOiBFbGRlclNlYXJjaENvbnRleHREaXJlY3RpdmUsXG4gICkge1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuXG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gIH1cblxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vdmVybGF5U3RhdGUkLm5leHQobmV3IE92ZXJsYXlTdGF0ZSghIXRoaXMuYWR2YW5jZWRTZWFyY2gpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGVuc2UodmFsdWU6IGJvb2xlYW4pIHsgdGhpcy5fZGVuc2UgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gIHB1YmxpYyBnZXQgZGVuc2UoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9kZW5zZTsgfVxuXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGJsdXJGb2N1cyhldmVudDogYW55KTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlYXJjaC5uYXRpdmVFbGVtZW50LmJsdXIoKSwgMCk7XG4gIH1cblxuICAvKipcbiAgICogT2NjdXJzIHdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSBjbGVhciBzZWFyY2ggYnV0dG9uXG4gICAqL1xuICBwdWJsaWMgY2xlYXJTZWFyY2goZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoTW9kZWwucmVzZXQoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG59XG4iLCI8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1zdHJldGNoLWNlbnRlciBmdWxsIGZsZXhcIiBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW5cIj5cbiAgPG1hdC1mb3JtLWZpZWxkXG4gICAgKm5nSWY9XCJvdmVybGF5U3RhdGUkIHwgYXN5bmMgYXMgb3ZlcmxheVN0YXRlXCJcbiAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICBjbGFzcz1cImVsZGVyLXNlYXJjaC1ib3gtZmllbGQgZmxleC1hdXRvXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiXG4gICAgW2VsZGVyRGVuc2VdPVwiZGVuc2VcIj5cblxuICAgIDxidXR0b24gbWF0UHJlZml4IG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtlbGRlck92ZXJsYXlUcmlnZ2VyXT1cInNlYXJjaFBhbmVsXCIgKGNsaWNrKT1cImJsdXJGb2N1cygkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+c2VhcmNoPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIFtuYW1lXT1cIm5hbWVcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiAjc2VhcmNoIGNka0ZvY3VzSW5pdGlhbFxuICAgICAgICAgICBuZ01vZGVsXG4gICAgICAgICAgIGVsZGVyU2VhcmNoSW5wdXQgW2VsZGVyU2VhcmNoSW5wdXRLZXldPVwicXVlcnlLZXlcIiAjc2VhcmNoSW5wdXQ9XCJlbGRlclNlYXJjaElucHV0XCJcbiAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCIoYXV0b1BhbmVsICYmIG92ZXJsYXlTdGF0ZS5oYXNPdmVybGF5KSA/ICdvZmYnIDogYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgW2VsZGVyT3ZlcmxheU9yaWdpbl09XCJzZWFyY2hQYW5lbFwiXG4gICAgICAgICAgIFtlbGRlck92ZXJsYXlUcmlnZ2VyXT1cInNlYXJjaFBhbmVsXCJcbiAgICAgICAgICAgW2VsZGVyT3ZlcmxheVRyaWdnZXJUeXBlXT1cIidmb2N1cydcIlxuICAgICAgICAgICBbZWxkZXJPdmVybGF5VHJpZ2dlckVuYWJsZWRdPVwiYXV0b1BhbmVsICYmIG92ZXJsYXlTdGF0ZS5oYXNPdmVybGF5ICYmIChzZWFyY2hJbnB1dD8uc3RhdGUkIHwgYXN5bmMpPy5wcmlzdGluZVwiXG4gICAgPlxuICAgIDxtYXQtaGludCAqbmdJZj1cImhpbnRcIj57e2hpbnR9fTwvbWF0LWhpbnQ+XG5cbiAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvd1wiIG1hdFN1ZmZpeCAqbmdJZj1cInNlYXJjaE1vZGVsLnVzZXJEZWZpbmVkQXR0cmlidXRlcyQgfCBhc3luYyBhcyB1c2VyRGVmaW5lZEZpbHRlcnNcIj5cblxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICpuZ0lmPVwidXNlckRlZmluZWRGaWx0ZXJzLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2goJGV2ZW50KVwiXG4gICAgICAgICAgICAgIG5hbWU9XCJjbGVhclwiIGFyaWEtbGFiZWw9XCJDbGVhclwiPlxuICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAqbmdJZj1cIm92ZXJsYXlTdGF0ZS5oYXNPdmVybGF5XCIgbmFtZT1cIm9wZW5QYW5lbFwiXG4gICAgICAgICAgICAgIFtlbGRlck92ZXJsYXlUcmlnZ2VyXT1cInNlYXJjaFBhbmVsXCIgKGNsaWNrKT1cImJsdXJGb2N1cygkZXZlbnQpXCI+XG4gICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgIFttYXRCYWRnZV09XCJ1c2VyRGVmaW5lZEZpbHRlcnMubGVuZ3RoXCJcbiAgICAgICAgICBtYXRCYWRnZVNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW21hdEJhZGdlT3ZlcmxhcF09XCJ0cnVlXCJcbiAgICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwidXNlckRlZmluZWRGaWx0ZXJzLmxlbmd0aCA9PSAwXCJcbiAgICAgICAgICBtYXRCYWRnZUNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgICBbY29sb3JdPVwidXNlckRlZmluZWRGaWx0ZXJzLmxlbmd0aCA+IDAgPyAnYWNjZW50JyA6IHVuZGVmaW5lZFwiXG4gICAgICAgID5cbiAgICAgICAgICBmaWx0ZXJfbGlzdFxuICAgICAgICA8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cblxuXG48IS0tIE92ZXJsYXkgUGFuZWwgZm9yIGFkdmFuY2VkIHNlYXJjaCAtLT5cbjxlbGRlci1vdmVybGF5ICNzZWFyY2hQYW5lbD1cImVsZGVyT3ZlcmxheVwiPlxuICA8ZWxkZXItZGlhbG9nLXBhbmVsIGNsYXNzPVwiZWxkZXItc2VhcmNoLXBhbmVsLWNvbnRhaW5lclwiPlxuXG4gICAgPCEtLSBQcm9qZWN0IHRoZSB1c2VycyBzZWFyY2ggaW5wdXRzIGhlcmUgLS0+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZWxkZXItc2VhcmNoLXBhbmVsXCI+PC9uZy1jb250ZW50PlxuXG4gICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2UtYmV0d2Vlbi1jZW50ZXJcIj5cbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIG5hbWU9XCJjbGVhclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclNlYXJjaCgkZXZlbnQpXCI+e3snY29udGV4dC5yZXNldCcgfCB0cmFuc2xhdGV9fVxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIG5hbWU9XCJva1wiIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWFyY2hQYW5lbC5jbG9zZU92ZXJsYXkoKVwiPk9rXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9lbGRlci1kaWFsb2ctcGFuZWw+XG48L2VsZGVyLW92ZXJsYXk+XG4iXX0=
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL3NlYXJjaC9zZWFyY2gtYm94L2VsZGVyLXNlYXJjaC1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9zZWFyY2gvc2VhcmNoLWJveC9lbGRlci1zZWFyY2gtYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDNEIsdUJBQXVCLEVBQ3hELFNBQVMsRUFBRSxZQUFZLEVBQ1gsS0FBSyxFQUVqQixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQUk1RCxNQUFNLE9BQU8sWUFBWTtJQUN2QixZQUNTLFVBQW1CO1FBQW5CLGVBQVUsR0FBVixVQUFVLENBQVM7SUFDeEIsQ0FBQztDQUNOO0FBV0QsTUFBTSxPQUFPLHVCQUF1QjtJQXNEbEM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ2tCLFdBQXdDO1FBQXhDLGdCQUFXLEdBQVgsV0FBVyxDQUE2QjtRQTNEMUQ7Ozs7b0ZBSTRFO1FBRTNELFdBQU0sR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEQsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBT3BDLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQWUsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUUzRjs7OztvRkFJNEU7UUFFNUU7O1dBRUc7UUFFSSxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBR2pCLFNBQUksR0FBRyxrQkFBa0IsQ0FBQztRQUcxQixhQUFRLEdBQUcsT0FBTyxDQUFDO1FBV2xCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFHaEIsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFjNUIsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUVyRSxRQUFRO0lBRWYsQ0FBQztJQUVNLGVBQWU7SUFFdEIsQ0FBQztJQUdNLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFNUUsSUFDVyxLQUFLLENBQUMsS0FBYyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLElBQVcsS0FBSyxLQUFjLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFHbkQ7Ozs7Z0ZBSTRFO0lBRXJFLFNBQVMsQ0FBQyxLQUFVO1FBQ3pCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXLENBQUMsS0FBVTtRQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7OEdBbkhVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLGlXQWVwQix5QkFBeUIsZ0xDN0N6QyxpekZBc0VBOzsyRkR4Q2EsdUJBQXVCO2tCQVRuQyxTQUFTOytCQUNFLGtCQUFrQixZQUNsQixnQkFBZ0IsUUFJcEIsRUFBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUMsbUJBQ3ZCLHVCQUF1QixDQUFDLE1BQU07a0hBZTFCLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFFc0IsY0FBYztzQkFBdEQsWUFBWTt1QkFBQyx5QkFBeUI7Z0JBY2hDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsS0FBSztzQkFEWCxLQUFLO2dCQUlDLElBQUk7c0JBRFYsS0FBSztnQkFNQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBNkNLLEtBQUs7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvZ2dlckZhY3RvcnkgfSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0VsZGVyU2VhcmNoQ29udGV4dERpcmVjdGl2ZX0gZnJvbSAnLi4vZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlJztcbmltcG9ydCB7RWxkZXJTZWFyY2hQYW5lbENvbXBvbmVudH0gZnJvbSAnLi9lbGRlci1zZWFyY2gtcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRBcHBlYXJhbmNlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcblxuXG5leHBvcnQgY2xhc3MgT3ZlcmxheVN0YXRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGhhc092ZXJsYXk6IGJvb2xlYW5cbiAgKSB7IH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZWxkZXItc2VhcmNoLWJveCcsXG4gIGV4cG9ydEFzOiAnZWxkZXJTZWFyY2hCb3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vZWxkZXItc2VhcmNoLWJveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZGVyLXNlYXJjaC1ib3guY29tcG9uZW50LnNjc3MnXSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XG4gIGhvc3Q6IHsnY2xhc3MnOiAnZWxkZXItZm9ybS1maWVsZC1ob3N0J30sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2VhcmNoQm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLy8gVGhlIHNlYXJjaCBleHByZXNzaW9uIGlucHV0IEVsZW1lbnRcbiAgQFZpZXdDaGlsZCgnc2VhcmNoJykgc2VhcmNoOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoRWxkZXJTZWFyY2hQYW5lbENvbXBvbmVudCkgYWR2YW5jZWRTZWFyY2g6IEVsZGVyU2VhcmNoUGFuZWxDb21wb25lbnQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IG92ZXJsYXlTdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE92ZXJsYXlTdGF0ZT4obmV3IE92ZXJsYXlTdGF0ZShmYWxzZSkpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBEaXNwbGF5IHRoZSBzZWFyY2ggcGFuZWwgaW1tZWRpYXRlbHkgd2hlbiB0aGUgdXNlciBlbnRlcnMgdGhlIHNlYXJjaCBib3guXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXV0b1BhbmVsID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbmFtZSA9ICdzZWFyY2hFeHByZXNzaW9uJztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcXVlcnlLZXkgPSAncXVlcnknO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaW50OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfZGVuc2UgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYXV0b2NvbXBsZXRlID0gJ29mZic7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGFwcGVhcmFuY2U6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2U7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHNlYXJjaE1vZGVsOiBFbGRlclNlYXJjaENvbnRleHREaXJlY3RpdmUsXG4gICkge1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuXG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gIH1cblxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vdmVybGF5U3RhdGUkLm5leHQobmV3IE92ZXJsYXlTdGF0ZSghIXRoaXMuYWR2YW5jZWRTZWFyY2gpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGVuc2UodmFsdWU6IGJvb2xlYW4pIHsgdGhpcy5fZGVuc2UgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gIHB1YmxpYyBnZXQgZGVuc2UoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9kZW5zZTsgfVxuXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGJsdXJGb2N1cyhldmVudDogYW55KTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlYXJjaC5uYXRpdmVFbGVtZW50LmJsdXIoKSwgMCk7XG4gIH1cblxuICAvKipcbiAgICogT2NjdXJzIHdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSBjbGVhciBzZWFyY2ggYnV0dG9uXG4gICAqL1xuICBwdWJsaWMgY2xlYXJTZWFyY2goZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoTW9kZWwucmVzZXQoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG59XG4iLCI8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1zdHJldGNoLWNlbnRlciBmdWxsIGZsZXhcIiBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW5cIiBlbGRlclNlYXJjaENvbnRleHQ+XG4gIDxtYXQtZm9ybS1maWVsZFxuICAgICpuZ0lmPVwib3ZlcmxheVN0YXRlJCB8IGFzeW5jIGFzIG92ZXJsYXlTdGF0ZVwiXG4gICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgY2xhc3M9XCJlbGRlci1zZWFyY2gtYm94LWZpZWxkIGZsZXgtYXV0b1wiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIlxuICAgIFtlbGRlckRlbnNlXT1cImRlbnNlXCI+XG5cbiAgICA8YnV0dG9uIG1hdFByZWZpeCBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZWxkZXJPdmVybGF5VHJpZ2dlcl09XCJzZWFyY2hQYW5lbFwiIChjbGljayk9XCJibHVyRm9jdXMoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPG1hdC1pY29uPnNlYXJjaDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbbmFtZV09XCJuYW1lXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgI3NlYXJjaCBjZGtGb2N1c0luaXRpYWxcbiAgICAgICAgICAgbmdNb2RlbFxuICAgICAgICAgICBlbGRlclNlYXJjaElucHV0IFtlbGRlclNlYXJjaElucHV0S2V5XT1cInF1ZXJ5S2V5XCIgI3NlYXJjaElucHV0PVwiZWxkZXJTZWFyY2hJbnB1dFwiXG4gICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiKGF1dG9QYW5lbCAmJiBvdmVybGF5U3RhdGUuaGFzT3ZlcmxheSkgPyAnb2ZmJyA6IGF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgIFtlbGRlck92ZXJsYXlPcmlnaW5dPVwic2VhcmNoUGFuZWxcIlxuICAgICAgICAgICBbZWxkZXJPdmVybGF5VHJpZ2dlcl09XCJzZWFyY2hQYW5lbFwiXG4gICAgICAgICAgIFtlbGRlck92ZXJsYXlUcmlnZ2VyVHlwZV09XCInZm9jdXMnXCJcbiAgICAgICAgICAgW2VsZGVyT3ZlcmxheVRyaWdnZXJFbmFibGVkXT1cImF1dG9QYW5lbCAmJiBvdmVybGF5U3RhdGUuaGFzT3ZlcmxheSAmJiAoc2VhcmNoSW5wdXQ/LnN0YXRlJCB8IGFzeW5jKT8ucHJpc3RpbmVcIlxuICAgID5cbiAgICA8bWF0LWhpbnQgKm5nSWY9XCJoaW50XCI+e3toaW50fX08L21hdC1oaW50PlxuXG4gICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3dcIiBtYXRTdWZmaXggKm5nSWY9XCJzZWFyY2hNb2RlbC51c2VyRGVmaW5lZEF0dHJpYnV0ZXMkIHwgYXN5bmMgYXMgdXNlckRlZmluZWRGaWx0ZXJzXCI+XG5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAqbmdJZj1cInVzZXJEZWZpbmVkRmlsdGVycy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VhcmNoKCRldmVudClcIlxuICAgICAgICAgICAgICBuYW1lPVwiY2xlYXJcIiBhcmlhLWxhYmVsPVwiQ2xlYXJcIj5cbiAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJvdmVybGF5U3RhdGUuaGFzT3ZlcmxheVwiIG5hbWU9XCJvcGVuUGFuZWxcIlxuICAgICAgICAgICAgICBbZWxkZXJPdmVybGF5VHJpZ2dlcl09XCJzZWFyY2hQYW5lbFwiIChjbGljayk9XCJibHVyRm9jdXMoJGV2ZW50KVwiPlxuICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICBbbWF0QmFkZ2VdPVwidXNlckRlZmluZWRGaWx0ZXJzLmxlbmd0aFwiXG4gICAgICAgICAgbWF0QmFkZ2VTaXplPVwic21hbGxcIlxuICAgICAgICAgIFttYXRCYWRnZU92ZXJsYXBdPVwidHJ1ZVwiXG4gICAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cInVzZXJEZWZpbmVkRmlsdGVycy5sZW5ndGggPT0gMFwiXG4gICAgICAgICAgbWF0QmFkZ2VDb2xvcj1cImFjY2VudFwiXG4gICAgICAgICAgW2NvbG9yXT1cInVzZXJEZWZpbmVkRmlsdGVycy5sZW5ndGggPiAwID8gJ2FjY2VudCcgOiB1bmRlZmluZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgZmlsdGVyX2xpc3RcbiAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9kaXY+XG5cblxuPCEtLSBPdmVybGF5IFBhbmVsIGZvciBhZHZhbmNlZCBzZWFyY2ggLS0+XG48ZWxkZXItb3ZlcmxheSAjc2VhcmNoUGFuZWw9XCJlbGRlck92ZXJsYXlcIj5cbiAgPGVsZGVyLWRpYWxvZy1wYW5lbCBjbGFzcz1cImVsZGVyLXNlYXJjaC1wYW5lbC1jb250YWluZXJcIj5cblxuICAgIDwhLS0gUHJvamVjdCB0aGUgdXNlcnMgc2VhcmNoIGlucHV0cyBoZXJlIC0tPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImVsZGVyLXNlYXJjaC1wYW5lbFwiPjwvbmctY29udGVudD5cblxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtcm93IHBsYWNlLWJldHdlZW4tY2VudGVyXCI+XG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBuYW1lPVwiY2xlYXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2goJGV2ZW50KVwiPnt7J2NvbnRleHQucmVzZXQnIHwgdHJhbnNsYXRlfX1cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBuYW1lPVwib2tcIiBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VhcmNoUGFuZWwuY2xvc2VPdmVybGF5KClcIj5Pa1xuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZWxkZXItZGlhbG9nLXBhbmVsPlxuPC9lbGRlci1vdmVybGF5PlxuIl19