@reusa/ngx-reusa-app-lib 0.0.1322 → 0.0.1324
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/components/add-employer/add-employer.component.mjs +196 -132
- package/esm2022/lib/components/add-participant/add-participant.component.mjs +29 -24
- package/esm2022/lib/components/add-payment/add-payment.component.mjs +45 -31
- package/esm2022/lib/components/address/address.component.mjs +97 -46
- package/esm2022/lib/components/bank-details/bank-details.component.mjs +139 -75
- package/esm2022/lib/components/contact-us/contact-us.component.mjs +42 -28
- package/esm2022/lib/components/email-update/email-update.component.mjs +119 -62
- package/esm2022/lib/components/employer-grid/employer-grid.component.mjs +165 -84
- package/esm2022/lib/components/footer/footer.component.mjs +23 -11
- package/esm2022/lib/components/header/header.component.mjs +163 -109
- package/esm2022/lib/components/idle-detector/idle-detector.component.mjs +29 -18
- package/esm2022/lib/components/job-search-result-page/job-search-result-page.component.mjs +22 -16
- package/esm2022/lib/components/job-title/job-title.component.mjs +20 -16
- package/esm2022/lib/components/legal-disclaimar/legal-disclaimar.component.mjs +389 -208
- package/esm2022/lib/components/lexis-nexis/lexis-nexis.component.mjs +83 -21
- package/esm2022/lib/components/menu/menu.component.mjs +63 -25
- package/esm2022/lib/components/mfa/mfa.component.mjs +155 -98
- package/esm2022/lib/components/mfa2/mfa2.component.mjs +54 -30
- package/esm2022/lib/components/money-expect/money-expect.component.mjs +31 -23
- package/esm2022/lib/components/profile/profile.component.mjs +34 -14
- package/esm2022/lib/components/profile-redirect/profile-redirect.component.mjs +17 -10
- package/esm2022/lib/components/questionnaire/common-success/common-success.page.mjs +80 -27
- package/esm2022/lib/components/questionnaire/dynamic-form-panel.component.mjs +29 -8
- package/esm2022/lib/components/questionnaire/dynamic-form-question.component.mjs +172 -119
- package/esm2022/lib/components/questionnaire/dynamic-form.component.mjs +122 -41
- package/esm2022/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.mjs +7 -7
- package/esm2022/lib/components/search-employer/search-employer.component.mjs +10 -7
- package/esm2022/lib/components/security-question/security-question.component.mjs +19 -9
- package/esm2022/lib/components/select/select.component.mjs +10 -5
- package/esm2022/lib/components/ssn-reverify/ssn-reverify.component.mjs +72 -52
- package/esm2022/lib/components/user-login/user-login.component.mjs +116 -82
- package/esm2022/lib/components/weekly-cert-employer/weekly-cert-employer.component.mjs +69 -47
- package/esm2022/lib/models/questionnaire/ComboModel.mjs +480 -1
- package/esm2022/lib/pages/common/login/login.component.mjs +7 -2
- package/esm2022/lib/pages/popovers/language/language.page.mjs +2 -1
- package/esm2022/lib/pipes/translate/dynamic-translate.pipe.mjs +2 -2
- package/esm2022/lib/validations/AppValidators.mjs +9 -9
- package/fesm2022/reusa-ngx-reusa-app-lib.mjs +3103 -1492
- package/fesm2022/reusa-ngx-reusa-app-lib.mjs.map +1 -1
- package/lib/components/add-employer/add-employer.component.d.ts +22 -73
- package/lib/components/add-employer/add-employer.component.d.ts.map +1 -1
- package/lib/components/add-participant/add-participant.component.d.ts +4 -1
- package/lib/components/add-participant/add-participant.component.d.ts.map +1 -1
- package/lib/components/add-payment/add-payment.component.d.ts +1 -2
- package/lib/components/add-payment/add-payment.component.d.ts.map +1 -1
- package/lib/components/address/address.component.d.ts +10 -1
- package/lib/components/address/address.component.d.ts.map +1 -1
- package/lib/components/bank-details/bank-details.component.d.ts +17 -1
- package/lib/components/bank-details/bank-details.component.d.ts.map +1 -1
- package/lib/components/contact-us/contact-us.component.d.ts +4 -1
- package/lib/components/contact-us/contact-us.component.d.ts.map +1 -1
- package/lib/components/email-update/email-update.component.d.ts +6 -1
- package/lib/components/email-update/email-update.component.d.ts.map +1 -1
- package/lib/components/employer-grid/employer-grid.component.d.ts +6 -24
- package/lib/components/employer-grid/employer-grid.component.d.ts.map +1 -1
- package/lib/components/footer/footer.component.d.ts.map +1 -1
- package/lib/components/header/header.component.d.ts +3 -0
- package/lib/components/header/header.component.d.ts.map +1 -1
- package/lib/components/job-search-result-page/job-search-result-page.component.d.ts +3 -1
- package/lib/components/job-search-result-page/job-search-result-page.component.d.ts.map +1 -1
- package/lib/components/job-title/job-title.component.d.ts +3 -1
- package/lib/components/job-title/job-title.component.d.ts.map +1 -1
- package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts +5 -1
- package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts.map +1 -1
- package/lib/components/lexis-nexis/lexis-nexis.component.d.ts.map +1 -1
- package/lib/components/menu/menu.component.d.ts +11 -1
- package/lib/components/menu/menu.component.d.ts.map +1 -1
- package/lib/components/mfa/mfa.component.d.ts +6 -1
- package/lib/components/mfa/mfa.component.d.ts.map +1 -1
- package/lib/components/profile/profile.component.d.ts.map +1 -1
- package/lib/components/questionnaire/common-success/common-success.page.d.ts +1 -0
- package/lib/components/questionnaire/common-success/common-success.page.d.ts.map +1 -1
- package/lib/components/questionnaire/dynamic-form-question.component.d.ts.map +1 -1
- package/lib/components/questionnaire/dynamic-form.component.d.ts.map +1 -1
- package/lib/components/ssn-reverify/ssn-reverify.component.d.ts +5 -1
- package/lib/components/ssn-reverify/ssn-reverify.component.d.ts.map +1 -1
- package/lib/components/user-login/user-login.component.d.ts +7 -1
- package/lib/components/user-login/user-login.component.d.ts.map +1 -1
- package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts +7 -1
- package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts.map +1 -1
- package/lib/models/questionnaire/ComboModel.d.ts +80 -0
- package/lib/models/questionnaire/ComboModel.d.ts.map +1 -1
- package/lib/pages/common/login/login.component.d.ts.map +1 -1
- package/lib/pages/popovers/language/language.page.d.ts.map +1 -1
- package/lib/validations/AppValidators.d.ts +8 -8
- package/lib/validations/AppValidators.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -353,7 +353,12 @@ export class LoginComponent extends BasePage {
|
|
|
353
353
|
this.loginService
|
|
354
354
|
.initiateForgotPassword(this.userId.value)
|
|
355
355
|
.subscribe(res => {
|
|
356
|
-
|
|
356
|
+
if (localStorage.getItem("language") === "es") {
|
|
357
|
+
this.util.success('Se ha restablecido su contraseña. Recibirá un correo electrónico con una contraseña temporal e instrucciones para iniciar sesión.');
|
|
358
|
+
}
|
|
359
|
+
else {
|
|
360
|
+
this.util.success('Your password has been reset. You should receive an email with a temporary password and login instructions.');
|
|
361
|
+
}
|
|
357
362
|
this.loginForm.reset();
|
|
358
363
|
this.loginService.reset();
|
|
359
364
|
this.loginFormDirective.resetForm();
|
|
@@ -523,4 +528,4 @@ export class LoginComponent extends BasePage {
|
|
|
523
528
|
args: ['loginTypeFormDirective', { static: false }]
|
|
524
529
|
}] }); })();
|
|
525
530
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LoginComponent, { className: "LoginComponent", filePath: "lib\\pages\\common\\login\\login.component.ts", lineNumber: 19 }); })();
|
|
526
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9wYWdlcy9jb21tb24vbG9naW4vbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9wYWdlcy9jb21tb24vbG9naW4vbG9naW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQTZELE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBc0IsVUFBVSxFQUE2RCxNQUFNLGdCQUFnQixDQUFDO0FBSTNILE9BQU8sRUFBRSxRQUFRLEVBQTJCLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNEdkQsMkJBQW9CO0lBQ2xCLHFCQUFLO0lBQUEsa0RBQ1A7SUFBQSxpQkFBTTs7O0lBQ04sMkJBQW9CO0lBQ2xCLHFCQUFLO0lBQUEsa0RBQ0w7SUFBQSxxQkFBSztJQUFBLHFEQUNQO0lBQUEsaUJBQU07OztJQWNGLDhCQUEwQzs7O0lBK0R4Qyw4QkFBMEM7OztJQVFsQywrQkFBdUU7OztJQUE3RCxnREFBNEI7Ozs7SUFJeEMsMkJBQXVCLGVBQUE7SUFFbkIsaUNBQTZHO0lBQzdHLGlDQUF5QjtJQUFBLHdCQUFRO0lBQUEsaUJBQVEsRUFBQTtJQUUzQyxnQ0FHaUI7SUFDbkIsaUJBQU07Ozs7SUFQVSxlQUFtQjtJQUFuQix3Q0FBbUIsb0JBQUEsbUJBQUE7SUFHdEIsZUFBYTtJQUFiLGtDQUFhLGFBQUEsc0NBQUE7Ozs7SUFNMUIs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b3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgRGlyZWN0aXZlLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVmFsaWRhdG9ycywgVW50eXBlZEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cERpcmVjdGl2ZSwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBQb3BvdmVyQ29udHJvbGxlciwgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHtNYXRTdGVwcGVyfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zdGVwcGVyJztcclxuaW1wb3J0IHsgQmFzZVBhZ2UsIEN1c3RvbUVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnLi4vLi4vQmFzZVBhZ2UnO1xyXG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9Vc2VyTW9kZWwnO1xyXG5pbXBvcnQgeyBMYW5ndWFnZVBhZ2UgfSBmcm9tICcuLi8uLi9wb3BvdmVycy9sYW5ndWFnZS9sYW5ndWFnZS5wYWdlJztcclxuaW1wb3J0IHsgTGliQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL0xpYkNvbnN0YW50cyc7XHJcbmltcG9ydCB7IENhcHRjaGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FwdGNoYS9jYXB0Y2hhLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbG9naW4nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2dpbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbG9naW4uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9naW5Db21wb25lbnQgZXh0ZW5kcyBCYXNlUGFnZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHByaXZhdGUgTE9HSU5fQVVUSF9DT0RFX0FDVElPTl9OQU1FID0gXCJMT0dJTl9BVVRIX0NPREVcIjtcclxuXHJcbiAgcHVibGljIGNhcHNPbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgZGlzcGxheURpYWxvZyA9IGZhbHNlO1xyXG5cclxuICBAVmlld0NoaWxkKCdsb2dpblJlZicsIHtzdGF0aWM6IHRydWUgfSkgbG9naW5FbGVtZW50OiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdzdGVwcGVyJykgc3RlcHBlcjogTWF0U3RlcHBlcjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbG9naW5Gb3JtRGlyZWN0aXZlJywge3N0YXRpYyA6IGZhbHNlfSkgcHJpdmF0ZSBsb2dpbkZvcm1EaXJlY3RpdmU6IE5nRm9ybTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbG9naW5UeXBlRm9ybURpcmVjdGl2ZScsIHtzdGF0aWMgOiBmYWxzZX0pIHByaXZhdGUgbG9naW5UeXBlRm9ybURpcmVjdGl2ZTogTmdGb3JtO1xyXG5cclxuICBhdXRoMjogYW55O1xyXG4gIHByaXZhdGUgbG9naW5FcnJvclN0cmluZzogc3RyaW5nO1xyXG4gIHB1YmxpYyBvcHQ6IHN0cmluZyA9ICdzaWduaW4nO1xyXG4gIHB1YmxpYyBsb2dpbkZvcm0gOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyBsb2dpblR5cGVGb3JtIDogVW50eXBlZEZvcm1Hcm91cDtcclxuICBwdWJsaWMgc2lnbnVwRm9ybSA6IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgcHVibGljIGVuYWJsZU90cCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZW5hYmxlUGFzc3dvcmQgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGVuYWJsZVNpZ25pbiA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaXNMb2dpbkluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICBwdWJsaWMgZmFxID0gJ3B1YSc7XHJcbiAgcHVibGljIHNob3dQcm9ncmVzc0JhciA9IGZhbHNlO1xyXG4gIHB1YmxpYyBoaWRlUGFzc3dvcmQgPSB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZmIgOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHB1YmxpYyBsb2dpblNlcnZpY2UgOiBMb2dpblNlcnZpY2UsIHB1YmxpYyByb3V0ZXIgOiBSb3V0ZXIsIHB1YmxpYyB1dGlsIDogVXRpbFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHVibGljIHBvcHVwOiBQb3BvdmVyQ29udHJvbGxlciwgcHJpdmF0ZSBuYXY6IE5hdkNvbnRyb2xsZXIsIHByaXZhdGUgY3M6IENhcHRjaGFTZXJ2aWNlKSB7IFxyXG4gICAgICAgICAgICAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0RpYWxvZygpIHtcclxuICAgIHRoaXMuZGlzcGxheURpYWxvZyA9IHRydWU7XHJcbiAgfVxyXG4gIFxyXG4gIGlvblZpZXdEaWRFbnRlcigpe1xyXG4gICAgdGhpcy5yZXNldCgpO1xyXG4gIH1cclxuXHJcbiAgZW5hYmxlT3RwRmllbGQoKXtcclxuICAgIGlmKHRoaXMubG9naW5Gb3JtLmludmFsaWQpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51dGlsXHJcbiAgICAgICAgLnNob3dMb2FkZXIoKVxyXG4gICAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY3MuZ2VuZXJhdGVDYXB0Y2hhVG9rZW4odGhpcy5MT0dJTl9BVVRIX0NPREVfQUNUSU9OX05BTUUpXHJcbiAgICAgICAgLnN1YnNjcmliZSgodG9rZW46IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jcy5zZXRJbnZpc2liZWxDYXB0Y2hhKHRva2VuKTtcclxuICAgICAgICAgIHRoaXMubG9naW5TZXJ2aWNlXHJcbiAgICAgICAgICAgICAgLmdlbmVyYXRlT3RwKHRoaXMudXNlcklkLnZhbHVlLCBcImVtYWlsXCIpXHJcbiAgICAgICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYoIXRoaXMuZW5hYmxlT3RwKXtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zdGVwcGVyLm5leHQoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5lbmFibGVQYXNzd29yZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZVNpZ25pbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMub3RwLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxWYWxpZGF0b3JzLm1pbkxlbmd0aCg2KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNildKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnNpZ25JblBhc3N3b3JkKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5lbmFibGVPdHAgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcignQ2FwdGNoYSB2ZXJpZmljYXRpb24gZmFpbGVkLiBQbGVhc2UgcmV0cnkuJyk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICB9XHJcblxyXG4gIGVuYWJsZVBhc3N3b3JkRmllbGQoKXtcclxuICAgIGlmKHRoaXMubG9naW5Gb3JtLmludmFsaWQpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZighdGhpcy5lbmFibGVQYXNzd29yZCl7XHJcbiAgICAgIHRoaXMuZW5hYmxlT3RwID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZW5hYmxlUGFzc3dvcmQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVuYWJsZVNpZ25pbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuc3RlcHBlci5uZXh0KCk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5vdHApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKXtcclxuICAgIHRoaXMuZW5hYmxlT3RwID0gZmFsc2U7XHJcbiAgICB0aGlzLmVuYWJsZVBhc3N3b3JkID0gZmFsc2U7XHJcbiAgICB0aGlzLmVuYWJsZVNpZ25pbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaWduSW5QYXNzd29yZC5yZXNldCgpO1xyXG4gICAgdGhpcy5zaG93UHJvZ3Jlc3NCYXIgPSBmYWxzZTtcclxuICAgIHRoaXMuc3RlcHBlci5yZXNldCgpO1xyXG4gICAgdGhpcy5vdHAucmVzZXQoKTtcclxuICAgIHRoaXMubG9naW5UeXBlRm9ybS5yZXNldCgpO1xyXG4gICAgdGhpcy5sb2dpbkZvcm0ucmVzZXQoKTtcclxuICAgIHRoaXMubG9naW5Gb3JtRGlyZWN0aXZlLnJlc2V0Rm9ybSgpO1xyXG4gICAgdGhpcy5sb2dpblR5cGVGb3JtRGlyZWN0aXZlLnJlc2V0Rm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmluaXRpbGl6ZUxvZ2luRm9ybSgpO1xyXG4gIH1cclxuICBcclxuICBpbml0aWxpemVMb2dpbkZvcm0oKXtcclxuICAgIHRoaXMubG9naW5Gb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICd1c2VySWQnIDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zaWdudXBGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICdzaWduVXBVc2VySWQnIDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAncGFzc3dvcmQnIDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAnZmlyc3ROYW1lJyA6IFsnJyxWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgJ21pZGRsZU5hbWUnIDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAnbGFzdE5hbWUnIDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAnZG9iJyA6IFsnJyxWYWxpZGF0b3JzLnJlcXVpcmVkXVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5sb2dpblR5cGVGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICdvdHAnIDogWycnXSxcclxuICAgICAgJ3NpZ25JblBhc3N3b3JkJyA6IFsnJ10sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBnZXQgc2lnbkluUGFzc3dvcmQoKXtcclxuICAgIHJldHVybiB0aGlzLmxvZ2luVHlwZUZvcm0uY29udHJvbHNbJ3NpZ25JblBhc3N3b3JkJ107XHJcbiAgfVxyXG5cclxuICBnZXQgdXNlcklkKCl7XHJcbiAgICByZXR1cm4gdGhpcy5sb2dpbkZvcm0uY29udHJvbHNbJ3VzZXJJZCddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG90cCgpe1xyXG4gICAgcmV0dXJuIHRoaXMubG9naW5UeXBlRm9ybS5jb250cm9sc1snb3RwJ107XHJcbiAgfVxyXG5cclxuICBnZXQgc2lnblVwVXNlcklkKCl7XHJcbiAgICByZXR1cm4gdGhpcy5zaWdudXBGb3JtLmNvbnRyb2xzWydzaWduVXBVc2VySWQnXTtcclxuICB9XHJcblxyXG4gIGdldCBwYXNzd29yZCgpe1xyXG4gICAgcmV0dXJuIHRoaXMuc2lnbnVwRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXTtcclxuICB9XHJcblxyXG4gIGdldCBmaXJzdE5hbWUoKXtcclxuICAgIHJldHVybiB0aGlzLnNpZ251cEZvcm0uY29udHJvbHNbJ2ZpcnN0TmFtZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1pZGRsZU5hbWUoKXtcclxuICAgIHJldHVybiB0aGlzLnNpZ251cEZvcm0uY29udHJvbHNbJ21pZGRsZU5hbWUnXTtcclxuICB9XHJcblxyXG4gIGdldCBsYXN0TmFtZSgpe1xyXG4gICAgcmV0dXJuIHRoaXMuc2lnbnVwRm9ybS5jb250cm9sc1snbGFzdE5hbWUnXTtcclxuICB9XHJcblxyXG4gIGdldCBkb2IoKXtcclxuICAgIHJldHVybiB0aGlzLnNpZ251cEZvcm0uY29udHJvbHNbJ2RvYiddO1xyXG4gIH1cclxuICBcclxuXHJcblxyXG4gIGdlbmVyYXRlT3RwKGlzUmVnaXN0ZXJlZCA6IGJvb2xlYW4pe1xyXG4gICAgaWYoaXNSZWdpc3RlcmVkKXtcclxuICAgICAgdGhpcy51dGlsLnNob3dMb2FkZXIoKTtcclxuICAgICAgdGhpcy5sb2dpblNlcnZpY2VcclxuICAgICAgICAgIC5nZW5lcmF0ZU90cCh0aGlzLnVzZXJJZC52YWx1ZSwgXCJlbWFpbFwiKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZU90cCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlUGFzc3dvcmQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZU90cCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZVBhc3N3b3JkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5sb2dpblNlcnZpY2VcclxuICAgICAgICAgIC5nZW5lcmF0ZU90cFVucmVnaXN0ZXJlZCh0aGlzLnNpZ25VcFVzZXJJZC52YWx1ZSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wcmVzZW50UG9wb3ZlcigpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBwcmVzZW50UG9wb3ZlcigpIHt9XHJcblxyXG4gIGFzeW5jIHNpZ25Jbigpe1xyXG4gICAgaWYodGhpcy5sb2dpbkZvcm0uaW52YWxpZCB8fCB0aGlzLmxvZ2luVHlwZUZvcm0uaW52YWxpZCl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuaXNMb2dpbkluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgLy90aGlzLnNob3dQcm9ncmVzc0JhciA9IHRydWU7XHJcbiAgICBsZXQgYXV0aCA6IGFueT0ge307XHJcbiAgICBhdXRoLnVzZXJJZCA9IHRoaXMudXNlcklkLnZhbHVlO1xyXG4gICAgaWYodGhpcy5lbmFibGVPdHApe1xyXG4gICAgICBhdXRoLnBhc3N3b3JkID0gdGhpcy5vdHAudmFsdWU7XHJcbiAgICB9ZWxzZSBpZih0aGlzLmVuYWJsZVBhc3N3b3JkKXtcclxuICAgICAgYXV0aC5wYXNzd29yZCA9IHRoaXMuc2lnbkluUGFzc3dvcmQudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51dGlsXHJcbiAgICAgICAgLnNob3dMb2FkZXIoKVxyXG4gICAgICAgIC50aGVuKFxyXG4gICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2luU2VydmljZS5sb2dpbihhdXRoKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdXNlck1vZGVsIDogVXNlck1vZGVsID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dpblNlcnZpY2Uuc2V0VXNlcih1c2VyTW9kZWwpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodXNlck1vZGVsLmNoYW5nZVB3ZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoJ2NoYW5nZS1wYXNzd29yZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3NCYXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2dpbkluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dQcm9ncmVzc0JhciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvZ2luSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXYubmF2aWdhdGVSb290KCd3ZWxjb21lJylcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm90cC5zZXRWYWx1ZSgnJyk7XHJcbiAgICAgICAgICAgICAgICBpZighdGhpcy5lbmFibGVPdHApe1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dQcm9ncmVzc0JhciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvZ2luSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICB9XHJcblxyXG4gIHNpZ25VcChvdHApe1xyXG5cclxuICAgIGlmKG90cCA9PSBudWxsIHx8IG90cCA9PSB1bmRlZmluZWQpe1xyXG4gICAgICB0aGlzLnV0aWwuc2hvd0Vycm9yKCdPVFAgVmVyaWZpY2F0aW9uIEZhaWxlZC4gUGxlYXNlIHZlcmlmeSBhZ2Fpbi4nKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgdXNlck1vZGVsIDogVXNlck1vZGVsID0gbmV3IFVzZXJNb2RlbCgpO1xyXG4gICAgdXNlck1vZGVsLmZpcnN0TmFtZSA9IHRoaXMuZmlyc3ROYW1lLnZhbHVlO1xyXG4gICAgdXNlck1vZGVsLm1pZGRsZU5hbWUgPSB0aGlzLm1pZGRsZU5hbWUudmFsdWU7XHJcbiAgICB1c2VyTW9kZWwubGFzdE5hbWUgPSB0aGlzLmxhc3ROYW1lLnZhbHVlO1xyXG4gICAgdXNlck1vZGVsLmRvYiA9IHRoaXMuZG9iLnZhbHVlO1xyXG4gICAgdXNlck1vZGVsLnVzZXJuYW1lID0gdGhpcy5zaWduVXBVc2VySWQudmFsdWU7XHJcbiAgICB1c2VyTW9kZWwucGFzc3dvcmQgPSB0aGlzLnBhc3N3b3JkLnZhbHVlO1xyXG5cclxuICAgIHRoaXMubG9naW5TZXJ2aWNlLnNldFVzZXIodXNlck1vZGVsKTtcclxuICAgIHRoaXMubG9naW5TZXJ2aWNlLnNpZ25VcCh1c2VyTW9kZWwpLnN1YnNjcmliZShcclxuICAgICAgcmVzID0+IHtcclxuICAgICAgICB0aGlzLm9wdCA9ICdzaWduaW4nO1xyXG4gICAgICAgIHRoaXMudXRpbC5zdWNjZXNzKCdZb3UgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIGluIFJlRW1wbG95TVMuIFBsZWFzZSBsb2dpbiB0byB1c2UgdG8gdGhlIGZlYXR1cmVzIG9mIHRoZSBhcHAuJyk7XHJcbiAgICAgICAgdGhpcy5zaWdudXBGb3JtLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UucmVzZXQoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyID0+IHtcclxuICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UucmVzZXQoKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGNoYW5nZUxhbmd1YWdlKGV2ZW50KSB7XHJcbiAgICBjb25zdCBwb3BvdmVyID0gYXdhaXQgdGhpcy5wb3B1cC5jcmVhdGUoe1xyXG4gICAgICBjb21wb25lbnQ6IExhbmd1YWdlUGFnZSxcclxuICAgICAgZXZlbnQ6IGV2ZW50LFxyXG4gICAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcclxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiBmYWxzZSxcclxuICAgICAgY3NzQ2xhc3M6ICdib3R0b20tc2hlZXQtcG9wb3ZlcidcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBhd2FpdCBwb3BvdmVyLnByZXNlbnQoKTtcclxuICB9XHJcblxyXG4gIGluaXRpYXRlRm9yZ290UGFzc3dvcmQoKXtcclxuICAgIGlmKHRoaXMubG9naW5Gb3JtLmludmFsaWQpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnV0aWxcclxuICAgICAgICAuc2hvd0xvYWRlcigpXHJcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2dpblNlcnZpY2VcclxuICAgICAgICAgICAgICAuaW5pdGlhdGVGb3Jnb3RQYXNzd29yZCh0aGlzLnVzZXJJZC52YWx1ZSlcclxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLnN1Y2Nlc3MoJ1lvdXIgcGFzc3dvcmQgaGFzIGJlZW4gcmVzZXQuICBZb3Ugc2hvdWxkIHJlY2VpdmUgYW4gZW1haWwgd2l0aCBhIHRlbXBvcmFyeSBwYXNzd29yZCBhbmQgbG9naW4gaW5zdHJ1Y3Rpb25zLicpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxvZ2luRm9ybS5yZXNldCgpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxvZ2luU2VydmljZS5yZXNldCgpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxvZ2luRm9ybURpcmVjdGl2ZS5yZXNldEZvcm0oKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9naW5Gb3JtLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9naW5Gb3JtRGlyZWN0aXZlLnJlc2V0Rm9ybSgpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxpb24tY29udGVudCBjbGFzcz1cImJhY2tncm91bmRcIj5cclxuICA8cC10b2FzdCBwb3NpdGlvbj1cInRvcC1jZW50ZXJcIiA+PC9wLXRvYXN0PlxyXG4gICAgPGFwcC1jb250ZW50IFtzaG93SGVscF09XCJ0cnVlXCI+XHJcbiAgICAgIDxhcHAtcGFnZSBzcmM9XCJhc3NldHMvaWNvbi9SZUVtcGxveXt7dXRpbC5nZXRTdGF0ZSgpfX0uc3ZnXCIgW2hpZGVDYXJkXT1cInRydWVcIj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPGFwcC1jYXJkIHRpdGxlPVwibG9naW4uY2FyZC50aXRsZVwiPlxyXG4gICAgICAgICAgICA8cC1kaWFsb2cgaGVhZGVyPVwiTWVzc2FnZVwiIFsodmlzaWJsZSldPVwiZGlzcGxheURpYWxvZ1wiIG1vZGFsPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgIE1heWJlIHlvdSBmb3Jnb3QgeW91ciBVc2VyIElELCBhIEN1c3RvbWVyIFNlcnZpY2UgUmVwcmVzZW50YXRpdmUgaXMgYXZhaWxhYmxlIHRvIGFzc2lzdCB5b3UgTW9uZGF5IHRocm91Z2ggRnJpZGF5IGZyb20gOCBBTSB0byA1IFBNLiAgaWYgd2VhdGhlciBwZXJtaXRzXHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzTVMoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGJyLz4tIEVtcGxveWVycyBtYXkgY2FsbCA2MDEtMzIxLTYzMzQgXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzTUUoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGJyLz4tIEVtcGxveWVycyBtYXkgY2FsbCAyMDctNjIxLTUxMjBcclxuICAgICAgICAgICAgICAgIDxici8+LSBDbGFpbWFudHMgbWF5IGNhbGwgMS04MDAtNTkzLTc2NjAuXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGJyLz5cclxuICAgICAgICAgICAgICA8cC1mb290ZXI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cImRpc3BsYXlEaWFsb2cgPSAhZGlzcGxheURpYWxvZ1wiIGNvbG9yPVwic3VjY2Vzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBuYW1lPVwiY2xvc2Utc2hhcnBcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIENsb3NlXHJcbiAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvcC1mb290ZXI+XHJcbiAgICAgICAgICA8L3AtZGlhbG9nPlxyXG4gICAgICAgICAgICA8bWF0LWhvcml6b250YWwtc3RlcHBlciBbbGluZWFyXT1cInRydWVcIiAjc3RlcHBlcj5cclxuICAgICAgICAgICAgICA8bWF0LXN0ZXAgW3N0ZXBDb250cm9sXT1cImxvZ2luRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBMYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPGFwcC1tc2cga2V5PVwibG9naW4uY2FyZC5zdGVwMVwiPjwvYXBwLW1zZz5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImxvZ2luRm9ybVwiICNsb2dpbkZvcm1EaXJlY3RpdmU9XCJuZ0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPGlvbi1yb3cgY29sb3I9XCJwcmltYXJ5XCIgY2xhc3M9XCJpb24tanVzdGlmeS1jb250ZW50LWNlbnRlclwiIGpveXJpZGVTdGVwPVwic3RlcDFcIiB0aXRsZT1cInt7J2d1aWRlLmxvZ2luLnVzZXJpZC50aXRsZScgfCB0cmFuc2xhdGV9fVwiIFxyXG4gICAgICAgICAgICAgICAgICB0ZXh0PVwie3snZ3VpZGUubG9naW4udXNlcmlkLm1lc3NhZ2UnIHwgdHJhbnNsYXRlfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1hbGlnbi1zZWxmLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlvbi1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1mbG9hdC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cInVzZXJJZFwiIGlkPVwidXNlcklkXCIgaW5sZW5ndGg9XCI1XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgYXBwQXV0b2ZvY3VzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJmbG9hdC1pbnB1dFwiPlVzZXIgSUQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0ndXNlcklkJyBbZm9ybV09XCJsb2dpblR5cGVGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdVc2VyIElEIGlzIHJlcXVpcmVkLicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5sZW5ndGg6ICdVc2VyIElEIHNob3VsZCBoYXZlIG1pbmltdW0gNSBjaGFyYWN0ZXJzLidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICA8aW9uLXJvdyBjbGFzcz1cImp1c3RpZnktY29udGVudC1jZW50ZXJcIiBqb3lyaWRlU3RlcD1cInN0ZXAyXCIgdGl0bGU9XCJ7eydndWlkZS5sb2dpbi5vcHRpb25zLnRpdGxlJyB8IHRyYW5zbGF0ZX19XCIgXHJcbiAgICAgICAgICAgICAgICAgIHRleHQ9XCJ7eydndWlkZS5sb2dpbi5vcHRpb25zLm1lc3NhZ2UnIHwgdHJhbnNsYXRlfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiB0eXBlPVwic3VibWl0XCIgZXhwYW5kPVwiYmxvY2tcIiAoY2xpY2spPVwiZW5hYmxlUGFzc3dvcmRGaWVsZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJzdWNjZXNzXCIgcFRvb2x0aXA9XCJMb2dpbiB3aXRoIHBhc3N3b3JkXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgam95cmlkZVN0ZXA9XCJzdGVwM1wiIHRpdGxlPVwie3snZ3VpZGUubG9naW4ucGFzc3dvcmQudGl0bGUnIHwgdHJhbnNsYXRlfX1cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PVwie3snZ3VpZGUubG9naW4ucGFzc3dvcmQubWVzc2FnZScgfCB0cmFuc2xhdGV9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cImxvZy1pbi1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgUGFzc3dvcmRcclxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgdHlwZT1cInN1Ym1pdFwiIGV4cGFuZD1cImJsb2NrXCIgZXhwYW5kPVwiYmxvY2tcIiAoY2xpY2spPVwiZW5hYmxlT3RwRmllbGQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwic3VjY2Vzc1wiIHBUb29sdGlwPVwiTG9naW4gd2l0aCBhdXRoY29kZVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBqb3lyaWRlU3RlcD1cInN0ZXA0XCIgdGl0bGU9XCJ7eydndWlkZS5sb2dpbi5hdXRoY29kZS50aXRsZScgfCB0cmFuc2xhdGV9fVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9XCJ7eydndWlkZS5sb2dpbi5hdXRoY29kZS5tZXNzYWdlJyB8IHRyYW5zbGF0ZX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBuYW1lPVwibG9nLWluLW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBBdXRoY29kZVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICA8aW9uLXJvdyBjbGFzcz1cImp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gam95cmlkZVN0ZXA9XCJzdGVwNVwiIHRpdGxlPVwiRm9yZ290IFVzZXIgSUQ/XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0PVwiUHJvdmlkZXMgYXNzaXN0YW5jZSBpZiB5b3UgZm9yZ2V0IHlvdXIgVXNlciBJRCB0byBsb2dpblwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIHNoYXBlPVwicm91bmRcIiB0eXBlPVwic3VibWl0XCIgZXhwYW5kPVwib3V0bGluZVwiIGNvbG9yPVwic3VjY2Vzc1wiIHBUb29sdGlwPVwiRm9yZ290IFVzZXIgSUQ/XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cInNob3dEaWFsb2coKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBGb3Jnb3QgVXNlciBJRD9cclxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgam95cmlkZVN0ZXA9XCJzdGVwNlwiIHRpdGxlPVwiRm9yZ290IHBhc3N3b3JkP1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9XCJQcm92aWRlcyBhc3Npc3RhbmNlIHRvIHJlc2V0IHlvdXIgcGFzc3dvcmQgdXNpbmcgeW91ciByZWdpc3RlcmVkIGVtYWlsIGFkZHJlc3NcIiBcclxuICAgICAgICAgICAgICAgICAgICAgIHNoYXBlPVwicm91bmRcIiB0eXBlPVwic3VibWl0XCIgZXhwYW5kPVwib3V0bGluZVwiIGNvbG9yPVwic3VjY2Vzc1wiIHBUb29sdGlwPVwiRm9yZ290IFBhc3N3b3JkP1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJpbml0aWF0ZUZvcmdvdFBhc3N3b3JkKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgRm9yZ290IFBhc3N3b3JkP1xyXG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgIDwvbWF0LXN0ZXA+XHJcbiAgICAgICAgICAgICAgPG1hdC1zdGVwPlxyXG4gICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJsb2dpblR5cGVGb3JtXCIgI2xvZ2luVHlwZUZvcm1EaXJlY3RpdmU9XCJuZ0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBMYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLW1zZyBrZXk9XCJsb2dpbi5jYXJkLnN0ZXAyXCI+PC9hcHAtbXNnPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8aW9uLWdyaWQgY2xhc3M9XCJpb24tcGFkZGluZy10b3BcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLXJvdyBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImlvbi1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1hbGlnbi1zZWxmLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXJcIiAoY2Fwc0xvY2spPVwiY2Fwc09uPSRldmVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJpb24tcGFkZGluZy1yaWdodFwiPlVzZXIgSUQ8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiaW9uLXBhZGRpbmctbGVmdFwiIHN0eWxlPVwiZmxvYXQ6IHJpZ2h0O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1tYXNrIFt2YWx1ZV09XCJ1c2VySWQudmFsdWUgICsgJydcIiAqbmdJZj1cInVzZXJJZC52YWx1ZVwiPjwvYXBwLW1hc2s+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+PGJyIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlbmFibGVPdHBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1mbG9hdC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1wYXNzd29yZCBbZm9ybUNvbnRyb2xdPVwib3RwXCIgaW5wdXRJZD1cInNpZ25JblBhc3N3b3JkXCIgW3RvZ2dsZU1hc2tdPSd0cnVlJyBbZmVlZGJhY2tdPSdmYWxzZSc+PC9wLXBhc3N3b3JkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZmxvYXQtaW5wdXRcIj5BdXRoY29kZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtmaWVsZF09J290cCcgW2Zvcm1dPVwibG9naW5UeXBlRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ0F1dGhjb2RlIGlzIHJlcXVpcmVkLicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlubGVuZ3RoOiAnQXV0aGNvZGUgc2hvdWxkIGhhdmUgbWluaW11bSA2IGNoYXJhY3RlcnMuJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlbmFibGVQYXNzd29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXBhc3N3b3JkIFtmb3JtQ29udHJvbF09XCJzaWduSW5QYXNzd29yZFwiIGlucHV0SWQ9XCJzaWduSW5QYXNzd29yZFwiIFt0b2dnbGVNYXNrXT0ndHJ1ZScgW2ZlZWRiYWNrXT0nZmFsc2UnPjwvcC1wYXNzd29yZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImZsb2F0LWlucHV0XCI+UGFzc3dvcmQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbZmllbGRdPSdzaWduSW5QYXNzd29yZCcgW2Zvcm1dPVwibG9naW5UeXBlRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1Bhc3N3b3JkIGlzIHJlcXVpcmVkLidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cImNhcHNPblwiIHN0eWxlPVwiY29sb3I6I2IzNDExZDtcIj48c3Ryb25nPkNhcHMgTG9jayBpcyBPbjwvc3Ryb25nPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXJvdyBjbGFzcz1cImp1c3RpZnktY29udGVudC1jZW50ZXJcIiBbaGlkZGVuXT1cIiFlbmFibGVTaWduaW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJzdWJtaXRcIiBleHBhbmQ9XCJibG9ja1wiIChjbGljayk9XCJzaWduSW4oKVwiIGNvbG9yPVwic3VjY2Vzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJsb2ctaW4tb3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduIEluXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiB0eXBlPVwicmVzZXRcIiBleHBhbmQ9XCJibG9ja1wiIGV4cGFuZD1cImJsb2NrXCIgKGNsaWNrKT1cInJlc2V0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJtZWRpdW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBuYW1lPVwicmVmcmVzaFwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNldFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1ncmlkICpuZ0lmPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tcm93IGNsYXNzPVwianVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIjXCI+Rm9yZ290IHVzZXIgSUQ/PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIiNcIj5Gb3Jnb3QgUGFzc3dvcmQ/PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tZ3JpZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICA8L2lvbi1ncmlkPlxyXG4gICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgIDwvbWF0LXN0ZXA+XHJcbiAgICAgICAgICAgIDwvbWF0LWhvcml6b250YWwtc3RlcHBlcj5cclxuICBcclxuICAgICAgICAgIDwvYXBwLWNhcmQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZy1zaWduaW4yXCIgZGF0YS13aWR0aD1cIjMwMFwiIGRhdGEtaGVpZ2h0PVwiMjAwXCIgZGF0YS1sb25ndGl0bGU9XCJ0cnVlXCI+PC9kaXY+IC0tPlxyXG4gICAgICA8L2FwcC1wYWdlPlxyXG4gICAgPC9hcHAtY29udGVudD5cclxuICA8L2lvbi1jb250ZW50PlxyXG5cclxuXHJcblxyXG4iXX0=
|
|
531
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9wYWdlcy9jb21tb24vbG9naW4vbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9wYWdlcy9jb21tb24vbG9naW4vbG9naW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQTZELE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBc0IsVUFBVSxFQUE2RCxNQUFNLGdCQUFnQixDQUFDO0FBSTNILE9BQU8sRUFBRSxRQUFRLEVBQTJCLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNEdkQsMkJBQW9CO0lBQ2xCLHFCQUFLO0lBQUEsa0RBQ1A7SUFBQSxpQkFBTTs7O0lBQ04sMkJBQW9CO0lBQ2xCLHFCQUFLO0lBQUEsa0RBQ0w7SUFBQSxxQkFBSztJQUFBLHFEQUNQO0lBQUEsaUJBQU07OztJQWNGLDhCQUEwQzs7O0lBK0R4Qyw4QkFBMEM7OztJQVFsQywrQkFBdUU7OztJQUE3RCxnREFBNEI7Ozs7SUFJeEMsMkJBQXVCLGVBQUE7SUFFbkIsaUNBQTZHO0lBQzdHLGlDQUF5QjtJQUFBLHdCQUFRO0lBQUEsaUJBQVEsRUFBQTtJQUUzQyxnQ0FHaUI7SUFDbkIsaUJBQU07Ozs7SUFQVSxlQUFtQjtJQUFuQix3Q0FBbUIsb0JBQUEsbUJBQUE7SUFHdEIsZUFBYTtJQUFiLGtDQUFhLGFBQUEsc0NBQUE7Ozs7SUFNMUIs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LEVBQUMsTUFBTSxFQUFHLEtBQUssRUFBQztZQUVjLHNCQUFzQjtrQkFBcEYsU0FBUzttQkFBQyx3QkFBd0IsRUFBRSxFQUFDLE1BQU0sRUFBRyxLQUFLLEVBQUM7O2tGQWQxQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgRGlyZWN0aXZlLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVmFsaWRhdG9ycywgVW50eXBlZEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cERpcmVjdGl2ZSwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBQb3BvdmVyQ29udHJvbGxlciwgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHtNYXRTdGVwcGVyfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zdGVwcGVyJztcclxuaW1wb3J0IHsgQmFzZVBhZ2UsIEN1c3RvbUVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnLi4vLi4vQmFzZVBhZ2UnO1xyXG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9Vc2VyTW9kZWwnO1xyXG5pbXBvcnQgeyBMYW5ndWFnZVBhZ2UgfSBmcm9tICcuLi8uLi9wb3BvdmVycy9sYW5ndWFnZS9sYW5ndWFnZS5wYWdlJztcclxuaW1wb3J0IHsgTGliQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL0xpYkNvbnN0YW50cyc7XHJcbmltcG9ydCB7IENhcHRjaGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FwdGNoYS9jYXB0Y2hhLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbG9naW4nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2dpbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbG9naW4uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9naW5Db21wb25lbnQgZXh0ZW5kcyBCYXNlUGFnZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHByaXZhdGUgTE9HSU5fQVVUSF9DT0RFX0FDVElPTl9OQU1FID0gXCJMT0dJTl9BVVRIX0NPREVcIjtcclxuXHJcbiAgcHVibGljIGNhcHNPbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgZGlzcGxheURpYWxvZyA9IGZhbHNlO1xyXG5cclxuICBAVmlld0NoaWxkKCdsb2dpblJlZicsIHtzdGF0aWM6IHRydWUgfSkgbG9naW5FbGVtZW50OiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdzdGVwcGVyJykgc3RlcHBlcjogTWF0U3RlcHBlcjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbG9naW5Gb3JtRGlyZWN0aXZlJywge3N0YXRpYyA6IGZhbHNlfSkgcHJpdmF0ZSBsb2dpbkZvcm1EaXJlY3RpdmU6IE5nRm9ybTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbG9naW5UeXBlRm9ybURpcmVjdGl2ZScsIHtzdGF0aWMgOiBmYWxzZX0pIHByaXZhdGUgbG9naW5UeXBlRm9ybURpcmVjdGl2ZTogTmdGb3JtO1xyXG5cclxuICBhdXRoMjogYW55O1xyXG4gIHByaXZhdGUgbG9naW5FcnJvclN0cmluZzogc3RyaW5nO1xyXG4gIHB1YmxpYyBvcHQ6IHN0cmluZyA9ICdzaWduaW4nO1xyXG4gIHB1YmxpYyBsb2dpbkZvcm0gOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyBsb2dpblR5cGVGb3JtIDogVW50eXBlZEZvcm1Hcm91cDtcclxuICBwdWJsaWMgc2lnbnVwRm9ybSA6IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgcHVibGljIGVuYWJsZU90cCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZW5hYmxlUGFzc3dvcmQgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGVuYWJsZVNpZ25pbiA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaXNMb2dpbkluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICBwdWJsaWMgZmFxID0gJ3B1YSc7XHJcbiAgcHVibGljIHNob3dQcm9ncmVzc0JhciA9IGZhbHNlO1xyXG4gIHB1YmxpYyBoaWRlUGFzc3dvcmQgPSB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZmIgOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHB1YmxpYyBsb2dpblNlcnZpY2UgOiBMb2dpblNlcnZpY2UsIHB1YmxpYyByb3V0ZXIgOiBSb3V0ZXIsIHB1YmxpYyB1dGlsIDogVXRpbFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHVibGljIHBvcHVwOiBQb3BvdmVyQ29udHJvbGxlciwgcHJpdmF0ZSBuYXY6IE5hdkNvbnRyb2xsZXIsIHByaXZhdGUgY3M6IENhcHRjaGFTZXJ2aWNlKSB7IFxyXG4gICAgICAgICAgICAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0RpYWxvZygpIHtcclxuICAgIHRoaXMuZGlzcGxheURpYWxvZyA9IHRydWU7XHJcbiAgfVxyXG4gIFxyXG4gIGlvblZpZXdEaWRFbnRlcigpe1xyXG4gICAgdGhpcy5yZXNldCgpO1xyXG4gIH1cclxuXHJcbiAgZW5hYmxlT3RwRmllbGQoKXtcclxuICAgIGlmKHRoaXMubG9naW5Gb3JtLmludmFsaWQpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51dGlsXHJcbiAgICAgICAgLnNob3dMb2FkZXIoKVxyXG4gICAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY3MuZ2VuZXJhdGVDYXB0Y2hhVG9rZW4odGhpcy5MT0dJTl9BVVRIX0NPREVfQUNUSU9OX05BTUUpXHJcbiAgICAgICAgLnN1YnNjcmliZSgodG9rZW46IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jcy5zZXRJbnZpc2liZWxDYXB0Y2hhKHRva2VuKTtcclxuICAgICAgICAgIHRoaXMubG9naW5TZXJ2aWNlXHJcbiAgICAgICAgICAgICAgLmdlbmVyYXRlT3RwKHRoaXMudXNlcklkLnZhbHVlLCBcImVtYWlsXCIpXHJcbiAgICAgICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYoIXRoaXMuZW5hYmxlT3RwKXtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zdGVwcGVyLm5leHQoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5lbmFibGVQYXNzd29yZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZVNpZ25pbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMub3RwLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxWYWxpZGF0b3JzLm1pbkxlbmd0aCg2KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNildKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnNpZ25JblBhc3N3b3JkKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5lbmFibGVPdHAgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcignQ2FwdGNoYSB2ZXJpZmljYXRpb24gZmFpbGVkLiBQbGVhc2UgcmV0cnkuJyk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICB9XHJcblxyXG4gIGVuYWJsZVBhc3N3b3JkRmllbGQoKXtcclxuICAgIGlmKHRoaXMubG9naW5Gb3JtLmludmFsaWQpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZighdGhpcy5lbmFibGVQYXNzd29yZCl7XHJcbiAgICAgIHRoaXMuZW5hYmxlT3RwID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZW5hYmxlUGFzc3dvcmQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVuYWJsZVNpZ25pbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuc3RlcHBlci5uZXh0KCk7XHJcbiAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5vdHApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKXtcclxuICAgIHRoaXMuZW5hYmxlT3RwID0gZmFsc2U7XHJcbiAgICB0aGlzLmVuYWJsZVBhc3N3b3JkID0gZmFsc2U7XHJcbiAgICB0aGlzLmVuYWJsZVNpZ25pbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaWduSW5QYXNzd29yZC5yZXNldCgpO1xyXG4gICAgdGhpcy5zaG93UHJvZ3Jlc3NCYXIgPSBmYWxzZTtcclxuICAgIHRoaXMuc3RlcHBlci5yZXNldCgpO1xyXG4gICAgdGhpcy5vdHAucmVzZXQoKTtcclxuICAgIHRoaXMubG9naW5UeXBlRm9ybS5yZXNldCgpO1xyXG4gICAgdGhpcy5sb2dpbkZvcm0ucmVzZXQoKTtcclxuICAgIHRoaXMubG9naW5Gb3JtRGlyZWN0aXZlLnJlc2V0Rm9ybSgpO1xyXG4gICAgdGhpcy5sb2dpblR5cGVGb3JtRGlyZWN0aXZlLnJlc2V0Rm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmluaXRpbGl6ZUxvZ2luRm9ybSgpO1xyXG4gIH1cclxuICBcclxuICBpbml0aWxpemVMb2dpbkZvcm0oKXtcclxuICAgIHRoaXMubG9naW5Gb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICd1c2VySWQnIDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zaWdudXBGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICdzaWduVXBVc2VySWQnIDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAncGFzc3dvcmQnIDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAnZmlyc3ROYW1lJyA6IFsnJyxWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgJ21pZGRsZU5hbWUnIDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAnbGFzdE5hbWUnIDogWycnLFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAnZG9iJyA6IFsnJyxWYWxpZGF0b3JzLnJlcXVpcmVkXVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5sb2dpblR5cGVGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICdvdHAnIDogWycnXSxcclxuICAgICAgJ3NpZ25JblBhc3N3b3JkJyA6IFsnJ10sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBnZXQgc2lnbkluUGFzc3dvcmQoKXtcclxuICAgIHJldHVybiB0aGlzLmxvZ2luVHlwZUZvcm0uY29udHJvbHNbJ3NpZ25JblBhc3N3b3JkJ107XHJcbiAgfVxyXG5cclxuICBnZXQgdXNlcklkKCl7XHJcbiAgICByZXR1cm4gdGhpcy5sb2dpbkZvcm0uY29udHJvbHNbJ3VzZXJJZCddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG90cCgpe1xyXG4gICAgcmV0dXJuIHRoaXMubG9naW5UeXBlRm9ybS5jb250cm9sc1snb3RwJ107XHJcbiAgfVxyXG5cclxuICBnZXQgc2lnblVwVXNlcklkKCl7XHJcbiAgICByZXR1cm4gdGhpcy5zaWdudXBGb3JtLmNvbnRyb2xzWydzaWduVXBVc2VySWQnXTtcclxuICB9XHJcblxyXG4gIGdldCBwYXNzd29yZCgpe1xyXG4gICAgcmV0dXJuIHRoaXMuc2lnbnVwRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXTtcclxuICB9XHJcblxyXG4gIGdldCBmaXJzdE5hbWUoKXtcclxuICAgIHJldHVybiB0aGlzLnNpZ251cEZvcm0uY29udHJvbHNbJ2ZpcnN0TmFtZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1pZGRsZU5hbWUoKXtcclxuICAgIHJldHVybiB0aGlzLnNpZ251cEZvcm0uY29udHJvbHNbJ21pZGRsZU5hbWUnXTtcclxuICB9XHJcblxyXG4gIGdldCBsYXN0TmFtZSgpe1xyXG4gICAgcmV0dXJuIHRoaXMuc2lnbnVwRm9ybS5jb250cm9sc1snbGFzdE5hbWUnXTtcclxuICB9XHJcblxyXG4gIGdldCBkb2IoKXtcclxuICAgIHJldHVybiB0aGlzLnNpZ251cEZvcm0uY29udHJvbHNbJ2RvYiddO1xyXG4gIH1cclxuICBcclxuXHJcblxyXG4gIGdlbmVyYXRlT3RwKGlzUmVnaXN0ZXJlZCA6IGJvb2xlYW4pe1xyXG4gICAgaWYoaXNSZWdpc3RlcmVkKXtcclxuICAgICAgdGhpcy51dGlsLnNob3dMb2FkZXIoKTtcclxuICAgICAgdGhpcy5sb2dpblNlcnZpY2VcclxuICAgICAgICAgIC5nZW5lcmF0ZU90cCh0aGlzLnVzZXJJZC52YWx1ZSwgXCJlbWFpbFwiKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZU90cCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlUGFzc3dvcmQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZU90cCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZVBhc3N3b3JkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5sb2dpblNlcnZpY2VcclxuICAgICAgICAgIC5nZW5lcmF0ZU90cFVucmVnaXN0ZXJlZCh0aGlzLnNpZ25VcFVzZXJJZC52YWx1ZSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wcmVzZW50UG9wb3ZlcigpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBwcmVzZW50UG9wb3ZlcigpIHt9XHJcblxyXG4gIGFzeW5jIHNpZ25Jbigpe1xyXG4gICAgaWYodGhpcy5sb2dpbkZvcm0uaW52YWxpZCB8fCB0aGlzLmxvZ2luVHlwZUZvcm0uaW52YWxpZCl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuaXNMb2dpbkluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgLy90aGlzLnNob3dQcm9ncmVzc0JhciA9IHRydWU7XHJcbiAgICBsZXQgYXV0aCA6IGFueT0ge307XHJcbiAgICBhdXRoLnVzZXJJZCA9IHRoaXMudXNlcklkLnZhbHVlO1xyXG4gICAgaWYodGhpcy5lbmFibGVPdHApe1xyXG4gICAgICBhdXRoLnBhc3N3b3JkID0gdGhpcy5vdHAudmFsdWU7XHJcbiAgICB9ZWxzZSBpZih0aGlzLmVuYWJsZVBhc3N3b3JkKXtcclxuICAgICAgYXV0aC5wYXNzd29yZCA9IHRoaXMuc2lnbkluUGFzc3dvcmQudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51dGlsXHJcbiAgICAgICAgLnNob3dMb2FkZXIoKVxyXG4gICAgICAgIC50aGVuKFxyXG4gICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2luU2VydmljZS5sb2dpbihhdXRoKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdXNlck1vZGVsIDogVXNlck1vZGVsID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dpblNlcnZpY2Uuc2V0VXNlcih1c2VyTW9kZWwpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodXNlck1vZGVsLmNoYW5nZVB3ZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoJ2NoYW5nZS1wYXNzd29yZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3NCYXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2dpbkluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dQcm9ncmVzc0JhciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvZ2luSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXYubmF2aWdhdGVSb290KCd3ZWxjb21lJylcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm90cC5zZXRWYWx1ZSgnJyk7XHJcbiAgICAgICAgICAgICAgICBpZighdGhpcy5lbmFibGVPdHApe1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dQcm9ncmVzc0JhciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvZ2luSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICB9XHJcblxyXG4gIHNpZ25VcChvdHApe1xyXG5cclxuICAgIGlmKG90cCA9PSBudWxsIHx8IG90cCA9PSB1bmRlZmluZWQpe1xyXG4gICAgICB0aGlzLnV0aWwuc2hvd0Vycm9yKCdPVFAgVmVyaWZpY2F0aW9uIEZhaWxlZC4gUGxlYXNlIHZlcmlmeSBhZ2Fpbi4nKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgdXNlck1vZGVsIDogVXNlck1vZGVsID0gbmV3IFVzZXJNb2RlbCgpO1xyXG4gICAgdXNlck1vZGVsLmZpcnN0TmFtZSA9IHRoaXMuZmlyc3ROYW1lLnZhbHVlO1xyXG4gICAgdXNlck1vZGVsLm1pZGRsZU5hbWUgPSB0aGlzLm1pZGRsZU5hbWUudmFsdWU7XHJcbiAgICB1c2VyTW9kZWwubGFzdE5hbWUgPSB0aGlzLmxhc3ROYW1lLnZhbHVlO1xyXG4gICAgdXNlck1vZGVsLmRvYiA9IHRoaXMuZG9iLnZhbHVlO1xyXG4gICAgdXNlck1vZGVsLnVzZXJuYW1lID0gdGhpcy5zaWduVXBVc2VySWQudmFsdWU7XHJcbiAgICB1c2VyTW9kZWwucGFzc3dvcmQgPSB0aGlzLnBhc3N3b3JkLnZhbHVlO1xyXG5cclxuICAgIHRoaXMubG9naW5TZXJ2aWNlLnNldFVzZXIodXNlck1vZGVsKTtcclxuICAgIHRoaXMubG9naW5TZXJ2aWNlLnNpZ25VcCh1c2VyTW9kZWwpLnN1YnNjcmliZShcclxuICAgICAgcmVzID0+IHtcclxuICAgICAgICB0aGlzLm9wdCA9ICdzaWduaW4nO1xyXG4gICAgICAgIHRoaXMudXRpbC5zdWNjZXNzKCdZb3UgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIGluIFJlRW1wbG95TVMuIFBsZWFzZSBsb2dpbiB0byB1c2UgdG8gdGhlIGZlYXR1cmVzIG9mIHRoZSBhcHAuJyk7XHJcbiAgICAgICAgdGhpcy5zaWdudXBGb3JtLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UucmVzZXQoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyID0+IHtcclxuICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UucmVzZXQoKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGNoYW5nZUxhbmd1YWdlKGV2ZW50KSB7XHJcbiAgICBjb25zdCBwb3BvdmVyID0gYXdhaXQgdGhpcy5wb3B1cC5jcmVhdGUoe1xyXG4gICAgICBjb21wb25lbnQ6IExhbmd1YWdlUGFnZSxcclxuICAgICAgZXZlbnQ6IGV2ZW50LFxyXG4gICAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcclxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiBmYWxzZSxcclxuICAgICAgY3NzQ2xhc3M6ICdib3R0b20tc2hlZXQtcG9wb3ZlcidcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBhd2FpdCBwb3BvdmVyLnByZXNlbnQoKTtcclxuICB9XHJcblxyXG4gIGluaXRpYXRlRm9yZ290UGFzc3dvcmQoKXtcclxuICAgIGlmKHRoaXMubG9naW5Gb3JtLmludmFsaWQpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnV0aWxcclxuICAgICAgICAuc2hvd0xvYWRlcigpXHJcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2dpblNlcnZpY2VcclxuICAgICAgICAgICAgICAuaW5pdGlhdGVGb3Jnb3RQYXNzd29yZCh0aGlzLnVzZXJJZC52YWx1ZSlcclxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSA9PT0gXCJlc1wiKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuc3VjY2VzcygnU2UgaGEgcmVzdGFibGVjaWRvIHN1IGNvbnRyYXNlw7FhLiBSZWNpYmlyw6EgdW4gY29ycmVvIGVsZWN0csOzbmljbyBjb24gdW5hIGNvbnRyYXNlw7FhIHRlbXBvcmFsIGUgaW5zdHJ1Y2Npb25lcyBwYXJhIGluaWNpYXIgc2VzacOzbi4nKTtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5zdWNjZXNzKCdZb3VyIHBhc3N3b3JkIGhhcyBiZWVuIHJlc2V0LiBZb3Ugc2hvdWxkIHJlY2VpdmUgYW4gZW1haWwgd2l0aCBhIHRlbXBvcmFyeSBwYXNzd29yZCBhbmQgbG9naW4gaW5zdHJ1Y3Rpb25zLicpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9naW5Gb3JtLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9naW5Gb3JtRGlyZWN0aXZlLnJlc2V0Rm9ybSgpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sb2dpbkZvcm0ucmVzZXQoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UucmVzZXQoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sb2dpbkZvcm1EaXJlY3RpdmUucmVzZXRGb3JtKCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGlvbi1jb250ZW50IGNsYXNzPVwiYmFja2dyb3VuZFwiPlxyXG4gIDxwLXRvYXN0IHBvc2l0aW9uPVwidG9wLWNlbnRlclwiID48L3AtdG9hc3Q+XHJcbiAgICA8YXBwLWNvbnRlbnQgW3Nob3dIZWxwXT1cInRydWVcIj5cclxuICAgICAgPGFwcC1wYWdlIHNyYz1cImFzc2V0cy9pY29uL1JlRW1wbG95e3t1dGlsLmdldFN0YXRlKCl9fS5zdmdcIiBbaGlkZUNhcmRdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8YXBwLWNhcmQgdGl0bGU9XCJsb2dpbi5jYXJkLnRpdGxlXCI+XHJcbiAgICAgICAgICAgIDxwLWRpYWxvZyBoZWFkZXI9XCJNZXNzYWdlXCIgWyh2aXNpYmxlKV09XCJkaXNwbGF5RGlhbG9nXCIgbW9kYWw9XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgTWF5YmUgeW91IGZvcmdvdCB5b3VyIFVzZXIgSUQsIGEgQ3VzdG9tZXIgU2VydmljZSBSZXByZXNlbnRhdGl2ZSBpcyBhdmFpbGFibGUgdG8gYXNzaXN0IHlvdSBNb25kYXkgdGhyb3VnaCBGcmlkYXkgZnJvbSA4IEFNIHRvIDUgUE0uICBpZiB3ZWF0aGVyIHBlcm1pdHNcclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNNUygpXCI+XHJcbiAgICAgICAgICAgICAgICA8YnIvPi0gRW1wbG95ZXJzIG1heSBjYWxsIDYwMS0zMjEtNjMzNCBcclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNNRSgpXCI+XHJcbiAgICAgICAgICAgICAgICA8YnIvPi0gRW1wbG95ZXJzIG1heSBjYWxsIDIwNy02MjEtNTEyMFxyXG4gICAgICAgICAgICAgICAgPGJyLz4tIENsYWltYW50cyBtYXkgY2FsbCAxLTgwMC01OTMtNzY2MC5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8YnIvPlxyXG4gICAgICAgICAgICAgIDxwLWZvb3Rlcj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwiZGlzcGxheURpYWxvZyA9ICFkaXNwbGF5RGlhbG9nXCIgY29sb3I9XCJzdWNjZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJjbG9zZS1zaGFycFwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgQ2xvc2VcclxuICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9wLWZvb3Rlcj5cclxuICAgICAgICAgIDwvcC1kaWFsb2c+XHJcbiAgICAgICAgICAgIDxtYXQtaG9yaXpvbnRhbC1zdGVwcGVyIFtsaW5lYXJdPVwidHJ1ZVwiICNzdGVwcGVyPlxyXG4gICAgICAgICAgICAgIDxtYXQtc3RlcCBbc3RlcENvbnRyb2xdPVwibG9naW5Gb3JtXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8YXBwLW1zZyBrZXk9XCJsb2dpbi5jYXJkLnN0ZXAxXCI+PC9hcHAtbXNnPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwibG9naW5Gb3JtXCIgI2xvZ2luRm9ybURpcmVjdGl2ZT1cIm5nRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW9uLXJvdyBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImlvbi1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgam95cmlkZVN0ZXA9XCJzdGVwMVwiIHRpdGxlPVwie3snZ3VpZGUubG9naW4udXNlcmlkLnRpdGxlJyB8IHRyYW5zbGF0ZX19XCIgXHJcbiAgICAgICAgICAgICAgICAgIHRleHQ9XCJ7eydndWlkZS5sb2dpbi51c2VyaWQubWVzc2FnZScgfCB0cmFuc2xhdGV9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLWFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwidXNlcklkXCIgaWQ9XCJ1c2VySWRcIiBpbmxlbmd0aD1cIjVcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBhcHBBdXRvZm9jdXM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImZsb2F0LWlucHV0XCI+VXNlciBJRDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1lcnJvciBbZmllbGRdPSd1c2VySWQnIFtmb3JtXT1cImxvZ2luVHlwZUZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ1VzZXIgSUQgaXMgcmVxdWlyZWQuJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmxlbmd0aDogJ1VzZXIgSUQgc2hvdWxkIGhhdmUgbWluaW11bSA1IGNoYXJhY3RlcnMuJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgIDxpb24tcm93IGNsYXNzPVwianVzdGlmeS1jb250ZW50LWNlbnRlclwiIGpveXJpZGVTdGVwPVwic3RlcDJcIiB0aXRsZT1cInt7J2d1aWRlLmxvZ2luLm9wdGlvbnMudGl0bGUnIHwgdHJhbnNsYXRlfX1cIiBcclxuICAgICAgICAgICAgICAgICAgdGV4dD1cInt7J2d1aWRlLmxvZ2luLm9wdGlvbnMubWVzc2FnZScgfCB0cmFuc2xhdGV9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJzdWJtaXRcIiBleHBhbmQ9XCJibG9ja1wiIChjbGljayk9XCJlbmFibGVQYXNzd29yZEZpZWxkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInN1Y2Nlc3NcIiBwVG9vbHRpcD1cIkxvZ2luIHdpdGggcGFzc3dvcmRcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBqb3lyaWRlU3RlcD1cInN0ZXAzXCIgdGl0bGU9XCJ7eydndWlkZS5sb2dpbi5wYXNzd29yZC50aXRsZScgfCB0cmFuc2xhdGV9fVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9XCJ7eydndWlkZS5sb2dpbi5wYXNzd29yZC5tZXNzYWdlJyB8IHRyYW5zbGF0ZX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBuYW1lPVwibG9nLWluLW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBQYXNzd29yZFxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiB0eXBlPVwic3VibWl0XCIgZXhwYW5kPVwiYmxvY2tcIiBleHBhbmQ9XCJibG9ja1wiIChjbGljayk9XCJlbmFibGVPdHBGaWVsZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJzdWNjZXNzXCIgcFRvb2x0aXA9XCJMb2dpbiB3aXRoIGF1dGhjb2RlXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGpveXJpZGVTdGVwPVwic3RlcDRcIiB0aXRsZT1cInt7J2d1aWRlLmxvZ2luLmF1dGhjb2RlLnRpdGxlJyB8IHRyYW5zbGF0ZX19XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1cInt7J2d1aWRlLmxvZ2luLmF1dGhjb2RlLm1lc3NhZ2UnIHwgdHJhbnNsYXRlfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJsb2ctaW4tb3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhjb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgIDxpb24tcm93IGNsYXNzPVwianVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBqb3lyaWRlU3RlcD1cInN0ZXA1XCIgdGl0bGU9XCJGb3Jnb3QgVXNlciBJRD9cIiBcclxuICAgICAgICAgICAgICAgICAgICAgIHRleHQ9XCJQcm92aWRlcyBhc3Npc3RhbmNlIGlmIHlvdSBmb3JnZXQgeW91ciBVc2VyIElEIHRvIGxvZ2luXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJzdWJtaXRcIiBleHBhbmQ9XCJvdXRsaW5lXCIgY29sb3I9XCJzdWNjZXNzXCIgcFRvb2x0aXA9XCJGb3Jnb3QgVXNlciBJRD9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwic2hvd0RpYWxvZygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEZvcmdvdCBVc2VyIElEP1xyXG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICBqb3lyaWRlU3RlcD1cInN0ZXA2XCIgdGl0bGU9XCJGb3Jnb3QgcGFzc3dvcmQ/XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1cIlByb3ZpZGVzIGFzc2lzdGFuY2UgdG8gcmVzZXQgeW91ciBwYXNzd29yZCB1c2luZyB5b3VyIHJlZ2lzdGVyZWQgZW1haWwgYWRkcmVzc1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJzdWJtaXRcIiBleHBhbmQ9XCJvdXRsaW5lXCIgY29sb3I9XCJzdWNjZXNzXCIgcFRvb2x0aXA9XCJGb3Jnb3QgUGFzc3dvcmQ/XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImluaXRpYXRlRm9yZ290UGFzc3dvcmQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBGb3Jnb3QgUGFzc3dvcmQ/XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc3RlcD5cclxuICAgICAgICAgICAgICA8bWF0LXN0ZXA+XHJcbiAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImxvZ2luVHlwZUZvcm1cIiAjbG9naW5UeXBlRm9ybURpcmVjdGl2ZT1cIm5nRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtbXNnIGtleT1cImxvZ2luLmNhcmQuc3RlcDJcIj48L2FwcC1tc2c+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDxpb24tZ3JpZCBjbGFzcz1cImlvbi1wYWRkaW5nLXRvcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tcm93IGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLWFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpb24tanVzdGlmeS1jb250ZW50LWNlbnRlclwiIChjYXBzTG9jayk9XCJjYXBzT249JGV2ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImlvbi1wYWRkaW5nLXJpZ2h0XCI+VXNlciBJRDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJpb24tcGFkZGluZy1sZWZ0XCIgc3R5bGU9XCJmbG9hdDogcmlnaHQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLW1hc2sgW3ZhbHVlXT1cInVzZXJJZC52YWx1ZSAgKyAnJ1wiICpuZ0lmPVwidXNlcklkLnZhbHVlXCI+PC9hcHAtbWFzaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz48YnIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVuYWJsZU90cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXBhc3N3b3JkIFtmb3JtQ29udHJvbF09XCJvdHBcIiBpbnB1dElkPVwic2lnbkluUGFzc3dvcmRcIiBbdG9nZ2xlTWFza109J3RydWUnIFtmZWVkYmFja109J2ZhbHNlJz48L3AtcGFzc3dvcmQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJmbG9hdC1pbnB1dFwiPkF1dGhjb2RlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0nb3RwJyBbZm9ybV09XCJsb2dpblR5cGVGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnQXV0aGNvZGUgaXMgcmVxdWlyZWQuJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5sZW5ndGg6ICdBdXRoY29kZSBzaG91bGQgaGF2ZSBtaW5pbXVtIDYgY2hhcmFjdGVycy4nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVuYWJsZVBhc3N3b3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZmxvYXQtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtcGFzc3dvcmQgW2Zvcm1Db250cm9sXT1cInNpZ25JblBhc3N3b3JkXCIgaW5wdXRJZD1cInNpZ25JblBhc3N3b3JkXCIgW3RvZ2dsZU1hc2tdPSd0cnVlJyBbZmVlZGJhY2tdPSdmYWxzZSc+PC9wLXBhc3N3b3JkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZmxvYXQtaW5wdXRcIj5QYXNzd29yZDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWVycm9yIFtmaWVsZF09J3NpZ25JblBhc3N3b3JkJyBbZm9ybV09XCJsb2dpblR5cGVGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnUGFzc3dvcmQgaXMgcmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwiY2Fwc09uXCIgc3R5bGU9XCJjb2xvcjojYjM0MTFkO1wiPjxzdHJvbmc+Q2FwcyBMb2NrIGlzIE9uPC9zdHJvbmc+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpb24tanVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tZ3JpZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tcm93IGNsYXNzPVwianVzdGlmeS1jb250ZW50LWNlbnRlclwiIFtoaWRkZW5dPVwiIWVuYWJsZVNpZ25pblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgdHlwZT1cInN1Ym1pdFwiIGV4cGFuZD1cImJsb2NrXCIgKGNsaWNrKT1cInNpZ25JbigpXCIgY29sb3I9XCJzdWNjZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cImxvZy1pbi1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ24gSW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJyZXNldFwiIGV4cGFuZD1cImJsb2NrXCIgZXhwYW5kPVwiYmxvY2tcIiAoY2xpY2spPVwicmVzZXQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cIm1lZGl1bVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJyZWZyZXNoXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc2V0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tZ3JpZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWdyaWQgKm5nSWY9XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3cgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIiNcIj5Gb3Jnb3QgdXNlciBJRD88L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiPkZvcmdvdCBQYXNzd29yZD88L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1ncmlkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc3RlcD5cclxuICAgICAgICAgICAgPC9tYXQtaG9yaXpvbnRhbC1zdGVwcGVyPlxyXG4gIFxyXG4gICAgICAgICAgPC9hcHAtY2FyZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJnLXNpZ25pbjJcIiBkYXRhLXdpZHRoPVwiMzAwXCIgZGF0YS1oZWlnaHQ9XCIyMDBcIiBkYXRhLWxvbmd0aXRsZT1cInRydWVcIj48L2Rpdj4gLS0+XHJcbiAgICAgIDwvYXBwLXBhZ2U+XHJcbiAgICA8L2FwcC1jb250ZW50PlxyXG4gIDwvaW9uLWNvbnRlbnQ+XHJcblxyXG5cclxuXHJcbiJdfQ==
|
|
@@ -12,6 +12,7 @@ export class LanguagePage {
|
|
|
12
12
|
}
|
|
13
13
|
ngOnInit() {
|
|
14
14
|
this.currentLanguage = localStorage.getItem('language');
|
|
15
|
+
this.translateService.use(this.currentLanguage);
|
|
15
16
|
}
|
|
16
17
|
changeLanguage(lang) {
|
|
17
18
|
this.translateService.use(lang);
|
|
@@ -58,4 +59,4 @@ export class LanguagePage {
|
|
|
58
59
|
args: [{ selector: 'app-language', template: "<ion-header>\r\n <ion-toolbar color=\"primary\">\r\n <ion-buttons slot=\"end\">\r\n <ion-button (click)=\"close()\">\r\n <ion-icon slot=\"icon-only\" name=\"close\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n <ion-title><app-msg key=\"language.title\"></app-msg></ion-title>\r\n </ion-toolbar>\r\n</ion-header>\r\n\r\n<ion-content>\r\n <ion-list lines=\"none\">\r\n <ion-radio-group [(ngModel)]=\"language\" >\r\n <ion-list-header>\r\n <ion-label><app-msg key=\"language.heading\"></app-msg></ion-label>\r\n </ion-list-header>\r\n <ion-item (click)=\"changeLanguage('en')\">\r\n <ion-label>English</ion-label>\r\n <ion-radio slot=\"start\" value=\"en\"></ion-radio>\r\n </ion-item>\r\n \r\n <ion-item (click)=\"changeLanguage('es')\">\r\n <ion-label>Espa\u00F1ol</ion-label>\r\n <ion-radio slot=\"start\" value=\"es\"></ion-radio>\r\n </ion-item>\r\n </ion-radio-group>\r\n </ion-list>\r\n</ion-content>\r\n" }]
|
|
59
60
|
}], () => [{ type: i1.TranslateService }, { type: i2.PopoverController }], null); })();
|
|
60
61
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LanguagePage, { className: "LanguagePage", filePath: "lib\\pages\\popovers\\language\\language.page.ts", lineNumber: 10 }); })();
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvcGFnZXMvcG9wb3ZlcnMvbGFuZ3VhZ2UvbGFuZ3VhZ2UucGFnZS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvcGFnZXMvcG9wb3ZlcnMvbGFuZ3VhZ2UvbGFuZ3VhZ2UucGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVNsRCxNQUFNLE9BQU8sWUFBWTtJQUt2QixZQUFtQixnQkFBbUMsRUFBUyxLQUF3QjtRQUFwRSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFIaEYsYUFBUSxHQUFHLEVBQUUsQ0FBQztJQUdzRSxDQUFDO0lBRTVGLFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFJO1FBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDOzZFQW5CVSxZQUFZO29FQUFaLFlBQVk7WUNUekIsa0NBQVkscUJBQUEscUJBQUEsb0JBQUE7WUFHTSw2RkFBUyxXQUFPLElBQUM7WUFDM0IsOEJBQW1EO1lBQ3JELGlCQUFhLEVBQUE7WUFFZixpQ0FBVztZQUFBLDZCQUF3QztZQUFBLGlCQUFZLEVBQUEsRUFBQTtZQUluRSxtQ0FBYSxrQkFBQSx5QkFBQTtZQUVRLGlKQUFzQjtZQUNyQyx3Q0FBaUIsaUJBQUE7WUFDSiw4QkFBMEM7WUFBQSxpQkFBWSxFQUFBO1lBRW5FLG9DQUF5QztZQUEvQiw0RkFBUyxtQkFBZSxJQUFJLENBQUMsSUFBQztZQUN0QyxrQ0FBVztZQUFBLHdCQUFPO1lBQUEsaUJBQVk7WUFDOUIsZ0NBQStDO1lBQ2pELGlCQUFXO1lBRVgsb0NBQXlDO1lBQS9CLDRGQUFTLG1CQUFlLElBQUksQ0FBQyxJQUFDO1lBQ3RDLGtDQUFXO1lBQUEsNkJBQU87WUFBQSxpQkFBWTtZQUM5QixnQ0FBK0M7WUFDakQsaUJBQVcsRUFBQSxFQUFBLEVBQUE7O1lBWkksZUFBc0I7WUFBdEIsc0NBQXNCOzs7aUZESjlCLFlBQVk7Y0FMeEIsU0FBUzsyQkFDRSxjQUFjOztrRkFJYixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBQb3BvdmVyQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWxhbmd1YWdlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGFuZ3VhZ2UucGFnZS5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9sYW5ndWFnZS5wYWdlLnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExhbmd1YWdlUGFnZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHB1YmxpYyBsYW5ndWFnZSA9ICcnO1xyXG4gIHB1YmxpYyBjdXJyZW50TGFuZ3VhZ2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0cmFuc2xhdGVTZXJ2aWNlIDogVHJhbnNsYXRlU2VydmljZSwgcHVibGljIHBvcHVwOiBQb3BvdmVyQ29udHJvbGxlcikgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKTtcclxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS51c2UodGhpcy5jdXJyZW50TGFuZ3VhZ2UpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlTGFuZ3VhZ2UobGFuZykge1xyXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZShsYW5nKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYW5ndWFnZScsIGxhbmcpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKXtcclxuICAgIHRoaXMucG9wdXAuZGlzbWlzcyhudWxsKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxpb24taGVhZGVyPlxyXG4gIDxpb24tdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XHJcbiAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjbG9zZSgpXCI+XHJcbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY2xvc2VcIj48L2lvbi1pY29uPlxyXG4gICAgICA8L2lvbi1idXR0b24+XHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG4gICAgPGlvbi10aXRsZT48YXBwLW1zZyBrZXk9XCJsYW5ndWFnZS50aXRsZVwiPjwvYXBwLW1zZz48L2lvbi10aXRsZT5cclxuICA8L2lvbi10b29sYmFyPlxyXG48L2lvbi1oZWFkZXI+XHJcblxyXG48aW9uLWNvbnRlbnQ+XHJcbiAgPGlvbi1saXN0IGxpbmVzPVwibm9uZVwiPlxyXG4gICAgPGlvbi1yYWRpby1ncm91cCBbKG5nTW9kZWwpXT1cImxhbmd1YWdlXCIgPlxyXG4gICAgICA8aW9uLWxpc3QtaGVhZGVyPlxyXG4gICAgICAgIDxpb24tbGFiZWw+PGFwcC1tc2cga2V5PVwibGFuZ3VhZ2UuaGVhZGluZ1wiPjwvYXBwLW1zZz48L2lvbi1sYWJlbD5cclxuICAgICAgPC9pb24tbGlzdC1oZWFkZXI+XHJcbiAgICAgIDxpb24taXRlbSAoY2xpY2spPVwiY2hhbmdlTGFuZ3VhZ2UoJ2VuJylcIj5cclxuICAgICAgICA8aW9uLWxhYmVsPkVuZ2xpc2g8L2lvbi1sYWJlbD5cclxuICAgICAgICA8aW9uLXJhZGlvIHNsb3Q9XCJzdGFydFwiIHZhbHVlPVwiZW5cIj48L2lvbi1yYWRpbz5cclxuICAgICAgPC9pb24taXRlbT5cclxuICBcclxuICAgICAgPGlvbi1pdGVtIChjbGljayk9XCJjaGFuZ2VMYW5ndWFnZSgnZXMnKVwiPlxyXG4gICAgICAgIDxpb24tbGFiZWw+RXNwYcOxb2w8L2lvbi1sYWJlbD5cclxuICAgICAgICA8aW9uLXJhZGlvIHNsb3Q9XCJzdGFydFwiIHZhbHVlPVwiZXNcIj48L2lvbi1yYWRpbz5cclxuICAgICAgPC9pb24taXRlbT5cclxuICAgIDwvaW9uLXJhZGlvLWdyb3VwPlxyXG4gIDwvaW9uLWxpc3Q+XHJcbjwvaW9uLWNvbnRlbnQ+XHJcbiJdfQ==
|
|
@@ -23,7 +23,7 @@ export class DynamicTranslatePipe {
|
|
|
23
23
|
param = args;
|
|
24
24
|
dynamicObj[param.key] = param.value;
|
|
25
25
|
}
|
|
26
|
-
this.translate.use(
|
|
26
|
+
this.translate.use(localStorage.getItem("language"));
|
|
27
27
|
let translatedString = "";
|
|
28
28
|
this.translate.set(key, key);
|
|
29
29
|
translatedString = this.translate.instant(key, Object.assign(dynamicObj));
|
|
@@ -41,4 +41,4 @@ export class DynamicTranslatePipe {
|
|
|
41
41
|
name: 'dynamicTranslate'
|
|
42
42
|
}]
|
|
43
43
|
}], () => [{ type: i1.TranslateService }], null); })();
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10cmFuc2xhdGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvcGlwZXMvdHJhbnNsYXRlL2R5bmFtaWMtdHJhbnNsYXRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQU9wRCxNQUFNLE9BQU8sb0JBQW9CO0lBRS9CLFlBQW9CLFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzdDLCtEQUErRDtJQUNqRSxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVcsRUFBRSxJQUFJO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPLEdBQUcsQ0FBQztTQUNaO1FBRUQsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBRXBCLElBQUksS0FBb0IsQ0FBQztRQUN6QixJQUFJLE1BQXVCLENBQUM7UUFFNUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3ZCLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDZCxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNuQixVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNiLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztTQUNyQztRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNyRCxJQUFJLGdCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FDaEIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1osZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQ3ZDLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFbEMsSUFBRyxnQkFBZ0IsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxFQUFDO1lBQzlELGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDdEU7UUFDRCxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7cUZBckNVLG9CQUFvQjswRkFBcEIsb0JBQW9COztpRkFBcEIsb0JBQW9CO2NBSGhDLElBQUk7ZUFBQztnQkFDSixJQUFJLEVBQUUsa0JBQWtCO2FBQ3pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEtleVZhbHVlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9LZXlWYWx1ZU1vZGVsJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnZHluYW1pY1RyYW5zbGF0ZSdcclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNUcmFuc2xhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKXtcclxuICAgIC8vY29uc29sZS5sb2coJ0R5bmFtaWNUcmFuc2xhdGVQaXBlIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseScpO1xyXG4gIH1cclxuXHJcbiAgdHJhbnNmb3JtKGtleTogc3RyaW5nLCBhcmdzKTogdW5rbm93biB7XHJcbiAgICBpZiAoIWFyZ3MpIHtcclxuICAgICAgcmV0dXJuIGtleTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZHluYW1pY09iaiA9IHt9O1xyXG5cclxuICAgIGxldCBwYXJhbTogS2V5VmFsdWVNb2RlbDtcclxuICAgIGxldCBwYXJhbXM6IEtleVZhbHVlTW9kZWxbXTtcclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhcmdzKSkge1xyXG4gICAgICBwYXJhbXMgPSBhcmdzO1xyXG4gICAgICBwYXJhbXMuZm9yRWFjaChwcm0gPT4ge1xyXG4gICAgICAgIGR5bmFtaWNPYmpbcHJtLmtleV0gPSBwcm0udmFsdWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcGFyYW0gPSBhcmdzO1xyXG4gICAgICBkeW5hbWljT2JqW3BhcmFtLmtleV0gPSBwYXJhbS52YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0ZS51c2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSk7XHJcbiAgICBsZXQgdHJhbnNsYXRlZFN0cmluZzogU3RyaW5nID0gXCJcIjtcclxuICAgIHRoaXMudHJhbnNsYXRlLnNldChcclxuICAgICAga2V5LCBrZXkpO1xyXG4gICAgdHJhbnNsYXRlZFN0cmluZyA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgIGtleSwgT2JqZWN0LmFzc2lnbihkeW5hbWljT2JqKSk7XHJcbiAgICBcclxuICAgIGlmKHRyYW5zbGF0ZWRTdHJpbmcgJiYgdHJhbnNsYXRlZFN0cmluZy5pbmNsdWRlcygne3snKSAmJiBwYXJhbSl7XHJcbiAgICAgIHRyYW5zbGF0ZWRTdHJpbmcgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGtleSwgT2JqZWN0LmFzc2lnbihwYXJhbSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRyYW5zbGF0ZWRTdHJpbmc7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -215,14 +215,14 @@ export class AppValidators {
|
|
|
215
215
|
};
|
|
216
216
|
}
|
|
217
217
|
/**
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
218
|
+
*
|
|
219
|
+
* @param weekstart and weekEnd date
|
|
220
|
+
* @param error earningsRequired error which should be returned in case validation fails
|
|
221
|
+
*
|
|
222
|
+
* @description Form validator to validate earnings and hours worked is avalible if ldw falls within the week of filling
|
|
223
|
+
*
|
|
224
|
+
* @author Steevan Macwan
|
|
225
|
+
*/
|
|
226
226
|
static requireEarningsIfWorked(sunDate, satDate) {
|
|
227
227
|
return (group) => {
|
|
228
228
|
const lastDayWorked = group.get('lastDayWorked')?.value;
|
|
@@ -250,4 +250,4 @@ export class AppValidators {
|
|
|
250
250
|
};
|
|
251
251
|
}
|
|
252
252
|
}
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwVmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvdmFsaWRhdGlvbnMvQXBwVmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFDeEI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBa0I7UUFDdEMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxTQUFTLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQzFELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEVBQUMsY0FBYyxFQUFFLElBQUksRUFBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBa0I7UUFDaEQsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSyxFQUFFO1lBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLFNBQTJCO1FBQ3BFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RCxNQUFNLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwRSxPQUFPLFFBQVEsS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxRSxDQUFDO0lBRUQsV0FBVztJQUNYLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFtQixFQUFFLG1CQUEyQjtRQUN0RSxNQUFNLElBQUksR0FBRyxDQUFDLFNBQTJCLEVBQUUsRUFBRTtZQUMzQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hELE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNoRSxJQUFJLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFO2dCQUN4RSxPQUFPO2FBQ1I7WUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssZUFBZSxDQUFDLEtBQUssRUFBRTtnQkFDM0MsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQy9DO2lCQUFNO2dCQUNMLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakM7UUFDSCxDQUFDLENBQUE7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXO0lBQ1gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQXNCO1FBQzVDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBdUIsRUFBMkIsRUFBRTtZQUNoRSxNQUFNLDZCQUE2QixHQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RJLE9BQU8sNkJBQTZCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMzRSxDQUFDLENBQUE7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXO0lBQ1gsTUFBTSxDQUFDLCtCQUErQixDQUFDLGNBQXNCLENBQUMsRUFBRSxJQUFhO1FBQzNFLE9BQU8sU0FBUyxRQUFRLENBQUMsU0FBb0I7WUFDM0MsSUFBSSxpQkFBaUIsR0FBRyxDQUFDLENBQUE7WUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUM1QyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUN2QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQ3hELElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtvQkFDYixpQkFBaUIsRUFBRSxDQUFBO2lCQUNwQjtZQUNILENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxpQkFBaUIsR0FBRyxXQUFXLEVBQUU7Z0JBQ25DLE9BQU87b0JBQ0wsMEJBQTBCLEVBQUUsSUFBSTtpQkFDakMsQ0FBQTthQUNGO1lBQ0QsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDLENBQUE7SUFDSCxDQUFDO0lBQ0QsV0FBVztJQUNYLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTO1FBQ2xDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNyQixJQUFJO2dCQUNGLElBQUksQ0FBQyxXQUFXLEVBQUU7b0JBQ2hCLE9BQU8sSUFBSSxDQUFDO2lCQUNiO2dCQUNELElBQUksU0FBUyxFQUFFLEVBQUU7b0JBQ2YsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztvQkFDOUIsNkNBQTZDO29CQUM3QyxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFDO3FCQUNqQztpQkFDRjtnQkFDRCxPQUFPLElBQUksQ0FBQzthQUNiO1lBQ0QsT0FBTSxDQUFDLEVBQUM7Z0JBQ1AsT0FBTyxJQUFJLENBQUM7YUFDWjtRQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBYSxFQUFFLEtBQXVCO1FBQ2xELE1BQU0sSUFBSSxHQUFHLENBQUMsT0FBd0IsRUFBMEIsRUFBRTtZQUNoRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtnQkFDbEIsc0NBQXNDO2dCQUN0QyxPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsNERBQTREO1lBQzVELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLHdGQUF3RjtZQUN4RixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDOUIsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUM7Ozs7OztNQU1FO0lBQ0osTUFBTSxDQUFDLG9CQUFvQixDQUFDLE9BQXdCO1FBQ2xELElBQUksYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDbEMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEQsSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9HLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFL0csR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLEdBQUcsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBRWYsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ2YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxDQUFDO1NBQzFDO1FBQ0QsT0FBTztJQUNULENBQUM7SUFHRCxNQUFNLENBQUMsMEJBQTBCLENBQUMsT0FBd0I7UUFDeEQsUUFBUSxDQUFDO1FBQ1YsSUFBRyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUFDO1lBQ3JELE9BQU8sRUFBQyxvQkFBb0IsRUFBRyxJQUFJLEVBQUMsQ0FBQztTQUN0QztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQXdCO1FBQzVDLElBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBQztZQUNqRSxPQUFPLEVBQUMsYUFBYSxFQUFHLElBQUksRUFBQyxDQUFDO1NBQy9CO2FBQUssSUFBRyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsRUFBQztZQUN6RixZQUFZO1NBQ2I7YUFBSTtZQUNILE9BQU8sRUFBQyxhQUFhLEVBQUcsSUFBSSxFQUFDLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLE9BQXdCO1FBQ3BELElBQUcsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBQztZQUMvQyxPQUFPLEVBQUMsY0FBYyxFQUFHLElBQUksRUFBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsTUFBTTtRQUMzQixJQUFJLEdBQUcsR0FBRyxzRUFBc0UsQ0FBQztRQUNqRixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTTtRQUNwQixJQUFJLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBVyxFQUFFLEVBQVE7UUFDcEMsT0FBTyxDQUFDLE9BQXdCLEVBQTBCLEVBQUU7WUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7Z0JBQ2xCLHNDQUFzQztnQkFDdEMsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDM0IsSUFBRyxNQUFNLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUM7Z0JBQ3RFLE9BQU8sRUFBQyxjQUFjLEVBQUcsSUFBSSxFQUFDLENBQUM7YUFDaEM7UUFDSCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQkFBMkIsRUFBRSxLQUF1QjtRQUMvRCxPQUFPLENBQUMsT0FBd0IsRUFBMEIsRUFBRTtZQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtnQkFDbkIsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELElBQUksZUFBZSxHQUFvQixPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQy9FLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRTtnQkFDNUMsc0NBQXNDO2dCQUN0QyxPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUV4RCx3RkFBd0Y7WUFDeEYsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzlCLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsbUJBQTJCLEVBQUUsS0FBdUI7UUFDbEUsT0FBTyxDQUFDLE9BQXdCLEVBQTBCLEVBQUU7WUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQ25CLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxJQUFJLGVBQWUsR0FBb0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUMvRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUU7Z0JBQzVDLHNDQUFzQztnQkFDdEMsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFeEQsd0ZBQXdGO1lBQ3hGLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM5QixDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxNQUFNLENBQUMsdUJBQXVCLENBQUMsT0FBYSxFQUFFLE9BQWE7UUFDekQsT0FBTyxDQUFDLEtBQWdCLEVBQTJCLEVBQUU7WUFDbkQsTUFBTSxhQUFhLEdBQVMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDOUQsTUFBTSxZQUFZLEdBQVcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDOUQsTUFBTSxXQUFXLEdBQVcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssQ0FBQztZQUVsRSxtQ0FBbUM7WUFDbkMsSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDbEIsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELE1BQU0sT0FBTyxHQUFHLGFBQWEsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFeEYsK0NBQStDO1lBQy9DLElBQUksT0FBTyxJQUFJLE9BQU8sSUFBSSxPQUFPLElBQUksT0FBTyxFQUFFO2dCQUM1QyxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksS0FBSyxDQUFDLEVBQUU7b0JBQ3ZDLEtBQUssQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztpQkFDbEU7Z0JBQ0QsSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLEtBQUssQ0FBQyxFQUFFO29CQUNyQyxLQUFLLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztpQkFDdkU7Z0JBRUQsbUVBQW1FO2dCQUNuRSxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksV0FBVyxLQUFLLENBQUMsRUFBRTtvQkFDNUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDO2lCQUNuQzthQUNGO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG4vKioqXHJcbiAqIFxyXG4gKiBAZGVzY3JpcHRpb24gQ2xhc3MgQ29udGFpbnMgYWxsIGNvbW1vbiBmb3JtIHZhbGlkYXRpb24gdXNlZCBpbiB0aGUgcHJvamVjdC5cclxuICogQGF1dGhvciBQcmVyYWsgVGl3YXJpXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQXBwVmFsaWRhdG9ycyB7XHJcbiAgLyoqXHJcbiAgICogY2hlY2tzIGlmIHN0YXRlIGZpZWxkIGhhcyBhIHZhbHVlIG90aGVyIHRoYW4gS1NcclxuICAgKiBAcGFyYW0gYyBjb250cm9sXHJcbiAgICogQHJldHVybnMge3JlcXVpcmVkS2Fuc2FzOiBib29sZWFufVxyXG4gICAqL1xyXG4gIHN0YXRpYyByZXF1aXJlZEthbnNhcyhjOiBBYnN0cmFjdENvbnRyb2wpOiB7cmVxdWlyZWRLYW5zYXM6IGJvb2xlYW59IHtcclxuICAgIGlmIChjLnZhbHVlPy52YWx1ZSA9PSB1bmRlZmluZWQgfHwgYy52YWx1ZT8udmFsdWUgPT09ICdLUycpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge3JlcXVpcmVkS2Fuc2FzOiB0cnVlfTtcclxuICB9XHJcbiAgc3RhdGljIGNvbmZpcm1QYXNzd29yZFZhbGlkYXRvcihjOiBBYnN0cmFjdENvbnRyb2wpOiB7IGludmFsaWQ6IGJvb2xlYW4gfSB7XHJcbiAgICBpZiAoYy5nZXQoJ3Bhc3N3b3JkJykudmFsdWUgIT0gYy5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB7IGludmFsaWQ6IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBwYXNzd29yZEFuZENvbmZpcm1QYXNzd29yZE11c3RNYXRjaChmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApIHtcclxuICAgIGNvbnN0IHsgdmFsdWU6IHBhc3N3b3JkIH0gPSBmb3JtR3JvdXAuZ2V0KCdwYXNzd29yZCcpO1xyXG4gICAgY29uc3QgeyB2YWx1ZTogY29uZmlybVBhc3N3b3JkIH0gPSBmb3JtR3JvdXAuZ2V0KCdjb25maXJtUGFzc3dvcmQnKTtcclxuICAgIHJldHVybiBwYXNzd29yZCA9PT0gY29uZmlybVBhc3N3b3JkID8gbnVsbCA6IHsgcGFzc3dvcmROb3RNYXRjaDogdHJ1ZSB9O1xyXG4gIH1cclxuXHJcbiAgLy8gQGR5bmFtaWNcclxuICBzdGF0aWMgY29uZmlybVZhbGlkYXRvcihjb250cm9sTmFtZTogc3RyaW5nLCBtYXRjaGluZ0NvbnRyb2xOYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGZ1bmMgPSAoZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbY29udHJvbE5hbWVdO1xyXG4gICAgICBjb25zdCBtYXRjaGluZ0NvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbbWF0Y2hpbmdDb250cm9sTmFtZV07XHJcbiAgICAgIGlmIChtYXRjaGluZ0NvbnRyb2wuZXJyb3JzICYmICFtYXRjaGluZ0NvbnRyb2wuZXJyb3JzLmNvbmZpcm1lZFZhbGlkYXRvcikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29udHJvbC52YWx1ZSAhPT0gbWF0Y2hpbmdDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgbWF0Y2hpbmdDb250cm9sLnNldEVycm9ycyh7IG5vdE1hdGNoOiB0cnVlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1hdGNoaW5nQ29udHJvbC5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmdW5jO1xyXG4gIH1cclxuICBcclxuICAvLyBAZHluYW1pY1xyXG4gIHN0YXRpYyBzZWxlY3RBdGxlYXN0T25lKHZhbGlkYXRvcjogVmFsaWRhdG9yRm4pIHtcclxuICAgIGNvbnN0IGZ1bmMgPSAoZ3JvdXA6IFVudHlwZWRGb3JtR3JvdXApOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGNvbnN0IGlzQXRsZWFzdE9uZVBhc3NUaGVWYWxpZGF0aW9uID0gZ3JvdXAgJiYgZ3JvdXAuY29udHJvbHMgJiYgT2JqZWN0LmtleXMoZ3JvdXAuY29udHJvbHMpLnNvbWUoayA9PiAhdmFsaWRhdG9yKGdyb3VwLmNvbnRyb2xzW2tdKSk7XHJcbiAgICAgIHJldHVybiBpc0F0bGVhc3RPbmVQYXNzVGhlVmFsaWRhdGlvbiA/IG51bGwgOiB7IHNlbGVjdEF0bGVhc3RPbmU6IHRydWUgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBmdW5jO1xyXG4gIH1cclxuXHJcbiAgLy8gQGR5bmFtaWNcclxuICBzdGF0aWMgYXRMZWFzdE9uZU5vblplcm9WYWx1ZVZhbGlkYXRvcihtaW5SZXF1aXJlZDogbnVtYmVyID0gMSwgbmFtZT86IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiB2YWxpZGF0ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCkge1xyXG4gICAgICBsZXQgbm9PZk5vblplcm9WYWx1ZXMgPSAwXHJcbiAgICAgIE9iamVjdC5rZXlzKGZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNba2V5XVxyXG4gICAgICAgIGxldCB2YWx1ZSA9IG5hbWUgPyAgY29udHJvbC52YWx1ZVtuYW1lXSA6IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgaWYgKHZhbHVlID4gMCkge1xyXG4gICAgICAgICAgbm9PZk5vblplcm9WYWx1ZXMrK1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgaWYgKG5vT2ZOb25aZXJvVmFsdWVzIDwgbWluUmVxdWlyZWQpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgcmVxdWlyZUNoZWNrYm94VG9CZUNoZWNrZWQ6IHRydWUsXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIEBkeW5hbWljXHJcbiAgc3RhdGljIHJlcXVpcmVkSWZWYWxpZGF0b3IocHJlZGljYXRlKSB7XHJcbiAgICByZXR1cm4gKGZvcm1Db250cm9sKSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgaWYgKCFmb3JtQ29udHJvbCkge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwcmVkaWNhdGUoKSkge1xyXG4gICAgICAgICAgY29uc3QgdmFsID0gZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAvLyBDaGVjayBmb3IgbnVsbCwgdW5kZWZpbmVkLCBvciBlbXB0eSBzdHJpbmdcclxuICAgICAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSAnJykge1xyXG4gICAgICAgICAgICByZXR1cm4geyByZXF1aXJlZDogJ3JlcXVpcmVkJyB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBjYXRjaChlKXtcclxuICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHJlZ2V4IFJlZ3VsYXIgRXhwcmVzc2lvbiBhZ2FpbnN0IHdoaWNoIHZhbHVlIG5lZWRzIHRvIGJlIHZhbGlkYXRlZFxyXG4gICAqIEBwYXJhbSBlcnJvciBFcnJvciB3aGljaCBzaG91bGQgYmUgcmV0dXJuZWQgaW4gY2FzZSB2YWxpZGF0aW9uIGZhaWxzXHJcbiAgICogXHJcbiAgICogQGRlc2NyaXB0aW9uIEZvcm0gdmFsaWRhdG9yIHRvIHZhbGlkYXRlIGNvbnRyb2wgdmFsdWUgYWdhaW5zdCBhIHJlZ3VsYXIgZXhwcmVzc2lvblxyXG4gICAqIFxyXG4gICAqIEBhdXRob3IgUHJlcmFrIFRpd2FyaVxyXG4gICAqL1xyXG4gICBzdGF0aWMgbWF0Y2gocmVnZXg6IFJlZ0V4cCwgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICBjb25zdCBmdW5jID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPT4ge1xyXG4gICAgICBpZiAoIWNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICAvLyBpZiBjb250cm9sIGlzIGVtcHR5IHJldHVybiBubyBlcnJvclxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyB0ZXN0IHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbCBhZ2FpbnN0IHRoZSByZWdleHAgc3VwcGxpZWRcclxuICAgICAgY29uc3QgdmFsaWQgPSByZWdleC50ZXN0KGNvbnRyb2wudmFsdWUpO1xyXG4gICAgICAvLyBpZiB0cnVlLCByZXR1cm4gbm8gZXJyb3IgKG5vIGVycm9yKSwgZWxzZSByZXR1cm4gZXJyb3IgcGFzc2VkIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyXHJcbiAgICAgIHJldHVybiB2YWxpZCA/IG51bGwgOiBlcnJvcjtcclxuICAgIH07XHJcbiAgICByZXR1cm4gZnVuYztcclxuICB9XHJcblxyXG4gICAgLyoqKlxyXG4gICAgKiBUaGlzIG1ldGhvZCBjaGVja3MgaWYgdGhlIGVudGVyZWQgcm91dGluZyBudW1iZXIgaXMgdmFsaWQgb3Igbm90IGFzIHBlciBmb2xsb3dpbmcgbG9naWNcclxuICAgICogXHJcbiAgICAqICgzICogKGQxICsgZDQgKyBkNykgKyA3ICogKGQyICsgZDUgKyBkOCkgKyAxICogKGQzICsgZDYgKyBkOSkgKSBtb2QgMTAgPSAwXHJcbiAgICAqIFxyXG4gICAgKiAgVGhpcyBmb3JtdWxhIGlzIHRha2VuIGZyb20gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm91dGluZ190cmFuc2l0X251bWJlciNNSUNSX1JvdXRpbmdfbnVtYmVyX2Zvcm1hdFxyXG4gICAgKi9cclxuICBzdGF0aWMgaXNWYWxpZFJvdXRpbmdOdW1iZXIoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIGxldCByb3V0aW5nTnVtYmVyID0gY29udHJvbC52YWx1ZTtcclxuICAgIGxldCBzdW0gPSAwLCBtb2QgPSAwO1xyXG4gICAgbGV0IHJvdXRpbmdOdW1iZXJBcnIgPSAocm91dGluZ051bWJlciArIFwiXCIpLnNwbGl0KFwiXCIpO1xyXG4gICAgbGV0IHN1bTEgPSAzICogKHBhcnNlSW50KHJvdXRpbmdOdW1iZXJBcnJbMF0pICsgcGFyc2VJbnQocm91dGluZ051bWJlckFyclszXSkgKyBwYXJzZUludChyb3V0aW5nTnVtYmVyQXJyWzZdKSk7XHJcbiAgICBsZXQgc3VtMiA9IDcgKiAocGFyc2VJbnQocm91dGluZ051bWJlckFyclsxXSkgKyBwYXJzZUludChyb3V0aW5nTnVtYmVyQXJyWzRdKSArIHBhcnNlSW50KHJvdXRpbmdOdW1iZXJBcnJbN10pKTtcclxuICAgIGxldCBzdW0zID0gMSAqIChwYXJzZUludChyb3V0aW5nTnVtYmVyQXJyWzJdKSArIHBhcnNlSW50KHJvdXRpbmdOdW1iZXJBcnJbNV0pICsgcGFyc2VJbnQocm91dGluZ051bWJlckFycls4XSkpO1xyXG5cclxuICAgIHN1bSA9IHN1bTEgKyBzdW0yICsgc3VtMztcclxuICAgIG1vZCA9IHN1bSAlIDEwO1xyXG5cclxuICAgIGlmICghKG1vZCA9PSAwKSkge1xyXG4gICAgICByZXR1cm4geyBpc1JvdXRpbmdOdW1iZXJOb3RWYWxpZDogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgXHJcbiAgc3RhdGljIGlzVmFsaWRMZW5ndGhSb3V0aW5nTnVtYmVyKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfXtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICBpZihjb250cm9sLnZhbHVlICE9IG51bGwgJiYgKGNvbnRyb2wudmFsdWUubGVuZ3RoICE9IDkpKXtcclxuICAgICAgcmV0dXJuIHtpbnZhbGlkTGVuZ3RoUm91dGluZyA6IHRydWV9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzVmFsaWRaaXBDb2RlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfXtcclxuICAgIGlmKGNvbnRyb2wudmFsdWUgIT0gbnVsbCAmJiAhQXBwVmFsaWRhdG9ycy5pc051bWJlcihjb250cm9sLnZhbHVlKSl7XHJcbiAgICAgIHJldHVybiB7aW52YWxpZE51bWJlciA6IHRydWV9O1xyXG4gICAgfWVsc2UgaWYoY29udHJvbC52YWx1ZSAhPSBudWxsICYmIChjb250cm9sLnZhbHVlLmxlbmd0aCA9PSA1IHx8IGNvbnRyb2wudmFsdWUubGVuZ3RoID09IDkpKXtcclxuICAgICAgLy9kbyBub3RoaW5nXHJcbiAgICB9ZWxzZXtcclxuICAgICAgcmV0dXJuIHtpbnZhbGlkTGVuZ3RoIDogdHJ1ZX07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNWYWxpZENhbmFkaWFuWmlwQ29kZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgaWYoIUFwcFZhbGlkYXRvcnMuaXNDYW5hZGFaaXBDb2RlKGNvbnRyb2wudmFsdWUpKXtcclxuICAgICAgcmV0dXJuIHtpbnZhbGlkWmlwQ29kZSA6IHRydWV9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzQ2FuYWRhWmlwQ29kZShzdHJpbmcpIHtcclxuICAgIHZhciByZWcgPSAvXltBQkNFR0hKLU5QUlNUVlhZXVxcZFtBQkNFR0hKLU5QUlNUVi1aXVsgLV0/XFxkW0FCQ0VHSEotTlBSU1RWLVpdXFxkJC9pO1xyXG4gICAgcmV0dXJuIHJlZy50ZXN0KHN0cmluZyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNOdW1iZXIobnVtYmVyKSB7XHJcbiAgICB2YXIgcmVnID0gbmV3IFJlZ0V4cChcIl5bMC05XSokXCIpOyBcclxuICAgIHJldHVybiByZWcudGVzdChudW1iZXIpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzQmV0d2Vlbihmcm9tIDogRGF0ZSwgdG86IERhdGUpIDogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgLy8gaWYgY29udHJvbCBpcyBlbXB0eSByZXR1cm4gbm8gZXJyb3JcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBsZXQgd3NEYXRlID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgaWYod3NEYXRlLmdldFRpbWUoKSA8IGZyb20uZ2V0VGltZSgpIHx8IHdzRGF0ZS5nZXRUaW1lKCkgPiB0by5nZXRUaW1lKCkpe1xyXG4gICAgICAgIHJldHVybiB7ZGF0ZU5vdEJldHdlZW4gOiB0cnVlfTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBlcXVhbChtYXRjaGluZ0NvbnRyb2xOYW1lOiBzdHJpbmcsIGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnBhcmVudCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBtYXRjaGluZ0NvbnRyb2w6IEFic3RyYWN0Q29udHJvbCA9IGNvbnRyb2wucGFyZW50LmdldChtYXRjaGluZ0NvbnRyb2xOYW1lKTtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlIHx8ICFtYXRjaGluZ0NvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICAvLyBpZiBjb250cm9sIGlzIGVtcHR5IHJldHVybiBubyBlcnJvclxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCB2YWxpZCA9IChjb250cm9sLnZhbHVlID09PSBtYXRjaGluZ0NvbnRyb2wudmFsdWUpO1xyXG5cclxuICAgICAgLy8gaWYgdHJ1ZSwgcmV0dXJuIG5vIGVycm9yIChubyBlcnJvciksIGVsc2UgcmV0dXJuIGVycm9yIHBhc3NlZCBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlclxyXG4gICAgICByZXR1cm4gdmFsaWQgPyBudWxsIDogZXJyb3I7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG1hdGNoaW5nQ29udHJvbE5hbWUgRm9ybSBjb250cm9sIG5hbWUgYWdhaW5zdCB3aGljaCBjdXJyZW50IGZvcm0gY29udHJvbCB2YWx1ZSBzaG91bGQgYmUgbWF0Y2hlZFxyXG4gICAqIEBwYXJhbSBlcnJvciBFcnJvciB3aGljaCBzaG91bGQgYmUgcmV0dXJuZWQgaW4gY2FzZSB2YWxpZGF0aW9uIGZhaWxzXHJcbiAgICogXHJcbiAgICogQGRlc2NyaXB0aW9uIEZvcm0gdmFsaWRhdG9yIHRvIHZhbGlkYXRlIGNvbnRyb2wgdmFsdWUgYWdhaW5zdCBhIG90aGVyIGNvbnRyb2wgdmFsdWVcclxuICAgKiBcclxuICAgKiBAYXV0aG9yIFByZXJhayBUaXdhcmlcclxuICAgKi9cclxuICBzdGF0aWMgbm90RXF1YWwobWF0Y2hpbmdDb250cm9sTmFtZTogc3RyaW5nLCBlcnJvcjogVmFsaWRhdGlvbkVycm9ycyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XHJcbiAgICAgIGlmICghY29udHJvbC5wYXJlbnQpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBsZXQgbWF0Y2hpbmdDb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSBjb250cm9sLnBhcmVudC5nZXQobWF0Y2hpbmdDb250cm9sTmFtZSk7XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSB8fCAhbWF0Y2hpbmdDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgLy8gaWYgY29udHJvbCBpcyBlbXB0eSByZXR1cm4gbm8gZXJyb3JcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgdmFsaWQgPSAoY29udHJvbC52YWx1ZSAhPT0gbWF0Y2hpbmdDb250cm9sLnZhbHVlKTtcclxuXHJcbiAgICAgIC8vIGlmIHRydWUsIHJldHVybiBubyBlcnJvciAobm8gZXJyb3IpLCBlbHNlIHJldHVybiBlcnJvciBwYXNzZWQgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXJcclxuICAgICAgcmV0dXJuIHZhbGlkID8gbnVsbCA6IGVycm9yO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB3ZWVrc3RhcnQgYW5kIHdlZWtFbmQgZGF0ZVxyXG4gICAqIEBwYXJhbSBlcnJvciBlYXJuaW5nc1JlcXVpcmVkIGVycm9yIHdoaWNoIHNob3VsZCBiZSByZXR1cm5lZCBpbiBjYXNlIHZhbGlkYXRpb24gZmFpbHNcclxuICAgKiBcclxuICAgKiBAZGVzY3JpcHRpb24gRm9ybSB2YWxpZGF0b3IgdG8gdmFsaWRhdGUgZWFybmluZ3MgYW5kIGhvdXJzIHdvcmtlZCBpcyBhdmFsaWJsZSBpZiBsZHcgZmFsbHMgd2l0aGluIHRoZSB3ZWVrIG9mIGZpbGxpbmdcclxuICAgKiBcclxuICAgKiBAYXV0aG9yIFN0ZWV2YW4gTWFjd2FuXHJcbiAgICovXHJcbiAgc3RhdGljIHJlcXVpcmVFYXJuaW5nc0lmV29ya2VkKHN1bkRhdGU6IERhdGUsIHNhdERhdGU6IERhdGUpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGdyb3VwOiBGb3JtR3JvdXApOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGNvbnN0IGxhc3REYXlXb3JrZWQ6IERhdGUgPSBncm91cC5nZXQoJ2xhc3REYXlXb3JrZWQnKT8udmFsdWU7XHJcbiAgICAgIGNvbnN0IGdyb3NzRWFybmluZzogbnVtYmVyID0gZ3JvdXAuZ2V0KCdncm9zc0Vhcm5pbmcnKT8udmFsdWU7XHJcbiAgICAgIGNvbnN0IGhvdXJzV29ya2VkOiBudW1iZXIgPSBncm91cC5nZXQoJ2hvdXJzV29ya2VkSW5XZWVrJyk/LnZhbHVlO1xyXG5cclxuICAgICAgLy8gU2tpcCBpZiBsYXN0RGF5V29ya2VkIGlzIG1pc3NpbmdcclxuICAgICAgaWYgKCFsYXN0RGF5V29ya2VkKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGxhc3REYXkgPSBsYXN0RGF5V29ya2VkIGluc3RhbmNlb2YgRGF0ZSA/IGxhc3REYXlXb3JrZWQgOiBuZXcgRGF0ZShsYXN0RGF5V29ya2VkKTtcclxuXHJcbiAgICAgIC8vIENoZWNrIGlmIGxhc3REYXlXb3JrZWQgZmFsbHMgd2l0aGluIHRoZSB3ZWVrXHJcbiAgICAgIGlmIChsYXN0RGF5ID49IHN1bkRhdGUgJiYgbGFzdERheSA8PSBzYXREYXRlKSB7XHJcbiAgICAgICAgaWYgKCFncm9zc0Vhcm5pbmcgfHwgZ3Jvc3NFYXJuaW5nID09PSAwKSB7XHJcbiAgICAgICAgICBncm91cC5nZXQoJ2dyb3NzRWFybmluZycpPy5zZXRFcnJvcnMoeyBlYXJuaW5nc1JlcXVpcmVkOiB0cnVlIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWhvdXJzV29ya2VkIHx8IGhvdXJzV29ya2VkID09PSAwKSB7XHJcbiAgICAgICAgICBncm91cC5nZXQoJ2hvdXJzV29ya2VkSW5XZWVrJyk/LnNldEVycm9ycyh7IGVhcm5pbmdzUmVxdWlyZWQ6IHRydWUgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiB3b3JrIHdhcyBwZXJmb3JtZWQgYnV0IGdyb3NzRWFybmluZyBvciBob3Vyc1dvcmtlZCBpcyBtaXNzaW5nXHJcbiAgICAgICAgaWYgKCFncm9zc0Vhcm5pbmcgfHwgZ3Jvc3NFYXJuaW5nID09PSAwIHx8ICFob3Vyc1dvcmtlZCB8fCBob3Vyc1dvcmtlZCA9PT0gMCkge1xyXG4gICAgICAgICAgcmV0dXJuIHsgZWFybmluZ3NSZXF1aXJlZDogdHJ1ZSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gIH1cclxufSJdfQ==
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwVmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvdmFsaWRhdGlvbnMvQXBwVmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFDeEI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBa0I7UUFDdEMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxTQUFTLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQzFELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEVBQUMsY0FBYyxFQUFFLElBQUksRUFBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBa0I7UUFDaEQsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSyxFQUFFO1lBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLFNBQTJCO1FBQ3BFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RCxNQUFNLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwRSxPQUFPLFFBQVEsS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxRSxDQUFD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QixDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztpQkFDdkU7Z0JBRUQsbUVBQW1FO2dCQUNuRSxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksV0FBVyxLQUFLLENBQUMsRUFBRTtvQkFDNUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDO2lCQUNuQzthQUNGO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG4vKioqXHJcbiAqIFxyXG4gKiBAZGVzY3JpcHRpb24gQ2xhc3MgQ29udGFpbnMgYWxsIGNvbW1vbiBmb3JtIHZhbGlkYXRpb24gdXNlZCBpbiB0aGUgcHJvamVjdC5cclxuICogQGF1dGhvciBQcmVyYWsgVGl3YXJpXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQXBwVmFsaWRhdG9ycyB7XHJcbiAgLyoqXHJcbiAgICogY2hlY2tzIGlmIHN0YXRlIGZpZWxkIGhhcyBhIHZhbHVlIG90aGVyIHRoYW4gS1NcclxuICAgKiBAcGFyYW0gYyBjb250cm9sXHJcbiAgICogQHJldHVybnMge3JlcXVpcmVkS2Fuc2FzOiBib29sZWFufVxyXG4gICAqL1xyXG4gIHN0YXRpYyByZXF1aXJlZEthbnNhcyhjOiBBYnN0cmFjdENvbnRyb2wpOiB7cmVxdWlyZWRLYW5zYXM6IGJvb2xlYW59IHtcclxuICAgIGlmIChjLnZhbHVlPy52YWx1ZSA9PSB1bmRlZmluZWQgfHwgYy52YWx1ZT8udmFsdWUgPT09ICdLUycpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge3JlcXVpcmVkS2Fuc2FzOiB0cnVlfTtcclxuICB9XHJcbiAgc3RhdGljIGNvbmZpcm1QYXNzd29yZFZhbGlkYXRvcihjOiBBYnN0cmFjdENvbnRyb2wpOiB7IGludmFsaWQ6IGJvb2xlYW4gfSB7XHJcbiAgICBpZiAoYy5nZXQoJ3Bhc3N3b3JkJykudmFsdWUgIT0gYy5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB7IGludmFsaWQ6IHRydWUgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBwYXNzd29yZEFuZENvbmZpcm1QYXNzd29yZE11c3RNYXRjaChmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApIHtcclxuICAgIGNvbnN0IHsgdmFsdWU6IHBhc3N3b3JkIH0gPSBmb3JtR3JvdXAuZ2V0KCdwYXNzd29yZCcpO1xyXG4gICAgY29uc3QgeyB2YWx1ZTogY29uZmlybVBhc3N3b3JkIH0gPSBmb3JtR3JvdXAuZ2V0KCdjb25maXJtUGFzc3dvcmQnKTtcclxuICAgIHJldHVybiBwYXNzd29yZCA9PT0gY29uZmlybVBhc3N3b3JkID8gbnVsbCA6IHsgcGFzc3dvcmROb3RNYXRjaDogdHJ1ZSB9O1xyXG4gIH1cclxuXHJcbiAgLy8gQGR5bmFtaWNcclxuICBzdGF0aWMgY29uZmlybVZhbGlkYXRvcihjb250cm9sTmFtZTogc3RyaW5nLCBtYXRjaGluZ0NvbnRyb2xOYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGZ1bmMgPSAoZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbY29udHJvbE5hbWVdO1xyXG4gICAgICBjb25zdCBtYXRjaGluZ0NvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbbWF0Y2hpbmdDb250cm9sTmFtZV07XHJcbiAgICAgIGlmIChtYXRjaGluZ0NvbnRyb2wuZXJyb3JzICYmICFtYXRjaGluZ0NvbnRyb2wuZXJyb3JzLmNvbmZpcm1lZFZhbGlkYXRvcikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29udHJvbC52YWx1ZSAhPT0gbWF0Y2hpbmdDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgbWF0Y2hpbmdDb250cm9sLnNldEVycm9ycyh7IG5vdE1hdGNoOiB0cnVlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1hdGNoaW5nQ29udHJvbC5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmdW5jO1xyXG4gIH1cclxuICBcclxuICAvLyBAZHluYW1pY1xyXG4gIHN0YXRpYyBzZWxlY3RBdGxlYXN0T25lKHZhbGlkYXRvcjogVmFsaWRhdG9yRm4pIHtcclxuICAgIGNvbnN0IGZ1bmMgPSAoZ3JvdXA6IFVudHlwZWRGb3JtR3JvdXApOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGNvbnN0IGlzQXRsZWFzdE9uZVBhc3NUaGVWYWxpZGF0aW9uID0gZ3JvdXAgJiYgZ3JvdXAuY29udHJvbHMgJiYgT2JqZWN0LmtleXMoZ3JvdXAuY29udHJvbHMpLnNvbWUoayA9PiAhdmFsaWRhdG9yKGdyb3VwLmNvbnRyb2xzW2tdKSk7XHJcbiAgICAgIHJldHVybiBpc0F0bGVhc3RPbmVQYXNzVGhlVmFsaWRhdGlvbiA/IG51bGwgOiB7IHNlbGVjdEF0bGVhc3RPbmU6IHRydWUgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBmdW5jO1xyXG4gIH1cclxuXHJcbiAgLy8gQGR5bmFtaWNcclxuICBzdGF0aWMgYXRMZWFzdE9uZU5vblplcm9WYWx1ZVZhbGlkYXRvcihtaW5SZXF1aXJlZDogbnVtYmVyID0gMSwgbmFtZT86IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiB2YWxpZGF0ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCkge1xyXG4gICAgICBsZXQgbm9PZk5vblplcm9WYWx1ZXMgPSAwXHJcbiAgICAgIE9iamVjdC5rZXlzKGZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNba2V5XVxyXG4gICAgICAgIGxldCB2YWx1ZSA9IG5hbWUgPyAgY29udHJvbC52YWx1ZVtuYW1lXSA6IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgaWYgKHZhbHVlID4gMCkge1xyXG4gICAgICAgICAgbm9PZk5vblplcm9WYWx1ZXMrK1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgaWYgKG5vT2ZOb25aZXJvVmFsdWVzIDwgbWluUmVxdWlyZWQpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgcmVxdWlyZUNoZWNrYm94VG9CZUNoZWNrZWQ6IHRydWUsXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIEBkeW5hbWljXHJcbiAgc3RhdGljIHJlcXVpcmVkSWZWYWxpZGF0b3IocHJlZGljYXRlKSB7XHJcbiAgICByZXR1cm4gKGZvcm1Db250cm9sKSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgaWYgKCFmb3JtQ29udHJvbCkge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwcmVkaWNhdGUoKSkge1xyXG4gICAgICAgICAgY29uc3QgdmFsID0gZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAvLyBDaGVjayBmb3IgbnVsbCwgdW5kZWZpbmVkLCBvciBlbXB0eSBzdHJpbmdcclxuICAgICAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSAnJykge1xyXG4gICAgICAgICAgICByZXR1cm4geyByZXF1aXJlZDogJ3JlcXVpcmVkJyB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBjYXRjaChlKXtcclxuICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHJlZ2V4IFJlZ3VsYXIgRXhwcmVzc2lvbiBhZ2FpbnN0IHdoaWNoIHZhbHVlIG5lZWRzIHRvIGJlIHZhbGlkYXRlZFxyXG4gICAqIEBwYXJhbSBlcnJvciBFcnJvciB3aGljaCBzaG91bGQgYmUgcmV0dXJuZWQgaW4gY2FzZSB2YWxpZGF0aW9uIGZhaWxzXHJcbiAgICogXHJcbiAgICogQGRlc2NyaXB0aW9uIEZvcm0gdmFsaWRhdG9yIHRvIHZhbGlkYXRlIGNvbnRyb2wgdmFsdWUgYWdhaW5zdCBhIHJlZ3VsYXIgZXhwcmVzc2lvblxyXG4gICAqIFxyXG4gICAqIEBhdXRob3IgUHJlcmFrIFRpd2FyaVxyXG4gICAqL1xyXG4gICBzdGF0aWMgbWF0Y2gocmVnZXg6IFJlZ0V4cCwgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICBjb25zdCBmdW5jID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPT4ge1xyXG4gICAgICBpZiAoIWNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICAvLyBpZiBjb250cm9sIGlzIGVtcHR5IHJldHVybiBubyBlcnJvclxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyB0ZXN0IHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbCBhZ2FpbnN0IHRoZSByZWdleHAgc3VwcGxpZWRcclxuICAgICAgY29uc3QgdmFsaWQgPSByZWdleC50ZXN0KGNvbnRyb2wudmFsdWUpO1xyXG4gICAgICAvLyBpZiB0cnVlLCByZXR1cm4gbm8gZXJyb3IgKG5vIGVycm9yKSwgZWxzZSByZXR1cm4gZXJyb3IgcGFzc2VkIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyXHJcbiAgICAgIHJldHVybiB2YWxpZCA/IG51bGwgOiBlcnJvcjtcclxuICAgIH07XHJcbiAgICByZXR1cm4gZnVuYztcclxuICB9XHJcblxyXG4gICAgLyoqKlxyXG4gICAgKiBUaGlzIG1ldGhvZCBjaGVja3MgaWYgdGhlIGVudGVyZWQgcm91dGluZyBudW1iZXIgaXMgdmFsaWQgb3Igbm90IGFzIHBlciBmb2xsb3dpbmcgbG9naWNcclxuICAgICogXHJcbiAgICAqICgzICogKGQxICsgZDQgKyBkNykgKyA3ICogKGQyICsgZDUgKyBkOCkgKyAxICogKGQzICsgZDYgKyBkOSkgKSBtb2QgMTAgPSAwXHJcbiAgICAqIFxyXG4gICAgKiAgVGhpcyBmb3JtdWxhIGlzIHRha2VuIGZyb20gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm91dGluZ190cmFuc2l0X251bWJlciNNSUNSX1JvdXRpbmdfbnVtYmVyX2Zvcm1hdFxyXG4gICAgKi9cclxuICBzdGF0aWMgaXNWYWxpZFJvdXRpbmdOdW1iZXIoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIGxldCByb3V0aW5nTnVtYmVyID0gY29udHJvbC52YWx1ZTtcclxuICAgIGxldCBzdW0gPSAwLCBtb2QgPSAwO1xyXG4gICAgbGV0IHJvdXRpbmdOdW1iZXJBcnIgPSAocm91dGluZ051bWJlciArIFwiXCIpLnNwbGl0KFwiXCIpO1xyXG4gICAgbGV0IHN1bTEgPSAzICogKHBhcnNlSW50KHJvdXRpbmdOdW1iZXJBcnJbMF0pICsgcGFyc2VJbnQocm91dGluZ051bWJlckFyclszXSkgKyBwYXJzZUludChyb3V0aW5nTnVtYmVyQXJyWzZdKSk7XHJcbiAgICBsZXQgc3VtMiA9IDcgKiAocGFyc2VJbnQocm91dGluZ051bWJlckFyclsxXSkgKyBwYXJzZUludChyb3V0aW5nTnVtYmVyQXJyWzRdKSArIHBhcnNlSW50KHJvdXRpbmdOdW1iZXJBcnJbN10pKTtcclxuICAgIGxldCBzdW0zID0gMSAqIChwYXJzZUludChyb3V0aW5nTnVtYmVyQXJyWzJdKSArIHBhcnNlSW50KHJvdXRpbmdOdW1iZXJBcnJbNV0pICsgcGFyc2VJbnQocm91dGluZ051bWJlckFycls4XSkpO1xyXG5cclxuICAgIHN1bSA9IHN1bTEgKyBzdW0yICsgc3VtMztcclxuICAgIG1vZCA9IHN1bSAlIDEwO1xyXG5cclxuICAgIGlmICghKG1vZCA9PSAwKSkge1xyXG4gICAgICByZXR1cm4geyBpc1JvdXRpbmdOdW1iZXJOb3RWYWxpZDogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgXHJcbiAgc3RhdGljIGlzVmFsaWRMZW5ndGhSb3V0aW5nTnVtYmVyKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfXtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICBpZihjb250cm9sLnZhbHVlICE9IG51bGwgJiYgKGNvbnRyb2wudmFsdWUubGVuZ3RoICE9IDkpKXtcclxuICAgICAgcmV0dXJuIHtpbnZhbGlkTGVuZ3RoUm91dGluZyA6IHRydWV9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzVmFsaWRaaXBDb2RlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfXtcclxuICAgIGlmKGNvbnRyb2wudmFsdWUgIT0gbnVsbCAmJiAhQXBwVmFsaWRhdG9ycy5pc051bWJlcihjb250cm9sLnZhbHVlKSl7XHJcbiAgICAgIHJldHVybiB7aW52YWxpZE51bWJlciA6IHRydWV9O1xyXG4gICAgfWVsc2UgaWYoY29udHJvbC52YWx1ZSAhPSBudWxsICYmIChjb250cm9sLnZhbHVlLmxlbmd0aCA9PSA1IHx8IGNvbnRyb2wudmFsdWUubGVuZ3RoID09IDkpKXtcclxuICAgICAgLy9kbyBub3RoaW5nXHJcbiAgICB9ZWxzZXtcclxuICAgICAgcmV0dXJuIHtpbnZhbGlkTGVuZ3RoIDogdHJ1ZX07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNWYWxpZENhbmFkaWFuWmlwQ29kZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgaWYoIUFwcFZhbGlkYXRvcnMuaXNDYW5hZGFaaXBDb2RlKGNvbnRyb2wudmFsdWUpKXtcclxuICAgICAgcmV0dXJuIHtpbnZhbGlkWmlwQ29kZSA6IHRydWV9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzQ2FuYWRhWmlwQ29kZShzdHJpbmcpIHtcclxuICAgIHZhciByZWcgPSAvXltBQkNFR0hKLU5QUlNUVlhZXVxcZFtBQkNFR0hKLU5QUlNUVi1aXVsgLV0/XFxkW0FCQ0VHSEotTlBSU1RWLVpdXFxkJC9pO1xyXG4gICAgcmV0dXJuIHJlZy50ZXN0KHN0cmluZyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNOdW1iZXIobnVtYmVyKSB7XHJcbiAgICB2YXIgcmVnID0gbmV3IFJlZ0V4cChcIl5bMC05XSokXCIpOyBcclxuICAgIHJldHVybiByZWcudGVzdChudW1iZXIpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzQmV0d2Vlbihmcm9tIDogRGF0ZSwgdG86IERhdGUpIDogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgLy8gaWYgY29udHJvbCBpcyBlbXB0eSByZXR1cm4gbm8gZXJyb3JcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBsZXQgd3NEYXRlID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgaWYod3NEYXRlLmdldFRpbWUoKSA8IGZyb20uZ2V0VGltZSgpIHx8IHdzRGF0ZS5nZXRUaW1lKCkgPiB0by5nZXRUaW1lKCkpe1xyXG4gICAgICAgIHJldHVybiB7ZGF0ZU5vdEJldHdlZW4gOiB0cnVlfTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBlcXVhbChtYXRjaGluZ0NvbnRyb2xOYW1lOiBzdHJpbmcsIGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnBhcmVudCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBtYXRjaGluZ0NvbnRyb2w6IEFic3RyYWN0Q29udHJvbCA9IGNvbnRyb2wucGFyZW50LmdldChtYXRjaGluZ0NvbnRyb2xOYW1lKTtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlIHx8ICFtYXRjaGluZ0NvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICAvLyBpZiBjb250cm9sIGlzIGVtcHR5IHJldHVybiBubyBlcnJvclxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCB2YWxpZCA9IChjb250cm9sLnZhbHVlID09PSBtYXRjaGluZ0NvbnRyb2wudmFsdWUpO1xyXG5cclxuICAgICAgLy8gaWYgdHJ1ZSwgcmV0dXJuIG5vIGVycm9yIChubyBlcnJvciksIGVsc2UgcmV0dXJuIGVycm9yIHBhc3NlZCBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlclxyXG4gICAgICByZXR1cm4gdmFsaWQgPyBudWxsIDogZXJyb3I7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG1hdGNoaW5nQ29udHJvbE5hbWUgRm9ybSBjb250cm9sIG5hbWUgYWdhaW5zdCB3aGljaCBjdXJyZW50IGZvcm0gY29udHJvbCB2YWx1ZSBzaG91bGQgYmUgbWF0Y2hlZFxyXG4gICAqIEBwYXJhbSBlcnJvciBFcnJvciB3aGljaCBzaG91bGQgYmUgcmV0dXJuZWQgaW4gY2FzZSB2YWxpZGF0aW9uIGZhaWxzXHJcbiAgICogXHJcbiAgICogQGRlc2NyaXB0aW9uIEZvcm0gdmFsaWRhdG9yIHRvIHZhbGlkYXRlIGNvbnRyb2wgdmFsdWUgYWdhaW5zdCBhIG90aGVyIGNvbnRyb2wgdmFsdWVcclxuICAgKiBcclxuICAgKiBAYXV0aG9yIFByZXJhayBUaXdhcmlcclxuICAgKi9cclxuICBzdGF0aWMgbm90RXF1YWwobWF0Y2hpbmdDb250cm9sTmFtZTogc3RyaW5nLCBlcnJvcjogVmFsaWRhdGlvbkVycm9ycyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XHJcbiAgICAgIGlmICghY29udHJvbC5wYXJlbnQpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBsZXQgbWF0Y2hpbmdDb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSBjb250cm9sLnBhcmVudC5nZXQobWF0Y2hpbmdDb250cm9sTmFtZSk7XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSB8fCAhbWF0Y2hpbmdDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgLy8gaWYgY29udHJvbCBpcyBlbXB0eSByZXR1cm4gbm8gZXJyb3JcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgdmFsaWQgPSAoY29udHJvbC52YWx1ZSAhPT0gbWF0Y2hpbmdDb250cm9sLnZhbHVlKTtcclxuXHJcbiAgICAgIC8vIGlmIHRydWUsIHJldHVybiBubyBlcnJvciAobm8gZXJyb3IpLCBlbHNlIHJldHVybiBlcnJvciBwYXNzZWQgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXJcclxuICAgICAgcmV0dXJuIHZhbGlkID8gbnVsbCA6IGVycm9yO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gd2Vla3N0YXJ0IGFuZCB3ZWVrRW5kIGRhdGVcclxuICAgKiBAcGFyYW0gZXJyb3IgZWFybmluZ3NSZXF1aXJlZCBlcnJvciB3aGljaCBzaG91bGQgYmUgcmV0dXJuZWQgaW4gY2FzZSB2YWxpZGF0aW9uIGZhaWxzXHJcbiAgICogXHJcbiAgICogQGRlc2NyaXB0aW9uIEZvcm0gdmFsaWRhdG9yIHRvIHZhbGlkYXRlIGVhcm5pbmdzIGFuZCBob3VycyB3b3JrZWQgaXMgYXZhbGlibGUgaWYgbGR3IGZhbGxzIHdpdGhpbiB0aGUgd2VlayBvZiBmaWxsaW5nXHJcbiAgICogXHJcbiAgICogQGF1dGhvciBTdGVldmFuIE1hY3dhblxyXG4gICAqL1xyXG4gICBzdGF0aWMgcmVxdWlyZUVhcm5pbmdzSWZXb3JrZWQoc3VuRGF0ZTogRGF0ZSwgc2F0RGF0ZTogRGF0ZSk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoZ3JvdXA6IEZvcm1Hcm91cCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgICAgY29uc3QgbGFzdERheVdvcmtlZDogRGF0ZSA9IGdyb3VwLmdldCgnbGFzdERheVdvcmtlZCcpPy52YWx1ZTtcclxuICAgICAgY29uc3QgZ3Jvc3NFYXJuaW5nOiBudW1iZXIgPSBncm91cC5nZXQoJ2dyb3NzRWFybmluZycpPy52YWx1ZTtcclxuICAgICAgY29uc3QgaG91cnNXb3JrZWQ6IG51bWJlciA9IGdyb3VwLmdldCgnaG91cnNXb3JrZWRJbldlZWsnKT8udmFsdWU7XHJcblxyXG4gICAgICAvLyBTa2lwIGlmIGxhc3REYXlXb3JrZWQgaXMgbWlzc2luZ1xyXG4gICAgICBpZiAoIWxhc3REYXlXb3JrZWQpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgbGFzdERheSA9IGxhc3REYXlXb3JrZWQgaW5zdGFuY2VvZiBEYXRlID8gbGFzdERheVdvcmtlZCA6IG5ldyBEYXRlKGxhc3REYXlXb3JrZWQpO1xyXG5cclxuICAgICAgLy8gQ2hlY2sgaWYgbGFzdERheVdvcmtlZCBmYWxscyB3aXRoaW4gdGhlIHdlZWtcclxuICAgICAgaWYgKGxhc3REYXkgPj0gc3VuRGF0ZSAmJiBsYXN0RGF5IDw9IHNhdERhdGUpIHtcclxuICAgICAgICBpZiAoIWdyb3NzRWFybmluZyB8fCBncm9zc0Vhcm5pbmcgPT09IDApIHtcclxuICAgICAgICAgIGdyb3VwLmdldCgnZ3Jvc3NFYXJuaW5nJyk/LnNldEVycm9ycyh7IGVhcm5pbmdzUmVxdWlyZWQ6IHRydWUgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaG91cnNXb3JrZWQgfHwgaG91cnNXb3JrZWQgPT09IDApIHtcclxuICAgICAgICAgIGdyb3VwLmdldCgnaG91cnNXb3JrZWRJbldlZWsnKT8uc2V0RXJyb3JzKHsgZWFybmluZ3NSZXF1aXJlZDogdHJ1ZSB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIElmIHdvcmsgd2FzIHBlcmZvcm1lZCBidXQgZ3Jvc3NFYXJuaW5nIG9yIGhvdXJzV29ya2VkIGlzIG1pc3NpbmdcclxuICAgICAgICBpZiAoIWdyb3NzRWFybmluZyB8fCBncm9zc0Vhcm5pbmcgPT09IDAgfHwgIWhvdXJzV29ya2VkIHx8IGhvdXJzV29ya2VkID09PSAwKSB7XHJcbiAgICAgICAgICByZXR1cm4geyBlYXJuaW5nc1JlcXVpcmVkOiB0cnVlIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG59Il19
|