@esfaenza/es-table 11.2.121 → 11.2.123-beta1

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.
Files changed (41) hide show
  1. package/bundles/esfaenza-es-table.umd.js +443 -235
  2. package/bundles/esfaenza-es-table.umd.js.map +1 -1
  3. package/bundles/esfaenza-es-table.umd.min.js +1 -1
  4. package/bundles/esfaenza-es-table.umd.min.js.map +1 -1
  5. package/esfaenza-es-table.d.ts +8 -4
  6. package/esfaenza-es-table.metadata.json +1 -1
  7. package/esm2015/esfaenza-es-table.js +9 -5
  8. package/esm2015/lib/components/es-table/es_table.component.js +126 -49
  9. package/esm2015/lib/components/es-td/es_td.component.js +10 -52
  10. package/esm2015/lib/components/es-th/es_th.component.js +2 -2
  11. package/esm2015/lib/components/pipes/est-renderer.pipe.js +36 -0
  12. package/esm2015/lib/components/pipes/est-routerlink.pipe.js +37 -0
  13. package/esm2015/lib/components/pipes/est_editor.pipe.js +36 -0
  14. package/esm2015/lib/core/CopyPasteDetector.js +4 -2
  15. package/esm2015/lib/core/Logger.js +23 -0
  16. package/esm2015/lib/core/handlers/ColumnMetadataHandler.js +14 -12
  17. package/esm2015/lib/core/handlers/DynamicModeHandler.js +59 -37
  18. package/esm2015/lib/core/handlers/ExportHandler.js +2 -2
  19. package/esm2015/lib/core/handlers/SelectionHandler.js +46 -50
  20. package/esm2015/lib/core/handlers/UtilitiesHandler.js +2 -5
  21. package/esm2015/lib/directives/es_th.directive.js +9 -2
  22. package/esm2015/lib/domain/externals/EsTableColumnsDefinition.js +7 -4
  23. package/esm2015/lib/domain/externals/ItemPropEditableReference.js +1 -1
  24. package/esm2015/lib/domain/internals/EsTableColumn.js +2 -2
  25. package/esm2015/lib/es-table.module.js +42 -19
  26. package/fesm2015/esfaenza-es-table.js +422 -223
  27. package/fesm2015/esfaenza-es-table.js.map +1 -1
  28. package/lib/components/es-table/es_table.component.d.ts +28 -8
  29. package/lib/components/es-td/es_td.component.d.ts +6 -34
  30. package/lib/components/pipes/est-renderer.pipe.d.ts +12 -0
  31. package/lib/components/pipes/est-routerlink.pipe.d.ts +17 -0
  32. package/lib/components/pipes/est_editor.pipe.d.ts +12 -0
  33. package/lib/core/Logger.d.ts +7 -0
  34. package/lib/core/handlers/DynamicModeHandler.d.ts +11 -23
  35. package/lib/core/handlers/SelectionHandler.d.ts +16 -3
  36. package/lib/core/handlers/UtilitiesHandler.d.ts +4 -1
  37. package/lib/directives/es_th.directive.d.ts +25 -0
  38. package/lib/domain/externals/EsTableColumnsDefinition.d.ts +5 -9
  39. package/lib/domain/externals/ItemPropEditableReference.d.ts +4 -0
  40. package/lib/domain/internals/EsTableColumn.d.ts +3 -1
  41. package/package.json +2 -2
@@ -1,3 +1,6 @@
1
+ import { EsTdDirective } from "../../directives/es_td.directive";
2
+ import { EsThDirective } from "../../directives/es_th.directive";
3
+ // Dominio
1
4
  import { EsTableColumnsDefinition } from "../../domain/externals/EsTableColumnsDefinition";
2
5
  /** Classe contenente le gestioni particolari della modalità dinamica dell'es-table */
3
6
  export class DynamicModeHandler {
@@ -5,42 +8,6 @@ export class DynamicModeHandler {
5
8
  constructor(est) {
6
9
  this.est = est;
7
10
  }
8
- /**
9
- * Metodo di supporto alla creazione di un router link parametrizzato all'oggetto corrente utilizzato nella modalità dinamica
10
- *
11
- * @param {string} path Path su cui navigare con eventuali parametri riferiti all'oggetto cotnestuale come {0}, {1}, ecc...
12
- * @param {string[]} parameterProps Lista posizionale delle proprietà a cui bindare i riferimenti del parametro **path**
13
- * Es. Il valore dela proprietà all'indice 0 di questo array verrà sostituita al valore {0} del parametro **path**
14
- * @param {GenericItem} item Oggetto generico collegato a questo contesto
15
- *
16
- * @returns {any} Router link generato in base al parametri
17
- */
18
- generateRouterLink(path, parameterProps, item) {
19
- if (this.est.DynamicTableRouterLinkCache[item._hash + path]) {
20
- return this.est.DynamicTableRouterLinkCache[item._hash + path];
21
- }
22
- else {
23
- let link = this.getRouterLink(path, parameterProps, item);
24
- this.est.DynamicTableRouterLinkCache[item._hash + path] = link;
25
- return link;
26
- }
27
- }
28
- /**
29
- * Crea un router link
30
- *
31
- * @param {string} path Path su cui navigare con eventuali parametri riferiti all'oggetto cotnestuale come {0}, {1}, ecc...
32
- * @param {string[]} pars Lista posizionale delle proprietà a cui bindare i riferimenti del parametro **path**
33
- * Es. Il valore dela proprietà all'indice 0 di questo array verrà sostituita al valore {0} del parametro **path**
34
- * @param {GenericItem} item Oggetto generico collegato a questo contesto
35
- *
36
- * @returns {any} Router link generato in base al parametri
37
- */
38
- getRouterLink(path, pars, item) {
39
- for (let i = 0; i < pars.length; i++)
40
- path = path.replace('{' + i + '}', item.properties[pars[i]]);
41
- path = path.replace(/'/g, '"').replace(/ /g, '');
42
- return JSON.parse(path);
43
- }
44
11
  /** Se non ho l'Input **DynamicRowColumnsDefinition** in modalità dinamica lo riempio con il default nome della colonna = testo della colonna */
45
12
  eventuallyReviewDynamicColumns() {
46
13
  // Senza oggetti esco
@@ -59,5 +26,60 @@ export class DynamicModeHandler {
59
26
  else
60
27
  this.est.UserDefinedDynamicCols = true;
61
28
  }
29
+ /** Genera partendo dalle **DynamicRowColumnsDefinition** la lista di **EsThDirective** e **EsTdDirective** che servono per la tabella */
30
+ emitThsAndTdsBasedOnDynamicDefinition() {
31
+ // Senza dynamic columns esco
32
+ if (!this.est.DynamicRowColumnsDefinition || this.est.DynamicRowColumnsDefinition.length == 0)
33
+ return null;
34
+ let ths = [];
35
+ let tds = [];
36
+ for (let i = 0; i < this.est.DynamicRowColumnsDefinition.length; i++) {
37
+ let col = this.est.DynamicRowColumnsDefinition[i];
38
+ ths.push(this.getTh(col));
39
+ tds.push(this.getTd(col));
40
+ }
41
+ return { ths, tds };
42
+ }
43
+ /** @ignore Helper */
44
+ getTh(col) {
45
+ var ret = new EsThDirective(null);
46
+ ret.th = col.PropertyName;
47
+ ret.thPinned = col.Pinned;
48
+ ret.thPinnable = col.Pinnable;
49
+ ret.thPinnedWidth = col.PinnedWidth;
50
+ ret.thVisible = col.Visible;
51
+ ret.thOrder = col.DataOrder;
52
+ ret.thOrderable = col.Orderable;
53
+ ret.thWrap = col.HeaderWraps;
54
+ ret.thClass = col.Clss;
55
+ ret.thProperty = col.PropertyName;
56
+ ret.thType = col.PropertyType;
57
+ ret.thSource = col.PropertySource;
58
+ ret.thEditorName = col.EditorName;
59
+ ret.thEditorOptions = col.EditorOptions;
60
+ ret.thRendererName = col.RendererName;
61
+ ret.thRoutePath = col.RoutePath;
62
+ ret.thRouteParameterProperties = col.RouteParameterProperties;
63
+ //ret.thFixed = col.Fixed;
64
+ //ret.thResizable = col.Resizable;
65
+ //ret.thGroupClass = col.GroupClass;
66
+ //ret.thGroup = col.Group;
67
+ //ret.thAggregation = col.Aggregation;
68
+ //ret.thMulti = col.Multi;
69
+ //ret.thStaticContent = col.StaticContent;
70
+ //ret.thBackgroundColor = col.BackgroundColor;
71
+ //ret.thAlignment = col.Alignment;
72
+ //ret.thFormat = col.Format;
73
+ return ret;
74
+ }
75
+ /** @ignore Helper */
76
+ getTd(col) {
77
+ var ret = new EsTdDirective(null);
78
+ ret.td = col.PropertyName;
79
+ ret.tdClass = col.Clss;
80
+ //ret.tdAlignment = col.Alignment;
81
+ //ret.tdFormat = col.Format;
82
+ return ret;
83
+ }
62
84
  }
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY01vZGVIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtdGFibGUvc3JjL2xpYi9jb3JlL2hhbmRsZXJzL0R5bmFtaWNNb2RlSGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUUzRixzRkFBc0Y7QUFDdEYsTUFBTSxPQUFPLGtCQUFrQjtJQUUzQix5QkFBeUI7SUFDekIsWUFBb0IsR0FBcUI7UUFBckIsUUFBRyxHQUFILEdBQUcsQ0FBa0I7SUFBSSxDQUFDO0lBRTlDOzs7Ozs7Ozs7T0FTRztJQUNJLGtCQUFrQixDQUFDLElBQVksRUFBRSxjQUF3QixFQUFFLElBQWlCO1FBQy9FLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFO1lBQ3pELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQ2xFO2FBQU07WUFDSCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztZQUMvRCxPQUFPLElBQUksQ0FBQztTQUNmO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNLLGFBQWEsQ0FBQyxJQUFZLEVBQUUsSUFBYyxFQUFFLElBQWlCO1FBRWpFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtZQUNoQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakUsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxnSkFBZ0o7SUFDekksOEJBQThCO1FBQ2pDLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsTUFBTSxJQUFJLENBQUM7WUFDL0QsT0FBTztRQUVYLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLDJCQUEyQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNwSSxPQUFPO1FBRVgsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsRUFBRTtZQUM3RixJQUFJLEtBQUssR0FBMkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDN0UsSUFBSSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsR0FBRyxFQUFFLENBQUM7WUFDMUMsS0FBSyxJQUFJLEdBQUcsSUFBSSxLQUFLO2dCQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxJQUFJLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3RGLElBQUksQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO1NBQzNDOztZQUdHLElBQUksQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO0lBQy9DLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvbXBvbmVudGlcclxuaW1wb3J0IHsgRXNUYWJsZUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL2VzLXRhYmxlL2VzX3RhYmxlLmNvbXBvbmVudFwiXHJcblxyXG4vLyBEb21pbmlvXHJcbmltcG9ydCB7IEdlbmVyaWNJdGVtIH0gZnJvbSBcIi4uLy4uL2RvbWFpbi9leHRlcm5hbHMvYXBwc2VhcmNoL0dlbmVyaWNJdGVtXCI7XHJcbmltcG9ydCB7IEVzVGFibGVDb2x1bW5zRGVmaW5pdGlvbiB9IGZyb20gXCIuLi8uLi9kb21haW4vZXh0ZXJuYWxzL0VzVGFibGVDb2x1bW5zRGVmaW5pdGlvblwiO1xyXG5cclxuLyoqIENsYXNzZSBjb250ZW5lbnRlIGxlIGdlc3Rpb25pIHBhcnRpY29sYXJpIGRlbGxhIG1vZGFsaXTDoCBkaW5hbWljYSBkZWxsJ2VzLXRhYmxlICovXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljTW9kZUhhbmRsZXIge1xyXG5cclxuICAgIC8qKiBAaWdub3JlIENvc3RydXR0b3JlKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZXN0OiBFc1RhYmxlQ29tcG9uZW50KSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBkaSBzdXBwb3J0byBhbGxhIGNyZWF6aW9uZSBkaSB1biByb3V0ZXIgbGluayBwYXJhbWV0cml6emF0byBhbGwnb2dnZXR0byBjb3JyZW50ZSB1dGlsaXp6YXRvIG5lbGxhIG1vZGFsaXTDoCBkaW5hbWljYVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFBhdGggc3UgY3VpIG5hdmlnYXJlIGNvbiBldmVudHVhbGkgcGFyYW1ldHJpIHJpZmVyaXRpIGFsbCdvZ2dldHRvIGNvdG5lc3R1YWxlIGNvbWUgezB9LCB7MX0sIGVjYy4uLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGFyYW1ldGVyUHJvcHMgTGlzdGEgcG9zaXppb25hbGUgZGVsbGUgcHJvcHJpZXTDoCBhIGN1aSBiaW5kYXJlIGkgcmlmZXJpbWVudGkgZGVsIHBhcmFtZXRybyAqKnBhdGgqKlxyXG4gICAgICogRXMuIElsIHZhbG9yZSBkZWxhIHByb3ByaWV0w6AgYWxsJ2luZGljZSAwIGRpIHF1ZXN0byBhcnJheSB2ZXJyw6Agc29zdGl0dWl0YSBhbCB2YWxvcmUgezB9IGRlbCBwYXJhbWV0cm8gKipwYXRoKipcclxuICAgICAqIEBwYXJhbSB7R2VuZXJpY0l0ZW19IGl0ZW0gT2dnZXR0byBnZW5lcmljbyBjb2xsZWdhdG8gYSBxdWVzdG8gY29udGVzdG9cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyB7YW55fSBSb3V0ZXIgbGluayBnZW5lcmF0byBpbiBiYXNlIGFsIHBhcmFtZXRyaVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2VuZXJhdGVSb3V0ZXJMaW5rKHBhdGg6IHN0cmluZywgcGFyYW1ldGVyUHJvcHM6IHN0cmluZ1tdLCBpdGVtOiBHZW5lcmljSXRlbSk6IGFueSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZXN0LkR5bmFtaWNUYWJsZVJvdXRlckxpbmtDYWNoZVtpdGVtLl9oYXNoICsgcGF0aF0pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXN0LkR5bmFtaWNUYWJsZVJvdXRlckxpbmtDYWNoZVtpdGVtLl9oYXNoICsgcGF0aF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IGxpbmsgPSB0aGlzLmdldFJvdXRlckxpbmsocGF0aCwgcGFyYW1ldGVyUHJvcHMsIGl0ZW0pO1xyXG4gICAgICAgICAgICB0aGlzLmVzdC5EeW5hbWljVGFibGVSb3V0ZXJMaW5rQ2FjaGVbaXRlbS5faGFzaCArIHBhdGhdID0gbGluaztcclxuICAgICAgICAgICAgcmV0dXJuIGxpbms7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYSB1biByb3V0ZXIgbGlua1xyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFBhdGggc3UgY3VpIG5hdmlnYXJlIGNvbiBldmVudHVhbGkgcGFyYW1ldHJpIHJpZmVyaXRpIGFsbCdvZ2dldHRvIGNvdG5lc3R1YWxlIGNvbWUgezB9LCB7MX0sIGVjYy4uLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGFycyBMaXN0YSBwb3NpemlvbmFsZSBkZWxsZSBwcm9wcmlldMOgIGEgY3VpIGJpbmRhcmUgaSByaWZlcmltZW50aSBkZWwgcGFyYW1ldHJvICoqcGF0aCoqXHJcbiAgICAgKiBFcy4gSWwgdmFsb3JlIGRlbGEgcHJvcHJpZXTDoCBhbGwnaW5kaWNlIDAgZGkgcXVlc3RvIGFycmF5IHZlcnLDoCBzb3N0aXR1aXRhIGFsIHZhbG9yZSB7MH0gZGVsIHBhcmFtZXRybyAqKnBhdGgqKlxyXG4gICAgICogQHBhcmFtIHtHZW5lcmljSXRlbX0gaXRlbSBPZ2dldHRvIGdlbmVyaWNvIGNvbGxlZ2F0byBhIHF1ZXN0byBjb250ZXN0b1xyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHthbnl9IFJvdXRlciBsaW5rIGdlbmVyYXRvIGluIGJhc2UgYWwgcGFyYW1ldHJpXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0Um91dGVyTGluayhwYXRoOiBzdHJpbmcsIHBhcnM6IHN0cmluZ1tdLCBpdGVtOiBHZW5lcmljSXRlbSk6IGFueSB7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFycy5sZW5ndGg7IGkrKylcclxuICAgICAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgneycgKyBpICsgJ30nLCBpdGVtLnByb3BlcnRpZXNbcGFyc1tpXV0pO1xyXG5cclxuICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKC8nL2csICdcIicpLnJlcGxhY2UoLyAvZywgJycpO1xyXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHBhdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBTZSBub24gaG8gbCdJbnB1dCAqKkR5bmFtaWNSb3dDb2x1bW5zRGVmaW5pdGlvbioqIGluIG1vZGFsaXTDoCBkaW5hbWljYSBsbyByaWVtcGlvIGNvbiBpbCBkZWZhdWx0IG5vbWUgZGVsbGEgY29sb25uYSA9IHRlc3RvIGRlbGxhIGNvbG9ubmEgKi9cclxuICAgIHB1YmxpYyBldmVudHVhbGx5UmV2aWV3RHluYW1pY0NvbHVtbnMoKSB7XHJcbiAgICAgICAgLy8gU2VuemEgb2dnZXR0aSBlc2NvXHJcbiAgICAgICAgaWYgKCF0aGlzLmVzdC5UTVBCb3VuZFNvdXJjZSB8fCB0aGlzLmVzdC5UTVBCb3VuZFNvdXJjZS5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICB2YXIgdXNlR2VuZXJpY0l0ZW1zID0gISF0aGlzLmVzdC5UTVBCb3VuZFNvdXJjZVswXVtcInByb3BlcnRpZXNcIl07XHJcbiAgICAgICAgaWYgKCF1c2VHZW5lcmljSXRlbXMgfHwgKCF0aGlzLmVzdC5GaXJzdEJpbmQgJiYgdGhpcy5lc3QuRHluYW1pY1Jvd0NvbHVtbnNEZWZpbml0aW9uICYmIHRoaXMuZXN0LkR5bmFtaWNSb3dDb2x1bW5zRGVmaW5pdGlvbi5sZW5ndGggPiAwKSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBpZiAoKCF0aGlzLmVzdC5EeW5hbWljUm93Q29sdW1uc0RlZmluaXRpb24gfHwgdGhpcy5lc3QuRHluYW1pY1Jvd0NvbHVtbnNEZWZpbml0aW9uLmxlbmd0aCA9PSAwKSkge1xyXG4gICAgICAgICAgICB2YXIgcHJvcHMgPSA8UmVjb3JkPHN0cmluZywgc3RyaW5nPj50aGlzLmVzdC5UTVBCb3VuZFNvdXJjZVswXVtcInByb3BlcnRpZXNcIl07XHJcbiAgICAgICAgICAgIHRoaXMuZXN0LkR5bmFtaWNSb3dDb2x1bW5zRGVmaW5pdGlvbiA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gcHJvcHMpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVzdC5EeW5hbWljUm93Q29sdW1uc0RlZmluaXRpb24ucHVzaChuZXcgRXNUYWJsZUNvbHVtbnNEZWZpbml0aW9uKGtleSwga2V5KSk7XHJcbiAgICAgICAgICAgIHRoaXMuZXN0LlVzZXJEZWZpbmVkRHluYW1pY0NvbHMgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5lc3QuVXNlckRlZmluZWREeW5hbWljQ29scyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY01vZGVIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtdGFibGUvc3JjL2xpYi9jb3JlL2hhbmRsZXJzL0R5bmFtaWNNb2RlSGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWpFLFVBQVU7QUFDVixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUUzRixzRkFBc0Y7QUFDdEYsTUFBTSxPQUFPLGtCQUFrQjtJQUUzQix5QkFBeUI7SUFDekIsWUFBb0IsR0FBcUI7UUFBckIsUUFBRyxHQUFILEdBQUcsQ0FBa0I7SUFBSSxDQUFDO0lBRTlDLGdKQUFnSjtJQUN6SSw4QkFBOEI7UUFDakMscUJBQXFCO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxNQUFNLElBQUksQ0FBQztZQUMvRCxPQUFPO1FBRVgsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsMkJBQTJCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ3BJLE9BQU87UUFFWCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLDJCQUEyQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsTUFB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QywwQkFBMEIsR0FBRyxHQUFHLENBQUMsd0JBQXdCLENBQUM7UUFFOUQsMEJBQTBCO1FBQzFCLGtDQUFrQztRQUNsQyxvQ0FBb0M7UUFDcEMsMEJBQTBCO1FBQzFCLHNDQUFzQztRQUN0QywwQkFBMEI7UUFDMUIsMENBQTBDO1FBQzFDLDhDQUE4QztRQUM5QyxrQ0FBa0M7UUFDbEMsNEJBQTRCO1FBQzVCLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVELHFCQUFxQjtJQUNiLEtBQUssQ0FBQyxHQUE2QjtRQUN2QyxJQUFJLEdBQUcsR0FBRyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUM7UUFDMUIsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLGtDQUFrQztRQUNsQyw0QkFBNEI7UUFDNUIsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb21wb25lbnRpXHJcbmltcG9ydCB7IEVzVGFibGVDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9lcy10YWJsZS9lc190YWJsZS5jb21wb25lbnRcIlxyXG5pbXBvcnQgeyBFc1RkRGlyZWN0aXZlIH0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvZXNfdGQuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7IEVzVGhEaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlcy9lc190aC5kaXJlY3RpdmVcIjtcclxuXHJcbi8vIERvbWluaW9cclxuaW1wb3J0IHsgRXNUYWJsZUNvbHVtbnNEZWZpbml0aW9uIH0gZnJvbSBcIi4uLy4uL2RvbWFpbi9leHRlcm5hbHMvRXNUYWJsZUNvbHVtbnNEZWZpbml0aW9uXCI7XHJcblxyXG4vKiogQ2xhc3NlIGNvbnRlbmVudGUgbGUgZ2VzdGlvbmkgcGFydGljb2xhcmkgZGVsbGEgbW9kYWxpdMOgIGRpbmFtaWNhIGRlbGwnZXMtdGFibGUgKi9cclxuZXhwb3J0IGNsYXNzIER5bmFtaWNNb2RlSGFuZGxlciB7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgQ29zdHJ1dHRvcmUqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlc3Q6IEVzVGFibGVDb21wb25lbnQpIHsgfVxyXG5cclxuICAgIC8qKiBTZSBub24gaG8gbCdJbnB1dCAqKkR5bmFtaWNSb3dDb2x1bW5zRGVmaW5pdGlvbioqIGluIG1vZGFsaXTDoCBkaW5hbWljYSBsbyByaWVtcGlvIGNvbiBpbCBkZWZhdWx0IG5vbWUgZGVsbGEgY29sb25uYSA9IHRlc3RvIGRlbGxhIGNvbG9ubmEgKi9cclxuICAgIHB1YmxpYyBldmVudHVhbGx5UmV2aWV3RHluYW1pY0NvbHVtbnMoKSB7XHJcbiAgICAgICAgLy8gU2VuemEgb2dnZXR0aSBlc2NvXHJcbiAgICAgICAgaWYgKCF0aGlzLmVzdC5UTVBCb3VuZFNvdXJjZSB8fCB0aGlzLmVzdC5UTVBCb3VuZFNvdXJjZS5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICB2YXIgdXNlR2VuZXJpY0l0ZW1zID0gISF0aGlzLmVzdC5UTVBCb3VuZFNvdXJjZVswXVtcInByb3BlcnRpZXNcIl07XHJcbiAgICAgICAgaWYgKCF1c2VHZW5lcmljSXRlbXMgfHwgKCF0aGlzLmVzdC5GaXJzdEJpbmQgJiYgdGhpcy5lc3QuRHluYW1pY1Jvd0NvbHVtbnNEZWZpbml0aW9uICYmIHRoaXMuZXN0LkR5bmFtaWNSb3dDb2x1bW5zRGVmaW5pdGlvbi5sZW5ndGggPiAwKSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBpZiAoKCF0aGlzLmVzdC5EeW5hbWljUm93Q29sdW1uc0RlZmluaXRpb24gfHwgdGhpcy5lc3QuRHluYW1pY1Jvd0NvbHVtbnNEZWZpbml0aW9uLmxlbmd0aCA9PSAwKSkge1xyXG4gICAgICAgICAgICB2YXIgcHJvcHMgPSA8UmVjb3JkPHN0cmluZywgc3RyaW5nPj50aGlzLmVzdC5UTVBCb3VuZFNvdXJjZVswXVtcInByb3BlcnRpZXNcIl07XHJcbiAgICAgICAgICAgIHRoaXMuZXN0LkR5bmFtaWNSb3dDb2x1bW5zRGVmaW5pdGlvbiA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gcHJvcHMpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVzdC5EeW5hbWljUm93Q29sdW1uc0RlZmluaXRpb24ucHVzaChuZXcgRXNUYWJsZUNvbHVtbnNEZWZpbml0aW9uKGtleSwga2V5KSk7XHJcbiAgICAgICAgICAgIHRoaXMuZXN0LlVzZXJEZWZpbmVkRHluYW1pY0NvbHMgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmVzdC5Vc2VyRGVmaW5lZER5bmFtaWNDb2xzID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogR2VuZXJhIHBhcnRlbmRvIGRhbGxlICoqRHluYW1pY1Jvd0NvbHVtbnNEZWZpbml0aW9uKiogbGEgbGlzdGEgZGkgKipFc1RoRGlyZWN0aXZlKiogZSAqKkVzVGREaXJlY3RpdmUqKiBjaGUgc2Vydm9ubyBwZXIgbGEgdGFiZWxsYSAqL1xyXG4gICAgcHVibGljIGVtaXRUaHNBbmRUZHNCYXNlZE9uRHluYW1pY0RlZmluaXRpb24oKTogeyB0aHM6IEVzVGhEaXJlY3RpdmVbXSwgdGRzOiBFc1RkRGlyZWN0aXZlW10gfSB7XHJcbiAgICAgICAgLy8gU2VuemEgZHluYW1pYyBjb2x1bW5zIGVzY29cclxuICAgICAgICBpZiAoIXRoaXMuZXN0LkR5bmFtaWNSb3dDb2x1bW5zRGVmaW5pdGlvbiB8fCB0aGlzLmVzdC5EeW5hbWljUm93Q29sdW1uc0RlZmluaXRpb24ubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICBsZXQgdGhzID0gW107XHJcbiAgICAgICAgbGV0IHRkcyA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5lc3QuRHluYW1pY1Jvd0NvbHVtbnNEZWZpbml0aW9uLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBjb2wgPSB0aGlzLmVzdC5EeW5hbWljUm93Q29sdW1uc0RlZmluaXRpb25baV07XHJcblxyXG4gICAgICAgICAgICB0aHMucHVzaCh0aGlzLmdldFRoKGNvbCkpO1xyXG4gICAgICAgICAgICB0ZHMucHVzaCh0aGlzLmdldFRkKGNvbCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4geyB0aHMsIHRkcyB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlIEhlbHBlciAqL1xyXG4gICAgcHJpdmF0ZSBnZXRUaChjb2w6IEVzVGFibGVDb2x1bW5zRGVmaW5pdGlvbik6IEVzVGhEaXJlY3RpdmUge1xyXG4gICAgICAgIHZhciByZXQgPSBuZXcgRXNUaERpcmVjdGl2ZShudWxsKTtcclxuICAgICAgICByZXQudGggPSBjb2wuUHJvcGVydHlOYW1lO1xyXG4gICAgICAgIHJldC50aFBpbm5lZCA9IGNvbC5QaW5uZWQ7XHJcbiAgICAgICAgcmV0LnRoUGlubmFibGUgPSBjb2wuUGlubmFibGU7XHJcbiAgICAgICAgcmV0LnRoUGlubmVkV2lkdGggPSBjb2wuUGlubmVkV2lkdGg7XHJcbiAgICAgICAgcmV0LnRoVmlzaWJsZSA9IGNvbC5WaXNpYmxlO1xyXG4gICAgICAgIHJldC50aE9yZGVyID0gY29sLkRhdGFPcmRlcjtcclxuICAgICAgICByZXQudGhPcmRlcmFibGUgPSBjb2wuT3JkZXJhYmxlO1xyXG4gICAgICAgIHJldC50aFdyYXAgPSBjb2wuSGVhZGVyV3JhcHM7XHJcbiAgICAgICAgcmV0LnRoQ2xhc3MgPSBjb2wuQ2xzcztcclxuICAgICAgICByZXQudGhQcm9wZXJ0eSA9IGNvbC5Qcm9wZXJ0eU5hbWU7XHJcbiAgICAgICAgcmV0LnRoVHlwZSA9IGNvbC5Qcm9wZXJ0eVR5cGU7XHJcbiAgICAgICAgcmV0LnRoU291cmNlID0gY29sLlByb3BlcnR5U291cmNlO1xyXG4gICAgICAgIHJldC50aEVkaXRvck5hbWUgPSBjb2wuRWRpdG9yTmFtZTtcclxuICAgICAgICByZXQudGhFZGl0b3JPcHRpb25zID0gY29sLkVkaXRvck9wdGlvbnNcclxuICAgICAgICByZXQudGhSZW5kZXJlck5hbWUgPSBjb2wuUmVuZGVyZXJOYW1lO1xyXG4gICAgICAgIHJldC50aFJvdXRlUGF0aCA9IGNvbC5Sb3V0ZVBhdGg7XHJcbiAgICAgICAgcmV0LnRoUm91dGVQYXJhbWV0ZXJQcm9wZXJ0aWVzID0gY29sLlJvdXRlUGFyYW1ldGVyUHJvcGVydGllcztcclxuXHJcbiAgICAgICAgLy9yZXQudGhGaXhlZCA9IGNvbC5GaXhlZDtcclxuICAgICAgICAvL3JldC50aFJlc2l6YWJsZSA9IGNvbC5SZXNpemFibGU7XHJcbiAgICAgICAgLy9yZXQudGhHcm91cENsYXNzID0gY29sLkdyb3VwQ2xhc3M7XHJcbiAgICAgICAgLy9yZXQudGhHcm91cCA9IGNvbC5Hcm91cDtcclxuICAgICAgICAvL3JldC50aEFnZ3JlZ2F0aW9uID0gY29sLkFnZ3JlZ2F0aW9uO1xyXG4gICAgICAgIC8vcmV0LnRoTXVsdGkgPSBjb2wuTXVsdGk7XHJcbiAgICAgICAgLy9yZXQudGhTdGF0aWNDb250ZW50ID0gY29sLlN0YXRpY0NvbnRlbnQ7XHJcbiAgICAgICAgLy9yZXQudGhCYWNrZ3JvdW5kQ29sb3IgPSBjb2wuQmFja2dyb3VuZENvbG9yO1xyXG4gICAgICAgIC8vcmV0LnRoQWxpZ25tZW50ID0gY29sLkFsaWdubWVudDtcclxuICAgICAgICAvL3JldC50aEZvcm1hdCA9IGNvbC5Gb3JtYXQ7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSBIZWxwZXIgKi9cclxuICAgIHByaXZhdGUgZ2V0VGQoY29sOiBFc1RhYmxlQ29sdW1uc0RlZmluaXRpb24pOiBFc1RkRGlyZWN0aXZlIHtcclxuICAgICAgICB2YXIgcmV0ID0gbmV3IEVzVGREaXJlY3RpdmUobnVsbCk7XHJcbiAgICAgICAgcmV0LnRkID0gY29sLlByb3BlcnR5TmFtZTtcclxuICAgICAgICByZXQudGRDbGFzcyA9IGNvbC5DbHNzO1xyXG4gICAgICAgIC8vcmV0LnRkQWxpZ25tZW50ID0gY29sLkFsaWdubWVudDtcclxuICAgICAgICAvL3JldC50ZEZvcm1hdCA9IGNvbC5Gb3JtYXQ7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -135,9 +135,9 @@ export class ExportHandler {
135
135
  setupExport(items) {
136
136
  let drcd = this.est.DynamicRowColumnsDefinition;
137
137
  this.est.headers = drcd && drcd.length > 0 ?
138
- this.expExts.setupForGenericExport(items, drcd.map(t => { return { label: t.Description, key: t.PropertyName, order: t.ColumnOrder, type: 'string' }; })) :
138
+ this.expExts.setupForGenericExport(items, drcd.map(t => { return { label: t.Description, key: t.PropertyName, propKey: t.PropertyName, order: t.ColumnOrder, type: 'string' }; })) :
139
139
  this.expExts.setupForExport(items, this.est.ExportOnlyVisibleColumns ? this.est.ColumnsList.filter(t => t.visible).map(t => t.id) : null);
140
140
  this.est.data = items;
141
141
  }
142
142
  }
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwb3J0SGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLXRhYmxlL3NyYy9saWIvY29yZS9oYW5kbGVycy9FeHBvcnRIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFZQSx1REFBdUQ7QUFDdkQsTUFBTSxPQUFPLGFBQWE7SUFLdEIseUJBQXlCO0lBQ3pCLFlBQW9CLEdBQXFCLEVBQVUsT0FBc0IsRUFBVSxPQUF1QixFQUFVLE9BQXVCLEVBQVUsUUFBcUI7UUFBdEosUUFBRyxHQUFILEdBQUcsQ0FBa0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFlO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQWE7SUFBSSxDQUFDO0lBRS9LOzs7O09BSUc7SUFDSSxTQUFTLENBQUMsTUFBZTtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjO1lBQ3hCLE9BQU87O1lBR1AsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBTyxJQUFXLEVBQUUsU0FBa0IsS0FBSyxFQUFFLEVBQUU7Z0JBQ25FLElBQUksTUFBTTtvQkFDTixPQUFPO2dCQUVYLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUM7b0JBQzlFLE9BQU87aUJBQ1Y7Z0JBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxNQUFNLElBQUksS0FBSyxFQUFFO29CQUNqQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7aUJBQ3BCO3FCQUNJLElBQUksTUFBTSxJQUFJLE1BQU0sRUFB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UUFFaEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMaWJyZXJpZVxyXG5pbXBvcnQgeyBDc3ZIZWFkZXJzLCBEYXRlU2VydmljZSwgRXhwb3J0U2VydmljZSwgTWVzc2FnZVNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcblxyXG4vLyBDb21wb25lbnRpXHJcbmltcG9ydCB7IEVzVGFibGVDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9lcy10YWJsZS9lc190YWJsZS5jb21wb25lbnRcIlxyXG5cclxuLyoqXHJcbiAqIERpY2hpYXJhemlvbmUgZGVsbGEgdmFyaWFiaWxlIGdsb2JhbGUgZGF5anMuIEwnb25lcmUgZGkgXCJjcmVhcmxhXCIgw6ggYWZmaWRhdG8gYWxsJ2FwcGxpY2F6aW9uZSBjaGUgdXRpbGl6emEgcXVlc3RhIGxpYnJlcmlhLCBcclxuICogY2hlIGRvdnLDoCBpbXBvcnRhcmUgbG8gc2NyaXB0IGdsb2JhbGUgZGkgZGF5anMgbmVsbGEgQ0xJXHJcbiAqL1xyXG4gZGVjbGFyZSB2YXIgZGF5anM6IGFueTtcclxuXHJcbi8qKiBDbGFzc2UgY29udGVuZW50ZSBsYSBnZXN0aW9uZSBkZWxsZSBpbXBvcnRhemlvbmkgKi9cclxuZXhwb3J0IGNsYXNzIEV4cG9ydEhhbmRsZXIge1xyXG5cclxuICAgIC8qKiBDYWNoZSBkZWwgbW9kdWxvIHBlciBsJ2VzcG9ydGF6aW9uZSBFeGNlbCAqL1xyXG4gICAgcHJpdmF0ZSBFeGNlbEpTOiBhbnk7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgQ29zdHJ1dHRvcmUqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlc3Q6IEVzVGFibGVDb21wb25lbnQsIHByaXZhdGUgZXhwRXh0czogRXhwb3J0U2VydmljZSwgcHJpdmF0ZSBtc2dFeHRzOiBNZXNzYWdlU2VydmljZSwgcHJpdmF0ZSB1dGlFeHRzOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBkYXRlRXh0czogRGF0ZVNlcnZpY2UpIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRWZmZXR0dWEgbCdlc3BvcnRhemlvbmUgZGVpIGRhdGlcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0IEZvcm1hdG8gZGkgZXNwb3J0YXppb25lLiBMZXR0byBzb2xvIGluIG1vZGFsaXTDoCBSZXBvcnQgZGVsbGEgdGFiZWxsYVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdHJ5RXhwb3J0KGZvcm1hdD86IHN0cmluZykge1xyXG4gICAgICAgIGlmICghdGhpcy5lc3QuRXhwb3J0RnVuY3Rpb24pXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmVzdC5FeHBvcnRGdW5jdGlvbihhc3luYyAoZGF0YTogYW55W10sIGNhbmNlbDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FuY2VsKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVXYXJuaW5nKHRoaXMuZXN0LmxjLmxvYyhcIkNhbm5vdCBleHBvcnQgYW4gZW1wdHkgZGF0YXNldFwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBFeHBvcnQoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZm9ybWF0ID09IFwiQ1NWXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cG9ydENTVigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0ID09IFwiWExTWFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuRXhjZWxKUyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwb3J0RXhjZWwoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5FeGNlbEpTID0gYXdhaXQgaW1wb3J0KFwiZXhjZWxqc1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBvcnRFeGNlbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYXRjaCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFwiSW1wb3NzaWJpbGUgY2FyaWNhcmUgbGEgbGlicmVyaWEgcGVyIGwnZXNwb3J0YXppb25lIGluIEV4Y2VsXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFwiRm9ybWF0byBkaSBlc3BvcnRhemlvbmUgbm9uIHJpY29ub3NjaXV0b1wiO1xyXG4gICAgICAgICAgICB9LCBmb3JtYXQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBFZmZldHR1YSBsJ2VzcG9ydGF6aW9uZSBpbiBmaWxlIENTViwgdmEgYSBzb3N0aXR1aXJlIHF1ZWwgY29zbyBpbnV0aWxlIGRpIEBjdHJsL25neC1jc3YgKi9cclxuICAgIHByaXZhdGUgZXhwb3J0Q1NWKCkge1xyXG4gICAgICAgIHZhciBjc3ZEYXRhID0gdGhpcy5jb252ZXJ0VG9DU1YoKTtcclxuICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtjc3ZEYXRhXSwgeyB0eXBlOiAndGV4dC9jc3YnIH0pO1xyXG4gICAgICAgIHZhciBvYmplY3RVcmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICBsZXQgZm4gPSB0aGlzLmVzdC5FeHBvcnRGaWxlTmFtZTtcclxuICAgICAgICB0aGlzLnV0aUV4dHMuZmlsZURvd25sb2FkKG9iamVjdFVybCwgZm4uZW5kc1dpdGgoJy54bHN4JykgPyBmbi5yZXBsYWNlKCcueGxzeCcsICcuY3N2JykgOiBmbi5lbmRzV2l0aCgnLmNzdicpID8gZm4gOiBmbiArIFwiLmNzdlwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogR2VuZXJhemlvbmUgc3BlY2lmaWNhIGRlbCBDU1YgKi9cclxuICAgIHByaXZhdGUgY29udmVydFRvQ1NWKCk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IGNzdiA9ICcnLCByb3cgPSAnJywgc2VwID0gJzsnO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZXN0LmhlYWRlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGggPSB0aGlzLmVzdC5oZWFkZXJzW2ldO1xyXG4gICAgICAgICAgICByb3cgKz0gYCR7cm93ICE9ICcnID8gc2VwIDogJyd9XCIke2gubGFiZWx9XCJgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjc3YgKz0gcm93ICsgJ1xcclxcbic7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5lc3QuZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICByb3cgPSAnJztcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSB0aGlzLmVzdC5kYXRhW2ldO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuZXN0LmhlYWRlcnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCB2YWwgPSBpdGVtW3RoaXMuZXN0LmhlYWRlcnNbal0ua2V5XTtcclxuICAgICAgICAgICAgICAgIHJvdyArPSBgJHtyb3cgIT0gJycgPyBzZXAgOiAnJ31cIiR7dmFsfVwiYDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjc3YgKz0gcm93ICsgJ1xcclxcbic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjc3Y7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEVmZmV0dHVhIGwnZXNwb3J0YXppb25lIGRlbCBmaWxlIEV4Y2VsIGJhc2FuZG9zaSBzdWwgbW9kdWxvICoqRXhjZWxKUyoqLCBzdWdsaSBoZWFkZXIgKip0aGlzLmVzdC5oZWFkZXJzKiogZSBzdWkgZGF0aSAqKnRoaXMuZXN0LmRhdGEqKiAqL1xyXG4gICAgcHJpdmF0ZSBhc3luYyBleHBvcnRFeGNlbCgpIHtcclxuICAgICAgICBsZXQgaUZpeCA9IDE7XHJcbiAgICAgICAgbGV0IHdvcmtib29rID0gbmV3IHRoaXMuRXhjZWxKUy5Xb3JrYm9vaygpO1xyXG4gICAgICAgIHdvcmtib29rLmNyZWF0b3IgPSBcIkVtYSdzIGJpZyBFcy1UYWJsZVwiO1xyXG4gICAgICAgIHdvcmtib29rLmNyZWF0ZWQgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgICAgICBsZXQgc2hlZXQgPSB3b3JrYm9vay5hZGRXb3Jrc2hlZXQoJ0RhdGEnKTtcclxuICAgICAgICBsZXQgaGVhZGVyID0gc2hlZXQuZ2V0Um93KDEpO1xyXG4gICAgICAgIGhlYWRlci5mb250ID0geyBib2xkOiB0cnVlIH07XHJcbiAgICAgICAgdGhpcy5lc3QuaGVhZGVycyA9IHRoaXMuZXN0LmhlYWRlcnMuc29ydCgoYTogQ3N2SGVhZGVycywgYjogQ3N2SGVhZGVycykgPT4gYS5vcmRlciAtIGIub3JkZXIpO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZXN0LmhlYWRlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGggPSB0aGlzLmVzdC5oZWFkZXJzW2ldO1xyXG4gICAgICAgICAgICBoZWFkZXIuZ2V0Q2VsbChpICsgaUZpeCkudmFsdWUgPSBoLmxhYmVsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmVzdC5kYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCByb3cgPSBzaGVldC5nZXRSb3coaSArIGlGaXggKyAxKTtcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSB0aGlzLmVzdC5kYXRhW2ldO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZXN0LmhlYWRlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCBoID0gdGhpcy5lc3QuaGVhZGVyc1tpXTtcclxuICAgICAgICAgICAgICAgIGxldCBjZWxsID0gcm93LmdldENlbGwoaSArIDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbCA9IGl0ZW1baC5rZXldO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghdmFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChoLnR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhjZWxKUyB2YSBkaSBkZWZhdWx0IGluIFVUQyBxdWluZGkgcmlzY2hpZXJlYmJlIGRpIHRpcmFyZSBnacO5IDIgb3JlIGFkIG9nbmkgZXNwb3J0YXppb25lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJpc29nbmEgYWdnaXVuZ2VyZSBsJ3V0YyBvZmZzZXQgYWxsYSBkYXRhIGF0dHVhbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGUgPSB0aGlzLmRhdGVFeHRzLmdldERhdGVDb252ZXJ0aW9uKHZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29ycmVjdGVkRGF0ZSA9IGRhdGUuYWRkKGRhdGUudXRjT2Zmc2V0KCksICdtaW51dGUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwudmFsdWUgPSBjb3JyZWN0ZWREYXRlLnRvRGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5udW1GbXQgPSB2YWwubGVuZ3RoID4gMTAgPyAnZGQvbW0veXl5eSBoOm06cycgOiAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdudW1iZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29udmVydGVkID0gcGFyc2VGbG9hdCh2YWwucmVwbGFjZSgnLCcsICcuJykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjZWxsLnZhbHVlID0gaXNOYU4oY29udmVydGVkKSA/IFwiXCIgOiBjb252ZXJ0ZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwudmFsdWUgPSB2YWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgYnVmZmVyID0gYXdhaXQgd29ya2Jvb2sueGxzeC53cml0ZUJ1ZmZlcigpO1xyXG4gICAgICAgIGxldCBibG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHt0eXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O1wifSk7XHJcbiAgICAgICAgbGV0IG9iamVjdFVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgIGxldCBmbiA9IHRoaXMuZXN0LkV4cG9ydEZpbGVOYW1lO1xyXG4gICAgICAgIHRoaXMudXRpRXh0cy5maWxlRG93bmxvYWQob2JqZWN0VXJsLCBmbi5lbmRzV2l0aCgnLmNzdicpID8gZm4ucmVwbGFjZSgnLmNzdicsICcueGxzeCcpIDogZm4uZW5kc1dpdGgoJy54bHN4JykgPyBmbiA6IGZuICsgXCIueGxzeFwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBjaGUgZWZmZXR0aXZhbWVudGUgZ2VuZXJhIGdsaSBoZWFkZXIgZSBpIGRhdGkgcGVyIGwnZXNwb3J0YXppb25lIGNvbiAqKm5neC1jc3YqKlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7YW55W119IGl0ZW1zIE9nZ2V0dGkgZGEgZXNwb3J0YXJlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc2V0dXBFeHBvcnQoaXRlbXM6IGFueVtdKSB7XHJcbiAgICAgICAgbGV0IGRyY2QgPSB0aGlzLmVzdC5EeW5hbWljUm93Q29sdW1uc0RlZmluaXRpb247XHJcblxyXG4gICAgICAgIHRoaXMuZXN0LmhlYWRlcnMgPSBkcmNkICYmIGRyY2QubGVuZ3RoID4gMCA/IFxyXG4gICAgICAgICAgICB0aGlzLmV4cEV4dHMuc2V0dXBGb3JHZW5lcmljRXhwb3J0KGl0ZW1zLCBkcmNkLm1hcCh0ID0+IHsgcmV0dXJuIHsgbGFiZWw6IHQuRGVzY3JpcHRpb24sIGtleTogdC5Qcm9wZXJ0eU5hbWUsIG9yZGVyOiB0LkNvbHVtbk9yZGVyLCB0eXBlOiAnc3RyaW5nJyB9OyB9KSkgOiBcclxuICAgICAgICAgICAgdGhpcy5leHBFeHRzLnNldHVwRm9yRXhwb3J0KGl0ZW1zLCB0aGlzLmVzdC5FeHBvcnRPbmx5VmlzaWJsZUNvbHVtbnMgPyB0aGlzLmVzdC5Db2x1bW5zTGlzdC5maWx0ZXIodCA9PiB0LnZpc2libGUpLm1hcCh0ID0+IHQuaWQpIDogbnVsbCk7XHJcbiAgICAgICAgdGhpcy5lc3QuZGF0YSA9IGl0ZW1zO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwb3J0SGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLXRhYmxlL3NyYy9saWIvY29yZS9oYW5kbGVycy9FeHBvcnRIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFZQSx1REFBdUQ7QUFDdkQsTUFBTSxPQUFPLGFBQWE7SUFLdEIseUJBQXlCO0lBQ3pCLFlBQW9CLEdBQXFCLEVBQVUsT0FBc0IsRUFBVSxPQUF1QixFQUFVLE9BQXVCLEVBQVUsUUFBcUI7UUFBdEosUUFBRyxHQUFILEdBQUcsQ0FBa0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFlO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQWE7SUFBSSxDQUFDO0lBRS9LOzs7O09BSUc7SUFDSSxTQUFTLENBQUMsTUFBZTtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjO1lBQ3hCLE9BQU87O1lBR1AsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBTyxJQUFXLEVBQUUsU0FBa0IsS0FBSyxFQUFFLEVBQUU7Z0JBQ25FLElBQUksTUFBTTtvQkFDTixPQUFPO2dCQUVYLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUM7b0JBQzlFLE9BQU87aUJBQ1Y7Z0JBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxNQUFNLElBQUksS0FBSyxFQUFFO29CQUNqQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7aUJBQ3BCO3FCQUNJLElBQUksTUFBTSxJQUFJLE1BQU0sRUFB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UUFFaEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEwsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMaWJyZXJpZVxyXG5pbXBvcnQgeyBDc3ZIZWFkZXJzLCBEYXRlU2VydmljZSwgRXhwb3J0U2VydmljZSwgTWVzc2FnZVNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcblxyXG4vLyBDb21wb25lbnRpXHJcbmltcG9ydCB7IEVzVGFibGVDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9lcy10YWJsZS9lc190YWJsZS5jb21wb25lbnRcIlxyXG5cclxuLyoqXHJcbiAqIERpY2hpYXJhemlvbmUgZGVsbGEgdmFyaWFiaWxlIGdsb2JhbGUgZGF5anMuIEwnb25lcmUgZGkgXCJjcmVhcmxhXCIgw6ggYWZmaWRhdG8gYWxsJ2FwcGxpY2F6aW9uZSBjaGUgdXRpbGl6emEgcXVlc3RhIGxpYnJlcmlhLCBcclxuICogY2hlIGRvdnLDoCBpbXBvcnRhcmUgbG8gc2NyaXB0IGdsb2JhbGUgZGkgZGF5anMgbmVsbGEgQ0xJXHJcbiAqL1xyXG4gZGVjbGFyZSB2YXIgZGF5anM6IGFueTtcclxuXHJcbi8qKiBDbGFzc2UgY29udGVuZW50ZSBsYSBnZXN0aW9uZSBkZWxsZSBpbXBvcnRhemlvbmkgKi9cclxuZXhwb3J0IGNsYXNzIEV4cG9ydEhhbmRsZXIge1xyXG5cclxuICAgIC8qKiBDYWNoZSBkZWwgbW9kdWxvIHBlciBsJ2VzcG9ydGF6aW9uZSBFeGNlbCAqL1xyXG4gICAgcHJpdmF0ZSBFeGNlbEpTOiBhbnk7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgQ29zdHJ1dHRvcmUqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlc3Q6IEVzVGFibGVDb21wb25lbnQsIHByaXZhdGUgZXhwRXh0czogRXhwb3J0U2VydmljZSwgcHJpdmF0ZSBtc2dFeHRzOiBNZXNzYWdlU2VydmljZSwgcHJpdmF0ZSB1dGlFeHRzOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBkYXRlRXh0czogRGF0ZVNlcnZpY2UpIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRWZmZXR0dWEgbCdlc3BvcnRhemlvbmUgZGVpIGRhdGlcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0IEZvcm1hdG8gZGkgZXNwb3J0YXppb25lLiBMZXR0byBzb2xvIGluIG1vZGFsaXTDoCBSZXBvcnQgZGVsbGEgdGFiZWxsYVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdHJ5RXhwb3J0KGZvcm1hdD86IHN0cmluZykge1xyXG4gICAgICAgIGlmICghdGhpcy5lc3QuRXhwb3J0RnVuY3Rpb24pXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmVzdC5FeHBvcnRGdW5jdGlvbihhc3luYyAoZGF0YTogYW55W10sIGNhbmNlbDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FuY2VsKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVXYXJuaW5nKHRoaXMuZXN0LmxjLmxvYyhcIkNhbm5vdCBleHBvcnQgYW4gZW1wdHkgZGF0YXNldFwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBFeHBvcnQoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZm9ybWF0ID09IFwiQ1NWXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cG9ydENTVigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9ybWF0ID09IFwiWExTWFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuRXhjZWxKUyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwb3J0RXhjZWwoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5FeGNlbEpTID0gYXdhaXQgaW1wb3J0KFwiZXhjZWxqc1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBvcnRFeGNlbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYXRjaCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFwiSW1wb3NzaWJpbGUgY2FyaWNhcmUgbGEgbGlicmVyaWEgcGVyIGwnZXNwb3J0YXppb25lIGluIEV4Y2VsXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFwiRm9ybWF0byBkaSBlc3BvcnRhemlvbmUgbm9uIHJpY29ub3NjaXV0b1wiO1xyXG4gICAgICAgICAgICB9LCBmb3JtYXQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBFZmZldHR1YSBsJ2VzcG9ydGF6aW9uZSBpbiBmaWxlIENTViwgdmEgYSBzb3N0aXR1aXJlIHF1ZWwgY29zbyBpbnV0aWxlIGRpIEBjdHJsL25neC1jc3YgKi9cclxuICAgIHByaXZhdGUgZXhwb3J0Q1NWKCkge1xyXG4gICAgICAgIHZhciBjc3ZEYXRhID0gdGhpcy5jb252ZXJ0VG9DU1YoKTtcclxuICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtjc3ZEYXRhXSwgeyB0eXBlOiAndGV4dC9jc3YnIH0pO1xyXG4gICAgICAgIHZhciBvYmplY3RVcmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICBsZXQgZm4gPSB0aGlzLmVzdC5FeHBvcnRGaWxlTmFtZTtcclxuICAgICAgICB0aGlzLnV0aUV4dHMuZmlsZURvd25sb2FkKG9iamVjdFVybCwgZm4uZW5kc1dpdGgoJy54bHN4JykgPyBmbi5yZXBsYWNlKCcueGxzeCcsICcuY3N2JykgOiBmbi5lbmRzV2l0aCgnLmNzdicpID8gZm4gOiBmbiArIFwiLmNzdlwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogR2VuZXJhemlvbmUgc3BlY2lmaWNhIGRlbCBDU1YgKi9cclxuICAgIHByaXZhdGUgY29udmVydFRvQ1NWKCk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IGNzdiA9ICcnLCByb3cgPSAnJywgc2VwID0gJzsnO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZXN0LmhlYWRlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGggPSB0aGlzLmVzdC5oZWFkZXJzW2ldO1xyXG4gICAgICAgICAgICByb3cgKz0gYCR7cm93ICE9ICcnID8gc2VwIDogJyd9XCIke2gubGFiZWx9XCJgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjc3YgKz0gcm93ICsgJ1xcclxcbic7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5lc3QuZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICByb3cgPSAnJztcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSB0aGlzLmVzdC5kYXRhW2ldO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuZXN0LmhlYWRlcnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCB2YWwgPSBpdGVtW3RoaXMuZXN0LmhlYWRlcnNbal0ua2V5XTtcclxuICAgICAgICAgICAgICAgIHJvdyArPSBgJHtyb3cgIT0gJycgPyBzZXAgOiAnJ31cIiR7dmFsfVwiYDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjc3YgKz0gcm93ICsgJ1xcclxcbic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjc3Y7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEVmZmV0dHVhIGwnZXNwb3J0YXppb25lIGRlbCBmaWxlIEV4Y2VsIGJhc2FuZG9zaSBzdWwgbW9kdWxvICoqRXhjZWxKUyoqLCBzdWdsaSBoZWFkZXIgKip0aGlzLmVzdC5oZWFkZXJzKiogZSBzdWkgZGF0aSAqKnRoaXMuZXN0LmRhdGEqKiAqL1xyXG4gICAgcHJpdmF0ZSBhc3luYyBleHBvcnRFeGNlbCgpIHtcclxuICAgICAgICBsZXQgaUZpeCA9IDE7XHJcbiAgICAgICAgbGV0IHdvcmtib29rID0gbmV3IHRoaXMuRXhjZWxKUy5Xb3JrYm9vaygpO1xyXG4gICAgICAgIHdvcmtib29rLmNyZWF0b3IgPSBcIkVtYSdzIGJpZyBFcy1UYWJsZVwiO1xyXG4gICAgICAgIHdvcmtib29rLmNyZWF0ZWQgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgICAgICBsZXQgc2hlZXQgPSB3b3JrYm9vay5hZGRXb3Jrc2hlZXQoJ0RhdGEnKTtcclxuICAgICAgICBsZXQgaGVhZGVyID0gc2hlZXQuZ2V0Um93KDEpO1xyXG4gICAgICAgIGhlYWRlci5mb250ID0geyBib2xkOiB0cnVlIH07XHJcbiAgICAgICAgdGhpcy5lc3QuaGVhZGVycyA9IHRoaXMuZXN0LmhlYWRlcnMuc29ydCgoYTogQ3N2SGVhZGVycywgYjogQ3N2SGVhZGVycykgPT4gYS5vcmRlciAtIGIub3JkZXIpO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZXN0LmhlYWRlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGggPSB0aGlzLmVzdC5oZWFkZXJzW2ldO1xyXG4gICAgICAgICAgICBoZWFkZXIuZ2V0Q2VsbChpICsgaUZpeCkudmFsdWUgPSBoLmxhYmVsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmVzdC5kYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCByb3cgPSBzaGVldC5nZXRSb3coaSArIGlGaXggKyAxKTtcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSB0aGlzLmVzdC5kYXRhW2ldO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZXN0LmhlYWRlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCBoID0gdGhpcy5lc3QuaGVhZGVyc1tpXTtcclxuICAgICAgICAgICAgICAgIGxldCBjZWxsID0gcm93LmdldENlbGwoaSArIDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbCA9IGl0ZW1baC5rZXldO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghdmFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2VsbC52YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChoLnR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhjZWxKUyB2YSBkaSBkZWZhdWx0IGluIFVUQyBxdWluZGkgcmlzY2hpZXJlYmJlIGRpIHRpcmFyZSBnacO5IDIgb3JlIGFkIG9nbmkgZXNwb3J0YXppb25lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJpc29nbmEgYWdnaXVuZ2VyZSBsJ3V0YyBvZmZzZXQgYWxsYSBkYXRhIGF0dHVhbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGUgPSB0aGlzLmRhdGVFeHRzLmdldERhdGVDb252ZXJ0aW9uKHZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29ycmVjdGVkRGF0ZSA9IGRhdGUuYWRkKGRhdGUudXRjT2Zmc2V0KCksICdtaW51dGUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwudmFsdWUgPSBjb3JyZWN0ZWREYXRlLnRvRGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5udW1GbXQgPSB2YWwubGVuZ3RoID4gMTAgPyAnZGQvbW0veXl5eSBoOm06cycgOiAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdudW1iZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29udmVydGVkID0gcGFyc2VGbG9hdCh2YWwucmVwbGFjZSgnLCcsICcuJykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjZWxsLnZhbHVlID0gaXNOYU4oY29udmVydGVkKSA/IFwiXCIgOiBjb252ZXJ0ZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwudmFsdWUgPSB2YWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgYnVmZmVyID0gYXdhaXQgd29ya2Jvb2sueGxzeC53cml0ZUJ1ZmZlcigpO1xyXG4gICAgICAgIGxldCBibG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHt0eXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O1wifSk7XHJcbiAgICAgICAgbGV0IG9iamVjdFVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgIGxldCBmbiA9IHRoaXMuZXN0LkV4cG9ydEZpbGVOYW1lO1xyXG4gICAgICAgIHRoaXMudXRpRXh0cy5maWxlRG93bmxvYWQob2JqZWN0VXJsLCBmbi5lbmRzV2l0aCgnLmNzdicpID8gZm4ucmVwbGFjZSgnLmNzdicsICcueGxzeCcpIDogZm4uZW5kc1dpdGgoJy54bHN4JykgPyBmbiA6IGZuICsgXCIueGxzeFwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBjaGUgZWZmZXR0aXZhbWVudGUgZ2VuZXJhIGdsaSBoZWFkZXIgZSBpIGRhdGkgcGVyIGwnZXNwb3J0YXppb25lIGNvbiAqKm5neC1jc3YqKlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7YW55W119IGl0ZW1zIE9nZ2V0dGkgZGEgZXNwb3J0YXJlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc2V0dXBFeHBvcnQoaXRlbXM6IGFueVtdKSB7XHJcbiAgICAgICAgbGV0IGRyY2QgPSB0aGlzLmVzdC5EeW5hbWljUm93Q29sdW1uc0RlZmluaXRpb247XHJcblxyXG4gICAgICAgIHRoaXMuZXN0LmhlYWRlcnMgPSBkcmNkICYmIGRyY2QubGVuZ3RoID4gMCA/IFxyXG4gICAgICAgICAgICB0aGlzLmV4cEV4dHMuc2V0dXBGb3JHZW5lcmljRXhwb3J0KGl0ZW1zLCBkcmNkLm1hcCh0ID0+IHsgcmV0dXJuIHsgbGFiZWw6IHQuRGVzY3JpcHRpb24sIGtleTogdC5Qcm9wZXJ0eU5hbWUsIHByb3BLZXk6IHQuUHJvcGVydHlOYW1lLCBvcmRlcjogdC5Db2x1bW5PcmRlciwgdHlwZTogJ3N0cmluZycgfTsgfSkpIDogXHJcbiAgICAgICAgICAgIHRoaXMuZXhwRXh0cy5zZXR1cEZvckV4cG9ydChpdGVtcywgdGhpcy5lc3QuRXhwb3J0T25seVZpc2libGVDb2x1bW5zID8gdGhpcy5lc3QuQ29sdW1uc0xpc3QuZmlsdGVyKHQgPT4gdC52aXNpYmxlKS5tYXAodCA9PiB0LmlkKSA6IG51bGwpO1xyXG4gICAgICAgIHRoaXMuZXN0LmRhdGEgPSBpdGVtcztcclxuICAgIH1cclxufVxyXG4iXX0=