@formio/angular 8.0.0-rc.6 → 8.0.0-rc.8

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.
Files changed (70) hide show
  1. package/esm2022/FormioBaseComponent.mjs +8 -8
  2. package/esm2022/auth/auth.component.mjs +3 -3
  3. package/esm2022/auth/auth.config.mjs +3 -3
  4. package/esm2022/auth/auth.module.mjs +4 -4
  5. package/esm2022/auth/auth.service.mjs +3 -3
  6. package/esm2022/auth/login/login.component.mjs +3 -3
  7. package/esm2022/auth/register/register.component.mjs +3 -3
  8. package/esm2022/auth/resetpass/resetpass.component.mjs +3 -3
  9. package/esm2022/components/alerts/formio.alerts.component.mjs +3 -3
  10. package/esm2022/components/alerts/parse-html-content.pipe.mjs +3 -3
  11. package/esm2022/components/formbuilder/formbuilder.component.mjs +3 -3
  12. package/esm2022/components/formio/formio.component.mjs +3 -3
  13. package/esm2022/components/formioreport/formioreport.component.mjs +3 -3
  14. package/esm2022/components/loader/formio.loader.component.mjs +3 -3
  15. package/esm2022/custom-tags.service.mjs +3 -3
  16. package/esm2022/embed/app.service.mjs +3 -3
  17. package/esm2022/embed/builder.component.mjs +3 -3
  18. package/esm2022/embed/embed.module.mjs +4 -4
  19. package/esm2022/embed/formio.component.mjs +3 -3
  20. package/esm2022/formio.config.mjs +3 -3
  21. package/esm2022/formio.module.mjs +4 -4
  22. package/esm2022/grid/GridBodyComponent.mjs +3 -3
  23. package/esm2022/grid/GridFooterComponent.mjs +3 -3
  24. package/esm2022/grid/GridHeaderComponent.mjs +3 -3
  25. package/esm2022/grid/form/FormGridBody.component.mjs +3 -3
  26. package/esm2022/grid/form/FormGridFooter.component.mjs +5 -5
  27. package/esm2022/grid/form/FormGridHeader.component.mjs +3 -3
  28. package/esm2022/grid/form/time-since.pipe.mjs +3 -3
  29. package/esm2022/grid/grid.component.mjs +3 -3
  30. package/esm2022/grid/grid.module.mjs +4 -4
  31. package/esm2022/grid/grid.service.mjs +3 -3
  32. package/esm2022/grid/submission/SubmissionGridBody.component.mjs +3 -3
  33. package/esm2022/grid/submission/SubmissionGridFooter.component.mjs +3 -3
  34. package/esm2022/grid/submission/SubmissionGridHeader.component.mjs +3 -3
  35. package/esm2022/manager/create/create.component.mjs +3 -3
  36. package/esm2022/manager/delete/delete.component.mjs +3 -3
  37. package/esm2022/manager/edit/edit.component.mjs +3 -3
  38. package/esm2022/manager/form/form.component.mjs +3 -3
  39. package/esm2022/manager/form-manager.config.mjs +3 -3
  40. package/esm2022/manager/form-manager.module.mjs +4 -4
  41. package/esm2022/manager/form-manager.service.mjs +3 -3
  42. package/esm2022/manager/index/index.component.mjs +3 -3
  43. package/esm2022/manager/submission/delete/delete.component.mjs +3 -3
  44. package/esm2022/manager/submission/edit/edit.component.mjs +3 -3
  45. package/esm2022/manager/submission/index/index.component.mjs +3 -3
  46. package/esm2022/manager/submission/submission/submission.component.mjs +3 -3
  47. package/esm2022/manager/submission/view/view.component.mjs +3 -3
  48. package/esm2022/manager/view/view.component.mjs +3 -3
  49. package/esm2022/resource/create/create.component.mjs +3 -3
  50. package/esm2022/resource/delete/delete.component.mjs +3 -3
  51. package/esm2022/resource/edit/edit.component.mjs +3 -3
  52. package/esm2022/resource/index/index.component.mjs +3 -3
  53. package/esm2022/resource/resource.component.mjs +5 -5
  54. package/esm2022/resource/resource.config.mjs +3 -3
  55. package/esm2022/resource/resource.module.mjs +4 -4
  56. package/esm2022/resource/resource.service.mjs +6 -15
  57. package/esm2022/resource/resources.service.mjs +3 -3
  58. package/esm2022/resource/view/view.component.mjs +3 -3
  59. package/fesm2022/formio-angular-auth.mjs +22 -22
  60. package/fesm2022/formio-angular-embed.mjs +13 -13
  61. package/fesm2022/formio-angular-grid.mjs +41 -41
  62. package/fesm2022/formio-angular-grid.mjs.map +1 -1
  63. package/fesm2022/formio-angular-manager.mjs +43 -43
  64. package/fesm2022/formio-angular-resource.mjs +34 -43
  65. package/fesm2022/formio-angular-resource.mjs.map +1 -1
  66. package/fesm2022/formio-angular.mjs +35 -35
  67. package/fesm2022/formio-angular.mjs.map +1 -1
  68. package/package.json +8 -8
  69. package/resource/resource.service.d.ts +2 -2
  70. package/resource/resource.service.d.ts.map +1 -1
@@ -378,7 +378,7 @@ export class FormioBaseComponent {
378
378
  }
379
379
  : {
380
380
  message: error.message || error.toString(),
381
- paths: error.path ? [error.path] : [],
381
+ paths: (error.path || error.formattedKeyOrPath) ? [error.path || error.formattedKeyOrPath] : [],
382
382
  }
383
383
  : {
384
384
  message: '',
@@ -409,9 +409,6 @@ export class FormioBaseComponent {
409
409
  });
410
410
  }
411
411
  }
412
- if (!this.noAlerts) {
413
- this.formio.showErrors();
414
- }
415
412
  }
416
413
  if (shouldErrorDisplay) {
417
414
  this.alerts.addAlert({
@@ -421,6 +418,9 @@ export class FormioBaseComponent {
421
418
  });
422
419
  }
423
420
  });
421
+ if (this.formio && !this.noAlerts) {
422
+ this.formio.showErrors(errors);
423
+ }
424
424
  }
425
425
  focusOnComponet(key) {
426
426
  if (this.formio) {
@@ -473,10 +473,10 @@ export class FormioBaseComponent {
473
473
  }
474
474
  return this.change.emit({ ...value, flags, isModified });
475
475
  }
476
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioBaseComponent, deps: [{ token: i0.NgZone }, { token: i1.FormioAppConfig, optional: true }, { token: i2.CustomTagsService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
477
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: FormioBaseComponent, selector: "ng-component", inputs: { form: "form", submission: "submission", src: "src", url: "url", service: "service", options: "options", noeval: "noeval", formioOptions: "formioOptions", renderOptions: "renderOptions", readOnly: "readOnly", viewOnly: "viewOnly", hideLoading: "hideLoading", hideComponents: "hideComponents", refresh: "refresh", error: "error", success: "success", submitDone: "submitDone", language: "language", hooks: "hooks", renderer: "renderer", watchSubmissionErrors: "watchSubmissionErrors", dataTableActions: "dataTableActions" }, outputs: { render: "render", customEvent: "customEvent", fileUploadingStatus: "fileUploadingStatus", submit: "submit", prevPage: "prevPage", nextPage: "nextPage", beforeSubmit: "beforeSubmit", rowAdd: "rowAdd", rowAdded: "rowAdded", rowEdit: "rowEdit", rowEdited: "rowEdited", rowDelete: "rowDelete", rowClick: "rowClick", rowSelectChange: "rowSelectChange", page: "page", changeItemsPerPage: "changeItemsPerPage", change: "change", invalid: "invalid", errorChange: "errorChange", formLoad: "formLoad", submissionLoad: "submissionLoad", ready: "ready" }, viewQueries: [{ propertyName: "formioElement", first: true, predicate: ["formio"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '', isInline: true });
476
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioBaseComponent, deps: [{ token: i0.NgZone }, { token: i1.FormioAppConfig, optional: true }, { token: i2.CustomTagsService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
477
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: FormioBaseComponent, selector: "ng-component", inputs: { form: "form", submission: "submission", src: "src", url: "url", service: "service", options: "options", noeval: "noeval", formioOptions: "formioOptions", renderOptions: "renderOptions", readOnly: "readOnly", viewOnly: "viewOnly", hideLoading: "hideLoading", hideComponents: "hideComponents", refresh: "refresh", error: "error", success: "success", submitDone: "submitDone", language: "language", hooks: "hooks", renderer: "renderer", watchSubmissionErrors: "watchSubmissionErrors", dataTableActions: "dataTableActions" }, outputs: { render: "render", customEvent: "customEvent", fileUploadingStatus: "fileUploadingStatus", submit: "submit", prevPage: "prevPage", nextPage: "nextPage", beforeSubmit: "beforeSubmit", rowAdd: "rowAdd", rowAdded: "rowAdded", rowEdit: "rowEdit", rowEdited: "rowEdited", rowDelete: "rowDelete", rowClick: "rowClick", rowSelectChange: "rowSelectChange", page: "page", changeItemsPerPage: "changeItemsPerPage", change: "change", invalid: "invalid", errorChange: "errorChange", formLoad: "formLoad", submissionLoad: "submissionLoad", ready: "ready" }, viewQueries: [{ propertyName: "formioElement", first: true, predicate: ["formio"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '', isInline: true });
478
478
  }
479
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioBaseComponent, decorators: [{
479
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioBaseComponent, decorators: [{
480
480
  type: Component,
481
481
  args: [{
482
482
  template: ''
@@ -577,4 +577,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
577
577
  type: ViewChild,
578
578
  args: ['formio', { static: true }]
579
579
  }] } });
580
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybWlvQmFzZUNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZm9ybWlvL3NyYy9Gb3JtaW9CYXNlQ29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBd0MsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUksT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUdqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFDekQsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsR0FBRyxLQUFLLENBQUM7QUFLM0MsTUFBTSxPQUFPLG1CQUFtQjtJQTZEckI7SUFDWTtJQUNBO0lBOURaLElBQUksQ0FBYztJQUNsQixVQUFVLEdBQVMsRUFBRSxDQUFDO0lBQ3RCLEdBQUcsQ0FBVTtJQUNiLEdBQUcsQ0FBVTtJQUNiLE9BQU8sQ0FBaUI7SUFDeEIsT0FBTyxDQUFpQjtJQUN4QixNQUFNLEdBQUssU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUM1QixhQUFhLENBQU87SUFDcEIsYUFBYSxDQUFPO0lBQ3BCLFFBQVEsR0FBSyxLQUFLLENBQUM7SUFDbkIsUUFBUSxHQUFLLEtBQUssQ0FBQztJQUNuQixXQUFXLEdBQUssS0FBSyxDQUFDO0lBQ3RCLGNBQWMsQ0FBWTtJQUMxQixPQUFPLENBQW9DO0lBQzNDLEtBQUssQ0FBcUI7SUFDMUIsT0FBTyxDQUF3QjtJQUMvQixV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WTtzQkFBckIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBQ2dDLGFBQWE7c0JBQW5ELFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTmdab25lLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1pb1NlcnZpY2UgfSBmcm9tICcuL2Zvcm1pby5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1pb0FsZXJ0cyB9IGZyb20gJy4vY29tcG9uZW50cy9hbGVydHMvZm9ybWlvLmFsZXJ0cyc7XG5pbXBvcnQgeyBGb3JtaW9BcHBDb25maWcgfSBmcm9tICcuL2Zvcm1pby5jb25maWcnO1xuaW1wb3J0IHsgRm9ybWlvRXJyb3IsIEZvcm1pb0Zvcm0sIEZvcm1pb09wdGlvbnMsIEZvcm1pb1JlZnJlc2hWYWx1ZSB9IGZyb20gJy4vZm9ybWlvLmNvbW1vbic7XG5pbXBvcnQgeyBhc3NpZ24sIGdldCwgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBDdXN0b21UYWdzU2VydmljZSB9IGZyb20gJy4vY3VzdG9tLXRhZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJ0Bmb3JtaW8vanMnO1xuaW1wb3J0IHsgQWxlcnRzUG9zaXRpb24gfSBmcm9tICcuL3R5cGVzL2FsZXJ0cy1wb3NpdGlvbic7XG5jb25zdCB7IEV2YWx1YXRvciwgZmFzdENsb25lRGVlcCB9ID0gVXRpbHM7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWlvQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBmb3JtPzogRm9ybWlvRm9ybTtcbiAgQElucHV0KCkgc3VibWlzc2lvbj86IGFueSA9IHt9O1xuICBASW5wdXQoKSBzcmM/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHVybD86IHN0cmluZztcbiAgQElucHV0KCkgc2VydmljZT86IEZvcm1pb1NlcnZpY2U7XG4gIEBJbnB1dCgpIG9wdGlvbnM/OiBGb3JtaW9PcHRpb25zO1xuICBASW5wdXQoKSBub2V2YWwgPyA9IEV2YWx1YXRvci5ub2V2YWw7XG4gIEBJbnB1dCgpIGZvcm1pb09wdGlvbnM/OiBhbnk7XG4gIEBJbnB1dCgpIHJlbmRlck9wdGlvbnM/OiBhbnk7XG4gIEBJbnB1dCgpIHJlYWRPbmx5ID8gPSBmYWxzZTtcbiAgQElucHV0KCkgdmlld09ubHkgPyA9IGZhbHNlO1xuICBASW5wdXQoKSBoaWRlTG9hZGluZyA/ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhpZGVDb21wb25lbnRzPzogc3RyaW5nW107XG4gIEBJbnB1dCgpIHJlZnJlc2g/OiBFdmVudEVtaXR0ZXI8Rm9ybWlvUmVmcmVzaFZhbHVlPjtcbiAgQElucHV0KCkgZXJyb3I/OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQElucHV0KCkgc3VjY2Vzcz86IEV2ZW50RW1pdHRlcjxvYmplY3Q+O1xuICBASW5wdXQoKSBzdWJtaXREb25lPzogRXZlbnRFbWl0dGVyPG9iamVjdD47XG4gIEBJbnB1dCgpIGxhbmd1YWdlPzogRXZlbnRFbWl0dGVyPHN0cmluZz47XG4gIEBJbnB1dCgpIGhvb2tzPzogYW55ID0ge307XG4gIEBJbnB1dCgpIHJlbmRlcmVyPzogYW55O1xuICBASW5wdXQoKSB3YXRjaFN1Ym1pc3Npb25FcnJvcnMgPyA9IGZhbHNlO1xuICBASW5wdXQoKSBkYXRhVGFibGVBY3Rpb25zPyA6IGFueSA9IFtdXG4gIEBPdXRwdXQoKSByZW5kZXIgPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgQE91dHB1dCgpIGN1c3RvbUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIEBPdXRwdXQoKSBmaWxlVXBsb2FkaW5nU3RhdHVzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBzdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgQE91dHB1dCgpIHByZXZQYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIEBPdXRwdXQoKSBuZXh0UGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0PigpO1xuICBAT3V0cHV0KCkgYmVmb3JlU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIEBPdXRwdXQoKSByb3dBZGQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJvd0FkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByb3dFZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByb3dFZGl0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJvd0RlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJvd1NlbGVjdENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY2hhbmdlSXRlbXNQZXJQYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgQE91dHB1dCgpIGludmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBlcnJvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZm9ybUxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHN1Ym1pc3Npb25Mb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybWlvQmFzZUNvbXBvbmVudD4oKTtcbiAgQFZpZXdDaGlsZCgnZm9ybWlvJywgeyBzdGF0aWM6IHRydWUgfSkgZm9ybWlvRWxlbWVudD86IEVsZW1lbnRSZWY8YW55PjtcblxuICBwdWJsaWMgQWxlcnRzUG9zaXRpb24gPSBBbGVydHNQb3NpdGlvbjtcbiAgcHVibGljIGZvcm1pbzogYW55O1xuICBwdWJsaWMgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHVibGljIGFsZXJ0cyA9IG5ldyBGb3JtaW9BbGVydHMoKTtcbiAgcHVibGljIGZvcm1pb1JlYWR5OiBQcm9taXNlPGFueT47XG5cbiAgcHJpdmF0ZSBmb3JtaW9SZWFkeVJlc29sdmU6IGFueTtcbiAgcHJpdmF0ZSBzdWJtaXR0aW5nID0gZmFsc2U7XG4gIHByaXZhdGUgc3VibWlzc2lvblN1Y2Nlc3MgPSBmYWxzZTtcbiAgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgcHVibGljIG5vQWxlcnRzOiBib29sZWFuO1xuICBwdWJsaWMgbGFiZWw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbmdab25lOiBOZ1pvbmUsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGNvbmZpZzogRm9ybWlvQXBwQ29uZmlnLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBjdXN0b21UYWdzPzogQ3VzdG9tVGFnc1NlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1pb1JlYWR5ID0gbmV3IFByb21pc2UoKHJlYWR5KSA9PiB7XG4gICAgICB0aGlzLmZvcm1pb1JlYWR5UmVzb2x2ZSA9IHJlYWR5O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0UmVuZGVyZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyZXI7XG4gIH1cblxuICBnZXRSZW5kZXJlck9wdGlvbnMoKSB7XG4gICAgY29uc3QgZXh0cmFUYWdzID0gdGhpcy5jdXN0b21UYWdzID8gdGhpcy5jdXN0b21UYWdzLnRhZ3MgOiBbXTtcbiAgICByZXR1cm4gYXNzaWduKHt9LCB7XG4gICAgICBpY29uczogZ2V0KHRoaXMuY29uZmlnLCAnaWNvbnMnLCAnZm9udGF3ZXNvbWUnKSxcbiAgICAgIG5vQWxlcnRzOiBnZXQodGhpcy5vcHRpb25zLCAnbm9BbGVydHMnLCB0cnVlKSxcbiAgICAgIHJlYWRPbmx5OiB0aGlzLnJlYWRPbmx5LFxuICAgICAgdmlld0FzSHRtbDogdGhpcy52aWV3T25seSxcbiAgICAgIC4uLih0aGlzLnZpZXdPbmx5ICYmIHsgcmVuZGVyTW9kZTogXCJodG1sXCIgfSksXG4gICAgICBpMThuOiBnZXQodGhpcy5vcHRpb25zLCAnaTE4bicsIG51bGwpLFxuICAgICAgZmlsZVNlcnZpY2U6IGdldCh0aGlzLm9wdGlvbnMsICdmaWxlU2VydmljZScsIG51bGwpLFxuICAgICAgaG9va3M6IHRoaXMuaG9va3MsXG4gICAgICBzYW5pdGl6ZUNvbmZpZzoge1xuICAgICAgICBhZGRUYWdzOiBleHRyYVRhZ3NcbiAgICAgIH0sXG4gICAgICBkYXRhVGFibGVBY3Rpb25zOiB0aGlzLmRhdGFUYWJsZUFjdGlvbnNcbiAgICB9LCB0aGlzLnJlbmRlck9wdGlvbnMgfHwge30pO1xuICB9XG5cbiAgY3JlYXRlUmVuZGVyZXIoKSB7XG4gICAgY29uc3QgUmVuZGVyZXIgPSB0aGlzLmdldFJlbmRlcmVyKCk7XG4gICAgY29uc3QgZm9ybSA9IChuZXcgUmVuZGVyZXIoXG4gICAgICB0aGlzLmZvcm1pb0VsZW1lbnQgPyB0aGlzLmZvcm1pb0VsZW1lbnQubmF0aXZlRWxlbWVudCA6IG51bGwsXG4gICAgICB0aGlzLmZvcm0sXG4gICAgICB0aGlzLmdldFJlbmRlcmVyT3B0aW9ucygpXG4gICAgKSk7XG4gICAgcmV0dXJuIGZvcm0uaW5zdGFuY2U7XG4gIH1cblxuICBzZXRGb3JtVXJsKHVybCkge1xuICAgIHRoaXMuZm9ybWlvLnNldFVybCh1cmwsIHRoaXMuZm9ybWlvT3B0aW9ucyB8fCB7fSk7XG4gIH1cblxuICBzZXRGb3JtKGZvcm06IEZvcm1pb0Zvcm0pIHtcbiAgICB0aGlzLmZvcm0gPSBmb3JtO1xuICAgIGlmICh0aGlzLmZvcm1pbykge1xuICAgICAgdGhpcy5mb3JtaW8uZGVzdHJveSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvcm0udGl0bGUpIHtcbiAgICAgIHRoaXMubGFiZWwgPSB0aGlzLmZvcm0udGl0bGU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZvcm0uY29tcG9uZW50cyAmJiB0aGlzLmZvcm0uY29tcG9uZW50c1swXSkge1xuICAgICAgdGhpcy5sYWJlbCA9IHRoaXMuZm9ybS5jb21wb25lbnRzWzBdLmxhYmVsO1xuICAgIH1cblxuICAgIC8vIENsZWFyIG91dCB0aGUgZWxlbWVudCB0byByZW5kZXIgdGhlIG5ldyBmb3JtLlxuICAgIGlmICh0aGlzLmZvcm1pb0VsZW1lbnQgJiYgdGhpcy5mb3JtaW9FbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuZm9ybWlvRWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgIH1cbiAgICB0aGlzLmZvcm1pbyA9IHRoaXMuY3JlYXRlUmVuZGVyZXIoKTtcblxuICAgIGlmKCF0aGlzLmZvcm1pbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmZvcm1pby5zZXRTdWJtaXNzaW9uKHRoaXMuc3VibWlzc2lvbiwge1xuICAgICAgZnJvbVN1Ym1pc3Npb246IGZhbHNlXG4gICAgfSk7XG4gICAgaWYgKHRoaXMucmVuZGVyT3B0aW9ucyAmJiB0aGlzLnJlbmRlck9wdGlvbnMudmFsaWRhdGVPbkluaXQpIHtcbiAgICAgIHRoaXMuZm9ybWlvLnNldFZhbHVlKHRoaXMuc3VibWlzc2lvbiwge3ZhbGlkYXRlT25Jbml0OiB0cnVlfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVybCkge1xuICAgICAgdGhpcy5zZXRGb3JtVXJsKHRoaXMudXJsKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3JjKSB7XG4gICAgICB0aGlzLnNldEZvcm1VcmwodGhpcy5zcmMpO1xuICAgIH1cbiAgICB0aGlzLmZvcm1pby5ub3N1Ym1pdCA9IHRydWU7XG4gICAgdGhpcy5hdHRhY2hGb3JtRXZlbnRzKCk7XG5cbiAgICByZXR1cm4gdGhpcy5mb3JtaW8ucmVhZHkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlYWR5LmVtaXQodGhpcyk7XG4gICAgICAgIHRoaXMuZm9ybWlvUmVhZHlSZXNvbHZlKHRoaXMuZm9ybWlvKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybWlvLnN1Ym1pc3Npb25SZWFkeSkge1xuICAgICAgICAgIHRoaXMuZm9ybWlvLnN1Ym1pc3Npb25SZWFkeS50aGVuKChzdWJtaXNzaW9uKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pc3Npb25Mb2FkLmVtaXQoc3VibWlzc2lvbik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWlvO1xuICAgIH0pO1xuICB9XG5cbiAgYXR0YWNoRm9ybUV2ZW50cygpIHtcbiAgICB0aGlzLmZvcm1pby5vbigncHJldlBhZ2UnLCAoZGF0YTogYW55KSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5vblByZXZQYWdlKGRhdGEpKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ25leHRQYWdlJywgKGRhdGE6IGFueSkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMub25OZXh0UGFnZShkYXRhKSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdjaGFuZ2UnLCAodmFsdWU6IGFueSwgZmxhZ3M6IGFueSwgaXNNb2RpZmllZDogYm9vbGVhbikgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMub25DaGFuZ2UodmFsdWUsIGZsYWdzLCBpc01vZGlmaWVkKSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyb3dBZGQnLCAoY29tcG9uZW50OiBhbnkpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yb3dBZGQuZW1pdChjb21wb25lbnQpKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0FkZGVkJywgKGRhdGE6IGFueSwgY29tcG9uZW50OiBhbnkpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yb3dBZGRlZC5lbWl0KHtjb21wb25lbnQsIHJvdzogZGF0YX0pKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0VkaXQnLCAoZGF0YTogYW55LCByb3dJbmRleDogbnVtYmVyLCBpbmRleDogbnVtYmVyLCBjb21wb25lbnQ6IGFueSkgPT4gIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLnJvd0VkaXQuZW1pdCh7Y29tcG9uZW50LCByb3c6IGRhdGEsIHJvd0luZGV4LCBpbmRleH0pKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0VkaXRlZCcsIChkYXRhOiBhbnksIHJvd0luZGV4OiBudW1iZXIsIGNvbXBvbmVudDogYW55KSA9PiAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucm93RWRpdGVkLmVtaXQoe2NvbXBvbmVudCwgcm93OiBkYXRhLCByb3dJbmRleH0pKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0RlbGV0ZScsIChkYXRhOiBhbnksIHJvd0luZGV4OiBudW1iZXIsIGluZGV4OiBudW1iZXIsIGNvbXBvbmVudDogYW55KSA9PiAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucm93RGVsZXRlLmVtaXQoe2NvbXBvbmVudCwgcm93OiBkYXRhLCByb3dJbmRleCwgaW5kZXh9KSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyb3dDbGljaycsIChyb3c6IGFueSwgcm93SW5kZXg6IG51bWJlciwgaW5kZXg6IG51bWJlcixjb21wb25lbnQ6IGFueSkgPT4gIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLnJvd0NsaWNrLmVtaXQoe2NvbXBvbmVudCwgcm93LCByb3dJbmRleCwgaW5kZXh9KSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyb3dTZWxlY3RDaGFuZ2UnLCAoc2VsZWN0ZWRSb3dzOiBhbnlbXSwgY29tcG9uZW50OiBhbnkpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yb3dTZWxlY3RDaGFuZ2UuZW1pdCh7c2VsZWN0ZWRSb3dzLCBjb21wb25lbnR9KSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdwYWdlJywgKGN1cnJlbnRQYWdlOiBudW1iZXIsIGNvbXBvbmVudDogYW55KSA9PiAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucGFnZS5lbWl0KHtjdXJyZW50UGFnZSwgY29tcG9uZW50fSkpKTtcbiAgICB0aGlzLmZvcm1pby5vbignY2hhbmdlSXRlbXNQZXJQYWdlJywgKGl0ZW1zUGVyUGFnZTpudW1iZXIpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5jaGFuZ2VJdGVtc1BlclBhZ2UuZW1pdCh7aXRlbXNQZXJQYWdlfSkpKTtcbiAgICB0aGlzLmZvcm1pby5vbignY3VzdG9tRXZlbnQnLCAoZXZlbnQ6IGFueSkgPT5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmN1c3RvbUV2ZW50LmVtaXQoZXZlbnQpKVxuICAgICk7XG5cbiAgICBbJ2ZpbGVVcGxvYWRpbmdTdGFydCcsICdmaWxlVXBsb2FkaW5nRW5kJ10uZm9yRWFjaCgoZXZlbnROYW1lLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdHVzID0gISFpbmRleCA/ICdlbmQnIDogJ3N0YXJ0JztcbiAgICAgIHRoaXMuZm9ybWlvLm9uKGV2ZW50TmFtZSwgKCkgPT5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZmlsZVVwbG9hZGluZ1N0YXR1cy5lbWl0KHN0YXR1cykpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgdGhpcy5mb3JtaW8ub24oJ3N1Ym1pdCcsIChzdWJtaXNzaW9uOiBhbnksIHNhdmVkOiBib29sZWFuKSA9PlxuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuc3VibWl0Rm9ybShzdWJtaXNzaW9uLCBzYXZlZCkpXG4gICAgKTtcbiAgICB0aGlzLmZvcm1pby5vbignZXJyb3InLCAoZXJyOiBhbnkpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLnN1Ym1pc3Npb25TdWNjZXNzID0gZmFsc2U7XG4gICAgICByZXR1cm4gdGhpcy5vbkVycm9yKGVycik7XG4gICAgfSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyZW5kZXInLCAoKSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yZW5kZXIuZW1pdCgpKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ2Zvcm1Mb2FkJywgKGxvYWRlZEZvcm06IGFueSkgPT5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmZvcm1Mb2FkLmVtaXQobG9hZGVkRm9ybSkpXG4gICAgKTtcbiAgfVxuXG4gIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBleHRyYVRhZ3MgPSB0aGlzLmN1c3RvbVRhZ3MgPyB0aGlzLmN1c3RvbVRhZ3MudGFncyA6IFtdO1xuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zOiBGb3JtaW9PcHRpb25zID0ge1xuICAgICAgZXJyb3JzOiB7XG4gICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgZml4IHRoZSBmb2xsb3dpbmcgZXJyb3JzIGJlZm9yZSBzdWJtaXR0aW5nLidcbiAgICAgIH0sXG4gICAgICBhbGVydHM6IHtcbiAgICAgICAgc3VibWl0TWVzc2FnZTogJ1N1Ym1pc3Npb24gQ29tcGxldGUuJ1xuICAgICAgfSxcbiAgICAgIGRpc2FibGVBbGVydHM6IGZhbHNlLFxuICAgICAgaG9va3M6IHtcbiAgICAgICAgYmVmb3JlU3VibWl0OiBudWxsXG4gICAgICB9LFxuICAgICAgc2FuaXRpemVDb25maWc6IHtcbiAgICAgICAgYWRkVGFnczogZXh0cmFUYWdzXG4gICAgICB9LFxuICAgICAgYWxlcnRzUG9zaXRpb246IEFsZXJ0c1Bvc2l0aW9uLnRvcCxcbiAgICB9O1xuICAgIHRoaXMub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdE9wdGlvbnMsIHRoaXMub3B0aW9ucyk7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5kaXNhYmxlQWxlcnRzKSB7XG4gICAgICB0aGlzLm9wdGlvbnMuYWxlcnRzUG9zaXRpb24gPSBBbGVydHNQb3NpdGlvbi5ub25lO1xuICAgIH1cbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIEV2YWx1YXRvci5ub2V2YWwgPSB0aGlzLm5vZXZhbDtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcblxuICAgIGlmICh0aGlzLmxhbmd1YWdlKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMubGFuZ3VhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuZm9ybWlvLmxhbmd1YWdlID0gdGhpcy5sYW5ndWFnZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubGFuZ3VhZ2Uuc3Vic2NyaWJlKChsYW5nOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICB0aGlzLmZvcm1pby5sYW5ndWFnZSA9IGxhbmc7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnJlZnJlc2gpIHtcbiAgICAgIHRoaXMucmVmcmVzaC5zdWJzY3JpYmUoKHJlZnJlc2g6IEZvcm1pb1JlZnJlc2hWYWx1ZSkgPT5cbiAgICAgICAgdGhpcy5vblJlZnJlc2gocmVmcmVzaClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc3Vic2NyaWJlKChlcnI6IGFueSkgPT4gdGhpcy5vbkVycm9yKGVycikpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN1Y2Nlc3MpIHtcbiAgICAgIHRoaXMuc3VjY2Vzcy5zdWJzY3JpYmUoKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydCh7XG4gICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgfHwgZ2V0KHRoaXMub3B0aW9ucywgJ2FsZXJ0cy5zdWJtaXRNZXNzYWdlJylcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdWJtaXREb25lKSB7XG4gICAgICB0aGlzLnN1Ym1pdERvbmUuc3Vic2NyaWJlKChzdWJtaXNzaW9uOiBvYmplY3QpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtaW8uZW1pdCgnc3VibWl0RG9uZScsIHN1Ym1pc3Npb24pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3JjKSB7XG4gICAgICBpZiAoIXRoaXMuc2VydmljZSkge1xuICAgICAgICB0aGlzLnNlcnZpY2UgPSBuZXcgRm9ybWlvU2VydmljZSh0aGlzLnNyYyk7XG4gICAgICB9XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnNldEZvcm1Gcm9tU3JjKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVybCAmJiAhdGhpcy5zZXJ2aWNlKSB7XG4gICAgICB0aGlzLnNlcnZpY2UgPSBuZXcgRm9ybWlvU2VydmljZSh0aGlzLnVybCk7XG4gICAgfVxuICB9XG5cbiAgc2V0Rm9ybUZyb21TcmMoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLmxvYWRGb3JtKHsgcGFyYW1zOiB7IGxpdmU6IDEgfSB9KS5zdWJzY3JpYmUoXG4gICAgICAoZm9ybTogRm9ybWlvRm9ybSkgPT4ge1xuICAgICAgICBpZiAoZm9ybSAmJiBmb3JtLmNvbXBvbmVudHMpIHtcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldEZvcm0oZm9ybSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBhIHN1Ym1pc3Npb24gaXMgYWxzbyBwcm92aWRlZC5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGlzRW1wdHkodGhpcy5zdWJtaXNzaW9uKSAmJlxuICAgICAgICAgIHRoaXMuc2VydmljZSAmJlxuICAgICAgICAgIHRoaXMuc2VydmljZS5mb3JtaW8uc3VibWlzc2lvbklkXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuc2VydmljZS5sb2FkU3VibWlzc2lvbigpLnN1YnNjcmliZShcbiAgICAgICAgICAgIChzdWJtaXNzaW9uOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1pby5vcHRpb25zLnJlYWRPbmx5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLnN1Ym1pc3Npb24gPSB0aGlzLmZvcm1pby5zdWJtaXNzaW9uID0gc3VibWlzc2lvbjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4gdGhpcy5vbkVycm9yKGVycilcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyID0+IHRoaXMub25FcnJvcihlcnIpXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmZvcm1pbykge1xuICAgICAgdGhpcy5mb3JtaW8uZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uUmVmcmVzaChyZWZyZXNoOiBGb3JtaW9SZWZyZXNoVmFsdWUpIHtcbiAgICB0aGlzLmZvcm1pb1JlYWR5LnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKHJlZnJlc2guZm9ybSkge1xuICAgICAgICB0aGlzLmZvcm1pby5zZXRGb3JtKHJlZnJlc2guZm9ybSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgaWYgKHJlZnJlc2guc3VibWlzc2lvbikge1xuICAgICAgICAgICAgdGhpcy5mb3JtaW8uc2V0U3VibWlzc2lvbihyZWZyZXNoLnN1Ym1pc3Npb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHJlZnJlc2guc3VibWlzc2lvbikge1xuICAgICAgICB0aGlzLmZvcm1pby5zZXRTdWJtaXNzaW9uKHJlZnJlc2guc3VibWlzc2lvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKHJlZnJlc2gucHJvcGVydHkpIHtcbiAgICAgICAgICBjYXNlICdzdWJtaXNzaW9uJzpcbiAgICAgICAgICAgIHRoaXMuZm9ybWlvLnN1Ym1pc3Npb24gPSByZWZyZXNoLnZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnZm9ybSc6XG4gICAgICAgICAgICB0aGlzLmZvcm1pby5mb3JtID0gcmVmcmVzaC52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBhbnkpIHtcbiAgICBFdmFsdWF0b3Iubm9ldmFsID0gdGhpcy5ub2V2YWw7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG5cbiAgICBpZiAoY2hhbmdlcy5mb3JtICYmIGNoYW5nZXMuZm9ybS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRGb3JtKGNoYW5nZXMuZm9ybS5jdXJyZW50VmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtaW9SZWFkeS50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjaGFuZ2VzLnN1Ym1pc3Npb24gJiYgY2hhbmdlcy5zdWJtaXNzaW9uLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICB0aGlzLmZvcm1pby5zZXRTdWJtaXNzaW9uKGNoYW5nZXMuc3VibWlzc2lvbi5jdXJyZW50VmFsdWUsIHtcbiAgICAgICAgICBmcm9tU3VibWlzc2lvbjogIWNoYW5nZXMuc3VibWlzc2lvbi5maXJzdENoYW5nZVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZXMuaGlkZUNvbXBvbmVudHMgJiYgY2hhbmdlcy5oaWRlQ29tcG9uZW50cy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgY29uc3QgaGlkZGVuQ29tcG9uZW50cyA9IGNoYW5nZXMuaGlkZUNvbXBvbmVudHMuY3VycmVudFZhbHVlO1xuICAgICAgICB0aGlzLmZvcm1pby5vcHRpb25zLmhpZGUgPSBoaWRkZW5Db21wb25lbnRzO1xuICAgICAgICB0aGlzLmZvcm1pby5ldmVyeUNvbXBvbmVudCgoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgY29tcG9uZW50Lm9wdGlvbnMuaGlkZSA9IGhpZGRlbkNvbXBvbmVudHM7XG4gICAgICAgICAgaWYgKGhpZGRlbkNvbXBvbmVudHMuaW5jbHVkZXMoY29tcG9uZW50LmNvbXBvbmVudC5rZXkpKSB7XG4gICAgICAgICAgICBjb21wb25lbnQudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvblByZXZQYWdlKGRhdGE6IGFueSkge1xuICAgIHRoaXMuYWxlcnRzLnNldEFsZXJ0cyhbXSk7XG4gICAgdGhpcy5wcmV2UGFnZS5lbWl0KGRhdGEpO1xuICB9XG5cbiAgb25OZXh0UGFnZShkYXRhOiBhbnkpIHtcbiAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydHMoW10pO1xuICAgIHRoaXMubmV4dFBhZ2UuZW1pdChkYXRhKTtcbiAgfVxuXG4gIG9uU3VibWl0KHN1Ym1pc3Npb246IGFueSwgc2F2ZWQ6IGJvb2xlYW4sIG5vZW1pdD86IGJvb2xlYW4pIHtcbiAgICB0aGlzLnN1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnN1Ym1pc3Npb25TdWNjZXNzID0gdHJ1ZTtcblxuICAgIHRoaXMuZm9ybWlvLnNldFZhbHVlKGZhc3RDbG9uZURlZXAoc3VibWlzc2lvbiksIHtcbiAgICAgIG5vVmFsaWRhdGU6IHRydWUsXG4gICAgICBub0NoZWNrOiB0cnVlXG4gICAgfSk7XG5cbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIHRoaXMuZm9ybWlvLmVtaXQoJ3N1Ym1pdERvbmUnLCBzdWJtaXNzaW9uKTtcbiAgICB9XG4gICAgaWYgKCFub2VtaXQpIHtcbiAgICAgIHRoaXMuc3VibWl0LmVtaXQoc3VibWlzc2lvbik7XG4gICAgfVxuICAgIGlmICghdGhpcy5zdWNjZXNzKSB7XG4gICAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydCh7XG4gICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgbWVzc2FnZTogZ2V0KHRoaXMub3B0aW9ucywgJ2FsZXJ0cy5zdWJtaXRNZXNzYWdlJylcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uRXJyb3IoZXJyOiBhbnkpIHtcbiAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydHMoW10pO1xuICAgIHRoaXMuc3VibWl0dGluZyA9IGZhbHNlO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgICBpZiAoIWVycikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIE1ha2Ugc3VyZSBpdCBpcyBhbiBhcnJheS5cbiAgICBjb25zdCBlcnJvcnMgPSBBcnJheS5pc0FycmF5KGVycikgPyBlcnIgOiBbZXJyXTtcblxuICAgIC8vIEVtaXQgdGhlc2UgZXJyb3JzIGFnYWluLlxuICAgIHRoaXMuZXJyb3JDaGFuZ2UuZW1pdChlcnJvcnMpO1xuXG4gICAgaWYgKGVyci5zaWxlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5mb3JtaW8gJiYgZXJyb3JzLmxlbmd0aCkge1xuICAgICAgdGhpcy5mb3JtaW8uZW1pdCgnc3VibWl0RXJyb3InLCBlcnJvcnMpO1xuICAgIH1cblxuICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIG9uZSBhbmQgc2V0IHRoZSBhbGVydHMgYXJyYXkuXG4gICAgZXJyb3JzLmZvckVhY2goKGVycm9yOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgcGF0aHMsXG4gICAgICB9ID0gZXJyb3JcbiAgICAgICAgPyBlcnJvci5kZXRhaWxzXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvci5kZXRhaWxzLm1hcCgoZGV0YWlsKSA9PiBkZXRhaWwubWVzc2FnZSksXG4gICAgICAgICAgICBwYXRoczogZXJyb3IuZGV0YWlscy5tYXAoKGRldGFpbCkgPT4gZGV0YWlsLnBhdGgpLFxuICAgICAgICAgIH1cbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UgfHwgZXJyb3IudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHBhdGhzOiBlcnJvci5wYXRoID8gW2Vycm9yLnBhdGhdIDogW10sXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICBwYXRoczogW10sXG4gICAgICAgIH07XG5cbiAgICAgIGxldCBzaG91bGRFcnJvckRpc3BsYXkgPSB0cnVlO1xuXG4gICAgICBpZiAodGhpcy5mb3JtaW8pIHtcbiAgICAgICAgcGF0aHMuZm9yRWFjaCgocGF0aCwgaW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmZvcm1pby5nZXRDb21wb25lbnQocGF0aCk7XG4gICAgICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IEFycmF5LmlzQXJyYXkoY29tcG9uZW50KSA/IGNvbXBvbmVudCA6IFtjb21wb25lbnRdO1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZVRleHQgPSBBcnJheS5pc0FycmF5KG1lc3NhZ2UpID8gbWVzc2FnZVtpbmRleF0gOiBtZXNzYWdlO1xuICAgICAgICAgICAgY29tcG9uZW50cy5mb3JFYWNoKChjb21wKSA9PiBjb21wLnNldEN1c3RvbVZhbGlkaXR5KG1lc3NhZ2VUZXh0LCB0cnVlKSk7XG4gICAgICAgICAgICB0aGlzLmFsZXJ0cy5hZGRBbGVydCh7XG4gICAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlW2luZGV4XSxcbiAgICAgICAgICAgICAgY29tcG9uZW50LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzaG91bGRFcnJvckRpc3BsYXkgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICgod2luZG93IGFzIGFueSkuVlBBVF9FTkFCTEVEKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBlcnJvciA9PT0nc3RyaW5nJyAmJiB0aGlzLmZvcm1pby5jb21wb25lbnRzKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1pby5jb21wb25lbnRzLmZvckVhY2goKGNvbXApID0+IHtcbiAgICAgICAgICAgICAgaWYgKGNvbXAgJiYgY29tcC50eXBlICE9PSAnYnV0dG9uJykge1xuICAgICAgICAgICAgICAgIGNvbXAuc2V0Q3VzdG9tVmFsaWRpdHkobWVzc2FnZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5ub0FsZXJ0cykge1xuICAgICAgICAgIHRoaXMuZm9ybWlvLnNob3dFcnJvcnMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc2hvdWxkRXJyb3JEaXNwbGF5KSB7XG4gICAgICAgIHRoaXMuYWxlcnRzLmFkZEFsZXJ0KHtcbiAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgIGNvbXBvbmVudDogZXJyb3IuY29tcG9uZW50LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZvY3VzT25Db21wb25ldChrZXk6IGFueSkge1xuICAgIGlmICh0aGlzLmZvcm1pbykge1xuICAgICAgdGhpcy5mb3JtaW8uZm9jdXNPbkNvbXBvbmVudChrZXkpO1xuICAgIH1cbiAgfVxuXG4gIHN1Ym1pdEV4ZWN1dGUoc3VibWlzc2lvbjogb2JqZWN0LCBzYXZlZCA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMuc2VydmljZSAmJiAhdGhpcy51cmwgJiYgIXNhdmVkKSB7XG4gICAgICB0aGlzLnNlcnZpY2VcbiAgICAgICAgLnNhdmVTdWJtaXNzaW9uKHN1Ym1pc3Npb24pXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgKHN1Yjoge30pID0+IHRoaXMub25TdWJtaXQoc3ViLCB0cnVlKSxcbiAgICAgICAgICBlcnIgPT4gdGhpcy5vbkVycm9yKGVycilcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vblN1Ym1pdChzdWJtaXNzaW9uLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgc3VibWl0Rm9ybShzdWJtaXNzaW9uOiBhbnksIHNhdmVkID0gZmFsc2UpIHtcbiAgICAvLyBLZWVwIGRvdWJsZSBzdWJtaXRzIGZyb20gb2NjdXJyaW5nLi4uXG4gICAgaWYgKHRoaXMuc3VibWl0dGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmZvcm1pby5zZXRNZXRhZGF0YShzdWJtaXNzaW9uKTtcbiAgICB0aGlzLnN1Ym1pc3Npb25TdWNjZXNzID0gZmFsc2U7XG4gICAgdGhpcy5zdWJtaXR0aW5nID0gdHJ1ZTtcbiAgICB0aGlzLmJlZm9yZVN1Ym1pdC5lbWl0KHN1Ym1pc3Npb24pO1xuXG4gICAgLy8gaWYgdGhleSBwcm92aWRlIGEgYmVmb3JlU3VibWl0IGhvb2ssIHRoZW4gYWxsb3cgdGhlbSB0byBhbHRlciB0aGUgc3VibWlzc2lvbiBhc3luY2hyb25vdXNseVxuICAgIC8vIG9yIGV2ZW4gcHJvdmlkZSBhIGN1c3RvbSBFcnJvciBtZXRob2QuXG4gICAgY29uc3QgYmVmb3JlU3VibWl0ID0gZ2V0KHRoaXMub3B0aW9ucywgJ2hvb2tzLmJlZm9yZVN1Ym1pdCcpO1xuICAgIGlmIChiZWZvcmVTdWJtaXQpIHtcbiAgICAgIGJlZm9yZVN1Ym1pdChzdWJtaXNzaW9uLCAoZXJyOiBGb3JtaW9FcnJvciwgc3ViOiBvYmplY3QpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHRoaXMub25FcnJvcihlcnIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN1Ym1pdEV4ZWN1dGUoc3ViLCBzYXZlZCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdWJtaXRFeGVjdXRlKHN1Ym1pc3Npb24sIHNhdmVkKTtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZSh2YWx1ZTogYW55LCBmbGFnczogYW55LCBpc01vZGlmaWVkOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMud2F0Y2hTdWJtaXNzaW9uRXJyb3JzICYmICF0aGlzLnN1Ym1pc3Npb25TdWNjZXNzKSB7XG4gICAgICBjb25zdCBlcnJvcnMgPSBnZXQodGhpcywgJ2Zvcm1pby5lcnJvcnMnLCBbXSk7XG4gICAgICBjb25zdCBhbGVydHMgPSBnZXQodGhpcywgJ2FsZXJ0cy5hbGVydHMnLCBbXSk7XG4gICAgICBjb25zdCBzdWJtaXR0ZWQgPSBnZXQodGhpcywgJ2Zvcm1pby5zdWJtaXR0ZWQnLCBmYWxzZSk7XG4gICAgICBpZiAoc3VibWl0dGVkICYmIChlcnJvcnMubGVuZ3RoIHx8IGFsZXJ0cy5sZW5ndGgpKSB7XG4gICAgICAgIHRoaXMub25FcnJvcihlcnJvcnMpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jaGFuZ2UuZW1pdCh7Li4udmFsdWUsIGZsYWdzLCBpc01vZGlmaWVkfSk7XG4gIH1cbn1cbiJdfQ==
580
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybWlvQmFzZUNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZm9ybWlvL3NyYy9Gb3JtaW9CYXNlQ29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBd0MsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUksT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUdqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFDekQsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsR0FBRyxLQUFLLENBQUM7QUFLM0MsTUFBTSxPQUFPLG1CQUFtQjtJQTZEckI7SUFDWTtJQUNBO0lBOURaLElBQUksQ0FBYztJQUNsQixVQUFVLEdBQVMsRUFBRSxDQUFDO0lBQ3RCLEdBQUcsQ0FBVTtJQUNiLEdBQUcsQ0FBVTtJQUNiLE9BQU8sQ0FBaUI7SUFDeEIsT0FBTyxDQUFpQjtJQUN4QixNQUFNLEdBQUssU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUM1QixhQUFhLENBQU87SUFDcEIsYUFBYSxDQUFPO0lBQ3BCLFFBQVEsR0FBSyxLQUFLLENBQUM7SUFDbkIsUUFBUSxHQUFLLEtBQUssQ0FBQztJQUNuQixXQUFXLEdBQUssS0FBSyxDQUFDO0lBQ3RCLGNBQWMsQ0FBWTtJQUMxQixPQUFPLENBQW9DO0lBQzNDLEtBQUssQ0FBcUI7SUFDMUIsT0FBTyxDQUF3QjtJQUMvQixVQUFVLENBQXdCO0lBQ2xDLFFBQVEsQ0FBd0I7SUFDaEMsS0FBSyxHQUFTLEVBQUUsQ0FBQztJQUNqQixRQUFRLENBQU87SUFDZixxQkFBcUIsR0FBSyxLQUFLLENBQUM7SUFDaEMsZ0JBQWdCLEdBQVUsRUFBRSxDQUFBO0lBQzNCLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBQ3BDLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBQ3pDLG1CQUFtQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFDakQsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFDcEMsUUFBUSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFDdEMsUUFBUSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFDdEMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFDMUMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDakMsUUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDbkMsT0FBTyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDbEMsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDcEMsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDcEMsUUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDbkMsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDMUMsSUFBSSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDL0Isa0JBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUM3QyxNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUNwQyxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUN0QyxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUN0QyxRQUFRLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUNuQyxjQUFjLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUN6QyxLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7SUFDbkIsYUFBYSxDQUFtQjtJQUVoRSxjQUFjLEdBQUcsY0FBYyxDQUFDO0lBQ2hDLE1BQU0sQ0FBTTtJQUNaLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDcEIsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDNUIsV0FBVyxDQUFlO0lBRXpCLGtCQUFrQixDQUFNO0lBQ3hCLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDbkIsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQzNCLFNBQVMsQ0FBVTtJQUNuQixRQUFRLENBQVU7SUFDbEIsS0FBSyxDQUFTO0lBRXJCLFlBQ1MsTUFBYyxFQUNGLE1BQXVCLEVBQ3ZCLFVBQThCO1FBRjFDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDRixXQUFNLEdBQU4sTUFBTSxDQUFpQjtRQUN2QixlQUFVLEdBQVYsVUFBVSxDQUFvQjtRQUVqRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5RCxPQUFPLE1BQU0sQ0FBQyxFQUFFLEVBQUU7WUFDaEIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUM7WUFDL0MsUUFBUSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUM7WUFDN0MsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN6QixHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUM1QyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQztZQUNyQyxXQUFXLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQztZQUNuRCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsY0FBYyxFQUFFO2dCQUNkLE9BQU8sRUFBRSxTQUFTO2FBQ25CO1lBQ0QsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtTQUN4QyxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksRUFDNUQsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FDMUIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBRztRQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxPQUFPLENBQUMsSUFBZ0I7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4QixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDL0IsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMzRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM3QyxDQUFDO1FBRUQsZ0RBQWdEO1FBQ2hELElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDbEQsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXBDLElBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3pDLGNBQWMsRUFBRSxLQUFLO1NBQ3RCLENBQUMsQ0FBQztRQUNILElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBQyxjQUFjLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXhCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDckMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTt3QkFDOUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3ZDLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBVSxFQUFFLEtBQVUsRUFBRSxVQUFtQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFJLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQWMsRUFBRSxFQUFFLENBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQVMsRUFBRSxTQUFjLEVBQUUsRUFBRSxDQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5SCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFTLEVBQUUsUUFBZ0IsRUFBRSxLQUFhLEVBQUUsU0FBYyxFQUFFLEVBQUUsQ0FBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5SyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFTLEVBQUUsUUFBZ0IsRUFBRSxTQUFjLEVBQUUsRUFBRSxDQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUosSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBUyxFQUFFLFFBQWdCLEVBQUUsS0FBYSxFQUFFLFNBQWMsRUFBRSxFQUFFLENBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEwsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBUSxFQUFFLFFBQWdCLEVBQUUsS0FBYSxFQUFDLFNBQWMsRUFBRSxFQUFFLENBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4SyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFlBQW1CLEVBQUUsU0FBYyxFQUFFLEVBQUUsQ0FBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFDLFlBQVksRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6SixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxXQUFtQixFQUFFLFNBQWMsRUFBRSxFQUFFLENBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEksSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxZQUFtQixFQUFFLEVBQUUsQ0FBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEksSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDcEQsQ0FBQztRQUVGLENBQUMsb0JBQW9CLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDdEUsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQzdELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQWUsRUFBRSxLQUFjLEVBQUUsRUFBRSxDQUMzRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUMxRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDekQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFlLEVBQUUsRUFBRSxDQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUN0RCxDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDOUQsTUFBTSxjQUFjLEdBQWtCO1lBQ3BDLE1BQU0sRUFBRTtnQkFDTixPQUFPLEVBQUUsb0RBQW9EO2FBQzlEO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLGFBQWEsRUFBRSxzQkFBc0I7YUFDdEM7WUFDRCxhQUFhLEVBQUUsS0FBSztZQUNwQixLQUFLLEVBQUU7Z0JBQ0wsWUFBWSxFQUFFLElBQUk7YUFDbkI7WUFDRCxjQUFjLEVBQUU7Z0JBQ2QsT0FBTyxFQUFFLFNBQVM7YUFDbkI7WUFDRCxjQUFjLEVBQUUsY0FBYyxDQUFDLEdBQUc7U0FDbkMsQ0FBQztRQUNGLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDO1FBQ3BELENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQsUUFBUTtRQUNOLFNBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDdkMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUU7b0JBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDOUIsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBMkIsRUFBRSxFQUFFLENBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQ3hCLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQWUsRUFBRSxFQUFFO2dCQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztvQkFDbkIsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsT0FBTyxFQUFFLE9BQU8sSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxzQkFBc0IsQ0FBQztpQkFDOUQsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFrQixFQUFFLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztZQUM3QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUN0RCxDQUFDLElBQWdCLEVBQUUsRUFBRTtZQUNuQixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO29CQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNyQixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRCxvQ0FBb0M7WUFDcEMsSUFDRSxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLE9BQU87Z0JBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUNoQyxDQUFDO2dCQUNELElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsU0FBUyxDQUNyQyxDQUFDLFVBQWUsRUFBRSxFQUFFO29CQUNsQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztvQkFDdEMsQ0FBQztvQkFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztnQkFDeEQsQ0FBQyxFQUNELEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FDekIsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDLEVBQ0QsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUN6QixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQTJCO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUN6QixJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQzFDLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO3dCQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ2hELENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDaEQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFFBQVEsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUN6QixLQUFLLFlBQVk7d0JBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQzt3QkFDdkMsTUFBTTtvQkFDUixLQUFLLE1BQU07d0JBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQzt3QkFDakMsTUFBTTtnQkFDVixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFZO1FBQ3RCLFNBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEIsSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMxQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDekIsSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzFELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFO29CQUN6RCxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVc7aUJBQ2hELENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRCxJQUFJLE9BQU8sQ0FBQyxjQUFjLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDbEUsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQztnQkFDN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDO2dCQUM1QyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO29CQUN2QyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztvQkFDMUMsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUN2RCxTQUFTLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDNUIsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBUztRQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVM7UUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxVQUFlLEVBQUUsS0FBYyxFQUFFLE1BQWdCO1FBQ3hELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFFOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzlDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFDO1FBRUgsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7Z0JBQ25CLElBQUksRUFBRSxTQUFTO2dCQUNmLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxzQkFBc0IsQ0FBQzthQUNuRCxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFRO1FBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsT0FBTztRQUNULENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWhELDJCQUEyQjtRQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU5QixJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNmLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELHFEQUFxRDtRQUNyRCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDNUIsTUFBTSxFQUNKLE9BQU8sRUFDUCxLQUFLLEdBQ04sR0FBRyxLQUFLO2dCQUNQLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTztvQkFDYixDQUFDLENBQUM7d0JBQ0EsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO3dCQUN0RCxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7cUJBQ2xEO29CQUNELENBQUMsQ0FBQzt3QkFDQSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO3dCQUMxQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7cUJBQ2hHO2dCQUNILENBQUMsQ0FBQztvQkFDQSxPQUFPLEVBQUUsRUFBRTtvQkFDWCxLQUFLLEVBQUUsRUFBRTtpQkFDVixDQUFDO1lBRUosSUFBSSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7WUFFOUIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7b0JBQzVCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNqRCxJQUFJLFNBQVMsRUFBRSxDQUFDO3dCQUNkLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQzt3QkFDdEUsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7d0JBQ3RFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDeEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7NEJBQ25CLElBQUksRUFBRSxRQUFROzRCQUNkLE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDOzRCQUN2QixTQUFTO3lCQUNWLENBQUMsQ0FBQzt3QkFDSCxrQkFBa0IsR0FBRyxLQUFLLENBQUM7b0JBQzdCLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsSUFBSyxNQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ2pDLElBQUksT0FBTyxLQUFLLEtBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7d0JBQ3ZELElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFOzRCQUN0QyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dDQUNuQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDOzRCQUN4QyxDQUFDO3dCQUNILENBQUMsQ0FBQyxDQUFDO29CQUNMLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLGtCQUFrQixFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO29CQUNuQixJQUFJLEVBQUUsUUFBUTtvQkFDZCxPQUFPO29CQUNQLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztpQkFDM0IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQVE7UUFDdEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUFrQixFQUFFLEtBQUssR0FBRyxLQUFLO1FBQzdDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsT0FBTztpQkFDVCxjQUFjLENBQUMsVUFBVSxDQUFDO2lCQUMxQixTQUFTLENBQ1IsQ0FBQyxHQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUNyQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQ3pCLENBQUM7UUFDTixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLFVBQWUsRUFBRSxLQUFLLEdBQUcsS0FBSztRQUN2Qyx3Q0FBd0M7UUFDeEMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRW5DLDhGQUE4RjtRQUM5Rix5Q0FBeUM7UUFDekMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUM3RCxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFnQixFQUFFLEdBQVcsRUFBRSxFQUFFO2dCQUN6RCxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2xCLE9BQU87Z0JBQ1QsQ0FBQztnQkFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsS0FBVSxFQUFFLEtBQVUsRUFBRSxVQUFtQjtRQUNsRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzFELE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdkQsSUFBSSxTQUFTLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNsRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFDLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7dUdBMWhCVSxtQkFBbUI7MkZBQW5CLG1CQUFtQiwrdkNBRnBCLEVBQUU7OzJGQUVELG1CQUFtQjtrQkFIL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYjs7MEJBK0RJLFFBQVE7OzBCQUNSLFFBQVE7eUNBOURGLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBQ2dDLGFBQWE7c0JBQW5ELFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTmdab25lLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1pb1NlcnZpY2UgfSBmcm9tICcuL2Zvcm1pby5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1pb0FsZXJ0cyB9IGZyb20gJy4vY29tcG9uZW50cy9hbGVydHMvZm9ybWlvLmFsZXJ0cyc7XG5pbXBvcnQgeyBGb3JtaW9BcHBDb25maWcgfSBmcm9tICcuL2Zvcm1pby5jb25maWcnO1xuaW1wb3J0IHsgRm9ybWlvRXJyb3IsIEZvcm1pb0Zvcm0sIEZvcm1pb09wdGlvbnMsIEZvcm1pb1JlZnJlc2hWYWx1ZSB9IGZyb20gJy4vZm9ybWlvLmNvbW1vbic7XG5pbXBvcnQgeyBhc3NpZ24sIGdldCwgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBDdXN0b21UYWdzU2VydmljZSB9IGZyb20gJy4vY3VzdG9tLXRhZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJ0Bmb3JtaW8vanMnO1xuaW1wb3J0IHsgQWxlcnRzUG9zaXRpb24gfSBmcm9tICcuL3R5cGVzL2FsZXJ0cy1wb3NpdGlvbic7XG5jb25zdCB7IEV2YWx1YXRvciwgZmFzdENsb25lRGVlcCB9ID0gVXRpbHM7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWlvQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBmb3JtPzogRm9ybWlvRm9ybTtcbiAgQElucHV0KCkgc3VibWlzc2lvbj86IGFueSA9IHt9O1xuICBASW5wdXQoKSBzcmM/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHVybD86IHN0cmluZztcbiAgQElucHV0KCkgc2VydmljZT86IEZvcm1pb1NlcnZpY2U7XG4gIEBJbnB1dCgpIG9wdGlvbnM/OiBGb3JtaW9PcHRpb25zO1xuICBASW5wdXQoKSBub2V2YWwgPyA9IEV2YWx1YXRvci5ub2V2YWw7XG4gIEBJbnB1dCgpIGZvcm1pb09wdGlvbnM/OiBhbnk7XG4gIEBJbnB1dCgpIHJlbmRlck9wdGlvbnM/OiBhbnk7XG4gIEBJbnB1dCgpIHJlYWRPbmx5ID8gPSBmYWxzZTtcbiAgQElucHV0KCkgdmlld09ubHkgPyA9IGZhbHNlO1xuICBASW5wdXQoKSBoaWRlTG9hZGluZyA/ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhpZGVDb21wb25lbnRzPzogc3RyaW5nW107XG4gIEBJbnB1dCgpIHJlZnJlc2g/OiBFdmVudEVtaXR0ZXI8Rm9ybWlvUmVmcmVzaFZhbHVlPjtcbiAgQElucHV0KCkgZXJyb3I/OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQElucHV0KCkgc3VjY2Vzcz86IEV2ZW50RW1pdHRlcjxvYmplY3Q+O1xuICBASW5wdXQoKSBzdWJtaXREb25lPzogRXZlbnRFbWl0dGVyPG9iamVjdD47XG4gIEBJbnB1dCgpIGxhbmd1YWdlPzogRXZlbnRFbWl0dGVyPHN0cmluZz47XG4gIEBJbnB1dCgpIGhvb2tzPzogYW55ID0ge307XG4gIEBJbnB1dCgpIHJlbmRlcmVyPzogYW55O1xuICBASW5wdXQoKSB3YXRjaFN1Ym1pc3Npb25FcnJvcnMgPyA9IGZhbHNlO1xuICBASW5wdXQoKSBkYXRhVGFibGVBY3Rpb25zPyA6IGFueSA9IFtdXG4gIEBPdXRwdXQoKSByZW5kZXIgPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgQE91dHB1dCgpIGN1c3RvbUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIEBPdXRwdXQoKSBmaWxlVXBsb2FkaW5nU3RhdHVzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBzdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgQE91dHB1dCgpIHByZXZQYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIEBPdXRwdXQoKSBuZXh0UGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0PigpO1xuICBAT3V0cHV0KCkgYmVmb3JlU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIEBPdXRwdXQoKSByb3dBZGQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJvd0FkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByb3dFZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByb3dFZGl0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJvd0RlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJvd1NlbGVjdENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY2hhbmdlSXRlbXNQZXJQYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgQE91dHB1dCgpIGludmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBlcnJvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZm9ybUxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHN1Ym1pc3Npb25Mb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybWlvQmFzZUNvbXBvbmVudD4oKTtcbiAgQFZpZXdDaGlsZCgnZm9ybWlvJywgeyBzdGF0aWM6IHRydWUgfSkgZm9ybWlvRWxlbWVudD86IEVsZW1lbnRSZWY8YW55PjtcblxuICBwdWJsaWMgQWxlcnRzUG9zaXRpb24gPSBBbGVydHNQb3NpdGlvbjtcbiAgcHVibGljIGZvcm1pbzogYW55O1xuICBwdWJsaWMgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHVibGljIGFsZXJ0cyA9IG5ldyBGb3JtaW9BbGVydHMoKTtcbiAgcHVibGljIGZvcm1pb1JlYWR5OiBQcm9taXNlPGFueT47XG5cbiAgcHJpdmF0ZSBmb3JtaW9SZWFkeVJlc29sdmU6IGFueTtcbiAgcHJpdmF0ZSBzdWJtaXR0aW5nID0gZmFsc2U7XG4gIHByaXZhdGUgc3VibWlzc2lvblN1Y2Nlc3MgPSBmYWxzZTtcbiAgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgcHVibGljIG5vQWxlcnRzOiBib29sZWFuO1xuICBwdWJsaWMgbGFiZWw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbmdab25lOiBOZ1pvbmUsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGNvbmZpZzogRm9ybWlvQXBwQ29uZmlnLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBjdXN0b21UYWdzPzogQ3VzdG9tVGFnc1NlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1pb1JlYWR5ID0gbmV3IFByb21pc2UoKHJlYWR5KSA9PiB7XG4gICAgICB0aGlzLmZvcm1pb1JlYWR5UmVzb2x2ZSA9IHJlYWR5O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0UmVuZGVyZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyZXI7XG4gIH1cblxuICBnZXRSZW5kZXJlck9wdGlvbnMoKSB7XG4gICAgY29uc3QgZXh0cmFUYWdzID0gdGhpcy5jdXN0b21UYWdzID8gdGhpcy5jdXN0b21UYWdzLnRhZ3MgOiBbXTtcbiAgICByZXR1cm4gYXNzaWduKHt9LCB7XG4gICAgICBpY29uczogZ2V0KHRoaXMuY29uZmlnLCAnaWNvbnMnLCAnZm9udGF3ZXNvbWUnKSxcbiAgICAgIG5vQWxlcnRzOiBnZXQodGhpcy5vcHRpb25zLCAnbm9BbGVydHMnLCB0cnVlKSxcbiAgICAgIHJlYWRPbmx5OiB0aGlzLnJlYWRPbmx5LFxuICAgICAgdmlld0FzSHRtbDogdGhpcy52aWV3T25seSxcbiAgICAgIC4uLih0aGlzLnZpZXdPbmx5ICYmIHsgcmVuZGVyTW9kZTogXCJodG1sXCIgfSksXG4gICAgICBpMThuOiBnZXQodGhpcy5vcHRpb25zLCAnaTE4bicsIG51bGwpLFxuICAgICAgZmlsZVNlcnZpY2U6IGdldCh0aGlzLm9wdGlvbnMsICdmaWxlU2VydmljZScsIG51bGwpLFxuICAgICAgaG9va3M6IHRoaXMuaG9va3MsXG4gICAgICBzYW5pdGl6ZUNvbmZpZzoge1xuICAgICAgICBhZGRUYWdzOiBleHRyYVRhZ3NcbiAgICAgIH0sXG4gICAgICBkYXRhVGFibGVBY3Rpb25zOiB0aGlzLmRhdGFUYWJsZUFjdGlvbnNcbiAgICB9LCB0aGlzLnJlbmRlck9wdGlvbnMgfHwge30pO1xuICB9XG5cbiAgY3JlYXRlUmVuZGVyZXIoKSB7XG4gICAgY29uc3QgUmVuZGVyZXIgPSB0aGlzLmdldFJlbmRlcmVyKCk7XG4gICAgY29uc3QgZm9ybSA9IChuZXcgUmVuZGVyZXIoXG4gICAgICB0aGlzLmZvcm1pb0VsZW1lbnQgPyB0aGlzLmZvcm1pb0VsZW1lbnQubmF0aXZlRWxlbWVudCA6IG51bGwsXG4gICAgICB0aGlzLmZvcm0sXG4gICAgICB0aGlzLmdldFJlbmRlcmVyT3B0aW9ucygpXG4gICAgKSk7XG4gICAgcmV0dXJuIGZvcm0uaW5zdGFuY2U7XG4gIH1cblxuICBzZXRGb3JtVXJsKHVybCkge1xuICAgIHRoaXMuZm9ybWlvLnNldFVybCh1cmwsIHRoaXMuZm9ybWlvT3B0aW9ucyB8fCB7fSk7XG4gIH1cblxuICBzZXRGb3JtKGZvcm06IEZvcm1pb0Zvcm0pIHtcbiAgICB0aGlzLmZvcm0gPSBmb3JtO1xuICAgIGlmICh0aGlzLmZvcm1pbykge1xuICAgICAgdGhpcy5mb3JtaW8uZGVzdHJveSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvcm0udGl0bGUpIHtcbiAgICAgIHRoaXMubGFiZWwgPSB0aGlzLmZvcm0udGl0bGU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZvcm0uY29tcG9uZW50cyAmJiB0aGlzLmZvcm0uY29tcG9uZW50c1swXSkge1xuICAgICAgdGhpcy5sYWJlbCA9IHRoaXMuZm9ybS5jb21wb25lbnRzWzBdLmxhYmVsO1xuICAgIH1cblxuICAgIC8vIENsZWFyIG91dCB0aGUgZWxlbWVudCB0byByZW5kZXIgdGhlIG5ldyBmb3JtLlxuICAgIGlmICh0aGlzLmZvcm1pb0VsZW1lbnQgJiYgdGhpcy5mb3JtaW9FbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuZm9ybWlvRWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgIH1cbiAgICB0aGlzLmZvcm1pbyA9IHRoaXMuY3JlYXRlUmVuZGVyZXIoKTtcblxuICAgIGlmKCF0aGlzLmZvcm1pbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmZvcm1pby5zZXRTdWJtaXNzaW9uKHRoaXMuc3VibWlzc2lvbiwge1xuICAgICAgZnJvbVN1Ym1pc3Npb246IGZhbHNlXG4gICAgfSk7XG4gICAgaWYgKHRoaXMucmVuZGVyT3B0aW9ucyAmJiB0aGlzLnJlbmRlck9wdGlvbnMudmFsaWRhdGVPbkluaXQpIHtcbiAgICAgIHRoaXMuZm9ybWlvLnNldFZhbHVlKHRoaXMuc3VibWlzc2lvbiwge3ZhbGlkYXRlT25Jbml0OiB0cnVlfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVybCkge1xuICAgICAgdGhpcy5zZXRGb3JtVXJsKHRoaXMudXJsKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3JjKSB7XG4gICAgICB0aGlzLnNldEZvcm1VcmwodGhpcy5zcmMpO1xuICAgIH1cbiAgICB0aGlzLmZvcm1pby5ub3N1Ym1pdCA9IHRydWU7XG4gICAgdGhpcy5hdHRhY2hGb3JtRXZlbnRzKCk7XG5cbiAgICByZXR1cm4gdGhpcy5mb3JtaW8ucmVhZHkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlYWR5LmVtaXQodGhpcyk7XG4gICAgICAgIHRoaXMuZm9ybWlvUmVhZHlSZXNvbHZlKHRoaXMuZm9ybWlvKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybWlvLnN1Ym1pc3Npb25SZWFkeSkge1xuICAgICAgICAgIHRoaXMuZm9ybWlvLnN1Ym1pc3Npb25SZWFkeS50aGVuKChzdWJtaXNzaW9uKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pc3Npb25Mb2FkLmVtaXQoc3VibWlzc2lvbik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWlvO1xuICAgIH0pO1xuICB9XG5cbiAgYXR0YWNoRm9ybUV2ZW50cygpIHtcbiAgICB0aGlzLmZvcm1pby5vbigncHJldlBhZ2UnLCAoZGF0YTogYW55KSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5vblByZXZQYWdlKGRhdGEpKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ25leHRQYWdlJywgKGRhdGE6IGFueSkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMub25OZXh0UGFnZShkYXRhKSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdjaGFuZ2UnLCAodmFsdWU6IGFueSwgZmxhZ3M6IGFueSwgaXNNb2RpZmllZDogYm9vbGVhbikgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMub25DaGFuZ2UodmFsdWUsIGZsYWdzLCBpc01vZGlmaWVkKSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyb3dBZGQnLCAoY29tcG9uZW50OiBhbnkpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yb3dBZGQuZW1pdChjb21wb25lbnQpKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0FkZGVkJywgKGRhdGE6IGFueSwgY29tcG9uZW50OiBhbnkpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yb3dBZGRlZC5lbWl0KHtjb21wb25lbnQsIHJvdzogZGF0YX0pKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0VkaXQnLCAoZGF0YTogYW55LCByb3dJbmRleDogbnVtYmVyLCBpbmRleDogbnVtYmVyLCBjb21wb25lbnQ6IGFueSkgPT4gIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLnJvd0VkaXQuZW1pdCh7Y29tcG9uZW50LCByb3c6IGRhdGEsIHJvd0luZGV4LCBpbmRleH0pKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0VkaXRlZCcsIChkYXRhOiBhbnksIHJvd0luZGV4OiBudW1iZXIsIGNvbXBvbmVudDogYW55KSA9PiAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucm93RWRpdGVkLmVtaXQoe2NvbXBvbmVudCwgcm93OiBkYXRhLCByb3dJbmRleH0pKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0RlbGV0ZScsIChkYXRhOiBhbnksIHJvd0luZGV4OiBudW1iZXIsIGluZGV4OiBudW1iZXIsIGNvbXBvbmVudDogYW55KSA9PiAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucm93RGVsZXRlLmVtaXQoe2NvbXBvbmVudCwgcm93OiBkYXRhLCByb3dJbmRleCwgaW5kZXh9KSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyb3dDbGljaycsIChyb3c6IGFueSwgcm93SW5kZXg6IG51bWJlciwgaW5kZXg6IG51bWJlcixjb21wb25lbnQ6IGFueSkgPT4gIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLnJvd0NsaWNrLmVtaXQoe2NvbXBvbmVudCwgcm93LCByb3dJbmRleCwgaW5kZXh9KSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyb3dTZWxlY3RDaGFuZ2UnLCAoc2VsZWN0ZWRSb3dzOiBhbnlbXSwgY29tcG9uZW50OiBhbnkpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yb3dTZWxlY3RDaGFuZ2UuZW1pdCh7c2VsZWN0ZWRSb3dzLCBjb21wb25lbnR9KSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdwYWdlJywgKGN1cnJlbnRQYWdlOiBudW1iZXIsIGNvbXBvbmVudDogYW55KSA9PiAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucGFnZS5lbWl0KHtjdXJyZW50UGFnZSwgY29tcG9uZW50fSkpKTtcbiAgICB0aGlzLmZvcm1pby5vbignY2hhbmdlSXRlbXNQZXJQYWdlJywgKGl0ZW1zUGVyUGFnZTpudW1iZXIpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5jaGFuZ2VJdGVtc1BlclBhZ2UuZW1pdCh7aXRlbXNQZXJQYWdlfSkpKTtcbiAgICB0aGlzLmZvcm1pby5vbignY3VzdG9tRXZlbnQnLCAoZXZlbnQ6IGFueSkgPT5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmN1c3RvbUV2ZW50LmVtaXQoZXZlbnQpKVxuICAgICk7XG5cbiAgICBbJ2ZpbGVVcGxvYWRpbmdTdGFydCcsICdmaWxlVXBsb2FkaW5nRW5kJ10uZm9yRWFjaCgoZXZlbnROYW1lLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdHVzID0gISFpbmRleCA/ICdlbmQnIDogJ3N0YXJ0JztcbiAgICAgIHRoaXMuZm9ybWlvLm9uKGV2ZW50TmFtZSwgKCkgPT5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZmlsZVVwbG9hZGluZ1N0YXR1cy5lbWl0KHN0YXR1cykpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgdGhpcy5mb3JtaW8ub24oJ3N1Ym1pdCcsIChzdWJtaXNzaW9uOiBhbnksIHNhdmVkOiBib29sZWFuKSA9PlxuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuc3VibWl0Rm9ybShzdWJtaXNzaW9uLCBzYXZlZCkpXG4gICAgKTtcbiAgICB0aGlzLmZvcm1pby5vbignZXJyb3InLCAoZXJyOiBhbnkpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLnN1Ym1pc3Npb25TdWNjZXNzID0gZmFsc2U7XG4gICAgICByZXR1cm4gdGhpcy5vbkVycm9yKGVycik7XG4gICAgfSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyZW5kZXInLCAoKSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yZW5kZXIuZW1pdCgpKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ2Zvcm1Mb2FkJywgKGxvYWRlZEZvcm06IGFueSkgPT5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmZvcm1Mb2FkLmVtaXQobG9hZGVkRm9ybSkpXG4gICAgKTtcbiAgfVxuXG4gIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBleHRyYVRhZ3MgPSB0aGlzLmN1c3RvbVRhZ3MgPyB0aGlzLmN1c3RvbVRhZ3MudGFncyA6IFtdO1xuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zOiBGb3JtaW9PcHRpb25zID0ge1xuICAgICAgZXJyb3JzOiB7XG4gICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgZml4IHRoZSBmb2xsb3dpbmcgZXJyb3JzIGJlZm9yZSBzdWJtaXR0aW5nLidcbiAgICAgIH0sXG4gICAgICBhbGVydHM6IHtcbiAgICAgICAgc3VibWl0TWVzc2FnZTogJ1N1Ym1pc3Npb24gQ29tcGxldGUuJ1xuICAgICAgfSxcbiAgICAgIGRpc2FibGVBbGVydHM6IGZhbHNlLFxuICAgICAgaG9va3M6IHtcbiAgICAgICAgYmVmb3JlU3VibWl0OiBudWxsXG4gICAgICB9LFxuICAgICAgc2FuaXRpemVDb25maWc6IHtcbiAgICAgICAgYWRkVGFnczogZXh0cmFUYWdzXG4gICAgICB9LFxuICAgICAgYWxlcnRzUG9zaXRpb246IEFsZXJ0c1Bvc2l0aW9uLnRvcCxcbiAgICB9O1xuICAgIHRoaXMub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdE9wdGlvbnMsIHRoaXMub3B0aW9ucyk7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5kaXNhYmxlQWxlcnRzKSB7XG4gICAgICB0aGlzLm9wdGlvbnMuYWxlcnRzUG9zaXRpb24gPSBBbGVydHNQb3NpdGlvbi5ub25lO1xuICAgIH1cbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIEV2YWx1YXRvci5ub2V2YWwgPSB0aGlzLm5vZXZhbDtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcblxuICAgIGlmICh0aGlzLmxhbmd1YWdlKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMubGFuZ3VhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuZm9ybWlvLmxhbmd1YWdlID0gdGhpcy5sYW5ndWFnZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubGFuZ3VhZ2Uuc3Vic2NyaWJlKChsYW5nOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICB0aGlzLmZvcm1pby5sYW5ndWFnZSA9IGxhbmc7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnJlZnJlc2gpIHtcbiAgICAgIHRoaXMucmVmcmVzaC5zdWJzY3JpYmUoKHJlZnJlc2g6IEZvcm1pb1JlZnJlc2hWYWx1ZSkgPT5cbiAgICAgICAgdGhpcy5vblJlZnJlc2gocmVmcmVzaClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc3Vic2NyaWJlKChlcnI6IGFueSkgPT4gdGhpcy5vbkVycm9yKGVycikpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN1Y2Nlc3MpIHtcbiAgICAgIHRoaXMuc3VjY2Vzcy5zdWJzY3JpYmUoKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydCh7XG4gICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgfHwgZ2V0KHRoaXMub3B0aW9ucywgJ2FsZXJ0cy5zdWJtaXRNZXNzYWdlJylcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdWJtaXREb25lKSB7XG4gICAgICB0aGlzLnN1Ym1pdERvbmUuc3Vic2NyaWJlKChzdWJtaXNzaW9uOiBvYmplY3QpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtaW8uZW1pdCgnc3VibWl0RG9uZScsIHN1Ym1pc3Npb24pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3JjKSB7XG4gICAgICBpZiAoIXRoaXMuc2VydmljZSkge1xuICAgICAgICB0aGlzLnNlcnZpY2UgPSBuZXcgRm9ybWlvU2VydmljZSh0aGlzLnNyYyk7XG4gICAgICB9XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnNldEZvcm1Gcm9tU3JjKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVybCAmJiAhdGhpcy5zZXJ2aWNlKSB7XG4gICAgICB0aGlzLnNlcnZpY2UgPSBuZXcgRm9ybWlvU2VydmljZSh0aGlzLnVybCk7XG4gICAgfVxuICB9XG5cbiAgc2V0Rm9ybUZyb21TcmMoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLmxvYWRGb3JtKHsgcGFyYW1zOiB7IGxpdmU6IDEgfSB9KS5zdWJzY3JpYmUoXG4gICAgICAoZm9ybTogRm9ybWlvRm9ybSkgPT4ge1xuICAgICAgICBpZiAoZm9ybSAmJiBmb3JtLmNvbXBvbmVudHMpIHtcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldEZvcm0oZm9ybSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBhIHN1Ym1pc3Npb24gaXMgYWxzbyBwcm92aWRlZC5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGlzRW1wdHkodGhpcy5zdWJtaXNzaW9uKSAmJlxuICAgICAgICAgIHRoaXMuc2VydmljZSAmJlxuICAgICAgICAgIHRoaXMuc2VydmljZS5mb3JtaW8uc3VibWlzc2lvbklkXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuc2VydmljZS5sb2FkU3VibWlzc2lvbigpLnN1YnNjcmliZShcbiAgICAgICAgICAgIChzdWJtaXNzaW9uOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1pby5vcHRpb25zLnJlYWRPbmx5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLnN1Ym1pc3Npb24gPSB0aGlzLmZvcm1pby5zdWJtaXNzaW9uID0gc3VibWlzc2lvbjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4gdGhpcy5vbkVycm9yKGVycilcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyID0+IHRoaXMub25FcnJvcihlcnIpXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmZvcm1pbykge1xuICAgICAgdGhpcy5mb3JtaW8uZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uUmVmcmVzaChyZWZyZXNoOiBGb3JtaW9SZWZyZXNoVmFsdWUpIHtcbiAgICB0aGlzLmZvcm1pb1JlYWR5LnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKHJlZnJlc2guZm9ybSkge1xuICAgICAgICB0aGlzLmZvcm1pby5zZXRGb3JtKHJlZnJlc2guZm9ybSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgaWYgKHJlZnJlc2guc3VibWlzc2lvbikge1xuICAgICAgICAgICAgdGhpcy5mb3JtaW8uc2V0U3VibWlzc2lvbihyZWZyZXNoLnN1Ym1pc3Npb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHJlZnJlc2guc3VibWlzc2lvbikge1xuICAgICAgICB0aGlzLmZvcm1pby5zZXRTdWJtaXNzaW9uKHJlZnJlc2guc3VibWlzc2lvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKHJlZnJlc2gucHJvcGVydHkpIHtcbiAgICAgICAgICBjYXNlICdzdWJtaXNzaW9uJzpcbiAgICAgICAgICAgIHRoaXMuZm9ybWlvLnN1Ym1pc3Npb24gPSByZWZyZXNoLnZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnZm9ybSc6XG4gICAgICAgICAgICB0aGlzLmZvcm1pby5mb3JtID0gcmVmcmVzaC52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBhbnkpIHtcbiAgICBFdmFsdWF0b3Iubm9ldmFsID0gdGhpcy5ub2V2YWw7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG5cbiAgICBpZiAoY2hhbmdlcy5mb3JtICYmIGNoYW5nZXMuZm9ybS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRGb3JtKGNoYW5nZXMuZm9ybS5jdXJyZW50VmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtaW9SZWFkeS50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjaGFuZ2VzLnN1Ym1pc3Npb24gJiYgY2hhbmdlcy5zdWJtaXNzaW9uLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICB0aGlzLmZvcm1pby5zZXRTdWJtaXNzaW9uKGNoYW5nZXMuc3VibWlzc2lvbi5jdXJyZW50VmFsdWUsIHtcbiAgICAgICAgICBmcm9tU3VibWlzc2lvbjogIWNoYW5nZXMuc3VibWlzc2lvbi5maXJzdENoYW5nZVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZXMuaGlkZUNvbXBvbmVudHMgJiYgY2hhbmdlcy5oaWRlQ29tcG9uZW50cy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgY29uc3QgaGlkZGVuQ29tcG9uZW50cyA9IGNoYW5nZXMuaGlkZUNvbXBvbmVudHMuY3VycmVudFZhbHVlO1xuICAgICAgICB0aGlzLmZvcm1pby5vcHRpb25zLmhpZGUgPSBoaWRkZW5Db21wb25lbnRzO1xuICAgICAgICB0aGlzLmZvcm1pby5ldmVyeUNvbXBvbmVudCgoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgY29tcG9uZW50Lm9wdGlvbnMuaGlkZSA9IGhpZGRlbkNvbXBvbmVudHM7XG4gICAgICAgICAgaWYgKGhpZGRlbkNvbXBvbmVudHMuaW5jbHVkZXMoY29tcG9uZW50LmNvbXBvbmVudC5rZXkpKSB7XG4gICAgICAgICAgICBjb21wb25lbnQudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvblByZXZQYWdlKGRhdGE6IGFueSkge1xuICAgIHRoaXMuYWxlcnRzLnNldEFsZXJ0cyhbXSk7XG4gICAgdGhpcy5wcmV2UGFnZS5lbWl0KGRhdGEpO1xuICB9XG5cbiAgb25OZXh0UGFnZShkYXRhOiBhbnkpIHtcbiAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydHMoW10pO1xuICAgIHRoaXMubmV4dFBhZ2UuZW1pdChkYXRhKTtcbiAgfVxuXG4gIG9uU3VibWl0KHN1Ym1pc3Npb246IGFueSwgc2F2ZWQ6IGJvb2xlYW4sIG5vZW1pdD86IGJvb2xlYW4pIHtcbiAgICB0aGlzLnN1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnN1Ym1pc3Npb25TdWNjZXNzID0gdHJ1ZTtcblxuICAgIHRoaXMuZm9ybWlvLnNldFZhbHVlKGZhc3RDbG9uZURlZXAoc3VibWlzc2lvbiksIHtcbiAgICAgIG5vVmFsaWRhdGU6IHRydWUsXG4gICAgICBub0NoZWNrOiB0cnVlXG4gICAgfSk7XG5cbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIHRoaXMuZm9ybWlvLmVtaXQoJ3N1Ym1pdERvbmUnLCBzdWJtaXNzaW9uKTtcbiAgICB9XG4gICAgaWYgKCFub2VtaXQpIHtcbiAgICAgIHRoaXMuc3VibWl0LmVtaXQoc3VibWlzc2lvbik7XG4gICAgfVxuICAgIGlmICghdGhpcy5zdWNjZXNzKSB7XG4gICAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydCh7XG4gICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgbWVzc2FnZTogZ2V0KHRoaXMub3B0aW9ucywgJ2FsZXJ0cy5zdWJtaXRNZXNzYWdlJylcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uRXJyb3IoZXJyOiBhbnkpIHtcbiAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydHMoW10pO1xuICAgIHRoaXMuc3VibWl0dGluZyA9IGZhbHNlO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgICBpZiAoIWVycikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIE1ha2Ugc3VyZSBpdCBpcyBhbiBhcnJheS5cbiAgICBjb25zdCBlcnJvcnMgPSBBcnJheS5pc0FycmF5KGVycikgPyBlcnIgOiBbZXJyXTtcblxuICAgIC8vIEVtaXQgdGhlc2UgZXJyb3JzIGFnYWluLlxuICAgIHRoaXMuZXJyb3JDaGFuZ2UuZW1pdChlcnJvcnMpO1xuXG4gICAgaWYgKGVyci5zaWxlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5mb3JtaW8gJiYgZXJyb3JzLmxlbmd0aCkge1xuICAgICAgdGhpcy5mb3JtaW8uZW1pdCgnc3VibWl0RXJyb3InLCBlcnJvcnMpO1xuICAgIH1cblxuICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIG9uZSBhbmQgc2V0IHRoZSBhbGVydHMgYXJyYXkuXG4gICAgZXJyb3JzLmZvckVhY2goKGVycm9yOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgcGF0aHMsXG4gICAgICB9ID0gZXJyb3JcbiAgICAgICAgPyBlcnJvci5kZXRhaWxzXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvci5kZXRhaWxzLm1hcCgoZGV0YWlsKSA9PiBkZXRhaWwubWVzc2FnZSksXG4gICAgICAgICAgICBwYXRoczogZXJyb3IuZGV0YWlscy5tYXAoKGRldGFpbCkgPT4gZGV0YWlsLnBhdGgpLFxuICAgICAgICAgIH1cbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UgfHwgZXJyb3IudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHBhdGhzOiAoZXJyb3IucGF0aCB8fCBlcnJvci5mb3JtYXR0ZWRLZXlPclBhdGgpID8gW2Vycm9yLnBhdGggfHwgZXJyb3IuZm9ybWF0dGVkS2V5T3JQYXRoXSA6IFtdLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgcGF0aHM6IFtdLFxuICAgICAgICB9O1xuXG4gICAgICBsZXQgc2hvdWxkRXJyb3JEaXNwbGF5ID0gdHJ1ZTtcblxuICAgICAgaWYgKHRoaXMuZm9ybWlvKSB7XG4gICAgICAgIHBhdGhzLmZvckVhY2goKHBhdGgsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5mb3JtaW8uZ2V0Q29tcG9uZW50KHBhdGgpO1xuICAgICAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSBBcnJheS5pc0FycmF5KGNvbXBvbmVudCkgPyBjb21wb25lbnQgOiBbY29tcG9uZW50XTtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VUZXh0ID0gQXJyYXkuaXNBcnJheShtZXNzYWdlKSA/IG1lc3NhZ2VbaW5kZXhdIDogbWVzc2FnZTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuZm9yRWFjaCgoY29tcCkgPT4gY29tcC5zZXRDdXN0b21WYWxpZGl0eShtZXNzYWdlVGV4dCwgdHJ1ZSkpO1xuICAgICAgICAgICAgdGhpcy5hbGVydHMuYWRkQWxlcnQoe1xuICAgICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZVtpbmRleF0sXG4gICAgICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2hvdWxkRXJyb3JEaXNwbGF5ID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLlZQQVRfRU5BQkxFRCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgZXJyb3IgPT09J3N0cmluZycgJiYgdGhpcy5mb3JtaW8uY29tcG9uZW50cykge1xuICAgICAgICAgICAgdGhpcy5mb3JtaW8uY29tcG9uZW50cy5mb3JFYWNoKChjb21wKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChjb21wICYmIGNvbXAudHlwZSAhPT0gJ2J1dHRvbicpIHtcbiAgICAgICAgICAgICAgICBjb21wLnNldEN1c3RvbVZhbGlkaXR5KG1lc3NhZ2UsIHRydWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHNob3VsZEVycm9yRGlzcGxheSkge1xuICAgICAgICB0aGlzLmFsZXJ0cy5hZGRBbGVydCh7XG4gICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICBjb21wb25lbnQ6IGVycm9yLmNvbXBvbmVudCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5mb3JtaW8gJiYgIXRoaXMubm9BbGVydHMpIHtcbiAgICAgIHRoaXMuZm9ybWlvLnNob3dFcnJvcnMoZXJyb3JzKTtcbiAgICB9XG4gIH1cblxuICBmb2N1c09uQ29tcG9uZXQoa2V5OiBhbnkpIHtcbiAgICBpZiAodGhpcy5mb3JtaW8pIHtcbiAgICAgIHRoaXMuZm9ybWlvLmZvY3VzT25Db21wb25lbnQoa2V5KTtcbiAgICB9XG4gIH1cblxuICBzdWJtaXRFeGVjdXRlKHN1Ym1pc3Npb246IG9iamVjdCwgc2F2ZWQgPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLnNlcnZpY2UgJiYgIXRoaXMudXJsICYmICFzYXZlZCkge1xuICAgICAgdGhpcy5zZXJ2aWNlXG4gICAgICAgIC5zYXZlU3VibWlzc2lvbihzdWJtaXNzaW9uKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChzdWI6IHt9KSA9PiB0aGlzLm9uU3VibWl0KHN1YiwgdHJ1ZSksXG4gICAgICAgICAgZXJyID0+IHRoaXMub25FcnJvcihlcnIpXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25TdWJtaXQoc3VibWlzc2lvbiwgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHN1Ym1pdEZvcm0oc3VibWlzc2lvbjogYW55LCBzYXZlZCA9IGZhbHNlKSB7XG4gICAgLy8gS2VlcCBkb3VibGUgc3VibWl0cyBmcm9tIG9jY3VycmluZy4uLlxuICAgIGlmICh0aGlzLnN1Ym1pdHRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5mb3JtaW8uc2V0TWV0YWRhdGEoc3VibWlzc2lvbik7XG4gICAgdGhpcy5zdWJtaXNzaW9uU3VjY2VzcyA9IGZhbHNlO1xuICAgIHRoaXMuc3VibWl0dGluZyA9IHRydWU7XG4gICAgdGhpcy5iZWZvcmVTdWJtaXQuZW1pdChzdWJtaXNzaW9uKTtcblxuICAgIC8vIGlmIHRoZXkgcHJvdmlkZSBhIGJlZm9yZVN1Ym1pdCBob29rLCB0aGVuIGFsbG93IHRoZW0gdG8gYWx0ZXIgdGhlIHN1Ym1pc3Npb24gYXN5bmNocm9ub3VzbHlcbiAgICAvLyBvciBldmVuIHByb3ZpZGUgYSBjdXN0b20gRXJyb3IgbWV0aG9kLlxuICAgIGNvbnN0IGJlZm9yZVN1Ym1pdCA9IGdldCh0aGlzLm9wdGlvbnMsICdob29rcy5iZWZvcmVTdWJtaXQnKTtcbiAgICBpZiAoYmVmb3JlU3VibWl0KSB7XG4gICAgICBiZWZvcmVTdWJtaXQoc3VibWlzc2lvbiwgKGVycjogRm9ybWlvRXJyb3IsIHN1Yjogb2JqZWN0KSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICB0aGlzLm9uRXJyb3IoZXJyKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdWJtaXRFeGVjdXRlKHN1Yiwgc2F2ZWQpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3VibWl0RXhlY3V0ZShzdWJtaXNzaW9uLCBzYXZlZCk7XG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2UodmFsdWU6IGFueSwgZmxhZ3M6IGFueSwgaXNNb2RpZmllZDogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLndhdGNoU3VibWlzc2lvbkVycm9ycyAmJiAhdGhpcy5zdWJtaXNzaW9uU3VjY2Vzcykge1xuICAgICAgY29uc3QgZXJyb3JzID0gZ2V0KHRoaXMsICdmb3JtaW8uZXJyb3JzJywgW10pO1xuICAgICAgY29uc3QgYWxlcnRzID0gZ2V0KHRoaXMsICdhbGVydHMuYWxlcnRzJywgW10pO1xuICAgICAgY29uc3Qgc3VibWl0dGVkID0gZ2V0KHRoaXMsICdmb3JtaW8uc3VibWl0dGVkJywgZmFsc2UpO1xuICAgICAgaWYgKHN1Ym1pdHRlZCAmJiAoZXJyb3JzLmxlbmd0aCB8fCBhbGVydHMubGVuZ3RoKSkge1xuICAgICAgICB0aGlzLm9uRXJyb3IoZXJyb3JzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2hhbmdlLmVtaXQoey4uLnZhbHVlLCBmbGFncywgaXNNb2RpZmllZH0pO1xuICB9XG59XG4iXX0=
@@ -2,10 +2,10 @@ import { Component } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/router";
4
4
  export class FormioAuthComponent {
5
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioAuthComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: FormioAuthComponent, selector: "ng-component", ngImport: i0, template: "<div class=\"card card-primary panel panel-default\">\n <div class=\"card-header panel-heading\">\n <ul class=\"nav nav-tabs card-header-tabs\">\n <li class=\"nav-item\" role=\"presentation\" routerLinkActive=\"active\"><a class=\"nav-link\" routerLink=\"login\" routerLinkActive=\"active\">Login</a></li>\n <li class=\"nav-item\" role=\"presentation\" routerLinkActive=\"active\"><a class=\"nav-link\" routerLink=\"register\" routerLinkActive=\"active\">Register</a></li>\n </ul>\n </div>\n <div class=\"card-body panel-body\">\n <router-outlet></router-outlet>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }] });
5
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioAuthComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: FormioAuthComponent, selector: "ng-component", ngImport: i0, template: "<div class=\"card card-primary panel panel-default\">\n <div class=\"card-header panel-heading\">\n <ul class=\"nav nav-tabs card-header-tabs\">\n <li class=\"nav-item\" role=\"presentation\" routerLinkActive=\"active\"><a class=\"nav-link\" routerLink=\"login\" routerLinkActive=\"active\">Login</a></li>\n <li class=\"nav-item\" role=\"presentation\" routerLinkActive=\"active\"><a class=\"nav-link\" routerLink=\"register\" routerLinkActive=\"active\">Register</a></li>\n </ul>\n </div>\n <div class=\"card-body panel-body\">\n <router-outlet></router-outlet>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }] });
7
7
  }
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioAuthComponent, decorators: [{
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioAuthComponent, decorators: [{
9
9
  type: Component,
10
10
  args: [{ template: "<div class=\"card card-primary panel panel-default\">\n <div class=\"card-header panel-heading\">\n <ul class=\"nav nav-tabs card-header-tabs\">\n <li class=\"nav-item\" role=\"presentation\" routerLinkActive=\"active\"><a class=\"nav-link\" routerLink=\"login\" routerLinkActive=\"active\">Login</a></li>\n <li class=\"nav-item\" role=\"presentation\" routerLinkActive=\"active\"><a class=\"nav-link\" routerLink=\"register\" routerLinkActive=\"active\">Register</a></li>\n </ul>\n </div>\n <div class=\"card-body panel-body\">\n <router-outlet></router-outlet>\n </div>\n</div>\n" }]
11
11
  }] });
@@ -7,10 +7,10 @@ export class FormioAuthConfig {
7
7
  register;
8
8
  resetpass;
9
9
  oauth;
10
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioAuthConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioAuthConfig });
10
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioAuthConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioAuthConfig });
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioAuthConfig, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioAuthConfig, decorators: [{
14
14
  type: Injectable
15
15
  }] });
16
16
  export var FormioOauthType;
@@ -16,18 +16,18 @@ export class FormioAuth {
16
16
  static forChild(config) {
17
17
  return extendRouter(FormioAuth, config, FormioAuthRoutes);
18
18
  }
19
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioAuth, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: FormioAuth, declarations: [FormioAuthComponent,
19
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioAuth, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.2", ngImport: i0, type: FormioAuth, declarations: [FormioAuthComponent,
21
21
  FormioAuthLoginComponent,
22
22
  FormioAuthRegisterComponent,
23
23
  FormioResetPassComponent], imports: [CommonModule,
24
24
  FormioModule,
25
25
  RouterModule] });
26
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioAuth, imports: [CommonModule,
26
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioAuth, imports: [CommonModule,
27
27
  FormioModule,
28
28
  RouterModule] });
29
29
  }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioAuth, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioAuth, decorators: [{
31
31
  type: NgModule,
32
32
  args: [{
33
33
  imports: [
@@ -190,10 +190,10 @@ export class FormioAuthService {
190
190
  })
191
191
  .catch(() => this.logoutError());
192
192
  }
193
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioAuthService, deps: [{ token: i1.FormioAppConfig }, { token: i2.FormioAuthConfig }], target: i0.ɵɵFactoryTarget.Injectable });
194
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioAuthService });
193
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioAuthService, deps: [{ token: i1.FormioAppConfig }, { token: i2.FormioAuthConfig }], target: i0.ɵɵFactoryTarget.Injectable });
194
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioAuthService });
195
195
  }
196
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioAuthService, decorators: [{
196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioAuthService, decorators: [{
197
197
  type: Injectable
198
198
  }], ctorParameters: () => [{ type: i1.FormioAppConfig }, { type: i2.FormioAuthConfig }] });
199
199
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1mb3JtaW8vYXV0aC9zcmMvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR2pFLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7QUFHcEMsTUFBTSxPQUFPLGlCQUFpQjtJQTZCbkI7SUFDQTtJQTdCRixJQUFJLENBQU07SUFDVixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBRXRCLFNBQVMsQ0FBUztJQUNsQixPQUFPLENBQXVCO0lBQzlCLFFBQVEsQ0FBdUI7SUFFL0IsWUFBWSxDQUFTO0lBQ3JCLFVBQVUsQ0FBdUI7SUFDakMsTUFBTSxDQUF1QjtJQUM3QixPQUFPLENBQW9CO0lBRTNCLGFBQWEsQ0FBUztJQUN0QixXQUFXLENBQXVCO0lBRWxDLEtBQUssQ0FBbUI7SUFDeEIsWUFBWSxDQUFNO0lBQ2xCLFdBQVcsQ0FBTTtJQUVqQixZQUFZLENBQWdCO0lBQzVCLFdBQVcsQ0FBZ0I7SUFDM0IsU0FBUyxDQUFnQjtJQUN6QixVQUFVLEdBQVEsRUFBRSxDQUFDO0lBQ3JCLGdCQUFnQixHQUFRLEVBQUUsQ0FBQztJQUMzQixLQUFLLENBQU07SUFDWCxFQUFFLEdBQVEsRUFBRSxDQUFDO0lBRXBCLFlBQ1MsU0FBMEIsRUFDMUIsTUFBd0I7UUFEeEIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFFL0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFakIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENB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QVMsQ0FBQyxFQUFFLENBQUM7WUFDL0UsT0FBUSxNQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFFRCxNQUFNLENBQUMsTUFBTSxFQUFFO2FBQ1osSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNULElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkIsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsU0FBUyxlQUFlLENBQUMsRUFBRSxDQUFDO2dCQUN0RCxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxTQUFTLGVBQWUsQ0FBQyxFQUFFLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO2dCQUM5RixZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsU0FBUyxlQUFlLENBQUMsQ0FBQztZQUN2RCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDckMsQ0FBQzt1R0FwTlUsaUJBQWlCOzJHQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybWlvQXV0aENvbmZpZyB9IGZyb20gJy4vYXV0aC5jb25maWcnO1xuaW1wb3J0IHsgRm9ybWlvQXBwQ29uZmlnIH0gZnJvbSAnQGZvcm1pby9hbmd1bGFyJztcbmltcG9ydCB7IGdldCwgZWFjaCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBGb3JtaW8gfSBmcm9tICdAZm9ybWlvL2pzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZvcm1pb0F1dGhTZXJ2aWNlIHtcbiAgcHVibGljIHVzZXI6IGFueTtcbiAgcHVibGljIGF1dGhlbnRpY2F0ZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgbG9naW5Gb3JtOiBzdHJpbmc7XG4gIHB1YmxpYyBvbkxvZ2luOiBFdmVudEVtaXR0ZXI8b2JqZWN0PjtcbiAgcHVibGljIG9uTG9nb3V0OiBFdmVudEVtaXR0ZXI8b2JqZWN0PjtcblxuICBwdWJsaWMgcmVnaXN0ZXJGb3JtOiBzdHJpbmc7XG4gIHB1YmxpYyBvblJlZ2lzdGVyOiBFdmVudEVtaXR0ZXI8b2JqZWN0PjtcbiAgcHVibGljIG9uVXNlcjogRXZlbnRFbWl0dGVyPG9iamVjdD47XG4gIHB1YmxpYyBvbkVycm9yOiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICBwdWJsaWMgcmVzZXRQYXNzRm9ybTogc3RyaW5nO1xuICBwdWJsaWMgb25SZXNldFBhc3M6IEV2ZW50RW1pdHRlcjxvYmplY3Q+O1xuXG4gIHB1YmxpYyByZWFkeTogUHJvbWlzZTxib29sZWFuPjtcbiAgcHVibGljIHJlYWR5UmVzb2x2ZTogYW55O1xuICBwdWJsaWMgcmVhZHlSZWplY3Q6IGFueTtcblxuICBwdWJsaWMgcHJvamVjdFJlYWR5PzogUHJvbWlzZTxhbnk+O1xuICBwdWJsaWMgYWNjZXNzUmVhZHk/OiBQcm9taXNlPGFueT47XG4gIHB1YmxpYyB1c2VyUmVhZHk/OiBQcm9taXNlPGFueT47XG4gIHB1YmxpYyBmb3JtQWNjZXNzOiBhbnkgPSB7fTtcbiAgcHVibGljIHN1Ym1pc3Npb25BY2Nlc3M6IGFueSA9IHt9O1xuICBwdWJsaWMgcm9sZXM6IGFueTtcbiAgcHVibGljIGlzOiBhbnkgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgYXBwQ29uZmlnOiBGb3JtaW9BcHBDb25maWcsXG4gICAgcHVibGljIGNvbmZpZzogRm9ybWlvQXV0aENvbmZpZ1xuICApIHtcbiAgICB0aGlzLnVzZXIgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuYXBwQ29uZmlnICYmIHRoaXMuYXBwQ29uZmlnLmFwcFVybCkge1xuICAgICAgRm9ybWlvLnNldEJhc2VVcmwodGhpcy5hcHBDb25maWcuYXBpVXJsKTtcbiAgICAgIEZvcm1pby5zZXRQcm9qZWN0VXJsKHRoaXMuYXBwQ29uZmlnLmFwcFVybCk7XG4gICAgICBGb3JtaW8uZm9ybU9ubHkgPSAhIXRoaXMuYXBwQ29uZmlnLmZvcm1Pbmx5O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdZb3UgbXVzdCBwcm92aWRlIGFuIEFwcENvbmZpZyB3aXRoaW4geW91ciBhcHBsaWNhdGlvbiEnKTtcbiAgICB9XG5cbiAgICB0aGlzLmxvZ2luRm9ybSA9XG4gICAgICB0aGlzLmFwcENvbmZpZy5hcHBVcmwgK1xuICAgICAgJy8nICtcbiAgICAgIGdldCh0aGlzLmNvbmZpZywgJ2xvZ2luLmZvcm0nLCAndXNlci9sb2dpbicpO1xuICAgIHRoaXMucmVnaXN0ZXJGb3JtID1cbiAgICAgIHRoaXMuYXBwQ29uZmlnLmFwcFVybCArXG4gICAgICAnLycgK1xuICAgICAgZ2V0KHRoaXMuY29uZmlnLCAncmVnaXN0ZXIuZm9ybScsICd1c2VyL3JlZ2lzdGVyJyk7XG4gICAgdGhpcy5yZXNldFBhc3NGb3JtID1cbiAgICAgIHRoaXMuYXBwQ29uZmlnLmFwcFVybCArXG4gICAgICAnLycgK1xuICAgICAgZ2V0KHRoaXMuY29uZmlnLCAncmVnaXN0ZXIuZm9ybScsICdyZXNldHBhc3MnKTtcbiAgICB0aGlzLm9uTG9naW4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5vbkxvZ291dCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLm9uUmVnaXN0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5vblVzZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5vbkVycm9yID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgdGhpcy5yZWFkeSA9IG5ldyBQcm9taXNlKChyZXNvbHZlOiBhbnksIHJlamVjdDogYW55KSA9PiB7XG4gICAgICB0aGlzLnJlYWR5UmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICB0aGlzLnJlYWR5UmVqZWN0ID0gcmVqZWN0O1xuICAgIH0pO1xuXG4gICAgLy8gUmVnaXN0ZXIgZm9yIHRoZSBjb3JlIGV2ZW50cy5cbiAgICBGb3JtaW8uZXZlbnRzLm9uKCdmb3JtaW8uYmFkVG9rZW4nLCAoKSA9PiB0aGlzLmxvZ291dEVycm9yKCkpO1xuICAgIEZvcm1pby5ldmVudHMub24oJ2Zvcm1pby5zZXNzaW9uRXhwaXJlZCcsICgpID0+IHRoaXMubG9nb3V0RXJyb3IoKSk7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5kZWxheUF1dGgpIHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uTG9naW5TdWJtaXQoc3VibWlzc2lvbjogb2JqZWN0KSB7XG4gICAgdGhpcy5zZXRVc2VyKHN1Ym1pc3Npb24pO1xuICAgIHRoaXMub25Mb2dpbi5lbWl0KHN1Ym1pc3Npb24pO1xuICB9XG5cbiAgb25SZWdpc3RlclN1Ym1pdChzdWJtaXNzaW9uOiBvYmplY3QpIHtcbiAgICB0aGlzLnNldFVzZXIoc3VibWlzc2lvbik7XG4gICAgdGhpcy5vblJlZ2lzdGVyLmVtaXQoc3VibWlzc2lvbik7XG4gIH1cblxuICBvblJlc2V0UGFzc1N1Ym1pdChzdWJtaXNzaW9uOiBvYmplY3QpIHtcbiAgICB0aGlzLm9uUmVzZXRQYXNzLmVtaXQoc3VibWlzc2lvbik7XG4gIH1cblxuICBpbml0KCkge1xuICAgIHRoaXMucHJvamVjdFJlYWR5ID0gRm9ybWlvLm1ha2VTdGF0aWNSZXF1ZXN0KHRoaXMuYXBwQ29uZmlnLmFwcFVybCkudGhlbihcbiAgICAgIChwcm9qZWN0OiBhbnkpID0+IHtcbiAgICAgICAgZWFjaChwcm9qZWN0LmFjY2VzcywgKGFjY2VzczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5mb3JtQWNjZXNzW2FjY2Vzcy50eXBlXSA9IGFjY2Vzcy5yb2xlcztcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgKCk6IGFueSA9PiB7XG4gICAgICAgIHRoaXMuZm9ybUFjY2VzcyA9IHt9O1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gR2V0IHRoZSBhY2Nlc3MgZm9yIHRoaXMgcHJvamVjdC5cbiAgICB0aGlzLmFjY2Vzc1JlYWR5ID0gRm9ybWlvLm1ha2VTdGF0aWNSZXF1ZXN0KFxuICAgICAgdGhpcy5hcHBDb25maWcuYXBwVXJsICsgJy9hY2Nlc3MnXG4gICAgKVxuICAgICAgLnRoZW4oKGFjY2VzczogYW55KSA9PiB7XG4gICAgICAgIGVhY2goYWNjZXNzLmZvcm1zLCAoZm9ybTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5zdWJtaXNzaW9uQWNjZXNzW2Zvcm0ubmFtZV0gPSB7fTtcbiAgICAgICAgICBmb3JtLnN1Ym1pc3Npb25BY2Nlc3MuZm9yRWFjaCgoc3ViQWNjZXNzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3VibWlzc2lvbkFjY2Vzc1tmb3JtLm5hbWVdW3N1YkFjY2Vzcy50eXBlXSA9IHN1YkFjY2Vzcy5yb2xlcztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucm9sZXMgPSBhY2Nlc3Mucm9sZXM7XG4gICAgICAgIHJldHVybiBhY2Nlc3M7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpOiBhbnkgPT4ge1xuICAgICAgICBpZiAoZXJyID09PSAnVG9rZW4gRXhwaXJlZCcgfHwgZXJyID09PSAnQmFkIFRva2VuJykge1xuICAgICAgICAgIHRoaXMuc2V0VXNlcihudWxsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvbGVzID0ge307XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSlcblxuICAgIGxldCBjdXJyZW50VXNlclByb21pc2U6IFByb21pc2U8YW55PjtcbiAgICBpZiAodGhpcy5jb25maWcub2F1dGgpIHtcbiAgICAgIC8vIE1ha2UgYSBmaXggdG8gdGhlIGhhc2ggdG8gcmVtb3ZlIHN0YXJ0aW5nIFwiL1wiIHRoYXQgYW5ndWxhciBtaWdodCBwdXQgdGhlcmUuXG4gICAgICBpZiAod2luZG93LmxvY2F0aW9uLmhhc2ggJiYgd2luZG93LmxvY2F0aW9uLmhhc2gubWF0Y2goL14jXFwvYWNjZXNzX3Rva2VuLykpIHtcbiAgICAgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgd2luZG93LmxvY2F0aW9uLmhhc2gucmVwbGFjZSgvXiNcXC9hY2Nlc3NfdG9rZW4vLCAnI2FjY2Vzc190b2tlbicpKTtcbiAgICAgIH1cblxuICAgICAgLy8gSW5pdGlhdGUgdGhlIFNTTyBpZiB0aGV5IHByb3ZpZGUgb2F1dGggc2V0dGluZ3MuXG4gICAgICBjdXJyZW50VXNlclByb21pc2UgPSBGb3JtaW8uc3NvSW5pdCh0aGlzLmNvbmZpZy5vYXV0aC50eXBlLCB0aGlzLmNvbmZpZy5vYXV0aC5vcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudFVzZXJQcm9taXNlID0gRm9ybWlvLmN1cnJlbnRVc2VyKG51bGwsIHtcbiAgICAgICAgaWdub3JlQ2FjaGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMudXNlclJlYWR5ID0gY3VycmVudFVzZXJQcm9taXNlLnRoZW4oKHVzZXI6IGFueSkgPT4ge1xuICAgICAgdGhpcy5zZXRVc2VyKHVzZXIpO1xuICAgICAgcmV0dXJuIHVzZXI7XG4gICAgfSkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgdGhpcy5zZXRVc2VyKG51bGwpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH0pO1xuXG4gICAgLy8gVHJpZ2dlciB3ZSBhcmUgcmVkeSB3aGVuIGFsbCBwcm9taXNlcyBoYXZlIHJlc29sdmVkLlxuICAgIGlmICh0aGlzLmFjY2Vzc1JlYWR5KSB7XG4gICAgICB0aGlzLmFjY2Vzc1JlYWR5XG4gICAgICAgIC50aGVuKCgpID0+IHRoaXMucHJvamVjdFJlYWR5KVxuICAgICAgICAudGhlbigoKSA9PiB0aGlzLnVzZXJSZWFkeSlcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5yZWFkeVJlc29sdmUodHJ1ZSkpXG4gICAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHRoaXMucmVhZHlSZWplY3QoZXJyKSk7XG4gICAgfVxuICB9XG5cbiAgc2V0VXNlcih1c2VyOiBhbnkpIHtcbiAgICBjb25zdCBuYW1lc3BhY2UgPSBGb3JtaW8ubmFtZXNwYWNlIHx8ICdmb3JtaW8nO1xuICAgIGlmICh1c2VyKSB7XG4gICAgICB0aGlzLnVzZXIgPSB1c2VyO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oYCR7bmFtZXNwYWNlfUFwcFVzZXJgLCBKU09OLnN0cmluZ2lmeSh1c2VyKSk7XG4gICAgICB0aGlzLnNldFVzZXJSb2xlcygpO1xuICAgICAgRm9ybWlvLnNldFVzZXIodXNlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXNlciA9IG51bGw7XG4gICAgICB0aGlzLmlzID0ge307XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShgJHtuYW1lc3BhY2V9QXBwVXNlcmApO1xuICAgICAgRm9ybWlvLmNsZWFyQ2FjaGUoKTtcbiAgICAgIEZvcm1pby5zZXRVc2VyKG51bGwpO1xuICAgIH1cblxuICAgIHRoaXMuYXV0aGVudGljYXRlZCA9ICEhRm9ybWlvLmdldFRva2VuKCk7XG4gICAgdGhpcy5vblVzZXIuZW1pdCh0aGlzLnVzZXIpO1xuICB9XG5cbiAgc2V0VXNlclJvbGVzKCkge1xuICAgIGlmICh0aGlzLmFjY2Vzc1JlYWR5KSB7XG4gICAgICB0aGlzLmFjY2Vzc1JlYWR5LnRoZW4oKCkgPT4ge1xuICAgICAgICBlYWNoKHRoaXMucm9sZXMsIChyb2xlOiBhbnksIHJvbGVOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy51c2VyLnJvbGVzLmluZGV4T2Yocm9sZS5faWQpICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5pc1tyb2xlTmFtZV0gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBsb2dvdXRFcnJvcigpIHtcbiAgICB0aGlzLnNldFVzZXIobnVsbCk7XG4gICAgY29uc3QgbmFtZXNwYWNlID0gRm9ybWlvLm5hbWVzcGFjZSB8fCAnZm9ybWlvJztcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShgJHtuYW1lc3BhY2V9VG9rZW5gKTtcbiAgICB0aGlzLm9uRXJyb3IuZW1pdCgpO1xuICB9XG5cbiAgbG9nb3V0KCkge1xuICAgIGNvbnN0IG5hbWVzcGFjZSA9IEZvcm1pby5uYW1lc3BhY2UgfHwgJ2Zvcm1pbyc7XG4gICAgY29uc3QgdG9rZW5OYW1lID0gYCR7bmFtZXNwYWNlfVRva2VuYDtcblxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRva2VuTmFtZSk7XG4gICAgaWYgKChGb3JtaW8gYXMgYW55KS50b2tlbnMgJiYgKEZvcm1pbyBhcyBhbnkpLnRva2Vucy5oYXNPd25Qcm9wZXJ0eSh0b2tlbk5hbWUpKSB7XG4gICAgICBkZWxldGUgKEZvcm1pbyBhcyBhbnkpLnRva2Vuc1t0b2tlbk5hbWVdO1xuICAgIH1cblxuICAgIEZvcm1pby5sb2dvdXQoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnNldFVzZXIobnVsbCk7XG4gICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbShgJHtuYW1lc3BhY2V9TG9nb3V0QXV0aFVybGApKSB7XG4gICAgICAgICAgd2luZG93Lm9wZW4obG9jYWxTdG9yYWdlLmdldEl0ZW0oYCR7bmFtZXNwYWNlfUxvZ291dEF1dGhVcmxgKSwgbnVsbCwgJ3dpZHRoPTEwMjAsaGVpZ2h0PTYxOCcpO1xuICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGAke25hbWVzcGFjZX1Mb2dvdXRBdXRoVXJsYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkxvZ291dC5lbWl0KCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHRoaXMubG9nb3V0RXJyb3IoKSk7XG4gIH1cbn1cbiJdfQ==
@@ -10,10 +10,10 @@ export class FormioAuthLoginComponent {
10
10
  constructor(service) {
11
11
  this.service = service;
12
12
  }
13
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioAuthLoginComponent, deps: [{ token: i1.FormioAuthService }], target: i0.ɵɵFactoryTarget.Component });
14
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: FormioAuthLoginComponent, selector: "ng-component", ngImport: i0, template: "<formio [src]=\"service.loginForm\" [renderOptions]=\"renderOptions\" (submit)=\"service.onLoginSubmit($event)\"></formio>\n", dependencies: [{ kind: "component", type: i2.FormioComponent, selector: "formio" }] });
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioAuthLoginComponent, deps: [{ token: i1.FormioAuthService }], target: i0.ɵɵFactoryTarget.Component });
14
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: FormioAuthLoginComponent, selector: "ng-component", ngImport: i0, template: "<formio [src]=\"service.loginForm\" [renderOptions]=\"renderOptions\" (submit)=\"service.onLoginSubmit($event)\"></formio>\n", dependencies: [{ kind: "component", type: i2.FormioComponent, selector: "formio" }] });
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioAuthLoginComponent, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioAuthLoginComponent, decorators: [{
17
17
  type: Component,
18
18
  args: [{ template: "<formio [src]=\"service.loginForm\" [renderOptions]=\"renderOptions\" (submit)=\"service.onLoginSubmit($event)\"></formio>\n" }]
19
19
  }], ctorParameters: () => [{ type: i1.FormioAuthService }] });
@@ -10,10 +10,10 @@ export class FormioAuthRegisterComponent {
10
10
  constructor(service) {
11
11
  this.service = service;
12
12
  }
13
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioAuthRegisterComponent, deps: [{ token: i1.FormioAuthService }], target: i0.ɵɵFactoryTarget.Component });
14
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: FormioAuthRegisterComponent, selector: "ng-component", ngImport: i0, template: "<formio [src]=\"service.registerForm\" [renderOptions]=\"renderOptions\" (submit)=\"service.onRegisterSubmit($event)\"></formio>\n", dependencies: [{ kind: "component", type: i2.FormioComponent, selector: "formio" }] });
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioAuthRegisterComponent, deps: [{ token: i1.FormioAuthService }], target: i0.ɵɵFactoryTarget.Component });
14
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: FormioAuthRegisterComponent, selector: "ng-component", ngImport: i0, template: "<formio [src]=\"service.registerForm\" [renderOptions]=\"renderOptions\" (submit)=\"service.onRegisterSubmit($event)\"></formio>\n", dependencies: [{ kind: "component", type: i2.FormioComponent, selector: "formio" }] });
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioAuthRegisterComponent, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioAuthRegisterComponent, decorators: [{
17
17
  type: Component,
18
18
  args: [{ template: "<formio [src]=\"service.registerForm\" [renderOptions]=\"renderOptions\" (submit)=\"service.onRegisterSubmit($event)\"></formio>\n" }]
19
19
  }], ctorParameters: () => [{ type: i1.FormioAuthService }] });
@@ -7,10 +7,10 @@ export class FormioResetPassComponent {
7
7
  constructor(service) {
8
8
  this.service = service;
9
9
  }
10
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioResetPassComponent, deps: [{ token: i1.FormioAuthService }], target: i0.ɵɵFactoryTarget.Component });
11
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: FormioResetPassComponent, selector: "ng-component", ngImport: i0, template: "<formio [src]=\"service.resetPassForm\" (submit)=\"service.onResetPassSubmit($event)\"></formio>\n", dependencies: [{ kind: "component", type: i2.FormioComponent, selector: "formio" }] });
10
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioResetPassComponent, deps: [{ token: i1.FormioAuthService }], target: i0.ɵɵFactoryTarget.Component });
11
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: FormioResetPassComponent, selector: "ng-component", ngImport: i0, template: "<formio [src]=\"service.resetPassForm\" (submit)=\"service.onResetPassSubmit($event)\"></formio>\n", dependencies: [{ kind: "component", type: i2.FormioComponent, selector: "formio" }] });
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioResetPassComponent, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioResetPassComponent, decorators: [{
14
14
  type: Component,
15
15
  args: [{ template: "<formio [src]=\"service.resetPassForm\" (submit)=\"service.onResetPassSubmit($event)\"></formio>\n" }]
16
16
  }], ctorParameters: () => [{ type: i1.FormioAuthService }] });
@@ -14,10 +14,10 @@ export class FormioAlertsComponent {
14
14
  getComponent(event, alert) {
15
15
  this.focusComponent.emit(alert.component.key);
16
16
  }
17
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioAlertsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: FormioAlertsComponent, selector: "formio-alerts", inputs: { alerts: "alerts" }, outputs: { focusComponent: "focusComponent" }, ngImport: i0, template: "<div *ngFor=\"let alert of alerts.alerts\" class=\"alert alert-{{ alert.type }}\" role=\"alert\" (click)=\"getComponent($event, alert)\">\n {{alert.message | parseHtmlContent}}\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i2.ParseHtmlContentPipe, name: "parseHtmlContent" }] });
17
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioAlertsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: FormioAlertsComponent, selector: "formio-alerts", inputs: { alerts: "alerts" }, outputs: { focusComponent: "focusComponent" }, ngImport: i0, template: "<div *ngFor=\"let alert of alerts.alerts\" class=\"alert alert-{{ alert.type }}\" role=\"alert\" (click)=\"getComponent($event, alert)\">\n {{alert.message | parseHtmlContent}}\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i2.ParseHtmlContentPipe, name: "parseHtmlContent" }] });
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FormioAlertsComponent, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioAlertsComponent, decorators: [{
21
21
  type: Component,
22
22
  args: [{ selector: 'formio-alerts', template: "<div *ngFor=\"let alert of alerts.alerts\" class=\"alert alert-{{ alert.type }}\" role=\"alert\" (click)=\"getComponent($event, alert)\">\n {{alert.message | parseHtmlContent}}\n</div>\n" }]
23
23
  }], propDecorators: { alerts: [{
@@ -9,10 +9,10 @@ export class ParseHtmlContentPipe {
9
9
  const parsedContent = new DOMParser().parseFromString(content, 'text/html').body.childNodes[0];
10
10
  return parsedContent?.textContent;
11
11
  }
12
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ParseHtmlContentPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
13
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: ParseHtmlContentPipe, name: "parseHtmlContent", pure: false });
12
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ParseHtmlContentPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
13
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.2", ngImport: i0, type: ParseHtmlContentPipe, name: "parseHtmlContent", pure: false });
14
14
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ParseHtmlContentPipe, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ParseHtmlContentPipe, decorators: [{
16
16
  type: Pipe,
17
17
  args: [{ name: 'parseHtmlContent', pure: false }]
18
18
  }] });