@kepler.gl/components 3.3.0-alpha.0 → 3.3.0-alpha.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 (215) hide show
  1. package/dist/annotations/annotation-node.d.ts +11 -0
  2. package/dist/annotations/annotation-node.js +145 -0
  3. package/dist/annotations/annotation-overlay.d.ts +16 -0
  4. package/dist/annotations/annotation-overlay.js +166 -0
  5. package/dist/annotations/annotation-panel.d.ts +24 -0
  6. package/dist/annotations/annotation-panel.js +362 -0
  7. package/dist/annotations/annotation-text.d.ts +16 -0
  8. package/dist/annotations/annotation-text.js +150 -0
  9. package/dist/annotations/annotation-utils.d.ts +39 -0
  10. package/dist/annotations/annotation-utils.js +156 -0
  11. package/dist/annotations/index.d.ts +7 -0
  12. package/dist/annotations/index.js +53 -0
  13. package/dist/annotations/lexical-editor/clickable-link-plugin.d.ts +3 -0
  14. package/dist/annotations/lexical-editor/clickable-link-plugin.js +71 -0
  15. package/dist/annotations/lexical-editor/floating-link-editor.d.ts +1 -0
  16. package/dist/annotations/lexical-editor/floating-link-editor.js +194 -0
  17. package/dist/annotations/lexical-editor/index.d.ts +7 -0
  18. package/dist/annotations/lexical-editor/index.js +78 -0
  19. package/dist/annotations/lexical-editor/lexical-constants.d.ts +12 -0
  20. package/dist/annotations/lexical-editor/lexical-constants.js +22 -0
  21. package/dist/annotations/lexical-editor/lexical-nodes.d.ts +3 -0
  22. package/dist/annotations/lexical-editor/lexical-nodes.js +13 -0
  23. package/dist/annotations/lexical-editor/lexical-rich-text-editor.d.ts +15 -0
  24. package/dist/annotations/lexical-editor/lexical-rich-text-editor.js +122 -0
  25. package/dist/annotations/lexical-editor/lexical-theme.d.ts +15 -0
  26. package/dist/annotations/lexical-editor/lexical-theme.js +25 -0
  27. package/dist/annotations/lexical-editor/lexical-toolbar.d.ts +7 -0
  28. package/dist/annotations/lexical-editor/lexical-toolbar.js +293 -0
  29. package/dist/annotations/lexical-editor/lexical-utils.d.ts +4 -0
  30. package/dist/annotations/lexical-editor/lexical-utils.js +45 -0
  31. package/dist/annotations/lexical-editor/use-lexical-toolbar.d.ts +36 -0
  32. package/dist/annotations/lexical-editor/use-lexical-toolbar.js +253 -0
  33. package/dist/bottom-widget.d.ts +1 -1
  34. package/dist/bottom-widget.js +12 -6
  35. package/dist/common/animation-control/animation-control.d.ts +1 -0
  36. package/dist/common/animation-control/animation-control.js +3 -1
  37. package/dist/common/animation-control/animation-controller.js +8 -6
  38. package/dist/common/animation-control/export-video-control.d.ts +9 -0
  39. package/dist/common/animation-control/export-video-control.js +43 -0
  40. package/dist/common/animation-control/playback-controls.d.ts +4 -2
  41. package/dist/common/animation-control/playback-controls.js +7 -4
  42. package/dist/common/checkbox.d.ts +5 -21
  43. package/dist/common/checkbox.js +58 -70
  44. package/dist/common/color-legend.js +3 -3
  45. package/dist/common/data-table/index.d.ts +1 -1
  46. package/dist/common/data-table/index.js +3 -3
  47. package/dist/common/file-uploader/file-upload.js +4 -4
  48. package/dist/common/histogram-plot.js +102 -53
  49. package/dist/common/icons/3d-models/airplane.d.ts +14 -0
  50. package/dist/common/icons/3d-models/airplane.js +104 -0
  51. package/dist/common/icons/3d-models/bicycle.d.ts +14 -0
  52. package/dist/common/icons/3d-models/bicycle.js +426 -0
  53. package/dist/common/icons/3d-models/boeing.d.ts +14 -0
  54. package/dist/common/icons/3d-models/boeing.js +119 -0
  55. package/dist/common/icons/3d-models/car.d.ts +14 -0
  56. package/dist/common/icons/3d-models/car.js +110 -0
  57. package/dist/common/icons/3d-models/cargoship.d.ts +14 -0
  58. package/dist/common/icons/3d-models/cargoship.js +246 -0
  59. package/dist/common/icons/3d-models/evtol.d.ts +14 -0
  60. package/dist/common/icons/3d-models/evtol.js +134 -0
  61. package/dist/common/icons/3d-models/glider.d.ts +14 -0
  62. package/dist/common/icons/3d-models/glider.js +62 -0
  63. package/dist/common/icons/3d-models/helicopter.d.ts +14 -0
  64. package/dist/common/icons/3d-models/helicopter.js +110 -0
  65. package/dist/common/icons/3d-models/scooter.d.ts +14 -0
  66. package/dist/common/icons/3d-models/scooter.js +159 -0
  67. package/dist/common/icons/3d-models/semitruck.d.ts +14 -0
  68. package/dist/common/icons/3d-models/semitruck.js +177 -0
  69. package/dist/common/icons/3d-models/truck.d.ts +14 -0
  70. package/dist/common/icons/3d-models/truck.js +122 -0
  71. package/dist/common/icons/anchor_window.d.ts +1 -8
  72. package/dist/common/icons/anchor_window.js +17 -10
  73. package/dist/common/icons/annotation-text.d.ts +9 -0
  74. package/dist/common/icons/annotation-text.js +56 -0
  75. package/dist/common/icons/index.d.ts +1 -0
  76. package/dist/common/icons/index.js +8 -1
  77. package/dist/common/item-selector/chickleted-input.d.ts +1 -1
  78. package/dist/common/item-selector/chickleted-input.js +5 -5
  79. package/dist/common/line-chart.d.ts +4 -1
  80. package/dist/common/line-chart.js +59 -12
  81. package/dist/common/range-plot.js +4 -2
  82. package/dist/common/range-slider.d.ts +2 -0
  83. package/dist/common/range-slider.js +108 -43
  84. package/dist/common/slider/slider.d.ts +4 -0
  85. package/dist/common/slider/slider.js +78 -35
  86. package/dist/common/styled-components.d.ts +1 -1
  87. package/dist/common/styled-components.js +2 -2
  88. package/dist/common/time-range-slider-time-title.d.ts +1 -1
  89. package/dist/common/time-range-slider-time-title.js +5 -5
  90. package/dist/common/time-range-slider.d.ts +2 -1
  91. package/dist/common/time-range-slider.js +19 -7
  92. package/dist/common/timeline-helpers.d.ts +3 -0
  93. package/dist/common/timeline-helpers.js +57 -0
  94. package/dist/common/timeline-slider.js +21 -12
  95. package/dist/common/toolbar-item.js +5 -5
  96. package/dist/common/toolbar.d.ts +1 -1
  97. package/dist/common/toolbar.js +4 -4
  98. package/dist/common/vertical-toolbar.d.ts +1 -1
  99. package/dist/effects/effect-configurator.d.ts +3 -2
  100. package/dist/effects/effect-configurator.js +213 -52
  101. package/dist/effects/effect-manager.js +3 -3
  102. package/dist/effects/effect-panel-header.js +34 -17
  103. package/dist/effects/effect-panel.d.ts +4 -4
  104. package/dist/effects/effect-panel.js +61 -86
  105. package/dist/effects/effect-time-configurator.js +10 -10
  106. package/dist/effects/effect-type-dropdown-list.d.ts +1 -0
  107. package/dist/effects/effect-type-dropdown-list.js +1 -1
  108. package/dist/effects/effect-type-list-item.d.ts +1 -0
  109. package/dist/effects/effect-type-list-item.js +23 -7
  110. package/dist/effects/effect-type-selector.d.ts +1 -0
  111. package/dist/effects/effect-type-selector.js +2 -2
  112. package/dist/effects/surface-fog-section.d.ts +14 -0
  113. package/dist/effects/surface-fog-section.js +263 -0
  114. package/dist/filters/index.d.ts +1 -0
  115. package/dist/filters/index.js +8 -1
  116. package/dist/filters/polygon-filter.js +2 -2
  117. package/dist/filters/time-range-filter.js +3 -1
  118. package/dist/filters/time-widget-settings.d.ts +14 -0
  119. package/dist/filters/time-widget-settings.js +312 -0
  120. package/dist/filters/time-widget-top.d.ts +2 -3
  121. package/dist/filters/time-widget-top.js +32 -39
  122. package/dist/filters/time-widget.d.ts +3 -2
  123. package/dist/filters/time-widget.js +285 -9
  124. package/dist/filters/types.d.ts +3 -3
  125. package/dist/filters/types.js +1 -1
  126. package/dist/geocoder/geocoder.d.ts +4 -1
  127. package/dist/geocoder/geocoder.js +61 -14
  128. package/dist/geocoder-panel.d.ts +1 -0
  129. package/dist/geocoder-panel.js +6 -2
  130. package/dist/index.d.ts +14 -0
  131. package/dist/index.js +124 -1
  132. package/dist/kepler-gl.d.ts +17 -5
  133. package/dist/kepler-gl.js +89 -11
  134. package/dist/loading-indicator.d.ts +2 -0
  135. package/dist/loading-indicator.js +6 -3
  136. package/dist/map/annotations/annotation-control.d.ts +16 -0
  137. package/dist/map/annotations/annotation-control.js +56 -0
  138. package/dist/map/layer-hover-info.js +68 -35
  139. package/dist/map/layer-selector-panel.d.ts +1 -1
  140. package/dist/map/locale-panel.d.ts +1 -1
  141. package/dist/map/locale-panel.js +2 -2
  142. package/dist/map/map-control-toolbar.d.ts +4 -4
  143. package/dist/map/map-control.d.ts +5 -2
  144. package/dist/map/map-control.js +16 -7
  145. package/dist/map/map-draw-panel.d.ts +1 -1
  146. package/dist/map/map-draw-panel.js +7 -4
  147. package/dist/map/map-legend-panel.d.ts +1 -1
  148. package/dist/map/map-legend-panel.js +7 -7
  149. package/dist/map/map-legend.d.ts +1 -1
  150. package/dist/map/map-legend.js +6 -6
  151. package/dist/map/map-navigation-control.d.ts +13 -0
  152. package/dist/map/map-navigation-control.js +143 -0
  153. package/dist/map/map-popover.js +2 -2
  154. package/dist/map-container.d.ts +13 -3
  155. package/dist/map-container.js +250 -57
  156. package/dist/map-view-state-context.d.ts +1 -0
  157. package/dist/map-view-state-context.js +1 -1
  158. package/dist/modal-container.d.ts +3 -2
  159. package/dist/modal-container.js +28 -6
  160. package/dist/modals/add-map-style-modal.js +173 -200
  161. package/dist/modals/data-table-modal.d.ts +1 -1
  162. package/dist/modals/data-table-modal.js +146 -194
  163. package/dist/modals/export-data-modal.js +117 -139
  164. package/dist/modals/export-video-modal.d.ts +25 -0
  165. package/dist/modals/export-video-modal.js +338 -0
  166. package/dist/modals/export-video-modal.spec.d.ts +1 -0
  167. package/dist/modals/export-video-modal.spec.js +686 -0
  168. package/dist/modals/fog-height-animation.d.ts +8 -0
  169. package/dist/modals/fog-height-animation.js +97 -0
  170. package/dist/modals/hubble-utils.d.ts +25 -0
  171. package/dist/modals/hubble-utils.js +197 -0
  172. package/dist/modals/hubble-utils.spec.d.ts +1 -0
  173. package/dist/modals/hubble-utils.spec.js +397 -0
  174. package/dist/modals/tilesets-modals/load-data-footer.js +2 -2
  175. package/dist/modals/tilesets-modals/load-tileset.js +21 -10
  176. package/dist/modals/tilesets-modals/tileset-bitmap-form.d.ts +14 -0
  177. package/dist/modals/tilesets-modals/tileset-bitmap-form.js +284 -0
  178. package/dist/modals/tilesets-modals/tileset-raster-form.js +94 -11
  179. package/dist/modals/tilesets-modals/tileset-tile3d-form.js +3 -2
  180. package/dist/modals/tilesets-modals/tileset-vector-form.js +58 -4
  181. package/dist/modals/tilesets-modals/tileset-wms-form.js +4 -3
  182. package/dist/notification-panel/notification-item.d.ts +1 -53
  183. package/dist/notification-panel/notification-item.js +47 -75
  184. package/dist/notification-panel.d.ts +1 -1
  185. package/dist/notification-panel.js +20 -42
  186. package/dist/plot-container.js +7 -6
  187. package/dist/side-panel/add-by-dataset-button.js +3 -3
  188. package/dist/side-panel/common/dataset-info.js +2 -2
  189. package/dist/side-panel/interaction-panel/geocoder-config.d.ts +11 -0
  190. package/dist/side-panel/interaction-panel/geocoder-config.js +45 -0
  191. package/dist/side-panel/interaction-panel/interaction-panel.d.ts +3 -2
  192. package/dist/side-panel/interaction-panel/interaction-panel.js +10 -3
  193. package/dist/side-panel/layer-manager.js +11 -3
  194. package/dist/side-panel/layer-panel/color-scale-selector.d.ts +1 -1
  195. package/dist/side-panel/layer-panel/color-scale-selector.js +1 -1
  196. package/dist/side-panel/layer-panel/custom-palette.js +5 -5
  197. package/dist/side-panel/layer-panel/dataset-layer-section.js +19 -3
  198. package/dist/side-panel/layer-panel/layer-configurator.d.ts +4 -2
  199. package/dist/side-panel/layer-panel/layer-configurator.js +402 -76
  200. package/dist/side-panel/layer-panel/layer-panel-header.js +2 -2
  201. package/dist/side-panel/layer-panel/raster-tile-layer-configurator.d.ts +1 -1
  202. package/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +127 -27
  203. package/dist/side-panel/layer-panel/scenegraph-model-selector.d.ts +24 -0
  204. package/dist/side-panel/layer-panel/scenegraph-model-selector.js +123 -0
  205. package/dist/side-panel/layer-panel/text-label-panel.d.ts +1 -1
  206. package/dist/side-panel/layer-panel/text-label-panel.js +11 -2
  207. package/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +1 -1
  208. package/dist/side-panel/layer-panel/vis-config-slider.d.ts +2 -0
  209. package/dist/side-panel/layer-panel/vis-config-slider.js +7 -3
  210. package/dist/side-panel/panel-header.d.ts +1 -0
  211. package/dist/side-panel/panel-header.js +9 -2
  212. package/dist/side-panel/panel-tab.d.ts +1 -1
  213. package/dist/side-panel/panel-tab.js +4 -4
  214. package/dist/side-panel.js +5 -1
  215. package/package.json +39 -28
@@ -128,7 +128,9 @@ function RangePlotFactory(RangeBrush, HistogramPlot, LineChartPlot) {
128
128
  onBrush: onBrush
129
129
  }, chartProps);
130
130
  return isLineChart(plotType) && lineChart ? /*#__PURE__*/_react["default"].createElement(LineChartPlot, (0, _extends2["default"])({
131
- lineChart: lineChart
131
+ lineChart: lineChart,
132
+ range: range,
133
+ yAxisAutoRange: plotType.yAxisAutoRange
132
134
  }, commonProps)) : /*#__PURE__*/_react["default"].createElement(HistogramPlot, (0, _extends2["default"])({
133
135
  histogramsByGroup: bins,
134
136
  colorsByGroup: groupColors,
@@ -213,4 +215,4 @@ function RangePlotFactory(RangeBrush, HistogramPlot, LineChartPlot) {
213
215
  };
214
216
  return (0, _styledComponents.withTheme)(WithPlotLoading);
215
217
  }
216
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yYW5nZUJydXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9oaXN0b2dyYW1QbG90IiwiX2xpbmVDaGFydCIsIl91dGlscyIsIl9jb25zdGFudHMiLCJfbG9hZGluZ1NwaW5uZXIiLCJfc3R5bGVzIiwiX2V4Y2x1ZGVkIiwiX2V4Y2x1ZGVkMiIsIl90ZW1wbGF0ZU9iamVjdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIlN0eWxlZFJhbmdlUGxvdCIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsInNsaWRlckJhckhlaWdodCIsIlJhbmdlUGxvdEZhY3RvcnkiLCJkZXBzIiwiUmFuZ2VCcnVzaEZhY3RvcnkiLCJIaXN0b2dyYW1QbG90RmFjdG9yeSIsIkxpbmVDaGFydEZhY3RvcnkiLCJpc0hpc3RvZ3JhbVBsb3QiLCJwbG90VHlwZSIsInR5cGUiLCJQTE9UX1RZUEVTIiwiaGlzdG9ncmFtIiwiaXNMaW5lQ2hhcnQiLCJsaW5lQ2hhcnQiLCJoYXNIaXN0b2dyYW0iLCJiaW5zIiwiaGFzTGluZUNoYXJ0IiwiTE9BRElOR19TUElOTkVSX0NPTlRBSU5FUl9TVFlMRSIsImRpc3BsYXkiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJ3aWR0aCIsIlJhbmdlQnJ1c2giLCJIaXN0b2dyYW1QbG90IiwiTGluZUNoYXJ0UGxvdCIsIlJhbmdlUGxvdCIsIl9yZWYiLCJvbkJydXNoIiwicmFuZ2UiLCJ2YWx1ZSIsImlzRW5sYXJnZWQiLCJpc1JhbmdlZCIsImNoYXJ0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwiZ3JvdXBDb2xvcnMiLCJ1c2VNZW1vIiwiZGF0YUlkcyIsImNvbG9yc0J5RGF0YUlkIiwicmVkdWNlIiwiYWNjIiwiZGF0YUlkIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiYnJ1c2hpbmciLCJzZXRCcnVzaGluZyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaG92ZXJlZERQIiwib25Nb3VzZU1vdmUiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImVuYWJsZUNoYXJ0SG92ZXIiLCJzZXRFbmFibGVDaGFydEhvdmVyIiwiaGVpZ2h0IiwiaGFzTW9iaWxlV2lkdGgiLCJicmVha1BvaW50VmFsdWVzIiwicmFuZ2VQbG90SExhcmdlUGFsbSIsInJhbmdlUGxvdEhMYXJnZSIsInJhbmdlUGxvdEgiLCJvbkJydXNoU3RhcnQiLCJ1c2VDYWxsYmFjayIsIm9uQnJ1c2hFbmQiLCJvbk1vdXNlb3ZlckhhbmRsZSIsIm9uTW91c2VvdXRIYW5kbGUiLCJicnVzaENvbXBvbmVudCIsImlzVGVzdCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kczIiLCJjb21tb25Qcm9wcyIsIm1hcmdpbiIsInJhbmdlUGxvdE1hcmdpbkxhcmdlIiwicmFuZ2VQbG90TWFyZ2luIiwiaGlzdG9ncmFtc0J5R3JvdXAiLCJjb2xvcnNCeUdyb3VwIiwiUmFuZ2VQbG90V2l0aFRoZW1lIiwid2l0aFRoZW1lIiwiV2l0aFBsb3RMb2FkaW5nIiwiX3JlZjIiLCJzZXRGaWx0ZXJQbG90Iiwib3RoZXJQcm9wcyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNMb2FkaW5nIiwic2V0SXNMb2FkaW5nIiwiaXNDaGFuZ2luZ1JlZiIsInVzZVJlZiIsInVzZUVmZmVjdCIsImN1cnJlbnQiLCJyYW5nZVBsb3RTdHlsZSIsImNvbmNhdCIsInJhbmdlUGxvdENvbnRhaW5lckhMYXJnZVBhbG0iLCJyYW5nZVBsb3RDb250YWluZXJITGFyZ2UiLCJyYW5nZVBsb3RDb250YWluZXJIIiwic3R5bGUiLCJjbGFzc05hbWUiLCJib3JkZXJDb2xvciIsInNpemUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL3JhbmdlLXBsb3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUsIENTU1Byb3BlcnRpZXN9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQsIHt3aXRoVGhlbWV9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBSYW5nZUJydXNoRmFjdG9yeSwge09uQnJ1c2gsIFJhbmdlQnJ1c2hQcm9wc30gZnJvbSAnLi9yYW5nZS1icnVzaCc7XG5pbXBvcnQgSGlzdG9ncmFtUGxvdEZhY3RvcnkgZnJvbSAnLi9oaXN0b2dyYW0tcGxvdCc7XG5pbXBvcnQgTGluZUNoYXJ0RmFjdG9yeSwge0hvdmVyRFB9IGZyb20gJy4vbGluZS1jaGFydCc7XG5pbXBvcnQge2hhc01vYmlsZVdpZHRoLCBpc1Rlc3R9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtQTE9UX1RZUEVTfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAnLi9sb2FkaW5nLXNwaW5uZXInO1xuaW1wb3J0IHticmVha1BvaW50VmFsdWVzfSBmcm9tICdAa2VwbGVyLmdsL3N0eWxlcyc7XG5pbXBvcnQge0xpbmVDaGFydCBhcyBMaW5lQ2hhcnRUeXBlLCBGaWx0ZXIsIEJpbnN9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtEYXRhc2V0c30gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5cbmNvbnN0IFN0eWxlZFJhbmdlUGxvdCA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi1ib3R0b206ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2xpZGVyQmFySGVpZ2h0fXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gO1xuXG5pbnRlcmZhY2UgUmFuZ2VQbG90UHJvcHMge1xuICBvbkJydXNoOiBPbkJydXNoO1xuICByYW5nZTogbnVtYmVyW107XG4gIHZhbHVlOiBudW1iZXJbXTtcbiAgd2lkdGg6IG51bWJlcjtcbiAgcGxvdFR5cGU6IHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG4gIGxpbmVDaGFydD86IExpbmVDaGFydFR5cGU7XG4gIGJpbnM/OiBCaW5zO1xuXG4gIGlzRW5sYXJnZWQ/OiBib29sZWFuO1xuICBpc1JhbmdlZD86IGJvb2xlYW47XG4gIHRoZW1lOiBhbnk7XG4gIHRpbWVGb3JtYXQ/OiBzdHJpbmc7XG4gIHRpbWV6b25lPzogc3RyaW5nIHwgbnVsbDtcbiAgcGxheWJhY2tDb250cm9sV2lkdGg/OiBudW1iZXI7XG5cbiAgYW5pbWF0aW9uV2luZG93Pzogc3RyaW5nO1xuICBmaWx0ZXI/OiBGaWx0ZXI7XG4gIGRhdGFzZXRzPzogRGF0YXNldHM7XG5cbiAgaW52ZXJ0VHJlbmRDb2xvcj86IGJvb2xlYW47XG5cbiAgc3R5bGU6IENTU1Byb3BlcnRpZXM7XG59XG5cbnR5cGUgV2l0aFBsb3RMb2FkaW5nUHJvcHMgPSBSYW5nZVBsb3RQcm9wcyAmXG4gIFBhcnRpYWw8UmFuZ2VCcnVzaFByb3BzPiAmIHtcbiAgICBzZXRGaWx0ZXJQbG90OiBhbnk7XG4gIH07XG5cblJhbmdlUGxvdEZhY3RvcnkuZGVwcyA9IFtSYW5nZUJydXNoRmFjdG9yeSwgSGlzdG9ncmFtUGxvdEZhY3RvcnksIExpbmVDaGFydEZhY3RvcnldO1xuXG5jb25zdCBpc0hpc3RvZ3JhbVBsb3QgPSBwbG90VHlwZSA9PiBwbG90VHlwZT8udHlwZSA9PT0gUExPVF9UWVBFUy5oaXN0b2dyYW07XG5jb25zdCBpc0xpbmVDaGFydCA9IHBsb3RUeXBlID0+IHBsb3RUeXBlPy50eXBlID09PSBQTE9UX1RZUEVTLmxpbmVDaGFydDtcbmNvbnN0IGhhc0hpc3RvZ3JhbSA9IChwbG90VHlwZSwgYmlucykgPT4gaXNIaXN0b2dyYW1QbG90KHBsb3RUeXBlKSAmJiBiaW5zO1xuY29uc3QgaGFzTGluZUNoYXJ0ID0gKHBsb3RUeXBlLCBsaW5lQ2hhcnQpID0+IGlzTGluZUNoYXJ0KHBsb3RUeXBlKSAmJiBsaW5lQ2hhcnQ7XG5cbmNvbnN0IExPQURJTkdfU1BJTk5FUl9DT05UQUlORVJfU1RZTEUgPSB7XG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgd2lkdGg6ICcxMDAlJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUmFuZ2VQbG90RmFjdG9yeShcbiAgUmFuZ2VCcnVzaDogUmV0dXJuVHlwZTx0eXBlb2YgUmFuZ2VCcnVzaEZhY3Rvcnk+LFxuICBIaXN0b2dyYW1QbG90OiBSZXR1cm5UeXBlPHR5cGVvZiBIaXN0b2dyYW1QbG90RmFjdG9yeT4sXG4gIExpbmVDaGFydFBsb3Q6IFJldHVyblR5cGU8dHlwZW9mIExpbmVDaGFydEZhY3Rvcnk+XG4pIHtcbiAgY29uc3QgUmFuZ2VQbG90ID0gKHtcbiAgICBiaW5zLFxuICAgIG9uQnJ1c2gsXG4gICAgcmFuZ2UsXG4gICAgdmFsdWUsXG4gICAgd2lkdGgsXG4gICAgcGxvdFR5cGUsXG4gICAgbGluZUNoYXJ0LFxuICAgIGlzRW5sYXJnZWQsXG4gICAgaXNSYW5nZWQsXG4gICAgdGhlbWUsXG4gICAgLi4uY2hhcnRQcm9wc1xuICB9OiBSYW5nZVBsb3RQcm9wcyAmIFBhcnRpYWw8UmFuZ2VCcnVzaFByb3BzPikgPT4ge1xuICAgIGNvbnN0IGdyb3VwQ29sb3JzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhSWRzID0gYmlucyA/IE9iamVjdC5rZXlzKGJpbnMpIDogW107XG4gICAgICByZXR1cm4gcGxvdFR5cGUuY29sb3JzQnlEYXRhSWRcbiAgICAgICAgPyBkYXRhSWRzLnJlZHVjZSgoYWNjLCBkYXRhSWQpID0+IHtcbiAgICAgICAgICAgIGFjY1tkYXRhSWRdID0gcGxvdFR5cGUuY29sb3JzQnlEYXRhSWRbZGF0YUlkXTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgfSwge30pXG4gICAgICAgIDogbnVsbDtcbiAgICB9LCBbYmlucywgcGxvdFR5cGUuY29sb3JzQnlEYXRhSWRdKTtcblxuICAgIGNvbnN0IFticnVzaGluZywgc2V0QnJ1c2hpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtob3ZlcmVkRFAsIG9uTW91c2VNb3ZlXSA9IHVzZVN0YXRlPEhvdmVyRFAgfCBudWxsPihudWxsKTtcbiAgICBjb25zdCBbZW5hYmxlQ2hhcnRIb3Zlciwgc2V0RW5hYmxlQ2hhcnRIb3Zlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgaGVpZ2h0ID0gaXNFbmxhcmdlZFxuICAgICAgPyBoYXNNb2JpbGVXaWR0aChicmVha1BvaW50VmFsdWVzKVxuICAgICAgICA/IHRoZW1lLnJhbmdlUGxvdEhMYXJnZVBhbG1cbiAgICAgICAgOiB0aGVtZS5yYW5nZVBsb3RITGFyZ2VcbiAgICAgIDogdGhlbWUucmFuZ2VQbG90SDtcblxuICAgIGNvbnN0IG9uQnJ1c2hTdGFydCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIHNldEJydXNoaW5nKHRydWUpO1xuICAgICAgb25Nb3VzZU1vdmUobnVsbCk7XG4gICAgICBzZXRFbmFibGVDaGFydEhvdmVyKGZhbHNlKTtcbiAgICB9LCBbc2V0QnJ1c2hpbmcsIG9uTW91c2VNb3ZlLCBzZXRFbmFibGVDaGFydEhvdmVyXSk7XG5cbiAgICBjb25zdCBvbkJydXNoRW5kID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgc2V0QnJ1c2hpbmcoZmFsc2UpO1xuICAgICAgc2V0RW5hYmxlQ2hhcnRIb3Zlcih0cnVlKTtcbiAgICB9LCBbc2V0QnJ1c2hpbmcsIHNldEVuYWJsZUNoYXJ0SG92ZXJdKTtcblxuICAgIGNvbnN0IG9uTW91c2VvdmVySGFuZGxlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgb25Nb3VzZU1vdmUobnVsbCk7XG4gICAgICBzZXRFbmFibGVDaGFydEhvdmVyKGZhbHNlKTtcbiAgICB9LCBbb25Nb3VzZU1vdmUsIHNldEVuYWJsZUNoYXJ0SG92ZXJdKTtcblxuICAgIGNvbnN0IG9uTW91c2VvdXRIYW5kbGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRFbmFibGVDaGFydEhvdmVyKHRydWUpO1xuICAgIH0sIFtzZXRFbmFibGVDaGFydEhvdmVyXSk7XG5cbiAgICAvLyBKc0RvbSBoYXZlIGxpbWl0ZWQgc3VwcG9ydCBmb3IgU1ZHLCBkMyB3aWxsIGZhaWxcbiAgICBjb25zdCBicnVzaENvbXBvbmVudCA9IGlzVGVzdCgpID8gbnVsbCA6IChcbiAgICAgIDxSYW5nZUJydXNoXG4gICAgICAgIG9uQnJ1c2g9e29uQnJ1c2h9XG4gICAgICAgIG9uQnJ1c2hTdGFydD17b25CcnVzaFN0YXJ0fVxuICAgICAgICBvbkJydXNoRW5kPXtvbkJydXNoRW5kfVxuICAgICAgICByYW5nZT17cmFuZ2V9XG4gICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgICAgaXNSYW5nZWQ9e2lzUmFuZ2VkfVxuICAgICAgICBvbk1vdXNlb3ZlckhhbmRsZT17b25Nb3VzZW92ZXJIYW5kbGV9XG4gICAgICAgIG9uTW91c2VvdXRIYW5kbGU9e29uTW91c2VvdXRIYW5kbGV9XG4gICAgICAgIHsuLi5jaGFydFByb3BzfVxuICAgICAgLz5cbiAgICApO1xuXG4gICAgY29uc3QgY29tbW9uUHJvcHMgPSB7XG4gICAgICB3aWR0aCxcbiAgICAgIHZhbHVlLFxuICAgICAgaGVpZ2h0LFxuICAgICAgbWFyZ2luOiBpc0VubGFyZ2VkID8gdGhlbWUucmFuZ2VQbG90TWFyZ2luTGFyZ2UgOiB0aGVtZS5yYW5nZVBsb3RNYXJnaW4sXG4gICAgICBicnVzaENvbXBvbmVudCxcbiAgICAgIGJydXNoaW5nLFxuICAgICAgaXNFbmxhcmdlZCxcbiAgICAgIGVuYWJsZUNoYXJ0SG92ZXIsXG4gICAgICBvbk1vdXNlTW92ZSxcbiAgICAgIGhvdmVyZWREUCxcbiAgICAgIGlzUmFuZ2VkLFxuICAgICAgb25CcnVzaCxcbiAgICAgIC4uLmNoYXJ0UHJvcHNcbiAgICB9O1xuXG4gICAgcmV0dXJuIGlzTGluZUNoYXJ0KHBsb3RUeXBlKSAmJiBsaW5lQ2hhcnQgPyAoXG4gICAgICA8TGluZUNoYXJ0UGxvdCBsaW5lQ2hhcnQ9e2xpbmVDaGFydH0gey4uLmNvbW1vblByb3BzfSAvPlxuICAgICkgOiAoXG4gICAgICA8SGlzdG9ncmFtUGxvdFxuICAgICAgICBoaXN0b2dyYW1zQnlHcm91cD17Ymluc31cbiAgICAgICAgY29sb3JzQnlHcm91cD17Z3JvdXBDb2xvcnN9XG4gICAgICAgIHJhbmdlPXtyYW5nZX1cbiAgICAgICAgey4uLmNvbW1vblByb3BzfVxuICAgICAgLz5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IFJhbmdlUGxvdFdpdGhUaGVtZSA9IHdpdGhUaGVtZShSYW5nZVBsb3QpIGFzIFJlYWN0LkZDPFxuICAgIFJhbmdlUGxvdFByb3BzICYgUGFydGlhbDxSYW5nZUJydXNoUHJvcHM+XG4gID47XG5cbiAgLy8gYSBjb250YWluZXIgdG8gcmVuZGVyIHNwaW5uZXIgb3IgbWVzc2FnZSB3aGVuIHRoZSBkYXRhIGlzIHRvbyBiaWdcbiAgLy8gdG8gZ2VuZXJhdGUgYSBwbG90XG4gIGNvbnN0IFdpdGhQbG90TG9hZGluZyA9ICh7XG4gICAgbGluZUNoYXJ0LFxuICAgIHBsb3RUeXBlLFxuICAgIGJpbnMsXG4gICAgc2V0RmlsdGVyUGxvdCxcbiAgICBpc0VubGFyZ2VkLFxuICAgIHRoZW1lLFxuICAgIC4uLm90aGVyUHJvcHNcbiAgfTogV2l0aFBsb3RMb2FkaW5nUHJvcHMpID0+IHtcbiAgICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGlzQ2hhbmdpbmdSZWYgPSB1c2VSZWYoZmFsc2UpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChpc0NoYW5naW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaWYgKGhhc0hpc3RvZ3JhbShwbG90VHlwZSwgYmlucykpIHtcbiAgICAgICAgICAvLyBCaW5zIGFyZSBsb2FkZWRcbiAgICAgICAgICBpc0NoYW5naW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFwbG90VHlwZSB8fCAoaXNIaXN0b2dyYW1QbG90KHBsb3RUeXBlKSAmJiAhYmlucykpIHtcbiAgICAgICAgICAvLyBsb2FkIGhpc3RvZ3JhbVxuICAgICAgICAgIHNldElzTG9hZGluZyh0cnVlKTtcbiAgICAgICAgICBzZXRGaWx0ZXJQbG90KHtwbG90VHlwZToge3R5cGU6IFBMT1RfVFlQRVMuaGlzdG9ncmFtfX0pO1xuICAgICAgICAgIGlzQ2hhbmdpbmdSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBbYmlucywgcGxvdFR5cGUsIHNldEZpbHRlclBsb3RdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoaXNDaGFuZ2luZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgIGlmIChoYXNMaW5lQ2hhcnQocGxvdFR5cGUsIGxpbmVDaGFydCkpIHtcbiAgICAgICAgICAvLyBMaW5lIGNoYXJ0IGlzIGxvYWRlZFxuICAgICAgICAgIGlzQ2hhbmdpbmdSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXNMaW5lQ2hhcnQocGxvdFR5cGUpICYmICFsaW5lQ2hhcnQpIHtcbiAgICAgICAgICAvLyBsb2FkIGxpbmUgY2hhcnRcbiAgICAgICAgICBzZXRJc0xvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgc2V0RmlsdGVyUGxvdCh7cGxvdFR5cGU6IHt0eXBlOiBQTE9UX1RZUEVTLmxpbmVDaGFydH19KTtcbiAgICAgICAgICBpc0NoYW5naW5nUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW2xpbmVDaGFydCwgcGxvdFR5cGUsIHNldEZpbHRlclBsb3RdKTtcblxuICAgIGNvbnN0IHJhbmdlUGxvdFN0eWxlID0gdXNlTWVtbyhcbiAgICAgICgpID0+ICh7XG4gICAgICAgIGhlaWdodDogYCR7XG4gICAgICAgICAgaXNFbmxhcmdlZFxuICAgICAgICAgICAgPyBoYXNNb2JpbGVXaWR0aChicmVha1BvaW50VmFsdWVzKVxuICAgICAgICAgICAgICA/IHRoZW1lLnJhbmdlUGxvdENvbnRhaW5lckhMYXJnZVBhbG1cbiAgICAgICAgICAgICAgOiB0aGVtZS5yYW5nZVBsb3RDb250YWluZXJITGFyZ2VcbiAgICAgICAgICAgIDogdGhlbWUucmFuZ2VQbG90Q29udGFpbmVySFxuICAgICAgICB9cHhgXG4gICAgICB9KSxcbiAgICAgIFtpc0VubGFyZ2VkLCB0aGVtZV1cbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRSYW5nZVBsb3Qgc3R5bGU9e3JhbmdlUGxvdFN0eWxlfSBjbGFzc05hbWU9XCJrZy1yYW5nZS1zbGlkZXJfX3Bsb3RcIj5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8ZGl2IHN0eWxlPXtMT0FESU5HX1NQSU5ORVJfQ09OVEFJTkVSX1NUWUxFfT5cbiAgICAgICAgICAgIDxMb2FkaW5nU3Bpbm5lciBib3JkZXJDb2xvcj1cInRyYW5zcGFyZW50XCIgc2l6ZT17NDB9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFJhbmdlUGxvdFdpdGhUaGVtZVxuICAgICAgICAgICAgbGluZUNoYXJ0PXtsaW5lQ2hhcnR9XG4gICAgICAgICAgICBiaW5zPXtiaW5zfVxuICAgICAgICAgICAgcGxvdFR5cGU9e3Bsb3RUeXBlfVxuICAgICAgICAgICAgaXNFbmxhcmdlZD17aXNFbmxhcmdlZH1cbiAgICAgICAgICAgIHRoZW1lPXt0aGVtZX1cbiAgICAgICAgICAgIHsuLi5vdGhlclByb3BzfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1N0eWxlZFJhbmdlUGxvdD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiB3aXRoVGhlbWUoV2l0aFBsb3RMb2FkaW5nKSBhcyBSZWFjdC5GQzxPbWl0PFdpdGhQbG90TG9hZGluZ1Byb3BzLCAndGhlbWUnPj47XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBRix1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsV0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksY0FBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssVUFBQSxHQUFBRixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsZUFBQSxHQUFBTCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQVMsT0FBQSxHQUFBVCxPQUFBO0FBQW1ELElBQUFVLFNBQUE7RUFBQUMsVUFBQTtBQUFBLElBQUFDLGVBQUEsRUFYbkQ7QUFDQTtBQUFBLFNBQUFDLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBZix3QkFBQWUsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxDQUFBLFNBQUFHLENBQUEsR0FBQVAsQ0FBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFiLENBQUEsRUFBQWMsQ0FBQSxVQUFBRyxDQUFBLEtBQUFBLENBQUEsQ0FBQVYsR0FBQSxJQUFBVSxDQUFBLENBQUFDLEdBQUEsSUFBQVAsTUFBQSxDQUFBQyxjQUFBLENBQUFKLENBQUEsRUFBQU0sQ0FBQSxFQUFBRyxDQUFBLElBQUFULENBQUEsQ0FBQU0sQ0FBQSxJQUFBZCxDQUFBLENBQUFjLENBQUEsWUFBQU4sQ0FBQSxjQUFBUixDQUFBLEVBQUFHLENBQUEsSUFBQUEsQ0FBQSxDQUFBZSxHQUFBLENBQUFsQixDQUFBLEVBQUFRLENBQUEsR0FBQUEsQ0FBQTtBQUFBLFNBQUFXLFFBQUFuQixDQUFBLEVBQUFFLENBQUEsUUFBQUMsQ0FBQSxHQUFBUSxNQUFBLENBQUFTLElBQUEsQ0FBQXBCLENBQUEsT0FBQVcsTUFBQSxDQUFBVSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFYLE1BQUEsQ0FBQVUscUJBQUEsQ0FBQXJCLENBQUEsR0FBQUUsQ0FBQSxLQUFBb0IsQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQXJCLENBQUEsV0FBQVMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBYixDQUFBLEVBQUFFLENBQUEsRUFBQXNCLFVBQUEsT0FBQXJCLENBQUEsQ0FBQXNCLElBQUEsQ0FBQUMsS0FBQSxDQUFBdkIsQ0FBQSxFQUFBbUIsQ0FBQSxZQUFBbkIsQ0FBQTtBQUFBLFNBQUF3QixjQUFBM0IsQ0FBQSxhQUFBRSxDQUFBLE1BQUFBLENBQUEsR0FBQTBCLFNBQUEsQ0FBQUMsTUFBQSxFQUFBM0IsQ0FBQSxVQUFBQyxDQUFBLFdBQUF5QixTQUFBLENBQUExQixDQUFBLElBQUEwQixTQUFBLENBQUExQixDQUFBLFFBQUFBLENBQUEsT0FBQWlCLE9BQUEsQ0FBQVIsTUFBQSxDQUFBUixDQUFBLE9BQUEyQixPQUFBLFdBQUE1QixDQUFBLFFBQUE2QixnQkFBQSxhQUFBL0IsQ0FBQSxFQUFBRSxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBUyxNQUFBLENBQUFxQix5QkFBQSxHQUFBckIsTUFBQSxDQUFBc0IsZ0JBQUEsQ0FBQWpDLENBQUEsRUFBQVcsTUFBQSxDQUFBcUIseUJBQUEsQ0FBQTdCLENBQUEsS0FBQWdCLE9BQUEsQ0FBQVIsTUFBQSxDQUFBUixDQUFBLEdBQUEyQixPQUFBLFdBQUE1QixDQUFBLElBQUFTLE1BQUEsQ0FBQUMsY0FBQSxDQUFBWixDQUFBLEVBQUFFLENBQUEsRUFBQVMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBVixDQUFBLEVBQUFELENBQUEsaUJBQUFGLENBQUE7QUFjQSxJQUFNa0MsZUFBZSxHQUFHQyw0QkFBTSxDQUFDQyxHQUFHLENBQUF0QyxlQUFBLEtBQUFBLGVBQUEsT0FBQXVDLHVCQUFBLDBGQUNmLFVBQUFDLEtBQUs7RUFBQSxPQUFJQSxLQUFLLENBQUNDLEtBQUssQ0FBQ0MsZUFBZTtBQUFBLEVBR3REO0FBa0NEQyxnQkFBZ0IsQ0FBQ0MsSUFBSSxHQUFHLENBQUNDLHNCQUFpQixFQUFFQyx5QkFBb0IsRUFBRUMscUJBQWdCLENBQUM7QUFFbkYsSUFBTUMsZUFBZSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFHQyxRQUFRO0VBQUEsT0FBSSxDQUFBQSxRQUFRLGFBQVJBLFFBQVEsdUJBQVJBLFFBQVEsQ0FBRUMsSUFBSSxNQUFLQyxxQkFBVSxDQUFDQyxTQUFTO0FBQUE7QUFDM0UsSUFBTUMsV0FBVyxHQUFHLFNBQWRBLFdBQVdBLENBQUdKLFFBQVE7RUFBQSxPQUFJLENBQUFBLFFBQVEsYUFBUkEsUUFBUSx1QkFBUkEsUUFBUSxDQUFFQyxJQUFJLE1BQUtDLHFCQUFVLENBQUNHLFNBQVM7QUFBQTtBQUN2RSxJQUFNQyxZQUFZLEdBQUcsU0FBZkEsWUFBWUEsQ0FBSU4sUUFBUSxFQUFFTyxJQUFJO0VBQUEsT0FBS1IsZUFBZSxDQUFDQyxRQUFRLENBQUMsSUFBSU8sSUFBSTtBQUFBO0FBQzFFLElBQU1DLFlBQVksR0FBRyxTQUFmQSxZQUFZQSxDQUFJUixRQUFRLEVBQUVLLFNBQVM7RUFBQSxPQUFLRCxXQUFXLENBQUNKLFFBQVEsQ0FBQyxJQUFJSyxTQUFTO0FBQUE7QUFFaEYsSUFBTUksK0JBQStCLEdBQUc7RUFDdENDLE9BQU8sRUFBRSxNQUFNO0VBQ2ZDLFVBQVUsRUFBRSxRQUFRO0VBQ3BCQyxjQUFjLEVBQUUsUUFBUTtFQUN4QkMsS0FBSyxFQUFFO0FBQ1QsQ0FBQztBQUVjLFNBQVNuQixnQkFBZ0JBLENBQ3RDb0IsVUFBZ0QsRUFDaERDLGFBQXNELEVBQ3REQyxhQUFrRCxFQUNsRDtFQUNBLElBQU1DLFNBQVMsR0FBRyxTQUFaQSxTQUFTQSxDQUFBQyxJQUFBLEVBWWtDO0lBQUEsSUFYL0NYLElBQUksR0FBQVcsSUFBQSxDQUFKWCxJQUFJO01BQ0pZLE9BQU8sR0FBQUQsSUFBQSxDQUFQQyxPQUFPO01BQ1BDLEtBQUssR0FBQUYsSUFBQSxDQUFMRSxLQUFLO01BQ0xDLEtBQUssR0FBQUgsSUFBQSxDQUFMRyxLQUFLO01BQ0xSLEtBQUssR0FBQUssSUFBQSxDQUFMTCxLQUFLO01BQ0xiLFFBQVEsR0FBQWtCLElBQUEsQ0FBUmxCLFFBQVE7TUFDUkssU0FBUyxHQUFBYSxJQUFBLENBQVRiLFNBQVM7TUFDVGlCLFVBQVUsR0FBQUosSUFBQSxDQUFWSSxVQUFVO01BQ1ZDLFFBQVEsR0FBQUwsSUFBQSxDQUFSSyxRQUFRO01BQ1IvQixLQUFLLEdBQUEwQixJQUFBLENBQUwxQixLQUFLO01BQ0ZnQyxVQUFVLE9BQUFDLHlCQUFBLGFBQUFQLElBQUEsRUFBQXJFLFNBQUE7SUFFYixJQUFNNkUsV0FBVyxHQUFHLElBQUFDLGNBQU8sRUFBQyxZQUFNO01BQ2hDLElBQU1DLE9BQU8sR0FBR3JCLElBQUksR0FBRzNDLE1BQU0sQ0FBQ1MsSUFBSSxDQUFDa0MsSUFBSSxDQUFDLEdBQUcsRUFBRTtNQUM3QyxPQUFPUCxRQUFRLENBQUM2QixjQUFjLEdBQzFCRCxPQUFPLENBQUNFLE1BQU0sQ0FBQyxVQUFDQyxHQUFHLEVBQUVDLE1BQU0sRUFBSztRQUM5QkQsR0FBRyxDQUFDQyxNQUFNLENBQUMsR0FBR2hDLFFBQVEsQ0FBQzZCLGNBQWMsQ0FBQ0csTUFBTSxDQUFDO1FBQzdDLE9BQU9ELEdBQUc7TUFDWixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FDTixJQUFJO0lBQ1YsQ0FBQyxFQUFFLENBQUN4QixJQUFJLEVBQUVQLFFBQVEsQ0FBQzZCLGNBQWMsQ0FBQyxDQUFDO0lBRW5DLElBQUFJLFNBQUEsR0FBZ0MsSUFBQUMsZUFBUSxFQUFDLEtBQUssQ0FBQztNQUFBQyxVQUFBLE9BQUFDLGVBQUEsYUFBQUgsU0FBQTtNQUF4Q0ksUUFBUSxHQUFBRixVQUFBO01BQUVHLFdBQVcsR0FBQUgsVUFBQTtJQUM1QixJQUFBSSxVQUFBLEdBQWlDLElBQUFMLGVBQVEsRUFBaUIsSUFBSSxDQUFDO01BQUFNLFVBQUEsT0FBQUosZUFBQSxhQUFBRyxVQUFBO01BQXhERSxTQUFTLEdBQUFELFVBQUE7TUFBRUUsV0FBVyxHQUFBRixVQUFBO0lBQzdCLElBQUFHLFVBQUEsR0FBZ0QsSUFBQVQsZUFBUSxFQUFDLEtBQUssQ0FBQztNQUFBVSxVQUFBLE9BQUFSLGVBQUEsYUFBQU8sVUFBQTtNQUF4REUsZ0JBQWdCLEdBQUFELFVBQUE7TUFBRUUsbUJBQW1CLEdBQUFGLFVBQUE7SUFDNUMsSUFBTUcsTUFBTSxHQUFHekIsVUFBVSxHQUNyQixJQUFBMEIscUJBQWMsRUFBQ0Msd0JBQWdCLENBQUMsR0FDOUJ6RCxLQUFLLENBQUMwRCxtQkFBbUIsR0FDekIxRCxLQUFLLENBQUMyRCxlQUFlLEdBQ3ZCM0QsS0FBSyxDQUFDNEQsVUFBVTtJQUVwQixJQUFNQyxZQUFZLEdBQUcsSUFBQUMsa0JBQVcsRUFBQyxZQUFNO01BQ3JDaEIsV0FBVyxDQUFDLElBQUksQ0FBQztNQUNqQkksV0FBVyxDQUFDLElBQUksQ0FBQztNQUNqQkksbUJBQW1CLENBQUMsS0FBSyxDQUFDO0lBQzVCLENBQUMsRUFBRSxDQUFDUixXQUFXLEVBQUVJLFdBQVcsRUFBRUksbUJBQW1CLENBQUMsQ0FBQztJQUVuRCxJQUFNUyxVQUFVLEdBQUcsSUFBQUQsa0JBQVcsRUFBQyxZQUFNO01BQ25DaEIsV0FBVyxDQUFDLEtBQUssQ0FBQztNQUNsQlEsbUJBQW1CLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUMsRUFBRSxDQUFDUixXQUFXLEVBQUVRLG1CQUFtQixDQUFDLENBQUM7SUFFdEMsSUFBTVUsaUJBQWlCLEdBQUcsSUFBQUYsa0JBQVcsRUFBQyxZQUFNO01BQzFDWixXQUFXLENBQUMsSUFBSSxDQUFDO01BQ2pCSSxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQyxFQUFFLENBQUNKLFdBQVcsRUFBRUksbUJBQW1CLENBQUMsQ0FBQztJQUV0QyxJQUFNVyxnQkFBZ0IsR0FBRyxJQUFBSCxrQkFBVyxFQUFDLFlBQU07TUFDekNSLG1CQUFtQixDQUFDLElBQUksQ0FBQztJQUMzQixDQUFDLEVBQUUsQ0FBQ0EsbUJBQW1CLENBQUMsQ0FBQzs7SUFFekI7SUFDQSxJQUFNWSxjQUFjLEdBQUcsSUFBQUMsYUFBTSxFQUFDLENBQUMsR0FBRyxJQUFJLGdCQUNwQzFILE1BQUEsWUFBQTJILGFBQUEsQ0FBQzlDLFVBQVUsTUFBQStDLFNBQUE7TUFDVDFDLE9BQU8sRUFBRUEsT0FBUTtNQUNqQmtDLFlBQVksRUFBRUEsWUFBYTtNQUMzQkUsVUFBVSxFQUFFQSxVQUFXO01BQ3ZCbkMsS0FBSyxFQUFFQSxLQUFNO01BQ2JDLEtBQUssRUFBRUEsS0FBTTtNQUNiUixLQUFLLEVBQUVBLEtBQU07TUFDYmtDLE1BQU0sRUFBRUEsTUFBTztNQUNmeEIsUUFBUSxFQUFFQSxRQUFTO01BQ25CaUMsaUJBQWlCLEVBQUVBLGlCQUFrQjtNQUNyQ0MsZ0JBQWdCLEVBQUVBO0lBQWlCLEdBQy9CakMsVUFBVSxDQUNmLENBQ0Y7SUFFRCxJQUFNc0MsV0FBVyxHQUFBbEYsYUFBQTtNQUNmaUMsS0FBSyxFQUFMQSxLQUFLO01BQ0xRLEtBQUssRUFBTEEsS0FBSztNQUNMMEIsTUFBTSxFQUFOQSxNQUFNO01BQ05nQixNQUFNLEVBQUV6QyxVQUFVLEdBQUc5QixLQUFLLENBQUN3RSxvQkFBb0IsR0FBR3hFLEtBQUssQ0FBQ3lFLGVBQWU7TUFDdkVQLGNBQWMsRUFBZEEsY0FBYztNQUNkckIsUUFBUSxFQUFSQSxRQUFRO01BQ1JmLFVBQVUsRUFBVkEsVUFBVTtNQUNWdUIsZ0JBQWdCLEVBQWhCQSxnQkFBZ0I7TUFDaEJILFdBQVcsRUFBWEEsV0FBVztNQUNYRCxTQUFTLEVBQVRBLFNBQVM7TUFDVGxCLFFBQVEsRUFBUkEsUUFBUTtNQUNSSixPQUFPLEVBQVBBO0lBQU8sR0FDSkssVUFBVSxDQUNkO0lBRUQsT0FBT3BCLFdBQVcsQ0FBQ0osUUFBUSxDQUFDLElBQUlLLFNBQVMsZ0JBQ3ZDcEUsTUFBQSxZQUFBMkgsYUFBQSxDQUFDNUMsYUFBYSxNQUFBNkMsU0FBQTtNQUFDeEQsU0FBUyxFQUFFQTtJQUFVLEdBQUt5RCxXQUFXLENBQUcsQ0FBQyxnQkFFeEQ3SCxNQUFBLFlBQUEySCxhQUFBLENBQUM3QyxhQUFhLE1BQUE4QyxTQUFBO01BQ1pLLGlCQUFpQixFQUFFM0QsSUFBSztNQUN4QjRELGFBQWEsRUFBRXpDLFdBQVk7TUFDM0JOLEtBQUssRUFBRUE7SUFBTSxHQUNUMEMsV0FBVyxDQUNoQixDQUNGO0VBQ0gsQ0FBQztFQUVELElBQU1NLGtCQUFrQixHQUFHLElBQUFDLDJCQUFTLEVBQUNwRCxTQUFTLENBRTdDOztFQUVEO0VBQ0E7RUFDQSxJQUFNcUQsZUFBZSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFBQyxLQUFBLEVBUU87SUFBQSxJQVAxQmxFLFNBQVMsR0FBQWtFLEtBQUEsQ0FBVGxFLFNBQVM7TUFDVEwsUUFBUSxHQUFBdUUsS0FBQSxDQUFSdkUsUUFBUTtNQUNSTyxJQUFJLEdBQUFnRSxLQUFBLENBQUpoRSxJQUFJO01BQ0ppRSxhQUFhLEdBQUFELEtBQUEsQ0FBYkMsYUFBYTtNQUNibEQsVUFBVSxHQUFBaUQsS0FBQSxDQUFWakQsVUFBVTtNQUNWOUIsS0FBSyxHQUFBK0UsS0FBQSxDQUFML0UsS0FBSztNQUNGaUYsVUFBVSxPQUFBaEQseUJBQUEsYUFBQThDLEtBQUEsRUFBQXpILFVBQUE7SUFFYixJQUFBNEgsVUFBQSxHQUFrQyxJQUFBeEMsZUFBUSxFQUFDLEtBQUssQ0FBQztNQUFBeUMsVUFBQSxPQUFBdkMsZUFBQSxhQUFBc0MsVUFBQTtNQUExQ0UsU0FBUyxHQUFBRCxVQUFBO01BQUVFLFlBQVksR0FBQUYsVUFBQTtJQUM5QixJQUFNRyxhQUFhLEdBQUcsSUFBQUMsYUFBTSxFQUFDLEtBQUssQ0FBQztJQUVuQyxJQUFBQyxnQkFBUyxFQUFDLFlBQU07TUFDZCxJQUFJRixhQUFhLENBQUNHLE9BQU8sRUFBRTtRQUN6QixJQUFJM0UsWUFBWSxDQUFDTixRQUFRLEVBQUVPLElBQUksQ0FBQyxFQUFFO1VBQ2hDO1VBQ0F1RSxhQUFhLENBQUNHLE9BQU8sR0FBRyxLQUFLO1FBQy9CO01BQ0YsQ0FBQyxNQUFNO1FBQ0wsSUFBSSxDQUFDakYsUUFBUSxJQUFLRCxlQUFlLENBQUNDLFFBQVEsQ0FBQyxJQUFJLENBQUNPLElBQUssRUFBRTtVQUNyRDtVQUNBc0UsWUFBWSxDQUFDLElBQUksQ0FBQztVQUNsQkwsYUFBYSxDQUFDO1lBQUN4RSxRQUFRLEVBQUU7Y0FBQ0MsSUFBSSxFQUFFQyxxQkFBVSxDQUFDQztZQUFTO1VBQUMsQ0FBQyxDQUFDO1VBQ3ZEMkUsYUFBYSxDQUFDRyxPQUFPLEdBQUcsSUFBSTtRQUM5QjtNQUNGO0lBQ0YsQ0FBQyxFQUFFLENBQUMxRSxJQUFJLEVBQUVQLFFBQVEsRUFBRXdFLGFBQWEsQ0FBQyxDQUFDO0lBRW5DLElBQUFRLGdCQUFTLEVBQUMsWUFBTTtNQUNkLElBQUlGLGFBQWEsQ0FBQ0csT0FBTyxFQUFFO1FBQ3pCLElBQUl6RSxZQUFZLENBQUNSLFFBQVEsRUFBRUssU0FBUyxDQUFDLEVBQUU7VUFDckM7VUFDQXlFLGFBQWEsQ0FBQ0csT0FBTyxHQUFHLEtBQUs7UUFDL0I7TUFDRixDQUFDLE1BQU07UUFDTCxJQUFJN0UsV0FBVyxDQUFDSixRQUFRLENBQUMsSUFBSSxDQUFDSyxTQUFTLEVBQUU7VUFDdkM7VUFDQXdFLFlBQVksQ0FBQyxJQUFJLENBQUM7VUFDbEJMLGFBQWEsQ0FBQztZQUFDeEUsUUFBUSxFQUFFO2NBQUNDLElBQUksRUFBRUMscUJBQVUsQ0FBQ0c7WUFBUztVQUFDLENBQUMsQ0FBQztVQUN2RHlFLGFBQWEsQ0FBQ0csT0FBTyxHQUFHLElBQUk7UUFDOUI7TUFDRjtJQUNGLENBQUMsRUFBRSxDQUFDNUUsU0FBUyxFQUFFTCxRQUFRLEVBQUV3RSxhQUFhLENBQUMsQ0FBQztJQUV4QyxJQUFNVSxjQUFjLEdBQUcsSUFBQXZELGNBQU8sRUFDNUI7TUFBQSxPQUFPO1FBQ0xvQixNQUFNLEtBQUFvQyxNQUFBLENBQ0o3RCxVQUFVLEdBQ04sSUFBQTBCLHFCQUFjLEVBQUNDLHdCQUFnQixDQUFDLEdBQzlCekQsS0FBSyxDQUFDNEYsNEJBQTRCLEdBQ2xDNUYsS0FBSyxDQUFDNkYsd0JBQXdCLEdBQ2hDN0YsS0FBSyxDQUFDOEYsbUJBQW1CO01BRWpDLENBQUM7SUFBQSxDQUFDLEVBQ0YsQ0FBQ2hFLFVBQVUsRUFBRTlCLEtBQUssQ0FDcEIsQ0FBQztJQUVELG9CQUNFdkQsTUFBQSxZQUFBMkgsYUFBQSxDQUFDekUsZUFBZTtNQUFDb0csS0FBSyxFQUFFTCxjQUFlO01BQUNNLFNBQVMsRUFBQztJQUF1QixHQUN0RVosU0FBUyxnQkFDUjNJLE1BQUEsWUFBQTJILGFBQUE7TUFBSzJCLEtBQUssRUFBRTlFO0lBQWdDLGdCQUMxQ3hFLE1BQUEsWUFBQTJILGFBQUEsQ0FBQ2pILGVBQUEsV0FBYztNQUFDOEksV0FBVyxFQUFDLGFBQWE7TUFBQ0MsSUFBSSxFQUFFO0lBQUcsQ0FBRSxDQUNsRCxDQUFDLGdCQUVOekosTUFBQSxZQUFBMkgsYUFBQSxDQUFDUSxrQkFBa0IsTUFBQVAsU0FBQTtNQUNqQnhELFNBQVMsRUFBRUEsU0FBVTtNQUNyQkUsSUFBSSxFQUFFQSxJQUFLO01BQ1hQLFFBQVEsRUFBRUEsUUFBUztNQUNuQnNCLFVBQVUsRUFBRUEsVUFBVztNQUN2QjlCLEtBQUssRUFBRUE7SUFBTSxHQUNUaUYsVUFBVSxDQUNmLENBRVksQ0FBQztFQUV0QixDQUFDO0VBRUQsT0FBTyxJQUFBSiwyQkFBUyxFQUFDQyxlQUFlLENBQUM7QUFDbkMiLCJpZ25vcmVMaXN0IjpbXX0=
218
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yYW5nZUJydXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9oaXN0b2dyYW1QbG90IiwiX2xpbmVDaGFydCIsIl91dGlscyIsIl9jb25zdGFudHMiLCJfbG9hZGluZ1NwaW5uZXIiLCJfc3R5bGVzIiwiX2V4Y2x1ZGVkIiwiX2V4Y2x1ZGVkMiIsIl90ZW1wbGF0ZU9iamVjdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIlN0eWxlZFJhbmdlUGxvdCIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsInNsaWRlckJhckhlaWdodCIsIlJhbmdlUGxvdEZhY3RvcnkiLCJkZXBzIiwiUmFuZ2VCcnVzaEZhY3RvcnkiLCJIaXN0b2dyYW1QbG90RmFjdG9yeSIsIkxpbmVDaGFydEZhY3RvcnkiLCJpc0hpc3RvZ3JhbVBsb3QiLCJwbG90VHlwZSIsInR5cGUiLCJQTE9UX1RZUEVTIiwiaGlzdG9ncmFtIiwiaXNMaW5lQ2hhcnQiLCJsaW5lQ2hhcnQiLCJoYXNIaXN0b2dyYW0iLCJiaW5zIiwiaGFzTGluZUNoYXJ0IiwiTE9BRElOR19TUElOTkVSX0NPTlRBSU5FUl9TVFlMRSIsImRpc3BsYXkiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJ3aWR0aCIsIlJhbmdlQnJ1c2giLCJIaXN0b2dyYW1QbG90IiwiTGluZUNoYXJ0UGxvdCIsIlJhbmdlUGxvdCIsIl9yZWYiLCJvbkJydXNoIiwicmFuZ2UiLCJ2YWx1ZSIsImlzRW5sYXJnZWQiLCJpc1JhbmdlZCIsImNoYXJ0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwiZ3JvdXBDb2xvcnMiLCJ1c2VNZW1vIiwiZGF0YUlkcyIsImNvbG9yc0J5RGF0YUlkIiwicmVkdWNlIiwiYWNjIiwiZGF0YUlkIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiYnJ1c2hpbmciLCJzZXRCcnVzaGluZyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaG92ZXJlZERQIiwib25Nb3VzZU1vdmUiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImVuYWJsZUNoYXJ0SG92ZXIiLCJzZXRFbmFibGVDaGFydEhvdmVyIiwiaGVpZ2h0IiwiaGFzTW9iaWxlV2lkdGgiLCJicmVha1BvaW50VmFsdWVzIiwicmFuZ2VQbG90SExhcmdlUGFsbSIsInJhbmdlUGxvdEhMYXJnZSIsInJhbmdlUGxvdEgiLCJvbkJydXNoU3RhcnQiLCJ1c2VDYWxsYmFjayIsIm9uQnJ1c2hFbmQiLCJvbk1vdXNlb3ZlckhhbmRsZSIsIm9uTW91c2VvdXRIYW5kbGUiLCJicnVzaENvbXBvbmVudCIsImlzVGVzdCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kczIiLCJjb21tb25Qcm9wcyIsIm1hcmdpbiIsInJhbmdlUGxvdE1hcmdpbkxhcmdlIiwicmFuZ2VQbG90TWFyZ2luIiwieUF4aXNBdXRvUmFuZ2UiLCJoaXN0b2dyYW1zQnlHcm91cCIsImNvbG9yc0J5R3JvdXAiLCJSYW5nZVBsb3RXaXRoVGhlbWUiLCJ3aXRoVGhlbWUiLCJXaXRoUGxvdExvYWRpbmciLCJfcmVmMiIsInNldEZpbHRlclBsb3QiLCJvdGhlclByb3BzIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJpc0NoYW5naW5nUmVmIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiY3VycmVudCIsInJhbmdlUGxvdFN0eWxlIiwiY29uY2F0IiwicmFuZ2VQbG90Q29udGFpbmVySExhcmdlUGFsbSIsInJhbmdlUGxvdENvbnRhaW5lckhMYXJnZSIsInJhbmdlUGxvdENvbnRhaW5lckgiLCJzdHlsZSIsImNsYXNzTmFtZSIsImJvcmRlckNvbG9yIiwic2l6ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tb24vcmFuZ2UtcGxvdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSwgQ1NTUHJvcGVydGllc30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCwge3dpdGhUaGVtZX0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IFJhbmdlQnJ1c2hGYWN0b3J5LCB7T25CcnVzaCwgUmFuZ2VCcnVzaFByb3BzfSBmcm9tICcuL3JhbmdlLWJydXNoJztcbmltcG9ydCBIaXN0b2dyYW1QbG90RmFjdG9yeSBmcm9tICcuL2hpc3RvZ3JhbS1wbG90JztcbmltcG9ydCBMaW5lQ2hhcnRGYWN0b3J5LCB7SG92ZXJEUH0gZnJvbSAnLi9saW5lLWNoYXJ0JztcbmltcG9ydCB7aGFzTW9iaWxlV2lkdGgsIGlzVGVzdH0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge1BMT1RfVFlQRVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCBMb2FkaW5nU3Bpbm5lciBmcm9tICcuL2xvYWRpbmctc3Bpbm5lcic7XG5pbXBvcnQge2JyZWFrUG9pbnRWYWx1ZXN9IGZyb20gJ0BrZXBsZXIuZ2wvc3R5bGVzJztcbmltcG9ydCB7TGluZUNoYXJ0IGFzIExpbmVDaGFydFR5cGUsIEZpbHRlciwgQmluc30gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge0RhdGFzZXRzfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcblxuY29uc3QgU3R5bGVkUmFuZ2VQbG90ID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zbGlkZXJCYXJIZWlnaHR9cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbmludGVyZmFjZSBSYW5nZVBsb3RQcm9wcyB7XG4gIG9uQnJ1c2g6IE9uQnJ1c2g7XG4gIHJhbmdlOiBudW1iZXJbXTtcbiAgdmFsdWU6IG51bWJlcltdO1xuICB3aWR0aDogbnVtYmVyO1xuICBwbG90VHlwZToge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcbiAgbGluZUNoYXJ0PzogTGluZUNoYXJ0VHlwZTtcbiAgYmlucz86IEJpbnM7XG5cbiAgaXNFbmxhcmdlZD86IGJvb2xlYW47XG4gIGlzUmFuZ2VkPzogYm9vbGVhbjtcbiAgdGhlbWU6IGFueTtcbiAgdGltZUZvcm1hdD86IHN0cmluZztcbiAgdGltZXpvbmU/OiBzdHJpbmcgfCBudWxsO1xuICBwbGF5YmFja0NvbnRyb2xXaWR0aD86IG51bWJlcjtcblxuICBhbmltYXRpb25XaW5kb3c/OiBzdHJpbmc7XG4gIGZpbHRlcj86IEZpbHRlcjtcbiAgZGF0YXNldHM/OiBEYXRhc2V0cztcblxuICBpbnZlcnRUcmVuZENvbG9yPzogYm9vbGVhbjtcblxuICBzdHlsZTogQ1NTUHJvcGVydGllcztcbn1cblxudHlwZSBXaXRoUGxvdExvYWRpbmdQcm9wcyA9IFJhbmdlUGxvdFByb3BzICZcbiAgUGFydGlhbDxSYW5nZUJydXNoUHJvcHM+ICYge1xuICAgIHNldEZpbHRlclBsb3Q6IGFueTtcbiAgfTtcblxuUmFuZ2VQbG90RmFjdG9yeS5kZXBzID0gW1JhbmdlQnJ1c2hGYWN0b3J5LCBIaXN0b2dyYW1QbG90RmFjdG9yeSwgTGluZUNoYXJ0RmFjdG9yeV07XG5cbmNvbnN0IGlzSGlzdG9ncmFtUGxvdCA9IHBsb3RUeXBlID0+IHBsb3RUeXBlPy50eXBlID09PSBQTE9UX1RZUEVTLmhpc3RvZ3JhbTtcbmNvbnN0IGlzTGluZUNoYXJ0ID0gcGxvdFR5cGUgPT4gcGxvdFR5cGU/LnR5cGUgPT09IFBMT1RfVFlQRVMubGluZUNoYXJ0O1xuY29uc3QgaGFzSGlzdG9ncmFtID0gKHBsb3RUeXBlLCBiaW5zKSA9PiBpc0hpc3RvZ3JhbVBsb3QocGxvdFR5cGUpICYmIGJpbnM7XG5jb25zdCBoYXNMaW5lQ2hhcnQgPSAocGxvdFR5cGUsIGxpbmVDaGFydCkgPT4gaXNMaW5lQ2hhcnQocGxvdFR5cGUpICYmIGxpbmVDaGFydDtcblxuY29uc3QgTE9BRElOR19TUElOTkVSX0NPTlRBSU5FUl9TVFlMRSA9IHtcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICB3aWR0aDogJzEwMCUnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBSYW5nZVBsb3RGYWN0b3J5KFxuICBSYW5nZUJydXNoOiBSZXR1cm5UeXBlPHR5cGVvZiBSYW5nZUJydXNoRmFjdG9yeT4sXG4gIEhpc3RvZ3JhbVBsb3Q6IFJldHVyblR5cGU8dHlwZW9mIEhpc3RvZ3JhbVBsb3RGYWN0b3J5PixcbiAgTGluZUNoYXJ0UGxvdDogUmV0dXJuVHlwZTx0eXBlb2YgTGluZUNoYXJ0RmFjdG9yeT5cbikge1xuICBjb25zdCBSYW5nZVBsb3QgPSAoe1xuICAgIGJpbnMsXG4gICAgb25CcnVzaCxcbiAgICByYW5nZSxcbiAgICB2YWx1ZSxcbiAgICB3aWR0aCxcbiAgICBwbG90VHlwZSxcbiAgICBsaW5lQ2hhcnQsXG4gICAgaXNFbmxhcmdlZCxcbiAgICBpc1JhbmdlZCxcbiAgICB0aGVtZSxcbiAgICAuLi5jaGFydFByb3BzXG4gIH06IFJhbmdlUGxvdFByb3BzICYgUGFydGlhbDxSYW5nZUJydXNoUHJvcHM+KSA9PiB7XG4gICAgY29uc3QgZ3JvdXBDb2xvcnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGFJZHMgPSBiaW5zID8gT2JqZWN0LmtleXMoYmlucykgOiBbXTtcbiAgICAgIHJldHVybiBwbG90VHlwZS5jb2xvcnNCeURhdGFJZFxuICAgICAgICA/IGRhdGFJZHMucmVkdWNlKChhY2MsIGRhdGFJZCkgPT4ge1xuICAgICAgICAgICAgYWNjW2RhdGFJZF0gPSBwbG90VHlwZS5jb2xvcnNCeURhdGFJZFtkYXRhSWRdO1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9LCB7fSlcbiAgICAgICAgOiBudWxsO1xuICAgIH0sIFtiaW5zLCBwbG90VHlwZS5jb2xvcnNCeURhdGFJZF0pO1xuXG4gICAgY29uc3QgW2JydXNoaW5nLCBzZXRCcnVzaGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2hvdmVyZWREUCwgb25Nb3VzZU1vdmVdID0gdXNlU3RhdGU8SG92ZXJEUCB8IG51bGw+KG51bGwpO1xuICAgIGNvbnN0IFtlbmFibGVDaGFydEhvdmVyLCBzZXRFbmFibGVDaGFydEhvdmVyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBoZWlnaHQgPSBpc0VubGFyZ2VkXG4gICAgICA/IGhhc01vYmlsZVdpZHRoKGJyZWFrUG9pbnRWYWx1ZXMpXG4gICAgICAgID8gdGhlbWUucmFuZ2VQbG90SExhcmdlUGFsbVxuICAgICAgICA6IHRoZW1lLnJhbmdlUGxvdEhMYXJnZVxuICAgICAgOiB0aGVtZS5yYW5nZVBsb3RIO1xuXG4gICAgY29uc3Qgb25CcnVzaFN0YXJ0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgc2V0QnJ1c2hpbmcodHJ1ZSk7XG4gICAgICBvbk1vdXNlTW92ZShudWxsKTtcbiAgICAgIHNldEVuYWJsZUNoYXJ0SG92ZXIoZmFsc2UpO1xuICAgIH0sIFtzZXRCcnVzaGluZywgb25Nb3VzZU1vdmUsIHNldEVuYWJsZUNoYXJ0SG92ZXJdKTtcblxuICAgIGNvbnN0IG9uQnJ1c2hFbmQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRCcnVzaGluZyhmYWxzZSk7XG4gICAgICBzZXRFbmFibGVDaGFydEhvdmVyKHRydWUpO1xuICAgIH0sIFtzZXRCcnVzaGluZywgc2V0RW5hYmxlQ2hhcnRIb3Zlcl0pO1xuXG4gICAgY29uc3Qgb25Nb3VzZW92ZXJIYW5kbGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBvbk1vdXNlTW92ZShudWxsKTtcbiAgICAgIHNldEVuYWJsZUNoYXJ0SG92ZXIoZmFsc2UpO1xuICAgIH0sIFtvbk1vdXNlTW92ZSwgc2V0RW5hYmxlQ2hhcnRIb3Zlcl0pO1xuXG4gICAgY29uc3Qgb25Nb3VzZW91dEhhbmRsZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIHNldEVuYWJsZUNoYXJ0SG92ZXIodHJ1ZSk7XG4gICAgfSwgW3NldEVuYWJsZUNoYXJ0SG92ZXJdKTtcblxuICAgIC8vIEpzRG9tIGhhdmUgbGltaXRlZCBzdXBwb3J0IGZvciBTVkcsIGQzIHdpbGwgZmFpbFxuICAgIGNvbnN0IGJydXNoQ29tcG9uZW50ID0gaXNUZXN0KCkgPyBudWxsIDogKFxuICAgICAgPFJhbmdlQnJ1c2hcbiAgICAgICAgb25CcnVzaD17b25CcnVzaH1cbiAgICAgICAgb25CcnVzaFN0YXJ0PXtvbkJydXNoU3RhcnR9XG4gICAgICAgIG9uQnJ1c2hFbmQ9e29uQnJ1c2hFbmR9XG4gICAgICAgIHJhbmdlPXtyYW5nZX1cbiAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICB3aWR0aD17d2lkdGh9XG4gICAgICAgIGhlaWdodD17aGVpZ2h0fVxuICAgICAgICBpc1JhbmdlZD17aXNSYW5nZWR9XG4gICAgICAgIG9uTW91c2VvdmVySGFuZGxlPXtvbk1vdXNlb3ZlckhhbmRsZX1cbiAgICAgICAgb25Nb3VzZW91dEhhbmRsZT17b25Nb3VzZW91dEhhbmRsZX1cbiAgICAgICAgey4uLmNoYXJ0UHJvcHN9XG4gICAgICAvPlxuICAgICk7XG5cbiAgICBjb25zdCBjb21tb25Qcm9wcyA9IHtcbiAgICAgIHdpZHRoLFxuICAgICAgdmFsdWUsXG4gICAgICBoZWlnaHQsXG4gICAgICBtYXJnaW46IGlzRW5sYXJnZWQgPyB0aGVtZS5yYW5nZVBsb3RNYXJnaW5MYXJnZSA6IHRoZW1lLnJhbmdlUGxvdE1hcmdpbixcbiAgICAgIGJydXNoQ29tcG9uZW50LFxuICAgICAgYnJ1c2hpbmcsXG4gICAgICBpc0VubGFyZ2VkLFxuICAgICAgZW5hYmxlQ2hhcnRIb3ZlcixcbiAgICAgIG9uTW91c2VNb3ZlLFxuICAgICAgaG92ZXJlZERQLFxuICAgICAgaXNSYW5nZWQsXG4gICAgICBvbkJydXNoLFxuICAgICAgLi4uY2hhcnRQcm9wc1xuICAgIH07XG5cbiAgICByZXR1cm4gaXNMaW5lQ2hhcnQocGxvdFR5cGUpICYmIGxpbmVDaGFydCA/IChcbiAgICAgIDxMaW5lQ2hhcnRQbG90IGxpbmVDaGFydD17bGluZUNoYXJ0fSByYW5nZT17cmFuZ2V9IHlBeGlzQXV0b1JhbmdlPXtwbG90VHlwZS55QXhpc0F1dG9SYW5nZX0gey4uLmNvbW1vblByb3BzfSAvPlxuICAgICkgOiAoXG4gICAgICA8SGlzdG9ncmFtUGxvdFxuICAgICAgICBoaXN0b2dyYW1zQnlHcm91cD17Ymluc31cbiAgICAgICAgY29sb3JzQnlHcm91cD17Z3JvdXBDb2xvcnN9XG4gICAgICAgIHJhbmdlPXtyYW5nZX1cbiAgICAgICAgey4uLmNvbW1vblByb3BzfVxuICAgICAgLz5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IFJhbmdlUGxvdFdpdGhUaGVtZSA9IHdpdGhUaGVtZShSYW5nZVBsb3QpIGFzIFJlYWN0LkZDPFxuICAgIFJhbmdlUGxvdFByb3BzICYgUGFydGlhbDxSYW5nZUJydXNoUHJvcHM+XG4gID47XG5cbiAgLy8gYSBjb250YWluZXIgdG8gcmVuZGVyIHNwaW5uZXIgb3IgbWVzc2FnZSB3aGVuIHRoZSBkYXRhIGlzIHRvbyBiaWdcbiAgLy8gdG8gZ2VuZXJhdGUgYSBwbG90XG4gIGNvbnN0IFdpdGhQbG90TG9hZGluZyA9ICh7XG4gICAgbGluZUNoYXJ0LFxuICAgIHBsb3RUeXBlLFxuICAgIGJpbnMsXG4gICAgc2V0RmlsdGVyUGxvdCxcbiAgICBpc0VubGFyZ2VkLFxuICAgIHRoZW1lLFxuICAgIC4uLm90aGVyUHJvcHNcbiAgfTogV2l0aFBsb3RMb2FkaW5nUHJvcHMpID0+IHtcbiAgICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGlzQ2hhbmdpbmdSZWYgPSB1c2VSZWYoZmFsc2UpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChpc0NoYW5naW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaWYgKGhhc0hpc3RvZ3JhbShwbG90VHlwZSwgYmlucykpIHtcbiAgICAgICAgICAvLyBCaW5zIGFyZSBsb2FkZWRcbiAgICAgICAgICBpc0NoYW5naW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFwbG90VHlwZSB8fCAoaXNIaXN0b2dyYW1QbG90KHBsb3RUeXBlKSAmJiAhYmlucykpIHtcbiAgICAgICAgICAvLyBsb2FkIGhpc3RvZ3JhbVxuICAgICAgICAgIHNldElzTG9hZGluZyh0cnVlKTtcbiAgICAgICAgICBzZXRGaWx0ZXJQbG90KHtwbG90VHlwZToge3R5cGU6IFBMT1RfVFlQRVMuaGlzdG9ncmFtfX0pO1xuICAgICAgICAgIGlzQ2hhbmdpbmdSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBbYmlucywgcGxvdFR5cGUsIHNldEZpbHRlclBsb3RdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoaXNDaGFuZ2luZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgIGlmIChoYXNMaW5lQ2hhcnQocGxvdFR5cGUsIGxpbmVDaGFydCkpIHtcbiAgICAgICAgICAvLyBMaW5lIGNoYXJ0IGlzIGxvYWRlZFxuICAgICAgICAgIGlzQ2hhbmdpbmdSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXNMaW5lQ2hhcnQocGxvdFR5cGUpICYmICFsaW5lQ2hhcnQpIHtcbiAgICAgICAgICAvLyBsb2FkIGxpbmUgY2hhcnRcbiAgICAgICAgICBzZXRJc0xvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgc2V0RmlsdGVyUGxvdCh7cGxvdFR5cGU6IHt0eXBlOiBQTE9UX1RZUEVTLmxpbmVDaGFydH19KTtcbiAgICAgICAgICBpc0NoYW5naW5nUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW2xpbmVDaGFydCwgcGxvdFR5cGUsIHNldEZpbHRlclBsb3RdKTtcblxuICAgIGNvbnN0IHJhbmdlUGxvdFN0eWxlID0gdXNlTWVtbyhcbiAgICAgICgpID0+ICh7XG4gICAgICAgIGhlaWdodDogYCR7XG4gICAgICAgICAgaXNFbmxhcmdlZFxuICAgICAgICAgICAgPyBoYXNNb2JpbGVXaWR0aChicmVha1BvaW50VmFsdWVzKVxuICAgICAgICAgICAgICA/IHRoZW1lLnJhbmdlUGxvdENvbnRhaW5lckhMYXJnZVBhbG1cbiAgICAgICAgICAgICAgOiB0aGVtZS5yYW5nZVBsb3RDb250YWluZXJITGFyZ2VcbiAgICAgICAgICAgIDogdGhlbWUucmFuZ2VQbG90Q29udGFpbmVySFxuICAgICAgICB9cHhgXG4gICAgICB9KSxcbiAgICAgIFtpc0VubGFyZ2VkLCB0aGVtZV1cbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRSYW5nZVBsb3Qgc3R5bGU9e3JhbmdlUGxvdFN0eWxlfSBjbGFzc05hbWU9XCJrZy1yYW5nZS1zbGlkZXJfX3Bsb3RcIj5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8ZGl2IHN0eWxlPXtMT0FESU5HX1NQSU5ORVJfQ09OVEFJTkVSX1NUWUxFfT5cbiAgICAgICAgICAgIDxMb2FkaW5nU3Bpbm5lciBib3JkZXJDb2xvcj1cInRyYW5zcGFyZW50XCIgc2l6ZT17NDB9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFJhbmdlUGxvdFdpdGhUaGVtZVxuICAgICAgICAgICAgbGluZUNoYXJ0PXtsaW5lQ2hhcnR9XG4gICAgICAgICAgICBiaW5zPXtiaW5zfVxuICAgICAgICAgICAgcGxvdFR5cGU9e3Bsb3RUeXBlfVxuICAgICAgICAgICAgaXNFbmxhcmdlZD17aXNFbmxhcmdlZH1cbiAgICAgICAgICAgIHRoZW1lPXt0aGVtZX1cbiAgICAgICAgICAgIHsuLi5vdGhlclByb3BzfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1N0eWxlZFJhbmdlUGxvdD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiB3aXRoVGhlbWUoV2l0aFBsb3RMb2FkaW5nKSBhcyBSZWFjdC5GQzxPbWl0PFdpdGhQbG90TG9hZGluZ1Byb3BzLCAndGhlbWUnPj47XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBRix1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsV0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksY0FBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssVUFBQSxHQUFBRixz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
@@ -1,6 +1,7 @@
1
1
  import { ComponentType, ElementType } from 'react';
2
2
  import RangePlotFactory from './range-plot';
3
3
  import RangeSliderSubAnimationPanelFactory from '../common/range-slider-timeline-panel';
4
+ import type { SliderScaleConfig } from '@kepler.gl/utils';
4
5
  import { LineChart, Filter, Bins } from '@kepler.gl/types';
5
6
  import { Datasets } from '@kepler.gl/table';
6
7
  import { ActionHandler, setFilterPlot } from '@kepler.gl/actions';
@@ -34,6 +35,7 @@ interface RangeSliderProps {
34
35
  filter?: Filter;
35
36
  datasets?: Datasets;
36
37
  invertTrendColor?: boolean;
38
+ scaleConfig?: SliderScaleConfig | null;
37
39
  }
38
40
  declare function RangeSliderFactory(RangePlot: ReturnType<typeof RangePlotFactory>, RangeSliderSubAnimationPanel: ReturnType<typeof RangeSliderSubAnimationPanelFactory>): ComponentType<RangeSliderProps>;
39
41
  declare namespace RangeSliderFactory {
@@ -82,33 +82,91 @@ function RangeSliderFactory(RangePlot, RangeSliderSubAnimationPanel) {
82
82
  (0, _defineProperty2["default"])(_this, "filterValueSelector", (0, _reselect.createSelector)(_this.value0Selector, _this.value1Selector, function (value0, value1) {
83
83
  return [value0, value1];
84
84
  }));
85
- (0, _defineProperty2["default"])(_this, "_roundValToStep", function (val) {
85
+ (0, _defineProperty2["default"])(_this, "_isTimeFilter", function () {
86
+ return typeof _this.props.timeFormat === 'string';
87
+ });
88
+ (0, _defineProperty2["default"])(_this, "_getDisplayRangeInfo", function () {
86
89
  var _this$props = _this.props,
87
90
  range = _this$props.range,
88
- step = _this$props.step;
91
+ bins = _this$props.bins,
92
+ isRanged = _this$props.isRanged;
93
+ if (!range) {
94
+ return {
95
+ displayRange: range,
96
+ binStep: 0
97
+ };
98
+ }
99
+ if (!bins || !isRanged) {
100
+ return {
101
+ displayRange: range,
102
+ binStep: 0
103
+ };
104
+ }
105
+ var groupKeys = Object.keys(bins).filter(function (k) {
106
+ var _bins$k;
107
+ return ((_bins$k = bins[k]) === null || _bins$k === void 0 ? void 0 : _bins$k.length) > 0;
108
+ });
109
+ if (groupKeys.length === 0) {
110
+ return {
111
+ displayRange: range,
112
+ binStep: 0
113
+ };
114
+ }
115
+ var group = bins[groupKeys[0]];
116
+ var idx = group.length > 1 ? 1 : 0;
117
+ var binStep = group[idx].x1 - group[idx].x0;
118
+ if (binStep <= 0) {
119
+ return {
120
+ displayRange: range,
121
+ binStep: 0
122
+ };
123
+ }
124
+ if (_this._isTimeFilter()) {
125
+ var _displayRange = [range[0] - binStep, range[1] + binStep];
126
+ return {
127
+ displayRange: _displayRange,
128
+ binStep: binStep
129
+ };
130
+ }
131
+
132
+ // Non-time range filters: pad by half a bin so edge bars aren't clipped
133
+ var pad = binStep / 2;
134
+ var displayRange = [range[0] - pad, range[1] + pad];
135
+ return {
136
+ displayRange: displayRange,
137
+ binStep: pad
138
+ };
139
+ });
140
+ (0, _defineProperty2["default"])(_this, "_getDisplayRange", function () {
141
+ return _this._getDisplayRangeInfo().displayRange;
142
+ });
143
+ (0, _defineProperty2["default"])(_this, "_roundValToStep", function (val) {
144
+ var _this$props2 = _this.props,
145
+ range = _this$props2.range,
146
+ step = _this$props2.step;
89
147
  if (!range || !step) return;
90
148
  return (0, _utils.roundValToStep)(range[0], step, val);
91
149
  });
92
150
  (0, _defineProperty2["default"])(_this, "_setRangeVal1", function (val) {
93
- var _this$props2 = _this.props,
94
- value0 = _this$props2.value0,
95
- range = _this$props2.range,
96
- _this$props2$onChange = _this$props2.onChange,
97
- onChange = _this$props2$onChange === void 0 ? noop : _this$props2$onChange;
98
- if (!range) return;
151
+ var _this$props3 = _this.props,
152
+ value0 = _this$props3.value0,
153
+ _this$props3$onChange = _this$props3.onChange,
154
+ onChange = _this$props3$onChange === void 0 ? noop : _this$props3$onChange;
155
+ var dr = _this._getDisplayRange();
156
+ if (!dr) return;
99
157
  var val1 = Number(val);
100
- onChange([value0, (0, _utils.clamp)([value0, range[1]], _this._roundValToStep(val1))]);
158
+ onChange([value0, (0, _utils.clamp)([value0, dr[1]], _this._roundValToStep(val1))]);
101
159
  return true;
102
160
  });
103
161
  (0, _defineProperty2["default"])(_this, "_setRangeVal0", function (val) {
104
- var _this$props3 = _this.props,
105
- value1 = _this$props3.value1,
106
- range = _this$props3.range,
107
- _this$props3$onChange = _this$props3.onChange,
108
- onChange = _this$props3$onChange === void 0 ? noop : _this$props3$onChange;
109
- if (!range) return;
162
+ var _this$props4 = _this.props,
163
+ value1 = _this$props4.value1,
164
+ _this$props4$onChange = _this$props4.onChange,
165
+ onChange = _this$props4$onChange === void 0 ? noop : _this$props4$onChange;
166
+ var dr = _this._getDisplayRange();
167
+ if (!dr) return;
110
168
  var val0 = Number(val);
111
- onChange([(0, _utils.clamp)([range[0], value1], _this._roundValToStep(val0)), value1]);
169
+ onChange([(0, _utils.clamp)([dr[0], value1], _this._roundValToStep(val0)), value1]);
112
170
  return true;
113
171
  });
114
172
  (0, _defineProperty2["default"])(_this, "_resize", function () {
@@ -178,30 +236,36 @@ function RangeSliderFactory(RangePlot, RangeSliderSubAnimationPanel) {
178
236
  }, {
179
237
  key: "render",
180
238
  value: function render() {
181
- var _this$props4 = this.props,
182
- isRanged = _this$props4.isRanged,
183
- showInput = _this$props4.showInput,
184
- bins = _this$props4.bins,
185
- lineChart = _this$props4.lineChart,
186
- plotType = _this$props4.plotType,
187
- invertTrendColor = _this$props4.invertTrendColor,
188
- range = _this$props4.range,
189
- _this$props4$onChange = _this$props4.onChange,
190
- onChange = _this$props4$onChange === void 0 ? noop : _this$props4$onChange,
191
- sliderHandleWidth = _this$props4.sliderHandleWidth,
192
- step = _this$props4.step,
193
- timezone = _this$props4.timezone,
194
- timeFormat = _this$props4.timeFormat,
195
- playbackControlWidth = _this$props4.playbackControlWidth,
196
- setFilterPlot = _this$props4.setFilterPlot,
197
- animationWindow = _this$props4.animationWindow,
198
- subAnimations = _this$props4.subAnimations,
199
- filter = _this$props4.filter,
200
- datasets = _this$props4.datasets;
239
+ var _this$props5 = this.props,
240
+ isRanged = _this$props5.isRanged,
241
+ showInput = _this$props5.showInput,
242
+ bins = _this$props5.bins,
243
+ lineChart = _this$props5.lineChart,
244
+ plotType = _this$props5.plotType,
245
+ invertTrendColor = _this$props5.invertTrendColor,
246
+ range = _this$props5.range,
247
+ _this$props5$onChange = _this$props5.onChange,
248
+ onChange = _this$props5$onChange === void 0 ? noop : _this$props5$onChange,
249
+ sliderHandleWidth = _this$props5.sliderHandleWidth,
250
+ step = _this$props5.step,
251
+ timezone = _this$props5.timezone,
252
+ timeFormat = _this$props5.timeFormat,
253
+ playbackControlWidth = _this$props5.playbackControlWidth,
254
+ setFilterPlot = _this$props5.setFilterPlot,
255
+ animationWindow = _this$props5.animationWindow,
256
+ subAnimations = _this$props5.subAnimations,
257
+ filter = _this$props5.filter,
258
+ datasets = _this$props5.datasets,
259
+ scaleConfig = _this$props5.scaleConfig;
201
260
  var width = this.state.width;
202
261
  var plotWidth = Math.max(width - Number(sliderHandleWidth), 0);
203
262
  var hasPlot = plotType === null || plotType === void 0 ? void 0 : plotType.type;
204
- var value = this.props.plotValue || this.filterValueSelector(this.props);
263
+ var _this$_getDisplayRang = this._getDisplayRangeInfo(),
264
+ displayRange = _this$_getDisplayRang.displayRange;
265
+ var rawValue = this.props.plotValue || this.filterValueSelector(this.props);
266
+ var value = displayRange && Array.isArray(rawValue) ? rawValue.map(function (v) {
267
+ return (0, _utils.clamp)([displayRange[0], displayRange[1]], v);
268
+ }) : rawValue;
205
269
  var scaledValue = subAnimations !== null && subAnimations !== void 0 && subAnimations.length && range ? (0, _utils.scaleSourceDomainToDestination)(value, range) : [0, 0];
206
270
  var commonPadding = "".concat(Number(sliderHandleWidth) / 2, "px");
207
271
  return /*#__PURE__*/_react["default"].createElement("div", {
@@ -224,7 +288,7 @@ function RangeSliderFactory(RangePlot, RangeSliderSubAnimationPanel) {
224
288
  animationWindow: animationWindow,
225
289
  filter: filter,
226
290
  datasets: datasets,
227
- range: range,
291
+ range: displayRange || range,
228
292
  value: value,
229
293
  width: plotWidth,
230
294
  isRanged: isRanged,
@@ -251,13 +315,13 @@ function RangeSliderFactory(RangePlot, RangeSliderSubAnimationPanel) {
251
315
  }, /*#__PURE__*/_react["default"].createElement(this.props.xAxis, {
252
316
  width: plotWidth,
253
317
  timezone: timezone,
254
- domain: range,
318
+ domain: displayRange,
255
319
  isEnlarged: this.props.isEnlarged
256
320
  })) : null, /*#__PURE__*/_react["default"].createElement(_slider["default"], {
257
321
  marks: this.props.marks,
258
322
  isRanged: isRanged,
259
- minValue: range[0],
260
- maxValue: range[1],
323
+ minValue: (displayRange || range)[0],
324
+ maxValue: (displayRange || range)[1],
261
325
  value0: this.props.value0,
262
326
  value1: this.props.value1,
263
327
  step: step,
@@ -267,7 +331,8 @@ function RangeSliderFactory(RangePlot, RangeSliderSubAnimationPanel) {
267
331
  onSliderBarChange: function onSliderBarChange(val0, val1) {
268
332
  onChange([val0, val1]);
269
333
  },
270
- enableBarDrag: true
334
+ enableBarDrag: true,
335
+ scaleConfig: scaleConfig
271
336
  }), !isRanged && showInput ? this._renderInput('value1') : null), isRanged && showInput ? /*#__PURE__*/_react["default"].createElement(RangeInputWrapper, {
272
337
  className: "range-slider__input-group"
273
338
  }, this._renderInput('value0'), this._renderInput('value1')) : null));
@@ -306,4 +371,4 @@ function RangeSliderFactory(RangePlot, RangeSliderSubAnimationPanel) {
306
371
  (0, _reactLifecyclesCompat.polyfill)(RangeSlider);
307
372
  return RangeSlider;
308
373
  }
309
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RMaWZlY3ljbGVzQ29tcGF0IiwiX3Jlc2VsZWN0IiwiX3N0eWxlZENvbXBvbmVudHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JhbmdlUGxvdCIsIl9zbGlkZXIiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfcmFuZ2VTbGlkZXJUaW1lbGluZVBhbmVsIiwiX3V0aWxzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIm5vb3AiLCJTbGlkZXJJbnB1dCIsInN0eWxlZCIsIklucHV0IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwic2xpZGVySW5wdXRXaWR0aCIsIiRmbHVzaCIsIiRpbnB1dFNpemUiLCJzbGlkZXJJbnB1dEZvbnRTaXplIiwic2xpZGVySW5wdXRQYWRkaW5nIiwiU2xpZGVyV3JhcHBlciIsImRpdiIsIiRpc1JhbmdlZCIsIiRzaG93SW5wdXQiLCJSYW5nZUlucHV0V3JhcHBlciIsIlJBTkdFX1NMSURFUl9USU1FTElORV9QQU5FTF9TVFlMRSIsIm1hcmdpbkxlZnQiLCJSYW5nZVNsaWRlckZhY3RvcnkiLCJkZXBzIiwiUmFuZ2VQbG90RmFjdG9yeSIsIlJhbmdlU2xpZGVyU3ViQW5pbWF0aW9uUGFuZWxGYWN0b3J5IiwiUmFuZ2VQbG90IiwiUmFuZ2VTbGlkZXJTdWJBbmltYXRpb25QYW5lbCIsIlJhbmdlU2xpZGVyIiwiX0NvbXBvbmVudCIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY29uY2F0IiwidmFsdWUwIiwidmFsdWUxIiwicHJldlZhbHVlMCIsInByZXZWYWx1ZTEiLCJ3aWR0aCIsImVsZW1lbnQiLCJzbGlkZXJDb250YWluZXIiLCJfcmVzaXplIiwiY3JlYXRlUmVmIiwiY3JlYXRlU2VsZWN0b3IiLCJ2YWx1ZTBTZWxlY3RvciIsInZhbHVlMVNlbGVjdG9yIiwidmFsIiwiX3RoaXMkcHJvcHMiLCJyYW5nZSIsInN0ZXAiLCJyb3VuZFZhbFRvU3RlcCIsIl90aGlzJHByb3BzMiIsIl90aGlzJHByb3BzMiRvbkNoYW5nZSIsIm9uQ2hhbmdlIiwidmFsMSIsIk51bWJlciIsImNsYW1wIiwiX3JvdW5kVmFsVG9TdGVwIiwiX3RoaXMkcHJvcHMzIiwiX3RoaXMkcHJvcHMzJG9uQ2hhbmdlIiwidmFsMCIsIm9mZnNldFdpZHRoIiwic3RhdGUiLCJzZXRTdGF0ZSIsImtleSIsInRhcmdldCIsInZhbHVlIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJjb21wb25lbnREaWRNb3VudCIsIkVsZW1lbnQiLCJvYnNlcnZlRGltZW5zaW9ucyIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwidW5vYnNlcnZlRGltZW5zaW9ucyIsIl9yZW5kZXJJbnB1dCIsIl90aGlzMiIsInNldFJhbmdlIiwiX3NldFJhbmdlVmFsMCIsIl9zZXRSYW5nZVZhbDEiLCJyZWYiLCJpbnB1dFZhbHVlMCIsImlucHV0VmFsdWUxIiwidXBkYXRlIiwiX29uQ2hhbmdlSW5wdXQiLCJiaW5kIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInR5cGUiLCJpZCIsIm9uS2V5UHJlc3MiLCJjdXJyZW50IiwiYmx1ciIsIm9uQmx1ciIsImlucHV0U2l6ZSIsInNlY29uZGFyeSIsImlucHV0VGhlbWUiLCJyZW5kZXIiLCJfdGhpcyRwcm9wczQiLCJpc1JhbmdlZCIsInNob3dJbnB1dCIsImJpbnMiLCJsaW5lQ2hhcnQiLCJwbG90VHlwZSIsImludmVydFRyZW5kQ29sb3IiLCJfdGhpcyRwcm9wczQkb25DaGFuZ2UiLCJzbGlkZXJIYW5kbGVXaWR0aCIsInRpbWV6b25lIiwidGltZUZvcm1hdCIsInBsYXliYWNrQ29udHJvbFdpZHRoIiwic2V0RmlsdGVyUGxvdCIsImFuaW1hdGlvbldpbmRvdyIsInN1YkFuaW1hdGlvbnMiLCJkYXRhc2V0cyIsInBsb3RXaWR0aCIsIk1hdGgiLCJtYXgiLCJoYXNQbG90IiwicGxvdFZhbHVlIiwiZmlsdGVyVmFsdWVTZWxlY3RvciIsInNjYWxlZFZhbHVlIiwic2NhbGVTb3VyY2VEb21haW5Ub0Rlc3RpbmF0aW9uIiwiY29tbW9uUGFkZGluZyIsInN0eWxlIiwicGFkZGluZyIsInNldFNsaWRlckNvbnRhaW5lciIsImlzQXJyYXkiLCJldmVyeSIsImlzRmluaXRlIiwiRnJhZ21lbnQiLCJpc0VubGFyZ2VkIiwib25CcnVzaCIsIm1hcmtzIiwicGFkZGluZ0xlZnQiLCJ4QXhpcyIsImhlaWdodCIsImRvbWFpbiIsIm1pblZhbHVlIiwibWF4VmFsdWUiLCJvblNsaWRlcjBDaGFuZ2UiLCJvblNsaWRlcjFDaGFuZ2UiLCJvblNsaWRlckJhckNoYW5nZSIsImVuYWJsZUJhckRyYWciLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJpc05hTiIsIkNvbXBvbmVudCIsInBvbHlmaWxsIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi9yYW5nZS1zbGlkZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgQ29tcG9uZW50VHlwZSwgY3JlYXRlUmVmLCBFbGVtZW50VHlwZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtwb2x5ZmlsbH0gZnJvbSAncmVhY3QtbGlmZWN5Y2xlcy1jb21wYXQnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3Rvcn0gZnJvbSAncmVzZWxlY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgUmFuZ2VQbG90RmFjdG9yeSBmcm9tICcuL3JhbmdlLXBsb3QnO1xuaW1wb3J0IFNsaWRlciBmcm9tICcuL3NsaWRlci9zbGlkZXInO1xuaW1wb3J0IHtJbnB1dH0gZnJvbSAnLi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgUmFuZ2VTbGlkZXJTdWJBbmltYXRpb25QYW5lbEZhY3RvcnkgZnJvbSAnLi4vY29tbW9uL3JhbmdlLXNsaWRlci10aW1lbGluZS1wYW5lbCc7XG5pbXBvcnQge1xuICBvYnNlcnZlRGltZW5zaW9ucyxcbiAgdW5vYnNlcnZlRGltZW5zaW9ucyxcbiAgcm91bmRWYWxUb1N0ZXAsXG4gIGNsYW1wLFxuICBzY2FsZVNvdXJjZURvbWFpblRvRGVzdGluYXRpb25cbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge0xpbmVDaGFydCwgRmlsdGVyLCBCaW5zfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7RGF0YXNldHN9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtBY3Rpb25IYW5kbGVyLCBzZXRGaWx0ZXJQbG90fSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuXG5pbnRlcmZhY2UgU2xpZGVySW5wdXRQcm9wcyB7XG4gICRmbHVzaD86IGJvb2xlYW47XG4gICRpbnB1dFNpemU/OiBzdHJpbmc7XG59XG5jb25zdCBub29wID0gKCkgPT4ge1xuICByZXR1cm47XG59O1xuY29uc3QgU2xpZGVySW5wdXQgPSBzdHlsZWQoSW5wdXQpPFNsaWRlcklucHV0UHJvcHM+YFxuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zbGlkZXJJbnB1dFdpZHRofXB4O1xuICBtYXJnaW4tbGVmdDogJHtwcm9wcyA9PiAocHJvcHMuJGZsdXNoID8gMCA6IHByb3BzLiRpbnB1dFNpemUgPT09ICd0aW55JyA/IDEyIDogMTgpfXB4O1xuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2xpZGVySW5wdXRGb250U2l6ZX07IC8vIDEwcHggLy8gMTJweDtcbiAgcGFkZGluZzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zbGlkZXJJbnB1dFBhZGRpbmd9OyAvLyA0cHggNnB4OyAvLyA2cHggMTJweDtcbmA7XG5cbmludGVyZmFjZSBTbGlkZXJXcmFwcGVyUHJvcHMge1xuICAkaXNSYW5nZWQ/OiBib29sZWFuO1xuICAkc2hvd0lucHV0PzogYm9vbGVhbjtcbn1cblxuY29uc3QgU2xpZGVyV3JhcHBlciA9IHN0eWxlZC5kaXY8U2xpZGVyV3JhcHBlclByb3BzPmBcbiAgZGlzcGxheTogZmxleDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAoIXByb3BzLiRpc1JhbmdlZCAmJiBwcm9wcy4kc2hvd0lucHV0ID8gJ2NlbnRlcicgOiAnZmxleC1zdGFydCcpfTtcbmA7XG5cbmNvbnN0IFJhbmdlSW5wdXRXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLXRvcDogMTJweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuYDtcblxuaW50ZXJmYWNlIFJhbmdlU2xpZGVyUHJvcHMge1xuICByYW5nZT86IG51bWJlcltdO1xuICB2YWx1ZTA6IG51bWJlcjtcbiAgdmFsdWUxOiBudW1iZXI7XG4gIG9uQ2hhbmdlPzogKHZhbDogbnVtYmVyW10sIGU/OiBFdmVudCB8IG51bGwpID0+IHZvaWQ7IC8vIFRPRE9cbiAgc2V0RmlsdGVyUGxvdD86IEFjdGlvbkhhbmRsZXI8dHlwZW9mIHNldEZpbHRlclBsb3Q+O1xuICBiaW5zPzogQmlucztcbiAgaXNSYW5nZWQ/OiBib29sZWFuO1xuICBpc0VubGFyZ2VkPzogYm9vbGVhbjtcbiAgc2hvd0lucHV0PzogYm9vbGVhbjtcbiAgaW5wdXRUaGVtZT86IHN0cmluZztcbiAgaW5wdXRTaXplPzogc3RyaW5nO1xuICBzdGVwPzogbnVtYmVyO1xuICBzbGlkZXJIYW5kbGVXaWR0aD86IG51bWJlcjtcbiAgeEF4aXM/OiBFbGVtZW50VHlwZTtcbiAgc3ViQW5pbWF0aW9ucz86IGFueVtdO1xuICB0aW1lbGluZUxhYmVsPzogc3RyaW5nO1xuXG4gIHRpbWV6b25lPzogc3RyaW5nIHwgbnVsbDtcbiAgdGltZUZvcm1hdD86IHN0cmluZztcbiAgcGxheWJhY2tDb250cm9sV2lkdGg/OiBudW1iZXI7XG4gIGxpbmVDaGFydD86IExpbmVDaGFydDtcbiAgbWFya3M/OiBudW1iZXJbXTtcbiAgcGxvdFR5cGU/OiB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICB9O1xuICBwbG90VmFsdWU/OiBudW1iZXJbXTtcblxuICBhbmltYXRpb25XaW5kb3c/OiBzdHJpbmc7XG4gIGZpbHRlcj86IEZpbHRlcjtcbiAgZGF0YXNldHM/OiBEYXRhc2V0cztcblxuICBpbnZlcnRUcmVuZENvbG9yPzogYm9vbGVhbjtcbn1cblxuY29uc3QgUkFOR0VfU0xJREVSX1RJTUVMSU5FX1BBTkVMX1NUWUxFID0ge21hcmdpbkxlZnQ6ICctMzJweCd9O1xuXG5SYW5nZVNsaWRlckZhY3RvcnkuZGVwcyA9IFtSYW5nZVBsb3RGYWN0b3J5LCBSYW5nZVNsaWRlclN1YkFuaW1hdGlvblBhbmVsRmFjdG9yeV07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJhbmdlU2xpZGVyRmFjdG9yeShcbiAgUmFuZ2VQbG90OiBSZXR1cm5UeXBlPHR5cGVvZiBSYW5nZVBsb3RGYWN0b3J5PixcbiAgUmFuZ2VTbGlkZXJTdWJBbmltYXRpb25QYW5lbDogUmV0dXJuVHlwZTx0eXBlb2YgUmFuZ2VTbGlkZXJTdWJBbmltYXRpb25QYW5lbEZhY3Rvcnk+XG4pOiBDb21wb25lbnRUeXBlPFJhbmdlU2xpZGVyUHJvcHM+IHtcbiAgY2xhc3MgUmFuZ2VTbGlkZXIgZXh0ZW5kcyBDb21wb25lbnQ8UmFuZ2VTbGlkZXJQcm9wcz4ge1xuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICBpc0VubGFyZ2VkOiBmYWxzZSxcbiAgICAgIGlzUmFuZ2VkOiB0cnVlLFxuICAgICAgc2hvd0lucHV0OiB0cnVlLFxuICAgICAgc2xpZGVySGFuZGxlV2lkdGg6IDEyLFxuICAgICAgaW5wdXRUaGVtZTogJycsXG4gICAgICBpbnB1dFNpemU6ICdzbWFsbCcsXG4gICAgICBvbkNoYW5nZTogbm9vcFxuICAgIH07XG5cbiAgICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKHByb3BzLCBzdGF0ZSkge1xuICAgICAgbGV0IHVwZGF0ZToge3ZhbHVlMT86IGFueTsgcHJldlZhbHVlMT86IGFueTsgdmFsdWUwPzogYW55OyBwcmV2VmFsdWUwPzogYW55fSB8IG51bGwgPSBudWxsO1xuICAgICAgY29uc3Qge3ZhbHVlMCwgdmFsdWUxfSA9IHByb3BzO1xuICAgICAgaWYgKHByb3BzLnZhbHVlMCAhPT0gc3RhdGUucHJldlZhbHVlMCAmJiAhaXNOYU4odmFsdWUwKSkge1xuICAgICAgICB1cGRhdGUgPSB7Li4uKHVwZGF0ZSB8fCB7fSksIHZhbHVlMCwgcHJldlZhbHVlMDogdmFsdWUwfTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy52YWx1ZTEgIT09IHN0YXRlLnByZXZWYWx1ZTEgJiYgIWlzTmFOKHZhbHVlMSkpIHtcbiAgICAgICAgdXBkYXRlID0gey4uLih1cGRhdGUgfHwge30pLCB2YWx1ZTEsIHByZXZWYWx1ZTE6IHZhbHVlMX07XG4gICAgICB9XG4gICAgICByZXR1cm4gdXBkYXRlO1xuICAgIH1cblxuICAgIHN0YXRlID0ge1xuICAgICAgdmFsdWUwOiAwLFxuICAgICAgdmFsdWUxOiAxLFxuICAgICAgcHJldlZhbHVlMDogMCxcbiAgICAgIHByZXZWYWx1ZTE6IDEsXG4gICAgICB3aWR0aDogMjg4XG4gICAgfTtcblxuICAgIHNsaWRlckNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgaWYgKHRoaXMuc2xpZGVyQ29udGFpbmVyIGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgICAgICBvYnNlcnZlRGltZW5zaW9ucyh0aGlzLnNsaWRlckNvbnRhaW5lciwgdGhpcy5fcmVzaXplLCAxMDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgaWYgKHRoaXMuc2xpZGVyQ29udGFpbmVyIGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgICAgICB1bm9ic2VydmVEaW1lbnNpb25zKHRoaXMuc2xpZGVyQ29udGFpbmVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRTbGlkZXJDb250YWluZXI6IFJlYWN0LkxlZ2FjeVJlZjxIVE1MRGl2RWxlbWVudD4gPSBlbGVtZW50ID0+IHtcbiAgICAgIHRoaXMuc2xpZGVyQ29udGFpbmVyID0gZWxlbWVudDtcbiAgICAgIHRoaXMuX3Jlc2l6ZSgpO1xuICAgIH07XG4gICAgaW5wdXRWYWx1ZTAgPSBjcmVhdGVSZWY8SFRNTElucHV0RWxlbWVudD4oKTtcbiAgICBpbnB1dFZhbHVlMSA9IGNyZWF0ZVJlZjxIVE1MSW5wdXRFbGVtZW50PigpO1xuICAgIHZhbHVlMFNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMudmFsdWUwO1xuICAgIHZhbHVlMVNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMudmFsdWUxO1xuICAgIGZpbHRlclZhbHVlU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMudmFsdWUwU2VsZWN0b3IsXG4gICAgICB0aGlzLnZhbHVlMVNlbGVjdG9yLFxuICAgICAgKHZhbHVlMCwgdmFsdWUxKSA9PiBbdmFsdWUwLCB2YWx1ZTFdXG4gICAgKTtcblxuICAgIF9yb3VuZFZhbFRvU3RlcCA9IHZhbCA9PiB7XG4gICAgICBjb25zdCB7cmFuZ2UsIHN0ZXB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGlmICghcmFuZ2UgfHwgIXN0ZXApIHJldHVybjtcbiAgICAgIHJldHVybiByb3VuZFZhbFRvU3RlcChyYW5nZVswXSwgc3RlcCwgdmFsKTtcbiAgICB9O1xuXG4gICAgX3NldFJhbmdlVmFsMSA9IHZhbCA9PiB7XG4gICAgICBjb25zdCB7dmFsdWUwLCByYW5nZSwgb25DaGFuZ2UgPSBub29wfSA9IHRoaXMucHJvcHM7XG4gICAgICBpZiAoIXJhbmdlKSByZXR1cm47XG4gICAgICBjb25zdCB2YWwxID0gTnVtYmVyKHZhbCk7XG4gICAgICBvbkNoYW5nZShbdmFsdWUwLCBjbGFtcChbdmFsdWUwLCByYW5nZVsxXV0sIHRoaXMuX3JvdW5kVmFsVG9TdGVwKHZhbDEpKV0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcblxuICAgIF9zZXRSYW5nZVZhbDAgPSB2YWwgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlMSwgcmFuZ2UsIG9uQ2hhbmdlID0gbm9vcH0gPSB0aGlzLnByb3BzO1xuICAgICAgaWYgKCFyYW5nZSkgcmV0dXJuO1xuICAgICAgY29uc3QgdmFsMCA9IE51bWJlcih2YWwpO1xuICAgICAgb25DaGFuZ2UoW2NsYW1wKFtyYW5nZVswXSwgdmFsdWUxXSwgdGhpcy5fcm91bmRWYWxUb1N0ZXAodmFsMCkpLCB2YWx1ZTFdKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG5cbiAgICBfcmVzaXplID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2xpZGVyQ29udGFpbmVyKSB7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5zbGlkZXJDb250YWluZXIub2Zmc2V0V2lkdGg7XG4gICAgICAgIGlmICh3aWR0aCAhPT0gdGhpcy5zdGF0ZS53aWR0aCkge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe3dpZHRofSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX29uQ2hhbmdlSW5wdXQgPSAoa2V5LCBlKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtba2V5XTogZS50YXJnZXQudmFsdWV9KTtcbiAgICB9O1xuXG4gICAgX3JlbmRlcklucHV0KGtleSkge1xuICAgICAgY29uc3Qgc2V0UmFuZ2UgPSBrZXkgPT09ICd2YWx1ZTAnID8gdGhpcy5fc2V0UmFuZ2VWYWwwIDogdGhpcy5fc2V0UmFuZ2VWYWwxO1xuICAgICAgY29uc3QgcmVmID0ga2V5ID09PSAndmFsdWUwJyA/IHRoaXMuaW5wdXRWYWx1ZTAgOiB0aGlzLmlucHV0VmFsdWUxO1xuICAgICAgY29uc3QgdXBkYXRlID0gZSA9PiB7XG4gICAgICAgIGlmICghc2V0UmFuZ2UoZS50YXJnZXQudmFsdWUpKSB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7W2tleV06IHRoaXMuc3RhdGVba2V5XX0pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvbkNoYW5nZSA9IHRoaXMuX29uQ2hhbmdlSW5wdXQuYmluZCh0aGlzLCBrZXkpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U2xpZGVySW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJrZy1yYW5nZS1zbGlkZXJfX2lucHV0XCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICBpZD17YHNsaWRlci1pbnB1dC0ke2tleX1gfVxuICAgICAgICAgIGtleT17a2V5fVxuICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlW2tleV19XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgIG9uS2V5UHJlc3M9e2UgPT4ge1xuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZShlKTtcbiAgICAgICAgICAgICAgKHJlZi5jdXJyZW50IGFzIGFueSkuYmx1cigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25CbHVyPXt1cGRhdGV9XG4gICAgICAgICAgJGZsdXNoPXtrZXkgPT09ICd2YWx1ZTAnfVxuICAgICAgICAgICRpbnB1dFNpemU9e3RoaXMucHJvcHMuaW5wdXRTaXplfVxuICAgICAgICAgIHNlY29uZGFyeT17dGhpcy5wcm9wcy5pbnB1dFRoZW1lID09PSAnc2Vjb25kYXJ5J31cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGlzUmFuZ2VkLFxuICAgICAgICBzaG93SW5wdXQsXG4gICAgICAgIGJpbnMsXG4gICAgICAgIGxpbmVDaGFydCxcbiAgICAgICAgcGxvdFR5cGUsXG4gICAgICAgIGludmVydFRyZW5kQ29sb3IsXG4gICAgICAgIHJhbmdlLFxuICAgICAgICBvbkNoYW5nZSA9IG5vb3AsXG4gICAgICAgIHNsaWRlckhhbmRsZVdpZHRoLFxuICAgICAgICBzdGVwLFxuICAgICAgICB0aW1lem9uZSxcbiAgICAgICAgdGltZUZvcm1hdCxcbiAgICAgICAgcGxheWJhY2tDb250cm9sV2lkdGgsXG4gICAgICAgIHNldEZpbHRlclBsb3QsXG4gICAgICAgIGFuaW1hdGlvbldpbmRvdyxcbiAgICAgICAgc3ViQW5pbWF0aW9uczogc3ViQW5pbWF0aW9ucyxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBkYXRhc2V0c1xuICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIGNvbnN0IHt3aWR0aH0gPSB0aGlzLnN0YXRlO1xuICAgICAgY29uc3QgcGxvdFdpZHRoID0gTWF0aC5tYXgod2lkdGggLSBOdW1iZXIoc2xpZGVySGFuZGxlV2lkdGgpLCAwKTtcbiAgICAgIGNvbnN0IGhhc1Bsb3QgPSBwbG90VHlwZT8udHlwZTtcblxuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnByb3BzLnBsb3RWYWx1ZSB8fCB0aGlzLmZpbHRlclZhbHVlU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBzY2FsZWRWYWx1ZSA9XG4gICAgICAgIHN1YkFuaW1hdGlvbnM/Lmxlbmd0aCAmJiByYW5nZVxuICAgICAgICAgID8gc2NhbGVTb3VyY2VEb21haW5Ub0Rlc3RpbmF0aW9uKHZhbHVlIGFzIFtudW1iZXIsIG51bWJlcl0sIHJhbmdlIGFzIFtudW1iZXIsIG51bWJlcl0pXG4gICAgICAgICAgOiBbMCwgMF07XG4gICAgICBjb25zdCBjb21tb25QYWRkaW5nID0gYCR7TnVtYmVyKHNsaWRlckhhbmRsZVdpZHRoKSAvIDJ9cHhgO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cImtnLXJhbmdlLXNsaWRlclwiXG4gICAgICAgICAgc3R5bGU9e3t3aWR0aDogJzEwMCUnLCBwYWRkaW5nOiBgMCAke2NvbW1vblBhZGRpbmd9YH19XG4gICAgICAgICAgcmVmPXt0aGlzLnNldFNsaWRlckNvbnRhaW5lcn1cbiAgICAgICAgPlxuICAgICAgICAgIHtBcnJheS5pc0FycmF5KHJhbmdlKSAmJiByYW5nZS5ldmVyeShOdW1iZXIuaXNGaW5pdGUpICYmIChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHtoYXNQbG90ID8gKFxuICAgICAgICAgICAgICAgIDxSYW5nZVBsb3RcbiAgICAgICAgICAgICAgICAgIGJpbnM9e2JpbnN9XG4gICAgICAgICAgICAgICAgICBsaW5lQ2hhcnQ9e2xpbmVDaGFydH1cbiAgICAgICAgICAgICAgICAgIHBsb3RUeXBlPXtwbG90VHlwZX1cbiAgICAgICAgICAgICAgICAgIGludmVydFRyZW5kQ29sb3I9e2ludmVydFRyZW5kQ29sb3J9XG4gICAgICAgICAgICAgICAgICBpc0VubGFyZ2VkPXt0aGlzLnByb3BzLmlzRW5sYXJnZWR9XG4gICAgICAgICAgICAgICAgICBvbkJydXNoPXsodmFsMCwgdmFsMSkgPT4gb25DaGFuZ2UoW3ZhbDAsIHZhbDFdKX1cbiAgICAgICAgICAgICAgICAgIG1hcmtzPXt0aGlzLnByb3BzLm1hcmtzfVxuICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uV2luZG93PXthbmltYXRpb25XaW5kb3d9XG4gICAgICAgICAgICAgICAgICBmaWx0ZXI9e2ZpbHRlcn1cbiAgICAgICAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgICAgICAgIHJhbmdlPXtyYW5nZX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPXtwbG90V2lkdGh9XG4gICAgICAgICAgICAgICAgICBpc1JhbmdlZD17aXNSYW5nZWR9XG4gICAgICAgICAgICAgICAgICBzdGVwPXtzdGVwfVxuICAgICAgICAgICAgICAgICAgdGltZXpvbmU9e3RpbWV6b25lfVxuICAgICAgICAgICAgICAgICAgdGltZUZvcm1hdD17dGltZUZvcm1hdH1cbiAgICAgICAgICAgICAgICAgIHBsYXliYWNrQ29udHJvbFdpZHRoPXtwbGF5YmFja0NvbnRyb2xXaWR0aH1cbiAgICAgICAgICAgICAgICAgIHNldEZpbHRlclBsb3Q9e3NldEZpbHRlclBsb3R9XG4gICAgICAgICAgICAgICAgICBzdHlsZT17e3BhZGRpbmdMZWZ0OiBjb21tb25QYWRkaW5nfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAge3N1YkFuaW1hdGlvbnM/Lmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8UmFuZ2VTbGlkZXJTdWJBbmltYXRpb25QYW5lbFxuICAgICAgICAgICAgICAgICAgc3ViQW5pbWF0aW9ucz17c3ViQW5pbWF0aW9uc31cbiAgICAgICAgICAgICAgICAgIHNjYWxlZFZhbHVlPXtzY2FsZWRWYWx1ZX1cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXtSQU5HRV9TTElERVJfVElNRUxJTkVfUEFORUxfU1RZTEV9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTbGlkZXJXcmFwcGVyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwia2ctcmFuZ2Utc2xpZGVyX19zbGlkZXJcIlxuICAgICAgICAgICAgICAgICRpc1JhbmdlZD17aXNSYW5nZWR9XG4gICAgICAgICAgICAgICAgJHNob3dJbnB1dD17c2hvd0lucHV0fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RoaXMucHJvcHMueEF4aXMgPyAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7aGVpZ2h0OiAnMzBweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgPHRoaXMucHJvcHMueEF4aXNcbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17cGxvdFdpZHRofVxuICAgICAgICAgICAgICAgICAgICAgIHRpbWV6b25lPXt0aW1lem9uZX1cbiAgICAgICAgICAgICAgICAgICAgICBkb21haW49e3JhbmdlfVxuICAgICAgICAgICAgICAgICAgICAgIGlzRW5sYXJnZWQ9e3RoaXMucHJvcHMuaXNFbmxhcmdlZH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDxTbGlkZXJcbiAgICAgICAgICAgICAgICAgIG1hcmtzPXt0aGlzLnByb3BzLm1hcmtzfVxuICAgICAgICAgICAgICAgICAgaXNSYW5nZWQ9e2lzUmFuZ2VkfVxuICAgICAgICAgICAgICAgICAgbWluVmFsdWU9e3JhbmdlWzBdfVxuICAgICAgICAgICAgICAgICAgbWF4VmFsdWU9e3JhbmdlWzFdfVxuICAgICAgICAgICAgICAgICAgdmFsdWUwPXt0aGlzLnByb3BzLnZhbHVlMH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlMT17dGhpcy5wcm9wcy52YWx1ZTF9XG4gICAgICAgICAgICAgICAgICBzdGVwPXtzdGVwfVxuICAgICAgICAgICAgICAgICAgc2xpZGVySGFuZGxlV2lkdGg9e3NsaWRlckhhbmRsZVdpZHRofVxuICAgICAgICAgICAgICAgICAgb25TbGlkZXIwQ2hhbmdlPXt0aGlzLl9zZXRSYW5nZVZhbDB9XG4gICAgICAgICAgICAgICAgICBvblNsaWRlcjFDaGFuZ2U9e3RoaXMuX3NldFJhbmdlVmFsMX1cbiAgICAgICAgICAgICAgICAgIG9uU2xpZGVyQmFyQ2hhbmdlPXsodmFsMCwgdmFsMSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZShbdmFsMCwgdmFsMV0pO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIGVuYWJsZUJhckRyYWdcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIHshaXNSYW5nZWQgJiYgc2hvd0lucHV0ID8gdGhpcy5fcmVuZGVySW5wdXQoJ3ZhbHVlMScpIDogbnVsbH1cbiAgICAgICAgICAgICAgPC9TbGlkZXJXcmFwcGVyPlxuICAgICAgICAgICAgICB7aXNSYW5nZWQgJiYgc2hvd0lucHV0ID8gKFxuICAgICAgICAgICAgICAgIDxSYW5nZUlucHV0V3JhcHBlciBjbGFzc05hbWU9XCJyYW5nZS1zbGlkZXJfX2lucHV0LWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICB7dGhpcy5fcmVuZGVySW5wdXQoJ3ZhbHVlMCcpfVxuICAgICAgICAgICAgICAgICAge3RoaXMuX3JlbmRlcklucHV0KCd2YWx1ZTEnKX1cbiAgICAgICAgICAgICAgICA8L1JhbmdlSW5wdXRXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwb2x5ZmlsbChSYW5nZVNsaWRlcik7XG5cbiAgcmV0dXJuIFJhbmdlU2xpZGVyO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxzQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsU0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLFVBQUEsR0FBQUQsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFNLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFPLGtCQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSx5QkFBQSxHQUFBSixzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQVMsTUFBQSxHQUFBVCxPQUFBO0FBTTBCLElBQUFVLGVBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFqQjFCO0FBQ0E7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQWYsd0JBQUFlLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEs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LFNBQVMsZ0JBQ3BCL0osTUFBQSxZQUFBaUosYUFBQSxDQUFDckUsaUJBQWlCO1VBQUNzRSxTQUFTLEVBQUM7UUFBMkIsR0FDckQsSUFBSSxDQUFDWixZQUFZLENBQUMsUUFBUSxDQUFDLEVBQzNCLElBQUksQ0FBQ0EsWUFBWSxDQUFDLFFBQVEsQ0FDVixDQUFDLEdBQ2xCLElBQ0osQ0FFRCxDQUFDO01BRVY7SUFBQztNQUFBVixHQUFBO01BQUFFLEtBQUEsRUF4T0QsU0FBTzRFLHdCQUF3QkEsQ0FBQ3pJLEtBQUssRUFBRXlELEtBQUssRUFBRTtRQUM1QyxJQUFJb0IsTUFBK0UsR0FBRyxJQUFJO1FBQzFGLElBQU9oRCxNQUFNLEdBQVk3QixLQUFLLENBQXZCNkIsTUFBTTtVQUFFQyxNQUFNLEdBQUk5QixLQUFLLENBQWY4QixNQUFNO1FBQ3JCLElBQUk5QixLQUFLLENBQUM2QixNQUFNLEtBQUs0QixLQUFLLENBQUMxQixVQUFVLElBQUksQ0FBQzJHLEtBQUssQ0FBQzdHLE1BQU0sQ0FBQyxFQUFFO1VBQ3ZEZ0QsTUFBTSxHQUFBbkcsYUFBQSxDQUFBQSxhQUFBLEtBQVFtRyxNQUFNLElBQUksQ0FBQyxDQUFDO1lBQUdoRCxNQUFNLEVBQU5BLE1BQU07WUFBRUUsVUFBVSxFQUFFRjtVQUFNLEVBQUM7UUFDMUQ7UUFDQSxJQUFJN0IsS0FBSyxDQUFDOEIsTUFBTSxLQUFLMkIsS0FBSyxDQUFDekIsVUFBVSxJQUFJLENBQUMwRyxLQUFLLENBQUM1RyxNQUFNLENBQUMsRUFBRTtVQUN2RCtDLE1BQU0sR0FBQW5HLGFBQUEsQ0FBQUEsYUFBQSxLQUFRbUcsTUFBTSxJQUFJLENBQUMsQ0FBQztZQUFHL0MsTUFBTSxFQUFOQSxNQUFNO1lBQUVFLFVBQVUsRUFBRUY7VUFBTSxFQUFDO1FBQzFEO1FBQ0EsT0FBTytDLE1BQU07TUFDZjtJQUFDO0VBQUEsRUFyQnVCOEQsZ0JBQVM7RUFBQSxJQUFBN0osZ0JBQUEsYUFBN0JzQyxXQUFXLGtCQUNPO0lBQ3BCd0csVUFBVSxFQUFFLEtBQUs7SUFDakIvQixRQUFRLEVBQUUsSUFBSTtJQUNkQyxTQUFTLEVBQUUsSUFBSTtJQUNmTSxpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCVixVQUFVLEVBQUUsRUFBRTtJQUNkRixTQUFTLEVBQUUsT0FBTztJQUNsQnhDLFFBQVEsRUFBRXJEO0VBQ1osQ0FBQztFQTZPSCxJQUFBaUosK0JBQVEsRUFBQ3hILFdBQVcsQ0FBQztFQUVyQixPQUFPQSxXQUFXO0FBQ3BCIiwiaWdub3JlTGlzdCI6W119
374
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RMaWZlY3ljbGVzQ29tcGF0IiwiX3Jlc2VsZWN0IiwiX3N0eWxlZENvbXBvbmVudHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JhbmdlUGxvdCIsIl9zbGlkZXIiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfcmFuZ2VTbGlkZXJUaW1lbGluZVBhbmVsIiwiX3V0aWxzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIm5vb3AiLCJTbGlkZXJJbnB1dCIsInN0eWxlZCIsIklucHV0IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwic2xpZGVySW5wdXRXaWR0aCIsIiRmbHVzaCIsIiRpbnB1dFNpemUiLCJzbGlkZXJJbnB1dEZvbnRTaXplIiwic2xpZGVySW5wdXRQYWRkaW5nIiwiU2xpZGVyV3JhcHBlciIsImRpdiIsIiRpc1JhbmdlZCIsIiRzaG93SW5wdXQiLCJSYW5nZUlucHV0V3JhcHBlciIsIlJBTkdFX1NMSURFUl9USU1FTElORV9QQU5FTF9TVFlMRSIsIm1hcmdpbkxlZnQiLCJSYW5nZVNsaWRlckZhY3RvcnkiLCJkZXBzIiwiUmFuZ2VQbG90RmFjdG9yeSIsIlJhbmdlU2xpZGVyU3ViQW5pbWF0aW9uUGFuZWxGYWN0b3J5IiwiUmFuZ2VQbG90IiwiUmFuZ2VTbGlkZXJTdWJBbmltYXRpb25QYW5lbCIsIlJhbmdlU2xpZGVyIiwiX0NvbXBvbmVudCIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY29uY2F0IiwidmFsdWUwIiwidmFsdWUxIiwicHJldlZhbHVlMCIsInByZXZWYWx1ZTEiLCJ3aWR0aCIsImVsZW1lbnQiLCJzbGlkZXJDb250YWluZXIiLCJfcmVzaXplIiwiY3JlYXRlUmVmIiwiY3JlYXRlU2VsZWN0b3IiLCJ2YWx1ZTBTZWxlY3RvciIsInZhbHVlMVNlbGVjdG9yIiwidGltZUZvcm1hdCIsIl90aGlzJHByb3BzIiwicmFuZ2UiLCJiaW5zIiwiaXNSYW5nZWQiLCJkaXNwbGF5UmFuZ2UiLCJiaW5TdGVwIiwiZ3JvdXBLZXlzIiwiayIsIl9iaW5zJGsiLCJncm91cCIsImlkeCIsIngxIiwieDAiLCJfaXNUaW1lRmlsdGVyIiwicGFkIiwiX2dldERpc3BsYXlSYW5nZUluZm8iLCJ2YWwiLCJfdGhpcyRwcm9wczIiLCJzdGVwIiwicm91bmRWYWxUb1N0ZXAiLCJfdGhpcyRwcm9wczMiLCJfdGhpcyRwcm9wczMkb25DaGFuZ2UiLCJvbkNoYW5nZSIsImRyIiwiX2dldERpc3BsYXlSYW5nZSIsInZhbDEiLCJOdW1iZXIiLCJjbGFtcCIsIl9yb3VuZFZhbFRvU3RlcCIsIl90aGlzJHByb3BzNCIsIl90aGlzJHByb3BzNCRvbkNoYW5nZSIsInZhbDAiLCJvZmZzZXRXaWR0aCIsInN0YXRlIiwic2V0U3RhdGUiLCJrZXkiLCJ0YXJnZXQiLCJ2YWx1ZSIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwiY29tcG9uZW50RGlkTW91bnQiLCJFbGVtZW50Iiwib2JzZXJ2ZURpbWVuc2lvbnMiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInVub2JzZXJ2ZURpbWVuc2lvbnMiLCJfcmVuZGVySW5wdXQiLCJfdGhpczIiLCJzZXRSYW5nZSIsIl9zZXRSYW5nZVZhbDAiLCJfc2V0UmFuZ2VWYWwxIiwicmVmIiwiaW5wdXRWYWx1ZTAiLCJpbnB1dFZhbHVlMSIsInVwZGF0ZSIsIl9vbkNoYW5nZUlucHV0IiwiYmluZCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJ0eXBlIiwiaWQiLCJvbktleVByZXNzIiwiY3VycmVudCIsImJsdXIiLCJvbkJsdXIiLCJpbnB1dFNpemUiLCJzZWNvbmRhcnkiLCJpbnB1dFRoZW1lIiwicmVuZGVyIiwiX3RoaXMkcHJvcHM1Iiwic2hvd0lucHV0IiwibGluZUNoYXJ0IiwicGxvdFR5cGUiLCJpbnZlcnRUcmVuZENvbG9yIiwiX3RoaXMkcHJvcHM1JG9uQ2hhbmdlIiwic2xpZGVySGFuZGxlV2lkdGgiLCJ0aW1lem9uZSIsInBsYXliYWNrQ29udHJvbFdpZHRoIiwic2V0RmlsdGVyUGxvdCIsImFuaW1hdGlvbldpbmRvdyIsInN1YkFuaW1hdGlvbnMiLCJkYXRhc2V0cyIsInNjYWxlQ29uZmlnIiwicGxvdFdpZHRoIiwiTWF0aCIsIm1heCIsImhhc1Bsb3QiLCJfdGhpcyRfZ2V0RGlzcGxheVJhbmciLCJyYXdWYWx1ZSIsInBsb3RWYWx1ZSIsImZpbHRlclZhbHVlU2VsZWN0b3IiLCJpc0FycmF5IiwibWFwIiwidiIsInNjYWxlZFZhbHVlIiwic2NhbGVTb3VyY2VEb21haW5Ub0Rlc3RpbmF0aW9uIiwiY29tbW9uUGFkZGluZyIsInN0eWxlIiwicGFkZGluZyIsInNldFNsaWRlckNvbnRhaW5lciIsImV2ZXJ5IiwiaXNGaW5pdGUiLCJGcmFnbWVudCIsImlzRW5sYXJnZWQiLCJvbkJydXNoIiwibWFya3MiLCJwYWRkaW5nTGVmdCIsInhBeGlzIiwiaGVpZ2h0IiwiZG9tYWluIiwibWluVmFsdWUiLCJtYXhWYWx1ZSIsIm9uU2xpZGVyMENoYW5nZSIsIm9uU2xpZGVyMUNoYW5nZSIsIm9uU2xpZGVyQmFyQ2hhbmdlIiwiZW5hYmxlQmFyRHJhZyIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsImlzTmFOIiwiQ29tcG9uZW50IiwicG9seWZpbGwiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL3JhbmdlLXNsaWRlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBDb21wb25lbnRUeXBlLCBjcmVhdGVSZWYsIEVsZW1lbnRUeXBlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3BvbHlmaWxsfSBmcm9tICdyZWFjdC1saWZlY3ljbGVzLWNvbXBhdCc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBSYW5nZVBsb3RGYWN0b3J5IGZyb20gJy4vcmFuZ2UtcGxvdCc7XG5pbXBvcnQgU2xpZGVyIGZyb20gJy4vc2xpZGVyL3NsaWRlcic7XG5pbXBvcnQge0lucHV0fSBmcm9tICcuL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBSYW5nZVNsaWRlclN1YkFuaW1hdGlvblBhbmVsRmFjdG9yeSBmcm9tICcuLi9jb21tb24vcmFuZ2Utc2xpZGVyLXRpbWVsaW5lLXBhbmVsJztcbmltcG9ydCB7XG4gIG9ic2VydmVEaW1lbnNpb25zLFxuICB1bm9ic2VydmVEaW1lbnNpb25zLFxuICByb3VuZFZhbFRvU3RlcCxcbiAgY2xhbXAsXG4gIHNjYWxlU291cmNlRG9tYWluVG9EZXN0aW5hdGlvblxufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB0eXBlIHtTbGlkZXJTY2FsZUNvbmZpZ30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge0xpbmVDaGFydCwgRmlsdGVyLCBCaW5zfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7RGF0YXNldHN9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtBY3Rpb25IYW5kbGVyLCBzZXRGaWx0ZXJQbG90fSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuXG5pbnRlcmZhY2UgU2xpZGVySW5wdXRQcm9wcyB7XG4gICRmbHVzaD86IGJvb2xlYW47XG4gICRpbnB1dFNpemU/OiBzdHJpbmc7XG59XG5jb25zdCBub29wID0gKCkgPT4ge1xuICByZXR1cm47XG59O1xuY29uc3QgU2xpZGVySW5wdXQgPSBzdHlsZWQoSW5wdXQpPFNsaWRlcklucHV0UHJvcHM+YFxuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zbGlkZXJJbnB1dFdpZHRofXB4O1xuICBtYXJnaW4tbGVmdDogJHtwcm9wcyA9PiAocHJvcHMuJGZsdXNoID8gMCA6IHByb3BzLiRpbnB1dFNpemUgPT09ICd0aW55JyA/IDEyIDogMTgpfXB4O1xuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2xpZGVySW5wdXRGb250U2l6ZX07IC8vIDEwcHggLy8gMTJweDtcbiAgcGFkZGluZzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zbGlkZXJJbnB1dFBhZGRpbmd9OyAvLyA0cHggNnB4OyAvLyA2cHggMTJweDtcbmA7XG5cbmludGVyZmFjZSBTbGlkZXJXcmFwcGVyUHJvcHMge1xuICAkaXNSYW5nZWQ/OiBib29sZWFuO1xuICAkc2hvd0lucHV0PzogYm9vbGVhbjtcbn1cblxuY29uc3QgU2xpZGVyV3JhcHBlciA9IHN0eWxlZC5kaXY8U2xpZGVyV3JhcHBlclByb3BzPmBcbiAgZGlzcGxheTogZmxleDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAoIXByb3BzLiRpc1JhbmdlZCAmJiBwcm9wcy4kc2hvd0lucHV0ID8gJ2NlbnRlcicgOiAnZmxleC1zdGFydCcpfTtcbmA7XG5cbmNvbnN0IFJhbmdlSW5wdXRXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLXRvcDogMTJweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuYDtcblxuaW50ZXJmYWNlIFJhbmdlU2xpZGVyUHJvcHMge1xuICByYW5nZT86IG51bWJlcltdO1xuICB2YWx1ZTA6IG51bWJlcjtcbiAgdmFsdWUxOiBudW1iZXI7XG4gIG9uQ2hhbmdlPzogKHZhbDogbnVtYmVyW10sIGU/OiBFdmVudCB8IG51bGwpID0+IHZvaWQ7IC8vIFRPRE9cbiAgc2V0RmlsdGVyUGxvdD86IEFjdGlvbkhhbmRsZXI8dHlwZW9mIHNldEZpbHRlclBsb3Q+O1xuICBiaW5zPzogQmlucztcbiAgaXNSYW5nZWQ/OiBib29sZWFuO1xuICBpc0VubGFyZ2VkPzogYm9vbGVhbjtcbiAgc2hvd0lucHV0PzogYm9vbGVhbjtcbiAgaW5wdXRUaGVtZT86IHN0cmluZztcbiAgaW5wdXRTaXplPzogc3RyaW5nO1xuICBzdGVwPzogbnVtYmVyO1xuICBzbGlkZXJIYW5kbGVXaWR0aD86IG51bWJlcjtcbiAgeEF4aXM/OiBFbGVtZW50VHlwZTtcbiAgc3ViQW5pbWF0aW9ucz86IGFueVtdO1xuICB0aW1lbGluZUxhYmVsPzogc3RyaW5nO1xuXG4gIHRpbWV6b25lPzogc3RyaW5nIHwgbnVsbDtcbiAgdGltZUZvcm1hdD86IHN0cmluZztcbiAgcGxheWJhY2tDb250cm9sV2lkdGg/OiBudW1iZXI7XG4gIGxpbmVDaGFydD86IExpbmVDaGFydDtcbiAgbWFya3M/OiBudW1iZXJbXTtcbiAgcGxvdFR5cGU/OiB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICB9O1xuICBwbG90VmFsdWU/OiBudW1iZXJbXTtcblxuICBhbmltYXRpb25XaW5kb3c/OiBzdHJpbmc7XG4gIGZpbHRlcj86IEZpbHRlcjtcbiAgZGF0YXNldHM/OiBEYXRhc2V0cztcblxuICBpbnZlcnRUcmVuZENvbG9yPzogYm9vbGVhbjtcbiAgc2NhbGVDb25maWc/OiBTbGlkZXJTY2FsZUNvbmZpZyB8IG51bGw7XG59XG5cbmNvbnN0IFJBTkdFX1NMSURFUl9USU1FTElORV9QQU5FTF9TVFlMRSA9IHttYXJnaW5MZWZ0OiAnLTMycHgnfTtcblxuUmFuZ2VTbGlkZXJGYWN0b3J5LmRlcHMgPSBbUmFuZ2VQbG90RmFjdG9yeSwgUmFuZ2VTbGlkZXJTdWJBbmltYXRpb25QYW5lbEZhY3RvcnldO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBSYW5nZVNsaWRlckZhY3RvcnkoXG4gIFJhbmdlUGxvdDogUmV0dXJuVHlwZTx0eXBlb2YgUmFuZ2VQbG90RmFjdG9yeT4sXG4gIFJhbmdlU2xpZGVyU3ViQW5pbWF0aW9uUGFuZWw6IFJldHVyblR5cGU8dHlwZW9mIFJhbmdlU2xpZGVyU3ViQW5pbWF0aW9uUGFuZWxGYWN0b3J5PlxuKTogQ29tcG9uZW50VHlwZTxSYW5nZVNsaWRlclByb3BzPiB7XG4gIGNsYXNzIFJhbmdlU2xpZGVyIGV4dGVuZHMgQ29tcG9uZW50PFJhbmdlU2xpZGVyUHJvcHM+IHtcbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgaXNFbmxhcmdlZDogZmFsc2UsXG4gICAgICBpc1JhbmdlZDogdHJ1ZSxcbiAgICAgIHNob3dJbnB1dDogdHJ1ZSxcbiAgICAgIHNsaWRlckhhbmRsZVdpZHRoOiAxMixcbiAgICAgIGlucHV0VGhlbWU6ICcnLFxuICAgICAgaW5wdXRTaXplOiAnc21hbGwnLFxuICAgICAgb25DaGFuZ2U6IG5vb3BcbiAgICB9O1xuXG4gICAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhwcm9wcywgc3RhdGUpIHtcbiAgICAgIGxldCB1cGRhdGU6IHt2YWx1ZTE/OiBhbnk7IHByZXZWYWx1ZTE/OiBhbnk7IHZhbHVlMD86IGFueTsgcHJldlZhbHVlMD86IGFueX0gfCBudWxsID0gbnVsbDtcbiAgICAgIGNvbnN0IHt2YWx1ZTAsIHZhbHVlMX0gPSBwcm9wcztcbiAgICAgIGlmIChwcm9wcy52YWx1ZTAgIT09IHN0YXRlLnByZXZWYWx1ZTAgJiYgIWlzTmFOKHZhbHVlMCkpIHtcbiAgICAgICAgdXBkYXRlID0gey4uLih1cGRhdGUgfHwge30pLCB2YWx1ZTAsIHByZXZWYWx1ZTA6IHZhbHVlMH07XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMudmFsdWUxICE9PSBzdGF0ZS5wcmV2VmFsdWUxICYmICFpc05hTih2YWx1ZTEpKSB7XG4gICAgICAgIHVwZGF0ZSA9IHsuLi4odXBkYXRlIHx8IHt9KSwgdmFsdWUxLCBwcmV2VmFsdWUxOiB2YWx1ZTF9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVwZGF0ZTtcbiAgICB9XG5cbiAgICBzdGF0ZSA9IHtcbiAgICAgIHZhbHVlMDogMCxcbiAgICAgIHZhbHVlMTogMSxcbiAgICAgIHByZXZWYWx1ZTA6IDAsXG4gICAgICBwcmV2VmFsdWUxOiAxLFxuICAgICAgd2lkdGg6IDI4OFxuICAgIH07XG5cbiAgICBzbGlkZXJDb250YWluZXI6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLnNsaWRlckNvbnRhaW5lciBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICAgICAgb2JzZXJ2ZURpbWVuc2lvbnModGhpcy5zbGlkZXJDb250YWluZXIsIHRoaXMuX3Jlc2l6ZSwgMTAwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLnNsaWRlckNvbnRhaW5lciBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICAgICAgdW5vYnNlcnZlRGltZW5zaW9ucyh0aGlzLnNsaWRlckNvbnRhaW5lcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0U2xpZGVyQ29udGFpbmVyOiBSZWFjdC5MZWdhY3lSZWY8SFRNTERpdkVsZW1lbnQ+ID0gZWxlbWVudCA9PiB7XG4gICAgICB0aGlzLnNsaWRlckNvbnRhaW5lciA9IGVsZW1lbnQ7XG4gICAgICB0aGlzLl9yZXNpemUoKTtcbiAgICB9O1xuICAgIGlucHV0VmFsdWUwID0gY3JlYXRlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG4gICAgaW5wdXRWYWx1ZTEgPSBjcmVhdGVSZWY8SFRNTElucHV0RWxlbWVudD4oKTtcbiAgICB2YWx1ZTBTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnZhbHVlMDtcbiAgICB2YWx1ZTFTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnZhbHVlMTtcbiAgICBmaWx0ZXJWYWx1ZVNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLnZhbHVlMFNlbGVjdG9yLFxuICAgICAgdGhpcy52YWx1ZTFTZWxlY3RvcixcbiAgICAgICh2YWx1ZTAsIHZhbHVlMSkgPT4gW3ZhbHVlMCwgdmFsdWUxXVxuICAgICk7XG5cbiAgICBfaXNUaW1lRmlsdGVyID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLnByb3BzLnRpbWVGb3JtYXQgPT09ICdzdHJpbmcnO1xuICAgIH07XG5cbiAgICBfZ2V0RGlzcGxheVJhbmdlSW5mbyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHtyYW5nZSwgYmlucywgaXNSYW5nZWR9ID0gdGhpcy5wcm9wcztcbiAgICAgIGlmICghcmFuZ2UpIHtcbiAgICAgICAgcmV0dXJuIHtkaXNwbGF5UmFuZ2U6IHJhbmdlLCBiaW5TdGVwOiAwfTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFiaW5zIHx8ICFpc1JhbmdlZCkge1xuICAgICAgICByZXR1cm4ge2Rpc3BsYXlSYW5nZTogcmFuZ2UsIGJpblN0ZXA6IDB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBncm91cEtleXMgPSBPYmplY3Qua2V5cyhiaW5zKS5maWx0ZXIoayA9PiBiaW5zW2tdPy5sZW5ndGggPiAwKTtcbiAgICAgIGlmIChncm91cEtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB7ZGlzcGxheVJhbmdlOiByYW5nZSwgYmluU3RlcDogMH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGdyb3VwID0gYmluc1tncm91cEtleXNbMF1dO1xuICAgICAgY29uc3QgaWR4ID0gZ3JvdXAubGVuZ3RoID4gMSA/IDEgOiAwO1xuICAgICAgY29uc3QgYmluU3RlcCA9IGdyb3VwW2lkeF0ueDEgLSBncm91cFtpZHhdLngwO1xuXG4gICAgICBpZiAoYmluU3RlcCA8PSAwKSB7XG4gICAgICAgIHJldHVybiB7ZGlzcGxheVJhbmdlOiByYW5nZSwgYmluU3RlcDogMH07XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9pc1RpbWVGaWx0ZXIoKSkge1xuICAgICAgICBjb25zdCBkaXNwbGF5UmFuZ2UgPSBbcmFuZ2VbMF0gLSBiaW5TdGVwLCByYW5nZVsxXSArIGJpblN0ZXBdO1xuICAgICAgICByZXR1cm4ge2Rpc3BsYXlSYW5nZSwgYmluU3RlcH07XG4gICAgICB9XG5cbiAgICAgIC8vIE5vbi10aW1lIHJhbmdlIGZpbHRlcnM6IHBhZCBieSBoYWxmIGEgYmluIHNvIGVkZ2UgYmFycyBhcmVuJ3QgY2xpcHBlZFxuICAgICAgY29uc3QgcGFkID0gYmluU3RlcCAvIDI7XG4gICAgICBjb25zdCBkaXNwbGF5UmFuZ2UgPSBbcmFuZ2VbMF0gLSBwYWQsIHJhbmdlWzFdICsgcGFkXTtcbiAgICAgIHJldHVybiB7ZGlzcGxheVJhbmdlLCBiaW5TdGVwOiBwYWR9O1xuICAgIH07XG5cbiAgICBfZ2V0RGlzcGxheVJhbmdlID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2dldERpc3BsYXlSYW5nZUluZm8oKS5kaXNwbGF5UmFuZ2U7XG4gICAgfTtcblxuICAgIF9yb3VuZFZhbFRvU3RlcCA9IHZhbCA9PiB7XG4gICAgICBjb25zdCB7cmFuZ2UsIHN0ZXB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGlmICghcmFuZ2UgfHwgIXN0ZXApIHJldHVybjtcbiAgICAgIHJldHVybiByb3VuZFZhbFRvU3RlcChyYW5nZVswXSwgc3RlcCwgdmFsKTtcbiAgICB9O1xuXG4gICAgX3NldFJhbmdlVmFsMSA9IHZhbCA9PiB7XG4gICAgICBjb25zdCB7dmFsdWUwLCBvbkNoYW5nZSA9IG5vb3B9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IGRyID0gdGhpcy5fZ2V0RGlzcGxheVJhbmdlKCk7XG4gICAgICBpZiAoIWRyKSByZXR1cm47XG4gICAgICBjb25zdCB2YWwxID0gTnVtYmVyKHZhbCk7XG4gICAgICBvbkNoYW5nZShbdmFsdWUwLCBjbGFtcChbdmFsdWUwLCBkclsxXV0sIHRoaXMuX3JvdW5kVmFsVG9TdGVwKHZhbDEpKV0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcblxuICAgIF9zZXRSYW5nZVZhbDAgPSB2YWwgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlMSwgb25DaGFuZ2UgPSBub29wfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCBkciA9IHRoaXMuX2dldERpc3BsYXlSYW5nZSgpO1xuICAgICAgaWYgKCFkcikgcmV0dXJuO1xuICAgICAgY29uc3QgdmFsMCA9IE51bWJlcih2YWwpO1xuICAgICAgb25DaGFuZ2UoW2NsYW1wKFtkclswXSwgdmFsdWUxXSwgdGhpcy5fcm91bmRWYWxUb1N0ZXAodmFsMCkpLCB2YWx1ZTFdKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG5cbiAgICBfcmVzaXplID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2xpZGVyQ29udGFpbmVyKSB7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5zbGlkZXJDb250YWluZXIub2Zmc2V0V2lkdGg7XG4gICAgICAgIGlmICh3aWR0aCAhPT0gdGhpcy5zdGF0ZS53aWR0aCkge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe3dpZHRofSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX29uQ2hhbmdlSW5wdXQgPSAoa2V5LCBlKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtba2V5XTogZS50YXJnZXQudmFsdWV9KTtcbiAgICB9O1xuXG4gICAgX3JlbmRlcklucHV0KGtleSkge1xuICAgICAgY29uc3Qgc2V0UmFuZ2UgPSBrZXkgPT09ICd2YWx1ZTAnID8gdGhpcy5fc2V0UmFuZ2VWYWwwIDogdGhpcy5fc2V0UmFuZ2VWYWwxO1xuICAgICAgY29uc3QgcmVmID0ga2V5ID09PSAndmFsdWUwJyA/IHRoaXMuaW5wdXRWYWx1ZTAgOiB0aGlzLmlucHV0VmFsdWUxO1xuICAgICAgY29uc3QgdXBkYXRlID0gZSA9PiB7XG4gICAgICAgIGlmICghc2V0UmFuZ2UoZS50YXJnZXQudmFsdWUpKSB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7W2tleV06IHRoaXMuc3RhdGVba2V5XX0pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvbkNoYW5nZSA9IHRoaXMuX29uQ2hhbmdlSW5wdXQuYmluZCh0aGlzLCBrZXkpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U2xpZGVySW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJrZy1yYW5nZS1zbGlkZXJfX2lucHV0XCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICBpZD17YHNsaWRlci1pbnB1dC0ke2tleX1gfVxuICAgICAgICAgIGtleT17a2V5fVxuICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlW2tleV19XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgIG9uS2V5UHJlc3M9e2UgPT4ge1xuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZShlKTtcbiAgICAgICAgICAgICAgKHJlZi5jdXJyZW50IGFzIGFueSkuYmx1cigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25CbHVyPXt1cGRhdGV9XG4gICAgICAgICAgJGZsdXNoPXtrZXkgPT09ICd2YWx1ZTAnfVxuICAgICAgICAgICRpbnB1dFNpemU9e3RoaXMucHJvcHMuaW5wdXRTaXplfVxuICAgICAgICAgIHNlY29uZGFyeT17dGhpcy5wcm9wcy5pbnB1dFRoZW1lID09PSAnc2Vjb25kYXJ5J31cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGlzUmFuZ2VkLFxuICAgICAgICBzaG93SW5wdXQsXG4gICAgICAgIGJpbnMsXG4gICAgICAgIGxpbmVDaGFydCxcbiAgICAgICAgcGxvdFR5cGUsXG4gICAgICAgIGludmVydFRyZW5kQ29sb3IsXG4gICAgICAgIHJhbmdlLFxuICAgICAgICBvbkNoYW5nZSA9IG5vb3AsXG4gICAgICAgIHNsaWRlckhhbmRsZVdpZHRoLFxuICAgICAgICBzdGVwLFxuICAgICAgICB0aW1lem9uZSxcbiAgICAgICAgdGltZUZvcm1hdCxcbiAgICAgICAgcGxheWJhY2tDb250cm9sV2lkdGgsXG4gICAgICAgIHNldEZpbHRlclBsb3QsXG4gICAgICAgIGFuaW1hdGlvbldpbmRvdyxcbiAgICAgICAgc3ViQW5pbWF0aW9uczogc3ViQW5pbWF0aW9ucyxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBkYXRhc2V0cyxcbiAgICAgICAgc2NhbGVDb25maWdcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICBjb25zdCB7d2lkdGh9ID0gdGhpcy5zdGF0ZTtcbiAgICAgIGNvbnN0IHBsb3RXaWR0aCA9IE1hdGgubWF4KHdpZHRoIC0gTnVtYmVyKHNsaWRlckhhbmRsZVdpZHRoKSwgMCk7XG4gICAgICBjb25zdCBoYXNQbG90ID0gcGxvdFR5cGU/LnR5cGU7XG5cbiAgICAgIGNvbnN0IHtkaXNwbGF5UmFuZ2V9ID0gdGhpcy5fZ2V0RGlzcGxheVJhbmdlSW5mbygpO1xuXG4gICAgICBjb25zdCByYXdWYWx1ZSA9IHRoaXMucHJvcHMucGxvdFZhbHVlIHx8IHRoaXMuZmlsdGVyVmFsdWVTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IHZhbHVlID1cbiAgICAgICAgZGlzcGxheVJhbmdlICYmIEFycmF5LmlzQXJyYXkocmF3VmFsdWUpXG4gICAgICAgICAgPyAocmF3VmFsdWUubWFwKHYgPT4gY2xhbXAoW2Rpc3BsYXlSYW5nZVswXSwgZGlzcGxheVJhbmdlWzFdXSwgdikpIGFzIHR5cGVvZiByYXdWYWx1ZSlcbiAgICAgICAgICA6IHJhd1ZhbHVlO1xuICAgICAgY29uc3Qgc2NhbGVkVmFsdWUgPVxuICAgICAgICBzdWJBbmltYXRpb25zPy5sZW5ndGggJiYgcmFuZ2VcbiAgICAgICAgICA/IHNjYWxlU291cmNlRG9tYWluVG9EZXN0aW5hdGlvbih2YWx1ZSBhcyBbbnVtYmVyLCBudW1iZXJdLCByYW5nZSBhcyBbbnVtYmVyLCBudW1iZXJdKVxuICAgICAgICAgIDogWzAsIDBdO1xuICAgICAgY29uc3QgY29tbW9uUGFkZGluZyA9IGAke051bWJlcihzbGlkZXJIYW5kbGVXaWR0aCkgLyAyfXB4YDtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJrZy1yYW5nZS1zbGlkZXJcIlxuICAgICAgICAgIHN0eWxlPXt7d2lkdGg6ICcxMDAlJywgcGFkZGluZzogYDAgJHtjb21tb25QYWRkaW5nfWB9fVxuICAgICAgICAgIHJlZj17dGhpcy5zZXRTbGlkZXJDb250YWluZXJ9XG4gICAgICAgID5cbiAgICAgICAgICB7QXJyYXkuaXNBcnJheShyYW5nZSkgJiYgcmFuZ2UuZXZlcnkoTnVtYmVyLmlzRmluaXRlKSAmJiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICB7aGFzUGxvdCA/IChcbiAgICAgICAgICAgICAgICA8UmFuZ2VQbG90XG4gICAgICAgICAgICAgICAgICBiaW5zPXtiaW5zfVxuICAgICAgICAgICAgICAgICAgbGluZUNoYXJ0PXtsaW5lQ2hhcnR9XG4gICAgICAgICAgICAgICAgICBwbG90VHlwZT17cGxvdFR5cGV9XG4gICAgICAgICAgICAgICAgICBpbnZlcnRUcmVuZENvbG9yPXtpbnZlcnRUcmVuZENvbG9yfVxuICAgICAgICAgICAgICAgICAgaXNFbmxhcmdlZD17dGhpcy5wcm9wcy5pc0VubGFyZ2VkfVxuICAgICAgICAgICAgICAgICAgb25CcnVzaD17KHZhbDAsIHZhbDEpID0+IG9uQ2hhbmdlKFt2YWwwLCB2YWwxXSl9XG4gICAgICAgICAgICAgICAgICBtYXJrcz17dGhpcy5wcm9wcy5tYXJrc31cbiAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbldpbmRvdz17YW5pbWF0aW9uV2luZG93fVxuICAgICAgICAgICAgICAgICAgZmlsdGVyPXtmaWx0ZXJ9XG4gICAgICAgICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICAgICAgICByYW5nZT17ZGlzcGxheVJhbmdlIHx8IHJhbmdlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3Bsb3RXaWR0aH1cbiAgICAgICAgICAgICAgICAgIGlzUmFuZ2VkPXtpc1JhbmdlZH1cbiAgICAgICAgICAgICAgICAgIHN0ZXA9e3N0ZXB9XG4gICAgICAgICAgICAgICAgICB0aW1lem9uZT17dGltZXpvbmV9XG4gICAgICAgICAgICAgICAgICB0aW1lRm9ybWF0PXt0aW1lRm9ybWF0fVxuICAgICAgICAgICAgICAgICAgcGxheWJhY2tDb250cm9sV2lkdGg9e3BsYXliYWNrQ29udHJvbFdpZHRofVxuICAgICAgICAgICAgICAgICAgc2V0RmlsdGVyUGxvdD17c2V0RmlsdGVyUGxvdH1cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7cGFkZGluZ0xlZnQ6IGNvbW1vblBhZGRpbmd9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICB7c3ViQW5pbWF0aW9ucz8ubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgIDxSYW5nZVNsaWRlclN1YkFuaW1hdGlvblBhbmVsXG4gICAgICAgICAgICAgICAgICBzdWJBbmltYXRpb25zPXtzdWJBbmltYXRpb25zfVxuICAgICAgICAgICAgICAgICAgc2NhbGVkVmFsdWU9e3NjYWxlZFZhbHVlfVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e1JBTkdFX1NMSURFUl9USU1FTElORV9QQU5FTF9TVFlMRX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFNsaWRlcldyYXBwZXJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJrZy1yYW5nZS1zbGlkZXJfX3NsaWRlclwiXG4gICAgICAgICAgICAgICAgJGlzUmFuZ2VkPXtpc1JhbmdlZH1cbiAgICAgICAgICAgICAgICAkc2hvd0lucHV0PXtzaG93SW5wdXR9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy54QXhpcyA/IChcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3toZWlnaHQ6ICczMHB4J319PlxuICAgICAgICAgICAgICAgICAgICA8dGhpcy5wcm9wcy54QXhpc1xuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXtwbG90V2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgdGltZXpvbmU9e3RpbWV6b25lfVxuICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbj17ZGlzcGxheVJhbmdlfVxuICAgICAgICAgICAgICAgICAgICAgIGlzRW5sYXJnZWQ9e3RoaXMucHJvcHMuaXNFbmxhcmdlZH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDxTbGlkZXJcbiAgICAgICAgICAgICAgICAgIG1hcmtzPXt0aGlzLnByb3BzLm1hcmtzfVxuICAgICAgICAgICAgICAgICAgaXNSYW5nZWQ9e2lzUmFuZ2VkfVxuICAgICAgICAgICAgICAgICAgbWluVmFsdWU9eyhkaXNwbGF5UmFuZ2UgfHwgcmFuZ2UpWzBdfVxuICAgICAgICAgICAgICAgICAgbWF4VmFsdWU9eyhkaXNwbGF5UmFuZ2UgfHwgcmFuZ2UpWzFdfVxuICAgICAgICAgICAgICAgICAgdmFsdWUwPXt0aGlzLnByb3BzLnZhbHVlMH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlMT17dGhpcy5wcm9wcy52YWx1ZTF9XG4gICAgICAgICAgICAgICAgICBzdGVwPXtzdGVwfVxuICAgICAgICAgICAgICAgICAgc2xpZGVySGFuZGxlV2lkdGg9e3NsaWRlckhhbmRsZVdpZHRofVxuICAgICAgICAgICAgICAgICAgb25TbGlkZXIwQ2hhbmdlPXt0aGlzLl9zZXRSYW5nZVZhbDB9XG4gICAgICAgICAgICAgICAgICBvblNsaWRlcjFDaGFuZ2U9e3RoaXMuX3NldFJhbmdlVmFsMX1cbiAgICAgICAgICAgICAgICAgIG9uU2xpZGVyQmFyQ2hhbmdlPXsodmFsMCwgdmFsMSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZShbdmFsMCwgdmFsMV0pO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIGVuYWJsZUJhckRyYWdcbiAgICAgICAgICAgICAgICAgIHNjYWxlQ29uZmlnPXtzY2FsZUNvbmZpZ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIHshaXNSYW5nZWQgJiYgc2hvd0lucHV0ID8gdGhpcy5fcmVuZGVySW5wdXQoJ3ZhbHVlMScpIDogbnVsbH1cbiAgICAgICAgICAgICAgPC9TbGlkZXJXcmFwcGVyPlxuICAgICAgICAgICAgICB7aXNSYW5nZWQgJiYgc2hvd0lucHV0ID8gKFxuICAgICAgICAgICAgICAgIDxSYW5nZUlucHV0V3JhcHBlciBjbGFzc05hbWU9XCJyYW5nZS1zbGlkZXJfX2lucHV0LWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICB7dGhpcy5fcmVuZGVySW5wdXQoJ3ZhbHVlMCcpfVxuICAgICAgICAgICAgICAgICAge3RoaXMuX3JlbmRlcklucHV0KCd2YWx1ZTEnKX1cbiAgICAgICAgICAgICAgICA8L1JhbmdlSW5wdXRXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwb2x5ZmlsbChSYW5nZVNsaWRlcik7XG5cbiAgcmV0dXJuIFJhbmdlU2xpZGVyO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxzQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsU0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLFVBQUEsR0FBQUQsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFNLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFPLGtCQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSx5QkFBQSxHQUFBSixzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQVMsTUFBQSxHQUFBVCxPQUFBO0FBTTBCLElBQUFVLGVBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFqQjFCO0FB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
@@ -1,4 +1,5 @@
1
1
  import React, { Component, RefObject } from 'react';
2
+ import type { SliderScaleConfig } from '@kepler.gl/utils';
2
3
  declare function noop(): void;
3
4
  interface StyledRangeSliderProps {
4
5
  $vertical?: boolean;
@@ -32,6 +33,7 @@ type SliderProps = {
32
33
  disabled: boolean;
33
34
  className?: string;
34
35
  style?: object;
36
+ scaleConfig?: SliderScaleConfig | null;
35
37
  };
36
38
  export default class Slider extends Component<SliderProps> {
37
39
  props: SliderProps;
@@ -58,6 +60,8 @@ export default class Slider extends Component<SliderProps> {
58
60
  constructor(props: SliderProps);
59
61
  private setAnchor;
60
62
  private getBaseDistance;
63
+ private getValueFromPixelOffset;
64
+ private getPositionFromValue;
61
65
  private getDeltaVal;
62
66
  private getDeltaX;
63
67
  private getValue;