barsa-sap-ui 2.2.38 → 2.2.39

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.
@@ -13,7 +13,7 @@ export class GanttDhtmlChartViewComponent extends ReportViewBaseComponent {
13
13
  this._prepareDate();
14
14
  const elDom = this._el.nativeElement;
15
15
  elDom.id = this.ganttId = getUniqueId(4);
16
- elDom.style.height = 'calc(100vh - ' + (elDom.offsetTop + 40) + 'px)';
16
+ elDom.style.height = `calc(100vh - ${elDom.getBoundingClientRect().top}px)`;
17
17
  this.ganttChartHelper.on({
18
18
  rowselect: this._onRowCheck.bind(this),
19
19
  rowdblclick: this._onRowClick.bind(this)
@@ -212,4 +212,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
212
212
  }], ganttChartHelper: [{
213
213
  type: Input
214
214
  }] } });
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtZGh0bWwtY2hhcnQtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi9nYW50dC1kaHRtbC1jaGFydC12aWV3L2dhbnR0LWRodG1sLWNoYXJ0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvZ2FudHQtZGh0bWwtY2hhcnQtdmlldy9nYW50dC1kaHRtbC1jaGFydC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUU1RyxPQUFPLEVBQ0gsUUFBUSxFQUNSLFdBQVcsRUFFWCx1QkFBdUIsRUFFMUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7O0FBU3JDLE1BQU0sT0FBTyw0QkFDVCxTQUFRLHVCQUFnRDtJQVI1RDs7UUFlSSxjQUFTLEdBQUcsS0FBSyxDQUFDO0tBd01yQjtJQXRNRyxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztRQUNyQyxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLGVBQWUsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBRXRFLElBQUksQ0FBQyxnQkFB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Z3ksIENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgQmFyc2FBcGksXHJcbiAgICBnZXRVbmlxdWVJZCxcclxuICAgIE1ldGFvYmplY3REYXRhTW9kZWwsXHJcbiAgICBSZXBvcnRWaWV3QmFzZUNvbXBvbmVudCxcclxuICAgIFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nXHJcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcblxyXG5pbXBvcnQgam1vbWVudCBmcm9tICdtb21lbnQtamFsYWFsaSc7XHJcbmRlY2xhcmUgY29uc3QgaGVhZDogYW55O1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnN1LWdhbnR0LWRodG1sLWNoYXJ0LXZpZXcnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dhbnR0LWRodG1sLWNoYXJ0LXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vZ2FudHQtZGh0bWwtY2hhcnQtdmlldy5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgR2FudHREaHRtbENoYXJ0Vmlld0NvbXBvbmVudFxyXG4gICAgZXh0ZW5kcyBSZXBvcnRWaWV3QmFzZUNvbXBvbmVudDxVaVJlcG9ydFZpZXdCYXNlU2V0dGluZz5cclxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXNcclxue1xyXG4gICAgQElucHV0KCkgbW9kZTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgZ2FudHRGaWVsZHM6IGFueTtcclxuICAgIEBJbnB1dCgpIGdhbnR0Q2hhcnRIZWxwZXI6IGFueTtcclxuICAgIGdhbnR0SWQ6IHN0cmluZztcclxuICAgIF9yb3djaGVjayA9IGZhbHNlO1xyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5fcHJlcGFyZURhdGUoKTtcclxuICAgICAgICBjb25zdCBlbERvbSA9IHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgZWxEb20uaWQgPSB0aGlzLmdhbnR0SWQgPSBnZXRVbmlxdWVJZCg0KTtcclxuICAgICAgICBlbERvbS5zdHlsZS5oZWlnaHQgPSAnY2FsYygxMDB2aCAtICcgKyAoZWxEb20ub2Zmc2V0VG9wICsgNDApICsgJ3B4KSc7XHJcblxyXG4gICAgICAgIHRoaXMuZ2FudHRDaGFydEhlbHBlci5vbih7XHJcbiAgICAgICAgICAgIHJvd3NlbGVjdDogdGhpcy5fb25Sb3dDaGVjay5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICByb3dkYmxjbGljazogdGhpcy5fb25Sb3dDbGljay5iaW5kKHRoaXMpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5nYW50dENoYXJ0SGVscGVyLmluaXQodGhpcy5tb0RhdGFMaXN0LCBlbERvbS5pZCk7XHJcbiAgICAgICAgY29uc3QgbGlzdCA9IFsnUmVwb3J0OTQvQXNwVmlld2VyL0Rhc2hib2FyZC9tb21lbnQuanMnLCAnUmVwb3J0OTQvQXNwVmlld2VyL0Rhc2hib2FyZC9qYWxhYWxpLmpzJ107XHJcbiAgICAgICAgbGV0IGdhbnR0RmlsZSA9ICdMaWIvZ2FudHQtbWFzdGVyL2NvZGViYXNlJztcclxuICAgICAgICBpZiAoQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5SZWxlYXNlVmVyc2lvbikge1xyXG4gICAgICAgICAgICBnYW50dEZpbGUgKz0gJy9kaHRtbHhnYW50dC5taW4uanMnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGdhbnR0RmlsZSArPSAnL3NvdXJjZXMvZGh0bWx4Z2FudHQuanMnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBpc1BlcnNpYW4gPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLkN1bHR1cmUgPT09ICdmYS1JUic7XHJcbiAgICAgICAgaWYgKGlzUGVyc2lhbikge1xyXG4gICAgICAgICAgICBnYW50dEZpbGUgKz0gJz9nYW50dC1zaGFtc2knO1xyXG4gICAgICAgICAgICBsaXN0LnB1c2goJ1JlcG9ydDk0L0dhbnR0L092ZXJyaWRlc0ZvclNoYW1zaURhdGUuanMnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGlzdC5wdXNoKGdhbnR0RmlsZSk7XHJcbiAgICAgICAgaGVhZC5sb2FkKGxpc3QsICgpID0+IHRoaXMuZ2FudHRDaGFydEhlbHBlci5yZW5kZXJHYW50dCgpKTtcclxuICAgIH1cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5nYW50dENoYXJ0SGVscGVyID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgeyBtb2RlLCBtb0RhdGFMaXN0IH0gPSBjaGFuZ2VzO1xyXG4gICAgICAgIGlmIChtb2RlICYmICFtb2RlLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAobW9kZS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2RheSc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nYW50dENoYXJ0SGVscGVyLmNoYW5nZVRvRGF5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdtb250aCc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nYW50dENoYXJ0SGVscGVyLmNoYW5nZVRvTW9udGgoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICd5ZWFyJzpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdhbnR0Q2hhcnRIZWxwZXIuY2hhbmdlVG9ZZWFyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1vRGF0YUxpc3QgJiYgIW1vRGF0YUxpc3QuZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3Jvd2NoZWNrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yb3djaGVjayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRNb0xpc3QgPSBtb0RhdGFMaXN0LmN1cnJlbnRWYWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5nYW50dENoYXJ0SGVscGVyLnNldERhdGEobW9EYXRhTGlzdC5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9IGN1cnJlbnRNb0xpc3QuZmluZCgoYykgPT4gYy4kSXNDaGVja2VkKTtcclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdhbnR0Q2hhcnRIZWxwZXIuc2VsZWN0UmVjb3Jkcyhbc2VsZWN0ZWRdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgX2dldFNlbGVjdGVkKCk6IHsgbW86IE1ldGFvYmplY3REYXRhTW9kZWw7IGluZGV4OiBudW1iZXIgfSB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSWQgPSB0aGlzLmdhbnR0Q2hhcnRIZWxwZXIuZ2V0U2VsZWN0ZWRJZCgpO1xyXG4gICAgICAgIGlmIChzZWxlY3RlZElkID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBpbmRleE1vID0gdGhpcy5tb0RhdGFMaXN0LmZpbmRJbmRleCgobW8pID0+IHNlbGVjdGVkSWQgPT09IG1vLklkKTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBtbzogdGhpcy5tb0RhdGFMaXN0W2luZGV4TW9dLFxyXG4gICAgICAgICAgICBpbmRleDogaW5kZXhNb1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9vblJvd0NoZWNrKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3Jvd2NoZWNrID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9nZXRTZWxlY3RlZCgpO1xyXG4gICAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vblJvd0NoZWNrKHsgbW86IHJlc3VsdC5tbywgaW5kZXg6IHJlc3VsdC5pbmRleCB9KTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX29uUm93Q2xpY2soKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcm93Y2hlY2sgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX2dldFNlbGVjdGVkKCk7XHJcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9uUm93Q2xpY2soeyBtbzogcmVzdWx0Lm1vLCBpbmRleDogcmVzdWx0LmluZGV4IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3ByZXBhcmVEYXRlKCk6IHZvaWQge1xyXG4gICAgICAgIGxldCB0aGlzSXNNaWxhZGkgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLkN1bHR1cmUgIT09ICdmYS1JUic7XHJcbiAgICAgICAgY29uc3QgbW9tZW50XyA9IHRoaXNJc01pbGFkaSA/IG1vbWVudCA6IGptb21lbnQ7XHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGUucHJvdG90eXBlLCAnZ2V0RnVsbFllYXJfT2xkJywge1xyXG4gICAgICAgICAgICB2YWx1ZTogRGF0ZS5wcm90b3R5cGUuZ2V0RnVsbFllYXIsXHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRlLnByb3RvdHlwZSwgJ2dldEZ1bGxZZWFyMicsIHtcclxuICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzSXNNaWxhZGkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRGdWxsWWVhcl9PbGQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXNJc01pbGFkaSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB5ZWFyID0gbW9tZW50Xyh0aGlzKS5qWWVhcigpO1xyXG4gICAgICAgICAgICAgICAgdGhpc0lzTWlsYWRpID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geWVhcjtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRlLnByb3RvdHlwZSwgJ2dldE1vbnRoX09sZCcsIHtcclxuICAgICAgICAgICAgdmFsdWU6IERhdGUucHJvdG90eXBlLmdldE1vbnRoLFxyXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsICdnZXRNb250aDInLCB7XHJcbiAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpc0lzTWlsYWRpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TW9udGhfT2xkKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzSXNNaWxhZGkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbW9udGggPSBtb21lbnRfKHRoaXMpLmpNb250aCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpc0lzTWlsYWRpID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGg7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsICdnZXREYXRlX09sZCcsIHtcclxuICAgICAgICAgICAgdmFsdWU6IERhdGUucHJvdG90eXBlLmdldERhdGUsXHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRlLnByb3RvdHlwZSwgJ2dldERhdGUyJywge1xyXG4gICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXNJc01pbGFkaSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldERhdGVfT2xkKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzSXNNaWxhZGkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF5ID0gbW9tZW50Xyh0aGlzKS5qRGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpc0lzTWlsYWRpID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF5O1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGUucHJvdG90eXBlLCAnc2V0RnVsbFllYXJfT2xkJywge1xyXG4gICAgICAgICAgICB2YWx1ZTogRGF0ZS5wcm90b3R5cGUuc2V0RnVsbFllYXIsXHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRlLnByb3RvdHlwZSwgJ3NldEZ1bGxZZWFyMicsIHtcclxuICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uICh5ZWFyLCBtb250aCwgZGF5KSB7XHJcbiAgICAgICAgICAgICAgICBtb250aCA9IG1vbnRoID4gLTEgPyBtb250aCA6IHRoaXMuZ2V0TW9udGgoKTtcclxuICAgICAgICAgICAgICAgIGRheSA9IGRheSA+IC0xID8gZGF5IDogdGhpcy5nZXREYXRlKCk7XHJcbiAgICAgICAgICAgICAgICBtb250aCArPSAxO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gYCR7eWVhcn0vJHttb250aH0vJHtkYXl9YDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG0gPSBtb21lbnRfKGZvcm1hdHRlZCwgJ2pZWVlZL2pNTS9qREQnKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBtLnRvRGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGdWxsWWVhcl9PbGQoZGF0ZS5nZXRGdWxsWWVhcl9PbGQoKSwgZGF0ZS5nZXRNb250aF9PbGQoKSwgZGF0ZS5nZXREYXRlX09sZCgpKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRlLnByb3RvdHlwZSwgJ3NldE1vbnRoX09sZCcsIHtcclxuICAgICAgICAgICAgdmFsdWU6IERhdGUucHJvdG90eXBlLnNldE1vbnRoLFxyXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsICdzZXRNb250aDInLCB7XHJcbiAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbiAobW9udGgpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG0gPSBtb21lbnRfKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgdGhpc0lzTWlsYWRpID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIG0uak1vbnRoKG1vbnRoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBtLnRvRGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGdWxsWWVhcl9PbGQoZGF0ZS5nZXRGdWxsWWVhcl9PbGQoKSwgZGF0ZS5nZXRNb250aF9PbGQoKSwgZGF0ZS5nZXREYXRlX09sZCgpKTtcclxuICAgICAgICAgICAgICAgIHRoaXNJc01pbGFkaSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGUucHJvdG90eXBlLCAnc2V0RGF0ZV9PbGQnLCB7XHJcbiAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICAgICAgICAgIHZhbHVlOiBEYXRlLnByb3RvdHlwZS5zZXREYXRlLFxyXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsICdzZXREYXRlMicsIHtcclxuICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIChkYXkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG0gPSBtb21lbnRfKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgdGhpc0lzTWlsYWRpID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIG0uakRhdGUoZGF5KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBtLnRvRGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGdWxsWWVhcl9PbGQoZGF0ZS5nZXRGdWxsWWVhcl9PbGQoKSwgZGF0ZS5nZXRNb250aF9PbGQoKSwgZGF0ZS5nZXREYXRlX09sZCgpKTtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuc2V0RGF0ZV9PbGQoZGF0ZS5nZXREYXRlX09sZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzSXNNaWxhZGkgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIiwiIl19
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtZGh0bWwtY2hhcnQtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi9nYW50dC1kaHRtbC1jaGFydC12aWV3L2dhbnR0LWRodG1sLWNoYXJ0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvZ2FudHQtZGh0bWwtY2hhcnQtdmlldy9nYW50dC1kaHRtbC1jaGFydC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUU1RyxPQUFPLEVBQ0gsUUFBUSxFQUNSLFdBQVcsRUFFWCx1QkFBdUIsRUFFMUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7O0FBU3JDLE1BQU0sT0FBTyw0QkFDVCxTQUFRLHVCQUFnRDtJQVI1RDs7UUFlSSxjQUFTLEdBQUcsS0FBSyxDQUFDO0tBd01yQjtJQXRNRyxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztRQUNyQyxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLGdCQUFnQixLQUFLLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUU1RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFB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bnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIEJhcnNhQXBpLFxyXG4gICAgZ2V0VW5pcXVlSWQsXHJcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxyXG4gICAgUmVwb3J0Vmlld0Jhc2VDb21wb25lbnQsXHJcbiAgICBVaVJlcG9ydFZpZXdCYXNlU2V0dGluZ1xyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5cclxuaW1wb3J0IGptb21lbnQgZnJvbSAnbW9tZW50LWphbGFhbGknO1xyXG5kZWNsYXJlIGNvbnN0IGhlYWQ6IGFueTtcclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JzdS1nYW50dC1kaHRtbC1jaGFydC12aWV3JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9nYW50dC1kaHRtbC1jaGFydC12aWV3LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2dhbnR0LWRodG1sLWNoYXJ0LXZpZXcuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIEdhbnR0RGh0bWxDaGFydFZpZXdDb21wb25lbnRcclxuICAgIGV4dGVuZHMgUmVwb3J0Vmlld0Jhc2VDb21wb25lbnQ8VWlSZXBvcnRWaWV3QmFzZVNldHRpbmc+XHJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzXHJcbntcclxuICAgIEBJbnB1dCgpIG1vZGU6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGdhbnR0RmllbGRzOiBhbnk7XHJcbiAgICBASW5wdXQoKSBnYW50dENoYXJ0SGVscGVyOiBhbnk7XHJcbiAgICBnYW50dElkOiBzdHJpbmc7XHJcbiAgICBfcm93Y2hlY2sgPSBmYWxzZTtcclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVEYXRlKCk7XHJcbiAgICAgICAgY29uc3QgZWxEb20gPSB0aGlzLl9lbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIGVsRG9tLmlkID0gdGhpcy5nYW50dElkID0gZ2V0VW5pcXVlSWQoNCk7XHJcbiAgICAgICAgZWxEb20uc3R5bGUuaGVpZ2h0ID0gYGNhbGMoMTAwdmggLSAke2VsRG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcH1weClgO1xyXG5cclxuICAgICAgICB0aGlzLmdhbnR0Q2hhcnRIZWxwZXIub24oe1xyXG4gICAgICAgICAgICByb3dzZWxlY3Q6IHRoaXMuX29uUm93Q2hlY2suYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgcm93ZGJsY2xpY2s6IHRoaXMuX29uUm93Q2xpY2suYmluZCh0aGlzKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZ2FudHRDaGFydEhlbHBlci5pbml0KHRoaXMubW9EYXRhTGlzdCwgZWxEb20uaWQpO1xyXG4gICAgICAgIGNvbnN0IGxpc3QgPSBbJ1JlcG9ydDk0L0FzcFZpZXdlci9EYXNoYm9hcmQvbW9tZW50LmpzJywgJ1JlcG9ydDk0L0FzcFZpZXdlci9EYXNoYm9hcmQvamFsYWFsaS5qcyddO1xyXG4gICAgICAgIGxldCBnYW50dEZpbGUgPSAnTGliL2dhbnR0LW1hc3Rlci9jb2RlYmFzZSc7XHJcbiAgICAgICAgaWYgKEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuUmVsZWFzZVZlcnNpb24pIHtcclxuICAgICAgICAgICAgZ2FudHRGaWxlICs9ICcvZGh0bWx4Z2FudHQubWluLmpzJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBnYW50dEZpbGUgKz0gJy9zb3VyY2VzL2RodG1seGdhbnR0LmpzJztcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaXNQZXJzaWFuID0gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5DdWx0dXJlID09PSAnZmEtSVInO1xyXG4gICAgICAgIGlmIChpc1BlcnNpYW4pIHtcclxuICAgICAgICAgICAgZ2FudHRGaWxlICs9ICc/Z2FudHQtc2hhbXNpJztcclxuICAgICAgICAgICAgbGlzdC5wdXNoKCdSZXBvcnQ5NC9HYW50dC9PdmVycmlkZXNGb3JTaGFtc2lEYXRlLmpzJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxpc3QucHVzaChnYW50dEZpbGUpO1xyXG4gICAgICAgIGhlYWQubG9hZChsaXN0LCAoKSA9PiB0aGlzLmdhbnR0Q2hhcnRIZWxwZXIucmVuZGVyR2FudHQoKSk7XHJcbiAgICB9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2FudHRDaGFydEhlbHBlciA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgbW9kZSwgbW9EYXRhTGlzdCB9ID0gY2hhbmdlcztcclxuICAgICAgICBpZiAobW9kZSAmJiAhbW9kZS5maXJzdENoYW5nZSkge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG1vZGUuY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdkYXknOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2FudHRDaGFydEhlbHBlci5jaGFuZ2VUb0RheSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2FudHRDaGFydEhlbHBlci5jaGFuZ2VUb01vbnRoKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAneWVhcic6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nYW50dENoYXJ0SGVscGVyLmNoYW5nZVRvWWVhcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtb0RhdGFMaXN0ICYmICFtb0RhdGFMaXN0LmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9yb3djaGVjaykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcm93Y2hlY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50TW9MaXN0ID0gbW9EYXRhTGlzdC5jdXJyZW50VmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMuZ2FudHRDaGFydEhlbHBlci5zZXREYXRhKG1vRGF0YUxpc3QuY3VycmVudFZhbHVlKTtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBjdXJyZW50TW9MaXN0LmZpbmQoKGMpID0+IGMuJElzQ2hlY2tlZCk7XHJcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nYW50dENoYXJ0SGVscGVyLnNlbGVjdFJlY29yZHMoW3NlbGVjdGVkXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9nZXRTZWxlY3RlZCgpOiB7IG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsOyBpbmRleDogbnVtYmVyIH0gfCBudWxsIHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZElkID0gdGhpcy5nYW50dENoYXJ0SGVscGVyLmdldFNlbGVjdGVkSWQoKTtcclxuICAgICAgICBpZiAoc2VsZWN0ZWRJZCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaW5kZXhNbyA9IHRoaXMubW9EYXRhTGlzdC5maW5kSW5kZXgoKG1vKSA9PiBzZWxlY3RlZElkID09PSBtby5JZCk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbW86IHRoaXMubW9EYXRhTGlzdFtpbmRleE1vXSxcclxuICAgICAgICAgICAgaW5kZXg6IGluZGV4TW9cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfb25Sb3dDaGVjaygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9yb3djaGVjayA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fZ2V0U2VsZWN0ZWQoKTtcclxuICAgICAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25Sb3dDaGVjayh7IG1vOiByZXN1bHQubW8sIGluZGV4OiByZXN1bHQuaW5kZXggfSk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9vblJvd0NsaWNrKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3Jvd2NoZWNrID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9nZXRTZWxlY3RlZCgpO1xyXG4gICAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vblJvd0NsaWNrKHsgbW86IHJlc3VsdC5tbywgaW5kZXg6IHJlc3VsdC5pbmRleCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9wcmVwYXJlRGF0ZSgpOiB2b2lkIHtcclxuICAgICAgICBsZXQgdGhpc0lzTWlsYWRpID0gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5DdWx0dXJlICE9PSAnZmEtSVInO1xyXG4gICAgICAgIGNvbnN0IG1vbWVudF8gPSB0aGlzSXNNaWxhZGkgPyBtb21lbnQgOiBqbW9tZW50O1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRlLnByb3RvdHlwZSwgJ2dldEZ1bGxZZWFyX09sZCcsIHtcclxuICAgICAgICAgICAgdmFsdWU6IERhdGUucHJvdG90eXBlLmdldEZ1bGxZZWFyLFxyXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsICdnZXRGdWxsWWVhcjInLCB7XHJcbiAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpc0lzTWlsYWRpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RnVsbFllYXJfT2xkKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzSXNNaWxhZGkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeWVhciA9IG1vbWVudF8odGhpcykualllYXIoKTtcclxuICAgICAgICAgICAgICAgIHRoaXNJc01pbGFkaSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHllYXI7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsICdnZXRNb250aF9PbGQnLCB7XHJcbiAgICAgICAgICAgIHZhbHVlOiBEYXRlLnByb3RvdHlwZS5nZXRNb250aCxcclxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGUucHJvdG90eXBlLCAnZ2V0TW9udGgyJywge1xyXG4gICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXNJc01pbGFkaSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE1vbnRoX09sZCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpc0lzTWlsYWRpID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1vbnRoID0gbW9tZW50Xyh0aGlzKS5qTW9udGgoKTtcclxuICAgICAgICAgICAgICAgIHRoaXNJc01pbGFkaSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGUucHJvdG90eXBlLCAnZ2V0RGF0ZV9PbGQnLCB7XHJcbiAgICAgICAgICAgIHZhbHVlOiBEYXRlLnByb3RvdHlwZS5nZXREYXRlLFxyXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsICdnZXREYXRlMicsIHtcclxuICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzSXNNaWxhZGkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRlX09sZCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpc0lzTWlsYWRpID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRheSA9IG1vbWVudF8odGhpcykuakRhdGUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXNJc01pbGFkaSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRheTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRlLnByb3RvdHlwZSwgJ3NldEZ1bGxZZWFyX09sZCcsIHtcclxuICAgICAgICAgICAgdmFsdWU6IERhdGUucHJvdG90eXBlLnNldEZ1bGxZZWFyLFxyXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsICdzZXRGdWxsWWVhcjInLCB7XHJcbiAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbiAoeWVhciwgbW9udGgsIGRheSkge1xyXG4gICAgICAgICAgICAgICAgbW9udGggPSBtb250aCA+IC0xID8gbW9udGggOiB0aGlzLmdldE1vbnRoKCk7XHJcbiAgICAgICAgICAgICAgICBkYXkgPSBkYXkgPiAtMSA/IGRheSA6IHRoaXMuZ2V0RGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgbW9udGggKz0gMTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGAke3llYXJ9LyR7bW9udGh9LyR7ZGF5fWA7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtID0gbW9tZW50Xyhmb3JtYXR0ZWQsICdqWVlZWS9qTU0vakREJyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlID0gbS50b0RhdGUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RnVsbFllYXJfT2xkKGRhdGUuZ2V0RnVsbFllYXJfT2xkKCksIGRhdGUuZ2V0TW9udGhfT2xkKCksIGRhdGUuZ2V0RGF0ZV9PbGQoKSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsICdzZXRNb250aF9PbGQnLCB7XHJcbiAgICAgICAgICAgIHZhbHVlOiBEYXRlLnByb3RvdHlwZS5zZXRNb250aCxcclxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGUucHJvdG90eXBlLCAnc2V0TW9udGgyJywge1xyXG4gICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24gKG1vbnRoKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtID0gbW9tZW50Xyh0aGlzKTtcclxuICAgICAgICAgICAgICAgIHRoaXNJc01pbGFkaSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBtLmpNb250aChtb250aCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlID0gbS50b0RhdGUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RnVsbFllYXJfT2xkKGRhdGUuZ2V0RnVsbFllYXJfT2xkKCksIGRhdGUuZ2V0TW9udGhfT2xkKCksIGRhdGUuZ2V0RGF0ZV9PbGQoKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzSXNNaWxhZGkgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRlLnByb3RvdHlwZSwgJ3NldERhdGVfT2xkJywge1xyXG4gICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgICAgICAgICB2YWx1ZTogRGF0ZS5wcm90b3R5cGUuc2V0RGF0ZSxcclxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGUucHJvdG90eXBlLCAnc2V0RGF0ZTInLCB7XHJcbiAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbiAoZGF5KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtID0gbW9tZW50Xyh0aGlzKTtcclxuICAgICAgICAgICAgICAgIHRoaXNJc01pbGFkaSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBtLmpEYXRlKGRheSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlID0gbS50b0RhdGUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RnVsbFllYXJfT2xkKGRhdGUuZ2V0RnVsbFllYXJfT2xkKCksIGRhdGUuZ2V0TW9udGhfT2xkKCksIGRhdGUuZ2V0RGF0ZV9PbGQoKSk7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnNldERhdGVfT2xkKGRhdGUuZ2V0RGF0ZV9PbGQpO1xyXG4gICAgICAgICAgICAgICAgdGhpc0lzTWlsYWRpID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIiJdfQ==
@@ -33,6 +33,7 @@ export class UiPdfViewerComponent extends DeviceInfoFieldBaseComponent {
33
33
  this._minheight = null;
34
34
  break;
35
35
  }
36
+ this._minheight = this.inlineEdit ? 'auto' : this._minheight;
36
37
  this.value$.subscribe((value) => {
37
38
  this.value = value;
38
39
  this._refresh();
@@ -250,11 +251,11 @@ export class UiPdfViewerComponent extends DeviceInfoFieldBaseComponent {
250
251
  BarsaApi.Ul.LoadingMask.Mask(this._el.nativeElement);
251
252
  }
252
253
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiPdfViewerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
253
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UiPdfViewerComponent, selector: "bsu-ui-pdf-viewer", host: { properties: { "style.min-height": "this._minheight" } }, providers: [UploadService], viewQueries: [{ propertyName: "_pdfViewerOnDemand", first: true, predicate: ["pdfViewerOnDemand"], descendants: true }, { propertyName: "_dialogTpl", first: true, predicate: ["dialogTpl"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *untilInView=\"el\">\r\n @switch (parameters?.ShowMode) { @case ('2') {\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"toolbar; context: { dialogMode: true }\"></ng-container>\r\n </div>\r\n } @default {\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"toolbar\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\r\n </div>\r\n } }\r\n</ng-container>\r\n\r\n<ng-template #toolbar let-dialogMode=\"dialogMode\">\r\n @if ((disableOrReadonly$ | async) !== true) {\r\n <fd-toolbar [class.dialogMode]=\"dialogMode\" [transparent]=\"true\" [shouldOverflow]=\"true\">\r\n <fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"id\"\r\n [name]=\"'pdf_' + id\"\r\n [placeholder]=\"'AttachFile' | bbbTranslate\"\r\n [buttonLabel]=\"'AttachFile' | bbbTranslate\"\r\n [buttonAriaLabel]=\"'AttachFile' | bbbTranslate\"\r\n [accept]=\"validExtension\"\r\n [(ngModel)]=\"files\"\r\n [multiple]=\"false\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n [contentDensity]=\"(contentDensity$ | async)!!\"\r\n ></fd-file-uploader>\r\n @if (!parameters?.HideDelete) {\r\n <button\r\n [disabled]=\"!(canDelete && value)\"\r\n fd-button\r\n fd-toolbar-item\r\n class=\"delete\"\r\n glyph=\"delete\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDelete()\"\r\n ></button>\r\n } @if (!parameters?.HideAttach) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n glyph=\"attachment\"\r\n [fdType]=\"'transparent'\"\r\n [disabled]=\"!canUpload\"\r\n (click)=\"uploader.open()\"\r\n ></button>\r\n } @if (canEdit) {\r\n <button fd-toolbar-item fd-button glyph=\"edit\" [fdType]=\"'transparent'\" (click)=\"onEdit()\"></button>\r\n } @if (useWordEditor) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'Edit' | bbbTranslate\"\r\n (click)=\"onEditInWord()\"\r\n ></button>\r\n } @if (officeOnline) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'OfficeOnline' | bbbTranslate\"\r\n (click)=\"onOfficeOnline($event)\"\r\n ></button>\r\n } @if (dialogMode) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [glyph]=\"'show'\"\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"!dialogMode ? '' : ('View' | bbbTranslate)\"\r\n (click)=\"onOpenPreviewInDialog()\"\r\n bodyClick\r\n ></button>\r\n } @if (canDownload) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n [glyph]=\"'download'\"\r\n [label]=\"!dialogMode ? '' : ('Download' | bbbTranslate)\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDownload()\"\r\n bodyClick\r\n ></button>\r\n } @if (!parameters?.HideRefresh) {\r\n <button\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n fd-toolbar-item\r\n fd-button\r\n [glyph]=\"dialogMode ? null : 'refresh'\"\r\n [label]=\"!dialogMode ? '' : ('Refresh' | bbbTranslate)\"\r\n [fdType]=\"'transparent'\"\r\n bodyClick\r\n (click)=\"onRefresh()\"\r\n ></button>\r\n }\r\n <fd-busy-indicator\r\n fd-toolbar-item\r\n [loading]=\"(uploadingState$ | async)?.uploading === true\"\r\n ></fd-busy-indicator>\r\n </fd-toolbar>\r\n }\r\n</ng-template>\r\n<ng-template #preview>\r\n @if (isMobile) {\r\n <div\r\n [style.border]=\"!blobUrl ? '.0625rem solid var(--sapGroup_TitleBorderColor)' : null\"\r\n style=\"height: calc(70vh - 40px); position: relative\"\r\n >\r\n <bsu-blob-viewer [file]=\"value\" [style.width]=\"width\" [decrement]=\"'25px'\"></bsu-blob-viewer>\r\n <!-- <ng2-pdfjs-viewer\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n #pdfViewerOnDemand\r\n [externalWindow]=\"false\"\r\n [downloadFileName]=\"blobUrl\"\r\n [openFile]=\"false\"\r\n [viewBookmark]=\"false\"\r\n [showSpinner]=\"true\"\r\n [download]=\"true\"\r\n ></ng2-pdfjs-viewer> -->\r\n </div>\r\n } @else { @if (hasPdf) {\r\n <object\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n style=\"flex-grow: 1\"\r\n [attr.data]=\"valueUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n [style.height]=\"formHeight - 30 > 0 ? formHeight - 30 + 'px' : '100vh'\"\r\n [attr.html]=\"fallbackLink\"\r\n ></object>\r\n } @else { @if (singleControl && value && !value.IsDeleted) {\r\n <div style=\"display: flex\">\r\n @if (singleFileThumbnailUrl) {\r\n <img [src]=\"singleFileThumbnailUrl\" />\r\n }\r\n <fd-object-identifier>\r\n {{ value.FileName }}\r\n </fd-object-identifier>\r\n </div>\r\n } @else {\r\n <div fillEmptySpace [containerDom]=\"formContainer\" [dontUseTopBound]=\"true\" class=\"hatchBackground\"></div>\r\n } } }\r\n</ng-template>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTpl>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" class=\"vertical\">\r\n <fd-dialog-header>\r\n <ng-template fdkTemplate=\"header\">\r\n <div fd-bar-left>\r\n <fd-bar-element>\r\n <h3 fd-title>edit in word</h3>\r\n </fd-bar-element>\r\n </div>\r\n <div fd-bar-right>\r\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"onDialogClose()\"></fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column}:host fd-toolbar.dialogMode ::ng-deep .fd-toolbar{border-bottom:none}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}:host ::ng-deep .fd-file-uploader input{display:none}.single-control{height:50px}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "directive", type: i3.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"], outputs: ["heightChanged"], exportAs: ["fillEmptySpace"] }, { kind: "directive", type: i3.BodyClickDirective, selector: "[bodyClick]", inputs: ["disableBodyClick"] }, { kind: "directive", type: i4.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i4.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i4.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: i4.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i5.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.FileUploaderComponent, selector: "fd-file-uploader", inputs: ["disabled", "required", "multiple", "accept", "dragndrop", "maxFileSize", "minFileSize", "id", "ariaLabel", "ariaLabelledBy", "placeholder", "buttonLabel", "buttonAriaLabel", "state", "fileLimit", "inputHidden", "width"], outputs: ["selectedFilesChanged", "selectedInvalidFiles", "onDragEnter", "onDragLeave"] }, { kind: "component", type: i8.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i8.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i8.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: i9.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: i10.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i11.ObjectIdentifierComponent, selector: "fd-object-identifier", inputs: ["description", "bold", "medium"] }, { kind: "component", type: i12.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i12.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: i13.BlobViewerComponent, selector: "bsu-blob-viewer", inputs: ["file"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
254
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UiPdfViewerComponent, selector: "bsu-ui-pdf-viewer", host: { properties: { "style.min-height": "this._minheight" } }, providers: [UploadService], viewQueries: [{ propertyName: "_pdfViewerOnDemand", first: true, predicate: ["pdfViewerOnDemand"], descendants: true }, { propertyName: "_dialogTpl", first: true, predicate: ["dialogTpl"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *untilInView=\"el\">\r\n @switch (parameters?.ShowMode) { @case ('2') {\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"toolbar; context: { dialogMode: true }\"></ng-container>\r\n </div>\r\n } @default {\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"toolbar\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\r\n </div>\r\n } }\r\n</ng-container>\r\n\r\n<ng-template #toolbar let-dialogMode=\"dialogMode\">\r\n @if ((disableOrReadonly$ | async) !== true) {\r\n <fd-toolbar [class.dialogMode]=\"dialogMode\" [transparent]=\"true\" [shouldOverflow]=\"true\">\r\n <fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"id\"\r\n [name]=\"'pdf_' + id\"\r\n [placeholder]=\"'AttachFile' | bbbTranslate\"\r\n [buttonLabel]=\"'AttachFile' | bbbTranslate\"\r\n [buttonAriaLabel]=\"'AttachFile' | bbbTranslate\"\r\n [accept]=\"validExtension\"\r\n [(ngModel)]=\"files\"\r\n [multiple]=\"false\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n [contentDensity]=\"(contentDensity$ | async)!!\"\r\n ></fd-file-uploader>\r\n @if (!parameters?.HideDelete) {\r\n <button\r\n [disabled]=\"!(canDelete && value)\"\r\n fd-button\r\n fd-toolbar-item\r\n class=\"delete\"\r\n glyph=\"delete\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDelete()\"\r\n ></button>\r\n } @if (!parameters?.HideAttach) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n glyph=\"attachment\"\r\n [fdType]=\"'transparent'\"\r\n [disabled]=\"!canUpload\"\r\n (click)=\"uploader.open()\"\r\n ></button>\r\n } @if (canEdit) {\r\n <button fd-toolbar-item fd-button glyph=\"edit\" [fdType]=\"'transparent'\" (click)=\"onEdit()\"></button>\r\n } @if (useWordEditor) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'Edit' | bbbTranslate\"\r\n (click)=\"onEditInWord()\"\r\n ></button>\r\n } @if (officeOnline) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'OfficeOnline' | bbbTranslate\"\r\n (click)=\"onOfficeOnline($event)\"\r\n ></button>\r\n } @if (dialogMode) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [glyph]=\"'show'\"\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"!dialogMode ? '' : ('View' | bbbTranslate)\"\r\n (click)=\"onOpenPreviewInDialog()\"\r\n bodyClick\r\n ></button>\r\n } @if (canDownload) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n [glyph]=\"'download'\"\r\n [label]=\"!dialogMode ? '' : ('Download' | bbbTranslate)\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDownload()\"\r\n bodyClick\r\n ></button>\r\n } @if (!parameters?.HideRefresh) {\r\n <button\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n fd-toolbar-item\r\n fd-button\r\n [glyph]=\"dialogMode ? null : 'refresh'\"\r\n [label]=\"!dialogMode ? '' : ('Refresh' | bbbTranslate)\"\r\n [fdType]=\"'transparent'\"\r\n bodyClick\r\n (click)=\"onRefresh()\"\r\n ></button>\r\n }\r\n <fd-busy-indicator\r\n fd-toolbar-item\r\n [loading]=\"(uploadingState$ | async)?.uploading === true\"\r\n ></fd-busy-indicator>\r\n </fd-toolbar>\r\n }\r\n</ng-template>\r\n<ng-template #preview>\r\n @if (isMobile) {\r\n <div\r\n [style.border]=\"!blobUrl ? '.0625rem solid var(--sapGroup_TitleBorderColor)' : null\"\r\n style=\"height: calc(70vh - 40px); position: relative\"\r\n >\r\n @if(value){\r\n <bsu-blob-viewer [file]=\"value\" [style.width]=\"width\" [decrement]=\"'25px'\"></bsu-blob-viewer>\r\n }\r\n <!-- <ng2-pdfjs-viewer\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n #pdfViewerOnDemand\r\n [externalWindow]=\"false\"\r\n [downloadFileName]=\"blobUrl\"\r\n [openFile]=\"false\"\r\n [viewBookmark]=\"false\"\r\n [showSpinner]=\"true\"\r\n [download]=\"true\"\r\n ></ng2-pdfjs-viewer> -->\r\n </div>\r\n } @else { @if (hasPdf) {\r\n <object\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n [disable]=\"inlineEdit\"\r\n style=\"flex-grow: 1\"\r\n [attr.data]=\"valueUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n [style.height]=\"inlineEdit ? 'auto' : formHeight - 30 > 0 ? formHeight - 30 + 'px' : '100vh'\"\r\n [attr.html]=\"fallbackLink\"\r\n ></object>\r\n } @else { @if (singleControl && value && !value.IsDeleted) {\r\n <div style=\"display: flex\">\r\n @if (singleFileThumbnailUrl) {\r\n <img [src]=\"singleFileThumbnailUrl\" />\r\n }\r\n <fd-object-identifier>\r\n {{ value.FileName }}\r\n </fd-object-identifier>\r\n </div>\r\n } @else {\r\n <div\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n class=\"hatchBackground\"\r\n [disable]=\"inlineEdit\"\r\n [class.tw-h-4]=\"inlineEdit\"\r\n ></div>\r\n } } }\r\n</ng-template>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTpl>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" class=\"vertical\">\r\n <fd-dialog-header>\r\n <ng-template fdkTemplate=\"header\">\r\n <div fd-bar-left>\r\n <fd-bar-element>\r\n <h3 fd-title>edit in word</h3>\r\n </fd-bar-element>\r\n </div>\r\n <div fd-bar-right>\r\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"onDialogClose()\"></fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column}:host fd-toolbar.dialogMode ::ng-deep .fd-toolbar{border-bottom:none}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}:host ::ng-deep .fd-file-uploader input{display:none}.single-control{height:50px}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "directive", type: i3.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"], outputs: ["heightChanged"], exportAs: ["fillEmptySpace"] }, { kind: "directive", type: i3.BodyClickDirective, selector: "[bodyClick]", inputs: ["disableBodyClick"] }, { kind: "directive", type: i4.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i4.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i4.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: i4.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i5.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.FileUploaderComponent, selector: "fd-file-uploader", inputs: ["disabled", "required", "multiple", "accept", "dragndrop", "maxFileSize", "minFileSize", "id", "ariaLabel", "ariaLabelledBy", "placeholder", "buttonLabel", "buttonAriaLabel", "state", "fileLimit", "inputHidden", "width"], outputs: ["selectedFilesChanged", "selectedInvalidFiles", "onDragEnter", "onDragLeave"] }, { kind: "component", type: i8.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i8.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i8.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: i9.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: i10.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i11.ObjectIdentifierComponent, selector: "fd-object-identifier", inputs: ["description", "bold", "medium"] }, { kind: "component", type: i12.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i12.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: i13.BlobViewerComponent, selector: "bsu-blob-viewer", inputs: ["file"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
254
255
  }
255
256
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiPdfViewerComponent, decorators: [{
256
257
  type: Component,
257
- args: [{ selector: 'bsu-ui-pdf-viewer', providers: [UploadService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-container *untilInView=\"el\">\r\n @switch (parameters?.ShowMode) { @case ('2') {\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"toolbar; context: { dialogMode: true }\"></ng-container>\r\n </div>\r\n } @default {\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"toolbar\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\r\n </div>\r\n } }\r\n</ng-container>\r\n\r\n<ng-template #toolbar let-dialogMode=\"dialogMode\">\r\n @if ((disableOrReadonly$ | async) !== true) {\r\n <fd-toolbar [class.dialogMode]=\"dialogMode\" [transparent]=\"true\" [shouldOverflow]=\"true\">\r\n <fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"id\"\r\n [name]=\"'pdf_' + id\"\r\n [placeholder]=\"'AttachFile' | bbbTranslate\"\r\n [buttonLabel]=\"'AttachFile' | bbbTranslate\"\r\n [buttonAriaLabel]=\"'AttachFile' | bbbTranslate\"\r\n [accept]=\"validExtension\"\r\n [(ngModel)]=\"files\"\r\n [multiple]=\"false\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n [contentDensity]=\"(contentDensity$ | async)!!\"\r\n ></fd-file-uploader>\r\n @if (!parameters?.HideDelete) {\r\n <button\r\n [disabled]=\"!(canDelete && value)\"\r\n fd-button\r\n fd-toolbar-item\r\n class=\"delete\"\r\n glyph=\"delete\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDelete()\"\r\n ></button>\r\n } @if (!parameters?.HideAttach) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n glyph=\"attachment\"\r\n [fdType]=\"'transparent'\"\r\n [disabled]=\"!canUpload\"\r\n (click)=\"uploader.open()\"\r\n ></button>\r\n } @if (canEdit) {\r\n <button fd-toolbar-item fd-button glyph=\"edit\" [fdType]=\"'transparent'\" (click)=\"onEdit()\"></button>\r\n } @if (useWordEditor) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'Edit' | bbbTranslate\"\r\n (click)=\"onEditInWord()\"\r\n ></button>\r\n } @if (officeOnline) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'OfficeOnline' | bbbTranslate\"\r\n (click)=\"onOfficeOnline($event)\"\r\n ></button>\r\n } @if (dialogMode) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [glyph]=\"'show'\"\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"!dialogMode ? '' : ('View' | bbbTranslate)\"\r\n (click)=\"onOpenPreviewInDialog()\"\r\n bodyClick\r\n ></button>\r\n } @if (canDownload) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n [glyph]=\"'download'\"\r\n [label]=\"!dialogMode ? '' : ('Download' | bbbTranslate)\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDownload()\"\r\n bodyClick\r\n ></button>\r\n } @if (!parameters?.HideRefresh) {\r\n <button\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n fd-toolbar-item\r\n fd-button\r\n [glyph]=\"dialogMode ? null : 'refresh'\"\r\n [label]=\"!dialogMode ? '' : ('Refresh' | bbbTranslate)\"\r\n [fdType]=\"'transparent'\"\r\n bodyClick\r\n (click)=\"onRefresh()\"\r\n ></button>\r\n }\r\n <fd-busy-indicator\r\n fd-toolbar-item\r\n [loading]=\"(uploadingState$ | async)?.uploading === true\"\r\n ></fd-busy-indicator>\r\n </fd-toolbar>\r\n }\r\n</ng-template>\r\n<ng-template #preview>\r\n @if (isMobile) {\r\n <div\r\n [style.border]=\"!blobUrl ? '.0625rem solid var(--sapGroup_TitleBorderColor)' : null\"\r\n style=\"height: calc(70vh - 40px); position: relative\"\r\n >\r\n <bsu-blob-viewer [file]=\"value\" [style.width]=\"width\" [decrement]=\"'25px'\"></bsu-blob-viewer>\r\n <!-- <ng2-pdfjs-viewer\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n #pdfViewerOnDemand\r\n [externalWindow]=\"false\"\r\n [downloadFileName]=\"blobUrl\"\r\n [openFile]=\"false\"\r\n [viewBookmark]=\"false\"\r\n [showSpinner]=\"true\"\r\n [download]=\"true\"\r\n ></ng2-pdfjs-viewer> -->\r\n </div>\r\n } @else { @if (hasPdf) {\r\n <object\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n style=\"flex-grow: 1\"\r\n [attr.data]=\"valueUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n [style.height]=\"formHeight - 30 > 0 ? formHeight - 30 + 'px' : '100vh'\"\r\n [attr.html]=\"fallbackLink\"\r\n ></object>\r\n } @else { @if (singleControl && value && !value.IsDeleted) {\r\n <div style=\"display: flex\">\r\n @if (singleFileThumbnailUrl) {\r\n <img [src]=\"singleFileThumbnailUrl\" />\r\n }\r\n <fd-object-identifier>\r\n {{ value.FileName }}\r\n </fd-object-identifier>\r\n </div>\r\n } @else {\r\n <div fillEmptySpace [containerDom]=\"formContainer\" [dontUseTopBound]=\"true\" class=\"hatchBackground\"></div>\r\n } } }\r\n</ng-template>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTpl>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" class=\"vertical\">\r\n <fd-dialog-header>\r\n <ng-template fdkTemplate=\"header\">\r\n <div fd-bar-left>\r\n <fd-bar-element>\r\n <h3 fd-title>edit in word</h3>\r\n </fd-bar-element>\r\n </div>\r\n <div fd-bar-right>\r\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"onDialogClose()\"></fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column}:host fd-toolbar.dialogMode ::ng-deep .fd-toolbar{border-bottom:none}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}:host ::ng-deep .fd-file-uploader input{display:none}.single-control{height:50px}\n"] }]
258
+ args: [{ selector: 'bsu-ui-pdf-viewer', providers: [UploadService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-container *untilInView=\"el\">\r\n @switch (parameters?.ShowMode) { @case ('2') {\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"toolbar; context: { dialogMode: true }\"></ng-container>\r\n </div>\r\n } @default {\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"toolbar\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\r\n </div>\r\n } }\r\n</ng-container>\r\n\r\n<ng-template #toolbar let-dialogMode=\"dialogMode\">\r\n @if ((disableOrReadonly$ | async) !== true) {\r\n <fd-toolbar [class.dialogMode]=\"dialogMode\" [transparent]=\"true\" [shouldOverflow]=\"true\">\r\n <fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"id\"\r\n [name]=\"'pdf_' + id\"\r\n [placeholder]=\"'AttachFile' | bbbTranslate\"\r\n [buttonLabel]=\"'AttachFile' | bbbTranslate\"\r\n [buttonAriaLabel]=\"'AttachFile' | bbbTranslate\"\r\n [accept]=\"validExtension\"\r\n [(ngModel)]=\"files\"\r\n [multiple]=\"false\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n [contentDensity]=\"(contentDensity$ | async)!!\"\r\n ></fd-file-uploader>\r\n @if (!parameters?.HideDelete) {\r\n <button\r\n [disabled]=\"!(canDelete && value)\"\r\n fd-button\r\n fd-toolbar-item\r\n class=\"delete\"\r\n glyph=\"delete\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDelete()\"\r\n ></button>\r\n } @if (!parameters?.HideAttach) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n glyph=\"attachment\"\r\n [fdType]=\"'transparent'\"\r\n [disabled]=\"!canUpload\"\r\n (click)=\"uploader.open()\"\r\n ></button>\r\n } @if (canEdit) {\r\n <button fd-toolbar-item fd-button glyph=\"edit\" [fdType]=\"'transparent'\" (click)=\"onEdit()\"></button>\r\n } @if (useWordEditor) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'Edit' | bbbTranslate\"\r\n (click)=\"onEditInWord()\"\r\n ></button>\r\n } @if (officeOnline) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'OfficeOnline' | bbbTranslate\"\r\n (click)=\"onOfficeOnline($event)\"\r\n ></button>\r\n } @if (dialogMode) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [glyph]=\"'show'\"\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"!dialogMode ? '' : ('View' | bbbTranslate)\"\r\n (click)=\"onOpenPreviewInDialog()\"\r\n bodyClick\r\n ></button>\r\n } @if (canDownload) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n [glyph]=\"'download'\"\r\n [label]=\"!dialogMode ? '' : ('Download' | bbbTranslate)\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDownload()\"\r\n bodyClick\r\n ></button>\r\n } @if (!parameters?.HideRefresh) {\r\n <button\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n fd-toolbar-item\r\n fd-button\r\n [glyph]=\"dialogMode ? null : 'refresh'\"\r\n [label]=\"!dialogMode ? '' : ('Refresh' | bbbTranslate)\"\r\n [fdType]=\"'transparent'\"\r\n bodyClick\r\n (click)=\"onRefresh()\"\r\n ></button>\r\n }\r\n <fd-busy-indicator\r\n fd-toolbar-item\r\n [loading]=\"(uploadingState$ | async)?.uploading === true\"\r\n ></fd-busy-indicator>\r\n </fd-toolbar>\r\n }\r\n</ng-template>\r\n<ng-template #preview>\r\n @if (isMobile) {\r\n <div\r\n [style.border]=\"!blobUrl ? '.0625rem solid var(--sapGroup_TitleBorderColor)' : null\"\r\n style=\"height: calc(70vh - 40px); position: relative\"\r\n >\r\n @if(value){\r\n <bsu-blob-viewer [file]=\"value\" [style.width]=\"width\" [decrement]=\"'25px'\"></bsu-blob-viewer>\r\n }\r\n <!-- <ng2-pdfjs-viewer\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n #pdfViewerOnDemand\r\n [externalWindow]=\"false\"\r\n [downloadFileName]=\"blobUrl\"\r\n [openFile]=\"false\"\r\n [viewBookmark]=\"false\"\r\n [showSpinner]=\"true\"\r\n [download]=\"true\"\r\n ></ng2-pdfjs-viewer> -->\r\n </div>\r\n } @else { @if (hasPdf) {\r\n <object\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n [disable]=\"inlineEdit\"\r\n style=\"flex-grow: 1\"\r\n [attr.data]=\"valueUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n [style.height]=\"inlineEdit ? 'auto' : formHeight - 30 > 0 ? formHeight - 30 + 'px' : '100vh'\"\r\n [attr.html]=\"fallbackLink\"\r\n ></object>\r\n } @else { @if (singleControl && value && !value.IsDeleted) {\r\n <div style=\"display: flex\">\r\n @if (singleFileThumbnailUrl) {\r\n <img [src]=\"singleFileThumbnailUrl\" />\r\n }\r\n <fd-object-identifier>\r\n {{ value.FileName }}\r\n </fd-object-identifier>\r\n </div>\r\n } @else {\r\n <div\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n class=\"hatchBackground\"\r\n [disable]=\"inlineEdit\"\r\n [class.tw-h-4]=\"inlineEdit\"\r\n ></div>\r\n } } }\r\n</ng-template>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTpl>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" class=\"vertical\">\r\n <fd-dialog-header>\r\n <ng-template fdkTemplate=\"header\">\r\n <div fd-bar-left>\r\n <fd-bar-element>\r\n <h3 fd-title>edit in word</h3>\r\n </fd-bar-element>\r\n </div>\r\n <div fd-bar-right>\r\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"onDialogClose()\"></fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column}:host fd-toolbar.dialogMode ::ng-deep .fd-toolbar{border-bottom:none}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}:host ::ng-deep .fd-file-uploader input{display:none}.single-control{height:50px}\n"] }]
258
259
  }], propDecorators: { _pdfViewerOnDemand: [{
259
260
  type: ViewChild,
260
261
  args: ['pdfViewerOnDemand']
@@ -265,4 +266,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
265
266
  type: HostBinding,
266
267
  args: ['style.min-height']
267
268
  }] } });
268
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktcGRmLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS1wZGYtdmlld2VyL3VpLXBkZi12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktcGRmLXZpZXdlci91aS1wZGYtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFLWCxTQUFTLEVBQ1QsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFrQixhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsUUFBUSxFQUNSLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsT0FBTyxFQUNQLFlBQVksRUFDWixPQUFPLEVBQ1AsaUJBQWlCLEVBR3BCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVV6RSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsNEJBQTRCO0lBUnRFOztRQVdxQyxlQUFVLEdBQWtCLE1BQU0sQ0FBQztRQTJCcEUsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBUWYsbUJBQWMsR0FBa0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBdVF6RDtJQXRRRyxRQUFRO1FBQ0osSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQztRQUMzRCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIs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RUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakUsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsc0JBQXNCLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBQ0wsQ0FBQztJQUNPLFNBQVM7UUFDYixRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBQ08sS0FBSztRQUNULFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7K0dBN1NRLG9CQUFvQjttR0FBcEIsb0JBQW9CLDZHQUpsQixDQUFDLGFBQWEsQ0FBQyx5UkNoQzlCLDBwTkFnTEE7OzRGRDVJYSxvQkFBb0I7a0JBUmhDLFNBQVM7K0JBQ0ksbUJBQW1CLGFBR2xCLENBQUMsYUFBYSxDQUFDLG1CQUNULHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSzs4QkFHZSxrQkFBa0I7c0JBQWpELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNOLFVBQVU7c0JBQWpDLFNBQVM7dUJBQUMsV0FBVztnQkFDVyxVQUFVO3NCQUExQyxXQUFXO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENvbXBvbmVudCxcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT25Jbml0LFxyXG4gICAgU2ltcGxlQ2hhbmdlcyxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgaW5qZWN0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNhZmVSZXNvdXJjZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSwgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgICBCYXJzYUFwaSxcclxuICAgIFVwbG9hZFNlcnZpY2UsXHJcbiAgICBGaWxlc1ZhbGlkYXRpb25IZWxwZXIsXHJcbiAgICBpc0ltYWdlLFxyXG4gICAgZ2V0SW1hZ2VQYXRoLFxyXG4gICAgZ2V0SWNvbixcclxuICAgIGdldFZhbGlkRXh0ZW5zaW9uLFxyXG4gICAgSVVwbG9hZGluZ1N0YXRlLFxyXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbFxyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgRGV2aWNlSW5mb0ZpZWxkQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2RldmljZS1pbmZvLWZpZWxkLWJhc2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JzdS11aS1wZGYtdmlld2VyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS1wZGYtdmlld2VyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3VpLXBkZi12aWV3ZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW1VwbG9hZFNlcnZpY2VdLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlQZGZWaWV3ZXJDb21wb25lbnQgZXh0ZW5kcyBEZXZpY2VJbmZvRmllbGRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gICAgQFZpZXdDaGlsZCgncGRmVmlld2VyT25EZW1hbmQnKSBfcGRmVmlld2VyT25EZW1hbmQ6IGFueTtcclxuICAgIEBWaWV3Q2hpbGQoJ2RpYWxvZ1RwbCcpIF9kaWFsb2dUcGw6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1pbi1oZWlnaHQnKSBfbWluaGVpZ2h0OiBzdHJpbmcgfCBudWxsID0gJzcwdmgnO1xyXG4gICAgZmlsZU5hbWU6IHN0cmluZztcclxuICAgIGZhbGxiYWNrTGluazogYW55O1xyXG4gICAgY2FuTm90UmVuZGVyUGRmOiBib29sZWFuO1xyXG4gICAgdmFsdWVVcmw6IFNhZmVSZXNvdXJjZVVybCB8IG51bGw7XHJcbiAgICBoYXNQZGY6IGJvb2xlYW47XHJcbiAgICBwZGZPYmplY3Q6IHtcclxuICAgICAgICBhdXRvRWw6IHtcclxuICAgICAgICAgICAgdGFnOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIGRhdGE6IHN0cmluZztcclxuICAgICAgICAgICAgdHlwZTogc3RyaW5nO1xyXG4gICAgICAgICAgICB3aWR0aDogc3RyaW5nO1xyXG4gICAgICAgICAgICBoZWlnaHQ6IHN0cmluZztcclxuICAgICAgICAgICAgaHRtbDogYW55O1xyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG5cclxuICAgIHVwbG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxJVXBsb2FkaW5nU3RhdGU+O1xyXG4gICAgZmlsZXM6IEZpbGVbXTtcclxuICAgIGNvbnRlbnREZW5zaXR5JDogT2JzZXJ2YWJsZTxDb250ZW50RGVuc2l0eT47XHJcbiAgICBvZmZpY2VPbmxpbmU6IGFueTtcclxuICAgIHVzZVdvcmRFZGl0b3I6IGFueTtcclxuICAgIGhhc0ZpbGVOYW1lOiBib29sZWFuO1xyXG4gICAgY2FuUmVtb3ZlOiBib29sZWFuO1xyXG4gICAgY2FuVXBsb2FkOiBib29sZWFuO1xyXG4gICAgY2FuRWRpdDogYm9vbGVhbjtcclxuICAgIGNhbkRvd25sb2FkOiBib29sZWFuO1xyXG4gICAgY2FuRGVsZXRlID0gdHJ1ZTtcclxuICAgIGNhblNhdmUgPSB0cnVlO1xyXG4gICAgdmFsaWRFeHRlbnNpb246IHN0cmluZztcclxuICAgIGZpbGVzVmFsaWRhdGlvbkhlbHBlcjogRmlsZXNWYWxpZGF0aW9uSGVscGVyO1xyXG4gICAgc2luZ2xlQ29udHJvbDogYm9vbGVhbjtcclxuICAgIHNpbmdsZUZpbGVUaHVtYm5haWxVcmw6IHN0cmluZztcclxuICAgIHBhcmVudEhlaWdodDogbnVtYmVyO1xyXG4gICAgYmxvYlVybDogc3RyaW5nO1xyXG4gICAgcGFyYW1ldGVyZXM6IFVpUGRmVmlld2VyU2V0dGluZztcclxuICAgIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlID0gaW5qZWN0KERpYWxvZ1NlcnZpY2UpO1xyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy51cGxvYWRpbmdTdGF0ZSQgPSB0aGlzLl91cGxvYWRTZXJ2aWNlLnVwbG9hZGluZ1N0YXRlJDtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHN3aXRjaCAodGhpcy5wYXJhbWV0ZXJzPy5TaG93TW9kZSkge1xyXG4gICAgICAgICAgICBjYXNlICcyJzpcclxuICAgICAgICAgICAgICAgIHRoaXMuX21pbmhlaWdodCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMudmFsdWUkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoJC5zdWJzY3JpYmUoKGZyb21TZXJ2ZXI6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaChmcm9tU2VydmVyKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmZpbGVzVmFsaWRhdGlvbkhlbHBlciA9IG5ldyBGaWxlc1ZhbGlkYXRpb25IZWxwZXIoXHJcbiAgICAgICAgICAgIHRoaXMuU2V0dGluZy5NYXhGaWxlQ291bnQsXHJcbiAgICAgICAgICAgIHRoaXMuU2V0dGluZy5NYXhGaWxlU2l6ZUtiLFxyXG4gICAgICAgICAgICB0aGlzLlNldHRpbmcuTWF4VG90YWxGaWxlU2l6ZUtiXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLl9yZWZyZXNoQnV0dG9ucygpO1xyXG4gICAgICAgIHRoaXMuX3JlZnJlc2goKTtcclxuICAgICAgICB0aGlzLnZhbGlkRXh0ZW5zaW9uID0gdGhpcy5jb250ZXh0LnVzZVdvcmRFZGl0b3JcclxuICAgICAgICAgICAgPyAnLmRvYywuZG9jeCxhcHBsaWNhdGlvbi9tc3dvcmQsYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnXHJcbiAgICAgICAgICAgIDogZ2V0VmFsaWRFeHRlbnNpb24odGhpcy5TZXR0aW5nLlZhbGlkRXh0ZW5zaW9ucyk7XHJcbiAgICAgICAgdGhpcy5zaW5nbGVDb250cm9sID0gdGhpcy5TZXR0aW5nLlZpZXdUeXBlID09PSAnU2luZ2xlRmlsZUNvbnRyb2wnO1xyXG4gICAgfVxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xyXG4gICAgICAgIGNvbnN0IHsgZm9ybUhlaWdodCB9ID0gY2hhbmdlcztcclxuICAgICAgICBpZiAoZm9ybUhlaWdodCAmJiAhZm9ybUhlaWdodC5maXJzdENoYW5nZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG9uRWRpdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdFZGl0Jyk7XHJcbiAgICB9XHJcbiAgICBvblZpZXcoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBlID0geyBjdHJsS2V5OiBldmVudC5jdHJsS2V5IH07XHJcbiAgICAgICAgdGhpcy5fY29tbWFuZENsaWNrSGFuZGxlcignT09WaWV3JywgZSk7XHJcbiAgICB9XHJcbiAgICBvbkRvd25sb2FkKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NvbW1hbmRDbGlja0hhbmRsZXIoJ0Rvd25sb2FkJyk7XHJcbiAgICB9XHJcbiAgICBvbkZpbGVTZWxlY3Rpb24oZmlsZXM6IEZpbGVbXSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3VwbG9hZFRvU2VydmVyKGZpbGVzKTtcclxuICAgIH1cclxuICAgIG9uRGVsZXRlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NvbW1hbmRDbGlja0hhbmRsZXIoJ0RlbGV0ZScpO1xyXG4gICAgfVxyXG4gICAgb25FZGl0SW5Xb3JkKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NvbW1hbmRDbGlja0hhbmRsZXIoJ09ERWRpdCcpO1xyXG4gICAgfVxyXG4gICAgb25PZmZpY2VPbmxpbmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBlID0geyBjdHJsS2V5OiBldmVudC5jdHJsS2V5IH07XHJcblxyXG4gICAgICAgIHRoaXMuX2NvbW1hbmRDbGlja0hhbmRsZXIoJ09PRWRpdCcsIGUpO1xyXG4gICAgfVxyXG4gICAgb25SZWZyZXNoKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NvbW1hbmRDbGlja0hhbmRsZXIoJ1JlZnJlc2gnKTtcclxuICAgIH1cclxuICAgIERvd25sb2FkRmlsZUlkKGZpbGVJZCwgdmlld0luQnJvd3NlciwgY29udmVydFRvLCBmb3JPY3gsIGlzT2ZmaWNlT25saW5lKTogdm9pZCB7XHJcbiAgICAgICAgLy8gaWYgKCFpc0ZpcmVmb3goKSkge1xyXG4gICAgICAgIC8vICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMuX21hc2soKTtcclxuICAgICAgICAvLyAgICAgfSwgMCk7XHJcbiAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICBCYXJzYUFwaS5Db21tb24uRmlsZS5Eb3dubG9hZEZpbGVDb250ZW50LmJpbmQodGhpcykoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGZpbGVJZCxcclxuICAgICAgICAgICAgICAgIGZpbGVVcmw6IG51bGwsXHJcbiAgICAgICAgICAgICAgICB2aWV3SW5Ccm93c2VyLFxyXG4gICAgICAgICAgICAgICAgY29udmVydFRvLFxyXG4gICAgICAgICAgICAgICAgaXNPZmZpY2VPbmxpbmUsXHJcbiAgICAgICAgICAgICAgICBmb3JPY3hcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Rvd25sb2FkRmlsZUlkQ29tcGxldGVkKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLl9oaWRlTWFzaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuX2hpZGVNYXNrKCk7XHJcbiAgICAgICAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgICAgICAgIGFsZXJ0KGVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBvbk9wZW5QcmV2aWV3SW5EaWFsb2coKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKHRoaXMuX2RpYWxvZ1RwbCwge1xyXG4gICAgICAgICAgICByZXNwb25zaXZlUGFkZGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgbW9iaWxlOiB0cnVlLFxyXG4gICAgICAgICAgICBhcmlhTGFiZWxsZWRCeTogJ21hcCcsXHJcbiAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeTogJ2Nob29zZSBsb2NhdGlvbicsXHJcbiAgICAgICAgICAgIGZvY3VzVHJhcHBlZDogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgb25EaWFsb2dDbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfZG93bmxvYWRGaWxlSWRDb21wbGV0ZWQocmVzcG9uc2UpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBibG9iID0gQmFyc2FBcGkuQ29tbW9uLkZpbGUuQjY0dG9CbG9iKHJlc3BvbnNlLmNvbnRlbnQsIHJlc3BvbnNlLmNvbnRlbnRUeXBlKTtcclxuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMIHx8IHdpbmRvdy53ZWJraXRVUkw7XHJcbiAgICAgICAgdGhpcy5ibG9iVXJsID0gdXJsLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICBpZiAodGhpcy5pc01vYmlsZSkge1xyXG4gICAgICAgICAgICAvLyB0aGlzLl9wZGZWaWV3ZXJPbkRlbWFuZC5wZGZTcmMgPSB0aGlzLmJsb2JVcmw7IC8vIHBkZlNyYyBjYW4gYmUgQmxvYiBvciBVaW50OEFycmF5XHJcbiAgICAgICAgICAgIC8vIHRoaXMuX3BkZlZpZXdlck9uRGVtYW5kLnJlZnJlc2goKTsgLy8gQXNrIHBkZiB2aWV3ZXIgdG8gbG9hZC9yZWZyZXNoIHBkZlxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnZhbHVlVXJsID0gdGhpcy5fZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLmJsb2JVcmwpO1xyXG4gICAgICAgIHRoaXMuaGFzUGRmID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfdXBsb2FkVG9TZXJ2ZXIoZmlsZXM6IEZpbGVbXSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZmlsZXNWYWxpZGF0aW9uSGVscGVyLnZhbGlkYXRlRmlsZXMoZmlsZXMpO1xyXG4gICAgICAgIHRoaXMuX3VwbG9hZEZpbGUoZmlsZXMpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3JlZnJlc2hCdXR0b25zKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3JlZnJlc2hCdXR0b25zSGVscGVyKGZhbHNlKTtcclxuICAgICAgICBCYXJzYUFwaS5Db21tb24uQXN5bmMuV2F0ZXJmYWxsKFxyXG4gICAgICAgICAgICAnQ29tbW9uLkZpbGUuSXNBZ2VudEFjdGl2ZScsXHJcbiAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgIC8vIENvbW1vbi5GaWxlQWdlbnQuSXNBZ2VudEFjdGl2ZS5iaW5kKENvbW1vbi5GaWxlQWdlbnQpLFxyXG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkFnZW50SGVscGVyLkluaXQuYmluZChCYXJzYUFwaS5Db21tb24uQWdlbnRIZWxwZXIpXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIChlcnIsIHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWdlbnRJc0FjdGl2ZSA9IHJlc3VsdCA9PT0gJ09LJztcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hCdXR0b25zSGVscGVyKGFnZW50SXNBY3RpdmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfcmVmcmVzaEJ1dHRvbnNIZWxwZXIoaXNBZ2VudEFjdGl2ZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZU9yUmVhZG9ubHkkLnN1YnNjcmliZSgoZGlzYWJsZU9yUmVhZG9ubHkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2FuU2F2ZSA9IHRoaXMuY2FuU2F2ZTtcclxuICAgICAgICAgICAgdGhpcy5jYW5EZWxldGUgPSAhZGlzYWJsZU9yUmVhZG9ubHk7XHJcbiAgICAgICAgICAgIGNvbnN0IGhhc1ZhbHVlID0gIUJhcnNhQXBpLkV4dC5pc0VtcHR5KHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgICBjb25zdCBlZGl0MCA9IGNhblNhdmUgJiYgZGlzYWJsZU9yUmVhZG9ubHkgIT09IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuRWRpdCA9IGVkaXQwICYmIGlzQWdlbnRBY3RpdmU7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuRG93bmxvYWQgPSAhdGhpcy5TZXR0aW5nLklzV29yZFZpZXdlciB8fCAoIWlzQWdlbnRBY3RpdmUgJiYgZWRpdDApO1xyXG4gICAgICAgICAgICB0aGlzLmNhblVwbG9hZCA9IHRoaXMuY2FuRG93bmxvYWQgJiYgY2FuU2F2ZSAmJiBkaXNhYmxlT3JSZWFkb25seSAhPT0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5oYXNGaWxlTmFtZSA9ICF0aGlzLmNvbnRleHQuU2V0dGluZy5Jc1dvcmRWaWV3ZXI7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuUmVtb3ZlID0gdGhpcy5jYW5Eb3dubG9hZCAmJiBjYW5TYXZlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5vZmZpY2VPbmxpbmUgPSBoYXNWYWx1ZSAmJiBjYW5TYXZlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlICYmIHRoaXMuY29udGV4dC5PZmZpY2VPbmxpbmU7XHJcbiAgICAgICAgICAgIHRoaXMudXNlV29yZEVkaXRvciA9IGhhc1ZhbHVlICYmIGNhblNhdmUgJiYgZGlzYWJsZU9yUmVhZG9ubHkgIT09IHRydWUgJiYgdGhpcy5jb250ZXh0LnVzZVdvcmRFZGl0b3I7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2NvbW1hbmRDbGlja0hhbmRsZXIoaXRlbUlkLCBrZXlib2FyZEV2ZW50Pyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNvbW1hbmRJZCA9IGl0ZW1JZDtcclxuXHJcbiAgICAgICAgbGV0IGZpbGVzID0gdGhpcy52YWx1ZTtcclxuICAgICAgICBpZiAoQmFyc2FBcGkuRXh0LmlzQXJyYXkoZmlsZXMpKSB7XHJcbiAgICAgICAgICAgIGZpbGVzID0gZmlsZXNbMF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBmaWxlSWQgPSBmaWxlcz8uSWQ7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnQ29tbWFuZFJlcXVlc3QnLCB0aGlzLCBjb21tYW5kSWQsIGZpbGVJZCwga2V5Ym9hcmRFdmVudCk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3JlZnJlc2goZnJvbVNlcnZlcj86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBvZmZpY2VPbmxpbmUgPSBmcm9tU2VydmVyID09PSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5maWxlTmFtZSA9ICcnO1xyXG5cclxuICAgICAgICBpZiAoQmFyc2FBcGkuRXh0LmlzRW1wdHkodGhpcy52YWx1ZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5oYXNQZGYgPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGZpbGVzID0gdGhpcy52YWx1ZTtcclxuICAgICAgICBpZiAoQmFyc2FBcGkuRXh0LmlzQXJyYXkoZmlsZXMpKSB7XHJcbiAgICAgICAgICAgIGZpbGVzID0gZmlsZXNbMF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBmaWxlSWQgPSBmaWxlcy5JZDtcclxuICAgICAgICBpZiAoIWZpbGVJZCB8fCBmaWxlcy5Jc0RlbGV0ZWQpIHtcclxuICAgICAgICAgICAgaWYgKGZpbGVzLklzRGVsZXRlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYXNQZGYgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmFsbGJhY2tMaW5rID0gYNin2YXaqdin2YYg2YbZhdin24zYtCDZgdin24zZhCDYr9ixINin24zZhiDZhdix2YjYsdqv2LEg2YjYrNmI2K8g2YbYr9in2LHYry5cclxuICAgICAgICAg2KjYsdin24wg2KjYp9iyINqp2LHYr9mGINmB2KfbjNmEINin2LIg2YTbjNmG2qkg2LLbjNixINin2LPYqtmB2KfYr9mHINqp2YbbjNivOiAgPC9icj4gPGEgaHJlZj0nJHtCYXJzYUFwaS5Db21tb24uRmlsZS5DcmVhdGVBdHRhY2htZW50VXJsKFxyXG4gICAgICAgICAgICAgZmlsZUlkLFxyXG4gICAgICAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgICAgICB0cnVlXHJcbiAgICAgICAgICl9Jz7Yr9in2YbZhNmI2K8g2YHYp9uM2YQg2KjYtdmI2LHYqiBwZGY8L2E+ICA8L2JyPiAgPGEgaHJlZj0nJHtCYXJzYUFwaS5Db21tb24uRmlsZS5DcmVhdGVBdHRhY2htZW50VXJsKFxyXG4gICAgICAgICAgICBmaWxlSWQsXHJcbiAgICAgICAgICAgIGZhbHNlLFxyXG4gICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICl9Jz7Yr9in2YbZhNmI2K8g2YHYp9uM2YQg2KjYtdmI2LHYqiDYqNi12YjYsdiqINin2LXZhNuMPC9hPmA7XHJcblxyXG4gICAgICAgIGlmICghQmFyc2FBcGkuRXh0LmlzSUUpIHtcclxuICAgICAgICAgICAgLy8gY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgLy8gICAgIGZhbGxiYWNrTGluazogdGhpcy5mYWxsYmFja0xpbmssXHJcbiAgICAgICAgICAgIC8vICAgICBwZGZPcGVuUGFyYW1zOiB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgdmlldzogJ0ZpdEgnLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIHNjcm9sbGJhcjogJzAnLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIHRvb2xiYXI6ICcwJyxcclxuICAgICAgICAgICAgLy8gICAgICAgICBzdGF0dXNiYXI6ICcwJyxcclxuICAgICAgICAgICAgLy8gICAgICAgICBtZXNzYWdlczogJzAnLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIG5hdnBhbmVzOiAnMCdcclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gfTtcclxuICAgICAgICAgICAgbGV0IGNvbnZlcnRUbyA9IGlzSW1hZ2UoZmlsZXMuVHlwZSkgPyBmaWxlcy5UeXBlIDogJyc7XHJcbiAgICAgICAgICAgIGNvbnZlcnRUbyA9ICdwZGYsZG9jLGRvY3gsd29yZCcuaW5kZXhPZihmaWxlcy5UeXBlKSA+IC0xID8gJ3BkZicgOiBjb252ZXJ0VG87XHJcblxyXG4gICAgICAgICAgICBpZiAoIWNvbnZlcnRUbykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaW5nbGVDb250cm9sID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2luZ2xlQ29udHJvbChmaWxlcyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zaW5nbGVDb250cm9sID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICB0aGlzLkRvd25sb2FkRmlsZUlkKGZpbGVJZCwgdHJ1ZSwgY29udmVydFRvLCBudWxsLCBvZmZpY2VPbmxpbmUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IHVybCA9IENvbW1vbi5GaWxlLkNyZWF0ZUF0dGFjaG1lbnRVcmwoZmlsZUlkLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuTm90UmVuZGVyUGRmID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF91cGxvYWRGaWxlKGZpbGVzOiBGaWxlW10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICAgICAgZmlsZXMuZm9yRWFjaCgoZmlsZSkgPT4ge1xyXG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3VuaWNGaWxlTmFtZScsICd4JyArIEJhcnNhQXBpLkNvbW1vbi5VdGlsLkdldE5ld01ldGFHdWlkKCkgKyAnOzs7JyArIGZpbGUubmFtZSk7XHJcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fdXBsb2FkU2VydmljZS51cGxvYWQoZm9ybURhdGEsIHRoaXMuU2V0dGluZy5Db250cm9sRmllbGREZWZJZCkucGlwZShcclxuICAgICAgICAgICAgdGFwKChyZXMpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVWYWx1ZShyZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF91cGRhdGVWYWx1ZShyZXM6IGFueVtdKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuU2V0dGluZy5WaWV3VHlwZSAhPT0gJ0xpbmVhckxpc3RCb3gnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2luZ2xlQ29udHJvbChyZXNbMF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZpcmVDb250ZXh0RXZlbnQoJ0NoYW5nZScsIHRoaXMuY29udGV4dCwgcmVzKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZVNpbmdsZUNvbnRyb2wodmFsOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoaXNJbWFnZSh2YWwuVHlwZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5zaW5nbGVGaWxlVGh1bWJuYWlsVXJsID0gZ2V0SW1hZ2VQYXRoKCdJRCcsICcnLCB2YWwuSWQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2luZ2xlRmlsZVRodW1ibmFpbFVybCA9IGdldEljb24odmFsLlR5cGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgX2hpZGVNYXNrKCk6IHZvaWQge1xyXG4gICAgICAgIEJhcnNhQXBpLlVsLkxvYWRpbmdNYXNrLlVubWFzayh0aGlzLl9lbC5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX21hc2soKTogdm9pZCB7XHJcbiAgICAgICAgQmFyc2FBcGkuVWwuTG9hZGluZ01hc2suTWFzayh0aGlzLl9lbC5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxufVxyXG5cclxuaW50ZXJmYWNlIFVpUGRmVmlld2VyU2V0dGluZyBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xyXG4gICAgU2hvd01vZGU6IHN0cmluZzsgLy8gMj0gYnV0dG9ubW9kZSAxPWRlZmF1bHRcclxuICAgIEhpZGVEZWxldGU6IGJvb2xlYW47XHJcbiAgICBIaWRlQXR0YWNoOiBib29sZWFuO1xyXG4gICAgSGlkZVJlZnJlc2g6IGJvb2xlYW47XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqdW50aWxJblZpZXc9XCJlbFwiPlxyXG4gICAgQHN3aXRjaCAocGFyYW1ldGVycz8uU2hvd01vZGUpIHsgQGNhc2UgKCcyJykge1xyXG4gICAgPGRpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9vbGJhcjsgY29udGV4dDogeyBkaWFsb2dNb2RlOiB0cnVlIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgfSBAZGVmYXVsdCB7XHJcbiAgICA8ZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b29sYmFyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXZpZXdcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgfSB9XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0b29sYmFyIGxldC1kaWFsb2dNb2RlPVwiZGlhbG9nTW9kZVwiPlxyXG4gICAgQGlmICgoZGlzYWJsZU9yUmVhZG9ubHkkIHwgYXN5bmMpICE9PSB0cnVlKSB7XHJcbiAgICA8ZmQtdG9vbGJhciBbY2xhc3MuZGlhbG9nTW9kZV09XCJkaWFsb2dNb2RlXCIgW3RyYW5zcGFyZW50XT1cInRydWVcIiBbc2hvdWxkT3ZlcmZsb3ddPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxmZC1maWxlLXVwbG9hZGVyXHJcbiAgICAgICAgICAgICN1cGxvYWRlclxyXG4gICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIlxyXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgW2lkXT1cImlkXCJcclxuICAgICAgICAgICAgW25hbWVdPVwiJ3BkZl8nICsgaWRcIlxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0F0dGFjaEZpbGUnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgW2J1dHRvbkxhYmVsXT1cIidBdHRhY2hGaWxlJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIFtidXR0b25BcmlhTGFiZWxdPVwiJ0F0dGFjaEZpbGUnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgW2FjY2VwdF09XCJ2YWxpZEV4dGVuc2lvblwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsZXNcIlxyXG4gICAgICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAoc2VsZWN0ZWRGaWxlc0NoYW5nZWQpPVwib25GaWxlU2VsZWN0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICBbY29udGVudERlbnNpdHldPVwiKGNvbnRlbnREZW5zaXR5JCB8IGFzeW5jKSEhXCJcclxuICAgICAgICA+PC9mZC1maWxlLXVwbG9hZGVyPlxyXG4gICAgICAgIEBpZiAoIXBhcmFtZXRlcnM/LkhpZGVEZWxldGUpIHtcclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKGNhbkRlbGV0ZSAmJiB2YWx1ZSlcIlxyXG4gICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZGVsZXRlXCJcclxuICAgICAgICAgICAgZ2x5cGg9XCJkZWxldGVcIlxyXG4gICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUoKVwiXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgIH0gQGlmICghcGFyYW1ldGVycz8uSGlkZUF0dGFjaCkge1xyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBnbHlwaD1cImF0dGFjaG1lbnRcIlxyXG4gICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblVwbG9hZFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ1cGxvYWRlci5vcGVuKClcIlxyXG4gICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICB9IEBpZiAoY2FuRWRpdCkge1xyXG4gICAgICAgIDxidXR0b24gZmQtdG9vbGJhci1pdGVtIGZkLWJ1dHRvbiBnbHlwaD1cImVkaXRcIiBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIiAoY2xpY2spPVwib25FZGl0KClcIj48L2J1dHRvbj5cclxuICAgICAgICB9IEBpZiAodXNlV29yZEVkaXRvcikge1xyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICBnbHlwaD1cImRvYy1hdHRhY2htZW50XCJcclxuICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIidFZGl0JyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkVkaXRJbldvcmQoKVwiXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgIH0gQGlmIChvZmZpY2VPbmxpbmUpIHtcclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgZ2x5cGg9XCJkb2MtYXR0YWNobWVudFwiXHJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCInT2ZmaWNlT25saW5lJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbk9mZmljZU9ubGluZSgkZXZlbnQpXCJcclxuICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgfSBAaWYgKGRpYWxvZ01vZGUpIHtcclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgW2dseXBoXT1cIidzaG93J1wiXHJcbiAgICAgICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCInbG93J1wiXHJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCIhZGlhbG9nTW9kZSA/ICcnIDogKCdWaWV3JyB8IGJiYlRyYW5zbGF0ZSlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25PcGVuUHJldmlld0luRGlhbG9nKClcIlxyXG4gICAgICAgICAgICBib2R5Q2xpY2tcclxuICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgfSBAaWYgKGNhbkRvd25sb2FkKSB7XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCInbG93J1wiXHJcbiAgICAgICAgICAgIFtnbHlwaF09XCInZG93bmxvYWQnXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIiFkaWFsb2dNb2RlID8gJycgOiAoJ0Rvd25sb2FkJyB8IGJiYlRyYW5zbGF0ZSlcIlxyXG4gICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25Eb3dubG9hZCgpXCJcclxuICAgICAgICAgICAgYm9keUNsaWNrXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgIH0gQGlmICghcGFyYW1ldGVycz8uSGlkZVJlZnJlc2gpIHtcclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCInbG93J1wiXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgW2dseXBoXT1cImRpYWxvZ01vZGUgPyBudWxsIDogJ3JlZnJlc2gnXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIiFkaWFsb2dNb2RlID8gJycgOiAoJ1JlZnJlc2gnIHwgYmJiVHJhbnNsYXRlKVwiXHJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgIGJvZHlDbGlja1xyXG4gICAgICAgICAgICAoY2xpY2spPVwib25SZWZyZXNoKClcIlxyXG4gICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPGZkLWJ1c3ktaW5kaWNhdG9yXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBbbG9hZGluZ109XCIodXBsb2FkaW5nU3RhdGUkIHwgYXN5bmMpPy51cGxvYWRpbmcgPT09IHRydWVcIlxyXG4gICAgICAgID48L2ZkLWJ1c3ktaW5kaWNhdG9yPlxyXG4gICAgPC9mZC10b29sYmFyPlxyXG4gICAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3ByZXZpZXc+XHJcbiAgICBAaWYgKGlzTW9iaWxlKSB7XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgW3N0eWxlLmJvcmRlcl09XCIhYmxvYlVybCA/ICcuMDYyNXJlbSBzb2xpZCB2YXIoLS1zYXBHcm91cF9UaXRsZUJvcmRlckNvbG9yKScgOiBudWxsXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogY2FsYyg3MHZoIC0gNDBweCk7IHBvc2l0aW9uOiByZWxhdGl2ZVwiXHJcbiAgICA+XHJcbiAgICAgICAgPGJzdS1ibG9iLXZpZXdlciBbZmlsZV09XCJ2YWx1ZVwiIFtzdHlsZS53aWR0aF09XCJ3aWR0aFwiIFtkZWNyZW1lbnRdPVwiJzI1cHgnXCI+PC9ic3UtYmxvYi12aWV3ZXI+XHJcbiAgICAgICAgPCEtLSA8bmcyLXBkZmpzLXZpZXdlclxyXG4gICAgICAgICAgICBmaWxsRW1wdHlTcGFjZVxyXG4gICAgICAgICAgICBbY29udGFpbmVyRG9tXT1cImZvcm1Db250YWluZXJcIlxyXG4gICAgICAgICAgICBbZG9udFVzZVRvcEJvdW5kXT1cInRydWVcIlxyXG4gICAgICAgICAgICAjcGRmVmlld2VyT25EZW1hbmRcclxuICAgICAgICAgICAgW2V4dGVybmFsV2luZG93XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW2Rvd25sb2FkRmlsZU5hbWVdPVwiYmxvYlVybFwiXHJcbiAgICAgICAgICAgIFtvcGVuRmlsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFt2aWV3Qm9va21hcmtdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbc2hvd1NwaW5uZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtkb3dubG9hZF09XCJ0cnVlXCJcclxuICAgICAgICA+PC9uZzItcGRmanMtdmlld2VyPiAtLT5cclxuICAgIDwvZGl2PlxyXG4gICAgfSBAZWxzZSB7IEBpZiAoaGFzUGRmKSB7XHJcbiAgICA8b2JqZWN0XHJcbiAgICAgICAgZmlsbEVtcHR5U3BhY2VcclxuICAgICAgICBbY29udGFpbmVyRG9tXT1cImZvcm1Db250YWluZXJcIlxyXG4gICAgICAgIFtkb250VXNlVG9wQm91bmRdPVwidHJ1ZVwiXHJcbiAgICAgICAgc3R5bGU9XCJmbGV4LWdyb3c6IDFcIlxyXG4gICAgICAgIFthdHRyLmRhdGFdPVwidmFsdWVVcmxcIlxyXG4gICAgICAgIHR5cGU9XCJhcHBsaWNhdGlvbi9wZGZcIlxyXG4gICAgICAgIHdpZHRoPVwiMTAwJVwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJmb3JtSGVpZ2h0IC0gMzAgPiAwID8gZm9ybUhlaWdodCAtIDMwICsgJ3B4JyA6ICcxMDB2aCdcIlxyXG4gICAgICAgIFthdHRyLmh0bWxdPVwiZmFsbGJhY2tMaW5rXCJcclxuICAgID48L29iamVjdD5cclxuICAgIH0gQGVsc2UgeyBAaWYgKHNpbmdsZUNvbnRyb2wgJiYgdmFsdWUgJiYgIXZhbHVlLklzRGVsZXRlZCkge1xyXG4gICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXhcIj5cclxuICAgICAgICBAaWYgKHNpbmdsZUZpbGVUaHVtYm5haWxVcmwpIHtcclxuICAgICAgICA8aW1nIFtzcmNdPVwic2luZ2xlRmlsZVRodW1ibmFpbFVybFwiIC8+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxmZC1vYmplY3QtaWRlbnRpZmllcj5cclxuICAgICAgICAgICAge3sgdmFsdWUuRmlsZU5hbWUgfX1cclxuICAgICAgICA8L2ZkLW9iamVjdC1pZGVudGlmaWVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICB9IEBlbHNlIHtcclxuICAgIDxkaXYgZmlsbEVtcHR5U3BhY2UgW2NvbnRhaW5lckRvbV09XCJmb3JtQ29udGFpbmVyXCIgW2RvbnRVc2VUb3BCb3VuZF09XCJ0cnVlXCIgY2xhc3M9XCJoYXRjaEJhY2tncm91bmRcIj48L2Rpdj5cclxuICAgIH0gfSB9XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgbGV0LWRpYWxvZyBsZXQtZGlhbG9nQ29uZmlnPVwiZGlhbG9nQ29uZmlnXCIgI2RpYWxvZ1RwbD5cclxuICAgIDxmZC1kaWFsb2cgW2RpYWxvZ0NvbmZpZ109XCJkaWFsb2dDb25maWdcIiBbZGlhbG9nUmVmXT1cImRpYWxvZ1wiIGNsYXNzPVwidmVydGljYWxcIj5cclxuICAgICAgICA8ZmQtZGlhbG9nLWhlYWRlcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1sZWZ0PlxyXG4gICAgICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGZkLXRpdGxlPmVkaXQgaW4gd29yZDwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmZC1iYXItcmlnaHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXIgYXJpYUxhYmVsPVwiY2xvc2VcIiBnbHlwaD1cImRlY2xpbmVcIiAoY2xpY2spPVwib25EaWFsb2dDbG9zZSgpXCI+PC9mZC1idXR0b24tYmFyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxyXG4gICAgICAgIDxmZC1kaWFsb2ctYm9keT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXZpZXdcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2ZkLWRpYWxvZy1ib2R5PlxyXG4gICAgPC9mZC1kaWFsb2c+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
269
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktcGRmLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS1wZGYtdmlld2VyL3VpLXBkZi12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktcGRmLXZpZXdlci91aS1wZGYtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFLWCxTQUFTLEVBQ1QsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFrQixhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsUUFBUSxFQUNSLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsT0FBTyxFQUNQLFlBQVksRUFDWixPQUFPLEVBQ1AsaUJBQWlCLEVBR3BCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVV6RSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsNEJBQTRCO0lBUnRFOztRQVdxQyxlQUFVLEdBQWtCLE1BQU0sQ0FBQztRQTJCcEUsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBUWYsbUJBQWMsR0FBa0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBdVF6RDtJQXRRRyxRQUFRO1FBQ0osSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQztRQUMzRCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIs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TyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxHQUFRO1FBQ2hDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakUsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsc0JBQXNCLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBQ0wsQ0FBQztJQUNPLFNBQVM7UUFDYixRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBQ08sS0FBSztRQUNULFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7K0dBN1NRLG9CQUFvQjttR0FBcEIsb0JBQW9CLDZHQUpsQixDQUFDLGFBQWEsQ0FBQyx5UkNoQzlCLHkzTkEwTEE7OzRGRHRKYSxvQkFBb0I7a0JBUmhDLFNBQVM7K0JBQ0ksbUJBQW1CLGFBR2xCLENBQUMsYUFBYSxDQUFDLG1CQUNULHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSzs4QkFHZSxrQkFBa0I7c0JBQWpELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNOLFVBQVU7c0JBQWpDLFNBQVM7dUJBQUMsV0FBVztnQkFDVyxVQUFVO3NCQUExQyxXQUFXO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENvbXBvbmVudCxcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT25Jbml0LFxyXG4gICAgU2ltcGxlQ2hhbmdlcyxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgaW5qZWN0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNhZmVSZXNvdXJjZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSwgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgICBCYXJzYUFwaSxcclxuICAgIFVwbG9hZFNlcnZpY2UsXHJcbiAgICBGaWxlc1ZhbGlkYXRpb25IZWxwZXIsXHJcbiAgICBpc0ltYWdlLFxyXG4gICAgZ2V0SW1hZ2VQYXRoLFxyXG4gICAgZ2V0SWNvbixcclxuICAgIGdldFZhbGlkRXh0ZW5zaW9uLFxyXG4gICAgSVVwbG9hZGluZ1N0YXRlLFxyXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbFxyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgRGV2aWNlSW5mb0ZpZWxkQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2RldmljZS1pbmZvLWZpZWxkLWJhc2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JzdS11aS1wZGYtdmlld2VyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS1wZGYtdmlld2VyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3VpLXBkZi12aWV3ZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW1VwbG9hZFNlcnZpY2VdLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlQZGZWaWV3ZXJDb21wb25lbnQgZXh0ZW5kcyBEZXZpY2VJbmZvRmllbGRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gICAgQFZpZXdDaGlsZCgncGRmVmlld2VyT25EZW1hbmQnKSBfcGRmVmlld2VyT25EZW1hbmQ6IGFueTtcclxuICAgIEBWaWV3Q2hpbGQoJ2RpYWxvZ1RwbCcpIF9kaWFsb2dUcGw6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1pbi1oZWlnaHQnKSBfbWluaGVpZ2h0OiBzdHJpbmcgfCBudWxsID0gJzcwdmgnO1xyXG4gICAgZmlsZU5hbWU6IHN0cmluZztcclxuICAgIGZhbGxiYWNrTGluazogYW55O1xyXG4gICAgY2FuTm90UmVuZGVyUGRmOiBib29sZWFuO1xyXG4gICAgdmFsdWVVcmw6IFNhZmVSZXNvdXJjZVVybCB8IG51bGw7XHJcbiAgICBoYXNQZGY6IGJvb2xlYW47XHJcbiAgICBwZGZPYmplY3Q6IHtcclxuICAgICAgICBhdXRvRWw6IHtcclxuICAgICAgICAgICAgdGFnOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIGRhdGE6IHN0cmluZztcclxuICAgICAgICAgICAgdHlwZTogc3RyaW5nO1xyXG4gICAgICAgICAgICB3aWR0aDogc3RyaW5nO1xyXG4gICAgICAgICAgICBoZWlnaHQ6IHN0cmluZztcclxuICAgICAgICAgICAgaHRtbDogYW55O1xyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG5cclxuICAgIHVwbG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxJVXBsb2FkaW5nU3RhdGU+O1xyXG4gICAgZmlsZXM6IEZpbGVbXTtcclxuICAgIGNvbnRlbnREZW5zaXR5JDogT2JzZXJ2YWJsZTxDb250ZW50RGVuc2l0eT47XHJcbiAgICBvZmZpY2VPbmxpbmU6IGFueTtcclxuICAgIHVzZVdvcmRFZGl0b3I6IGFueTtcclxuICAgIGhhc0ZpbGVOYW1lOiBib29sZWFuO1xyXG4gICAgY2FuUmVtb3ZlOiBib29sZWFuO1xyXG4gICAgY2FuVXBsb2FkOiBib29sZWFuO1xyXG4gICAgY2FuRWRpdDogYm9vbGVhbjtcclxuICAgIGNhbkRvd25sb2FkOiBib29sZWFuO1xyXG4gICAgY2FuRGVsZXRlID0gdHJ1ZTtcclxuICAgIGNhblNhdmUgPSB0cnVlO1xyXG4gICAgdmFsaWRFeHRlbnNpb246IHN0cmluZztcclxuICAgIGZpbGVzVmFsaWRhdGlvbkhlbHBlcjogRmlsZXNWYWxpZGF0aW9uSGVscGVyO1xyXG4gICAgc2luZ2xlQ29udHJvbDogYm9vbGVhbjtcclxuICAgIHNpbmdsZUZpbGVUaHVtYm5haWxVcmw6IHN0cmluZztcclxuICAgIHBhcmVudEhlaWdodDogbnVtYmVyO1xyXG4gICAgYmxvYlVybDogc3RyaW5nO1xyXG4gICAgcGFyYW1ldGVyZXM6IFVpUGRmVmlld2VyU2V0dGluZztcclxuICAgIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlID0gaW5qZWN0KERpYWxvZ1NlcnZpY2UpO1xyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy51cGxvYWRpbmdTdGF0ZSQgPSB0aGlzLl91cGxvYWRTZXJ2aWNlLnVwbG9hZGluZ1N0YXRlJDtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHN3aXRjaCAodGhpcy5wYXJhbWV0ZXJzPy5TaG93TW9kZSkge1xyXG4gICAgICAgICAgICBjYXNlICcyJzpcclxuICAgICAgICAgICAgICAgIHRoaXMuX21pbmhlaWdodCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fbWluaGVpZ2h0ID0gdGhpcy5pbmxpbmVFZGl0ID8gJ2F1dG8nIDogdGhpcy5fbWluaGVpZ2h0O1xyXG4gICAgICAgIHRoaXMudmFsdWUkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoJC5zdWJzY3JpYmUoKGZyb21TZXJ2ZXI6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaChmcm9tU2VydmVyKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmZpbGVzVmFsaWRhdGlvbkhlbHBlciA9IG5ldyBGaWxlc1ZhbGlkYXRpb25IZWxwZXIoXHJcbiAgICAgICAgICAgIHRoaXMuU2V0dGluZy5NYXhGaWxlQ291bnQsXHJcbiAgICAgICAgICAgIHRoaXMuU2V0dGluZy5NYXhGaWxlU2l6ZUtiLFxyXG4gICAgICAgICAgICB0aGlzLlNldHRpbmcuTWF4VG90YWxGaWxlU2l6ZUtiXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLl9yZWZyZXNoQnV0dG9ucygpO1xyXG4gICAgICAgIHRoaXMuX3JlZnJlc2goKTtcclxuICAgICAgICB0aGlzLnZhbGlkRXh0ZW5zaW9uID0gdGhpcy5jb250ZXh0LnVzZVdvcmRFZGl0b3JcclxuICAgICAgICAgICAgPyAnLmRvYywuZG9jeCxhcHBsaWNhdGlvbi9tc3dvcmQsYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnXHJcbiAgICAgICAgICAgIDogZ2V0VmFsaWRFeHRlbnNpb24odGhpcy5TZXR0aW5nLlZhbGlkRXh0ZW5zaW9ucyk7XHJcbiAgICAgICAgdGhpcy5zaW5nbGVDb250cm9sID0gdGhpcy5TZXR0aW5nLlZpZXdUeXBlID09PSAnU2luZ2xlRmlsZUNvbnRyb2wnO1xyXG4gICAgfVxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xyXG4gICAgICAgIGNvbnN0IHsgZm9ybUhlaWdodCB9ID0gY2hhbmdlcztcclxuICAgICAgICBpZiAoZm9ybUhlaWdodCAmJiAhZm9ybUhlaWdodC5maXJzdENoYW5nZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG9uRWRpdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdFZGl0Jyk7XHJcbiAgICB9XHJcbiAgICBvblZpZXcoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBlID0geyBjdHJsS2V5OiBldmVudC5jdHJsS2V5IH07XHJcbiAgICAgICAgdGhpcy5fY29tbWFuZENsaWNrSGFuZGxlcignT09WaWV3JywgZSk7XHJcbiAgICB9XHJcbiAgICBvbkRvd25sb2FkKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NvbW1hbmRDbGlja0hhbmRsZXIoJ0Rvd25sb2FkJyk7XHJcbiAgICB9XHJcbiAgICBvbkZpbGVTZWxlY3Rpb24oZmlsZXM6IEZpbGVbXSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3VwbG9hZFRvU2VydmVyKGZpbGVzKTtcclxuICAgIH1cclxuICAgIG9uRGVsZXRlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NvbW1hbmRDbGlja0hhbmRsZXIoJ0RlbGV0ZScpO1xyXG4gICAgfVxyXG4gICAgb25FZGl0SW5Xb3JkKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NvbW1hbmRDbGlja0hhbmRsZXIoJ09ERWRpdCcpO1xyXG4gICAgfVxyXG4gICAgb25PZmZpY2VPbmxpbmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBlID0geyBjdHJsS2V5OiBldmVudC5jdHJsS2V5IH07XHJcblxyXG4gICAgICAgIHRoaXMuX2NvbW1hbmRDbGlja0hhbmRsZXIoJ09PRWRpdCcsIGUpO1xyXG4gICAgfVxyXG4gICAgb25SZWZyZXNoKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NvbW1hbmRDbGlja0hhbmRsZXIoJ1JlZnJlc2gnKTtcclxuICAgIH1cclxuICAgIERvd25sb2FkRmlsZUlkKGZpbGVJZCwgdmlld0luQnJvd3NlciwgY29udmVydFRvLCBmb3JPY3gsIGlzT2ZmaWNlT25saW5lKTogdm9pZCB7XHJcbiAgICAgICAgLy8gaWYgKCFpc0ZpcmVmb3goKSkge1xyXG4gICAgICAgIC8vICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMuX21hc2soKTtcclxuICAgICAgICAvLyAgICAgfSwgMCk7XHJcbiAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICBCYXJzYUFwaS5Db21tb24uRmlsZS5Eb3dubG9hZEZpbGVDb250ZW50LmJpbmQodGhpcykoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGZpbGVJZCxcclxuICAgICAgICAgICAgICAgIGZpbGVVcmw6IG51bGwsXHJcbiAgICAgICAgICAgICAgICB2aWV3SW5Ccm93c2VyLFxyXG4gICAgICAgICAgICAgICAgY29udmVydFRvLFxyXG4gICAgICAgICAgICAgICAgaXNPZmZpY2VPbmxpbmUsXHJcbiAgICAgICAgICAgICAgICBmb3JPY3hcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Rvd25sb2FkRmlsZUlkQ29tcGxldGVkKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLl9oaWRlTWFzaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuX2hpZGVNYXNrKCk7XHJcbiAgICAgICAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgICAgICAgIGFsZXJ0KGVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBvbk9wZW5QcmV2aWV3SW5EaWFsb2coKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKHRoaXMuX2RpYWxvZ1RwbCwge1xyXG4gICAgICAgICAgICByZXNwb25zaXZlUGFkZGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgbW9iaWxlOiB0cnVlLFxyXG4gICAgICAgICAgICBhcmlhTGFiZWxsZWRCeTogJ21hcCcsXHJcbiAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeTogJ2Nob29zZSBsb2NhdGlvbicsXHJcbiAgICAgICAgICAgIGZvY3VzVHJhcHBlZDogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgb25EaWFsb2dDbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfZG93bmxvYWRGaWxlSWRDb21wbGV0ZWQocmVzcG9uc2UpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBibG9iID0gQmFyc2FBcGkuQ29tbW9uLkZpbGUuQjY0dG9CbG9iKHJlc3BvbnNlLmNvbnRlbnQsIHJlc3BvbnNlLmNvbnRlbnRUeXBlKTtcclxuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMIHx8IHdpbmRvdy53ZWJraXRVUkw7XHJcbiAgICAgICAgdGhpcy5ibG9iVXJsID0gdXJsLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICBpZiAodGhpcy5pc01vYmlsZSkge1xyXG4gICAgICAgICAgICAvLyB0aGlzLl9wZGZWaWV3ZXJPbkRlbWFuZC5wZGZTcmMgPSB0aGlzLmJsb2JVcmw7IC8vIHBkZlNyYyBjYW4gYmUgQmxvYiBvciBVaW50OEFycmF5XHJcbiAgICAgICAgICAgIC8vIHRoaXMuX3BkZlZpZXdlck9uRGVtYW5kLnJlZnJlc2goKTsgLy8gQXNrIHBkZiB2aWV3ZXIgdG8gbG9hZC9yZWZyZXNoIHBkZlxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnZhbHVlVXJsID0gdGhpcy5fZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLmJsb2JVcmwpO1xyXG4gICAgICAgIHRoaXMuaGFzUGRmID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfdXBsb2FkVG9TZXJ2ZXIoZmlsZXM6IEZpbGVbXSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZmlsZXNWYWxpZGF0aW9uSGVscGVyLnZhbGlkYXRlRmlsZXMoZmlsZXMpO1xyXG4gICAgICAgIHRoaXMuX3VwbG9hZEZpbGUoZmlsZXMpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3JlZnJlc2hCdXR0b25zKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3JlZnJlc2hCdXR0b25zSGVscGVyKGZhbHNlKTtcclxuICAgICAgICBCYXJzYUFwaS5Db21tb24uQXN5bmMuV2F0ZXJmYWxsKFxyXG4gICAgICAgICAgICAnQ29tbW9uLkZpbGUuSXNBZ2VudEFjdGl2ZScsXHJcbiAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgIC8vIENvbW1vbi5GaWxlQWdlbnQuSXNBZ2VudEFjdGl2ZS5iaW5kKENvbW1vbi5GaWxlQWdlbnQpLFxyXG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkFnZW50SGVscGVyLkluaXQuYmluZChCYXJzYUFwaS5Db21tb24uQWdlbnRIZWxwZXIpXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIChlcnIsIHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWdlbnRJc0FjdGl2ZSA9IHJlc3VsdCA9PT0gJ09LJztcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hCdXR0b25zSGVscGVyKGFnZW50SXNBY3RpdmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfcmVmcmVzaEJ1dHRvbnNIZWxwZXIoaXNBZ2VudEFjdGl2ZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZU9yUmVhZG9ubHkkLnN1YnNjcmliZSgoZGlzYWJsZU9yUmVhZG9ubHkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2FuU2F2ZSA9IHRoaXMuY2FuU2F2ZTtcclxuICAgICAgICAgICAgdGhpcy5jYW5EZWxldGUgPSAhZGlzYWJsZU9yUmVhZG9ubHk7XHJcbiAgICAgICAgICAgIGNvbnN0IGhhc1ZhbHVlID0gIUJhcnNhQXBpLkV4dC5pc0VtcHR5KHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgICBjb25zdCBlZGl0MCA9IGNhblNhdmUgJiYgZGlzYWJsZU9yUmVhZG9ubHkgIT09IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuRWRpdCA9IGVkaXQwICYmIGlzQWdlbnRBY3RpdmU7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuRG93bmxvYWQgPSAhdGhpcy5TZXR0aW5nLklzV29yZFZpZXdlciB8fCAoIWlzQWdlbnRBY3RpdmUgJiYgZWRpdDApO1xyXG4gICAgICAgICAgICB0aGlzLmNhblVwbG9hZCA9IHRoaXMuY2FuRG93bmxvYWQgJiYgY2FuU2F2ZSAmJiBkaXNhYmxlT3JSZWFkb25seSAhPT0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5oYXNGaWxlTmFtZSA9ICF0aGlzLmNvbnRleHQuU2V0dGluZy5Jc1dvcmRWaWV3ZXI7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuUmVtb3ZlID0gdGhpcy5jYW5Eb3dubG9hZCAmJiBjYW5TYXZlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5vZmZpY2VPbmxpbmUgPSBoYXNWYWx1ZSAmJiBjYW5TYXZlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlICYmIHRoaXMuY29udGV4dC5PZmZpY2VPbmxpbmU7XHJcbiAgICAgICAgICAgIHRoaXMudXNlV29yZEVkaXRvciA9IGhhc1ZhbHVlICYmIGNhblNhdmUgJiYgZGlzYWJsZU9yUmVhZG9ubHkgIT09IHRydWUgJiYgdGhpcy5jb250ZXh0LnVzZVdvcmRFZGl0b3I7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2NvbW1hbmRDbGlja0hhbmRsZXIoaXRlbUlkLCBrZXlib2FyZEV2ZW50Pyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNvbW1hbmRJZCA9IGl0ZW1JZDtcclxuXHJcbiAgICAgICAgbGV0IGZpbGVzID0gdGhpcy52YWx1ZTtcclxuICAgICAgICBpZiAoQmFyc2FBcGkuRXh0LmlzQXJyYXkoZmlsZXMpKSB7XHJcbiAgICAgICAgICAgIGZpbGVzID0gZmlsZXNbMF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBmaWxlSWQgPSBmaWxlcz8uSWQ7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnQ29tbWFuZFJlcXVlc3QnLCB0aGlzLCBjb21tYW5kSWQsIGZpbGVJZCwga2V5Ym9hcmRFdmVudCk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3JlZnJlc2goZnJvbVNlcnZlcj86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBvZmZpY2VPbmxpbmUgPSBmcm9tU2VydmVyID09PSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5maWxlTmFtZSA9ICcnO1xyXG5cclxuICAgICAgICBpZiAoQmFyc2FBcGkuRXh0LmlzRW1wdHkodGhpcy52YWx1ZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5oYXNQZGYgPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGZpbGVzID0gdGhpcy52YWx1ZTtcclxuICAgICAgICBpZiAoQmFyc2FBcGkuRXh0LmlzQXJyYXkoZmlsZXMpKSB7XHJcbiAgICAgICAgICAgIGZpbGVzID0gZmlsZXNbMF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBmaWxlSWQgPSBmaWxlcy5JZDtcclxuICAgICAgICBpZiAoIWZpbGVJZCB8fCBmaWxlcy5Jc0RlbGV0ZWQpIHtcclxuICAgICAgICAgICAgaWYgKGZpbGVzLklzRGVsZXRlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYXNQZGYgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmFsbGJhY2tMaW5rID0gYNin2YXaqdin2YYg2YbZhdin24zYtCDZgdin24zZhCDYr9ixINin24zZhiDZhdix2YjYsdqv2LEg2YjYrNmI2K8g2YbYr9in2LHYry5cclxuICAgICAgICAg2KjYsdin24wg2KjYp9iyINqp2LHYr9mGINmB2KfbjNmEINin2LIg2YTbjNmG2qkg2LLbjNixINin2LPYqtmB2KfYr9mHINqp2YbbjNivOiAgPC9icj4gPGEgaHJlZj0nJHtCYXJzYUFwaS5Db21tb24uRmlsZS5DcmVhdGVBdHRhY2htZW50VXJsKFxyXG4gICAgICAgICAgICAgZmlsZUlkLFxyXG4gICAgICAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgICAgICB0cnVlXHJcbiAgICAgICAgICl9Jz7Yr9in2YbZhNmI2K8g2YHYp9uM2YQg2KjYtdmI2LHYqiBwZGY8L2E+ICA8L2JyPiAgPGEgaHJlZj0nJHtCYXJzYUFwaS5Db21tb24uRmlsZS5DcmVhdGVBdHRhY2htZW50VXJsKFxyXG4gICAgICAgICAgICBmaWxlSWQsXHJcbiAgICAgICAgICAgIGZhbHNlLFxyXG4gICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICl9Jz7Yr9in2YbZhNmI2K8g2YHYp9uM2YQg2KjYtdmI2LHYqiDYqNi12YjYsdiqINin2LXZhNuMPC9hPmA7XHJcblxyXG4gICAgICAgIGlmICghQmFyc2FBcGkuRXh0LmlzSUUpIHtcclxuICAgICAgICAgICAgLy8gY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgLy8gICAgIGZhbGxiYWNrTGluazogdGhpcy5mYWxsYmFja0xpbmssXHJcbiAgICAgICAgICAgIC8vICAgICBwZGZPcGVuUGFyYW1zOiB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgdmlldzogJ0ZpdEgnLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIHNjcm9sbGJhcjogJzAnLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIHRvb2xiYXI6ICcwJyxcclxuICAgICAgICAgICAgLy8gICAgICAgICBzdGF0dXNiYXI6ICcwJyxcclxuICAgICAgICAgICAgLy8gICAgICAgICBtZXNzYWdlczogJzAnLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIG5hdnBhbmVzOiAnMCdcclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gfTtcclxuICAgICAgICAgICAgbGV0IGNvbnZlcnRUbyA9IGlzSW1hZ2UoZmlsZXMuVHlwZSkgPyBmaWxlcy5UeXBlIDogJyc7XHJcbiAgICAgICAgICAgIGNvbnZlcnRUbyA9ICdwZGYsZG9jLGRvY3gsd29yZCcuaW5kZXhPZihmaWxlcy5UeXBlKSA+IC0xID8gJ3BkZicgOiBjb252ZXJ0VG87XHJcblxyXG4gICAgICAgICAgICBpZiAoIWNvbnZlcnRUbykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaW5nbGVDb250cm9sID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2luZ2xlQ29udHJvbChmaWxlcyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zaW5nbGVDb250cm9sID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICB0aGlzLkRvd25sb2FkRmlsZUlkKGZpbGVJZCwgdHJ1ZSwgY29udmVydFRvLCBudWxsLCBvZmZpY2VPbmxpbmUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IHVybCA9IENvbW1vbi5GaWxlLkNyZWF0ZUF0dGFjaG1lbnRVcmwoZmlsZUlkLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuTm90UmVuZGVyUGRmID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF91cGxvYWRGaWxlKGZpbGVzOiBGaWxlW10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICAgICAgZmlsZXMuZm9yRWFjaCgoZmlsZSkgPT4ge1xyXG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3VuaWNGaWxlTmFtZScsICd4JyArIEJhcnNhQXBpLkNvbW1vbi5VdGlsLkdldE5ld01ldGFHdWlkKCkgKyAnOzs7JyArIGZpbGUubmFtZSk7XHJcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fdXBsb2FkU2VydmljZS51cGxvYWQoZm9ybURhdGEsIHRoaXMuU2V0dGluZy5Db250cm9sRmllbGREZWZJZCkucGlwZShcclxuICAgICAgICAgICAgdGFwKChyZXMpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVWYWx1ZShyZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF91cGRhdGVWYWx1ZShyZXM6IGFueVtdKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuU2V0dGluZy5WaWV3VHlwZSAhPT0gJ0xpbmVhckxpc3RCb3gnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2luZ2xlQ29udHJvbChyZXNbMF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZpcmVDb250ZXh0RXZlbnQoJ0NoYW5nZScsIHRoaXMuY29udGV4dCwgcmVzKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZVNpbmdsZUNvbnRyb2wodmFsOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoaXNJbWFnZSh2YWwuVHlwZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5zaW5nbGVGaWxlVGh1bWJuYWlsVXJsID0gZ2V0SW1hZ2VQYXRoKCdJRCcsICcnLCB2YWwuSWQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2luZ2xlRmlsZVRodW1ibmFpbFVybCA9IGdldEljb24odmFsLlR5cGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgX2hpZGVNYXNrKCk6IHZvaWQge1xyXG4gICAgICAgIEJhcnNhQXBpLlVsLkxvYWRpbmdNYXNrLlVubWFzayh0aGlzLl9lbC5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX21hc2soKTogdm9pZCB7XHJcbiAgICAgICAgQmFyc2FBcGkuVWwuTG9hZGluZ01hc2suTWFzayh0aGlzLl9lbC5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxufVxyXG5cclxuaW50ZXJmYWNlIFVpUGRmVmlld2VyU2V0dGluZyBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xyXG4gICAgU2hvd01vZGU6IHN0cmluZzsgLy8gMj0gYnV0dG9ubW9kZSAxPWRlZmF1bHRcclxuICAgIEhpZGVEZWxldGU6IGJvb2xlYW47XHJcbiAgICBIaWRlQXR0YWNoOiBib29sZWFuO1xyXG4gICAgSGlkZVJlZnJlc2g6IGJvb2xlYW47XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqdW50aWxJblZpZXc9XCJlbFwiPlxyXG4gICAgQHN3aXRjaCAocGFyYW1ldGVycz8uU2hvd01vZGUpIHsgQGNhc2UgKCcyJykge1xyXG4gICAgPGRpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9vbGJhcjsgY29udGV4dDogeyBkaWFsb2dNb2RlOiB0cnVlIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgfSBAZGVmYXVsdCB7XHJcbiAgICA8ZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b29sYmFyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXZpZXdcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgfSB9XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0b29sYmFyIGxldC1kaWFsb2dNb2RlPVwiZGlhbG9nTW9kZVwiPlxyXG4gICAgQGlmICgoZGlzYWJsZU9yUmVhZG9ubHkkIHwgYXN5bmMpICE9PSB0cnVlKSB7XHJcbiAgICA8ZmQtdG9vbGJhciBbY2xhc3MuZGlhbG9nTW9kZV09XCJkaWFsb2dNb2RlXCIgW3RyYW5zcGFyZW50XT1cInRydWVcIiBbc2hvdWxkT3ZlcmZsb3ddPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxmZC1maWxlLXVwbG9hZGVyXHJcbiAgICAgICAgICAgICN1cGxvYWRlclxyXG4gICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIlxyXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgW2lkXT1cImlkXCJcclxuICAgICAgICAgICAgW25hbWVdPVwiJ3BkZl8nICsgaWRcIlxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0F0dGFjaEZpbGUnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgW2J1dHRvbkxhYmVsXT1cIidBdHRhY2hGaWxlJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIFtidXR0b25BcmlhTGFiZWxdPVwiJ0F0dGFjaEZpbGUnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgW2FjY2VwdF09XCJ2YWxpZEV4dGVuc2lvblwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsZXNcIlxyXG4gICAgICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAoc2VsZWN0ZWRGaWxlc0NoYW5nZWQpPVwib25GaWxlU2VsZWN0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICBbY29udGVudERlbnNpdHldPVwiKGNvbnRlbnREZW5zaXR5JCB8IGFzeW5jKSEhXCJcclxuICAgICAgICA+PC9mZC1maWxlLXVwbG9hZGVyPlxyXG4gICAgICAgIEBpZiAoIXBhcmFtZXRlcnM/LkhpZGVEZWxldGUpIHtcclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKGNhbkRlbGV0ZSAmJiB2YWx1ZSlcIlxyXG4gICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZGVsZXRlXCJcclxuICAgICAgICAgICAgZ2x5cGg9XCJkZWxldGVcIlxyXG4gICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUoKVwiXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgIH0gQGlmICghcGFyYW1ldGVycz8uSGlkZUF0dGFjaCkge1xyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBnbHlwaD1cImF0dGFjaG1lbnRcIlxyXG4gICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblVwbG9hZFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ1cGxvYWRlci5vcGVuKClcIlxyXG4gICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICB9IEBpZiAoY2FuRWRpdCkge1xyXG4gICAgICAgIDxidXR0b24gZmQtdG9vbGJhci1pdGVtIGZkLWJ1dHRvbiBnbHlwaD1cImVkaXRcIiBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIiAoY2xpY2spPVwib25FZGl0KClcIj48L2J1dHRvbj5cclxuICAgICAgICB9IEBpZiAodXNlV29yZEVkaXRvcikge1xyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICBnbHlwaD1cImRvYy1hdHRhY2htZW50XCJcclxuICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIidFZGl0JyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkVkaXRJbldvcmQoKVwiXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgIH0gQGlmIChvZmZpY2VPbmxpbmUpIHtcclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgZ2x5cGg9XCJkb2MtYXR0YWNobWVudFwiXHJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCInT2ZmaWNlT25saW5lJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbk9mZmljZU9ubGluZSgkZXZlbnQpXCJcclxuICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgfSBAaWYgKGRpYWxvZ01vZGUpIHtcclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgW2dseXBoXT1cIidzaG93J1wiXHJcbiAgICAgICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCInbG93J1wiXHJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCIhZGlhbG9nTW9kZSA/ICcnIDogKCdWaWV3JyB8IGJiYlRyYW5zbGF0ZSlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25PcGVuUHJldmlld0luRGlhbG9nKClcIlxyXG4gICAgICAgICAgICBib2R5Q2xpY2tcclxuICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgfSBAaWYgKGNhbkRvd25sb2FkKSB7XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCInbG93J1wiXHJcbiAgICAgICAgICAgIFtnbHlwaF09XCInZG93bmxvYWQnXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIiFkaWFsb2dNb2RlID8gJycgOiAoJ0Rvd25sb2FkJyB8IGJiYlRyYW5zbGF0ZSlcIlxyXG4gICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25Eb3dubG9hZCgpXCJcclxuICAgICAgICAgICAgYm9keUNsaWNrXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgIH0gQGlmICghcGFyYW1ldGVycz8uSGlkZVJlZnJlc2gpIHtcclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCInbG93J1wiXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgW2dseXBoXT1cImRpYWxvZ01vZGUgPyBudWxsIDogJ3JlZnJlc2gnXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIiFkaWFsb2dNb2RlID8gJycgOiAoJ1JlZnJlc2gnIHwgYmJiVHJhbnNsYXRlKVwiXHJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgIGJvZHlDbGlja1xyXG4gICAgICAgICAgICAoY2xpY2spPVwib25SZWZyZXNoKClcIlxyXG4gICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPGZkLWJ1c3ktaW5kaWNhdG9yXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBbbG9hZGluZ109XCIodXBsb2FkaW5nU3RhdGUkIHwgYXN5bmMpPy51cGxvYWRpbmcgPT09IHRydWVcIlxyXG4gICAgICAgID48L2ZkLWJ1c3ktaW5kaWNhdG9yPlxyXG4gICAgPC9mZC10b29sYmFyPlxyXG4gICAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3ByZXZpZXc+XHJcbiAgICBAaWYgKGlzTW9iaWxlKSB7XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgW3N0eWxlLmJvcmRlcl09XCIhYmxvYlVybCA/ICcuMDYyNXJlbSBzb2xpZCB2YXIoLS1zYXBHcm91cF9UaXRsZUJvcmRlckNvbG9yKScgOiBudWxsXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogY2FsYyg3MHZoIC0gNDBweCk7IHBvc2l0aW9uOiByZWxhdGl2ZVwiXHJcbiAgICA+XHJcbiAgICAgICAgQGlmKHZhbHVlKXtcclxuICAgICAgICA8YnN1LWJsb2Itdmlld2VyIFtmaWxlXT1cInZhbHVlXCIgW3N0eWxlLndpZHRoXT1cIndpZHRoXCIgW2RlY3JlbWVudF09XCInMjVweCdcIj48L2JzdS1ibG9iLXZpZXdlcj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPCEtLSA8bmcyLXBkZmpzLXZpZXdlclxyXG4gICAgICAgICAgICBmaWxsRW1wdHlTcGFjZVxyXG4gICAgICAgICAgICBbY29udGFpbmVyRG9tXT1cImZvcm1Db250YWluZXJcIlxyXG4gICAgICAgICAgICBbZG9udFVzZVRvcEJvdW5kXT1cInRydWVcIlxyXG4gICAgICAgICAgICAjcGRmVmlld2VyT25EZW1hbmRcclxuICAgICAgICAgICAgW2V4dGVybmFsV2luZG93XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW2Rvd25sb2FkRmlsZU5hbWVdPVwiYmxvYlVybFwiXHJcbiAgICAgICAgICAgIFtvcGVuRmlsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFt2aWV3Qm9va21hcmtdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbc2hvd1NwaW5uZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtkb3dubG9hZF09XCJ0cnVlXCJcclxuICAgICAgICA+PC9uZzItcGRmanMtdmlld2VyPiAtLT5cclxuICAgIDwvZGl2PlxyXG4gICAgfSBAZWxzZSB7IEBpZiAoaGFzUGRmKSB7XHJcbiAgICA8b2JqZWN0XHJcbiAgICAgICAgZmlsbEVtcHR5U3BhY2VcclxuICAgICAgICBbY29udGFpbmVyRG9tXT1cImZvcm1Db250YWluZXJcIlxyXG4gICAgICAgIFtkb250VXNlVG9wQm91bmRdPVwidHJ1ZVwiXHJcbiAgICAgICAgW2Rpc2FibGVdPVwiaW5saW5lRWRpdFwiXHJcbiAgICAgICAgc3R5bGU9XCJmbGV4LWdyb3c6IDFcIlxyXG4gICAgICAgIFthdHRyLmRhdGFdPVwidmFsdWVVcmxcIlxyXG4gICAgICAgIHR5cGU9XCJhcHBsaWNhdGlvbi9wZGZcIlxyXG4gICAgICAgIHdpZHRoPVwiMTAwJVwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJpbmxpbmVFZGl0ID8gJ2F1dG8nIDogZm9ybUhlaWdodCAtIDMwID4gMCA/IGZvcm1IZWlnaHQgLSAzMCArICdweCcgOiAnMTAwdmgnXCJcclxuICAgICAgICBbYXR0ci5odG1sXT1cImZhbGxiYWNrTGlua1wiXHJcbiAgICA+PC9vYmplY3Q+XHJcbiAgICB9IEBlbHNlIHsgQGlmIChzaW5nbGVDb250cm9sICYmIHZhbHVlICYmICF2YWx1ZS5Jc0RlbGV0ZWQpIHtcclxuICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4XCI+XHJcbiAgICAgICAgQGlmIChzaW5nbGVGaWxlVGh1bWJuYWlsVXJsKSB7XHJcbiAgICAgICAgPGltZyBbc3JjXT1cInNpbmdsZUZpbGVUaHVtYm5haWxVcmxcIiAvPlxyXG4gICAgICAgIH1cclxuICAgICAgICA8ZmQtb2JqZWN0LWlkZW50aWZpZXI+XHJcbiAgICAgICAgICAgIHt7IHZhbHVlLkZpbGVOYW1lIH19XHJcbiAgICAgICAgPC9mZC1vYmplY3QtaWRlbnRpZmllcj5cclxuICAgIDwvZGl2PlxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgZmlsbEVtcHR5U3BhY2VcclxuICAgICAgICBbY29udGFpbmVyRG9tXT1cImZvcm1Db250YWluZXJcIlxyXG4gICAgICAgIFtkb250VXNlVG9wQm91bmRdPVwidHJ1ZVwiXHJcbiAgICAgICAgY2xhc3M9XCJoYXRjaEJhY2tncm91bmRcIlxyXG4gICAgICAgIFtkaXNhYmxlXT1cImlubGluZUVkaXRcIlxyXG4gICAgICAgIFtjbGFzcy50dy1oLTRdPVwiaW5saW5lRWRpdFwiXHJcbiAgICA+PC9kaXY+XHJcbiAgICB9IH0gfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlIGxldC1kaWFsb2cgbGV0LWRpYWxvZ0NvbmZpZz1cImRpYWxvZ0NvbmZpZ1wiICNkaWFsb2dUcGw+XHJcbiAgICA8ZmQtZGlhbG9nIFtkaWFsb2dDb25maWddPVwiZGlhbG9nQ29uZmlnXCIgW2RpYWxvZ1JlZl09XCJkaWFsb2dcIiBjbGFzcz1cInZlcnRpY2FsXCI+XHJcbiAgICAgICAgPGZkLWRpYWxvZy1oZWFkZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmZGtUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmZC1iYXItbGVmdD5cclxuICAgICAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBmZC10aXRsZT5lZGl0IGluIHdvcmQ8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLXJpZ2h0PlxyXG4gICAgICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyIGFyaWFMYWJlbD1cImNsb3NlXCIgZ2x5cGg9XCJkZWNsaW5lXCIgKGNsaWNrKT1cIm9uRGlhbG9nQ2xvc2UoKVwiPjwvZmQtYnV0dG9uLWJhcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cclxuICAgICAgICA8ZmQtZGlhbG9nLWJvZHk+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcmV2aWV3XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9mZC1kaWFsb2ctYm9keT5cclxuICAgIDwvZmQtZGlhbG9nPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=