ets-fe-ng-sdk 18.0.99 → 18.0.101
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/Shared/components/form-generator/form-generator.component.mjs +1 -2
- package/esm2022/lib/Shared/components/input/input-basic.component.mjs +3 -2
- package/esm2022/lib/Shared/components/table/table-input/table-input-row/table-input-row.component.mjs +3 -3
- package/esm2022/lib/Shared/components/table/table-input/table-input.component.mjs +23 -3
- package/esm2022/lib/Shared/components/table/table-input/table-input.model.mjs +2 -0
- package/fesm2022/ets-fe-ng-sdk.mjs +26 -7
- package/fesm2022/ets-fe-ng-sdk.mjs.map +1 -1
- package/lib/Services/utility.service.d.ts +1 -1
- package/lib/Shared/components/btn/btn.component.d.ts +3 -3
- package/lib/Shared/components/form-generator/form-generated-value/form-generated-value.component.d.ts +3 -3
- package/lib/Shared/components/form-generator/form-generator.component.d.ts +12 -12
- package/lib/Shared/components/index-comp-layout/index-comp-layout.component.d.ts +1 -1
- package/lib/Shared/components/info-dialog/info-dialog.component.d.ts +1 -1
- package/lib/Shared/components/input/input-basic.component.d.ts +1 -1
- package/lib/Shared/components/table/table-https/table-https.component.d.ts +3 -3
- package/lib/Shared/components/table/table-input/table-input-row/table-input-row.component.d.ts +2 -1
- package/lib/Shared/components/table/table-input/table-input.component.d.ts +22 -12
- package/lib/Shared/components/table/table-input/table-input.model.d.ts +8 -0
- package/lib/Shared/components/text-case-2/text-case-2.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -161,7 +161,6 @@ export class FormGeneratorComponent extends BaseFormGenerator {
|
|
|
161
161
|
}
|
|
162
162
|
handleOptionsFetched(scheme, options$) {
|
|
163
163
|
options$.subscribe((r) => {
|
|
164
|
-
// scheme.options = r;
|
|
165
164
|
this.updateFormSchema(scheme.field, { options: r });
|
|
166
165
|
});
|
|
167
166
|
}
|
|
@@ -252,4 +251,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
252
251
|
type: Input,
|
|
253
252
|
args: ['isShow']
|
|
254
253
|
}] } });
|
|
255
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWdlbmVyYXRvci9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUdULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxTQUFTLEVBQVcsTUFBTSxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQVEsU0FBUyxFQUFPLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsbUJBQW1CLEVBQW1CLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1B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QVM7K0JBQ0UsZ0JBQWdCLGNBR2QsSUFBSSxXQUVQO3dCQUNQLGVBQWU7d0JBQ2YsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsMEJBQTBCO3dCQUMxQixxQkFBcUI7d0JBQ3JCLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLHlCQUF5Qjt3QkFDekIsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsU0FBUztxQkFDVjt3REFLUSxRQUFRO3NCQUFoQixLQUFLO2dCQU9JLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFFRyxLQUFLO3NCQUFkLE1BQU07Z0JBQ0UsVUFBVTtzQkFBbEIsS0FBSztnQkFxQzhCLFdBQVc7c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUdZLGlCQUFpQjtzQkFBMUQsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRTtnQkFhZixPQUFPO3NCQUEzQixLQUFLO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBGb3Jtc01vZHVsZSxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBsYXN0LCBzd2l0Y2hNYXAsIHRhcCwgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGdW5jdGlvbkNhbGxlcjIsIFRvQW55UGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3V0aWxpdHkucGlwZSc7XG5pbXBvcnQgeyBCdG5Db21wb25lbnQgfSBmcm9tICcuLi9idG4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dEJhc2ljQ29tcG9uZW50LCBPcHRpb25MYWJlbFR5cGUgfSBmcm9tICcuLi9pbnB1dC9pbnB1dC1iYXNpYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC92YWxpZGF0aW9uLW1lc3NhZ2UvdmFsaWRhdGlvbi1tZXNzYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaG9uZU51bWJlckNvbXBvbmVudCB9IGZyb20gJy4uL3Bob25lLW51bWJlci9waG9uZS1udW1iZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTmdTd2l0Y2hEZWZhdWx0LCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0U3ViVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBSaWNoVGV4dEVkaXRvclJGQ29tcG9uZW50IH0gZnJvbSAnLi4vcmljaC10ZXh0LWVkaXRvci1yZi9yaWNoLXRleHQtZWRpdG9yLXJmLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtR2VuZXJhdG9yU2VydmljZSB9IGZyb20gJy4vZm9ybS1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlRm9ybUdlbmVyYXRvciwgSUJhc2VGb3JtU2NoZW1hIH0gZnJvbSAnLi9mb3JtLWdlbmVyYXRvci5iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuLyoqXG4gKiBGb3JtIHNob3VsZCBiZSBzZXQgYmVmb3JlIHRoZSB0aGUgZm9ybVNjaGVtYVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb3JtLWdlbmVyYXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIC8vICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIExvYWRlckNvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUGhvbmVOdW1iZXJDb21wb25lbnQsXG4gICAgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQsXG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgIE5nU3dpdGNoRGVmYXVsdCxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIElucHV0QmFzaWNDb21wb25lbnQsXG4gICAgUmljaFRleHRFZGl0b3JSRkNvbXBvbmVudCxcbiAgICBCdG5Db21wb25lbnQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGdW5jdGlvbkNhbGxlcjIsXG4gICAgVG9BbnlQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtR2VuZXJhdG9yQ29tcG9uZW50PFxuICBURm9ybUdyb3VwIGV4dGVuZHMgeyBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PiB9LFxuPiBleHRlbmRzIEJhc2VGb3JtR2VuZXJhdG9yPFRGb3JtR3JvdXAsIElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+PiB7XG4gIEBJbnB1dCgpIGtleUZpZWxkOiAnZmllbGQnIHwgJ2xhYmVsJyA9ICdmaWVsZCc7XG4gIHJlYWRvbmx5IHByZXNldFZhbHVlRm9yU2luZ2xlT3B0aW9uID0gaW5wdXQoZmFsc2UpO1xuICByZWFkb25seSBpc0NyZWF0ZSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IHN1Ym1pdE9uRW50ZXJLZXkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGZvcm1UYWdSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRm9ybUVsZW1lbnQ+PignZm9ybVRhZycpO1xuXG4gIC8qKkVtaXR0ZWQganVzdCBiZWZvcmUgY2FsbGluZyB0aGUgc2F2ZSBmdW5jdGlvbiAqL1xuICBAT3V0cHV0KCkgb25TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1jaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLyoqRW1pdHRlZCBhZnRlciByZWNlaXZpbmcgZmVlZGJhY2sgZnJvbSB0aGUgc3VibWl0IGZ1bmN0aW9uICovXG4gIEBPdXRwdXQoKSBzYXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBzdWJtaXRGdW5jOiAodmFsdWU6IGFueSkgPT4gUHJvbWlzZTxhbnk+O1xuICByZWFkb25seSBzdWJtaXRCdG5UZXh0ID0gaW5wdXQoJ1N1Ym1pdCcpO1xuICByZWFkb25seSBzdWJtaXRCdG5UZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIHJlYWRvbmx5IHN1Ym1pdFN1Y2Nlc3NUZXh0ID0gaW5wdXQoJ1NhdmVkIHN1Y2Nlc3NmdWxseScpO1xuICByZWFkb25seSBzaG93U3VibWl0QnRuID0gaW5wdXQodHJ1ZSk7XG5cbiAgcmVhZG9ubHkgZ3JpZFN0eWxlID0gaW5wdXQ8bnVtYmVyIHwgJ2F1dG8nPigpO1xuICByZWFkb25seSBncmlkTURTdHlsZSA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oKTtcbiAgcmVhZG9ubHkgZ3JpZExHU3R5bGUgPSBpbnB1dDxudW1iZXIgfCAnYXV0byc+KCk7XG4gIHJlYWRvbmx5IGdyaWRYWExTdHlsZSA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oKTtcblxuICByZWFkb25seSBmb3JtR3JpZENsYXNzID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSB1c2VMb2FkZXIgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBsb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICByZWFkb25seSBfbG9hZGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgY29tcHV0ZWRMb2FkaW5nID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnVzZUxvYWRlcigpID8gdGhpcy5sb2FkaW5nKCkgfHwgdGhpcy5fbG9hZGluZygpIDogZmFsc2UsXG4gICk7XG5cbiAgcmVhZG9ubHkgc3VibWl0QnRuUmVmID0gdmlld0NoaWxkPEJ0bkNvbXBvbmVudD4oJ3N1Ym1pdEJ0bicpO1xuICByZWFkb25seSBmb3JtID0gbW9kZWw8Rm9ybUdyb3VwPFRGb3JtR3JvdXA+PigpO1xuXG4gIHJlYWRvbmx5IGZvcm1WYWx1ZSA9IHRvU2lnbmFsKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmZvcm0pLnBpcGUoXG4gICAgICBmaWx0ZXIoKCkgPT4gISF0aGlzLmZvcm0oKSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgdGhpcy5mb3JtKClcbiAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUobWFwKCgpID0+IHRoaXMuZm9ybSgpPy5nZXRSYXdWYWx1ZSgpIHx8IHt9KSlcbiAgICAgICAgICAucGlwZShzdGFydFdpdGgodGhpcy5mb3JtKCk/LmdldFJhd1ZhbHVlKCkgfHwge30pKSxcbiAgICAgICksXG4gICAgKSxcbiAgICAvLyB7IGluaXRpYWxWYWx1ZTogdGhpcy5mb3JtKCk/LmdldFJhd1ZhbHVlKCkgfHwge30gfSxcbiAgKTtcblxuICBzdWJtaXNzaW9uUmVzcG9uc2U6IGFueTtcbiAgQElucHV0KHsgYWxpYXM6ICdmb3JtU2NoZW1hJyB9KSBzZXQgX2Zvcm1TY2hlbWEodjogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXSkge1xuICAgIHRoaXMuaW5pdChjbG9uZURlZXAodi5maWx0ZXIoKHgpID0+IHgpKSk7XG4gIH1cbiAgQElucHV0KHsgYWxpYXM6ICdmb3JtU2NoZW1hTm9Gb3JtJyB9KSBzZXQgX2Zvcm1TY2hlbWFOb0Zvcm0odjogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXSkge1xuICAgIGlmICh2KSB7XG4gICAgICBjb25zdCBmb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygdikge1xuICAgICAgICBmb3JtLmFkZENvbnRyb2woXG4gICAgICAgICAgaXRlbS5maWVsZD8udG9TdHJpbmcoKSxcbiAgICAgICAgICBuZXcgRm9ybUNvbnRyb2woaXRlbS52YWx1ZSwgW10uY29uY2F0KGl0ZW0uaXNSZXF1aXJlZCA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSA6IFtdKSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLmZvcm0uc2V0KGZvcm0gYXMgYW55IGFzIEZvcm1Hcm91cDxURm9ybUdyb3VwPik7XG4gICAgICB0aGlzLl9mb3JtU2NoZW1hID0gdjtcbiAgICB9XG4gIH1cbiAgQElucHV0KCdpc1Nob3cnKSBzZXQgX2lzU2hvdyh2OiBib29sZWFuKSB7XG4gICAgaWYgKHYpIHRoaXMuZm9ybSgpPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICBlbHNlIHRoaXMuZm9ybSgpPy5lbmFibGUoKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHYpIHRoaXMuZm9ybSgpPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIGVsc2UgdGhpcy5mb3JtKCk/LmVuYWJsZSgpO1xuICAgIH0sIDUwMCk7XG4gIH1cbiAgcmVhZG9ubHkgb3B0aW9uc01hcCA9IHNpZ25hbDxJRm9ybU9wdGlvbnM+KHt9KTtcbiAgLy8gZm9ybVZhbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZm9ybT8uZ2V0UmF3VmFsdWUoKSk7XG5cbiAgcmVhZG9ubHkgY29tcHV0ZWRGb3JtU2NoZW1hID0gY29tcHV0ZWQ8SUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXT4oKCkgPT4ge1xuICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLmZvcm1TY2hlbWEoKSB8fCBbXSxcbiAgICAgIHByZXNldFZhbHVlRm9yU2luZ2xlT3B0aW9uID0gdGhpcy5wcmVzZXRWYWx1ZUZvclNpbmdsZU9wdGlvbigpLFxuICAgICAgaXNDcmVhdGUgPSB0aGlzLmlzQ3JlYXRlKCksXG4gICAgICByZXQ6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+W10gPSBbXTtcbiAgICBmb3JtU2NoZW1hLmZvckVhY2goKHNjaGVtZSkgPT4ge1xuICAgICAgaWYgKCFzY2hlbWUuaGlkZGVuKSB7XG4gICAgICAgIGlmIChpc0NyZWF0ZSlcbiAgICAgICAgICBzY2hlbWUucHJlc2V0VmFsdWUgPVxuICAgICAgICAgICAgc2NoZW1lLnByZXNldFZhbHVlID09IG51bGwgPyBwcmVzZXRWYWx1ZUZvclNpbmdsZU9wdGlvbiA6IHNjaGVtZS5wcmVzZXRWYWx1ZTtcbiAgICAgICAgcmV0LnB1c2goc2NoZW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAocmV0LnNvbWUoKHgpID0+ICF4LmZpZWxkKSkgZGVidWdnZXI7XG4gICAgcmV0dXJuIHJldDtcbiAgfSk7XG4gIC8vIG1pc2NJbmRleDogVE1pc2NJbmRleDtcbiAgcHVibGljIGZvcm1TZXJ2aWNlID0gaW5qZWN0KEZvcm1HZW5lcmF0b3JTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgbGV0IGxpc3RlblRvS2V5OiBTdWJzY3JpcHRpb247XG4gICAgdGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICBsaXN0ZW5Ub0tleT8udW5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgICAvLyBlZmZlY3QoKCkgPT4ge1xuICAgIC8vICAgY29uc29sZS5sb2codGhpcy5mb3JtU2NoZW1hKCkpO1xuICAgIC8vIH0pO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBmdHIgPSB0aGlzLmZvcm1UYWdSZWYoKSxcbiAgICAgICAgc3VibWl0T25FbnRlcktleSA9IHRoaXMuc3VibWl0T25FbnRlcktleSgpO1xuICAgICAgLy8gZGVidWdnZXI7XG5cbiAgICAgIGxpc3RlblRvS2V5Py51bnN1YnNjcmliZSgpO1xuICAgICAgaWYgKGZ0cj8ubmF0aXZlRWxlbWVudCAmJiBzdWJtaXRPbkVudGVyS2V5KVxuICAgICAgICBsaXN0ZW5Ub0tleSA9IGZyb21FdmVudChmdHIubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgICAgIChyOiBLZXlib2FyZEV2ZW50KSA9PiAoci5jb2RlID09PSAnRW50ZXInIHx8IHIua2V5Q29kZSA9PT0gMTMpICYmIHRoaXMuZm9ybSgpLnZhbGlkLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgocjogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdWJtaXQodGhpcy5zdWJtaXRCdG5SZWYoKSk7XG4gICAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBpbml0KHNjaGVtYTogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXSkge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgIHRoaXMub25EZXN0cm95KCk7XG4gICAgdGhpcy5fc2V0Rm9ybVNjaGVtYXMoc2NoZW1hIHx8IFtdKTtcbiAgICBpZiAoc2NoZW1hKSBmb3IgKGNvbnN0IHNjaGVtZSBvZiBzY2hlbWEpIHRoaXMuaGFuZGxlRm9ybVNjaGVtZShzY2hlbWUpO1xuICAgIGlmIChzY2hlbWEpXG4gICAgICBmb3IgKGNvbnN0IHNjaGVtZSBvZiBzY2hlbWEpXG4gICAgICAgIGlmIChzY2hlbWUudHJpZ2dlck9uQ2hhbmdlT25Jbml0KSB7XG4gICAgICAgICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5mb3JtKCk/LmdldFJhd1ZhbHVlKCk7XG4gICAgICAgICAgc2NoZW1lLm9uQ2hhbmdlRnVuYyhmb3JtVmFsdWUsIGZvcm1WYWx1ZVtzY2hlbWUuZmllbGQ/LnRvU3RyaW5nKCldLCB0aGlzKTtcbiAgICAgICAgfVxuICB9XG5cbiAgaGFuZGxlRm9ybVNjaGVtZShzY2hlbWU6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+KSB7XG4gICAgc2NoZW1lLmlkID0gdGhpcy51dGlsaXR5U2VydmljZS5nZW5lcmF0ZVVVSUQoKTtcbiAgICBpZiAoc2NoZW1lLnN0YWNrZWQgPT0gbnVsbCkgc2NoZW1lLnN0YWNrZWQgPSB0cnVlO1xuICAgIGlmIChzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2cgPT0gbnVsbCkgc2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5mb3JtU2VydmljZS5jb25maWcuc2hvd1ZhbGlkYXRpb25NZXNzYWdlc0J5RGVmYXVsdClcbiAgICAgIGlmIChzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkID09IG51bGwgJiYgKCFzY2hlbWUudmFsdWVGaWVsZCB8fCAhc2NoZW1lLmxhYmVsRmllbGQpKVxuICAgICAgICBzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkID0gdHJ1ZTtcbiAgICAvLyBpZiAoIXRoaXMuZm9ybS5jb250cm9sc1tzY2hlbWUuZmllbGQgYXMgYW55XSkgZGVidWdnZXI7XG4gICAgdGhpcy51cGRhdGVGb3JtU2NoZW1hKHNjaGVtZS5maWVsZCwgc2NoZW1lKTtcblxuICAgIGlmIChzY2hlbWUub3B0aW9uc0luaXRGdW5jKSB0aGlzLmhhbmRsZU9wdGlvbnNGZXRjaGVkKHNjaGVtZSwgc2NoZW1lLm9wdGlvbnNJbml0RnVuYyk7XG4gICAgaWYgKHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMyKSB0aGlzLmhhbmRsZU9wdGlvbnNGZXRjaGVkKHNjaGVtZSwgc2NoZW1lLm9wdGlvbnNJbml0RnVuYzIoKSk7XG4gICAgaWYgKHNjaGVtZS5vbkNoYW5nZUZ1bmMpIHtcbiAgICAgIGlmIChzY2hlbWUuZGVidWcpIGRlYnVnZ2VyO1xuICAgICAgdGhpcy5zdWJzW3NjaGVtZS5maWVsZD8udG9TdHJpbmcoKV0gPSB0aGlzLmZvcm0oKVxuICAgICAgICA/LmNvbnRyb2xzW3NjaGVtZS5maWVsZD8udG9TdHJpbmcoKV0/LnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgwKSlcbiAgICAgICAgLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICAgIHNjaGVtZS5vbkNoYW5nZUZ1bmModGhpcy5mb3JtVmFsdWUoKSwgciwgdGhpcyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVPcHRpb25zRmV0Y2hlZChzY2hlbWU6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+LCBvcHRpb25zJDogT2JzZXJ2YWJsZTxhbnlbXT4pIHtcbiAgICBvcHRpb25zJC5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgIC8vIHNjaGVtZS5vcHRpb25zID0gcjtcbiAgICAgIHRoaXMudXBkYXRlRm9ybVNjaGVtYShzY2hlbWUuZmllbGQsIHsgb3B0aW9uczogciB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGRldGFjaEZvcm1TY2hlbWUoZmllbGROYW1lPzoga2V5b2YgVEZvcm1Hcm91cCkge1xuICAgIHRoaXMuc3Vic1tmaWVsZE5hbWUgYXMgc3RyaW5nXT8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtY2hhbmdlRW1pdHRlcigpIHtcbiAgICB0aGlzLm1jaGFuZ2UuZW1pdCh0aGlzLmZvcm1WYWx1ZSgpKTtcbiAgfVxuXG4gIGdldEZvcm1TY2hlbWUgPSAoZmllbGROYW1lOiBrZXlvZiBURm9ybUdyb3VwKSA9PiB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgcmV0dXJuIHRoaXMuZm9ybVNjaGVtYU1hcCgpW2ZpZWxkTmFtZSBhcyBzdHJpbmddO1xuICB9O1xuXG4gIGFkZFRvRm9ybVNjaGVtYShmb3JtU2NoZW1lOiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPikge1xuICAgIHRoaXMucmVtb3ZlRnJvbUZvcm1TY2hlbWEoZm9ybVNjaGVtZS5maWVsZCk7XG4gICAgdGhpcy5oYW5kbGVGb3JtU2NoZW1lKGZvcm1TY2hlbWUpO1xuICB9XG5cbiAgdXBkYXRlRm9ybVNjaGVtYShmaWVsZE5hbWU6IGtleW9mIFRGb3JtR3JvdXAsIHNjaGVtZTogUGFydGlhbDxJRm9ybVNjaGVtYTxURm9ybUdyb3VwPj4pIHtcbiAgICByZXR1cm4gc3VwZXIuX3VwZGF0ZUZvcm1TY2hlbWEoZmllbGROYW1lIGFzIHN0cmluZywgc2NoZW1lKTtcbiAgfVxuICB1cGRhdGVBbGxGb3JtU2NoZW1hKG1hcDogKGZvcm1GaWVsZDogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD4pID0+IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+KSB7XG4gICAgcmV0dXJuIHN1cGVyLl91cGRhdGVBbGxGb3JtU2NoZW1hKG1hcCk7XG4gIH1cblxuICByZW1vdmVGcm9tRm9ybVNjaGVtYShmaWVsZE5hbWU6IGtleW9mIFRGb3JtR3JvdXApIHtcbiAgICB0aGlzLmRldGFjaEZvcm1TY2hlbWUoZmllbGROYW1lKTtcbiAgICBjb25zdCBvblJlbW92ZSA9IHRoaXMuZm9ybVNjaGVtYU1hcCgpW2ZpZWxkTmFtZSBhcyBzdHJpbmddPy5vblJlbW92ZUZ1bmM7XG4gICAgaWYgKG9uUmVtb3ZlKSBvblJlbW92ZSh0aGlzLmZvcm1WYWx1ZSgpIGFzIGFueSwgdGhpcy5mb3JtVmFsdWUoKVtmaWVsZE5hbWUgYXMgYW55XSwgdGhpcyk7XG4gICAgdGhpcy5fcmVtb3ZlRm9ybVNjaGVtYShmaWVsZE5hbWUgYXMgc3RyaW5nKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRPcHRpb25MYWJlbCgkZXZlbnQ6IGFueSwgc2NoZW1lOiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPikge1xuICAgIHNjaGVtZS5zZWxlY3RlZE9wdGlvbkxhYmVsID0gJGV2ZW50O1xuICB9XG5cbiAgYXN5bmMgc3VibWl0KGJ0bj86IEJ0bkNvbXBvbmVudCkge1xuICAgIGlmICh0aGlzLnN1Ym1pdEZ1bmMpIHtcbiAgICAgIGJ0bj8uc2V0TG9hZGVyKHRydWUpO1xuICAgICAgdGhpcy5fbG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICBjb25zdCBmb3JtVmFsID0gdGhpcy5mb3JtVmFsdWUoKTtcbiAgICAgIHRoaXMub25TdWJtaXQuZW1pdChmb3JtVmFsKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuc3VibWlzc2lvblJlc3BvbnNlID0gYXdhaXQgdGhpcy5zdWJtaXRGdW5jKGZvcm1WYWwpO1xuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLmluZm8odGhpcy5zdWJtaXRTdWNjZXNzVGV4dCgpLCAxKTtcbiAgICAgICAgdGhpcy5zYXZlZC5lbWl0KHRoaXMuc3VibWlzc2lvblJlc3BvbnNlKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2UuaW5mbyhlcnJvciwgMCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICBidG4/LnNldExvYWRlcihmYWxzZSk7XG4gICAgfSBlbHNlIHRoaXMub25TdWJtaXQuZW1pdCh0aGlzLmZvcm1WYWx1ZSgpKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtU2NoZW1hPFxuICBURm9ybUdyb3VwIGV4dGVuZHMge1xuICAgIFtLIGluIGtleW9mIFRGb3JtR3JvdXBdOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+O1xuICB9ID0gYW55LFxuPiBleHRlbmRzIElCYXNlRm9ybVNjaGVtYTxURm9ybUdyb3VwLCBGb3JtR2VuZXJhdG9yQ29tcG9uZW50PFRGb3JtR3JvdXA+PiB7XG4gIGNoaWxkcmVuPzogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXTtcbiAgbGFiZWxUeXBlPzogT3B0aW9uTGFiZWxUeXBlO1xuICBmaWVsZDoga2V5b2YgVEZvcm1Hcm91cDtcbiAgc3ViVHlwZT86IElucHV0U3ViVHlwZTtcbiAgcHJlc2V0VmFsdWU/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBJRm9ybVNjaGVtYTI8VFN0cnVjdCA9IGFueT5cbiAgZXh0ZW5kcyBJRm9ybVNjaGVtYTx7XG4gICAgW0sgaW4ga2V5b2YgVFN0cnVjdF0/OiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+O1xuICB9PiB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtT3B0aW9ucyB7XG4gIFtmaWVsZDogc3RyaW5nXTogYW55O1xufVxuIiwiPCEtLSB7e2Zvcm1WYWx1ZSgpfGpzb259fVxue3tmb3JtVmFsaWQoKXxqc29ufX0gLS0+XG48bG9hZGVyIFtsb2FkaW5nXT1cImNvbXB1dGVkTG9hZGluZygpXCI+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybSgpXCIgI2Zvcm1UYWc+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJyb3cgcm93LWNvbHMte3sgZ3JpZFN0eWxlKCkgfX0gcm93LWNvbHMtbWQte3sgZ3JpZE1EU3R5bGUoKSB9fSByb3ctY29scy1sZy17e1xuICAgICAgICBncmlkTEdTdHlsZSgpXG4gICAgICB9fSByb3ctY29scy14eGwte3sgZ3JpZFhYTFN0eWxlKCkgfX0gYWxpZ24taXRlbXMtY2VudGVyIHt7IGZvcm1HcmlkQ2xhc3MoKSB9fVwiPlxuICAgICAgQGZvciAoc2NoZW1lIG9mIGNvbXB1dGVkRm9ybVNjaGVtYSgpOyB0cmFjayBzY2hlbWUuZmllbGQpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbCB7eyBzY2hlbWUuY2xzIH19IFwiPlxuICAgICAgICAgIEBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAndGVsJykge1xuICAgICAgICAgICAgICA8YXBwLXBob25lLW51bWJlclxuICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtIHx8IGZvcm0oKVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgW2NsZWFyT25EaXNhYmxlXT1cInNjaGVtZS5jbGVhck9uRGlzYWJsZVwiXG4gICAgICAgICAgICAgICAgW3N0YWNrZWRdPVwic2NoZW1lLnN0YWNrZWRcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICAgICAgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdFwiXG4gICAgICAgICAgICAgICAgW3ZlcmJvc2VdPVwic2NoZW1lLnZlcmJvc2VcIlxuICAgICAgICAgICAgICAgIFtkZWJ1Z109XCJzY2hlbWUuZGVidWdcIlxuICAgICAgICAgICAgICAgIChtY2hhbmdlKT1cIm1jaGFuZ2VFbWl0dGVyKClcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb24gfHwgISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbkljb24gfHwgISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgIFtzaG93UmVxdWlyZWRUYWddPVwic2NoZW1lLnNob3dSZXF1aXJlZFRhZ1wiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uTXNnXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbk1zZ1wiIFxuICAgICAgICAgICAgICAgIFtjb3VudHJ5Q29kZTNdPVwic2NoZW1lLmNvdW50cnlDb2RlM1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgc2NoZW1lLmRpc2FibGVkIHx8XG4gICAgICAgICAgICAgICAgICAoc2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IGZvcm1WYWx1ZSgpIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KSlcbiAgICAgICAgICAgICAgICBcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGNhc2UgKHNjaGVtZS50eXBlID09ICdhdXRvY29tcGxldGUnKSB7XG4gICAgICAgICAgICAgIDxhcHAtYXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgICAgW2Zvcm1dPVwic2NoZW1lLmZvcm0gfHwgZm9ybSgpXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCJcbiAgICAgICAgICAgICAgICBbY2xlYXJPbkRpc2FibGVdPVwic2NoZW1lLmNsZWFyT25EaXNhYmxlXCJcbiAgICAgICAgICAgICAgICBbc3RhY2tlZF09XCJzY2hlbWUuc3RhY2tlZFwiXG4gICAgICAgICAgICAgICAgW3ZlcmJvc2VdPVwic2NoZW1lLnZlcmJvc2VcIlxuICAgICAgICAgICAgICAgIFtwcmVzZXRWYWx1ZV09XCJzY2hlbWUucHJlc2V0VmFsdWVcIlxuICAgICAgICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkXCJcbiAgICAgICAgICAgICAgICBbbm9Gb3JtYXRdPVwic2NoZW1lLm5vRm9ybWF0XCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uIHx8ICEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uSWNvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25JY29uIHx8ICEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW2xhYmVsVHlwZV09XCJzY2hlbWUubGFiZWxUeXBlIHwgdG9BbnlcIlxuICAgICAgICAgICAgICAgIChtY2hhbmdlKT1cIm1jaGFuZ2VFbWl0dGVyKClcIlxuICAgICAgICAgICAgICAgIChtU2VsZWN0ZWRPcHRpb25MYWJlbCk9XCJzZXRPcHRpb25MYWJlbCgkZXZlbnQsIHNjaGVtZSlcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICAgICAgW2RlYnVnXT1cInNjaGVtZS5kZWJ1Z1wiXG4gICAgICAgICAgICAgICAgW3NldEZvcm1hdHRlZFZhbHVlXT1cInNjaGVtZS5zZXRDb250cm9sRm9ybWF0dGVkVmFsdWVcIlxuICAgICAgICAgICAgICAgIFtzaG93UmVxdWlyZWRUYWddPVwic2NoZW1lLnNob3dSZXF1aXJlZFRhZ1wiXG4gICAgICAgICAgICAgICAgW29wdGlvbkZvcm1hdHRlcl09XCJzY2hlbWUub3B0aW9uRm9ybWF0dGVyXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNGdW5jXT1cInNjaGVtZS5vcHRpb25zRnVuY1wiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uTXNnXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbk1zZ1wiXG4gICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJzY2hlbWUub3B0aW9ucyB8fCBvcHRpb25zTWFwKClbc2NoZW1lLmZpZWxkIHwgdG9BbnldXCJcbiAgICAgICAgICAgICAgICBbaGludF09XCJzY2hlbWUuaGludFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgc2NoZW1lLmRpc2FibGVkIHx8XG4gICAgICAgICAgICAgICAgICAoc2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IGZvcm1WYWx1ZSgpIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KSlcbiAgICAgICAgICAgICAgICBcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGNhc2UgKHNjaGVtZS50eXBlID09ICdyaWNodGV4dCcpIHtcbiAgICAgICAgICAgICAgPHJpY2gtdGV4dC1lZGl0b3ItcmZcbiAgICAgICAgICAgICAgICBbZm9ybV09XCJzY2hlbWUuZm9ybSB8fCBmb3JtKClcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWwhXCJcbiAgICAgICAgICAgICAgICBbY2xlYXJPbkRpc2FibGVdPVwic2NoZW1lLmNsZWFyT25EaXNhYmxlIVwiXG4gICAgICAgICAgICAgICAgW3N0YWNrZWRdPVwic2NoZW1lLnN0YWNrZWRcIlxuICAgICAgICAgICAgICAgIFt2ZXJib3NlXT1cInNjaGVtZS52ZXJib3NlXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxGaWVsZF09XCJzY2hlbWUubGFiZWxGaWVsZCFcIlxuICAgICAgICAgICAgICAgIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXQhXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uIHx8ICEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uSWNvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25JY29uIHx8ICEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW2xhYmVsVHlwZV09XCJzY2hlbWUubGFiZWxUeXBlIHwgdG9BbnlcIlxuICAgICAgICAgICAgICAgIChtY2hhbmdlKT1cIm1jaGFuZ2VFbWl0dGVyKClcIlxuICAgICAgICAgICAgICAgIChtU2VsZWN0ZWRPcHRpb25MYWJlbCk9XCJzZXRPcHRpb25MYWJlbCgkZXZlbnQsIHNjaGVtZSlcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICAgICAgW2RlYnVnXT1cInNjaGVtZS5kZWJ1ZyFcIlxuICAgICAgICAgICAgICAgIFtzZXRGb3JtYXR0ZWRWYWx1ZV09XCJzY2hlbWUuc2V0Q29udHJvbEZvcm1hdHRlZFZhbHVlXCJcbiAgICAgICAgICAgICAgICBbc2hvd1JlcXVpcmVkVGFnXT1cInNjaGVtZS5zaG93UmVxdWlyZWRUYWchXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXIhXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZCFcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zRnVuY109XCJzY2hlbWUub3B0aW9uc0Z1bmMhXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnXCJcbiAgICAgICAgICAgICAgICBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQhXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJzY2hlbWUub3B0aW9ucyB8fCBvcHRpb25zTWFwKClbc2NoZW1lLmZpZWxkIHwgdG9BbnldXCJcbiAgICAgICAgICAgICAgICBbaGludF09XCJzY2hlbWUuaGludCFcIlxuICAgICAgICAgICAgICAgIFttYXhMZW5ndGhdPVwic2NoZW1lLm1heExlbmd0aFwiXG4gICAgICAgICAgICAgICAgW21pbkxlbmd0aF09XCJzY2hlbWUubWluTGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICBzY2hlbWUuZGlzYWJsZWQgfHxcbiAgICAgICAgICAgICAgICAgIChzY2hlbWUuZGlzYWJsZWRJZiEgfCBmdW5jdGlvbkNhbGxlcjI6IGZvcm1WYWx1ZSgpIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KSlcbiAgICAgICAgICAgICAgICBcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICA8YXBwLWlucHV0LWJhc2ljXG4gICAgICAgICAgICAgICAgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdFwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbZm9ybV09XCJzY2hlbWUuZm9ybSB8fCBmb3JtKClcIlxuICAgICAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgICAgICAgIFt0eXBlXT1cInNjaGVtZS50eXBlXCJcbiAgICAgICAgICAgICAgICBbdmVyYm9zZV09XCJzY2hlbWUudmVyYm9zZVwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwic2NoZW1lLnZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgW3ByZXNldFZhbHVlXT1cInNjaGVtZS5wcmVzZXRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgW3N0YWNrZWRdPVwic2NoZW1lLnN0YWNrZWRcIlxuICAgICAgICAgICAgICAgIFtsYWJlbFR5cGVdPVwic2NoZW1lLmxhYmVsVHlwZSB8IHRvQW55XCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZFNpZ25hbF09XCJzY2hlbWUuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbiB8fCAhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbkljb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uSWNvbiB8fCAhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgICAgICAgIFtkZWJ1Z109XCJzY2hlbWUuZGVidWdcIlxuICAgICAgICAgICAgICAgIChtY2hhbmdlKT1cIm1jaGFuZ2VFbWl0dGVyKClcIlxuICAgICAgICAgICAgICAgIFtzZXRGb3JtYXR0ZWRWYWx1ZV09XCJzY2hlbWUuc2V0Q29udHJvbEZvcm1hdHRlZFZhbHVlXCJcbiAgICAgICAgICAgICAgICBbc2hvd1JlcXVpcmVkVGFnXT1cInNjaGVtZS5zaG93UmVxdWlyZWRUYWdcIlxuICAgICAgICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIlxuICAgICAgICAgICAgICAgIChtU2VsZWN0ZWRPcHRpb25MYWJlbCk9XCJzZXRPcHRpb25MYWJlbCgkZXZlbnQsIHNjaGVtZSlcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zIHx8IG9wdGlvbnNNYXAoKVtzY2hlbWUuZmllbGQgfCB0b0FueV1cIlxuICAgICAgICAgICAgICAgIFtkZWNpbWFsUG9pbnRzXT1cInNjaGVtZS5kZWNpbWFsUG9pbnRzXCJcbiAgICAgICAgICAgICAgICBbaGludF09XCJzY2hlbWUuaGludFwiXG4gICAgICAgICAgICAgICAgW21heF09XCJzY2hlbWUubWF4XCJcbiAgICAgICAgICAgICAgICBbbWluXT1cInNjaGVtZS5taW5cIlxuICAgICAgICAgICAgICAgIFttYXhMZW5ndGhdPVwic2NoZW1lLm1heExlbmd0aFwiXG4gICAgICAgICAgICAgICAgW21pbkxlbmd0aF09XCJzY2hlbWUubWluTGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2NoZW1lLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICBzY2hlbWUuZGlzYWJsZWQgfHxcbiAgICAgICAgICAgICAgICAgIChzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogZm9ybVZhbHVlKCkgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpKVxuICAgICAgICAgICAgICAgIFwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IHJvdy1jb2xzLWF1dG8ganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICBAaWYgKHNob3dTdWJtaXRCdG4oKSkge1xuICAgICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgICBbdGV4dF09XCJzdWJtaXRCdG5UZXh0KClcIlxuICAgICAgICAgICAgZ3JvdXA9XCJzdWJtaXRcIlxuICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybSgpXCJcbiAgICAgICAgICAgIChtY2xpY2spPVwic3VibWl0KHN1Ym1pdEJ0bilcIlxuICAgICAgICAgICAgI3N1Ym1pdEJ0biAvPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoc3VibWl0QnRuVGVtcGxhdGUoKSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdWJtaXRCdG5UZW1wbGF0ZSgpXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L2xvYWRlcj5cbiJdfQ==
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWdlbmVyYXRvci9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUdULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxTQUFTLEVBQVcsTUFBTSxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQVEsU0FBUyxFQUFPLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsbUJBQW1CLEVBQW1CLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1B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QWdCLGNBR2QsSUFBSSxXQUVQO3dCQUNQLGVBQWU7d0JBQ2YsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsMEJBQTBCO3dCQUMxQixxQkFBcUI7d0JBQ3JCLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLHlCQUF5Qjt3QkFDekIsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsU0FBUztxQkFDVjt3REFNUSxRQUFRO3NCQUFoQixLQUFLO2dCQU9JLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFFRyxLQUFLO3NCQUFkLE1BQU07Z0JBQ0UsVUFBVTtzQkFBbEIsS0FBSztnQkFxQzhCLFdBQVc7c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUdZLGlCQUFpQjtzQkFBMUQsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRTtnQkFhZixPQUFPO3NCQUEzQixLQUFLO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBGb3Jtc01vZHVsZSxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBsYXN0LCBzd2l0Y2hNYXAsIHRhcCwgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGdW5jdGlvbkNhbGxlcjIsIFRvQW55UGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3V0aWxpdHkucGlwZSc7XG5pbXBvcnQgeyBCdG5Db21wb25lbnQgfSBmcm9tICcuLi9idG4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dEJhc2ljQ29tcG9uZW50LCBPcHRpb25MYWJlbFR5cGUgfSBmcm9tICcuLi9pbnB1dC9pbnB1dC1iYXNpYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC92YWxpZGF0aW9uLW1lc3NhZ2UvdmFsaWRhdGlvbi1tZXNzYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaG9uZU51bWJlckNvbXBvbmVudCB9IGZyb20gJy4uL3Bob25lLW51bWJlci9waG9uZS1udW1iZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTmdTd2l0Y2hEZWZhdWx0LCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0U3ViVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBSaWNoVGV4dEVkaXRvclJGQ29tcG9uZW50IH0gZnJvbSAnLi4vcmljaC10ZXh0LWVkaXRvci1yZi9yaWNoLXRleHQtZWRpdG9yLXJmLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtR2VuZXJhdG9yU2VydmljZSB9IGZyb20gJy4vZm9ybS1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlRm9ybUdlbmVyYXRvciwgSUJhc2VGb3JtU2NoZW1hIH0gZnJvbSAnLi9mb3JtLWdlbmVyYXRvci5iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuLyoqXG4gKiBGb3JtIHNob3VsZCBiZSBzZXQgYmVmb3JlIHRoZSB0aGUgZm9ybVNjaGVtYVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb3JtLWdlbmVyYXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIC8vICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIExvYWRlckNvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUGhvbmVOdW1iZXJDb21wb25lbnQsXG4gICAgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQsXG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgIE5nU3dpdGNoRGVmYXVsdCxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIElucHV0QmFzaWNDb21wb25lbnQsXG4gICAgUmljaFRleHRFZGl0b3JSRkNvbXBvbmVudCxcbiAgICBCdG5Db21wb25lbnQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGdW5jdGlvbkNhbGxlcjIsXG4gICAgVG9BbnlQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtR2VuZXJhdG9yQ29tcG9uZW50PFxuICBURm9ybUdyb3VwIGV4dGVuZHMgeyBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PiB9LFxuICBURm9ybVNjaGVtYSBleHRlbmRzIElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+ID0gSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD4sXG4+IGV4dGVuZHMgQmFzZUZvcm1HZW5lcmF0b3I8VEZvcm1Hcm91cCwgVEZvcm1TY2hlbWE+IHtcbiAgQElucHV0KCkga2V5RmllbGQ6ICdmaWVsZCcgfCAnbGFiZWwnID0gJ2ZpZWxkJztcbiAgcmVhZG9ubHkgcHJlc2V0VmFsdWVGb3JTaW5nbGVPcHRpb24gPSBpbnB1dChmYWxzZSk7XG4gIHJlYWRvbmx5IGlzQ3JlYXRlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgc3VibWl0T25FbnRlcktleSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgZm9ybVRhZ1JlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxGb3JtRWxlbWVudD4+KCdmb3JtVGFnJyk7XG5cbiAgLyoqRW1pdHRlZCBqdXN0IGJlZm9yZSBjYWxsaW5nIHRoZSBzYXZlIGZ1bmN0aW9uICovXG4gIEBPdXRwdXQoKSBvblN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgbWNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAvKipFbWl0dGVkIGFmdGVyIHJlY2VpdmluZyBmZWVkYmFjayBmcm9tIHRoZSBzdWJtaXQgZnVuY3Rpb24gKi9cbiAgQE91dHB1dCgpIHNhdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIHN1Ym1pdEZ1bmM6ICh2YWx1ZTogYW55KSA9PiBQcm9taXNlPGFueT47XG4gIHJlYWRvbmx5IHN1Ym1pdEJ0blRleHQgPSBpbnB1dCgnU3VibWl0Jyk7XG4gIHJlYWRvbmx5IHN1Ym1pdEJ0blRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcmVhZG9ubHkgc3VibWl0U3VjY2Vzc1RleHQgPSBpbnB1dCgnU2F2ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gIHJlYWRvbmx5IHNob3dTdWJtaXRCdG4gPSBpbnB1dCh0cnVlKTtcblxuICByZWFkb25seSBncmlkU3R5bGUgPSBpbnB1dDxudW1iZXIgfCAnYXV0byc+KCk7XG4gIHJlYWRvbmx5IGdyaWRNRFN0eWxlID0gaW5wdXQ8bnVtYmVyIHwgJ2F1dG8nPigpO1xuICByZWFkb25seSBncmlkTEdTdHlsZSA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oKTtcbiAgcmVhZG9ubHkgZ3JpZFhYTFN0eWxlID0gaW5wdXQ8bnVtYmVyIHwgJ2F1dG8nPigpO1xuXG4gIHJlYWRvbmx5IGZvcm1HcmlkQ2xhc3MgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IHVzZUxvYWRlciA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGxvYWRpbmcgPSBpbnB1dDxib29sZWFuPigpO1xuXG4gIHJlYWRvbmx5IF9sb2FkaW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSBjb21wdXRlZExvYWRpbmcgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMudXNlTG9hZGVyKCkgPyB0aGlzLmxvYWRpbmcoKSB8fCB0aGlzLl9sb2FkaW5nKCkgOiBmYWxzZSxcbiAgKTtcblxuICByZWFkb25seSBzdWJtaXRCdG5SZWYgPSB2aWV3Q2hpbGQ8QnRuQ29tcG9uZW50Pignc3VibWl0QnRuJyk7XG4gIHJlYWRvbmx5IGZvcm0gPSBtb2RlbDxGb3JtR3JvdXA8VEZvcm1Hcm91cD4+KCk7XG5cbiAgcmVhZG9ubHkgZm9ybVZhbHVlID0gdG9TaWduYWwoXG4gICAgdG9PYnNlcnZhYmxlKHRoaXMuZm9ybSkucGlwZShcbiAgICAgIGZpbHRlcigoKSA9PiAhIXRoaXMuZm9ybSgpKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICB0aGlzLmZvcm0oKVxuICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShtYXAoKCkgPT4gdGhpcy5mb3JtKCk/LmdldFJhd1ZhbHVlKCkgfHwge30pKVxuICAgICAgICAgIC5waXBlKHN0YXJ0V2l0aCh0aGlzLmZvcm0oKT8uZ2V0UmF3VmFsdWUoKSB8fCB7fSkpLFxuICAgICAgKSxcbiAgICApLFxuICAgIC8vIHsgaW5pdGlhbFZhbHVlOiB0aGlzLmZvcm0oKT8uZ2V0UmF3VmFsdWUoKSB8fCB7fSB9LFxuICApO1xuXG4gIHN1Ym1pc3Npb25SZXNwb25zZTogYW55O1xuICBASW5wdXQoeyBhbGlhczogJ2Zvcm1TY2hlbWEnIH0pIHNldCBfZm9ybVNjaGVtYSh2OiBURm9ybVNjaGVtYVtdKSB7XG4gICAgdGhpcy5pbml0KGNsb25lRGVlcCh2LmZpbHRlcigoeCkgPT4geCkpKTtcbiAgfVxuICBASW5wdXQoeyBhbGlhczogJ2Zvcm1TY2hlbWFOb0Zvcm0nIH0pIHNldCBfZm9ybVNjaGVtYU5vRm9ybSh2OiBURm9ybVNjaGVtYVtdKSB7XG4gICAgaWYgKHYpIHtcbiAgICAgIGNvbnN0IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB2KSB7XG4gICAgICAgIGZvcm0uYWRkQ29udHJvbChcbiAgICAgICAgICBpdGVtLmZpZWxkPy50b1N0cmluZygpLFxuICAgICAgICAgIG5ldyBGb3JtQ29udHJvbChpdGVtLnZhbHVlLCBbXS5jb25jYXQoaXRlbS5pc1JlcXVpcmVkID8gW1ZhbGlkYXRvcnMucmVxdWlyZWRdIDogW10pKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZm9ybS5zZXQoZm9ybSBhcyBhbnkgYXMgRm9ybUdyb3VwPFRGb3JtR3JvdXA+KTtcbiAgICAgIHRoaXMuX2Zvcm1TY2hlbWEgPSB2O1xuICAgIH1cbiAgfVxuICBASW5wdXQoJ2lzU2hvdycpIHNldCBfaXNTaG93KHY6IGJvb2xlYW4pIHtcbiAgICBpZiAodikgdGhpcy5mb3JtKCk/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIGVsc2UgdGhpcy5mb3JtKCk/LmVuYWJsZSgpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodikgdGhpcy5mb3JtKCk/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgZWxzZSB0aGlzLmZvcm0oKT8uZW5hYmxlKCk7XG4gICAgfSwgNTAwKTtcbiAgfVxuICByZWFkb25seSBvcHRpb25zTWFwID0gc2lnbmFsPElGb3JtT3B0aW9ucz4oe30pO1xuICAvLyBmb3JtVmFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mb3JtPy5nZXRSYXdWYWx1ZSgpKTtcblxuICByZWFkb25seSBjb21wdXRlZEZvcm1TY2hlbWEgPSBjb21wdXRlZDxJRm9ybVNjaGVtYTxURm9ybUdyb3VwPltdPigoKSA9PiB7XG4gICAgY29uc3QgZm9ybVNjaGVtYSA9IHRoaXMuZm9ybVNjaGVtYSgpIHx8IFtdLFxuICAgICAgcHJlc2V0VmFsdWVGb3JTaW5nbGVPcHRpb24gPSB0aGlzLnByZXNldFZhbHVlRm9yU2luZ2xlT3B0aW9uKCksXG4gICAgICBpc0NyZWF0ZSA9IHRoaXMuaXNDcmVhdGUoKSxcbiAgICAgIHJldDogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXSA9IFtdO1xuICAgIGZvcm1TY2hlbWEuZm9yRWFjaCgoc2NoZW1lKSA9PiB7XG4gICAgICBpZiAoIXNjaGVtZS5oaWRkZW4pIHtcbiAgICAgICAgaWYgKGlzQ3JlYXRlKVxuICAgICAgICAgIHNjaGVtZS5wcmVzZXRWYWx1ZSA9XG4gICAgICAgICAgICBzY2hlbWUucHJlc2V0VmFsdWUgPT0gbnVsbCA/IHByZXNldFZhbHVlRm9yU2luZ2xlT3B0aW9uIDogc2NoZW1lLnByZXNldFZhbHVlO1xuICAgICAgICByZXQucHVzaChzY2hlbWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChyZXQuc29tZSgoeCkgPT4gIXguZmllbGQpKSBkZWJ1Z2dlcjtcbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbiAgLy8gbWlzY0luZGV4OiBUTWlzY0luZGV4O1xuICBwdWJsaWMgZm9ybVNlcnZpY2UgPSBpbmplY3QoRm9ybUdlbmVyYXRvclNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBsZXQgbGlzdGVuVG9LZXk6IFN1YnNjcmlwdGlvbjtcbiAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgIGxpc3RlblRvS2V5Py51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICAgIC8vIGVmZmVjdCgoKSA9PiB7XG4gICAgLy8gICBjb25zb2xlLmxvZyh0aGlzLmZvcm1TY2hlbWEoKSk7XG4gICAgLy8gfSk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGZ0ciA9IHRoaXMuZm9ybVRhZ1JlZigpLFxuICAgICAgICBzdWJtaXRPbkVudGVyS2V5ID0gdGhpcy5zdWJtaXRPbkVudGVyS2V5KCk7XG4gICAgICAvLyBkZWJ1Z2dlcjtcblxuICAgICAgbGlzdGVuVG9LZXk/LnVuc3Vic2NyaWJlKCk7XG4gICAgICBpZiAoZnRyPy5uYXRpdmVFbGVtZW50ICYmIHN1Ym1pdE9uRW50ZXJLZXkpXG4gICAgICAgIGxpc3RlblRvS2V5ID0gZnJvbUV2ZW50KGZ0ci5uYXRpdmVFbGVtZW50LCAna2V5ZG93bicpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgICAgKHI6IEtleWJvYXJkRXZlbnQpID0+IChyLmNvZGUgPT09ICdFbnRlcicgfHwgci5rZXlDb2RlID09PSAxMykgJiYgdGhpcy5mb3JtKCkudmFsaWQsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKChyOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdCh0aGlzLnN1Ym1pdEJ0blJlZigpKTtcbiAgICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGluaXQoc2NoZW1hOiBURm9ybVNjaGVtYVtdKSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgdGhpcy5vbkRlc3Ryb3koKTtcbiAgICB0aGlzLl9zZXRGb3JtU2NoZW1hcyhzY2hlbWEgfHwgW10pO1xuICAgIGlmIChzY2hlbWEpIGZvciAoY29uc3Qgc2NoZW1lIG9mIHNjaGVtYSkgdGhpcy5oYW5kbGVGb3JtU2NoZW1lKHNjaGVtZSk7XG4gICAgaWYgKHNjaGVtYSlcbiAgICAgIGZvciAoY29uc3Qgc2NoZW1lIG9mIHNjaGVtYSlcbiAgICAgICAgaWYgKHNjaGVtZS50cmlnZ2VyT25DaGFuZ2VPbkluaXQpIHtcbiAgICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm0oKT8uZ2V0UmF3VmFsdWUoKTtcbiAgICAgICAgICBzY2hlbWUub25DaGFuZ2VGdW5jKGZvcm1WYWx1ZSwgZm9ybVZhbHVlW3NjaGVtZS5maWVsZD8udG9TdHJpbmcoKV0sIHRoaXMpO1xuICAgICAgICB9XG4gIH1cblxuICBoYW5kbGVGb3JtU2NoZW1lKHNjaGVtZTogVEZvcm1TY2hlbWEpIHtcbiAgICBzY2hlbWUuaWQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdlbmVyYXRlVVVJRCgpO1xuICAgIGlmIChzY2hlbWUuc3RhY2tlZCA9PSBudWxsKSBzY2hlbWUuc3RhY2tlZCA9IHRydWU7XG4gICAgaWYgKHNjaGVtZS5zaG93VmFsaWRhdGlvbk1zZyA9PSBudWxsKSBzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2cgPSB0cnVlO1xuICAgIGlmICh0aGlzLmZvcm1TZXJ2aWNlLmNvbmZpZy5zaG93VmFsaWRhdGlvbk1lc3NhZ2VzQnlEZWZhdWx0KVxuICAgICAgaWYgKHNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQgPT0gbnVsbCAmJiAoIXNjaGVtZS52YWx1ZUZpZWxkIHx8ICFzY2hlbWUubGFiZWxGaWVsZCkpXG4gICAgICAgIHNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQgPSB0cnVlO1xuICAgIC8vIGlmICghdGhpcy5mb3JtLmNvbnRyb2xzW3NjaGVtZS5maWVsZCBhcyBhbnldKSBkZWJ1Z2dlcjtcbiAgICB0aGlzLnVwZGF0ZUZvcm1TY2hlbWEoc2NoZW1lLmZpZWxkLCBzY2hlbWUpO1xuXG4gICAgaWYgKHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMpIHRoaXMuaGFuZGxlT3B0aW9uc0ZldGNoZWQoc2NoZW1lLCBzY2hlbWUub3B0aW9uc0luaXRGdW5jKTtcbiAgICBpZiAoc2NoZW1lLm9wdGlvbnNJbml0RnVuYzIpIHRoaXMuaGFuZGxlT3B0aW9uc0ZldGNoZWQoc2NoZW1lLCBzY2hlbWUub3B0aW9uc0luaXRGdW5jMigpKTtcbiAgICBpZiAoc2NoZW1lLm9uQ2hhbmdlRnVuYykge1xuICAgICAgaWYgKHNjaGVtZS5kZWJ1ZykgZGVidWdnZXI7XG4gICAgICB0aGlzLnN1YnNbc2NoZW1lLmZpZWxkPy50b1N0cmluZygpXSA9IHRoaXMuZm9ybSgpXG4gICAgICAgID8uY29udHJvbHNbc2NoZW1lLmZpZWxkPy50b1N0cmluZygpXT8udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDApKVxuICAgICAgICAuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgICAgc2NoZW1lLm9uQ2hhbmdlRnVuYyh0aGlzLmZvcm1WYWx1ZSgpLCByLCB0aGlzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZU9wdGlvbnNGZXRjaGVkKHNjaGVtZTogVEZvcm1TY2hlbWEsIG9wdGlvbnMkOiBPYnNlcnZhYmxlPGFueVtdPikge1xuICAgIG9wdGlvbnMkLnN1YnNjcmliZSgocikgPT4ge1xuXG4gICAgICB0aGlzLnVwZGF0ZUZvcm1TY2hlbWEoc2NoZW1lLmZpZWxkLCB7IG9wdGlvbnM6IHIgfSBhcyBURm9ybVNjaGVtYSk7XG4gICAgfSk7XG4gIH1cblxuICBkZXRhY2hGb3JtU2NoZW1lKGZpZWxkTmFtZT86IGtleW9mIFRGb3JtR3JvdXApIHtcbiAgICB0aGlzLnN1YnNbZmllbGROYW1lIGFzIHN0cmluZ10/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWNoYW5nZUVtaXR0ZXIoKSB7XG4gICAgdGhpcy5tY2hhbmdlLmVtaXQodGhpcy5mb3JtVmFsdWUoKSk7XG4gIH1cblxuICBnZXRGb3JtU2NoZW1lID0gKGZpZWxkTmFtZToga2V5b2YgVEZvcm1Hcm91cCkgPT4ge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIHJldHVybiB0aGlzLmZvcm1TY2hlbWFNYXAoKVtmaWVsZE5hbWUgYXMgc3RyaW5nXTtcbiAgfTtcblxuICBhZGRUb0Zvcm1TY2hlbWEoZm9ybVNjaGVtZTogVEZvcm1TY2hlbWEpIHtcbiAgICB0aGlzLnJlbW92ZUZyb21Gb3JtU2NoZW1hKGZvcm1TY2hlbWUuZmllbGQpO1xuICAgIHRoaXMuaGFuZGxlRm9ybVNjaGVtZShmb3JtU2NoZW1lKTtcbiAgfVxuXG4gIHVwZGF0ZUZvcm1TY2hlbWEoZmllbGROYW1lOiBrZXlvZiBURm9ybUdyb3VwLCBzY2hlbWU6IFBhcnRpYWw8VEZvcm1TY2hlbWE+KSB7XG4gICAgcmV0dXJuIHN1cGVyLl91cGRhdGVGb3JtU2NoZW1hKGZpZWxkTmFtZSBhcyBzdHJpbmcsIHNjaGVtZSk7XG4gIH1cbiAgdXBkYXRlQWxsRm9ybVNjaGVtYShtYXA6IChmb3JtRmllbGQ6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+KSA9PiBURm9ybVNjaGVtYSkge1xuICAgIHJldHVybiBzdXBlci5fdXBkYXRlQWxsRm9ybVNjaGVtYShtYXApO1xuICB9XG5cbiAgcmVtb3ZlRnJvbUZvcm1TY2hlbWEoZmllbGROYW1lOiBrZXlvZiBURm9ybUdyb3VwKSB7XG4gICAgdGhpcy5kZXRhY2hGb3JtU2NoZW1lKGZpZWxkTmFtZSk7XG4gICAgY29uc3Qgb25SZW1vdmUgPSB0aGlzLmZvcm1TY2hlbWFNYXAoKVtmaWVsZE5hbWUgYXMgc3RyaW5nXT8ub25SZW1vdmVGdW5jO1xuICAgIGlmIChvblJlbW92ZSkgb25SZW1vdmUodGhpcy5mb3JtVmFsdWUoKSBhcyBhbnksIHRoaXMuZm9ybVZhbHVlKClbZmllbGROYW1lIGFzIGFueV0sIHRoaXMpO1xuICAgIHRoaXMuX3JlbW92ZUZvcm1TY2hlbWEoZmllbGROYW1lIGFzIHN0cmluZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0T3B0aW9uTGFiZWwoJGV2ZW50OiBhbnksIHNjaGVtZTogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD4pIHtcbiAgICBzY2hlbWUuc2VsZWN0ZWRPcHRpb25MYWJlbCA9ICRldmVudDtcbiAgfVxuXG4gIGFzeW5jIHN1Ym1pdChidG4/OiBCdG5Db21wb25lbnQpIHtcbiAgICBpZiAodGhpcy5zdWJtaXRGdW5jKSB7XG4gICAgICBidG4/LnNldExvYWRlcih0cnVlKTtcbiAgICAgIHRoaXMuX2xvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgY29uc3QgZm9ybVZhbCA9IHRoaXMuZm9ybVZhbHVlKCk7XG4gICAgICB0aGlzLm9uU3VibWl0LmVtaXQoZm9ybVZhbCk7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLnN1Ym1pc3Npb25SZXNwb25zZSA9IGF3YWl0IHRoaXMuc3VibWl0RnVuYyhmb3JtVmFsKTtcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5pbmZvKHRoaXMuc3VibWl0U3VjY2Vzc1RleHQoKSwgMSk7XG4gICAgICAgIHRoaXMuc2F2ZWQuZW1pdCh0aGlzLnN1Ym1pc3Npb25SZXNwb25zZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLmluZm8oZXJyb3IsIDApO1xuICAgICAgfVxuICAgICAgdGhpcy5fbG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgYnRuPy5zZXRMb2FkZXIoZmFsc2UpO1xuICAgIH0gZWxzZSB0aGlzLm9uU3VibWl0LmVtaXQodGhpcy5mb3JtVmFsdWUoKSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybVNjaGVtYTxcbiAgVEZvcm1Hcm91cCBleHRlbmRzIHtcbiAgICBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgfSA9IGFueSxcbj4gZXh0ZW5kcyBJQmFzZUZvcm1TY2hlbWE8VEZvcm1Hcm91cCwgRm9ybUdlbmVyYXRvckNvbXBvbmVudDxURm9ybUdyb3VwPj4ge1xuICBjaGlsZHJlbj86IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+W107XG4gIGxhYmVsVHlwZT86IE9wdGlvbkxhYmVsVHlwZTtcbiAgZmllbGQ6IGtleW9mIFRGb3JtR3JvdXA7XG4gIHN1YlR5cGU/OiBJbnB1dFN1YlR5cGU7XG4gIHByZXNldFZhbHVlPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1TY2hlbWEyPFRTdHJ1Y3QgPSBhbnk+XG4gIGV4dGVuZHMgSUZvcm1TY2hlbWE8e1xuICAgIFtLIGluIGtleW9mIFRTdHJ1Y3RdPzogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgfT4ge31cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybU9wdGlvbnMge1xuICBbZmllbGQ6IHN0cmluZ106IGFueTtcbn1cbiIsIjwhLS0ge3tmb3JtVmFsdWUoKXxqc29ufX1cbnt7Zm9ybVZhbGlkKCl8anNvbn19IC0tPlxuPGxvYWRlciBbbG9hZGluZ109XCJjb21wdXRlZExvYWRpbmcoKVwiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm0oKVwiICNmb3JtVGFnPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLXt7IGdyaWRTdHlsZSgpIH19IHJvdy1jb2xzLW1kLXt7IGdyaWRNRFN0eWxlKCkgfX0gcm93LWNvbHMtbGcte3tcbiAgICAgICAgZ3JpZExHU3R5bGUoKVxuICAgICAgfX0gcm93LWNvbHMteHhsLXt7IGdyaWRYWExTdHlsZSgpIH19IGFsaWduLWl0ZW1zLWNlbnRlciB7eyBmb3JtR3JpZENsYXNzKCkgfX1cIj5cbiAgICAgIEBmb3IgKHNjaGVtZSBvZiBjb21wdXRlZEZvcm1TY2hlbWEoKTsgdHJhY2sgc2NoZW1lLmZpZWxkKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wge3sgc2NoZW1lLmNscyB9fSBcIj5cbiAgICAgICAgICBAc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ3RlbCcpIHtcbiAgICAgICAgICAgICAgPGFwcC1waG9uZS1udW1iZXJcbiAgICAgICAgICAgICAgICBbZm9ybV09XCJzY2hlbWUuZm9ybSB8fCBmb3JtKClcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgICAgICAgIFtzdGFja2VkXT1cInNjaGVtZS5zdGFja2VkXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXRcIlxuICAgICAgICAgICAgICAgIFt2ZXJib3NlXT1cInNjaGVtZS52ZXJib3NlXCJcbiAgICAgICAgICAgICAgICBbZGVidWddPVwic2NoZW1lLmRlYnVnXCJcbiAgICAgICAgICAgICAgICAobWNoYW5nZSk9XCJtY2hhbmdlRW1pdHRlcigpXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uIHx8ICEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uSWNvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25JY29uIHx8ICEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICBbc2hvd1JlcXVpcmVkVGFnXT1cInNjaGVtZS5zaG93UmVxdWlyZWRUYWdcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIiBcbiAgICAgICAgICAgICAgICBbY291bnRyeUNvZGUzXT1cInNjaGVtZS5jb3VudHJ5Q29kZTNcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgIHNjaGVtZS5kaXNhYmxlZCB8fFxuICAgICAgICAgICAgICAgICAgKHNjaGVtZS5kaXNhYmxlZElmIHwgZnVuY3Rpb25DYWxsZXIyOiBmb3JtVmFsdWUoKSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSkpXG4gICAgICAgICAgICAgICAgXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgICAgICAgICA8YXBwLWF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtIHx8IGZvcm0oKVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgW2NsZWFyT25EaXNhYmxlXT1cInNjaGVtZS5jbGVhck9uRGlzYWJsZVwiXG4gICAgICAgICAgICAgICAgW3N0YWNrZWRdPVwic2NoZW1lLnN0YWNrZWRcIlxuICAgICAgICAgICAgICAgIFt2ZXJib3NlXT1cInNjaGVtZS52ZXJib3NlXCJcbiAgICAgICAgICAgICAgICBbcHJlc2V0VmFsdWVdPVwic2NoZW1lLnByZXNldFZhbHVlXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxGaWVsZF09XCJzY2hlbWUubGFiZWxGaWVsZFwiXG4gICAgICAgICAgICAgICAgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdFwiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbiB8fCAhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbkljb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uSWNvbiB8fCAhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgICAgICAgIFtsYWJlbFR5cGVdPVwic2NoZW1lLmxhYmVsVHlwZSB8IHRvQW55XCJcbiAgICAgICAgICAgICAgICAobWNoYW5nZSk9XCJtY2hhbmdlRW1pdHRlcigpXCJcbiAgICAgICAgICAgICAgICAobVNlbGVjdGVkT3B0aW9uTGFiZWwpPVwic2V0T3B0aW9uTGFiZWwoJGV2ZW50LCBzY2hlbWUpXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgIFtkZWJ1Z109XCJzY2hlbWUuZGVidWdcIlxuICAgICAgICAgICAgICAgIFtzZXRGb3JtYXR0ZWRWYWx1ZV09XCJzY2hlbWUuc2V0Q29udHJvbEZvcm1hdHRlZFZhbHVlXCJcbiAgICAgICAgICAgICAgICBbc2hvd1JlcXVpcmVkVGFnXT1cInNjaGVtZS5zaG93UmVxdWlyZWRUYWdcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlclwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwic2NoZW1lLnZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zRnVuY109XCJzY2hlbWUub3B0aW9uc0Z1bmNcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIlxuICAgICAgICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwic2NoZW1lLm9wdGlvbnMgfHwgb3B0aW9uc01hcCgpW3NjaGVtZS5maWVsZCB8IHRvQW55XVwiXG4gICAgICAgICAgICAgICAgW2hpbnRdPVwic2NoZW1lLmhpbnRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgIHNjaGVtZS5kaXNhYmxlZCB8fFxuICAgICAgICAgICAgICAgICAgKHNjaGVtZS5kaXNhYmxlZElmIHwgZnVuY3Rpb25DYWxsZXIyOiBmb3JtVmFsdWUoKSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSkpXG4gICAgICAgICAgICAgICAgXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAncmljaHRleHQnKSB7XG4gICAgICAgICAgICAgIDxyaWNoLXRleHQtZWRpdG9yLXJmXG4gICAgICAgICAgICAgICAgW2Zvcm1dPVwic2NoZW1lLmZvcm0gfHwgZm9ybSgpXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2NoZW1lLmxhYmVsIVwiXG4gICAgICAgICAgICAgICAgW2NsZWFyT25EaXNhYmxlXT1cInNjaGVtZS5jbGVhck9uRGlzYWJsZSFcIlxuICAgICAgICAgICAgICAgIFtzdGFja2VkXT1cInNjaGVtZS5zdGFja2VkXCJcbiAgICAgICAgICAgICAgICBbdmVyYm9zZV09XCJzY2hlbWUudmVyYm9zZVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGQhXCJcbiAgICAgICAgICAgICAgICBbbm9Gb3JtYXRdPVwic2NoZW1lLm5vRm9ybWF0IVwiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbiB8fCAhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbkljb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uSWNvbiB8fCAhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgICAgICAgIFtsYWJlbFR5cGVdPVwic2NoZW1lLmxhYmVsVHlwZSB8IHRvQW55XCJcbiAgICAgICAgICAgICAgICAobWNoYW5nZSk9XCJtY2hhbmdlRW1pdHRlcigpXCJcbiAgICAgICAgICAgICAgICAobVNlbGVjdGVkT3B0aW9uTGFiZWwpPVwic2V0T3B0aW9uTGFiZWwoJGV2ZW50LCBzY2hlbWUpXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgIFtkZWJ1Z109XCJzY2hlbWUuZGVidWchXCJcbiAgICAgICAgICAgICAgICBbc2V0Rm9ybWF0dGVkVmFsdWVdPVwic2NoZW1lLnNldENvbnRyb2xGb3JtYXR0ZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgW3Nob3dSZXF1aXJlZFRhZ109XCJzY2hlbWUuc2hvd1JlcXVpcmVkVGFnIVwiXG4gICAgICAgICAgICAgICAgW29wdGlvbkZvcm1hdHRlcl09XCJzY2hlbWUub3B0aW9uRm9ybWF0dGVyIVwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwic2NoZW1lLnZhbHVlRmllbGQhXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc0Z1bmNdPVwic2NoZW1lLm9wdGlvbnNGdW5jIVwiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uTXNnXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbk1zZ1wiXG4gICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkIVwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwic2NoZW1lLm9wdGlvbnMgfHwgb3B0aW9uc01hcCgpW3NjaGVtZS5maWVsZCB8IHRvQW55XVwiXG4gICAgICAgICAgICAgICAgW2hpbnRdPVwic2NoZW1lLmhpbnQhXCJcbiAgICAgICAgICAgICAgICBbbWF4TGVuZ3RoXT1cInNjaGVtZS5tYXhMZW5ndGhcIlxuICAgICAgICAgICAgICAgIFttaW5MZW5ndGhdPVwic2NoZW1lLm1pbkxlbmd0aFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgc2NoZW1lLmRpc2FibGVkIHx8XG4gICAgICAgICAgICAgICAgICAoc2NoZW1lLmRpc2FibGVkSWYhIHwgZnVuY3Rpb25DYWxsZXIyOiBmb3JtVmFsdWUoKSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSkpXG4gICAgICAgICAgICAgICAgXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICAgICAgPGFwcC1pbnB1dC1iYXNpY1xuICAgICAgICAgICAgICAgIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXRcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICAgICAgW2Zvcm1dPVwic2NoZW1lLmZvcm0gfHwgZm9ybSgpXCJcbiAgICAgICAgICAgICAgICBbY2xlYXJPbkRpc2FibGVdPVwic2NoZW1lLmNsZWFyT25EaXNhYmxlXCJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJzY2hlbWUudHlwZVwiXG4gICAgICAgICAgICAgICAgW3ZlcmJvc2VdPVwic2NoZW1lLnZlcmJvc2VcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgIFtwcmVzZXRWYWx1ZV09XCJzY2hlbWUucHJlc2V0VmFsdWVcIlxuICAgICAgICAgICAgICAgIFtzdGFja2VkXT1cInNjaGVtZS5zdGFja2VkXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRTaWduYWxdPVwic2NoZW1lLmNoZWNrZWRcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb24gfHwgISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbkljb24gfHwgISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbZGVidWddPVwic2NoZW1lLmRlYnVnXCJcbiAgICAgICAgICAgICAgICAobWNoYW5nZSk9XCJtY2hhbmdlRW1pdHRlcigpXCJcbiAgICAgICAgICAgICAgICBbc2V0Rm9ybWF0dGVkVmFsdWVdPVwic2NoZW1lLnNldENvbnRyb2xGb3JtYXR0ZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgW3Nob3dSZXF1aXJlZFRhZ109XCJzY2hlbWUuc2hvd1JlcXVpcmVkVGFnXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxGaWVsZF09XCJzY2hlbWUubGFiZWxGaWVsZFwiXG4gICAgICAgICAgICAgICAgW29wdGlvbkZvcm1hdHRlcl09XCJzY2hlbWUub3B0aW9uRm9ybWF0dGVyXCJcbiAgICAgICAgICAgICAgICAobVNlbGVjdGVkT3B0aW9uTGFiZWwpPVwic2V0T3B0aW9uTGFiZWwoJGV2ZW50LCBzY2hlbWUpXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJzY2hlbWUub3B0aW9ucyB8fCBvcHRpb25zTWFwKClbc2NoZW1lLmZpZWxkIHwgdG9BbnldXCJcbiAgICAgICAgICAgICAgICBbZGVjaW1hbFBvaW50c109XCJzY2hlbWUuZGVjaW1hbFBvaW50c1wiXG4gICAgICAgICAgICAgICAgW2hpbnRdPVwic2NoZW1lLmhpbnRcIlxuICAgICAgICAgICAgICAgIFttYXhdPVwic2NoZW1lLm1heFwiXG4gICAgICAgICAgICAgICAgW21pbl09XCJzY2hlbWUubWluXCJcbiAgICAgICAgICAgICAgICBbbWF4TGVuZ3RoXT1cInNjaGVtZS5tYXhMZW5ndGhcIlxuICAgICAgICAgICAgICAgIFttaW5MZW5ndGhdPVwic2NoZW1lLm1pbkxlbmd0aFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNjaGVtZS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uTXNnXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbk1zZ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgc2NoZW1lLmRpc2FibGVkIHx8XG4gICAgICAgICAgICAgICAgICAoc2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IGZvcm1WYWx1ZSgpIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KSlcbiAgICAgICAgICAgICAgICBcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJvdyByb3ctY29scy1hdXRvIGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgQGlmIChzaG93U3VibWl0QnRuKCkpIHtcbiAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgW3RleHRdPVwic3VibWl0QnRuVGV4dCgpXCJcbiAgICAgICAgICAgIGdyb3VwPVwic3VibWl0XCJcbiAgICAgICAgICAgIFtmb3JtXT1cImZvcm0oKVwiXG4gICAgICAgICAgICAobWNsaWNrKT1cInN1Ym1pdChzdWJtaXRCdG4pXCJcbiAgICAgICAgICAgICNzdWJtaXRCdG4gLz5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHN1Ym1pdEJ0blRlbXBsYXRlKCkpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VibWl0QnRuVGVtcGxhdGUoKVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9sb2FkZXI+XG4iXX0=
|
|
@@ -104,8 +104,9 @@ export class InputBasicComponent extends InputBase {
|
|
|
104
104
|
// debugger
|
|
105
105
|
}
|
|
106
106
|
upload(e) {
|
|
107
|
-
this.files = e.target
|
|
107
|
+
this.files = Array.from(e.target['files']);
|
|
108
108
|
this.mchange.emit(e);
|
|
109
|
+
this.control()?.patchValue(this.multiple ? this.files : this.files[0]);
|
|
109
110
|
}
|
|
110
111
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: InputBasicComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
111
112
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: InputBasicComponent, isStandalone: true, selector: "app-input-basic,app-input", inputs: { accept: { classPropertyName: "accept", publicName: "accept", isSignal: false, isRequired: false, transformFunction: null }, autocomplete: { classPropertyName: "autocomplete", publicName: "autocomplete", isSignal: false, isRequired: false, transformFunction: null }, inp: { classPropertyName: "inp", publicName: "input", isSignal: false, isRequired: false, transformFunction: null }, contextData: { classPropertyName: "contextData", publicName: "contextData", isSignal: false, isRequired: false, transformFunction: null }, decimalPoints: { classPropertyName: "decimalPoints", publicName: "decimalPoints", isSignal: false, isRequired: false, transformFunction: null }, files: { classPropertyName: "files", publicName: "files", isSignal: false, isRequired: false, transformFunction: null }, hide: { classPropertyName: "hide", publicName: "hide", isSignal: false, isRequired: false, transformFunction: null }, clearOnDisable: { classPropertyName: "clearOnDisable", publicName: "clearOnDisable", isSignal: true, isRequired: false, transformFunction: null }, labelLink: { classPropertyName: "labelLink", publicName: "labelLink", isSignal: false, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: false, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: false, isRequired: false, transformFunction: null }, optionsFunc: { classPropertyName: "optionsFunc", publicName: "optionsFunc", isSignal: false, isRequired: false, transformFunction: null }, vms: { classPropertyName: "vms", publicName: "vms", isSignal: false, isRequired: false, transformFunction: null }, _setCurrentDate: { classPropertyName: "_setCurrentDate", publicName: "setCurrentDate", isSignal: false, isRequired: false, transformFunction: null }, _options: { classPropertyName: "_options", publicName: "options", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { mSelectedOptionLabel: "mSelectedOptionLabel" }, providers: InputProviders, viewQueries: [{ propertyName: "matSelect", first: true, predicate: ["matSelectTag"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- <div>form().getRawValue: {{ff}}</div> -->\n@if (verbose()) {\n <div>disabledSignal: {{ disabledSignal() }}</div>\n <div>validSignal: {{ validSignal() }}</div>\n <div>invalidSignal: {{ invalidSignal() }}</div>\n <div>valueSignal: {{ valueSignal() }}</div>\n <div>hasValue: {{ hasValue() }}</div>\n <div>dirtySignal: {{ dirtySignal() }}</div>\n <div>touchedSignal: {{ touchedSignal() }}</div>\n <div>errorsSignal: {{ errorsSignaljson() }}</div>\n <div>pendingSignal: {{ pendingSignal() }}</div>\n <div>requiredSignal: {{ requiredSignal() }}</div>\n <div>pristineSignal: {{ pristineSignal() }}</div>\n <div>controlRequiredSignal: {{ controlRequiredSignal() }}</div>\n <div>isRequiredSignal: {{ isRequiredSignal() }}</div>\n <div class=\"\">onControlObtainedList Length: {{ onControlObtainedList().length }}</div>\n}\n<div\n class=\" custom-input align-items-center {{ typeSignal() }} gx-1\"\n [formGroup]=\"form() | toAny\"\n [ngClass]=\"{ 'd-flex': !stackedSignal() }\">\n @if (computedShowLabel()) {\n <app-input-label\n [colored]=\"coloredSignal()\"\n [form]=\"form()\"\n [hint]=\"hint()\"\n [id]=\"idSignal()\"\n [invalidCheckbox]=\"invalidCheckboxSignal()\"\n [isRequired]=\"isRequiredSignal()\"\n [label]=\"labelSignal()\"\n [lblCl]=\"lblCl()\"\n [light]=\"light()\"\n [mini]=\"miniSignal()\"\n [ngClass]=\"{ 'w-100': stackedSignal() }\"\n [inlineHint]=\"inlineHint()\"\n [showRequiredTag]=\"showRequiredTagSignal()\"\n [showLabel]=\"showLabelSignal()\"\n [small]=\"smallSignal()\"\n [stacked]=\"stackedSignal()\"\n [theme]=\"theme()\"\n [xsmall]=\"xsmall()\" />\n }\n <div class=\"d-flex align-items-center {{ inputContClassSignal() }} \">\n <div\n class=\"position-relative d-flex input-content w-100\"\n [ngClass]=\"{\n 'ms-2': !stackedSignal(),\n showValidationIcon: showValidationSignal() || showValidationIconSignal(),\n dontFormatAsInput: dontFormatAsInputSignal(),\n }\">\n <ng-template #date>\n <date-input\n #dateInput\n [debug]=\"debug()\"\n [readonly]=\"readonlySignal()\"\n [id]=\"idSignal()\"\n class=\"w-100\"\n [type]=\"typeSignal()\"\n (valueChanged)=\"dateChanged($event)\"\n [value]=\"valueSignal()\"\n [inputClass]=\"inputClassSignal()\"\n [disabled]=\"disabledSignal()\"\n [max]=\"maxSignal()\"\n [min]=\"minSignal()\"\n [valid]=\"validSignal()\"\n [invalid]=\"invalidSignal()\"\n [showValidation]=\"showValidationSignal()\" />\n </ng-template>\n @switch (typeSignal()) {\n <!-- DATE -->\n @case ('date') {\n <ng-container *ngTemplateOutlet=\"date\" />\n }\n <!-- DATETIME-LOCAL -->\n @case ('datetime-local') {\n <ng-container *ngTemplateOutlet=\"date\" />\n }\n <!-- CHECKBOX -->\n @case ('checkbox') {\n <input\n type=\"checkbox\"\n [id]=\"idSignal()\"\n [formControlName]=\"nameStrSignal()\"\n [attr.data-noformat]=\"computedNoFormat()\"\n [attr.data-debug]=\"debug()\"\n class=\"{{ inpClSignal() }} d-inline-block form-control width-unset\"\n placeholder=\"{{ placeholder() }}\"\n [required]=\"requiredSignal()\"\n [readonly]=\"readonlySignal()\"\n (change)=\"change($event)\"\n [checked]=\"checkedSignal()\"\n [attr.indeterminate]=\"indeterminate\" />\n }\n @case ('checkedbox') {\n <input\n type=\"checkbox\"\n class=\"{{ inpClSignal() }} d-inline-block form-control width-unset\"\n [checked]=\"checkedSignal()\"\n [attr.data-debug]=\"debug()\"\n [attr.data-noformat]=\"computedNoFormat()\"\n [required]=\"requiredSignal()\"\n [readonly]=\"readonlySignal()\"\n (change)=\"change($event)\" />\n }\n <!-- FILE -->\n @case ('file') {\n <input\n type=\"file\"\n [id]=\"idSignal()\"\n [class]=\"inputClassSignal()\"\n (change)=\"upload($event)\"\n [accept]=\"accept\"\n [attr.multiple]=\"multiple\" />\n }\n <!-- FILE BUTTON-->\n @case ('fileButton') {\n <input\n type=\"file\"\n [id]=\"idSignal()\"\n [class]=\"inputClassSignal()\"\n (change)=\"upload($event)\"\n [accept]=\"accept\"\n [attr.multiple]=\"multiple\"\n hidden\n #file />\n <app-btn\n class=\"w-100\"\n (mclick)=\"file.click()\"\n icon=\"upload\"\n [type]=\"files ? 'primary' : 'secondary'\"\n text=\"{{ placeholder() || labelSignal() || 'Upload' }}\"></app-btn>\n }\n <!-- SELECT -->\n @case ('select') {\n <!-- [attr.disabled]=\"disabled\" -->\n <mat-select\n #matSelectTag\n placeholder=\"{{ placeholder() }}\"\n formControlName=\"{{ nameStrSignal() }}\"\n [id]=\"idSignal()\"\n class=\"{{ cls() }} {{ inputClassSignal() }}\"\n [required]=\"requiredSignal()\"\n (selectionChange)=\"change({ target: $event })\">\n @if (showEmptyOptionSignal()) {\n <mat-option selected [value]=\"null\" class=\"empty-option\">\n {{ placeholder() }}\n </mat-option>\n }\n @for (item of options(); track item._id) {\n <mat-option [value]=\"item.value\" (onSelectionChange)=\"selectedOption(item)\">\n <div\n class=\"option\"\n [matTooltip]=\"item.label\"\n [matTooltipShowDelay]=\"1000\"\n [matTooltipDisabled]=\"ele.scrollWidth <= ele.offsetWidth\"\n #ele>\n {{ item.label | appTranslate: translatorOptions() | async }}\n </div>\n </mat-option>\n }\n </mat-select>\n }\n <!-- TEXTAREA -->\n @case ('textarea') {\n <textarea\n [formControlName]=\"nameStrSignal()\"\n [id]=\"idSignal()\"\n [class]=\"inputClassSignal()\"\n [attr.data-noformat]=\"computedNoFormat()\"\n [rows]=\"textareaRowsSignal()\"\n [required]=\"requiredSignal()\"\n [readonly]=\"readonlySignal()\"\n (change)=\"change($event)\"></textarea>\n }\n <!-- Radio -->\n @case ('radio') {\n <input\n type=\"radio\"\n [formControlName]=\"nameStrSignal()\"\n [id]=\"idSignal()\"\n [readonly]=\"readonlySignal()\"\n (change)=\"change($event)\"\n [attr.data-noformat]=\"computedNoFormat()\"\n [value]=\"valueSignal()\" />\n }\n <!-- Viewer -->\n @case ('viewer') {\n <input\n type=\"text\"\n [id]=\"idSignal()\"\n placeholder=\"{{ placeholder() }}\"\n [attr.data-noformat]=\"computedNoFormat()\"\n [class]=\"inputClassSignal()\"\n [readonly]=\"true\"\n [value]=\"valueSignal()\" />\n }\n <!-- PASSWORD -->\n @case ('password') {\n <input\n type=\"{{ showPasswordSignal() ? 'text' : 'password' }}\"\n [formControlName]=\"nameStrSignal()\"\n placeholder=\"{{ placeholder() }}\"\n [attr.data-noformat]=\"computedNoFormat()\"\n [id]=\"idSignal()\"\n [class]=\"inputClassSignal()\"\n [required]=\"requiredSignal()\"\n [max]=\"maxSignal()\"\n [min]=\"minSignal()\"\n [readonly]=\"readonlySignal()\"\n (change)=\"change($event)\"\n [value]=\"valueSignal()\" />\n <div\n class=\"password-icons pointer\"\n (click)=\"showPasswordSignal.set(!showPasswordSignal())\">\n @if (showPasswordSignal()) {\n <i class=\"fa fa-eye-slash\"></i>\n } @else {\n <i class=\"fa fa-eye\"></i>\n }\n </div>\n }\n <!-- DEFAULT -->\n @default {\n <div\n [class]=\"inputClassSignal()\"\n [ngClass]=\"{\n 'has-prefix': !!prefixSignal(),\n disabled: readonlySignal() || disabledSignal(),\n }\">\n @if (prefixSignal()) {\n <div class=\"prefix-val\" #prefixVal>\n {{ prefixSignal() }}\n </div>\n }\n <input\n [type]=\"typeSignal()\"\n [formControlName]=\"nameStrSignal()\"\n placeholder=\"{{ placeholder() }}\"\n [id]=\"idSignal()\"\n [matTooltip]=\"ele.innerText\"\n [matTooltipDisabled]=\"ele.scrollWidth <= ele.offsetWidth\"\n #ele\n [attr.data-debug]=\"debug()\"\n [attr.data-noformat]=\"computedNoFormat()\"\n [attr.data-otype]=\"oTypeSignal()\"\n [required]=\"requiredSignal()\"\n [max]=\"maxSignal()\"\n [min]=\"minSignal()\"\n [readonly]=\"readonlySignal()\"\n (change)=\"change($event)\" />\n </div>\n }\n }\n\n @if (dirtySignal() && (showValidationSignal() || showValidationIconSignal())) {\n <div [ngClass]=\"{ valid: validSignal() }\" class=\"validity-icon\">\n <i class=\"fa fa-check\"></i>\n </div>\n <div [ngClass]=\"{ pending: pendingSignal() }\" class=\"validity-icon\">\n <i class=\"fa fa-spinner fa-spin\"></i>\n </div>\n <div [ngClass]=\"{ invalid: invalidSignal() }\" class=\"validity-icon\">\n <i class=\"fa fa-times\"></i>\n </div>\n }\n <!-- <mat-form-field class=\"input\" appearance=\"fill\">\n <input type=\"{{inp.type}}\" matInput [formControl]=\"inp.formControl\">\n <mat-error *ngFor=\"let validation of inp.vms\">\n <ng-container *ngIf=\"validation|validator:inp.formControl:inp.formControl?.value\">\n {{validation.message|validationMsg:inp.prefix:inp.suffix}}\n </ng-container>\n </mat-error>\n </mat-form-field> -->\n </div>\n @if (endLabelSignal()) {\n <div\n class=\"col-auto text-primary ms-2\"\n (click)=\"iS.log(form())\"\n [matTooltip]=\"endLabelTooltipSignal() | appTranslate | async\">\n {{ endLabelSignal() | appTranslate | async }}\n </div>\n }\n </div>\n</div>\n@if (showValidationMsgSignal()) {\n <app-validation-message\n [label]=\"labelSignal()\"\n [minLength]=\"minLength()\"\n [debug]=\"debug()\"\n [maxLength]=\"maxLength()\"\n [control]=\"control()\" />\n}\n", styles: [".bordercheck{border:1px solid #4ef580!important;outline:0}.borderuncheck{border:1px solid red!important;outline:0}.light{font-weight:500}.validity-icon{display:none;position:absolute;top:0;left:unset;right:20px;height:100%;align-items:center}.select .validity-icon{right:30px}.valid{display:flex!important;color:#4ef580}.pending{display:flex!important;color:#ff4500}.invalid{display:flex!important;color:red}.inputform{height:41px}.invalid-label{color:red!important}input[type=checkbox]:checked{position:relative}.showValidationIcon .form-control:not(input[type=checkbox].form-control),.showValidationIcon select.form-control:not(input[type=checkbox].form-control){padding:10px 36px 10px 12px}.password-icons{position:absolute;right:20px;top:17%}[disabled]{cursor:default}.link{cursor:pointer}.option{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"], dependencies: [{ kind: "component", type: DateInputComponent, selector: "date-input", inputs: ["value", "inpCl", "cls", "inputClass", "valid", "max", "min", "id", "invalid", "disabled", "debug", "readonly", "type", "showValidation"], outputs: ["valueChanged"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: i2.BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "translatorOptions", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "helpShowDelay", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "ngmodule", type: i3.FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]" }, { kind: "directive", type: i4.InputFormatDirective, selector: "input:not([matInput]):not([noformat])", inputs: ["value"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.InputLabelComponent, selector: "app-input-label", inputs: ["colored", "form", "hint", "inlineHint", "id", "invalidCheckbox", "isRequired", "label", "labelLink", "lblCl", "light", "mini", "showLabel", "showRequiredTag", "small", "stacked", "theme", "xsmall"] }, { kind: "ngmodule", type: i6.MatDatepickerModule }, { kind: "ngmodule", type: i7.MatFormFieldModule }, { kind: "ngmodule", type: i8.MatInputModule }, { kind: "ngmodule", type: i9.MatNativeDateModule }, { kind: "ngmodule", type: i9.MatOptionModule }, { kind: "component", type: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: i10.MatSelectModule }, { kind: "component", type: i10.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "ngmodule", type: i11.MatTooltipModule }, { kind: "directive", type: i11.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: i3.ReactiveFormsModule }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i12.ToAnyPipe, name: "toAny" }, { kind: "pipe", type: i13.SDKTranslatePipe, name: "appTranslate" }, { kind: "component", type: i14.ValidationMessageComponent, selector: "app-validation-message", inputs: ["maxLength", "minLength", "control", "customMessage", "debug", "ignoreDirtiness", "input", "label", "hideOverflow"], outputs: ["labelChange"] }] }); }
|
|
@@ -150,4 +151,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
150
151
|
type: ViewChild,
|
|
151
152
|
args: ['matSelectTag']
|
|
152
153
|
}] } });
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYmFzaWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2lucHV0L2lucHV0LWJhc2ljLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFHVCxNQUFNLEVBRU4sS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVduRCxNQUFNLE9BQU8sbUJBT1gsU0FBUSxTQUF3QztJQXNCaEQsc0JBQXNCO0lBQ3RCLElBQTZCLGVBQWUsQ0FBQyxDQUFVO1FBQ3JELElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQ0QsSUFBc0IsUUFBUSxDQUFDLENBQW1CO1FBQ2hELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUFFLFFBQVEsQ0FBQztRQUMzQixJ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O2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0ksb0JBQW9CO3NCQUE3QixNQUFNO2dCQU1zQixlQUFlO3NCQUEzQyxLQUFLO3VCQUFDLGdCQUFnQjtnQkFHRCxRQUFRO3NCQUE3QixLQUFLO3VCQUFDLFNBQVM7Z0JBTVcsU0FBUztzQkFBbkMsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRkNJbnB1dCwgSW5wdXRUeXBlLCBJVmFsaWRhdGlvbk1lc3NhZ2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgTWF0U2VsZWN0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE1hdE9wdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgSW5wdXRQcm92aWRlcnMsIElucHV0U2hhcmVkTW9kdWxlcyB9IGZyb20gJy4vaW5wdXQtc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBEYXRlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRCYXNlIH0gZnJvbSAnLi9pbnB1dC1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJT3B0aW9uLCBJbnB1dFNlcnZpY2UgfSBmcm9tICcuL2lucHV0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtaW5wdXQtYmFzaWMsYXBwLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBJbnB1dFByb3ZpZGVycyxcbiAgaW1wb3J0czogW0RhdGVJbnB1dENvbXBvbmVudCwgSW5wdXRTaGFyZWRNb2R1bGVzXSxcbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRCYXNpY0NvbXBvbmVudDxcbiAgICBURm9ybUdyb3VwIGV4dGVuZHMge1xuICAgICAgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gICAgfSA9IGFueSxcbiAgICBUQ29udHJvbCA9IGFueSxcbiAgICBUT3B0aW9uID0gYW55LFxuICA+XG4gIGV4dGVuZHMgSW5wdXRCYXNlPFRGb3JtR3JvdXAsIFRDb250cm9sLCBUT3B0aW9uPlxuICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICBASW5wdXQoKSBhY2NlcHQ6IHN0cmluZztcbiAgQElucHV0KCkgYXV0b2NvbXBsZXRlOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCdpbnB1dCcpIGlucDogRkNJbnB1dDtcbiAgQElucHV0KCkgY29udGV4dERhdGE6IGFueTtcbiAgQElucHV0KCkgZGVjaW1hbFBvaW50czogbnVtYmVyO1xuICBASW5wdXQoKSBmaWxlczogRmlsZVtdO1xuICBASW5wdXQoKSBoaWRlOiBib29sZWFuO1xuXG4gIG92ZXJyaWRlIHJlYWRvbmx5IGNsZWFyT25EaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIEBJbnB1dCgpIGxhYmVsTGluazogc3RyaW5nO1xuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgb3B0aW9uc0Z1bmM6ICguLi52YWw6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnlbXT47XG4gIEBJbnB1dCgpIHZtczogSVZhbGlkYXRpb25NZXNzYWdlW107XG4gIEBPdXRwdXQoKSBtU2VsZWN0ZWRPcHRpb25MYWJlbCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBvcHRpb25zJCA9IG5ldyBSZXBsYXlTdWJqZWN0PElPcHRpb25bXT4oKTtcbiAgdmlld0luaXRlZDogYm9vbGVhbjtcbiAgZm9yY2VQYXRjaGVkOiBib29sZWFuO1xuXG4gIC8vIGxhYmVsVmFsdWU6IHN0cmluZztcbiAgQElucHV0KCdzZXRDdXJyZW50RGF0ZScpIHNldCBfc2V0Q3VycmVudERhdGUodjogYm9vbGVhbikge1xuICAgIGlmICh2KSB0aGlzLmNvbnRyb2woKT8ucGF0Y2hWYWx1ZShuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXSk7XG4gIH1cbiAgQElucHV0KCdvcHRpb25zJykgc2V0IF9vcHRpb25zKHY6IFRPcHRpb25bXSB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICB0aGlzLnJhd09wdGlvbnNTaWduYWwuc2V0KHY/LmZpbHRlcigoeCkgPT4geCAhPSBudWxsKSB8fCBbXSk7XG4gICAgdGhpcy5vcHRpb25zJC5uZXh0KHRoaXMub3B0aW9ucygpKTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ21hdFNlbGVjdFRhZycpIG1hdFNlbGVjdDogTWF0U2VsZWN0O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnNldEZvcm1hdHRlZFZhbHVlKCkgJiYgdGhpcy5jb250cm9sKCkgJiYgdGhpcy50eXBlU2lnbmFsKCkgPT0gJ3NlbGVjdCcpIHtcbiAgICAgICAgdGhpcy5jb250cm9sKCkuZm9ybWF0dGVkVmFsdWUgPSAoPE1hdE9wdGlvbj50aGlzLm1hdFNlbGVjdD8uc2VsZWN0ZWQpPy52aWV3VmFsdWU7XG4gICAgICAgIHRoaXMubVNlbGVjdGVkT3B0aW9uTGFiZWwuZW1pdCgoPE1hdE9wdGlvbj50aGlzLm1hdFNlbGVjdD8uc2VsZWN0ZWQpPy52aWV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b1BpY2tWYWx1ZUZpZWxkKCkpIHtcbiAgICAgIGlmICghdGhpcy5sYWJlbFR5cGUoKSkgdGhpcy5sYWJlbFR5cGUuc2V0KCdjZHQnKTtcbiAgICAgIGlmICghdGhpcy52YWx1ZUZpZWxkKCkpIHRoaXMudmFsdWVGaWVsZC5zZXQoJ2NvZGUnIGFzIGFueSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1pblNpZ25hbCgpID09IDAgJiYgdGhpcy5tYXhTaWduYWwoKSA9PSAxMDApIHRoaXMub1R5cGVTaWduYWwuc2V0KCdwZXJjZW50YWdlJyk7XG5cbiAgICAvLyBpZiAodGhpcy50eXBlID09ICdzZWxlY3QnIHx8IHRoaXMudHlwZSA9PSAnYXV0b2NvbXBsZXRlJylcbiAgICAvLyAgIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgLy8gICAgIHRoaXMubGFiZWxWYWx1ZSA9IHRoaXMub3B0aW9ucy5maW5kKCh4KSA9PiB4LnZhbHVlID09IHIpPy5sYWJlbDtcbiAgICAvLyAgIH0pO1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuaWQpXG4gICAgLy8gaWYgKHRoaXMuZGlzYWJsZWQpIHRoaXMuX2Rpc2FibGVkID0gdGhpcy5kaXNhYmxlZDtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyB0aGlzLnZpZXdJbml0ZWQgPSB0cnVlO1xuICB9XG5cbiAgZGlzYWJsZUNvbnRyb2woY29udHJvbDogQWJzdHJhY3RDb250cm9sID0gdGhpcy5jb250cm9sKCkpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWRTaWduYWwoKSkgcmV0dXJuO1xuICAgIGNvbnRyb2w/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICB9XG5cbiAgY2hhbmdlKGU6IHsgdGFyZ2V0OiB7IGNoZWNrZWQ/OiBib29sZWFuOyB2YWx1ZTogYW55IH0gfSB8IEV2ZW50KSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgbGV0IHZhbDtcbiAgICBpZiAodGhpcy50eXBlU2lnbmFsKCkgPT0gJ2NoZWNrYm94Jykge1xuICAgICAgdmFsID0gZS50YXJnZXQ/LlsnY2hlY2tlZCddO1xuICAgICAgdGhpcy5jb250cm9sKCkuc2V0VmFsdWUoZS50YXJnZXQ/LlsnY2hlY2tlZCddKTtcbiAgICB9IGVsc2UgdmFsID0gdGhpcy5jb250cm9sKCk/LmdldFJhd1ZhbHVlKCk7XG4gICAgaWYgKHRoaXMudHlwZVNpZ25hbCgpID09ICdudW1iZXInKSB7XG4gICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgIGlmICh0aGlzLm9UeXBlU2lnbmFsKCkgPT0gJ3BlcmNlbnRhZ2UnICYmICF0aGlzLm1heFNpZ25hbCgpKSB7XG4gICAgICAgIHRoaXMubWF4U2lnbmFsLnNldCgxMDApO1xuICAgICAgICB0aGlzLm1pblNpZ25hbC5zZXQoMCk7XG4gICAgICB9XG4gICAgICBpZiAodmFsICE9IG51bGwgJiYgdmFsICE9ICcnKSB7XG4gICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICBpZiAodGhpcy5tYXhTaWduYWwoKSAmJiArdmFsID4gK3RoaXMubWF4U2lnbmFsKCkpIHRoaXMuY29udHJvbCgpLnNldFZhbHVlKHRoaXMubWF4U2lnbmFsKCkpO1xuICAgICAgICBlbHNlIGlmIChcbiAgICAgICAgICB0aGlzLm1pblNpZ25hbCgpICE9IG51bGwgJiZcbiAgICAgICAgICB0aGlzLm1pblNpZ25hbCgpICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICt2YWwgPCArdGhpcy5taW5TaWduYWwoKVxuICAgICAgICApXG4gICAgICAgICAgdGhpcy5jb250cm9sKCkuc2V0VmFsdWUodGhpcy5taW5TaWduYWwoKSk7XG4gICAgICAgIGlmICh0aGlzLmRlY2ltYWxQb2ludHMgIT0gdW5kZWZpbmVkICYmIHRoaXMuZGVjaW1hbFBvaW50cyAhPSBudWxsKVxuICAgICAgICAgIHRoaXMuY29udHJvbCgpLnNldFZhbHVlKCsoK3ZhbCkudG9GaXhlZCh0aGlzLmRlY2ltYWxQb2ludHMpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMubWF4TGVuZ3RoICYmIHRoaXMuY29udHJvbCgpPy52YWx1ZT8udG9TdHJpbmcoKS5sZW5ndGggPiB0aGlzLm1heExlbmd0aClcbiAgICAgIHRoaXMuY29udHJvbCgpLnNldFZhbHVlKFxuICAgICAgICB0aGlzLnR5cGVTaWduYWwoKSA9PSAnbnVtYmVyJ1xuICAgICAgICAgID8gK3RoaXMuY29udHJvbCgpPy5nZXRSYXdWYWx1ZSgpPy50b1N0cmluZygpLnNsaWNlKDAsIHRoaXMubWF4TGVuZ3RoKVxuICAgICAgICAgIDogdGhpcy5jb250cm9sKCk/LmdldFJhd1ZhbHVlKCk/LnRvU3RyaW5nKCkuc2xpY2UoMCwgdGhpcy5tYXhMZW5ndGgpLFxuICAgICAgKTtcbiAgICB0aGlzLm1jaGFuZ2UuZW1pdCh0aGlzLmNvbnRyb2woKT8uZ2V0UmF3VmFsdWUoKSk7XG4gICAgLy8gZGVidWdnZXJcbiAgfVxuXG4gIHVwbG9hZChlKSB7XG4gICAgdGhpcy5maWxlcyA9IGUudGFyZ2V0LmZpbGVzO1xuICAgIHRoaXMubWNoYW5nZS5lbWl0KGUpO1xuICB9XG59XG5leHBvcnQgdHlwZSBPcHRpb25MYWJlbFR5cGUgPVxuICB8ICdhY2QnXG4gIHwgJ2JuaydcbiAgfCAnY2NkJ1xuICB8ICdjZCdcbiAgfCAnY2R0J1xuICB8ICdjZidcbiAgfCAnY2cnXG4gIHwgJ2NsJ1xuICB8ICdjbWQnXG4gIHwgJ2NuJ1xuICB8ICdjdCdcbiAgfCAnY3UnXG4gIHwgJ2dkJ1xuICB8ICdoYSdcbiAgfCAnaWQnXG4gIHwgJ2lmJ1xuICB8ICdpZmwnXG4gIHwgJ2lsJ1xuICB8ICdpdCdcbiAgfCAnbWQnXG4gIHwgJ25hJ1xuICB8ICdwZCdcbiAgfCAncGVwJ1xuICB8ICdwYW0nXG4gIHwgJ25mJ1xuICB8ICd0ZCdcbiAgfCAndGl0bGUnXG4gIHwgJ3VkJ1xuICB8ICd1ZidcbiAgfCAndmwnXG4gIHwgJ3Z2JztcblxuZXhwb3J0IHsgSU9wdGlvbiB9IGZyb20gJy4vaW5wdXQuc2VydmljZSc7XG4iLCI8IS0tIDxkaXY+Zm9ybSgpLmdldFJhd1ZhbHVlOiB7e2ZmfX08L2Rpdj4gLS0+XG5AaWYgKHZlcmJvc2UoKSkge1xuICA8ZGl2PmRpc2FibGVkU2lnbmFsOiB7eyBkaXNhYmxlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXY+dmFsaWRTaWduYWw6IHt7IHZhbGlkU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj5pbnZhbGlkU2lnbmFsOiB7eyBpbnZhbGlkU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj52YWx1ZVNpZ25hbDoge3sgdmFsdWVTaWduYWwoKSB9fTwvZGl2PlxuICA8ZGl2Pmhhc1ZhbHVlOiB7eyBoYXNWYWx1ZSgpIH19PC9kaXY+XG4gIDxkaXY+ZGlydHlTaWduYWw6IHt7IGRpcnR5U2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj50b3VjaGVkU2lnbmFsOiB7eyB0b3VjaGVkU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj5lcnJvcnNTaWduYWw6IHt7IGVycm9yc1NpZ25hbGpzb24oKSB9fTwvZGl2PlxuICA8ZGl2PnBlbmRpbmdTaWduYWw6IHt7IHBlbmRpbmdTaWduYWwoKSB9fTwvZGl2PlxuICA8ZGl2PnJlcXVpcmVkU2lnbmFsOiB7eyByZXF1aXJlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXY+cHJpc3RpbmVTaWduYWw6IHt7IHByaXN0aW5lU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj5jb250cm9sUmVxdWlyZWRTaWduYWw6IHt7IGNvbnRyb2xSZXF1aXJlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXY+aXNSZXF1aXJlZFNpZ25hbDoge3sgaXNSZXF1aXJlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJcIj5vbkNvbnRyb2xPYnRhaW5lZExpc3QgTGVuZ3RoOiB7eyBvbkNvbnRyb2xPYnRhaW5lZExpc3QoKS5sZW5ndGggfX08L2Rpdj5cbn1cbjxkaXZcbiAgY2xhc3M9XCIgIGN1c3RvbS1pbnB1dCBhbGlnbi1pdGVtcy1jZW50ZXIge3sgdHlwZVNpZ25hbCgpIH19IGd4LTFcIlxuICBbZm9ybUdyb3VwXT1cImZvcm0oKSB8IHRvQW55XCJcbiAgW25nQ2xhc3NdPVwieyAnZC1mbGV4JzogIXN0YWNrZWRTaWduYWwoKSB9XCI+XG4gIEBpZiAoY29tcHV0ZWRTaG93TGFiZWwoKSkge1xuICAgIDxhcHAtaW5wdXQtbGFiZWxcbiAgICAgIFtjb2xvcmVkXT1cImNvbG9yZWRTaWduYWwoKVwiXG4gICAgICBbZm9ybV09XCJmb3JtKClcIlxuICAgICAgW2hpbnRdPVwiaGludCgpXCJcbiAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgIFtpbnZhbGlkQ2hlY2tib3hdPVwiaW52YWxpZENoZWNrYm94U2lnbmFsKClcIlxuICAgICAgW2lzUmVxdWlyZWRdPVwiaXNSZXF1aXJlZFNpZ25hbCgpXCJcbiAgICAgIFtsYWJlbF09XCJsYWJlbFNpZ25hbCgpXCJcbiAgICAgIFtsYmxDbF09XCJsYmxDbCgpXCJcbiAgICAgIFtsaWdodF09XCJsaWdodCgpXCJcbiAgICAgIFttaW5pXT1cIm1pbmlTaWduYWwoKVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICd3LTEwMCc6IHN0YWNrZWRTaWduYWwoKSB9XCJcbiAgICAgIFtpbmxpbmVIaW50XT1cImlubGluZUhpbnQoKVwiXG4gICAgICBbc2hvd1JlcXVpcmVkVGFnXT1cInNob3dSZXF1aXJlZFRhZ1NpZ25hbCgpXCJcbiAgICAgIFtzaG93TGFiZWxdPVwic2hvd0xhYmVsU2lnbmFsKClcIlxuICAgICAgW3NtYWxsXT1cInNtYWxsU2lnbmFsKClcIlxuICAgICAgW3N0YWNrZWRdPVwic3RhY2tlZFNpZ25hbCgpXCJcbiAgICAgIFt0aGVtZV09XCJ0aGVtZSgpXCJcbiAgICAgIFt4c21hbGxdPVwieHNtYWxsKClcIiAvPlxuICB9XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHt7IGlucHV0Q29udENsYXNzU2lnbmFsKCkgfX0gXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXggaW5wdXQtY29udGVudCB3LTEwMFwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdtcy0yJzogIXN0YWNrZWRTaWduYWwoKSxcbiAgICAgICAgc2hvd1ZhbGlkYXRpb25JY29uOiBzaG93VmFsaWRhdGlvblNpZ25hbCgpIHx8IHNob3dWYWxpZGF0aW9uSWNvblNpZ25hbCgpLFxuICAgICAgICBkb250Rm9ybWF0QXNJbnB1dDogZG9udEZvcm1hdEFzSW5wdXRTaWduYWwoKSxcbiAgICAgIH1cIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0ZT5cbiAgICAgICAgPGRhdGUtaW5wdXRcbiAgICAgICAgICAjZGF0ZUlucHV0XG4gICAgICAgICAgW2RlYnVnXT1cImRlYnVnKClcIlxuICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVNpZ25hbCgpXCJcbiAgICAgICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICAgICAgY2xhc3M9XCJ3LTEwMFwiXG4gICAgICAgICAgW3R5cGVdPVwidHlwZVNpZ25hbCgpXCJcbiAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cImRhdGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVNpZ25hbCgpXCJcbiAgICAgICAgICBbaW5wdXRDbGFzc109XCJpbnB1dENsYXNzU2lnbmFsKClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFNpZ25hbCgpXCJcbiAgICAgICAgICBbbWF4XT1cIm1heFNpZ25hbCgpXCJcbiAgICAgICAgICBbbWluXT1cIm1pblNpZ25hbCgpXCJcbiAgICAgICAgICBbdmFsaWRdPVwidmFsaWRTaWduYWwoKVwiXG4gICAgICAgICAgW2ludmFsaWRdPVwiaW52YWxpZFNpZ25hbCgpXCJcbiAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwic2hvd1ZhbGlkYXRpb25TaWduYWwoKVwiIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgQHN3aXRjaCAodHlwZVNpZ25hbCgpKSB7XG4gICAgICAgIDwhLS0gREFURSAtLT5cbiAgICAgICAgQGNhc2UgKCdkYXRlJykge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlXCIgLz5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIERBVEVUSU1FLUxPQ0FMIC0tPlxuICAgICAgICBAY2FzZSAoJ2RhdGV0aW1lLWxvY2FsJykge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlXCIgLz5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIENIRUNLQk9YIC0tPlxuICAgICAgICBAY2FzZSAoJ2NoZWNrYm94Jykge1xuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFtZVN0clNpZ25hbCgpXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtbm9mb3JtYXRdPVwiY29tcHV0ZWROb0Zvcm1hdCgpXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtZGVidWddPVwiZGVidWcoKVwiXG4gICAgICAgICAgICBjbGFzcz1cInt7IGlucENsU2lnbmFsKCkgfX0gZC1pbmxpbmUtYmxvY2sgZm9ybS1jb250cm9sIHdpZHRoLXVuc2V0XCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIoKSB9fVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlTaWduYWwoKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbYXR0ci5pbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVcIiAvPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnY2hlY2tlZGJveCcpIHtcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBjbGFzcz1cInt7IGlucENsU2lnbmFsKCkgfX0gZC1pbmxpbmUtYmxvY2sgZm9ybS1jb250cm9sIHdpZHRoLXVuc2V0XCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWRlYnVnXT1cImRlYnVnKClcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkU2lnbmFsKClcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5U2lnbmFsKClcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBGSUxFIC0tPlxuICAgICAgICBAY2FzZSAoJ2ZpbGUnKSB7XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiaW5wdXRDbGFzc1NpZ25hbCgpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidXBsb2FkKCRldmVudClcIlxuICAgICAgICAgICAgW2FjY2VwdF09XCJhY2NlcHRcIlxuICAgICAgICAgICAgW2F0dHIubXVsdGlwbGVdPVwibXVsdGlwbGVcIiAvPlxuICAgICAgICB9XG4gICAgICAgIDwhLS0gRklMRSBCVVRUT04tLT5cbiAgICAgICAgQGNhc2UgKCdmaWxlQnV0dG9uJykge1xuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgW2lkXT1cImlkU2lnbmFsKClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImlucHV0Q2xhc3NTaWduYWwoKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInVwbG9hZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFthY2NlcHRdPVwiYWNjZXB0XCJcbiAgICAgICAgICAgIFthdHRyLm11bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgIGhpZGRlblxuICAgICAgICAgICAgI2ZpbGUgLz5cbiAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMFwiXG4gICAgICAgICAgICAobWNsaWNrKT1cImZpbGUuY2xpY2soKVwiXG4gICAgICAgICAgICBpY29uPVwidXBsb2FkXCJcbiAgICAgICAgICAgIFt0eXBlXT1cImZpbGVzID8gJ3ByaW1hcnknIDogJ3NlY29uZGFyeSdcIlxuICAgICAgICAgICAgdGV4dD1cInt7IHBsYWNlaG9sZGVyKCkgfHwgbGFiZWxTaWduYWwoKSB8fCAnVXBsb2FkJyB9fVwiPjwvYXBwLWJ0bj5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIFNFTEVDVCAtLT5cbiAgICAgICAgQGNhc2UgKCdzZWxlY3QnKSB7XG4gICAgICAgICAgPCEtLSBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZFwiIC0tPlxuICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAjbWF0U2VsZWN0VGFnXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyKCkgfX1cIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgbmFtZVN0clNpZ25hbCgpIH19XCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwie3sgY2xzKCkgfX0ge3sgaW5wdXRDbGFzc1NpZ25hbCgpIH19XCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlKHsgdGFyZ2V0OiAkZXZlbnQgfSlcIj5cbiAgICAgICAgICAgIEBpZiAoc2hvd0VtcHR5T3B0aW9uU2lnbmFsKCkpIHtcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gc2VsZWN0ZWQgW3ZhbHVlXT1cIm51bGxcIiBjbGFzcz1cImVtcHR5LW9wdGlvblwiPlxuICAgICAgICAgICAgICAgIHt7IHBsYWNlaG9sZGVyKCkgfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBvcHRpb25zKCk7IHRyYWNrIGl0ZW0uX2lkKSB7XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCIgKG9uU2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdGVkT3B0aW9uKGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFNob3dEZWxheV09XCIxMDAwXCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiZWxlLnNjcm9sbFdpZHRoIDw9IGVsZS5vZmZzZXRXaWR0aFwiXG4gICAgICAgICAgICAgICAgICAjZWxlPlxuICAgICAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB8IGFwcFRyYW5zbGF0ZTogdHJhbnNsYXRvck9wdGlvbnMoKSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBURVhUQVJFQSAtLT5cbiAgICAgICAgQGNhc2UgKCd0ZXh0YXJlYScpIHtcbiAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFtZVN0clNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJpbnB1dENsYXNzU2lnbmFsKClcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgW3Jvd3NdPVwidGV4dGFyZWFSb3dzU2lnbmFsKClcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkU2lnbmFsKClcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5U2lnbmFsKClcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiPjwvdGV4dGFyZWE+XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBSYWRpbyAtLT5cbiAgICAgICAgQGNhc2UgKCdyYWRpbycpIHtcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5hbWVTdHJTaWduYWwoKVwiXG4gICAgICAgICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlTaWduYWwoKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtbm9mb3JtYXRdPVwiY29tcHV0ZWROb0Zvcm1hdCgpXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVNpZ25hbCgpXCIgLz5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIFZpZXdlciAtLT5cbiAgICAgICAgQGNhc2UgKCd2aWV3ZXInKSB7XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyKCkgfX1cIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImlucHV0Q2xhc3NTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVTaWduYWwoKVwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBQQVNTV09SRCAtLT5cbiAgICAgICAgQGNhc2UgKCdwYXNzd29yZCcpIHtcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ7eyBzaG93UGFzc3dvcmRTaWduYWwoKSA/ICd0ZXh0JyA6ICdwYXNzd29yZCcgfX1cIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJuYW1lU3RyU2lnbmFsKClcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBwbGFjZWhvbGRlcigpIH19XCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtbm9mb3JtYXRdPVwiY29tcHV0ZWROb0Zvcm1hdCgpXCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJpbnB1dENsYXNzU2lnbmFsKClcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkU2lnbmFsKClcIlxuICAgICAgICAgICAgW21heF09XCJtYXhTaWduYWwoKVwiXG4gICAgICAgICAgICBbbWluXT1cIm1pblNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVNpZ25hbCgpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlU2lnbmFsKClcIiAvPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicGFzc3dvcmQtaWNvbnMgcG9pbnRlclwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2hvd1Bhc3N3b3JkU2lnbmFsLnNldCghc2hvd1Bhc3N3b3JkU2lnbmFsKCkpXCI+XG4gICAgICAgICAgICBAaWYgKHNob3dQYXNzd29yZFNpZ25hbCgpKSB7XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllLXNsYXNoXCI+PC9pPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllXCI+PC9pPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDwhLS0gREVGQVVMVCAtLT5cbiAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtjbGFzc109XCJpbnB1dENsYXNzU2lnbmFsKClcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnaGFzLXByZWZpeCc6ICEhcHJlZml4U2lnbmFsKCksXG4gICAgICAgICAgICAgIGRpc2FibGVkOiByZWFkb25seVNpZ25hbCgpIHx8IGRpc2FibGVkU2lnbmFsKCksXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICBAaWYgKHByZWZpeFNpZ25hbCgpKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmVmaXgtdmFsXCIgI3ByZWZpeFZhbD5cbiAgICAgICAgICAgICAgICB7eyBwcmVmaXhTaWduYWwoKSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBbdHlwZV09XCJ0eXBlU2lnbmFsKClcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5hbWVTdHJTaWduYWwoKVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIoKSB9fVwiXG4gICAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiZWxlLmlubmVyVGV4dFwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiZWxlLnNjcm9sbFdpZHRoIDw9IGVsZS5vZmZzZXRXaWR0aFwiXG4gICAgICAgICAgICAgICNlbGVcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1kZWJ1Z109XCJkZWJ1ZygpXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLW90eXBlXT1cIm9UeXBlU2lnbmFsKClcIlxuICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRTaWduYWwoKVwiXG4gICAgICAgICAgICAgIFttYXhdPVwibWF4U2lnbmFsKClcIlxuICAgICAgICAgICAgICBbbWluXT1cIm1pblNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5U2lnbmFsKClcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZSgkZXZlbnQpXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaWYgKGRpcnR5U2lnbmFsKCkgJiYgKHNob3dWYWxpZGF0aW9uU2lnbmFsKCkgfHwgc2hvd1ZhbGlkYXRpb25JY29uU2lnbmFsKCkpKSB7XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyB2YWxpZDogdmFsaWRTaWduYWwoKSB9XCIgY2xhc3M9XCJ2YWxpZGl0eS1pY29uXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGVja1wiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyBwZW5kaW5nOiBwZW5kaW5nU2lnbmFsKCkgfVwiIGNsYXNzPVwidmFsaWRpdHktaWNvblwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc3Bpbm5lciBmYS1zcGluXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7IGludmFsaWQ6IGludmFsaWRTaWduYWwoKSB9XCIgY2xhc3M9XCJ2YWxpZGl0eS1pY29uXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8IS0tIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImlucHV0XCIgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJ7e2lucC50eXBlfX1cIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwiaW5wLmZvcm1Db250cm9sXCI+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgaW5wLnZtc1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2YWxpZGF0aW9ufHZhbGlkYXRvcjppbnAuZm9ybUNvbnRyb2w6aW5wLmZvcm1Db250cm9sPy52YWx1ZVwiPlxuICAgICAgICAgICAge3t2YWxpZGF0aW9uLm1lc3NhZ2V8dmFsaWRhdGlvbk1zZzppbnAucHJlZml4OmlucC5zdWZmaXh9fVxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+IC0tPlxuICAgIDwvZGl2PlxuICAgIEBpZiAoZW5kTGFiZWxTaWduYWwoKSkge1xuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNvbC1hdXRvIHRleHQtcHJpbWFyeSBtcy0yXCJcbiAgICAgICAgKGNsaWNrKT1cImlTLmxvZyhmb3JtKCkpXCJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZW5kTGFiZWxUb29sdGlwU2lnbmFsKCkgfCBhcHBUcmFuc2xhdGUgfCBhc3luY1wiPlxuICAgICAgICB7eyBlbmRMYWJlbFNpZ25hbCgpIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj5cbkBpZiAoc2hvd1ZhbGlkYXRpb25Nc2dTaWduYWwoKSkge1xuICA8YXBwLXZhbGlkYXRpb24tbWVzc2FnZVxuICAgIFtsYWJlbF09XCJsYWJlbFNpZ25hbCgpXCJcbiAgICBbbWluTGVuZ3RoXT1cIm1pbkxlbmd0aCgpXCJcbiAgICBbZGVidWddPVwiZGVidWcoKVwiXG4gICAgW21heExlbmd0aF09XCJtYXhMZW5ndGgoKVwiXG4gICAgW2NvbnRyb2xdPVwiY29udHJvbCgpXCIgLz5cbn1cbiJdfQ==
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYmFzaWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2lucHV0L2lucHV0LWJhc2ljLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFHVCxNQUFNLEVBRU4sS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVduRCxNQUFNLE9BQU8sbUJBT1gsU0FBUSxTQUF3QztJQXNCaEQsc0JBQXNCO0lBQ3RCLElBQTZCLGVBQWUsQ0FBQyxDQUFVO1FBQ3JELElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQ0QsSUFBc0IsUUFBUSxDQUFDLENBQW1CO1FBQ2hELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUFFLFFBQVEsQ0FBQztRQUMzQixJ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QUs7Z0JBQ1UsR0FBRztzQkFBbEIsS0FBSzt1QkFBQyxPQUFPO2dCQUNMLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0ksb0JBQW9CO3NCQUE3QixNQUFNO2dCQU1zQixlQUFlO3NCQUEzQyxLQUFLO3VCQUFDLGdCQUFnQjtnQkFHRCxRQUFRO3NCQUE3QixLQUFLO3VCQUFDLFNBQVM7Z0JBTVcsU0FBUztzQkFBbkMsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRkNJbnB1dCwgSW5wdXRUeXBlLCBJVmFsaWRhdGlvbk1lc3NhZ2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgTWF0U2VsZWN0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE1hdE9wdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgSW5wdXRQcm92aWRlcnMsIElucHV0U2hhcmVkTW9kdWxlcyB9IGZyb20gJy4vaW5wdXQtc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBEYXRlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRCYXNlIH0gZnJvbSAnLi9pbnB1dC1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJT3B0aW9uLCBJbnB1dFNlcnZpY2UgfSBmcm9tICcuL2lucHV0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtaW5wdXQtYmFzaWMsYXBwLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBJbnB1dFByb3ZpZGVycyxcbiAgaW1wb3J0czogW0RhdGVJbnB1dENvbXBvbmVudCwgSW5wdXRTaGFyZWRNb2R1bGVzXSxcbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRCYXNpY0NvbXBvbmVudDxcbiAgICBURm9ybUdyb3VwIGV4dGVuZHMge1xuICAgICAgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gICAgfSA9IGFueSxcbiAgICBUQ29udHJvbCA9IGFueSxcbiAgICBUT3B0aW9uID0gYW55LFxuICA+XG4gIGV4dGVuZHMgSW5wdXRCYXNlPFRGb3JtR3JvdXAsIFRDb250cm9sLCBUT3B0aW9uPlxuICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICBASW5wdXQoKSBhY2NlcHQ6IHN0cmluZztcbiAgQElucHV0KCkgYXV0b2NvbXBsZXRlOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCdpbnB1dCcpIGlucDogRkNJbnB1dDtcbiAgQElucHV0KCkgY29udGV4dERhdGE6IGFueTtcbiAgQElucHV0KCkgZGVjaW1hbFBvaW50czogbnVtYmVyO1xuICBASW5wdXQoKSBmaWxlczogRmlsZVtdO1xuICBASW5wdXQoKSBoaWRlOiBib29sZWFuO1xuXG4gIG92ZXJyaWRlIHJlYWRvbmx5IGNsZWFyT25EaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIEBJbnB1dCgpIGxhYmVsTGluazogc3RyaW5nO1xuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgb3B0aW9uc0Z1bmM6ICguLi52YWw6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnlbXT47XG4gIEBJbnB1dCgpIHZtczogSVZhbGlkYXRpb25NZXNzYWdlW107XG4gIEBPdXRwdXQoKSBtU2VsZWN0ZWRPcHRpb25MYWJlbCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBvcHRpb25zJCA9IG5ldyBSZXBsYXlTdWJqZWN0PElPcHRpb25bXT4oKTtcbiAgdmlld0luaXRlZDogYm9vbGVhbjtcbiAgZm9yY2VQYXRjaGVkOiBib29sZWFuO1xuXG4gIC8vIGxhYmVsVmFsdWU6IHN0cmluZztcbiAgQElucHV0KCdzZXRDdXJyZW50RGF0ZScpIHNldCBfc2V0Q3VycmVudERhdGUodjogYm9vbGVhbikge1xuICAgIGlmICh2KSB0aGlzLmNvbnRyb2woKT8ucGF0Y2hWYWx1ZShuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXSk7XG4gIH1cbiAgQElucHV0KCdvcHRpb25zJykgc2V0IF9vcHRpb25zKHY6IFRPcHRpb25bXSB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICB0aGlzLnJhd09wdGlvbnNTaWduYWwuc2V0KHY/LmZpbHRlcigoeCkgPT4geCAhPSBudWxsKSB8fCBbXSk7XG4gICAgdGhpcy5vcHRpb25zJC5uZXh0KHRoaXMub3B0aW9ucygpKTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ21hdFNlbGVjdFRhZycpIG1hdFNlbGVjdDogTWF0U2VsZWN0O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnNldEZvcm1hdHRlZFZhbHVlKCkgJiYgdGhpcy5jb250cm9sKCkgJiYgdGhpcy50eXBlU2lnbmFsKCkgPT0gJ3NlbGVjdCcpIHtcbiAgICAgICAgdGhpcy5jb250cm9sKCkuZm9ybWF0dGVkVmFsdWUgPSAoPE1hdE9wdGlvbj50aGlzLm1hdFNlbGVjdD8uc2VsZWN0ZWQpPy52aWV3VmFsdWU7XG4gICAgICAgIHRoaXMubVNlbGVjdGVkT3B0aW9uTGFiZWwuZW1pdCgoPE1hdE9wdGlvbj50aGlzLm1hdFNlbGVjdD8uc2VsZWN0ZWQpPy52aWV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b1BpY2tWYWx1ZUZpZWxkKCkpIHtcbiAgICAgIGlmICghdGhpcy5sYWJlbFR5cGUoKSkgdGhpcy5sYWJlbFR5cGUuc2V0KCdjZHQnKTtcbiAgICAgIGlmICghdGhpcy52YWx1ZUZpZWxkKCkpIHRoaXMudmFsdWVGaWVsZC5zZXQoJ2NvZGUnIGFzIGFueSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1pblNpZ25hbCgpID09IDAgJiYgdGhpcy5tYXhTaWduYWwoKSA9PSAxMDApIHRoaXMub1R5cGVTaWduYWwuc2V0KCdwZXJjZW50YWdlJyk7XG5cbiAgICAvLyBpZiAodGhpcy50eXBlID09ICdzZWxlY3QnIHx8IHRoaXMudHlwZSA9PSAnYXV0b2NvbXBsZXRlJylcbiAgICAvLyAgIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgLy8gICAgIHRoaXMubGFiZWxWYWx1ZSA9IHRoaXMub3B0aW9ucy5maW5kKCh4KSA9PiB4LnZhbHVlID09IHIpPy5sYWJlbDtcbiAgICAvLyAgIH0pO1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuaWQpXG4gICAgLy8gaWYgKHRoaXMuZGlzYWJsZWQpIHRoaXMuX2Rpc2FibGVkID0gdGhpcy5kaXNhYmxlZDtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyB0aGlzLnZpZXdJbml0ZWQgPSB0cnVlO1xuICB9XG5cbiAgZGlzYWJsZUNvbnRyb2woY29udHJvbDogQWJzdHJhY3RDb250cm9sID0gdGhpcy5jb250cm9sKCkpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWRTaWduYWwoKSkgcmV0dXJuO1xuICAgIGNvbnRyb2w/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICB9XG5cbiAgY2hhbmdlKGU6IHsgdGFyZ2V0OiB7IGNoZWNrZWQ/OiBib29sZWFuOyB2YWx1ZTogYW55IH0gfSB8IEV2ZW50KSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgbGV0IHZhbDtcbiAgICBpZiAodGhpcy50eXBlU2lnbmFsKCkgPT0gJ2NoZWNrYm94Jykge1xuICAgICAgdmFsID0gZS50YXJnZXQ/LlsnY2hlY2tlZCddO1xuICAgICAgdGhpcy5jb250cm9sKCkuc2V0VmFsdWUoZS50YXJnZXQ/LlsnY2hlY2tlZCddKTtcbiAgICB9IGVsc2UgdmFsID0gdGhpcy5jb250cm9sKCk/LmdldFJhd1ZhbHVlKCk7XG4gICAgaWYgKHRoaXMudHlwZVNpZ25hbCgpID09ICdudW1iZXInKSB7XG4gICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgIGlmICh0aGlzLm9UeXBlU2lnbmFsKCkgPT0gJ3BlcmNlbnRhZ2UnICYmICF0aGlzLm1heFNpZ25hbCgpKSB7XG4gICAgICAgIHRoaXMubWF4U2lnbmFsLnNldCgxMDApO1xuICAgICAgICB0aGlzLm1pblNpZ25hbC5zZXQoMCk7XG4gICAgICB9XG4gICAgICBpZiAodmFsICE9IG51bGwgJiYgdmFsICE9ICcnKSB7XG4gICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICBpZiAodGhpcy5tYXhTaWduYWwoKSAmJiArdmFsID4gK3RoaXMubWF4U2lnbmFsKCkpIHRoaXMuY29udHJvbCgpLnNldFZhbHVlKHRoaXMubWF4U2lnbmFsKCkpO1xuICAgICAgICBlbHNlIGlmIChcbiAgICAgICAgICB0aGlzLm1pblNpZ25hbCgpICE9IG51bGwgJiZcbiAgICAgICAgICB0aGlzLm1pblNpZ25hbCgpICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICt2YWwgPCArdGhpcy5taW5TaWduYWwoKVxuICAgICAgICApXG4gICAgICAgICAgdGhpcy5jb250cm9sKCkuc2V0VmFsdWUodGhpcy5taW5TaWduYWwoKSk7XG4gICAgICAgIGlmICh0aGlzLmRlY2ltYWxQb2ludHMgIT0gdW5kZWZpbmVkICYmIHRoaXMuZGVjaW1hbFBvaW50cyAhPSBudWxsKVxuICAgICAgICAgIHRoaXMuY29udHJvbCgpLnNldFZhbHVlKCsoK3ZhbCkudG9GaXhlZCh0aGlzLmRlY2ltYWxQb2ludHMpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMubWF4TGVuZ3RoICYmIHRoaXMuY29udHJvbCgpPy52YWx1ZT8udG9TdHJpbmcoKS5sZW5ndGggPiB0aGlzLm1heExlbmd0aClcbiAgICAgIHRoaXMuY29udHJvbCgpLnNldFZhbHVlKFxuICAgICAgICB0aGlzLnR5cGVTaWduYWwoKSA9PSAnbnVtYmVyJ1xuICAgICAgICAgID8gK3RoaXMuY29udHJvbCgpPy5nZXRSYXdWYWx1ZSgpPy50b1N0cmluZygpLnNsaWNlKDAsIHRoaXMubWF4TGVuZ3RoKVxuICAgICAgICAgIDogdGhpcy5jb250cm9sKCk/LmdldFJhd1ZhbHVlKCk/LnRvU3RyaW5nKCkuc2xpY2UoMCwgdGhpcy5tYXhMZW5ndGgpLFxuICAgICAgKTtcbiAgICB0aGlzLm1jaGFuZ2UuZW1pdCh0aGlzLmNvbnRyb2woKT8uZ2V0UmF3VmFsdWUoKSk7XG4gICAgLy8gZGVidWdnZXJcbiAgfVxuXG4gIHVwbG9hZChlOiBFdmVudCkge1xuICAgIHRoaXMuZmlsZXMgPSBBcnJheS5mcm9tKGUudGFyZ2V0WydmaWxlcyddKTtcbiAgICB0aGlzLm1jaGFuZ2UuZW1pdChlKTtcbiAgICB0aGlzLmNvbnRyb2woKT8ucGF0Y2hWYWx1ZSh0aGlzLm11bHRpcGxlID8gdGhpcy5maWxlcyA6IHRoaXMuZmlsZXNbMF0pO1xuICB9XG59XG5leHBvcnQgdHlwZSBPcHRpb25MYWJlbFR5cGUgPVxuICB8ICdhY2QnXG4gIHwgJ2JuaydcbiAgfCAnY2NkJ1xuICB8ICdjZCdcbiAgfCAnY2R0J1xuICB8ICdjZidcbiAgfCAnY2cnXG4gIHwgJ2NsJ1xuICB8ICdjbWQnXG4gIHwgJ2NuJ1xuICB8ICdjdCdcbiAgfCAnY3UnXG4gIHwgJ2dkJ1xuICB8ICdoYSdcbiAgfCAnaWQnXG4gIHwgJ2lmJ1xuICB8ICdpZmwnXG4gIHwgJ2lsJ1xuICB8ICdpdCdcbiAgfCAnbWQnXG4gIHwgJ25hJ1xuICB8ICdwZCdcbiAgfCAncGVwJ1xuICB8ICdwYW0nXG4gIHwgJ25mJ1xuICB8ICd0ZCdcbiAgfCAndGl0bGUnXG4gIHwgJ3VkJ1xuICB8ICd1ZidcbiAgfCAndmwnXG4gIHwgJ3Z2JztcblxuZXhwb3J0IHsgSU9wdGlvbiB9IGZyb20gJy4vaW5wdXQuc2VydmljZSc7XG4iLCI8IS0tIDxkaXY+Zm9ybSgpLmdldFJhd1ZhbHVlOiB7e2ZmfX08L2Rpdj4gLS0+XG5AaWYgKHZlcmJvc2UoKSkge1xuICA8ZGl2PmRpc2FibGVkU2lnbmFsOiB7eyBkaXNhYmxlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXY+dmFsaWRTaWduYWw6IHt7IHZhbGlkU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj5pbnZhbGlkU2lnbmFsOiB7eyBpbnZhbGlkU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj52YWx1ZVNpZ25hbDoge3sgdmFsdWVTaWduYWwoKSB9fTwvZGl2PlxuICA8ZGl2Pmhhc1ZhbHVlOiB7eyBoYXNWYWx1ZSgpIH19PC9kaXY+XG4gIDxkaXY+ZGlydHlTaWduYWw6IHt7IGRpcnR5U2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj50b3VjaGVkU2lnbmFsOiB7eyB0b3VjaGVkU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj5lcnJvcnNTaWduYWw6IHt7IGVycm9yc1NpZ25hbGpzb24oKSB9fTwvZGl2PlxuICA8ZGl2PnBlbmRpbmdTaWduYWw6IHt7IHBlbmRpbmdTaWduYWwoKSB9fTwvZGl2PlxuICA8ZGl2PnJlcXVpcmVkU2lnbmFsOiB7eyByZXF1aXJlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXY+cHJpc3RpbmVTaWduYWw6IHt7IHByaXN0aW5lU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj5jb250cm9sUmVxdWlyZWRTaWduYWw6IHt7IGNvbnRyb2xSZXF1aXJlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXY+aXNSZXF1aXJlZFNpZ25hbDoge3sgaXNSZXF1aXJlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJcIj5vbkNvbnRyb2xPYnRhaW5lZExpc3QgTGVuZ3RoOiB7eyBvbkNvbnRyb2xPYnRhaW5lZExpc3QoKS5sZW5ndGggfX08L2Rpdj5cbn1cbjxkaXZcbiAgY2xhc3M9XCIgIGN1c3RvbS1pbnB1dCBhbGlnbi1pdGVtcy1jZW50ZXIge3sgdHlwZVNpZ25hbCgpIH19IGd4LTFcIlxuICBbZm9ybUdyb3VwXT1cImZvcm0oKSB8IHRvQW55XCJcbiAgW25nQ2xhc3NdPVwieyAnZC1mbGV4JzogIXN0YWNrZWRTaWduYWwoKSB9XCI+XG4gIEBpZiAoY29tcHV0ZWRTaG93TGFiZWwoKSkge1xuICAgIDxhcHAtaW5wdXQtbGFiZWxcbiAgICAgIFtjb2xvcmVkXT1cImNvbG9yZWRTaWduYWwoKVwiXG4gICAgICBbZm9ybV09XCJmb3JtKClcIlxuICAgICAgW2hpbnRdPVwiaGludCgpXCJcbiAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgIFtpbnZhbGlkQ2hlY2tib3hdPVwiaW52YWxpZENoZWNrYm94U2lnbmFsKClcIlxuICAgICAgW2lzUmVxdWlyZWRdPVwiaXNSZXF1aXJlZFNpZ25hbCgpXCJcbiAgICAgIFtsYWJlbF09XCJsYWJlbFNpZ25hbCgpXCJcbiAgICAgIFtsYmxDbF09XCJsYmxDbCgpXCJcbiAgICAgIFtsaWdodF09XCJsaWdodCgpXCJcbiAgICAgIFttaW5pXT1cIm1pbmlTaWduYWwoKVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICd3LTEwMCc6IHN0YWNrZWRTaWduYWwoKSB9XCJcbiAgICAgIFtpbmxpbmVIaW50XT1cImlubGluZUhpbnQoKVwiXG4gICAgICBbc2hvd1JlcXVpcmVkVGFnXT1cInNob3dSZXF1aXJlZFRhZ1NpZ25hbCgpXCJcbiAgICAgIFtzaG93TGFiZWxdPVwic2hvd0xhYmVsU2lnbmFsKClcIlxuICAgICAgW3NtYWxsXT1cInNtYWxsU2lnbmFsKClcIlxuICAgICAgW3N0YWNrZWRdPVwic3RhY2tlZFNpZ25hbCgpXCJcbiAgICAgIFt0aGVtZV09XCJ0aGVtZSgpXCJcbiAgICAgIFt4c21hbGxdPVwieHNtYWxsKClcIiAvPlxuICB9XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHt7IGlucHV0Q29udENsYXNzU2lnbmFsKCkgfX0gXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXggaW5wdXQtY29udGVudCB3LTEwMFwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdtcy0yJzogIXN0YWNrZWRTaWduYWwoKSxcbiAgICAgICAgc2hvd1ZhbGlkYXRpb25JY29uOiBzaG93VmFsaWRhdGlvblNpZ25hbCgpIHx8IHNob3dWYWxpZGF0aW9uSWNvblNpZ25hbCgpLFxuICAgICAgICBkb250Rm9ybWF0QXNJbnB1dDogZG9udEZvcm1hdEFzSW5wdXRTaWduYWwoKSxcbiAgICAgIH1cIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0ZT5cbiAgICAgICAgPGRhdGUtaW5wdXRcbiAgICAgICAgICAjZGF0ZUlucHV0XG4gICAgICAgICAgW2RlYnVnXT1cImRlYnVnKClcIlxuICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVNpZ25hbCgpXCJcbiAgICAgICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICAgICAgY2xhc3M9XCJ3LTEwMFwiXG4gICAgICAgICAgW3R5cGVdPVwidHlwZVNpZ25hbCgpXCJcbiAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cImRhdGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVNpZ25hbCgpXCJcbiAgICAgICAgICBbaW5wdXRDbGFzc109XCJpbnB1dENsYXNzU2lnbmFsKClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFNpZ25hbCgpXCJcbiAgICAgICAgICBbbWF4XT1cIm1heFNpZ25hbCgpXCJcbiAgICAgICAgICBbbWluXT1cIm1pblNpZ25hbCgpXCJcbiAgICAgICAgICBbdmFsaWRdPVwidmFsaWRTaWduYWwoKVwiXG4gICAgICAgICAgW2ludmFsaWRdPVwiaW52YWxpZFNpZ25hbCgpXCJcbiAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwic2hvd1ZhbGlkYXRpb25TaWduYWwoKVwiIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgQHN3aXRjaCAodHlwZVNpZ25hbCgpKSB7XG4gICAgICAgIDwhLS0gREFURSAtLT5cbiAgICAgICAgQGNhc2UgKCdkYXRlJykge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlXCIgLz5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIERBVEVUSU1FLUxPQ0FMIC0tPlxuICAgICAgICBAY2FzZSAoJ2RhdGV0aW1lLWxvY2FsJykge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlXCIgLz5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIENIRUNLQk9YIC0tPlxuICAgICAgICBAY2FzZSAoJ2NoZWNrYm94Jykge1xuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFtZVN0clNpZ25hbCgpXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtbm9mb3JtYXRdPVwiY29tcHV0ZWROb0Zvcm1hdCgpXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtZGVidWddPVwiZGVidWcoKVwiXG4gICAgICAgICAgICBjbGFzcz1cInt7IGlucENsU2lnbmFsKCkgfX0gZC1pbmxpbmUtYmxvY2sgZm9ybS1jb250cm9sIHdpZHRoLXVuc2V0XCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIoKSB9fVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlTaWduYWwoKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbYXR0ci5pbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVcIiAvPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnY2hlY2tlZGJveCcpIHtcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBjbGFzcz1cInt7IGlucENsU2lnbmFsKCkgfX0gZC1pbmxpbmUtYmxvY2sgZm9ybS1jb250cm9sIHdpZHRoLXVuc2V0XCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWRlYnVnXT1cImRlYnVnKClcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkU2lnbmFsKClcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5U2lnbmFsKClcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBGSUxFIC0tPlxuICAgICAgICBAY2FzZSAoJ2ZpbGUnKSB7XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiaW5wdXRDbGFzc1NpZ25hbCgpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidXBsb2FkKCRldmVudClcIlxuICAgICAgICAgICAgW2FjY2VwdF09XCJhY2NlcHRcIlxuICAgICAgICAgICAgW2F0dHIubXVsdGlwbGVdPVwibXVsdGlwbGVcIiAvPlxuICAgICAgICB9XG4gICAgICAgIDwhLS0gRklMRSBCVVRUT04tLT5cbiAgICAgICAgQGNhc2UgKCdmaWxlQnV0dG9uJykge1xuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgW2lkXT1cImlkU2lnbmFsKClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImlucHV0Q2xhc3NTaWduYWwoKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInVwbG9hZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFthY2NlcHRdPVwiYWNjZXB0XCJcbiAgICAgICAgICAgIFthdHRyLm11bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgIGhpZGRlblxuICAgICAgICAgICAgI2ZpbGUgLz5cbiAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMFwiXG4gICAgICAgICAgICAobWNsaWNrKT1cImZpbGUuY2xpY2soKVwiXG4gICAgICAgICAgICBpY29uPVwidXBsb2FkXCJcbiAgICAgICAgICAgIFt0eXBlXT1cImZpbGVzID8gJ3ByaW1hcnknIDogJ3NlY29uZGFyeSdcIlxuICAgICAgICAgICAgdGV4dD1cInt7IHBsYWNlaG9sZGVyKCkgfHwgbGFiZWxTaWduYWwoKSB8fCAnVXBsb2FkJyB9fVwiPjwvYXBwLWJ0bj5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIFNFTEVDVCAtLT5cbiAgICAgICAgQGNhc2UgKCdzZWxlY3QnKSB7XG4gICAgICAgICAgPCEtLSBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZFwiIC0tPlxuICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAjbWF0U2VsZWN0VGFnXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyKCkgfX1cIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgbmFtZVN0clNpZ25hbCgpIH19XCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwie3sgY2xzKCkgfX0ge3sgaW5wdXRDbGFzc1NpZ25hbCgpIH19XCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlKHsgdGFyZ2V0OiAkZXZlbnQgfSlcIj5cbiAgICAgICAgICAgIEBpZiAoc2hvd0VtcHR5T3B0aW9uU2lnbmFsKCkpIHtcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gc2VsZWN0ZWQgW3ZhbHVlXT1cIm51bGxcIiBjbGFzcz1cImVtcHR5LW9wdGlvblwiPlxuICAgICAgICAgICAgICAgIHt7IHBsYWNlaG9sZGVyKCkgfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBvcHRpb25zKCk7IHRyYWNrIGl0ZW0uX2lkKSB7XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCIgKG9uU2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdGVkT3B0aW9uKGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFNob3dEZWxheV09XCIxMDAwXCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiZWxlLnNjcm9sbFdpZHRoIDw9IGVsZS5vZmZzZXRXaWR0aFwiXG4gICAgICAgICAgICAgICAgICAjZWxlPlxuICAgICAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB8IGFwcFRyYW5zbGF0ZTogdHJhbnNsYXRvck9wdGlvbnMoKSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBURVhUQVJFQSAtLT5cbiAgICAgICAgQGNhc2UgKCd0ZXh0YXJlYScpIHtcbiAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFtZVN0clNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJpbnB1dENsYXNzU2lnbmFsKClcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgW3Jvd3NdPVwidGV4dGFyZWFSb3dzU2lnbmFsKClcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkU2lnbmFsKClcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5U2lnbmFsKClcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiPjwvdGV4dGFyZWE+XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBSYWRpbyAtLT5cbiAgICAgICAgQGNhc2UgKCdyYWRpbycpIHtcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5hbWVTdHJTaWduYWwoKVwiXG4gICAgICAgICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlTaWduYWwoKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtbm9mb3JtYXRdPVwiY29tcHV0ZWROb0Zvcm1hdCgpXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVNpZ25hbCgpXCIgLz5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIFZpZXdlciAtLT5cbiAgICAgICAgQGNhc2UgKCd2aWV3ZXInKSB7XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyKCkgfX1cIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImlucHV0Q2xhc3NTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVTaWduYWwoKVwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBQQVNTV09SRCAtLT5cbiAgICAgICAgQGNhc2UgKCdwYXNzd29yZCcpIHtcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ7eyBzaG93UGFzc3dvcmRTaWduYWwoKSA/ICd0ZXh0JyA6ICdwYXNzd29yZCcgfX1cIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJuYW1lU3RyU2lnbmFsKClcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBwbGFjZWhvbGRlcigpIH19XCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtbm9mb3JtYXRdPVwiY29tcHV0ZWROb0Zvcm1hdCgpXCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJpbnB1dENsYXNzU2lnbmFsKClcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkU2lnbmFsKClcIlxuICAgICAgICAgICAgW21heF09XCJtYXhTaWduYWwoKVwiXG4gICAgICAgICAgICBbbWluXT1cIm1pblNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVNpZ25hbCgpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlU2lnbmFsKClcIiAvPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicGFzc3dvcmQtaWNvbnMgcG9pbnRlclwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2hvd1Bhc3N3b3JkU2lnbmFsLnNldCghc2hvd1Bhc3N3b3JkU2lnbmFsKCkpXCI+XG4gICAgICAgICAgICBAaWYgKHNob3dQYXNzd29yZFNpZ25hbCgpKSB7XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllLXNsYXNoXCI+PC9pPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllXCI+PC9pPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDwhLS0gREVGQVVMVCAtLT5cbiAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtjbGFzc109XCJpbnB1dENsYXNzU2lnbmFsKClcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnaGFzLXByZWZpeCc6ICEhcHJlZml4U2lnbmFsKCksXG4gICAgICAgICAgICAgIGRpc2FibGVkOiByZWFkb25seVNpZ25hbCgpIHx8IGRpc2FibGVkU2lnbmFsKCksXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICBAaWYgKHByZWZpeFNpZ25hbCgpKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmVmaXgtdmFsXCIgI3ByZWZpeFZhbD5cbiAgICAgICAgICAgICAgICB7eyBwcmVmaXhTaWduYWwoKSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBbdHlwZV09XCJ0eXBlU2lnbmFsKClcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5hbWVTdHJTaWduYWwoKVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIoKSB9fVwiXG4gICAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiZWxlLmlubmVyVGV4dFwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiZWxlLnNjcm9sbFdpZHRoIDw9IGVsZS5vZmZzZXRXaWR0aFwiXG4gICAgICAgICAgICAgICNlbGVcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1kZWJ1Z109XCJkZWJ1ZygpXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLW90eXBlXT1cIm9UeXBlU2lnbmFsKClcIlxuICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRTaWduYWwoKVwiXG4gICAgICAgICAgICAgIFttYXhdPVwibWF4U2lnbmFsKClcIlxuICAgICAgICAgICAgICBbbWluXT1cIm1pblNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5U2lnbmFsKClcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZSgkZXZlbnQpXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaWYgKGRpcnR5U2lnbmFsKCkgJiYgKHNob3dWYWxpZGF0aW9uU2lnbmFsKCkgfHwgc2hvd1ZhbGlkYXRpb25JY29uU2lnbmFsKCkpKSB7XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyB2YWxpZDogdmFsaWRTaWduYWwoKSB9XCIgY2xhc3M9XCJ2YWxpZGl0eS1pY29uXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGVja1wiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyBwZW5kaW5nOiBwZW5kaW5nU2lnbmFsKCkgfVwiIGNsYXNzPVwidmFsaWRpdHktaWNvblwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc3Bpbm5lciBmYS1zcGluXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7IGludmFsaWQ6IGludmFsaWRTaWduYWwoKSB9XCIgY2xhc3M9XCJ2YWxpZGl0eS1pY29uXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8IS0tIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImlucHV0XCIgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJ7e2lucC50eXBlfX1cIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwiaW5wLmZvcm1Db250cm9sXCI+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgaW5wLnZtc1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2YWxpZGF0aW9ufHZhbGlkYXRvcjppbnAuZm9ybUNvbnRyb2w6aW5wLmZvcm1Db250cm9sPy52YWx1ZVwiPlxuICAgICAgICAgICAge3t2YWxpZGF0aW9uLm1lc3NhZ2V8dmFsaWRhdGlvbk1zZzppbnAucHJlZml4OmlucC5zdWZmaXh9fVxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+IC0tPlxuICAgIDwvZGl2PlxuICAgIEBpZiAoZW5kTGFiZWxTaWduYWwoKSkge1xuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNvbC1hdXRvIHRleHQtcHJpbWFyeSBtcy0yXCJcbiAgICAgICAgKGNsaWNrKT1cImlTLmxvZyhmb3JtKCkpXCJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZW5kTGFiZWxUb29sdGlwU2lnbmFsKCkgfCBhcHBUcmFuc2xhdGUgfCBhc3luY1wiPlxuICAgICAgICB7eyBlbmRMYWJlbFNpZ25hbCgpIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj5cbkBpZiAoc2hvd1ZhbGlkYXRpb25Nc2dTaWduYWwoKSkge1xuICA8YXBwLXZhbGlkYXRpb24tbWVzc2FnZVxuICAgIFtsYWJlbF09XCJsYWJlbFNpZ25hbCgpXCJcbiAgICBbbWluTGVuZ3RoXT1cIm1pbkxlbmd0aCgpXCJcbiAgICBbZGVidWddPVwiZGVidWcoKVwiXG4gICAgW21heExlbmd0aF09XCJtYXhMZW5ndGgoKVwiXG4gICAgW2NvbnRyb2xdPVwiY29udHJvbCgpXCIgLz5cbn1cbiJdfQ==
|
|
@@ -41,7 +41,7 @@ export class TableInputRowComponent extends FormGeneratorComponent {
|
|
|
41
41
|
}, { allowSignalWrites: true });
|
|
42
42
|
}
|
|
43
43
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: TableInputRowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
44
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: TableInputRowComponent, isStandalone: true, selector: "tr[table-input-row]", inputs: { isShow: { classPropertyName: "isShow", publicName: "isShow", isSignal: true, isRequired: false, transformFunction: null }, hideAdd: { classPropertyName: "hideAdd", publicName: "hideAdd", isSignal: true, isRequired: false, transformFunction: null }, hideDelete: { classPropertyName: "hideDelete", publicName: "hideDelete", isSignal: true, isRequired: false, transformFunction: null }, borderedInput: { classPropertyName: "borderedInput", publicName: "borderedInput", isSignal: true, isRequired: false, transformFunction: null }, actionBtns: { classPropertyName: "actionBtns", publicName: "actionBtns", isSignal: true, isRequired: false, transformFunction: null }, childrenFormSchemaMap: { classPropertyName: "childrenFormSchemaMap", publicName: "childrenFormSchemaMap", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onDeleteRowFunc: "onDeleteRowFunc", onAddRowFunc: "onAddRowFunc", onActionButtonClick: "onActionButtonClick" }, usesInheritance: true, ngImport: i0, template: "@for (scheme of formSchema(); track scheme._id) {\n @if (scheme.type == 'button') {\n <td class=\"{{ scheme.cls }} w-1\">\n <div class=\"d-flex\">\n <app-btn\n [text]=\"scheme.label\"\n [type]=\"\n (form()\n | hasFormValue\n : (childrenFormSchemaMap()[scheme.field].formSchemaStr | toAny)\n : formValue())\n ? 'primary'\n : 'secondary'\n \"\n onFormInvalid=\"warn\"\n [form]=\"form()\"\n [icon]=\"scheme.icon\"\n [formSchema]=\"childrenFormSchemaMap()[scheme.field].formSchema\"\n [matTooltip]=\"\n formValue() | formValue: childrenFormSchemaMap()[scheme.field].formSchema | toAny\n \"\n (mclick)=\"dModal.open()\" />\n </div>\n <modal-comp #dModal [showFooter]=\"false\" header=\"{{ scheme.label }} Form\" width=\"70%\">\n <ng-template modalBody>\n <form-generator\n [form]=\"form()\"\n [gridXXLStyle]=\"4\"\n [gridLGStyle]=\"4\"\n [showSubmitBtn]=\"false\"\n [formSchema]=\"childrenFormSchemaMap()[scheme.field].formSchema\"\n (onSubmit)=\"dModal.close()\"></form-generator>\n @if (!isShow()) {\n <div class=\"d-flex justify-content-end\">\n <app-btn (mclick)=\"dModal.close()\" text=\"Done\" />\n </div>\n }\n </ng-template>\n </modal-comp>\n </td>\n } @else if (scheme.field) {\n @switch (true) {\n @case (scheme.type == 'tel') {\n <td class=\"{{ scheme.cls }}\">\n <app-phone-number\n [form]=\"form()\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [name]=\"scheme.field\"\n [showLabel]=\"false\"\n [noFormat]=\"scheme.noFormat\"\n [debug]=\"scheme.debug\"\n [showValidation]=\"scheme.showValidation\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [showValidationIcon]=\"scheme.showValidationIcon\"\n [countryCode3]=\"scheme.countryCode3\"\n [showValidationMsg]=\"scheme.showValidationMsg == null ? true : scheme.showValidationMsg\"\n [disabled]=\"\n scheme.disabled ||\n (scheme.disabledIf | functionCaller2: formValue() : (scheme.field | toAny))\n \"\n #inputTag />\n </td>\n }\n @case (scheme.type == 'autocomplete') {\n <td class=\"{{ scheme.cls }}\">\n <app-autocomplete\n [form]=\"form()\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [labelField]=\"scheme.labelField\"\n [noFormat]=\"scheme.noFormat\"\n [labelType]=\"scheme.labelType | toAny\"\n [showValidationMsg]=\"scheme.showValidationMsg == null ? true : scheme.showValidationMsg\"\n (mSelectedOptionLabel)=\"setOptionLabel($event, scheme)\"\n [name]=\"scheme.field | toAny\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [debug]=\"scheme.debug\"\n [optionFormatter]=\"scheme.optionFormatter\"\n [valueField]=\"scheme.valueField\"\n [options]=\"scheme.options || optionsMap[scheme.field | toAny]\"\n [hint]=\"scheme.hint\"\n [disabled]=\"\n scheme.disabled ||\n (scheme.disabledIf | functionCaller2: formValue() : (scheme.field | toAny))\n \"\n #inputTag />\n </td>\n }\n\n @default {\n <td class=\"{{ scheme.cls }}\">\n <app-input-basic\n #formField\n [name]=\"scheme.field | toAny\"\n [form]=\"form()\"\n [dontFormatAsInput]=\"scheme.dontFormatAsInput\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [type]=\"scheme.type\"\n [valueField]=\"scheme.valueField\"\n [labelType]=\"scheme.labelType | toAny\"\n [showValidationMsg]=\"scheme.showValidationMsg == null ? true : scheme.showValidationMsg\"\n [checkedSignal]=\"scheme.checked\"\n [showValidation]=\"!!scheme.asyncValidators\"\n [noFormat]=\"scheme.noFormat\"\n [showValidationIcon]=\"!!scheme.asyncValidators\"\n [debug]=\"scheme.debug\"\n [labelField]=\"scheme.labelField\"\n [optionFormatter]=\"scheme.optionFormatter\"\n (mSelectedOptionLabel)=\"setOptionLabel($event, scheme)\"\n [options]=\"scheme.options || optionsMap[scheme.field | toAny]\"\n [decimalPoints]=\"scheme.decimalPoints\"\n [hint]=\"scheme.hint\"\n [max]=\"scheme.max\"\n [min]=\"scheme.min\"\n [placeholder]=\"scheme.placeholder\"\n [disabled]=\"\n scheme.disabled ||\n (scheme.disabledIf | functionCaller2: formValue() : (scheme.field | toAny))\n \" />\n </td>\n }\n }\n }\n}\n@if (!isShow()) {\n @if (!hideDelete()) {\n <td class=\"w-1\">\n <app-btn\n group=\"delete\"\n [iconBtn]=\"true\"\n (mclick)=\"onDeleteRowFunc.emit({ btn: deleteBtn })\"\n #deleteBtn />\n </td>\n }\n @if (!hideAdd()) {\n <td class=\"w-1\">\n <app-btn [iconBtn]=\"true\" group=\"add\" (mclick)=\"onAddRowFunc.emit({ btn: addBtn })\" #addBtn />\n </td>\n }\n @for (actionBtn of actionBtns(); track actionBtn.icon) {\n <td class=\"w-1\">\n <app-btn\n [iconBtn]=\"true\"\n [group]=\"actionBtn.group\"\n [icon]=\"actionBtn.icon\"\n (mclick)=\"\n onActionButtonClick.emit({\n btn: actionBtnTemp,\n actionButton: actionBtn,\n })\n \"\n #actionBtnTemp />\n </td>\n }\n}\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "app-autocomplete,autocomplete", inputs: ["showRequiredTag", "validate", "options"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "translatorOptions", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "helpShowDelay", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "component", type: FormGeneratorComponent, selector: "form-generator", inputs: ["keyField", "presetValueForSingleOption", "isCreate", "submitOnEnterKey", "submitFunc", "submitBtnText", "submitBtnTemplate", "submitSuccessText", "showSubmitBtn", "gridStyle", "gridMDStyle", "gridLGStyle", "gridXXLStyle", "formGridClass", "useLoader", "loading", "form", "formSchema", "formSchemaNoForm", "isShow"], outputs: ["onSubmit", "mchange", "saved", "formChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "pipe", type: FormValuePipe, name: "formValue" }, { kind: "pipe", type: FunctionCaller2, name: "functionCaller2" }, { kind: "pipe", type: HasFormValuePipe, name: "hasFormValue" }, { kind: "component", type: InputBasicComponent, selector: "app-input-basic,app-input", inputs: ["accept", "autocomplete", "input", "contextData", "decimalPoints", "files", "hide", "clearOnDisable", "labelLink", "loading", "multiple", "optionsFunc", "vms", "setCurrentDate", "options"], outputs: ["mSelectedOptionLabel"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i2.ModalComponent, selector: "modal-comp", inputs: ["header", "bodyTemplateRef", "footerTemplateRef", "showHeader", "loading", "isFullscreen", "showFooter", "width", "minWidth", "height", "maxHeight", "icon", "data", "disableClose", "hasBackdrop"], outputs: ["headerChange", "showHeaderChange", "mouseLeft", "loadingChange", "showFooterChange", "modalOpen", "modalClose"] }, { kind: "directive", type: i3.ModalBodyDirective, selector: "[modalBody]" }, { kind: "component", type: PhoneNumberComponent, selector: "app-phone-number", inputs: ["showLabel", "countryCode3", "config"], outputs: ["onCountrySelect"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "pipe", type: ToAnyPipe, name: "toAny" }] }); }
|
|
44
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: TableInputRowComponent, isStandalone: true, selector: "tr[table-input-row]", inputs: { isShow: { classPropertyName: "isShow", publicName: "isShow", isSignal: true, isRequired: false, transformFunction: null }, hideAdd: { classPropertyName: "hideAdd", publicName: "hideAdd", isSignal: true, isRequired: false, transformFunction: null }, hideDelete: { classPropertyName: "hideDelete", publicName: "hideDelete", isSignal: true, isRequired: false, transformFunction: null }, borderedInput: { classPropertyName: "borderedInput", publicName: "borderedInput", isSignal: true, isRequired: false, transformFunction: null }, actionBtns: { classPropertyName: "actionBtns", publicName: "actionBtns", isSignal: true, isRequired: false, transformFunction: null }, childrenFormSchemaMap: { classPropertyName: "childrenFormSchemaMap", publicName: "childrenFormSchemaMap", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onDeleteRowFunc: "onDeleteRowFunc", onAddRowFunc: "onAddRowFunc", onActionButtonClick: "onActionButtonClick" }, usesInheritance: true, ngImport: i0, template: "@for (scheme of formSchema(); track scheme._id) {\n <td\n class=\"{{ scheme.cls }} w-1\"\n [ngClass]=\"{ stickyColumn: scheme.sticky }\" \n [style.left.px]=\"scheme.sticky ? tdEl.offsetLeft : null\"\n #tdEl>\n @if (scheme.type == 'button') {\n <div class=\"d-flex\">\n <app-btn\n [text]=\"scheme.label\"\n [type]=\"\n (form()\n | hasFormValue\n : (childrenFormSchemaMap()[scheme.field].formSchemaStr | toAny)\n : formValue())\n ? 'primary'\n : 'secondary'\n \"\n onFormInvalid=\"warn\"\n [form]=\"form()\"\n [icon]=\"scheme.icon\"\n [formSchema]=\"childrenFormSchemaMap()[scheme.field].formSchema\"\n [matTooltip]=\"\n formValue() | formValue: childrenFormSchemaMap()[scheme.field].formSchema | toAny\n \"\n (mclick)=\"dModal.open()\" />\n </div>\n <modal-comp #dModal [showFooter]=\"false\" header=\"{{ scheme.label }} Form\" width=\"70%\">\n <ng-template modalBody>\n <form-generator\n [form]=\"form()\"\n [gridXXLStyle]=\"4\"\n [gridLGStyle]=\"4\"\n [showSubmitBtn]=\"false\"\n [formSchema]=\"childrenFormSchemaMap()[scheme.field].formSchema\"\n (onSubmit)=\"dModal.close()\"></form-generator>\n @if (!isShow()) {\n <div class=\"d-flex justify-content-end\">\n <app-btn (mclick)=\"dModal.close()\" text=\"Done\" />\n </div>\n }\n </ng-template>\n </modal-comp>\n } @else if (scheme.field) {\n @switch (true) {\n @case (scheme.type == 'tel') {\n <app-phone-number\n [form]=\"form()\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [name]=\"scheme.field\"\n [showLabel]=\"false\"\n [noFormat]=\"scheme.noFormat\"\n [debug]=\"scheme.debug\"\n [showValidation]=\"scheme.showValidation\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [showValidationIcon]=\"scheme.showValidationIcon\"\n [countryCode3]=\"scheme.countryCode3\"\n [showValidationMsg]=\"scheme.showValidationMsg == null ? true : scheme.showValidationMsg\"\n [disabled]=\"\n scheme.disabled ||\n (scheme.disabledIf | functionCaller2: formValue() : (scheme.field | toAny))\n \"\n #inputTag />\n }\n @case (scheme.type == 'autocomplete') {\n <app-autocomplete\n [form]=\"form()\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [labelField]=\"scheme.labelField\"\n [noFormat]=\"scheme.noFormat\"\n [labelType]=\"scheme.labelType | toAny\"\n [showValidationMsg]=\"scheme.showValidationMsg == null ? true : scheme.showValidationMsg\"\n (mSelectedOptionLabel)=\"setOptionLabel($event, scheme)\"\n [name]=\"scheme.field | toAny\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [debug]=\"scheme.debug\"\n [optionFormatter]=\"scheme.optionFormatter\"\n [valueField]=\"scheme.valueField\"\n [options]=\"scheme.options || optionsMap[scheme.field | toAny]\"\n [hint]=\"scheme.hint\"\n [disabled]=\"\n scheme.disabled ||\n (scheme.disabledIf | functionCaller2: formValue() : (scheme.field | toAny))\n \"\n #inputTag />\n }\n\n @default {\n <app-input-basic\n #formField\n [name]=\"scheme.field | toAny\"\n [form]=\"form()\"\n [dontFormatAsInput]=\"scheme.dontFormatAsInput\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [type]=\"scheme.type\"\n [valueField]=\"scheme.valueField\"\n [labelType]=\"scheme.labelType | toAny\"\n [showValidationMsg]=\"scheme.showValidationMsg == null ? true : scheme.showValidationMsg\"\n [checkedSignal]=\"scheme.checked\"\n [showValidation]=\"!!scheme.asyncValidators\"\n [noFormat]=\"scheme.noFormat\"\n [showValidationIcon]=\"!!scheme.asyncValidators\"\n [debug]=\"scheme.debug\"\n [labelField]=\"scheme.labelField\"\n [optionFormatter]=\"scheme.optionFormatter\"\n (mSelectedOptionLabel)=\"setOptionLabel($event, scheme)\"\n [options]=\"scheme.options || optionsMap[scheme.field | toAny]\"\n [decimalPoints]=\"scheme.decimalPoints\"\n [hint]=\"scheme.hint\"\n [max]=\"scheme.max\"\n [min]=\"scheme.min\"\n [placeholder]=\"scheme.placeholder\"\n [disabled]=\"\n scheme.disabled ||\n (scheme.disabledIf | functionCaller2: formValue() : (scheme.field | toAny))\n \" />\n }\n }\n }\n </td>\n}\n@if (!isShow()) {\n @if (!hideDelete()) {\n <td class=\"w-1\">\n <app-btn\n group=\"delete\"\n [iconBtn]=\"true\"\n (mclick)=\"onDeleteRowFunc.emit({ btn: deleteBtn })\"\n #deleteBtn />\n </td>\n }\n @if (!hideAdd()) {\n <td class=\"w-1\">\n <app-btn [iconBtn]=\"true\" group=\"add\" (mclick)=\"onAddRowFunc.emit({ btn: addBtn })\" #addBtn />\n </td>\n }\n @for (actionBtn of actionBtns(); track actionBtn.icon) {\n <td class=\"w-1\">\n <app-btn\n [iconBtn]=\"true\"\n [group]=\"actionBtn.group\"\n [icon]=\"actionBtn.icon\"\n (mclick)=\"\n onActionButtonClick.emit({\n btn: actionBtnTemp,\n actionButton: actionBtn,\n })\n \"\n #actionBtnTemp />\n </td>\n }\n}\n", styles: [":host{position:relative}\n"], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "app-autocomplete,autocomplete", inputs: ["showRequiredTag", "validate", "options"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "translatorOptions", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "helpShowDelay", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "component", type: FormGeneratorComponent, selector: "form-generator", inputs: ["keyField", "presetValueForSingleOption", "isCreate", "submitOnEnterKey", "submitFunc", "submitBtnText", "submitBtnTemplate", "submitSuccessText", "showSubmitBtn", "gridStyle", "gridMDStyle", "gridLGStyle", "gridXXLStyle", "formGridClass", "useLoader", "loading", "form", "formSchema", "formSchemaNoForm", "isShow"], outputs: ["onSubmit", "mchange", "saved", "formChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "pipe", type: FormValuePipe, name: "formValue" }, { kind: "pipe", type: FunctionCaller2, name: "functionCaller2" }, { kind: "pipe", type: HasFormValuePipe, name: "hasFormValue" }, { kind: "component", type: InputBasicComponent, selector: "app-input-basic,app-input", inputs: ["accept", "autocomplete", "input", "contextData", "decimalPoints", "files", "hide", "clearOnDisable", "labelLink", "loading", "multiple", "optionsFunc", "vms", "setCurrentDate", "options"], outputs: ["mSelectedOptionLabel"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i2.ModalComponent, selector: "modal-comp", inputs: ["header", "bodyTemplateRef", "footerTemplateRef", "showHeader", "loading", "isFullscreen", "showFooter", "width", "minWidth", "height", "maxHeight", "icon", "data", "disableClose", "hasBackdrop"], outputs: ["headerChange", "showHeaderChange", "mouseLeft", "loadingChange", "showFooterChange", "modalOpen", "modalClose"] }, { kind: "directive", type: i3.ModalBodyDirective, selector: "[modalBody]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: PhoneNumberComponent, selector: "app-phone-number", inputs: ["showLabel", "countryCode3", "config"], outputs: ["onCountrySelect"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "pipe", type: ToAnyPipe, name: "toAny" }] }); }
|
|
45
45
|
}
|
|
46
46
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: TableInputRowComponent, decorators: [{
|
|
47
47
|
type: Component,
|
|
@@ -74,6 +74,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
74
74
|
ToAnyPipe,
|
|
75
75
|
SDKTranslatePipe,
|
|
76
76
|
ValidationMessageComponent,
|
|
77
|
-
], template: "@for (scheme of formSchema(); track scheme._id) {\n
|
|
77
|
+
], template: "@for (scheme of formSchema(); track scheme._id) {\n <td\n class=\"{{ scheme.cls }} w-1\"\n [ngClass]=\"{ stickyColumn: scheme.sticky }\" \n [style.left.px]=\"scheme.sticky ? tdEl.offsetLeft : null\"\n #tdEl>\n @if (scheme.type == 'button') {\n <div class=\"d-flex\">\n <app-btn\n [text]=\"scheme.label\"\n [type]=\"\n (form()\n | hasFormValue\n : (childrenFormSchemaMap()[scheme.field].formSchemaStr | toAny)\n : formValue())\n ? 'primary'\n : 'secondary'\n \"\n onFormInvalid=\"warn\"\n [form]=\"form()\"\n [icon]=\"scheme.icon\"\n [formSchema]=\"childrenFormSchemaMap()[scheme.field].formSchema\"\n [matTooltip]=\"\n formValue() | formValue: childrenFormSchemaMap()[scheme.field].formSchema | toAny\n \"\n (mclick)=\"dModal.open()\" />\n </div>\n <modal-comp #dModal [showFooter]=\"false\" header=\"{{ scheme.label }} Form\" width=\"70%\">\n <ng-template modalBody>\n <form-generator\n [form]=\"form()\"\n [gridXXLStyle]=\"4\"\n [gridLGStyle]=\"4\"\n [showSubmitBtn]=\"false\"\n [formSchema]=\"childrenFormSchemaMap()[scheme.field].formSchema\"\n (onSubmit)=\"dModal.close()\"></form-generator>\n @if (!isShow()) {\n <div class=\"d-flex justify-content-end\">\n <app-btn (mclick)=\"dModal.close()\" text=\"Done\" />\n </div>\n }\n </ng-template>\n </modal-comp>\n } @else if (scheme.field) {\n @switch (true) {\n @case (scheme.type == 'tel') {\n <app-phone-number\n [form]=\"form()\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [name]=\"scheme.field\"\n [showLabel]=\"false\"\n [noFormat]=\"scheme.noFormat\"\n [debug]=\"scheme.debug\"\n [showValidation]=\"scheme.showValidation\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [showValidationIcon]=\"scheme.showValidationIcon\"\n [countryCode3]=\"scheme.countryCode3\"\n [showValidationMsg]=\"scheme.showValidationMsg == null ? true : scheme.showValidationMsg\"\n [disabled]=\"\n scheme.disabled ||\n (scheme.disabledIf | functionCaller2: formValue() : (scheme.field | toAny))\n \"\n #inputTag />\n }\n @case (scheme.type == 'autocomplete') {\n <app-autocomplete\n [form]=\"form()\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [labelField]=\"scheme.labelField\"\n [noFormat]=\"scheme.noFormat\"\n [labelType]=\"scheme.labelType | toAny\"\n [showValidationMsg]=\"scheme.showValidationMsg == null ? true : scheme.showValidationMsg\"\n (mSelectedOptionLabel)=\"setOptionLabel($event, scheme)\"\n [name]=\"scheme.field | toAny\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [debug]=\"scheme.debug\"\n [optionFormatter]=\"scheme.optionFormatter\"\n [valueField]=\"scheme.valueField\"\n [options]=\"scheme.options || optionsMap[scheme.field | toAny]\"\n [hint]=\"scheme.hint\"\n [disabled]=\"\n scheme.disabled ||\n (scheme.disabledIf | functionCaller2: formValue() : (scheme.field | toAny))\n \"\n #inputTag />\n }\n\n @default {\n <app-input-basic\n #formField\n [name]=\"scheme.field | toAny\"\n [form]=\"form()\"\n [dontFormatAsInput]=\"scheme.dontFormatAsInput\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [type]=\"scheme.type\"\n [valueField]=\"scheme.valueField\"\n [labelType]=\"scheme.labelType | toAny\"\n [showValidationMsg]=\"scheme.showValidationMsg == null ? true : scheme.showValidationMsg\"\n [checkedSignal]=\"scheme.checked\"\n [showValidation]=\"!!scheme.asyncValidators\"\n [noFormat]=\"scheme.noFormat\"\n [showValidationIcon]=\"!!scheme.asyncValidators\"\n [debug]=\"scheme.debug\"\n [labelField]=\"scheme.labelField\"\n [optionFormatter]=\"scheme.optionFormatter\"\n (mSelectedOptionLabel)=\"setOptionLabel($event, scheme)\"\n [options]=\"scheme.options || optionsMap[scheme.field | toAny]\"\n [decimalPoints]=\"scheme.decimalPoints\"\n [hint]=\"scheme.hint\"\n [max]=\"scheme.max\"\n [min]=\"scheme.min\"\n [placeholder]=\"scheme.placeholder\"\n [disabled]=\"\n scheme.disabled ||\n (scheme.disabledIf | functionCaller2: formValue() : (scheme.field | toAny))\n \" />\n }\n }\n }\n </td>\n}\n@if (!isShow()) {\n @if (!hideDelete()) {\n <td class=\"w-1\">\n <app-btn\n group=\"delete\"\n [iconBtn]=\"true\"\n (mclick)=\"onDeleteRowFunc.emit({ btn: deleteBtn })\"\n #deleteBtn />\n </td>\n }\n @if (!hideAdd()) {\n <td class=\"w-1\">\n <app-btn [iconBtn]=\"true\" group=\"add\" (mclick)=\"onAddRowFunc.emit({ btn: addBtn })\" #addBtn />\n </td>\n }\n @for (actionBtn of actionBtns(); track actionBtn.icon) {\n <td class=\"w-1\">\n <app-btn\n [iconBtn]=\"true\"\n [group]=\"actionBtn.group\"\n [icon]=\"actionBtn.icon\"\n (mclick)=\"\n onActionButtonClick.emit({\n btn: actionBtnTemp,\n actionButton: actionBtn,\n })\n \"\n #actionBtnTemp />\n </td>\n }\n}\n", styles: [":host{position:relative}\n"] }]
|
|
78
78
|
}] });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaW5wdXQtcm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS90YWJsZS1pbnB1dC90YWJsZS1pbnB1dC1yb3cvdGFibGUtaW5wdXQtcm93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS90YWJsZS1pbnB1dC90YWJsZS1pbnB1dC1yb3cvdGFibGUtaW5wdXQtcm93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLE9BQU8sRUFDUCxLQUFLLEVBQ0wsSUFBSSxFQUNKLFFBQVEsRUFDUixZQUFZLEVBQ1osZUFBZSxHQUNoQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxTQUFTLEVBQWtDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBbUIsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixhQUFhLEVBQ2IsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixTQUFTLEdBQ1YsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUNMLHNCQUFzQixHQUV2QixNQUFNLGtEQUFrRCxDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7OztBQXVDakUsTUFBTSxPQUFPLHNCQUlYLFNBQVEsc0JBQWtDO0lBeEM1Qzs7UUF5Q1csb0JBQWUsR0FBRyxNQUFNLEVBQTBCLENBQUM7UUFDbkQsaUJBQVksR0FBRyxNQUFNLEVBQTBCLENBQUM7UUFDaEQsd0JBQW1CLEdBQUcsTUFBTSxFQUdqQyxDQUFDO1FBQ0ksV0FBTSxHQUFHLEtBQUssRUFBVyxDQUFDO1FBQzFCLFlBQU8sR0FBRyxLQUFLLEVBQVcsQ0FBQztRQUMzQixlQUFVLEdBQUcsS0FBSyxFQUFXLENBQUM7UUFDOUIsa0JBQWEsR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDckMsZUFBVSxHQUFHLEtBQUssRUFBb0IsQ0FBQztRQUVoRCxvQ0FBb0M7UUFDcEMsK0VBQStFO1FBQy9FLE1BQU07UUFFRywwQkFBcUIsR0FBRyxLQUFLLENBS25DLEVBQUUsQ0FBQyxDQUFDO1FBRUUsaUJBQVksR0FBRyxNQUFNLENBQzVCLEdBQUcsRUFBRTtZQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BDLENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUM1QixDQUFDO0tBQ0g7OEdBbkNZLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDRpQ0MxRW5DLHN0TEEwSkEsMEREL0dJLHFCQUFxQiw4SEFDckIsWUFBWSx5aUJBRVosc0JBQXNCLHliQUN0QixXQUFXLDBCQUNYLGFBQWEsNkNBQ2IsZUFBZSxtREFDZixnQkFBZ0IscURBQ2hCLG1CQUFtQiwrU0FHbkIsa0JBQWtCLDhCQUNsQixnQkFBZ0IsNHhCQVVoQixvQkFBb0IsMklBQ3BCLG1CQUFtQiwwQkFDbkIsU0FBUzs7MkZBT0Esc0JBQXNCO2tCQXBDbEMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QscUJBQXFCO3dCQUNyQixZQUFZO3dCQUNaLHdCQUF3Qjt3QkFDeEIsc0JBQXNCO3dCQUN0QixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsUUFBUTt3QkFDUixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLE9BQU87d0JBQ1AsS0FBSzt3QkFDTCxJQUFJO3dCQUNKLFFBQVE7d0JBQ1IsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsU0FBUzt3QkFDVCxnQkFBZ0I7d0JBQ2hCLDBCQUEwQjtxQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBc3luY1BpcGUsXG4gIEpzb25QaXBlLFxuICBOZ0NsYXNzLFxuICBOZ0ZvcixcbiAgTmdJZixcbiAgTmdTd2l0Y2gsXG4gIE5nU3dpdGNoQ2FzZSxcbiAgTmdTd2l0Y2hEZWZhdWx0LFxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEV4cGFuc2lvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5cbmltcG9ydCB7IFBhZ2luYXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEZpbHRlckZvcm1BcnJheUdyb3VwUGlwZSxcbiAgRm9ybVZhbHVlUGlwZSxcbiAgRnVuY3Rpb25DYWxsZXIyLFxuICBIYXNGb3JtVmFsdWVQaXBlLFxuICBUb0FueVBpcGUsXG59IGZyb20gJy4uLy4uLy4uLy4uL3BpcGVzL3V0aWxpdHkucGlwZSc7XG5pbXBvcnQgeyBTREtUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYnRuL2J0bi5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgRm9ybUdlbmVyYXRvckNvbXBvbmVudCxcbiAgSUZvcm1TY2hlbWEsXG59IGZyb20gJy4uLy4uLy4uL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dEJhc2ljQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vaW5wdXQvaW5wdXQtYmFzaWMuY29tcG9uZW50JztcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vaW5wdXQvdmFsaWRhdGlvbi1tZXNzYWdlL3ZhbGlkYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGhvbmVOdW1iZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9waG9uZS1udW1iZXIvcGhvbmUtbnVtYmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudHMgfSBmcm9tICcuLi8uLi8uLi9tb2RhbC1jb21wb25lbnRzL21vZGFsLmNvbXBvbmVudHMnO1xuaW1wb3J0IHsgUGFnaW5hdG9yUGlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL3BpcGVzL3BhZ2luYXRvci5waXBlJztcbmltcG9ydCB7IElUYWJsZUlucHV0QnRuIH0gZnJvbSAnLi4vdGFibGUtaW5wdXQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndHJbdGFibGUtaW5wdXQtcm93XScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgIEJ0bkNvbXBvbmVudCxcbiAgICBGaWx0ZXJGb3JtQXJyYXlHcm91cFBpcGUsXG4gICAgRm9ybUdlbmVyYXRvckNvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBGb3JtVmFsdWVQaXBlLFxuICAgIEZ1bmN0aW9uQ2FsbGVyMixcbiAgICBIYXNGb3JtVmFsdWVQaXBlLFxuICAgIElucHV0QmFzaWNDb21wb25lbnQsXG4gICAgSnNvblBpcGUsXG4gICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIE1hdEV4cGFuc2lvbk1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1vZGFsQ29tcG9uZW50cyxcbiAgICBOZ0NsYXNzLFxuICAgIE5nRm9yLFxuICAgIE5nSWYsXG4gICAgTmdTd2l0Y2gsXG4gICAgTmdTd2l0Y2hDYXNlLFxuICAgIE5nU3dpdGNoRGVmYXVsdCxcbiAgICBQYWdpbmF0b3JDb21wb25lbnQsXG4gICAgUGFnaW5hdG9yUGlwZSxcbiAgICBQaG9uZU51bWJlckNvbXBvbmVudCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFRvQW55UGlwZSxcbiAgICBTREtUcmFuc2xhdGVQaXBlLFxuICAgIFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtaW5wdXQtcm93LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtaW5wdXQtcm93LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlSW5wdXRSb3dDb21wb25lbnQ8XG4gIFRGb3JtR3JvdXAgZXh0ZW5kcyB7XG4gICAgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIH0gPSBhbnksXG4+IGV4dGVuZHMgRm9ybUdlbmVyYXRvckNvbXBvbmVudDxURm9ybUdyb3VwPiB7XG4gIHJlYWRvbmx5IG9uRGVsZXRlUm93RnVuYyA9IG91dHB1dDx7IGJ0bj86IEJ0bkNvbXBvbmVudCB9PigpO1xuICByZWFkb25seSBvbkFkZFJvd0Z1bmMgPSBvdXRwdXQ8eyBidG4/OiBCdG5Db21wb25lbnQgfT4oKTtcbiAgcmVhZG9ubHkgb25BY3Rpb25CdXR0b25DbGljayA9IG91dHB1dDx7XG4gICAgYnRuPzogQnRuQ29tcG9uZW50O1xuICAgIGFjdGlvbkJ1dHRvbjogSVRhYmxlSW5wdXRCdG47XG4gIH0+KCk7XG4gIHJlYWRvbmx5IGlzU2hvdyA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGhpZGVBZGQgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBoaWRlRGVsZXRlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgYm9yZGVyZWRJbnB1dCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBhY3Rpb25CdG5zID0gaW5wdXQ8SVRhYmxlSW5wdXRCdG5bXT4oKTtcbiAgXG4gIC8vIGZvcm1zY2hlbWFVcGRhdGUgPSBlZmZlY3QoKCkgPT4ge1xuICAvLyAgIGNvbnNvbGUubG9nKCdmb3Jtc2NoZW1hIHVwZGF0ZScsIHRoaXMuZm9ybVNjaGVtYSgpLCB0aGlzLmZvcm1TY2hlbWFNYXAoKSk7XG4gIC8vIH0pO1xuXG4gIHJlYWRvbmx5IGNoaWxkcmVuRm9ybVNjaGVtYU1hcCA9IGlucHV0PHtcbiAgICBbayBpbiBrZXlvZiBURm9ybUdyb3VwXT86IHtcbiAgICAgIGZvcm1TY2hlbWE6IElGb3JtU2NoZW1hW107XG4gICAgICBmb3JtU2NoZW1hU3RyOiBzdHJpbmdbXTtcbiAgICB9O1xuICB9Pih7fSk7XG5cbiAgcmVhZG9ubHkgaXNTaG93RWZmZWN0ID0gZWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZvcm0oKTtcbiAgICAgIGlmICh0aGlzLmlzU2hvdygpKSBmb3JtLmRpc2FibGUoKTtcbiAgICB9LFxuICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgKTtcbn1cbiIsIkBmb3IgKHNjaGVtZSBvZiBmb3JtU2NoZW1hKCk7IHRyYWNrIHNjaGVtZS5faWQpIHtcbiAgQGlmIChzY2hlbWUudHlwZSA9PSAnYnV0dG9uJykge1xuICAgIDx0ZCBjbGFzcz1cInt7IHNjaGVtZS5jbHMgfX0gdy0xXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgW3RleHRdPVwic2NoZW1lLmxhYmVsXCJcbiAgICAgICAgICBbdHlwZV09XCJcbiAgICAgICAgICAgIChmb3JtKClcbiAgICAgICAgICAgIHwgaGFzRm9ybVZhbHVlXG4gICAgICAgICAgICAgIDogKGNoaWxkcmVuRm9ybVNjaGVtYU1hcCgpW3NjaGVtZS5maWVsZF0uZm9ybVNjaGVtYVN0ciB8IHRvQW55KVxuICAgICAgICAgICAgICA6IGZvcm1WYWx1ZSgpKVxuICAgICAgICAgICAgICA/ICdwcmltYXJ5J1xuICAgICAgICAgICAgICA6ICdzZWNvbmRhcnknXG4gICAgICAgICAgXCJcbiAgICAgICAgICBvbkZvcm1JbnZhbGlkPVwid2FyblwiXG4gICAgICAgICAgW2Zvcm1dPVwiZm9ybSgpXCJcbiAgICAgICAgICBbaWNvbl09XCJzY2hlbWUuaWNvblwiXG4gICAgICAgICAgW2Zvcm1TY2hlbWFdPVwiY2hpbGRyZW5Gb3JtU2NoZW1hTWFwKClbc2NoZW1lLmZpZWxkXS5mb3JtU2NoZW1hXCJcbiAgICAgICAgICBbbWF0VG9vbHRpcF09XCJcbiAgICAgICAgICAgIGZvcm1WYWx1ZSgpIHwgZm9ybVZhbHVlOiBjaGlsZHJlbkZvcm1TY2hlbWFNYXAoKVtzY2hlbWUuZmllbGRdLmZvcm1TY2hlbWEgfCB0b0FueVxuICAgICAgICAgIFwiXG4gICAgICAgICAgKG1jbGljayk9XCJkTW9kYWwub3BlbigpXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPG1vZGFsLWNvbXAgI2RNb2RhbCBbc2hvd0Zvb3Rlcl09XCJmYWxzZVwiIGhlYWRlcj1cInt7IHNjaGVtZS5sYWJlbCB9fSBGb3JtXCIgd2lkdGg9XCI3MCVcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG1vZGFsQm9keT5cbiAgICAgICAgICA8Zm9ybS1nZW5lcmF0b3JcbiAgICAgICAgICAgIFtmb3JtXT1cImZvcm0oKVwiXG4gICAgICAgICAgICBbZ3JpZFhYTFN0eWxlXT1cIjRcIlxuICAgICAgICAgICAgW2dyaWRMR1N0eWxlXT1cIjRcIlxuICAgICAgICAgICAgW3Nob3dTdWJtaXRCdG5dPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2Zvcm1TY2hlbWFdPVwiY2hpbGRyZW5Gb3JtU2NoZW1hTWFwKClbc2NoZW1lLmZpZWxkXS5mb3JtU2NoZW1hXCJcbiAgICAgICAgICAgIChvblN1Ym1pdCk9XCJkTW9kYWwuY2xvc2UoKVwiPjwvZm9ybS1nZW5lcmF0b3I+XG4gICAgICAgICAgQGlmICghaXNTaG93KCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgICAgICA8YXBwLWJ0biAobWNsaWNrKT1cImRNb2RhbC5jbG9zZSgpXCIgdGV4dD1cIkRvbmVcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9tb2RhbC1jb21wPlxuICAgIDwvdGQ+XG4gIH0gQGVsc2UgaWYgKHNjaGVtZS5maWVsZCkge1xuICAgIEBzd2l0Y2ggKHRydWUpIHtcbiAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAndGVsJykge1xuICAgICAgICA8dGQgY2xhc3M9XCJ7eyBzY2hlbWUuY2xzIH19XCI+XG4gICAgICAgICAgPGFwcC1waG9uZS1udW1iZXJcbiAgICAgICAgICAgIFtmb3JtXT1cImZvcm0oKVwiXG4gICAgICAgICAgICBbY2xlYXJPbkRpc2FibGVdPVwic2NoZW1lLmNsZWFyT25EaXNhYmxlXCJcbiAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICBbc2hvd0xhYmVsXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXRcIlxuICAgICAgICAgICAgW2RlYnVnXT1cInNjaGVtZS5kZWJ1Z1wiXG4gICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uXCJcbiAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uSWNvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25JY29uXCJcbiAgICAgICAgICAgIFtjb3VudHJ5Q29kZTNdPVwic2NoZW1lLmNvdW50cnlDb2RlM1wiXG4gICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnID09IG51bGwgPyB0cnVlIDogc2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgc2NoZW1lLmRpc2FibGVkIHx8XG4gICAgICAgICAgICAgIChzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogZm9ybVZhbHVlKCkgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICNpbnB1dFRhZyAvPlxuICAgICAgICA8L3RkPlxuICAgICAgfVxuICAgICAgQGNhc2UgKHNjaGVtZS50eXBlID09ICdhdXRvY29tcGxldGUnKSB7XG4gICAgICAgIDx0ZCBjbGFzcz1cInt7IHNjaGVtZS5jbHMgfX1cIj5cbiAgICAgICAgICA8YXBwLWF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybSgpXCJcbiAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdFwiXG4gICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnID09IG51bGwgPyB0cnVlIDogc2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnXCJcbiAgICAgICAgICAgIChtU2VsZWN0ZWRPcHRpb25MYWJlbCk9XCJzZXRPcHRpb25MYWJlbCgkZXZlbnQsIHNjaGVtZSlcIlxuICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkIHwgdG9BbnlcIlxuICAgICAgICAgICAgW2NsZWFyT25EaXNhYmxlXT1cInNjaGVtZS5jbGVhck9uRGlzYWJsZVwiXG4gICAgICAgICAgICBbZGVidWddPVwic2NoZW1lLmRlYnVnXCJcbiAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlclwiXG4gICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZFwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJzY2hlbWUub3B0aW9ucyB8fCBvcHRpb25zTWFwW3NjaGVtZS5maWVsZCB8IHRvQW55XVwiXG4gICAgICAgICAgICBbaGludF09XCJzY2hlbWUuaGludFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgIHNjaGVtZS5kaXNhYmxlZCB8fFxuICAgICAgICAgICAgICAoc2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IGZvcm1WYWx1ZSgpIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAjaW5wdXRUYWcgLz5cbiAgICAgICAgPC90ZD5cbiAgICAgIH1cblxuICAgICAgQGRlZmF1bHQge1xuICAgICAgICA8dGQgY2xhc3M9XCJ7eyBzY2hlbWUuY2xzIH19XCI+XG4gICAgICAgICAgPGFwcC1pbnB1dC1iYXNpY1xuICAgICAgICAgICAgI2Zvcm1GaWVsZFxuICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkIHwgdG9BbnlcIlxuICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybSgpXCJcbiAgICAgICAgICAgIFtkb250Rm9ybWF0QXNJbnB1dF09XCJzY2hlbWUuZG9udEZvcm1hdEFzSW5wdXRcIlxuICAgICAgICAgICAgW2NsZWFyT25EaXNhYmxlXT1cInNjaGVtZS5jbGVhck9uRGlzYWJsZVwiXG4gICAgICAgICAgICBbdHlwZV09XCJzY2hlbWUudHlwZVwiXG4gICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZFwiXG4gICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnID09IG51bGwgPyB0cnVlIDogc2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnXCJcbiAgICAgICAgICAgIFtjaGVja2VkU2lnbmFsXT1cInNjaGVtZS5jaGVja2VkXCJcbiAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCIhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgICAgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdFwiXG4gICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cIiEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICBbZGVidWddPVwic2NoZW1lLmRlYnVnXCJcbiAgICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkXCJcbiAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlclwiXG4gICAgICAgICAgICAobVNlbGVjdGVkT3B0aW9uTGFiZWwpPVwic2V0T3B0aW9uTGFiZWwoJGV2ZW50LCBzY2hlbWUpXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zIHx8IG9wdGlvbnNNYXBbc2NoZW1lLmZpZWxkIHwgdG9BbnldXCJcbiAgICAgICAgICAgIFtkZWNpbWFsUG9pbnRzXT1cInNjaGVtZS5kZWNpbWFsUG9pbnRzXCJcbiAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgIFttYXhdPVwic2NoZW1lLm1heFwiXG4gICAgICAgICAgICBbbWluXT1cInNjaGVtZS5taW5cIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNjaGVtZS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgIHNjaGVtZS5kaXNhYmxlZCB8fFxuICAgICAgICAgICAgICAoc2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IGZvcm1WYWx1ZSgpIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KSlcbiAgICAgICAgICAgIFwiIC8+XG4gICAgICAgIDwvdGQ+XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5AaWYgKCFpc1Nob3coKSkge1xuICBAaWYgKCFoaWRlRGVsZXRlKCkpIHtcbiAgICA8dGQgY2xhc3M9XCJ3LTFcIj5cbiAgICAgIDxhcHAtYnRuXG4gICAgICAgIGdyb3VwPVwiZGVsZXRlXCJcbiAgICAgICAgW2ljb25CdG5dPVwidHJ1ZVwiXG4gICAgICAgIChtY2xpY2spPVwib25EZWxldGVSb3dGdW5jLmVtaXQoeyBidG46IGRlbGV0ZUJ0biB9KVwiXG4gICAgICAgICNkZWxldGVCdG4gLz5cbiAgICA8L3RkPlxuICB9XG4gIEBpZiAoIWhpZGVBZGQoKSkge1xuICAgIDx0ZCBjbGFzcz1cInctMVwiPlxuICAgICAgPGFwcC1idG4gW2ljb25CdG5dPVwidHJ1ZVwiIGdyb3VwPVwiYWRkXCIgKG1jbGljayk9XCJvbkFkZFJvd0Z1bmMuZW1pdCh7IGJ0bjogYWRkQnRuIH0pXCIgI2FkZEJ0biAvPlxuICAgIDwvdGQ+XG4gIH1cbiAgQGZvciAoYWN0aW9uQnRuIG9mIGFjdGlvbkJ0bnMoKTsgdHJhY2sgYWN0aW9uQnRuLmljb24pIHtcbiAgICA8dGQgY2xhc3M9XCJ3LTFcIj5cbiAgICAgIDxhcHAtYnRuXG4gICAgICAgIFtpY29uQnRuXT1cInRydWVcIlxuICAgICAgICBbZ3JvdXBdPVwiYWN0aW9uQnRuLmdyb3VwXCJcbiAgICAgICAgW2ljb25dPVwiYWN0aW9uQnRuLmljb25cIlxuICAgICAgICAobWNsaWNrKT1cIlxuICAgICAgICAgIG9uQWN0aW9uQnV0dG9uQ2xpY2suZW1pdCh7XG4gICAgICAgICAgICBidG46IGFjdGlvbkJ0blRlbXAsXG4gICAgICAgICAgICBhY3Rpb25CdXR0b246IGFjdGlvbkJ0bixcbiAgICAgICAgICB9KVxuICAgICAgICBcIlxuICAgICAgICAjYWN0aW9uQnRuVGVtcCAvPlxuICAgIDwvdGQ+XG4gIH1cbn1cbiJdfQ==
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaW5wdXQtcm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS90YWJsZS1pbnB1dC90YWJsZS1pbnB1dC1yb3cvdGFibGUtaW5wdXQtcm93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS90YWJsZS1pbnB1dC90YWJsZS1pbnB1dC1yb3cvdGFibGUtaW5wdXQtcm93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLE9BQU8sRUFDUCxLQUFLLEVBQ0wsSUFBSSxFQUNKLFFBQVEsRUFDUixZQUFZLEVBQ1osZUFBZSxHQUNoQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFtQixXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLGFBQWEsRUFDYixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLFNBQVMsR0FDVixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQ0wsc0JBQXNCLEdBRXZCLE1BQU0sa0RBQWtELENBQUM7QUFDMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDNUcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7O0FBd0NqRSxNQUFNLE9BQU8sc0JBSVgsU0FBUSxzQkFBcUU7SUF4Qy9FOztRQXlDVyxvQkFBZSxHQUFHLE1BQU0sRUFBMEIsQ0FBQztRQUNuRCxpQkFBWSxHQUFHLE1BQU0sRUFBMEIsQ0FBQztRQUNoRCx3QkFBbUIsR0FBRyxNQUFNLEVBR2pDLENBQUM7UUFDSSxXQUFNLEdBQUcsS0FBSyxFQUFXLENBQUM7UUFDMUIsWUFBTyxHQUFHLEtBQUssRUFBVyxDQUFDO1FBQzNCLGVBQVUsR0FBRyxLQUFLLEVBQVcsQ0FBQztRQUM5QixrQkFBYSxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUNyQyxlQUFVLEdBQUcsS0FBSyxFQUFvQixDQUFDO1FBRWhELG9DQUFvQztRQUNwQywrRUFBK0U7UUFDL0UsTUFBTTtRQUVHLDBCQUFxQixHQUFHLEtBQUssQ0FLbkMsRUFBRSxDQUFDLENBQUM7UUFFRSxpQkFBWSxHQUFHLE1BQU0sQ0FDNUIsR0FBRyxFQUFFO1lBQ0gsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEMsQ0FBQyxFQUNELEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQzVCLENBQUM7S0FDSDs4R0FuQ1ksc0JBQXNCO2tHQUF0QixzQkFBc0IsNGlDQzNFbkMsb3NMQXdKQSxvRkQ1R0kscUJBQXFCLDhIQUNyQixZQUFZLHlpQkFFWixzQkFBc0IseWJBQ3RCLFdBQVcsMEJBQ1gsYUFBYSw2Q0FDYixlQUFlLG1EQUNmLGdCQUFnQixxREFDaEIsbUJBQW1CLCtTQUduQixrQkFBa0IsOEJBQ2xCLGdCQUFnQiw0eEJBRWhCLE9BQU8sb0ZBUVAsb0JBQW9CLDJJQUNwQixtQkFBbUIsMEJBQ25CLFNBQVM7OzJGQU9BLHNCQUFzQjtrQkFwQ2xDLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUDt3QkFDUCxTQUFTO3dCQUNULHFCQUFxQjt3QkFDckIsWUFBWTt3QkFDWix3QkFBd0I7d0JBQ3hCLHNCQUFzQjt3QkFDdEIsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLFFBQVE7d0JBQ1IsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixPQUFPO3dCQUNQLEtBQUs7d0JBQ0wsSUFBSTt3QkFDSixRQUFRO3dCQUNSLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2Isb0JBQW9CO3dCQUNwQixtQkFBbUI7d0JBQ25CLFNBQVM7d0JBQ1QsZ0JBQWdCO3dCQUNoQiwwQkFBMEI7cUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXN5bmNQaXBlLFxuICBKc29uUGlwZSxcbiAgTmdDbGFzcyxcbiAgTmdGb3IsXG4gIE5nSWYsXG4gIE5nU3dpdGNoLFxuICBOZ1N3aXRjaENhc2UsXG4gIE5nU3dpdGNoRGVmYXVsdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgZWZmZWN0LCBpbnB1dCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RXhwYW5zaW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcblxuaW1wb3J0IHsgUGFnaW5hdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vcGFnaW5hdG9yL3BhZ2luYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgRmlsdGVyRm9ybUFycmF5R3JvdXBQaXBlLFxuICBGb3JtVmFsdWVQaXBlLFxuICBGdW5jdGlvbkNhbGxlcjIsXG4gIEhhc0Zvcm1WYWx1ZVBpcGUsXG4gIFRvQW55UGlwZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMvdXRpbGl0eS5waXBlJztcbmltcG9ydCB7IFNES1RyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi8uLi9waXBlcy90cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdG5Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9idG4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBGb3JtR2VuZXJhdG9yQ29tcG9uZW50LFxuICBJRm9ybVNjaGVtYSxcbn0gZnJvbSAnLi4vLi4vLi4vZm9ybS1nZW5lcmF0b3IvZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0QmFzaWNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9pbnB1dC9pbnB1dC1iYXNpYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9pbnB1dC92YWxpZGF0aW9uLW1lc3NhZ2UvdmFsaWRhdGlvbi1tZXNzYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaG9uZU51bWJlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3Bob25lLW51bWJlci9waG9uZS1udW1iZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGFsQ29tcG9uZW50cyB9IGZyb20gJy4uLy4uLy4uL21vZGFsLWNvbXBvbmVudHMvbW9kYWwuY29tcG9uZW50cyc7XG5pbXBvcnQgeyBQYWdpbmF0b3JQaXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMvcGFnaW5hdG9yLnBpcGUnO1xuaW1wb3J0IHsgSVRhYmxlSW5wdXRCdG4gfSBmcm9tICcuLi90YWJsZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSVRhYmxlSW5wdXRGb3JtU2NoZW1hIH0gZnJvbSAnLi4vdGFibGUtaW5wdXQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0clt0YWJsZS1pbnB1dC1yb3ddJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSxcbiAgICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgQnRuQ29tcG9uZW50LFxuICAgIEZpbHRlckZvcm1BcnJheUdyb3VwUGlwZSxcbiAgICBGb3JtR2VuZXJhdG9yQ29tcG9uZW50LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEZvcm1WYWx1ZVBpcGUsXG4gICAgRnVuY3Rpb25DYWxsZXIyLFxuICAgIEhhc0Zvcm1WYWx1ZVBpcGUsXG4gICAgSW5wdXRCYXNpY0NvbXBvbmVudCxcbiAgICBKc29uUGlwZSxcbiAgICBMb2FkZXJDb21wb25lbnQsXG4gICAgTWF0RXhwYW5zaW9uTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTW9kYWxDb21wb25lbnRzLFxuICAgIE5nQ2xhc3MsXG4gICAgTmdGb3IsXG4gICAgTmdJZixcbiAgICBOZ1N3aXRjaCxcbiAgICBOZ1N3aXRjaENhc2UsXG4gICAgTmdTd2l0Y2hEZWZhdWx0LFxuICAgIFBhZ2luYXRvckNvbXBvbmVudCxcbiAgICBQYWdpbmF0b3JQaXBlLFxuICAgIFBob25lTnVtYmVyQ29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVG9BbnlQaXBlLFxuICAgIFNES1RyYW5zbGF0ZVBpcGUsXG4gICAgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1pbnB1dC1yb3cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1pbnB1dC1yb3cuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVJbnB1dFJvd0NvbXBvbmVudDxcbiAgVEZvcm1Hcm91cCBleHRlbmRzIHtcbiAgICBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgfSA9IGFueSxcbj4gZXh0ZW5kcyBGb3JtR2VuZXJhdG9yQ29tcG9uZW50PFRGb3JtR3JvdXAsIElUYWJsZUlucHV0Rm9ybVNjaGVtYTxURm9ybUdyb3VwPj4ge1xuICByZWFkb25seSBvbkRlbGV0ZVJvd0Z1bmMgPSBvdXRwdXQ8eyBidG4/OiBCdG5Db21wb25lbnQgfT4oKTtcbiAgcmVhZG9ubHkgb25BZGRSb3dGdW5jID0gb3V0cHV0PHsgYnRuPzogQnRuQ29tcG9uZW50IH0+KCk7XG4gIHJlYWRvbmx5IG9uQWN0aW9uQnV0dG9uQ2xpY2sgPSBvdXRwdXQ8e1xuICAgIGJ0bj86IEJ0bkNvbXBvbmVudDtcbiAgICBhY3Rpb25CdXR0b246IElUYWJsZUlucHV0QnRuO1xuICB9PigpO1xuICByZWFkb25seSBpc1Nob3cgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBoaWRlQWRkID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgaGlkZURlbGV0ZSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGJvcmRlcmVkSW5wdXQgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgYWN0aW9uQnRucyA9IGlucHV0PElUYWJsZUlucHV0QnRuW10+KCk7XG5cbiAgLy8gZm9ybXNjaGVtYVVwZGF0ZSA9IGVmZmVjdCgoKSA9PiB7XG4gIC8vICAgY29uc29sZS5sb2coJ2Zvcm1zY2hlbWEgdXBkYXRlJywgdGhpcy5mb3JtU2NoZW1hKCksIHRoaXMuZm9ybVNjaGVtYU1hcCgpKTtcbiAgLy8gfSk7XG5cbiAgcmVhZG9ubHkgY2hpbGRyZW5Gb3JtU2NoZW1hTWFwID0gaW5wdXQ8e1xuICAgIFtrIGluIGtleW9mIFRGb3JtR3JvdXBdPzoge1xuICAgICAgZm9ybVNjaGVtYTogSUZvcm1TY2hlbWFbXTtcbiAgICAgIGZvcm1TY2hlbWFTdHI6IHN0cmluZ1tdO1xuICAgIH07XG4gIH0+KHt9KTtcblxuICByZWFkb25seSBpc1Nob3dFZmZlY3QgPSBlZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3QgZm9ybSA9IHRoaXMuZm9ybSgpO1xuICAgICAgaWYgKHRoaXMuaXNTaG93KCkpIGZvcm0uZGlzYWJsZSgpO1xuICAgIH0sXG4gICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICApO1xufVxuIiwiQGZvciAoc2NoZW1lIG9mIGZvcm1TY2hlbWEoKTsgdHJhY2sgc2NoZW1lLl9pZCkge1xuICA8dGRcbiAgICBjbGFzcz1cInt7IHNjaGVtZS5jbHMgfX0gdy0xXCJcbiAgICBbbmdDbGFzc109XCJ7IHN0aWNreUNvbHVtbjogc2NoZW1lLnN0aWNreSB9XCIgXG4gICAgW3N0eWxlLmxlZnQucHhdPVwic2NoZW1lLnN0aWNreSA/IHRkRWwub2Zmc2V0TGVmdCA6IG51bGxcIlxuICAgICN0ZEVsPlxuICAgIEBpZiAoc2NoZW1lLnR5cGUgPT0gJ2J1dHRvbicpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgPGFwcC1idG5cbiAgICAgICAgICBbdGV4dF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgIFt0eXBlXT1cIlxuICAgICAgICAgICAgKGZvcm0oKVxuICAgICAgICAgICAgfCBoYXNGb3JtVmFsdWVcbiAgICAgICAgICAgICAgOiAoY2hpbGRyZW5Gb3JtU2NoZW1hTWFwKClbc2NoZW1lLmZpZWxkXS5mb3JtU2NoZW1hU3RyIHwgdG9BbnkpXG4gICAgICAgICAgICAgIDogZm9ybVZhbHVlKCkpXG4gICAgICAgICAgICAgID8gJ3ByaW1hcnknXG4gICAgICAgICAgICAgIDogJ3NlY29uZGFyeSdcbiAgICAgICAgICBcIlxuICAgICAgICAgIG9uRm9ybUludmFsaWQ9XCJ3YXJuXCJcbiAgICAgICAgICBbZm9ybV09XCJmb3JtKClcIlxuICAgICAgICAgIFtpY29uXT1cInNjaGVtZS5pY29uXCJcbiAgICAgICAgICBbZm9ybVNjaGVtYV09XCJjaGlsZHJlbkZvcm1TY2hlbWFNYXAoKVtzY2hlbWUuZmllbGRdLmZvcm1TY2hlbWFcIlxuICAgICAgICAgIFttYXRUb29sdGlwXT1cIlxuICAgICAgICAgICAgZm9ybVZhbHVlKCkgfCBmb3JtVmFsdWU6IGNoaWxkcmVuRm9ybVNjaGVtYU1hcCgpW3NjaGVtZS5maWVsZF0uZm9ybVNjaGVtYSB8IHRvQW55XG4gICAgICAgICAgXCJcbiAgICAgICAgICAobWNsaWNrKT1cImRNb2RhbC5vcGVuKClcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8bW9kYWwtY29tcCAjZE1vZGFsIFtzaG93Rm9vdGVyXT1cImZhbHNlXCIgaGVhZGVyPVwie3sgc2NoZW1lLmxhYmVsIH19IEZvcm1cIiB3aWR0aD1cIjcwJVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbW9kYWxCb2R5PlxuICAgICAgICAgIDxmb3JtLWdlbmVyYXRvclxuICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybSgpXCJcbiAgICAgICAgICAgIFtncmlkWFhMU3R5bGVdPVwiNFwiXG4gICAgICAgICAgICBbZ3JpZExHU3R5bGVdPVwiNFwiXG4gICAgICAgICAgICBbc2hvd1N1Ym1pdEJ0bl09XCJmYWxzZVwiXG4gICAgICAgICAgICBbZm9ybVNjaGVtYV09XCJjaGlsZHJlbkZvcm1TY2hlbWFNYXAoKVtzY2hlbWUuZmllbGRdLmZvcm1TY2hlbWFcIlxuICAgICAgICAgICAgKG9uU3VibWl0KT1cImRNb2RhbC5jbG9zZSgpXCI+PC9mb3JtLWdlbmVyYXRvcj5cbiAgICAgICAgICBAaWYgKCFpc1Nob3coKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICAgIDxhcHAtYnRuIChtY2xpY2spPVwiZE1vZGFsLmNsb3NlKClcIiB0ZXh0PVwiRG9uZVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L21vZGFsLWNvbXA+XG4gICAgfSBAZWxzZSBpZiAoc2NoZW1lLmZpZWxkKSB7XG4gICAgICBAc3dpdGNoICh0cnVlKSB7XG4gICAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAndGVsJykge1xuICAgICAgICAgIDxhcHAtcGhvbmUtbnVtYmVyXG4gICAgICAgICAgICBbZm9ybV09XCJmb3JtKClcIlxuICAgICAgICAgICAgW2NsZWFyT25EaXNhYmxlXT1cInNjaGVtZS5jbGVhck9uRGlzYWJsZVwiXG4gICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgW3Nob3dMYWJlbF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbbm9Gb3JtYXRdPVwic2NoZW1lLm5vRm9ybWF0XCJcbiAgICAgICAgICAgIFtkZWJ1Z109XCJzY2hlbWUuZGVidWdcIlxuICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvblwiXG4gICAgICAgICAgICBbY2xlYXJPbkRpc2FibGVdPVwic2NoZW1lLmNsZWFyT25EaXNhYmxlXCJcbiAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbkljb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uSWNvblwiXG4gICAgICAgICAgICBbY291bnRyeUNvZGUzXT1cInNjaGVtZS5jb3VudHJ5Q29kZTNcIlxuICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uTXNnXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbk1zZyA9PSBudWxsID8gdHJ1ZSA6IHNjaGVtZS5zaG93VmFsaWRhdGlvbk1zZ1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgIHNjaGVtZS5kaXNhYmxlZCB8fFxuICAgICAgICAgICAgICAoc2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IGZvcm1WYWx1ZSgpIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAjaW5wdXRUYWcgLz5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ2F1dG9jb21wbGV0ZScpIHtcbiAgICAgICAgICA8YXBwLWF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybSgpXCJcbiAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdFwiXG4gICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnID09IG51bGwgPyB0cnVlIDogc2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnXCJcbiAgICAgICAgICAgIChtU2VsZWN0ZWRPcHRpb25MYWJlbCk9XCJzZXRPcHRpb25MYWJlbCgkZXZlbnQsIHNjaGVtZSlcIlxuICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkIHwgdG9BbnlcIlxuICAgICAgICAgICAgW2NsZWFyT25EaXNhYmxlXT1cInNjaGVtZS5jbGVhck9uRGlzYWJsZVwiXG4gICAgICAgICAgICBbZGVidWddPVwic2NoZW1lLmRlYnVnXCJcbiAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlclwiXG4gICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZFwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJzY2hlbWUub3B0aW9ucyB8fCBvcHRpb25zTWFwW3NjaGVtZS5maWVsZCB8IHRvQW55XVwiXG4gICAgICAgICAgICBbaGludF09XCJzY2hlbWUuaGludFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgIHNjaGVtZS5kaXNhYmxlZCB8fFxuICAgICAgICAgICAgICAoc2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IGZvcm1WYWx1ZSgpIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAjaW5wdXRUYWcgLz5cbiAgICAgICAgfVxuXG4gICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICA8YXBwLWlucHV0LWJhc2ljXG4gICAgICAgICAgICAjZm9ybUZpZWxkXG4gICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGQgfCB0b0FueVwiXG4gICAgICAgICAgICBbZm9ybV09XCJmb3JtKClcIlxuICAgICAgICAgICAgW2RvbnRGb3JtYXRBc0lucHV0XT1cInNjaGVtZS5kb250Rm9ybWF0QXNJbnB1dFwiXG4gICAgICAgICAgICBbY2xlYXJPbkRpc2FibGVdPVwic2NoZW1lLmNsZWFyT25EaXNhYmxlXCJcbiAgICAgICAgICAgIFt0eXBlXT1cInNjaGVtZS50eXBlXCJcbiAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkXCJcbiAgICAgICAgICAgIFtsYWJlbFR5cGVdPVwic2NoZW1lLmxhYmVsVHlwZSB8IHRvQW55XCJcbiAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2cgPT0gbnVsbCA/IHRydWUgOiBzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIlxuICAgICAgICAgICAgW2NoZWNrZWRTaWduYWxdPVwic2NoZW1lLmNoZWNrZWRcIlxuICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uXT1cIiEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICBbbm9Gb3JtYXRdPVwic2NoZW1lLm5vRm9ybWF0XCJcbiAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbkljb25dPVwiISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgIFtkZWJ1Z109XCJzY2hlbWUuZGVidWdcIlxuICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgW29wdGlvbkZvcm1hdHRlcl09XCJzY2hlbWUub3B0aW9uRm9ybWF0dGVyXCJcbiAgICAgICAgICAgIChtU2VsZWN0ZWRPcHRpb25MYWJlbCk9XCJzZXRPcHRpb25MYWJlbCgkZXZlbnQsIHNjaGVtZSlcIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwic2NoZW1lLm9wdGlvbnMgfHwgb3B0aW9uc01hcFtzY2hlbWUuZmllbGQgfCB0b0FueV1cIlxuICAgICAgICAgICAgW2RlY2ltYWxQb2ludHNdPVwic2NoZW1lLmRlY2ltYWxQb2ludHNcIlxuICAgICAgICAgICAgW2hpbnRdPVwic2NoZW1lLmhpbnRcIlxuICAgICAgICAgICAgW21heF09XCJzY2hlbWUubWF4XCJcbiAgICAgICAgICAgIFttaW5dPVwic2NoZW1lLm1pblwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2NoZW1lLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgc2NoZW1lLmRpc2FibGVkIHx8XG4gICAgICAgICAgICAgIChzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogZm9ybVZhbHVlKCkgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpKVxuICAgICAgICAgICAgXCIgLz5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgPC90ZD5cbn1cbkBpZiAoIWlzU2hvdygpKSB7XG4gIEBpZiAoIWhpZGVEZWxldGUoKSkge1xuICAgIDx0ZCBjbGFzcz1cInctMVwiPlxuICAgICAgPGFwcC1idG5cbiAgICAgICAgZ3JvdXA9XCJkZWxldGVcIlxuICAgICAgICBbaWNvbkJ0bl09XCJ0cnVlXCJcbiAgICAgICAgKG1jbGljayk9XCJvbkRlbGV0ZVJvd0Z1bmMuZW1pdCh7IGJ0bjogZGVsZXRlQnRuIH0pXCJcbiAgICAgICAgI2RlbGV0ZUJ0biAvPlxuICAgIDwvdGQ+XG4gIH1cbiAgQGlmICghaGlkZUFkZCgpKSB7XG4gICAgPHRkIGNsYXNzPVwidy0xXCI+XG4gICAgICA8YXBwLWJ0biBbaWNvbkJ0bl09XCJ0cnVlXCIgZ3JvdXA9XCJhZGRcIiAobWNsaWNrKT1cIm9uQWRkUm93RnVuYy5lbWl0KHsgYnRuOiBhZGRCdG4gfSlcIiAjYWRkQnRuIC8+XG4gICAgPC90ZD5cbiAgfVxuICBAZm9yIChhY3Rpb25CdG4gb2YgYWN0aW9uQnRucygpOyB0cmFjayBhY3Rpb25CdG4uaWNvbikge1xuICAgIDx0ZCBjbGFzcz1cInctMVwiPlxuICAgICAgPGFwcC1idG5cbiAgICAgICAgW2ljb25CdG5dPVwidHJ1ZVwiXG4gICAgICAgIFtncm91cF09XCJhY3Rpb25CdG4uZ3JvdXBcIlxuICAgICAgICBbaWNvbl09XCJhY3Rpb25CdG4uaWNvblwiXG4gICAgICAgIChtY2xpY2spPVwiXG4gICAgICAgICAgb25BY3Rpb25CdXR0b25DbGljay5lbWl0KHtcbiAgICAgICAgICAgIGJ0bjogYWN0aW9uQnRuVGVtcCxcbiAgICAgICAgICAgIGFjdGlvbkJ1dHRvbjogYWN0aW9uQnRuLFxuICAgICAgICAgIH0pXG4gICAgICAgIFwiXG4gICAgICAgICNhY3Rpb25CdG5UZW1wIC8+XG4gICAgPC90ZD5cbiAgfVxufVxuIl19
|