myrta-ui 17.1.59 → 17.1.60

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.
@@ -317,4 +317,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
317
317
  type: ViewChild,
318
318
  args: ['dateInput']
319
319
  }] } });
320
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC1kYXRlL2lucHV0LWRhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtZGF0ZS9pbnB1dC1kYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsV0FBVyxFQUNYLGNBQWMsRUFDZCxjQUFjLEVBQ2QsVUFBVSxFQUNYLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRTNGLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxrQkFBa0IsRUFBa0UsTUFBTSxtQkFBbUIsQ0FBQztBQUl2SCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFnQixNQUFNLHdCQUF3QixDQUFDOzs7Ozs7O0FBZTVFLE1BQU0sT0FBTyxrQkFBa0I7SUF5Q25CO0lBQ0E7SUFDQTtJQTFD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LEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFVyxPQUFPO3NCQUF2QixNQUFNO2dCQUNVLFdBQVc7c0JBQTNCLE1BQU07Z0JBQ1UsT0FBTztzQkFBdkIsTUFBTTtnQkFFaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSW5wdXQsIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgYWRqdXN0SW52YWxpZERhdGUsXHJcbiAgY2xhbXBEYXRlLFxyXG4gIGdldFJhbmdlRXJyb3JNZXNzYWdlLFxyXG4gIGlzRGF0ZUluUmFuZ2UsXHJcbiAgaXNWYWxpZERhdGUsXHJcbiAgcGFyc2VJbnB1dERhdGUsXHJcbiAgdG9PdXRwdXRGb3JtYXQsXHJcbiAgZm9ybWF0RGF0ZVxyXG59IGZyb20gJy4vaGVscGVycy9kYXRlLWhlbHBlcnMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgRGF0ZUNhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RhdGUtY2FsZW5kYXIvZGF0ZS1jYWxlbmRhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IElucHV0RGF0ZVNpemVzRW51bSwgSW5wdXREYXRlU2l6ZXNUeXBlcywgSW5wdXREYXRlVmFsdWVUeXBlcywgSW5wdXREYXRlVmFsdWVXaXRoSWQgfSBmcm9tICcuL2lucHV0LWRhdGUuZW51bSc7XHJcbmltcG9ydCB7IElucHV0RGF0ZVRpbWVTaXplc1R5cGVzIH0gZnJvbSAnLi4vaW5wdXQtZGF0ZS10aW1lL2lucHV0LWRhdGUtdGltZS5lbnVtJztcclxuaW1wb3J0IHsgZGF0ZU1vZGVsQ29uc3RhbnQsIHRpbWVNb2RlbENvbnN0YW50IH0gZnJvbSAnLi4vaW5wdXQtZGF0ZS10aW1lL2NvbnN0YW50cy92YWx1ZS1tb2RlbHMnO1xyXG5pbXBvcnQgeyBJbnB1dERhdGVUaW1lVmFsdWVUeXBlcywgSW5wdXREYXRlVGltZVZhbHVlV2l0aElkIH0gZnJvbSAnLi4vaW5wdXQtZGF0ZS10aW1lL21vZGVscy9pbnB1dC1kYXRlLXRpbWUubW9kZWwnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFBvc2l0aW9uU3RyYXRlZ3lFbnVtLCBQb3NpdGlvblR5cGUgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9vdmVybGF5JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWlucHV0LWRhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1kYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vaW5wdXQtZGF0ZS5jb21wb25lbnQubGVzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dERhdGVDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dERhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIHByaXZhdGUgX2NsaWNrU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgZGlzcGxheVZhbHVlOiBzdHJpbmcgPSAnJztcclxuICBzZWxlY3RlZERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcclxuICBtYXNrOiBzdHJpbmcgPSAnJztcclxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyBTQVZFIFNUQVRFXHJcbiAgcHVibGljIHV1aWQ6IHN0cmluZyA9IHV1aWR2NCgpO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZHM6IEZpZWxkW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGZvcm1hdDogc3RyaW5nID0gJ0RELk1NLllZWVknO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtaW5EYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBwdWJsaWMgbWF4RGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcHVibGljIGlzU2lsZW50VmFsaWRhdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgcHVibGljIGlzTWFudWFsSW5wdXQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjbG9zZUFmdGVyU2VsZWN0ID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgc2l6ZTogSW5wdXREYXRlU2l6ZXNUeXBlcyA9ICdsYXJnZSc7XHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUNsYXNzZXMgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXIgPSAn0LTQtC7QvNC8LtCz0LPQs9CzJztcclxuICBASW5wdXQoKSBwdWJsaWMgcG9wdXBQb3NpdGlvbjogUG9zaXRpb25UeXBlID0gJ2JvdHRvbS1zdGFydCc7XHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZE1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGNoZWNrSW52YWxpZDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgc2Nyb2xsU3RyYXRlZ3k6ICdyZXBvc2l0aW9uJyB8ICdjbG9zZScgPSAncmVwb3NpdGlvbic7XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlZDogRXZlbnRFbWl0dGVyPElucHV0RGF0ZVRpbWVWYWx1ZVR5cGVzPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcHVibGljIG1vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SW5wdXREYXRlVGltZVZhbHVlV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXREYXRlVGltZVZhbHVlV2l0aElkPigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgYmx1cnJlZDogRXZlbnRFbWl0dGVyPElucHV0RGF0ZVRpbWVWYWx1ZVdpdGhJZD4gPSBuZXcgRXZlbnRFbWl0dGVyPElucHV0RGF0ZVRpbWVWYWx1ZVdpdGhJZD4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZGF0ZUlucHV0JykgZGF0ZUlucHV0ITogRWxlbWVudFJlZjtcclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICBwcml2YXRlIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXksXHJcbiAgICBwcml2YXRlIF9kZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMubWFzayA9IHRoaXMuZm9ybWF0LnJlcGxhY2UoL1tETVldL2csICcwJyk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NsaWNrU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5jbG9zZUNhbGVuZGFyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNoZWNrVmFsaWRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMucmVxdWlyZWQpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY2hlY2tJbnZhbGlkID09PSBmYWxzZSA/ICdtcngtaW5wdXQtY2hlY2tlZC1zdWNjZXNzJyA6IHRoaXMuY2hlY2tJbnZhbGlkID09PSB0cnVlID8gJ21yeC1pbnB1dC1jaGVja2VkLWVycm9yJyA6ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7SW5wdXREYXRlU2l6ZXNFbnVtW3RoaXMuc2l6ZV19ICR7dGhpcy5jdXN0b21DbGFzc2VzfSAke3RoaXMuY2hlY2tWYWxpZENsYXNzZXN9YDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNWaWV3Q2xlYW5JY29uKCkge1xyXG4gICAgcmV0dXJuICEhdGhpcy5kYXRlSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGUgPSBwYXJzZUlucHV0RGF0ZSh2YWx1ZSk7XHJcblxyXG4gICAgaWYgKGRhdGUgJiYgaXNEYXRlSW5SYW5nZShkYXRlLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSkpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBkYXRlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IGZvcm1hdERhdGUoZGF0ZSwgdGhpcy5mb3JtYXQpO1xyXG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNTaWxlbnRWYWxpZGF0aW9uICYmIGRhdGUpIHtcclxuICAgICAgY29uc3QgY2xhbXBlZERhdGUgPSBjbGFtcERhdGUoZGF0ZSwgdGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGNsYW1wZWREYXRlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IGZvcm1hdERhdGUoY2xhbXBlZERhdGUsIHRoaXMuZm9ybWF0KTtcclxuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBudWxsO1xyXG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IGRhdGUgPyBmb3JtYXREYXRlKGRhdGUsIHRoaXMuZm9ybWF0KSA6ICcnO1xyXG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGRhdGUgPyBnZXRSYW5nZUVycm9yTWVzc2FnZShkYXRlLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSkgOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRhdGUgPSBwYXJzZUlucHV0RGF0ZSh2YWx1ZSk7XHJcblxyXG4gICAgaWYgKGRhdGUgJiYgaXNEYXRlSW5SYW5nZShkYXRlLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSkpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBkYXRlO1xyXG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IGZvcm1hdERhdGUoZGF0ZSwgdGhpcy5mb3JtYXQpO1xyXG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUodmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlzU2lsZW50VmFsaWRhdGlvbiAmJiBkYXRlKSB7XHJcbiAgICAgIGNvbnN0IGNsYW1wZWREYXRlID0gY2xhbXBEYXRlKGRhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBjbGFtcGVkRGF0ZTtcclxuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSBmb3JtYXREYXRlKGNsYW1wZWREYXRlLCB0aGlzLmZvcm1hdCk7XHJcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgICAgY29uc3QgY2xhbXBlZFZhbHVlID0gdG9PdXRwdXRGb3JtYXQoY2xhbXBlZERhdGUpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKGNsYW1wZWRWYWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gZGF0ZSA/IGZvcm1hdERhdGUoZGF0ZSwgdGhpcy5mb3JtYXQpIDogJyc7XHJcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZGF0ZSA/IGdldFJhbmdlRXJyb3JNZXNzYWdlKGRhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKSA6IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9kZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGNvbnN0IGlucHV0VmFsdWUgPSBpbnB1dEVsZW1lbnQudmFsdWU7XHJcbiAgICB0aGlzLnByb2Nlc3NJbnB1dChpbnB1dFZhbHVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvY2Vzc0lucHV0KGlucHV0VmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5kaXNwbGF5VmFsdWUgPSBpbnB1dFZhbHVlO1xyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG5cclxuICAgIGlmIChpbnB1dFZhbHVlLmxlbmd0aCA9PT0gdGhpcy5mb3JtYXQubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHRoaXMuZm9ybWF0Lm1hdGNoKC9bXkRNWV0vKT8uWzBdIHx8ICcuJztcclxuICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBeKFxcXFxkezJ9KSR7c2VwYXJhdG9yfShcXFxcZHsyfSkke3NlcGFyYXRvcn0oXFxcXGR7NH0pJGApO1xyXG4gICAgICBjb25zdCBtYXRjaCA9IGlucHV0VmFsdWUubWF0Y2gocmVnZXgpO1xyXG5cclxuICAgICAgaWYgKCFtYXRjaCkgcmV0dXJuO1xyXG5cclxuICAgICAgbGV0IGRheSwgbW9udGgsIHllYXI7XHJcbiAgICAgIGlmICh0aGlzLmZvcm1hdC5zdGFydHNXaXRoKCdERCcpKSB7XHJcbiAgICAgICAgW2RheSwgbW9udGgsIHllYXJdID0gW21hdGNoWzFdLCBtYXRjaFsyXSwgbWF0Y2hbM11dLm1hcChOdW1iZXIpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZm9ybWF0LnN0YXJ0c1dpdGgoJ01NJykpIHtcclxuICAgICAgICBbbW9udGgsIGRheSwgeWVhcl0gPSBbbWF0Y2hbMV0sIG1hdGNoWzJdLCBtYXRjaFszXV0ubWFwKE51bWJlcik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgW3llYXIsIG1vbnRoLCBkYXldID0gW21hdGNoWzFdLCBtYXRjaFsyXSwgbWF0Y2hbM11dLm1hcChOdW1iZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIG1vbnRoIC09IDE7XHJcblxyXG4gICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXkpO1xyXG5cclxuICAgICAgaWYgKGlzVmFsaWREYXRlKGRhdGUpICYmIGlzRGF0ZUluUmFuZ2UoZGF0ZSwgdGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUpKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBkYXRlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUodG9PdXRwdXRGb3JtYXQoZGF0ZSkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHsgeWVhcjogYWRqWWVhciwgbW9udGg6IGFkak1vbnRoLCBkYXk6IGFkakRheSB9ID0gYWRqdXN0SW52YWxpZERhdGUoeWVhciwgbW9udGgsIGRheSk7XHJcbiAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGFkalllYXIsIGFkak1vbnRoLCBhZGpEYXkpO1xyXG5cclxuICAgICAgICBpZiAoaXNEYXRlSW5SYW5nZShkYXRlLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSkpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gZGF0ZTtcclxuICAgICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gZm9ybWF0RGF0ZShkYXRlLCB0aGlzLmZvcm1hdCk7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRvT3V0cHV0Rm9ybWF0KGRhdGUpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNTaWxlbnRWYWxpZGF0aW9uKSB7XHJcbiAgICAgICAgICBjb25zdCBjbGFtcGVkRGF0ZSA9IGNsYW1wRGF0ZShkYXRlLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGNsYW1wZWREYXRlO1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSBmb3JtYXREYXRlKGNsYW1wZWREYXRlLCB0aGlzLmZvcm1hdCk7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRvT3V0cHV0Rm9ybWF0KGNsYW1wZWREYXRlKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZ2V0UmFuZ2VFcnJvck1lc3NhZ2UoZGF0ZSwgdGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5fZGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoKSB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG5cclxuICAgIGlmICh0aGlzLmRpc3BsYXlWYWx1ZS5sZW5ndGggPiAwICYmIHRoaXMuZGlzcGxheVZhbHVlLmxlbmd0aCA8IHRoaXMuZm9ybWF0Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9ICcnO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUoJycpO1xyXG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9kZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIG9wZW5DYWxlbmRhcigpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuX292ZXJsYXlSZWYpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheVxyXG4gICAgICAucG9zaXRpb24oKVxyXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLmRhdGVJbnB1dClcclxuICAgICAgLndpdGhQb3NpdGlvbnMoUG9zaXRpb25TdHJhdGVneUVudW1bdGhpcy5wb3B1cFBvc2l0aW9uXSk7XHJcblxyXG4gICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKHtcclxuICAgICAgcG9zaXRpb25TdHJhdGVneSxcclxuICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxyXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5zY3JvbGxTdHJhdGVneSA9PT0gJ3JlcG9zaXRpb24nID8gdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSA6IHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5jbG9zZSgpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgcG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChEYXRlQ2FsZW5kYXJDb21wb25lbnQpO1xyXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5fb3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcclxuXHJcbiAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VsZWN0ZWREYXRlID0gdGhpcy5zZWxlY3RlZERhdGU7XHJcbiAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubWluRGF0ZSA9IHRoaXMubWluRGF0ZTtcclxuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5tYXhEYXRlID0gdGhpcy5tYXhEYXRlO1xyXG4gICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmRhdGVTZWxlY3RlZC5zdWJzY3JpYmUoKGRhdGU6IERhdGUpID0+IHRoaXMub25EYXRlU2VsZWN0ZWQoZGF0ZSkpO1xyXG4gICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmNsb3NlLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlQ2FsZW5kYXIoKSk7XHJcblxyXG4gICAgdGhpcy5fY2xpY2tTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdjbGljaycpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcigoZXZlbnQ6IEV2ZW50KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjbGlja1RhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICEhdGhpcy5fb3ZlcmxheVJlZiAmJlxyXG4gICAgICAgICAgICAhdGhpcy5fb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5jb250YWlucyhjbGlja1RhcmdldCkgJiZcclxuICAgICAgICAgICAgIXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhjbGlja1RhcmdldClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2VDYWxlbmRhcigpKTtcclxuICB9XHJcblxyXG4gIG9uRGF0ZVNlbGVjdGVkKGRhdGU6IERhdGUpIHtcclxuICAgIGNvbnN0IGNsYW1wZWREYXRlID0gY2xhbXBEYXRlKGRhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gY2xhbXBlZERhdGU7XHJcbiAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IGZvcm1hdERhdGUoY2xhbXBlZERhdGUsIHRoaXMuZm9ybWF0KTtcclxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgIHRoaXMudXBkYXRlVmFsdWUodG9PdXRwdXRGb3JtYXQoY2xhbXBlZERhdGUpKTtcclxuXHJcbiAgICBpZiAodGhpcy5jbG9zZUFmdGVyU2VsZWN0KSB7XHJcbiAgICAgIHRoaXMuY2xvc2VDYWxlbmRhcigpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VDYWxlbmRhcigpIHtcclxuICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XHJcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpO1xyXG4gICAgICB0aGlzLl9vdmVybGF5UmVmID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGlja1RvSWNvbkNhbGVuZGFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vcGVuQ2FsZW5kYXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGlja1RvSWNvbkNsZWFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNwbGF5VmFsdWUgPSAnJztcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbnVsbDtcclxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbnVsbDtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKCcnKTtcclxuICAgIHRoaXMuY2xvc2VDYWxlbmRhcigpO1xyXG5cclxuICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZVZhbHVlKGluc2lkZVZhbHVlOiBJbnB1dERhdGVWYWx1ZVR5cGVzKSB7XHJcbiAgICB0aGlzLmNoYW5nZWQuZW1pdChpbnNpZGVWYWx1ZSk7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoeyB2YWx1ZTogaW5zaWRlVmFsdWUsIGlkOiB0aGlzLnV1aWQgfSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKGluc2lkZVZhbHVlKTtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cIm1yeC1pbnB1dC1kYXRlXCJcclxuICBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cImludmFsaWRcIlxyXG4gIFtjbGFzcy5tcngtaW5wdXQtcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gIFtjbGFzc109XCJnZXRDbGFzc2VzXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZGF0ZV9fd3JhcHBlclwiPlxyXG4gICAgPGlucHV0XHJcbiAgICAgICNkYXRlSW5wdXRcclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICBhdXRvY29tcGxldGU9XCJub3BlXCJcclxuICAgICAgY2xhc3M9XCJtcngtaW5wdXQtZGF0ZV9faW5wdXQgbXJ4LWlucHV0LWRhdGVfX2RhdGVcIlxyXG4gICAgICBbbmdNb2RlbF09XCJkaXNwbGF5VmFsdWVcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBbcmVhZE9ubHldPVwiIWlzTWFudWFsSW5wdXRcIlxyXG4gICAgICBbbWFza109XCJtYXNrXCJcclxuICAgICAgW2xlYWRaZXJvRGF0ZVRpbWVdPVwidHJ1ZVwiXHJcbiAgICAgIFtkcm9wU3BlY2lhbENoYXJhY3RlcnNdPVwiZmFsc2VcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAoY2xpY2spPVwib3BlbkNhbGVuZGFyKClcIlxyXG4gICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcclxuICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgLz5cclxuXHJcbiAgICBAaWYgKCFkaXNhYmxlZCkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWRhdGVfX2ljb25zXCI+XHJcbiAgICAgICAgQGlmIChpc1ZpZXdDbGVhbkljb24pIHtcclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwibXJ4LWljb24gaWNvbi1jbG9zZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGlja1RvSWNvbkNsZWFyKClcIlxyXG4gICAgICAgICAgICBbY2xhc3MuaWNvbi1mb250LTE2XT1cInNpemUgPT09ICdzbWFsbCdcIlxyXG4gICAgICAgICAgICBbY2xhc3MuaWNvbi1mb250LTI0XT1cInNpemUgPT09ICdtZWRpdW0nIHx8IHNpemUgPT09ICdsYXJnZSdcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBjbGFzcz1cIm1yeC1pY29uIGljb24tY2FsZW5kYXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImNsaWNrVG9JY29uQ2FsZW5kYXIoKVwiXHJcbiAgICAgICAgICBbY2xhc3MuaWNvbi1mb250LTE2XT1cInNpemUgPT09ICdzbWFsbCdcIlxyXG4gICAgICAgICAgW2NsYXNzLmljb24tZm9udC0yNF09XCJzaXplID09PSAnbWVkaXVtJyB8fCBzaXplID09PSAnbGFyZ2UnXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuXHJcbiAgQGlmIChpbnZhbGlkKSB7XHJcbiAgICA8bXJ4LWVycm9yLW1lc3NhZ2UgW2ludmFsaWRNZXNzYWdlXT1cImludmFsaWRNZXNzYWdlXCI+PC9tcngtZXJyb3ItbWVzc2FnZT5cclxuICB9IEBlbHNlIHtcclxuICAgIEBpZiAoZXJyb3JNZXNzYWdlKSB7XHJcbiAgICAgIDxtcngtZXJyb3ItbWVzc2FnZSBbaW52YWxpZE1lc3NhZ2VdPVwiZXJyb3JNZXNzYWdlXCI+PC9tcngtZXJyb3ItbWVzc2FnZT5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIDxtcngtc2F2ZS1zdGF0ZSBbaWRdPVwidXVpZFwiIFtmaWVsZHNdPVwiZmllbGRzXCI+PC9tcngtc2F2ZS1zdGF0ZT5cclxuPC9kaXY+XHJcbiJdfQ==
320
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC1kYXRlL2lucHV0LWRhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtZGF0ZS9pbnB1dC1kYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsV0FBVyxFQUNYLGNBQWMsRUFDZCxjQUFjLEVBQ2QsVUFBVSxFQUNYLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRTNGLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxrQkFBa0IsRUFBa0UsTUFBTSxtQkFBbUIsQ0FBQztBQUl2SCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFnQixNQUFNLHdCQUF3QixDQUFDOzs7Ozs7O0FBZTVFLE1BQU0sT0FBTyxrQkFBa0I7SUF5Q25CO0lBQ0E7SUFDQTtJQTFD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LEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFFVyxPQUFPO3NCQUF2QixNQUFNO2dCQUNVLFdBQVc7c0JBQTNCLE1BQU07Z0JBQ1UsT0FBTztzQkFBdkIsTUFBTTtnQkFFaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSW5wdXQsIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgYWRqdXN0SW52YWxpZERhdGUsXHJcbiAgY2xhbXBEYXRlLFxyXG4gIGdldFJhbmdlRXJyb3JNZXNzYWdlLFxyXG4gIGlzRGF0ZUluUmFuZ2UsXHJcbiAgaXNWYWxpZERhdGUsXHJcbiAgcGFyc2VJbnB1dERhdGUsXHJcbiAgdG9PdXRwdXRGb3JtYXQsXHJcbiAgZm9ybWF0RGF0ZVxyXG59IGZyb20gJy4vaGVscGVycy9kYXRlLWhlbHBlcnMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgRGF0ZUNhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RhdGUtY2FsZW5kYXIvZGF0ZS1jYWxlbmRhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IElucHV0RGF0ZVNpemVzRW51bSwgSW5wdXREYXRlU2l6ZXNUeXBlcywgSW5wdXREYXRlVmFsdWVUeXBlcywgSW5wdXREYXRlVmFsdWVXaXRoSWQgfSBmcm9tICcuL2lucHV0LWRhdGUuZW51bSc7XHJcbmltcG9ydCB7IElucHV0RGF0ZVRpbWVTaXplc1R5cGVzIH0gZnJvbSAnLi4vaW5wdXQtZGF0ZS10aW1lL2lucHV0LWRhdGUtdGltZS5lbnVtJztcclxuaW1wb3J0IHsgZGF0ZU1vZGVsQ29uc3RhbnQsIHRpbWVNb2RlbENvbnN0YW50IH0gZnJvbSAnLi4vaW5wdXQtZGF0ZS10aW1lL2NvbnN0YW50cy92YWx1ZS1tb2RlbHMnO1xyXG5pbXBvcnQgeyBJbnB1dERhdGVUaW1lVmFsdWVUeXBlcywgSW5wdXREYXRlVGltZVZhbHVlV2l0aElkIH0gZnJvbSAnLi4vaW5wdXQtZGF0ZS10aW1lL21vZGVscy9pbnB1dC1kYXRlLXRpbWUubW9kZWwnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFBvc2l0aW9uU3RyYXRlZ3lFbnVtLCBQb3NpdGlvblR5cGUgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9vdmVybGF5JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWlucHV0LWRhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1kYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vaW5wdXQtZGF0ZS5jb21wb25lbnQubGVzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dERhdGVDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dERhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIHByaXZhdGUgX2NsaWNrU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgZGlzcGxheVZhbHVlOiBzdHJpbmcgPSAnJztcclxuICBzZWxlY3RlZERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcclxuICBtYXNrOiBzdHJpbmcgPSAnJztcclxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyBTQVZFIFNUQVRFXHJcbiAgcHVibGljIHV1aWQ6IHN0cmluZyA9IHV1aWR2NCgpO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZHM6IEZpZWxkW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGZvcm1hdDogc3RyaW5nID0gJ0RELk1NLllZWVknO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtaW5EYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBwdWJsaWMgbWF4RGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcHVibGljIGlzU2lsZW50VmFsaWRhdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgcHVibGljIGlzTWFudWFsSW5wdXQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjbG9zZUFmdGVyU2VsZWN0ID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgc2l6ZTogSW5wdXREYXRlU2l6ZXNUeXBlcyA9ICdsYXJnZSc7XHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUNsYXNzZXMgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXIgPSAn0LTQtC7QvNC8LtCz0LPQs9CzJztcclxuICBASW5wdXQoKSBwdWJsaWMgcG9wdXBQb3NpdGlvbjogUG9zaXRpb25UeXBlID0gJ2JvdHRvbS1zdGFydCc7XHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZE1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGNoZWNrSW52YWxpZDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcHVibGljIHNjcm9sbFN0cmF0ZWd5OiAncmVwb3NpdGlvbicgfCAnY2xvc2UnID0gJ3JlcG9zaXRpb24nO1xyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxJbnB1dERhdGVUaW1lVmFsdWVUeXBlcz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPElucHV0RGF0ZVRpbWVWYWx1ZVdpdGhJZD4gPSBuZXcgRXZlbnRFbWl0dGVyPElucHV0RGF0ZVRpbWVWYWx1ZVdpdGhJZD4oKTtcclxuICBAT3V0cHV0KCkgcHVibGljIGJsdXJyZWQ6IEV2ZW50RW1pdHRlcjxJbnB1dERhdGVUaW1lVmFsdWVXaXRoSWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJbnB1dERhdGVUaW1lVmFsdWVXaXRoSWQ+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2RhdGVJbnB1dCcpIGRhdGVJbnB1dCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkID0gKCkgPT4ge307XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9vdmVybGF5OiBPdmVybGF5LFxyXG4gICAgcHJpdmF0ZSBfZGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLm1hc2sgPSB0aGlzLmZvcm1hdC5yZXBsYWNlKC9bRE1ZXS9nLCAnMCcpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jbGlja1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuY2xvc2VDYWxlbmRhcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjaGVja1ZhbGlkQ2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0aGlzLnJlcXVpcmVkKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNoZWNrSW52YWxpZCA9PT0gZmFsc2UgPyAnbXJ4LWlucHV0LWNoZWNrZWQtc3VjY2VzcycgOiB0aGlzLmNoZWNrSW52YWxpZCA9PT0gdHJ1ZSA/ICdtcngtaW5wdXQtY2hlY2tlZC1lcnJvcicgOiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Q2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke0lucHV0RGF0ZVNpemVzRW51bVt0aGlzLnNpemVdfSAke3RoaXMuY3VzdG9tQ2xhc3Nlc30gJHt0aGlzLmNoZWNrVmFsaWRDbGFzc2VzfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzVmlld0NsZWFuSWNvbigpIHtcclxuICAgIHJldHVybiAhIXRoaXMuZGF0ZUlucHV0Py5uYXRpdmVFbGVtZW50LnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRlID0gcGFyc2VJbnB1dERhdGUodmFsdWUpO1xyXG5cclxuICAgIGlmIChkYXRlICYmIGlzRGF0ZUluUmFuZ2UoZGF0ZSwgdGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gZGF0ZTtcclxuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSBmb3JtYXREYXRlKGRhdGUsIHRoaXMuZm9ybWF0KTtcclxuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlzU2lsZW50VmFsaWRhdGlvbiAmJiBkYXRlKSB7XHJcbiAgICAgIGNvbnN0IGNsYW1wZWREYXRlID0gY2xhbXBEYXRlKGRhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBjbGFtcGVkRGF0ZTtcclxuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSBmb3JtYXREYXRlKGNsYW1wZWREYXRlLCB0aGlzLmZvcm1hdCk7XHJcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbnVsbDtcclxuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSBkYXRlID8gZm9ybWF0RGF0ZShkYXRlLCB0aGlzLmZvcm1hdCkgOiAnJztcclxuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBkYXRlID8gZ2V0UmFuZ2VFcnJvck1lc3NhZ2UoZGF0ZSwgdGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUpIDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9kZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgICB0aGlzLl9kZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkYXRlID0gcGFyc2VJbnB1dERhdGUodmFsdWUpO1xyXG5cclxuICAgIGlmIChkYXRlICYmIGlzRGF0ZUluUmFuZ2UoZGF0ZSwgdGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gZGF0ZTtcclxuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSBmb3JtYXREYXRlKGRhdGUsIHRoaXMuZm9ybWF0KTtcclxuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pc1NpbGVudFZhbGlkYXRpb24gJiYgZGF0ZSkge1xyXG4gICAgICBjb25zdCBjbGFtcGVkRGF0ZSA9IGNsYW1wRGF0ZShkYXRlLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gY2xhbXBlZERhdGU7XHJcbiAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gZm9ybWF0RGF0ZShjbGFtcGVkRGF0ZSwgdGhpcy5mb3JtYXQpO1xyXG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgIGNvbnN0IGNsYW1wZWRWYWx1ZSA9IHRvT3V0cHV0Rm9ybWF0KGNsYW1wZWREYXRlKTtcclxuICAgICAgdGhpcy51cGRhdGVWYWx1ZShjbGFtcGVkVmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBudWxsO1xyXG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IGRhdGUgPyBmb3JtYXREYXRlKGRhdGUsIHRoaXMuZm9ybWF0KSA6ICcnO1xyXG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGRhdGUgPyBnZXRSYW5nZUVycm9yTWVzc2FnZShkYXRlLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSkgOiBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBvbklucHV0KGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBjb25zdCBpbnB1dFZhbHVlID0gaW5wdXRFbGVtZW50LnZhbHVlO1xyXG4gICAgdGhpcy5wcm9jZXNzSW5wdXQoaW5wdXRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NJbnB1dChpbnB1dFZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGlzcGxheVZhbHVlID0gaW5wdXRWYWx1ZTtcclxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbnVsbDtcclxuXHJcbiAgICBpZiAoaW5wdXRWYWx1ZS5sZW5ndGggPT09IHRoaXMuZm9ybWF0Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBzZXBhcmF0b3IgPSB0aGlzLmZvcm1hdC5tYXRjaCgvW15ETVldLyk/LlswXSB8fCAnLic7XHJcbiAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXihcXFxcZHsyfSkke3NlcGFyYXRvcn0oXFxcXGR7Mn0pJHtzZXBhcmF0b3J9KFxcXFxkezR9KSRgKTtcclxuICAgICAgY29uc3QgbWF0Y2ggPSBpbnB1dFZhbHVlLm1hdGNoKHJlZ2V4KTtcclxuXHJcbiAgICAgIGlmICghbWF0Y2gpIHJldHVybjtcclxuXHJcbiAgICAgIGxldCBkYXksIG1vbnRoLCB5ZWFyO1xyXG4gICAgICBpZiAodGhpcy5mb3JtYXQuc3RhcnRzV2l0aCgnREQnKSkge1xyXG4gICAgICAgIFtkYXksIG1vbnRoLCB5ZWFyXSA9IFttYXRjaFsxXSwgbWF0Y2hbMl0sIG1hdGNoWzNdXS5tYXAoTnVtYmVyKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmZvcm1hdC5zdGFydHNXaXRoKCdNTScpKSB7XHJcbiAgICAgICAgW21vbnRoLCBkYXksIHllYXJdID0gW21hdGNoWzFdLCBtYXRjaFsyXSwgbWF0Y2hbM11dLm1hcChOdW1iZXIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIFt5ZWFyLCBtb250aCwgZGF5XSA9IFttYXRjaFsxXSwgbWF0Y2hbMl0sIG1hdGNoWzNdXS5tYXAoTnVtYmVyKTtcclxuICAgICAgfVxyXG4gICAgICBtb250aCAtPSAxO1xyXG5cclxuICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5KTtcclxuXHJcbiAgICAgIGlmIChpc1ZhbGlkRGF0ZShkYXRlKSAmJiBpc0RhdGVJblJhbmdlKGRhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gZGF0ZTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRvT3V0cHV0Rm9ybWF0KGRhdGUpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCB7IHllYXI6IGFkalllYXIsIG1vbnRoOiBhZGpNb250aCwgZGF5OiBhZGpEYXkgfSA9IGFkanVzdEludmFsaWREYXRlKHllYXIsIG1vbnRoLCBkYXkpO1xyXG4gICAgICAgIGRhdGUgPSBuZXcgRGF0ZShhZGpZZWFyLCBhZGpNb250aCwgYWRqRGF5KTtcclxuXHJcbiAgICAgICAgaWYgKGlzRGF0ZUluUmFuZ2UoZGF0ZSwgdGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUpKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGRhdGU7XHJcbiAgICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IGZvcm1hdERhdGUoZGF0ZSwgdGhpcy5mb3JtYXQpO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh0b091dHB1dEZvcm1hdChkYXRlKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzU2lsZW50VmFsaWRhdGlvbikge1xyXG4gICAgICAgICAgY29uc3QgY2xhbXBlZERhdGUgPSBjbGFtcERhdGUoZGF0ZSwgdGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUpO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBjbGFtcGVkRGF0ZTtcclxuICAgICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gZm9ybWF0RGF0ZShjbGFtcGVkRGF0ZSwgdGhpcy5mb3JtYXQpO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh0b091dHB1dEZvcm1hdChjbGFtcGVkRGF0ZSkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGdldFJhbmdlRXJyb3JNZXNzYWdlKGRhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKCkge1xyXG4gICAgdGhpcy5vblRvdWNoZWQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5kaXNwbGF5VmFsdWUubGVuZ3RoID4gMCAmJiB0aGlzLmRpc3BsYXlWYWx1ZS5sZW5ndGggPCB0aGlzLmZvcm1hdC5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSAnJztcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBudWxsO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKCcnKTtcclxuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBvcGVuQ2FsZW5kYXIoKSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLl9vdmVybGF5UmVmKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMuX292ZXJsYXlcclxuICAgICAgLnBvc2l0aW9uKClcclxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5kYXRlSW5wdXQpXHJcbiAgICAgIC53aXRoUG9zaXRpb25zKFBvc2l0aW9uU3RyYXRlZ3lFbnVtW3RoaXMucG9wdXBQb3NpdGlvbl0pO1xyXG5cclxuICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZSh7XHJcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXHJcbiAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcclxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMuc2Nyb2xsU3RyYXRlZ3kgPT09ICdyZXBvc2l0aW9uJyA/IHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCkgOiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuY2xvc2UoKSxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoRGF0ZUNhbGVuZGFyQ29tcG9uZW50KTtcclxuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuX292ZXJsYXlSZWYuYXR0YWNoKHBvcnRhbCk7XHJcblxyXG4gICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNlbGVjdGVkRGF0ZSA9IHRoaXMuc2VsZWN0ZWREYXRlO1xyXG4gICAgY29tcG9uZW50UmVmLmluc3RhbmNlLm1pbkRhdGUgPSB0aGlzLm1pbkRhdGU7XHJcbiAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubWF4RGF0ZSA9IHRoaXMubWF4RGF0ZTtcclxuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5kYXRlU2VsZWN0ZWQuc3Vic2NyaWJlKChkYXRlOiBEYXRlKSA9PiB0aGlzLm9uRGF0ZVNlbGVjdGVkKGRhdGUpKTtcclxuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5jbG9zZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbG9zZUNhbGVuZGFyKCkpO1xyXG5cclxuICAgIHRoaXMuX2NsaWNrU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KGRvY3VtZW50LCAnY2xpY2snKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaWx0ZXIoKGV2ZW50OiBFdmVudCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY2xpY2tUYXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAhIXRoaXMuX292ZXJsYXlSZWYgJiZcclxuICAgICAgICAgICAgIXRoaXMuX292ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuY29udGFpbnMoY2xpY2tUYXJnZXQpICYmXHJcbiAgICAgICAgICAgICF0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoY2xpY2tUYXJnZXQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlQ2FsZW5kYXIoKSk7XHJcbiAgfVxyXG5cclxuICBvbkRhdGVTZWxlY3RlZChkYXRlOiBEYXRlKSB7XHJcbiAgICBjb25zdCBjbGFtcGVkRGF0ZSA9IGNsYW1wRGF0ZShkYXRlLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGNsYW1wZWREYXRlO1xyXG4gICAgdGhpcy5kaXNwbGF5VmFsdWUgPSBmb3JtYXREYXRlKGNsYW1wZWREYXRlLCB0aGlzLmZvcm1hdCk7XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKHRvT3V0cHV0Rm9ybWF0KGNsYW1wZWREYXRlKSk7XHJcblxyXG4gICAgaWYgKHRoaXMuY2xvc2VBZnRlclNlbGVjdCkge1xyXG4gICAgICB0aGlzLmNsb3NlQ2FsZW5kYXIoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9kZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIGNsb3NlQ2FsZW5kYXIoKSB7XHJcbiAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xyXG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcclxuICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xpY2tUb0ljb25DYWxlbmRhcigpOiB2b2lkIHtcclxuICAgIHRoaXMub3BlbkNhbGVuZGFyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xpY2tUb0ljb25DbGVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzcGxheVZhbHVlID0gJyc7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG51bGw7XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7XHJcblxyXG4gICAgdGhpcy51cGRhdGVWYWx1ZSgnJyk7XHJcbiAgICB0aGlzLmNsb3NlQ2FsZW5kYXIoKTtcclxuXHJcbiAgICB0aGlzLl9kZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVWYWx1ZShpbnNpZGVWYWx1ZTogSW5wdXREYXRlVmFsdWVUeXBlcykge1xyXG4gICAgdGhpcy5jaGFuZ2VkLmVtaXQoaW5zaWRlVmFsdWUpO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHsgdmFsdWU6IGluc2lkZVZhbHVlLCBpZDogdGhpcy51dWlkIH0pO1xyXG4gICAgdGhpcy5vbkNoYW5nZShpbnNpZGVWYWx1ZSk7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJtcngtaW5wdXQtZGF0ZVwiXHJcbiAgW2NsYXNzLm1yeC1pbnB1dC1lcnJvcl09XCJpbnZhbGlkXCJcclxuICBbY2xhc3MubXJ4LWlucHV0LXJlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWRhdGVfX3dyYXBwZXJcIj5cclxuICAgIDxpbnB1dFxyXG4gICAgICAjZGF0ZUlucHV0XHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgYXV0b2NvbXBsZXRlPVwibm9wZVwiXHJcbiAgICAgIGNsYXNzPVwibXJ4LWlucHV0LWRhdGVfX2lucHV0IG1yeC1pbnB1dC1kYXRlX19kYXRlXCJcclxuICAgICAgW25nTW9kZWxdPVwiZGlzcGxheVZhbHVlXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgW3JlYWRPbmx5XT1cIiFpc01hbnVhbElucHV0XCJcclxuICAgICAgW21hc2tdPVwibWFza1wiXHJcbiAgICAgIFtsZWFkWmVyb0RhdGVUaW1lXT1cInRydWVcIlxyXG4gICAgICBbZHJvcFNwZWNpYWxDaGFyYWN0ZXJzXT1cImZhbHNlXCJcclxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgKGNsaWNrKT1cIm9wZW5DYWxlbmRhcigpXCJcclxuICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgIC8+XHJcblxyXG4gICAgQGlmICghZGlzYWJsZWQpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1kYXRlX19pY29uc1wiPlxyXG4gICAgICAgIEBpZiAoaXNWaWV3Q2xlYW5JY29uKSB7XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBjbGFzcz1cIm1yeC1pY29uIGljb24tY2xvc2VcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tUb0ljb25DbGVhcigpXCJcclxuICAgICAgICAgICAgW2NsYXNzLmljb24tZm9udC0xNl09XCJzaXplID09PSAnc21hbGwnXCJcclxuICAgICAgICAgICAgW2NsYXNzLmljb24tZm9udC0yNF09XCJzaXplID09PSAnbWVkaXVtJyB8fCBzaXplID09PSAnbGFyZ2UnXCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJtcngtaWNvbiBpY29uLWNhbGVuZGFyXCJcclxuICAgICAgICAgIChjbGljayk9XCJjbGlja1RvSWNvbkNhbGVuZGFyKClcIlxyXG4gICAgICAgICAgW2NsYXNzLmljb24tZm9udC0xNl09XCJzaXplID09PSAnc21hbGwnXCJcclxuICAgICAgICAgIFtjbGFzcy5pY29uLWZvbnQtMjRdPVwic2l6ZSA9PT0gJ21lZGl1bScgfHwgc2l6ZSA9PT0gJ2xhcmdlJ1wiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcblxyXG4gIEBpZiAoaW52YWxpZCkge1xyXG4gICAgPG1yeC1lcnJvci1tZXNzYWdlIFtpbnZhbGlkTWVzc2FnZV09XCJpbnZhbGlkTWVzc2FnZVwiPjwvbXJ4LWVycm9yLW1lc3NhZ2U+XHJcbiAgfSBAZWxzZSB7XHJcbiAgICBAaWYgKGVycm9yTWVzc2FnZSkge1xyXG4gICAgICA8bXJ4LWVycm9yLW1lc3NhZ2UgW2ludmFsaWRNZXNzYWdlXT1cImVycm9yTWVzc2FnZVwiPjwvbXJ4LWVycm9yLW1lc3NhZ2U+XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICA8bXJ4LXNhdmUtc3RhdGUgW2lkXT1cInV1aWRcIiBbZmllbGRzXT1cImZpZWxkc1wiPjwvbXJ4LXNhdmUtc3RhdGU+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -83,9 +83,6 @@ export class TableComponent {
83
83
  get getClasses() {
84
84
  return `${TableTypeEnum[this.type]} ${this.customClasses}`;
85
85
  }
86
- trackByFn(index, item) {
87
- return item[this.trackById];
88
- }
89
86
  changeSort() {
90
87
  const newEventData = { page: this.currentPage, pageSize: this.pageSize };
91
88
  if (!this.colArray.length) {
@@ -138,6 +135,11 @@ export class TableComponent {
138
135
  dir: this.sort?.dir
139
136
  }
140
137
  };
138
+ this.colArray.forEach(item => {
139
+ if (this.sort && newEventData.sort && newEventData.sort.col === item.name) {
140
+ this.selectedSort = item.sortLabel || item.name;
141
+ }
142
+ });
141
143
  this.dataStateChanged.emit(newEventData);
142
144
  }
143
145
  onDataStatePaginatorChanged(pagination) {
@@ -189,7 +191,7 @@ export class TableComponent {
189
191
  this.isOpenSort = isOpen;
190
192
  }
191
193
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TableComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
192
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TableComponent, selector: "mrx-table", inputs: { type: "type", data: "data", pageSize: "pageSize", currentPage: "currentPage", total: "total", link: "link", isLoading: "isLoading", sort: "sort", trackById: "trackById", sortable: "sortable", striped: "striped", customClasses: "customClasses", emptyResultMsg: "emptyResultMsg", hovered: "hovered", popupPosition: "popupPosition", autoHeight: "autoHeight", headerSettings: "headerSettings", contentSettings: "contentSettings", paginatorSettings: "paginatorSettings", loaderSettings: "loaderSettings", setPageable: ["pageable", "setPageable"] }, outputs: { dataStateChanged: "dataStateChanged", downloadData: "downloadData", changeTypeTable: "changeTypeTable", change: "change" }, queries: [{ propertyName: "templateCard", first: true, predicate: ["templateCard"], descendants: true }, { propertyName: "emptyResultMsgTemplate", first: true, predicate: ["emptyResultMsgTemplate"], descendants: true }, { propertyName: "contentChildren", predicate: ColumnComponent }], ngImport: i0, template: "<div class=\"mrx-table\" [class]=\"getClasses\" [class.mb-3]=\"pageable\">\r\n @if (headerSettings) {\r\n @switch (headerSettings.type) {\r\n @case ('second') {\r\n <div class=\"mrx-table-card-header mb-3 pt-2 pb-2\" [class.--substrate]=\"headerSettings.substrate\">\r\n <div class=\"row\">\r\n <div\r\n class=\"mrx-table-card-header--left col col-12 col-sm-6 mb-1 mb-sm-0 d-flex justify-content-start align-content-center\">\r\n <ng-container [ngTemplateOutlet]=\"sortTemplate\"></ng-container>\r\n </div>\r\n\r\n <div class=\"mrx-table-card-header--right col col-12 col-sm-6 d-flex justify-content-end align-content-center\">\r\n <ng-container [ngTemplateOutlet]=\"downloadTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n @default {\r\n <div class=\"mrx-table-card-header py-12px mb-3\" [class.--substrate]=\"headerSettings.substrate\">\r\n <div class=\"row\">\r\n <div\r\n class=\"mrx-table-card-header--left col col-12 col-md-6 mb-1 mb-md-0 d-flex justify-content-start align-content-center\">\r\n <ng-container [ngTemplateOutlet]=\"counterTemplate\"></ng-container>\r\n </div>\r\n\r\n <div class=\"mrx-table-card-header--right col col-12 col-md-6 d-flex justify-content-end align-content-center\">\r\n <ng-container [ngTemplateOutlet]=\"sortTemplate\"></ng-container>\r\n\r\n @if (headerSettings.toggle) {\r\n <div class=\"ml-4\">\r\n <ng-container [ngTemplateOutlet]=\"toggleTemplate\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n }\r\n }\r\n\r\n @switch (type) {\r\n @case ('cards') {\r\n <div class=\"mrx-table__wrapper\">\r\n @for (item of data; let index = $index; let first = $first; let last = $last; track item[trackById] || index) {\r\n <ng-container [ngTemplateOutlet]=\"templateCard\" [ngTemplateOutletContext]=\"{item, index, first, last}\"></ng-container>\r\n }\r\n\r\n @if (!data.length) {\r\n <div class=\"mrx-table__result-message--substrate\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"emptyResultMsg ? emptyResultMsgTemplateDefault : emptyResultMsgTemplate\"\r\n ></ng-container>\r\n </div>\r\n }\r\n\r\n <div class=\"mrx-table__overlay\" [@visibleLoading]=\"isLoading ? 'in' : 'out'\" [ngClass]=\"{'open': isLoading}\">\r\n <mrx-loader [size]=\"loaderSettings.size\" [color]=\"loaderSettings.color\"></mrx-loader>\r\n </div>\r\n </div>\r\n }\r\n @default {\r\n <div class=\"mrx-table__wrapper\" [class.--substrate]=\"contentSettings.substrate\">\r\n <table\r\n [class.table-striped]=\"striped\"\r\n [class.table-solid]=\"!striped\"\r\n [class.mt-2]=\"contentSettings.substrate\"\r\n [class.mb-3]=\"contentSettings.substrate && data.length\"\r\n >\r\n <thead [class.table-head-gray]=\"!headerSettings || headerSettings.background\">\r\n <tr>\r\n @for (col of contentChildren; let index = $index; let first = $first; let last = $last; track index) {\r\n <th [class]=\"col.customClasses\">\r\n @if (!col.templateHead) {\r\n @if (col.sortable) {\r\n <div [class.th-wrapper]=\"sortable\" (click)=\"onSortColumn(col.name, col.sortable)\">\r\n <span>{{ col.label }}</span>\r\n <svg\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n [class]=\"columnSortedDir(col.name)\"\r\n class=\"mrx-table__sort-icon\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 9L8 13L12 9\" fill=\"#DAD5CE\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 7L8 3L4 7\" fill=\"#DAD5CE\"/>\r\n </svg>\r\n </div>\r\n } @else {\r\n <div><span>{{ col.label }}</span></div>\r\n }\r\n } @else {\r\n @if (col.sortable) {\r\n <div [class.th-wrapper]=\"sortable\" (click)=\"onSortColumn(col.name, col.sortable)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"col.templateHead\"\r\n [ngTemplateOutletContext]=\"{col, index, first, last}\"\r\n ></ng-container>\r\n\r\n <svg\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n [class]=\"columnSortedDir(col.name)\"\r\n class=\"mrx-table__sort-icon\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 9L8 13L12 9\" fill=\"#DAD5CE\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 7L8 3L4 7\" fill=\"#DAD5CE\"/>\r\n </svg>\r\n </div>\r\n } @else {\r\n <ng-container\r\n [ngTemplateOutlet]=\"col.templateHead\"\r\n [ngTemplateOutletContext]=\"{col, index, first, last}\"\r\n ></ng-container>\r\n }\r\n }\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n @for (dataItem of data; let index = $index; let first = $first; let last = $last; track dataItem[trackById] || index) {\r\n <tr [class.-hovered]=\"hovered\">\r\n @for (col of contentChildren; let index = $index; let first = $first; let last = $last; track index) {\r\n <td #tableTD class=\"p-0\" [class]=\"col.customClasses\">\r\n @if (link && col['isLink']) {\r\n <a class=\"link-wrapper td-content-wrapper\" [href]=\"getLinkForStroke(link, dataItem)\"></a>\r\n }\r\n\r\n @if (!col.templateCell) {\r\n <div class=\"td-content-wrapper p-2 h-100\">{{ dataItem[col.name] }}</div>\r\n } @else {\r\n <div class=\"td-content-wrapper h-100\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"col.templateCell\"\r\n [ngTemplateOutletContext]=\"{col, row: dataItem, index, first, last}\"\r\n ></ng-container>\r\n </div>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n\r\n @if (!data.length) {\r\n <div class=\"mrx-table__result-message\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"emptyResultMsg ? emptyResultMsgTemplateDefault : emptyResultMsgTemplate\"\r\n ></ng-container>\r\n </div>\r\n }\r\n\r\n <div class=\"mrx-table__overlay\" [@visibleLoading]=\"isLoading ? 'in' : 'out'\" [ngClass]=\"{'open': isLoading}\">\r\n <mrx-loader [size]=\"loaderSettings.size\" [color]=\"loaderSettings.color\"></mrx-loader>\r\n </div>\r\n </div>\r\n }\r\n }\r\n</div>\r\n\r\n@if (total) {\r\n <div class=\"mrx-table__paginator pt-2 pb-2\" [class.mrx-table__paginator--substrate]=\"paginatorSettings.substrate\">\r\n @if (pageable) {\r\n <mrx-paginator\r\n [total]=\"total\"\r\n [pageSize]=\"pageSize\"\r\n [position]=\"pageable.position\"\r\n [pageSizes]=\"pageable.pageSizes\"\r\n [currentPage]=\"currentPage\"\r\n [withPageSize]=\"pageable.withPageSize\"\r\n (dataStateChanged)=\"onDataStatePaginatorChanged($event)\">\r\n </mrx-paginator>\r\n }\r\n </div>\r\n}\r\n\r\n<ng-template #counterTemplate>\r\n @if (headerSettings && headerSettings.count) {\r\n <span class=\"mrx-table-counter\">\r\n {{ total }} {{ headerSettings && headerSettings.countText ? headerSettings.countText : '\u043D\u043E\u0432\u043E\u0441\u0442\u0435\u0439' }}\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #sortTemplate>\r\n @if (headerSettings && headerSettings.sort) {\r\n <div class=\"d-flex mrx-table-sort\">\r\n <div class=\"mrx-table-sort-scale\">\r\n <div class=\"mrx-table-sort-scale__title mr-2\" (click)=\"changeSort()\">\r\n <span>\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E:</span>\r\n\r\n <div class=\"mrx-table-sort-scale__icon\">\r\n @if (sort && sort.dir === 'desc') {\r\n <span class=\"mrx-icon icon-sorting-down icon-font-16\"></span>\r\n }\r\n @if (sort && sort.dir === 'asc') {\r\n <span class=\"mrx-icon icon-sorting-up icon-font-16\"></span>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"mrx-table-sort-scale__drop-trigger\" [mrxPopupTrigger]=\"sortDropdown\" [popupPosition]=\"popupPosition\">\r\n <span>{{ selectedSort }}</span>\r\n <span\r\n class=\"mrx-icon icon-font-16\"\r\n [class.icon-chevron-up]=\"isOpenSort\"\r\n [class.icon-chevron-down]=\"!isOpenSort\"\r\n ></span>\r\n </div>\r\n </div>\r\n\r\n <mrx-popup #sortDropdown [minWidth]=\"'250px'\" [closeAfterClick]=\"true\" (toggle)=\"togglePopup($event)\">\r\n @for (item of colArray; track item) {\r\n <mrx-popup-item [id]=\"item.sortLabel\" (clicked)=\"updateSortSelect(item)\">{{ item.sortLabel || item.name }}\r\n </mrx-popup-item>\r\n }\r\n </mrx-popup>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #downloadTemplate>\r\n @if (headerSettings && headerSettings.download) {\r\n <div class=\"mrx-table-download\" (click)=\"clickToDownload($event)\">\r\n <span class=\"desktop\">\u0421\u043A\u0430\u0447\u0430\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0435</span>\r\n <span class=\"mrx-icon icon-download icon-font-24\"></span>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #toggleTemplate>\r\n <div class=\"mrx-table-toggle\">\r\n <div class=\"mrx-table-toggle--item mr-1\" (click)=\"onChangeTypeTable('cards')\" [class.active]=\"type === 'cards'\">\r\n <span class=\"mrx-icon icon-cards-view icon-font-24\"></span>\r\n </div>\r\n <div class=\"mrx-table-toggle--item\" (click)=\"onChangeTypeTable('default')\" [class.active]=\"type === 'default'\">\r\n <span class=\"mrx-icon icon-table-view icon-font-24\"></span>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #emptyResultMsgTemplateDefault>\r\n {{ emptyResultMsg }}\r\n</ng-template>\r\n", styles: [".mrx-table.mrx-table{display:block;width:100%}.mrx-table.mrx-table .th-wrapper{display:flex;cursor:pointer;word-break:inherit;justify-content:space-between;align-items:flex-end}.mrx-table.mrx-table .th-wrapper span{word-break:inherit}.mrx-table.mrx-table .mrx-table__sort-icon.asc path:last-child{fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table__sort-icon.desc path:first-child{fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table__wrapper.mrx-table__wrapper{overflow-x:auto;overflow-y:hidden;position:relative}.mrx-table__wrapper.mrx-table__wrapper .mrx-table__wrapper--substrate{padding-top:8px}.mrx-table.mrx-table.type-default table{width:100%;text-align:left;background-color:transparent;border-spacing:0}.mrx-table.mrx-table.type-default table thead.table-head-gray{background:var(--neutral-bg-island-default, #F8F9FA)}.mrx-table.mrx-table.type-default table thead .sort-asc .custom-table__sort path:nth-child(2){fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table thead .sort-desc .custom-table__sort path:nth-child(1){fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table td{max-width:340px;vertical-align:top;position:relative;padding:0}.mrx-table.mrx-table.type-default table td .link-wrapper{display:block;color:initial;height:100%;position:absolute;inset:0;text-decoration:none}.mrx-table.mrx-table.type-default table td .link-wrapper:active{color:var(--neutral-text-primary, #262626)}.mrx-table.mrx-table.type-default table td .left-border{border-left:4px solid var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table td .light-border{border-left:4px solid transparent}.mrx-table.mrx-table.type-default table td .warning-back{background-color:#ffece7}.mrx-table.mrx-table.type-default table td .disabled-back{background-color:#fafafa}.mrx-table.mrx-table.type-default table td .link-colored,.mrx-table.mrx-table.type-default table td .link-colored:active{color:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table th{padding:8px;vertical-align:bottom;word-break:inherit;font-weight:700}.mrx-table.mrx-table.type-default table th svg{margin-left:8px;cursor:pointer}.mrx-table.mrx-table .mrx-table-card-header{position:relative}.mrx-table.mrx-table .mrx-table-card-header.--substrate{padding-left:24px;padding-right:24px;background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px}.mrx-table.mrx-table .mrx-table__wrapper.--substrate{background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px}.mrx-table.mrx-table .mrx-table-toggle{display:flex}.mrx-table.mrx-table .mrx-table-toggle--item{display:flex;align-items:center;justify-content:center;cursor:pointer}.mrx-table.mrx-table .mrx-table-toggle--item .mrx-icon{color:#e5e5e5}.mrx-table.mrx-table .mrx-table-toggle--item.active .mrx-icon{color:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table-sort.mrx-table-sort--is-card,.mrx-table.mrx-table .mrx-table-sort.mrx-table-sort--is-table{justify-content:flex-start}.mrx-table.mrx-table .mrx-table-sort-scale{display:flex;align-items:center;flex-wrap:wrap;cursor:pointer;gap:4px;font-family:var(--body-md-font-family, \"PT Sans\");font-weight:var(--body-md-font-weight, 400);font-size:var(--body-md-font-size, 14px);line-height:var(--body-md-line-height, 20px);color:var(--neutral-text-primary, #262626)}.mrx-table.mrx-table .mrx-table-sort-scale__title{display:flex;align-items:center;gap:8px}.mrx-table.mrx-table .mrx-table-sort-scale__icon{display:flex;align-items:center;justify-content:center}.mrx-table.mrx-table .mrx-table-sort-scale__drop-trigger{display:flex;align-items:center;gap:4px}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select{max-width:215px;margin-bottom:0}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-select-container.ng-select-container{min-height:auto!important;border:none;cursor:pointer;align-items:center;height:100%!important}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-value-container.ng-value-container{padding-left:0!important;margin-right:8px}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-arrow-wrapper.ng-arrow-wrapper{min-height:auto;width:auto!important}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-dropdown-panel.ng-dropdown-panel{width:100vw;max-width:215px;left:auto;right:0}.mrx-table__paginator.mrx-table__paginator.mrx-table__paginator--substrate{padding-left:24px;padding-right:24px;background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px}.mrx-table.mrx-table .table-striped tbody tr:nth-child(2n){background-color:var(--neutral-bg-island-default, #F8F9FA)}.mrx-table.mrx-table .table-striped tbody tr:nth-child(n){transition:.2s}.mrx-table.mrx-table .table-striped tbody tr:nth-child(n).-hovered:hover{background-color:var(--brand-bg-tertiary-hover, #edf5ff)}.mrx-table.mrx-table .table-solid{border-collapse:collapse}.mrx-table.mrx-table .table-solid thead tr{border-bottom:1px solid #f2f2f2}.mrx-table.mrx-table .table-solid tbody tr:not(:last-child){border-bottom:1px solid #f2f2f2}.mrx-table.mrx-table .table-solid tbody tr.-hovered:hover{box-shadow:0 1px 4px #3a3a3a4d}.mrx-table.mrx-table .mrx-table__wrapper .mrx-table__overlay{position:absolute;inset:0;background:#ffffffb3;display:flex;align-items:flex-start;justify-content:center;padding-top:12px;border-radius:4px}.mrx-table .mrx-table__result-message{display:flex;justify-content:center;width:100%;padding:var(--spacing-4);font-family:var(--body-md-font-family);font-weight:var(--body-md-font-weight);font-size:var(--body-md-font-size);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary)}.mrx-table .mrx-table__result-message *{font-family:var(--body-md-font-family);font-weight:var(--body-md-font-weight);font-size:var(--body-md-font-size);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary)}.mrx-table .mrx-table__result-message--substrate{display:flex;justify-content:center;width:100%;font-weight:400;font-size:16px;line-height:24px;color:var(--neutral-text-primary, #262626);padding:24px;background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px;position:relative}.mrx-table.mrx-table .mrx-table-download{display:flex;align-items:center;justify-content:flex-end;cursor:pointer}.mrx-table.mrx-table .mrx-table-download span{margin-right:8px;color:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table-download svg path{stroke:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table-counter{display:flex;align-items:center;font-family:var(--body-lg-font-family);font-size:var(--body-lg-font-size);font-weight:var(--body-lg-font-weight);line-height:var(--body-lg-line-height)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.PaginatorComponent, selector: "mrx-paginator", inputs: ["pageSizes", "currentPage", "pageSize", "total", "customClasses", "isEmptyPaginator", "isPaginatorText", "paginatorText", "dropdownPosition", "popupPosition", "position", "withPageSize"], outputs: ["dataStateChanged"] }, { kind: "component", type: i3.LoaderComponent, selector: "mrx-loader", inputs: ["size", "color", "customClasses"] }, { kind: "component", type: i4.PopupComponent, selector: "mrx-popup", inputs: ["closeAfterClick", "minWidth"], outputs: ["toggle", "_toggleInner", "_updateInner"] }, { kind: "component", type: i5.PopupItemComponent, selector: "mrx-popup-item", inputs: ["custom", "id", "disabled"], outputs: ["clicked"] }, { kind: "directive", type: i6.PopupTriggerDirective, selector: "[mrxPopupTrigger]", inputs: ["mrxPopupTrigger", "popupPosition", "isFullWidthDropdown", "minWidthDropdown", "maxWidthDropdown", "scrollContainerRef", "scrollStrategy"] }], animations: [
194
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TableComponent, selector: "mrx-table", inputs: { type: "type", data: "data", pageSize: "pageSize", currentPage: "currentPage", total: "total", link: "link", isLoading: "isLoading", sort: "sort", trackById: "trackById", sortable: "sortable", striped: "striped", customClasses: "customClasses", emptyResultMsg: "emptyResultMsg", hovered: "hovered", popupPosition: "popupPosition", autoHeight: "autoHeight", headerSettings: "headerSettings", contentSettings: "contentSettings", paginatorSettings: "paginatorSettings", loaderSettings: "loaderSettings", setPageable: ["pageable", "setPageable"] }, outputs: { dataStateChanged: "dataStateChanged", downloadData: "downloadData", changeTypeTable: "changeTypeTable", change: "change" }, queries: [{ propertyName: "templateCard", first: true, predicate: ["templateCard"], descendants: true }, { propertyName: "emptyResultMsgTemplate", first: true, predicate: ["emptyResultMsgTemplate"], descendants: true }, { propertyName: "contentChildren", predicate: ColumnComponent }], ngImport: i0, template: "<div class=\"mrx-table\" [class]=\"getClasses\" [class.mb-3]=\"pageable\">\r\n @if (headerSettings) {\r\n @switch (headerSettings.type) {\r\n @case ('second') {\r\n <div class=\"mrx-table-card-header mb-3 pt-2 pb-2\" [class.--substrate]=\"headerSettings.substrate\">\r\n <div class=\"row\">\r\n <div\r\n class=\"mrx-table-card-header--left col col-12 col-sm-6 mb-1 mb-sm-0 d-flex justify-content-start align-content-center\">\r\n <ng-container [ngTemplateOutlet]=\"sortTemplate\"></ng-container>\r\n </div>\r\n\r\n <div class=\"mrx-table-card-header--right col col-12 col-sm-6 d-flex justify-content-end align-content-center\">\r\n <ng-container [ngTemplateOutlet]=\"downloadTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n @default {\r\n <div class=\"mrx-table-card-header py-12px mb-3\" [class.--substrate]=\"headerSettings.substrate\">\r\n <div class=\"row\">\r\n <div\r\n class=\"mrx-table-card-header--left col col-12 col-md-6 mb-1 mb-md-0 d-flex justify-content-start align-content-center\">\r\n <ng-container [ngTemplateOutlet]=\"counterTemplate\"></ng-container>\r\n </div>\r\n\r\n <div class=\"mrx-table-card-header--right col col-12 col-md-6 d-flex justify-content-end align-content-center\">\r\n <ng-container [ngTemplateOutlet]=\"sortTemplate\"></ng-container>\r\n\r\n @if (headerSettings.toggle) {\r\n <div class=\"ml-4\">\r\n <ng-container [ngTemplateOutlet]=\"toggleTemplate\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n }\r\n }\r\n\r\n @switch (type) {\r\n @case ('cards') {\r\n <div class=\"mrx-table__wrapper\">\r\n @for (item of data; let index = $index; let first = $first; let last = $last; track item[trackById] || index) {\r\n <ng-container [ngTemplateOutlet]=\"templateCard\" [ngTemplateOutletContext]=\"{item, index, first, last}\"></ng-container>\r\n }\r\n\r\n @if (!data.length) {\r\n <div class=\"mrx-table__result-message--substrate\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"emptyResultMsg ? emptyResultMsgTemplateDefault : emptyResultMsgTemplate\"\r\n ></ng-container>\r\n </div>\r\n }\r\n\r\n <div class=\"mrx-table__overlay\" [@visibleLoading]=\"isLoading ? 'in' : 'out'\" [ngClass]=\"{'open': isLoading}\">\r\n <mrx-loader [size]=\"loaderSettings.size\" [color]=\"loaderSettings.color\"></mrx-loader>\r\n </div>\r\n </div>\r\n }\r\n @default {\r\n <div class=\"mrx-table__wrapper\" [class.--substrate]=\"contentSettings.substrate\">\r\n <table\r\n [class.table-striped]=\"striped\"\r\n [class.table-solid]=\"!striped\"\r\n [class.mt-2]=\"contentSettings.substrate\"\r\n [class.mb-3]=\"contentSettings.substrate && data.length\"\r\n >\r\n <thead [class.table-head-gray]=\"!headerSettings || headerSettings.background\">\r\n <tr>\r\n @for (col of contentChildren; let index = $index; let first = $first; let last = $last; track index) {\r\n <th [class]=\"col.customClasses\">\r\n @if (!col.templateHead) {\r\n @if (col.sortable) {\r\n <div [class.th-wrapper]=\"sortable\" (click)=\"onSortColumn(col.name, col.sortable)\">\r\n <span>{{ col.label }}</span>\r\n <svg\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n [class]=\"columnSortedDir(col.name)\"\r\n class=\"mrx-table__sort-icon\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 9L8 13L12 9\" fill=\"#DAD5CE\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 7L8 3L4 7\" fill=\"#DAD5CE\"/>\r\n </svg>\r\n </div>\r\n } @else {\r\n <div><span>{{ col.label }}</span></div>\r\n }\r\n } @else {\r\n @if (col.sortable) {\r\n <div [class.th-wrapper]=\"sortable\" (click)=\"onSortColumn(col.name, col.sortable)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"col.templateHead\"\r\n [ngTemplateOutletContext]=\"{col, index, first, last}\"\r\n ></ng-container>\r\n\r\n <svg\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n [class]=\"columnSortedDir(col.name)\"\r\n class=\"mrx-table__sort-icon\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 9L8 13L12 9\" fill=\"#DAD5CE\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 7L8 3L4 7\" fill=\"#DAD5CE\"/>\r\n </svg>\r\n </div>\r\n } @else {\r\n <ng-container\r\n [ngTemplateOutlet]=\"col.templateHead\"\r\n [ngTemplateOutletContext]=\"{col, index, first, last}\"\r\n ></ng-container>\r\n }\r\n }\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n @for (dataItem of data; let index = $index; let first = $first; let last = $last; track dataItem[trackById] || index) {\r\n <tr [class.-hovered]=\"hovered\">\r\n @for (col of contentChildren; let index = $index; let first = $first; let last = $last; track index) {\r\n <td #tableTD class=\"p-0\" [class]=\"col.customClasses\">\r\n @if (link && col['isLink']) {\r\n <a class=\"link-wrapper td-content-wrapper\" [href]=\"getLinkForStroke(link, dataItem)\"></a>\r\n }\r\n\r\n @if (!col.templateCell) {\r\n <div class=\"td-content-wrapper p-2 h-100\">{{ dataItem[col.name] }}</div>\r\n } @else {\r\n <div class=\"td-content-wrapper h-100\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"col.templateCell\"\r\n [ngTemplateOutletContext]=\"{col, row: dataItem, index, first, last}\"\r\n ></ng-container>\r\n </div>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n\r\n @if (!data.length) {\r\n <div class=\"mrx-table__result-message\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"emptyResultMsg ? emptyResultMsgTemplateDefault : emptyResultMsgTemplate\"\r\n ></ng-container>\r\n </div>\r\n }\r\n\r\n <div class=\"mrx-table__overlay\" [@visibleLoading]=\"isLoading ? 'in' : 'out'\" [ngClass]=\"{'open': isLoading}\">\r\n <mrx-loader [size]=\"loaderSettings.size\" [color]=\"loaderSettings.color\"></mrx-loader>\r\n </div>\r\n </div>\r\n }\r\n }\r\n</div>\r\n\r\n@if (total) {\r\n <div class=\"mrx-table__paginator pt-2 pb-2\" [class.mrx-table__paginator--substrate]=\"paginatorSettings.substrate\">\r\n @if (pageable) {\r\n <mrx-paginator\r\n [total]=\"total\"\r\n [pageSize]=\"pageSize\"\r\n [position]=\"pageable.position\"\r\n [pageSizes]=\"pageable.pageSizes\"\r\n [currentPage]=\"currentPage\"\r\n [withPageSize]=\"pageable.withPageSize\"\r\n (dataStateChanged)=\"onDataStatePaginatorChanged($event)\">\r\n </mrx-paginator>\r\n }\r\n </div>\r\n}\r\n\r\n<ng-template #counterTemplate>\r\n @if (headerSettings && headerSettings.count) {\r\n <span class=\"mrx-table-counter\">\r\n {{ total }} {{ headerSettings && headerSettings.countText ? headerSettings.countText : '\u043D\u043E\u0432\u043E\u0441\u0442\u0435\u0439' }}\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #sortTemplate>\r\n @if (headerSettings && headerSettings.sort) {\r\n <div class=\"d-flex mrx-table-sort\">\r\n <div class=\"mrx-table-sort-scale\">\r\n <div class=\"mrx-table-sort-scale__title mr-2\" (click)=\"changeSort()\">\r\n <span>\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E:</span>\r\n\r\n <div class=\"mrx-table-sort-scale__icon\">\r\n @if (sort && sort.dir === 'desc') {\r\n <span class=\"mrx-icon icon-sorting-down icon-font-16\"></span>\r\n }\r\n @if (sort && sort.dir === 'asc') {\r\n <span class=\"mrx-icon icon-sorting-up icon-font-16\"></span>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"mrx-table-sort-scale__drop-trigger\" [mrxPopupTrigger]=\"sortDropdown\" [popupPosition]=\"popupPosition\">\r\n <span>{{ selectedSort }}</span>\r\n <span\r\n class=\"mrx-icon icon-font-16\"\r\n [class.icon-chevron-up]=\"isOpenSort\"\r\n [class.icon-chevron-down]=\"!isOpenSort\"\r\n ></span>\r\n </div>\r\n </div>\r\n\r\n <mrx-popup #sortDropdown [minWidth]=\"'250px'\" [closeAfterClick]=\"true\" (toggle)=\"togglePopup($event)\">\r\n @for (item of colArray; track item) {\r\n <mrx-popup-item\r\n [id]=\"item.sortLabel\"\r\n (clicked)=\"updateSortSelect(item)\"\r\n >\r\n {{ item.sortLabel || item.name }}\r\n </mrx-popup-item>\r\n }\r\n </mrx-popup>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #downloadTemplate>\r\n @if (headerSettings && headerSettings.download) {\r\n <div class=\"mrx-table-download\" (click)=\"clickToDownload($event)\">\r\n <span class=\"desktop\">\u0421\u043A\u0430\u0447\u0430\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0435</span>\r\n <span class=\"mrx-icon icon-download icon-font-24\"></span>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #toggleTemplate>\r\n <div class=\"mrx-table-toggle\">\r\n <div class=\"mrx-table-toggle--item mr-1\" (click)=\"onChangeTypeTable('cards')\" [class.active]=\"type === 'cards'\">\r\n <span class=\"mrx-icon icon-cards-view icon-font-24\"></span>\r\n </div>\r\n <div class=\"mrx-table-toggle--item\" (click)=\"onChangeTypeTable('default')\" [class.active]=\"type === 'default'\">\r\n <span class=\"mrx-icon icon-table-view icon-font-24\"></span>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #emptyResultMsgTemplateDefault>\r\n {{ emptyResultMsg }}\r\n</ng-template>\r\n", styles: [".mrx-table.mrx-table{display:block;width:100%}.mrx-table.mrx-table .th-wrapper{display:flex;cursor:pointer;word-break:inherit;justify-content:space-between;align-items:flex-end}.mrx-table.mrx-table .th-wrapper span{word-break:inherit}.mrx-table.mrx-table .mrx-table__sort-icon.asc path:last-child{fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table__sort-icon.desc path:first-child{fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table__wrapper.mrx-table__wrapper{overflow-x:auto;overflow-y:hidden;position:relative}.mrx-table__wrapper.mrx-table__wrapper .mrx-table__wrapper--substrate{padding-top:8px}.mrx-table.mrx-table.type-default table{width:100%;text-align:left;background-color:transparent;border-spacing:0}.mrx-table.mrx-table.type-default table thead.table-head-gray{background:var(--neutral-bg-island-default, #F8F9FA)}.mrx-table.mrx-table.type-default table thead .sort-asc .custom-table__sort path:nth-child(2){fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table thead .sort-desc .custom-table__sort path:nth-child(1){fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table td{max-width:340px;vertical-align:top;position:relative;padding:0}.mrx-table.mrx-table.type-default table td .link-wrapper{display:block;color:initial;height:100%;position:absolute;inset:0;text-decoration:none}.mrx-table.mrx-table.type-default table td .link-wrapper:active{color:var(--neutral-text-primary, #262626)}.mrx-table.mrx-table.type-default table td .left-border{border-left:4px solid var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table td .light-border{border-left:4px solid transparent}.mrx-table.mrx-table.type-default table td .warning-back{background-color:#ffece7}.mrx-table.mrx-table.type-default table td .disabled-back{background-color:#fafafa}.mrx-table.mrx-table.type-default table td .link-colored,.mrx-table.mrx-table.type-default table td .link-colored:active{color:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table th{padding:8px;vertical-align:bottom;word-break:inherit;font-weight:700}.mrx-table.mrx-table.type-default table th svg{margin-left:8px;cursor:pointer}.mrx-table.mrx-table .mrx-table-card-header{position:relative}.mrx-table.mrx-table .mrx-table-card-header.--substrate{padding-left:24px;padding-right:24px;background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px}.mrx-table.mrx-table .mrx-table__wrapper.--substrate{background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px}.mrx-table.mrx-table .mrx-table-toggle{display:flex}.mrx-table.mrx-table .mrx-table-toggle--item{display:flex;align-items:center;justify-content:center;cursor:pointer}.mrx-table.mrx-table .mrx-table-toggle--item .mrx-icon{color:#e5e5e5}.mrx-table.mrx-table .mrx-table-toggle--item.active .mrx-icon{color:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table-sort.mrx-table-sort--is-card,.mrx-table.mrx-table .mrx-table-sort.mrx-table-sort--is-table{justify-content:flex-start}.mrx-table.mrx-table .mrx-table-sort-scale{display:flex;align-items:center;flex-wrap:wrap;cursor:pointer;gap:4px;font-family:var(--body-md-font-family, \"PT Sans\");font-weight:var(--body-md-font-weight, 400);font-size:var(--body-md-font-size, 14px);line-height:var(--body-md-line-height, 20px);color:var(--neutral-text-primary, #262626)}.mrx-table.mrx-table .mrx-table-sort-scale__title{display:flex;align-items:center;gap:8px}.mrx-table.mrx-table .mrx-table-sort-scale__icon{display:flex;align-items:center;justify-content:center}.mrx-table.mrx-table .mrx-table-sort-scale__drop-trigger{display:flex;align-items:center;gap:4px}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select{max-width:215px;margin-bottom:0}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-select-container.ng-select-container{min-height:auto!important;border:none;cursor:pointer;align-items:center;height:100%!important}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-value-container.ng-value-container{padding-left:0!important;margin-right:8px}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-arrow-wrapper.ng-arrow-wrapper{min-height:auto;width:auto!important}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-dropdown-panel.ng-dropdown-panel{width:100vw;max-width:215px;left:auto;right:0}.mrx-table__paginator.mrx-table__paginator.mrx-table__paginator--substrate{padding-left:24px;padding-right:24px;background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px}.mrx-table.mrx-table .table-striped tbody tr:nth-child(2n){background-color:var(--neutral-bg-island-default, #F8F9FA)}.mrx-table.mrx-table .table-striped tbody tr:nth-child(n){transition:.2s}.mrx-table.mrx-table .table-striped tbody tr:nth-child(n).-hovered:hover{background-color:var(--brand-bg-tertiary-hover, #edf5ff)}.mrx-table.mrx-table .table-solid{border-collapse:collapse}.mrx-table.mrx-table .table-solid thead tr{border-bottom:1px solid #f2f2f2}.mrx-table.mrx-table .table-solid tbody tr:not(:last-child){border-bottom:1px solid #f2f2f2}.mrx-table.mrx-table .table-solid tbody tr.-hovered:hover{box-shadow:0 1px 4px #3a3a3a4d}.mrx-table.mrx-table .mrx-table__wrapper .mrx-table__overlay{position:absolute;inset:0;background:#ffffffb3;display:flex;align-items:flex-start;justify-content:center;padding-top:12px;border-radius:4px}.mrx-table .mrx-table__result-message{display:flex;justify-content:center;width:100%;padding:var(--spacing-4);font-family:var(--body-md-font-family);font-weight:var(--body-md-font-weight);font-size:var(--body-md-font-size);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary)}.mrx-table .mrx-table__result-message *{font-family:var(--body-md-font-family);font-weight:var(--body-md-font-weight);font-size:var(--body-md-font-size);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary)}.mrx-table .mrx-table__result-message--substrate{display:flex;justify-content:center;width:100%;font-weight:400;font-size:16px;line-height:24px;color:var(--neutral-text-primary, #262626);padding:24px;background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px;position:relative}.mrx-table.mrx-table .mrx-table-download{display:flex;align-items:center;justify-content:flex-end;cursor:pointer}.mrx-table.mrx-table .mrx-table-download span{margin-right:8px;color:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table-download svg path{stroke:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table-counter{display:flex;align-items:center;font-family:var(--body-lg-font-family);font-size:var(--body-lg-font-size);font-weight:var(--body-lg-font-weight);line-height:var(--body-lg-line-height)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.PaginatorComponent, selector: "mrx-paginator", inputs: ["pageSizes", "currentPage", "pageSize", "total", "customClasses", "isEmptyPaginator", "isPaginatorText", "paginatorText", "dropdownPosition", "popupPosition", "position", "withPageSize"], outputs: ["dataStateChanged"] }, { kind: "component", type: i3.LoaderComponent, selector: "mrx-loader", inputs: ["size", "color", "customClasses"] }, { kind: "component", type: i4.PopupComponent, selector: "mrx-popup", inputs: ["closeAfterClick", "minWidth"], outputs: ["toggle", "_toggleInner", "_updateInner"] }, { kind: "component", type: i5.PopupItemComponent, selector: "mrx-popup-item", inputs: ["custom", "id", "disabled"], outputs: ["clicked"] }, { kind: "directive", type: i6.PopupTriggerDirective, selector: "[mrxPopupTrigger]", inputs: ["mrxPopupTrigger", "popupPosition", "isFullWidthDropdown", "minWidthDropdown", "maxWidthDropdown", "scrollContainerRef", "scrollStrategy"] }], animations: [
193
195
  trigger('visibleLoading', [
194
196
  state('in', style({ opacity: 1, visibility: 'visible' })),
195
197
  state('out', style({ opacity: 0, visibility: 'hidden' })),
@@ -219,7 +221,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
219
221
  animate('300ms ease-in-out', style({ opacity: 1 }))
220
222
  ])])
221
223
  ])
222
- ], template: "<div class=\"mrx-table\" [class]=\"getClasses\" [class.mb-3]=\"pageable\">\r\n @if (headerSettings) {\r\n @switch (headerSettings.type) {\r\n @case ('second') {\r\n <div class=\"mrx-table-card-header mb-3 pt-2 pb-2\" [class.--substrate]=\"headerSettings.substrate\">\r\n <div class=\"row\">\r\n <div\r\n class=\"mrx-table-card-header--left col col-12 col-sm-6 mb-1 mb-sm-0 d-flex justify-content-start align-content-center\">\r\n <ng-container [ngTemplateOutlet]=\"sortTemplate\"></ng-container>\r\n </div>\r\n\r\n <div class=\"mrx-table-card-header--right col col-12 col-sm-6 d-flex justify-content-end align-content-center\">\r\n <ng-container [ngTemplateOutlet]=\"downloadTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n @default {\r\n <div class=\"mrx-table-card-header py-12px mb-3\" [class.--substrate]=\"headerSettings.substrate\">\r\n <div class=\"row\">\r\n <div\r\n class=\"mrx-table-card-header--left col col-12 col-md-6 mb-1 mb-md-0 d-flex justify-content-start align-content-center\">\r\n <ng-container [ngTemplateOutlet]=\"counterTemplate\"></ng-container>\r\n </div>\r\n\r\n <div class=\"mrx-table-card-header--right col col-12 col-md-6 d-flex justify-content-end align-content-center\">\r\n <ng-container [ngTemplateOutlet]=\"sortTemplate\"></ng-container>\r\n\r\n @if (headerSettings.toggle) {\r\n <div class=\"ml-4\">\r\n <ng-container [ngTemplateOutlet]=\"toggleTemplate\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n }\r\n }\r\n\r\n @switch (type) {\r\n @case ('cards') {\r\n <div class=\"mrx-table__wrapper\">\r\n @for (item of data; let index = $index; let first = $first; let last = $last; track item[trackById] || index) {\r\n <ng-container [ngTemplateOutlet]=\"templateCard\" [ngTemplateOutletContext]=\"{item, index, first, last}\"></ng-container>\r\n }\r\n\r\n @if (!data.length) {\r\n <div class=\"mrx-table__result-message--substrate\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"emptyResultMsg ? emptyResultMsgTemplateDefault : emptyResultMsgTemplate\"\r\n ></ng-container>\r\n </div>\r\n }\r\n\r\n <div class=\"mrx-table__overlay\" [@visibleLoading]=\"isLoading ? 'in' : 'out'\" [ngClass]=\"{'open': isLoading}\">\r\n <mrx-loader [size]=\"loaderSettings.size\" [color]=\"loaderSettings.color\"></mrx-loader>\r\n </div>\r\n </div>\r\n }\r\n @default {\r\n <div class=\"mrx-table__wrapper\" [class.--substrate]=\"contentSettings.substrate\">\r\n <table\r\n [class.table-striped]=\"striped\"\r\n [class.table-solid]=\"!striped\"\r\n [class.mt-2]=\"contentSettings.substrate\"\r\n [class.mb-3]=\"contentSettings.substrate && data.length\"\r\n >\r\n <thead [class.table-head-gray]=\"!headerSettings || headerSettings.background\">\r\n <tr>\r\n @for (col of contentChildren; let index = $index; let first = $first; let last = $last; track index) {\r\n <th [class]=\"col.customClasses\">\r\n @if (!col.templateHead) {\r\n @if (col.sortable) {\r\n <div [class.th-wrapper]=\"sortable\" (click)=\"onSortColumn(col.name, col.sortable)\">\r\n <span>{{ col.label }}</span>\r\n <svg\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n [class]=\"columnSortedDir(col.name)\"\r\n class=\"mrx-table__sort-icon\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 9L8 13L12 9\" fill=\"#DAD5CE\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 7L8 3L4 7\" fill=\"#DAD5CE\"/>\r\n </svg>\r\n </div>\r\n } @else {\r\n <div><span>{{ col.label }}</span></div>\r\n }\r\n } @else {\r\n @if (col.sortable) {\r\n <div [class.th-wrapper]=\"sortable\" (click)=\"onSortColumn(col.name, col.sortable)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"col.templateHead\"\r\n [ngTemplateOutletContext]=\"{col, index, first, last}\"\r\n ></ng-container>\r\n\r\n <svg\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n [class]=\"columnSortedDir(col.name)\"\r\n class=\"mrx-table__sort-icon\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 9L8 13L12 9\" fill=\"#DAD5CE\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 7L8 3L4 7\" fill=\"#DAD5CE\"/>\r\n </svg>\r\n </div>\r\n } @else {\r\n <ng-container\r\n [ngTemplateOutlet]=\"col.templateHead\"\r\n [ngTemplateOutletContext]=\"{col, index, first, last}\"\r\n ></ng-container>\r\n }\r\n }\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n @for (dataItem of data; let index = $index; let first = $first; let last = $last; track dataItem[trackById] || index) {\r\n <tr [class.-hovered]=\"hovered\">\r\n @for (col of contentChildren; let index = $index; let first = $first; let last = $last; track index) {\r\n <td #tableTD class=\"p-0\" [class]=\"col.customClasses\">\r\n @if (link && col['isLink']) {\r\n <a class=\"link-wrapper td-content-wrapper\" [href]=\"getLinkForStroke(link, dataItem)\"></a>\r\n }\r\n\r\n @if (!col.templateCell) {\r\n <div class=\"td-content-wrapper p-2 h-100\">{{ dataItem[col.name] }}</div>\r\n } @else {\r\n <div class=\"td-content-wrapper h-100\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"col.templateCell\"\r\n [ngTemplateOutletContext]=\"{col, row: dataItem, index, first, last}\"\r\n ></ng-container>\r\n </div>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n\r\n @if (!data.length) {\r\n <div class=\"mrx-table__result-message\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"emptyResultMsg ? emptyResultMsgTemplateDefault : emptyResultMsgTemplate\"\r\n ></ng-container>\r\n </div>\r\n }\r\n\r\n <div class=\"mrx-table__overlay\" [@visibleLoading]=\"isLoading ? 'in' : 'out'\" [ngClass]=\"{'open': isLoading}\">\r\n <mrx-loader [size]=\"loaderSettings.size\" [color]=\"loaderSettings.color\"></mrx-loader>\r\n </div>\r\n </div>\r\n }\r\n }\r\n</div>\r\n\r\n@if (total) {\r\n <div class=\"mrx-table__paginator pt-2 pb-2\" [class.mrx-table__paginator--substrate]=\"paginatorSettings.substrate\">\r\n @if (pageable) {\r\n <mrx-paginator\r\n [total]=\"total\"\r\n [pageSize]=\"pageSize\"\r\n [position]=\"pageable.position\"\r\n [pageSizes]=\"pageable.pageSizes\"\r\n [currentPage]=\"currentPage\"\r\n [withPageSize]=\"pageable.withPageSize\"\r\n (dataStateChanged)=\"onDataStatePaginatorChanged($event)\">\r\n </mrx-paginator>\r\n }\r\n </div>\r\n}\r\n\r\n<ng-template #counterTemplate>\r\n @if (headerSettings && headerSettings.count) {\r\n <span class=\"mrx-table-counter\">\r\n {{ total }} {{ headerSettings && headerSettings.countText ? headerSettings.countText : '\u043D\u043E\u0432\u043E\u0441\u0442\u0435\u0439' }}\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #sortTemplate>\r\n @if (headerSettings && headerSettings.sort) {\r\n <div class=\"d-flex mrx-table-sort\">\r\n <div class=\"mrx-table-sort-scale\">\r\n <div class=\"mrx-table-sort-scale__title mr-2\" (click)=\"changeSort()\">\r\n <span>\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E:</span>\r\n\r\n <div class=\"mrx-table-sort-scale__icon\">\r\n @if (sort && sort.dir === 'desc') {\r\n <span class=\"mrx-icon icon-sorting-down icon-font-16\"></span>\r\n }\r\n @if (sort && sort.dir === 'asc') {\r\n <span class=\"mrx-icon icon-sorting-up icon-font-16\"></span>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"mrx-table-sort-scale__drop-trigger\" [mrxPopupTrigger]=\"sortDropdown\" [popupPosition]=\"popupPosition\">\r\n <span>{{ selectedSort }}</span>\r\n <span\r\n class=\"mrx-icon icon-font-16\"\r\n [class.icon-chevron-up]=\"isOpenSort\"\r\n [class.icon-chevron-down]=\"!isOpenSort\"\r\n ></span>\r\n </div>\r\n </div>\r\n\r\n <mrx-popup #sortDropdown [minWidth]=\"'250px'\" [closeAfterClick]=\"true\" (toggle)=\"togglePopup($event)\">\r\n @for (item of colArray; track item) {\r\n <mrx-popup-item [id]=\"item.sortLabel\" (clicked)=\"updateSortSelect(item)\">{{ item.sortLabel || item.name }}\r\n </mrx-popup-item>\r\n }\r\n </mrx-popup>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #downloadTemplate>\r\n @if (headerSettings && headerSettings.download) {\r\n <div class=\"mrx-table-download\" (click)=\"clickToDownload($event)\">\r\n <span class=\"desktop\">\u0421\u043A\u0430\u0447\u0430\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0435</span>\r\n <span class=\"mrx-icon icon-download icon-font-24\"></span>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #toggleTemplate>\r\n <div class=\"mrx-table-toggle\">\r\n <div class=\"mrx-table-toggle--item mr-1\" (click)=\"onChangeTypeTable('cards')\" [class.active]=\"type === 'cards'\">\r\n <span class=\"mrx-icon icon-cards-view icon-font-24\"></span>\r\n </div>\r\n <div class=\"mrx-table-toggle--item\" (click)=\"onChangeTypeTable('default')\" [class.active]=\"type === 'default'\">\r\n <span class=\"mrx-icon icon-table-view icon-font-24\"></span>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #emptyResultMsgTemplateDefault>\r\n {{ emptyResultMsg }}\r\n</ng-template>\r\n", styles: [".mrx-table.mrx-table{display:block;width:100%}.mrx-table.mrx-table .th-wrapper{display:flex;cursor:pointer;word-break:inherit;justify-content:space-between;align-items:flex-end}.mrx-table.mrx-table .th-wrapper span{word-break:inherit}.mrx-table.mrx-table .mrx-table__sort-icon.asc path:last-child{fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table__sort-icon.desc path:first-child{fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table__wrapper.mrx-table__wrapper{overflow-x:auto;overflow-y:hidden;position:relative}.mrx-table__wrapper.mrx-table__wrapper .mrx-table__wrapper--substrate{padding-top:8px}.mrx-table.mrx-table.type-default table{width:100%;text-align:left;background-color:transparent;border-spacing:0}.mrx-table.mrx-table.type-default table thead.table-head-gray{background:var(--neutral-bg-island-default, #F8F9FA)}.mrx-table.mrx-table.type-default table thead .sort-asc .custom-table__sort path:nth-child(2){fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table thead .sort-desc .custom-table__sort path:nth-child(1){fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table td{max-width:340px;vertical-align:top;position:relative;padding:0}.mrx-table.mrx-table.type-default table td .link-wrapper{display:block;color:initial;height:100%;position:absolute;inset:0;text-decoration:none}.mrx-table.mrx-table.type-default table td .link-wrapper:active{color:var(--neutral-text-primary, #262626)}.mrx-table.mrx-table.type-default table td .left-border{border-left:4px solid var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table td .light-border{border-left:4px solid transparent}.mrx-table.mrx-table.type-default table td .warning-back{background-color:#ffece7}.mrx-table.mrx-table.type-default table td .disabled-back{background-color:#fafafa}.mrx-table.mrx-table.type-default table td .link-colored,.mrx-table.mrx-table.type-default table td .link-colored:active{color:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table th{padding:8px;vertical-align:bottom;word-break:inherit;font-weight:700}.mrx-table.mrx-table.type-default table th svg{margin-left:8px;cursor:pointer}.mrx-table.mrx-table .mrx-table-card-header{position:relative}.mrx-table.mrx-table .mrx-table-card-header.--substrate{padding-left:24px;padding-right:24px;background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px}.mrx-table.mrx-table .mrx-table__wrapper.--substrate{background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px}.mrx-table.mrx-table .mrx-table-toggle{display:flex}.mrx-table.mrx-table .mrx-table-toggle--item{display:flex;align-items:center;justify-content:center;cursor:pointer}.mrx-table.mrx-table .mrx-table-toggle--item .mrx-icon{color:#e5e5e5}.mrx-table.mrx-table .mrx-table-toggle--item.active .mrx-icon{color:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table-sort.mrx-table-sort--is-card,.mrx-table.mrx-table .mrx-table-sort.mrx-table-sort--is-table{justify-content:flex-start}.mrx-table.mrx-table .mrx-table-sort-scale{display:flex;align-items:center;flex-wrap:wrap;cursor:pointer;gap:4px;font-family:var(--body-md-font-family, \"PT Sans\");font-weight:var(--body-md-font-weight, 400);font-size:var(--body-md-font-size, 14px);line-height:var(--body-md-line-height, 20px);color:var(--neutral-text-primary, #262626)}.mrx-table.mrx-table .mrx-table-sort-scale__title{display:flex;align-items:center;gap:8px}.mrx-table.mrx-table .mrx-table-sort-scale__icon{display:flex;align-items:center;justify-content:center}.mrx-table.mrx-table .mrx-table-sort-scale__drop-trigger{display:flex;align-items:center;gap:4px}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select{max-width:215px;margin-bottom:0}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-select-container.ng-select-container{min-height:auto!important;border:none;cursor:pointer;align-items:center;height:100%!important}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-value-container.ng-value-container{padding-left:0!important;margin-right:8px}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-arrow-wrapper.ng-arrow-wrapper{min-height:auto;width:auto!important}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-dropdown-panel.ng-dropdown-panel{width:100vw;max-width:215px;left:auto;right:0}.mrx-table__paginator.mrx-table__paginator.mrx-table__paginator--substrate{padding-left:24px;padding-right:24px;background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px}.mrx-table.mrx-table .table-striped tbody tr:nth-child(2n){background-color:var(--neutral-bg-island-default, #F8F9FA)}.mrx-table.mrx-table .table-striped tbody tr:nth-child(n){transition:.2s}.mrx-table.mrx-table .table-striped tbody tr:nth-child(n).-hovered:hover{background-color:var(--brand-bg-tertiary-hover, #edf5ff)}.mrx-table.mrx-table .table-solid{border-collapse:collapse}.mrx-table.mrx-table .table-solid thead tr{border-bottom:1px solid #f2f2f2}.mrx-table.mrx-table .table-solid tbody tr:not(:last-child){border-bottom:1px solid #f2f2f2}.mrx-table.mrx-table .table-solid tbody tr.-hovered:hover{box-shadow:0 1px 4px #3a3a3a4d}.mrx-table.mrx-table .mrx-table__wrapper .mrx-table__overlay{position:absolute;inset:0;background:#ffffffb3;display:flex;align-items:flex-start;justify-content:center;padding-top:12px;border-radius:4px}.mrx-table .mrx-table__result-message{display:flex;justify-content:center;width:100%;padding:var(--spacing-4);font-family:var(--body-md-font-family);font-weight:var(--body-md-font-weight);font-size:var(--body-md-font-size);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary)}.mrx-table .mrx-table__result-message *{font-family:var(--body-md-font-family);font-weight:var(--body-md-font-weight);font-size:var(--body-md-font-size);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary)}.mrx-table .mrx-table__result-message--substrate{display:flex;justify-content:center;width:100%;font-weight:400;font-size:16px;line-height:24px;color:var(--neutral-text-primary, #262626);padding:24px;background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px;position:relative}.mrx-table.mrx-table .mrx-table-download{display:flex;align-items:center;justify-content:flex-end;cursor:pointer}.mrx-table.mrx-table .mrx-table-download span{margin-right:8px;color:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table-download svg path{stroke:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table-counter{display:flex;align-items:center;font-family:var(--body-lg-font-family);font-size:var(--body-lg-font-size);font-weight:var(--body-lg-font-weight);line-height:var(--body-lg-line-height)}\n"] }]
224
+ ], template: "<div class=\"mrx-table\" [class]=\"getClasses\" [class.mb-3]=\"pageable\">\r\n @if (headerSettings) {\r\n @switch (headerSettings.type) {\r\n @case ('second') {\r\n <div class=\"mrx-table-card-header mb-3 pt-2 pb-2\" [class.--substrate]=\"headerSettings.substrate\">\r\n <div class=\"row\">\r\n <div\r\n class=\"mrx-table-card-header--left col col-12 col-sm-6 mb-1 mb-sm-0 d-flex justify-content-start align-content-center\">\r\n <ng-container [ngTemplateOutlet]=\"sortTemplate\"></ng-container>\r\n </div>\r\n\r\n <div class=\"mrx-table-card-header--right col col-12 col-sm-6 d-flex justify-content-end align-content-center\">\r\n <ng-container [ngTemplateOutlet]=\"downloadTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n @default {\r\n <div class=\"mrx-table-card-header py-12px mb-3\" [class.--substrate]=\"headerSettings.substrate\">\r\n <div class=\"row\">\r\n <div\r\n class=\"mrx-table-card-header--left col col-12 col-md-6 mb-1 mb-md-0 d-flex justify-content-start align-content-center\">\r\n <ng-container [ngTemplateOutlet]=\"counterTemplate\"></ng-container>\r\n </div>\r\n\r\n <div class=\"mrx-table-card-header--right col col-12 col-md-6 d-flex justify-content-end align-content-center\">\r\n <ng-container [ngTemplateOutlet]=\"sortTemplate\"></ng-container>\r\n\r\n @if (headerSettings.toggle) {\r\n <div class=\"ml-4\">\r\n <ng-container [ngTemplateOutlet]=\"toggleTemplate\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n }\r\n }\r\n\r\n @switch (type) {\r\n @case ('cards') {\r\n <div class=\"mrx-table__wrapper\">\r\n @for (item of data; let index = $index; let first = $first; let last = $last; track item[trackById] || index) {\r\n <ng-container [ngTemplateOutlet]=\"templateCard\" [ngTemplateOutletContext]=\"{item, index, first, last}\"></ng-container>\r\n }\r\n\r\n @if (!data.length) {\r\n <div class=\"mrx-table__result-message--substrate\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"emptyResultMsg ? emptyResultMsgTemplateDefault : emptyResultMsgTemplate\"\r\n ></ng-container>\r\n </div>\r\n }\r\n\r\n <div class=\"mrx-table__overlay\" [@visibleLoading]=\"isLoading ? 'in' : 'out'\" [ngClass]=\"{'open': isLoading}\">\r\n <mrx-loader [size]=\"loaderSettings.size\" [color]=\"loaderSettings.color\"></mrx-loader>\r\n </div>\r\n </div>\r\n }\r\n @default {\r\n <div class=\"mrx-table__wrapper\" [class.--substrate]=\"contentSettings.substrate\">\r\n <table\r\n [class.table-striped]=\"striped\"\r\n [class.table-solid]=\"!striped\"\r\n [class.mt-2]=\"contentSettings.substrate\"\r\n [class.mb-3]=\"contentSettings.substrate && data.length\"\r\n >\r\n <thead [class.table-head-gray]=\"!headerSettings || headerSettings.background\">\r\n <tr>\r\n @for (col of contentChildren; let index = $index; let first = $first; let last = $last; track index) {\r\n <th [class]=\"col.customClasses\">\r\n @if (!col.templateHead) {\r\n @if (col.sortable) {\r\n <div [class.th-wrapper]=\"sortable\" (click)=\"onSortColumn(col.name, col.sortable)\">\r\n <span>{{ col.label }}</span>\r\n <svg\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n [class]=\"columnSortedDir(col.name)\"\r\n class=\"mrx-table__sort-icon\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 9L8 13L12 9\" fill=\"#DAD5CE\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 7L8 3L4 7\" fill=\"#DAD5CE\"/>\r\n </svg>\r\n </div>\r\n } @else {\r\n <div><span>{{ col.label }}</span></div>\r\n }\r\n } @else {\r\n @if (col.sortable) {\r\n <div [class.th-wrapper]=\"sortable\" (click)=\"onSortColumn(col.name, col.sortable)\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"col.templateHead\"\r\n [ngTemplateOutletContext]=\"{col, index, first, last}\"\r\n ></ng-container>\r\n\r\n <svg\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n [class]=\"columnSortedDir(col.name)\"\r\n class=\"mrx-table__sort-icon\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 9L8 13L12 9\" fill=\"#DAD5CE\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 7L8 3L4 7\" fill=\"#DAD5CE\"/>\r\n </svg>\r\n </div>\r\n } @else {\r\n <ng-container\r\n [ngTemplateOutlet]=\"col.templateHead\"\r\n [ngTemplateOutletContext]=\"{col, index, first, last}\"\r\n ></ng-container>\r\n }\r\n }\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n @for (dataItem of data; let index = $index; let first = $first; let last = $last; track dataItem[trackById] || index) {\r\n <tr [class.-hovered]=\"hovered\">\r\n @for (col of contentChildren; let index = $index; let first = $first; let last = $last; track index) {\r\n <td #tableTD class=\"p-0\" [class]=\"col.customClasses\">\r\n @if (link && col['isLink']) {\r\n <a class=\"link-wrapper td-content-wrapper\" [href]=\"getLinkForStroke(link, dataItem)\"></a>\r\n }\r\n\r\n @if (!col.templateCell) {\r\n <div class=\"td-content-wrapper p-2 h-100\">{{ dataItem[col.name] }}</div>\r\n } @else {\r\n <div class=\"td-content-wrapper h-100\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"col.templateCell\"\r\n [ngTemplateOutletContext]=\"{col, row: dataItem, index, first, last}\"\r\n ></ng-container>\r\n </div>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n\r\n @if (!data.length) {\r\n <div class=\"mrx-table__result-message\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"emptyResultMsg ? emptyResultMsgTemplateDefault : emptyResultMsgTemplate\"\r\n ></ng-container>\r\n </div>\r\n }\r\n\r\n <div class=\"mrx-table__overlay\" [@visibleLoading]=\"isLoading ? 'in' : 'out'\" [ngClass]=\"{'open': isLoading}\">\r\n <mrx-loader [size]=\"loaderSettings.size\" [color]=\"loaderSettings.color\"></mrx-loader>\r\n </div>\r\n </div>\r\n }\r\n }\r\n</div>\r\n\r\n@if (total) {\r\n <div class=\"mrx-table__paginator pt-2 pb-2\" [class.mrx-table__paginator--substrate]=\"paginatorSettings.substrate\">\r\n @if (pageable) {\r\n <mrx-paginator\r\n [total]=\"total\"\r\n [pageSize]=\"pageSize\"\r\n [position]=\"pageable.position\"\r\n [pageSizes]=\"pageable.pageSizes\"\r\n [currentPage]=\"currentPage\"\r\n [withPageSize]=\"pageable.withPageSize\"\r\n (dataStateChanged)=\"onDataStatePaginatorChanged($event)\">\r\n </mrx-paginator>\r\n }\r\n </div>\r\n}\r\n\r\n<ng-template #counterTemplate>\r\n @if (headerSettings && headerSettings.count) {\r\n <span class=\"mrx-table-counter\">\r\n {{ total }} {{ headerSettings && headerSettings.countText ? headerSettings.countText : '\u043D\u043E\u0432\u043E\u0441\u0442\u0435\u0439' }}\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #sortTemplate>\r\n @if (headerSettings && headerSettings.sort) {\r\n <div class=\"d-flex mrx-table-sort\">\r\n <div class=\"mrx-table-sort-scale\">\r\n <div class=\"mrx-table-sort-scale__title mr-2\" (click)=\"changeSort()\">\r\n <span>\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E:</span>\r\n\r\n <div class=\"mrx-table-sort-scale__icon\">\r\n @if (sort && sort.dir === 'desc') {\r\n <span class=\"mrx-icon icon-sorting-down icon-font-16\"></span>\r\n }\r\n @if (sort && sort.dir === 'asc') {\r\n <span class=\"mrx-icon icon-sorting-up icon-font-16\"></span>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"mrx-table-sort-scale__drop-trigger\" [mrxPopupTrigger]=\"sortDropdown\" [popupPosition]=\"popupPosition\">\r\n <span>{{ selectedSort }}</span>\r\n <span\r\n class=\"mrx-icon icon-font-16\"\r\n [class.icon-chevron-up]=\"isOpenSort\"\r\n [class.icon-chevron-down]=\"!isOpenSort\"\r\n ></span>\r\n </div>\r\n </div>\r\n\r\n <mrx-popup #sortDropdown [minWidth]=\"'250px'\" [closeAfterClick]=\"true\" (toggle)=\"togglePopup($event)\">\r\n @for (item of colArray; track item) {\r\n <mrx-popup-item\r\n [id]=\"item.sortLabel\"\r\n (clicked)=\"updateSortSelect(item)\"\r\n >\r\n {{ item.sortLabel || item.name }}\r\n </mrx-popup-item>\r\n }\r\n </mrx-popup>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #downloadTemplate>\r\n @if (headerSettings && headerSettings.download) {\r\n <div class=\"mrx-table-download\" (click)=\"clickToDownload($event)\">\r\n <span class=\"desktop\">\u0421\u043A\u0430\u0447\u0430\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0435</span>\r\n <span class=\"mrx-icon icon-download icon-font-24\"></span>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #toggleTemplate>\r\n <div class=\"mrx-table-toggle\">\r\n <div class=\"mrx-table-toggle--item mr-1\" (click)=\"onChangeTypeTable('cards')\" [class.active]=\"type === 'cards'\">\r\n <span class=\"mrx-icon icon-cards-view icon-font-24\"></span>\r\n </div>\r\n <div class=\"mrx-table-toggle--item\" (click)=\"onChangeTypeTable('default')\" [class.active]=\"type === 'default'\">\r\n <span class=\"mrx-icon icon-table-view icon-font-24\"></span>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #emptyResultMsgTemplateDefault>\r\n {{ emptyResultMsg }}\r\n</ng-template>\r\n", styles: [".mrx-table.mrx-table{display:block;width:100%}.mrx-table.mrx-table .th-wrapper{display:flex;cursor:pointer;word-break:inherit;justify-content:space-between;align-items:flex-end}.mrx-table.mrx-table .th-wrapper span{word-break:inherit}.mrx-table.mrx-table .mrx-table__sort-icon.asc path:last-child{fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table__sort-icon.desc path:first-child{fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table__wrapper.mrx-table__wrapper{overflow-x:auto;overflow-y:hidden;position:relative}.mrx-table__wrapper.mrx-table__wrapper .mrx-table__wrapper--substrate{padding-top:8px}.mrx-table.mrx-table.type-default table{width:100%;text-align:left;background-color:transparent;border-spacing:0}.mrx-table.mrx-table.type-default table thead.table-head-gray{background:var(--neutral-bg-island-default, #F8F9FA)}.mrx-table.mrx-table.type-default table thead .sort-asc .custom-table__sort path:nth-child(2){fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table thead .sort-desc .custom-table__sort path:nth-child(1){fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table td{max-width:340px;vertical-align:top;position:relative;padding:0}.mrx-table.mrx-table.type-default table td .link-wrapper{display:block;color:initial;height:100%;position:absolute;inset:0;text-decoration:none}.mrx-table.mrx-table.type-default table td .link-wrapper:active{color:var(--neutral-text-primary, #262626)}.mrx-table.mrx-table.type-default table td .left-border{border-left:4px solid var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table td .light-border{border-left:4px solid transparent}.mrx-table.mrx-table.type-default table td .warning-back{background-color:#ffece7}.mrx-table.mrx-table.type-default table td .disabled-back{background-color:#fafafa}.mrx-table.mrx-table.type-default table td .link-colored,.mrx-table.mrx-table.type-default table td .link-colored:active{color:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table th{padding:8px;vertical-align:bottom;word-break:inherit;font-weight:700}.mrx-table.mrx-table.type-default table th svg{margin-left:8px;cursor:pointer}.mrx-table.mrx-table .mrx-table-card-header{position:relative}.mrx-table.mrx-table .mrx-table-card-header.--substrate{padding-left:24px;padding-right:24px;background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px}.mrx-table.mrx-table .mrx-table__wrapper.--substrate{background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px}.mrx-table.mrx-table .mrx-table-toggle{display:flex}.mrx-table.mrx-table .mrx-table-toggle--item{display:flex;align-items:center;justify-content:center;cursor:pointer}.mrx-table.mrx-table .mrx-table-toggle--item .mrx-icon{color:#e5e5e5}.mrx-table.mrx-table .mrx-table-toggle--item.active .mrx-icon{color:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table-sort.mrx-table-sort--is-card,.mrx-table.mrx-table .mrx-table-sort.mrx-table-sort--is-table{justify-content:flex-start}.mrx-table.mrx-table .mrx-table-sort-scale{display:flex;align-items:center;flex-wrap:wrap;cursor:pointer;gap:4px;font-family:var(--body-md-font-family, \"PT Sans\");font-weight:var(--body-md-font-weight, 400);font-size:var(--body-md-font-size, 14px);line-height:var(--body-md-line-height, 20px);color:var(--neutral-text-primary, #262626)}.mrx-table.mrx-table .mrx-table-sort-scale__title{display:flex;align-items:center;gap:8px}.mrx-table.mrx-table .mrx-table-sort-scale__icon{display:flex;align-items:center;justify-content:center}.mrx-table.mrx-table .mrx-table-sort-scale__drop-trigger{display:flex;align-items:center;gap:4px}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select{max-width:215px;margin-bottom:0}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-select-container.ng-select-container{min-height:auto!important;border:none;cursor:pointer;align-items:center;height:100%!important}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-value-container.ng-value-container{padding-left:0!important;margin-right:8px}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-arrow-wrapper.ng-arrow-wrapper{min-height:auto;width:auto!important}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-dropdown-panel.ng-dropdown-panel{width:100vw;max-width:215px;left:auto;right:0}.mrx-table__paginator.mrx-table__paginator.mrx-table__paginator--substrate{padding-left:24px;padding-right:24px;background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px}.mrx-table.mrx-table .table-striped tbody tr:nth-child(2n){background-color:var(--neutral-bg-island-default, #F8F9FA)}.mrx-table.mrx-table .table-striped tbody tr:nth-child(n){transition:.2s}.mrx-table.mrx-table .table-striped tbody tr:nth-child(n).-hovered:hover{background-color:var(--brand-bg-tertiary-hover, #edf5ff)}.mrx-table.mrx-table .table-solid{border-collapse:collapse}.mrx-table.mrx-table .table-solid thead tr{border-bottom:1px solid #f2f2f2}.mrx-table.mrx-table .table-solid tbody tr:not(:last-child){border-bottom:1px solid #f2f2f2}.mrx-table.mrx-table .table-solid tbody tr.-hovered:hover{box-shadow:0 1px 4px #3a3a3a4d}.mrx-table.mrx-table .mrx-table__wrapper .mrx-table__overlay{position:absolute;inset:0;background:#ffffffb3;display:flex;align-items:flex-start;justify-content:center;padding-top:12px;border-radius:4px}.mrx-table .mrx-table__result-message{display:flex;justify-content:center;width:100%;padding:var(--spacing-4);font-family:var(--body-md-font-family);font-weight:var(--body-md-font-weight);font-size:var(--body-md-font-size);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary)}.mrx-table .mrx-table__result-message *{font-family:var(--body-md-font-family);font-weight:var(--body-md-font-weight);font-size:var(--body-md-font-size);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary)}.mrx-table .mrx-table__result-message--substrate{display:flex;justify-content:center;width:100%;font-weight:400;font-size:16px;line-height:24px;color:var(--neutral-text-primary, #262626);padding:24px;background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px;position:relative}.mrx-table.mrx-table .mrx-table-download{display:flex;align-items:center;justify-content:flex-end;cursor:pointer}.mrx-table.mrx-table .mrx-table-download span{margin-right:8px;color:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table-download svg path{stroke:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table-counter{display:flex;align-items:center;font-family:var(--body-lg-font-family);font-size:var(--body-lg-font-size);font-weight:var(--body-lg-font-weight);line-height:var(--body-lg-line-height)}\n"] }]
223
225
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { contentChildren: [{
224
226
  type: ContentChildren,
225
227
  args: [ColumnComponent]
@@ -281,4 +283,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
281
283
  }], change: [{
282
284
  type: Output
283
285
  }] } });
284
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFnRyxhQUFhLEVBQWtCLE1BQU0sY0FBYyxDQUFDO0FBQzNKLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUF3QnhGLE1BQU0sT0FBTyxjQUFjO0lBaUVMO0lBaEViLFFBQVEsR0FBc0IsRUFBRSxDQUFDO0lBQ2pDLFFBQVEsR0FBeUIsb0JBQW9CLENBQUM7SUFDdEQsWUFBWSxHQUFHLEVBQUUsQ0FBQTtJQUNqQixJQUFJLEdBQUcsS0FBSyxDQUFBO0lBQ1osVUFBVSxHQUFZLEtBQUssQ0FBQztJQUVELGVBQWUsQ0FBOEI7SUFDakQsWUFBWSxDQUFvQjtJQUN0QixzQkFBc0IsQ0FBb0I7SUFFekUsSUFBSSxHQUFjLFNBQVMsQ0FBQztJQUM1QixJQUFJLENBQW1CO0lBQ3ZCLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDZCxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLEtBQUssR0FB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QWE7c0JBQXJCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBSUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUlHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBU0ssV0FBVztzQkFEckIsS0FBSzt1QkFBQyxVQUFVO2dCQVdQLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgQ29udGVudENoaWxkcmVuLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250ZW50U2V0dGluZ3MsIEhlYWRlclNldHRpbmdzLCBQYWdpbmF0b3JTZXR0aW5ncywgU29ydERlc2NyaXB0b3IsIFRhYmxlQm9keUl0ZW0sIFRhYmxlVHlwZSwgVGFibGVUeXBlRW51bSwgTG9hZGVyU2V0dGluZ3MgfSBmcm9tICcuL3RhYmxlLmVudW0nO1xyXG5pbXBvcnQgeyBDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29sdW1uL2NvbHVtbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYWdlclNldHRpbmdzLCBEYXRhU3RhdGVDaGFuZ2VFdmVudCB9IGZyb20gJy4vbW9kZWxzJztcclxuaW1wb3J0IHsgRGVmYXVsdFBhZ2VyU2V0dGluZ3MgfSBmcm9tICcuL2RlZmF1bHQvZGVmYXVsdC1wYWdlci1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IFBhZ2luYXRlT3V0cHV0T2JqZWN0IH0gZnJvbSAnLi4vcGFnaW5hdG9yL3BhZ2luYXRvci5lbnVtJztcclxuaW1wb3J0IHsgYW5pbWF0ZSwgZ3JvdXAsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBQb3NpdGlvblR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9vdmVybGF5JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcigndmlzaWJsZUxvYWRpbmcnLCBbXHJcbiAgICAgIHN0YXRlKCdpbicsIHN0eWxlKHsgb3BhY2l0eTogMSwgdmlzaWJpbGl0eTogJ3Zpc2libGUnIH0pKSxcclxuICAgICAgc3RhdGUoJ291dCcsIHN0eWxlKHsgb3BhY2l0eTogMCwgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdpbiA9PiBvdXQnLCBbZ3JvdXAoW1xyXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4tb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKSxcclxuICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLWluLW91dCcsIHN0eWxlKHsgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpXHJcbiAgICAgIF1cclxuICAgICAgKV0pLFxyXG4gICAgICB0cmFuc2l0aW9uKCdvdXQgPT4gaW4nLCBbZ3JvdXAoW1xyXG4gICAgICAgIGFuaW1hdGUoJzFtcyBlYXNlLWluLW91dCcsIHN0eWxlKHsgdmlzaWJpbGl0eTogJ3Zpc2libGUnIH0pKSxcclxuICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLWluLW91dCcsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSlcclxuICAgICAgXVxyXG4gICAgICApXSlcclxuICAgIF0pXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICBwdWJsaWMgY29sQXJyYXk6IENvbHVtbkNvbXBvbmVudFtdID0gW107XHJcbiAgcHVibGljIHBhZ2VhYmxlOiBQYWdlclNldHRpbmdzIHwgbnVsbCA9IERlZmF1bHRQYWdlclNldHRpbmdzO1xyXG4gIHB1YmxpYyBzZWxlY3RlZFNvcnQgPSAnJ1xyXG4gIHB1YmxpYyBpbml0ID0gZmFsc2VcclxuICBwdWJsaWMgaXNPcGVuU29ydDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAQ29udGVudENoaWxkcmVuKENvbHVtbkNvbXBvbmVudCkgY29udGVudENoaWxkcmVuITogUXVlcnlMaXN0PENvbHVtbkNvbXBvbmVudD47XHJcbiAgQENvbnRlbnRDaGlsZCgndGVtcGxhdGVDYXJkJykgdGVtcGxhdGVDYXJkITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAQ29udGVudENoaWxkKCdlbXB0eVJlc3VsdE1zZ1RlbXBsYXRlJykgZW1wdHlSZXN1bHRNc2dUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBJbnB1dCgpIHR5cGU6IFRhYmxlVHlwZSA9ICdkZWZhdWx0JztcclxuICBASW5wdXQoKSBkYXRhITogVGFibGVCb2R5SXRlbVtdO1xyXG4gIEBJbnB1dCgpIHBhZ2VTaXplID0gMjA7XHJcbiAgQElucHV0KCkgY3VycmVudFBhZ2UgPSAxO1xyXG4gIEBJbnB1dCgpIHRvdGFsID0gMDtcclxuICBASW5wdXQoKSBsaW5rID0gJyc7XHJcbiAgQElucHV0KCkgaXNMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHNvcnQ6IFNvcnREZXNjcmlwdG9yIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHRyYWNrQnlJZCA9ICdpZCc7XHJcbiAgQElucHV0KCkgc29ydGFibGUgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHN0cmlwZWQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzZXMgPSAnJ1xyXG4gIEBJbnB1dCgpIGVtcHR5UmVzdWx0TXNnID0gJydcclxuICBASW5wdXQoKSBob3ZlcmVkID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwb3B1cFBvc2l0aW9uOiBQb3NpdGlvblR5cGUgPSAnYm90dG9tLWVuZCc7XHJcblxyXG4gIEBJbnB1dCgpIGF1dG9IZWlnaHQgPSB0cnVlIC8vIGRlcHJlY2F0ZWRcclxuXHJcbiAgQElucHV0KCkgaGVhZGVyU2V0dGluZ3M6IEhlYWRlclNldHRpbmdzIHwgdW5kZWZpbmVkXHJcblxyXG4gIEBJbnB1dCgpIGNvbnRlbnRTZXR0aW5nczogQ29udGVudFNldHRpbmdzID0ge1xyXG4gICAgc3Vic3RyYXRlOiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgcGFnaW5hdG9yU2V0dGluZ3M6IFBhZ2luYXRvclNldHRpbmdzID0ge1xyXG4gICAgc3Vic3RyYXRlOiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgbG9hZGVyU2V0dGluZ3M6IExvYWRlclNldHRpbmdzID0ge1xyXG4gICAgc2l6ZTogJ2xhcmdlJyxcclxuICAgIGNvbG9yOiAnYnJhbmQnXHJcbiAgfVxyXG5cclxuICAvLyDQn9GA0L7QstC10YDQuNGC0Ywg0Lgg0LLRi9GA0LXQt9Cw0YLRjFxyXG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW0gPSAxXHJcblxyXG4gIEBJbnB1dCgncGFnZWFibGUnKVxyXG4gIHB1YmxpYyBzZXQgc2V0UGFnZWFibGUodmFsdWU6IFBhZ2VyU2V0dGluZ3MgfCBib29sZWFuKSB7XHJcbiAgICBpZiAodmFsdWUgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5wYWdlYWJsZSA9IERlZmF1bHRQYWdlclNldHRpbmdzO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHtcclxuICAgICAgdGhpcy5wYWdlYWJsZSA9IG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBhZ2VhYmxlID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgZGF0YVN0YXRlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPERhdGFTdGF0ZUNoYW5nZUV2ZW50PiA9XHJcbiAgICBuZXcgRXZlbnRFbWl0dGVyPERhdGFTdGF0ZUNoYW5nZUV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBkb3dubG9hZERhdGE6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpXHJcbiAgQE91dHB1dCgpIGNoYW5nZVR5cGVUYWJsZTogRXZlbnRFbWl0dGVyPFRhYmxlVHlwZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlVHlwZT4oKVxyXG4gIEBPdXRwdXQoKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNvbEFycmF5ID0gdGhpcy5jb250ZW50Q2hpbGRyZW4udG9BcnJheSgpO1xyXG5cclxuICAgIHRoaXMuY29sQXJyYXkuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgaWYgKHRoaXMuc29ydCAmJiB0aGlzLnNvcnQuY29sID09PSBpdGVtLm5hbWUpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkU29ydCA9IGl0ZW0uc29ydExhYmVsIHx8IGl0ZW0ubmFtZVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuY29sQXJyYXkgPSB0aGlzLmNvbEFycmF5LmZpbHRlcihpdGVtID0+IHtcclxuICAgICAgcmV0dXJuIGl0ZW0ubmFtZSAhPT0gJycgJiYgaXRlbS5zb3J0TGFiZWxcclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICAgIHRoaXMuaW5pdCA9IHRydWVcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Q2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAkeyBUYWJsZVR5cGVFbnVtW3RoaXMudHlwZV0gfSAkeyB0aGlzLmN1c3RvbUNsYXNzZXMgfWA7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBpdGVtW3RoaXMudHJhY2tCeUlkXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VTb3J0KCkge1xyXG4gICAgY29uc3QgbmV3RXZlbnREYXRhOiBEYXRhU3RhdGVDaGFuZ2VFdmVudCA9IHsgcGFnZTogdGhpcy5jdXJyZW50UGFnZSwgcGFnZVNpemU6IHRoaXMucGFnZVNpemUgfTtcclxuXHJcbiAgICBpZiAoIXRoaXMuY29sQXJyYXkubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNvcnQpIHtcclxuICAgICAgbmV3RXZlbnREYXRhLnNvcnQgPSB7XHJcbiAgICAgICAgZGlyOiB0aGlzLnNvcnQuZGlyID09PSAnZGVzYycgPyAnYXNjJyA6ICdkZXNjJyxcclxuICAgICAgICBjb2w6IHRoaXMuc29ydC5jb2xcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5ld0V2ZW50RGF0YS5zb3J0ID0ge1xyXG4gICAgICAgIGRpcjogJ2FzYycsXHJcbiAgICAgICAgY29sOiB0aGlzLmNvbEFycmF5WzBdLm5hbWVcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGFTdGF0ZUNoYW5nZWQuZW1pdChuZXdFdmVudERhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbHVtblNvcnRlZERpcihjb2x1bW46IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5zb3J0ICYmIHRoaXMuc29ydC5jb2wgPT0gY29sdW1uICYmIHRoaXMuc29ydC5kaXIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc29ydC5kaXI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Tb3J0Q29sdW1uKGNvbHVtbjogc3RyaW5nLCBzb3J0YWJsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKCFzb3J0YWJsZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV3RXZlbnREYXRhOiBEYXRhU3RhdGVDaGFuZ2VFdmVudCA9IHsgcGFnZTogdGhpcy5jdXJyZW50UGFnZSwgcGFnZVNpemU6IHRoaXMucGFnZVNpemUgfTtcclxuXHJcbiAgICBpZiAodGhpcy5zb3J0ICYmIHRoaXMuc29ydC5jb2wgPT0gY29sdW1uKSB7XHJcbiAgICAgIGlmICh0aGlzLnNvcnQuZGlyICYmIHRoaXMuc29ydC5kaXIgPT09ICdhc2MnKSB7XHJcbiAgICAgICAgbmV3RXZlbnREYXRhLnNvcnQgPSB7IGRpcjogJ2Rlc2MnLCBjb2w6IGNvbHVtbiB9O1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdFdmVudERhdGEuc29ydCA9IHsgZGlyOiAnYXNjJywgY29sOiBjb2x1bW4gfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGFTdGF0ZUNoYW5nZWQuZW1pdChuZXdFdmVudERhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsaWNrVG9Eb3dubG9hZChldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuZG93bmxvYWREYXRhLmVtaXQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlU29ydFNlbGVjdCh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXdFdmVudERhdGE6IERhdGFTdGF0ZUNoYW5nZUV2ZW50ID0ge1xyXG4gICAgICBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlLFxyXG4gICAgICBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSxcclxuICAgICAgc29ydDoge1xyXG4gICAgICAgIGNvbDogdmFsdWUubmFtZSxcclxuICAgICAgICBkaXI6IHRoaXMuc29ydD8uZGlyXHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5kYXRhU3RhdGVDaGFuZ2VkLmVtaXQobmV3RXZlbnREYXRhKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRGF0YVN0YXRlUGFnaW5hdG9yQ2hhbmdlZChwYWdpbmF0aW9uOiBQYWdpbmF0ZU91dHB1dE9iamVjdCk6IHZvaWQge1xyXG4gICAgY29uc3QgbmV3RXZlbnREYXRhOiBEYXRhU3RhdGVDaGFuZ2VFdmVudCA9IHtcclxuICAgICAgcGFnZTogcGFnaW5hdGlvbi5jdXJyZW50UGFnZSxcclxuICAgICAgcGFnZVNpemU6IHBhZ2luYXRpb24ucGFnZVNpemVcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuc29ydCAmJiB0aGlzLnNvcnQuY29sICYmIHRoaXMuc29ydC5kaXIpIHtcclxuICAgICAgbmV3RXZlbnREYXRhLnNvcnQgPSB7IGRpcjogdGhpcy5zb3J0LmRpciwgY29sOiB0aGlzLnNvcnQuY29sIH07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRhU3RhdGVDaGFuZ2VkLmVtaXQobmV3RXZlbnREYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRMaW5rRm9yU3Ryb2tlKGxpbms6IHN0cmluZywgZGF0YUl0ZW06IFRhYmxlQm9keUl0ZW0pIHtcclxuICAgIC8vINGA0LXQs9GD0LvRj9GA0LrQuFxyXG4gICAgY29uc3QgcmVnRXhwUGFyYW1zID0gLyg/PD1cXFspW15cXHNcXFtcXF1dKyg/PV0pL2dpO1xyXG4gICAgLy8g0L7RgdC90L7QstC90L7QuSDQvNCw0YHRgdC40LJcclxuICAgIGNvbnN0IGxpbmtBcnJheSA9IGxpbmsuc3BsaXQoJz8nKVxyXG4gICAgLy8g0LzQsNGB0YHQuNCy0Ysg0YHRgtGA0L7QuiB1cmwg0Lgg0L/QsNGA0LDQvNC10YLRgNC+0LJcclxuICAgIGNvbnN0IGFycmF5VXJsID0gbGlua0FycmF5WzBdPy5zcGxpdCgnLycpXHJcbiAgICBjb25zdCBzZWFyY2hQYXJhbXMgPSBsaW5rQXJyYXlbMV0/LnNwbGl0KCcmJylcclxuICAgIGNvbnN0IHNlYXJjaFBhcmFtc09iaiA9IHNlYXJjaFBhcmFtcz8ubWFwKChzdHIpID0+IHtcclxuICAgICAgY29uc3Qgc3RyUGFyYW1EYXRhID0gc3RyLnNwbGl0KCc9JylbMV0ubWF0Y2gocmVnRXhwUGFyYW1zKVxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIG5hbWU6IHN0ci5zcGxpdCgnPScpWzBdLFxyXG4gICAgICAgIGRhdGE6IHN0clBhcmFtRGF0YSA/IHN0clBhcmFtRGF0YVswXSA6IHN0ci5zcGxpdCgnPScpWzBdLFxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIC8vINC+0LHRgNCw0LHQvtGC0LrQsCDRgtC10LvQsCB1cmxcclxuICAgIGNvbnN0IHN0clVybCA9IGFycmF5VXJsLm1hcCgoc3RyKSA9PiB7XHJcbiAgICAgIGlmIChzdHIubWF0Y2gocmVnRXhwUGFyYW1zKSkge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICByZXR1cm4gZGF0YUl0ZW1bc3RyLm1hdGNoKHJlZ0V4cFBhcmFtcylbMF1dXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHN0clxyXG4gICAgICB9XHJcbiAgICB9KS5qb2luKCcvJylcclxuICAgIC8vINC+0LHRgNCw0LHQvtGC0LrQsCDQv9Cw0YDQsNC80LXRgtGA0L7QslxyXG4gICAgLy8g0LXRgdC70Lgg0LXRgdGC0Ywg0L/QsNGA0LDQvNC10YLRgNGLIC0g0LLQvtC30LLRgNCw0YnQsNC10Lwg0LjRhSDRgdGC0YDQvtC60L7QuSDRgSDQtNC40L3QsNC80LjRh9C10YHQutC40LzQuCDQv9Cw0YDQsNC80LXRgtGA0LDQvNC4XHJcblxyXG4gICAgY29uc3Qgc3RyUGFyYW1zID0gc2VhcmNoUGFyYW1zT2JqID8gc2VhcmNoUGFyYW1zT2JqLm1hcCgocGFyYW0sIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgcmV0dXJuIGAkeyBpbmRleCA+IDAgPyAnJyA6ICc/JyB9JHsgcGFyYW0ubmFtZSB9PSR7IGRhdGFJdGVtW3BhcmFtLmRhdGFdIH1gXHJcbiAgICB9KS5qb2luKCcmJykgOiAnJ1xyXG5cclxuICAgIHJldHVybiBgJHsgc3RyVXJsIH0keyBzdHJQYXJhbXMgfWBcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZVR5cGVUYWJsZSh0eXBlOiBUYWJsZVR5cGUpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hhbmdlVHlwZVRhYmxlLmVtaXQodHlwZSlcclxuICB9XHJcblxyXG4gIHRvZ2dsZVBvcHVwKGlzT3BlbjogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pc09wZW5Tb3J0ID0gaXNPcGVuXHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtcngtdGFibGVcIiBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiIFtjbGFzcy5tYi0zXT1cInBhZ2VhYmxlXCI+XHJcbiAgQGlmIChoZWFkZXJTZXR0aW5ncykge1xyXG4gICAgQHN3aXRjaCAoaGVhZGVyU2V0dGluZ3MudHlwZSkge1xyXG4gICAgICBAY2FzZSAoJ3NlY29uZCcpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlLWNhcmQtaGVhZGVyIG1iLTMgcHQtMiBwYi0yXCIgW2NsYXNzLi0tc3Vic3RyYXRlXT1cImhlYWRlclNldHRpbmdzLnN1YnN0cmF0ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtcngtdGFibGUtY2FyZC1oZWFkZXItLWxlZnQgY29sIGNvbC0xMiBjb2wtc20tNiBtYi0xIG1iLXNtLTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic29ydFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC10YWJsZS1jYXJkLWhlYWRlci0tcmlnaHQgY29sIGNvbC0xMiBjb2wtc20tNiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZG93bmxvYWRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBkZWZhdWx0IHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlLWNhcmQtaGVhZGVyIHB5LTEycHggbWItM1wiIFtjbGFzcy4tLXN1YnN0cmF0ZV09XCJoZWFkZXJTZXR0aW5ncy5zdWJzdHJhdGVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibXJ4LXRhYmxlLWNhcmQtaGVhZGVyLS1sZWZ0IGNvbCBjb2wtMTIgY29sLW1kLTYgbWItMSBtYi1tZC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24tY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvdW50ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtdGFibGUtY2FyZC1oZWFkZXItLXJpZ2h0IGNvbCBjb2wtMTIgY29sLW1kLTYgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24tY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNvcnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICBAaWYgKGhlYWRlclNldHRpbmdzLnRvZ2dsZSkge1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTRcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0b2dnbGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAc3dpdGNoICh0eXBlKSB7XHJcbiAgICBAY2FzZSAoJ2NhcmRzJykge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlX193cmFwcGVyXCI+XHJcbiAgICAgICAgQGZvciAoaXRlbSBvZiBkYXRhOyBsZXQgaW5kZXggPSAkaW5kZXg7IGxldCBmaXJzdCA9ICRmaXJzdDsgbGV0IGxhc3QgPSAkbGFzdDsgdHJhY2sgaXRlbVt0cmFja0J5SWRdIHx8IGluZGV4KSB7XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlQ2FyZFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aXRlbSwgaW5kZXgsIGZpcnN0LCBsYXN0fVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGlmICghZGF0YS5sZW5ndGgpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtdGFibGVfX3Jlc3VsdC1tZXNzYWdlLS1zdWJzdHJhdGVcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVtcHR5UmVzdWx0TXNnID8gZW1wdHlSZXN1bHRNc2dUZW1wbGF0ZURlZmF1bHQgOiBlbXB0eVJlc3VsdE1zZ1RlbXBsYXRlXCJcclxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlX19vdmVybGF5XCIgW0B2aXNpYmxlTG9hZGluZ109XCJpc0xvYWRpbmcgPyAnaW4nIDogJ291dCdcIiBbbmdDbGFzc109XCJ7J29wZW4nOiBpc0xvYWRpbmd9XCI+XHJcbiAgICAgICAgICA8bXJ4LWxvYWRlciBbc2l6ZV09XCJsb2FkZXJTZXR0aW5ncy5zaXplXCIgW2NvbG9yXT1cImxvYWRlclNldHRpbmdzLmNvbG9yXCI+PC9tcngtbG9hZGVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIEBkZWZhdWx0IHtcclxuICAgICAgPGRpdiBjbGFzcz1cIm1yeC10YWJsZV9fd3JhcHBlclwiIFtjbGFzcy4tLXN1YnN0cmF0ZV09XCJjb250ZW50U2V0dGluZ3Muc3Vic3RyYXRlXCI+XHJcbiAgICAgICAgPHRhYmxlXHJcbiAgICAgICAgICBbY2xhc3MudGFibGUtc3RyaXBlZF09XCJzdHJpcGVkXCJcclxuICAgICAgICAgIFtjbGFzcy50YWJsZS1zb2xpZF09XCIhc3RyaXBlZFwiXHJcbiAgICAgICAgICBbY2xhc3MubXQtMl09XCJjb250ZW50U2V0dGluZ3Muc3Vic3RyYXRlXCJcclxuICAgICAgICAgIFtjbGFzcy5tYi0zXT1cImNvbnRlbnRTZXR0aW5ncy5zdWJzdHJhdGUgJiYgZGF0YS5sZW5ndGhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDx0aGVhZCBbY2xhc3MudGFibGUtaGVhZC1ncmF5XT1cIiFoZWFkZXJTZXR0aW5ncyB8fCBoZWFkZXJTZXR0aW5ncy5iYWNrZ3JvdW5kXCI+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgY29udGVudENoaWxkcmVuOyBsZXQgaW5kZXggPSAkaW5kZXg7IGxldCBmaXJzdCA9ICRmaXJzdDsgbGV0IGxhc3QgPSAkbGFzdDsgdHJhY2sgaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIDx0aCBbY2xhc3NdPVwiY29sLmN1c3RvbUNsYXNzZXNcIj5cclxuICAgICAgICAgICAgICAgICAgQGlmICghY29sLnRlbXBsYXRlSGVhZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoY29sLnNvcnRhYmxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy50aC13cmFwcGVyXT1cInNvcnRhYmxlXCIgKGNsaWNrKT1cIm9uU29ydENvbHVtbihjb2wubmFtZSwgY29sLnNvcnRhYmxlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBjb2wubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29sdW1uU29ydGVkRGlyKGNvbC5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtcngtdGFibGVfX3NvcnQtaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk00IDlMOCAxM0wxMiA5XCIgZmlsbD1cIiNEQUQ1Q0VcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTEyIDdMOCAzTDQgN1wiIGZpbGw9XCIjREFENUNFXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj57eyBjb2wubGFiZWwgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbC5zb3J0YWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MudGgtd3JhcHBlcl09XCJzb3J0YWJsZVwiIChjbGljayk9XCJvblNvcnRDb2x1bW4oY29sLm5hbWUsIGNvbC5zb3J0YWJsZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbC50ZW1wbGF0ZUhlYWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Y29sLCBpbmRleCwgZmlyc3QsIGxhc3R9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2x1bW5Tb3J0ZWREaXIoY29sLm5hbWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yeC10YWJsZV9fc29ydC1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTQgOUw4IDEzTDEyIDlcIiBmaWxsPVwiI0RBRDVDRVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTIgN0w4IDNMNCA3XCIgZmlsbD1cIiNEQUQ1Q0VcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbC50ZW1wbGF0ZUhlYWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2NvbCwgaW5kZXgsIGZpcnN0LCBsYXN0fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcblxyXG4gICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICBAZm9yIChkYXRhSXRlbSBvZiBkYXRhOyBsZXQgaW5kZXggPSAkaW5kZXg7IGxldCBmaXJzdCA9ICRmaXJzdDsgbGV0IGxhc3QgPSAkbGFzdDsgdHJhY2sgZGF0YUl0ZW1bdHJhY2tCeUlkXSB8fCBpbmRleCkge1xyXG4gICAgICAgICAgICAgIDx0ciBbY2xhc3MuLWhvdmVyZWRdPVwiaG92ZXJlZFwiPlxyXG4gICAgICAgICAgICAgICAgQGZvciAoY29sIG9mIGNvbnRlbnRDaGlsZHJlbjsgbGV0IGluZGV4ID0gJGluZGV4OyBsZXQgZmlyc3QgPSAkZmlyc3Q7IGxldCBsYXN0ID0gJGxhc3Q7IHRyYWNrIGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCAjdGFibGVURCBjbGFzcz1cInAtMFwiIFtjbGFzc109XCJjb2wuY3VzdG9tQ2xhc3Nlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAobGluayAmJiBjb2xbJ2lzTGluayddKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImxpbmstd3JhcHBlciB0ZC1jb250ZW50LXdyYXBwZXJcIiBbaHJlZl09XCJnZXRMaW5rRm9yU3Ryb2tlKGxpbmssIGRhdGFJdGVtKVwiPjwvYT5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWNvbC50ZW1wbGF0ZUNlbGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZC1jb250ZW50LXdyYXBwZXIgcC0yIGgtMTAwXCI+e3sgZGF0YUl0ZW1bY29sLm5hbWVdIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGQtY29udGVudC13cmFwcGVyIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2wudGVtcGxhdGVDZWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2NvbCwgcm93OiBkYXRhSXRlbSwgaW5kZXgsIGZpcnN0LCBsYXN0fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcblxyXG4gICAgICAgIEBpZiAoIWRhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlX19yZXN1bHQtbWVzc2FnZVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlSZXN1bHRNc2cgPyBlbXB0eVJlc3VsdE1zZ1RlbXBsYXRlRGVmYXVsdCA6IGVtcHR5UmVzdWx0TXNnVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcngtdGFibGVfX292ZXJsYXlcIiBbQHZpc2libGVMb2FkaW5nXT1cImlzTG9hZGluZyA/ICdpbicgOiAnb3V0J1wiIFtuZ0NsYXNzXT1cInsnb3Blbic6IGlzTG9hZGluZ31cIj5cclxuICAgICAgICAgIDxtcngtbG9hZGVyIFtzaXplXT1cImxvYWRlclNldHRpbmdzLnNpemVcIiBbY29sb3JdPVwibG9hZGVyU2V0dGluZ3MuY29sb3JcIj48L21yeC1sb2FkZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIH1cclxuPC9kaXY+XHJcblxyXG5AaWYgKHRvdGFsKSB7XHJcbiAgPGRpdiBjbGFzcz1cIm1yeC10YWJsZV9fcGFnaW5hdG9yIHB0LTIgcGItMlwiIFtjbGFzcy5tcngtdGFibGVfX3BhZ2luYXRvci0tc3Vic3RyYXRlXT1cInBhZ2luYXRvclNldHRpbmdzLnN1YnN0cmF0ZVwiPlxyXG4gICAgQGlmIChwYWdlYWJsZSkge1xyXG4gICAgICA8bXJ4LXBhZ2luYXRvclxyXG4gICAgICAgIFt0b3RhbF09XCJ0b3RhbFwiXHJcbiAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcclxuICAgICAgICBbcG9zaXRpb25dPVwicGFnZWFibGUucG9zaXRpb25cIlxyXG4gICAgICAgIFtwYWdlU2l6ZXNdPVwicGFnZWFibGUucGFnZVNpemVzXCJcclxuICAgICAgICBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxyXG4gICAgICAgIFt3aXRoUGFnZVNpemVdPVwicGFnZWFibGUud2l0aFBhZ2VTaXplXCJcclxuICAgICAgICAoZGF0YVN0YXRlQ2hhbmdlZCk9XCJvbkRhdGFTdGF0ZVBhZ2luYXRvckNoYW5nZWQoJGV2ZW50KVwiPlxyXG4gICAgICA8L21yeC1wYWdpbmF0b3I+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbn1cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY291bnRlclRlbXBsYXRlPlxyXG4gIEBpZiAoaGVhZGVyU2V0dGluZ3MgJiYgaGVhZGVyU2V0dGluZ3MuY291bnQpIHtcclxuICAgIDxzcGFuIGNsYXNzPVwibXJ4LXRhYmxlLWNvdW50ZXJcIj5cclxuICAgIHt7IHRvdGFsIH19IHt7IGhlYWRlclNldHRpbmdzICYmIGhlYWRlclNldHRpbmdzLmNvdW50VGV4dCA/IGhlYWRlclNldHRpbmdzLmNvdW50VGV4dCA6ICfQvdC+0LLQvtGB0YLQtdC5JyB9fVxyXG4gIDwvc3Bhbj5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3NvcnRUZW1wbGF0ZT5cclxuICBAaWYgKGhlYWRlclNldHRpbmdzICYmIGhlYWRlclNldHRpbmdzLnNvcnQpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXJ4LXRhYmxlLXNvcnRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1yeC10YWJsZS1zb3J0LXNjYWxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC10YWJsZS1zb3J0LXNjYWxlX190aXRsZSBtci0yXCIgKGNsaWNrKT1cImNoYW5nZVNvcnQoKVwiPlxyXG4gICAgICAgICAgPHNwYW4+0KHQvtGA0YLQuNGA0L7QstCw0YLRjCDQv9C+Ojwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlLXNvcnQtc2NhbGVfX2ljb25cIj5cclxuICAgICAgICAgICAgQGlmIChzb3J0ICYmIHNvcnQuZGlyID09PSAnZGVzYycpIHtcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tc29ydGluZy1kb3duIGljb24tZm9udC0xNlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAaWYgKHNvcnQgJiYgc29ydC5kaXIgPT09ICdhc2MnKSB7XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLXNvcnRpbmctdXAgaWNvbi1mb250LTE2XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC10YWJsZS1zb3J0LXNjYWxlX19kcm9wLXRyaWdnZXJcIiBbbXJ4UG9wdXBUcmlnZ2VyXT1cInNvcnREcm9wZG93blwiIFtwb3B1cFBvc2l0aW9uXT1cInBvcHVwUG9zaXRpb25cIj5cclxuICAgICAgICAgIDxzcGFuPnt7IHNlbGVjdGVkU29ydCB9fTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwibXJ4LWljb24gaWNvbi1mb250LTE2XCJcclxuICAgICAgICAgICAgW2NsYXNzLmljb24tY2hldnJvbi11cF09XCJpc09wZW5Tb3J0XCJcclxuICAgICAgICAgICAgW2NsYXNzLmljb24tY2hldnJvbi1kb3duXT1cIiFpc09wZW5Tb3J0XCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPG1yeC1wb3B1cCAjc29ydERyb3Bkb3duIFttaW5XaWR0aF09XCInMjUwcHgnXCIgW2Nsb3NlQWZ0ZXJDbGlja109XCJ0cnVlXCIgKHRvZ2dsZSk9XCJ0b2dnbGVQb3B1cCgkZXZlbnQpXCI+XHJcbiAgICAgICAgQGZvciAoaXRlbSBvZiBjb2xBcnJheTsgdHJhY2sgaXRlbSkge1xyXG4gICAgICAgICAgPG1yeC1wb3B1cC1pdGVtIFtpZF09XCJpdGVtLnNvcnRMYWJlbFwiIChjbGlja2VkKT1cInVwZGF0ZVNvcnRTZWxlY3QoaXRlbSlcIj57eyBpdGVtLnNvcnRMYWJlbCB8fCBpdGVtLm5hbWUgfX1cclxuICAgICAgICAgIDwvbXJ4LXBvcHVwLWl0ZW0+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L21yeC1wb3B1cD5cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZG93bmxvYWRUZW1wbGF0ZT5cclxuICBAaWYgKGhlYWRlclNldHRpbmdzICYmIGhlYWRlclNldHRpbmdzLmRvd25sb2FkKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlLWRvd25sb2FkXCIgKGNsaWNrKT1cImNsaWNrVG9Eb3dubG9hZCgkZXZlbnQpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZGVza3RvcFwiPtCh0LrQsNGH0LDRgtGMINC00LDQvdC90YvQtTwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWRvd25sb2FkIGljb24tZm9udC0yNFwiPjwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdG9nZ2xlVGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cIm1yeC10YWJsZS10b2dnbGVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtcngtdGFibGUtdG9nZ2xlLS1pdGVtIG1yLTFcIiAoY2xpY2spPVwib25DaGFuZ2VUeXBlVGFibGUoJ2NhcmRzJylcIiBbY2xhc3MuYWN0aXZlXT1cInR5cGUgPT09ICdjYXJkcydcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNhcmRzLXZpZXcgaWNvbi1mb250LTI0XCI+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlLXRvZ2dsZS0taXRlbVwiIChjbGljayk9XCJvbkNoYW5nZVR5cGVUYWJsZSgnZGVmYXVsdCcpXCIgW2NsYXNzLmFjdGl2ZV09XCJ0eXBlID09PSAnZGVmYXVsdCdcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLXRhYmxlLXZpZXcgaWNvbi1mb250LTI0XCI+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2VtcHR5UmVzdWx0TXNnVGVtcGxhdGVEZWZhdWx0PlxyXG4gIHt7IGVtcHR5UmVzdWx0TXNnIH19XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFnRyxhQUFhLEVBQWtCLE1BQU0sY0FBYyxDQUFDO0FBQzNKLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUF3QnhGLE1BQU0sT0FBTyxjQUFjO0lBaUVMO0lBaEViLFFBQVEsR0FBc0IsRUFBRSxDQUFDO0lBQ2pDLFFBQVEsR0FBeUIsb0JBQW9CLENBQUM7SUFDdEQsWUFBWSxHQUFHLEVBQUUsQ0FBQTtJQUNqQixJQUFJLEdBQUcsS0FBSyxDQUFBO0lBQ1osVUFBVSxHQUFZLEtBQUssQ0FBQztJQUVELGVBQWUsQ0FBOEI7SUFDakQsWUFBWSxDQUFvQjtJQUN0QixzQkFBc0IsQ0FBb0I7SUFFekUsSUFBSSxHQUFjLFNBQVMsQ0FBQztJQUM1QixJQUFJLENBQW1CO0lBQ3ZCLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDZCxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLEtBQUssR0FB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O2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFJRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBSUcsY0FBYztzQkFBdEIsS0FBSztnQkFTSyxXQUFXO3NCQURyQixLQUFLO3VCQUFDLFVBQVU7Z0JBV1AsZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUVHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBRdWVyeUxpc3QsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRlbnRTZXR0aW5ncywgSGVhZGVyU2V0dGluZ3MsIFBhZ2luYXRvclNldHRpbmdzLCBTb3J0RGVzY3JpcHRvciwgVGFibGVCb2R5SXRlbSwgVGFibGVUeXBlLCBUYWJsZVR5cGVFbnVtLCBMb2FkZXJTZXR0aW5ncyB9IGZyb20gJy4vdGFibGUuZW51bSc7XHJcbmltcG9ydCB7IENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb2x1bW4vY29sdW1uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhZ2VyU2V0dGluZ3MsIERhdGFTdGF0ZUNoYW5nZUV2ZW50IH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBEZWZhdWx0UGFnZXJTZXR0aW5ncyB9IGZyb20gJy4vZGVmYXVsdC9kZWZhdWx0LXBhZ2VyLXNldHRpbmdzJztcclxuaW1wb3J0IHsgUGFnaW5hdGVPdXRwdXRPYmplY3QgfSBmcm9tICcuLi9wYWdpbmF0b3IvcGFnaW5hdG9yLmVudW0nO1xyXG5pbXBvcnQgeyBhbmltYXRlLCBncm91cCwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IFBvc2l0aW9uVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL292ZXJsYXknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50Lmxlc3MnXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCd2aXNpYmxlTG9hZGluZycsIFtcclxuICAgICAgc3RhdGUoJ2luJywgc3R5bGUoeyBvcGFjaXR5OiAxLCB2aXNpYmlsaXR5OiAndmlzaWJsZScgfSkpLFxyXG4gICAgICBzdGF0ZSgnb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAwLCB2aXNpYmlsaXR5OiAnaGlkZGVuJyB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2luID0+IG91dCcsIFtncm91cChbXHJcbiAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbi1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpLFxyXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4tb3V0Jywgc3R5bGUoeyB2aXNpYmlsaXR5OiAnaGlkZGVuJyB9KSlcclxuICAgICAgXVxyXG4gICAgICApXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ291dCA9PiBpbicsIFtncm91cChbXHJcbiAgICAgICAgYW5pbWF0ZSgnMW1zIGVhc2UtaW4tb3V0Jywgc3R5bGUoeyB2aXNpYmlsaXR5OiAndmlzaWJsZScgfSkpLFxyXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4tb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAxIH0pKVxyXG4gICAgICBdXHJcbiAgICAgICldKVxyXG4gICAgXSlcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIHB1YmxpYyBjb2xBcnJheTogQ29sdW1uQ29tcG9uZW50W10gPSBbXTtcclxuICBwdWJsaWMgcGFnZWFibGU6IFBhZ2VyU2V0dGluZ3MgfCBudWxsID0gRGVmYXVsdFBhZ2VyU2V0dGluZ3M7XHJcbiAgcHVibGljIHNlbGVjdGVkU29ydCA9ICcnXHJcbiAgcHVibGljIGluaXQgPSBmYWxzZVxyXG4gIHB1YmxpYyBpc09wZW5Tb3J0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBDb250ZW50Q2hpbGRyZW4oQ29sdW1uQ29tcG9uZW50KSBjb250ZW50Q2hpbGRyZW4hOiBRdWVyeUxpc3Q8Q29sdW1uQ29tcG9uZW50PjtcclxuICBAQ29udGVudENoaWxkKCd0ZW1wbGF0ZUNhcmQnKSB0ZW1wbGF0ZUNhcmQhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBDb250ZW50Q2hpbGQoJ2VtcHR5UmVzdWx0TXNnVGVtcGxhdGUnKSBlbXB0eVJlc3VsdE1zZ1RlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQElucHV0KCkgdHlwZTogVGFibGVUeXBlID0gJ2RlZmF1bHQnO1xyXG4gIEBJbnB1dCgpIGRhdGEhOiBUYWJsZUJvZHlJdGVtW107XHJcbiAgQElucHV0KCkgcGFnZVNpemUgPSAyMDtcclxuICBASW5wdXQoKSBjdXJyZW50UGFnZSA9IDE7XHJcbiAgQElucHV0KCkgdG90YWwgPSAwO1xyXG4gIEBJbnB1dCgpIGxpbmsgPSAnJztcclxuICBASW5wdXQoKSBpc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgc29ydDogU29ydERlc2NyaXB0b3IgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgdHJhY2tCeUlkID0gJ2lkJztcclxuICBASW5wdXQoKSBzb3J0YWJsZSA9IHRydWU7XHJcbiAgQElucHV0KCkgc3RyaXBlZCA9IHRydWU7XHJcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3NlcyA9ICcnXHJcbiAgQElucHV0KCkgZW1wdHlSZXN1bHRNc2cgPSAnJ1xyXG4gIEBJbnB1dCgpIGhvdmVyZWQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHBvcHVwUG9zaXRpb246IFBvc2l0aW9uVHlwZSA9ICdib3R0b20tZW5kJztcclxuXHJcbiAgQElucHV0KCkgYXV0b0hlaWdodCA9IHRydWUgLy8gZGVwcmVjYXRlZFxyXG5cclxuICBASW5wdXQoKSBoZWFkZXJTZXR0aW5nczogSGVhZGVyU2V0dGluZ3MgfCB1bmRlZmluZWRcclxuXHJcbiAgQElucHV0KCkgY29udGVudFNldHRpbmdzOiBDb250ZW50U2V0dGluZ3MgPSB7XHJcbiAgICBzdWJzdHJhdGU6IGZhbHNlXHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBwYWdpbmF0b3JTZXR0aW5nczogUGFnaW5hdG9yU2V0dGluZ3MgPSB7XHJcbiAgICBzdWJzdHJhdGU6IGZhbHNlXHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBsb2FkZXJTZXR0aW5nczogTG9hZGVyU2V0dGluZ3MgPSB7XHJcbiAgICBzaXplOiAnbGFyZ2UnLFxyXG4gICAgY29sb3I6ICdicmFuZCdcclxuICB9XHJcblxyXG4gIC8vINCf0YDQvtCy0LXRgNC40YLRjCDQuCDQstGL0YDQtdC30LDRgtGMXHJcbiAgcHVibGljIHNlbGVjdGVkSXRlbSA9IDFcclxuXHJcbiAgQElucHV0KCdwYWdlYWJsZScpXHJcbiAgcHVibGljIHNldCBzZXRQYWdlYWJsZSh2YWx1ZTogUGFnZXJTZXR0aW5ncyB8IGJvb2xlYW4pIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnBhZ2VhYmxlID0gRGVmYXVsdFBhZ2VyU2V0dGluZ3M7XHJcbiAgICB9IGVsc2UgaWYgKHZhbHVlID09PSBmYWxzZSkge1xyXG4gICAgICB0aGlzLnBhZ2VhYmxlID0gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGFnZWFibGUgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBkYXRhU3RhdGVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8RGF0YVN0YXRlQ2hhbmdlRXZlbnQ+ID1cclxuICAgIG5ldyBFdmVudEVtaXR0ZXI8RGF0YVN0YXRlQ2hhbmdlRXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIGRvd25sb2FkRGF0YTogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KClcclxuICBAT3V0cHV0KCkgY2hhbmdlVHlwZVRhYmxlOiBFdmVudEVtaXR0ZXI8VGFibGVUeXBlPiA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVUeXBlPigpXHJcbiAgQE91dHB1dCgpIGNoYW5nZTogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KClcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuY29sQXJyYXkgPSB0aGlzLmNvbnRlbnRDaGlsZHJlbi50b0FycmF5KCk7XHJcblxyXG4gICAgdGhpcy5jb2xBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBpZiAodGhpcy5zb3J0ICYmIHRoaXMuc29ydC5jb2wgPT09IGl0ZW0ubmFtZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTb3J0ID0gaXRlbS5zb3J0TGFiZWwgfHwgaXRlbS5uYW1lXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5jb2xBcnJheSA9IHRoaXMuY29sQXJyYXkuZmlsdGVyKGl0ZW0gPT4ge1xyXG4gICAgICByZXR1cm4gaXRlbS5uYW1lICE9PSAnJyAmJiBpdGVtLnNvcnRMYWJlbFxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKVxyXG4gICAgdGhpcy5pbml0ID0gdHJ1ZVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7IFRhYmxlVHlwZUVudW1bdGhpcy50eXBlXSB9ICR7IHRoaXMuY3VzdG9tQ2xhc3NlcyB9YDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VTb3J0KCkge1xyXG4gICAgY29uc3QgbmV3RXZlbnREYXRhOiBEYXRhU3RhdGVDaGFuZ2VFdmVudCA9IHsgcGFnZTogdGhpcy5jdXJyZW50UGFnZSwgcGFnZVNpemU6IHRoaXMucGFnZVNpemUgfTtcclxuXHJcbiAgICBpZiAoIXRoaXMuY29sQXJyYXkubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNvcnQpIHtcclxuICAgICAgbmV3RXZlbnREYXRhLnNvcnQgPSB7XHJcbiAgICAgICAgZGlyOiB0aGlzLnNvcnQuZGlyID09PSAnZGVzYycgPyAnYXNjJyA6ICdkZXNjJyxcclxuICAgICAgICBjb2w6IHRoaXMuc29ydC5jb2xcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5ld0V2ZW50RGF0YS5zb3J0ID0ge1xyXG4gICAgICAgIGRpcjogJ2FzYycsXHJcbiAgICAgICAgY29sOiB0aGlzLmNvbEFycmF5WzBdLm5hbWVcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGFTdGF0ZUNoYW5nZWQuZW1pdChuZXdFdmVudERhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbHVtblNvcnRlZERpcihjb2x1bW46IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5zb3J0ICYmIHRoaXMuc29ydC5jb2wgPT0gY29sdW1uICYmIHRoaXMuc29ydC5kaXIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc29ydC5kaXI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Tb3J0Q29sdW1uKGNvbHVtbjogc3RyaW5nLCBzb3J0YWJsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKCFzb3J0YWJsZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV3RXZlbnREYXRhOiBEYXRhU3RhdGVDaGFuZ2VFdmVudCA9IHsgcGFnZTogdGhpcy5jdXJyZW50UGFnZSwgcGFnZVNpemU6IHRoaXMucGFnZVNpemUgfTtcclxuXHJcbiAgICBpZiAodGhpcy5zb3J0ICYmIHRoaXMuc29ydC5jb2wgPT0gY29sdW1uKSB7XHJcbiAgICAgIGlmICh0aGlzLnNvcnQuZGlyICYmIHRoaXMuc29ydC5kaXIgPT09ICdhc2MnKSB7XHJcbiAgICAgICAgbmV3RXZlbnREYXRhLnNvcnQgPSB7IGRpcjogJ2Rlc2MnLCBjb2w6IGNvbHVtbiB9O1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdFdmVudERhdGEuc29ydCA9IHsgZGlyOiAnYXNjJywgY29sOiBjb2x1bW4gfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGFTdGF0ZUNoYW5nZWQuZW1pdChuZXdFdmVudERhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsaWNrVG9Eb3dubG9hZChldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuZG93bmxvYWREYXRhLmVtaXQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlU29ydFNlbGVjdCh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXdFdmVudERhdGE6IERhdGFTdGF0ZUNoYW5nZUV2ZW50ID0ge1xyXG4gICAgICBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlLFxyXG4gICAgICBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSxcclxuICAgICAgc29ydDoge1xyXG4gICAgICAgIGNvbDogdmFsdWUubmFtZSxcclxuICAgICAgICBkaXI6IHRoaXMuc29ydD8uZGlyXHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5jb2xBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBpZiAodGhpcy5zb3J0ICYmIG5ld0V2ZW50RGF0YS5zb3J0ICYmIG5ld0V2ZW50RGF0YS5zb3J0LmNvbCA9PT0gaXRlbS5uYW1lKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNvcnQgPSBpdGVtLnNvcnRMYWJlbCB8fCBpdGVtLm5hbWVcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLmRhdGFTdGF0ZUNoYW5nZWQuZW1pdChuZXdFdmVudERhdGEpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25EYXRhU3RhdGVQYWdpbmF0b3JDaGFuZ2VkKHBhZ2luYXRpb246IFBhZ2luYXRlT3V0cHV0T2JqZWN0KTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXdFdmVudERhdGE6IERhdGFTdGF0ZUNoYW5nZUV2ZW50ID0ge1xyXG4gICAgICBwYWdlOiBwYWdpbmF0aW9uLmN1cnJlbnRQYWdlLFxyXG4gICAgICBwYWdlU2l6ZTogcGFnaW5hdGlvbi5wYWdlU2l6ZVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5zb3J0ICYmIHRoaXMuc29ydC5jb2wgJiYgdGhpcy5zb3J0LmRpcikge1xyXG4gICAgICBuZXdFdmVudERhdGEuc29ydCA9IHsgZGlyOiB0aGlzLnNvcnQuZGlyLCBjb2w6IHRoaXMuc29ydC5jb2wgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGFTdGF0ZUNoYW5nZWQuZW1pdChuZXdFdmVudERhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldExpbmtGb3JTdHJva2UobGluazogc3RyaW5nLCBkYXRhSXRlbTogVGFibGVCb2R5SXRlbSkge1xyXG4gICAgLy8g0YDQtdCz0YPQu9GP0YDQutC4XHJcbiAgICBjb25zdCByZWdFeHBQYXJhbXMgPSAvKD88PVxcWylbXlxcc1xcW1xcXV0rKD89XSkvZ2k7XHJcbiAgICAvLyDQvtGB0L3QvtCy0L3QvtC5INC80LDRgdGB0LjQslxyXG4gICAgY29uc3QgbGlua0FycmF5ID0gbGluay5zcGxpdCgnPycpXHJcbiAgICAvLyDQvNCw0YHRgdC40LLRiyDRgdGC0YDQvtC6IHVybCDQuCDQv9Cw0YDQsNC80LXRgtGA0L7QslxyXG4gICAgY29uc3QgYXJyYXlVcmwgPSBsaW5rQXJyYXlbMF0/LnNwbGl0KCcvJylcclxuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IGxpbmtBcnJheVsxXT8uc3BsaXQoJyYnKVxyXG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zT2JqID0gc2VhcmNoUGFyYW1zPy5tYXAoKHN0cikgPT4ge1xyXG4gICAgICBjb25zdCBzdHJQYXJhbURhdGEgPSBzdHIuc3BsaXQoJz0nKVsxXS5tYXRjaChyZWdFeHBQYXJhbXMpXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgbmFtZTogc3RyLnNwbGl0KCc9JylbMF0sXHJcbiAgICAgICAgZGF0YTogc3RyUGFyYW1EYXRhID8gc3RyUGFyYW1EYXRhWzBdIDogc3RyLnNwbGl0KCc9JylbMF0sXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgLy8g0L7QsdGA0LDQsdC+0YLQutCwINGC0LXQu9CwIHVybFxyXG4gICAgY29uc3Qgc3RyVXJsID0gYXJyYXlVcmwubWFwKChzdHIpID0+IHtcclxuICAgICAgaWYgKHN0ci5tYXRjaChyZWdFeHBQYXJhbXMpKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHJldHVybiBkYXRhSXRlbVtzdHIubWF0Y2gocmVnRXhwUGFyYW1zKVswXV1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gc3RyXHJcbiAgICAgIH1cclxuICAgIH0pLmpvaW4oJy8nKVxyXG4gICAgLy8g0L7QsdGA0LDQsdC+0YLQutCwINC/0LDRgNCw0LzQtdGC0YDQvtCyXHJcbiAgICAvLyDQtdGB0LvQuCDQtdGB0YLRjCDQv9Cw0YDQsNC80LXRgtGA0YsgLSDQstC+0LfQstGA0LDRidCw0LXQvCDQuNGFINGB0YLRgNC+0LrQvtC5INGBINC00LjQvdCw0LzQuNGH0LXRgdC60LjQvNC4INC/0LDRgNCw0LzQtdGC0YDQsNC80LhcclxuXHJcbiAgICBjb25zdCBzdHJQYXJhbXMgPSBzZWFyY2hQYXJhbXNPYmogPyBzZWFyY2hQYXJhbXNPYmoubWFwKChwYXJhbSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICByZXR1cm4gYCR7IGluZGV4ID4gMCA/ICcnIDogJz8nIH0keyBwYXJhbS5uYW1lIH09JHsgZGF0YUl0ZW1bcGFyYW0uZGF0YV0gfWBcclxuICAgIH0pLmpvaW4oJyYnKSA6ICcnXHJcblxyXG4gICAgcmV0dXJuIGAkeyBzdHJVcmwgfSR7IHN0clBhcmFtcyB9YFxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2hhbmdlVHlwZVRhYmxlKHR5cGU6IFRhYmxlVHlwZSk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGFuZ2VUeXBlVGFibGUuZW1pdCh0eXBlKVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlUG9wdXAoaXNPcGVuOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmlzT3BlblNvcnQgPSBpc09wZW5cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1yeC10YWJsZVwiIFtjbGFzc109XCJnZXRDbGFzc2VzXCIgW2NsYXNzLm1iLTNdPVwicGFnZWFibGVcIj5cclxuICBAaWYgKGhlYWRlclNldHRpbmdzKSB7XHJcbiAgICBAc3dpdGNoIChoZWFkZXJTZXR0aW5ncy50eXBlKSB7XHJcbiAgICAgIEBjYXNlICgnc2Vjb25kJykge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcngtdGFibGUtY2FyZC1oZWFkZXIgbWItMyBwdC0yIHBiLTJcIiBbY2xhc3MuLS1zdWJzdHJhdGVdPVwiaGVhZGVyU2V0dGluZ3Muc3Vic3RyYXRlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cIm1yeC10YWJsZS1jYXJkLWhlYWRlci0tbGVmdCBjb2wgY29sLTEyIGNvbC1zbS02IG1iLTEgbWItc20tMCBkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzb3J0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlLWNhcmQtaGVhZGVyLS1yaWdodCBjb2wgY29sLTEyIGNvbC1zbS02IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJkb3dubG9hZFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgQGRlZmF1bHQge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcngtdGFibGUtY2FyZC1oZWFkZXIgcHktMTJweCBtYi0zXCIgW2NsYXNzLi0tc3Vic3RyYXRlXT1cImhlYWRlclNldHRpbmdzLnN1YnN0cmF0ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtcngtdGFibGUtY2FyZC1oZWFkZXItLWxlZnQgY29sIGNvbC0xMiBjb2wtbWQtNiBtYi0xIG1iLW1kLTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY291bnRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC10YWJsZS1jYXJkLWhlYWRlci0tcmlnaHQgY29sIGNvbC0xMiBjb2wtbWQtNiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic29ydFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIEBpZiAoaGVhZGVyU2V0dGluZ3MudG9nZ2xlKSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtNFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRvZ2dsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBzd2l0Y2ggKHR5cGUpIHtcclxuICAgIEBjYXNlICgnY2FyZHMnKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtcngtdGFibGVfX3dyYXBwZXJcIj5cclxuICAgICAgICBAZm9yIChpdGVtIG9mIGRhdGE7IGxldCBpbmRleCA9ICRpbmRleDsgbGV0IGZpcnN0ID0gJGZpcnN0OyBsZXQgbGFzdCA9ICRsYXN0OyB0cmFjayBpdGVtW3RyYWNrQnlJZF0gfHwgaW5kZXgpIHtcclxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVDYXJkXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntpdGVtLCBpbmRleCwgZmlyc3QsIGxhc3R9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYgKCFkYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC10YWJsZV9fcmVzdWx0LW1lc3NhZ2UtLXN1YnN0cmF0ZVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlSZXN1bHRNc2cgPyBlbXB0eVJlc3VsdE1zZ1RlbXBsYXRlRGVmYXVsdCA6IGVtcHR5UmVzdWx0TXNnVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcngtdGFibGVfX292ZXJsYXlcIiBbQHZpc2libGVMb2FkaW5nXT1cImlzTG9hZGluZyA/ICdpbicgOiAnb3V0J1wiIFtuZ0NsYXNzXT1cInsnb3Blbic6IGlzTG9hZGluZ31cIj5cclxuICAgICAgICAgIDxtcngtbG9hZGVyIFtzaXplXT1cImxvYWRlclNldHRpbmdzLnNpemVcIiBbY29sb3JdPVwibG9hZGVyU2V0dGluZ3MuY29sb3JcIj48L21yeC1sb2FkZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgQGRlZmF1bHQge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlX193cmFwcGVyXCIgW2NsYXNzLi0tc3Vic3RyYXRlXT1cImNvbnRlbnRTZXR0aW5ncy5zdWJzdHJhdGVcIj5cclxuICAgICAgICA8dGFibGVcclxuICAgICAgICAgIFtjbGFzcy50YWJsZS1zdHJpcGVkXT1cInN0cmlwZWRcIlxyXG4gICAgICAgICAgW2NsYXNzLnRhYmxlLXNvbGlkXT1cIiFzdHJpcGVkXCJcclxuICAgICAgICAgIFtjbGFzcy5tdC0yXT1cImNvbnRlbnRTZXR0aW5ncy5zdWJzdHJhdGVcIlxyXG4gICAgICAgICAgW2NsYXNzLm1iLTNdPVwiY29udGVudFNldHRpbmdzLnN1YnN0cmF0ZSAmJiBkYXRhLmxlbmd0aFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHRoZWFkIFtjbGFzcy50YWJsZS1oZWFkLWdyYXldPVwiIWhlYWRlclNldHRpbmdzIHx8IGhlYWRlclNldHRpbmdzLmJhY2tncm91bmRcIj5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBjb250ZW50Q2hpbGRyZW47IGxldCBpbmRleCA9ICRpbmRleDsgbGV0IGZpcnN0ID0gJGZpcnN0OyBsZXQgbGFzdCA9ICRsYXN0OyB0cmFjayBpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgPHRoIFtjbGFzc109XCJjb2wuY3VzdG9tQ2xhc3Nlc1wiPlxyXG4gICAgICAgICAgICAgICAgICBAaWYgKCFjb2wudGVtcGxhdGVIZWFkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmIChjb2wuc29ydGFibGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLnRoLXdyYXBwZXJdPVwic29ydGFibGVcIiAoY2xpY2spPVwib25Tb3J0Q29sdW1uKGNvbC5uYW1lLCBjb2wuc29ydGFibGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbC5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2x1bW5Tb3J0ZWREaXIoY29sLm5hbWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yeC10YWJsZV9fc29ydC1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTQgOUw4IDEzTDEyIDlcIiBmaWxsPVwiI0RBRDVDRVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTIgN0w4IDNMNCA3XCIgZmlsbD1cIiNEQUQ1Q0VcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPnt7IGNvbC5sYWJlbCB9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoY29sLnNvcnRhYmxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy50aC13cmFwcGVyXT1cInNvcnRhYmxlXCIgKGNsaWNrKT1cIm9uU29ydENvbHVtbihjb2wubmFtZSwgY29sLnNvcnRhYmxlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sLnRlbXBsYXRlSGVhZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntjb2wsIGluZGV4LCBmaXJzdCwgbGFzdH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbHVtblNvcnRlZERpcihjb2wubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXJ4LXRhYmxlX19zb3J0LWljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNNCA5TDggMTNMMTIgOVwiIGZpbGw9XCIjREFENUNFXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xMiA3TDggM0w0IDdcIiBmaWxsPVwiI0RBRDVDRVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sLnRlbXBsYXRlSGVhZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Y29sLCBpbmRleCwgZmlyc3QsIGxhc3R9XCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90aGVhZD5cclxuXHJcbiAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgIEBmb3IgKGRhdGFJdGVtIG9mIGRhdGE7IGxldCBpbmRleCA9ICRpbmRleDsgbGV0IGZpcnN0ID0gJGZpcnN0OyBsZXQgbGFzdCA9ICRsYXN0OyB0cmFjayBkYXRhSXRlbVt0cmFja0J5SWRdIHx8IGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgPHRyIFtjbGFzcy4taG92ZXJlZF09XCJob3ZlcmVkXCI+XHJcbiAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgY29udGVudENoaWxkcmVuOyBsZXQgaW5kZXggPSAkaW5kZXg7IGxldCBmaXJzdCA9ICRmaXJzdDsgbGV0IGxhc3QgPSAkbGFzdDsgdHJhY2sgaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgPHRkICN0YWJsZVREIGNsYXNzPVwicC0wXCIgW2NsYXNzXT1cImNvbC5jdXN0b21DbGFzc2VzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmIChsaW5rICYmIGNvbFsnaXNMaW5rJ10pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibGluay13cmFwcGVyIHRkLWNvbnRlbnQtd3JhcHBlclwiIFtocmVmXT1cImdldExpbmtGb3JTdHJva2UobGluaywgZGF0YUl0ZW0pXCI+PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgQGlmICghY29sLnRlbXBsYXRlQ2VsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkLWNvbnRlbnQtd3JhcHBlciBwLTIgaC0xMDBcIj57eyBkYXRhSXRlbVtjb2wubmFtZV0gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZC1jb250ZW50LXdyYXBwZXIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbC50ZW1wbGF0ZUNlbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Y29sLCByb3c6IGRhdGFJdGVtLCBpbmRleCwgZmlyc3QsIGxhc3R9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuXHJcbiAgICAgICAgQGlmICghZGF0YS5sZW5ndGgpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtdGFibGVfX3Jlc3VsdC1tZXNzYWdlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJlbXB0eVJlc3VsdE1zZyA/IGVtcHR5UmVzdWx0TXNnVGVtcGxhdGVEZWZhdWx0IDogZW1wdHlSZXN1bHRNc2dUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC10YWJsZV9fb3ZlcmxheVwiIFtAdmlzaWJsZUxvYWRpbmddPVwiaXNMb2FkaW5nID8gJ2luJyA6ICdvdXQnXCIgW25nQ2xhc3NdPVwieydvcGVuJzogaXNMb2FkaW5nfVwiPlxyXG4gICAgICAgICAgPG1yeC1sb2FkZXIgW3NpemVdPVwibG9hZGVyU2V0dGluZ3Muc2l6ZVwiIFtjb2xvcl09XCJsb2FkZXJTZXR0aW5ncy5jb2xvclwiPjwvbXJ4LWxvYWRlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgfVxyXG48L2Rpdj5cclxuXHJcbkBpZiAodG90YWwpIHtcclxuICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlX19wYWdpbmF0b3IgcHQtMiBwYi0yXCIgW2NsYXNzLm1yeC10YWJsZV9fcGFnaW5hdG9yLS1zdWJzdHJhdGVdPVwicGFnaW5hdG9yU2V0dGluZ3Muc3Vic3RyYXRlXCI+XHJcbiAgICBAaWYgKHBhZ2VhYmxlKSB7XHJcbiAgICAgIDxtcngtcGFnaW5hdG9yXHJcbiAgICAgICAgW3RvdGFsXT1cInRvdGFsXCJcclxuICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxyXG4gICAgICAgIFtwb3NpdGlvbl09XCJwYWdlYWJsZS5wb3NpdGlvblwiXHJcbiAgICAgICAgW3BhZ2VTaXplc109XCJwYWdlYWJsZS5wYWdlU2l6ZXNcIlxyXG4gICAgICAgIFtjdXJyZW50UGFnZV09XCJjdXJyZW50UGFnZVwiXHJcbiAgICAgICAgW3dpdGhQYWdlU2l6ZV09XCJwYWdlYWJsZS53aXRoUGFnZVNpemVcIlxyXG4gICAgICAgIChkYXRhU3RhdGVDaGFuZ2VkKT1cIm9uRGF0YVN0YXRlUGFnaW5hdG9yQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgICAgIDwvbXJ4LXBhZ2luYXRvcj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxufVxyXG5cclxuPG5nLXRlbXBsYXRlICNjb3VudGVyVGVtcGxhdGU+XHJcbiAgQGlmIChoZWFkZXJTZXR0aW5ncyAmJiBoZWFkZXJTZXR0aW5ncy5jb3VudCkge1xyXG4gICAgPHNwYW4gY2xhc3M9XCJtcngtdGFibGUtY291bnRlclwiPlxyXG4gICAge3sgdG90YWwgfX0ge3sgaGVhZGVyU2V0dGluZ3MgJiYgaGVhZGVyU2V0dGluZ3MuY291bnRUZXh0ID8gaGVhZGVyU2V0dGluZ3MuY291bnRUZXh0IDogJ9C90L7QstC+0YHRgtC10LknIH19XHJcbiAgPC9zcGFuPlxyXG4gIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjc29ydFRlbXBsYXRlPlxyXG4gIEBpZiAoaGVhZGVyU2V0dGluZ3MgJiYgaGVhZGVyU2V0dGluZ3Muc29ydCkge1xyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBtcngtdGFibGUtc29ydFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlLXNvcnQtc2NhbGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlLXNvcnQtc2NhbGVfX3RpdGxlIG1yLTJcIiAoY2xpY2spPVwiY2hhbmdlU29ydCgpXCI+XHJcbiAgICAgICAgICA8c3Bhbj7QodC+0YDRgtC40YDQvtCy0LDRgtGMINC/0L46PC9zcGFuPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtdGFibGUtc29ydC1zY2FsZV9faWNvblwiPlxyXG4gICAgICAgICAgICBAaWYgKHNvcnQgJiYgc29ydC5kaXIgPT09ICdkZXNjJykge1xyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1zb3J0aW5nLWRvd24gaWNvbi1mb250LTE2XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBpZiAoc29ydCAmJiBzb3J0LmRpciA9PT0gJ2FzYycpIHtcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tc29ydGluZy11cCBpY29uLWZvbnQtMTZcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlLXNvcnQtc2NhbGVfX2Ryb3AtdHJpZ2dlclwiIFttcnhQb3B1cFRyaWdnZXJdPVwic29ydERyb3Bkb3duXCIgW3BvcHVwUG9zaXRpb25dPVwicG9wdXBQb3NpdGlvblwiPlxyXG4gICAgICAgICAgPHNwYW4+e3sgc2VsZWN0ZWRTb3J0IH19PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJtcngtaWNvbiBpY29uLWZvbnQtMTZcIlxyXG4gICAgICAgICAgICBbY2xhc3MuaWNvbi1jaGV2cm9uLXVwXT1cImlzT3BlblNvcnRcIlxyXG4gICAgICAgICAgICBbY2xhc3MuaWNvbi1jaGV2cm9uLWRvd25dPVwiIWlzT3BlblNvcnRcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8bXJ4LXBvcHVwICNzb3J0RHJvcGRvd24gW21pbldpZHRoXT1cIicyNTBweCdcIiBbY2xvc2VBZnRlckNsaWNrXT1cInRydWVcIiAodG9nZ2xlKT1cInRvZ2dsZVBvcHVwKCRldmVudClcIj5cclxuICAgICAgICBAZm9yIChpdGVtIG9mIGNvbEFycmF5OyB0cmFjayBpdGVtKSB7XHJcbiAgICAgICAgICA8bXJ4LXBvcHVwLWl0ZW1cclxuICAgICAgICAgICAgW2lkXT1cIml0ZW0uc29ydExhYmVsXCJcclxuICAgICAgICAgICAgKGNsaWNrZWQpPVwidXBkYXRlU29ydFNlbGVjdChpdGVtKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGl0ZW0uc29ydExhYmVsIHx8IGl0ZW0ubmFtZSB9fVxyXG4gICAgICAgICAgPC9tcngtcG9wdXAtaXRlbT5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbXJ4LXBvcHVwPlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNkb3dubG9hZFRlbXBsYXRlPlxyXG4gIEBpZiAoaGVhZGVyU2V0dGluZ3MgJiYgaGVhZGVyU2V0dGluZ3MuZG93bmxvYWQpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJtcngtdGFibGUtZG93bmxvYWRcIiAoY2xpY2spPVwiY2xpY2tUb0Rvd25sb2FkKCRldmVudClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJkZXNrdG9wXCI+0KHQutCw0YfQsNGC0Ywg0LTQsNC90L3Ri9C1PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tZG93bmxvYWQgaWNvbi1mb250LTI0XCI+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0b2dnbGVUZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlLXRvZ2dsZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC10YWJsZS10b2dnbGUtLWl0ZW0gbXItMVwiIChjbGljayk9XCJvbkNoYW5nZVR5cGVUYWJsZSgnY2FyZHMnKVwiIFtjbGFzcy5hY3RpdmVdPVwidHlwZSA9PT0gJ2NhcmRzJ1wiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2FyZHMtdmlldyBpY29uLWZvbnQtMjRcIj48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtcngtdGFibGUtdG9nZ2xlLS1pdGVtXCIgKGNsaWNrKT1cIm9uQ2hhbmdlVHlwZVRhYmxlKCdkZWZhdWx0JylcIiBbY2xhc3MuYWN0aXZlXT1cInR5cGUgPT09ICdkZWZhdWx0J1wiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tdGFibGUtdmlldyBpY29uLWZvbnQtMjRcIj48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZW1wdHlSZXN1bHRNc2dUZW1wbGF0ZURlZmF1bHQ+XHJcbiAge3sgZW1wdHlSZXN1bHRNc2cgfX1cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19