@sbb-esta/lyne-elements-dev 5.0.0-next-dev.1776724490 → 5.0.0-next-dev.1776756036

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 (122) hide show
  1. package/core/overlay/overlay-trigger-attributes.js +3 -3
  2. package/core.js +2 -2
  3. package/custom-elements.json +13 -13
  4. package/datepicker/datepicker/datepicker.component.js +1 -1
  5. package/{datepicker.component-BBmEvmW3.js → datepicker.component-CNQGkdr-.js} +11 -11
  6. package/datepicker.js +1 -1
  7. package/datepicker.pure.js +1 -1
  8. package/development/core/overlay/overlay-trigger-attributes.d.ts +4 -4
  9. package/development/core/overlay/overlay-trigger-attributes.d.ts.map +1 -1
  10. package/development/core/overlay/overlay-trigger-attributes.js +12 -12
  11. package/development/core.js +2 -2
  12. package/development/datepicker/datepicker/datepicker.component.d.ts.map +1 -1
  13. package/development/datepicker/datepicker/datepicker.component.js +1 -1
  14. package/development/datepicker.component-Chnvwnp7.js +212 -0
  15. package/development/datepicker.js +1 -1
  16. package/development/datepicker.pure.js +1 -1
  17. package/development/dialog/dialog/dialog.component.d.ts +0 -1
  18. package/development/dialog/dialog/dialog.component.d.ts.map +1 -1
  19. package/development/dialog/dialog/dialog.component.js +1 -1
  20. package/development/{dialog.component-BYVTZAUU.js → dialog.component-B4cZfRCl.js} +1 -6
  21. package/development/dialog.js +1 -1
  22. package/development/dialog.pure.js +1 -1
  23. package/development/header/header/header.component.d.ts.map +1 -1
  24. package/development/header/header/header.component.js +1 -1
  25. package/development/{header.component-Hfgz9sSb.js → header.component-B2T2pmHs.js} +2 -3
  26. package/development/header.js +1 -1
  27. package/development/header.pure.js +1 -1
  28. package/development/menu/common/menu-action-common.js +1 -1
  29. package/development/menu/menu/menu.component.d.ts.map +1 -1
  30. package/development/menu/menu/menu.component.js +1 -1
  31. package/development/menu-action-common-CEnwq60Z.js +32 -0
  32. package/development/menu.component-BM7hhOb4.js +365 -0
  33. package/development/menu.js +2 -2
  34. package/development/menu.pure.js +2 -2
  35. package/development/navigation/navigation/navigation.component.d.ts.map +1 -1
  36. package/development/navigation/navigation/navigation.component.js +1 -1
  37. package/development/navigation/navigation-section/navigation-section.component.d.ts.map +1 -1
  38. package/development/navigation/navigation-section/navigation-section.component.js +1 -1
  39. package/development/{navigation-section.component-C_9myQKr.js → navigation-section.component-6tqZADWM.js} +6 -8
  40. package/development/{navigation.component-C8MhqBLY.js → navigation.component-DUy2QGHI.js} +6 -8
  41. package/development/navigation.js +2 -2
  42. package/development/navigation.pure.js +2 -2
  43. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  44. package/development/overlay/overlay-base-element.js +6 -6
  45. package/development/overlay/overlay.component.d.ts +0 -1
  46. package/development/overlay/overlay.component.d.ts.map +1 -1
  47. package/development/overlay/overlay.component.js +1 -1
  48. package/development/{overlay.component-BuCkqG6Q.js → overlay.component-CA0fWX47.js} +1 -6
  49. package/development/overlay.js +1 -1
  50. package/development/overlay.pure.js +1 -1
  51. package/development/popover/popover.component.d.ts.map +1 -1
  52. package/development/popover/popover.component.js +1 -1
  53. package/development/popover.component-B1gMzBuv.js +527 -0
  54. package/development/popover.js +1 -1
  55. package/development/popover.pure.js +1 -1
  56. package/development/{step-label.component-CxqPgbzK.js → step-label.component-B7M9Yqyz.js} +1 -3
  57. package/development/{step.component-B2qbHl0l.js → step.component-CVWxYkrv.js} +1 -3
  58. package/development/stepper/step/step.component.d.ts.map +1 -1
  59. package/development/stepper/step/step.component.js +1 -1
  60. package/development/stepper/step-label/step-label.component.d.ts.map +1 -1
  61. package/development/stepper/step-label/step-label.component.js +1 -1
  62. package/development/stepper.js +2 -2
  63. package/development/stepper.pure.js +2 -2
  64. package/development/{tab.component-DteuwiHv.js → tab.component-CvzGdR9_.js} +1 -3
  65. package/development/tabs/tab/tab.component.d.ts.map +1 -1
  66. package/development/tabs/tab/tab.component.js +1 -1
  67. package/development/tabs.js +1 -1
  68. package/development/tabs.pure.js +1 -1
  69. package/development/tooltip/tooltip.component.d.ts.map +1 -1
  70. package/development/tooltip/tooltip.component.js +1 -1
  71. package/development/tooltip.component-lvElko6C.js +369 -0
  72. package/development/tooltip.js +1 -1
  73. package/development/tooltip.pure.js +1 -1
  74. package/dialog/dialog/dialog.component.js +1 -1
  75. package/{dialog.component-ca14M0hZ.js → dialog.component-DTbAHlVd.js} +7 -10
  76. package/dialog.js +1 -1
  77. package/dialog.pure.js +1 -1
  78. package/header/header/header.component.js +1 -1
  79. package/{header.component-BxizSy1O.js → header.component-D-WVEMFn.js} +2 -2
  80. package/header.js +1 -1
  81. package/header.pure.js +1 -1
  82. package/menu/common/menu-action-common.js +1 -1
  83. package/menu/menu/menu.component.js +1 -1
  84. package/{menu-action-common-DY4RrfCy.js → menu-action-common-krzD_Ca2.js} +1 -1
  85. package/{menu.component-XvtyRok7.js → menu.component-i-X_ag2Y.js} +14 -14
  86. package/menu.js +2 -2
  87. package/menu.pure.js +2 -2
  88. package/navigation/navigation/navigation.component.js +1 -1
  89. package/navigation/navigation-section/navigation-section.component.js +1 -1
  90. package/{navigation-section.component-CLcdmPV3.js → navigation-section.component-Db2MWBDn.js} +17 -17
  91. package/{navigation.component-Cnyb5_4R.js → navigation.component-Bym1kjzt.js} +16 -16
  92. package/navigation.js +2 -2
  93. package/navigation.pure.js +2 -2
  94. package/overlay/overlay-base-element.js +4 -4
  95. package/overlay/overlay.component.js +1 -1
  96. package/{overlay.component-OzDUV8t1.js → overlay.component-BydJOM2r.js} +10 -13
  97. package/overlay.js +1 -1
  98. package/overlay.pure.js +1 -1
  99. package/package.json +2 -2
  100. package/popover/popover.component.js +1 -1
  101. package/{popover.component-BfSXNxKK.js → popover.component-Dd4rKGml.js} +12 -12
  102. package/popover.js +1 -1
  103. package/popover.pure.js +1 -1
  104. package/{step-label.component-qdfunibJ.js → step-label.component-BXg13qOD.js} +3 -3
  105. package/{step.component-aBAfTJyO.js → step.component-sQbJslHx.js} +3 -3
  106. package/stepper/step/step.component.js +1 -1
  107. package/stepper/step-label/step-label.component.js +1 -1
  108. package/stepper.js +2 -2
  109. package/stepper.pure.js +2 -2
  110. package/{tab.component-DGzqld4u.js → tab.component-D39b0S04.js} +3 -3
  111. package/tabs/tab/tab.component.js +1 -1
  112. package/tabs.js +1 -1
  113. package/tabs.pure.js +1 -1
  114. package/tooltip/tooltip.component.js +1 -1
  115. package/{tooltip.component-C5y6zCtF.js → tooltip.component-Do4V1jGd.js} +12 -12
  116. package/tooltip.js +1 -1
  117. package/tooltip.pure.js +1 -1
  118. package/development/datepicker.component-AKlc7SAO.js +0 -214
  119. package/development/menu-action-common-Crx-dDgH.js +0 -32
  120. package/development/menu.component-DOv7PKIi.js +0 -367
  121. package/development/popover.component-B15jFLe9.js +0 -529
  122. package/development/tooltip.component-BtWTK2R0.js +0 -371
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/dialog/dialog/dialog.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAa,MAAM,KAAK,CAAC;AAK/F,OAAO,KAAK,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAMjF,OAAO,EAEL,qBAAqB,EAEtB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EACL,mBAAmB,IAAI,kBAAkB,EACzC,oBAAoB,IAAI,mBAAmB,GAC5C,MAAM,uCAAuC,CAAC;AAI/C;;;;;;;GAOG;AACH,qBAAa,gBAAiB,SAAQ,qBAAqB;IACzD,gBAAgC,WAAW,EAAE,MAAM,CAAgB;IACnE,OAAuB,mBAAmB,EAAE,cAAc,EAAE,CAAgC;IAC5F,OAAuB,MAAM,EAAE,cAAc,CAAuC;IAEpF,6BAA6B;IAC7B,SAA4D,cAAc,EAAE,OAAO,GAAG,MAAM,CAClF;IAEV,wBAAwB;IACxB,SAAoE,QAAQ,EACxE,QAAQ,GACR,aAAa,CAAY;IAM7B,OAAO,CAAC,4BAA4B,CAIjC;IAEH,OAAO,CAAC,cAAc,CAAC,CAAc;IACrC,OAAO,CAAC,2BAA2B,CAAkB;IACrD,SAAS,CAAC,cAAc,EAAE,MAAM,CAAsB;IACtD,UAAmB,QAAQ,EAAE,MAAM,CAA6B;;IAahD,iBAAiB,IAAI,IAAI;IAKzC,2EAA2E;IACpE,aAAa,IAAI,IAAI;IAM5B,SAAS,CAAC,uBAAuB,IAAI,OAAO;IAI5C,SAAS,CAAC,aAAa,IAAI,IAAI;IA6B/B,SAAS,CAAC,aAAa,IAAI,IAAI;cAeZ,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAW3D,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQ5E,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,0BAA0B;IASlC,wEAAwE;IACxE,OAAO,CAAC,oBAAoB,CAO1B;IAEF,sCAAsC;IACtC,OAAO,CAAC,qBAAqB,CAS3B;IAEF,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,eAAe;cAKJ,wBAAwB,CAAC,OAAO,CAAC,EAAE,2BAA2B,GAAG,OAAO;cAaxE,kBAAkB,CAAC,OAAO,CAAC,EAAE,2BAA2B,GAAG,OAAO;cAWlE,MAAM,IAAI,cAAc;CAmB5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,YAAY,EAAE,gBAAgB,CAAC;KAChC;CACF"}
1
+ {"version":3,"file":"dialog.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/dialog/dialog/dialog.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAa,MAAM,KAAK,CAAC;AAK/F,OAAO,KAAK,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAMjF,OAAO,EAEL,qBAAqB,EAEtB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EACL,mBAAmB,IAAI,kBAAkB,EACzC,oBAAoB,IAAI,mBAAmB,GAC5C,MAAM,uCAAuC,CAAC;AAE/C;;;;;;;GAOG;AACH,qBAAa,gBAAiB,SAAQ,qBAAqB;IACzD,gBAAgC,WAAW,EAAE,MAAM,CAAgB;IACnE,OAAuB,mBAAmB,EAAE,cAAc,EAAE,CAAgC;IAC5F,OAAuB,MAAM,EAAE,cAAc,CAAuC;IAEpF,6BAA6B;IAC7B,SAA4D,cAAc,EAAE,OAAO,GAAG,MAAM,CAClF;IAEV,wBAAwB;IACxB,SAAoE,QAAQ,EACxE,QAAQ,GACR,aAAa,CAAY;IAM7B,OAAO,CAAC,4BAA4B,CAIjC;IAEH,OAAO,CAAC,cAAc,CAAC,CAAc;IACrC,OAAO,CAAC,2BAA2B,CAAkB;IACrD,SAAS,CAAC,cAAc,EAAE,MAAM,CAAsB;IACtD,UAAmB,QAAQ,EAAE,MAAM,CAA6B;;IAahE,2EAA2E;IACpE,aAAa,IAAI,IAAI;IAM5B,SAAS,CAAC,uBAAuB,IAAI,OAAO;IAI5C,SAAS,CAAC,aAAa,IAAI,IAAI;IA6B/B,SAAS,CAAC,aAAa,IAAI,IAAI;cAeZ,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAW3D,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQ5E,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,0BAA0B;IASlC,wEAAwE;IACxE,OAAO,CAAC,oBAAoB,CAO1B;IAEF,sCAAsC;IACtC,OAAO,CAAC,qBAAqB,CAS3B;IAEF,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,eAAe;cAKJ,wBAAwB,CAAC,OAAO,CAAC,EAAE,2BAA2B,GAAG,OAAO;cAaxE,kBAAkB,CAAC,OAAO,CAAC,EAAE,2BAA2B,GAAG,OAAO;cAWlE,MAAM,IAAI,cAAc;CAmB5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,YAAY,EAAE,gBAAgB,CAAC;KAChC;CACF"}
@@ -1,2 +1,2 @@
1
- import { n as SbbDialogElement, r as assignDialogResult, t as SbbDialogCloseEvent } from "../../dialog.component-BYVTZAUU.js";
1
+ import { n as SbbDialogElement, r as assignDialogResult, t as SbbDialogCloseEvent } from "../../dialog.component-B4cZfRCl.js";
2
2
  export { SbbDialogCloseEvent, SbbDialogElement, assignDialogResult };
@@ -11,7 +11,6 @@ import { SbbOverlayCloseEvent as SbbDialogCloseEvent, assignOverlayResult as ass
11
11
  var dialog_default = ":host {\n --sbb-dialog-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-6x)\n );\n --sbb-dialog-padding-block: var(--sbb-spacing-responsive-xs);\n --sbb-dialog-shadow-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-4x)\n );\n display: none;\n position: fixed;\n inset: var(--sbb-dialog-inset);\n z-index: var(--sbb-dialog-z-index, var(--sbb-overlay-default-z-index));\n}\n@media (min-width: calc(64rem)) {\n :host {\n --sbb-dialog-max-width: min(\n calc(100vw - var(--sbb-spacing-fixed-30x) * 2),\n var(--sbb-dialog-max-width-default)\n );\n }\n}\n\n:host(:is(:state(top-shadow),[state--top-shadow])) {\n --sbb-dialog-block-start-box-shadow: var(--_sbb-dialog-block-shadow);\n}\n\n:host(:is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]), :is(:state(state-closing),[state--state-closing]))) {\n display: block;\n}\n\n:host(:is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]))) {\n --sbb-dialog-pointer-events: all;\n --sbb-dialog-backdrop-color: var(--sbb-background-color-3);\n}\n@media (min-width: calc(64rem)) {\n :host(:is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]))) {\n --sbb-dialog-backdrop-visibility: visible;\n --sbb-dialog-backdrop-pointer-events: all;\n }\n}\n\n:host([backdrop=translucent]:is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]))) {\n --sbb-dialog-backdrop-color: color-mix(in srgb, var(--sbb-color-black) 50%, transparent);\n}\n\n:host([backdrop=opaque]:not([negative]):is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]))) {\n --sbb-dialog-backdrop-color: var(--sbb-background-color-3);\n}\n\n:host(:not([negative])) {\n --_sbb-dialog-color: var(--sbb-dialog-color);\n --_sbb-dialog-block-shadow: var(--sbb-dialog-block-shadow);\n --sbb-dialog-actions-border-color: var(--sbb-background-color-4);\n --sbb-dialog-background-color: var(--sbb-background-color-1);\n}\n\n:host([negative]) {\n --_sbb-dialog-color: var(--sbb-dialog-color-negative);\n --_sbb-dialog-block-shadow: var(--sbb-dialog-block-shadow-negative);\n --sbb-dialog-background-color: var(--sbb-background-color-1-negative);\n --sbb-dialog-actions-border-color: var(--sbb-background-color-4-negative);\n --sbb-dialog-backdrop-color: var(--sbb-background-color-3-negative);\n --sbb-focus-outline-color: var(--sbb-focus-outline-color-dark);\n}\n\n:host(:is(:state(bottom-shadow),[state--bottom-shadow])) {\n --sbb-dialog-block-end-box-shadow: var(--_sbb-dialog-block-shadow);\n --sbb-dialog-actions-border-color: transparent;\n}\n\n:host(:not(:is(:state(state-closed),[state--state-closed]))) {\n --sbb-dialog-inset: 0;\n}\n\n.sbb-dialog__container {\n pointer-events: var(--sbb-dialog-pointer-events);\n display: flex;\n align-items: center;\n position: fixed;\n inset: var(--sbb-dialog-inset);\n}\n.sbb-dialog__container::before {\n content: \"\";\n visibility: var(--sbb-dialog-backdrop-visibility);\n pointer-events: var(--sbb-dialog-backdrop-pointer-events);\n position: fixed;\n inset: var(--sbb-dialog-inset);\n background-color: var(--sbb-dialog-backdrop-color);\n transition-duration: var(--sbb-dialog-animation-duration);\n transition-timing-function: var(--sbb-dialog-animation-easing);\n transition-property: background-color, visibility;\n}\n\n.sbb-dialog {\n display: none;\n position: absolute;\n inset-inline: 0;\n margin: auto;\n padding: 0;\n border: none;\n width: var(--sbb-dialog-width);\n height: var(--sbb-dialog-height);\n max-width: var(--sbb-dialog-max-width);\n max-height: var(--sbb-dialog-max-height);\n color: var(--_sbb-dialog-color);\n background-color: var(--sbb-dialog-background-color);\n}\n:host(:is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]), :is(:state(state-closing),[state--state-closing]))) .sbb-dialog {\n display: block;\n animation-name: open;\n animation-duration: var(--sbb-dialog-animation-duration);\n animation-timing-function: ease;\n}\n:host(:is(:state(state-closing),[state--state-closing])) .sbb-dialog {\n pointer-events: none;\n animation-name: close;\n}\n@media (forced-colors: active) {\n .sbb-dialog {\n outline: var(--sbb-border-width-1x) solid CanvasText;\n }\n}\n@media (min-width: calc(64rem)) {\n .sbb-dialog {\n border-radius: var(--sbb-dialog-border-radius);\n overflow: hidden;\n height: auto;\n }\n}\n\n:host(:is(:state(has-intermediate-element),[state--has-intermediate-element])) ::slotted(:first-child),\n.sbb-dialog__wrapper {\n width: var(--sbb-dialog-width);\n height: var(--sbb-dialog-height);\n max-width: var(--sbb-dialog-max-width);\n max-height: var(--sbb-dialog-max-height);\n}\n\n:host(:is(:state(has-intermediate-element),[state--has-intermediate-element])) ::slotted(:first-child),\n:host(:not(:is(:state(has-intermediate-element),[state--has-intermediate-element]))) .sbb-dialog__wrapper {\n display: grid;\n grid-template: \"title close-button\" auto \"content content\" 1fr \"actions actions\" auto/1fr auto;\n gap: 0;\n}\n\n@keyframes open {\n from {\n opacity: 0;\n translate: 0 var(--sbb-spacing-fixed-4x);\n }\n to {\n opacity: 1;\n translate: 0;\n }\n}\n@keyframes close {\n from {\n opacity: 1;\n translate: 0;\n }\n to {\n opacity: 0;\n translate: 0 var(--sbb-spacing-fixed-4x);\n }\n}";
12
12
  //#endregion
13
13
  //#region src/elements/dialog/dialog/dialog.component.ts
14
- var nextId = 0;
15
14
  /**
16
15
  * It displays an interactive overlay element.
17
16
  *
@@ -124,10 +123,6 @@ var SbbDialogElement = (() => {
124
123
  capture: true
125
124
  });
126
125
  }
127
- connectedCallback() {
128
- this.id ||= `sbb-dialog-${nextId++}`;
129
- super.connectedCallback();
130
- }
131
126
  /** Announce the accessibility label or dialog title for screen readers. */
132
127
  announceTitle() {
133
128
  this.setAriaLiveRefContent(this.accessibilityLabel || this.querySelector("sbb-dialog-title")?.textContent.trim());
@@ -235,4 +230,4 @@ var SbbDialogElement = (() => {
235
230
  //#endregion
236
231
  export { SbbDialogElement as n, assignDialogResult as r, SbbDialogCloseEvent as t };
237
232
 
238
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC1CWVZUWkFVVS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvZGlhbG9nL2RpYWxvZy9kaWFsb2cuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvZGlhbG9nL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgLS1zYmItZGlhbG9nLWFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKFxuICAgIC0tc2JiLWRpc2FibGUtYW5pbWF0aW9uLWR1cmF0aW9uLFxuICAgIHZhcigtLXNiYi1hbmltYXRpb24tZHVyYXRpb24tNngpXG4gICk7XG4gIC0tc2JiLWRpYWxvZy1wYWRkaW5nLWJsb2NrOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXhzKTtcbiAgLS1zYmItZGlhbG9nLXNoYWRvdy1hbmltYXRpb24tZHVyYXRpb246IHZhcihcbiAgICAtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbixcbiAgICB2YXIoLS1zYmItYW5pbWF0aW9uLWR1cmF0aW9uLTR4KVxuICApO1xuXG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgaW5zZXQ6IHZhcigtLXNiYi1kaWFsb2ctaW5zZXQpO1xuICB6LWluZGV4OiB2YXIoLS1zYmItZGlhbG9nLXotaW5kZXgsIHZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleCkpO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICAtLXNiYi1kaWFsb2ctbWF4LXdpZHRoOiBtaW4oXG4gICAgICBjYWxjKDEwMHZ3IC0gdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMzB4KSAqIDIpLFxuICAgICAgdmFyKC0tc2JiLWRpYWxvZy1tYXgtd2lkdGgtZGVmYXVsdClcbiAgICApO1xuICB9XG59XG5cbjpob3N0KDpzdGF0ZSh0b3Atc2hhZG93KSkge1xuICAtLXNiYi1kaWFsb2ctYmxvY2stc3RhcnQtYm94LXNoYWRvdzogdmFyKC0tX3NiYi1kaWFsb2ctYmxvY2stc2hhZG93KTtcbn1cblxuOmhvc3QoOmlzKDpzdGF0ZShzdGF0ZS1vcGVuaW5nKSwgOnN0YXRlKHN0YXRlLW9wZW5lZCksIDpzdGF0ZShzdGF0ZS1jbG9zaW5nKSkpIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbjpob3N0KDppcyg6c3RhdGUoc3RhdGUtb3BlbmluZyksIDpzdGF0ZShzdGF0ZS1vcGVuZWQpKSkge1xuICAtLXNiYi1kaWFsb2ctcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgLS1zYmItZGlhbG9nLWJhY2tkcm9wLWNvbG9yOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0zKTtcblxuICBAaW5jbHVkZSBzYmIubXEoJGZyb206IGxhcmdlKSB7XG4gICAgLS1zYmItZGlhbG9nLWJhY2tkcm9wLXZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgLS1zYmItZGlhbG9nLWJhY2tkcm9wLXBvaW50ZXItZXZlbnRzOiBhbGw7XG4gIH1cbn1cblxuOmhvc3QoW2JhY2tkcm9wPSd0cmFuc2x1Y2VudCddOmlzKDpzdGF0ZShzdGF0ZS1vcGVuaW5nKSwgOnN0YXRlKHN0YXRlLW9wZW5lZCkpKSB7XG4gIC0tc2JiLWRpYWxvZy1iYWNrZHJvcC1jb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXNiYi1jb2xvci1ibGFjaykgNTAlLCB0cmFuc3BhcmVudCk7XG59XG5cbjpob3N0KFtiYWNrZHJvcD0nb3BhcXVlJ106bm90KFtuZWdhdGl2ZV0pOmlzKDpzdGF0ZShzdGF0ZS1vcGVuaW5nKSwgOnN0YXRlKHN0YXRlLW9wZW5lZCkpKSB7XG4gIC0tc2JiLWRpYWxvZy1iYWNrZHJvcC1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMyk7XG59XG5cbjpob3N0KDpub3QoW25lZ2F0aXZlXSkpIHtcbiAgLS1fc2JiLWRpYWxvZy1jb2xvcjogdmFyKC0tc2JiLWRpYWxvZy1jb2xvcik7XG4gIC0tX3NiYi1kaWFsb2ctYmxvY2stc2hhZG93OiB2YXIoLS1zYmItZGlhbG9nLWJsb2NrLXNoYWRvdyk7XG4gIC0tc2JiLWRpYWxvZy1hY3Rpb25zLWJvcmRlci1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItNCk7XG4gIC0tc2JiLWRpYWxvZy1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0xKTtcbn1cblxuOmhvc3QoW25lZ2F0aXZlXSkge1xuICAtLV9zYmItZGlhbG9nLWNvbG9yOiB2YXIoLS1zYmItZGlhbG9nLWNvbG9yLW5lZ2F0aXZlKTtcbiAgLS1fc2JiLWRpYWxvZy1ibG9jay1zaGFkb3c6IHZhcigtLXNiYi1kaWFsb2ctYmxvY2stc2hhZG93LW5lZ2F0aXZlKTtcbiAgLS1zYmItZGlhbG9nLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTEtbmVnYXRpdmUpO1xuICAtLXNiYi1kaWFsb2ctYWN0aW9ucy1ib3JkZXItY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTQtbmVnYXRpdmUpO1xuICAtLXNiYi1kaWFsb2ctYmFja2Ryb3AtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTMtbmVnYXRpdmUpO1xuICAtLXNiYi1mb2N1cy1vdXRsaW5lLWNvbG9yOiB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvci1kYXJrKTtcbn1cblxuOmhvc3QoOnN0YXRlKGJvdHRvbS1zaGFkb3cpKSB7XG4gIC0tc2JiLWRpYWxvZy1ibG9jay1lbmQtYm94LXNoYWRvdzogdmFyKC0tX3NiYi1kaWFsb2ctYmxvY2stc2hhZG93KTtcbiAgLS1zYmItZGlhbG9nLWFjdGlvbnMtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuOmhvc3QoOm5vdCg6c3RhdGUoc3RhdGUtY2xvc2VkKSkpIHtcbiAgLS1zYmItZGlhbG9nLWluc2V0OiAwO1xufVxuXG4uc2JiLWRpYWxvZ19fY29udGFpbmVyIHtcbiAgcG9pbnRlci1ldmVudHM6IHZhcigtLXNiYi1kaWFsb2ctcG9pbnRlci1ldmVudHMpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGluc2V0OiB2YXIoLS1zYmItZGlhbG9nLWluc2V0KTtcblxuICAvLyBEaWFsb2cgYmFja2Ryb3AgKG5vdCB2aXNpYmxlIG9uIG1vYmlsZSlcbiAgJjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICB2aXNpYmlsaXR5OiB2YXIoLS1zYmItZGlhbG9nLWJhY2tkcm9wLXZpc2liaWxpdHkpO1xuICAgIHBvaW50ZXItZXZlbnRzOiB2YXIoLS1zYmItZGlhbG9nLWJhY2tkcm9wLXBvaW50ZXItZXZlbnRzKTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaW5zZXQ6IHZhcigtLXNiYi1kaWFsb2ctaW5zZXQpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1kaWFsb2ctYmFja2Ryb3AtY29sb3IpO1xuICAgIHRyYW5zaXRpb246IHtcbiAgICAgIGR1cmF0aW9uOiB2YXIoLS1zYmItZGlhbG9nLWFuaW1hdGlvbi1kdXJhdGlvbik7XG4gICAgICB0aW1pbmctZnVuY3Rpb246IHZhcigtLXNiYi1kaWFsb2ctYW5pbWF0aW9uLWVhc2luZyk7XG4gICAgICBwcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvciwgdmlzaWJpbGl0eTtcbiAgICB9XG4gIH1cbn1cblxuLnNiYi1kaWFsb2cge1xuICBkaXNwbGF5OiBub25lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0LWlubGluZTogMDtcbiAgbWFyZ2luOiBhdXRvO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IG5vbmU7XG4gIHdpZHRoOiB2YXIoLS1zYmItZGlhbG9nLXdpZHRoKTtcbiAgaGVpZ2h0OiB2YXIoLS1zYmItZGlhbG9nLWhlaWdodCk7XG4gIG1heC13aWR0aDogdmFyKC0tc2JiLWRpYWxvZy1tYXgtd2lkdGgpO1xuICBtYXgtaGVpZ2h0OiB2YXIoLS1zYmItZGlhbG9nLW1heC1oZWlnaHQpO1xuICBjb2xvcjogdmFyKC0tX3NiYi1kaWFsb2ctY29sb3IpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItZGlhbG9nLWJhY2tncm91bmQtY29sb3IpO1xuXG4gIDpob3N0KDppcyg6c3RhdGUoc3RhdGUtb3BlbmluZyksIDpzdGF0ZShzdGF0ZS1vcGVuZWQpLCA6c3RhdGUoc3RhdGUtY2xvc2luZykpKSAmIHtcbiAgICBkaXNwbGF5OiBibG9jaztcblxuICAgIGFuaW1hdGlvbjoge1xuICAgICAgbmFtZTogb3BlbjtcbiAgICAgIGR1cmF0aW9uOiB2YXIoLS1zYmItZGlhbG9nLWFuaW1hdGlvbi1kdXJhdGlvbik7XG4gICAgICB0aW1pbmctZnVuY3Rpb246IGVhc2U7XG4gICAgfVxuICB9XG5cbiAgOmhvc3QoOnN0YXRlKHN0YXRlLWNsb3NpbmcpKSAmIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBhbmltYXRpb24tbmFtZTogY2xvc2U7XG4gIH1cblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgb3V0bGluZTogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0xeCkgc29saWQgQ2FudmFzVGV4dDtcbiAgfVxuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItZGlhbG9nLWJvcmRlci1yYWRpdXMpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbjpob3N0KDpzdGF0ZShoYXMtaW50ZXJtZWRpYXRlLWVsZW1lbnQpKSA6OnNsb3R0ZWQoOmZpcnN0LWNoaWxkKSxcbi5zYmItZGlhbG9nX193cmFwcGVyIHtcbiAgd2lkdGg6IHZhcigtLXNiYi1kaWFsb2ctd2lkdGgpO1xuICBoZWlnaHQ6IHZhcigtLXNiYi1kaWFsb2ctaGVpZ2h0KTtcbiAgbWF4LXdpZHRoOiB2YXIoLS1zYmItZGlhbG9nLW1heC13aWR0aCk7XG4gIG1heC1oZWlnaHQ6IHZhcigtLXNiYi1kaWFsb2ctbWF4LWhlaWdodCk7XG59XG5cbjpob3N0KDpzdGF0ZShoYXMtaW50ZXJtZWRpYXRlLWVsZW1lbnQpKSA6OnNsb3R0ZWQoOmZpcnN0LWNoaWxkKSxcbjpob3N0KDpub3QoOnN0YXRlKGhhcy1pbnRlcm1lZGlhdGUtZWxlbWVudCkpKSAuc2JiLWRpYWxvZ19fd3JhcHBlciB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGU6XG4gICAgJ3RpdGxlIGNsb3NlLWJ1dHRvbicgYXV0b1xuICAgICdjb250ZW50IGNvbnRlbnQnIDFmclxuICAgICdhY3Rpb25zIGFjdGlvbnMnIGF1dG8gLyAxZnIgYXV0bztcbiAgZ2FwOiAwO1xufVxuXG4vLyBJdCBpcyBuZWNlc3NhcnkgdG8gdXNlIGFuaW1hdGlvbnMgd2l0aCBrZXlmcmFtZXMgaW5zdGVhZCBvZiB0cmFuc2l0aW9ucyBpbiBvcmRlciBub3QgdG8gYWx0ZXJcbi8vIHRoZSBkZWZhdWx0IGBkaXNwbGF5OiBibG9ja2Agb2YgdGhlIG1vZGFsIG90aGVyd2lzZSBpdCBjYXVzZXMgc2V2ZXJhbCBwcm9ibGVtcyxcbi8vIGVzcGVjaWFsbHkgZm9yIGFjY2Vzc2liaWxpdHkuXG5Aa2V5ZnJhbWVzIG9wZW4ge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zbGF0ZTogMCB2YXIoLS1zYmItc3BhY2luZy1maXhlZC00eCk7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2xhdGU6IDA7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBjbG9zZSB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNsYXRlOiAwO1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNsYXRlOiAwIHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTR4KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUmVzaXplQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvcmVzaXplLWNvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHsgdHlwZSBDU1NSZXN1bHRHcm91cCwgdHlwZSBQcm9wZXJ0eVZhbHVlcywgdHlwZSBUZW1wbGF0ZVJlc3VsdCwgdW5zYWZlQ1NTIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcbmltcG9ydCB7IGh0bWwgfSBmcm9tICdsaXQvc3RhdGljLWh0bWwuanMnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYkVsZW1lbnRUeXBlLCBTYmJPdmVybGF5Q2xvc2VFdmVudERldGFpbHMgfSBmcm9tICcuLi8uLi9jb3JlLnRzJztcbmltcG9ydCB7XG4gIGJveFNpemluZ1N0eWxlcyxcbiAgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24sXG4gIFNiYlNjcmVlblJlYWRlck9ubHlFbGVtZW50LFxufSBmcm9tICcuLi8uLi9jb3JlLnRzJztcbmltcG9ydCB7XG4gIG92ZXJsYXlSZWZzLFxuICBTYmJPdmVybGF5QmFzZUVsZW1lbnQsXG4gIFNiYk92ZXJsYXlDbG9zZUV2ZW50IGFzIFNiYkRpYWxvZ0Nsb3NlRXZlbnQsXG59IGZyb20gJy4uLy4uL292ZXJsYXkucHVyZS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRpYWxvZ0NvbnRlbnRFbGVtZW50IH0gZnJvbSAnLi4vZGlhbG9nLWNvbnRlbnQvZGlhbG9nLWNvbnRlbnQuY29tcG9uZW50LnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZGlhbG9nLnNjc3M/aW5saW5lJztcblxuZXhwb3J0IHtcbiAgYXNzaWduT3ZlcmxheVJlc3VsdCBhcyBhc3NpZ25EaWFsb2dSZXN1bHQsXG4gIFNiYk92ZXJsYXlDbG9zZUV2ZW50IGFzIFNiYkRpYWxvZ0Nsb3NlRXZlbnQsXG59IGZyb20gJy4uLy4uL292ZXJsYXkvb3ZlcmxheS1iYXNlLWVsZW1lbnQudHMnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhbiBpbnRlcmFjdGl2ZSBvdmVybGF5IGVsZW1lbnQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBwcm92aWRlIGEgYHNiYi1kaWFsb2ctdGl0bGVgLCBgc2JiLWRpYWxvZy1jb250ZW50YCBhbmQgYW4gb3B0aW9uYWwgYHNiYi1kaWFsb2ctYWN0aW9uc2AuXG4gKiBAY3NzcHJvcCBbLS1zYmItZGlhbG9nLXotaW5kZXg9dmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KV0gLSBUbyBzcGVjaWZ5IGEgY3VzdG9tIHN0YWNrIG9yZGVyLFxuICogdGhlIGB6LWluZGV4YCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGlzIENTUyB2YXJpYWJsZS4gVGhlIGRlZmF1bHQgYHotaW5kZXhgIG9mIHRoZVxuICogY29tcG9uZW50IGlzIHNldCB0byBgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KWAgd2l0aCBhIHZhbHVlIG9mIGAxMDAwYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkRpYWxvZ0VsZW1lbnQgZXh0ZW5kcyBTYmJPdmVybGF5QmFzZUVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLWRpYWxvZyc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgZWxlbWVudERlcGVuZGVuY2llczogU2JiRWxlbWVudFR5cGVbXSA9IFtTYmJTY3JlZW5SZWFkZXJPbmx5RWxlbWVudF07XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHVuc2FmZUNTUyhzdHlsZSldO1xuXG4gIC8qKiBCYWNrZHJvcCBjbGljayBhY3Rpb24uICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2JhY2tkcm9wLWFjdGlvbicgfSkgcHVibGljIGFjY2Vzc29yIGJhY2tkcm9wQWN0aW9uOiAnY2xvc2UnIHwgJ25vbmUnID1cbiAgICAnY2xvc2UnO1xuXG4gIC8qKiBCYWNrZHJvcCBkZW5zaXR5LiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdiYWNrZHJvcCcsIHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIGJhY2tkcm9wOlxuICAgIHwgJ29wYXF1ZSdcbiAgICB8ICd0cmFuc2x1Y2VudCcgPSAnb3BhcXVlJztcblxuICAvLyBXZSB1c2UgYSB0aW1lb3V0IGFzIGEgd29ya2Fyb3VuZCB0byB0aGUgXCJSZXNpemVPYnNlcnZlciBsb29wIGNvbXBsZXRlZCB3aXRoIHVuZGVsaXZlcmVkIG5vdGlmaWNhdGlvbnNcIiBlcnJvci5cbiAgLy8gRm9yIG1vcmUgZGV0YWlsczpcbiAgLy8gLSBodHRwczovL2dpdGh1Yi5jb20vV0lDRy9yZXNpemUtb2JzZXJ2ZXIvaXNzdWVzLzM4I2lzc3VlY29tbWVudC00MjIxMjYwMDZcbiAgLy8gLSBodHRwczovL2dpdGh1Yi5jb20vanVnZ2xlL3Jlc2l6ZS1vYnNlcnZlci9pc3N1ZXMvMTAzI2lzc3VlY29tbWVudC0xNzExMTQ4Mjg1XG4gIHByaXZhdGUgX2RpYWxvZ0NvbnRlbnRSZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVDb250cm9sbGVyKHRoaXMsIHtcbiAgICB0YXJnZXQ6IG51bGwsXG4gICAgc2tpcEluaXRpYWw6IHRydWUsXG4gICAgY2FsbGJhY2s6ICgpID0+IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fdXBkYXRlT3ZlcmZsb3dTdGF0ZSgpKSxcbiAgfSk7XG5cbiAgcHJpdmF0ZSBfZGlhbG9nRWxlbWVudD86IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9pc1BvaW50ZXJEb3duRXZlbnRPbkRpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgY2xvc2VBdHRyaWJ1dGU6IHN0cmluZyA9ICdzYmItZGlhbG9nLWNsb3NlJztcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGNsb3NlVGFnOiBzdHJpbmcgPSAnc2JiLWRpYWxvZy1jbG9zZS1idXR0b24nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIC8vIENsb3NlIGRpYWxvZyBvbiBiYWNrZHJvcCBjbGlja1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdwb2ludGVyZG93bicsIHRoaXMuX3BvaW50ZXJEb3duTGlzdGVuZXIpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdwb2ludGVydXAnLCB0aGlzLl9jbG9zZU9uQmFja2Ryb3BDbGljayk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB0aGlzLl91cGRhdGVPdmVyZmxvd1N0YXRlKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBjYXB0dXJlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHRoaXMuaWQgfHw9IGBzYmItZGlhbG9nLSR7bmV4dElkKyt9YDtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICB9XG5cbiAgLyoqIEFubm91bmNlIHRoZSBhY2Nlc3NpYmlsaXR5IGxhYmVsIG9yIGRpYWxvZyB0aXRsZSBmb3Igc2NyZWVuIHJlYWRlcnMuICovXG4gIHB1YmxpYyBhbm5vdW5jZVRpdGxlKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0QXJpYUxpdmVSZWZDb250ZW50KFxuICAgICAgdGhpcy5hY2Nlc3NpYmlsaXR5TGFiZWwgfHwgdGhpcy5xdWVyeVNlbGVjdG9yKCdzYmItZGlhbG9nLXRpdGxlJyk/LnRleHRDb250ZW50LnRyaW0oKSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1plcm9BbmltYXRpb25EdXJhdGlvbih0aGlzLCAnLS1zYmItZGlhbG9nLWFuaW1hdGlvbi1kdXJhdGlvbicpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUNsb3NpbmcoKTogdm9pZCB7XG4gICAgY29uc3QgY29udGVudEVsZW1lbnQgPSB0aGlzLl9jb250ZW50RWxlbWVudCgpO1xuXG4gICAgY29udGVudEVsZW1lbnQ/LnNjcm9sbFRvKDAsIDApO1xuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2VkJztcbiAgICB0aGlzLmhpZGVQb3BvdmVyPy4oKTtcblxuICAgIHRoaXMuaW5lcnRDb250cm9sbGVyLmRlYWN0aXZhdGUoKTtcbiAgICBpZiAoIXRoaXMuc2tpcEZvY3VzUmVzdG9yYXRpb24pIHtcbiAgICAgIC8vIE1hbnVhbGx5IGZvY3VzIGxhc3QgZm9jdXNlZCBlbGVtZW50XG4gICAgICB0aGlzLmxhc3RGb2N1c2VkRWxlbWVudD8uZm9jdXMoKTtcbiAgICB9XG4gICAgdGhpcy5vcGVuT3ZlcmxheUNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5mb2N1c1RyYXBDb250cm9sbGVyLmVuYWJsZWQgPSBmYWxzZTtcbiAgICBpZiAoY29udGVudEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2RpYWxvZ0NvbnRlbnRSZXNpemVPYnNlcnZlci5ob3N0RGlzY29ubmVjdGVkKCk7XG4gICAgfVxuICAgIHRoaXMucmVtb3ZlSW5zdGFuY2VGcm9tR2xvYmFsQ29sbGVjdGlvbigpO1xuICAgIC8vIEVuYWJsZSBzY3JvbGxpbmcgZm9yIGNvbnRlbnQgYmVsb3cgdGhlIGRpYWxvZyBpZiBubyBkaWFsb2cgaXMgb3BlblxuICAgIGlmICghb3ZlcmxheVJlZnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNjcm9sbEhhbmRsZXIuZW5hYmxlU2Nyb2xsKCk7XG4gICAgfVxuICAgIHRoaXMuZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuZGlzcGF0Y2hDbG9zZUV2ZW50KHtcbiAgICAgIHJldHVyblZhbHVlOiB0aGlzLnJldHVyblZhbHVlLFxuICAgICAgY2xvc2VUYXJnZXQ6IHRoaXMub3ZlcmxheUNsb3NlRWxlbWVudCxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVPcGVuaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmVkJztcbiAgICB0aGlzLmluZXJ0Q29udHJvbGxlci5hY3RpdmF0ZSgpO1xuICAgIHRoaXMuZm9jdXNUcmFwQ29udHJvbGxlci5mb2N1c0luaXRpYWxFbGVtZW50KCk7XG4gICAgdGhpcy5mb2N1c1RyYXBDb250cm9sbGVyLmVuYWJsZWQgPSB0cnVlO1xuICAgIC8vIFVzZSB0aW1lb3V0IHRvIHJlYWQgbGFiZWwgYWZ0ZXIgZm9jdXNlZCBlbGVtZW50XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmFubm91bmNlVGl0bGUoKSk7XG5cbiAgICBjb25zdCBjb250ZW50RWxlbWVudCA9IHRoaXMuX2NvbnRlbnRFbGVtZW50KCk7XG4gICAgaWYgKGNvbnRlbnRFbGVtZW50KSB7XG4gICAgICB0aGlzLl9kaWFsb2dDb250ZW50UmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShjb250ZW50RWxlbWVudCk7XG4gICAgfVxuICAgIHRoaXMuZGlzcGF0Y2hPcGVuRXZlbnQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIC8vIElmIHRoZSBjb21wb25lbnQgaXMgYWxyZWFkeSBvcGVuIG9uIGZpcnN0VXBkYXRlLCBhbm5vdW5jZSB0aGUgdGl0bGVcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuYW5ub3VuY2VUaXRsZSgpO1xuICAgIH1cblxuICAgIHRoaXMuX3N5bmNUaXRsZU5lZ2F0aXZlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJykpIHtcbiAgICAgIHRoaXMuX3N5bmNUaXRsZU5lZ2F0aXZlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlU2xvdENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zeW5jVGl0bGVOZWdhdGl2ZSgpO1xuICAgIHRoaXMuX2RldGVjdEludGVybWVkaWF0ZUVsZW1lbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNUaXRsZU5lZ2F0aXZlKCk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ1RpdGxlID0gdGhpcy5xdWVyeVNlbGVjdG9yPy4oJ3NiYi1kaWFsb2ctdGl0bGUnKTtcbiAgICBjb25zdCBjbG9zZUJ1dHRvbiA9IHRoaXMucXVlcnlTZWxlY3Rvcj8uKCdzYmItZGlhbG9nLWNsb3NlLWJ1dHRvbicpO1xuXG4gICAgaWYgKGRpYWxvZ1RpdGxlKSB7XG4gICAgICBkaWFsb2dUaXRsZS5uZWdhdGl2ZSA9IHRoaXMubmVnYXRpdmU7XG4gICAgfVxuXG4gICAgaWYgKGNsb3NlQnV0dG9uKSB7XG4gICAgICBjbG9zZUJ1dHRvbi5uZWdhdGl2ZSA9IHRoaXMubmVnYXRpdmU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGV0ZWN0SW50ZXJtZWRpYXRlRWxlbWVudCgpOiB2b2lkIHtcbiAgICBjb25zdCBoYXNOb0V4cGVjdGVkRGlyZWN0Q2hpbGRyZW4gPVxuICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAnOnNjb3BlID4gOmlzKHNiYi1kaWFsb2ctdGl0bGUsIHNiYi1kaWFsb2ctY2xvc2UtYnV0dG9uLCBzYmItZGlhbG9nLWNvbnRlbnQsIHNiYi1kaWFsb2ctYWN0aW9ucyknLFxuICAgICAgKSA9PT0gbnVsbDtcblxuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2hhcy1pbnRlcm1lZGlhdGUtZWxlbWVudCcsIGhhc05vRXhwZWN0ZWREaXJlY3RDaGlsZHJlbik7XG4gIH1cblxuICAvKiogQ2hlY2sgaWYgdGhlIHBvaW50ZXJkb3duIGV2ZW50IHRhcmdldCBpcyB0cmlnZ2VyZWQgb24gdGhlIGRpYWxvZy4gKi9cbiAgcHJpdmF0ZSBfcG9pbnRlckRvd25MaXN0ZW5lciA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgaWYgKHRoaXMuYmFja2Ryb3BBY3Rpb24gIT09ICdjbG9zZScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbkRpYWxvZyA9XG4gICAgICAhIXRoaXMuX2RpYWxvZ0VsZW1lbnQgJiYgZXZlbnQuY29tcG9zZWRQYXRoKCkuaW5jbHVkZXModGhpcy5fZGlhbG9nRWxlbWVudCk7XG4gIH07XG5cbiAgLyoqIENsb3NlIGRpYWxvZyBvbiBiYWNrZHJvcCBjbGljay4gKi9cbiAgcHJpdmF0ZSBfY2xvc2VPbkJhY2tkcm9wQ2xpY2sgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIGlmIChcbiAgICAgIHRoaXMuYmFja2Ryb3BBY3Rpb24gPT09ICdjbG9zZScgJiZcbiAgICAgICF0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbkRpYWxvZyAmJlxuICAgICAgdGhpcy5fZGlhbG9nRWxlbWVudCAmJlxuICAgICAgIWV2ZW50LmNvbXBvc2VkUGF0aCgpLmluY2x1ZGVzKHRoaXMuX2RpYWxvZ0VsZW1lbnQpXG4gICAgKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX3VwZGF0ZU92ZXJmbG93U3RhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgY29udGVudEVsZW1lbnQgPSB0aGlzLl9jb250ZW50RWxlbWVudCgpO1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ3RvcC1zaGFkb3cnLCAoY29udGVudEVsZW1lbnQ/LnNjcm9sbFRvcCA/PyAwKSA+IDApO1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoXG4gICAgICAnYm90dG9tLXNoYWRvdycsXG4gICAgICAoY29udGVudEVsZW1lbnQ/LnNjcm9sbFRvcCA/PyAwKSArIChjb250ZW50RWxlbWVudD8ub2Zmc2V0SGVpZ2h0ID8/IDApIDxcbiAgICAgICAgKGNvbnRlbnRFbGVtZW50Py5zY3JvbGxIZWlnaHQgPz8gMCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbnRlbnRFbGVtZW50KCk6IFNiYkRpYWxvZ0NvbnRlbnRFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlTZWxlY3Rvcignc2JiLWRpYWxvZy1jb250ZW50Jyk7XG4gIH1cblxuICAvLyBUT0RPOiByZW1vdmUgcGFyYW1ldGVyIGBkZXRhaWxgXG4gIHByb3RlY3RlZCBvdmVycmlkZSBkaXNwYXRjaEJlZm9yZUNsb3NlRXZlbnQoX2RldGFpbD86IFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscyk6IGJvb2xlYW4ge1xuICAgIC8qKiBAdHlwZSB7U2JiRGlhbG9nQ2xvc2VFdmVudH0gRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBiZWdpbnMgdGhlIGNsb3NpbmcgdHJhbnNpdGlvbi4gQ2FuIGJlIGNhbmNlbGVkLiAqL1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgU2JiRGlhbG9nQ2xvc2VFdmVudCgnYmVmb3JlY2xvc2UnLCB7XG4gICAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgICAgIGNsb3NlQXR0cmlidXRlOiB0aGlzLmNsb3NlQXR0cmlidXRlLFxuICAgICAgICBjbG9zZVRhcmdldDogdGhpcy5vdmVybGF5Q2xvc2VFbGVtZW50LFxuICAgICAgICByZXN1bHQ6IHRoaXMucmV0dXJuVmFsdWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLy8gVE9ETzogcmVtb3ZlIHBhcmFtZXRlciBgZGV0YWlsYFxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZGlzcGF0Y2hDbG9zZUV2ZW50KF9kZXRhaWw/OiBTYmJPdmVybGF5Q2xvc2VFdmVudERldGFpbHMpOiBib29sZWFuIHtcbiAgICAvKiogQHR5cGUge1NiYkRpYWxvZ0Nsb3NlRXZlbnR9IEVtaXRzIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgaXMgY2xvc2VkLiAqL1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgU2JiRGlhbG9nQ2xvc2VFdmVudCgnY2xvc2UnLCB7XG4gICAgICAgIGNsb3NlQXR0cmlidXRlOiB0aGlzLmNsb3NlQXR0cmlidXRlLFxuICAgICAgICBjbG9zZVRhcmdldDogdGhpcy5vdmVybGF5Q2xvc2VFbGVtZW50LFxuICAgICAgICByZXN1bHQ6IHRoaXMucmV0dXJuVmFsdWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWRpYWxvZ19fY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBAYW5pbWF0aW9uZW5kPSR7dGhpcy5vbk92ZXJsYXlBbmltYXRpb25FbmR9XG4gICAgICAgICAgY2xhc3M9XCJzYmItZGlhbG9nXCJcbiAgICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KSA9PiAodGhpcy5fZGlhbG9nRWxlbWVudCA9IGVsIGFzIEhUTUxEaXZFbGVtZW50KSl9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBAY2xpY2s9JHsoZXZlbnQ6IEV2ZW50KSA9PiB0aGlzLmNsb3NlT25TYmJPdmVybGF5Q2xvc2VDbGljayhldmVudCl9XG4gICAgICAgICAgICBjbGFzcz1cInNiYi1kaWFsb2dfX3dyYXBwZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7KCkgPT4gdGhpcy5faGFuZGxlU2xvdENoYW5nZSgpfT48L3Nsb3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8c2JiLXNjcmVlbi1yZWFkZXItb25seSBhcmlhLWxpdmU9XCJwb2xpdGVcIj48L3NiYi1zY3JlZW4tcmVhZGVyLW9ubHk+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRpYWxvZyc6IFNiYkRpYWxvZ0VsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQzBCQSxJQUFJLFNBQVM7Ozs7Ozs7OztJQVVBLDBCQUFnQjttQkFBUzs7Ozs7OztjQUF6Qix5QkFBeUIsWUFBcUI7OztpQ0FNeEQsU0FBUyxFQUFFLFdBQVcsbUJBQW1CLENBQUMsQ0FBQTsyQkFJMUMsU0FBUztJQUFFLFdBQVc7SUFBWSxTQUFTO0lBQU0sQ0FBQyxDQUFBO0FBSlAsZ0JBQUEsTUFBQSxNQUFBLDRCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsb0JBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBYyxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQWQsaUJBQWM7O0tBQUE7SUFBQSxVQUFBO0lBQUEsRUFBQSw4QkFBQSxrQ0FBQTtBQUl0QixnQkFBQSxNQUFBLE1BQUEsc0JBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSxjQUFBO0tBQUEsTUFBQSxRQUFBLElB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
233
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC1CNGNaZlJDbC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvZGlhbG9nL2RpYWxvZy9kaWFsb2cuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvZGlhbG9nL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgLS1zYmItZGlhbG9nLWFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKFxuICAgIC0tc2JiLWRpc2FibGUtYW5pbWF0aW9uLWR1cmF0aW9uLFxuICAgIHZhcigtLXNiYi1hbmltYXRpb24tZHVyYXRpb24tNngpXG4gICk7XG4gIC0tc2JiLWRpYWxvZy1wYWRkaW5nLWJsb2NrOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXhzKTtcbiAgLS1zYmItZGlhbG9nLXNoYWRvdy1hbmltYXRpb24tZHVyYXRpb246IHZhcihcbiAgICAtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbixcbiAgICB2YXIoLS1zYmItYW5pbWF0aW9uLWR1cmF0aW9uLTR4KVxuICApO1xuXG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgaW5zZXQ6IHZhcigtLXNiYi1kaWFsb2ctaW5zZXQpO1xuICB6LWluZGV4OiB2YXIoLS1zYmItZGlhbG9nLXotaW5kZXgsIHZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleCkpO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICAtLXNiYi1kaWFsb2ctbWF4LXdpZHRoOiBtaW4oXG4gICAgICBjYWxjKDEwMHZ3IC0gdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMzB4KSAqIDIpLFxuICAgICAgdmFyKC0tc2JiLWRpYWxvZy1tYXgtd2lkdGgtZGVmYXVsdClcbiAgICApO1xuICB9XG59XG5cbjpob3N0KDpzdGF0ZSh0b3Atc2hhZG93KSkge1xuICAtLXNiYi1kaWFsb2ctYmxvY2stc3RhcnQtYm94LXNoYWRvdzogdmFyKC0tX3NiYi1kaWFsb2ctYmxvY2stc2hhZG93KTtcbn1cblxuOmhvc3QoOmlzKDpzdGF0ZShzdGF0ZS1vcGVuaW5nKSwgOnN0YXRlKHN0YXRlLW9wZW5lZCksIDpzdGF0ZShzdGF0ZS1jbG9zaW5nKSkpIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbjpob3N0KDppcyg6c3RhdGUoc3RhdGUtb3BlbmluZyksIDpzdGF0ZShzdGF0ZS1vcGVuZWQpKSkge1xuICAtLXNiYi1kaWFsb2ctcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgLS1zYmItZGlhbG9nLWJhY2tkcm9wLWNvbG9yOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0zKTtcblxuICBAaW5jbHVkZSBzYmIubXEoJGZyb206IGxhcmdlKSB7XG4gICAgLS1zYmItZGlhbG9nLWJhY2tkcm9wLXZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgLS1zYmItZGlhbG9nLWJhY2tkcm9wLXBvaW50ZXItZXZlbnRzOiBhbGw7XG4gIH1cbn1cblxuOmhvc3QoW2JhY2tkcm9wPSd0cmFuc2x1Y2VudCddOmlzKDpzdGF0ZShzdGF0ZS1vcGVuaW5nKSwgOnN0YXRlKHN0YXRlLW9wZW5lZCkpKSB7XG4gIC0tc2JiLWRpYWxvZy1iYWNrZHJvcC1jb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXNiYi1jb2xvci1ibGFjaykgNTAlLCB0cmFuc3BhcmVudCk7XG59XG5cbjpob3N0KFtiYWNrZHJvcD0nb3BhcXVlJ106bm90KFtuZWdhdGl2ZV0pOmlzKDpzdGF0ZShzdGF0ZS1vcGVuaW5nKSwgOnN0YXRlKHN0YXRlLW9wZW5lZCkpKSB7XG4gIC0tc2JiLWRpYWxvZy1iYWNrZHJvcC1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMyk7XG59XG5cbjpob3N0KDpub3QoW25lZ2F0aXZlXSkpIHtcbiAgLS1fc2JiLWRpYWxvZy1jb2xvcjogdmFyKC0tc2JiLWRpYWxvZy1jb2xvcik7XG4gIC0tX3NiYi1kaWFsb2ctYmxvY2stc2hhZG93OiB2YXIoLS1zYmItZGlhbG9nLWJsb2NrLXNoYWRvdyk7XG4gIC0tc2JiLWRpYWxvZy1hY3Rpb25zLWJvcmRlci1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItNCk7XG4gIC0tc2JiLWRpYWxvZy1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0xKTtcbn1cblxuOmhvc3QoW25lZ2F0aXZlXSkge1xuICAtLV9zYmItZGlhbG9nLWNvbG9yOiB2YXIoLS1zYmItZGlhbG9nLWNvbG9yLW5lZ2F0aXZlKTtcbiAgLS1fc2JiLWRpYWxvZy1ibG9jay1zaGFkb3c6IHZhcigtLXNiYi1kaWFsb2ctYmxvY2stc2hhZG93LW5lZ2F0aXZlKTtcbiAgLS1zYmItZGlhbG9nLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTEtbmVnYXRpdmUpO1xuICAtLXNiYi1kaWFsb2ctYWN0aW9ucy1ib3JkZXItY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTQtbmVnYXRpdmUpO1xuICAtLXNiYi1kaWFsb2ctYmFja2Ryb3AtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTMtbmVnYXRpdmUpO1xuICAtLXNiYi1mb2N1cy1vdXRsaW5lLWNvbG9yOiB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvci1kYXJrKTtcbn1cblxuOmhvc3QoOnN0YXRlKGJvdHRvbS1zaGFkb3cpKSB7XG4gIC0tc2JiLWRpYWxvZy1ibG9jay1lbmQtYm94LXNoYWRvdzogdmFyKC0tX3NiYi1kaWFsb2ctYmxvY2stc2hhZG93KTtcbiAgLS1zYmItZGlhbG9nLWFjdGlvbnMtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuOmhvc3QoOm5vdCg6c3RhdGUoc3RhdGUtY2xvc2VkKSkpIHtcbiAgLS1zYmItZGlhbG9nLWluc2V0OiAwO1xufVxuXG4uc2JiLWRpYWxvZ19fY29udGFpbmVyIHtcbiAgcG9pbnRlci1ldmVudHM6IHZhcigtLXNiYi1kaWFsb2ctcG9pbnRlci1ldmVudHMpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGluc2V0OiB2YXIoLS1zYmItZGlhbG9nLWluc2V0KTtcblxuICAvLyBEaWFsb2cgYmFja2Ryb3AgKG5vdCB2aXNpYmxlIG9uIG1vYmlsZSlcbiAgJjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICB2aXNpYmlsaXR5OiB2YXIoLS1zYmItZGlhbG9nLWJhY2tkcm9wLXZpc2liaWxpdHkpO1xuICAgIHBvaW50ZXItZXZlbnRzOiB2YXIoLS1zYmItZGlhbG9nLWJhY2tkcm9wLXBvaW50ZXItZXZlbnRzKTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaW5zZXQ6IHZhcigtLXNiYi1kaWFsb2ctaW5zZXQpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1kaWFsb2ctYmFja2Ryb3AtY29sb3IpO1xuICAgIHRyYW5zaXRpb246IHtcbiAgICAgIGR1cmF0aW9uOiB2YXIoLS1zYmItZGlhbG9nLWFuaW1hdGlvbi1kdXJhdGlvbik7XG4gICAgICB0aW1pbmctZnVuY3Rpb246IHZhcigtLXNiYi1kaWFsb2ctYW5pbWF0aW9uLWVhc2luZyk7XG4gICAgICBwcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvciwgdmlzaWJpbGl0eTtcbiAgICB9XG4gIH1cbn1cblxuLnNiYi1kaWFsb2cge1xuICBkaXNwbGF5OiBub25lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0LWlubGluZTogMDtcbiAgbWFyZ2luOiBhdXRvO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IG5vbmU7XG4gIHdpZHRoOiB2YXIoLS1zYmItZGlhbG9nLXdpZHRoKTtcbiAgaGVpZ2h0OiB2YXIoLS1zYmItZGlhbG9nLWhlaWdodCk7XG4gIG1heC13aWR0aDogdmFyKC0tc2JiLWRpYWxvZy1tYXgtd2lkdGgpO1xuICBtYXgtaGVpZ2h0OiB2YXIoLS1zYmItZGlhbG9nLW1heC1oZWlnaHQpO1xuICBjb2xvcjogdmFyKC0tX3NiYi1kaWFsb2ctY29sb3IpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItZGlhbG9nLWJhY2tncm91bmQtY29sb3IpO1xuXG4gIDpob3N0KDppcyg6c3RhdGUoc3RhdGUtb3BlbmluZyksIDpzdGF0ZShzdGF0ZS1vcGVuZWQpLCA6c3RhdGUoc3RhdGUtY2xvc2luZykpKSAmIHtcbiAgICBkaXNwbGF5OiBibG9jaztcblxuICAgIGFuaW1hdGlvbjoge1xuICAgICAgbmFtZTogb3BlbjtcbiAgICAgIGR1cmF0aW9uOiB2YXIoLS1zYmItZGlhbG9nLWFuaW1hdGlvbi1kdXJhdGlvbik7XG4gICAgICB0aW1pbmctZnVuY3Rpb246IGVhc2U7XG4gICAgfVxuICB9XG5cbiAgOmhvc3QoOnN0YXRlKHN0YXRlLWNsb3NpbmcpKSAmIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBhbmltYXRpb24tbmFtZTogY2xvc2U7XG4gIH1cblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgb3V0bGluZTogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0xeCkgc29saWQgQ2FudmFzVGV4dDtcbiAgfVxuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItZGlhbG9nLWJvcmRlci1yYWRpdXMpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbjpob3N0KDpzdGF0ZShoYXMtaW50ZXJtZWRpYXRlLWVsZW1lbnQpKSA6OnNsb3R0ZWQoOmZpcnN0LWNoaWxkKSxcbi5zYmItZGlhbG9nX193cmFwcGVyIHtcbiAgd2lkdGg6IHZhcigtLXNiYi1kaWFsb2ctd2lkdGgpO1xuICBoZWlnaHQ6IHZhcigtLXNiYi1kaWFsb2ctaGVpZ2h0KTtcbiAgbWF4LXdpZHRoOiB2YXIoLS1zYmItZGlhbG9nLW1heC13aWR0aCk7XG4gIG1heC1oZWlnaHQ6IHZhcigtLXNiYi1kaWFsb2ctbWF4LWhlaWdodCk7XG59XG5cbjpob3N0KDpzdGF0ZShoYXMtaW50ZXJtZWRpYXRlLWVsZW1lbnQpKSA6OnNsb3R0ZWQoOmZpcnN0LWNoaWxkKSxcbjpob3N0KDpub3QoOnN0YXRlKGhhcy1pbnRlcm1lZGlhdGUtZWxlbWVudCkpKSAuc2JiLWRpYWxvZ19fd3JhcHBlciB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGU6XG4gICAgJ3RpdGxlIGNsb3NlLWJ1dHRvbicgYXV0b1xuICAgICdjb250ZW50IGNvbnRlbnQnIDFmclxuICAgICdhY3Rpb25zIGFjdGlvbnMnIGF1dG8gLyAxZnIgYXV0bztcbiAgZ2FwOiAwO1xufVxuXG4vLyBJdCBpcyBuZWNlc3NhcnkgdG8gdXNlIGFuaW1hdGlvbnMgd2l0aCBrZXlmcmFtZXMgaW5zdGVhZCBvZiB0cmFuc2l0aW9ucyBpbiBvcmRlciBub3QgdG8gYWx0ZXJcbi8vIHRoZSBkZWZhdWx0IGBkaXNwbGF5OiBibG9ja2Agb2YgdGhlIG1vZGFsIG90aGVyd2lzZSBpdCBjYXVzZXMgc2V2ZXJhbCBwcm9ibGVtcyxcbi8vIGVzcGVjaWFsbHkgZm9yIGFjY2Vzc2liaWxpdHkuXG5Aa2V5ZnJhbWVzIG9wZW4ge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zbGF0ZTogMCB2YXIoLS1zYmItc3BhY2luZy1maXhlZC00eCk7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2xhdGU6IDA7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBjbG9zZSB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNsYXRlOiAwO1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNsYXRlOiAwIHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTR4KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUmVzaXplQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvcmVzaXplLWNvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHsgdHlwZSBDU1NSZXN1bHRHcm91cCwgdHlwZSBQcm9wZXJ0eVZhbHVlcywgdHlwZSBUZW1wbGF0ZVJlc3VsdCwgdW5zYWZlQ1NTIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcbmltcG9ydCB7IGh0bWwgfSBmcm9tICdsaXQvc3RhdGljLWh0bWwuanMnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYkVsZW1lbnRUeXBlLCBTYmJPdmVybGF5Q2xvc2VFdmVudERldGFpbHMgfSBmcm9tICcuLi8uLi9jb3JlLnRzJztcbmltcG9ydCB7XG4gIGJveFNpemluZ1N0eWxlcyxcbiAgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24sXG4gIFNiYlNjcmVlblJlYWRlck9ubHlFbGVtZW50LFxufSBmcm9tICcuLi8uLi9jb3JlLnRzJztcbmltcG9ydCB7XG4gIG92ZXJsYXlSZWZzLFxuICBTYmJPdmVybGF5QmFzZUVsZW1lbnQsXG4gIFNiYk92ZXJsYXlDbG9zZUV2ZW50IGFzIFNiYkRpYWxvZ0Nsb3NlRXZlbnQsXG59IGZyb20gJy4uLy4uL292ZXJsYXkucHVyZS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRpYWxvZ0NvbnRlbnRFbGVtZW50IH0gZnJvbSAnLi4vZGlhbG9nLWNvbnRlbnQvZGlhbG9nLWNvbnRlbnQuY29tcG9uZW50LnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZGlhbG9nLnNjc3M/aW5saW5lJztcblxuZXhwb3J0IHtcbiAgYXNzaWduT3ZlcmxheVJlc3VsdCBhcyBhc3NpZ25EaWFsb2dSZXN1bHQsXG4gIFNiYk92ZXJsYXlDbG9zZUV2ZW50IGFzIFNiYkRpYWxvZ0Nsb3NlRXZlbnQsXG59IGZyb20gJy4uLy4uL292ZXJsYXkvb3ZlcmxheS1iYXNlLWVsZW1lbnQudHMnO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGFuIGludGVyYWN0aXZlIG92ZXJsYXkgZWxlbWVudC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIHByb3ZpZGUgYSBgc2JiLWRpYWxvZy10aXRsZWAsIGBzYmItZGlhbG9nLWNvbnRlbnRgIGFuZCBhbiBvcHRpb25hbCBgc2JiLWRpYWxvZy1hY3Rpb25zYC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1kaWFsb2ctei1pbmRleD12YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpXSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLiBUaGUgZGVmYXVsdCBgei1pbmRleGAgb2YgdGhlXG4gKiBjb21wb25lbnQgaXMgc2V0IHRvIGB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpYCB3aXRoIGEgdmFsdWUgb2YgYDEwMDBgLlxuICovXG5leHBvcnQgY2xhc3MgU2JiRGlhbG9nRWxlbWVudCBleHRlbmRzIFNiYk92ZXJsYXlCYXNlRWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItZGlhbG9nJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBlbGVtZW50RGVwZW5kZW5jaWVzOiBTYmJFbGVtZW50VHlwZVtdID0gW1NiYlNjcmVlblJlYWRlck9ubHlFbGVtZW50XTtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG5cbiAgLyoqIEJhY2tkcm9wIGNsaWNrIGFjdGlvbi4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYmFja2Ryb3AtYWN0aW9uJyB9KSBwdWJsaWMgYWNjZXNzb3IgYmFja2Ryb3BBY3Rpb246ICdjbG9zZScgfCAnbm9uZScgPVxuICAgICdjbG9zZSc7XG5cbiAgLyoqIEJhY2tkcm9wIGRlbnNpdHkuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2JhY2tkcm9wJywgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgYWNjZXNzb3IgYmFja2Ryb3A6XG4gICAgfCAnb3BhcXVlJ1xuICAgIHwgJ3RyYW5zbHVjZW50JyA9ICdvcGFxdWUnO1xuXG4gIC8vIFdlIHVzZSBhIHRpbWVvdXQgYXMgYSB3b3JrYXJvdW5kIHRvIHRoZSBcIlJlc2l6ZU9ic2VydmVyIGxvb3AgY29tcGxldGVkIHdpdGggdW5kZWxpdmVyZWQgbm90aWZpY2F0aW9uc1wiIGVycm9yLlxuICAvLyBGb3IgbW9yZSBkZXRhaWxzOlxuICAvLyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9XSUNHL3Jlc2l6ZS1vYnNlcnZlci9pc3N1ZXMvMzgjaXNzdWVjb21tZW50LTQyMjEyNjAwNlxuICAvLyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9qdWdnbGUvcmVzaXplLW9ic2VydmVyL2lzc3Vlcy8xMDMjaXNzdWVjb21tZW50LTE3MTExNDgyODVcbiAgcHJpdmF0ZSBfZGlhbG9nQ29udGVudFJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZUNvbnRyb2xsZXIodGhpcywge1xuICAgIHRhcmdldDogbnVsbCxcbiAgICBza2lwSW5pdGlhbDogdHJ1ZSxcbiAgICBjYWxsYmFjazogKCkgPT4gc2V0VGltZW91dCgoKSA9PiB0aGlzLl91cGRhdGVPdmVyZmxvd1N0YXRlKCkpLFxuICB9KTtcblxuICBwcml2YXRlIF9kaWFsb2dFbGVtZW50PzogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX2lzUG9pbnRlckRvd25FdmVudE9uRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBjbG9zZUF0dHJpYnV0ZTogc3RyaW5nID0gJ3NiYi1kaWFsb2ctY2xvc2UnO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY2xvc2VUYWc6IHN0cmluZyA9ICdzYmItZGlhbG9nLWNsb3NlLWJ1dHRvbic7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgLy8gQ2xvc2UgZGlhbG9nIG9uIGJhY2tkcm9wIGNsaWNrXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ3BvaW50ZXJkb3duJywgdGhpcy5fcG9pbnRlckRvd25MaXN0ZW5lcik7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ3BvaW50ZXJ1cCcsIHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsICgpID0+IHRoaXMuX3VwZGF0ZU92ZXJmbG93U3RhdGUoKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvKiogQW5ub3VuY2UgdGhlIGFjY2Vzc2liaWxpdHkgbGFiZWwgb3IgZGlhbG9nIHRpdGxlIGZvciBzY3JlZW4gcmVhZGVycy4gKi9cbiAgcHVibGljIGFubm91bmNlVGl0bGUoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRBcmlhTGl2ZVJlZkNvbnRlbnQoXG4gICAgICB0aGlzLmFjY2Vzc2liaWxpdHlMYWJlbCB8fCB0aGlzLnF1ZXJ5U2VsZWN0b3IoJ3NiYi1kaWFsb2ctdGl0bGUnKT8udGV4dENvbnRlbnQudHJpbSgpLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKHRoaXMsICctLXNiYi1kaWFsb2ctYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQ2xvc2luZygpOiB2b2lkIHtcbiAgICBjb25zdCBjb250ZW50RWxlbWVudCA9IHRoaXMuX2NvbnRlbnRFbGVtZW50KCk7XG5cbiAgICBjb250ZW50RWxlbWVudD8uc2Nyb2xsVG8oMCwgMCk7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHRoaXMuaGlkZVBvcG92ZXI/LigpO1xuXG4gICAgdGhpcy5pbmVydENvbnRyb2xsZXIuZGVhY3RpdmF0ZSgpO1xuICAgIGlmICghdGhpcy5za2lwRm9jdXNSZXN0b3JhdGlvbikge1xuICAgICAgLy8gTWFudWFsbHkgZm9jdXMgbGFzdCBmb2N1c2VkIGVsZW1lbnRcbiAgICAgIHRoaXMubGFzdEZvY3VzZWRFbGVtZW50Py5mb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLmZvY3VzVHJhcENvbnRyb2xsZXIuZW5hYmxlZCA9IGZhbHNlO1xuICAgIGlmIChjb250ZW50RWxlbWVudCkge1xuICAgICAgdGhpcy5fZGlhbG9nQ29udGVudFJlc2l6ZU9ic2VydmVyLmhvc3REaXNjb25uZWN0ZWQoKTtcbiAgICB9XG4gICAgdGhpcy5yZW1vdmVJbnN0YW5jZUZyb21HbG9iYWxDb2xsZWN0aW9uKCk7XG4gICAgLy8gRW5hYmxlIHNjcm9sbGluZyBmb3IgY29udGVudCBiZWxvdyB0aGUgZGlhbG9nIGlmIG5vIGRpYWxvZyBpcyBvcGVuXG4gICAgaWYgKCFvdmVybGF5UmVmcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5lbmFibGVTY3JvbGwoKTtcbiAgICB9XG4gICAgdGhpcy5lc2NhcGFibGVPdmVybGF5Q29udHJvbGxlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5kaXNwYXRjaENsb3NlRXZlbnQoe1xuICAgICAgcmV0dXJuVmFsdWU6IHRoaXMucmV0dXJuVmFsdWUsXG4gICAgICBjbG9zZVRhcmdldDogdGhpcy5vdmVybGF5Q2xvc2VFbGVtZW50LFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZU9wZW5pbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuZWQnO1xuICAgIHRoaXMuaW5lcnRDb250cm9sbGVyLmFjdGl2YXRlKCk7XG4gICAgdGhpcy5mb2N1c1RyYXBDb250cm9sbGVyLmZvY3VzSW5pdGlhbEVsZW1lbnQoKTtcbiAgICB0aGlzLmZvY3VzVHJhcENvbnRyb2xsZXIuZW5hYmxlZCA9IHRydWU7XG4gICAgLy8gVXNlIHRpbWVvdXQgdG8gcmVhZCBsYWJlbCBhZnRlciBmb2N1c2VkIGVsZW1lbnRcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYW5ub3VuY2VUaXRsZSgpKTtcblxuICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50ID0gdGhpcy5fY29udGVudEVsZW1lbnQoKTtcbiAgICBpZiAoY29udGVudEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2RpYWxvZ0NvbnRlbnRSZXNpemVPYnNlcnZlci5vYnNlcnZlKGNvbnRlbnRFbGVtZW50KTtcbiAgICB9XG4gICAgdGhpcy5kaXNwYXRjaE9wZW5FdmVudCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgLy8gSWYgdGhlIGNvbXBvbmVudCBpcyBhbHJlYWR5IG9wZW4gb24gZmlyc3RVcGRhdGUsIGFubm91bmNlIHRoZSB0aXRsZVxuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5hbm5vdW5jZVRpdGxlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3luY1RpdGxlTmVnYXRpdmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbmVnYXRpdmUnKSkge1xuICAgICAgdGhpcy5fc3luY1RpdGxlTmVnYXRpdmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVTbG90Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuX3N5bmNUaXRsZU5lZ2F0aXZlKCk7XG4gICAgdGhpcy5fZGV0ZWN0SW50ZXJtZWRpYXRlRWxlbWVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3luY1RpdGxlTmVnYXRpdmUoKTogdm9pZCB7XG4gICAgY29uc3QgZGlhbG9nVGl0bGUgPSB0aGlzLnF1ZXJ5U2VsZWN0b3I/Lignc2JiLWRpYWxvZy10aXRsZScpO1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gdGhpcy5xdWVyeVNlbGVjdG9yPy4oJ3NiYi1kaWFsb2ctY2xvc2UtYnV0dG9uJyk7XG5cbiAgICBpZiAoZGlhbG9nVGl0bGUpIHtcbiAgICAgIGRpYWxvZ1RpdGxlLm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZTtcbiAgICB9XG5cbiAgICBpZiAoY2xvc2VCdXR0b24pIHtcbiAgICAgIGNsb3NlQnV0dG9uLm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9kZXRlY3RJbnRlcm1lZGlhdGVFbGVtZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IGhhc05vRXhwZWN0ZWREaXJlY3RDaGlsZHJlbiA9XG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICc6c2NvcGUgPiA6aXMoc2JiLWRpYWxvZy10aXRsZSwgc2JiLWRpYWxvZy1jbG9zZS1idXR0b24sIHNiYi1kaWFsb2ctY29udGVudCwgc2JiLWRpYWxvZy1hY3Rpb25zKScsXG4gICAgICApID09PSBudWxsO1xuXG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnaGFzLWludGVybWVkaWF0ZS1lbGVtZW50JywgaGFzTm9FeHBlY3RlZERpcmVjdENoaWxkcmVuKTtcbiAgfVxuXG4gIC8qKiBDaGVjayBpZiB0aGUgcG9pbnRlcmRvd24gZXZlbnQgdGFyZ2V0IGlzIHRyaWdnZXJlZCBvbiB0aGUgZGlhbG9nLiAqL1xuICBwcml2YXRlIF9wb2ludGVyRG93bkxpc3RlbmVyID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICBpZiAodGhpcy5iYWNrZHJvcEFjdGlvbiAhPT0gJ2Nsb3NlJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzUG9pbnRlckRvd25FdmVudE9uRGlhbG9nID1cbiAgICAgICEhdGhpcy5fZGlhbG9nRWxlbWVudCAmJiBldmVudC5jb21wb3NlZFBhdGgoKS5pbmNsdWRlcyh0aGlzLl9kaWFsb2dFbGVtZW50KTtcbiAgfTtcblxuICAvKiogQ2xvc2UgZGlhbG9nIG9uIGJhY2tkcm9wIGNsaWNrLiAqL1xuICBwcml2YXRlIF9jbG9zZU9uQmFja2Ryb3BDbGljayA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5iYWNrZHJvcEFjdGlvbiA9PT0gJ2Nsb3NlJyAmJlxuICAgICAgIXRoaXMuX2lzUG9pbnRlckRvd25FdmVudE9uRGlhbG9nICYmXG4gICAgICB0aGlzLl9kaWFsb2dFbGVtZW50ICYmXG4gICAgICAhZXZlbnQuY29tcG9zZWRQYXRoKCkuaW5jbHVkZXModGhpcy5fZGlhbG9nRWxlbWVudClcbiAgICApIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfdXBkYXRlT3ZlcmZsb3dTdGF0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjb250ZW50RWxlbWVudCA9IHRoaXMuX2NvbnRlbnRFbGVtZW50KCk7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgndG9wLXNoYWRvdycsIChjb250ZW50RWxlbWVudD8uc2Nyb2xsVG9wID8/IDApID4gMCk7XG4gICAgdGhpcy50b2dnbGVTdGF0ZShcbiAgICAgICdib3R0b20tc2hhZG93JyxcbiAgICAgIChjb250ZW50RWxlbWVudD8uc2Nyb2xsVG9wID8/IDApICsgKGNvbnRlbnRFbGVtZW50Py5vZmZzZXRIZWlnaHQgPz8gMCkgPFxuICAgICAgICAoY29udGVudEVsZW1lbnQ/LnNjcm9sbEhlaWdodCA/PyAwKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29udGVudEVsZW1lbnQoKTogU2JiRGlhbG9nQ29udGVudEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKCdzYmItZGlhbG9nLWNvbnRlbnQnKTtcbiAgfVxuXG4gIC8vIFRPRE86IHJlbW92ZSBwYXJhbWV0ZXIgYGRldGFpbGBcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGRpc3BhdGNoQmVmb3JlQ2xvc2VFdmVudChfZGV0YWlsPzogU2JiT3ZlcmxheUNsb3NlRXZlbnREZXRhaWxzKTogYm9vbGVhbiB7XG4gICAgLyoqIEB0eXBlIHtTYmJEaWFsb2dDbG9zZUV2ZW50fSBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IGJlZ2lucyB0aGUgY2xvc2luZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuICovXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBTYmJEaWFsb2dDbG9zZUV2ZW50KCdiZWZvcmVjbG9zZScsIHtcbiAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgY2xvc2VBdHRyaWJ1dGU6IHRoaXMuY2xvc2VBdHRyaWJ1dGUsXG4gICAgICAgIGNsb3NlVGFyZ2V0OiB0aGlzLm92ZXJsYXlDbG9zZUVsZW1lbnQsXG4gICAgICAgIHJlc3VsdDogdGhpcy5yZXR1cm5WYWx1ZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvLyBUT0RPOiByZW1vdmUgcGFyYW1ldGVyIGBkZXRhaWxgXG4gIHByb3RlY3RlZCBvdmVycmlkZSBkaXNwYXRjaENsb3NlRXZlbnQoX2RldGFpbD86IFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscyk6IGJvb2xlYW4ge1xuICAgIC8qKiBAdHlwZSB7U2JiRGlhbG9nQ2xvc2VFdmVudH0gRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBpcyBjbG9zZWQuICovXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBTYmJEaWFsb2dDbG9zZUV2ZW50KCdjbG9zZScsIHtcbiAgICAgICAgY2xvc2VBdHRyaWJ1dGU6IHRoaXMuY2xvc2VBdHRyaWJ1dGUsXG4gICAgICAgIGNsb3NlVGFyZ2V0OiB0aGlzLm92ZXJsYXlDbG9zZUVsZW1lbnQsXG4gICAgICAgIHJlc3VsdDogdGhpcy5yZXR1cm5WYWx1ZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItZGlhbG9nX19jb250YWluZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIEBhbmltYXRpb25lbmQ9JHt0aGlzLm9uT3ZlcmxheUFuaW1hdGlvbkVuZH1cbiAgICAgICAgICBjbGFzcz1cInNiYi1kaWFsb2dcIlxuICAgICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpID0+ICh0aGlzLl9kaWFsb2dFbGVtZW50ID0gZWwgYXMgSFRNTERpdkVsZW1lbnQpKX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIEBjbGljaz0keyhldmVudDogRXZlbnQpID0+IHRoaXMuY2xvc2VPblNiYk92ZXJsYXlDbG9zZUNsaWNrKGV2ZW50KX1cbiAgICAgICAgICAgIGNsYXNzPVwic2JiLWRpYWxvZ19fd3JhcHBlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHsoKSA9PiB0aGlzLl9oYW5kbGVTbG90Q2hhbmdlKCl9Pjwvc2xvdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzYmItc2NyZWVuLXJlYWRlci1vbmx5IGFyaWEtbGl2ZT1cInBvbGl0ZVwiPjwvc2JiLXNjcmVlbi1yZWFkZXItb25seT5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZGlhbG9nJzogU2JiRGlhbG9nRWxlbWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNrQ2EsMEJBQWdCO21CQUFTOzs7Ozs7O2NBQXpCLHlCQUF5QixZQUFxQjs7O2lDQU14RCxTQUFTLEVBQUUsV0FBVyxtQkFBbUIsQ0FBQyxDQUFBOzJCQUkxQyxTQUFTO0lBQUUsV0FBVztJQUFZLFNBQVM7SUFBTSxDQUFDLENBQUE7QUFKUCxnQkFBQSxNQUFBLE1BQUEsNEJBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSxvQkFBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFjLE1BQUEsS0FBQSxVQUFBO0FBQUEsVUFBZCxpQkFBYzs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLDhCQUFBLGtDQUFBO0FBSXRCLGdCQUFBLE1BQUEsTUFBQSxzQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLGNBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBUSxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVIsV0FBUTs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLHdCQUFBLDRCQUFBOzs7Ozs7Ozs7QUFUNUMsUUFBQSxjQUFzQjs7O0FBQy9CLFFBQUEsc0JBQXdDLENBQUMsMkJBQTJCOzs7QUFDcEUsUUFBQSxTQUF5QixDQUFDLGlCQUFpQixVQUFVLGVBQU0sQ0FBQzs7RUFHdkM7O0VBQUEsSUFBZ0IsaUJBQWM7QUFBQSxVQUFBLE1BQUE7O0VBQTlCLElBQWdCLGVBQWMsT0FBQTtBQUFBLFNBQUEsa0NBQUE7O0VBSXRCOztFQUFBLElBQWdCLFdBQVE7QUFBQSxVQUFBLE1BQUE7O0VBQXhCLElBQWdCLFNBQVEsT0FBQTtBQUFBLFNBQUEsNEJBQUE7O0VBbUI1RSxjQUFBO0FBQ0UsVUFBTztBQXhCbUQsU0FBQSxrQ0FBQSxrQkFBQSxNQUFBLDhCQUMxRCxRQUFPO0FBRzJELFNBQUEsNkJBQUEsa0JBQUEsTUFBQSxrQ0FBQSxFQUFBLGtCQUFBLE1BQUEsd0JBRWhELFNBQVE7QUFNcEIsUUFBQSxnQ0FBNEIsa0JBQUEsTUFBQSw0QkFBQSxFQUFHLElBQUksaUJBQWlCLE1BQU07SUFDaEUsUUFBUTtJQUNSLGFBQWE7SUFDYixnQkFBZ0IsaUJBQWlCLEtBQUssc0JBQXNCLENBQUE7SUFDN0QsQ0FBQztBQUdNLFFBQUEsOEJBQXVDO0FBQ3JDLFFBQUEsaUJBQXlCO0FBQ2hCLFFBQUEsV0FBbUI7O0FBbUg5QixRQUFBLHdCQUF3QixVQUE2QjtBQUMzRCxRQUFJLEtBQUssbUJBQW1CLFFBQzFCO0FBR0YsU0FBSyw4QkFDSCxDQUFDLENBQUMsS0FBSyxrQkFBa0IsTUFBTSxjQUFjLENBQUMsU0FBUyxLQUFLLGVBQWU7OztBQUl2RSxRQUFBLHlCQUF5QixVQUE2QjtBQUM1RCxRQUNFLEtBQUssbUJBQW1CLFdBQ3hCLENBQUMsS0FBSywrQkFDTixLQUFLLGtCQUNMLENBQUMsTUFBTSxjQUFjLENBQUMsU0FBUyxLQUFLLGVBQWUsQ0FFbkQsTUFBSyxPQUFPOztBQS9IZCxRQUFLLG1CQUFtQixlQUFlLEtBQUsscUJBQXFCO0FBQ2pFLFFBQUssbUJBQW1CLGFBQWEsS0FBSyxzQkFBc0I7QUFDaEUsUUFBSyxpQkFBaUIsZ0JBQWdCLEtBQUssc0JBQXNCLEVBQUU7SUFDakUsU0FBUztJQUNULFNBQVM7SUFDVixDQUFDOzs7RUFJRyxnQkFBYTtBQUNsQixRQUFLLHNCQUNILEtBQUssc0JBQXNCLEtBQUssY0FBYyxtQkFBbUIsRUFBRSxZQUFZLE1BQU0sQ0FDdEY7O0VBR08sMEJBQXVCO0FBQy9CLFVBQU8sd0JBQXdCLE1BQU0sa0NBQWtDOztFQUcvRCxnQkFBYTtHQUNyQixNQUFNLGlCQUFpQixLQUFLLGlCQUFpQjtBQUU3QyxtQkFBZ0IsU0FBUyxHQUFHLEVBQUU7QUFDOUIsUUFBSyxRQUFRO0FBQ2IsUUFBSyxlQUFlO0FBRXBCLFFBQUssZ0JBQWdCLFlBQVk7QUFDakMsT0FBSSxDQUFDLEtBQUsscUJBRVIsTUFBSyxvQkFBb0IsT0FBTztBQUVsQyxRQUFLLHVCQUF1QixPQUFPO0FBQ25DLFFBQUssb0JBQW9CLFVBQVU7QUFDbkMsT0FBSSxlQUNGLE1BQUssNkJBQTZCLGtCQUFrQjtBQUV0RCxRQUFLLG9DQUFvQztBQUV6QyxPQUFJLENBQUMsWUFBWSxPQUNmLE1BQUssY0FBYyxjQUFjO0FBRW5DLFFBQUssMkJBQTJCLFlBQVk7QUFDNUMsUUFBSyxtQkFBbUI7SUFDdEIsYUFBYSxLQUFLO0lBQ2xCLGFBQWEsS0FBSztJQUNuQixDQUFDOztFQUdNLGdCQUFhO0FBQ3JCLFFBQUssUUFBUTtBQUNiLFFBQUssZ0JBQWdCLFVBQVU7QUFDL0IsUUFBSyxvQkFBb0IscUJBQXFCO0FBQzlDLFFBQUssb0JBQW9CLFVBQVU7QUFFbkMsb0JBQWlCLEtBQUssZUFBZSxDQUFDO0dBRXRDLE1BQU0saUJBQWlCLEtBQUssaUJBQWlCO0FBQzdDLE9BQUksZUFDRixNQUFLLDZCQUE2QixRQUFRLGVBQWU7QUFFM0QsUUFBSyxtQkFBbUI7O0VBR1AsYUFBYSxtQkFBdUM7QUFDckUsU0FBTSxhQUFhLGtCQUFrQjtBQUdyQyxPQUFJLEtBQUssT0FDUCxNQUFLLGVBQWU7QUFHdEIsUUFBSyxvQkFBb0I7O0VBR1IsV0FBVyxtQkFBdUM7QUFDbkUsU0FBTSxXQUFXLGtCQUFrQjtBQUVuQyxPQUFJLGtCQUFrQixJQUFJLFdBQVcsQ0FDbkMsTUFBSyxvQkFBb0I7O0VBSXJCLG9CQUFpQjtBQUN2QixRQUFLLG9CQUFvQjtBQUN6QixRQUFLLDRCQUE0Qjs7RUFHM0IscUJBQWtCO0dBQ3hCLE1BQU0sY0FBYyxLQUFLLGdCQUFnQixtQkFBbUI7R0FDNUQsTUFBTSxjQUFjLEtBQUssZ0JBQWdCLDBCQUEwQjtBQUVuRSxPQUFJLFlBQ0YsYUFBWSxXQUFXLEtBQUs7QUFHOUIsT0FBSSxZQUNGLGFBQVksV0FBVyxLQUFLOztFQUl4Qiw2QkFBMEI7R0FDaEMsTUFBTSw4QkFDSixLQUFLLGNBQ0gsa0dBQ0QsS0FBSztBQUVSLFFBQUssWUFBWSw0QkFBNEIsNEJBQTRCOztFQXlCbkUsdUJBQW9CO0dBQzFCLE1BQU0saUJBQWlCLEtBQUssaUJBQWlCO0FBQzdDLFFBQUssWUFBWSxlQUFlLGdCQUFnQixhQUFhLEtBQUssRUFBRTtBQUNwRSxRQUFLLFlBQ0gsa0JBQ0MsZ0JBQWdCLGFBQWEsTUFBTSxnQkFBZ0IsZ0JBQWdCLE1BQ2pFLGdCQUFnQixnQkFBZ0IsR0FDcEM7O0VBR0ssa0JBQWU7QUFDckIsVUFBTyxLQUFLLGNBQWMscUJBQXFCOztFQUk5Qix5QkFBeUIsU0FBcUM7O0FBRS9FLFVBQU8sS0FBSyxjQUNWLElBQUkscUJBQW9CLGVBQWU7SUFDckMsWUFBWTtJQUNaLGdCQUFnQixLQUFLO0lBQ3JCLGFBQWEsS0FBSztJQUNsQixRQUFRLEtBQUs7SUFDZCxDQUFDLENBQ0g7O0VBSWdCLG1CQUFtQixTQUFxQzs7QUFFekUsVUFBTyxLQUFLLGNBQ1YsSUFBSSxxQkFBb0IsU0FBUztJQUMvQixnQkFBZ0IsS0FBSztJQUNyQixhQUFhLEtBQUs7SUFDbEIsUUFBUSxLQUFLO0lBQ2QsQ0FBQyxDQUNIOztFQUdnQixTQUFNO0FBQ3ZCLFVBQU8sTUFBSTs7OzBCQUdXLEtBQUssc0JBQUE7O1lBRW5CLEtBQUssT0FBa0IsS0FBSyxpQkFBaUIsR0FBc0IsQ0FBQTs7O3NCQUd6RCxVQUFpQixLQUFLLDRCQUE0QixNQUFNLENBQUE7OztzQ0FHeEMsS0FBSyxtQkFBbUIsQ0FBQSJ9
@@ -2,7 +2,7 @@ import { t as SbbDialogActionsElement } from "./dialog-actions.component-DErVa4W
2
2
  import { t as SbbDialogCloseButtonElement } from "./dialog-close-button.component-CxtWzXR4.js";
3
3
  import { t as SbbDialogContentElement } from "./dialog-content.component-B3VB2ptp.js";
4
4
  import { t as SbbDialogTitleElement } from "./dialog-title.component-CNMzIUB2.js";
5
- import { n as SbbDialogElement, r as assignDialogResult, t as SbbDialogCloseEvent } from "./dialog.component-BYVTZAUU.js";
5
+ import { n as SbbDialogElement, r as assignDialogResult, t as SbbDialogCloseEvent } from "./dialog.component-B4cZfRCl.js";
6
6
  import "./dialog.pure.js";
7
7
  //#region src/elements/dialog.ts
8
8
  /** @entrypoint */
@@ -2,5 +2,5 @@ import { t as SbbDialogActionsElement } from "./dialog-actions.component-DErVa4W
2
2
  import { t as SbbDialogCloseButtonElement } from "./dialog-close-button.component-CxtWzXR4.js";
3
3
  import { t as SbbDialogContentElement } from "./dialog-content.component-B3VB2ptp.js";
4
4
  import { t as SbbDialogTitleElement } from "./dialog-title.component-CNMzIUB2.js";
5
- import { n as SbbDialogElement, r as assignDialogResult, t as SbbDialogCloseEvent } from "./dialog.component-BYVTZAUU.js";
5
+ import { n as SbbDialogElement, r as assignDialogResult, t as SbbDialogCloseEvent } from "./dialog.component-B4cZfRCl.js";
6
6
  export { SbbDialogActionsElement, SbbDialogCloseButtonElement, SbbDialogCloseEvent, SbbDialogContentElement, SbbDialogElement, SbbDialogTitleElement, assignDialogResult };
@@ -1 +1 @@
1
- {"version":3,"file":"header.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/header/header/header.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,KAAK,CAAC;AAGb,OAAO,EAML,UAAU,EAEX,MAAM,eAAe,CAAC;AAMvB;;;;;;GAMG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C,gBAAgC,WAAW,EAAE,MAAM,CAAgB;IACnE,OAAuB,MAAM,EAAE,cAAc,CAAuC;IAEpF,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAA0B;IAC7D,OAAO,CAAC,MAAM,CAAC,eAAe,CAA+B;IAU7D;;;OAGG;IACH,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C;;;;OAIG;IACH,SAEgB,YAAY,EAAE,WAAW,GAAG,IAAI,CAAQ;IAExD,yDAAyD;IACzD,SAEgB,YAAY,EAAE,OAAO,CAAS;IAE9C;;;OAGG;IACH,SAA6C,IAAI,EAAE,GAAG,GAAG,GAAG,CAAwB;IAE3E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IAE9C,OAAO,CAAC,cAAc,CAA4C;IAClE,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,yBAAyB,CAA4B;;IAO7D,OAAO,CAAC,MAAM,CAAC,+BAA+B;IA2B9C,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAM1C,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAQzC,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAgBpC,gGAAgG;IAChF,iBAAiB,IAAI,IAAI;IAQzC,2DAA2D;IAC3C,oBAAoB,IAAI,IAAI;IAO5B,aAAa,CAC3B,IAAI,CAAC,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;cAQY,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAK9E,OAAO,CAAC,qBAAqB;IAuB7B,wDAAwD;IACxD,OAAO,CAAC,kBAAkB;IAI1B,2DAA2D;IAC3D,OAAO,CAAC,yBAAyB;IAOjC;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IA8CvB,uEAAuE;IACvE,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,kBAAkB;cAgBP,MAAM,IAAI,cAAc;CAS5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,YAAY,EAAE,gBAAgB,CAAC;KAChC;CACF"}
1
+ {"version":3,"file":"header.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/header/header/header.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,KAAK,CAAC;AAGb,OAAO,EAML,UAAU,EAEX,MAAM,eAAe,CAAC;AAMvB;;;;;;GAMG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C,gBAAgC,WAAW,EAAE,MAAM,CAAgB;IACnE,OAAuB,MAAM,EAAE,cAAc,CAAuC;IAEpF,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAA0B;IAC7D,OAAO,CAAC,MAAM,CAAC,eAAe,CAA+B;IAU7D;;;OAGG;IACH,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C;;;;OAIG;IACH,SAEgB,YAAY,EAAE,WAAW,GAAG,IAAI,CAAQ;IAExD,yDAAyD;IACzD,SAEgB,YAAY,EAAE,OAAO,CAAS;IAE9C;;;OAGG;IACH,SAA6C,IAAI,EAAE,GAAG,GAAG,GAAG,CAAwB;IAE3E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IAE9C,OAAO,CAAC,cAAc,CAA4C;IAClE,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,yBAAyB,CAA4B;;IAO7D,OAAO,CAAC,MAAM,CAAC,+BAA+B;IA2B9C,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAM1C,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAQzC,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAgBpC,gGAAgG;IAChF,iBAAiB,IAAI,IAAI;IAQzC,2DAA2D;IAC3C,oBAAoB,IAAI,IAAI;IAO5B,aAAa,CAC3B,IAAI,CAAC,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;cAQY,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAK9E,OAAO,CAAC,qBAAqB;IAuB7B,wDAAwD;IACxD,OAAO,CAAC,kBAAkB;IAI1B,2DAA2D;IAC3D,OAAO,CAAC,yBAAyB;IAOjC;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IA8CvB,uEAAuE;IACvE,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,kBAAkB;cAiBP,MAAM,IAAI,cAAc;CAS5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,YAAY,EAAE,gBAAgB,CAAC;KAChC;CACF"}
@@ -1,2 +1,2 @@
1
- import { t as SbbHeaderElement } from "../../header.component-Hfgz9sSb.js";
1
+ import { t as SbbHeaderElement } from "../../header.component-B2T2pmHs.js";
2
2
  export { SbbHeaderElement };
@@ -314,8 +314,7 @@ var SbbHeaderElement = (() => {
314
314
  if (this.matches(":is(:state(has-visible-focus-within),[state--has-visible-focus-within])")) return;
315
315
  const overlayTriggers = Array.from(this.querySelectorAll(IS_MENU_OPENED_QUERY));
316
316
  for (const overlayTrigger of overlayTriggers) {
317
- const overlayId = overlayTrigger.getAttribute("aria-controls");
318
- const overlay = document.getElementById(overlayId);
317
+ const overlay = overlayTrigger.ariaControlsElements[0];
319
318
  if (typeof overlay?.close === "function") overlay.close();
320
319
  }
321
320
  }
@@ -333,4 +332,4 @@ var SbbHeaderElement = (() => {
333
332
  //#endregion
334
333
  export { SbbHeaderElement as t };
335
334
 
336
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC1IZmd6OXNTYi5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvaGVhZGVyL2hlYWRlci9oZWFkZXIuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvaGVhZGVyL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgLS1zYmItbG9nby1oZWlnaHQ6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgxNil9O1xuICAtLXNiYi1zaWduZXQtaGVpZ2h0OiAje3NiYi5weC10by1yZW0tYnVpbGQoMTYpfTtcbiAgLS1zYmItaGVhZGVyLXRyYW5zaXRpb24tZHVyYXRpb246IHZhcihcbiAgICAtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbixcbiAgICB2YXIoLS1zYmItYW5pbWF0aW9uLWR1cmF0aW9uLTZ4KVxuICApO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICAtLXNiYi1sb2dvLWhlaWdodDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDIwKX07XG4gICAgLS1zYmItc2lnbmV0LWhlaWdodDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDIwKX07XG4gIH1cblxuICBkaXNwbGF5OiBibG9jaztcblxuICAvLyBTZXR0aW5nIHRoZSBoZWlnaHQgaGVyZSByZXNlcnZlcyB0aGUgc3BhY2UgZm9yIHRoZSBoZWFkZXIgd2hpY2ggd2lsbCBlbHNlIGJlIGxvc3Qgd2l0aCBmaXhlZCBwb3NpdGlvbi5cbiAgaGVpZ2h0OiB2YXIoLS1zYmItaGVhZGVyLWhlaWdodCk7XG59XG5cbjpob3N0KFtzaXplPSdzJ10pIHtcbiAgOjpzbG90dGVkKDppcyhzYmItaGVhZGVyLWJ1dHRvbiwgc2JiLWhlYWRlci1saW5rKSkge1xuICAgIC0tc2JiLWhlYWRlci1hY3Rpb24tbWluLWhlaWdodDogdmFyKC0tc2JiLXNpemUtZWxlbWVudC14cyk7XG4gICAgLS1zYmItaGVhZGVyLWFjdGlvbi1wYWRkaW5nLWlubGluZTogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtNHgpO1xuICB9XG59XG5cbjpob3N0KFtoaWRlLW9uLXNjcm9sbF0pIHtcbiAgLS1zYmItaGVhZGVyLXBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuOmhvc3QoW2hpZGUtb24tc2Nyb2xsXTpzdGF0ZShmaXhlZCkpIHtcbiAgLS1zYmItaGVhZGVyLXBvc2l0aW9uOiBmaXhlZDtcbiAgLS1zYmItaGVhZGVyLWFuaW1hdGlvbi1uYW1lOiBoaWRlO1xuICAtLXNiYi1oZWFkZXItdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gIC0tc2JiLWhlYWRlci1pbnNldC1pbmxpbmUtZW5kOiB2YXIoLS1zYmItc2Nyb2xsYmFyLXdpZHRoLCAwKTtcbn1cblxuOmhvc3QoW2hpZGUtb24tc2Nyb2xsXTpzdGF0ZShmaXhlZCk6c3RhdGUoYW5pbWF0ZWQpKSB7XG4gIC8vIEhpZGUgdHJhbnNpdGlvblxuICAtLXNiYi1oZWFkZXItdHJhbnNpdGlvbi10aW1pbmc6IGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xufVxuXG46aG9zdChbaGlkZS1vbi1zY3JvbGxdOnN0YXRlKGZpeGVkKTpzdGF0ZSh2aXNpYmxlKSkge1xuICAtLXNiYi1oZWFkZXItYW5pbWF0aW9uLW5hbWU6IHNob3c7XG4gIC0tc2JiLWhlYWRlci10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuXG4gIC8vIFNob3cgdHJhbnNpdGlvblxuICAtLXNiYi1oZWFkZXItdHJhbnNpdGlvbi10aW1pbmc6IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xufVxuXG46aG9zdChbaGlkZS1vbi1zY3JvbGxdOnN0YXRlKGZpeGVkKTpzdGF0ZShoYXMtdmlzaWJsZS1mb2N1cy13aXRoaW4pKSB7XG4gIC0tc2JiLWhlYWRlci10cmFuc2l0aW9uLWR1cmF0aW9uOiAwO1xuICAtLXNiYi1oZWFkZXItdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbn1cblxuLnNiYi1oZWFkZXIge1xuICBwb3NpdGlvbjogdmFyKC0tc2JiLWhlYWRlci1wb3NpdGlvbik7XG4gIGluc2V0OiAwIHZhcigtLXNiYi1oZWFkZXItaW5zZXQtaW5saW5lLWVuZCkgYXV0byAwO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1zYmItaGVhZGVyLWJhY2tncm91bmQpO1xuICB6LWluZGV4OiB2YXIoLS1zYmItaGVhZGVyLXotaW5kZXgsIDEwKTtcbiAgdHJhbnNmb3JtOiB2YXIoLS1zYmItaGVhZGVyLXRyYW5zZm9ybSk7XG4gIHRyYW5zaXRpb246IHtcbiAgICBwcm9wZXJ0eTogYm94LXNoYWRvdztcbiAgICBkdXJhdGlvbjogdmFyKC0tc2JiLWhlYWRlci10cmFuc2l0aW9uLWR1cmF0aW9uKTtcbiAgICB0aW1pbmctZnVuY3Rpb246IHZhcigtLXNiYi1oZWFkZXItdHJhbnNpdGlvbi10aW1pbmcpO1xuICB9XG4gIGFuaW1hdGlvbjoge1xuICAgIG5hbWU6IHZhcigtLXNiYi1oZWFkZXItYW5pbWF0aW9uLW5hbWUpO1xuICAgIGR1cmF0aW9uOiB2YXIoLS1zYmItaGVhZGVyLXRyYW5zaXRpb24tZHVyYXRpb24pO1xuICAgIHRpbWluZy1mdW5jdGlvbjogdmFyKC0tc2JiLWhlYWRlci10cmFuc2l0aW9uLXRpbWluZyk7XG4gIH1cblxuICA6aG9zdCg6aXMoOnN0YXRlKHNoYWRvdyksIDpzdGF0ZShoYXMtdmlzaWJsZS1mb2N1cy13aXRoaW4pOnN0YXRlKGZpeGVkKSkpICYge1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNiYi1oZWFkZXItYm94LXNoYWRvdyk7XG4gIH1cblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgYm9yZGVyLWJsb2NrLWVuZDogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0xeCkgc29saWQgQ2FudmFzVGV4dDtcbiAgfVxufVxuXG4uc2JiLWhlYWRlcl9fd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgaGVpZ2h0OiB2YXIoLS1zYmItaGVhZGVyLWhlaWdodCk7XG5cbiAgOmhvc3QoOm5vdChbZXhwYW5kZWRdKSkgJiB7XG4gICAgQGluY2x1ZGUgc2JiLnBhZ2Utc3BhY2luZztcbiAgfVxuXG4gIDpob3N0KFtleHBhbmRlZF0pICYge1xuICAgIEBpbmNsdWRlIHNiYi5wYWdlLXNwYWNpbmctZXhwYW5kZWQ7XG4gIH1cbn1cblxuLy8gRml4IGxlZnQgb2Zmc2V0IGlmIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGhlYWRlciBpcyBhIHNiYi1oZWFkZXItYnV0dG9uL3NiYi1oZWFkZXItbGluay5cbi8vIFRoZSB2YWx1ZSBvZiB0aGUgb2Zmc2V0IGlzIGNhbGN1bGF0ZWQgaW5zaWRlIHNiYi1oZWFkZXItYnV0dG9uL3NiYi1oZWFkZXItbGluayBzdHlsZXMuXG46OnNsb3R0ZWQoOmlzKHNiYi1oZWFkZXItYnV0dG9uLCBzYmItaGVhZGVyLWxpbmspOmZpcnN0LWNoaWxkKSB7XG4gIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IHZhcigtLXNiYi1oZWFkZXItZmlyc3QtaXRlbS1tYXJnaW4taW5saW5lLXN0YXJ0KTtcbn1cblxuOjpzbG90dGVkKCopIHtcbiAgZmxleDogMCAwIGF1dG87XG59XG5cbjo6c2xvdHRlZCguc2JiLWhlYWRlci1zaHJpbmthYmxlKSB7XG4gIGZsZXgtc2hyaW5rOiAxO1xuICBtaW4td2lkdGg6IDA7XG59XG5cbjo6c2xvdHRlZCguc2JiLWhlYWRlci1zcGFjZXIpIHtcbiAgZmxleC1ncm93OiAxO1xufVxuXG46OnNsb3R0ZWQoLnNiYi1oZWFkZXItbG9nbykge1xuICBtYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXMpO1xufVxuXG4vLyBBcHBseSBwYWRkaW5nIGFuZCBvdXRsaW5lIHRvIHBvc3NpYmxlIHNsb3R0ZWQgbGluayBpbiBsb2dvIHNsb3Rcbjo6c2xvdHRlZChhLnNiYi1oZWFkZXItbG9nbykge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZy1ibG9jazogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtM3gpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLy8gVXNlICFpbXBvcnRhbnQgaGVyZSB0byBub3QgaW50ZXJmZXJlIHdpdGggRmlyZWZveCBmb2N1cyByaW5nIGRlZmluaXRpb25cbiAgLy8gd2hpY2ggYXBwZWFycyBpbiBub3JtYWxpemUgQ1NTIG9mIHNldmVyYWwgZnJhbWV3b3Jrcy5cbiAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vLyBUbyBzaG93IHRoZSBjb3JyZWN0IG91dGxpbmUsIHdlIG5lZWQgdG8gc3BhbiBhIGhpZGRlbiBlbGVtZW50IGZpbGxpbmcgdGhlIGxpbmsgYnV0IHdpdGhvdXQgdGhlIG91dGxpbmUtb2Zmc2V0LlxuOjpzbG90dGVkKGEuc2JiLWhlYWRlci1sb2dvKTo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0zeCkgMDtcbn1cblxuOjpzbG90dGVkKGEuc2JiLWhlYWRlci1sb2dvOmZvY3VzLXZpc2libGUpOjpiZWZvcmUge1xuICBAaW5jbHVkZSBzYmIuZm9jdXMtb3V0bGluZTtcblxuICBvdXRsaW5lLW9mZnNldDogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtM3gpO1xuXG4gIC8vIEFzIGlmIHRoZSBvdXRsaW5lIGhhcyBhbiBvZmZzZXQsIHRoZSBib3JkZXIgcmFkaXVzIGluY3JlYXNlcywgd2Ugc2V0IGl0IHRvIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBib3JkZXItcmFkaXVzLlxuICBib3JkZXItcmFkaXVzOiAxcHg7XG59XG5cbkBrZXlmcmFtZXMgc2hvdyB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBoaWRlIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgaXNTZXJ2ZXIsXG4gIHR5cGUgUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbiAgdW5zYWZlQ1NTLFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQge1xuICBib3hTaXppbmdTdHlsZXMsXG4gIGZvcmNlVHlwZSxcbiAgaWRSZWZlcmVuY2UsXG4gIGlzTGVhbixcbiAgcXVldWVEb21Db250ZW50TG9hZGVkLFxuICBTYmJFbGVtZW50LFxuICBTYmJGb2N1c1Zpc2libGVXaXRoaW5Db250cm9sbGVyLFxufSBmcm9tICcuLi8uLi9jb3JlLnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vaGVhZGVyLnNjc3M/aW5saW5lJztcblxuY29uc3QgSVNfTUVOVV9PUEVORURfUVVFUlkgPSBcIlthcmlhLWNvbnRyb2xzXVthcmlhLWV4cGFuZGVkPSd0cnVlJ11cIjtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIGhlYWRlciBzZWN0aW9uIGZvciB0aGUgcGFnZS5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBhY3Rpb25zLCBjb250ZW50IGFuZCBsb2dvIHRvIHRoZSBoZWFkZXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItaGVhZGVyLXotaW5kZXg9MTBdIC0gQ2FuIGJlIHVzZWQgdG8gbW9kaWZ5IHRoZSB6LWluZGV4IG9mIHRoZSBoZWFkZXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItaGVhZGVyLWhlaWdodD16ZXJvLXNtYWxsOnZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTE0eCk7bGFyZ2UtdWx0cmE6dmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMjR4KV0gLSBDYW4gYmUgdXNlZCB0byBtb2RpZnkgaGVpZ2h0IG9mIHRoZSBoZWFkZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJIZWFkZXJFbGVtZW50IGV4dGVuZHMgU2JiRWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItaGVhZGVyJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2hlYWRlclNjcm9sbE9yaWdpbnMgPSBuZXcgU2V0PEhUTUxFbGVtZW50PigpO1xuICBwcml2YXRlIHN0YXRpYyBfaGVhZGVyRWxlbWVudHMgPSBuZXcgU2V0PFNiYkhlYWRlckVsZW1lbnQ+KCk7XG5cbiAgc3RhdGljIHtcbiAgICBpZiAoIWlzU2VydmVyKSB7XG4gICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGJsb2NrIGV4ZWN1dGlvbiBmb3IgaW5pdGlhbGl6YXRpb24sXG4gICAgICAvLyBzbyB3ZSBkZWZlciBpdCB1bnRpbCB0aGUgRE9NIGNvbnRlbnQgaXMgbG9hZGVkLlxuICAgICAgcXVldWVEb21Db250ZW50TG9hZGVkKCgpID0+IHRoaXMuX2luaXRpYWxpemVTY3JvbGxPcmlnaW5PYnNlcnZlcigpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBhbGxvdyB0aGUgaGVhZGVyIGNvbnRlbnQgdG8gc3RyZXRjaCB0byBmdWxsIHdpZHRoLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgY29udGVudCBoYXMgdGhlIGFwcHJvcHJpYXRlIHBhZ2Ugc2l6ZS5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBleHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCdzIGlkIG9yIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRoZSBzY3JvbGwgbGlzdGVuZXIgaXMgYXR0YWNoZWQuXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnc2Nyb2xsLW9yaWdpbicgfSlcbiAgcHVibGljIGFjY2Vzc29yIHNjcm9sbE9yaWdpbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKiogV2hldGhlciB0aGUgaGVhZGVyIHNob3VsZCBoaWRlIGFuZCBzaG93IG9uIHNjcm9sbC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2hpZGUtb24tc2Nyb2xsJywgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgaGlkZU9uU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNpemUgb2YgdGhlIGhlYWRlciwgZWl0aGVyIG0gb3Igcy5cbiAgICogQGRlZmF1bHQgJ20nIC8gJ3MnIChsZWFuKVxuICAgKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgYWNjZXNzb3Igc2l6ZTogJ20nIHwgJ3MnID0gaXNMZWFuKCkgPyAncycgOiAnbSc7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfaGVhZGVyT25Ub3AgPSB0cnVlO1xuXG4gIHByaXZhdGUgX3Njcm9sbEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgRG9jdW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9zY3JvbGxFdmVudHNDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9zY3JvbGxGdW5jdGlvbjogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9sYXN0U2Nyb2xsID0gMDtcbiAgcHJpdmF0ZSBfc2Nyb2xsT3JpZ2luRnJvbU9ic2VydmVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkQ29udHJvbGxlcihuZXcgU2JiRm9jdXNWaXNpYmxlV2l0aGluQ29udHJvbGxlcih0aGlzKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfaW5pdGlhbGl6ZVNjcm9sbE9yaWdpbk9ic2VydmVyKCk6IHZvaWQge1xuICAgIC8vIFdlIGFyZSB1c2luZyBNdXRhdGlvbk9ic2VydmVyIGRpcmVjdGx5IGhlcmUsIGFzIGl0IHdpbGwgb25seSBiZSBjYWxsZWQgb24gY2xpZW50IHNpZGUsXG4gICAgLy8gYW5kIHdlIGRvIG5vdCBuZWVkIHRvIGRpc2Nvbm5lY3QgaXQsIGFzIHdlIHdhbnQgaXQgdG8gd29yayBkdXJpbmcgdGhlIGZ1bGwgbGlmZXRpbWVcbiAgICAvLyBvZiB0aGUgcGFnZS5cbiAgICBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBpZiAobXV0YXRpb24udHlwZSA9PT0gJ2F0dHJpYnV0ZXMnKSB7XG4gICAgICAgICAgdGhpcy5faGFuZGxlU2Nyb2xsT3JpZ2luRWxlbWVudChtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKG11dGF0aW9uLnR5cGUgPT09ICdjaGlsZExpc3QnKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIFsuLi5tdXRhdGlvbi5hZGRlZE5vZGVzLCAuLi5tdXRhdGlvbi5yZW1vdmVkTm9kZXNdLmZpbHRlcihcbiAgICAgICAgICAgIChuKTogbiBpcyBIVE1MRWxlbWVudCA9PiBuLm5vZGVUeXBlID09PSBuLkVMRU1FTlRfTk9ERSxcbiAgICAgICAgICApKSB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVTY3JvbGxPcmlnaW5FbGVtZW50KG5vZGUpO1xuICAgICAgICAgICAgdGhpcy5fZmluZEFuZEhhbmRsZVNjcm9sbE9yaWdpbnMobm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLl91cGRhdGVIZWFkZXJFbGVtZW50cygpO1xuICAgIH0pLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB7XG4gICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnc2JiLWhlYWRlci1zY3JvbGwtb3JpZ2luJ10sXG4gICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMuX2ZpbmRBbmRIYW5kbGVTY3JvbGxPcmlnaW5zKGRvY3VtZW50LmJvZHkpO1xuICAgIHRoaXMuX3VwZGF0ZUhlYWRlckVsZW1lbnRzKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfZmluZEFuZEhhbmRsZVNjcm9sbE9yaWdpbnMocm9vdDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICByb290XG4gICAgICAucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJ1tzYmItaGVhZGVyLXNjcm9sbC1vcmlnaW5dJylcbiAgICAgIC5mb3JFYWNoKChlKSA9PiB0aGlzLl9oYW5kbGVTY3JvbGxPcmlnaW5FbGVtZW50KGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIF9oYW5kbGVTY3JvbGxPcmlnaW5FbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKGVsZW1lbnQuaXNDb25uZWN0ZWQgJiYgZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3NiYi1oZWFkZXItc2Nyb2xsLW9yaWdpbicpKSB7XG4gICAgICB0aGlzLl9oZWFkZXJTY3JvbGxPcmlnaW5zLmFkZChlbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faGVhZGVyU2Nyb2xsT3JpZ2lucy5kZWxldGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX3VwZGF0ZUhlYWRlckVsZW1lbnRzKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgaGVhZGVyIG9mIHRoaXMuX2hlYWRlckVsZW1lbnRzKSB7XG4gICAgICBpZiAodGhpcy5faGVhZGVyU2Nyb2xsT3JpZ2lucy5zaXplID09PSAwKSB7XG4gICAgICAgIGhlYWRlci5fc2Nyb2xsT3JpZ2luRnJvbU9ic2VydmVyID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5faGVhZGVyU2Nyb2xsT3JpZ2lucy5zaXplID09PSAxKSB7XG4gICAgICAgIGhlYWRlci5fc2Nyb2xsT3JpZ2luRnJvbU9ic2VydmVyID0gdGhpcy5faGVhZGVyU2Nyb2xsT3JpZ2lucy52YWx1ZXMoKS5uZXh0KCkudmFsdWUgPz8gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhlYWRlci5fc2Nyb2xsT3JpZ2luRnJvbU9ic2VydmVyID1cbiAgICAgICAgICBBcnJheS5mcm9tKHRoaXMuX2hlYWRlclNjcm9sbE9yaWdpbnMpXG4gICAgICAgICAgICAuc29ydCgoYzEsIGMyKSA9PiBjMS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihjMikgJiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5TKVxuICAgICAgICAgICAgLmF0KC0xKSA/PyBudWxsO1xuICAgICAgfVxuICAgICAgaGVhZGVyLl91cGRhdGVTY3JvbGxMaXN0ZW5lcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBJZiBgaGlkZU9uU2Nyb2xsYCBpcyBzZXQsIGNoZWNrcyB0aGUgZWxlbWVudCB0byBob29rIHRoZSBsaXN0ZW5lciBvbiwgYW5kIHBvc3NpYmx5IGFkZCBpdC4qL1xuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBTYmJIZWFkZXJFbGVtZW50Ll9oZWFkZXJFbGVtZW50cy5hZGQodGhpcyk7XG4gICAgaWYgKHRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgdGhpcy5fdXBkYXRlU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG4gIH1cblxuICAvKiogUmVtb3ZlcyB0aGUgc2Nyb2xsIGxpc3RlbmVyLCBpZiBwcmV2aW91c2x5IGF0dGFjaGVkLiAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9zY3JvbGxFbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLl9zY3JvbGxFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIFNiYkhlYWRlckVsZW1lbnQuX2hlYWRlckVsZW1lbnRzLmRlbGV0ZSh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFpc1NlcnZlciAmJiAoIW5hbWUgfHwgbmFtZSA9PT0gJ3Njcm9sbE9yaWdpbicpICYmIHRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgdGhpcy5fdXBkYXRlU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgdGhpcy5fdXBkYXRlU2Nyb2xsTGlzdGVuZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVNjcm9sbExpc3RlbmVyKCk6IHZvaWQge1xuICAgIGNvbnN0IHNjcm9sbEVsZW1lbnQgPSB0aGlzLnNjcm9sbE9yaWdpbiA/PyB0aGlzLl9zY3JvbGxPcmlnaW5Gcm9tT2JzZXJ2ZXIgPz8gZG9jdW1lbnQ7XG4gICAgaWYgKHNjcm9sbEVsZW1lbnQgPT09IHRoaXMuX3Njcm9sbEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zY3JvbGxFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX3Njcm9sbEVsZW1lbnQgPSBzY3JvbGxFbGVtZW50O1xuICAgIGlmICghdGhpcy5fc2Nyb2xsRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9zY3JvbGxFdmVudHNDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX3Njcm9sbEZ1bmN0aW9uID0gdGhpcy5fZ2V0U2Nyb2xsRnVuY3Rpb24uYmluZCh0aGlzKTtcbiAgICB0aGlzLl9zY3JvbGxFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuX3Njcm9sbEZ1bmN0aW9uLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9zY3JvbGxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGN1cnJlbnRTY3JvbGwgPSB0aGlzLl9nZXRDdXJyZW50U2Nyb2xsUHJvcGVydHkoJ3Njcm9sbFRvcCcpO1xuICAgIC8vIGBjdXJyZW50U2Nyb2xsYCBjYW4gYmUgbmVnYXRpdmUsIGUuZy4gb24gbW9iaWxlOyB0aGlzIGlzIG5vdCBhbGxvd2VkLlxuICAgIHRoaXMuX2xhc3RTY3JvbGwgPSBjdXJyZW50U2Nyb2xsIDw9IDAgPyAwIDogY3VycmVudFNjcm9sbDtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBjb3JyZWN0IGZ1bmN0aW9uIHRvIGF0dGFjaCBvbiBzY3JvbGwuICovXG4gIHByaXZhdGUgX2dldFNjcm9sbEZ1bmN0aW9uKCk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLmhpZGVPblNjcm9sbCA/IHRoaXMuX3Njcm9sbExpc3RlbmVyKCkgOiB0aGlzLl9zY3JvbGxTaGFkb3dMaXN0ZW5lcigpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIHJlcXVlc3RlZCBwcm9wZXJ0eSBvZiB0aGUgc2Nyb2xsQ29udGV4dC4gKi9cbiAgcHJpdmF0ZSBfZ2V0Q3VycmVudFNjcm9sbFByb3BlcnR5KHByb3BlcnR5OiAnc2Nyb2xsVG9wJyB8ICdzY3JvbGxIZWlnaHQnKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5fc2Nyb2xsRWxlbWVudCBpbnN0YW5jZW9mIERvY3VtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2Nyb2xsRWxlbWVudC5kb2N1bWVudEVsZW1lbnRbcHJvcGVydHldIHx8IHRoaXMuX3Njcm9sbEVsZW1lbnQuYm9keVtwcm9wZXJ0eV07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zY3JvbGxFbGVtZW50Py5bcHJvcGVydHldIHx8IDA7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgYHNjcm9sbFRvcGAsIHRoZW46XG4gICAqIC0gYXBwbHkgdGhlIHNoYWRvdyBpZiB0aGUgZWxlbWVudC9kb2N1bWVudCBoYXMgYmVlbiBzY3JvbGxlZCBkb3duO1xuICAgKiAtIGhpZGVzIHRoZSBoZWFkZXIsIHJlbW92ZSB0aGUgc2hhZG93IGFuZCBwb3NzaWJseSBjbG9zZSBhbnkgb3BlbiBtZW51IG9uIHRoZSBoZWFkZXIgaWYgaXQgaXMgbm90IHZpc2libGUgYW55bW9yZTtcbiAgICogLSBzaG93cyB0aGUgaGVhZGVyIGFuZCByZS1hcHBseSB0aGUgc2hhZG93IGlmIHRoZSBlbGVtZW50L2RvY3VtZW50IGhhcyBiZWVuIHNjcm9sbGVkIHVwLlxuICAgKi9cbiAgcHJpdmF0ZSBfc2Nyb2xsTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFNjcm9sbCA9IHRoaXMuX2dldEN1cnJlbnRTY3JvbGxQcm9wZXJ0eSgnc2Nyb2xsVG9wJyk7XG5cbiAgICAvLyBXaGV0aGVyIHRoZSBzY3JvbGwgdmlldyBpcyBib3VuY2luZyBwYXN0IHRoZSBlZGdlIG9mIGNvbnRlbnQgYW5kIGJhY2sgYWdhaW4uXG4gICAgaWYgKHRoaXMuX2dldEN1cnJlbnRTY3JvbGxQcm9wZXJ0eSgnc2Nyb2xsSGVpZ2h0JykgLSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBjdXJyZW50U2Nyb2xsIDw9IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdzaGFkb3cnLCBjdXJyZW50U2Nyb2xsICE9PSAwKTtcblxuICAgIC8vIENsb3NlIG9wZW4gb3ZlcmxheXMgd2hlbiBzY3JvbGxpbmcgZG93biBpZiB0aGUgaGVhZGVyIGlzIHNjcm9sbGVkIG91dCBvZiBzaWdodC5cbiAgICBpZiAoXG4gICAgICBjdXJyZW50U2Nyb2xsID4gdGhpcy5vZmZzZXRIZWlnaHQgJiZcbiAgICAgIGN1cnJlbnRTY3JvbGwgPiAwICYmXG4gICAgICB0aGlzLl9sYXN0U2Nyb2xsIDwgY3VycmVudFNjcm9sbFxuICAgICkge1xuICAgICAgdGhpcy5fY2xvc2VPcGVuT3ZlcmxheXMoKTtcbiAgICB9XG4gICAgLy8gQ2hlY2sgaWYgdGhlIGhlYWRlciBpcyBzY3JvbGxlZCBvdXQgb2Ygc2lnaHQsIHNjcm9sbCBwb3NpdGlvbiA+IGhlYWRlciBoZWlnaHQgKiAyLlxuICAgIGlmIChjdXJyZW50U2Nyb2xsID4gdGhpcy5vZmZzZXRIZWlnaHQgKiAyKSB7XG4gICAgICB0aGlzLl9oZWFkZXJPblRvcCA9IGZhbHNlO1xuICAgICAgaWYgKGN1cnJlbnRTY3JvbGwgPiAwICYmIHRoaXMuX2xhc3RTY3JvbGwgPCBjdXJyZW50U2Nyb2xsKSB7XG4gICAgICAgIC8vIFNjcm9sbGluZyBkb3duXG4gICAgICAgIFsnc2hhZG93JywgJ3Zpc2libGUnXS5mb3JFYWNoKChuYW1lKSA9PiB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKG5hbWUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNjcm9sbGluZyB1cFxuICAgICAgICBbJ2ZpeGVkJywgJ3NoYWRvdycsICdhbmltYXRlZCcsICd2aXNpYmxlJ10uZm9yRWFjaCgobmFtZSkgPT5cbiAgICAgICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKG5hbWUpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDaGVjayBpZiBoZWFkZXIgaW4gaXRzIG9yaWdpbmFsIHBvc2l0aW9uLCBzY3JvbGwgcG9zaXRpb24gPCBoZWFkZXIgaGVpZ2h0LlxuICAgICAgLy8gUmVzZXQgaGVhZGVyIGJlaGF2aW9yIHdoZW4gc2Nyb2xsIGhpdHMgdG9wIG9mIHRoZSBwYWdlLCBvbiBzY3JvbGwgcG9zaXRpb24gPSAwLlxuICAgICAgaWYgKGN1cnJlbnRTY3JvbGwgPT09IDApIHtcbiAgICAgICAgdGhpcy5faGVhZGVyT25Ub3AgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX2hlYWRlck9uVG9wKSB7XG4gICAgICAgIFsnc2hhZG93JywgJ2FuaW1hdGVkJywgJ2ZpeGVkJywgJ3Zpc2libGUnXS5mb3JFYWNoKChuYW1lKSA9PlxuICAgICAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUobmFtZSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGBjdXJyZW50U2Nyb2xsYCBjYW4gYmUgbmVnYXRpdmUsIGUuZy4gb24gbW9iaWxlOyB0aGlzIGlzIG5vdCBhbGxvd2VkLlxuICAgIHRoaXMuX2xhc3RTY3JvbGwgPSBjdXJyZW50U2Nyb2xsIDw9IDAgPyAwIDogY3VycmVudFNjcm9sbDtcbiAgfVxuXG4gIC8qKiBBcHBseSB0aGUgc2hhZG93IGlmIHRoZSBlbGVtZW50L2RvY3VtZW50IGhhcyBiZWVuIHNjcm9sbGVkIGRvd24uICovXG4gIHByaXZhdGUgX3Njcm9sbFNoYWRvd0xpc3RlbmVyKCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ3NoYWRvdycsIHRoaXMuX2dldEN1cnJlbnRTY3JvbGxQcm9wZXJ0eSgnc2Nyb2xsVG9wJykgIT09IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VPcGVuT3ZlcmxheXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWF0Y2hlcygnOnN0YXRlKGhhcy12aXNpYmxlLWZvY3VzLXdpdGhpbiknKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvdmVybGF5VHJpZ2dlcnM6IEhUTUxFbGVtZW50W10gPSBBcnJheS5mcm9tKFxuICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsKElTX01FTlVfT1BFTkVEX1FVRVJZKSBhcyBOb2RlTGlzdE9mPEhUTUxFbGVtZW50PixcbiAgICApO1xuICAgIGZvciAoY29uc3Qgb3ZlcmxheVRyaWdnZXIgb2Ygb3ZlcmxheVRyaWdnZXJzKSB7XG4gICAgICBjb25zdCBvdmVybGF5SWQ6IHN0cmluZyA9IG92ZXJsYXlUcmlnZ2VyLmdldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycpITtcbiAgICAgIGNvbnN0IG92ZXJsYXkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvdmVybGF5SWQpIGFzIEhUTUxFbGVtZW50ICYgeyBjbG9zZTogKCkgPT4gdm9pZCB9O1xuICAgICAgaWYgKHR5cGVvZiBvdmVybGF5Py5jbG9zZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvdmVybGF5LmNsb3NlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8aGVhZGVyIGNsYXNzPVwic2JiLWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWhlYWRlcl9fd3JhcHBlclwiPlxuICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2hlYWRlcj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItaGVhZGVyJzogU2JiSGVhZGVyRWxlbWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQ3VCQSxJQUFNLHVCQUF1Qjs7Ozs7Ozs7SUFTaEIsMEJBQWdCO21CQUFTOzs7Ozs7Ozs7Ozs7Ozs7O2NBQXpCLHlCQUF5QixZQUFVOzs7MkJBbUI3QyxXQUFXLEVBQ1gsU0FBUztJQUFFLFNBQVM7SUFBTSxNQUFNO0lBQVMsQ0FBQyxDQUFBOytCQVExQyxhQUFhLEVBQ2IsU0FBUyxFQUFFLFdBQVcsaUJBQWlCLENBQUMsQ0FBQTsrQkFJeEMsV0FBVyxFQUNYLFNBQVM7SUFBRSxXQUFXO0lBQWtCLFNBQVM7SUFBTSxNQUFNO0lBQVMsQ0FBQyxDQUFBO3VCQU92RSxTQUFTLEVBQUUsU0FBUyxNQUFNLENBQUMsQ0FBQTsrQkFFM0IsT0FBTyxDQUFBO0FBdEJSLGdCQUFBLE1BQUEsTUFBQSxzQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLGNBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBUSxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVIsV0FBUTs7S0FBQTtJQUFBLFVB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
335
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC1CMlQycG1Icy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvaGVhZGVyL2hlYWRlci9oZWFkZXIuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvaGVhZGVyL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgLS1zYmItbG9nby1oZWlnaHQ6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgxNil9O1xuICAtLXNiYi1zaWduZXQtaGVpZ2h0OiAje3NiYi5weC10by1yZW0tYnVpbGQoMTYpfTtcbiAgLS1zYmItaGVhZGVyLXRyYW5zaXRpb24tZHVyYXRpb246IHZhcihcbiAgICAtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbixcbiAgICB2YXIoLS1zYmItYW5pbWF0aW9uLWR1cmF0aW9uLTZ4KVxuICApO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICAtLXNiYi1sb2dvLWhlaWdodDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDIwKX07XG4gICAgLS1zYmItc2lnbmV0LWhlaWdodDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDIwKX07XG4gIH1cblxuICBkaXNwbGF5OiBibG9jaztcblxuICAvLyBTZXR0aW5nIHRoZSBoZWlnaHQgaGVyZSByZXNlcnZlcyB0aGUgc3BhY2UgZm9yIHRoZSBoZWFkZXIgd2hpY2ggd2lsbCBlbHNlIGJlIGxvc3Qgd2l0aCBmaXhlZCBwb3NpdGlvbi5cbiAgaGVpZ2h0OiB2YXIoLS1zYmItaGVhZGVyLWhlaWdodCk7XG59XG5cbjpob3N0KFtzaXplPSdzJ10pIHtcbiAgOjpzbG90dGVkKDppcyhzYmItaGVhZGVyLWJ1dHRvbiwgc2JiLWhlYWRlci1saW5rKSkge1xuICAgIC0tc2JiLWhlYWRlci1hY3Rpb24tbWluLWhlaWdodDogdmFyKC0tc2JiLXNpemUtZWxlbWVudC14cyk7XG4gICAgLS1zYmItaGVhZGVyLWFjdGlvbi1wYWRkaW5nLWlubGluZTogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtNHgpO1xuICB9XG59XG5cbjpob3N0KFtoaWRlLW9uLXNjcm9sbF0pIHtcbiAgLS1zYmItaGVhZGVyLXBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuOmhvc3QoW2hpZGUtb24tc2Nyb2xsXTpzdGF0ZShmaXhlZCkpIHtcbiAgLS1zYmItaGVhZGVyLXBvc2l0aW9uOiBmaXhlZDtcbiAgLS1zYmItaGVhZGVyLWFuaW1hdGlvbi1uYW1lOiBoaWRlO1xuICAtLXNiYi1oZWFkZXItdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gIC0tc2JiLWhlYWRlci1pbnNldC1pbmxpbmUtZW5kOiB2YXIoLS1zYmItc2Nyb2xsYmFyLXdpZHRoLCAwKTtcbn1cblxuOmhvc3QoW2hpZGUtb24tc2Nyb2xsXTpzdGF0ZShmaXhlZCk6c3RhdGUoYW5pbWF0ZWQpKSB7XG4gIC8vIEhpZGUgdHJhbnNpdGlvblxuICAtLXNiYi1oZWFkZXItdHJhbnNpdGlvbi10aW1pbmc6IGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xufVxuXG46aG9zdChbaGlkZS1vbi1zY3JvbGxdOnN0YXRlKGZpeGVkKTpzdGF0ZSh2aXNpYmxlKSkge1xuICAtLXNiYi1oZWFkZXItYW5pbWF0aW9uLW5hbWU6IHNob3c7XG4gIC0tc2JiLWhlYWRlci10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuXG4gIC8vIFNob3cgdHJhbnNpdGlvblxuICAtLXNiYi1oZWFkZXItdHJhbnNpdGlvbi10aW1pbmc6IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xufVxuXG46aG9zdChbaGlkZS1vbi1zY3JvbGxdOnN0YXRlKGZpeGVkKTpzdGF0ZShoYXMtdmlzaWJsZS1mb2N1cy13aXRoaW4pKSB7XG4gIC0tc2JiLWhlYWRlci10cmFuc2l0aW9uLWR1cmF0aW9uOiAwO1xuICAtLXNiYi1oZWFkZXItdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbn1cblxuLnNiYi1oZWFkZXIge1xuICBwb3NpdGlvbjogdmFyKC0tc2JiLWhlYWRlci1wb3NpdGlvbik7XG4gIGluc2V0OiAwIHZhcigtLXNiYi1oZWFkZXItaW5zZXQtaW5saW5lLWVuZCkgYXV0byAwO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1zYmItaGVhZGVyLWJhY2tncm91bmQpO1xuICB6LWluZGV4OiB2YXIoLS1zYmItaGVhZGVyLXotaW5kZXgsIDEwKTtcbiAgdHJhbnNmb3JtOiB2YXIoLS1zYmItaGVhZGVyLXRyYW5zZm9ybSk7XG4gIHRyYW5zaXRpb246IHtcbiAgICBwcm9wZXJ0eTogYm94LXNoYWRvdztcbiAgICBkdXJhdGlvbjogdmFyKC0tc2JiLWhlYWRlci10cmFuc2l0aW9uLWR1cmF0aW9uKTtcbiAgICB0aW1pbmctZnVuY3Rpb246IHZhcigtLXNiYi1oZWFkZXItdHJhbnNpdGlvbi10aW1pbmcpO1xuICB9XG4gIGFuaW1hdGlvbjoge1xuICAgIG5hbWU6IHZhcigtLXNiYi1oZWFkZXItYW5pbWF0aW9uLW5hbWUpO1xuICAgIGR1cmF0aW9uOiB2YXIoLS1zYmItaGVhZGVyLXRyYW5zaXRpb24tZHVyYXRpb24pO1xuICAgIHRpbWluZy1mdW5jdGlvbjogdmFyKC0tc2JiLWhlYWRlci10cmFuc2l0aW9uLXRpbWluZyk7XG4gIH1cblxuICA6aG9zdCg6aXMoOnN0YXRlKHNoYWRvdyksIDpzdGF0ZShoYXMtdmlzaWJsZS1mb2N1cy13aXRoaW4pOnN0YXRlKGZpeGVkKSkpICYge1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNiYi1oZWFkZXItYm94LXNoYWRvdyk7XG4gIH1cblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgYm9yZGVyLWJsb2NrLWVuZDogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0xeCkgc29saWQgQ2FudmFzVGV4dDtcbiAgfVxufVxuXG4uc2JiLWhlYWRlcl9fd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgaGVpZ2h0OiB2YXIoLS1zYmItaGVhZGVyLWhlaWdodCk7XG5cbiAgOmhvc3QoOm5vdChbZXhwYW5kZWRdKSkgJiB7XG4gICAgQGluY2x1ZGUgc2JiLnBhZ2Utc3BhY2luZztcbiAgfVxuXG4gIDpob3N0KFtleHBhbmRlZF0pICYge1xuICAgIEBpbmNsdWRlIHNiYi5wYWdlLXNwYWNpbmctZXhwYW5kZWQ7XG4gIH1cbn1cblxuLy8gRml4IGxlZnQgb2Zmc2V0IGlmIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGhlYWRlciBpcyBhIHNiYi1oZWFkZXItYnV0dG9uL3NiYi1oZWFkZXItbGluay5cbi8vIFRoZSB2YWx1ZSBvZiB0aGUgb2Zmc2V0IGlzIGNhbGN1bGF0ZWQgaW5zaWRlIHNiYi1oZWFkZXItYnV0dG9uL3NiYi1oZWFkZXItbGluayBzdHlsZXMuXG46OnNsb3R0ZWQoOmlzKHNiYi1oZWFkZXItYnV0dG9uLCBzYmItaGVhZGVyLWxpbmspOmZpcnN0LWNoaWxkKSB7XG4gIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IHZhcigtLXNiYi1oZWFkZXItZmlyc3QtaXRlbS1tYXJnaW4taW5saW5lLXN0YXJ0KTtcbn1cblxuOjpzbG90dGVkKCopIHtcbiAgZmxleDogMCAwIGF1dG87XG59XG5cbjo6c2xvdHRlZCguc2JiLWhlYWRlci1zaHJpbmthYmxlKSB7XG4gIGZsZXgtc2hyaW5rOiAxO1xuICBtaW4td2lkdGg6IDA7XG59XG5cbjo6c2xvdHRlZCguc2JiLWhlYWRlci1zcGFjZXIpIHtcbiAgZmxleC1ncm93OiAxO1xufVxuXG46OnNsb3R0ZWQoLnNiYi1oZWFkZXItbG9nbykge1xuICBtYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXMpO1xufVxuXG4vLyBBcHBseSBwYWRkaW5nIGFuZCBvdXRsaW5lIHRvIHBvc3NpYmxlIHNsb3R0ZWQgbGluayBpbiBsb2dvIHNsb3Rcbjo6c2xvdHRlZChhLnNiYi1oZWFkZXItbG9nbykge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZy1ibG9jazogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtM3gpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLy8gVXNlICFpbXBvcnRhbnQgaGVyZSB0byBub3QgaW50ZXJmZXJlIHdpdGggRmlyZWZveCBmb2N1cyByaW5nIGRlZmluaXRpb25cbiAgLy8gd2hpY2ggYXBwZWFycyBpbiBub3JtYWxpemUgQ1NTIG9mIHNldmVyYWwgZnJhbWV3b3Jrcy5cbiAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vLyBUbyBzaG93IHRoZSBjb3JyZWN0IG91dGxpbmUsIHdlIG5lZWQgdG8gc3BhbiBhIGhpZGRlbiBlbGVtZW50IGZpbGxpbmcgdGhlIGxpbmsgYnV0IHdpdGhvdXQgdGhlIG91dGxpbmUtb2Zmc2V0LlxuOjpzbG90dGVkKGEuc2JiLWhlYWRlci1sb2dvKTo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0zeCkgMDtcbn1cblxuOjpzbG90dGVkKGEuc2JiLWhlYWRlci1sb2dvOmZvY3VzLXZpc2libGUpOjpiZWZvcmUge1xuICBAaW5jbHVkZSBzYmIuZm9jdXMtb3V0bGluZTtcblxuICBvdXRsaW5lLW9mZnNldDogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtM3gpO1xuXG4gIC8vIEFzIGlmIHRoZSBvdXRsaW5lIGhhcyBhbiBvZmZzZXQsIHRoZSBib3JkZXIgcmFkaXVzIGluY3JlYXNlcywgd2Ugc2V0IGl0IHRvIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBib3JkZXItcmFkaXVzLlxuICBib3JkZXItcmFkaXVzOiAxcHg7XG59XG5cbkBrZXlmcmFtZXMgc2hvdyB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBoaWRlIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgaXNTZXJ2ZXIsXG4gIHR5cGUgUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbiAgdW5zYWZlQ1NTLFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQge1xuICBib3hTaXppbmdTdHlsZXMsXG4gIGZvcmNlVHlwZSxcbiAgaWRSZWZlcmVuY2UsXG4gIGlzTGVhbixcbiAgcXVldWVEb21Db250ZW50TG9hZGVkLFxuICBTYmJFbGVtZW50LFxuICBTYmJGb2N1c1Zpc2libGVXaXRoaW5Db250cm9sbGVyLFxufSBmcm9tICcuLi8uLi9jb3JlLnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vaGVhZGVyLnNjc3M/aW5saW5lJztcblxuY29uc3QgSVNfTUVOVV9PUEVORURfUVVFUlkgPSBcIlthcmlhLWNvbnRyb2xzXVthcmlhLWV4cGFuZGVkPSd0cnVlJ11cIjtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIGhlYWRlciBzZWN0aW9uIGZvciB0aGUgcGFnZS5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBhY3Rpb25zLCBjb250ZW50IGFuZCBsb2dvIHRvIHRoZSBoZWFkZXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItaGVhZGVyLXotaW5kZXg9MTBdIC0gQ2FuIGJlIHVzZWQgdG8gbW9kaWZ5IHRoZSB6LWluZGV4IG9mIHRoZSBoZWFkZXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItaGVhZGVyLWhlaWdodD16ZXJvLXNtYWxsOnZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTE0eCk7bGFyZ2UtdWx0cmE6dmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMjR4KV0gLSBDYW4gYmUgdXNlZCB0byBtb2RpZnkgaGVpZ2h0IG9mIHRoZSBoZWFkZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJIZWFkZXJFbGVtZW50IGV4dGVuZHMgU2JiRWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItaGVhZGVyJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2hlYWRlclNjcm9sbE9yaWdpbnMgPSBuZXcgU2V0PEhUTUxFbGVtZW50PigpO1xuICBwcml2YXRlIHN0YXRpYyBfaGVhZGVyRWxlbWVudHMgPSBuZXcgU2V0PFNiYkhlYWRlckVsZW1lbnQ+KCk7XG5cbiAgc3RhdGljIHtcbiAgICBpZiAoIWlzU2VydmVyKSB7XG4gICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGJsb2NrIGV4ZWN1dGlvbiBmb3IgaW5pdGlhbGl6YXRpb24sXG4gICAgICAvLyBzbyB3ZSBkZWZlciBpdCB1bnRpbCB0aGUgRE9NIGNvbnRlbnQgaXMgbG9hZGVkLlxuICAgICAgcXVldWVEb21Db250ZW50TG9hZGVkKCgpID0+IHRoaXMuX2luaXRpYWxpemVTY3JvbGxPcmlnaW5PYnNlcnZlcigpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBhbGxvdyB0aGUgaGVhZGVyIGNvbnRlbnQgdG8gc3RyZXRjaCB0byBmdWxsIHdpZHRoLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgY29udGVudCBoYXMgdGhlIGFwcHJvcHJpYXRlIHBhZ2Ugc2l6ZS5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBleHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCdzIGlkIG9yIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRoZSBzY3JvbGwgbGlzdGVuZXIgaXMgYXR0YWNoZWQuXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnc2Nyb2xsLW9yaWdpbicgfSlcbiAgcHVibGljIGFjY2Vzc29yIHNjcm9sbE9yaWdpbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKiogV2hldGhlciB0aGUgaGVhZGVyIHNob3VsZCBoaWRlIGFuZCBzaG93IG9uIHNjcm9sbC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2hpZGUtb24tc2Nyb2xsJywgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgaGlkZU9uU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNpemUgb2YgdGhlIGhlYWRlciwgZWl0aGVyIG0gb3Igcy5cbiAgICogQGRlZmF1bHQgJ20nIC8gJ3MnIChsZWFuKVxuICAgKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgYWNjZXNzb3Igc2l6ZTogJ20nIHwgJ3MnID0gaXNMZWFuKCkgPyAncycgOiAnbSc7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfaGVhZGVyT25Ub3AgPSB0cnVlO1xuXG4gIHByaXZhdGUgX3Njcm9sbEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgRG9jdW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9zY3JvbGxFdmVudHNDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9zY3JvbGxGdW5jdGlvbjogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9sYXN0U2Nyb2xsID0gMDtcbiAgcHJpdmF0ZSBfc2Nyb2xsT3JpZ2luRnJvbU9ic2VydmVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkQ29udHJvbGxlcihuZXcgU2JiRm9jdXNWaXNpYmxlV2l0aGluQ29udHJvbGxlcih0aGlzKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfaW5pdGlhbGl6ZVNjcm9sbE9yaWdpbk9ic2VydmVyKCk6IHZvaWQge1xuICAgIC8vIFdlIGFyZSB1c2luZyBNdXRhdGlvbk9ic2VydmVyIGRpcmVjdGx5IGhlcmUsIGFzIGl0IHdpbGwgb25seSBiZSBjYWxsZWQgb24gY2xpZW50IHNpZGUsXG4gICAgLy8gYW5kIHdlIGRvIG5vdCBuZWVkIHRvIGRpc2Nvbm5lY3QgaXQsIGFzIHdlIHdhbnQgaXQgdG8gd29yayBkdXJpbmcgdGhlIGZ1bGwgbGlmZXRpbWVcbiAgICAvLyBvZiB0aGUgcGFnZS5cbiAgICBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBpZiAobXV0YXRpb24udHlwZSA9PT0gJ2F0dHJpYnV0ZXMnKSB7XG4gICAgICAgICAgdGhpcy5faGFuZGxlU2Nyb2xsT3JpZ2luRWxlbWVudChtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKG11dGF0aW9uLnR5cGUgPT09ICdjaGlsZExpc3QnKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIFsuLi5tdXRhdGlvbi5hZGRlZE5vZGVzLCAuLi5tdXRhdGlvbi5yZW1vdmVkTm9kZXNdLmZpbHRlcihcbiAgICAgICAgICAgIChuKTogbiBpcyBIVE1MRWxlbWVudCA9PiBuLm5vZGVUeXBlID09PSBuLkVMRU1FTlRfTk9ERSxcbiAgICAgICAgICApKSB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVTY3JvbGxPcmlnaW5FbGVtZW50KG5vZGUpO1xuICAgICAgICAgICAgdGhpcy5fZmluZEFuZEhhbmRsZVNjcm9sbE9yaWdpbnMobm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLl91cGRhdGVIZWFkZXJFbGVtZW50cygpO1xuICAgIH0pLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB7XG4gICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnc2JiLWhlYWRlci1zY3JvbGwtb3JpZ2luJ10sXG4gICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMuX2ZpbmRBbmRIYW5kbGVTY3JvbGxPcmlnaW5zKGRvY3VtZW50LmJvZHkpO1xuICAgIHRoaXMuX3VwZGF0ZUhlYWRlckVsZW1lbnRzKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfZmluZEFuZEhhbmRsZVNjcm9sbE9yaWdpbnMocm9vdDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICByb290XG4gICAgICAucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJ1tzYmItaGVhZGVyLXNjcm9sbC1vcmlnaW5dJylcbiAgICAgIC5mb3JFYWNoKChlKSA9PiB0aGlzLl9oYW5kbGVTY3JvbGxPcmlnaW5FbGVtZW50KGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIF9oYW5kbGVTY3JvbGxPcmlnaW5FbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKGVsZW1lbnQuaXNDb25uZWN0ZWQgJiYgZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3NiYi1oZWFkZXItc2Nyb2xsLW9yaWdpbicpKSB7XG4gICAgICB0aGlzLl9oZWFkZXJTY3JvbGxPcmlnaW5zLmFkZChlbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faGVhZGVyU2Nyb2xsT3JpZ2lucy5kZWxldGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX3VwZGF0ZUhlYWRlckVsZW1lbnRzKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgaGVhZGVyIG9mIHRoaXMuX2hlYWRlckVsZW1lbnRzKSB7XG4gICAgICBpZiAodGhpcy5faGVhZGVyU2Nyb2xsT3JpZ2lucy5zaXplID09PSAwKSB7XG4gICAgICAgIGhlYWRlci5fc2Nyb2xsT3JpZ2luRnJvbU9ic2VydmVyID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5faGVhZGVyU2Nyb2xsT3JpZ2lucy5zaXplID09PSAxKSB7XG4gICAgICAgIGhlYWRlci5fc2Nyb2xsT3JpZ2luRnJvbU9ic2VydmVyID0gdGhpcy5faGVhZGVyU2Nyb2xsT3JpZ2lucy52YWx1ZXMoKS5uZXh0KCkudmFsdWUgPz8gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhlYWRlci5fc2Nyb2xsT3JpZ2luRnJvbU9ic2VydmVyID1cbiAgICAgICAgICBBcnJheS5mcm9tKHRoaXMuX2hlYWRlclNjcm9sbE9yaWdpbnMpXG4gICAgICAgICAgICAuc29ydCgoYzEsIGMyKSA9PiBjMS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihjMikgJiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5TKVxuICAgICAgICAgICAgLmF0KC0xKSA/PyBudWxsO1xuICAgICAgfVxuICAgICAgaGVhZGVyLl91cGRhdGVTY3JvbGxMaXN0ZW5lcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBJZiBgaGlkZU9uU2Nyb2xsYCBpcyBzZXQsIGNoZWNrcyB0aGUgZWxlbWVudCB0byBob29rIHRoZSBsaXN0ZW5lciBvbiwgYW5kIHBvc3NpYmx5IGFkZCBpdC4qL1xuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBTYmJIZWFkZXJFbGVtZW50Ll9oZWFkZXJFbGVtZW50cy5hZGQodGhpcyk7XG4gICAgaWYgKHRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgdGhpcy5fdXBkYXRlU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG4gIH1cblxuICAvKiogUmVtb3ZlcyB0aGUgc2Nyb2xsIGxpc3RlbmVyLCBpZiBwcmV2aW91c2x5IGF0dGFjaGVkLiAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9zY3JvbGxFbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLl9zY3JvbGxFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIFNiYkhlYWRlckVsZW1lbnQuX2hlYWRlckVsZW1lbnRzLmRlbGV0ZSh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFpc1NlcnZlciAmJiAoIW5hbWUgfHwgbmFtZSA9PT0gJ3Njcm9sbE9yaWdpbicpICYmIHRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgdGhpcy5fdXBkYXRlU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgdGhpcy5fdXBkYXRlU2Nyb2xsTGlzdGVuZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVNjcm9sbExpc3RlbmVyKCk6IHZvaWQge1xuICAgIGNvbnN0IHNjcm9sbEVsZW1lbnQgPSB0aGlzLnNjcm9sbE9yaWdpbiA/PyB0aGlzLl9zY3JvbGxPcmlnaW5Gcm9tT2JzZXJ2ZXIgPz8gZG9jdW1lbnQ7XG4gICAgaWYgKHNjcm9sbEVsZW1lbnQgPT09IHRoaXMuX3Njcm9sbEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zY3JvbGxFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX3Njcm9sbEVsZW1lbnQgPSBzY3JvbGxFbGVtZW50O1xuICAgIGlmICghdGhpcy5fc2Nyb2xsRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9zY3JvbGxFdmVudHNDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX3Njcm9sbEZ1bmN0aW9uID0gdGhpcy5fZ2V0U2Nyb2xsRnVuY3Rpb24uYmluZCh0aGlzKTtcbiAgICB0aGlzLl9zY3JvbGxFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuX3Njcm9sbEZ1bmN0aW9uLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9zY3JvbGxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGN1cnJlbnRTY3JvbGwgPSB0aGlzLl9nZXRDdXJyZW50U2Nyb2xsUHJvcGVydHkoJ3Njcm9sbFRvcCcpO1xuICAgIC8vIGBjdXJyZW50U2Nyb2xsYCBjYW4gYmUgbmVnYXRpdmUsIGUuZy4gb24gbW9iaWxlOyB0aGlzIGlzIG5vdCBhbGxvd2VkLlxuICAgIHRoaXMuX2xhc3RTY3JvbGwgPSBjdXJyZW50U2Nyb2xsIDw9IDAgPyAwIDogY3VycmVudFNjcm9sbDtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBjb3JyZWN0IGZ1bmN0aW9uIHRvIGF0dGFjaCBvbiBzY3JvbGwuICovXG4gIHByaXZhdGUgX2dldFNjcm9sbEZ1bmN0aW9uKCk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLmhpZGVPblNjcm9sbCA/IHRoaXMuX3Njcm9sbExpc3RlbmVyKCkgOiB0aGlzLl9zY3JvbGxTaGFkb3dMaXN0ZW5lcigpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIHJlcXVlc3RlZCBwcm9wZXJ0eSBvZiB0aGUgc2Nyb2xsQ29udGV4dC4gKi9cbiAgcHJpdmF0ZSBfZ2V0Q3VycmVudFNjcm9sbFByb3BlcnR5KHByb3BlcnR5OiAnc2Nyb2xsVG9wJyB8ICdzY3JvbGxIZWlnaHQnKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5fc2Nyb2xsRWxlbWVudCBpbnN0YW5jZW9mIERvY3VtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2Nyb2xsRWxlbWVudC5kb2N1bWVudEVsZW1lbnRbcHJvcGVydHldIHx8IHRoaXMuX3Njcm9sbEVsZW1lbnQuYm9keVtwcm9wZXJ0eV07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zY3JvbGxFbGVtZW50Py5bcHJvcGVydHldIHx8IDA7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgYHNjcm9sbFRvcGAsIHRoZW46XG4gICAqIC0gYXBwbHkgdGhlIHNoYWRvdyBpZiB0aGUgZWxlbWVudC9kb2N1bWVudCBoYXMgYmVlbiBzY3JvbGxlZCBkb3duO1xuICAgKiAtIGhpZGVzIHRoZSBoZWFkZXIsIHJlbW92ZSB0aGUgc2hhZG93IGFuZCBwb3NzaWJseSBjbG9zZSBhbnkgb3BlbiBtZW51IG9uIHRoZSBoZWFkZXIgaWYgaXQgaXMgbm90IHZpc2libGUgYW55bW9yZTtcbiAgICogLSBzaG93cyB0aGUgaGVhZGVyIGFuZCByZS1hcHBseSB0aGUgc2hhZG93IGlmIHRoZSBlbGVtZW50L2RvY3VtZW50IGhhcyBiZWVuIHNjcm9sbGVkIHVwLlxuICAgKi9cbiAgcHJpdmF0ZSBfc2Nyb2xsTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFNjcm9sbCA9IHRoaXMuX2dldEN1cnJlbnRTY3JvbGxQcm9wZXJ0eSgnc2Nyb2xsVG9wJyk7XG5cbiAgICAvLyBXaGV0aGVyIHRoZSBzY3JvbGwgdmlldyBpcyBib3VuY2luZyBwYXN0IHRoZSBlZGdlIG9mIGNvbnRlbnQgYW5kIGJhY2sgYWdhaW4uXG4gICAgaWYgKHRoaXMuX2dldEN1cnJlbnRTY3JvbGxQcm9wZXJ0eSgnc2Nyb2xsSGVpZ2h0JykgLSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBjdXJyZW50U2Nyb2xsIDw9IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdzaGFkb3cnLCBjdXJyZW50U2Nyb2xsICE9PSAwKTtcblxuICAgIC8vIENsb3NlIG9wZW4gb3ZlcmxheXMgd2hlbiBzY3JvbGxpbmcgZG93biBpZiB0aGUgaGVhZGVyIGlzIHNjcm9sbGVkIG91dCBvZiBzaWdodC5cbiAgICBpZiAoXG4gICAgICBjdXJyZW50U2Nyb2xsID4gdGhpcy5vZmZzZXRIZWlnaHQgJiZcbiAgICAgIGN1cnJlbnRTY3JvbGwgPiAwICYmXG4gICAgICB0aGlzLl9sYXN0U2Nyb2xsIDwgY3VycmVudFNjcm9sbFxuICAgICkge1xuICAgICAgdGhpcy5fY2xvc2VPcGVuT3ZlcmxheXMoKTtcbiAgICB9XG4gICAgLy8gQ2hlY2sgaWYgdGhlIGhlYWRlciBpcyBzY3JvbGxlZCBvdXQgb2Ygc2lnaHQsIHNjcm9sbCBwb3NpdGlvbiA+IGhlYWRlciBoZWlnaHQgKiAyLlxuICAgIGlmIChjdXJyZW50U2Nyb2xsID4gdGhpcy5vZmZzZXRIZWlnaHQgKiAyKSB7XG4gICAgICB0aGlzLl9oZWFkZXJPblRvcCA9IGZhbHNlO1xuICAgICAgaWYgKGN1cnJlbnRTY3JvbGwgPiAwICYmIHRoaXMuX2xhc3RTY3JvbGwgPCBjdXJyZW50U2Nyb2xsKSB7XG4gICAgICAgIC8vIFNjcm9sbGluZyBkb3duXG4gICAgICAgIFsnc2hhZG93JywgJ3Zpc2libGUnXS5mb3JFYWNoKChuYW1lKSA9PiB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKG5hbWUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNjcm9sbGluZyB1cFxuICAgICAgICBbJ2ZpeGVkJywgJ3NoYWRvdycsICdhbmltYXRlZCcsICd2aXNpYmxlJ10uZm9yRWFjaCgobmFtZSkgPT5cbiAgICAgICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKG5hbWUpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDaGVjayBpZiBoZWFkZXIgaW4gaXRzIG9yaWdpbmFsIHBvc2l0aW9uLCBzY3JvbGwgcG9zaXRpb24gPCBoZWFkZXIgaGVpZ2h0LlxuICAgICAgLy8gUmVzZXQgaGVhZGVyIGJlaGF2aW9yIHdoZW4gc2Nyb2xsIGhpdHMgdG9wIG9mIHRoZSBwYWdlLCBvbiBzY3JvbGwgcG9zaXRpb24gPSAwLlxuICAgICAgaWYgKGN1cnJlbnRTY3JvbGwgPT09IDApIHtcbiAgICAgICAgdGhpcy5faGVhZGVyT25Ub3AgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX2hlYWRlck9uVG9wKSB7XG4gICAgICAgIFsnc2hhZG93JywgJ2FuaW1hdGVkJywgJ2ZpeGVkJywgJ3Zpc2libGUnXS5mb3JFYWNoKChuYW1lKSA9PlxuICAgICAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUobmFtZSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGBjdXJyZW50U2Nyb2xsYCBjYW4gYmUgbmVnYXRpdmUsIGUuZy4gb24gbW9iaWxlOyB0aGlzIGlzIG5vdCBhbGxvd2VkLlxuICAgIHRoaXMuX2xhc3RTY3JvbGwgPSBjdXJyZW50U2Nyb2xsIDw9IDAgPyAwIDogY3VycmVudFNjcm9sbDtcbiAgfVxuXG4gIC8qKiBBcHBseSB0aGUgc2hhZG93IGlmIHRoZSBlbGVtZW50L2RvY3VtZW50IGhhcyBiZWVuIHNjcm9sbGVkIGRvd24uICovXG4gIHByaXZhdGUgX3Njcm9sbFNoYWRvd0xpc3RlbmVyKCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ3NoYWRvdycsIHRoaXMuX2dldEN1cnJlbnRTY3JvbGxQcm9wZXJ0eSgnc2Nyb2xsVG9wJykgIT09IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VPcGVuT3ZlcmxheXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWF0Y2hlcygnOnN0YXRlKGhhcy12aXNpYmxlLWZvY3VzLXdpdGhpbiknKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvdmVybGF5VHJpZ2dlcnM6IEhUTUxFbGVtZW50W10gPSBBcnJheS5mcm9tKFxuICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsKElTX01FTlVfT1BFTkVEX1FVRVJZKSBhcyBOb2RlTGlzdE9mPEhUTUxFbGVtZW50PixcbiAgICApO1xuICAgIGZvciAoY29uc3Qgb3ZlcmxheVRyaWdnZXIgb2Ygb3ZlcmxheVRyaWdnZXJzKSB7XG4gICAgICBjb25zdCBvdmVybGF5ID0gb3ZlcmxheVRyaWdnZXIuYXJpYUNvbnRyb2xzRWxlbWVudHMhWzBdIGFzIEhUTUxFbGVtZW50ICYge1xuICAgICAgICBjbG9zZTogKCkgPT4gdm9pZDtcbiAgICAgIH07XG4gICAgICBpZiAodHlwZW9mIG92ZXJsYXk/LmNsb3NlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG92ZXJsYXkuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxoZWFkZXIgY2xhc3M9XCJzYmItaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItaGVhZGVyX193cmFwcGVyXCI+XG4gICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaGVhZGVyPlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1oZWFkZXInOiBTYmJIZWFkZXJFbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FDdUJBLElBQU0sdUJBQXVCOzs7Ozs7OztJQVNoQiwwQkFBZ0I7bUJBQVM7Ozs7Ozs7Ozs7Ozs7Ozs7Y0FBekIseUJBQXlCLFlBQVU7OzsyQkFtQjdDLFdBQVcsRUFDWCxTQUFTO0lBQUUsU0FBUztJQUFNLE1BQU07SUFBUyxDQUFDLENBQUE7K0JBUTFDLGFBQWEsRUFDYixTQUFTLEVBQUUsV0FBVyxpQkFBaUIsQ0FBQyxDQUFBOytCQUl4QyxXQUFXLEVBQ1gsU0FBUztJQUFFLFdBQVc7SUFBa0IsU0FBUztJQUFNLE1BQU07SUFBUyxDQUFDLENBQUE7dUJBT3ZFLFNBQVMsRUFBRSxTQUFTLE1BQU0sQ0FBQyxDQUFBOytCQUUzQixPQUFPLENBQUE7QUF0QlIsZ0JBQUEsTUFBQSxNQUFBLHNCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsY0FBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFRLE1BQUEsS0FBQSxVQUFBO0FBQUEsVUFBUixXQUFROztLQUFBO0lBQUEsVUFBQTtJQUFBLEVBQUEsd0JBQUEsNEJBQUE7QUFTeEIsZ0JBQUEsTUFBQSxNQUFBLDBCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsa0JBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBWSxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVosZUFBWTs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLDRCQUFBLGdDQUFBO0FBSzVCLGdCQUFBLE1BQUEsTUFBQSwwQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLGtCQUFBO0tBQUEsTUFBQSxRQUFBLElBQWdCO0tBQVksTUFBQSxLQUFBLFVBQUE7QUFBQSxVQUFaLGVBQVk7O0tBQUE7SUFBQSxVQUFBO0lBQUEsRUFBQSw0QkFBQSxnQ0FBQTtBQU1DLGdCQUFBLE1BQUEsTUFBQSxrQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLFVBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBSSxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQUosT0FBSTs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLG9CQUFBLHdCQUFBO0FBRXhDLGdCQUFBLE1BQUEsTUFBQSwwQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLGtCQUFBO0tBQUEsTUFBQSxRQUFBLElBQWlCO0tBQVksTUFBQSxLQUFBLFVBQUE7QUFBQSxVQUFaLGVBQVk7O0tBQUE7SUFBQSxVQUFBO0lBQUEsRUFBQSw0QkFBQSxnQ0FBQTs7Ozs7Ozs7O0FBMUNOLFFBQUEsY0FBc0I7OztBQUMvQixRQUFBLFNBQXlCLENBQUMsaUJBQWlCLFVBQVUsZUFBTSxDQUFDOzs7QUFFcEUsUUFBQSx1Q0FBdUIsSUFBSSxLQUFrQjs7O0FBQzdDLFFBQUEsa0NBQWtCLElBQUksS0FBdUI7O0VBRTVEO0FBQ0UsT0FBSSxDQUFDLFNBR0gsNkJBQTRCLEtBQUssaUNBQWlDLENBQUM7O0VBVXZFOzs7OztFQUFBLElBQWdCLFdBQVE7QUFBQSxVQUFBLE1BQUE7O0VBQXhCLElBQWdCLFNBQVEsT0FBQTtBQUFBLFNBQUEsNEJBQUE7O0VBU3hCOzs7Ozs7RUFBQSxJQUFnQixlQUFZO0FBQUEsVUFBQSxNQUFBOztFQUE1QixJQUFnQixhQUFZLE9BQUE7QUFBQSxTQUFBLGdDQUFBOztFQUs1Qjs7RUFBQSxJQUFnQixlQUFZO0FBQUEsVUFBQSxNQUFBOztFQUE1QixJQUFnQixhQUFZLE9BQUE7QUFBQSxTQUFBLGdDQUFBOztFQU1DOzs7OztFQUFBLElBQWdCLE9BQUk7QUFBQSxVQUFBLE1BQUE7O0VBQXBCLElBQWdCLEtBQUksT0FBQTtBQUFBLFNBQUEsd0JBQUE7O0VBRXhDO0VBQUEsSUFBaUIsZUFBWTtBQUFBLFVBQUEsTUFBQTs7RUFBN0IsSUFBaUIsYUFBWSxPQUFBO0FBQUEsU0FBQSxnQ0FBQTs7RUFRdEMsY0FBQTtBQUNFLFVBQU87QUEvQk8sU0FBQSw0QkFBQSxrQkFBQSxNQUFBLHdCQUFvQixNQUFLO0FBU3pCLFNBQUEsaUNBQUEsa0JBQUEsTUFBQSw0QkFBQSxFQUFBLGtCQUFBLE1BQUEsNEJBQW1DLEtBQUk7QUFLdkMsU0FBQSxpQ0FBQSxrQkFBQSxNQUFBLGdDQUFBLEVBQUEsa0JBQUEsTUFBQSw0QkFBd0IsTUFBSztBQU1BLFNBQUEseUJBQUEsa0JBQUEsTUFBQSxnQ0FBQSxFQUFBLGtCQUFBLE1BQUEsb0JBQWtCLFFBQVEsR0FBRyxNQUFNLElBQUc7QUFFekQsU0FBQSxpQ0FBQSxrQkFBQSxNQUFBLHdCQUFBLEVBQUEsa0JBQUEsTUFBQSw0QkFBZSxLQUFJO0FBRXJDLFFBQUEsaUJBQWMsa0JBQUEsTUFBQSxnQ0FBQTtBQUdkLFFBQUEsY0FBYztBQUNkLFFBQUEsNEJBQWdEO0FBSXRELFFBQUssY0FBYyxJQUFJLGdDQUFnQyxLQUFLLENBQUM7O0VBR3ZELE9BQU8sa0NBQStCO0FBSTVDLE9BQUksa0JBQWtCLGNBQWE7QUFDakMsU0FBSyxNQUFNLFlBQVksVUFDckIsS0FBSSxTQUFTLFNBQVMsYUFDcEIsTUFBSywyQkFBMkIsU0FBUyxPQUFzQjthQUN0RCxTQUFTLFNBQVMsWUFDM0IsTUFBSyxNQUFNLFFBQVEsQ0FBQyxHQUFHLFNBQVMsWUFBWSxHQUFHLFNBQVMsYUFBYSxDQUFDLFFBQ25FLE1BQXdCLEVBQUUsYUFBYSxFQUFFLGFBQzNDLEVBQUU7QUFDRCxVQUFLLDJCQUEyQixLQUFLO0FBQ3JDLFVBQUssNEJBQTRCLEtBQUs7O0FBSTVDLFNBQUssdUJBQXVCO0tBQzVCLENBQUMsUUFBUSxTQUFTLGlCQUFpQjtJQUNuQyxpQkFBaUIsQ0FBQywyQkFBMkI7SUFDN0MsV0FBVztJQUNYLFNBQVM7SUFDVixDQUFDO0FBQ0YsUUFBSyw0QkFBNEIsU0FBUyxLQUFLO0FBQy9DLFFBQUssdUJBQXVCOztFQUd0QixPQUFPLDRCQUE0QixNQUFpQjtBQUMxRCxRQUNHLGlCQUE4Qiw2QkFBNkIsQ0FDM0QsU0FBUyxNQUFNLEtBQUssMkJBQTJCLEVBQUUsQ0FBQzs7RUFHL0MsT0FBTywyQkFBMkIsU0FBb0I7QUFDNUQsT0FBSSxRQUFRLGVBQWUsUUFBUSxhQUFhLDJCQUEyQixDQUN6RSxNQUFLLHFCQUFxQixJQUFJLFFBQVE7T0FFdEMsTUFBSyxxQkFBcUIsT0FBTyxRQUFROztFQUlyQyxPQUFPLHdCQUFxQjtBQUNsQyxRQUFLLE1BQU0sVUFBVSxLQUFLLGlCQUFpQjtBQUN6QyxRQUFJLEtBQUsscUJBQXFCLFNBQVMsRUFDckMsUUFBTyw0QkFBNEI7YUFDMUIsS0FBSyxxQkFBcUIsU0FBUyxFQUM1QyxRQUFPLDRCQUE0QixLQUFLLHFCQUFxQixRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVM7UUFFdEYsUUFBTyw0QkFDTCxNQUFNLEtBQUssS0FBSyxxQkFBcUIsQ0FDbEMsTUFBTSxJQUFJLE9BQU8sR0FBRyx3QkFBd0IsR0FBRyxHQUFHLEtBQUssMkJBQTJCLENBQ2xGLEdBQUcsR0FBRyxJQUFJO0FBRWpCLFdBQU8sdUJBQXVCOzs7O0VBS2xCLG9CQUFpQjtBQUMvQixTQUFNLG1CQUFtQjtBQUN6QixvQkFBaUIsZ0JBQWdCLElBQUksS0FBSztBQUMxQyxPQUFJLEtBQUssV0FDUCxNQUFLLHVCQUF1Qjs7O0VBS2hCLHVCQUFvQjtBQUNsQyxTQUFNLHNCQUFzQjtBQUM1QixRQUFLLGlCQUFpQjtBQUN0QixRQUFLLHlCQUF5QixPQUFPO0FBQ3JDLG9CQUFpQixnQkFBZ0IsT0FBTyxLQUFLOztFQUcvQixjQUNkLE1BQ0EsVUFDQSxTQUE2QjtBQUU3QixTQUFNLGNBQWMsTUFBTSxVQUFVLFFBQVE7QUFFNUMsT0FBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLFNBQVMsbUJBQW1CLEtBQUssV0FDMUQsTUFBSyx1QkFBdUI7O0VBSWIsYUFBYSxtQkFBdUM7QUFDckUsU0FBTSxhQUFhLGtCQUFrQjtBQUNyQyxRQUFLLHVCQUF1Qjs7RUFHdEIsd0JBQXFCO0dBQzNCLE1BQU0sZ0JBQWdCLEtBQUssZ0JBQWdCLEtBQUssNkJBQTZCO0FBQzdFLE9BQUksa0JBQWtCLEtBQUssZUFDekI7QUFHRixRQUFLLHlCQUF5QixPQUFPO0FBQ3JDLFFBQUssaUJBQWlCO0FBQ3RCLE9BQUksQ0FBQyxLQUFLLGVBQ1I7QUFFRixRQUFLLDBCQUEwQixJQUFJLGlCQUFpQjtBQUNwRCxRQUFLLGtCQUFrQixLQUFLLG1CQUFtQixLQUFLLEtBQUs7QUFDekQsUUFBSyxlQUFlLGlCQUFpQixVQUFVLEtBQUssaUJBQWlCO0lBQ25FLFNBQVM7SUFDVCxRQUFRLEtBQUssd0JBQXdCO0lBQ3RDLENBQUM7R0FFRixNQUFNLGdCQUFnQixLQUFLLDBCQUEwQixZQUFZO0FBRWpFLFFBQUssY0FBYyxpQkFBaUIsSUFBSSxJQUFJOzs7RUFJdEMscUJBQWtCO0FBQ3hCLFVBQU8sS0FBSyxlQUFlLEtBQUssaUJBQWlCLEdBQUcsS0FBSyx1QkFBdUI7OztFQUkxRSwwQkFBMEIsVUFBc0M7QUFDdEUsT0FBSSxLQUFLLDBCQUEwQixTQUNqQyxRQUFPLEtBQUssZUFBZSxnQkFBZ0IsYUFBYSxLQUFLLGVBQWUsS0FBSztBQUVuRixVQUFPLEtBQUssaUJBQWlCLGFBQWE7Ozs7Ozs7O0VBU3BDLGtCQUFlO0dBQ3JCLE1BQU0sZ0JBQWdCLEtBQUssMEJBQTBCLFlBQVk7QUFHakUsT0FBSSxLQUFLLDBCQUEwQixlQUFlLEdBQUcsT0FBTyxjQUFjLGlCQUFpQixFQUN6RjtBQUdGLFFBQUssWUFBWSxVQUFVLGtCQUFrQixFQUFFO0FBRy9DLE9BQ0UsZ0JBQWdCLEtBQUssZ0JBQ3JCLGdCQUFnQixLQUNoQixLQUFLLGNBQWMsY0FFbkIsTUFBSyxvQkFBb0I7QUFHM0IsT0FBSSxnQkFBZ0IsS0FBSyxlQUFlLEdBQUc7QUFDekMsU0FBSyxlQUFlO0FBQ3BCLFFBQUksZ0JBQWdCLEtBQUssS0FBSyxjQUFjLGNBRTFDLEVBQUMsVUFBVSxVQUFVLENBQUMsU0FBUyxTQUFTLEtBQUssVUFBVSxPQUFPLE9BQU8sS0FBSyxDQUFDO1FBRzNFO0tBQUM7S0FBUztLQUFVO0tBQVk7S0FBVSxDQUFDLFNBQVMsU0FDbEQsS0FBSyxVQUFVLE9BQU8sSUFBSSxLQUFLLENBQ2hDO1VBRUU7QUFHTCxRQUFJLGtCQUFrQixFQUNwQixNQUFLLGVBQWU7QUFFdEIsUUFBSSxLQUFLLGFBQ1A7S0FBQztLQUFVO0tBQVk7S0FBUztLQUFVLENBQUMsU0FBUyxTQUNsRCxLQUFLLFVBQVUsT0FBTyxPQUFPLEtBQUssQ0FDbkM7O0FBSUwsUUFBSyxjQUFjLGlCQUFpQixJQUFJLElBQUk7OztFQUl0Qyx3QkFBcUI7QUFDM0IsUUFBSyxZQUFZLFVBQVUsS0FBSywwQkFBMEIsWUFBWSxLQUFLLEVBQUU7O0VBR3ZFLHFCQUFrQjtBQUN4QixPQUFJLEtBQUssUUFBUSwwRUFBbUMsQ0FDbEQ7R0FFRixNQUFNLGtCQUFpQyxNQUFNLEtBQzNDLEtBQUssaUJBQWlCLHFCQUFnRCxDQUN2RTtBQUNELFFBQUssTUFBTSxrQkFBa0IsaUJBQWlCO0lBQzVDLE1BQU0sVUFBVSxlQUFlLHFCQUFzQjtBQUdyRCxRQUFJLE9BQU8sU0FBUyxVQUFVLFdBQzVCLFNBQVEsT0FBTzs7O0VBS0YsU0FBTTtBQUN2QixVQUFPLElBQUkifQ==
@@ -2,7 +2,7 @@ import { t as SbbHeaderActionCommonElementMixin } from "./header-action-common-B
2
2
  import { SbbHeaderButtonElement } from "./header/header-button/header-button.component.js";
3
3
  import { t as SbbHeaderEnvironmentElement } from "./header-environment.component-D-SLP3CC.js";
4
4
  import { SbbHeaderLinkElement } from "./header/header-link/header-link.component.js";
5
- import { t as SbbHeaderElement } from "./header.component-Hfgz9sSb.js";
5
+ import { t as SbbHeaderElement } from "./header.component-B2T2pmHs.js";
6
6
  import "./header.pure.js";
7
7
  //#region src/elements/header.ts
8
8
  /** @entrypoint */
@@ -2,5 +2,5 @@ import { t as SbbHeaderActionCommonElementMixin } from "./header-action-common-B
2
2
  import { SbbHeaderButtonElement } from "./header/header-button/header-button.component.js";
3
3
  import { t as SbbHeaderEnvironmentElement } from "./header-environment.component-D-SLP3CC.js";
4
4
  import { SbbHeaderLinkElement } from "./header/header-link/header-link.component.js";
5
- import { t as SbbHeaderElement } from "./header.component-Hfgz9sSb.js";
5
+ import { t as SbbHeaderElement } from "./header.component-B2T2pmHs.js";
6
6
  export { SbbHeaderActionCommonElementMixin, SbbHeaderButtonElement, SbbHeaderElement, SbbHeaderEnvironmentElement, SbbHeaderLinkElement };
@@ -1,2 +1,2 @@
1
- import { t as SbbMenuActionCommonElementMixin } from "../../menu-action-common-Crx-dDgH.js";
1
+ import { t as SbbMenuActionCommonElementMixin } from "../../menu-action-common-CEnwq60Z.js";
2
2
  export { SbbMenuActionCommonElementMixin };
@@ -1 +1 @@
1
- {"version":3,"file":"menu.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/menu/menu/menu.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,KAAK,CAAC;AAIb,OAAO,EAcL,KAAK,cAAc,EAQnB,uBAAuB,EAIxB,MAAM,eAAe,CAAC;AAwBvB;;;;;;;GAOG;AACH,qBAAa,cAAe,SAAQ,uBAAuB;IACzD,gBAAgC,WAAW,EAAE,MAAM,CAAc;IACjE,OAAuB,mBAAmB,EAAE,cAAc,EAAE,CAG1D;IACF,OAAuB,MAAM,EAAE,cAAc,CAAuC;IACpF,gBAAgC,IAAI,UAAU;IAE9C;;;;OAIG;IACH,SAEgB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAQ;IAEnD,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,yBAAyB,CAAkB;IACnD,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,2BAA2B,CAA2C;IAC9E,OAAO,CAAC,oBAAoB,CAAoC;IAChE,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,iBAAiB,CAAwC;IACjE,OAAO,CAAC,aAAa,CAQlB;IACH,OAAO,CAAC,mBAAmB,CAA+D;IAC1F,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,WAAW,CAA+B;;cAO/B,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAM9D,cAAc,IAAI,IAAI;IAItC;;OAEG;IACI,IAAI,IAAI,IAAI;IAuCnB,gDAAgD;IACzC,KAAK,IAAI,IAAI;IAIpB,uEAAuE;IAChE,QAAQ,IAAI,IAAI;IAIvB,6IAA6I;IAC7I,OAAO,CAAC,MAAM;IA+Bd,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,cAAc;IA4BtB,OAAO,CAAC,cAAc;cAqDH,gBAAgB,IAAI,WAAW,GAAG,gBAAgB;IASrD,iBAAiB,IAAI,IAAI;IASzB,oBAAoB,IAAI,IAAI;IAQ5B,aAAa,CAC3B,IAAI,CAAC,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;IASP,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,oBAAoB,CAM1B;IAGF,OAAO,CAAC,qBAAqB,CAc3B;IAEF,gEAAgE;IAChE,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,WAAW;IAInB,0BAA0B;IAC1B,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,SAAS;cAIE,MAAM,IAAI,cAAc;CA4B5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,UAAU,EAAE,cAAc,CAAC;KAC5B;CACF"}
1
+ {"version":3,"file":"menu.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/menu/menu/menu.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,KAAK,CAAC;AAIb,OAAO,EAcL,KAAK,cAAc,EAQnB,uBAAuB,EAIxB,MAAM,eAAe,CAAC;AAsBvB;;;;;;;GAOG;AACH,qBAAa,cAAe,SAAQ,uBAAuB;IACzD,gBAAgC,WAAW,EAAE,MAAM,CAAc;IACjE,OAAuB,mBAAmB,EAAE,cAAc,EAAE,CAG1D;IACF,OAAuB,MAAM,EAAE,cAAc,CAAuC;IACpF,gBAAgC,IAAI,UAAU;IAE9C;;;;OAIG;IACH,SAEgB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAQ;IAEnD,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,yBAAyB,CAAkB;IACnD,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,2BAA2B,CAA2C;IAC9E,OAAO,CAAC,oBAAoB,CAAoC;IAChE,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,iBAAiB,CAAwC;IACjE,OAAO,CAAC,aAAa,CAQlB;IACH,OAAO,CAAC,mBAAmB,CAA+D;IAC1F,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,WAAW,CAA+B;;cAO/B,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAM9D,cAAc,IAAI,IAAI;IAItC;;OAEG;IACI,IAAI,IAAI,IAAI;IA0CnB,gDAAgD;IACzC,KAAK,IAAI,IAAI;IAIpB,uEAAuE;IAChE,QAAQ,IAAI,IAAI;IAIvB,6IAA6I;IAC7I,OAAO,CAAC,MAAM;IAiCd,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,cAAc;IA4BtB,OAAO,CAAC,cAAc;cAqDH,gBAAgB,IAAI,WAAW,GAAG,gBAAgB;IASrD,iBAAiB,IAAI,IAAI;IAQzB,oBAAoB,IAAI,IAAI;IAQ5B,aAAa,CAC3B,IAAI,CAAC,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;IASP,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,oBAAoB,CAM1B;IAGF,OAAO,CAAC,qBAAqB,CAc3B;IAEF,gEAAgE;IAChE,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,WAAW;IAInB,0BAA0B;IAC1B,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,SAAS;cAIE,MAAM,IAAI,cAAc;CA4B5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,UAAU,EAAE,cAAc,CAAC;KAC5B;CACF"}
@@ -1,2 +1,2 @@
1
- import { t as SbbMenuElement } from "../../menu.component-DOv7PKIi.js";
1
+ import { t as SbbMenuElement } from "../../menu.component-BM7hhOb4.js";
2
2
  export { SbbMenuElement };
@@ -0,0 +1,32 @@
1
+ import { html, unsafeCSS } from "lit";
2
+ import { SbbDisabledMixin, boxSizingStyles } from "./core.js";
3
+ import { SbbIconNameMixin } from "./icon.pure.js";
4
+ //#region src/elements/menu/common/menu-action.scss?inline
5
+ var menu_action_default = ":host {\n --sbb-menu-action-cursor: var(--sbb-cursor-pointer);\n outline: none !important;\n display: block;\n}\n\n@media (any-hover: hover) {\n :host(:is(:hover:not([disabled], :disabled, [disabled-interactive]), [aria-expanded=true])) {\n --sbb-menu-background-color: var(--sbb-color-iron);\n --sbb-menu-background-color: light-dark(var(--sbb-color-iron), var(--sbb-color-milk));\n --sbb-menu-action-forced-color-border-color: Highlight;\n }\n}\n\n:host(:is([disabled], :disabled, [disabled-interactive])) {\n --sbb-menu-action-cursor: var(--sbb-cursor-default);\n --sbb-menu-action-color: var(--sbb-color-graphite);\n --sbb-menu-action-color: light-dark(var(--sbb-color-graphite), var(--sbb-color-granite));\n --sbb-menu-action-forced-color-border-color: GrayText;\n pointer-events: none;\n cursor: var(--sbb-cursor-default);\n}\n@media (forced-colors: active) {\n :host(:is([disabled], :disabled, [disabled-interactive])) {\n --sbb-menu-action-color: GrayText;\n }\n}\n\n:host(:is(:state(sbb-menu-trigger),[state--sbb-menu-trigger])) {\n --sbb-menu-action-cursor: var(--sbb-cursor-default);\n}\n\n@media (forced-colors: active) {\n :host(:is(:state(button),[state--button])) {\n --sbb-menu-action-color: ButtonText;\n }\n}\n\n:host([sbb-badge]:not(:is(:state(has-icon-name),[state--has-icon-name]), :is(:state(slotted-icon),[state--slotted-icon])))::after {\n inset: 50% calc(100% - var(--sbb-menu-action-outer-horizontal-padding) - var(--sbb-menu-action-content-padding-inline) - 0.5 * var(--sbb-size-icon-ui-small)) auto auto !important;\n translate: 50% -50%;\n}\n\n:host([sbb-badge]:is(:is(:state(has-icon-name),[state--has-icon-name]), :is(:state(slotted-icon),[state--slotted-icon])))::after {\n inset: calc(var(--sbb-menu-action-outer-vertical-padding) + var(--sbb-menu-action-content-padding-block) + var(--sbb-badge-position-offset)) calc(100% - var(--sbb-menu-action-outer-horizontal-padding) - var(--sbb-menu-action-content-padding-inline) - var(--sbb-size-icon-ui-small) + var(--sbb-badge-position-offset)) auto auto !important;\n}\n\n:host([aria-controls]) {\n --sbb-menu-action-submenu-icon-display: flex;\n}\n\n:is(.sbb-menu-button, .sbb-menu-link) {\n text-decoration: none;\n display: block;\n width: 100%;\n color: var(--sbb-menu-action-color);\n padding: var(--sbb-menu-action-outer-vertical-padding) var(--sbb-menu-action-outer-horizontal-padding);\n cursor: var(--sbb-menu-action-cursor);\n outline: none;\n}\n\n.sbb-menu-action__content {\n --sbb-text-font-size: var(--sbb-text-font-size-xs);\n font-family: var(--sbb-typo-font-family);\n font-weight: normal;\n line-height: var(--sbb-typo-line-height-text);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n font-size: var(--sbb-text-font-size);\n display: flex;\n align-items: center;\n gap: var(--sbb-menu-action-gap);\n padding: var(--sbb-menu-action-content-padding-block) var(--sbb-menu-action-content-padding-inline);\n border-radius: var(--sbb-menu-action-border-radius);\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n background-color: var(--sbb-menu-background-color);\n}\n:host(:focus-visible) .sbb-menu-action__content, :focus-visible .sbb-menu-action__content {\n outline-offset: var(--sbb-focus-outline-offset);\n outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);\n}\n@media (forced-colors: active) {\n .sbb-menu-action__content {\n border: var(--sbb-border-width-2x) solid var(--sbb-menu-action-forced-color-border-color);\n }\n}\n\n.sbb-menu-action__icon,\n.sbb-menu-submenu__icon {\n display: flex;\n min-width: var(--sbb-size-icon-ui-small);\n min-height: var(--sbb-size-icon-ui-small);\n}\n\n.sbb-menu-submenu__icon {\n display: var(--sbb-menu-action-submenu-icon-display, none);\n margin-inline-start: auto;\n}\n\n.sbb-menu-action__label {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n:host(:is([disabled], :disabled, [disabled-interactive])) .sbb-menu-action__label {\n text-decoration: line-through;\n}";
6
+ //#endregion
7
+ //#region src/elements/menu/common/menu-action-common.ts
8
+ var SbbMenuActionCommonElementMixin = (superClass) => {
9
+ class SbbMenuActionCommonElement extends SbbIconNameMixin(SbbDisabledMixin(superClass)) {
10
+ static {
11
+ this.styles = [boxSizingStyles, unsafeCSS(menu_action_default)];
12
+ }
13
+ renderTemplate() {
14
+ return html`
15
+ <span class="sbb-menu-action__content">
16
+ <span class="sbb-menu-action__icon"> ${super.renderIconSlot()} </span>
17
+ <span class="sbb-menu-action__label">
18
+ <slot></slot>
19
+ </span>
20
+ <span class="sbb-menu-submenu__icon">
21
+ <sbb-icon name="chevron-small-right-small"></sbb-icon>
22
+ </span>
23
+ </span>
24
+ `;
25
+ }
26
+ }
27
+ return SbbMenuActionCommonElement;
28
+ };
29
+ //#endregion
30
+ export { SbbMenuActionCommonElementMixin as t };
31
+
32
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1hY3Rpb24tY29tbW9uLUNFbndxNjBaLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9tZW51L2NvbW1vbi9tZW51LWFjdGlvbi5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9tZW51L2NvbW1vbi9tZW51LWFjdGlvbi1jb21tb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vLi4vY29yZS9zdHlsZXMnIGFzIHNiYjtcblxuJGRpc2FibGVkOiAnW2Rpc2FibGVkXSwgOmRpc2FibGVkLCBbZGlzYWJsZWQtaW50ZXJhY3RpdmVdJztcblxuOmhvc3Qge1xuICAtLXNiYi1tZW51LWFjdGlvbi1jdXJzb3I6IHZhcigtLXNiYi1jdXJzb3ItcG9pbnRlcik7XG5cbiAgLy8gVXNlICFpbXBvcnRhbnQgaGVyZSB0byBub3QgaW50ZXJmZXJlIHdpdGggRmlyZWZveCBmb2N1cyByaW5nIGRlZmluaXRpb25cbiAgLy8gd2hpY2ggYXBwZWFycyBpbiBub3JtYWxpemUgQ1NTIG9mIHNldmVyYWwgZnJhbWV3b3Jrcy5cbiAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuOmhvc3QoOmlzKDpob3Zlcjpub3QoI3skZGlzYWJsZWR9KSwgW2FyaWEtZXhwYW5kZWQ9J3RydWUnXSkpIHtcbiAgQGluY2x1ZGUgc2JiLmhvdmVyLW1xKCRob3ZlcjogdHJ1ZSkge1xuICAgIC0tc2JiLW1lbnUtYmFja2dyb3VuZC1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItaXJvbiksIHZhcigtLXNiYi1jb2xvci1taWxrKSk7XG4gICAgLS1zYmItbWVudS1hY3Rpb24tZm9yY2VkLWNvbG9yLWJvcmRlci1jb2xvcjogSGlnaGxpZ2h0O1xuICB9XG59XG5cbjpob3N0KDppcygjeyRkaXNhYmxlZH0pKSB7XG4gIC0tc2JiLW1lbnUtYWN0aW9uLWN1cnNvcjogdmFyKC0tc2JiLWN1cnNvci1kZWZhdWx0KTtcbiAgLS1zYmItbWVudS1hY3Rpb24tY29sb3I6IGxpZ2h0LWRhcmsodmFyKC0tc2JiLWNvbG9yLWdyYXBoaXRlKSwgdmFyKC0tc2JiLWNvbG9yLWdyYW5pdGUpKTtcbiAgLS1zYmItbWVudS1hY3Rpb24tZm9yY2VkLWNvbG9yLWJvcmRlci1jb2xvcjogR3JheVRleHQ7XG5cbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGN1cnNvcjogdmFyKC0tc2JiLWN1cnNvci1kZWZhdWx0KTtcblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgLS1zYmItbWVudS1hY3Rpb24tY29sb3I6IEdyYXlUZXh0O1xuICB9XG59XG5cbjpob3N0KDpzdGF0ZShzYmItbWVudS10cmlnZ2VyKSkge1xuICAtLXNiYi1tZW51LWFjdGlvbi1jdXJzb3I6IHZhcigtLXNiYi1jdXJzb3ItZGVmYXVsdCk7XG59XG5cbjpob3N0KDpzdGF0ZShidXR0b24pKSB7XG4gIEBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgICAtLXNiYi1tZW51LWFjdGlvbi1jb2xvcjogQnV0dG9uVGV4dDtcbiAgfVxufVxuXG46aG9zdChbc2JiLWJhZGdlXTpub3QoOnN0YXRlKGhhcy1pY29uLW5hbWUpLCA6c3RhdGUoc2xvdHRlZC1pY29uKSkpOjphZnRlciB7XG4gIGluc2V0OiA1MCVcbiAgICBjYWxjKFxuICAgICAgMTAwJSAtIHZhcigtLXNiYi1tZW51LWFjdGlvbi1vdXRlci1ob3Jpem9udGFsLXBhZGRpbmcpIC0gdmFyKFxuICAgICAgICAgIC0tc2JiLW1lbnUtYWN0aW9uLWNvbnRlbnQtcGFkZGluZy1pbmxpbmVcbiAgICAgICAgKSAtXG4gICAgICAgIDAuNSAqIHZhcigtLXNiYi1zaXplLWljb24tdWktc21hbGwpXG4gICAgKVxuICAgIGF1dG8gYXV0byAhaW1wb3J0YW50O1xuICB0cmFuc2xhdGU6IDUwJSAtNTAlO1xufVxuXG46aG9zdChbc2JiLWJhZGdlXTppcyg6c3RhdGUoaGFzLWljb24tbmFtZSksIDpzdGF0ZShzbG90dGVkLWljb24pKSk6OmFmdGVyIHtcbiAgaW5zZXQ6IGNhbGMoXG4gICAgICB2YXIoLS1zYmItbWVudS1hY3Rpb24tb3V0ZXItdmVydGljYWwtcGFkZGluZykgKyB2YXIoLS1zYmItbWVudS1hY3Rpb24tY29udGVudC1wYWRkaW5nLWJsb2NrKSArXG4gICAgICAgIHZhcigtLXNiYi1iYWRnZS1wb3NpdGlvbi1vZmZzZXQpXG4gICAgKVxuICAgIGNhbGMoXG4gICAgICAxMDAlIC0gdmFyKC0tc2JiLW1lbnUtYWN0aW9uLW91dGVyLWhvcml6b250YWwtcGFkZGluZykgLSB2YXIoXG4gICAgICAgICAgLS1zYmItbWVudS1hY3Rpb24tY29udGVudC1wYWRkaW5nLWlubGluZVxuICAgICAgICApIC0gdmFyKC0tc2JiLXNpemUtaWNvbi11aS1zbWFsbCkgK1xuICAgICAgICB2YXIoLS1zYmItYmFkZ2UtcG9zaXRpb24tb2Zmc2V0KVxuICAgIClcbiAgICBhdXRvIGF1dG8gIWltcG9ydGFudDtcbn1cblxuOmhvc3QoW2FyaWEtY29udHJvbHNdKSB7XG4gIC0tc2JiLW1lbnUtYWN0aW9uLXN1Ym1lbnUtaWNvbi1kaXNwbGF5OiBmbGV4O1xufVxuXG46aXMoLnNiYi1tZW51LWJ1dHRvbiwgLnNiYi1tZW51LWxpbmspIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIGNvbG9yOiB2YXIoLS1zYmItbWVudS1hY3Rpb24tY29sb3IpO1xuICBwYWRkaW5nOiB2YXIoLS1zYmItbWVudS1hY3Rpb24tb3V0ZXItdmVydGljYWwtcGFkZGluZylcbiAgICB2YXIoLS1zYmItbWVudS1hY3Rpb24tb3V0ZXItaG9yaXpvbnRhbC1wYWRkaW5nKTtcbiAgY3Vyc29yOiB2YXIoLS1zYmItbWVudS1hY3Rpb24tY3Vyc29yKTtcbiAgb3V0bGluZTogbm9uZTtcbn1cblxuLnNiYi1tZW51LWFjdGlvbl9fY29udGVudCB7XG4gIEBpbmNsdWRlIHNiYi50ZXh0LXhzLS1yZWd1bGFyO1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc2JiLW1lbnUtYWN0aW9uLWdhcCk7XG4gIHBhZGRpbmc6IHZhcigtLXNiYi1tZW51LWFjdGlvbi1jb250ZW50LXBhZGRpbmctYmxvY2spXG4gICAgdmFyKC0tc2JiLW1lbnUtYWN0aW9uLWNvbnRlbnQtcGFkZGluZy1pbmxpbmUpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItbWVudS1hY3Rpb24tYm9yZGVyLXJhZGl1cyk7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItbWVudS1iYWNrZ3JvdW5kLWNvbG9yKTtcblxuICAvLyBIYW5kbGUgZm9jdXMgb24gdGhlIGhvc3QgKGJ1dHRvbiB2YXJpYW50KVxuICA6aG9zdCg6Zm9jdXMtdmlzaWJsZSkgJixcbiAgLy8gSGFuZGxlIGZvY3VzIG9uIHRoZSBhY3Rpb24gKGxpbmsgdmFyaWFudClcbiAgOmZvY3VzLXZpc2libGUgJiB7XG4gICAgQGluY2x1ZGUgc2JiLmZvY3VzLW91dGxpbmU7XG4gIH1cblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgYm9yZGVyOiB2YXIoLS1zYmItYm9yZGVyLXdpZHRoLTJ4KSBzb2xpZCB2YXIoLS1zYmItbWVudS1hY3Rpb24tZm9yY2VkLWNvbG9yLWJvcmRlci1jb2xvcik7XG4gIH1cbn1cblxuLnNiYi1tZW51LWFjdGlvbl9faWNvbixcbi5zYmItbWVudS1zdWJtZW51X19pY29uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgbWluLXdpZHRoOiB2YXIoLS1zYmItc2l6ZS1pY29uLXVpLXNtYWxsKTtcbiAgbWluLWhlaWdodDogdmFyKC0tc2JiLXNpemUtaWNvbi11aS1zbWFsbCk7XG59XG5cbi5zYmItbWVudS1zdWJtZW51X19pY29uIHtcbiAgZGlzcGxheTogdmFyKC0tc2JiLW1lbnUtYWN0aW9uLXN1Ym1lbnUtaWNvbi1kaXNwbGF5LCBub25lKTtcbiAgbWFyZ2luLWlubGluZS1zdGFydDogYXV0bztcbn1cblxuLnNiYi1tZW51LWFjdGlvbl9fbGFiZWwge1xuICBAaW5jbHVkZSBzYmIuZWxsaXBzaXM7XG5cbiAgOmhvc3QoOmlzKCN7JGRpc2FibGVkfSkpICYge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xuICB9XG59XG4iLCJpbXBvcnQgeyB0eXBlIENTU1Jlc3VsdEdyb3VwLCBodG1sLCB0eXBlIFRlbXBsYXRlUmVzdWx0LCB1bnNhZmVDU1MgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQge1xuICB0eXBlIEFic3RyYWN0Q29uc3RydWN0b3IsXG4gIGJveFNpemluZ1N0eWxlcyxcbiAgU2JiQWN0aW9uQmFzZUVsZW1lbnQsXG4gIFNiYkRpc2FibGVkTWl4aW4sXG59IGZyb20gJy4uLy4uL2NvcmUudHMnO1xuaW1wb3J0IHsgU2JiSWNvbk5hbWVNaXhpbiB9IGZyb20gJy4uLy4uL2ljb24ucHVyZS50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL21lbnUtYWN0aW9uLnNjc3M/aW5saW5lJztcblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgU2JiTWVudUFjdGlvbkNvbW1vbkVsZW1lbnRNaXhpblR5cGUgZXh0ZW5kcyBTYmJJY29uTmFtZU1peGluKFxuICBTYmJEaXNhYmxlZE1peGluKFNiYkFjdGlvbkJhc2VFbGVtZW50KSxcbikge31cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFNiYk1lbnVBY3Rpb25Db21tb25FbGVtZW50TWl4aW4gPSA8XG4gIFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkFjdGlvbkJhc2VFbGVtZW50Pixcbj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYk1lbnVBY3Rpb25Db21tb25FbGVtZW50TWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJNZW51QWN0aW9uQ29tbW9uRWxlbWVudFxuICAgIGV4dGVuZHMgU2JiSWNvbk5hbWVNaXhpbihTYmJEaXNhYmxlZE1peGluKHN1cGVyQ2xhc3MpKVxuICAgIGltcGxlbWVudHMgU2JiTWVudUFjdGlvbkNvbW1vbkVsZW1lbnRNaXhpblR5cGVcbiAge1xuICAgIHB1YmxpYyBzdGF0aWMgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHVuc2FmZUNTUyhzdHlsZSldO1xuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1tZW51LWFjdGlvbl9fY29udGVudFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLW1lbnUtYWN0aW9uX19pY29uXCI+ICR7c3VwZXIucmVuZGVySWNvblNsb3QoKX0gPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLW1lbnUtYWN0aW9uX19sYWJlbFwiPlxuICAgICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1tZW51LXN1Ym1lbnVfX2ljb25cIj5cbiAgICAgICAgICAgIDxzYmItaWNvbiBuYW1lPVwiY2hldnJvbi1zbWFsbC1yaWdodC1zbWFsbFwiPjwvc2JiLWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICBgO1xuICAgIH1cbiAgfVxuICByZXR1cm4gU2JiTWVudUFjdGlvbkNvbW1vbkVsZW1lbnQgYXMgdW5rbm93biBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYk1lbnVBY3Rpb25Db21tb25FbGVtZW50TWl4aW5UeXBlPiAmXG4gICAgVDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUNpQkEsSUFBYSxtQ0FHWCxlQUNnRTtDQUNoRSxNQUFlLG1DQUNMLGlCQUFpQixpQkFBaUIsV0FBVyxDQUFDLENBQUE7O0FBR3hDLFFBQUEsU0FBeUIsQ0FBQyxpQkFBaUIsVUFBVSxvQkFBTSxDQUFDOztFQUV2RCxpQkFBYztBQUMvQixVQUFPLElBQUk7O2lEQUVnQyxNQUFNLGdCQUFnQixDQUFBOzs7Ozs7Ozs7OztBQVdyRSxRQUFPIn0=