@myrtex-org/form 1.1.25 → 1.1.26
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/lib/modules/object-form/components/elements/input/table/input-table.component.mjs +2 -2
- package/esm2022/lib/modules/object-form/factories/component-factory/component-factory.directive.mjs +32 -23
- package/fesm2022/myrtex-org-form.mjs +32 -23
- package/fesm2022/myrtex-org-form.mjs.map +1 -1
- package/lib/modules/object-form/factories/component-factory/component-factory.directive.d.ts +3 -2
- package/package.json +1 -1
package/esm2022/lib/modules/object-form/components/elements/input/table/input-table.component.mjs
CHANGED
|
@@ -92,7 +92,7 @@ export class InputTableComponent {
|
|
|
92
92
|
});
|
|
93
93
|
}
|
|
94
94
|
deleteRow(event) {
|
|
95
|
-
const findRow = this.model.data.find(item => item.id === event.row.data.id);
|
|
95
|
+
const findRow = structuredClone(this.model.data.find(item => item.id === event.row.data.id));
|
|
96
96
|
if (findRow) {
|
|
97
97
|
this.model.data = this.model.data.filter(item => item.id !== event.row.data.id);
|
|
98
98
|
this._initDataSource(this.model.data);
|
|
@@ -249,4 +249,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
249
249
|
}], changed: [{
|
|
250
250
|
type: Output
|
|
251
251
|
}] } });
|
|
252
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LWZvcm0vc3JjL2xpYi9tb2R1bGVzL29iamVjdC1mb3JtL2NvbXBvbmVudHMvZWxlbWVudHMvaW5wdXQvdGFibGUvaW5wdXQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LWZvcm0vc3JjL2xpYi9tb2R1bGVzL29iamVjdC1mb3JtL2NvbXBvbmVudHMvZWxlbWVudHMvaW5wdXQvdGFibGUvaW5wdXQtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFBRSxNQUFNLEVBQ3BCLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0UsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFJN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7OztBQVM3RCxNQUFNLE9BQU8sbUJBQW1CO0lBTmhDO1FBT0UsU0FB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RSxLQUFLLEVBQUM7Z0JBQ00sWUFBWTtzQkFBdkQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2dCQUV6QixPQUFPO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLCBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudFR5cGUsIERhdGVUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC1mb3JtL2VudW1zJztcclxuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudE1vZGVsQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC1mb3JtL21vZGVscyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IER4RGF0YUdyaWRDb21wb25lbnQgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBDb21wb25lbnRWYWx1ZU1vZGVsLCBTZWN0aW9uVmFsdWVNb2RlbCwgVGFibGVSb3dNb2RlbCwgVGFibGVWYWx1ZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgSW5wdXREYXRlTW9kZWwsIElucHV0TnVtYmVyTW9kZWwsIElucHV0VGFibGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9lbGVtZXRzL2lucHV0cyc7XHJcbmltcG9ydCB7IG9iamVjdEZvcm1BY3Rpb25zLCBvYmplY3RGb3JtU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3RvcmUnO1xyXG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICdAbXlydGV4LW9yZy91aSc7XHJcbmltcG9ydCB7IElucHV0VGFibGVNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IGdldFJvd01vZGVsIH0gZnJvbSAnLi9oZWxwZXJzL2dldC1yb3ctbW9kZWwuaGVscGVyJztcclxuaW1wb3J0IHsgQ29sdW1uTW9kZWwgfSBmcm9tICcuL21vZGVscy9jb2x1bW4ubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtaW5wdXQtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtdGFibGUuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICB0eXBlID0gQ29tcG9uZW50VHlwZS5JbnB1dFRhYmxlO1xyXG5cclxuICBwcml2YXRlIF9zdG9yZTogU3RvcmUgPSBpbmplY3QoU3RvcmUpO1xyXG4gIHByaXZhdGUgX2RldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSBfbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UgPSBpbmplY3QoTW9kYWxTZXJ2aWNlKTtcclxuXHJcbiAgcHJpdmF0ZSBfY2hhbmdlU3ViamVjdCQ6IFN1YmplY3Q8VGFibGVWYWx1ZU1vZGVsPiA9IG5ldyBTdWJqZWN0PFRhYmxlVmFsdWVNb2RlbD4oKTtcclxuICBwcml2YXRlIF9zdWJzY3JpcHRpb25zJDogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfaXNDaGVja1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfY2FuRWRpdE9iamVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgbW9kZWwhOiBUYWJsZVZhbHVlTW9kZWw7XHJcbiAgcHVibGljIHNldHRpbmdzITogSW5wdXRUYWJsZU1vZGVsO1xyXG4gIHB1YmxpYyBkYXRhU291cmNlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9W10gPSBbXTtcclxuICBwdWJsaWMgY29sdW1uczogQ29sdW1uTW9kZWxbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSB2YWx1ZXM6IFNlY3Rpb25WYWx1ZU1vZGVsW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgc2V0IGRhdGEoc2V0dGluZ3M6IENvbXBvbmVudE1vZGVsQmFzZSkge1xyXG4gICAgdGhpcy5zZXR0aW5ncyA9IHNldHRpbmdzIGFzIElucHV0VGFibGVNb2RlbDtcclxuXHJcbiAgICB0aGlzLm1vZGVsID0ge3N5c05hbWU6IHNldHRpbmdzLnN5c05hbWUsIHR5cGU6IHNldHRpbmdzLnR5cGUsIGRhdGE6IFtdLCB0b3RhbHM6IFtdfTtcclxuXHJcbiAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgdGhpcy5faW5pdENvbHVtbnModGhpcy5zZXR0aW5ncy5jb21wb25lbnRzKTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2RhdGFHcmlkJywge3N0YXRpYzogZmFsc2V9KSBkYXRhR3JpZCE6IER4RGF0YUdyaWRDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZWRpdFRlbXBsYXRlJywge3N0YXRpYzogZmFsc2V9KSBlZGl0VGVtcGxhdGUhOiBhbnk7XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlZDogRXZlbnRFbWl0dGVyPENvbXBvbmVudFZhbHVlTW9kZWwgfCBDb21wb25lbnRWYWx1ZU1vZGVsW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb21wb25lbnRWYWx1ZU1vZGVsIHwgQ29tcG9uZW50VmFsdWVNb2RlbFtdPigpO1xyXG5cclxuICBwdWJsaWMgZ2V0IHJvd3NDb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMubW9kZWw/LmRhdGE/Lmxlbmd0aCB8fCAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc0FueVRvdGFsKCk6IGJvb2xlYW4ge1xyXG4gICAgLy8g0J/RgNC+0LLQtdGA0Y/QtdC8INCy0YHQtSDQutC+0LzQv9C+0L3QtdC90YLRiyDQuCDQuNGFINCy0LvQvtC20LXQvdC90YvQtSDQutC+0LzQv9C+0L3QtdC90YLRiyDQvdCwINC90LDQu9C40YfQuNC1IHNob3dUb3RhbFxyXG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MuY29tcG9uZW50cy5zb21lKGMgPT4gXHJcbiAgICAgIHRoaXMuc2hvd1RvdGFsKGMpIHx8IGMuY29tcG9uZW50cz8uc29tZShpbm5lciA9PiB0aGlzLnNob3dUb3RhbChpbm5lcikpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzUmVkTm9EYXRhKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzQ2hlY2tSZXF1aXJlZDtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5faW5pdE1vZGVsKCk7XHJcblxyXG4gICAgdGhpcy5fY2hhbmdlU3ViamVjdCQucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKDcwMCksXHJcbiAgICApLnN1YnNjcmliZShtb2RlbCA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCfQlNCw0L3QvdGL0LUg0YLQsNCx0LvQuNGG0Ysg0L7QsdC90L7QstC70LXQvdGLINC4INCz0L7RgtC+0LLRiyDQuiDQvtGC0L/RgNCw0LLQutC1OicsIG1vZGVsKTtcclxuICAgICAgY29uc29sZS5sb2coJ9Cn0LjRgdGC0YvQtSDRgdGC0YDQvtC60LggKGRhdGEpOicsIG1vZGVsLmRhdGEpO1xyXG4gICAgICBjb25zb2xlLmxvZygn0JTQsNC90L3Ri9C1INC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINCyIEdyaWQ6JywgdGhpcy5kYXRhU291cmNlKTtcclxuICAgICAgY29uc29sZS5sb2coJ0dyaWQgSW5zdGFuY2U6JywgdGhpcy5kYXRhR3JpZC5pbnN0YW5jZSk7XHJcblxyXG4gICAgICAod2luZG93IGFzIGFueSkuZ3JpZCA9IHRoaXMuZGF0YUdyaWQuaW5zdGFuY2U7XHJcbiAgICAgIGNvbnNvbGUubG9nKCfQrdC60LfQtdC80L/Qu9GP0YAg0L/RgNC40LLRj9C30LDQvSDQuiB3aW5kb3cuZ3JpZCcpO1xyXG5cclxuICAgICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2gob2JqZWN0Rm9ybUFjdGlvbnMudXBkYXRlVmFsdWVzKHt2YWx1ZTogbW9kZWx9KSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zJC5wdXNoKHRoaXMuX3N0b3JlLnNlbGVjdChvYmplY3RGb3JtU2VsZWN0b3JzLnNlbGVjdElzQ2hlY2tSZXF1aXJlZCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIHRoaXMuX2lzQ2hlY2tSZXF1aXJlZCA9IHJlc3VsdDtcclxuICAgICAgdGhpcy5fZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSkpO1xyXG5cclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMkLnB1c2godGhpcy5fc3RvcmUuc2VsZWN0KG9iamVjdEZvcm1TZWxlY3RvcnMuc2VsZWN0Q2FuRWRpdE9iamVjdClcclxuICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgIHRoaXMuX2NhbkVkaXRPYmplY3QgPSByZXN1bHQ7XHJcbiAgICAgICAgdGhpcy5fZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KSk7XHJcblxyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucyQucHVzaCh0aGlzLl9zdG9yZS5zZWxlY3Qob2JqZWN0Rm9ybVNlbGVjdG9ycy5zZWxlY3RWYWx1ZU1vZGVsKHRoaXMuc2V0dGluZ3MpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IENvbXBvbmVudFZhbHVlTW9kZWwgfCBudWxsIHwgKENvbXBvbmVudFZhbHVlTW9kZWwgfCBudWxsKVtdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2xvbmVSZXN1bHQgPSBzdHJ1Y3R1cmVkQ2xvbmUocmVzdWx0IGFzIFRhYmxlVmFsdWVNb2RlbCB8IG51bGwpO1xyXG5cclxuICAgICAgICBpZiAoY2xvbmVSZXN1bHQgJiYgIUFycmF5LmlzQXJyYXkoY2xvbmVSZXN1bHQpICYmIHRoaXMubW9kZWwuZGF0YSAhPT0gY2xvbmVSZXN1bHQuZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbCA9IHN0cnVjdHVyZWRDbG9uZShjbG9uZVJlc3VsdCk7XHJcbiAgICAgICAgICB0aGlzLl9pbml0RGF0YVNvdXJjZSh0aGlzLm1vZGVsLmRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jaGFuZ2VTdWJqZWN0JC51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucyQuZm9yRWFjaCgoc3Vic2NyaXB0aW9uKSA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY3JlYXRlUm93KCkge1xyXG4gICAgdGhpcy5fbW9kYWxTZXJ2aWNlLm9wZW4oSW5wdXRUYWJsZU1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgIHRpdGxlOiAn0KHQvtC30LTQsNC90LjQtSDRgdGC0YDQvtC60LgnLFxyXG4gICAgICBva1RleHQ6ICfQodC+0LfQtNCw0YLRjCcsXHJcbiAgICAgIHNldHRpbmdzOiB0aGlzLnNldHRpbmdzLFxyXG4gICAgICByb3dNb2RlbDogZ2V0Um93TW9kZWwodGhpcy5zZXR0aW5ncyksXHJcbiAgICAgIGlzQ2hlY2tSZXF1aXJlZDogdGhpcy5faXNDaGVja1JlcXVpcmVkXHJcbiAgICB9KS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXNvbHZlID0+IHtcclxuICAgICAgaWYgKHJlc29sdmUucmVzdWx0KSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5kYXRhID0gWy4uLnN0cnVjdHVyZWRDbG9uZSh0aGlzLm1vZGVsLmRhdGEpLCByZXNvbHZlLnJvd01vZGVsXTtcclxuXHJcbiAgICAgICAgdGhpcy5faW5pdERhdGFTb3VyY2UodGhpcy5tb2RlbC5kYXRhKTtcclxuXHJcbiAgICAgICAgdGhpcy5fY2hhbmdlU3ViamVjdCQubmV4dChzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5tb2RlbCkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGVSb3coZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgZmluZFJvdyA9IHRoaXMubW9kZWwuZGF0YS5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gZXZlbnQucm93LmRhdGEuaWQpO1xyXG5cclxuICAgIGlmIChmaW5kUm93KSB7XHJcbiAgICAgIHRoaXMubW9kZWwuZGF0YSA9IHRoaXMubW9kZWwuZGF0YS5maWx0ZXIoaXRlbSA9PiBpdGVtLmlkICE9PSBldmVudC5yb3cuZGF0YS5pZCk7XHJcblxyXG4gICAgICB0aGlzLl9pbml0RGF0YVNvdXJjZSh0aGlzLm1vZGVsLmRhdGEpO1xyXG5cclxuICAgICAgdGhpcy5fY2hhbmdlU3ViamVjdCQubmV4dCh0aGlzLm1vZGVsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5fY2FuRWRpdE9iamVjdDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlZGl0Um93KGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGZpbmRSb3c6IFRhYmxlUm93TW9kZWwgfCB1bmRlZmluZWQgPSB0aGlzLm1vZGVsLmRhdGEuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGV2ZW50LnJvdy5kYXRhLmlkKTtcclxuXHJcbiAgICBpZiAoZmluZFJvdykge1xyXG4gICAgICB0aGlzLl9tb2RhbFNlcnZpY2Uub3BlbihJbnB1dFRhYmxlTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgICB0aXRsZTogJ9Cg0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40LUg0YHRgtGA0L7QutC4JyxcclxuICAgICAgICBva1RleHQ6ICfQodC+0YXRgNCw0L3QuNGC0YwnLFxyXG4gICAgICAgIHNldHRpbmdzOiB0aGlzLnNldHRpbmdzLFxyXG4gICAgICAgIHJvd01vZGVsOiBmaW5kUm93XHJcbiAgICAgIH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgIGlmIChyZXNvbHZlLnJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgY2xvbmVNb2RlbCA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLm1vZGVsKTtcclxuICAgICAgICAgIGNvbnN0IGZpbmRSb3cgPSBjbG9uZU1vZGVsLmRhdGEuZmluZChyb3cgPT4gcm93LmlkID09PSByZXNvbHZlLnJvd01vZGVsLmlkKTtcclxuXHJcbiAgICAgICAgICBpZiAoZmluZFJvdykge1xyXG4gICAgICAgICAgICBmaW5kUm93LmRhdGEgPSByZXNvbHZlLnJvd01vZGVsLmRhdGE7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9pbml0RGF0YVNvdXJjZShjbG9uZU1vZGVsLmRhdGEpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fY2hhbmdlU3ViamVjdCQubmV4dChzdHJ1Y3R1cmVkQ2xvbmUoY2xvbmVNb2RlbCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Rm9ybWF0KGNvbXBvbmVudDogQ29tcG9uZW50TW9kZWxCYXNlKSB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgQ29tcG9uZW50VHlwZS5JbnB1dERhdGU6XHJcbiAgICAgICAgc3dpdGNoICgoY29tcG9uZW50IGFzIElucHV0RGF0ZU1vZGVsKS5vcHRpb25zLnZpZXdUeXBlKSB7XHJcbiAgICAgICAgICBjYXNlIERhdGVUeXBlRW51bS5EYXRlVGltZTpcclxuICAgICAgICAgICAgcmV0dXJuICdkZC5NTS55eXl5IGhoOm1tJztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybiAnZGQuTU0ueXl5eSc7XHJcbiAgICAgICAgfVxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXREYXRhVHlwZShjb21wb25lbnQ6IENvbXBvbmVudE1vZGVsQmFzZSkge1xyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIENvbXBvbmVudFR5cGUuSW5wdXREYXRlOlxyXG4gICAgICAgIHJldHVybiAnZGF0ZSc7XHJcbiAgICAgIGNhc2UgQ29tcG9uZW50VHlwZS5JbnB1dFN3aXRjaDpcclxuICAgICAgICByZXR1cm4gJ2Jvb2xlYW4nXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICdzdHJpbmcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dUb3RhbChjb21wb25lbnQ6IENvbXBvbmVudE1vZGVsQmFzZSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGNvbXBvbmVudC50eXBlID09PSBDb21wb25lbnRUeXBlLklucHV0TnVtYmVyKSB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnQ6IElucHV0TnVtYmVyTW9kZWwgPSBjb21wb25lbnQgYXMgSW5wdXROdW1iZXJNb2RlbDtcclxuXHJcbiAgICAgIHJldHVybiBlbGVtZW50Lm9wdGlvbnMuaW5Ub3RhbHM7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzVG90YWxDb2x1bW4oY29tcG9uZW50OiBDb21wb25lbnRNb2RlbEJhc2UpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoY29tcG9uZW50IGFzIElucHV0TnVtYmVyTW9kZWwpLm9wdGlvbnNbJ2luVG90YWxzJ107XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0TW9kZWwoKSB7XHJcbiAgICB0aGlzLm1vZGVsID0ge1xyXG4gICAgICBzeXNOYW1lOiB0aGlzLnNldHRpbmdzLnN5c05hbWUsXHJcbiAgICAgIHR5cGU6IHRoaXMuc2V0dGluZ3MudHlwZSxcclxuICAgICAgZGF0YTogW10sXHJcbiAgICAgIHRvdGFsczogW11cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0RGF0YVNvdXJjZShkYXRhOiBUYWJsZVJvd01vZGVsW10pIHtcclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IGRhdGEubWFwKChpdGVtOiBUYWJsZVJvd01vZGVsKSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0RhdGFJdGVtOiBhbnkgPSB7fTtcclxuXHJcbiAgICAgIGZvciAobGV0IGkgaW4gaXRlbS5kYXRhKSB7XHJcbiAgICAgICAgbmV3RGF0YUl0ZW1baXRlbS5kYXRhW2ldLnN5c05hbWVdID0gaXRlbS5kYXRhW2ldLnZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBuZXdEYXRhSXRlbS5pZCA9IGl0ZW0uaWQ7XHJcblxyXG4gICAgICByZXR1cm4gbmV3RGF0YUl0ZW07XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgdGhpcy5kYXRhR3JpZC5pbnN0YW5jZS5yZWZyZXNoKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0Q29sdW1ucyhjb21wb25lbnRzOiBDb21wb25lbnRNb2RlbEJhc2VbXSkge1xyXG4gICAgdGhpcy5jb2x1bW5zID0gY29tcG9uZW50cy5tYXAoYyA9PiB0aGlzLl90cmFuc2Zvcm1Db2x1bW4oc3RydWN0dXJlZENsb25lKGMpKSk7XHJcblxyXG4gICAgdGhpcy5jb2x1bW5zLnB1c2goe1xyXG4gICAgICBjYXB0aW9uOiAnJyxcclxuICAgICAgdHlwZTogJ2J1dHRvbnMnLFxyXG4gICAgICB3aWR0aDogODAsXHJcbiAgICAgIGNzc0NsYXNzOiAnY3VzdG9tLWNlbGwtY29udHJvbHMnLFxyXG4gICAgICBidXR0b25zOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGVtcGxhdGU6ICdlZGl0QnV0dG9uVGVtcGxhdGUnLFxyXG4gICAgICAgICAgaGludDogJ9Cg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRlbXBsYXRlOiAnZGVsZXRlQnV0dG9uVGVtcGxhdGUnLFxyXG4gICAgICAgICAgaGludDogJ9Cj0LTQsNC70LjRgtGMJyxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5kYXRhR3JpZC5pbnN0YW5jZS5yZXBhaW50KCk7XHJcbiAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90cmFuc2Zvcm1Db2x1bW4oY29tcG9uZW50OiBDb21wb25lbnRNb2RlbEJhc2UpOiBDb2x1bW5Nb2RlbCB7XHJcbiAgICBjb25zdCBkYXRhVHlwZSA9IHRoaXMuZ2V0RGF0YVR5cGUoY29tcG9uZW50KTtcclxuXHJcbiAgICBjb25zdCBjb2x1bW46IENvbHVtbk1vZGVsID0ge1xyXG4gICAgICBjYXB0aW9uOiBjb21wb25lbnQub3B0aW9ucy5sYWJlbCB8fCAnJyxcclxuICAgICAgY29sdW1uczogY29tcG9uZW50LmNvbXBvbmVudHMubWFwKGMgPT4gdGhpcy5fdHJhbnNmb3JtQ29sdW1uKHN0cnVjdHVyZWRDbG9uZShjKSkpLFxyXG4gICAgICBkYXRhRmllbGQ6IGNvbXBvbmVudC5zeXNOYW1lLFxyXG4gICAgICBkYXRhVHlwZTogdGhpcy5nZXREYXRhVHlwZShjb21wb25lbnQpLFxyXG4gICAgICBmb3JtYXQ6IHRoaXMuZ2V0Rm9ybWF0KGNvbXBvbmVudCksXHJcbiAgICAgIG1pbldpZHRoOiAxNjBcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZGF0YVR5cGUgPT09ICdib29sZWFuJykge1xyXG4gICAgICBjb2x1bW4uY2FsY3VsYXRlQ2VsbFZhbHVlID0gKHJvd0RhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gcm93RGF0YVtjb21wb25lbnQuc3lzTmFtZV07XHJcbiAgICAgICAgLy8g0JXRgdC70LggdHJ1ZSDigJQg0JTQsCwg0LXRgdC70LggZmFsc2UsIFwiXCIg0LjQu9C4IG51bGwg4oCUINCd0LXRglxyXG4gICAgICAgIHJldHVybiAhIXZhbHVlOyBcclxuICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgIGNvbHVtbi5sb29rdXAgPSB7XHJcbiAgICAgICAgZGF0YVNvdXJjZTogW1xyXG4gICAgICAgICAgeyB2YWx1ZTogdHJ1ZSwgZGlzcGxheVZhbHVlOiAn0JTQsCcgfSxcclxuICAgICAgICAgIHsgdmFsdWU6IGZhbHNlLCBkaXNwbGF5VmFsdWU6ICfQndC10YInIH1cclxuICAgICAgICBdLFxyXG4gICAgICAgIHZhbHVlRXhwcjogJ3ZhbHVlJyxcclxuICAgICAgICBkaXNwbGF5RXhwcjogJ2Rpc3BsYXlWYWx1ZSdcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5vcHRpb25zLmdyb3Vwcy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgZmluZElkeCA9IHRoaXMuc2V0dGluZ3Mub3B0aW9ucy5ncm91cHMuZmluZEluZGV4KHggPT4geCA9PT0gY29tcG9uZW50LnN5c05hbWUpO1xyXG5cclxuICAgICAgaWYgKGZpbmRJZHggIT09IC0xKSB7XHJcbiAgICAgICAgY29sdW1uLmdyb3VwSW5kZXggPSBmaW5kSWR4XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29sdW1uXHJcbiAgfVxyXG59XHJcbiIsIkBpZiAoc2V0dGluZ3MpIHtcclxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtdGFibGUtY29udGVudCB3LTEwMFwiPlxyXG4gICAgQGlmIChzZXR0aW5ncy5vcHRpb25zLmxhYmVsKSB7XHJcbiAgICAgIDxtcngtbGFiZWxcclxuICAgICAgICBbcmVxdWlyZWRdPVwic2V0dGluZ3Mub3B0aW9ucy5yZXF1aXJlZFwiXHJcbiAgICAgICAgW3Rvb2x0aXBdPVwic2V0dGluZ3Mub3B0aW9ucy50b29sdGlwIHx8ICcnXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IHNldHRpbmdzLm9wdGlvbnMubGFiZWwgfX1cclxuICAgICAgPC9tcngtbGFiZWw+XHJcbiAgICB9XHJcblxyXG4gICAgPGR4LWRhdGEtZ3JpZFxyXG4gICAgICAjZGF0YUdyaWRcclxuICAgICAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiXHJcbiAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBub0RhdGFUZXh0PVwi0J3QtdGCINC00LDQvdC90YvRhVwiXHJcbiAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCVcIlxyXG4gICAgICBbd29yZFdyYXBFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIlxyXG4gICAgICBbY2xhc3Mubm9EYXRhXT1cImlzUmVkTm9EYXRhXCJcclxuICAgID5cclxuICAgICAgPGR4by10b29sYmFyPlxyXG4gICAgICAgIDxkeGktaXRlbSBsb2NhdGlvbj1cImFmdGVyXCI+XHJcbiAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlIGNsYXNzPVwiYWRkLXJvd1wiPlxyXG4gICAgICAgICAgICA8bXJ4LWJ1dHRvblxyXG4gICAgICAgICAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcclxuICAgICAgICAgICAgICBbdHlwZV09XCInc2Vjb25kYXJ5J1wiXHJcbiAgICAgICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ21iLTMnXCJcclxuICAgICAgICAgICAgICAobXJ4Q2xpY2spPVwiY3JlYXRlUm93KClcIlxyXG4gICAgICAgICAgICA+e3tzZXR0aW5ncy5vcHRpb25zLmFkZEJ0blRpdGxlfX1cclxuICAgICAgICAgICAgPC9tcngtYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9keGktaXRlbT5cclxuICAgICAgPC9keG8tdG9vbGJhcj5cclxuXHJcbiAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgYnV0dG9uRGF0YSBvZiAnZWRpdEJ1dHRvblRlbXBsYXRlJ1wiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1lZGl0IGljb24tZm9udC0xNiBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJlZGl0Um93KGJ1dHRvbkRhdGEpXCI+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgYnV0dG9uRGF0YSBvZiAnZGVsZXRlQnV0dG9uVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWRlbGV0ZSBpY29uLWZvbnQtMTYgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiZGVsZXRlUm93KGJ1dHRvbkRhdGEpXCI+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIEBpZiAoZGF0YVNvdXJjZS5sZW5ndGgpIHtcclxuICAgICAgICA8ZHhvLXN1bW1hcnk+XHJcbiAgICAgICAgICBAZm9yIChjb21wb25lbnQgb2Ygc2V0dGluZ3MuY29tcG9uZW50czsgdHJhY2sgY29tcG9uZW50LmlkOyBsZXQgZmlyc3QgPSAkZmlyc3QpIHtcclxuICAgICAgICAgICAgQGlmICghZmlyc3QpIHtcclxuICAgICAgICAgICAgICBAaWYgKHNob3dUb3RhbChjb21wb25lbnQpKSB7XHJcbiAgICAgICAgICAgICAgICA8ZHhpLWdyb3VwLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgW2NvbHVtbl09XCJjb21wb25lbnQuc3lzTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIHN1bW1hcnlUeXBlPVwic3VtXCJcclxuICAgICAgICAgICAgICAgICAgZGlzcGxheUZvcm1hdD1cItCY0YLQvtCz0L46IHswfVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzaG93SW5Hcm91cEZvb3Rlcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW2FsaWduQnlDb2x1bW5dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9keGktZ3JvdXAtaXRlbT5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZHhpLXRvdGFsLWl0ZW0gXHJcbiAgICAgICAgICAgICAgICAgIFtjb2x1bW5dPVwiY29tcG9uZW50LnN5c05hbWVcIiBcclxuICAgICAgICAgICAgICAgICAgZGlzcGxheUZvcm1hdD1cInswfVwiXHJcbiAgICAgICAgICAgICAgICAgIHN1bW1hcnlUeXBlPVwic3VtXCJcclxuICAgICAgICAgICAgICAgID48L2R4aS10b3RhbC1pdGVtPlxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgQGZvciAoY29tcG9uZW50IG9mIGNvbXBvbmVudC5jb21wb25lbnRzOyB0cmFjayBjb21wb25lbnQuaWQpIHtcclxuICAgICAgICAgICAgICAgIEBpZiAoc2hvd1RvdGFsKGNvbXBvbmVudCkpIHtcclxuICAgICAgICAgICAgICAgICAgPGR4aS1ncm91cC1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbHVtbl09XCJjb21wb25lbnQuc3lzTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3VtbWFyeVR5cGU9XCJzdW1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlGb3JtYXQ9XCLQmNGC0L7Qs9C+OiB7MH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93SW5Hcm91cEZvb3Rlcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxpZ25CeUNvbHVtbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZHhpLWdyb3VwLWl0ZW0+XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgQGZvciAoY29tcG9uZW50IG9mIGNvbXBvbmVudC5jb21wb25lbnRzOyB0cmFjayBjb21wb25lbnQuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgQGlmIChzaG93VG90YWwoY29tcG9uZW50KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxkeGktZ3JvdXAtaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbHVtbl09XCJjb21wb25lbnQuc3lzTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5VHlwZT1cInN1bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5Rm9ybWF0PVwi0JjRgtC+0LPQvjogezB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93SW5Hcm91cEZvb3Rlcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthbGlnbkJ5Q29sdW1uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2R4aS1ncm91cC1pdGVtPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICBAaWYgKGhhc0FueVRvdGFsKSB7IFxyXG4gICAgICAgICAgICAgICAgPGR4aS10b3RhbC1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbHVtbl09XCJjb21wb25lbnQuc3lzTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Nzc0NsYXNzXT1cIid0ZXh0LWJvbGQnXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZvcm1hdF09XCJzaG93VG90YWwoY29tcG9uZW50KSA/ICd7MH0nIDogJ9CY0KLQntCT0J4nXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3VtbWFyeVR5cGVdPVwic2hvd1RvdGFsKGNvbXBvbmVudCkgPyAnc3VtJyA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgICAgICA+PC9keGktdG90YWwtaXRlbT5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2R4by1zdW1tYXJ5PlxyXG4gICAgICB9XHJcbiAgICA8L2R4LWRhdGEtZ3JpZD5cclxuXHJcbiAgICBAaWYoISFzZXR0aW5ncy5vcHRpb25zLm1heFJvd3MpIHtcclxuICAgICAgPG1yeC1oaW50LWVycm9yLW1lc3NhZ2VcclxuICAgICAgICBtZXNzYWdlPVwi0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INGB0YLRgNC+0Lo6IHt7IHNldHRpbmdzLm9wdGlvbnMubWF4Um93cyB9fVwiXHJcbiAgICAgICAgW21heFZhbHVlXT1cInNldHRpbmdzLm9wdGlvbnMubWF4Um93c1wiXHJcbiAgICAgICAgW3ZhbHVlXT1cInJvd3NDb3VudFwiXHJcbiAgICAgID48L21yeC1oaW50LWVycm9yLW1lc3NhZ2U+XHJcbiAgICB9XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNlZGl0VGVtcGxhdGUgbGV0LWNlbGxJbmZvPVwiY2VsbEluZm9cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiIHN0eWxlPVwiZ2FwOiA0cHhcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tZWRpdCBpY29uLWZvbnQtMTYgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiZWRpdFJvdyhjZWxsSW5mbylcIj48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWRlbGV0ZSBpY29uLWZvbnQtMTYgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiZGVsZXRlUm93KGNlbGxJbmZvKVwiPjwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG59XHJcblxyXG5cclxuIl19
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LWZvcm0vc3JjL2xpYi9tb2R1bGVzL29iamVjdC1mb3JtL2NvbXBvbmVudHMvZWxlbWVudHMvaW5wdXQvdGFibGUvaW5wdXQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LWZvcm0vc3JjL2xpYi9tb2R1bGVzL29iamVjdC1mb3JtL2NvbXBvbmVudHMvZWxlbWVudHMvaW5wdXQvdGFibGUvaW5wdXQtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFBRSxNQUFNLEVBQ3BCLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0UsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFJN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7OztBQVM3RCxNQUFNLE9BQU8sbUJBQW1CO0lBTmhDO1FBT0UsU0FB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RSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBQ00sWUFBWTtzQkFBdkQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2dCQUV6QixPQUFPO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLCBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudFR5cGUsIERhdGVUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC1mb3JtL2VudW1zJztcclxuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudE1vZGVsQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC1mb3JtL21vZGVscyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IER4RGF0YUdyaWRDb21wb25lbnQgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBDb21wb25lbnRWYWx1ZU1vZGVsLCBTZWN0aW9uVmFsdWVNb2RlbCwgVGFibGVSb3dNb2RlbCwgVGFibGVWYWx1ZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgSW5wdXREYXRlTW9kZWwsIElucHV0TnVtYmVyTW9kZWwsIElucHV0VGFibGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9lbGVtZXRzL2lucHV0cyc7XHJcbmltcG9ydCB7IG9iamVjdEZvcm1BY3Rpb25zLCBvYmplY3RGb3JtU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3RvcmUnO1xyXG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICdAbXlydGV4LW9yZy91aSc7XHJcbmltcG9ydCB7IElucHV0VGFibGVNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IGdldFJvd01vZGVsIH0gZnJvbSAnLi9oZWxwZXJzL2dldC1yb3ctbW9kZWwuaGVscGVyJztcclxuaW1wb3J0IHsgQ29sdW1uTW9kZWwgfSBmcm9tICcuL21vZGVscy9jb2x1bW4ubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtaW5wdXQtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtdGFibGUuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICB0eXBlID0gQ29tcG9uZW50VHlwZS5JbnB1dFRhYmxlO1xyXG5cclxuICBwcml2YXRlIF9zdG9yZTogU3RvcmUgPSBpbmplY3QoU3RvcmUpO1xyXG4gIHByaXZhdGUgX2RldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSBfbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UgPSBpbmplY3QoTW9kYWxTZXJ2aWNlKTtcclxuXHJcbiAgcHJpdmF0ZSBfY2hhbmdlU3ViamVjdCQ6IFN1YmplY3Q8VGFibGVWYWx1ZU1vZGVsPiA9IG5ldyBTdWJqZWN0PFRhYmxlVmFsdWVNb2RlbD4oKTtcclxuICBwcml2YXRlIF9zdWJzY3JpcHRpb25zJDogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfaXNDaGVja1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfY2FuRWRpdE9iamVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgbW9kZWwhOiBUYWJsZVZhbHVlTW9kZWw7XHJcbiAgcHVibGljIHNldHRpbmdzITogSW5wdXRUYWJsZU1vZGVsO1xyXG4gIHB1YmxpYyBkYXRhU291cmNlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9W10gPSBbXTtcclxuICBwdWJsaWMgY29sdW1uczogQ29sdW1uTW9kZWxbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSB2YWx1ZXM6IFNlY3Rpb25WYWx1ZU1vZGVsW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgc2V0IGRhdGEoc2V0dGluZ3M6IENvbXBvbmVudE1vZGVsQmFzZSkge1xyXG4gICAgdGhpcy5zZXR0aW5ncyA9IHNldHRpbmdzIGFzIElucHV0VGFibGVNb2RlbDtcclxuXHJcbiAgICB0aGlzLm1vZGVsID0ge3N5c05hbWU6IHNldHRpbmdzLnN5c05hbWUsIHR5cGU6IHNldHRpbmdzLnR5cGUsIGRhdGE6IFtdLCB0b3RhbHM6IFtdfTtcclxuXHJcbiAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgdGhpcy5faW5pdENvbHVtbnModGhpcy5zZXR0aW5ncy5jb21wb25lbnRzKTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2RhdGFHcmlkJywge3N0YXRpYzogZmFsc2V9KSBkYXRhR3JpZCE6IER4RGF0YUdyaWRDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZWRpdFRlbXBsYXRlJywge3N0YXRpYzogZmFsc2V9KSBlZGl0VGVtcGxhdGUhOiBhbnk7XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlZDogRXZlbnRFbWl0dGVyPENvbXBvbmVudFZhbHVlTW9kZWwgfCBDb21wb25lbnRWYWx1ZU1vZGVsW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb21wb25lbnRWYWx1ZU1vZGVsIHwgQ29tcG9uZW50VmFsdWVNb2RlbFtdPigpO1xyXG5cclxuICBwdWJsaWMgZ2V0IHJvd3NDb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMubW9kZWw/LmRhdGE/Lmxlbmd0aCB8fCAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc0FueVRvdGFsKCk6IGJvb2xlYW4ge1xyXG4gICAgLy8g0J/RgNC+0LLQtdGA0Y/QtdC8INCy0YHQtSDQutC+0LzQv9C+0L3QtdC90YLRiyDQuCDQuNGFINCy0LvQvtC20LXQvdC90YvQtSDQutC+0LzQv9C+0L3QtdC90YLRiyDQvdCwINC90LDQu9C40YfQuNC1IHNob3dUb3RhbFxyXG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MuY29tcG9uZW50cy5zb21lKGMgPT4gXHJcbiAgICAgIHRoaXMuc2hvd1RvdGFsKGMpIHx8IGMuY29tcG9uZW50cz8uc29tZShpbm5lciA9PiB0aGlzLnNob3dUb3RhbChpbm5lcikpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzUmVkTm9EYXRhKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzQ2hlY2tSZXF1aXJlZDtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5faW5pdE1vZGVsKCk7XHJcblxyXG4gICAgdGhpcy5fY2hhbmdlU3ViamVjdCQucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKDcwMCksXHJcbiAgICApLnN1YnNjcmliZShtb2RlbCA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCfQlNCw0L3QvdGL0LUg0YLQsNCx0LvQuNGG0Ysg0L7QsdC90L7QstC70LXQvdGLINC4INCz0L7RgtC+0LLRiyDQuiDQvtGC0L/RgNCw0LLQutC1OicsIG1vZGVsKTtcclxuICAgICAgY29uc29sZS5sb2coJ9Cn0LjRgdGC0YvQtSDRgdGC0YDQvtC60LggKGRhdGEpOicsIG1vZGVsLmRhdGEpO1xyXG4gICAgICBjb25zb2xlLmxvZygn0JTQsNC90L3Ri9C1INC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINCyIEdyaWQ6JywgdGhpcy5kYXRhU291cmNlKTtcclxuICAgICAgY29uc29sZS5sb2coJ0dyaWQgSW5zdGFuY2U6JywgdGhpcy5kYXRhR3JpZC5pbnN0YW5jZSk7XHJcblxyXG4gICAgICAod2luZG93IGFzIGFueSkuZ3JpZCA9IHRoaXMuZGF0YUdyaWQuaW5zdGFuY2U7XHJcbiAgICAgIGNvbnNvbGUubG9nKCfQrdC60LfQtdC80L/Qu9GP0YAg0L/RgNC40LLRj9C30LDQvSDQuiB3aW5kb3cuZ3JpZCcpO1xyXG5cclxuICAgICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2gob2JqZWN0Rm9ybUFjdGlvbnMudXBkYXRlVmFsdWVzKHt2YWx1ZTogbW9kZWx9KSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zJC5wdXNoKHRoaXMuX3N0b3JlLnNlbGVjdChvYmplY3RGb3JtU2VsZWN0b3JzLnNlbGVjdElzQ2hlY2tSZXF1aXJlZCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIHRoaXMuX2lzQ2hlY2tSZXF1aXJlZCA9IHJlc3VsdDtcclxuICAgICAgdGhpcy5fZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSkpO1xyXG5cclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMkLnB1c2godGhpcy5fc3RvcmUuc2VsZWN0KG9iamVjdEZvcm1TZWxlY3RvcnMuc2VsZWN0Q2FuRWRpdE9iamVjdClcclxuICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgIHRoaXMuX2NhbkVkaXRPYmplY3QgPSByZXN1bHQ7XHJcbiAgICAgICAgdGhpcy5fZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KSk7XHJcblxyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucyQucHVzaCh0aGlzLl9zdG9yZS5zZWxlY3Qob2JqZWN0Rm9ybVNlbGVjdG9ycy5zZWxlY3RWYWx1ZU1vZGVsKHRoaXMuc2V0dGluZ3MpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IENvbXBvbmVudFZhbHVlTW9kZWwgfCBudWxsIHwgKENvbXBvbmVudFZhbHVlTW9kZWwgfCBudWxsKVtdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2xvbmVSZXN1bHQgPSBzdHJ1Y3R1cmVkQ2xvbmUocmVzdWx0IGFzIFRhYmxlVmFsdWVNb2RlbCB8IG51bGwpO1xyXG5cclxuICAgICAgICBpZiAoY2xvbmVSZXN1bHQgJiYgIUFycmF5LmlzQXJyYXkoY2xvbmVSZXN1bHQpICYmIHRoaXMubW9kZWwuZGF0YSAhPT0gY2xvbmVSZXN1bHQuZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbCA9IHN0cnVjdHVyZWRDbG9uZShjbG9uZVJlc3VsdCk7XHJcbiAgICAgICAgICB0aGlzLl9pbml0RGF0YVNvdXJjZSh0aGlzLm1vZGVsLmRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jaGFuZ2VTdWJqZWN0JC51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucyQuZm9yRWFjaCgoc3Vic2NyaXB0aW9uKSA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY3JlYXRlUm93KCkge1xyXG4gICAgdGhpcy5fbW9kYWxTZXJ2aWNlLm9wZW4oSW5wdXRUYWJsZU1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgIHRpdGxlOiAn0KHQvtC30LTQsNC90LjQtSDRgdGC0YDQvtC60LgnLFxyXG4gICAgICBva1RleHQ6ICfQodC+0LfQtNCw0YLRjCcsXHJcbiAgICAgIHNldHRpbmdzOiB0aGlzLnNldHRpbmdzLFxyXG4gICAgICByb3dNb2RlbDogZ2V0Um93TW9kZWwodGhpcy5zZXR0aW5ncyksXHJcbiAgICAgIGlzQ2hlY2tSZXF1aXJlZDogdGhpcy5faXNDaGVja1JlcXVpcmVkXHJcbiAgICB9KS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXNvbHZlID0+IHtcclxuICAgICAgaWYgKHJlc29sdmUucmVzdWx0KSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5kYXRhID0gWy4uLnN0cnVjdHVyZWRDbG9uZSh0aGlzLm1vZGVsLmRhdGEpLCByZXNvbHZlLnJvd01vZGVsXTtcclxuXHJcbiAgICAgICAgdGhpcy5faW5pdERhdGFTb3VyY2UodGhpcy5tb2RlbC5kYXRhKTtcclxuXHJcbiAgICAgICAgdGhpcy5fY2hhbmdlU3ViamVjdCQubmV4dChzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5tb2RlbCkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGVSb3coZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgZmluZFJvdyA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLm1vZGVsLmRhdGEuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGV2ZW50LnJvdy5kYXRhLmlkKSk7XHJcblxyXG4gICAgaWYgKGZpbmRSb3cpIHtcclxuICAgICAgdGhpcy5tb2RlbC5kYXRhID0gdGhpcy5tb2RlbC5kYXRhLmZpbHRlcihpdGVtID0+IGl0ZW0uaWQgIT09IGV2ZW50LnJvdy5kYXRhLmlkKTtcclxuXHJcbiAgICAgIHRoaXMuX2luaXREYXRhU291cmNlKHRoaXMubW9kZWwuZGF0YSk7XHJcblxyXG4gICAgICB0aGlzLl9jaGFuZ2VTdWJqZWN0JC5uZXh0KHRoaXMubW9kZWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLl9jYW5FZGl0T2JqZWN0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVkaXRSb3coZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgZmluZFJvdzogVGFibGVSb3dNb2RlbCB8IHVuZGVmaW5lZCA9IHRoaXMubW9kZWwuZGF0YS5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gZXZlbnQucm93LmRhdGEuaWQpO1xyXG5cclxuICAgIGlmIChmaW5kUm93KSB7XHJcbiAgICAgIHRoaXMuX21vZGFsU2VydmljZS5vcGVuKElucHV0VGFibGVNb2RhbENvbXBvbmVudCwge1xyXG4gICAgICAgIHRpdGxlOiAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjQtSDRgdGC0YDQvtC60LgnLFxyXG4gICAgICAgIG9rVGV4dDogJ9Ch0L7RhdGA0LDQvdC40YLRjCcsXHJcbiAgICAgICAgc2V0dGluZ3M6IHRoaXMuc2V0dGluZ3MsXHJcbiAgICAgICAgcm93TW9kZWw6IGZpbmRSb3dcclxuICAgICAgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc29sdmUucmVzdWx0KSB7XHJcbiAgICAgICAgICBjb25zdCBjbG9uZU1vZGVsID0gc3RydWN0dXJlZENsb25lKHRoaXMubW9kZWwpO1xyXG4gICAgICAgICAgY29uc3QgZmluZFJvdyA9IGNsb25lTW9kZWwuZGF0YS5maW5kKHJvdyA9PiByb3cuaWQgPT09IHJlc29sdmUucm93TW9kZWwuaWQpO1xyXG5cclxuICAgICAgICAgIGlmIChmaW5kUm93KSB7XHJcbiAgICAgICAgICAgIGZpbmRSb3cuZGF0YSA9IHJlc29sdmUucm93TW9kZWwuZGF0YTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2luaXREYXRhU291cmNlKGNsb25lTW9kZWwuZGF0YSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VTdWJqZWN0JC5uZXh0KHN0cnVjdHVyZWRDbG9uZShjbG9uZU1vZGVsKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRGb3JtYXQoY29tcG9uZW50OiBDb21wb25lbnRNb2RlbEJhc2UpIHtcclxuICAgIHN3aXRjaCAoY29tcG9uZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSBDb21wb25lbnRUeXBlLklucHV0RGF0ZTpcclxuICAgICAgICBzd2l0Y2ggKChjb21wb25lbnQgYXMgSW5wdXREYXRlTW9kZWwpLm9wdGlvbnMudmlld1R5cGUpIHtcclxuICAgICAgICAgIGNhc2UgRGF0ZVR5cGVFbnVtLkRhdGVUaW1lOlxyXG4gICAgICAgICAgICByZXR1cm4gJ2RkLk1NLnl5eXkgaGg6bW0nO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuICdkZC5NTS55eXl5JztcclxuICAgICAgICB9XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldERhdGFUeXBlKGNvbXBvbmVudDogQ29tcG9uZW50TW9kZWxCYXNlKSB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgQ29tcG9uZW50VHlwZS5JbnB1dERhdGU6XHJcbiAgICAgICAgcmV0dXJuICdkYXRlJztcclxuICAgICAgY2FzZSBDb21wb25lbnRUeXBlLklucHV0U3dpdGNoOlxyXG4gICAgICAgIHJldHVybiAnYm9vbGVhbidcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ3N0cmluZyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd1RvdGFsKGNvbXBvbmVudDogQ29tcG9uZW50TW9kZWxCYXNlKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoY29tcG9uZW50LnR5cGUgPT09IENvbXBvbmVudFR5cGUuSW5wdXROdW1iZXIpIHtcclxuICAgICAgY29uc3QgZWxlbWVudDogSW5wdXROdW1iZXJNb2RlbCA9IGNvbXBvbmVudCBhcyBJbnB1dE51bWJlck1vZGVsO1xyXG5cclxuICAgICAgcmV0dXJuIGVsZW1lbnQub3B0aW9ucy5pblRvdGFscztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNUb3RhbENvbHVtbihjb21wb25lbnQ6IENvbXBvbmVudE1vZGVsQmFzZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChjb21wb25lbnQgYXMgSW5wdXROdW1iZXJNb2RlbCkub3B0aW9uc1snaW5Ub3RhbHMnXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRNb2RlbCgpIHtcclxuICAgIHRoaXMubW9kZWwgPSB7XHJcbiAgICAgIHN5c05hbWU6IHRoaXMuc2V0dGluZ3Muc3lzTmFtZSxcclxuICAgICAgdHlwZTogdGhpcy5zZXR0aW5ncy50eXBlLFxyXG4gICAgICBkYXRhOiBbXSxcclxuICAgICAgdG90YWxzOiBbXVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXREYXRhU291cmNlKGRhdGE6IFRhYmxlUm93TW9kZWxbXSkge1xyXG4gICAgdGhpcy5kYXRhU291cmNlID0gZGF0YS5tYXAoKGl0ZW06IFRhYmxlUm93TW9kZWwpID0+IHtcclxuICAgICAgY29uc3QgbmV3RGF0YUl0ZW06IGFueSA9IHt9O1xyXG5cclxuICAgICAgZm9yIChsZXQgaSBpbiBpdGVtLmRhdGEpIHtcclxuICAgICAgICBuZXdEYXRhSXRlbVtpdGVtLmRhdGFbaV0uc3lzTmFtZV0gPSBpdGVtLmRhdGFbaV0udmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG5ld0RhdGFJdGVtLmlkID0gaXRlbS5pZDtcclxuXHJcbiAgICAgIHJldHVybiBuZXdEYXRhSXRlbTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB0aGlzLmRhdGFHcmlkLmluc3RhbmNlLnJlZnJlc2goKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRDb2x1bW5zKGNvbXBvbmVudHM6IENvbXBvbmVudE1vZGVsQmFzZVtdKSB7XHJcbiAgICB0aGlzLmNvbHVtbnMgPSBjb21wb25lbnRzLm1hcChjID0+IHRoaXMuX3RyYW5zZm9ybUNvbHVtbihzdHJ1Y3R1cmVkQ2xvbmUoYykpKTtcclxuXHJcbiAgICB0aGlzLmNvbHVtbnMucHVzaCh7XHJcbiAgICAgIGNhcHRpb246ICcnLFxyXG4gICAgICB0eXBlOiAnYnV0dG9ucycsXHJcbiAgICAgIHdpZHRoOiA4MCxcclxuICAgICAgY3NzQ2xhc3M6ICdjdXN0b20tY2VsbC1jb250cm9scycsXHJcbiAgICAgIGJ1dHRvbnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0ZW1wbGF0ZTogJ2VkaXRCdXR0b25UZW1wbGF0ZScsXHJcbiAgICAgICAgICBoaW50OiAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0YwnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGVtcGxhdGU6ICdkZWxldGVCdXR0b25UZW1wbGF0ZScsXHJcbiAgICAgICAgICBoaW50OiAn0KPQtNCw0LvQuNGC0YwnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmRhdGFHcmlkLmluc3RhbmNlLnJlcGFpbnQoKTtcclxuICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3RyYW5zZm9ybUNvbHVtbihjb21wb25lbnQ6IENvbXBvbmVudE1vZGVsQmFzZSk6IENvbHVtbk1vZGVsIHtcclxuICAgIGNvbnN0IGRhdGFUeXBlID0gdGhpcy5nZXREYXRhVHlwZShjb21wb25lbnQpO1xyXG5cclxuICAgIGNvbnN0IGNvbHVtbjogQ29sdW1uTW9kZWwgPSB7XHJcbiAgICAgIGNhcHRpb246IGNvbXBvbmVudC5vcHRpb25zLmxhYmVsIHx8ICcnLFxyXG4gICAgICBjb2x1bW5zOiBjb21wb25lbnQuY29tcG9uZW50cy5tYXAoYyA9PiB0aGlzLl90cmFuc2Zvcm1Db2x1bW4oc3RydWN0dXJlZENsb25lKGMpKSksXHJcbiAgICAgIGRhdGFGaWVsZDogY29tcG9uZW50LnN5c05hbWUsXHJcbiAgICAgIGRhdGFUeXBlOiB0aGlzLmdldERhdGFUeXBlKGNvbXBvbmVudCksXHJcbiAgICAgIGZvcm1hdDogdGhpcy5nZXRGb3JtYXQoY29tcG9uZW50KSxcclxuICAgICAgbWluV2lkdGg6IDE2MFxyXG4gICAgfVxyXG5cclxuICAgIGlmIChkYXRhVHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIGNvbHVtbi5jYWxjdWxhdGVDZWxsVmFsdWUgPSAocm93RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSByb3dEYXRhW2NvbXBvbmVudC5zeXNOYW1lXTtcclxuICAgICAgICAvLyDQldGB0LvQuCB0cnVlIOKAlCDQlNCwLCDQtdGB0LvQuCBmYWxzZSwgXCJcIiDQuNC70LggbnVsbCDigJQg0J3QtdGCXHJcbiAgICAgICAgcmV0dXJuICEhdmFsdWU7IFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgY29sdW1uLmxvb2t1cCA9IHtcclxuICAgICAgICBkYXRhU291cmNlOiBbXHJcbiAgICAgICAgICB7IHZhbHVlOiB0cnVlLCBkaXNwbGF5VmFsdWU6ICfQlNCwJyB9LFxyXG4gICAgICAgICAgeyB2YWx1ZTogZmFsc2UsIGRpc3BsYXlWYWx1ZTogJ9Cd0LXRgicgfVxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgdmFsdWVFeHByOiAndmFsdWUnLFxyXG4gICAgICAgIGRpc3BsYXlFeHByOiAnZGlzcGxheVZhbHVlJ1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNldHRpbmdzLm9wdGlvbnMuZ3JvdXBzLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBmaW5kSWR4ID0gdGhpcy5zZXR0aW5ncy5vcHRpb25zLmdyb3Vwcy5maW5kSW5kZXgoeCA9PiB4ID09PSBjb21wb25lbnQuc3lzTmFtZSk7XHJcblxyXG4gICAgICBpZiAoZmluZElkeCAhPT0gLTEpIHtcclxuICAgICAgICBjb2x1bW4uZ3JvdXBJbmRleCA9IGZpbmRJZHhcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb2x1bW5cclxuICB9XHJcbn1cclxuIiwiQGlmIChzZXR0aW5ncykge1xyXG4gIDxkaXYgY2xhc3M9XCJpbnB1dC10YWJsZS1jb250ZW50IHctMTAwXCI+XHJcbiAgICBAaWYgKHNldHRpbmdzLm9wdGlvbnMubGFiZWwpIHtcclxuICAgICAgPG1yeC1sYWJlbFxyXG4gICAgICAgIFtyZXF1aXJlZF09XCJzZXR0aW5ncy5vcHRpb25zLnJlcXVpcmVkXCJcclxuICAgICAgICBbdG9vbHRpcF09XCJzZXR0aW5ncy5vcHRpb25zLnRvb2x0aXAgfHwgJydcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgc2V0dGluZ3Mub3B0aW9ucy5sYWJlbCB9fVxyXG4gICAgICA8L21yeC1sYWJlbD5cclxuICAgIH1cclxuXHJcbiAgICA8ZHgtZGF0YS1ncmlkXHJcbiAgICAgICNkYXRhR3JpZFxyXG4gICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcclxuICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgIG5vRGF0YVRleHQ9XCLQndC10YIg0LTQsNC90L3Ri9GFXCJcclxuICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJVwiXHJcbiAgICAgIFt3b3JkV3JhcEVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiXHJcbiAgICAgIFtjbGFzcy5ub0RhdGFdPVwiaXNSZWROb0RhdGFcIlxyXG4gICAgPlxyXG4gICAgICA8ZHhvLXRvb2xiYXI+XHJcbiAgICAgICAgPGR4aS1pdGVtIGxvY2F0aW9uPVwiYWZ0ZXJcIj5cclxuICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGUgY2xhc3M9XCJhZGQtcm93XCI+XHJcbiAgICAgICAgICAgIDxtcngtYnV0dG9uXHJcbiAgICAgICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgICAgIFt0eXBlXT1cIidzZWNvbmRhcnknXCJcclxuICAgICAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCInbWItMydcIlxyXG4gICAgICAgICAgICAgIChtcnhDbGljayk9XCJjcmVhdGVSb3coKVwiXHJcbiAgICAgICAgICAgID57e3NldHRpbmdzLm9wdGlvbnMuYWRkQnRuVGl0bGV9fVxyXG4gICAgICAgICAgICA8L21yeC1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4aS1pdGVtPlxyXG4gICAgICA8L2R4by10b29sYmFyPlxyXG5cclxuICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBidXR0b25EYXRhIG9mICdlZGl0QnV0dG9uVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWVkaXQgaWNvbi1mb250LTE2IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImVkaXRSb3coYnV0dG9uRGF0YSlcIj48L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBidXR0b25EYXRhIG9mICdkZWxldGVCdXR0b25UZW1wbGF0ZSdcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tZGVsZXRlIGljb24tZm9udC0xNiBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJkZWxldGVSb3coYnV0dG9uRGF0YSlcIj48L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgQGlmIChkYXRhU291cmNlLmxlbmd0aCkge1xyXG4gICAgICAgIDxkeG8tc3VtbWFyeT5cclxuICAgICAgICAgIEBmb3IgKGNvbXBvbmVudCBvZiBzZXR0aW5ncy5jb21wb25lbnRzOyB0cmFjayBjb21wb25lbnQuaWQ7IGxldCBmaXJzdCA9ICRmaXJzdCkge1xyXG4gICAgICAgICAgICBAaWYgKCFmaXJzdCkge1xyXG4gICAgICAgICAgICAgIEBpZiAoc2hvd1RvdGFsKGNvbXBvbmVudCkpIHtcclxuICAgICAgICAgICAgICAgIDxkeGktZ3JvdXAtaXRlbVxyXG4gICAgICAgICAgICAgICAgICBbY29sdW1uXT1cImNvbXBvbmVudC5zeXNOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgc3VtbWFyeVR5cGU9XCJzdW1cIlxyXG4gICAgICAgICAgICAgICAgICBkaXNwbGF5Rm9ybWF0PVwi0JjRgtC+0LPQvjogezB9XCJcclxuICAgICAgICAgICAgICAgICAgW3Nob3dJbkdyb3VwRm9vdGVyXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbYWxpZ25CeUNvbHVtbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2R4aS1ncm91cC1pdGVtPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkeGktdG90YWwtaXRlbSBcclxuICAgICAgICAgICAgICAgICAgW2NvbHVtbl09XCJjb21wb25lbnQuc3lzTmFtZVwiIFxyXG4gICAgICAgICAgICAgICAgICBkaXNwbGF5Rm9ybWF0PVwiezB9XCJcclxuICAgICAgICAgICAgICAgICAgc3VtbWFyeVR5cGU9XCJzdW1cIlxyXG4gICAgICAgICAgICAgICAgPjwvZHhpLXRvdGFsLWl0ZW0+XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBAZm9yIChjb21wb25lbnQgb2YgY29tcG9uZW50LmNvbXBvbmVudHM7IHRyYWNrIGNvbXBvbmVudC5pZCkge1xyXG4gICAgICAgICAgICAgICAgQGlmIChzaG93VG90YWwoY29tcG9uZW50KSkge1xyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWdyb3VwLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICBbY29sdW1uXT1cImNvbXBvbmVudC5zeXNOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5VHlwZT1cInN1bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheUZvcm1hdD1cItCY0YLQvtCz0L46IHswfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dJbkdyb3VwRm9vdGVyXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGlnbkJ5Q29sdW1uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgPC9keGktZ3JvdXAtaXRlbT5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBAZm9yIChjb21wb25lbnQgb2YgY29tcG9uZW50LmNvbXBvbmVudHM7IHRyYWNrIGNvbXBvbmVudC5pZCkge1xyXG4gICAgICAgICAgICAgICAgICBAaWYgKHNob3dUb3RhbChjb21wb25lbnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4aS1ncm91cC1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY29sdW1uXT1cImNvbXBvbmVudC5zeXNOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnlUeXBlPVwic3VtXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlGb3JtYXQ9XCLQmNGC0L7Qs9C+OiB7MH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dJbkdyb3VwRm9vdGVyXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2FsaWduQnlDb2x1bW5dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZHhpLWdyb3VwLWl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgIEBpZiAoaGFzQW55VG90YWwpIHsgXHJcbiAgICAgICAgICAgICAgICA8ZHhpLXRvdGFsLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICBbY29sdW1uXT1cImNvbXBvbmVudC5zeXNOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICBbY3NzQ2xhc3NdPVwiJ3RleHQtYm9sZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5Rm9ybWF0XT1cInNob3dUb3RhbChjb21wb25lbnQpID8gJ3swfScgOiAn0JjQotCe0JPQnidcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdW1tYXJ5VHlwZV09XCJzaG93VG90YWwoY29tcG9uZW50KSA/ICdzdW0nIDogdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAgID48L2R4aS10b3RhbC1pdGVtPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZHhvLXN1bW1hcnk+XHJcbiAgICAgIH1cclxuICAgIDwvZHgtZGF0YS1ncmlkPlxyXG5cclxuICAgIEBpZighIXNldHRpbmdzLm9wdGlvbnMubWF4Um93cykge1xyXG4gICAgICA8bXJ4LWhpbnQtZXJyb3ItbWVzc2FnZVxyXG4gICAgICAgIG1lc3NhZ2U9XCLQnNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtGA0L7Qujoge3sgc2V0dGluZ3Mub3B0aW9ucy5tYXhSb3dzIH19XCJcclxuICAgICAgICBbbWF4VmFsdWVdPVwic2V0dGluZ3Mub3B0aW9ucy5tYXhSb3dzXCJcclxuICAgICAgICBbdmFsdWVdPVwicm93c0NvdW50XCJcclxuICAgICAgPjwvbXJ4LWhpbnQtZXJyb3ItbWVzc2FnZT5cclxuICAgIH1cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI2VkaXRUZW1wbGF0ZSBsZXQtY2VsbEluZm89XCJjZWxsSW5mb1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgc3R5bGU9XCJnYXA6IDRweFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1lZGl0IGljb24tZm9udC0xNiBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJlZGl0Um93KGNlbGxJbmZvKVwiPjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tZGVsZXRlIGljb24tZm9udC0xNiBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJkZWxldGVSb3coY2VsbEluZm8pXCI+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcbn1cclxuXHJcblxyXG4iXX0=
|
package/esm2022/lib/modules/object-form/factories/component-factory/component-factory.directive.mjs
CHANGED
|
@@ -1,39 +1,48 @@
|
|
|
1
1
|
import { Directive, EventEmitter, Input, Output } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class ComponentFactoryDirective {
|
|
4
|
-
constructor(viewContainer) {
|
|
4
|
+
constructor(viewContainer, cdr) {
|
|
5
5
|
this.viewContainer = viewContainer;
|
|
6
|
+
this.cdr = cdr;
|
|
6
7
|
this.values = [];
|
|
7
8
|
this.changed = new EventEmitter();
|
|
8
9
|
}
|
|
9
10
|
ngOnChanges(changes) {
|
|
10
|
-
|
|
11
|
+
// 1. Сначала инициализируем виджет, если сменился тип
|
|
12
|
+
if ('type' in changes && this.type) {
|
|
11
13
|
this.initWidget(this.type);
|
|
12
14
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
// 2. Если компонент уже есть (или только что создался), обновляем все свойства
|
|
16
|
+
if (this.dynamicComponent) {
|
|
17
|
+
if ('data' in changes && this.data) {
|
|
18
|
+
this.dynamicComponent.instance.data = this.data;
|
|
19
|
+
}
|
|
20
|
+
if ('valueMode' in changes && this.valueMode) {
|
|
21
|
+
this.dynamicComponent.instance.valueMode = this.valueMode;
|
|
22
|
+
}
|
|
23
|
+
// Используем currentValue из changes, чтобы быть уверенными в свежести данных
|
|
24
|
+
if ('values' in changes) {
|
|
25
|
+
this.dynamicComponent.instance.values = changes['values'].currentValue;
|
|
26
|
+
}
|
|
27
|
+
// КРИТИЧНО: уведомляем Angular, что в динамическом компоненте обновились данные
|
|
28
|
+
this.dynamicComponent.changeDetectorRef.detectChanges();
|
|
21
29
|
}
|
|
22
30
|
}
|
|
23
31
|
initWidget(type) {
|
|
24
32
|
const componentType = this.map[type];
|
|
25
|
-
if (!componentType)
|
|
33
|
+
if (!componentType)
|
|
26
34
|
return;
|
|
27
|
-
|
|
28
|
-
if (this.dynamicComponent) {
|
|
29
|
-
this.viewContainer.clear();
|
|
30
|
-
this.dynamicComponent = undefined;
|
|
31
|
-
}
|
|
35
|
+
this.viewContainer.clear();
|
|
32
36
|
this.dynamicComponent = this.viewContainer.createComponent(componentType);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
+
// Сразу передаем всё, что есть на момент создания
|
|
38
|
+
const instance = this.dynamicComponent.instance;
|
|
39
|
+
if (this.data)
|
|
40
|
+
instance.data = this.data;
|
|
41
|
+
if (this.values)
|
|
42
|
+
instance.values = this.values;
|
|
43
|
+
if (this.valueMode)
|
|
44
|
+
instance.valueMode = this.valueMode;
|
|
45
|
+
if (this.dynamicComponent && this.dynamicComponent.instance.changed) {
|
|
37
46
|
this.dynamicComponent.instance.changed.subscribe((res) => {
|
|
38
47
|
this.changed.emit(res);
|
|
39
48
|
});
|
|
@@ -54,7 +63,7 @@ export class ComponentFactoryDirective {
|
|
|
54
63
|
this.dynamicComponent.instance.valueMode = valueMode;
|
|
55
64
|
}
|
|
56
65
|
}
|
|
57
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ComponentFactoryDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
66
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ComponentFactoryDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
58
67
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ComponentFactoryDirective, isStandalone: true, selector: "[appComponentFactory]", inputs: { type: "type", data: "data", values: "values", valueMode: "valueMode", map: "map" }, outputs: { changed: "changed" }, usesOnChanges: true, ngImport: i0 }); }
|
|
59
68
|
}
|
|
60
69
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ComponentFactoryDirective, decorators: [{
|
|
@@ -63,7 +72,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
63
72
|
selector: '[appComponentFactory]',
|
|
64
73
|
standalone: true
|
|
65
74
|
}]
|
|
66
|
-
}], ctorParameters: () => [{ type: i0.ViewContainerRef }], propDecorators: { type: [{
|
|
75
|
+
}], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }], propDecorators: { type: [{
|
|
67
76
|
type: Input
|
|
68
77
|
}], data: [{
|
|
69
78
|
type: Input
|
|
@@ -76,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
76
85
|
}], changed: [{
|
|
77
86
|
type: Output
|
|
78
87
|
}] } });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWZhY3RvcnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LWZvcm0vc3JjL2xpYi9tb2R1bGVzL29iamVjdC1mb3JtL2ZhY3Rvcmllcy9jb21wb25lbnQtZmFjdG9yeS9jb21wb25lbnQtZmFjdG9yeS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFBRSxZQUFZLEVBQ3ZCLEtBQUssRUFFTCxNQUFNLEVBSVAsTUFBTSxlQUFlLENBQUM7O0FBV3ZCLE1BQU0sT0FBTyx5QkFBeUI7SUFXcEMsWUFDVSxhQUErQixFQUMvQixHQUFzQjtRQUR0QixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFWdkIsV0FBTSxHQUFpQixFQUFFLENBQUM7UUFJbEIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUErQyxDQUFDO0lBUTNGLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsc0RBQXNEO1FBQ3RELElBQUksTUFBTSxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUVELCtFQUErRTtRQUMvRSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFCLElBQUksTUFBTSxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDbEQsQ0FBQztZQUVELElBQUksV0FBVyxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDNUQsQ0FBQztZQUVELDhFQUE4RTtZQUM5RSxJQUFJLFFBQVEsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUN6RSxDQUFDO1lBRUQsZ0ZBQWdGO1lBQ2hGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxRCxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFtQjtRQUM1QixNQUFNLGFBQWEsR0FBNEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU87UUFFM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFMUUsa0RBQWtEO1FBQ2xELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7UUFDaEQsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUFFLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN6QyxJQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQy9DLElBQUksSUFBSSxDQUFDLFNBQVM7WUFBRSxRQUFRLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFFeEQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFnRCxFQUFFLEVBQUU7Z0JBQ3BHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsSUFBd0I7UUFDaEMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDN0MsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsTUFBb0I7UUFDOUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDakQsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsU0FBNEI7UUFDekMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7K0dBL0VVLHlCQUF5QjttR0FBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjtxSEFFVSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFFVyxPQUFPO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnRSZWYsXHJcbiAgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFR5cGUsXHJcbiAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkLWZvcm0vZW51bXMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRNb2RlbEJhc2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQtZm9ybS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRzTWFwVHlwZSB9IGZyb20gJy4vZW51bXMvY29tcG9uZW50LmVudW0nO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbXBvbmVudCB9IGZyb20gJy4vbW9kZWxzL2NvbXBvbmVudC5tb2RlbCc7XHJcbmltcG9ydCB7IENvbXBvbmVudFZhbHVlTW9kZWwsIFZhbHVlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbYXBwQ29tcG9uZW50RmFjdG9yeV0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEZhY3RvcnlEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIHR5cGU/OiBDb21wb25lbnRUeXBlO1xyXG4gIEBJbnB1dCgpIGRhdGE/OiBDb21wb25lbnRNb2RlbEJhc2U7XHJcbiAgQElucHV0KCkgdmFsdWVzOiBWYWx1ZU1vZGVsW10gPSBbXTtcclxuICBASW5wdXQoKSB2YWx1ZU1vZGU/OiAnYXV0bycgfCAnbWFudWFsJztcclxuICBASW5wdXQoKSBtYXAhOiBDb21wb25lbnRzTWFwVHlwZTtcclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDb21wb25lbnRWYWx1ZU1vZGVsIHwgQ29tcG9uZW50VmFsdWVNb2RlbFtdPigpO1xyXG5cclxuICBkeW5hbWljQ29tcG9uZW50PzogQ29tcG9uZW50UmVmPEFic3RyYWN0Q29tcG9uZW50PjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIC8vIDEuINCh0L3QsNGH0LDQu9CwINC40L3QuNGG0LjQsNC70LjQt9C40YDRg9C10Lwg0LLQuNC00LbQtdGCLCDQtdGB0LvQuCDRgdC80LXQvdC40LvRgdGPINGC0LjQv1xyXG4gICAgaWYgKCd0eXBlJyBpbiBjaGFuZ2VzICYmIHRoaXMudHlwZSkge1xyXG4gICAgICB0aGlzLmluaXRXaWRnZXQodGhpcy50eXBlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAyLiDQldGB0LvQuCDQutC+0LzQv9C+0L3QtdC90YIg0YPQttC1INC10YHRgtGMICjQuNC70Lgg0YLQvtC70YzQutC+INGH0YLQviDRgdC+0LfQtNCw0LvRgdGPKSwg0L7QsdC90L7QstC70Y/QtdC8INCy0YHQtSDRgdCy0L7QudGB0YLQstCwXHJcbiAgICBpZiAodGhpcy5keW5hbWljQ29tcG9uZW50KSB7XHJcbiAgICAgIGlmICgnZGF0YScgaW4gY2hhbmdlcyAmJiB0aGlzLmRhdGEpIHtcclxuICAgICAgICB0aGlzLmR5bmFtaWNDb21wb25lbnQuaW5zdGFuY2UuZGF0YSA9IHRoaXMuZGF0YTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgaWYgKCd2YWx1ZU1vZGUnIGluIGNoYW5nZXMgJiYgdGhpcy52YWx1ZU1vZGUpIHtcclxuICAgICAgICB0aGlzLmR5bmFtaWNDb21wb25lbnQuaW5zdGFuY2UudmFsdWVNb2RlID0gdGhpcy52YWx1ZU1vZGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vINCY0YHQv9C+0LvRjNC30YPQtdC8IGN1cnJlbnRWYWx1ZSDQuNC3IGNoYW5nZXMsINGH0YLQvtCx0Ysg0LHRi9GC0Ywg0YPQstC10YDQtdC90L3Ri9C80Lgg0LIg0YHQstC10LbQtdGB0YLQuCDQtNCw0L3QvdGL0YVcclxuICAgICAgaWYgKCd2YWx1ZXMnIGluIGNoYW5nZXMpIHtcclxuICAgICAgICB0aGlzLmR5bmFtaWNDb21wb25lbnQuaW5zdGFuY2UudmFsdWVzID0gY2hhbmdlc1sndmFsdWVzJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyDQmtCg0JjQotCY0KfQndCeOiDRg9Cy0LXQtNC+0LzQu9GP0LXQvCBBbmd1bGFyLCDRh9GC0L4g0LIg0LTQuNC90LDQvNC40YfQtdGB0LrQvtC8INC60L7QvNC/0L7QvdC10L3RgtC1INC+0LHQvdC+0LLQuNC70LjRgdGMINC00LDQvdC90YvQtVxyXG4gICAgICB0aGlzLmR5bmFtaWNDb21wb25lbnQuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdFdpZGdldCh0eXBlOiBDb21wb25lbnRUeXBlKSB7XHJcbiAgICBjb25zdCBjb21wb25lbnRUeXBlOiBUeXBlPEFic3RyYWN0Q29tcG9uZW50PiA9IHRoaXMubWFwW3R5cGVdO1xyXG4gICAgaWYgKCFjb21wb25lbnRUeXBlKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XHJcbiAgICB0aGlzLmR5bmFtaWNDb21wb25lbnQgPSB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFR5cGUpO1xyXG5cclxuICAgIC8vINCh0YDQsNC30YMg0L/QtdGA0LXQtNCw0LXQvCDQstGB0ZEsINGH0YLQviDQtdGB0YLRjCDQvdCwINC80L7QvNC10L3RgiDRgdC+0LfQtNCw0L3QuNGPXHJcbiAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuZHluYW1pY0NvbXBvbmVudC5pbnN0YW5jZTtcclxuICAgIGlmICh0aGlzLmRhdGEpIGluc3RhbmNlLmRhdGEgPSB0aGlzLmRhdGE7XHJcbiAgICBpZiAodGhpcy52YWx1ZXMpIGluc3RhbmNlLnZhbHVlcyA9IHRoaXMudmFsdWVzO1xyXG4gICAgaWYgKHRoaXMudmFsdWVNb2RlKSBpbnN0YW5jZS52YWx1ZU1vZGUgPSB0aGlzLnZhbHVlTW9kZTtcclxuXHJcbiAgICBpZiAodGhpcy5keW5hbWljQ29tcG9uZW50ICYmIHRoaXMuZHluYW1pY0NvbXBvbmVudC5pbnN0YW5jZS5jaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuZHluYW1pY0NvbXBvbmVudC5pbnN0YW5jZS5jaGFuZ2VkLnN1YnNjcmliZSgocmVzOiBDb21wb25lbnRWYWx1ZU1vZGVsIHwgQ29tcG9uZW50VmFsdWVNb2RlbFtdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQocmVzKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseURhdGEoZGF0YTogQ29tcG9uZW50TW9kZWxCYXNlKSB7XHJcbiAgICBpZiAodGhpcy5keW5hbWljQ29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuZHluYW1pY0NvbXBvbmVudC5pbnN0YW5jZS5kYXRhID0gZGF0YTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFwcGx5VmFsdWVzKHZhbHVlczogVmFsdWVNb2RlbFtdKSB7XHJcbiAgICBpZiAodGhpcy5keW5hbWljQ29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuZHluYW1pY0NvbXBvbmVudC5pbnN0YW5jZS52YWx1ZXMgPSB2YWx1ZXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseVZhbHVlTW9kZSh2YWx1ZU1vZGU6ICdhdXRvJyB8ICdtYW51YWwnKSB7XHJcbiAgICBpZiAodGhpcy5keW5hbWljQ29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuZHluYW1pY0NvbXBvbmVudC5pbnN0YW5jZS52YWx1ZU1vZGUgPSB2YWx1ZU1vZGU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1041,39 +1041,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1041
1041
|
}], ctorParameters: () => [{ type: i1$1.Router }] });
|
|
1042
1042
|
|
|
1043
1043
|
class ComponentFactoryDirective {
|
|
1044
|
-
constructor(viewContainer) {
|
|
1044
|
+
constructor(viewContainer, cdr) {
|
|
1045
1045
|
this.viewContainer = viewContainer;
|
|
1046
|
+
this.cdr = cdr;
|
|
1046
1047
|
this.values = [];
|
|
1047
1048
|
this.changed = new EventEmitter();
|
|
1048
1049
|
}
|
|
1049
1050
|
ngOnChanges(changes) {
|
|
1050
|
-
|
|
1051
|
+
// 1. Сначала инициализируем виджет, если сменился тип
|
|
1052
|
+
if ('type' in changes && this.type) {
|
|
1051
1053
|
this.initWidget(this.type);
|
|
1052
1054
|
}
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1055
|
+
// 2. Если компонент уже есть (или только что создался), обновляем все свойства
|
|
1056
|
+
if (this.dynamicComponent) {
|
|
1057
|
+
if ('data' in changes && this.data) {
|
|
1058
|
+
this.dynamicComponent.instance.data = this.data;
|
|
1059
|
+
}
|
|
1060
|
+
if ('valueMode' in changes && this.valueMode) {
|
|
1061
|
+
this.dynamicComponent.instance.valueMode = this.valueMode;
|
|
1062
|
+
}
|
|
1063
|
+
// Используем currentValue из changes, чтобы быть уверенными в свежести данных
|
|
1064
|
+
if ('values' in changes) {
|
|
1065
|
+
this.dynamicComponent.instance.values = changes['values'].currentValue;
|
|
1066
|
+
}
|
|
1067
|
+
// КРИТИЧНО: уведомляем Angular, что в динамическом компоненте обновились данные
|
|
1068
|
+
this.dynamicComponent.changeDetectorRef.detectChanges();
|
|
1061
1069
|
}
|
|
1062
1070
|
}
|
|
1063
1071
|
initWidget(type) {
|
|
1064
1072
|
const componentType = this.map[type];
|
|
1065
|
-
if (!componentType)
|
|
1073
|
+
if (!componentType)
|
|
1066
1074
|
return;
|
|
1067
|
-
|
|
1068
|
-
if (this.dynamicComponent) {
|
|
1069
|
-
this.viewContainer.clear();
|
|
1070
|
-
this.dynamicComponent = undefined;
|
|
1071
|
-
}
|
|
1075
|
+
this.viewContainer.clear();
|
|
1072
1076
|
this.dynamicComponent = this.viewContainer.createComponent(componentType);
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
+
// Сразу передаем всё, что есть на момент создания
|
|
1078
|
+
const instance = this.dynamicComponent.instance;
|
|
1079
|
+
if (this.data)
|
|
1080
|
+
instance.data = this.data;
|
|
1081
|
+
if (this.values)
|
|
1082
|
+
instance.values = this.values;
|
|
1083
|
+
if (this.valueMode)
|
|
1084
|
+
instance.valueMode = this.valueMode;
|
|
1085
|
+
if (this.dynamicComponent && this.dynamicComponent.instance.changed) {
|
|
1077
1086
|
this.dynamicComponent.instance.changed.subscribe((res) => {
|
|
1078
1087
|
this.changed.emit(res);
|
|
1079
1088
|
});
|
|
@@ -1094,7 +1103,7 @@ class ComponentFactoryDirective {
|
|
|
1094
1103
|
this.dynamicComponent.instance.valueMode = valueMode;
|
|
1095
1104
|
}
|
|
1096
1105
|
}
|
|
1097
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ComponentFactoryDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1106
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ComponentFactoryDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1098
1107
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ComponentFactoryDirective, isStandalone: true, selector: "[appComponentFactory]", inputs: { type: "type", data: "data", values: "values", valueMode: "valueMode", map: "map" }, outputs: { changed: "changed" }, usesOnChanges: true, ngImport: i0 }); }
|
|
1099
1108
|
}
|
|
1100
1109
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ComponentFactoryDirective, decorators: [{
|
|
@@ -1103,7 +1112,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1103
1112
|
selector: '[appComponentFactory]',
|
|
1104
1113
|
standalone: true
|
|
1105
1114
|
}]
|
|
1106
|
-
}], ctorParameters: () => [{ type: i0.ViewContainerRef }], propDecorators: { type: [{
|
|
1115
|
+
}], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }], propDecorators: { type: [{
|
|
1107
1116
|
type: Input
|
|
1108
1117
|
}], data: [{
|
|
1109
1118
|
type: Input
|
|
@@ -2181,7 +2190,7 @@ class InputTableComponent {
|
|
|
2181
2190
|
});
|
|
2182
2191
|
}
|
|
2183
2192
|
deleteRow(event) {
|
|
2184
|
-
const findRow = this.model.data.find(item => item.id === event.row.data.id);
|
|
2193
|
+
const findRow = structuredClone(this.model.data.find(item => item.id === event.row.data.id));
|
|
2185
2194
|
if (findRow) {
|
|
2186
2195
|
this.model.data = this.model.data.filter(item => item.id !== event.row.data.id);
|
|
2187
2196
|
this._initDataSource(this.model.data);
|