@carto/kepler.gl 0.0.86-alpha.deck9.1 → 0.0.86
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.
- package/dist/actions/action-wrapper.js +41 -36
- package/dist/actions/actions.js +21 -15
- package/dist/actions/identity-actions.js +20 -14
- package/dist/actions/index.js +16 -16
- package/dist/actions/map-state-actions.js +18 -12
- package/dist/actions/map-style-actions.js +46 -30
- package/dist/actions/provider-actions.js +73 -49
- package/dist/actions/ui-state-actions.js +113 -73
- package/dist/actions/vis-state-actions.js +148 -152
- package/dist/cloud-providers/index.js +7 -6
- package/dist/cloud-providers/provider.js +279 -189
- package/dist/components/bottom-widget.js +117 -105
- package/dist/components/common/action-panel.js +74 -122
- package/dist/components/common/animation-control/animation-control.js +54 -69
- package/dist/components/common/animation-control/animation-controller.js +160 -134
- package/dist/components/common/animation-control/animation-speed-slider.js +54 -47
- package/dist/components/common/animation-control/floating-time-display.js +100 -120
- package/dist/components/common/animation-control/playback-controls.js +144 -147
- package/dist/components/common/animation-control/speed-control.js +23 -31
- package/dist/components/common/checkbox.js +70 -56
- package/dist/components/common/color-legend.js +110 -83
- package/dist/components/common/data-table/button.js +23 -31
- package/dist/components/common/data-table/canvas.js +5 -11
- package/dist/components/common/data-table/cell-size.js +61 -51
- package/dist/components/common/data-table/grid.js +59 -40
- package/dist/components/common/data-table/index.js +348 -464
- package/dist/components/common/data-table/option-dropdown.js +33 -50
- package/dist/components/common/dataset-label.js +13 -17
- package/dist/components/common/error-boundary.js +45 -27
- package/dist/components/common/field-selector.js +139 -99
- package/dist/components/common/field-token.js +9 -24
- package/dist/components/common/file-uploader/file-drop.js +115 -96
- package/dist/components/common/file-uploader/file-upload-progress.js +45 -68
- package/dist/components/common/file-uploader/file-upload.js +187 -215
- package/dist/components/common/file-uploader/upload-button.js +22 -35
- package/dist/components/common/histogram-plot.js +58 -47
- package/dist/components/common/icons/add.js +27 -14
- package/dist/components/common/icons/anchor_window.js +18 -16
- package/dist/components/common/icons/arrow-down-alt.js +27 -14
- package/dist/components/common/icons/arrow-down-solid.js +27 -14
- package/dist/components/common/icons/arrow-down.js +27 -14
- package/dist/components/common/icons/arrow-left.js +30 -17
- package/dist/components/common/icons/arrow-right.js +27 -14
- package/dist/components/common/icons/arrow-up-alt.js +28 -15
- package/dist/components/common/icons/arrow-up-solid.js +27 -14
- package/dist/components/common/icons/arrow-up.js +27 -14
- package/dist/components/common/icons/base.js +57 -39
- package/dist/components/common/icons/bug.js +29 -16
- package/dist/components/common/icons/cancel.js +27 -14
- package/dist/components/common/icons/checkmark.js +31 -18
- package/dist/components/common/icons/chevron-right.js +33 -20
- package/dist/components/common/icons/clipboard.js +28 -15
- package/dist/components/common/icons/clock.js +29 -16
- package/dist/components/common/icons/close.js +32 -19
- package/dist/components/common/icons/code-alt.js +29 -16
- package/dist/components/common/icons/copy.js +31 -18
- package/dist/components/common/icons/crosshairs.js +29 -16
- package/dist/components/common/icons/cube-3d.js +31 -18
- package/dist/components/common/icons/cursor-click.js +31 -18
- package/dist/components/common/icons/data-table.js +28 -15
- package/dist/components/common/icons/db.js +28 -15
- package/dist/components/common/icons/delete.js +29 -16
- package/dist/components/common/icons/docs.js +43 -30
- package/dist/components/common/icons/drag-n-drop.js +29 -16
- package/dist/components/common/icons/draw-polygon.js +46 -33
- package/dist/components/common/icons/email.js +31 -18
- package/dist/components/common/icons/expand.js +29 -16
- package/dist/components/common/icons/eye-seen.js +29 -16
- package/dist/components/common/icons/eye-unseen.js +29 -16
- package/dist/components/common/icons/file-type.js +19 -35
- package/dist/components/common/icons/file.js +27 -14
- package/dist/components/common/icons/files.js +26 -14
- package/dist/components/common/icons/filter-funnel.js +27 -14
- package/dist/components/common/icons/free-window.js +18 -16
- package/dist/components/common/icons/gear.js +29 -16
- package/dist/components/common/icons/hash.js +27 -14
- package/dist/components/common/icons/histogram.js +27 -15
- package/dist/components/common/icons/index.js +156 -156
- package/dist/components/common/icons/info.js +38 -25
- package/dist/components/common/icons/layers.js +27 -14
- package/dist/components/common/icons/left-arrow.js +29 -16
- package/dist/components/common/icons/legend.js +27 -14
- package/dist/components/common/icons/line-chart.js +27 -14
- package/dist/components/common/icons/login.js +30 -17
- package/dist/components/common/icons/logout.js +29 -16
- package/dist/components/common/icons/map-icon.js +32 -18
- package/dist/components/common/icons/map.js +32 -18
- package/dist/components/common/icons/messages.js +27 -14
- package/dist/components/common/icons/minus.js +27 -14
- package/dist/components/common/icons/order-by-dataset.js +17 -15
- package/dist/components/common/icons/order-by-list.js +9 -7
- package/dist/components/common/icons/pause.js +27 -14
- package/dist/components/common/icons/picture.js +26 -14
- package/dist/components/common/icons/pin.js +30 -17
- package/dist/components/common/icons/play.js +27 -14
- package/dist/components/common/icons/polygon.js +48 -35
- package/dist/components/common/icons/rectangle.js +49 -36
- package/dist/components/common/icons/reduce.js +30 -17
- package/dist/components/common/icons/reset.js +27 -14
- package/dist/components/common/icons/rocket.js +27 -14
- package/dist/components/common/icons/save.js +29 -16
- package/dist/components/common/icons/save2.js +33 -20
- package/dist/components/common/icons/search.js +29 -16
- package/dist/components/common/icons/settings.js +29 -16
- package/dist/components/common/icons/share.js +27 -14
- package/dist/components/common/icons/split.js +55 -42
- package/dist/components/common/icons/square-select.js +29 -16
- package/dist/components/common/icons/swap-horizontal.js +31 -18
- package/dist/components/common/icons/table.js +27 -14
- package/dist/components/common/icons/trash.js +29 -16
- package/dist/components/common/icons/upload.js +27 -14
- package/dist/components/common/icons/vert-dots.js +65 -52
- package/dist/components/common/icons/vert-three-dots.js +40 -27
- package/dist/components/common/icons/warning.js +39 -26
- package/dist/components/common/image-preview.js +33 -71
- package/dist/components/common/info-helper.js +29 -36
- package/dist/components/common/item-selector/accessor.js +13 -7
- package/dist/components/common/item-selector/chickleted-input.js +56 -72
- package/dist/components/common/item-selector/dropdown-list.js +214 -182
- package/dist/components/common/item-selector/item-selector-submenu.js +55 -34
- package/dist/components/common/item-selector/item-selector.js +194 -183
- package/dist/components/common/item-selector/typeahead.js +248 -236
- package/dist/components/common/line-chart.js +58 -80
- package/dist/components/common/loading-spinner.js +31 -46
- package/dist/components/common/logo.js +48 -61
- package/dist/components/common/map-layer-selector.js +25 -31
- package/dist/components/common/modal.js +106 -167
- package/dist/components/common/portaled.js +189 -169
- package/dist/components/common/progress-bar.js +24 -27
- package/dist/components/common/range-brush.js +215 -176
- package/dist/components/common/range-plot.js +63 -52
- package/dist/components/common/range-slider.js +231 -206
- package/dist/components/common/slider/mouse-event.js +66 -59
- package/dist/components/common/slider/slider-bar-handle.js +61 -51
- package/dist/components/common/slider/slider-handle.js +102 -127
- package/dist/components/common/slider/slider.js +162 -143
- package/dist/components/common/styled-components.js +256 -518
- package/dist/components/common/switch.js +11 -11
- package/dist/components/common/time-range-slider-time-title.js +32 -49
- package/dist/components/common/time-range-slider.js +45 -56
- package/dist/components/common/time-slider-marker.js +52 -71
- package/dist/components/common/tippy-tooltip.js +59 -89
- package/dist/components/common/toolbar-item.js +45 -53
- package/dist/components/common/toolbar.js +18 -24
- package/dist/components/common/vertical-toolbar.js +6 -13
- package/dist/components/container.js +119 -87
- package/dist/components/context.js +8 -6
- package/dist/components/editor/constants.js +4 -4
- package/dist/components/editor/editor.js +157 -122
- package/dist/components/editor/feature-action-panel.js +59 -52
- package/dist/components/editor/feature-styles.js +29 -46
- package/dist/components/editor/handle-style.js +29 -38
- package/dist/components/filters/components.js +4 -8
- package/dist/components/filters/filter-panels/filter-panel-with-field-select.js +43 -33
- package/dist/components/filters/filter-panels/multi-select-filter-panel.js +21 -20
- package/dist/components/filters/filter-panels/new-filter-panel.js +31 -24
- package/dist/components/filters/filter-panels/polygon-filter-panel.js +31 -26
- package/dist/components/filters/filter-panels/range-filter-panel.js +21 -20
- package/dist/components/filters/filter-panels/single-select-filter-panel.js +21 -20
- package/dist/components/filters/filter-panels/time-range-filter-panel.js +31 -28
- package/dist/components/filters/index.js +10 -10
- package/dist/components/filters/multi-select-filter.js +9 -11
- package/dist/components/filters/polygon-filter.js +41 -26
- package/dist/components/filters/range-filter.js +7 -9
- package/dist/components/filters/single-select-filter.js +13 -11
- package/dist/components/filters/time-range-filter.js +14 -16
- package/dist/components/filters/time-widget.js +84 -125
- package/dist/components/geocoder/geocoder.js +177 -158
- package/dist/components/geocoder-panel.js +87 -66
- package/dist/components/index.js +329 -328
- package/dist/components/injector.js +63 -44
- package/dist/components/kepler-gl.js +361 -325
- package/dist/components/map/coordinate-info.js +16 -18
- package/dist/components/map/layer-hover-info.js +86 -108
- package/dist/components/map/layer-selector-panel.js +48 -50
- package/dist/components/map/locale-panel.js +44 -38
- package/dist/components/map/map-control-panel.js +47 -70
- package/dist/components/map/map-control-toolbar.js +6 -9
- package/dist/components/map/map-control-tooltip.js +8 -10
- package/dist/components/map/map-control.js +27 -35
- package/dist/components/map/map-draw-panel.js +48 -38
- package/dist/components/map/map-legend-panel.js +50 -47
- package/dist/components/map/map-legend.js +116 -133
- package/dist/components/map/map-popover.js +100 -155
- package/dist/components/map/split-map-button.js +34 -30
- package/dist/components/map/toggle-3d-button.js +27 -25
- package/dist/components/map-container.js +359 -313
- package/dist/components/maps-layout.js +26 -16
- package/dist/components/modal-container.js +355 -359
- package/dist/components/modals/add-map-style-modal.js +194 -233
- package/dist/components/modals/cloud-tile.js +67 -96
- package/dist/components/modals/data-table-modal.js +152 -155
- package/dist/components/modals/delete-data-modal.js +20 -20
- package/dist/components/modals/error-display.js +7 -9
- package/dist/components/modals/export-data-modal.js +140 -118
- package/dist/components/modals/export-image-modal.js +69 -82
- package/dist/components/modals/export-map-modal/components.js +18 -20
- package/dist/components/modals/export-map-modal/export-html-map.js +74 -82
- package/dist/components/modals/export-map-modal/export-json-map.js +45 -65
- package/dist/components/modals/export-map-modal/export-map-modal.js +47 -42
- package/dist/components/modals/image-modal-container.js +21 -20
- package/dist/components/modals/load-data-modal.js +30 -28
- package/dist/components/modals/load-storage-map.js +178 -277
- package/dist/components/modals/loading-dialog.js +19 -41
- package/dist/components/modals/modal-dialog.js +6 -4
- package/dist/components/modals/modal-tabs.js +48 -83
- package/dist/components/modals/overwrite-map-modal.js +30 -41
- package/dist/components/modals/provider-modal-container.js +42 -23
- package/dist/components/modals/save-map-modal.js +83 -107
- package/dist/components/modals/share-map-modal.js +95 -101
- package/dist/components/modals/status-panel.js +43 -63
- package/dist/components/modals/storage-map-viewer.js +70 -133
- package/dist/components/notification-panel/notification-item.js +97 -94
- package/dist/components/notification-panel.js +43 -35
- package/dist/components/performance.js +53 -49
- package/dist/components/plot-container.js +169 -151
- package/dist/components/side-panel/cloud-storage-dropdown.js +15 -13
- package/dist/components/side-panel/common/dataset-info.js +12 -16
- package/dist/components/side-panel/common/dataset-tag.js +27 -48
- package/dist/components/side-panel/common/dataset-title.js +116 -119
- package/dist/components/side-panel/common/source-data-catalog.js +32 -31
- package/dist/components/side-panel/common/source-data-selector.js +77 -52
- package/dist/components/side-panel/custom-panel.js +8 -6
- package/dist/components/side-panel/filter-manager.js +62 -48
- package/dist/components/side-panel/filter-panel/filter-panel-header.js +25 -35
- package/dist/components/side-panel/filter-panel/filter-panel.js +64 -46
- package/dist/components/side-panel/interaction-manager.js +18 -20
- package/dist/components/side-panel/interaction-panel/brush-config.js +17 -17
- package/dist/components/side-panel/interaction-panel/interaction-panel.js +95 -76
- package/dist/components/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +143 -118
- package/dist/components/side-panel/interaction-panel/tooltip-config.js +76 -95
- package/dist/components/side-panel/layer-manager.js +115 -105
- package/dist/components/side-panel/layer-panel/add-layer-button.js +54 -92
- package/dist/components/side-panel/layer-panel/color-dimension-scale-selector.js +5 -5
- package/dist/components/side-panel/layer-panel/color-palette.js +37 -50
- package/dist/components/side-panel/layer-panel/color-range-selector.js +207 -196
- package/dist/components/side-panel/layer-panel/color-selector.js +110 -104
- package/dist/components/side-panel/layer-panel/column-selector.js +22 -34
- package/dist/components/side-panel/layer-panel/custom-markers-config-group.js +4 -4
- package/dist/components/side-panel/layer-panel/custom-palette.js +205 -248
- package/dist/components/side-panel/layer-panel/custom-picker.js +69 -51
- package/dist/components/side-panel/layer-panel/dataset-layer-group.js +42 -37
- package/dist/components/side-panel/layer-panel/dataset-layer-section.js +27 -31
- package/dist/components/side-panel/layer-panel/dataset-section.js +35 -45
- package/dist/components/side-panel/layer-panel/dimension-scale-selector.js +13 -14
- package/dist/components/side-panel/layer-panel/hex-column-config.js +55 -32
- package/dist/components/side-panel/layer-panel/layer-aggregation-resolution.js +5 -5
- package/dist/components/side-panel/layer-panel/layer-column-config.js +46 -42
- package/dist/components/side-panel/layer-panel/layer-config-group.js +144 -178
- package/dist/components/side-panel/layer-panel/layer-configurator.js +830 -826
- package/dist/components/side-panel/layer-panel/layer-list.js +94 -101
- package/dist/components/side-panel/layer-panel/layer-panel-header.js +82 -124
- package/dist/components/side-panel/layer-panel/layer-panel.js +105 -111
- package/dist/components/side-panel/layer-panel/layer-type-dropdown-list.js +58 -67
- package/dist/components/side-panel/layer-panel/layer-type-list-item.js +32 -47
- package/dist/components/side-panel/layer-panel/layer-type-selector.js +41 -30
- package/dist/components/side-panel/layer-panel/layer-visibility-by-zoom.js +43 -42
- package/dist/components/side-panel/layer-panel/panel-view-list-toggle.js +57 -55
- package/dist/components/side-panel/layer-panel/single-color-palette.js +33 -48
- package/dist/components/side-panel/layer-panel/text-label-panel.js +116 -81
- package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.js +102 -88
- package/dist/components/side-panel/layer-panel/vis-config-slider.js +85 -99
- package/dist/components/side-panel/layer-panel/vis-config-switch.js +29 -38
- package/dist/components/side-panel/map-manager.js +89 -70
- package/dist/components/side-panel/map-style-panel/map-layer-selector.js +60 -72
- package/dist/components/side-panel/map-style-panel/map-style-selector.js +42 -64
- package/dist/components/side-panel/panel-dropdown.js +37 -21
- package/dist/components/side-panel/panel-header-action.js +65 -60
- package/dist/components/side-panel/panel-header.js +184 -165
- package/dist/components/side-panel/panel-tab.js +29 -35
- package/dist/components/side-panel/panel-title.js +18 -15
- package/dist/components/side-panel/panel-toggle.js +31 -30
- package/dist/components/side-panel/side-bar.js +91 -100
- package/dist/components/side-panel.js +123 -108
- package/dist/connect/keplergl-connect.js +26 -17
- package/dist/connect/with-local-selector.js +63 -31
- package/dist/constants/action-types.js +115 -113
- package/dist/constants/color-palette.js +16 -14
- package/dist/constants/color-ranges.js +28 -23
- package/dist/constants/custom-color-ranges.js +12 -12
- package/dist/constants/default-settings.js +254 -323
- package/dist/constants/index.js +63 -63
- package/dist/constants/keyevent.js +4 -4
- package/dist/constants/tooltip.js +5 -5
- package/dist/constants/user-feedbacks.js +5 -9
- package/dist/constants/user-guides.js +10 -10
- package/dist/deckgl-layers/3d-building-layer/3d-building-layer.js +63 -37
- package/dist/deckgl-layers/3d-building-layer/3d-building-utils.js +56 -52
- package/dist/deckgl-layers/cluster-layer/cluster-layer.js +168 -165
- package/dist/deckgl-layers/column-layer/enhanced-column-layer.js +43 -24
- package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.js +40 -27
- package/dist/deckgl-layers/hexagon-layer/enhanced-hexagon-layer.js +40 -27
- package/dist/deckgl-layers/layer-utils/cluster-utils.js +68 -60
- package/dist/deckgl-layers/layer-utils/cpu-aggregator.js +282 -276
- package/dist/deckgl-layers/layer-utils/shader-utils.js +2 -2
- package/dist/deckgl-layers/line-layer/line-layer.js +70 -62
- package/dist/deckgl-layers/svg-icon-layer/scatterplot-icon-layer.js +51 -37
- package/dist/deckgl-layers/svg-icon-layer/svg-icon-layer.js +85 -65
- package/dist/index.js +16 -15
- package/dist/layers/aggregation-layer.js +331 -299
- package/dist/layers/arc-layer/arc-layer-icon.js +41 -27
- package/dist/layers/arc-layer/arc-layer.js +201 -174
- package/dist/layers/base-layer.js +1544 -1371
- package/dist/layers/cluster-layer/cluster-layer-icon.js +44 -30
- package/dist/layers/cluster-layer/cluster-layer.js +103 -89
- package/dist/layers/default-layer-icon.js +53 -39
- package/dist/layers/geojson-layer/geojson-layer-icon.js +55 -42
- package/dist/layers/geojson-layer/geojson-layer.js +353 -292
- package/dist/layers/geojson-layer/geojson-utils.js +36 -31
- package/dist/layers/grid-layer/grid-layer-icon.js +100 -87
- package/dist/layers/grid-layer/grid-layer.js +61 -51
- package/dist/layers/grid-layer/grid-utils.js +9 -13
- package/dist/layers/h3-hexagon-layer/h3-hexagon-layer-icon.js +35 -21
- package/dist/layers/h3-hexagon-layer/h3-hexagon-layer.js +260 -225
- package/dist/layers/h3-hexagon-layer/h3-utils.js +16 -16
- package/dist/layers/heatmap-layer/heatmap-layer-icon.js +52 -39
- package/dist/layers/heatmap-layer/heatmap-layer.js +171 -140
- package/dist/layers/hexagon-layer/hexagon-layer-icon.js +64 -51
- package/dist/layers/hexagon-layer/hexagon-layer.js +63 -49
- package/dist/layers/hexagon-layer/hexagon-utils.js +14 -15
- package/dist/layers/icon-layer/icon-info-modal.js +75 -82
- package/dist/layers/icon-layer/icon-layer-icon.js +37 -24
- package/dist/layers/icon-layer/icon-layer.js +303 -274
- package/dist/layers/index.js +29 -43
- package/dist/layers/layer-factory.js +41 -25
- package/dist/layers/layer-text-label.js +23 -21
- package/dist/layers/layer-update.js +18 -16
- package/dist/layers/line-layer/line-layer-icon.js +43 -30
- package/dist/layers/line-layer/line-layer.js +142 -123
- package/dist/layers/mapbox-utils.js +62 -61
- package/dist/layers/mapboxgl-layer.js +169 -124
- package/dist/layers/point-layer/point-layer-icon.js +59 -45
- package/dist/layers/point-layer/point-layer.js +386 -355
- package/dist/layers/s2-geometry-layer/s2-geometry-layer.js +238 -208
- package/dist/layers/s2-geometry-layer/s2-layer-icon.js +35 -21
- package/dist/layers/s2-geometry-layer/s2-utils.js +8 -9
- package/dist/layers/scenegraph-layer/scenegraph-info-modal.js +25 -24
- package/dist/layers/scenegraph-layer/scenegraph-layer-icon.js +115 -102
- package/dist/layers/scenegraph-layer/scenegraph-layer.js +172 -148
- package/dist/layers/trip-layer/trip-info-modal.js +30 -50
- package/dist/layers/trip-layer/trip-layer-icon.js +53 -40
- package/dist/layers/trip-layer/trip-layer.js +307 -239
- package/dist/layers/trip-layer/trip-utils.js +50 -34
- package/dist/layers/types.js +2 -2
- package/dist/localization/formatted-message.js +10 -8
- package/dist/localization/index.js +7 -7
- package/dist/localization/locales.js +9 -6
- package/dist/localization/messages.js +10 -13
- package/dist/localization/translations/ca.js +13 -11
- package/dist/localization/translations/cn.js +13 -11
- package/dist/localization/translations/en.js +13 -11
- package/dist/localization/translations/es.js +13 -11
- package/dist/localization/translations/fi.js +13 -11
- package/dist/localization/translations/ja.js +13 -11
- package/dist/localization/translations/pt.js +13 -11
- package/dist/localization/translations/ru.js +13 -11
- package/dist/middleware/index.js +5 -3
- package/dist/processors/data-processor.js +201 -164
- package/dist/processors/file-handler.js +233 -111
- package/dist/processors/index.js +4 -4
- package/dist/reducers/combined-updaters.js +41 -41
- package/dist/reducers/composer-helpers.js +45 -20
- package/dist/reducers/composers.js +8 -9
- package/dist/reducers/core.js +35 -31
- package/dist/reducers/index.js +22 -21
- package/dist/reducers/map-state-updaters.js +47 -65
- package/dist/reducers/map-state.js +15 -23
- package/dist/reducers/map-style-updaters.js +159 -233
- package/dist/reducers/map-style.js +16 -30
- package/dist/reducers/provider-state-updaters.js +229 -217
- package/dist/reducers/provider-state.js +17 -29
- package/dist/reducers/root.js +58 -86
- package/dist/reducers/ui-state-updaters.js +218 -337
- package/dist/reducers/ui-state.js +16 -45
- package/dist/reducers/vis-state-merger.js +209 -205
- package/dist/reducers/vis-state-selectors.js +19 -5
- package/dist/reducers/vis-state-updaters.js +876 -1003
- package/dist/reducers/vis-state.js +16 -75
- package/dist/schemas/dataset-schema.js +108 -84
- package/dist/schemas/index.js +29 -28
- package/dist/schemas/map-state-schema.js +18 -21
- package/dist/schemas/map-style-schema.js +55 -47
- package/dist/schemas/schema-manager.js +161 -147
- package/dist/schemas/schema-utils.js +9 -8
- package/dist/schemas/schema.js +87 -72
- package/dist/schemas/versions.js +3 -3
- package/dist/schemas/vis-state-schema.js +583 -441
- package/dist/styles/base.js +1021 -1217
- package/dist/styles/index.js +3 -3
- package/dist/styles/media-breakpoints.js +18 -23
- package/dist/tasks/tasks.js +39 -36
- package/dist/templates/export-map-html.js +4 -233
- package/dist/utils/aggregate-utils.js +16 -13
- package/dist/utils/color-utils.js +37 -29
- package/dist/utils/custom-scales.js +3 -3
- package/dist/utils/data-scale-utils.js +13 -6
- package/dist/utils/data-utils.js +83 -60
- package/dist/utils/dataset-utils.js +77 -48
- package/dist/utils/dom-to-image.js +163 -108
- package/dist/utils/dom-utils.js +105 -88
- package/dist/utils/export-utils.js +103 -116
- package/dist/utils/filter-utils.js +374 -379
- package/dist/utils/gl-utils.js +15 -16
- package/dist/utils/gpu-filter-utils.js +73 -54
- package/dist/utils/index.js +48 -47
- package/dist/utils/interaction-utils.js +46 -53
- package/dist/utils/layer-utils.js +78 -89
- package/dist/utils/locale-utils.js +16 -24
- package/dist/utils/map-style-utils/mapbox-gl-style-editor.js +76 -67
- package/dist/utils/map-style-utils/mapbox-utils.js +3 -4
- package/dist/utils/mapbox-utils.js +4 -3
- package/dist/utils/notifications-utils.js +38 -33
- package/dist/utils/observe-dimensions.js +54 -42
- package/dist/utils/projection-utils.js +11 -14
- package/dist/utils/split-map-utils.js +33 -30
- package/dist/utils/table-utils/data-container-utils.js +14 -15
- package/dist/utils/table-utils/data-row.js +65 -58
- package/dist/utils/table-utils/index.js +2 -2
- package/dist/utils/table-utils/indexed-data-container.js +173 -105
- package/dist/utils/table-utils/kepler-table.js +386 -362
- package/dist/utils/table-utils/row-data-container.js +164 -99
- package/dist/utils/utils.js +30 -29
- package/package.json +1 -1
|
@@ -35,9 +35,11 @@ var _actionTypes = _interopRequireDefault(require("../constants/action-types"));
|
|
|
35
35
|
* @param id id of side panel to be shown, one of `layer`, `filter`, `interaction`, `map`
|
|
36
36
|
* @public
|
|
37
37
|
*/
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
var toggleSidePanel = exports.toggleSidePanel = (0, _toolkit.createAction)(_actionTypes["default"].TOGGLE_SIDE_PANEL, function (id) {
|
|
39
|
+
return {
|
|
40
|
+
payload: id
|
|
41
|
+
};
|
|
42
|
+
});
|
|
41
43
|
|
|
42
44
|
/** TOGGLE_MODAL */
|
|
43
45
|
|
|
@@ -53,9 +55,11 @@ const toggleSidePanel = exports.toggleSidePanel = (0, _toolkit.createAction)(_ac
|
|
|
53
55
|
* - [`ADD_MAP_STYLE_ID`](../constants/default-settings.md#add_map_style_id)
|
|
54
56
|
* @public
|
|
55
57
|
*/
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
58
|
+
var toggleModal = exports.toggleModal = (0, _toolkit.createAction)(_actionTypes["default"].TOGGLE_MODAL, function (id) {
|
|
59
|
+
return {
|
|
60
|
+
payload: id
|
|
61
|
+
};
|
|
62
|
+
});
|
|
59
63
|
|
|
60
64
|
/** SHOW_EXPORT_DROPDOWN */
|
|
61
65
|
|
|
@@ -65,16 +69,18 @@ const toggleModal = exports.toggleModal = (0, _toolkit.createAction)(_actionType
|
|
|
65
69
|
* @param id - id of the dropdown
|
|
66
70
|
* @public
|
|
67
71
|
*/
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
72
|
+
var showExportDropdown = exports.showExportDropdown = (0, _toolkit.createAction)(_actionTypes["default"].SHOW_EXPORT_DROPDOWN, function (id) {
|
|
73
|
+
return {
|
|
74
|
+
payload: id
|
|
75
|
+
};
|
|
76
|
+
});
|
|
71
77
|
|
|
72
78
|
/**
|
|
73
79
|
* Hide side panel header dropdown, activated by clicking the share link on top of the side panel
|
|
74
80
|
* @memberof uiStateActions
|
|
75
81
|
* @public
|
|
76
82
|
*/
|
|
77
|
-
|
|
83
|
+
var hideExportDropdown = exports.hideExportDropdown = (0, _toolkit.createAction)(_actionTypes["default"].HIDE_EXPORT_DROPDOWN);
|
|
78
84
|
|
|
79
85
|
/** TOGGLE_MAP_CONTROL */
|
|
80
86
|
|
|
@@ -84,12 +90,14 @@ const hideExportDropdown = exports.hideExportDropdown = (0, _toolkit.createActio
|
|
|
84
90
|
* @param panelId - map control panel id, one of the keys of: [`DEFAULT_MAP_CONTROLS`](#default_map_controls)
|
|
85
91
|
* @public
|
|
86
92
|
*/
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
+
var toggleMapControl = exports.toggleMapControl = (0, _toolkit.createAction)(_actionTypes["default"].TOGGLE_MAP_CONTROL, function (panelId, index) {
|
|
94
|
+
return {
|
|
95
|
+
payload: {
|
|
96
|
+
panelId: panelId,
|
|
97
|
+
index: index
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
});
|
|
93
101
|
|
|
94
102
|
/** SET_MAP_CONTROL_VISIBILITY */
|
|
95
103
|
|
|
@@ -99,12 +107,14 @@ const toggleMapControl = exports.toggleMapControl = (0, _toolkit.createAction)(_
|
|
|
99
107
|
* @param panelId - map control panel id, one of the keys of: [`DEFAULT_MAP_CONTROLS`](#default_map_controls)
|
|
100
108
|
* @public
|
|
101
109
|
*/
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
}
|
|
110
|
+
var setMapControlVisibility = exports.setMapControlVisibility = (0, _toolkit.createAction)(_actionTypes["default"].SET_MAP_CONTROL_VISIBILITY, function (panelId, show) {
|
|
111
|
+
return {
|
|
112
|
+
payload: {
|
|
113
|
+
panelId: panelId,
|
|
114
|
+
show: show
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
});
|
|
108
118
|
|
|
109
119
|
/** OPEN_DELETE_MODAL */
|
|
110
120
|
|
|
@@ -114,9 +124,11 @@ const setMapControlVisibility = exports.setMapControlVisibility = (0, _toolkit.c
|
|
|
114
124
|
* @param datasetId - `id` of the dataset to be deleted
|
|
115
125
|
* @public
|
|
116
126
|
*/
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
127
|
+
var openDeleteModal = exports.openDeleteModal = (0, _toolkit.createAction)(_actionTypes["default"].OPEN_DELETE_MODAL, function (datasetId) {
|
|
128
|
+
return {
|
|
129
|
+
payload: datasetId
|
|
130
|
+
};
|
|
131
|
+
});
|
|
120
132
|
|
|
121
133
|
/** ADD_NOTIFICATION */
|
|
122
134
|
|
|
@@ -127,9 +139,11 @@ const openDeleteModal = exports.openDeleteModal = (0, _toolkit.createAction)(_ac
|
|
|
127
139
|
* @param notification - The `notification` object to be added or updated
|
|
128
140
|
* @public
|
|
129
141
|
*/
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
142
|
+
var addNotification = exports.addNotification = (0, _toolkit.createAction)(_actionTypes["default"].ADD_NOTIFICATION, function (notification) {
|
|
143
|
+
return {
|
|
144
|
+
payload: notification
|
|
145
|
+
};
|
|
146
|
+
});
|
|
133
147
|
|
|
134
148
|
/** REMOVE_NOTIFICATION */
|
|
135
149
|
|
|
@@ -139,9 +153,11 @@ const addNotification = exports.addNotification = (0, _toolkit.createAction)(_ac
|
|
|
139
153
|
* @param id - `id` of the notification to be removed
|
|
140
154
|
* @public
|
|
141
155
|
*/
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
156
|
+
var removeNotification = exports.removeNotification = (0, _toolkit.createAction)(_actionTypes["default"].REMOVE_NOTIFICATION, function (id) {
|
|
157
|
+
return {
|
|
158
|
+
payload: id
|
|
159
|
+
};
|
|
160
|
+
});
|
|
145
161
|
|
|
146
162
|
/** SET_EXPORT_IMAGE_SETTING */
|
|
147
163
|
|
|
@@ -151,18 +167,22 @@ const removeNotification = exports.removeNotification = (0, _toolkit.createActio
|
|
|
151
167
|
* @param newSetting - {ratio: '1x'}
|
|
152
168
|
* @public
|
|
153
169
|
*/
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
170
|
+
var setExportImageSetting = exports.setExportImageSetting = (0, _toolkit.createAction)(_actionTypes["default"].SET_EXPORT_IMAGE_SETTING, function (newSetting) {
|
|
171
|
+
return {
|
|
172
|
+
payload: newSetting
|
|
173
|
+
};
|
|
174
|
+
});
|
|
157
175
|
|
|
158
176
|
/**
|
|
159
177
|
* Start exporting image flow
|
|
160
178
|
* @memberof uiStateActions
|
|
161
179
|
* @public
|
|
162
180
|
*/
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
181
|
+
var startExportingImage = exports.startExportingImage = (0, _toolkit.createAction)(_actionTypes["default"].START_EXPORTING_IMAGE, function (payload) {
|
|
182
|
+
return {
|
|
183
|
+
payload: payload
|
|
184
|
+
};
|
|
185
|
+
});
|
|
166
186
|
|
|
167
187
|
/** SET_EXPORT_IMAGE_DATA_URI */
|
|
168
188
|
|
|
@@ -172,9 +192,11 @@ const startExportingImage = exports.startExportingImage = (0, _toolkit.createAct
|
|
|
172
192
|
* @param dataUri - export image data uri
|
|
173
193
|
* @public
|
|
174
194
|
*/
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
195
|
+
var setExportImageDataUri = exports.setExportImageDataUri = (0, _toolkit.createAction)(_actionTypes["default"].SET_EXPORT_IMAGE_DATA_URI, function (dataUri) {
|
|
196
|
+
return {
|
|
197
|
+
payload: dataUri
|
|
198
|
+
};
|
|
199
|
+
});
|
|
178
200
|
|
|
179
201
|
/** SET_EXPORT_IMAGE_ERROR */
|
|
180
202
|
|
|
@@ -183,16 +205,18 @@ const setExportImageDataUri = exports.setExportImageDataUri = (0, _toolkit.creat
|
|
|
183
205
|
* @memberof uiStateActions
|
|
184
206
|
* @public
|
|
185
207
|
*/
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
208
|
+
var setExportImageError = exports.setExportImageError = (0, _toolkit.createAction)(_actionTypes["default"].SET_EXPORT_IMAGE_ERROR, function (error) {
|
|
209
|
+
return {
|
|
210
|
+
payload: error
|
|
211
|
+
};
|
|
212
|
+
});
|
|
189
213
|
|
|
190
214
|
/**
|
|
191
215
|
* Delete cached export image
|
|
192
216
|
* @memberof uiStateActions
|
|
193
217
|
* @public
|
|
194
218
|
*/
|
|
195
|
-
|
|
219
|
+
var cleanupExportImage = exports.cleanupExportImage = (0, _toolkit.createAction)(_actionTypes["default"].CLEANUP_EXPORT_IMAGE);
|
|
196
220
|
|
|
197
221
|
/** SET_EXPORT_SELECTED_DATASET */
|
|
198
222
|
|
|
@@ -202,9 +226,11 @@ const cleanupExportImage = exports.cleanupExportImage = (0, _toolkit.createActio
|
|
|
202
226
|
* @param datasetId - dataset id
|
|
203
227
|
* @public
|
|
204
228
|
*/
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
229
|
+
var setExportSelectedDataset = exports.setExportSelectedDataset = (0, _toolkit.createAction)(_actionTypes["default"].SET_EXPORT_SELECTED_DATASET, function (datasetId) {
|
|
230
|
+
return {
|
|
231
|
+
payload: datasetId
|
|
232
|
+
};
|
|
233
|
+
});
|
|
208
234
|
|
|
209
235
|
/** SET_EXPORT_DATA_TYPE */
|
|
210
236
|
|
|
@@ -214,9 +240,11 @@ const setExportSelectedDataset = exports.setExportSelectedDataset = (0, _toolkit
|
|
|
214
240
|
* @param dataType - one of `'text/csv'`
|
|
215
241
|
* @public
|
|
216
242
|
*/
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
243
|
+
var setExportDataType = exports.setExportDataType = (0, _toolkit.createAction)(_actionTypes["default"].SET_EXPORT_DATA_TYPE, function (dataType) {
|
|
244
|
+
return {
|
|
245
|
+
payload: dataType
|
|
246
|
+
};
|
|
247
|
+
});
|
|
220
248
|
|
|
221
249
|
/** SET_EXPORT_FILTERED */
|
|
222
250
|
|
|
@@ -226,16 +254,18 @@ const setExportDataType = exports.setExportDataType = (0, _toolkit.createAction)
|
|
|
226
254
|
* @param payload - set `true` to ony export filtered data
|
|
227
255
|
* @public
|
|
228
256
|
*/
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
257
|
+
var setExportFiltered = exports.setExportFiltered = (0, _toolkit.createAction)(_actionTypes["default"].SET_EXPORT_FILTERED, function (payload) {
|
|
258
|
+
return {
|
|
259
|
+
payload: payload
|
|
260
|
+
};
|
|
261
|
+
});
|
|
232
262
|
|
|
233
263
|
/**
|
|
234
264
|
* Whether to including data in map config, toggle between `true` or `false`
|
|
235
265
|
* @memberof uiStateActions
|
|
236
266
|
* @public
|
|
237
267
|
*/
|
|
238
|
-
|
|
268
|
+
var setExportData = exports.setExportData = (0, _toolkit.createAction)(_actionTypes["default"].SET_EXPORT_DATA);
|
|
239
269
|
|
|
240
270
|
/** SET_USER_MAPBOX_ACCESS_TOKEN */
|
|
241
271
|
|
|
@@ -245,9 +275,11 @@ const setExportData = exports.setExportData = (0, _toolkit.createAction)(_action
|
|
|
245
275
|
* @param payload - mapbox access token
|
|
246
276
|
* @public
|
|
247
277
|
*/
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
278
|
+
var setUserMapboxAccessToken = exports.setUserMapboxAccessToken = (0, _toolkit.createAction)(_actionTypes["default"].SET_USER_MAPBOX_ACCESS_TOKEN, function (payload) {
|
|
279
|
+
return {
|
|
280
|
+
payload: payload
|
|
281
|
+
};
|
|
282
|
+
});
|
|
251
283
|
|
|
252
284
|
/** SET_EXPORT_MAP_FORMAT */
|
|
253
285
|
|
|
@@ -257,9 +289,11 @@ const setUserMapboxAccessToken = exports.setUserMapboxAccessToken = (0, _toolkit
|
|
|
257
289
|
* @param payload - map format
|
|
258
290
|
* @public
|
|
259
291
|
*/
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
292
|
+
var setExportMapFormat = exports.setExportMapFormat = (0, _toolkit.createAction)(_actionTypes["default"].SET_EXPORT_MAP_FORMAT, function (payload) {
|
|
293
|
+
return {
|
|
294
|
+
payload: payload
|
|
295
|
+
};
|
|
296
|
+
});
|
|
263
297
|
|
|
264
298
|
/** SET_EXPORT_MAP_HTML_MODE */
|
|
265
299
|
|
|
@@ -268,9 +302,11 @@ const setExportMapFormat = exports.setExportMapFormat = (0, _toolkit.createActio
|
|
|
268
302
|
* @memberOf uiStateActions
|
|
269
303
|
* @param payload - map mode
|
|
270
304
|
*/
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
305
|
+
var setExportHTMLMapMode = exports.setExportHTMLMapMode = (0, _toolkit.createAction)(_actionTypes["default"].SET_EXPORT_MAP_HTML_MODE, function (payload) {
|
|
306
|
+
return {
|
|
307
|
+
payload: payload
|
|
308
|
+
};
|
|
309
|
+
});
|
|
274
310
|
|
|
275
311
|
/** SET_LOCALE */
|
|
276
312
|
|
|
@@ -280,11 +316,13 @@ const setExportHTMLMapMode = exports.setExportHTMLMapMode = (0, _toolkit.createA
|
|
|
280
316
|
* @param locale - locale of the UI
|
|
281
317
|
* @public
|
|
282
318
|
*/
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
}
|
|
319
|
+
var setLocale = exports.setLocale = (0, _toolkit.createAction)(_actionTypes["default"].SET_LOCALE, function (locale) {
|
|
320
|
+
return {
|
|
321
|
+
payload: {
|
|
322
|
+
locale: locale
|
|
323
|
+
}
|
|
324
|
+
};
|
|
325
|
+
});
|
|
288
326
|
|
|
289
327
|
/** TOGGLE_LAYER_PANEL_LIST_VIEW */
|
|
290
328
|
|
|
@@ -294,9 +332,11 @@ const setLocale = exports.setLocale = (0, _toolkit.createAction)(_actionTypes.de
|
|
|
294
332
|
* @param listView layer panel listView value. Can be 'list' or 'sortByDataset'
|
|
295
333
|
* @public
|
|
296
334
|
*/
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
335
|
+
var toggleLayerPanelListView = exports.toggleLayerPanelListView = (0, _toolkit.createAction)(_actionTypes["default"].TOGGLE_LAYER_PANEL_LIST_VIEW, function (listView) {
|
|
336
|
+
return {
|
|
337
|
+
payload: listView
|
|
338
|
+
};
|
|
339
|
+
});
|
|
300
340
|
|
|
301
341
|
/**
|
|
302
342
|
* This declaration is needed to group actions in docs
|
|
@@ -311,6 +351,6 @@ const toggleLayerPanelListView = exports.toggleLayerPanelListView = (0, _toolkit
|
|
|
311
351
|
*/
|
|
312
352
|
/* eslint-disable no-unused-vars */
|
|
313
353
|
// @ts-ignore
|
|
314
|
-
|
|
354
|
+
var uiStateActions = null;
|
|
315
355
|
/* eslint-enable no-unused-vars */
|
|
316
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9vbGtpdCIsInJlcXVpcmUiLCJfYWN0aW9uVHlwZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwidG9nZ2xlU2lkZVBhbmVsIiwiZXhwb3J0cyIsImNyZWF0ZUFjdGlvbiIsIkFjdGlvblR5cGVzIiwiVE9HR0xFX1NJREVfUEFORUwiLCJpZCIsInBheWxvYWQiLCJ0b2dnbGVNb2RhbCIsIlRPR0dMRV9NT0RBTCIsInNob3dFeHBvcnREcm9wZG93biIsIlNIT1dfRVhQT1JUX0RST1BET1dOIiwiaGlkZUV4cG9ydERyb3Bkb3duIiwiSElERV9FWFBPUlRfRFJPUERPV04iLCJ0b2dnbGVNYXBDb250cm9sIiwiVE9HR0xFX01BUF9DT05UUk9MIiwicGFuZWxJZCIsImluZGV4Iiwic2V0TWFwQ29udHJvbFZpc2liaWxpdHkiLCJTRVRfTUFQX0NPTlRST0xfVklTSUJJTElUWSIsInNob3ciLCJvcGVuRGVsZXRlTW9kYWwiLCJPUEVOX0RFTEVURV9NT0RBTCIsImRhdGFzZXRJZCIsImFkZE5vdGlmaWNhdGlvbiIsIkFERF9OT1RJRklDQVRJT04iLCJub3RpZmljYXRpb24iLCJyZW1vdmVOb3RpZmljYXRpb24iLCJSRU1PVkVfTk9USUZJQ0FUSU9OIiwic2V0RXhwb3J0SW1hZ2VTZXR0aW5nIiwiU0VUX0VYUE9SVF9JTUFHRV9TRVRUSU5HIiwibmV3U2V0dGluZyIsInN0YXJ0RXhwb3J0aW5nSW1hZ2UiLCJTVEFSVF9FWFBPUlRJTkdfSU1BR0UiLCJzZXRFeHBvcnRJbWFnZURhdGFVcmkiLCJTRVRfRVhQT1JUX0lNQUdFX0RBVEFfVVJJIiwiZGF0YVVyaSIsInNldEV4cG9ydEltYWdlRXJyb3IiLCJTRVRfRVhQT1JUX0lNQUdFX0VSUk9SIiwiZXJyb3IiLCJjbGVhbnVwRXhwb3J0SW1hZ2UiLCJDTEVBTlVQX0VYUE9SVF9JTUFHRSIsInNldEV4cG9ydFNlbGVjdGVkRGF0YXNldCIsIlNFVF9FWFBPUlRfU0VMRUNURURfREFUQVNFVCIsInNldEV4cG9ydERhdGFUeXBlIiwiU0VUX0VYUE9SVF9EQVRBX1RZUEUiLCJkYXRhVHlwZSIsInNldEV4cG9ydEZpbHRlcmVkIiwiU0VUX0VYUE9SVF9GSUxURVJFRCIsInNldEV4cG9ydERhdGEiLCJTRVRfRVhQT1JUX0RBVEEiLCJzZXRVc2VyTWFwYm94QWNjZXNzVG9rZW4iLCJTRVRfVVNFUl9NQVBCT1hfQUNDRVNTX1RPS0VOIiwic2V0RXhwb3J0TWFwRm9ybWF0IiwiU0VUX0VYUE9SVF9NQVBfRk9STUFUIiwic2V0RXhwb3J0SFRNTE1hcE1vZGUiLCJTRVRfRVhQT1JUX01BUF9IVE1MX01PREUiLCJzZXRMb2NhbGUiLCJTRVRfTE9DQUxFIiwibG9jYWxlIiwidG9nZ2xlTGF5ZXJQYW5lbExpc3RWaWV3IiwiVE9HR0xFX0xBWUVSX1BBTkVMX0xJU1RfVklFVyIsImxpc3RWaWV3IiwidWlTdGF0ZUFjdGlvbnMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYWN0aW9ucy91aS1zdGF0ZS1hY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7Y3JlYXRlQWN0aW9ufSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcbmltcG9ydCBBY3Rpb25UeXBlcyBmcm9tICdjb25zdGFudHMvYWN0aW9uLXR5cGVzJztcbmltcG9ydCB7TWVyZ2V9IGZyb20gJy4uL3JlZHVjZXJzL3R5cGVzJztcbmltcG9ydCB7RXhwb3J0SW1hZ2V9IGZyb20gJy4uL3JlZHVjZXJzL3VpLXN0YXRlLXVwZGF0ZXJzJztcblxuLyoqIFRPR0dMRV9TSURFX1BBTkVMICovXG5leHBvcnQgdHlwZSBUb2dnbGVTaWRlUGFuZWxVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGlkICBpZCBvZiBzaWRlIHBhbmVsIHRvIGJlIHNob3duLCBvbmUgb2YgYGxheWVyYCwgYGZpbHRlcmAsIGBpbnRlcmFjdGlvbmAsIGBtYXBgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTaWRlUGFuZWw6IChcbiAgaWQ6IHN0cmluZ1xuKSA9PiBNZXJnZTxcbiAgVG9nZ2xlU2lkZVBhbmVsVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfU0lERV9QQU5FTH1cbj4gPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuVE9HR0xFX1NJREVfUEFORUwsIChpZDogc3RyaW5nKSA9PiAoe3BheWxvYWQ6IGlkfSkpO1xuXG4vKiogVE9HR0xFX01PREFMICovXG5leHBvcnQgdHlwZSBUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZyB8IG51bGw7XG59O1xuLyoqXG4gKiBTaG93IGFuZCBoaWRlIG1vZGFsIGRpYWxvZ1xuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWQgLSBpZCBvZiBtb2RhbCB0byBiZSBzaG93biwgbnVsbCB0byBoaWRlIG1vZGFscy4gT25lIG9mOlxuICogIC0gW2BEQVRBX1RBQkxFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZGF0YV90YWJsZV9pZClcbiAqICAtIFtgREVMRVRFX0RBVEFfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNkZWxldGVfZGF0YV9pZClcbiAqICAtIFtgQUREX0RBVEFfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNhZGRfZGF0YV9pZClcbiAqICAtIFtgRVhQT1JUX0lNQUdFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZXhwb3J0X2ltYWdlX2lkKVxuICogIC0gW2BFWFBPUlRfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2V4cG9ydF9kYXRhX2lkKVxuICogIC0gW2BBRERfTUFQX1NUWUxFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjYWRkX21hcF9zdHlsZV9pZClcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZU1vZGFsOiAoXG4gIGlkOiBUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVE9HR0xFX01PREFMfT4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlRPR0dMRV9NT0RBTCxcbiAgKGlkOiBUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtcbiAgICBwYXlsb2FkOiBpZFxuICB9KVxuKTtcblxuLyoqIFNIT1dfRVhQT1JUX0RST1BET1dOICovXG5leHBvcnQgdHlwZSBTaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBIaWRlIGFuZCBzaG93IHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZCAtIGlkIG9mIHRoZSBkcm9wZG93blxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2hvd0V4cG9ydERyb3Bkb3duOiAoXG4gIGlkOiBTaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFNob3dFeHBvcnREcm9wZG93blVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0hPV19FWFBPUlRfRFJPUERPV059XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TSE9XX0VYUE9SVF9EUk9QRE9XTixcbiAgKGlkOiBTaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uWydwYXlsb2FkJ10pID0+ICh7cGF5bG9hZDogaWR9KVxuKTtcblxuLyoqXG4gKiBIaWRlIHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGhpZGVFeHBvcnREcm9wZG93bjogKCkgPT4ge1xuICB0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuSElERV9FWFBPUlRfRFJPUERPV047XG59ID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLkhJREVfRVhQT1JUX0RST1BET1dOKTtcblxuLyoqIFRPR0dMRV9NQVBfQ09OVFJPTCAqL1xuZXhwb3J0IHR5cGUgVG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHtcbiAgICBwYW5lbElkOiBzdHJpbmc7XG4gICAgaW5kZXg6IG51bWJlcjtcbiAgfTtcbn07XG4vKipcbiAqIFRvZ2dsZSBhY3RpdmUgbWFwIGNvbnRyb2wgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBhbmVsSWQgLSBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTWFwQ29udHJvbDogKFxuICBwYW5lbElkOiBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblsncGF5bG9hZCddWydwYW5lbElkJ10sXG4gIGluZGV4OiBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblsncGF5bG9hZCddWydpbmRleCddXG4pID0+IE1lcmdlPFxuICBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfTUFQX0NPTlRST0x9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5UT0dHTEVfTUFQX0NPTlRST0wsXG4gIChcbiAgICBwYW5lbElkOiBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblsncGF5bG9hZCddWydwYW5lbElkJ10sXG4gICAgaW5kZXg6IFRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ2luZGV4J11cbiAgKSA9PiAoe1xuICAgIHBheWxvYWQ6IHtcbiAgICAgIHBhbmVsSWQsXG4gICAgICBpbmRleFxuICAgIH1cbiAgfSlcbik7XG5cbi8qKiBTRVRfTUFQX0NPTlRST0xfVklTSUJJTElUWSAqL1xuZXhwb3J0IHR5cGUgc2V0TWFwQ29udHJvbFZpc2liaWxpdHlVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiB7XG4gICAgcGFuZWxJZDogc3RyaW5nO1xuICAgIHNob3c6IGJvb2xlYW47XG4gIH07XG59O1xuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIG1hcCBjb250cm9sIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwYW5lbElkIC0gbWFwIGNvbnRyb2wgcGFuZWwgaWQsIG9uZSBvZiB0aGUga2V5cyBvZjogW2BERUZBVUxUX01BUF9DT05UUk9MU2BdKCNkZWZhdWx0X21hcF9jb250cm9scylcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5OiAoXG4gIHBhbmVsSWQ6IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlckFjdGlvblsncGF5bG9hZCddWydwYW5lbElkJ10sXG4gIHNob3c6IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlckFjdGlvblsncGF5bG9hZCddWydzaG93J11cbikgPT4gTWVyZ2U8XG4gIHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfTUFQX0NPTlRST0xfVklTSUJJTElUWX1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9NQVBfQ09OVFJPTF9WSVNJQklMSVRZLFxuICAoXG4gICAgcGFuZWxJZDogc2V0TWFwQ29udHJvbFZpc2liaWxpdHlVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ3BhbmVsSWQnXSxcbiAgICBzaG93OiBzZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVsnc2hvdyddXG4gICkgPT4gKHtcbiAgICBwYXlsb2FkOiB7XG4gICAgICBwYW5lbElkLFxuICAgICAgc2hvd1xuICAgIH1cbiAgfSlcbik7XG5cbi8qKiBPUEVOX0RFTEVURV9NT0RBTCAqL1xuZXhwb3J0IHR5cGUgT3BlbkRlbGV0ZU1vZGFsVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogc3RyaW5nO1xufTtcbi8qKlxuICogVG9nZ2xlIGFjdGl2ZSBtYXAgY29udHJvbCBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YXNldElkIC0gYGlkYCBvZiB0aGUgZGF0YXNldCB0byBiZSBkZWxldGVkXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBvcGVuRGVsZXRlTW9kYWw6IChcbiAgZGF0YXNldElkOiBPcGVuRGVsZXRlTW9kYWxVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIE9wZW5EZWxldGVNb2RhbFVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuT1BFTl9ERUxFVEVfTU9EQUx9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5PUEVOX0RFTEVURV9NT0RBTCxcbiAgKGRhdGFzZXRJZDogT3BlbkRlbGV0ZU1vZGFsVXBkYXRlckFjdGlvblsncGF5bG9hZCddKSA9PiAoe3BheWxvYWQ6IGRhdGFzZXRJZH0pXG4pO1xuXG4vKiogQUREX05PVElGSUNBVElPTiAqL1xuZXhwb3J0IHR5cGUgQWRkTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogb2JqZWN0O1xufTtcbi8qKlxuICogQWRkIGEgbm90aWZpY2F0aW9uIHRvIGJlIGRpc3BsYXllZC5cbiAqIEV4aXN0aW5nIG5vdGlmaWNhdGlvbiB3aWxsIGJlIHVwZGF0ZWQgaW4gY2FzZSBvZiBtYXRjaGluZyBpZC5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIG5vdGlmaWNhdGlvbiAtIFRoZSBgbm90aWZpY2F0aW9uYCBvYmplY3QgdG8gYmUgYWRkZWQgb3IgdXBkYXRlZFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgYWRkTm90aWZpY2F0aW9uOiAoXG4gIG5vdGlmaWNhdGlvbjogQWRkTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBBZGROb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uLFxuICB7XG4gICAgdHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkFERF9OT1RJRklDQVRJT047XG4gIH1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLkFERF9OT1RJRklDQVRJT04sXG4gIChub3RpZmljYXRpb246IEFkZE5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBub3RpZmljYXRpb259KVxuKTtcblxuLyoqIFJFTU9WRV9OT1RJRklDQVRJT04gKi9cbmV4cG9ydCB0eXBlIFJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFJlbW92ZSBhIG5vdGlmaWNhdGlvblxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWQgLSBgaWRgIG9mIHRoZSBub3RpZmljYXRpb24gdG8gYmUgcmVtb3ZlZFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVtb3ZlTm90aWZpY2F0aW9uOiAoXG4gIGlkOiBSZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuUkVNT1ZFX05PVElGSUNBVElPTn1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlJFTU9WRV9OT1RJRklDQVRJT04sXG4gIChpZDogUmVtb3ZlTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvblsncGF5bG9hZCddKSA9PiAoe3BheWxvYWQ6IGlkfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX0lNQUdFX1NFVFRJTkcgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IFBhcnRpYWw8RXhwb3J0SW1hZ2U+O1xufTtcbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZWAgc2V0dGluZ3M6IHJhdGlvLCByZXNvbHV0aW9uLCBsZWdlbmRcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIG5ld1NldHRpbmcgLSB7cmF0aW86ICcxeCd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZVNldHRpbmc6IChcbiAgbmV3U2V0dGluZzogU2V0RXhwb3J0SW1hZ2VTZXR0aW5nVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU1BR0VfU0VUVElOR31cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU1BR0VfU0VUVElORyxcbiAgKG5ld1NldHRpbmc6IFNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBuZXdTZXR0aW5nfSlcbik7XG5cbi8qKlxuICogU3RhcnQgZXhwb3J0aW5nIGltYWdlIGZsb3dcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc3RhcnRFeHBvcnRpbmdJbWFnZTogKG9wdGlvbnM/OiB7XG4gIHJhdGlvPzogc3RyaW5nO1xuICByZXNvbHV0aW9uPzogc3RyaW5nO1xuICBsZWdlbmQ/OiBzdHJpbmc7XG4gIGNlbnRlcj86IGJvb2xlYW47XG59KSA9PiBNZXJnZTxcbiAgU2V0RXhwb3J0SW1hZ2VTZXR0aW5nVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TVEFSVF9FWFBPUlRJTkdfSU1BR0V9XG4+ID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLlNUQVJUX0VYUE9SVElOR19JTUFHRSwgKHBheWxvYWQ6IGFueSkgPT4gKHtwYXlsb2FkfSkpO1xuXG4vKiogU0VUX0VYUE9SVF9JTUFHRV9EQVRBX1VSSSAqL1xuZXhwb3J0IHR5cGUgU2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogc3RyaW5nO1xufTtcbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZS5zZXRFeHBvcnRJbWFnZURhdGFVcmlgIHRvIGEgZGF0YVVyaVxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YVVyaSAtIGV4cG9ydCBpbWFnZSBkYXRhIHVyaVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SW1hZ2VEYXRhVXJpOiAoXG4gIGRhdGFVcmk6IFNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgU2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0lNQUdFX0RBVEFfVVJJfVxuPiA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9JTUFHRV9EQVRBX1VSSSxcbiAgKGRhdGFVcmk6IFNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBkYXRhVXJpfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX0lNQUdFX0VSUk9SICovXG5leHBvcnQgdHlwZSBTZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogRXJyb3I7XG59O1xuLyoqXG4gKiBTZXQgRXhwb3J0IGltYWdlIGVycm9yXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydEltYWdlRXJyb3I6IChcbiAgZXJyb3I6IFNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU1BR0VfRVJST1J9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0lNQUdFX0VSUk9SLFxuICAoZXJyb3I6IFNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ10pID0+ICh7cGF5bG9hZDogZXJyb3J9KVxuKTtcblxuLyoqXG4gKiBEZWxldGUgY2FjaGVkIGV4cG9ydCBpbWFnZVxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBjbGVhbnVwRXhwb3J0SW1hZ2U6ICgpID0+IHtcbiAgdHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkNMRUFOVVBfRVhQT1JUX0lNQUdFO1xufSA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5DTEVBTlVQX0VYUE9SVF9JTUFHRSk7XG5cbi8qKiBTRVRfRVhQT1JUX1NFTEVDVEVEX0RBVEFTRVQgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFNldCBzZWxlY3RlZCBkYXRhc2V0IGZvciBleHBvcnRcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFzZXRJZCAtIGRhdGFzZXQgaWRcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydFNlbGVjdGVkRGF0YXNldDogKFxuICBkYXRhc2V0SWQ6IFNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgU2V0RXhwb3J0U2VsZWN0ZWREYXRhc2V0VXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX1NFTEVDVEVEX0RBVEFTRVR9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX1NFTEVDVEVEX0RBVEFTRVQsXG4gIChkYXRhc2V0SWQ6IFNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBkYXRhc2V0SWR9KVxuKTtcblxuLyoqIFNFVF9FWFBPUlRfREFUQV9UWVBFICovXG5leHBvcnQgdHlwZSBTZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFNldCBkYXRhIGZvcm1hdCBmb3IgZXhwb3J0aW5nIGRhdGFcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFUeXBlIC0gb25lIG9mIGAndGV4dC9jc3YnYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RGF0YVR5cGU6IChcbiAgZGF0YVR5cGU6IFNldEV4cG9ydERhdGFUeXBlVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9EQVRBX1RZUEV9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0RBVEFfVFlQRSxcbiAgKGRhdGFUeXBlOiBTZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBkYXRhVHlwZX0pXG4pO1xuXG4vKiogU0VUX0VYUE9SVF9GSUxURVJFRCAqL1xuZXhwb3J0IHR5cGUgU2V0RXhwb3J0RmlsdGVyZWRVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiBib29sZWFuO1xufTtcbi8qKlxuICogV2hldGhlciB0byBleHBvcnQgZmlsdGVyZWQgZGF0YSwgYHRydWVgIG9yIGBmYWxzZWBcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBheWxvYWQgLSBzZXQgYHRydWVgIHRvIG9ueSBleHBvcnQgZmlsdGVyZWQgZGF0YVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RmlsdGVyZWQ6IChcbiAgZXhwb3J0RmlsdGVyZWQ6IFNldEV4cG9ydEZpbHRlcmVkVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9GSUxURVJFRH1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfRklMVEVSRUQsXG4gIChwYXlsb2FkOiBTZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKlxuICogV2hldGhlciB0byBpbmNsdWRpbmcgZGF0YSBpbiBtYXAgY29uZmlnLCB0b2dnbGUgYmV0d2VlbiBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnREYXRhOiAoKSA9PiB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfREFUQX0gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfREFUQVxuKTtcblxuLyoqIFNFVF9VU0VSX01BUEJPWF9BQ0NFU1NfVE9LRU4gKi9cbmV4cG9ydCB0eXBlIFNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFdoZXRoZXIgd2UgZXhwb3J0IGEgbWFwYm94IGFjY2VzcyB0b2tlbiB1c2VkIHRvIGNyZWF0ZSBhIHNpbmdsZSBtYXAgaHRtbCBmaWxlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwYXlsb2FkIC0gbWFwYm94IGFjY2VzcyB0b2tlblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuOiAoXG4gIHBheWxvYWQ6IFNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgU2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfVVNFUl9NQVBCT1hfQUNDRVNTX1RPS0VOfVxuPiA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuU0VUX1VTRVJfTUFQQk9YX0FDQ0VTU19UT0tFTixcbiAgKHBheWxvYWQ6IFNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX01BUF9GT1JNQVQgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFNldCB0aGUgZXhwb3J0IG1hcCBmb3JtYXQgKGh0bWwsIGpzb24pXG4gKiBAbWVtYmVyT2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwYXlsb2FkIC0gbWFwIGZvcm1hdFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0TWFwRm9ybWF0OiAoXG4gIG1hcEZvcm1hdDogU2V0RXhwb3J0TWFwRm9ybWF0VXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfTUFQX0ZPUk1BVH1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfTUFQX0ZPUk1BVCxcbiAgKHBheWxvYWQ6IFNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX01BUF9IVE1MX01PREUgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydEhUTUxNYXBNb2RlVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogc3RyaW5nO1xufTtcbi8qKlxuICogU2V0IHRoZSBIVE1MIG1vZGUgdG8gdXNlIHRvIGV4cG9ydCBIVE1MIG1vZGVcbiAqIEBtZW1iZXJPZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBheWxvYWQgLSBtYXAgbW9kZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SFRNTE1hcE1vZGU6IChcbiAgbW9kZTogU2V0RXhwb3J0SFRNTE1hcE1vZGVVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFNldEV4cG9ydEhUTUxNYXBNb2RlVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX01BUF9IVE1MX01PREV9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX01BUF9IVE1MX01PREUsXG4gIChwYXlsb2FkOiBTZXRFeHBvcnRIVE1MTWFwTW9kZVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKiBTRVRfTE9DQUxFICovXG5leHBvcnQgdHlwZSBTZXRMb2NhbGVVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiB7bG9jYWxlOiBzdHJpbmd9O1xufTtcbi8qKlxuICogU2V0IGBsb2NhbGVgIHZhbHVlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBsb2NhbGUgLSBsb2NhbGUgb2YgdGhlIFVJXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRMb2NhbGU6IChcbiAgbG9jYWxlOiBTZXRMb2NhbGVVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ2xvY2FsZSddXG4pID0+IE1lcmdlPFNldExvY2FsZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0xPQ0FMRX0+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfTE9DQUxFLFxuICAobG9jYWxlOiBTZXRMb2NhbGVVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ2xvY2FsZSddKSA9PiAoe1xuICAgIHBheWxvYWQ6IHtcbiAgICAgIGxvY2FsZVxuICAgIH1cbiAgfSlcbik7XG5cbi8qKiBUT0dHTEVfTEFZRVJfUEFORUxfTElTVF9WSUVXICovXG5leHBvcnQgdHlwZSBUb2dnbGVMYXllclBhbmVsTGlzdFZpZXdBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFRvZ2dsZSBsYXllciBwYW5lbCBsaXN0IHZpZXdcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGxpc3RWaWV3IGxheWVyIHBhbmVsIGxpc3RWaWV3IHZhbHVlLiBDYW4gYmUgJ2xpc3QnIG9yICdzb3J0QnlEYXRhc2V0J1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTGF5ZXJQYW5lbExpc3RWaWV3OiAoXG4gIGxpc3RWaWV3OiBUb2dnbGVMYXllclBhbmVsTGlzdFZpZXdBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgVG9nZ2xlTGF5ZXJQYW5lbExpc3RWaWV3QWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlRPR0dMRV9MQVlFUl9QQU5FTF9MSVNUX1ZJRVd9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5UT0dHTEVfTEFZRVJfUEFORUxfTElTVF9WSUVXLFxuICAobGlzdFZpZXc6IFRvZ2dsZUxheWVyUGFuZWxMaXN0Vmlld0FjdGlvblsncGF5bG9hZCddKSA9PiAoe3BheWxvYWQ6IGxpc3RWaWV3fSlcbik7XG5cbi8qKlxuICogVGhpcyBkZWNsYXJhdGlvbiBpcyBuZWVkZWQgdG8gZ3JvdXAgYWN0aW9ucyBpbiBkb2NzXG4gKi9cbi8qKlxuICogQWN0aW9ucyBoYW5kbGVkIG1vc3RseSBieSAgYHVpU3RhdGVgIHJlZHVjZXIuXG4gKiBUaGV5IG1hbmFnZSBVSSBjaGFuZ2VzIGluIHRoYSBhcHAsIHN1Y2ggYXMgb3BlbiBhbmQgY2xvc2Ugc2lkZSBwYW5lbCxcbiAqIHN3aXRjaCBiZXR3ZWVuIHRhYnMgaW4gdGhlIHNpZGUgcGFuZWwsIG9wZW4gYW5kIGNsb3NlIG1vZGFsIGRpYWxvZyBmb3IgZXhwb3J0aW5nIGRhdGEgLyBpbWFnZXMgZXRjLlxuICogSXQgYWxzbyBtYW5nZXMgd2hpY2ggc2V0dGluZ3MgYXJlIHNlbGVjdGVkIGR1cmluZyBpbWFnZSBhbmQgbWFwIGV4cG9ydFxuICpcbiAqIEBwdWJsaWNcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IHVpU3RhdGVBY3Rpb25zID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQW9CQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBT0E7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUcsZUFLWixHQUFBQyxPQUFBLENBQUFELGVBQUEsR0FBRyxJQUFBRSxxQkFBWSxFQUFDQyxvQkFBVyxDQUFDQyxpQkFBaUIsRUFBR0MsRUFBVSxLQUFNO0VBQUNDLE9BQU8sRUFBRUQ7QUFBRSxDQUFDLENBQUMsQ0FBQzs7QUFFaEY7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUUsV0FFZ0UsR0FBQU4sT0FBQSxDQUFBTSxXQUFBLEdBQUcsSUFBQUwscUJBQVksRUFDMUZDLG9CQUFXLENBQUNLLFlBQVksRUFDdkJILEVBQXVDLEtBQU07RUFDNUNDLE9BQU8sRUFBRUQ7QUFDWCxDQUFDLENBQ0gsQ0FBQzs7QUFFRDs7QUFJQTtBQUNBO0FBQ0E7QUFD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
|
|
356
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9vbGtpdCIsInJlcXVpcmUiLCJfYWN0aW9uVHlwZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwidG9nZ2xlU2lkZVBhbmVsIiwiZXhwb3J0cyIsImNyZWF0ZUFjdGlvbiIsIkFjdGlvblR5cGVzIiwiVE9HR0xFX1NJREVfUEFORUwiLCJpZCIsInBheWxvYWQiLCJ0b2dnbGVNb2RhbCIsIlRPR0dMRV9NT0RBTCIsInNob3dFeHBvcnREcm9wZG93biIsIlNIT1dfRVhQT1JUX0RST1BET1dOIiwiaGlkZUV4cG9ydERyb3Bkb3duIiwiSElERV9FWFBPUlRfRFJPUERPV04iLCJ0b2dnbGVNYXBDb250cm9sIiwiVE9HR0xFX01BUF9DT05UUk9MIiwicGFuZWxJZCIsImluZGV4Iiwic2V0TWFwQ29udHJvbFZpc2liaWxpdHkiLCJTRVRfTUFQX0NPTlRST0xfVklTSUJJTElUWSIsInNob3ciLCJvcGVuRGVsZXRlTW9kYWwiLCJPUEVOX0RFTEVURV9NT0RBTCIsImRhdGFzZXRJZCIsImFkZE5vdGlmaWNhdGlvbiIsIkFERF9OT1RJRklDQVRJT04iLCJub3RpZmljYXRpb24iLCJyZW1vdmVOb3RpZmljYXRpb24iLCJSRU1PVkVfTk9USUZJQ0FUSU9OIiwic2V0RXhwb3J0SW1hZ2VTZXR0aW5nIiwiU0VUX0VYUE9SVF9JTUFHRV9TRVRUSU5HIiwibmV3U2V0dGluZyIsInN0YXJ0RXhwb3J0aW5nSW1hZ2UiLCJTVEFSVF9FWFBPUlRJTkdfSU1BR0UiLCJzZXRFeHBvcnRJbWFnZURhdGFVcmkiLCJTRVRfRVhQT1JUX0lNQUdFX0RBVEFfVVJJIiwiZGF0YVVyaSIsInNldEV4cG9ydEltYWdlRXJyb3IiLCJTRVRfRVhQT1JUX0lNQUdFX0VSUk9SIiwiZXJyb3IiLCJjbGVhbnVwRXhwb3J0SW1hZ2UiLCJDTEVBTlVQX0VYUE9SVF9JTUFHRSIsInNldEV4cG9ydFNlbGVjdGVkRGF0YXNldCIsIlNFVF9FWFBPUlRfU0VMRUNURURfREFUQVNFVCIsInNldEV4cG9ydERhdGFUeXBlIiwiU0VUX0VYUE9SVF9EQVRBX1RZUEUiLCJkYXRhVHlwZSIsInNldEV4cG9ydEZpbHRlcmVkIiwiU0VUX0VYUE9SVF9GSUxURVJFRCIsInNldEV4cG9ydERhdGEiLCJTRVRfRVhQT1JUX0RBVEEiLCJzZXRVc2VyTWFwYm94QWNjZXNzVG9rZW4iLCJTRVRfVVNFUl9NQVBCT1hfQUNDRVNTX1RPS0VOIiwic2V0RXhwb3J0TWFwRm9ybWF0IiwiU0VUX0VYUE9SVF9NQVBfRk9STUFUIiwic2V0RXhwb3J0SFRNTE1hcE1vZGUiLCJTRVRfRVhQT1JUX01BUF9IVE1MX01PREUiLCJzZXRMb2NhbGUiLCJTRVRfTE9DQUxFIiwibG9jYWxlIiwidG9nZ2xlTGF5ZXJQYW5lbExpc3RWaWV3IiwiVE9HR0xFX0xBWUVSX1BBTkVMX0xJU1RfVklFVyIsImxpc3RWaWV3IiwidWlTdGF0ZUFjdGlvbnMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYWN0aW9ucy91aS1zdGF0ZS1hY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7Y3JlYXRlQWN0aW9ufSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcbmltcG9ydCBBY3Rpb25UeXBlcyBmcm9tICdjb25zdGFudHMvYWN0aW9uLXR5cGVzJztcbmltcG9ydCB7TWVyZ2V9IGZyb20gJy4uL3JlZHVjZXJzL3R5cGVzJztcbmltcG9ydCB7RXhwb3J0SW1hZ2V9IGZyb20gJy4uL3JlZHVjZXJzL3VpLXN0YXRlLXVwZGF0ZXJzJztcblxuLyoqIFRPR0dMRV9TSURFX1BBTkVMICovXG5leHBvcnQgdHlwZSBUb2dnbGVTaWRlUGFuZWxVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGlkICBpZCBvZiBzaWRlIHBhbmVsIHRvIGJlIHNob3duLCBvbmUgb2YgYGxheWVyYCwgYGZpbHRlcmAsIGBpbnRlcmFjdGlvbmAsIGBtYXBgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTaWRlUGFuZWw6IChcbiAgaWQ6IHN0cmluZ1xuKSA9PiBNZXJnZTxcbiAgVG9nZ2xlU2lkZVBhbmVsVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfU0lERV9QQU5FTH1cbj4gPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuVE9HR0xFX1NJREVfUEFORUwsIChpZDogc3RyaW5nKSA9PiAoe3BheWxvYWQ6IGlkfSkpO1xuXG4vKiogVE9HR0xFX01PREFMICovXG5leHBvcnQgdHlwZSBUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZyB8IG51bGw7XG59O1xuLyoqXG4gKiBTaG93IGFuZCBoaWRlIG1vZGFsIGRpYWxvZ1xuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWQgLSBpZCBvZiBtb2RhbCB0byBiZSBzaG93biwgbnVsbCB0byBoaWRlIG1vZGFscy4gT25lIG9mOlxuICogIC0gW2BEQVRBX1RBQkxFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZGF0YV90YWJsZV9pZClcbiAqICAtIFtgREVMRVRFX0RBVEFfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNkZWxldGVfZGF0YV9pZClcbiAqICAtIFtgQUREX0RBVEFfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNhZGRfZGF0YV9pZClcbiAqICAtIFtgRVhQT1JUX0lNQUdFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZXhwb3J0X2ltYWdlX2lkKVxuICogIC0gW2BFWFBPUlRfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2V4cG9ydF9kYXRhX2lkKVxuICogIC0gW2BBRERfTUFQX1NUWUxFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjYWRkX21hcF9zdHlsZV9pZClcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZU1vZGFsOiAoXG4gIGlkOiBUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVE9HR0xFX01PREFMfT4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlRPR0dMRV9NT0RBTCxcbiAgKGlkOiBUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtcbiAgICBwYXlsb2FkOiBpZFxuICB9KVxuKTtcblxuLyoqIFNIT1dfRVhQT1JUX0RST1BET1dOICovXG5leHBvcnQgdHlwZSBTaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBIaWRlIGFuZCBzaG93IHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZCAtIGlkIG9mIHRoZSBkcm9wZG93blxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2hvd0V4cG9ydERyb3Bkb3duOiAoXG4gIGlkOiBTaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFNob3dFeHBvcnREcm9wZG93blVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0hPV19FWFBPUlRfRFJPUERPV059XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TSE9XX0VYUE9SVF9EUk9QRE9XTixcbiAgKGlkOiBTaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uWydwYXlsb2FkJ10pID0+ICh7cGF5bG9hZDogaWR9KVxuKTtcblxuLyoqXG4gKiBIaWRlIHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGhpZGVFeHBvcnREcm9wZG93bjogKCkgPT4ge1xuICB0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuSElERV9FWFBPUlRfRFJPUERPV047XG59ID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLkhJREVfRVhQT1JUX0RST1BET1dOKTtcblxuLyoqIFRPR0dMRV9NQVBfQ09OVFJPTCAqL1xuZXhwb3J0IHR5cGUgVG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHtcbiAgICBwYW5lbElkOiBzdHJpbmc7XG4gICAgaW5kZXg6IG51bWJlcjtcbiAgfTtcbn07XG4vKipcbiAqIFRvZ2dsZSBhY3RpdmUgbWFwIGNvbnRyb2wgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBhbmVsSWQgLSBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTWFwQ29udHJvbDogKFxuICBwYW5lbElkOiBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblsncGF5bG9hZCddWydwYW5lbElkJ10sXG4gIGluZGV4OiBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblsncGF5bG9hZCddWydpbmRleCddXG4pID0+IE1lcmdlPFxuICBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfTUFQX0NPTlRST0x9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5UT0dHTEVfTUFQX0NPTlRST0wsXG4gIChcbiAgICBwYW5lbElkOiBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblsncGF5bG9hZCddWydwYW5lbElkJ10sXG4gICAgaW5kZXg6IFRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ2luZGV4J11cbiAgKSA9PiAoe1xuICAgIHBheWxvYWQ6IHtcbiAgICAgIHBhbmVsSWQsXG4gICAgICBpbmRleFxuICAgIH1cbiAgfSlcbik7XG5cbi8qKiBTRVRfTUFQX0NPTlRST0xfVklTSUJJTElUWSAqL1xuZXhwb3J0IHR5cGUgc2V0TWFwQ29udHJvbFZpc2liaWxpdHlVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiB7XG4gICAgcGFuZWxJZDogc3RyaW5nO1xuICAgIHNob3c6IGJvb2xlYW47XG4gIH07XG59O1xuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIG1hcCBjb250cm9sIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwYW5lbElkIC0gbWFwIGNvbnRyb2wgcGFuZWwgaWQsIG9uZSBvZiB0aGUga2V5cyBvZjogW2BERUZBVUxUX01BUF9DT05UUk9MU2BdKCNkZWZhdWx0X21hcF9jb250cm9scylcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5OiAoXG4gIHBhbmVsSWQ6IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlckFjdGlvblsncGF5bG9hZCddWydwYW5lbElkJ10sXG4gIHNob3c6IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlckFjdGlvblsncGF5bG9hZCddWydzaG93J11cbikgPT4gTWVyZ2U8XG4gIHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfTUFQX0NPTlRST0xfVklTSUJJTElUWX1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9NQVBfQ09OVFJPTF9WSVNJQklMSVRZLFxuICAoXG4gICAgcGFuZWxJZDogc2V0TWFwQ29udHJvbFZpc2liaWxpdHlVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ3BhbmVsSWQnXSxcbiAgICBzaG93OiBzZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVsnc2hvdyddXG4gICkgPT4gKHtcbiAgICBwYXlsb2FkOiB7XG4gICAgICBwYW5lbElkLFxuICAgICAgc2hvd1xuICAgIH1cbiAgfSlcbik7XG5cbi8qKiBPUEVOX0RFTEVURV9NT0RBTCAqL1xuZXhwb3J0IHR5cGUgT3BlbkRlbGV0ZU1vZGFsVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogc3RyaW5nO1xufTtcbi8qKlxuICogVG9nZ2xlIGFjdGl2ZSBtYXAgY29udHJvbCBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YXNldElkIC0gYGlkYCBvZiB0aGUgZGF0YXNldCB0byBiZSBkZWxldGVkXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBvcGVuRGVsZXRlTW9kYWw6IChcbiAgZGF0YXNldElkOiBPcGVuRGVsZXRlTW9kYWxVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIE9wZW5EZWxldGVNb2RhbFVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuT1BFTl9ERUxFVEVfTU9EQUx9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5PUEVOX0RFTEVURV9NT0RBTCxcbiAgKGRhdGFzZXRJZDogT3BlbkRlbGV0ZU1vZGFsVXBkYXRlckFjdGlvblsncGF5bG9hZCddKSA9PiAoe3BheWxvYWQ6IGRhdGFzZXRJZH0pXG4pO1xuXG4vKiogQUREX05PVElGSUNBVElPTiAqL1xuZXhwb3J0IHR5cGUgQWRkTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogb2JqZWN0O1xufTtcbi8qKlxuICogQWRkIGEgbm90aWZpY2F0aW9uIHRvIGJlIGRpc3BsYXllZC5cbiAqIEV4aXN0aW5nIG5vdGlmaWNhdGlvbiB3aWxsIGJlIHVwZGF0ZWQgaW4gY2FzZSBvZiBtYXRjaGluZyBpZC5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIG5vdGlmaWNhdGlvbiAtIFRoZSBgbm90aWZpY2F0aW9uYCBvYmplY3QgdG8gYmUgYWRkZWQgb3IgdXBkYXRlZFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgYWRkTm90aWZpY2F0aW9uOiAoXG4gIG5vdGlmaWNhdGlvbjogQWRkTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBBZGROb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uLFxuICB7XG4gICAgdHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkFERF9OT1RJRklDQVRJT047XG4gIH1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLkFERF9OT1RJRklDQVRJT04sXG4gIChub3RpZmljYXRpb246IEFkZE5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBub3RpZmljYXRpb259KVxuKTtcblxuLyoqIFJFTU9WRV9OT1RJRklDQVRJT04gKi9cbmV4cG9ydCB0eXBlIFJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFJlbW92ZSBhIG5vdGlmaWNhdGlvblxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWQgLSBgaWRgIG9mIHRoZSBub3RpZmljYXRpb24gdG8gYmUgcmVtb3ZlZFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVtb3ZlTm90aWZpY2F0aW9uOiAoXG4gIGlkOiBSZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuUkVNT1ZFX05PVElGSUNBVElPTn1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlJFTU9WRV9OT1RJRklDQVRJT04sXG4gIChpZDogUmVtb3ZlTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvblsncGF5bG9hZCddKSA9PiAoe3BheWxvYWQ6IGlkfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX0lNQUdFX1NFVFRJTkcgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IFBhcnRpYWw8RXhwb3J0SW1hZ2U+O1xufTtcbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZWAgc2V0dGluZ3M6IHJhdGlvLCByZXNvbHV0aW9uLCBsZWdlbmRcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIG5ld1NldHRpbmcgLSB7cmF0aW86ICcxeCd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZVNldHRpbmc6IChcbiAgbmV3U2V0dGluZzogU2V0RXhwb3J0SW1hZ2VTZXR0aW5nVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU1BR0VfU0VUVElOR31cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU1BR0VfU0VUVElORyxcbiAgKG5ld1NldHRpbmc6IFNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBuZXdTZXR0aW5nfSlcbik7XG5cbi8qKlxuICogU3RhcnQgZXhwb3J0aW5nIGltYWdlIGZsb3dcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc3RhcnRFeHBvcnRpbmdJbWFnZTogKG9wdGlvbnM/OiB7XG4gIHJhdGlvPzogc3RyaW5nO1xuICByZXNvbHV0aW9uPzogc3RyaW5nO1xuICBsZWdlbmQ/OiBzdHJpbmc7XG4gIGNlbnRlcj86IGJvb2xlYW47XG59KSA9PiBNZXJnZTxcbiAgU2V0RXhwb3J0SW1hZ2VTZXR0aW5nVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TVEFSVF9FWFBPUlRJTkdfSU1BR0V9XG4+ID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLlNUQVJUX0VYUE9SVElOR19JTUFHRSwgKHBheWxvYWQ6IGFueSkgPT4gKHtwYXlsb2FkfSkpO1xuXG4vKiogU0VUX0VYUE9SVF9JTUFHRV9EQVRBX1VSSSAqL1xuZXhwb3J0IHR5cGUgU2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogc3RyaW5nO1xufTtcbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZS5zZXRFeHBvcnRJbWFnZURhdGFVcmlgIHRvIGEgZGF0YVVyaVxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YVVyaSAtIGV4cG9ydCBpbWFnZSBkYXRhIHVyaVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SW1hZ2VEYXRhVXJpOiAoXG4gIGRhdGFVcmk6IFNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgU2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0lNQUdFX0RBVEFfVVJJfVxuPiA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9JTUFHRV9EQVRBX1VSSSxcbiAgKGRhdGFVcmk6IFNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBkYXRhVXJpfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX0lNQUdFX0VSUk9SICovXG5leHBvcnQgdHlwZSBTZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogRXJyb3I7XG59O1xuLyoqXG4gKiBTZXQgRXhwb3J0IGltYWdlIGVycm9yXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydEltYWdlRXJyb3I6IChcbiAgZXJyb3I6IFNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU1BR0VfRVJST1J9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0lNQUdFX0VSUk9SLFxuICAoZXJyb3I6IFNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ10pID0+ICh7cGF5bG9hZDogZXJyb3J9KVxuKTtcblxuLyoqXG4gKiBEZWxldGUgY2FjaGVkIGV4cG9ydCBpbWFnZVxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBjbGVhbnVwRXhwb3J0SW1hZ2U6ICgpID0+IHtcbiAgdHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkNMRUFOVVBfRVhQT1JUX0lNQUdFO1xufSA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5DTEVBTlVQX0VYUE9SVF9JTUFHRSk7XG5cbi8qKiBTRVRfRVhQT1JUX1NFTEVDVEVEX0RBVEFTRVQgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFNldCBzZWxlY3RlZCBkYXRhc2V0IGZvciBleHBvcnRcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFzZXRJZCAtIGRhdGFzZXQgaWRcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydFNlbGVjdGVkRGF0YXNldDogKFxuICBkYXRhc2V0SWQ6IFNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgU2V0RXhwb3J0U2VsZWN0ZWREYXRhc2V0VXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX1NFTEVDVEVEX0RBVEFTRVR9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX1NFTEVDVEVEX0RBVEFTRVQsXG4gIChkYXRhc2V0SWQ6IFNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBkYXRhc2V0SWR9KVxuKTtcblxuLyoqIFNFVF9FWFBPUlRfREFUQV9UWVBFICovXG5leHBvcnQgdHlwZSBTZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFNldCBkYXRhIGZvcm1hdCBmb3IgZXhwb3J0aW5nIGRhdGFcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFUeXBlIC0gb25lIG9mIGAndGV4dC9jc3YnYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RGF0YVR5cGU6IChcbiAgZGF0YVR5cGU6IFNldEV4cG9ydERhdGFUeXBlVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9EQVRBX1RZUEV9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0RBVEFfVFlQRSxcbiAgKGRhdGFUeXBlOiBTZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBkYXRhVHlwZX0pXG4pO1xuXG4vKiogU0VUX0VYUE9SVF9GSUxURVJFRCAqL1xuZXhwb3J0IHR5cGUgU2V0RXhwb3J0RmlsdGVyZWRVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiBib29sZWFuO1xufTtcbi8qKlxuICogV2hldGhlciB0byBleHBvcnQgZmlsdGVyZWQgZGF0YSwgYHRydWVgIG9yIGBmYWxzZWBcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBheWxvYWQgLSBzZXQgYHRydWVgIHRvIG9ueSBleHBvcnQgZmlsdGVyZWQgZGF0YVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RmlsdGVyZWQ6IChcbiAgZXhwb3J0RmlsdGVyZWQ6IFNldEV4cG9ydEZpbHRlcmVkVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9GSUxURVJFRH1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfRklMVEVSRUQsXG4gIChwYXlsb2FkOiBTZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKlxuICogV2hldGhlciB0byBpbmNsdWRpbmcgZGF0YSBpbiBtYXAgY29uZmlnLCB0b2dnbGUgYmV0d2VlbiBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnREYXRhOiAoKSA9PiB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfREFUQX0gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfREFUQVxuKTtcblxuLyoqIFNFVF9VU0VSX01BUEJPWF9BQ0NFU1NfVE9LRU4gKi9cbmV4cG9ydCB0eXBlIFNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFdoZXRoZXIgd2UgZXhwb3J0IGEgbWFwYm94IGFjY2VzcyB0b2tlbiB1c2VkIHRvIGNyZWF0ZSBhIHNpbmdsZSBtYXAgaHRtbCBmaWxlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwYXlsb2FkIC0gbWFwYm94IGFjY2VzcyB0b2tlblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuOiAoXG4gIHBheWxvYWQ6IFNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgU2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfVVNFUl9NQVBCT1hfQUNDRVNTX1RPS0VOfVxuPiA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuU0VUX1VTRVJfTUFQQk9YX0FDQ0VTU19UT0tFTixcbiAgKHBheWxvYWQ6IFNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX01BUF9GT1JNQVQgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFNldCB0aGUgZXhwb3J0IG1hcCBmb3JtYXQgKGh0bWwsIGpzb24pXG4gKiBAbWVtYmVyT2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwYXlsb2FkIC0gbWFwIGZvcm1hdFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0TWFwRm9ybWF0OiAoXG4gIG1hcEZvcm1hdDogU2V0RXhwb3J0TWFwRm9ybWF0VXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfTUFQX0ZPUk1BVH1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfTUFQX0ZPUk1BVCxcbiAgKHBheWxvYWQ6IFNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX01BUF9IVE1MX01PREUgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydEhUTUxNYXBNb2RlVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogc3RyaW5nO1xufTtcbi8qKlxuICogU2V0IHRoZSBIVE1MIG1vZGUgdG8gdXNlIHRvIGV4cG9ydCBIVE1MIG1vZGVcbiAqIEBtZW1iZXJPZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBheWxvYWQgLSBtYXAgbW9kZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SFRNTE1hcE1vZGU6IChcbiAgbW9kZTogU2V0RXhwb3J0SFRNTE1hcE1vZGVVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFNldEV4cG9ydEhUTUxNYXBNb2RlVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX01BUF9IVE1MX01PREV9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX01BUF9IVE1MX01PREUsXG4gIChwYXlsb2FkOiBTZXRFeHBvcnRIVE1MTWFwTW9kZVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKiBTRVRfTE9DQUxFICovXG5leHBvcnQgdHlwZSBTZXRMb2NhbGVVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiB7bG9jYWxlOiBzdHJpbmd9O1xufTtcbi8qKlxuICogU2V0IGBsb2NhbGVgIHZhbHVlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBsb2NhbGUgLSBsb2NhbGUgb2YgdGhlIFVJXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRMb2NhbGU6IChcbiAgbG9jYWxlOiBTZXRMb2NhbGVVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ2xvY2FsZSddXG4pID0+IE1lcmdlPFNldExvY2FsZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0xPQ0FMRX0+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfTE9DQUxFLFxuICAobG9jYWxlOiBTZXRMb2NhbGVVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ2xvY2FsZSddKSA9PiAoe1xuICAgIHBheWxvYWQ6IHtcbiAgICAgIGxvY2FsZVxuICAgIH1cbiAgfSlcbik7XG5cbi8qKiBUT0dHTEVfTEFZRVJfUEFORUxfTElTVF9WSUVXICovXG5leHBvcnQgdHlwZSBUb2dnbGVMYXllclBhbmVsTGlzdFZpZXdBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFRvZ2dsZSBsYXllciBwYW5lbCBsaXN0IHZpZXdcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGxpc3RWaWV3IGxheWVyIHBhbmVsIGxpc3RWaWV3IHZhbHVlLiBDYW4gYmUgJ2xpc3QnIG9yICdzb3J0QnlEYXRhc2V0J1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTGF5ZXJQYW5lbExpc3RWaWV3OiAoXG4gIGxpc3RWaWV3OiBUb2dnbGVMYXllclBhbmVsTGlzdFZpZXdBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgVG9nZ2xlTGF5ZXJQYW5lbExpc3RWaWV3QWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlRPR0dMRV9MQVlFUl9QQU5FTF9MSVNUX1ZJRVd9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5UT0dHTEVfTEFZRVJfUEFORUxfTElTVF9WSUVXLFxuICAobGlzdFZpZXc6IFRvZ2dsZUxheWVyUGFuZWxMaXN0Vmlld0FjdGlvblsncGF5bG9hZCddKSA9PiAoe3BheWxvYWQ6IGxpc3RWaWV3fSlcbik7XG5cbi8qKlxuICogVGhpcyBkZWNsYXJhdGlvbiBpcyBuZWVkZWQgdG8gZ3JvdXAgYWN0aW9ucyBpbiBkb2NzXG4gKi9cbi8qKlxuICogQWN0aW9ucyBoYW5kbGVkIG1vc3RseSBieSAgYHVpU3RhdGVgIHJlZHVjZXIuXG4gKiBUaGV5IG1hbmFnZSBVSSBjaGFuZ2VzIGluIHRoYSBhcHAsIHN1Y2ggYXMgb3BlbiBhbmQgY2xvc2Ugc2lkZSBwYW5lbCxcbiAqIHN3aXRjaCBiZXR3ZWVuIHRhYnMgaW4gdGhlIHNpZGUgcGFuZWwsIG9wZW4gYW5kIGNsb3NlIG1vZGFsIGRpYWxvZyBmb3IgZXhwb3J0aW5nIGRhdGEgLyBpbWFnZXMgZXRjLlxuICogSXQgYWxzbyBtYW5nZXMgd2hpY2ggc2V0dGluZ3MgYXJlIHNlbGVjdGVkIGR1cmluZyBpbWFnZSBhbmQgbWFwIGV4cG9ydFxuICpcbiAqIEBwdWJsaWNcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IHVpU3RhdGVBY3Rpb25zID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQW9CQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBT0E7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUcsZUFLWixHQUFBQyxPQUFBLENBQUFELGVBQUEsR0FBRyxJQUFBRSxxQkFBWSxFQUFDQyx1QkFBVyxDQUFDQyxpQkFBaUIsRUFBRSxVQUFDQyxFQUFVO0VBQUEsT0FBTTtJQUFDQyxPQUFPLEVBQUVEO0VBQUUsQ0FBQztBQUFBLENBQUMsQ0FBQzs7QUFFaEY7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUUsV0FFZ0UsR0FBQU4sT0FBQSxDQUFBTSxXQUFBLEdBQUcsSUFBQUwscUJBQVksRUFDMUZDLHVCQUFXLENBQUNLLFlBQVksRUFDeEIsVUFBQ0gsRUFBdUM7RUFBQSxPQUFNO0lBQzVDQyxPQUFPLEVBQUVEO0VBQ1gsQ0FBQztBQUFBLENBQ0gs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
|