@arsedizioni/ars-utils 18.4.29 → 18.4.31
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.
- package/esm2022/clipper.ui/ui/document/document.component.mjs +2 -4
- package/esm2022/clipper.ui/ui/search-result-item/search-result-item.component.mjs +9 -4
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +8 -5
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -575,9 +575,7 @@ export class ClipperDocumentComponent extends ClipperDocumentManager {
|
|
|
575
575
|
}
|
|
576
576
|
else {
|
|
577
577
|
if (r.value && r.value.length > 1)
|
|
578
|
-
this.dialogService.info(r.value.replace(/\n/g, '<br>\r\n'), "Commento", "Chiudi", 700
|
|
579
|
-
this.openDocument(url);
|
|
580
|
-
});
|
|
578
|
+
this.dialogService.info(r.value.replace(/\n/g, '<br>\r\n'), "Commento", "Chiudi", 700);
|
|
581
579
|
else
|
|
582
580
|
this.dialogService.info("Commento non più disponibile o in fase di revisione.");
|
|
583
581
|
}
|
|
@@ -698,4 +696,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
698
696
|
}], opening: [{
|
|
699
697
|
type: Output
|
|
700
698
|
}] } });
|
|
701
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvZG9jdW1lbnQvZG9jdW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvZG9jdW1lbnQvZG9jdW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBRVosTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBSUwsZUFBZSxFQUNmLFlBQVksRUFDWiww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QUksQ0FBQyxZQUFZO2FBQ2xCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7OEdBanVCVSx3QkFBd0I7a0dBQXhCLHdCQUF3QixtSUFuQm5CLFdBQVcsQ0FBQyxZQUFZLEVBQUUscUtDeEQ1Qyx3bVlBb1BxQiw4clZEdExqQixnQkFBZ0IsbytIQUNoQixlQUFlLHdVQUNmLGdCQUFnQiw0VEFDaEIsYUFBYSxtTEFDYixhQUFhLHMxQkFDYixnQkFBZ0IsOEJBQ2hCLG9CQUFvQix5TkFDcEIsZ0JBQWdCLHdHQUNoQixnQkFBZ0Isb2RBQ2hCLFdBQVcsZ0RBQ1gsNEJBQTRCOzsyRkFHbkIsd0JBQXdCO2tCQXBCcEMsU0FBUzsyQkFDRixFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsWUFBWSxFQUFFLEVBQUUsbUJBRzNCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLFdBQVc7d0JBQ1gsNEJBQTRCO3FCQUM3Qjs4QkFJMkIsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQUNoQixPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFZpZXdDaGlsZCxcclxuICBpbmplY3QsXHJcbiAgc2lnbmFsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nQ29udGVudCwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xyXG5pbXBvcnQgeyBNYXREcmF3ZXIsIE1hdFNpZGVuYXZNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQge1xyXG4gIENsaXBwZXJEb2N1bWVudEFuY2hvckluZm8sXHJcbiAgQ2xpcHBlckRvY3VtZW50SW5mbyxcclxuICBDbGlwcGVyRG9jdW1lbnRSZWxldmFudHMsXHJcbiAgQ2xpcHBlck1lc3NhZ2VzLFxyXG4gIENsaXBwZXJNb2RlbCxcclxuICBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZSxcclxuICBDbGlwcGVyU2VhcmNoUGFyYW1zXHJcbn0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jbGlwcGVyLmNvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgU2FmZVVybFBpcGUsXHJcbiAgU3lzdGVtVXRpbHMsXHJcbiAgVGhlbWVUeXBlXHJcbn0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgRmlsZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL3VpLmFwcGxpY2F0aW9uJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ2xpcHBlclJlZmVyZW5jZURpYWxvZ1Jlc3VsdCwgQ2xpcHBlclJlZmVyZW5jZXNDb21wb25lbnQgfSBmcm9tICcuLi9yZWZlcmVuY2VzL3JlZmVyZW5jZXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2xpcHBlckRvY3VtZW50SW5kZXhDb21wb25lbnQsIENsaXBwZXJEb2N1bWVudEluZGV4RGlhbG9nUmVzdWx0IH0gZnJvbSAnLi4vZG9jdW1lbnQtaW5kZXgvZG9jdW1lbnQtaW5kZXguY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2xpcHBlckRvY3VtZW50TWFuYWdlciB9IGZyb20gJy4uL2RvY3VtZW50LW1hbmFnZXIvZG9jdW1lbnQtbWFuYWdlcic7XHJcbmltcG9ydCB7IEZsZXhMYXlvdXRNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQnO1xyXG5pbXBvcnQgeyBDbGlwcGVyRG9jdW1lbnRzVXRpbHMgfSBmcm9tICcuLi8uLi9kb2N1bWVudHMnO1xyXG5pbXBvcnQgeyBDbGlwcGVyRG9jdW1lbnRNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vZG9jdW1lbnQtbWVudS9kb2N1bWVudC1tZW51LmNvbXBvbmVudCc7XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDbGlwcGVyRG9jdW1lbnREaWFsb2dEYXRhIHtcclxuICBzZWxlY3Rpb25Nb2RlOiBudW1iZXI7XHJcbiAgaWQ6IHN0cmluZztcclxuICBxdWVyeT86IHN0cmluZyB8IG51bGw7XHJcbiAgdGhlbWU/OiBUaGVtZVR5cGUgfCBudWxsO1xyXG5cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgaG9zdDogeyAnQmluZCc6IFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpIH0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RvY3VtZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kb2N1bWVudC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgRmxleExheW91dE1vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0TWVudU1vZHVsZSxcclxuICAgIE1hdERpdmlkZXJNb2R1bGUsXHJcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcclxuICAgIE1hdERpYWxvZ0NvbnRlbnQsXHJcbiAgICBNYXRTaWRlbmF2TW9kdWxlLFxyXG4gICAgU2FmZVVybFBpcGUsXHJcbiAgICBDbGlwcGVyRG9jdW1lbnRNZW51Q29tcG9uZW50XHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENsaXBwZXJEb2N1bWVudENvbXBvbmVudCBleHRlbmRzIENsaXBwZXJEb2N1bWVudE1hbmFnZXJcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdyZWxldmFudHNQYW5lJykgcmVsZXZhbnRzUGFuZSE6IE1hdERyYXdlcjtcclxuICBAT3V0cHV0KCkgY2xvc2luZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb3BlbmluZyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlciA9IGluamVjdChCcmVha3BvaW50T2JzZXJ2ZXIpO1xyXG4gIHByaXZhdGUgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcclxuICBwcml2YXRlIHJlbmRlcmVyTGlzdGVuZXIxOiBhbnk7XHJcbiAgcHJpdmF0ZSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuICBwcml2YXRlIGRpYWxvZ1JlZiA9IGluamVjdChNYXREaWFsb2dSZWY8Q2xpcHBlckRvY3VtZW50Q29tcG9uZW50Pik7XHJcbiAgcHJvdGVjdGVkIGRpYWxvZ0RhdGE6IENsaXBwZXJEb2N1bWVudERpYWxvZ0RhdGEgPSBpbmplY3QoTUFUX0RJQUxPR19EQVRBKSA/PyB7IG1vZGU6IENsaXBwZXJRdWVyeVJlZmVyZW5jZXNNb2RlLlJlZmVyZW5jZXNJbiB9O1xyXG4gIHByb3RlY3RlZCB1cmwgPSBzaWduYWw8c3RyaW5nPihudWxsKTtcclxuICBwcm90ZWN0ZWQgdGl0bGUgPSBzaWduYWw8c3RyaW5nPihudWxsKTtcclxuICBwcm90ZWN0ZWQgYnVzeSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJvdGVjdGVkIGxhc3RRdWVyeT86IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHByb3RlY3RlZCBsYXN0RG9jdW1lbnQ/OiBDbGlwcGVyRG9jdW1lbnRJbmZvIHwgbnVsbCA9IHt9O1xyXG4gIHByb3RlY3RlZCByZWxldmFudHM6IENsaXBwZXJEb2N1bWVudFJlbGV2YW50cyA9IHtcclxuICAgIGl0ZW1zOiBbXSxcclxuICAgIGhpdHM6IDAsXHJcbiAgICBoaXQ6IDAsXHJcbiAgICBtaW5pbXVtU2NvcmU6IDEwMCxcclxuICB9O1xyXG4gIHByb3RlY3RlZCByZWxldmFudHNQYW5lSGFzQmFja2Ryb3A6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm90ZWN0ZWQgcmVsZXZhbnRzUGFuZUNsb3NlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByb3RlY3RlZCByZWxldmFudHNCdXN5ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgaGFzUmVsZXZhbnRzID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgc2VsZWN0aW9uTW9kZT86IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEpIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlID0gdGhpcy5kaWFsb2dEYXRhLnNlbGVjdGlvbk1vZGU7XHJcbiAgICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuaWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPVxyXG4gICAgICAgICAgdGhpcy5jbGlwcGVyU2VydmljZS5zZXJ2aWNlVXJpICtcclxuICAgICAgICAgIFwiL2RvY3VtZW50cy9yZW5kZXIvP3F1ZXJ5PVwiICtcclxuICAgICAgICAgICh0aGlzLmRpYWxvZ0RhdGEucXVlcnkgPz8gJycpICtcclxuICAgICAgICAgIFwiJnRoZW1lPVwiICtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nRGF0YS50aGVtZSArXHJcbiAgICAgICAgICBcIiZpZD1cIiArXHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ0RhdGEuaWRcclxuICAgICAgICB0aGlzLm5hdmlnYXRlQnlVcmwodXJsKTtcclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBMaXN0ZW4gdG8gd2luZG93IG1lc3NhZ2VzXHJcbiAgICB0aGlzLnJlbmRlcmVyTGlzdGVuZXIxID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oXHJcbiAgICAgICd3aW5kb3cnLFxyXG4gICAgICAnbWVzc2FnZScsXHJcbiAgICAgIChlOiBFdmVudCkgPT4ge1xyXG4gICAgICAgIGxldCBldmVudCA9IGUgYXMgTWVzc2FnZUV2ZW50O1xyXG4gICAgICAgIGlmICghZXZlbnQpIHJldHVybjtcclxuICAgICAgICBpZiAoZXZlbnQuZGF0YSkge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpO1xyXG4gICAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgIHN3aXRjaCAoZGF0YS50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICduYXZpZ2F0ZWQnOlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlZChcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEudGl0bGUxLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEudGl0bGUyLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEubW9kZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5tb2R1bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5tb2R1bGVOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuZGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm51bWJlcixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmF1dGhvcixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm9yaWdpbixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm9yaWdpbkRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuYmFnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEudmFsaWRpdHlJbmZvLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuZXhwaXJpbmdJbmZvLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEucHJpbWFyeUlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEucHJpbWFyeU1vZGVsLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuc2Vjb25kYXJ5SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5pc1RyaWFsXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnbmF2aWdhdGUnOlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlKGRhdGEudXJsKTtcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdyZWZlcmVuY2VzJzpcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuUmVmZXJlbmNlcyhcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEubW9kZSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm1vZGVsLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuYW5jaG9yLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuYW5jaG9yVGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS51cGRhdGVcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdoaXRzJzpcclxuICAgICAgICAgICAgICAgICAgdGhpcy5yZWxldmFudHMuaGl0cyA9IGRhdGEudG90YWw7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUmVsZXZhbnRzKCk7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzaXplKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBPYnNlcnZlIGxheW91dCBjaGFuZ2VzXHJcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclxyXG4gICAgICAub2JzZXJ2ZShbXHJcbiAgICAgICAgQnJlYWtwb2ludHMuWFNtYWxsLFxyXG4gICAgICAgIEJyZWFrcG9pbnRzLlNtYWxsLFxyXG4gICAgICAgIEJyZWFrcG9pbnRzLk1lZGl1bSxcclxuICAgICAgICBCcmVha3BvaW50cy5MYXJnZSxcclxuICAgICAgICBCcmVha3BvaW50cy5YTGFyZ2UsXHJcbiAgICAgIF0pXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgIGZvciAoY29uc3QgcXVlcnkgb2YgT2JqZWN0LmtleXMocmVzdWx0LmJyZWFrcG9pbnRzKSkge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdC5icmVha3BvaW50c1txdWVyeV0pIHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVSZWxldmFudHNQYW5lVmlzaWJpbGl0eSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gUmVhY3QgdG8gd2luZG93IHNpemUgY2hhbmdlXHJcbiAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMucmVzaXplKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5jb21wbGV0ZSgpO1xyXG4gICAgaWYgKHRoaXMucmVuZGVyZXJMaXN0ZW5lcjEpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlckxpc3RlbmVyMSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc2l6ZSBcclxuICAgKi9cclxuICBwcml2YXRlIHJlc2l6ZSgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBsZXQgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LXNjcm9sbGFibGUnKTtcclxuICAgICAgaWYgKGVsZW0pIHtcclxuICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmRpYWxvZ1NlcnZpY2UuZ2V0Q3VycmVudERpYWxvZ1Njcm9sbGFibGVIZWlnaHQoXHJcbiAgICAgICAgICBbJ2NsaXBwZXItZG9jdW1lbnQtZml4ZWQnXSxcclxuICAgICAgICAgIHdpbmRvdy5pbm5lckhlaWdodFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGhlaWdodCAhPSBlbGVtLmNsaWVudEhlaWdodCkge1xyXG4gICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ3BhZGRpbmc6MDtoZWlnaHQ6JyArIGhlaWdodCArICdweCAhaW1wb3J0YW50O21heC1oZWlnaHQ6JyArIGhlaWdodCArICdweCAhaW1wb3J0YW50Jyk7XHJcbiAgICAgICAgICBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJyk7XHJcbiAgICAgICAgICBlbGVtPy5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2hlaWdodDonICsgKGhlaWdodCAtIDIwKSArICdweCAhaW1wb3J0YW50O21heC1oZWlnaHQ6JyArIChoZWlnaHQgLSAyMCkgKyAncHggIWltcG9ydGFudCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLyoqXHJcbiAqIFNob3cgaGlkZSByZWxldmFudHMgcGFuZSBtYW51YWxseVxyXG4gKi9cclxuICBwcm90ZWN0ZWQgdG9nZ2xlUmVsZXZhbnRzUGFuZSgpIHtcclxuICAgIHRoaXMucmVsZXZhbnRzUGFuZUNsb3NlZCA9ICF0aGlzLnJlbGV2YW50c1BhbmVDbG9zZWQ7XHJcbiAgICB0aGlzLnJlbGV2YW50c1BhbmU/LnRvZ2dsZSgpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgZmlsdGVyIHBhbmUgdmlzaWJpbGl0eVxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlUmVsZXZhbnRzUGFuZVZpc2liaWxpdHkoKSB7XHJcbiAgICBpZiAodGhpcy5yZWxldmFudHNQYW5lKSB7XHJcbiAgICAgIGlmICh0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoQnJlYWtwb2ludHMuWFNtYWxsKSB8fFxyXG4gICAgICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLmlzTWF0Y2hlZChCcmVha3BvaW50cy5TbWFsbCkgfHxcclxuICAgICAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoQnJlYWtwb2ludHMuTWVkaXVtKSkge1xyXG4gICAgICAgIGlmICh0aGlzLnJlbGV2YW50c1BhbmUub3BlbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lLm1vZGUgPSAnb3Zlcic7XHJcbiAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lLmRpc2FibGVDbG9zZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZUhhc0JhY2tkcm9wID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoIXRoaXMucmVsZXZhbnRzUGFuZS5vcGVuZWQgJiYgIXRoaXMucmVsZXZhbnRzUGFuZUNsb3NlZCAmJiB0aGlzLmhhc1JlbGV2YW50cygpKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUub3BlbigpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWxldmFudHNQYW5lLm9wZW5lZCAmJiB0aGlzLnJlbGV2YW50c1BhbmVDbG9zZWQpIHtcclxuICAgICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZS5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUubW9kZSA9ICdzaWRlJztcclxuICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmVIYXNCYWNrZHJvcCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbG9zZSBkaWFsb2dcclxuICAgKi9cclxuXHJcbiAgcHJvdGVjdGVkIGNsb3NlKCkge1xyXG4gICAgaWYgKHRoaXMuY2xvc2luZykge1xyXG4gICAgICB0aGlzLmNsb3NpbmcuZW1pdCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlIHRvIGEgbmV3IGRvY3VtZW50XHJcbiAgICogQHBhcmFtIGlkIDogdGhlIGRvY3VtZW50IGlkXHJcbiAgICovXHJcbiAgbmF2aWdhdGUoaWQ6IHN0cmluZykge1xyXG4gICAgaWYgKCFpZCB8fCBpZC5sZW5ndGggPT0gMClcclxuICAgICAgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRvXHJcblxyXG4gICAgaWYgKGlkLmluZGV4T2YoJz8nKSAhPT0gLTEpIHtcclxuICAgICAgaWYgKGlkLnN0YXJ0c1dpdGgoJy9hcGknKSlcclxuICAgICAgICB0aGlzLm5hdmlnYXRlQnlVcmwodGhpcy5jbGlwcGVyU2VydmljZS5zZXJ2aWNlVXJpICsgaWQuc3Vic3RyaW5nKDQpKTtcclxuICAgICAgZWxzZSBpZiAoIWlkLnN0YXJ0c1dpdGgodGhpcy5jbGlwcGVyU2VydmljZS5zZXJ2aWNlVXJpKSlcclxuICAgICAgICB0aGlzLm5hdmlnYXRlQnlVcmwodGhpcy5jbGlwcGVyU2VydmljZS5zZXJ2aWNlVXJpICsgaWQpO1xyXG4gICAgICBlbHNlIHRoaXMubmF2aWdhdGVCeVVybChpZCk7XHJcbiAgICB9IGVsc2VcclxuICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKFxyXG4gICAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2Uuc2VydmljZVVyaSArXHJcbiAgICAgICAgXCIvZG9jdW1lbnRzL3JlbmRlci8/cXVlcnk9JmlkPVwiICsgaWQpO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlIGJ5IHVybFxyXG4gICAqIEBwYXJhbSB1cmwgOiB0aGUgdXJsICB0byBuYXZpZ2F0ZSB0b1xyXG4gICAqL1xyXG4gIG5hdmlnYXRlQnlVcmwodXJsOiBzdHJpbmcpIHtcclxuICAgIGlmICghdXJsIHx8IHVybC5sZW5ndGggPT09IDAgfHwgdXJsID09PSAnYWJvdXQ6YmxhbmsnKVxyXG4gICAgICByZXR1cm47IC8vIE5vdGhpbmcgdG8gZG9cclxuICAgIC8vIENsZWFuIHVybCwgdGFrZSBvbmx5IHRoZSBmaXJzdCBhbmNob3JcclxuICAgIGxldCBwYXJ0cyA9IHVybC5zcGxpdCgnIycpO1xyXG4gICAgdXJsID0gcGFydHNbMF07XHJcbiAgICBpZiAocGFydHMubGVuZ3RoID4gMSkge1xyXG4gICAgICB1cmwgKz0gJyMnICsgcGFydHNbMV07XHJcbiAgICB9XHJcbiAgICAvLyBIYW5kbGUgZnJlZSB0ZXh0IHF1ZXJ5XHJcbiAgICBsZXQgcXVlcnkgPSAnJztcclxuICAgIGxldCBwID0gdXJsLmluZGV4T2YoJ3F1ZXJ5PScpO1xyXG4gICAgaWYgKHAgIT09IC0xKSB7XHJcbiAgICAgIHAgKz0gNjtcclxuICAgICAgd2hpbGUgKHVybC5sZW5ndGggPiBwICYmIHVybFtwXSAhPT0gJyYnICYmIHVybFtwXSAhPT0gJyMnKSB7XHJcbiAgICAgICAgcXVlcnkgKz0gdXJsW3ArK107XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHF1ZXJ5Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAvLyBSZXNldFxyXG4gICAgICAgIHRoaXMucmVsZXZhbnRzLmhpdCA9IDA7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIC8vIEFzc2lnbiBxdWVyeSB0byBlbmFibGUgc2VhcmNoIGZvciBmcmFnbWVudHNcclxuICAgICAgICAgIHRoaXMubGFzdFF1ZXJ5ID0gZGVjb2RlVVJJQ29tcG9uZW50KGVuY29kZVVSSUNvbXBvbmVudChxdWVyeSkpO1xyXG4gICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgdGhpcy5sYXN0UXVlcnkgPSBxdWVyeTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIFRoZW1lXHJcbiAgICBpZiAodXJsLmluZGV4T2YoJ3RoZW1lPScpID09PSAtMSkge1xyXG4gICAgICBwID0gdXJsLmluZGV4T2YoJ2lkPScpO1xyXG4gICAgICBpZiAocCAhPT0gLTEpIHtcclxuICAgICAgICB1cmwgPSB1cmwuc3Vic3RyaW5nKDAsIHApICsgJ3RoZW1lPScgKyB0aGlzLmRpYWxvZ0RhdGEudGhlbWUgKyAnJicgKyB1cmwuc3Vic3RyaW5nKHApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG5hdmlnYXRlVG9GaWxlID0gdXJsLmluZGV4T2YoJyZmaWxlPXRydWUnKSAhPT0gLTE7XHJcbiAgICBpZiAobmF2aWdhdGVUb0ZpbGUgPT09IHRydWUpIHtcclxuICAgICAgLy8gUHJldmlld1xyXG4gICAgICB0aGlzLnByZXZpZXdGaWxlKHVybCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLnByZVJlbmRlcigpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgLy8gQmVnaW4gbG9hZGluZyBvbmx5IGlmIG5vdCBkb3dubG9hZGluZyBhIGZpbGVcclxuICAgICAgICB0aGlzLmJ1c3kuc2V0KHVybC5pbmRleE9mKCdkb2N1bWVudHMvcmVuZGVyL2l0ZW0nKSA9PT0gLTEpO1xyXG4gICAgICAgIC8vIE5hdmlnYXRlXHJcbiAgICAgICAgdGhpcy51cmwuc2V0KHVybCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGVkIGNhbGxiYWNrICAgXHJcbiAgICovXHJcbiAgcHVibGljIG5hdmlnYXRlZChcclxuICAgIGlkOiBzdHJpbmcsIC8vIERvY3VtbmVudCBpZFxyXG4gICAgdGl0bGUxOiBzdHJpbmcsIC8vIFRpdGxlIDFcclxuICAgIHRpdGxlMjogc3RyaW5nLCAvLyBUaXRsZSAyXHJcbiAgICBtb2RlbDogbnVtYmVyLCAvLyBNb2RlbFxyXG4gICAgbW9kdWxlSWQ6IG51bWJlciwgLy8gTW9kdWxlXHJcbiAgICBtb2R1bGVOYW1lOiBzdHJpbmcsIC8vIE1vZHVsZSBuYW1lXHJcbiAgICBkYXRlOiBzdHJpbmcsIC8vIERhdGVcclxuICAgIG51bWJlcjogc3RyaW5nLCAvLyBOdW1iZXJcclxuICAgIGF1dGhvcjogc3RyaW5nLCAvLyBBdXRob3JcclxuICAgIG9yaWdpbjogc3RyaW5nLCAvLyBPcmlnaW5cclxuICAgIG9yaWdpbkRlc2NyaXB0aW9uOiBzdHJpbmcsIC8vIE9yaWdpbiBkZXNjcmlwdGlvblxyXG4gICAgYmFnOiBzdHJpbmcsIC8vIEZsYWdzXHJcbiAgICB2YWxpZGl0eUluZm86IHN0cmluZywgLy8gSW5mbyBhYm91dCB2YWxpZGl0eVxyXG4gICAgZXhwaXJpbmdJbmZvOiBzdHJpbmcsIC8vIEluZm8gYWJvdXQgZXhwaXJpbmcgZGF0ZVxyXG4gICAgcHJpbWFyeUlkOiBzdHJpbmcsIC8vIFByaW1hcnkgZG9jdW1lbnQgaWRcclxuICAgIHByaW1hcnlNb2RlbDogbnVtYmVyLCAvLyBQcmltYXJ5IGRvY3VtZW50IG1vZGVsXHJcbiAgICBzZWNvbmRhcnlJZDogc3RyaW5nLCAvLyBTZWNvbmRhcnkgZG9jdW1lbnQgaWRcclxuICAgIGlzVHJpYWw6IGJvb2xlYW4gLy8gVHJ1ZSBpZiBpcyBhIHRyaWFsIHJlcXVlc3RcclxuICApIHtcclxuICAgIC8vIENoZWNrIGZvciBzZXNzaW9uIGV4cGlyaW5nXHJcbiAgICBpZiAodGl0bGUxID09PSAnU2Vzc2lvbmUgbm9uIHZhbGlkYScpIHtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlXHJcbiAgICAgICAgLmVycm9yKHRpdGxlMiwgbnVsbCwgdGl0bGUxLCAnQWNjZWRpIGRpIG51b3ZvJylcclxuICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydsb2dpbiddKTtcclxuICAgICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN0b3JlIGRhdGFcclxuICAgIGlmICghdGhpcy5sYXN0RG9jdW1lbnQpIHtcclxuICAgICAgdGhpcy5sYXN0RG9jdW1lbnQgPSB7fTtcclxuICAgIH1cclxuICAgIHRoaXMubGFzdERvY3VtZW50LmlkID0gaWQ7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5kb2N1bWVudElkID0gaWQ7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC50aXRsZTEgPSB0aXRsZTEgPyBTeXN0ZW1VdGlscy51cmxEZWNvZGUodGl0bGUxKSA6IG51bGw7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC50aXRsZTIgPSB0aXRsZTIgPyBTeXN0ZW1VdGlscy51cmxEZWNvZGUodGl0bGUyKSA6IG51bGw7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5tb2RlbCA9IG1vZGVsO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQubW9kdWxlID0gbW9kdWxlSWQ7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5tb2R1bGVOYW1lID0gbW9kdWxlTmFtZTtcclxuICAgIHRoaXMubGFzdERvY3VtZW50LmRhdGUgPSBuZXcgRGF0ZShkYXRlKTtcclxuICAgIHRoaXMubGFzdERvY3VtZW50Lm51bWJlciA9IG51bWJlcjtcclxuICAgIHRoaXMubGFzdERvY3VtZW50LmF1dGhvciA9IGF1dGhvcjtcclxuICAgIHRoaXMubGFzdERvY3VtZW50Lm9yaWdpbiA9IG9yaWdpbjtcclxuICAgIHRoaXMubGFzdERvY3VtZW50Lm9yaWdpbkRlc2NyaXB0aW9uID0gb3JpZ2luRGVzY3JpcHRpb247XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5iYWcgPSBiYWc7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC52YWxpZGl0eUluZm8gPSB2YWxpZGl0eUluZm87XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5wcmltYXJ5SWQgPSBwcmltYXJ5SWQ7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5wcmltYXJ5TW9kZWwgPSBwcmltYXJ5TW9kZWw7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5oYXNQcmltYXJ5ID1cclxuICAgICAgcHJpbWFyeUlkICYmXHJcbiAgICAgIChtb2RlbCA9PT0gQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm8gfHxcclxuICAgICAgICBtb2RlbCA9PT0gQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGUpO1xyXG4gICAgaWYgKHByaW1hcnlJZCkge1xyXG4gICAgICB2YXIgZGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgc3dpdGNoIChwcmltYXJ5TW9kZWwgPyBwcmltYXJ5TW9kZWwgOiBtb2RlbCkge1xyXG4gICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGU6XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdUZXN0byB2aWdlbnRlJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm86XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdUZXN0byBzdG9yaWNvJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLlNjYWRlbnplOlxyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSAnU2NhZGVuemEnO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuQ29vcmRpbmFtZW50bzpcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gJ01vZGlmaWNhJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdDb2xsZWdhbWVudG8nO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sYXN0RG9jdW1lbnQucHJpbWFyeURlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XHJcbiAgICB9XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5zZWNvbmRhcnlJZCA9IHNlY29uZGFyeUlkO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQuaXNUcmlhbCA9IGlzVHJpYWw7XHJcblxyXG4gICAgLy8gSGFuZGxlIGV4cGlyaW5nIGluZm9cclxuICAgIHRoaXMubGFzdERvY3VtZW50LmV4cGlyaW5nRGVzY3JpcHRpb24gPSBudWxsO1xyXG4gICAgaWYgKGV4cGlyaW5nSW5mbykge1xyXG4gICAgICBsZXQgcGFydHMgPSBleHBpcmluZ0luZm8uc3BsaXQoJyMnKTtcclxuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBsZXQgcGFydHMyID0gcGFydHNbMF0uc3BsaXQoJ3wnKTtcclxuICAgICAgICBpZiAocGFydHMyLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICB0aGlzLmxhc3REb2N1bWVudC5leHBpcmluZ0RhdGUgPSBuZXcgRGF0ZShwYXJ0czJbMF0pO1xyXG4gICAgICAgIGlmIChwYXJ0czIubGVuZ3RoID4gMSkgdGhpcy5sYXN0RG9jdW1lbnQuZXhwaXJpbmdJbmZvID0gcGFydHMyWzFdO1xyXG4gICAgICAgIGlmIChwYXJ0czIubGVuZ3RoID4gMilcclxuICAgICAgICAgIHRoaXMubGFzdERvY3VtZW50LmV4cGlyaW5nSW5mbyArPSAnfCcgKyBwYXJ0czJbMl07XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHRoaXMubGFzdERvY3VtZW50LmV4cGlyaW5nRGVzY3JpcHRpb24gPSBwYXJ0c1sxXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXQgdGl0bGVcclxuICAgIHRoaXMudGl0bGUuc2V0KHRoaXMubGFzdERvY3VtZW50LnRpdGxlMVxyXG4gICAgICA/IHRoaXMubGFzdERvY3VtZW50LnRpdGxlMVxyXG4gICAgICA6IHRoaXMubGFzdERvY3VtZW50LnRpdGxlMik7XHJcblxyXG4gICAgLy8gR2V0IGxhc3QgZG9jdW1lbnQgdXBkYXRlXHJcbiAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLmxhc3RVcGRhdGUodGhpcy5sYXN0RG9jdW1lbnQuaWQpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgaWYgKHIuc3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMubGFzdERvY3VtZW50Lmxhc3RVcGRhdGUgPSByLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBOb3RpZnkgbmF2aWdhdGlvbiBoYXMgY29tcGxldGVkXHJcbiAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoQ2xpcHBlck1lc3NhZ2VzLkRPQ1VNRU5UX05BVklHQVRFRCwge1xyXG4gICAgICBkb2N1bWVudDogU3lzdGVtVXRpbHMuY2xvbmUodGhpcy5sYXN0RG9jdW1lbnQpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5idXN5LnNldChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBnb3RvIHByZXZpb3VzIGRvY3VtZW50IGluIGhpc3RvcnlcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYmFjaygpIHtcclxuICAgIGxldCBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJykgYXMgYW55O1xyXG4gICAgZj8uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSgne1widHlwZVwiOiBcImJhY2tcIn0nLCAnKicpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR290byBuZXh0IGRvY3VtZW50IGluIGhpc3RvcnlcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZm9yd2FyZCgpIHtcclxuICAgIGxldCBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJykgYXMgYW55O1xyXG4gICAgZj8uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSgne1widHlwZVwiOiBcImZvcndhcmRcIn0nLCAnKicpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvKipcclxuICAgKiBHb3RvIG5leHQgcmVsZXZhbnQgaXRlbVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBuZXh0UmVsZXZhbnQoKSB7XHJcbiAgICBsZXQgaSA9IHRoaXMucmVsZXZhbnRzLmhpdCArIDE7XHJcbiAgICBpZiAoaSA8PSB0aGlzLnJlbGV2YW50cy5oaXRzKSB7XHJcbiAgICAgIGxldCBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJykgYXMgYW55O1xyXG4gICAgICBmPy5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKCd7XCJ0eXBlXCI6IFwicmVsZXZhbnRcIiwgXCJ2YWx1ZVwiOiBcIm5leHRcIn0nLCAnKicpO1xyXG4gICAgICB0aGlzLnJlbGV2YW50cy5oaXQrKztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdvdG8gcHJldmlvdXMgcmVsZXZhbnQgaXRlbVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBwcmV2aW91c1JlbGV2YW50KCkge1xyXG4gICAgbGV0IGkgPSB0aGlzLnJlbGV2YW50cy5oaXQgLSAxO1xyXG4gICAgaWYgKGkgPiAwKSB7XHJcbiAgICAgIGxldCBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJykgYXMgYW55O1xyXG4gICAgICBmPy5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKFxyXG4gICAgICAgICd7XCJ0eXBlXCI6IFwicmVsZXZhbnRcIiwgXCJ2YWx1ZVwiOiBcInByZXZpb3VzXCJ9JyxcclxuICAgICAgICAnKidcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5yZWxldmFudHMuaGl0LS07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHb3RvIGEgcmVsZXZhbnQgaXRlbVxyXG4gICAqIEBwYXJhbSBpdGVtIDogdGhlIGl0ZW0gdG8gZ28gdG9cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ290b1JlbGV2YW50KGl0ZW06IENsaXBwZXJEb2N1bWVudEFuY2hvckluZm8pIHtcclxuICAgIGlmIChpdGVtLnR5cGUgPT09IDIwKSB7XHJcbiAgICAgIHdpbmRvdy5vcGVuKFxyXG4gICAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2Uuc2VydmljZVVyaSArXHJcbiAgICAgICAgXCIvZG9jdW1lbnRzL3JlbmRlci9pdGVtLz90aGVtZT1cIiArIHRoaXMuZGlhbG9nRGF0YS50aGVtZSArIFwiJmlkPVwiICsgaXRlbS5kb2N1bWVudElkLFxyXG4gICAgICAgICdfYmxhbmsnXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LWlmcmFtZScpIGFzIGFueTtcclxuICAgICAgZj8uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShcclxuICAgICAgICAne1widHlwZVwiOiBcInJlbGV2YW50XCIsIFwidmFsdWVcIjogXCInICsgaXRlbS51cmkgKyAnXCJ9JyxcclxuICAgICAgICAnKidcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSByZWxldmFudCBpdGVtc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlUmVsZXZhbnRzKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5sYXN0UXVlcnkgfHxcclxuICAgICAgdGhpcy5sYXN0UXVlcnkubGVuZ3RoID09PSAwIHx8XHJcbiAgICAgIHRoaXMubGFzdFF1ZXJ5ID09PSAnICdcclxuICAgICkge1xyXG4gICAgICB0aGlzLmhhbmRsZVJlbGV2YW50c1BhbmVWaXNpYmlsaXR5KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgcGFyYW1zID0gbmV3IENsaXBwZXJTZWFyY2hQYXJhbXMoKTtcclxuICAgICAgcGFyYW1zLmlkID0gdGhpcy5sYXN0RG9jdW1lbnQuZG9jdW1lbnRJZCA/PyB0aGlzLmxhc3REb2N1bWVudC5pZDtcclxuICAgICAgcGFyYW1zLnRleHQgPSB0aGlzLmxhc3RRdWVyeTtcclxuICAgICAgcGFyYW1zLmNvdW50ID0gMTtcclxuICAgICAgdGhpcy5jbGlwcGVyU2VydmljZVxyXG4gICAgICAgIC5xdWVyeShwYXJhbXMpXHJcbiAgICAgICAgLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgIGlmICghci5zdWNjZXNzKSB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgbWluaW11bVNjb3JlID0gMDtcclxuICAgICAgICAgICAgaWYgKHIudmFsdWU/Lml0ZW1zICYmIHIudmFsdWU/Lml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICByLnZhbHVlLml0ZW1zWzBdLmFuY2hvcnMuZm9yRWFjaChuID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBzY29yZSA9IG4uc2NvcmU7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2NvcmUgPiA3KSBzY29yZSAtPSA3O1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NvcmUgPiA1KSBzY29yZSAtPSA1O1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NvcmUgPiAzKSBzY29yZSAtPSAzO1xyXG4gICAgICAgICAgICAgICAgaWYgKG1pbmltdW1TY29yZSA+IHNjb3JlKSBtaW5pbXVtU2NvcmUgPSBzY29yZTtcclxuICAgICAgICAgICAgICAgIG4uc2NvcmUgPSBzY29yZTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB0aGlzLnJlbGV2YW50cy5taW5pbXVtU2NvcmUgPSBtaW5pbXVtU2NvcmU7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZWxldmFudHMuaXRlbXMgPSByLnZhbHVlLml0ZW1zWzBdLmFuY2hvcnM7XHJcbiAgICAgICAgICAgICAgdGhpcy5oYXNSZWxldmFudHMuc2V0KHRoaXMucmVsZXZhbnRzLml0ZW1zPy5sZW5ndGggPiAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZVJlbGV2YW50c1BhbmVWaXNpYmlsaXR5KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXkgZG9jdW1lbnQgc3RydWN0dXJlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGluZGV4KGRvY3VtZW50SWQ6IHN0cmluZykge1xyXG4gICAgbGV0IGQgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihDbGlwcGVyRG9jdW1lbnRJbmRleENvbXBvbmVudCwge1xyXG4gICAgICBhcmlhTGFiZWw6ICdpbmRpY2UgZG9jdW1lbnRvJyxcclxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcclxuICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBjbG9zZU9uTmF2aWdhdGlvbjogZmFsc2UsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBkb2N1bWVudElkOiBkb2N1bWVudElkLFxyXG4gICAgICAgIGV4Y2x1ZGVkVHlwZXM6IG51bGwsXHJcbiAgICAgICAgbXVsdGlwbGU6IGZhbHNlXHJcbiAgICAgIH0sXHJcbiAgICAgIG1pbldpZHRoOiAnMzc1cHgnLFxyXG4gICAgICBtYXhXaWR0aDogJzYwMHB4JyxcclxuICAgICAgd2lkdGg6ICcxMDAlJyxcclxuICAgIH0pO1xyXG4gICAgZC5jb21wb25lbnRJbnN0YW5jZS5kb25lXHJcbiAgICAgIC5zdWJzY3JpYmUoKHI6IENsaXBwZXJEb2N1bWVudEluZGV4RGlhbG9nUmVzdWx0KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IHIuZGF0YS5sZW5ndGggPiAwID8gci5kYXRhWzBdIDogbnVsbDtcclxuICAgICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgICAgaWYgKGl0ZW0uZG9jdW1lbnRJZCA9PT0gZG9jdW1lbnRJZCkge1xyXG4gICAgICAgICAgICBsZXQgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LWlmcmFtZScpIGFzIGFueTtcclxuICAgICAgICAgICAgZj8uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShcclxuICAgICAgICAgICAgICAne1widHlwZVwiOiBcImdvdG9cIiwgXCJ2YWx1ZVwiOlwiJyArIGl0ZW0udXJpICsgJ1wifScsXHJcbiAgICAgICAgICAgICAgJyonXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5Eb2N1bWVudChpdGVtLmRvY3VtZW50SWQgKyAnIycgKyBpdGVtLnVyaSwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZC5jbG9zZSgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBHZXQgdGhlIGlkIGluIGEgcXVlcnkgc3RyaW5nXHJcbiAqIEBwYXJhbSB1cmwgOiB0aGUgdXJsIHRvIHByb2Nlc3NcclxuICogQHBhcmFtIG5hbWUgOiB0aGUgb3B0aW9uYWwgaWQgcGFyYW1lbnRlciBuYW1lLiBEZWZhdWx0IGlzICdpZCdcclxuICogQHJldHVybnMgOiB0aGUgaWQgcGFyYW1lXHJcbiAqL1xyXG4gIHByaXZhdGUgZ2V0SWQodXJsOiBzdHJpbmcsIG5hbWU6IHN0cmluZyA9ICdpZCcpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc3RhcnQgPSB1cmwubGFzdEluZGV4T2YobmFtZSArICc9JykgKyAzO1xyXG4gICAgY29uc3QgZW5kID0gdXJsLmluZGV4T2YoJyYnLCBzdGFydCk7XHJcbiAgICByZXR1cm4gdXJsLnN1YnN0cmluZyhzdGFydCwgZW5kKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByZXZpZXcgYSBmaWxlIGlmIHBvc3NpYmxlXHJcbiAgICogQHBhcmFtIHVybCA6IHRoZSB1cmwgdG8gcHJldmlld1xyXG4gICAqL1xyXG4gIHByaXZhdGUgcHJldmlld0ZpbGUodXJsOiBzdHJpbmcpIHtcclxuICAgIGlmICghdXJsIHx8IHVybC5sZW5ndGggPT09IDApXHJcbiAgICAgIHJldHVybjsgLy8gTm90aGluZyB0byBkb1xyXG4gICAgLy8gR2V0IHRoZSBpZFxyXG4gICAgbGV0IGlkID0gdGhpcy5nZXRJZCh1cmwpO1xyXG4gICAgaWYgKCFpZCB8fCBpZC5sZW5ndGggPT09IDApXHJcbiAgICAgIHJldHVybjsgLy8gTm90aGluZyB0byBkb1xyXG4gICAgLy8gQ3JlYXRlIHRoZSB1cmxcclxuICAgIHRoaXMuY2xpcHBlclNlcnZpY2UubmV3T1RQKGlkKS5zdWJzY3JpYmUoXHJcbiAgICAgIHIgPT4ge1xyXG4gICAgICAgIGlmICghci5zdWNjZXNzKSB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICBlbHNlIGlmICghci52YWx1ZS5jYW5QcmV2aWV3KVxyXG4gICAgICAgICAgLy8gRG9ubG9hZCBtYW51YWxseVxyXG4gICAgICAgICAgbG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKEZpbGVQcmV2aWV3Q29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICdwcmV2aWV3LXBhbmVsJyxcclxuICAgICAgICAgICAgYXJpYUxhYmVsOiAnYW50ZXByaW1hJyxcclxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcclxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgICAgICAgZW1iZWQ6IHIudmFsdWUuY2FuRW1iZWRcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgICAgICAgIG1heFdpZHRoOiAnOTAwcHgnLFxyXG4gICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJ1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBTaG93IGRvY3VtZW50IGNvbW1lbnRcclxuICAgICovXHJcbiAgcHJvdGVjdGVkIHNob3dDb21tZW50KCkge1xyXG4gICAgaWYgKHRoaXMubGFzdERvY3VtZW50Py5iYWdbN10gIT09ICdUJykgcmV0dXJuO1xyXG4gICAgdGhpcy5jbGlwcGVyU2VydmljZVxyXG4gICAgICAuY29tbWVudCh0aGlzLmxhc3REb2N1bWVudD8uZG9jdW1lbnRJZClcclxuICAgICAgLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgaWYgKHIubWVzc2FnZSA9PT0gXCJJbCB0dW8gYWJib25hbWVudG8gbm9uIGNvbnNlbnRlIGRpIHZpc3VhbGl6emFyZSBpIGNvbW1lbnRpIGFsbGUgbm9ybWUuXCIpXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihcIklsIHNlcnZpemlvIGRpIDxiPmNvbW1lbnRpIGFsbGUgbm9ybWU8L2I+IG5vbiDDqCBjb21wcmVzbyBuZWwgdHVvIGFiYm9uYW1lbnRvLCBwZXIgbWFnZ2lvcmkgaW5mb3JtYXppb25pIHJpdm9sZ2Vyc2kgYWxsJ2FnZW50ZSBjb21tZXJjaWFsZSBkaSByaWZlcmltZW50byBvIGludmlhcmUgdW5hIG1haWwgYSA8YSBocmVmPSdtYWlsdG86c2FsZXNAYXJzZWRpemlvbmkuaXQnIHRhcmdldD0nX2JsYW5rJz5zYWxlc0BhcnNlZGl6aW9uaS5pdDwvYT4uXCIsIG51bGwsIFwiQXR0ZW56aW9uZVwiKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChyLnZhbHVlICYmIHIudmFsdWUubGVuZ3RoID4gMSlcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmluZm8oXHJcbiAgICAgICAgICAgICAgci52YWx1ZS5yZXBsYWNlKC9cXG4vZywgJzxicj5cXHJcXG4nKSxcclxuICAgICAgICAgICAgICBcIkNvbW1lbnRvXCIsXHJcbiAgICAgICAgICAgICAgXCJDaGl1ZGlcIixcclxuICAgICAgICAgICAgICA3MDAsXHJcbiAgICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICAgICh1cmw6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuRG9jdW1lbnQodXJsKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmluZm8oXCJDb21tZW50byBub24gcGnDuSBkaXNwb25pYmlsZSBvIGluIGZhc2UgZGkgcmV2aXNpb25lLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW4gYW4gaXRlbVxyXG4gICAqIEBwYXJhbSBkb2N1bWVudElkIDogdGhlIGRvY3VtZW50IGlkXHJcbiAgICogQHBhcmFtIHF1ZXJ5OiB0aGUgY3VycmVudCBxdWVyeSBvciBudWxsXHJcbiAgICogQHBhcmFtIG5ld1dpbmRvdzogdHJ1ZSBpZiB0aGUgZG9jdW1lbnQgbXVzdCBiZSBvcGVuIGludG8gYSBuZXcgd2luZG93XHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgb3Blbihkb2N1bWVudElkOiBzdHJpbmcsIHF1ZXJ5OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCwgbmV3V2luZG93OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGlmICghbmV3V2luZG93KSB7XHJcbiAgICAgIGlmICh0aGlzLm9wZW5pbmcpIHRoaXMub3BlbmluZy5lbWl0KGRvY3VtZW50SWQpO1xyXG4gICAgICBlbHNlIHRoaXMub3BlbkRvY3VtZW50KGRvY3VtZW50SWQsIHF1ZXJ5KTtcclxuICAgIH0gZWxzZSB3aW5kb3cub3BlbignL2RvY3VtZW50by8nICsgZG9jdW1lbnRJZCwgJ19ibGFuaycpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbiBhIGRvY3VtZW50XHJcbiAgICogQHBhcmFtIGRvY3VtZW50SWQgOiB0aGUgZG9jdW1lbnQgaWRcclxuICAgKiBAcGFyYW0gcXVlcnk6IHRoZSBjdXJyZW50IHF1ZXJ5IG9yIG51bGxcclxuICAgKi9cclxuICBwcml2YXRlIG9wZW5Eb2N1bWVudChkb2N1bWVudElkOiBzdHJpbmcsIHF1ZXJ5OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCkge1xyXG4gICAgaWYgKCFkb2N1bWVudElkKSByZXR1cm47XHJcbiAgICBDbGlwcGVyRG9jdW1lbnRzVXRpbHMub3BlbkRvY3VtZW50KFxyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UsXHJcbiAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2UsXHJcbiAgICAgIGRvY3VtZW50SWQsXHJcbiAgICAgIHF1ZXJ5LFxyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEuc2VsZWN0aW9uTW9kZSxcclxuICAgICAgdGhpcy5kaWFsb2dEYXRhLnRoZW1lXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQnJvd3NlIGRvY3VtZW50IHJlZmVyZW5jZXNcclxuICAgKiBAcGFyYW0gZG9jdW1lbnRJZCA6IHRoZSBkb2N1bWVudCBpZFxyXG4gICAqIEBwYXJhbSBtb2RlIDogdGhlIG1vZGVcclxuICAgKi9cclxuICBvdmVycmlkZSBvcGVuUmVmZXJlbmNlcyhcclxuICAgIGRvY3VtZW50SWQ6IHN0cmluZyxcclxuICAgIG1vZGU6IENsaXBwZXJRdWVyeVJlZmVyZW5jZXNNb2RlID0gQ2xpcHBlclF1ZXJ5UmVmZXJlbmNlc01vZGUuUmVmZXJlbmNlc0luLFxyXG4gICAgbW9kZWw6IG51bWJlciA9IG51bGwsXHJcbiAgICBhbmNob3I6IHN0cmluZyA9IG51bGwsXHJcbiAgICBhbmNob3JUaXRsZTogc3RyaW5nID0gbnVsbCxcclxuICAgIHVwZGF0ZTogYm9vbGVhbiA9IHRydWVcclxuICApIHtcclxuICAgIGxldCBkID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2xpcHBlclJlZmVyZW5jZXNDb21wb25lbnQsIHtcclxuICAgICAgYXJpYUxhYmVsOiAncmlmZXJpbWVudGkgbGVnYXRpIGFsIGRvY3VtZW50bycsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZG9jdW1lbnRJZDogZG9jdW1lbnRJZCA/PyB0aGlzLmxhc3REb2N1bWVudD8uZG9jdW1lbnRJZCxcclxuICAgICAgICBtb2RlOiBtb2RlLFxyXG4gICAgICAgIG1vZGVsOiBtb2RlbCxcclxuICAgICAgICBhbmNob3I6IGFuY2hvcixcclxuICAgICAgICBhbmNob3JUaXRsZTogYW5jaG9yVGl0bGUsXHJcbiAgICAgICAgdXBkYXRlOiB1cGRhdGUsXHJcbiAgICAgIH0sXHJcbiAgICAgIG1pbldpZHRoOiAnMzc1cHgnLFxyXG4gICAgICBtYXhXaWR0aDogJzEwMDBweCcsXHJcbiAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgIGhlaWdodDogJzEwMCUnLFxyXG4gICAgfSk7XHJcbiAgICBkLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnN1YnNjcmliZSgocjogQ2xpcHBlclJlZmVyZW5jZURpYWxvZ1Jlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyICYmIHIuZG9jdW1lbnRJZCkge1xyXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZShyLmRvY3VtZW50SWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IGEgcmVwb3J0XHJcbiAgICogQHBhcmFtIGl0ZW1cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZGlzcGxheVJlcG9ydChpdGVtOiBDbGlwcGVyRG9jdW1lbnRJbmZvKSB7XHJcbiAgICBpZiAoIWl0ZW0pIHJldHVybjtcclxuICAgIGlmIChpdGVtLm1vZGVsICE9IENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlICYmIGl0ZW0ubW9kZWwgIT0gQ2xpcHBlck1vZGVsLlNjYWRlbnplKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5pbmZvKFwiUXVlc3RhIGZ1bnppb25hbGl0w6Agbm9uIMOoIGRpc3BvbmliaWxlIHBlciBxdWVzdG8gdGlwbyBkaSBkb2N1bWVudG8uXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLm9wZW5SZXBvcnQoaXRlbS5pZCwgaXRlbS50aXRsZTEgPyBpdGVtLnRpdGxlMSA6IGl0ZW0udGl0bGUyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiBkb2N1bWVudHMgY2FuIGJlIHNlbGVjdGVkIGFuZCByZXR1cm5lZCBhcyBtZXNzYWdlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGNhblNlbGVjdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbk1vZGUgPiAwICYmIHRoaXMubGFzdERvY3VtZW50ICYmICh0aGlzLmxhc3REb2N1bWVudD8ubW9kZWwgPT09IENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlIHx8IHRoaXMubGFzdERvY3VtZW50Py5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm8pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kIGEgbWVzc2FnZSB3aXRoIGN1cnJlbnQgc2VsZWN0aW9uIGFuZCBjbG9zZSBkaWFsb2dcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2VsZWN0KCkge1xyXG4gICAgaWYgKHRoaXMubGFzdERvY3VtZW50KSB7XHJcbiAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5zZW5kTWVzc2FnZShDbGlwcGVyTWVzc2FnZXMuRE9DVU1FTlRfU0VMRUNURURfSU5ORVIsIFtcclxuICAgICAgICB0aGlzLmxhc3REb2N1bWVudCxcclxuICAgICAgXSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4iLCI8ZGl2IGNsYXNzPVwiY2xpcHBlci1kb2N1bWVudC1maXhlZFwiPlxyXG4gIDxkaXYgc3R5bGU9XCJoZWlnaHQ6NnB4XCI+XHJcbiAgICBAaWYgKGJ1c3koKSkge1xyXG4gICAgPG1hdC1wcm9ncmVzcy1iYXIgc3R5bGU9XCJ6LWluZGV4OjExXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbiAgPGRpdj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjIwcHhcIiBmeExheW91dEFsaWduPVwic3RhcnQgc3RhcnRcIiBmeEZpbGw+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiKlwiIGNsYXNzPVwidGl0bGUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlIGJvbGRcIj57e3RpdGxlKCl9fTwvZGl2PlxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50ICYmIGxhc3REb2N1bWVudD8ubGFzdFVwZGF0ZSkge1xyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nLXRvcDogNXB4O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIngtc21hbGwgYWNjZW50IGJvbGQgdXBwZXJjYXNlXCI+XHJcbiAgICAgICAgICAgIEFHR0lPUk5BVE8gQTpcclxuICAgICAgICAgICAge3tsYXN0RG9jdW1lbnQ/Lmxhc3RVcGRhdGV9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50ICYmIChsYXN0RG9jdW1lbnQ/LmV4cGlyaW5nRGVzY3JpcHRpb24gfHwgbGFzdERvY3VtZW50Py52YWxpZGl0eUluZm8pKSB7XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cInBhZGRpbmctdG9wOiA1cHg7XCI+XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uZXhwaXJpbmdEZXNjcmlwdGlvbikge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIngtc21hbGwgYWNjZW50LWxvdyBib2xkIHVwcGVyY2FzZVwiPlxyXG4gICAgICAgICAgICB7e2xhc3REb2N1bWVudD8uZXhwaXJpbmdEZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8udmFsaWRpdHlJbmZvKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwieC1zbWFsbCBlcnJvciBib2xkIHVwcGVyY2FzZVwiPjxiPkF0dGVuemlvbmUhPC9iPlxyXG4gICAgICAgICAgICB7e2xhc3REb2N1bWVudD8udmFsaWRpdHlJbmZvfX08L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICBAaWYgKGNhblNlbGVjdCgpKSB7XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiMTcwcHhcIiBmeEZsZXgubHQtbWQ9XCI1OHB4XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBmeEhpZGUubHQtbWQgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgY29sb3I9XCJwcmltYXJ5XCIgbWF0LWZsYXQtYnV0dG9uIChjbGljayk9XCJzZWxlY3QoKVwiXHJcbiAgICAgICAgICBjbGFzcz1cImNsaXBwZXItc2VsZWN0aW9uLWJ1dHRvblwiIHN0eWxlPVwibWFyZ2luLXRvcDogOHB4O1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzbWFsbCB1cHBlcmNhc2VcIj5Vc2Egc2VsZXppb25lPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gZnhIaWRlLmd0LXNtIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2VsZWN0KClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJjbGlwcGVyLXNlbGVjdGlvbi1pY29uLWJ1dHRvblwiIG1hdFRvb2x0aXA9XCJVc2Egc2VsZXppb25lXCIgYXJpYS1sYWJlbD1cIidVc2EgbGEgc2VsZXppb25lJ1wiXHJcbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IDRweDtcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5jaGVjazwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiMTY0cHhcIiBmeEZsZXgubHQtbWQ9XCI0OHB4XCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctY2xvc2VcIj5cclxuICAgICAgICAgIDxidXR0b24gZnhIaWRlLmx0LW1kIGZ4RmxleEFsaWduPVwic3RhcnRcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJJbmRpZXRyb1wiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJJbmRpZXRyb1wiIChjbGljayk9XCJiYWNrKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X2JhY2s8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4SGlkZS5sdC1tZCBmeEZsZXhBbGlnbj1cInN0YXJ0XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiQXZhbnRpXCIgYXJpYS1sYWJlbD1cIkF2YW50aVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJmb3J3YXJkKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X2ZvcndhcmQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwic3RhcnRcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJDaGl1ZGlcIiBhcmlhLWxhYmVsPVwiQ2hpdWRpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXY+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93IHdyYXAgXCIgZnhGaWxsIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiIHN0eWxlPVwicGFkZGluZzogMTBweCAxMHB4IDEwcHggMTVweDtcIj5cclxuICAgICAgPGRpdiBmeEZsZXgueHM9XCIxMDBcIj5cclxuICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8ubW9kZWwgPT09IDkpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGluZGljZSdcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImluZGV4KGxhc3REb2N1bWVudD8uZG9jdW1lbnRJZClcIj5cclxuICAgICAgICAgIEluZGljZVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIChsYXN0RG9jdW1lbnQ/LmJhZ1sxXSA9PT0nVCcgfHwgbGFzdERvY3VtZW50Py5iYWdbM10gPT09J1QnKSkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBtYXRUb29sdGlwPVwiQ29sbGVnYW1lbnRpXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0NvbGxlZ2FtZW50aSBhbCBkb2N1bWVudG8nXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVMaW5rc1wiPlxyXG4gICAgICAgICAgQ29sbGVnYW1lbnRpXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxtYXQtbWVudSAjbWVudUxpbmtzPVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1sxXSA9PT0nVCcpIHtcclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgZG9jdW1lbnRpIHJpY2hpYW1hdGknXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uZG9jdW1lbnRJZCwgMSlcIj5cclxuICAgICAgICAgICAgRG9jdW1lbnRpIHJpY2hpYW1hdGlcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1szXSA9PT0nVCcpIHtcclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgZG9jdW1lbnRpIGNoZSByaWNoaWFtYW5vJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmRvY3VtZW50SWQsIDIpXCI+XHJcbiAgICAgICAgICAgIERvY3VtZW50aSBjaGUgcmljaGlhbWFub1xyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIGxhc3REb2N1bWVudD8uYmFnWzJdID09PSdUJykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEhpZGUgZnhTaG93Lmx0LW1kIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGp1cmlzJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmRvY3VtZW50SWQsIDQpXCI+XHJcbiAgICAgICAgICAgIEp1cmlzXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbNF0gPT09J1QnKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4SGlkZSBmeFNob3cubHQtbWQgbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgbW9kaWZpY2hlIHN1Yml0ZSdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlblJlZmVyZW5jZXMobGFzdERvY3VtZW50Py5kb2N1bWVudElkLCAzKVwiPlxyXG4gICAgICAgICAgICBNb2RpZmljaGUgc3ViaXRlXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbNF0gIT09J1QnICYmIGxhc3REb2N1bWVudD8uYmFnWzZdID09PSdUJykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEhpZGUgZnhTaG93Lmx0LW1kIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIG1vZGlmaWNoZSBhcHBvcnRhdGUnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uZG9jdW1lbnRJZCwgNSlcIj5cclxuICAgICAgICAgICAgTW9kaWZpY2hlIGFwcG9ydGF0ZVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uaGFzUHJpbWFyeSkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGRvY3VtZW50byBwcmltYXJpbydcIiAoY2xpY2spPVwibmF2aWdhdGUobGFzdERvY3VtZW50Py5wcmltYXJ5SWQpXCI+XHJcbiAgICAgICAgICB7e2xhc3REb2N1bWVudD8ucHJpbWFyeURlc2NyaXB0aW9ufX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1syXSA9PT0nVCcpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIGZ4SGlkZS5sdC1tZCBtYXQtYnV0dG9uXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEganVyaXMnXCIgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uZG9jdW1lbnRJZCwgNClcIj5cclxuICAgICAgICAgIEp1cmlzXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbNF0gPT09ICdUJykge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgZnhIaWRlLmx0LW1kIG1hdC1idXR0b25cclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBtb2RpZmljaGUgc3ViaXRlJ1wiIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmRvY3VtZW50SWQsIDMpXCI+XHJcbiAgICAgICAgICBNb2RpZmljaGUgc3ViaXRlXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbNF0gIT09ICdUJyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1s2XSA9PT0gJ1QnKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBmeEhpZGUubHQtbWQgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIG1vZGlmaWNoZSBhcHBvcnRhdGUnXCIgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uZG9jdW1lbnRJZCwgNSlcIj5cclxuICAgICAgICAgIE1vZGlmaWNoZSBhcHBvcnRhdGVcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LnNlY29uZGFyeUlkKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgZG9jdW1lbnRvIHNlY29uZGFyaW8nXCIgKGNsaWNrKT1cIm5hdmlnYXRlKGxhc3REb2N1bWVudD8uc2Vjb25kYXJ5SWQpXCI+XHJcbiAgICAgICAgICBUZXN0byBzdG9yaWNvXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbN10gPT09ICdUJykge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgY29tbWVudG8nXCJcclxuICAgICAgICAgIChjbGljayk9XCJzaG93Q29tbWVudCgpXCI+XHJcbiAgICAgICAgICBDb21tZW50b1xyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgZnhGbGV4LnhzPVwiMTAwXCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgIDxkaXYgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgIEBpZiAoaGFzUmVsZXZhbnRzKCkgJiYgcmVsZXZhbnRzLmhpdHMpIHtcclxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIj5cclxuICAgICAgICAgICAgPGRpdiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNsYXNzPVwic21hbGwgaXRlbS1ncmV5ZWRcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OjIwcHg7IG1hcmdpbi1yaWdodDogNXB4XCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiUGFyb2xlIGV2aWRlbnppYXRlXCI+e3tyZWxldmFudHMuaGl0fX1cclxuICAgICAgICAgICAgICBkaSB7e3JlbGV2YW50cy5oaXRzfX08L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInVmFpIGFsbGEgcGFyb2xhIHByZWNlZGVudGUnXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicHJldmlvdXNSZWxldmFudCgpXCIgbWF0VG9vbHRpcD1cIlBhcm9sYSBwcmVjZWRlbnRlXCIgW2Rpc2FibGVkXT1cInJlbGV2YW50cy5oaXQgPD0gMVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX2xlZnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInVmFpIGFsbGEgcHJvc3NpbWEgcGFyb2xhJ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRSZWxldmFudCgpXCIgbWF0VG9vbHRpcD1cIlByb3NzaW1hIHBhcm9sYVwiIFtkaXNhYmxlZF09XCJyZWxldmFudHMuaGl0ID49IHJlbGV2YW50cy5oaXRzXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJBemlvbmkgc3VsIGRvY3VtZW50b1wiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBemlvbmkgZGEgZXNlZ3VpcmUgc3VsIGRvY3VtZW50bydcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudUFjdGlvbnNcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxtYXQtbWVudSAjbWVudUFjdGlvbnM9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0TWVudUNvbnRlbnQgbGV0LWl0ZW09XCJsYXN0RG9jdW1lbnRcIj5cclxuICAgICAgICAgICAgPGNsaXBwZXItZG9jdW1lbnQtbWVudSBbcGFyZW50XT1cInRoaXNcIiBbaXRlbV09XCJsYXN0RG9jdW1lbnRcIiBbY2FuUHJpbnRdPVwidHJ1ZVwiIFtjYW5GaW5kXT1cInRydWVcIiBbaXNSZWFkYWJsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgW2lzTGF3SW5Gb3JjZV09XCJsYXN0RG9jdW1lbnQ/Lm1vZGVsID09PSA5XCIgc2VsZWN0aW9uU291cmNlPVwibm9uZVwiPlxyXG4gICAgICAgICAgICA8L2NsaXBwZXItZG9jdW1lbnQtbWVudT5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+ICAgICAgICAgXHJcbiAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICBAaWYgKGhhc1JlbGV2YW50cygpICYmIHJlbGV2YW50cy5pdGVtcyAmJiByZWxldmFudHNQYW5lICYmICghcmVsZXZhbnRzUGFuZS5vcGVuZWQgfHwgcmVsZXZhbnRzUGFuZUNsb3NlZCkpIHtcclxuICAgICAgICA8ZGl2IGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIlJpbGV2YW56YVwiIGFyaWEtbGFiZWw9XCInUmlsZXZhbnphJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSZWxldmFudHNQYW5lKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPm1lbnVfb3BlbjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48bWF0LWRpYWxvZy1jb250ZW50IGlkPVwiY2xpcHBlci1kb2N1bWVudC1zY3JvbGxhYmxlXCI+XHJcbiAgPG1hdC1kcmF3ZXItY29udGFpbmVyIGNsYXNzPVwiZmlsbFwiIFtoYXNCYWNrZHJvcF09XCJbcmVsZXZhbnRzUGFuZUhhc0JhY2tkcm9wXVwiPlxyXG4gICAgPG1hdC1kcmF3ZXIgI3JlbGV2YW50c1BhbmUgcG9zaXRpb249XCJlbmRcIiBjbGFzcz1cImRyYXdlci1zbWFsbCBkcmF3ZXItd2l0aC1sb2FkZXJcIiBvcGVuZWQ9XCJmYWxzZVwiPlxyXG4gICAgICBAaWYgKHJlbGV2YW50c0J1c3koKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheVwiPjwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGw+XHJcbiAgICAgICAgPGRpdiBmeEZsZXg9XCI2cHhcIj5cclxuICAgICAgICAgIEBpZiAocmVsZXZhbnRzQnVzeSgpKSB7XHJcbiAgICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBzdHlsZT1cInotaW5kZXg6IDExO1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCI+XHJcbiAgICAgICAgICA8L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBmeEZsZXg9XCI1NnB4XCIgY2xhc3M9XCJ0aXRsZS1jb250YWluZXItd2l0aC1sb2FkZXJcIj5cclxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5SaWxldmFuemE8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ0b2dnbGVSZWxldmFudHNQYW5lKClcIlxyXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk5hc2NvbmRpXCI+PG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGZ4RmxleD1cIipcIiBjbGFzcz1cInJlbGV2YW50cy1jb250YWluZXIgc2Nyb2xsLWF1dG9cIj5cclxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGw+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgPHA+UGFydGkgZGVsIGRvY3VtZW50byBwacO5IHNpZ25pZmljYXRpdmUgcGVyIGxhIHJpY2VyY2EgZGkgPHNwYW4gY2xhc3M9J3dvcmQtaGl0Jz57e2xhc3RRdWVyeX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgZnhGbGV4PVwiKlwiPlxyXG4gICAgICAgICAgICAgIDxuYXYgY2xhc3M9XCJyZWxldmFudHMtaXRlbXNcIj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiByZWxldmFudHMuaXRlbXM7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJzbWFsbFwiIChjbGljayk9XCJnb3RvUmVsZXZhbnQoaXRlbSlcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIml0ZW0udGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IHN0YXJ0XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS50aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uc2NvcmUgPiAxLjIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPSdmb250LXNpemU6eC1zbWFsbDsgaGVpZ2h0OiAxMHB4OyB3aWR0aDoxMHB4JyBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJNb2x0byByaWxldmFudGVcIj50aHVtYl91cF9hbHQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICA8L25hdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1kcmF3ZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsbCBzY3JvbGwtaGlkZGVuXCI+XHJcbiAgICAgIDxpZnJhbWUgaWQ9XCJjbGlwcGVyLWRvY3VtZW50LWlmcmFtZVwiIGNsYXNzPVwiaWZyYW1lXCIgW3NyY109XCJ1cmwoKSB8IHNhZmVVcmxcIj48L2lmcmFtZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvbWF0LWRyYXdlci1jb250YWluZXI+XHJcbjwvbWF0LWRpYWxvZy1jb250ZW50PiJdfQ==
|
|
699
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvZG9jdW1lbnQvZG9jdW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvZG9jdW1lbnQvZG9jdW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBRVosTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBSUwsZUFBZSxFQUNmLFlBQVksRUFDWiww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QztRQUNmLENBQUM7SUFDSCxDQUFDOzhHQTV0QlUsd0JBQXdCO2tHQUF4Qix3QkFBd0IsbUlBbkJuQixXQUFXLENBQUMsWUFBWSxFQUFFLHFLQ3hENUMsd21ZQW9QcUIsOHJWRHRMakIsZ0JBQWdCLG8rSEFDaEIsZUFBZSx3VUFDZixnQkFBZ0IsNFRBQ2hCLGFBQWEsbUxBQ2IsYUFBYSxzMUJBQ2IsZ0JBQWdCLDhCQUNoQixvQkFBb0IseU5BQ3BCLGdCQUFnQix3R0FDaEIsZ0JBQWdCLG9kQUNoQixXQUFXLGdEQUNYLDRCQUE0Qjs7MkZBR25CLHdCQUF3QjtrQkFwQnBDLFNBQVM7MkJBQ0YsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLFlBQVksRUFBRSxFQUFFLG1CQUczQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLDRCQUE0QjtxQkFDN0I7OEJBSTJCLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFDaEIsT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50cyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBWaWV3Q2hpbGQsXHJcbiAgaW5qZWN0LFxyXG4gIHNpZ25hbFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ0NvbnRlbnQsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcclxuaW1wb3J0IHsgTWF0RHJhd2VyLCBNYXRTaWRlbmF2TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtcclxuICBDbGlwcGVyRG9jdW1lbnRBbmNob3JJbmZvLFxyXG4gIENsaXBwZXJEb2N1bWVudEluZm8sXHJcbiAgQ2xpcHBlckRvY3VtZW50UmVsZXZhbnRzLFxyXG4gIENsaXBwZXJNZXNzYWdlcyxcclxuICBDbGlwcGVyTW9kZWwsXHJcbiAgQ2xpcHBlclF1ZXJ5UmVmZXJlbmNlc01vZGUsXHJcbiAgQ2xpcHBlclNlYXJjaFBhcmFtc1xyXG59IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY2xpcHBlci5jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIFNhZmVVcmxQaXBlLFxyXG4gIFN5c3RlbVV0aWxzLFxyXG4gIFRoZW1lVHlwZVxyXG59IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY29yZSc7XHJcbmltcG9ydCB7IEZpbGVQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy91aS5hcHBsaWNhdGlvbic7XHJcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENsaXBwZXJSZWZlcmVuY2VEaWFsb2dSZXN1bHQsIENsaXBwZXJSZWZlcmVuY2VzQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVmZXJlbmNlcy9yZWZlcmVuY2VzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudEluZGV4Q29tcG9uZW50LCBDbGlwcGVyRG9jdW1lbnRJbmRleERpYWxvZ1Jlc3VsdCB9IGZyb20gJy4uL2RvY3VtZW50LWluZGV4L2RvY3VtZW50LWluZGV4LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudE1hbmFnZXIgfSBmcm9tICcuLi9kb2N1bWVudC1tYW5hZ2VyL2RvY3VtZW50LW1hbmFnZXInO1xyXG5pbXBvcnQgeyBGbGV4TGF5b3V0TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0JztcclxuaW1wb3J0IHsgQ2xpcHBlckRvY3VtZW50c1V0aWxzIH0gZnJvbSAnLi4vLi4vZG9jdW1lbnRzJztcclxuaW1wb3J0IHsgQ2xpcHBlckRvY3VtZW50TWVudUNvbXBvbmVudCB9IGZyb20gJy4uL2RvY3VtZW50LW1lbnUvZG9jdW1lbnQtbWVudS5jb21wb25lbnQnO1xyXG5cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2xpcHBlckRvY3VtZW50RGlhbG9nRGF0YSB7XHJcbiAgc2VsZWN0aW9uTW9kZTogbnVtYmVyO1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgcXVlcnk/OiBzdHJpbmcgfCBudWxsO1xyXG4gIHRoZW1lPzogVGhlbWVUeXBlIHwgbnVsbDtcclxuXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIGhvc3Q6IHsgJ0JpbmQnOiBTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKSB9LFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2N1bWVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZG9jdW1lbnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZsZXhMYXlvdXRNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdE1lbnVNb2R1bGUsXHJcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxyXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXHJcbiAgICBNYXREaWFsb2dDb250ZW50LFxyXG4gICAgTWF0U2lkZW5hdk1vZHVsZSxcclxuICAgIFNhZmVVcmxQaXBlLFxyXG4gICAgQ2xpcHBlckRvY3VtZW50TWVudUNvbXBvbmVudFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbGlwcGVyRG9jdW1lbnRDb21wb25lbnQgZXh0ZW5kcyBDbGlwcGVyRG9jdW1lbnRNYW5hZ2VyXHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgncmVsZXZhbnRzUGFuZScpIHJlbGV2YW50c1BhbmUhOiBNYXREcmF3ZXI7XHJcbiAgQE91dHB1dCgpIGNsb3NpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9wZW5pbmcgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXIgPSBpbmplY3QoQnJlYWtwb2ludE9ic2VydmVyKTtcclxuICBwcml2YXRlIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcbiAgcHJpdmF0ZSByZW5kZXJlckxpc3RlbmVyMTogYW55O1xyXG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgcHJpdmF0ZSBkaWFsb2dSZWYgPSBpbmplY3QoTWF0RGlhbG9nUmVmPENsaXBwZXJEb2N1bWVudENvbXBvbmVudD4pO1xyXG4gIHByb3RlY3RlZCBkaWFsb2dEYXRhOiBDbGlwcGVyRG9jdW1lbnREaWFsb2dEYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgPz8geyBtb2RlOiBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZS5SZWZlcmVuY2VzSW4gfTtcclxuICBwcm90ZWN0ZWQgdXJsID0gc2lnbmFsPHN0cmluZz4obnVsbCk7XHJcbiAgcHJvdGVjdGVkIHRpdGxlID0gc2lnbmFsPHN0cmluZz4obnVsbCk7XHJcbiAgcHJvdGVjdGVkIGJ1c3kgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHByb3RlY3RlZCBsYXN0UXVlcnk/OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgbGFzdERvY3VtZW50PzogQ2xpcHBlckRvY3VtZW50SW5mbyB8IG51bGwgPSB7fTtcclxuICBwcm90ZWN0ZWQgcmVsZXZhbnRzOiBDbGlwcGVyRG9jdW1lbnRSZWxldmFudHMgPSB7XHJcbiAgICBpdGVtczogW10sXHJcbiAgICBoaXRzOiAwLFxyXG4gICAgaGl0OiAwLFxyXG4gICAgbWluaW11bVNjb3JlOiAxMDAsXHJcbiAgfTtcclxuICBwcm90ZWN0ZWQgcmVsZXZhbnRzUGFuZUhhc0JhY2tkcm9wOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJvdGVjdGVkIHJlbGV2YW50c1BhbmVDbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm90ZWN0ZWQgcmVsZXZhbnRzQnVzeSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJvdGVjdGVkIGhhc1JlbGV2YW50cyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJvdGVjdGVkIHNlbGVjdGlvbk1vZGU/OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kaWFsb2dEYXRhKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZSA9IHRoaXMuZGlhbG9nRGF0YS5zZWxlY3Rpb25Nb2RlO1xyXG4gICAgICBpZiAodGhpcy5kaWFsb2dEYXRhLmlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID1cclxuICAgICAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2Uuc2VydmljZVVyaSArXHJcbiAgICAgICAgICBcIi9kb2N1bWVudHMvcmVuZGVyLz9xdWVyeT1cIiArXHJcbiAgICAgICAgICAodGhpcy5kaWFsb2dEYXRhLnF1ZXJ5ID8/ICcnKSArXHJcbiAgICAgICAgICBcIiZ0aGVtZT1cIiArXHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ0RhdGEudGhlbWUgK1xyXG4gICAgICAgICAgXCImaWQ9XCIgK1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dEYXRhLmlkXHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHVybCk7XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTGlzdGVuIHRvIHdpbmRvdyBtZXNzYWdlc1xyXG4gICAgdGhpcy5yZW5kZXJlckxpc3RlbmVyMSA9IHRoaXMucmVuZGVyZXIubGlzdGVuKFxyXG4gICAgICAnd2luZG93JyxcclxuICAgICAgJ21lc3NhZ2UnLFxyXG4gICAgICAoZTogRXZlbnQpID0+IHtcclxuICAgICAgICBsZXQgZXZlbnQgPSBlIGFzIE1lc3NhZ2VFdmVudDtcclxuICAgICAgICBpZiAoIWV2ZW50KSByZXR1cm47XHJcbiAgICAgICAgaWYgKGV2ZW50LmRhdGEpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShldmVudC5kYXRhKTtcclxuICAgICAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgICAgICBzd2l0Y2ggKGRhdGEudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnbmF2aWdhdGVkJzpcclxuICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZWQoXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5pZCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnRpdGxlMSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnRpdGxlMixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm1vZGVsLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEubW9kdWxlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEubW9kdWxlTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmRhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5udW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5hdXRob3IsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5vcmlnaW4sXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5vcmlnaW5EZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmJhZyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnZhbGlkaXR5SW5mbyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmV4cGlyaW5nSW5mbyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnByaW1hcnlJZCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnByaW1hcnlNb2RlbCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnNlY29uZGFyeUlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuaXNUcmlhbFxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ25hdmlnYXRlJzpcclxuICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZShkYXRhLnVybCk7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAncmVmZXJlbmNlcyc6XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub3BlblJlZmVyZW5jZXMoXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5pZCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm1vZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5tb2RlbCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmFuY2hvcixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmFuY2hvclRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEudXBkYXRlXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnaGl0cyc6XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVsZXZhbnRzLmhpdHMgPSBkYXRhLnRvdGFsO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJlbGV2YW50cygpO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgLy8gT2JzZXJ2ZSBsYXlvdXQgY2hhbmdlc1xyXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJcclxuICAgICAgLm9ic2VydmUoW1xyXG4gICAgICAgIEJyZWFrcG9pbnRzLlhTbWFsbCxcclxuICAgICAgICBCcmVha3BvaW50cy5TbWFsbCxcclxuICAgICAgICBCcmVha3BvaW50cy5NZWRpdW0sXHJcbiAgICAgICAgQnJlYWtwb2ludHMuTGFyZ2UsXHJcbiAgICAgICAgQnJlYWtwb2ludHMuWExhcmdlLFxyXG4gICAgICBdKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICBmb3IgKGNvbnN0IHF1ZXJ5IG9mIE9iamVjdC5rZXlzKHJlc3VsdC5icmVha3BvaW50cykpIHtcclxuICAgICAgICAgIGlmIChyZXN1bHQuYnJlYWtwb2ludHNbcXVlcnldKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlUmVsZXZhbnRzUGFuZVZpc2liaWxpdHkoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIC8vIFJlYWN0IHRvIHdpbmRvdyBzaXplIGNoYW5nZVxyXG4gICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICAgIGlmICh0aGlzLnJlbmRlcmVyTGlzdGVuZXIxKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXJMaXN0ZW5lcjEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBSZXNpemUgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZXNpemUoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgbGV0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xpcHBlci1kb2N1bWVudC1zY3JvbGxhYmxlJyk7XHJcbiAgICAgIGlmIChlbGVtKSB7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmdldEN1cnJlbnREaWFsb2dTY3JvbGxhYmxlSGVpZ2h0KFxyXG4gICAgICAgICAgWydjbGlwcGVyLWRvY3VtZW50LWZpeGVkJ10sXHJcbiAgICAgICAgICB3aW5kb3cuaW5uZXJIZWlnaHRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChoZWlnaHQgIT0gZWxlbS5jbGllbnRIZWlnaHQpIHtcclxuICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCdzdHlsZScsICdwYWRkaW5nOjA7aGVpZ2h0OicgKyBoZWlnaHQgKyAncHggIWltcG9ydGFudDttYXgtaGVpZ2h0OicgKyBoZWlnaHQgKyAncHggIWltcG9ydGFudCcpO1xyXG4gICAgICAgICAgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LWlmcmFtZScpO1xyXG4gICAgICAgICAgZWxlbT8uc2V0QXR0cmlidXRlKCdzdHlsZScsICdoZWlnaHQ6JyArIChoZWlnaHQgLSAyMCkgKyAncHggIWltcG9ydGFudDttYXgtaGVpZ2h0OicgKyAoaGVpZ2h0IC0gMjApICsgJ3B4ICFpbXBvcnRhbnQnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8qKlxyXG4gKiBTaG93IGhpZGUgcmVsZXZhbnRzIHBhbmUgbWFudWFsbHlcclxuICovXHJcbiAgcHJvdGVjdGVkIHRvZ2dsZVJlbGV2YW50c1BhbmUoKSB7XHJcbiAgICB0aGlzLnJlbGV2YW50c1BhbmVDbG9zZWQgPSAhdGhpcy5yZWxldmFudHNQYW5lQ2xvc2VkO1xyXG4gICAgdGhpcy5yZWxldmFudHNQYW5lPy50b2dnbGUoKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGZpbHRlciBwYW5lIHZpc2liaWxpdHlcclxuICAgKi9cclxuICBwcml2YXRlIGhhbmRsZVJlbGV2YW50c1BhbmVWaXNpYmlsaXR5KCkge1xyXG4gICAgaWYgKHRoaXMucmVsZXZhbnRzUGFuZSkge1xyXG4gICAgICBpZiAodGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKEJyZWFrcG9pbnRzLlhTbWFsbCkgfHxcclxuICAgICAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoQnJlYWtwb2ludHMuU21hbGwpIHx8XHJcbiAgICAgICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKEJyZWFrcG9pbnRzLk1lZGl1bSkpIHtcclxuICAgICAgICBpZiAodGhpcy5yZWxldmFudHNQYW5lLm9wZW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZS5tb2RlID0gJ292ZXInO1xyXG4gICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZS5kaXNhYmxlQ2xvc2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmVIYXNCYWNrZHJvcCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJlbGV2YW50c1BhbmUub3BlbmVkICYmICF0aGlzLnJlbGV2YW50c1BhbmVDbG9zZWQgJiYgdGhpcy5oYXNSZWxldmFudHMoKSkge1xyXG4gICAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lLm9wZW4oKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVsZXZhbnRzUGFuZS5vcGVuZWQgJiYgdGhpcy5yZWxldmFudHNQYW5lQ2xvc2VkKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lLm1vZGUgPSAnc2lkZSc7XHJcbiAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lLmRpc2FibGVDbG9zZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lSGFzQmFja2Ryb3AgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvc2UgZGlhbG9nXHJcbiAgICovXHJcblxyXG4gIHByb3RlY3RlZCBjbG9zZSgpIHtcclxuICAgIGlmICh0aGlzLmNsb3NpbmcpIHtcclxuICAgICAgdGhpcy5jbG9zaW5nLmVtaXQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOYXZpZ2F0ZSB0byBhIG5ldyBkb2N1bWVudFxyXG4gICAqIEBwYXJhbSBpZCA6IHRoZSBkb2N1bWVudCBpZFxyXG4gICAqL1xyXG4gIG5hdmlnYXRlKGlkOiBzdHJpbmcpIHtcclxuICAgIGlmICghaWQgfHwgaWQubGVuZ3RoID09IDApXHJcbiAgICAgIHJldHVybjsgLy8gTm90aGluZyB0byBkb1xyXG5cclxuICAgIGlmIChpZC5pbmRleE9mKCc/JykgIT09IC0xKSB7XHJcbiAgICAgIGlmIChpZC5zdGFydHNXaXRoKCcvYXBpJykpXHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY2xpcHBlclNlcnZpY2Uuc2VydmljZVVyaSArIGlkLnN1YnN0cmluZyg0KSk7XHJcbiAgICAgIGVsc2UgaWYgKCFpZC5zdGFydHNXaXRoKHRoaXMuY2xpcHBlclNlcnZpY2Uuc2VydmljZVVyaSkpXHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY2xpcHBlclNlcnZpY2Uuc2VydmljZVVyaSArIGlkKTtcclxuICAgICAgZWxzZSB0aGlzLm5hdmlnYXRlQnlVcmwoaWQpO1xyXG4gICAgfSBlbHNlXHJcbiAgICAgIHRoaXMubmF2aWdhdGVCeVVybChcclxuICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLnNlcnZpY2VVcmkgK1xyXG4gICAgICAgIFwiL2RvY3VtZW50cy9yZW5kZXIvP3F1ZXJ5PSZpZD1cIiArIGlkKTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOYXZpZ2F0ZSBieSB1cmxcclxuICAgKiBAcGFyYW0gdXJsIDogdGhlIHVybCAgdG8gbmF2aWdhdGUgdG9cclxuICAgKi9cclxuICBuYXZpZ2F0ZUJ5VXJsKHVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXVybCB8fCB1cmwubGVuZ3RoID09PSAwIHx8IHVybCA9PT0gJ2Fib3V0OmJsYW5rJylcclxuICAgICAgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRvXHJcbiAgICAvLyBDbGVhbiB1cmwsIHRha2Ugb25seSB0aGUgZmlyc3QgYW5jaG9yXHJcbiAgICBsZXQgcGFydHMgPSB1cmwuc3BsaXQoJyMnKTtcclxuICAgIHVybCA9IHBhcnRzWzBdO1xyXG4gICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgdXJsICs9ICcjJyArIHBhcnRzWzFdO1xyXG4gICAgfVxyXG4gICAgLy8gSGFuZGxlIGZyZWUgdGV4dCBxdWVyeVxyXG4gICAgbGV0IHF1ZXJ5ID0gJyc7XHJcbiAgICBsZXQgcCA9IHVybC5pbmRleE9mKCdxdWVyeT0nKTtcclxuICAgIGlmIChwICE9PSAtMSkge1xyXG4gICAgICBwICs9IDY7XHJcbiAgICAgIHdoaWxlICh1cmwubGVuZ3RoID4gcCAmJiB1cmxbcF0gIT09ICcmJyAmJiB1cmxbcF0gIT09ICcjJykge1xyXG4gICAgICAgIHF1ZXJ5ICs9IHVybFtwKytdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChxdWVyeS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgLy8gUmVzZXRcclxuICAgICAgICB0aGlzLnJlbGV2YW50cy5oaXQgPSAwO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAvLyBBc3NpZ24gcXVlcnkgdG8gZW5hYmxlIHNlYXJjaCBmb3IgZnJhZ21lbnRzXHJcbiAgICAgICAgICB0aGlzLmxhc3RRdWVyeSA9IGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVVUklDb21wb25lbnQocXVlcnkpKTtcclxuICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgIHRoaXMubGFzdFF1ZXJ5ID0gcXVlcnk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBUaGVtZVxyXG4gICAgaWYgKHVybC5pbmRleE9mKCd0aGVtZT0nKSA9PT0gLTEpIHtcclxuICAgICAgcCA9IHVybC5pbmRleE9mKCdpZD0nKTtcclxuICAgICAgaWYgKHAgIT09IC0xKSB7XHJcbiAgICAgICAgdXJsID0gdXJsLnN1YnN0cmluZygwLCBwKSArICd0aGVtZT0nICsgdGhpcy5kaWFsb2dEYXRhLnRoZW1lICsgJyYnICsgdXJsLnN1YnN0cmluZyhwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBuYXZpZ2F0ZVRvRmlsZSA9IHVybC5pbmRleE9mKCcmZmlsZT10cnVlJykgIT09IC0xO1xyXG4gICAgaWYgKG5hdmlnYXRlVG9GaWxlID09PSB0cnVlKSB7XHJcbiAgICAgIC8vIFByZXZpZXdcclxuICAgICAgdGhpcy5wcmV2aWV3RmlsZSh1cmwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jbGlwcGVyU2VydmljZS5wcmVSZW5kZXIoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIC8vIEJlZ2luIGxvYWRpbmcgb25seSBpZiBub3QgZG93bmxvYWRpbmcgYSBmaWxlXHJcbiAgICAgICAgdGhpcy5idXN5LnNldCh1cmwuaW5kZXhPZignZG9jdW1lbnRzL3JlbmRlci9pdGVtJykgPT09IC0xKTtcclxuICAgICAgICAvLyBOYXZpZ2F0ZVxyXG4gICAgICAgIHRoaXMudXJsLnNldCh1cmwpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlZCBjYWxsYmFjayAgIFxyXG4gICAqL1xyXG4gIHB1YmxpYyBuYXZpZ2F0ZWQoXHJcbiAgICBpZDogc3RyaW5nLCAvLyBEb2N1bW5lbnQgaWRcclxuICAgIHRpdGxlMTogc3RyaW5nLCAvLyBUaXRsZSAxXHJcbiAgICB0aXRsZTI6IHN0cmluZywgLy8gVGl0bGUgMlxyXG4gICAgbW9kZWw6IG51bWJlciwgLy8gTW9kZWxcclxuICAgIG1vZHVsZUlkOiBudW1iZXIsIC8vIE1vZHVsZVxyXG4gICAgbW9kdWxlTmFtZTogc3RyaW5nLCAvLyBNb2R1bGUgbmFtZVxyXG4gICAgZGF0ZTogc3RyaW5nLCAvLyBEYXRlXHJcbiAgICBudW1iZXI6IHN0cmluZywgLy8gTnVtYmVyXHJcbiAgICBhdXRob3I6IHN0cmluZywgLy8gQXV0aG9yXHJcbiAgICBvcmlnaW46IHN0cmluZywgLy8gT3JpZ2luXHJcbiAgICBvcmlnaW5EZXNjcmlwdGlvbjogc3RyaW5nLCAvLyBPcmlnaW4gZGVzY3JpcHRpb25cclxuICAgIGJhZzogc3RyaW5nLCAvLyBGbGFnc1xyXG4gICAgdmFsaWRpdHlJbmZvOiBzdHJpbmcsIC8vIEluZm8gYWJvdXQgdmFsaWRpdHlcclxuICAgIGV4cGlyaW5nSW5mbzogc3RyaW5nLCAvLyBJbmZvIGFib3V0IGV4cGlyaW5nIGRhdGVcclxuICAgIHByaW1hcnlJZDogc3RyaW5nLCAvLyBQcmltYXJ5IGRvY3VtZW50IGlkXHJcbiAgICBwcmltYXJ5TW9kZWw6IG51bWJlciwgLy8gUHJpbWFyeSBkb2N1bWVudCBtb2RlbFxyXG4gICAgc2Vjb25kYXJ5SWQ6IHN0cmluZywgLy8gU2Vjb25kYXJ5IGRvY3VtZW50IGlkXHJcbiAgICBpc1RyaWFsOiBib29sZWFuIC8vIFRydWUgaWYgaXMgYSB0cmlhbCByZXF1ZXN0XHJcbiAgKSB7XHJcbiAgICAvLyBDaGVjayBmb3Igc2Vzc2lvbiBleHBpcmluZ1xyXG4gICAgaWYgKHRpdGxlMSA9PT0gJ1Nlc3Npb25lIG5vbiB2YWxpZGEnKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZVxyXG4gICAgICAgIC5lcnJvcih0aXRsZTIsIG51bGwsIHRpdGxlMSwgJ0FjY2VkaSBkaSBudW92bycpXHJcbiAgICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnbG9naW4nXSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTdG9yZSBkYXRhXHJcbiAgICBpZiAoIXRoaXMubGFzdERvY3VtZW50KSB7XHJcbiAgICAgIHRoaXMubGFzdERvY3VtZW50ID0ge307XHJcbiAgICB9XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5pZCA9IGlkO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQuZG9jdW1lbnRJZCA9IGlkO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQudGl0bGUxID0gdGl0bGUxID8gU3lzdGVtVXRpbHMudXJsRGVjb2RlKHRpdGxlMSkgOiBudWxsO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQudGl0bGUyID0gdGl0bGUyID8gU3lzdGVtVXRpbHMudXJsRGVjb2RlKHRpdGxlMikgOiBudWxsO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQubW9kZWwgPSBtb2RlbDtcclxuICAgIHRoaXMubGFzdERvY3VtZW50Lm1vZHVsZSA9IG1vZHVsZUlkO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQubW9kdWxlTmFtZSA9IG1vZHVsZU5hbWU7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5kYXRlID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5udW1iZXIgPSBudW1iZXI7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5hdXRob3IgPSBhdXRob3I7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5vcmlnaW4gPSBvcmlnaW47XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5vcmlnaW5EZXNjcmlwdGlvbiA9IG9yaWdpbkRlc2NyaXB0aW9uO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQuYmFnID0gYmFnO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQudmFsaWRpdHlJbmZvID0gdmFsaWRpdHlJbmZvO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQucHJpbWFyeUlkID0gcHJpbWFyeUlkO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQucHJpbWFyeU1vZGVsID0gcHJpbWFyeU1vZGVsO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQuaGFzUHJpbWFyeSA9XHJcbiAgICAgIHByaW1hcnlJZCAmJlxyXG4gICAgICAobW9kZWwgPT09IENsaXBwZXJNb2RlbC5BZ2dpb3JuYW1lbnRvTm9ybWF0aXZvIHx8XHJcbiAgICAgICAgbW9kZWwgPT09IENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlKTtcclxuICAgIGlmIChwcmltYXJ5SWQpIHtcclxuICAgICAgdmFyIGRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgIHN3aXRjaCAocHJpbWFyeU1vZGVsID8gcHJpbWFyeU1vZGVsIDogbW9kZWwpIHtcclxuICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlOlxyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSAnVGVzdG8gdmlnZW50ZSc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5BZ2dpb3JuYW1lbnRvTm9ybWF0aXZvOlxyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSAnVGVzdG8gc3Rvcmljbyc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5TY2FkZW56ZTpcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gJ1NjYWRlbnphJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLkNvb3JkaW5hbWVudG86XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdNb2RpZmljYSc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSAnQ29sbGVnYW1lbnRvJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubGFzdERvY3VtZW50LnByaW1hcnlEZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQuc2Vjb25kYXJ5SWQgPSBzZWNvbmRhcnlJZDtcclxuICAgIHRoaXMubGFzdERvY3VtZW50LmlzVHJpYWwgPSBpc1RyaWFsO1xyXG5cclxuICAgIC8vIEhhbmRsZSBleHBpcmluZyBpbmZvXHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5leHBpcmluZ0Rlc2NyaXB0aW9uID0gbnVsbDtcclxuICAgIGlmIChleHBpcmluZ0luZm8pIHtcclxuICAgICAgbGV0IHBhcnRzID0gZXhwaXJpbmdJbmZvLnNwbGl0KCcjJyk7XHJcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgbGV0IHBhcnRzMiA9IHBhcnRzWzBdLnNwbGl0KCd8Jyk7XHJcbiAgICAgICAgaWYgKHBhcnRzMi5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgdGhpcy5sYXN0RG9jdW1lbnQuZXhwaXJpbmdEYXRlID0gbmV3IERhdGUocGFydHMyWzBdKTtcclxuICAgICAgICBpZiAocGFydHMyLmxlbmd0aCA+IDEpIHRoaXMubGFzdERvY3VtZW50LmV4cGlyaW5nSW5mbyA9IHBhcnRzMlsxXTtcclxuICAgICAgICBpZiAocGFydHMyLmxlbmd0aCA+IDIpXHJcbiAgICAgICAgICB0aGlzLmxhc3REb2N1bWVudC5leHBpcmluZ0luZm8gKz0gJ3wnICsgcGFydHMyWzJdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB0aGlzLmxhc3REb2N1bWVudC5leHBpcmluZ0Rlc2NyaXB0aW9uID0gcGFydHNbMV07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU2V0IHRpdGxlXHJcbiAgICB0aGlzLnRpdGxlLnNldCh0aGlzLmxhc3REb2N1bWVudC50aXRsZTFcclxuICAgICAgPyB0aGlzLmxhc3REb2N1bWVudC50aXRsZTFcclxuICAgICAgOiB0aGlzLmxhc3REb2N1bWVudC50aXRsZTIpO1xyXG5cclxuICAgIC8vIEdldCBsYXN0IGRvY3VtZW50IHVwZGF0ZVxyXG4gICAgdGhpcy5jbGlwcGVyU2VydmljZS5sYXN0VXBkYXRlKHRoaXMubGFzdERvY3VtZW50LmlkKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgIGlmIChyLnN1Y2Nlc3MpIHtcclxuICAgICAgICB0aGlzLmxhc3REb2N1bWVudC5sYXN0VXBkYXRlID0gci52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gTm90aWZ5IG5hdmlnYXRpb24gaGFzIGNvbXBsZXRlZFxyXG4gICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnNlbmRNZXNzYWdlKENsaXBwZXJNZXNzYWdlcy5ET0NVTUVOVF9OQVZJR0FURUQsIHtcclxuICAgICAgZG9jdW1lbnQ6IFN5c3RlbVV0aWxzLmNsb25lKHRoaXMubGFzdERvY3VtZW50KSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYnVzeS5zZXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ290byBwcmV2aW91cyBkb2N1bWVudCBpbiBoaXN0b3J5XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGJhY2soKSB7XHJcbiAgICBsZXQgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LWlmcmFtZScpIGFzIGFueTtcclxuICAgIGY/LmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoJ3tcInR5cGVcIjogXCJiYWNrXCJ9JywgJyonKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdvdG8gbmV4dCBkb2N1bWVudCBpbiBoaXN0b3J5XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGZvcndhcmQoKSB7XHJcbiAgICBsZXQgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LWlmcmFtZScpIGFzIGFueTtcclxuICAgIGY/LmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoJ3tcInR5cGVcIjogXCJmb3J3YXJkXCJ9JywgJyonKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogR290byBuZXh0IHJlbGV2YW50IGl0ZW1cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgbmV4dFJlbGV2YW50KCkge1xyXG4gICAgbGV0IGkgPSB0aGlzLnJlbGV2YW50cy5oaXQgKyAxO1xyXG4gICAgaWYgKGkgPD0gdGhpcy5yZWxldmFudHMuaGl0cykge1xyXG4gICAgICBsZXQgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LWlmcmFtZScpIGFzIGFueTtcclxuICAgICAgZj8uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSgne1widHlwZVwiOiBcInJlbGV2YW50XCIsIFwidmFsdWVcIjogXCJuZXh0XCJ9JywgJyonKTtcclxuICAgICAgdGhpcy5yZWxldmFudHMuaGl0Kys7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHb3RvIHByZXZpb3VzIHJlbGV2YW50IGl0ZW1cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgcHJldmlvdXNSZWxldmFudCgpIHtcclxuICAgIGxldCBpID0gdGhpcy5yZWxldmFudHMuaGl0IC0gMTtcclxuICAgIGlmIChpID4gMCkge1xyXG4gICAgICBsZXQgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LWlmcmFtZScpIGFzIGFueTtcclxuICAgICAgZj8uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShcclxuICAgICAgICAne1widHlwZVwiOiBcInJlbGV2YW50XCIsIFwidmFsdWVcIjogXCJwcmV2aW91c1wifScsXHJcbiAgICAgICAgJyonXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMucmVsZXZhbnRzLmhpdC0tO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR290byBhIHJlbGV2YW50IGl0ZW1cclxuICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIGdvIHRvXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGdvdG9SZWxldmFudChpdGVtOiBDbGlwcGVyRG9jdW1lbnRBbmNob3JJbmZvKSB7XHJcbiAgICBpZiAoaXRlbS50eXBlID09PSAyMCkge1xyXG4gICAgICB3aW5kb3cub3BlbihcclxuICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLnNlcnZpY2VVcmkgK1xyXG4gICAgICAgIFwiL2RvY3VtZW50cy9yZW5kZXIvaXRlbS8/dGhlbWU9XCIgKyB0aGlzLmRpYWxvZ0RhdGEudGhlbWUgKyBcIiZpZD1cIiArIGl0ZW0uZG9jdW1lbnRJZCxcclxuICAgICAgICAnX2JsYW5rJ1xyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xpcHBlci1kb2N1bWVudC1pZnJhbWUnKSBhcyBhbnk7XHJcbiAgICAgIGY/LmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoXHJcbiAgICAgICAgJ3tcInR5cGVcIjogXCJyZWxldmFudFwiLCBcInZhbHVlXCI6IFwiJyArIGl0ZW0udXJpICsgJ1wifScsXHJcbiAgICAgICAgJyonXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgcmVsZXZhbnQgaXRlbXNcclxuICAgKi9cclxuICBwcml2YXRlIHVwZGF0ZVJlbGV2YW50cygpIHtcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMubGFzdFF1ZXJ5IHx8XHJcbiAgICAgIHRoaXMubGFzdFF1ZXJ5Lmxlbmd0aCA9PT0gMCB8fFxyXG4gICAgICB0aGlzLmxhc3RRdWVyeSA9PT0gJyAnXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5oYW5kbGVSZWxldmFudHNQYW5lVmlzaWJpbGl0eSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IHBhcmFtcyA9IG5ldyBDbGlwcGVyU2VhcmNoUGFyYW1zKCk7XHJcbiAgICAgIHBhcmFtcy5pZCA9IHRoaXMubGFzdERvY3VtZW50LmRvY3VtZW50SWQgPz8gdGhpcy5sYXN0RG9jdW1lbnQuaWQ7XHJcbiAgICAgIHBhcmFtcy50ZXh0ID0gdGhpcy5sYXN0UXVlcnk7XHJcbiAgICAgIHBhcmFtcy5jb3VudCA9IDE7XHJcbiAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2VcclxuICAgICAgICAucXVlcnkocGFyYW1zKVxyXG4gICAgICAgIC5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICBpZiAoIXIuc3VjY2VzcykgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSk7XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IG1pbmltdW1TY29yZSA9IDA7XHJcbiAgICAgICAgICAgIGlmIChyLnZhbHVlPy5pdGVtcyAmJiByLnZhbHVlPy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgci52YWx1ZS5pdGVtc1swXS5hbmNob3JzLmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2NvcmUgPSBuLnNjb3JlO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNjb3JlID4gNykgc2NvcmUgLT0gNztcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjb3JlID4gNSkgc2NvcmUgLT0gNTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjb3JlID4gMykgc2NvcmUgLT0gMztcclxuICAgICAgICAgICAgICAgIGlmIChtaW5pbXVtU2NvcmUgPiBzY29yZSkgbWluaW11bVNjb3JlID0gc2NvcmU7XHJcbiAgICAgICAgICAgICAgICBuLnNjb3JlID0gc2NvcmU7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZWxldmFudHMubWluaW11bVNjb3JlID0gbWluaW11bVNjb3JlO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVsZXZhbnRzLml0ZW1zID0gci52YWx1ZS5pdGVtc1swXS5hbmNob3JzO1xyXG4gICAgICAgICAgICAgIHRoaXMuaGFzUmVsZXZhbnRzLnNldCh0aGlzLnJlbGV2YW50cy5pdGVtcz8ubGVuZ3RoID4gMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVSZWxldmFudHNQYW5lVmlzaWJpbGl0eSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IGRvY3VtZW50IHN0cnVjdHVyZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBpbmRleChkb2N1bWVudElkOiBzdHJpbmcpIHtcclxuICAgIGxldCBkID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2xpcHBlckRvY3VtZW50SW5kZXhDb21wb25lbnQsIHtcclxuICAgICAgYXJpYUxhYmVsOiAnaW5kaWNlIGRvY3VtZW50bycsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZG9jdW1lbnRJZDogZG9jdW1lbnRJZCxcclxuICAgICAgICBleGNsdWRlZFR5cGVzOiBudWxsLFxyXG4gICAgICAgIG11bHRpcGxlOiBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgbWF4V2lkdGg6ICc2MDBweCcsXHJcbiAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KTtcclxuICAgIGQuY29tcG9uZW50SW5zdGFuY2UuZG9uZVxyXG4gICAgICAuc3Vic2NyaWJlKChyOiBDbGlwcGVyRG9jdW1lbnRJbmRleERpYWxvZ1Jlc3VsdCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSByLmRhdGEubGVuZ3RoID4gMCA/IHIuZGF0YVswXSA6IG51bGw7XHJcbiAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgIGlmIChpdGVtLmRvY3VtZW50SWQgPT09IGRvY3VtZW50SWQpIHtcclxuICAgICAgICAgICAgbGV0IGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xpcHBlci1kb2N1bWVudC1pZnJhbWUnKSBhcyBhbnk7XHJcbiAgICAgICAgICAgIGY/LmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgJ3tcInR5cGVcIjogXCJnb3RvXCIsIFwidmFsdWVcIjpcIicgKyBpdGVtLnVyaSArICdcIn0nLFxyXG4gICAgICAgICAgICAgICcqJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vcGVuRG9jdW1lbnQoaXRlbS5kb2N1bWVudElkICsgJyMnICsgaXRlbS51cmksKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGQuY2xvc2UoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICogR2V0IHRoZSBpZCBpbiBhIHF1ZXJ5IHN0cmluZ1xyXG4gKiBAcGFyYW0gdXJsIDogdGhlIHVybCB0byBwcm9jZXNzXHJcbiAqIEBwYXJhbSBuYW1lIDogdGhlIG9wdGlvbmFsIGlkIHBhcmFtZW50ZXIgbmFtZS4gRGVmYXVsdCBpcyAnaWQnXHJcbiAqIEByZXR1cm5zIDogdGhlIGlkIHBhcmFtZVxyXG4gKi9cclxuICBwcml2YXRlIGdldElkKHVybDogc3RyaW5nLCBuYW1lOiBzdHJpbmcgPSAnaWQnKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHN0YXJ0ID0gdXJsLmxhc3RJbmRleE9mKG5hbWUgKyAnPScpICsgMztcclxuICAgIGNvbnN0IGVuZCA9IHVybC5pbmRleE9mKCcmJywgc3RhcnQpO1xyXG4gICAgcmV0dXJuIHVybC5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcmV2aWV3IGEgZmlsZSBpZiBwb3NzaWJsZVxyXG4gICAqIEBwYXJhbSB1cmwgOiB0aGUgdXJsIHRvIHByZXZpZXdcclxuICAgKi9cclxuICBwcml2YXRlIHByZXZpZXdGaWxlKHVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXVybCB8fCB1cmwubGVuZ3RoID09PSAwKVxyXG4gICAgICByZXR1cm47IC8vIE5vdGhpbmcgdG8gZG9cclxuICAgIC8vIEdldCB0aGUgaWRcclxuICAgIGxldCBpZCA9IHRoaXMuZ2V0SWQodXJsKTtcclxuICAgIGlmICghaWQgfHwgaWQubGVuZ3RoID09PSAwKVxyXG4gICAgICByZXR1cm47IC8vIE5vdGhpbmcgdG8gZG9cclxuICAgIC8vIENyZWF0ZSB0aGUgdXJsXHJcbiAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLm5ld09UUChpZCkuc3Vic2NyaWJlKFxyXG4gICAgICByID0+IHtcclxuICAgICAgICBpZiAoIXIuc3VjY2VzcykgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSk7XHJcbiAgICAgICAgZWxzZSBpZiAoIXIudmFsdWUuY2FuUHJldmlldylcclxuICAgICAgICAgIC8vIERvbmxvYWQgbWFudWFsbHlcclxuICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihGaWxlUHJldmlld0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICBwYW5lbENsYXNzOiAncHJldmlldy1wYW5lbCcsXHJcbiAgICAgICAgICAgIGFyaWFMYWJlbDogJ2FudGVwcmltYScsXHJcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgICAgICAgIGVtYmVkOiByLnZhbHVlLmNhbkVtYmVkXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG1pbldpZHRoOiAnMzc1cHgnLFxyXG4gICAgICAgICAgICBtYXhXaWR0aDogJzkwMHB4JyxcclxuICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcclxuICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJSdcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogU2hvdyBkb2N1bWVudCBjb21tZW50XHJcbiAgICAqL1xyXG4gIHByb3RlY3RlZCBzaG93Q29tbWVudCgpIHtcclxuICAgIGlmICh0aGlzLmxhc3REb2N1bWVudD8uYmFnWzddICE9PSAnVCcpIHJldHVybjtcclxuICAgIHRoaXMuY2xpcHBlclNlcnZpY2VcclxuICAgICAgLmNvbW1lbnQodGhpcy5sYXN0RG9jdW1lbnQ/LmRvY3VtZW50SWQpXHJcbiAgICAgIC5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgaWYgKCFyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgIGlmIChyLm1lc3NhZ2UgPT09IFwiSWwgdHVvIGFiYm9uYW1lbnRvIG5vbiBjb25zZW50ZSBkaSB2aXN1YWxpenphcmUgaSBjb21tZW50aSBhbGxlIG5vcm1lLlwiKVxyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3IoXCJJbCBzZXJ2aXppbyBkaSA8Yj5jb21tZW50aSBhbGxlIG5vcm1lPC9iPiBub24gw6ggY29tcHJlc28gbmVsIHR1byBhYmJvbmFtZW50bywgcGVyIG1hZ2dpb3JpIGluZm9ybWF6aW9uaSByaXZvbGdlcnNpIGFsbCdhZ2VudGUgY29tbWVyY2lhbGUgZGkgcmlmZXJpbWVudG8gbyBpbnZpYXJlIHVuYSBtYWlsIGEgPGEgaHJlZj0nbWFpbHRvOnNhbGVzQGFyc2VkaXppb25pLml0JyB0YXJnZXQ9J19ibGFuayc+c2FsZXNAYXJzZWRpemlvbmkuaXQ8L2E+LlwiLCBudWxsLCBcIkF0dGVuemlvbmVcIik7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoci52YWx1ZSAmJiByLnZhbHVlLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5pbmZvKFxyXG4gICAgICAgICAgICAgIHIudmFsdWUucmVwbGFjZSgvXFxuL2csICc8YnI+XFxyXFxuJyksXHJcbiAgICAgICAgICAgICAgXCJDb21tZW50b1wiLFxyXG4gICAgICAgICAgICAgIFwiQ2hpdWRpXCIsXHJcbiAgICAgICAgICAgICAgNzAwKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmluZm8oXCJDb21tZW50byBub24gcGnDuSBkaXNwb25pYmlsZSBvIGluIGZhc2UgZGkgcmV2aXNpb25lLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW4gYW4gaXRlbVxyXG4gICAqIEBwYXJhbSBkb2N1bWVudElkIDogdGhlIGRvY3VtZW50IGlkXHJcbiAgICogQHBhcmFtIHF1ZXJ5OiB0aGUgY3VycmVudCBxdWVyeSBvciBudWxsXHJcbiAgICogQHBhcmFtIG5ld1dpbmRvdzogdHJ1ZSBpZiB0aGUgZG9jdW1lbnQgbXVzdCBiZSBvcGVuIGludG8gYSBuZXcgd2luZG93XHJcbiAgICovXHJcbiAgb3ZlcnJpZGUgb3Blbihkb2N1bWVudElkOiBzdHJpbmcsIHF1ZXJ5OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCwgbmV3V2luZG93OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGlmICghbmV3V2luZG93KSB7XHJcbiAgICAgIGlmICh0aGlzLm9wZW5pbmcpIHRoaXMub3BlbmluZy5lbWl0KGRvY3VtZW50SWQpO1xyXG4gICAgICBlbHNlIHRoaXMub3BlbkRvY3VtZW50KGRvY3VtZW50SWQsIHF1ZXJ5KTtcclxuICAgIH0gZWxzZSB3aW5kb3cub3BlbignL2RvY3VtZW50by8nICsgZG9jdW1lbnRJZCwgJ19ibGFuaycpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbiBhIGRvY3VtZW50XHJcbiAgICogQHBhcmFtIGRvY3VtZW50SWQgOiB0aGUgZG9jdW1lbnQgaWRcclxuICAgKiBAcGFyYW0gcXVlcnk6IHRoZSBjdXJyZW50IHF1ZXJ5IG9yIG51bGxcclxuICAgKi9cclxuICBwcml2YXRlIG9wZW5Eb2N1bWVudChkb2N1bWVudElkOiBzdHJpbmcsIHF1ZXJ5OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCkge1xyXG4gICAgaWYgKCFkb2N1bWVudElkKSByZXR1cm47XHJcbiAgICBDbGlwcGVyRG9jdW1lbnRzVXRpbHMub3BlbkRvY3VtZW50KFxyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UsXHJcbiAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2UsXHJcbiAgICAgIGRvY3VtZW50SWQsXHJcbiAgICAgIHF1ZXJ5LFxyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEuc2VsZWN0aW9uTW9kZSxcclxuICAgICAgdGhpcy5kaWFsb2dEYXRhLnRoZW1lXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQnJvd3NlIGRvY3VtZW50IHJlZmVyZW5jZXNcclxuICAgKiBAcGFyYW0gZG9jdW1lbnRJZCA6IHRoZSBkb2N1bWVudCBpZFxyXG4gICAqIEBwYXJhbSBtb2RlIDogdGhlIG1vZGVcclxuICAgKi9cclxuICBvdmVycmlkZSBvcGVuUmVmZXJlbmNlcyhcclxuICAgIGRvY3VtZW50SWQ6IHN0cmluZyxcclxuICAgIG1vZGU6IENsaXBwZXJRdWVyeVJlZmVyZW5jZXNNb2RlID0gQ2xpcHBlclF1ZXJ5UmVmZXJlbmNlc01vZGUuUmVmZXJlbmNlc0luLFxyXG4gICAgbW9kZWw6IG51bWJlciA9IG51bGwsXHJcbiAgICBhbmNob3I6IHN0cmluZyA9IG51bGwsXHJcbiAgICBhbmNob3JUaXRsZTogc3RyaW5nID0gbnVsbCxcclxuICAgIHVwZGF0ZTogYm9vbGVhbiA9IHRydWVcclxuICApIHtcclxuICAgIGxldCBkID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2xpcHBlclJlZmVyZW5jZXNDb21wb25lbnQsIHtcclxuICAgICAgYXJpYUxhYmVsOiAncmlmZXJpbWVudGkgbGVnYXRpIGFsIGRvY3VtZW50bycsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZG9jdW1lbnRJZDogZG9jdW1lbnRJZCA/PyB0aGlzLmxhc3REb2N1bWVudD8uZG9jdW1lbnRJZCxcclxuICAgICAgICBtb2RlOiBtb2RlLFxyXG4gICAgICAgIG1vZGVsOiBtb2RlbCxcclxuICAgICAgICBhbmNob3I6IGFuY2hvcixcclxuICAgICAgICBhbmNob3JUaXRsZTogYW5jaG9yVGl0bGUsXHJcbiAgICAgICAgdXBkYXRlOiB1cGRhdGUsXHJcbiAgICAgIH0sXHJcbiAgICAgIG1pbldpZHRoOiAnMzc1cHgnLFxyXG4gICAgICBtYXhXaWR0aDogJzEwMDBweCcsXHJcbiAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgIGhlaWdodDogJzEwMCUnLFxyXG4gICAgfSk7XHJcbiAgICBkLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnN1YnNjcmliZSgocjogQ2xpcHBlclJlZmVyZW5jZURpYWxvZ1Jlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyICYmIHIuZG9jdW1lbnRJZCkge1xyXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZShyLmRvY3VtZW50SWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IGEgcmVwb3J0XHJcbiAgICogQHBhcmFtIGl0ZW1cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZGlzcGxheVJlcG9ydChpdGVtOiBDbGlwcGVyRG9jdW1lbnRJbmZvKSB7XHJcbiAgICBpZiAoIWl0ZW0pIHJldHVybjtcclxuICAgIGlmIChpdGVtLm1vZGVsICE9IENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlICYmIGl0ZW0ubW9kZWwgIT0gQ2xpcHBlck1vZGVsLlNjYWRlbnplKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5pbmZvKFwiUXVlc3RhIGZ1bnppb25hbGl0w6Agbm9uIMOoIGRpc3BvbmliaWxlIHBlciBxdWVzdG8gdGlwbyBkaSBkb2N1bWVudG8uXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLm9wZW5SZXBvcnQoaXRlbS5pZCwgaXRlbS50aXRsZTEgPyBpdGVtLnRpdGxlMSA6IGl0ZW0udGl0bGUyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiBkb2N1bWVudHMgY2FuIGJlIHNlbGVjdGVkIGFuZCByZXR1cm5lZCBhcyBtZXNzYWdlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGNhblNlbGVjdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbk1vZGUgPiAwICYmIHRoaXMubGFzdERvY3VtZW50ICYmICh0aGlzLmxhc3REb2N1bWVudD8ubW9kZWwgPT09IENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlIHx8IHRoaXMubGFzdERvY3VtZW50Py5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm8pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kIGEgbWVzc2FnZSB3aXRoIGN1cnJlbnQgc2VsZWN0aW9uIGFuZCBjbG9zZSBkaWFsb2dcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2VsZWN0KCkge1xyXG4gICAgaWYgKHRoaXMubGFzdERvY3VtZW50KSB7XHJcbiAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5zZW5kTWVzc2FnZShDbGlwcGVyTWVzc2FnZXMuRE9DVU1FTlRfU0VMRUNURURfSU5ORVIsIFtcclxuICAgICAgICB0aGlzLmxhc3REb2N1bWVudCxcclxuICAgICAgXSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4iLCI8ZGl2IGNsYXNzPVwiY2xpcHBlci1kb2N1bWVudC1maXhlZFwiPlxyXG4gIDxkaXYgc3R5bGU9XCJoZWlnaHQ6NnB4XCI+XHJcbiAgICBAaWYgKGJ1c3koKSkge1xyXG4gICAgPG1hdC1wcm9ncmVzcy1iYXIgc3R5bGU9XCJ6LWluZGV4OjExXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbiAgPGRpdj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjIwcHhcIiBmeExheW91dEFsaWduPVwic3RhcnQgc3RhcnRcIiBmeEZpbGw+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiKlwiIGNsYXNzPVwidGl0bGUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlIGJvbGRcIj57e3RpdGxlKCl9fTwvZGl2PlxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50ICYmIGxhc3REb2N1bWVudD8ubGFzdFVwZGF0ZSkge1xyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nLXRvcDogNXB4O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIngtc21hbGwgYWNjZW50IGJvbGQgdXBwZXJjYXNlXCI+XHJcbiAgICAgICAgICAgIEFHR0lPUk5BVE8gQTpcclxuICAgICAgICAgICAge3tsYXN0RG9jdW1lbnQ/Lmxhc3RVcGRhdGV9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50ICYmIChsYXN0RG9jdW1lbnQ/LmV4cGlyaW5nRGVzY3JpcHRpb24gfHwgbGFzdERvY3VtZW50Py52YWxpZGl0eUluZm8pKSB7XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cInBhZGRpbmctdG9wOiA1cHg7XCI+XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uZXhwaXJpbmdEZXNjcmlwdGlvbikge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIngtc21hbGwgYWNjZW50LWxvdyBib2xkIHVwcGVyY2FzZVwiPlxyXG4gICAgICAgICAgICB7e2xhc3REb2N1bWVudD8uZXhwaXJpbmdEZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8udmFsaWRpdHlJbmZvKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwieC1zbWFsbCBlcnJvciBib2xkIHVwcGVyY2FzZVwiPjxiPkF0dGVuemlvbmUhPC9iPlxyXG4gICAgICAgICAgICB7e2xhc3REb2N1bWVudD8udmFsaWRpdHlJbmZvfX08L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICBAaWYgKGNhblNlbGVjdCgpKSB7XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiMTcwcHhcIiBmeEZsZXgubHQtbWQ9XCI1OHB4XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBmeEhpZGUubHQtbWQgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgY29sb3I9XCJwcmltYXJ5XCIgbWF0LWZsYXQtYnV0dG9uIChjbGljayk9XCJzZWxlY3QoKVwiXHJcbiAgICAgICAgICBjbGFzcz1cImNsaXBwZXItc2VsZWN0aW9uLWJ1dHRvblwiIHN0eWxlPVwibWFyZ2luLXRvcDogOHB4O1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzbWFsbCB1cHBlcmNhc2VcIj5Vc2Egc2VsZXppb25lPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gZnhIaWRlLmd0LXNtIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2VsZWN0KClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJjbGlwcGVyLXNlbGVjdGlvbi1pY29uLWJ1dHRvblwiIG1hdFRvb2x0aXA9XCJVc2Egc2VsZXppb25lXCIgYXJpYS1sYWJlbD1cIidVc2EgbGEgc2VsZXppb25lJ1wiXHJcbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IDRweDtcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5jaGVjazwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiMTY0cHhcIiBmeEZsZXgubHQtbWQ9XCI0OHB4XCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctY2xvc2VcIj5cclxuICAgICAgICAgIDxidXR0b24gZnhIaWRlLmx0LW1kIGZ4RmxleEFsaWduPVwic3RhcnRcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJJbmRpZXRyb1wiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJJbmRpZXRyb1wiIChjbGljayk9XCJiYWNrKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X2JhY2s8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4SGlkZS5sdC1tZCBmeEZsZXhBbGlnbj1cInN0YXJ0XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiQXZhbnRpXCIgYXJpYS1sYWJlbD1cIkF2YW50aVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJmb3J3YXJkKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X2ZvcndhcmQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwic3RhcnRcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJDaGl1ZGlcIiBhcmlhLWxhYmVsPVwiQ2hpdWRpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXY+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93IHdyYXAgXCIgZnhGaWxsIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiIHN0eWxlPVwicGFkZGluZzogMTBweCAxMHB4IDEwcHggMTVweDtcIj5cclxuICAgICAgPGRpdiBmeEZsZXgueHM9XCIxMDBcIj5cclxuICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8ubW9kZWwgPT09IDkpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGluZGljZSdcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImluZGV4KGxhc3REb2N1bWVudD8uZG9jdW1lbnRJZClcIj5cclxuICAgICAgICAgIEluZGljZVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIChsYXN0RG9jdW1lbnQ/LmJhZ1sxXSA9PT0nVCcgfHwgbGFzdERvY3VtZW50Py5iYWdbM10gPT09J1QnKSkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBtYXRUb29sdGlwPVwiQ29sbGVnYW1lbnRpXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0NvbGxlZ2FtZW50aSBhbCBkb2N1bWVudG8nXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVMaW5rc1wiPlxyXG4gICAgICAgICAgQ29sbGVnYW1lbnRpXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxtYXQtbWVudSAjbWVudUxpbmtzPVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1sxXSA9PT0nVCcpIHtcclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgZG9jdW1lbnRpIHJpY2hpYW1hdGknXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uZG9jdW1lbnRJZCwgMSlcIj5cclxuICAgICAgICAgICAgRG9jdW1lbnRpIHJpY2hpYW1hdGlcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1szXSA9PT0nVCcpIHtcclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgZG9jdW1lbnRpIGNoZSByaWNoaWFtYW5vJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmRvY3VtZW50SWQsIDIpXCI+XHJcbiAgICAgICAgICAgIERvY3VtZW50aSBjaGUgcmljaGlhbWFub1xyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIGxhc3REb2N1bWVudD8uYmFnWzJdID09PSdUJykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEhpZGUgZnhTaG93Lmx0LW1kIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGp1cmlzJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmRvY3VtZW50SWQsIDQpXCI+XHJcbiAgICAgICAgICAgIEp1cmlzXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbNF0gPT09J1QnKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4SGlkZSBmeFNob3cubHQtbWQgbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgbW9kaWZpY2hlIHN1Yml0ZSdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlblJlZmVyZW5jZXMobGFzdERvY3VtZW50Py5kb2N1bWVudElkLCAzKVwiPlxyXG4gICAgICAgICAgICBNb2RpZmljaGUgc3ViaXRlXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbNF0gIT09J1QnICYmIGxhc3REb2N1bWVudD8uYmFnWzZdID09PSdUJykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEhpZGUgZnhTaG93Lmx0LW1kIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIG1vZGlmaWNoZSBhcHBvcnRhdGUnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uZG9jdW1lbnRJZCwgNSlcIj5cclxuICAgICAgICAgICAgTW9kaWZpY2hlIGFwcG9ydGF0ZVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uaGFzUHJpbWFyeSkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGRvY3VtZW50byBwcmltYXJpbydcIiAoY2xpY2spPVwibmF2aWdhdGUobGFzdERvY3VtZW50Py5wcmltYXJ5SWQpXCI+XHJcbiAgICAgICAgICB7e2xhc3REb2N1bWVudD8ucHJpbWFyeURlc2NyaXB0aW9ufX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1syXSA9PT0nVCcpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIGZ4SGlkZS5sdC1tZCBtYXQtYnV0dG9uXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEganVyaXMnXCIgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uZG9jdW1lbnRJZCwgNClcIj5cclxuICAgICAgICAgIEp1cmlzXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbNF0gPT09ICdUJykge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgZnhIaWRlLmx0LW1kIG1hdC1idXR0b25cclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBtb2RpZmljaGUgc3ViaXRlJ1wiIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmRvY3VtZW50SWQsIDMpXCI+XHJcbiAgICAgICAgICBNb2RpZmljaGUgc3ViaXRlXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbNF0gIT09ICdUJyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1s2XSA9PT0gJ1QnKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBmeEhpZGUubHQtbWQgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIG1vZGlmaWNoZSBhcHBvcnRhdGUnXCIgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uZG9jdW1lbnRJZCwgNSlcIj5cclxuICAgICAgICAgIE1vZGlmaWNoZSBhcHBvcnRhdGVcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LnNlY29uZGFyeUlkKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgZG9jdW1lbnRvIHNlY29uZGFyaW8nXCIgKGNsaWNrKT1cIm5hdmlnYXRlKGxhc3REb2N1bWVudD8uc2Vjb25kYXJ5SWQpXCI+XHJcbiAgICAgICAgICBUZXN0byBzdG9yaWNvXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbN10gPT09ICdUJykge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgY29tbWVudG8nXCJcclxuICAgICAgICAgIChjbGljayk9XCJzaG93Q29tbWVudCgpXCI+XHJcbiAgICAgICAgICBDb21tZW50b1xyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgZnhGbGV4LnhzPVwiMTAwXCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgIDxkaXYgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgIEBpZiAoaGFzUmVsZXZhbnRzKCkgJiYgcmVsZXZhbnRzLmhpdHMpIHtcclxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIj5cclxuICAgICAgICAgICAgPGRpdiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNsYXNzPVwic21hbGwgaXRlbS1ncmV5ZWRcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OjIwcHg7IG1hcmdpbi1yaWdodDogNXB4XCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiUGFyb2xlIGV2aWRlbnppYXRlXCI+e3tyZWxldmFudHMuaGl0fX1cclxuICAgICAgICAgICAgICBkaSB7e3JlbGV2YW50cy5oaXRzfX08L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInVmFpIGFsbGEgcGFyb2xhIHByZWNlZGVudGUnXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicHJldmlvdXNSZWxldmFudCgpXCIgbWF0VG9vbHRpcD1cIlBhcm9sYSBwcmVjZWRlbnRlXCIgW2Rpc2FibGVkXT1cInJlbGV2YW50cy5oaXQgPD0gMVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX2xlZnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInVmFpIGFsbGEgcHJvc3NpbWEgcGFyb2xhJ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRSZWxldmFudCgpXCIgbWF0VG9vbHRpcD1cIlByb3NzaW1hIHBhcm9sYVwiIFtkaXNhYmxlZF09XCJyZWxldmFudHMuaGl0ID49IHJlbGV2YW50cy5oaXRzXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJBemlvbmkgc3VsIGRvY3VtZW50b1wiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBemlvbmkgZGEgZXNlZ3VpcmUgc3VsIGRvY3VtZW50bydcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudUFjdGlvbnNcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxtYXQtbWVudSAjbWVudUFjdGlvbnM9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0TWVudUNvbnRlbnQgbGV0LWl0ZW09XCJsYXN0RG9jdW1lbnRcIj5cclxuICAgICAgICAgICAgPGNsaXBwZXItZG9jdW1lbnQtbWVudSBbcGFyZW50XT1cInRoaXNcIiBbaXRlbV09XCJsYXN0RG9jdW1lbnRcIiBbY2FuUHJpbnRdPVwidHJ1ZVwiIFtjYW5GaW5kXT1cInRydWVcIiBbaXNSZWFkYWJsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgW2lzTGF3SW5Gb3JjZV09XCJsYXN0RG9jdW1lbnQ/Lm1vZGVsID09PSA5XCIgc2VsZWN0aW9uU291cmNlPVwibm9uZVwiPlxyXG4gICAgICAgICAgICA8L2NsaXBwZXItZG9jdW1lbnQtbWVudT5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+ICAgICAgICAgXHJcbiAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICBAaWYgKGhhc1JlbGV2YW50cygpICYmIHJlbGV2YW50cy5pdGVtcyAmJiByZWxldmFudHNQYW5lICYmICghcmVsZXZhbnRzUGFuZS5vcGVuZWQgfHwgcmVsZXZhbnRzUGFuZUNsb3NlZCkpIHtcclxuICAgICAgICA8ZGl2IGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIlJpbGV2YW56YVwiIGFyaWEtbGFiZWw9XCInUmlsZXZhbnphJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSZWxldmFudHNQYW5lKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPm1lbnVfb3BlbjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48bWF0LWRpYWxvZy1jb250ZW50IGlkPVwiY2xpcHBlci1kb2N1bWVudC1zY3JvbGxhYmxlXCI+XHJcbiAgPG1hdC1kcmF3ZXItY29udGFpbmVyIGNsYXNzPVwiZmlsbFwiIFtoYXNCYWNrZHJvcF09XCJbcmVsZXZhbnRzUGFuZUhhc0JhY2tkcm9wXVwiPlxyXG4gICAgPG1hdC1kcmF3ZXIgI3JlbGV2YW50c1BhbmUgcG9zaXRpb249XCJlbmRcIiBjbGFzcz1cImRyYXdlci1zbWFsbCBkcmF3ZXItd2l0aC1sb2FkZXJcIiBvcGVuZWQ9XCJmYWxzZVwiPlxyXG4gICAgICBAaWYgKHJlbGV2YW50c0J1c3koKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheVwiPjwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGw+XHJcbiAgICAgICAgPGRpdiBmeEZsZXg9XCI2cHhcIj5cclxuICAgICAgICAgIEBpZiAocmVsZXZhbnRzQnVzeSgpKSB7XHJcbiAgICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBzdHlsZT1cInotaW5kZXg6IDExO1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCI+XHJcbiAgICAgICAgICA8L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBmeEZsZXg9XCI1NnB4XCIgY2xhc3M9XCJ0aXRsZS1jb250YWluZXItd2l0aC1sb2FkZXJcIj5cclxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5SaWxldmFuemE8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ0b2dnbGVSZWxldmFudHNQYW5lKClcIlxyXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk5hc2NvbmRpXCI+PG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGZ4RmxleD1cIipcIiBjbGFzcz1cInJlbGV2YW50cy1jb250YWluZXIgc2Nyb2xsLWF1dG9cIj5cclxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGw+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgPHA+UGFydGkgZGVsIGRvY3VtZW50byBwacO5IHNpZ25pZmljYXRpdmUgcGVyIGxhIHJpY2VyY2EgZGkgPHNwYW4gY2xhc3M9J3dvcmQtaGl0Jz57e2xhc3RRdWVyeX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgZnhGbGV4PVwiKlwiPlxyXG4gICAgICAgICAgICAgIDxuYXYgY2xhc3M9XCJyZWxldmFudHMtaXRlbXNcIj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiByZWxldmFudHMuaXRlbXM7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJzbWFsbFwiIChjbGljayk9XCJnb3RvUmVsZXZhbnQoaXRlbSlcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIml0ZW0udGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IHN0YXJ0XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS50aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uc2NvcmUgPiAxLjIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPSdmb250LXNpemU6eC1zbWFsbDsgaGVpZ2h0OiAxMHB4OyB3aWR0aDoxMHB4JyBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJNb2x0byByaWxldmFudGVcIj50aHVtYl91cF9hbHQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICA8L25hdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1kcmF3ZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsbCBzY3JvbGwtaGlkZGVuXCI+XHJcbiAgICAgIDxpZnJhbWUgaWQ9XCJjbGlwcGVyLWRvY3VtZW50LWlmcmFtZVwiIGNsYXNzPVwiaWZyYW1lXCIgW3NyY109XCJ1cmwoKSB8IHNhZmVVcmxcIj48L2lmcmFtZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvbWF0LWRyYXdlci1jb250YWluZXI+XHJcbjwvbWF0LWRpYWxvZy1jb250ZW50PiJdfQ==
|
|
@@ -5,7 +5,7 @@ import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
|
5
5
|
import { MatIconModule } from '@angular/material/icon';
|
|
6
6
|
import { MatMenuModule } from '@angular/material/menu';
|
|
7
7
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
8
|
-
import { ClipperMessages, ClipperModel, ClipperUtils } from '@arsedizioni/ars-utils/clipper.common';
|
|
8
|
+
import { ClipperMessages, ClipperModel, ClipperModule, ClipperUtils } from '@arsedizioni/ars-utils/clipper.common';
|
|
9
9
|
import { BroadcastService, FormatPipe, ScreenService } from '@arsedizioni/ars-utils/core';
|
|
10
10
|
import { FlexLayoutModule } from '@ngbracket/ngx-layout';
|
|
11
11
|
import { Subject, takeUntil } from 'rxjs';
|
|
@@ -84,7 +84,10 @@ export class ClipperSearchResultItemComponent {
|
|
|
84
84
|
* @returns true if current item is read
|
|
85
85
|
*/
|
|
86
86
|
isRead() {
|
|
87
|
-
|
|
87
|
+
console.log(this.item().module);
|
|
88
|
+
return this.isReadable() && ClipperUtils.isClipperModelReadable(this.item().module !== ClipperModule.Giurisprudenza
|
|
89
|
+
? this.item().model
|
|
90
|
+
: ClipperModel.Juris) && this.item().isRead === true;
|
|
88
91
|
}
|
|
89
92
|
;
|
|
90
93
|
/**
|
|
@@ -92,7 +95,9 @@ export class ClipperSearchResultItemComponent {
|
|
|
92
95
|
* @returns true if current item can be read
|
|
93
96
|
*/
|
|
94
97
|
canBeRead() {
|
|
95
|
-
return this.isReadable() && ClipperUtils.isClipperModelReadable(this.item().
|
|
98
|
+
return this.isReadable() && ClipperUtils.isClipperModelReadable(this.item().module !== ClipperModule.Giurisprudenza
|
|
99
|
+
? this.item().model
|
|
100
|
+
: ClipperModel.Juris) && this.item().isRead !== true;
|
|
96
101
|
}
|
|
97
102
|
;
|
|
98
103
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ClipperSearchResultItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -114,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
114
119
|
type: ViewChild,
|
|
115
120
|
args: ['contextMenuTrigger']
|
|
116
121
|
}] } });
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy9jbGlwcGVyLnVpL3VpL3NlYXJjaC1yZXN1bHQtaXRlbS9zZWFyY2gtcmVzdWx0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvc2VhcmNoLXJlc3VsdC1pdGVtL3NlYXJjaC1yZXN1bHQtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBVyxhQUFhLEVBQWtCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUF1QixlQUFlLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7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N0MscW1TQWlOTSxnclREdExGLE9BQU8sbUZBQ1AsaUJBQWlCLG9ZQUNqQixlQUFlLDJJQUNmLGdCQUFnQiw0VEFDaEIsYUFBYSxtTEFDYixhQUFhLG9WQUNiLGdCQUFnQiw4aEhBQ2hCLFVBQVU7OzJGQUdELGdDQUFnQztrQkFqQjVDLFNBQVM7c0NBQ1MsdUJBQXVCLENBQUMsTUFBTSxZQUNyQyw0QkFBNEIsY0FHMUIsSUFBSSxXQUNQO3dCQUNQLE9BQU87d0JBQ1AsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsVUFBVTtxQkFDWDs4QkFJZ0Msa0JBQWtCO3NCQUFsRCxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgaW5qZWN0LCBpbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0TWVudSwgTWF0TWVudU1vZHVsZSwgTWF0TWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBDbGlwcGVyRG9jdW1lbnRJbmZvLCBDbGlwcGVyTWVzc2FnZXMsIENsaXBwZXJNb2RlbCwgQ2xpcHBlclV0aWxzIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jbGlwcGVyLmNvbW1vbic7XHJcbmltcG9ydCB7IEJyb2FkY2FzdFNlcnZpY2UsIEZvcm1hdFBpcGUsIFNjcmVlblNlcnZpY2UgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBGbGV4TGF5b3V0TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0JztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENsaXBwZXJTZWFyY2hSZXN1bHRNYW5hZ2VyIH0gZnJvbSAnLi4vc2VhcmNoLXJlc3VsdC1tYW5hZ2VyL3NlYXJjaC1yZXN1bHQtbWFuYWdlcic7XHJcblxyXG5cclxuZXhwb3J0IGVudW0gQ2xpcHBlclNlYXJjaFJlc3VsdEl0ZW1EaXNwbGF5TW9kZSB7XHJcbiAgTGlzdCA9IDEsXHJcbiAgVGlsZSA9IDJcclxufVxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHNlbGVjdG9yOiAnY2xpcHBlci1zZWFyY2gtcmVzdWx0LWl0ZW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtcmVzdWx0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1yZXN1bHQtaXRlbS5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTmdDbGFzcyxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRNZW51TW9kdWxlLFxyXG4gICAgRmxleExheW91dE1vZHVsZSxcclxuICAgIEZvcm1hdFBpcGVcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2xpcHBlclNlYXJjaFJlc3VsdEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBAVmlld0NoaWxkKCdjb250ZXh0TWVudVRyaWdnZXInKSBjb250ZXh0TWVudVRyaWdnZXIhOiBNYXRNZW51VHJpZ2dlcjtcclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcm90ZWN0ZWQgc2NyZWVuU2VydmljZSA9IGluamVjdChTY3JlZW5TZXJ2aWNlKTtcclxuICBwcm90ZWN0ZWQgYnJvYWRjYXN0U2VydmljZSA9IGluamVjdChCcm9hZGNhc3RTZXJ2aWNlKTtcclxuICBwcml2YXRlIGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICBwYXJlbnQgPSBpbnB1dC5yZXF1aXJlZDxDbGlwcGVyU2VhcmNoUmVzdWx0TWFuYWdlcj4oKTtcclxuICBpdGVtID0gaW5wdXQucmVxdWlyZWQ8Q2xpcHBlckRvY3VtZW50SW5mbz4oKTtcclxuICBhY3Rpb25zID0gaW5wdXQucmVxdWlyZWQ8TWF0TWVudT4oKTtcclxuICB0aWxlTm9QaWN0dXJlVXJsID0gaW5wdXQ8c3RyaW5nPigpO1xyXG4gIHRpbGVQaWN0dXJlVXJsID0gaW5wdXQ8c3RyaW5nPigpO1xyXG4gIGlzU2VsZWN0YWJsZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gIGlzUmVhZGFibGUgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuICBkaXNwbGF5TW9kZWxOYW1lID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGRpc3BsYXlNb2RlID0gaW5wdXQ8Q2xpcHBlclNlYXJjaFJlc3VsdEl0ZW1EaXNwbGF5TW9kZT4oQ2xpcHBlclNlYXJjaFJlc3VsdEl0ZW1EaXNwbGF5TW9kZS5MaXN0KTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzcGxheU1vZGVzRW51bTogdHlwZW9mIENsaXBwZXJTZWFyY2hSZXN1bHRJdGVtRGlzcGxheU1vZGUgPSBDbGlwcGVyU2VhcmNoUmVzdWx0SXRlbURpc3BsYXlNb2RlO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBtb2RlbHNFbnVtOiB0eXBlb2YgQ2xpcHBlck1vZGVsID0gQ2xpcHBlck1vZGVsO1xyXG4gIHByb3RlY3RlZCBjb250ZXh0TWVudVBvc2l0aW9uID0geyB4OiAnMHB4JywgeTogJzBweCcgfTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnBhcmVudCgpPy5zZWxlY3Rpb24/LmNoYW5nZWRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAvLyBSZWFjdCB0byBtZXNzYWdlIGJyb2FkY2FzdGluZ1xyXG4gICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmdldE1lc3NhZ2UoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUobWVzc2FnZSA9PiB7XHJcbiAgICAgICAgaWYgKG1lc3NhZ2UuaWQgPT09IENsaXBwZXJNZXNzYWdlcy5ET0NVTUVOVF9OQVZJR0FURUQpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmlzUmVhZGFibGUoKSAmJiB0aGlzLml0ZW0oKS5kb2N1bWVudElkID09PSBtZXNzYWdlLmRhdGEuZG9jdW1lbnQuZG9jdW1lbnRJZCAmJiAhdGhpcy5pdGVtKCkuaXNSZWFkKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50KCk/LnNldFJlYWQodHJ1ZSwgdGhpcy5pdGVtKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5pZCA9PT0gQ2xpcHBlck1lc3NhZ2VzLkRPQ1VNRU5UX1JFQUQpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmlzUmVhZGFibGUoKSAmJiB0aGlzLml0ZW0oKS5kb2N1bWVudElkID09PSBtZXNzYWdlLmRhdGEuZG9jdW1lbnQuZG9jdW1lbnRJZCkge1xyXG4gICAgICAgICAgICB0aGlzLml0ZW0oKS5pc1JlYWQgPSBtZXNzYWdlLmRhdGEudmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBvbkNvbnRleHRNZW51KGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBDbGlwcGVyRG9jdW1lbnRJbmZvKSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5jb250ZXh0TWVudVBvc2l0aW9uLnggPSBldmVudC5jbGllbnRYICsgJ3B4JztcclxuICAgIHRoaXMuY29udGV4dE1lbnVQb3NpdGlvbi55ID0gZXZlbnQuY2xpZW50WSArICdweCc7XHJcbiAgICB0aGlzLmNvbnRleHRNZW51VHJpZ2dlci5tZW51RGF0YSA9IHsgaXRlbTogaXRlbSB9O1xyXG4gICAgdGhpcy5jb250ZXh0TWVudVRyaWdnZXIub3Blbk1lbnUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiBjdXJyZW50IGl0ZW0gaXMgc2VsZWN0ZWRcclxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGN1cnJlbnQgaXRlbSBpcyBzZWxlY3RlZFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBpc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNTZWxlY3RhYmxlKCkgJiYgdGhpcy5wYXJlbnQoKT8uc2VsZWN0aW9uPy5pc1NlbGVjdGVkKHRoaXMuaXRlbSgpLmRvY3VtZW50SWQpO1xyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiBjdXJyZW50IGl0ZW0gaXMgcmVhZFxyXG4gICAqIEByZXR1cm5zIHRydWUgaWYgY3VycmVudCBpdGVtIGlzIHJlYWRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgaXNSZWFkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNSZWFkYWJsZSgpICYmIENsaXBwZXJVdGlscy5pc0NsaXBwZXJNb2RlbFJlYWRhYmxlKHRoaXMuaXRlbSgpLm1vZGVsKSAmJiB0aGlzLml0ZW0oKS5pc1JlYWQgPT09IHRydWU7XHJcbiAgfTtcclxuXHJcbiAgICAvKipcclxuICAgKiBDaGVja3MgaWYgY3VycmVudCBpdGVtIGNhbiBiZSByZWFkXHJcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBjdXJyZW50IGl0ZW0gY2FuIGJlIHJlYWRcclxuICAgKi9cclxuICAgIHByb3RlY3RlZCBjYW5CZVJlYWQoKTogYm9vbGVhbiB7XHJcbiAgICAgIHJldHVybiB0aGlzLmlzUmVhZGFibGUoKSAmJiBDbGlwcGVyVXRpbHMuaXNDbGlwcGVyTW9kZWxSZWFkYWJsZSh0aGlzLml0ZW0oKS5tb2RlbCkgJiYgdGhpcy5pdGVtKCkuaXNSZWFkICE9PSB0cnVlO1xyXG4gICAgfTtcclxuICBcclxuXHJcbn1cclxuIiwiPGRpdj5cclxuICBAaWYgKGRpc3BsYXlNb2RlKCkgPT09IGRpc3BsYXlNb2Rlc0VudW0uTGlzdCApIHtcclxuICA8ZGl2IGNsYXNzPVwiaXRlbVwiIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCI2cHhcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhGaWxsXHJcbiAgICBbbmdDbGFzc109XCJ7J2l0ZW0tc2VsZWN0ZWQnOiBpc1NlbGVjdGVkKCkgfVwiIChjb250ZXh0bWVudSk9XCJvbkNvbnRleHRNZW51KCRldmVudCwgaXRlbSgpKVwiXHJcbiAgICAobW91c2VlbnRlcik9XCJpdGVtKCkuaXNPdmVyID0gdHJ1ZVwiIChtb3VzZWxlYXZlKT1cIml0ZW0oKS5pc092ZXIgPSBmYWxzZVwiPlxyXG4gICAgPGRpdiBmeEZsZXg9XCI2cHhcIiBmeEZsZXhBbGlnbj1cInN0cmV0Y2hcIiBbbmdDbGFzc109XCJwYXJlbnQoKS5nZXRJdGVtU3RhdGVDc3NDbGFzcyhpdGVtKCkpXCJcclxuICAgICAgW21hdFRvb2x0aXBdPVwicGFyZW50KCkuZ2V0SXRlbVN0YXRlVG9vbHRpcChpdGVtKCkpXCI+PHNwYW4+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IFtmeEZsZXhdPVwiaXNTZWxlY3RhYmxlKCkgPyAnNDhweCcgOiAnMThweCdcIiBmeExheW91dEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgIEBpZiAoaXNTZWxlY3RhYmxlKCkgJiYgKHNjcmVlblNlcnZpY2UuaXNUb3VjaGFibGUgfHwgaXRlbSgpLmlzT3ZlciB8fCBpc1NlbGVjdGVkKCkpKSB7XHJcbiAgICAgIDxtYXQtY2hlY2tib3ggKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBwYXJlbnQoKS5zZWxlY3Rpb24/LnRvZ2dsZShpdGVtKCksIGl0ZW0oKS5kb2N1bWVudElkKSA6IG51bGxcIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKClcIj5cclxuICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBmeEZsZXg9XCIqXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWNvbnRlbnRcIj5cclxuICAgICAgICBAaWYgKGRpc3BsYXlNb2RlbE5hbWUoKSAmJiBpdGVtKCkubW9kZWxOYW1lKSB7XHJcbiAgICAgICAgQGlmIChpdGVtKCkub3JpZ2luID09PSAnR0MnIHx8IGl0ZW0oKS5vcmlnaW4gPT09ICdHTicpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby0yXCI+R0lVUklTUFJVREVOWkE8L2Rpdj5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby0yXCI+e3tpdGVtKCkubW9kZWxOYW1lfX08L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYgKGl0ZW0oKS5pbmZvICYmIGl0ZW0oKS5tb2RlbCA9PT0gbW9kZWxzRW51bS5RdWVzaXRpKSB7XHJcbiAgICAgICAgQGlmKGl0ZW0oKS5pbmZvKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tMVwiPnt7aXRlbSgpLmluZm99fTwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICB9QGVsc2UgaWYoaXRlbSgpLm1vZGVsID09PSBtb2RlbHNFbnVtLk5vcm1hdGl2YVZpZ2VudGUgfHxcclxuICAgICAgICBpdGVtKCkubW9kZWwgPT09IG1vZGVsc0VudW0uQWdnaW9ybmFtZW50b05vcm1hdGl2byB8fFxyXG4gICAgICAgIGl0ZW0oKS5tb2RlbCA9PT0gbW9kZWxzRW51bS5HaXVyaXNwcnVkZW56YVJlY2VudGUgfHxcclxuICAgICAgICBpdGVtKCkubW9kZWwgPT09IG1vZGVsc0VudW0uSnVyaXMpIHtcclxuICAgICAgICBAaWYgKGl0ZW0oKS5hdXRob3IgJiYgKGl0ZW0oKS5vcmlnaW4gPT09ICdMUicgfHwgaXRlbSgpLm9yaWdpbiA9PT0gJ0dDJyB8fCBpdGVtKCkub3JpZ2luXHJcbiAgICAgICAgPT09ICdHTicpKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tMVwiPnt7aXRlbSgpLmF1dGhvcn19PC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIH1AZWxzZSBpZiAoaXRlbSgpLmRhdGUpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby0xXCI+e3tpdGVtKCkuZGF0ZSB8IGZvcm1hdDonRCc6J2QgTU1NIHl5eXknfX08L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxhIGNsYXNzPVwibGlua1wiIChjbGljayk9XCJwYXJlbnQoKS5vcGVuKGl0ZW0oKS5kb2N1bWVudElkKVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FwcmkgZG9jdW1lbnRvICcgKyBpdGVtKCkudGl0bGUxXCI+e3tpdGVtKCkudGl0bGUxID8/IGl0ZW0oKS50aXRsZTJ9fTwvYT5cclxuICAgICAgICAgIEBpZiAoaXRlbSgpLnBhcnQgPiAwKSB7XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlXCI+UEFSVEUge3tpdGVtKCkucGFydH19PC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChpdGVtKCkuaXNDb21tZW50ZWQpIHtcclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2VcIj5DT01NRU5UQVRBPC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChpdGVtKCkudmFsaWRpdHlTdGF0ZSA+IDApIHtcclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UtcmVkXCI+e3tpdGVtKCkudmFsaWRpdHlEZXNjcmlwdGlvbn19PC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIEBpZihpdGVtKCkuZGVzY3JpcHRpb24gJiYgaXRlbSgpLm1vZGVsID09PSBtb2RlbHNFbnVtLkNvb3JkaW5hbWVudG8pIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj57e2l0ZW0oKS5kZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoaXRlbSgpLnRpdGxlMiAmJlxyXG4gICAgICAgIGl0ZW0oKS5tb2RlbCAhPT0gbW9kZWxzRW51bS5Db29yZGluYW1lbnRvICYmXHJcbiAgICAgICAgaXRlbSgpLm1vZGVsICE9PSBtb2RlbHNFbnVtLkFsbGVydGVBbGltZW50YXJpICYmXHJcbiAgICAgICAgaXRlbSgpLm1vZGVsICE9PSBtb2RlbHNFbnVtLlNjYWRlbnplICYmXHJcbiAgICAgICAgaXRlbSgpLm1vZGVsICE9PSBtb2RlbHNFbnVtLlNlZ25hbGF6aW9uaSkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPnt7aXRlbSgpLnRpdGxlMn19PC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoaXRlbSgpLm9yaWdpbkRlc2NyaXB0aW9uICYmIFxyXG4gICAgICAgIGl0ZW0oKS5tb2RlbCAhPT0gbW9kZWxzRW51bS5TY2FkZW56ZSAmJlxyXG4gICAgICAgIGl0ZW0oKS5tb2RlbCAhPT0gbW9kZWxzRW51bS5TZWduYWxhemlvbmkgKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tMVwiPlxyXG4gICAgICAgICAge3tpdGVtKCkub3JpZ2luRGVzY3JpcHRpb259fTwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGl0ZW0oKS5hbmNob3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsc1wiPlxyXG4gICAgICAgICAgPGRpdj5ERVRUQUdMSU88L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5rc1wiPlxyXG4gICAgICAgICAgICBAZm9yIChhIG9mIGl0ZW0oKS5hbmNob3JzOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgQGlmIChhLnVyaSAmJiBhLnRleHQpIHtcclxuICAgICAgICAgICAgICA8YSAoY2xpY2spPVwicGFyZW50KCkub3BlbihhLmRvY3VtZW50SWQgKyAnIycgKyBhLnVyaSlcIiBbbWF0VG9vbHRpcF09XCJhLnRpdGxlXCI+e3thLnRleHR9fSBAaWZcclxuICAgICAgICAgICAgICAgIChhLnZlcnlSZWxldmFudCkge1xyXG4gICAgICAgICAgICAgICAgPHN1cD5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPSdmb250LXNpemU6eC1zbWFsbDsgaGVpZ2h0OiAxMHB4OyB3aWR0aDoxMHB4JyBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJNb2x0byByaWxldmFudGVcIj50aHVtYl91cF9hbHQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9zdXA+XHJcbiAgICAgICAgICAgICAgICB9PC9hPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBAaWYgKCFhLnVyaSAmJiBhLnRleHQpIHtcclxuICAgICAgICAgICAgICA8c3Bhbj57e2EudGV4dH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChpdGVtKCkudGF4b25vbXk/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsc1wiPlxyXG4gICAgICAgICAgPGRpdj5BUkdPTUVOVEk8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5rc1wiPlxyXG4gICAgICAgICAgICBAZm9yIChuIG9mIGl0ZW0oKS50YXhvbm9teT8uc3BsaXQoJ1xcclxcbicpOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmtcIj5cclxuICAgICAgICAgICAgICB7e259fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoaXRlbSgpLm1vZGVsID09PSBtb2RlbHNFbnVtLk5ld3MgfHxcclxuICAgICAgICBpdGVtKCkubW9kZWwgPT09IG1vZGVsc0VudW0uQXJ0aWNvbGkgfHxcclxuICAgICAgICBpdGVtKCkubW9kZWwgPT09IG1vZGVsc0VudW0uSnVyaXMpIHtcclxuICAgICAgICBAaWYgKCFkaXNwbGF5TW9kZWxOYW1lKCkgJiYgaXRlbSgpLm1vZGVsTmFtZSApIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby0xXCI+e3tpdGVtKCkubW9kZWxOYW1lfX08L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChpdGVtKCkuaW5mbyl7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHNcIj5cclxuICAgICAgICAgIDxkaXY+QVJHT01FTlRJPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlua3NcIj5cclxuICAgICAgICAgICAgPGRpdj57e2l0ZW0oKS5pbmZvfX08L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChpdGVtKCkubW9kZWwgPT09IG1vZGVsc0VudW0uQ29vcmRpbmFtZW50bykge1xyXG4gICAgICAgIEBpZiAoaXRlbSgpLnRpdGxlMikge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzXCI+XHJcbiAgICAgICAgICA8ZGl2PlRJVE9MTyBET0NVTUVOVE8gTU9ESUZJQ0FUTzwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmtzXCI+XHJcbiAgICAgICAgICAgIDxkaXY+e3tpdGVtKCkudGl0bGUyfX08L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChpdGVtKCkubW9kZWwgPT09IG1vZGVsc0VudW0uU2NhZGVuemUgfHwgaXRlbSgpLm1vZGVsID09PSBtb2RlbHNFbnVtLlNlZ25hbGF6aW9uaSkge1xyXG4gICAgICAgIEBpZiAoaXRlbSgpLmV4cGlyaW5nRGVzY3JpcHRpb24pIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsc1wiPlxyXG4gICAgICAgICAgPGRpdj5QUk9TU0lNQSBTQ0FERU5aQTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmtzXCI+XHJcbiAgICAgICAgICAgIDxkaXY+e3tpdGVtKCkuZXhwaXJpbmdEZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBmeEZsZXg9XCI0OHB4XCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICBAaWYgKGl0ZW0oKS5pc092ZXIgfHwgaXRlbSgpLmlzTWVudU9wZW4pIHtcclxuICAgICAgQGlmIChjYW5CZVJlYWQoKSlcclxuICAgICAge1xyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIlNlZ25hIGNvbWUgZ2nDoCBsZXR0YVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1NlZ25hIGNvbWUgZ2nDoCBsZXR0YSdcIlxyXG4gICAgICAgIChjbGljayk9XCJwYXJlbnQoKS50b2dnbGVSZWFkKGl0ZW0oKSwgJGV2ZW50KVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj5mbGFnPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIH1cclxuICAgICAgQGlmKGl0ZW0oKS5tb2RlbCA9PT0gbW9kZWxzRW51bS5TY2FkZW56ZSB8fCBpdGVtKCkubW9kZWwgPT09IG1vZGVsc0VudW0uU2VnbmFsYXppb25pKSB7XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiQWdnaXVuZ2kgYWwgdHVvIGNhbGVuZGFyaW9cIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FnZ2l1bmdpIGFsIHR1byBjYWxlbmRhcmlvJ1wiPlxyXG4gICAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgfVxyXG4gICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiTWVudVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01lbnUgb3B6aW9uaSdcIlxyXG4gICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJhY3Rpb25zKClcIiBbbWF0TWVudVRyaWdnZXJEYXRhXT1cIntpdGVtOiBpdGVtKCl9XCIgKGNsaWNrKT1cIml0ZW0oKS5pc01lbnVPcGVuID0gdHJ1ZVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgfSBAZWxzZSB7XHJcbiAgPGRpdiBjbGFzcz1cInRpbGVcIiAoY29udGV4dG1lbnUpPVwib25Db250ZXh0TWVudSgkZXZlbnQsIGl0ZW0oKSlcIiAobW91c2VlbnRlcik9XCJpdGVtKCkuaXNPdmVyID0gdHJ1ZVwiXHJcbiAgICAobW91c2VsZWF2ZSk9XCJpdGVtKCkuaXNPdmVyID0gZmFsc2VcIiBbbmdDbGFzc109XCJ7J2l0ZW0tc2VsZWN0ZWQnOiBpc1NlbGVjdGVkKCksIFxyXG4gICAgJ2l0ZW0tdW5yZWFkJzogaXNSZWFkKCl9XCIgKGNsaWNrKT1cInBhcmVudCgpLm9wZW4oaXRlbSgpLmRvY3VtZW50SWQpXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtbWFya1wiIFtuZ0NsYXNzXT1cInsnaW1hZ2UtbWFyay11bnJlYWQnOiAhaXNSZWFkKCl9XCI+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VcIj5cclxuICAgICAgQGlmIChjYW5CZVJlYWQoKSB8fCBpc1NlbGVjdGFibGUoKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxyXG4gICAgICAgIEBpZiAoY2FuQmVSZWFkKCkgJiYgaXRlbSgpLmlzT3ZlciA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNsYXNzPVwicmVhZFwiIG1hdFRvb2x0aXA9XCJTZWduYSBjb21lIGdpw6AgbGV0dG9cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInBhcmVudCgpLnRvZ2dsZVJlYWQoaXRlbSgpLCAkZXZlbnQpXCI+PG1hdC1pY29uPmZsYWc8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGlzU2VsZWN0YWJsZSgpICYmIChpc1NlbGVjdGVkKCkgfHwgaXRlbSgpLmlzT3ZlciA9PT0gdHJ1ZSkpIHtcclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cImNoZWNrXCIgW25nQ2xhc3NdPVwieydjaGVjay1zZWxlY3RlZCc6IGlzU2VsZWN0ZWQoKX1cIlxyXG4gICAgICAgICAgbWF0VG9vbHRpcD1cIlNlbGV6aW9uYS9EZXNlbGV6aW9uYVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwicGFyZW50KCkudG9nZ2xlU2VsZWN0aW9uKGl0ZW0oKSwgJGV2ZW50KVwiPjxtYXQtaWNvbj5jaGVjazwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby0xXCI+e3tpdGVtKCkubW9kZWxOYW1lfX08L2Rpdj5cclxuICAgICAgQGlmIChpdGVtKCkuaW5mbykge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby0yXCI+e3tpdGVtKCkuaW5mb319PC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgQGlmIChpdGVtKCkucGljdHVyZUlkICYmIHRpbGVQaWN0dXJlVXJsKCkpIHtcclxuICAgICAgPGltZyBkZWNvZGluZz1cImFzeW5jXCIgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cInRpbGVQaWN0dXJlVXJsKCkgKyAnP2lkPScgKyBpdGVtKCkucGljdHVyZUlkXCIgW2FsdF09XCJpdGVtKCkudGl0bGUyXCIgLz5cclxuICAgICAgfSBAZWxzZSBpZiAodGlsZU5vUGljdHVyZVVybCgpKSB7XHJcbiAgICAgIDxwaWN0dXJlPlxyXG4gICAgICAgIDxpbWcgZGVjb2Rpbmc9XCJhc3luY1wiIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJ0aWxlTm9QaWN0dXJlVXJsKClcIlxyXG4gICAgICAgICAgW2FsdF09XCJpdGVtKCkudGl0bGUyIHx8ICdpbW1hZ2luZSBub24gdHJvdmF0YSdcIiAvPlxyXG4gICAgICA8L3BpY3R1cmU+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImJvZHlcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRhdGVcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGUtZGF5XCIgW25nQ2xhc3NdPVwieyd1bnJlYWQnOiAhaXRlbSgpLmlzUmVhZH1cIj57e2l0ZW0oKS5kYXRlIHwgZm9ybWF0OidEJzonZFxyXG4gICAgICAgICAgTU1NTSd9fTwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGUtZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgICA8c3Bhbj57e2l0ZW0oKS5kYXRlfCBmb3JtYXQ6J0QnOid5eXl5J319PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3tpdGVtKCkudGl0bGUyfX08L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIH1cclxuPC9kaXY+XHJcbjxkaXYgI2NvbnRleHRNZW51VHJpZ2dlcj1cIm1hdE1lbnVUcmlnZ2VyXCIgc3R5bGU9XCJwb3NpdGlvbjogZml4ZWRcIiBbc3R5bGUubGVmdF09XCJjb250ZXh0TWVudVBvc2l0aW9uLnhcIlxyXG4gIFtzdHlsZS50b3BdPVwiY29udGV4dE1lbnVQb3NpdGlvbi55XCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImFjdGlvbnMoKVwiIFttYXRNZW51VHJpZ2dlckRhdGFdPVwie2l0ZW06IGl0ZW0oKX1cIj5cclxuPC9kaXY+Il19
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy9jbGlwcGVyLnVpL3VpL3NlYXJjaC1yZXN1bHQtaXRlbS9zZWFyY2gtcmVzdWx0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvc2VhcmNoLXJlc3VsdC1pdGVtL3NlYXJjaC1yZXN1bHQtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBVyxhQUFhLEVBQWtCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUF1QixlQUFlLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4SSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFB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VSxFQUFFLElBQUksWUFBWSxDQUFDLHNCQUFzQixDQUM3RCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLGFBQWEsQ0FBQyxjQUFjO1lBQ25ELENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztZQUNuQixDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDO0lBQ3pELENBQUM7SUFBQSxDQUFDOzhHQWxGTyxnQ0FBZ0M7a0dBQWhDLGdDQUFnQywwNkNDckM3QyxxbVNBaU5NLGdyVER0TEYsT0FBTyxtRkFDUCxpQkFBaUIsb1lBQ2pCLGVBQWUsMklBQ2YsZ0JBQWdCLDRUQUNoQixhQUFhLG1MQUNiLGFBQWEsb1ZBQ2IsZ0JBQWdCLDhoSEFDaEIsVUFBVTs7MkZBR0QsZ0NBQWdDO2tCQWpCNUMsU0FBUztzQ0FDUyx1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDLDRCQUE0QixjQUcxQixJQUFJLFdBQ1A7d0JBQ1AsT0FBTzt3QkFDUCxpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixVQUFVO3FCQUNYOzhCQUlnQyxrQkFBa0I7c0JBQWxELFNBQVM7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBpbmplY3QsIGlucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRNZW51LCBNYXRNZW51TW9kdWxlLCBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudEluZm8sIENsaXBwZXJNZXNzYWdlcywgQ2xpcHBlck1vZGVsLCBDbGlwcGVyTW9kdWxlLCBDbGlwcGVyVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NsaXBwZXIuY29tbW9uJztcclxuaW1wb3J0IHsgQnJvYWRjYXN0U2VydmljZSwgRm9ybWF0UGlwZSwgU2NyZWVuU2VydmljZSB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY29yZSc7XHJcbmltcG9ydCB7IEZsZXhMYXlvdXRNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ2xpcHBlclNlYXJjaFJlc3VsdE1hbmFnZXIgfSBmcm9tICcuLi9zZWFyY2gtcmVzdWx0LW1hbmFnZXIvc2VhcmNoLXJlc3VsdC1tYW5hZ2VyJztcclxuXHJcblxyXG5leHBvcnQgZW51bSBDbGlwcGVyU2VhcmNoUmVzdWx0SXRlbURpc3BsYXlNb2RlIHtcclxuICBMaXN0ID0gMSxcclxuICBUaWxlID0gMlxyXG59XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgc2VsZWN0b3I6ICdjbGlwcGVyLXNlYXJjaC1yZXN1bHQtaXRlbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1yZXN1bHQtaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLXJlc3VsdC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdE1lbnVNb2R1bGUsXHJcbiAgICBGbGV4TGF5b3V0TW9kdWxlLFxyXG4gICAgRm9ybWF0UGlwZVxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbGlwcGVyU2VhcmNoUmVzdWx0SXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRleHRNZW51VHJpZ2dlcicpIGNvbnRleHRNZW51VHJpZ2dlciE6IE1hdE1lbnVUcmlnZ2VyO1xyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByb3RlY3RlZCBzY3JlZW5TZXJ2aWNlID0gaW5qZWN0KFNjcmVlblNlcnZpY2UpO1xyXG4gIHByb3RlY3RlZCBicm9hZGNhc3RTZXJ2aWNlID0gaW5qZWN0KEJyb2FkY2FzdFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIHBhcmVudCA9IGlucHV0LnJlcXVpcmVkPENsaXBwZXJTZWFyY2hSZXN1bHRNYW5hZ2VyPigpO1xyXG4gIGl0ZW0gPSBpbnB1dC5yZXF1aXJlZDxDbGlwcGVyRG9jdW1lbnRJbmZvPigpO1xyXG4gIGFjdGlvbnMgPSBpbnB1dC5yZXF1aXJlZDxNYXRNZW51PigpO1xyXG4gIHRpbGVOb1BpY3R1cmVVcmwgPSBpbnB1dDxzdHJpbmc+KCk7XHJcbiAgdGlsZVBpY3R1cmVVcmwgPSBpbnB1dDxzdHJpbmc+KCk7XHJcbiAgaXNTZWxlY3RhYmxlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgaXNSZWFkYWJsZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gIGRpc3BsYXlNb2RlbE5hbWUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgZGlzcGxheU1vZGUgPSBpbnB1dDxDbGlwcGVyU2VhcmNoUmVzdWx0SXRlbURpc3BsYXlNb2RlPihDbGlwcGVyU2VhcmNoUmVzdWx0SXRlbURpc3BsYXlNb2RlLkxpc3QpO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBkaXNwbGF5TW9kZXNFbnVtOiB0eXBlb2YgQ2xpcHBlclNlYXJjaFJlc3VsdEl0ZW1EaXNwbGF5TW9kZSA9IENsaXBwZXJTZWFyY2hSZXN1bHRJdGVtRGlzcGxheU1vZGU7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vZGVsc0VudW06IHR5cGVvZiBDbGlwcGVyTW9kZWwgPSBDbGlwcGVyTW9kZWw7XHJcbiAgcHJvdGVjdGVkIGNvbnRleHRNZW51UG9zaXRpb24gPSB7IHg6ICcwcHgnLCB5OiAnMHB4JyB9O1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucGFyZW50KCk/LnNlbGVjdGlvbj8uY2hhbmdlZFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIC8vIFJlYWN0IHRvIG1lc3NhZ2UgYnJvYWRjYXN0aW5nXHJcbiAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuZ2V0TWVzc2FnZSgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZShtZXNzYWdlID0+IHtcclxuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gQ2xpcHBlck1lc3NhZ2VzLkRPQ1VNRU5UX05BVklHQVRFRCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuaXNSZWFkYWJsZSgpICYmIHRoaXMuaXRlbSgpLmRvY3VtZW50SWQgPT09IG1lc3NhZ2UuZGF0YS5kb2N1bWVudC5kb2N1bWVudElkICYmICF0aGlzLml0ZW0oKS5pc1JlYWQpIHtcclxuICAgICAgICAgICAgdGhpcy5wYXJlbnQoKT8uc2V0UmVhZCh0cnVlLCB0aGlzLml0ZW0oKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLmlkID09PSBDbGlwcGVyTWVzc2FnZXMuRE9DVU1FTlRfUkVBRCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuaXNSZWFkYWJsZSgpICYmIHRoaXMuaXRlbSgpLmRvY3VtZW50SWQgPT09IG1lc3NhZ2UuZGF0YS5kb2N1bWVudC5kb2N1bWVudElkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXRlbSgpLmlzUmVhZCA9IG1lc3NhZ2UuZGF0YS52YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIG9uQ29udGV4dE1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IENsaXBwZXJEb2N1bWVudEluZm8pIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmNvbnRleHRNZW51UG9zaXRpb24ueCA9IGV2ZW50LmNsaWVudFggKyAncHgnO1xyXG4gICAgdGhpcy5jb250ZXh0TWVudVBvc2l0aW9uLnkgPSBldmVudC5jbGllbnRZICsgJ3B4JztcclxuICAgIHRoaXMuY29udGV4dE1lbnVUcmlnZ2VyLm1lbnVEYXRhID0geyBpdGVtOiBpdGVtIH07XHJcbiAgICB0aGlzLmNvbnRleHRNZW51VHJpZ2dlci5vcGVuTWVudSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIGlmIGN1cnJlbnQgaXRlbSBpcyBzZWxlY3RlZFxyXG4gICAqIEByZXR1cm5zIHRydWUgaWYgY3VycmVudCBpdGVtIGlzIHNlbGVjdGVkXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGlzU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc1NlbGVjdGFibGUoKSAmJiB0aGlzLnBhcmVudCgpPy5zZWxlY3Rpb24/LmlzU2VsZWN0ZWQodGhpcy5pdGVtKCkuZG9jdW1lbnRJZCk7XHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIGlmIGN1cnJlbnQgaXRlbSBpcyByZWFkXHJcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBjdXJyZW50IGl0ZW0gaXMgcmVhZFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBpc1JlYWQoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLml0ZW0oKS5tb2R1bGUpO1xyXG4gICAgcmV0dXJuIHRoaXMuaXNSZWFkYWJsZSgpICYmIENsaXBwZXJVdGlscy5pc0NsaXBwZXJNb2RlbFJlYWRhYmxlKFxyXG4gICAgICB0aGlzLml0ZW0oKS5tb2R1bGUgIT09IENsaXBwZXJNb2R1bGUuR2l1cmlzcHJ1ZGVuemEgXHJcbiAgICAgID8gdGhpcy5pdGVtKCkubW9kZWxcclxuICAgICAgOiBDbGlwcGVyTW9kZWwuSnVyaXMpICYmIHRoaXMuaXRlbSgpLmlzUmVhZCA9PT0gdHJ1ZTtcclxuICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAqIENoZWNrcyBpZiBjdXJyZW50IGl0ZW0gY2FuIGJlIHJlYWRcclxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGN1cnJlbnQgaXRlbSBjYW4gYmUgcmVhZFxyXG4gICAqL1xyXG4gICAgcHJvdGVjdGVkIGNhbkJlUmVhZCgpOiBib29sZWFuIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaXNSZWFkYWJsZSgpICYmIENsaXBwZXJVdGlscy5pc0NsaXBwZXJNb2RlbFJlYWRhYmxlKCBcclxuICAgICAgICB0aGlzLml0ZW0oKS5tb2R1bGUgIT09IENsaXBwZXJNb2R1bGUuR2l1cmlzcHJ1ZGVuemEgXHJcbiAgICAgICAgPyB0aGlzLml0ZW0oKS5tb2RlbFxyXG4gICAgICAgIDogQ2xpcHBlck1vZGVsLkp1cmlzKSAmJiB0aGlzLml0ZW0oKS5pc1JlYWQgIT09IHRydWU7XHJcbiAgICB9O1xyXG4gIFxyXG5cclxufVxyXG4iLCI8ZGl2PlxyXG4gIEBpZiAoZGlzcGxheU1vZGUoKSA9PT0gZGlzcGxheU1vZGVzRW51bS5MaXN0ICkge1xyXG4gIDxkaXYgY2xhc3M9XCJpdGVtXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjZweFwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBmeEZpbGxcclxuICAgIFtuZ0NsYXNzXT1cInsnaXRlbS1zZWxlY3RlZCc6IGlzU2VsZWN0ZWQoKSB9XCIgKGNvbnRleHRtZW51KT1cIm9uQ29udGV4dE1lbnUoJGV2ZW50LCBpdGVtKCkpXCJcclxuICAgIChtb3VzZWVudGVyKT1cIml0ZW0oKS5pc092ZXIgPSB0cnVlXCIgKG1vdXNlbGVhdmUpPVwiaXRlbSgpLmlzT3ZlciA9IGZhbHNlXCI+XHJcbiAgICA8ZGl2IGZ4RmxleD1cIjZweFwiIGZ4RmxleEFsaWduPVwic3RyZXRjaFwiIFtuZ0NsYXNzXT1cInBhcmVudCgpLmdldEl0ZW1TdGF0ZUNzc0NsYXNzKGl0ZW0oKSlcIlxyXG4gICAgICBbbWF0VG9vbHRpcF09XCJwYXJlbnQoKS5nZXRJdGVtU3RhdGVUb29sdGlwKGl0ZW0oKSlcIj48c3Bhbj48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgW2Z4RmxleF09XCJpc1NlbGVjdGFibGUoKSA/ICc0OHB4JyA6ICcxOHB4J1wiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgQGlmIChpc1NlbGVjdGFibGUoKSAmJiAoc2NyZWVuU2VydmljZS5pc1RvdWNoYWJsZSB8fCBpdGVtKCkuaXNPdmVyIHx8IGlzU2VsZWN0ZWQoKSkpIHtcclxuICAgICAgPG1hdC1jaGVja2JveCAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHBhcmVudCgpLnNlbGVjdGlvbj8udG9nZ2xlKGl0ZW0oKSwgaXRlbSgpLmRvY3VtZW50SWQpIDogbnVsbFwiIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQoKVwiPlxyXG4gICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGZ4RmxleD1cIipcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29udGVudFwiPlxyXG4gICAgICAgIEBpZiAoZGlzcGxheU1vZGVsTmFtZSgpICYmIGl0ZW0oKS5tb2RlbE5hbWUpIHtcclxuICAgICAgICBAaWYgKGl0ZW0oKS5vcmlnaW4gPT09ICdHQycgfHwgaXRlbSgpLm9yaWdpbiA9PT0gJ0dOJykge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLTJcIj5HSVVSSVNQUlVERU5aQTwvZGl2PlxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLTJcIj57e2l0ZW0oKS5tb2RlbE5hbWV9fTwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZiAoaXRlbSgpLmluZm8gJiYgaXRlbSgpLm1vZGVsID09PSBtb2RlbHNFbnVtLlF1ZXNpdGkpIHtcclxuICAgICAgICBAaWYoaXRlbSgpLmluZm8pIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby0xXCI+e3tpdGVtKCkuaW5mb319PC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIH1AZWxzZSBpZihpdGVtKCkubW9kZWwgPT09IG1vZGVsc0VudW0uTm9ybWF0aXZhVmlnZW50ZSB8fFxyXG4gICAgICAgIGl0ZW0oKS5tb2RlbCA9PT0gbW9kZWxzRW51bS5BZ2dpb3JuYW1lbnRvTm9ybWF0aXZvIHx8XHJcbiAgICAgICAgaXRlbSgpLm1vZGVsID09PSBtb2RlbHNFbnVtLkdpdXJpc3BydWRlbnphUmVjZW50ZSB8fFxyXG4gICAgICAgIGl0ZW0oKS5tb2RlbCA9PT0gbW9kZWxzRW51bS5KdXJpcykge1xyXG4gICAgICAgIEBpZiAoaXRlbSgpLmF1dGhvciAmJiAoaXRlbSgpLm9yaWdpbiA9PT0gJ0xSJyB8fCBpdGVtKCkub3JpZ2luID09PSAnR0MnIHx8IGl0ZW0oKS5vcmlnaW5cclxuICAgICAgICA9PT0gJ0dOJykpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby0xXCI+e3tpdGVtKCkuYXV0aG9yfX08L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgfUBlbHNlIGlmIChpdGVtKCkuZGF0ZSkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLTFcIj57e2l0ZW0oKS5kYXRlIHwgZm9ybWF0OidEJzonZCBNTU0geXl5eSd9fTwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPGEgY2xhc3M9XCJsaW5rXCIgKGNsaWNrKT1cInBhcmVudCgpLm9wZW4oaXRlbSgpLmRvY3VtZW50SWQpXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQXByaSBkb2N1bWVudG8gJyArIGl0ZW0oKS50aXRsZTFcIj57e2l0ZW0oKS50aXRsZTEgPz8gaXRlbSgpLnRpdGxlMn19PC9hPlxyXG4gICAgICAgICAgQGlmIChpdGVtKCkucGFydCA+IDApIHtcclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2VcIj5QQVJURSB7e2l0ZW0oKS5wYXJ0fX08L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGl0ZW0oKS5pc0NvbW1lbnRlZCkge1xyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZVwiPkNPTU1FTlRBVEE8L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGl0ZW0oKS52YWxpZGl0eVN0YXRlID4gMCkge1xyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZS1yZWRcIj57e2l0ZW0oKS52YWxpZGl0eURlc2NyaXB0aW9ufX08L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgQGlmKGl0ZW0oKS5kZXNjcmlwdGlvbiAmJiBpdGVtKCkubW9kZWwgPT09IG1vZGVsc0VudW0uQ29vcmRpbmFtZW50bykge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPnt7aXRlbSgpLmRlc2NyaXB0aW9ufX08L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChpdGVtKCkudGl0bGUyICYmXHJcbiAgICAgICAgaXRlbSgpLm1vZGVsICE9PSBtb2RlbHNFbnVtLkNvb3JkaW5hbWVudG8gJiZcclxuICAgICAgICBpdGVtKCkubW9kZWwgIT09IG1vZGVsc0VudW0uQWxsZXJ0ZUFsaW1lbnRhcmkgJiZcclxuICAgICAgICBpdGVtKCkubW9kZWwgIT09IG1vZGVsc0VudW0uU2NhZGVuemUgJiZcclxuICAgICAgICBpdGVtKCkubW9kZWwgIT09IG1vZGVsc0VudW0uU2VnbmFsYXppb25pKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3tpdGVtKCkudGl0bGUyfX08L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChpdGVtKCkub3JpZ2luRGVzY3JpcHRpb24gJiYgXHJcbiAgICAgICAgaXRlbSgpLm1vZGVsICE9PSBtb2RlbHNFbnVtLlNjYWRlbnplICYmXHJcbiAgICAgICAgaXRlbSgpLm1vZGVsICE9PSBtb2RlbHNFbnVtLlNlZ25hbGF6aW9uaSApIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby0xXCI+XHJcbiAgICAgICAgICB7e2l0ZW0oKS5vcmlnaW5EZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoaXRlbSgpLmFuY2hvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzXCI+XHJcbiAgICAgICAgICA8ZGl2PkRFVFRBR0xJTzwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmtzXCI+XHJcbiAgICAgICAgICAgIEBmb3IgKGEgb2YgaXRlbSgpLmFuY2hvcnM7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICBAaWYgKGEudXJpICYmIGEudGV4dCkge1xyXG4gICAgICAgICAgICAgIDxhIChjbGljayk9XCJwYXJlbnQoKS5vcGVuKGEuZG9jdW1lbnRJZCArICcjJyArIGEudXJpKVwiIFttYXRUb29sdGlwXT1cImEudGl0bGVcIj57e2EudGV4dH19IEBpZlxyXG4gICAgICAgICAgICAgICAgKGEudmVyeVJlbGV2YW50KSB7XHJcbiAgICAgICAgICAgICAgICA8c3VwPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9J2ZvbnQtc2l6ZTp4LXNtYWxsOyBoZWlnaHQ6IDEwcHg7IHdpZHRoOjEwcHgnIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk1vbHRvIHJpbGV2YW50ZVwiPnRodW1iX3VwX2FsdDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L3N1cD5cclxuICAgICAgICAgICAgICAgIH08L2E+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIEBpZiAoIWEudXJpICYmIGEudGV4dCkge1xyXG4gICAgICAgICAgICAgIDxzcGFuPnt7YS50ZXh0fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGl0ZW0oKS50YXhvbm9teT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzXCI+XHJcbiAgICAgICAgICA8ZGl2PkFSR09NRU5USTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmtzXCI+XHJcbiAgICAgICAgICAgIEBmb3IgKG4gb2YgaXRlbSgpLnRheG9ub215Py5zcGxpdCgnXFxyXFxuJyk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlua1wiPlxyXG4gICAgICAgICAgICAgIHt7bn19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChpdGVtKCkubW9kZWwgPT09IG1vZGVsc0VudW0uTmV3cyB8fFxyXG4gICAgICAgIGl0ZW0oKS5tb2RlbCA9PT0gbW9kZWxzRW51bS5BcnRpY29saSB8fFxyXG4gICAgICAgIGl0ZW0oKS5tb2RlbCA9PT0gbW9kZWxzRW51bS5KdXJpcykge1xyXG4gICAgICAgIEBpZiAoIWRpc3BsYXlNb2RlbE5hbWUoKSAmJiBpdGVtKCkubW9kZWxOYW1lICkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLTFcIj57e2l0ZW0oKS5tb2RlbE5hbWV9fTwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGl0ZW0oKS5pbmZvKXtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsc1wiPlxyXG4gICAgICAgICAgPGRpdj5BUkdPTUVOVEk8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5rc1wiPlxyXG4gICAgICAgICAgICA8ZGl2Pnt7aXRlbSgpLmluZm99fTwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGl0ZW0oKS5tb2RlbCA9PT0gbW9kZWxzRW51bS5Db29yZGluYW1lbnRvKSB7XHJcbiAgICAgICAgQGlmIChpdGVtKCkudGl0bGUyKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHNcIj5cclxuICAgICAgICAgIDxkaXY+VElUT0xPIERPQ1VNRU5UTyBNT0RJRklDQVRPPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlua3NcIj5cclxuICAgICAgICAgICAgPGRpdj57e2l0ZW0oKS50aXRsZTJ9fTwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGl0ZW0oKS5tb2RlbCA9PT0gbW9kZWxzRW51bS5TY2FkZW56ZSB8fCBpdGVtKCkubW9kZWwgPT09IG1vZGVsc0VudW0uU2VnbmFsYXppb25pKSB7XHJcbiAgICAgICAgQGlmIChpdGVtKCkuZXhwaXJpbmdEZXNjcmlwdGlvbikge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzXCI+XHJcbiAgICAgICAgICA8ZGl2PlBST1NTSU1BIFNDQURFTlpBPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlua3NcIj5cclxuICAgICAgICAgICAgPGRpdj57e2l0ZW0oKS5leHBpcmluZ0Rlc2NyaXB0aW9ufX08L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGZ4RmxleD1cIjQ4cHhcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgIEBpZiAoaXRlbSgpLmlzT3ZlciB8fCBpdGVtKCkuaXNNZW51T3Blbikge1xyXG4gICAgICBAaWYgKGNhbkJlUmVhZCgpKVxyXG4gICAgICB7XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiU2VnbmEgY29tZSBnacOgIGxldHRhXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInU2VnbmEgY29tZSBnacOgIGxldHRhJ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInBhcmVudCgpLnRvZ2dsZVJlYWQoaXRlbSgpLCAkZXZlbnQpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uPmZsYWc8L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgfVxyXG4gICAgICBAaWYoaXRlbSgpLm1vZGVsID09PSBtb2RlbHNFbnVtLlNjYWRlbnplIHx8IGl0ZW0oKS5tb2RlbCA9PT0gbW9kZWxzRW51bS5TZWduYWxhemlvbmkpIHtcclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJBZ2dpdW5naSBhbCB0dW8gY2FsZW5kYXJpb1wiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQWdnaXVuZ2kgYWwgdHVvIGNhbGVuZGFyaW8nXCI+XHJcbiAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJNZW51XCIgW2F0dHIuYXJpYS1sYWJlbF09XCInTWVudSBvcHppb25pJ1wiXHJcbiAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImFjdGlvbnMoKVwiIFttYXRNZW51VHJpZ2dlckRhdGFdPVwie2l0ZW06IGl0ZW0oKX1cIiAoY2xpY2spPVwiaXRlbSgpLmlzTWVudU9wZW4gPSB0cnVlXCI+XHJcbiAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICB9IEBlbHNlIHtcclxuICA8ZGl2IGNsYXNzPVwidGlsZVwiIChjb250ZXh0bWVudSk9XCJvbkNvbnRleHRNZW51KCRldmVudCwgaXRlbSgpKVwiIChtb3VzZWVudGVyKT1cIml0ZW0oKS5pc092ZXIgPSB0cnVlXCJcclxuICAgIChtb3VzZWxlYXZlKT1cIml0ZW0oKS5pc092ZXIgPSBmYWxzZVwiIFtuZ0NsYXNzXT1cInsnaXRlbS1zZWxlY3RlZCc6IGlzU2VsZWN0ZWQoKSwgXHJcbiAgICAnaXRlbS11bnJlYWQnOiBpc1JlYWQoKX1cIiAoY2xpY2spPVwicGFyZW50KCkub3BlbihpdGVtKCkuZG9jdW1lbnRJZClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1tYXJrXCIgW25nQ2xhc3NdPVwieydpbWFnZS1tYXJrLXVucmVhZCc6ICFpc1JlYWQoKX1cIj48L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxyXG4gICAgICBAaWYgKGNhbkJlUmVhZCgpIHx8IGlzU2VsZWN0YWJsZSgpKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XHJcbiAgICAgICAgQGlmIChjYW5CZVJlYWQoKSAmJiBpdGVtKCkuaXNPdmVyID09PSB0cnVlKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJyZWFkXCIgbWF0VG9vbHRpcD1cIlNlZ25hIGNvbWUgZ2nDoCBsZXR0b1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwicGFyZW50KCkudG9nZ2xlUmVhZChpdGVtKCksICRldmVudClcIj48bWF0LWljb24+ZmxhZzwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoaXNTZWxlY3RhYmxlKCkgJiYgKGlzU2VsZWN0ZWQoKSB8fCBpdGVtKCkuaXNPdmVyID09PSB0cnVlKSkge1xyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNsYXNzPVwiY2hlY2tcIiBbbmdDbGFzc109XCJ7J2NoZWNrLXNlbGVjdGVkJzogaXNTZWxlY3RlZCgpfVwiXHJcbiAgICAgICAgICBtYXRUb29sdGlwPVwiU2VsZXppb25hL0Rlc2VsZXppb25hXCJcclxuICAgICAgICAgIChjbGljayk9XCJwYXJlbnQoKS50b2dnbGVTZWxlY3Rpb24oaXRlbSgpLCAkZXZlbnQpXCI+PG1hdC1pY29uPmNoZWNrPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLTFcIj57e2l0ZW0oKS5tb2RlbE5hbWV9fTwvZGl2PlxyXG4gICAgICBAaWYgKGl0ZW0oKS5pbmZvKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLTJcIj57e2l0ZW0oKS5pbmZvfX08L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKGl0ZW0oKS5waWN0dXJlSWQgJiYgdGlsZVBpY3R1cmVVcmwoKSkge1xyXG4gICAgICA8aW1nIGRlY29kaW5nPVwiYXN5bmNcIiBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwidGlsZVBpY3R1cmVVcmwoKSArICc/aWQ9JyArIGl0ZW0oKS5waWN0dXJlSWRcIiBbYWx0XT1cIml0ZW0oKS50aXRsZTJcIiAvPlxyXG4gICAgICB9IEBlbHNlIGlmICh0aWxlTm9QaWN0dXJlVXJsKCkpIHtcclxuICAgICAgPHBpY3R1cmU+XHJcbiAgICAgICAgPGltZyBkZWNvZGluZz1cImFzeW5jXCIgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cInRpbGVOb1BpY3R1cmVVcmwoKVwiXHJcbiAgICAgICAgICBbYWx0XT1cIml0ZW0oKS50aXRsZTIgfHwgJ2ltbWFnaW5lIG5vbiB0cm92YXRhJ1wiIC8+XHJcbiAgICAgIDwvcGljdHVyZT5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYm9keVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZS1kYXlcIiBbbmdDbGFzc109XCJ7J3VucmVhZCc6ICFpdGVtKCkuaXNSZWFkfVwiPnt7aXRlbSgpLmRhdGUgfCBmb3JtYXQ6J0QnOidkXHJcbiAgICAgICAgICBNTU1NJ319PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuPnt7aXRlbSgpLmRhdGV8IGZvcm1hdDonRCc6J3l5eXknfX08L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj57e2l0ZW0oKS50aXRsZTJ9fTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgfVxyXG48L2Rpdj5cclxuPGRpdiAjY29udGV4dE1lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIiBzdHlsZT1cInBvc2l0aW9uOiBmaXhlZFwiIFtzdHlsZS5sZWZ0XT1cImNvbnRleHRNZW51UG9zaXRpb24ueFwiXHJcbiAgW3N0eWxlLnRvcF09XCJjb250ZXh0TWVudVBvc2l0aW9uLnlcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYWN0aW9ucygpXCIgW21hdE1lbnVUcmlnZ2VyRGF0YV09XCJ7aXRlbTogaXRlbSgpfVwiPlxyXG48L2Rpdj4iXX0=
|
|
@@ -1594,7 +1594,10 @@ class ClipperSearchResultItemComponent {
|
|
|
1594
1594
|
* @returns true if current item is read
|
|
1595
1595
|
*/
|
|
1596
1596
|
isRead() {
|
|
1597
|
-
|
|
1597
|
+
console.log(this.item().module);
|
|
1598
|
+
return this.isReadable() && ClipperUtils.isClipperModelReadable(this.item().module !== ClipperModule.Giurisprudenza
|
|
1599
|
+
? this.item().model
|
|
1600
|
+
: ClipperModel.Juris) && this.item().isRead === true;
|
|
1598
1601
|
}
|
|
1599
1602
|
;
|
|
1600
1603
|
/**
|
|
@@ -1602,7 +1605,9 @@ class ClipperSearchResultItemComponent {
|
|
|
1602
1605
|
* @returns true if current item can be read
|
|
1603
1606
|
*/
|
|
1604
1607
|
canBeRead() {
|
|
1605
|
-
return this.isReadable() && ClipperUtils.isClipperModelReadable(this.item().
|
|
1608
|
+
return this.isReadable() && ClipperUtils.isClipperModelReadable(this.item().module !== ClipperModule.Giurisprudenza
|
|
1609
|
+
? this.item().model
|
|
1610
|
+
: ClipperModel.Juris) && this.item().isRead !== true;
|
|
1606
1611
|
}
|
|
1607
1612
|
;
|
|
1608
1613
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ClipperSearchResultItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -2641,9 +2646,7 @@ class ClipperDocumentComponent extends ClipperDocumentManager {
|
|
|
2641
2646
|
}
|
|
2642
2647
|
else {
|
|
2643
2648
|
if (r.value && r.value.length > 1)
|
|
2644
|
-
this.dialogService.info(r.value.replace(/\n/g, '<br>\r\n'), "Commento", "Chiudi", 700
|
|
2645
|
-
this.openDocument(url);
|
|
2646
|
-
});
|
|
2649
|
+
this.dialogService.info(r.value.replace(/\n/g, '<br>\r\n'), "Commento", "Chiudi", 700);
|
|
2647
2650
|
else
|
|
2648
2651
|
this.dialogService.info("Commento non più disponibile o in fase di revisione.");
|
|
2649
2652
|
}
|