@sbb-esta/lyne-elements-dev 5.0.0-next.3-dev.1779195190 → 5.0.0-next.3-dev.1779200097

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 (162) hide show
  1. package/autocomplete/autocomplete-base-element.js +2 -2
  2. package/autocomplete/autocomplete.component.js +1 -1
  3. package/{autocomplete-base-element-DRGjFF9_.js → autocomplete-base-element-6leI6UF4.js} +24 -14
  4. package/autocomplete.js +4 -4
  5. package/autocomplete.pure.js +3 -3
  6. package/calendar/calendar/calendar.component.js +2 -2
  7. package/{calendar.component-oS_T4s4k.js → calendar.component-BK4w5GWV.js} +35 -29
  8. package/calendar.js +4 -4
  9. package/calendar.pure.js +3 -3
  10. package/carousel/carousel/carousel.component.js +1 -1
  11. package/carousel/carousel-item/carousel-item.component.js +2 -2
  12. package/carousel/carousel-list/carousel-list.component.js +1 -1
  13. package/{carousel-item.component-DyZAdXL_.js → carousel-item.component-B6WmZPkW.js} +12 -2
  14. package/{carousel-list.component-Ai0uJWB7.js → carousel-list.component-CnZehdy6.js} +6 -13
  15. package/{carousel.component-9oMMOyWo.js → carousel.component-ZrkGeJgZ.js} +1 -1
  16. package/carousel.js +5 -5
  17. package/carousel.pure.js +4 -4
  18. package/chip/chip-group/chip-group.component.js +1 -1
  19. package/{chip-group.component-DJORKUef.js → chip-group.component-BIP7c2G0.js} +2 -7
  20. package/chip.js +1 -1
  21. package/chip.pure.js +1 -1
  22. package/core/overlay/overlay-outside-pointer-event-listener.js +1 -1
  23. package/custom-elements.json +3886 -3393
  24. package/datepicker/datepicker/datepicker.component.js +1 -1
  25. package/development/autocomplete/autocomplete-base-element.d.ts +6 -3
  26. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  27. package/development/autocomplete/autocomplete-base-element.js +2 -2
  28. package/development/autocomplete/autocomplete.component.js +1 -1
  29. package/development/autocomplete-base-element-qnPoRLvM.js +695 -0
  30. package/development/autocomplete.js +2 -2
  31. package/development/autocomplete.pure.js +2 -2
  32. package/development/calendar/calendar/calendar.component.d.ts +8 -0
  33. package/development/calendar/calendar/calendar.component.d.ts.map +1 -1
  34. package/development/calendar/calendar/calendar.component.js +2 -2
  35. package/development/calendar.component-BKWvdgzO.js +1461 -0
  36. package/development/calendar.js +2 -2
  37. package/development/calendar.pure.js +2 -2
  38. package/development/carousel/carousel/carousel.component.js +1 -1
  39. package/development/carousel/carousel-item/carousel-item.component.d.ts +8 -6
  40. package/development/carousel/carousel-item/carousel-item.component.d.ts.map +1 -1
  41. package/development/carousel/carousel-item/carousel-item.component.js +2 -2
  42. package/development/carousel/carousel-list/carousel-list.component.d.ts.map +1 -1
  43. package/development/carousel/carousel-list/carousel-list.component.js +1 -1
  44. package/development/{carousel-item.component-B_0wdIAu.js → carousel-item.component-nuo7jAt3.js} +16 -4
  45. package/development/carousel-list.component-B8PUREwS.js +126 -0
  46. package/development/carousel.component-D_KIJ9Bb.js +139 -0
  47. package/development/carousel.js +4 -4
  48. package/development/carousel.pure.js +4 -4
  49. package/development/chip/chip-group/chip-group.component.d.ts +1 -23
  50. package/development/chip/chip-group/chip-group.component.d.ts.map +1 -1
  51. package/development/chip/chip-group/chip-group.component.js +1 -1
  52. package/development/chip-group.component-CVizDsAz.js +395 -0
  53. package/development/chip.js +1 -1
  54. package/development/chip.pure.js +1 -1
  55. package/development/core/overlay/overlay-outside-pointer-event-listener.d.ts +1 -1
  56. package/development/core/overlay/overlay-outside-pointer-event-listener.d.ts.map +1 -1
  57. package/development/core/overlay/overlay-outside-pointer-event-listener.js +2 -2
  58. package/development/core.d.ts +0 -1
  59. package/development/core.d.ts.map +1 -1
  60. package/development/datepicker/datepicker/datepicker.component.d.ts +1 -1
  61. package/development/datepicker/datepicker/datepicker.component.d.ts.map +1 -1
  62. package/development/datepicker/datepicker/datepicker.component.js +3 -3
  63. package/development/dialog/dialog/dialog.component.d.ts +2 -3
  64. package/development/dialog/dialog/dialog.component.d.ts.map +1 -1
  65. package/development/dialog/dialog/dialog.component.js +1 -1
  66. package/development/{dialog.component-AItB8ixG.js → dialog.component-D8B2dVck.js} +4 -7
  67. package/development/dialog.js +1 -1
  68. package/development/dialog.pure.js +1 -1
  69. package/development/file-selector/common/file-selector-common.d.ts +5 -0
  70. package/development/file-selector/common/file-selector-common.d.ts.map +1 -1
  71. package/development/file-selector/common/file-selector-common.js +2 -2
  72. package/development/{file-selector-common-CGL95Rnw.js → file-selector-common-mZ5UYxOF.js} +17 -8
  73. package/development/file-selector.js +2 -2
  74. package/development/file-selector.pure.js +2 -2
  75. package/development/form-field/form-field/form-field.component.d.ts +1 -1
  76. package/development/form-field/form-field/form-field.component.d.ts.map +1 -1
  77. package/development/form-field.component-CPWBCHer.js +1 -1
  78. package/development/overlay/overlay-base-element.d.ts +4 -4
  79. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  80. package/development/overlay/overlay-base-element.js +3 -9
  81. package/development/overlay/overlay.component.d.ts +3 -3
  82. package/development/overlay/overlay.component.d.ts.map +1 -1
  83. package/development/overlay/overlay.component.js +1 -1
  84. package/development/{overlay.component-rFmitc_r.js → overlay.component-YSCuGeme.js} +4 -7
  85. package/development/overlay.js +1 -1
  86. package/development/overlay.pure.js +1 -1
  87. package/development/paginator/common/paginator-common.d.ts +11 -6
  88. package/development/paginator/common/paginator-common.d.ts.map +1 -1
  89. package/development/paginator/common/paginator-common.js +2 -2
  90. package/development/paginator-common-B7iba0wQ.js +432 -0
  91. package/development/paginator.js +2 -2
  92. package/development/paginator.pure.js +2 -2
  93. package/development/popover/popover.component.d.ts +7 -0
  94. package/development/popover/popover.component.d.ts.map +1 -1
  95. package/development/popover/popover.component.js +2 -2
  96. package/development/popover.component-CKUZbWbV.js +578 -0
  97. package/development/popover.js +2 -2
  98. package/development/popover.pure.js +2 -2
  99. package/development/{step.component-CcjtUFyR.js → step.component-B_YHm1tz.js} +32 -10
  100. package/development/stepper/step/step.component.d.ts +14 -1
  101. package/development/stepper/step/step.component.d.ts.map +1 -1
  102. package/development/stepper/step/step.component.js +2 -2
  103. package/development/stepper/stepper/stepper.component.d.ts +9 -5
  104. package/development/stepper/stepper/stepper.component.d.ts.map +1 -1
  105. package/development/stepper/stepper/stepper.component.js +1 -1
  106. package/development/stepper.component-BeqeUIRN.js +443 -0
  107. package/development/stepper.js +3 -3
  108. package/development/stepper.pure.js +3 -3
  109. package/development/tab-group.component-CGMBihsQ.js +297 -0
  110. package/development/{tab-label.component-CNX8bsJL.js → tab-label.component-CQOLO2t7.js} +11 -13
  111. package/development/tabs/tab-group/tab-group.component.d.ts +15 -8
  112. package/development/tabs/tab-group/tab-group.component.d.ts.map +1 -1
  113. package/development/tabs/tab-group/tab-group.component.js +2 -2
  114. package/development/tabs/tab-label/tab-label.component.d.ts.map +1 -1
  115. package/development/tabs/tab-label/tab-label.component.js +1 -1
  116. package/development/tabs.js +3 -3
  117. package/development/tabs.pure.js +3 -3
  118. package/dialog/dialog/dialog.component.js +1 -1
  119. package/{dialog.component-4O3__zyd.js → dialog.component-CsBryhM-.js} +3 -6
  120. package/dialog.js +1 -1
  121. package/dialog.pure.js +1 -1
  122. package/file-selector/common/file-selector-common.js +2 -2
  123. package/{file-selector-common-BE780nIa.js → file-selector-common-VNwWFEmM.js} +26 -19
  124. package/file-selector.js +5 -5
  125. package/file-selector.pure.js +4 -4
  126. package/overlay/overlay-base-element.js +2 -8
  127. package/overlay/overlay.component.js +1 -1
  128. package/{overlay.component-C80XN61v.js → overlay.component-myJflfLY.js} +3 -6
  129. package/overlay.js +1 -1
  130. package/overlay.pure.js +1 -1
  131. package/package.json +2 -2
  132. package/paginator/common/paginator-common.js +2 -2
  133. package/{paginator-common-uoCIcl4X.js → paginator-common-BWewgXga.js} +42 -24
  134. package/paginator.js +5 -5
  135. package/paginator.pure.js +4 -4
  136. package/popover/popover.component.js +2 -2
  137. package/{popover.component-DJruKzY-.js → popover.component-Dm_86bPY.js} +19 -7
  138. package/popover.js +3 -3
  139. package/popover.pure.js +2 -2
  140. package/{step.component-BY6_2Wh2.js → step.component-tJh-Pb_E.js} +23 -8
  141. package/stepper/step/step.component.js +2 -2
  142. package/stepper/stepper/stepper.component.js +1 -1
  143. package/{stepper.component-lh0YSbT1.js → stepper.component-BCl77LVa.js} +20 -3
  144. package/stepper.js +4 -4
  145. package/stepper.pure.js +3 -3
  146. package/{tab-group.component-t4eeCNf-.js → tab-group.component-CDhggNpe.js} +27 -2
  147. package/{tab-label.component-DvvSohaG.js → tab-label.component-BuF2qt1T.js} +23 -22
  148. package/tabs/tab-group/tab-group.component.js +2 -2
  149. package/tabs/tab-label/tab-label.component.js +1 -1
  150. package/tabs.js +7 -7
  151. package/tabs.pure.js +6 -6
  152. package/development/autocomplete-base-element-DQiZ6hhk.js +0 -683
  153. package/development/calendar.component-CjlcDyS5.js +0 -1450
  154. package/development/carousel-list.component-DpDh5tqB.js +0 -133
  155. package/development/carousel.component-ClWvnZ8s.js +0 -139
  156. package/development/chip-group.component-Sgmi-kSy.js +0 -403
  157. package/development/core/interfaces/overlay-close-details.d.ts +0 -6
  158. package/development/core/interfaces/overlay-close-details.d.ts.map +0 -1
  159. package/development/paginator-common-BCeNUko_.js +0 -410
  160. package/development/popover.component-BmTfHMFw.js +0 -564
  161. package/development/stepper.component-80S-oXrH.js +0 -422
  162. package/development/tab-group.component-D4fvd6Uu.js +0 -265
@@ -699,4 +699,4 @@ var SbbFormFieldElement = (() => {
699
699
  //#endregion
700
700
  export { SbbFormFieldElement as n, SbbFormFieldControlEvent as t };
701
701
 
702
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQtQ1BXQkNIZXIuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC9mb3JtLWZpZWxkLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIC0tc2JiLWZvcm0tZmllbGQtaGludC1kaXZpZGVyLXdpZHRoOiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0xeCk7XG4gIC0tc2JiLWZvcm0tZmllbGQtaGludC1wYWRkaW5nLWJsb2NrLXN0YXJ0OiB2YXIoLS1zYmItZm9ybS1maWVsZC1oaW50LWRpdmlkZXItd2lkdGgpO1xuICAtLXNiYi1mb3JtLWZpZWxkLXNlbGVjdC1pbmxpbmUtcGFkZGluZy1lbmQ6IGNhbGMoXG4gICAgdmFyKC0tc2JiLWljb24tc3ZnLXdpZHRoKSArIHZhcigtLXNiYi1mb3JtLWZpZWxkLWdhcClcbiAgKTtcbiAgLS1zYmItZm9ybS1maWVsZC1sYWJlbC1zaXplOiBjYWxjKFxuICAgIHZhcigtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLXRleHQtc2l6ZSkgKiB2YXIoLS1zYmItdHlwby1saW5lLWhlaWdodC10ZXh0KVxuICApO1xuICAtLXNiYi1mb3JtLWZpZWxkLXRleHQtbGluZS1oZWlnaHQ6IGNhbGMoXG4gICAgdmFyKC0tc2JiLWZvcm0tZmllbGQtaW5wdXQtdGV4dC1zaXplKSAqIHZhcigtLXNiYi10eXBvLWxpbmUtaGVpZ2h0LXRleHQpXG4gICk7XG4gIC0tc2JiLWZvcm0tZmllbGQtbWFyZ2luLWJsb2NrLXN0YXJ0OiBjYWxjKFxuICAgIChcbiAgICAgICAgdmFyKC0tc2JiLWZvcm0tZmllbGQtbWluLWhlaWdodCkgLSB2YXIoLS1zYmItZm9ybS1maWVsZC1sYWJlbC1zaXplKSAtIHZhcihcbiAgICAgICAgICAgIC0tc2JiLWZvcm0tZmllbGQtdGV4dC1saW5lLWhlaWdodFxuICAgICAgICAgICkgK1xuICAgICAgICAgIHZhcigtLV9zYmItZm9ybS1maWVsZC1sYWJlbC10by1pbnB1dC1vdmVybGFwcGluZylcbiAgICAgICkgL1xuICAgICAgMlxuICApO1xuXG4gIC8vIExvY2sgc2JiLWljb24gc2l6ZVxuICAtLXNiYi1pY29uLXN2Zy13aWR0aDogdmFyKC0tc2JiLWZvcm0tZmllbGQtaWNvbi1zaXplKTtcbiAgLS1zYmItaWNvbi1zdmctaGVpZ2h0OiB2YXIoLS1zYmItZm9ybS1maWVsZC1pY29uLXNpemUpO1xuXG4gIC8vIEFzIHRoZSBmb3JtIGZpZWxkIGhhcyBhbHdheXMgYSB3aGl0ZSBiYWNrZ3JvdW5kLCB3ZSBoYXZlIHRvIGZpeCB0aGUgZm9jdXMgb3V0bGluZSBjb2xvclxuICAvLyB0byBkZWZhdWx0IGNvbG9yIGZvciBjYXNlcyB3aGVyZSB0aGUgZm9ybSBmaWVsZCBpcyB1c2VkIGluIGEgbmVnYXRpdmUgY29udGV4dC5cbiAgLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvcjogbGlnaHQtZGFyayhcbiAgICB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvci1kZWZhdWx0KSxcbiAgICB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvci1kYXJrKVxuICApO1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY29sb3I6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWNvbG9yKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcblxuICAvLyBTZXQgdGhlIGxpbmUtaGVpZ2h0IGZvciBhZGphY2VudCBlbGVtZW50cyBpbiBvcmRlciB0byBwcmV2ZW50IGZyb20gaW5mbHVlbmNlIG9mIGEgY29uc3VtZXItc2V0IGxpbmUtaGVpZ2h0LlxuICBsaW5lLWhlaWdodDogdmFyKC0tc2JiLXR5cG8tbGluZS1oZWlnaHQtdGV4dCk7XG59XG5cbjpob3N0KDp3aGVyZSg6bm90KFt3aWR0aD0nY29sbGFwc2UnXSkpKSB7XG4gIG1pbi13aWR0aDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDE1MCl9O1xuICB3aWR0aDogbWluKCN7c2JiLnB4LXRvLXJlbS1idWlsZCgzMDApfSwgMTAwJSk7XG59XG5cbjpob3N0KFtuZWdhdGl2ZV0pIHtcbiAgY29sb3I6IHZhcigtLXNiYi1jb2xvci0zLW5lZ2F0aXZlKTtcblxuICAtLXNiYi1mb3JtLWZpZWxkLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTEtbmVnYXRpdmUpO1xuICAtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1jb2xvcjogdmFyKC0tc2JiLWJvcmRlci1jb2xvci01KTtcbiAgLS1zYmItZm9ybS1maWVsZC1sYWJlbC1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTUpO1xuICAtLXNiYi1mb3JtLWZpZWxkLXByZWZpeC1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTUpO1xuICAtLXNiYi1mb3JtLWZpZWxkLXRleHQtY29sb3I6IHZhcigtLXNiYi1jb2xvci0zLW5lZ2F0aXZlKTtcbiAgLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvcjogdmFyKC0tc2JiLWZvY3VzLW91dGxpbmUtY29sb3ItZGFyayk7XG4gIC0tc2JiLWZvcm0tZmllbGQtYXJyb3ctY29sb3I6IHZhcigtLXNiYi1jb2xvci0zLW5lZ2F0aXZlKTtcblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgLS1zYmItZm9ybS1maWVsZC1ib3JkZXItY29sb3I6IEJ1dHRvbkJvcmRlcjtcbiAgfVxufVxuXG46aG9zdChbc2l6ZT0ncyddKSB7XG4gIC0tc2JiLWZvcm0tZmllbGQtbWluLWhlaWdodDogdmFyKC0tc2JiLXNpemUtZWxlbWVudC14cyk7XG4gIC0tc2JiLWZvcm0tZmllbGQtcGFkZGluZy1pbmxpbmU6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTJ4KTtcbiAgLS1zYmItZm9ybS1maWVsZC1pbnB1dC10ZXh0LXNpemU6IHZhcigtLXNiYi10ZXh0LWZvbnQtc2l6ZS1zKTtcbiAgLS1zYmItZm9ybS1maWVsZC1sYWJlbC10ZXh0LXNpemU6IHZhcigtLXNiYi10ZXh0LWZvbnQtc2l6ZS14eHMpO1xuICAtLV9zYmItZm9ybS1maWVsZC1pbnB1dC1tYXJnaW4tYmxvY2stZW5kOiAje3NiYi5weC10by1yZW0tYnVpbGQoLTIpfTtcblxuICAvLyBWYWx1ZXMgZm91bmQgYnkgdHJ5IGFuZCBlcnJvclxuICAtLV9zYmItZm9ybS1maWVsZC1sYWJlbC10by1pbnB1dC1vdmVybGFwcGluZzogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDEwKX07XG4gIC0tX3NiYi1mb3JtLWZpZWxkLWZsb2F0aW5nLWxhYmVsLXRyYW5zZm9ybTogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDUuNSl9O1xuICAtLV9zYmItZm9ybS1maWVsZC1zcGFjZXItbWFyZ2luLWJsb2NrLWVuZDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKC04LjUpfTtcblxuICBAaW5jbHVkZSBzYmIubXEoJGZyb206IGxhcmdlKSB7XG4gICAgLy8gVmFsdWVzIGZvdW5kIGJ5IHRyeSBhbmQgZXJyb3JcbiAgICAtLV9zYmItZm9ybS1maWVsZC1sYWJlbC10by1pbnB1dC1vdmVybGFwcGluZzogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDExKX07XG4gICAgLS1fc2JiLWZvcm0tZmllbGQtZmxvYXRpbmctbGFiZWwtdHJhbnNmb3JtOiAje3NiYi5weC10by1yZW0tYnVpbGQoNSl9O1xuICAgIC0tX3NiYi1mb3JtLWZpZWxkLXNwYWNlci1tYXJnaW4tYmxvY2stZW5kOiAje3NiYi5weC10by1yZW0tYnVpbGQoLTgpfTtcbiAgfVxufVxuXG46aG9zdChbc2l6ZT0nbSddKSB7XG4gIC0tc2JiLWZvcm0tZmllbGQtbWluLWhlaWdodDogdmFyKC0tc2JiLXNpemUtZWxlbWVudC1tKTtcbiAgLS1zYmItZm9ybS1maWVsZC1wYWRkaW5nLWlubGluZTogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtM3gpO1xufVxuXG46aG9zdChbc2l6ZT0nbCddKSB7XG4gIC0tc2JiLWZvcm0tZmllbGQtbWluLWhlaWdodDogdmFyKC0tc2JiLXNpemUtZWxlbWVudC1sKTtcbiAgLS1zYmItZm9ybS1maWVsZC1wYWRkaW5nLWlubGluZTogdmFyKC0tc2JiLXNwYWNpbmctcmVzcG9uc2l2ZS14eHhzKTtcbn1cblxuOmhvc3QoOmlzKFtzaXplPSdtJ10sIFtzaXplPSdsJ10pKSB7XG4gIC0tc2JiLWZvcm0tZmllbGQtaW5wdXQtdGV4dC1zaXplOiB2YXIoLS1zYmItdGV4dC1mb250LXNpemUtbSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtbGFiZWwtdGV4dC1zaXplOiB2YXIoLS1zYmItdGV4dC1mb250LXNpemUteHMpO1xuICAtLV9zYmItZm9ybS1maWVsZC1pbnB1dC1tYXJnaW4tYmxvY2stZW5kOiAwO1xuICAtLV9zYmItZm9ybS1maWVsZC1sYWJlbC10by1pbnB1dC1vdmVybGFwcGluZzogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMXgpO1xuICAtLV9zYmItZm9ybS1maWVsZC1mbG9hdGluZy1sYWJlbC10cmFuc2Zvcm06ICN7c2JiLnB4LXRvLXJlbS1idWlsZCg4LjUpfTtcbiAgLS1fc2JiLWZvcm0tZmllbGQtc3BhY2VyLW1hcmdpbi1ibG9jay1lbmQ6IGNhbGMoXG4gICAgLTEgKiB2YXIoLS1fc2JiLWZvcm0tZmllbGQtbGFiZWwtdG8taW5wdXQtb3ZlcmxhcHBpbmcpXG4gICk7XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBsYXJnZSkge1xuICAgIC0tX3NiYi1mb3JtLWZpZWxkLWZsb2F0aW5nLWxhYmVsLXRyYW5zZm9ybTogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDEwLjUpfTtcbiAgfVxufVxuXG46aG9zdChbZXJyb3Itc3BhY2U9J3Jlc2VydmUnXSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLWhpbnQtbWluLWhlaWdodDogY2FsYyhcbiAgICB2YXIoLS1zYmItdHlwby1saW5lLWhlaWdodC10ZXh0KSAqIHZhcigtLXNiYi10ZXh0LWZvbnQtc2l6ZS14cylcbiAgKTtcbiAgLS1zYmItZm9ybS1maWVsZC1oaW50LXBhZGRpbmctYmxvY2stc3RhcnQtb3ZlcnJpZGU6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWhpbnQtZGl2aWRlci13aWR0aCk7XG59XG5cbjpob3N0KDp3aGVyZSg6c3RhdGUocmVhZG9ubHkpLCA6c3RhdGUoZGlzYWJsZWQpKSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTMpO1xuICAtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3JhcGhpdGUpLCB2YXIoLS1zYmItY29sb3Itc21va2UpKTtcbiAgLS1zYmItZm9ybS1maWVsZC1hcnJvdy1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3Jhbml0ZSksIHZhcigtLXNiYi1jb2xvci1zdG9ybSkpO1xuXG4gIEBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgICAtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1jb2xvcjogQnV0dG9uQm9yZGVyO1xuICB9XG59XG5cbjpob3N0KDp3aGVyZSg6c3RhdGUocmVhZG9ubHkpLCA6c3RhdGUoZGlzYWJsZWQpKVtuZWdhdGl2ZV0pIHtcbiAgLS1zYmItZm9ybS1maWVsZC1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0zLW5lZ2F0aXZlKTtcbiAgLS1zYmItZm9ybS1maWVsZC1ib3JkZXItY29sb3I6IHZhcigtLXNiYi1ib3JkZXItY29sb3ItNSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtYXJyb3ctY29sb3I6IHZhcigtLXNiYi1ib3JkZXItY29sb3ItNSk7XG59XG5cbjpob3N0KDp3aGVyZSg6c3RhdGUoZGlzYWJsZWQpKSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLWNvbG9yOiBsaWdodC1kYXJrKHZhcigtLXNiYi1jb2xvci1ncmFuaXRlKSwgdmFyKC0tc2JiLWNvbG9yLXNtb2tlKSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtcHJlZml4LWNvbG9yOiBsaWdodC1kYXJrKHZhcigtLXNiYi1jb2xvci1ncmFuaXRlKSwgdmFyKC0tc2JiLWNvbG9yLXN0b3JtKSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XG5cbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIC0tc2JiLWZvcm0tZmllbGQtbGFiZWwtY29sb3I6IEdyYXlUZXh0ICFpbXBvcnRhbnQ7XG4gICAgLS1zYmItZm9ybS1maWVsZC1wcmVmaXgtY29sb3I6IEdyYXlUZXh0ICFpbXBvcnRhbnQ7XG4gICAgLS1zYmItZm9ybS1maWVsZC10ZXh0LWNvbG9yOiBHcmF5VGV4dCAhaW1wb3J0YW50O1xuICAgIC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLWNvbG9yOiBHcmF5VGV4dCAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8vIDp3aGVyZSBpcyB0byBhbGlnbiBzcGVjaWZpY2l0eVxuOmhvc3QoOndoZXJlKDpzdGF0ZShkaXNhYmxlZCkpW25lZ2F0aXZlXSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLXRleHQtY29sb3I6IHZhcigtLXNiYi1jb2xvci01KTtcbiAgLS1zYmItZm9ybS1maWVsZC1sYWJlbC1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTUpO1xuICAtLXNiYi1mb3JtLWZpZWxkLXByZWZpeC1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTUpO1xufVxuXG4vLyA6d2hlcmUgaXMgdG8gYWxpZ24gc3BlY2lmaWNpdHlcbjpob3N0KDp3aGVyZSg6c3RhdGUocmVhZG9ubHkpKTpub3QoW25lZ2F0aXZlXSkpIHtcbiAgLS1zYmItZm9ybS1maWVsZC1sYWJlbC1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3Jhbml0ZSksIHZhcigtLXNiYi1jb2xvci1zbW9rZSkpO1xuICAtLXNiYi1mb3JtLWZpZWxkLXByZWZpeC1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3Jhbml0ZSksIHZhcigtLXNiYi1jb2xvci1zdG9ybSkpO1xufVxuXG4vLyA6d2hlcmUgaXMgdG8gYWxpZ24gc3BlY2lmaWNpdHlcbjpob3N0KDp3aGVyZSg6c3RhdGUoZm9jdXMpKSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1jb2xvcjogdmFyKC0tc2JiLWJvcmRlci1jb2xvci0zKTtcbiAgLS1zYmItZm9ybS1maWVsZC1wcmVmaXgtY29sb3I6IHZhcigtLXNiYi1jb2xvci0zKTtcbiAgLS1zYmItZm9ybS1maWVsZC1ib3JkZXItd2lkdGg6IHZhcigtLXNiYi1ib3JkZXItd2lkdGgtMngpO1xufVxuXG4vLyA6d2hlcmUgaXMgdG8gYWxpZ24gc3BlY2lmaWNpdHlcbjpob3N0KDp3aGVyZSg6c3RhdGUoZm9jdXMpKVtuZWdhdGl2ZV0pIHtcbiAgLS1zYmItZm9ybS1maWVsZC1ib3JkZXItY29sb3I6IHZhcigtLXNiYi1ib3JkZXItY29sb3ItMy1uZWdhdGl2ZSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtcHJlZml4LWNvbG9yOiB2YXIoLS1zYmItY29sb3ItMy1uZWdhdGl2ZSk7XG59XG5cbi8vIFdlIG11c3Qgbm90IHVzZSA6d2hlcmUgaGVyZSwgYXMgaXQgbmVlZHMgdGhlIGFkZGVkIHNwZWNpZmljaXR5IHRvIHByb3Blcmx5IHdvcmtcbjpob3N0KDpzdGF0ZShmb2N1cykpIHtcbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLWNvbG9yOiBIaWdobGlnaHQ7XG4gICAgLS1zYmItZm9ybS1maWVsZC1wcmVmaXgtY29sb3I6IEhpZ2hsaWdodDtcbiAgfVxufVxuXG4vLyA6d2hlcmUgaXMgdG8gYWxpZ24gc3BlY2lmaWNpdHlcbjpob3N0KDpub3QoOndoZXJlKDpzdGF0ZShoYXMtZXJyb3IpLCA6c3RhdGUoaGFzLWhpbnQpKSkpIHtcbiAgLS1zYmItZm9ybS1maWVsZC1oaW50LXBhZGRpbmctYmxvY2stc3RhcnQ6IDA7XG59XG5cbjpob3N0KFtmbG9hdGluZy1sYWJlbF0pIHtcbiAgLS1zYmItc2VsZWN0LXBsYWNlaG9sZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgLS1zYmItc2VsZWN0LXBsYWNlaG9sZGVyLWNvbG9yOiBDYW52YXM7XG4gIH1cbn1cblxuOmhvc3QoOmlzKDpub3QoOnN0YXRlKHNsb3R0ZWQtbGFiZWwpKSwgW2hpZGRlbi1sYWJlbF0pKSB7XG4gIC0tc2JiLWZvcm0tZmllbGQtbGFiZWwtc2l6ZTogMHJlbTtcbiAgLS1fc2JiLWZvcm0tZmllbGQtbGFiZWwtdG8taW5wdXQtb3ZlcmxhcHBpbmc6IDByZW07XG59XG5cbi8vIFNob3VsZCBiZSBhZnRlciBvdGhlciBkZWZpbml0aW9ucyB0byBvdmVycmlkZSBvdmVyZmxvd1xuLy8gOndoZXJlIGlzIHRvIGFsaWduIHNwZWNpZmljaXR5XG46aG9zdCg6d2hlcmUoOnN0YXRlKGlucHV0LXR5cGUtc2JiLXNsaWRlcikpKSB7XG4gIC0tc2JiLWZvcm0tZmllbGQtb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbi5zYmItZm9ybS1maWVsZF9fc3BhY2Utd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcblxuICBAaW5jbHVkZSBzYmIuemVyby13aWR0aC1zcGFjZTtcbn1cblxuLnNiYi1mb3JtLWZpZWxkX193cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleDogMTtcbiAgZ2FwOiB2YXIoLS1zYmItZm9ybS1maWVsZC1nYXApO1xuICBwYWRkaW5nLWlubGluZTogdmFyKC0tc2JiLWZvcm0tZmllbGQtcGFkZGluZy1pbmxpbmUpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItZm9ybS1maWVsZC1ib3JkZXItcmFkaXVzKTtcbiAgbWluLWhlaWdodDogdmFyKC0tc2JiLWZvcm0tZmllbGQtbWluLWhlaWdodCk7XG4gIG1heC1oZWlnaHQ6IHZhcigtLXNiYi1mb3JtLWZpZWxkLW1heC1oZWlnaHQpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItZm9ybS1maWVsZC1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIFVzZSA6OmJlZm9yZSB0byBhdm9pZCBjb250ZW50IHNoaWZ0aW5nIHdoZW4gYm9yZGVyIHdpZHRoIGNoYW5nZXMuXG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAwO1xuICAgIGJvcmRlcjogdmFyKC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLXdpZHRoKSB2YXIoLS1zYmItZm9ybS1maWVsZC1ib3JkZXItc3R5bGUpXG4gICAgICB2YXIoLS1zYmItZm9ybS1maWVsZC1ib3JkZXItY29sb3IpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1yYWRpdXMpO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG5cbiAgLy8gOndoZXJlIGlzIHRvIGFsaWduIHNwZWNpZmljaXR5XG4gIDpob3N0KDp3aGVyZSg6c3RhdGUoZm9jdXMpOnN0YXRlKGZvY3VzLW9yaWdpbi1rZXlib2FyZCkpKSAmIHtcbiAgICBAaW5jbHVkZSBzYmIuZm9jdXMtb3V0bGluZTtcblxuICAgIG91dGxpbmUtb2Zmc2V0OiB2YXIoLS1zYmItZm9ybS1maWVsZC1vdXRsaW5lLW9mZnNldCwgdmFyKC0tc2JiLWZvY3VzLW91dGxpbmUtb2Zmc2V0KSk7XG4gIH1cblxuICAvLyBJbiBoaWdoIGNvbnRyYXN0LCB0aGVyZSBpcyBubyBib3JkZXJsZXNzIHZhcmlhbnRcbiAgQG1lZGlhIChmb3JjZWQtY29sb3JzOiBub25lKSB7XG4gICAgOmhvc3QoOmlzKFtib3JkZXJsZXNzXSwgOnN0YXRlKGlucHV0LXR5cGUtc2JiLXNsaWRlcikpKSAmIHtcbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgOmhvc3QoOndoZXJlKDpzdGF0ZShmb2N1cyksIDpzdGF0ZShkaXNhYmxlZCkpW2JvcmRlcmxlc3NdKSAmIHtcbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm9yZGVyLWJsb2NrLWVuZDogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0xeCkgdmFyKC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLXN0eWxlKVxuICAgICAgICAgIHZhcigtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1jb2xvcik7XG4gICAgICAgIGluc2V0LWlubGluZTogdmFyKC0tc2JiLWZvcm0tZmllbGQtcGFkZGluZy1pbmxpbmUpO1xuICAgICAgICBpbnNldC1ibG9jay1lbmQ6IDA7XG4gICAgICAgIHotaW5kZXg6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWZvY3VzLXVuZGVybGluZS16LWluZGV4LCBpbml0aWFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuOjpzbG90dGVkKCpbc2xvdD0ncHJlZml4J10pIHtcbiAgY29sb3I6IHZhcigtLXNiYi1mb3JtLWZpZWxkLXByZWZpeC1jb2xvcik7XG59XG5cbi8vIEVuc3VyZSBzbG90dGVkIGlubGluZSBlbGVtZW50cyBhcmUgdmVydGljYWxseSBjZW50ZXJlZFxuOjpzbG90dGVkKCpbc2xvdD0ncHJlZml4J10pLFxuOjpzbG90dGVkKCpbc2xvdD0nc3VmZml4J10pIHtcbiAgZGlzcGxheTogZmxleDtcbiAgbWluLXdpZHRoOiB2YXIoLS1zYmItaWNvbi1zdmctd2lkdGgpO1xuICBtYXJnaW4tYmxvY2stc3RhcnQ6IGNhbGMoKHZhcigtLXNiYi1mb3JtLWZpZWxkLW1pbi1oZWlnaHQpIC0gdmFyKC0tc2JiLXNpemUtaWNvbi11aS1zbWFsbCkpIC8gMik7XG59XG5cbjo6c2xvdHRlZChzYmItZm9ybS1maWVsZC1jbGVhcikge1xuICA6aG9zdCg6d2hlcmUoOnN0YXRlKGVtcHR5KSwgOnN0YXRlKGRpc2FibGVkKSwgOnN0YXRlKHJlYWRvbmx5KSkpICYge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuc2xvdFtuYW1lPSdoaW50J10ge1xuICA6aG9zdCg6c3RhdGUoaGFzLWVycm9yKSkgJiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG46OnNsb3R0ZWQoc2JiLWZvcm0tZmllbGQtdGV4dC1jb3VudGVyKSB7XG4gIDpob3N0KDp3aGVyZSg6c3RhdGUoZGlzYWJsZWQpLCA6c3RhdGUocmVhZG9ubHkpKSkgJiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vLyBBcyB0aGUgY2FsZW5kYXIgc2hvdWxkIGJlIHNob3duIGJlbG93IHRoZSBmb3JtIGZpZWxkIGJvcmRlciwgd2UgaGF2ZSB0byBzdHJldGNoIHRoZSB0b2dnbGUncyBoZWlnaHQuXG4vLyBUT0RPOiBNYXliZSBtb3ZlIHRoaXMgdG8gdGhlIGRhdGVwaWNrZXItdG9nZ2xlIGNvbXBvbmVudC5cbjo6c2xvdHRlZChzYmItZGF0ZXBpY2tlci10b2dnbGUpIHtcbiAgcGFkZGluZy1ibG9jay1lbmQ6IGNhbGMoKHZhcigtLXNiYi1mb3JtLWZpZWxkLW1pbi1oZWlnaHQpIC0gdmFyKC0tc2JiLXNpemUtaWNvbi11aS1zbWFsbCkpIC8gMik7XG59XG5cbkBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgLy8gQWxpZ24gd2l0aCBwcmVmaXggY29sb3JcbiAgOjpzbG90dGVkKCpbc2xvdD0nc3VmZml4J10pIHtcbiAgICBjb2xvcjogdmFyKC0tc2JiLWZvcm0tZmllbGQtcHJlZml4LWNvbG9yKTtcbiAgfVxufVxuXG4uc2JiLWZvcm0tZmllbGRfX3NlbGVjdC1pbnB1dC1pY29uIHtcbiAgQGluY2x1ZGUgc2JiLmFic29sdXRlLWNlbnRlci15O1xuXG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQtaW5saW5lLWVuZDogMDtcbiAgbWFyZ2luLWJsb2NrLXN0YXJ0OiBjYWxjKC0xICogdmFyKC0tc2JiLWZvcm0tZmllbGQtbWFyZ2luLWJsb2NrLXN0YXJ0KSAvIDIpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgY29sb3I6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWFycm93LWNvbG9yKTtcblxuICA6aG9zdChcbiAgICAgIDppcyhcbiAgICAgICAgOnN0YXRlKGlucHV0LXR5cGUtc2VsZWN0KSxcbiAgICAgICAgOnN0YXRlKGlucHV0LXR5cGUtc2JiLXNlbGVjdCksXG4gICAgICAgIDpzdGF0ZShleHBsaWNpdC1pbnB1dC10eXBlLXNlbGVjdClcbiAgICAgIClcbiAgICApXG4gICAgJiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG59XG5cbi5zYmItZm9ybS1maWVsZF9faW5wdXQtY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZmxleDogMSAxIGF1dG87XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zYmItZm9ybS1maWVsZC1tYXJnaW4tYmxvY2stc3RhcnQpO1xuXG4gIC8vIFByZXZlbnRzIG92ZXJmbG93aW5nIHBhcmVudFxuICBtaW4td2lkdGg6IDA7XG59XG5cbi5zYmItZm9ybS1maWVsZF9fbGFiZWwtc3BhY2VyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiBjYWxjKHZhcigtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLXRleHQtc2l6ZSkgKiB2YXIoLS1zYmItdHlwby1saW5lLWhlaWdodC10ZXh0KSk7XG5cbiAgLy8gTW92ZXMgbGFiZWwgZG93biBhbmQgaW5wdXQgdXAgdG8gbWVldCBwb3NpdGlvbmluZyByZXF1aXJlbWVudHNcbiAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tX3NiYi1mb3JtLWZpZWxkLXNwYWNlci1tYXJnaW4tYmxvY2stZW5kKTtcbn1cblxuLy8gVG8gYXZvaWQgZG91YmxlZCBwYXlsb2FkLCB3ZSBncm91cCB0aGUgcnVsZXMuXG46aXMoLnNiYi1mb3JtLWZpZWxkX19sYWJlbCwgLnNiYi1mb3JtLWZpZWxkX19sYWJlbC1zcGFjZXIpIHtcbiAgOmhvc3QoOm5vdCg6c3RhdGUoc2xvdHRlZC1sYWJlbCkpKSAmIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgOmhvc3QoW2hpZGRlbi1sYWJlbF0pICYge1xuICAgIEBpbmNsdWRlIHNiYi5zY3JlZW4tcmVhZGVyLW9ubHk7XG4gIH1cbn1cblxuLnNiYi1mb3JtLWZpZWxkX19sYWJlbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgY3Vyc29yOiB2YXIoLS1zYmItY3Vyc29yLWRlZmF1bHQpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0LWJsb2NrLXN0YXJ0OiAwO1xuICBjb2xvcjogdmFyKC0tc2JiLWZvcm0tZmllbGQtbGFiZWwtY29sb3IpO1xuICBmb250LXNpemU6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLXRleHQtc2l6ZSk7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zYmItdHlwby1sZXR0ZXItc3BhY2luZy10ZXh0KTtcblxuICA6aG9zdCg6d2hlcmUoOnN0YXRlKGlucHV0LXR5cGUtc2VsZWN0KSwgOnN0YXRlKGlucHV0LXR5cGUtc2JiLXNlbGVjdCkpKSAmIHtcbiAgICBwYWRkaW5nLWlubGluZS1lbmQ6IHZhcigtLXNiYi1mb3JtLWZpZWxkLXNlbGVjdC1pbmxpbmUtcGFkZGluZy1lbmQpO1xuICB9XG5cbiAgOmhvc3QoW2Zsb2F0aW5nLWxhYmVsXSkgJiB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyAvLyBXZSBzaG91bGRuJ3QgY2F0Y2ggbW91c2UgZXZlbnRzIChsZXQgdGhlbSB0aHJvdWdoKS5cbiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgZm9udC1zaXplO1xuXG4gICAgdHJhbnNpdGlvbjoge1xuICAgICAgZHVyYXRpb246IHZhcigtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbiwgdmFyKC0tc2JiLWFuaW1hdGlvbi1kdXJhdGlvbi0yeCkpO1xuICAgICAgdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItYW5pbWF0aW9uLWVhc2luZyk7XG4gICAgICBwcm9wZXJ0eTogdHJhbnNmb3JtLCBmb250LXNpemU7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgZmxvYXRpbmctbGFiZWwgaXMgYWN0aXZhdGVkIGFuZCB0aGVyZSBpcyBubyBmb2N1cyBpbiBpdCAoZXhjZXB0IGZvciBzZWxlY3QpIGFuZCBubyBwb3B1cCBpcyBvcGVuXG4gIC8vIGFuZCBpbnB1dCBpcyBlbXB0eSB0aGVuIGFwcGx5IHRoZSBsYWJlbCB0cmFuc2l0aW9uLlxuICAvLyBJZiBpdCBpcyBlbXB0eSBhbmQgcmVhZG9ubHksIGFsd2F5cyBhcHBseSB0cmFuc2l0aW9uXG4gIC8vIDp3aGVyZSBpcyB0byBhbGlnbiBzcGVjaWZpY2l0eVxuICA6aG9zdChcbiAgICAgIFtmbG9hdGluZy1sYWJlbF06aXMoXG4gICAgICAgICAgOm5vdChcbiAgICAgICAgICAgIDp3aGVyZSg6c3RhdGUoZm9jdXMpKTpub3QoOndoZXJlKDpzdGF0ZShpbnB1dC10eXBlLXNiYi1zZWxlY3QpKSksXG4gICAgICAgICAgICA6d2hlcmUoOnN0YXRlKGhhcy1wb3B1cC1vcGVuKSlcbiAgICAgICAgICApLFxuICAgICAgICAgIDp3aGVyZSg6c3RhdGUocmVhZG9ubHkpKVxuICAgICAgICApOndoZXJlKDpzdGF0ZShlbXB0eSkpXG4gICAgKVxuICAgICYge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2JiLWZvcm0tZmllbGQtaW5wdXQtdGV4dC1zaXplKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkodmFyKC0tX3NiYi1mb3JtLWZpZWxkLWZsb2F0aW5nLWxhYmVsLXRyYW5zZm9ybSkpO1xuICB9XG5cbiAgLy8gOndoZXJlIGlzIHRvIGFsaWduIHNwZWNpZmljaXR5XG4gIDpob3N0KDp3aGVyZSg6c3RhdGUoaW5wdXQtdHlwZS10ZXh0YXJlYSkpKSAmIHtcbiAgICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgICAvLyBUaGUgYmFja2dyb3VuZCBvZiB0aGUgdGV4dGFyZWEgaXMgc2V0IHRvIENhbnZhcyBhbmQgdGhlcmVmb3JlIGhpZGVzIHRoZSBsYWJlbCBiZWhpbmQuXG4gICAgICAvLyBCeSBzZXR0aW5nIHRoZSB6LWluZGV4IHRvIDEsIHdlIG1vdmUgdGhlIGxhYmVsIGluIGZyb250IG9mIHRoZSB0ZXh0YXJlYS5cbiAgICAgIHotaW5kZXg6IDE7XG4gICAgfVxuICB9XG59XG5cbi5zYmItZm9ybS1maWVsZF9fbGFiZWwtZWxsaXBzaXMge1xuICBAaW5jbHVkZSBzYmIuZWxsaXBzaXM7XG59XG5cbi5zYmItZm9ybS1maWVsZF9faW5wdXQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4OiAxO1xuICBhbGlnbi1pdGVtczogc3RhcnQ7XG5cbiAgOmhvc3QoXG4gICAgICA6aXMoXG4gICAgICAgIDpzdGF0ZShpbnB1dC10eXBlLWlucHV0KSxcbiAgICAgICAgOnN0YXRlKGlucHV0LXR5cGUtc2VsZWN0KSxcbiAgICAgICAgOnN0YXRlKGlucHV0LXR5cGUtc2JiLXNlbGVjdCksXG4gICAgICAgIDpzdGF0ZShpbnB1dC10eXBlLXNiYi1kYXRlLWlucHV0KSxcbiAgICAgICAgOnN0YXRlKGlucHV0LXR5cGUtc2JiLXRpbWUtaW5wdXQpXG4gICAgICApXG4gICAgKVxuICAgICYge1xuICAgIC8vIEluIHNpemUgcywgdGhlIG5hdHVyYWwgaGVpZ2h0IG9mIHRoZSB0ZXh0IGlucHV0IGlzIHRvbyBzbWFsbC5cbiAgICAvLyBUbyBub3QgcmVzZXJ2ZSB0b28gbXVjaCBzcGFjZSwgd2UgZGVjcmVhc2UgdGhlIGhlaWdodC5cbiAgICAvLyBUaGUgdmFyaWFibGUgaXMgc2V0IHRvIC0ycHggZm9yIHNpemUgcyAoZXhwbGljaXQgb3IgbGVhbi10aGVtZSBkZWZhdWx0KSBhbmQgMCBvdGhlcndpc2UuXG4gICAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tX3NiYi1mb3JtLWZpZWxkLWlucHV0LW1hcmdpbi1ibG9jay1lbmQpO1xuICB9XG59XG5cbi5zYmItZm9ybS1maWVsZF9faGludCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1pbi1oZWlnaHQ6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWhpbnQtbWluLWhlaWdodCk7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIG1hcmdpbi1ibG9jay1zdGFydDogdmFyKFxuICAgIC0tc2JiLWZvcm0tZmllbGQtaGludC1wYWRkaW5nLWJsb2NrLXN0YXJ0LW92ZXJyaWRlLFxuICAgIHZhcigtLXNiYi1mb3JtLWZpZWxkLWhpbnQtcGFkZGluZy1ibG9jay1zdGFydClcbiAgKTtcbn1cbiIsImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB1bnNhZmVDU1MsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB0eXBlIHsgU2JiQXV0b2NvbXBsZXRlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9hdXRvY29tcGxldGUucHVyZS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkNoaXBHcm91cEVsZW1lbnQgfSBmcm9tICcuLi8uLi9jaGlwLnB1cmUudHMnO1xuaW1wb3J0IHtcbiAgYXBwZW5kQXJpYUVsZW1lbnRzLFxuICBmb3JjZVR5cGUsXG4gIGkxOG5PcHRpb25hbCxcbiAgcmVtb3ZlQXJpYUVsZW1lbnRzLFxuICBTYmJFbGVtZW50LFxuICB0eXBlIFNiYkVsZW1lbnRUeXBlLFxuICB0eXBlIFNiYkZvcm1Bc3NvY2lhdGVkSW5wdXRNaXhpblR5cGUsXG4gIHNiYklucHV0TW9kYWxpdHlEZXRlY3RvcixcbiAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLFxuICBTYmJOZWdhdGl2ZU1peGluLFxufSBmcm9tICcuLi8uLi9jb3JlLnRzJztcbmltcG9ydCB7IFNiYkljb25FbGVtZW50IH0gZnJvbSAnLi4vLi4vaWNvbi5wdXJlLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiU2VsZWN0RWxlbWVudCB9IGZyb20gJy4uLy4uL3NlbGVjdC5wdXJlLnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZm9ybS1maWVsZC5zY3NzP2lubGluZSc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG5jb25zdCBwYXRjaGVkSW5wdXRzID0gbmV3IFdlYWtNYXA8SFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQsIFByb3BlcnR5RGVzY3JpcHRvcj4oKTtcbmNvbnN0IG5hdGl2ZUlucHV0RWxlbWVudHMgPSBbJ2lucHV0JywgJ3RleHRhcmVhJywgJ3NlbGVjdCddO1xuXG4vKiogQW4gaW50ZXJmYWNlIHdoaWNoIGFsbG93cyBhIGNvbnRyb2wgdG8gd29yayBpbnNpZGUgYSBgU2JiRm9ybUZpZWxkYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2JiRm9ybUZpZWxkRWxlbWVudENvbnRyb2wge1xuICAvKiogVGhlIGlkIG9mIHRoZSBmb3JtIGZpZWxkIGNvbnRyb2wuICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSBjb250cm9sIGlzIGVtcHR5LiAqL1xuICByZWFkb25seSBlbXB0eTogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlIGNvbnRyb2wgaXMgcmVhZG9ubHkuICovXG4gIHJlYWRvbmx5IHJlYWRPbmx5PzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlIGNvbnRyb2wgaXMgZGlzYWJsZWQuICovXG4gIHJlYWRvbmx5IGRpc2FibGVkOiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIGNvbnRyb2wuIFRoaXMgaXMgdXNlZCBhcyBhIHN0YXRlIHJlcHJlc2VudGF0aW9uLlxuICAgKiBXaGVuIHVzaW5nICdzZWxlY3QnLCB0aGUgZm9ybSBmaWVsZCB3aWxsIGRpc3BsYXkgdGhlIGRyb3Bkb3duIGljb24uXG4gICAqL1xuICByZWFkb25seSB0eXBlPzogJ3NlbGVjdCcgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgYSBjbGljayBvbiB0aGUgY29udHJvbCdzIGNvbnRhaW5lci5cbiAgICogSWYgbm90IGltcGxlbWVudGVkLCBmb2N1cygpIG9mIHRoZSBlbGVtZW50IGlzIGNhbGxlZC5cbiAgICovXG4gIG9uQ29udGFpbmVyQ2xpY2s/KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIFNiYkZvcm1GaWVsZENvbnRyb2xFdmVudCBleHRlbmRzIEV2ZW50IHtcbiAgcHJpdmF0ZSBfY29udHJvbDogU2JiRm9ybUZpZWxkRWxlbWVudENvbnRyb2wgfCBudWxsO1xuXG4gIHB1YmxpYyBnZXQgY29udHJvbCgpOiBTYmJGb3JtRmllbGRFbGVtZW50Q29udHJvbCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9jb250cm9sO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvbnRyb2w6IFNiYkZvcm1GaWVsZEVsZW1lbnRDb250cm9sIHwgbnVsbCkge1xuICAgIHN1cGVyKCdmb3JtZmllbGRjb250cm9sJyk7XG4gICAgdGhpcy5fY29udHJvbCA9IGNvbnRyb2w7XG4gIH1cbn1cblxuLyoqXG4gKiBJdCB3cmFwcyBhbiBpbnB1dCBlbGVtZW50IGFkZGluZyBsYWJlbCwgZXJyb3JzLCBpY29uLCBldGMuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBpbnB1dC9zZWxlY3Qgb3IgYSBzdXBwb3J0ZWQgbm9uLW5hdGl2ZSBlbGVtZW50LlxuICogQHNsb3QgbGFiZWwgLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhIGxhYmVsLlxuICogQHNsb3QgcHJlZml4IC0gVXNlIHRoaXMgc2xvdCB0byByZW5kZXIgYW4gaWNvbiBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBpbnB1dC5cbiAqIEBzbG90IHN1ZmZpeCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGljb24gb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGlucHV0LlxuICogQHNsb3QgZXJyb3IgLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBlcnJvci5cbiAqIEBzbG90IGhpbnQgLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBgPHNiYi1oaW50PmAgb3IgYW4gYDxzYmItZm9ybS1maWVsZC10ZXh0LWNvdW50ZXI+YCBlbGVtZW50LlxuICpcbiAqIEBjc3Nwcm9wIFstLXNiYi1mb3JtLWZpZWxkLW91dGxpbmUtb2Zmc2V0XSAtIFRvIG92ZXJyaWRlIHRoZSBmb2N1cyBvdXRsaW5lIG9mZnNldCxcbiAqIEBjc3Nwcm9wIFstLXNiYi1mb3JtLWZpZWxkLWZvY3VzLXVuZGVybGluZS16LWluZGV4XSAtIFRvIG92ZXJyaWRlIHRoZSB6LWluZGV4IG9mIHRoZSBmb2N1cyB1bmRlcmxpbmUgZWZmZWN0LFxuICovXG5leHBvcnQgY2xhc3MgU2JiRm9ybUZpZWxkRWxlbWVudCBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiRWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLWZvcm0tZmllbGQnO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIGVsZW1lbnREZXBlbmRlbmNpZXM6IFNiYkVsZW1lbnRUeXBlW10gPSBbU2JiSWNvbkVsZW1lbnRdO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbdW5zYWZlQ1NTKHN0eWxlKV07XG5cbiAgLy8gTGlzdCBvZiBlbGVtZW50cyB0aGF0IHNob3VsZCBub3QgZm9jdXMgaW5wdXQgb24gY2xpY2tcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhjbHVkZWRGb2N1c0VsZW1lbnRzID0gWydidXR0b24nLCAnc2JiLXBvcG92ZXInLCAnc2JiLW9wdGlvbicsICdzYmItY2hpcCddO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zsb2F0aW5nTGFiZWxTdXBwb3J0ZWRJbnB1dEVsZW1lbnRzID0gW1xuICAgICdpbnB1dCcsXG4gICAgJ3NlbGVjdCcsXG4gICAgJ3RleHRhcmVhJyxcbiAgICAnc2JiLXNlbGVjdCcsXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZmxvYXRpbmdMYWJlbFN1cHBvcnRlZElucHV0VHlwZXMgPSBbXG4gICAgJ2VtYWlsJyxcbiAgICAnbnVtYmVyJyxcbiAgICAncGFzc3dvcmQnLFxuICAgICdzZWFyY2gnLFxuICAgICd0ZWwnLFxuICAgICd0ZXh0JyxcbiAgICAndXJsJyxcbiAgXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZXNlcnZlIHNwYWNlIGZvciBhbiBlcnJvciBtZXNzYWdlLCBoaW50IG9yIHRleHQtY291bnRlci5cbiAgICogYG5vbmVgIGRvZXMgbm90IHJlc2VydmUgYW55IHNwYWNlLlxuICAgKiBgcmVzZXJ2ZWAgZG9lcyByZXNlcnZlIG9uZSByb3cgZm9yIGFuIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdlcnJvci1zcGFjZScsIHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGFjY2Vzc29yIGVycm9yU3BhY2U6ICdub25lJyB8ICdyZXNlcnZlJyA9ICdub25lJztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGlucHV0IGlzIG9wdGlvbmFsLlxuICAgKiBAZGVwcmVjYXRlZCBTZXQgdGhlIChvcHRpb25hbCkgbGFiZWwgdGV4dCBtYW51YWxseS4gV2lsbCBiZSByZW1vdmVkIHdpdGggbmV4dCBtYWpvciB2ZXJzaW9uLlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIG9wdGlvbmFsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNpemUgdmFyaWFudCwgZWl0aGVyIHMgKGxlYW4gdGhlbWUgZGVmYXVsdCksIG0gKHN0YW5kYXJkIHRoZW1lIGRlZmF1bHQpIG9yIGwuXG4gICAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciBzaXplOiAncycgfCAnbScgfCAnbCcgfCBudWxsID0gbnVsbDtcblxuICAvKiogV2hldGhlciB0byBkaXNwbGF5IHRoZSBmb3JtIGZpZWxkIHdpdGhvdXQgYSBib3JkZXIuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBib3JkZXJsZXNzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIERlZmluZXMgdGhlIHdpZHRoIG9mIHRoZSBjb21wb25lbnQ6XG4gICAqIC0gYGRlZmF1bHRgOiB0aGUgY29tcG9uZW50IGhhcyBkZWZpbmVkIHdpZHRoIGFuZCBtaW4td2lkdGg7XG4gICAqIC0gYGNvbGxhcHNlYDogdGhlIGNvbXBvbmVudCBhZGFwdHMgaXRzZWxmIHRvIGl0cyBpbm5lciBpbnB1dCBjb250ZW50LiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciB3aWR0aDogJ2RlZmF1bHQnIHwgJ2NvbGxhcHNlJyA9ICdkZWZhdWx0JztcblxuICAvKiogV2hldGhlciB0byB2aXN1YWxseSBoaWRlIHRoZSBsYWJlbC4gSWYgaGlkZGVuLCBzY3JlZW4gcmVhZGVycyB3aWxsIHN0aWxsIHJlYWQgaXQuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdoaWRkZW4tbGFiZWwnLCByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBoaWRkZW5MYWJlbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBsYWJlbCBzaG91bGQgZmxvYXQuIElmIGFjdGl2YXRlZCwgdGhlIHBsYWNlaG9sZGVyIG9mIHRoZSBpbnB1dCBpcyBoaWRkZW4uICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdmbG9hdGluZy1sYWJlbCcsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGZsb2F0aW5nTGFiZWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGdldCB0aGUgYGVycm9yYCBzbG90LiAqL1xuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9lcnJvckVsZW1lbnRzOiBFbGVtZW50W10gPSBbXTtcblxuICAvKiogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGdldCB0aGUgYGhpbnRgIHNsb3QuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2hpbnRFbGVtZW50czogRWxlbWVudFtdID0gW107XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgc2xvdHRlZCBpbnB1dCBlbGVtZW50LiAqL1xuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9pbnB1dDogSFRNTElucHV0RWxlbWVudCB8IEhUTUxTZWxlY3RFbGVtZW50IHwgSFRNTEVsZW1lbnQgfCBudWxsID1cbiAgICBudWxsO1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHNsb3R0ZWQgbGFiZWwgZWxlbWVudHMuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2xhYmVsITogSFRNTExhYmVsRWxlbWVudDtcblxuICAvKiogUmV0dXJucyB0aGUgaW5wdXQgZWxlbWVudC4gKi9cbiAgcHVibGljIGdldCBpbnB1dEVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IEhUTUxTZWxlY3RFbGVtZW50IHwgSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXQ7XG4gIH1cblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBzbG90dGVkIGxhYmVsLiAqL1xuICBwdWJsaWMgZ2V0IGxhYmVsKCk6IEhUTUxMYWJlbEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWw7XG4gIH1cblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgLyoqXG4gICAqIExpc3RlbnMgdG8gdGhlIGNoYW5nZXMgb24gYHJlYWRvbmx5YCBhbmQgYGRpc2FibGVkYCBhdHRyaWJ1dGVzIG9mIGA8aW5wdXQ+YC5cbiAgICovXG4gIHByaXZhdGUgX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zOiBNdXRhdGlvblJlY29yZFtdKSA9PiB7XG4gICAgICAgIGlmIChtdXRhdGlvbnMuc29tZSgobSkgPT4gbS50eXBlID09PSAnYXR0cmlidXRlcycpICYmIHRoaXMuX2lucHV0KSB7XG4gICAgICAgICAgdGhpcy5fcmVhZElucHV0U3RhdGUoKTtcbiAgICAgICAgICB0aGlzLl9yZWdpc3RlcklucHV0Rm9ybUxpc3RlbmVyKCk7XG4gICAgICAgICAgdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCk7XG4gICAgICAgICAgLy8gVXNlZCB0byBub3RpZnkgdGhlIHJlbWFpbmluZyBjaGFycyBjb21wb25lbnQuXG4gICAgICAgICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ8m1aW5wdXRhdHRyaWJ1dGVjaGFuZ2UnKSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgOiBudWxsO1xuXG4gIHByaXZhdGUgX2lucHV0Rm9ybUFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgcHJpdmF0ZSBfY29udHJvbDogU2JiRm9ybUZpZWxkRWxlbWVudENvbnRyb2wgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfcHJldmlvdXNUeXBlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LihcbiAgICAgICdmb2N1c2luJyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZXZlbnQudGFyZ2V0ID09PSB0aGlzLmlucHV0RWxlbWVudCB8fFxuICAgICAgICAgIGV2ZW50LnRhcmdldCA9PT0gKHRoaXMuaW5wdXRFbGVtZW50IGFzIFNiYlNlbGVjdEVsZW1lbnQgfCB1bmRlZmluZWQpPy5pbnB1dEVsZW1lbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmFkZCgnZm9jdXMnKTtcbiAgICAgICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKGBmb2N1cy1vcmlnaW4tJHtzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IubW9zdFJlY2VudE1vZGFsaXR5fWApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBwYXNzaXZlOiB0cnVlIH0sXG4gICAgKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LihcbiAgICAgICdmb2N1c291dCcsXG4gICAgICAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGV2ZW50LnRhcmdldCA9PT0gdGhpcy5pbnB1dEVsZW1lbnQgfHxcbiAgICAgICAgICBldmVudC50YXJnZXQgPT09ICh0aGlzLmlucHV0RWxlbWVudCBhcyBTYmJTZWxlY3RFbGVtZW50IHwgdW5kZWZpbmVkKT8uaW5wdXRFbGVtZW50XG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuICAgICAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUoJ2ZvY3VzJyk7XG4gICAgICAgICAgZm9yIChjb25zdCBzdGF0ZSBvZiB0aGlzLmludGVybmFscy5zdGF0ZXMpIHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5zdGFydHNXaXRoKCdmb2N1cy1vcmlnaW4tJykpIHtcbiAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZShzdGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBwYXNzaXZlOiB0cnVlIH0sXG4gICAgKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4gdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCkpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignZGlzcGxheXZhbHVlY2hhbmdlJywgKCkgPT4gdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCkpO1xuICAgIC8vIFdlIHdhbnQgdG8gcHJldmVudCB0aGUgbmF0aXZlIGJyb3dzZXIgdmFsaWRhdGlvbiBtZXNzYWdlIHBvcG92ZXJcbiAgICAvLyB0byBiZSBzaG93bi4gVGhpcyBhbHNvIHByZXZlbnRzIGEgYnVnIGluIFdlYktpdCwgd2hpY2ggd291bGQgbm90XG4gICAgLy8gYWxsb3cgaG9zdCBhcyB0aGUgdmFsaWRpdHkgYW5jaG9yOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5ODMyXG4gICAgLy8gVGhpcyBpcyBkdXBsaWNhdGVkIGZyb20gdGhlIGZvcm0gYXNzb2NpYXRlZCBtaXhpbiBmb3IgdGhlIG5hdGl2ZVxuICAgIC8vIGlucHV0IGNvbnRyb2xzIChlLmcuIDxpbnB1dD4gb3IgPHNlbGVjdD4pLlxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignaW52YWxpZCcsIChlKSA9PiBlLnByZXZlbnREZWZhdWx0KCksIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2Zvcm1maWVsZGNvbnRyb2wnLCAoZTogU2JiRm9ybUZpZWxkQ29udHJvbEV2ZW50KSA9PiB7XG4gICAgICB0aGlzLl9jb250cm9sID0gZS5jb250cm9sO1xuICAgICAgaWYgKHRoaXMuX2Nvbm5lY3RJbnB1dEVsZW1lbnQoKSA9PT0gJ3VuY2hhbmdlZCcpIHtcbiAgICAgICAgdGhpcy5fYXNzaWduQXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoKTtcbiAgICAgICAgdGhpcy5fcmVhZElucHV0U3RhdGUoKTtcbiAgICAgICAgdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9hc3NpZ25TbG90cygpO1xuICAgIHRoaXMuX2Nvbm5lY3RJbnB1dEVsZW1lbnQoKTtcbiAgICB0aGlzLl9zeW5jTmVnYXRpdmUoKTtcbiAgICB0aGlzLl9zeW5jU2l6ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCduZWdhdGl2ZScpKSB7XG4gICAgICB0aGlzLl9zeW5jTmVnYXRpdmUoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnc2l6ZScpKSB7XG4gICAgICB0aGlzLl9zeW5jU2l6ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5faW5wdXRGb3JtQWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgaWYgKHRoaXMuX2lucHV0Py5sb2NhbE5hbWUgPT09ICdpbnB1dCcgfHwgdGhpcy5faW5wdXQ/LmxvY2FsTmFtZSA9PT0gJ3RleHRhcmVhJykge1xuICAgICAgdGhpcy5fdW5wYXRjaElucHV0VmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVXcmFwcGVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faXNFbGVtZW50Rm9jdXNFeGNsdWRlZChldmVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29udHJvbD8ub25Db250YWluZXJDbGljaykge1xuICAgICAgdGhpcy5fY29udHJvbD8ub25Db250YWluZXJDbGljayhldmVudCk7XG4gICAgfSBlbHNlIGlmICgoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpLmxvY2FsTmFtZSAhPT0gJ2xhYmVsJykge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLl9pbnB1dD8ubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcgJiZcbiAgICAgICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkubG9jYWxOYW1lICE9PSAnc2JiLXNlbGVjdCdcbiAgICAgICkge1xuICAgICAgICB0aGlzLl9pbnB1dC5jbGljaygpO1xuICAgICAgfVxuICAgICAgdGhpcy5faW5wdXQ/LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNFbGVtZW50Rm9jdXNFeGNsdWRlZChldmVudDogRXZlbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZXZlbnRcbiAgICAgIC5jb21wb3NlZFBhdGgoKVxuICAgICAgLnNvbWUoXG4gICAgICAgIChlbCkgPT5cbiAgICAgICAgICAoZWwgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQgJiZcbiAgICAgICAgICAgIChlbC5nZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JykgPT09ICcwJyB8fCBlbC5oYXNBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScpKSkgfHxcbiAgICAgICAgICB0aGlzLl9leGNsdWRlZEZvY3VzRWxlbWVudHMuaW5jbHVkZXMoKGVsIGFzIEhUTUxFbGVtZW50KS5sb2NhbE5hbWUpLFxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uU2xvdExhYmVsQ2hhbmdlKCk6IHZvaWQge1xuICAgIGNvbnN0IGxhYmVscyA9IEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsKCdsYWJlbCcpKTtcbiAgICBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFViAmJiBsYWJlbHMubGVuZ3RoID4gMSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgRGV0ZWN0ZWQgbW9yZSB0aGFuIG9uZSBsYWJlbCBpbiBzYmItZm9ybS1maWVsZCMke3RoaXMuaWR9LiBPbmx5IG9uZSBsYWJlbCBpcyBzdXBwb3J0ZWQuYCxcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuX2xhYmVsID0gbGFiZWxzWzBdO1xuICAgIHRoaXMuX3N5bmNMYWJlbElucHV0UmVmZXJlbmNlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IGlzIHVzZWQgaW50ZXJuYWxseSB0byBhc3NpZ24gdGhlIGF0dHJpYnV0ZXMgb2YgYDxpbnB1dD5gIHRvIGBfaWRgIGFuZCBgX2lucHV0YCBhbmQgdG8gb2JzZXJ2ZSB0aGUgbmF0aXZlIHJlYWRvbmx5IGFuZCBkaXNhYmxlZCBhdHRyaWJ1dGVzLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25TbG90SW5wdXRDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5fYXNzaWduU2xvdHMoKTtcbiAgICB0aGlzLl9jb25uZWN0SW5wdXRFbGVtZW50KCk7XG4gIH1cblxuICBwcml2YXRlIF9hc3NpZ25TbG90cygpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ2xhYmVsOm5vdChbc2xvdF0pJykuZm9yRWFjaCgoZSkgPT4gZS5zZXRBdHRyaWJ1dGUoJ3Nsb3QnLCAnbGFiZWwnKSk7XG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsKCdzYmItZXJyb3I6bm90KFtzbG90XSknKS5mb3JFYWNoKChlKSA9PiBlLnNldEF0dHJpYnV0ZSgnc2xvdCcsICdlcnJvcicpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Nvbm5lY3RJbnB1dEVsZW1lbnQoKTogJ2NoYW5nZWQnIHwgJ25vLWlucHV0JyB8ICd1bmNoYW5nZWQnIHtcbiAgICBsZXQgbmV3SW5wdXQ6IEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgICBpZiAodGhpcy5fY29udHJvbD8uaWQpIHtcbiAgICAgIG5ld0lucHV0ID0gKHRoaXMuZ2V0Um9vdE5vZGUoKSBhcyBEb2N1bWVudCB8IFNoYWRvd1Jvb3QpLmdldEVsZW1lbnRCeUlkKHRoaXMuX2NvbnRyb2wuaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGaW5kIHRoZSBzbG90dGVkIGlucHV0IGVsZW1lbnQsIGV2ZW4gaWYgaXQncyBuZXN0ZWQgKGUuZy4gY2hpcCBncm91cClcbiAgICAgIGNvbnN0IGlucHV0Q2FuZGlkYXRlcyA9IEFycmF5LmZyb20oXG4gICAgICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJyo6bm90KFtzbG90XSxzYmItY2hpcC1ncm91cCknKSxcbiAgICAgICk7XG4gICAgICBuZXdJbnB1dCA9XG4gICAgICAgIChpbnB1dENhbmRpZGF0ZXMuZmluZCgoZSkgPT4gdGhpcy5faXNJbnB1dEVsZW1lbnQoZSkpIHx8IGlucHV0Q2FuZGlkYXRlc1swXSkgPz8gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAobmV3SW5wdXQgPT09IHRoaXMuX2lucHV0KSB7XG4gICAgICByZXR1cm4gJ3VuY2hhbmdlZCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dCkge1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZShgaW5wdXQtdHlwZS0ke3RoaXMuX2lucHV0LmxvY2FsTmFtZX1gKTtcbiAgICAgIGlmICh0aGlzLl9pbnB1dC5sb2NhbE5hbWUgPT09ICdpbnB1dCcgfHwgdGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAndGV4dGFyZWEnKSB7XG4gICAgICAgIHRoaXMuX3VucGF0Y2hJbnB1dFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFuZXdJbnB1dCkge1xuICAgICAgdGhpcy5faW5wdXQgPSBudWxsO1xuICAgICAgcmV0dXJuICduby1pbnB1dCc7XG4gICAgfVxuXG4gICAgdGhpcy5faW5wdXQgPSBuZXdJbnB1dDtcbiAgICB0aGlzLl9yZWdpc3RlcklucHV0Rm9ybUxpc3RlbmVyKCk7XG4gICAgdGhpcy5fYXNzaWduQXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoKTtcbiAgICB0aGlzLl9yZWFkSW5wdXRTdGF0ZSgpO1xuICAgIHRoaXMuX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuXG4gICAgaWYgKHRoaXMuX2lucHV0LmxvY2FsTmFtZSA9PT0gJ3RleHRhcmVhJykge1xuICAgICAgdGhpcy5faW5wdXQuc2V0QXR0cmlidXRlKCdyb3dzJywgdGhpcy5faW5wdXQuZ2V0QXR0cmlidXRlKCdyb3dzJykgfHwgJzMnKTtcbiAgICAgIHRoaXMuX3BhdGNoSW5wdXRWYWx1ZSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAnaW5wdXQnKSB7XG4gICAgICB0aGlzLl9wYXRjaElucHV0VmFsdWUoKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgKHRoaXMuX2lucHV0LmxvY2FsTmFtZSA9PT0gJ3NlbGVjdCcgfHwgdGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpICYmXG4gICAgICAhdGhpcy5oYXNVcGRhdGVkXG4gICAgKSB7XG4gICAgICAvLyBEdWUgdG8gU1NSIHRoZSBkcm9wZG93biBpY29uIGZvciBzZWxlY3RzIGNhbm5vdCBiZSByZW5kZXJlZCBpbiB0aGUgZmlyc3QgcmVuZGVyIHBhc3MuXG4gICAgICAvLyBEdWUgdG8gdGhpcyB3ZSBzY2hlZHVsZSBhIHJlLXJlbmRlciB0byByZW5kZXIgdGhlIGljb24uXG4gICAgICB0aGlzLmh5ZHJhdGlvbkNvbXBsZXRlLnRoZW4oKCkgPT4gdGhpcy5yZXF1ZXN0VXBkYXRlKCkpO1xuICAgIH1cblxuICAgIHRoaXMuX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5fZm9ybUZpZWxkQXR0cmlidXRlT2JzZXJ2ZXI/Lm9ic2VydmUodGhpcy5faW5wdXQsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsncmVhZG9ubHknLCAnZGlzYWJsZWQnLCAnZm9ybScsICdjbGFzcycsICdkYXRhLWV4cGFuZGVkJywgJ21heGxlbmd0aCddLFxuICAgIH0pO1xuICAgIC8vIFRPRE8oYnJlYWtpbmctY2hhbmdlKTogUmVuYW1lIGlucHV0LXR5cGUgdG8gaW5wdXQtZWxlbWVudCBhbmQgZXhwbGljaXQtaW5wdXQtdHlwZSB0byBpbnB1dC10eXBlLlxuICAgIC8vIEFsc28gYWRhcHQgZG9jdW1lbnRhdGlvbi5cbiAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKGBpbnB1dC10eXBlLSR7dGhpcy5faW5wdXQubG9jYWxOYW1lfWApO1xuICAgIHRoaXMuX3N5bmNMYWJlbElucHV0UmVmZXJlbmNlcygpO1xuICAgIHJldHVybiAnY2hhbmdlZCc7XG4gIH1cblxuICBwcml2YXRlIF9zeW5jTGFiZWxJbnB1dFJlZmVyZW5jZXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pbnB1dCB8fCAhdGhpcy5fbGFiZWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBuYXRpdmVJbnB1dEVsZW1lbnRzLmluY2x1ZGVzKHRoaXMuX2lucHV0LmxvY2FsTmFtZSkgfHxcbiAgICAgIChjdXN0b21FbGVtZW50cy5nZXQodGhpcy5faW5wdXQubG9jYWxOYW1lKSBhcyB7IGZvcm1Bc3NvY2lhdGVkPzogYm9vbGVhbiB9IHwgdW5kZWZpbmVkKVxuICAgICAgICA/LmZvcm1Bc3NvY2lhdGVkXG4gICAgKSB7XG4gICAgICAvLyBGb3IgbmF0aXZlIGlucHV0IGVsZW1lbnRzIHdlIHVzZSB0aGUgYGZvcmAgYXR0cmlidXRlIG9uIHRoZSBsYWJlbCB0byByZWZlcmVuY2UgdGhlIGlucHV0XG4gICAgICAvLyB2aWEgaWQgcmVmZXJlbmNlLlxuICAgICAgdGhpcy5faW5wdXQuaWQgfHw9IGBzYmItZm9ybS1maWVsZC1pbnB1dC0ke25leHRJZCsrfWA7XG4gICAgICB0aGlzLl9sYWJlbC5odG1sRm9yID0gdGhpcy5faW5wdXQuaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZvciBub24tbmF0aXZlIGlucHV0IGVsZW1lbnRzLCB0aGF0IGRvIG5vdCBzdXBwb3J0IHJlZmVyZW5jZXMgdmlhIHRoZSBsYWJlbCBmb3IgYXR0cmlidXRlLFxuICAgICAgLy8gd2UgdXNlIGFyaWEtbGFiZWxsZWRieSBvbiB0aGUgaW5wdXQgZWxlbWVudCB0byByZWZlcmVuY2UgdGhlIGxhYmVsIGVsZW1lbnQgdmlhIGlkLlxuICAgICAgLy8gVE9ETzogTWlncmF0ZSB0byBhcmlhTGFiZWxsZWRCeUVsZW1lbnRzIHdoZW4gYXZhaWxhYmxlOlxuICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0VsZW1lbnQvYXJpYUxhYmVsbGVkQnlFbGVtZW50c1xuICAgICAgdGhpcy5fbGFiZWwuaWQgfHw9IGBzYmItZm9ybS1maWVsZC1sYWJlbC0ke25leHRJZCsrfWA7XG4gICAgICBjb25zdCBsYWJlbGxlZGJ5ID1cbiAgICAgICAgdGhpcy5faW5wdXRcbiAgICAgICAgICAuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknKVxuICAgICAgICAgID8uc3BsaXQoJyAnKVxuICAgICAgICAgIC5maWx0ZXIoKGwpID0+ICEhbCAmJiBsICE9PSB0aGlzLl9sYWJlbCEuaWQpID8/IFtdO1xuICAgICAgdGhpcy5faW5wdXQuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknLCBbLi4ubGFiZWxsZWRieSwgdGhpcy5fbGFiZWwuaWRdLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNJbnB1dEVsZW1lbnQoaW5wdXQ6IEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgbmF0aXZlSW5wdXRFbGVtZW50cy5pbmNsdWRlcyhpbnB1dC5sb2NhbE5hbWUpIHx8XG4gICAgICAhIShjdXN0b21FbGVtZW50cy5nZXQoaW5wdXQubG9jYWxOYW1lKSBhcyB7IGZvcm1Bc3NvY2lhdGVkPzogYm9vbGVhbiB9IHwgdW5kZWZpbmVkKVxuICAgICAgICA/LmZvcm1Bc3NvY2lhdGVkXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlYWRJbnB1dFN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ3JlYWRvbmx5JywgdGhpcy5fY29udHJvbD8ucmVhZE9ubHkgPz8gdGhpcy5faW5wdXQhLmhhc0F0dHJpYnV0ZSgncmVhZG9ubHknKSk7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnZGlzYWJsZWQnLCB0aGlzLl9jb250cm9sPy5kaXNhYmxlZCA/PyB0aGlzLl9pbnB1dCEuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpKTtcbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdoYXMtcG9wdXAtb3BlbicsIHRoaXMuX2lucHV0IS5oYXNBdHRyaWJ1dGUoJ2RhdGEtZXhwYW5kZWQnKSk7XG5cbiAgICBpZiAodGhpcy5fcHJldmlvdXNUeXBlKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKGBleHBsaWNpdC1pbnB1dC10eXBlLSR7dGhpcy5fcHJldmlvdXNUeXBlfWApO1xuICAgIH1cblxuICAgIHRoaXMuX3ByZXZpb3VzVHlwZSA9IHRoaXMuX2NvbnRyb2w/LnR5cGUgPz8gKHRoaXMuX2lucHV0IGFzIHsgdHlwZT86IHN0cmluZyB9KS50eXBlID8/ICd0ZXh0JztcbiAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKGBleHBsaWNpdC1pbnB1dC10eXBlLSR7dGhpcy5fcHJldmlvdXNUeXBlfWApO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVnaXN0ZXJJbnB1dEZvcm1MaXN0ZW5lcigpOiB2b2lkIHtcbiAgICB0aGlzLl9pbnB1dEZvcm1BYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICBjb25zdCB7IHNpZ25hbCB9ID0gKHRoaXMuX2lucHV0Rm9ybUFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKSk7XG5cbiAgICBjb25zdCBmb3JtID1cbiAgICAgICh0aGlzLl9pbnB1dCBhcyBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFNlbGVjdEVsZW1lbnQgfCB1bmRlZmluZWQpPy5mb3JtID8/XG4gICAgICB0aGlzLl9pbnB1dD8uY2xvc2VzdCgnZm9ybScpO1xuICAgIC8vIFRpbWVvdXQgbmVlZGVkIHRvIGhhdmUgdmFsdWUgdXBkYXRlZFxuICAgIGNvbnN0IHJlc2V0SGFuZGxlciA9ICgpOiB1bmtub3duID0+IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZXNldCgpKTtcbiAgICBmb3JtPy5hZGRFdmVudExpc3RlbmVyKCdyZXNldCcsIHJlc2V0SGFuZGxlciwgeyBzaWduYWwgfSk7XG4gIH1cblxuICAvLyBXZSBuZWVkIHRvIHBhdGNoIHRoZSB2YWx1ZSBwcm9wZXJ0eSBvZiB0aGUgSFRNTElucHV0RWxlbWVudCBpbiBvcmRlclxuICAvLyB0byBiZSBhYmxlIHRvIHJlc2V0IHRoZSBmbG9hdGluZyBsYWJlbCBpbiB0aGUgZW1wdHkgc3RhdGUuXG4gIHByaXZhdGUgX3BhdGNoSW5wdXRWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSB0aGlzLl9pbnB1dCBhcyBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudDtcbiAgICBpZiAoIWlucHV0RWxlbWVudCB8fCBwYXRjaGVkSW5wdXRzLmhhcyhpbnB1dEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihcbiAgICAgIE9iamVjdC5nZXRQcm90b3R5cGVPZihpbnB1dEVsZW1lbnQpLFxuICAgICAgJ3ZhbHVlJyxcbiAgICApO1xuXG4gICAgaWYgKCFvcmlnaW5hbERlc2NyaXB0b3IgfHwgIW9yaWdpbmFsRGVzY3JpcHRvci5zZXQgfHwgIW9yaWdpbmFsRGVzY3JpcHRvci5nZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwYXRjaGVkSW5wdXRzLnNldChpbnB1dEVsZW1lbnQsIG9yaWdpbmFsRGVzY3JpcHRvcik7XG5cbiAgICBjb25zdCB7IGdldDogZ2V0dGVyLCBzZXQ6IHNldHRlciB9ID0gb3JpZ2luYWxEZXNjcmlwdG9yO1xuICAgIGNvbnN0IGNoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSA9ICgpOiB2b2lkID0+IHtcbiAgICAgIHRoaXMuX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuXG4gICAgICAvLyBVc2VkIHRvIG5vdGlmeSB0aGUgcmVtYWluaW5nIGNoYXJzIGNvbXBvbmVudCB0byB1cGRhdGUgaXRzIGNvdW50XG4gICAgICAvLyB3aGVuIHRoZSB2YWx1ZSBpcyBjaGFuZ2VkIHZpYSBmb3JtIHJlc2V0IG9yIHByb2dyYW1tYXRpY2FsbHkuXG4gICAgICAvLyBXZSBuZWVkIGEgY3VzdG9tIGV2ZW50IGZvciB0aGlzLCBiZWNhdXNlIHRoZSBuYXRpdmUgaW5wdXQgZXZlbnQgaXNcbiAgICAgIC8vIG5vdCB0cmlnZ2VyZWQgaW4gdGhlc2UgY2FzZXMuXG4gICAgICAvKiogQGludGVybmFsICovXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCfJtWlucHV0JykpO1xuICAgIH07XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5wdXRFbGVtZW50LCAndmFsdWUnLCB7XG4gICAgICAuLi5vcmlnaW5hbERlc2NyaXB0b3IsXG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiBnZXR0ZXIuY2FsbCh0aGlzKTtcbiAgICAgIH0sXG4gICAgICBzZXQobmV3VmFsdWUpIHtcbiAgICAgICAgc2V0dGVyLmNhbGwodGhpcywgbmV3VmFsdWUpO1xuICAgICAgICBjaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF91bnBhdGNoSW5wdXRWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSB0aGlzLl9pbnB1dCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGNvbnN0IG9yaWdpbmFsRGVzY3JpcHRvciA9IHBhdGNoZWRJbnB1dHMuZ2V0KGlucHV0RWxlbWVudCk7XG4gICAgaWYgKG9yaWdpbmFsRGVzY3JpcHRvcikge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGlucHV0RWxlbWVudCwgJ3ZhbHVlJywgb3JpZ2luYWxEZXNjcmlwdG9yKTtcbiAgICAgIHBhdGNoZWRJbnB1dHMuZGVsZXRlKGlucHV0RWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoXG4gICAgICAnZW1wdHknLFxuICAgICAgdGhpcy5fY29udHJvbD8uZW1wdHkgPz9cbiAgICAgICAgKCgodGhpcy5fZmxvYXRpbmdMYWJlbFN1cHBvcnRlZElucHV0RWxlbWVudHMuaW5jbHVkZXModGhpcy5faW5wdXQ/LmxvY2FsTmFtZSBhcyBzdHJpbmcpIHx8XG4gICAgICAgICAgKHRoaXMuX2lucHV0Py5jb25zdHJ1Y3RvciBhcyB1bmRlZmluZWQgfCB0eXBlb2YgU2JiRm9ybUFzc29jaWF0ZWRJbnB1dE1peGluVHlwZSlcbiAgICAgICAgICAgID8uZm9ybUZpZWxkQXNzb2NpYXRlZCkgPz9cbiAgICAgICAgICBmYWxzZSkgJiZcbiAgICAgICAgICB0aGlzLl9pc0lucHV0RW1wdHkoKSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzSW5wdXRFbXB0eSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjaGlwR3JvdXBFbGVtOiBTYmJDaGlwR3JvdXBFbGVtZW50IHwgbnVsbCA9IHRoaXMucXVlcnlTZWxlY3Rvcignc2JiLWNoaXAtZ3JvdXAnKTtcbiAgICBpZiAoY2hpcEdyb3VwRWxlbSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5faXNJbnB1dFZhbHVlRW1wdHkoKSAmJlxuICAgICAgICAoQXJyYXkuaXNBcnJheShjaGlwR3JvdXBFbGVtLnZhbHVlKVxuICAgICAgICAgID8gY2hpcEdyb3VwRWxlbS52YWx1ZS5sZW5ndGggPT09IDBcbiAgICAgICAgICA6ICFjaGlwR3JvdXBFbGVtLnF1ZXJ5U2VsZWN0b3IoJ3NiYi1jaGlwJykpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLl9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRUeXBlcy5pbmNsdWRlcyh0aGlzLl9pbnB1dC50eXBlKSAmJlxuICAgICAgICB0aGlzLl9pc0lucHV0VmFsdWVFbXB0eSgpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXQgaW5zdGFuY2VvZiBIVE1MU2VsZWN0RWxlbWVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2lucHV0LnNlbGVjdGVkT3B0aW9ucz8uaXRlbSgwKT8ubGFiZWw/LnRyaW0oKSA9PT0gJyc7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpIHtcbiAgICAgIHJldHVybiAodGhpcy5faW5wdXQgYXMgU2JiU2VsZWN0RWxlbWVudCkuZ2V0RGlzcGxheVZhbHVlPy4oKT8udHJpbSgpID09PSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX2lzSW5wdXRWYWx1ZUVtcHR5KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNJbnB1dFZhbHVlRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdmFsdWUgPSAodGhpcy5faW5wdXQgYXMgeyB2YWx1ZTogc3RyaW5nIH0pLnZhbHVlO1xuICAgIHJldHVybiBbJycsIHVuZGVmaW5lZCwgbnVsbF0uaW5jbHVkZXModmFsdWUpIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IGlzIHVzZWQgaW50ZXJuYWxseSB0byBzZXQgdGhlIGFyaWEtZGVzY3JpYmVkYnkgYXR0cmlidXRlIGZvciB0aGUgc2xvdHRlZCBpbnB1dCByZWZlcmVuY2luZyBhdmFpbGFibGUgPHNiYi1lcnJvcj4gaW5zdGFuY2VzLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25TbG90RXJyb3JDaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZXJyb3JFbGVtZW50cyA9IChldmVudC50YXJnZXQgYXMgSFRNTFNsb3RFbGVtZW50KS5hc3NpZ25lZEVsZW1lbnRzKCk7XG4gICAgaWYgKHRoaXMuX2lucHV0ICYmIHRoaXMuX2lucHV0LmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2lucHV0LmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzID0gcmVtb3ZlQXJpYUVsZW1lbnRzKFxuICAgICAgICB0aGlzLl9pbnB1dC5hcmlhRGVzY3JpYmVkQnlFbGVtZW50cyxcbiAgICAgICAgLi4uKHRoaXMuX2Vycm9yRWxlbWVudHMgPz8gW10pLFxuICAgICAgICAvLyBBbHNvIHJlbW92ZSBoaW50IGVsZW1lbnRzIHNpbmNlIHRoZWlyIHZpc2liaWxpdHkgZGVwZW5kcyBvbiBlcnJvciBzdGF0ZVxuICAgICAgICAuLi4odGhpcy5faGludEVsZW1lbnRzID8/IFtdKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fZXJyb3JFbGVtZW50cyA9IGVycm9yRWxlbWVudHM7XG4gICAgZm9yIChjb25zdCBlbCBvZiB0aGlzLl9lcnJvckVsZW1lbnRzKSB7XG4gICAgICAvLyBJbnN0ZWFkIG9mIGRlZmluaW5nIGEgY29udGFpbmVyIHdpdGggYW4gYXJpYS1saXZlIHJlZ2lvbiBhcyBleHBlY3RlZCwgd2UgaGFkIHRvIGNoYW5nZVxuICAgICAgLy8gc2V0dGluZyBpdCBmb3IgZXZlcnkgc2xvdHRlZCBlbGVtZW50IHRvIHByb3Blcmx5IHdvcmsgaW4gYWxsIGJyb3dzZXJzIGFuZCBzY3JlZW4gcmVhZGVyIGNvbWJpbmF0aW9ucy5cbiAgICAgIGVsLnJvbGUgfHw9ICdzdGF0dXMnO1xuICAgIH1cblxuICAgIHRoaXMuX2Fzc2lnbkFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKCk7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnaGFzLWVycm9yJywgISF0aGlzLl9lcnJvckVsZW1lbnRzLmxlbmd0aCk7XG4gICAgdGhpcy5fc3luY05lZ2F0aXZlKCk7XG4gIH1cblxuICAvKipcbiAgICogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIHNldCB0aGUgYXJpYS1kZXNjcmliZWRieSBhdHRyaWJ1dGUgZm9yIHRoZSBzbG90dGVkIGlucHV0IHJlZmVyZW5jaW5nIGF2YWlsYWJsZSA8c2JiLWhpbnQ+IGluc3RhbmNlcy5cbiAgICovXG4gIHByaXZhdGUgX29uU2xvdEhpbnRDaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaGludEVsZW1lbnRzID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2xvdEVsZW1lbnQpLmFzc2lnbmVkRWxlbWVudHMoKTtcbiAgICBpZiAodGhpcy5faW5wdXQ/LmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzPy5sZW5ndGggJiYgdGhpcy5faGludEVsZW1lbnRzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2lucHV0LmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzID0gcmVtb3ZlQXJpYUVsZW1lbnRzKFxuICAgICAgICB0aGlzLl9pbnB1dC5hcmlhRGVzY3JpYmVkQnlFbGVtZW50cyxcbiAgICAgICAgLi4udGhpcy5faGludEVsZW1lbnRzLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9oaW50RWxlbWVudHMgPSBoaW50RWxlbWVudHM7XG4gICAgdGhpcy5fYXNzaWduQXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoKTtcbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdoYXMtaGludCcsICEhdGhpcy5faGludEVsZW1lbnRzLmxlbmd0aCk7XG4gICAgdGhpcy5fc3luY05lZ2F0aXZlKCk7XG4gIH1cblxuICBwcml2YXRlIF9hc3NpZ25BcmlhRGVzY3JpYmVkQnlFbGVtZW50cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faW5wdXQpIHtcbiAgICAgIC8vIEhpbnQgZWxlbWVudHMgYXJlIG9ubHkgbGlua2VkIHdoZW4gdGhlcmUgYXJlIG5vIGVycm9yc1xuICAgICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLl9lcnJvckVsZW1lbnRzLmxlbmd0aCA/IHRoaXMuX2Vycm9yRWxlbWVudHMgOiB0aGlzLl9oaW50RWxlbWVudHM7XG4gICAgICB0aGlzLl9pbnB1dC5hcmlhRGVzY3JpYmVkQnlFbGVtZW50cyA9IGFwcGVuZEFyaWFFbGVtZW50cyhcbiAgICAgICAgdGhpcy5faW5wdXQuYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMsXG4gICAgICAgIC4uLmVsZW1lbnRzLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKiogTWFudWFsbHkgcmVzZXQgdGhlIGZvcm0gZmllbGQuIEN1cnJlbnRseSwgdGhpcyBvbmx5IHJlc2V0cyB0aGUgZmxvYXRpbmcgbGFiZWwuICovXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcbiAgfVxuXG4gIC8qKiBNYW51YWxseSBjbGVhcnMgdGhlIGlucHV0IHZhbHVlLiBJdCBvbmx5IHdvcmtzIGZvciBpbnB1dHMsIHNlbGVjdHMgYXJlIG5vdCBzdXBwb3J0ZWQuICovXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICBpZiAoKHRoaXMuX2lucHV0Py5sb2NhbE5hbWUgYXMgc3RyaW5nKSAhPT0gJ2lucHV0Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAodGhpcy5faW5wdXQgYXMgeyB2YWx1ZTogc3RyaW5nIH0pLnZhbHVlID0gJyc7XG4gICAgdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCk7XG4gIH1cblxuICBwcml2YXRlIF9zeW5jTmVnYXRpdmUoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPy4oXG4gICAgICAnc2JiLWVycm9yLHNiYi1taW5pLWJ1dHRvbixzYmItbWluaS1idXR0b24tbGluayxzYmItZm9ybS1maWVsZC1jbGVhcixzYmItZGF0ZXBpY2tlci1uZXh0LWRheSxzYmItZGF0ZXBpY2tlci1wcmV2aW91cy1kYXksc2JiLWRhdGVwaWNrZXItdG9nZ2xlLHNiYi1zZWxlY3Qsc2JiLWF1dG9jb21wbGV0ZSxzYmItYXV0b2NvbXBsZXRlLWdyaWQsc2JiLWNoaXAtZ3JvdXAsc2JiLWhpbnQsc2JiLWZvcm0tZmllbGQtdGV4dC1jb3VudGVyJyxcbiAgICApLmZvckVhY2goKGVsZW1lbnQpID0+IGVsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCduZWdhdGl2ZScsIHRoaXMubmVnYXRpdmUpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNTaXplKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbD8uPFNiYkF1dG9jb21wbGV0ZUJhc2VFbGVtZW50IHwgU2JiU2VsZWN0RWxlbWVudD4oXG4gICAgICAnc2JiLWF1dG9jb21wbGV0ZSxzYmItYXV0b2NvbXBsZXRlLWdyaWQsc2JiLXNlbGVjdCcsXG4gICAgKS5mb3JFYWNoKChlbGVtZW50KSA9PiAoZWxlbWVudC5zaXplID0gdGhpcy5zaXplID09PSAnbCcgPyAnbScgOiB0aGlzLnNpemUpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19zcGFjZS13cmFwcGVyXCI+XG4gICAgICAgICR7LyogUXVlcmllZCBieSBpZCBmcm9tIHRoZSBhdXRvY29tcGxldGUvc2VsZWN0IHRvIGJlIHVzZWQgYXMgdGhlIGFuY2hvciBlbGVtZW50ICovICcnfVxuICAgICAgICA8ZGl2IEBjbGljaz0ke3RoaXMuX2hhbmRsZVdyYXBwZXJDbGlja30gY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fd3JhcHBlclwiIGlkPVwib3ZlcmxheS1hbmNob3JcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwicHJlZml4XCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9zeW5jTmVnYXRpdmV9Pjwvc2xvdD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX2lucHV0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fbGFiZWwtc3BhY2VyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fbGFiZWxcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fbGFiZWwtZWxsaXBzaXNcIj5cbiAgICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwibGFiZWxcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX29uU2xvdExhYmVsQ2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgICAgICAgICAgJHt0aGlzLm9wdGlvbmFsXG4gICAgICAgICAgICAgICAgICA/IGh0bWxgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiAke2kxOG5PcHRpb25hbFt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0gPC9zcGFuPmBcbiAgICAgICAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19pbnB1dFwiPlxuICAgICAgICAgICAgICA8c2xvdCBAc2xvdGNoYW5nZT0ke3RoaXMuX29uU2xvdElucHV0Q2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzYmItaWNvblxuICAgICAgICAgICAgICBuYW1lPVwiY2hldnJvbi1zbWFsbC1kb3duLXNtYWxsXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fc2VsZWN0LWlucHV0LWljb25cIlxuICAgICAgICAgICAgPjwvc2JiLWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInN1ZmZpeFwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fc3luY05lZ2F0aXZlfT48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9faGludFwiPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJoaW50XCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9vblNsb3RIaW50Q2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImVycm9yXCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9vblNsb3RFcnJvckNoYW5nZX0+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1mb3JtLWZpZWxkJzogU2JiRm9ybUZpZWxkRWxlbWVudDtcbiAgfVxuXG4gIGludGVyZmFjZSBIVE1MRWxlbWVudEV2ZW50TWFwIHtcbiAgICBmb3JtZmllbGRjb250cm9sOiBTYmJGb3JtRmllbGRDb250cm9sRXZlbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FDOEJBLElBQUksU0FBUztBQUViLElBQU0sZ0NBQWdCLElBQUksUUFBTztBQUNqQyxJQUFNLHNCQUFzQjtDQUFDO0NBQVM7Q0FBWTtBQUFRO0FBeUIxRCxJQUFhLDJCQUFiLGNBQThDLE1BQUs7Q0FHakQsSUFBVyxVQUFPO0VBQ2hCLE9BQU8sS0FBSztDQUNkO0NBRUEsWUFBbUIsU0FBMEM7RUFDM0QsTUFBTSxrQkFBa0I7RUFDeEIsS0FBSyxXQUFXO0NBQ2xCOzs7Ozs7Ozs7Ozs7Ozs7SUFnQlcsNkJBQW1CO21CQUFTLGlCQUFpQixVQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2NBQXZELDRCQUE0QixZQUE0Qjs7OzZCQThCbEUsU0FBUztJQUFFLFdBQVc7SUFBZSxTQUFTO0dBQUksQ0FBRSxDQUFDOzJCQU9yRCxVQUFTLEdBQ1QsU0FBUyxFQUFFLE1BQU0sUUFBTyxDQUFFLENBQUM7dUJBTTNCLFNBQVMsRUFBRSxTQUFTLEtBQUksQ0FBRSxDQUFDOzZCQUczQixVQUFTLEdBQ1QsU0FBUztJQUFFLFNBQVM7SUFBTSxNQUFNO0dBQU8sQ0FBRSxDQUFDO3dCQU0xQyxTQUFTLEVBQUUsU0FBUyxLQUFJLENBQUUsQ0FBQzs4QkFHM0IsVUFBUyxHQUNULFNBQVM7SUFBRSxXQUFXO0lBQWdC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
702
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQtQ1BXQkNIZXIuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC9mb3JtLWZpZWxkLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIC0tc2JiLWZvcm0tZmllbGQtaGludC1kaXZpZGVyLXdpZHRoOiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0xeCk7XG4gIC0tc2JiLWZvcm0tZmllbGQtaGludC1wYWRkaW5nLWJsb2NrLXN0YXJ0OiB2YXIoLS1zYmItZm9ybS1maWVsZC1oaW50LWRpdmlkZXItd2lkdGgpO1xuICAtLXNiYi1mb3JtLWZpZWxkLXNlbGVjdC1pbmxpbmUtcGFkZGluZy1lbmQ6IGNhbGMoXG4gICAgdmFyKC0tc2JiLWljb24tc3ZnLXdpZHRoKSArIHZhcigtLXNiYi1mb3JtLWZpZWxkLWdhcClcbiAgKTtcbiAgLS1zYmItZm9ybS1maWVsZC1sYWJlbC1zaXplOiBjYWxjKFxuICAgIHZhcigtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLXRleHQtc2l6ZSkgKiB2YXIoLS1zYmItdHlwby1saW5lLWhlaWdodC10ZXh0KVxuICApO1xuICAtLXNiYi1mb3JtLWZpZWxkLXRleHQtbGluZS1oZWlnaHQ6IGNhbGMoXG4gICAgdmFyKC0tc2JiLWZvcm0tZmllbGQtaW5wdXQtdGV4dC1zaXplKSAqIHZhcigtLXNiYi10eXBvLWxpbmUtaGVpZ2h0LXRleHQpXG4gICk7XG4gIC0tc2JiLWZvcm0tZmllbGQtbWFyZ2luLWJsb2NrLXN0YXJ0OiBjYWxjKFxuICAgIChcbiAgICAgICAgdmFyKC0tc2JiLWZvcm0tZmllbGQtbWluLWhlaWdodCkgLSB2YXIoLS1zYmItZm9ybS1maWVsZC1sYWJlbC1zaXplKSAtIHZhcihcbiAgICAgICAgICAgIC0tc2JiLWZvcm0tZmllbGQtdGV4dC1saW5lLWhlaWdodFxuICAgICAgICAgICkgK1xuICAgICAgICAgIHZhcigtLV9zYmItZm9ybS1maWVsZC1sYWJlbC10by1pbnB1dC1vdmVybGFwcGluZylcbiAgICAgICkgL1xuICAgICAgMlxuICApO1xuXG4gIC8vIExvY2sgc2JiLWljb24gc2l6ZVxuICAtLXNiYi1pY29uLXN2Zy13aWR0aDogdmFyKC0tc2JiLWZvcm0tZmllbGQtaWNvbi1zaXplKTtcbiAgLS1zYmItaWNvbi1zdmctaGVpZ2h0OiB2YXIoLS1zYmItZm9ybS1maWVsZC1pY29uLXNpemUpO1xuXG4gIC8vIEFzIHRoZSBmb3JtIGZpZWxkIGhhcyBhbHdheXMgYSB3aGl0ZSBiYWNrZ3JvdW5kLCB3ZSBoYXZlIHRvIGZpeCB0aGUgZm9jdXMgb3V0bGluZSBjb2xvclxuICAvLyB0byBkZWZhdWx0IGNvbG9yIGZvciBjYXNlcyB3aGVyZSB0aGUgZm9ybSBmaWVsZCBpcyB1c2VkIGluIGEgbmVnYXRpdmUgY29udGV4dC5cbiAgLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvcjogbGlnaHQtZGFyayhcbiAgICB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvci1kZWZhdWx0KSxcbiAgICB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvci1kYXJrKVxuICApO1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY29sb3I6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWNvbG9yKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcblxuICAvLyBTZXQgdGhlIGxpbmUtaGVpZ2h0IGZvciBhZGphY2VudCBlbGVtZW50cyBpbiBvcmRlciB0byBwcmV2ZW50IGZyb20gaW5mbHVlbmNlIG9mIGEgY29uc3VtZXItc2V0IGxpbmUtaGVpZ2h0LlxuICBsaW5lLWhlaWdodDogdmFyKC0tc2JiLXR5cG8tbGluZS1oZWlnaHQtdGV4dCk7XG59XG5cbjpob3N0KDp3aGVyZSg6bm90KFt3aWR0aD0nY29sbGFwc2UnXSkpKSB7XG4gIG1pbi13aWR0aDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDE1MCl9O1xuICB3aWR0aDogbWluKCN7c2JiLnB4LXRvLXJlbS1idWlsZCgzMDApfSwgMTAwJSk7XG59XG5cbjpob3N0KFtuZWdhdGl2ZV0pIHtcbiAgY29sb3I6IHZhcigtLXNiYi1jb2xvci0zLW5lZ2F0aXZlKTtcblxuICAtLXNiYi1mb3JtLWZpZWxkLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTEtbmVnYXRpdmUpO1xuICAtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1jb2xvcjogdmFyKC0tc2JiLWJvcmRlci1jb2xvci01KTtcbiAgLS1zYmItZm9ybS1maWVsZC1sYWJlbC1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTUpO1xuICAtLXNiYi1mb3JtLWZpZWxkLXByZWZpeC1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTUpO1xuICAtLXNiYi1mb3JtLWZpZWxkLXRleHQtY29sb3I6IHZhcigtLXNiYi1jb2xvci0zLW5lZ2F0aXZlKTtcbiAgLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvcjogdmFyKC0tc2JiLWZvY3VzLW91dGxpbmUtY29sb3ItZGFyayk7XG4gIC0tc2JiLWZvcm0tZmllbGQtYXJyb3ctY29sb3I6IHZhcigtLXNiYi1jb2xvci0zLW5lZ2F0aXZlKTtcblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgLS1zYmItZm9ybS1maWVsZC1ib3JkZXItY29sb3I6IEJ1dHRvbkJvcmRlcjtcbiAgfVxufVxuXG46aG9zdChbc2l6ZT0ncyddKSB7XG4gIC0tc2JiLWZvcm0tZmllbGQtbWluLWhlaWdodDogdmFyKC0tc2JiLXNpemUtZWxlbWVudC14cyk7XG4gIC0tc2JiLWZvcm0tZmllbGQtcGFkZGluZy1pbmxpbmU6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTJ4KTtcbiAgLS1zYmItZm9ybS1maWVsZC1pbnB1dC10ZXh0LXNpemU6IHZhcigtLXNiYi10ZXh0LWZvbnQtc2l6ZS1zKTtcbiAgLS1zYmItZm9ybS1maWVsZC1sYWJlbC10ZXh0LXNpemU6IHZhcigtLXNiYi10ZXh0LWZvbnQtc2l6ZS14eHMpO1xuICAtLV9zYmItZm9ybS1maWVsZC1pbnB1dC1tYXJnaW4tYmxvY2stZW5kOiAje3NiYi5weC10by1yZW0tYnVpbGQoLTIpfTtcblxuICAvLyBWYWx1ZXMgZm91bmQgYnkgdHJ5IGFuZCBlcnJvclxuICAtLV9zYmItZm9ybS1maWVsZC1sYWJlbC10by1pbnB1dC1vdmVybGFwcGluZzogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDEwKX07XG4gIC0tX3NiYi1mb3JtLWZpZWxkLWZsb2F0aW5nLWxhYmVsLXRyYW5zZm9ybTogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDUuNSl9O1xuICAtLV9zYmItZm9ybS1maWVsZC1zcGFjZXItbWFyZ2luLWJsb2NrLWVuZDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKC04LjUpfTtcblxuICBAaW5jbHVkZSBzYmIubXEoJGZyb206IGxhcmdlKSB7XG4gICAgLy8gVmFsdWVzIGZvdW5kIGJ5IHRyeSBhbmQgZXJyb3JcbiAgICAtLV9zYmItZm9ybS1maWVsZC1sYWJlbC10by1pbnB1dC1vdmVybGFwcGluZzogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDExKX07XG4gICAgLS1fc2JiLWZvcm0tZmllbGQtZmxvYXRpbmctbGFiZWwtdHJhbnNmb3JtOiAje3NiYi5weC10by1yZW0tYnVpbGQoNSl9O1xuICAgIC0tX3NiYi1mb3JtLWZpZWxkLXNwYWNlci1tYXJnaW4tYmxvY2stZW5kOiAje3NiYi5weC10by1yZW0tYnVpbGQoLTgpfTtcbiAgfVxufVxuXG46aG9zdChbc2l6ZT0nbSddKSB7XG4gIC0tc2JiLWZvcm0tZmllbGQtbWluLWhlaWdodDogdmFyKC0tc2JiLXNpemUtZWxlbWVudC1tKTtcbiAgLS1zYmItZm9ybS1maWVsZC1wYWRkaW5nLWlubGluZTogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtM3gpO1xufVxuXG46aG9zdChbc2l6ZT0nbCddKSB7XG4gIC0tc2JiLWZvcm0tZmllbGQtbWluLWhlaWdodDogdmFyKC0tc2JiLXNpemUtZWxlbWVudC1sKTtcbiAgLS1zYmItZm9ybS1maWVsZC1wYWRkaW5nLWlubGluZTogdmFyKC0tc2JiLXNwYWNpbmctcmVzcG9uc2l2ZS14eHhzKTtcbn1cblxuOmhvc3QoOmlzKFtzaXplPSdtJ10sIFtzaXplPSdsJ10pKSB7XG4gIC0tc2JiLWZvcm0tZmllbGQtaW5wdXQtdGV4dC1zaXplOiB2YXIoLS1zYmItdGV4dC1mb250LXNpemUtbSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtbGFiZWwtdGV4dC1zaXplOiB2YXIoLS1zYmItdGV4dC1mb250LXNpemUteHMpO1xuICAtLV9zYmItZm9ybS1maWVsZC1pbnB1dC1tYXJnaW4tYmxvY2stZW5kOiAwO1xuICAtLV9zYmItZm9ybS1maWVsZC1sYWJlbC10by1pbnB1dC1vdmVybGFwcGluZzogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMXgpO1xuICAtLV9zYmItZm9ybS1maWVsZC1mbG9hdGluZy1sYWJlbC10cmFuc2Zvcm06ICN7c2JiLnB4LXRvLXJlbS1idWlsZCg4LjUpfTtcbiAgLS1fc2JiLWZvcm0tZmllbGQtc3BhY2VyLW1hcmdpbi1ibG9jay1lbmQ6IGNhbGMoXG4gICAgLTEgKiB2YXIoLS1fc2JiLWZvcm0tZmllbGQtbGFiZWwtdG8taW5wdXQtb3ZlcmxhcHBpbmcpXG4gICk7XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBsYXJnZSkge1xuICAgIC0tX3NiYi1mb3JtLWZpZWxkLWZsb2F0aW5nLWxhYmVsLXRyYW5zZm9ybTogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDEwLjUpfTtcbiAgfVxufVxuXG46aG9zdChbZXJyb3Itc3BhY2U9J3Jlc2VydmUnXSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLWhpbnQtbWluLWhlaWdodDogY2FsYyhcbiAgICB2YXIoLS1zYmItdHlwby1saW5lLWhlaWdodC10ZXh0KSAqIHZhcigtLXNiYi10ZXh0LWZvbnQtc2l6ZS14cylcbiAgKTtcbiAgLS1zYmItZm9ybS1maWVsZC1oaW50LXBhZGRpbmctYmxvY2stc3RhcnQtb3ZlcnJpZGU6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWhpbnQtZGl2aWRlci13aWR0aCk7XG59XG5cbjpob3N0KDp3aGVyZSg6c3RhdGUocmVhZG9ubHkpLCA6c3RhdGUoZGlzYWJsZWQpKSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTMpO1xuICAtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3JhcGhpdGUpLCB2YXIoLS1zYmItY29sb3Itc21va2UpKTtcbiAgLS1zYmItZm9ybS1maWVsZC1hcnJvdy1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3Jhbml0ZSksIHZhcigtLXNiYi1jb2xvci1zdG9ybSkpO1xuXG4gIEBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgICAtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1jb2xvcjogQnV0dG9uQm9yZGVyO1xuICB9XG59XG5cbjpob3N0KDp3aGVyZSg6c3RhdGUocmVhZG9ubHkpLCA6c3RhdGUoZGlzYWJsZWQpKVtuZWdhdGl2ZV0pIHtcbiAgLS1zYmItZm9ybS1maWVsZC1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0zLW5lZ2F0aXZlKTtcbiAgLS1zYmItZm9ybS1maWVsZC1ib3JkZXItY29sb3I6IHZhcigtLXNiYi1ib3JkZXItY29sb3ItNSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtYXJyb3ctY29sb3I6IHZhcigtLXNiYi1ib3JkZXItY29sb3ItNSk7XG59XG5cbjpob3N0KDp3aGVyZSg6c3RhdGUoZGlzYWJsZWQpKSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLWNvbG9yOiBsaWdodC1kYXJrKHZhcigtLXNiYi1jb2xvci1ncmFuaXRlKSwgdmFyKC0tc2JiLWNvbG9yLXNtb2tlKSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtcHJlZml4LWNvbG9yOiBsaWdodC1kYXJrKHZhcigtLXNiYi1jb2xvci1ncmFuaXRlKSwgdmFyKC0tc2JiLWNvbG9yLXN0b3JtKSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XG5cbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIC0tc2JiLWZvcm0tZmllbGQtbGFiZWwtY29sb3I6IEdyYXlUZXh0ICFpbXBvcnRhbnQ7XG4gICAgLS1zYmItZm9ybS1maWVsZC1wcmVmaXgtY29sb3I6IEdyYXlUZXh0ICFpbXBvcnRhbnQ7XG4gICAgLS1zYmItZm9ybS1maWVsZC10ZXh0LWNvbG9yOiBHcmF5VGV4dCAhaW1wb3J0YW50O1xuICAgIC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLWNvbG9yOiBHcmF5VGV4dCAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8vIDp3aGVyZSBpcyB0byBhbGlnbiBzcGVjaWZpY2l0eVxuOmhvc3QoOndoZXJlKDpzdGF0ZShkaXNhYmxlZCkpW25lZ2F0aXZlXSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLXRleHQtY29sb3I6IHZhcigtLXNiYi1jb2xvci01KTtcbiAgLS1zYmItZm9ybS1maWVsZC1sYWJlbC1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTUpO1xuICAtLXNiYi1mb3JtLWZpZWxkLXByZWZpeC1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTUpO1xufVxuXG4vLyA6d2hlcmUgaXMgdG8gYWxpZ24gc3BlY2lmaWNpdHlcbjpob3N0KDp3aGVyZSg6c3RhdGUocmVhZG9ubHkpKTpub3QoW25lZ2F0aXZlXSkpIHtcbiAgLS1zYmItZm9ybS1maWVsZC1sYWJlbC1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3Jhbml0ZSksIHZhcigtLXNiYi1jb2xvci1zbW9rZSkpO1xuICAtLXNiYi1mb3JtLWZpZWxkLXByZWZpeC1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3Jhbml0ZSksIHZhcigtLXNiYi1jb2xvci1zdG9ybSkpO1xufVxuXG4vLyA6d2hlcmUgaXMgdG8gYWxpZ24gc3BlY2lmaWNpdHlcbjpob3N0KDp3aGVyZSg6c3RhdGUoZm9jdXMpKSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1jb2xvcjogdmFyKC0tc2JiLWJvcmRlci1jb2xvci0zKTtcbiAgLS1zYmItZm9ybS1maWVsZC1wcmVmaXgtY29sb3I6IHZhcigtLXNiYi1jb2xvci0zKTtcbiAgLS1zYmItZm9ybS1maWVsZC1ib3JkZXItd2lkdGg6IHZhcigtLXNiYi1ib3JkZXItd2lkdGgtMngpO1xufVxuXG4vLyA6d2hlcmUgaXMgdG8gYWxpZ24gc3BlY2lmaWNpdHlcbjpob3N0KDp3aGVyZSg6c3RhdGUoZm9jdXMpKVtuZWdhdGl2ZV0pIHtcbiAgLS1zYmItZm9ybS1maWVsZC1ib3JkZXItY29sb3I6IHZhcigtLXNiYi1ib3JkZXItY29sb3ItMy1uZWdhdGl2ZSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtcHJlZml4LWNvbG9yOiB2YXIoLS1zYmItY29sb3ItMy1uZWdhdGl2ZSk7XG59XG5cbi8vIFdlIG11c3Qgbm90IHVzZSA6d2hlcmUgaGVyZSwgYXMgaXQgbmVlZHMgdGhlIGFkZGVkIHNwZWNpZmljaXR5IHRvIHByb3Blcmx5IHdvcmtcbjpob3N0KDpzdGF0ZShmb2N1cykpIHtcbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLWNvbG9yOiBIaWdobGlnaHQ7XG4gICAgLS1zYmItZm9ybS1maWVsZC1wcmVmaXgtY29sb3I6IEhpZ2hsaWdodDtcbiAgfVxufVxuXG4vLyA6d2hlcmUgaXMgdG8gYWxpZ24gc3BlY2lmaWNpdHlcbjpob3N0KDpub3QoOndoZXJlKDpzdGF0ZShoYXMtZXJyb3IpLCA6c3RhdGUoaGFzLWhpbnQpKSkpIHtcbiAgLS1zYmItZm9ybS1maWVsZC1oaW50LXBhZGRpbmctYmxvY2stc3RhcnQ6IDA7XG59XG5cbjpob3N0KFtmbG9hdGluZy1sYWJlbF0pIHtcbiAgLS1zYmItc2VsZWN0LXBsYWNlaG9sZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgLS1zYmItc2VsZWN0LXBsYWNlaG9sZGVyLWNvbG9yOiBDYW52YXM7XG4gIH1cbn1cblxuOmhvc3QoOmlzKDpub3QoOnN0YXRlKHNsb3R0ZWQtbGFiZWwpKSwgW2hpZGRlbi1sYWJlbF0pKSB7XG4gIC0tc2JiLWZvcm0tZmllbGQtbGFiZWwtc2l6ZTogMHJlbTtcbiAgLS1fc2JiLWZvcm0tZmllbGQtbGFiZWwtdG8taW5wdXQtb3ZlcmxhcHBpbmc6IDByZW07XG59XG5cbi8vIFNob3VsZCBiZSBhZnRlciBvdGhlciBkZWZpbml0aW9ucyB0byBvdmVycmlkZSBvdmVyZmxvd1xuLy8gOndoZXJlIGlzIHRvIGFsaWduIHNwZWNpZmljaXR5XG46aG9zdCg6d2hlcmUoOnN0YXRlKGlucHV0LXR5cGUtc2JiLXNsaWRlcikpKSB7XG4gIC0tc2JiLWZvcm0tZmllbGQtb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbi5zYmItZm9ybS1maWVsZF9fc3BhY2Utd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcblxuICBAaW5jbHVkZSBzYmIuemVyby13aWR0aC1zcGFjZTtcbn1cblxuLnNiYi1mb3JtLWZpZWxkX193cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleDogMTtcbiAgZ2FwOiB2YXIoLS1zYmItZm9ybS1maWVsZC1nYXApO1xuICBwYWRkaW5nLWlubGluZTogdmFyKC0tc2JiLWZvcm0tZmllbGQtcGFkZGluZy1pbmxpbmUpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItZm9ybS1maWVsZC1ib3JkZXItcmFkaXVzKTtcbiAgbWluLWhlaWdodDogdmFyKC0tc2JiLWZvcm0tZmllbGQtbWluLWhlaWdodCk7XG4gIG1heC1oZWlnaHQ6IHZhcigtLXNiYi1mb3JtLWZpZWxkLW1heC1oZWlnaHQpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItZm9ybS1maWVsZC1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIFVzZSA6OmJlZm9yZSB0byBhdm9pZCBjb250ZW50IHNoaWZ0aW5nIHdoZW4gYm9yZGVyIHdpZHRoIGNoYW5nZXMuXG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAwO1xuICAgIGJvcmRlcjogdmFyKC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLXdpZHRoKSB2YXIoLS1zYmItZm9ybS1maWVsZC1ib3JkZXItc3R5bGUpXG4gICAgICB2YXIoLS1zYmItZm9ybS1maWVsZC1ib3JkZXItY29sb3IpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1yYWRpdXMpO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG5cbiAgLy8gOndoZXJlIGlzIHRvIGFsaWduIHNwZWNpZmljaXR5XG4gIDpob3N0KDp3aGVyZSg6c3RhdGUoZm9jdXMpOnN0YXRlKGZvY3VzLW9yaWdpbi1rZXlib2FyZCkpKSAmIHtcbiAgICBAaW5jbHVkZSBzYmIuZm9jdXMtb3V0bGluZTtcblxuICAgIG91dGxpbmUtb2Zmc2V0OiB2YXIoLS1zYmItZm9ybS1maWVsZC1vdXRsaW5lLW9mZnNldCwgdmFyKC0tc2JiLWZvY3VzLW91dGxpbmUtb2Zmc2V0KSk7XG4gIH1cblxuICAvLyBJbiBoaWdoIGNvbnRyYXN0LCB0aGVyZSBpcyBubyBib3JkZXJsZXNzIHZhcmlhbnRcbiAgQG1lZGlhIChmb3JjZWQtY29sb3JzOiBub25lKSB7XG4gICAgOmhvc3QoOmlzKFtib3JkZXJsZXNzXSwgOnN0YXRlKGlucHV0LXR5cGUtc2JiLXNsaWRlcikpKSAmIHtcbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgOmhvc3QoOndoZXJlKDpzdGF0ZShmb2N1cyksIDpzdGF0ZShkaXNhYmxlZCkpW2JvcmRlcmxlc3NdKSAmIHtcbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm9yZGVyLWJsb2NrLWVuZDogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0xeCkgdmFyKC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLXN0eWxlKVxuICAgICAgICAgIHZhcigtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1jb2xvcik7XG4gICAgICAgIGluc2V0LWlubGluZTogdmFyKC0tc2JiLWZvcm0tZmllbGQtcGFkZGluZy1pbmxpbmUpO1xuICAgICAgICBpbnNldC1ibG9jay1lbmQ6IDA7XG4gICAgICAgIHotaW5kZXg6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWZvY3VzLXVuZGVybGluZS16LWluZGV4LCBpbml0aWFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuOjpzbG90dGVkKCpbc2xvdD0ncHJlZml4J10pIHtcbiAgY29sb3I6IHZhcigtLXNiYi1mb3JtLWZpZWxkLXByZWZpeC1jb2xvcik7XG59XG5cbi8vIEVuc3VyZSBzbG90dGVkIGlubGluZSBlbGVtZW50cyBhcmUgdmVydGljYWxseSBjZW50ZXJlZFxuOjpzbG90dGVkKCpbc2xvdD0ncHJlZml4J10pLFxuOjpzbG90dGVkKCpbc2xvdD0nc3VmZml4J10pIHtcbiAgZGlzcGxheTogZmxleDtcbiAgbWluLXdpZHRoOiB2YXIoLS1zYmItaWNvbi1zdmctd2lkdGgpO1xuICBtYXJnaW4tYmxvY2stc3RhcnQ6IGNhbGMoKHZhcigtLXNiYi1mb3JtLWZpZWxkLW1pbi1oZWlnaHQpIC0gdmFyKC0tc2JiLXNpemUtaWNvbi11aS1zbWFsbCkpIC8gMik7XG59XG5cbjo6c2xvdHRlZChzYmItZm9ybS1maWVsZC1jbGVhcikge1xuICA6aG9zdCg6d2hlcmUoOnN0YXRlKGVtcHR5KSwgOnN0YXRlKGRpc2FibGVkKSwgOnN0YXRlKHJlYWRvbmx5KSkpICYge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuc2xvdFtuYW1lPSdoaW50J10ge1xuICA6aG9zdCg6c3RhdGUoaGFzLWVycm9yKSkgJiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG46OnNsb3R0ZWQoc2JiLWZvcm0tZmllbGQtdGV4dC1jb3VudGVyKSB7XG4gIDpob3N0KDp3aGVyZSg6c3RhdGUoZGlzYWJsZWQpLCA6c3RhdGUocmVhZG9ubHkpKSkgJiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vLyBBcyB0aGUgY2FsZW5kYXIgc2hvdWxkIGJlIHNob3duIGJlbG93IHRoZSBmb3JtIGZpZWxkIGJvcmRlciwgd2UgaGF2ZSB0byBzdHJldGNoIHRoZSB0b2dnbGUncyBoZWlnaHQuXG4vLyBUT0RPOiBNYXliZSBtb3ZlIHRoaXMgdG8gdGhlIGRhdGVwaWNrZXItdG9nZ2xlIGNvbXBvbmVudC5cbjo6c2xvdHRlZChzYmItZGF0ZXBpY2tlci10b2dnbGUpIHtcbiAgcGFkZGluZy1ibG9jay1lbmQ6IGNhbGMoKHZhcigtLXNiYi1mb3JtLWZpZWxkLW1pbi1oZWlnaHQpIC0gdmFyKC0tc2JiLXNpemUtaWNvbi11aS1zbWFsbCkpIC8gMik7XG59XG5cbkBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgLy8gQWxpZ24gd2l0aCBwcmVmaXggY29sb3JcbiAgOjpzbG90dGVkKCpbc2xvdD0nc3VmZml4J10pIHtcbiAgICBjb2xvcjogdmFyKC0tc2JiLWZvcm0tZmllbGQtcHJlZml4LWNvbG9yKTtcbiAgfVxufVxuXG4uc2JiLWZvcm0tZmllbGRfX3NlbGVjdC1pbnB1dC1pY29uIHtcbiAgQGluY2x1ZGUgc2JiLmFic29sdXRlLWNlbnRlci15O1xuXG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQtaW5saW5lLWVuZDogMDtcbiAgbWFyZ2luLWJsb2NrLXN0YXJ0OiBjYWxjKC0xICogdmFyKC0tc2JiLWZvcm0tZmllbGQtbWFyZ2luLWJsb2NrLXN0YXJ0KSAvIDIpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgY29sb3I6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWFycm93LWNvbG9yKTtcblxuICA6aG9zdChcbiAgICAgIDppcyhcbiAgICAgICAgOnN0YXRlKGlucHV0LXR5cGUtc2VsZWN0KSxcbiAgICAgICAgOnN0YXRlKGlucHV0LXR5cGUtc2JiLXNlbGVjdCksXG4gICAgICAgIDpzdGF0ZShleHBsaWNpdC1pbnB1dC10eXBlLXNlbGVjdClcbiAgICAgIClcbiAgICApXG4gICAgJiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG59XG5cbi5zYmItZm9ybS1maWVsZF9faW5wdXQtY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZmxleDogMSAxIGF1dG87XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zYmItZm9ybS1maWVsZC1tYXJnaW4tYmxvY2stc3RhcnQpO1xuXG4gIC8vIFByZXZlbnRzIG92ZXJmbG93aW5nIHBhcmVudFxuICBtaW4td2lkdGg6IDA7XG59XG5cbi5zYmItZm9ybS1maWVsZF9fbGFiZWwtc3BhY2VyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiBjYWxjKHZhcigtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLXRleHQtc2l6ZSkgKiB2YXIoLS1zYmItdHlwby1saW5lLWhlaWdodC10ZXh0KSk7XG5cbiAgLy8gTW92ZXMgbGFiZWwgZG93biBhbmQgaW5wdXQgdXAgdG8gbWVldCBwb3NpdGlvbmluZyByZXF1aXJlbWVudHNcbiAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tX3NiYi1mb3JtLWZpZWxkLXNwYWNlci1tYXJnaW4tYmxvY2stZW5kKTtcbn1cblxuLy8gVG8gYXZvaWQgZG91YmxlZCBwYXlsb2FkLCB3ZSBncm91cCB0aGUgcnVsZXMuXG46aXMoLnNiYi1mb3JtLWZpZWxkX19sYWJlbCwgLnNiYi1mb3JtLWZpZWxkX19sYWJlbC1zcGFjZXIpIHtcbiAgOmhvc3QoOm5vdCg6c3RhdGUoc2xvdHRlZC1sYWJlbCkpKSAmIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgOmhvc3QoW2hpZGRlbi1sYWJlbF0pICYge1xuICAgIEBpbmNsdWRlIHNiYi5zY3JlZW4tcmVhZGVyLW9ubHk7XG4gIH1cbn1cblxuLnNiYi1mb3JtLWZpZWxkX19sYWJlbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgY3Vyc29yOiB2YXIoLS1zYmItY3Vyc29yLWRlZmF1bHQpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0LWJsb2NrLXN0YXJ0OiAwO1xuICBjb2xvcjogdmFyKC0tc2JiLWZvcm0tZmllbGQtbGFiZWwtY29sb3IpO1xuICBmb250LXNpemU6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLXRleHQtc2l6ZSk7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zYmItdHlwby1sZXR0ZXItc3BhY2luZy10ZXh0KTtcblxuICA6aG9zdCg6d2hlcmUoOnN0YXRlKGlucHV0LXR5cGUtc2VsZWN0KSwgOnN0YXRlKGlucHV0LXR5cGUtc2JiLXNlbGVjdCkpKSAmIHtcbiAgICBwYWRkaW5nLWlubGluZS1lbmQ6IHZhcigtLXNiYi1mb3JtLWZpZWxkLXNlbGVjdC1pbmxpbmUtcGFkZGluZy1lbmQpO1xuICB9XG5cbiAgOmhvc3QoW2Zsb2F0aW5nLWxhYmVsXSkgJiB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyAvLyBXZSBzaG91bGRuJ3QgY2F0Y2ggbW91c2UgZXZlbnRzIChsZXQgdGhlbSB0aHJvdWdoKS5cbiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgZm9udC1zaXplO1xuXG4gICAgdHJhbnNpdGlvbjoge1xuICAgICAgZHVyYXRpb246IHZhcigtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbiwgdmFyKC0tc2JiLWFuaW1hdGlvbi1kdXJhdGlvbi0yeCkpO1xuICAgICAgdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItYW5pbWF0aW9uLWVhc2luZyk7XG4gICAgICBwcm9wZXJ0eTogdHJhbnNmb3JtLCBmb250LXNpemU7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgZmxvYXRpbmctbGFiZWwgaXMgYWN0aXZhdGVkIGFuZCB0aGVyZSBpcyBubyBmb2N1cyBpbiBpdCAoZXhjZXB0IGZvciBzZWxlY3QpIGFuZCBubyBwb3B1cCBpcyBvcGVuXG4gIC8vIGFuZCBpbnB1dCBpcyBlbXB0eSB0aGVuIGFwcGx5IHRoZSBsYWJlbCB0cmFuc2l0aW9uLlxuICAvLyBJZiBpdCBpcyBlbXB0eSBhbmQgcmVhZG9ubHksIGFsd2F5cyBhcHBseSB0cmFuc2l0aW9uXG4gIC8vIDp3aGVyZSBpcyB0byBhbGlnbiBzcGVjaWZpY2l0eVxuICA6aG9zdChcbiAgICAgIFtmbG9hdGluZy1sYWJlbF06aXMoXG4gICAgICAgICAgOm5vdChcbiAgICAgICAgICAgIDp3aGVyZSg6c3RhdGUoZm9jdXMpKTpub3QoOndoZXJlKDpzdGF0ZShpbnB1dC10eXBlLXNiYi1zZWxlY3QpKSksXG4gICAgICAgICAgICA6d2hlcmUoOnN0YXRlKGhhcy1wb3B1cC1vcGVuKSlcbiAgICAgICAgICApLFxuICAgICAgICAgIDp3aGVyZSg6c3RhdGUocmVhZG9ubHkpKVxuICAgICAgICApOndoZXJlKDpzdGF0ZShlbXB0eSkpXG4gICAgKVxuICAgICYge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2JiLWZvcm0tZmllbGQtaW5wdXQtdGV4dC1zaXplKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkodmFyKC0tX3NiYi1mb3JtLWZpZWxkLWZsb2F0aW5nLWxhYmVsLXRyYW5zZm9ybSkpO1xuICB9XG5cbiAgLy8gOndoZXJlIGlzIHRvIGFsaWduIHNwZWNpZmljaXR5XG4gIDpob3N0KDp3aGVyZSg6c3RhdGUoaW5wdXQtdHlwZS10ZXh0YXJlYSkpKSAmIHtcbiAgICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgICAvLyBUaGUgYmFja2dyb3VuZCBvZiB0aGUgdGV4dGFyZWEgaXMgc2V0IHRvIENhbnZhcyBhbmQgdGhlcmVmb3JlIGhpZGVzIHRoZSBsYWJlbCBiZWhpbmQuXG4gICAgICAvLyBCeSBzZXR0aW5nIHRoZSB6LWluZGV4IHRvIDEsIHdlIG1vdmUgdGhlIGxhYmVsIGluIGZyb250IG9mIHRoZSB0ZXh0YXJlYS5cbiAgICAgIHotaW5kZXg6IDE7XG4gICAgfVxuICB9XG59XG5cbi5zYmItZm9ybS1maWVsZF9fbGFiZWwtZWxsaXBzaXMge1xuICBAaW5jbHVkZSBzYmIuZWxsaXBzaXM7XG59XG5cbi5zYmItZm9ybS1maWVsZF9faW5wdXQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4OiAxO1xuICBhbGlnbi1pdGVtczogc3RhcnQ7XG5cbiAgOmhvc3QoXG4gICAgICA6aXMoXG4gICAgICAgIDpzdGF0ZShpbnB1dC10eXBlLWlucHV0KSxcbiAgICAgICAgOnN0YXRlKGlucHV0LXR5cGUtc2VsZWN0KSxcbiAgICAgICAgOnN0YXRlKGlucHV0LXR5cGUtc2JiLXNlbGVjdCksXG4gICAgICAgIDpzdGF0ZShpbnB1dC10eXBlLXNiYi1kYXRlLWlucHV0KSxcbiAgICAgICAgOnN0YXRlKGlucHV0LXR5cGUtc2JiLXRpbWUtaW5wdXQpXG4gICAgICApXG4gICAgKVxuICAgICYge1xuICAgIC8vIEluIHNpemUgcywgdGhlIG5hdHVyYWwgaGVpZ2h0IG9mIHRoZSB0ZXh0IGlucHV0IGlzIHRvbyBzbWFsbC5cbiAgICAvLyBUbyBub3QgcmVzZXJ2ZSB0b28gbXVjaCBzcGFjZSwgd2UgZGVjcmVhc2UgdGhlIGhlaWdodC5cbiAgICAvLyBUaGUgdmFyaWFibGUgaXMgc2V0IHRvIC0ycHggZm9yIHNpemUgcyAoZXhwbGljaXQgb3IgbGVhbi10aGVtZSBkZWZhdWx0KSBhbmQgMCBvdGhlcndpc2UuXG4gICAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tX3NiYi1mb3JtLWZpZWxkLWlucHV0LW1hcmdpbi1ibG9jay1lbmQpO1xuICB9XG59XG5cbi5zYmItZm9ybS1maWVsZF9faGludCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1pbi1oZWlnaHQ6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWhpbnQtbWluLWhlaWdodCk7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIG1hcmdpbi1ibG9jay1zdGFydDogdmFyKFxuICAgIC0tc2JiLWZvcm0tZmllbGQtaGludC1wYWRkaW5nLWJsb2NrLXN0YXJ0LW92ZXJyaWRlLFxuICAgIHZhcigtLXNiYi1mb3JtLWZpZWxkLWhpbnQtcGFkZGluZy1ibG9jay1zdGFydClcbiAgKTtcbn1cbiIsImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB1bnNhZmVDU1MsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB0eXBlIHsgU2JiQXV0b2NvbXBsZXRlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9hdXRvY29tcGxldGUucHVyZS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkNoaXBHcm91cEVsZW1lbnQgfSBmcm9tICcuLi8uLi9jaGlwLnB1cmUudHMnO1xuaW1wb3J0IHtcbiAgYXBwZW5kQXJpYUVsZW1lbnRzLFxuICBmb3JjZVR5cGUsXG4gIGkxOG5PcHRpb25hbCxcbiAgcmVtb3ZlQXJpYUVsZW1lbnRzLFxuICBTYmJFbGVtZW50LFxuICB0eXBlIFNiYkVsZW1lbnRUeXBlLFxuICB0eXBlIFNiYkZvcm1Bc3NvY2lhdGVkSW5wdXRNaXhpblR5cGUsXG4gIHNiYklucHV0TW9kYWxpdHlEZXRlY3RvcixcbiAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLFxuICBTYmJOZWdhdGl2ZU1peGluLFxufSBmcm9tICcuLi8uLi9jb3JlLnRzJztcbmltcG9ydCB7IFNiYkljb25FbGVtZW50IH0gZnJvbSAnLi4vLi4vaWNvbi5wdXJlLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiU2VsZWN0RWxlbWVudCB9IGZyb20gJy4uLy4uL3NlbGVjdC5wdXJlLnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZm9ybS1maWVsZC5zY3NzP2lubGluZSc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG5jb25zdCBwYXRjaGVkSW5wdXRzID0gbmV3IFdlYWtNYXA8SFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQsIFByb3BlcnR5RGVzY3JpcHRvcj4oKTtcbmNvbnN0IG5hdGl2ZUlucHV0RWxlbWVudHMgPSBbJ2lucHV0JywgJ3RleHRhcmVhJywgJ3NlbGVjdCddO1xuXG4vKiogQW4gaW50ZXJmYWNlIHdoaWNoIGFsbG93cyBhIGNvbnRyb2wgdG8gd29yayBpbnNpZGUgYSBgU2JiRm9ybUZpZWxkYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2JiRm9ybUZpZWxkRWxlbWVudENvbnRyb2wge1xuICAvKiogVGhlIGlkIG9mIHRoZSBmb3JtIGZpZWxkIGNvbnRyb2wuICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSBjb250cm9sIGlzIGVtcHR5LiAqL1xuICByZWFkb25seSBlbXB0eTogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlIGNvbnRyb2wgaXMgcmVhZG9ubHkuICovXG4gIHJlYWRvbmx5IHJlYWRPbmx5PzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlIGNvbnRyb2wgaXMgZGlzYWJsZWQuICovXG4gIHJlYWRvbmx5IGRpc2FibGVkOiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIGNvbnRyb2wuIFRoaXMgaXMgdXNlZCBhcyBhIHN0YXRlIHJlcHJlc2VudGF0aW9uLlxuICAgKiBXaGVuIHVzaW5nICdzZWxlY3QnLCB0aGUgZm9ybSBmaWVsZCB3aWxsIGRpc3BsYXkgdGhlIGRyb3Bkb3duIGljb24uXG4gICAqL1xuICByZWFkb25seSB0eXBlPzogJ3NlbGVjdCcgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgYSBjbGljayBvbiB0aGUgY29udHJvbCdzIGNvbnRhaW5lci5cbiAgICogSWYgbm90IGltcGxlbWVudGVkLCBmb2N1cygpIG9mIHRoZSBlbGVtZW50IGlzIGNhbGxlZC5cbiAgICovXG4gIG9uQ29udGFpbmVyQ2xpY2s/KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIFNiYkZvcm1GaWVsZENvbnRyb2xFdmVudCBleHRlbmRzIEV2ZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29udHJvbDogU2JiRm9ybUZpZWxkRWxlbWVudENvbnRyb2wgfCBudWxsO1xuXG4gIHB1YmxpYyBnZXQgY29udHJvbCgpOiBTYmJGb3JtRmllbGRFbGVtZW50Q29udHJvbCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9jb250cm9sO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvbnRyb2w6IFNiYkZvcm1GaWVsZEVsZW1lbnRDb250cm9sIHwgbnVsbCkge1xuICAgIHN1cGVyKCdmb3JtZmllbGRjb250cm9sJyk7XG4gICAgdGhpcy5fY29udHJvbCA9IGNvbnRyb2w7XG4gIH1cbn1cblxuLyoqXG4gKiBJdCB3cmFwcyBhbiBpbnB1dCBlbGVtZW50IGFkZGluZyBsYWJlbCwgZXJyb3JzLCBpY29uLCBldGMuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBpbnB1dC9zZWxlY3Qgb3IgYSBzdXBwb3J0ZWQgbm9uLW5hdGl2ZSBlbGVtZW50LlxuICogQHNsb3QgbGFiZWwgLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhIGxhYmVsLlxuICogQHNsb3QgcHJlZml4IC0gVXNlIHRoaXMgc2xvdCB0byByZW5kZXIgYW4gaWNvbiBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBpbnB1dC5cbiAqIEBzbG90IHN1ZmZpeCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGljb24gb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGlucHV0LlxuICogQHNsb3QgZXJyb3IgLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBlcnJvci5cbiAqIEBzbG90IGhpbnQgLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBgPHNiYi1oaW50PmAgb3IgYW4gYDxzYmItZm9ybS1maWVsZC10ZXh0LWNvdW50ZXI+YCBlbGVtZW50LlxuICpcbiAqIEBjc3Nwcm9wIFstLXNiYi1mb3JtLWZpZWxkLW91dGxpbmUtb2Zmc2V0XSAtIFRvIG92ZXJyaWRlIHRoZSBmb2N1cyBvdXRsaW5lIG9mZnNldCxcbiAqIEBjc3Nwcm9wIFstLXNiYi1mb3JtLWZpZWxkLWZvY3VzLXVuZGVybGluZS16LWluZGV4XSAtIFRvIG92ZXJyaWRlIHRoZSB6LWluZGV4IG9mIHRoZSBmb2N1cyB1bmRlcmxpbmUgZWZmZWN0LFxuICovXG5leHBvcnQgY2xhc3MgU2JiRm9ybUZpZWxkRWxlbWVudCBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiRWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLWZvcm0tZmllbGQnO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIGVsZW1lbnREZXBlbmRlbmNpZXM6IFNiYkVsZW1lbnRUeXBlW10gPSBbU2JiSWNvbkVsZW1lbnRdO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbdW5zYWZlQ1NTKHN0eWxlKV07XG5cbiAgLy8gTGlzdCBvZiBlbGVtZW50cyB0aGF0IHNob3VsZCBub3QgZm9jdXMgaW5wdXQgb24gY2xpY2tcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhjbHVkZWRGb2N1c0VsZW1lbnRzID0gWydidXR0b24nLCAnc2JiLXBvcG92ZXInLCAnc2JiLW9wdGlvbicsICdzYmItY2hpcCddO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zsb2F0aW5nTGFiZWxTdXBwb3J0ZWRJbnB1dEVsZW1lbnRzID0gW1xuICAgICdpbnB1dCcsXG4gICAgJ3NlbGVjdCcsXG4gICAgJ3RleHRhcmVhJyxcbiAgICAnc2JiLXNlbGVjdCcsXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZmxvYXRpbmdMYWJlbFN1cHBvcnRlZElucHV0VHlwZXMgPSBbXG4gICAgJ2VtYWlsJyxcbiAgICAnbnVtYmVyJyxcbiAgICAncGFzc3dvcmQnLFxuICAgICdzZWFyY2gnLFxuICAgICd0ZWwnLFxuICAgICd0ZXh0JyxcbiAgICAndXJsJyxcbiAgXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZXNlcnZlIHNwYWNlIGZvciBhbiBlcnJvciBtZXNzYWdlLCBoaW50IG9yIHRleHQtY291bnRlci5cbiAgICogYG5vbmVgIGRvZXMgbm90IHJlc2VydmUgYW55IHNwYWNlLlxuICAgKiBgcmVzZXJ2ZWAgZG9lcyByZXNlcnZlIG9uZSByb3cgZm9yIGFuIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdlcnJvci1zcGFjZScsIHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGFjY2Vzc29yIGVycm9yU3BhY2U6ICdub25lJyB8ICdyZXNlcnZlJyA9ICdub25lJztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGlucHV0IGlzIG9wdGlvbmFsLlxuICAgKiBAZGVwcmVjYXRlZCBTZXQgdGhlIChvcHRpb25hbCkgbGFiZWwgdGV4dCBtYW51YWxseS4gV2lsbCBiZSByZW1vdmVkIHdpdGggbmV4dCBtYWpvciB2ZXJzaW9uLlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIG9wdGlvbmFsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNpemUgdmFyaWFudCwgZWl0aGVyIHMgKGxlYW4gdGhlbWUgZGVmYXVsdCksIG0gKHN0YW5kYXJkIHRoZW1lIGRlZmF1bHQpIG9yIGwuXG4gICAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciBzaXplOiAncycgfCAnbScgfCAnbCcgfCBudWxsID0gbnVsbDtcblxuICAvKiogV2hldGhlciB0byBkaXNwbGF5IHRoZSBmb3JtIGZpZWxkIHdpdGhvdXQgYSBib3JkZXIuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBib3JkZXJsZXNzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIERlZmluZXMgdGhlIHdpZHRoIG9mIHRoZSBjb21wb25lbnQ6XG4gICAqIC0gYGRlZmF1bHRgOiB0aGUgY29tcG9uZW50IGhhcyBkZWZpbmVkIHdpZHRoIGFuZCBtaW4td2lkdGg7XG4gICAqIC0gYGNvbGxhcHNlYDogdGhlIGNvbXBvbmVudCBhZGFwdHMgaXRzZWxmIHRvIGl0cyBpbm5lciBpbnB1dCBjb250ZW50LiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciB3aWR0aDogJ2RlZmF1bHQnIHwgJ2NvbGxhcHNlJyA9ICdkZWZhdWx0JztcblxuICAvKiogV2hldGhlciB0byB2aXN1YWxseSBoaWRlIHRoZSBsYWJlbC4gSWYgaGlkZGVuLCBzY3JlZW4gcmVhZGVycyB3aWxsIHN0aWxsIHJlYWQgaXQuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdoaWRkZW4tbGFiZWwnLCByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBoaWRkZW5MYWJlbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBsYWJlbCBzaG91bGQgZmxvYXQuIElmIGFjdGl2YXRlZCwgdGhlIHBsYWNlaG9sZGVyIG9mIHRoZSBpbnB1dCBpcyBoaWRkZW4uICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdmbG9hdGluZy1sYWJlbCcsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGZsb2F0aW5nTGFiZWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGdldCB0aGUgYGVycm9yYCBzbG90LiAqL1xuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9lcnJvckVsZW1lbnRzOiBFbGVtZW50W10gPSBbXTtcblxuICAvKiogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGdldCB0aGUgYGhpbnRgIHNsb3QuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2hpbnRFbGVtZW50czogRWxlbWVudFtdID0gW107XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgc2xvdHRlZCBpbnB1dCBlbGVtZW50LiAqL1xuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9pbnB1dDogSFRNTElucHV0RWxlbWVudCB8IEhUTUxTZWxlY3RFbGVtZW50IHwgSFRNTEVsZW1lbnQgfCBudWxsID1cbiAgICBudWxsO1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHNsb3R0ZWQgbGFiZWwgZWxlbWVudHMuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2xhYmVsITogSFRNTExhYmVsRWxlbWVudDtcblxuICAvKiogUmV0dXJucyB0aGUgaW5wdXQgZWxlbWVudC4gKi9cbiAgcHVibGljIGdldCBpbnB1dEVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IEhUTUxTZWxlY3RFbGVtZW50IHwgSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXQ7XG4gIH1cblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBzbG90dGVkIGxhYmVsLiAqL1xuICBwdWJsaWMgZ2V0IGxhYmVsKCk6IEhUTUxMYWJlbEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWw7XG4gIH1cblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgLyoqXG4gICAqIExpc3RlbnMgdG8gdGhlIGNoYW5nZXMgb24gYHJlYWRvbmx5YCBhbmQgYGRpc2FibGVkYCBhdHRyaWJ1dGVzIG9mIGA8aW5wdXQ+YC5cbiAgICovXG4gIHByaXZhdGUgX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zOiBNdXRhdGlvblJlY29yZFtdKSA9PiB7XG4gICAgICAgIGlmIChtdXRhdGlvbnMuc29tZSgobSkgPT4gbS50eXBlID09PSAnYXR0cmlidXRlcycpICYmIHRoaXMuX2lucHV0KSB7XG4gICAgICAgICAgdGhpcy5fcmVhZElucHV0U3RhdGUoKTtcbiAgICAgICAgICB0aGlzLl9yZWdpc3RlcklucHV0Rm9ybUxpc3RlbmVyKCk7XG4gICAgICAgICAgdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCk7XG4gICAgICAgICAgLy8gVXNlZCB0byBub3RpZnkgdGhlIHJlbWFpbmluZyBjaGFycyBjb21wb25lbnQuXG4gICAgICAgICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ8m1aW5wdXRhdHRyaWJ1dGVjaGFuZ2UnKSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgOiBudWxsO1xuXG4gIHByaXZhdGUgX2lucHV0Rm9ybUFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgcHJpdmF0ZSBfY29udHJvbDogU2JiRm9ybUZpZWxkRWxlbWVudENvbnRyb2wgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfcHJldmlvdXNUeXBlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LihcbiAgICAgICdmb2N1c2luJyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZXZlbnQudGFyZ2V0ID09PSB0aGlzLmlucHV0RWxlbWVudCB8fFxuICAgICAgICAgIGV2ZW50LnRhcmdldCA9PT0gKHRoaXMuaW5wdXRFbGVtZW50IGFzIFNiYlNlbGVjdEVsZW1lbnQgfCB1bmRlZmluZWQpPy5pbnB1dEVsZW1lbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmFkZCgnZm9jdXMnKTtcbiAgICAgICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKGBmb2N1cy1vcmlnaW4tJHtzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IubW9zdFJlY2VudE1vZGFsaXR5fWApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBwYXNzaXZlOiB0cnVlIH0sXG4gICAgKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LihcbiAgICAgICdmb2N1c291dCcsXG4gICAgICAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGV2ZW50LnRhcmdldCA9PT0gdGhpcy5pbnB1dEVsZW1lbnQgfHxcbiAgICAgICAgICBldmVudC50YXJnZXQgPT09ICh0aGlzLmlucHV0RWxlbWVudCBhcyBTYmJTZWxlY3RFbGVtZW50IHwgdW5kZWZpbmVkKT8uaW5wdXRFbGVtZW50XG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuICAgICAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUoJ2ZvY3VzJyk7XG4gICAgICAgICAgZm9yIChjb25zdCBzdGF0ZSBvZiB0aGlzLmludGVybmFscy5zdGF0ZXMpIHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5zdGFydHNXaXRoKCdmb2N1cy1vcmlnaW4tJykpIHtcbiAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZShzdGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBwYXNzaXZlOiB0cnVlIH0sXG4gICAgKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4gdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCkpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignZGlzcGxheXZhbHVlY2hhbmdlJywgKCkgPT4gdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCkpO1xuICAgIC8vIFdlIHdhbnQgdG8gcHJldmVudCB0aGUgbmF0aXZlIGJyb3dzZXIgdmFsaWRhdGlvbiBtZXNzYWdlIHBvcG92ZXJcbiAgICAvLyB0byBiZSBzaG93bi4gVGhpcyBhbHNvIHByZXZlbnRzIGEgYnVnIGluIFdlYktpdCwgd2hpY2ggd291bGQgbm90XG4gICAgLy8gYWxsb3cgaG9zdCBhcyB0aGUgdmFsaWRpdHkgYW5jaG9yOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5ODMyXG4gICAgLy8gVGhpcyBpcyBkdXBsaWNhdGVkIGZyb20gdGhlIGZvcm0gYXNzb2NpYXRlZCBtaXhpbiBmb3IgdGhlIG5hdGl2ZVxuICAgIC8vIGlucHV0IGNvbnRyb2xzIChlLmcuIDxpbnB1dD4gb3IgPHNlbGVjdD4pLlxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignaW52YWxpZCcsIChlKSA9PiBlLnByZXZlbnREZWZhdWx0KCksIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2Zvcm1maWVsZGNvbnRyb2wnLCAoZTogU2JiRm9ybUZpZWxkQ29udHJvbEV2ZW50KSA9PiB7XG4gICAgICB0aGlzLl9jb250cm9sID0gZS5jb250cm9sO1xuICAgICAgaWYgKHRoaXMuX2Nvbm5lY3RJbnB1dEVsZW1lbnQoKSA9PT0gJ3VuY2hhbmdlZCcpIHtcbiAgICAgICAgdGhpcy5fYXNzaWduQXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoKTtcbiAgICAgICAgdGhpcy5fcmVhZElucHV0U3RhdGUoKTtcbiAgICAgICAgdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9hc3NpZ25TbG90cygpO1xuICAgIHRoaXMuX2Nvbm5lY3RJbnB1dEVsZW1lbnQoKTtcbiAgICB0aGlzLl9zeW5jTmVnYXRpdmUoKTtcbiAgICB0aGlzLl9zeW5jU2l6ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCduZWdhdGl2ZScpKSB7XG4gICAgICB0aGlzLl9zeW5jTmVnYXRpdmUoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnc2l6ZScpKSB7XG4gICAgICB0aGlzLl9zeW5jU2l6ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5faW5wdXRGb3JtQWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgaWYgKHRoaXMuX2lucHV0Py5sb2NhbE5hbWUgPT09ICdpbnB1dCcgfHwgdGhpcy5faW5wdXQ/LmxvY2FsTmFtZSA9PT0gJ3RleHRhcmVhJykge1xuICAgICAgdGhpcy5fdW5wYXRjaElucHV0VmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVXcmFwcGVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faXNFbGVtZW50Rm9jdXNFeGNsdWRlZChldmVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29udHJvbD8ub25Db250YWluZXJDbGljaykge1xuICAgICAgdGhpcy5fY29udHJvbD8ub25Db250YWluZXJDbGljayhldmVudCk7XG4gICAgfSBlbHNlIGlmICgoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpLmxvY2FsTmFtZSAhPT0gJ2xhYmVsJykge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLl9pbnB1dD8ubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcgJiZcbiAgICAgICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkubG9jYWxOYW1lICE9PSAnc2JiLXNlbGVjdCdcbiAgICAgICkge1xuICAgICAgICB0aGlzLl9pbnB1dC5jbGljaygpO1xuICAgICAgfVxuICAgICAgdGhpcy5faW5wdXQ/LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNFbGVtZW50Rm9jdXNFeGNsdWRlZChldmVudDogRXZlbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZXZlbnRcbiAgICAgIC5jb21wb3NlZFBhdGgoKVxuICAgICAgLnNvbWUoXG4gICAgICAgIChlbCkgPT5cbiAgICAgICAgICAoZWwgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQgJiZcbiAgICAgICAgICAgIChlbC5nZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JykgPT09ICcwJyB8fCBlbC5oYXNBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScpKSkgfHxcbiAgICAgICAgICB0aGlzLl9leGNsdWRlZEZvY3VzRWxlbWVudHMuaW5jbHVkZXMoKGVsIGFzIEhUTUxFbGVtZW50KS5sb2NhbE5hbWUpLFxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uU2xvdExhYmVsQ2hhbmdlKCk6IHZvaWQge1xuICAgIGNvbnN0IGxhYmVscyA9IEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsKCdsYWJlbCcpKTtcbiAgICBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFViAmJiBsYWJlbHMubGVuZ3RoID4gMSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgRGV0ZWN0ZWQgbW9yZSB0aGFuIG9uZSBsYWJlbCBpbiBzYmItZm9ybS1maWVsZCMke3RoaXMuaWR9LiBPbmx5IG9uZSBsYWJlbCBpcyBzdXBwb3J0ZWQuYCxcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuX2xhYmVsID0gbGFiZWxzWzBdO1xuICAgIHRoaXMuX3N5bmNMYWJlbElucHV0UmVmZXJlbmNlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IGlzIHVzZWQgaW50ZXJuYWxseSB0byBhc3NpZ24gdGhlIGF0dHJpYnV0ZXMgb2YgYDxpbnB1dD5gIHRvIGBfaWRgIGFuZCBgX2lucHV0YCBhbmQgdG8gb2JzZXJ2ZSB0aGUgbmF0aXZlIHJlYWRvbmx5IGFuZCBkaXNhYmxlZCBhdHRyaWJ1dGVzLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25TbG90SW5wdXRDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5fYXNzaWduU2xvdHMoKTtcbiAgICB0aGlzLl9jb25uZWN0SW5wdXRFbGVtZW50KCk7XG4gIH1cblxuICBwcml2YXRlIF9hc3NpZ25TbG90cygpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ2xhYmVsOm5vdChbc2xvdF0pJykuZm9yRWFjaCgoZSkgPT4gZS5zZXRBdHRyaWJ1dGUoJ3Nsb3QnLCAnbGFiZWwnKSk7XG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsKCdzYmItZXJyb3I6bm90KFtzbG90XSknKS5mb3JFYWNoKChlKSA9PiBlLnNldEF0dHJpYnV0ZSgnc2xvdCcsICdlcnJvcicpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Nvbm5lY3RJbnB1dEVsZW1lbnQoKTogJ2NoYW5nZWQnIHwgJ25vLWlucHV0JyB8ICd1bmNoYW5nZWQnIHtcbiAgICBsZXQgbmV3SW5wdXQ6IEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgICBpZiAodGhpcy5fY29udHJvbD8uaWQpIHtcbiAgICAgIG5ld0lucHV0ID0gKHRoaXMuZ2V0Um9vdE5vZGUoKSBhcyBEb2N1bWVudCB8IFNoYWRvd1Jvb3QpLmdldEVsZW1lbnRCeUlkKHRoaXMuX2NvbnRyb2wuaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGaW5kIHRoZSBzbG90dGVkIGlucHV0IGVsZW1lbnQsIGV2ZW4gaWYgaXQncyBuZXN0ZWQgKGUuZy4gY2hpcCBncm91cClcbiAgICAgIGNvbnN0IGlucHV0Q2FuZGlkYXRlcyA9IEFycmF5LmZyb20oXG4gICAgICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJyo6bm90KFtzbG90XSxzYmItY2hpcC1ncm91cCknKSxcbiAgICAgICk7XG4gICAgICBuZXdJbnB1dCA9XG4gICAgICAgIChpbnB1dENhbmRpZGF0ZXMuZmluZCgoZSkgPT4gdGhpcy5faXNJbnB1dEVsZW1lbnQoZSkpIHx8IGlucHV0Q2FuZGlkYXRlc1swXSkgPz8gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAobmV3SW5wdXQgPT09IHRoaXMuX2lucHV0KSB7XG4gICAgICByZXR1cm4gJ3VuY2hhbmdlZCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dCkge1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZShgaW5wdXQtdHlwZS0ke3RoaXMuX2lucHV0LmxvY2FsTmFtZX1gKTtcbiAgICAgIGlmICh0aGlzLl9pbnB1dC5sb2NhbE5hbWUgPT09ICdpbnB1dCcgfHwgdGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAndGV4dGFyZWEnKSB7XG4gICAgICAgIHRoaXMuX3VucGF0Y2hJbnB1dFZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFuZXdJbnB1dCkge1xuICAgICAgdGhpcy5faW5wdXQgPSBudWxsO1xuICAgICAgcmV0dXJuICduby1pbnB1dCc7XG4gICAgfVxuXG4gICAgdGhpcy5faW5wdXQgPSBuZXdJbnB1dDtcbiAgICB0aGlzLl9yZWdpc3RlcklucHV0Rm9ybUxpc3RlbmVyKCk7XG4gICAgdGhpcy5fYXNzaWduQXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoKTtcbiAgICB0aGlzLl9yZWFkSW5wdXRTdGF0ZSgpO1xuICAgIHRoaXMuX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuXG4gICAgaWYgKHRoaXMuX2lucHV0LmxvY2FsTmFtZSA9PT0gJ3RleHRhcmVhJykge1xuICAgICAgdGhpcy5faW5wdXQuc2V0QXR0cmlidXRlKCdyb3dzJywgdGhpcy5faW5wdXQuZ2V0QXR0cmlidXRlKCdyb3dzJykgfHwgJzMnKTtcbiAgICAgIHRoaXMuX3BhdGNoSW5wdXRWYWx1ZSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAnaW5wdXQnKSB7XG4gICAgICB0aGlzLl9wYXRjaElucHV0VmFsdWUoKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgKHRoaXMuX2lucHV0LmxvY2FsTmFtZSA9PT0gJ3NlbGVjdCcgfHwgdGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpICYmXG4gICAgICAhdGhpcy5oYXNVcGRhdGVkXG4gICAgKSB7XG4gICAgICAvLyBEdWUgdG8gU1NSIHRoZSBkcm9wZG93biBpY29uIGZvciBzZWxlY3RzIGNhbm5vdCBiZSByZW5kZXJlZCBpbiB0aGUgZmlyc3QgcmVuZGVyIHBhc3MuXG4gICAgICAvLyBEdWUgdG8gdGhpcyB3ZSBzY2hlZHVsZSBhIHJlLXJlbmRlciB0byByZW5kZXIgdGhlIGljb24uXG4gICAgICB0aGlzLmh5ZHJhdGlvbkNvbXBsZXRlLnRoZW4oKCkgPT4gdGhpcy5yZXF1ZXN0VXBkYXRlKCkpO1xuICAgIH1cblxuICAgIHRoaXMuX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5fZm9ybUZpZWxkQXR0cmlidXRlT2JzZXJ2ZXI/Lm9ic2VydmUodGhpcy5faW5wdXQsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsncmVhZG9ubHknLCAnZGlzYWJsZWQnLCAnZm9ybScsICdjbGFzcycsICdkYXRhLWV4cGFuZGVkJywgJ21heGxlbmd0aCddLFxuICAgIH0pO1xuICAgIC8vIFRPRE8oYnJlYWtpbmctY2hhbmdlKTogUmVuYW1lIGlucHV0LXR5cGUgdG8gaW5wdXQtZWxlbWVudCBhbmQgZXhwbGljaXQtaW5wdXQtdHlwZSB0byBpbnB1dC10eXBlLlxuICAgIC8vIEFsc28gYWRhcHQgZG9jdW1lbnRhdGlvbi5cbiAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKGBpbnB1dC10eXBlLSR7dGhpcy5faW5wdXQubG9jYWxOYW1lfWApO1xuICAgIHRoaXMuX3N5bmNMYWJlbElucHV0UmVmZXJlbmNlcygpO1xuICAgIHJldHVybiAnY2hhbmdlZCc7XG4gIH1cblxuICBwcml2YXRlIF9zeW5jTGFiZWxJbnB1dFJlZmVyZW5jZXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pbnB1dCB8fCAhdGhpcy5fbGFiZWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBuYXRpdmVJbnB1dEVsZW1lbnRzLmluY2x1ZGVzKHRoaXMuX2lucHV0LmxvY2FsTmFtZSkgfHxcbiAgICAgIChjdXN0b21FbGVtZW50cy5nZXQodGhpcy5faW5wdXQubG9jYWxOYW1lKSBhcyB7IGZvcm1Bc3NvY2lhdGVkPzogYm9vbGVhbiB9IHwgdW5kZWZpbmVkKVxuICAgICAgICA/LmZvcm1Bc3NvY2lhdGVkXG4gICAgKSB7XG4gICAgICAvLyBGb3IgbmF0aXZlIGlucHV0IGVsZW1lbnRzIHdlIHVzZSB0aGUgYGZvcmAgYXR0cmlidXRlIG9uIHRoZSBsYWJlbCB0byByZWZlcmVuY2UgdGhlIGlucHV0XG4gICAgICAvLyB2aWEgaWQgcmVmZXJlbmNlLlxuICAgICAgdGhpcy5faW5wdXQuaWQgfHw9IGBzYmItZm9ybS1maWVsZC1pbnB1dC0ke25leHRJZCsrfWA7XG4gICAgICB0aGlzLl9sYWJlbC5odG1sRm9yID0gdGhpcy5faW5wdXQuaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZvciBub24tbmF0aXZlIGlucHV0IGVsZW1lbnRzLCB0aGF0IGRvIG5vdCBzdXBwb3J0IHJlZmVyZW5jZXMgdmlhIHRoZSBsYWJlbCBmb3IgYXR0cmlidXRlLFxuICAgICAgLy8gd2UgdXNlIGFyaWEtbGFiZWxsZWRieSBvbiB0aGUgaW5wdXQgZWxlbWVudCB0byByZWZlcmVuY2UgdGhlIGxhYmVsIGVsZW1lbnQgdmlhIGlkLlxuICAgICAgLy8gVE9ETzogTWlncmF0ZSB0byBhcmlhTGFiZWxsZWRCeUVsZW1lbnRzIHdoZW4gYXZhaWxhYmxlOlxuICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0VsZW1lbnQvYXJpYUxhYmVsbGVkQnlFbGVtZW50c1xuICAgICAgdGhpcy5fbGFiZWwuaWQgfHw9IGBzYmItZm9ybS1maWVsZC1sYWJlbC0ke25leHRJZCsrfWA7XG4gICAgICBjb25zdCBsYWJlbGxlZGJ5ID1cbiAgICAgICAgdGhpcy5faW5wdXRcbiAgICAgICAgICAuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknKVxuICAgICAgICAgID8uc3BsaXQoJyAnKVxuICAgICAgICAgIC5maWx0ZXIoKGwpID0+ICEhbCAmJiBsICE9PSB0aGlzLl9sYWJlbCEuaWQpID8/IFtdO1xuICAgICAgdGhpcy5faW5wdXQuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknLCBbLi4ubGFiZWxsZWRieSwgdGhpcy5fbGFiZWwuaWRdLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNJbnB1dEVsZW1lbnQoaW5wdXQ6IEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgbmF0aXZlSW5wdXRFbGVtZW50cy5pbmNsdWRlcyhpbnB1dC5sb2NhbE5hbWUpIHx8XG4gICAgICAhIShjdXN0b21FbGVtZW50cy5nZXQoaW5wdXQubG9jYWxOYW1lKSBhcyB7IGZvcm1Bc3NvY2lhdGVkPzogYm9vbGVhbiB9IHwgdW5kZWZpbmVkKVxuICAgICAgICA/LmZvcm1Bc3NvY2lhdGVkXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlYWRJbnB1dFN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ3JlYWRvbmx5JywgdGhpcy5fY29udHJvbD8ucmVhZE9ubHkgPz8gdGhpcy5faW5wdXQhLmhhc0F0dHJpYnV0ZSgncmVhZG9ubHknKSk7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnZGlzYWJsZWQnLCB0aGlzLl9jb250cm9sPy5kaXNhYmxlZCA/PyB0aGlzLl9pbnB1dCEuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpKTtcbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdoYXMtcG9wdXAtb3BlbicsIHRoaXMuX2lucHV0IS5oYXNBdHRyaWJ1dGUoJ2RhdGEtZXhwYW5kZWQnKSk7XG5cbiAgICBpZiAodGhpcy5fcHJldmlvdXNUeXBlKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKGBleHBsaWNpdC1pbnB1dC10eXBlLSR7dGhpcy5fcHJldmlvdXNUeXBlfWApO1xuICAgIH1cblxuICAgIHRoaXMuX3ByZXZpb3VzVHlwZSA9IHRoaXMuX2NvbnRyb2w/LnR5cGUgPz8gKHRoaXMuX2lucHV0IGFzIHsgdHlwZT86IHN0cmluZyB9KS50eXBlID8/ICd0ZXh0JztcbiAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKGBleHBsaWNpdC1pbnB1dC10eXBlLSR7dGhpcy5fcHJldmlvdXNUeXBlfWApO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVnaXN0ZXJJbnB1dEZvcm1MaXN0ZW5lcigpOiB2b2lkIHtcbiAgICB0aGlzLl9pbnB1dEZvcm1BYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICBjb25zdCB7IHNpZ25hbCB9ID0gKHRoaXMuX2lucHV0Rm9ybUFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKSk7XG5cbiAgICBjb25zdCBmb3JtID1cbiAgICAgICh0aGlzLl9pbnB1dCBhcyBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFNlbGVjdEVsZW1lbnQgfCB1bmRlZmluZWQpPy5mb3JtID8/XG4gICAgICB0aGlzLl9pbnB1dD8uY2xvc2VzdCgnZm9ybScpO1xuICAgIC8vIFRpbWVvdXQgbmVlZGVkIHRvIGhhdmUgdmFsdWUgdXBkYXRlZFxuICAgIGNvbnN0IHJlc2V0SGFuZGxlciA9ICgpOiB1bmtub3duID0+IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZXNldCgpKTtcbiAgICBmb3JtPy5hZGRFdmVudExpc3RlbmVyKCdyZXNldCcsIHJlc2V0SGFuZGxlciwgeyBzaWduYWwgfSk7XG4gIH1cblxuICAvLyBXZSBuZWVkIHRvIHBhdGNoIHRoZSB2YWx1ZSBwcm9wZXJ0eSBvZiB0aGUgSFRNTElucHV0RWxlbWVudCBpbiBvcmRlclxuICAvLyB0byBiZSBhYmxlIHRvIHJlc2V0IHRoZSBmbG9hdGluZyBsYWJlbCBpbiB0aGUgZW1wdHkgc3RhdGUuXG4gIHByaXZhdGUgX3BhdGNoSW5wdXRWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSB0aGlzLl9pbnB1dCBhcyBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudDtcbiAgICBpZiAoIWlucHV0RWxlbWVudCB8fCBwYXRjaGVkSW5wdXRzLmhhcyhpbnB1dEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihcbiAgICAgIE9iamVjdC5nZXRQcm90b3R5cGVPZihpbnB1dEVsZW1lbnQpLFxuICAgICAgJ3ZhbHVlJyxcbiAgICApO1xuXG4gICAgaWYgKCFvcmlnaW5hbERlc2NyaXB0b3IgfHwgIW9yaWdpbmFsRGVzY3JpcHRvci5zZXQgfHwgIW9yaWdpbmFsRGVzY3JpcHRvci5nZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwYXRjaGVkSW5wdXRzLnNldChpbnB1dEVsZW1lbnQsIG9yaWdpbmFsRGVzY3JpcHRvcik7XG5cbiAgICBjb25zdCB7IGdldDogZ2V0dGVyLCBzZXQ6IHNldHRlciB9ID0gb3JpZ2luYWxEZXNjcmlwdG9yO1xuICAgIGNvbnN0IGNoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSA9ICgpOiB2b2lkID0+IHtcbiAgICAgIHRoaXMuX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuXG4gICAgICAvLyBVc2VkIHRvIG5vdGlmeSB0aGUgcmVtYWluaW5nIGNoYXJzIGNvbXBvbmVudCB0byB1cGRhdGUgaXRzIGNvdW50XG4gICAgICAvLyB3aGVuIHRoZSB2YWx1ZSBpcyBjaGFuZ2VkIHZpYSBmb3JtIHJlc2V0IG9yIHByb2dyYW1tYXRpY2FsbHkuXG4gICAgICAvLyBXZSBuZWVkIGEgY3VzdG9tIGV2ZW50IGZvciB0aGlzLCBiZWNhdXNlIHRoZSBuYXRpdmUgaW5wdXQgZXZlbnQgaXNcbiAgICAgIC8vIG5vdCB0cmlnZ2VyZWQgaW4gdGhlc2UgY2FzZXMuXG4gICAgICAvKiogQGludGVybmFsICovXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCfJtWlucHV0JykpO1xuICAgIH07XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5wdXRFbGVtZW50LCAndmFsdWUnLCB7XG4gICAgICAuLi5vcmlnaW5hbERlc2NyaXB0b3IsXG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiBnZXR0ZXIuY2FsbCh0aGlzKTtcbiAgICAgIH0sXG4gICAgICBzZXQobmV3VmFsdWUpIHtcbiAgICAgICAgc2V0dGVyLmNhbGwodGhpcywgbmV3VmFsdWUpO1xuICAgICAgICBjaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF91bnBhdGNoSW5wdXRWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSB0aGlzLl9pbnB1dCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGNvbnN0IG9yaWdpbmFsRGVzY3JpcHRvciA9IHBhdGNoZWRJbnB1dHMuZ2V0KGlucHV0RWxlbWVudCk7XG4gICAgaWYgKG9yaWdpbmFsRGVzY3JpcHRvcikge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGlucHV0RWxlbWVudCwgJ3ZhbHVlJywgb3JpZ2luYWxEZXNjcmlwdG9yKTtcbiAgICAgIHBhdGNoZWRJbnB1dHMuZGVsZXRlKGlucHV0RWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoXG4gICAgICAnZW1wdHknLFxuICAgICAgdGhpcy5fY29udHJvbD8uZW1wdHkgPz9cbiAgICAgICAgKCgodGhpcy5fZmxvYXRpbmdMYWJlbFN1cHBvcnRlZElucHV0RWxlbWVudHMuaW5jbHVkZXModGhpcy5faW5wdXQ/LmxvY2FsTmFtZSBhcyBzdHJpbmcpIHx8XG4gICAgICAgICAgKHRoaXMuX2lucHV0Py5jb25zdHJ1Y3RvciBhcyB1bmRlZmluZWQgfCB0eXBlb2YgU2JiRm9ybUFzc29jaWF0ZWRJbnB1dE1peGluVHlwZSlcbiAgICAgICAgICAgID8uZm9ybUZpZWxkQXNzb2NpYXRlZCkgPz9cbiAgICAgICAgICBmYWxzZSkgJiZcbiAgICAgICAgICB0aGlzLl9pc0lucHV0RW1wdHkoKSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzSW5wdXRFbXB0eSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjaGlwR3JvdXBFbGVtOiBTYmJDaGlwR3JvdXBFbGVtZW50IHwgbnVsbCA9IHRoaXMucXVlcnlTZWxlY3Rvcignc2JiLWNoaXAtZ3JvdXAnKTtcbiAgICBpZiAoY2hpcEdyb3VwRWxlbSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5faXNJbnB1dFZhbHVlRW1wdHkoKSAmJlxuICAgICAgICAoQXJyYXkuaXNBcnJheShjaGlwR3JvdXBFbGVtLnZhbHVlKVxuICAgICAgICAgID8gY2hpcEdyb3VwRWxlbS52YWx1ZS5sZW5ndGggPT09IDBcbiAgICAgICAgICA6ICFjaGlwR3JvdXBFbGVtLnF1ZXJ5U2VsZWN0b3IoJ3NiYi1jaGlwJykpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLl9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRUeXBlcy5pbmNsdWRlcyh0aGlzLl9pbnB1dC50eXBlKSAmJlxuICAgICAgICB0aGlzLl9pc0lucHV0VmFsdWVFbXB0eSgpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXQgaW5zdGFuY2VvZiBIVE1MU2VsZWN0RWxlbWVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2lucHV0LnNlbGVjdGVkT3B0aW9ucz8uaXRlbSgwKT8ubGFiZWw/LnRyaW0oKSA9PT0gJyc7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpIHtcbiAgICAgIHJldHVybiAodGhpcy5faW5wdXQgYXMgU2JiU2VsZWN0RWxlbWVudCkuZ2V0RGlzcGxheVZhbHVlPy4oKT8udHJpbSgpID09PSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX2lzSW5wdXRWYWx1ZUVtcHR5KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNJbnB1dFZhbHVlRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdmFsdWUgPSAodGhpcy5faW5wdXQgYXMgeyB2YWx1ZTogc3RyaW5nIH0pLnZhbHVlO1xuICAgIHJldHVybiBbJycsIHVuZGVmaW5lZCwgbnVsbF0uaW5jbHVkZXModmFsdWUpIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IGlzIHVzZWQgaW50ZXJuYWxseSB0byBzZXQgdGhlIGFyaWEtZGVzY3JpYmVkYnkgYXR0cmlidXRlIGZvciB0aGUgc2xvdHRlZCBpbnB1dCByZWZlcmVuY2luZyBhdmFpbGFibGUgPHNiYi1lcnJvcj4gaW5zdGFuY2VzLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25TbG90RXJyb3JDaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZXJyb3JFbGVtZW50cyA9IChldmVudC50YXJnZXQgYXMgSFRNTFNsb3RFbGVtZW50KS5hc3NpZ25lZEVsZW1lbnRzKCk7XG4gICAgaWYgKHRoaXMuX2lucHV0ICYmIHRoaXMuX2lucHV0LmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2lucHV0LmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzID0gcmVtb3ZlQXJpYUVsZW1lbnRzKFxuICAgICAgICB0aGlzLl9pbnB1dC5hcmlhRGVzY3JpYmVkQnlFbGVtZW50cyxcbiAgICAgICAgLi4uKHRoaXMuX2Vycm9yRWxlbWVudHMgPz8gW10pLFxuICAgICAgICAvLyBBbHNvIHJlbW92ZSBoaW50IGVsZW1lbnRzIHNpbmNlIHRoZWlyIHZpc2liaWxpdHkgZGVwZW5kcyBvbiBlcnJvciBzdGF0ZVxuICAgICAgICAuLi4odGhpcy5faGludEVsZW1lbnRzID8/IFtdKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fZXJyb3JFbGVtZW50cyA9IGVycm9yRWxlbWVudHM7XG4gICAgZm9yIChjb25zdCBlbCBvZiB0aGlzLl9lcnJvckVsZW1lbnRzKSB7XG4gICAgICAvLyBJbnN0ZWFkIG9mIGRlZmluaW5nIGEgY29udGFpbmVyIHdpdGggYW4gYXJpYS1saXZlIHJlZ2lvbiBhcyBleHBlY3RlZCwgd2UgaGFkIHRvIGNoYW5nZVxuICAgICAgLy8gc2V0dGluZyBpdCBmb3IgZXZlcnkgc2xvdHRlZCBlbGVtZW50IHRvIHByb3Blcmx5IHdvcmsgaW4gYWxsIGJyb3dzZXJzIGFuZCBzY3JlZW4gcmVhZGVyIGNvbWJpbmF0aW9ucy5cbiAgICAgIGVsLnJvbGUgfHw9ICdzdGF0dXMnO1xuICAgIH1cblxuICAgIHRoaXMuX2Fzc2lnbkFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKCk7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnaGFzLWVycm9yJywgISF0aGlzLl9lcnJvckVsZW1lbnRzLmxlbmd0aCk7XG4gICAgdGhpcy5fc3luY05lZ2F0aXZlKCk7XG4gIH1cblxuICAvKipcbiAgICogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIHNldCB0aGUgYXJpYS1kZXNjcmliZWRieSBhdHRyaWJ1dGUgZm9yIHRoZSBzbG90dGVkIGlucHV0IHJlZmVyZW5jaW5nIGF2YWlsYWJsZSA8c2JiLWhpbnQ+IGluc3RhbmNlcy5cbiAgICovXG4gIHByaXZhdGUgX29uU2xvdEhpbnRDaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaGludEVsZW1lbnRzID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2xvdEVsZW1lbnQpLmFzc2lnbmVkRWxlbWVudHMoKTtcbiAgICBpZiAodGhpcy5faW5wdXQ/LmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzPy5sZW5ndGggJiYgdGhpcy5faGludEVsZW1lbnRzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2lucHV0LmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzID0gcmVtb3ZlQXJpYUVsZW1lbnRzKFxuICAgICAgICB0aGlzLl9pbnB1dC5hcmlhRGVzY3JpYmVkQnlFbGVtZW50cyxcbiAgICAgICAgLi4udGhpcy5faGludEVsZW1lbnRzLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9oaW50RWxlbWVudHMgPSBoaW50RWxlbWVudHM7XG4gICAgdGhpcy5fYXNzaWduQXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoKTtcbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdoYXMtaGludCcsICEhdGhpcy5faGludEVsZW1lbnRzLmxlbmd0aCk7XG4gICAgdGhpcy5fc3luY05lZ2F0aXZlKCk7XG4gIH1cblxuICBwcml2YXRlIF9hc3NpZ25BcmlhRGVzY3JpYmVkQnlFbGVtZW50cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faW5wdXQpIHtcbiAgICAgIC8vIEhpbnQgZWxlbWVudHMgYXJlIG9ubHkgbGlua2VkIHdoZW4gdGhlcmUgYXJlIG5vIGVycm9yc1xuICAgICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLl9lcnJvckVsZW1lbnRzLmxlbmd0aCA/IHRoaXMuX2Vycm9yRWxlbWVudHMgOiB0aGlzLl9oaW50RWxlbWVudHM7XG4gICAgICB0aGlzLl9pbnB1dC5hcmlhRGVzY3JpYmVkQnlFbGVtZW50cyA9IGFwcGVuZEFyaWFFbGVtZW50cyhcbiAgICAgICAgdGhpcy5faW5wdXQuYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMsXG4gICAgICAgIC4uLmVsZW1lbnRzLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKiogTWFudWFsbHkgcmVzZXQgdGhlIGZvcm0gZmllbGQuIEN1cnJlbnRseSwgdGhpcyBvbmx5IHJlc2V0cyB0aGUgZmxvYXRpbmcgbGFiZWwuICovXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcbiAgfVxuXG4gIC8qKiBNYW51YWxseSBjbGVhcnMgdGhlIGlucHV0IHZhbHVlLiBJdCBvbmx5IHdvcmtzIGZvciBpbnB1dHMsIHNlbGVjdHMgYXJlIG5vdCBzdXBwb3J0ZWQuICovXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICBpZiAoKHRoaXMuX2lucHV0Py5sb2NhbE5hbWUgYXMgc3RyaW5nKSAhPT0gJ2lucHV0Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAodGhpcy5faW5wdXQgYXMgeyB2YWx1ZTogc3RyaW5nIH0pLnZhbHVlID0gJyc7XG4gICAgdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCk7XG4gIH1cblxuICBwcml2YXRlIF9zeW5jTmVnYXRpdmUoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPy4oXG4gICAgICAnc2JiLWVycm9yLHNiYi1taW5pLWJ1dHRvbixzYmItbWluaS1idXR0b24tbGluayxzYmItZm9ybS1maWVsZC1jbGVhcixzYmItZGF0ZXBpY2tlci1uZXh0LWRheSxzYmItZGF0ZXBpY2tlci1wcmV2aW91cy1kYXksc2JiLWRhdGVwaWNrZXItdG9nZ2xlLHNiYi1zZWxlY3Qsc2JiLWF1dG9jb21wbGV0ZSxzYmItYXV0b2NvbXBsZXRlLWdyaWQsc2JiLWNoaXAtZ3JvdXAsc2JiLWhpbnQsc2JiLWZvcm0tZmllbGQtdGV4dC1jb3VudGVyJyxcbiAgICApLmZvckVhY2goKGVsZW1lbnQpID0+IGVsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCduZWdhdGl2ZScsIHRoaXMubmVnYXRpdmUpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNTaXplKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbD8uPFNiYkF1dG9jb21wbGV0ZUJhc2VFbGVtZW50IHwgU2JiU2VsZWN0RWxlbWVudD4oXG4gICAgICAnc2JiLWF1dG9jb21wbGV0ZSxzYmItYXV0b2NvbXBsZXRlLWdyaWQsc2JiLXNlbGVjdCcsXG4gICAgKS5mb3JFYWNoKChlbGVtZW50KSA9PiAoZWxlbWVudC5zaXplID0gdGhpcy5zaXplID09PSAnbCcgPyAnbScgOiB0aGlzLnNpemUpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19zcGFjZS13cmFwcGVyXCI+XG4gICAgICAgICR7LyogUXVlcmllZCBieSBpZCBmcm9tIHRoZSBhdXRvY29tcGxldGUvc2VsZWN0IHRvIGJlIHVzZWQgYXMgdGhlIGFuY2hvciBlbGVtZW50ICovICcnfVxuICAgICAgICA8ZGl2IEBjbGljaz0ke3RoaXMuX2hhbmRsZVdyYXBwZXJDbGlja30gY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fd3JhcHBlclwiIGlkPVwib3ZlcmxheS1hbmNob3JcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwicHJlZml4XCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9zeW5jTmVnYXRpdmV9Pjwvc2xvdD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX2lucHV0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fbGFiZWwtc3BhY2VyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fbGFiZWxcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fbGFiZWwtZWxsaXBzaXNcIj5cbiAgICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwibGFiZWxcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX29uU2xvdExhYmVsQ2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgICAgICAgICAgJHt0aGlzLm9wdGlvbmFsXG4gICAgICAgICAgICAgICAgICA/IGh0bWxgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiAke2kxOG5PcHRpb25hbFt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0gPC9zcGFuPmBcbiAgICAgICAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19pbnB1dFwiPlxuICAgICAgICAgICAgICA8c2xvdCBAc2xvdGNoYW5nZT0ke3RoaXMuX29uU2xvdElucHV0Q2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzYmItaWNvblxuICAgICAgICAgICAgICBuYW1lPVwiY2hldnJvbi1zbWFsbC1kb3duLXNtYWxsXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fc2VsZWN0LWlucHV0LWljb25cIlxuICAgICAgICAgICAgPjwvc2JiLWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInN1ZmZpeFwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fc3luY05lZ2F0aXZlfT48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9faGludFwiPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJoaW50XCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9vblNsb3RIaW50Q2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImVycm9yXCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9vblNsb3RFcnJvckNoYW5nZX0+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1mb3JtLWZpZWxkJzogU2JiRm9ybUZpZWxkRWxlbWVudDtcbiAgfVxuXG4gIGludGVyZmFjZSBIVE1MRWxlbWVudEV2ZW50TWFwIHtcbiAgICBmb3JtZmllbGRjb250cm9sOiBTYmJGb3JtRmllbGRDb250cm9sRXZlbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FDOEJBLElBQUksU0FBUztBQUViLElBQU0sZ0NBQWdCLElBQUksUUFBTztBQUNqQyxJQUFNLHNCQUFzQjtDQUFDO0NBQVM7Q0FBWTtBQUFRO0FBeUIxRCxJQUFhLDJCQUFiLGNBQThDLE1BQUs7Q0FHakQsSUFBVyxVQUFPO0VBQ2hCLE9BQU8sS0FBSztDQUNkO0NBRUEsWUFBbUIsU0FBMEM7RUFDM0QsTUFBTSxrQkFBa0I7RUFDeEIsS0FBSyxXQUFXO0NBQ2xCOzs7Ozs7Ozs7Ozs7Ozs7SUFnQlcsNkJBQW1CO21CQUFTLGlCQUFpQixVQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2NBQXZELDRCQUE0QixZQUE0Qjs7OzZCQThCbEUsU0FBUztJQUFFLFdBQVc7SUFBZSxTQUFTO0dBQUksQ0FBRSxDQUFDOzJCQU9yRCxVQUFTLEdBQ1QsU0FBUyxFQUFFLE1BQU0sUUFBTyxDQUFFLENBQUM7dUJBTTNCLFNBQVMsRUFBRSxTQUFTLEtBQUksQ0FBRSxDQUFDOzZCQUczQixVQUFTLEdBQ1QsU0FBUztJQUFFLFNBQVM7SUFBTSxNQUFNO0dBQU8sQ0FBRSxDQUFDO3dCQU0xQyxTQUFTLEVBQUUsU0FBUyxLQUFJLENBQUUsQ0FBQzs4QkFHM0IsVUFBUyxHQUNULFNBQVM7SUFBRSxX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
@@ -1,6 +1,6 @@
1
1
  import { CSSResultGroup, PropertyDeclaration, PropertyValues } from 'lit';
2
- import { SbbEscapableOverlayController, SbbFocusTrapController, SbbInertController, SbbLanguageController, SbbOpenCloseBaseElement, SbbOverlayCloseEventDetails, SbbScrollHandler } from '../core.ts';
3
- export declare class SbbOverlayCloseEvent<T = any> extends CustomEvent<SbbOverlayCloseEventDetails> {
2
+ import { SbbEscapableOverlayController, SbbFocusTrapController, SbbInertController, SbbLanguageController, SbbOpenCloseBaseElement, SbbScrollHandler } from '../core.ts';
3
+ export declare class SbbOverlayCloseEvent<T = any> extends Event {
4
4
  /**
5
5
  * The result associated with the closed overlay.
6
6
  * This is either the result assigned to the `closeTarget` via
@@ -59,8 +59,8 @@ export declare abstract class SbbOverlayBaseElement extends SbbOverlayBaseElemen
59
59
  protected abstract handleOpening(): void;
60
60
  protected abstract handleClosing(): void;
61
61
  protected abstract isZeroAnimationDuration(): boolean;
62
- protected abstract dispatchBeforeCloseEvent(detail?: SbbOverlayCloseEventDetails): boolean;
63
- protected abstract dispatchCloseEvent(detail?: SbbOverlayCloseEventDetails): boolean;
62
+ protected abstract dispatchBeforeCloseEvent(): boolean;
63
+ protected abstract dispatchCloseEvent(): boolean;
64
64
  /** Opens the component. */
65
65
  open(): void;
66
66
  /** Closes the component. */
@@ -1 +1 @@
1
- {"version":3,"file":"overlay-base-element.d.ts","sourceRoot":"","sources":["../../../../src/elements/overlay/overlay-base-element.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"overlay-base-element.d.ts","sourceRoot":"","sources":["../../../../src/elements/overlay/overlay-base-element.ts"],"names":[],"mappings":"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"}
@@ -4,15 +4,9 @@ import { property } from "lit/decorators.js";
4
4
  import { SbbEscapableOverlayController, SbbFocusTrapController, SbbInertController, SbbLanguageController, SbbNegativeMixin, SbbOpenCloseBaseElement, SbbScrollHandler, forceType, i18nDialog, idReference, removeAriaOverlayTriggerProperties, screenReaderOnlyStyles, setAriaOverlayTriggerProperties } from "../core.js";
5
5
  //#region src/elements/overlay/overlay-base-element.ts
6
6
  var overlayResultMap = /* @__PURE__ */ new WeakMap();
7
- var SbbOverlayCloseEvent = class extends CustomEvent {
7
+ var SbbOverlayCloseEvent = class extends Event {
8
8
  constructor(name, { cancelable, closeAttribute, closeTarget, result }) {
9
- super(name, {
10
- cancelable,
11
- detail: {
12
- returnValue: result,
13
- closeTarget
14
- }
15
- });
9
+ super(name, { cancelable });
16
10
  this.result = result ?? (!closeTarget ? null : overlayResultMap.get(closeTarget) ?? (closeTarget.getAttribute(closeAttribute)?.trim() || null));
17
11
  this.closeTarget = closeTarget ?? null;
18
12
  }
@@ -240,4 +234,4 @@ var SbbOverlayBaseElement = (() => {
240
234
  //#endregion
241
235
  export { SbbOverlayBaseElement, SbbOverlayCloseEvent, assignOverlayResult, overlayRefs };
242
236
 
243
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1iYXNlLWVsZW1lbnQuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL292ZXJsYXkvb3ZlcmxheS1iYXNlLWVsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBDU1NSZXN1bHRHcm91cCwgaXNTZXJ2ZXIsIHR5cGUgUHJvcGVydHlEZWNsYXJhdGlvbiwgdHlwZSBQcm9wZXJ0eVZhbHVlcyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHtcbiAgZm9yY2VUeXBlLFxuICBpMThuRGlhbG9nLFxuICBpZFJlZmVyZW5jZSxcbiAgcmVtb3ZlQXJpYU92ZXJsYXlUcmlnZ2VyUHJvcGVydGllcyxcbiAgU2JiRXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIsXG4gIFNiYkZvY3VzVHJhcENvbnRyb2xsZXIsXG4gIFNiYkluZXJ0Q29udHJvbGxlcixcbiAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLFxuICBTYmJOZWdhdGl2ZU1peGluLFxuICBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCxcbiAgdHlwZSBTYmJPdmVybGF5Q2xvc2VFdmVudERldGFpbHMsXG4gIFNiYlNjcm9sbEhhbmRsZXIsXG4gIHNjcmVlblJlYWRlck9ubHlTdHlsZXMsXG4gIHNldEFyaWFPdmVybGF5VHJpZ2dlclByb3BlcnRpZXMsXG59IGZyb20gJy4uL2NvcmUudHMnO1xuXG5jb25zdCBvdmVybGF5UmVzdWx0TWFwID0gbmV3IFdlYWtNYXA8SFRNTEVsZW1lbnQsIGFueT4oKTtcblxuZXhwb3J0IGNsYXNzIFNiYk92ZXJsYXlDbG9zZUV2ZW50PFQgPSBhbnk+IGV4dGVuZHMgQ3VzdG9tRXZlbnQ8U2JiT3ZlcmxheUNsb3NlRXZlbnREZXRhaWxzPiB7XG4gIC8qKlxuICAgKiBUaGUgcmVzdWx0IGFzc29jaWF0ZWQgd2l0aCB0aGUgY2xvc2VkIG92ZXJsYXkuXG4gICAqIFRoaXMgaXMgZWl0aGVyIHRoZSByZXN1bHQgYXNzaWduZWQgdG8gdGhlIGBjbG9zZVRhcmdldGAgdmlhXG4gICAqIGBhc3NpZ25PdmVybGF5UmVzdWx0YCAvIGBhc3NpZ25EaWFsb2dSZXN1bHRgIG9yIHRoZSB2YWx1ZSBvZiB0aGVcbiAgICogY29ycmVzcG9uZGluZyBjbG9zZSBhdHRyaWJ1dGUgb24gdGhlIGBjbG9zZVRhcmdldGBcbiAgICogKGUuZy4gc2JiLW92ZXJsYXktY2xvc2U9XCJteS1yZXN1bHRcIiBvciBzYmItZGlhbG9nLWNsb3NlPVwibXktcmVzdWx0XCIpLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlc3VsdDogVCB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgd2FzIHVzZWQgdG8gY2xvc2UgdGhlIG92ZXJsYXkvZGlhbG9nLCBpLmUuIHRoZSBlbGVtZW50IHRoYXQgdGhlXG4gICAqIHVzZXIgY2xpY2tlZCBvbiB0aGF0IGhhZCB0aGUgY2xvc2UgYXR0cmlidXRlLlxuICAgKiBFbXB0eSBpZiBjbG9zZWQgcHJvZ3JhbW1hdGljYWxseSBvciB2aWEgRXNjYXBlIHByZXNzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNsb3NlVGFyZ2V0OiBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB7XG4gICAgICBjYW5jZWxhYmxlLFxuICAgICAgY2xvc2VBdHRyaWJ1dGUsXG4gICAgICBjbG9zZVRhcmdldCxcbiAgICAgIHJlc3VsdCxcbiAgICB9OiB7IGNhbmNlbGFibGU/OiBib29sZWFuOyBjbG9zZUF0dHJpYnV0ZTogc3RyaW5nOyBjbG9zZVRhcmdldD86IEhUTUxFbGVtZW50OyByZXN1bHQ/OiBhbnkgfSxcbiAgKSB7XG4gICAgLy8gVE9ETzogUmVtb3ZlIGRldGFpbCBhbmQgY2hhbmdlIGJhc2UgY2xhc3MgdG8gRXZlbnRcbiAgICBzdXBlcihuYW1lLCB7IGNhbmNlbGFibGUsIGRldGFpbDogeyByZXR1cm5WYWx1ZTogcmVzdWx0LCBjbG9zZVRhcmdldCB9IH0pO1xuXG4gICAgdGhpcy5yZXN1bHQgPVxuICAgICAgcmVzdWx0ID8/XG4gICAgICAoIWNsb3NlVGFyZ2V0XG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IChvdmVybGF5UmVzdWx0TWFwLmdldChjbG9zZVRhcmdldCkgPz9cbiAgICAgICAgICAoY2xvc2VUYXJnZXQuZ2V0QXR0cmlidXRlKGNsb3NlQXR0cmlidXRlKT8udHJpbSgpIHx8IG51bGwpKSk7XG4gICAgdGhpcy5jbG9zZVRhcmdldCA9IGNsb3NlVGFyZ2V0ID8/IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbk92ZXJsYXlSZXN1bHQ8VD4oZWxlbWVudDogSFRNTEVsZW1lbnQsIHJlc3VsdDogVCk6IHZvaWQge1xuICBvdmVybGF5UmVzdWx0TWFwLnNldChlbGVtZW50LCByZXN1bHQpO1xufVxuXG4vLyBBIGdsb2JhbCBjb2xsZWN0aW9uIG9mIGV4aXN0aW5nIG92ZXJsYXlzLlxuZXhwb3J0IGNvbnN0IG92ZXJsYXlSZWZzOiBTYmJPdmVybGF5QmFzZUVsZW1lbnRbXSA9IFtdO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2JiT3ZlcmxheUJhc2VFbGVtZW50IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbc2NyZWVuUmVhZGVyT25seVN0eWxlc107XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgd2lsbCB0cmlnZ2VyIHRoZSBtZW51IG92ZXJsYXkuXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIHRyaWdnZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgcmVsZXZhbnQgbmVzdGVkIGVsZW1lbnQgdG8gZGVzY3JpYmUgdGhlIHB1cnBvc2Ugb2YgdGhlIG92ZXJsYXkuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LWxhYmVsJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYWNjZXNzaWJpbGl0eUxhYmVsOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogV2hldGhlciB0byBza2lwIHJlc3RvcmluZyBmb2N1cyB0byB0aGUgcHJldmlvdXNseS1mb2N1c2VkIGVsZW1lbnQgd2hlbiB0aGUgb3ZlcmxheSBpcyBjbG9zZWQuXG4gICAqIE5vdGUgdGhhdCBhdXRvbWF0aWMgZm9jdXMgcmVzdG9yYXRpb24gaXMgYW4gYWNjZXNzaWJpbGl0eSBmZWF0dXJlLCBhbmQgaXQgaXMgcmVjb21tZW5kZWQgdGhhdFxuICAgKiB5b3UgcHJvdmlkZSB5b3VyIG93biBlcXVpdmFsZW50LCBpZiB5b3UgZGVjaWRlIHRvIHR1cm4gaXQgb2ZmLlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHNraXBGb2N1c1Jlc3RvcmF0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gVGhlIGxhc3QgZWxlbWVudCB3aGljaCBoYWQgZm9jdXMgYmVmb3JlIHRoZSBjb21wb25lbnQgd2FzIG9wZW5lZC5cbiAgcHJvdGVjdGVkIGxhc3RGb2N1c2VkRWxlbWVudD86IEhUTUxFbGVtZW50O1xuICAvLyBUT0RPOiByZW5hbWUgdG8gbGFzdENsb3NlZFRhcmdldFxuICBwcm90ZWN0ZWQgb3ZlcmxheUNsb3NlRWxlbWVudD86IEhUTUxFbGVtZW50O1xuICBwcm90ZWN0ZWQgb3Blbk92ZXJsYXlDb250cm9sbGVyPzogQWJvcnRDb250cm9sbGVyO1xuICBwcm90ZWN0ZWQgZm9jdXNUcmFwQ29udHJvbGxlciA9IG5ldyBTYmJGb2N1c1RyYXBDb250cm9sbGVyKHRoaXMpO1xuICBwcm90ZWN0ZWQgc2Nyb2xsSGFuZGxlciA9IG5ldyBTYmJTY3JvbGxIYW5kbGVyKCk7XG4gIC8vIFRPRE86IHJlbmFtZSB0byBsYXN0UmVzdWx0XG4gIHByb3RlY3RlZCByZXR1cm5WYWx1ZTogYW55O1xuICBwcm90ZWN0ZWQgbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpO1xuICBwcm90ZWN0ZWQgaW5lcnRDb250cm9sbGVyID0gbmV3IFNiYkluZXJ0Q29udHJvbGxlcih0aGlzKTtcbiAgcHJvdGVjdGVkIGVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyID0gbmV3IFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyKHRoaXMpO1xuXG4gIHByaXZhdGUgX2FyaWFMaXZlUmVmVG9nZ2xlID0gZmFsc2U7XG4gIHByaXZhdGUgX2FyaWFMaXZlUmVmPzogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX3RyaWdnZXJFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF90cmlnZ2VyQWJvcnRDb250cm9sbGVyPzogQWJvcnRDb250cm9sbGVyO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjbG9zZUF0dHJpYnV0ZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgY2xvc2VUYWc/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBoYW5kbGVPcGVuaW5nKCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBoYW5kbGVDbG9zaW5nKCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpc1plcm9BbmltYXRpb25EdXJhdGlvbigpOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3ZlcnJpZGUgZGlzcGF0Y2hCZWZvcmVDbG9zZUV2ZW50KFxuICAgIGRldGFpbD86IFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscyxcbiAgKTogYm9vbGVhbjtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3ZlcnJpZGUgZGlzcGF0Y2hDbG9zZUV2ZW50KGRldGFpbD86IFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscyk6IGJvb2xlYW47XG5cbiAgLyoqIE9wZW5zIHRoZSBjb21wb25lbnQuICovXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJyB8fFxuICAgICAgdGhpcy5zdGF0ZSA9PT0gJ29wZW5lZCcgfHxcbiAgICAgIHRoaXMuX2hhc0Nsb3NlZFBhcmVudCgpIHx8XG4gICAgICAhdGhpcy5kaXNwYXRjaEJlZm9yZU9wZW5FdmVudCgpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgdGhpcy5zaG93UG9wb3Zlcj8uKCk7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuaW5nJztcblxuICAgIGlmICh0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuYXJpYUV4cGFuZGVkID0gJ3RydWUnO1xuICAgIH1cblxuICAgIC8vIEFkZCB0aGlzIG92ZXJsYXkgdG8gdGhlIGdsb2JhbCBjb2xsZWN0aW9uXG4gICAgb3ZlcmxheVJlZnMucHVzaCh0aGlzKTtcblxuICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5kaXNhYmxlU2Nyb2xsKCk7XG4gICAgdGhpcy5lc2NhcGFibGVPdmVybGF5Q29udHJvbGxlci5jb25uZWN0KCk7XG4gICAgdGhpcy5hdHRhY2hPcGVuT3ZlcmxheUV2ZW50cygpO1xuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYG9wZW5lZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5oYW5kbGVPcGVuaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENsb3NlcyB0aGUgY29tcG9uZW50LiAqL1xuICBwdWJsaWMgY2xvc2UocmVzdWx0PzogYW55KTogdm9pZDtcbiAgLyoqIEBkZXByZWNhdGVkICovXG4gIHB1YmxpYyBjbG9zZShyZXN1bHQ/OiBhbnksIHRhcmdldD86IEhUTUxFbGVtZW50KTogdm9pZDtcbiAgcHVibGljIGNsb3NlKHJlc3VsdD86IGFueSwgdGFyZ2V0PzogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9zZShyZXN1bHQsIHRhcmdldCk7XG4gIH1cblxuICBwcml2YXRlIF9jbG9zZShyZXN1bHQ6IGFueSwgdGFyZ2V0OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlID09PSAnY2xvc2luZycgfHwgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJldHVyblZhbHVlID0gcmVzdWx0ID8/IG51bGw7XG4gICAgdGhpcy5vdmVybGF5Q2xvc2VFbGVtZW50ID0gdGFyZ2V0O1xuICAgIGlmICghdGhpcy5kaXNwYXRjaEJlZm9yZUNsb3NlRXZlbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NpbmcnO1xuXG4gICAgaWYgKHRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudC5hcmlhRXhwYW5kZWQgPSAnZmFsc2UnO1xuICAgIH1cbiAgICB0aGlzLnJlbW92ZUFyaWFMaXZlUmVmQ29udGVudCgpO1xuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYGNsb3NlZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZXJlIGlzIGEgcGFyZW50IGRpYWxvZyBvciBvdmVybGF5IGluIHRoZSBET00gdGhhdCBpcyBjbG9zZWQuXG4gICAqIEluIHRoaXMgY2FzZSwgdGhlIG92ZXJsYXkgc2hvdWxkIG5vdCBiZSBvcGVuZWQgYmVjYXVzZSBpdCB3b3VsZCBicmVhayB0aGUgc3RhdGUuXG4gICAqIE5vdCBuZXN0ZWQgYnV0IHN0YWNrZWQgb3ZlcmxheXMgYXJlIHN1cHBvcnRlZCBzbyB0aGlzIGxvZ2ljIGRvZXMgbm90IGFwcGx5IGluIHRoaXMgY2FzZS5cbiAgICovXG4gIHByaXZhdGUgX2hhc0Nsb3NlZFBhcmVudCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBwYXJlbnREaWFsb2cgPVxuICAgICAgdGhpcy5wYXJlbnRFbGVtZW50Py5jbG9zZXN0PFNiYk92ZXJsYXlCYXNlRWxlbWVudD4oJ3NiYi1kaWFsb2csIHNiYi1vdmVybGF5Jyk7XG5cbiAgICByZXR1cm4gKHBhcmVudERpYWxvZz8uc3RhdGUgPT09ICdjbG9zZWQnIHx8IHBhcmVudERpYWxvZz8uc3RhdGUgPT09ICdjbG9zaW5nJykgPz8gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyID0gJ21hbnVhbCc7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBpZiAodGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICB0aGlzLl9jb25maWd1cmVUcmlnZ2VyKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHRyaWdnZXIgaXMgdmFsaWQgYW5kIGF0dGFjaCBjbGljayBldmVudCBsaXN0ZW5lcnMuXG4gIHByaXZhdGUgX2NvbmZpZ3VyZVRyaWdnZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHJpZ2dlciA9PT0gdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHJlbW92ZUFyaWFPdmVybGF5VHJpZ2dlclByb3BlcnRpZXModGhpcy5fdHJpZ2dlckVsZW1lbnQpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gdGhpcy50cmlnZ2VyO1xuXG4gICAgaWYgKCF0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNldEFyaWFPdmVybGF5VHJpZ2dlclByb3BlcnRpZXModGhpcywgdGhpcy5fdHJpZ2dlckVsZW1lbnQsICdkaWFsb2cnLCB0aGlzLnN0YXRlKTtcbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5vcGVuKCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLl9hcmlhTGl2ZVJlZiA9IHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy5zYmItc2NyZWVuLXJlYWRlci1vbmx5JykhO1xuICAgIHRoaXMuX2NvbmZpZ3VyZVRyaWdnZXIoKTtcblxuICAgIC8vIElmIHRoZSBjb21wb25lbnQgaXMgYWxyZWFkeSBvcGVuIG9uIGZpcnN0VXBkYXRlLCBmaXggdGhlIGZvY3VzXG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAvLyBUT0RPOiBmaW5kIGJldHRlciBzb2x1dGlvblxuICAgICAgLy8gUHJvYmxlbTogY29udGVudCdzIHNoYWRvdyBET00gbm90IHlldCByZWFkeSwgc28gZm9jdXNpbmcgaXMgaW1wb3NzaWJsZS5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmZvY3VzVHJhcENvbnRyb2xsZXIuZm9jdXNJbml0aWFsRWxlbWVudCgpO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5vcGVuT3ZlcmxheUNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5yZW1vdmVJbnN0YW5jZUZyb21HbG9iYWxDb2xsZWN0aW9uKCk7XG4gICAgdGhpcy5zY3JvbGxIYW5kbGVyLmVuYWJsZVNjcm9sbCgpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlcXVlc3RVcGRhdGUoXG4gICAgbmFtZT86IFByb3BlcnR5S2V5LFxuICAgIG9sZFZhbHVlPzogdW5rbm93bixcbiAgICBvcHRpb25zPzogUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgKTogdm9pZCB7XG4gICAgc3VwZXIucmVxdWVzdFVwZGF0ZShuYW1lLCBvbGRWYWx1ZSwgb3B0aW9ucyk7XG5cbiAgICBpZiAoIWlzU2VydmVyICYmICghbmFtZSB8fCBuYW1lID09PSAndHJpZ2dlcicpICYmIHRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgdGhpcy5fY29uZmlndXJlVHJpZ2dlcigpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhdHRhY2hPcGVuT3ZlcmxheUV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAvLyBSZW1vdmUgb3ZlcmxheSBsYWJlbCBhcyBzb29uIGFzIGl0IGlzIG5vdCBuZWVkZWQgYW55IG1vcmUgdG8gcHJldmVudCBhY2Nlc3NpbmcgaXQgd2l0aCBicm93c2UgbW9kZS5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdrZXlkb3duJyxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5yZW1vdmVBcmlhTGl2ZVJlZkNvbnRlbnQoKTtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5vcGVuT3ZlcmxheUNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSxcbiAgICApO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHRoaXMucmVtb3ZlQXJpYUxpdmVSZWZDb250ZW50KCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5vcGVuT3ZlcmxheUNvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlbW92ZUluc3RhbmNlRnJvbUdsb2JhbENvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXhJbk92ZXJsYXlSZWZzID0gb3ZlcmxheVJlZnMuaW5kZXhPZih0aGlzIGFzIFNiYk92ZXJsYXlCYXNlRWxlbWVudCk7XG4gICAgaWYgKGluZGV4SW5PdmVybGF5UmVmcyA+IC0xKSB7XG4gICAgICBvdmVybGF5UmVmcy5zcGxpY2UoaW5kZXhJbk92ZXJsYXlSZWZzLCAxKTtcbiAgICB9XG4gIH1cblxuICAvLyBDbG9zZSB0aGUgY29tcG9uZW50IG9uIGNsaWNrIG9mIGFueSBlbGVtZW50IHRoYXQgaGFzIHRoZSBgY2xvc2VBdHRyaWJ1dGVgIGF0dHJpYnV0ZS5cbiAgcHJvdGVjdGVkIGNsb3NlT25TYmJPdmVybGF5Q2xvc2VDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBvdmVybGF5Q2xvc2VFbGVtZW50ID0gZXZlbnRcbiAgICAgIC5jb21wb3NlZFBhdGgoKVxuICAgICAgLmZpbHRlcigoZSk6IGUgaXMgSFRNTEVsZW1lbnQgPT4gZSBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MRWxlbWVudClcbiAgICAgIC5maW5kKFxuICAgICAgICAodGFyZ2V0KSA9PlxuICAgICAgICAgICh0YXJnZXQuaGFzQXR0cmlidXRlKHRoaXMuY2xvc2VBdHRyaWJ1dGUpIHx8IHRhcmdldC5sb2NhbE5hbWUgPT09IHRoaXMuY2xvc2VUYWcpICYmXG4gICAgICAgICAgIXRhcmdldC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJyksXG4gICAgICApO1xuXG4gICAgaWYgKFxuICAgICAgIW92ZXJsYXlDbG9zZUVsZW1lbnQgfHxcbiAgICAgIChvdmVybGF5Q2xvc2VFbGVtZW50LmNsb3Nlc3QodGhpcy5sb2NhbE5hbWUpICE9PSB0aGlzICYmXG4gICAgICAgICF0aGlzLnNoYWRvd1Jvb3Q/LmNvbnRhaW5zKG92ZXJsYXlDbG9zZUVsZW1lbnQpKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChvdmVybGF5UmVmcy5sZW5ndGgpIHtcbiAgICAgIG92ZXJsYXlSZWZzW292ZXJsYXlSZWZzLmxlbmd0aCAtIDFdLl9jbG9zZShudWxsLCBvdmVybGF5Q2xvc2VFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVtb3ZlQXJpYUxpdmVSZWZDb250ZW50KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYXJpYUxpdmVSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fYXJpYUxpdmVSZWYudGV4dENvbnRlbnQgPSAnJztcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRBcmlhTGl2ZVJlZkNvbnRlbnQobGFiZWw/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2FyaWFMaXZlUmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fYXJpYUxpdmVSZWZUb2dnbGUgPSAhdGhpcy5fYXJpYUxpdmVSZWZUb2dnbGU7XG5cbiAgICAvLyBJZiB0aGUgdGV4dCBjb250ZW50IHJlbWFpbnMgdGhlIHNhbWUsIG9uIFZvaWNlT3ZlciB0aGUgYXJpYS1saXZlIHJlZ2lvbiBpcyBub3QgYW5ub3VuY2VkIGEgc2Vjb25kIHRpbWUuXG4gICAgLy8gSW4gb3JkZXIgdG8gc3VwcG9ydCByZWFkaW5nIG9uIGV2ZXJ5IG9wZW5pbmcsIHdlIHRvZ2dsZSBhbiBpbnZpc2libGUgc3BhY2UuXG4gICAgdGhpcy5fYXJpYUxpdmVSZWYudGV4dENvbnRlbnQgPSBgJHtpMThuRGlhbG9nW3RoaXMubGFuZ3VhZ2UuY3VycmVudF19JHtcbiAgICAgIGxhYmVsID8gYCwgJHtsYWJlbH1gIDogJydcbiAgICB9JHt0aGlzLl9hcmlhTGl2ZVJlZlRvZ2dsZSA/ICfCoCcgOiAnJ31gO1xuICB9XG5cbiAgLy8gV2FpdCBmb3IgZGlhbG9nIHRyYW5zaXRpb24gdG8gY29tcGxldGUuXG4gIC8vIEluIHJhcmUgY2FzZXMsIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAvLyBUbyBhdm9pZCBlbnRlcmluZyBhIGNvcnJ1cHQgc3RhdGUsIGV4aXQgd2hlbiBzdGF0ZSBpcyBub3QgZXhwZWN0ZWQuXG4gIHByb3RlY3RlZCBvbk92ZXJsYXlBbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdvcGVuJyAmJiB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpIHtcbiAgICAgIHRoaXMuaGFuZGxlT3BlbmluZygpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuaGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQW9CQSxJQUFNLG1DQUFtQixJQUFJLFFBQU87QUFFcEMsSUFBYSx1QkFBYixjQUFtRCxZQUF3QztDQWlCekYsWUFDRSxNQUNBLEVBQ0UsWUFDQSxnQkFDQSxhQUNBLFVBQzBGO0VBRzVGLE1BQU0sTUFBTTtHQUFFO0dBQVksUUFBUTtJQUFFLGFBQWE7SUFBUTtHQUFXO0VBQUUsQ0FBRTtFQUV4RSxLQUFLLFNBQ0gsV0FDQyxDQUFDLGNBQ0UsT0FDQyxpQkFBaUIsSUFBSSxXQUFXLE1BQ2hDLFlBQVksYUFBYSxjQUFjLEdBQUcsS0FBSSxLQUFNO0VBQzNELEtBQUssY0FBYyxlQUFlO0NBQ3BDOztBQUdGLFNBQWdCLG9CQUF1QixTQUFzQixRQUFTO0NBQ3BFLGlCQUFpQixJQUFJLFNBQVMsTUFBTTtBQUN0QztBQUdBLElBQWEsY0FBdUMsQ0FBQTtJQUU5QiwrQkFBcUI7bUJBQVMsaUJBQWlCLHVCQUF1Qjs7Ozs7Ozs7OztjQUF0RSw4QkFBOEIsWUFBeUM7OztHQVUzRSxLQUFBLDRCQUFBLGtCQUFBLE1BQUEsdUJBQThCLElBQUk7R0FLbEMsS0FBQSx3Q0FBQSxrQkFBQSxNQUFBLDBCQUFBLEdBQUEsa0JBQUEsTUFBQSxrQ0FBNkIsRUFBRTtHQVMvQixLQUFBLDBDQUFBLGtCQUFBLE1BQUEscUNBQUEsR0FBQSxrQkFBQSxNQUFBLG9DQUFnQyxLQUFLO0dBRzNDLEtBQUEscUJBQWtCLGtCQUFBLE1BQUEsdUNBQUE7R0FJbEIsS0FBQSxzQkFBc0IsSUFBSSx1QkFBdUIsSUFBSTtHQUNyRCxLQUFBLGdCQUFnQixJQUFJLGlCQUFnQjtHQUdwQyxLQUFBLFdBQVcs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
237
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1iYXNlLWVsZW1lbnQuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL292ZXJsYXkvb3ZlcmxheS1iYXNlLWVsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBDU1NSZXN1bHRHcm91cCwgaXNTZXJ2ZXIsIHR5cGUgUHJvcGVydHlEZWNsYXJhdGlvbiwgdHlwZSBQcm9wZXJ0eVZhbHVlcyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHtcbiAgZm9yY2VUeXBlLFxuICBpMThuRGlhbG9nLFxuICBpZFJlZmVyZW5jZSxcbiAgcmVtb3ZlQXJpYU92ZXJsYXlUcmlnZ2VyUHJvcGVydGllcyxcbiAgU2JiRXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIsXG4gIFNiYkZvY3VzVHJhcENvbnRyb2xsZXIsXG4gIFNiYkluZXJ0Q29udHJvbGxlcixcbiAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLFxuICBTYmJOZWdhdGl2ZU1peGluLFxuICBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCxcbiAgU2JiU2Nyb2xsSGFuZGxlcixcbiAgc2NyZWVuUmVhZGVyT25seVN0eWxlcyxcbiAgc2V0QXJpYU92ZXJsYXlUcmlnZ2VyUHJvcGVydGllcyxcbn0gZnJvbSAnLi4vY29yZS50cyc7XG5cbmNvbnN0IG92ZXJsYXlSZXN1bHRNYXAgPSBuZXcgV2Vha01hcDxIVE1MRWxlbWVudCwgYW55PigpO1xuXG5leHBvcnQgY2xhc3MgU2JiT3ZlcmxheUNsb3NlRXZlbnQ8VCA9IGFueT4gZXh0ZW5kcyBFdmVudCB7XG4gIC8qKlxuICAgKiBUaGUgcmVzdWx0IGFzc29jaWF0ZWQgd2l0aCB0aGUgY2xvc2VkIG92ZXJsYXkuXG4gICAqIFRoaXMgaXMgZWl0aGVyIHRoZSByZXN1bHQgYXNzaWduZWQgdG8gdGhlIGBjbG9zZVRhcmdldGAgdmlhXG4gICAqIGBhc3NpZ25PdmVybGF5UmVzdWx0YCAvIGBhc3NpZ25EaWFsb2dSZXN1bHRgIG9yIHRoZSB2YWx1ZSBvZiB0aGVcbiAgICogY29ycmVzcG9uZGluZyBjbG9zZSBhdHRyaWJ1dGUgb24gdGhlIGBjbG9zZVRhcmdldGBcbiAgICogKGUuZy4gc2JiLW92ZXJsYXktY2xvc2U9XCJteS1yZXN1bHRcIiBvciBzYmItZGlhbG9nLWNsb3NlPVwibXktcmVzdWx0XCIpLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlc3VsdDogVCB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgd2FzIHVzZWQgdG8gY2xvc2UgdGhlIG92ZXJsYXkvZGlhbG9nLCBpLmUuIHRoZSBlbGVtZW50IHRoYXQgdGhlXG4gICAqIHVzZXIgY2xpY2tlZCBvbiB0aGF0IGhhZCB0aGUgY2xvc2UgYXR0cmlidXRlLlxuICAgKiBFbXB0eSBpZiBjbG9zZWQgcHJvZ3JhbW1hdGljYWxseSBvciB2aWEgRXNjYXBlIHByZXNzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNsb3NlVGFyZ2V0OiBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB7XG4gICAgICBjYW5jZWxhYmxlLFxuICAgICAgY2xvc2VBdHRyaWJ1dGUsXG4gICAgICBjbG9zZVRhcmdldCxcbiAgICAgIHJlc3VsdCxcbiAgICB9OiB7IGNhbmNlbGFibGU/OiBib29sZWFuOyBjbG9zZUF0dHJpYnV0ZTogc3RyaW5nOyBjbG9zZVRhcmdldD86IEhUTUxFbGVtZW50OyByZXN1bHQ/OiBhbnkgfSxcbiAgKSB7XG4gICAgc3VwZXIobmFtZSwgeyBjYW5jZWxhYmxlIH0pO1xuICAgIHRoaXMucmVzdWx0ID1cbiAgICAgIHJlc3VsdCA/P1xuICAgICAgKCFjbG9zZVRhcmdldFxuICAgICAgICA/IG51bGxcbiAgICAgICAgOiAob3ZlcmxheVJlc3VsdE1hcC5nZXQoY2xvc2VUYXJnZXQpID8/XG4gICAgICAgICAgKGNsb3NlVGFyZ2V0LmdldEF0dHJpYnV0ZShjbG9zZUF0dHJpYnV0ZSk/LnRyaW0oKSB8fCBudWxsKSkpO1xuICAgIHRoaXMuY2xvc2VUYXJnZXQgPSBjbG9zZVRhcmdldCA/PyBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25PdmVybGF5UmVzdWx0PFQ+KGVsZW1lbnQ6IEhUTUxFbGVtZW50LCByZXN1bHQ6IFQpOiB2b2lkIHtcbiAgb3ZlcmxheVJlc3VsdE1hcC5zZXQoZWxlbWVudCwgcmVzdWx0KTtcbn1cblxuLy8gQSBnbG9iYWwgY29sbGVjdGlvbiBvZiBleGlzdGluZyBvdmVybGF5cy5cbmV4cG9ydCBjb25zdCBvdmVybGF5UmVmczogU2JiT3ZlcmxheUJhc2VFbGVtZW50W10gPSBbXTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNiYk92ZXJsYXlCYXNlRWxlbWVudCBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW3NjcmVlblJlYWRlck9ubHlTdHlsZXNdO1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgbWVudSBvdmVybGF5LlxuICAgKlxuICAgKiBGb3IgYXR0cmlidXRlIHVzYWdlLCBwcm92aWRlIGFuIGlkIHJlZmVyZW5jZS5cbiAgICovXG4gIEBpZFJlZmVyZW5jZSgpXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBhY2Nlc3NvciB0cmlnZ2VyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBUaGlzIHdpbGwgYmUgZm9yd2FyZGVkIGFzIGFyaWEtbGFiZWwgdG8gdGhlIHJlbGV2YW50IG5lc3RlZCBlbGVtZW50IHRvIGRlc2NyaWJlIHRoZSBwdXJwb3NlIG9mIHRoZSBvdmVybGF5LiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1sYWJlbCcgfSlcbiAgcHVibGljIGFjY2Vzc29yIGFjY2Vzc2liaWxpdHlMYWJlbDogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2tpcCByZXN0b3JpbmcgZm9jdXMgdG8gdGhlIHByZXZpb3VzbHktZm9jdXNlZCBlbGVtZW50IHdoZW4gdGhlIG92ZXJsYXkgaXMgY2xvc2VkLlxuICAgKiBOb3RlIHRoYXQgYXV0b21hdGljIGZvY3VzIHJlc3RvcmF0aW9uIGlzIGFuIGFjY2Vzc2liaWxpdHkgZmVhdHVyZSwgYW5kIGl0IGlzIHJlY29tbWVuZGVkIHRoYXRcbiAgICogeW91IHByb3ZpZGUgeW91ciBvd24gZXF1aXZhbGVudCwgaWYgeW91IGRlY2lkZSB0byB0dXJuIGl0IG9mZi5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBza2lwRm9jdXNSZXN0b3JhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIFRoZSBsYXN0IGVsZW1lbnQgd2hpY2ggaGFkIGZvY3VzIGJlZm9yZSB0aGUgY29tcG9uZW50IHdhcyBvcGVuZWQuXG4gIHByb3RlY3RlZCBsYXN0Rm9jdXNlZEVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcbiAgLy8gVE9ETzogcmVuYW1lIHRvIGxhc3RDbG9zZWRUYXJnZXRcbiAgcHJvdGVjdGVkIG92ZXJsYXlDbG9zZUVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcbiAgcHJvdGVjdGVkIG9wZW5PdmVybGF5Q29udHJvbGxlcj86IEFib3J0Q29udHJvbGxlcjtcbiAgcHJvdGVjdGVkIGZvY3VzVHJhcENvbnRyb2xsZXIgPSBuZXcgU2JiRm9jdXNUcmFwQ29udHJvbGxlcih0aGlzKTtcbiAgcHJvdGVjdGVkIHNjcm9sbEhhbmRsZXIgPSBuZXcgU2JiU2Nyb2xsSGFuZGxlcigpO1xuICAvLyBUT0RPOiByZW5hbWUgdG8gbGFzdFJlc3VsdFxuICBwcm90ZWN0ZWQgcmV0dXJuVmFsdWU6IGFueTtcbiAgcHJvdGVjdGVkIGxhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgcHJvdGVjdGVkIGluZXJ0Q29udHJvbGxlciA9IG5ldyBTYmJJbmVydENvbnRyb2xsZXIodGhpcyk7XG4gIHByb3RlY3RlZCBlc2NhcGFibGVPdmVybGF5Q29udHJvbGxlciA9IG5ldyBTYmJFc2NhcGFibGVPdmVybGF5Q29udHJvbGxlcih0aGlzKTtcblxuICBwcml2YXRlIF9hcmlhTGl2ZVJlZlRvZ2dsZSA9IGZhbHNlO1xuICBwcml2YXRlIF9hcmlhTGl2ZVJlZj86IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF90cmlnZ2VyRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckFib3J0Q29udHJvbGxlcj86IEFib3J0Q29udHJvbGxlcjtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2xvc2VBdHRyaWJ1dGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIGNsb3NlVGFnPzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaGFuZGxlT3BlbmluZygpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaGFuZGxlQ2xvc2luZygpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKTogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IG92ZXJyaWRlIGRpc3BhdGNoQmVmb3JlQ2xvc2VFdmVudCgpOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3ZlcnJpZGUgZGlzcGF0Y2hDbG9zZUV2ZW50KCk6IGJvb2xlYW47XG5cbiAgLyoqIE9wZW5zIHRoZSBjb21wb25lbnQuICovXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJyB8fFxuICAgICAgdGhpcy5zdGF0ZSA9PT0gJ29wZW5lZCcgfHxcbiAgICAgIHRoaXMuX2hhc0Nsb3NlZFBhcmVudCgpIHx8XG4gICAgICAhdGhpcy5kaXNwYXRjaEJlZm9yZU9wZW5FdmVudCgpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgdGhpcy5zaG93UG9wb3Zlcj8uKCk7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuaW5nJztcblxuICAgIGlmICh0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuYXJpYUV4cGFuZGVkID0gJ3RydWUnO1xuICAgIH1cblxuICAgIC8vIEFkZCB0aGlzIG92ZXJsYXkgdG8gdGhlIGdsb2JhbCBjb2xsZWN0aW9uXG4gICAgb3ZlcmxheVJlZnMucHVzaCh0aGlzKTtcblxuICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5kaXNhYmxlU2Nyb2xsKCk7XG4gICAgdGhpcy5lc2NhcGFibGVPdmVybGF5Q29udHJvbGxlci5jb25uZWN0KCk7XG4gICAgdGhpcy5hdHRhY2hPcGVuT3ZlcmxheUV2ZW50cygpO1xuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYG9wZW5lZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5oYW5kbGVPcGVuaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENsb3NlcyB0aGUgY29tcG9uZW50LiAqL1xuICBwdWJsaWMgY2xvc2UocmVzdWx0PzogYW55KTogdm9pZDtcbiAgLyoqIEBkZXByZWNhdGVkICovXG4gIHB1YmxpYyBjbG9zZShyZXN1bHQ/OiBhbnksIHRhcmdldD86IEhUTUxFbGVtZW50KTogdm9pZDtcbiAgcHVibGljIGNsb3NlKHJlc3VsdD86IGFueSwgdGFyZ2V0PzogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9zZShyZXN1bHQsIHRhcmdldCk7XG4gIH1cblxuICBwcml2YXRlIF9jbG9zZShyZXN1bHQ6IGFueSwgdGFyZ2V0OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlID09PSAnY2xvc2luZycgfHwgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJldHVyblZhbHVlID0gcmVzdWx0ID8/IG51bGw7XG4gICAgdGhpcy5vdmVybGF5Q2xvc2VFbGVtZW50ID0gdGFyZ2V0O1xuICAgIGlmICghdGhpcy5kaXNwYXRjaEJlZm9yZUNsb3NlRXZlbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NpbmcnO1xuXG4gICAgaWYgKHRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudC5hcmlhRXhwYW5kZWQgPSAnZmFsc2UnO1xuICAgIH1cbiAgICB0aGlzLnJlbW92ZUFyaWFMaXZlUmVmQ29udGVudCgpO1xuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYGNsb3NlZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZXJlIGlzIGEgcGFyZW50IGRpYWxvZyBvciBvdmVybGF5IGluIHRoZSBET00gdGhhdCBpcyBjbG9zZWQuXG4gICAqIEluIHRoaXMgY2FzZSwgdGhlIG92ZXJsYXkgc2hvdWxkIG5vdCBiZSBvcGVuZWQgYmVjYXVzZSBpdCB3b3VsZCBicmVhayB0aGUgc3RhdGUuXG4gICAqIE5vdCBuZXN0ZWQgYnV0IHN0YWNrZWQgb3ZlcmxheXMgYXJlIHN1cHBvcnRlZCBzbyB0aGlzIGxvZ2ljIGRvZXMgbm90IGFwcGx5IGluIHRoaXMgY2FzZS5cbiAgICovXG4gIHByaXZhdGUgX2hhc0Nsb3NlZFBhcmVudCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBwYXJlbnREaWFsb2cgPVxuICAgICAgdGhpcy5wYXJlbnRFbGVtZW50Py5jbG9zZXN0PFNiYk92ZXJsYXlCYXNlRWxlbWVudD4oJ3NiYi1kaWFsb2csIHNiYi1vdmVybGF5Jyk7XG5cbiAgICByZXR1cm4gKHBhcmVudERpYWxvZz8uc3RhdGUgPT09ICdjbG9zZWQnIHx8IHBhcmVudERpYWxvZz8uc3RhdGUgPT09ICdjbG9zaW5nJykgPz8gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyID0gJ21hbnVhbCc7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBpZiAodGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICB0aGlzLl9jb25maWd1cmVUcmlnZ2VyKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHRyaWdnZXIgaXMgdmFsaWQgYW5kIGF0dGFjaCBjbGljayBldmVudCBsaXN0ZW5lcnMuXG4gIHByaXZhdGUgX2NvbmZpZ3VyZVRyaWdnZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHJpZ2dlciA9PT0gdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHJlbW92ZUFyaWFPdmVybGF5VHJpZ2dlclByb3BlcnRpZXModGhpcy5fdHJpZ2dlckVsZW1lbnQpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gdGhpcy50cmlnZ2VyO1xuXG4gICAgaWYgKCF0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNldEFyaWFPdmVybGF5VHJpZ2dlclByb3BlcnRpZXModGhpcywgdGhpcy5fdHJpZ2dlckVsZW1lbnQsICdkaWFsb2cnLCB0aGlzLnN0YXRlKTtcbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5vcGVuKCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLl9hcmlhTGl2ZVJlZiA9IHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy5zYmItc2NyZWVuLXJlYWRlci1vbmx5JykhO1xuICAgIHRoaXMuX2NvbmZpZ3VyZVRyaWdnZXIoKTtcblxuICAgIC8vIElmIHRoZSBjb21wb25lbnQgaXMgYWxyZWFkeSBvcGVuIG9uIGZpcnN0VXBkYXRlLCBmaXggdGhlIGZvY3VzXG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAvLyBUT0RPOiBmaW5kIGJldHRlciBzb2x1dGlvblxuICAgICAgLy8gUHJvYmxlbTogY29udGVudCdzIHNoYWRvdyBET00gbm90IHlldCByZWFkeSwgc28gZm9jdXNpbmcgaXMgaW1wb3NzaWJsZS5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmZvY3VzVHJhcENvbnRyb2xsZXIuZm9jdXNJbml0aWFsRWxlbWVudCgpO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5vcGVuT3ZlcmxheUNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5yZW1vdmVJbnN0YW5jZUZyb21HbG9iYWxDb2xsZWN0aW9uKCk7XG4gICAgdGhpcy5zY3JvbGxIYW5kbGVyLmVuYWJsZVNjcm9sbCgpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlcXVlc3RVcGRhdGUoXG4gICAgbmFtZT86IFByb3BlcnR5S2V5LFxuICAgIG9sZFZhbHVlPzogdW5rbm93bixcbiAgICBvcHRpb25zPzogUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgKTogdm9pZCB7XG4gICAgc3VwZXIucmVxdWVzdFVwZGF0ZShuYW1lLCBvbGRWYWx1ZSwgb3B0aW9ucyk7XG5cbiAgICBpZiAoIWlzU2VydmVyICYmICghbmFtZSB8fCBuYW1lID09PSAndHJpZ2dlcicpICYmIHRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgdGhpcy5fY29uZmlndXJlVHJpZ2dlcigpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhdHRhY2hPcGVuT3ZlcmxheUV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAvLyBSZW1vdmUgb3ZlcmxheSBsYWJlbCBhcyBzb29uIGFzIGl0IGlzIG5vdCBuZWVkZWQgYW55IG1vcmUgdG8gcHJldmVudCBhY2Nlc3NpbmcgaXQgd2l0aCBicm93c2UgbW9kZS5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdrZXlkb3duJyxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5yZW1vdmVBcmlhTGl2ZVJlZkNvbnRlbnQoKTtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5vcGVuT3ZlcmxheUNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSxcbiAgICApO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHRoaXMucmVtb3ZlQXJpYUxpdmVSZWZDb250ZW50KCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5vcGVuT3ZlcmxheUNvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlbW92ZUluc3RhbmNlRnJvbUdsb2JhbENvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXhJbk92ZXJsYXlSZWZzID0gb3ZlcmxheVJlZnMuaW5kZXhPZih0aGlzIGFzIFNiYk92ZXJsYXlCYXNlRWxlbWVudCk7XG4gICAgaWYgKGluZGV4SW5PdmVybGF5UmVmcyA+IC0xKSB7XG4gICAgICBvdmVybGF5UmVmcy5zcGxpY2UoaW5kZXhJbk92ZXJsYXlSZWZzLCAxKTtcbiAgICB9XG4gIH1cblxuICAvLyBDbG9zZSB0aGUgY29tcG9uZW50IG9uIGNsaWNrIG9mIGFueSBlbGVtZW50IHRoYXQgaGFzIHRoZSBgY2xvc2VBdHRyaWJ1dGVgIGF0dHJpYnV0ZS5cbiAgcHJvdGVjdGVkIGNsb3NlT25TYmJPdmVybGF5Q2xvc2VDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBvdmVybGF5Q2xvc2VFbGVtZW50ID0gZXZlbnRcbiAgICAgIC5jb21wb3NlZFBhdGgoKVxuICAgICAgLmZpbHRlcigoZSk6IGUgaXMgSFRNTEVsZW1lbnQgPT4gZSBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MRWxlbWVudClcbiAgICAgIC5maW5kKFxuICAgICAgICAodGFyZ2V0KSA9PlxuICAgICAgICAgICh0YXJnZXQuaGFzQXR0cmlidXRlKHRoaXMuY2xvc2VBdHRyaWJ1dGUpIHx8IHRhcmdldC5sb2NhbE5hbWUgPT09IHRoaXMuY2xvc2VUYWcpICYmXG4gICAgICAgICAgIXRhcmdldC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJyksXG4gICAgICApO1xuXG4gICAgaWYgKFxuICAgICAgIW92ZXJsYXlDbG9zZUVsZW1lbnQgfHxcbiAgICAgIChvdmVybGF5Q2xvc2VFbGVtZW50LmNsb3Nlc3QodGhpcy5sb2NhbE5hbWUpICE9PSB0aGlzICYmXG4gICAgICAgICF0aGlzLnNoYWRvd1Jvb3Q/LmNvbnRhaW5zKG92ZXJsYXlDbG9zZUVsZW1lbnQpKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChvdmVybGF5UmVmcy5sZW5ndGgpIHtcbiAgICAgIG92ZXJsYXlSZWZzW292ZXJsYXlSZWZzLmxlbmd0aCAtIDFdLl9jbG9zZShudWxsLCBvdmVybGF5Q2xvc2VFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVtb3ZlQXJpYUxpdmVSZWZDb250ZW50KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYXJpYUxpdmVSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fYXJpYUxpdmVSZWYudGV4dENvbnRlbnQgPSAnJztcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRBcmlhTGl2ZVJlZkNvbnRlbnQobGFiZWw/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2FyaWFMaXZlUmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fYXJpYUxpdmVSZWZUb2dnbGUgPSAhdGhpcy5fYXJpYUxpdmVSZWZUb2dnbGU7XG5cbiAgICAvLyBJZiB0aGUgdGV4dCBjb250ZW50IHJlbWFpbnMgdGhlIHNhbWUsIG9uIFZvaWNlT3ZlciB0aGUgYXJpYS1saXZlIHJlZ2lvbiBpcyBub3QgYW5ub3VuY2VkIGEgc2Vjb25kIHRpbWUuXG4gICAgLy8gSW4gb3JkZXIgdG8gc3VwcG9ydCByZWFkaW5nIG9uIGV2ZXJ5IG9wZW5pbmcsIHdlIHRvZ2dsZSBhbiBpbnZpc2libGUgc3BhY2UuXG4gICAgdGhpcy5fYXJpYUxpdmVSZWYudGV4dENvbnRlbnQgPSBgJHtpMThuRGlhbG9nW3RoaXMubGFuZ3VhZ2UuY3VycmVudF19JHtcbiAgICAgIGxhYmVsID8gYCwgJHtsYWJlbH1gIDogJydcbiAgICB9JHt0aGlzLl9hcmlhTGl2ZVJlZlRvZ2dsZSA/ICfCoCcgOiAnJ31gO1xuICB9XG5cbiAgLy8gV2FpdCBmb3IgZGlhbG9nIHRyYW5zaXRpb24gdG8gY29tcGxldGUuXG4gIC8vIEluIHJhcmUgY2FzZXMsIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAvLyBUbyBhdm9pZCBlbnRlcmluZyBhIGNvcnJ1cHQgc3RhdGUsIGV4aXQgd2hlbiBzdGF0ZSBpcyBub3QgZXhwZWN0ZWQuXG4gIHByb3RlY3RlZCBvbk92ZXJsYXlBbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdvcGVuJyAmJiB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpIHtcbiAgICAgIHRoaXMuaGFuZGxlT3BlbmluZygpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuaGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQW1CQSxJQUFNLG1DQUFtQixJQUFJLFFBQU87QUFFcEMsSUFBYSx1QkFBYixjQUFtRCxNQUFLO0NBaUJ0RCxZQUNFLE1B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
@@ -1,5 +1,5 @@
1
1
  import { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
2
- import { SbbElementType, SbbOverlayCloseEventDetails } from '../core.ts';
2
+ import { SbbElementType } from '../core.ts';
3
3
  import { SbbOverlayBaseElement } from './overlay-base-element.ts';
4
4
  /**
5
5
  * It displays an interactive overlay element.
@@ -32,8 +32,8 @@ export declare class SbbOverlayElement extends SbbOverlayBaseElement {
32
32
  protected isZeroAnimationDuration(): boolean;
33
33
  protected handleOpening(): void;
34
34
  protected handleClosing(): void;
35
- protected dispatchBeforeCloseEvent(_detail?: SbbOverlayCloseEventDetails): boolean;
36
- protected dispatchCloseEvent(_detail?: SbbOverlayCloseEventDetails): boolean;
35
+ protected dispatchBeforeCloseEvent(): boolean;
36
+ protected dispatchCloseEvent(): boolean;
37
37
  protected render(): TemplateResult;
38
38
  }
39
39
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/overlay/overlay.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAa,MAAM,KAAK,CAAC;AAO/F,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,2BAA2B,EAEjC,MAAM,YAAY,CAAC;AAEpB,OAAO,EAEL,qBAAqB,EAEtB,MAAM,2BAA2B,CAAC;AAGnC;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,qBAAqB;IAC1D,gBAAgC,WAAW,EAAE,MAAM,CAAiB;IACpE,OAAuB,mBAAmB,EAAE,cAAc,EAAE,CAG1D;IACF,OAAuB,MAAM,EAAE,cAAc,CAAuC;IAGpF,gBAAgC,MAAM;;;;;MAK3B;IAEX;;;OAGG;IACH,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C,wEAAwE;IACxE,SAEgB,uBAAuB,EAAE,MAAM,CAAM;IAErD,SAAS,CAAC,cAAc,EAAE,MAAM,CAAuB;IACvD,OAAO,CAAC,sBAAsB,CAA4B;cAEvC,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAS9E,SAAS,CAAC,uBAAuB,IAAI,OAAO;IAI5C,SAAS,CAAC,aAAa,IAAI,IAAI;cAUZ,aAAa,IAAI,IAAI;cAwBrB,wBAAwB,CAAC,OAAO,CAAC,EAAE,2BAA2B,GAAG,OAAO;cAaxE,kBAAkB,CAAC,OAAO,CAAC,EAAE,2BAA2B,GAAG,OAAO;cAWlE,MAAM,IAAI,cAAc;CAwC5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,aAAa,EAAE,iBAAiB,CAAC;KAClC;CACF"}
1
+ {"version":3,"file":"overlay.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/overlay/overlay.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAa,MAAM,KAAK,CAAC;AAO/F,OAAO,EAKL,KAAK,cAAc,EAEpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAEL,qBAAqB,EAEtB,MAAM,2BAA2B,CAAC;AAGnC;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,qBAAqB;IAC1D,gBAAgC,WAAW,EAAE,MAAM,CAAiB;IACpE,OAAuB,mBAAmB,EAAE,cAAc,EAAE,CAG1D;IACF,OAAuB,MAAM,EAAE,cAAc,CAAuC;IAGpF,gBAAgC,MAAM;;;;;MAK3B;IAEX;;;OAGG;IACH,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C,wEAAwE;IACxE,SAEgB,uBAAuB,EAAE,MAAM,CAAM;IAErD,SAAS,CAAC,cAAc,EAAE,MAAM,CAAuB;IACvD,OAAO,CAAC,sBAAsB,CAA4B;cAEvC,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAS9E,SAAS,CAAC,uBAAuB,IAAI,OAAO;IAI5C,SAAS,CAAC,aAAa,IAAI,IAAI;cAUZ,aAAa,IAAI,IAAI;cAoBrB,wBAAwB,IAAI,OAAO;cAYnC,kBAAkB,IAAI,OAAO;cAW7B,MAAM,IAAI,cAAc;CAwC5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,aAAa,EAAE,iBAAiB,CAAC;KAClC;CACF"}
@@ -1,2 +1,2 @@
1
- import { t as SbbOverlayElement } from "../overlay.component-rFmitc_r.js";
1
+ import { t as SbbOverlayElement } from "../overlay.component-YSCuGeme.js";
2
2
  export { SbbOverlayElement };