@sbb-esta/lyne-elements-dev 5.0.0-next.3-dev.1779268556 → 5.0.0-next.3-dev.1779280398

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 (142) hide show
  1. package/autocomplete/autocomplete-base-element.js +1 -1
  2. package/autocomplete/autocomplete.component.js +1 -1
  3. package/{autocomplete-base-element-jaXVQcA7.js → autocomplete-base-element-DjfmUS0W.js} +0 -1
  4. package/autocomplete.js +1 -1
  5. package/autocomplete.pure.js +1 -1
  6. package/calendar/calendar/calendar.component.js +1 -1
  7. package/{calendar.component-DKgkIocz.js → calendar.component-BhUyyFtR.js} +66 -66
  8. package/calendar.js +1 -1
  9. package/calendar.pure.js +1 -1
  10. package/core/base-elements/button-base-element.js +47 -68
  11. package/core/datetime/date-adapter.js +2 -2
  12. package/core/i18n/i18n.js +69 -74
  13. package/core/mixins/form-associated-checkbox-mixin.js +17 -26
  14. package/core.js +40 -42
  15. package/custom-elements.json +98 -446
  16. package/datepicker/common/datepicker-button.js +1 -1
  17. package/{datepicker-button-aYDFZ_3v.js → datepicker-button-CuoZoC6e.js} +0 -3
  18. package/datepicker.js +1 -1
  19. package/datepicker.pure.js +1 -1
  20. package/development/autocomplete/autocomplete-base-element.d.ts +0 -2
  21. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  22. package/development/autocomplete/autocomplete-base-element.js +1 -1
  23. package/development/autocomplete/autocomplete.component.js +1 -1
  24. package/development/{autocomplete-base-element-JxM7QbC4.js → autocomplete-base-element-CTZEg--s.js} +1 -3
  25. package/development/autocomplete.js +1 -1
  26. package/development/autocomplete.pure.js +1 -1
  27. package/development/calendar/calendar/calendar.component.d.ts +0 -6
  28. package/development/calendar/calendar/calendar.component.d.ts.map +1 -1
  29. package/development/calendar/calendar/calendar.component.js +1 -1
  30. package/development/calendar.component-DnC8Zkdk.js +1478 -0
  31. package/development/calendar.js +1 -1
  32. package/development/calendar.pure.js +1 -1
  33. package/development/core/base-elements/button-base-element.d.ts +1 -0
  34. package/development/core/base-elements/button-base-element.d.ts.map +1 -1
  35. package/development/core/base-elements/button-base-element.js +66 -92
  36. package/development/core/base-elements/element.d.ts.map +1 -1
  37. package/development/core/datetime/date-adapter.d.ts +0 -5
  38. package/development/core/datetime/date-adapter.d.ts.map +1 -1
  39. package/development/core/datetime/date-adapter.js +2 -7
  40. package/development/core/i18n/i18n.d.ts +0 -1
  41. package/development/core/i18n/i18n.d.ts.map +1 -1
  42. package/development/core/i18n/i18n.js +2 -8
  43. package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  44. package/development/core/mixins/form-associated-checkbox-mixin.js +7 -21
  45. package/development/core/mixins/form-associated-mixin.d.ts +1 -1
  46. package/development/core/mixins/form-associated-mixin.d.ts.map +1 -1
  47. package/development/core/mixins/form-associated-mixin.js +1 -1
  48. package/development/core.d.ts +0 -2
  49. package/development/core.d.ts.map +1 -1
  50. package/development/core.js +3 -5
  51. package/development/datepicker/common/datepicker-button.d.ts +0 -2
  52. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  53. package/development/datepicker/common/datepicker-button.js +1 -1
  54. package/development/{datepicker-button-BAT1ebzJ.js → datepicker-button-Bb76EBYH.js} +1 -5
  55. package/development/datepicker.js +1 -1
  56. package/development/datepicker.pure.js +1 -1
  57. package/development/dialog/dialog/dialog.component.js +1 -1
  58. package/development/{dialog.component-D8B2dVck.js → dialog.component-cZ3SAujq.js} +5 -5
  59. package/development/dialog.js +1 -1
  60. package/development/dialog.pure.js +1 -1
  61. package/development/element-BAsBayf5.js +1 -1
  62. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.d.ts.map +1 -1
  63. package/development/expansion-panel-header.component-gg5A_7Pz.js +1 -1
  64. package/development/form-field/form-field/form-field.component.d.ts +0 -6
  65. package/development/form-field/form-field/form-field.component.d.ts.map +1 -1
  66. package/development/form-field/form-field/form-field.component.js +1 -1
  67. package/development/form-field.component-w4nlNsj2.js +670 -0
  68. package/development/form-field.js +1 -1
  69. package/development/form-field.pure.js +1 -1
  70. package/development/icon/icon.component.d.ts +1 -1
  71. package/development/icon/icon.component.d.ts.map +1 -1
  72. package/development/icon/icon.component.js +5 -7
  73. package/development/optgroup-base-element-BzfcJgxG.js +140 -0
  74. package/development/option/optgroup/optgroup-base-element.d.ts +1 -2
  75. package/development/option/optgroup/optgroup-base-element.d.ts.map +1 -1
  76. package/development/option/optgroup/optgroup-base-element.js +1 -1
  77. package/development/option/optgroup/optgroup.component.js +1 -1
  78. package/development/option.js +1 -1
  79. package/development/option.pure.js +1 -1
  80. package/development/overlay/overlay-base-element.d.ts +2 -4
  81. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  82. package/development/overlay/overlay-base-element.js +6 -5
  83. package/development/overlay/overlay.component.js +1 -1
  84. package/development/{overlay.component-BH-aue7w.js → overlay.component-DywhKxO1.js} +5 -5
  85. package/development/overlay.js +1 -1
  86. package/development/overlay.pure.js +1 -1
  87. package/development/panel-mixin-DPybe45K.js +1 -1
  88. package/development/slider/slider.component.d.ts +1 -0
  89. package/development/slider/slider.component.d.ts.map +1 -1
  90. package/development/slider/slider.component.js +1 -1
  91. package/development/{slider.component-BLptxiZ4.js → slider.component-Dz4Nl2ZL.js} +8 -21
  92. package/development/slider.js +1 -1
  93. package/development/slider.pure.js +1 -1
  94. package/development/{step.component-DpSJEkrK.js → step.component-CfA-kmt1.js} +1 -11
  95. package/development/stepper/step/step.component.d.ts +4 -14
  96. package/development/stepper/step/step.component.d.ts.map +1 -1
  97. package/development/stepper/step/step.component.js +1 -1
  98. package/development/stepper/stepper/stepper.component.js +1 -1
  99. package/development/{stepper.component-Bv6LCFU0.js → stepper.component-2yRFnnju.js} +5 -5
  100. package/development/stepper.js +2 -2
  101. package/development/stepper.pure.js +2 -2
  102. package/dialog/dialog/dialog.component.js +1 -1
  103. package/{dialog.component-CsBryhM-.js → dialog.component-D3G0AX4Y.js} +4 -4
  104. package/dialog.js +1 -1
  105. package/dialog.pure.js +1 -1
  106. package/form-field/form-field/form-field.component.js +1 -1
  107. package/{form-field.component-BdfK6r2v.js → form-field.component-DkqZz7aZ.js} +62 -83
  108. package/form-field.js +1 -1
  109. package/form-field.pure.js +1 -1
  110. package/icon/icon.component.js +2 -5
  111. package/lean-off-brand-theme.css +1 -0
  112. package/lean-safety-theme.css +1 -0
  113. package/lean-theme.css +1 -0
  114. package/off-brand-theme.css +1 -0
  115. package/{optgroup-base-element-Cxe8SIQh.js → optgroup-base-element-CBxsRPUF.js} +10 -17
  116. package/option/optgroup/optgroup-base-element.js +1 -1
  117. package/option/optgroup/optgroup.component.js +1 -1
  118. package/option.js +1 -1
  119. package/option.pure.js +1 -1
  120. package/overlay/overlay-base-element.js +3 -3
  121. package/overlay/overlay.component.js +1 -1
  122. package/{overlay.component-D7Z_vx1A.js → overlay.component-OSLtja0_.js} +4 -4
  123. package/overlay.js +1 -1
  124. package/overlay.pure.js +1 -1
  125. package/package.json +2 -2
  126. package/safety-theme.css +1 -0
  127. package/slider/slider.component.js +1 -1
  128. package/{slider.component-C8LKcM11.js → slider.component-BMkoF1l1.js} +23 -31
  129. package/slider.js +1 -1
  130. package/slider.pure.js +1 -1
  131. package/standard-theme.css +1 -0
  132. package/core/decorators/host-attributes.js +0 -17
  133. package/core/eventing/throttle.js +0 -11
  134. package/development/calendar.component-CgEXjBeQ.js +0 -1473
  135. package/development/core/decorators/host-attributes.d.ts +0 -22
  136. package/development/core/decorators/host-attributes.d.ts.map +0 -1
  137. package/development/core/decorators/host-attributes.js +0 -41
  138. package/development/core/eventing/throttle.d.ts +0 -3
  139. package/development/core/eventing/throttle.d.ts.map +0 -1
  140. package/development/core/eventing/throttle.js +0 -18
  141. package/development/form-field.component-CPWBCHer.js +0 -702
  142. package/development/optgroup-base-element-CLfE6pmz.js +0 -147
@@ -318,9 +318,9 @@ var SbbStepperElement = (() => {
318
318
  nextIndex: this.selectedIndex !== null ? this.selectedIndex + 1 : null,
319
319
  nextStep: this.selectedIndex !== null ? this.steps[this.selectedIndex + 1] : null
320
320
  };
321
- if (this.selected && !this.selected.validate(validatePayload)) return;
322
- this.selected?.deselect();
323
- step.select();
321
+ if (this.selected && !this.selected["validate"](validatePayload)) return;
322
+ this.selected?.["deselect"]();
323
+ step["select"]();
324
324
  /** @internal only to provide double entry in docs. It is a public event! */
325
325
  this.dispatchEvent(new SbbStepChangeEvent({
326
326
  selectedIndex: this.selectedIndex,
@@ -361,7 +361,7 @@ var SbbStepperElement = (() => {
361
361
  }
362
362
  _configure() {
363
363
  this.steps.forEach((step, i, array) => {
364
- step.configure(this._loaded);
364
+ step["configure"](this._loaded);
365
365
  step.label?.configure(i + 1, array.length, this._loaded);
366
366
  });
367
367
  this._select(this.selected || this._enabledSteps[0]);
@@ -440,4 +440,4 @@ var SbbStepperElement = (() => {
440
440
  //#endregion
441
441
  export { SbbStepperElement as n, SbbStepChangeEvent as t };
442
442
 
443
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5jb21wb25lbnQtQnY2TENGVTAuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3N0ZXBwZXIvc3RlcHBlci9zdGVwcGVyLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3N0ZXBwZXIvc3RlcHBlci9zdGVwcGVyLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIC0tc2JiLXN0ZXBwZXItYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoXG4gICAgLS1zYmItZGlzYWJsZS1hbmltYXRpb24tZHVyYXRpb24sXG4gICAgdmFyKC0tc2JiLWFuaW1hdGlvbi1kdXJhdGlvbi02eClcbiAgKTtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBjb3VudGVyLXJlc2V0OiBzdGVwLWxhYmVsO1xuXG4gIEBtZWRpYSAoZm9yY2VkLWNvbG9yczogYWN0aXZlKSB7XG4gICAgLS1zYmItc3RlcHBlci1tYXJrZXItY29sb3I6IEJ1dHRvblRleHQ7XG4gIH1cbn1cblxuOmhvc3QoOnN0YXRlKGRpc2FibGUtYW5pbWF0aW9uKSkge1xuICBAaW5jbHVkZSBzYmIuZGlzYWJsZS1hbmltYXRpb247XG59XG5cbjpob3N0KFtvcmllbnRhdGlvbj0ndmVydGljYWwnXSkge1xuICAtLXNiYi1zdGVwcGVyLW9yaWVudGF0aW9uOiBjb2x1bW47XG59XG5cbi5zYmItc3RlcHBlcl9fbGFiZWxzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHZhcigtLXNiYi1zdGVwcGVyLW9yaWVudGF0aW9uKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0O1xuICBtYXJnaW4tYmxvY2stZW5kOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLW0pO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0LWlubGluZS1zdGFydDogY2FsYyh2YXIoLS1zYmItc3RlcHBlci1ib3JkZXItd2lkdGgpICogLTEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1zdGVwcGVyLW1hcmtlci1jb2xvcik7XG4gIH1cblxuICA6aG9zdChbb3JpZW50YXRpb249J2hvcml6b250YWwnXSkgJiB7XG4gICAgZ2FwOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLW0pO1xuICAgIHBhZGRpbmctYmxvY2stZW5kOiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC00eCk7XG4gICAgYm9yZGVyLWJsb2NrLWVuZDogdmFyKC0tc2JiLXN0ZXBwZXItYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1zYmItYm9yZGVyLWNvbG9yLTQtaW52ZXJ0ZWQpO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGluc2V0LWJsb2NrLWVuZDogY2FsYyh2YXIoLS1zYmItc3RlcHBlci1ib3JkZXItd2lkdGgpICogLTEpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1zYmItc3RlcHBlci1tYXJrZXItd2lkdGgpO1xuICAgICAgd2lkdGg6IHZhcigtLXNiYi1zdGVwcGVyLW1hcmtlci1zaXplLCAwKTtcbiAgICAgIHRyYW5zaXRpb246IHdpZHRoIHZhcigtLXNiYi1zdGVwcGVyLWFuaW1hdGlvbi1kdXJhdGlvbikgdmFyKC0tc2JiLWFuaW1hdGlvbi1lYXNpbmcpO1xuICAgIH1cbiAgfVxuXG4gIDpob3N0KFtvcmllbnRhdGlvbj0ndmVydGljYWwnXSkgJiB7XG4gICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTR4KTtcbiAgICBib3JkZXItaW5saW5lLXN0YXJ0OiB2YXIoLS1zYmItc3RlcHBlci1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLXNiYi1ib3JkZXItY29sb3ItNC1pbnZlcnRlZCk7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICB3aWR0aDogdmFyKC0tc2JiLXN0ZXBwZXItbWFya2VyLXdpZHRoKTtcbiAgICAgIGhlaWdodDogdmFyKC0tc2JiLXN0ZXBwZXItbWFya2VyLXNpemUsIDApO1xuICAgICAgdHJhbnNpdGlvbjogaGVpZ2h0IHZhcigtLXNiYi1zdGVwcGVyLWFuaW1hdGlvbi1kdXJhdGlvbikgdmFyKC0tc2JiLWFuaW1hdGlvbi1lYXNpbmcpO1xuICAgIH1cbiAgfVxufVxuXG4uc2JiLXN0ZXBwZXJfX3N0ZXBzIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIDpob3N0KFtvcmllbnRhdGlvbj0naG9yaXpvbnRhbCddKSAmIHtcbiAgICBoZWlnaHQ6IHZhcigtLXNiYi1zdGVwcGVyLWNvbnRlbnQtaGVpZ2h0KTtcbiAgICB0cmFuc2l0aW9uOiBoZWlnaHQgdmFyKC0tc2JiLXN0ZXBwZXItYW5pbWF0aW9uLWR1cmF0aW9uKSB2YXIoLS1zYmItYW5pbWF0aW9uLWVhc2luZyk7XG4gIH1cbn1cblxuOjpzbG90dGVkKHNiYi1zdGVwLWxhYmVsKTo6YmVmb3JlIHtcbiAgY29udGVudDogY291bnRlcihzdGVwLWxhYmVsKTtcbiAgY291bnRlci1pbmNyZW1lbnQ6IHN0ZXAtbGFiZWw7XG59XG4iLCJpbXBvcnQgeyBJbnRlcnNlY3Rpb25Db250cm9sbGVyIH0gZnJvbSAnQGxpdC1sYWJzL29ic2VydmVycy9pbnRlcnNlY3Rpb24tY29udHJvbGxlci5qcyc7XG5pbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB1bnNhZmVDU1MsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBTYmJIb3Jpem9udGFsRnJvbSB9IGZyb20gJy4uLy4uL2NvcmUudHMnO1xuaW1wb3J0IHtcbiAgZm9yY2VUeXBlLFxuICBnZXROZXh0RWxlbWVudEluZGV4LFxuICBpc0Fycm93S2V5UHJlc3NlZCxcbiAgU2JiRWxlbWVudCxcbiAgU2JiTWVkaWFNYXRjaGVyQ29udHJvbGxlcixcbiAgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRMYXJnZUFuZEFib3ZlLFxuICBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFNtYWxsQW5kQWJvdmUsXG4gIFNiYk1lZGlhUXVlcnlCcmVha3BvaW50VWx0cmFBbmRBYm92ZSxcbiAgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRaZXJvQW5kQWJvdmUsXG59IGZyb20gJy4uLy4uL2NvcmUudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJTdGVwRWxlbWVudCwgU2JiU3RlcFZhbGlkYXRlRXZlbnREZXRhaWxzIH0gZnJvbSAnLi4vc3RlcC9zdGVwLmNvbXBvbmVudC50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3N0ZXBwZXIuc2Nzcz9pbmxpbmUnO1xuXG5jb25zdCBERUJPVU5DRV9USU1FID0gMTUwO1xuXG5jb25zdCBicmVha3BvaW50TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICB6ZXJvOiBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFplcm9BbmRBYm92ZSxcbiAgc21hbGw6IFNiYk1lZGlhUXVlcnlCcmVha3BvaW50U21hbGxBbmRBYm92ZSxcbiAgbGFyZ2U6IFNiYk1lZGlhUXVlcnlCcmVha3BvaW50TGFyZ2VBbmRBYm92ZSxcbiAgdWx0cmE6IFNiYk1lZGlhUXVlcnlCcmVha3BvaW50VWx0cmFBbmRBYm92ZSxcbn07XG5cbmV4cG9ydCBjbGFzcyBTYmJTdGVwQ2hhbmdlRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGVkSW5kZXg6IG51bWJlciB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ByZXZpb3VzSW5kZXg6IG51bWJlciB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGVkU3RlcDogU2JiU3RlcEVsZW1lbnQgfCBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wcmV2aW91c1N0ZXA6IFNiYlN0ZXBFbGVtZW50IHwgbnVsbDtcblxuICAvKiogVGhlIGluZGV4IG9mIHRoZSBuZXdseSBzZWxlY3RlZCBzdGVwLiAqL1xuICBwdWJsaWMgZ2V0IHNlbGVjdGVkSW5kZXgoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSW5kZXg7XG4gIH1cblxuICAvKiogVGhlIGluZGV4IG9mIHRoZSBwcmV2aW91c2x5IHNlbGVjdGVkIHN0ZXAuICovXG4gIHB1YmxpYyBnZXQgcHJldmlvdXNJbmRleCgpOiBudW1iZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcHJldmlvdXNJbmRleDtcbiAgfVxuXG4gIC8qKiBUaGUgbmV3bHkgc2VsZWN0ZWQgc3RlcCBlbGVtZW50LiAqL1xuICBwdWJsaWMgZ2V0IHNlbGVjdGVkU3RlcCgpOiBTYmJTdGVwRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZFN0ZXA7XG4gIH1cblxuICAvKiogVGhlIHByZXZpb3VzbHkgc2VsZWN0ZWQgc3RlcCBlbGVtZW50LiAqL1xuICBwdWJsaWMgZ2V0IHByZXZpb3VzU3RlcCgpOiBTYmJTdGVwRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wcmV2aW91c1N0ZXA7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3Ioe1xuICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgcHJldmlvdXNJbmRleCxcbiAgICBzZWxlY3RlZFN0ZXAsXG4gICAgcHJldmlvdXNTdGVwLFxuICB9OiBPbWl0PFNiYlN0ZXBDaGFuZ2VFdmVudCwga2V5b2YgRXZlbnQ+KSB7XG4gICAgc3VwZXIoJ3N0ZXBjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pO1xuICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEluZGV4O1xuICAgIHRoaXMuX3ByZXZpb3VzSW5kZXggPSBwcmV2aW91c0luZGV4O1xuICAgIHRoaXMuX3NlbGVjdGVkU3RlcCA9IHNlbGVjdGVkU3RlcDtcbiAgICB0aGlzLl9wcmV2aW91c1N0ZXAgPSBwcmV2aW91c1N0ZXA7XG4gIH1cbn1cbi8qKlxuICogUHJvdmlkZXMgYSBzdHJ1Y3R1cmVkLCBzdGVwLWJ5LXN0ZXAgd29ya2Zsb3cgZm9yIHVzZXIgaW50ZXJhY3Rpb25zLlxuICogQHNsb3QgLSBQcm92aWRlIGEgYHNiYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyYCBhbmQgYSBgc2JiLWV4cGFuc2lvbi1wYW5lbC1jb250ZW50YCB0byB0aGUgc3RlcHBlci5cbiAqIEBzbG90IHN0ZXAtbGFiZWwgLSBVc2UgdGhpcyBzbG90IHRvIHByb3ZpZGUgYW4gYHNiYi1zdGVwLWxhYmVsYC5cbiAqIEBzbG90IHN0ZXAgLSBVc2UgdGhpcyBzbG90IHRvIHByb3ZpZGUgYW4gYHNiYi1zdGVwYC5cbiAqIEBldmVudCB7U2JiU3RlcENoYW5nZUV2ZW50fSBzdGVwY2hhbmdlIC0gRW1pdHMgd2hlbmV2ZXIgYSBzdGVwIHdhcyBjaGFuZ2VkLlxuICovXG5leHBvcnQgY2xhc3MgU2JiU3RlcHBlckVsZW1lbnQgZXh0ZW5kcyBTYmJFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBlbGVtZW50TmFtZTogc3RyaW5nID0gJ3NiYi1zdGVwcGVyJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW3Vuc2FmZUNTUyhzdHlsZSldO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBzdGVwY2hhbmdlOiAnc3RlcGNoYW5nZScsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqXG4gICAqIElmIHRoZSBzYmItc3RlcHBlciBpcyB1c2VkIGluIGEgc2JiLWRpYWxvZywgdGhlIG1hcmtlciBvbiB0aGUgc2VsZWN0ZWQgZWxlbWVudCB3aWxsIG5vdCBhcHBlYXIsXG4gICAqIGJlY2F1c2UgdGhlIGNhbGN1bGF0aW9ucyBhcmUgZG9uZSB3aGVuIHRoZSBkaWFsb2cgaXMgY2xvc2VkLCBzbyB0aGUgbWFya2VyIGhhcyBhIHdpZHRoIG9mIDA7XG4gICAqIHRoZSBzYW1lIGhhcHBlbnMgZm9yIHRoZSBzdGVwcGVyIGhlaWdodC5cbiAgICogV2UgbmVlZCB0byByZWNhbGN1bGF0ZSBpdCB3aGVuIHRoZSBlbGVtZW50IGJlY29tZXMgdmlzaWJsZS5cbiAgICovXG4gIHByaXZhdGUgX29ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbkNvbnRyb2xsZXIodGhpcywge1xuICAgIHRhcmdldDogbnVsbCxcbiAgICBjYWxsYmFjazogKGVudHJpZXMpID0+IHtcbiAgICAgIGVudHJpZXMuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICBpZiAoZS5pbnRlcnNlY3Rpb25SYXRpbyA+IDApIHtcbiAgICAgICAgICB0aGlzLl9zZXRTdGVwcGVySGVpZ2h0KHRoaXMuc2VsZWN0ZWQpO1xuICAgICAgICAgIHRoaXMuX3NldE1hcmtlclNpemUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgfSk7XG5cbiAgLyoqIElmIHNldCB0byB0cnVlLCBvbmx5IHRoZSBjdXJyZW50IGFuZCBwcmV2aW91cyBsYWJlbHMgY2FuIGJlIGNsaWNrZWQgYW5kIHNlbGVjdGVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgbGluZWFyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIE92ZXJyaWRlcyB0aGUgYmVoYXZpb3Igb2YgYG9yaWVudGF0aW9uYCBwcm9wZXJ0eS4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaG9yaXpvbnRhbC1mcm9tJywgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgc2V0IGhvcml6b250YWxGcm9tKHZhbHVlOiBTYmJIb3Jpem9udGFsRnJvbSB8IG51bGwpIHtcbiAgICB0aGlzLl9ob3Jpem9udGFsRnJvbSA9IHZhbHVlICYmIGJyZWFrcG9pbnRNYXBbdmFsdWVdID8gdmFsdWUgOiBudWxsO1xuICAgIGlmICh0aGlzLl9ob3Jpem9udGFsRnJvbSAmJiB0aGlzLl9sb2FkZWQpIHtcbiAgICAgIHRoaXMuX2NoZWNrT3JpZW50YXRpb24oKTtcbiAgICB9XG4gIH1cbiAgcHVibGljIGdldCBob3Jpem9udGFsRnJvbSgpOiBTYmJIb3Jpem9udGFsRnJvbSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9ob3Jpem9udGFsRnJvbTtcbiAgfVxuICBwcml2YXRlIF9ob3Jpem9udGFsRnJvbTogU2JiSG9yaXpvbnRhbEZyb20gfCBudWxsID0gbnVsbDtcblxuICAvKiogU3RlcHMgb3JpZW50YXRpb24sIGVpdGhlciBob3Jpem9udGFsIG9yIHZlcnRpY2FsLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyA9ICdob3Jpem9udGFsJztcblxuICAvKipcbiAgICogU2l6ZSB2YXJpYW50LCBlaXRoZXIgcyAobGVhbiB0aGVtZSBkZWZhdWx0KSBvciBtIChzdGFuZGFyZCB0aGVtZSBkZWZhdWx0KS5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdzJyB8ICdtJyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIHN0ZXAuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSlcbiAgcHVibGljIHNldCBzZWxlY3RlZChzdGVwOiBTYmJTdGVwRWxlbWVudCB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5fbG9hZGVkKSB7XG4gICAgICB0aGlzLl9zZWxlY3Qoc3RlcCk7XG4gICAgfVxuICAgIHRoaXMuX3JlcXVlc3RlZFNlbGVjdGVkID0gc3RlcDtcbiAgfVxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCk6IFNiYlN0ZXBFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlTZWxlY3Rvcj8uPFNiYlN0ZXBFbGVtZW50Pignc2JiLXN0ZXA6c3RhdGUoc2VsZWN0ZWQpJykgPz8gbnVsbDtcbiAgfVxuICBwcml2YXRlIF9yZXF1ZXN0ZWRTZWxlY3RlZDogU2JiU3RlcEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBzdGVwIGluZGV4LiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdzZWxlY3RlZC1pbmRleCcsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkSW5kZXgoaW5kZXg6IG51bWJlciB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5fbG9hZGVkICYmIGluZGV4ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl9zZWxlY3QodGhpcy5zdGVwc1tpbmRleF0pO1xuICAgIH1cbiAgICB0aGlzLl9yZXF1ZXN0ZWRTZWxlY3RlZEluZGV4ID0gaW5kZXg7XG4gIH1cbiAgcHVibGljIGdldCBzZWxlY3RlZEluZGV4KCk6IG51bWJlciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkID8gdGhpcy5zdGVwcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWQpIDogbnVsbDtcbiAgfVxuICBwcml2YXRlIF9yZXF1ZXN0ZWRTZWxlY3RlZEluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIHN0ZXBzIG9mIHRoZSBzdGVwcGVyLiAqL1xuICBwdWJsaWMgZ2V0IHN0ZXBzKCk6IFNiYlN0ZXBFbGVtZW50W10ge1xuICAgIGNvbnN0IHN0ZXBzOiBTYmJTdGVwRWxlbWVudFtdID0gW107XG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPy4oJ3NiYi1zdGVwJykuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgY3VzdG9tRWxlbWVudHMudXBncmFkZShzdGVwKTtcbiAgICAgIHN0ZXBzLnB1c2goc3RlcCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN0ZXBzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX2VuYWJsZWRTdGVwcygpOiBTYmJTdGVwRWxlbWVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcy5maWx0ZXIoKHMpID0+IHtcbiAgICAgIGlmIChzLmxhYmVsKSB7XG4gICAgICAgIGN1c3RvbUVsZW1lbnRzLnVwZ3JhZGUocy5sYWJlbCk7XG4gICAgICAgIHJldHVybiAhcy5sYWJlbC5kaXNhYmxlZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9yZXNpemVPYnNlcnZlclRpbWVvdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX21lZGlhTWF0Y2hlciA9IG5ldyBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyKHRoaXMsIHt9KTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Ligna2V5ZG93bicsIChlKSA9PiB0aGlzLl9oYW5kbGVLZXlEb3duKGUpKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LigncmVzaXplY2hhbmdlJywgKGU6IEV2ZW50KSA9PiB0aGlzLl9vblNlbGVjdGVkU3RlcFJlc2l6ZShlKSk7XG4gIH1cblxuICAvKiogU2VsZWN0cyB0aGUgbmV4dCBzdGVwLiAqL1xuICBwdWJsaWMgbmV4dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl9zZWxlY3QodGhpcy5zdGVwc1t0aGlzLnNlbGVjdGVkSW5kZXggKyAxXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFNlbGVjdHMgdGhlIHByZXZpb3VzIHN0ZXAuICovXG4gIHB1YmxpYyBwcmV2aW91cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl9zZWxlY3QodGhpcy5zdGVwc1t0aGlzLnNlbGVjdGVkSW5kZXggLSAxXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJlc2V0cyB0aGUgZm9ybSBpbiB3aGljaCB0aGUgc3RlcHBlciBpcyBuZXN0ZWQgb3IgZXZlcnkgZm9ybSBvZiBlYWNoIHN0ZXAsIGlmIGFueS4gKi9cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNsb3Nlc3RGb3JtID0gdGhpcy5jbG9zZXN0KCdmb3JtJyk7XG4gICAgaWYgKGNsb3Nlc3RGb3JtKSB7XG4gICAgICBjbG9zZXN0Rm9ybS5yZXNldCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ2Zvcm0nKS5mb3JFYWNoKChmb3JtKSA9PiBmb3JtLnJlc2V0KCkpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xuICAgIC8vIEluIGNhc2UgdGhlIGZvY3VzIGlzIGN1cnJlbnRseSBpbnNpZGUgdGhlIHN0ZXBwZXIsIHdlIHJlc2V0IHRoZSBmb2N1cyB0byB0aGUgZmlyc3Qvc2VsZWN0ZWQgc3RlcCBsYWJlbC5cbiAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudD8uY2xvc2VzdCgnc2JiLXN0ZXBwZXInKSA9PT0gdGhpcykge1xuICAgICAgdGhpcy5zZWxlY3RlZD8ubGFiZWw/LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNTZWxlY3RhYmxlKHN0ZXA6IFNiYlN0ZXBFbGVtZW50IHwgbnVsbCk6IHN0ZXAgaXMgU2JiU3RlcEVsZW1lbnQge1xuICAgIGlmIChzdGVwKSB7XG4gICAgICBjdXN0b21FbGVtZW50cy51cGdyYWRlKHN0ZXApO1xuICAgICAgaWYgKHN0ZXAubGFiZWwpIHtcbiAgICAgICAgY3VzdG9tRWxlbWVudHMudXBncmFkZShzdGVwLmxhYmVsKTtcbiAgICAgICAgaWYgKCF0aGlzLmxpbmVhciAmJiBzdGVwLmxhYmVsLmRpc2FibGVkKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdChzdGVwOiBTYmJTdGVwRWxlbWVudCB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzU2VsZWN0YWJsZShzdGVwKSB8fCBzdGVwID09PSB0aGlzLnNlbGVjdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuc2VsZWN0ZWRJbmRleDtcbiAgICBjb25zdCBjdXJyZW50U3RlcCA9IHRoaXMuc2VsZWN0ZWQ7XG4gICAgY29uc3QgdmFsaWRhdGVQYXlsb2FkOiBTYmJTdGVwVmFsaWRhdGVFdmVudERldGFpbHMgPSB7XG4gICAgICBjdXJyZW50SW5kZXgsXG4gICAgICBjdXJyZW50U3RlcCxcbiAgICAgIG5leHRJbmRleDogdGhpcy5zZWxlY3RlZEluZGV4ICE9PSBudWxsID8gdGhpcy5zZWxlY3RlZEluZGV4ICsgMSA6IG51bGwsXG4gICAgICBuZXh0U3RlcDogdGhpcy5zZWxlY3RlZEluZGV4ICE9PSBudWxsID8gdGhpcy5zdGVwc1t0aGlzLnNlbGVjdGVkSW5kZXggKyAxXSA6IG51bGwsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkICYmICF0aGlzLnNlbGVjdGVkLnZhbGlkYXRlKHZhbGlkYXRlUGF5bG9hZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5zZWxlY3RlZDtcbiAgICBjdXJyZW50Py5kZXNlbGVjdCgpO1xuICAgIHN0ZXAuc2VsZWN0KCk7XG5cbiAgICAvKiogQGludGVybmFsIG9ubHkgdG8gcHJvdmlkZSBkb3VibGUgZW50cnkgaW4gZG9jcy4gSXQgaXMgYSBwdWJsaWMgZXZlbnQhICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IFNiYlN0ZXBDaGFuZ2VFdmVudCh7XG4gICAgICAgIHNlbGVjdGVkSW5kZXg6IHRoaXMuc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgcHJldmlvdXNJbmRleDogY3VycmVudEluZGV4LFxuICAgICAgICBzZWxlY3RlZFN0ZXA6IHRoaXMuc2VsZWN0ZWQsXG4gICAgICAgIHByZXZpb3VzU3RlcDogY3VycmVudFN0ZXAsXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgdGhpcy5fc2V0TWFya2VyU2l6ZSgpO1xuICAgIHRoaXMuX3NldFN0ZXBwZXJIZWlnaHQoc3RlcCk7XG4gICAgdGhpcy5fY29uZmlndXJlTGluZWFyTW9kZSgpO1xuICAgIC8vIEluIGNhc2UgdGhlIGZvY3VzIGlzIGN1cnJlbnRseSBpbnNpZGUgdGhlIHN0ZXBwZXIsIHdlIGZvY3VzIHRoZSBzZWxlY3RlZCBzdGVwIGxhYmVsLlxuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5jbG9zZXN0KCdzYmItc3RlcHBlcicpID09PSB0aGlzKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkPy5sYWJlbD8uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXRNYXJrZXJTaXplKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgICF0aGlzLl9sb2FkZWQgfHxcbiAgICAgICF0aGlzLnNlbGVjdGVkIHx8XG4gICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPT09IHVuZGVmaW5lZCB8fFxuICAgICAgIXRoaXMuc2VsZWN0ZWQubGFiZWxcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgb2Zmc2V0ID1cbiAgICAgIHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJ1xuICAgICAgICA/IHRoaXMuc2VsZWN0ZWQubGFiZWwub2Zmc2V0TGVmdCArIHRoaXMuc2VsZWN0ZWQubGFiZWwub2Zmc2V0V2lkdGhcbiAgICAgICAgOiB0aGlzLl9jYWxjdWxhdGVMYWJlbE9mZnNldFRvcCgpO1xuXG4gICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItc3RlcHBlci1tYXJrZXItc2l6ZScsIGAke29mZnNldH1weGApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0ZXBwZXIgaGVpZ2h0IGJhc2VkIG9uIHRoZSBoZWlnaHQgb2YgdGhlIHByb3ZpZGVkIHN0ZXAuXG4gICAqL1xuICBwcml2YXRlIF9zZXRTdGVwcGVySGVpZ2h0KHN0ZXA6IFNiYlN0ZXBFbGVtZW50IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChzdGVwICYmIHN0ZXAuc2hhZG93Um9vdCkge1xuICAgICAgY29uc3QgaW5uZXJFbGVtZW50OiBTYmJTdGVwRWxlbWVudCB8IG51bGwgPSBzdGVwLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignLnNiYi1zdGVwJyk7XG4gICAgICBpZiAoaW5uZXJFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuc3R5bGU/LnNldFByb3BlcnR5KCctLXNiYi1zdGVwcGVyLWNvbnRlbnQtaGVpZ2h0JywgYCR7aW5uZXJFbGVtZW50Lm9mZnNldEhlaWdodH1weGApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NhbGN1bGF0ZUxhYmVsT2Zmc2V0VG9wKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBmb3IgKGNvbnN0IHN0ZXAgb2YgdGhpcy5zdGVwcykge1xuICAgICAgaWYgKHN0ZXAgPT09IHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBvZmZzZXQgPSBzdGVwLmxhYmVsIS5vZmZzZXRIZWlnaHQgKyBvZmZzZXQ7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICBvZmZzZXQgK1xuICAgICAgdGhpcy5zZWxlY3RlZCEubGFiZWwhLm9mZnNldEhlaWdodCEgK1xuICAgICAgcGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKHRoaXMpLmdldFByb3BlcnR5VmFsdWUoJy0tc2JiLXNwYWNpbmctZml4ZWQtNngnKSkgKlxuICAgICAgICAxNiAqXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9vblNlbGVjdGVkU3RlcFJlc2l6ZShlOiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuX3NldFN0ZXBwZXJIZWlnaHQoZS50YXJnZXQgYXMgU2JiU3RlcEVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uZmlndXJlKCk6IHZvaWQge1xuICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCwgaSwgYXJyYXkpID0+IHtcbiAgICAgIHN0ZXAuY29uZmlndXJlKHRoaXMuX2xvYWRlZCk7XG4gICAgICBzdGVwLmxhYmVsPy5jb25maWd1cmUoaSArIDEsIGFycmF5Lmxlbmd0aCwgdGhpcy5fbG9hZGVkKTtcbiAgICB9KTtcbiAgICB0aGlzLl9zZWxlY3QodGhpcy5zZWxlY3RlZCB8fCB0aGlzLl9lbmFibGVkU3RlcHNbMF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlTGFiZWxzKCk6IHZvaWQge1xuICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgc3RlcC5zbG90ID0gdGhpcy5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnID8gJ3N0ZXAnIDogJ3N0ZXAtbGFiZWwnO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tPcmllbnRhdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ob3Jpem9udGFsRnJvbSkge1xuICAgICAgdGhpcy5vcmllbnRhdGlvbiA9IHRoaXMuX21lZGlhTWF0Y2hlci5tYXRjaGVzKGJyZWFrcG9pbnRNYXBbdGhpcy5ob3Jpem9udGFsRnJvbV0pXG4gICAgICAgID8gJ2hvcml6b250YWwnXG4gICAgICAgIDogJ3ZlcnRpY2FsJztcbiAgICAgIHRoaXMuX3VwZGF0ZUxhYmVscygpO1xuICAgIH1cbiAgICAvLyBUaGUgdGltZW91dCBpcyBuZWVkZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG1hcmtlciB0YWtlcyB0aGUgY29ycmVjdCBzdGVwLWxhYmVsIHNpemUuXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLl9zZXRNYXJrZXJTaXplKCksIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25TdGVwcGVyUmVzaXplID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuX2NoZWNrT3JpZW50YXRpb24oKTtcbiAgICB0aGlzLl9zZXRTdGVwcGVySGVpZ2h0KHRoaXMuc2VsZWN0ZWQpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9yZXNpemVPYnNlcnZlclRpbWVvdXQhKTtcbiAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKCdkaXNhYmxlLWFuaW1hdGlvbicpO1xuXG4gICAgLy8gRGlzYWJsZSB0aGUgYW5pbWF0aW9uIHdoZW4gcmVzaXppbmcgdG8gYXZvaWQgc3RyYW5nZSB0cmFuc2l0aW9uIGVmZmVjdHMuXG4gICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXJUaW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICgpID0+IHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUoJ2Rpc2FibGUtYW5pbWF0aW9uJyksXG4gICAgICBERUJPVU5DRV9USU1FLFxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfY29uZmlndXJlTGluZWFyTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoIXN0ZXAubGFiZWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY3VzdG9tRWxlbWVudHMudXBncmFkZShzdGVwLmxhYmVsKTtcblxuICAgICAgc3RlcC5sYWJlbC5kaXNhYmxlKFxuICAgICAgICAodGhpcy5saW5lYXIgJiYgaW5kZXggPiB0aGlzLnNlbGVjdGVkSW5kZXghKSB8fFxuICAgICAgICAgICghdGhpcy5saW5lYXIgJiYgc3RlcC5sYWJlbC5tYXRjaGVzKCc6c3RhdGUodXNlci1kaXNhYmxlZCknKSksXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX29uU3RlcHBlclJlc2l6ZSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdkaXNhYmxlLWFuaW1hdGlvbicsICF0aGlzLl9sb2FkZWQpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX29uU3RlcHBlclJlc2l6ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgdGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuX2xvYWRlZCA9IHRydWU7XG4gICAgICB0aGlzLl9jb25maWd1cmUoKTtcblxuICAgICAgaWYgKHRoaXMuX3JlcXVlc3RlZFNlbGVjdGVkICYmIHRoaXMuc3RlcHMuaW5kZXhPZih0aGlzLl9yZXF1ZXN0ZWRTZWxlY3RlZCkgIT09IC0xKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IHRoaXMuc3RlcHMuaW5kZXhPZih0aGlzLl9yZXF1ZXN0ZWRTZWxlY3RlZCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX3JlcXVlc3RlZFNlbGVjdGVkSW5kZXgpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdGhpcy5fcmVxdWVzdGVkU2VsZWN0ZWRJbmRleDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IDA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcyk7XG4gICAgICB0aGlzLl9jaGVja09yaWVudGF0aW9uKCk7XG4gICAgICAvLyBSZW1vdmUgZGlzYWJsZS1hbmltYXRpb24gc3RhdGUgYWZ0ZXIgY29tcG9uZW50IGluaXRcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZSgnZGlzYWJsZS1hbmltYXRpb24nKSwgREVCT1VOQ0VfVElNRSk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdvcmllbnRhdGlvbicpICYmICF0aGlzLmhvcml6b250YWxGcm9tKSB7XG4gICAgICB0aGlzLl91cGRhdGVMYWJlbHMoKTtcbiAgICAgIHRoaXMuX3NldE1hcmtlclNpemUoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbGluZWFyJykgJiYgdGhpcy5fbG9hZGVkKSB7XG4gICAgICB0aGlzLl9jb25maWd1cmVMaW5lYXJNb2RlKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnc2l6ZScpKSB7XG4gICAgICB0aGlzLl9zZXRNYXJrZXJTaXplKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlS2V5RG93bihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkU3RlcHM6IFNiYlN0ZXBFbGVtZW50W10gPSB0aGlzLl9lbmFibGVkU3RlcHM7XG5cbiAgICBpZiAoXG4gICAgICAhZW5hYmxlZFN0ZXBzIHx8XG4gICAgICAvLyBkb24ndCB0cmFwIG5lc3RlZCBoYW5kbGluZ1xuICAgICAgKChldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAhPT0gdGhpcyAmJiAoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudCAhPT0gdGhpcylcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNBcnJvd0tleVByZXNzZWQoZXZ0KSkge1xuICAgICAgY29uc3QgY3VycmVudDogbnVtYmVyID0gZW5hYmxlZFN0ZXBzLmluZGV4T2YodGhpcy5zZWxlY3RlZCEpO1xuICAgICAgY29uc3QgbmV4dEluZGV4OiBudW1iZXIgPSBnZXROZXh0RWxlbWVudEluZGV4KGV2dCwgY3VycmVudCwgZW5hYmxlZFN0ZXBzLmxlbmd0aCk7XG4gICAgICB0aGlzLl9zZWxlY3QoZW5hYmxlZFN0ZXBzW25leHRJbmRleF0pO1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLXN0ZXBwZXJfX2xhYmVsc1wiIHJvbGU9XCJ0YWJsaXN0XCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzdGVwLWxhYmVsXCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9jb25maWd1cmV9Pjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zdGVwcGVyX19zdGVwc1wiPlxuICAgICAgICA8c2xvdCBuYW1lPVwic3RlcFwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fY29uZmlndXJlfT48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItc3RlcHBlcic6IFNiYlN0ZXBwZXJFbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQzBCQSxJQUFNLGdCQUFnQjtBQUV0QixJQUFNLGdCQUF3QztDQUM1QyxNQUFNO0NBQ04sT0FBTztDQUNQLE9BQU87Q0FDUCxPQUFPOztBQUdULElBQWEscUJBQWIsY0FBd0MsTUFBSzs7Q0FPM0MsSUFBVyxnQkFBYTtFQUN0QixPQUFPLEtBQUs7Q0FDZDs7Q0FHQSxJQUFXLGdCQUFhO0VBQ3RCLE9BQU8sS0FBSztDQUNkOztDQUdBLElBQVcsZUFBWTtFQUNyQixPQUFPLEtBQUs7Q0FDZDs7Q0FHQSxJQUFXLGVBQVk7RUFDckIsT0FBTyxLQUFLO0NBQ2Q7Q0FFQSxZQUFtQixFQUNqQixlQUNBLGVBQ0EsY0FDQSxnQkFDc0M7RUFDdEMsTUFBTSxjQUFjO0dBQUUsU0FBUztHQUFNLFVBQVU7RUFBSSxDQUFFO0VBQ3JELEtBQUssaUJBQWlCO0VBQ3RCLEtBQUssaUJBQWlCO0VBQ3RCLEtBQUssZ0JBQWdCO0VBQ3JCLEtBQUssZ0JBQWdCO0NBQ3ZCOzs7Ozs7Ozs7SUFTVywyQkFBaUI7bUJBQVM7Ozs7Ozs7Ozs7Ozs7O2NBQTFCLDBCQUEwQixZQUFVOzs7eUJBMEI5QyxVQUFTLEdBQ1QsU0FBUyxFQUFFLE1BQU0sUUFBTyxDQUFFLENBQUM7cUNBSTNCLFNBQVM7SUFBRSxXQUFXO0lBQW1CLFNBQVM7R0FBSSxDQUFFLENBQUM7OEJBYXpELFNBQVMsRUFBRSxTQUFTLEtBQUksQ0FBRSxDQUFD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
443
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5jb21wb25lbnQtMnlSRm5uanUuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3N0ZXBwZXIvc3RlcHBlci9zdGVwcGVyLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3N0ZXBwZXIvc3RlcHBlci9zdGVwcGVyLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIC0tc2JiLXN0ZXBwZXItYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoXG4gICAgLS1zYmItZGlzYWJsZS1hbmltYXRpb24tZHVyYXRpb24sXG4gICAgdmFyKC0tc2JiLWFuaW1hdGlvbi1kdXJhdGlvbi02eClcbiAgKTtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBjb3VudGVyLXJlc2V0OiBzdGVwLWxhYmVsO1xuXG4gIEBtZWRpYSAoZm9yY2VkLWNvbG9yczogYWN0aXZlKSB7XG4gICAgLS1zYmItc3RlcHBlci1tYXJrZXItY29sb3I6IEJ1dHRvblRleHQ7XG4gIH1cbn1cblxuOmhvc3QoOnN0YXRlKGRpc2FibGUtYW5pbWF0aW9uKSkge1xuICBAaW5jbHVkZSBzYmIuZGlzYWJsZS1hbmltYXRpb247XG59XG5cbjpob3N0KFtvcmllbnRhdGlvbj0ndmVydGljYWwnXSkge1xuICAtLXNiYi1zdGVwcGVyLW9yaWVudGF0aW9uOiBjb2x1bW47XG59XG5cbi5zYmItc3RlcHBlcl9fbGFiZWxzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHZhcigtLXNiYi1zdGVwcGVyLW9yaWVudGF0aW9uKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0O1xuICBtYXJnaW4tYmxvY2stZW5kOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLW0pO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0LWlubGluZS1zdGFydDogY2FsYyh2YXIoLS1zYmItc3RlcHBlci1ib3JkZXItd2lkdGgpICogLTEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1zdGVwcGVyLW1hcmtlci1jb2xvcik7XG4gIH1cblxuICA6aG9zdChbb3JpZW50YXRpb249J2hvcml6b250YWwnXSkgJiB7XG4gICAgZ2FwOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLW0pO1xuICAgIHBhZGRpbmctYmxvY2stZW5kOiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC00eCk7XG4gICAgYm9yZGVyLWJsb2NrLWVuZDogdmFyKC0tc2JiLXN0ZXBwZXItYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1zYmItYm9yZGVyLWNvbG9yLTQtaW52ZXJ0ZWQpO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGluc2V0LWJsb2NrLWVuZDogY2FsYyh2YXIoLS1zYmItc3RlcHBlci1ib3JkZXItd2lkdGgpICogLTEpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1zYmItc3RlcHBlci1tYXJrZXItd2lkdGgpO1xuICAgICAgd2lkdGg6IHZhcigtLXNiYi1zdGVwcGVyLW1hcmtlci1zaXplLCAwKTtcbiAgICAgIHRyYW5zaXRpb246IHdpZHRoIHZhcigtLXNiYi1zdGVwcGVyLWFuaW1hdGlvbi1kdXJhdGlvbikgdmFyKC0tc2JiLWFuaW1hdGlvbi1lYXNpbmcpO1xuICAgIH1cbiAgfVxuXG4gIDpob3N0KFtvcmllbnRhdGlvbj0ndmVydGljYWwnXSkgJiB7XG4gICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTR4KTtcbiAgICBib3JkZXItaW5saW5lLXN0YXJ0OiB2YXIoLS1zYmItc3RlcHBlci1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLXNiYi1ib3JkZXItY29sb3ItNC1pbnZlcnRlZCk7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICB3aWR0aDogdmFyKC0tc2JiLXN0ZXBwZXItbWFya2VyLXdpZHRoKTtcbiAgICAgIGhlaWdodDogdmFyKC0tc2JiLXN0ZXBwZXItbWFya2VyLXNpemUsIDApO1xuICAgICAgdHJhbnNpdGlvbjogaGVpZ2h0IHZhcigtLXNiYi1zdGVwcGVyLWFuaW1hdGlvbi1kdXJhdGlvbikgdmFyKC0tc2JiLWFuaW1hdGlvbi1lYXNpbmcpO1xuICAgIH1cbiAgfVxufVxuXG4uc2JiLXN0ZXBwZXJfX3N0ZXBzIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIDpob3N0KFtvcmllbnRhdGlvbj0naG9yaXpvbnRhbCddKSAmIHtcbiAgICBoZWlnaHQ6IHZhcigtLXNiYi1zdGVwcGVyLWNvbnRlbnQtaGVpZ2h0KTtcbiAgICB0cmFuc2l0aW9uOiBoZWlnaHQgdmFyKC0tc2JiLXN0ZXBwZXItYW5pbWF0aW9uLWR1cmF0aW9uKSB2YXIoLS1zYmItYW5pbWF0aW9uLWVhc2luZyk7XG4gIH1cbn1cblxuOjpzbG90dGVkKHNiYi1zdGVwLWxhYmVsKTo6YmVmb3JlIHtcbiAgY29udGVudDogY291bnRlcihzdGVwLWxhYmVsKTtcbiAgY291bnRlci1pbmNyZW1lbnQ6IHN0ZXAtbGFiZWw7XG59XG4iLCJpbXBvcnQgeyBJbnRlcnNlY3Rpb25Db250cm9sbGVyIH0gZnJvbSAnQGxpdC1sYWJzL29ic2VydmVycy9pbnRlcnNlY3Rpb24tY29udHJvbGxlci5qcyc7XG5pbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB1bnNhZmVDU1MsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBTYmJIb3Jpem9udGFsRnJvbSB9IGZyb20gJy4uLy4uL2NvcmUudHMnO1xuaW1wb3J0IHtcbiAgZm9yY2VUeXBlLFxuICBnZXROZXh0RWxlbWVudEluZGV4LFxuICBpc0Fycm93S2V5UHJlc3NlZCxcbiAgU2JiRWxlbWVudCxcbiAgU2JiTWVkaWFNYXRjaGVyQ29udHJvbGxlcixcbiAgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRMYXJnZUFuZEFib3ZlLFxuICBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFNtYWxsQW5kQWJvdmUsXG4gIFNiYk1lZGlhUXVlcnlCcmVha3BvaW50VWx0cmFBbmRBYm92ZSxcbiAgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRaZXJvQW5kQWJvdmUsXG59IGZyb20gJy4uLy4uL2NvcmUudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJTdGVwRWxlbWVudCwgU2JiU3RlcFZhbGlkYXRlRXZlbnREZXRhaWxzIH0gZnJvbSAnLi4vc3RlcC9zdGVwLmNvbXBvbmVudC50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3N0ZXBwZXIuc2Nzcz9pbmxpbmUnO1xuXG5jb25zdCBERUJPVU5DRV9USU1FID0gMTUwO1xuXG5jb25zdCBicmVha3BvaW50TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICB6ZXJvOiBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFplcm9BbmRBYm92ZSxcbiAgc21hbGw6IFNiYk1lZGlhUXVlcnlCcmVha3BvaW50U21hbGxBbmRBYm92ZSxcbiAgbGFyZ2U6IFNiYk1lZGlhUXVlcnlCcmVha3BvaW50TGFyZ2VBbmRBYm92ZSxcbiAgdWx0cmE6IFNiYk1lZGlhUXVlcnlCcmVha3BvaW50VWx0cmFBbmRBYm92ZSxcbn07XG5cbmV4cG9ydCBjbGFzcyBTYmJTdGVwQ2hhbmdlRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGVkSW5kZXg6IG51bWJlciB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ByZXZpb3VzSW5kZXg6IG51bWJlciB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGVkU3RlcDogU2JiU3RlcEVsZW1lbnQgfCBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wcmV2aW91c1N0ZXA6IFNiYlN0ZXBFbGVtZW50IHwgbnVsbDtcblxuICAvKiogVGhlIGluZGV4IG9mIHRoZSBuZXdseSBzZWxlY3RlZCBzdGVwLiAqL1xuICBwdWJsaWMgZ2V0IHNlbGVjdGVkSW5kZXgoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSW5kZXg7XG4gIH1cblxuICAvKiogVGhlIGluZGV4IG9mIHRoZSBwcmV2aW91c2x5IHNlbGVjdGVkIHN0ZXAuICovXG4gIHB1YmxpYyBnZXQgcHJldmlvdXNJbmRleCgpOiBudW1iZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcHJldmlvdXNJbmRleDtcbiAgfVxuXG4gIC8qKiBUaGUgbmV3bHkgc2VsZWN0ZWQgc3RlcCBlbGVtZW50LiAqL1xuICBwdWJsaWMgZ2V0IHNlbGVjdGVkU3RlcCgpOiBTYmJTdGVwRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZFN0ZXA7XG4gIH1cblxuICAvKiogVGhlIHByZXZpb3VzbHkgc2VsZWN0ZWQgc3RlcCBlbGVtZW50LiAqL1xuICBwdWJsaWMgZ2V0IHByZXZpb3VzU3RlcCgpOiBTYmJTdGVwRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wcmV2aW91c1N0ZXA7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3Ioe1xuICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgcHJldmlvdXNJbmRleCxcbiAgICBzZWxlY3RlZFN0ZXAsXG4gICAgcHJldmlvdXNTdGVwLFxuICB9OiBPbWl0PFNiYlN0ZXBDaGFuZ2VFdmVudCwga2V5b2YgRXZlbnQ+KSB7XG4gICAgc3VwZXIoJ3N0ZXBjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pO1xuICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEluZGV4O1xuICAgIHRoaXMuX3ByZXZpb3VzSW5kZXggPSBwcmV2aW91c0luZGV4O1xuICAgIHRoaXMuX3NlbGVjdGVkU3RlcCA9IHNlbGVjdGVkU3RlcDtcbiAgICB0aGlzLl9wcmV2aW91c1N0ZXAgPSBwcmV2aW91c1N0ZXA7XG4gIH1cbn1cbi8qKlxuICogUHJvdmlkZXMgYSBzdHJ1Y3R1cmVkLCBzdGVwLWJ5LXN0ZXAgd29ya2Zsb3cgZm9yIHVzZXIgaW50ZXJhY3Rpb25zLlxuICogQHNsb3QgLSBQcm92aWRlIGEgYHNiYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyYCBhbmQgYSBgc2JiLWV4cGFuc2lvbi1wYW5lbC1jb250ZW50YCB0byB0aGUgc3RlcHBlci5cbiAqIEBzbG90IHN0ZXAtbGFiZWwgLSBVc2UgdGhpcyBzbG90IHRvIHByb3ZpZGUgYW4gYHNiYi1zdGVwLWxhYmVsYC5cbiAqIEBzbG90IHN0ZXAgLSBVc2UgdGhpcyBzbG90IHRvIHByb3ZpZGUgYW4gYHNiYi1zdGVwYC5cbiAqIEBldmVudCB7U2JiU3RlcENoYW5nZUV2ZW50fSBzdGVwY2hhbmdlIC0gRW1pdHMgd2hlbmV2ZXIgYSBzdGVwIHdhcyBjaGFuZ2VkLlxuICovXG5leHBvcnQgY2xhc3MgU2JiU3RlcHBlckVsZW1lbnQgZXh0ZW5kcyBTYmJFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBlbGVtZW50TmFtZTogc3RyaW5nID0gJ3NiYi1zdGVwcGVyJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW3Vuc2FmZUNTUyhzdHlsZSldO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBzdGVwY2hhbmdlOiAnc3RlcGNoYW5nZScsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqXG4gICAqIElmIHRoZSBzYmItc3RlcHBlciBpcyB1c2VkIGluIGEgc2JiLWRpYWxvZywgdGhlIG1hcmtlciBvbiB0aGUgc2VsZWN0ZWQgZWxlbWVudCB3aWxsIG5vdCBhcHBlYXIsXG4gICAqIGJlY2F1c2UgdGhlIGNhbGN1bGF0aW9ucyBhcmUgZG9uZSB3aGVuIHRoZSBkaWFsb2cgaXMgY2xvc2VkLCBzbyB0aGUgbWFya2VyIGhhcyBhIHdpZHRoIG9mIDA7XG4gICAqIHRoZSBzYW1lIGhhcHBlbnMgZm9yIHRoZSBzdGVwcGVyIGhlaWdodC5cbiAgICogV2UgbmVlZCB0byByZWNhbGN1bGF0ZSBpdCB3aGVuIHRoZSBlbGVtZW50IGJlY29tZXMgdmlzaWJsZS5cbiAgICovXG4gIHByaXZhdGUgX29ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbkNvbnRyb2xsZXIodGhpcywge1xuICAgIHRhcmdldDogbnVsbCxcbiAgICBjYWxsYmFjazogKGVudHJpZXMpID0+IHtcbiAgICAgIGVudHJpZXMuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICBpZiAoZS5pbnRlcnNlY3Rpb25SYXRpbyA+IDApIHtcbiAgICAgICAgICB0aGlzLl9zZXRTdGVwcGVySGVpZ2h0KHRoaXMuc2VsZWN0ZWQpO1xuICAgICAgICAgIHRoaXMuX3NldE1hcmtlclNpemUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgfSk7XG5cbiAgLyoqIElmIHNldCB0byB0cnVlLCBvbmx5IHRoZSBjdXJyZW50IGFuZCBwcmV2aW91cyBsYWJlbHMgY2FuIGJlIGNsaWNrZWQgYW5kIHNlbGVjdGVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgbGluZWFyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIE92ZXJyaWRlcyB0aGUgYmVoYXZpb3Igb2YgYG9yaWVudGF0aW9uYCBwcm9wZXJ0eS4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaG9yaXpvbnRhbC1mcm9tJywgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgc2V0IGhvcml6b250YWxGcm9tKHZhbHVlOiBTYmJIb3Jpem9udGFsRnJvbSB8IG51bGwpIHtcbiAgICB0aGlzLl9ob3Jpem9udGFsRnJvbSA9IHZhbHVlICYmIGJyZWFrcG9pbnRNYXBbdmFsdWVdID8gdmFsdWUgOiBudWxsO1xuICAgIGlmICh0aGlzLl9ob3Jpem9udGFsRnJvbSAmJiB0aGlzLl9sb2FkZWQpIHtcbiAgICAgIHRoaXMuX2NoZWNrT3JpZW50YXRpb24oKTtcbiAgICB9XG4gIH1cbiAgcHVibGljIGdldCBob3Jpem9udGFsRnJvbSgpOiBTYmJIb3Jpem9udGFsRnJvbSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9ob3Jpem9udGFsRnJvbTtcbiAgfVxuICBwcml2YXRlIF9ob3Jpem9udGFsRnJvbTogU2JiSG9yaXpvbnRhbEZyb20gfCBudWxsID0gbnVsbDtcblxuICAvKiogU3RlcHMgb3JpZW50YXRpb24sIGVpdGhlciBob3Jpem9udGFsIG9yIHZlcnRpY2FsLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyA9ICdob3Jpem9udGFsJztcblxuICAvKipcbiAgICogU2l6ZSB2YXJpYW50LCBlaXRoZXIgcyAobGVhbiB0aGVtZSBkZWZhdWx0KSBvciBtIChzdGFuZGFyZCB0aGVtZSBkZWZhdWx0KS5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdzJyB8ICdtJyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIHN0ZXAuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSlcbiAgcHVibGljIHNldCBzZWxlY3RlZChzdGVwOiBTYmJTdGVwRWxlbWVudCB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5fbG9hZGVkKSB7XG4gICAgICB0aGlzLl9zZWxlY3Qoc3RlcCk7XG4gICAgfVxuICAgIHRoaXMuX3JlcXVlc3RlZFNlbGVjdGVkID0gc3RlcDtcbiAgfVxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCk6IFNiYlN0ZXBFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlTZWxlY3Rvcj8uPFNiYlN0ZXBFbGVtZW50Pignc2JiLXN0ZXA6c3RhdGUoc2VsZWN0ZWQpJykgPz8gbnVsbDtcbiAgfVxuICBwcml2YXRlIF9yZXF1ZXN0ZWRTZWxlY3RlZDogU2JiU3RlcEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBzdGVwIGluZGV4LiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdzZWxlY3RlZC1pbmRleCcsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkSW5kZXgoaW5kZXg6IG51bWJlciB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5fbG9hZGVkICYmIGluZGV4ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl9zZWxlY3QodGhpcy5zdGVwc1tpbmRleF0pO1xuICAgIH1cbiAgICB0aGlzLl9yZXF1ZXN0ZWRTZWxlY3RlZEluZGV4ID0gaW5kZXg7XG4gIH1cbiAgcHVibGljIGdldCBzZWxlY3RlZEluZGV4KCk6IG51bWJlciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkID8gdGhpcy5zdGVwcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWQpIDogbnVsbDtcbiAgfVxuICBwcml2YXRlIF9yZXF1ZXN0ZWRTZWxlY3RlZEluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIHN0ZXBzIG9mIHRoZSBzdGVwcGVyLiAqL1xuICBwdWJsaWMgZ2V0IHN0ZXBzKCk6IFNiYlN0ZXBFbGVtZW50W10ge1xuICAgIGNvbnN0IHN0ZXBzOiBTYmJTdGVwRWxlbWVudFtdID0gW107XG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPy4oJ3NiYi1zdGVwJykuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgY3VzdG9tRWxlbWVudHMudXBncmFkZShzdGVwKTtcbiAgICAgIHN0ZXBzLnB1c2goc3RlcCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN0ZXBzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX2VuYWJsZWRTdGVwcygpOiBTYmJTdGVwRWxlbWVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcy5maWx0ZXIoKHMpID0+IHtcbiAgICAgIGlmIChzLmxhYmVsKSB7XG4gICAgICAgIGN1c3RvbUVsZW1lbnRzLnVwZ3JhZGUocy5sYWJlbCk7XG4gICAgICAgIHJldHVybiAhcy5sYWJlbC5kaXNhYmxlZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9yZXNpemVPYnNlcnZlclRpbWVvdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX21lZGlhTWF0Y2hlciA9IG5ldyBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyKHRoaXMsIHt9KTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Ligna2V5ZG93bicsIChlKSA9PiB0aGlzLl9oYW5kbGVLZXlEb3duKGUpKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LigncmVzaXplY2hhbmdlJywgKGU6IEV2ZW50KSA9PiB0aGlzLl9vblNlbGVjdGVkU3RlcFJlc2l6ZShlKSk7XG4gIH1cblxuICAvKiogU2VsZWN0cyB0aGUgbmV4dCBzdGVwLiAqL1xuICBwdWJsaWMgbmV4dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl9zZWxlY3QodGhpcy5zdGVwc1t0aGlzLnNlbGVjdGVkSW5kZXggKyAxXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFNlbGVjdHMgdGhlIHByZXZpb3VzIHN0ZXAuICovXG4gIHB1YmxpYyBwcmV2aW91cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl9zZWxlY3QodGhpcy5zdGVwc1t0aGlzLnNlbGVjdGVkSW5kZXggLSAxXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJlc2V0cyB0aGUgZm9ybSBpbiB3aGljaCB0aGUgc3RlcHBlciBpcyBuZXN0ZWQgb3IgZXZlcnkgZm9ybSBvZiBlYWNoIHN0ZXAsIGlmIGFueS4gKi9cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNsb3Nlc3RGb3JtID0gdGhpcy5jbG9zZXN0KCdmb3JtJyk7XG4gICAgaWYgKGNsb3Nlc3RGb3JtKSB7XG4gICAgICBjbG9zZXN0Rm9ybS5yZXNldCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ2Zvcm0nKS5mb3JFYWNoKChmb3JtKSA9PiBmb3JtLnJlc2V0KCkpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xuICAgIC8vIEluIGNhc2UgdGhlIGZvY3VzIGlzIGN1cnJlbnRseSBpbnNpZGUgdGhlIHN0ZXBwZXIsIHdlIHJlc2V0IHRoZSBmb2N1cyB0byB0aGUgZmlyc3Qvc2VsZWN0ZWQgc3RlcCBsYWJlbC5cbiAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudD8uY2xvc2VzdCgnc2JiLXN0ZXBwZXInKSA9PT0gdGhpcykge1xuICAgICAgdGhpcy5zZWxlY3RlZD8ubGFiZWw/LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNTZWxlY3RhYmxlKHN0ZXA6IFNiYlN0ZXBFbGVtZW50IHwgbnVsbCk6IHN0ZXAgaXMgU2JiU3RlcEVsZW1lbnQge1xuICAgIGlmIChzdGVwKSB7XG4gICAgICBjdXN0b21FbGVtZW50cy51cGdyYWRlKHN0ZXApO1xuICAgICAgaWYgKHN0ZXAubGFiZWwpIHtcbiAgICAgICAgY3VzdG9tRWxlbWVudHMudXBncmFkZShzdGVwLmxhYmVsKTtcbiAgICAgICAgaWYgKCF0aGlzLmxpbmVhciAmJiBzdGVwLmxhYmVsLmRpc2FibGVkKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdChzdGVwOiBTYmJTdGVwRWxlbWVudCB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzU2VsZWN0YWJsZShzdGVwKSB8fCBzdGVwID09PSB0aGlzLnNlbGVjdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuc2VsZWN0ZWRJbmRleDtcbiAgICBjb25zdCBjdXJyZW50U3RlcCA9IHRoaXMuc2VsZWN0ZWQ7XG4gICAgY29uc3QgdmFsaWRhdGVQYXlsb2FkOiBTYmJTdGVwVmFsaWRhdGVFdmVudERldGFpbHMgPSB7XG4gICAgICBjdXJyZW50SW5kZXgsXG4gICAgICBjdXJyZW50U3RlcCxcbiAgICAgIG5leHRJbmRleDogdGhpcy5zZWxlY3RlZEluZGV4ICE9PSBudWxsID8gdGhpcy5zZWxlY3RlZEluZGV4ICsgMSA6IG51bGwsXG4gICAgICBuZXh0U3RlcDogdGhpcy5zZWxlY3RlZEluZGV4ICE9PSBudWxsID8gdGhpcy5zdGVwc1t0aGlzLnNlbGVjdGVkSW5kZXggKyAxXSA6IG51bGwsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkICYmICF0aGlzLnNlbGVjdGVkWyd2YWxpZGF0ZSddKHZhbGlkYXRlUGF5bG9hZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5zZWxlY3RlZDtcbiAgICBjdXJyZW50Py5bJ2Rlc2VsZWN0J10oKTtcbiAgICBzdGVwWydzZWxlY3QnXSgpO1xuXG4gICAgLyoqIEBpbnRlcm5hbCBvbmx5IHRvIHByb3ZpZGUgZG91YmxlIGVudHJ5IGluIGRvY3MuIEl0IGlzIGEgcHVibGljIGV2ZW50ISAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBTYmJTdGVwQ2hhbmdlRXZlbnQoe1xuICAgICAgICBzZWxlY3RlZEluZGV4OiB0aGlzLnNlbGVjdGVkSW5kZXgsXG4gICAgICAgIHByZXZpb3VzSW5kZXg6IGN1cnJlbnRJbmRleCxcbiAgICAgICAgc2VsZWN0ZWRTdGVwOiB0aGlzLnNlbGVjdGVkLFxuICAgICAgICBwcmV2aW91c1N0ZXA6IGN1cnJlbnRTdGVwLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIHRoaXMuX3NldE1hcmtlclNpemUoKTtcbiAgICB0aGlzLl9zZXRTdGVwcGVySGVpZ2h0KHN0ZXApO1xuICAgIHRoaXMuX2NvbmZpZ3VyZUxpbmVhck1vZGUoKTtcbiAgICAvLyBJbiBjYXNlIHRoZSBmb2N1cyBpcyBjdXJyZW50bHkgaW5zaWRlIHRoZSBzdGVwcGVyLCB3ZSBmb2N1cyB0aGUgc2VsZWN0ZWQgc3RlcCBsYWJlbC5cbiAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudD8uY2xvc2VzdCgnc2JiLXN0ZXBwZXInKSA9PT0gdGhpcykge1xuICAgICAgdGhpcy5zZWxlY3RlZD8ubGFiZWw/LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0TWFya2VyU2l6ZSgpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5fbG9hZGVkIHx8XG4gICAgICAhdGhpcy5zZWxlY3RlZCB8fFxuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID09PSB1bmRlZmluZWQgfHxcbiAgICAgICF0aGlzLnNlbGVjdGVkLmxhYmVsXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG9mZnNldCA9XG4gICAgICB0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCdcbiAgICAgICAgPyB0aGlzLnNlbGVjdGVkLmxhYmVsLm9mZnNldExlZnQgKyB0aGlzLnNlbGVjdGVkLmxhYmVsLm9mZnNldFdpZHRoXG4gICAgICAgIDogdGhpcy5fY2FsY3VsYXRlTGFiZWxPZmZzZXRUb3AoKTtcblxuICAgIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLXN0ZXBwZXItbWFya2VyLXNpemUnLCBgJHtvZmZzZXR9cHhgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGVwcGVyIGhlaWdodCBiYXNlZCBvbiB0aGUgaGVpZ2h0IG9mIHRoZSBwcm92aWRlZCBzdGVwLlxuICAgKi9cbiAgcHJpdmF0ZSBfc2V0U3RlcHBlckhlaWdodChzdGVwOiBTYmJTdGVwRWxlbWVudCB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoc3RlcCAmJiBzdGVwLnNoYWRvd1Jvb3QpIHtcbiAgICAgIGNvbnN0IGlubmVyRWxlbWVudDogU2JiU3RlcEVsZW1lbnQgfCBudWxsID0gc3RlcC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJy5zYmItc3RlcCcpO1xuICAgICAgaWYgKGlubmVyRWxlbWVudCkge1xuICAgICAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eSgnLS1zYmItc3RlcHBlci1jb250ZW50LWhlaWdodCcsIGAke2lubmVyRWxlbWVudC5vZmZzZXRIZWlnaHR9cHhgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jYWxjdWxhdGVMYWJlbE9mZnNldFRvcCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IG9mZnNldCA9IDA7XG4gICAgZm9yIChjb25zdCBzdGVwIG9mIHRoaXMuc3RlcHMpIHtcbiAgICAgIGlmIChzdGVwID09PSB0aGlzLnNlbGVjdGVkKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgb2Zmc2V0ID0gc3RlcC5sYWJlbCEub2Zmc2V0SGVpZ2h0ICsgb2Zmc2V0O1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgb2Zmc2V0ICtcbiAgICAgIHRoaXMuc2VsZWN0ZWQhLmxhYmVsIS5vZmZzZXRIZWlnaHQhICtcbiAgICAgIHBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKS5nZXRQcm9wZXJ0eVZhbHVlKCctLXNiYi1zcGFjaW5nLWZpeGVkLTZ4JykpICpcbiAgICAgICAgMTYgKlxuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25TZWxlY3RlZFN0ZXBSZXNpemUoZTogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXRTdGVwcGVySGVpZ2h0KGUudGFyZ2V0IGFzIFNiYlN0ZXBFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbmZpZ3VyZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXAsIGksIGFycmF5KSA9PiB7XG4gICAgICBzdGVwWydjb25maWd1cmUnXSh0aGlzLl9sb2FkZWQpO1xuICAgICAgc3RlcC5sYWJlbD8uY29uZmlndXJlKGkgKyAxLCBhcnJheS5sZW5ndGgsIHRoaXMuX2xvYWRlZCk7XG4gICAgfSk7XG4gICAgdGhpcy5fc2VsZWN0KHRoaXMuc2VsZWN0ZWQgfHwgdGhpcy5fZW5hYmxlZFN0ZXBzWzBdKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUxhYmVscygpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgIHN0ZXAuc2xvdCA9IHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyA/ICdzdGVwJyA6ICdzdGVwLWxhYmVsJztcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrT3JpZW50YXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaG9yaXpvbnRhbEZyb20pIHtcbiAgICAgIHRoaXMub3JpZW50YXRpb24gPSB0aGlzLl9tZWRpYU1hdGNoZXIubWF0Y2hlcyhicmVha3BvaW50TWFwW3RoaXMuaG9yaXpvbnRhbEZyb21dKVxuICAgICAgICA/ICdob3Jpem9udGFsJ1xuICAgICAgICA6ICd2ZXJ0aWNhbCc7XG4gICAgICB0aGlzLl91cGRhdGVMYWJlbHMoKTtcbiAgICB9XG4gICAgLy8gVGhlIHRpbWVvdXQgaXMgbmVlZGVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBtYXJrZXIgdGFrZXMgdGhlIGNvcnJlY3Qgc3RlcC1sYWJlbCBzaXplLlxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fc2V0TWFya2VyU2l6ZSgpLCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uU3RlcHBlclJlc2l6ZSA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLl9jaGVja09yaWVudGF0aW9uKCk7XG4gICAgdGhpcy5fc2V0U3RlcHBlckhlaWdodCh0aGlzLnNlbGVjdGVkKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fcmVzaXplT2JzZXJ2ZXJUaW1lb3V0ISk7XG4gICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmFkZCgnZGlzYWJsZS1hbmltYXRpb24nKTtcblxuICAgIC8vIERpc2FibGUgdGhlIGFuaW1hdGlvbiB3aGVuIHJlc2l6aW5nIHRvIGF2b2lkIHN0cmFuZ2UgdHJhbnNpdGlvbiBlZmZlY3RzLlxuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyVGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAoKSA9PiB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKCdkaXNhYmxlLWFuaW1hdGlvbicpLFxuICAgICAgREVCT1VOQ0VfVElNRSxcbiAgICApO1xuICB9O1xuXG4gIHByaXZhdGUgX2NvbmZpZ3VyZUxpbmVhck1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKCFzdGVwLmxhYmVsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGN1c3RvbUVsZW1lbnRzLnVwZ3JhZGUoc3RlcC5sYWJlbCk7XG5cbiAgICAgIHN0ZXAubGFiZWwuZGlzYWJsZShcbiAgICAgICAgKHRoaXMubGluZWFyICYmIGluZGV4ID4gdGhpcy5zZWxlY3RlZEluZGV4ISkgfHxcbiAgICAgICAgICAoIXRoaXMubGluZWFyICYmIHN0ZXAubGFiZWwubWF0Y2hlcygnOnN0YXRlKHVzZXItZGlzYWJsZWQpJykpLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl9vblN0ZXBwZXJSZXNpemUsIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnZGlzYWJsZS1hbmltYXRpb24nLCAhdGhpcy5fbG9hZGVkKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl9vblN0ZXBwZXJSZXNpemUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIHRoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLl9sb2FkZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fY29uZmlndXJlKCk7XG5cbiAgICAgIGlmICh0aGlzLl9yZXF1ZXN0ZWRTZWxlY3RlZCAmJiB0aGlzLnN0ZXBzLmluZGV4T2YodGhpcy5fcmVxdWVzdGVkU2VsZWN0ZWQpICE9PSAtMSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLnN0ZXBzLmluZGV4T2YodGhpcy5fcmVxdWVzdGVkU2VsZWN0ZWQpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLl9yZXF1ZXN0ZWRTZWxlY3RlZEluZGV4KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IHRoaXMuX3JlcXVlc3RlZFNlbGVjdGVkSW5kZXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMpO1xuICAgICAgdGhpcy5fY2hlY2tPcmllbnRhdGlvbigpO1xuICAgICAgLy8gUmVtb3ZlIGRpc2FibGUtYW5pbWF0aW9uIHN0YXRlIGFmdGVyIGNvbXBvbmVudCBpbml0XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUoJ2Rpc2FibGUtYW5pbWF0aW9uJyksIERFQk9VTkNFX1RJTUUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnb3JpZW50YXRpb24nKSAmJiAhdGhpcy5ob3Jpem9udGFsRnJvbSkge1xuICAgICAgdGhpcy5fdXBkYXRlTGFiZWxzKCk7XG4gICAgICB0aGlzLl9zZXRNYXJrZXJTaXplKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2xpbmVhcicpICYmIHRoaXMuX2xvYWRlZCkge1xuICAgICAgdGhpcy5fY29uZmlndXJlTGluZWFyTW9kZSgpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3NpemUnKSkge1xuICAgICAgdGhpcy5fc2V0TWFya2VyU2l6ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUtleURvd24oZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZW5hYmxlZFN0ZXBzOiBTYmJTdGVwRWxlbWVudFtdID0gdGhpcy5fZW5hYmxlZFN0ZXBzO1xuXG4gICAgaWYgKFxuICAgICAgIWVuYWJsZWRTdGVwcyB8fFxuICAgICAgLy8gZG9uJ3QgdHJhcCBuZXN0ZWQgaGFuZGxpbmdcbiAgICAgICgoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkgIT09IHRoaXMgJiYgKGV2dC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnQgIT09IHRoaXMpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzQXJyb3dLZXlQcmVzc2VkKGV2dCkpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnQ6IG51bWJlciA9IGVuYWJsZWRTdGVwcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWQhKTtcbiAgICAgIGNvbnN0IG5leHRJbmRleDogbnVtYmVyID0gZ2V0TmV4dEVsZW1lbnRJbmRleChldnQsIGN1cnJlbnQsIGVuYWJsZWRTdGVwcy5sZW5ndGgpO1xuICAgICAgdGhpcy5fc2VsZWN0KGVuYWJsZWRTdGVwc1tuZXh0SW5kZXhdKTtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zdGVwcGVyX19sYWJlbHNcIiByb2xlPVwidGFibGlzdFwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwic3RlcC1sYWJlbFwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fY29uZmlndXJlfT48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItc3RlcHBlcl9fc3RlcHNcIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInN0ZXBcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX2NvbmZpZ3VyZX0+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXN0ZXBwZXInOiBTYmJTdGVwcGVyRWxlbWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUMwQkEsSUFBTSxnQkFBZ0I7QUFFdEIsSUFBTSxnQkFBd0M7Q0FDNUMsTUFBTTtDQUNOLE9BQU87Q0FDUCxPQUFPO0NBQ1AsT0FBTzs7QUFHVCxJQUFhLHFCQUFiLGNBQXdDLE1BQUs7O0NBTzNDLElBQVcsZ0JBQWE7RUFDdEIsT0FBTyxLQUFLO0NBQ2Q7O0NBR0EsSUFBVyxnQkFBYTtFQUN0QixPQUFPLEtBQUs7Q0FDZDs7Q0FHQSxJQUFXLGVBQVk7RUFDckIsT0FBTyxLQUFLO0NBQ2Q7O0NBR0EsSUFBVyxlQUFZO0VBQ3JCLE9BQU8sS0FBSztDQUNkO0NBRUEsWUFBbUIsRUFDakIsZUFDQSxlQUNBLGNBQ0EsZ0JBQ3NDO0VBQ3RDLE1BQU0sY0FBYztHQUFFLFNBQVM7R0FBTSxVQUFVO0VBQUksQ0FBRTtFQUNyRCxLQUFLLGlCQUFpQjtFQUN0QixLQUFLLGlCQUFpQjtFQUN0QixLQUFLLGdCQUFnQjtFQUNyQixLQUFLLGdCQUFnQjtDQUN2Qjs7Ozs7Ozs7O0lBU1csMkJBQWlCO21CQUFTOzs7Ozs7Ozs7Ozs7OztjQUExQiwwQkFBMEIsWUFBVTs7O3lCQTBCOUMsVUFBUyxHQUNULFNBQVMsRUFBRSxNQUFNLFFBQU8sQ0FBRSxDQUFDO3FDQUkzQixTQUFTO0lBQUUsV0FBVztJQUFtQixTQUFTO0dBQUksQ0FBRSxDQUFDOzhCQWF6RCxTQUFTLEVBQUUsU0FBUyxL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
@@ -1,6 +1,6 @@
1
1
  import { t as SbbStepLabelElement } from "./step-label.component-CpdXVv32.js";
2
- import { n as SbbStepValidateEvent, t as SbbStepElement } from "./step.component-DpSJEkrK.js";
3
- import { n as SbbStepperElement, t as SbbStepChangeEvent } from "./stepper.component-Bv6LCFU0.js";
2
+ import { n as SbbStepValidateEvent, t as SbbStepElement } from "./step.component-CfA-kmt1.js";
3
+ import { n as SbbStepperElement, t as SbbStepChangeEvent } from "./stepper.component-2yRFnnju.js";
4
4
  import "./stepper.pure.js";
5
5
  //#region src/elements/stepper.ts
6
6
  /** @entrypoint */
@@ -1,4 +1,4 @@
1
1
  import { t as SbbStepLabelElement } from "./step-label.component-CpdXVv32.js";
2
- import { n as SbbStepValidateEvent, t as SbbStepElement } from "./step.component-DpSJEkrK.js";
3
- import { n as SbbStepperElement, t as SbbStepChangeEvent } from "./stepper.component-Bv6LCFU0.js";
2
+ import { n as SbbStepValidateEvent, t as SbbStepElement } from "./step.component-CfA-kmt1.js";
3
+ import { n as SbbStepperElement, t as SbbStepChangeEvent } from "./stepper.component-2yRFnnju.js";
4
4
  export { SbbStepChangeEvent, SbbStepElement, SbbStepLabelElement, SbbStepValidateEvent, SbbStepperElement };
@@ -1,2 +1,2 @@
1
- import { n as e, r as t, t as n } from "../../dialog.component-CsBryhM-.js";
1
+ import { n as e, r as t, t as n } from "../../dialog.component-D3G0AX4Y.js";
2
2
  export { n as SbbDialogCloseEvent, e as SbbDialogElement, t as assignDialogResult };
@@ -126,15 +126,15 @@ var m = ":host{--sbb-dialog-animation-duration: var( --sbb-disable-animation-dur
126
126
  return this.dispatchEvent(new u("beforeclose", {
127
127
  cancelable: !0,
128
128
  closeAttribute: this.closeAttribute,
129
- closeTarget: this.overlayCloseElement,
130
- result: this.returnValue
129
+ closeTarget: this.lastClosedTarget,
130
+ result: this.lastResult
131
131
  }));
132
132
  }
133
133
  dispatchCloseEvent() {
134
134
  return this.dispatchEvent(new u("close", {
135
135
  closeAttribute: this.closeAttribute,
136
- closeTarget: this.overlayCloseElement,
137
- result: this.returnValue
136
+ closeTarget: this.lastClosedTarget,
137
+ result: this.lastResult
138
138
  }));
139
139
  }
140
140
  render() {
package/dialog.js CHANGED
@@ -2,7 +2,7 @@ import { t as e } from "./dialog-actions.component-DxmjSvd-.js";
2
2
  import { t } from "./dialog-close-button.component-B8troaaQ.js";
3
3
  import { t as n } from "./dialog-content.component-Chfg-IY1.js";
4
4
  import { t as r } from "./dialog-title.component-BbcbQXjp.js";
5
- import { n as i, r as a, t as o } from "./dialog.component-CsBryhM-.js";
5
+ import { n as i, r as a, t as o } from "./dialog.component-D3G0AX4Y.js";
6
6
  import "./dialog.pure.js";
7
7
  i.define(), e.define(), t.define(), n.define(), r.define();
8
8
  //#endregion
package/dialog.pure.js CHANGED
@@ -2,5 +2,5 @@ import { t as e } from "./dialog-actions.component-DxmjSvd-.js";
2
2
  import { t } from "./dialog-close-button.component-B8troaaQ.js";
3
3
  import { t as n } from "./dialog-content.component-Chfg-IY1.js";
4
4
  import { t as r } from "./dialog-title.component-BbcbQXjp.js";
5
- import { n as i, r as a, t as o } from "./dialog.component-CsBryhM-.js";
5
+ import { n as i, r as a, t as o } from "./dialog.component-D3G0AX4Y.js";
6
6
  export { e as SbbDialogActionsElement, t as SbbDialogCloseButtonElement, o as SbbDialogCloseEvent, n as SbbDialogContentElement, i as SbbDialogElement, r as SbbDialogTitleElement, a as assignDialogResult };
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "../../form-field.component-BdfK6r2v.js";
1
+ import { n as e, t } from "../../form-field.component-DkqZz7aZ.js";
2
2
  export { t as SbbFormFieldControlEvent, e as SbbFormFieldElement };