tnx-shared 5.1.367 → 5.1.370

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 (49) hide show
  1. package/assets/package.json.tmp +13 -0
  2. package/bundles/tnx-shared.umd.js +399 -123
  3. package/bundles/tnx-shared.umd.js.map +1 -1
  4. package/bundles/tnx-shared.umd.min.js +2 -2
  5. package/bundles/tnx-shared.umd.min.js.map +1 -1
  6. package/classes/form-schema.d.ts +5 -0
  7. package/classes/form-schema.d.ts.map +1 -1
  8. package/components/crud/crud-form/crud-form.component.d.ts +1 -1
  9. package/components/crud/crud-form/crud-form.component.d.ts.map +1 -1
  10. package/components/crud/crud-list/crud-list.component.d.ts.map +1 -1
  11. package/components/file-explorer/file-manager/file-manager.component.d.ts.map +1 -1
  12. package/components/file-explorer/services/file-data.service.d.ts.map +1 -1
  13. package/components/form-builder/form-builder.component.d.ts +11 -0
  14. package/components/form-builder/form-builder.component.d.ts.map +1 -0
  15. package/components/form-builder/form-builder.component.ngfactory.d.ts.map +1 -0
  16. package/components/form-builder/form-builder.component.scss.shim.ngstyle.d.ts.map +1 -0
  17. package/components/image-uploader/image-uploader.component.d.ts +47 -0
  18. package/components/image-uploader/image-uploader.component.d.ts.map +1 -0
  19. package/components/image-uploader/image-uploader.component.ngfactory.d.ts.map +1 -0
  20. package/components/image-uploader/image-uploader.component.scss.shim.ngstyle.d.ts.map +1 -0
  21. package/components/tn-tabview/tn-tabview.component.d.ts +1 -0
  22. package/components/tn-tabview/tn-tabview.component.d.ts.map +1 -1
  23. package/components/workflow/services/workflow-permission-detail.service.d.ts.map +1 -1
  24. package/esm2015/classes/form-schema.js +10 -1
  25. package/esm2015/components/chat/chat-box/chat-box.component.js +1 -1
  26. package/esm2015/components/chat/chat-send-message-box/chat-send-message-box.component.js +1 -1
  27. package/esm2015/components/crud/crud-form/crud-form.component.js +5 -3
  28. package/esm2015/components/crud/crud-list/crud-list.component.js +3 -3
  29. package/esm2015/components/file-explorer/file-manager/file-manager.component.js +2 -3
  30. package/esm2015/components/file-explorer/services/file-data.service.js +19 -7
  31. package/esm2015/components/form-builder/form-builder.component.js +31 -0
  32. package/esm2015/components/image-uploader/image-uploader.component.js +206 -0
  33. package/esm2015/components/tn-tabview/tn-tabview.component.js +5 -2
  34. package/esm2015/components/workflow/services/workflow-permission-detail.service.js +4 -3
  35. package/esm2015/models/grid-info.js +2 -2
  36. package/esm2015/services/customize-ui.service.js +1 -1
  37. package/esm2015/tnx-shared.js +106 -104
  38. package/esm2015/tnx-shared.module.js +8 -2
  39. package/fesm2015/tnx-shared.js +270 -17
  40. package/fesm2015/tnx-shared.js.map +1 -1
  41. package/models/grid-info.d.ts +1 -1
  42. package/models/grid-info.d.ts.map +1 -1
  43. package/package.json +4 -3
  44. package/tnx-shared.d.ts +105 -103
  45. package/tnx-shared.d.ts.map +1 -1
  46. package/tnx-shared.metadata.json +1 -1
  47. package/tnx-shared.module.d.ts +3 -1
  48. package/tnx-shared.module.d.ts.map +1 -1
  49. package/tnx-shared.module.ngfactory.d.ts.map +1 -1
@@ -57,18 +57,26 @@ export class FileDataService {
57
57
  }
58
58
  }
59
59
  getDataSourceForFileUploadControls() {
60
- const entityKeys = [];
60
+ const filters = [];
61
61
  for (const control of this._fileUploadControls) {
62
- entityKeys.push(control.entityKey);
62
+ if (!control.serviceCode || !control.entity || !control.entityKey) {
63
+ continue;
64
+ }
65
+ const tempFilters = [
66
+ new Filter({ field: 'entity', operator: Operator.equal, value: control.entity }),
67
+ new Filter({ field: 'entityKey', operator: Operator.equal, value: control.entityKey }),
68
+ new Filter({ field: 'serviceCode', operator: Operator.equal, value: control.serviceCode }),
69
+ ];
70
+ filters.push(new Filter({ logic: 'and', filters: tempFilters }));
63
71
  }
64
- const fileFilter = new Filter({ field: 'entityKey', operator: Operator.in, value: JSON.stringify(entityKeys) });
72
+ const fileFilter = new Filter({ logic: 'or', filters: filters });
65
73
  this._fileService.getAll([fileFilter], null, [new Sort({ field: 'created', dir: -1 })]).then(res => {
66
74
  if (res.data == null || !res.success)
67
75
  return;
68
76
  const filesData = res.data;
69
77
  for (const control of this._fileUploadControls) {
70
- const fileObject = filesData.find(x => x.entityKey == control.entityKey);
71
- if (fileObject == null || fileObject == undefined) {
78
+ const fileObject = filesData.find(x => x.serviceCode === control.serviceCode && x.entity === control.entity && control.entityKey === x.entityKey);
79
+ if (fileObject == null) {
72
80
  continue;
73
81
  }
74
82
  control.setFileObject(fileObject);
@@ -97,7 +105,11 @@ export class FileDataService {
97
105
  }
98
106
  }
99
107
  getDataForControlsWithRootId(rootFolderIds) {
100
- this._fileService.getAll([new Filter({ field: 'folderId', operator: Operator.in, value: JSON.stringify(rootFolderIds) })]).then(res => {
108
+ this._fileService.getAll([new Filter({
109
+ field: 'folderId',
110
+ operator: Operator.in,
111
+ value: JSON.stringify(rootFolderIds)
112
+ })]).then(res => {
101
113
  if (!res || !res.success || !res.data) {
102
114
  return;
103
115
  }
@@ -170,4 +182,4 @@ FileDataService.decorators = [
170
182
  FileDataService.ctorParameters = () => [
171
183
  { type: Injector }
172
184
  ];
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9maWxlLWV4cGxvcmVyL3NlcnZpY2VzL2ZpbGUtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDckcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUtqRCxNQUFNLE9BQU8sZUFBZTtJQU14QixZQUNJLFNBQW1CO1FBSHZCLHlCQUFvQixHQUEyQixFQUFFLENBQUM7UUFDbEQsd0JBQW1CLEdBQWlDLEVBQUUsQ0FBQztRQUluRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxHQUFH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Q2xCLENBQUM7SUFFTyxXQUFXLENBQUMsV0FBbUIsRUFBRSxNQUFjLEVBQUUsU0FBaUI7UUFDdEUsT0FBTyxHQUFHLFdBQVcsSUFBSSxNQUFNLElBQUksU0FBUyxFQUFFLENBQUM7SUFDbkQsQ0FBQzs7OztZQTdLSixVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7OztZQWRvQixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IEZpbHRlciwgU29ydCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9ncmlkLWluZm8nO1xyXG5pbXBvcnQgeyBDcnVkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NydWQuc2VydmljZSc7XHJcbmltcG9ydCB7IG11bHRpcGxlU29ydCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FycmF5JztcclxuaW1wb3J0IHsgU2VydmljZUZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlLWZpbGUtdXBsb2FkL3NlcnZpY2UtZmlsZS11cGxvYWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsZU1hbmFnZXJDb21wb25lbnQgfSBmcm9tICcuLi9maWxlLW1hbmFnZXIvZmlsZS1tYW5hZ2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNlcnZpY2VSZXF1ZXN0TW9kZWwgfSBmcm9tICcuLy4uL21vZGVscy9zZXJ2aWNlLXJlcXVlc3QtbW9kZWwnO1xyXG5pbXBvcnQgeyBGaWxlT2JqZWN0U2VydmljZSB9IGZyb20gJy4vZmlsZS1vYmplY3Quc2VydmljZSc7XHJcbmltcG9ydCB7IEZvbGRlclNlcnZpY2UgfSBmcm9tICcuL2ZvbGRlci5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsZURhdGFTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgX2ZpbGVTZXJ2aWNlOiBGaWxlT2JqZWN0U2VydmljZTtcclxuICAgIHByaXZhdGUgX2ZvbGRlclNlcnZpY2U6IEZvbGRlclNlcnZpY2U7XHJcbiAgICBwcml2YXRlIF9jcnVkU2VydmljZTogQ3J1ZFNlcnZpY2U7XHJcbiAgICBfZmlsZU1hbmFnZXJDb250cm9sczogRmlsZU1hbmFnZXJDb21wb25lbnRbXSA9IFtdO1xyXG4gICAgX2ZpbGVVcGxvYWRDb250cm9sczogU2VydmljZUZpbGVVcGxvYWRDb21wb25lbnRbXSA9IFtdO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgX2luamVjdG9yOiBJbmplY3RvclxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5fZmlsZU1hbmFnZXJDb250cm9scyA9IFtdO1xyXG4gICAgICAgIHRoaXMuX2ZpbGVTZXJ2aWNlID0gX2luamVjdG9yLmdldChGaWxlT2JqZWN0U2VydmljZSk7XHJcbiAgICAgICAgdGhpcy5fZm9sZGVyU2VydmljZSA9IF9pbmplY3Rvci5nZXQoRm9sZGVyU2VydmljZSk7XHJcbiAgICAgICAgdGhpcy5fY3J1ZFNlcnZpY2UgPSBfaW5qZWN0b3IuZ2V0KENydWRTZXJ2aWNlKTtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlcihjb250cm9sOiBGaWxlTWFuYWdlckNvbXBvbmVudCB8IFNlcnZpY2VGaWxlVXBsb2FkQ29tcG9uZW50KSB7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGaWxlTWFuYWdlckNvbXBvbmVudCkge1xyXG4gICAgICAgICAgICB0aGlzLl9maWxlTWFuYWdlckNvbnRyb2xzLnB1c2goY29udHJvbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgU2VydmljZUZpbGVVcGxvYWRDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5fZmlsZVVwbG9hZENvbnRyb2xzLnB1c2goY29udHJvbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICB1bnJlZ2lzdGVyKGNvbnRyb2w6IEZpbGVNYW5hZ2VyQ29tcG9uZW50IHwgU2VydmljZUZpbGVVcGxvYWRDb21wb25lbnQpIHtcclxuICAgICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZpbGVNYW5hZ2VyQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fZmlsZU1hbmFnZXJDb250cm9scyB8fCAhdGhpcy5fZmlsZU1hbmFnZXJDb250cm9scy5sZW5ndGggfHwgIWNvbnRyb2wpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLl9maWxlTWFuYWdlckNvbnRyb2xzLmZpbmRJbmRleChpID0+IGkuc2VydmljZUNvZGUgPT0gY29udHJvbC5zZXJ2aWNlQ29kZVxyXG4gICAgICAgICAgICAgICAgJiYgaS5lbnRpdHkgPT0gY29udHJvbC5lbnRpdHlcclxuICAgICAgICAgICAgICAgICYmIGkuZW50aXR5S2V5ID09IGNvbnRyb2wuZW50aXR5S2V5KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChpbmRleCAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZmlsZU1hbmFnZXJDb250cm9scy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBTZXJ2aWNlRmlsZVVwbG9hZENvbXBvbmVudCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2ZpbGVVcGxvYWRDb250cm9scyB8fCAhdGhpcy5fZmlsZVVwbG9hZENvbnRyb2xzLmxlbmd0aCB8fCAhY29udHJvbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBjb250cm9sSW5kZXggPSB0aGlzLl9maWxlVXBsb2FkQ29udHJvbHMuZmluZEluZGV4KHggPT4geC5zZXJ2aWNlQ29kZSA9PSBjb250cm9sLnNlcnZpY2VDb2RlXHJcbiAgICAgICAgICAgICAgICAmJiB4LmVudGl0eSA9PSBjb250cm9sLmVudGl0eSAmJiB4LmVudGl0eUtleSA9PSBjb250cm9sLmVudGl0eUtleSk7XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sSW5kZXggIT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVVcGxvYWRDb250cm9scy5zcGxpY2UoY29udHJvbEluZGV4LCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRhKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9maWxlTWFuYWdlckNvbnRyb2xzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXREYXRhU291cmNlRm9yRmlsZU1hbmFnZXJDb250cm9scygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLl9maWxlVXBsb2FkQ29udHJvbHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmdldERhdGFTb3VyY2VGb3JGaWxlVXBsb2FkQ29udHJvbHMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXREYXRhU291cmNlRm9yRmlsZVVwbG9hZENvbnRyb2xzKCkge1xyXG4gICAgICAgIGNvbnN0IGVudGl0eUtleXMgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5fZmlsZVVwbG9hZENvbnRyb2xzKSB7XHJcbiAgICAgICAgICAgIGVudGl0eUtleXMucHVzaChjb250cm9sLmVudGl0eUtleSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGZpbGVGaWx0ZXIgPSBuZXcgRmlsdGVyKHsgZmllbGQ6ICdlbnRpdHlLZXknLCBvcGVyYXRvcjogT3BlcmF0b3IuaW4sIHZhbHVlOiBKU09OLnN0cmluZ2lmeShlbnRpdHlLZXlzKSB9KTtcclxuICAgICAgICB0aGlzLl9maWxlU2VydmljZS5nZXRBbGwoW2ZpbGVGaWx0ZXJdLCBudWxsLCBbbmV3IFNvcnQoeyBmaWVsZDogJ2NyZWF0ZWQnLCBkaXI6IC0xIH0pXSkudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzLmRhdGEgPT0gbnVsbCB8fCAhcmVzLnN1Y2Nlc3MpIHJldHVybjtcclxuICAgICAgICAgICAgY29uc3QgZmlsZXNEYXRhID0gcmVzLmRhdGEgYXMgYW55W107XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29udHJvbCBvZiB0aGlzLl9maWxlVXBsb2FkQ29udHJvbHMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVPYmplY3QgPSBmaWxlc0RhdGEuZmluZCh4ID0+IHguZW50aXR5S2V5ID09IGNvbnRyb2wuZW50aXR5S2V5KTtcclxuICAgICAgICAgICAgICAgIGlmIChmaWxlT2JqZWN0ID09IG51bGwgfHwgZmlsZU9iamVjdCA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0RmlsZU9iamVjdChmaWxlT2JqZWN0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0RGF0YVNvdXJjZUZvckZpbGVNYW5hZ2VyQ29udHJvbHMoKSB7XHJcbiAgICAgICAgY29uc3QgZGF0YVBvc3RzID0gW107XHJcbiAgICAgICAgY29uc3Qgcm9vdEZvbGRlcklkcyA9IFtdO1xyXG4gICAgICAgIHRoaXMuX2ZpbGVNYW5hZ2VyQ29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcclxuICAgICAgICAgICAgaWYgKCFjb250cm9sLnJvb3RGb2xkZXJJZCkge1xyXG4gICAgICAgICAgICAgICAgZGF0YVBvc3RzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIHNlcnZpY2VDb2RlOiBjb250cm9sLnNlcnZpY2VDb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eTogY29udHJvbC5lbnRpdHksXHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5S2V5OiBjb250cm9sLl9lbnRpdHlLZXlcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJvb3RGb2xkZXJJZHMucHVzaChjb250cm9sLnJvb3RGb2xkZXJJZCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHJvb3RGb2xkZXJJZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmdldERhdGFGb3JDb250cm9sc1dpdGhSb290SWQocm9vdEZvbGRlcklkcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkYXRhUG9zdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmdldERhdGFDb250cm9sc1dpdGhTZXJ2aWNlUmVxdWVzdE1vZGVsKGRhdGFQb3N0cyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0RGF0YUZvckNvbnRyb2xzV2l0aFJvb3RJZChyb290Rm9sZGVySWRzOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHRoaXMuX2ZpbGVTZXJ2aWNlLmdldEFsbChbbmV3IEZpbHRlcih7IGZpZWxkOiAnZm9sZGVySWQnLCBvcGVyYXRvcjogT3BlcmF0b3IuaW4sIHZhbHVlOiBKU09OLnN0cmluZ2lmeShyb290Rm9sZGVySWRzKSB9KV0pLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgaWYgKCFyZXMgfHwgIXJlcy5zdWNjZXNzIHx8ICFyZXMuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGFTb3VyY2VPYmplY3QgPSB7fTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIHJlcy5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZpbGUuZm9sZGVySWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvbGRlcklkID0gZmlsZS5mb2xkZXJJZDtcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhU291cmNlT2JqZWN0W2ZvbGRlcklkXSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZU9iamVjdFtmb2xkZXJJZF0gPSBbZmlsZV07XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlT2JqZWN0W2ZvbGRlcklkXS5wdXNoKGZpbGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29udHJvbCBvZiB0aGlzLl9maWxlTWFuYWdlckNvbnRyb2xzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIShjb250cm9sLnJvb3RGb2xkZXJJZCAmJiByb290Rm9sZGVySWRzLmluZGV4T2YoY29udHJvbC5yb290Rm9sZGVySWQpID49IDApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsc3RGaWxlOiBhbnlbXSA9IGRhdGFTb3VyY2VPYmplY3RbY29udHJvbC5yb290Rm9sZGVySWRdO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFsc3RGaWxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsc3RGaWxlLnNvcnQobXVsdGlwbGVTb3J0KFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ2ZpbGVFeHBsb3Jlckl0ZW1UeXBlJywgcmV2ZXJzZTogdHJ1ZSB9LCAvLyBT4bqvcCB44bq/cCBmb2xkZXIgbMOqbiB0csOqbiBmaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnbmFtZScsIHByaW1lcjogYSA9PiBhLnRvTG93ZXJDYXNlKCkgfSAvLyBPcmRlciB0aGVvIHTDqm4gKG5oxrBuZyBwaOG6o2kgdG9Mb3dlciB2w6wgVCA8IGIgPCB0KVxyXG4gICAgICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgICAgICBjb250cm9sLnNldFJvb3RGb2xkZXJJZChjb250cm9sLnJvb3RGb2xkZXJJZCk7XHJcbiAgICAgICAgICAgICAgICBjb250cm9sLnNldERhdGFzb3VyY2UobHN0RmlsZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldERhdGFDb250cm9sc1dpdGhTZXJ2aWNlUmVxdWVzdE1vZGVsKGRhdGFQb3N0czogU2VydmljZVJlcXVlc3RNb2RlbFtdKSB7XHJcbiAgICAgICAgdGhpcy5fZm9sZGVyU2VydmljZS5nZXRTaW1wbGVEYXRhQnlFbnRpdHlLZXlzKGRhdGFQb3N0cylcclxuICAgICAgICAgICAgLnRoZW4ocmVzID0+IHRoaXMuX2NydWRTZXJ2aWNlLmhhbmRsZVJlc3BvbnNlKHJlcywgJycsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFGaWxlID0gdGhpcy5wcm9jZXNzRGF0YXNvdXJjZUZpbGUocmVzLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGtleSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZmlsZU1hbmFnZXJDb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGtleSA9IGAke2NvbnRyb2wuc2VydmljZUNvZGV9LyR7Y29udHJvbC5lbnRpdHl9LyR7Y29udHJvbC5fZW50aXR5S2V5fWA7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFGaWxlW2tleV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5zZXRSb290Rm9sZGVySWQoZGF0YUZpbGVba2V5XS5mb2xkZXJJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0RGF0YXNvdXJjZShkYXRhRmlsZVtrZXldLmxzdEZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwcm9jZXNzRGF0YXNvdXJjZUZpbGUoZmlsZURhdGE6IGFueVtdID0gW10pIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcclxuICAgICAgICBPYmplY3Qua2V5cyhmaWxlRGF0YSkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICBmaWxlRGF0YVtrZXldLmxzdEZpbGUuc29ydChtdWx0aXBsZVNvcnQoXHJcbiAgICAgICAgICAgICAgICB7IG5hbWU6ICdmaWxlRXhwbG9yZXJJdGVtVHlwZScsIHJldmVyc2U6IHRydWUgfSwgLy8gU+G6r3AgeOG6v3AgZm9sZGVyIGzDqm4gdHLDqm4gZmlsZVxyXG4gICAgICAgICAgICAgICAgeyBuYW1lOiAnbmFtZScsIHByaW1lcjogYSA9PiBhLnRvTG93ZXJDYXNlKCkgfSAvLyBPcmRlciB0aGVvIHTDqm4gKG5oxrBuZyBwaOG6o2kgdG9Mb3dlciB2w6wgVCA8IGIgPCB0KVxyXG4gICAgICAgICAgICApKTtcclxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGZpbGVEYXRhW2tleV07XHJcbiAgICAgICAgICAgIHJlc3VsdFt0aGlzLmdlbmVyYXRlS2V5KGRhdGEuc2VydmljZUNvZGUsIGRhdGEuZW50aXR5LCBkYXRhLmVudGl0eUtleSldID0ge1xyXG4gICAgICAgICAgICAgICAgZm9sZGVySWQ6IGtleSxcclxuICAgICAgICAgICAgICAgIGxzdEZpbGU6IGZpbGVEYXRhW2tleV0ubHN0RmlsZVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUtleShzZXJ2aWNlQ29kZTogc3RyaW5nLCBlbnRpdHk6IHN0cmluZywgZW50aXR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gYCR7c2VydmljZUNvZGV9LyR7ZW50aXR5fS8ke2VudGl0eUtleX1gO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9maWxlLWV4cGxvcmVyL3NlcnZpY2VzL2ZpbGUtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDckcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUtqRCxNQUFNLE9BQU8sZUFBZTtJQU94QixZQUNJLFNBQW1CO1FBSnZCLHlCQUFvQixHQUEyQixFQUFFLENBQUM7UUFDbEQsd0JBQW1CLEdBQWlDLEVBQUUsQ0FBQztRQUtuRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxHQUFH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QU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQ25DLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSwrQkFBK0I7WUFDaEYsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLG1EQUFtRDthQUNyRyxDQUFDLENBQUM7WUFDSCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0IsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHO2dCQUN0RSxRQUFRLEVBQUUsR0FBRztnQkFDYixPQUFPLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU87YUFDakMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVPLFdBQVcsQ0FBQyxXQUFtQixFQUFFLE1BQWMsRUFBRSxTQUFpQjtRQUN0RSxPQUFPLEdBQUcsV0FBVyxJQUFJLE1BQU0sSUFBSSxTQUFTLEVBQUUsQ0FBQztJQUNuRCxDQUFDOzs7O1lBMUxKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7O1lBZG9CLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgRmlsdGVyLCBTb3J0IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XHJcbmltcG9ydCB7IENydWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY3J1ZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgbXVsdGlwbGVTb3J0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYXJyYXknO1xyXG5pbXBvcnQgeyBTZXJ2aWNlRmlsZVVwbG9hZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL3NlcnZpY2UtZmlsZS11cGxvYWQvc2VydmljZS1maWxlLXVwbG9hZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGaWxlTWFuYWdlckNvbXBvbmVudCB9IGZyb20gJy4uL2ZpbGUtbWFuYWdlci9maWxlLW1hbmFnZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VydmljZVJlcXVlc3RNb2RlbCB9IGZyb20gJy4uL21vZGVscy9zZXJ2aWNlLXJlcXVlc3QtbW9kZWwnO1xyXG5pbXBvcnQgeyBGaWxlT2JqZWN0U2VydmljZSB9IGZyb20gJy4vZmlsZS1vYmplY3Quc2VydmljZSc7XHJcbmltcG9ydCB7IEZvbGRlclNlcnZpY2UgfSBmcm9tICcuL2ZvbGRlci5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsZURhdGFTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgX2ZpbGVTZXJ2aWNlOiBGaWxlT2JqZWN0U2VydmljZTtcclxuICAgIHByaXZhdGUgX2ZvbGRlclNlcnZpY2U6IEZvbGRlclNlcnZpY2U7XHJcbiAgICBwcml2YXRlIF9jcnVkU2VydmljZTogQ3J1ZFNlcnZpY2U7XHJcbiAgICBfZmlsZU1hbmFnZXJDb250cm9sczogRmlsZU1hbmFnZXJDb21wb25lbnRbXSA9IFtdO1xyXG4gICAgX2ZpbGVVcGxvYWRDb250cm9sczogU2VydmljZUZpbGVVcGxvYWRDb21wb25lbnRbXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIF9pbmplY3RvcjogSW5qZWN0b3JcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuX2ZpbGVNYW5hZ2VyQ29udHJvbHMgPSBbXTtcclxuICAgICAgICB0aGlzLl9maWxlU2VydmljZSA9IF9pbmplY3Rvci5nZXQoRmlsZU9iamVjdFNlcnZpY2UpO1xyXG4gICAgICAgIHRoaXMuX2ZvbGRlclNlcnZpY2UgPSBfaW5qZWN0b3IuZ2V0KEZvbGRlclNlcnZpY2UpO1xyXG4gICAgICAgIHRoaXMuX2NydWRTZXJ2aWNlID0gX2luamVjdG9yLmdldChDcnVkU2VydmljZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXIoY29udHJvbDogRmlsZU1hbmFnZXJDb21wb25lbnQgfCBTZXJ2aWNlRmlsZVVwbG9hZENvbXBvbmVudCkge1xyXG4gICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRmlsZU1hbmFnZXJDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5fZmlsZU1hbmFnZXJDb250cm9scy5wdXNoKGNvbnRyb2wpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFNlcnZpY2VGaWxlVXBsb2FkQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2ZpbGVVcGxvYWRDb250cm9scy5wdXNoKGNvbnRyb2wpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgdW5yZWdpc3Rlcihjb250cm9sOiBGaWxlTWFuYWdlckNvbXBvbmVudCB8IFNlcnZpY2VGaWxlVXBsb2FkQ29tcG9uZW50KSB7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGaWxlTWFuYWdlckNvbXBvbmVudCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2ZpbGVNYW5hZ2VyQ29udHJvbHMgfHwgIXRoaXMuX2ZpbGVNYW5hZ2VyQ29udHJvbHMubGVuZ3RoIHx8ICFjb250cm9sKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fZmlsZU1hbmFnZXJDb250cm9scy5maW5kSW5kZXgoaSA9PiBpLnNlcnZpY2VDb2RlID09IGNvbnRyb2wuc2VydmljZUNvZGVcclxuICAgICAgICAgICAgICAgICYmIGkuZW50aXR5ID09IGNvbnRyb2wuZW50aXR5XHJcbiAgICAgICAgICAgICAgICAmJiBpLmVudGl0eUtleSA9PSBjb250cm9sLmVudGl0eUtleSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoaW5kZXggIT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVNYW5hZ2VyQ29udHJvbHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgU2VydmljZUZpbGVVcGxvYWRDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9maWxlVXBsb2FkQ29udHJvbHMgfHwgIXRoaXMuX2ZpbGVVcGxvYWRDb250cm9scy5sZW5ndGggfHwgIWNvbnRyb2wpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgY29udHJvbEluZGV4ID0gdGhpcy5fZmlsZVVwbG9hZENvbnRyb2xzLmZpbmRJbmRleCh4ID0+IHguc2VydmljZUNvZGUgPT0gY29udHJvbC5zZXJ2aWNlQ29kZVxyXG4gICAgICAgICAgICAgICAgJiYgeC5lbnRpdHkgPT0gY29udHJvbC5lbnRpdHkgJiYgeC5lbnRpdHlLZXkgPT0gY29udHJvbC5lbnRpdHlLZXkpO1xyXG4gICAgICAgICAgICBpZiAoY29udHJvbEluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9maWxlVXBsb2FkQ29udHJvbHMuc3BsaWNlKGNvbnRyb2xJbmRleCwgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0YSgpIHtcclxuICAgICAgICBpZiAodGhpcy5fZmlsZU1hbmFnZXJDb250cm9scy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RGF0YVNvdXJjZUZvckZpbGVNYW5hZ2VyQ29udHJvbHMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5fZmlsZVVwbG9hZENvbnRyb2xzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXREYXRhU291cmNlRm9yRmlsZVVwbG9hZENvbnRyb2xzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0RGF0YVNvdXJjZUZvckZpbGVVcGxvYWRDb250cm9scygpIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgY29udHJvbCBvZiB0aGlzLl9maWxlVXBsb2FkQ29udHJvbHMpIHtcclxuICAgICAgICAgICAgaWYgKCFjb250cm9sLnNlcnZpY2VDb2RlIHx8ICFjb250cm9sLmVudGl0eSB8fCAhY29udHJvbC5lbnRpdHlLZXkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHRlbXBGaWx0ZXJzID0gW1xyXG4gICAgICAgICAgICAgICAgbmV3IEZpbHRlcih7IGZpZWxkOiAnZW50aXR5Jywgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLCB2YWx1ZTogY29udHJvbC5lbnRpdHkgfSksXHJcbiAgICAgICAgICAgICAgICBuZXcgRmlsdGVyKHsgZmllbGQ6ICdlbnRpdHlLZXknLCBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsIHZhbHVlOiBjb250cm9sLmVudGl0eUtleSB9KSxcclxuICAgICAgICAgICAgICAgIG5ldyBGaWx0ZXIoeyBmaWVsZDogJ3NlcnZpY2VDb2RlJywgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLCB2YWx1ZTogY29udHJvbC5zZXJ2aWNlQ29kZSB9KSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgZmlsdGVycy5wdXNoKG5ldyBGaWx0ZXIoeyBsb2dpYzogJ2FuZCcsIGZpbHRlcnM6IHRlbXBGaWx0ZXJzIH0pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZmlsZUZpbHRlciA9IG5ldyBGaWx0ZXIoeyBsb2dpYzogJ29yJywgZmlsdGVyczogZmlsdGVycyB9KTtcclxuICAgICAgICB0aGlzLl9maWxlU2VydmljZS5nZXRBbGwoW2ZpbGVGaWx0ZXJdLCBudWxsLCBbbmV3IFNvcnQoeyBmaWVsZDogJ2NyZWF0ZWQnLCBkaXI6IC0xIH0pXSkudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzLmRhdGEgPT0gbnVsbCB8fCAhcmVzLnN1Y2Nlc3MpIHJldHVybjtcclxuICAgICAgICAgICAgY29uc3QgZmlsZXNEYXRhID0gcmVzLmRhdGEgYXMgYW55W107XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29udHJvbCBvZiB0aGlzLl9maWxlVXBsb2FkQ29udHJvbHMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVPYmplY3QgPSBmaWxlc0RhdGEuZmluZCh4ID0+IHguc2VydmljZUNvZGUgPT09IGNvbnRyb2wuc2VydmljZUNvZGUgJiYgeC5lbnRpdHkgPT09IGNvbnRyb2wuZW50aXR5ICYmIGNvbnRyb2wuZW50aXR5S2V5ID09PSB4LmVudGl0eUtleSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZmlsZU9iamVjdCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb250cm9sLnNldEZpbGVPYmplY3QoZmlsZU9iamVjdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldERhdGFTb3VyY2VGb3JGaWxlTWFuYWdlckNvbnRyb2xzKCkge1xyXG4gICAgICAgIGNvbnN0IGRhdGFQb3N0cyA9IFtdO1xyXG4gICAgICAgIGNvbnN0IHJvb3RGb2xkZXJJZHMgPSBbXTtcclxuICAgICAgICB0aGlzLl9maWxlTWFuYWdlckNvbnRyb2xzLmZvckVhY2goY29udHJvbCA9PiB7XHJcbiAgICAgICAgICAgIGlmICghY29udHJvbC5yb290Rm9sZGVySWQpIHtcclxuICAgICAgICAgICAgICAgIGRhdGFQb3N0cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlQ29kZTogY29udHJvbC5zZXJ2aWNlQ29kZSxcclxuICAgICAgICAgICAgICAgICAgICBlbnRpdHk6IGNvbnRyb2wuZW50aXR5LFxyXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eUtleTogY29udHJvbC5fZW50aXR5S2V5XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByb290Rm9sZGVySWRzLnB1c2goY29udHJvbC5yb290Rm9sZGVySWQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChyb290Rm9sZGVySWRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXREYXRhRm9yQ29udHJvbHNXaXRoUm9vdElkKHJvb3RGb2xkZXJJZHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGF0YVBvc3RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXREYXRhQ29udHJvbHNXaXRoU2VydmljZVJlcXVlc3RNb2RlbChkYXRhUG9zdHMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldERhdGFGb3JDb250cm9sc1dpdGhSb290SWQocm9vdEZvbGRlcklkczogc3RyaW5nW10pIHtcclxuICAgICAgICB0aGlzLl9maWxlU2VydmljZS5nZXRBbGwoW25ldyBGaWx0ZXIoe1xyXG4gICAgICAgICAgICBmaWVsZDogJ2ZvbGRlcklkJyxcclxuICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmluLFxyXG4gICAgICAgICAgICB2YWx1ZTogSlNPTi5zdHJpbmdpZnkocm9vdEZvbGRlcklkcylcclxuICAgICAgICB9KV0pLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgaWYgKCFyZXMgfHwgIXJlcy5zdWNjZXNzIHx8ICFyZXMuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGFTb3VyY2VPYmplY3QgPSB7fTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIHJlcy5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZpbGUuZm9sZGVySWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvbGRlcklkID0gZmlsZS5mb2xkZXJJZDtcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhU291cmNlT2JqZWN0W2ZvbGRlcklkXSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZU9iamVjdFtmb2xkZXJJZF0gPSBbZmlsZV07XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlT2JqZWN0W2ZvbGRlcklkXS5wdXNoKGZpbGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29udHJvbCBvZiB0aGlzLl9maWxlTWFuYWdlckNvbnRyb2xzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIShjb250cm9sLnJvb3RGb2xkZXJJZCAmJiByb290Rm9sZGVySWRzLmluZGV4T2YoY29udHJvbC5yb290Rm9sZGVySWQpID49IDApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsc3RGaWxlOiBhbnlbXSA9IGRhdGFTb3VyY2VPYmplY3RbY29udHJvbC5yb290Rm9sZGVySWRdO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFsc3RGaWxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsc3RGaWxlLnNvcnQobXVsdGlwbGVTb3J0KFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ2ZpbGVFeHBsb3Jlckl0ZW1UeXBlJywgcmV2ZXJzZTogdHJ1ZSB9LCAvLyBT4bqvcCB44bq/cCBmb2xkZXIgbMOqbiB0csOqbiBmaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnbmFtZScsIHByaW1lcjogYSA9PiBhLnRvTG93ZXJDYXNlKCkgfSAvLyBPcmRlciB0aGVvIHTDqm4gKG5oxrBuZyBwaOG6o2kgdG9Mb3dlciB2w6wgVCA8IGIgPCB0KVxyXG4gICAgICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgICAgICBjb250cm9sLnNldFJvb3RGb2xkZXJJZChjb250cm9sLnJvb3RGb2xkZXJJZCk7XHJcbiAgICAgICAgICAgICAgICBjb250cm9sLnNldERhdGFzb3VyY2UobHN0RmlsZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldERhdGFDb250cm9sc1dpdGhTZXJ2aWNlUmVxdWVzdE1vZGVsKGRhdGFQb3N0czogU2VydmljZVJlcXVlc3RNb2RlbFtdKSB7XHJcbiAgICAgICAgdGhpcy5fZm9sZGVyU2VydmljZS5nZXRTaW1wbGVEYXRhQnlFbnRpdHlLZXlzKGRhdGFQb3N0cylcclxuICAgICAgICAgICAgLnRoZW4ocmVzID0+IHRoaXMuX2NydWRTZXJ2aWNlLmhhbmRsZVJlc3BvbnNlKHJlcywgJycsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFGaWxlID0gdGhpcy5wcm9jZXNzRGF0YXNvdXJjZUZpbGUocmVzLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGtleSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZmlsZU1hbmFnZXJDb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGtleSA9IGAke2NvbnRyb2wuc2VydmljZUNvZGV9LyR7Y29udHJvbC5lbnRpdHl9LyR7Y29udHJvbC5fZW50aXR5S2V5fWA7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFGaWxlW2tleV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5zZXRSb290Rm9sZGVySWQoZGF0YUZpbGVba2V5XS5mb2xkZXJJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0RGF0YXNvdXJjZShkYXRhRmlsZVtrZXldLmxzdEZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwcm9jZXNzRGF0YXNvdXJjZUZpbGUoZmlsZURhdGE6IGFueVtdID0gW10pIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcclxuICAgICAgICBPYmplY3Qua2V5cyhmaWxlRGF0YSkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICBmaWxlRGF0YVtrZXldLmxzdEZpbGUuc29ydChtdWx0aXBsZVNvcnQoXHJcbiAgICAgICAgICAgICAgICB7IG5hbWU6ICdmaWxlRXhwbG9yZXJJdGVtVHlwZScsIHJldmVyc2U6IHRydWUgfSwgLy8gU+G6r3AgeOG6v3AgZm9sZGVyIGzDqm4gdHLDqm4gZmlsZVxyXG4gICAgICAgICAgICAgICAgeyBuYW1lOiAnbmFtZScsIHByaW1lcjogYSA9PiBhLnRvTG93ZXJDYXNlKCkgfSAvLyBPcmRlciB0aGVvIHTDqm4gKG5oxrBuZyBwaOG6o2kgdG9Mb3dlciB2w6wgVCA8IGIgPCB0KVxyXG4gICAgICAgICAgICApKTtcclxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGZpbGVEYXRhW2tleV07XHJcbiAgICAgICAgICAgIHJlc3VsdFt0aGlzLmdlbmVyYXRlS2V5KGRhdGEuc2VydmljZUNvZGUsIGRhdGEuZW50aXR5LCBkYXRhLmVudGl0eUtleSldID0ge1xyXG4gICAgICAgICAgICAgICAgZm9sZGVySWQ6IGtleSxcclxuICAgICAgICAgICAgICAgIGxzdEZpbGU6IGZpbGVEYXRhW2tleV0ubHN0RmlsZVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUtleShzZXJ2aWNlQ29kZTogc3RyaW5nLCBlbnRpdHk6IHN0cmluZywgZW50aXR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gYCR7c2VydmljZUNvZGV9LyR7ZW50aXR5fS8ke2VudGl0eUtleX1gO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { Component, Injector } from '@angular/core';
2
+ import { ComponentContextService } from '../../app-context/component-context.service';
3
+ import { ComponentBase } from '../../classes/base/component-base';
4
+ import { NotifierService } from '../../services/notifier.service';
5
+ export class FormBuilderComponent extends ComponentBase {
6
+ constructor(_injector, _notifierService) {
7
+ super(_injector);
8
+ this._notifierService = _notifierService;
9
+ this.controls = [];
10
+ }
11
+ ngOnInit() {
12
+ }
13
+ onDrop(evt) {
14
+ this.controls.push({
15
+ ten: '123'
16
+ });
17
+ }
18
+ }
19
+ FormBuilderComponent.decorators = [
20
+ { type: Component, args: [{
21
+ selector: 'app-form-builder',
22
+ template: "<div class=\"form-builder\">\r\n <div class=\"control-list\">\r\n <div class=\"control-item\" dndDraggable>\r\n 123\r\n <div dndHandle>HANDLE\r\n </div>\r\n </div>\r\n <div class=\"control-item\" dndDraggable>\r\n 234\r\n <div dndHandle>HANDLE\r\n </div>\r\n </div>\r\n </div>\r\n <div dndDropzone class=\"dynamic-form\" (dndDrop)=\"onDrop($event)\">\r\n <div *ngFor=\"let item of controls; index as i\" class=\"control p-md-6\">\r\n {{i}}\r\n </div>\r\n <div class=\"p-grid control\">\r\n <div class=\"placeholder p-md-6\" dndPlaceholderRef>\r\n placeholder\r\n </div>\r\n </div>\r\n </div>\r\n</div>",
23
+ providers: [ComponentContextService],
24
+ styles: [".form-builder{display:flex;height:400px}.form-builder .control-list{flex:0 0 250px}.form-builder .control-list .control-item{border:1px solid #eee;margin-bottom:1em;padding:1em}.form-builder .dynamic-form{border:1px solid #eee;flex:1 1;padding:1rem}.form-builder .dynamic-form .control{padding:.5rem}.form-builder .dynamic-form .placeholder{border:1px dotted #eee}"]
25
+ },] }
26
+ ];
27
+ FormBuilderComponent.ctorParameters = () => [
28
+ { type: Injector },
29
+ { type: NotifierService }
30
+ ];
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idWlsZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2Zvcm0tYnVpbGRlci9mb3JtLWJ1aWxkZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFRbEUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGFBQWE7SUFFbkQsWUFDSSxTQUFtQixFQUNYLGdCQUFpQztRQUV6QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFGVCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBSDdDLGFBQVEsR0FBVSxFQUFFLENBQUM7SUFNckIsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUc7UUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNmLEdBQUcsRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7O1lBdEJKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QiwyeEJBQTRDO2dCQUU1QyxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs7YUFDdkM7OztZQVZtQixRQUFRO1lBR25CLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYmFzZS9jb21wb25lbnQtYmFzZSc7XHJcbmltcG9ydCB7IE5vdGlmaWVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWVyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1mb3JtLWJ1aWxkZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tYnVpbGRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9mb3JtLWJ1aWxkZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybUJ1aWxkZXJDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIGNvbnRyb2xzOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcml2YXRlIF9ub3RpZmllclNlcnZpY2U6IE5vdGlmaWVyU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyb3AoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9scy5wdXNoKHtcclxuICAgICAgICAgICAgdGVuOiAnMTIzJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,206 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Component, EventEmitter, forwardRef, Injector, Input, Output, ViewChild } from '@angular/core';
3
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ import { FileUpload } from 'tn-custom-primeng/fileupload';
5
+ import { ComponentBase } from '../../classes/base/component-base';
6
+ import { SharedFolderType } from '../../classes/constants';
7
+ import { Operator } from '../../classes/form-schema';
8
+ import { NotifierService } from '../../services/notifier.service';
9
+ import { FileExplorerService } from '../file-explorer/services/file-explorer.service';
10
+ import { FileObjectService } from '../file-explorer/services/file-object.service';
11
+ export class ImageUploaderComponent extends ComponentBase {
12
+ constructor(_injector, _notifierService, _fileExplorerService, _fileObjectService) {
13
+ super(_injector);
14
+ this._notifierService = _notifierService;
15
+ this._fileExplorerService = _fileExplorerService;
16
+ this._fileObjectService = _fileObjectService;
17
+ this.chooseLabel = 'Chọn ảnh';
18
+ this.defaultNoImageUrl = 'assets/images/avatar.jpg';
19
+ this.disabled = false;
20
+ this.onChanged = new EventEmitter();
21
+ this.onInit = new EventEmitter();
22
+ this.lstFileUploaded = [];
23
+ this.lstFileIdUploaded = [];
24
+ this.apiUploadUrl = '';
25
+ this.rawFileName = '';
26
+ this.loadingTimeout = null;
27
+ this.loading = false;
28
+ this.ready = false;
29
+ }
30
+ set entityKey(value) {
31
+ this._entityKey = value;
32
+ }
33
+ ngOnInit() {
34
+ this.apiUploadUrl = this._fileObjectService.getUploadIntoSharedFolderUrl();
35
+ this.onInit.emit(this);
36
+ this.ready = true;
37
+ }
38
+ writeValue(obj) {
39
+ if (obj) {
40
+ if (Array.isArray(obj)) {
41
+ this.lstFileIdUploaded = obj;
42
+ }
43
+ else {
44
+ this.lstFileIdUploaded = obj.split(',');
45
+ }
46
+ }
47
+ this.getListFile();
48
+ }
49
+ registerOnChange(fn) {
50
+ this.onChange = fn;
51
+ }
52
+ registerOnTouched(fn) {
53
+ this.onTouched = fn;
54
+ }
55
+ setDisabledState(isDisabled) {
56
+ this.disabled = isDisabled;
57
+ }
58
+ // Get avatar.
59
+ getListFile() {
60
+ if (!this.lstFileIdUploaded || !this.lstFileIdUploaded.length) {
61
+ this.lstFileUploaded = [];
62
+ return;
63
+ }
64
+ this._markLoading();
65
+ this._fileObjectService.getAll([
66
+ this.newFilter('id', Operator.in, this.lstFileIdUploaded)
67
+ ]).then(res => {
68
+ this._unmarkLoading();
69
+ this.handleResponse(res, '', f => {
70
+ res.data.forEach(file => {
71
+ file.url = this._fileExplorerService.getFileDownloadUrl(file.id);
72
+ });
73
+ this.lstFileUploaded = res.data;
74
+ }, f => {
75
+ this.lstFileUploaded = [];
76
+ });
77
+ }).catch(err => {
78
+ this._unmarkLoading();
79
+ });
80
+ }
81
+ // Delete avartar.
82
+ deleteAll() {
83
+ if (this.loading)
84
+ return;
85
+ this._notifierService.showConfirm('Bạn có chắc chắn muốn xóa?')
86
+ .then(rs => {
87
+ if (!rs)
88
+ return;
89
+ this._markLoading();
90
+ this._fileObjectService.deleteFileFromSharedFolder({
91
+ sharedFolderType: SharedFolderType.Avatar,
92
+ entityKey: this._entityKey
93
+ }).then(res => {
94
+ this._unmarkLoading();
95
+ this.handleResponse(res, '', f => {
96
+ this.lstFileIdUploaded = [];
97
+ this.lstFileUploaded = [];
98
+ this.fireEvent();
99
+ });
100
+ }).catch(err => {
101
+ this._unmarkLoading();
102
+ console.error(err);
103
+ });
104
+ });
105
+ }
106
+ deleteAvatar(item) {
107
+ if (this.loading)
108
+ return;
109
+ this._notifierService.showConfirm('Bạn có chắc chắn muốn xóa?')
110
+ .then(rs => {
111
+ if (!rs)
112
+ return;
113
+ this._markLoading();
114
+ this._fileObjectService.deleteById(item.id)
115
+ .then(res => {
116
+ this._unmarkLoading();
117
+ this.handleResponse(res, '', f => {
118
+ const index = this.lstFileIdUploaded.findIndex(q => q == item.id);
119
+ this.lstFileIdUploaded.splice(index, 1);
120
+ this.fireEventAndGetFile();
121
+ });
122
+ }).catch(err => {
123
+ this._unmarkLoading();
124
+ console.error(err);
125
+ });
126
+ });
127
+ }
128
+ // Upload avartar.
129
+ onSelectThumbnailClick() {
130
+ if (this.loading) {
131
+ return;
132
+ }
133
+ this.fileControl.basicFileInput.nativeElement.click();
134
+ }
135
+ onBeforeUpload(evt) {
136
+ this._markLoading();
137
+ evt.formData.append('sharedFolderType', SharedFolderType.Avatar);
138
+ evt.formData.append('entityKey', this._entityKey);
139
+ }
140
+ onUploadEvent(event) {
141
+ return __awaiter(this, void 0, void 0, function* () {
142
+ const files = event.files;
143
+ if (files.length > 0) {
144
+ const responseJson = event.originalEvent.body;
145
+ if (responseJson.success) {
146
+ this.lstFileIdUploaded.push(responseJson.data);
147
+ this.fireEventAndGetFile();
148
+ }
149
+ }
150
+ });
151
+ }
152
+ fireEventAndGetFile() {
153
+ this.fireEvent();
154
+ this.getListFile();
155
+ }
156
+ fireEvent() {
157
+ const valueEmit = this.lstFileIdUploaded.toString();
158
+ this.onChanged.emit(valueEmit);
159
+ this.onChange(valueEmit);
160
+ }
161
+ onError(ev) {
162
+ ev.srcElement.src = this.defaultNoImageUrl;
163
+ }
164
+ _markLoading() {
165
+ this.loading = true;
166
+ clearTimeout(this.loadingTimeout);
167
+ this.loadingTimeout = setTimeout(() => {
168
+ this._notifierService.showWarning('Máy chủ phản hồi quá lâu, vui lòng kiểm tra lại đường truyền mạng!');
169
+ this.loading = false;
170
+ }, 120000);
171
+ }
172
+ _unmarkLoading() {
173
+ clearTimeout(this.loadingTimeout);
174
+ this.loading = false;
175
+ }
176
+ }
177
+ ImageUploaderComponent.decorators = [
178
+ { type: Component, args: [{
179
+ selector: 'app-image-uploader',
180
+ template: "<div class=\"file-uploader\">\r\n <div *ngFor=\"let item of lstFileUploaded\" class=\"image-container\">\r\n <img (error)=\"onError($event)\" [src]=\"item.url\" />\r\n <div *ngIf=\"!disabled\" class=\"image-container-button btn-delete\" (click)=\"deleteAvatar(item)\">\r\n <span><i class=\"pi pi-trash\"></i>X\u00F3a</span>\r\n </div>\r\n </div>\r\n <div class=\"image-container\">\r\n <img [src]=\"defaultNoImageUrl\" />\r\n <div *ngIf=\"!disabled\" class=\"image-container-button btn-upload\" (click)=\"onSelectThumbnailClick()\">\r\n <span><i class=\"fas fa-cloud-upload-alt\"></i>{{chooseLabel}}</span>\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"!disabled\" style=\"display:none;\">\r\n <p-fileUpload #fileControl [multiple]=\"false\" accept=\"image/*\" [chooseLabel]=\"chooseLabel\" mode=\"basic\" name=\"file\"\r\n [url]=\"apiUploadUrl\" maxFileSize=\"10000000\" auto=\"true\" (onBeforeUpload)=\"onBeforeUpload($event)\"\r\n (onUpload)=\"onUploadEvent($event)\"></p-fileUpload>\r\n</div>",
181
+ providers: [
182
+ {
183
+ provide: NG_VALUE_ACCESSOR,
184
+ useExisting: forwardRef(() => ImageUploaderComponent),
185
+ multi: true
186
+ }
187
+ ],
188
+ styles: [".file-uploader{display:flex;flex-wrap:wrap;margin-top:-.5rem}.file-uploader .image-container{border:1px solid #eee;display:inline-flex;height:150px;margin-right:.5rem;margin-top:.5rem;position:relative;text-align:center;width:150px}.file-uploader .image-container img{max-height:100%;max-width:100%}.file-uploader .image-container.small{height:150px;width:150px}.file-uploader .image-container.huge,.file-uploader .image-container.large{height:250px;width:250px}.file-uploader .image-container.fit{height:100%;width:100%}.file-uploader .image-container .image-container-button{align-items:center;background:#000;bottom:0;color:#fff;cursor:pointer;display:flex;height:30px;justify-content:center;left:0;opacity:.5;position:absolute;width:100%}.file-uploader .image-container .image-container-button i{margin-right:6px}.file-uploader .image-container .image-container-button.btn-delete{color:red}"]
189
+ },] }
190
+ ];
191
+ ImageUploaderComponent.ctorParameters = () => [
192
+ { type: Injector },
193
+ { type: NotifierService },
194
+ { type: FileExplorerService },
195
+ { type: FileObjectService }
196
+ ];
197
+ ImageUploaderComponent.propDecorators = {
198
+ fileControl: [{ type: ViewChild, args: [FileUpload,] }],
199
+ chooseLabel: [{ type: Input }],
200
+ defaultNoImageUrl: [{ type: Input }],
201
+ disabled: [{ type: Input }],
202
+ entityKey: [{ type: Input }],
203
+ onChanged: [{ type: Output }],
204
+ onInit: [{ type: Output }]
205
+ };
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtdXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvaW1hZ2UtdXBsb2FkZXIvaW1hZ2UtdXBsb2FkZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDdEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFjbEYsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGFBQWE7SUEyQnJELFlBQ0ksU0FBbUIsRUFDWCxnQkFBaUMsRUFDakMsb0JBQXlDLEVBQ3pDLGtCQUFxQztRQUU3QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFKVCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBQ2pDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFDekMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQTNCeEMsZ0JBQVcsR0FBRyxVQUFVLENBQUM7UUFDekIs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RUFBRTtZQUNsQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLG9FQUFvRSxDQUFDLENBQUM7WUFDeEcsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDekIsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVELGNBQWM7UUFDVixZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7OztZQTNNSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsK2tDQUE4QztnQkFFOUMsU0FBUyxFQUFFO29CQUNQO3dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUM7d0JBQ3JELEtBQUssRUFBRSxJQUFJO3FCQUNkO2lCQUNKOzthQUNKOzs7WUFyQjZDLFFBQVE7WUFNN0MsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixpQkFBaUI7OzswQkFnQnJCLFNBQVMsU0FBQyxVQUFVOzBCQUVwQixLQUFLO2dDQUNMLEtBQUs7dUJBQ0wsS0FBSzt3QkFFTCxLQUFLO3dCQUlMLE1BQU07cUJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkIH0gZnJvbSAndG4tY3VzdG9tLXByaW1lbmcvZmlsZXVwbG9hZCc7XHJcbmltcG9ydCB7IENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UvY29tcG9uZW50LWJhc2UnO1xyXG5pbXBvcnQgeyBTaGFyZWRGb2xkZXJUeXBlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBPcGVyYXRvciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBOb3RpZmllclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub3RpZmllci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsZUV4cGxvcmVyU2VydmljZSB9IGZyb20gJy4uL2ZpbGUtZXhwbG9yZXIvc2VydmljZXMvZmlsZS1leHBsb3Jlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsZU9iamVjdFNlcnZpY2UgfSBmcm9tICcuLi9maWxlLWV4cGxvcmVyL3NlcnZpY2VzL2ZpbGUtb2JqZWN0LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1pbWFnZS11cGxvYWRlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW1hZ2UtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vaW1hZ2UtdXBsb2FkZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEltYWdlVXBsb2FkZXJDb21wb25lbnQpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEltYWdlVXBsb2FkZXJDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gICAgQFZpZXdDaGlsZChGaWxlVXBsb2FkKSBmaWxlQ29udHJvbDogRmlsZVVwbG9hZDtcclxuXHJcbiAgICBASW5wdXQoKSBjaG9vc2VMYWJlbCA9ICdDaOG7jW4g4bqjbmgnO1xyXG4gICAgQElucHV0KCkgZGVmYXVsdE5vSW1hZ2VVcmwgPSAnYXNzZXRzL2ltYWdlcy9hdmF0YXIuanBnJztcclxuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBfZW50aXR5S2V5OiBzdHJpbmdcclxuICAgIEBJbnB1dCgpIHNldCBlbnRpdHlLZXkodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX2VudGl0eUtleSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKSBvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkluaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICBsc3RGaWxlVXBsb2FkZWQgPSBbXTtcclxuICAgIGxzdEZpbGVJZFVwbG9hZGVkID0gW107XHJcbiAgICBhcGlVcGxvYWRVcmwgPSAnJztcclxuICAgIHJhd0ZpbGVOYW1lID0gJyc7XHJcblxyXG4gICAgbG9hZGluZ1RpbWVvdXQgPSBudWxsO1xyXG4gICAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIG9uQ2hhbmdlOiBGdW5jdGlvbjtcclxuICAgIG9uVG91Y2hlZDogRnVuY3Rpb247XHJcbiAgICByZWFkeSA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBfbm90aWZpZXJTZXJ2aWNlOiBOb3RpZmllclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfZmlsZUV4cGxvcmVyU2VydmljZTogRmlsZUV4cGxvcmVyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9maWxlT2JqZWN0U2VydmljZTogRmlsZU9iamVjdFNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5hcGlVcGxvYWRVcmwgPSB0aGlzLl9maWxlT2JqZWN0U2VydmljZS5nZXRVcGxvYWRJbnRvU2hhcmVkRm9sZGVyVXJsKCk7XHJcbiAgICAgICAgdGhpcy5vbkluaXQuZW1pdCh0aGlzKTtcclxuICAgICAgICB0aGlzLnJlYWR5ID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKG9iaikge1xyXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxzdEZpbGVJZFVwbG9hZGVkID0gb2JqO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sc3RGaWxlSWRVcGxvYWRlZCA9IG9iai5zcGxpdCgnLCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZ2V0TGlzdEZpbGUoKTtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdldCBhdmF0YXIuXHJcbiAgICBnZXRMaXN0RmlsZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMubHN0RmlsZUlkVXBsb2FkZWQgfHwgIXRoaXMubHN0RmlsZUlkVXBsb2FkZWQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMubHN0RmlsZVVwbG9hZGVkID0gW107XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fbWFya0xvYWRpbmcoKTtcclxuICAgICAgICB0aGlzLl9maWxlT2JqZWN0U2VydmljZS5nZXRBbGwoW1xyXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignaWQnLCBPcGVyYXRvci5pbiwgdGhpcy5sc3RGaWxlSWRVcGxvYWRlZClcclxuICAgICAgICBdKS50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX3VubWFya0xvYWRpbmcoKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlUmVzcG9uc2UocmVzLCAnJywgZiA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXMuZGF0YS5mb3JFYWNoKGZpbGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGZpbGUudXJsID0gdGhpcy5fZmlsZUV4cGxvcmVyU2VydmljZS5nZXRGaWxlRG93bmxvYWRVcmwoZmlsZS5pZCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMubHN0RmlsZVVwbG9hZGVkID0gcmVzLmRhdGE7XHJcbiAgICAgICAgICAgIH0sIGYgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sc3RGaWxlVXBsb2FkZWQgPSBbXTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fdW5tYXJrTG9hZGluZygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIERlbGV0ZSBhdmFydGFyLlxyXG4gICAgZGVsZXRlQWxsKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmxvYWRpbmcpIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dDb25maXJtKCdC4bqhbiBjw7MgY2jhuq9jIGNo4bqvbiBtdeG7kW4geMOzYT8nKVxyXG4gICAgICAgICAgICAudGhlbihycyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJzKSByZXR1cm47XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fbWFya0xvYWRpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVPYmplY3RTZXJ2aWNlLmRlbGV0ZUZpbGVGcm9tU2hhcmVkRm9sZGVyKHtcclxuICAgICAgICAgICAgICAgICAgICBzaGFyZWRGb2xkZXJUeXBlOiBTaGFyZWRGb2xkZXJUeXBlLkF2YXRhcixcclxuICAgICAgICAgICAgICAgICAgICBlbnRpdHlLZXk6IHRoaXMuX2VudGl0eUtleVxyXG4gICAgICAgICAgICAgICAgfSkudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3VubWFya0xvYWRpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVJlc3BvbnNlKHJlcywgJycsIGYgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxzdEZpbGVJZFVwbG9hZGVkID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubHN0RmlsZVVwbG9hZGVkID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlyZUV2ZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3VubWFya0xvYWRpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlQXZhdGFyKGl0ZW0pIHtcclxuICAgICAgICBpZiAodGhpcy5sb2FkaW5nKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dDb25maXJtKCdC4bqhbiBjw7MgY2jhuq9jIGNo4bqvbiBtdeG7kW4geMOzYT8nKVxyXG4gICAgICAgICAgICAudGhlbihycyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJzKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9tYXJrTG9hZGluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZmlsZU9iamVjdFNlcnZpY2UuZGVsZXRlQnlJZChpdGVtLmlkKVxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3VubWFya0xvYWRpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZShyZXMsICcnLCBmID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5sc3RGaWxlSWRVcGxvYWRlZC5maW5kSW5kZXgocSA9PiBxID09IGl0ZW0uaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3RGaWxlSWRVcGxvYWRlZC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maXJlRXZlbnRBbmRHZXRGaWxlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3VubWFya0xvYWRpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBVcGxvYWQgYXZhcnRhci5cclxuICAgIG9uU2VsZWN0VGh1bWJuYWlsQ2xpY2soKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubG9hZGluZykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZpbGVDb250cm9sLmJhc2ljRmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkJlZm9yZVVwbG9hZChldnQpIHtcclxuICAgICAgICB0aGlzLl9tYXJrTG9hZGluZygpO1xyXG4gICAgICAgIGV2dC5mb3JtRGF0YS5hcHBlbmQoJ3NoYXJlZEZvbGRlclR5cGUnLCBTaGFyZWRGb2xkZXJUeXBlLkF2YXRhcik7XHJcbiAgICAgICAgZXZ0LmZvcm1EYXRhLmFwcGVuZCgnZW50aXR5S2V5JywgdGhpcy5fZW50aXR5S2V5KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBvblVwbG9hZEV2ZW50KGV2ZW50OiBhbnkpIHtcclxuICAgICAgICBjb25zdCBmaWxlcyA9IGV2ZW50LmZpbGVzO1xyXG4gICAgICAgIGlmIChmaWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlSnNvbiA9IGV2ZW50Lm9yaWdpbmFsRXZlbnQuYm9keTtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlSnNvbi5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxzdEZpbGVJZFVwbG9hZGVkLnB1c2gocmVzcG9uc2VKc29uLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maXJlRXZlbnRBbmRHZXRGaWxlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZmlyZUV2ZW50QW5kR2V0RmlsZSgpIHtcclxuICAgICAgICB0aGlzLmZpcmVFdmVudCgpO1xyXG4gICAgICAgIHRoaXMuZ2V0TGlzdEZpbGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBmaXJlRXZlbnQoKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVFbWl0ID0gdGhpcy5sc3RGaWxlSWRVcGxvYWRlZC50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2VkLmVtaXQodmFsdWVFbWl0KTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlRW1pdCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25FcnJvcihldikge1xyXG4gICAgICAgIGV2LnNyY0VsZW1lbnQuc3JjID0gdGhpcy5kZWZhdWx0Tm9JbWFnZVVybDtcclxuICAgIH1cclxuXHJcbiAgICBfbWFya0xvYWRpbmcoKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5sb2FkaW5nVGltZW91dCk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ03DoXkgY2jhu6cgcGjhuqNuIGjhu5NpIHF1w6EgbMOidSwgdnVpIGzDsm5nIGtp4buDbSB0cmEgbOG6oWkgxJHGsOG7nW5nIHRydXnhu4FuIG3huqFuZyEnKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSwgMTIwMDAwKTtcclxuICAgIH1cclxuXHJcbiAgICBfdW5tYXJrTG9hZGluZygpIHtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5sb2FkaW5nVGltZW91dCk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -13,6 +13,7 @@ export class TnTabViewComponent {
13
13
  this.styleClass = 'tn-tabview-beauty';
14
14
  this.height = '100%';
15
15
  this.ready = false;
16
+ this.dicOpenedTab = {};
16
17
  }
17
18
  set children(value) {
18
19
  this._children = value;
@@ -92,6 +93,7 @@ export class TnTabViewComponent {
92
93
  index++;
93
94
  }
94
95
  }
96
+ this.dicOpenedTab[this.currentTabCode] = true;
95
97
  this.activeCodeChange.emit(this.currentTabCode);
96
98
  this.setActiveTabContent();
97
99
  }
@@ -118,6 +120,7 @@ export class TnTabViewComponent {
118
120
  this.currentTabIndex = 0;
119
121
  this.currentTabCode = firsItem.code;
120
122
  }
123
+ this.dicOpenedTab[this.currentTabCode] = true;
121
124
  this.activeCodeChange.emit(this.currentTabCode);
122
125
  }
123
126
  this.setActiveTabContent();
@@ -132,7 +135,7 @@ export class TnTabViewComponent {
132
135
  TnTabViewComponent.decorators = [
133
136
  { type: Component, args: [{
134
137
  selector: 'tn-tabview',
135
- template: "<div [style.height]=\"height\">\r\n <p-tabView #tab orientation=\"top\" [styleClass]=\"styleClass\" [activeIndex]=\"currentTabIndex\"\r\n (onChange)=\"handleTabChange($event)\">\r\n <ng-container *ngFor=\"let item of data; let i = index\">\r\n <p-tabPanel *ngIf=\"!item.hidden && template[item.code]\" [leftIcon]=\"item.icon\"\r\n [header]=\"item.label\" [headerStyleClass]=\"item.headerStyleClass\">\r\n <ng-container *ngIf=\"allowViewAll || item.alwayRender || currentTabCode == item.code\">\r\n <tn-custom-scrollbar *ngIf=\"item.useScrollbar\">\r\n <ng-container *ngTemplateOutlet=\"template[item.code]; context: {$implicit: item}\">\r\n </ng-container>\r\n </tn-custom-scrollbar>\r\n <ng-container *ngIf=\"!item.useScrollbar\">\r\n <ng-container *ngTemplateOutlet=\"template[item.code]; context: {$implicit: item}\">\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </p-tabPanel>\r\n </ng-container>\r\n </p-tabView>\r\n</div>",
138
+ template: "<div [style.height]=\"height\">\r\n <p-tabView #tab orientation=\"top\" [styleClass]=\"styleClass\" [activeIndex]=\"currentTabIndex\"\r\n (onChange)=\"handleTabChange($event)\">\r\n <ng-container *ngFor=\"let item of data; let i = index\">\r\n <p-tabPanel *ngIf=\"!item.hidden && template[item.code]\" [leftIcon]=\"item.icon\" [header]=\"item.label\"\r\n [headerStyleClass]=\"item.headerStyleClass\">\r\n <ng-container\r\n *ngIf=\"allowViewAll || item.alwayRender || currentTabCode == item.code || (item.doNotReload && dicOpenedTab[item.code])\">\r\n <tn-custom-scrollbar *ngIf=\"item.useScrollbar\">\r\n <ng-container *ngTemplateOutlet=\"template[item.code]; context: {$implicit: item}\">\r\n </ng-container>\r\n </tn-custom-scrollbar>\r\n <ng-container *ngIf=\"!item.useScrollbar\">\r\n <ng-container *ngTemplateOutlet=\"template[item.code]; context: {$implicit: item}\">\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </p-tabPanel>\r\n </ng-container>\r\n </p-tabView>\r\n</div>",
136
139
  styles: [".accordion-link{flex:1 1;text-align:right}.accordion-link ul{list-style:none;margin-bottom:0;margin-top:0;padding-left:0}.accordion-link ul li{background-color:#a4a5a4;border-radius:4px;color:#fff;display:inline-block;line-height:20px;margin-bottom:.5rem;margin-left:.5rem;padding:6px 12px;transition:all .3s ease-out}.accordion-link ul li:hover{background-color:#3db762;cursor:pointer}.accordion-link ul li.tab-active{background-color:#23a349}.tn-l-toolbar{display:flex;padding:.5rem .5rem 0}.hoso-container{height:auto;max-height:none}.tab-number{align-items:center;background:#a4a5a4;border-radius:2px;color:#fff;display:inline-flex;font-size:.9em;height:20px;justify-content:center;margin-right:.5rem;padding-top:2px;width:20px}.tab-number.active{background:#23a349}::ng-deep tn-accordion-tab{display:flex;flex-direction:column;height:100%}::ng-deep tn-accordion-tab .p-accordion-header{position:-webkit-sticky;position:sticky;top:1px;z-index:6}::ng-deep tn-accordion-tab .tn-l-p-accordion-wrapper{border-radius:4px;display:flex;flex:1;margin-left:.5rem;margin-right:.5rem;overflow:auto}::ng-deep tn-accordion-tab .tn-l-p-accordion-wrapper tn-custom-scrollbar{width:100%}::ng-deep tn-accordion-tab .ps__rail-x,::ng-deep tn-accordion-tab .ps__rail-y{z-index:7}::ng-deep tn-accordion-tab .tn-l-toolbar .toolbar{flex:0 0 auto;padding-top:0}@media (max-width:640px){.accordion-link,.toolbar{overflow-x:auto;white-space:nowrap}.tn-l-custom-wrapper{display:block}.accordion-link ul{margin-top:0}.tn-l-toolbar{display:block}}"]
137
140
  },] }
138
141
  ];
@@ -150,4 +153,4 @@ TnTabViewComponent.propDecorators = {
150
153
  activeCodeChange: [{ type: Output }],
151
154
  tabContentChange: [{ type: Output }]
152
155
  };
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG4tdGFidmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90bi10YWJ2aWV3L3RuLXRhYnZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBTzlELE1BQU0sT0FBTyxrQkFBa0I7SUEwQzNCLFlBQ1ksY0FBNkI7UUFBN0IsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFuQmhDLFNBQUksR0FBa0IsRUFBRSxDQUFDO1FBQ3pCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBT3JCLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2hDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDM0MscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNyRCxhQUFRLEdBQXlDLEVBQUUsQ0FBQztRQUdwRCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxtQkFBbUIsQ0FBQztRQUNqQyxXQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2hCLFVBQUssR0FBRyxLQUFLLENBQUM7SUFJZCxDQUFDO0lBM0NELElBQWtDLFFBQVEsQ0FBQyxLQUFrQztRQUN6RSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDWixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7U0FDdkM7SUFDTCxDQUFDO0lBQUEsQ0FBQztJQUNGLElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBMEQsV0FBVyxDQUFDLEtBQXlDO1FBQzNHLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNaLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQzlCO0lBQ0wsQ0FBQztJQUFBLENBQUM7SUFFRixJQUFhLFFBQVEsQ0FBQyxLQUFjO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBQUEsQ0FBQztJQUdGLElBQWEsVUFBVSxDQUFDLEtBQWE7UUFDakMsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1osSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7U0FDdkM7SUFDTCxDQUFDO0lBQUEsQ0FBQztJQWdCRixRQUFRO1FBQ0osSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRTtZQUNuRSxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzRCxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQzthQUN6RDtTQUNKO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUYsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2FBQ3pCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQztRQUNqQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEIsTUFBTSxJQUFJLFdBQVcsQ0FBQztTQUN6QjtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLE1BQU0sSUFBSSxZQUFZLENBQUM7U0FDMUI7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztJQUM3QixDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQUc7UUFDZixJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDakMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMxQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO29CQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ2hDLE1BQU07aUJBQ1Q7Z0JBQ0QsS0FBSyxFQUFFLENBQUM7YUFDWDtTQUNKO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELDRCQUE0QjtRQUN4QixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNmLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDcEIsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMxQyxLQUFLLEVBQUUsQ0FBQztnQkFDUixJQUFJLENBQUMsUUFBUSxFQUFFO29CQUNYLFFBQVEsR0FBRyxJQUFJLENBQUM7aUJBQ25CO2dCQUNELFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtvQkFDMUQsTUFBTTtpQkFDVDthQUNKO1NBQ0o7UUFDRCx3Q0FBd0M7UUFDeEMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDWixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUM3QixJQUFJLFFBQVEsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQzthQUN2QztZQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ25EO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELG1CQUFtQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU87UUFDL0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7OztZQTVJSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLG1zQ0FBMEM7O2FBRTdDOzs7WUFOUSxhQUFhOzs7dUJBU2pCLGVBQWUsU0FBQyxXQUFXOzBCQVczQixlQUFlLFNBQUMsWUFBWSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTt1QkFPbkQsS0FBSzttQkFJTCxLQUFLOzJCQUNMLEtBQUs7eUJBQ0wsS0FBSzs4QkFNTCxLQUFLOytCQUNMLE1BQU07K0JBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBBZnRlckNvbnRlbnRJbml0LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBRdWVyeUxpc3QsXHJcbiAgICBUZW1wbGF0ZVJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IENvbXBvbmVudEJhc2VXaXRoQnV0dG9uIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlLXdpdGgtYnV0dG9uJztcclxuaW1wb3J0IHsgVGFiVmlld0RhdGEgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd0bi10YWJ2aWV3JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90bi10YWJ2aWV3LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3RuLXRhYnZpZXcuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG5UYWJWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcclxuICAgIF9jaGlsZHJlbjogUXVlcnlMaXN0PFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gICAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZVJlZikgc2V0IGNoaWxkcmVuKHZhbHVlOiBRdWVyeUxpc3Q8VGVtcGxhdGVSZWY8YW55Pj4pIHtcclxuICAgICAgICB0aGlzLl9jaGlsZHJlbiA9IHZhbHVlO1xyXG4gICAgICAgIGlmICh0aGlzLnJlYWR5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0VGVtcGxhdGVUYWIoKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVUYWJDb2RlQW5kRmlyZUV2ZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGdldCBjaGlsZHJlbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY2hpbGRyZW47XHJcbiAgICB9XHJcbiAgICBfdGFiQ29udGVudHM6IFF1ZXJ5TGlzdDxDb21wb25lbnRCYXNlV2l0aEJ1dHRvbj47XHJcbiAgICBAQ29udGVudENoaWxkcmVuKCd0YWJDb250ZW50JywgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBzZXQgdGFiQ29udGVudHModmFsdWU6IFF1ZXJ5TGlzdDxDb21wb25lbnRCYXNlV2l0aEJ1dHRvbj4pIHtcclxuICAgICAgICB0aGlzLl90YWJDb250ZW50cyA9IHZhbHVlO1xyXG4gICAgICAgIGlmICh0aGlzLnJlYWR5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlVGFiQ29udGVudCgpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBfdmVydGljYWw6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBzZXQgdmVydGljYWwodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl92ZXJ0aWNhbCA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuc2V0U3R5bGVDbGFzcygpO1xyXG4gICAgfTtcclxuICAgIEBJbnB1dCgpIGRhdGE6IFRhYlZpZXdEYXRhW10gPSBbXTtcclxuICAgIEBJbnB1dCgpIGFsbG93Vmlld0FsbCA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgc2V0IGFjdGl2ZUNvZGUodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFRhYkNvZGUgPSB2YWx1ZTtcclxuICAgICAgICBpZiAodGhpcy5yZWFkeSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldEFjdGl2ZVRhYkNvZGVBbmRGaXJlRXZlbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgQElucHV0KCkgaXNEeW5hbWljSGVpZ2h0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBAT3V0cHV0KCkgYWN0aXZlQ29kZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIHRhYkNvbnRlbnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIHRlbXBsYXRlOiB7IFtrZXk6IHN0cmluZ106IFRlbXBsYXRlUmVmPGFueT47IH0gPSB7fTtcclxuICAgIGN1cnJlbnRUYWJJbmRleDogbnVtYmVyO1xyXG4gICAgY3VycmVudFRhYkNvZGU6IHN0cmluZztcclxuICAgIG9ubHlJY29uID0gZmFsc2U7XHJcbiAgICBzdHlsZUNsYXNzID0gJ3RuLXRhYnZpZXctYmVhdXR5JztcclxuICAgIGhlaWdodCA9ICcxMDAlJztcclxuICAgIHJlYWR5ID0gZmFsc2U7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9jb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlXHJcbiAgICApIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5pc0R5bmFtaWNIZWlnaHQpIHtcclxuICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50VGFiQ29kZSA9PT0gbnVsbCB8fCB0aGlzLmN1cnJlbnRUYWJDb2RlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFRhYkluZGV4ID0gdGhpcy5kYXRhLmZpbmRJbmRleChxID0+IHEuYWN0aXZlKTtcclxuICAgICAgICAgICAgaWYgKGN1cnJlbnRUYWJJbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUYWJDb2RlID0gdGhpcy5kYXRhW2N1cnJlbnRUYWJJbmRleF0uY29kZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlYWR5ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldEFjdGl2ZVRhYkNvZGVBbmRGaXJlRXZlbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5zZXRUZW1wbGF0ZVRhYigpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRlbXBsYXRlVGFiKCkge1xyXG4gICAgICAgIHRoaXMub25seUljb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlW2l0ZW0uY29kZV0gPSB0aGlzLl9jb21tb25TZXJ2aWNlLmZpbmRUZW1wbGF0ZUZyb21MaXN0KHRoaXMuY2hpbGRyZW4sIGl0ZW0uY29kZSk7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmxhYmVsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9ubHlJY29uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNldFN0eWxlQ2xhc3MoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRTdHlsZUNsYXNzKCkge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSAndG4tdGFidmlldy1iZWF1dHknO1xyXG4gICAgICAgIGlmICh0aGlzLl92ZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICByZXN1bHQgKz0gJyB2ZXJ0aWNhbCc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9ubHlJY29uKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCArPSAnIG9ubHktaWNvbic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3R5bGVDbGFzcyA9IHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVUYWJDaGFuZ2UoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiSW5kZXggPSBldnQuaW5kZXg7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5kYXRhKSB7XHJcbiAgICAgICAgICAgIGlmICghaXRlbS5oaWRkZW4gJiYgdGhpcy50ZW1wbGF0ZVtpdGVtLmNvZGVdKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT0gdGhpcy5jdXJyZW50VGFiSW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUYWJDb2RlID0gaXRlbS5jb2RlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmFjdGl2ZUNvZGVDaGFuZ2UuZW1pdCh0aGlzLmN1cnJlbnRUYWJDb2RlKTtcclxuICAgICAgICB0aGlzLnNldEFjdGl2ZVRhYkNvbnRlbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRBY3RpdmVUYWJDb2RlQW5kRmlyZUV2ZW50KCkge1xyXG4gICAgICAgIGxldCBpbmRleCA9IC0xO1xyXG4gICAgICAgIGxldCBmaXJzSXRlbSA9IG51bGw7XHJcbiAgICAgICAgbGV0IGxhc3RJdGVtID0gbnVsbDtcclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5kYXRhKSB7XHJcbiAgICAgICAgICAgIGlmICghaXRlbS5oaWRkZW4gJiYgdGhpcy50ZW1wbGF0ZVtpdGVtLmNvZGVdKSB7XHJcbiAgICAgICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFmaXJzSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZpcnNJdGVtID0gaXRlbTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxhc3RJdGVtID0gaXRlbTtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jdXJyZW50VGFiQ29kZSB8fCB0aGlzLmN1cnJlbnRUYWJDb2RlID09IGl0ZW0uY29kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE7hur91IGPDsyBpdGVtIGRpc3BsYXkgdGjDrCBtcyBzZXQgYWN0aXZlXHJcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50VGFiSW5kZXggPSBpbmRleDtcclxuICAgICAgICAgICAgaWYgKGxhc3RJdGVtLmNvZGUgIT0gdGhpcy5jdXJyZW50VGFiQ29kZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VGFiSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VGFiQ29kZSA9IGZpcnNJdGVtLmNvZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5hY3RpdmVDb2RlQ2hhbmdlLmVtaXQodGhpcy5jdXJyZW50VGFiQ29kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0QWN0aXZlVGFiQ29udGVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEFjdGl2ZVRhYkNvbnRlbnQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl90YWJDb250ZW50cykgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IHRhYkNvbnRlbnQgPSB0aGlzLl90YWJDb250ZW50cy5maW5kKHEgPT4gcS50YWJDb2RlID09IHRoaXMuY3VycmVudFRhYkNvZGUpO1xyXG4gICAgICAgIHRoaXMudGFiQ29udGVudENoYW5nZS5lbWl0KHRhYkNvbnRlbnQpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG4tdGFidmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90bi10YWJ2aWV3L3RuLXRhYnZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBTzlELE1BQU0sT0FBTyxrQkFBa0I7SUEyQzNCLFlBQ1ksY0FBNkI7UUFBN0IsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFwQmhDLFNBQUksR0FBa0IsRUFBRSxDQUFDO1FBQ3pCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBT3JCLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2hDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDM0MscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNyRCxhQUFRLEdBQXlDLEVBQUUsQ0FBQztRQUdwRCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxtQkFBbUIsQ0FBQztRQUNqQyxXQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2hCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxpQkFBWSxHQUFHLEVBQUUsQ0FBQztJQUlsQixDQUFDO0lBNUNELElBQWtDLFFBQVEsQ0FBQyxLQUFrQztRQUN6RSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDWixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7U0FDdkM7SUFDTCxDQUFDO0lB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QixJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7YUFDdkM7WUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDOUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDbkQ7UUFDRCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUMvQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7O1lBL0lKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsMndDQUEwQzs7YUFFN0M7OztZQU5RLGFBQWE7Ozt1QkFTakIsZUFBZSxTQUFDLFdBQVc7MEJBVzNCLGVBQWUsU0FBQyxZQUFZLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO3VCQU9uRCxLQUFLO21CQUlMLEtBQUs7MkJBQ0wsS0FBSzt5QkFDTCxLQUFLOzhCQU1MLEtBQUs7K0JBQ0wsTUFBTTsrQkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyQ29udGVudEluaXQsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQ29tcG9uZW50QmFzZVdpdGhCdXR0b24gfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UvY29tcG9uZW50LWJhc2Utd2l0aC1idXR0b24nO1xyXG5pbXBvcnQgeyBUYWJWaWV3RGF0YSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tbW9uLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3RuLXRhYnZpZXcnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RuLXRhYnZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdG4tdGFidmlldy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUblRhYlZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQge1xyXG4gICAgX2NoaWxkcmVuOiBRdWVyeUxpc3Q8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlUmVmKSBzZXQgY2hpbGRyZW4odmFsdWU6IFF1ZXJ5TGlzdDxUZW1wbGF0ZVJlZjxhbnk+Pikge1xyXG4gICAgICAgIHRoaXMuX2NoaWxkcmVuID0gdmFsdWU7XHJcbiAgICAgICAgaWYgKHRoaXMucmVhZHkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRUZW1wbGF0ZVRhYigpO1xyXG4gICAgICAgICAgICB0aGlzLnNldEFjdGl2ZVRhYkNvZGVBbmRGaXJlRXZlbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgZ2V0IGNoaWxkcmVuKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jaGlsZHJlbjtcclxuICAgIH1cclxuICAgIF90YWJDb250ZW50czogUXVlcnlMaXN0PENvbXBvbmVudEJhc2VXaXRoQnV0dG9uPjtcclxuICAgIEBDb250ZW50Q2hpbGRyZW4oJ3RhYkNvbnRlbnQnLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHNldCB0YWJDb250ZW50cyh2YWx1ZTogUXVlcnlMaXN0PENvbXBvbmVudEJhc2VXaXRoQnV0dG9uPikge1xyXG4gICAgICAgIHRoaXMuX3RhYkNvbnRlbnRzID0gdmFsdWU7XHJcbiAgICAgICAgaWYgKHRoaXMucmVhZHkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVUYWJDb250ZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIF92ZXJ0aWNhbDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHNldCB2ZXJ0aWNhbCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX3ZlcnRpY2FsID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5zZXRTdHlsZUNsYXNzKCk7XHJcbiAgICB9O1xyXG4gICAgQElucHV0KCkgZGF0YTogVGFiVmlld0RhdGFbXSA9IFtdO1xyXG4gICAgQElucHV0KCkgYWxsb3dWaWV3QWxsID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzZXQgYWN0aXZlQ29kZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiQ29kZSA9IHZhbHVlO1xyXG4gICAgICAgIGlmICh0aGlzLnJlYWR5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlVGFiQ29kZUFuZEZpcmVFdmVudCgpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBASW5wdXQoKSBpc0R5bmFtaWNIZWlnaHQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBPdXRwdXQoKSBhY3RpdmVDb2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgdGFiQ29udGVudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgdGVtcGxhdGU6IHsgW2tleTogc3RyaW5nXTogVGVtcGxhdGVSZWY8YW55PjsgfSA9IHt9O1xyXG4gICAgY3VycmVudFRhYkluZGV4OiBudW1iZXI7XHJcbiAgICBjdXJyZW50VGFiQ29kZTogc3RyaW5nO1xyXG4gICAgb25seUljb24gPSBmYWxzZTtcclxuICAgIHN0eWxlQ2xhc3MgPSAndG4tdGFidmlldy1iZWF1dHknO1xyXG4gICAgaGVpZ2h0ID0gJzEwMCUnO1xyXG4gICAgcmVhZHkgPSBmYWxzZTtcclxuICAgIGRpY09wZW5lZFRhYiA9IHt9O1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNEeW5hbWljSGVpZ2h0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFRhYkNvZGUgPT09IG51bGwgfHwgdGhpcy5jdXJyZW50VGFiQ29kZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUYWJJbmRleCA9IHRoaXMuZGF0YS5maW5kSW5kZXgocSA9PiBxLmFjdGl2ZSk7XHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50VGFiSW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VGFiQ29kZSA9IHRoaXMuZGF0YVtjdXJyZW50VGFiSW5kZXhdLmNvZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZWFkeSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXRBY3RpdmVUYWJDb2RlQW5kRmlyZUV2ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgICAgIHRoaXMuc2V0VGVtcGxhdGVUYWIoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUZW1wbGF0ZVRhYigpIHtcclxuICAgICAgICB0aGlzLm9ubHlJY29uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZVtpdGVtLmNvZGVdID0gdGhpcy5fY29tbW9uU2VydmljZS5maW5kVGVtcGxhdGVGcm9tTGlzdCh0aGlzLmNoaWxkcmVuLCBpdGVtLmNvZGUpO1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5sYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vbmx5SWNvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zZXRTdHlsZUNsYXNzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0U3R5bGVDbGFzcygpIHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gJ3RuLXRhYnZpZXctYmVhdXR5JztcclxuICAgICAgICBpZiAodGhpcy5fdmVydGljYWwpIHtcclxuICAgICAgICAgICAgcmVzdWx0ICs9ICcgdmVydGljYWwnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5vbmx5SWNvbikge1xyXG4gICAgICAgICAgICByZXN1bHQgKz0gJyBvbmx5LWljb24nO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN0eWxlQ2xhc3MgPSByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlVGFiQ2hhbmdlKGV2dCkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFRhYkluZGV4ID0gZXZ0LmluZGV4O1xyXG4gICAgICAgIGxldCBpbmRleCA9IDA7XHJcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZGF0YSkge1xyXG4gICAgICAgICAgICBpZiAoIWl0ZW0uaGlkZGVuICYmIHRoaXMudGVtcGxhdGVbaXRlbS5jb2RlXSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IHRoaXMuY3VycmVudFRhYkluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VGFiQ29kZSA9IGl0ZW0uY29kZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGluZGV4Kys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaWNPcGVuZWRUYWJbdGhpcy5jdXJyZW50VGFiQ29kZV0gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlQ29kZUNoYW5nZS5lbWl0KHRoaXMuY3VycmVudFRhYkNvZGUpO1xyXG4gICAgICAgIHRoaXMuc2V0QWN0aXZlVGFiQ29udGVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEFjdGl2ZVRhYkNvZGVBbmRGaXJlRXZlbnQoKSB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gLTE7XHJcbiAgICAgICAgbGV0IGZpcnNJdGVtID0gbnVsbDtcclxuICAgICAgICBsZXQgbGFzdEl0ZW0gPSBudWxsO1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmRhdGEpIHtcclxuICAgICAgICAgICAgaWYgKCFpdGVtLmhpZGRlbiAmJiB0aGlzLnRlbXBsYXRlW2l0ZW0uY29kZV0pIHtcclxuICAgICAgICAgICAgICAgIGluZGV4Kys7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZpcnNJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlyc0l0ZW0gPSBpdGVtO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGFzdEl0ZW0gPSBpdGVtO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRUYWJDb2RlIHx8IHRoaXMuY3VycmVudFRhYkNvZGUgPT0gaXRlbS5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTuG6v3UgY8OzIGl0ZW0gZGlzcGxheSB0aMOsIG1zIHNldCBhY3RpdmVcclxuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUYWJJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgICBpZiAobGFzdEl0ZW0uY29kZSAhPSB0aGlzLmN1cnJlbnRUYWJDb2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUYWJJbmRleCA9IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUYWJDb2RlID0gZmlyc0l0ZW0uY29kZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmRpY09wZW5lZFRhYlt0aGlzLmN1cnJlbnRUYWJDb2RlXSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlQ29kZUNoYW5nZS5lbWl0KHRoaXMuY3VycmVudFRhYkNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldEFjdGl2ZVRhYkNvbnRlbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRBY3RpdmVUYWJDb250ZW50KCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fdGFiQ29udGVudHMpIHJldHVybjtcclxuICAgICAgICBjb25zdCB0YWJDb250ZW50ID0gdGhpcy5fdGFiQ29udGVudHMuZmluZChxID0+IHEudGFiQ29kZSA9PSB0aGlzLmN1cnJlbnRUYWJDb2RlKTtcclxuICAgICAgICB0aGlzLnRhYkNvbnRlbnRDaGFuZ2UuZW1pdCh0YWJDb250ZW50KTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -34,14 +34,15 @@ export class WorkflowPermissionDetailService extends BaseService {
34
34
  appendInfoForWorkflow(userIdCurrent, data, fieldKey = 'id', callBackWhenNotHaveStatus = null) {
35
35
  return __awaiter(this, void 0, void 0, function* () {
36
36
  if (callBackWhenNotHaveStatus == null) {
37
- callBackWhenNotHaveStatus = (itemStatus, rowItem) => { };
37
+ callBackWhenNotHaveStatus = (itemStatus, rowItem) => {
38
+ };
38
39
  }
39
40
  const lstItemId = data.filter(q => q[fieldKey]).map(q => q[fieldKey]);
40
41
  const dataStatus = (yield this.getAll([
41
42
  this.newFilter('itemId', Operator.in, lstItemId),
42
43
  this.newFilter('notInWorkflow', Operator.equal, false),
43
44
  this.newFilter('userId', Operator.equal, userIdCurrent)
44
- ], 'itemId,userId,trangThai,textTrangThai,workflowCode,permission')).data;
45
+ ], 'itemId,userId,trangThai,textTrangThai,workflowCode,permission', [])).data;
45
46
  if (dataStatus == null) {
46
47
  const notifierService = this._injector.get(NotifierService);
47
48
  return notifierService.showWarning('Không lấy được thông tin trạng thái hiện tại của bản ghi');
@@ -105,4 +106,4 @@ WorkflowPermissionDetailService.ctorParameters = () => [
105
106
  { type: Injector },
106
107
  { type: ModuleConfigService }
107
108
  ];
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcGVybWlzc2lvbi1kZXRhaWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3dvcmtmbG93L3NlcnZpY2VzL3dvcmtmbG93LXBlcm1pc3Npb24tZGV0YWlsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFLcEQsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLFdBQVc7SUFNNUQsWUFDSSxJQUFnQixFQUNoQixRQUFrQixFQUNsQixvQkFBeUM7UUFFekMsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLGdCQUFnQixJQUFJLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLDJCQUEyQixDQUFDLENBQUM7UUFUcEwsb0JBQWUsR0FFbkIsRUFBRSxDQUFDO1FBQ1AsZUFBVSxHQUFHLDBCQUEwQixDQUFDO1FBT3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsb0JBQW9C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QTFHSixVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7OztZQVpRLFVBQVU7WUFDRSxRQUFRO1lBS3BCLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IE1vZHVsZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2NvbmZpZ3MvbW9kdWxlLWNvbmZpZyc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25CYXNlIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvY29tbW9uJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9iYXNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2R1bGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9kdWxlLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbm90aWZpZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IER1bW15V29ya2Zsb3dDb2RlIH0gZnJvbSAnLi4vbW9kZWxzL2NvbnN0JztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dQZXJtaXNzaW9uRGV0YWlsU2VydmljZSBleHRlbmRzIEJhc2VTZXJ2aWNlIHtcclxuICAgIHJlYWRvbmx5IF9tb2R1bGVDb25maWc6IE1vZHVsZUNvbmZpZztcclxuICAgIHByaXZhdGUgc2VydmljZU1hbmFnZXJzOiB7XHJcbiAgICAgICAgW2tleTogc3RyaW5nXTogQmFzZVNlcnZpY2VcclxuICAgIH0gPSB7fTtcclxuICAgIGVudGl0eU5hbWUgPSAnV29ya2Zsb3dQZXJtaXNzaW9uRGV0YWlsJztcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIF9tb2R1bGVDb25maWdTZXJ2aWNlOiBNb2R1bGVDb25maWdTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihodHRwLCBpbmplY3RvciwgYCR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLndvcmtmbG93RW5kcG9pbnR9LyR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpVmVyc2lvbn0vV29ya2Zsb3dQZXJtaXNzaW9uRGV0YWlsYCk7XHJcbiAgICAgICAgdGhpcy5lbmRQb2ludCA9IF9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaURvbWFpbi53b3JrZmxvd0VuZHBvaW50O1xyXG5cclxuICAgICAgICB0aGlzLl9tb2R1bGVDb25maWcgPSBfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKTtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3RlclNlcnZpY2Uoc2V0dGluZ0tleTogc3RyaW5nLCBzZXJ2aWNlOiBCYXNlU2VydmljZSkge1xyXG4gICAgICAgIHRoaXMuc2VydmljZU1hbmFnZXJzW3NldHRpbmdLZXldID0gc2VydmljZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRFbmRwb2ludEJ5U2VydmljZShzZXJ2aWNlOiBCYXNlU2VydmljZSkge1xyXG4gICAgICAgIHJldHVybiBgJHtzZXJ2aWNlLmVuZFBvaW50fS8ke3RoaXMuX21vZHVsZUNvbmZpZy5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufWA7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlRW5kcG9pbnQoYmFzZVNlcnZpY2U6IEJhc2VTZXJ2aWNlKTogV29ya2Zsb3dQZXJtaXNzaW9uRGV0YWlsU2VydmljZSB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlVXJpID0gYCR7dGhpcy5nZXRFbmRwb2ludEJ5U2VydmljZShiYXNlU2VydmljZSl9L1dvcmtmbG93UGVybWlzc2lvbkRldGFpbGA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBM4bqleSB0aMOqbSBjw6FjIHRow7RuZyB0aW4gY+G6p24gY2hvIHF1eSB0csOsbmggbmdoaeG7h3AgduG7pSBjaG8gY8OhYyBi4bqjbiBnaGkgdHJvbmcgZGF0YVxyXG4gICAgICovXHJcbiAgICBhc3luYyBhcHBlbmRJbmZvRm9yV29ya2Zsb3coXHJcbiAgICAgICAgdXNlcklkQ3VycmVudDogc3RyaW5nLCBkYXRhOiBhbnlbXSwgZmllbGRLZXk6IHN0cmluZyA9ICdpZCcsXHJcbiAgICAgICAgY2FsbEJhY2tXaGVuTm90SGF2ZVN0YXR1czogKGl0ZW1TdGF0dXMsIHJvd0l0ZW0pID0+IHZvaWQgPSBudWxsXHJcbiAgICApIHtcclxuICAgICAgICBpZiAoY2FsbEJhY2tXaGVuTm90SGF2ZVN0YXR1cyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNhbGxCYWNrV2hlbk5vdEhhdmVTdGF0dXMgPSAoaXRlbVN0YXR1cywgcm93SXRlbSkgPT4geyB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBsc3RJdGVtSWQgPSBkYXRhLmZpbHRlcihxID0+IHFbZmllbGRLZXldKS5tYXAocSA9PiBxW2ZpZWxkS2V5XSk7XHJcbiAgICAgICAgY29uc3QgZGF0YVN0YXR1cyA9IChhd2FpdCB0aGlzLmdldEFsbChcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2l0ZW1JZCcsIE9wZXJhdG9yLmluLCBsc3RJdGVtSWQpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ25vdEluV29ya2Zsb3cnLCBPcGVyYXRvci5lcXVhbCwgZmFsc2UpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ3VzZXJJZCcsIE9wZXJhdG9yLmVxdWFsLCB1c2VySWRDdXJyZW50KVxyXG4gICAgICAgICAgICBdLCAnaXRlbUlkLHVzZXJJZCx0cmFuZ1RoYWksdGV4dFRyYW5nVGhhaSx3b3JrZmxvd0NvZGUscGVybWlzc2lvbidcclxuICAgICAgICApKS5kYXRhO1xyXG4gICAgICAgIGlmIChkYXRhU3RhdHVzID09IG51bGwpIHtcclxuICAgICAgICAgICAgY29uc3Qgbm90aWZpZXJTZXJ2aWNlID0gdGhpcy5faW5qZWN0b3IuZ2V0KE5vdGlmaWVyU2VydmljZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ0tow7RuZyBs4bqleSDEkcaw4bujYyB0aMO0bmcgdGluIHRy4bqhbmcgdGjDoWkgaGnhu4duIHThuqFpIGPhu6dhIGLhuqNuIGdoaScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkYXRhLmZvckVhY2gocm93SXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtU3RhdHVzOiBhbnkgPSB7XHJcbiAgICAgICAgICAgICAgICB0ZXh0VHJhbmdUaGFpOiAnQ2jGsGEgY2jhuqF5IHF1eSB0csOsbmgnXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JZCA9IHJvd0l0ZW1bZmllbGRLZXldO1xyXG4gICAgICAgICAgICBpZiAoaXRlbUlkKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsc3RJdGVtU3RhdHVzID0gZGF0YVN0YXR1cy5maWx0ZXIocSA9PiBxLml0ZW1JZCA9PSBpdGVtSWQgJiYgcS51c2VySWQgPT0gdXNlcklkQ3VycmVudCk7XHJcbiAgICAgICAgICAgICAgICAvLyBsZXQgaXRlbVN0YXR1cyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBpZiAobHN0SXRlbVN0YXR1cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtU3RhdHVzID0gbHN0SXRlbVN0YXR1cy5maW5kKHEgPT4gKHEucGVybWlzc2lvbiAmIFBlcm1pc3Npb25CYXNlLkVESVQpID09IFBlcm1pc3Npb25CYXNlLkVESVQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtU3RhdHVzID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVN0YXR1cyA9IGxzdEl0ZW1TdGF0dXNbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBO4bq/dSBraMO0bmcgY8OzIGLhuqNuIGdoaSB0cuG6oW5nIHRow6FpXHJcbiAgICAgICAgICAgIC8vIE5oxrBuZyDEkcOjIHThuqFvIHRhc2sgcuG7k2kgdGjDrCBoaeG7g24gdGjhu4sgdHLhuqFuZyB0aMOhaSBcIsSRw6MgdOG6oW8gY8O0bmcgdmnhu4djXCIgxJHhu4MgdHLDoW5oIHRyxrDhu51uZyBo4bujcCBoaeG7g24gdGjhu4sgbsO6dCBi4bqvdCDEkeG6p3UgdGjhu6thIHRyw6puIGdpYW8gZGnhu4duXHJcbiAgICAgICAgICAgIGlmICghaXRlbVN0YXR1cy50cmFuZ1RoYWkpIHtcclxuICAgICAgICAgICAgICAgIGNhbGxCYWNrV2hlbk5vdEhhdmVTdGF0dXMoaXRlbVN0YXR1cywgcm93SXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJvd0l0ZW0uX190cmFuZ1RoYWkgPSBpdGVtU3RhdHVzLnRyYW5nVGhhaTtcclxuICAgICAgICAgICAgcm93SXRlbS5fX3RleHRUcmFuZ1RoYWkgPSBpdGVtU3RhdHVzLnRleHRUcmFuZ1RoYWk7XHJcbiAgICAgICAgICAgIGlmIChpdGVtU3RhdHVzLndvcmtmbG93Q29kZSA9PSBEdW1teVdvcmtmbG93Q29kZSkge1xyXG4gICAgICAgICAgICAgICAgcm93SXRlbS5oaWRkZW5Xb3JrZmxvd0FjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcm93SXRlbS5fX3dvcmtmbG93Q29kZSA9IGl0ZW1TdGF0dXMud29ya2Zsb3dDb2RlO1xyXG4gICAgICAgICAgICByb3dJdGVtLl9fcGVybWlzc2lvbiA9IGl0ZW1TdGF0dXMucGVybWlzc2lvbjtcclxuXHJcbiAgICAgICAgICAgIHJvd0l0ZW0uX19kaXNhYmxlRWRpdCA9IHRydWU7XHJcbiAgICAgICAgICAgIHJvd0l0ZW0uX19kaXNhYmxlRGVsZXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKHJvd0l0ZW0uYmFzZVBlcm1pc3Npb24gJiBQZXJtaXNzaW9uQmFzZS5FRElUXHJcbiAgICAgICAgICAgICAgICB8fCByb3dJdGVtLl9fcGVybWlzc2lvbiAmIFBlcm1pc3Npb25CYXNlLkVESVRcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICByb3dJdGVtLl9fZGlzYWJsZUVkaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJvd0l0ZW0uX19kaXNhYmxlUGVybWlzc2lvbkVkaXQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChyb3dJdGVtLmJhc2VQZXJtaXNzaW9uICYgUGVybWlzc2lvbkJhc2UuREVMRVRFXHJcbiAgICAgICAgICAgICAgICB8fCByb3dJdGVtLl9fcGVybWlzc2lvbiAmIFBlcm1pc3Npb25CYXNlLkRFTEVURVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIHJvd0l0ZW0uX19kaXNhYmxlRGVsZXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByb3dJdGVtLl9fZGlzYWJsZVBlcm1pc3Npb25EZWxldGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcGVybWlzc2lvbi1kZXRhaWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3dvcmtmbG93L3NlcnZpY2VzL3dvcmtmbG93LXBlcm1pc3Npb24tZGV0YWlsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFLcEQsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLFdBQVc7SUFPNUQsWUFDSSxJQUFnQixFQUNoQixRQUFrQixFQUNsQixvQkFBeUM7UUFFekMsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLGdCQUFnQixJQUFJLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLDJCQUEyQixDQUFDLENBQUM7UUFWcEwsb0JBQWUsR0FFbkIsRUFBRSxDQUFDO1FBQ1AsZUFBVSxHQUFHLDBCQUEwQixDQUFDO1FBUXBDLElBQUksQ0FBQyxRQUFRLEdBQUcsb0JBQW9C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QztLQUFBOzs7O1lBL0dKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7O1lBWlEsVUFBVTtZQUNFLFFBQVE7WUFLcEIsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29uZmlncy9tb2R1bGUtY29uZmlnJztcclxuaW1wb3J0IHsgUGVybWlzc2lvbkJhc2UgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9jb21tb24nO1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Jhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2R1bGUtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOb3RpZmllclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ub3RpZmllci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRHVtbXlXb3JrZmxvd0NvZGUgfSBmcm9tICcuLi9tb2RlbHMvY29uc3QnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd1Blcm1pc3Npb25EZXRhaWxTZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2Uge1xyXG4gICAgcmVhZG9ubHkgX21vZHVsZUNvbmZpZzogTW9kdWxlQ29uZmlnO1xyXG4gICAgcHJpdmF0ZSBzZXJ2aWNlTWFuYWdlcnM6IHtcclxuICAgICAgICBba2V5OiBzdHJpbmddOiBCYXNlU2VydmljZVxyXG4gICAgfSA9IHt9O1xyXG4gICAgZW50aXR5TmFtZSA9ICdXb3JrZmxvd1Blcm1pc3Npb25EZXRhaWwnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIF9tb2R1bGVDb25maWdTZXJ2aWNlOiBNb2R1bGVDb25maWdTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihodHRwLCBpbmplY3RvciwgYCR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLndvcmtmbG93RW5kcG9pbnR9LyR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpVmVyc2lvbn0vV29ya2Zsb3dQZXJtaXNzaW9uRGV0YWlsYCk7XHJcbiAgICAgICAgdGhpcy5lbmRQb2ludCA9IF9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaURvbWFpbi53b3JrZmxvd0VuZHBvaW50O1xyXG5cclxuICAgICAgICB0aGlzLl9tb2R1bGVDb25maWcgPSBfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKTtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3RlclNlcnZpY2Uoc2V0dGluZ0tleTogc3RyaW5nLCBzZXJ2aWNlOiBCYXNlU2VydmljZSkge1xyXG4gICAgICAgIHRoaXMuc2VydmljZU1hbmFnZXJzW3NldHRpbmdLZXldID0gc2VydmljZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRFbmRwb2ludEJ5U2VydmljZShzZXJ2aWNlOiBCYXNlU2VydmljZSkge1xyXG4gICAgICAgIHJldHVybiBgJHtzZXJ2aWNlLmVuZFBvaW50fS8ke3RoaXMuX21vZHVsZUNvbmZpZy5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufWA7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlRW5kcG9pbnQoYmFzZVNlcnZpY2U6IEJhc2VTZXJ2aWNlKTogV29ya2Zsb3dQZXJtaXNzaW9uRGV0YWlsU2VydmljZSB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlVXJpID0gYCR7dGhpcy5nZXRFbmRwb2ludEJ5U2VydmljZShiYXNlU2VydmljZSl9L1dvcmtmbG93UGVybWlzc2lvbkRldGFpbGA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBM4bqleSB0aMOqbSBjw6FjIHRow7RuZyB0aW4gY+G6p24gY2hvIHF1eSB0csOsbmggbmdoaeG7h3AgduG7pSBjaG8gY8OhYyBi4bqjbiBnaGkgdHJvbmcgZGF0YVxyXG4gICAgICovXHJcbiAgICBhc3luYyBhcHBlbmRJbmZvRm9yV29ya2Zsb3coXHJcbiAgICAgICAgdXNlcklkQ3VycmVudDogc3RyaW5nLCBkYXRhOiBhbnlbXSwgZmllbGRLZXk6IHN0cmluZyA9ICdpZCcsXHJcbiAgICAgICAgY2FsbEJhY2tXaGVuTm90SGF2ZVN0YXR1czogKGl0ZW1TdGF0dXMsIHJvd0l0ZW0pID0+IHZvaWQgPSBudWxsXHJcbiAgICApIHtcclxuICAgICAgICBpZiAoY2FsbEJhY2tXaGVuTm90SGF2ZVN0YXR1cyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNhbGxCYWNrV2hlbk5vdEhhdmVTdGF0dXMgPSAoaXRlbVN0YXR1cywgcm93SXRlbSkgPT4ge1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBsc3RJdGVtSWQgPSBkYXRhLmZpbHRlcihxID0+IHFbZmllbGRLZXldKS5tYXAocSA9PiBxW2ZpZWxkS2V5XSk7XHJcbiAgICAgICAgY29uc3QgZGF0YVN0YXR1cyA9IChhd2FpdCB0aGlzLmdldEFsbChcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2l0ZW1JZCcsIE9wZXJhdG9yLmluLCBsc3RJdGVtSWQpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ25vdEluV29ya2Zsb3cnLCBPcGVyYXRvci5lcXVhbCwgZmFsc2UpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ3VzZXJJZCcsIE9wZXJhdG9yLmVxdWFsLCB1c2VySWRDdXJyZW50KVxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAnaXRlbUlkLHVzZXJJZCx0cmFuZ1RoYWksdGV4dFRyYW5nVGhhaSx3b3JrZmxvd0NvZGUscGVybWlzc2lvbicsXHJcbiAgICAgICAgICAgIFtdLFxyXG4gICAgICAgICAgICAvLyAnSWdub3JlV0YnXHJcbiAgICAgICAgKSkuZGF0YTtcclxuICAgICAgICBpZiAoZGF0YVN0YXR1cyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vdGlmaWVyU2VydmljZSA9IHRoaXMuX2luamVjdG9yLmdldChOb3RpZmllclNlcnZpY2UpO1xyXG4gICAgICAgICAgICByZXR1cm4gbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKCdLaMO0bmcgbOG6pXkgxJHGsOG7o2MgdGjDtG5nIHRpbiB0cuG6oW5nIHRow6FpIGhp4buHbiB04bqhaSBj4bunYSBi4bqjbiBnaGknKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGF0YS5mb3JFYWNoKHJvd0l0ZW0gPT4ge1xyXG4gICAgICAgICAgICBsZXQgaXRlbVN0YXR1czogYW55ID0ge1xyXG4gICAgICAgICAgICAgICAgdGV4dFRyYW5nVGhhaTogJ0NoxrBhIGNo4bqheSBxdXkgdHLDrG5oJ1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtSWQgPSByb3dJdGVtW2ZpZWxkS2V5XTtcclxuICAgICAgICAgICAgaWYgKGl0ZW1JZCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbHN0SXRlbVN0YXR1cyA9IGRhdGFTdGF0dXMuZmlsdGVyKHEgPT4gcS5pdGVtSWQgPT0gaXRlbUlkICYmIHEudXNlcklkID09IHVzZXJJZEN1cnJlbnQpO1xyXG4gICAgICAgICAgICAgICAgLy8gbGV0IGl0ZW1TdGF0dXMgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxzdEl0ZW1TdGF0dXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVN0YXR1cyA9IGxzdEl0ZW1TdGF0dXMuZmluZChxID0+IChxLnBlcm1pc3Npb24gJiBQZXJtaXNzaW9uQmFzZS5FRElUKSA9PSBQZXJtaXNzaW9uQmFzZS5FRElUKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVN0YXR1cyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1TdGF0dXMgPSBsc3RJdGVtU3RhdHVzWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gTuG6v3Uga2jDtG5nIGPDsyBi4bqjbiBnaGkgdHLhuqFuZyB0aMOhaVxyXG4gICAgICAgICAgICAvLyBOaMawbmcgxJHDoyB04bqhbyB0YXNrIHLhu5NpIHRow6wgaGnhu4NuIHRo4buLIHRy4bqhbmcgdGjDoWkgXCLEkcOjIHThuqFvIGPDtG5nIHZp4buHY1wiIMSR4buDIHRyw6FuaCB0csaw4budbmcgaOG7o3AgaGnhu4NuIHRo4buLIG7DunQgYuG6r3QgxJHhuqd1IHRo4burYSB0csOqbiBnaWFvIGRp4buHblxyXG4gICAgICAgICAgICBpZiAoIWl0ZW1TdGF0dXMudHJhbmdUaGFpKSB7XHJcbiAgICAgICAgICAgICAgICBjYWxsQmFja1doZW5Ob3RIYXZlU3RhdHVzKGl0ZW1TdGF0dXMsIHJvd0l0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByb3dJdGVtLl9fdHJhbmdUaGFpID0gaXRlbVN0YXR1cy50cmFuZ1RoYWk7XHJcbiAgICAgICAgICAgIHJvd0l0ZW0uX190ZXh0VHJhbmdUaGFpID0gaXRlbVN0YXR1cy50ZXh0VHJhbmdUaGFpO1xyXG4gICAgICAgICAgICBpZiAoaXRlbVN0YXR1cy53b3JrZmxvd0NvZGUgPT0gRHVtbXlXb3JrZmxvd0NvZGUpIHtcclxuICAgICAgICAgICAgICAgIHJvd0l0ZW0uaGlkZGVuV29ya2Zsb3dBY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJvd0l0ZW0uX193b3JrZmxvd0NvZGUgPSBpdGVtU3RhdHVzLndvcmtmbG93Q29kZTtcclxuICAgICAgICAgICAgcm93SXRlbS5fX3Blcm1pc3Npb24gPSBpdGVtU3RhdHVzLnBlcm1pc3Npb247XHJcblxyXG4gICAgICAgICAgICByb3dJdGVtLl9fZGlzYWJsZUVkaXQgPSB0cnVlO1xyXG4gICAgICAgICAgICByb3dJdGVtLl9fZGlzYWJsZURlbGV0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmIChyb3dJdGVtLmJhc2VQZXJtaXNzaW9uICYgUGVybWlzc2lvbkJhc2UuRURJVFxyXG4gICAgICAgICAgICAgICAgfHwgcm93SXRlbS5fX3Blcm1pc3Npb24gJiBQZXJtaXNzaW9uQmFzZS5FRElUXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgcm93SXRlbS5fX2Rpc2FibGVFZGl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByb3dJdGVtLl9fZGlzYWJsZVBlcm1pc3Npb25FZGl0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocm93SXRlbS5iYXNlUGVybWlzc2lvbiAmIFBlcm1pc3Npb25CYXNlLkRFTEVURVxyXG4gICAgICAgICAgICAgICAgfHwgcm93SXRlbS5fX3Blcm1pc3Npb24gJiBQZXJtaXNzaW9uQmFzZS5ERUxFVEVcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICByb3dJdGVtLl9fZGlzYWJsZURlbGV0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcm93SXRlbS5fX2Rpc2FibGVQZXJtaXNzaW9uRGVsZXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxufVxyXG4iXX0=