@sbb-esta/lyne-elements 3.0.0 → 3.0.1

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 (238) hide show
  1. package/autocomplete/autocomplete-base-element.d.ts +1 -1
  2. package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  3. package/autocomplete/autocomplete-base-element.js +3 -1
  4. package/checkbox/checkbox-panel/checkbox-panel.component.d.ts.map +1 -1
  5. package/core/base-elements/open-close-base-element.d.ts +3 -3
  6. package/core/base-elements/open-close-base-element.d.ts.map +1 -1
  7. package/custom-elements.json +15159 -15049
  8. package/datepicker/datepicker/datepicker.component.d.ts +7 -3
  9. package/datepicker/datepicker/datepicker.component.d.ts.map +1 -1
  10. package/datepicker/datepicker/datepicker.component.js +31 -25
  11. package/development/accordion/accordion.component.js +1 -1
  12. package/development/action-group/action-group.component.js +1 -1
  13. package/development/alert/alert/alert.component.js +1 -1
  14. package/development/alert/alert-group/alert-group.component.js +1 -1
  15. package/development/autocomplete/autocomplete-base-element.d.ts +1 -1
  16. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  17. package/development/autocomplete/autocomplete-base-element.js +4 -2
  18. package/development/autocomplete/autocomplete.component.js +1 -1
  19. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +1 -1
  20. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +1 -1
  21. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.js +1 -1
  22. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.component.js +1 -1
  23. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +1 -1
  24. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +1 -1
  25. package/development/breadcrumb/breadcrumb/breadcrumb.component.js +1 -1
  26. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
  27. package/development/button/common/button-common.js +1 -1
  28. package/development/button/mini-button/mini-button.component.js +1 -1
  29. package/development/button/mini-button-group/mini-button-group.component.js +1 -1
  30. package/development/calendar/calendar.component.js +1 -1
  31. package/development/card/card/card.component.js +1 -1
  32. package/development/card/card-badge/card-badge.component.js +1 -1
  33. package/development/card/card-button/card-button.component.js +1 -1
  34. package/development/card/card-link/card-link.component.js +1 -1
  35. package/development/card/common/card-action-common.js +1 -1
  36. package/development/checkbox/checkbox/checkbox.component.js +1 -1
  37. package/development/checkbox/checkbox-group/checkbox-group.component.js +1 -1
  38. package/development/checkbox/checkbox-panel/checkbox-panel.component.d.ts.map +1 -1
  39. package/development/checkbox/checkbox-panel/checkbox-panel.component.js +1 -1
  40. package/development/checkbox/common/checkbox-common.js +1 -1
  41. package/development/chip/chip/chip.component.js +1 -1
  42. package/development/chip/chip-group/chip-group.component.js +1 -1
  43. package/development/chip-label/chip-label.component.js +1 -1
  44. package/development/clock/clock.component.js +1 -1
  45. package/development/container/container/container.component.js +1 -1
  46. package/development/container/sticky-bar/sticky-bar.component.js +1 -1
  47. package/development/core/a11y/arrow-navigation.js +1 -1
  48. package/development/core/a11y/focus-trap-controller.js +1 -1
  49. package/development/core/a11y/focus-visible-within-controller.js +1 -1
  50. package/development/core/a11y/input-modality-detector.js +1 -1
  51. package/development/core/a11y/interactivity-checker.js +1 -1
  52. package/development/core/a11y/live-announcer.js +1 -1
  53. package/development/core/base-elements/action-base-element.js +1 -1
  54. package/development/core/base-elements/button-base-element.js +1 -1
  55. package/development/core/base-elements/link-base-element.js +1 -1
  56. package/development/core/base-elements/open-close-base-element.d.ts +3 -3
  57. package/development/core/base-elements/open-close-base-element.d.ts.map +1 -1
  58. package/development/core/base-elements/open-close-base-element.js +1 -1
  59. package/development/core/config/config.js +1 -1
  60. package/development/core/controllers/escapable-overlay-controller.js +1 -1
  61. package/development/core/controllers/id-reference-controller.js +1 -1
  62. package/development/core/controllers/inert-controller.js +1 -1
  63. package/development/core/controllers/language-controller.js +1 -1
  64. package/development/core/controllers/media-matchers-controller.js +1 -1
  65. package/development/core/controllers/slot-state-controller.js +1 -1
  66. package/development/core/datetime/date-adapter.js +1 -1
  67. package/development/core/datetime/native-date-adapter.js +1 -1
  68. package/development/core/decorators/force-type.js +1 -1
  69. package/development/core/decorators/get-override.js +1 -1
  70. package/development/core/decorators/handle-distinct-change.js +1 -1
  71. package/development/core/decorators/host-attributes.js +1 -1
  72. package/development/core/decorators/id-reference.js +1 -1
  73. package/development/core/decorators/omit-empty-converter.js +1 -1
  74. package/development/core/decorators/plain-date.js +1 -1
  75. package/development/core/decorators/slot-state.js +1 -1
  76. package/development/core/dom/animation.js +1 -1
  77. package/development/core/dom/breakpoint.js +1 -1
  78. package/development/core/dom/host-context.js +1 -1
  79. package/development/core/dom/scroll.js +1 -1
  80. package/development/core/dom/set-or-remove-attribute.js +1 -1
  81. package/development/core/eventing/composed-path-has-attribute.js +1 -1
  82. package/development/core/eventing/form-element-handlers.js +1 -1
  83. package/development/core/eventing/throttle.js +1 -1
  84. package/development/core/i18n/i18n.js +1 -1
  85. package/development/core/mixins/animation-complete-mixin.js +1 -1
  86. package/development/core/mixins/disabled-mixin.js +1 -1
  87. package/development/core/mixins/element-internals-mixin.js +1 -1
  88. package/development/core/mixins/form-associated-checkbox-mixin.js +1 -1
  89. package/development/core/mixins/form-associated-input-mixin.js +1 -1
  90. package/development/core/mixins/form-associated-mixin.js +1 -1
  91. package/development/core/mixins/form-associated-radio-button-mixin.js +1 -1
  92. package/development/core/mixins/hydration-mixin.js +1 -1
  93. package/development/core/mixins/named-slot-list-mixin.js +1 -1
  94. package/development/core/mixins/negative-mixin.js +1 -1
  95. package/development/core/mixins/panel-mixin.js +1 -1
  96. package/development/core/mixins/readonly-mixin.js +1 -1
  97. package/development/core/mixins/required-mixin.js +1 -1
  98. package/development/core/mixins/update-scheduler-mixin.js +1 -1
  99. package/development/core/overlay/overlay-option-panel.js +1 -1
  100. package/development/core/overlay/overlay-trigger-attributes.js +1 -1
  101. package/development/core/overlay/position.js +1 -1
  102. package/development/core/testing/event-spy.js +1 -1
  103. package/development/core/testing/mocha-extensions.js +1 -1
  104. package/development/core/testing/wait-for-condition.js +1 -1
  105. package/development/core/testing/wait-for-image-ready.js +1 -1
  106. package/development/date-input/date-input.component.js +1 -1
  107. package/development/datepicker/common/datepicker-button.js +1 -1
  108. package/development/datepicker/datepicker/datepicker.component.d.ts +7 -3
  109. package/development/datepicker/datepicker/datepicker.component.d.ts.map +1 -1
  110. package/development/datepicker/datepicker/datepicker.component.js +14 -3
  111. package/development/datepicker/datepicker-next-day/datepicker-next-day.component.js +1 -1
  112. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +1 -1
  113. package/development/datepicker/datepicker-toggle/datepicker-toggle.component.js +1 -1
  114. package/development/dialog/dialog/dialog.component.js +1 -1
  115. package/development/dialog/dialog-actions/dialog-actions.component.js +1 -1
  116. package/development/dialog/dialog-content/dialog-content.component.js +1 -1
  117. package/development/dialog/dialog-title/dialog-title.component.js +1 -1
  118. package/development/divider/divider.component.js +1 -1
  119. package/development/expansion-panel/expansion-panel/expansion-panel.component.js +1 -1
  120. package/development/expansion-panel/expansion-panel-content/expansion-panel-content.component.js +1 -1
  121. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +1 -1
  122. package/development/file-selector/common/file-selector-common.js +1 -1
  123. package/development/file-selector/file-selector/file-selector.component.js +1 -1
  124. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
  125. package/development/flip-card/flip-card/flip-card.component.js +1 -1
  126. package/development/flip-card/flip-card-details/flip-card-details.component.js +1 -1
  127. package/development/flip-card/flip-card-summary/flip-card-summary.component.js +1 -1
  128. package/development/footer/footer.component.js +1 -1
  129. package/development/form-error/form-error.component.js +1 -1
  130. package/development/form-field/form-field/form-field.component.js +1 -1
  131. package/development/form-field/form-field-clear/form-field-clear.component.js +1 -1
  132. package/development/header/common/header-action-common.js +1 -1
  133. package/development/header/header/header.component.js +1 -1
  134. package/development/icon/icon-base.js +1 -1
  135. package/development/icon/icon-name-mixin.js +1 -1
  136. package/development/icon/icon-request.js +1 -1
  137. package/development/icon/icon-validate.js +1 -1
  138. package/development/icon/icon.component.js +1 -1
  139. package/development/image/image.component.js +1 -1
  140. package/development/journey-header/journey-header.component.js +1 -1
  141. package/development/lead-container/lead-container.component.js +1 -1
  142. package/development/link/common/block-link-common.js +1 -1
  143. package/development/link-common-DPLJx5Uo.js +1 -1
  144. package/development/link-list/common/link-list-base.js +1 -1
  145. package/development/link-list/link-list/link-list.component.js +1 -1
  146. package/development/loading-indicator/loading-indicator.component.js +1 -1
  147. package/development/loading-indicator-circle/loading-indicator-circle.component.js +1 -1
  148. package/development/logo/logo.component.js +1 -1
  149. package/development/map-container/map-container.component.js +1 -1
  150. package/development/menu/common/menu-action-common.js +1 -1
  151. package/development/menu/menu/menu.component.js +1 -1
  152. package/development/message/message.component.js +1 -1
  153. package/development/navigation/common/navigation-action-common.js +1 -1
  154. package/development/navigation/navigation/navigation.component.js +1 -1
  155. package/development/navigation/navigation-list/navigation-list.component.js +1 -1
  156. package/development/navigation/navigation-marker/navigation-marker.component.js +1 -1
  157. package/development/navigation/navigation-section/navigation-section.component.js +1 -1
  158. package/development/notification/notification.component.js +1 -1
  159. package/development/option/optgroup/optgroup-base-element.js +1 -1
  160. package/development/option/optgroup/optgroup.component.js +1 -1
  161. package/development/option/option/option-base-element.d.ts +1 -1
  162. package/development/option/option/option-base-element.d.ts.map +1 -1
  163. package/development/option/option/option-base-element.js +1 -1
  164. package/development/option/option/option.component.d.ts +1 -1
  165. package/development/option/option/option.component.d.ts.map +1 -1
  166. package/development/option/option/option.component.js +1 -1
  167. package/development/overlay/overlay-base-element.js +1 -1
  168. package/development/overlay/overlay.component.js +1 -1
  169. package/development/paginator/common/paginator-common.js +1 -1
  170. package/development/paginator/compact-paginator/compact-paginator.component.js +1 -1
  171. package/development/paginator/paginator/paginator.component.js +1 -1
  172. package/development/popover/popover/popover.component.d.ts +1 -0
  173. package/development/popover/popover/popover.component.d.ts.map +1 -1
  174. package/development/popover/popover/popover.component.js +10 -3
  175. package/development/popover/popover-trigger/popover-trigger.component.js +1 -1
  176. package/development/radio-button/common/radio-button-common.js +1 -1
  177. package/development/radio-button/radio-button/radio-button.component.js +1 -1
  178. package/development/radio-button/radio-button-group/radio-button-group.component.js +1 -1
  179. package/development/radio-button/radio-button-panel/radio-button-panel.component.js +1 -1
  180. package/development/screen-reader-only/screen-reader-only.component.js +1 -1
  181. package/development/select/select.component.d.ts.map +1 -1
  182. package/development/select/select.component.js +1 -1
  183. package/development/selection-expansion-panel/selection-expansion-panel.component.js +1 -1
  184. package/development/sidebar/icon-sidebar/icon-sidebar.component.js +1 -1
  185. package/development/sidebar/icon-sidebar-button/icon-sidebar-button.component.js +1 -1
  186. package/development/sidebar/icon-sidebar-container/icon-sidebar-container.component.js +1 -1
  187. package/development/sidebar/icon-sidebar-content/icon-sidebar-content.component.js +1 -1
  188. package/development/sidebar/icon-sidebar-link/icon-sidebar-link.component.js +1 -1
  189. package/development/sidebar/sidebar/sidebar.component.js +1 -1
  190. package/development/sidebar/sidebar-close-button/sidebar-close-button.component.js +1 -1
  191. package/development/sidebar/sidebar-container/sidebar-container.component.js +1 -1
  192. package/development/sidebar/sidebar-content/sidebar-content.component.js +1 -1
  193. package/development/sidebar/sidebar-title/sidebar-title.component.js +1 -1
  194. package/development/signet/signet.component.js +1 -1
  195. package/development/skiplink-list/skiplink-list.component.js +1 -1
  196. package/development/slider/slider.component.js +1 -1
  197. package/development/status/status.component.js +1 -1
  198. package/development/stepper/step/step.component.d.ts +1 -1
  199. package/development/stepper/step/step.component.d.ts.map +1 -1
  200. package/development/stepper/step/step.component.js +1 -1
  201. package/development/stepper/step-label/step-label.component.js +1 -1
  202. package/development/stepper/stepper/stepper.component.d.ts.map +1 -1
  203. package/development/stepper/stepper/stepper.component.js +1 -1
  204. package/development/table/table-wrapper/table-wrapper.component.js +1 -1
  205. package/development/tabs/tab/tab.component.js +1 -1
  206. package/development/tabs/tab-group/tab-group.component.js +1 -1
  207. package/development/tabs/tab-label/tab-label.component.js +1 -1
  208. package/development/tag/tag/tag.component.js +1 -1
  209. package/development/tag/tag-group/tag-group.component.js +1 -1
  210. package/development/teaser/teaser.component.js +1 -1
  211. package/development/teaser-hero/teaser-hero.component.js +1 -1
  212. package/development/teaser-product/common/teaser-product-common.js +1 -1
  213. package/development/teaser-product/teaser-product/teaser-product.component.js +1 -1
  214. package/development/time-input/time-input.component.js +1 -1
  215. package/development/timetable-occupancy/timetable-occupancy.component.js +1 -1
  216. package/development/timetable-occupancy-icon/timetable-occupancy-icon.component.js +1 -1
  217. package/development/title/title-base.js +1 -1
  218. package/development/toast/toast.component.js +1 -1
  219. package/development/toggle/toggle/toggle.component.js +1 -1
  220. package/development/toggle/toggle-option/toggle-option.component.js +1 -1
  221. package/development/toggle-check/toggle-check.component.js +1 -1
  222. package/development/train/train/train.component.js +1 -1
  223. package/development/train/train-blocked-passage/train-blocked-passage.component.js +1 -1
  224. package/development/train/train-formation/train-formation.component.js +1 -1
  225. package/development/train/train-wagon/train-wagon.component.js +1 -1
  226. package/development/visual-checkbox/visual-checkbox.component.js +1 -1
  227. package/option/option/option-base-element.d.ts +1 -1
  228. package/option/option/option-base-element.d.ts.map +1 -1
  229. package/option/option/option.component.d.ts +1 -1
  230. package/option/option/option.component.d.ts.map +1 -1
  231. package/package.json +1 -1
  232. package/popover/popover/popover.component.d.ts +1 -0
  233. package/popover/popover/popover.component.d.ts.map +1 -1
  234. package/popover/popover/popover.component.js +37 -33
  235. package/select/select.component.d.ts.map +1 -1
  236. package/stepper/step/step.component.d.ts +1 -1
  237. package/stepper/step/step.component.d.ts.map +1 -1
  238. package/stepper/stepper/stepper.component.d.ts.map +1 -1
@@ -104,4 +104,4 @@ export {
104
104
  SbbDisabledMixin,
105
105
  SbbDisabledTabIndexActionMixin
106
106
  };
107
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZWQtbWl4aW4uanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL21peGlucy9kaXNhYmxlZC1taXhpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExpdEVsZW1lbnQsIFByb3BlcnR5VmFsdWVzIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICcuLi9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpblR5cGUgfSBmcm9tICcuL2VsZW1lbnQtaW50ZXJuYWxzLW1peGluLmpzJztcblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgU2JiRGlzYWJsZWRNaXhpblR5cGUge1xuICBwdWJsaWMgYWNjZXNzb3IgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBpc0Rpc2FibGVkRXh0ZXJuYWxseSgpOiBib29sZWFuO1xufVxuXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBTYmJEaXNhYmxlZEludGVyYWN0aXZlTWl4aW5UeXBlIHtcbiAgcHVibGljIGFjY2Vzc29yIGRpc2FibGVkSW50ZXJhY3RpdmU6IGJvb2xlYW47XG59XG5cbi8qKlxuICogRW5oYW5jZSB5b3VyIGNvbXBvbmVudCB3aXRoIGEgZGlzYWJsZWQgcHJvcGVydHkuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJEaXNhYmxlZE1peGluID0gPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRGlzYWJsZWRNaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYkRpc2FibGVkRWxlbWVudCBleHRlbmRzIHN1cGVyQ2xhc3MgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkRpc2FibGVkTWl4aW5UeXBlPiB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgLy8gVE9ETzogcmVtb3ZlIHJlZmxlY3Q6IHRydWUgYW5kIG1hbmFnZSBvbmx5IGluIHNldHRlci5cbiAgICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0pXG4gICAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgdGhpcy4jZGlzYWJsZWQgPSAhIXZhbHVlO1xuXG4gICAgICAvLyBUaGUgYXR0cmlidXRlIG5lZWRzIHRvIGJlIHJlZmxlY3RlZCBzeW5jaHJvbm91c2x5IChsaWtlIG5hdGl2ZSlcbiAgICAgIC8vIFRPRE86IG9ubHkgZGlzYWJsZWQgb2YgdGhlIGFjdHVhbCBjb21wb25lbnQgc2hvdWxkIGJlIHJlZmxlY3RlZCwgd2l0aG91dCBjb25zaWRlcmluZyB0aGlzLmlzRGlzYWJsZWRFeHRlcm5hbGx5KClcbiAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkaXNhYmxlZCcsIHRoaXMuZGlzYWJsZWQpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuI2Rpc2FibGVkIHx8IHRoaXMuaXNEaXNhYmxlZEV4dGVybmFsbHkoKTtcbiAgICB9XG4gICAgI2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBXaWxsIGJlIHVzZWQgYXMgJ29yJyBjaGVjayB0byB0aGUgY3VycmVudCBkaXNhYmxlZCBzdGF0ZS5cbiAgICAgKiBDYW4gZS5nLiBiZSB1c2VkIHRvIHJlYWQgZGlzYWJsZWQgc3RhdGUgb2YgYSBncm91cC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNEaXNhYmxlZEV4dGVybmFsbHkoKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFNiYkRpc2FibGVkRWxlbWVudCBhcyB1bmtub3duIGFzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRGlzYWJsZWRNaXhpblR5cGU+ICYgVDtcbn07XG5cbi8qKlxuICogRW5oYW5jZSB5b3VyIGNvbXBvbmVudCB3aXRoIGEgZGlzYWJsZWQgaW50ZXJhY3RpdmUgcHJvcGVydHkuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJEaXNhYmxlZEludGVyYWN0aXZlTWl4aW4gPSA8XG4gIFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQgJiBTYmJEaXNhYmxlZE1peGluVHlwZT4sXG4+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJEaXNhYmxlZEludGVyYWN0aXZlTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJEaXNhYmxlZEludGVyYWN0aXZlRWxlbWVudFxuICAgIGV4dGVuZHMgc3VwZXJDbGFzc1xuICAgIGltcGxlbWVudHMgUGFydGlhbDxTYmJEaXNhYmxlZEludGVyYWN0aXZlTWl4aW5UeXBlPlxuICB7XG4gICAgLyoqIFdoZXRoZXIgdGhlIGJ1dHRvbiBzaG91bGQgYmUgYXJpYS1kaXNhYmxlZCBidXQgc3RheSBpbnRlcmFjdGl2ZS4gKi9cbiAgICBAZm9yY2VUeXBlKClcbiAgICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdkaXNhYmxlZC1pbnRlcmFjdGl2ZScsIHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSlcbiAgICBwdWJsaWMgYWNjZXNzb3IgZGlzYWJsZWRJbnRlcmFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIFNiYkRpc2FibGVkSW50ZXJhY3RpdmVFbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJEaXNhYmxlZEludGVyYWN0aXZlTWl4aW5UeXBlPiAmXG4gICAgVDtcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJEaXNhYmxlZFRhYkluZGV4QWN0aW9uTWl4aW4gPSA8XG4gIFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQgJiBTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW5UeXBlPixcbj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkRpc2FibGVkTWl4aW5UeXBlICYgU2JiRGlzYWJsZWRJbnRlcmFjdGl2ZU1peGluVHlwZT4gJiBUID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiRGlzYWJsZWRUYWJJbmRleEFjdGlvblxuICAgIGV4dGVuZHMgU2JiRGlzYWJsZWRJbnRlcmFjdGl2ZU1peGluKFNiYkRpc2FibGVkTWl4aW4oc3VwZXJDbGFzcykpXG4gICAgaW1wbGVtZW50cyBTYmJEaXNhYmxlZE1peGluVHlwZSwgU2JiRGlzYWJsZWRJbnRlcmFjdGl2ZU1peGluVHlwZVxuICB7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZGlzYWJsZWRJbnRlcmFjdGl2ZScpKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFEaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWRJbnRlcmFjdGl2ZSA/ICd0cnVlJyA6IG51bGw7XG4gICAgICB9XG5cbiAgICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZCcpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZSgndGFiaW5kZXgnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYkRpc2FibGVkVGFiSW5kZXhBY3Rpb24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxcbiAgICBTYmJEaXNhYmxlZE1peGluVHlwZSAmIFNiYkRpc2FibGVkSW50ZXJhY3RpdmVNaXhpblR5cGVcbiAgPiAmXG4gICAgVDtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQXFCTyxNQUFNLG1CQUFtQixDQUM5QixlQUNpRDtNQUNsQyxzQkFBa0IsTUFBQTs7c0JBQVM7OztBQUEzQixXQUFBLG1CQUEyQixZQUFVO0FBQUEsTUFBckM7QUFBQTtBQWlCYix1Q0FqQmEsa0JBQUEsTUFBQSwwQkFBQSxHQWlCRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BVlosSUFBVyxTQUFTLE9BQWM7QUFDaEMsMkJBQUssV0FBWSxDQUFDLENBQUM7QUFJbkIsYUFBSyxnQkFBZ0IsWUFBWSxLQUFLLFFBQVE7QUFBQSxNQUFBO0FBQUEsTUFFaEQsSUFBVyxXQUFRO0FBQ2pCLGVBQU8sbUJBQUssY0FBYSxLQUFLLHFCQUFBO0FBQUE7Ozs7O01BUXRCLHVCQUFvQjtBQUM1QixlQUFPO0FBQUEsTUFBQTtBQUFBLElBQ1QsR0FSQTs7a0NBWEMsU0FBUyxFQUFFLE1BQU0sU0FBUyxTQUFTLEtBQUEsQ0FBTSxDQUFDO0FBQzNDLG1CQUFBLElBQUEsTUFBQSwwQkFBQSxFQUFBLE1BQUEsVUFBQSxNQUFBLFlBQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEsY0FBQSxLQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxZQUFXLFdBQVE7QUFBQSxNQUFBLEtBQUEsVUFBQSxhQUFBLE1BQUEsMEJBQUE7O1VBUE47QUFBQTtBQTRCZixTQUFPO0FBQ1Q7QUFNTyxNQUFNLDhCQUE4QixDQUd6QyxlQUM0RDtNQUM3QyxpQ0FBNkIsTUFBQTs7c0JBQ2xDOzs7O0FBREssV0FBQSxtQkFDTCxZQUFVO0FBQUE7O0FBTWxCLGtFQUFBLGtCQUFBLE1BQUEsbUNBQStDLEtBQUs7Ozs7TUFBcEQsSUFBZ0Isc0JBQW1CO0FBQUEsZUFBQSxtQkFBQTtBQUFBLE1BQUE7QUFBQSxNQUFuQyxJQUFnQixvQkFBbUIsT0FBQTtBQUFBLDJCQUFBLHVDQUFBO0FBQUEsTUFBQTtBQUFBLE9BQW5DOztBQUZDLHdDQUFBLENBQUEsYUFDQSxTQUFTLEVBQUUsV0FBVyx3QkFBd0IsTUFBTSxTQUFTLFNBQVMsS0FBQSxDQUFNLENBQUM7QUFDOUUsbUJBQUEsSUFBQSxNQUFBLGlDQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsdUJBQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEseUJBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFnQixxQkFBbUIsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFlBQW5CLHNCQUFtQjtBQUFBLE1BQUEsS0FBQSxVQUFBLGFBQUEsbUNBQUEsc0NBQUE7O1VBUHRCO0FBQUE7QUFVZixTQUFPO0FBRVQ7QUFHTyxNQUFNLGlDQUFpQyxDQUc1QyxlQUNtRjtBQUFBLEVBQ25GLE1BQWUsa0NBQ0wsNEJBQTRCLGlCQUFpQixVQUFVLENBQUMsRUFBQztBQUFBLElBRzlDLFdBQVcsbUJBQXVDO0FBQ25FLFlBQU0sV0FBVyxpQkFBaUI7QUFFbEMsVUFBSSxrQkFBa0IsSUFBSSxxQkFBcUIsR0FBRztBQUNoRCxhQUFLLFVBQVUsZUFBZSxLQUFLLHNCQUFzQixTQUFTO0FBQUEsTUFBQTtBQUdwRSxVQUFJLENBQUMsa0JBQWtCLElBQUksVUFBVSxHQUFHO0FBQ3RDO0FBQUEsTUFBQTtBQUdGLFVBQUksQ0FBQyxLQUFLLFVBQVU7QUFDbEIsYUFBSyxhQUFhLFlBQVksR0FBRztBQUFBLE1BQUEsT0FDNUI7QUFDTCxhQUFLLGdCQUFnQixVQUFVO0FBQUEsTUFBQTtBQUFBLElBQ2pDO0FBQUEsRUFDRjtBQUVGLFNBQU87QUFJVDsifQ==
107
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZWQtbWl4aW4uanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL21peGlucy9kaXNhYmxlZC1taXhpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExpdEVsZW1lbnQsIFByb3BlcnR5VmFsdWVzIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICcuLi9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpblR5cGUgfSBmcm9tICcuL2VsZW1lbnQtaW50ZXJuYWxzLW1peGluLmpzJztcblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgU2JiRGlzYWJsZWRNaXhpblR5cGUge1xuICBwdWJsaWMgYWNjZXNzb3IgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBpc0Rpc2FibGVkRXh0ZXJuYWxseSgpOiBib29sZWFuO1xufVxuXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBTYmJEaXNhYmxlZEludGVyYWN0aXZlTWl4aW5UeXBlIHtcbiAgcHVibGljIGFjY2Vzc29yIGRpc2FibGVkSW50ZXJhY3RpdmU6IGJvb2xlYW47XG59XG5cbi8qKlxuICogRW5oYW5jZSB5b3VyIGNvbXBvbmVudCB3aXRoIGEgZGlzYWJsZWQgcHJvcGVydHkuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJEaXNhYmxlZE1peGluID0gPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRGlzYWJsZWRNaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYkRpc2FibGVkRWxlbWVudCBleHRlbmRzIHN1cGVyQ2xhc3MgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkRpc2FibGVkTWl4aW5UeXBlPiB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgLy8gVE9ETzogcmVtb3ZlIHJlZmxlY3Q6IHRydWUgYW5kIG1hbmFnZSBvbmx5IGluIHNldHRlci5cbiAgICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0pXG4gICAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgdGhpcy4jZGlzYWJsZWQgPSAhIXZhbHVlO1xuXG4gICAgICAvLyBUaGUgYXR0cmlidXRlIG5lZWRzIHRvIGJlIHJlZmxlY3RlZCBzeW5jaHJvbm91c2x5IChsaWtlIG5hdGl2ZSlcbiAgICAgIC8vIFRPRE86IG9ubHkgZGlzYWJsZWQgb2YgdGhlIGFjdHVhbCBjb21wb25lbnQgc2hvdWxkIGJlIHJlZmxlY3RlZCwgd2l0aG91dCBjb25zaWRlcmluZyB0aGlzLmlzRGlzYWJsZWRFeHRlcm5hbGx5KClcbiAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkaXNhYmxlZCcsIHRoaXMuZGlzYWJsZWQpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuI2Rpc2FibGVkIHx8IHRoaXMuaXNEaXNhYmxlZEV4dGVybmFsbHkoKTtcbiAgICB9XG4gICAgI2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBXaWxsIGJlIHVzZWQgYXMgJ29yJyBjaGVjayB0byB0aGUgY3VycmVudCBkaXNhYmxlZCBzdGF0ZS5cbiAgICAgKiBDYW4gZS5nLiBiZSB1c2VkIHRvIHJlYWQgZGlzYWJsZWQgc3RhdGUgb2YgYSBncm91cC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNEaXNhYmxlZEV4dGVybmFsbHkoKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFNiYkRpc2FibGVkRWxlbWVudCBhcyB1bmtub3duIGFzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRGlzYWJsZWRNaXhpblR5cGU+ICYgVDtcbn07XG5cbi8qKlxuICogRW5oYW5jZSB5b3VyIGNvbXBvbmVudCB3aXRoIGEgZGlzYWJsZWQgaW50ZXJhY3RpdmUgcHJvcGVydHkuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJEaXNhYmxlZEludGVyYWN0aXZlTWl4aW4gPSA8XG4gIFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQgJiBTYmJEaXNhYmxlZE1peGluVHlwZT4sXG4+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJEaXNhYmxlZEludGVyYWN0aXZlTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJEaXNhYmxlZEludGVyYWN0aXZlRWxlbWVudFxuICAgIGV4dGVuZHMgc3VwZXJDbGFzc1xuICAgIGltcGxlbWVudHMgUGFydGlhbDxTYmJEaXNhYmxlZEludGVyYWN0aXZlTWl4aW5UeXBlPlxuICB7XG4gICAgLyoqIFdoZXRoZXIgdGhlIGJ1dHRvbiBzaG91bGQgYmUgYXJpYS1kaXNhYmxlZCBidXQgc3RheSBpbnRlcmFjdGl2ZS4gKi9cbiAgICBAZm9yY2VUeXBlKClcbiAgICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdkaXNhYmxlZC1pbnRlcmFjdGl2ZScsIHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSlcbiAgICBwdWJsaWMgYWNjZXNzb3IgZGlzYWJsZWRJbnRlcmFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIFNiYkRpc2FibGVkSW50ZXJhY3RpdmVFbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJEaXNhYmxlZEludGVyYWN0aXZlTWl4aW5UeXBlPiAmXG4gICAgVDtcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJEaXNhYmxlZFRhYkluZGV4QWN0aW9uTWl4aW4gPSA8XG4gIFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQgJiBTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW5UeXBlPixcbj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkRpc2FibGVkTWl4aW5UeXBlICYgU2JiRGlzYWJsZWRJbnRlcmFjdGl2ZU1peGluVHlwZT4gJiBUID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiRGlzYWJsZWRUYWJJbmRleEFjdGlvblxuICAgIGV4dGVuZHMgU2JiRGlzYWJsZWRJbnRlcmFjdGl2ZU1peGluKFNiYkRpc2FibGVkTWl4aW4oc3VwZXJDbGFzcykpXG4gICAgaW1wbGVtZW50cyBTYmJEaXNhYmxlZE1peGluVHlwZSwgU2JiRGlzYWJsZWRJbnRlcmFjdGl2ZU1peGluVHlwZVxuICB7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZGlzYWJsZWRJbnRlcmFjdGl2ZScpKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFEaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWRJbnRlcmFjdGl2ZSA/ICd0cnVlJyA6IG51bGw7XG4gICAgICB9XG5cbiAgICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZCcpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZSgndGFiaW5kZXgnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYkRpc2FibGVkVGFiSW5kZXhBY3Rpb24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxcbiAgICBTYmJEaXNhYmxlZE1peGluVHlwZSAmIFNiYkRpc2FibGVkSW50ZXJhY3RpdmVNaXhpblR5cGVcbiAgPiAmXG4gICAgVDtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQXFCTyxNQUFNLG1CQUFtQixDQUM5QixlQUNpRDtNQUNsQyxzQkFBa0IsTUFBQTs7c0JBQVM7OztBQUEzQixXQUFBLG1CQUEyQixZQUFVO0FBQUEsTUFBckM7QUFBQTtBQWlCYix1Q0FqQmEsa0JBQUEsTUFBQSwwQkFBQSxHQWlCRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BVlosSUFBVyxTQUFTLE9BQWM7QUFDaEMsMkJBQUssV0FBWSxDQUFDLENBQUM7QUFJbkIsYUFBSyxnQkFBZ0IsWUFBWSxLQUFLLFFBQVE7QUFBQSxNQUNoRDtBQUFBLE1BQ0EsSUFBVyxXQUFRO0FBQ2pCLGVBQU8sbUJBQUssY0FBYSxLQUFLLHFCQUFBO0FBQUEsTUFDaEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BT1UsdUJBQW9CO0FBQzVCLGVBQU87QUFBQSxNQUNUO0FBQUEsSUFBQSxHQVJBOztrQ0FYQyxTQUFTLEVBQUUsTUFBTSxTQUFTLFNBQVMsS0FBQSxDQUFNLENBQUM7QUFDM0MsbUJBQUEsSUFBQSxNQUFBLDBCQUFBLEVBQUEsTUFBQSxVQUFBLE1BQUEsWUFBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxjQUFBLEtBQUEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFlBQVcsV0FBUTtBQUFBLE1BQUEsS0FBQSxVQUFBLFVBQUEsR0FBQSxNQUFBLDBCQUFBOztVQVBOO0FBQUE7QUE0QmYsU0FBTztBQUNUO0FBTU8sTUFBTSw4QkFBOEIsQ0FHekMsZUFDNEQ7TUFDN0MsaUNBQTZCLE1BQUE7O3NCQUNsQzs7OztBQURLLFdBQUEsbUJBQ0wsWUFBVTtBQUFBOztBQU1sQixrRUFBQSxrQkFBQSxNQUFBLG1DQUErQyxLQUFLOzs7O01BQXBELElBQWdCLHNCQUFtQjtBQUFBLGVBQUEsbUJBQUE7QUFBQSxNQUFBO0FBQUEsTUFBbkMsSUFBZ0Isb0JBQW1CLE9BQUE7QUFBQSwyQkFBQSx1Q0FBQTtBQUFBLE1BQUE7QUFBQSxPQUFuQzs7QUFGQyx3Q0FBQSxDQUFBLGFBQ0EsU0FBUyxFQUFFLFdBQVcsd0JBQXdCLE1BQU0sU0FBUyxTQUFTLEtBQUEsQ0FBTSxDQUFDO0FBQzlFLG1CQUFBLElBQUEsTUFBQSxpQ0FBQSxFQUFBLE1BQUEsWUFBQSxNQUFBLHVCQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLHlCQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBZ0IscUJBQW1CLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxZQUFuQixzQkFBbUI7QUFBQSxNQUFBLEtBQUEsVUFBQSxVQUFBLEdBQUEsbUNBQUEsc0NBQUE7O1VBUHRCO0FBQUE7QUFVZixTQUFPO0FBRVQ7QUFHTyxNQUFNLGlDQUFpQyxDQUc1QyxlQUNtRjtBQUFBLEVBQ25GLE1BQWUsa0NBQ0wsNEJBQTRCLGlCQUFpQixVQUFVLENBQUMsRUFBQztBQUFBLElBRzlDLFdBQVcsbUJBQXVDO0FBQ25FLFlBQU0sV0FBVyxpQkFBaUI7QUFFbEMsVUFBSSxrQkFBa0IsSUFBSSxxQkFBcUIsR0FBRztBQUNoRCxhQUFLLFVBQVUsZUFBZSxLQUFLLHNCQUFzQixTQUFTO0FBQUEsTUFDcEU7QUFFQSxVQUFJLENBQUMsa0JBQWtCLElBQUksVUFBVSxHQUFHO0FBQ3RDO0FBQUEsTUFDRjtBQUVBLFVBQUksQ0FBQyxLQUFLLFVBQVU7QUFDbEIsYUFBSyxhQUFhLFlBQVksR0FBRztBQUFBLE1BQ25DLE9BQU87QUFDTCxhQUFLLGdCQUFnQixVQUFVO0FBQUEsTUFDakM7QUFBQSxJQUNGO0FBQUEsRUFBQTtBQUVGLFNBQU87QUFJVDsifQ==
@@ -177,4 +177,4 @@ export {
177
177
  appendAriaElements,
178
178
  removeAriaElements
179
179
  };
180
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1pbnRlcm5hbHMtbWl4aW4uanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL21peGlucy9lbGVtZW50LWludGVybmFscy1taXhpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1NlcnZlciwgdHlwZSBMaXRFbGVtZW50LCB0eXBlIFJlYWN0aXZlQ29udHJvbGxlciB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB0eXBlIHsgQWJzdHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4vY29uc3RydWN0b3IuanMnO1xuXG4vLyBNb3N0IG9mIG91ciB0YXJnZXQgYnJvd3NlcnMgc3VwcG9ydCB0aGUgOnN0YXRlKCkgcHNldWRvIGNsYXNzLCBidXQgbm90IGFsbCBvZiB0aGVtLlxuLy8gV2UgcGF0Y2ggdGhlIHN0YXRlcyBwcm9wZXJ0eSBvZiB0aGUgZWxlbWVudCBpbnRlcm5hbHMgdG8gdXNlIGF0dHJpYnV0ZXMgaW5zdGVhZCxcbi8vIGlmIDpzdGF0ZSgpIGlzIG5vdCBzdXBwb3J0ZWQuXG4vLyBOb3RlIHRoYXQgZm9yIFNTUiwgdGhlIHN0YXRlcyBwcm9wZXJ0eSBpcyBhIHNpbXBsZSBTZXQsIGltcGxlbWVudGVkIGluIExpdCBTU1IuXG4vLyBUT0RPOiBSZW1vdmUgaW4gMjAyNi5cbnR5cGUgQ3VzdG9tU3RhdGVTZXRJbnRlcmZhY2UgPSBDdXN0b21TdGF0ZVNldDtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmNvbnN0IEN1c3RvbVN0YXRlU2V0UG9seWZpbGw6IChuZXcgKGhvc3Q6IExpdEVsZW1lbnQpID0+IEN1c3RvbVN0YXRlU2V0SW50ZXJmYWNlKSB8IG51bGwgPVxuICAhaXNTZXJ2ZXIgJiYgIUNTUy5zdXBwb3J0cygnc2VsZWN0b3IoOnN0YXRlKGxvYWRpbmcpKScpXG4gICAgPyBjbGFzcyBDdXN0b21TdGF0ZVNldFxuICAgICAgICBleHRlbmRzIFNldDxzdHJpbmc+XG4gICAgICAgIGltcGxlbWVudHMgQ3VzdG9tU3RhdGVTZXRJbnRlcmZhY2UsIFJlYWN0aXZlQ29udHJvbGxlclxuICAgICAge1xuICAgICAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdDogTGl0RWxlbWVudCkge1xuICAgICAgICAgIHN1cGVyKCk7XG4gICAgICAgICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyKHRoaXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIG92ZXJyaWRlIGFkZChzdGF0ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgICAgaWYgKHRoaXMuX2hvc3QuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3RvZ2dsZVN0YXRlKHN0YXRlLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHN1cGVyLmFkZChzdGF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgZGVsZXRlKHN0YXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgICB0aGlzLl90b2dnbGVTdGF0ZShzdGF0ZSwgZmFsc2UpO1xuICAgICAgICAgIHJldHVybiBzdXBlci5kZWxldGUoc3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIG92ZXJyaWRlIGNsZWFyKCk6IHZvaWQge1xuICAgICAgICAgIHRoaXMuZm9yRWFjaCgoc3RhdGUpID0+IHRoaXMuZGVsZXRlKHN0YXRlKSk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgaG9zdENvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICAgICAgICB0aGlzLmZvckVhY2goKHN0YXRlKSA9PiB0aGlzLl90b2dnbGVTdGF0ZShzdGF0ZSwgdHJ1ZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJpdmF0ZSBfdG9nZ2xlU3RhdGUoc3RhdGU6IHN0cmluZywgZW5hYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICAgIHRoaXMuX2hvc3QudG9nZ2xlQXR0cmlidXRlKGBzdGF0ZS0tJHtzdGF0ZX1gLCBlbmFibGVkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIDogbnVsbDtcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgQVJJQU1peGluIHtcbiAgICBhcmlhQWN0aXZlRGVzY2VuZGFudEVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsO1xuICAgIGFyaWFDb250cm9sc0VsZW1lbnRzOiByZWFkb25seSBFbGVtZW50W10gfCBudWxsO1xuICAgIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzOiByZWFkb25seSBFbGVtZW50W10gfCBudWxsO1xuICAgIGFyaWFEZXRhaWxzRWxlbWVudHM6IHJlYWRvbmx5IEVsZW1lbnRbXSB8IG51bGw7XG4gICAgYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzOiByZWFkb25seSBFbGVtZW50W10gfCBudWxsO1xuICAgIGFyaWFMYWJlbGxlZEJ5RWxlbWVudHM6IHJlYWRvbmx5IEVsZW1lbnRbXSB8IG51bGw7XG4gICAgYXJpYU93bnNFbGVtZW50czogcmVhZG9ubHkgRWxlbWVudFtdIHwgbnVsbDtcbiAgfVxufVxuXG5pZiAoIWlzU2VydmVyKSB7XG4gIC8vIFRoaXMgaXMgYSBwb2x5ZmlsbCBmb3IgdGhlIGFyaWEgZWxlbWVudHMgcHJvcGVydGllcyBvbiBFbGVtZW50SW50ZXJuYWxzIGFuZCBFbGVtZW50LlxuICBsZXQgbmV4dElkID0gMDtcbiAgY29uc3QgcmVzb2x2ZUhvc3QgPSAob3JpZ2luOiBFbGVtZW50SW50ZXJuYWxzIHwgRWxlbWVudCk6IEVsZW1lbnQgPT5cbiAgICBvcmlnaW4uc2hhZG93Um9vdD8uaG9zdCA/P1xuICAgIChvcmlnaW4gaW5zdGFuY2VvZiBFbGVtZW50XG4gICAgICA/IG9yaWdpblxuICAgICAgOiAoKCkgPT4ge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHJlc29sdmUgcmVsYXRlZCBlbGVtZW50ISBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uJyk7XG4gICAgICAgIH0pKCkpO1xuICBjb25zdCBvYnNlcnZlck9wdGlvbnM6IE11dGF0aW9uT2JzZXJ2ZXJJbml0ID0geyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsnaWQnXSB9O1xuICBjb25zdCBhc3NpZ25FbGVtZW50ID0gKFxuICAgIGhvc3Q6IEVsZW1lbnQsXG4gICAgYXR0cmlidXRlOiBzdHJpbmcsXG4gICAgZWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEVsZW1lbnQ+LFxuICApOiB2b2lkID0+IHtcbiAgICAvLyBJbiBjYXNlIGJvdGggRWxlbWVudCBhbmQgRWxlbWVudEludGVybmFscyBwcm9wZXJ0aWVzIGFyZSBzZXQsXG4gICAgLy8gdGhlIGVsZW1lbnQgcmVmZXJlbmNlIGZyb20gRWxlbWVudCBoYXMgcHJpb3JpdHkuXG4gICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IGVsZW1lbnRzW0VsZW1lbnQubmFtZV0gPz8gZWxlbWVudHNbRWxlbWVudEludGVybmFscy5uYW1lXTtcbiAgICBob3N0LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIChhY3RpdmVFbGVtZW50LmlkIHx8PSBgYXJpYS1yZWYtJHtuZXh0SWQrK31gKSk7XG4gIH07XG4gIGNvbnN0IGFzc2lnbkVsZW1lbnRzID0gKFxuICAgIGhvc3Q6IEVsZW1lbnQsXG4gICAgYXR0cmlidXRlOiBzdHJpbmcsXG4gICAgZWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEVsZW1lbnRbXT4sXG4gICk6IHZvaWQgPT4ge1xuICAgIC8vIEluIGNhc2UgYm90aCBFbGVtZW50IGFuZCBFbGVtZW50SW50ZXJuYWxzIHByb3BlcnRpZXMgYXJlIHNldCxcbiAgICAvLyB3ZSBjb21iaW5lIHRoZSBlbGVtZW50IHJlZmVyZW5jZXMuXG4gICAgaG9zdC5zZXRBdHRyaWJ1dGUoXG4gICAgICBhdHRyaWJ1dGUsXG4gICAgICBPYmplY3QudmFsdWVzKGVsZW1lbnRzKVxuICAgICAgICAucmVkdWNlKChjdXJyZW50LCBuZXh0KSA9PiBjdXJyZW50LmNvbmNhdChuZXh0KSlcbiAgICAgICAgLmZpbHRlcigodiwgaSwgYSkgPT4gYS5pbmRleE9mKHYpID09PSBpKVxuICAgICAgICAubWFwKChlKSA9PiBlLmlkIHx8IChlLmlkID0gYGFyaWEtcmVmLSR7bmV4dElkKyt9YCkpXG4gICAgICAgIC5qb2luKCcgJyksXG4gICAgKTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IHR5cGUgb2YgW0VsZW1lbnRJbnRlcm5hbHMsIEVsZW1lbnRdKSB7XG4gICAgY29uc3QgcHJvdG90eXBlID0gdHlwZS5wcm90b3R5cGU7XG4gICAgaWYgKCEoJ2FyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCcgaW4gcHJvdG90eXBlKSkge1xuICAgICAgY29uc3QgYXR0cmlidXRlID0gJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCc7XG4gICAgICBjb25zdCBzdG9yYWdlID0gbmV3IFdlYWtNYXA8XG4gICAgICAgIEVsZW1lbnQsXG4gICAgICAgIHsgZWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEVsZW1lbnQ+OyBvYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciB9XG4gICAgICA+KCk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCAnYXJpYUFjdGl2ZURlc2NlbmRhbnRFbGVtZW50Jywge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldCh0aGlzOiBFbGVtZW50SW50ZXJuYWxzIHwgRWxlbWVudCk6IEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgICBjb25zdCBob3N0ID0gcmVzb2x2ZUhvc3QodGhpcyk7XG4gICAgICAgICAgY29uc3QgaWQgPSBob3N0LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpPy5zcGxpdCgvXFxzKy8pWzBdID8/IG51bGw7XG4gICAgICAgICAgcmV0dXJuIGlkXG4gICAgICAgICAgICA/ICgoaG9zdC5nZXRSb290Tm9kZSgpIGFzIERvY3VtZW50IHwgU2hhZG93Um9vdCkuZ2V0RWxlbWVudEJ5SWQ/LihpZCkgPz8gbnVsbClcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0KHRoaXM6IEVsZW1lbnRJbnRlcm5hbHMgfCBFbGVtZW50LCB2YWx1ZTogRWxlbWVudCB8IG51bGwpIHtcbiAgICAgICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICAgICBgRmFpbGVkIHRvIHNldCB0aGUgJ2FyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCcgcHJvcGVydHkgb24gJyR7dHlwZS5uYW1lfSc6IEZhaWxlZCB0byBjb252ZXJ0IHZhbHVlIHRvICdFbGVtZW50Jy5gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBob3N0ID0gcmVzb2x2ZUhvc3QodGhpcyk7XG4gICAgICAgICAgY29uc3QgZW50cnkgPSBzdG9yYWdlLmdldChob3N0KTtcbiAgICAgICAgICBlbnRyeT8ub2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgICBkZWxldGUgZW50cnkuZWxlbWVudHNbdHlwZS5uYW1lXTtcbiAgICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhlbnRyeSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc3RvcmFnZS5kZWxldGUoaG9zdCk7XG4gICAgICAgICAgICAgICAgaG9zdC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbnRyeS5vYnNlcnZlci5vYnNlcnZlKE9iamVjdC52YWx1ZXMoZW50cnkuZWxlbWVudHMpWzBdLCBvYnNlcnZlck9wdGlvbnMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICghZW50cnkpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBFbGVtZW50PiA9IHsgW3R5cGUubmFtZV06IHZhbHVlIH07XG4gICAgICAgICAgICBhc3NpZ25FbGVtZW50KGhvc3QsIGF0dHJpYnV0ZSwgZWxlbWVudHMpO1xuICAgICAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiBhc3NpZ25FbGVtZW50KGhvc3QsIGF0dHJpYnV0ZSwgZWxlbWVudHMpKTtcbiAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUodmFsdWUsIG9ic2VydmVyT3B0aW9ucyk7XG4gICAgICAgICAgICBzdG9yYWdlLnNldChob3N0LCB7IGVsZW1lbnRzLCBvYnNlcnZlciB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW50cnkuZWxlbWVudHNbdHlwZS5uYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgYXNzaWduRWxlbWVudChob3N0LCBhdHRyaWJ1dGUsIGVudHJ5LmVsZW1lbnRzKTtcbiAgICAgICAgICAgIE9iamVjdC52YWx1ZXMoZW50cnkuZWxlbWVudHMpLmZvckVhY2goKGUpID0+XG4gICAgICAgICAgICAgIGVudHJ5Lm9ic2VydmVyLm9ic2VydmUoZSwgb2JzZXJ2ZXJPcHRpb25zKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBbXG4gICAgICAnYXJpYUNvbnRyb2xzRWxlbWVudHMnLFxuICAgICAgJ2FyaWFEZXNjcmliZWRCeUVsZW1lbnRzJyxcbiAgICAgICdhcmlhRGV0YWlsc0VsZW1lbnRzJyxcbiAgICAgICdhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMnLFxuICAgICAgJ2FyaWFMYWJlbGxlZEJ5RWxlbWVudHMnLFxuICAgICAgJ2FyaWFPd25zRWxlbWVudHMnLFxuICAgIF0pIHtcbiAgICAgIGlmICghKHByb3BlcnR5IGluIHByb3RvdHlwZSkpIHtcbiAgICAgICAgY29uc3Qgc3RvcmFnZSA9IG5ldyBXZWFrTWFwPFxuICAgICAgICAgIEVsZW1lbnQsXG4gICAgICAgICAgeyBlbGVtZW50czogUmVjb3JkPHN0cmluZywgRWxlbWVudFtdPjsgb2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfVxuICAgICAgICA+KCk7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IGBhcmlhLSR7cHJvcGVydHkuc2xpY2UoNCwgLTgpLnRvTG93ZXJDYXNlKCl9YDtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBnZXQodGhpczogRWxlbWVudEludGVybmFscyB8IEVsZW1lbnQpOiByZWFkb25seSBFbGVtZW50W10gfCBudWxsIHtcbiAgICAgICAgICAgIGNvbnN0IGhvc3QgPSByZXNvbHZlSG9zdCh0aGlzKTtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gaG9zdFxuICAgICAgICAgICAgICAuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSlcbiAgICAgICAgICAgICAgPy5zcGxpdCgvXFxzKy8pXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHYsIGksIGEpID0+IGEuaW5kZXhPZih2KSA9PT0gaSlcbiAgICAgICAgICAgICAgLm1hcCgoaWQpID0+IChob3N0LmdldFJvb3ROb2RlKCkgYXMgRG9jdW1lbnQgfCBTaGFkb3dSb290KS5nZXRFbGVtZW50QnlJZD8uKGlkKSlcbiAgICAgICAgICAgICAgLmZpbHRlcigoZSkgPT4gZSBpbnN0YW5jZW9mIEVsZW1lbnQpO1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzPy5sZW5ndGggPyBPYmplY3QuZnJlZXplKGVsZW1lbnRzKSA6IG51bGw7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXQodGhpczogRWxlbWVudEludGVybmFscyB8IEVsZW1lbnQsIHZhbHVlOiBFbGVtZW50W10pIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgKCFBcnJheS5pc0FycmF5KHZhbHVlKSB8fCB2YWx1ZS5zb21lKChlbGVtZW50KSA9PiAhKGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50KSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHRvIHNldCB0aGUgJyR7cHJvcGVydHl9JyBwcm9wZXJ0eSBvbiAnJHt0eXBlLm5hbWV9JzogRmFpbGVkIHRvIGNvbnZlcnQgdmFsdWUgdG8gJ0VsZW1lbnQnLmAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGhvc3QgPSByZXNvbHZlSG9zdCh0aGlzKTtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWU/LmZpbHRlcigodiwgaSwgYSkgPT4gYS5pbmRleE9mKHYpID09PSBpKSA/PyBudWxsO1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSBzdG9yYWdlLmdldChob3N0KTtcbiAgICAgICAgICAgIGVudHJ5Py5vYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBlbnRyeS5lbGVtZW50c1t0eXBlLm5hbWVdO1xuICAgICAgICAgICAgICAgIGlmICghT2JqZWN0LmtleXMoZW50cnkpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgc3RvcmFnZS5kZWxldGUoaG9zdCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIE9iamVjdC52YWx1ZXMoZW50cnkuZWxlbWVudHMpXG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGN1cnJlbnQsIG5leHQpID0+IGN1cnJlbnQuY29uY2F0KG5leHQpKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZSkgPT4gZW50cnkub2JzZXJ2ZXIub2JzZXJ2ZShlLCBvYnNlcnZlck9wdGlvbnMpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWVudHJ5KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBFbGVtZW50W10+ID0geyBbdHlwZS5uYW1lXTogdmFsdWUgfTtcbiAgICAgICAgICAgICAgYXNzaWduRWxlbWVudHMoaG9zdCwgYXR0cmlidXRlLCBlbGVtZW50cyk7XG4gICAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT5cbiAgICAgICAgICAgICAgICBhc3NpZ25FbGVtZW50cyhob3N0LCBhdHRyaWJ1dGUsIGVsZW1lbnRzKSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgoZWxlbWVudCkgPT4gb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50LCBvYnNlcnZlck9wdGlvbnMpKTtcbiAgICAgICAgICAgICAgc3RvcmFnZS5zZXQoaG9zdCwgeyBlbGVtZW50cywgb2JzZXJ2ZXIgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlbnRyeS5lbGVtZW50c1t0eXBlLm5hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICAgIGFzc2lnbkVsZW1lbnRzKGhvc3QsIGF0dHJpYnV0ZSwgZW50cnkuZWxlbWVudHMpO1xuICAgICAgICAgICAgICBPYmplY3QudmFsdWVzKGVudHJ5LmVsZW1lbnRzKVxuICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGN1cnJlbnQsIG5leHQpID0+IGN1cnJlbnQuY29uY2F0KG5leHQpKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChlKSA9PiBlbnRyeS5vYnNlcnZlci5vYnNlcnZlKGUsIG9ic2VydmVyT3B0aW9ucykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNiYkVsZW1lbnRJbnRlcm5hbHNDb25zdHJ1Y3RvciB7XG4gIHJvbGU/OiBFbGVtZW50SW50ZXJuYWxzWydyb2xlJ107XG59XG5cbmV4cG9ydCBkZWNsYXJlIGFic3RyYWN0IGNsYXNzIFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpblR5cGUge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW50ZXJuYWxzOiBFbGVtZW50SW50ZXJuYWxzO1xuICBwcm90ZWN0ZWQgdG9nZ2xlU3RhdGUoc3RhdGU6IHN0cmluZywgZm9yY2U/OiBib29sZWFuKTogdm9pZDtcbn1cblxuLyoqXG4gKiBBcHBlbmRzIHRoZSBnaXZlbiBlbGVtZW50cyB0byB0aGUgZ2l2ZW4gYXJpYSB2YWx1ZSBhbmQgcmV0dXJucyB0aGVcbiAqIGNvbWJpbmVkIHZhbHVlIGFzIGEgbmV3IGFycmF5IG9yIG51bGwsIGlmIGJvdGggdmFsdWVzIHdlcmUgZW1wdHkuXG4gKi9cbmV4cG9ydCBjb25zdCBhcHBlbmRBcmlhRWxlbWVudHMgPSAoXG4gIGFyaWFWYWx1ZTogcmVhZG9ubHkgRWxlbWVudFtdIHwgbnVsbCxcbiAgLi4ubmV3RWxlbWVudHM6IChFbGVtZW50IHwgbnVsbClbXVxuKTogRWxlbWVudFtdIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGVsZW1lbnRzID0gbmV3RWxlbWVudHMuZmlsdGVyKCh2KTogdiBpcyBFbGVtZW50ID0+ICEhdik7XG4gIHJldHVybiBhcmlhVmFsdWU/Lmxlbmd0aCA/IGFyaWFWYWx1ZS5jb25jYXQoZWxlbWVudHMpIDogbmV3RWxlbWVudHMubGVuZ3RoID8gZWxlbWVudHMgOiBudWxsO1xufTtcblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBnaXZlbiBlbGVtZW50cyBmcm9tIHRoZSBnaXZlbiBhcmlhIHZhbHVlIGFuZCByZXR1cm5zXG4gKiB0aGUgcmVtYWluaW5nIGVsZW1lbnRzIGFzIGEgbmV3IGFycmF5IG9yIG51bGwsIGlmIHRoZSByZXN1bHQgaXMgZW1wdHkuXG4gKi9cbmV4cG9ydCBjb25zdCByZW1vdmVBcmlhRWxlbWVudHMgPSAoXG4gIGFyaWFWYWx1ZTogcmVhZG9ubHkgRWxlbWVudFtdIHwgbnVsbCxcbiAgLi4ucmVtb3ZhYmxlRWxlbWVudHM6IChFbGVtZW50IHwgbnVsbClbXVxuKTogRWxlbWVudFtdIHwgbnVsbCA9PiB7XG4gIHJlbW92YWJsZUVsZW1lbnRzID0gcmVtb3ZhYmxlRWxlbWVudHMuZmlsdGVyKCh2KSA9PiAhIXYpO1xuICBjb25zdCBlbGVtZW50cyA9IGFyaWFWYWx1ZT8uZmlsdGVyKCh2KSA9PiAhcmVtb3ZhYmxlRWxlbWVudHMuaW5jbHVkZXModikpID8/IG51bGw7XG4gIHJldHVybiBlbGVtZW50cz8ubGVuZ3RoID8gZWxlbWVudHMgOiBudWxsO1xufTtcblxuLyoqXG4gKiBUaGUgU2JiRWxlbWVudEludGVybmFsc01peGluIGF0dGFjaGVzIEVsZW1lbnRJbnRlcm5hbHMgdG8gdGhlIGVsZW1lbnQgYW5kIHNldHNcbiAqIHRoZSByb2xlLCBpZiBkZWZpbmVkLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiRWxlbWVudEludGVybmFsc01peGluID0gPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRWxlbWVudEludGVybmFsc01peGluVHlwZT4gJiBUICYgU2JiRWxlbWVudEludGVybmFsc0NvbnN0cnVjdG9yID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiRWxlbWVudEludGVybmFsRWxlbWVudFxuICAgIGV4dGVuZHMgc3VwZXJDbGFzc1xuICAgIGltcGxlbWVudHMgUGFydGlhbDxTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW5UeXBlPlxuICB7XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpbnRlcm5hbHM6IEVsZW1lbnRJbnRlcm5hbHMgPSB0aGlzLmF0dGFjaEludGVybmFscygpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBzdXBlciguLi5hcmdzKTtcbiAgICAgIGlmIChDdXN0b21TdGF0ZVNldFBvbHlmaWxsKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLmludGVybmFscywgJ3N0YXRlcycsIHtcbiAgICAgICAgICB2YWx1ZTogbmV3IEN1c3RvbVN0YXRlU2V0UG9seWZpbGwodGhpcyksXG4gICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY29uc3Qgcm9sZSA9ICh0aGlzLmNvbnN0cnVjdG9yIGFzIFNiYkVsZW1lbnRJbnRlcm5hbHNDb25zdHJ1Y3Rvcikucm9sZTtcbiAgICAgIGlmIChyb2xlKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxzLnJvbGUgPSByb2xlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCB0b2dnbGVTdGF0ZShzdGF0ZTogc3RyaW5nLCBmb3JjZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgIGlmIChmb3JjZSB8fCAoZm9yY2UgIT09IGZhbHNlICYmICF0aGlzLmludGVybmFscy5zdGF0ZXMuaGFzKHN0YXRlKSkpIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmFkZChzdGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKHN0YXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYkVsZW1lbnRJbnRlcm5hbEVsZW1lbnQgYXMgdW5rbm93biBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpblR5cGU+ICZcbiAgICBUICZcbiAgICBTYmJFbGVtZW50SW50ZXJuYWxzQ29uc3RydWN0b3I7XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFXQSxNQUFNLHlCQUNKLENBQUMsWUFBWSxDQUFDLElBQUksU0FBUywyQkFBMkIsSUFDbEQsTUFBTSx1QkFDSSxJQUFXO0FBQUEsRUFHbkIsWUFBMkIsT0FBaUI7QUFDMUMsVUFBQTtBQUR5QixTQUFBLFFBQUE7QUFFekIsU0FBSyxNQUFNLGNBQWMsSUFBSTtBQUFBLEVBQUE7QUFBQSxFQUdmLElBQUksT0FBYTtBQUMvQixRQUFJLEtBQUssTUFBTSxhQUFhO0FBQzFCLFdBQUssYUFBYSxPQUFPLElBQUk7QUFBQSxJQUFBO0FBRS9CLFdBQU8sTUFBTSxJQUFJLEtBQUs7QUFBQSxFQUFBO0FBQUEsRUFHUixPQUFPLE9BQWE7QUFDbEMsU0FBSyxhQUFhLE9BQU8sS0FBSztBQUM5QixXQUFPLE1BQU0sT0FBTyxLQUFLO0FBQUEsRUFBQTtBQUFBLEVBR1gsUUFBSztBQUNuQixTQUFLLFFBQVEsQ0FBQyxVQUFVLEtBQUssT0FBTyxLQUFLLENBQUM7QUFBQSxFQUFBO0FBQUEsRUFHckMsZ0JBQWE7QUFDbEIsU0FBSyxRQUFRLENBQUMsVUFBVSxLQUFLLGFBQWEsT0FBTyxJQUFJLENBQUM7QUFBQSxFQUFBO0FBQUEsRUFHaEQsYUFBYSxPQUFlLFNBQWdCO0FBQ2xELFNBQUssTUFBTSxnQkFBZ0IsVUFBVSxLQUFLLElBQUksT0FBTztBQUFBLEVBQUE7QUFFeEQsSUFDRDtBQWNOLElBQUksQ0FBQyxVQUFVO0FBRWIs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
180
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1pbnRlcm5hbHMtbWl4aW4uanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL21peGlucy9lbGVtZW50LWludGVybmFscy1taXhpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1NlcnZlciwgdHlwZSBMaXRFbGVtZW50LCB0eXBlIFJlYWN0aXZlQ29udHJvbGxlciB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB0eXBlIHsgQWJzdHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4vY29uc3RydWN0b3IuanMnO1xuXG4vLyBNb3N0IG9mIG91ciB0YXJnZXQgYnJvd3NlcnMgc3VwcG9ydCB0aGUgOnN0YXRlKCkgcHNldWRvIGNsYXNzLCBidXQgbm90IGFsbCBvZiB0aGVtLlxuLy8gV2UgcGF0Y2ggdGhlIHN0YXRlcyBwcm9wZXJ0eSBvZiB0aGUgZWxlbWVudCBpbnRlcm5hbHMgdG8gdXNlIGF0dHJpYnV0ZXMgaW5zdGVhZCxcbi8vIGlmIDpzdGF0ZSgpIGlzIG5vdCBzdXBwb3J0ZWQuXG4vLyBOb3RlIHRoYXQgZm9yIFNTUiwgdGhlIHN0YXRlcyBwcm9wZXJ0eSBpcyBhIHNpbXBsZSBTZXQsIGltcGxlbWVudGVkIGluIExpdCBTU1IuXG4vLyBUT0RPOiBSZW1vdmUgaW4gMjAyNi5cbnR5cGUgQ3VzdG9tU3RhdGVTZXRJbnRlcmZhY2UgPSBDdXN0b21TdGF0ZVNldDtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmNvbnN0IEN1c3RvbVN0YXRlU2V0UG9seWZpbGw6IChuZXcgKGhvc3Q6IExpdEVsZW1lbnQpID0+IEN1c3RvbVN0YXRlU2V0SW50ZXJmYWNlKSB8IG51bGwgPVxuICAhaXNTZXJ2ZXIgJiYgIUNTUy5zdXBwb3J0cygnc2VsZWN0b3IoOnN0YXRlKGxvYWRpbmcpKScpXG4gICAgPyBjbGFzcyBDdXN0b21TdGF0ZVNldFxuICAgICAgICBleHRlbmRzIFNldDxzdHJpbmc+XG4gICAgICAgIGltcGxlbWVudHMgQ3VzdG9tU3RhdGVTZXRJbnRlcmZhY2UsIFJlYWN0aXZlQ29udHJvbGxlclxuICAgICAge1xuICAgICAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdDogTGl0RWxlbWVudCkge1xuICAgICAgICAgIHN1cGVyKCk7XG4gICAgICAgICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyKHRoaXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIG92ZXJyaWRlIGFkZChzdGF0ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgICAgaWYgKHRoaXMuX2hvc3QuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3RvZ2dsZVN0YXRlKHN0YXRlLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHN1cGVyLmFkZChzdGF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgZGVsZXRlKHN0YXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgICB0aGlzLl90b2dnbGVTdGF0ZShzdGF0ZSwgZmFsc2UpO1xuICAgICAgICAgIHJldHVybiBzdXBlci5kZWxldGUoc3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIG92ZXJyaWRlIGNsZWFyKCk6IHZvaWQge1xuICAgICAgICAgIHRoaXMuZm9yRWFjaCgoc3RhdGUpID0+IHRoaXMuZGVsZXRlKHN0YXRlKSk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgaG9zdENvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICAgICAgICB0aGlzLmZvckVhY2goKHN0YXRlKSA9PiB0aGlzLl90b2dnbGVTdGF0ZShzdGF0ZSwgdHJ1ZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJpdmF0ZSBfdG9nZ2xlU3RhdGUoc3RhdGU6IHN0cmluZywgZW5hYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICAgIHRoaXMuX2hvc3QudG9nZ2xlQXR0cmlidXRlKGBzdGF0ZS0tJHtzdGF0ZX1gLCBlbmFibGVkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIDogbnVsbDtcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgQVJJQU1peGluIHtcbiAgICBhcmlhQWN0aXZlRGVzY2VuZGFudEVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsO1xuICAgIGFyaWFDb250cm9sc0VsZW1lbnRzOiByZWFkb25seSBFbGVtZW50W10gfCBudWxsO1xuICAgIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzOiByZWFkb25seSBFbGVtZW50W10gfCBudWxsO1xuICAgIGFyaWFEZXRhaWxzRWxlbWVudHM6IHJlYWRvbmx5IEVsZW1lbnRbXSB8IG51bGw7XG4gICAgYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzOiByZWFkb25seSBFbGVtZW50W10gfCBudWxsO1xuICAgIGFyaWFMYWJlbGxlZEJ5RWxlbWVudHM6IHJlYWRvbmx5IEVsZW1lbnRbXSB8IG51bGw7XG4gICAgYXJpYU93bnNFbGVtZW50czogcmVhZG9ubHkgRWxlbWVudFtdIHwgbnVsbDtcbiAgfVxufVxuXG5pZiAoIWlzU2VydmVyKSB7XG4gIC8vIFRoaXMgaXMgYSBwb2x5ZmlsbCBmb3IgdGhlIGFyaWEgZWxlbWVudHMgcHJvcGVydGllcyBvbiBFbGVtZW50SW50ZXJuYWxzIGFuZCBFbGVtZW50LlxuICBsZXQgbmV4dElkID0gMDtcbiAgY29uc3QgcmVzb2x2ZUhvc3QgPSAob3JpZ2luOiBFbGVtZW50SW50ZXJuYWxzIHwgRWxlbWVudCk6IEVsZW1lbnQgPT5cbiAgICBvcmlnaW4uc2hhZG93Um9vdD8uaG9zdCA/P1xuICAgIChvcmlnaW4gaW5zdGFuY2VvZiBFbGVtZW50XG4gICAgICA/IG9yaWdpblxuICAgICAgOiAoKCkgPT4ge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHJlc29sdmUgcmVsYXRlZCBlbGVtZW50ISBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uJyk7XG4gICAgICAgIH0pKCkpO1xuICBjb25zdCBvYnNlcnZlck9wdGlvbnM6IE11dGF0aW9uT2JzZXJ2ZXJJbml0ID0geyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsnaWQnXSB9O1xuICBjb25zdCBhc3NpZ25FbGVtZW50ID0gKFxuICAgIGhvc3Q6IEVsZW1lbnQsXG4gICAgYXR0cmlidXRlOiBzdHJpbmcsXG4gICAgZWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEVsZW1lbnQ+LFxuICApOiB2b2lkID0+IHtcbiAgICAvLyBJbiBjYXNlIGJvdGggRWxlbWVudCBhbmQgRWxlbWVudEludGVybmFscyBwcm9wZXJ0aWVzIGFyZSBzZXQsXG4gICAgLy8gdGhlIGVsZW1lbnQgcmVmZXJlbmNlIGZyb20gRWxlbWVudCBoYXMgcHJpb3JpdHkuXG4gICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IGVsZW1lbnRzW0VsZW1lbnQubmFtZV0gPz8gZWxlbWVudHNbRWxlbWVudEludGVybmFscy5uYW1lXTtcbiAgICBob3N0LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIChhY3RpdmVFbGVtZW50LmlkIHx8PSBgYXJpYS1yZWYtJHtuZXh0SWQrK31gKSk7XG4gIH07XG4gIGNvbnN0IGFzc2lnbkVsZW1lbnRzID0gKFxuICAgIGhvc3Q6IEVsZW1lbnQsXG4gICAgYXR0cmlidXRlOiBzdHJpbmcsXG4gICAgZWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEVsZW1lbnRbXT4sXG4gICk6IHZvaWQgPT4ge1xuICAgIC8vIEluIGNhc2UgYm90aCBFbGVtZW50IGFuZCBFbGVtZW50SW50ZXJuYWxzIHByb3BlcnRpZXMgYXJlIHNldCxcbiAgICAvLyB3ZSBjb21iaW5lIHRoZSBlbGVtZW50IHJlZmVyZW5jZXMuXG4gICAgaG9zdC5zZXRBdHRyaWJ1dGUoXG4gICAgICBhdHRyaWJ1dGUsXG4gICAgICBPYmplY3QudmFsdWVzKGVsZW1lbnRzKVxuICAgICAgICAucmVkdWNlKChjdXJyZW50LCBuZXh0KSA9PiBjdXJyZW50LmNvbmNhdChuZXh0KSlcbiAgICAgICAgLmZpbHRlcigodiwgaSwgYSkgPT4gYS5pbmRleE9mKHYpID09PSBpKVxuICAgICAgICAubWFwKChlKSA9PiBlLmlkIHx8IChlLmlkID0gYGFyaWEtcmVmLSR7bmV4dElkKyt9YCkpXG4gICAgICAgIC5qb2luKCcgJyksXG4gICAgKTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IHR5cGUgb2YgW0VsZW1lbnRJbnRlcm5hbHMsIEVsZW1lbnRdKSB7XG4gICAgY29uc3QgcHJvdG90eXBlID0gdHlwZS5wcm90b3R5cGU7XG4gICAgaWYgKCEoJ2FyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCcgaW4gcHJvdG90eXBlKSkge1xuICAgICAgY29uc3QgYXR0cmlidXRlID0gJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCc7XG4gICAgICBjb25zdCBzdG9yYWdlID0gbmV3IFdlYWtNYXA8XG4gICAgICAgIEVsZW1lbnQsXG4gICAgICAgIHsgZWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEVsZW1lbnQ+OyBvYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciB9XG4gICAgICA+KCk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCAnYXJpYUFjdGl2ZURlc2NlbmRhbnRFbGVtZW50Jywge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldCh0aGlzOiBFbGVtZW50SW50ZXJuYWxzIHwgRWxlbWVudCk6IEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgICBjb25zdCBob3N0ID0gcmVzb2x2ZUhvc3QodGhpcyk7XG4gICAgICAgICAgY29uc3QgaWQgPSBob3N0LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpPy5zcGxpdCgvXFxzKy8pWzBdID8/IG51bGw7XG4gICAgICAgICAgcmV0dXJuIGlkXG4gICAgICAgICAgICA/ICgoaG9zdC5nZXRSb290Tm9kZSgpIGFzIERvY3VtZW50IHwgU2hhZG93Um9vdCkuZ2V0RWxlbWVudEJ5SWQ/LihpZCkgPz8gbnVsbClcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0KHRoaXM6IEVsZW1lbnRJbnRlcm5hbHMgfCBFbGVtZW50LCB2YWx1ZTogRWxlbWVudCB8IG51bGwpIHtcbiAgICAgICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICAgICBgRmFpbGVkIHRvIHNldCB0aGUgJ2FyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCcgcHJvcGVydHkgb24gJyR7dHlwZS5uYW1lfSc6IEZhaWxlZCB0byBjb252ZXJ0IHZhbHVlIHRvICdFbGVtZW50Jy5gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBob3N0ID0gcmVzb2x2ZUhvc3QodGhpcyk7XG4gICAgICAgICAgY29uc3QgZW50cnkgPSBzdG9yYWdlLmdldChob3N0KTtcbiAgICAgICAgICBlbnRyeT8ub2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgICBkZWxldGUgZW50cnkuZWxlbWVudHNbdHlwZS5uYW1lXTtcbiAgICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhlbnRyeSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc3RvcmFnZS5kZWxldGUoaG9zdCk7XG4gICAgICAgICAgICAgICAgaG9zdC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbnRyeS5vYnNlcnZlci5vYnNlcnZlKE9iamVjdC52YWx1ZXMoZW50cnkuZWxlbWVudHMpWzBdLCBvYnNlcnZlck9wdGlvbnMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICghZW50cnkpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBFbGVtZW50PiA9IHsgW3R5cGUubmFtZV06IHZhbHVlIH07XG4gICAgICAgICAgICBhc3NpZ25FbGVtZW50KGhvc3QsIGF0dHJpYnV0ZSwgZWxlbWVudHMpO1xuICAgICAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiBhc3NpZ25FbGVtZW50KGhvc3QsIGF0dHJpYnV0ZSwgZWxlbWVudHMpKTtcbiAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUodmFsdWUsIG9ic2VydmVyT3B0aW9ucyk7XG4gICAgICAgICAgICBzdG9yYWdlLnNldChob3N0LCB7IGVsZW1lbnRzLCBvYnNlcnZlciB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW50cnkuZWxlbWVudHNbdHlwZS5uYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgYXNzaWduRWxlbWVudChob3N0LCBhdHRyaWJ1dGUsIGVudHJ5LmVsZW1lbnRzKTtcbiAgICAgICAgICAgIE9iamVjdC52YWx1ZXMoZW50cnkuZWxlbWVudHMpLmZvckVhY2goKGUpID0+XG4gICAgICAgICAgICAgIGVudHJ5Lm9ic2VydmVyLm9ic2VydmUoZSwgb2JzZXJ2ZXJPcHRpb25zKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBbXG4gICAgICAnYXJpYUNvbnRyb2xzRWxlbWVudHMnLFxuICAgICAgJ2FyaWFEZXNjcmliZWRCeUVsZW1lbnRzJyxcbiAgICAgICdhcmlhRGV0YWlsc0VsZW1lbnRzJyxcbiAgICAgICdhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMnLFxuICAgICAgJ2FyaWFMYWJlbGxlZEJ5RWxlbWVudHMnLFxuICAgICAgJ2FyaWFPd25zRWxlbWVudHMnLFxuICAgIF0pIHtcbiAgICAgIGlmICghKHByb3BlcnR5IGluIHByb3RvdHlwZSkpIHtcbiAgICAgICAgY29uc3Qgc3RvcmFnZSA9IG5ldyBXZWFrTWFwPFxuICAgICAgICAgIEVsZW1lbnQsXG4gICAgICAgICAgeyBlbGVtZW50czogUmVjb3JkPHN0cmluZywgRWxlbWVudFtdPjsgb2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfVxuICAgICAgICA+KCk7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IGBhcmlhLSR7cHJvcGVydHkuc2xpY2UoNCwgLTgpLnRvTG93ZXJDYXNlKCl9YDtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBnZXQodGhpczogRWxlbWVudEludGVybmFscyB8IEVsZW1lbnQpOiByZWFkb25seSBFbGVtZW50W10gfCBudWxsIHtcbiAgICAgICAgICAgIGNvbnN0IGhvc3QgPSByZXNvbHZlSG9zdCh0aGlzKTtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gaG9zdFxuICAgICAgICAgICAgICAuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSlcbiAgICAgICAgICAgICAgPy5zcGxpdCgvXFxzKy8pXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHYsIGksIGEpID0+IGEuaW5kZXhPZih2KSA9PT0gaSlcbiAgICAgICAgICAgICAgLm1hcCgoaWQpID0+IChob3N0LmdldFJvb3ROb2RlKCkgYXMgRG9jdW1lbnQgfCBTaGFkb3dSb290KS5nZXRFbGVtZW50QnlJZD8uKGlkKSlcbiAgICAgICAgICAgICAgLmZpbHRlcigoZSkgPT4gZSBpbnN0YW5jZW9mIEVsZW1lbnQpO1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzPy5sZW5ndGggPyBPYmplY3QuZnJlZXplKGVsZW1lbnRzKSA6IG51bGw7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXQodGhpczogRWxlbWVudEludGVybmFscyB8IEVsZW1lbnQsIHZhbHVlOiBFbGVtZW50W10pIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgKCFBcnJheS5pc0FycmF5KHZhbHVlKSB8fCB2YWx1ZS5zb21lKChlbGVtZW50KSA9PiAhKGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50KSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHRvIHNldCB0aGUgJyR7cHJvcGVydHl9JyBwcm9wZXJ0eSBvbiAnJHt0eXBlLm5hbWV9JzogRmFpbGVkIHRvIGNvbnZlcnQgdmFsdWUgdG8gJ0VsZW1lbnQnLmAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGhvc3QgPSByZXNvbHZlSG9zdCh0aGlzKTtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWU/LmZpbHRlcigodiwgaSwgYSkgPT4gYS5pbmRleE9mKHYpID09PSBpKSA/PyBudWxsO1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSBzdG9yYWdlLmdldChob3N0KTtcbiAgICAgICAgICAgIGVudHJ5Py5vYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBlbnRyeS5lbGVtZW50c1t0eXBlLm5hbWVdO1xuICAgICAgICAgICAgICAgIGlmICghT2JqZWN0LmtleXMoZW50cnkpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgc3RvcmFnZS5kZWxldGUoaG9zdCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIE9iamVjdC52YWx1ZXMoZW50cnkuZWxlbWVudHMpXG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGN1cnJlbnQsIG5leHQpID0+IGN1cnJlbnQuY29uY2F0KG5leHQpKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZSkgPT4gZW50cnkub2JzZXJ2ZXIub2JzZXJ2ZShlLCBvYnNlcnZlck9wdGlvbnMpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWVudHJ5KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBFbGVtZW50W10+ID0geyBbdHlwZS5uYW1lXTogdmFsdWUgfTtcbiAgICAgICAgICAgICAgYXNzaWduRWxlbWVudHMoaG9zdCwgYXR0cmlidXRlLCBlbGVtZW50cyk7XG4gICAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT5cbiAgICAgICAgICAgICAgICBhc3NpZ25FbGVtZW50cyhob3N0LCBhdHRyaWJ1dGUsIGVsZW1lbnRzKSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgoZWxlbWVudCkgPT4gb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50LCBvYnNlcnZlck9wdGlvbnMpKTtcbiAgICAgICAgICAgICAgc3RvcmFnZS5zZXQoaG9zdCwgeyBlbGVtZW50cywgb2JzZXJ2ZXIgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlbnRyeS5lbGVtZW50c1t0eXBlLm5hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICAgIGFzc2lnbkVsZW1lbnRzKGhvc3QsIGF0dHJpYnV0ZSwgZW50cnkuZWxlbWVudHMpO1xuICAgICAgICAgICAgICBPYmplY3QudmFsdWVzKGVudHJ5LmVsZW1lbnRzKVxuICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGN1cnJlbnQsIG5leHQpID0+IGN1cnJlbnQuY29uY2F0KG5leHQpKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChlKSA9PiBlbnRyeS5vYnNlcnZlci5vYnNlcnZlKGUsIG9ic2VydmVyT3B0aW9ucykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNiYkVsZW1lbnRJbnRlcm5hbHNDb25zdHJ1Y3RvciB7XG4gIHJvbGU/OiBFbGVtZW50SW50ZXJuYWxzWydyb2xlJ107XG59XG5cbmV4cG9ydCBkZWNsYXJlIGFic3RyYWN0IGNsYXNzIFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpblR5cGUge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW50ZXJuYWxzOiBFbGVtZW50SW50ZXJuYWxzO1xuICBwcm90ZWN0ZWQgdG9nZ2xlU3RhdGUoc3RhdGU6IHN0cmluZywgZm9yY2U/OiBib29sZWFuKTogdm9pZDtcbn1cblxuLyoqXG4gKiBBcHBlbmRzIHRoZSBnaXZlbiBlbGVtZW50cyB0byB0aGUgZ2l2ZW4gYXJpYSB2YWx1ZSBhbmQgcmV0dXJucyB0aGVcbiAqIGNvbWJpbmVkIHZhbHVlIGFzIGEgbmV3IGFycmF5IG9yIG51bGwsIGlmIGJvdGggdmFsdWVzIHdlcmUgZW1wdHkuXG4gKi9cbmV4cG9ydCBjb25zdCBhcHBlbmRBcmlhRWxlbWVudHMgPSAoXG4gIGFyaWFWYWx1ZTogcmVhZG9ubHkgRWxlbWVudFtdIHwgbnVsbCxcbiAgLi4ubmV3RWxlbWVudHM6IChFbGVtZW50IHwgbnVsbClbXVxuKTogRWxlbWVudFtdIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGVsZW1lbnRzID0gbmV3RWxlbWVudHMuZmlsdGVyKCh2KTogdiBpcyBFbGVtZW50ID0+ICEhdik7XG4gIHJldHVybiBhcmlhVmFsdWU/Lmxlbmd0aCA/IGFyaWFWYWx1ZS5jb25jYXQoZWxlbWVudHMpIDogbmV3RWxlbWVudHMubGVuZ3RoID8gZWxlbWVudHMgOiBudWxsO1xufTtcblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBnaXZlbiBlbGVtZW50cyBmcm9tIHRoZSBnaXZlbiBhcmlhIHZhbHVlIGFuZCByZXR1cm5zXG4gKiB0aGUgcmVtYWluaW5nIGVsZW1lbnRzIGFzIGEgbmV3IGFycmF5IG9yIG51bGwsIGlmIHRoZSByZXN1bHQgaXMgZW1wdHkuXG4gKi9cbmV4cG9ydCBjb25zdCByZW1vdmVBcmlhRWxlbWVudHMgPSAoXG4gIGFyaWFWYWx1ZTogcmVhZG9ubHkgRWxlbWVudFtdIHwgbnVsbCxcbiAgLi4ucmVtb3ZhYmxlRWxlbWVudHM6IChFbGVtZW50IHwgbnVsbClbXVxuKTogRWxlbWVudFtdIHwgbnVsbCA9PiB7XG4gIHJlbW92YWJsZUVsZW1lbnRzID0gcmVtb3ZhYmxlRWxlbWVudHMuZmlsdGVyKCh2KSA9PiAhIXYpO1xuICBjb25zdCBlbGVtZW50cyA9IGFyaWFWYWx1ZT8uZmlsdGVyKCh2KSA9PiAhcmVtb3ZhYmxlRWxlbWVudHMuaW5jbHVkZXModikpID8/IG51bGw7XG4gIHJldHVybiBlbGVtZW50cz8ubGVuZ3RoID8gZWxlbWVudHMgOiBudWxsO1xufTtcblxuLyoqXG4gKiBUaGUgU2JiRWxlbWVudEludGVybmFsc01peGluIGF0dGFjaGVzIEVsZW1lbnRJbnRlcm5hbHMgdG8gdGhlIGVsZW1lbnQgYW5kIHNldHNcbiAqIHRoZSByb2xlLCBpZiBkZWZpbmVkLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiRWxlbWVudEludGVybmFsc01peGluID0gPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRWxlbWVudEludGVybmFsc01peGluVHlwZT4gJiBUICYgU2JiRWxlbWVudEludGVybmFsc0NvbnN0cnVjdG9yID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiRWxlbWVudEludGVybmFsRWxlbWVudFxuICAgIGV4dGVuZHMgc3VwZXJDbGFzc1xuICAgIGltcGxlbWVudHMgUGFydGlhbDxTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW5UeXBlPlxuICB7XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpbnRlcm5hbHM6IEVsZW1lbnRJbnRlcm5hbHMgPSB0aGlzLmF0dGFjaEludGVybmFscygpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBzdXBlciguLi5hcmdzKTtcbiAgICAgIGlmIChDdXN0b21TdGF0ZVNldFBvbHlmaWxsKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLmludGVybmFscywgJ3N0YXRlcycsIHtcbiAgICAgICAgICB2YWx1ZTogbmV3IEN1c3RvbVN0YXRlU2V0UG9seWZpbGwodGhpcyksXG4gICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY29uc3Qgcm9sZSA9ICh0aGlzLmNvbnN0cnVjdG9yIGFzIFNiYkVsZW1lbnRJbnRlcm5hbHNDb25zdHJ1Y3Rvcikucm9sZTtcbiAgICAgIGlmIChyb2xlKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxzLnJvbGUgPSByb2xlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCB0b2dnbGVTdGF0ZShzdGF0ZTogc3RyaW5nLCBmb3JjZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgIGlmIChmb3JjZSB8fCAoZm9yY2UgIT09IGZhbHNlICYmICF0aGlzLmludGVybmFscy5zdGF0ZXMuaGFzKHN0YXRlKSkpIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmFkZChzdGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKHN0YXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYkVsZW1lbnRJbnRlcm5hbEVsZW1lbnQgYXMgdW5rbm93biBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpblR5cGU+ICZcbiAgICBUICZcbiAgICBTYmJFbGVtZW50SW50ZXJuYWxzQ29uc3RydWN0b3I7XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFXQSxNQUFNLHlCQUNKLENBQUMsWUFBWSxDQUFDLElBQUksU0FBUywyQkFBMkIsSUFDbEQsTUFBTSx1QkFDSSxJQUFXO0FBQUEsRUFHbkIsWUFBMkIsT0FBaUI7QUFDMUMsVUFBQTtBQUR5QixTQUFBLFFBQUE7QUFFekIsU0FBSyxNQUFNLGNBQWMsSUFBSTtBQUFBLEVBQy9CO0FBQUEsRUFFZ0IsSUFBSSxPQUFhO0FBQy9CLFFBQUksS0FBSyxNQUFNLGFBQWE7QUFDMUIsV0FBSyxhQUFhLE9BQU8sSUFBSTtBQUFBLElBQy9CO0FBQ0EsV0FBTyxNQUFNLElBQUksS0FBSztBQUFBLEVBQ3hCO0FBQUEsRUFFZ0IsT0FBTyxPQUFhO0FBQ2xDLFNBQUssYUFBYSxPQUFPLEtBQUs7QUFDOUIsV0FBTyxNQUFNLE9BQU8sS0FBSztBQUFBLEVBQzNCO0FBQUEsRUFFZ0IsUUFBSztBQUNuQixTQUFLLFFBQVEsQ0FBQyxVQUFVLEtBQUssT0FBTyxLQUFLLENBQUM7QUFBQSxFQUM1QztBQUFBLEVBRU8sZ0JBQWE7QUFDbEIsU0FBSyxRQUFRLENBQUMsVUFBVSxLQUFLLGFBQWEsT0FBTyxJQUFJLENBQUM7QUFBQSxFQUN4RDtBQUFBLEVBRVEsYUFBYSxPQUFlLFNBQWdCO0FBQ2xELFNBQUssTUFBTSxnQkFBZ0IsVUFBVSxLQUFLLElBQUksT0FBTztBQUFBLEVBQ3ZEO0FBQ0QsSUFDRDtBQWNOLElBQUksQ0FBQyxVQUFV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
@@ -144,4 +144,4 @@ const SbbFormAssociatedCheckboxMixin = (superClass) => {
144
144
  export {
145
145
  SbbFormAssociatedCheckboxMixin
146
146
  };
147
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1hc3NvY2lhdGVkLWNoZWNrYm94LW1peGluLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9taXhpbnMvZm9ybS1hc3NvY2lhdGVkLWNoZWNrYm94LW1peGluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZmF1bHRDb252ZXJ0ZXIsIHR5cGUgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHByZXZlbnRTY3JvbGxPblNwYWNlYmFyUHJlc3MgfSBmcm9tICcuLi9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBpMThuQ2hlY2tib3hSZXF1aXJlZCB9IGZyb20gJy4uL2kxOG4uanMnO1xuXG5pbXBvcnQgdHlwZSB7IEFic3RyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cnVjdG9yLmpzJztcbmltcG9ydCB7IFNiYkRpc2FibGVkTWl4aW4gfSBmcm9tICcuL2Rpc2FibGVkLW1peGluLmpzJztcbmltcG9ydCB7IFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbiB9IGZyb20gJy4vZWxlbWVudC1pbnRlcm5hbHMtbWl4aW4uanMnO1xuaW1wb3J0IHtcbiAgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbixcbiAgdHlwZSBGb3JtUmVzdG9yZVJlYXNvbixcbiAgdHlwZSBGb3JtUmVzdG9yZVN0YXRlLFxufSBmcm9tICcuL2Zvcm0tYXNzb2NpYXRlZC1taXhpbi5qcyc7XG5pbXBvcnQgeyBTYmJSZXF1aXJlZE1peGluIH0gZnJvbSAnLi9yZXF1aXJlZC1taXhpbi5qcyc7XG5cbnR5cGUgQ2hlY2tlZFNldHRlclZhbHVlID0geyB2YWx1ZTogYm9vbGVhbjsgYXR0cmlidXRlOiBib29sZWFuIH07XG5cbmV4cG9ydCBkZWNsYXJlIGFic3RyYWN0IGNsYXNzIFNiYkZvcm1Bc3NvY2lhdGVkQ2hlY2tib3hNaXhpblR5cGUgZXh0ZW5kcyBTYmJEaXNhYmxlZE1peGluKFxuICBTYmJSZXF1aXJlZE1peGluKFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4oU2JiRWxlbWVudEludGVybmFsc01peGluKExpdEVsZW1lbnQpKSksXG4pIHtcbiAgcHVibGljIGFjY2Vzc29yIGNoZWNrZWQ6IGJvb2xlYW47XG5cbiAgcHVibGljIGZvcm1SZXNldENhbGxiYWNrKCk6IHZvaWQ7XG4gIHB1YmxpYyBmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2soc3RhdGU6IEZvcm1SZXN0b3JlU3RhdGUgfCBudWxsLCByZWFzb246IEZvcm1SZXN0b3JlUmVhc29uKTogdm9pZDtcblxuICBwcm90ZWN0ZWQgaXNSZXF1aXJlZEV4dGVybmFsbHkoKTogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHdpdGhVc2VySW50ZXJhY3Rpb24/KCk6IHZvaWQ7XG4gIHByb3RlY3RlZCB1cGRhdGVGb3JtVmFsdWUoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgRm9ybUFzc29jaWF0ZWRDaGVja2JveE1peGluIGVuYWJsZXMgbmF0aXZlIGZvcm0gc3VwcG9ydCBmb3IgY2hlY2tib3ggY29udHJvbHMuXG4gKlxuICogSW5oZXJpdGVkIGNsYXNzZXMgTVVTVCBpbXBsZW1lbnQgdGhlIGFyaWFDaGVja2VkIHN0YXRlIChFbGVtZW50SW50ZXJuYWxzKSB0aGVtc2VsdmVzLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiRm9ybUFzc29jaWF0ZWRDaGVja2JveE1peGluID0gPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRm9ybUFzc29jaWF0ZWRDaGVja2JveE1peGluVHlwZT4gJiBUID0+IHtcbiAgQGhvc3RBdHRyaWJ1dGVzKHtcbiAgICB0YWJpbmRleDogJzAnLFxuICB9KVxuICBhYnN0cmFjdCBjbGFzcyBTYmJGb3JtQXNzb2NpYXRlZENoZWNrYm94RWxlbWVudFxuICAgIGV4dGVuZHMgU2JiRGlzYWJsZWRNaXhpbihcbiAgICAgIFNiYlJlcXVpcmVkTWl4aW4oU2JiRm9ybUFzc29jaWF0ZWRNaXhpbihTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4oc3VwZXJDbGFzcykpKSxcbiAgICApXG4gICAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkZvcm1Bc3NvY2lhdGVkQ2hlY2tib3hNaXhpblR5cGU+XG4gIHtcbiAgICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IHJvbGUgPSAnY2hlY2tib3gnO1xuXG4gICAgcHJpdmF0ZSBfYXR0cmlidXRlTXV0YXRpb25CbG9ja2VkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfbGFuZ3VhZ2VDb250cm9sbGVyID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjaGVja2JveCBpcyBjaGVja2VkLiAqL1xuICAgIEBwcm9wZXJ0eSh7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgY29udmVydGVyOiB7XG4gICAgICAgIC4uLmRlZmF1bHRDb252ZXJ0ZXIsXG4gICAgICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbmZvcm1hdGlvbiB0byB0aGUgc2V0dGVyIHNvIHRoYXQgd2Uga25vdyBpdCB3YXMgY2FsbGVkIGJ5IGF0dHJpYnV0ZSBjaGFuZ2UuXG4gICAgICAgIGZyb21BdHRyaWJ1dGU6ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCwgdHlwZT86IHVua25vd24pOiBDaGVja2VkU2V0dGVyVmFsdWUgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGRlZmF1bHRDb252ZXJ0ZXIuZnJvbUF0dHJpYnV0ZT8uKHZhbHVlLCB0eXBlKTtcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogcmVzdWx0LCBhdHRyaWJ1dGU6IHRydWUgfSBhcyBDaGVja2VkU2V0dGVyVmFsdWU7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pXG4gICAgcHVibGljIHNldCBjaGVja2VkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVTZXR0ZXIgPVxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gKHZhbHVlIGFzIHVua25vd24gYXMgQ2hlY2tlZFNldHRlclZhbHVlKS5hdHRyaWJ1dGUgOiBmYWxzZTtcbiAgICAgIGlmIChhdHRyaWJ1dGVTZXR0ZXIpIHtcbiAgICAgICAgdmFsdWUgPSAodmFsdWUgYXMgdW5rbm93biBhcyBDaGVja2VkU2V0dGVyVmFsdWUpLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICAvLyBBcyBzb29uIGFzIG11dGF0aW9uIHdhcyBkb25lIG5vdCBieSBzZXR0aW5nIGF0dHJpYnV0ZSxcbiAgICAgIC8vIHdlIG5lZWQgdG8gYmxvY2sgc3luY2luZyBhdHRyaWJ1dGUuXG4gICAgICBpZiAodGhpcy5oYXNVcGRhdGVkICYmICFhdHRyaWJ1dGVTZXR0ZXIpIHtcbiAgICAgICAgdGhpcy5fYXR0cmlidXRlTXV0YXRpb25CbG9ja2VkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2NoZWNrZWQgPSBCb29sZWFuKHZhbHVlKTtcbiAgICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlKCk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLl9jaGVja2VkO1xuICAgIH1cbiAgICBwcml2YXRlIF9jaGVja2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBGb3JtIHR5cGUgb2YgZWxlbWVudC5cbiAgICAgKiBAZGVmYXVsdCAnY2hlY2tib3gnXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gJ2NoZWNrYm94JztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2NsaWNrJywgdGhpcy5faGFuZGxlVXNlckludGVyYWN0aW9uKTtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdrZXlkb3duJywgcHJldmVudFNjcm9sbE9uU3BhY2ViYXJQcmVzcyk7XG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Ligna2V5dXAnLCB0aGlzLl9oYW5kbGVLZXlib2FyZEludGVyYWN0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKFxuICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgb2xkOiBzdHJpbmcgfCBudWxsLFxuICAgICAgdmFsdWU6IHN0cmluZyB8IG51bGwsXG4gICAgKTogdm9pZCB7XG4gICAgICAvLyBBdHRyaWJ1dGUgc2hvdWxkIG5vdCBiZSBpbnRlcnByZXRlZCBhZnRlciBwcm9ncmFtbWF0aWMgb3IgbWFudWFsIHN0YXRlIGNoYW5nZS5cbiAgICAgIGlmIChuYW1lICE9PSAnY2hlY2tlZCcgfHwgIXRoaXMuX2F0dHJpYnV0ZU11dGF0aW9uQmxvY2tlZCkge1xuICAgICAgICBzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sobmFtZSwgb2xkLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBmb3JtIGlzIGJlaW5nIHJlc2V0LlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGZvcm1SZXNldENhbGxiYWNrKCk6IHZvaWQge1xuICAgICAgdGhpcy5jaGVja2VkID0gdGhpcy5oYXNBdHRyaWJ1dGUoJ2NoZWNrZWQnKTtcbiAgICAgIHRoaXMuX2F0dHJpYnV0ZU11dGF0aW9uQmxvY2tlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBDYWxsZWQgd2hlbiB0aGUgYnJvd3NlciBpcyB0cnlpbmcgdG8gcmVzdG9yZSBlbGVtZW504oCZcyBzdGF0ZSB0byBzdGF0ZSBpbiB3aGljaCBjYXNlXG4gICAgICogIHJlYXNvbiBpcyBcInJlc3RvcmVcIiwgb3Igd2hlbiB0aGUgYnJvd3NlciBpcyB0cnlpbmcgdG8gZnVsZmlsbCBhdXRvZmlsbCBvbiBiZWhhbGYgb2ZcbiAgICAgKiAgdXNlciBpbiB3aGljaCBjYXNlIHJlYXNvbiBpcyBcImF1dG9jb21wbGV0ZVwiLlxuICAgICAqICBJbiB0aGUgY2FzZSBvZiBcInJlc3RvcmVcIiwgc3RhdGUgaXMgYSBzdHJpbmcsIEZpbGUsIG9yIEZvcm1EYXRhIG9iamVjdFxuICAgICAqICBwcmV2aW91c2x5IHNldCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIHNldEZvcm1WYWx1ZS5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2soXG4gICAgICBzdGF0ZTogRm9ybVJlc3RvcmVTdGF0ZSB8IG51bGwsXG4gICAgICBfcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbixcbiAgICApOiB2b2lkIHtcbiAgICAgIGlmIChzdGF0ZSkge1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSBzdGF0ZSA9PT0gJ3RydWUnO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZGl0aW9uYWwgbG9naWMgd2hpY2ggaXMgYmVpbmcgZXhlY3V0ZWQgd2hlbiB1c2VyXG4gICAgICogaW50ZXJhY3Rpb24gaGFwcGVucyBhbmQgc3RhdGUgaXMgbm90IGRpc2FibGVkLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCB3aXRoVXNlckludGVyYWN0aW9uPygpOiB2b2lkO1xuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZUZvcm1WYWx1ZSgpOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLmNoZWNrZWQpIHtcbiAgICAgICAgc3VwZXIudXBkYXRlRm9ybVZhbHVlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmludGVybmFscy5zZXRGb3JtVmFsdWUobnVsbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGZvcm1TdGF0ZSgpOiBGb3JtUmVzdG9yZVN0YXRlIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmNoZWNrZWR9YDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2hvdWxkVmFsaWRhdGUobmFtZTogUHJvcGVydHlLZXkgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBzdXBlci5zaG91bGRWYWxpZGF0ZShuYW1lKSB8fCBuYW1lID09PSAnY2hlY2tlZCcgfHwgbmFtZSA9PT0gJ3JlcXVpcmVkJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdmFsaWRhdGUoKTogdm9pZCB7XG4gICAgICBzdXBlci52YWxpZGF0ZSgpO1xuICAgICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIXRoaXMuY2hlY2tlZCkge1xuICAgICAgICB0aGlzLnNldFZhbGlkaXR5RmxhZyhcbiAgICAgICAgICAndmFsdWVNaXNzaW5nJyxcbiAgICAgICAgICBpMThuQ2hlY2tib3hSZXF1aXJlZFt0aGlzLl9sYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudF0sXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbW92ZVZhbGlkaXR5RmxhZygndmFsdWVNaXNzaW5nJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0cmlnZ2VyZWQgb24ga2V5Ym9hcmQgdXNlciBpbnRlcmFjdGlvbiB3aXRoIGNoZWNrYm94LiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZUtleWJvYXJkSW50ZXJhY3Rpb24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgICAgICB0aGlzLl9oYW5kbGVVc2VySW50ZXJhY3Rpb24oKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqIE1ldGhvZCB0cmlnZ2VyZWQgb24gdXNlciBpbnRlcmFjdGlvbiB3aXRoIGNoZWNrYm94LiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZVVzZXJJbnRlcmFjdGlvbiA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMud2l0aFVzZXJJbnRlcmFjdGlvbj8uKCk7XG4gICAgICB0aGlzLmNoZWNrZWQgPSAhdGhpcy5jaGVja2VkO1xuICAgICAgdGhpcy5fYXR0cmlidXRlTXV0YXRpb25CbG9ja2VkID0gdHJ1ZTtcblxuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgY29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIFNiYkZvcm1Bc3NvY2lhdGVkQ2hlY2tib3hFbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJGb3JtQXNzb2NpYXRlZENoZWNrYm94TWl4aW5UeXBlPiAmXG4gICAgVDtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUF1Q08sTUFBTSxpQ0FBaUMsQ0FDNUMsZUFDK0Q7TUFJaEQsb0NBQWdDLE1BQUE7O0FBSDlDLFFBQUEsbUJBQUEsQ0FBQSxlQUFlO0FBQUEsTUFDZCxVQUFVO0FBQUEsSUFBQSxDQUNYLENBQUM7Ozs7c0JBRVEsaUJB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
147
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1hc3NvY2lhdGVkLWNoZWNrYm94LW1peGluLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9taXhpbnMvZm9ybS1hc3NvY2lhdGVkLWNoZWNrYm94LW1peGluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZmF1bHRDb252ZXJ0ZXIsIHR5cGUgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHByZXZlbnRTY3JvbGxPblNwYWNlYmFyUHJlc3MgfSBmcm9tICcuLi9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBpMThuQ2hlY2tib3hSZXF1aXJlZCB9IGZyb20gJy4uL2kxOG4uanMnO1xuXG5pbXBvcnQgdHlwZSB7IEFic3RyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cnVjdG9yLmpzJztcbmltcG9ydCB7IFNiYkRpc2FibGVkTWl4aW4gfSBmcm9tICcuL2Rpc2FibGVkLW1peGluLmpzJztcbmltcG9ydCB7IFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbiB9IGZyb20gJy4vZWxlbWVudC1pbnRlcm5hbHMtbWl4aW4uanMnO1xuaW1wb3J0IHtcbiAgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbixcbiAgdHlwZSBGb3JtUmVzdG9yZVJlYXNvbixcbiAgdHlwZSBGb3JtUmVzdG9yZVN0YXRlLFxufSBmcm9tICcuL2Zvcm0tYXNzb2NpYXRlZC1taXhpbi5qcyc7XG5pbXBvcnQgeyBTYmJSZXF1aXJlZE1peGluIH0gZnJvbSAnLi9yZXF1aXJlZC1taXhpbi5qcyc7XG5cbnR5cGUgQ2hlY2tlZFNldHRlclZhbHVlID0geyB2YWx1ZTogYm9vbGVhbjsgYXR0cmlidXRlOiBib29sZWFuIH07XG5cbmV4cG9ydCBkZWNsYXJlIGFic3RyYWN0IGNsYXNzIFNiYkZvcm1Bc3NvY2lhdGVkQ2hlY2tib3hNaXhpblR5cGUgZXh0ZW5kcyBTYmJEaXNhYmxlZE1peGluKFxuICBTYmJSZXF1aXJlZE1peGluKFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4oU2JiRWxlbWVudEludGVybmFsc01peGluKExpdEVsZW1lbnQpKSksXG4pIHtcbiAgcHVibGljIGFjY2Vzc29yIGNoZWNrZWQ6IGJvb2xlYW47XG5cbiAgcHVibGljIGZvcm1SZXNldENhbGxiYWNrKCk6IHZvaWQ7XG4gIHB1YmxpYyBmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2soc3RhdGU6IEZvcm1SZXN0b3JlU3RhdGUgfCBudWxsLCByZWFzb246IEZvcm1SZXN0b3JlUmVhc29uKTogdm9pZDtcblxuICBwcm90ZWN0ZWQgaXNSZXF1aXJlZEV4dGVybmFsbHkoKTogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHdpdGhVc2VySW50ZXJhY3Rpb24/KCk6IHZvaWQ7XG4gIHByb3RlY3RlZCB1cGRhdGVGb3JtVmFsdWUoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgRm9ybUFzc29jaWF0ZWRDaGVja2JveE1peGluIGVuYWJsZXMgbmF0aXZlIGZvcm0gc3VwcG9ydCBmb3IgY2hlY2tib3ggY29udHJvbHMuXG4gKlxuICogSW5oZXJpdGVkIGNsYXNzZXMgTVVTVCBpbXBsZW1lbnQgdGhlIGFyaWFDaGVja2VkIHN0YXRlIChFbGVtZW50SW50ZXJuYWxzKSB0aGVtc2VsdmVzLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiRm9ybUFzc29jaWF0ZWRDaGVja2JveE1peGluID0gPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRm9ybUFzc29jaWF0ZWRDaGVja2JveE1peGluVHlwZT4gJiBUID0+IHtcbiAgQGhvc3RBdHRyaWJ1dGVzKHtcbiAgICB0YWJpbmRleDogJzAnLFxuICB9KVxuICBhYnN0cmFjdCBjbGFzcyBTYmJGb3JtQXNzb2NpYXRlZENoZWNrYm94RWxlbWVudFxuICAgIGV4dGVuZHMgU2JiRGlzYWJsZWRNaXhpbihcbiAgICAgIFNiYlJlcXVpcmVkTWl4aW4oU2JiRm9ybUFzc29jaWF0ZWRNaXhpbihTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4oc3VwZXJDbGFzcykpKSxcbiAgICApXG4gICAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkZvcm1Bc3NvY2lhdGVkQ2hlY2tib3hNaXhpblR5cGU+XG4gIHtcbiAgICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IHJvbGUgPSAnY2hlY2tib3gnO1xuXG4gICAgcHJpdmF0ZSBfYXR0cmlidXRlTXV0YXRpb25CbG9ja2VkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfbGFuZ3VhZ2VDb250cm9sbGVyID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjaGVja2JveCBpcyBjaGVja2VkLiAqL1xuICAgIEBwcm9wZXJ0eSh7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgY29udmVydGVyOiB7XG4gICAgICAgIC4uLmRlZmF1bHRDb252ZXJ0ZXIsXG4gICAgICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbmZvcm1hdGlvbiB0byB0aGUgc2V0dGVyIHNvIHRoYXQgd2Uga25vdyBpdCB3YXMgY2FsbGVkIGJ5IGF0dHJpYnV0ZSBjaGFuZ2UuXG4gICAgICAgIGZyb21BdHRyaWJ1dGU6ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCwgdHlwZT86IHVua25vd24pOiBDaGVja2VkU2V0dGVyVmFsdWUgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGRlZmF1bHRDb252ZXJ0ZXIuZnJvbUF0dHJpYnV0ZT8uKHZhbHVlLCB0eXBlKTtcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogcmVzdWx0LCBhdHRyaWJ1dGU6IHRydWUgfSBhcyBDaGVja2VkU2V0dGVyVmFsdWU7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pXG4gICAgcHVibGljIHNldCBjaGVja2VkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVTZXR0ZXIgPVxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gKHZhbHVlIGFzIHVua25vd24gYXMgQ2hlY2tlZFNldHRlclZhbHVlKS5hdHRyaWJ1dGUgOiBmYWxzZTtcbiAgICAgIGlmIChhdHRyaWJ1dGVTZXR0ZXIpIHtcbiAgICAgICAgdmFsdWUgPSAodmFsdWUgYXMgdW5rbm93biBhcyBDaGVja2VkU2V0dGVyVmFsdWUpLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICAvLyBBcyBzb29uIGFzIG11dGF0aW9uIHdhcyBkb25lIG5vdCBieSBzZXR0aW5nIGF0dHJpYnV0ZSxcbiAgICAgIC8vIHdlIG5lZWQgdG8gYmxvY2sgc3luY2luZyBhdHRyaWJ1dGUuXG4gICAgICBpZiAodGhpcy5oYXNVcGRhdGVkICYmICFhdHRyaWJ1dGVTZXR0ZXIpIHtcbiAgICAgICAgdGhpcy5fYXR0cmlidXRlTXV0YXRpb25CbG9ja2VkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2NoZWNrZWQgPSBCb29sZWFuKHZhbHVlKTtcbiAgICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlKCk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLl9jaGVja2VkO1xuICAgIH1cbiAgICBwcml2YXRlIF9jaGVja2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBGb3JtIHR5cGUgb2YgZWxlbWVudC5cbiAgICAgKiBAZGVmYXVsdCAnY2hlY2tib3gnXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gJ2NoZWNrYm94JztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2NsaWNrJywgdGhpcy5faGFuZGxlVXNlckludGVyYWN0aW9uKTtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdrZXlkb3duJywgcHJldmVudFNjcm9sbE9uU3BhY2ViYXJQcmVzcyk7XG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Ligna2V5dXAnLCB0aGlzLl9oYW5kbGVLZXlib2FyZEludGVyYWN0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKFxuICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgb2xkOiBzdHJpbmcgfCBudWxsLFxuICAgICAgdmFsdWU6IHN0cmluZyB8IG51bGwsXG4gICAgKTogdm9pZCB7XG4gICAgICAvLyBBdHRyaWJ1dGUgc2hvdWxkIG5vdCBiZSBpbnRlcnByZXRlZCBhZnRlciBwcm9ncmFtbWF0aWMgb3IgbWFudWFsIHN0YXRlIGNoYW5nZS5cbiAgICAgIGlmIChuYW1lICE9PSAnY2hlY2tlZCcgfHwgIXRoaXMuX2F0dHJpYnV0ZU11dGF0aW9uQmxvY2tlZCkge1xuICAgICAgICBzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sobmFtZSwgb2xkLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBmb3JtIGlzIGJlaW5nIHJlc2V0LlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGZvcm1SZXNldENhbGxiYWNrKCk6IHZvaWQge1xuICAgICAgdGhpcy5jaGVja2VkID0gdGhpcy5oYXNBdHRyaWJ1dGUoJ2NoZWNrZWQnKTtcbiAgICAgIHRoaXMuX2F0dHJpYnV0ZU11dGF0aW9uQmxvY2tlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBDYWxsZWQgd2hlbiB0aGUgYnJvd3NlciBpcyB0cnlpbmcgdG8gcmVzdG9yZSBlbGVtZW504oCZcyBzdGF0ZSB0byBzdGF0ZSBpbiB3aGljaCBjYXNlXG4gICAgICogIHJlYXNvbiBpcyBcInJlc3RvcmVcIiwgb3Igd2hlbiB0aGUgYnJvd3NlciBpcyB0cnlpbmcgdG8gZnVsZmlsbCBhdXRvZmlsbCBvbiBiZWhhbGYgb2ZcbiAgICAgKiAgdXNlciBpbiB3aGljaCBjYXNlIHJlYXNvbiBpcyBcImF1dG9jb21wbGV0ZVwiLlxuICAgICAqICBJbiB0aGUgY2FzZSBvZiBcInJlc3RvcmVcIiwgc3RhdGUgaXMgYSBzdHJpbmcsIEZpbGUsIG9yIEZvcm1EYXRhIG9iamVjdFxuICAgICAqICBwcmV2aW91c2x5IHNldCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIHNldEZvcm1WYWx1ZS5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2soXG4gICAgICBzdGF0ZTogRm9ybVJlc3RvcmVTdGF0ZSB8IG51bGwsXG4gICAgICBfcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbixcbiAgICApOiB2b2lkIHtcbiAgICAgIGlmIChzdGF0ZSkge1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSBzdGF0ZSA9PT0gJ3RydWUnO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZGl0aW9uYWwgbG9naWMgd2hpY2ggaXMgYmVpbmcgZXhlY3V0ZWQgd2hlbiB1c2VyXG4gICAgICogaW50ZXJhY3Rpb24gaGFwcGVucyBhbmQgc3RhdGUgaXMgbm90IGRpc2FibGVkLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCB3aXRoVXNlckludGVyYWN0aW9uPygpOiB2b2lkO1xuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZUZvcm1WYWx1ZSgpOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLmNoZWNrZWQpIHtcbiAgICAgICAgc3VwZXIudXBkYXRlRm9ybVZhbHVlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmludGVybmFscy5zZXRGb3JtVmFsdWUobnVsbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGZvcm1TdGF0ZSgpOiBGb3JtUmVzdG9yZVN0YXRlIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmNoZWNrZWR9YDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2hvdWxkVmFsaWRhdGUobmFtZTogUHJvcGVydHlLZXkgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBzdXBlci5zaG91bGRWYWxpZGF0ZShuYW1lKSB8fCBuYW1lID09PSAnY2hlY2tlZCcgfHwgbmFtZSA9PT0gJ3JlcXVpcmVkJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdmFsaWRhdGUoKTogdm9pZCB7XG4gICAgICBzdXBlci52YWxpZGF0ZSgpO1xuICAgICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIXRoaXMuY2hlY2tlZCkge1xuICAgICAgICB0aGlzLnNldFZhbGlkaXR5RmxhZyhcbiAgICAgICAgICAndmFsdWVNaXNzaW5nJyxcbiAgICAgICAgICBpMThuQ2hlY2tib3hSZXF1aXJlZFt0aGlzLl9sYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudF0sXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbW92ZVZhbGlkaXR5RmxhZygndmFsdWVNaXNzaW5nJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0cmlnZ2VyZWQgb24ga2V5Ym9hcmQgdXNlciBpbnRlcmFjdGlvbiB3aXRoIGNoZWNrYm94LiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZUtleWJvYXJkSW50ZXJhY3Rpb24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgICAgICB0aGlzLl9oYW5kbGVVc2VySW50ZXJhY3Rpb24oKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqIE1ldGhvZCB0cmlnZ2VyZWQgb24gdXNlciBpbnRlcmFjdGlvbiB3aXRoIGNoZWNrYm94LiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZVVzZXJJbnRlcmFjdGlvbiA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMud2l0aFVzZXJJbnRlcmFjdGlvbj8uKCk7XG4gICAgICB0aGlzLmNoZWNrZWQgPSAhdGhpcy5jaGVja2VkO1xuICAgICAgdGhpcy5fYXR0cmlidXRlTXV0YXRpb25CbG9ja2VkID0gdHJ1ZTtcblxuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgY29tcG9zZWQ6IHRydWUsIGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIFNiYkZvcm1Bc3NvY2lhdGVkQ2hlY2tib3hFbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJGb3JtQXNzb2NpYXRlZENoZWNrYm94TWl4aW5UeXBlPiAmXG4gICAgVDtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUF1Q08sTUFBTSxpQ0FBaUMsQ0FDNUMsZUFDK0Q7TUFJaEQsb0NBQWdDLE1BQUE7O0FBSDlDLFFBQUEsbUJBQUEsQ0FBQSxlQUFlO0FBQUEsTUFDZCxVQUFVO0FBQUEsSUFBQSxDQUNYLENBQUM7Ozs7c0JBRVEsaUJB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
@@ -280,4 +280,4 @@ const SbbFormAssociatedInputMixin = (superClass) => {
280
280
  export {
281
281
  SbbFormAssociatedInputMixin
282
282
  };
283
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1hc3NvY2lhdGVkLWlucHV0LW1peGluLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9taXhpbnMvZm9ybS1hc3NvY2lhdGVkLWlucHV0LW1peGluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICB0eXBlIExpdEVsZW1lbnQsXG4gIHR5cGUgUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGV2ZW50T3B0aW9ucywgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IHNiYklucHV0TW9kYWxpdHlEZXRlY3RvciB9IGZyb20gJy4uL2ExMXkuanMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgaXNXZWJraXQgfSBmcm9tICcuLi9kb20uanMnO1xuaW1wb3J0IHsgaTE4bklucHV0UmVxdWlyZWQgfSBmcm9tICcuLi9pMThuLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5pbXBvcnQgeyBTYmJEaXNhYmxlZE1peGluIH0gZnJvbSAnLi9kaXNhYmxlZC1taXhpbi5qcyc7XG5pbXBvcnQgeyBTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4gfSBmcm9tICcuL2VsZW1lbnQtaW50ZXJuYWxzLW1peGluLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgRm9ybVJlc3RvcmVSZWFzb24sXG4gIHR5cGUgRm9ybVJlc3RvcmVTdGF0ZSxcbiAgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbixcbn0gZnJvbSAnLi9mb3JtLWFzc29jaWF0ZWQtbWl4aW4uanMnO1xuaW1wb3J0IHsgU2JiUmVhZG9ubHlNaXhpbiB9IGZyb20gJy4vcmVhZG9ubHktbWl4aW4uanMnO1xuaW1wb3J0IHsgU2JiUmVxdWlyZWRNaXhpbiB9IGZyb20gJy4vcmVxdWlyZWQtbWl4aW4uanMnO1xuXG5leHBvcnQgZGVjbGFyZSBhYnN0cmFjdCBjbGFzcyBTYmJGb3JtQXNzb2NpYXRlZElucHV0TWl4aW5UeXBlIGV4dGVuZHMgU2JiUmVxdWlyZWRNaXhpbihcbiAgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbihTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4oTGl0RWxlbWVudCkpLFxuKSB7XG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IHN0cmluZyk7XG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogc3RyaW5nO1xuXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pO1xuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW47XG5cbiAgcHVibGljIHNldCByZWFkT25seSh2YWx1ZTogYm9vbGVhbik7XG4gIHB1YmxpYyBnZXQgcmVhZE9ubHkoKTogYm9vbGVhbjtcblxuICBwdWJsaWMgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpO1xuICBwdWJsaWMgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZztcblxuICAvKipcbiAgICogTWFrZXMgdGhlIHNlbGVjdGlvbiBlcXVhbCB0byB0aGUgY3VycmVudCBvYmplY3QuXG4gICAqXG4gICAqIFtNRE4gUmVmZXJlbmNlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9BUEkvSFRNTElucHV0RWxlbWVudC9zZWxlY3QpXG4gICAqL1xuICBwdWJsaWMgc2VsZWN0KCk6IHZvaWQ7XG5cbiAgcHVibGljIGZvcm1SZXNldENhbGxiYWNrKCk6IHZvaWQ7XG4gIHB1YmxpYyBmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2soc3RhdGU6IEZvcm1SZXN0b3JlU3RhdGUgfCBudWxsLCByZWFzb246IEZvcm1SZXN0b3JlUmVhc29uKTogdm9pZDtcblxuICBwcm90ZWN0ZWQgcHJlcGFyZVBhc3RlZFRleHQodGV4dDogc3RyaW5nKTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgbGFuZ3VhZ2U6IFNiYkxhbmd1YWdlQ29udHJvbGxlcjtcbn1cblxuY29uc3QgY2hlY2tQbGFpbnRleHRPbmx5U3VwcG9ydCA9ICgpOiBib29sZWFuID0+IHtcbiAgaWYgKGlzU2VydmVyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRpdi5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsICdQTEFJTlRFWFQtT05MWScpO1xuXG4gIC8vIElmIHBsYWludGV4dC1vbmx5IGlzIHN1cHBvcnRlZCwgdGhlIGF0dHJpYnV0ZSB2YWx1ZSBpc1xuICAvLyByZXR1cm5lZCBhcyBsb3dlci1jYXNlIGZyb20gdGhlIHByb3BlcnR5IGFjY2Vzcy5cbiAgcmV0dXJuIGRpdi5jb250ZW50RWRpdGFibGUgPT09ICdwbGFpbnRleHQtb25seSc7XG59O1xuY29uc3QgcGxhaW50ZXh0T25seVN1cHBvcnRlZCA9IGNoZWNrUGxhaW50ZXh0T25seVN1cHBvcnQoKTtcblxuLyoqXG4gKiBUaGUgU2JiRm9ybUFzc29jaWF0ZWRJbnB1dE1peGluIGVuYWJsZXMgbmF0aXZlIGZvcm0gc3VwcG9ydCBmb3IgdGV4dCBpbnB1dCBjb250cm9scy5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFNiYkZvcm1Bc3NvY2lhdGVkSW5wdXRNaXhpbiA9IDxUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxMaXRFbGVtZW50Pj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkZvcm1Bc3NvY2lhdGVkSW5wdXRNaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYkZvcm1Bc3NvY2lhdGVkSW5wdXRFbGVtZW50XG4gICAgZXh0ZW5kcyBTYmJSZWFkb25seU1peGluKFxuICAgICAgU2JiRGlzYWJsZWRNaXhpbihcbiAgICAgICAgU2JiUmVxdWlyZWRNaXhpbihTYmJGb3JtQXNzb2NpYXRlZE1peGluKFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbihzdXBlckNsYXNzKSkpLFxuICAgICAgKSxcbiAgICApXG4gICAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkZvcm1Bc3NvY2lhdGVkSW5wdXRNaXhpblR5cGU+XG4gIHtcbiAgICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IHJvbGUgPSAndGV4dGJveCc7XG5cbiAgICAvKipcbiAgICAgKiBBbiBlbGVtZW50IHdpdGggY29udGVudGVkaXRhYmxlIHdpbGwgbm90IGVtaXQgYSBjaGFuZ2UgZXZlbnQuIFRvIGFjaGlldmUgcGFyaXR5XG4gICAgICogd2l0aCBhIG5hdGl2ZSB0ZXh0IGlucHV0LCB3ZSBuZWVkIHRvIHRyYWNrIHdoZXRoZXIgYSBjaGFuZ2UgZXZlbnQgc2hvdWxkIGJlXG4gICAgICogZW1pdHRlZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9zaG91bGRFbWl0Q2hhbmdlID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogQSBuYXRpdmUgdGV4dCBpbnB1dCBhdHRlbXB0cyB0byBzdWJtaXQgdGhlIGZvcm0gd2hlbiBwcmVzc2luZyBFbnRlci5cbiAgICAgKiBUaGlzIGNhbiBiZSBwcmV2ZW50ZWQgYnkgY2FsbGluZyBwcmV2ZW50RGVmYXVsdCBvbiB0aGUga2V5ZG93biBldmVudC5cbiAgICAgKiBXZSB0cmFjayB3aGV0aGVyIHRvIHJlcXVlc3Qgc3VibWl0LCB3aGljaCBzaG91bGQgb2NjdXIgYmVmb3JlIHRoZSBrZXl1cFxuICAgICAqIGV2ZW50LlxuICAgICAqL1xuICAgIHByaXZhdGUgX3Nob3VsZFRyaWdnZXJTdWJtaXQgPSBmYWxzZTtcblxuICAgIHByb3RlY3RlZCBsYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgICAvKipcbiAgICAgKiBGb3JtIHR5cGUgb2YgZWxlbWVudC5cbiAgICAgKiBAZGVmYXVsdCAndGV4dCdcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiAndGV4dCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIHZhbHVlIG9mIHRoZSBpbnB1dC4gUmVmbGVjdHMgdGhlIGN1cnJlbnQgdGV4dCB2YWx1ZSBvZiB0aGlzIGlucHV0LlxuICAgICAqL1xuICAgIEBwcm9wZXJ0eSgpXG4gICAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX2NsZWFuVGV4dCh2YWx1ZSk7XG4gICAgICBpZiAodGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICAgIHRoaXMuaW5uZXJIVE1MID0gdGhpcy5fdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB0aGlzLl92YWx1ZSA/PyAnJztcbiAgICB9XG4gICAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZyA9ICcnO1xuXG4gICAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdwbGFjZWhvbGRlcicsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKCdwbGFjZWhvbGRlcicpO1xuICAgICAgfVxuICAgICAgdGhpcy5pbnRlcm5hbHMuYXJpYVBsYWNlaG9sZGVyID0gdmFsdWUgPyB2YWx1ZSA6IG51bGw7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInKSA/PyAnJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgLy8gV2UgcHJpbWFyaWx5IHVzZSBjYXB0dXJlIGV2ZW50IGxpc3RlbmVycywgYXMgd2Ugd2FudFxuICAgICAgLy8gb3VyIGxpc3RlbmVycyB0byBvY2N1ciBiZWZvcmUgY29uc3VtZXIgZXZlbnQgbGlzdGVuZXJzLlxuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oXG4gICAgICAgICdpbnB1dCcsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuX3ZhbHVlO1xuICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fY2xlYW5UZXh0KHRoaXMudGV4dENvbnRlbnQgPz8gJycpO1xuICAgICAgICAgIHRoaXMucmVxdWVzdFVwZGF0ZSgndmFsdWUnLCBvbGRWYWx1ZSk7XG4gICAgICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmFkZCgnaW50ZXJhY3RlZCcpO1xuICAgICAgICAgIHRoaXMuX3Nob3VsZEVtaXRDaGFuZ2UgPSB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICB7IGNhcHR1cmU6IHRydWUgfSxcbiAgICAgICk7XG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LignY2hhbmdlJywgKCkgPT4gKHRoaXMuX3Nob3VsZEVtaXRDaGFuZ2UgPSBmYWxzZSksIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKFxuICAgICAgICAna2V5ZG93bicsXG4gICAgICAgIChldmVudCkgPT4ge1xuICAgICAgICAgIC8vIFdlIHByZXZlbnQgcmVjdXJzaXZlIGV2ZW50cyBieSBjaGVja2luZyB0aGUgb3JpZ2luYWwgZXZlbnQgZm9yIGlzVHJ1c3RlZFxuICAgICAgICAgIC8vIHdoaWNoIGlzIGZhbHNlIGZvciBtYW51YWxseSBkaXNwYXRjaGVkIGV2ZW50cyAod2hpY2ggd2UgZGlzcGF0Y2ggYmVsb3cpLlxuICAgICAgICAgIGlmICgoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJ1xcbicpICYmIGV2ZW50LmlzVHJ1c3RlZCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5fc2hvdWxkVHJpZ2dlclN1Ym1pdCA9IHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgS2V5Ym9hcmRFdmVudCgna2V5ZG93bicsIGV2ZW50KSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGlzV2Via2l0ICYmXG4gICAgICAgICAgICB0aGlzLnZhbHVlICYmXG4gICAgICAgICAgICAoZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJyB8fCBldmVudC5rZXkgPT09ICdEZWxldGUnKSAmJlxuICAgICAgICAgICAgZXZlbnQuaXNUcnVzdGVkXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBJbiBXZWJraXQgcHJlc3NpbmcgQmFja3NwYWNlIG9yIERlbGV0ZSBjb21wbGV0ZWx5IHJlbW92ZXMgYWxsIHRoZSBjb250ZW50XG4gICAgICAgICAgICAvLyBpZiBjb250ZW50ZWRpdGFibGUgaXMgc2V0IG9uIGEgd2ViIGNvbXBvbmVudCBob3N0LlxuICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byByZXBsaWNhdGUgdGhlIG5vcm1hbCBkZWxldGUgYmVoYXZpb3IuXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBLZXlib2FyZEV2ZW50KCdrZXlkb3duJywgZXZlbnQpKSkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUmFuZ2UgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk/LmdldFJhbmdlQXQoMCk7XG4gICAgICAgICAgICBpZiAoIXNlbGVjdGVkUmFuZ2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRSYW5nZS5zdGFydE9mZnNldCAhPT0gc2VsZWN0ZWRSYW5nZS5lbmRPZmZzZXQpIHtcbiAgICAgICAgICAgICAgLy8gSWYgYSB0ZXh0IHJhbmdlIGlzIHNlbGVjdGVkLCB0aGVuIGRlbGV0ZSB0aGlzIHJhbmdlXG4gICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2UuZGVsZXRlQ29udGVudHMoKTtcbiAgICAgICAgICAgICAgdGhpcy5fZGlzcGF0Y2hJbnB1dEV2ZW50KCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0JhY2tzcGFjZScgJiYgc2VsZWN0ZWRSYW5nZS5zdGFydE9mZnNldCA+IDApIHtcbiAgICAgICAgICAgICAgLy8gV2hlbiBwcmVzc2luZyBCYWNrc3BhY2UsIHdlIHNlbGVjdCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIGZyb21cbiAgICAgICAgICAgICAgLy8gdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uIGFuZCBkZWxldGUgaXQuXG4gICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2Uuc2V0U3RhcnQoc2VsZWN0ZWRSYW5nZS5zdGFydENvbnRhaW5lciwgc2VsZWN0ZWRSYW5nZS5zdGFydE9mZnNldCAtIDEpO1xuICAgICAgICAgICAgICBzZWxlY3RlZFJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7XG4gICAgICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoSW5wdXRFdmVudCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdEZWxldGUnICYmIHNlbGVjdGVkUmFuZ2UuZW5kT2Zmc2V0IDwgdGhpcy52YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgLy8gV2hlbiBwcmVzc2luZyBEZWxldGUsIHdlIHNlbGVjdCB0aGUgbmV4dCBjaGFyYWN0ZXIgZnJvbVxuICAgICAgICAgICAgICAvLyB0aGUgY3VycmVudCBjdXJzb3IgcG9zaXRpb24gYW5kIGRlbGV0ZSBpdC5cbiAgICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZS5zZXRFbmQoc2VsZWN0ZWRSYW5nZS5lbmRDb250YWluZXIsIHNlbGVjdGVkUmFuZ2UuZW5kT2Zmc2V0ICsgMSk7XG4gICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2UuZGVsZXRlQ29udGVudHMoKTtcbiAgICAgICAgICAgICAgdGhpcy5fZGlzcGF0Y2hJbnB1dEV2ZW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7IGNhcHR1cmU6IHRydWUgfSxcbiAgICAgICk7XG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LihcbiAgICAgICAgJ2tleXVwJyxcbiAgICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyB8fCBldmVudC5rZXkgPT09ICdcXG4nKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlSWZOZWNlc3NhcnkoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zaG91bGRUcmlnZ2VyU3VibWl0KSB7XG4gICAgICAgICAgICAgIHRoaXMuX3Nob3VsZFRyaWdnZXJTdWJtaXQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5mb3JtPy5yZXF1ZXN0U3VibWl0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7IGNhcHR1cmU6IHRydWUgfSxcbiAgICAgICk7XG4gICAgICAvLyBjb250ZW50ZWRpdGFibGUgYWxsb3dzIHBhc3RpbmcgcmljaCBjb250ZW50IGludG8gaXRzIGhvc3QuXG4gICAgICAvLyBXZSBwcmV2ZW50IHRoaXMgYnkgbGlzdGVuaW5nIHRvIHRoZSBwYXN0ZSBldmVudCBhbmRcbiAgICAgIC8vIGV4dHJhY3RpbmcgdGhlIHBsYWluIHRleHQgZnJvbSB0aGUgcGFzdGVkIGNvbnRlbnRcbiAgICAgIC8vIGFuZCBpbnNlcnRpbmcgaXQgaW50byB0aGUgc2VsZWN0ZWQgcmFuZ2UgKGN1cnNvciBwb3NpdGlvblxuICAgICAgLy8gb3Igc2VsZWN0aW9uKS5cbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdwYXN0ZScsIChlKSA9PiB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgdGV4dCA9IHRoaXMuX2NsZWFuVGV4dChlLmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQvcGxhaW4nKSA/PyAnJyk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUmFuZ2UgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk/LmdldFJhbmdlQXQoMCk7XG4gICAgICAgIGlmICghc2VsZWN0ZWRSYW5nZSB8fCAhdGV4dCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGVjdGVkUmFuZ2UuZGVsZXRlQ29udGVudHMoKTtcbiAgICAgICAgc2VsZWN0ZWRSYW5nZS5pbnNlcnROb2RlKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMucHJlcGFyZVBhc3RlZFRleHQodGV4dCkpKTtcbiAgICAgICAgc2VsZWN0ZWRSYW5nZS5zZXRTdGFydChzZWxlY3RlZFJhbmdlLmVuZENvbnRhaW5lciwgc2VsZWN0ZWRSYW5nZS5lbmRPZmZzZXQpO1xuICAgICAgICB0aGlzLl9kaXNwYXRjaElucHV0RXZlbnQoKTtcbiAgICAgIH0pO1xuICAgICAgLy8gV2hlbiBmb2N1c2luZyBhIHRleHQgaW5wdXQgdmlhIGtleWJvYXJkLCB0aGUgdGV4dCBjb250ZW50IHNob3VsZCBiZSBzZWxlY3RlZC5cbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdmb2N1cycsICgpID0+IHtcbiAgICAgICAgaWYgKHNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci5tb3N0UmVjZW50TW9kYWxpdHkgPT09ICdrZXlib2FyZCcpIHtcbiAgICAgICAgICAvLyBUT0RPOiBUaGlzIGRvZXMgbm90IHNlZW0gdG8gd29yayBpbiBGaXJlZm94IHdpdGggcmVhZG9ubHkuXG4gICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpPy5zZWxlY3RBbGxDaGlsZHJlbih0aGlzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvLyBPbiBibHVyIHRoZSBuYXRpdmUgdGV4dCBpbnB1dCBzY3JvbGxzIHRoZSB0ZXh0IHRvIHRoZSBzdGFydCBvZiB0aGUgdGV4dC5cbiAgICAgIC8vIFdlIG1pbWljayB0aGF0IGJ5IHJlc2V0dGluZyB0aGUgc2Nyb2xsIHBvc2l0aW9uLlxuICAgICAgLy8gV2UgYWxzbyB1bnNldCBhbnkgc2VsZWN0aW9uIHRvIGFsaWduIHdpdGggdGhlIG5hdGl2ZSB0ZXh0IGlucHV0LlxuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oXG4gICAgICAgICdibHVyJyxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKT8ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICAgICAgdGhpcy5fZW1pdENoYW5nZUlmTmVjZXNzYXJ5KCk7XG4gICAgICAgICAgdGhpcy5zY3JvbGxMZWZ0ID0gMDtcbiAgICAgICAgfSxcbiAgICAgICAgeyBjYXB0dXJlOiB0cnVlIH0sXG4gICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBpc0Rpc2FibGVkRXh0ZXJuYWxseSgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1EaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgICAgdGhpcy5pbnRlcm5hbHMuYXJpYU11bHRpTGluZSA9ICdmYWxzZSc7XG4gICAgICB0aGlzLl91cGRhdGVDb250ZW50ZWRpdGFibGUoKTtcblxuICAgICAgLy8gV2Ugd2FudCB0byByZXBsYWNlIGFueSBjb250ZW50IGJ5IGp1c3QgdGhlIHRleHQgY29udGVudC5cbiAgICAgIHRoaXMuaW5uZXJIVE1MID0gdGhpcy52YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZm9jdXMob3B0aW9ucz86IEZvY3VzT3B0aW9ucyk6IHZvaWQge1xuICAgICAgc3VwZXIuZm9jdXMob3B0aW9ucyk7XG4gICAgICAvLyBCeSBkZWZhdWx0LCB3aGVuIGNhbGxpbmcgZm9jdXMgb24gYW4gaW5wdXQgZWxlbWVudCwgdGhlIGN1cnNvciBpcyBwbGFjZWRcbiAgICAgIC8vIGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0IHRleHQuIEhvd2V2ZXIsIHdpdGggY29udGVudGVkaXRhYmxlLCB0aGUgY3Vyc29yXG4gICAgICAvLyBpcyBwbGFjZWQgYXQgdGhlIGJlZ2lubmluZywgc28gd2UgbW92ZSBpdCB0byB0aGUgZW5kLCBpZiB0aGF0IGlzIHRoZSBjYXNlLlxuICAgICAgaWYgKHRoaXMuX2NhblNlbGVjdCgpKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgaWYgKCFzZWxlY3Rpb24pIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJhbmdlID0gc2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwID8gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCkgOiBudWxsO1xuICAgICAgICBpZiAocmFuZ2UgJiYgcmFuZ2Uuc3RhcnRPZmZzZXQgIT09IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgIHJhbmdlLnNldFN0YXJ0KHRoaXMuZmlyc3RDaGlsZCEsIHRoaXMudGV4dENvbnRlbnQhLmxlbmd0aCk7XG4gICAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpO1xuICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhcbiAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgIG9sZDogc3RyaW5nIHwgbnVsbCxcbiAgICAgIHZhbHVlOiBzdHJpbmcgfCBudWxsLFxuICAgICk6IHZvaWQge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgbmF0aXZlIHRleHQgaW5wdXQgY2hhbmdlcyB0aGUgdmFsdWUgcHJvcGVydHkgd2hlbiB0aGUgdmFsdWUgYXR0cmlidXRlIGlzXG4gICAgICAgKiBjaGFuZ2VkIHVuZGVyIHRoZSBjb25kaXRpb24gdGhhdCBubyBpbnB1dCBldmVudCBoYXMgb2NjdXJlZCBzaW5jZSBjcmVhdGlvblxuICAgICAgICogb3IgdGhlIGxhc3QgZm9ybSByZXNldC5cbiAgICAgICAqL1xuICAgICAgaWYgKG5hbWUgIT09ICd2YWx1ZScgfHwgIXRoaXMuaW50ZXJuYWxzLnN0YXRlcy5oYXMoJ2ludGVyYWN0ZWQnKSkge1xuICAgICAgICBzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sobmFtZSwgb2xkLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBmb3JtIGlzIGJlaW5nIHJlc2V0LlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGZvcm1SZXNldENhbGxiYWNrKCk6IHZvaWQge1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZSgnaW50ZXJhY3RlZCcpO1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0QXR0cmlidXRlKCd2YWx1ZScpID8/ICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBDYWxsZWQgd2hlbiB0aGUgYnJvd3NlciBpcyB0cnlpbmcgdG8gcmVzdG9yZSBlbGVtZW504oCZcyBzdGF0ZSB0byBzdGF0ZSBpbiB3aGljaCBjYXNlXG4gICAgICogIHJlYXNvbiBpcyBcInJlc3RvcmVcIiwgb3Igd2hlbiB0aGUgYnJvd3NlciBpcyB0cnlpbmcgdG8gZnVsZmlsbCBhdXRvZmlsbCBvbiBiZWhhbGYgb2ZcbiAgICAgKiAgdXNlciBpbiB3aGljaCBjYXNlIHJlYXNvbiBpcyBcImF1dG9jb21wbGV0ZVwiLlxuICAgICAqICBJbiB0aGUgY2FzZSBvZiBcInJlc3RvcmVcIiwgc3RhdGUgaXMgYSBzdHJpbmcsIEZpbGUsIG9yIEZvcm1EYXRhIG9iamVjdFxuICAgICAqICBwcmV2aW91c2x5IHNldCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIHNldEZvcm1WYWx1ZS5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2soXG4gICAgICBzdGF0ZTogRm9ybVJlc3RvcmVTdGF0ZSB8IG51bGwsXG4gICAgICBfcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbixcbiAgICApOiB2b2lkIHtcbiAgICAgIGlmIChzdGF0ZSAmJiB0eXBlb2Ygc3RhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBzdGF0ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYWtlcyB0aGUgc2VsZWN0aW9uIGVxdWFsIHRvIHRoZSBjdXJyZW50IG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0FQSS9IVE1MSW5wdXRFbGVtZW50L3NlbGVjdFxuICAgICAqL1xuICAgIHB1YmxpYyBzZWxlY3QoKTogdm9pZCB7XG4gICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk/LnNlbGVjdEFsbENoaWxkcmVuKHRoaXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgICAvLyBJZiB0aGUgdmFsdWUgd2FzIGFzc2lnbmVkIGJlZm9yZSBmaXJzdFVwZGF0ZSwgd2UgaGF2ZSB0b1xuICAgICAgLy8gd3JpdGUgaXQgdGhlIGRvY3VtZW50IHRvIGJlIHZpc3VhbGx5IHNlZW5cbiAgICAgIGlmICh0aGlzLnZhbHVlICYmICF0aGlzLmlubmVySFRNTC5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5pbm5lckhUTUwgPSB0aGlzLnZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgICAgbmFtZT86IFByb3BlcnR5S2V5LFxuICAgICAgb2xkVmFsdWU/OiB1bmtub3duLFxuICAgICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICAgKTogdm9pZCB7XG4gICAgICBzdXBlci5yZXF1ZXN0VXBkYXRlKG5hbWUsIG9sZFZhbHVlLCBvcHRpb25zKTtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5pc0Nvbm5lY3RlZCAmJlxuICAgICAgICAobmFtZSA9PT0gJ2Rpc2FibGVkJyB8fCBuYW1lID09PSAnZm9ybURpc2FibGVkJyB8fCBuYW1lID09PSAncmVhZE9ubHknKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRlZGl0YWJsZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzaG91bGRWYWxpZGF0ZShuYW1lOiBQcm9wZXJ0eUtleSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHN1cGVyLnNob3VsZFZhbGlkYXRlKG5hbWUpIHx8IG5hbWUgPT09ICd2YWx1ZScgfHwgbmFtZSA9PT0gJ3JlcXVpcmVkJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdmFsaWRhdGUoKTogdm9pZCB7XG4gICAgICBzdXBlci52YWxpZGF0ZSgpO1xuICAgICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIXRoaXMudmFsdWUpIHtcbiAgICAgICAgdGhpcy5zZXRWYWxpZGl0eUZsYWcoJ3ZhbHVlTWlzc2luZycsIGkxOG5JbnB1dFJlcXVpcmVkW3RoaXMubGFuZ3VhZ2UuY3VycmVudF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVWYWxpZGl0eUZsYWcoJ3ZhbHVlTWlzc2luZycpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBwcmVwYXJlUGFzdGVkVGV4dCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2xlYW5UZXh0KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgLy8gVGhlIG5hdGl2ZSB0ZXh0IGlucHV0IHJlbW92ZXMgYWxsIG5ld2xpbmUgY2hhcmFjdGVycyBpZiBwYXNzZWQgdG8gdGhlIHZhbHVlIHByb3BlcnR5XG4gICAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgPyAnJyA6IGAke3ZhbHVlfWAucmVwbGFjZSgvW1xcblxccl0rL2csICcnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9kaXNwYXRjaElucHV0RXZlbnQoKTogdm9pZCB7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSk7XG4gICAgfVxuXG4gICAgQGV2ZW50T3B0aW9ucyh7IHBhc3NpdmU6IHRydWUgfSlcbiAgICBwcml2YXRlIF9jbGVhbkNoaWxkcmVuKCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuY2hpbGRFbGVtZW50Q291bnQpIHtcbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHRoaXMuY2hpbGRyZW4pIHtcbiAgICAgICAgICBlbGVtZW50LnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdXBkYXRlQ29udGVudGVkaXRhYmxlKCk6IHZvaWQge1xuICAgICAgaWYgKCFpc1NlcnZlciAmJiB0aGlzLmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFSZWFkT25seSA9IHRoaXMucmVhZE9ubHkgPyAndHJ1ZScgOiBudWxsO1xuICAgICAgICB0aGlzLmludGVybmFscy5hcmlhRGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkID8gJ3RydWUnIDogbnVsbDtcbiAgICAgICAgLy8gVE9ETygyMDI2KTogRmlyZWZveCBzdXBwb3J0cyBwbGFpbnRleHQtb25seSBzaW5jZSB2ZXJzaW9uIDEzNiAoTWFyY2ggMjAyNSkuXG4gICAgICAgIC8vIFVudGlsIHRoaXMgaXMgcGFydCBvZiBvdXIgYmFzZWxpbmUsIHdlIHNob3VsZCBmZWF0dXJlIGNoZWNrIHRvIGVuYWJsZSBpdC5cbiAgICAgICAgY29uc3QgdmFsdWUgPVxuICAgICAgICAgIHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkT25seVxuICAgICAgICAgICAgPyAnZmFsc2UnXG4gICAgICAgICAgICA6IHBsYWludGV4dE9ubHlTdXBwb3J0ZWRcbiAgICAgICAgICAgICAgPyAncGxhaW50ZXh0LW9ubHknXG4gICAgICAgICAgICAgIDogJ3RydWUnO1xuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJywgdmFsdWUpO1xuICAgICAgICAvLyBJbiB0aGUgcmVhZG9ubHkgY2FzZSwgd2UgZGlzYWJsZSBjb250ZW50ZWRpdGFibGUsIGJ1dCBpdCBzdGlsbFxuICAgICAgICAvLyBuZWVkcyB0byBiZSBmb2N1c2FibGUuIFdlIGFjaGlldmUgdGhpcyBieSBzZXR0aW5nIHRhYmluZGV4IGluIHRoYXQgY2FzZS5cbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKCd0YWJpbmRleCcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZW1pdENoYW5nZUlmTmVjZXNzYXJ5KCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuX3Nob3VsZEVtaXRDaGFuZ2UpIHtcbiAgICAgICAgdGhpcy5fc2hvdWxkRW1pdENoYW5nZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2NhblNlbGVjdCgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiAhaXNTZXJ2ZXIgJiYgIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMucmVhZE9ubHkgJiYgISF0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogdW5rbm93biB7XG4gICAgICByZXR1cm4gaHRtbGA8c2xvdCBAc2xvdGNoYW5nZT0ke3RoaXMuX2NsZWFuQ2hpbGRyZW59Pjwvc2xvdD5gO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBTYmJGb3JtQXNzb2NpYXRlZElucHV0RWxlbWVudCBhcyB1bmtub3duIGFzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRm9ybUFzc29jaWF0ZWRJbnB1dE1peGluVHlwZT4gJlxuICAgIFQ7XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQXNEQSxNQUFNLDRCQUE0QixNQUFjO0FBQzlDLE1BQUksVUFBVTtBQUNaLFdBQU87QUFBQSxFQUFBO0FBR1QsUUFBTSxNQUFNLFNBQVMsY0FB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
283
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1hc3NvY2lhdGVkLWlucHV0LW1peGluLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9taXhpbnMvZm9ybS1hc3NvY2lhdGVkLWlucHV0LW1peGluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICB0eXBlIExpdEVsZW1lbnQsXG4gIHR5cGUgUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGV2ZW50T3B0aW9ucywgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IHNiYklucHV0TW9kYWxpdHlEZXRlY3RvciB9IGZyb20gJy4uL2ExMXkuanMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgaXNXZWJraXQgfSBmcm9tICcuLi9kb20uanMnO1xuaW1wb3J0IHsgaTE4bklucHV0UmVxdWlyZWQgfSBmcm9tICcuLi9pMThuLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5pbXBvcnQgeyBTYmJEaXNhYmxlZE1peGluIH0gZnJvbSAnLi9kaXNhYmxlZC1taXhpbi5qcyc7XG5pbXBvcnQgeyBTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4gfSBmcm9tICcuL2VsZW1lbnQtaW50ZXJuYWxzLW1peGluLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgRm9ybVJlc3RvcmVSZWFzb24sXG4gIHR5cGUgRm9ybVJlc3RvcmVTdGF0ZSxcbiAgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbixcbn0gZnJvbSAnLi9mb3JtLWFzc29jaWF0ZWQtbWl4aW4uanMnO1xuaW1wb3J0IHsgU2JiUmVhZG9ubHlNaXhpbiB9IGZyb20gJy4vcmVhZG9ubHktbWl4aW4uanMnO1xuaW1wb3J0IHsgU2JiUmVxdWlyZWRNaXhpbiB9IGZyb20gJy4vcmVxdWlyZWQtbWl4aW4uanMnO1xuXG5leHBvcnQgZGVjbGFyZSBhYnN0cmFjdCBjbGFzcyBTYmJGb3JtQXNzb2NpYXRlZElucHV0TWl4aW5UeXBlIGV4dGVuZHMgU2JiUmVxdWlyZWRNaXhpbihcbiAgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbihTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4oTGl0RWxlbWVudCkpLFxuKSB7XG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IHN0cmluZyk7XG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogc3RyaW5nO1xuXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pO1xuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW47XG5cbiAgcHVibGljIHNldCByZWFkT25seSh2YWx1ZTogYm9vbGVhbik7XG4gIHB1YmxpYyBnZXQgcmVhZE9ubHkoKTogYm9vbGVhbjtcblxuICBwdWJsaWMgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpO1xuICBwdWJsaWMgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZztcblxuICAvKipcbiAgICogTWFrZXMgdGhlIHNlbGVjdGlvbiBlcXVhbCB0byB0aGUgY3VycmVudCBvYmplY3QuXG4gICAqXG4gICAqIFtNRE4gUmVmZXJlbmNlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9BUEkvSFRNTElucHV0RWxlbWVudC9zZWxlY3QpXG4gICAqL1xuICBwdWJsaWMgc2VsZWN0KCk6IHZvaWQ7XG5cbiAgcHVibGljIGZvcm1SZXNldENhbGxiYWNrKCk6IHZvaWQ7XG4gIHB1YmxpYyBmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2soc3RhdGU6IEZvcm1SZXN0b3JlU3RhdGUgfCBudWxsLCByZWFzb246IEZvcm1SZXN0b3JlUmVhc29uKTogdm9pZDtcblxuICBwcm90ZWN0ZWQgcHJlcGFyZVBhc3RlZFRleHQodGV4dDogc3RyaW5nKTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgbGFuZ3VhZ2U6IFNiYkxhbmd1YWdlQ29udHJvbGxlcjtcbn1cblxuY29uc3QgY2hlY2tQbGFpbnRleHRPbmx5U3VwcG9ydCA9ICgpOiBib29sZWFuID0+IHtcbiAgaWYgKGlzU2VydmVyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRpdi5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsICdQTEFJTlRFWFQtT05MWScpO1xuXG4gIC8vIElmIHBsYWludGV4dC1vbmx5IGlzIHN1cHBvcnRlZCwgdGhlIGF0dHJpYnV0ZSB2YWx1ZSBpc1xuICAvLyByZXR1cm5lZCBhcyBsb3dlci1jYXNlIGZyb20gdGhlIHByb3BlcnR5IGFjY2Vzcy5cbiAgcmV0dXJuIGRpdi5jb250ZW50RWRpdGFibGUgPT09ICdwbGFpbnRleHQtb25seSc7XG59O1xuY29uc3QgcGxhaW50ZXh0T25seVN1cHBvcnRlZCA9IGNoZWNrUGxhaW50ZXh0T25seVN1cHBvcnQoKTtcblxuLyoqXG4gKiBUaGUgU2JiRm9ybUFzc29jaWF0ZWRJbnB1dE1peGluIGVuYWJsZXMgbmF0aXZlIGZvcm0gc3VwcG9ydCBmb3IgdGV4dCBpbnB1dCBjb250cm9scy5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFNiYkZvcm1Bc3NvY2lhdGVkSW5wdXRNaXhpbiA9IDxUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxMaXRFbGVtZW50Pj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkZvcm1Bc3NvY2lhdGVkSW5wdXRNaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYkZvcm1Bc3NvY2lhdGVkSW5wdXRFbGVtZW50XG4gICAgZXh0ZW5kcyBTYmJSZWFkb25seU1peGluKFxuICAgICAgU2JiRGlzYWJsZWRNaXhpbihcbiAgICAgICAgU2JiUmVxdWlyZWRNaXhpbihTYmJGb3JtQXNzb2NpYXRlZE1peGluKFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbihzdXBlckNsYXNzKSkpLFxuICAgICAgKSxcbiAgICApXG4gICAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkZvcm1Bc3NvY2lhdGVkSW5wdXRNaXhpblR5cGU+XG4gIHtcbiAgICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IHJvbGUgPSAndGV4dGJveCc7XG5cbiAgICAvKipcbiAgICAgKiBBbiBlbGVtZW50IHdpdGggY29udGVudGVkaXRhYmxlIHdpbGwgbm90IGVtaXQgYSBjaGFuZ2UgZXZlbnQuIFRvIGFjaGlldmUgcGFyaXR5XG4gICAgICogd2l0aCBhIG5hdGl2ZSB0ZXh0IGlucHV0LCB3ZSBuZWVkIHRvIHRyYWNrIHdoZXRoZXIgYSBjaGFuZ2UgZXZlbnQgc2hvdWxkIGJlXG4gICAgICogZW1pdHRlZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9zaG91bGRFbWl0Q2hhbmdlID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogQSBuYXRpdmUgdGV4dCBpbnB1dCBhdHRlbXB0cyB0byBzdWJtaXQgdGhlIGZvcm0gd2hlbiBwcmVzc2luZyBFbnRlci5cbiAgICAgKiBUaGlzIGNhbiBiZSBwcmV2ZW50ZWQgYnkgY2FsbGluZyBwcmV2ZW50RGVmYXVsdCBvbiB0aGUga2V5ZG93biBldmVudC5cbiAgICAgKiBXZSB0cmFjayB3aGV0aGVyIHRvIHJlcXVlc3Qgc3VibWl0LCB3aGljaCBzaG91bGQgb2NjdXIgYmVmb3JlIHRoZSBrZXl1cFxuICAgICAqIGV2ZW50LlxuICAgICAqL1xuICAgIHByaXZhdGUgX3Nob3VsZFRyaWdnZXJTdWJtaXQgPSBmYWxzZTtcblxuICAgIHByb3RlY3RlZCBsYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgICAvKipcbiAgICAgKiBGb3JtIHR5cGUgb2YgZWxlbWVudC5cbiAgICAgKiBAZGVmYXVsdCAndGV4dCdcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiAndGV4dCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIHZhbHVlIG9mIHRoZSBpbnB1dC4gUmVmbGVjdHMgdGhlIGN1cnJlbnQgdGV4dCB2YWx1ZSBvZiB0aGlzIGlucHV0LlxuICAgICAqL1xuICAgIEBwcm9wZXJ0eSgpXG4gICAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX2NsZWFuVGV4dCh2YWx1ZSk7XG4gICAgICBpZiAodGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICAgIHRoaXMuaW5uZXJIVE1MID0gdGhpcy5fdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB0aGlzLl92YWx1ZSA/PyAnJztcbiAgICB9XG4gICAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZyA9ICcnO1xuXG4gICAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdwbGFjZWhvbGRlcicsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKCdwbGFjZWhvbGRlcicpO1xuICAgICAgfVxuICAgICAgdGhpcy5pbnRlcm5hbHMuYXJpYVBsYWNlaG9sZGVyID0gdmFsdWUgPyB2YWx1ZSA6IG51bGw7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInKSA/PyAnJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgLy8gV2UgcHJpbWFyaWx5IHVzZSBjYXB0dXJlIGV2ZW50IGxpc3RlbmVycywgYXMgd2Ugd2FudFxuICAgICAgLy8gb3VyIGxpc3RlbmVycyB0byBvY2N1ciBiZWZvcmUgY29uc3VtZXIgZXZlbnQgbGlzdGVuZXJzLlxuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oXG4gICAgICAgICdpbnB1dCcsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuX3ZhbHVlO1xuICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fY2xlYW5UZXh0KHRoaXMudGV4dENvbnRlbnQgPz8gJycpO1xuICAgICAgICAgIHRoaXMucmVxdWVzdFVwZGF0ZSgndmFsdWUnLCBvbGRWYWx1ZSk7XG4gICAgICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmFkZCgnaW50ZXJhY3RlZCcpO1xuICAgICAgICAgIHRoaXMuX3Nob3VsZEVtaXRDaGFuZ2UgPSB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICB7IGNhcHR1cmU6IHRydWUgfSxcbiAgICAgICk7XG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LignY2hhbmdlJywgKCkgPT4gKHRoaXMuX3Nob3VsZEVtaXRDaGFuZ2UgPSBmYWxzZSksIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKFxuICAgICAgICAna2V5ZG93bicsXG4gICAgICAgIChldmVudCkgPT4ge1xuICAgICAgICAgIC8vIFdlIHByZXZlbnQgcmVjdXJzaXZlIGV2ZW50cyBieSBjaGVja2luZyB0aGUgb3JpZ2luYWwgZXZlbnQgZm9yIGlzVHJ1c3RlZFxuICAgICAgICAgIC8vIHdoaWNoIGlzIGZhbHNlIGZvciBtYW51YWxseSBkaXNwYXRjaGVkIGV2ZW50cyAod2hpY2ggd2UgZGlzcGF0Y2ggYmVsb3cpLlxuICAgICAgICAgIGlmICgoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJ1xcbicpICYmIGV2ZW50LmlzVHJ1c3RlZCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5fc2hvdWxkVHJpZ2dlclN1Ym1pdCA9IHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgS2V5Ym9hcmRFdmVudCgna2V5ZG93bicsIGV2ZW50KSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGlzV2Via2l0ICYmXG4gICAgICAgICAgICB0aGlzLnZhbHVlICYmXG4gICAgICAgICAgICAoZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJyB8fCBldmVudC5rZXkgPT09ICdEZWxldGUnKSAmJlxuICAgICAgICAgICAgZXZlbnQuaXNUcnVzdGVkXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBJbiBXZWJraXQgcHJlc3NpbmcgQmFja3NwYWNlIG9yIERlbGV0ZSBjb21wbGV0ZWx5IHJlbW92ZXMgYWxsIHRoZSBjb250ZW50XG4gICAgICAgICAgICAvLyBpZiBjb250ZW50ZWRpdGFibGUgaXMgc2V0IG9uIGEgd2ViIGNvbXBvbmVudCBob3N0LlxuICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byByZXBsaWNhdGUgdGhlIG5vcm1hbCBkZWxldGUgYmVoYXZpb3IuXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBLZXlib2FyZEV2ZW50KCdrZXlkb3duJywgZXZlbnQpKSkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUmFuZ2UgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk/LmdldFJhbmdlQXQoMCk7XG4gICAgICAgICAgICBpZiAoIXNlbGVjdGVkUmFuZ2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRSYW5nZS5zdGFydE9mZnNldCAhPT0gc2VsZWN0ZWRSYW5nZS5lbmRPZmZzZXQpIHtcbiAgICAgICAgICAgICAgLy8gSWYgYSB0ZXh0IHJhbmdlIGlzIHNlbGVjdGVkLCB0aGVuIGRlbGV0ZSB0aGlzIHJhbmdlXG4gICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2UuZGVsZXRlQ29udGVudHMoKTtcbiAgICAgICAgICAgICAgdGhpcy5fZGlzcGF0Y2hJbnB1dEV2ZW50KCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0JhY2tzcGFjZScgJiYgc2VsZWN0ZWRSYW5nZS5zdGFydE9mZnNldCA+IDApIHtcbiAgICAgICAgICAgICAgLy8gV2hlbiBwcmVzc2luZyBCYWNrc3BhY2UsIHdlIHNlbGVjdCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIGZyb21cbiAgICAgICAgICAgICAgLy8gdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uIGFuZCBkZWxldGUgaXQuXG4gICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2Uuc2V0U3RhcnQoc2VsZWN0ZWRSYW5nZS5zdGFydENvbnRhaW5lciwgc2VsZWN0ZWRSYW5nZS5zdGFydE9mZnNldCAtIDEpO1xuICAgICAgICAgICAgICBzZWxlY3RlZFJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7XG4gICAgICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoSW5wdXRFdmVudCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdEZWxldGUnICYmIHNlbGVjdGVkUmFuZ2UuZW5kT2Zmc2V0IDwgdGhpcy52YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgLy8gV2hlbiBwcmVzc2luZyBEZWxldGUsIHdlIHNlbGVjdCB0aGUgbmV4dCBjaGFyYWN0ZXIgZnJvbVxuICAgICAgICAgICAgICAvLyB0aGUgY3VycmVudCBjdXJzb3IgcG9zaXRpb24gYW5kIGRlbGV0ZSBpdC5cbiAgICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZS5zZXRFbmQoc2VsZWN0ZWRSYW5nZS5lbmRDb250YWluZXIsIHNlbGVjdGVkUmFuZ2UuZW5kT2Zmc2V0ICsgMSk7XG4gICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2UuZGVsZXRlQ29udGVudHMoKTtcbiAgICAgICAgICAgICAgdGhpcy5fZGlzcGF0Y2hJbnB1dEV2ZW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7IGNhcHR1cmU6IHRydWUgfSxcbiAgICAgICk7XG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LihcbiAgICAgICAgJ2tleXVwJyxcbiAgICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyB8fCBldmVudC5rZXkgPT09ICdcXG4nKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlSWZOZWNlc3NhcnkoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zaG91bGRUcmlnZ2VyU3VibWl0KSB7XG4gICAgICAgICAgICAgIHRoaXMuX3Nob3VsZFRyaWdnZXJTdWJtaXQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5mb3JtPy5yZXF1ZXN0U3VibWl0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7IGNhcHR1cmU6IHRydWUgfSxcbiAgICAgICk7XG4gICAgICAvLyBjb250ZW50ZWRpdGFibGUgYWxsb3dzIHBhc3RpbmcgcmljaCBjb250ZW50IGludG8gaXRzIGhvc3QuXG4gICAgICAvLyBXZSBwcmV2ZW50IHRoaXMgYnkgbGlzdGVuaW5nIHRvIHRoZSBwYXN0ZSBldmVudCBhbmRcbiAgICAgIC8vIGV4dHJhY3RpbmcgdGhlIHBsYWluIHRleHQgZnJvbSB0aGUgcGFzdGVkIGNvbnRlbnRcbiAgICAgIC8vIGFuZCBpbnNlcnRpbmcgaXQgaW50byB0aGUgc2VsZWN0ZWQgcmFuZ2UgKGN1cnNvciBwb3NpdGlvblxuICAgICAgLy8gb3Igc2VsZWN0aW9uKS5cbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdwYXN0ZScsIChlKSA9PiB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgdGV4dCA9IHRoaXMuX2NsZWFuVGV4dChlLmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQvcGxhaW4nKSA/PyAnJyk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUmFuZ2UgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk/LmdldFJhbmdlQXQoMCk7XG4gICAgICAgIGlmICghc2VsZWN0ZWRSYW5nZSB8fCAhdGV4dCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGVjdGVkUmFuZ2UuZGVsZXRlQ29udGVudHMoKTtcbiAgICAgICAgc2VsZWN0ZWRSYW5nZS5pbnNlcnROb2RlKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMucHJlcGFyZVBhc3RlZFRleHQodGV4dCkpKTtcbiAgICAgICAgc2VsZWN0ZWRSYW5nZS5zZXRTdGFydChzZWxlY3RlZFJhbmdlLmVuZENvbnRhaW5lciwgc2VsZWN0ZWRSYW5nZS5lbmRPZmZzZXQpO1xuICAgICAgICB0aGlzLl9kaXNwYXRjaElucHV0RXZlbnQoKTtcbiAgICAgIH0pO1xuICAgICAgLy8gV2hlbiBmb2N1c2luZyBhIHRleHQgaW5wdXQgdmlhIGtleWJvYXJkLCB0aGUgdGV4dCBjb250ZW50IHNob3VsZCBiZSBzZWxlY3RlZC5cbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdmb2N1cycsICgpID0+IHtcbiAgICAgICAgaWYgKHNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci5tb3N0UmVjZW50TW9kYWxpdHkgPT09ICdrZXlib2FyZCcpIHtcbiAgICAgICAgICAvLyBUT0RPOiBUaGlzIGRvZXMgbm90IHNlZW0gdG8gd29yayBpbiBGaXJlZm94IHdpdGggcmVhZG9ubHkuXG4gICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpPy5zZWxlY3RBbGxDaGlsZHJlbih0aGlzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvLyBPbiBibHVyIHRoZSBuYXRpdmUgdGV4dCBpbnB1dCBzY3JvbGxzIHRoZSB0ZXh0IHRvIHRoZSBzdGFydCBvZiB0aGUgdGV4dC5cbiAgICAgIC8vIFdlIG1pbWljayB0aGF0IGJ5IHJlc2V0dGluZyB0aGUgc2Nyb2xsIHBvc2l0aW9uLlxuICAgICAgLy8gV2UgYWxzbyB1bnNldCBhbnkgc2VsZWN0aW9uIHRvIGFsaWduIHdpdGggdGhlIG5hdGl2ZSB0ZXh0IGlucHV0LlxuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oXG4gICAgICAgICdibHVyJyxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKT8ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICAgICAgdGhpcy5fZW1pdENoYW5nZUlmTmVjZXNzYXJ5KCk7XG4gICAgICAgICAgdGhpcy5zY3JvbGxMZWZ0ID0gMDtcbiAgICAgICAgfSxcbiAgICAgICAgeyBjYXB0dXJlOiB0cnVlIH0sXG4gICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBpc0Rpc2FibGVkRXh0ZXJuYWxseSgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1EaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgICAgdGhpcy5pbnRlcm5hbHMuYXJpYU11bHRpTGluZSA9ICdmYWxzZSc7XG4gICAgICB0aGlzLl91cGRhdGVDb250ZW50ZWRpdGFibGUoKTtcblxuICAgICAgLy8gV2Ugd2FudCB0byByZXBsYWNlIGFueSBjb250ZW50IGJ5IGp1c3QgdGhlIHRleHQgY29udGVudC5cbiAgICAgIHRoaXMuaW5uZXJIVE1MID0gdGhpcy52YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZm9jdXMob3B0aW9ucz86IEZvY3VzT3B0aW9ucyk6IHZvaWQge1xuICAgICAgc3VwZXIuZm9jdXMob3B0aW9ucyk7XG4gICAgICAvLyBCeSBkZWZhdWx0LCB3aGVuIGNhbGxpbmcgZm9jdXMgb24gYW4gaW5wdXQgZWxlbWVudCwgdGhlIGN1cnNvciBpcyBwbGFjZWRcbiAgICAgIC8vIGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0IHRleHQuIEhvd2V2ZXIsIHdpdGggY29udGVudGVkaXRhYmxlLCB0aGUgY3Vyc29yXG4gICAgICAvLyBpcyBwbGFjZWQgYXQgdGhlIGJlZ2lubmluZywgc28gd2UgbW92ZSBpdCB0byB0aGUgZW5kLCBpZiB0aGF0IGlzIHRoZSBjYXNlLlxuICAgICAgaWYgKHRoaXMuX2NhblNlbGVjdCgpKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgaWYgKCFzZWxlY3Rpb24pIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJhbmdlID0gc2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwID8gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCkgOiBudWxsO1xuICAgICAgICBpZiAocmFuZ2UgJiYgcmFuZ2Uuc3RhcnRPZmZzZXQgIT09IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgIHJhbmdlLnNldFN0YXJ0KHRoaXMuZmlyc3RDaGlsZCEsIHRoaXMudGV4dENvbnRlbnQhLmxlbmd0aCk7XG4gICAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpO1xuICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhcbiAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgIG9sZDogc3RyaW5nIHwgbnVsbCxcbiAgICAgIHZhbHVlOiBzdHJpbmcgfCBudWxsLFxuICAgICk6IHZvaWQge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgbmF0aXZlIHRleHQgaW5wdXQgY2hhbmdlcyB0aGUgdmFsdWUgcHJvcGVydHkgd2hlbiB0aGUgdmFsdWUgYXR0cmlidXRlIGlzXG4gICAgICAgKiBjaGFuZ2VkIHVuZGVyIHRoZSBjb25kaXRpb24gdGhhdCBubyBpbnB1dCBldmVudCBoYXMgb2NjdXJlZCBzaW5jZSBjcmVhdGlvblxuICAgICAgICogb3IgdGhlIGxhc3QgZm9ybSByZXNldC5cbiAgICAgICAqL1xuICAgICAgaWYgKG5hbWUgIT09ICd2YWx1ZScgfHwgIXRoaXMuaW50ZXJuYWxzLnN0YXRlcy5oYXMoJ2ludGVyYWN0ZWQnKSkge1xuICAgICAgICBzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sobmFtZSwgb2xkLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBmb3JtIGlzIGJlaW5nIHJlc2V0LlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGZvcm1SZXNldENhbGxiYWNrKCk6IHZvaWQge1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZSgnaW50ZXJhY3RlZCcpO1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0QXR0cmlidXRlKCd2YWx1ZScpID8/ICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBDYWxsZWQgd2hlbiB0aGUgYnJvd3NlciBpcyB0cnlpbmcgdG8gcmVzdG9yZSBlbGVtZW504oCZcyBzdGF0ZSB0byBzdGF0ZSBpbiB3aGljaCBjYXNlXG4gICAgICogIHJlYXNvbiBpcyBcInJlc3RvcmVcIiwgb3Igd2hlbiB0aGUgYnJvd3NlciBpcyB0cnlpbmcgdG8gZnVsZmlsbCBhdXRvZmlsbCBvbiBiZWhhbGYgb2ZcbiAgICAgKiAgdXNlciBpbiB3aGljaCBjYXNlIHJlYXNvbiBpcyBcImF1dG9jb21wbGV0ZVwiLlxuICAgICAqICBJbiB0aGUgY2FzZSBvZiBcInJlc3RvcmVcIiwgc3RhdGUgaXMgYSBzdHJpbmcsIEZpbGUsIG9yIEZvcm1EYXRhIG9iamVjdFxuICAgICAqICBwcmV2aW91c2x5IHNldCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIHNldEZvcm1WYWx1ZS5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2soXG4gICAgICBzdGF0ZTogRm9ybVJlc3RvcmVTdGF0ZSB8IG51bGwsXG4gICAgICBfcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbixcbiAgICApOiB2b2lkIHtcbiAgICAgIGlmIChzdGF0ZSAmJiB0eXBlb2Ygc3RhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBzdGF0ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYWtlcyB0aGUgc2VsZWN0aW9uIGVxdWFsIHRvIHRoZSBjdXJyZW50IG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0FQSS9IVE1MSW5wdXRFbGVtZW50L3NlbGVjdFxuICAgICAqL1xuICAgIHB1YmxpYyBzZWxlY3QoKTogdm9pZCB7XG4gICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk/LnNlbGVjdEFsbENoaWxkcmVuKHRoaXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgICAvLyBJZiB0aGUgdmFsdWUgd2FzIGFzc2lnbmVkIGJlZm9yZSBmaXJzdFVwZGF0ZSwgd2UgaGF2ZSB0b1xuICAgICAgLy8gd3JpdGUgaXQgdGhlIGRvY3VtZW50IHRvIGJlIHZpc3VhbGx5IHNlZW5cbiAgICAgIGlmICh0aGlzLnZhbHVlICYmICF0aGlzLmlubmVySFRNTC5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5pbm5lckhUTUwgPSB0aGlzLnZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgICAgbmFtZT86IFByb3BlcnR5S2V5LFxuICAgICAgb2xkVmFsdWU/OiB1bmtub3duLFxuICAgICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICAgKTogdm9pZCB7XG4gICAgICBzdXBlci5yZXF1ZXN0VXBkYXRlKG5hbWUsIG9sZFZhbHVlLCBvcHRpb25zKTtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5pc0Nvbm5lY3RlZCAmJlxuICAgICAgICAobmFtZSA9PT0gJ2Rpc2FibGVkJyB8fCBuYW1lID09PSAnZm9ybURpc2FibGVkJyB8fCBuYW1lID09PSAncmVhZE9ubHknKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRlZGl0YWJsZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzaG91bGRWYWxpZGF0ZShuYW1lOiBQcm9wZXJ0eUtleSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHN1cGVyLnNob3VsZFZhbGlkYXRlKG5hbWUpIHx8IG5hbWUgPT09ICd2YWx1ZScgfHwgbmFtZSA9PT0gJ3JlcXVpcmVkJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdmFsaWRhdGUoKTogdm9pZCB7XG4gICAgICBzdXBlci52YWxpZGF0ZSgpO1xuICAgICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIXRoaXMudmFsdWUpIHtcbiAgICAgICAgdGhpcy5zZXRWYWxpZGl0eUZsYWcoJ3ZhbHVlTWlzc2luZycsIGkxOG5JbnB1dFJlcXVpcmVkW3RoaXMubGFuZ3VhZ2UuY3VycmVudF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVWYWxpZGl0eUZsYWcoJ3ZhbHVlTWlzc2luZycpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBwcmVwYXJlUGFzdGVkVGV4dCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2xlYW5UZXh0KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgLy8gVGhlIG5hdGl2ZSB0ZXh0IGlucHV0IHJlbW92ZXMgYWxsIG5ld2xpbmUgY2hhcmFjdGVycyBpZiBwYXNzZWQgdG8gdGhlIHZhbHVlIHByb3BlcnR5XG4gICAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgPyAnJyA6IGAke3ZhbHVlfWAucmVwbGFjZSgvW1xcblxccl0rL2csICcnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9kaXNwYXRjaElucHV0RXZlbnQoKTogdm9pZCB7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSk7XG4gICAgfVxuXG4gICAgQGV2ZW50T3B0aW9ucyh7IHBhc3NpdmU6IHRydWUgfSlcbiAgICBwcml2YXRlIF9jbGVhbkNoaWxkcmVuKCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuY2hpbGRFbGVtZW50Q291bnQpIHtcbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHRoaXMuY2hpbGRyZW4pIHtcbiAgICAgICAgICBlbGVtZW50LnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdXBkYXRlQ29udGVudGVkaXRhYmxlKCk6IHZvaWQge1xuICAgICAgaWYgKCFpc1NlcnZlciAmJiB0aGlzLmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFSZWFkT25seSA9IHRoaXMucmVhZE9ubHkgPyAndHJ1ZScgOiBudWxsO1xuICAgICAgICB0aGlzLmludGVybmFscy5hcmlhRGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkID8gJ3RydWUnIDogbnVsbDtcbiAgICAgICAgLy8gVE9ETygyMDI2KTogRmlyZWZveCBzdXBwb3J0cyBwbGFpbnRleHQtb25seSBzaW5jZSB2ZXJzaW9uIDEzNiAoTWFyY2ggMjAyNSkuXG4gICAgICAgIC8vIFVudGlsIHRoaXMgaXMgcGFydCBvZiBvdXIgYmFzZWxpbmUsIHdlIHNob3VsZCBmZWF0dXJlIGNoZWNrIHRvIGVuYWJsZSBpdC5cbiAgICAgICAgY29uc3QgdmFsdWUgPVxuICAgICAgICAgIHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkT25seVxuICAgICAgICAgICAgPyAnZmFsc2UnXG4gICAgICAgICAgICA6IHBsYWludGV4dE9ubHlTdXBwb3J0ZWRcbiAgICAgICAgICAgICAgPyAncGxhaW50ZXh0LW9ubHknXG4gICAgICAgICAgICAgIDogJ3RydWUnO1xuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJywgdmFsdWUpO1xuICAgICAgICAvLyBJbiB0aGUgcmVhZG9ubHkgY2FzZSwgd2UgZGlzYWJsZSBjb250ZW50ZWRpdGFibGUsIGJ1dCBpdCBzdGlsbFxuICAgICAgICAvLyBuZWVkcyB0byBiZSBmb2N1c2FibGUuIFdlIGFjaGlldmUgdGhpcyBieSBzZXR0aW5nIHRhYmluZGV4IGluIHRoYXQgY2FzZS5cbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKCd0YWJpbmRleCcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZW1pdENoYW5nZUlmTmVjZXNzYXJ5KCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuX3Nob3VsZEVtaXRDaGFuZ2UpIHtcbiAgICAgICAgdGhpcy5fc2hvdWxkRW1pdENoYW5nZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2NhblNlbGVjdCgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiAhaXNTZXJ2ZXIgJiYgIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMucmVhZE9ubHkgJiYgISF0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogdW5rbm93biB7XG4gICAgICByZXR1cm4gaHRtbGA8c2xvdCBAc2xvdGNoYW5nZT0ke3RoaXMuX2NsZWFuQ2hpbGRyZW59Pjwvc2xvdD5gO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBTYmJGb3JtQXNzb2NpYXRlZElucHV0RWxlbWVudCBhcyB1bmtub3duIGFzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRm9ybUFzc29jaWF0ZWRJbnB1dE1peGluVHlwZT4gJlxuICAgIFQ7XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQXNEQSxNQUFNLDRCQUE0QixNQUFjO0FBQzlDLE1BQUksVUFBVTtBQUNaLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxNQUFNLFNBQVMsY0FB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
@@ -276,4 +276,4 @@ const SbbFormAssociatedMixin = (superClass) => {
276
276
  export {
277
277
  SbbFormAssociatedMixin
278
278
  };
279
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1hc3NvY2lhdGVkLW1peGluLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9taXhpbnMvZm9ybS1hc3NvY2lhdGVkLW1peGluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZSAqL1xuaW1wb3J0IHR5cGUgeyBMaXRFbGVtZW50LCBQcm9wZXJ0eURlY2xhcmF0aW9uLCBQcm9wZXJ0eVZhbHVlcyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGlzV2Via2l0IH0gZnJvbSAnLi4vZG9tLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpblR5cGUgfSBmcm9tICcuL2VsZW1lbnQtaW50ZXJuYWxzLW1peGluLmpzJztcblxuZGVjbGFyZSBnbG9iYWwge1xuICAvKipcbiAgICogRGVmaW5lcyBjdXN0b20gdmFsaWRpdHkgc3RhdGUgcHJvcGVydGllcy5cbiAgICovXG4gIGludGVyZmFjZSBDdXN0b21WYWxpZGl0eVN0YXRlIHt9XG4gIGludGVyZmFjZSBWYWxpZGl0eVN0YXRlIGV4dGVuZHMgQ3VzdG9tVmFsaWRpdHlTdGF0ZSB7fVxuICBpbnRlcmZhY2UgVmFsaWRpdHlTdGF0ZUZsYWdzIGV4dGVuZHMgUGFydGlhbDxDdXN0b21WYWxpZGl0eVN0YXRlPiB7fVxufVxuXG5jb25zdCB2YWxpZGl0eUtleXM6IFJlcXVpcmVkPE9taXQ8VmFsaWRpdHlTdGF0ZUZsYWdzLCBrZXlvZiBDdXN0b21WYWxpZGl0eVN0YXRlPj4gPSB7XG4gIGJhZElucHV0OiBmYWxzZSxcbiAgY3VzdG9tRXJyb3I6IGZhbHNlLFxuICBwYXR0ZXJuTWlzbWF0Y2g6IGZhbHNlLFxuICByYW5nZU92ZXJmbG93OiBmYWxzZSxcbiAgcmFuZ2VVbmRlcmZsb3c6IGZhbHNlLFxuICBzdGVwTWlzbWF0Y2g6IGZhbHNlLFxuICB0b29Mb25nOiBmYWxzZSxcbiAgdG9vU2hvcnQ6IGZhbHNlLFxuICB0eXBlTWlzbWF0Y2g6IGZhbHNlLFxuICB2YWx1ZU1pc3Npbmc6IGZhbHNlLFxufTtcbi8vIFdlIG5lZWQgVmFsaWRpdHlTdGF0ZSBpbiB0aGUgZ2xvYmFsIGNvbnRleHQsIGFzIHdlIGNoZWNrIHRoZSBwcm90b3R5cGUgZm9yXG4vLyBleHRlbnNpb25zLiBJbiBlbnZpcm9ubWVudHMgd2hlcmUgdGhhdCBpcyBub3QgdGhlIGNhc2UgKGUuZy4gTm9kZS5qcykgd2Vcbi8vIHBhdGNoIGl0IHdpdGggYSBtaW5pbWFsIHNoaW0uXG5pZiAodHlwZW9mIFZhbGlkaXR5U3RhdGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIGNvbnN0IHZhbGlkaXR5Q2xhc3MgPSBjbGFzcyBWYWxpZGl0eVN0YXRlIHtcbiAgICBwdWJsaWMgZ2V0IHZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbGxlZ2FsIGNvbnN0cnVjdG9yJyk7XG4gICAgfVxuICB9O1xuICBPYmplY3QuZW50cmllcyh2YWxpZGl0eUtleXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT5cbiAgICBPYmplY3QuYXNzaWduKHZhbGlkaXR5Q2xhc3MucHJvdG90eXBlLCB7XG4gICAgICBnZXQgW2tleV0oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH0sXG4gICAgfSksXG4gICk7XG4gIGdsb2JhbFRoaXMuVmFsaWRpdHlTdGF0ZSA9IHZhbGlkaXR5Q2xhc3MgYXMgdW5rbm93biBhcyB0eXBlb2YgVmFsaWRpdHlTdGF0ZTtcbn1cblxuZXhwb3J0IGRlY2xhcmUgYWJzdHJhY3QgY2xhc3MgU2JiRm9ybUFzc29jaWF0ZWRNaXhpblR5cGUge1xuICBwdWJsaWMgZ2V0IGZvcm0oKTogSFRNTEZvcm1FbGVtZW50IHwgbnVsbDtcbiAgcHVibGljIGFjY2Vzc29yIG5hbWU6IHN0cmluZztcbiAgcHVibGljIGdldCB0eXBlKCk6IHN0cmluZztcblxuICBwdWJsaWMgYWJzdHJhY3QgYWNjZXNzb3IgdmFsdWU6IHVua25vd247XG5cbiAgcHVibGljIGdldCB2YWxpZGl0eSgpOiBWYWxpZGl0eVN0YXRlO1xuICBwdWJsaWMgZ2V0IHZhbGlkYXRpb25NZXNzYWdlKCk6IHN0cmluZztcbiAgcHVibGljIGdldCB3aWxsVmFsaWRhdGUoKTogYm9vbGVhbjtcblxuICBwcm90ZWN0ZWQgZm9ybURpc2FibGVkOiBib29sZWFuO1xuXG4gIHB1YmxpYyBjaGVja1ZhbGlkaXR5KCk6IGJvb2xlYW47XG4gIHB1YmxpYyByZXBvcnRWYWxpZGl0eSgpOiBib29sZWFuO1xuICBwdWJsaWMgc2V0Q3VzdG9tVmFsaWRpdHkobWVzc2FnZTogc3RyaW5nKTogdm9pZDtcblxuICBwdWJsaWMgZm9ybUFzc29jaWF0ZWRDYWxsYmFjaz8oZm9ybTogSFRNTEZvcm1FbGVtZW50IHwgbnVsbCk6IHZvaWQ7XG4gIHB1YmxpYyBmb3JtRGlzYWJsZWRDYWxsYmFjayhkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQ7XG4gIHB1YmxpYyBhYnN0cmFjdCBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkO1xuICBwdWJsaWMgYWJzdHJhY3QgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKFxuICAgIHN0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCxcbiAgICByZWFzb246IEZvcm1SZXN0b3JlUmVhc29uLFxuICApOiB2b2lkO1xuXG4gIHByb3RlY3RlZCB1cGRhdGVGb3JtVmFsdWUoKTogdm9pZDtcbiAgcHJvdGVjdGVkIGZvcm1TdGF0ZT8oKTogRm9ybVJlc3RvcmVTdGF0ZTtcbiAgcHJvdGVjdGVkIHNldFZhbGlkaXR5RmxhZzxUIGV4dGVuZHMga2V5b2YgVmFsaWRpdHlTdGF0ZUZsYWdzPihcbiAgICBmbGFnOiBULFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBmbGFnVmFsdWU/OiBWYWxpZGl0eVN0YXRlRmxhZ3NbVF0sXG4gICk6IHZvaWQ7XG4gIHByb3RlY3RlZCByZW1vdmVWYWxpZGl0eUZsYWc8VCBleHRlbmRzIGtleW9mIFZhbGlkaXR5U3RhdGVGbGFncz4oZmxhZzogVCk6IHZvaWQ7XG4gIHByb3RlY3RlZCB2YWxpZGF0ZSgpOiB2b2lkO1xuICBwcm90ZWN0ZWQgc2hvdWxkVmFsaWRhdGUobmFtZTogUHJvcGVydHlLZXkgfCB1bmRlZmluZWQpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBGb3JtQXNzb2NpYXRlZE1peGluIGVuYWJsZXMgbmF0aXZlIGZvcm0gc3VwcG9ydCBmb3IgY3VzdG9tIGNvbnRyb2xzLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbiA9IDxcbiAgVCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudCAmIFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpblR5cGU+LFxuPihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRm9ybUFzc29jaWF0ZWRNaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYkZvcm1Bc3NvY2lhdGVkRWxlbWVudFxuICAgIGV4dGVuZHMgc3VwZXJDbGFzc1xuICAgIGltcGxlbWVudHMgUGFydGlhbDxTYmJGb3JtQXNzb2NpYXRlZE1peGluVHlwZT5cbiAge1xuICAgIHB1YmxpYyBzdGF0aWMgZm9ybUFzc29jaWF0ZWQgPSB0cnVlO1xuXG4gICAgcHVibGljIGFic3RyYWN0IGFjY2Vzc29yIHZhbHVlOiB1bmtub3duO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgZm9ybSBvd25lciBvZiB0aGlzIGVsZW1lbnQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBmb3JtKCk6IEhUTUxGb3JtRWxlbWVudCB8IG51bGwge1xuICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxzLmZvcm07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgZm9ybSBlbGVtZW50LiBXaWxsIGJlIHJlYWQgZnJvbSBuYW1lIGF0dHJpYnV0ZS5cbiAgICAgKlxuICAgICAqIEBkZXNjcmlwdGlvbiBEZXZlbG9wZXIgbm90ZTogSW4gdGhpcyBjYXNlIHVwZGF0aW5nIHRoZSBhdHRyaWJ1dGUgbXVzdCBiZSBzeW5jaHJvbm91cy5cbiAgICAgKiBEdWUgdG8gdGhpcyBpdCBpcyBpbXBsZW1lbnRlZCBhcyBhIGdldHRlci9zZXR0ZXIgYW5kIHRoZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soKSBoYW5kbGVzIHRoZSBkaWZmIGNoZWNrLlxuICAgICAqL1xuICAgIEBwcm9wZXJ0eSgpXG4gICAgcHVibGljIHNldCBuYW1lKG5hbWU6IHN0cmluZykge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBgJHtuYW1lfWApO1xuXG4gICAgICAvLyBGb3IgYEZvcm1EYXRhYCB2YWx1ZXMsIHdlIGhhdmUgdG8gbWFudWFsbHkgdXBkYXRlIHRoZSBmaWVsZE5hbWUga2V5XG4gICAgICB0aGlzLnVwZGF0ZUZvcm1WYWx1ZSgpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZSgnbmFtZScpID8/ICcnO1xuICAgIH1cblxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsTmFtZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBWYWxpZGl0eVN0YXRlIG9iamVjdCBmb3IgdGhpcyBlbGVtZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdmFsaWRpdHkoKTogVmFsaWRpdHlTdGF0ZSB7XG4gICAgICByZXR1cm4gdGhpcy5pbnRlcm5hbHMudmFsaWRpdHk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudCBlcnJvciBtZXNzYWdlLCBpZiBhdmFpbGFibGUsIHdoaWNoIGNvcnJlc3BvbmRzXG4gICAgICogdG8gdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBzdGF0ZS5cbiAgICAgKiBQbGVhc2Ugbm90ZSB0aGF0IG9ubHkgb25lIG1lc3NhZ2UgaXMgcmV0dXJuZWQgYXQgYSB0aW1lIChlLmcuIGlmXG4gICAgICogbXVsdGlwbGUgdmFsaWRpdHkgc3RhdGVzIGFyZSBpbnZhbGlkLCBvbmx5IHRoZSBjaHJvbm9sb2dpY2FsbHkgZmlyc3Qgb25lXG4gICAgICogaXMgcmV0dXJuZWQgdW50aWwgaXQgaXMgZml4ZWQsIGF0IHdoaWNoIHBvaW50IHRoZSBuZXh0IG1lc3NhZ2UgbWlnaHQgYmVcbiAgICAgKiByZXR1cm5lZCwgaWYgaXQgaXMgc3RpbGwgYXBwbGljYWJsZSkuIEFsc28gYSBjdXN0b20gdmFsaWRpdHkgbWVzc2FnZVxuICAgICAqIChzZWUgYmVsb3cpIGhhcyBwcmVjZWRlbmNlIG92ZXIgbmF0aXZlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gICAgICovXG4gICAgcHVibGljIGdldCB2YWxpZGF0aW9uTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxzLnZhbGlkYXRpb25NZXNzYWdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGVsZW1lbnQgd2lsbCBiZSB2YWxpZGF0ZWRcbiAgICAgKiB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZDsgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgd2lsbFZhbGlkYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxzLndpbGxWYWxpZGF0ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF92YWxpZGl0eVN0YXRlcyA9IG5ldyBNYXA8XG4gICAgICBrZXlvZiBWYWxpZGl0eVN0YXRlRmxhZ3MsXG4gICAgICB7IGZsYWdWYWx1ZTogdW5rbm93bjsgbWVzc2FnZTogc3RyaW5nIH1cbiAgICA+KCk7XG5cbiAgICAvKiogV2hlbmV2ZXIgYSBzdXJyb3VuZGluZyBmb3JtIG9yIGZpZWxkc2V0IGlzIGNoYW5naW5nIGl0cyBkaXNhYmxlZCBzdGF0ZS4gKi9cbiAgICBAc3RhdGUoKSBwcm90ZWN0ZWQgYWNjZXNzb3IgZm9ybURpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoLi4uYXJnczogYW55W10pIHtcbiAgICAgIHN1cGVyKC4uLmFyZ3MpO1xuICAgICAgLy8gV2Ugd2FudCB0byBwcmV2ZW50IHRoZSBuYXRpdmUgYnJvd3NlciB2YWxpZGF0aW9uIG1lc3NhZ2UgcG9wb3ZlclxuICAgICAgLy8gdG8gYmUgc2hvd24uIFRoaXMgYWxzbyBwcmV2ZW50cyBhIGJ1ZyBpbiBXZWJLaXQsIHdoaWNoIHdvdWxkIG5vdFxuICAgICAgLy8gYWxsb3cgaG9zdCBhcyB0aGUgdmFsaWRpdHkgYW5jaG9yOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5ODMyXG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LignaW52YWxpZCcsIChlKSA9PiBlLnByZXZlbnREZWZhdWx0KCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soXG4gICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICBvbGQ6IHN0cmluZyB8IG51bGwsXG4gICAgICB2YWx1ZTogc3RyaW5nIHwgbnVsbCxcbiAgICApOiB2b2lkIHtcbiAgICAgIGlmIChuYW1lICE9PSAnbmFtZScgfHwgb2xkICE9PSB2YWx1ZSkge1xuICAgICAgICBzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sobmFtZSwgb2xkLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoaXMgZWxlbWVudCBoYXMgbm8gdmFsaWRpdHkgcHJvYmxlbXM7IGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKiBGaXJlcyBhbiBpbnZhbGlkIGV2ZW50IGF0IHRoZSBlbGVtZW50IGluIHRoZSBsYXR0ZXIgY2FzZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2hlY2tWYWxpZGl0eSgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVybmFscy5jaGVja1ZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoaXMgZWxlbWVudCBoYXMgbm8gdmFsaWRpdHkgcHJvYmxlbXM7IG90aGVyd2lzZSxcbiAgICAgKiByZXR1cm5zIGZhbHNlLCBmaXJlcyBhbiBpbnZhbGlkIGV2ZW50IGF0IHRoZSBlbGVtZW50LFxuICAgICAqIGFuZCAoaWYgdGhlIGV2ZW50IGlzbid0IGNhbmNlbGVkKSByZXBvcnRzIHRoZSBwcm9ibGVtIHRvIHRoZSB1c2VyLlxuICAgICAqL1xuICAgIHB1YmxpYyByZXBvcnRWYWxpZGl0eSgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVybmFscy5yZXBvcnRWYWxpZGl0eSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGN1c3RvbSB2YWxpZGl0eSBtZXNzYWdlIGZvciB0aGlzIGVsZW1lbnQuIFVzZSB0aGUgZW1wdHkgc3RyaW5nXG4gICAgICogdG8gaW5kaWNhdGUgdGhhdCB0aGUgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgY3VzdG9tIHZhbGlkaXR5IGVycm9yLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRDdXN0b21WYWxpZGl0eShtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICAgIHRoaXMuc2V0VmFsaWRpdHlGbGFnKCdjdXN0b21FcnJvcicsIG1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVWYWxpZGl0eUZsYWcoJ2N1c3RvbUVycm9yJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgZm9ybSBlbGVtZW50IGNoYW5nZXMuXG4gICAgICogRWxlbWVudEludGVybmFscy5mb3JtIHJldHVybnMgdGhlIGFzc29jaWF0ZWQgZnJvbSBlbGVtZW50LlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGZvcm1Bc3NvY2lhdGVkQ2FsbGJhY2s/KGZvcm06IEhUTUxGb3JtRWxlbWVudCB8IG51bGwpOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW5ldmVyIGEgc3Vycm91bmRpbmcgZm9ybSAvIGZpZWxkc2V0IGNoYW5nZXMgZGlzYWJsZWQgc3RhdGUuXG4gICAgICogQHBhcmFtIGRpc2FibGVkXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZm9ybURpc2FibGVkQ2FsbGJhY2soZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgIC8vIFRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIGlmIHRoZSBkaXNhYmxlZCBwcm9wZXJ0eSBjaGFuZ2VzIG9yIHRoZSBkaXNhYmxlZCBhdHRyaWJ1dGUgb2YgYSBmaWVsZHNldCBvciBmb3JtIGNoYW5nZXMuXG4gICAgICAvLyBXZSBuZWVkIHRvIHBvc3Rwb25lIHRoZSBhc3NpZ25tZW50LCBvdGhlcndpc2UgaXQgaW50ZXJmZXJlcyB3aXRoIGRpc2FibGVkIHN0YXR1cyBzZXR0aW5nXG4gICAgICAvLyBhbmQgbGVhZHMgdG8gYSB3cm9uZyBzdGF0ZSAoZS5nLiBlbWJlZGRlZCBzYmItdmlzdWFsLWNoZWNrYm94KS5cbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmZvcm1EaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBmb3JtIGlzIGJlaW5nIHJlc2V0LlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IGZvcm1SZXNldENhbGxiYWNrKCk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiAgQ2FsbGVkIHdoZW4gdGhlIGJyb3dzZXIgaXMgdHJ5aW5nIHRvIHJlc3RvcmUgZWxlbWVudOKAmXMgc3RhdGUgdG8gc3RhdGUgaW4gd2hpY2ggY2FzZVxuICAgICAqICByZWFzb24gaXMgXCJyZXN0b3JlXCIsIG9yIHdoZW4gdGhlIGJyb3dzZXIgaXMgdHJ5aW5nIHRvIGZ1bGZpbGwgYXV0b2ZpbGwgb24gYmVoYWxmIG9mXG4gICAgICogIHVzZXIgaW4gd2hpY2ggY2FzZSByZWFzb24gaXMgXCJhdXRvY29tcGxldGVcIi5cbiAgICAgKiAgSW4gdGhlIGNhc2Ugb2YgXCJyZXN0b3JlXCIsIHN0YXRlIGlzIGEgc3RyaW5nLCBGaWxlLCBvciBGb3JtRGF0YSBvYmplY3RcbiAgICAgKiAgcHJldmlvdXNseSBzZXQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBzZXRGb3JtVmFsdWUuXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKFxuICAgICAgc3RhdGU6IEZvcm1SZXN0b3JlU3RhdGUgfCBudWxsLFxuICAgICAgcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbixcbiAgICApOiB2b2lkO1xuXG4gICAgcHVibGljIG92ZXJyaWRlIHJlcXVlc3RVcGRhdGUoXG4gICAgICBuYW1lPzogUHJvcGVydHlLZXksXG4gICAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgICBvcHRpb25zPzogUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgICApOiB2b2lkIHtcbiAgICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuICAgICAgaWYgKG5hbWUgPT09ICd2YWx1ZScpIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtVmFsdWUoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmhhc1VwZGF0ZWQgJiYgdGhpcy5zaG91bGRWYWxpZGF0ZShuYW1lKSkge1xuICAgICAgICB0aGlzLnZhbGlkYXRlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgICB0aGlzLnZhbGlkYXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hvdWxkIGJlIGNhbGxlZCB3aGVuIGZvcm0gdmFsdWUgaXMgY2hhbmdlZC5cbiAgICAgKiBBZGFwdHMgYW5kIHNldHMgdGhlIGZvcm1WYWx1ZSBpbiB0aGUgc3VwcG9ydGVkIGZvcm1hdCAoc3RyaW5nIHwgRm9ybURhdGEgfCBGaWxlIHwgbnVsbClcbiAgICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudEludGVybmFscy9zZXRGb3JtVmFsdWVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdXBkYXRlRm9ybVZhbHVlKCk6IHZvaWQge1xuICAgICAgbGV0IGZvcm1WYWx1ZTogRm9ybURhdGEgfCBzdHJpbmcgfCBudWxsO1xuICAgICAgY29uc3QgbmFtZSA9IHRoaXMubmFtZSA/PyB0aGlzLmdldEF0dHJpYnV0ZSgnbmFtZScpO1xuXG4gICAgICBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnIHx8IHRoaXMudmFsdWUgPT0gbnVsbCkge1xuICAgICAgICBmb3JtVmFsdWUgPSB0aGlzLnZhbHVlIGFzIHN0cmluZyB8IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgZm9ybVZhbHVlID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIHRoaXMudmFsdWUuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAoZm9ybVZhbHVlIGFzIEZvcm1EYXRhKS5hcHBlbmQoXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgdHlwZW9mIGVsID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICA/IGVsXG4gICAgICAgICAgICAgIDogbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KGVsKV0sIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvcm1WYWx1ZSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3JtVmFsdWUuYXBwZW5kKFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KHRoaXMudmFsdWUpXSwge1xuICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgZm9ybSBzdGF0ZSBpcyB1bmRlZmluZWQgdGhlbiBmb3JtIHZhbHVlIHdpbGwgYmUgY29waWVkIHRvIHN0YXRlLlxuICAgICAgdGhpcy5pbnRlcm5hbHMuc2V0Rm9ybVZhbHVlKGZvcm1WYWx1ZSwgdGhpcy5mb3JtU3RhdGU/LigpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZm9ybVN0YXRlPygpOiBGb3JtUmVzdG9yZVN0YXRlO1xuXG4gICAgLyoqXG4gICAgICogTWFya3MgdGhpcyBlbGVtZW50IGFzIHN1ZmZlcmluZyBmcm9tIHRoZSBjb25zdHJhaW50IGluZGljYXRlZCBieSB0aGVcbiAgICAgKiBmbGFnIGFyZ3VtZW50IGFuZCBhc3NvY2lhdGVzIHRoZSBnaXZlbiBtZXNzYWdlIHRvIGl0LlxuICAgICAqIE5vdGUgdGhhdCBvbmx5IG9uZSBtZXNzYWdlIGlzIGRpc3BsYXllZCBhdCBhIHRpbWUgYW5kIGN1c3RvbSBtZXNzYWdlcyBieVxuICAgICAqIGNvbnN1bWVycyBhcmUgYWx3YXlzIGRpc3BsYXllZCBiZWZvcmUgaW50ZXJuYWwgbWVzc2FnZXMgYW5kIGludGVybmFsXG4gICAgICogbWVzc2FnZXMgYXJlIGRpc3BsYXllZCBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIGFkZGVkLlxuICAgICAqIFRvIHNldC9kZWZpbmUgY3VzdG9tIHZhbGlkaXR5IHN0YXRlIGZsYWdzLCB5b3UgbmVlZCB0byBleHRlbmQgdGhlXG4gICAgICogVmFsaWRpdHlTdGF0ZSBwcm90b3R5cGUgKGFuZCB0aGUgQ3VzdG9tVmFsaWRpdHlTdGF0ZSBpbnRlcmZhY2UpLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqICAgLy8gVGhlIHR5cGUgb2YgdGhlIGN1c3RvbSB2YWxpZGl0eSBzdGF0ZSBkb2VzIG5vdCBuZWVkIHRvIGJlIGJvb2xlYW4uXG4gICAgICogICBPYmplY3QuYXNzaWduKFZhbGlkaXR5U3RhdGUucHJvdG90eXBlLCB7XG4gICAgICogICAgIGdldCBteUVycm9yKCk6IGJvb2xlYW4ge1xuICAgICAqICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgIH0pO1xuICAgICAqXG4gICAgICogICBkZWNsYXJlIGdsb2JhbCB7XG4gICAgICogICAgIGludGVyZmFjZSBDdXN0b21WYWxpZGl0eVN0YXRlIHtcbiAgICAgKiAgICAgICBteUVycm9yOiBib29sZWFuO1xuICAgICAqICAgICB9XG4gICAgICogICB9XG4gICAgICovXG4gICAgcHJvdGVjdGVkIHNldFZhbGlkaXR5RmxhZzxUIGV4dGVuZHMga2V5b2YgVmFsaWRpdHlTdGF0ZUZsYWdzPihcbiAgICAgIGZsYWc6IFQsXG4gICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICBmbGFnVmFsdWU/OiBWYWxpZGl0eVN0YXRlRmxhZ3NbVF0sXG4gICAgKTogdm9pZCB7XG4gICAgICBmbGFnVmFsdWUgPz89IHRydWU7XG4gICAgICBjb25zdCB2YWxpZGl0eVN0YXRlID0gdGhpcy5fdmFsaWRpdHlTdGF0ZXMuZ2V0KGZsYWcpO1xuICAgICAgaWYgKFxuICAgICAgICAhdmFsaWRpdHlTdGF0ZSB8fFxuICAgICAgICB2YWxpZGl0eVN0YXRlLm1lc3NhZ2UgIT09IG1lc3NhZ2UgfHxcbiAgICAgICAgdmFsaWRpdHlTdGF0ZS5mbGFnVmFsdWUgIT09IGZsYWdWYWx1ZVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuX3ZhbGlkaXR5U3RhdGVzLnNldChmbGFnLCB7IGZsYWdWYWx1ZSwgbWVzc2FnZSB9KTtcbiAgICAgICAgdGhpcy5fc2V0SW50ZXJuYWxWYWxpZGl0eSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBSZW1vdmVzIHRoZSB2YWxpZGl0eSBzdGF0ZSBmbGFnIGVudHJ5IGFuZCB1cGRhdGVzIHZhbGlkaXR5IHN0YXRlLiAqL1xuICAgIHByb3RlY3RlZCByZW1vdmVWYWxpZGl0eUZsYWc8VCBleHRlbmRzIGtleW9mIFZhbGlkaXR5U3RhdGVGbGFncz4oZmxhZzogVCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuX3ZhbGlkaXR5U3RhdGVzLmhhcyhmbGFnKSkge1xuICAgICAgICB0aGlzLl92YWxpZGl0eVN0YXRlcy5kZWxldGUoZmxhZyk7XG4gICAgICAgIHRoaXMuX3NldEludGVybmFsVmFsaWRpdHkoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogVG8gYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSBjdXJyZW50IGVsZW1lbnQgbmVlZHMgdG8gYmUgdmFsaWRhdGVkLiAqL1xuICAgIHByb3RlY3RlZCB2YWxpZGF0ZSgpOiB2b2lkIHt9XG5cbiAgICAvKiogV2hldGhlciB2YWxpZGF0aW9uIHNob3VsZCBiZSBydW4gb24gYSBwcm9wZXJ0eSBjaGFuZ2Ugd2l0aCB0aGUgZ2l2ZW4gbmFtZS4gKi9cbiAgICBwcm90ZWN0ZWQgc2hvdWxkVmFsaWRhdGUobmFtZTogUHJvcGVydHlLZXkgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiAhbmFtZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRJbnRlcm5hbFZhbGlkaXR5KCk6IHZvaWQge1xuICAgICAgbGV0IG91dHB1dE1lc3NhZ2UgPSB0aGlzLl92YWxpZGl0eVN0YXRlcy5nZXQoJ2N1c3RvbUVycm9yJyk/Lm1lc3NhZ2U7XG4gICAgICBjb25zdCBmbGFnczogVmFsaWRpdHlTdGF0ZUZsYWdzID0ge307XG4gICAgICB0aGlzLl92YWxpZGl0eVN0YXRlcy5mb3JFYWNoKCh7IGZsYWdWYWx1ZSwgbWVzc2FnZSB9LCBmbGFnKSA9PiB7XG4gICAgICAgIGZsYWdzW2ZsYWddID0gZmxhZ1ZhbHVlIGFzIGFueTtcbiAgICAgICAgb3V0cHV0TWVzc2FnZSB8fD0gbWVzc2FnZTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjdXN0b21GbGFncyA9IE9iamVjdC5rZXlzKFZhbGlkaXR5U3RhdGUucHJvdG90eXBlKS5maWx0ZXIoXG4gICAgICAgIChmKSA9PiAhKGYgaW4gdmFsaWRpdHlLZXlzKSAmJiBmICE9PSAndmFsaWQnLFxuICAgICAgKTtcbiAgICAgIGZvciAoY29uc3QgZmxhZyBvZiBjdXN0b21GbGFncykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGZsYWcgaW4gZmxhZ3MgPyBmbGFnc1tmbGFnIGFzIGtleW9mIFZhbGlkaXR5U3RhdGVGbGFnc10gOiBmYWxzZTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMuaW50ZXJuYWxzLnZhbGlkaXR5LCBmbGFnLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIC8vIElmIGFueSBjdXN0b20gZXJyb3JzIGFyZSBwcm92aWRlZCwgd2UgbmVlZCB0byBzZXQgY3VzdG9tRXJyb3IgdG8gdHJ1ZSxcbiAgICAgICAgICAvLyBhcyB0aGlzIGlzIHRoZSBvbmx5IGN1c3RvbSBlcnJvciBwcm9wZXJ0eSBicm93c2VycyBhY2NlcHQuXG4gICAgICAgICAgZmxhZ3MuY3VzdG9tRXJyb3IgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW50ZXJuYWxzLnNldFZhbGlkaXR5KGZsYWdzLCBvdXRwdXRNZXNzYWdlKTtcblxuICAgICAgLy8gV2ViS2l0IHNlZW1zIHRvIGFsd2F5cyBzZXQgY3VzdG9tRXJyb3IgdG8gdHJ1ZSwgaWYgYW55IGVycm9yIGlzIGFjdGl2ZS5cbiAgICAgIC8vIER1ZSB0byB0aGlzIHdlIHBhdGNoIHRoZSBjdXN0b21FcnJvciB2YWx1ZSBtYW51YWxseS5cbiAgICAgIGlmIChpc1dlYmtpdCkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5pbnRlcm5hbHMudmFsaWRpdHksICdjdXN0b21FcnJvcicsIHtcbiAgICAgICAgICB2YWx1ZTogdGhpcy5fdmFsaWRpdHlTdGF0ZXMuaGFzKCdjdXN0b21FcnJvcicpIHx8ICEhZmxhZ3MuY3VzdG9tRXJyb3IsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYkZvcm1Bc3NvY2lhdGVkRWxlbWVudCBhcyB1bmtub3duIGFzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRm9ybUFzc29jaWF0ZWRNaXhpblR5cGU+ICYgVDtcbn07XG5cbi8qKlxuICogQSB2YWx1ZSB0byBiZSByZXN0b3JlZCBmb3IgYSBjb21wb25lbnQncyBmb3JtIHZhbHVlLiBJZiBhIGNvbXBvbmVudCdzIGZvcm1cbiAqIHN0YXRlIGlzIGEgYEZvcm1EYXRhYCBvYmplY3QsIGl0cyBlbnRyeSBsaXN0IG9mIG5hbWUgYW5kIHZhbHVlcyB3aWxsIGJlXG4gKiBwcm92aWRlZC5cbiAqL1xuZXhwb3J0IHR5cGUgRm9ybVJlc3RvcmVTdGF0ZSA9IHN0cmluZyB8IEZvcm1EYXRhIHwgRmlsZTtcblxuLyoqXG4gKiBUaGUgcmVhc29uIGEgZm9ybSBjb21wb25lbnQgaXMgYmVpbmcgcmVzdG9yZWQgZm9yLCBlaXRoZXIgYCdyZXN0b3JlJ2AgZm9yXG4gKiBicm93c2VyIHJlc3RvcmF0aW9uIG9yIGAnYXV0b2NvbXBsZXRlJ2AgZm9yIHJlc3RvcmluZyB1c2VyIHZhbHVlcy5cbiAqL1xuZXhwb3J0IHR5cGUgRm9ybVJlc3RvcmVSZWFzb24gPSAncmVzdG9yZScgfCAnYXV0b2NvbXBsZXRlJztcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBa0JBLE1BQU0sZUFBOEU7QUFBQSxFQUNsRixVQUFVO0FBQUEsRUFDVixhQUFhO0FBQUEsRUFDYixpQkFBaUI7QUFBQSxFQUNqQixlQUFlO0FBQUEsRUFDZixnQkFBZ0I7QUFBQSxFQUNoQixjQUFjO0FBQUEsRUFDZCxTQUFTO0FBQUEsRUFDVCxVQUFVO0FBQUEsRUFDVixjQUFjO0FBQUEsRUFDZCxjQUFjOztBQUtoQixJQUFJLE9BQU8sa0JBQWtCLGFBQWE7QUFDeEMsUUFBTSxnQkFBZ0IsTUFBTSxjQUFhO0FBQUEsSUFDdkMsSUFBVyxRQUFLO0FBQ2QsYUFBTztBQUFBLElBQUE7QUFBQSxJQUVULGNBQUE7QUFDRSxZQUFNLElBQUksVUFBVSxxQkFBcUI7QUFBQSxJQUFBO0FBQUEsRUFDM0M7QUFFRixTQUFPLFFBQVEsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDLEtBQUssS0FBSyxNQUMvQyxPQUFPLE9BQU8sY0FBYyxXQUFXO0FBQUEsSUFDckMsS0FBSyxHQUFHLElBQUM7QUFDUCxhQUFPO0FBQUEs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
279
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1hc3NvY2lhdGVkLW1peGluLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9taXhpbnMvZm9ybS1hc3NvY2lhdGVkLW1peGluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZSAqL1xuaW1wb3J0IHR5cGUgeyBMaXRFbGVtZW50LCBQcm9wZXJ0eURlY2xhcmF0aW9uLCBQcm9wZXJ0eVZhbHVlcyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGlzV2Via2l0IH0gZnJvbSAnLi4vZG9tLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpblR5cGUgfSBmcm9tICcuL2VsZW1lbnQtaW50ZXJuYWxzLW1peGluLmpzJztcblxuZGVjbGFyZSBnbG9iYWwge1xuICAvKipcbiAgICogRGVmaW5lcyBjdXN0b20gdmFsaWRpdHkgc3RhdGUgcHJvcGVydGllcy5cbiAgICovXG4gIGludGVyZmFjZSBDdXN0b21WYWxpZGl0eVN0YXRlIHt9XG4gIGludGVyZmFjZSBWYWxpZGl0eVN0YXRlIGV4dGVuZHMgQ3VzdG9tVmFsaWRpdHlTdGF0ZSB7fVxuICBpbnRlcmZhY2UgVmFsaWRpdHlTdGF0ZUZsYWdzIGV4dGVuZHMgUGFydGlhbDxDdXN0b21WYWxpZGl0eVN0YXRlPiB7fVxufVxuXG5jb25zdCB2YWxpZGl0eUtleXM6IFJlcXVpcmVkPE9taXQ8VmFsaWRpdHlTdGF0ZUZsYWdzLCBrZXlvZiBDdXN0b21WYWxpZGl0eVN0YXRlPj4gPSB7XG4gIGJhZElucHV0OiBmYWxzZSxcbiAgY3VzdG9tRXJyb3I6IGZhbHNlLFxuICBwYXR0ZXJuTWlzbWF0Y2g6IGZhbHNlLFxuICByYW5nZU92ZXJmbG93OiBmYWxzZSxcbiAgcmFuZ2VVbmRlcmZsb3c6IGZhbHNlLFxuICBzdGVwTWlzbWF0Y2g6IGZhbHNlLFxuICB0b29Mb25nOiBmYWxzZSxcbiAgdG9vU2hvcnQ6IGZhbHNlLFxuICB0eXBlTWlzbWF0Y2g6IGZhbHNlLFxuICB2YWx1ZU1pc3Npbmc6IGZhbHNlLFxufTtcbi8vIFdlIG5lZWQgVmFsaWRpdHlTdGF0ZSBpbiB0aGUgZ2xvYmFsIGNvbnRleHQsIGFzIHdlIGNoZWNrIHRoZSBwcm90b3R5cGUgZm9yXG4vLyBleHRlbnNpb25zLiBJbiBlbnZpcm9ubWVudHMgd2hlcmUgdGhhdCBpcyBub3QgdGhlIGNhc2UgKGUuZy4gTm9kZS5qcykgd2Vcbi8vIHBhdGNoIGl0IHdpdGggYSBtaW5pbWFsIHNoaW0uXG5pZiAodHlwZW9mIFZhbGlkaXR5U3RhdGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIGNvbnN0IHZhbGlkaXR5Q2xhc3MgPSBjbGFzcyBWYWxpZGl0eVN0YXRlIHtcbiAgICBwdWJsaWMgZ2V0IHZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbGxlZ2FsIGNvbnN0cnVjdG9yJyk7XG4gICAgfVxuICB9O1xuICBPYmplY3QuZW50cmllcyh2YWxpZGl0eUtleXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT5cbiAgICBPYmplY3QuYXNzaWduKHZhbGlkaXR5Q2xhc3MucHJvdG90eXBlLCB7XG4gICAgICBnZXQgW2tleV0oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH0sXG4gICAgfSksXG4gICk7XG4gIGdsb2JhbFRoaXMuVmFsaWRpdHlTdGF0ZSA9IHZhbGlkaXR5Q2xhc3MgYXMgdW5rbm93biBhcyB0eXBlb2YgVmFsaWRpdHlTdGF0ZTtcbn1cblxuZXhwb3J0IGRlY2xhcmUgYWJzdHJhY3QgY2xhc3MgU2JiRm9ybUFzc29jaWF0ZWRNaXhpblR5cGUge1xuICBwdWJsaWMgZ2V0IGZvcm0oKTogSFRNTEZvcm1FbGVtZW50IHwgbnVsbDtcbiAgcHVibGljIGFjY2Vzc29yIG5hbWU6IHN0cmluZztcbiAgcHVibGljIGdldCB0eXBlKCk6IHN0cmluZztcblxuICBwdWJsaWMgYWJzdHJhY3QgYWNjZXNzb3IgdmFsdWU6IHVua25vd247XG5cbiAgcHVibGljIGdldCB2YWxpZGl0eSgpOiBWYWxpZGl0eVN0YXRlO1xuICBwdWJsaWMgZ2V0IHZhbGlkYXRpb25NZXNzYWdlKCk6IHN0cmluZztcbiAgcHVibGljIGdldCB3aWxsVmFsaWRhdGUoKTogYm9vbGVhbjtcblxuICBwcm90ZWN0ZWQgZm9ybURpc2FibGVkOiBib29sZWFuO1xuXG4gIHB1YmxpYyBjaGVja1ZhbGlkaXR5KCk6IGJvb2xlYW47XG4gIHB1YmxpYyByZXBvcnRWYWxpZGl0eSgpOiBib29sZWFuO1xuICBwdWJsaWMgc2V0Q3VzdG9tVmFsaWRpdHkobWVzc2FnZTogc3RyaW5nKTogdm9pZDtcblxuICBwdWJsaWMgZm9ybUFzc29jaWF0ZWRDYWxsYmFjaz8oZm9ybTogSFRNTEZvcm1FbGVtZW50IHwgbnVsbCk6IHZvaWQ7XG4gIHB1YmxpYyBmb3JtRGlzYWJsZWRDYWxsYmFjayhkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQ7XG4gIHB1YmxpYyBhYnN0cmFjdCBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkO1xuICBwdWJsaWMgYWJzdHJhY3QgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKFxuICAgIHN0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCxcbiAgICByZWFzb246IEZvcm1SZXN0b3JlUmVhc29uLFxuICApOiB2b2lkO1xuXG4gIHByb3RlY3RlZCB1cGRhdGVGb3JtVmFsdWUoKTogdm9pZDtcbiAgcHJvdGVjdGVkIGZvcm1TdGF0ZT8oKTogRm9ybVJlc3RvcmVTdGF0ZTtcbiAgcHJvdGVjdGVkIHNldFZhbGlkaXR5RmxhZzxUIGV4dGVuZHMga2V5b2YgVmFsaWRpdHlTdGF0ZUZsYWdzPihcbiAgICBmbGFnOiBULFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBmbGFnVmFsdWU/OiBWYWxpZGl0eVN0YXRlRmxhZ3NbVF0sXG4gICk6IHZvaWQ7XG4gIHByb3RlY3RlZCByZW1vdmVWYWxpZGl0eUZsYWc8VCBleHRlbmRzIGtleW9mIFZhbGlkaXR5U3RhdGVGbGFncz4oZmxhZzogVCk6IHZvaWQ7XG4gIHByb3RlY3RlZCB2YWxpZGF0ZSgpOiB2b2lkO1xuICBwcm90ZWN0ZWQgc2hvdWxkVmFsaWRhdGUobmFtZTogUHJvcGVydHlLZXkgfCB1bmRlZmluZWQpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBGb3JtQXNzb2NpYXRlZE1peGluIGVuYWJsZXMgbmF0aXZlIGZvcm0gc3VwcG9ydCBmb3IgY3VzdG9tIGNvbnRyb2xzLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbiA9IDxcbiAgVCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudCAmIFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpblR5cGU+LFxuPihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRm9ybUFzc29jaWF0ZWRNaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYkZvcm1Bc3NvY2lhdGVkRWxlbWVudFxuICAgIGV4dGVuZHMgc3VwZXJDbGFzc1xuICAgIGltcGxlbWVudHMgUGFydGlhbDxTYmJGb3JtQXNzb2NpYXRlZE1peGluVHlwZT5cbiAge1xuICAgIHB1YmxpYyBzdGF0aWMgZm9ybUFzc29jaWF0ZWQgPSB0cnVlO1xuXG4gICAgcHVibGljIGFic3RyYWN0IGFjY2Vzc29yIHZhbHVlOiB1bmtub3duO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgZm9ybSBvd25lciBvZiB0aGlzIGVsZW1lbnQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBmb3JtKCk6IEhUTUxGb3JtRWxlbWVudCB8IG51bGwge1xuICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxzLmZvcm07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgZm9ybSBlbGVtZW50LiBXaWxsIGJlIHJlYWQgZnJvbSBuYW1lIGF0dHJpYnV0ZS5cbiAgICAgKlxuICAgICAqIEBkZXNjcmlwdGlvbiBEZXZlbG9wZXIgbm90ZTogSW4gdGhpcyBjYXNlIHVwZGF0aW5nIHRoZSBhdHRyaWJ1dGUgbXVzdCBiZSBzeW5jaHJvbm91cy5cbiAgICAgKiBEdWUgdG8gdGhpcyBpdCBpcyBpbXBsZW1lbnRlZCBhcyBhIGdldHRlci9zZXR0ZXIgYW5kIHRoZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soKSBoYW5kbGVzIHRoZSBkaWZmIGNoZWNrLlxuICAgICAqL1xuICAgIEBwcm9wZXJ0eSgpXG4gICAgcHVibGljIHNldCBuYW1lKG5hbWU6IHN0cmluZykge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBgJHtuYW1lfWApO1xuXG4gICAgICAvLyBGb3IgYEZvcm1EYXRhYCB2YWx1ZXMsIHdlIGhhdmUgdG8gbWFudWFsbHkgdXBkYXRlIHRoZSBmaWVsZE5hbWUga2V5XG4gICAgICB0aGlzLnVwZGF0ZUZvcm1WYWx1ZSgpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZSgnbmFtZScpID8/ICcnO1xuICAgIH1cblxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsTmFtZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBWYWxpZGl0eVN0YXRlIG9iamVjdCBmb3IgdGhpcyBlbGVtZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdmFsaWRpdHkoKTogVmFsaWRpdHlTdGF0ZSB7XG4gICAgICByZXR1cm4gdGhpcy5pbnRlcm5hbHMudmFsaWRpdHk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudCBlcnJvciBtZXNzYWdlLCBpZiBhdmFpbGFibGUsIHdoaWNoIGNvcnJlc3BvbmRzXG4gICAgICogdG8gdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBzdGF0ZS5cbiAgICAgKiBQbGVhc2Ugbm90ZSB0aGF0IG9ubHkgb25lIG1lc3NhZ2UgaXMgcmV0dXJuZWQgYXQgYSB0aW1lIChlLmcuIGlmXG4gICAgICogbXVsdGlwbGUgdmFsaWRpdHkgc3RhdGVzIGFyZSBpbnZhbGlkLCBvbmx5IHRoZSBjaHJvbm9sb2dpY2FsbHkgZmlyc3Qgb25lXG4gICAgICogaXMgcmV0dXJuZWQgdW50aWwgaXQgaXMgZml4ZWQsIGF0IHdoaWNoIHBvaW50IHRoZSBuZXh0IG1lc3NhZ2UgbWlnaHQgYmVcbiAgICAgKiByZXR1cm5lZCwgaWYgaXQgaXMgc3RpbGwgYXBwbGljYWJsZSkuIEFsc28gYSBjdXN0b20gdmFsaWRpdHkgbWVzc2FnZVxuICAgICAqIChzZWUgYmVsb3cpIGhhcyBwcmVjZWRlbmNlIG92ZXIgbmF0aXZlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gICAgICovXG4gICAgcHVibGljIGdldCB2YWxpZGF0aW9uTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxzLnZhbGlkYXRpb25NZXNzYWdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGVsZW1lbnQgd2lsbCBiZSB2YWxpZGF0ZWRcbiAgICAgKiB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZDsgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgd2lsbFZhbGlkYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxzLndpbGxWYWxpZGF0ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF92YWxpZGl0eVN0YXRlcyA9IG5ldyBNYXA8XG4gICAgICBrZXlvZiBWYWxpZGl0eVN0YXRlRmxhZ3MsXG4gICAgICB7IGZsYWdWYWx1ZTogdW5rbm93bjsgbWVzc2FnZTogc3RyaW5nIH1cbiAgICA+KCk7XG5cbiAgICAvKiogV2hlbmV2ZXIgYSBzdXJyb3VuZGluZyBmb3JtIG9yIGZpZWxkc2V0IGlzIGNoYW5naW5nIGl0cyBkaXNhYmxlZCBzdGF0ZS4gKi9cbiAgICBAc3RhdGUoKSBwcm90ZWN0ZWQgYWNjZXNzb3IgZm9ybURpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoLi4uYXJnczogYW55W10pIHtcbiAgICAgIHN1cGVyKC4uLmFyZ3MpO1xuICAgICAgLy8gV2Ugd2FudCB0byBwcmV2ZW50IHRoZSBuYXRpdmUgYnJvd3NlciB2YWxpZGF0aW9uIG1lc3NhZ2UgcG9wb3ZlclxuICAgICAgLy8gdG8gYmUgc2hvd24uIFRoaXMgYWxzbyBwcmV2ZW50cyBhIGJ1ZyBpbiBXZWJLaXQsIHdoaWNoIHdvdWxkIG5vdFxuICAgICAgLy8gYWxsb3cgaG9zdCBhcyB0aGUgdmFsaWRpdHkgYW5jaG9yOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5ODMyXG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LignaW52YWxpZCcsIChlKSA9PiBlLnByZXZlbnREZWZhdWx0KCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soXG4gICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICBvbGQ6IHN0cmluZyB8IG51bGwsXG4gICAgICB2YWx1ZTogc3RyaW5nIHwgbnVsbCxcbiAgICApOiB2b2lkIHtcbiAgICAgIGlmIChuYW1lICE9PSAnbmFtZScgfHwgb2xkICE9PSB2YWx1ZSkge1xuICAgICAgICBzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sobmFtZSwgb2xkLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoaXMgZWxlbWVudCBoYXMgbm8gdmFsaWRpdHkgcHJvYmxlbXM7IGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKiBGaXJlcyBhbiBpbnZhbGlkIGV2ZW50IGF0IHRoZSBlbGVtZW50IGluIHRoZSBsYXR0ZXIgY2FzZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2hlY2tWYWxpZGl0eSgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVybmFscy5jaGVja1ZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoaXMgZWxlbWVudCBoYXMgbm8gdmFsaWRpdHkgcHJvYmxlbXM7IG90aGVyd2lzZSxcbiAgICAgKiByZXR1cm5zIGZhbHNlLCBmaXJlcyBhbiBpbnZhbGlkIGV2ZW50IGF0IHRoZSBlbGVtZW50LFxuICAgICAqIGFuZCAoaWYgdGhlIGV2ZW50IGlzbid0IGNhbmNlbGVkKSByZXBvcnRzIHRoZSBwcm9ibGVtIHRvIHRoZSB1c2VyLlxuICAgICAqL1xuICAgIHB1YmxpYyByZXBvcnRWYWxpZGl0eSgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVybmFscy5yZXBvcnRWYWxpZGl0eSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGN1c3RvbSB2YWxpZGl0eSBtZXNzYWdlIGZvciB0aGlzIGVsZW1lbnQuIFVzZSB0aGUgZW1wdHkgc3RyaW5nXG4gICAgICogdG8gaW5kaWNhdGUgdGhhdCB0aGUgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgY3VzdG9tIHZhbGlkaXR5IGVycm9yLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRDdXN0b21WYWxpZGl0eShtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICAgIHRoaXMuc2V0VmFsaWRpdHlGbGFnKCdjdXN0b21FcnJvcicsIG1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVWYWxpZGl0eUZsYWcoJ2N1c3RvbUVycm9yJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgZm9ybSBlbGVtZW50IGNoYW5nZXMuXG4gICAgICogRWxlbWVudEludGVybmFscy5mb3JtIHJldHVybnMgdGhlIGFzc29jaWF0ZWQgZnJvbSBlbGVtZW50LlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGZvcm1Bc3NvY2lhdGVkQ2FsbGJhY2s/KGZvcm06IEhUTUxGb3JtRWxlbWVudCB8IG51bGwpOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW5ldmVyIGEgc3Vycm91bmRpbmcgZm9ybSAvIGZpZWxkc2V0IGNoYW5nZXMgZGlzYWJsZWQgc3RhdGUuXG4gICAgICogQHBhcmFtIGRpc2FibGVkXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZm9ybURpc2FibGVkQ2FsbGJhY2soZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgIC8vIFRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIGlmIHRoZSBkaXNhYmxlZCBwcm9wZXJ0eSBjaGFuZ2VzIG9yIHRoZSBkaXNhYmxlZCBhdHRyaWJ1dGUgb2YgYSBmaWVsZHNldCBvciBmb3JtIGNoYW5nZXMuXG4gICAgICAvLyBXZSBuZWVkIHRvIHBvc3Rwb25lIHRoZSBhc3NpZ25tZW50LCBvdGhlcndpc2UgaXQgaW50ZXJmZXJlcyB3aXRoIGRpc2FibGVkIHN0YXR1cyBzZXR0aW5nXG4gICAgICAvLyBhbmQgbGVhZHMgdG8gYSB3cm9uZyBzdGF0ZSAoZS5nLiBlbWJlZGRlZCBzYmItdmlzdWFsLWNoZWNrYm94KS5cbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmZvcm1EaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBmb3JtIGlzIGJlaW5nIHJlc2V0LlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IGZvcm1SZXNldENhbGxiYWNrKCk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiAgQ2FsbGVkIHdoZW4gdGhlIGJyb3dzZXIgaXMgdHJ5aW5nIHRvIHJlc3RvcmUgZWxlbWVudOKAmXMgc3RhdGUgdG8gc3RhdGUgaW4gd2hpY2ggY2FzZVxuICAgICAqICByZWFzb24gaXMgXCJyZXN0b3JlXCIsIG9yIHdoZW4gdGhlIGJyb3dzZXIgaXMgdHJ5aW5nIHRvIGZ1bGZpbGwgYXV0b2ZpbGwgb24gYmVoYWxmIG9mXG4gICAgICogIHVzZXIgaW4gd2hpY2ggY2FzZSByZWFzb24gaXMgXCJhdXRvY29tcGxldGVcIi5cbiAgICAgKiAgSW4gdGhlIGNhc2Ugb2YgXCJyZXN0b3JlXCIsIHN0YXRlIGlzIGEgc3RyaW5nLCBGaWxlLCBvciBGb3JtRGF0YSBvYmplY3RcbiAgICAgKiAgcHJldmlvdXNseSBzZXQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBzZXRGb3JtVmFsdWUuXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKFxuICAgICAgc3RhdGU6IEZvcm1SZXN0b3JlU3RhdGUgfCBudWxsLFxuICAgICAgcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbixcbiAgICApOiB2b2lkO1xuXG4gICAgcHVibGljIG92ZXJyaWRlIHJlcXVlc3RVcGRhdGUoXG4gICAgICBuYW1lPzogUHJvcGVydHlLZXksXG4gICAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgICBvcHRpb25zPzogUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgICApOiB2b2lkIHtcbiAgICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuICAgICAgaWYgKG5hbWUgPT09ICd2YWx1ZScpIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtVmFsdWUoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmhhc1VwZGF0ZWQgJiYgdGhpcy5zaG91bGRWYWxpZGF0ZShuYW1lKSkge1xuICAgICAgICB0aGlzLnZhbGlkYXRlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgICB0aGlzLnZhbGlkYXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hvdWxkIGJlIGNhbGxlZCB3aGVuIGZvcm0gdmFsdWUgaXMgY2hhbmdlZC5cbiAgICAgKiBBZGFwdHMgYW5kIHNldHMgdGhlIGZvcm1WYWx1ZSBpbiB0aGUgc3VwcG9ydGVkIGZvcm1hdCAoc3RyaW5nIHwgRm9ybURhdGEgfCBGaWxlIHwgbnVsbClcbiAgICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudEludGVybmFscy9zZXRGb3JtVmFsdWVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdXBkYXRlRm9ybVZhbHVlKCk6IHZvaWQge1xuICAgICAgbGV0IGZvcm1WYWx1ZTogRm9ybURhdGEgfCBzdHJpbmcgfCBudWxsO1xuICAgICAgY29uc3QgbmFtZSA9IHRoaXMubmFtZSA/PyB0aGlzLmdldEF0dHJpYnV0ZSgnbmFtZScpO1xuXG4gICAgICBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnIHx8IHRoaXMudmFsdWUgPT0gbnVsbCkge1xuICAgICAgICBmb3JtVmFsdWUgPSB0aGlzLnZhbHVlIGFzIHN0cmluZyB8IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgZm9ybVZhbHVlID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIHRoaXMudmFsdWUuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAoZm9ybVZhbHVlIGFzIEZvcm1EYXRhKS5hcHBlbmQoXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgdHlwZW9mIGVsID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICA/IGVsXG4gICAgICAgICAgICAgIDogbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KGVsKV0sIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvcm1WYWx1ZSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3JtVmFsdWUuYXBwZW5kKFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KHRoaXMudmFsdWUpXSwge1xuICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgZm9ybSBzdGF0ZSBpcyB1bmRlZmluZWQgdGhlbiBmb3JtIHZhbHVlIHdpbGwgYmUgY29waWVkIHRvIHN0YXRlLlxuICAgICAgdGhpcy5pbnRlcm5hbHMuc2V0Rm9ybVZhbHVlKGZvcm1WYWx1ZSwgdGhpcy5mb3JtU3RhdGU/LigpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZm9ybVN0YXRlPygpOiBGb3JtUmVzdG9yZVN0YXRlO1xuXG4gICAgLyoqXG4gICAgICogTWFya3MgdGhpcyBlbGVtZW50IGFzIHN1ZmZlcmluZyBmcm9tIHRoZSBjb25zdHJhaW50IGluZGljYXRlZCBieSB0aGVcbiAgICAgKiBmbGFnIGFyZ3VtZW50IGFuZCBhc3NvY2lhdGVzIHRoZSBnaXZlbiBtZXNzYWdlIHRvIGl0LlxuICAgICAqIE5vdGUgdGhhdCBvbmx5IG9uZSBtZXNzYWdlIGlzIGRpc3BsYXllZCBhdCBhIHRpbWUgYW5kIGN1c3RvbSBtZXNzYWdlcyBieVxuICAgICAqIGNvbnN1bWVycyBhcmUgYWx3YXlzIGRpc3BsYXllZCBiZWZvcmUgaW50ZXJuYWwgbWVzc2FnZXMgYW5kIGludGVybmFsXG4gICAgICogbWVzc2FnZXMgYXJlIGRpc3BsYXllZCBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIGFkZGVkLlxuICAgICAqIFRvIHNldC9kZWZpbmUgY3VzdG9tIHZhbGlkaXR5IHN0YXRlIGZsYWdzLCB5b3UgbmVlZCB0byBleHRlbmQgdGhlXG4gICAgICogVmFsaWRpdHlTdGF0ZSBwcm90b3R5cGUgKGFuZCB0aGUgQ3VzdG9tVmFsaWRpdHlTdGF0ZSBpbnRlcmZhY2UpLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqICAgLy8gVGhlIHR5cGUgb2YgdGhlIGN1c3RvbSB2YWxpZGl0eSBzdGF0ZSBkb2VzIG5vdCBuZWVkIHRvIGJlIGJvb2xlYW4uXG4gICAgICogICBPYmplY3QuYXNzaWduKFZhbGlkaXR5U3RhdGUucHJvdG90eXBlLCB7XG4gICAgICogICAgIGdldCBteUVycm9yKCk6IGJvb2xlYW4ge1xuICAgICAqICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgIH0pO1xuICAgICAqXG4gICAgICogICBkZWNsYXJlIGdsb2JhbCB7XG4gICAgICogICAgIGludGVyZmFjZSBDdXN0b21WYWxpZGl0eVN0YXRlIHtcbiAgICAgKiAgICAgICBteUVycm9yOiBib29sZWFuO1xuICAgICAqICAgICB9XG4gICAgICogICB9XG4gICAgICovXG4gICAgcHJvdGVjdGVkIHNldFZhbGlkaXR5RmxhZzxUIGV4dGVuZHMga2V5b2YgVmFsaWRpdHlTdGF0ZUZsYWdzPihcbiAgICAgIGZsYWc6IFQsXG4gICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICBmbGFnVmFsdWU/OiBWYWxpZGl0eVN0YXRlRmxhZ3NbVF0sXG4gICAgKTogdm9pZCB7XG4gICAgICBmbGFnVmFsdWUgPz89IHRydWU7XG4gICAgICBjb25zdCB2YWxpZGl0eVN0YXRlID0gdGhpcy5fdmFsaWRpdHlTdGF0ZXMuZ2V0KGZsYWcpO1xuICAgICAgaWYgKFxuICAgICAgICAhdmFsaWRpdHlTdGF0ZSB8fFxuICAgICAgICB2YWxpZGl0eVN0YXRlLm1lc3NhZ2UgIT09IG1lc3NhZ2UgfHxcbiAgICAgICAgdmFsaWRpdHlTdGF0ZS5mbGFnVmFsdWUgIT09IGZsYWdWYWx1ZVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuX3ZhbGlkaXR5U3RhdGVzLnNldChmbGFnLCB7IGZsYWdWYWx1ZSwgbWVzc2FnZSB9KTtcbiAgICAgICAgdGhpcy5fc2V0SW50ZXJuYWxWYWxpZGl0eSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBSZW1vdmVzIHRoZSB2YWxpZGl0eSBzdGF0ZSBmbGFnIGVudHJ5IGFuZCB1cGRhdGVzIHZhbGlkaXR5IHN0YXRlLiAqL1xuICAgIHByb3RlY3RlZCByZW1vdmVWYWxpZGl0eUZsYWc8VCBleHRlbmRzIGtleW9mIFZhbGlkaXR5U3RhdGVGbGFncz4oZmxhZzogVCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuX3ZhbGlkaXR5U3RhdGVzLmhhcyhmbGFnKSkge1xuICAgICAgICB0aGlzLl92YWxpZGl0eVN0YXRlcy5kZWxldGUoZmxhZyk7XG4gICAgICAgIHRoaXMuX3NldEludGVybmFsVmFsaWRpdHkoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogVG8gYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSBjdXJyZW50IGVsZW1lbnQgbmVlZHMgdG8gYmUgdmFsaWRhdGVkLiAqL1xuICAgIHByb3RlY3RlZCB2YWxpZGF0ZSgpOiB2b2lkIHt9XG5cbiAgICAvKiogV2hldGhlciB2YWxpZGF0aW9uIHNob3VsZCBiZSBydW4gb24gYSBwcm9wZXJ0eSBjaGFuZ2Ugd2l0aCB0aGUgZ2l2ZW4gbmFtZS4gKi9cbiAgICBwcm90ZWN0ZWQgc2hvdWxkVmFsaWRhdGUobmFtZTogUHJvcGVydHlLZXkgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiAhbmFtZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRJbnRlcm5hbFZhbGlkaXR5KCk6IHZvaWQge1xuICAgICAgbGV0IG91dHB1dE1lc3NhZ2UgPSB0aGlzLl92YWxpZGl0eVN0YXRlcy5nZXQoJ2N1c3RvbUVycm9yJyk/Lm1lc3NhZ2U7XG4gICAgICBjb25zdCBmbGFnczogVmFsaWRpdHlTdGF0ZUZsYWdzID0ge307XG4gICAgICB0aGlzLl92YWxpZGl0eVN0YXRlcy5mb3JFYWNoKCh7IGZsYWdWYWx1ZSwgbWVzc2FnZSB9LCBmbGFnKSA9PiB7XG4gICAgICAgIGZsYWdzW2ZsYWddID0gZmxhZ1ZhbHVlIGFzIGFueTtcbiAgICAgICAgb3V0cHV0TWVzc2FnZSB8fD0gbWVzc2FnZTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjdXN0b21GbGFncyA9IE9iamVjdC5rZXlzKFZhbGlkaXR5U3RhdGUucHJvdG90eXBlKS5maWx0ZXIoXG4gICAgICAgIChmKSA9PiAhKGYgaW4gdmFsaWRpdHlLZXlzKSAmJiBmICE9PSAndmFsaWQnLFxuICAgICAgKTtcbiAgICAgIGZvciAoY29uc3QgZmxhZyBvZiBjdXN0b21GbGFncykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGZsYWcgaW4gZmxhZ3MgPyBmbGFnc1tmbGFnIGFzIGtleW9mIFZhbGlkaXR5U3RhdGVGbGFnc10gOiBmYWxzZTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMuaW50ZXJuYWxzLnZhbGlkaXR5LCBmbGFnLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIC8vIElmIGFueSBjdXN0b20gZXJyb3JzIGFyZSBwcm92aWRlZCwgd2UgbmVlZCB0byBzZXQgY3VzdG9tRXJyb3IgdG8gdHJ1ZSxcbiAgICAgICAgICAvLyBhcyB0aGlzIGlzIHRoZSBvbmx5IGN1c3RvbSBlcnJvciBwcm9wZXJ0eSBicm93c2VycyBhY2NlcHQuXG4gICAgICAgICAgZmxhZ3MuY3VzdG9tRXJyb3IgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW50ZXJuYWxzLnNldFZhbGlkaXR5KGZsYWdzLCBvdXRwdXRNZXNzYWdlKTtcblxuICAgICAgLy8gV2ViS2l0IHNlZW1zIHRvIGFsd2F5cyBzZXQgY3VzdG9tRXJyb3IgdG8gdHJ1ZSwgaWYgYW55IGVycm9yIGlzIGFjdGl2ZS5cbiAgICAgIC8vIER1ZSB0byB0aGlzIHdlIHBhdGNoIHRoZSBjdXN0b21FcnJvciB2YWx1ZSBtYW51YWxseS5cbiAgICAgIGlmIChpc1dlYmtpdCkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5pbnRlcm5hbHMudmFsaWRpdHksICdjdXN0b21FcnJvcicsIHtcbiAgICAgICAgICB2YWx1ZTogdGhpcy5fdmFsaWRpdHlTdGF0ZXMuaGFzKCdjdXN0b21FcnJvcicpIHx8ICEhZmxhZ3MuY3VzdG9tRXJyb3IsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYkZvcm1Bc3NvY2lhdGVkRWxlbWVudCBhcyB1bmtub3duIGFzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiRm9ybUFzc29jaWF0ZWRNaXhpblR5cGU+ICYgVDtcbn07XG5cbi8qKlxuICogQSB2YWx1ZSB0byBiZSByZXN0b3JlZCBmb3IgYSBjb21wb25lbnQncyBmb3JtIHZhbHVlLiBJZiBhIGNvbXBvbmVudCdzIGZvcm1cbiAqIHN0YXRlIGlzIGEgYEZvcm1EYXRhYCBvYmplY3QsIGl0cyBlbnRyeSBsaXN0IG9mIG5hbWUgYW5kIHZhbHVlcyB3aWxsIGJlXG4gKiBwcm92aWRlZC5cbiAqL1xuZXhwb3J0IHR5cGUgRm9ybVJlc3RvcmVTdGF0ZSA9IHN0cmluZyB8IEZvcm1EYXRhIHwgRmlsZTtcblxuLyoqXG4gKiBUaGUgcmVhc29uIGEgZm9ybSBjb21wb25lbnQgaXMgYmVpbmcgcmVzdG9yZWQgZm9yLCBlaXRoZXIgYCdyZXN0b3JlJ2AgZm9yXG4gKiBicm93c2VyIHJlc3RvcmF0aW9uIG9yIGAnYXV0b2NvbXBsZXRlJ2AgZm9yIHJlc3RvcmluZyB1c2VyIHZhbHVlcy5cbiAqL1xuZXhwb3J0IHR5cGUgRm9ybVJlc3RvcmVSZWFzb24gPSAncmVzdG9yZScgfCAnYXV0b2NvbXBsZXRlJztcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBa0JBLE1BQU0sZUFBOEU7QUFBQSxFQUNsRixVQUFVO0FBQUEsRUFDVixhQUFhO0FBQUEsRUFDYixpQkFBaUI7QUFBQSxFQUNqQixlQUFlO0FBQUEsRUFDZixnQkFBZ0I7QUFBQSxFQUNoQixjQUFjO0FBQUEsRUFDZCxTQUFTO0FBQUEsRUFDVCxVQUFVO0FBQUEsRUFDVixjQUFjO0FBQUEsRUFDZCxjQUFjOztBQUtoQixJQUFJLE9BQU8sa0JBQWtCLGFBQWE7QUFDeEMsUUFBTSxnQkFBZ0IsTUFBTSxjQUFhO0FBQUEsSUFDdkMsSUFBVyxRQUFLO0FBQ2QsYUFBTztBQUFBLElBQ1Q7QUFBQSxJQUNBLGNBQUE7QUFDRSxZQUFNLElBQUksVUFBVSxxQkFBcUI7QUFBQSxJQUMzQztBQUFBLEVBQUE7QUFFRixTQUFPLFFBQVEsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDLEtBQUssS0FBSyxNQUMvQyxPQUFPLE9BQU8sY0FBYyxXQUFXO0FBQUEsSUFDckMsS0FBSyxHQUFHLElBQUM7QUFDUCxhQUFPO0FBQUEs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
@@ -249,4 +249,4 @@ export {
249
249
  SbbFormAssociatedRadioButtonMixin,
250
250
  radioButtonRegistry
251
251
  };
252
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1hc3NvY2lhdGVkLXJhZGlvLWJ1dHRvbi1taXhpbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL2Zvcm0tYXNzb2NpYXRlZC1yYWRpby1idXR0b24tbWl4aW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTZXJ2ZXIsIHR5cGUgTGl0RWxlbWVudCwgdHlwZSBQcm9wZXJ0eVZhbHVlcyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZ2V0TmV4dEVsZW1lbnRJbmRleCwgaW50ZXJhY3Rpdml0eUNoZWNrZXIsIGlzQXJyb3dLZXlQcmVzc2VkIH0gZnJvbSAnLi4vYTExeS5qcyc7XG5pbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBpMThuU2VsZWN0aW9uUmVxdWlyZWQgfSBmcm9tICcuLi9pMThuLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5pbXBvcnQgeyBTYmJEaXNhYmxlZE1peGluIH0gZnJvbSAnLi9kaXNhYmxlZC1taXhpbi5qcyc7XG5pbXBvcnQgeyBTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4gfSBmcm9tICcuL2VsZW1lbnQtaW50ZXJuYWxzLW1peGluLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgRm9ybVJlc3RvcmVSZWFzb24sXG4gIHR5cGUgRm9ybVJlc3RvcmVTdGF0ZSxcbiAgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbixcbn0gZnJvbSAnLi9mb3JtLWFzc29jaWF0ZWQtbWl4aW4uanMnO1xuaW1wb3J0IHsgU2JiUmVxdWlyZWRNaXhpbiB9IGZyb20gJy4vcmVxdWlyZWQtbWl4aW4uanMnO1xuXG4vKipcbiAqIEEgc3RhdGljIHJlZ2lzdHJ5IHRoYXQgaG9sZHMgYSBjb2xsZWN0aW9uIG9mIGdyb3VwZWQgYHJhZGlvLWJ1dHRvbnNgLlxuICogR3JvdXBzIG9mIHJhZGlvIGJ1dHRvbnMgYXJlIGxvY2FsIHRvIHRoZSBmb3JtIHRoZXkgYmVsb25nIChvciB0aGUgYHJlbmRlclJvb3RgIGlmIHRoZXkncmUgbm90IHBhcnQgb2YgYW55IGZvcm0pXG4gKiBNdWx0aXBsZSBncm91cHMgb2YgcmFkaW8gd2l0aCB0aGUgc2FtZSBuYW1lIGNhbiBjb2V4aXN0IChhcyBsb25nIGFzIHRoZXkgYmVsb25nIHRvIGEgZGlmZmVyZW50IGZvcm0gLyByZW5kZXJSb290KVxuICogSXQgaXMgbWFpbmx5IHVzZWQgdG8gc3VwcG9ydCB0aGUgc3RhbmRhbG9uZSBncm91cHMgb2YgcmFkaW9zLlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCByYWRpb0J1dHRvblJlZ2lzdHJ5ID0gbmV3IFdlYWtNYXA8XG4gIE5vZGUsXG4gIE1hcDxzdHJpbmcsIFNldDxTYmJGb3JtQXNzb2NpYXRlZFJhZGlvQnV0dG9uTWl4aW5UeXBlPj5cbj4oKTtcblxuZXhwb3J0IGRlY2xhcmUgYWJzdHJhY3QgY2xhc3MgU2JiRm9ybUFzc29jaWF0ZWRSYWRpb0J1dHRvbk1peGluVHlwZSBleHRlbmRzIFNiYkRpc2FibGVkTWl4aW4oXG4gIFNiYlJlcXVpcmVkTWl4aW4oU2JiRm9ybUFzc29jaWF0ZWRNaXhpbihTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4oTGl0RWxlbWVudCkpKSxcbikge1xuICBwdWJsaWMgYWNjZXNzb3IgY2hlY2tlZDogYm9vbGVhbjtcblxuICBwcm90ZWN0ZWQgYXNzb2NpYXRlZFJhZGlvQnV0dG9ucz86IFNldDxTYmJGb3JtQXNzb2NpYXRlZFJhZGlvQnV0dG9uTWl4aW5UeXBlPjtcblxuICBwdWJsaWMgZm9ybVJlc2V0Q2FsbGJhY2soKTogdm9pZDtcbiAgcHVibGljIGZvcm1TdGF0ZVJlc3RvcmVDYWxsYmFjayhzdGF0ZTogRm9ybVJlc3RvcmVTdGF0ZSB8IG51bGwsIHJlYXNvbjogRm9ybVJlc3RvcmVSZWFzb24pOiB2b2lkO1xuXG4gIHByb3RlY3RlZCB1cGRhdGVGb3JtVmFsdWUoKTogdm9pZDtcbiAgcHJvdGVjdGVkIHVwZGF0ZUZvY3VzYWJsZVJhZGlvcygpOiB2b2lkO1xuICBwcm90ZWN0ZWQgZW1pdENoYW5nZUV2ZW50cygpOiB2b2lkO1xuICBwcm90ZWN0ZWQgbmF2aWdhdGVCeUtleWJvYXJkKHJhZGlvOiBTYmJGb3JtQXNzb2NpYXRlZFJhZGlvQnV0dG9uTWl4aW5UeXBlKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBUaGUgU2JiRm9ybUFzc29jaWF0ZWRSYWRpb0J1dHRvbk1peGluIGVuYWJsZXMgbmF0aXZlIGZvcm0gc3VwcG9ydCBmb3IgcmFkaW8gY29udHJvbHMuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJGb3JtQXNzb2NpYXRlZFJhZGlvQnV0dG9uTWl4aW4gPSA8VCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudD4+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJGb3JtQXNzb2NpYXRlZFJhZGlvQnV0dG9uTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJGb3JtQXNzb2NpYXRlZFJhZGlvQnV0dG9uRWxlbWVudFxuICAgIGV4dGVuZHMgU2JiRGlzYWJsZWRNaXhpbihcbiAgICAgIFNiYlJlcXVpcmVkTWl4aW4oU2JiRm9ybUFzc29jaWF0ZWRNaXhpbihTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4oc3VwZXJDbGFzcykpKSxcbiAgICApXG4gICAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkZvcm1Bc3NvY2lhdGVkUmFkaW9CdXR0b25NaXhpblR5cGU+XG4gIHtcbiAgICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IHJvbGUgPSAncmFkaW8nO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgcmFkaW8gYnV0dG9uIGlzIGNoZWNrZWQuXG4gICAgICovXG4gICAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICAgIHB1YmxpYyBzZXQgY2hlY2tlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgdGhpcy5fY2hlY2tlZCA9ICEhdmFsdWU7XG5cbiAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWNoZWNrZWQnLCB0aGlzLmNoZWNrZWQpO1xuICAgICAgdGhpcy5pbnRlcm5hbHMuYXJpYUNoZWNrZWQgPSB0aGlzLmNoZWNrZWQudG9TdHJpbmcoKTtcbiAgICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlKCk7XG4gICAgICB0aGlzLl9zeW5jaHJvbml6ZUdyb3VwU3RhdGUoKTtcbiAgICB9XG4gICAgcHVibGljIGdldCBjaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrZWQ7XG4gICAgfVxuICAgIHByaXZhdGUgX2NoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBwcm9wZXJ0eSgpXG4gICAgcHVibGljIG92ZXJyaWRlIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgIHN1cGVyLm5hbWUgPSB2YWx1ZTtcblxuICAgICAgdGhpcy5fZGlzY29ubmVjdEZyb21SZWdpc3RyeSgpO1xuICAgICAgdGhpcy5fY29ubmVjdFRvUmVnaXN0cnkoKTtcbiAgICAgIHRoaXMuX3N5bmNocm9uaXplR3JvdXBTdGF0ZSgpO1xuICAgIH1cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBzdXBlci5uYW1lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvcm0gdHlwZSBvZiBlbGVtZW50LlxuICAgICAqIEBkZWZhdWx0ICdyYWRpbydcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiAncmFkaW8nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBvZiByYWRpbyBidXR0b25zIHRoYXQgYmVsb25ncyB0byB0aGUgc2FtZSBncm91cCBvZiBgdGhpc2AuXG4gICAgICogQXNzdW1lIHRoZW0gb3JkZXJlZCBpbiBET00gb3JkZXJcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXNzb2NpYXRlZFJhZGlvQnV0dG9ucz86IFNldDxTYmJGb3JtQXNzb2NpYXRlZFJhZGlvQnV0dG9uRWxlbWVudD47XG4gICAgcHJpdmF0ZSBfcmFkaW9CdXR0b25Hcm91cHNNYXA/OiBNYXA8c3RyaW5nLCBTZXQ8U2JiRm9ybUFzc29jaWF0ZWRSYWRpb0J1dHRvbk1peGluVHlwZT4+O1xuICAgIHByaXZhdGUgX2xhbmd1YWdlQ29udHJvbGxlciA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2tleWRvd24nLCAoZSkgPT4gdGhpcy5faGFuZGxlQXJyb3dLZXlEb3duKGUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgICAgdGhpcy5fY29ubmVjdFRvUmVnaXN0cnkoKTtcbiAgICAgIHRoaXMuX3N5bmNocm9uaXplR3JvdXBTdGF0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgICB0aGlzLl9kaXNjb25uZWN0RnJvbVJlZ2lzdHJ5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBmb3JtIGlzIGJlaW5nIHJlc2V0LlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICAgIHRoaXMuY2hlY2tlZCA9IHRoaXMuaGFzQXR0cmlidXRlKCdjaGVja2VkJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIENhbGxlZCB3aGVuIHRoZSBicm93c2VyIGlzIHRyeWluZyB0byByZXN0b3JlIGVsZW1lbnTigJlzIHN0YXRlIHRvIHN0YXRlIGluIHdoaWNoIGNhc2VcbiAgICAgKiAgcmVhc29uIGlzIFwicmVzdG9yZVwiLCBvciB3aGVuIHRoZSBicm93c2VyIGlzIHRyeWluZyB0byBmdWxmaWxsIGF1dG9maWxsIG9uIGJlaGFsZiBvZlxuICAgICAqICB1c2VyIGluIHdoaWNoIGNhc2UgcmVhc29uIGlzIFwiYXV0b2NvbXBsZXRlXCIuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGZvcm1TdGF0ZVJlc3RvcmVDYWxsYmFjayhcbiAgICAgIHN0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCxcbiAgICAgIF9yZWFzb246IEZvcm1SZXN0b3JlUmVhc29uLFxuICAgICk6IHZvaWQge1xuICAgICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gJ3N0cmluZycgfHwgc3RhdGUgPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSBzdGF0ZSA9PT0gdGhpcy52YWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUgaW5zdGFuY2VvZiBGb3JtRGF0YSkge1xuICAgICAgICB0aGlzLl9yZWFkRm9ybURhdGEoc3RhdGUpLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICB0aGlzLmNoZWNrZWQgPSBkYXRhID09PSB0aGlzLnZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9yZWFkRm9ybURhdGEoZm9ybURhdGE6IEZvcm1EYXRhKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICBjb25zdCBkYXRhID0gZm9ybURhdGEuZ2V0KHRoaXMubmFtZSk7XG4gICAgICByZXR1cm4gZGF0YSBpbnN0YW5jZW9mIEJsb2IgPyBKU09OLnBhcnNlKGF3YWl0IGRhdGEudGV4dCgpKSA6IGRhdGE7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZGlzYWJsZWQnKSkge1xuICAgICAgICB0aGlzLnVwZGF0ZUZvY3VzYWJsZVJhZGlvcygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgICAgdGhpcy51cGRhdGVGb2N1c2FibGVSYWRpb3MoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxsZWQgb24gYHZhbHVlYCBjaGFuZ2VcbiAgICAgKiBJZiAnY2hlY2tlZCcsIHVwZGF0ZSB0aGUgdmFsdWUuIE90aGVyd2lzZSwgZG8gbm90aGluZy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlRm9ybVZhbHVlKCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuY2hlY2tlZCkge1xuICAgICAgICBzdXBlci51cGRhdGVGb3JtVmFsdWUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxzLnNldEZvcm1WYWx1ZShudWxsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2hvdWxkVmFsaWRhdGUobmFtZTogUHJvcGVydHlLZXkgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBzdXBlci5zaG91bGRWYWxpZGF0ZShuYW1lKSB8fCBuYW1lID09PSAnY2hlY2tlZCcgfHwgbmFtZSA9PT0gJ3JlcXVpcmVkJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB2YWxpZGl0eSBvZiBhbGwgYXNzb2NpYXRlZCByYWRpbyBidXR0b25zLlxuICAgICAqIElmIGFueSByYWRpbyBidXR0b24gaXMgcmVxdWlyZWQsIGFsbCBhc3NvY2lhdGVkIGFyZSByZXF1aXJlZCBhcyB3ZWxsLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSB2YWxpZGF0ZSgpOiB2b2lkIHtcbiAgICAgIHN1cGVyLnZhbGlkYXRlKCk7XG4gICAgICBpZiAoIXRoaXMuYXNzb2NpYXRlZFJhZGlvQnV0dG9ucykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGxldCByZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgbGV0IGNoZWNrZWQgPSBmYWxzZTtcbiAgICAgIGZvciAoY29uc3QgcmFkaW8gb2YgdGhpcy5hc3NvY2lhdGVkUmFkaW9CdXR0b25zKSB7XG4gICAgICAgIHJlcXVpcmVkIHx8PSByYWRpby5yZXF1aXJlZDtcbiAgICAgICAgY2hlY2tlZCB8fD0gcmFkaW8uY2hlY2tlZDtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlcXVpcmVkICYmICFjaGVja2VkKSB7XG4gICAgICAgIHRoaXMuYXNzb2NpYXRlZFJhZGlvQnV0dG9ucy5mb3JFYWNoKChyKSA9PlxuICAgICAgICAgIHIuc2V0VmFsaWRpdHlGbGFnKFxuICAgICAgICAgICAgJ3ZhbHVlTWlzc2luZycsXG4gICAgICAgICAgICBpMThuU2VsZWN0aW9uUmVxdWlyZWRbdGhpcy5fbGFuZ3VhZ2VDb250cm9sbGVyLmN1cnJlbnRdLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFzc29jaWF0ZWRSYWRpb0J1dHRvbnMuZm9yRWFjaCgocikgPT4gci5yZW1vdmVWYWxpZGl0eUZsYWcoJ3ZhbHVlTWlzc2luZycpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPbmx5IGEgc2luZ2xlIHJhZGlvIHNob3VsZCBiZSBmb2N1c2FibGUgaW4gdGhlIGdyb3VwLiBEZWZpbmVkIGFzOlxuICAgICAqIC0gdGhlIGNoZWNrZWQgcmFkaW87XG4gICAgICogLSB0aGUgZmlyc3Qgbm9uLWRpc2FibGVkIHJhZGlvIGluIERPTSBvcmRlcjtcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdXBkYXRlRm9jdXNhYmxlUmFkaW9zKCk6IHZvaWQge1xuICAgICAgaWYgKCF0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgcmFkaW9zID0gdGhpcy5faW50ZXJhY3RhYmxlR3JvdXBlZFJhZGlvcygpO1xuICAgICAgY29uc3QgY2hlY2tlZEluZGV4ID0gcmFkaW9zLmZpbmRJbmRleCgocikgPT4gci5jaGVja2VkICYmICFyLmRpc2FibGVkICYmICFyLmZvcm1EaXNhYmxlZCk7XG4gICAgICBjb25zdCBmb2N1c2FibGVJbmRleCA9XG4gICAgICAgIGNoZWNrZWRJbmRleCAhPT0gLTFcbiAgICAgICAgICA/IGNoZWNrZWRJbmRleFxuICAgICAgICAgIDogcmFkaW9zLmZpbmRJbmRleCgocikgPT4gIXIuZGlzYWJsZWQgJiYgIXIuZm9ybURpc2FibGVkKTsgLy8gR2V0IHRoZSBmaXJzdCBmb2N1c2FibGUgcmFkaW9cblxuICAgICAgaWYgKGZvY3VzYWJsZUluZGV4ICE9PSAtMSkge1xuICAgICAgICByYWRpb3NbZm9jdXNhYmxlSW5kZXhdLnRhYkluZGV4ID0gMDtcbiAgICAgICAgcmFkaW9zLnNwbGljZShmb2N1c2FibGVJbmRleCwgMSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlc2V0IHRhYkluZGV4IG9uIG90aGVyIHJhZGlvc1xuICAgICAgcmFkaW9zLmZvckVhY2goKHIpID0+IHIucmVtb3ZlQXR0cmlidXRlKCd0YWJpbmRleCcpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgbmF2aWdhdGVCeUtleWJvYXJkKG5leHQ6IFNiYkZvcm1Bc3NvY2lhdGVkUmFkaW9CdXR0b25FbGVtZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICBuZXh0LmNoZWNrZWQgPSB0cnVlO1xuICAgICAgdGhpcy5lbWl0Q2hhbmdlRXZlbnRzKCk7XG5cbiAgICAgIGF3YWl0IG5leHQudXBkYXRlQ29tcGxldGU7XG4gICAgICBuZXh0LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGVtaXRDaGFuZ2VFdmVudHMoKTogdm9pZCB7XG4gICAgICAvLyBNYW51YWxseSBkaXNwYXRjaCBldmVudHMgdG8gc2ltdWxhdGUgYSB1c2VyIGludGVyYWN0aW9uXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSksXG4gICAgICApO1xuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zeW5jaHJvbml6ZUdyb3VwU3RhdGUoKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5jaGVja2VkKSB7XG4gICAgICAgIHRoaXMuX2Rlc2VsZWN0R3JvdXBlZFJhZGlvcygpO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVGb2N1c2FibGVSYWRpb3MoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgYHRoaXNgIHRvIHRoZSByYWRpb0J1dHRvbiByZWdpc3RyeVxuICAgICAqL1xuICAgIHByaXZhdGUgX2Nvbm5lY3RUb1JlZ2lzdHJ5KCk6IHZvaWQge1xuICAgICAgaWYgKCF0aGlzLm5hbWUgfHwgaXNTZXJ2ZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qgcm9vdCA9IHRoaXMuZm9ybSA/PyB0aGlzLmdldFJvb3ROb2RlKCk7XG4gICAgICB0aGlzLl9yYWRpb0J1dHRvbkdyb3Vwc01hcCA9IHJhZGlvQnV0dG9uUmVnaXN0cnkuZ2V0KHJvb3QpO1xuXG4gICAgICAvLyBJbml0aWFsaXplIHRoZSAncm9vdCcgbWFwIGVudHJ5XG4gICAgICBpZiAoIXRoaXMuX3JhZGlvQnV0dG9uR3JvdXBzTWFwKSB7XG4gICAgICAgIHRoaXMuX3JhZGlvQnV0dG9uR3JvdXBzTWFwID0gbmV3IE1hcCgpO1xuICAgICAgICByYWRpb0J1dHRvblJlZ2lzdHJ5LnNldChyb290LCB0aGlzLl9yYWRpb0J1dHRvbkdyb3Vwc01hcCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYXNzb2NpYXRlZFJhZGlvQnV0dG9ucyA9IHRoaXMuX3JhZGlvQnV0dG9uR3JvdXBzTWFwLmdldChcbiAgICAgICAgdGhpcy5uYW1lLFxuICAgICAgKSBhcyB1bmtub3duIGFzIFNldDxTYmJGb3JtQXNzb2NpYXRlZFJhZGlvQnV0dG9uRWxlbWVudD47XG5cbiAgICAgIC8vIEluaXRpYWxpemUgdGhlIGdyb3VwIHNldFxuICAgICAgaWYgKCF0aGlzLmFzc29jaWF0ZWRSYWRpb0J1dHRvbnMpIHtcbiAgICAgICAgdGhpcy5hc3NvY2lhdGVkUmFkaW9CdXR0b25zID0gbmV3IFNldCgpO1xuICAgICAgICB0aGlzLl9yYWRpb0J1dHRvbkdyb3Vwc01hcC5zZXQoXG4gICAgICAgICAgdGhpcy5uYW1lLFxuICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZFJhZGlvQnV0dG9ucyBhcyB1bmtub3duIGFzIFNldDxTYmJGb3JtQXNzb2NpYXRlZFJhZGlvQnV0dG9uTWl4aW5UeXBlPixcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gSW5zZXJ0IHRoZSBuZXcgcmFkaW8gaW50byB0aGUgc2V0IGFuZCBzb3J0IGZvbGxvd2luZyB0aGUgRE9NIG9yZGVyLlxuICAgICAgLy8gU2luY2UgdGhlIG9yZGVyIG9mIGEgJ1NldCcgaXMgdGhlIGluc2VydCBvcmRlciwgd2UgaGF2ZSB0byBlbXB0eSBpdCBhbmQgcmUtaW5zZXJ0IHJhZGlvcyBpbiBvcmRlclxuICAgICAgY29uc3QgZW50cmllcyA9IEFycmF5LmZyb20odGhpcy5hc3NvY2lhdGVkUmFkaW9CdXR0b25zKTtcbiAgICAgIHRoaXMuYXNzb2NpYXRlZFJhZGlvQnV0dG9ucy5jbGVhcigpO1xuXG4gICAgICAvLyBGaW5kIGB0aGlzYCBwb3NpdGlvbiBhbmQgaW5zZXJ0IGl0XG4gICAgICBjb25zdCBpbmRleCA9IGVudHJpZXMuZmluZEluZGV4KFxuICAgICAgICAocikgPT4gdGhpcy5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihyKSAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HLFxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgZW50cmllcy5zcGxpY2UoaW5kZXgsIDAsIHRoaXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW50cmllcy5wdXNoKHRoaXMpO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXBvcHVsYXRlIHRoZSBTZXRcbiAgICAgIGVudHJpZXMuZm9yRWFjaCgocikgPT4gdGhpcy5hc3NvY2lhdGVkUmFkaW9CdXR0b25zIS5hZGQocikpO1xuXG4gICAgICB0aGlzLnZhbGlkYXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIGB0aGlzYCBmcm9tIHRoZSByYWRpb0J1dHRvbiByZWdpc3RyeSBhbmQsIGlmIHRoZSBncm91cCBpcyBlbXB0eSwgZGVsZXRlIHRoZSBlbnRyeSBmcm9tIHRoZSBncm91cHMgTWFwXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZGlzY29ubmVjdEZyb21SZWdpc3RyeSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuYXNzb2NpYXRlZFJhZGlvQnV0dG9ucz8uZGVsZXRlKHRoaXMpO1xuXG4gICAgICBpZiAodGhpcy5hc3NvY2lhdGVkUmFkaW9CdXR0b25zPy5zaXplID09PSAwKSB7XG4gICAgICAgIHRoaXMuX3JhZGlvQnV0dG9uR3JvdXBzTWFwPy5kZWxldGUodGhpcy5uYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGUoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hc3NvY2lhdGVkUmFkaW9CdXR0b25zID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fcmFkaW9CdXR0b25Hcm91cHNNYXAgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgbGlzdCBvZiAnaW50ZXJhY3RhYmxlJyBncm91cGVkIHJhZGlvcywgb3JkZXJlZCBpbiBET00gb3JkZXJcbiAgICAgKi9cbiAgICBwcml2YXRlIF9pbnRlcmFjdGFibGVHcm91cGVkUmFkaW9zKCk6IFNiYkZvcm1Bc3NvY2lhdGVkUmFkaW9CdXR0b25FbGVtZW50W10ge1xuICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5hc3NvY2lhdGVkUmFkaW9CdXR0b25zID8/IFtdKS5maWx0ZXIoKGVsKSA9PlxuICAgICAgICBpbnRlcmFjdGl2aXR5Q2hlY2tlci5pc1Zpc2libGUoZWwpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXNlbGVjdCBvdGhlciByYWRpbyBvZiB0aGUgc2FtZSBncm91cFxuICAgICAqL1xuICAgIHByaXZhdGUgX2Rlc2VsZWN0R3JvdXBlZFJhZGlvcygpOiB2b2lkIHtcbiAgICAgIEFycmF5LmZyb20odGhpcy5hc3NvY2lhdGVkUmFkaW9CdXR0b25zID8/IFtdKVxuICAgICAgICAuZmlsdGVyKChyKSA9PiByICE9PSB0aGlzKVxuICAgICAgICAuZm9yRWFjaCgocikgPT4gKHIuY2hlY2tlZCA9IGZhbHNlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfaGFuZGxlQXJyb3dLZXlEb3duKGV2dDogS2V5Ym9hcmRFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgaWYgKCFpc0Fycm93S2V5UHJlc3NlZChldnQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICBjb25zdCBlbmFibGVkUmFkaW9zID0gdGhpcy5faW50ZXJhY3RhYmxlR3JvdXBlZFJhZGlvcygpLmZpbHRlcihcbiAgICAgICAgKHIpID0+ICFyLmRpc2FibGVkICYmICFyLmZvcm1EaXNhYmxlZCxcbiAgICAgICk7XG4gICAgICBjb25zdCBjdXJyZW50OiBudW1iZXIgPSBlbmFibGVkUmFkaW9zLmluZGV4T2YodGhpcyk7XG4gICAgICBjb25zdCBuZXh0SW5kZXg6IG51bWJlciA9IGdldE5leHRFbGVtZW50SW5kZXgoZXZ0LCBjdXJyZW50LCBlbmFibGVkUmFkaW9zLmxlbmd0aCk7XG5cbiAgICAgIGF3YWl0IHRoaXMubmF2aWdhdGVCeUtleWJvYXJkKGVuYWJsZWRSYWRpb3NbbmV4dEluZGV4XSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFNiYkZvcm1Bc3NvY2lhdGVkUmFkaW9CdXR0b25FbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJGb3JtQXNzb2NpYXRlZFJhZGlvQnV0dG9uTWl4aW5UeXBlPiAmXG4gICAgVDtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQXdCTyxNQUFNLDBDQUEwQixRQUFBO0FBeUJoQyxNQUFNLG9DQUFvQyxDQUMvQyxlQUNrRTtNQUNuRCx1Q0FBbUMsTUFBQTs7c0JBQ3hDLGlCQUNOLGlCQUFpQix1QkFBdUIseUJBQXlCLFVBQVUsQ0FBQyxDQUFDLENBQUM7Ozs7QUFGbkUsV0FBQSxtQkFDTCxZQUVQO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFTRCxJQUFXLFFBQVEsT0FBYztBQUMvQixhQUFLLFdBQVcsQ0FBQyxDQUFDO0FBRWxCLGFBQUssZ0JBQWdCLGdCQUFnQixLQUFLLE9B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
252
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1hc3NvY2lhdGVkLXJhZGlvLWJ1dHRvbi1taXhpbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvbWl4aW5zL2Zvcm0tYXNzb2NpYXRlZC1yYWRpby1idXR0b24tbWl4aW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTZXJ2ZXIsIHR5cGUgTGl0RWxlbWVudCwgdHlwZSBQcm9wZXJ0eVZhbHVlcyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZ2V0TmV4dEVsZW1lbnRJbmRleCwgaW50ZXJhY3Rpdml0eUNoZWNrZXIsIGlzQXJyb3dLZXlQcmVzc2VkIH0gZnJvbSAnLi4vYTExeS5qcyc7XG5pbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBpMThuU2VsZWN0aW9uUmVxdWlyZWQgfSBmcm9tICcuLi9pMThuLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3Rvci5qcyc7XG5pbXBvcnQgeyBTYmJEaXNhYmxlZE1peGluIH0gZnJvbSAnLi9kaXNhYmxlZC1taXhpbi5qcyc7XG5pbXBvcnQgeyBTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4gfSBmcm9tICcuL2VsZW1lbnQtaW50ZXJuYWxzLW1peGluLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgRm9ybVJlc3RvcmVSZWFzb24sXG4gIHR5cGUgRm9ybVJlc3RvcmVTdGF0ZSxcbiAgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbixcbn0gZnJvbSAnLi9mb3JtLWFzc29jaWF0ZWQtbWl4aW4uanMnO1xuaW1wb3J0IHsgU2JiUmVxdWlyZWRNaXhpbiB9IGZyb20gJy4vcmVxdWlyZWQtbWl4aW4uanMnO1xuXG4vKipcbiAqIEEgc3RhdGljIHJlZ2lzdHJ5IHRoYXQgaG9sZHMgYSBjb2xsZWN0aW9uIG9mIGdyb3VwZWQgYHJhZGlvLWJ1dHRvbnNgLlxuICogR3JvdXBzIG9mIHJhZGlvIGJ1dHRvbnMgYXJlIGxvY2FsIHRvIHRoZSBmb3JtIHRoZXkgYmVsb25nIChvciB0aGUgYHJlbmRlclJvb3RgIGlmIHRoZXkncmUgbm90IHBhcnQgb2YgYW55IGZvcm0pXG4gKiBNdWx0aXBsZSBncm91cHMgb2YgcmFkaW8gd2l0aCB0aGUgc2FtZSBuYW1lIGNhbiBjb2V4aXN0IChhcyBsb25nIGFzIHRoZXkgYmVsb25nIHRvIGEgZGlmZmVyZW50IGZvcm0gLyByZW5kZXJSb290KVxuICogSXQgaXMgbWFpbmx5IHVzZWQgdG8gc3VwcG9ydCB0aGUgc3RhbmRhbG9uZSBncm91cHMgb2YgcmFkaW9zLlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCByYWRpb0J1dHRvblJlZ2lzdHJ5ID0gbmV3IFdlYWtNYXA8XG4gIE5vZGUsXG4gIE1hcDxzdHJpbmcsIFNldDxTYmJGb3JtQXNzb2NpYXRlZFJhZGlvQnV0dG9uTWl4aW5UeXBlPj5cbj4oKTtcblxuZXhwb3J0IGRlY2xhcmUgYWJzdHJhY3QgY2xhc3MgU2JiRm9ybUFzc29jaWF0ZWRSYWRpb0J1dHRvbk1peGluVHlwZSBleHRlbmRzIFNiYkRpc2FibGVkTWl4aW4oXG4gIFNiYlJlcXVpcmVkTWl4aW4oU2JiRm9ybUFzc29jaWF0ZWRNaXhpbihTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4oTGl0RWxlbWVudCkpKSxcbikge1xuICBwdWJsaWMgYWNjZXNzb3IgY2hlY2tlZDogYm9vbGVhbjtcblxuICBwcm90ZWN0ZWQgYXNzb2NpYXRlZFJhZGlvQnV0dG9ucz86IFNldDxTYmJGb3JtQXNzb2NpYXRlZFJhZGlvQnV0dG9uTWl4aW5UeXBlPjtcblxuICBwdWJsaWMgZm9ybVJlc2V0Q2FsbGJhY2soKTogdm9pZDtcbiAgcHVibGljIGZvcm1TdGF0ZVJlc3RvcmVDYWxsYmFjayhzdGF0ZTogRm9ybVJlc3RvcmVTdGF0ZSB8IG51bGwsIHJlYXNvbjogRm9ybVJlc3RvcmVSZWFzb24pOiB2b2lkO1xuXG4gIHByb3RlY3RlZCB1cGRhdGVGb3JtVmFsdWUoKTogdm9pZDtcbiAgcHJvdGVjdGVkIHVwZGF0ZUZvY3VzYWJsZVJhZGlvcygpOiB2b2lkO1xuICBwcm90ZWN0ZWQgZW1pdENoYW5nZUV2ZW50cygpOiB2b2lkO1xuICBwcm90ZWN0ZWQgbmF2aWdhdGVCeUtleWJvYXJkKHJhZGlvOiBTYmJGb3JtQXNzb2NpYXRlZFJhZGlvQnV0dG9uTWl4aW5UeXBlKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBUaGUgU2JiRm9ybUFzc29jaWF0ZWRSYWRpb0J1dHRvbk1peGluIGVuYWJsZXMgbmF0aXZlIGZvcm0gc3VwcG9ydCBmb3IgcmFkaW8gY29udHJvbHMuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJGb3JtQXNzb2NpYXRlZFJhZGlvQnV0dG9uTWl4aW4gPSA8VCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudD4+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJGb3JtQXNzb2NpYXRlZFJhZGlvQnV0dG9uTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJGb3JtQXNzb2NpYXRlZFJhZGlvQnV0dG9uRWxlbWVudFxuICAgIGV4dGVuZHMgU2JiRGlzYWJsZWRNaXhpbihcbiAgICAgIFNiYlJlcXVpcmVkTWl4aW4oU2JiRm9ybUFzc29jaWF0ZWRNaXhpbihTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4oc3VwZXJDbGFzcykpKSxcbiAgICApXG4gICAgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkZvcm1Bc3NvY2lhdGVkUmFkaW9CdXR0b25NaXhpblR5cGU+XG4gIHtcbiAgICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IHJvbGUgPSAncmFkaW8nO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgcmFkaW8gYnV0dG9uIGlzIGNoZWNrZWQuXG4gICAgICovXG4gICAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICAgIHB1YmxpYyBzZXQgY2hlY2tlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgdGhpcy5fY2hlY2tlZCA9ICEhdmFsdWU7XG5cbiAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWNoZWNrZWQnLCB0aGlzLmNoZWNrZWQpO1xuICAgICAgdGhpcy5pbnRlcm5hbHMuYXJpYUNoZWNrZWQgPSB0aGlzLmNoZWNrZWQudG9TdHJpbmcoKTtcbiAgICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlKCk7XG4gICAgICB0aGlzLl9zeW5jaHJvbml6ZUdyb3VwU3RhdGUoKTtcbiAgICB9XG4gICAgcHVibGljIGdldCBjaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrZWQ7XG4gICAgfVxuICAgIHByaXZhdGUgX2NoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBwcm9wZXJ0eSgpXG4gICAgcHVibGljIG92ZXJyaWRlIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgIHN1cGVyLm5hbWUgPSB2YWx1ZTtcblxuICAgICAgdGhpcy5fZGlzY29ubmVjdEZyb21SZWdpc3RyeSgpO1xuICAgICAgdGhpcy5fY29ubmVjdFRvUmVnaXN0cnkoKTtcbiAgICAgIHRoaXMuX3N5bmNocm9uaXplR3JvdXBTdGF0ZSgpO1xuICAgIH1cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBzdXBlci5uYW1lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvcm0gdHlwZSBvZiBlbGVtZW50LlxuICAgICAqIEBkZWZhdWx0ICdyYWRpbydcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiAncmFkaW8nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBvZiByYWRpbyBidXR0b25zIHRoYXQgYmVsb25ncyB0byB0aGUgc2FtZSBncm91cCBvZiBgdGhpc2AuXG4gICAgICogQXNzdW1lIHRoZW0gb3JkZXJlZCBpbiBET00gb3JkZXJcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXNzb2NpYXRlZFJhZGlvQnV0dG9ucz86IFNldDxTYmJGb3JtQXNzb2NpYXRlZFJhZGlvQnV0dG9uRWxlbWVudD47XG4gICAgcHJpdmF0ZSBfcmFkaW9CdXR0b25Hcm91cHNNYXA/OiBNYXA8c3RyaW5nLCBTZXQ8U2JiRm9ybUFzc29jaWF0ZWRSYWRpb0J1dHRvbk1peGluVHlwZT4+O1xuICAgIHByaXZhdGUgX2xhbmd1YWdlQ29udHJvbGxlciA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2tleWRvd24nLCAoZSkgPT4gdGhpcy5faGFuZGxlQXJyb3dLZXlEb3duKGUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgICAgdGhpcy5fY29ubmVjdFRvUmVnaXN0cnkoKTtcbiAgICAgIHRoaXMuX3N5bmNocm9uaXplR3JvdXBTdGF0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgICB0aGlzLl9kaXNjb25uZWN0RnJvbVJlZ2lzdHJ5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBmb3JtIGlzIGJlaW5nIHJlc2V0LlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICAgIHRoaXMuY2hlY2tlZCA9IHRoaXMuaGFzQXR0cmlidXRlKCdjaGVja2VkJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIENhbGxlZCB3aGVuIHRoZSBicm93c2VyIGlzIHRyeWluZyB0byByZXN0b3JlIGVsZW1lbnTigJlzIHN0YXRlIHRvIHN0YXRlIGluIHdoaWNoIGNhc2VcbiAgICAgKiAgcmVhc29uIGlzIFwicmVzdG9yZVwiLCBvciB3aGVuIHRoZSBicm93c2VyIGlzIHRyeWluZyB0byBmdWxmaWxsIGF1dG9maWxsIG9uIGJlaGFsZiBvZlxuICAgICAqICB1c2VyIGluIHdoaWNoIGNhc2UgcmVhc29uIGlzIFwiYXV0b2NvbXBsZXRlXCIuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGZvcm1TdGF0ZVJlc3RvcmVDYWxsYmFjayhcbiAgICAgIHN0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCxcbiAgICAgIF9yZWFzb246IEZvcm1SZXN0b3JlUmVhc29uLFxuICAgICk6IHZvaWQge1xuICAgICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gJ3N0cmluZycgfHwgc3RhdGUgPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSBzdGF0ZSA9PT0gdGhpcy52YWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUgaW5zdGFuY2VvZiBGb3JtRGF0YSkge1xuICAgICAgICB0aGlzLl9yZWFkRm9ybURhdGEoc3RhdGUpLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICB0aGlzLmNoZWNrZWQgPSBkYXRhID09PSB0aGlzLnZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9yZWFkRm9ybURhdGEoZm9ybURhdGE6IEZvcm1EYXRhKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICBjb25zdCBkYXRhID0gZm9ybURhdGEuZ2V0KHRoaXMubmFtZSk7XG4gICAgICByZXR1cm4gZGF0YSBpbnN0YW5jZW9mIEJsb2IgPyBKU09OLnBhcnNlKGF3YWl0IGRhdGEudGV4dCgpKSA6IGRhdGE7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZGlzYWJsZWQnKSkge1xuICAgICAgICB0aGlzLnVwZGF0ZUZvY3VzYWJsZVJhZGlvcygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgICAgdGhpcy51cGRhdGVGb2N1c2FibGVSYWRpb3MoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxsZWQgb24gYHZhbHVlYCBjaGFuZ2VcbiAgICAgKiBJZiAnY2hlY2tlZCcsIHVwZGF0ZSB0aGUgdmFsdWUuIE90aGVyd2lzZSwgZG8gbm90aGluZy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlRm9ybVZhbHVlKCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuY2hlY2tlZCkge1xuICAgICAgICBzdXBlci51cGRhdGVGb3JtVmFsdWUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxzLnNldEZvcm1WYWx1ZShudWxsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2hvdWxkVmFsaWRhdGUobmFtZTogUHJvcGVydHlLZXkgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBzdXBlci5zaG91bGRWYWxpZGF0ZShuYW1lKSB8fCBuYW1lID09PSAnY2hlY2tlZCcgfHwgbmFtZSA9PT0gJ3JlcXVpcmVkJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB2YWxpZGl0eSBvZiBhbGwgYXNzb2NpYXRlZCByYWRpbyBidXR0b25zLlxuICAgICAqIElmIGFueSByYWRpbyBidXR0b24gaXMgcmVxdWlyZWQsIGFsbCBhc3NvY2lhdGVkIGFyZSByZXF1aXJlZCBhcyB3ZWxsLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSB2YWxpZGF0ZSgpOiB2b2lkIHtcbiAgICAgIHN1cGVyLnZhbGlkYXRlKCk7XG4gICAgICBpZiAoIXRoaXMuYXNzb2NpYXRlZFJhZGlvQnV0dG9ucykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGxldCByZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgbGV0IGNoZWNrZWQgPSBmYWxzZTtcbiAgICAgIGZvciAoY29uc3QgcmFkaW8gb2YgdGhpcy5hc3NvY2lhdGVkUmFkaW9CdXR0b25zKSB7XG4gICAgICAgIHJlcXVpcmVkIHx8PSByYWRpby5yZXF1aXJlZDtcbiAgICAgICAgY2hlY2tlZCB8fD0gcmFkaW8uY2hlY2tlZDtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlcXVpcmVkICYmICFjaGVja2VkKSB7XG4gICAgICAgIHRoaXMuYXNzb2NpYXRlZFJhZGlvQnV0dG9ucy5mb3JFYWNoKChyKSA9PlxuICAgICAgICAgIHIuc2V0VmFsaWRpdHlGbGFnKFxuICAgICAgICAgICAgJ3ZhbHVlTWlzc2luZycsXG4gICAgICAgICAgICBpMThuU2VsZWN0aW9uUmVxdWlyZWRbdGhpcy5fbGFuZ3VhZ2VDb250cm9sbGVyLmN1cnJlbnRdLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFzc29jaWF0ZWRSYWRpb0J1dHRvbnMuZm9yRWFjaCgocikgPT4gci5yZW1vdmVWYWxpZGl0eUZsYWcoJ3ZhbHVlTWlzc2luZycpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPbmx5IGEgc2luZ2xlIHJhZGlvIHNob3VsZCBiZSBmb2N1c2FibGUgaW4gdGhlIGdyb3VwLiBEZWZpbmVkIGFzOlxuICAgICAqIC0gdGhlIGNoZWNrZWQgcmFkaW87XG4gICAgICogLSB0aGUgZmlyc3Qgbm9uLWRpc2FibGVkIHJhZGlvIGluIERPTSBvcmRlcjtcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdXBkYXRlRm9jdXNhYmxlUmFkaW9zKCk6IHZvaWQge1xuICAgICAgaWYgKCF0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgcmFkaW9zID0gdGhpcy5faW50ZXJhY3RhYmxlR3JvdXBlZFJhZGlvcygpO1xuICAgICAgY29uc3QgY2hlY2tlZEluZGV4ID0gcmFkaW9zLmZpbmRJbmRleCgocikgPT4gci5jaGVja2VkICYmICFyLmRpc2FibGVkICYmICFyLmZvcm1EaXNhYmxlZCk7XG4gICAgICBjb25zdCBmb2N1c2FibGVJbmRleCA9XG4gICAgICAgIGNoZWNrZWRJbmRleCAhPT0gLTFcbiAgICAgICAgICA/IGNoZWNrZWRJbmRleFxuICAgICAgICAgIDogcmFkaW9zLmZpbmRJbmRleCgocikgPT4gIXIuZGlzYWJsZWQgJiYgIXIuZm9ybURpc2FibGVkKTsgLy8gR2V0IHRoZSBmaXJzdCBmb2N1c2FibGUgcmFkaW9cblxuICAgICAgaWYgKGZvY3VzYWJsZUluZGV4ICE9PSAtMSkge1xuICAgICAgICByYWRpb3NbZm9jdXNhYmxlSW5kZXhdLnRhYkluZGV4ID0gMDtcbiAgICAgICAgcmFkaW9zLnNwbGljZShmb2N1c2FibGVJbmRleCwgMSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlc2V0IHRhYkluZGV4IG9uIG90aGVyIHJhZGlvc1xuICAgICAgcmFkaW9zLmZvckVhY2goKHIpID0+IHIucmVtb3ZlQXR0cmlidXRlKCd0YWJpbmRleCcpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgbmF2aWdhdGVCeUtleWJvYXJkKG5leHQ6IFNiYkZvcm1Bc3NvY2lhdGVkUmFkaW9CdXR0b25FbGVtZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICBuZXh0LmNoZWNrZWQgPSB0cnVlO1xuICAgICAgdGhpcy5lbWl0Q2hhbmdlRXZlbnRzKCk7XG5cbiAgICAgIGF3YWl0IG5leHQudXBkYXRlQ29tcGxldGU7XG4gICAgICBuZXh0LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGVtaXRDaGFuZ2VFdmVudHMoKTogdm9pZCB7XG4gICAgICAvLyBNYW51YWxseSBkaXNwYXRjaCBldmVudHMgdG8gc2ltdWxhdGUgYSB1c2VyIGludGVyYWN0aW9uXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSksXG4gICAgICApO1xuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zeW5jaHJvbml6ZUdyb3VwU3RhdGUoKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5jaGVja2VkKSB7XG4gICAgICAgIHRoaXMuX2Rlc2VsZWN0R3JvdXBlZFJhZGlvcygpO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVGb2N1c2FibGVSYWRpb3MoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgYHRoaXNgIHRvIHRoZSByYWRpb0J1dHRvbiByZWdpc3RyeVxuICAgICAqL1xuICAgIHByaXZhdGUgX2Nvbm5lY3RUb1JlZ2lzdHJ5KCk6IHZvaWQge1xuICAgICAgaWYgKCF0aGlzLm5hbWUgfHwgaXNTZXJ2ZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qgcm9vdCA9IHRoaXMuZm9ybSA/PyB0aGlzLmdldFJvb3ROb2RlKCk7XG4gICAgICB0aGlzLl9yYWRpb0J1dHRvbkdyb3Vwc01hcCA9IHJhZGlvQnV0dG9uUmVnaXN0cnkuZ2V0KHJvb3QpO1xuXG4gICAgICAvLyBJbml0aWFsaXplIHRoZSAncm9vdCcgbWFwIGVudHJ5XG4gICAgICBpZiAoIXRoaXMuX3JhZGlvQnV0dG9uR3JvdXBzTWFwKSB7XG4gICAgICAgIHRoaXMuX3JhZGlvQnV0dG9uR3JvdXBzTWFwID0gbmV3IE1hcCgpO1xuICAgICAgICByYWRpb0J1dHRvblJlZ2lzdHJ5LnNldChyb290LCB0aGlzLl9yYWRpb0J1dHRvbkdyb3Vwc01hcCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYXNzb2NpYXRlZFJhZGlvQnV0dG9ucyA9IHRoaXMuX3JhZGlvQnV0dG9uR3JvdXBzTWFwLmdldChcbiAgICAgICAgdGhpcy5uYW1lLFxuICAgICAgKSBhcyB1bmtub3duIGFzIFNldDxTYmJGb3JtQXNzb2NpYXRlZFJhZGlvQnV0dG9uRWxlbWVudD47XG5cbiAgICAgIC8vIEluaXRpYWxpemUgdGhlIGdyb3VwIHNldFxuICAgICAgaWYgKCF0aGlzLmFzc29jaWF0ZWRSYWRpb0J1dHRvbnMpIHtcbiAgICAgICAgdGhpcy5hc3NvY2lhdGVkUmFkaW9CdXR0b25zID0gbmV3IFNldCgpO1xuICAgICAgICB0aGlzLl9yYWRpb0J1dHRvbkdyb3Vwc01hcC5zZXQoXG4gICAgICAgICAgdGhpcy5uYW1lLFxuICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZFJhZGlvQnV0dG9ucyBhcyB1bmtub3duIGFzIFNldDxTYmJGb3JtQXNzb2NpYXRlZFJhZGlvQnV0dG9uTWl4aW5UeXBlPixcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gSW5zZXJ0IHRoZSBuZXcgcmFkaW8gaW50byB0aGUgc2V0IGFuZCBzb3J0IGZvbGxvd2luZyB0aGUgRE9NIG9yZGVyLlxuICAgICAgLy8gU2luY2UgdGhlIG9yZGVyIG9mIGEgJ1NldCcgaXMgdGhlIGluc2VydCBvcmRlciwgd2UgaGF2ZSB0byBlbXB0eSBpdCBhbmQgcmUtaW5zZXJ0IHJhZGlvcyBpbiBvcmRlclxuICAgICAgY29uc3QgZW50cmllcyA9IEFycmF5LmZyb20odGhpcy5hc3NvY2lhdGVkUmFkaW9CdXR0b25zKTtcbiAgICAgIHRoaXMuYXNzb2NpYXRlZFJhZGlvQnV0dG9ucy5jbGVhcigpO1xuXG4gICAgICAvLyBGaW5kIGB0aGlzYCBwb3NpdGlvbiBhbmQgaW5zZXJ0IGl0XG4gICAgICBjb25zdCBpbmRleCA9IGVudHJpZXMuZmluZEluZGV4KFxuICAgICAgICAocikgPT4gdGhpcy5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihyKSAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HLFxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgZW50cmllcy5zcGxpY2UoaW5kZXgsIDAsIHRoaXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW50cmllcy5wdXNoKHRoaXMpO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXBvcHVsYXRlIHRoZSBTZXRcbiAgICAgIGVudHJpZXMuZm9yRWFjaCgocikgPT4gdGhpcy5hc3NvY2lhdGVkUmFkaW9CdXR0b25zIS5hZGQocikpO1xuXG4gICAgICB0aGlzLnZhbGlkYXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIGB0aGlzYCBmcm9tIHRoZSByYWRpb0J1dHRvbiByZWdpc3RyeSBhbmQsIGlmIHRoZSBncm91cCBpcyBlbXB0eSwgZGVsZXRlIHRoZSBlbnRyeSBmcm9tIHRoZSBncm91cHMgTWFwXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZGlzY29ubmVjdEZyb21SZWdpc3RyeSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuYXNzb2NpYXRlZFJhZGlvQnV0dG9ucz8uZGVsZXRlKHRoaXMpO1xuXG4gICAgICBpZiAodGhpcy5hc3NvY2lhdGVkUmFkaW9CdXR0b25zPy5zaXplID09PSAwKSB7XG4gICAgICAgIHRoaXMuX3JhZGlvQnV0dG9uR3JvdXBzTWFwPy5kZWxldGUodGhpcy5uYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGUoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hc3NvY2lhdGVkUmFkaW9CdXR0b25zID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fcmFkaW9CdXR0b25Hcm91cHNNYXAgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgbGlzdCBvZiAnaW50ZXJhY3RhYmxlJyBncm91cGVkIHJhZGlvcywgb3JkZXJlZCBpbiBET00gb3JkZXJcbiAgICAgKi9cbiAgICBwcml2YXRlIF9pbnRlcmFjdGFibGVHcm91cGVkUmFkaW9zKCk6IFNiYkZvcm1Bc3NvY2lhdGVkUmFkaW9CdXR0b25FbGVtZW50W10ge1xuICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5hc3NvY2lhdGVkUmFkaW9CdXR0b25zID8/IFtdKS5maWx0ZXIoKGVsKSA9PlxuICAgICAgICBpbnRlcmFjdGl2aXR5Q2hlY2tlci5pc1Zpc2libGUoZWwpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXNlbGVjdCBvdGhlciByYWRpbyBvZiB0aGUgc2FtZSBncm91cFxuICAgICAqL1xuICAgIHByaXZhdGUgX2Rlc2VsZWN0R3JvdXBlZFJhZGlvcygpOiB2b2lkIHtcbiAgICAgIEFycmF5LmZyb20odGhpcy5hc3NvY2lhdGVkUmFkaW9CdXR0b25zID8/IFtdKVxuICAgICAgICAuZmlsdGVyKChyKSA9PiByICE9PSB0aGlzKVxuICAgICAgICAuZm9yRWFjaCgocikgPT4gKHIuY2hlY2tlZCA9IGZhbHNlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfaGFuZGxlQXJyb3dLZXlEb3duKGV2dDogS2V5Ym9hcmRFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgaWYgKCFpc0Fycm93S2V5UHJlc3NlZChldnQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICBjb25zdCBlbmFibGVkUmFkaW9zID0gdGhpcy5faW50ZXJhY3RhYmxlR3JvdXBlZFJhZGlvcygpLmZpbHRlcihcbiAgICAgICAgKHIpID0+ICFyLmRpc2FibGVkICYmICFyLmZvcm1EaXNhYmxlZCxcbiAgICAgICk7XG4gICAgICBjb25zdCBjdXJyZW50OiBudW1iZXIgPSBlbmFibGVkUmFkaW9zLmluZGV4T2YodGhpcyk7XG4gICAgICBjb25zdCBuZXh0SW5kZXg6IG51bWJlciA9IGdldE5leHRFbGVtZW50SW5kZXgoZXZ0LCBjdXJyZW50LCBlbmFibGVkUmFkaW9zLmxlbmd0aCk7XG5cbiAgICAgIGF3YWl0IHRoaXMubmF2aWdhdGVCeUtleWJvYXJkKGVuYWJsZWRSYWRpb3NbbmV4dEluZGV4XSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFNiYkZvcm1Bc3NvY2lhdGVkUmFkaW9CdXR0b25FbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJGb3JtQXNzb2NpYXRlZFJhZGlvQnV0dG9uTWl4aW5UeXBlPiAmXG4gICAgVDtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQXdCTyxNQUFNLDBDQUEwQixRQUFBO0FBeUJoQyxNQUFNLG9DQUFvQyxDQUMvQyxlQUNrRTtNQUNuRCx1Q0FBbUMsTUFBQTs7c0JBQ3hDLGlCQUNOLGlCQUFpQix1QkFBdUIseUJBQXlCLFVBQVUsQ0FBQyxDQUFDLENBQUM7Ozs7QUFGbkUsV0FBQSxtQkFDTCxZQUVQO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFTRCxJQUFXLFFBQVEsT0FBYztBQUMvQixhQUFLLFdBQVcsQ0FBQyxDQUFDO0FBRWxCLGFBQUssZ0JBQWdCLGdCQUFnQixLQUFLLE9B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