trm-tmpl 3.2.1 → 3.2.2

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 (57) hide show
  1. package/esm2022/lib/app/i18n/i18n-key.enum.mjs +2 -1
  2. package/esm2022/lib/app/i18n/keys.mjs +3 -2
  3. package/esm2022/lib/app/models/constants.mjs +4 -2
  4. package/esm2022/lib/app/pages/components/constructor-form/components/constructor-field-date/constructor-field-date.component.mjs +24 -38
  5. package/esm2022/lib/app/pages/components/constructor-form/components/constructor-field-iframe/card-sdk.service.mjs +41 -0
  6. package/esm2022/lib/app/pages/components/constructor-form/components/constructor-field-iframe/constructor-field-iframe.component.mjs +102 -118
  7. package/esm2022/lib/app/pages/components/constructor-form/components/constructor-field-iframe/iframe-validator-directive.directive.mjs +88 -0
  8. package/esm2022/lib/app/pages/components/constructor-form/components/constructor-field-select/constructor-field-select.component.mjs +15 -37
  9. package/esm2022/lib/app/pages/components/constructor-form/components/constructor-field-text/constructor-field-text.component.mjs +10 -4
  10. package/esm2022/lib/app/pages/components/constructor-form/components/index.mjs +3 -1
  11. package/esm2022/lib/app/pages/components/constructor-form/components/ps-select/ps-select.component.mjs +20 -24
  12. package/esm2022/lib/app/pages/components/constructor-form/constructor-form.component.mjs +89 -66
  13. package/esm2022/lib/app/pages/components/constructor-form/models/field-template.mjs +2 -1
  14. package/esm2022/lib/app/pages/components/constructor-form/models/index.mjs +1 -2
  15. package/esm2022/lib/app/pages/components/constructor-form/models/payment-field.mjs +1 -1
  16. package/esm2022/lib/app/pages/components/constructor-form/services/constructor-form.service.mjs +39 -24
  17. package/esm2022/lib/app/pages/components/terminal-layout/terminal-layout.component.mjs +11 -9
  18. package/esm2022/lib/app/services/api-errors.service.mjs +16 -34
  19. package/esm2022/lib/app/services/csrf.resolver.mjs +6 -18
  20. package/esm2022/lib/app/services/error.interceptior.mjs +2 -2
  21. package/esm2022/lib/app/services/local-storage.mjs +70 -0
  22. package/esm2022/lib/app/services/script-loader.mjs +4 -7
  23. package/esm2022/lib/app/services/session.data-source.mjs +8 -8
  24. package/esm2022/lib/app/services/translation/translate-lang-storage.service.mjs +95 -79
  25. package/esm2022/lib/app/shared/components/terminal-lang-switcher/terminal-lang-switcher.component.mjs +10 -8
  26. package/esm2022/lib/app/shared/components/terminal-layout-tpl/terminal-layout-tpl.component.mjs +6 -6
  27. package/esm2022/lib/app/shared/components/trm-select/trm-select.component.mjs +1 -1
  28. package/esm2022/lib/app/terminal-tpl.component.mjs +5 -12
  29. package/fesm2022/trm-tmpl.mjs +738 -587
  30. package/fesm2022/trm-tmpl.mjs.map +1 -1
  31. package/lib/app/i18n/i18n-key.enum.d.ts +1 -0
  32. package/lib/app/models/constants.d.ts +3 -1
  33. package/lib/app/pages/components/constructor-form/components/constructor-field-date/constructor-field-date.component.d.ts +7 -10
  34. package/lib/app/pages/components/constructor-form/components/constructor-field-iframe/card-sdk.service.d.ts +18 -0
  35. package/lib/app/pages/components/constructor-form/components/constructor-field-iframe/constructor-field-iframe.component.d.ts +25 -27
  36. package/lib/app/pages/components/constructor-form/components/constructor-field-iframe/iframe-validator-directive.directive.d.ts +16 -0
  37. package/lib/app/pages/components/constructor-form/components/constructor-field-select/constructor-field-select.component.d.ts +6 -10
  38. package/lib/app/pages/components/constructor-form/components/constructor-field-text/constructor-field-text.component.d.ts +3 -3
  39. package/lib/app/pages/components/constructor-form/components/index.d.ts +2 -0
  40. package/lib/app/pages/components/constructor-form/components/ps-select/ps-select.component.d.ts +4 -6
  41. package/lib/app/pages/components/constructor-form/constructor-form.component.d.ts +5 -8
  42. package/lib/app/pages/components/constructor-form/models/index.d.ts +0 -1
  43. package/lib/app/pages/components/constructor-form/models/payment-field.d.ts +1 -1
  44. package/lib/app/pages/components/constructor-form/services/constructor-form.service.d.ts +8 -5
  45. package/lib/app/pages/components/terminal-layout/terminal-layout.component.d.ts +1 -0
  46. package/lib/app/services/api-errors.service.d.ts +4 -10
  47. package/lib/app/services/csrf.resolver.d.ts +1 -4
  48. package/lib/app/services/local-storage.d.ts +24 -0
  49. package/lib/app/services/script-loader.d.ts +1 -2
  50. package/lib/app/services/session.data-source.d.ts +1 -1
  51. package/lib/app/services/translation/translate-lang-storage.service.d.ts +22 -23
  52. package/lib/app/shared/components/terminal-lang-switcher/terminal-lang-switcher.component.d.ts +4 -34
  53. package/lib/app/shared/components/terminal-layout-tpl/terminal-layout-tpl.component.d.ts +1 -2
  54. package/lib/app/shared/components/trm-select/trm-select.component.d.ts +1 -2
  55. package/package.json +1 -1
  56. package/esm2022/lib/app/pages/components/constructor-form/models/constants.mjs +0 -4
  57. package/lib/app/pages/components/constructor-form/models/constants.d.ts +0 -3
@@ -32,7 +32,7 @@ export class ConstructorFieldTextComponent {
32
32
  this.dropSpecialCharacters = true;
33
33
  this.I18N_KEY = I18N_KEY;
34
34
  this.maskedValueChange = new EventEmitter();
35
- this.onChange = (value) => {
35
+ this.onChange = (_value) => {
36
36
  };
37
37
  this.onTouch = () => {
38
38
  };
@@ -52,7 +52,9 @@ export class ConstructorFieldTextComponent {
52
52
  this.control?.markAsUntouched();
53
53
  e.preventDefault();
54
54
  e.stopPropagation();
55
- target.value = this.maskPipe.transform(target.value, this.mask, { patterns: this.maskPatterns }).replace(/^-|-$/, '');
55
+ target.value = this.maskPipe
56
+ .transform(target.value, this.mask, { patterns: this.maskPatterns })
57
+ .replace(/^-|-$/, '');
56
58
  setTimeout(() => {
57
59
  this.control?.updateValueAndValidity();
58
60
  if (selectionStart === selectionEnd && e.inputType !== 'deleteContentBackward') {
@@ -71,7 +73,7 @@ export class ConstructorFieldTextComponent {
71
73
  return;
72
74
  }
73
75
  const value = t.value;
74
- let content = e.clipboardData.getData('text');
76
+ let content = e.clipboardData?.getData('text') || '';
75
77
  let selectionStart = removeSpecSymbols(t.value.slice(0, t.selectionStart)).length + removeSpecSymbols(content).length;
76
78
  if (value) {
77
79
  const arr = Array.from(value);
@@ -92,6 +94,10 @@ export class ConstructorFieldTextComponent {
92
94
  return;
93
95
  }
94
96
  const target = e.target;
97
+ if (this.type === PaymentFieldTypeEnum.Email) {
98
+ this._emitMaskedValueChanges(target);
99
+ return;
100
+ }
95
101
  const value = this.control?.value;
96
102
  let selectionStart = removeSpecSymbols(target.value.slice(0, target.selectionStart)).length;
97
103
  const mask = this.maskSrv.getMaskByValue(this.config.mask, value);
@@ -187,4 +193,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
187
193
  type: ViewChild,
188
194
  args: [NgxMaskDirective]
189
195
  }] } });
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0b3ItZmllbGQtdGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZXJtaW5hbC10ZW1wbGF0ZS9zcmMvbGliL2FwcC9wYWdlcy9jb21wb25lbnRzL2NvbnN0cnVjdG9yLWZvcm0vY29tcG9uZW50cy9jb25zdHJ1Y3Rvci1maWVsZC10ZXh0L2NvbnN0cnVjdG9yLWZpZWxkLXRleHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVybWluYWwtdGVtcGxhdGUvc3JjL2xpYi9hcHAvcGFnZXMvY29tcG9uZW50cy9jb25zdHJ1Y3Rvci1mb3JtL2NvbXBvbmVudHMvY29uc3RydWN0b3ItZmllbGQtdGV4dC9jb25zdHJ1Y3Rvci1maWVsZC10ZXh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBZ0Isb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0UsT0FBTyxFQUdMLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULG1CQUFtQixFQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFpQixrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWpGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUs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QVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBEb0NoZWNrLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIGluamVjdCxcclxuICBJbmplY3RvcixcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRk9STUFUX0RBVEUsIFBheW1lbnRGaWVsZCwgUGF5bWVudEZpZWxkVHlwZUVudW0gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQge1xyXG4gIEFic3RyYWN0Q29udHJvbCxcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBGb3Jtc01vZHVsZSxcclxuICBOR19WQUxVRV9BQ0NFU1NPUixcclxuICBOZ0NvbnRyb2wsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZVxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNYXREYXRlcGlja2VyLCBNYXREYXRlcGlja2VySW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcclxuaW1wb3J0IG1vbWVudGpzIGZyb20gJ21vbWVudC10aW1lem9uZSc7XHJcbmltcG9ydCB7IGluc2VydFJlbW92ZVRyaWdnZXIgfSBmcm9tICcuLy4uLy4uLy4uLy4uLy4uL2hlbHBlcnMvaW5zZXJ0UmVtb3ZlVHJpZ2dlcic7XHJcbmltcG9ydCB7IElOSVRJQUxfUEhPTkVfTUFTSywgTWFza1Jlc29sdmVyIH0gZnJvbSAnLi8uLi8uLi8uLi8uLi8uLi9oZWxwZXJzL21hc2stcmVzb2x2ZXInO1xyXG5pbXBvcnQgeyBOZ3hNYXNrRGlyZWN0aXZlLCBOZ3hNYXNrUGlwZSB9IGZyb20gJ25neC1tYXNrJztcclxuaW1wb3J0IHsgSTE4Tl9LRVkgfSBmcm9tICcuLy4uLy4uLy4uLy4uLy4uL2kxOG4nO1xyXG5pbXBvcnQgeyByZW1vdmVTcGVjU3ltYm9scyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2hlbHBlcnMvcGhvbmUtY29kZXMnO1xyXG5pbXBvcnQgeyBJbnB1dE1hc2tDb3JyZWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9kaXJlY3RpdmVzL2lucHV0LW1hc2stY29ycmVjdG9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRhYkluZGV4Rm9jdXNEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi8uLi9kaXJlY3RpdmVzL3RhYi1pbmRleC1mb2N1cy5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVCeUtleVBpcGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZWQvcGlwZXMvdHJhbnNsYXRlLWJ5LWtleS5waXBlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtY29uc3RydWN0b3ItZmllbGQtdGV4dCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29uc3RydWN0b3ItZmllbGQtdGV4dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9jb25zdHJ1Y3Rvci1maWVsZC10ZXh0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGFuaW1hdGlvbnM6IFtpbnNlcnRSZW1vdmVUcmlnZ2VyXSxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENvbnN0cnVjdG9yRmllbGRUZXh0Q29tcG9uZW50KSxcclxuICAgICAgICAgICAgbXVsdGk6IHRydWVcclxuICAgICAgICB9XHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgTmd4TWFza0RpcmVjdGl2ZSwgSW5wdXRNYXNrQ29ycmVjdG9yLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBUYWJJbmRleEZvY3VzRGlyZWN0aXZlLCBNYXREYXRlcGlja2VySW5wdXQsIFRyYW5zbGF0ZUJ5S2V5UGlwZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnN0cnVjdG9yRmllbGRUZXh0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICAgIHByaXZhdGUgY2QgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgcHJpdmF0ZSBtYXNrU3J2ID0gaW5qZWN0KE1hc2tSZXNvbHZlcik7XHJcbiAgICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcclxuICAgIHByaXZhdGUgbWFza1BpcGUgPSBpbmplY3QoTmd4TWFza1BpcGUpO1xyXG5cclxuICAgIHByaXZhdGUgdW5zdWI6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSBfdHlwZSA9ICd0ZXh0JztcclxuXHJcbiAgICBnZXQgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlYWRvbmx5IHx8IGZhbHNlO1xyXG4gICAgfTtcclxuICAgIHJlYWRvbmx5IEZPUk1BVF9EQVRFID0gRk9STUFUX0RBVEU7XHJcbiAgICBtYXNrOiBzdHJpbmc7XHJcbiAgICBkcm9wU3BlY2lhbENoYXJhY3RlcnMgPSB0cnVlO1xyXG4gICAgSTE4Tl9LRVkgPSBJMThOX0tFWTtcclxuXHJcbiAgICBASW5wdXQoKSBjb25maWc6IFBheW1lbnRGaWVsZDtcclxuICAgIGdldCBpbnB1dG1vZGUoKTogXCJ0ZXh0XCIgfCBcInRlbFwiIHwgXCJudW1lcmljXCIgfCBcImVtYWlsXCIgfCBcInVybFwiIHwgXCJub25lXCIge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb25maWcuaW5wdXRNb2RlIHx8ICd0ZXh0JztcclxuICAgIH1cclxuICAgIEBJbnB1dCgpIG1hdERhdGVwaWNrZXI6IE1hdERhdGVwaWNrZXI8bW9tZW50anMuTW9tZW50PjtcclxuICAgIEBJbnB1dCgpIHRhYkluZGV4OiBudW1iZXI7XHJcbiAgICBAT3V0cHV0KCkgbWFza2VkVmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgY29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gICAgQFZpZXdDaGlsZChOZ3hNYXNrRGlyZWN0aXZlKSBkaXI6IE5neE1hc2tEaXJlY3RpdmU7XHJcbiAgICBtYXNrUGF0dGVybnM7XHJcbiAgICBzcGVjaWFsQ2hhcmFjdGVyczogc3RyaW5nW107XHJcbiAgICBvbkNoYW5nZSA9ICh2YWx1ZSkgPT4ge1xyXG4gICAgfTtcclxuICAgIG9uVG91Y2ggPSAoKSA9PiB7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgICBnZXQgdHlwZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5jb25maWcudHlwZSA9PT0gUGF5bWVudEZpZWxkVHlwZUVudW0uRW1haWwpIHtcclxuICAgICAgICAgICAgcmV0dXJuICdlbWFpbCc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl90eXBlO1xyXG4gICAgfVxyXG4gICAgZ2V0IG5hbWUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLm5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uRGF0ZUlucHV0KGU6IElucHV0RXZlbnQpIHtcclxuICAgICAgICBjb25zdCB0YXJnZXQ6IEhUTUxJbnB1dEVsZW1lbnQgPSBlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgICAgIGxldCB7c2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZH0gPSB0YXJnZXQ7XHJcbiAgICAgICAgdGhpcy5jb250cm9sPy5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICB0YXJnZXQudmFsdWUgPSB0aGlzLm1hc2tQaXBlLnRyYW5zZm9ybSh0YXJnZXQudmFsdWUsIHRoaXMubWFzaywge3BhdHRlcm5zOiB0aGlzLm1hc2tQYXR0ZXJuc30pLnJlcGxhY2UoL14tfC0kLywnJyk7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChzZWxlY3Rpb25TdGFydCA9PT0gc2VsZWN0aW9uRW5kICYmIGUuaW5wdXRUeXBlICE9PSAnZGVsZXRlQ29udGVudEJhY2t3YXJkJykge1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKHRoaXMuc3BlY2lhbENoYXJhY3RlcnMuaW5jbHVkZXModGFyZ2V0LnZhbHVlW3NlbGVjdGlvbkVuZCAtIDFdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbkVuZCArPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblN0YXJ0ICs9IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvblBhc3RlKGU6IENsaXBib2FyZEV2ZW50KSB7XHJcbiAgICAgICAgY29uc3QgdCA9IGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gUGF5bWVudEZpZWxkVHlwZUVudW0uRW1haWwpIHtcclxuICAgICAgICAgIHRoaXMuX2VtaXRNYXNrZWRWYWx1ZUNoYW5nZXModCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gdC52YWx1ZTtcclxuICAgICAgICBsZXQgY29udGVudCA9IGUuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0Jyk7XHJcbiAgICAgICAgbGV0IHNlbGVjdGlvblN0YXJ0ID0gcmVtb3ZlU3BlY1N5bWJvbHModC52YWx1ZS5zbGljZSgwLCB0LnNlbGVjdGlvblN0YXJ0KSkubGVuZ3RoICsgcmVtb3ZlU3BlY1N5bWJvbHMoY29udGVudCkubGVuZ3RoO1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBhcnIgPSBBcnJheS5mcm9tKHZhbHVlKTtcclxuICAgICAgICAgICAgYXJyLnNwbGljZSh0LnNlbGVjdGlvblN0YXJ0LCB0LnNlbGVjdGlvbkVuZCAtIHQuc2VsZWN0aW9uU3RhcnQsIC4uLkFycmF5LmZyb20oY29udGVudCkpO1xyXG4gICAgICAgICAgICBjb250ZW50ID0gcmVtb3ZlU3BlY1N5bWJvbHMoYXJyLmpvaW4oJycpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tYXNrID0gdGhpcy5tYXNrU3J2LmdldE1hc2tCeVZhbHVlKHRoaXMuY29uZmlnLm1hc2ssIGNvbnRlbnQpO1xyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUoY29udGVudCk7XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMuX2VtaXRNYXNrZWRWYWx1ZUNoYW5nZXModCwgc2VsZWN0aW9uU3RhcnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbklucHV0KGU6IElucHV0RXZlbnQpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2w/Lm1hcmtBc1VudG91Y2hlZCgpO1xyXG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgaWYgKHRoaXMubWF0RGF0ZXBpY2tlcikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgdmFsdWU6IHN0cmluZyA9IHRoaXMuY29udHJvbD8udmFsdWU7XHJcbiAgICAgICAgbGV0IHNlbGVjdGlvblN0YXJ0ID0gcmVtb3ZlU3BlY1N5bWJvbHModGFyZ2V0LnZhbHVlLnNsaWNlKDAsIHRhcmdldC5zZWxlY3Rpb25TdGFydCkpLmxlbmd0aDtcclxuICAgICAgICBjb25zdCBtYXNrID0gdGhpcy5tYXNrU3J2LmdldE1hc2tCeVZhbHVlKHRoaXMuY29uZmlnLm1hc2ssIHZhbHVlKTtcclxuICAgICAgICBpZiAoIW1hc2sgfHwgbWFzayA9PT0gSU5JVElBTF9QSE9ORV9NQVNLKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tYXNrID0gbWFzaztcclxuXHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5fZW1pdE1hc2tlZFZhbHVlQ2hhbmdlcyh0YXJnZXQsIHNlbGVjdGlvblN0YXJ0KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9lbWl0TWFza2VkVmFsdWVDaGFuZ2VzKHRhcmdldCwgcG9zaXRpb25JblVubWFza2VkVmFsdWU/KSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXNrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hc2tlZFZhbHVlQ2hhbmdlLmVtaXQodGFyZ2V0LnZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLl9zZXRTZWxlY3Rpb24odGFyZ2V0LCBwb3NpdGlvbkluVW5tYXNrZWRWYWx1ZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2V0U2VsZWN0aW9uKHRhcmdldDogSFRNTElucHV0RWxlbWVudCwgcG9zaXRpb25JblVubWFza2VkVmFsdWU/KSB7XHJcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gUGF5bWVudEZpZWxkVHlwZUVudW0uRW1haWwpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHBvc2l0aW9uTWFza2VkVmFsdWUgPSAwO1xyXG4gICAgICAgIGxldCBpID0gMDtcclxuICAgICAgICB3aGlsZSAocG9zaXRpb25JblVubWFza2VkVmFsdWUgPiBpICYmIHRhcmdldC52YWx1ZS5sZW5ndGggPiBwb3NpdGlvbk1hc2tlZFZhbHVlKSB7XHJcbiAgICAgICAgICAgIGlmICgvXFxkLy50ZXN0KHRhcmdldC52YWx1ZVtwb3NpdGlvbk1hc2tlZFZhbHVlXSkpIHtcclxuICAgICAgICAgICAgICAgIGkrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwb3NpdGlvbk1hc2tlZFZhbHVlKys7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZShwb3NpdGlvbk1hc2tlZFZhbHVlLCBwb3NpdGlvbk1hc2tlZFZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sKS5jb250cm9sO1xyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBhcGlFcnJvcigpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2w/LmdldEVycm9yKCdlcnJvcicpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZSkge1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLm1hc2sgPSB0aGlzLm1hc2tTcnYuZ2V0TWFza0J5VmFsdWUodGhpcy5jb25maWcubWFzaywgdmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMubWFzayA9IHRoaXMubWFza1Nydi5nZXRNYXNrQnlWYWx1ZSh0aGlzLmNvbmZpZy5tYXNrKTtcclxuICAgICAgICBpZiAodGhpcy5jb25maWcubWFza1ZhbGlkYXRpb24gIT09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maWcubWFza1ZhbGlkYXRpb24gPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tYXNrUGF0dGVybnMgPSB0aGlzLm1hc2tTcnYuZ2V0UGF0dGVybnModGhpcy5jb25maWcpO1xyXG4gICAgICAgIHRoaXMuc3BlY2lhbENoYXJhY3RlcnMgPSBbLi4udGhpcy5tYXNrU3J2LmdldFNwZWNpYWxDaGFyYWN0ZXJzKHRoaXMuY29uZmlnKV07XHJcbiAgICAgICAgdGhpcy5kcm9wU3BlY2lhbENoYXJhY3RlcnMgPSB0aGlzLmNvbmZpZy5kcm9wU3BlY2lhbENoYXJhY3RlcnMgIT09IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMudW5zdWIubmV4dCgpO1xyXG4gICAgICAgIHRoaXMudW5zdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYgKGNvbnRyb2wpIHtcclxuICA8bGFiZWwgY2xhc3M9XCJ0cm0tbGFiZWxcIlxyXG4gICAgICAgICBbZm9yXT1cImNvbmZpZy5uYW1lXCJcclxuICA+IHt7IGNvbmZpZy5sYWJlbCB8IHRyYW5zIH19IDwvbGFiZWw+XHJcbiAgPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXIgdHJtLWZvcm0tZmllbGQtd3JhcHBlciBjLXRleHRcIlxyXG4gICAgICAgW2NsYXNzLmMtdGV4dC0tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgW2NsYXNzLmMtdGV4dC0tdXBwZXJjYXNlXT1cImNvbmZpZy51cHBlcmNhc2VcIj5cclxuICAgIEBpZiAoIW1hdERhdGVwaWNrZXIpIHtcclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgY2xhc3M9XCJ0cm0tZm9ybS1maWVsZCB0cm0taW5wdXRcIlxyXG4gICAgICAgIFtjbGFzcy50cm0tZm9ybS1maWVsZC0tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb25maWcucGxhY2Vob2xkZXIgfCB0cmFuc1wiXHJcbiAgICAgICAgKGJsdXIpPVwib25Ub3VjaCgpXCJcclxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgICAgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgW3R5cGVdPVwidHlwZVwiXHJcbiAgICAgICAgW25hbWVdPVwibmFtZVwiXHJcbiAgICAgICAgW2lkXT1cIm5hbWVcIlxyXG4gICAgICAgIFttYXNrXT1cIm1hc2tcIlxyXG4gICAgICAgIFthdHRyLmlucHV0bW9kZV09XCJpbnB1dG1vZGVcIlxyXG4gICAgICAgIFtwYXR0ZXJuc109XCJtYXNrUGF0dGVybnNcIlxyXG4gICAgICAgIFthbGxvd05lZ2F0aXZlTnVtYmVyc109XCJmYWxzZVwiXHJcbiAgICAgICAgW3Rob3VzYW5kU2VwYXJhdG9yXT1cIicgJ1wiXHJcbiAgICAgICAgW2RlY2ltYWxNYXJrZXJdPVwiJy4nXCJcclxuICAgICAgICBbdmFsaWRhdGlvbl09XCJjb25maWcubWFza1ZhbGlkYXRpb24gfHwgZmFsc2VcIlxyXG4gICAgICAgIFtzcGVjaWFsQ2hhcmFjdGVyc109XCJzcGVjaWFsQ2hhcmFjdGVyc1wiXHJcbiAgICAgICAgW2Ryb3BTcGVjaWFsQ2hhcmFjdGVyc109XCJkcm9wU3BlY2lhbENoYXJhY3RlcnNcIlxyXG4gICAgICAgIFt0YWJpbmRleF09XCJ0YWJJbmRleFwiXHJcbiAgICAgIC8+XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgPGlucHV0IGNsYXNzPVwidHJtLWZvcm0tZmllbGQgdHJtLWlucHV0XCJcclxuICAgICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cIm1hdERhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbmZpZy5wbGFjZWhvbGRlciB8IHRyYW5zXCJcclxuICAgICAgICAgICAgIChpbnB1dCk9XCJvbkRhdGVJbnB1dCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIFthdHRyLmlucHV0bW9kZV09XCJpbnB1dG1vZGVcIlxyXG4gICAgICAgICAgICAgKGJsdXIpPVwib25Ub3VjaCgpXCJcclxuICAgICAgICAgICAgIFttaW5dPVwiY29uZmlnPy5vcHRpb25zPy5taW5cIlxyXG4gICAgICAgICAgICAgW21heF09XCJjb25maWc/Lm9wdGlvbnM/Lm1heFwiXHJcbiAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiSW5kZXhcIlxyXG4gICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiXHJcbiAgICAgICAgICAgICBbaWRdPVwibmFtZVwiXHJcbiAgICAgIC8+XHJcbiAgICB9XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYXBwLWMtdGV4dC1zdWZmaXhdXCI+PC9uZy1jb250ZW50PlxyXG4gIDwvZGl2PlxyXG4gIEBpZiAoY29uZmlnLmRlc2NyaXB0aW9uKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwiYy10ZXh0X19oaW50XCJcclxuICAgICAgICAgW2lubmVySFRNTF09XCJjb25maWcuZGVzY3JpcHRpb24gfCB0cmFuc1wiPjwvZGl2PlxyXG4gIH1cclxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbYXBwLWMtdGV4dC1oaW50XVwiPjwvbmctY29udGVudD5cclxuICBAaWYgKGNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZGlydHkpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJ0cm0tZXJyb3JcIlxyXG4gICAgICAgICBAaW5zZXJ0UmVtb3ZlXHJcbiAgICA+XHJcbiAgICAgIHt7IEkxOE5fS0VZLlZBTElEQVRJT05fUkVRVUlSRUQgfCB0cmFucyB9fVxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG4gIEBpZiAoY29udHJvbC5oYXNFcnJvcignZW1haWwnKSAmJiBjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5kaXJ0eSkge1xyXG4gICAgPGRpdiBjbGFzcz1cInRybS1lcnJvclwiXHJcbiAgICAgICAgIEBpbnNlcnRSZW1vdmVcclxuICAgID5cclxuICAgICAge3sgSTE4Tl9LRVkuVkFMSURBVElPTl9FTUFJTCB8IHRyYW5zIH19XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbiAgQGlmIChjb250cm9sLmhhc0Vycm9yKCdtaW4nKSAmJiBjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5kaXJ0eSkge1xyXG4gICAgPGRpdiBjbGFzcz1cInRybS1lcnJvclwiXHJcbiAgICAgICAgIEBpbnNlcnRSZW1vdmVcclxuICAgID5cclxuICAgICAge3sgSTE4Tl9LRVkuVkFMSURBVElPTl9NSU4gfCB0cmFucyB9fVxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG4gIEBpZiAoY29udHJvbC5oYXNFcnJvcignbWF4JykgJiYgY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZGlydHkpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJ0cm0tZXJyb3JcIlxyXG4gICAgICAgICBAaW5zZXJ0UmVtb3ZlXHJcbiAgICA+XHJcbiAgICAgIHt7IEkxOE5fS0VZLlZBTElEQVRJT05fTUFYIHwgdHJhbnMgfX1cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuICBAaWYgKGNvbnRyb2wuaGFzRXJyb3IoJ3BhdHRlcm4nKSAmJiBjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5kaXJ0eSkge1xyXG4gICAgPGRpdiBjbGFzcz1cInRybS1lcnJvclwiXHJcbiAgICAgICAgIEBpbnNlcnRSZW1vdmVcclxuICAgID5cclxuICAgICAge3sgSTE4Tl9LRVkuVkFMSURBVElPTl9QQVRURVJOIHwgdHJhbnMgfX1cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuICBAaWYgKGNvbnRyb2wuaGFzRXJyb3IoJ21hc2snKSAmJiBjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5kaXJ0eSkge1xyXG4gICAgPGRpdiBjbGFzcz1cInRybS1lcnJvclwiXHJcbiAgICAgICAgIEBpbnNlcnRSZW1vdmVcclxuICAgID5cclxuICAgICAge3sgSTE4Tl9LRVkuVkFMSURBVElPTl9QQVRURVJOIHwgdHJhbnMgfX1cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuICBAaWYgKGNvbnRyb2wuaGFzRXJyb3IoJ21hdERhdGVwaWNrZXJQYXJzZScpICYmIGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmRpcnR5KSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwidHJtLWVycm9yXCJcclxuICAgICAgICAgQGluc2VydFJlbW92ZVxyXG4gICAgPlxyXG4gICAgICB7eyBJMThOX0tFWS5WQUxJREFUSU9OX1BBVFRFUk4gfCB0cmFucyB9fVxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG4gIEBpZiAoY29udHJvbC5oYXNFcnJvcignbWF0RGF0ZXBpY2tlck1pbicpICYmIGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmRpcnR5KSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwidHJtLWVycm9yXCJcclxuICAgICAgICAgQGluc2VydFJlbW92ZVxyXG4gICAgPlxyXG4gICAgICB7eyAoSTE4Tl9LRVkuVkFMSURBVElPTl9EQVRFX01JTiB8IHRyYW5zKSArICcgJyArIGNvbnRyb2wuZ2V0RXJyb3IoJ21hdERhdGVwaWNrZXJNaW4nKS5taW4uZm9ybWF0KEZPUk1BVF9EQVRFKSB9fVxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG4gIEBpZiAoY29udHJvbC5oYXNFcnJvcignbWF0RGF0ZXBpY2tlck1heCcpICYmIGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmRpcnR5KSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwidHJtLWVycm9yXCJcclxuICAgICAgICAgQGluc2VydFJlbW92ZVxyXG4gICAgPlxyXG4gICAgICB7eyAoSTE4Tl9LRVkuVkFMSURBVElPTl9EQVRFX01BWCB8IHRyYW5zKSArICcgJyArIGNvbnRyb2wuZ2V0RXJyb3IoJ21hdERhdGVwaWNrZXJNYXgnKS5tYXguZm9ybWF0KEZPUk1BVF9EQVRFKSB9fVxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG4gIEBpZiAoY29udHJvbC5oYXNFcnJvcignZXJyb3InKSAmJiBjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5kaXJ0eSkge1xyXG4gICAgPGRpdiBjbGFzcz1cInRybS1lcnJvclwiXHJcbiAgICAgICAgIEBpbnNlcnRSZW1vdmVcclxuICAgID5cclxuICAgICAge3sgYXBpRXJyb3IgfCB0cmFucyB9fVxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG4gIEBpZiAoY29udHJvbC5oYXNFcnJvcignY3VzdG9tX2Vycm9yJykgJiYgY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZGlydHkpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJ0cm0tZXJyb3JcIlxyXG4gICAgICAgICBAaW5zZXJ0UmVtb3ZlXHJcbiAgICA+XHJcbiAgICAgIHt7IGNvbnRyb2wuZ2V0RXJyb3IoJ2N1c3RvbV9lcnJvcicpIHwgdHJhbnMgfX1cclxuICAgIDwvZGl2PlxyXG4gIH1cclxufVxyXG4iXX0=
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0b3ItZmllbGQtdGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZXJtaW5hbC10ZW1wbGF0ZS9zcmMvbGliL2FwcC9wYWdlcy9jb21wb25lbnRzL2NvbnN0cnVjdG9yLWZvcm0vY29tcG9uZW50cy9jb25zdHJ1Y3Rvci1maWVsZC10ZXh0L2NvbnN0cnVjdG9yLWZpZWxkLXRleHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVybWluYWwtdGVtcGxhdGUvc3JjL2xpYi9hcHAvcGFnZXMvY29tcG9uZW50cy9jb25zdHJ1Y3Rvci1mb3JtL2NvbXBvbmVudHMvY29uc3RydWN0b3ItZmllbGQtdGV4dC9jb25zdHJ1Y3Rvci1maWVsZC10ZXh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBZ0Isb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0UsT0FBTyxFQUdMLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULG1CQUFtQixFQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFpQixrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWpGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUs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RUFBRSxrQkFBa0IsQ0FBQzt3REFvQnhJLE1BQU07c0JBQWQsS0FBSztnQkFNRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksaUJBQWlCO3NCQUExQixNQUFNO2dCQUVzQixHQUFHO3NCQUEvQixTQUFTO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgaW5qZWN0LFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGT1JNQVRfREFURSwgUGF5bWVudEZpZWxkLCBQYXltZW50RmllbGRUeXBlRW51bSB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIEZvcm1zTW9kdWxlLFxyXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIE5nQ29udHJvbCxcclxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE1hdERhdGVwaWNrZXIsIE1hdERhdGVwaWNrZXJJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xyXG5pbXBvcnQgbW9tZW50anMgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcclxuaW1wb3J0IHsgaW5zZXJ0UmVtb3ZlVHJpZ2dlciB9IGZyb20gJy4vLi4vLi4vLi4vLi4vLi4vaGVscGVycy9pbnNlcnRSZW1vdmVUcmlnZ2VyJztcclxuaW1wb3J0IHsgSU5JVElBTF9QSE9ORV9NQVNLLCBNYXNrUmVzb2x2ZXIgfSBmcm9tICcuLy4uLy4uLy4uLy4uLy4uL2hlbHBlcnMvbWFzay1yZXNvbHZlcic7XHJcbmltcG9ydCB7IElDb25maWcsIE5neE1hc2tEaXJlY3RpdmUsIE5neE1hc2tQaXBlIH0gZnJvbSAnbmd4LW1hc2snO1xyXG5pbXBvcnQgeyBJMThOX0tFWSB9IGZyb20gJy4vLi4vLi4vLi4vLi4vLi4vaTE4bic7XHJcbmltcG9ydCB7IHJlbW92ZVNwZWNTeW1ib2xzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaGVscGVycy9waG9uZS1jb2Rlcyc7XHJcbmltcG9ydCB7IElucHV0TWFza0NvcnJlY3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMvaW5wdXQtbWFzay1jb3JyZWN0b3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVGFiSW5kZXhGb2N1c0RpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMvdGFiLWluZGV4LWZvY3VzLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUJ5S2V5UGlwZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC9waXBlcy90cmFuc2xhdGUtYnkta2V5LnBpcGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY29uc3RydWN0b3ItZmllbGQtdGV4dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnN0cnVjdG9yLWZpZWxkLXRleHQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvbnN0cnVjdG9yLWZpZWxkLXRleHQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBhbmltYXRpb25zOiBbaW5zZXJ0UmVtb3ZlVHJpZ2dlcl0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDb25zdHJ1Y3RvckZpZWxkVGV4dENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgTmd4TWFza0RpcmVjdGl2ZSwgSW5wdXRNYXNrQ29ycmVjdG9yLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBUYWJJbmRleEZvY3VzRGlyZWN0aXZlLCBNYXREYXRlcGlja2VySW5wdXQsIFRyYW5zbGF0ZUJ5S2V5UGlwZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnN0cnVjdG9yRmllbGRUZXh0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICBwcml2YXRlIGNkID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICBwcml2YXRlIG1hc2tTcnYgPSBpbmplY3QoTWFza1Jlc29sdmVyKTtcclxuICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcclxuICBwcml2YXRlIG1hc2tQaXBlID0gaW5qZWN0KE5neE1hc2tQaXBlKTtcclxuXHJcbiAgcHJpdmF0ZSB1bnN1YjogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBfdHlwZSA9ICd0ZXh0JztcclxuXHJcbiAgZ2V0IGRpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlYWRvbmx5IHx8IGZhbHNlO1xyXG4gIH07XHJcblxyXG4gIHJlYWRvbmx5IEZPUk1BVF9EQVRFID0gRk9STUFUX0RBVEU7XHJcbiAgbWFzazogc3RyaW5nO1xyXG4gIGRyb3BTcGVjaWFsQ2hhcmFjdGVycyA9IHRydWU7XHJcbiAgSTE4Tl9LRVkgPSBJMThOX0tFWTtcclxuXHJcbiAgQElucHV0KCkgY29uZmlnOiBQYXltZW50RmllbGQ7XHJcblxyXG4gIGdldCBpbnB1dG1vZGUoKTogXCJ0ZXh0XCIgfCBcInRlbFwiIHwgXCJudW1lcmljXCIgfCBcImVtYWlsXCIgfCBcInVybFwiIHwgXCJub25lXCIge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmlucHV0TW9kZSB8fCAndGV4dCc7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBtYXREYXRlcGlja2VyOiBNYXREYXRlcGlja2VyPG1vbWVudGpzLk1vbWVudD47XHJcbiAgQElucHV0KCkgdGFiSW5kZXg6IG51bWJlcjtcclxuICBAT3V0cHV0KCkgbWFza2VkVmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcclxuICBAVmlld0NoaWxkKE5neE1hc2tEaXJlY3RpdmUpIGRpcjogTmd4TWFza0RpcmVjdGl2ZTtcclxuICBtYXNrUGF0dGVybnM6IElDb25maWdbJ3BhdHRlcm5zJ107XHJcbiAgc3BlY2lhbENoYXJhY3RlcnM6IHN0cmluZ1tdO1xyXG4gIG9uQ2hhbmdlID0gKF92YWx1ZTogYW55KSA9PiB7XHJcbiAgfTtcclxuICBvblRvdWNoID0gKCkgPT4ge1xyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gIH1cclxuXHJcbiAgZ2V0IHR5cGUoKSB7XHJcbiAgICBpZiAodGhpcy5jb25maWcudHlwZSA9PT0gUGF5bWVudEZpZWxkVHlwZUVudW0uRW1haWwpIHtcclxuICAgICAgcmV0dXJuICdlbWFpbCc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcclxuICB9XHJcblxyXG4gIGdldCBuYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLm5hbWU7XHJcbiAgfVxyXG5cclxuICBvbkRhdGVJbnB1dChlOiBJbnB1dEV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQ6IEhUTUxJbnB1dEVsZW1lbnQgPSBlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgbGV0IHtzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kfSA9IHRhcmdldDtcclxuICAgIHRoaXMuY29udHJvbD8ubWFya0FzVW50b3VjaGVkKCk7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGFyZ2V0LnZhbHVlID0gdGhpcy5tYXNrUGlwZVxyXG4gICAgICAudHJhbnNmb3JtKHRhcmdldC52YWx1ZSwgdGhpcy5tYXNrLCB7cGF0dGVybnM6IHRoaXMubWFza1BhdHRlcm5zfSlcclxuICAgICAgLnJlcGxhY2UoL14tfC0kLywgJycpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHJcbiAgICAgIGlmIChzZWxlY3Rpb25TdGFydCA9PT0gc2VsZWN0aW9uRW5kICYmIGUuaW5wdXRUeXBlICE9PSAnZGVsZXRlQ29udGVudEJhY2t3YXJkJykge1xyXG4gICAgICAgIHdoaWxlICh0aGlzLnNwZWNpYWxDaGFyYWN0ZXJzLmluY2x1ZGVzKHRhcmdldC52YWx1ZVtzZWxlY3Rpb25FbmQgLSAxXSkpIHtcclxuICAgICAgICAgIHNlbGVjdGlvbkVuZCArPSAxO1xyXG4gICAgICAgICAgc2VsZWN0aW9uU3RhcnQgKz0gMTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblBhc3RlKGU6IENsaXBib2FyZEV2ZW50KSB7XHJcbiAgICBjb25zdCB0ID0gZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09IFBheW1lbnRGaWVsZFR5cGVFbnVtLkVtYWlsKSB7XHJcbiAgICAgIHRoaXMuX2VtaXRNYXNrZWRWYWx1ZUNoYW5nZXModCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHZhbHVlID0gdC52YWx1ZTtcclxuICAgIGxldCBjb250ZW50ID0gZS5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0JykgfHwgJyc7XHJcbiAgICBsZXQgc2VsZWN0aW9uU3RhcnQgPSByZW1vdmVTcGVjU3ltYm9scyh0LnZhbHVlLnNsaWNlKDAsIHQuc2VsZWN0aW9uU3RhcnQpKS5sZW5ndGggKyByZW1vdmVTcGVjU3ltYm9scyhjb250ZW50KS5sZW5ndGg7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgY29uc3QgYXJyID0gQXJyYXkuZnJvbSh2YWx1ZSk7XHJcbiAgICAgIGFyci5zcGxpY2UodC5zZWxlY3Rpb25TdGFydCwgdC5zZWxlY3Rpb25FbmQgLSB0LnNlbGVjdGlvblN0YXJ0LCAuLi5BcnJheS5mcm9tKGNvbnRlbnQpKTtcclxuICAgICAgY29udGVudCA9IHJlbW92ZVNwZWNTeW1ib2xzKGFyci5qb2luKCcnKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm1hc2sgPSB0aGlzLm1hc2tTcnYuZ2V0TWFza0J5VmFsdWUodGhpcy5jb25maWcubWFzaywgY29udGVudCk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUoY29udGVudCk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuX2VtaXRNYXNrZWRWYWx1ZUNoYW5nZXModCwgc2VsZWN0aW9uU3RhcnQpO1xyXG4gIH1cclxuXHJcbiAgb25JbnB1dChlOiBJbnB1dEV2ZW50KSB7XHJcbiAgICB0aGlzLmNvbnRyb2w/Lm1hcmtBc1VudG91Y2hlZCgpO1xyXG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIGlmICh0aGlzLm1hdERhdGVwaWNrZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09IFBheW1lbnRGaWVsZFR5cGVFbnVtLkVtYWlsKSB7XHJcbiAgICAgIHRoaXMuX2VtaXRNYXNrZWRWYWx1ZUNoYW5nZXModGFyZ2V0KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdmFsdWU6IHN0cmluZyA9IHRoaXMuY29udHJvbD8udmFsdWU7XHJcbiAgICBsZXQgc2VsZWN0aW9uU3RhcnQgPSByZW1vdmVTcGVjU3ltYm9scyh0YXJnZXQudmFsdWUuc2xpY2UoMCwgdGFyZ2V0LnNlbGVjdGlvblN0YXJ0KSkubGVuZ3RoO1xyXG4gICAgY29uc3QgbWFzayA9IHRoaXMubWFza1Nydi5nZXRNYXNrQnlWYWx1ZSh0aGlzLmNvbmZpZy5tYXNrLCB2YWx1ZSk7XHJcbiAgICBpZiAoIW1hc2sgfHwgbWFzayA9PT0gSU5JVElBTF9QSE9ORV9NQVNLKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMubWFzayA9IG1hc2s7XHJcblxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLl9lbWl0TWFza2VkVmFsdWVDaGFuZ2VzKHRhcmdldCwgc2VsZWN0aW9uU3RhcnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZW1pdE1hc2tlZFZhbHVlQ2hhbmdlcyh0YXJnZXQsIHBvc2l0aW9uSW5Vbm1hc2tlZFZhbHVlPykge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICBpZiAodGhpcy5tYXNrKSB7XHJcbiAgICAgICAgdGhpcy5tYXNrZWRWYWx1ZUNoYW5nZS5lbWl0KHRhcmdldC52YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fc2V0U2VsZWN0aW9uKHRhcmdldCwgcG9zaXRpb25JblVubWFza2VkVmFsdWUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRTZWxlY3Rpb24odGFyZ2V0OiBIVE1MSW5wdXRFbGVtZW50LCBwb3NpdGlvbkluVW5tYXNrZWRWYWx1ZT8pIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09IFBheW1lbnRGaWVsZFR5cGVFbnVtLkVtYWlsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBwb3NpdGlvbk1hc2tlZFZhbHVlID0gMDtcclxuICAgIGxldCBpID0gMDtcclxuICAgIHdoaWxlIChwb3NpdGlvbkluVW5tYXNrZWRWYWx1ZSA+IGkgJiYgdGFyZ2V0LnZhbHVlLmxlbmd0aCA+IHBvc2l0aW9uTWFza2VkVmFsdWUpIHtcclxuICAgICAgaWYgKC9cXGQvLnRlc3QodGFyZ2V0LnZhbHVlW3Bvc2l0aW9uTWFza2VkVmFsdWVdKSkge1xyXG4gICAgICAgIGkrKztcclxuICAgICAgfVxyXG4gICAgICBwb3NpdGlvbk1hc2tlZFZhbHVlKys7XHJcbiAgICB9XHJcbiAgICB0YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UocG9zaXRpb25NYXNrZWRWYWx1ZSwgcG9zaXRpb25NYXNrZWRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wpLmNvbnRyb2w7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGdldCBhcGlFcnJvcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbD8uZ2V0RXJyb3IoJ2Vycm9yJyk7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5tYXNrID0gdGhpcy5tYXNrU3J2LmdldE1hc2tCeVZhbHVlKHRoaXMuY29uZmlnLm1hc2ssIHZhbHVlKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMubWFzayA9IHRoaXMubWFza1Nydi5nZXRNYXNrQnlWYWx1ZSh0aGlzLmNvbmZpZy5tYXNrKTtcclxuICAgIGlmICh0aGlzLmNvbmZpZy5tYXNrVmFsaWRhdGlvbiAhPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmNvbmZpZy5tYXNrVmFsaWRhdGlvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5tYXNrUGF0dGVybnMgPSB0aGlzLm1hc2tTcnYuZ2V0UGF0dGVybnModGhpcy5jb25maWcpO1xyXG4gICAgdGhpcy5zcGVjaWFsQ2hhcmFjdGVycyA9IFsuLi50aGlzLm1hc2tTcnYuZ2V0U3BlY2lhbENoYXJhY3RlcnModGhpcy5jb25maWcpXTtcclxuICAgIHRoaXMuZHJvcFNwZWNpYWxDaGFyYWN0ZXJzID0gdGhpcy5jb25maWcuZHJvcFNwZWNpYWxDaGFyYWN0ZXJzICE9PSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51bnN1Yi5uZXh0KCk7XHJcbiAgICB0aGlzLnVuc3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiIsIkBpZiAoY29udHJvbCkge1xyXG4gIDxsYWJlbCBjbGFzcz1cInRybS1sYWJlbFwiXHJcbiAgICAgICAgIFtmb3JdPVwiY29uZmlnLm5hbWVcIlxyXG4gID4ge3sgY29uZmlnLmxhYmVsIHwgdHJhbnMgfX0gPC9sYWJlbD5cclxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtd3JhcHBlciB0cm0tZm9ybS1maWVsZC13cmFwcGVyIGMtdGV4dFwiXHJcbiAgICAgICBbY2xhc3MuYy10ZXh0LS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICBbY2xhc3MuYy10ZXh0LS11cHBlcmNhc2VdPVwiY29uZmlnLnVwcGVyY2FzZVwiPlxyXG4gICAgQGlmICghbWF0RGF0ZXBpY2tlcikge1xyXG4gICAgICA8aW5wdXRcclxuICAgICAgICBjbGFzcz1cInRybS1mb3JtLWZpZWxkIHRybS1pbnB1dFwiXHJcbiAgICAgICAgW2NsYXNzLnRybS1mb3JtLWZpZWxkLS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbmZpZy5wbGFjZWhvbGRlciB8IHRyYW5zXCJcclxuICAgICAgICAoYmx1cik9XCJvblRvdWNoKClcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcclxuICAgICAgICAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQpXCJcclxuICAgICAgICBbdHlwZV09XCJ0eXBlXCJcclxuICAgICAgICBbbmFtZV09XCJuYW1lXCJcclxuICAgICAgICBbaWRdPVwibmFtZVwiXHJcbiAgICAgICAgW21hc2tdPVwibWFza1wiXHJcbiAgICAgICAgW2F0dHIuaW5wdXRtb2RlXT1cImlucHV0bW9kZVwiXHJcbiAgICAgICAgW3BhdHRlcm5zXT1cIm1hc2tQYXR0ZXJuc1wiXHJcbiAgICAgICAgW2FsbG93TmVnYXRpdmVOdW1iZXJzXT1cImZhbHNlXCJcclxuICAgICAgICBbdGhvdXNhbmRTZXBhcmF0b3JdPVwiJyAnXCJcclxuICAgICAgICBbZGVjaW1hbE1hcmtlcl09XCInLidcIlxyXG4gICAgICAgIFt2YWxpZGF0aW9uXT1cImNvbmZpZy5tYXNrVmFsaWRhdGlvbiB8fCBmYWxzZVwiXHJcbiAgICAgICAgW3NwZWNpYWxDaGFyYWN0ZXJzXT1cInNwZWNpYWxDaGFyYWN0ZXJzXCJcclxuICAgICAgICBbZHJvcFNwZWNpYWxDaGFyYWN0ZXJzXT1cImRyb3BTcGVjaWFsQ2hhcmFjdGVyc1wiXHJcbiAgICAgICAgW3RhYmluZGV4XT1cInRhYkluZGV4XCJcclxuICAgICAgLz5cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICA8aW5wdXQgY2xhc3M9XCJ0cm0tZm9ybS1maWVsZCB0cm0taW5wdXRcIlxyXG4gICAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwibWF0RGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29uZmlnLnBsYWNlaG9sZGVyIHwgdHJhbnNcIlxyXG4gICAgICAgICAgICAgKGlucHV0KT1cIm9uRGF0ZUlucHV0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgW2F0dHIuaW5wdXRtb2RlXT1cImlucHV0bW9kZVwiXHJcbiAgICAgICAgICAgICAoYmx1cik9XCJvblRvdWNoKClcIlxyXG4gICAgICAgICAgICAgW21pbl09XCJjb25maWc/Lm9wdGlvbnM/Lm1pblwiXHJcbiAgICAgICAgICAgICBbbWF4XT1cImNvbmZpZz8ub3B0aW9ucz8ubWF4XCJcclxuICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJJbmRleFwiXHJcbiAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCJcclxuICAgICAgICAgICAgIFtpZF09XCJuYW1lXCJcclxuICAgICAgLz5cclxuICAgIH1cclxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlthcHAtYy10ZXh0LXN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgPC9kaXY+XHJcbiAgQGlmIChjb25maWcuZGVzY3JpcHRpb24pIHtcclxuICAgIDxkaXYgY2xhc3M9XCJjLXRleHRfX2hpbnRcIlxyXG4gICAgICAgICBbaW5uZXJIVE1MXT1cImNvbmZpZy5kZXNjcmlwdGlvbiB8IHRyYW5zXCI+PC9kaXY+XHJcbiAgfVxyXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIlthcHAtYy10ZXh0LWhpbnRdXCI+PC9uZy1jb250ZW50PlxyXG4gIEBpZiAoY29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiBjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5kaXJ0eSkge1xyXG4gICAgPGRpdiBjbGFzcz1cInRybS1lcnJvclwiXHJcbiAgICAgICAgIEBpbnNlcnRSZW1vdmVcclxuICAgID5cclxuICAgICAge3sgSTE4Tl9LRVkuVkFMSURBVElPTl9SRVFVSVJFRCB8IHRyYW5zIH19XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbiAgQGlmIChjb250cm9sLmhhc0Vycm9yKCdlbWFpbCcpICYmIGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmRpcnR5KSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwidHJtLWVycm9yXCJcclxuICAgICAgICAgQGluc2VydFJlbW92ZVxyXG4gICAgPlxyXG4gICAgICB7eyBJMThOX0tFWS5WQUxJREFUSU9OX0VNQUlMIHwgdHJhbnMgfX1cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuICBAaWYgKGNvbnRyb2wuaGFzRXJyb3IoJ21pbicpICYmIGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmRpcnR5KSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwidHJtLWVycm9yXCJcclxuICAgICAgICAgQGluc2VydFJlbW92ZVxyXG4gICAgPlxyXG4gICAgICB7eyBJMThOX0tFWS5WQUxJREFUSU9OX01JTiB8IHRyYW5zIH19XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbiAgQGlmIChjb250cm9sLmhhc0Vycm9yKCdtYXgnKSAmJiBjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5kaXJ0eSkge1xyXG4gICAgPGRpdiBjbGFzcz1cInRybS1lcnJvclwiXHJcbiAgICAgICAgIEBpbnNlcnRSZW1vdmVcclxuICAgID5cclxuICAgICAge3sgSTE4Tl9LRVkuVkFMSURBVElPTl9NQVggfCB0cmFucyB9fVxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG4gIEBpZiAoY29udHJvbC5oYXNFcnJvcigncGF0dGVybicpICYmIGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmRpcnR5KSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwidHJtLWVycm9yXCJcclxuICAgICAgICAgQGluc2VydFJlbW92ZVxyXG4gICAgPlxyXG4gICAgICB7eyBJMThOX0tFWS5WQUxJREFUSU9OX1BBVFRFUk4gfCB0cmFucyB9fVxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG4gIEBpZiAoY29udHJvbC5oYXNFcnJvcignbWFzaycpICYmIGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmRpcnR5KSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwidHJtLWVycm9yXCJcclxuICAgICAgICAgQGluc2VydFJlbW92ZVxyXG4gICAgPlxyXG4gICAgICB7eyBJMThOX0tFWS5WQUxJREFUSU9OX1BBVFRFUk4gfCB0cmFucyB9fVxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG4gIEBpZiAoY29udHJvbC5oYXNFcnJvcignbWF0RGF0ZXBpY2tlclBhcnNlJykgJiYgY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZGlydHkpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJ0cm0tZXJyb3JcIlxyXG4gICAgICAgICBAaW5zZXJ0UmVtb3ZlXHJcbiAgICA+XHJcbiAgICAgIHt7IEkxOE5fS0VZLlZBTElEQVRJT05fUEFUVEVSTiB8IHRyYW5zIH19XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbiAgQGlmIChjb250cm9sLmhhc0Vycm9yKCdtYXREYXRlcGlja2VyTWluJykgJiYgY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZGlydHkpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJ0cm0tZXJyb3JcIlxyXG4gICAgICAgICBAaW5zZXJ0UmVtb3ZlXHJcbiAgICA+XHJcbiAgICAgIHt7IChJMThOX0tFWS5WQUxJREFUSU9OX0RBVEVfTUlOIHwgdHJhbnMpICsgJyAnICsgY29udHJvbC5nZXRFcnJvcignbWF0RGF0ZXBpY2tlck1pbicpLm1pbi5mb3JtYXQoRk9STUFUX0RBVEUpIH19XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbiAgQGlmIChjb250cm9sLmhhc0Vycm9yKCdtYXREYXRlcGlja2VyTWF4JykgJiYgY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZGlydHkpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJ0cm0tZXJyb3JcIlxyXG4gICAgICAgICBAaW5zZXJ0UmVtb3ZlXHJcbiAgICA+XHJcbiAgICAgIHt7IChJMThOX0tFWS5WQUxJREFUSU9OX0RBVEVfTUFYIHwgdHJhbnMpICsgJyAnICsgY29udHJvbC5nZXRFcnJvcignbWF0RGF0ZXBpY2tlck1heCcpLm1heC5mb3JtYXQoRk9STUFUX0RBVEUpIH19XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbiAgQGlmIChjb250cm9sLmhhc0Vycm9yKCdlcnJvcicpICYmIGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmRpcnR5KSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwidHJtLWVycm9yXCJcclxuICAgICAgICAgQGluc2VydFJlbW92ZVxyXG4gICAgPlxyXG4gICAgICB7eyBhcGlFcnJvciB8IHRyYW5zIH19XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbiAgQGlmIChjb250cm9sLmhhc0Vycm9yKCdjdXN0b21fZXJyb3InKSAmJiBjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5kaXJ0eSkge1xyXG4gICAgPGRpdiBjbGFzcz1cInRybS1lcnJvclwiXHJcbiAgICAgICAgIEBpbnNlcnRSZW1vdmVcclxuICAgID5cclxuICAgICAge3sgY29udHJvbC5nZXRFcnJvcignY3VzdG9tX2Vycm9yJykgfCB0cmFucyB9fVxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,3 +1,5 @@
1
+ export * from "./constructor-field-iframe/iframe-validator-directive.directive";
2
+ export * from "./constructor-field-iframe/card-sdk.service";
1
3
  export * from './constructor-field-date/constructor-field-date.component';
2
4
  export * from './constructor-field-iframe/constructor-field-iframe.component';
3
5
  export * from './constructor-field-select/constructor-field-select.component';
@@ -5,4 +7,4 @@ export * from './constructor-field-text/constructor-field-text.component';
5
7
  export * from './constructor-preparation/constructor-preparation.component';
6
8
  export * from './method-amount-hint/method-amount-hint.component';
7
9
  export * from './ps-select/ps-select.component';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZXJtaW5hbC10ZW1wbGF0ZS9zcmMvbGliL2FwcC9wYWdlcy9jb21wb25lbnRzL2NvbnN0cnVjdG9yLWZvcm0vY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJEQUEyRCxDQUFDO0FBQzFFLGNBQWMsK0RBQStELENBQUM7QUFDOUUsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLDJEQUEyRCxDQUFDO0FBQzFFLGNBQWMsNkRBQTZELENBQUM7QUFDNUUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3Rvci1maWVsZC1kYXRlL2NvbnN0cnVjdG9yLWZpZWxkLWRhdGUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3Rvci1maWVsZC1pZnJhbWUvY29uc3RydWN0b3ItZmllbGQtaWZyYW1lLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3ItZmllbGQtc2VsZWN0L2NvbnN0cnVjdG9yLWZpZWxkLXNlbGVjdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9yLWZpZWxkLXRleHQvY29uc3RydWN0b3ItZmllbGQtdGV4dC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9yLXByZXBhcmF0aW9uL2NvbnN0cnVjdG9yLXByZXBhcmF0aW9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbWV0aG9kLWFtb3VudC1oaW50L21ldGhvZC1hbW91bnQtaGludC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BzLXNlbGVjdC9wcy1zZWxlY3QuY29tcG9uZW50JztcclxuIl19
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZXJtaW5hbC10ZW1wbGF0ZS9zcmMvbGliL2FwcC9wYWdlcy9jb21wb25lbnRzL2NvbnN0cnVjdG9yLWZvcm0vY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsNkNBQTZDLENBQUM7QUFFNUQsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLCtEQUErRCxDQUFDO0FBQzlFLGNBQWMsK0RBQStELENBQUM7QUFDOUUsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLDZEQUE2RCxDQUFDO0FBQzVFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxpQ0FBaUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NvbnN0cnVjdG9yLWZpZWxkLWlmcmFtZS9pZnJhbWUtdmFsaWRhdG9yLWRpcmVjdGl2ZS5kaXJlY3RpdmVcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RydWN0b3ItZmllbGQtaWZyYW1lL2NhcmQtc2RrLnNlcnZpY2VcIjtcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3ItZmllbGQtZGF0ZS9jb25zdHJ1Y3Rvci1maWVsZC1kYXRlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3ItZmllbGQtaWZyYW1lL2NvbnN0cnVjdG9yLWZpZWxkLWlmcmFtZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9yLWZpZWxkLXNlbGVjdC9jb25zdHJ1Y3Rvci1maWVsZC1zZWxlY3QuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3Rvci1maWVsZC10ZXh0L2NvbnN0cnVjdG9yLWZpZWxkLXRleHQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3Rvci1wcmVwYXJhdGlvbi9jb25zdHJ1Y3Rvci1wcmVwYXJhdGlvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL21ldGhvZC1hbW91bnQtaGludC9tZXRob2QtYW1vdW50LWhpbnQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9wcy1zZWxlY3QvcHMtc2VsZWN0LmNvbXBvbmVudCc7XHJcbiJdfQ==
@@ -1,7 +1,6 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, inject, Input } from '@angular/core';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Input } from '@angular/core';
2
2
  import { FormControl, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
3
- import { Subject } from 'rxjs';
4
- import { filter, takeUntil } from 'rxjs/operators';
3
+ import { filter } from 'rxjs/operators';
5
4
  import { MethodTitlePipe } from './../../../../../pipes/method-title.pipe';
6
5
  import { TranslatePipe } from '@ngx-translate/core';
7
6
  import { I18N_KEY } from './../../../../../i18n';
@@ -10,9 +9,24 @@ import { TabIndexFocusDirective } from '../../../../directives/tab-index-focus.d
10
9
  import { TrmSelectComponent } from '../../../../../shared/components/trm-select/trm-select.component';
11
10
  import { TrmSelectLabelTemplateDirective } from '../../../../../shared/components/trm-select/trm-select-label-template.directive';
12
11
  import { TranslateByKeyPipe } from '../../../../../shared/pipes/translate-by-key.pipe';
12
+ import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
13
13
  import * as i0 from "@angular/core";
14
14
  import * as i1 from "@angular/forms";
15
15
  export class PsSelectComponent {
16
+ constructor() {
17
+ this.cd = inject(ChangeDetectorRef);
18
+ this.methodTitlePipe = inject(MethodTitlePipe);
19
+ this.translatePipe = inject(TranslatePipe);
20
+ this.destroyRef = inject(DestroyRef);
21
+ this.I18N_KEY = I18N_KEY;
22
+ this.onChange = (_value) => {
23
+ };
24
+ this.onTouch = () => {
25
+ };
26
+ this.methods = [];
27
+ this.disabled = false;
28
+ this.otherMethodControl = new FormControl(undefined);
29
+ }
16
30
  get popularMethods() {
17
31
  if (this.disabled) {
18
32
  return null;
@@ -36,24 +50,10 @@ export class PsSelectComponent {
36
50
  }
37
51
  });
38
52
  }
39
- constructor() {
40
- this.cd = inject(ChangeDetectorRef);
41
- this.methodTitlePipe = inject(MethodTitlePipe);
42
- this.translatePipe = inject(TranslatePipe);
43
- this.unsub = new Subject();
44
- this.I18N_KEY = I18N_KEY;
45
- this.onChange = (_value) => {
46
- };
47
- this.onTouch = () => {
48
- };
49
- this.methods = [];
50
- this.disabled = false;
51
- this.otherMethodControl = new FormControl(undefined);
52
- }
53
53
  ngOnInit() {
54
54
  this.otherMethodControl
55
55
  .valueChanges
56
- .pipe(filter(m => !!m), takeUntil(this.unsub))
56
+ .pipe(filter(m => !!m), takeUntilDestroyed(this.destroyRef))
57
57
  .subscribe((method) => this.selectMethod(method));
58
58
  }
59
59
  selectMethod(method, options = { emitChange: true }) {
@@ -94,10 +94,6 @@ export class PsSelectComponent {
94
94
  this.searchString = value;
95
95
  this.cd.markForCheck();
96
96
  }
97
- ngOnDestroy() {
98
- this.unsub.next();
99
- this.unsub.unsubscribe();
100
- }
101
97
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: PsSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
102
98
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: PsSelectComponent, isStandalone: true, selector: "app-ps-select", inputs: { methods: "methods", tabIndex: "tabIndex" }, providers: [
103
99
  {
@@ -120,9 +116,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
120
116
  MethodTitlePipe,
121
117
  TranslatePipe
122
118
  ], standalone: true, imports: [TabIndexFocusDirective, NgClass, TrmSelectComponent, FormsModule, ReactiveFormsModule, TrmSelectLabelTemplateDirective, MethodTitlePipe, TranslateByKeyPipe], template: "<label class=\"trm-label\">\r\n {{I18N_KEY.CONSTRUCTOR_LABEL_PS | trans}}\r\n</label>\r\n<ul class=\"methods\">\r\n @for (method of popularMethods; track method.id) {\r\n <li class=\"method\"\r\n [class.method--selected]=\"selectedType === method.id\"\r\n [tabindex]=\"tabIndex\"\r\n (keydown.enter)=\"$event.stopPropagation(); selectMethod(method.id)\"\r\n (blur)=\"onTouch()\"\r\n (click)=\"selectMethod(method.id)\"\r\n >\r\n <span class=\"method__icon\"\r\n [ngClass]=\"'ps-icon-'+method.name\"\r\n ></span>\r\n <span class=\"method__name\" [title]=\"method.name | trans\" > {{method.name | method_title | trans}} </span>\r\n </li>\r\n }\r\n @if (searchString || otherMethods.length) {\r\n <li class=\"methods__other\">\r\n <app-trm-select [data]=\"otherMethods\"\r\n idLabel=\"method\"\r\n (search)=\"search($event)\"\r\n [tabIndex]=\"tabIndex\"\r\n (open)=\"onTouch()\"\r\n [formControl]=\"otherMethodControl\"\r\n [placeholder]=\"I18N_KEY.CONSTRUCTOR_PLACEHOLDER_PS | trans\"\r\n class=\"c-field-select trm-form-field\"\r\n >\r\n <ng-template trmSelectLabelTemplate let-item=\"item\">\r\n <span class=\"method__icon\"\r\n [ngClass]=\"'ps-icon-'+item.name\"></span>\r\n <span class=\"method__name\"\r\n [title]=\"item.name | trans\" >{{item.name | method_title | trans}}</span>\r\n </ng-template>\r\n </app-trm-select>\r\n </li>\r\n }\r\n</ul>\r\n<ng-content select=\"[app-ps-select-hint]\"></ng-content>\r\n<ng-content select=\"[app-ps-select-error]\"></ng-content>\r\n\r\n", styles: [":host{display:block}.methods{display:flex;flex-direction:row;gap:10px;justify-content:flex-start;align-items:flex-start;list-style:none;flex-wrap:wrap;margin:0;padding:0}.methods .method{--method-color: var(--ps-select-color, var(--color-base-350));--method-border-color: var(--ps-select-border-color, var(--color-base-200));display:flex;flex-direction:column;gap:10px;justify-content:flex-start;align-items:flex-start;box-sizing:border-box;flex:100%;max-width:calc(50% - 5px);padding:16px;border:1px solid var(--method-border-color);border-radius:10px;outline:0;align-self:stretch}.methods .method:hover,.methods .method:focus{--method-color: var(--ps-select-color--hover, var(--color-primary-500));--method-border-color: var(--ps-select-border-color--hover, var(--color-primary-500));cursor:pointer;box-shadow:0 0 15px -1px #a378ff26}.methods .method.method--selected{--method-color: var(--ps-select-color--active, var(--color-primary-500));--method-border-color: var(--ps-select-border-color--active, var(--color-primary-500));cursor:default;box-shadow:0 0 0 2px var(--method-border-color);outline:none}.methods .method__icon{background:transparent no-repeat 100% 100%;background-size:contain;width:24px;height:24px;flex-shrink:0}.methods .method__name{font-weight:600;font-size:14px;line-height:18px;color:var(--method-color);white-space:normal;overflow:hidden;max-width:100%;text-overflow:ellipsis;flex-shrink:0}.methods__other{box-sizing:border-box;flex:100%;margin-top:10px}\n"] }]
123
- }], ctorParameters: () => [], propDecorators: { methods: [{
119
+ }], propDecorators: { methods: [{
124
120
  type: Input
125
121
  }], tabIndex: [{
126
122
  type: Input
127
123
  }] } });
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHMtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rlcm1pbmFsLXRlbXBsYXRlL3NyYy9saWIvYXBwL3BhZ2VzL2NvbXBvbmVudHMvY29uc3RydWN0b3ItZm9ybS9jb21wb25lbnRzL3BzLXNlbGVjdC9wcy1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVybWluYWwtdGVtcGxhdGUvc3JjL2xpYi9hcHAvcGFnZXMvY29tcG9uZW50cy9jb25zdHJ1Y3Rvci1mb3JtL2NvbXBvbmVudHMvcHMtc2VsZWN0L3BzLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBR04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMxRixPQUFPLEVBQUUsa0JB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QXNCLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSwrQkFBK0IsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLENBQUM7d0RBYTdKLE9BQU87c0JBQWYsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgZm9yd2FyZFJlZixcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNZXRob2RUeXBlVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2NvZGVnZW4vbW9kZWwvbW9kZWxzJztcclxuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE1ldGhvZFRpdGxlUGlwZSB9IGZyb20gJy4vLi4vLi4vLi4vLi4vLi4vcGlwZXMvbWV0aG9kLXRpdGxlLnBpcGUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEkxOE5fS0VZIH0gZnJvbSAnLi8uLi8uLi8uLi8uLi8uLi9pMThuJztcclxuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFRhYkluZGV4Rm9jdXNEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi8uLi9kaXJlY3RpdmVzL3RhYi1pbmRleC1mb2N1cy5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBUcm1TZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cy90cm0tc2VsZWN0L3RybS1zZWxlY3QuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBUcm1TZWxlY3RMYWJlbFRlbXBsYXRlRGlyZWN0aXZlXHJcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmVkL2NvbXBvbmVudHMvdHJtLXNlbGVjdC90cm0tc2VsZWN0LWxhYmVsLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUJ5S2V5UGlwZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC9waXBlcy90cmFuc2xhdGUtYnkta2V5LnBpcGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1wcy1zZWxlY3QnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BzLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9wcy1zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUHNTZWxlY3RDb21wb25lbnQpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICBNZXRob2RUaXRsZVBpcGUsXHJcbiAgICAgIFRyYW5zbGF0ZVBpcGVcclxuICAgIF0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW1RhYkluZGV4Rm9jdXNEaXJlY3RpdmUsIE5nQ2xhc3MsIFRybVNlbGVjdENvbXBvbmVudCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFRybVNlbGVjdExhYmVsVGVtcGxhdGVEaXJlY3RpdmUsIE1ldGhvZFRpdGxlUGlwZSwgVHJhbnNsYXRlQnlLZXlQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHNTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gICAgcHJpdmF0ZSBjZCA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICBwcml2YXRlIG1ldGhvZFRpdGxlUGlwZSA9IGluamVjdChNZXRob2RUaXRsZVBpcGUpO1xyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVQaXBlID0gaW5qZWN0KFRyYW5zbGF0ZVBpcGUpO1xyXG5cclxuICAgIHByaXZhdGUgdW5zdWI6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgSTE4Tl9LRVkgPSBJMThOX0tFWTtcclxuICAgIG9uQ2hhbmdlID0gKF92YWx1ZSkgPT4ge1xyXG4gICAgfTtcclxuICAgIG9uVG91Y2ggPSAoKSA9PiB7XHJcbiAgICB9O1xyXG4gICAgQElucHV0KCkgbWV0aG9kczogTWV0aG9kVHlwZVR5cGVbXSA9IFtdO1xyXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHRhYkluZGV4OiBudW1iZXI7XHJcblxyXG4gICAgc2VsZWN0ZWRUeXBlOiBudW1iZXI7XHJcbiAgICBwdWJsaWMgb3RoZXJNZXRob2RDb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KHVuZGVmaW5lZCk7XHJcbiAgICBzZWFyY2hTdHJpbmc6IHN0cmluZztcclxuXHJcbiAgICBnZXQgcG9wdWxhck1ldGhvZHMoKTogTWV0aG9kVHlwZVR5cGVbXSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLm1ldGhvZHMuc2xpY2UoMCwgNCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG90aGVyTWV0aG9kcygpOiBNZXRob2RUeXBlVHlwZVtdIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tZXRob2RzLnNsaWNlKDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5tZXRob2RzXHJcbiAgICAgICAgICAgIC5zbGljZSh0aGlzLnBvcHVsYXJNZXRob2RzLmxlbmd0aClcclxuICAgICAgICAgICAgLmZpbHRlcigobTogTWV0aG9kVHlwZVR5cGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZWFyY2hTdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0aXRsZTogc3RyaW5nID0gdGhpcy50cmFuc2xhdGVQaXBlLnRyYW5zZm9ybShcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXRob2RUaXRsZVBpcGUudHJhbnNmb3JtKG0ubmFtZSlcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aXRsZS50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3BsaXQoJyAnKS5zb21lKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzID0+IHRoaXMuc2VhcmNoU3RyaW5nLnRvTG93ZXJDYXNlKCkuc3BsaXQoJyAnKS5zb21lKHMgPT4gdHMuaW5jbHVkZXMocykpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLm90aGVyTWV0aG9kQ29udHJvbFxyXG4gICAgICAgICAgICAudmFsdWVDaGFuZ2VzXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZmlsdGVyKG0gPT4gISFtKSxcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3ViKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKG1ldGhvZCkgPT4gdGhpcy5zZWxlY3RNZXRob2QobWV0aG9kKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0TWV0aG9kKG1ldGhvZDogbnVtYmVyLCBvcHRpb25zOiB7IGVtaXRDaGFuZ2U6IGJvb2xlYW4gfSA9IHtlbWl0Q2hhbmdlOiB0cnVlfSkge1xyXG4gICAgICAgIGlmICghbWV0aG9kIHx8IHRoaXMuc2VsZWN0ZWRUeXBlID09PSBtZXRob2QpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNlbGVjdGVkVHlwZSA9IG1ldGhvZDtcclxuICAgICAgICBpZiAob3B0aW9ucz8uZW1pdENoYW5nZSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG1ldGhvZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGhhc0luT3RoZXJMaXN0ID0gdGhpcy5vdGhlck1ldGhvZHMuc29tZShtID0+IG0uaWQgPT09IG1ldGhvZCk7XHJcbiAgICAgICAgdGhpcy5vdGhlck1ldGhvZENvbnRyb2wuc2V0VmFsdWUoaGFzSW5PdGhlckxpc3QgPyBtZXRob2QgOiB1bmRlZmluZWQsIHtlbWl0RXZlbnQ6IGZhbHNlLCBvbmx5U2VsZjogdHJ1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHdyaXRlVmFsdWUobWV0aG9kOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLnNlbGVjdE1ldGhvZChtZXRob2QsIHtlbWl0Q2hhbmdlOiBmYWxzZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWRcclxuICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMub3RoZXJNZXRob2RDb250cm9sLnZhbHVlICYmIHRoaXMuc2VsZWN0ZWRUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm90aGVyTWV0aG9kQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkVHlwZSwge2VtaXRFdmVudDogZmFsc2UsIG9ubHlTZWxmOiB0cnVlfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5vdGhlck1ldGhvZENvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub3RoZXJNZXRob2RDb250cm9sLmVuYWJsZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWFyY2godmFsdWUpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaFN0cmluZyA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy51bnN1Yi5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy51bnN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxsYWJlbCBjbGFzcz1cInRybS1sYWJlbFwiPlxyXG4gIHt7STE4Tl9LRVkuQ09OU1RSVUNUT1JfTEFCRUxfUFMgfCB0cmFuc319XHJcbjwvbGFiZWw+XHJcbjx1bCBjbGFzcz1cIm1ldGhvZHNcIj5cclxuICBAZm9yIChtZXRob2Qgb2YgcG9wdWxhck1ldGhvZHM7IHRyYWNrIG1ldGhvZC5pZCkge1xyXG4gICAgPGxpIGNsYXNzPVwibWV0aG9kXCJcclxuICAgICAgW2NsYXNzLm1ldGhvZC0tc2VsZWN0ZWRdPVwic2VsZWN0ZWRUeXBlID09PSBtZXRob2QuaWRcIlxyXG4gICAgICBbdGFiaW5kZXhdPVwidGFiSW5kZXhcIlxyXG4gICAgICAoa2V5ZG93bi5lbnRlcik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHNlbGVjdE1ldGhvZChtZXRob2QuaWQpXCJcclxuICAgICAgKGJsdXIpPVwib25Ub3VjaCgpXCJcclxuICAgICAgKGNsaWNrKT1cInNlbGVjdE1ldGhvZChtZXRob2QuaWQpXCJcclxuICAgICAgPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1ldGhvZF9faWNvblwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiJ3BzLWljb24tJyttZXRob2QubmFtZVwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibWV0aG9kX19uYW1lXCIgW3RpdGxlXT1cIm1ldGhvZC5uYW1lIHwgdHJhbnNcIiA+IHt7bWV0aG9kLm5hbWUgfCBtZXRob2RfdGl0bGUgfCB0cmFuc319IDwvc3Bhbj5cclxuICAgIDwvbGk+XHJcbiAgfVxyXG4gIEBpZiAoc2VhcmNoU3RyaW5nIHx8IG90aGVyTWV0aG9kcy5sZW5ndGgpIHtcclxuICAgIDxsaSBjbGFzcz1cIm1ldGhvZHNfX290aGVyXCI+XHJcbiAgICAgIDxhcHAtdHJtLXNlbGVjdCBbZGF0YV09XCJvdGhlck1ldGhvZHNcIlxyXG4gICAgICAgIGlkTGFiZWw9XCJtZXRob2RcIlxyXG4gICAgICAgIChzZWFyY2gpPVwic2VhcmNoKCRldmVudClcIlxyXG4gICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFwiXHJcbiAgICAgICAgKG9wZW4pPVwib25Ub3VjaCgpXCJcclxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwib3RoZXJNZXRob2RDb250cm9sXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiSTE4Tl9LRVkuQ09OU1RSVUNUT1JfUExBQ0VIT0xERVJfUFMgfCB0cmFuc1wiXHJcbiAgICAgICAgY2xhc3M9XCJjLWZpZWxkLXNlbGVjdCB0cm0tZm9ybS1maWVsZFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSB0cm1TZWxlY3RMYWJlbFRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRob2RfX2ljb25cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiJ3BzLWljb24tJytpdGVtLm5hbWVcIj48L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGhvZF9fbmFtZVwiXHJcbiAgICAgICAgICBbdGl0bGVdPVwiaXRlbS5uYW1lIHwgdHJhbnNcIiA+e3tpdGVtLm5hbWUgfCBtZXRob2RfdGl0bGUgfCB0cmFuc319PC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvYXBwLXRybS1zZWxlY3Q+XHJcbiAgICA8L2xpPlxyXG4gIH1cclxuPC91bD5cclxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2FwcC1wcy1zZWxlY3QtaGludF1cIj48L25nLWNvbnRlbnQ+XHJcbjxuZy1jb250ZW50IHNlbGVjdD1cIlthcHAtcHMtc2VsZWN0LWVycm9yXVwiPjwvbmctY29udGVudD5cclxuXHJcbiJdfQ==
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHMtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rlcm1pbmFsLXRlbXBsYXRlL3NyYy9saWIvYXBwL3BhZ2VzL2NvbXBvbmVudHMvY29uc3RydWN0b3ItZm9ybS9jb21wb25lbnRzL3BzLXNlbGVjdC9wcy1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVybWluYWwtdGVtcGxhdGUvc3JjL2xpYi9hcHAvcGFnZXMvY29tcG9uZW50cy9jb25zdHJ1Y3Rvci1mb3JtL2NvbXBvbmVudHMvcHMtc2VsZWN0L3BzLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDMUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDdEcsT0FBTyxFQUNM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LE9BQU87c0JBQWYsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRGVzdHJveVJlZixcclxuICBmb3J3YXJkUmVmLFxyXG4gIGluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkluaXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1ldGhvZFR5cGVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vY29kZWdlbi9tb2RlbC9tb2RlbHMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE1ldGhvZFRpdGxlUGlwZSB9IGZyb20gJy4vLi4vLi4vLi4vLi4vLi4vcGlwZXMvbWV0aG9kLXRpdGxlLnBpcGUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEkxOE5fS0VZIH0gZnJvbSAnLi8uLi8uLi8uLi8uLi8uLi9pMThuJztcclxuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFRhYkluZGV4Rm9jdXNEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi8uLi9kaXJlY3RpdmVzL3RhYi1pbmRleC1mb2N1cy5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBUcm1TZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cy90cm0tc2VsZWN0L3RybS1zZWxlY3QuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBUcm1TZWxlY3RMYWJlbFRlbXBsYXRlRGlyZWN0aXZlXHJcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmVkL2NvbXBvbmVudHMvdHJtLXNlbGVjdC90cm0tc2VsZWN0LWxhYmVsLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUJ5S2V5UGlwZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC9waXBlcy90cmFuc2xhdGUtYnkta2V5LnBpcGUnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXBzLXNlbGVjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BzLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcHMtc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQc1NlbGVjdENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIE1ldGhvZFRpdGxlUGlwZSxcclxuICAgIFRyYW5zbGF0ZVBpcGVcclxuICBdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1RhYkluZGV4Rm9jdXNEaXJlY3RpdmUsIE5nQ2xhc3MsIFRybVNlbGVjdENvbXBvbmVudCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFRybVNlbGVjdExhYmVsVGVtcGxhdGVEaXJlY3RpdmUsIE1ldGhvZFRpdGxlUGlwZSwgVHJhbnNsYXRlQnlLZXlQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHNTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBwcml2YXRlIGNkID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICBwcml2YXRlIG1ldGhvZFRpdGxlUGlwZSA9IGluamVjdChNZXRob2RUaXRsZVBpcGUpO1xyXG4gIHByaXZhdGUgdHJhbnNsYXRlUGlwZSA9IGluamVjdChUcmFuc2xhdGVQaXBlKTtcclxuICBwcml2YXRlIGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XHJcbiAgSTE4Tl9LRVkgPSBJMThOX0tFWTtcclxuICBvbkNoYW5nZSA9IChfdmFsdWUpID0+IHtcclxuICB9O1xyXG4gIG9uVG91Y2ggPSAoKSA9PiB7XHJcbiAgfTtcclxuICBASW5wdXQoKSBtZXRob2RzOiBNZXRob2RUeXBlVHlwZVtdID0gW107XHJcbiAgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSB0YWJJbmRleDogbnVtYmVyO1xyXG5cclxuICBzZWxlY3RlZFR5cGU6IG51bWJlcjtcclxuICBvdGhlck1ldGhvZENvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sPG51bWJlcj4odW5kZWZpbmVkKTtcclxuICBzZWFyY2hTdHJpbmc6IHN0cmluZztcclxuXHJcbiAgZ2V0IHBvcHVsYXJNZXRob2RzKCk6IE1ldGhvZFR5cGVUeXBlW10ge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5tZXRob2RzLnNsaWNlKDAsIDQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG90aGVyTWV0aG9kcygpOiBNZXRob2RUeXBlVHlwZVtdIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm1ldGhvZHMuc2xpY2UoMCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5tZXRob2RzXHJcbiAgICAgIC5zbGljZSh0aGlzLnBvcHVsYXJNZXRob2RzLmxlbmd0aClcclxuICAgICAgLmZpbHRlcigobTogTWV0aG9kVHlwZVR5cGUpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RyaW5nKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgdGl0bGU6IHN0cmluZyA9IHRoaXMudHJhbnNsYXRlUGlwZS50cmFuc2Zvcm0oXHJcbiAgICAgICAgICAgIHRoaXMubWV0aG9kVGl0bGVQaXBlLnRyYW5zZm9ybShtLm5hbWUpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuIHRpdGxlLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgLnNwbGl0KCcgJykuc29tZShcclxuICAgICAgICAgICAgICB0cyA9PiB0aGlzLnNlYXJjaFN0cmluZy50b0xvd2VyQ2FzZSgpLnNwbGl0KCcgJykuc29tZShzID0+IHRzLmluY2x1ZGVzKHMpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMub3RoZXJNZXRob2RDb250cm9sXHJcbiAgICAgIC52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKG0gPT4gISFtKSxcclxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKG1ldGhvZCkgPT4gdGhpcy5zZWxlY3RNZXRob2QobWV0aG9kKSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RNZXRob2QobWV0aG9kOiBudW1iZXIsIG9wdGlvbnM6IHsgZW1pdENoYW5nZTogYm9vbGVhbiB9ID0ge2VtaXRDaGFuZ2U6IHRydWV9KSB7XHJcbiAgICBpZiAoIW1ldGhvZCB8fCB0aGlzLnNlbGVjdGVkVHlwZSA9PT0gbWV0aG9kKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gbWV0aG9kO1xyXG4gICAgaWYgKG9wdGlvbnM/LmVtaXRDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5vbkNoYW5nZShtZXRob2QpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaGFzSW5PdGhlckxpc3QgPSB0aGlzLm90aGVyTWV0aG9kcy5zb21lKG0gPT4gbS5pZCA9PT0gbWV0aG9kKTtcclxuICAgIHRoaXMub3RoZXJNZXRob2RDb250cm9sLnNldFZhbHVlKGhhc0luT3RoZXJMaXN0ID8gbWV0aG9kIDogdW5kZWZpbmVkLCB7ZW1pdEV2ZW50OiBmYWxzZSwgb25seVNlbGY6IHRydWV9KTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUobWV0aG9kOiBudW1iZXIpIHtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5zZWxlY3RNZXRob2QobWV0aG9kLCB7ZW1pdENoYW5nZTogZmFsc2V9KTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkXHJcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICBpZiAoIXRoaXMub3RoZXJNZXRob2RDb250cm9sLnZhbHVlICYmIHRoaXMuc2VsZWN0ZWRUeXBlKSB7XHJcbiAgICAgICAgdGhpcy5vdGhlck1ldGhvZENvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZFR5cGUsIHtlbWl0RXZlbnQ6IGZhbHNlLCBvbmx5U2VsZjogdHJ1ZX0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub3RoZXJNZXRob2RDb250cm9sLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub3RoZXJNZXRob2RDb250cm9sLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2godmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5zZWFyY2hTdHJpbmcgPSB2YWx1ZTtcclxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxsYWJlbCBjbGFzcz1cInRybS1sYWJlbFwiPlxyXG4gIHt7STE4Tl9LRVkuQ09OU1RSVUNUT1JfTEFCRUxfUFMgfCB0cmFuc319XHJcbjwvbGFiZWw+XHJcbjx1bCBjbGFzcz1cIm1ldGhvZHNcIj5cclxuICBAZm9yIChtZXRob2Qgb2YgcG9wdWxhck1ldGhvZHM7IHRyYWNrIG1ldGhvZC5pZCkge1xyXG4gICAgPGxpIGNsYXNzPVwibWV0aG9kXCJcclxuICAgICAgW2NsYXNzLm1ldGhvZC0tc2VsZWN0ZWRdPVwic2VsZWN0ZWRUeXBlID09PSBtZXRob2QuaWRcIlxyXG4gICAgICBbdGFiaW5kZXhdPVwidGFiSW5kZXhcIlxyXG4gICAgICAoa2V5ZG93bi5lbnRlcik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHNlbGVjdE1ldGhvZChtZXRob2QuaWQpXCJcclxuICAgICAgKGJsdXIpPVwib25Ub3VjaCgpXCJcclxuICAgICAgKGNsaWNrKT1cInNlbGVjdE1ldGhvZChtZXRob2QuaWQpXCJcclxuICAgICAgPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1ldGhvZF9faWNvblwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiJ3BzLWljb24tJyttZXRob2QubmFtZVwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibWV0aG9kX19uYW1lXCIgW3RpdGxlXT1cIm1ldGhvZC5uYW1lIHwgdHJhbnNcIiA+IHt7bWV0aG9kLm5hbWUgfCBtZXRob2RfdGl0bGUgfCB0cmFuc319IDwvc3Bhbj5cclxuICAgIDwvbGk+XHJcbiAgfVxyXG4gIEBpZiAoc2VhcmNoU3RyaW5nIHx8IG90aGVyTWV0aG9kcy5sZW5ndGgpIHtcclxuICAgIDxsaSBjbGFzcz1cIm1ldGhvZHNfX290aGVyXCI+XHJcbiAgICAgIDxhcHAtdHJtLXNlbGVjdCBbZGF0YV09XCJvdGhlck1ldGhvZHNcIlxyXG4gICAgICAgIGlkTGFiZWw9XCJtZXRob2RcIlxyXG4gICAgICAgIChzZWFyY2gpPVwic2VhcmNoKCRldmVudClcIlxyXG4gICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFwiXHJcbiAgICAgICAgKG9wZW4pPVwib25Ub3VjaCgpXCJcclxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwib3RoZXJNZXRob2RDb250cm9sXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiSTE4Tl9LRVkuQ09OU1RSVUNUT1JfUExBQ0VIT0xERVJfUFMgfCB0cmFuc1wiXHJcbiAgICAgICAgY2xhc3M9XCJjLWZpZWxkLXNlbGVjdCB0cm0tZm9ybS1maWVsZFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSB0cm1TZWxlY3RMYWJlbFRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRob2RfX2ljb25cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiJ3BzLWljb24tJytpdGVtLm5hbWVcIj48L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGhvZF9fbmFtZVwiXHJcbiAgICAgICAgICBbdGl0bGVdPVwiaXRlbS5uYW1lIHwgdHJhbnNcIiA+e3tpdGVtLm5hbWUgfCBtZXRob2RfdGl0bGUgfCB0cmFuc319PC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvYXBwLXRybS1zZWxlY3Q+XHJcbiAgICA8L2xpPlxyXG4gIH1cclxuPC91bD5cclxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2FwcC1wcy1zZWxlY3QtaGludF1cIj48L25nLWNvbnRlbnQ+XHJcbjxuZy1jb250ZW50IHNlbGVjdD1cIlthcHAtcHMtc2VsZWN0LWVycm9yXVwiPjwvbmctY29udGVudD5cclxuXHJcbiJdfQ==