@jax-data-science/sci-image-visualizer 0.10.0 → 0.11.0

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 (41) hide show
  1. package/esm2022/index.mjs +4 -1
  2. package/esm2022/lib/contracts/ports/region-io.port.mjs +1 -1
  3. package/esm2022/lib/contracts/region-editor-api.contract.mjs +1 -1
  4. package/esm2022/lib/implementations/osd/openseadragon-viewer-options.mjs +18 -2
  5. package/esm2022/lib/implementations/osd/openseadragon-visualizer.service.mjs +9 -1
  6. package/esm2022/lib/implementations/osd/osd-tile-loading.mjs +71 -0
  7. package/esm2022/lib/implementations/osd/osd-viewer-like.mjs +1 -1
  8. package/esm2022/lib/implementations/osd/slice-cache.mjs +35 -6
  9. package/esm2022/lib/region-editor/region-editor.component.mjs +147 -4
  10. package/esm2022/lib/region-editor/region-persistence.service.mjs +9 -1
  11. package/esm2022/lib/region-import/label-classes.mjs +149 -0
  12. package/esm2022/lib/region-import/label-volume.mjs +194 -0
  13. package/esm2022/lib/region-import/region-import.mjs +71 -0
  14. package/esm2022/lib/routing-visualizer.service.mjs +93 -1
  15. package/esm2022/lib/store/region-source-scope.mjs +19 -4
  16. package/esm2022/lib/store/region-store.service.mjs +64 -14
  17. package/esm2022/lib/visualizer.component.mjs +28 -2
  18. package/fesm2022/{jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-BKQhpbHv.mjs → jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-BELcx0jv.mjs} +1049 -188
  19. package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-BELcx0jv.mjs.map +1 -0
  20. package/fesm2022/{jax-data-science-sci-image-visualizer-onnx-sam-session-z1IN-F7w.mjs → jax-data-science-sci-image-visualizer-onnx-sam-session-DEDSm_NL.mjs} +2 -2
  21. package/fesm2022/{jax-data-science-sci-image-visualizer-onnx-sam-session-z1IN-F7w.mjs.map → jax-data-science-sci-image-visualizer-onnx-sam-session-DEDSm_NL.mjs.map} +1 -1
  22. package/fesm2022/jax-data-science-sci-image-visualizer.mjs +1 -1
  23. package/index.d.ts +6 -0
  24. package/lib/contracts/ports/region-io.port.d.ts +24 -0
  25. package/lib/contracts/region-editor-api.contract.d.ts +19 -1
  26. package/lib/implementations/osd/openseadragon-viewer-options.d.ts +2 -0
  27. package/lib/implementations/osd/openseadragon-visualizer.service.d.ts +2 -0
  28. package/lib/implementations/osd/osd-tile-loading.d.ts +43 -0
  29. package/lib/implementations/osd/osd-viewer-like.d.ts +14 -0
  30. package/lib/implementations/osd/slice-cache.d.ts +13 -3
  31. package/lib/region-editor/region-editor.component.d.ts +26 -0
  32. package/lib/region-editor/region-persistence.service.d.ts +5 -1
  33. package/lib/region-import/label-classes.d.ts +39 -0
  34. package/lib/region-import/label-volume.d.ts +31 -0
  35. package/lib/region-import/region-import.d.ts +46 -0
  36. package/lib/routing-visualizer.service.d.ts +30 -0
  37. package/lib/store/region-source-scope.d.ts +8 -2
  38. package/lib/store/region-store.service.d.ts +15 -5
  39. package/lib/visualizer.component.d.ts +9 -0
  40. package/package.json +1 -1
  41. package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-BKQhpbHv.mjs.map +0 -1
package/esm2022/index.mjs CHANGED
@@ -64,6 +64,9 @@ export { ShapeSelection } from './lib/models/shape';
64
64
  export { openGeoJsonRegionSource } from './lib/region-source/worker-region-source';
65
65
  export { openHttpRegionSource } from './lib/region-source/http-region-source';
66
66
  export { REGION_SOURCE_MIN_CHARS } from './lib/region-source/region-source';
67
+ export { isLabelVolumeName, readLabelVolume } from './lib/region-import/label-volume';
68
+ export { labelClasses, labelSliceGeoJson } from './lib/region-import/label-classes';
69
+ export { importFile, planRegionImport } from './lib/region-import/region-import';
67
70
  // ── Angular module + providers ───────────────────────────────────────────
68
71
  // DEPRECATED, kept for one minor release: a shim re-exporting the standalone components
69
72
  // below and binding the host-facing tokens at root.
@@ -91,4 +94,4 @@ export { SpatialChartsComponent } from './lib/spatial-controls/spatial-charts/sp
91
94
  // Pure chart builders, exported so a host can render the same distributions
92
95
  // wherever it likes (a report, a different charting surface).
93
96
  export { buildOmicsTraces, omicsLayout, benefitsFromGrouping, } from './lib/implementations/plotly/omics-trace-builders';
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCw0RUFBNEU7QUFDNUUsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBRWpHLDRFQUE0RTtBQUM1RSx1RUFBdUU7QUFDdkUseUVBQXlFO0FBQ3pFLG1FQUFtRTtBQUNuRSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGVBQWUsR0FDaEIsTUFBTSxtRUFBbUUsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixZQUFZLEVBQ1osWUFBWSxFQUNaLG1CQUFtQixFQUNuQixjQUFjLEdBQ2YsTUFBTSxzREFBc0QsQ0FBQztBQU05RCwyRUFBMkU7QUFDM0Us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KlxuICogUHVibGljIEFQSSBvZiBgQGpheC1kYXRhLXNjaWVuY2Uvc2NpLWltYWdlLXZpc3VhbGl6ZXJgLiBFeHRlcm5hbCBjb25zdW1lcnMgaW1wb3J0XG4gKiBPTkxZIGZyb20gaGVyZTsgZXZlcnl0aGluZyBlbHNlIHVuZGVyIGBsaWIvYCBpcyBpbnRlcm5hbC4gVGhlIHN1cmZhY2UgaXNcbiAqIGNvbnRyYWN0cyArIHRva2VucyArIG5ldXRyYWwgbW9kZWxzICsgdGhlIEFuZ3VsYXIgbW9kdWxlIGFuZCBjb21wb25lbnRzLCBwbHVzXG4gKiBgcHJvdmlkZVZpc3VhbGl6YXRpb24oKWAgZm9yIGFuIGlzb2xhdGVkLCBjb21wb25lbnQtc2NvcGVkIHZpZXdlci4gVGhlIGxpYnJhcnlcbiAqIGJpbmRzIHRoZSB0b2tlbnMgaXRzZWxmIChWaXN1YWxpemF0aW9uTW9kdWxlIC8gcHJvdmlkZVZpc3VhbGl6YXRpb24pLCBzbyBhIGhvc3RcbiAqIGluamVjdHMgYFZJU1VBTElaRVJgLCBgUkVHSU9OX0VESVRPUl9BUElgIGFuZCBgQ0hBTk5FTF9ISVNUT0dSQU1fQVBJYCBhbmQgc3VwcGxpZXNcbiAqIG9ubHkgdGhlIHBvcnRzIGFuZCBgVklaX0NPTkZJR2AuXG4gKi9cblxuLy8g4pSA4pSAIENvbnRyYWN0cyAmIERJIHRva2VucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy92aXN1YWxpemVyLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9yZWdpb24tZWRpdG9yLWFwaS5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcG9ydHMvaW1hZ2Utc3RhdGUucG9ydCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcG9ydHMvdGlsZS1hY2Nlc3MucG9ydCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcG9ydHMvcmVnaW9uLWlvLnBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3BvcnRzL3ByZWZlcmVuY2VzLnBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3BvcnRzL3NwYXRpYWwtZGF0YS5wb3J0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9zcGF0aWFsLWRhdGFzZXQuY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL2NoYW5uZWwtaGlzdG9ncmFtLWFwaS5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvdml6LWNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvaW1hZ2UuY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3Bsb3QtdHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvdG9vbGJhci1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3Rvb2xiYXItdG9vbC5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcGxvdC10eXBlLWNvbnRyaWJ1dGlvbi5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvY2FwYWJpbGl0aWVzLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9yZWdpb24tb3ZlcmxheS5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvZGlzcGxheS10eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvc2FtLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9jZWxsLXNlZ21lbnRlci5jb250cmFjdCc7XG5leHBvcnQgeyBDZWxscG9zZVNlZ21lbnRlclNlcnZpY2UgfSBmcm9tICcuL2xpYi90b29sYmFyL3NlZ21lbnRhdGlvbi9jZWxscG9zZS1zZWdtZW50ZXIuc2VydmljZSc7XG5cbi8vIOKUgOKUgCBTcGF0aWFsLW9taWNzIGRhdGEgcGxhbmUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBUaGUgd2lyZSBmb3JtYXQgdGhlIGJ1bmRsZWQgZXhhbXBsZSBzZXJ2ZXIgc3BlYWtzLCBwbHVzIGEgcmVhZHktbWFkZVxuLy8gU3BhdGlhbERhdGFQb3J0IGFkYXB0ZXIgZm9yIGl0LiBCb3RoIGFyZSBPUFRJT05BTDogYSBob3N0IHdpdGggaXRzIG93blxuLy8gYmFja2VuZCBpbXBsZW1lbnRzIFNwYXRpYWxEYXRhUG9ydCBkaXJlY3RseSBhbmQgaW1wb3J0cyBuZWl0aGVyLlxuZXhwb3J0IHtcbiAgU3BhdGlhbERhdGFIdHRwU2VydmljZSxcbiAgU3VwZXJzZWRlZEVycm9yLFxufSBmcm9tICcuL2xpYi9pbXBsZW1lbnRhdGlvbnMvc3BhdGlhbC1kYXRhLWh0dHAvc3BhdGlhbC1kYXRhLWh0dHAuc2VydmljZSc7XG5leHBvcnQge1xuICBTUEFUSUFMX1dJUkVfVkVSU0lPTixcbiAgaXNMaXR0bGVFbmRpYW4sXG4gIGFzc2VydE1hbmlmZXN0VmVyc2lvbixcbiAgZGF0YXNldEZyb21NYW5pZmVzdCxcbiAgZGVjb2RlQ29vcmRzLFxuICBkZWNvZGVSYWRpdXMsXG4gIGRlY29kZUNvbHVtbixcbiAgZGVjb2RlRmVhdHVyZVZlY3RvcixcbiAgZGVjb2RlUG9seWdvbnMsXG59IGZyb20gJy4vbGliL2ltcGxlbWVudGF0aW9ucy9zcGF0aWFsLWRhdGEtaHR0cC9zcGF0aWFsLXdpcmUnO1xuZXhwb3J0IHR5cGUge1xuICBTcGF0aWFsTWFuaWZlc3QsXG4gIFNwYXRpYWxEYXRhc2V0U3VtbWFyeSxcbiAgU3BhdGlhbFJhZGl1c1NwZWMsXG59IGZyb20gJy4vbGliL2ltcGxlbWVudGF0aW9ucy9zcGF0aWFsLWRhdGEtaHR0cC9zcGF0aWFsLXdpcmUnO1xuLy8gQmFja2VuZC1uZXV0cmFsIGVuY29kaW5nczogY29sdW1ucy9nZW5lcyAtPiBwZXItcG9pbnQgY29sb3VycyBhbmQgc2l6ZXMuXG5leHBvcnQge1xuICBlbmNvZGVDYXRlZ29yaWNhbCxcbiAgZW5jb2RlQ29udGludW91cyxcbiAgcmVzb2x2ZUNhdGVnb3J5Q29sb3JzLFxuICBjb250cmFzdFdpbmRvdyxcbiAgbWFya2VyRGlhbWV0ZXJzLFxuICBsdXRGb3IsXG4gIERFRkFVTFRfQ0FURUdPUklDQUxfUEFMRVRURSxcbiAgREVGQVVMVF9NVVRFRF9PUEFDSVRZLFxuICBNSVNTSU5HX0NPTE9SLFxufSBmcm9tICcuL2xpYi9zcGF0aWFsL3NwYXRpYWwtZW5jb2RpbmcnO1xuZXhwb3J0IHR5cGUgeyBSR0JBLCBDYXRlZ29yaWNhbEVuY29kaW5nT3B0aW9ucywgQ29udGludW91c0VuY29kaW5nT3B0aW9ucyB9IGZyb20gJy4vbGliL3NwYXRpYWwvc3BhdGlhbC1lbmNvZGluZyc7XG4vLyBTZWxlY3Rpb246IHdoaWNoIG9ic2VydmF0aW9ucyBmYWxsIGluc2lkZSB0aGUgZHJhd24gUk9JcyAoYXMgYSBTcGF0aWFsU2VsZWN0aW9uTWFzayxcbi8vIGV4cG9ydGVkIHdpdGggdGhlIGRhdGFzZXQgY29udHJhY3QgYWJvdmUpLCBhbmQgdGhlIHNoYXJlZCBzdG9yZVxuLy8gdGhhdCBob2xkcyB0aGUgYW5zd2VyLlxuZXhwb3J0IHtcbiAgc2VsZWN0SW5SZWdpb25zLFxuICBzZWxlY3RCeUNhdGVnb3J5LFxuICBtdXRlZEZyb21TZWxlY3Rpb24sXG4gIHBvaW50SW5SaW5nLFxuICBlbXB0eVNlbGVjdGlvbixcbiAgY291bnRNYXNrLFxuICBtYXNrVG9JbmRpY2VzLFxufSBmcm9tICcuL2xpYi9zcGF0aWFsL3NwYXRpYWwtc2VsZWN0aW9uJztcbmV4cG9ydCB7IFNwYXRpYWxTZWxlY3Rpb25TdG9yZSB9IGZyb20gJy4vbGliL3N0b3JlL3NwYXRpYWwtc2VsZWN0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL2luc3RhbmNlLXNlZ21lbnRlci5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvc2VtYW50aWMtc2VnbWVudGVyLmNvbnRyYWN0JztcblxuLy8g4pSA4pSAIEdlbmVyaWMgY2xpZW50LXNpZGUgaW1hZ2UgdXRpbGl0aWVzIChzaGFyZWQgd2l0aCB0aGUgaG9zdCdzIHBpcGVsaW5lKSDilIDilIBcbmV4cG9ydCB7IFByb2Nlc3NpbmdJbWFnZSB9IGZyb20gJy4vbGliL3Byb2Nlc3NpbmcvcHJvY2Vzc2luZy1pbWFnZSc7XG5leHBvcnQgeyBjcm9wSW1hZ2UsIENyb3BJbWFnZU9wdGlvbnMgfSBmcm9tICcuL2xpYi9wcm9jZXNzaW5nL2ltYWdlLWNyb3AnO1xuZXhwb3J0IHsgSW1hZ2VDb252ZXJ0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9saWIvcHJvY2Vzc2luZy9pbWFnZS1jb252ZXJ0ZXIuc2VydmljZSc7XG5cbi8vIOKUgOKUgCBTQU0gbW9kZWwgcmVnaXN0cnkgKGhvc3QgY29uZmlndXJlcyBob3N0ZWQgT05OWCBVUkxzIG9uY2UgYXZhaWxhYmxlKSDilIDilIBcbmV4cG9ydCB7XG4gIFNBTV9NT0RFTFMsXG4gIERFRkFVTFRfU0FNX01PREVMX0lELFxuICBnZXRTYW1Nb2RlbCxcbiAgaXNTYW1Nb2RlbFJlYWR5LFxuICBzZXRTYW1Nb2RlbFVybHMsXG4gIHNldERlZmF1bHRTYW1Nb2RlbCxcbiAgZ2V0RGVmYXVsdFNhbU1vZGVsSWQsXG59IGZyb20gJy4vbGliL3Rvb2xiYXIvc2VnbWVudGF0aW9uL3NhbS1tb2RlbC1yZWdpc3RyeSc7XG5cbi8vIOKUgOKUgCBvbm54cnVudGltZS13ZWIgV0FTTSBsb2NhdGlvbiAoaG9zdCBvdmVycmlkZXMgb25jZSwgYXQgYXBwIGluaXQpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuZXhwb3J0IHsgc2V0T3J0V2FzbUJhc2UsIGdldE9ydFdhc21CYXNlIH0gZnJvbSAnLi9saWIvdG9vbGJhci9zZWdtZW50YXRpb24vb3J0LXJ1bnRpbWUtY29uZmlnJztcbi8vIEZyZWVzIHRoZSBzZXZlcmFsIGh1bmRyZWQgTUIgb2YgZG93bmxvYWRlZCBTQU0gbW9kZWxzIHRoZSBicm93c2VyIGtlZXBzIHBlciBvcmlnaW4uXG5leHBvcnQgeyBjbGVhclNhbU1vZGVsQ2FjaGUgfSBmcm9tICcuL2xpYi90b29sYmFyL3NlZ21lbnRhdGlvbi9zYW0tb25ueC1jb3JlJztcblxuLy8g4pSA4pSAIE5ldXRyYWwgZGF0YSBtb2RlbHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvcmVnaW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9jbGFzcy1wcmVzZXQnO1xuZXhwb3J0IHsgU2hhcGVTZWxlY3Rpb24gfSBmcm9tICcuL2xpYi9tb2RlbHMvc2hhcGUnO1xuXG4vLyDilIDilIAgUmVnaW9uIHNvdXJjZXM6IGxhcmdlIHJlZ2lvbiBzZXRzLCBkcmF3biBieSBsZXZlbCBvZiBkZXRhaWwg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBBIGhvc3QgaGFuZHMgb25lIG92ZXIgdGhyb3VnaCBgSUltYWdlSW5mby5yZWdpb25Tb3VyY2VVcmxgIG9yIGEgbGFyZ2UgYHJvaUpzb25TdHJgOyB0aGVzZVxuLy8gb3BlbiBvbmUgZGlyZWN0bHkgKGUuZy4gZm9yIGEgY3VzdG9tIGxvYWRlciwgb3IgYSB0ZXN0KS5cbmV4cG9ydCB7IG9wZW5HZW9Kc29uUmVnaW9uU291cmNlIH0gZnJvbSAnLi9saWIvcmVnaW9uLXNvdXJjZS93b3JrZXItcmVnaW9uLXNvdXJjZSc7XG5leHBvcnQgeyBvcGVuSHR0cFJlZ2lvblNvdXJjZSB9IGZyb20gJy4vbGliL3JlZ2lvbi1zb3VyY2UvaHR0cC1yZWdpb24tc291cmNlJztcbmV4cG9ydCB0eXBlIHsgSHR0cFJlZ2lvblNvdXJjZU9wdGlvbnMsIFdpcmVUaWxlRmVhdHVyZSB9IGZyb20gJy4vbGliL3JlZ2lvbi1zb3VyY2UvaHR0cC1yZWdpb24tc291cmNlJztcbmV4cG9ydCB7IFJFR0lPTl9TT1VSQ0VfTUlOX0NIQVJTIH0gZnJvbSAnLi9saWIvcmVnaW9uLXNvdXJjZS9yZWdpb24tc291cmNlJztcbmV4cG9ydCB0eXBlIHsgUmVnaW9uU291cmNlLCBSZWdpb25Tb3VyY2VWaWV3LCBTb3VyY2VGZWF0dXJlIH0gZnJvbSAnLi9saWIvcmVnaW9uLXNvdXJjZS9yZWdpb24tc291cmNlJztcbmV4cG9ydCB0eXBlIHtcbiAgUmVnaW9uSW5kZXhQYWdlLFxuICBSZWdpb25JbmRleFF1ZXJ5LFxuICBSZWdpb25JbmRleFJvdyxcbiAgUmVnaW9uU291cmNlSW5mbyxcbiAgUmVnaW9uVGlsZSxcbiAgUmVnaW9uVGlsZUtleSxcbiAgVGlsZUZlYXR1cmUsXG59IGZyb20gJy4vbGliL3JlZ2lvbi1zb3VyY2UvcmVnaW9uLXRpbGVzJztcblxuLy8g4pSA4pSAIEFuZ3VsYXIgbW9kdWxlICsgcHJvdmlkZXJzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gREVQUkVDQVRFRCwga2VwdCBmb3Igb25lIG1pbm9yIHJlbGVhc2U6IGEgc2hpbSByZS1leHBvcnRpbmcgdGhlIHN0YW5kYWxvbmUgY29tcG9uZW50c1xuLy8gYmVsb3cgYW5kIGJpbmRpbmcgdGhlIGhvc3QtZmFjaW5nIHRva2VucyBhdCByb290LlxuZXhwb3J0IHsgVmlzdWFsaXphdGlvbk1vZHVsZSB9IGZyb20gJy4vbGliL3Zpc3VhbGl6YXRpb24ubW9kdWxlJztcbi8vIERFUFJFQ0FURUQgYXMgcHVibGljIEFQSSwga2VwdCBmb3Igb25lIHJlbGVhc2U6IGhvc3RzIHNob3VsZCBpbmplY3QgdGhlIHRva2Vuc1xuLy8gKFZJU1VBTElaRVIgLyBSRUdJT05fRURJVE9SX0FQSSAvIENIQU5ORUxfSElTVE9HUkFNX0FQSSksIHdoaWNoIHRoZSBsaWJyYXJ5IGJpbmRzXG4vLyB0byB0aGlzIHJvdXRlciBpdHNlbGYuIFJlYWNoaW5nIGZvciB0aGUgY29uY3JldGUgY2xhc3MgYnlwYXNzZXMgdGhhdCBiaW5kaW5nLlxuZXhwb3J0IHsgUm91dGluZ1Zpc3VhbGl6ZXJTZXJ2aWNlIH0gZnJvbSAnLi9saWIvcm91dGluZy12aXN1YWxpemVyLnNlcnZpY2UnO1xuLy8gUHJvdmlkZXIgZmFjdG9yeSBmb3IgYW4gaXNvbGF0ZWQsIGNvbXBvbmVudC1zY29wZWQgdmlld2VyIGluc3RhbmNlIChlLmcuIGFcbi8vIG1vZGFsIHRoYXQgbXVzdCBub3Qgc2hhcmUgdGhlIG1haW4gdmlld2VyJ3MgcmVnaW9uL2ltYWdlIHN0YXRlKS5cbmV4cG9ydCB7IHByb3ZpZGVWaXN1YWxpemF0aW9uIH0gZnJvbSAnLi9saWIvcHJvdmlkZS12aXN1YWxpemF0aW9uJztcblxuLy8gS2V5cyBvZiB0aGUgdG9hc3Qgb3V0bGV0cyB0aGUgdmlzdWFsaXplciByZW5kZXJzIGZvciB0aGUgbGlicmFyeSdzIG93biBub3RpY2VzLlxuLy8gQSBob3N0IHRoYXQgcmVuZGVycyBpdHMgb3duIDxwLXRvYXN0PiB3aXRoIG9uZSBvZiB0aGVzZSBrZXlzIHNob3dzIGVhY2ggbm90aWNlIHR3aWNlLlxuZXhwb3J0IHsgVklaX1RPQVNUX0tFWSwgVklaX0FMRVJUX1RPQVNUX0tFWSB9IGZyb20gJy4vbGliL3RvYXN0LW91dGxldHMnO1xuXG4vLyDilIDilIAgUHVibGljIGNvbXBvbmVudHMgKHN0YW5kYWxvbmU7IGFsc28gcmUtZXhwb3J0ZWQgYnkgVmlzdWFsaXphdGlvbk1vZHVsZSkg4pSA4pSAXG4vLyBUaGUgZW1iZWRkYWJsZSBlbGVtZW50cyAoYDx2aXN1YWxpemVyPmAsIGA8cmVnaW9uLWVkaXRvcj5gLCBgPGhleC1jb2xvci1waWNrZXI+YCxcbi8vIGA8Y2hhbm5lbC1oaXN0b2dyYW0+YCwgYDxzcGF0aWFsLWNvbnRyb2xzPmAsIGA8c3BhdGlhbC1jaGFydHM+YCkuIEVhY2ggaXMgc3RhbmRhbG9uZTpcbi8vIGEgaG9zdCBpbXBvcnRzIGl0IGRpcmVjdGx5IGFuZCBiaW5kcyB0aGUgYmFja2VuZCBjaGFpbiB3aXRoIGBwcm92aWRlVmlzdWFsaXphdGlvbigpYC5cbmV4cG9ydCB7IFZpc3VhbGl6ZXJDb21wb25lbnQgfSBmcm9tICcuL2xpYi92aXN1YWxpemVyLmNvbXBvbmVudCc7XG5leHBvcnQgeyBSZWdpb25FZGl0b3JDb21wb25lbnQgfSBmcm9tICcuL2xpYi9yZWdpb24tZWRpdG9yL3JlZ2lvbi1lZGl0b3IuY29tcG9uZW50JztcbmV4cG9ydCB7IEhleENvbG9yUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvaGV4LWNvbG9yLXBpY2tlci9oZXgtY29sb3ItcGlja2VyLmNvbXBvbmVudCc7XG5leHBvcnQgeyBDaGFubmVsSGlzdG9ncmFtQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvY2hhbm5lbC1oaXN0b2dyYW0vY2hhbm5lbC1oaXN0b2dyYW0uY29tcG9uZW50JztcbmV4cG9ydCB7IFNwYXRpYWxDb250cm9sc0NvbXBvbmVudCB9IGZyb20gJy4vbGliL3NwYXRpYWwtY29udHJvbHMvc3BhdGlhbC1jb250cm9scy5jb21wb25lbnQnO1xuZXhwb3J0IHR5cGUgeyBTcGF0aWFsTGVnZW5kRW50cnkgfSBmcm9tICcuL2xpYi9zcGF0aWFsLWNvbnRyb2xzL3NwYXRpYWwtY29udHJvbHMuY29tcG9uZW50JztcbmV4cG9ydCB7IFNwYXRpYWxDaGFydHNDb21wb25lbnQgfSBmcm9tICcuL2xpYi9zcGF0aWFsLWNvbnRyb2xzL3NwYXRpYWwtY2hhcnRzL3NwYXRpYWwtY2hhcnRzLmNvbXBvbmVudCc7XG4vLyBQdXJlIGNoYXJ0IGJ1aWxkZXJzLCBleHBvcnRlZCBzbyBhIGhvc3QgY2FuIHJlbmRlciB0aGUgc2FtZSBkaXN0cmlidXRpb25zXG4vLyB3aGVyZXZlciBpdCBsaWtlcyAoYSByZXBvcnQsIGEgZGlmZmVyZW50IGNoYXJ0aW5nIHN1cmZhY2UpLlxuZXhwb3J0IHtcbiAgYnVpbGRPbWljc1RyYWNlcyxcbiAgb21pY3NMYXlvdXQsXG4gIGJlbmVmaXRzRnJvbUdyb3VwaW5nLFxufSBmcm9tICcuL2xpYi9pbXBsZW1lbnRhdGlvbnMvcGxvdGx5L29taWNzLXRyYWNlLWJ1aWxkZXJzJztcbmV4cG9ydCB0eXBlIHtcbiAgT21pY3NDaGFydEtpbmQsXG4gIE9taWNzR3JvdXBpbmcsXG4gIE9taWNzVHJhY2VJbnB1dCxcbn0gZnJvbSAnLi9saWIvaW1wbGVtZW50YXRpb25zL3Bsb3RseS9vbWljcy10cmFjZS1idWlsZGVycyc7XG4iXX0=
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCw0RUFBNEU7QUFDNUUsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBRWpHLDRFQUE0RTtBQUM1RSx1RUFBdUU7QUFDdkUseUVBQXlFO0FBQ3pFLG1FQUFtRTtBQUNuRSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGVBQWUsR0FDaEIsTUFBTSxtRUFBbUUsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixZQUFZLEVBQ1osWUFBWSxFQUNaLG1CQUFtQixFQUNuQixjQUFjLEdBQ2YsTUFBTSxzREFBc0QsQ0FBQztBQU05RCwyRUFBMkU7QUFDM0Us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QUM7QUFFN0YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDeEcsNEVBQTRFO0FBQzVFLDhEQUE4RDtBQUM5RCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxvQkFBb0IsR0FDckIsTUFBTSxtREFBbUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHVibGljIEFQSSBvZiBgQGpheC1kYXRhLXNjaWVuY2Uvc2NpLWltYWdlLXZpc3VhbGl6ZXJgLiBFeHRlcm5hbCBjb25zdW1lcnMgaW1wb3J0XG4gKiBPTkxZIGZyb20gaGVyZTsgZXZlcnl0aGluZyBlbHNlIHVuZGVyIGBsaWIvYCBpcyBpbnRlcm5hbC4gVGhlIHN1cmZhY2UgaXNcbiAqIGNvbnRyYWN0cyArIHRva2VucyArIG5ldXRyYWwgbW9kZWxzICsgdGhlIEFuZ3VsYXIgbW9kdWxlIGFuZCBjb21wb25lbnRzLCBwbHVzXG4gKiBgcHJvdmlkZVZpc3VhbGl6YXRpb24oKWAgZm9yIGFuIGlzb2xhdGVkLCBjb21wb25lbnQtc2NvcGVkIHZpZXdlci4gVGhlIGxpYnJhcnlcbiAqIGJpbmRzIHRoZSB0b2tlbnMgaXRzZWxmIChWaXN1YWxpemF0aW9uTW9kdWxlIC8gcHJvdmlkZVZpc3VhbGl6YXRpb24pLCBzbyBhIGhvc3RcbiAqIGluamVjdHMgYFZJU1VBTElaRVJgLCBgUkVHSU9OX0VESVRPUl9BUElgIGFuZCBgQ0hBTk5FTF9ISVNUT0dSQU1fQVBJYCBhbmQgc3VwcGxpZXNcbiAqIG9ubHkgdGhlIHBvcnRzIGFuZCBgVklaX0NPTkZJR2AuXG4gKi9cblxuLy8g4pSA4pSAIENvbnRyYWN0cyAmIERJIHRva2VucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy92aXN1YWxpemVyLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9yZWdpb24tZWRpdG9yLWFwaS5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcG9ydHMvaW1hZ2Utc3RhdGUucG9ydCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcG9ydHMvdGlsZS1hY2Nlc3MucG9ydCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcG9ydHMvcmVnaW9uLWlvLnBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3BvcnRzL3ByZWZlcmVuY2VzLnBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3BvcnRzL3NwYXRpYWwtZGF0YS5wb3J0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9zcGF0aWFsLWRhdGFzZXQuY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL2NoYW5uZWwtaGlzdG9ncmFtLWFwaS5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvdml6LWNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvaW1hZ2UuY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3Bsb3QtdHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvdG9vbGJhci1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3Rvb2xiYXItdG9vbC5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcGxvdC10eXBlLWNvbnRyaWJ1dGlvbi5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvY2FwYWJpbGl0aWVzLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9yZWdpb24tb3ZlcmxheS5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvZGlzcGxheS10eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvc2FtLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9jZWxsLXNlZ21lbnRlci5jb250cmFjdCc7XG5leHBvcnQgeyBDZWxscG9zZVNlZ21lbnRlclNlcnZpY2UgfSBmcm9tICcuL2xpYi90b29sYmFyL3NlZ21lbnRhdGlvbi9jZWxscG9zZS1zZWdtZW50ZXIuc2VydmljZSc7XG5cbi8vIOKUgOKUgCBTcGF0aWFsLW9taWNzIGRhdGEgcGxhbmUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBUaGUgd2lyZSBmb3JtYXQgdGhlIGJ1bmRsZWQgZXhhbXBsZSBzZXJ2ZXIgc3BlYWtzLCBwbHVzIGEgcmVhZHktbWFkZVxuLy8gU3BhdGlhbERhdGFQb3J0IGFkYXB0ZXIgZm9yIGl0LiBCb3RoIGFyZSBPUFRJT05BTDogYSBob3N0IHdpdGggaXRzIG93blxuLy8gYmFja2VuZCBpbXBsZW1lbnRzIFNwYXRpYWxEYXRhUG9ydCBkaXJlY3RseSBhbmQgaW1wb3J0cyBuZWl0aGVyLlxuZXhwb3J0IHtcbiAgU3BhdGlhbERhdGFIdHRwU2VydmljZSxcbiAgU3VwZXJzZWRlZEVycm9yLFxufSBmcm9tICcuL2xpYi9pbXBsZW1lbnRhdGlvbnMvc3BhdGlhbC1kYXRhLWh0dHAvc3BhdGlhbC1kYXRhLWh0dHAuc2VydmljZSc7XG5leHBvcnQge1xuICBTUEFUSUFMX1dJUkVfVkVSU0lPTixcbiAgaXNMaXR0bGVFbmRpYW4sXG4gIGFzc2VydE1hbmlmZXN0VmVyc2lvbixcbiAgZGF0YXNldEZyb21NYW5pZmVzdCxcbiAgZGVjb2RlQ29vcmRzLFxuICBkZWNvZGVSYWRpdXMsXG4gIGRlY29kZUNvbHVtbixcbiAgZGVjb2RlRmVhdHVyZVZlY3RvcixcbiAgZGVjb2RlUG9seWdvbnMsXG59IGZyb20gJy4vbGliL2ltcGxlbWVudGF0aW9ucy9zcGF0aWFsLWRhdGEtaHR0cC9zcGF0aWFsLXdpcmUnO1xuZXhwb3J0IHR5cGUge1xuICBTcGF0aWFsTWFuaWZlc3QsXG4gIFNwYXRpYWxEYXRhc2V0U3VtbWFyeSxcbiAgU3BhdGlhbFJhZGl1c1NwZWMsXG59IGZyb20gJy4vbGliL2ltcGxlbWVudGF0aW9ucy9zcGF0aWFsLWRhdGEtaHR0cC9zcGF0aWFsLXdpcmUnO1xuLy8gQmFja2VuZC1uZXV0cmFsIGVuY29kaW5nczogY29sdW1ucy9nZW5lcyAtPiBwZXItcG9pbnQgY29sb3VycyBhbmQgc2l6ZXMuXG5leHBvcnQge1xuICBlbmNvZGVDYXRlZ29yaWNhbCxcbiAgZW5jb2RlQ29udGludW91cyxcbiAgcmVzb2x2ZUNhdGVnb3J5Q29sb3JzLFxuICBjb250cmFzdFdpbmRvdyxcbiAgbWFya2VyRGlhbWV0ZXJzLFxuICBsdXRGb3IsXG4gIERFRkFVTFRfQ0FURUdPUklDQUxfUEFMRVRURSxcbiAgREVGQVVMVF9NVVRFRF9PUEFDSVRZLFxuICBNSVNTSU5HX0NPTE9SLFxufSBmcm9tICcuL2xpYi9zcGF0aWFsL3NwYXRpYWwtZW5jb2RpbmcnO1xuZXhwb3J0IHR5cGUgeyBSR0JBLCBDYXRlZ29yaWNhbEVuY29kaW5nT3B0aW9ucywgQ29udGludW91c0VuY29kaW5nT3B0aW9ucyB9IGZyb20gJy4vbGliL3NwYXRpYWwvc3BhdGlhbC1lbmNvZGluZyc7XG4vLyBTZWxlY3Rpb246IHdoaWNoIG9ic2VydmF0aW9ucyBmYWxsIGluc2lkZSB0aGUgZHJhd24gUk9JcyAoYXMgYSBTcGF0aWFsU2VsZWN0aW9uTWFzayxcbi8vIGV4cG9ydGVkIHdpdGggdGhlIGRhdGFzZXQgY29udHJhY3QgYWJvdmUpLCBhbmQgdGhlIHNoYXJlZCBzdG9yZVxuLy8gdGhhdCBob2xkcyB0aGUgYW5zd2VyLlxuZXhwb3J0IHtcbiAgc2VsZWN0SW5SZWdpb25zLFxuICBzZWxlY3RCeUNhdGVnb3J5LFxuICBtdXRlZEZyb21TZWxlY3Rpb24sXG4gIHBvaW50SW5SaW5nLFxuICBlbXB0eVNlbGVjdGlvbixcbiAgY291bnRNYXNrLFxuICBtYXNrVG9JbmRpY2VzLFxufSBmcm9tICcuL2xpYi9zcGF0aWFsL3NwYXRpYWwtc2VsZWN0aW9uJztcbmV4cG9ydCB7IFNwYXRpYWxTZWxlY3Rpb25TdG9yZSB9IGZyb20gJy4vbGliL3N0b3JlL3NwYXRpYWwtc2VsZWN0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL2luc3RhbmNlLXNlZ21lbnRlci5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvc2VtYW50aWMtc2VnbWVudGVyLmNvbnRyYWN0JztcblxuLy8g4pSA4pSAIEdlbmVyaWMgY2xpZW50LXNpZGUgaW1hZ2UgdXRpbGl0aWVzIChzaGFyZWQgd2l0aCB0aGUgaG9zdCdzIHBpcGVsaW5lKSDilIDilIBcbmV4cG9ydCB7IFByb2Nlc3NpbmdJbWFnZSB9IGZyb20gJy4vbGliL3Byb2Nlc3NpbmcvcHJvY2Vzc2luZy1pbWFnZSc7XG5leHBvcnQgeyBjcm9wSW1hZ2UsIENyb3BJbWFnZU9wdGlvbnMgfSBmcm9tICcuL2xpYi9wcm9jZXNzaW5nL2ltYWdlLWNyb3AnO1xuZXhwb3J0IHsgSW1hZ2VDb252ZXJ0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9saWIvcHJvY2Vzc2luZy9pbWFnZS1jb252ZXJ0ZXIuc2VydmljZSc7XG5cbi8vIOKUgOKUgCBTQU0gbW9kZWwgcmVnaXN0cnkgKGhvc3QgY29uZmlndXJlcyBob3N0ZWQgT05OWCBVUkxzIG9uY2UgYXZhaWxhYmxlKSDilIDilIBcbmV4cG9ydCB7XG4gIFNBTV9NT0RFTFMsXG4gIERFRkFVTFRfU0FNX01PREVMX0lELFxuICBnZXRTYW1Nb2RlbCxcbiAgaXNTYW1Nb2RlbFJlYWR5LFxuICBzZXRTYW1Nb2RlbFVybHMsXG4gIHNldERlZmF1bHRTYW1Nb2RlbCxcbiAgZ2V0RGVmYXVsdFNhbU1vZGVsSWQsXG59IGZyb20gJy4vbGliL3Rvb2xiYXIvc2VnbWVudGF0aW9uL3NhbS1tb2RlbC1yZWdpc3RyeSc7XG5cbi8vIOKUgOKUgCBvbm54cnVudGltZS13ZWIgV0FTTSBsb2NhdGlvbiAoaG9zdCBvdmVycmlkZXMgb25jZSwgYXQgYXBwIGluaXQpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuZXhwb3J0IHsgc2V0T3J0V2FzbUJhc2UsIGdldE9ydFdhc21CYXNlIH0gZnJvbSAnLi9saWIvdG9vbGJhci9zZWdtZW50YXRpb24vb3J0LXJ1bnRpbWUtY29uZmlnJztcbi8vIEZyZWVzIHRoZSBzZXZlcmFsIGh1bmRyZWQgTUIgb2YgZG93bmxvYWRlZCBTQU0gbW9kZWxzIHRoZSBicm93c2VyIGtlZXBzIHBlciBvcmlnaW4uXG5leHBvcnQgeyBjbGVhclNhbU1vZGVsQ2FjaGUgfSBmcm9tICcuL2xpYi90b29sYmFyL3NlZ21lbnRhdGlvbi9zYW0tb25ueC1jb3JlJztcblxuLy8g4pSA4pSAIE5ldXRyYWwgZGF0YSBtb2RlbHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvcmVnaW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9jbGFzcy1wcmVzZXQnO1xuZXhwb3J0IHsgU2hhcGVTZWxlY3Rpb24gfSBmcm9tICcuL2xpYi9tb2RlbHMvc2hhcGUnO1xuXG4vLyDilIDilIAgUmVnaW9uIHNvdXJjZXM6IGxhcmdlIHJlZ2lvbiBzZXRzLCBkcmF3biBieSBsZXZlbCBvZiBkZXRhaWwg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBBIGhvc3QgaGFuZHMgb25lIG92ZXIgdGhyb3VnaCBgSUltYWdlSW5mby5yZWdpb25Tb3VyY2VVcmxgIG9yIGEgbGFyZ2UgYHJvaUpzb25TdHJgOyB0aGVzZVxuLy8gb3BlbiBvbmUgZGlyZWN0bHkgKGUuZy4gZm9yIGEgY3VzdG9tIGxvYWRlciwgb3IgYSB0ZXN0KS5cbmV4cG9ydCB7IG9wZW5HZW9Kc29uUmVnaW9uU291cmNlIH0gZnJvbSAnLi9saWIvcmVnaW9uLXNvdXJjZS93b3JrZXItcmVnaW9uLXNvdXJjZSc7XG5leHBvcnQgeyBvcGVuSHR0cFJlZ2lvblNvdXJjZSB9IGZyb20gJy4vbGliL3JlZ2lvbi1zb3VyY2UvaHR0cC1yZWdpb24tc291cmNlJztcbmV4cG9ydCB0eXBlIHsgSHR0cFJlZ2lvblNvdXJjZU9wdGlvbnMsIFdpcmVUaWxlRmVhdHVyZSB9IGZyb20gJy4vbGliL3JlZ2lvbi1zb3VyY2UvaHR0cC1yZWdpb24tc291cmNlJztcbmV4cG9ydCB7IFJFR0lPTl9TT1VSQ0VfTUlOX0NIQVJTIH0gZnJvbSAnLi9saWIvcmVnaW9uLXNvdXJjZS9yZWdpb24tc291cmNlJztcbmV4cG9ydCB7IGlzTGFiZWxWb2x1bWVOYW1lLCByZWFkTGFiZWxWb2x1bWUgfSBmcm9tICcuL2xpYi9yZWdpb24taW1wb3J0L2xhYmVsLXZvbHVtZSc7XG5leHBvcnQgdHlwZSB7IExhYmVsVm9sdW1lIH0gZnJvbSAnLi9saWIvcmVnaW9uLWltcG9ydC9sYWJlbC12b2x1bWUnO1xuZXhwb3J0IHsgbGFiZWxDbGFzc2VzLCBsYWJlbFNsaWNlR2VvSnNvbiB9IGZyb20gJy4vbGliL3JlZ2lvbi1pbXBvcnQvbGFiZWwtY2xhc3Nlcyc7XG5leHBvcnQgdHlwZSB7IExhYmVsQ2xhc3NlcyB9IGZyb20gJy4vbGliL3JlZ2lvbi1pbXBvcnQvbGFiZWwtY2xhc3Nlcyc7XG5leHBvcnQgeyBpbXBvcnRGaWxlLCBwbGFuUmVnaW9uSW1wb3J0IH0gZnJvbSAnLi9saWIvcmVnaW9uLWltcG9ydC9yZWdpb24taW1wb3J0JztcbmV4cG9ydCB0eXBlIHsgUmVnaW9uSW1wb3J0RmlsZSwgUmVnaW9uSW1wb3J0UGxhbiB9IGZyb20gJy4vbGliL3JlZ2lvbi1pbXBvcnQvcmVnaW9uLWltcG9ydCc7XG5leHBvcnQgdHlwZSB7IFJlZ2lvblNvdXJjZSwgUmVnaW9uU291cmNlVmlldywgU291cmNlRmVhdHVyZSB9IGZyb20gJy4vbGliL3JlZ2lvbi1zb3VyY2UvcmVnaW9uLXNvdXJjZSc7XG5leHBvcnQgdHlwZSB7XG4gIFJlZ2lvbkluZGV4UGFnZSxcbiAgUmVnaW9uSW5kZXhRdWVyeSxcbiAgUmVnaW9uSW5kZXhSb3csXG4gIFJlZ2lvblNvdXJjZUluZm8sXG4gIFJlZ2lvblRpbGUsXG4gIFJlZ2lvblRpbGVLZXksXG4gIFRpbGVGZWF0dXJlLFxufSBmcm9tICcuL2xpYi9yZWdpb24tc291cmNlL3JlZ2lvbi10aWxlcyc7XG5cbi8vIOKUgOKUgCBBbmd1bGFyIG1vZHVsZSArIHByb3ZpZGVycyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIERFUFJFQ0FURUQsIGtlcHQgZm9yIG9uZSBtaW5vciByZWxlYXNlOiBhIHNoaW0gcmUtZXhwb3J0aW5nIHRoZSBzdGFuZGFsb25lIGNvbXBvbmVudHNcbi8vIGJlbG93IGFuZCBiaW5kaW5nIHRoZSBob3N0LWZhY2luZyB0b2tlbnMgYXQgcm9vdC5cbmV4cG9ydCB7IFZpc3VhbGl6YXRpb25Nb2R1bGUgfSBmcm9tICcuL2xpYi92aXN1YWxpemF0aW9uLm1vZHVsZSc7XG4vLyBERVBSRUNBVEVEIGFzIHB1YmxpYyBBUEksIGtlcHQgZm9yIG9uZSByZWxlYXNlOiBob3N0cyBzaG91bGQgaW5qZWN0IHRoZSB0b2tlbnNcbi8vIChWSVNVQUxJWkVSIC8gUkVHSU9OX0VESVRPUl9BUEkgLyBDSEFOTkVMX0hJU1RPR1JBTV9BUEkpLCB3aGljaCB0aGUgbGlicmFyeSBiaW5kc1xuLy8gdG8gdGhpcyByb3V0ZXIgaXRzZWxmLiBSZWFjaGluZyBmb3IgdGhlIGNvbmNyZXRlIGNsYXNzIGJ5cGFzc2VzIHRoYXQgYmluZGluZy5cbmV4cG9ydCB7IFJvdXRpbmdWaXN1YWxpemVyU2VydmljZSB9IGZyb20gJy4vbGliL3JvdXRpbmctdmlzdWFsaXplci5zZXJ2aWNlJztcbi8vIFByb3ZpZGVyIGZhY3RvcnkgZm9yIGFuIGlzb2xhdGVkLCBjb21wb25lbnQtc2NvcGVkIHZpZXdlciBpbnN0YW5jZSAoZS5nLiBhXG4vLyBtb2RhbCB0aGF0IG11c3Qgbm90IHNoYXJlIHRoZSBtYWluIHZpZXdlcidzIHJlZ2lvbi9pbWFnZSBzdGF0ZSkuXG5leHBvcnQgeyBwcm92aWRlVmlzdWFsaXphdGlvbiB9IGZyb20gJy4vbGliL3Byb3ZpZGUtdmlzdWFsaXphdGlvbic7XG5cbi8vIEtleXMgb2YgdGhlIHRvYXN0IG91dGxldHMgdGhlIHZpc3VhbGl6ZXIgcmVuZGVycyBmb3IgdGhlIGxpYnJhcnkncyBvd24gbm90aWNlcy5cbi8vIEEgaG9zdCB0aGF0IHJlbmRlcnMgaXRzIG93biA8cC10b2FzdD4gd2l0aCBvbmUgb2YgdGhlc2Uga2V5cyBzaG93cyBlYWNoIG5vdGljZSB0d2ljZS5cbmV4cG9ydCB7IFZJWl9UT0FTVF9LRVksIFZJWl9BTEVSVF9UT0FTVF9LRVkgfSBmcm9tICcuL2xpYi90b2FzdC1vdXRsZXRzJztcblxuLy8g4pSA4pSAIFB1YmxpYyBjb21wb25lbnRzIChzdGFuZGFsb25lOyBhbHNvIHJlLWV4cG9ydGVkIGJ5IFZpc3VhbGl6YXRpb25Nb2R1bGUpIOKUgOKUgFxuLy8gVGhlIGVtYmVkZGFibGUgZWxlbWVudHMgKGA8dmlzdWFsaXplcj5gLCBgPHJlZ2lvbi1lZGl0b3I+YCwgYDxoZXgtY29sb3ItcGlja2VyPmAsXG4vLyBgPGNoYW5uZWwtaGlzdG9ncmFtPmAsIGA8c3BhdGlhbC1jb250cm9scz5gLCBgPHNwYXRpYWwtY2hhcnRzPmApLiBFYWNoIGlzIHN0YW5kYWxvbmU6XG4vLyBhIGhvc3QgaW1wb3J0cyBpdCBkaXJlY3RseSBhbmQgYmluZHMgdGhlIGJhY2tlbmQgY2hhaW4gd2l0aCBgcHJvdmlkZVZpc3VhbGl6YXRpb24oKWAuXG5leHBvcnQgeyBWaXN1YWxpemVyQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvdmlzdWFsaXplci5jb21wb25lbnQnO1xuZXhwb3J0IHsgUmVnaW9uRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvcmVnaW9uLWVkaXRvci9yZWdpb24tZWRpdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgeyBIZXhDb2xvclBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vbGliL2hleC1jb2xvci1waWNrZXIvaGV4LWNvbG9yLXBpY2tlci5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ2hhbm5lbEhpc3RvZ3JhbUNvbXBvbmVudCB9IGZyb20gJy4vbGliL2NoYW5uZWwtaGlzdG9ncmFtL2NoYW5uZWwtaGlzdG9ncmFtLmNvbXBvbmVudCc7XG5leHBvcnQgeyBTcGF0aWFsQ29udHJvbHNDb21wb25lbnQgfSBmcm9tICcuL2xpYi9zcGF0aWFsLWNvbnRyb2xzL3NwYXRpYWwtY29udHJvbHMuY29tcG9uZW50JztcbmV4cG9ydCB0eXBlIHsgU3BhdGlhbExlZ2VuZEVudHJ5IH0gZnJvbSAnLi9saWIvc3BhdGlhbC1jb250cm9scy9zcGF0aWFsLWNvbnRyb2xzLmNvbXBvbmVudCc7XG5leHBvcnQgeyBTcGF0aWFsQ2hhcnRzQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvc3BhdGlhbC1jb250cm9scy9zcGF0aWFsLWNoYXJ0cy9zcGF0aWFsLWNoYXJ0cy5jb21wb25lbnQnO1xuLy8gUHVyZSBjaGFydCBidWlsZGVycywgZXhwb3J0ZWQgc28gYSBob3N0IGNhbiByZW5kZXIgdGhlIHNhbWUgZGlzdHJpYnV0aW9uc1xuLy8gd2hlcmV2ZXIgaXQgbGlrZXMgKGEgcmVwb3J0LCBhIGRpZmZlcmVudCBjaGFydGluZyBzdXJmYWNlKS5cbmV4cG9ydCB7XG4gIGJ1aWxkT21pY3NUcmFjZXMsXG4gIG9taWNzTGF5b3V0LFxuICBiZW5lZml0c0Zyb21Hcm91cGluZyxcbn0gZnJvbSAnLi9saWIvaW1wbGVtZW50YXRpb25zL3Bsb3RseS9vbWljcy10cmFjZS1idWlsZGVycyc7XG5leHBvcnQgdHlwZSB7XG4gIE9taWNzQ2hhcnRLaW5kLFxuICBPbWljc0dyb3VwaW5nLFxuICBPbWljc1RyYWNlSW5wdXQsXG59IGZyb20gJy4vbGliL2ltcGxlbWVudGF0aW9ucy9wbG90bHkvb21pY3MtdHJhY2UtYnVpbGRlcnMnO1xuIl19
@@ -1,4 +1,4 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  /** DI token for the host's {@link RegionIoPort}. Required by the region editor. */
3
3
  export const REGION_IO_PORT = new InjectionToken('REGION_IO_PORT');
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaW9uLWlvLnBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbnRyYWN0cy9wb3J0cy9yZWdpb24taW8ucG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBMkIvQyxtRkFBbUY7QUFDbkYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFlLGdCQUFnQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIFJlZ2lvbiBmaWxlIEkvTywgaW52ZXJ0ZWQgYXMgYSBwb3J0IHNvIHRoZSB2aXN1YWxpemF0aW9uIGxpYnJhcnkncyByZWdpb25cbiAqIGVkaXRvciBkb2Vzbid0IGltcG9ydCB0aGUgYXBwJ3MgYEZpbGVzU2VydmljZWAgKHRoZSBsaWJyYXJ5IHBlcmZvcm1zIG5vIGJhY2tlbmRcbiAqIHJlcXVlc3RzIGl0c2VsZikuIFRoZSBob3N0IHN1cHBsaWVzIGFuIGFkYXB0ZXIgdGhhdCBkZWxlZ2F0ZXMgdG8gaXRzIGZpbGVcbiAqIHNlcnZpY2U7IHRoZSBlZGl0b3Igb25seSBuZWVkcyB0aGUgc2VsZWN0ZWQgZmlsZSdzIG5hbWUgKHRvIGRlcml2ZSBkZWZhdWx0IFJPSVxuICogZmlsZW5hbWVzKSwgYW4gZXhpc3RlbmNlIGNoZWNrLCBhbmQgYSBzYXZlLiBCb3VuZCB0byB7QGxpbmsgUkVHSU9OX0lPX1BPUlR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lvbklvUG9ydCB7XG4gIC8qKiBOYW1lIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZmlsZSAoZS5nLiBcImltYWdlLnRpZlwiKSwgb3IgdW5kZWZpbmVkIHdoZW5cbiAgICogIG5vbmUgaXMgc2VsZWN0ZWQuIFVzZWQgdG8gZGVyaXZlIGEgZGVmYXVsdCBST0kgZmlsZW5hbWUgc3RlbS4gKi9cbiAgZ2V0U2VsZWN0ZWRGaWxlTmFtZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKiBXaGV0aGVyIGFuIFJPSSBmaWxlIG5hbWVkIGBuYW1lYCBhbHJlYWR5IGV4aXN0cyBmb3IgdGhlIHNlbGVjdGVkIGZpbGUuICovXG4gIHJvaUZpbGVFeGlzdHMobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgLyoqIFBlcnNpc3QgdGhlIHJlZ2lvbnMgKGFscmVhZHkgc2VyaWFsaXplZCB0byBhIEdlb0pTT04gc3RyaW5nKSBhcyBgZmlsZW5hbWVgLiAqL1xuICBzYXZlR2VvSnNvbihnZW9Kc29uU3RyOiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICAvKipcbiAgICogUGVyc2lzdCBhIGZvbGRlci1zdGFjaydzIHJlZ2lvbnMgYXMgb25lIGdlb2pzb24gcGVyIHNsaWNlLWZpbGUgKGppdC11aSM5MykuXG4gICAqIEVhY2ggZW50cnkncyBgemAgaXMgdGhlIHplcm8tYmFzZWQgc2xpY2UgaW5kZXg7IHRoZSBob3N0IG1hcHMgaXQgdG8gdGhhdFxuICAgKiBzbGljZS1maWxlJ3Mgc2libGluZyBgPHN0ZW0+Lmdlb2pzb25gIGluIHRoZSBzYW1lIGZvbGRlci4gQ29tcGxldGVzIG9uY2VcbiAgICogZXZlcnkgc2xpY2UgaGFzIGJlZW4gd3JpdHRlbi4gKGppdC11aSM5MylcbiAgICovXG4gIHNhdmVTbGljZUdlb0pzb25zKHNsaWNlczogeyB6OiBudW1iZXI7IGdlb0pzb25TdHI6IHN0cmluZyB9W10pOiBPYnNlcnZhYmxlPHZvaWQ+O1xufVxuXG4vKiogREkgdG9rZW4gZm9yIHRoZSBob3N0J3Mge0BsaW5rIFJlZ2lvbklvUG9ydH0uIFJlcXVpcmVkIGJ5IHRoZSByZWdpb24gZWRpdG9yLiAqL1xuZXhwb3J0IGNvbnN0IFJFR0lPTl9JT19QT1JUID0gbmV3IEluamVjdGlvblRva2VuPFJlZ2lvbklvUG9ydD4oJ1JFR0lPTl9JT19QT1JUJyk7XG4iXX0=
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaW9uLWlvLnBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbnRyYWN0cy9wb3J0cy9yZWdpb24taW8ucG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBNEMvQyxtRkFBbUY7QUFDbkYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFlLGdCQUFnQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIFJlZ2lvbiBmaWxlIEkvTywgaW52ZXJ0ZWQgYXMgYSBwb3J0IHNvIHRoZSB2aXN1YWxpemF0aW9uIGxpYnJhcnkncyByZWdpb25cbiAqIGVkaXRvciBkb2Vzbid0IGltcG9ydCB0aGUgYXBwJ3MgYEZpbGVzU2VydmljZWAgKHRoZSBsaWJyYXJ5IHBlcmZvcm1zIG5vIGJhY2tlbmRcbiAqIHJlcXVlc3RzIGl0c2VsZikuIFRoZSBob3N0IHN1cHBsaWVzIGFuIGFkYXB0ZXIgdGhhdCBkZWxlZ2F0ZXMgdG8gaXRzIGZpbGVcbiAqIHNlcnZpY2U7IHRoZSBlZGl0b3Igb25seSBuZWVkcyB0aGUgc2VsZWN0ZWQgZmlsZSdzIG5hbWUgKHRvIGRlcml2ZSBkZWZhdWx0IFJPSVxuICogZmlsZW5hbWVzKSwgYW4gZXhpc3RlbmNlIGNoZWNrLCBhbmQgYSBzYXZlLiBCb3VuZCB0byB7QGxpbmsgUkVHSU9OX0lPX1BPUlR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lvbklvUG9ydCB7XG4gIC8qKiBOYW1lIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZmlsZSAoZS5nLiBcImltYWdlLnRpZlwiKSwgb3IgdW5kZWZpbmVkIHdoZW5cbiAgICogIG5vbmUgaXMgc2VsZWN0ZWQuIFVzZWQgdG8gZGVyaXZlIGEgZGVmYXVsdCBST0kgZmlsZW5hbWUgc3RlbS4gKi9cbiAgZ2V0U2VsZWN0ZWRGaWxlTmFtZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKiBXaGV0aGVyIGFuIFJPSSBmaWxlIG5hbWVkIGBuYW1lYCBhbHJlYWR5IGV4aXN0cyBmb3IgdGhlIHNlbGVjdGVkIGZpbGUuICovXG4gIHJvaUZpbGVFeGlzdHMobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgLyoqIFBlcnNpc3QgdGhlIHJlZ2lvbnMgKGFscmVhZHkgc2VyaWFsaXplZCB0byBhIEdlb0pTT04gc3RyaW5nKSBhcyBgZmlsZW5hbWVgLiAqL1xuICBzYXZlR2VvSnNvbihnZW9Kc29uU3RyOiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICAvKipcbiAgICogUGVyc2lzdCBhIGZvbGRlci1zdGFjaydzIHJlZ2lvbnMgYXMgb25lIGdlb2pzb24gcGVyIHNsaWNlLWZpbGUgKGppdC11aSM5MykuXG4gICAqIEVhY2ggZW50cnkncyBgemAgaXMgdGhlIHplcm8tYmFzZWQgc2xpY2UgaW5kZXg7IHRoZSBob3N0IG1hcHMgaXQgdG8gdGhhdFxuICAgKiBzbGljZS1maWxlJ3Mgc2libGluZyBgPHN0ZW0+Lmdlb2pzb25gIGluIHRoZSBzYW1lIGZvbGRlci4gQ29tcGxldGVzIG9uY2VcbiAgICogZXZlcnkgc2xpY2UgaGFzIGJlZW4gd3JpdHRlbi4gKGppdC11aSM5MylcbiAgICovXG4gIHNhdmVTbGljZUdlb0pzb25zKHNsaWNlczogeyB6OiBudW1iZXI7IGdlb0pzb25TdHI6IHN0cmluZyB9W10pOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICAvKipcbiAgICogXCJJbXBvcnQgcmVnaW9ucyBmcm9tIHNlcnZlclwiOiBsZXQgdGhlIHVzZXIgcGljayByZWdpb24gZmlsZXMgb3IgYSByZWdpb24gc2V0IGluIHRoZSBob3N0J3NcbiAgICogc3RvcmFnZSAodGhlIGN1cnJlbnQgcHJvamVjdCdzIGJ1Y2tldCwgc2F5KSBhbmQgaGFuZCB0aGVtIG92ZXIuIEVtaXRzIG51bGwgd2hlbiB0aGUgdXNlclxuICAgKiBjYW5jZWxzLiBXaXRob3V0IGl0LCB0aGUgUmVnaW9uIEVkaXRvciBzaG93cyBubyBzZXJ2ZXIgaW1wb3J0LlxuICAgKi9cbiAgcGlja1NlcnZlclJlZ2lvbnM/KCk6IE9ic2VydmFibGU8U2VydmVyUmVnaW9uUGljayB8IG51bGw+O1xufVxuXG4vKipcbiAqIFJlZ2lvbnMgcGlja2VkIG9uIHRoZSBob3N0J3Mgc2VydmVyIChzZWUge0BsaW5rIFJlZ2lvbklvUG9ydC5waWNrU2VydmVyUmVnaW9uc30pOiBmaWxlcyBpdFxuICogZG93bmxvYWRlZCwgaW1wb3J0ZWQgYXMgdGhlIFJlZ2lvbiBFZGl0b3IgaW1wb3J0cyBjaG9zZW4gZmlsZXMgKG9uZSBHZW9KU09OOyBhIGxhYmVsIHZvbHVtZVxuICogYC5uaWlgIC8gYC5uaWkuZ3pgIC8gYC5ucnJkYCB3aXRoIGl0cyBvbnRvbG9neSBKU09OOyBhIGZvbGRlcidzIHBlci1zbGljZSBHZW9KU09OIGZpbGVzIHdpdGggaXRzXG4gKiBgcmVnaW9uc2V0Lmpzb25gKSwgb3IgYSByZWdpb24gc2V0IGl0cyBzZXJ2ZXIgc2VydmVzIGJ5IGxldmVsIG9mIGRldGFpbCAoaml0LXNlcnZpY2Unc1xuICogYC9yZWdpb25zL3tpZH0vYCksIHJlYWQgdGhyb3VnaCB0aGUgaG9zdCdzIGBIdHRwQ2xpZW50YCB3aXRob3V0IGRvd25sb2FkaW5nIGl0LlxuICovXG5leHBvcnQgdHlwZSBTZXJ2ZXJSZWdpb25QaWNrID1cbiAgfCB7IGtpbmQ6ICdmaWxlcyc7IGZpbGVzOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgZGF0YTogQmxvYiB8IEFycmF5QnVmZmVyIHwgVWludDhBcnJheSB8IHN0cmluZyB9PiB9XG4gIHwgeyBraW5kOiAnc291cmNlJzsgdXJsOiBzdHJpbmc7IG5hbWU/OiBzdHJpbmcgfTtcblxuLyoqIERJIHRva2VuIGZvciB0aGUgaG9zdCdzIHtAbGluayBSZWdpb25Jb1BvcnR9LiBSZXF1aXJlZCBieSB0aGUgcmVnaW9uIGVkaXRvci4gKi9cbmV4cG9ydCBjb25zdCBSRUdJT05fSU9fUE9SVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZWdpb25Jb1BvcnQ+KCdSRUdJT05fSU9fUE9SVCcpO1xuIl19
@@ -1,4 +1,4 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  /** DI token the Region Editor injects instead of the concrete service. */
3
3
  export const REGION_EDITOR_API = new InjectionToken('REGION_EDITOR_API');
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaW9uLWVkaXRvci1hcGkuY29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbnRyYWN0cy9yZWdpb24tZWRpdG9yLWFwaS5jb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBaUwvQywwRUFBMEU7QUFDMUUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQW1CLG1CQUFtQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUmVnaW9uIH0gZnJvbSAnLi4vbW9kZWxzL3JlZ2lvbic7XG5pbXBvcnQgeyBDbGFzc1ByZXNldCwgUHJlc2V0U2V0IH0gZnJvbSAnLi4vbW9kZWxzL2NsYXNzLXByZXNldCc7XG5pbXBvcnQgeyBJSW1hZ2VNZXRhZGF0YSB9IGZyb20gJy4vaW1hZ2UuY29udHJhY3QnO1xuaW1wb3J0IHR5cGUgeyBSZWdpb25Tb3VyY2VWaWV3IH0gZnJvbSAnLi4vcmVnaW9uLXNvdXJjZS9yZWdpb24tc291cmNlJztcbmltcG9ydCB0eXBlIHsgUmVnaW9uSW5kZXhQYWdlLCBSZWdpb25JbmRleFF1ZXJ5IH0gZnJvbSAnLi4vcmVnaW9uLXNvdXJjZS9yZWdpb24tdGlsZXMnO1xuaW1wb3J0IHR5cGUgeyBSZWdpb25TdHlsZSB9IGZyb20gJy4uL3JlZ2lvbi1vdmVybGF5L3JlZ2lvbi1zdHlsZSc7XG5cbi8qKlxuICogUHVibGljLCBpbXBsZW1lbnRhdGlvbi1hZ25vc3RpYyBzdXJmYWNlIHRoYXQgdGhlIFJlZ2lvbiBFZGl0b3IgKGFuICpleHRlcm5hbCpcbiAqIGNvbnN1bWVyIG9mIHRoZSB2aXN1YWxpemF0aW9uIHBhY2thZ2UpIGRlcGVuZHMgb24uIEl0IGRlYWxzIG9ubHkgaW5cbiAqICoqYW5ub3RhdGlvbioqIHJlZ2lvbnMg4oCUIGludGVuc2l0eS1wcm9maWxlIGxpbmVzIChgUmVnaW9uLmlzUHJvZmlsZSgpYCkgYXJlXG4gKiBvd25lZCBieSB0aGUgaW50ZW5zaXR5IHRvb2wgYW5kIGFyZSBmaWx0ZXJlZCBvdXQgLyBwcmVzZXJ2ZWQgaW50ZXJuYWxseSwgc29cbiAqIHRoZSBlZGl0b3IgbmV2ZXIgc2VlcyBvciBkaXN0dXJicyB0aGVtLlxuICpcbiAqIFRoZSBlZGl0b3IgaW5qZWN0cyB0aGlzIHZpYSB7QGxpbmsgUkVHSU9OX0VESVRPUl9BUEl9IChib3VuZCB0byB0aGUgY29uY3JldGVcbiAqIGBSb3V0aW5nVmlzdWFsaXplclNlcnZpY2VgIHdpdGggYHVzZUV4aXN0aW5nYCkgaW5zdGVhZCBvZiBpbXBvcnRpbmcgdGhlXG4gKiBzZXJ2aWNlIGNsYXNzLCBzbyBpdCBjYW5ub3QgcmVhY2ggdGhlIGltcGxlbWVudGF0aW9uLiBUaGlzIGlzIHRoZSBib3VuZGFyeVxuICogdGhhdCBsZXRzIGBzZXJ2aWNlcy92aXN1YWxpemF0aW9uYCBiZWNvbWUgYSBsaWJyYXJ5IHdob3NlIG9ubHkgcHVibGljIHN1cmZhY2VcbiAqIGlzIHRoZSBjb250cmFjdHMuXG4gKlxuICogU2VsZWN0aW9uIGlzIGV4cHJlc3NlZCBpbiB0ZXJtcyBvZiB7QGxpbmsgUmVnaW9ufXMsIG5vdCBhcnJheSBpbmRpY2VzIOKAlCB0aGVcbiAqIGluZGV4IHNwYWNlICh3aGljaCBpbmNsdWRlcyBwcm9maWxlIGxpbmVzKSBzdGF5cyBpbnRlcm5hbCB0byB0aGUgcGFja2FnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUmVnaW9uRWRpdG9yQXBpIHtcbiAgLy8g4pSA4pSAIGRpc3BsYXkgZGVmYXVsdHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIGdldFNob3dTaGFwZUxhYmVsKCk6IGJvb2xlYW47XG4gIGdldFNoYXBlQ29sb3IoKTogc3RyaW5nO1xuICBnZXRGaWxsQ29sb3IoKTogc3RyaW5nO1xuXG4gIC8vIOKUgOKUgCBhbm5vdGF0aW9uIHJlZ2lvbnMgKHByb2ZpbGUgbGluZXMgZXhjbHVkZWQgJiBwcmVzZXJ2ZWQgaW50ZXJuYWxseSkg4pSAXG4gIC8qKiBBbm5vdGF0aW9uIHJlZ2lvbnMgZm9yIHRoZSBjdXJyZW50IGltYWdlLiBJbnRlbnNpdHktcHJvZmlsZSBsaW5lcyBhcmVcbiAgICogIG5ldmVyIGluY2x1ZGVkLiAqL1xuICBnZXRBbm5vdGF0aW9uUmVnaW9ucygpOiBSZWdpb25bXTtcbiAgLyoqIFJlcGxhY2UgdGhlIGFubm90YXRpb24gcmVnaW9ucy4gSW50ZW5zaXR5LXByb2ZpbGUgbGluZXMgaW4gdGhlIHN0b3JlIGFyZVxuICAgKiAgcHJlc2VydmVkICh0aGUgZWRpdG9yIG11c3Qgbm90IGJlIGFibGUgdG8gZHJvcCB0aGVtKS4gKi9cbiAgc2V0QW5ub3RhdGlvblJlZ2lvbnMoXG4gICAgcmVnaW9uczogUmVnaW9uW10sXG4gICAgc2hvd1JlZ2lvbkxhYmVsPzogYm9vbGVhbixcbiAgICBpc1JlZ2lvblNhdmVPbj86IGJvb2xlYW4sXG4gICAgZmlsbENvbG9yPzogc3RyaW5nLFxuICApOiB2b2lkO1xuICAvKiogQ2hhbmdlIHNpZ25hbCDigJQgZmlyZXMgd2hlbmV2ZXIgcmVnaW9ucyBjaGFuZ2Ugb24gYW55IGJhY2tlbmQuICovXG4gIGdldFJlZ2lvblVwZGF0ZUV2ZW50KCk6IE9ic2VydmFibGU8UmVnaW9uW10+O1xuXG4gIC8vIOKUgOKUgCBzZWxlY3Rpb24gKGJ5IHJlZ2lvbiBpZGVudGl0eTsgaW5kZXggc3BhY2Ugc3RheXMgaW50ZXJuYWwpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAvKiogVGhlIGN1cnJlbnRseS1zZWxlY3RlZCBhbm5vdGF0aW9uIHJlZ2lvbnMgKHByb2ZpbGUgbGluZXMgbmV2ZXIgYXBwZWFyKS4gKi9cbiAgZ2V0U2VsZWN0ZWRSZWdpb25zJCgpOiBPYnNlcnZhYmxlPFJlZ2lvbltdPjtcbiAgLyoqIFNldCB0aGUgc2VsZWN0aW9uIHRvIHRoZXNlIHJlZ2lvbnMuICovXG4gIHNldFNlbGVjdGVkUmVnaW9ucyhyZWdpb25zOiBSZWdpb25bXSk6IHZvaWQ7XG5cbiAgLy8g4pSA4pSAIGNsYXNzaWZpY2F0aW9uIGNvbG91cnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIGdldENsYXNzaWZpY2F0aW9uQ29sb3JzKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gIHNldENsYXNzaWZpY2F0aW9uQ29sb3IobGFiZWw6IHN0cmluZywgY29sb3I6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLy8g4pSA4pSAIGFubm90YXRpb24tY2xhc3MgcHJlc2V0cyAoaml0LXVpIzcwKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgLyoqIFRoZSBjdXJyZW50IHBlci11c2VyIHByZXNldCBzZXQgKHNvdXJjZSBvZiB0cnV0aCBmb3IgcmVnaW9uIGNvbG91cnMpLiAqL1xuICBnZXRQcmVzZXRTZXQoKTogUHJlc2V0U2V0O1xuICAvKiogRW1pdHMgdGhlIHByZXNldCBzZXQgb24gZXZlcnkgY2hhbmdlIChCZWhhdmlvclN1YmplY3QtYmFja2VkKS4gKi9cbiAgZ2V0UHJlc2V0U2V0JCgpOiBPYnNlcnZhYmxlPFByZXNldFNldD47XG4gIC8qKiBSZXBsYWNlIHRoZSB3aG9sZSBwcmVzZXQgc2V0IChwZXJzaXN0cyBwZXItdXNlcikuICovXG4gIHNldFByZXNldFNldChzZXQ6IFByZXNldFNldCk6IHZvaWQ7XG4gIC8qKiBBZGQgb3IgdXBkYXRlIG9uZSBjbGFzcyBieSBuYW1lIChwZXJzaXN0cykuICovXG4gIHVwc2VydENsYXNzKHByZXNldDogQ2xhc3NQcmVzZXQpOiB2b2lkO1xuICAvKiogUmVtb3ZlIGEgY2xhc3MgYnkgbmFtZSAocGVyc2lzdHMpLiAqL1xuICByZW1vdmVDbGFzcyhuYW1lOiBzdHJpbmcpOiB2b2lkO1xuICAvKiogUmVzdG9yZSB0aGUgZGVmYXVsdCBwcmVzZXQgc2V0IChwZXJzaXN0cykuICovXG4gIHJlc2V0UHJlc2V0cygpOiB2b2lkO1xuXG4gIC8vIOKUgOKUgCBpbWFnZSBtZXRhZGF0YSAoZm9yIHJlZ2lvbiBhcmVhcyBpbiDCtW3Csikg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIGdldEltYWdlTWV0YSgpOiBPYnNlcnZhYmxlPElJbWFnZU1ldGFkYXRhW10+O1xuXG4gIC8vIOKUgOKUgCBpbXBvcnQgLyBleHBvcnQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIGltcG9ydFJlZ2lvbnMoZ2VvSnNvblN0cjogc3RyaW5nKTogUmVnaW9uW107XG4gIGdldEdlb0pzb25TdHJpbmcocmVnaW9uczogUmVnaW9uW10pOiBzdHJpbmc7XG5cbiAgLy8g4pSA4pSAIHBlci1zbGljZSB6LXN0YWNrcyAoaml0LXVpIzkzKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgLyoqIFRydWUgd2hpbGUgYSBwZXItc2xpY2Ugei1zdGFjayByZWdpb24gc2Vzc2lvbiBpcyBhY3RpdmUg4oCUIHRoZSBlZGl0b3IgdGhlblxuICAgKiAgc2F2ZXMvZWRpdHMgcmVnaW9ucyBwZXIgZGlzcGxheWVkIHNsaWNlLiAqL1xuICBpc1N0YWNrTW9kZSgpOiBib29sZWFuO1xuICAvKiogSG93IHRoZSBjdXJyZW50IHN0YWNrIHBlcnNpc3RzOiBgY29tYmluZWRgID0gb25lIHotaW5kZXhlZCBnZW9qc29uXG4gICAqICAoc2luZ2xlLWZpbGUgei1zdGFjaywgUXVQYXRoIHNjaGVtYSk7IGBwZXItc2xpY2UtZmlsZWAgPSBvbmUgZ2VvanNvbiBwZXJcbiAgICogIHNsaWNlLWZpbGUgKGZvbGRlciBzdGFjaykuICovXG4gIGdldFN0YWNrU2F2ZUxheW91dCgpOiAnY29tYmluZWQnIHwgJ3Blci1zbGljZS1maWxlJztcbiAgLyoqIEV2ZXJ5IHNsaWNlJ3MgYW5ub3RhdGlvbiByZWdpb25zIChwcm9maWxlIGxpbmVzIGV4Y2x1ZGVkKSwgZWFjaCB0YWdnZWRcbiAgICogIHdpdGggaXRzIHplcm8tYmFzZWQge0BsaW5rIFJlZ2lvbi56fSwgZm9yIGEgY29tYmluZWQgei1pbmRleGVkIHNhdmUuICovXG4gIGdldFNsaWNlQW5ub3RhdGlvblJlZ2lvbnMoKTogUmVnaW9uW107XG4gIC8qKiBQZXItc2xpY2UgYW5ub3RhdGlvbiByZWdpb25zIGZvciBhIGZvbGRlci1zdGFjayAoYHBlci1zbGljZS1maWxlYCkgc2F2ZTpcbiAgICogIHplcm8tYmFzZWQgc2xpY2UgaW5kZXgg4oaSIHRoYXQgc2xpY2UncyBhbm5vdGF0aW9uIHJlZ2lvbnMuIEluY2x1ZGVzXG4gICAqICBub3ctZW1wdHkgc2xpY2VzIGxvYWRlZCBub24tZW1wdHksIHNvIHRoZWlyIGZpbGUgaXMgb3ZlcndyaXR0ZW4gZW1wdHkuICovXG4gIGdldFN0YWNrU2F2ZUFubm90YXRpb25TbGljZXMoKTogTWFwPG51bWJlciwgUmVnaW9uW10+O1xuICAvKipcbiAgICogRnVsbC1yZXNvbHV0aW9uIGltYWdlIHNpemUgKGltYWdlLXBpeGVsIGRpbWVuc2lvbnMpIHVzZWQgdG8gc2l6ZSBhbiBleHBvcnRlZFxuICAgKiByZWdpb24gbWFzay4gQmFja2VuZC1uZXV0cmFsOiBwcmVmZXJzIHRoZSBhY3RpdmUgcmVuZGVyZXIncyByZXBvcnRlZCBzaXplXG4gICAqIGFuZCBmYWxscyBiYWNrIHRvIHRoZSBpbWFnZSBtZXRhZGF0YS4gUmV0dXJucyBudWxsIHdoZW4gbm8gc2l6ZSBpcyBrbm93bi5cbiAgICpcbiAgICogVGhlIG1hc2sgaXRzZWxmIGlzIHJhc3Rlcml6ZWQgb2ZmIHRoZSBtYWluIHRocmVhZCAoc2VlIHRoZSBSZWdpb24gRWRpdG9yJ3NcbiAgICogbWFzayB3b3JrZXIpIGZyb20gdGhlIHJlZ2lvbiBnZW9tZXRyeSBhbmQgdGhpcyBzaXplLlxuICAgKi9cbiAgZ2V0TWFza0ltYWdlU2l6ZSgpOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0gfCBudWxsO1xuXG4gIC8vIOKUgOKUgCByZWdpb24gc291cmNlczogbGFyZ2UgcmVnaW9uIHNldHMsIHRpbGVkIGJ5IGxldmVsIG9mIGRldGFpbCAob3B0aW9uYWwpIOKUgFxuICAvKipcbiAgICogTG9hZCBgZ2VvSnNvblN0cmAgYXMgdGhlIHNsaWNlJ3MgcmVnaW9uIHNvdXJjZSB3aGVuIGl0IGlzIGxhcmdlIGVub3VnaFxuICAgKiAoYFZpekNvbmZpZy5yZWdpb25Tb3VyY2VNaW5DaGFyc2ApOiByZXNvbHZlcyB0cnVlIG9uY2UgaXQgaXMgb3BlbiwgZmFsc2Ugd2hlbiBpdCBpcyBzbWFsbFxuICAgKiBhbmQgc2hvdWxkIGJlIGltcG9ydGVkIGFzIHJlZ2lvbnM7IHJlamVjdHMgd2hlbiBpdCBpcyBub3QgYSBHZW9KU09OIEZlYXR1cmVDb2xsZWN0aW9uLlxuICAgKi9cbiAgaW1wb3J0UmVnaW9uU291cmNlPyhnZW9Kc29uU3RyOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+O1xuICAvKipcbiAgICogRHJvcCB0aGUgc2xpY2UncyByZWdpb24gc291cmNlLCBmb3IgcmVnaW9ucyBpbXBvcnRlZCBpbiBpdHMgcGxhY2UgKGEgc21hbGwgZmlsZSByZXBsYWNpbmcgYVxuICAgKiBsYXJnZSBvbmUpLiBUaGUgb3RoZXIgc2xpY2VzIGtlZXAgdGhlaXJzLlxuICAgKi9cbiAgZHJvcFJlZ2lvblNvdXJjZT8oKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqIFRoZSBzbGljZSdzIHJlZ2lvbiBzb3VyY2UgKG51bGwgd2l0aG91dCBvbmUpIGFuZCBldmVyeSBjaGFuZ2Ugb2YgaXQuICovXG4gIGdldFJlZ2lvblNvdXJjZVZpZXckPygpOiBPYnNlcnZhYmxlPFJlZ2lvblNvdXJjZVZpZXcgfCBudWxsPjtcbiAgLyoqIEEgcGFnZSBvZiB0aGUgc2xpY2Ugc291cmNlJ3MgZmVhdHVyZXMgdGhhdCB3ZXJlIG5vdCB0YWtlbiBmcm9tIGl0LiAqL1xuICBnZXRSZWdpb25Tb3VyY2VJbmRleD8ocXVlcnk6IE9taXQ8UmVnaW9uSW5kZXhRdWVyeSwgJ2V4Y2x1ZGUnPik6IFByb21pc2U8UmVnaW9uSW5kZXhQYWdlPjtcbiAgLyoqIFRha2Ugc291cmNlIGZlYXR1cmVzIGludG8gdGhlIHJlZ2lvbnMgYW5kIHNlbGVjdCB0aGVtIChhZGRlZCB3aXRoIGBhZGRpdGl2ZWApLiAqL1xuICBzZWxlY3RTb3VyY2VGZWF0dXJlcz8oaWRzOiByZWFkb25seSBzdHJpbmdbXSwgYWRkaXRpdmU/OiBib29sZWFuKTogUHJvbWlzZTxudW1iZXJbXT47XG4gIC8qKiBEZWxldGUgc291cmNlIGZlYXR1cmVzIHdpdGhvdXQgdGFraW5nIHRoZW0gKG9uZSB1bmRvIHN0ZXApLiAqL1xuICBkZWxldGVTb3VyY2VGZWF0dXJlcz8oaWRzOiByZWFkb25seSBzdHJpbmdbXSk6IHZvaWQ7XG4gIC8qKlxuICAgKiBGZWF0dXJlcyBwZXIgY2xhc3Mgc3RpbGwgaW4gdGhlIHNsaWNlJ3MgcmVnaW9uIHNvdXJjZSAobm90IHRha2VuKTsgd2l0aCBgc3RhY2tgLCBhIHotc3RhY2snc1xuICAgKiBvdmVyIGV2ZXJ5IHNsaWNlLlxuICAgKi9cbiAgZ2V0UmVnaW9uU291cmNlQ2xhc3NDb3VudHM/KHN0YWNrPzogYm9vbGVhbik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgbnVtYmVyPj47XG4gIC8qKiBUaGUgcmVnaW9uIGxvb2sgKG91dGxpbmVzLCBvciBmaWxsZWQgd2l0aCBsYWJlbHMgaW5zaWRlKSBhbmQgZXZlcnkgY2hhbmdlIG9mIGl0LiAqL1xuICBnZXRSZWdpb25TdHlsZSQ/KCk6IE9ic2VydmFibGU8UmVnaW9uU3R5bGU+O1xuICAvKiogQ2hvb3NlIHRoZSByZWdpb24gbG9vaywgZmllbGQgYnkgZmllbGQgKG92ZXJyaWRlcyBhIHJlZ2lvbiBzb3VyY2UncyBoaW50KS4gKi9cbiAgc2V0UmVnaW9uU3R5bGU/KHBhdGNoOiBQYXJ0aWFsPFJlZ2lvblN0eWxlPik6IHZvaWQ7XG4gIC8qKiBXaGV0aGVyIGEgdm9sdW1lIHZpZXcgaXMgb24gc2NyZWVuIChyZWdpb25zIGNhbiB0aGVuIGJlIHNob3duIGluIDNEKS4gKi9cbiAgZ2V0Vm9sdW1lVmlldyQ/KCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB2b2x1bWUgdmlldydzIHNsaWNlIHBhbmUgaXMgd2FudGVkIChvbmUgc2xpY2UgZWRpdGVkIGJlc2lkZSB0aGUgM0QgdmlldykuIEEgdm9sdW1lXG4gICAqIHZpZXcgd2l0aG91dCBpdCBsaXN0cyBldmVyeSBzbGljZSdzIGNsYXNzZXM7IHdpdGggaXQsIHRoZSBzbGljZSdzLlxuICAgKi9cbiAgZ2V0U2xpY2VFZGl0b3IkPygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAvKiogV2hldGhlciB0aGUgdm9sdW1lIHZpZXcgZHJhd3MgdGhlIHJlZ2lvbiByZWNvbnN0cnVjdGlvbnMgdGhyb3VnaCB0aGUgdm9sdW1lLCBhbmQgY2hhbmdlcy4gKi9cbiAgZ2V0UmVnaW9uc1Rocm91Z2hWb2x1bWUkPygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAvKipcbiAgICogRHJhdyB0aGUgcmVnaW9uIHJlY29uc3RydWN0aW9ucyB0aHJvdWdoIHRoZSB2b2x1bWUgKGl0IGhpZGVzIG5vbmU6IHN1cmZhY2VzIHRyYWNlZCBpbnNpZGUgaXRzXG4gICAqIGJyaWdodCBzdHJ1Y3R1cmVzKSBvciBoaWRkZW4gYmVoaW5kIHdoYXQgaXQgc2hvd3MgaW4gZnJvbnQgb2YgdGhlbSAodGhlIGRlZmF1bHQpLlxuICAgKi9cbiAgc2V0UmVnaW9uc1Rocm91Z2hWb2x1bWU/KHRocm91Z2g6IGJvb2xlYW4pOiB2b2lkO1xuICAvKipcbiAgICogU2hvdyB0aGVzZSBncm91cHMgb2YgY2xhc3NlcyBpbiB0aGUgdm9sdW1lIHZpZXcgYXMgM0QgcmVjb25zdHJ1Y3Rpb25zIChvbmUgc3VyZmFjZSBwZXIgZ3JvdXAsXG4gICAqIGluIGl0cyBjb2xvdXIpLCBhbmQgb25seSB0aGVzZTsgW10gaGlkZXMgdGhlbS5cbiAgICovXG4gIHNob3dSZWdpb25DbGFzc2VzM2Q/KFxuICAgIGdyb3VwczogUmVhZG9ubHlBcnJheTx7IGtleTogc3RyaW5nOyBjbGFzc2VzOiByZWFkb25seSBzdHJpbmdbXTsgY29sb3I6IHN0cmluZzsgbGFiZWw/OiBzdHJpbmcgfT4sXG4gICk6IFByb21pc2U8dm9pZD47XG4gIC8qKlxuICAgKiBFYWNoIGNsYXNzJ3Mgdm9sdW1lIG92ZXIgdGhlIHdob2xlIHN0YWNrLCBpbiBweMKyIMOXIHNsaWNlczogaXRzIG91dGxpbmVzJyBhcmVhIG9uIGV2ZXJ5IHNsaWNlLFxuICAgKiBvbmUgc2xpY2UgdGhpY2suIFRpbWVzIHRoZSBwaXhlbCBzaXplIGFuZCB0aGUgc2xpY2Ugc3BhY2luZywgwrVtwrMuXG4gICAqL1xuICBnZXRDbGFzc1ZvbHVtZXM/KGNsYXNzZXM6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBudW1iZXI+PjtcbiAgLyoqIEhpZ2hsaWdodCB0aGUgc3VyZmFjZXMgb2YgdGhlc2UgZ3JvdXAga2V5cyBpbiB0aGUgdm9sdW1lIHZpZXcgKG5vbmU6IGFsbCBhcyB1c3VhbCkuICovXG4gIGhpZ2hsaWdodFJlZ2lvbkNsYXNzZXMzZD8oa2V5czogcmVhZG9ubHkgc3RyaW5nW10pOiB2b2lkO1xuICAvKiogQSBzdXJmYWNlIGNsaWNrZWQgaW4gdGhlIHZvbHVtZSB2aWV3IHdpdGggdGhlIHNlbGVjdGlvbiB0b29sIChpdHMgZ3JvdXAga2V5KSwgb3Igbm9uZSAobnVsbCkuICovXG4gIGdldFJlZ2lvblBpY2tlZDNkJD8oKTogT2JzZXJ2YWJsZTx7IGtleTogc3RyaW5nIHwgbnVsbDsgYWRkaXRpdmU6IGJvb2xlYW4gfT47XG4gIC8qKiBUaGUgY2xhc3MgZ3JvdXBzIHNob3duIGluIDNEIG9uIHRoZSBpbWFnZSBvbiBzY3JlZW47IGVtaXRzIFtdIHdoZW4gYW5vdGhlciBpbWFnZSBpcyBwbG90dGVkLiAqL1xuICBnZXRSZWdpb25DbGFzc2VzM2QkPygpOiBPYnNlcnZhYmxlPFJlYWRvbmx5QXJyYXk8eyBrZXk6IHN0cmluZzsgY2xhc3NlczogcmVhZG9ubHkgc3RyaW5nW10gfT4+O1xuICAvKiogVGhlIGNsYXNzZXMgaGlkZGVuIGZyb20gdmlldywgYW5kIGV2ZXJ5IGNoYW5nZSBvZiB0aGVtLiAqL1xuICBnZXRIaWRkZW5DbGFzc2VzJD8oKTogT2JzZXJ2YWJsZTxSZWFkb25seVNldDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEhpZGUgKG9yIHNob3cgYWdhaW4pIHRoZXNlIGNsYXNzZXM6IHRoZWlyIHJlZ2lvbnMgYW5kIHRoZSByZWdpb24gc291cmNlJ3MgZmVhdHVyZXMgYXJlIG5vdFxuICAgKiBkcmF3biBvciBwaWNrZWQsIGFuZCB0aGVpciBzdXJmYWNlcyBpbiB0aGUgdm9sdW1lIHZpZXcgYXJlIGhpZGRlbi5cbiAgICovXG4gIHNldENsYXNzZXNIaWRkZW4/KGNsYXNzZXM6IHJlYWRvbmx5IHN0cmluZ1tdLCBoaWRkZW46IGJvb2xlYW4pOiB2b2lkO1xuICAvKiogU2VsZWN0IGV2ZXJ5IHJlZ2lvbiBvZiB0aGVzZSBjbGFzc2VzIG9uIHRoZSBzbGljZSwgdGhlIHNvdXJjZSdzIGluY2x1ZGVkICh0YWtlbikuICovXG4gIHNlbGVjdFJlZ2lvbkNsYXNzZXM/KGNsYXNzZXM6IHJlYWRvbmx5IHN0cmluZ1tdLCBhZGRpdGl2ZT86IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+O1xuICAvKioge0BsaW5rIGdldEdlb0pzb25TdHJpbmd9IG1lcmdlZCB3aXRoIHRoZSByZWdpb24gc291cmNlIGJlaGluZCB0aGUgcmVnaW9ucyAoc2VlXG4gICAqICBgUmVnaW9uU3RvcmUuZ2V0R2VvSnNvbldpdGhTb3VyY2VgKTsgYHNsaWNlYCBuYW1lcyBhIGZvbGRlciBzdGFjaydzIHNsaWNlLiAqL1xuICBnZXRHZW9Kc29uU3RyaW5nV2l0aFNvdXJjZT8ocmVnaW9uczogUmVnaW9uW10sIHNsaWNlPzogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmc+O1xufVxuXG4vKiogREkgdG9rZW4gdGhlIFJlZ2lvbiBFZGl0b3IgaW5qZWN0cyBpbnN0ZWFkIG9mIHRoZSBjb25jcmV0ZSBzZXJ2aWNlLiAqL1xuZXhwb3J0IGNvbnN0IFJFR0lPTl9FRElUT1JfQVBJID0gbmV3IEluamVjdGlvblRva2VuPElSZWdpb25FZGl0b3JBcGk+KCdSRUdJT05fRURJVE9SX0FQSScpO1xuIl19
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaW9uLWVkaXRvci1hcGkuY29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbnRyYWN0cy9yZWdpb24tZWRpdG9yLWFwaS5jb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBc00vQywwRUFBMEU7QUFDMUUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQW1CLG1CQUFtQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUmVnaW9uIH0gZnJvbSAnLi4vbW9kZWxzL3JlZ2lvbic7XG5pbXBvcnQgeyBDbGFzc1ByZXNldCwgUHJlc2V0U2V0IH0gZnJvbSAnLi4vbW9kZWxzL2NsYXNzLXByZXNldCc7XG5pbXBvcnQgeyBJSW1hZ2VNZXRhZGF0YSB9IGZyb20gJy4vaW1hZ2UuY29udHJhY3QnO1xuaW1wb3J0IHR5cGUgeyBSZWdpb25Tb3VyY2UsIFJlZ2lvblNvdXJjZVZpZXcgfSBmcm9tICcuLi9yZWdpb24tc291cmNlL3JlZ2lvbi1zb3VyY2UnO1xuaW1wb3J0IHR5cGUgeyBSZWdpb25JbmRleFBhZ2UsIFJlZ2lvbkluZGV4UXVlcnkgfSBmcm9tICcuLi9yZWdpb24tc291cmNlL3JlZ2lvbi10aWxlcyc7XG5pbXBvcnQgdHlwZSB7IFJlZ2lvblN0eWxlIH0gZnJvbSAnLi4vcmVnaW9uLW92ZXJsYXkvcmVnaW9uLXN0eWxlJztcblxuLyoqXG4gKiBQdWJsaWMsIGltcGxlbWVudGF0aW9uLWFnbm9zdGljIHN1cmZhY2UgdGhhdCB0aGUgUmVnaW9uIEVkaXRvciAoYW4gKmV4dGVybmFsKlxuICogY29uc3VtZXIgb2YgdGhlIHZpc3VhbGl6YXRpb24gcGFja2FnZSkgZGVwZW5kcyBvbi4gSXQgZGVhbHMgb25seSBpblxuICogKiphbm5vdGF0aW9uKiogcmVnaW9ucyDigJQgaW50ZW5zaXR5LXByb2ZpbGUgbGluZXMgKGBSZWdpb24uaXNQcm9maWxlKClgKSBhcmVcbiAqIG93bmVkIGJ5IHRoZSBpbnRlbnNpdHkgdG9vbCBhbmQgYXJlIGZpbHRlcmVkIG91dCAvIHByZXNlcnZlZCBpbnRlcm5hbGx5LCBzb1xuICogdGhlIGVkaXRvciBuZXZlciBzZWVzIG9yIGRpc3R1cmJzIHRoZW0uXG4gKlxuICogVGhlIGVkaXRvciBpbmplY3RzIHRoaXMgdmlhIHtAbGluayBSRUdJT05fRURJVE9SX0FQSX0gKGJvdW5kIHRvIHRoZSBjb25jcmV0ZVxuICogYFJvdXRpbmdWaXN1YWxpemVyU2VydmljZWAgd2l0aCBgdXNlRXhpc3RpbmdgKSBpbnN0ZWFkIG9mIGltcG9ydGluZyB0aGVcbiAqIHNlcnZpY2UgY2xhc3MsIHNvIGl0IGNhbm5vdCByZWFjaCB0aGUgaW1wbGVtZW50YXRpb24uIFRoaXMgaXMgdGhlIGJvdW5kYXJ5XG4gKiB0aGF0IGxldHMgYHNlcnZpY2VzL3Zpc3VhbGl6YXRpb25gIGJlY29tZSBhIGxpYnJhcnkgd2hvc2Ugb25seSBwdWJsaWMgc3VyZmFjZVxuICogaXMgdGhlIGNvbnRyYWN0cy5cbiAqXG4gKiBTZWxlY3Rpb24gaXMgZXhwcmVzc2VkIGluIHRlcm1zIG9mIHtAbGluayBSZWdpb259cywgbm90IGFycmF5IGluZGljZXMg4oCUIHRoZVxuICogaW5kZXggc3BhY2UgKHdoaWNoIGluY2x1ZGVzIHByb2ZpbGUgbGluZXMpIHN0YXlzIGludGVybmFsIHRvIHRoZSBwYWNrYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElSZWdpb25FZGl0b3JBcGkge1xuICAvLyDilIDilIAgZGlzcGxheSBkZWZhdWx0cyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgZ2V0U2hvd1NoYXBlTGFiZWwoKTogYm9vbGVhbjtcbiAgZ2V0U2hhcGVDb2xvcigpOiBzdHJpbmc7XG4gIGdldEZpbGxDb2xvcigpOiBzdHJpbmc7XG5cbiAgLy8g4pSA4pSAIGFubm90YXRpb24gcmVnaW9ucyAocHJvZmlsZSBsaW5lcyBleGNsdWRlZCAmIHByZXNlcnZlZCBpbnRlcm5hbGx5KSDilIBcbiAgLyoqIEFubm90YXRpb24gcmVnaW9ucyBmb3IgdGhlIGN1cnJlbnQgaW1hZ2UuIEludGVuc2l0eS1wcm9maWxlIGxpbmVzIGFyZVxuICAgKiAgbmV2ZXIgaW5jbHVkZWQuICovXG4gIGdldEFubm90YXRpb25SZWdpb25zKCk6IFJlZ2lvbltdO1xuICAvKiogUmVwbGFjZSB0aGUgYW5ub3RhdGlvbiByZWdpb25zLiBJbnRlbnNpdHktcHJvZmlsZSBsaW5lcyBpbiB0aGUgc3RvcmUgYXJlXG4gICAqICBwcmVzZXJ2ZWQgKHRoZSBlZGl0b3IgbXVzdCBub3QgYmUgYWJsZSB0byBkcm9wIHRoZW0pLiAqL1xuICBzZXRBbm5vdGF0aW9uUmVnaW9ucyhcbiAgICByZWdpb25zOiBSZWdpb25bXSxcbiAgICBzaG93UmVnaW9uTGFiZWw/OiBib29sZWFuLFxuICAgIGlzUmVnaW9uU2F2ZU9uPzogYm9vbGVhbixcbiAgICBmaWxsQ29sb3I/OiBzdHJpbmcsXG4gICk6IHZvaWQ7XG4gIC8qKiBDaGFuZ2Ugc2lnbmFsIOKAlCBmaXJlcyB3aGVuZXZlciByZWdpb25zIGNoYW5nZSBvbiBhbnkgYmFja2VuZC4gKi9cbiAgZ2V0UmVnaW9uVXBkYXRlRXZlbnQoKTogT2JzZXJ2YWJsZTxSZWdpb25bXT47XG5cbiAgLy8g4pSA4pSAIHNlbGVjdGlvbiAoYnkgcmVnaW9uIGlkZW50aXR5OyBpbmRleCBzcGFjZSBzdGF5cyBpbnRlcm5hbCkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIC8qKiBUaGUgY3VycmVudGx5LXNlbGVjdGVkIGFubm90YXRpb24gcmVnaW9ucyAocHJvZmlsZSBsaW5lcyBuZXZlciBhcHBlYXIpLiAqL1xuICBnZXRTZWxlY3RlZFJlZ2lvbnMkKCk6IE9ic2VydmFibGU8UmVnaW9uW10+O1xuICAvKiogU2V0IHRoZSBzZWxlY3Rpb24gdG8gdGhlc2UgcmVnaW9ucy4gKi9cbiAgc2V0U2VsZWN0ZWRSZWdpb25zKHJlZ2lvbnM6IFJlZ2lvbltdKTogdm9pZDtcblxuICAvLyDilIDilIAgY2xhc3NpZmljYXRpb24gY29sb3VycyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgZ2V0Q2xhc3NpZmljYXRpb25Db2xvcnMoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcbiAgc2V0Q2xhc3NpZmljYXRpb25Db2xvcihsYWJlbDogc3RyaW5nLCBjb2xvcjogc3RyaW5nKTogdm9pZDtcblxuICAvLyDilIDilIAgYW5ub3RhdGlvbi1jbGFzcyBwcmVzZXRzIChqaXQtdWkjNzApIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAvKiogVGhlIGN1cnJlbnQgcGVyLXVzZXIgcHJlc2V0IHNldCAoc291cmNlIG9mIHRydXRoIGZvciByZWdpb24gY29sb3VycykuICovXG4gIGdldFByZXNldFNldCgpOiBQcmVzZXRTZXQ7XG4gIC8qKiBFbWl0cyB0aGUgcHJlc2V0IHNldCBvbiBldmVyeSBjaGFuZ2UgKEJlaGF2aW9yU3ViamVjdC1iYWNrZWQpLiAqL1xuICBnZXRQcmVzZXRTZXQkKCk6IE9ic2VydmFibGU8UHJlc2V0U2V0PjtcbiAgLyoqIFJlcGxhY2UgdGhlIHdob2xlIHByZXNldCBzZXQgKHBlcnNpc3RzIHBlci11c2VyKS4gKi9cbiAgc2V0UHJlc2V0U2V0KHNldDogUHJlc2V0U2V0KTogdm9pZDtcbiAgLyoqIEFkZCBvciB1cGRhdGUgb25lIGNsYXNzIGJ5IG5hbWUgKHBlcnNpc3RzKS4gKi9cbiAgdXBzZXJ0Q2xhc3MocHJlc2V0OiBDbGFzc1ByZXNldCk6IHZvaWQ7XG4gIC8qKiBSZW1vdmUgYSBjbGFzcyBieSBuYW1lIChwZXJzaXN0cykuICovXG4gIHJlbW92ZUNsYXNzKG5hbWU6IHN0cmluZyk6IHZvaWQ7XG4gIC8qKiBSZXN0b3JlIHRoZSBkZWZhdWx0IHByZXNldCBzZXQgKHBlcnNpc3RzKS4gKi9cbiAgcmVzZXRQcmVzZXRzKCk6IHZvaWQ7XG5cbiAgLy8g4pSA4pSAIGltYWdlIG1ldGFkYXRhIChmb3IgcmVnaW9uIGFyZWFzIGluIMK1bcKyKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgZ2V0SW1hZ2VNZXRhKCk6IE9ic2VydmFibGU8SUltYWdlTWV0YWRhdGFbXT47XG5cbiAgLy8g4pSA4pSAIGltcG9ydCAvIGV4cG9ydCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgaW1wb3J0UmVnaW9ucyhnZW9Kc29uU3RyOiBzdHJpbmcpOiBSZWdpb25bXTtcbiAgZ2V0R2VvSnNvblN0cmluZyhyZWdpb25zOiBSZWdpb25bXSk6IHN0cmluZztcblxuICAvLyDilIDilIAgcGVyLXNsaWNlIHotc3RhY2tzIChqaXQtdWkjOTMpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAvKiogVHJ1ZSB3aGlsZSBhIHBlci1zbGljZSB6LXN0YWNrIHJlZ2lvbiBzZXNzaW9uIGlzIGFjdGl2ZSDigJQgdGhlIGVkaXRvciB0aGVuXG4gICAqICBzYXZlcy9lZGl0cyByZWdpb25zIHBlciBkaXNwbGF5ZWQgc2xpY2UuICovXG4gIGlzU3RhY2tNb2RlKCk6IGJvb2xlYW47XG4gIC8qKiBIb3cgdGhlIGN1cnJlbnQgc3RhY2sgcGVyc2lzdHM6IGBjb21iaW5lZGAgPSBvbmUgei1pbmRleGVkIGdlb2pzb25cbiAgICogIChzaW5nbGUtZmlsZSB6LXN0YWNrLCBRdVBhdGggc2NoZW1hKTsgYHBlci1zbGljZS1maWxlYCA9IG9uZSBnZW9qc29uIHBlclxuICAgKiAgc2xpY2UtZmlsZSAoZm9sZGVyIHN0YWNrKS4gKi9cbiAgZ2V0U3RhY2tTYXZlTGF5b3V0KCk6ICdjb21iaW5lZCcgfCAncGVyLXNsaWNlLWZpbGUnO1xuICAvKiogRXZlcnkgc2xpY2UncyBhbm5vdGF0aW9uIHJlZ2lvbnMgKHByb2ZpbGUgbGluZXMgZXhjbHVkZWQpLCBlYWNoIHRhZ2dlZFxuICAgKiAgd2l0aCBpdHMgemVyby1iYXNlZCB7QGxpbmsgUmVnaW9uLnp9LCBmb3IgYSBjb21iaW5lZCB6LWluZGV4ZWQgc2F2ZS4gKi9cbiAgZ2V0U2xpY2VBbm5vdGF0aW9uUmVnaW9ucygpOiBSZWdpb25bXTtcbiAgLyoqIFBlci1zbGljZSBhbm5vdGF0aW9uIHJlZ2lvbnMgZm9yIGEgZm9sZGVyLXN0YWNrIChgcGVyLXNsaWNlLWZpbGVgKSBzYXZlOlxuICAgKiAgemVyby1iYXNlZCBzbGljZSBpbmRleCDihpIgdGhhdCBzbGljZSdzIGFubm90YXRpb24gcmVnaW9ucy4gSW5jbHVkZXNcbiAgICogIG5vdy1lbXB0eSBzbGljZXMgbG9hZGVkIG5vbi1lbXB0eSwgc28gdGhlaXIgZmlsZSBpcyBvdmVyd3JpdHRlbiBlbXB0eS4gKi9cbiAgZ2V0U3RhY2tTYXZlQW5ub3RhdGlvblNsaWNlcygpOiBNYXA8bnVtYmVyLCBSZWdpb25bXT47XG4gIC8qKlxuICAgKiBGdWxsLXJlc29sdXRpb24gaW1hZ2Ugc2l6ZSAoaW1hZ2UtcGl4ZWwgZGltZW5zaW9ucykgdXNlZCB0byBzaXplIGFuIGV4cG9ydGVkXG4gICAqIHJlZ2lvbiBtYXNrLiBCYWNrZW5kLW5ldXRyYWw6IHByZWZlcnMgdGhlIGFjdGl2ZSByZW5kZXJlcidzIHJlcG9ydGVkIHNpemVcbiAgICogYW5kIGZhbGxzIGJhY2sgdG8gdGhlIGltYWdlIG1ldGFkYXRhLiBSZXR1cm5zIG51bGwgd2hlbiBubyBzaXplIGlzIGtub3duLlxuICAgKlxuICAgKiBUaGUgbWFzayBpdHNlbGYgaXMgcmFzdGVyaXplZCBvZmYgdGhlIG1haW4gdGhyZWFkIChzZWUgdGhlIFJlZ2lvbiBFZGl0b3Inc1xuICAgKiBtYXNrIHdvcmtlcikgZnJvbSB0aGUgcmVnaW9uIGdlb21ldHJ5IGFuZCB0aGlzIHNpemUuXG4gICAqL1xuICBnZXRNYXNrSW1hZ2VTaXplKCk6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB8IG51bGw7XG5cbiAgLy8g4pSA4pSAIHJlZ2lvbiBzb3VyY2VzOiBsYXJnZSByZWdpb24gc2V0cywgdGlsZWQgYnkgbGV2ZWwgb2YgZGV0YWlsIChvcHRpb25hbCkg4pSAXG4gIC8qKlxuICAgKiBMb2FkIGBnZW9Kc29uU3RyYCBhcyB0aGUgc2xpY2UncyByZWdpb24gc291cmNlIHdoZW4gaXQgaXMgbGFyZ2UgZW5vdWdoXG4gICAqIChgVml6Q29uZmlnLnJlZ2lvblNvdXJjZU1pbkNoYXJzYCk6IHJlc29sdmVzIHRydWUgb25jZSBpdCBpcyBvcGVuLCBmYWxzZSB3aGVuIGl0IGlzIHNtYWxsXG4gICAqIGFuZCBzaG91bGQgYmUgaW1wb3J0ZWQgYXMgcmVnaW9uczsgcmVqZWN0cyB3aGVuIGl0IGlzIG5vdCBhIEdlb0pTT04gRmVhdHVyZUNvbGxlY3Rpb24uXG4gICAqL1xuICBpbXBvcnRSZWdpb25Tb3VyY2U/KGdlb0pzb25TdHI6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBBIHRpY2tldCBmb3IgYW4gaW1wb3J0IGFib3V0IHRvIHJlYWQgb3IgZGVjb2RlIGl0cyBmaWxlczogYW4gaW1wb3J0IG1ldGhvZCBnaXZlbiBhIHN0YWxlIG9uZVxuICAgKiAoYW5vdGhlciBpbXBvcnQgdG9vayBhIHRpY2tldCBzaW5jZSwgb3IgYW5vdGhlciBpbWFnZSB3YXMgcGxvdHRlZCkgY2hhbmdlcyBub3RoaW5nLlxuICAgKi9cbiAgcmVnaW9uSW1wb3J0VGlja2V0PygpOiBudW1iZXI7XG4gIC8qKlxuICAgKiBSZXBsYWNlIHRoZSByZWdpb25zIGFuZCByZWdpb24gc291cmNlcyB3aXRoIG9uZSBzb3VyY2UgcGVyIHNsaWNlIChhbiBpbXBvcnRlZCBsYWJlbCB2b2x1bWUsXG4gICAqIG9yIGEgZm9sZGVyIG9mIHBlci1zbGljZSByZWdpb24gZmlsZXMpOiBvcGVuZXJzIGJ5IHNsaWNlIGluZGV4LCBlYWNoIG9wZW5lZCB0aGUgZmlyc3QgdGltZSBpdHNcbiAgICogc2xpY2UgaXMgc2hvd24uIEEgc2luZ2xlIGltYWdlIHRha2VzIHNsaWNlIDAncy4gUmV0dXJucyBob3cgbWFueSBzbGljZXMgaGF2ZSBvbmUsIG9yIG51bGxcbiAgICogKGNoYW5naW5nIG5vdGhpbmcpIHdoZW4gYHRpY2tldGAgaXMgc3RhbGUuIEEgc2F2ZSB3cml0ZXMgZXZlcnkgaW1wb3J0ZWQgc2xpY2UuXG4gICAqL1xuICBpbXBvcnRTbGljZVJlZ2lvblNvdXJjZXM/KFxuICAgIG9wZW5lcnM6IFJlYWRvbmx5TWFwPG51bWJlciwgKCkgPT4gUHJvbWlzZTxSZWdpb25Tb3VyY2U+PixcbiAgICB0aWNrZXQ/OiBudW1iZXIsXG4gICk6IG51bWJlciB8IG51bGw7XG4gIC8qKlxuICAgKiBSZXBsYWNlIHRoZW0gd2l0aCBvbmUgaW1wb3J0ZWQgc291cmNlIChhIHJlZ2lvbiBzZXQgYSBzZXJ2ZXIgc2VydmVzKTogb3ZlciBldmVyeSBzbGljZSBvZiBhXG4gICAqIHN0YWNrIHdoZW4gei1pbmRleGVkLCBlbHNlIG9uIHRoZSBzbGljZSBzaG93bi4gUmVzb2x2ZXMgZmFsc2UsIGNoYW5naW5nIG5vdGhpbmcsIHdoZW4gdGhlXG4gICAqIGltcG9ydCB3ZW50IHN0YWxlIHdoaWxlIHRoZSBzb3VyY2Ugb3BlbmVkLlxuICAgKi9cbiAgaW1wb3J0UmVnaW9uU291cmNlT3BlbmVyPyhvcGVuOiAoKSA9PiBQcm9taXNlPFJlZ2lvblNvdXJjZT4sIHRpY2tldD86IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBEcm9wIHRoZSBzbGljZSdzIHJlZ2lvbiBzb3VyY2UsIGZvciByZWdpb25zIGltcG9ydGVkIGluIGl0cyBwbGFjZSAoYSBzbWFsbCBmaWxlIHJlcGxhY2luZyBhXG4gICAqIGxhcmdlIG9uZSkuIFRoZSBvdGhlciBzbGljZXMga2VlcCB0aGVpcnMuXG4gICAqL1xuICBkcm9wUmVnaW9uU291cmNlPygpOiBQcm9taXNlPHZvaWQ+O1xuICAvKiogVGhlIHNsaWNlJ3MgcmVnaW9uIHNvdXJjZSAobnVsbCB3aXRob3V0IG9uZSkgYW5kIGV2ZXJ5IGNoYW5nZSBvZiBpdC4gKi9cbiAgZ2V0UmVnaW9uU291cmNlVmlldyQ/KCk6IE9ic2VydmFibGU8UmVnaW9uU291cmNlVmlldyB8IG51bGw+O1xuICAvKiogQSBwYWdlIG9mIHRoZSBzbGljZSBzb3VyY2UncyBmZWF0dXJlcyB0aGF0IHdlcmUgbm90IHRha2VuIGZyb20gaXQuICovXG4gIGdldFJlZ2lvblNvdXJjZUluZGV4PyhxdWVyeTogT21pdDxSZWdpb25JbmRleFF1ZXJ5LCAnZXhjbHVkZSc+KTogUHJvbWlzZTxSZWdpb25JbmRleFBhZ2U+O1xuICAvKiogVGFrZSBzb3VyY2UgZmVhdHVyZXMgaW50byB0aGUgcmVnaW9ucyBhbmQgc2VsZWN0IHRoZW0gKGFkZGVkIHdpdGggYGFkZGl0aXZlYCkuICovXG4gIHNlbGVjdFNvdXJjZUZlYXR1cmVzPyhpZHM6IHJlYWRvbmx5IHN0cmluZ1tdLCBhZGRpdGl2ZT86IGJvb2xlYW4pOiBQcm9taXNlPG51bWJlcltdPjtcbiAgLyoqIERlbGV0ZSBzb3VyY2UgZmVhdHVyZXMgd2l0aG91dCB0YWtpbmcgdGhlbSAob25lIHVuZG8gc3RlcCkuICovXG4gIGRlbGV0ZVNvdXJjZUZlYXR1cmVzPyhpZHM6IHJlYWRvbmx5IHN0cmluZ1tdKTogdm9pZDtcbiAgLyoqXG4gICAqIEZlYXR1cmVzIHBlciBjbGFzcyBzdGlsbCBpbiB0aGUgc2xpY2UncyByZWdpb24gc291cmNlIChub3QgdGFrZW4pOyB3aXRoIGBzdGFja2AsIGEgei1zdGFjaydzXG4gICAqIG92ZXIgZXZlcnkgc2xpY2UuXG4gICAqL1xuICBnZXRSZWdpb25Tb3VyY2VDbGFzc0NvdW50cz8oc3RhY2s/OiBib29sZWFuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBudW1iZXI+PjtcbiAgLyoqIFRoZSByZWdpb24gbG9vayAob3V0bGluZXMsIG9yIGZpbGxlZCB3aXRoIGxhYmVscyBpbnNpZGUpIGFuZCBldmVyeSBjaGFuZ2Ugb2YgaXQuICovXG4gIGdldFJlZ2lvblN0eWxlJD8oKTogT2JzZXJ2YWJsZTxSZWdpb25TdHlsZT47XG4gIC8qKiBDaG9vc2UgdGhlIHJlZ2lvbiBsb29rLCBmaWVsZCBieSBmaWVsZCAob3ZlcnJpZGVzIGEgcmVnaW9uIHNvdXJjZSdzIGhpbnQpLiAqL1xuICBzZXRSZWdpb25TdHlsZT8ocGF0Y2g6IFBhcnRpYWw8UmVnaW9uU3R5bGU+KTogdm9pZDtcbiAgLyoqIFdoZXRoZXIgYSB2b2x1bWUgdmlldyBpcyBvbiBzY3JlZW4gKHJlZ2lvbnMgY2FuIHRoZW4gYmUgc2hvd24gaW4gM0QpLiAqL1xuICBnZXRWb2x1bWVWaWV3JD8oKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHZvbHVtZSB2aWV3J3Mgc2xpY2UgcGFuZSBpcyB3YW50ZWQgKG9uZSBzbGljZSBlZGl0ZWQgYmVzaWRlIHRoZSAzRCB2aWV3KS4gQSB2b2x1bWVcbiAgICogdmlldyB3aXRob3V0IGl0IGxpc3RzIGV2ZXJ5IHNsaWNlJ3MgY2xhc3Nlczsgd2l0aCBpdCwgdGhlIHNsaWNlJ3MuXG4gICAqL1xuICBnZXRTbGljZUVkaXRvciQ/KCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIC8qKiBXaGV0aGVyIHRoZSB2b2x1bWUgdmlldyBkcmF3cyB0aGUgcmVnaW9uIHJlY29uc3RydWN0aW9ucyB0aHJvdWdoIHRoZSB2b2x1bWUsIGFuZCBjaGFuZ2VzLiAqL1xuICBnZXRSZWdpb25zVGhyb3VnaFZvbHVtZSQ/KCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBEcmF3IHRoZSByZWdpb24gcmVjb25zdHJ1Y3Rpb25zIHRocm91Z2ggdGhlIHZvbHVtZSAoaXQgaGlkZXMgbm9uZTogc3VyZmFjZXMgdHJhY2VkIGluc2lkZSBpdHNcbiAgICogYnJpZ2h0IHN0cnVjdHVyZXMpIG9yIGhpZGRlbiBiZWhpbmQgd2hhdCBpdCBzaG93cyBpbiBmcm9udCBvZiB0aGVtICh0aGUgZGVmYXVsdCkuXG4gICAqL1xuICBzZXRSZWdpb25zVGhyb3VnaFZvbHVtZT8odGhyb3VnaDogYm9vbGVhbik6IHZvaWQ7XG4gIC8qKlxuICAgKiBTaG93IHRoZXNlIGdyb3VwcyBvZiBjbGFzc2VzIGluIHRoZSB2b2x1bWUgdmlldyBhcyAzRCByZWNvbnN0cnVjdGlvbnMgKG9uZSBzdXJmYWNlIHBlciBncm91cCxcbiAgICogaW4gaXRzIGNvbG91ciksIGFuZCBvbmx5IHRoZXNlOyBbXSBoaWRlcyB0aGVtLlxuICAgKi9cbiAgc2hvd1JlZ2lvbkNsYXNzZXMzZD8oXG4gICAgZ3JvdXBzOiBSZWFkb25seUFycmF5PHsga2V5OiBzdHJpbmc7IGNsYXNzZXM6IHJlYWRvbmx5IHN0cmluZ1tdOyBjb2xvcjogc3RyaW5nOyBsYWJlbD86IHN0cmluZyB9PixcbiAgKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqXG4gICAqIEVhY2ggY2xhc3MncyB2b2x1bWUgb3ZlciB0aGUgd2hvbGUgc3RhY2ssIGluIHB4wrIgw5cgc2xpY2VzOiBpdHMgb3V0bGluZXMnIGFyZWEgb24gZXZlcnkgc2xpY2UsXG4gICAqIG9uZSBzbGljZSB0aGljay4gVGltZXMgdGhlIHBpeGVsIHNpemUgYW5kIHRoZSBzbGljZSBzcGFjaW5nLCDCtW3Csy5cbiAgICovXG4gIGdldENsYXNzVm9sdW1lcz8oY2xhc3NlczogcmVhZG9ubHkgc3RyaW5nW10pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIG51bWJlcj4+O1xuICAvKiogSGlnaGxpZ2h0IHRoZSBzdXJmYWNlcyBvZiB0aGVzZSBncm91cCBrZXlzIGluIHRoZSB2b2x1bWUgdmlldyAobm9uZTogYWxsIGFzIHVzdWFsKS4gKi9cbiAgaGlnaGxpZ2h0UmVnaW9uQ2xhc3NlczNkPyhrZXlzOiByZWFkb25seSBzdHJpbmdbXSk6IHZvaWQ7XG4gIC8qKiBBIHN1cmZhY2UgY2xpY2tlZCBpbiB0aGUgdm9sdW1lIHZpZXcgd2l0aCB0aGUgc2VsZWN0aW9uIHRvb2wgKGl0cyBncm91cCBrZXkpLCBvciBub25lIChudWxsKS4gKi9cbiAgZ2V0UmVnaW9uUGlja2VkM2QkPygpOiBPYnNlcnZhYmxlPHsga2V5OiBzdHJpbmcgfCBudWxsOyBhZGRpdGl2ZTogYm9vbGVhbiB9PjtcbiAgLyoqIFRoZSBjbGFzcyBncm91cHMgc2hvd24gaW4gM0Qgb24gdGhlIGltYWdlIG9uIHNjcmVlbjsgZW1pdHMgW10gd2hlbiBhbm90aGVyIGltYWdlIGlzIHBsb3R0ZWQuICovXG4gIGdldFJlZ2lvbkNsYXNzZXMzZCQ/KCk6IE9ic2VydmFibGU8UmVhZG9ubHlBcnJheTx7IGtleTogc3RyaW5nOyBjbGFzc2VzOiByZWFkb25seSBzdHJpbmdbXSB9Pj47XG4gIC8qKiBUaGUgY2xhc3NlcyBoaWRkZW4gZnJvbSB2aWV3LCBhbmQgZXZlcnkgY2hhbmdlIG9mIHRoZW0uICovXG4gIGdldEhpZGRlbkNsYXNzZXMkPygpOiBPYnNlcnZhYmxlPFJlYWRvbmx5U2V0PHN0cmluZz4+O1xuICAvKipcbiAgICogSGlkZSAob3Igc2hvdyBhZ2FpbikgdGhlc2UgY2xhc3NlczogdGhlaXIgcmVnaW9ucyBhbmQgdGhlIHJlZ2lvbiBzb3VyY2UncyBmZWF0dXJlcyBhcmUgbm90XG4gICAqIGRyYXduIG9yIHBpY2tlZCwgYW5kIHRoZWlyIHN1cmZhY2VzIGluIHRoZSB2b2x1bWUgdmlldyBhcmUgaGlkZGVuLlxuICAgKi9cbiAgc2V0Q2xhc3Nlc0hpZGRlbj8oY2xhc3NlczogcmVhZG9ubHkgc3RyaW5nW10sIGhpZGRlbjogYm9vbGVhbik6IHZvaWQ7XG4gIC8qKiBTZWxlY3QgZXZlcnkgcmVnaW9uIG9mIHRoZXNlIGNsYXNzZXMgb24gdGhlIHNsaWNlLCB0aGUgc291cmNlJ3MgaW5jbHVkZWQgKHRha2VuKS4gKi9cbiAgc2VsZWN0UmVnaW9uQ2xhc3Nlcz8oY2xhc3NlczogcmVhZG9ubHkgc3RyaW5nW10sIGFkZGl0aXZlPzogYm9vbGVhbik6IFByb21pc2U8dm9pZD47XG4gIC8qKiB7QGxpbmsgZ2V0R2VvSnNvblN0cmluZ30gbWVyZ2VkIHdpdGggdGhlIHJlZ2lvbiBzb3VyY2UgYmVoaW5kIHRoZSByZWdpb25zIChzZWVcbiAgICogIGBSZWdpb25TdG9yZS5nZXRHZW9Kc29uV2l0aFNvdXJjZWApOyBgc2xpY2VgIG5hbWVzIGEgZm9sZGVyIHN0YWNrJ3Mgc2xpY2UuICovXG4gIGdldEdlb0pzb25TdHJpbmdXaXRoU291cmNlPyhyZWdpb25zOiBSZWdpb25bXSwgc2xpY2U/OiBudW1iZXIpOiBQcm9taXNlPHN0cmluZz47XG59XG5cbi8qKiBESSB0b2tlbiB0aGUgUmVnaW9uIEVkaXRvciBpbmplY3RzIGluc3RlYWQgb2YgdGhlIGNvbmNyZXRlIHNlcnZpY2UuICovXG5leHBvcnQgY29uc3QgUkVHSU9OX0VESVRPUl9BUEkgPSBuZXcgSW5qZWN0aW9uVG9rZW48SVJlZ2lvbkVkaXRvckFwaT4oJ1JFR0lPTl9FRElUT1JfQVBJJyk7XG4iXX0=
@@ -37,6 +37,12 @@ export function silenceOsdMultiImageAdvisory() {
37
37
  });
38
38
  osd.__multiImageFilterInstalled = true;
39
39
  }
40
+ /** Tile cache entries a single image keeps per tiled image (one per channel when drawn per channel). */
41
+ const TILES_PER_IMAGE = 150;
42
+ /** The most tiles a single per-channel image keeps (each a decoded 512² tile, ~1 MB). */
43
+ const MAX_CHANNEL_TILES = 1200;
44
+ /** Tile requests in flight at once for an image drawn per channel. */
45
+ const CHANNEL_REQUEST_LIMIT = 12;
40
46
  /**
41
47
  * The options object handed to the OpenSeadragon factory. Pure: every value
42
48
  * that depends on the service comes in through `input`.
@@ -122,7 +128,17 @@ export function buildViewerOptions(input) {
122
128
  // so they get a much larger tile budget — otherwise switching slices evicts
123
129
  // each other's tiles and scrubbing back re-fetches. Scaled to the resident
124
130
  // slice count; single images keep the lean default.
125
- maxImageCacheCount: input.sliceCount > 1 ? Math.min(2400, Math.max(600, input.maxSlices * 40)) : 150,
131
+ // A single image drawn per channel needs room for every visible channel's tiles in view: at
132
+ // 150 a 22-channel plate evicted tiles while they were still being converted.
133
+ maxImageCacheCount: input.sliceCount > 1
134
+ ? Math.min(2400, Math.max(600, input.maxSlices * 40))
135
+ : Math.min(MAX_CHANNEL_TILES, TILES_PER_IMAGE * Math.max(1, Math.ceil((input.channelImages ?? 1) / 2))),
136
+ // OSD sends every tile request at once by default (imageLoaderLimit 0) and times each out
137
+ // after 30 s from when it is sent. A view of a 22-channel image asks for hundreds of tiles;
138
+ // the browser holds all but a few connections' worth back, so those timed out while still
139
+ // waiting their turn. Limited, they wait in OSD's queue (not timed), where a channel being
140
+ // hidden drops its own (SliceCache.revealChannelSlice). Single images keep OSD's default.
141
+ ...((input.channelImages ?? 1) > 1 ? { imageLoaderLimit: CHANNEL_REQUEST_LIMIT } : {}),
126
142
  };
127
143
  }
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnNlYWRyYWdvbi12aWV3ZXItb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvaW1wbGVtZW50YXRpb25zL29zZC9vcGVuc2VhZHJhZ29uLXZpZXdlci1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSw0QkFBNEI7SUFDMUMsTUFBTSxHQUFHLEdBQVEsR0FBVSxDQUFDO0lBQzVCLElBQUksR0FBRyxDQUFDLDJCQUEyQjtRQUFFLE9BQU87SUFDNUMsTUFBTSxJQUFJLEdBQ1IsR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLFVBQVU7UUFDcEQsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPO1FBQ2IsQ0FBQyxDQUFDLE9BQU8sT0FBTyxLQUFLLFdBQVc7WUFDOUIsQ0FBQyxDQUFDLE9BQU87WUFDVCxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2IsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPO0lBQ2xCLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlHLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFO1FBQzVCLEdBQUcsQ0FBQyxNQUFXLEVBQUUsSUFBWTtZQUMzQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxLQUFLLE1BQU0s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LElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7S0FDckcsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPU0QgfSBmcm9tICcuL29zZC1saWInO1xuaW1wb3J0IHsgT1NEX1pPT01fUEVSX1NDUk9MTCB9IGZyb20gJy4vb3NkLXpvb20nO1xuXG4vKipcbiAqIFF1aWV0IE9wZW5TZWFkcmFnb24ncyBcIltWaWV3cG9ydC4qXSBpcyBub3QgYWNjdXJhdGUgd2l0aCBtdWx0aS1pbWFnZVwiIGFkdmlzb3JpZXMuXG4gKiBBIG11bHRpY2hhbm5lbCBpbWFnZSBpcyBjb21wb3NpdGVkIGZyb20gb25lIFRpbGVkSW1hZ2UgcGVyIGNoYW5uZWwg4oCUIGEgbGVnaXRpbWF0ZVxuICogbXVsdGktaW1hZ2Ugd29ybGQg4oCUIGFuZCBPU0QgbG9ncyB0aGF0IGFkdmlzb3J5IChhdCBlcnJvciBsZXZlbCkgZnJvbSBpdHMgb3duXG4gKiBuYXZpZ2F0b3Ivb3ZlcnZpZXcgcmVuZGVyaW5nIG9uIGV2ZXJ5IGFuaW1hdGlvbiBmcmFtZSwgZmxvb2RpbmcgdGhlIGNvbnNvbGUuIE91clxuICogb3duIGltYWdlPC0+dmlld3BvcnQgY29udmVyc2lvbnMgYWxyZWFkeSByb3V0ZSB0aHJvdWdoIHdvcmxkIGl0ZW0gMCAoc2VlXG4gKiBvc2QtY29vcmRzKSwgc28gdGhlIHJlbWFpbmluZyBhZHZpc29yaWVzIGFyZSBPU0QtaW50ZXJuYWwgYW5kIG9ubHkgYWZmZWN0IHRoZVxuICogbWluaW1hcCdzIGJveCBhY2N1cmFjeSAoY29zbWV0aWMpLiBUaGlzIHdyYXBzIE9TRCdzIGxvZ2dlciBpbiBhIFByb3h5IHRoYXQgZHJvcHNcbiAqIG9ubHkgdGhhdCBvbmUgbWVzc2FnZSBzdHJpbmcgYW5kIGZvcndhcmRzIGV2ZXJ5IG90aGVyIGxvZyB1bnRvdWNoZWQuIElkZW1wb3RlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWxlbmNlT3NkTXVsdGlJbWFnZUFkdmlzb3J5KCk6IHZvaWQge1xuICBjb25zdCBvc2Q6IGFueSA9IE9TRCBhcyBhbnk7XG4gIGlmIChvc2QuX19tdWx0aUltYWdlRmlsdGVySW5zdGFsbGVkKSByZXR1cm47XG4gIGNvbnN0IGJhc2U6IGFueSA9XG4gICAgb3NkLmNvbnNvbGUgJiYgdHlwZW9mIG9zZC5jb25zb2xlLmVycm9yID09PSAnZnVuY3Rpb24nXG4gICAgICA/IG9zZC5jb25zb2xlXG4gICAgICA6IHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/IGNvbnNvbGVcbiAgICAgICAgOiBudWxsO1xuICBpZiAoIWJhc2UpIHJldHVybjtcbiAgY29uc3QgaXNBZHZpc29yeSA9IChhOiB1bmtub3duKSA9PiB0eXBlb2YgYSA9PT0gJ3N0cmluZycgJiYgYS5pbmRleE9mKCdub3QgYWNjdXJhdGUgd2l0aCBtdWx0aS1pbWFnZScpICE9PSAtMTtcbiAgb3NkLmNvbnNvbGUgPSBuZXcgUHJveHkoYmFzZSwge1xuICAgIGdldCh0YXJnZXQ6IGFueSwgcHJvcDogc3RyaW5nKSB7XG4gICAgICBjb25zdCBvcmlnID0gdGFyZ2V0W3Byb3BdO1xuICAgICAgaWYgKChwcm9wID09PSAnZXJyb3InIHx8IHByb3AgPT09ICd3YXJuJykgJiYgdHlwZW9mIG9yaWcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgIGlmIChpc0Fkdmlzb3J5KGFyZ3NbMF0pKSByZXR1cm47XG4gICAgICAgICAgb3JpZy5hcHBseSh0YXJnZXQsIGFyZ3MpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHR5cGVvZiBvcmlnID09PSAnZnVuY3Rpb24nID8gb3JpZy5iaW5kKHRhcmdldCkgOiBvcmlnO1xuICAgIH0sXG4gIH0pO1xuICBvc2QuX19tdWx0aUltYWdlRmlsdGVySW5zdGFsbGVkID0gdHJ1ZTtcbn1cblxuLyoqIFdoYXQge0BsaW5rIGJ1aWxkVmlld2VyT3B0aW9uc30gbmVlZHMgdG8ga25vdyBhYm91dCB0aGUgdmlld2VyIGJlaW5nIG1vdW50ZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdlck9wdGlvbnNJbnB1dCB7XG4gIC8qKiBUaGUgRE9NIGlkIE9TRCBtb3VudHMgaW50by4gKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIFNob3cgdGhlIG92ZXJ2aWV3IG5hdmlnYXRvciAobWluaW1hcCkuICovXG4gIG5hdmlnYXRvclZpc2libGU6IGJvb2xlYW47XG4gIC8qKiBCaWxpbmVhciBzbW9vdGhpbmc7IGZhbHNlIGdpdmVzIGNyaXNwIG5lYXJlc3QtbmVpZ2hib3VyIHBpeGVscy4gKi9cbiAgc21vb3RoaW5nOiBib29sZWFuO1xuICAvKiogQmVhcmVyIHRva2VuIGZvciBPU0QncyBvd24gdGlsZSBmZXRjaGVzIChpdHMgbG9hZGVyIGJ5cGFzc2VzIEh0dHBDbGllbnQpLiAqL1xuICBhdXRoSGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqIFNsaWNlcyBpbiB0aGUgaW1hZ2UgKDEgZm9yIGEgc2luZ2xlIGltYWdlKS4gKi9cbiAgc2xpY2VDb3VudDogbnVtYmVyO1xuICAvKiogSG93IG1hbnkgc2xpY2VzIHRoZSBzbGljZSBjYWNoZSBrZWVwcyByZXNpZGVudCAoc2VlIFNsaWNlQ2FjaGUubWF4U2xpY2VzKS4gKi9cbiAgbWF4U2xpY2VzOiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIG9wdGlvbnMgb2JqZWN0IGhhbmRlZCB0byB0aGUgT3BlblNlYWRyYWdvbiBmYWN0b3J5LiBQdXJlOiBldmVyeSB2YWx1ZVxuICogdGhhdCBkZXBlbmRzIG9uIHRoZSBzZXJ2aWNlIGNvbWVzIGluIHRocm91Z2ggYGlucHV0YC5cbiAqXG4gKiBUaGVzZSBhcmUgT1NEIGNvbmZpZyBrZXlzLCBub3QgbGlicmFyeSBjb2RlOiBPU0Qgc2lsZW50bHkgZmFsbHMgYmFjayB0byBpdHNcbiAqIG93biBkZWZhdWx0IHdoZW4gb25lIGlzIG1pc3NwZWxsZWQgb3IgcmVuYW1lZCB1cHN0cmVhbSwgc28gdGhlIHZhbHVlcyB3ZSByZWx5XG4gKiBvbiBhcmUgcGlubmVkIGJ5IGBvcGVuc2VhZHJhZ29uLXZpZXdlci1vcHRpb25zLnNwZWMudHNgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRWaWV3ZXJPcHRpb25zKGlucHV0OiBWaWV3ZXJPcHRpb25zSW5wdXQpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiB7XG4gICAgaWQ6IGlucHV0LmlkLFxuICAgIC8vIFNpbXBsZS1tb2RlIHotc2NydWIgY2FsbHMgdmlld2VyLm9wZW4oKSBhZ2FpbiBwZXIgc2xpY2UgKHNlZVxuICAgIC8vIHNldFpJbmRleCkg4oCUIHdpdGhvdXQgdGhpcyBpdCByZXNldHMgdG8gdGhlIGhvbWUgem9vbS9wYW4gb24gZXZlcnlcbiAgICAvLyBzbGljZSBjaGFuZ2UuIFRpbGVkIG1vZGUgbmV2ZXIgcmUtb3BlbnMgKGl0IHRvZ2dsZXMgcHJlLWFkZGVkXG4gICAgLy8gVGlsZWRJbWFnZXMnIG9wYWNpdHkgaW5zdGVhZCksIHNvIHRoaXMgaXMgYSBuby1vcCB0aGVyZS5cbiAgICBwcmVzZXJ2ZVZpZXdwb3J0OiB0cnVlLFxuICAgIC8vIFVzZSB0aGUgMkQgY2FudmFzIGRyYXdlciwgbm90IFdlYkdMOiBjcmVhdGluZy9kZXN0cm95aW5nIGEgdmlld2VyIG9uXG4gICAgLy8gZWFjaCBlbmdpbmUgdG9nZ2xlIC8gaW1hZ2UgbG9hZCBjaHVybnMgV2ViR0wgY29udGV4dHMgKGJyb3dzZXJzIGNhcFxuICAgIC8vIGhvdyBtYW55IGV4aXN0IGF0IG9uY2UpLCB3aGljaCBzdXJmYWNlcyBhcyBcIldlYkdMIGNvbnRleHQgd2FzIGxvc3RcIlxuICAgIC8vIGFuZCBibGFuayB0aWxlcy4gVGhlIGNhbnZhcyBkcmF3ZXIgaGFzIG5vIHN1Y2ggbGltaXQuXG4gICAgZHJhd2VyOiAnY2FudmFzJyxcbiAgICBzaG93TmF2aWdhdGlvbkNvbnRyb2w6IGZhbHNlLCAvLyBhdm9pZHMgbmVlZGluZyB0aGUgaWNvbi1pbWFnZSBhc3NldHNcbiAgICAvLyBPdmVydmlldyB0aHVtYm5haWwgd2l0aCB0aGUgY3VycmVudC12aWV3cG9ydCByZWN0YW5nbGUsIGJvdHRvbS1yaWdodC5cbiAgICBzaG93TmF2aWdhdG9yOiBpbnB1dC5uYXZpZ2F0b3JWaXNpYmxlLFxuICAgIC8vIE5lYXJlc3QtbmVpZ2hib3VyIHdoZW4gb2ZmIOKGkiBjcmlzcCBwaXhlbHMgb24gem9vbS1pbiAocGl4ZWwgaW5zcGVjdGlvbikuXG4gICAgaW1hZ2VTbW9vdGhpbmdFbmFibGVkOiBpbnB1dC5zbW9vdGhpbmcsXG4gICAgbmF2aWdhdG9yUG9zaXRpb246ICdCT1RUT01fUklHSFQnLFxuICAgIG5hdmlnYXRvclNpemVSYXRpbzogMC4xNixcbiAgICBuYXZpZ2F0b3JBdXRvRmFkZTogZmFsc2UsXG4gICAgbmF2aWdhdG9yQmFja2dyb3VuZDogJ3JnYmEoMCwwLDAsMC41KScsXG4gICAgbG9hZFRpbGVzV2l0aEFqYXg6IHRydWUsXG4gICAgYWpheFdpdGhDcmVkZW50aWFsczogdHJ1ZSwgLy8gY29va2llIGF1dGggKG9hdXRoMi1wcm94eSlcbiAgICBhamF4SGVhZGVyczogaW5wdXQuYXV0aEhlYWRlcnMsIC8vIGJlYXJlciBhdXRoIChBdXRoMCksIHdoZW4gYXZhaWxhYmxlXG4gICAgY3Jvc3NPcmlnaW5Qb2xpY3k6ICdBbm9ueW1vdXMnLFxuICAgIC8vIEdlbnRsZXIgem9vbTogdGhlIGRlZmF1bHQgKDEuMikgZmVlbHMgZmFzdCBhbmQgYmlnIGp1bXBzIGNyb3NzIHNldmVyYWxcbiAgICAvLyBweXJhbWlkIGxldmVscyBhdCBvbmNlLCBmaXJpbmcgYSBidXJzdCBvZiB0aWxlIHJlcXVlc3RzLiBTaGFyZWQgd2l0aCB0aGVcbiAgICAvLyByZWdpb24gb3ZlcmxheSwgd2hpY2ggdGFrZXMgdGhlIHdoZWVsIG92ZXIgd2hpbGUgYSB0b29sIGlzIGFjdGl2ZS5cbiAgICB6b29tUGVyU2Nyb2xsOiBPU0RfWk9PTV9QRVJfU0NST0xMLFxuICAgIC8vIENsaWNrLXRvLXpvb20gdG93YXJkIHRoZSBjbGlja2VkIHBvaW50IChPcGVuU2VhZHJhZ29uJ3MgZGVmYXVsdCBkZW1vXG4gICAgLy8gYmVoYXZpb3VyKS4gT25seSBhcHBsaWVzIHdoZW4gbm8gcmVnaW9uIHRvb2wgaXMgYWN0aXZlIOKAlCBhbiBhY3RpdmUgdG9vbFxuICAgIC8vIGRpc2FibGVzIE9TRCBtb3VzZS1uYXYgc28gY2xpY2tzIGRyYXcvc2VsZWN0IGluc3RlYWQgb2Ygem9vbWluZy5cbiAgICBnZXN0dXJlU2V0dGluZ3NNb3VzZTogeyBjbGlja1RvWm9vbTogdHJ1ZSwgc2Nyb2xsVG9ab29tOiB0cnVlIH0sXG4gICAgLy8gWm9vbSBsaW1pdHMgKGppdC11aSM5NCkuIERlZmF1bHQgbWluWm9vbUltYWdlUmF0aW8gKDAuOSkgc3RvcHMgeW91IGZyb21cbiAgICAvLyB6b29taW5nIHRoZSBpbWFnZSBzbWFsbGVyIHRoYW4gfmhvbWU7IGRyb3AgaXQgc28gdGhlIGltYWdlIGNhbiBiZSBzaHJ1bmtcbiAgICAvLyBmcmVlbHkgKGVmZmVjdGl2ZWx5IG5vIG1pbmltdW0pLiBEZWZhdWx0IG1heFpvb21QaXhlbFJhdGlvICgxLjEpIGNhcHNcbiAgICAvLyB6b29tLWluIGF0IH4xIHNjcmVlbiBweCBwZXIgaW1hZ2UgcHg7IHJhaXNlIGl0IHNvIHlvdSBjYW4gem9vbSBpbiB0b1xuICAgIC8vIGluc3BlY3QgaW5kaXZpZHVhbCBwaXhlbHMgKHBhaXJlZCB3aXRoIGltYWdlU21vb3RoaW5nRW5hYmxlZD1mYWxzZSBmb3JcbiAgICAvLyBjcmlzcCBuZWFyZXN0LW5laWdoYm91ciBibG9ja3MpLlxuICAgIG1pblpvb21JbWFnZVJhdGlvOiAwLjAxLFxuICAgIG1heFpvb21QaXhlbFJhdGlvOiAyMCxcbiAgICAvLyBPU0QncyBzdG9jayB2YWx1ZSwgcmVzdG9yZWQuIERPIE5PVCBSQUlTRSBJVDogdGhlIG5hbWUgcmVhZHMgbGlrZVxuICAgIC8vIFwibWluaW11bSBzaGFycG5lc3NcIiBidXQgaXQgaXMgdGhlIG9wcG9zaXRlLiBGcm9tIE9TRCdzIG93blxuICAgIC8vIFRpbGVkSW1hZ2UuX2dldExldmVsc0ludGVydmFsOlxuICAgIC8vXG4gICAgLy8gICBoaWdoZXN0TGV2ZWwgPSBmbG9vciggbG9nMiggY3VycmVudFplcm9SYXRpbyAvIG1pblBpeGVsUmF0aW8gKSApXG4gICAgLy9cbiAgICAvLyBtaW5QaXhlbFJhdGlvIGlzIGEgZmxvb3Igb24gaG93IHNtYWxsIGEgdGlsZSBwaXhlbCBtYXkgc2hyaW5rLCBhbmQgaXRcbiAgICAvLyBESVZJREVTIGludG8gdGhlIHJhdGlvIC0gc28gcmFpc2luZyBpdCBsb3dlcnMgdGhlIGNob3NlbiBsZXZlbCwgaS5lLlxuICAgIC8vIHBpY2tzIGEgQ09BUlNFUiBpbWFnZS4gT1NEJ3Mgb3duIGNvbW1lbnQgb24gdGhlIGRlZmF1bHQgc2F5cyBhcyBtdWNoOlxuICAgIC8vIFwiY2xvc2VyIHRvIDAgZHJhd3MgdGlsZXMgbWVhbnQgZm9yIGEgaGlnaGVyIHpvb20gYXQgdGhpcyB6b29tXCIuXG4gICAgLy9cbiAgICAvLyBNZWFzdXJlZCBvbiBhIGZsYXQgMjIzMDR4MjQ1MjggaW1hZ2UgKGxldmVscyA2OTcvMTM5NC8yNzg4LzU1NzYvMTExNTIvXG4gICAgLy8gMjIzMDQpLCBwcmVkaWN0ZWQgbGV2ZWwgbWF0Y2hpbmcgYWN0dWFsIGluIGFsbCBuaW5lIHRyaWFsczpcbiAgICAvL1xuICAgIC8vICAgICAgICAgICAgem9vbSAyICAgICAgICB6b29tIDggICAgICAgIH4xOjFcbiAgICAvLyAgIDEuMCAgICAgIDEuMzR4IHVwICAgICAgMS4zNHggdXAgICAgICAxLjg2eCB1cFxuICAgIC8vICAgMC41ICAgICAgMC42N3ggKG5vbmUpICAwLjY3eCAobm9uZSkgIDAuOTN4IC0+IGZ1bGwgcmVzXG4gICAgLy8gICAwLjI1ICAgICAwLjMzeCAgICAgICAgIDAuMzN4ICAgICAgICAgMC45M3hcbiAgICAvL1xuICAgIC8vIDAuNSBpcyB3aGF0IGdpdmVzIFwibmV2ZXIgdXBzY2FsZWQgYmVsb3cgbmF0aXZlLCBmdWxsIHJlc29sdXRpb24gYXQgMToxXCIuXG4gICAgLy8gMC4yNSBpcyBub3QgYmV0dGVyIC0gaXQganVtcHMgdHdvIHJ1bmdzIGZpbmVyIGFuZCBmZXRjaGVzIH40eCB0aGUgdGlsZXNcbiAgICAvLyBmb3Igbm8gdmlzaWJsZSBnYWluLCBhbmQgdGlsZXMgYXJlIG5vdCBjYWNoZWQgYnkgdGhlIGluZ3Jlc3MuXG4gICAgbWluUGl4ZWxSYXRpbzogMC41LFxuICAgIC8vIFdhaXQgZm9yIHRoZSB2aWV3IHRvIHNldHRsZSBiZWZvcmUgcHVsbGluZyBuZXcgdGlsZXMgKGxlc3MgY2h1cm4pLlxuICAgIGltbWVkaWF0ZVJlbmRlcjogZmFsc2UsXG4gICAgYW5pbWF0aW9uVGltZTogMC40LFxuICAgIC8vIFJlbGVhc2UgbWVtb3J5IGFnZ3Jlc3NpdmVseTogY2FwIHRoZSB0aWxlIGNhY2hlIHNvIHRpbGVzIG91dHNpZGUgdGhlXG4gICAgLy8gY3VycmVudCB2aWV3IChlLmcuIHRoZSBjb2Fyc2VyIGxldmVscyBsZWZ0IGJlaGluZCBhZnRlciB6b29taW5nIGluKSBhcmVcbiAgICAvLyBldmljdGVkIGluc3RlYWQgb2YgYWNjdW11bGF0aW5nLiBMYXJnZSB3aG9sZS1zbGlkZSB0aWxlcyDigJQgZG91YmxlZCB3aGVuXG4gICAgLy8gdGhlIGNvbG9ybWFwIHBpcGVsaW5lIGtlZXBzIGEgcmVjb2xvcmVkIGNvcHkg4oCUIG1ha2UgYW4gdW5ib3VuZGVkIGNhY2hlXG4gICAgLy8gY29zdGx5LiBUdW5hYmxlOyBsb3dlciA9IGxlc3MgbWVtb3J5LCBtb3JlIHJlLWZldGNoIG9uIHBhbi1iYWNrLlxuICAgIC8vIFN0YWNrcyBrZWVwIG1hbnkgc2xpY2VzIHJlc2lkZW50ICh0aGUgd2hvbGUgc3RhY2sgaXMgYmFja2dyb3VuZC1sb2FkZWQpLFxuICAgIC8vIHNvIHRoZXkgZ2V0IGEgbXVjaCBsYXJnZXIgdGlsZSBidWRnZXQg4oCUIG90aGVyd2lzZSBzd2l0Y2hpbmcgc2xpY2VzIGV2aWN0c1xuICAgIC8vIGVhY2ggb3RoZXIncyB0aWxlcyBhbmQgc2NydWJiaW5nIGJhY2sgcmUtZmV0Y2hlcy4gU2NhbGVkIHRvIHRoZSByZXNpZGVudFxuICAgIC8vIHNsaWNlIGNvdW50OyBzaW5nbGUgaW1hZ2VzIGtlZXAgdGhlIGxlYW4gZGVmYXVsdC5cbiAgICBtYXhJbWFnZUNhY2hlQ291bnQ6IGlucHV0LnNsaWNlQ291bnQgPiAxID8gTWF0aC5taW4oMjQwMCwgTWF0aC5tYXgoNjAwLCBpbnB1dC5tYXhTbGljZXMgKiA0MCkpIDogMTUwLFxuICB9O1xufVxuIl19
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnNlYWRyYWdvbi12aWV3ZXItb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvaW1wbGVtZW50YXRpb25zL29zZC9vcGVuc2VhZHJhZ29uLXZpZXdlci1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSw0QkFBNEI7SUFDMUMsTUFBTSxHQUFHLEdBQVEsR0FBVSxDQUFDO0lBQzVCLElBQUksR0FBRyxDQUFDLDJCQUEyQjtRQUFFLE9BQU87SUFDNUMsTUFBTSxJQUFJLEdBQ1IsR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLFVBQVU7UUFDcEQsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPO1FBQ2IsQ0FBQyxDQUFDLE9BQU8sT0FBTyxLQUFLLFdBQVc7WUFDOUIsQ0FBQyxDQUFDLE9BQU87WUFDVCxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2IsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPO0lBQ2xCLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlHLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFO1FBQzVCLEdBQUcsQ0FBQyxNQUFXLEVBQUUsSUFBWTtZQUMzQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxLQUFLLE1BQU0s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bUVBQW1FO1FBQ25FLDJFQUEyRTtRQUMzRSw0RUFBNEU7UUFDNUUsMkVBQTJFO1FBQzNFLG9EQUFvRDtRQUNwRCw0RkFBNEY7UUFDNUYsOEVBQThFO1FBQzlFLGtCQUFrQixFQUNoQixLQUFLLENBQUMsVUFBVSxHQUFHLENBQUM7WUFDbEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDckQsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0csMEZBQTBGO1FBQzFGLDRGQUE0RjtRQUM1RiwwRkFBMEY7UUFDMUYsMkZBQTJGO1FBQzNGLDBGQUEwRjtRQUMxRixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDdkYsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPU0QgfSBmcm9tICcuL29zZC1saWInO1xuaW1wb3J0IHsgT1NEX1pPT01fUEVSX1NDUk9MTCB9IGZyb20gJy4vb3NkLXpvb20nO1xuXG4vKipcbiAqIFF1aWV0IE9wZW5TZWFkcmFnb24ncyBcIltWaWV3cG9ydC4qXSBpcyBub3QgYWNjdXJhdGUgd2l0aCBtdWx0aS1pbWFnZVwiIGFkdmlzb3JpZXMuXG4gKiBBIG11bHRpY2hhbm5lbCBpbWFnZSBpcyBjb21wb3NpdGVkIGZyb20gb25lIFRpbGVkSW1hZ2UgcGVyIGNoYW5uZWwg4oCUIGEgbGVnaXRpbWF0ZVxuICogbXVsdGktaW1hZ2Ugd29ybGQg4oCUIGFuZCBPU0QgbG9ncyB0aGF0IGFkdmlzb3J5IChhdCBlcnJvciBsZXZlbCkgZnJvbSBpdHMgb3duXG4gKiBuYXZpZ2F0b3Ivb3ZlcnZpZXcgcmVuZGVyaW5nIG9uIGV2ZXJ5IGFuaW1hdGlvbiBmcmFtZSwgZmxvb2RpbmcgdGhlIGNvbnNvbGUuIE91clxuICogb3duIGltYWdlPC0+dmlld3BvcnQgY29udmVyc2lvbnMgYWxyZWFkeSByb3V0ZSB0aHJvdWdoIHdvcmxkIGl0ZW0gMCAoc2VlXG4gKiBvc2QtY29vcmRzKSwgc28gdGhlIHJlbWFpbmluZyBhZHZpc29yaWVzIGFyZSBPU0QtaW50ZXJuYWwgYW5kIG9ubHkgYWZmZWN0IHRoZVxuICogbWluaW1hcCdzIGJveCBhY2N1cmFjeSAoY29zbWV0aWMpLiBUaGlzIHdyYXBzIE9TRCdzIGxvZ2dlciBpbiBhIFByb3h5IHRoYXQgZHJvcHNcbiAqIG9ubHkgdGhhdCBvbmUgbWVzc2FnZSBzdHJpbmcgYW5kIGZvcndhcmRzIGV2ZXJ5IG90aGVyIGxvZyB1bnRvdWNoZWQuIElkZW1wb3RlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWxlbmNlT3NkTXVsdGlJbWFnZUFkdmlzb3J5KCk6IHZvaWQge1xuICBjb25zdCBvc2Q6IGFueSA9IE9TRCBhcyBhbnk7XG4gIGlmIChvc2QuX19tdWx0aUltYWdlRmlsdGVySW5zdGFsbGVkKSByZXR1cm47XG4gIGNvbnN0IGJhc2U6IGFueSA9XG4gICAgb3NkLmNvbnNvbGUgJiYgdHlwZW9mIG9zZC5jb25zb2xlLmVycm9yID09PSAnZnVuY3Rpb24nXG4gICAgICA/IG9zZC5jb25zb2xlXG4gICAgICA6IHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/IGNvbnNvbGVcbiAgICAgICAgOiBudWxsO1xuICBpZiAoIWJhc2UpIHJldHVybjtcbiAgY29uc3QgaXNBZHZpc29yeSA9IChhOiB1bmtub3duKSA9PiB0eXBlb2YgYSA9PT0gJ3N0cmluZycgJiYgYS5pbmRleE9mKCdub3QgYWNjdXJhdGUgd2l0aCBtdWx0aS1pbWFnZScpICE9PSAtMTtcbiAgb3NkLmNvbnNvbGUgPSBuZXcgUHJveHkoYmFzZSwge1xuICAgIGdldCh0YXJnZXQ6IGFueSwgcHJvcDogc3RyaW5nKSB7XG4gICAgICBjb25zdCBvcmlnID0gdGFyZ2V0W3Byb3BdO1xuICAgICAgaWYgKChwcm9wID09PSAnZXJyb3InIHx8IHByb3AgPT09ICd3YXJuJykgJiYgdHlwZW9mIG9yaWcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgIGlmIChpc0Fkdmlzb3J5KGFyZ3NbMF0pKSByZXR1cm47XG4gICAgICAgICAgb3JpZy5hcHBseSh0YXJnZXQsIGFyZ3MpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHR5cGVvZiBvcmlnID09PSAnZnVuY3Rpb24nID8gb3JpZy5iaW5kKHRhcmdldCkgOiBvcmlnO1xuICAgIH0sXG4gIH0pO1xuICBvc2QuX19tdWx0aUltYWdlRmlsdGVySW5zdGFsbGVkID0gdHJ1ZTtcbn1cblxuLyoqIFdoYXQge0BsaW5rIGJ1aWxkVmlld2VyT3B0aW9uc30gbmVlZHMgdG8ga25vdyBhYm91dCB0aGUgdmlld2VyIGJlaW5nIG1vdW50ZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdlck9wdGlvbnNJbnB1dCB7XG4gIC8qKiBUaGUgRE9NIGlkIE9TRCBtb3VudHMgaW50by4gKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIFNob3cgdGhlIG92ZXJ2aWV3IG5hdmlnYXRvciAobWluaW1hcCkuICovXG4gIG5hdmlnYXRvclZpc2libGU6IGJvb2xlYW47XG4gIC8qKiBCaWxpbmVhciBzbW9vdGhpbmc7IGZhbHNlIGdpdmVzIGNyaXNwIG5lYXJlc3QtbmVpZ2hib3VyIHBpeGVscy4gKi9cbiAgc21vb3RoaW5nOiBib29sZWFuO1xuICAvKiogQmVhcmVyIHRva2VuIGZvciBPU0QncyBvd24gdGlsZSBmZXRjaGVzIChpdHMgbG9hZGVyIGJ5cGFzc2VzIEh0dHBDbGllbnQpLiAqL1xuICBhdXRoSGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqIFNsaWNlcyBpbiB0aGUgaW1hZ2UgKDEgZm9yIGEgc2luZ2xlIGltYWdlKS4gKi9cbiAgc2xpY2VDb3VudDogbnVtYmVyO1xuICAvKiogSG93IG1hbnkgc2xpY2VzIHRoZSBzbGljZSBjYWNoZSBrZWVwcyByZXNpZGVudCAoc2VlIFNsaWNlQ2FjaGUubWF4U2xpY2VzKS4gKi9cbiAgbWF4U2xpY2VzOiBudW1iZXI7XG4gIC8qKiBUaWxlZCBpbWFnZXMgcGVyIHNsaWNlOiB0aGUgY2hhbm5lbCBjb3VudCB3aGVuIGNoYW5uZWxzIGFyZSBkcmF3biBwZXIgY2hhbm5lbCwgZWxzZSAxLiAqL1xuICBjaGFubmVsSW1hZ2VzPzogbnVtYmVyO1xufVxuXG4vKiogVGlsZSBjYWNoZSBlbnRyaWVzIGEgc2luZ2xlIGltYWdlIGtlZXBzIHBlciB0aWxlZCBpbWFnZSAob25lIHBlciBjaGFubmVsIHdoZW4gZHJhd24gcGVyIGNoYW5uZWwpLiAqL1xuY29uc3QgVElMRVNfUEVSX0lNQUdFID0gMTUwO1xuLyoqIFRoZSBtb3N0IHRpbGVzIGEgc2luZ2xlIHBlci1jaGFubmVsIGltYWdlIGtlZXBzIChlYWNoIGEgZGVjb2RlZCA1MTLCsiB0aWxlLCB+MSBNQikuICovXG5jb25zdCBNQVhfQ0hBTk5FTF9USUxFUyA9IDEyMDA7XG4vKiogVGlsZSByZXF1ZXN0cyBpbiBmbGlnaHQgYXQgb25jZSBmb3IgYW4gaW1hZ2UgZHJhd24gcGVyIGNoYW5uZWwuICovXG5jb25zdCBDSEFOTkVMX1JFUVVFU1RfTElNSVQgPSAxMjtcblxuLyoqXG4gKiBUaGUgb3B0aW9ucyBvYmplY3QgaGFuZGVkIHRvIHRoZSBPcGVuU2VhZHJhZ29uIGZhY3RvcnkuIFB1cmU6IGV2ZXJ5IHZhbHVlXG4gKiB0aGF0IGRlcGVuZHMgb24gdGhlIHNlcnZpY2UgY29tZXMgaW4gdGhyb3VnaCBgaW5wdXRgLlxuICpcbiAqIFRoZXNlIGFyZSBPU0QgY29uZmlnIGtleXMsIG5vdCBsaWJyYXJ5IGNvZGU6IE9TRCBzaWxlbnRseSBmYWxscyBiYWNrIHRvIGl0c1xuICogb3duIGRlZmF1bHQgd2hlbiBvbmUgaXMgbWlzc3BlbGxlZCBvciByZW5hbWVkIHVwc3RyZWFtLCBzbyB0aGUgdmFsdWVzIHdlIHJlbHlcbiAqIG9uIGFyZSBwaW5uZWQgYnkgYG9wZW5zZWFkcmFnb24tdmlld2VyLW9wdGlvbnMuc3BlYy50c2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFZpZXdlck9wdGlvbnMoaW5wdXQ6IFZpZXdlck9wdGlvbnNJbnB1dCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHtcbiAgICBpZDogaW5wdXQuaWQsXG4gICAgLy8gU2ltcGxlLW1vZGUgei1zY3J1YiBjYWxscyB2aWV3ZXIub3BlbigpIGFnYWluIHBlciBzbGljZSAoc2VlXG4gICAgLy8gc2V0WkluZGV4KSDigJQgd2l0aG91dCB0aGlzIGl0IHJlc2V0cyB0byB0aGUgaG9tZSB6b29tL3BhbiBvbiBldmVyeVxuICAgIC8vIHNsaWNlIGNoYW5nZS4gVGlsZWQgbW9kZSBuZXZlciByZS1vcGVucyAoaXQgdG9nZ2xlcyBwcmUtYWRkZWRcbiAgICAvLyBUaWxlZEltYWdlcycgb3BhY2l0eSBpbnN0ZWFkKSwgc28gdGhpcyBpcyBhIG5vLW9wIHRoZXJlLlxuICAgIHByZXNlcnZlVmlld3BvcnQ6IHRydWUsXG4gICAgLy8gVXNlIHRoZSAyRCBjYW52YXMgZHJhd2VyLCBub3QgV2ViR0w6IGNyZWF0aW5nL2Rlc3Ryb3lpbmcgYSB2aWV3ZXIgb25cbiAgICAvLyBlYWNoIGVuZ2luZSB0b2dnbGUgLyBpbWFnZSBsb2FkIGNodXJucyBXZWJHTCBjb250ZXh0cyAoYnJvd3NlcnMgY2FwXG4gICAgLy8gaG93IG1hbnkgZXhpc3QgYXQgb25jZSksIHdoaWNoIHN1cmZhY2VzIGFzIFwiV2ViR0wgY29udGV4dCB3YXMgbG9zdFwiXG4gICAgLy8gYW5kIGJsYW5rIHRpbGVzLiBUaGUgY2FudmFzIGRyYXdlciBoYXMgbm8gc3VjaCBsaW1pdC5cbiAgICBkcmF3ZXI6ICdjYW52YXMnLFxuICAgIHNob3dOYXZpZ2F0aW9uQ29udHJvbDogZmFsc2UsIC8vIGF2b2lkcyBuZWVkaW5nIHRoZSBpY29uLWltYWdlIGFzc2V0c1xuICAgIC8vIE92ZXJ2aWV3IHRodW1ibmFpbCB3aXRoIHRoZSBjdXJyZW50LXZpZXdwb3J0IHJlY3RhbmdsZSwgYm90dG9tLXJpZ2h0LlxuICAgIHNob3dOYXZpZ2F0b3I6IGlucHV0Lm5hdmlnYXRvclZpc2libGUsXG4gICAgLy8gTmVhcmVzdC1uZWlnaGJvdXIgd2hlbiBvZmYg4oaSIGNyaXNwIHBpeGVscyBvbiB6b29tLWluIChwaXhlbCBpbnNwZWN0aW9uKS5cbiAgICBpbWFnZVNtb290aGluZ0VuYWJsZWQ6IGlucHV0LnNtb290aGluZyxcbiAgICBuYXZpZ2F0b3JQb3NpdGlvbjogJ0JPVFRPTV9SSUdIVCcsXG4gICAgbmF2aWdhdG9yU2l6ZVJhdGlvOiAwLjE2LFxuICAgIG5hdmlnYXRvckF1dG9GYWRlOiBmYWxzZSxcbiAgICBuYXZpZ2F0b3JCYWNrZ3JvdW5kOiAncmdiYSgwLDAsMCwwLjUpJyxcbiAgICBsb2FkVGlsZXNXaXRoQWpheDogdHJ1ZSxcbiAgICBhamF4V2l0aENyZWRlbnRpYWxzOiB0cnVlLCAvLyBjb29raWUgYXV0aCAob2F1dGgyLXByb3h5KVxuICAgIGFqYXhIZWFkZXJzOiBpbnB1dC5hdXRoSGVhZGVycywgLy8gYmVhcmVyIGF1dGggKEF1dGgwKSwgd2hlbiBhdmFpbGFibGVcbiAgICBjcm9zc09yaWdpblBvbGljeTogJ0Fub255bW91cycsXG4gICAgLy8gR2VudGxlciB6b29tOiB0aGUgZGVmYXVsdCAoMS4yKSBmZWVscyBmYXN0IGFuZCBiaWcganVtcHMgY3Jvc3Mgc2V2ZXJhbFxuICAgIC8vIHB5cmFtaWQgbGV2ZWxzIGF0IG9uY2UsIGZpcmluZyBhIGJ1cnN0IG9mIHRpbGUgcmVxdWVzdHMuIFNoYXJlZCB3aXRoIHRoZVxuICAgIC8vIHJlZ2lvbiBvdmVybGF5LCB3aGljaCB0YWtlcyB0aGUgd2hlZWwgb3ZlciB3aGlsZSBhIHRvb2wgaXMgYWN0aXZlLlxuICAgIHpvb21QZXJTY3JvbGw6IE9TRF9aT09NX1BFUl9TQ1JPTEwsXG4gICAgLy8gQ2xpY2stdG8tem9vbSB0b3dhcmQgdGhlIGNsaWNrZWQgcG9pbnQgKE9wZW5TZWFkcmFnb24ncyBkZWZhdWx0IGRlbW9cbiAgICAvLyBiZWhhdmlvdXIpLiBPbmx5IGFwcGxpZXMgd2hlbiBubyByZWdpb24gdG9vbCBpcyBhY3RpdmUg4oCUIGFuIGFjdGl2ZSB0b29sXG4gICAgLy8gZGlzYWJsZXMgT1NEIG1vdXNlLW5hdiBzbyBjbGlja3MgZHJhdy9zZWxlY3QgaW5zdGVhZCBvZiB6b29taW5nLlxuICAgIGdlc3R1cmVTZXR0aW5nc01vdXNlOiB7IGNsaWNrVG9ab29tOiB0cnVlLCBzY3JvbGxUb1pvb206IHRydWUgfSxcbiAgICAvLyBab29tIGxpbWl0cyAoaml0LXVpIzk0KS4gRGVmYXVsdCBtaW5ab29tSW1hZ2VSYXRpbyAoMC45KSBzdG9wcyB5b3UgZnJvbVxuICAgIC8vIHpvb21pbmcgdGhlIGltYWdlIHNtYWxsZXIgdGhhbiB+aG9tZTsgZHJvcCBpdCBzbyB0aGUgaW1hZ2UgY2FuIGJlIHNocnVua1xuICAgIC8vIGZyZWVseSAoZWZmZWN0aXZlbHkgbm8gbWluaW11bSkuIERlZmF1bHQgbWF4Wm9vbVBpeGVsUmF0aW8gKDEuMSkgY2Fwc1xuICAgIC8vIHpvb20taW4gYXQgfjEgc2NyZWVuIHB4IHBlciBpbWFnZSBweDsgcmFpc2UgaXQgc28geW91IGNhbiB6b29tIGluIHRvXG4gICAgLy8gaW5zcGVjdCBpbmRpdmlkdWFsIHBpeGVscyAocGFpcmVkIHdpdGggaW1hZ2VTbW9vdGhpbmdFbmFibGVkPWZhbHNlIGZvclxuICAgIC8vIGNyaXNwIG5lYXJlc3QtbmVpZ2hib3VyIGJsb2NrcykuXG4gICAgbWluWm9vbUltYWdlUmF0aW86IDAuMDEsXG4gICAgbWF4Wm9vbVBpeGVsUmF0aW86IDIwLFxuICAgIC8vIE9TRCdzIHN0b2NrIHZhbHVlLCByZXN0b3JlZC4gRE8gTk9UIFJBSVNFIElUOiB0aGUgbmFtZSByZWFkcyBsaWtlXG4gICAgLy8gXCJtaW5pbXVtIHNoYXJwbmVzc1wiIGJ1dCBpdCBpcyB0aGUgb3Bwb3NpdGUuIEZyb20gT1NEJ3Mgb3duXG4gICAgLy8gVGlsZWRJbWFnZS5fZ2V0TGV2ZWxzSW50ZXJ2YWw6XG4gICAgLy9cbiAgICAvLyAgIGhpZ2hlc3RMZXZlbCA9IGZsb29yKCBsb2cyKCBjdXJyZW50WmVyb1JhdGlvIC8gbWluUGl4ZWxSYXRpbyApIClcbiAgICAvL1xuICAgIC8vIG1pblBpeGVsUmF0aW8gaXMgYSBmbG9vciBvbiBob3cgc21hbGwgYSB0aWxlIHBpeGVsIG1heSBzaHJpbmssIGFuZCBpdFxuICAgIC8vIERJVklERVMgaW50byB0aGUgcmF0aW8gLSBzbyByYWlzaW5nIGl0IGxvd2VycyB0aGUgY2hvc2VuIGxldmVsLCBpLmUuXG4gICAgLy8gcGlja3MgYSBDT0FSU0VSIGltYWdlLiBPU0QncyBvd24gY29tbWVudCBvbiB0aGUgZGVmYXVsdCBzYXlzIGFzIG11Y2g6XG4gICAgLy8gXCJjbG9zZXIgdG8gMCBkcmF3cyB0aWxlcyBtZWFudCBmb3IgYSBoaWdoZXIgem9vbSBhdCB0aGlzIHpvb21cIi5cbiAgICAvL1xuICAgIC8vIE1lYXN1cmVkIG9uIGEgZmxhdCAyMjMwNHgyNDUyOCBpbWFnZSAobGV2ZWxzIDY5Ny8xMzk0LzI3ODgvNTU3Ni8xMTE1Mi9cbiAgICAvLyAyMjMwNCksIHByZWRpY3RlZCBsZXZlbCBtYXRjaGluZyBhY3R1YWwgaW4gYWxsIG5pbmUgdHJpYWxzOlxuICAgIC8vXG4gICAgLy8gICAgICAgICAgICB6b29tIDIgICAgICAgIHpvb20gOCAgICAgICAgfjE6MVxuICAgIC8vICAgMS4wICAgICAgMS4zNHggdXAgICAgICAxLjM0eCB1cCAgICAgIDEuODZ4IHVwXG4gICAgLy8gICAwLjUgICAgICAwLjY3eCAobm9uZSkgIDAuNjd4IChub25lKSAgMC45M3ggLT4gZnVsbCByZXNcbiAgICAvLyAgIDAuMjUgICAgIDAuMzN4ICAgICAgICAgMC4zM3ggICAgICAgICAwLjkzeFxuICAgIC8vXG4gICAgLy8gMC41IGlzIHdoYXQgZ2l2ZXMgXCJuZXZlciB1cHNjYWxlZCBiZWxvdyBuYXRpdmUsIGZ1bGwgcmVzb2x1dGlvbiBhdCAxOjFcIi5cbiAgICAvLyAwLjI1IGlzIG5vdCBiZXR0ZXIgLSBpdCBqdW1wcyB0d28gcnVuZ3MgZmluZXIgYW5kIGZldGNoZXMgfjR4IHRoZSB0aWxlc1xuICAgIC8vIGZvciBubyB2aXNpYmxlIGdhaW4sIGFuZCB0aWxlcyBhcmUgbm90IGNhY2hlZCBieSB0aGUgaW5ncmVzcy5cbiAgICBtaW5QaXhlbFJhdGlvOiAwLjUsXG4gICAgLy8gV2FpdCBmb3IgdGhlIHZpZXcgdG8gc2V0dGxlIGJlZm9yZSBwdWxsaW5nIG5ldyB0aWxlcyAobGVzcyBjaHVybikuXG4gICAgaW1tZWRpYXRlUmVuZGVyOiBmYWxzZSxcbiAgICBhbmltYXRpb25UaW1lOiAwLjQsXG4gICAgLy8gUmVsZWFzZSBtZW1vcnkgYWdncmVzc2l2ZWx5OiBjYXAgdGhlIHRpbGUgY2FjaGUgc28gdGlsZXMgb3V0c2lkZSB0aGVcbiAgICAvLyBjdXJyZW50IHZpZXcgKGUuZy4gdGhlIGNvYXJzZXIgbGV2ZWxzIGxlZnQgYmVoaW5kIGFmdGVyIHpvb21pbmcgaW4pIGFyZVxuICAgIC8vIGV2aWN0ZWQgaW5zdGVhZCBvZiBhY2N1bXVsYXRpbmcuIExhcmdlIHdob2xlLXNsaWRlIHRpbGVzIOKAlCBkb3VibGVkIHdoZW5cbiAgICAvLyB0aGUgY29sb3JtYXAgcGlwZWxpbmUga2VlcHMgYSByZWNvbG9yZWQgY29weSDigJQgbWFrZSBhbiB1bmJvdW5kZWQgY2FjaGVcbiAgICAvLyBjb3N0bHkuIFR1bmFibGU7IGxvd2VyID0gbGVzcyBtZW1vcnksIG1vcmUgcmUtZmV0Y2ggb24gcGFuLWJhY2suXG4gICAgLy8gU3RhY2tzIGtlZXAgbWFueSBzbGljZXMgcmVzaWRlbnQgKHRoZSB3aG9sZSBzdGFjayBpcyBiYWNrZ3JvdW5kLWxvYWRlZCksXG4gICAgLy8gc28gdGhleSBnZXQgYSBtdWNoIGxhcmdlciB0aWxlIGJ1ZGdldCDigJQgb3RoZXJ3aXNlIHN3aXRjaGluZyBzbGljZXMgZXZpY3RzXG4gICAgLy8gZWFjaCBvdGhlcidzIHRpbGVzIGFuZCBzY3J1YmJpbmcgYmFjayByZS1mZXRjaGVzLiBTY2FsZWQgdG8gdGhlIHJlc2lkZW50XG4gICAgLy8gc2xpY2UgY291bnQ7IHNpbmdsZSBpbWFnZXMga2VlcCB0aGUgbGVhbiBkZWZhdWx0LlxuICAgIC8vIEEgc2luZ2xlIGltYWdlIGRyYXduIHBlciBjaGFubmVsIG5lZWRzIHJvb20gZm9yIGV2ZXJ5IHZpc2libGUgY2hhbm5lbCdzIHRpbGVzIGluIHZpZXc6IGF0XG4gICAgLy8gMTUwIGEgMjItY2hhbm5lbCBwbGF0ZSBldmljdGVkIHRpbGVzIHdoaWxlIHRoZXkgd2VyZSBzdGlsbCBiZWluZyBjb252ZXJ0ZWQuXG4gICAgbWF4SW1hZ2VDYWNoZUNvdW50OlxuICAgICAgaW5wdXQuc2xpY2VDb3VudCA+IDFcbiAgICAgICAgPyBNYXRoLm1pbigyNDAwLCBNYXRoLm1heCg2MDAsIGlucHV0Lm1heFNsaWNlcyAqIDQwKSlcbiAgICAgICAgOiBNYXRoLm1pbihNQVhfQ0hBTk5FTF9USUxFUywgVElMRVNfUEVSX0lNQUdFICogTWF0aC5tYXgoMSwgTWF0aC5jZWlsKChpbnB1dC5jaGFubmVsSW1hZ2VzID8/IDEpIC8gMikpKSxcbiAgICAvLyBPU0Qgc2VuZHMgZXZlcnkgdGlsZSByZXF1ZXN0IGF0IG9uY2UgYnkgZGVmYXVsdCAoaW1hZ2VMb2FkZXJMaW1pdCAwKSBhbmQgdGltZXMgZWFjaCBvdXRcbiAgICAvLyBhZnRlciAzMCBzIGZyb20gd2hlbiBpdCBpcyBzZW50LiBBIHZpZXcgb2YgYSAyMi1jaGFubmVsIGltYWdlIGFza3MgZm9yIGh1bmRyZWRzIG9mIHRpbGVzO1xuICAgIC8vIHRoZSBicm93c2VyIGhvbGRzIGFsbCBidXQgYSBmZXcgY29ubmVjdGlvbnMnIHdvcnRoIGJhY2ssIHNvIHRob3NlIHRpbWVkIG91dCB3aGlsZSBzdGlsbFxuICAgIC8vIHdhaXRpbmcgdGhlaXIgdHVybi4gTGltaXRlZCwgdGhleSB3YWl0IGluIE9TRCdzIHF1ZXVlIChub3QgdGltZWQpLCB3aGVyZSBhIGNoYW5uZWwgYmVpbmdcbiAgICAvLyBoaWRkZW4gZHJvcHMgaXRzIG93biAoU2xpY2VDYWNoZS5yZXZlYWxDaGFubmVsU2xpY2UpLiBTaW5nbGUgaW1hZ2VzIGtlZXAgT1NEJ3MgZGVmYXVsdC5cbiAgICAuLi4oKGlucHV0LmNoYW5uZWxJbWFnZXMgPz8gMSkgPiAxID8geyBpbWFnZUxvYWRlckxpbWl0OiBDSEFOTkVMX1JFUVVFU1RfTElNSVQgfSA6IHt9KSxcbiAgfTtcbn1cbiJdfQ==