@snabcentr/client-ui 3.25.1 → 3.26.0
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/feedback/feedback-form/sc-feedback-form.component.mjs +1 -1
- package/esm2022/feedback/index.mjs +1 -2
- package/esm2022/feedback/interfaces/sc-feedback-form-config.mjs +1 -1
- package/feedback/feedback-form/sc-feedback-form.component.d.ts +3 -3
- package/feedback/index.d.ts +0 -1
- package/feedback/interfaces/sc-feedback-form-config.d.ts +2 -2
- package/fesm2022/snabcentr-client-ui.mjs +1 -32
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/release_notes.tmp +3 -3
- package/esm2022/feedback/enums/index.mjs +0 -2
- package/esm2022/feedback/enums/sc-feedback-forms.mjs +0 -31
- package/feedback/enums/index.d.ts +0 -1
- package/feedback/enums/sc-feedback-forms.d.ts +0 -29
@@ -332,4 +332,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
332
332
|
TuiSortCountriesPipe,
|
333
333
|
], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let fieldsList = fields();\n<form\n *ngIf=\"fieldsList.length > 0\"\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col justify-between gap-4\"\n>\n <!-- \u0424\u0418\u041E -->\n <label\n *ngIf=\"fieldsList.includes('name')\"\n tuiLabel\n >\n \u0424\u0418\u041E\n <tui-input formControlName=\"name\"> \u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u0412\u0430\u0448\u0438 \u0424.\u0418.\u041E. </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <!-- \u0422\u0435\u043B\u0435\u0444\u043E\u043D -->\n @if (fieldsList.includes('phone')) {\n <label tuiLabel>\n \u0422\u0435\u043B\u0435\u0444\u043E\u043D\n <tui-textfield>\n <input\n formControlName=\"phone\"\n tuiInputPhoneInternational\n [countrySearch]=\"true\"\n [countries]=\"(countries | tuiSortCountries | async) || []\"\n autocomplete=\"phone\"\n />\n </tui-textfield>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <label\n *ngIf=\"fieldsList.includes('isShouldUseMessenger') && form.controls.phone.value && isValidPhoneNumberForMessenger(form.controls.phone.value)\"\n tuiLabel\n >\n <input\n formControlName=\"isShouldUseMessenger\"\n tuiCheckbox\n type=\"checkbox\"\n />\n <span tuiTitle> \u041D\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0432 \u043C\u0435\u0441\u0441\u0435\u043D\u0434\u0436\u0435\u0440\u0430\u0445, \u0430 \u043D\u0435 \u0437\u0432\u043E\u043D\u0438\u0442\u044C </span>\n </label>\n }\n <!-- \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B -->\n <label\n *ngIf=\"fieldsList.includes('email')\"\n tuiLabel\n >\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <tui-input formControlName=\"email\">\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n />\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <!-- \u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439 -->\n <label\n *ngIf=\"fieldsList.includes('message')\"\n tuiLabel\n >\n \u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439\n <tui-textarea formControlName=\"message\"> \u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439 </tui-textarea>\n <tui-error\n formControlName=\"message\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <!-- \u0424\u0430\u0439\u043B\u044B -->\n <div\n *ngIf=\"fieldsList.includes('files')\"\n class=\"flex flex-col gap-1\"\n >\n <label tuiInputFiles>\n <input\n #validator=\"tuiInputFilesValidator\"\n accept=\".doc,.docx,.pdf,image/*\"\n tuiInputFiles\n [formControl]=\"loadedFile\"\n [multiple]=\"true\"\n (reject)=\"onReject($event)\"\n />\n </label>\n\n <tui-error\n *ngIf=\"loadedFile.invalid\"\n [error]=\"['maxLength'] | tuiFieldError | async\"\n [formControl]=\"loadedFile\"\n />\n\n @let accepted = accepted$ | async;\n <tui-files\n *ngIf=\"accepted?.length || rejected.length\"\n class=\"tui-space_top-1\"\n >\n <tui-file\n *ngFor=\"let file of accepted\"\n [file]=\"file\"\n (remove)=\"onRemove(file)\"\n />\n <tui-file\n *ngFor=\"let file of rejected\"\n state=\"error\"\n [file]=\"(file | tuiFileRejected: validator | async) || file\"\n (remove)=\"onRemove(file)\"\n />\n </tui-files>\n </div>\n\n <!-- recaptcha -->\n @if (form.get('recaptcha')) {\n <div\n class=\"mb-3 max-h-20 overflow-hidden duration-500\"\n [ngClass]=\"{ '!max-h-0 !-m-2': form.get('recaptcha')?.valid }\"\n >\n <re-captcha formControlName=\"recaptcha\" />\n </div>\n }\n\n <!-- \u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F -->\n <div class=\"flex flex-wrap items-center gap-3\">\n <button\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n iconStart=\"@tui.sc.send\"\n class=\"self-center\"\n >\n \u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C\n </button>\n <div class=\"grow basis-60 text-body-s\">\n \u041D\u0430\u0436\u0438\u043C\u0430\u044F \u043D\u0430 \u043A\u043D\u043E\u043F\u043A\u0443, \u0432\u044B \u0441\u043E\u0433\u043B\u0430\u0448\u0430\u0435\u0442\u0435\u0441\u044C \u0441\n <button\n tuiLink\n [pseudo]=\"true\"\n type=\"button\"\n (click)=\"context?.data?.onClickOfferHandler(); clickOffer.emit()\"\n >\n \u041F\u043E\u043B\u0438\u0442\u0438\u043A\u043E\u0439 \u043A\u043E\u043D\u0444\u0438\u0434\u0435\u043D\u0446\u0438\u0430\u043B\u044C\u043D\u043E\u0441\u0442\u0438\n </button>\n </div>\n </div>\n</form>\n" }]
|
334
334
|
}], ctorParameters: () => [], propDecorators: { isValidPhoneNumberForMessenger: [] } });
|
335
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZmVlZGJhY2stZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZmVlZGJhY2svZmVlZGJhY2stZm9ybS9zYy1mZWVkYmFjay1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9mZWVkYmFjay9mZWVkYmFjay1mb3JtL3NjLWZlZWRiYWNrLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDZFQUE2RTtBQUU3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWUsTUFBTSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUNuSixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkgsT0FBTyxFQUNILG1CQUFtQixFQUVuQixpQkFBaUIsRUFFakIsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxjQUFjLEVBRWQsYUFBYSxHQUNoQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBaUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQW9CLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRSxPQUFP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Z01BK0pBLHVDRHJIUSxTQUFTLDZDQUNULG1CQUFtQixpekNBQ25CLE9BQU8sb0ZBQ1AsS0FBSyxtSEFDTCxRQUFRLG9FQUNSLGlCQUFpQixxREFDakIsa0JBQWtCLHlLQUNsQixjQUFjLGtMQUNkLG1CQUFtQiwrQkFDbkIsU0FBUyxvSUFDVCxnQkFBZ0IsdUhBQ2hCLFFBQVEsMkRBQ1Isb0JBQW9CLG9MQUNwQixlQUFlLHFRQUNmLE9BQU8sNEZBQ1AsSUFBSSw0RkFDSixpQkFBaUIsNE9BQ2pCLFdBQVcsb0dBQ1gsUUFBUSxxcEJBRVIsMEJBQTBCLHVSQUUxQixvQkFBb0I7O0FBMlVkO0lBRFQsT0FBTzs2RUFHUDs0RkF6VVEsdUJBQXVCO2tCQS9CbkMsU0FBUztpQ0FDTSxJQUFJLFlBQ04sa0JBQWtCLFdBRW5CO3dCQUNMLFNBQVM7d0JBQ1QsbUJBQW1CO3dCQUNuQixPQUFPO3dCQUNQLEtBQUs7d0JBQ0wsUUFBUTt3QkFDUixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLFNBQVM7d0JBQ1QsZ0JBQWdCO3dCQUNoQixRQUFRO3dCQUNSLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixPQUFPO3dCQUNQLElBQUk7d0JBQ0osaUJBQWlCO3dCQUNqQixXQUFXO3dCQUNYLFFBQVE7d0JBQ1IsUUFBUTt3QkFDUiwwQkFBMEI7d0JBQzFCLEdBQUcsWUFBWTt3QkFDZixvQkFBb0I7cUJBQ3ZCLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNO3dEQXlVckMsOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyxAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2QgKi9cblxuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIElucHV0U2lnbmFsLCBvdXRwdXQsIE91dHB1dEVtaXR0ZXJSZWYsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgU2NDb252ZXJ0ZXJzU2VydmljZSxcbiAgICBTY0ZlZWRiYWNrRm9ybSxcbiAgICBTY0ZlZWRiYWNrU2VydmljZSxcbiAgICBTY0lGZWVkYmFja01lc3NhZ2UsXG4gICAgU2NJU3VnZ2VzdGlvblR5cGUsXG4gICAgU2NQaG9uZVNlcnZpY2UsXG4gICAgU2NVcGxvYWRlZEZpbGUsXG4gICAgU2NVc2VyLFxuICAgIFNjVXNlclNlcnZpY2UsXG59IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVHVpTG9vc2VVbmlvbiwgdHVpUHVyZSwgVHVpVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBUdWlCdXR0b24sIFR1aURpYWxvZ0NvbnRleHQsIFR1aUVycm9yLCBUdWlMYWJlbCwgVHVpTGluaywgVHVpVGV4dGZpZWxkLCBUdWlUaXRsZSB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsIH0gZnJvbSAnQHRhaWdhLXVpL2V4cGVyaW1lbnRhbCc7XG5pbXBvcnQgeyBUdWlDb3VudHJ5SXNvQ29kZSB9IGZyb20gJ0B0YWlnYS11aS9pMThuJztcbmltcG9ydCB7IFR1aUJ1dHRvbkxvYWRpbmcsIFR1aUNoZWNrYm94LCBUdWlGaWVsZEVycm9yUGlwZSwgVHVpRmlsZUxpa2UsIFR1aUZpbGVzLCB0dWlGaWxlc0FjY2VwdGVkLCBUdWlTb3J0Q291bnRyaWVzUGlwZSB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuaW1wb3J0IHsgVHVpSW5wdXRNb2R1bGUsIFR1aUlucHV0UGhvbmVNb2R1bGUsIFR1aVRleHRhcmVhTW9kdWxlIH0gZnJvbSAnQHRhaWdhLXVpL2xlZ2FjeSc7XG5pbXBvcnQgeyBQT0xZTU9SUEhFVVNfQ09OVEVYVCB9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHsgZ2V0Q291bnRyaWVzIH0gZnJvbSAnbGlicGhvbmVudW1iZXItanMnO1xuaW1wb3J0IHsgUmVjYXB0Y2hhQ29tcG9uZW50LCBSZWNhcHRjaGFGb3Jtc01vZHVsZSwgUmVjYXB0Y2hhTW9kdWxlIH0gZnJvbSAnbmctcmVjYXB0Y2hhLTInO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmUsIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBpRXJyb3JSZXNwb25zZSB9IGZyb20gJy4uLy4uL2F1dGgnO1xuaW1wb3J0IHsgU2NGb3JtRmllbGRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZm9ybS1maWVsZHMnO1xuaW1wb3J0IHsgTUFYX0ZJTEVTX0lOX0ZPUk1fSU5QVVQgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvc2MtbWF4LWZpbGVzLWluLWZvcm0taW5wdXQnO1xuaW1wb3J0IHsgU2NGZWVkYmFja0Zvcm1Db25maWcsIFNjRmVlZGJhY2tGb3JtRmllbGRUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINGE0L7RgNC80Ysg0L7QsdGA0LDRgtC90L7QuSDRgdCy0Y/Qt9C4LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnc2MtZmVlZGJhY2stZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLWZlZWRiYWNrLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQXN5bmNQaXBlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgVHVpRXJyb3IsXG4gICAgICAgIFR1aUZpZWxkRXJyb3JQaXBlLFxuICAgICAgICBTY0Zvcm1GaWVsZHNNb2R1bGUsXG4gICAgICAgIFR1aUlucHV0TW9kdWxlLFxuICAgICAgICBUdWlJbnB1dFBob25lTW9kdWxlLFxuICAgICAgICBUdWlCdXR0b24sXG4gICAgICAgIFR1aUJ1dHRvbkxvYWRpbmcsXG4gICAgICAgIFR1aUxhYmVsLFxuICAgICAgICBSZWNhcHRjaGFGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVjYXB0Y2hhTW9kdWxlLFxuICAgICAgICBUdWlMaW5rLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBUdWlUZXh0YXJlYU1vZHVsZSxcbiAgICAgICAgVHVpQ2hlY2tib3gsXG4gICAgICAgIFR1aVRpdGxlLFxuICAgICAgICBUdWlGaWxlcyxcbiAgICAgICAgVHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWwsXG4gICAgICAgIC4uLlR1aVRleHRmaWVsZCxcbiAgICAgICAgVHVpU29ydENvdW50cmllc1BpcGUsXG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NGZWVkYmFja0Zvcm1Db21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCa0L7QvdGC0LXQutGB0YIg0LTQuNCw0LvQvtCz0L7QstC+0LPQviDQvtC60L3QsCwg0LIg0LrQvtGC0L7RgNC+0Lwg0L7RgtC60YDRi9GCINC60L7QvNC/0L7QvdC10L3Rgi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udGV4dDogVHVpRGlhbG9nQ29udGV4dDx2b2lkLCB7IG9uQ2xpY2tPZmZlckhhbmRsZXI6ICgpID0+IHZvaWQgfSAmIFNjRmVlZGJhY2tGb3JtQ29uZmlnPiB8IG51bGwgPSBpbmplY3Q8XG4gICAgICAgIFR1aURpYWxvZ0NvbnRleHQ8dm9pZCwgeyBvbkNsaWNrT2ZmZXJIYW5kbGVyOiAoKSA9PiB2b2lkIH0gJiBTY0ZlZWRiYWNrRm9ybUNvbmZpZz5cbiAgICA+KFBPTFlNT1JQSEVVU19DT05URVhULCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgLyoqXG4gICAgICog0KHQuNC80LLQvtC70YzQvdC+0LUg0L7QsdC+0LfQvdCw0YfQtdC90LjQtSAoc2x1Zykg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICAgIHB1YmxpYyByZWFkb25seSBzbHVnSW5wdXQ6IElucHV0U2lnbmFsPFR1aUxvb3NlVW5pb248a2V5b2YgdHlwZW9mIFNjRmVlZGJhY2tGb3JtPj4gPSBpbnB1dDxUdWlMb29zZVVuaW9uPGtleW9mIHR5cGVvZiBTY0ZlZWRiYWNrRm9ybT4+KCdjb21tb24nLCB7IGFsaWFzOiAnc2x1ZycgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0L/QvtC70LXQuSwg0LTQvtGB0YLRg9C/0L3Ri9GFINCyINC00LDQvdC90L7QuSDRhNC+0YDQvNC1LlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgcHVibGljIHJlYWRvbmx5IGZpZWxkc0lucHV0OiBJbnB1dFNpZ25hbDxTY0ZlZWRiYWNrRm9ybUZpZWxkVHlwZVtdPiA9IGlucHV0PFNjRmVlZGJhY2tGb3JtRmllbGRUeXBlW10+KFsnbmFtZScsICdlbWFpbCcsICdwaG9uZScsICdtZXNzYWdlJywgJ2ZpbGVzJ10sIHsgYWxpYXM6ICdmaWVsZHMnIH0pO1xuXG4gICAgLyoqXG4gICAgICog0KHQuNC80LLQvtC70YzQvdC+0LUg0L7QsdC+0LfQvdCw0YfQtdC90LjQtSAoc2x1Zykg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2x1ZzogU2lnbmFsPFR1aUxvb3NlVW5pb248a2V5b2YgdHlwZW9mIFNjRmVlZGJhY2tGb3JtPj4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbnRleHQ/LmRhdGEuc2x1ZyA/PyB0aGlzLnNsdWdJbnB1dCgpKTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDQv9C+0LvQtdC5LCDQtNC+0YHRgtGD0L/QvdGL0YUg0LIg0LTQsNC90L3QvtC5INGE0L7RgNC80LUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpZWxkczogU2lnbmFsPFNjRmVlZGJhY2tGb3JtRmllbGRUeXBlW10+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb250ZXh0Py5kYXRhLmZpZWxkcyA/PyB0aGlzLmZpZWxkc0lucHV0KCkpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMg0LTQvtCz0L7QstC+0YDQsCDQvtGE0LXRgNGC0YsuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNsaWNrT2ZmZXI6IE91dHB1dEVtaXR0ZXJSZWY8dm9pZD4gPSBvdXRwdXQoKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INGD0YHQv9C10YjQvdC+0Lkg0L7RgtC/0YDQsNCy0LrQuCDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzZW5kU3VjY2VzczogT3V0cHV0RW1pdHRlclJlZjx2b2lkPiA9IG91dHB1dCgpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC+0LHRgNCw0YLQvdC+0Lkg0YHQstGP0LfQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGZlZWRiYWNrU2VydmljZTogU2NGZWVkYmFja1NlcnZpY2UgPSBpbmplY3QoU2NGZWVkYmFja1NlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC60L7QvdCy0LXRgNGC0LDRhtC40Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udmVydGVyc1NlcnZpY2U6IFNjQ29udmVydGVyc1NlcnZpY2UgPSBpbmplY3QoU2NDb252ZXJ0ZXJzU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQnNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YTQsNC50LvQvtCyLCDQvtGC0L/RgNCw0LLQu9GP0LXQvNGL0YUg0LIg0YTQvtGA0LzQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG1heEZpbGVzSW5Gb3JtOiBudW1iZXIgPSBpbmplY3QoTUFYX0ZJTEVTX0lOX0ZPUk1fSU5QVVQpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LDQvdC90YvRhSDQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70LUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyJDogT2JzZXJ2YWJsZTxTY1VzZXI+ID0gaW5qZWN0KFNjVXNlclNlcnZpY2UpXG4gICAgICAgIC5nZXRVc2VyQ2hhbmdlJCgpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFwKCh1c2VyKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHVzZXIuaXNHdWVzdCkge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5mb3JtIGFzIEZvcm1Hcm91cCkuYWRkQ29udHJvbCgncmVjYXB0Y2hhJywgdGhpcy5yZWNhcHRjaGFDb250cm9sKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5mb3JtIGFzIEZvcm1Hcm91cCkucmVtb3ZlQ29udHJvbCgncmVjYXB0Y2hhJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5maWVsZHMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZmllbGRzLmluY2x1ZGVzKCduYW1lJykgPyB1c2VyLm5hbWUgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmU6IGZpZWxkcy5pbmNsdWRlcygncGhvbmUnKSA/IHVzZXIuY29udGFjdHMucGhvbmUudmFsdWUgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IGZpZWxkcy5pbmNsdWRlcygnZW1haWwnKSA/IHVzZXIuY29udGFjdHMuZW1haWwudmFsdWUgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgLyoqXG4gICAgICog0J/QvtC70LUg0LLQstC+0LTQsCDQtNC70Y8gcmVjYXB0Y2hhLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSByZWNhcHRjaGFDb250cm9sOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPiA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcblxuICAgIC8qKlxuICAgICAqINCT0YDRg9C/0L/QsCDQv9C+0LvQtdC5INCy0LLQvtC00LAg0LTQu9GPINGE0L7RgNC80YsgwqvQn9C+0LbQtdC70LDQvdC40Y8g0Lgg0L/RgNC10LTQu9C+0LbQtdC90LjRjyDQv9C+INGD0LvRg9GH0YjQtdC90LjRjiDRgdCw0LnRgtCwwrsuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxuICAgICAgICBwaG9uZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxuICAgICAgICBlbWFpbDogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxuICAgICAgICBtZXNzYWdlOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgICAgIGZpbGVzOiBuZXcgRm9ybUNvbnRyb2w8U2NVcGxvYWRlZEZpbGVbXSB8IG51bGw+KFtdKSxcbiAgICAgICAgaXNTaG91bGRVc2VNZXNzZW5nZXI6IG5ldyBGb3JtQ29udHJvbDxib29sZWFuIHwgbnVsbD4oZmFsc2UpLFxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICog0J/QtdGA0LXRh9C40YHQu9C10L3QuNC1INGC0LjQv9C+0LIg0L/QvtC00YHQutCw0LfQvtC6LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzdWdnZXN0aW9uVHlwZTogdHlwZW9mIFNjSVN1Z2dlc3Rpb25UeXBlID0gU2NJU3VnZ2VzdGlvblR5cGU7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgU3ViamVjdH0g0YHQvtCx0YvRgtC40Y8g0L7RgtC/0YDQsNCy0LrQuCDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvblN1Ym1pdDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LfQsNC/0YDQvtGB0LAg0L3QsCDQvtGC0L/RgNCw0LLQutGDINC00LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVxdWVzdCQ6IE9ic2VydmFibGU8dW5kZWZpbmVkIHwgbnVsbD4gPSB0aGlzLm9uU3VibWl0LnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmZvcm0udmFsaWQpLFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5mb3JtLnZhbHVlIGFzIFNjSUZlZWRiYWNrTWVzc2FnZSksXG4gICAgICAgIHRhcCgodmFsdWU6IFNjSUZlZWRiYWNrTWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlLnBob25lICYmICFTY1Bob25lU2VydmljZS5pc1ZhbGlkUGhvbmVOdW1iZXJGb3JNZXNzZW5nZXIodmFsdWUucGhvbmUpKSB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICAgICAgZGVsZXRlIHZhbHVlLmlzU2hvdWxkVXNlTWVzc2VuZ2VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCh2YWx1ZSkgPT5cbiAgICAgICAgICAgIHRoaXMuZmVlZGJhY2tTZXJ2aWNlLnNlbmRGZWVkYmFjayh0aGlzLnNsdWcoKSBhcyBrZXlvZiB0eXBlb2YgU2NGZWVkYmFja0Zvcm0sIHRoaXMuY29udmVydGVyc1NlcnZpY2UucmVtb3ZlTnVsbFJlY3Vyc2l2ZSh2YWx1ZSkpLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmNvbXBsZXRlV2l0aCgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZFN1Y2Nlc3MuZW1pdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMvbm8taW1wbGljaXQtYW55LWNhdGNoXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBlcnJvcnMsIG1lc3NhZ2UgfSA9IGVycm9yLmVycm9yIGFzIEFwaUVycm9yUmVzcG9uc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZXJyb3JzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChrZXkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IGVycm9yc1trZXldIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogW21lc3NhZ2VdIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLXVzZWxlc3MtdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZClcbiAgICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgc2hhcmUoKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGB0L7RgdGC0L7Rj9C90LjRjyDQt9Cw0LPRgNGD0LfQutC4INC00LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnJlcXVlc3QkLnBpcGUobWFwKCh2YWx1ZSkgPT4gdmFsdWUgPT09IHVuZGVmaW5lZCkpO1xuXG4gICAgLyoqXG4gICAgICog0KPQv9GA0LDQstC70Y/QtdGCINGB0L7RgdGC0L7Rj9C90LjQtdC8INC30LDQs9GA0YPQttC10L3QvdGL0YUg0YTQsNC50LvQvtCyLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBsb2FkZWRGaWxlOiBGb3JtQ29udHJvbDxUdWlGaWxlTGlrZVtdIHwgbnVsbD4gPSBuZXcgRm9ybUNvbnRyb2w8VHVpRmlsZUxpa2VbXSB8IG51bGw+KFtdLCBbdGhpcy5tYXhGaWxlc0xlbmd0aCgpXSk7XG5cbiAgICAvKipcbiAgICAgKiBPYnNlcnZhYmxlLCDQutC+0YLQvtGA0YvQuSDQvtGC0YHQu9C10LbQuNCy0LDQtdGCLCDQv9GA0LjQvdGP0YLRiyDQu9C4INGE0LDQudC70Ysg0LIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNC4INGBINGC0YDQtdCx0L7QstCw0L3QuNGP0LzQuCDQv9C+INGC0LjQv9GDINGA0LDQt9C80LXRgNGDINC4INGCLtC0LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBhY2NlcHRlZCQ6IE9ic2VydmFibGU8RmlsZVtdPiA9IHRoaXMubG9hZGVkRmlsZS52YWx1ZUNoYW5nZXMucGlwZShtYXAoKCkgPT4gdHVpRmlsZXNBY2NlcHRlZCh0aGlzLmxvYWRlZEZpbGUpKSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0YTQsNC50LvQvtCyLCDQutC+0YLQvtGA0YvQtSDQsdGL0LvQuCDQvtGC0LrQu9C+0L3QtdC90Ysg0L/RgNC4INC30LDQs9GA0YPQt9C60LUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlamVjdGVkOiByZWFkb25seSBGaWxlW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdGC0YDQsNC9LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb3VudHJpZXM6IHJlYWRvbmx5IFR1aUNvdW50cnlJc29Db2RlW10gPSBnZXRDb3VudHJpZXMoKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NGZWVkYmFja0Zvcm1Db21wb25lbnR9LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqINCt0YLQviDRgNC10YjQtdC90LjQtSDQvtGI0LjQsdC60LggIzQ5NDAsINCx0YvQu9C+IEBzZWUgW9C/0YDQtdC00LvQvtC20LXQvdC+XShodHRwczovL2dpdGh1Yi5jb20vRGV0aEFyaWVsL25nLXJlY2FwdGNoYS9pc3N1ZXMvMTIzI2lzc3VlY29tbWVudC00MjYxMTIxMDEpINCw0LLRgtC+0YDQvtC8IHtAbGluayBSZWNhcHRjaGFDb21wb25lbnR9LlxuICAgICAgICAgKi9cbiAgICAgICAgUmVjYXB0Y2hhQ29tcG9uZW50LnByb3RvdHlwZS5uZ09uRGVzdHJveSA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZG90LW5vdGF0aW9uXG4gICAgICAgICAgICBpZiAodGhpc1snc3Vic2NyaXB0aW9uJ10pIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWNhbGwsIEB0eXBlc2NyaXB0LWVzbGludC9kb3Qtbm90YXRpb25cbiAgICAgICAgICAgICAgICB0aGlzWydzdWJzY3JpcHRpb24nXS51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIG1lcmdlKFxuICAgICAgICAgICAgdGhpcy5hY2NlcHRlZCQsXG4gICAgICAgICAgICB0aGlzLnVzZXIkLFxuICAgICAgICAgICAgdGhpcy5sb2FkZWRGaWxlLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoZmlsZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmZpbGVzLnJlc2V0KFtdKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblVwbG9hZEZpbGUoZmlsZXMpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgICAgIC8vINCS0LDQu9C40LTQsNGG0LjRjyDQv9C+0LvQtdC5INCy0LLQvtC00LAg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINGE0L7RgNC80YsuXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyQWxsVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgdGhpcy5zZXRBbGxWYWxpZGF0b3JzKHRoaXMuZmllbGRzKCkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9C00LDQu9GP0LXRgiDQstCw0LvQuNC00LDRhtC40Y4g0YHQviDQstGB0LXRhSDQv9C+0LvQtdC5INCy0LLQvtC00LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBjbGVhckFsbFZhbGlkYXRvcnMoKTogdm9pZCB7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9scykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChrZXkpO1xuXG4gICAgICAgICAgICBpZiAoY29udHJvbCAmJiBjb250cm9sICE9PSB0aGlzLnJlY2FwdGNoYUNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICBjb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDQstCw0LvQuNC00LDRhtC40Y4g0YHQviDQtNC70Y8g0YPQutCw0LfQsNC90L3Ri9GFINC/0L7Qu9C10Lkg0LLQstC+0LTQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWVsZHMg0J/QvtC70Y8sINC00LvRjyDQutC+0YLQvtGA0YvRhSDQvdGD0LbQvdC+INGD0YHRgtCw0L3QvtCy0LjRgtGMINCy0LDQu9C40LTQsNGG0LjRji5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldEFsbFZhbGlkYXRvcnMoZmllbGRzOiBTY0ZlZWRiYWNrRm9ybUZpZWxkVHlwZVtdKTogdm9pZCB7XG4gICAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWxlZDogU2NGZWVkYmFja0Zvcm1GaWVsZFR5cGUpID0+IHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZWZhdWx0LWNhc2VcbiAgICAgICAgICAgIHN3aXRjaCAoZmlsZWQpIHtcbiAgICAgICAgICAgICAgICBjYXNlICduYW1lJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnbmFtZScpPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKV0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdwaG9uZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Bob25lJyk/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEyKV0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2VtYWlsJyk/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbWVzc2FnZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ21lc3NhZ2UnKT8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdmaWxlcyc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2ZpbGVzJyk/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMubWF4RmlsZXNMZW5ndGgoNSldKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQsNGC0YvQstCw0LXRgiDQvtGC0LrQu9C+0L3QtdC90L3Ri9C1INGE0LDQudC70YsuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZXMg0KHQv9C40YHQvtC6INGE0LDQudC70L7Qsiwg0LrQvtGC0L7RgNGL0LUg0LHRi9C70Lgg0L7RgtC60LvQvtC90LXQvdGLLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblJlamVjdChmaWxlczogcmVhZG9ubHkgRmlsZVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVqZWN0ZWQgPSBbLi4ubmV3IFNldChbLi4udGhpcy5yZWplY3RlZCwgLi4uZmlsZXNdKV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPQtNCw0LvRj9C10YIg0YTQsNC50Lsg0LjQtyDRgdC/0LjRgdC60LAg0LfQsNCz0YDRg9C20LXQvdC90YvRhSDQuCDQvtGC0LrQu9C+0L3QtdC90L3Ri9GFINGE0LDQudC70L7Qsi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlINCk0LDQudC7LCDQutC+0YLQvtGA0YvQuSDQvdGD0LbQvdC+INGD0LTQsNC70LjRgtGMLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblJlbW92ZShmaWxlOiBGaWxlKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVqZWN0ZWQgPSB0aGlzLnJlamVjdGVkLmZpbHRlcigocmVqZWN0ZWQpID0+IHJlamVjdGVkICE9PSBmaWxlKTtcbiAgICAgICAgdGhpcy5sb2FkZWRGaWxlLnNldFZhbHVlKHRoaXMubG9hZGVkRmlsZS52YWx1ZT8uZmlsdGVyKChjdXJyZW50KSA9PiBjdXJyZW50ICE9PSBmaWxlKSA/PyBbXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JfQsNCz0YDRg9C20LDQtdGCINGE0LDQudC7INCyINGE0L7RgNC80YMg0L7QsdGA0LDRgtC90L7QuSDRgdCy0Y/Qt9C4LlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGVzINCd0LDQsdC+0YAg0YTQsNC50LvQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgb25VcGxvYWRGaWxlKGZpbGVzOiBUdWlGaWxlTGlrZVtdIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBmaWxlcz8uZm9yRWFjaCgoZmlsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgICAgICAgICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlYWRlci5yZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1iYXNlLXRvLXN0cmluZyxzb25hcmpzL25vLWJhc2UtdG8tc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5maWxlcy5zZXRWYWx1ZShbLi4uKHRoaXMuZm9ybS5jb250cm9scy5maWxlcy52YWx1ZSA/PyBbXSksIG5ldyBTY1VwbG9hZGVkRmlsZShmaWxlLm5hbWUsIHJlYWRlci5yZXN1bHQudG9TdHJpbmcoKSldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSBhcyB1bmtub3duIGFzIEJsb2IpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0L7QstC10YDRj9C10YIg0LrQvtC70LjRh9C10YHRgtCy0L4g0YTQsNC50LvQvtCyINC30LDQs9GA0YPQttC10L3QvdGL0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWF4TGVuZ3RoINC80LDQutGB0LjQvNCw0LvRjNC90L7QtSDQtNC+0L/Rg9GB0YLQuNC80L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRhNCw0LnQu9C+0LIg0LTQu9GPINC+0YLQv9GA0LDQstC60LguXG4gICAgICovXG4gICAgcHJpdmF0ZSBtYXhGaWxlc0xlbmd0aChtYXhMZW5ndGg6IG51bWJlciA9IHRoaXMubWF4RmlsZXNJbkZvcm0pOiBWYWxpZGF0b3JGbiB7XG4gICAgICAgIHJldHVybiAoeyB2YWx1ZSB9OiBBYnN0cmFjdENvbnRyb2w8VHVpRmlsZUxpa2VbXT4pID0+XG4gICAgICAgICAgICB2YWx1ZS5sZW5ndGggPiBtYXhMZW5ndGggPyB7IG1heExlbmd0aDogbmV3IFR1aVZhbGlkYXRpb25FcnJvcihg0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INGE0LDQudC70L7QsiAtICR7bWF4TGVuZ3RofWApIH0gOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0YvQv9C+0LvQvdGP0LXRgiDQvtGH0LjRgdGC0LrRgyDQv9C+0LvQtdC5INGE0L7RgNC80YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZXNldEZvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5yZXNldCh7XG4gICAgICAgICAgICBlbWFpbDogbnVsbCxcbiAgICAgICAgICAgIG5hbWU6IG51bGwsXG4gICAgICAgICAgICBwaG9uZTogbnVsbCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG51bGwsXG4gICAgICAgICAgICBmaWxlczogW10sXG4gICAgICAgICAgICBpc1Nob3VsZFVzZU1lc3NlbmdlcjogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQvtCy0LXRgNGP0LXRgiwg0YfRgtC+INC90L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsCDQv9C+0LTRhdC+0LTQuNGCINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQsiDQvNC10YHRgdC10L3QtNC20LXRgNCw0YUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUg0J3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdCwLCDQutC+0YLQvtGA0YvQuSDQvdC10L7QsdGF0L7QtNC40LzQviDQv9GA0L7QstC10YDQuNGC0YwuXG4gICAgICogQHJldHVybnMg0J/RgNC40LfQvdCw0Log0YLQvtCz0L4sINGH0YLQviDQvdC+0LzQtdGAINGC0LXQu9C10YTQvtC90LAg0L/QvtC00YXQvtC00LjRgiDQtNC70Y8g0LzQtdGB0YHQtdC90LTQttC10YDQvtCyLlxuICAgICAqL1xuICAgIEB0dWlQdXJlXG4gICAgcHJvdGVjdGVkIGlzVmFsaWRQaG9uZU51bWJlckZvck1lc3Nlbmdlcih2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBTY1Bob25lU2VydmljZS5pc1ZhbGlkUGhvbmVOdW1iZXJGb3JNZXNzZW5nZXIodmFsdWUpO1xuICAgIH1cbn1cbiIsIkBsZXQgZmllbGRzTGlzdCA9IGZpZWxkcygpO1xuPGZvcm1cbiAgICAqbmdJZj1cImZpZWxkc0xpc3QubGVuZ3RoID4gMFwiXG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAobmdTdWJtaXQpPVwib25TdWJtaXQubmV4dCgpXCJcbiAgICBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGdhcC00XCJcbj5cbiAgICA8IS0tINCk0JjQniAtLT5cbiAgICA8bGFiZWxcbiAgICAgICAgKm5nSWY9XCJmaWVsZHNMaXN0LmluY2x1ZGVzKCduYW1lJylcIlxuICAgICAgICB0dWlMYWJlbFxuICAgID5cbiAgICAgICAg0KTQmNCeXG4gICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiPiDQo9C60LDQttC40YLQtSDQktCw0YjQuCDQpC7QmC7Qni4gPC90dWktaW5wdXQ+XG4gICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPCEtLSDQotC10LvQtdGE0L7QvSAtLT5cbiAgICBAaWYgKGZpZWxkc0xpc3QuaW5jbHVkZXMoJ3Bob25lJykpIHtcbiAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAg0KLQtdC70LXRhNC+0L1cbiAgICAgICAgICAgIDx0dWktdGV4dGZpZWxkPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwaG9uZVwiXG4gICAgICAgICAgICAgICAgICAgIHR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsXG4gICAgICAgICAgICAgICAgICAgIFtjb3VudHJ5U2VhcmNoXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbY291bnRyaWVzXT1cIihjb3VudHJpZXMgfCB0dWlTb3J0Q291bnRyaWVzIHwgYXN5bmMpIHx8IFtdXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwicGhvbmVcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3R1aS10ZXh0ZmllbGQ+XG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVcIlxuICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgKm5nSWY9XCJmaWVsZHNMaXN0LmluY2x1ZGVzKCdpc1Nob3VsZFVzZU1lc3NlbmdlcicpICYmIGZvcm0uY29udHJvbHMucGhvbmUudmFsdWUgJiYgaXNWYWxpZFBob25lTnVtYmVyRm9yTWVzc2VuZ2VyKGZvcm0uY29udHJvbHMucGhvbmUudmFsdWUpXCJcbiAgICAgICAgICAgIHR1aUxhYmVsXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImlzU2hvdWxkVXNlTWVzc2VuZ2VyXCJcbiAgICAgICAgICAgICAgICB0dWlDaGVja2JveFxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4gdHVpVGl0bGU+INCd0LDQv9C40YHQsNGC0Ywg0LIg0LzQtdGB0YHQtdC90LTQttC10YDQsNGFLCDQsCDQvdC1INC30LLQvtC90LjRgtGMIDwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICB9XG4gICAgPCEtLSDQkNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRiyAtLT5cbiAgICA8bGFiZWxcbiAgICAgICAgKm5nSWY9XCJmaWVsZHNMaXN0LmluY2x1ZGVzKCdlbWFpbCcpXCJcbiAgICAgICAgdHVpTGFiZWxcbiAgICA+XG4gICAgICAgINCQ0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLXG4gICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIj5cbiAgICAgICAgICAgINCQ0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLXG4gICAgICAgICAgICA8c2Mtc3VnZ2VzdGlvbi1maWVsZFxuICAgICAgICAgICAgICAgICp0dWlEYXRhTGlzdFxuICAgICAgICAgICAgICAgIFt0eXBlXT1cInN1Z2dlc3Rpb25UeXBlLmVtYWlsXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAvPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8IS0tINCa0L7QvNC80LXQvdGC0LDRgNC40LkgLS0+XG4gICAgPGxhYmVsXG4gICAgICAgICpuZ0lmPVwiZmllbGRzTGlzdC5pbmNsdWRlcygnbWVzc2FnZScpXCJcbiAgICAgICAgdHVpTGFiZWxcbiAgICA+XG4gICAgICAgINCa0L7QvNC80LXQvdGC0LDRgNC40LlcbiAgICAgICAgPHR1aS10ZXh0YXJlYSBmb3JtQ29udHJvbE5hbWU9XCJtZXNzYWdlXCI+INCa0L7QvNC80LXQvdGC0LDRgNC40LkgPC90dWktdGV4dGFyZWE+XG4gICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1lc3NhZ2VcIlxuICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPCEtLSDQpNCw0LnQu9GLIC0tPlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJmaWVsZHNMaXN0LmluY2x1ZGVzKCdmaWxlcycpXCJcbiAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0xXCJcbiAgICA+XG4gICAgICAgIDxsYWJlbCB0dWlJbnB1dEZpbGVzPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgI3ZhbGlkYXRvcj1cInR1aUlucHV0RmlsZXNWYWxpZGF0b3JcIlxuICAgICAgICAgICAgICAgIGFjY2VwdD1cIi5kb2MsLmRvY3gsLnBkZixpbWFnZS8qXCJcbiAgICAgICAgICAgICAgICB0dWlJbnB1dEZpbGVzXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImxvYWRlZEZpbGVcIlxuICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAocmVqZWN0KT1cIm9uUmVqZWN0KCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAqbmdJZj1cImxvYWRlZEZpbGUuaW52YWxpZFwiXG4gICAgICAgICAgICBbZXJyb3JdPVwiWydtYXhMZW5ndGgnXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibG9hZGVkRmlsZVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgQGxldCBhY2NlcHRlZCA9IGFjY2VwdGVkJCB8IGFzeW5jO1xuICAgICAgICA8dHVpLWZpbGVzXG4gICAgICAgICAgICAqbmdJZj1cImFjY2VwdGVkPy5sZW5ndGggfHwgcmVqZWN0ZWQubGVuZ3RoXCJcbiAgICAgICAgICAgIGNsYXNzPVwidHVpLXNwYWNlX3RvcC0xXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHR1aS1maWxlXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZpbGUgb2YgYWNjZXB0ZWRcIlxuICAgICAgICAgICAgICAgIFtmaWxlXT1cImZpbGVcIlxuICAgICAgICAgICAgICAgIChyZW1vdmUpPVwib25SZW1vdmUoZmlsZSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDx0dWktZmlsZVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmaWxlIG9mIHJlamVjdGVkXCJcbiAgICAgICAgICAgICAgICBzdGF0ZT1cImVycm9yXCJcbiAgICAgICAgICAgICAgICBbZmlsZV09XCIoZmlsZSB8IHR1aUZpbGVSZWplY3RlZDogdmFsaWRhdG9yIHwgYXN5bmMpIHx8IGZpbGVcIlxuICAgICAgICAgICAgICAgIChyZW1vdmUpPVwib25SZW1vdmUoZmlsZSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC90dWktZmlsZXM+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIHJlY2FwdGNoYSAtLT5cbiAgICBAaWYgKGZvcm0uZ2V0KCdyZWNhcHRjaGEnKSkge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm1iLTMgbWF4LWgtMjAgb3ZlcmZsb3ctaGlkZGVuIGR1cmF0aW9uLTUwMFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICchbWF4LWgtMCAhLW0tMic6IGZvcm0uZ2V0KCdyZWNhcHRjaGEnKT8udmFsaWQgfVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxyZS1jYXB0Y2hhIGZvcm1Db250cm9sTmFtZT1cInJlY2FwdGNoYVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0g0K3Qu9C10LzQtdC90YLRiyDRg9C/0YDQsNCy0LvQtdC90LjRjyAgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIlxuICAgICAgICAgICAgW2xvYWRpbmddPVwiISEobG9hZGluZyQgfCBhc3luYylcIlxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnNjLnNlbmRcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxmLWNlbnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICAgINCe0YLQv9GA0LDQstC40YLRjFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyb3cgYmFzaXMtNjAgdGV4dC1ib2R5LXNcIj5cbiAgICAgICAgICAgINCd0LDQttC40LzQsNGPINC90LAg0LrQvdC+0L/QutGDLCDQstGLINGB0L7Qs9C70LDRiNCw0LXRgtC10YHRjCDRgVxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR1aUxpbmtcbiAgICAgICAgICAgICAgICBbcHNldWRvXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjb250ZXh0Py5kYXRhPy5vbkNsaWNrT2ZmZXJIYW5kbGVyKCk7IGNsaWNrT2ZmZXIuZW1pdCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDQn9C+0LvQuNGC0LjQutC+0Lkg0LrQvtC90YTQuNC00LXQvdGG0LjQsNC70YzQvdC+0YHRgtC4XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
|
335
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZmVlZGJhY2stZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZmVlZGJhY2svZmVlZGJhY2stZm9ybS9zYy1mZWVkYmFjay1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9mZWVkYmFjay9mZWVkYmFjay1mb3JtL3NjLWZlZWRiYWNrLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDZFQUE2RTtBQUU3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWUsTUFBTSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUNuSixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkgsT0FBTyxFQUNILG1CQUFtQixFQUVuQixpQkFBaUIsRUFFakIsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxjQUFjLEVBRWQsYUFBYSxHQUNoQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBaUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQW9CLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRSxPQUFP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Z01BK0pBLHVDRHJIUSxTQUFTLDZDQUNULG1CQUFtQixpekNBQ25CLE9BQU8sb0ZBQ1AsS0FBSyxtSEFDTCxRQUFRLG9FQUNSLGlCQUFpQixxREFDakIsa0JBQWtCLHlLQUNsQixjQUFjLGtMQUNkLG1CQUFtQiwrQkFDbkIsU0FBUyxvSUFDVCxnQkFBZ0IsdUhBQ2hCLFFBQVEsMkRBQ1Isb0JBQW9CLG9MQUNwQixlQUFlLHFRQUNmLE9BQU8sNEZBQ1AsSUFBSSw0RkFDSixpQkFBaUIsNE9BQ2pCLFdBQVcsb0dBQ1gsUUFBUSxxcEJBRVIsMEJBQTBCLHVSQUUxQixvQkFBb0I7O0FBMlVkO0lBRFQsT0FBTzs2RUFHUDs0RkF6VVEsdUJBQXVCO2tCQS9CbkMsU0FBUztpQ0FDTSxJQUFJLFlBQ04sa0JBQWtCLFdBRW5CO3dCQUNMLFNBQVM7d0JBQ1QsbUJBQW1CO3dCQUNuQixPQUFPO3dCQUNQLEtBQUs7d0JBQ0wsUUFBUTt3QkFDUixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLFNBQVM7d0JBQ1QsZ0JBQWdCO3dCQUNoQixRQUFRO3dCQUNSLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixPQUFPO3dCQUNQLElBQUk7d0JBQ0osaUJBQWlCO3dCQUNqQixXQUFXO3dCQUNYLFFBQVE7d0JBQ1IsUUFBUTt3QkFDUiwwQkFBMEI7d0JBQzFCLEdBQUcsWUFBWTt3QkFDZixvQkFBb0I7cUJBQ3ZCLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNO3dEQXlVckMsOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyxAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2QgKi9cblxuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIElucHV0U2lnbmFsLCBvdXRwdXQsIE91dHB1dEVtaXR0ZXJSZWYsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgU2NDb252ZXJ0ZXJzU2VydmljZSxcbiAgICBTY0ZlZWRiYWNrRm9ybXMsXG4gICAgU2NGZWVkYmFja1NlcnZpY2UsXG4gICAgU2NJRmVlZGJhY2tNZXNzYWdlLFxuICAgIFNjSVN1Z2dlc3Rpb25UeXBlLFxuICAgIFNjUGhvbmVTZXJ2aWNlLFxuICAgIFNjVXBsb2FkZWRGaWxlLFxuICAgIFNjVXNlcixcbiAgICBTY1VzZXJTZXJ2aWNlLFxufSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFR1aUxvb3NlVW5pb24sIHR1aVB1cmUsIFR1aVZhbGlkYXRpb25FcnJvciB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpQnV0dG9uLCBUdWlEaWFsb2dDb250ZXh0LCBUdWlFcnJvciwgVHVpTGFiZWwsIFR1aUxpbmssIFR1aVRleHRmaWVsZCwgVHVpVGl0bGUgfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbCB9IGZyb20gJ0B0YWlnYS11aS9leHBlcmltZW50YWwnO1xuaW1wb3J0IHsgVHVpQ291bnRyeUlzb0NvZGUgfSBmcm9tICdAdGFpZ2EtdWkvaTE4bic7XG5pbXBvcnQgeyBUdWlCdXR0b25Mb2FkaW5nLCBUdWlDaGVja2JveCwgVHVpRmllbGRFcnJvclBpcGUsIFR1aUZpbGVMaWtlLCBUdWlGaWxlcywgdHVpRmlsZXNBY2NlcHRlZCwgVHVpU29ydENvdW50cmllc1BpcGUgfSBmcm9tICdAdGFpZ2EtdWkva2l0JztcbmltcG9ydCB7IFR1aUlucHV0TW9kdWxlLCBUdWlJbnB1dFBob25lTW9kdWxlLCBUdWlUZXh0YXJlYU1vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3knO1xuaW1wb3J0IHsgUE9MWU1PUlBIRVVTX0NPTlRFWFQgfSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcbmltcG9ydCB7IGdldENvdW50cmllcyB9IGZyb20gJ2xpYnBob25lbnVtYmVyLWpzJztcbmltcG9ydCB7IFJlY2FwdGNoYUNvbXBvbmVudCwgUmVjYXB0Y2hhRm9ybXNNb2R1bGUsIFJlY2FwdGNoYU1vZHVsZSB9IGZyb20gJ25nLXJlY2FwdGNoYS0yJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlLCBzdGFydFdpdGgsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFwaUVycm9yUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9hdXRoJztcbmltcG9ydCB7IFNjRm9ybUZpZWxkc01vZHVsZSB9IGZyb20gJy4uLy4uL2Zvcm0tZmllbGRzJztcbmltcG9ydCB7IE1BWF9GSUxFU19JTl9GT1JNX0lOUFVUIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL3NjLW1heC1maWxlcy1pbi1mb3JtLWlucHV0JztcbmltcG9ydCB7IFNjRmVlZGJhY2tGb3JtQ29uZmlnLCBTY0ZlZWRiYWNrRm9ybUZpZWxkVHlwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDRhNC+0YDQvNGLINC+0LHRgNCw0YLQvdC+0Lkg0YHQstGP0LfQuC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3NjLWZlZWRiYWNrLWZvcm0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1mZWVkYmFjay1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEFzeW5jUGlwZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIFR1aUVycm9yLFxuICAgICAgICBUdWlGaWVsZEVycm9yUGlwZSxcbiAgICAgICAgU2NGb3JtRmllbGRzTW9kdWxlLFxuICAgICAgICBUdWlJbnB1dE1vZHVsZSxcbiAgICAgICAgVHVpSW5wdXRQaG9uZU1vZHVsZSxcbiAgICAgICAgVHVpQnV0dG9uLFxuICAgICAgICBUdWlCdXR0b25Mb2FkaW5nLFxuICAgICAgICBUdWlMYWJlbCxcbiAgICAgICAgUmVjYXB0Y2hhRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlY2FwdGNoYU1vZHVsZSxcbiAgICAgICAgVHVpTGluayxcbiAgICAgICAgTmdJZixcbiAgICAgICAgVHVpVGV4dGFyZWFNb2R1bGUsXG4gICAgICAgIFR1aUNoZWNrYm94LFxuICAgICAgICBUdWlUaXRsZSxcbiAgICAgICAgVHVpRmlsZXMsXG4gICAgICAgIFR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsLFxuICAgICAgICAuLi5UdWlUZXh0ZmllbGQsXG4gICAgICAgIFR1aVNvcnRDb3VudHJpZXNQaXBlLFxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjRmVlZGJhY2tGb3JtQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiDQmtC+0L3RgtC10LrRgdGCINC00LjQsNC70L7Qs9C+0LLQvtCz0L4g0L7QutC90LAsINCyINC60L7RgtC+0YDQvtC8INC+0YLQutGA0YvRgiDQutC+0LzQv9C+0L3QtdC90YIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRleHQ6IFR1aURpYWxvZ0NvbnRleHQ8dm9pZCwgeyBvbkNsaWNrT2ZmZXJIYW5kbGVyOiAoKSA9PiB2b2lkIH0gJiBTY0ZlZWRiYWNrRm9ybUNvbmZpZz4gfCBudWxsID0gaW5qZWN0PFxuICAgICAgICBUdWlEaWFsb2dDb250ZXh0PHZvaWQsIHsgb25DbGlja09mZmVySGFuZGxlcjogKCkgPT4gdm9pZCB9ICYgU2NGZWVkYmFja0Zvcm1Db25maWc+XG4gICAgPihQT0xZTU9SUEhFVVNfQ09OVEVYVCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIC8qKlxuICAgICAqINCh0LjQvNCy0L7Qu9GM0L3QvtC1INC+0LHQvtC30L3QsNGH0LXQvdC40LUgKHNsdWcpINGE0L7RgNC80YsuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2x1Z0lucHV0OiBJbnB1dFNpZ25hbDxUdWlMb29zZVVuaW9uPFNjRmVlZGJhY2tGb3Jtcz4+ID0gaW5wdXQ8VHVpTG9vc2VVbmlvbjxTY0ZlZWRiYWNrRm9ybXM+PignY29tbW9uJywgeyBhbGlhczogJ3NsdWcnIH0pO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INC/0L7Qu9C10LksINC00L7RgdGC0YPQv9C90YvRhSDQsiDQtNCw0L3QvdC+0Lkg0YTQvtGA0LzQtS5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICAgIHB1YmxpYyByZWFkb25seSBmaWVsZHNJbnB1dDogSW5wdXRTaWduYWw8U2NGZWVkYmFja0Zvcm1GaWVsZFR5cGVbXT4gPSBpbnB1dDxTY0ZlZWRiYWNrRm9ybUZpZWxkVHlwZVtdPihbJ25hbWUnLCAnZW1haWwnLCAncGhvbmUnLCAnbWVzc2FnZScsICdmaWxlcyddLCB7IGFsaWFzOiAnZmllbGRzJyB9KTtcblxuICAgIC8qKlxuICAgICAqINCh0LjQvNCy0L7Qu9GM0L3QvtC1INC+0LHQvtC30L3QsNGH0LXQvdC40LUgKHNsdWcpINGE0L7RgNC80YsuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHNsdWc6IFNpZ25hbDxUdWlMb29zZVVuaW9uPFNjRmVlZGJhY2tGb3Jtcz4+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb250ZXh0Py5kYXRhLnNsdWcgPz8gdGhpcy5zbHVnSW5wdXQoKSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0L/QvtC70LXQuSwg0LTQvtGB0YLRg9C/0L3Ri9GFINCyINC00LDQvdC90L7QuSDRhNC+0YDQvNC1LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBmaWVsZHM6IFNpZ25hbDxTY0ZlZWRiYWNrRm9ybUZpZWxkVHlwZVtdPiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29udGV4dD8uZGF0YS5maWVsZHMgPz8gdGhpcy5maWVsZHNJbnB1dCgpKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDINC00L7Qs9C+0LLQvtGA0LAg0L7RhNC10YDRgtGLLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBjbGlja09mZmVyOiBPdXRwdXRFbWl0dGVyUmVmPHZvaWQ+ID0gb3V0cHV0KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDRg9GB0L/QtdGI0L3QvtC5INC+0YLQv9GA0LDQstC60Lgg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VuZFN1Y2Nlc3M6IE91dHB1dEVtaXR0ZXJSZWY8dm9pZD4gPSBvdXRwdXQoKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQvtCx0YDQsNGC0L3QvtC5INGB0LLRj9C30LguXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBmZWVkYmFja1NlcnZpY2U6IFNjRmVlZGJhY2tTZXJ2aWNlID0gaW5qZWN0KFNjRmVlZGJhY2tTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQutC+0L3QstC10YDRgtCw0YbQuNC4INC00LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnZlcnRlcnNTZXJ2aWNlOiBTY0NvbnZlcnRlcnNTZXJ2aWNlID0gaW5qZWN0KFNjQ29udmVydGVyc1NlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INGE0LDQudC70L7Qsiwg0L7RgtC/0YDQsNCy0LvRj9C10LzRi9GFINCyINGE0L7RgNC80LUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXhGaWxlc0luRm9ybTogbnVtYmVyID0gaW5qZWN0KE1BWF9GSUxFU19JTl9GT1JNX0lOUFVUKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNCw0L3QvdGL0YUg0L4g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlciQ6IE9ic2VydmFibGU8U2NVc2VyPiA9IGluamVjdChTY1VzZXJTZXJ2aWNlKVxuICAgICAgICAuZ2V0VXNlckNoYW5nZSQoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRhcCgodXNlcikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh1c2VyLmlzR3Vlc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuZm9ybSBhcyBGb3JtR3JvdXApLmFkZENvbnRyb2woJ3JlY2FwdGNoYScsIHRoaXMucmVjYXB0Y2hhQ29udHJvbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuZm9ybSBhcyBGb3JtR3JvdXApLnJlbW92ZUNvbnRyb2woJ3JlY2FwdGNoYScpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZmllbGRzKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGZpZWxkcy5pbmNsdWRlcygnbmFtZScpID8gdXNlci5uYW1lIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBob25lOiBmaWVsZHMuaW5jbHVkZXMoJ3Bob25lJykgPyB1c2VyLmNvbnRhY3RzLnBob25lLnZhbHVlIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiBmaWVsZHMuaW5jbHVkZXMoJ2VtYWlsJykgPyB1c2VyLmNvbnRhY3RzLmVtYWlsLnZhbHVlIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgIC8qKlxuICAgICAqINCf0L7Qu9C1INCy0LLQvtC00LAg0LTQu9GPIHJlY2FwdGNoYS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVjYXB0Y2hhQ29udHJvbDogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4gPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG5cbiAgICAvKipcbiAgICAgKiDQk9GA0YPQv9C/0LAg0L/QvtC70LXQuSDQstCy0L7QtNCwINC00LvRjyDRhNC+0YDQvNGLIMKr0J/QvtC20LXQu9Cw0L3QuNGPINC4INC/0YDQtdC00LvQvtC20LXQvdC40Y8g0L/QviDRg9C70YPRh9GI0LXQvdC40Y4g0YHQsNC50YLQsMK7LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKSxcbiAgICAgICAgcGhvbmU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKSxcbiAgICAgICAgZW1haWw6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKSxcbiAgICAgICAgbWVzc2FnZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxuICAgICAgICBmaWxlczogbmV3IEZvcm1Db250cm9sPFNjVXBsb2FkZWRGaWxlW10gfCBudWxsPihbXSksXG4gICAgICAgIGlzU2hvdWxkVXNlTWVzc2VuZ2VyOiBuZXcgRm9ybUNvbnRyb2w8Ym9vbGVhbiB8IG51bGw+KGZhbHNlKSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqINCf0LXRgNC10YfQuNGB0LvQtdC90LjQtSDRgtC40L/QvtCyINC/0L7QtNGB0LrQsNC30L7Qui5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3VnZ2VzdGlvblR5cGU6IHR5cGVvZiBTY0lTdWdnZXN0aW9uVHlwZSA9IFNjSVN1Z2dlc3Rpb25UeXBlO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFN1YmplY3R9INGB0L7QsdGL0YLQuNGPINC+0YLQv9GA0LDQstC60Lgg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb25TdWJtaXQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC30LDQv9GA0L7RgdCwINC90LAg0L7RgtC/0YDQsNCy0LrRgyDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlcXVlc3QkOiBPYnNlcnZhYmxlPHVuZGVmaW5lZCB8IG51bGw+ID0gdGhpcy5vblN1Ym1pdC5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5mb3JtLnZhbGlkKSxcbiAgICAgICAgbWFwKCgpID0+IHRoaXMuZm9ybS52YWx1ZSBhcyBTY0lGZWVkYmFja01lc3NhZ2UpLFxuICAgICAgICB0YXAoKHZhbHVlOiBTY0lGZWVkYmFja01lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5waG9uZSAmJiAhU2NQaG9uZVNlcnZpY2UuaXNWYWxpZFBob25lTnVtYmVyRm9yTWVzc2VuZ2VyKHZhbHVlLnBob25lKSkge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgICAgICAgIGRlbGV0ZSB2YWx1ZS5pc1Nob3VsZFVzZU1lc3NlbmdlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgodmFsdWUpID0+XG4gICAgICAgICAgICB0aGlzLmZlZWRiYWNrU2VydmljZS5zZW5kRmVlZGJhY2sodGhpcy5zbHVnKCkgYXMgU2NGZWVkYmFja0Zvcm1zLCB0aGlzLmNvbnZlcnRlcnNTZXJ2aWNlLnJlbW92ZU51bGxSZWN1cnNpdmUodmFsdWUpKS5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5jb21wbGV0ZVdpdGgoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbmRTdWNjZXNzLmVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzL25vLWltcGxpY2l0LWFueS1jYXRjaFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZXJyb3JzLCBtZXNzYWdlIH0gPSBlcnJvci5lcnJvciBhcyBBcGlFcnJvclJlc3BvbnNlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGVycm9ycykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoa2V5KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBlcnJvcnNba2V5XSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IFttZXNzYWdlXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby11c2VsZXNzLXVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpXG4gICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHNoYXJlKClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdC+0YHRgtC+0Y/QvdC40Y8g0LfQsNCz0YDRg9C30LrQuCDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5yZXF1ZXN0JC5waXBlKG1hcCgodmFsdWUpID0+IHZhbHVlID09PSB1bmRlZmluZWQpKTtcblxuICAgIC8qKlxuICAgICAqINCj0L/RgNCw0LLQu9GP0LXRgiDRgdC+0YHRgtC+0Y/QvdC40LXQvCDQt9Cw0LPRgNGD0LbQtdC90L3Ri9GFINGE0LDQudC70L7Qsi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9hZGVkRmlsZTogRm9ybUNvbnRyb2w8VHVpRmlsZUxpa2VbXSB8IG51bGw+ID0gbmV3IEZvcm1Db250cm9sPFR1aUZpbGVMaWtlW10gfCBudWxsPihbXSwgW3RoaXMubWF4RmlsZXNMZW5ndGgoKV0pO1xuXG4gICAgLyoqXG4gICAgICogT2JzZXJ2YWJsZSwg0LrQvtGC0L7RgNGL0Lkg0L7RgtGB0LvQtdC20LjQstCw0LXRgiwg0L/RgNC40L3Rj9GC0Ysg0LvQuCDRhNCw0LnQu9GLINCyINGB0L7QvtGC0LLQtdGC0YHRgtCy0LjQuCDRgSDRgtGA0LXQsdC+0LLQsNC90LjRj9C80Lgg0L/QviDRgtC40L/RgyDRgNCw0LfQvNC10YDRgyDQuCDRgi7QtC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWNjZXB0ZWQkOiBPYnNlcnZhYmxlPEZpbGVbXT4gPSB0aGlzLmxvYWRlZEZpbGUudmFsdWVDaGFuZ2VzLnBpcGUobWFwKCgpID0+IHR1aUZpbGVzQWNjZXB0ZWQodGhpcy5sb2FkZWRGaWxlKSkpO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INGE0LDQudC70L7Qsiwg0LrQvtGC0L7RgNGL0LUg0LHRi9C70Lgg0L7RgtC60LvQvtC90LXQvdGLINC/0YDQuCDQt9Cw0LPRgNGD0LfQutC1LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWplY3RlZDogcmVhZG9ubHkgRmlsZVtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0YHRgtGA0LDQvS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY291bnRyaWVzOiByZWFkb25seSBUdWlDb3VudHJ5SXNvQ29kZVtdID0gZ2V0Q291bnRyaWVzKCk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjRmVlZGJhY2tGb3JtQ29tcG9uZW50fS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQrdGC0L4g0YDQtdGI0LXQvdC40LUg0L7RiNC40LHQutC4ICM0OTQwLCDQsdGL0LvQviBAc2VlIFvQv9GA0LXQtNC70L7QttC10L3Qvl0oaHR0cHM6Ly9naXRodWIuY29tL0RldGhBcmllbC9uZy1yZWNhcHRjaGEvaXNzdWVzLzEyMyNpc3N1ZWNvbW1lbnQtNDI2MTEyMTAxKSDQsNCy0YLQvtGA0L7QvCB7QGxpbmsgUmVjYXB0Y2hhQ29tcG9uZW50fS5cbiAgICAgICAgICovXG4gICAgICAgIFJlY2FwdGNoYUNvbXBvbmVudC5wcm90b3R5cGUubmdPbkRlc3Ryb3kgPSBmdW5jdGlvbiAoKTogdm9pZCB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2RvdC1ub3RhdGlvblxuICAgICAgICAgICAgaWYgKHRoaXNbJ3N1YnNjcmlwdGlvbiddKSB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2VzcywgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1jYWxsLCBAdHlwZXNjcmlwdC1lc2xpbnQvZG90LW5vdGF0aW9uXG4gICAgICAgICAgICAgICAgdGhpc1snc3Vic2NyaXB0aW9uJ10udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBtZXJnZShcbiAgICAgICAgICAgIHRoaXMuYWNjZXB0ZWQkLFxuICAgICAgICAgICAgdGhpcy51c2VyJCxcbiAgICAgICAgICAgIHRoaXMubG9hZGVkRmlsZS52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKGZpbGVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5maWxlcy5yZXNldChbXSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25VcGxvYWRGaWxlKGZpbGVzKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgICAgICAvLyDQktCw0LvQuNC00LDRhtC40Y8g0L/QvtC70LXQuSDQstCy0L7QtNCwINCyINC30LDQstC40YHQuNC80L7RgdGC0Lgg0L7RgiDRhNC+0YDQvNGLLlxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jbGVhckFsbFZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0QWxsVmFsaWRhdG9ycyh0aGlzLmZpZWxkcygpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPQtNCw0LvRj9C10YIg0LLQsNC70LjQtNCw0YbQuNGOINGB0L4g0LLRgdC10YUg0L/QvtC70LXQuSDQstCy0L7QtNCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgY2xlYXJBbGxWYWxpZGF0b3JzKCk6IHZvaWQge1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm0uY29udHJvbHMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoa2V5KTtcblxuICAgICAgICAgICAgaWYgKGNvbnRyb2wgJiYgY29udHJvbCAhPT0gdGhpcy5yZWNhcHRjaGFDb250cm9sKSB7XG4gICAgICAgICAgICAgICAgY29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0LLQsNC70LjQtNCw0YbQuNGOINGB0L4g0LTQu9GPINGD0LrQsNC30LDQvdC90YvRhSDQv9C+0LvQtdC5INCy0LLQvtC00LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmllbGRzINCf0L7Qu9GPLCDQtNC70Y8g0LrQvtGC0L7RgNGL0YUg0L3Rg9C20L3QviDRg9GB0YLQsNC90L7QstC40YLRjCDQstCw0LvQuNC00LDRhtC40Y4uXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRBbGxWYWxpZGF0b3JzKGZpZWxkczogU2NGZWVkYmFja0Zvcm1GaWVsZFR5cGVbXSk6IHZvaWQge1xuICAgICAgICBmaWVsZHMuZm9yRWFjaCgoZmlsZWQ6IFNjRmVlZGJhY2tGb3JtRmllbGRUeXBlKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVmYXVsdC1jYXNlXG4gICAgICAgICAgICBzd2l0Y2ggKGZpbGVkKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnbmFtZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ25hbWUnKT8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMyldKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAncGhvbmUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwaG9uZScpPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxMildKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdlbWFpbCcpPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ21lc3NhZ2UnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdtZXNzYWdlJyk/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZmlsZXMnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmaWxlcycpPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0aGlzLm1heEZpbGVzTGVuZ3RoKDUpXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YDQsNCx0LDRgtGL0LLQsNC10YIg0L7RgtC60LvQvtC90LXQvdC90YvQtSDRhNCw0LnQu9GLLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGVzINCh0L/QuNGB0L7QuiDRhNCw0LnQu9C+0LIsINC60L7RgtC+0YDRi9C1INCx0YvQu9C4INC+0YLQutC70L7QvdC10L3Riy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25SZWplY3QoZmlsZXM6IHJlYWRvbmx5IEZpbGVbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlamVjdGVkID0gWy4uLm5ldyBTZXQoWy4uLnRoaXMucmVqZWN0ZWQsIC4uLmZpbGVzXSldO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0LTQsNC70Y/QtdGCINGE0LDQudC7INC40Lcg0YHQv9C40YHQutCwINC30LDQs9GA0YPQttC10L3QvdGL0YUg0Lgg0L7RgtC60LvQvtC90LXQvdC90YvRhSDRhNCw0LnQu9C+0LIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZSDQpNCw0LnQuywg0LrQvtGC0L7RgNGL0Lkg0L3Rg9C20L3QviDRg9C00LDQu9C40YLRjC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25SZW1vdmUoZmlsZTogRmlsZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlamVjdGVkID0gdGhpcy5yZWplY3RlZC5maWx0ZXIoKHJlamVjdGVkKSA9PiByZWplY3RlZCAhPT0gZmlsZSk7XG4gICAgICAgIHRoaXMubG9hZGVkRmlsZS5zZXRWYWx1ZSh0aGlzLmxvYWRlZEZpbGUudmFsdWU/LmZpbHRlcigoY3VycmVudCkgPT4gY3VycmVudCAhPT0gZmlsZSkgPz8gW10pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCX0LDQs9GA0YPQttCw0LXRgiDRhNCw0LnQuyDQsiDRhNC+0YDQvNGDINC+0LHRgNCw0YLQvdC+0Lkg0YHQstGP0LfQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlcyDQndCw0LHQvtGAINGE0LDQudC70L7Qsi5cbiAgICAgKi9cbiAgICBwcml2YXRlIG9uVXBsb2FkRmlsZShmaWxlczogVHVpRmlsZUxpa2VbXSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgZmlsZXM/LmZvckVhY2goKGZpbGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgICAgICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZWFkZXIucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tYmFzZS10by1zdHJpbmcsc29uYXJqcy9uby1iYXNlLXRvLXN0cmluZ1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuZmlsZXMuc2V0VmFsdWUoWy4uLih0aGlzLmZvcm0uY29udHJvbHMuZmlsZXMudmFsdWUgPz8gW10pLCBuZXcgU2NVcGxvYWRlZEZpbGUoZmlsZS5uYW1lLCByZWFkZXIucmVzdWx0LnRvU3RyaW5nKCkpXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUgYXMgdW5rbm93biBhcyBCbG9iKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/RgNC+0LLQtdGA0Y/QtdGCINC60L7Qu9C40YfQtdGB0YLQstC+INGE0LDQudC70L7QsiDQt9Cw0LPRgNGD0LbQtdC90L3Ri9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC8LlxuICAgICAqXG4gICAgICogQHBhcmFtIG1heExlbmd0aCDQvNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LTQvtC/0YPRgdGC0LjQvNC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YTQsNC50LvQvtCyINC00LvRjyDQvtGC0L/RgNCw0LLQutC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgbWF4RmlsZXNMZW5ndGgobWF4TGVuZ3RoOiBudW1iZXIgPSB0aGlzLm1heEZpbGVzSW5Gb3JtKTogVmFsaWRhdG9yRm4ge1xuICAgICAgICByZXR1cm4gKHsgdmFsdWUgfTogQWJzdHJhY3RDb250cm9sPFR1aUZpbGVMaWtlW10+KSA9PlxuICAgICAgICAgICAgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoID8geyBtYXhMZW5ndGg6IG5ldyBUdWlWYWxpZGF0aW9uRXJyb3IoYNCc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRhNCw0LnQu9C+0LIgLSAke21heExlbmd0aH1gKSB9IDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktGL0L/QvtC70L3Rj9C10YIg0L7Rh9C40YHRgtC60YMg0L/QvtC70LXQuSDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVzZXRGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0ucmVzZXQoe1xuICAgICAgICAgICAgZW1haWw6IG51bGwsXG4gICAgICAgICAgICBuYW1lOiBudWxsLFxuICAgICAgICAgICAgcGhvbmU6IG51bGwsXG4gICAgICAgICAgICBtZXNzYWdlOiBudWxsLFxuICAgICAgICAgICAgZmlsZXM6IFtdLFxuICAgICAgICAgICAgaXNTaG91bGRVc2VNZXNzZW5nZXI6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0L7QstC10YDRj9C10YIsINGH0YLQviDQvdC+0LzQtdGAINGC0LXQu9C10YTQvtC90LAg0L/QvtC00YXQvtC00LjRgiDQtNC70Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0LIg0LzQtdGB0YHQtdC90LTQttC10YDQsNGFLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlINCd0L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsCwg0LrQvtGC0L7RgNGL0Lkg0L3QtdC+0LHRhdC+0LTQuNC80L4g0L/RgNC+0LLQtdGA0LjRgtGMLlxuICAgICAqIEByZXR1cm5zINCf0YDQuNC30L3QsNC6INGC0L7Qs9C+LCDRh9GC0L4g0L3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdCwINC/0L7QtNGF0L7QtNC40YIg0LTQu9GPINC80LXRgdGB0LXQvdC00LbQtdGA0L7Qsi5cbiAgICAgKi9cbiAgICBAdHVpUHVyZVxuICAgIHByb3RlY3RlZCBpc1ZhbGlkUGhvbmVOdW1iZXJGb3JNZXNzZW5nZXIodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gU2NQaG9uZVNlcnZpY2UuaXNWYWxpZFBob25lTnVtYmVyRm9yTWVzc2VuZ2VyKHZhbHVlKTtcbiAgICB9XG59XG4iLCJAbGV0IGZpZWxkc0xpc3QgPSBmaWVsZHMoKTtcbjxmb3JtXG4gICAgKm5nSWY9XCJmaWVsZHNMaXN0Lmxlbmd0aCA+IDBcIlxuICAgIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgKG5nU3VibWl0KT1cIm9uU3VibWl0Lm5leHQoKVwiXG4gICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBnYXAtNFwiXG4+XG4gICAgPCEtLSDQpNCY0J4gLS0+XG4gICAgPGxhYmVsXG4gICAgICAgICpuZ0lmPVwiZmllbGRzTGlzdC5pbmNsdWRlcygnbmFtZScpXCJcbiAgICAgICAgdHVpTGFiZWxcbiAgICA+XG4gICAgICAgINCk0JjQnlxuICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIj4g0KPQutCw0LbQuNGC0LUg0JLQsNGI0Lgg0KQu0Jgu0J4uIDwvdHVpLWlucHV0PlxuICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgIC8+XG4gICAgPC9sYWJlbD5cblxuICAgIDwhLS0g0KLQtdC70LXRhNC+0L0gLS0+XG4gICAgQGlmIChmaWVsZHNMaXN0LmluY2x1ZGVzKCdwaG9uZScpKSB7XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCi0LXQu9C10YTQvtC9XG4gICAgICAgICAgICA8dHVpLXRleHRmaWVsZD5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVcIlxuICAgICAgICAgICAgICAgICAgICB0dWlJbnB1dFBob25lSW50ZXJuYXRpb25hbFxuICAgICAgICAgICAgICAgICAgICBbY291bnRyeVNlYXJjaF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvdW50cmllc109XCIoY291bnRyaWVzIHwgdHVpU29ydENvdW50cmllcyB8IGFzeW5jKSB8fCBbXVwiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cInBob25lXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC90dWktdGV4dGZpZWxkPlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBob25lXCJcbiAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICpuZ0lmPVwiZmllbGRzTGlzdC5pbmNsdWRlcygnaXNTaG91bGRVc2VNZXNzZW5nZXInKSAmJiBmb3JtLmNvbnRyb2xzLnBob25lLnZhbHVlICYmIGlzVmFsaWRQaG9uZU51bWJlckZvck1lc3Nlbmdlcihmb3JtLmNvbnRyb2xzLnBob25lLnZhbHVlKVwiXG4gICAgICAgICAgICB0dWlMYWJlbFxuICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpc1Nob3VsZFVzZU1lc3NlbmdlclwiXG4gICAgICAgICAgICAgICAgdHVpQ2hlY2tib3hcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuIHR1aVRpdGxlPiDQndCw0L/QuNGB0LDRgtGMINCyINC80LXRgdGB0LXQvdC00LbQtdGA0LDRhSwg0LAg0L3QtSDQt9Cy0L7QvdC40YLRjCA8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgfVxuICAgIDwhLS0g0JDQtNGA0LXRgSDRjdC70LXQutGC0YDQvtC90L3QvtC5INC/0L7Rh9GC0YsgLS0+XG4gICAgPGxhYmVsXG4gICAgICAgICpuZ0lmPVwiZmllbGRzTGlzdC5pbmNsdWRlcygnZW1haWwnKVwiXG4gICAgICAgIHR1aUxhYmVsXG4gICAgPlxuICAgICAgICDQkNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRi1xuICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCI+XG4gICAgICAgICAgICDQkNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRi1xuICAgICAgICAgICAgPHNjLXN1Z2dlc3Rpb24tZmllbGRcbiAgICAgICAgICAgICAgICAqdHVpRGF0YUxpc3RcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJzdWdnZXN0aW9uVHlwZS5lbWFpbFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIlxuICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPCEtLSDQmtC+0LzQvNC10L3RgtCw0YDQuNC5IC0tPlxuICAgIDxsYWJlbFxuICAgICAgICAqbmdJZj1cImZpZWxkc0xpc3QuaW5jbHVkZXMoJ21lc3NhZ2UnKVwiXG4gICAgICAgIHR1aUxhYmVsXG4gICAgPlxuICAgICAgICDQmtC+0LzQvNC10L3RgtCw0YDQuNC5XG4gICAgICAgIDx0dWktdGV4dGFyZWEgZm9ybUNvbnRyb2xOYW1lPVwibWVzc2FnZVwiPiDQmtC+0LzQvNC10L3RgtCw0YDQuNC5IDwvdHVpLXRleHRhcmVhPlxuICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtZXNzYWdlXCJcbiAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgIC8+XG4gICAgPC9sYWJlbD5cblxuICAgIDwhLS0g0KTQsNC50LvRiyAtLT5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiZmllbGRzTGlzdC5pbmNsdWRlcygnZmlsZXMnKVwiXG4gICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMVwiXG4gICAgPlxuICAgICAgICA8bGFiZWwgdHVpSW5wdXRGaWxlcz5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICN2YWxpZGF0b3I9XCJ0dWlJbnB1dEZpbGVzVmFsaWRhdG9yXCJcbiAgICAgICAgICAgICAgICBhY2NlcHQ9XCIuZG9jLC5kb2N4LC5wZGYsaW1hZ2UvKlwiXG4gICAgICAgICAgICAgICAgdHVpSW5wdXRGaWxlc1xuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJsb2FkZWRGaWxlXCJcbiAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKHJlamVjdCk9XCJvblJlamVjdCgkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgKm5nSWY9XCJsb2FkZWRGaWxlLmludmFsaWRcIlxuICAgICAgICAgICAgW2Vycm9yXT1cIlsnbWF4TGVuZ3RoJ10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImxvYWRlZEZpbGVcIlxuICAgICAgICAvPlxuXG4gICAgICAgIEBsZXQgYWNjZXB0ZWQgPSBhY2NlcHRlZCQgfCBhc3luYztcbiAgICAgICAgPHR1aS1maWxlc1xuICAgICAgICAgICAgKm5nSWY9XCJhY2NlcHRlZD8ubGVuZ3RoIHx8IHJlamVjdGVkLmxlbmd0aFwiXG4gICAgICAgICAgICBjbGFzcz1cInR1aS1zcGFjZV90b3AtMVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDx0dWktZmlsZVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmaWxlIG9mIGFjY2VwdGVkXCJcbiAgICAgICAgICAgICAgICBbZmlsZV09XCJmaWxlXCJcbiAgICAgICAgICAgICAgICAocmVtb3ZlKT1cIm9uUmVtb3ZlKGZpbGUpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8dHVpLWZpbGVcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZmlsZSBvZiByZWplY3RlZFwiXG4gICAgICAgICAgICAgICAgc3RhdGU9XCJlcnJvclwiXG4gICAgICAgICAgICAgICAgW2ZpbGVdPVwiKGZpbGUgfCB0dWlGaWxlUmVqZWN0ZWQ6IHZhbGlkYXRvciB8IGFzeW5jKSB8fCBmaWxlXCJcbiAgICAgICAgICAgICAgICAocmVtb3ZlKT1cIm9uUmVtb3ZlKGZpbGUpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvdHVpLWZpbGVzPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSByZWNhcHRjaGEgLS0+XG4gICAgQGlmIChmb3JtLmdldCgncmVjYXB0Y2hhJykpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJtYi0zIG1heC1oLTIwIG92ZXJmbG93LWhpZGRlbiBkdXJhdGlvbi01MDBcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnIW1heC1oLTAgIS1tLTInOiBmb3JtLmdldCgncmVjYXB0Y2hhJyk/LnZhbGlkIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8cmUtY2FwdGNoYSBmb3JtQ29udHJvbE5hbWU9XCJyZWNhcHRjaGFcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8IS0tINCt0LvQtdC80LXQvdGC0Ysg0YPQv9GA0LDQstC70LXQvdC40Y8gIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cIiEhKGxvYWRpbmckIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5zYy5zZW5kXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZi1jZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICDQntGC0L/RgNCw0LLQuNGC0YxcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJncm93IGJhc2lzLTYwIHRleHQtYm9keS1zXCI+XG4gICAgICAgICAgICDQndCw0LbQuNC80LDRjyDQvdCwINC60L3QvtC/0LrRgywg0LLRiyDRgdC+0LPQu9Cw0YjQsNC10YLQtdGB0Ywg0YFcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0dWlMaW5rXG4gICAgICAgICAgICAgICAgW3BzZXVkb109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29udGV4dD8uZGF0YT8ub25DbGlja09mZmVySGFuZGxlcigpOyBjbGlja09mZmVyLmVtaXQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg0J/QvtC70LjRgtC40LrQvtC5INC60L7QvdGE0LjQtNC10L3RhtC40LDQu9GM0L3QvtGB0YLQuFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9mb3JtPlxuIl19
|
@@ -1,5 +1,4 @@
|
|
1
|
-
export * from './enums';
|
2
1
|
export * from './interfaces';
|
3
2
|
export * from './feedback-form/sc-feedback-form.component';
|
4
3
|
export * from './gratitude/sc-gratitude.component';
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZmVlZGJhY2svaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLG9DQUFvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vZmVlZGJhY2stZm9ybS9zYy1mZWVkYmFjay1mb3JtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2dyYXRpdHVkZS9zYy1ncmF0aXR1ZGUuY29tcG9uZW50JztcbiJdfQ==
|
@@ -1,2 +1,2 @@
|
|
1
1
|
export {};
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZmVlZGJhY2stZm9ybS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZmVlZGJhY2svaW50ZXJmYWNlcy9zYy1mZWVkYmFjay1mb3JtLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NGZWVkYmFja0Zvcm1zIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBUdWlMb29zZVVuaW9uIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5cbi8qKlxuICog0KLQuNC/0Ysg0LTQvtGB0YLRg9C/0L3Ri9GFINC/0L7Qu9C10Lkg0LTQu9GPINGE0L7RgNC8INC+0LHRgNCw0YLQvdC+0Lkg0YHQstGP0LfQuC5cbiAqL1xuZXhwb3J0IHR5cGUgU2NGZWVkYmFja0Zvcm1GaWVsZFR5cGUgPSAnbmFtZScgfCAnZW1haWwnIHwgJ3Bob25lJyB8ICdtZXNzYWdlJyB8ICdmaWxlcycgfCAnaXNTaG91bGRVc2VNZXNzZW5nZXInO1xuXG4vKipcbiAqINCa0L7QvdGE0LjQs9GD0YDQsNGG0LjRjyDRhNC+0YDQvNGLINC+0LHRgNCw0YLQvdC+0Lkg0YHQstGP0LfQuC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY0ZlZWRiYWNrRm9ybUNvbmZpZyB7XG4gICAgLyoqXG4gICAgICog0KPQvdC40LrQsNC70YzQvdGL0Lkg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0YTQvtGA0LzRiywg0LjRgdC/0L7Qu9GM0LfRg9C10LzRi9C5INCyIEFQSS3Qt9Cw0L/RgNC+0YHQsNGFLlxuICAgICAqL1xuICAgIHNsdWc6IFR1aUxvb3NlVW5pb248U2NGZWVkYmFja0Zvcm1zPjtcblxuICAgIC8qKlxuICAgICAqINCd0LDQt9Cy0LDQvdC40LUg0YTQvtGA0LzRiywg0L7RgtC+0LHRgNCw0LbQsNC10LzQvtC1INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRji5cbiAgICAgKi9cbiAgICB0aXRsZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INC/0L7Qu9C10LksINC00L7RgdGC0YPQv9C90YvRhSDQsiDQtNCw0L3QvdC+0Lkg0YTQvtGA0LzQtS5cbiAgICAgKi9cbiAgICBmaWVsZHM6IFNjRmVlZGJhY2tGb3JtRmllbGRUeXBlW107XG59XG4iXX0=
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { InputSignal, OutputEmitterRef, Signal } from '@angular/core';
|
2
2
|
import { FormControl, FormGroup } from '@angular/forms';
|
3
|
-
import {
|
3
|
+
import { ScFeedbackForms, ScISuggestionType, ScUploadedFile } from '@snabcentr/client-core';
|
4
4
|
import { TuiLooseUnion } from '@taiga-ui/cdk';
|
5
5
|
import { TuiDialogContext } from '@taiga-ui/core';
|
6
6
|
import { TuiCountryIsoCode } from '@taiga-ui/i18n';
|
@@ -21,7 +21,7 @@ export declare class ScFeedbackFormComponent {
|
|
21
21
|
/**
|
22
22
|
* Символьное обозначение (slug) формы.
|
23
23
|
*/
|
24
|
-
readonly slugInput: InputSignal<TuiLooseUnion<
|
24
|
+
readonly slugInput: InputSignal<TuiLooseUnion<ScFeedbackForms>>;
|
25
25
|
/**
|
26
26
|
* Список полей, доступных в данной форме.
|
27
27
|
*/
|
@@ -29,7 +29,7 @@ export declare class ScFeedbackFormComponent {
|
|
29
29
|
/**
|
30
30
|
* Символьное обозначение (slug) формы.
|
31
31
|
*/
|
32
|
-
protected readonly slug: Signal<TuiLooseUnion<
|
32
|
+
protected readonly slug: Signal<TuiLooseUnion<ScFeedbackForms>>;
|
33
33
|
/**
|
34
34
|
* Список полей, доступных в данной форме.
|
35
35
|
*/
|
package/feedback/index.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { ScFeedbackForms } from '@snabcentr/client-core';
|
2
2
|
import { TuiLooseUnion } from '@taiga-ui/cdk';
|
3
3
|
/**
|
4
4
|
* Типы доступных полей для форм обратной связи.
|
@@ -11,7 +11,7 @@ export interface ScFeedbackFormConfig {
|
|
11
11
|
/**
|
12
12
|
* Уникальный идентификатор формы, используемый в API-запросах.
|
13
13
|
*/
|
14
|
-
slug: TuiLooseUnion<
|
14
|
+
slug: TuiLooseUnion<ScFeedbackForms>;
|
15
15
|
/**
|
16
16
|
* Название формы, отображаемое пользователю.
|
17
17
|
*/
|
@@ -6414,37 +6414,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
6414
6414
|
}]
|
6415
6415
|
}] });
|
6416
6416
|
|
6417
|
-
/**
|
6418
|
-
* Перечисление, представляющее различные формы обратной связи.
|
6419
|
-
*/
|
6420
|
-
var ScFeedbackForms;
|
6421
|
-
(function (ScFeedbackForms) {
|
6422
|
-
/**
|
6423
|
-
* Пожелания и предложения по улучшению сайта.
|
6424
|
-
*/
|
6425
|
-
ScFeedbackForms["suggest"] = "suggest";
|
6426
|
-
/**
|
6427
|
-
* Оставить заявку на получение бесплатных образцов.
|
6428
|
-
*/
|
6429
|
-
ScFeedbackForms["samples"] = "samples";
|
6430
|
-
/**
|
6431
|
-
* Форма обратной связи со страницы контактов.
|
6432
|
-
*/
|
6433
|
-
ScFeedbackForms["contacts"] = "contacts";
|
6434
|
-
/**
|
6435
|
-
* Форма обратной связи со страницы вакансий.
|
6436
|
-
*/
|
6437
|
-
ScFeedbackForms["vacancies"] = "vacancies";
|
6438
|
-
/**
|
6439
|
-
* Задать вопрос.
|
6440
|
-
*/
|
6441
|
-
ScFeedbackForms["questions"] = "questions";
|
6442
|
-
/**
|
6443
|
-
* Заказать изготовление москитной сетки.
|
6444
|
-
*/
|
6445
|
-
ScFeedbackForms["mosquitoes"] = "mosquitoes";
|
6446
|
-
})(ScFeedbackForms || (ScFeedbackForms = {}));
|
6447
|
-
|
6448
6417
|
/**
|
6449
6418
|
* Компонент формы обратной связи.
|
6450
6419
|
*/
|
@@ -7345,5 +7314,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
7345
7314
|
* Generated bundle index. Do not edit.
|
7346
7315
|
*/
|
7347
7316
|
|
7348
|
-
export { AbstractScPriceCard, AuthMethod, CURRENT_COUNTRY_ID, FilesAndDocumentsComponent, FilesAndDocumentsModule, FinishDateTimeTransformerDirective, IS_DEFAULT_COUNTRY, MAX_FILES_IN_FORM_INPUT, SC_ALLOW_SELECT_TERMINATED, SC_DATE_FORMATTER, SC_ERROR_CHANGE_HANDLER, SC_HELP_NOTIFICATION_CLOSE, SC_HELP_NOTIFICATION_LIMIT, SC_MANAGER_QR_HANDLER, SC_PAGE_SIZE_OPTIONS$1 as SC_PAGE_SIZE_OPTIONS, SC_SHOW_HELP_NOTIFICATION_IN_PHONE_INPUT, SC_USER_CITY_INFO, SC_USER_INFO, SC_USER_PROVIDERS, SC_VERIFICATION_CODE_TIMEOUT, ScAccordionComponent, ScAccordionContentDirective, ScAccordionModule, ScAddContactDialogComponent, ScAddContragentBankAccountsDialogComponent, ScAddContragentDialogComponent, ScAddDeliveryAddressDialogComponent, ScAddressesSelectionFieldComponent, ScAuthModule, ScBannerComponent, ScBannerModule, ScBrandsListComponent, ScBrandsListModule, ScCarAddProductsFromCsvDialogComponent, ScCartItemComponent, ScCatalogModule, ScCategoryCardComponent, ScContactsAccordionComponent, ScContactsModule, ScContragentsAccordionComponent, ScContragentsAccordionItemComponent, ScContragentsModule, ScDeliveryAddressAccordionComponent, ScDeliveryAddressAccordionItemComponent, ScDeliveryAddressModule, ScDownloadPriceListComponent, ScEmailLinkDirective, ScErrorBlockStatusComponent, ScErrorHandlerComponent, ScFavoriteButtonComponent, ScFeedbackFormComponent,
|
7317
|
+
export { AbstractScPriceCard, AuthMethod, CURRENT_COUNTRY_ID, FilesAndDocumentsComponent, FilesAndDocumentsModule, FinishDateTimeTransformerDirective, IS_DEFAULT_COUNTRY, MAX_FILES_IN_FORM_INPUT, SC_ALLOW_SELECT_TERMINATED, SC_DATE_FORMATTER, SC_ERROR_CHANGE_HANDLER, SC_HELP_NOTIFICATION_CLOSE, SC_HELP_NOTIFICATION_LIMIT, SC_MANAGER_QR_HANDLER, SC_PAGE_SIZE_OPTIONS$1 as SC_PAGE_SIZE_OPTIONS, SC_SHOW_HELP_NOTIFICATION_IN_PHONE_INPUT, SC_USER_CITY_INFO, SC_USER_INFO, SC_USER_PROVIDERS, SC_VERIFICATION_CODE_TIMEOUT, ScAccordionComponent, ScAccordionContentDirective, ScAccordionModule, ScAddContactDialogComponent, ScAddContragentBankAccountsDialogComponent, ScAddContragentDialogComponent, ScAddDeliveryAddressDialogComponent, ScAddressesSelectionFieldComponent, ScAuthModule, ScBannerComponent, ScBannerModule, ScBrandsListComponent, ScBrandsListModule, ScCarAddProductsFromCsvDialogComponent, ScCartItemComponent, ScCatalogModule, ScCategoryCardComponent, ScContactsAccordionComponent, ScContactsModule, ScContragentsAccordionComponent, ScContragentsAccordionItemComponent, ScContragentsModule, ScDeliveryAddressAccordionComponent, ScDeliveryAddressAccordionItemComponent, ScDeliveryAddressModule, ScDownloadPriceListComponent, ScEmailLinkDirective, ScErrorBlockStatusComponent, ScErrorHandlerComponent, ScFavoriteButtonComponent, ScFeedbackFormComponent, ScFormFieldsModule, ScFormatDatePipe, ScFrequentlyAskedQuestionsComponent, ScFrequentlyAskedQuestionsGroupSelectorComponent, ScFrequentlyAskedQuestionsWithGroupsComponent, ScGratitudeComponent, ScHelpNotificationService, ScInputQuantityComponent, ScLinks, ScManagerCardComponent, ScManagerCardPushComponent, ScNewContactFormComponent, ScNewContragentBankAccountsFormComponent, ScNewContragentFormComponent, ScNewsCardComponent, ScNewsCardSkeletonComponent, ScNewsModule, ScNextInputFocusDirective, ScNextInputFocusModule, ScNotifyWhenInStockDialogComponent, ScOrderItemMobileComponent, ScOrderModule, ScPaymentStatusComponent, ScPhoneFormatPipe, ScPreviewSampleComponent, ScPreviewSampleModule, ScPreviewSamplesMosquitoComponent, ScPriceCardComponent, ScPriceCardInlineComponent, ScPriceHistoryComponent, ScPriceListPaginationComponent, ScPriceWarehouseStockComponent, ScProfileAccordionsContentComponent, ScProfileModule, ScQRCodeDialogComponent, ScQRCodeModule, ScResetUserPasswordComponent, ScResourcePreviewComponent, ScShareButtonComponent, ScShareButtonModule, ScSignInFormByEmailComponent, ScSignInFormByPhoneComponent, ScSignInFormComponent, ScSignUpFormComponent, ScSimpleSignUpFormComponent, ScSuggestionFieldComponent, ScTelLinkDirective, ScTerminalLinkDirective, ScUpdateUserInfoDialogComponent, ScUserManagersComponent, ScUserModule, ScUserPhoneApproveDialogComponent, ScVerificationModule, ScVerificationPhoneCheckFormComponent, TreeDirective, TreeIconService, TreeLoaderService, TreeTopDirective, scBicValidator, scClientUiIconsName, scCorrespondentAccountValidator, scPasswordConfirmMatchingValidator, stepValidator, tuiDateValueTransformerDefaultProvider };
|
7349
7318
|
//# sourceMappingURL=snabcentr-client-ui.mjs.map
|