@sd-angular/core 1.2.26 → 1.2.29

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 (91) hide show
  1. package/bundles/sd-angular-core-button.umd.js +1 -0
  2. package/bundles/sd-angular-core-button.umd.js.map +1 -1
  3. package/bundles/sd-angular-core-button.umd.min.js +1 -1
  4. package/bundles/sd-angular-core-button.umd.min.js.map +1 -1
  5. package/bundles/sd-angular-core-date-range.umd.js +7 -1
  6. package/bundles/sd-angular-core-date-range.umd.js.map +1 -1
  7. package/bundles/sd-angular-core-date-range.umd.min.js +1 -1
  8. package/bundles/sd-angular-core-date-range.umd.min.js.map +1 -1
  9. package/bundles/sd-angular-core-date-time.umd.js +57 -13
  10. package/bundles/sd-angular-core-date-time.umd.js.map +1 -1
  11. package/bundles/sd-angular-core-date-time.umd.min.js +1 -1
  12. package/bundles/sd-angular-core-date-time.umd.min.js.map +1 -1
  13. package/bundles/sd-angular-core-editor.umd.js +54 -41
  14. package/bundles/sd-angular-core-editor.umd.js.map +1 -1
  15. package/bundles/sd-angular-core-editor.umd.min.js +1 -1
  16. package/bundles/sd-angular-core-editor.umd.min.js.map +1 -1
  17. package/bundles/sd-angular-core-grid-material.umd.js +21 -3
  18. package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
  19. package/bundles/sd-angular-core-grid-material.umd.min.js +1 -1
  20. package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
  21. package/bundles/sd-angular-core-input-currency.umd.js +3 -0
  22. package/bundles/sd-angular-core-input-currency.umd.js.map +1 -1
  23. package/bundles/sd-angular-core-input-currency.umd.min.js +2 -2
  24. package/bundles/sd-angular-core-input-currency.umd.min.js.map +1 -1
  25. package/bundles/sd-angular-core-select-editor.umd.js +1 -0
  26. package/bundles/sd-angular-core-select-editor.umd.js.map +1 -1
  27. package/bundles/sd-angular-core-select-editor.umd.min.js +1 -1
  28. package/bundles/sd-angular-core-select-editor.umd.min.js.map +1 -1
  29. package/bundles/sd-angular-core-switch.umd.js +1 -0
  30. package/bundles/sd-angular-core-switch.umd.js.map +1 -1
  31. package/bundles/sd-angular-core-switch.umd.min.js +1 -1
  32. package/bundles/sd-angular-core-switch.umd.min.js.map +1 -1
  33. package/bundles/sd-angular-core-tab-router.umd.js +4 -1
  34. package/bundles/sd-angular-core-tab-router.umd.js.map +1 -1
  35. package/bundles/sd-angular-core-tab-router.umd.min.js +2 -2
  36. package/bundles/sd-angular-core-tab-router.umd.min.js.map +1 -1
  37. package/bundles/sd-angular-core-utility.umd.js +17 -0
  38. package/bundles/sd-angular-core-utility.umd.js.map +1 -1
  39. package/bundles/sd-angular-core-utility.umd.min.js +1 -1
  40. package/bundles/sd-angular-core-utility.umd.min.js.map +1 -1
  41. package/button/sd-angular-core-button.metadata.json +1 -1
  42. package/date-range/sd-angular-core-date-range.metadata.json +1 -1
  43. package/date-range/src/lib/date-range.component.d.ts +3 -2
  44. package/date-time/sd-angular-core-date-time.metadata.json +1 -1
  45. package/date-time/src/lib/date-time.component.d.ts +5 -0
  46. package/editor/sd-angular-core-editor.metadata.json +1 -1
  47. package/editor/src/lib/editor.component.d.ts +3 -2
  48. package/esm2015/button/src/lib/button.component.js +3 -2
  49. package/esm2015/date-range/src/lib/date-range.component.js +9 -3
  50. package/esm2015/date-time/src/lib/date-time.component.js +54 -14
  51. package/esm2015/editor/src/lib/editor.component.js +55 -42
  52. package/esm2015/grid-material/src/lib/components/desktop-command/desktop-command.component.js +3 -2
  53. package/esm2015/grid-material/src/lib/components/grid-filter/grid-filter.component.js +10 -3
  54. package/esm2015/grid-material/src/lib/components/popup-export/popup-export.component.js +4 -2
  55. package/esm2015/grid-material/src/lib/components/popup-filter/popup-filter.component.js +12 -4
  56. package/esm2015/input-currency/src/lib/input-currency.component.js +5 -2
  57. package/esm2015/select-editor/src/lib/select-editor.component.js +3 -2
  58. package/esm2015/switch/src/lib/switch.component.js +3 -2
  59. package/esm2015/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.js +5 -2
  60. package/esm2015/utility/src/lib/utility.service.js +18 -1
  61. package/fesm2015/sd-angular-core-button.js +2 -1
  62. package/fesm2015/sd-angular-core-button.js.map +1 -1
  63. package/fesm2015/sd-angular-core-date-range.js +8 -2
  64. package/fesm2015/sd-angular-core-date-range.js.map +1 -1
  65. package/fesm2015/sd-angular-core-date-time.js +53 -13
  66. package/fesm2015/sd-angular-core-date-time.js.map +1 -1
  67. package/fesm2015/sd-angular-core-editor.js +54 -41
  68. package/fesm2015/sd-angular-core-editor.js.map +1 -1
  69. package/fesm2015/sd-angular-core-grid-material.js +22 -4
  70. package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
  71. package/fesm2015/sd-angular-core-input-currency.js +4 -1
  72. package/fesm2015/sd-angular-core-input-currency.js.map +1 -1
  73. package/fesm2015/sd-angular-core-select-editor.js +2 -1
  74. package/fesm2015/sd-angular-core-select-editor.js.map +1 -1
  75. package/fesm2015/sd-angular-core-switch.js +2 -1
  76. package/fesm2015/sd-angular-core-switch.js.map +1 -1
  77. package/fesm2015/sd-angular-core-tab-router.js +4 -1
  78. package/fesm2015/sd-angular-core-tab-router.js.map +1 -1
  79. package/fesm2015/sd-angular-core-utility.js +17 -0
  80. package/fesm2015/sd-angular-core-utility.js.map +1 -1
  81. package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
  82. package/grid-material/src/lib/components/grid-filter/grid-filter.component.d.ts +3 -2
  83. package/grid-material/src/lib/components/popup-filter/popup-filter.component.d.ts +3 -2
  84. package/input-currency/sd-angular-core-input-currency.metadata.json +1 -1
  85. package/package.json +1 -1
  86. package/{sd-angular-core-1.2.26.tgz → sd-angular-core-1.2.29.tgz} +0 -0
  87. package/select-editor/sd-angular-core-select-editor.metadata.json +1 -1
  88. package/switch/sd-angular-core-switch.metadata.json +1 -1
  89. package/tab-router/sd-angular-core-tab-router.metadata.json +1 -1
  90. package/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.d.ts +1 -0
  91. package/utility/src/lib/utility.service.d.ts +1 -0
@@ -1,6 +1,6 @@
1
1
  var _name, _subscription, _model, _form, _updateValidator, _uploadImage;
2
2
  import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
- import { Component, ViewChild, Input, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';
3
+ import { Component, ViewChild, Input, Output, EventEmitter, ChangeDetectorRef, ChangeDetectionStrategy, NgZone } from '@angular/core';
4
4
  import * as uuid from 'uuid';
5
5
  import { FormControl, NgForm, Validators } from '@angular/forms';
6
6
  import { Constants } from './constant';
@@ -8,7 +8,8 @@ import { Subscription } from 'rxjs';
8
8
  import { SdApiService } from '@sd-angular/core/api';
9
9
  import 'quill-mention';
10
10
  export class SdEditor {
11
- constructor(ref, sdApiService) {
11
+ constructor(ngZone, ref, sdApiService) {
12
+ this.ngZone = ngZone;
12
13
  this.ref = ref;
13
14
  this.sdApiService = sdApiService;
14
15
  _name.set(this, `N${uuid.v4()}`);
@@ -104,6 +105,7 @@ export class SdEditor {
104
105
  }
105
106
  this.formControl.setValidators(validators);
106
107
  this.formControl.updateValueAndValidity();
108
+ this.ref.markForCheck();
107
109
  });
108
110
  this.editorInit = (quill) => {
109
111
  this.quillEvent = quill;
@@ -126,43 +128,48 @@ export class SdEditor {
126
128
  // // this.formControl.setValue(html);
127
129
  // });
128
130
  const self = this;
129
- quill.getModule('toolbar').addHandler('image', function () {
130
- let fileInput = this.container.querySelector('input.ql-image[type=file]');
131
- if (fileInput == null) {
132
- fileInput = document.createElement('input');
133
- fileInput.setAttribute('type', Constants.FILE);
134
- fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');
135
- fileInput.classList.add('ql-image');
136
- fileInput.addEventListener('change', () => {
137
- const files = fileInput.files;
138
- const range = this.quill.getSelection(true);
139
- if (!files || !files.length) {
140
- return;
141
- }
142
- const formData = new FormData();
143
- formData.append(Constants.FILE, files[0]);
144
- this.quill.enable(false);
145
- /*this.apiService.post(this.domain + this.urlUploadImage, formData).subscribe((resp: any) => {
146
- this.quill.enable(true);
147
- this.quill.editor.insertEmbed(range.index, 'image', resp.data.imageUrl || resp.data.publish_url || resp.url);
148
- const content = this.quill.getContents();
149
- this.quill.setContents(content);
150
- this.quill.setSelection(range.index + 1, 'silent');
151
- fileInput.value = '';
152
- });*/
153
- __classPrivateFieldGet(self, _uploadImage).call(self, formData, quill, range, fileInput);
154
- });
155
- this.container.appendChild(fileInput);
156
- }
157
- fileInput.click();
131
+ this.ngZone.runOutsideAngular(() => {
132
+ quill.getModule('toolbar').addHandler('image', function () {
133
+ let fileInput = this.container.querySelector('input.ql-image[type=file]');
134
+ if (fileInput == null) {
135
+ fileInput = document.createElement('input');
136
+ fileInput.setAttribute('type', Constants.FILE);
137
+ fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');
138
+ fileInput.classList.add('ql-image');
139
+ fileInput.addEventListener('change', () => {
140
+ const files = fileInput.files;
141
+ const range = this.quill.getSelection(true);
142
+ if (!files || !files.length) {
143
+ return;
144
+ }
145
+ const formData = new FormData();
146
+ formData.append(Constants.FILE, files[0]);
147
+ this.quill.enable(false);
148
+ /*this.apiService.post(this.domain + this.urlUploadImage, formData).subscribe((resp: any) => {
149
+ this.quill.enable(true);
150
+ this.quill.editor.insertEmbed(range.index, 'image', resp.data.imageUrl || resp.data.publish_url || resp.url);
151
+ const content = this.quill.getContents();
152
+ this.quill.setContents(content);
153
+ this.quill.setSelection(range.index + 1, 'silent');
154
+ fileInput.value = '';
155
+ });*/
156
+ __classPrivateFieldGet(self, _uploadImage).call(self, formData, quill, range, fileInput);
157
+ });
158
+ this.container.appendChild(fileInput);
159
+ }
160
+ fileInput.click();
161
+ });
158
162
  });
163
+ this.ref.markForCheck();
159
164
  };
160
165
  this.onModelChange = (val) => {
161
166
  this.formControl.setValue(val);
162
167
  this.modelHTML = val;
168
+ this.ref.markForCheck();
163
169
  };
164
170
  this.onClickShowHtmlEditor = () => {
165
171
  this.showHtmlEditor = !this.showHtmlEditor;
172
+ this.ref.markForCheck();
166
173
  };
167
174
  _uploadImage.set(this, (formData, quill, range, fileInput) => {
168
175
  if (!this.urlUploadImage) {
@@ -170,17 +177,20 @@ export class SdEditor {
170
177
  }
171
178
  // this.domain = 'https://api-commerce-qc.vinid.dev';
172
179
  this.sdApiService.post(this.urlUploadImage, formData).then((resp) => {
173
- var _a, _b, _c, _d;
174
- quill.enable(true);
175
- // quill.editor.insertEmbed(range.index, 'image', resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '');
176
- quill.getModule('clipboard').dangerouslyPasteHTML(range.index, '<a target="_blank" href="' + (((_a = resp === null || resp === void 0 ? void 0 : resp.data) === null || _a === void 0 ? void 0 : _a.imageUrl) || ((_b = resp === null || resp === void 0 ? void 0 : resp.data) === null || _b === void 0 ? void 0 : _b.publish_url) || (resp === null || resp === void 0 ? void 0 : resp.url) || '')
177
- + '"><img src="' + (((_c = resp === null || resp === void 0 ? void 0 : resp.data) === null || _c === void 0 ? void 0 : _c.imageUrl) || ((_d = resp === null || resp === void 0 ? void 0 : resp.data) === null || _d === void 0 ? void 0 : _d.publish_url) || (resp === null || resp === void 0 ? void 0 : resp.url) || '') + '" alt="c-image-editor-quill"></a>', 'user');
178
- // quill.insertText();
179
- const content = quill.getContents();
180
- quill.setContents(content);
181
- quill.setSelection(range.index + 1, 'user');
182
- fileInput.value = '';
180
+ this.ngZone.runOutsideAngular(() => {
181
+ var _a, _b, _c, _d;
182
+ quill.enable(true);
183
+ // quill.editor.insertEmbed(range.index, 'image', resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '');
184
+ quill.getModule('clipboard').dangerouslyPasteHTML(range.index, '<a target="_blank" href="' + (((_a = resp === null || resp === void 0 ? void 0 : resp.data) === null || _a === void 0 ? void 0 : _a.imageUrl) || ((_b = resp === null || resp === void 0 ? void 0 : resp.data) === null || _b === void 0 ? void 0 : _b.publish_url) || (resp === null || resp === void 0 ? void 0 : resp.url) || '')
185
+ + '"><img src="' + (((_c = resp === null || resp === void 0 ? void 0 : resp.data) === null || _c === void 0 ? void 0 : _c.imageUrl) || ((_d = resp === null || resp === void 0 ? void 0 : resp.data) === null || _d === void 0 ? void 0 : _d.publish_url) || (resp === null || resp === void 0 ? void 0 : resp.url) || '') + '" alt="c-image-editor-quill"></a>', 'user');
186
+ // quill.insertText();
187
+ const content = quill.getContents();
188
+ quill.setContents(content);
189
+ quill.setSelection(range.index + 1, 'user');
190
+ fileInput.value = '';
191
+ });
183
192
  });
193
+ this.ref.markForCheck();
184
194
  });
185
195
  }
186
196
  set model(val) {
@@ -229,6 +239,7 @@ export class SdEditor {
229
239
  this.quillConfig.toolbar.container = this.toolbar;
230
240
  console.log('toolbar', this.quillConfig);
231
241
  }
242
+ this.ref.markForCheck();
232
243
  }
233
244
  ngAfterViewInit() {
234
245
  __classPrivateFieldGet(this, _subscription).add(this.formControl.valueChanges.subscribe((val) => {
@@ -247,10 +258,12 @@ SdEditor.decorators = [
247
258
  { type: Component, args: [{
248
259
  selector: 'sd-editor',
249
260
  template: "<label *ngIf=\"label\" class=\"d-block T14M\">{{label}} <span class=\"text-danger mb-2\" *ngIf=\"required\">*</span></label>\r\n<ng-container *ngIf=\"!formControl.disabled && !showHtmlEditor\">\r\n <quill-editor #editor [styles]=\"styles\" (onEditorCreated)=\"editorInit($event)\" [ngModel]=\"formControl.value\"\r\n (ngModelChange)=\"onModelChange($event)\" [id]=\"id\" [modules]=\"quillConfig\" [placeholder]=\"placeholder\"\r\n [maxLength]=\"maxlength\" >\r\n </quill-editor>\r\n <span class=\"d-block text-danger mt-5\" *ngIf=\"formControl.errors?.required\">\r\n {{'This field is required' | sdTranslate}}\r\n </span>\r\n <span class=\"d-block text-danger mt-5\" *ngIf=\"formControl.errors?.minlength\">\r\n {{'Max length' | sdTranslate}} <strong>{{minlength}}</strong>\r\n </span>\r\n <span class=\"d-block text-danger mt-5\" *ngIf=\"formControl.errors?.maxlength\">\r\n {{'Max length' | sdTranslate}} <strong>{{maxlength}}</strong>\r\n </span>\r\n</ng-container>\r\n<ng-container *ngIf=\"formControl.disabled\">\r\n <div [innerHtml]=\"formControl.value\"></div>\r\n</ng-container>\r\n<ng-container *ngIf=\"enableHTMLButton\">\r\n <sd-textarea [(model)]=\"modelHTML\" *ngIf=\"showHtmlEditor\" rows=\"20\"\r\n (modelChange)=\"onModelChange($event)\"></sd-textarea>\r\n <sd-button\r\n title=\"{{showHtmlEditor?'\u1EA8n':'Hi\u1EC7n'}} m\u00E3 HTML\"\r\n class=\"mr-8\"\r\n fontSet=\"material-icons-outlined\"\r\n (action)=\"onClickShowHtmlEditor()\"\r\n type=\"light\"\r\n ></sd-button>\r\n</ng-container>\r\n",
261
+ changeDetection: ChangeDetectionStrategy.OnPush,
250
262
  styles: ["::ng-deep img[alt=c-image-editor-quill]{max-width:80%}"]
251
263
  },] }
252
264
  ];
253
265
  SdEditor.ctorParameters = () => [
266
+ { type: NgZone },
254
267
  { type: ChangeDetectorRef },
255
268
  { type: SdApiService }
256
269
  ];
@@ -274,4 +287,4 @@ SdEditor.propDecorators = {
274
287
  hashTagValues: [{ type: Input }],
275
288
  sdChange: [{ type: Output }]
276
289
  };
277
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZWRpdG9yLyIsInNvdXJjZXMiOlsic3JjL2xpYi9lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUVMLE1BQU0sRUFDTixZQUFZLEVBQ1osaUJBQWlCLEVBRWxCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxXQUFXLEVBQWEsTUFBTSxFQUFlLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDckMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxlQUFlLENBQUM7QUFPdkIsTUFBTSxPQUFPLFFBQVE7SUFpSm5CLFlBQ1UsR0FBc0IsRUFDdEIsWUFBMEI7UUFEMUIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFsSnBDLGdCQUFRLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUM7UUFDeEIsT0FBRSxHQUFXLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDN0Isd0JBQWdCLElBQUksWUFBWSxFQUFFLEVBQUM7UUFHbkMseUJBQWU7UUFtQmYsYUFBUSxHQUFHLEtBQUssQ0FBQztRQXFCUCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFMUMsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFekIsV0FBTSxHQUFRLEVBQUMsTUFB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QUVMLEtBQUs7c0JBVUwsS0FBSzsrQkFDTCxLQUFLOzRCQUtMLEtBQUs7NEJBQ0wsS0FBSzt1QkFxRUwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdDaGlsZCxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtRdWlsbEVkaXRvckNvbXBvbmVudH0gZnJvbSAnbmd4LXF1aWxsJztcclxuaW1wb3J0ICogYXMgdXVpZCBmcm9tICd1dWlkJztcclxuaW1wb3J0IHtGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBOZ0Zvcm0sIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7Q29uc3RhbnRzfSBmcm9tICcuL2NvbnN0YW50JztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1NkQXBpU2VydmljZX0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9hcGknO1xyXG5pbXBvcnQgJ3F1aWxsLW1lbnRpb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VkaXRvci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RFZGl0b3IgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgI25hbWUgPSBgTiR7dXVpZC52NCgpfWA7XHJcbiAgaWQ6IHN0cmluZyA9IGBJJHt1dWlkLnY0KCl9YDtcclxuICAjc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2VkaXRvcicpIGVkaXRvcjogUXVpbGxFZGl0b3JDb21wb25lbnQ7XHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcclxuICAjbW9kZWw6IHN0cmluZztcclxuICBASW5wdXQoKSBzZXQgbW9kZWwodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuI21vZGVsID0gdmFsO1xyXG4gICAgdGhpcy5tb2RlbEhUTUwgPSB2YWw7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuI21vZGVsLCB7XHJcbiAgICAgIGVtaXRFdmVudDogZmFsc2VcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGRpc2FibGVkKHZhbDogYm9vbGVhbiB8ICcnKSB7XHJcbiAgICB2YWwgPSAodmFsID09PSAnJykgfHwgdmFsO1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXF1aXJlZCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBzZXQgcFJlcXVpcmVkKHZhbDogYm9vbGVhbiB8ICcnKSB7XHJcbiAgICB0aGlzLnJlcXVpcmVkID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgbWlubGVuZ3RoOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgnbWlubGVuZ3RoJykgc2V0IF9taW5sZW5ndGgodmFsOiBudW1iZXIpIHtcclxuICAgIHRoaXMubWlubGVuZ3RoID0gK3ZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgbWF4bGVuZ3RoOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgnbWF4bGVuZ3RoJykgc2V0IF9tYXhsZW5ndGgodmFsOiBudW1iZXIpIHtcclxuICAgIHRoaXMubWF4bGVuZ3RoID0gK3ZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQElucHV0KCkgc3R5bGVzOiBhbnkgPSB7aGVpZ2h0OiAnMjUwcHgnfTtcclxuXHJcbiAgZm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuXHJcbiAgQElucHV0KCkgZG9tYWluID0gJyc7XHJcbiAgQElucHV0KCkgdXJsVXBsb2FkSW1hZ2U6IHN0cmluZztcclxuICAjZm9ybTogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIHNldCBmb3JtKHZhbDogTmdGb3JtIHwgRm9ybUdyb3VwKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBOZ0Zvcm0pIHtcclxuICAgICAgICB0aGlzLiNmb3JtID0gdmFsLmZvcm07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy4jZm9ybSA9IHZhbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgdG9vbGJhcjogYW55O1xyXG4gIEBJbnB1dCgpIGVuYWJsZUhUTUxCdXR0b24gPSBmYWxzZTtcclxuICBzaG93SHRtbEVkaXRvciA9IGZhbHNlO1xyXG4gIG1vZGVsSFRNTDogc3RyaW5nO1xyXG5cclxuICBxdWlsbEV2ZW50OiBhbnk7XHJcbiAgQElucHV0KCkgbWVudGlvblZhbHVlczogeyBpZDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBsaW5rPzogc3RyaW5nIH1bXTtcclxuICBASW5wdXQoKSBoYXNoVGFnVmFsdWVzOiB7IGlkOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGxpbms/OiBzdHJpbmcgfVtdO1xyXG4gIHF1aWxsQ29uZmlnID0ge1xyXG4gICAgLy8gdG9vbGJhcjogJy50b29sYmFyJyxcclxuICAgIHRvb2xiYXI6IHtcclxuICAgICAgY29udGFpbmVyOiBbXHJcbiAgICAgICAgWydib2xkJywgJ2l0YWxpYycsICd1bmRlcmxpbmUnLCAnc3RyaWtlJ10sICAgICAgICAvLyB0b2dnbGVkIGJ1dHRvbnNcclxuICAgICAgICBbJ2Jsb2NrcXVvdGUnLCAnY29kZS1ibG9jayddLFxyXG5cclxuICAgICAgICBbeydoZWFkZXInOiAxfSwgeydoZWFkZXInOiAyfV0sICAgICAgICAgICAgICAgLy8gY3VzdG9tIGJ1dHRvbiB2YWx1ZXNcclxuICAgICAgICBbeydsaXN0JzogJ29yZGVyZWQnfSwgeydsaXN0JzogJ2J1bGxldCd9XSxcclxuICAgICAgICBbeydzY3JpcHQnOiAnc3ViJ30sIHsnc2NyaXB0JzogJ3N1cGVyJ31dLCAgICAgIC8vIHN1cGVyc2NyaXB0L3N1YnNjcmlwdFxyXG4gICAgICAgIFt7J2luZGVudCc6ICctMSd9LCB7J2luZGVudCc6ICcrMSd9XSwgICAgICAgICAgLy8gb3V0ZGVudC9pbmRlbnRcclxuICAgICAgICBbeydkaXJlY3Rpb24nOiAncnRsJ31dLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0ZXh0IGRpcmVjdGlvblxyXG5cclxuICAgICAgICBbeydzaXplJzogWydzbWFsbCcsIGZhbHNlLCAnbGFyZ2UnLCAnaHVnZSddfV0sICAvLyBjdXN0b20gZHJvcGRvd25cclxuICAgICAgICBbeydoZWFkZXInOiBbMSwgMiwgMywgNCwgNSwgNiwgZmFsc2VdfV0sXHJcblxyXG4gICAgICAgIFt7J2NvbG9yJzogW119LCB7J2JhY2tncm91bmQnOiBbXX1dLCAgICAgICAgICAvLyBkcm9wZG93biB3aXRoIGRlZmF1bHRzIGZyb20gdGhlbWVcclxuICAgICAgICBbeydmb250JzogW119XSxcclxuICAgICAgICBbeydhbGlnbic6IFtdfV0sXHJcblxyXG4gICAgICAgIFsnY2xlYW4nXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBmb3JtYXR0aW5nIGJ1dHRvblxyXG5cclxuICAgICAgICBbJ2xpbmsnLCAnaW1hZ2UnLCAndmlkZW8nXSAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsaW5rIGFuZCBpbWFnZSwgdmlkZW9cclxuICAgICAgXVxyXG4gICAgfSxcclxuICAgIG1lbnRpb246IHtcclxuICAgICAgYWxsb3dlZENoYXJzOiAvXltBLVphLXowLTlcXHPDhcOEw5bDpcOkw7YuXy1dKiQvLFxyXG4gICAgICBtZW50aW9uRGVub3RhdGlvbkNoYXJzOiBbJ0AnLCAnIyddLFxyXG4gICAgICBzb3VyY2U6IChzZWFyY2hUZXJtLCByZW5kZXJMaXN0LCBtZW50aW9uQ2hhcikgPT4ge1xyXG4gICAgICAgIGlmICgodGhpcy5tZW50aW9uVmFsdWVzICYmIG1lbnRpb25DaGFyID09PSAnQCcpIHx8ICh0aGlzLmhhc2hUYWdWYWx1ZXMgJiYgbWVudGlvbkNoYXIgPT09ICcjJykpIHtcclxuICAgICAgICAgIGxldCB2YWx1ZXM7XHJcbiAgICAgICAgICBpZiAobWVudGlvbkNoYXIgPT09ICdAJykge1xyXG4gICAgICAgICAgICB2YWx1ZXMgPSB0aGlzLm1lbnRpb25WYWx1ZXM7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lbnRpb25DaGFyID09PSAnIycpIHtcclxuICAgICAgICAgICAgdmFsdWVzID0gdGhpcy5oYXNoVGFnVmFsdWVzO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFsdWVzID0gW107XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHNlYXJjaFRlcm0ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJlbmRlckxpc3QodmFsdWVzLCBzZWFyY2hUZXJtKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZXMgPSBbXTtcclxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci1mb3Itb2ZcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgICAgICAgIGlmICh+dmFsdWVzW2ldLnZhbHVlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpKSB7XHJcbiAgICAgICAgICAgICAgICBtYXRjaGVzLnB1c2godmFsdWVzW2ldKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVuZGVyTGlzdChtYXRjaGVzLCBzZWFyY2hUZXJtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAga2V5Ym9hcmQ6IHtcclxuICAgICAgYmluZGluZ3M6IHtcclxuICAgICAgICBlbnRlcjoge1xyXG4gICAgICAgICAga2V5OiAxMyxcclxuICAgICAgICAgIGhhbmRsZXI6IChyYW5nZSwgY29udGV4dCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICB0ZXh0TGVuZ3RoOiBudW1iZXIgPSAwO1xyXG4gIEBPdXRwdXQoKSBzZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgc2RBcGlTZXJ2aWNlOiBTZEFwaVNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy4jZm9ybT8uYWRkQ29udHJvbCh0aGlzLiNuYW1lLCB0aGlzLmZvcm1Db250cm9sKTtcclxuICAgIGlmICh0aGlzLnRvb2xiYXIpIHtcclxuICAgICAgdGhpcy5xdWlsbENvbmZpZy50b29sYmFyLmNvbnRhaW5lciA9IHRoaXMudG9vbGJhcjtcclxuICAgICAgY29uc29sZS5sb2coJ3Rvb2xiYXInLCB0aGlzLnF1aWxsQ29uZmlnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHZhbCk7XHJcbiAgICAgIHRoaXMuc2RDaGFuZ2UuZW1pdCh2YWwpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLiNmb3JtPy5yZW1vdmVDb250cm9sKHRoaXMuI25hbWUpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAjdXBkYXRlVmFsaWRhdG9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuY2xlYXJBc3luY1ZhbGlkYXRvcnMoKTtcclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1pbmxlbmd0aCA+IDApIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHRoaXMubWlubGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tYXhsZW5ndGggPiAwKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm1heGxlbmd0aCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuICBlZGl0b3JJbml0ID0gKHF1aWxsKSA9PiB7XHJcbiAgICB0aGlzLnF1aWxsRXZlbnQgPSBxdWlsbDtcclxuICAgIC8vIGNvbnN0IHR4dEFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpO1xyXG4gICAgLy8gdHh0QXJlYS5zdHlsZS5jc3NUZXh0ID1cclxuICAgIC8vICAgJ3dpZHRoOiAxMDAlO21hcmdpbjogMHB4O2JhY2tncm91bmQ6IHJnYigyOSwgMjksIDI5KTsnICtcclxuICAgIC8vICAgJ2JveC1zaXppbmc6IGJvcmRlci1ib3g7Y29sb3I6IHJnYigyMDQsIDIwNCwgMjA0KTsnICtcclxuICAgIC8vICAgJ2ZvbnQtc2l6ZTogMTVweDtvdXRsaW5lOiBub25lO3BhZGRpbmc6IDIwcHg7JyArXHJcbiAgICAvLyAgICdsaW5lLWhlaWdodDogMjRweDtmb250LWZhbWlseTogQ29uc29sYXMsIE1lbmxvLCBNb25hY28sICZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7LCBtb25vc3BhY2U7JyArXHJcbiAgICAvLyAgICdwb3NpdGlvbjogYWJzb2x1dGU7dG9wOiAwO2JvdHRvbTogMDtib3JkZXI6IG5vbmU7ZGlzcGxheTpub25lJztcclxuXHJcbiAgICAvLyBjb25zdCBodG1sRWRpdG9yID0gcXVpbGwuYWRkQ29udGFpbmVyKCdxbC1jdXN0b20nKTtcclxuICAgIC8vIGh0bWxFZGl0b3IuYXBwZW5kQ2hpbGQodHh0QXJlYSk7XHJcblxyXG4gICAgLy8gY29uc3QgbXlFZGl0b3IgPSBxdWlsbC5jb250YWluZXI7XHJcbiAgICAvLyBxdWlsbC5vbigndGV4dC1jaGFuZ2UnLCAoZGVsdGEsIG9sZERlbHRhLCBzb3VyY2UpID0+IHtcclxuICAgIC8vICAgY29uc3QgaHRtbCA9IG15RWRpdG9yLmNoaWxkcmVuWzBdLmlubmVySFRNTDtcclxuICAgIC8vICAgdHh0QXJlYS52YWx1ZSA9IGh0bWw7XHJcbiAgICAvLyAgIC8vIGlmIChxdWlsbC5nZXRMZW5ndGgoKSA+IHRoaXMubWF4bGVuZ3RoKSB7XHJcbiAgICAvLyAgIC8vICAgcXVpbGwuZGVsZXRlVGV4dCh0aGlzLm1heGxlbmd0aCwgcXVpbGwuZ2V0TGVuZ3RoKCkpO1xyXG4gICAgLy8gICAvLyB9XHJcbiAgICAvLyAgIC8vIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoaHRtbCk7XHJcbiAgICAvLyB9KTtcclxuXHJcbiAgICBjb25zdCBzZWxmID0gdGhpcztcclxuICAgIHF1aWxsLmdldE1vZHVsZSgndG9vbGJhcicpLmFkZEhhbmRsZXIoJ2ltYWdlJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICBsZXQgZmlsZUlucHV0ID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQucWwtaW1hZ2VbdHlwZT1maWxlXScpO1xyXG5cclxuICAgICAgaWYgKGZpbGVJbnB1dCA9PSBudWxsKSB7XHJcbiAgICAgICAgZmlsZUlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcclxuICAgICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgQ29uc3RhbnRzLkZJTEUpO1xyXG4gICAgICAgIGZpbGVJbnB1dC5zZXRBdHRyaWJ1dGUoJ2FjY2VwdCcsICdpbWFnZS9wbmcsIGltYWdlL2dpZiwgaW1hZ2UvanBlZywgaW1hZ2UvYm1wLCBpbWFnZS94LWljb24nKTtcclxuICAgICAgICBmaWxlSW5wdXQuY2xhc3NMaXN0LmFkZCgncWwtaW1hZ2UnKTtcclxuICAgICAgICBmaWxlSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZmlsZXMgPSBmaWxlSW5wdXQuZmlsZXM7XHJcbiAgICAgICAgICBjb25zdCByYW5nZSA9IHRoaXMucXVpbGwuZ2V0U2VsZWN0aW9uKHRydWUpO1xyXG4gICAgICAgICAgaWYgKCFmaWxlcyB8fCAhZmlsZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICAgICAgZm9ybURhdGEuYXBwZW5kKENvbnN0YW50cy5GSUxFLCBmaWxlc1swXSk7XHJcblxyXG4gICAgICAgICAgdGhpcy5xdWlsbC5lbmFibGUoZmFsc2UpO1xyXG4gICAgICAgICAgLyp0aGlzLmFwaVNlcnZpY2UucG9zdCh0aGlzLmRvbWFpbiArIHRoaXMudXJsVXBsb2FkSW1hZ2UsIGZvcm1EYXRhKS5zdWJzY3JpYmUoKHJlc3A6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnF1aWxsLmVuYWJsZSh0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy5xdWlsbC5lZGl0b3IuaW5zZXJ0RW1iZWQocmFuZ2UuaW5kZXgsICdpbWFnZScsIHJlc3AuZGF0YS5pbWFnZVVybCB8fCByZXNwLmRhdGEucHVibGlzaF91cmwgfHwgIHJlc3AudXJsKTtcclxuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMucXVpbGwuZ2V0Q29udGVudHMoKTtcclxuICAgICAgICAgICAgdGhpcy5xdWlsbC5zZXRDb250ZW50cyhjb250ZW50KTtcclxuICAgICAgICAgICAgdGhpcy5xdWlsbC5zZXRTZWxlY3Rpb24ocmFuZ2UuaW5kZXggKyAxLCAnc2lsZW50Jyk7XHJcbiAgICAgICAgICAgIGZpbGVJbnB1dC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgfSk7Ki9cclxuICAgICAgICAgIHNlbGYuI3VwbG9hZEltYWdlKGZvcm1EYXRhLCBxdWlsbCwgcmFuZ2UsIGZpbGVJbnB1dCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQoZmlsZUlucHV0KTtcclxuICAgICAgfVxyXG4gICAgICBmaWxlSW5wdXQuY2xpY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25Nb2RlbENoYW5nZSA9ICh2YWw6IHN0cmluZykgPT4ge1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWwpO1xyXG4gICAgdGhpcy5tb2RlbEhUTUwgPSB2YWw7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrU2hvd0h0bWxFZGl0b3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnNob3dIdG1sRWRpdG9yID0gIXRoaXMuc2hvd0h0bWxFZGl0b3I7XHJcbiAgfVxyXG5cclxuICAjdXBsb2FkSW1hZ2UgPSAoZm9ybURhdGEsIHF1aWxsLCByYW5nZSwgZmlsZUlucHV0KSA9PiB7XHJcbiAgICBpZiAoIXRoaXMudXJsVXBsb2FkSW1hZ2UpIHtcclxuICAgICAgdGhpcy51cmxVcGxvYWRJbWFnZSA9ICcvcGFydG5lci92Mi9tZXJjaGFuZGlzZS9maWxlL3VwbG9hZHVzZXJmaWxlJztcclxuICAgIH1cclxuICAgIC8vIHRoaXMuZG9tYWluID0gJ2h0dHBzOi8vYXBpLWNvbW1lcmNlLXFjLnZpbmlkLmRldic7XHJcbiAgICB0aGlzLnNkQXBpU2VydmljZS5wb3N0KHRoaXMudXJsVXBsb2FkSW1hZ2UsIGZvcm1EYXRhKS50aGVuKChyZXNwOiBhbnkpID0+IHtcclxuICAgICAgcXVpbGwuZW5hYmxlKHRydWUpO1xyXG4gICAgICAvLyBxdWlsbC5lZGl0b3IuaW5zZXJ0RW1iZWQocmFuZ2UuaW5kZXgsICdpbWFnZScsIHJlc3A/LmRhdGE/LmltYWdlVXJsIHx8IHJlc3A/LmRhdGE/LnB1Ymxpc2hfdXJsIHx8IHJlc3A/LnVybCB8fCAnJyk7XHJcbiAgICAgIHF1aWxsLmdldE1vZHVsZSgnY2xpcGJvYXJkJykuZGFuZ2Vyb3VzbHlQYXN0ZUhUTUwocmFuZ2UuaW5kZXgsICc8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiJyArIChyZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpXHJcbiAgICAgICAgKyAnXCI+PGltZyBzcmM9XCInICsgKHJlc3A/LmRhdGE/LmltYWdlVXJsIHx8IHJlc3A/LmRhdGE/LnB1Ymxpc2hfdXJsIHx8IHJlc3A/LnVybCB8fCAnJykgKyAnXCIgYWx0PVwiYy1pbWFnZS1lZGl0b3ItcXVpbGxcIj48L2E+JywgJ3VzZXInKTtcclxuICAgICAgLy8gcXVpbGwuaW5zZXJ0VGV4dCgpO1xyXG4gICAgICBjb25zdCBjb250ZW50ID0gcXVpbGwuZ2V0Q29udGVudHMoKTtcclxuICAgICAgcXVpbGwuc2V0Q29udGVudHMoY29udGVudCk7XHJcbiAgICAgIHF1aWxsLnNldFNlbGVjdGlvbihyYW5nZS5pbmRleCArIDEsICd1c2VyJyk7XHJcbiAgICAgIGZpbGVJbnB1dC52YWx1ZSA9ICcnO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZWRpdG9yLyIsInNvdXJjZXMiOlsic3JjL2xpYi9lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUVMLE1BQU0sRUFDTixZQUFZLEVBQ1osaUJBQWlCLEVBQ1MsdUJBQXVCLEVBQUUsTUFBTSxFQUMxRCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUMsV0FBVyxFQUFhLE1BQU0sRUFBZSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ3JDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sZUFBZSxDQUFDO0FBUXZCLE1BQU0sT0FBTyxRQUFRO0lBaUpuQixZQUNVLE1BQWMsRUFDZCxHQUFzQixFQUN0QixZQUEwQjtRQUYxQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFuSnBDLGdCQUFRLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUM7UUFDeEIsT0FBRSxHQUFXLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDN0Isd0JBQWdCLElBQUksWUFBWSxFQUFFLEVBQUM7UUFHbkMseUJBQWU7UUFtQmYsYUFBUSxHQUFHLEtBQUssQ0FBQztRQXFCUCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFV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QUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsV0FBVzs7UUFDVCxtRkFBWSxhQUFhLHNDQUFhO1FBQ3RDLDRDQUFtQixXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzs7O1lBakxGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsV0FBVztnQkFDckIsb2tEQUFzQztnQkFFdEMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUFmb0QsTUFBTTtZQUR6RCxpQkFBaUI7WUFRWCxZQUFZOzs7cUJBYWpCLFNBQVMsU0FBQyxRQUFRO29CQUNsQixLQUFLO29CQUVMLEtBQUs7dUJBU0wsS0FBSzt3QkFXTCxLQUFLO3lCQU9MLEtBQUssU0FBQyxXQUFXO3lCQU9qQixLQUFLLFNBQUMsV0FBVzswQkFLakIsTUFBTTswQkFFTixLQUFLO3FCQUVMLEtBQUs7cUJBSUwsS0FBSzs2QkFDTCxLQUFLO21CQUVMLEtBQUs7c0JBVUwsS0FBSzsrQkFDTCxLQUFLOzRCQUtMLEtBQUs7NEJBQ0wsS0FBSzt1QkFxRUwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdDaGlsZCxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBOZ1pvbmVcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtRdWlsbEVkaXRvckNvbXBvbmVudH0gZnJvbSAnbmd4LXF1aWxsJztcclxuaW1wb3J0ICogYXMgdXVpZCBmcm9tICd1dWlkJztcclxuaW1wb3J0IHtGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBOZ0Zvcm0sIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7Q29uc3RhbnRzfSBmcm9tICcuL2NvbnN0YW50JztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1NkQXBpU2VydmljZX0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9hcGknO1xyXG5pbXBvcnQgJ3F1aWxsLW1lbnRpb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VkaXRvci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZEVkaXRvciBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAjbmFtZSA9IGBOJHt1dWlkLnY0KCl9YDtcclxuICBpZDogc3RyaW5nID0gYEkke3V1aWQudjQoKX1gO1xyXG4gICNzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgQFZpZXdDaGlsZCgnZWRpdG9yJykgZWRpdG9yOiBRdWlsbEVkaXRvckNvbXBvbmVudDtcclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xyXG4gICNtb2RlbDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNldCBtb2RlbCh2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy4jbW9kZWwgPSB2YWw7XHJcbiAgICB0aGlzLm1vZGVsSFRNTCA9IHZhbDtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy4jbW9kZWwsIHtcclxuICAgICAgZW1pdEV2ZW50OiBmYWxzZVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgZGlzYWJsZWQodmFsOiBib29sZWFuIHwgJycpIHtcclxuICAgIHZhbCA9ICh2YWwgPT09ICcnKSB8fCB2YWw7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5lbmFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlcXVpcmVkID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHNldCBwUmVxdWlyZWQodmFsOiBib29sZWFuIHwgJycpIHtcclxuICAgIHRoaXMucmVxdWlyZWQgPSAodmFsID09PSAnJykgfHwgdmFsO1xyXG4gICAgdGhpcy4jdXBkYXRlVmFsaWRhdG9yKCk7XHJcbiAgfVxyXG5cclxuICBtaW5sZW5ndGg6IG51bWJlcjtcclxuXHJcbiAgQElucHV0KCdtaW5sZW5ndGgnKSBzZXQgX21pbmxlbmd0aCh2YWw6IG51bWJlcikge1xyXG4gICAgdGhpcy5taW5sZW5ndGggPSArdmFsO1xyXG4gICAgdGhpcy4jdXBkYXRlVmFsaWRhdG9yKCk7XHJcbiAgfVxyXG5cclxuICBtYXhsZW5ndGg6IG51bWJlcjtcclxuXHJcbiAgQElucHV0KCdtYXhsZW5ndGgnKSBzZXQgX21heGxlbmd0aCh2YWw6IG51bWJlcikge1xyXG4gICAgdGhpcy5tYXhsZW5ndGggPSArdmFsO1xyXG4gICAgdGhpcy4jdXBkYXRlVmFsaWRhdG9yKCk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgbW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xyXG5cclxuICBASW5wdXQoKSBzdHlsZXM6IGFueSA9IHtoZWlnaHQ6ICcyNTBweCd9O1xyXG5cclxuICBmb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG5cclxuICBASW5wdXQoKSBkb21haW4gPSAnJztcclxuICBASW5wdXQoKSB1cmxVcGxvYWRJbWFnZTogc3RyaW5nO1xyXG4gICNmb3JtOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgc2V0IGZvcm0odmFsOiBOZ0Zvcm0gfCBGb3JtR3JvdXApIHtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIE5nRm9ybSkge1xyXG4gICAgICAgIHRoaXMuI2Zvcm0gPSB2YWwuZm9ybTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLiNmb3JtID0gdmFsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSB0b29sYmFyOiBhbnk7XHJcbiAgQElucHV0KCkgZW5hYmxlSFRNTEJ1dHRvbiA9IGZhbHNlO1xyXG4gIHNob3dIdG1sRWRpdG9yID0gZmFsc2U7XHJcbiAgbW9kZWxIVE1MOiBzdHJpbmc7XHJcblxyXG4gIHF1aWxsRXZlbnQ6IGFueTtcclxuICBASW5wdXQoKSBtZW50aW9uVmFsdWVzOiB7IGlkOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGxpbms/OiBzdHJpbmcgfVtdO1xyXG4gIEBJbnB1dCgpIGhhc2hUYWdWYWx1ZXM6IHsgaWQ6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbGluaz86IHN0cmluZyB9W107XHJcbiAgcXVpbGxDb25maWcgPSB7XHJcbiAgICAvLyB0b29sYmFyOiAnLnRvb2xiYXInLFxyXG4gICAgdG9vbGJhcjoge1xyXG4gICAgICBjb250YWluZXI6IFtcclxuICAgICAgICBbJ2JvbGQnLCAnaXRhbGljJywgJ3VuZGVybGluZScsICdzdHJpa2UnXSwgICAgICAgIC8vIHRvZ2dsZWQgYnV0dG9uc1xyXG4gICAgICAgIFsnYmxvY2txdW90ZScsICdjb2RlLWJsb2NrJ10sXHJcblxyXG4gICAgICAgIFt7J2hlYWRlcic6IDF9LCB7J2hlYWRlcic6IDJ9XSwgICAgICAgICAgICAgICAvLyBjdXN0b20gYnV0dG9uIHZhbHVlc1xyXG4gICAgICAgIFt7J2xpc3QnOiAnb3JkZXJlZCd9LCB7J2xpc3QnOiAnYnVsbGV0J31dLFxyXG4gICAgICAgIFt7J3NjcmlwdCc6ICdzdWInfSwgeydzY3JpcHQnOiAnc3VwZXInfV0sICAgICAgLy8gc3VwZXJzY3JpcHQvc3Vic2NyaXB0XHJcbiAgICAgICAgW3snaW5kZW50JzogJy0xJ30sIHsnaW5kZW50JzogJysxJ31dLCAgICAgICAgICAvLyBvdXRkZW50L2luZGVudFxyXG4gICAgICAgIFt7J2RpcmVjdGlvbic6ICdydGwnfV0sICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRleHQgZGlyZWN0aW9uXHJcblxyXG4gICAgICAgIFt7J3NpemUnOiBbJ3NtYWxsJywgZmFsc2UsICdsYXJnZScsICdodWdlJ119XSwgIC8vIGN1c3RvbSBkcm9wZG93blxyXG4gICAgICAgIFt7J2hlYWRlcic6IFsxLCAyLCAzLCA0LCA1LCA2LCBmYWxzZV19XSxcclxuXHJcbiAgICAgICAgW3snY29sb3InOiBbXX0sIHsnYmFja2dyb3VuZCc6IFtdfV0sICAgICAgICAgIC8vIGRyb3Bkb3duIHdpdGggZGVmYXVsdHMgZnJvbSB0aGVtZVxyXG4gICAgICAgIFt7J2ZvbnQnOiBbXX1dLFxyXG4gICAgICAgIFt7J2FsaWduJzogW119XSxcclxuXHJcbiAgICAgICAgWydjbGVhbiddLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIGZvcm1hdHRpbmcgYnV0dG9uXHJcblxyXG4gICAgICAgIFsnbGluaycsICdpbWFnZScsICd2aWRlbyddICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpbmsgYW5kIGltYWdlLCB2aWRlb1xyXG4gICAgICBdXHJcbiAgICB9LFxyXG4gICAgbWVudGlvbjoge1xyXG4gICAgICBhbGxvd2VkQ2hhcnM6IC9eW0EtWmEtejAtOVxcc8OFw4TDlsOlw6TDti5fLV0qJC8sXHJcbiAgICAgIG1lbnRpb25EZW5vdGF0aW9uQ2hhcnM6IFsnQCcsICcjJ10sXHJcbiAgICAgIHNvdXJjZTogKHNlYXJjaFRlcm0sIHJlbmRlckxpc3QsIG1lbnRpb25DaGFyKSA9PiB7XHJcbiAgICAgICAgaWYgKCh0aGlzLm1lbnRpb25WYWx1ZXMgJiYgbWVudGlvbkNoYXIgPT09ICdAJykgfHwgKHRoaXMuaGFzaFRhZ1ZhbHVlcyAmJiBtZW50aW9uQ2hhciA9PT0gJyMnKSkge1xyXG4gICAgICAgICAgbGV0IHZhbHVlcztcclxuICAgICAgICAgIGlmIChtZW50aW9uQ2hhciA9PT0gJ0AnKSB7XHJcbiAgICAgICAgICAgIHZhbHVlcyA9IHRoaXMubWVudGlvblZhbHVlcztcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVudGlvbkNoYXIgPT09ICcjJykge1xyXG4gICAgICAgICAgICB2YWx1ZXMgPSB0aGlzLmhhc2hUYWdWYWx1ZXM7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YWx1ZXMgPSBbXTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoc2VhcmNoVGVybS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmVuZGVyTGlzdCh2YWx1ZXMsIHNlYXJjaFRlcm0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IFtdO1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgICAgICAgICAgaWYgKH52YWx1ZXNbaV0udmFsdWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSkpIHtcclxuICAgICAgICAgICAgICAgIG1hdGNoZXMucHVzaCh2YWx1ZXNbaV0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZW5kZXJMaXN0KG1hdGNoZXMsIHNlYXJjaFRlcm0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICBrZXlib2FyZDoge1xyXG4gICAgICBiaW5kaW5nczoge1xyXG4gICAgICAgIGVudGVyOiB7XHJcbiAgICAgICAgICBrZXk6IDEzLFxyXG4gICAgICAgICAgaGFuZGxlcjogKHJhbmdlLCBjb250ZXh0KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHRleHRMZW5ndGg6IG51bWJlciA9IDA7XHJcbiAgQE91dHB1dCgpIHNkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgc2RBcGlTZXJ2aWNlOiBTZEFwaVNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy4jZm9ybT8uYWRkQ29udHJvbCh0aGlzLiNuYW1lLCB0aGlzLmZvcm1Db250cm9sKTtcclxuICAgIGlmICh0aGlzLnRvb2xiYXIpIHtcclxuICAgICAgdGhpcy5xdWlsbENvbmZpZy50b29sYmFyLmNvbnRhaW5lciA9IHRoaXMudG9vbGJhcjtcclxuICAgICAgY29uc29sZS5sb2coJ3Rvb2xiYXInLCB0aGlzLnF1aWxsQ29uZmlnKTtcclxuICAgIH1cclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodmFsKTtcclxuICAgICAgdGhpcy5zZENoYW5nZS5lbWl0KHZhbCk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuI2Zvcm0/LnJlbW92ZUNvbnRyb2wodGhpcy4jbmFtZSk7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gICN1cGRhdGVWYWxpZGF0b3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5jbGVhckFzeW5jVmFsaWRhdG9ycygpO1xyXG4gICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG4gICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubWlubGVuZ3RoID4gMCkge1xyXG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgodGhpcy5taW5sZW5ndGgpKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1heGxlbmd0aCA+IDApIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMubWF4bGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgZWRpdG9ySW5pdCA9IChxdWlsbCkgPT4ge1xyXG4gICAgdGhpcy5xdWlsbEV2ZW50ID0gcXVpbGw7XHJcbiAgICAvLyBjb25zdCB0eHRBcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcclxuICAgIC8vIHR4dEFyZWEuc3R5bGUuY3NzVGV4dCA9XHJcbiAgICAvLyAgICd3aWR0aDogMTAwJTttYXJnaW46IDBweDtiYWNrZ3JvdW5kOiByZ2IoMjksIDI5LCAyOSk7JyArXHJcbiAgICAvLyAgICdib3gtc2l6aW5nOiBib3JkZXItYm94O2NvbG9yOiByZ2IoMjA0LCAyMDQsIDIwNCk7JyArXHJcbiAgICAvLyAgICdmb250LXNpemU6IDE1cHg7b3V0bGluZTogbm9uZTtwYWRkaW5nOiAyMHB4OycgK1xyXG4gICAgLy8gICAnbGluZS1oZWlnaHQ6IDI0cHg7Zm9udC1mYW1pbHk6IENvbnNvbGFzLCBNZW5sbywgTW9uYWNvLCAmcXVvdDtDb3VyaWVyIE5ldyZxdW90OywgbW9ub3NwYWNlOycgK1xyXG4gICAgLy8gICAncG9zaXRpb246IGFic29sdXRlO3RvcDogMDtib3R0b206IDA7Ym9yZGVyOiBub25lO2Rpc3BsYXk6bm9uZSc7XHJcblxyXG4gICAgLy8gY29uc3QgaHRtbEVkaXRvciA9IHF1aWxsLmFkZENvbnRhaW5lcigncWwtY3VzdG9tJyk7XHJcbiAgICAvLyBodG1sRWRpdG9yLmFwcGVuZENoaWxkKHR4dEFyZWEpO1xyXG5cclxuICAgIC8vIGNvbnN0IG15RWRpdG9yID0gcXVpbGwuY29udGFpbmVyO1xyXG4gICAgLy8gcXVpbGwub24oJ3RleHQtY2hhbmdlJywgKGRlbHRhLCBvbGREZWx0YSwgc291cmNlKSA9PiB7XHJcbiAgICAvLyAgIGNvbnN0IGh0bWwgPSBteUVkaXRvci5jaGlsZHJlblswXS5pbm5lckhUTUw7XHJcbiAgICAvLyAgIHR4dEFyZWEudmFsdWUgPSBodG1sO1xyXG4gICAgLy8gICAvLyBpZiAocXVpbGwuZ2V0TGVuZ3RoKCkgPiB0aGlzLm1heGxlbmd0aCkge1xyXG4gICAgLy8gICAvLyAgIHF1aWxsLmRlbGV0ZVRleHQodGhpcy5tYXhsZW5ndGgsIHF1aWxsLmdldExlbmd0aCgpKTtcclxuICAgIC8vICAgLy8gfVxyXG4gICAgLy8gICAvLyB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGh0bWwpO1xyXG4gICAgLy8gfSk7XHJcblxyXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgIHF1aWxsLmdldE1vZHVsZSgndG9vbGJhcicpLmFkZEhhbmRsZXIoJ2ltYWdlJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGxldCBmaWxlSW5wdXQgPSB0aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdpbnB1dC5xbC1pbWFnZVt0eXBlPWZpbGVdJyk7XHJcbiAgXHJcbiAgICAgICAgaWYgKGZpbGVJbnB1dCA9PSBudWxsKSB7XHJcbiAgICAgICAgICBmaWxlSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gICAgICAgICAgZmlsZUlucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsIENvbnN0YW50cy5GSUxFKTtcclxuICAgICAgICAgIGZpbGVJbnB1dC5zZXRBdHRyaWJ1dGUoJ2FjY2VwdCcsICdpbWFnZS9wbmcsIGltYWdlL2dpZiwgaW1hZ2UvanBlZywgaW1hZ2UvYm1wLCBpbWFnZS94LWljb24nKTtcclxuICAgICAgICAgIGZpbGVJbnB1dC5jbGFzc0xpc3QuYWRkKCdxbC1pbWFnZScpO1xyXG4gICAgICAgICAgZmlsZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBmaWxlSW5wdXQuZmlsZXM7XHJcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gdGhpcy5xdWlsbC5nZXRTZWxlY3Rpb24odHJ1ZSk7XHJcbiAgICAgICAgICAgIGlmICghZmlsZXMgfHwgIWZpbGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoQ29uc3RhbnRzLkZJTEUsIGZpbGVzWzBdKTtcclxuICBcclxuICAgICAgICAgICAgdGhpcy5xdWlsbC5lbmFibGUoZmFsc2UpO1xyXG4gICAgICAgICAgICAvKnRoaXMuYXBpU2VydmljZS5wb3N0KHRoaXMuZG9tYWluICsgdGhpcy51cmxVcGxvYWRJbWFnZSwgZm9ybURhdGEpLnN1YnNjcmliZSgocmVzcDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5xdWlsbC5lbmFibGUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5xdWlsbC5lZGl0b3IuaW5zZXJ0RW1iZWQocmFuZ2UuaW5kZXgsICdpbWFnZScsIHJlc3AuZGF0YS5pbWFnZVVybCB8fCByZXNwLmRhdGEucHVibGlzaF91cmwgfHwgIHJlc3AudXJsKTtcclxuICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5xdWlsbC5nZXRDb250ZW50cygpO1xyXG4gICAgICAgICAgICAgIHRoaXMucXVpbGwuc2V0Q29udGVudHMoY29udGVudCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5xdWlsbC5zZXRTZWxlY3Rpb24ocmFuZ2UuaW5kZXggKyAxLCAnc2lsZW50Jyk7XHJcbiAgICAgICAgICAgICAgZmlsZUlucHV0LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgIH0pOyovXHJcbiAgICAgICAgICAgIHNlbGYuI3VwbG9hZEltYWdlKGZvcm1EYXRhLCBxdWlsbCwgcmFuZ2UsIGZpbGVJbnB1dCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKGZpbGVJbnB1dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbGVJbnB1dC5jbGljaygpO1xyXG4gICAgICB9KTtcclxuICAgIH0pXHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIG9uTW9kZWxDaGFuZ2UgPSAodmFsOiBzdHJpbmcpID0+IHtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsKTtcclxuICAgIHRoaXMubW9kZWxIVE1MID0gdmFsO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrU2hvd0h0bWxFZGl0b3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnNob3dIdG1sRWRpdG9yID0gIXRoaXMuc2hvd0h0bWxFZGl0b3I7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gICN1cGxvYWRJbWFnZSA9IChmb3JtRGF0YSwgcXVpbGwsIHJhbmdlLCBmaWxlSW5wdXQpID0+IHtcclxuICAgIGlmICghdGhpcy51cmxVcGxvYWRJbWFnZSkge1xyXG4gICAgICB0aGlzLnVybFVwbG9hZEltYWdlID0gJy9wYXJ0bmVyL3YyL21lcmNoYW5kaXNlL2ZpbGUvdXBsb2FkdXNlcmZpbGUnO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5kb21haW4gPSAnaHR0cHM6Ly9hcGktY29tbWVyY2UtcWMudmluaWQuZGV2JztcclxuICAgIHRoaXMuc2RBcGlTZXJ2aWNlLnBvc3QodGhpcy51cmxVcGxvYWRJbWFnZSwgZm9ybURhdGEpLnRoZW4oKHJlc3A6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgcXVpbGwuZW5hYmxlKHRydWUpO1xyXG4gICAgICAgIC8vIHF1aWxsLmVkaXRvci5pbnNlcnRFbWJlZChyYW5nZS5pbmRleCwgJ2ltYWdlJywgcmVzcD8uZGF0YT8uaW1hZ2VVcmwgfHwgcmVzcD8uZGF0YT8ucHVibGlzaF91cmwgfHwgcmVzcD8udXJsIHx8ICcnKTtcclxuICAgICAgICBxdWlsbC5nZXRNb2R1bGUoJ2NsaXBib2FyZCcpLmRhbmdlcm91c2x5UGFzdGVIVE1MKHJhbmdlLmluZGV4LCAnPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIicgKyAocmVzcD8uZGF0YT8uaW1hZ2VVcmwgfHwgcmVzcD8uZGF0YT8ucHVibGlzaF91cmwgfHwgcmVzcD8udXJsIHx8ICcnKVxyXG4gICAgICAgICAgKyAnXCI+PGltZyBzcmM9XCInICsgKHJlc3A/LmRhdGE/LmltYWdlVXJsIHx8IHJlc3A/LmRhdGE/LnB1Ymxpc2hfdXJsIHx8IHJlc3A/LnVybCB8fCAnJykgKyAnXCIgYWx0PVwiYy1pbWFnZS1lZGl0b3ItcXVpbGxcIj48L2E+JywgJ3VzZXInKTtcclxuICAgICAgICAvLyBxdWlsbC5pbnNlcnRUZXh0KCk7XHJcbiAgICAgICAgY29uc3QgY29udGVudCA9IHF1aWxsLmdldENvbnRlbnRzKCk7XHJcbiAgICAgICAgcXVpbGwuc2V0Q29udGVudHMoY29udGVudCk7XHJcbiAgICAgICAgcXVpbGwuc2V0U2VsZWN0aW9uKHJhbmdlLmluZGV4ICsgMSwgJ3VzZXInKTtcclxuICAgICAgICBmaWxlSW5wdXQudmFsdWUgPSAnJztcclxuICAgICAgfSlcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { Component, Input } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
2
  export class SdDesktopCommand {
3
3
  constructor() {
4
4
  this.commands = [];
@@ -8,6 +8,7 @@ SdDesktopCommand.decorators = [
8
8
  { type: Component, args: [{
9
9
  selector: 'sd-desktop-command',
10
10
  template: "<ng-container *ngIf=\"item | commandFilter:commands | async; $implicit as filteredCommands\">\r\n <ng-container *ngFor=\"let command of filteredCommands\">\r\n <ng-container *ngIf=\"command?.click; else elseChildren\">\r\n <button (click)=\"command.click(item)\" [matTooltip]=\"command.title | commandTitle:item\" aria-hidden=\"true\"\r\n [disabled]=\"item | commandDisable:command\" mat-icon-button>\r\n <mat-icon class=\"c-icon\" [fontSet]=\"command.fontSet\">{{command | commandIcon:item}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <ng-template #elseChildren>\r\n <button [matMenuTriggerFor]=\"menu\" aria-hidden=\"true\" mat-icon-button>\r\n <mat-icon *ngIf=\"command?.icon\" class=\"c-icon\" [fontSet]=\"command.fontSet\">{{command | commandIcon:item}}\r\n </mat-icon>\r\n <mat-icon *ngIf=\"!command?.icon\" class=\"c-icon\">more_vert</mat-icon>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <span>\r\n <button *ngFor=\"let childCommand of command.children\" mat-menu-item (click)=\"childCommand.click(item)\"\r\n [disabled]=\"item | commandDisable:childCommand\">\r\n <ng-container *ngIf=\"!childCommand.htmlTemplate\">\r\n <mat-icon [fontSet]=\"command.fontSet\" class=\"c-icon\">{{childCommand | commandIcon:item}}\r\n </mat-icon>\r\n <span> {{childCommand | commandTitle:item}}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"childCommand.htmlTemplate\">\r\n <div [innerHTML]=\"childCommand.htmlTemplate(item)\"></div>\r\n </ng-container>\r\n </button>\r\n </span>\r\n </mat-menu>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n",
11
+ changeDetection: ChangeDetectionStrategy.OnPush,
11
12
  styles: [":host{align-items:center;display:flex}mat-icon.c-icon{color:rgba(0,0,0,.54)!important}"]
12
13
  },] }
13
14
  ];
@@ -16,4 +17,4 @@ SdDesktopCommand.propDecorators = {
16
17
  item: [{ type: Input }],
17
18
  commands: [{ type: Input }]
18
19
  };
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVza3RvcC1jb21tYW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZ3JpZC1tYXRlcmlhbC8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy9kZXNrdG9wLWNvbW1hbmQvZGVza3RvcC1jb21tYW5kLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVFqRCxNQUFNLE9BQU8sZ0JBQWdCO0lBRzNCO1FBRFMsYUFBUSxHQUE0QixFQUFFLENBQUM7SUFFaEQsQ0FBQzs7O1lBVEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLHN3REFBK0M7O2FBRWhEOzs7O21CQUVFLEtBQUs7dUJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2RHcmlkTWF0ZXJpYWxDb21tYW5kIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtY29tbWFuZC5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLWRlc2t0b3AtY29tbWFuZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Rlc2t0b3AtY29tbWFuZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGVza3RvcC1jb21tYW5kLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNkRGVza3RvcENvbW1hbmQge1xyXG4gIEBJbnB1dCgpIGl0ZW06IGFueTtcclxuICBASW5wdXQoKSBjb21tYW5kczogU2RHcmlkTWF0ZXJpYWxDb21tYW5kW10gPSBbXTtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcbn1cclxuIl19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVza3RvcC1jb21tYW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZ3JpZC1tYXRlcmlhbC8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy9kZXNrdG9wLWNvbW1hbmQvZGVza3RvcC1jb21tYW5kLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVMxRSxNQUFNLE9BQU8sZ0JBQWdCO0lBRzNCO1FBRFMsYUFBUSxHQUE0QixFQUFFLENBQUM7SUFFaEQsQ0FBQzs7O1lBVkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLHN3REFBK0M7Z0JBRS9DLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNoRDs7OzttQkFFRSxLQUFLO3VCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZEdyaWRNYXRlcmlhbENvbW1hbmQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1jb21tYW5kLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtZGVza3RvcC1jb21tYW5kJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGVza3RvcC1jb21tYW5kLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kZXNrdG9wLWNvbW1hbmQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2REZXNrdG9wQ29tbWFuZCB7XHJcbiAgQElucHV0KCkgaXRlbTogYW55O1xyXG4gIEBJbnB1dCgpIGNvbW1hbmRzOiBTZEdyaWRNYXRlcmlhbENvbW1hbmRbXSA9IFtdO1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,13 +1,14 @@
1
1
  var _filterOptionChanges, _subscription, _loadDefault, _clearFilter;
2
2
  import { __classPrivateFieldGet } from "tslib";
3
- import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';
3
+ import { Component, Input, Output, EventEmitter, ViewChild, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';
4
4
  import { SdPopupFilter } from '../popup-filter/popup-filter.component';
5
5
  import { Subject, Subscription } from 'rxjs';
6
6
  import { startWith } from 'rxjs/operators';
7
7
  import { SdGridFilterService } from '../../services/grid-filter.service';
8
8
  import { DeviceDetectorService } from 'ngx-device-detector';
9
9
  export class SdGridFilter {
10
- constructor(deviceService, gridFilterService) {
10
+ constructor(ref, deviceService, gridFilterService) {
11
+ this.ref = ref;
11
12
  this.deviceService = deviceService;
12
13
  this.gridFilterService = gridFilterService;
13
14
  this.isVisible = true;
@@ -106,6 +107,7 @@ export class SdGridFilter {
106
107
  selectedQuickFilter: null
107
108
  });
108
109
  this.filterChange.emit();
110
+ this.ref.markForCheck();
109
111
  };
110
112
  this.onClearFilter = () => {
111
113
  var _a;
@@ -139,8 +141,10 @@ export class SdGridFilter {
139
141
  };
140
142
  }
141
143
  }
144
+ this.ref.markForCheck();
142
145
  };
143
146
  this.isMobileOrTablet = !this.deviceService.isDesktop();
147
+ this.ref.markForCheck();
144
148
  }
145
149
  set _filter(filter) {
146
150
  var _a;
@@ -163,6 +167,7 @@ export class SdGridFilter {
163
167
  __classPrivateFieldGet(this, _loadDefault).call(this);
164
168
  this.filterChange.emit();
165
169
  });
170
+ this.ref.markForCheck();
166
171
  }));
167
172
  }
168
173
  ngOnDestroy() {
@@ -174,10 +179,12 @@ SdGridFilter.decorators = [
174
179
  { type: Component, args: [{
175
180
  selector: 'sd-grid-filter',
176
181
  template: "<ng-container *ngIf=\"isVisible\">\r\n <div *ngIf=\"!isMobileOrTablet && ((columns?.length && !filter?.inlineColumn) || externalFilters?.length || filterDefs?.length)\"\r\n class=\"row mx-0 pb-10\">\r\n <ng-container *ngIf=\"filter?.sorts?.length\">\r\n <ng-container *ngFor=\"let field of filter?.sorts\">\r\n <ng-container *ngIf=\"columns?.length && !filter?.inlineColumn\">\r\n <ng-container *ngFor=\"let item of columns | sdFilterColumn:field\">\r\n <ng-container *ngTemplateOutlet=\"filterColumn; context: {item: item}\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"externalFilters?.length\">\r\n <ng-container *ngFor=\"let item of externalFilters | sdFilterExternal:field\">\r\n <ng-container *ngTemplateOutlet=\"filterExternal; context: {item: item}\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngFor=\"let item of filterDefs\">\r\n <div *ngIf=\"inlineFilterDef[item.sdMaterialFilterDef] && item.sdMaterialFilterDef === field\"\r\n class=\"col-lg-2 col-md-3 col-sm-6 px-8\">\r\n <ng-container *ngTemplateOutlet=\"item.templateRef;context:{filterDef:filterDef, isInline: true}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!filter?.sorts?.length\">\r\n <ng-container *ngIf=\"columns?.length && !filter?.inlineColumn\">\r\n <ng-container *ngFor=\"let item of columns | sdFilterColumn\">\r\n <ng-container *ngTemplateOutlet=\"filterColumn; context: {item: item}\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"externalFilters?.length\">\r\n <ng-container *ngFor=\"let item of externalFilters | sdFilterExternal\">\r\n <ng-container *ngTemplateOutlet=\"filterExternal; context: {item: item}\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngFor=\"let item of filterDefs\">\r\n <div *ngIf=\"inlineFilterDef[item.sdMaterialFilterDef]\" class=\"col-lg-2 col-md-3 col-sm-6 px-8\">\r\n <ng-container *ngTemplateOutlet=\"item.templateRef;context:{filterDef:filterDef, isInline: true}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <ng-template #filterColumn let-item=\"item\">\r\n <div *ngIf=\"inlineColumn[item.field]\" class=\"col-lg-2 col-md-3 col-sm-6 px-8\">\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'string'\" type=\"text\" [(model)]=\"columnFilter[item.field]\"\r\n (keyupEnter)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-input>\r\n <sd-input-number [label]=\"item.title\" *ngIf=\"item.type === 'number'\" [(model)]=\"columnFilter[item.field]\"\r\n (keyupEnter)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-input-number>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'bool'\" [items]=\"[{value:'1',display:item.option?.displayOnTrue || 'True' },\r\n {value:'0',display:item.option?.displayOnFalse || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"columnFilter[item.field]\" (sdChange)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-select>\r\n <sd-select *ngIf=\"item.type === 'values' && item?.option?.selection !== 'AUTOCOMPLETE'\"\r\n [items]=\"item.option?.items\" [valueField]=\"item.option?.valueField\"\r\n [displayField]=\"item.option.displayField\" [(model)]=\"columnFilter[item.field]\" (sdChange)=\"onFilter(item)\"\r\n [disabled]=\"item.filter?.disabled\"\r\n [multiple]=\"item?.option?.selection === 'MULTIPLE' || item?.item?.selection === 'MULTIPLEAUTOCOMPLETE'\"\r\n [filtered]=\"item?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\" appearance=\"outline\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.type === 'values' && item?.option?.selection === 'AUTOCOMPLETE'\"\r\n [items]=\"item.option?.items\" [valueField]=\"item.option?.valueField\"\r\n [displayField]=\"item.option?.displayField\" [(model)]=\"columnFilter[item.field]\" (sdChange)=\"onFilter(item)\"\r\n [disabled]=\"item.filter?.disabled\" appearance=\"outline\">\r\n </sd-autocomplete>\r\n <sd-date-time *ngIf=\"item.type === 'date' || item.type === 'datetime' || item.type === 'time'\"\r\n [label]=\"item.title\" [(model)]=\"columnFilter[item.field]\" [type]=\"item.type\" (sdChange)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-date-time>\r\n </div>\r\n </ng-template>\r\n <ng-template #filterExternal let-item=\"item\">\r\n <div *ngIf=\"inlineExternal[item.field]\" class=\"col-lg-2 col-md-3 col-sm-6 px-8\">\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'string'\" type=\"text\" [(model)]=\"externalFilter[item.field]\"\r\n (keyupEnter)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-input>\r\n <sd-input-number [label]=\"item.title\" *ngIf=\"item.type === 'number'\" [(model)]=\"externalFilter[item.field]\"\r\n (keyupEnter)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-input-number>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'bool'\" [items]=\"[{value:'1',display:item.option?.displayOnTrue || 'True' },\r\n {value:'0',display:item.option?.displayOnFalse || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-select>\r\n <ng-container *ngIf=\"item.type === 'values' && item.option\">\r\n <sd-select *ngIf=\"item.option?.selection === 'MULTIPLE'\" [label]=\"item.title\" [items]=\"item.option.items\"\r\n [valueField]=\"item.option.valueField\" [displayField]=\"item.option.displayField\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onFilter(item)\" [selectAll]=\"item.option.selectAll\" appearance=\"outline\" multiple>\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.option?.selection === 'AUTOCOMPLETE'\" [label]=\"item.title\"\r\n [items]=\"item.option.items\" [valueField]=\"item.option.valueField\" [displayField]=\"item.option.displayField\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-autocomplete>\r\n <sd-select *ngIf=\"item.option?.selection === 'MULTIPLEAUTOCOMPLETE'\" [label]=\"item.title\"\r\n [items]=\"item.option.items\" [valueField]=\"item.option.valueField\" [displayField]=\"item.option.displayField\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onFilter(item)\" filtered=\"true\" appearance=\"outline\" multiple>\r\n </sd-select>\r\n <sd-select *ngIf=\"!item.option?.selection\" [label]=\"item.title\" [items]=\"item.option.items\"\r\n [valueField]=\"item.option.valueField\" [displayField]=\"item.option.displayField\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-select>\r\n </ng-container>\r\n <sd-date-time [label]=\"item.title\" *ngIf=\"item.type ==='date' || item.type ==='datetime'\"\r\n [(model)]=\"externalFilter[item.field]\" [type]=\"item.type\" (sdChange)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-date-time>\r\n <sd-date-range [label]=\"item.title\" *ngIf=\"item.type ==='daterange' && externalFilter[item.field]\"\r\n [(from)]=\"externalFilter[item.field].from\" [(to)]=\"externalFilter[item.field].to\" [min]=\"item.minDate\"\r\n [max]=\"item.maxDate\" (sdChange)=\"onFilter(item)\" appearance=\"outline\">\r\n </sd-date-range>\r\n </div>\r\n </ng-template>\r\n <sd-popup-filter [columns]=\"columns\" [externalFilters]=\"externalFilters\" (changeFilter)=\"onChangeFilter($event)\"\r\n (clearFilter)=\"onReset()\" [filterDefs]=\"filterDefs\">\r\n </sd-popup-filter>\r\n</ng-container>",
182
+ changeDetection: ChangeDetectionStrategy.OnPush,
177
183
  styles: [":host{display:block;padding-left:0;padding-right:0}:host ::ng-deep .mat-form-field-wrapper{padding-bottom:0}"]
178
184
  },] }
179
185
  ];
180
186
  SdGridFilter.ctorParameters = () => [
187
+ { type: ChangeDetectorRef },
181
188
  { type: DeviceDetectorService },
182
189
  { type: SdGridFilterService }
183
190
  ];
@@ -188,4 +195,4 @@ SdGridFilter.propDecorators = {
188
195
  filterDefs: [{ type: Input }],
189
196
  filterChange: [{ type: Output }]
190
197
  };
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLW1hdGVyaWFsLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUc1RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBUTVELE1BQU0sT0FBTyxZQUFZO0lBOEJ2QixZQUNVLGFBQW9DLEVBQ3BDLGlCQUFzQztRQUR0QyxrQkFBYSxHQUFiLGFBQWEsQ0FBdUI7UUFDcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFxQjtRQTlCaEQsY0FBUyxHQUFHLElBQUksQ0FBQztRQUVqQiwrQkFBdUIsSUFBSSxPQUFPLEVBQThCLEVBQUM7UUFNeEQsWUFBTyxHQUEyQixFQUFFLENBQUM7UUFDckMsZUFBVSxHQUFtQyxFQUFFLENBQUM7UUFDekQsY0FBUyxHQUFRLEVBQUUsQ0FBQztRQUNwQixvQkFBZSxHQUVYLEVBQUUsQ0FBQztRQUVHLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM1Qyx3QkFBZ0IsSUFBSSxZQUFZLEVBQUUsRUFBQztRQUVu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SSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTs7WUFDM0YsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3pCLE9BQU87YUFDUjtZQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxlQUFlLEtBQUksRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLE9BQUMsSUFBSSxDQUFDLE1BQU0sMENBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUNoRSxJQUFJLENBQUMsWUFBWSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLGVBQWUsR0FBRyxhQUFhLENBQUMsZUFBZSxDQUFDO2dCQUNyRCxnREFBQSxJQUFJLENBQWUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBcUNELFdBQVc7UUFDVCw0Q0FBbUIsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7OztZQS9GRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsMC9QQUEyQzs7YUFFNUM7OztZQVBRLHFCQUFxQjtZQURyQixtQkFBbUI7OzswQkFVekIsU0FBUyxTQUFDLGFBQWE7c0JBSXZCLEtBQUssU0FBQyxRQUFRO3NCQUtkLEtBQUs7eUJBQ0wsS0FBSzsyQkFNTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNkR3JpZE1hdGVyaWFsRmlsdGVyT3B0aW9uLCBTZEdyaWRNYXRlcmlhbEV4dGVybmFsRmlsdGVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtZmlsdGVyLm1vZGVsJztcclxuaW1wb3J0IHsgU2RHcmlkTWF0ZXJpYWxDb2x1bW4gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1jb2x1bW4ubW9kZWwnO1xyXG5pbXBvcnQgeyBTZFBvcHVwRmlsdGVyIH0gZnJvbSAnLi4vcG9wdXAtZmlsdGVyL3BvcHVwLWZpbHRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTZEdyaWRGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ3JpZC1maWx0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IERldmljZURldGVjdG9yU2VydmljZSB9IGZyb20gJ25neC1kZXZpY2UtZGV0ZWN0b3InO1xyXG5pbXBvcnQgeyBTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9zZC1tYXRlcmlhbC1maWx0ZXItZGVmLmRpcmVjdGl2ZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLWdyaWQtZmlsdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2dyaWQtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNkR3JpZEZpbHRlciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZChTZFBvcHVwRmlsdGVyKSBwb3B1cEZpbHRlcjogU2RQb3B1cEZpbHRlcjtcclxuICBpc1Zpc2libGUgPSB0cnVlO1xyXG4gIGZpbHRlcjogUmVhZG9ubHk8U2RHcmlkTWF0ZXJpYWxGaWx0ZXJPcHRpb24+O1xyXG4gICNmaWx0ZXJPcHRpb25DaGFuZ2VzID0gbmV3IFN1YmplY3Q8U2RHcmlkTWF0ZXJpYWxGaWx0ZXJPcHRpb24+KCk7XHJcbiAgQElucHV0KCdmaWx0ZXInKSBzZXQgX2ZpbHRlcihmaWx0ZXI6IFNkR3JpZE1hdGVyaWFsRmlsdGVyT3B0aW9uKSB7XHJcbiAgICB0aGlzLmZpbHRlciA9IGZpbHRlcjtcclxuICAgIHRoaXMuaXNWaXNpYmxlID0gIXRoaXMuZmlsdGVyPy5kaXNhYmxlZDtcclxuICAgIHRoaXMuI2ZpbHRlck9wdGlvbkNoYW5nZXMubmV4dCh0aGlzLmZpbHRlcik7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGNvbHVtbnM6IFNkR3JpZE1hdGVyaWFsQ29sdW1uW10gPSBbXTtcclxuICBASW5wdXQoKSBmaWx0ZXJEZWZzOiBTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlW10gPSBbXTtcclxuICBmaWx0ZXJEZWY6IGFueSA9IHt9O1xyXG4gIGlubGluZUZpbHRlckRlZjoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcclxuICB9ID0ge307XHJcblxyXG4gIEBPdXRwdXQoKSBmaWx0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgI3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgY29sdW1uRmlsdGVyOiBhbnkgPSB7fTtcclxuICBpbmxpbmVDb2x1bW46IHtcclxuICAgIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XHJcbiAgfSA9IHt9O1xyXG4gIGV4dGVybmFsRmlsdGVyczogU2RHcmlkTWF0ZXJpYWxFeHRlcm5hbEZpbHRlcltdID0gW107XHJcbiAgZXh0ZXJuYWxGaWx0ZXI6IGFueSA9IHt9O1xyXG4gIGlubGluZUV4dGVybmFsOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xyXG4gIH0gPSB7fTtcclxuICBpc01vYmlsZU9yVGFibGV0OiBib29sZWFuO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkZXZpY2VTZXJ2aWNlOiBEZXZpY2VEZXRlY3RvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdyaWRGaWx0ZXJTZXJ2aWNlOiBTZEdyaWRGaWx0ZXJTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmlzTW9iaWxlT3JUYWJsZXQgPSAhdGhpcy5kZXZpY2VTZXJ2aWNlLmlzRGVza3RvcCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLiNmaWx0ZXJPcHRpb25DaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZmlsdGVyKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmlzVmlzaWJsZSkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcnMgPSB0aGlzLmZpbHRlcj8uZXh0ZXJuYWxGaWx0ZXJzIHx8IFtdO1xyXG4gICAgICB0aGlzLmdyaWRGaWx0ZXJTZXJ2aWNlLmdldCh0aGlzLmZpbHRlcj8ua2V5KS50aGVuKGNvbmZpZ3VyYXRpb24gPT4ge1xyXG4gICAgICAgIHRoaXMuaW5saW5lQ29sdW1uID0gY29uZmlndXJhdGlvbi5pbmxpbmVDb2x1bW47XHJcbiAgICAgICAgdGhpcy5pbmxpbmVFeHRlcm5hbCA9IGNvbmZpZ3VyYXRpb24uaW5saW5lRXh0ZXJuYWw7XHJcbiAgICAgICAgdGhpcy5pbmxpbmVGaWx0ZXJEZWYgPSBjb25maWd1cmF0aW9uLmlubGluZUZpbHRlckRlZjtcclxuICAgICAgICB0aGlzLiNsb2FkRGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAjbG9hZERlZmF1bHQgPSAoKSA9PiB7XHJcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0aGlzLmNvbHVtbnMpIHtcclxuICAgICAgdGhpcy5pbmxpbmVDb2x1bW5bY29sdW1uLmZpZWxkXSA9IHRoaXMuaW5saW5lQ29sdW1uW2NvbHVtbi5maWVsZF0gPz8gY29sdW1uPy5maWx0ZXI/LmRlZmF1bHRTaG93aW5nO1xyXG4gICAgICB0aGlzLmNvbHVtbkZpbHRlcltjb2x1bW4uZmllbGRdID0gdGhpcy5jb2x1bW5GaWx0ZXJbY29sdW1uLmZpZWxkXSA/PyBjb2x1bW4/LmZpbHRlcj8uZGVmYXVsdDtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3QgZXh0ZXJuYWxGaWx0ZXIgb2YgdGhpcy5leHRlcm5hbEZpbHRlcnMpIHtcclxuICAgICAgdGhpcy5pbmxpbmVFeHRlcm5hbFtleHRlcm5hbEZpbHRlci5maWVsZF0gPSB0aGlzLmlubGluZUV4dGVybmFsW2V4dGVybmFsRmlsdGVyLmZpZWxkXSA/PyBleHRlcm5hbEZpbHRlcj8uZGVmYXVsdFNob3dpbmc7XHJcbiAgICAgIGlmIChleHRlcm5hbEZpbHRlci50eXBlID09PSAnZGF0ZXJhbmdlJykge1xyXG4gICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJbZXh0ZXJuYWxGaWx0ZXIuZmllbGRdID0ge1xyXG4gICAgICAgICAgZnJvbTogdGhpcy5leHRlcm5hbEZpbHRlcltleHRlcm5hbEZpbHRlci5maWVsZF0/LmZyb20gPz8gZXh0ZXJuYWxGaWx0ZXIuZGVmYXVsdD8uZnJvbSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICB0bzogdGhpcy5leHRlcm5hbEZpbHRlcltleHRlcm5hbEZpbHRlci5maWVsZF0/LnRvID8/IGV4dGVybmFsRmlsdGVyLmRlZmF1bHQ/LnRvID8/IHVuZGVmaW5lZFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcltleHRlcm5hbEZpbHRlci5maWVsZF0gPSB0aGlzLmV4dGVybmFsRmlsdGVyW2V4dGVybmFsRmlsdGVyLmZpZWxkXSA/PyBleHRlcm5hbEZpbHRlci5kZWZhdWx0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGZpbHRlckRlZiBvZiB0aGlzLmZpbHRlckRlZnMpIHtcclxuICAgICAgdGhpcy5pbmxpbmVGaWx0ZXJEZWZbZmlsdGVyRGVmLnNkTWF0ZXJpYWxGaWx0ZXJEZWZdID0gdGhpcy5pbmxpbmVGaWx0ZXJEZWZbZmlsdGVyRGVmLnNkTWF0ZXJpYWxGaWx0ZXJEZWZdID8/IGZpbHRlckRlZj8uZGVmYXVsdFNob3dpbmc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAjY2xlYXJGaWx0ZXIgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbHVtbkZpbHRlciA9IHt9O1xyXG4gICAgdGhpcy5leHRlcm5hbEZpbHRlciA9IHt9O1xyXG4gICAgdGhpcy5maWx0ZXJEZWYgPSB7fTtcclxuICAgIGZvciAoY29uc3QgZXh0ZXJuYWxGaWx0ZXIgb2YgdGhpcy5leHRlcm5hbEZpbHRlcnMpIHtcclxuICAgICAgaWYgKGV4dGVybmFsRmlsdGVyLnR5cGUgPT09ICdkYXRlcmFuZ2UnKSB7XHJcbiAgICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcltleHRlcm5hbEZpbHRlci5maWVsZF0gPSB7XHJcbiAgICAgICAgICBmcm9tOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICB0bzogdW5kZWZpbmVkXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG9uRmlsdGVyID0gKGl0ZW0/OiBTZEdyaWRNYXRlcmlhbENvbHVtbiB8IFNkR3JpZE1hdGVyaWFsRXh0ZXJuYWxGaWx0ZXIpID0+IHtcclxuICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG9wZW4gPSAoKSA9PiB7XHJcbiAgICB0aGlzLnBvcHVwRmlsdGVyLm9wZW4oe1xyXG4gICAgICBjb2x1bW5GaWx0ZXI6IHRoaXMuY29sdW1uRmlsdGVyLFxyXG4gICAgICBleHRlcm5hbEZpbHRlcjogdGhpcy5leHRlcm5hbEZpbHRlcixcclxuICAgICAgZmlsdGVyRGVmOiB0aGlzLmZpbHRlckRlZixcclxuICAgICAgaW5saW5lQ29sdW1uOiB0aGlzLmlubGluZUNvbHVtbixcclxuICAgICAgaW5saW5lRXh0ZXJuYWw6IHRoaXMuaW5saW5lRXh0ZXJuYWwsXHJcbiAgICAgIGlubGluZUZpbHRlckRlZjogdGhpcy5pbmxpbmVGaWx0ZXJEZWZcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VGaWx0ZXIgPSAoYXJnczoge1xyXG4gICAgaW5saW5lQ29sdW1uOiB7XHJcbiAgICAgIFtrZXk6IHN0cmluZ106IGJvb2xlYW5cclxuICAgIH0sXHJcbiAgICBjb2x1bW5GaWx0ZXI6IGFueSxcclxuICAgIGlubGluZUV4dGVybmFsOiB7XHJcbiAgICAgIFtrZXk6IHN0cmluZ106IGJvb2xlYW5cclxuICAgIH1cclxuICAgIGV4dGVybmFsRmlsdGVyOiBhbnksXHJcbiAgICBpbmxpbmVGaWx0ZXJEZWY6IHtcclxuICAgICAgW2tleTogc3RyaW5nXTogYm9vbGVhblxyXG4gICAgfSxcclxuICAgIGZpbHRlckRlZjogYW55XHJcbiAgfSkgPT4ge1xyXG4gICAgY29uc3QgeyBpbmxpbmVDb2x1bW4sIGNvbHVtbkZpbHRlciwgaW5saW5lRXh0ZXJuYWwsIGV4dGVybmFsRmlsdGVyLCBpbmxpbmVGaWx0ZXJEZWYsIGZpbHRlckRlZiB9ID0gYXJncztcclxuICAgIHRoaXMuaW5saW5lQ29sdW1uID0gaW5saW5lQ29sdW1uO1xyXG4gICAgdGhpcy5jb2x1bW5GaWx0ZXIgPSBjb2x1bW5GaWx0ZXI7XHJcbiAgICB0aGlzLmlubGluZUV4dGVybmFsID0gaW5saW5lRXh0ZXJuYWw7XHJcbiAgICB0aGlzLmV4dGVybmFsRmlsdGVyID0gZXh0ZXJuYWxGaWx0ZXI7XHJcbiAgICB0aGlzLmlubGluZUZpbHRlckRlZiA9IGlubGluZUZpbHRlckRlZjtcclxuICAgIHRoaXMuZmlsdGVyRGVmID0gZmlsdGVyRGVmO1xyXG4gICAgdGhpcy5ncmlkRmlsdGVyU2VydmljZS5zZXQodGhpcy5maWx0ZXI/LmtleSwge1xyXG4gICAgICBpbmxpbmVDb2x1bW4sXHJcbiAgICAgIGlubGluZUV4dGVybmFsLFxyXG4gICAgICBxdWlja0ZpbHRlcnM6IFtdLFxyXG4gICAgICBpbmxpbmVGaWx0ZXJEZWYsXHJcbiAgICAgIHNlbGVjdGVkUXVpY2tGaWx0ZXI6IG51bGxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgb25SZXNldCA9ICgpID0+IHtcclxuICAgIHRoaXMuaW5saW5lQ29sdW1uID0ge307XHJcbiAgICB0aGlzLmNvbHVtbkZpbHRlciA9IHt9O1xyXG4gICAgdGhpcy5pbmxpbmVFeHRlcm5hbCA9IHt9O1xyXG4gICAgdGhpcy5leHRlcm5hbEZpbHRlciA9IHt9O1xyXG4gICAgdGhpcy5pbmxpbmVGaWx0ZXJEZWYgPSB7fTtcclxuICAgIHRoaXMuZmlsdGVyRGVmID0ge307XHJcbiAgICB0aGlzLiNsb2FkRGVmYXVsdCgpO1xyXG4gICAgdGhpcy5ncmlkRmlsdGVyU2VydmljZS5zZXQodGhpcy5maWx0ZXI/LmtleSwge1xyXG4gICAgICBpbmxpbmVDb2x1bW46IHRoaXMuaW5saW5lQ29sdW1uLFxyXG4gICAgICBpbmxpbmVFeHRlcm5hbDogdGhpcy5jb2x1bW5GaWx0ZXIsXHJcbiAgICAgIGlubGluZUZpbHRlckRlZjogdGhpcy5pbmxpbmVGaWx0ZXJEZWYsXHJcbiAgICAgIHF1aWNrRmlsdGVyczogW10sXHJcbiAgICAgIHNlbGVjdGVkUXVpY2tGaWx0ZXI6IG51bGxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgb25DbGVhckZpbHRlciA9ICgpID0+IHtcclxuICAgIHRoaXMuI2NsZWFyRmlsdGVyKCk7XHJcbiAgICB0aGlzLmdyaWRGaWx0ZXJTZXJ2aWNlLnNldCh0aGlzLmZpbHRlcj8ua2V5LCB7XHJcbiAgICAgIGlubGluZUNvbHVtbjogdGhpcy5pbmxpbmVDb2x1bW4sXHJcbiAgICAgIGlubGluZUV4dGVybmFsOiB0aGlzLmNvbHVtbkZpbHRlcixcclxuICAgICAgaW5saW5lRmlsdGVyRGVmOiB0aGlzLmlubGluZUZpbHRlckRlZixcclxuICAgICAgcXVpY2tGaWx0ZXJzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRRdWlja0ZpbHRlcjogbnVsbFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBzZXRGaWx0ZXIgPSAoYXJnczoge1xyXG4gICAgY29sdW1uRmlsdGVyPzogYW55LFxyXG4gICAgZXh0ZXJuYWxGaWx0ZXI/OiBhbnksXHJcbiAgICBmaWx0ZXJEZWY/OiBhbnlcclxuICB9KSA9PiB7XHJcbiAgICBjb25zdCB7IGNvbHVtbkZpbHRlciwgIGV4dGVybmFsRmlsdGVyLCBmaWx0ZXJEZWZ9ID0gYXJncztcclxuICAgIGlmIChjb2x1bW5GaWx0ZXIpIHtcclxuICAgICAgdGhpcy5jb2x1bW5GaWx0ZXIgPSBjb2x1bW5GaWx0ZXI7XHJcbiAgICB9XHJcbiAgICBpZiAoZXh0ZXJuYWxGaWx0ZXIpIHtcclxuICAgICAgdGhpcy5leHRlcm5hbEZpbHRlciA9IGV4dGVybmFsRmlsdGVyO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpbHRlckRlZikge1xyXG4gICAgICB0aGlzLmZpbHRlckRlZiA9IGZpbHRlckRlZjtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3QgZXh0ZXJuYWxGaWx0ZXIgb2YgdGhpcy5leHRlcm5hbEZpbHRlcnMpIHtcclxuICAgICAgaWYgKGV4dGVybmFsRmlsdGVyLnR5cGUgPT09ICdkYXRlcmFuZ2UnKSB7XHJcbiAgICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcltleHRlcm5hbEZpbHRlci5maWVsZF0gPSB7XHJcbiAgICAgICAgICBmcm9tOiB0aGlzLmV4dGVybmFsRmlsdGVyW2V4dGVybmFsRmlsdGVyLmZpZWxkXT8uZnJvbSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICB0bzogdGhpcy5leHRlcm5hbEZpbHRlcltleHRlcm5hbEZpbHRlci5maWVsZF0/LnRvID8/IHVuZGVmaW5lZFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLW1hdGVyaWFsLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUE0Qix1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd4SixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBUzVELE1BQU0sT0FBTyxZQUFZO0lBOEJ2QixZQUNVLEdBQXNCLEVBQ3RCLGFBQW9DLEVBQ3BDLGlCQUFzQztRQUZ0QyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBdUI7UUFDcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFxQjtRQS9CaEQsY0FBUyxHQUFHLElBQUksQ0FBQztRQUVqQiwrQkFBdUIsSUFBSSxPQUFPLEVBQThCLEVBQUM7UUFNeEQsWUFBTyxHQUEyQixFQUFFLENBQUM7UUFDckMsZUFBVSxHQUFtQyxFQUFFLENBQUM7UUFDekQsY0FBUyxHQUFRLEVBQUUsQ0FBQztRQUNwQixvQkFBZSxHQUVYLEVBQUUsQ0FBQztRQUVHLGlCQUFZ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QUMxQiwwL1BBQTJDO2dCQUUzQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQWY4RyxpQkFBaUI7WUFPdkgscUJBQXFCO1lBRHJCLG1CQUFtQjs7OzBCQVd6QixTQUFTLFNBQUMsYUFBYTtzQkFJdkIsS0FBSyxTQUFDLFFBQVE7c0JBS2QsS0FBSzt5QkFDTCxLQUFLOzJCQU1MLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZEdyaWRNYXRlcmlhbEZpbHRlck9wdGlvbiwgU2RHcmlkTWF0ZXJpYWxFeHRlcm5hbEZpbHRlciB9IGZyb20gJy4uLy4uL21vZGVscy9ncmlkLWZpbHRlci5tb2RlbCc7XHJcbmltcG9ydCB7IFNkR3JpZE1hdGVyaWFsQ29sdW1uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtY29sdW1uLm1vZGVsJztcclxuaW1wb3J0IHsgU2RQb3B1cEZpbHRlciB9IGZyb20gJy4uL3BvcHVwLWZpbHRlci9wb3B1cC1maWx0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU2RHcmlkRmlsdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dyaWQtZmlsdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEZXZpY2VEZXRlY3RvclNlcnZpY2UgfSBmcm9tICduZ3gtZGV2aWNlLWRldGVjdG9yJztcclxuaW1wb3J0IHsgU2RNYXRlcmlhbEZpbHRlckRlZkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvc2QtbWF0ZXJpYWwtZmlsdGVyLWRlZi5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC1ncmlkLWZpbHRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ncmlkLWZpbHRlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZEdyaWRGaWx0ZXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoU2RQb3B1cEZpbHRlcikgcG9wdXBGaWx0ZXI6IFNkUG9wdXBGaWx0ZXI7XHJcbiAgaXNWaXNpYmxlID0gdHJ1ZTtcclxuICBmaWx0ZXI6IFJlYWRvbmx5PFNkR3JpZE1hdGVyaWFsRmlsdGVyT3B0aW9uPjtcclxuICAjZmlsdGVyT3B0aW9uQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PFNkR3JpZE1hdGVyaWFsRmlsdGVyT3B0aW9uPigpO1xyXG4gIEBJbnB1dCgnZmlsdGVyJykgc2V0IF9maWx0ZXIoZmlsdGVyOiBTZEdyaWRNYXRlcmlhbEZpbHRlck9wdGlvbikge1xyXG4gICAgdGhpcy5maWx0ZXIgPSBmaWx0ZXI7XHJcbiAgICB0aGlzLmlzVmlzaWJsZSA9ICF0aGlzLmZpbHRlcj8uZGlzYWJsZWQ7XHJcbiAgICB0aGlzLiNmaWx0ZXJPcHRpb25DaGFuZ2VzLm5leHQodGhpcy5maWx0ZXIpO1xyXG4gIH1cclxuICBASW5wdXQoKSBjb2x1bW5zOiBTZEdyaWRNYXRlcmlhbENvbHVtbltdID0gW107XHJcbiAgQElucHV0KCkgZmlsdGVyRGVmczogU2RNYXRlcmlhbEZpbHRlckRlZkRpcmVjdGl2ZVtdID0gW107XHJcbiAgZmlsdGVyRGVmOiBhbnkgPSB7fTtcclxuICBpbmxpbmVGaWx0ZXJEZWY6IHtcclxuICAgIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XHJcbiAgfSA9IHt9O1xyXG5cclxuICBAT3V0cHV0KCkgZmlsdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICNzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcblxyXG4gIGNvbHVtbkZpbHRlcjogYW55ID0ge307XHJcbiAgaW5saW5lQ29sdW1uOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xyXG4gIH0gPSB7fTtcclxuICBleHRlcm5hbEZpbHRlcnM6IFNkR3JpZE1hdGVyaWFsRXh0ZXJuYWxGaWx0ZXJbXSA9IFtdO1xyXG4gIGV4dGVybmFsRmlsdGVyOiBhbnkgPSB7fTtcclxuICBpbmxpbmVFeHRlcm5hbDoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcclxuICB9ID0ge307XHJcbiAgaXNNb2JpbGVPclRhYmxldDogYm9vbGVhbjtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgZGV2aWNlU2VydmljZTogRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBncmlkRmlsdGVyU2VydmljZTogU2RHcmlkRmlsdGVyU2VydmljZSkge1xyXG4gICAgdGhpcy5pc01vYmlsZU9yVGFibGV0ID0gIXRoaXMuZGV2aWNlU2VydmljZS5pc0Rlc2t0b3AoKTtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLiNmaWx0ZXJPcHRpb25DaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZmlsdGVyKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmlzVmlzaWJsZSkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcnMgPSB0aGlzLmZpbHRlcj8uZXh0ZXJuYWxGaWx0ZXJzIHx8IFtdO1xyXG4gICAgICB0aGlzLmdyaWRGaWx0ZXJTZXJ2aWNlLmdldCh0aGlzLmZpbHRlcj8ua2V5KS50aGVuKGNvbmZpZ3VyYXRpb24gPT4ge1xyXG4gICAgICAgIHRoaXMuaW5saW5lQ29sdW1uID0gY29uZmlndXJhdGlvbi5pbmxpbmVDb2x1bW47XHJcbiAgICAgICAgdGhpcy5pbmxpbmVFeHRlcm5hbCA9IGNvbmZpZ3VyYXRpb24uaW5saW5lRXh0ZXJuYWw7XHJcbiAgICAgICAgdGhpcy5pbmxpbmVGaWx0ZXJEZWYgPSBjb25maWd1cmF0aW9uLmlubGluZUZpbHRlckRlZjtcclxuICAgICAgICB0aGlzLiNsb2FkRGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQoKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgI2xvYWREZWZhdWx0ID0gKCkgPT4ge1xyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgIHRoaXMuaW5saW5lQ29sdW1uW2NvbHVtbi5maWVsZF0gPSB0aGlzLmlubGluZUNvbHVtbltjb2x1bW4uZmllbGRdID8/IGNvbHVtbj8uZmlsdGVyPy5kZWZhdWx0U2hvd2luZztcclxuICAgICAgdGhpcy5jb2x1bW5GaWx0ZXJbY29sdW1uLmZpZWxkXSA9IHRoaXMuY29sdW1uRmlsdGVyW2NvbHVtbi5maWVsZF0gPz8gY29sdW1uPy5maWx0ZXI/LmRlZmF1bHQ7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGV4dGVybmFsRmlsdGVyIG9mIHRoaXMuZXh0ZXJuYWxGaWx0ZXJzKSB7XHJcbiAgICAgIHRoaXMuaW5saW5lRXh0ZXJuYWxbZXh0ZXJuYWxGaWx0ZXIuZmllbGRdID0gdGhpcy5pbmxpbmVFeHRlcm5hbFtleHRlcm5hbEZpbHRlci5maWVsZF0gPz8gZXh0ZXJuYWxGaWx0ZXI/LmRlZmF1bHRTaG93aW5nO1xyXG4gICAgICBpZiAoZXh0ZXJuYWxGaWx0ZXIudHlwZSA9PT0gJ2RhdGVyYW5nZScpIHtcclxuICAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVyW2V4dGVybmFsRmlsdGVyLmZpZWxkXSA9IHtcclxuICAgICAgICAgIGZyb206IHRoaXMuZXh0ZXJuYWxGaWx0ZXJbZXh0ZXJuYWxGaWx0ZXIuZmllbGRdPy5mcm9tID8/IGV4dGVybmFsRmlsdGVyLmRlZmF1bHQ/LmZyb20gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdG86IHRoaXMuZXh0ZXJuYWxGaWx0ZXJbZXh0ZXJuYWxGaWx0ZXIuZmllbGRdPy50byA/PyBleHRlcm5hbEZpbHRlci5kZWZhdWx0Py50byA/PyB1bmRlZmluZWRcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJbZXh0ZXJuYWxGaWx0ZXIuZmllbGRdID0gdGhpcy5leHRlcm5hbEZpbHRlcltleHRlcm5hbEZpbHRlci5maWVsZF0gPz8gZXh0ZXJuYWxGaWx0ZXIuZGVmYXVsdDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBmaWx0ZXJEZWYgb2YgdGhpcy5maWx0ZXJEZWZzKSB7XHJcbiAgICAgIHRoaXMuaW5saW5lRmlsdGVyRGVmW2ZpbHRlckRlZi5zZE1hdGVyaWFsRmlsdGVyRGVmXSA9IHRoaXMuaW5saW5lRmlsdGVyRGVmW2ZpbHRlckRlZi5zZE1hdGVyaWFsRmlsdGVyRGVmXSA/PyBmaWx0ZXJEZWY/LmRlZmF1bHRTaG93aW5nO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgI2NsZWFyRmlsdGVyID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb2x1bW5GaWx0ZXIgPSB7fTtcclxuICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXIgPSB7fTtcclxuICAgIHRoaXMuZmlsdGVyRGVmID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGV4dGVybmFsRmlsdGVyIG9mIHRoaXMuZXh0ZXJuYWxGaWx0ZXJzKSB7XHJcbiAgICAgIGlmIChleHRlcm5hbEZpbHRlci50eXBlID09PSAnZGF0ZXJhbmdlJykge1xyXG4gICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJbZXh0ZXJuYWxGaWx0ZXIuZmllbGRdID0ge1xyXG4gICAgICAgICAgZnJvbTogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdG86IHVuZGVmaW5lZFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbHRlciA9IChpdGVtPzogU2RHcmlkTWF0ZXJpYWxDb2x1bW4gfCBTZEdyaWRNYXRlcmlhbEV4dGVybmFsRmlsdGVyKSA9PiB7XHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvcGVuID0gKCkgPT4ge1xyXG4gICAgdGhpcy5wb3B1cEZpbHRlci5vcGVuKHtcclxuICAgICAgY29sdW1uRmlsdGVyOiB0aGlzLmNvbHVtbkZpbHRlcixcclxuICAgICAgZXh0ZXJuYWxGaWx0ZXI6IHRoaXMuZXh0ZXJuYWxGaWx0ZXIsXHJcbiAgICAgIGZpbHRlckRlZjogdGhpcy5maWx0ZXJEZWYsXHJcbiAgICAgIGlubGluZUNvbHVtbjogdGhpcy5pbmxpbmVDb2x1bW4sXHJcbiAgICAgIGlubGluZUV4dGVybmFsOiB0aGlzLmlubGluZUV4dGVybmFsLFxyXG4gICAgICBpbmxpbmVGaWx0ZXJEZWY6IHRoaXMuaW5saW5lRmlsdGVyRGVmXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlRmlsdGVyID0gKGFyZ3M6IHtcclxuICAgIGlubGluZUNvbHVtbjoge1xyXG4gICAgICBba2V5OiBzdHJpbmddOiBib29sZWFuXHJcbiAgICB9LFxyXG4gICAgY29sdW1uRmlsdGVyOiBhbnksXHJcbiAgICBpbmxpbmVFeHRlcm5hbDoge1xyXG4gICAgICBba2V5OiBzdHJpbmddOiBib29sZWFuXHJcbiAgICB9XHJcbiAgICBleHRlcm5hbEZpbHRlcjogYW55LFxyXG4gICAgaW5saW5lRmlsdGVyRGVmOiB7XHJcbiAgICAgIFtrZXk6IHN0cmluZ106IGJvb2xlYW5cclxuICAgIH0sXHJcbiAgICBmaWx0ZXJEZWY6IGFueVxyXG4gIH0pID0+IHtcclxuICAgIGNvbnN0IHsgaW5saW5lQ29sdW1uLCBjb2x1bW5GaWx0ZXIsIGlubGluZUV4dGVybmFsLCBleHRlcm5hbEZpbHRlciwgaW5saW5lRmlsdGVyRGVmLCBmaWx0ZXJEZWYgfSA9IGFyZ3M7XHJcbiAgICB0aGlzLmlubGluZUNvbHVtbiA9IGlubGluZUNvbHVtbjtcclxuICAgIHRoaXMuY29sdW1uRmlsdGVyID0gY29sdW1uRmlsdGVyO1xyXG4gICAgdGhpcy5pbmxpbmVFeHRlcm5hbCA9IGlubGluZUV4dGVybmFsO1xyXG4gICAgdGhpcy5leHRlcm5hbEZpbHRlciA9IGV4dGVybmFsRmlsdGVyO1xyXG4gICAgdGhpcy5pbmxpbmVGaWx0ZXJEZWYgPSBpbmxpbmVGaWx0ZXJEZWY7XHJcbiAgICB0aGlzLmZpbHRlckRlZiA9IGZpbHRlckRlZjtcclxuICAgIHRoaXMuZ3JpZEZpbHRlclNlcnZpY2Uuc2V0KHRoaXMuZmlsdGVyPy5rZXksIHtcclxuICAgICAgaW5saW5lQ29sdW1uLFxyXG4gICAgICBpbmxpbmVFeHRlcm5hbCxcclxuICAgICAgcXVpY2tGaWx0ZXJzOiBbXSxcclxuICAgICAgaW5saW5lRmlsdGVyRGVmLFxyXG4gICAgICBzZWxlY3RlZFF1aWNrRmlsdGVyOiBudWxsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uUmVzZXQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmlubGluZUNvbHVtbiA9IHt9O1xyXG4gICAgdGhpcy5jb2x1bW5GaWx0ZXIgPSB7fTtcclxuICAgIHRoaXMuaW5saW5lRXh0ZXJuYWwgPSB7fTtcclxuICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXIgPSB7fTtcclxuICAgIHRoaXMuaW5saW5lRmlsdGVyRGVmID0ge307XHJcbiAgICB0aGlzLmZpbHRlckRlZiA9IHt9O1xyXG4gICAgdGhpcy4jbG9hZERlZmF1bHQoKTtcclxuICAgIHRoaXMuZ3JpZEZpbHRlclNlcnZpY2Uuc2V0KHRoaXMuZmlsdGVyPy5rZXksIHtcclxuICAgICAgaW5saW5lQ29sdW1uOiB0aGlzLmlubGluZUNvbHVtbixcclxuICAgICAgaW5saW5lRXh0ZXJuYWw6IHRoaXMuY29sdW1uRmlsdGVyLFxyXG4gICAgICBpbmxpbmVGaWx0ZXJEZWY6IHRoaXMuaW5saW5lRmlsdGVyRGVmLFxyXG4gICAgICBxdWlja0ZpbHRlcnM6IFtdLFxyXG4gICAgICBzZWxlY3RlZFF1aWNrRmlsdGVyOiBudWxsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQoKTtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgb25DbGVhckZpbHRlciA9ICgpID0+IHtcclxuICAgIHRoaXMuI2NsZWFyRmlsdGVyKCk7XHJcbiAgICB0aGlzLmdyaWRGaWx0ZXJTZXJ2aWNlLnNldCh0aGlzLmZpbHRlcj8ua2V5LCB7XHJcbiAgICAgIGlubGluZUNvbHVtbjogdGhpcy5pbmxpbmVDb2x1bW4sXHJcbiAgICAgIGlubGluZUV4dGVybmFsOiB0aGlzLmNvbHVtbkZpbHRlcixcclxuICAgICAgaW5saW5lRmlsdGVyRGVmOiB0aGlzLmlubGluZUZpbHRlckRlZixcclxuICAgICAgcXVpY2tGaWx0ZXJzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRRdWlja0ZpbHRlcjogbnVsbFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBzZXRGaWx0ZXIgPSAoYXJnczoge1xyXG4gICAgY29sdW1uRmlsdGVyPzogYW55LFxyXG4gICAgZXh0ZXJuYWxGaWx0ZXI/OiBhbnksXHJcbiAgICBmaWx0ZXJEZWY/OiBhbnlcclxuICB9KSA9PiB7XHJcbiAgICBjb25zdCB7IGNvbHVtbkZpbHRlciwgIGV4dGVybmFsRmlsdGVyLCBmaWx0ZXJEZWZ9ID0gYXJncztcclxuICAgIGlmIChjb2x1bW5GaWx0ZXIpIHtcclxuICAgICAgdGhpcy5jb2x1bW5GaWx0ZXIgPSBjb2x1bW5GaWx0ZXI7XHJcbiAgICB9XHJcbiAgICBpZiAoZXh0ZXJuYWxGaWx0ZXIpIHtcclxuICAgICAgdGhpcy5leHRlcm5hbEZpbHRlciA9IGV4dGVybmFsRmlsdGVyO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpbHRlckRlZikge1xyXG4gICAgICB0aGlzLmZpbHRlckRlZiA9IGZpbHRlckRlZjtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3QgZXh0ZXJuYWxGaWx0ZXIgb2YgdGhpcy5leHRlcm5hbEZpbHRlcnMpIHtcclxuICAgICAgaWYgKGV4dGVybmFsRmlsdGVyLnR5cGUgPT09ICdkYXRlcmFuZ2UnKSB7XHJcbiAgICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcltleHRlcm5hbEZpbHRlci5maWVsZF0gPSB7XHJcbiAgICAgICAgICBmcm9tOiB0aGlzLmV4dGVybmFsRmlsdGVyW2V4dGVybmFsRmlsdGVyLmZpZWxkXT8uZnJvbSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICB0bzogdGhpcy5leHRlcm5hbEZpbHRlcltleHRlcm5hbEZpbHRlci5maWVsZF0/LnRvID8/IHVuZGVmaW5lZFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxufVxyXG4iXX0=