@scion/workbench 18.0.0-beta.1 → 18.0.0-beta.3

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 (111) hide show
  1. package/_index.scss +3 -3
  2. package/design/_workbench-icon-font.scss +1 -1
  3. package/esm2022/lib/common/objects.util.mjs +7 -1
  4. package/esm2022/lib/common/uid.util.mjs +22 -0
  5. package/esm2022/lib/content-projection/content-projection.directive.mjs +16 -17
  6. package/esm2022/lib/dialog//311/265workbench-dialog.mjs +3 -3
  7. package/esm2022/lib/filter-field/filter-field.component.mjs +5 -5
  8. package/esm2022/lib/layout/grid-element/grid-element.component.mjs +6 -16
  9. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v5.model.mjs +11 -0
  10. package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +2 -2
  11. package/esm2022/lib/layout/migration/workbench-layout-migration-v5.service.mjs +67 -0
  12. package/esm2022/lib/layout/stringifier.mjs +70 -0
  13. package/esm2022/lib/layout/workbench-layout.model.mjs +1 -1
  14. package/esm2022/lib/layout/workench-layout-serializer.service.mjs +16 -25
  15. package/esm2022/lib/layout//311/265workbench-layout.mjs +14 -18
  16. package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +18 -1
  17. package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +28 -21
  18. package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +11 -1
  19. package/esm2022/lib/microfrontend-platform/manifest-object-cache.service.mjs +63 -0
  20. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +5 -4
  21. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +2 -2
  22. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.mjs +3 -3
  23. package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +3 -2
  24. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.mjs +3 -2
  25. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +2 -2
  26. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.mjs +39 -0
  27. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.mjs +120 -0
  28. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.mjs +55 -0
  29. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.mjs +19 -0
  30. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +4 -3
  31. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +2 -13
  32. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +1 -16
  33. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +42 -17
  34. package/esm2022/lib/microfrontend-platform/public_api.mjs +2 -1
  35. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +5 -4
  36. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +7 -4
  37. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +26 -4
  38. package/esm2022/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.mjs +32 -0
  39. package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +23 -5
  40. package/esm2022/lib/page-not-found/format-url.pipe.mjs +2 -2
  41. package/esm2022/lib/page-not-found/page-not-found.component.mjs +3 -3
  42. package/esm2022/lib/part/part.component.mjs +3 -5
  43. package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +3 -3
  44. package/esm2022/lib/perspective/workbench-perspective.model.mjs +1 -1
  45. package/esm2022/lib/perspective/workbench-perspective.service.mjs +61 -51
  46. package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +11 -2
  47. package/esm2022/lib/popup/popup.config.mjs +3 -3
  48. package/esm2022/lib/portal/wb-component-portal.mjs +3 -1
  49. package/esm2022/lib/routing/public_api.mjs +1 -2
  50. package/esm2022/lib/routing/routing.model.mjs +1 -1
  51. package/esm2022/lib/routing/workbench-auxiliary-route-installer.service.mjs +94 -0
  52. package/esm2022/lib/routing/workbench-layout-differ.mjs +3 -10
  53. package/esm2022/lib/routing/workbench-url-observer.service.mjs +31 -27
  54. package/esm2022/lib/routing/workbench-view-outlet-differ.mjs +58 -0
  55. package/esm2022/lib/routing//311/265workbench-router.service.mjs +2 -2
  56. package/esm2022/lib/view/view-move-handler.service.mjs +5 -5
  57. package/esm2022/lib/view/view.component.mjs +38 -25
  58. package/esm2022/lib/view/workbench-view-route-guards.mjs +2 -2
  59. package/esm2022/lib/view//311/265workbench-view.model.mjs +25 -19
  60. package/esm2022/lib/view-dnd/grid-drop-targets.util.mjs +2 -2
  61. package/esm2022/lib/workbench-config.mjs +1 -1
  62. package/esm2022/lib/workbench-id.mjs +3 -3
  63. package/esm2022/lib/workbench.component.mjs +2 -2
  64. package/esm2022/lib/workbench.constants.mjs +1 -5
  65. package/esm2022/lib/workbench.provider.mjs +3 -9
  66. package/fesm2022/scion-workbench.mjs +855 -326
  67. package/fesm2022/scion-workbench.mjs.map +1 -1
  68. package/lib/common/objects.util.d.ts +4 -0
  69. package/lib/common/uid.util.d.ts +9 -0
  70. package/lib/dialog//311/265workbench-dialog.d.ts +1 -1
  71. package/lib/filter-field/filter-field.component.d.ts +1 -1
  72. package/lib/layout/grid-element/grid-element.component.d.ts +1 -8
  73. package/lib/layout/migration/model/workbench-layout-migration-v5.model.d.ts +32 -0
  74. package/lib/layout/migration/workbench-layout-migration-v5.service.d.ts +12 -0
  75. package/lib/layout/stringifier.d.ts +26 -0
  76. package/lib/layout/workbench-layout.model.d.ts +3 -3
  77. package/lib/layout/workench-layout-serializer.service.d.ts +13 -15
  78. package/lib/layout//311/265workbench-layout.d.ts +3 -3
  79. package/lib/microfrontend-platform/common/microfrontend.util.d.ts +5 -1
  80. package/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.d.ts +7 -3
  81. package/lib/microfrontend-platform/manifest-object-cache.service.d.ts +33 -0
  82. package/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.d.ts +1 -1
  83. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.d.ts +10 -0
  84. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.d.ts +24 -0
  85. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.d.ts +20 -0
  86. package/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.d.ts +9 -0
  87. package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.d.ts +0 -4
  88. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.d.ts +0 -4
  89. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.d.ts +7 -2
  90. package/lib/microfrontend-platform/public_api.d.ts +1 -0
  91. package/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.d.ts +1 -1
  92. package/lib/microfrontend-platform/routing/microfrontend-view-routes.d.ts +9 -2
  93. package/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.d.ts +11 -0
  94. package/lib/perspective/workbench-perspective.model.d.ts +16 -17
  95. package/lib/perspective/workbench-perspective.service.d.ts +15 -7
  96. package/lib/perspective//311/265workbench-perspective.model.d.ts +4 -0
  97. package/lib/routing/public_api.d.ts +0 -1
  98. package/lib/routing/{workbench-auxiliary-routes-registrator.service.d.ts → workbench-auxiliary-route-installer.service.d.ts} +3 -3
  99. package/lib/routing/workbench-layout-differ.d.ts +1 -2
  100. package/lib/routing/workbench-url-observer.service.d.ts +5 -3
  101. package/lib/routing/workbench-view-outlet-differ.d.ts +32 -0
  102. package/lib/view/view.component.d.ts +8 -7
  103. package/lib/view//311/265workbench-view.model.d.ts +11 -7
  104. package/lib/workbench-config.d.ts +2 -2
  105. package/lib/workbench.constants.d.ts +0 -5
  106. package/package.json +3 -3
  107. package/esm2022/lib/common/uuid.util.mjs +0 -17
  108. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.mjs +0 -41
  109. package/esm2022/lib/routing/workbench-auxiliary-routes-registrator.service.mjs +0 -94
  110. package/lib/common/uuid.util.d.ts +0 -8
  111. package/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.d.ts +0 -10
package/_index.scss CHANGED
@@ -99,7 +99,7 @@
99
99
  * ```scss
100
100
  * @use '@scion/workbench' with (
101
101
  * $icon-font: (
102
- * directory: '/path/to/font', // defaults to '/assets/fonts' if omitted
102
+ * directory: '/path/to/font', // defaults to '/fonts' if omitted
103
103
  * filename: 'scion-workbench-icons' // defaults to 'scion-workbench-icons' if omitted
104
104
  * version: '1.0.0' // appended to the HTTP request to load the icon font, enabling browser cache invalidation when icons change
105
105
  * );
@@ -116,7 +116,7 @@
116
116
  * ```scss
117
117
  * @use '@scion/workbench' with (
118
118
  * $icon-font: (
119
- * directory: 'path/to/font' // no leading slash, typically `assets/fonts`
119
+ * directory: 'path/to/font' // no leading slash, typically `fonts`
120
120
  * )
121
121
  * );
122
122
  * ```
@@ -134,7 +134,7 @@
134
134
  * ```scss
135
135
  * @use '@scion/workbench' with (
136
136
  * $icon-font: (
137
- * directory: '^path/to/font' // no leading slash but with a caret (^), typically `^assets/fonts`
137
+ * directory: '^path/to/font' // no leading slash but with a caret (^), typically `^fonts`
138
138
  * )
139
139
  * );
140
140
  * ```
@@ -21,7 +21,7 @@ $-default-icon-font-config: (
21
21
  // To keep the workbench configuration minimal for Angular projects deployed in the context root, we reference font files by
22
22
  // their root relative path. Consequently, applications deployed in a subdirectory require additional configuration depending
23
23
  // on whether the application is built with esbuild or webpack.
24
- directory: '/assets/fonts',
24
+ directory: '/fonts',
25
25
  filename: 'scion-workbench-icons',
26
26
  version: $-version,
27
27
  );
@@ -30,5 +30,11 @@ export const Objects = {
30
30
  withoutUndefinedEntries: (object) => {
31
31
  return Dictionaries.withoutUndefinedEntries(object);
32
32
  },
33
+ /**
34
+ * Stringifies given object to matrix notation: a=b;c=d;e=f
35
+ */
36
+ toMatrixNotation: (object) => {
37
+ return Object.entries(object ?? {}).map(([key, value]) => `${key}=${value}`).join(';');
38
+ },
33
39
  };
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0cy51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvY29tbW9uL29iamVjdHMudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRztJQUVyQjs7T0FFRztJQUNILElBQUksRUFBRSxDQUFJLE1BQVMsRUFBa0IsRUFBRTtRQUNyQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBa0MsQ0FBbUIsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPLEVBQUUsQ0FBZ0IsTUFBd0MsRUFBaUIsRUFBRTtRQUNsRixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFrQixDQUFDO0lBQ2pELENBQUM7SUFFRDs7T0FFRztJQUNILHVCQUF1QixFQUFFLENBQUksTUFBbUMsRUFBSyxFQUFFO1FBQ3JFLE9BQU8sWUFBWSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBTSxDQUFDO0lBQzNELENBQUM7Q0FDTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDI0IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0RpY3Rpb25hcmllc30gZnJvbSAnQHNjaW9uL3Rvb2xraXQvdXRpbCc7XG5cbi8qKlxuICogUHJvdmlkZXMgaGVscGVyIGZ1bmN0aW9ucyBmb3Igd29ya2luZyB3aXRoIG9iamVjdHMuXG4gKi9cbmV4cG9ydCBjb25zdCBPYmplY3RzID0ge1xuXG4gIC8qKlxuICAgKiBMaWtlIHtAbGluayBPYmplY3Qua2V5c30sIGJ1dCBwcmVzZXJ2aW5nIHRoZSBkYXRhIHR5cGUgb2Yga2V5cy5cbiAgICovXG4gIGtleXM6IDxUPihvYmplY3Q6IFQpOiBBcnJheTxrZXlvZiBUPiA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCBhcyBSZWNvcmQ8a2V5b2YgVCwgdW5rbm93bj4pIGFzIEFycmF5PGtleW9mIFQ+O1xuICB9LFxuXG4gIC8qKlxuICAgKiBMaWtlIHtAbGluayBPYmplY3QuZW50cmllc30sIGJ1dCBwcmVzZXJ2aW5nIHRoZSBkYXRhIHR5cGUgb2Yga2V5cy5cbiAgICovXG4gIGVudHJpZXM6IDxWLCBLID0gc3RyaW5nPihvYmplY3Q6IFJlY29yZDxzdHJpbmcsIFY+IHwgQXJyYXlMaWtlPFY+KTogQXJyYXk8W0ssIFZdPiA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iamVjdCkgYXMgQXJyYXk8W0ssIFZdPjtcbiAgfSxcblxuICAvKipcbiAgICogTGlrZSB7QGxpbmsgRGljdGlvbmFyaWVzLndpdGhvdXRVbmRlZmluZWRFbnRyaWVzfSwgYnV0IHByZXNlcnZpbmcgdGhlIG9iamVjdCBkYXRhIHR5cGUuXG4gICAqL1xuICB3aXRob3V0VW5kZWZpbmVkRW50cmllczogPFQ+KG9iamVjdDogVCAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogVCA9PiB7XG4gICAgcmV0dXJuIERpY3Rpb25hcmllcy53aXRob3V0VW5kZWZpbmVkRW50cmllcyhvYmplY3QpIGFzIFQ7XG4gIH0sXG59IGFzIGNvbnN0O1xuIl19
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0cy51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvY29tbW9uL29iamVjdHMudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRztJQUVyQjs7T0FFRztJQUNILElBQUksRUFBRSxDQUFJLE1BQVMsRUFBa0IsRUFBRTtRQUNyQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBa0MsQ0FBbUIsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPLEVBQUUsQ0FBZ0IsTUFBd0MsRUFBaUIsRUFBRTtRQUNsRixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFrQixDQUFDO0lBQ2pELENBQUM7SUFFRDs7T0FFRztJQUNILHVCQUF1QixFQUFFLENBQUksTUFBbUMsRUFBSyxFQUFFO1FBQ3JFLE9BQU8sWUFBWSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBTSxDQUFDO0lBQzNELENBQUM7SUFDRDs7T0FFRztJQUNILGdCQUFnQixFQUFFLENBQUMsTUFBa0QsRUFBVSxFQUFFO1FBQy9FLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7Q0FDTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDI0IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0RpY3Rpb25hcmllc30gZnJvbSAnQHNjaW9uL3Rvb2xraXQvdXRpbCc7XG5cbi8qKlxuICogUHJvdmlkZXMgaGVscGVyIGZ1bmN0aW9ucyBmb3Igd29ya2luZyB3aXRoIG9iamVjdHMuXG4gKi9cbmV4cG9ydCBjb25zdCBPYmplY3RzID0ge1xuXG4gIC8qKlxuICAgKiBMaWtlIHtAbGluayBPYmplY3Qua2V5c30sIGJ1dCBwcmVzZXJ2aW5nIHRoZSBkYXRhIHR5cGUgb2Yga2V5cy5cbiAgICovXG4gIGtleXM6IDxUPihvYmplY3Q6IFQpOiBBcnJheTxrZXlvZiBUPiA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCBhcyBSZWNvcmQ8a2V5b2YgVCwgdW5rbm93bj4pIGFzIEFycmF5PGtleW9mIFQ+O1xuICB9LFxuXG4gIC8qKlxuICAgKiBMaWtlIHtAbGluayBPYmplY3QuZW50cmllc30sIGJ1dCBwcmVzZXJ2aW5nIHRoZSBkYXRhIHR5cGUgb2Yga2V5cy5cbiAgICovXG4gIGVudHJpZXM6IDxWLCBLID0gc3RyaW5nPihvYmplY3Q6IFJlY29yZDxzdHJpbmcsIFY+IHwgQXJyYXlMaWtlPFY+KTogQXJyYXk8W0ssIFZdPiA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iamVjdCkgYXMgQXJyYXk8W0ssIFZdPjtcbiAgfSxcblxuICAvKipcbiAgICogTGlrZSB7QGxpbmsgRGljdGlvbmFyaWVzLndpdGhvdXRVbmRlZmluZWRFbnRyaWVzfSwgYnV0IHByZXNlcnZpbmcgdGhlIG9iamVjdCBkYXRhIHR5cGUuXG4gICAqL1xuICB3aXRob3V0VW5kZWZpbmVkRW50cmllczogPFQ+KG9iamVjdDogVCAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogVCA9PiB7XG4gICAgcmV0dXJuIERpY3Rpb25hcmllcy53aXRob3V0VW5kZWZpbmVkRW50cmllcyhvYmplY3QpIGFzIFQ7XG4gIH0sXG4gIC8qKlxuICAgKiBTdHJpbmdpZmllcyBnaXZlbiBvYmplY3QgdG8gbWF0cml4IG5vdGF0aW9uOiBhPWI7Yz1kO2U9ZlxuICAgKi9cbiAgdG9NYXRyaXhOb3RhdGlvbjogKG9iamVjdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqZWN0ID8/IHt9KS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fT0ke3ZhbHVlfWApLmpvaW4oJzsnKTtcbiAgfSxcbn0gYXMgY29uc3Q7XG4iXX0=
@@ -0,0 +1,22 @@
1
+ /*
2
+ * Copyright (c) 2018-2024 Swiss Federal Railways
3
+ *
4
+ * This program and the accompanying materials are made
5
+ * available under the terms of the Eclipse Public License 2.0
6
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
7
+ *
8
+ * SPDX-License-Identifier: EPL-2.0
9
+ */
10
+ import { UUID } from '@scion/toolkit/uuid';
11
+ /**
12
+ * Generates a UID (unique identifier).
13
+ */
14
+ export const UID = {
15
+ /**
16
+ * Generates a UID (unique identifier) with length 8.
17
+ */
18
+ randomUID: () => {
19
+ return UUID.randomUUID().substring(0, 8);
20
+ },
21
+ };
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlkLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9jb21tb24vdWlkLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFekM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUc7SUFDakI7O09BRUc7SUFDSCxTQUFTLEVBQUUsR0FBVyxFQUFFO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjQgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7VVVJRH0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvdXVpZCc7XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgVUlEICh1bmlxdWUgaWRlbnRpZmllcikuXG4gKi9cbmV4cG9ydCBjb25zdCBVSUQgPSB7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBVSUQgKHVuaXF1ZSBpZGVudGlmaWVyKSB3aXRoIGxlbmd0aCA4LlxuICAgKi9cbiAgcmFuZG9tVUlEOiAoKTogc3RyaW5nID0+IHtcbiAgICByZXR1cm4gVVVJRC5yYW5kb21VVUlEKCkuc3Vic3RyaW5nKDAsIDgpO1xuICB9LFxufTtcblxuXG4iXX0=
@@ -10,8 +10,8 @@
10
10
  import { Directive, Input, Optional } from '@angular/core';
11
11
  import { fromDimension$ } from '@scion/toolkit/observable';
12
12
  import { setStyle } from '../common/dom.util';
13
- import { Subject } from 'rxjs';
14
- import { takeUntil } from 'rxjs/operators';
13
+ import { animationFrameScheduler, EMPTY, merge, Subject } from 'rxjs';
14
+ import { filter, observeOn, takeUntil } from 'rxjs/operators';
15
15
  import * as i0 from "@angular/core";
16
16
  import * as i1 from "../view/\u0275workbench-view.model";
17
17
  /**
@@ -35,17 +35,12 @@ export class ContentProjectionDirective {
35
35
  this._contentViewRef.onDestroy(() => dispose$.next());
36
36
  // Position projected content out of the document flow relative to the page viewport.
37
37
  this.styleContent({ position: 'fixed' });
38
- // Align content each time the bounding box element changes its size.
39
- fromDimension$(this._host.nativeElement)
40
- .pipe(takeUntil(dispose$))
41
- .subscribe(dimension => {
42
- if (isNullDimension(dimension)) {
43
- // When removing the bounding box element (this directive's host) from the DOM, its dimension drops to 0.
44
- // We ignore this event to preserve the dimension of projected content, crucial, for example, if projected
45
- // content implements virtual scrolling. Otherwise, its content would reload when adding the host to the DOM again.
46
- // For example, inactive views are removed from the DOM.
47
- return;
48
- }
38
+ // Align content each time the size of the host element changes, or when the content is attached to the DOM.
39
+ // For example, moving a view to another part of the same size will not trigger a dimension change event.
40
+ merge(fromDimension$(this._host.nativeElement), this._view?.portal.attached$.pipe(filter(Boolean)) ?? EMPTY)
41
+ .pipe(observeOn(animationFrameScheduler), // Align to host boundaries right before the next repaint.
42
+ takeUntil(dispose$))
43
+ .subscribe(() => {
49
44
  this.alignContentToHostBoundaries();
50
45
  });
51
46
  // Hide content when contextual view is detached, e.g., if not active, or located in the peripheral area and the main area is maximized.
@@ -60,6 +55,13 @@ export class ContentProjectionDirective {
60
55
  */
61
56
  alignContentToHostBoundaries() {
62
57
  const hostPosition = this._host.nativeElement.getBoundingClientRect();
58
+ if (!hostPosition.width && !hostPosition.height) {
59
+ // When removing the bounding box element (this directive's host) from the DOM, its dimension drops to 0.
60
+ // We ignore this event to preserve the dimension of projected content, crucial, for example, if projected
61
+ // content implements virtual scrolling. Otherwise, its content would reload when adding the host to the DOM again.
62
+ // For example, inactive views are removed from the DOM.
63
+ return;
64
+ }
63
65
  this.styleContent({
64
66
  top: `${hostPosition.top}px`,
65
67
  left: `${hostPosition.left}px`,
@@ -95,7 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
95
97
  type: Input,
96
98
  args: [{ alias: 'wbContentProjectionContent', required: true }]
97
99
  }] } });
98
- function isNullDimension(dimension) {
99
- return dimension.offsetWidth === 0 && dimension.offsetHeight === 0;
100
- }
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wcm9qZWN0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL2NvbnRlbnQtcHJvamVjdGlvbi9jb250ZW50LXByb2plY3Rpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBK0IsS0FBSyxFQUF3QixRQUFRLEVBQStDLE1BQU0sZUFBZSxDQUFDO0FBRTFKLE9BQU8sRUFBWSxjQUFjLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7OztBQUV6Qzs7R0FFRztBQUVILE1BQU0sT0FBTywwQkFBMEI7SUFnQnJDLFlBQW9CLEtBQThCLEVBQXNCLEtBQXFCO1FBQXpFLFVBQUssR0FBTCxLQUFLLENBQXlCO1FBQXNCLFVBQUssR0FBTCxLQUFLLENBQWdCO0lBQzdGLENBQUM7SUFFTSxXQUFXLENBQUMsT0FBc0I7UUFDdkMsSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUVoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE9BQU87UUFDVCxDQUFDO1FBRUQsNkZBQTZGO1FBQzdGLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVyQyw2QkFBNkI7UUFDN0IsTUFBTSxRQUFRLEdBQUcsSUFB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IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRW1iZWRkZWRWaWV3UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge8m1V29ya2JlbmNoVmlld30gZnJvbSAnLi4vdmlldy/JtXdvcmtiZW5jaC12aWV3Lm1vZGVsJztcbmltcG9ydCB7RGltZW5zaW9uLCBmcm9tRGltZW5zaW9uJH0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvb2JzZXJ2YWJsZSc7XG5pbXBvcnQge3NldFN0eWxlfSBmcm9tICcuLi9jb21tb24vZG9tLnV0aWwnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7dGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKlxuICogUmVuZGVycyBhIGdpdmVuIHRlbXBsYXRlIGFzIG92ZXJsYXkuIFRoZSB0ZW1wbGF0ZSB3aWxsIHN0aWNrIHRvIHRoZSBib3VuZGluZyBib3ggb2YgdGhlIGhvc3QgZWxlbWVudCBvZiB0aGlzIGRpcmVjdGl2ZS5cbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbd2JDb250ZW50UHJvamVjdGlvbl0nLCBzdGFuZGFsb25lOiB0cnVlfSlcbmV4cG9ydCBjbGFzcyBDb250ZW50UHJvamVjdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcblxuICBwcml2YXRlIF9jb250ZW50Vmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIHZpZXcgY29udGFpbmVyIHdoZXJlIHRvIGluc2VydCB0aGUgb3ZlcmxheS5cbiAgICovXG4gIEBJbnB1dCh7YWxpYXM6ICd3YkNvbnRlbnRQcm9qZWN0aW9uT3ZlcmxheUhvc3QnLCByZXF1aXJlZDogdHJ1ZX0pIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBwdWJsaWMgb3ZlcmxheUhvc3Q6IFZpZXdDb250YWluZXJSZWYgfCB1bmRlZmluZWQgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBUZW1wbGF0ZSB3aGljaCB0byByZW5kZXIgYXMgb3ZlcmxheS4gVGhlIHRlbXBsYXRlIHdpbGwgc3RpY2sgdG8gdGhlIGJvdW5kaW5nIGJveCBvZiB0aGUgaG9zdCBlbGVtZW50IG9mIHRoaXMgZGlyZWN0aXZlLlxuICAgKi9cbiAgQElucHV0KHthbGlhczogJ3diQ29udGVudFByb2plY3Rpb25Db250ZW50JywgcmVxdWlyZWQ6IHRydWV9KSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgcHVibGljIGNvbnRlbnRUZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2hvc3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LCBAT3B0aW9uYWwoKSBwcml2YXRlIF92aWV3OiDJtVdvcmtiZW5jaFZpZXcpIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5fY29udGVudFZpZXdSZWY/LmRlc3Ryb3koKTtcblxuICAgIGlmICghdGhpcy5vdmVybGF5SG9zdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBlbWJlZGRlZCB2aWV3IGZyb20gY29udGVudCB0ZW1wbGF0ZSBhbmQgYWxpZ24gaXQgdG8gdGhlIGJvdW5kcyBvZiB0aGUgaG9zdCBlbGVtZW50LlxuICAgIHRoaXMuX2NvbnRlbnRWaWV3UmVmID0gdGhpcy5vdmVybGF5SG9zdC5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5jb250ZW50VGVtcGxhdGVSZWYsIG51bGwpO1xuICAgIHRoaXMuX2NvbnRlbnRWaWV3UmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgIC8vIFJlZ2lzdGVyIGRpc3Bvc2Ugbm90aWZpZXIuXG4gICAgY29uc3QgZGlzcG9zZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHRoaXMuX2NvbnRlbnRWaWV3UmVmLm9uRGVzdHJveSgoKSA9PiBkaXNwb3NlJC5uZXh0KCkpO1xuXG4gICAgLy8gUG9zaXRpb24gcHJvamVjdGVkIGNvbnRlbnQgb3V0IG9mIHRoZSBkb2N1bWVudCBmbG93IHJlbGF0aXZlIHRvIHRoZSBwYWdlIHZpZXdwb3J0LlxuICAgIHRoaXMuc3R5bGVDb250ZW50KHtwb3NpdGlvbjogJ2ZpeGVkJ30pO1xuXG4gICAgLy8gQWxpZ24gY29udGVudCBlYWNoIHRpbWUgdGhlIGJvdW5kaW5nIGJveCBlbGVtZW50IGNoYW5nZXMgaXRzIHNpemUuXG4gICAgZnJvbURpbWVuc2lvbiQodGhpcy5faG9zdC5uYXRpdmVFbGVtZW50KVxuICAgICAgLnBpcGUodGFrZVVudGlsKGRpc3Bvc2UkKSlcbiAgICAgIC5zdWJzY3JpYmUoZGltZW5zaW9uID0+IHtcbiAgICAgICAgaWYgKGlzTnVsbERpbWVuc2lvbihkaW1lbnNpb24pKSB7XG4gICAgICAgICAgLy8gV2hlbiByZW1vdmluZyB0aGUgYm91bmRpbmcgYm94IGVsZW1lbnQgKHRoaXMgZGlyZWN0aXZlJ3MgaG9zdCkgZnJvbSB0aGUgRE9NLCBpdHMgZGltZW5zaW9uIGRyb3BzIHRvIDAuXG4gICAgICAgICAgLy8gV2UgaWdub3JlIHRoaXMgZXZlbnQgdG8gcHJlc2VydmUgdGhlIGRpbWVuc2lvbiBvZiBwcm9qZWN0ZWQgY29udGVudCwgY3J1Y2lhbCwgZm9yIGV4YW1wbGUsIGlmIHByb2plY3RlZFxuICAgICAgICAgIC8vIGNvbnRlbnQgaW1wbGVtZW50cyB2aXJ0dWFsIHNjcm9sbGluZy4gT3RoZXJ3aXNlLCBpdHMgY29udGVudCB3b3VsZCByZWxvYWQgd2hlbiBhZGRpbmcgdGhlIGhvc3QgdG8gdGhlIERPTSBhZ2Fpbi5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZSwgaW5hY3RpdmUgdmlld3MgYXJlIHJlbW92ZWQgZnJvbSB0aGUgRE9NLlxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFsaWduQ29udGVudFRvSG9zdEJvdW5kYXJpZXMoKTtcbiAgICAgIH0pO1xuXG4gICAgLy8gSGlkZSBjb250ZW50IHdoZW4gY29udGV4dHVhbCB2aWV3IGlzIGRldGFjaGVkLCBlLmcuLCBpZiBub3QgYWN0aXZlLCBvciBsb2NhdGVkIGluIHRoZSBwZXJpcGhlcmFsIGFyZWEgYW5kIHRoZSBtYWluIGFyZWEgaXMgbWF4aW1pemVkLlxuICAgIHRoaXMuX3ZpZXc/LnBvcnRhbC5hdHRhY2hlZCRcbiAgICAgIC5waXBlKHRha2VVbnRpbChkaXNwb3NlJCkpXG4gICAgICAuc3Vic2NyaWJlKGF0dGFjaGVkID0+IHtcbiAgICAgICAgdGhpcy5zZXRWaXNpYmxlKGF0dGFjaGVkKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsaWducyB0aGUgY29udGVudCBvZiB0aGUgcHJvamVjdGlvbiB0byB0aGUgYm91bmRhcmllcyBvZiB0aGUgaG9zdCBlbGVtZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBhbGlnbkNvbnRlbnRUb0hvc3RCb3VuZGFyaWVzKCk6IHZvaWQge1xuICAgIGNvbnN0IGhvc3RQb3NpdGlvbjogRE9NUmVjdCA9IHRoaXMuX2hvc3QubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICB0aGlzLnN0eWxlQ29udGVudCh7XG4gICAgICB0b3A6IGAke2hvc3RQb3NpdGlvbi50b3B9cHhgLFxuICAgICAgbGVmdDogYCR7aG9zdFBvc2l0aW9uLmxlZnR9cHhgLFxuICAgICAgd2lkdGg6IGAke2hvc3RQb3NpdGlvbi53aWR0aH1weGAsXG4gICAgICBoZWlnaHQ6IGAke2hvc3RQb3NpdGlvbi5oZWlnaHR9cHhgLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRWaXNpYmxlKHZpc2libGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAvLyBXZSB1c2UgYHZpc2liaWxpdHk6IGhpZGRlbmAgYW5kIG5vdCBgZGlzcGxheTogbm9uZWAgdG8gcHJlc2VydmUgdGhlIGRpbWVuc2lvbiBvZiBwcm9qZWN0ZWQgY29udGVudC5cbiAgICAvLyBPdGhlcndpc2U6XG4gICAgLy8gLSBQcm9qZWN0ZWQgY29udGVudCB3b3VsZCBmbGlja2VyIHdoZW4gYXR0YWNoaW5nIHRoZSBjb250ZXh0dWFsIHZpZXcsIG1vc3Qgbm90aWNlYWJsZSB3aXRoIGNvbnRlbnQgdGhhdCBkaXNwbGF5cyBhIG1pY3JvZnJvbnRlbmQuXG4gICAgLy8gLSBQcm9qZWN0ZWQgY29udGVudCB3b3VsZCBub3QgcmV0YWluIHZpcnR1YWwgc2Nyb2xsYWJsZSBjb250ZW50IHNpbmNlIGBkaXNwbGF5Om5vbmVgIHNldHMgd2lkdGggYW5kIGhlaWdodCB0byAwLlxuICAgIHRoaXMuc3R5bGVDb250ZW50KHt2aXNpYmlsaXR5OiB2aXNpYmxlID8gbnVsbCA6ICdoaWRkZW4nfSk7XG4gIH1cblxuICBwcml2YXRlIHN0eWxlQ29udGVudChzdHlsZToge1tzdHlsZTogc3RyaW5nXTogYW55fSk6IHZvaWQge1xuICAgIHRoaXMuX2NvbnRlbnRWaWV3UmVmIS5yb290Tm9kZXMuZm9yRWFjaChub2RlID0+IHNldFN0eWxlKG5vZGUsIHN0eWxlKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fY29udGVudFZpZXdSZWY/LmRlc3Ryb3koKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc051bGxEaW1lbnNpb24oZGltZW5zaW9uOiBEaW1lbnNpb24pOiBib29sZWFuIHtcbiAgcmV0dXJuIGRpbWVuc2lvbi5vZmZzZXRXaWR0aCA9PT0gMCAmJiBkaW1lbnNpb24ub2Zmc2V0SGVpZ2h0ID09PSAwO1xufVxuIl19
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wcm9qZWN0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL2NvbnRlbnQtcHJvamVjdGlvbi9jb250ZW50LXByb2plY3Rpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBK0IsS0FBSyxFQUF3QixRQUFRLEVBQStDLE1BQU0sZUFBZSxDQUFDO0FBRTFKLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFDLHVCQUF1QixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7QUFFNUQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sMEJBQTBCO0lBZ0JyQyxZQUFvQixLQUE4QixFQUFzQixLQUFxQjtRQUF6RSxVQUFLLEdBQUwsS0FBSyxDQUF5QjtRQUFzQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtJQUM3RixDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFFaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QixPQUFPO1FBQ1QsQ0FBQztRQUVELDZGQUE2RjtRQUM3RixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFGLElBQUksQ0FBQyxlQUFlLENBQUMs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QUR4QixLQUFLO3VCQUFDLEVBQUMsS0FBSyxFQUFFLDRCQUE0QixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFbWJlZGRlZFZpZXdSZWYsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT3B0aW9uYWwsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7ybVXb3JrYmVuY2hWaWV3fSBmcm9tICcuLi92aWV3L8m1d29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHtmcm9tRGltZW5zaW9uJH0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvb2JzZXJ2YWJsZSc7XG5pbXBvcnQge3NldFN0eWxlfSBmcm9tICcuLi9jb21tb24vZG9tLnV0aWwnO1xuaW1wb3J0IHthbmltYXRpb25GcmFtZVNjaGVkdWxlciwgRU1QVFksIG1lcmdlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCBvYnNlcnZlT24sIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIFJlbmRlcnMgYSBnaXZlbiB0ZW1wbGF0ZSBhcyBvdmVybGF5LiBUaGUgdGVtcGxhdGUgd2lsbCBzdGljayB0byB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBob3N0IGVsZW1lbnQgb2YgdGhpcyBkaXJlY3RpdmUuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnW3diQ29udGVudFByb2plY3Rpb25dJywgc3RhbmRhbG9uZTogdHJ1ZX0pXG5leHBvcnQgY2xhc3MgQ29udGVudFByb2plY3Rpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBfY29udGVudFZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSB2aWV3IGNvbnRhaW5lciB3aGVyZSB0byBpbnNlcnQgdGhlIG92ZXJsYXkuXG4gICAqL1xuICBASW5wdXQoe2FsaWFzOiAnd2JDb250ZW50UHJvamVjdGlvbk92ZXJsYXlIb3N0JywgcmVxdWlyZWQ6IHRydWV9KSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgcHVibGljIG92ZXJsYXlIb3N0OiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICAvKipcbiAgICogVGVtcGxhdGUgd2hpY2ggdG8gcmVuZGVyIGFzIG92ZXJsYXkuIFRoZSB0ZW1wbGF0ZSB3aWxsIHN0aWNrIHRvIHRoZSBib3VuZGluZyBib3ggb2YgdGhlIGhvc3QgZWxlbWVudCBvZiB0aGlzIGRpcmVjdGl2ZS5cbiAgICovXG4gIEBJbnB1dCh7YWxpYXM6ICd3YkNvbnRlbnRQcm9qZWN0aW9uQ29udGVudCcsIHJlcXVpcmVkOiB0cnVlfSkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gIHB1YmxpYyBjb250ZW50VGVtcGxhdGVSZWYhOiBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ob3N0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfdmlldzogybVXb3JrYmVuY2hWaWV3KSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuX2NvbnRlbnRWaWV3UmVmPy5kZXN0cm95KCk7XG5cbiAgICBpZiAoIXRoaXMub3ZlcmxheUhvc3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgZW1iZWRkZWQgdmlldyBmcm9tIGNvbnRlbnQgdGVtcGxhdGUgYW5kIGFsaWduIGl0IHRvIHRoZSBib3VuZHMgb2YgdGhlIGhvc3QgZWxlbWVudC5cbiAgICB0aGlzLl9jb250ZW50Vmlld1JlZiA9IHRoaXMub3ZlcmxheUhvc3QuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuY29udGVudFRlbXBsYXRlUmVmLCBudWxsKTtcbiAgICB0aGlzLl9jb250ZW50Vmlld1JlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAvLyBSZWdpc3RlciBkaXNwb3NlIG5vdGlmaWVyLlxuICAgIGNvbnN0IGRpc3Bvc2UkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICB0aGlzLl9jb250ZW50Vmlld1JlZi5vbkRlc3Ryb3koKCkgPT4gZGlzcG9zZSQubmV4dCgpKTtcblxuICAgIC8vIFBvc2l0aW9uIHByb2plY3RlZCBjb250ZW50IG91dCBvZiB0aGUgZG9jdW1lbnQgZmxvdyByZWxhdGl2ZSB0byB0aGUgcGFnZSB2aWV3cG9ydC5cbiAgICB0aGlzLnN0eWxlQ29udGVudCh7cG9zaXRpb246ICdmaXhlZCd9KTtcblxuICAgIC8vIEFsaWduIGNvbnRlbnQgZWFjaCB0aW1lIHRoZSBzaXplIG9mIHRoZSBob3N0IGVsZW1lbnQgY2hhbmdlcywgb3Igd2hlbiB0aGUgY29udGVudCBpcyBhdHRhY2hlZCB0byB0aGUgRE9NLlxuICAgIC8vIEZvciBleGFtcGxlLCBtb3ZpbmcgYSB2aWV3IHRvIGFub3RoZXIgcGFydCBvZiB0aGUgc2FtZSBzaXplIHdpbGwgbm90IHRyaWdnZXIgYSBkaW1lbnNpb24gY2hhbmdlIGV2ZW50LlxuICAgIG1lcmdlKGZyb21EaW1lbnNpb24kKHRoaXMuX2hvc3QubmF0aXZlRWxlbWVudCksIHRoaXMuX3ZpZXc/LnBvcnRhbC5hdHRhY2hlZCQucGlwZShmaWx0ZXIoQm9vbGVhbikpID8/IEVNUFRZKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG9ic2VydmVPbihhbmltYXRpb25GcmFtZVNjaGVkdWxlciksIC8vIEFsaWduIHRvIGhvc3QgYm91bmRhcmllcyByaWdodCBiZWZvcmUgdGhlIG5leHQgcmVwYWludC5cbiAgICAgICAgdGFrZVVudGlsKGRpc3Bvc2UkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmFsaWduQ29udGVudFRvSG9zdEJvdW5kYXJpZXMoKTtcbiAgICAgIH0pO1xuXG4gICAgLy8gSGlkZSBjb250ZW50IHdoZW4gY29udGV4dHVhbCB2aWV3IGlzIGRldGFjaGVkLCBlLmcuLCBpZiBub3QgYWN0aXZlLCBvciBsb2NhdGVkIGluIHRoZSBwZXJpcGhlcmFsIGFyZWEgYW5kIHRoZSBtYWluIGFyZWEgaXMgbWF4aW1pemVkLlxuICAgIHRoaXMuX3ZpZXc/LnBvcnRhbC5hdHRhY2hlZCRcbiAgICAgIC5waXBlKHRha2VVbnRpbChkaXNwb3NlJCkpXG4gICAgICAuc3Vic2NyaWJlKGF0dGFjaGVkID0+IHtcbiAgICAgICAgdGhpcy5zZXRWaXNpYmxlKGF0dGFjaGVkKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsaWducyB0aGUgY29udGVudCBvZiB0aGUgcHJvamVjdGlvbiB0byB0aGUgYm91bmRhcmllcyBvZiB0aGUgaG9zdCBlbGVtZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBhbGlnbkNvbnRlbnRUb0hvc3RCb3VuZGFyaWVzKCk6IHZvaWQge1xuICAgIGNvbnN0IGhvc3RQb3NpdGlvbjogRE9NUmVjdCA9IHRoaXMuX2hvc3QubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBpZiAoIWhvc3RQb3NpdGlvbi53aWR0aCAmJiAhaG9zdFBvc2l0aW9uLmhlaWdodCkge1xuICAgICAgLy8gV2hlbiByZW1vdmluZyB0aGUgYm91bmRpbmcgYm94IGVsZW1lbnQgKHRoaXMgZGlyZWN0aXZlJ3MgaG9zdCkgZnJvbSB0aGUgRE9NLCBpdHMgZGltZW5zaW9uIGRyb3BzIHRvIDAuXG4gICAgICAvLyBXZSBpZ25vcmUgdGhpcyBldmVudCB0byBwcmVzZXJ2ZSB0aGUgZGltZW5zaW9uIG9mIHByb2plY3RlZCBjb250ZW50LCBjcnVjaWFsLCBmb3IgZXhhbXBsZSwgaWYgcHJvamVjdGVkXG4gICAgICAvLyBjb250ZW50IGltcGxlbWVudHMgdmlydHVhbCBzY3JvbGxpbmcuIE90aGVyd2lzZSwgaXRzIGNvbnRlbnQgd291bGQgcmVsb2FkIHdoZW4gYWRkaW5nIHRoZSBob3N0IHRvIHRoZSBET00gYWdhaW4uXG4gICAgICAvLyBGb3IgZXhhbXBsZSwgaW5hY3RpdmUgdmlld3MgYXJlIHJlbW92ZWQgZnJvbSB0aGUgRE9NLlxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3R5bGVDb250ZW50KHtcbiAgICAgIHRvcDogYCR7aG9zdFBvc2l0aW9uLnRvcH1weGAsXG4gICAgICBsZWZ0OiBgJHtob3N0UG9zaXRpb24ubGVmdH1weGAsXG4gICAgICB3aWR0aDogYCR7aG9zdFBvc2l0aW9uLndpZHRofXB4YCxcbiAgICAgIGhlaWdodDogYCR7aG9zdFBvc2l0aW9uLmhlaWdodH1weGAsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFZpc2libGUodmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIC8vIFdlIHVzZSBgdmlzaWJpbGl0eTogaGlkZGVuYCBhbmQgbm90IGBkaXNwbGF5OiBub25lYCB0byBwcmVzZXJ2ZSB0aGUgZGltZW5zaW9uIG9mIHByb2plY3RlZCBjb250ZW50LlxuICAgIC8vIE90aGVyd2lzZTpcbiAgICAvLyAtIFByb2plY3RlZCBjb250ZW50IHdvdWxkIGZsaWNrZXIgd2hlbiBhdHRhY2hpbmcgdGhlIGNvbnRleHR1YWwgdmlldywgbW9zdCBub3RpY2VhYmxlIHdpdGggY29udGVudCB0aGF0IGRpc3BsYXlzIGEgbWljcm9mcm9udGVuZC5cbiAgICAvLyAtIFByb2plY3RlZCBjb250ZW50IHdvdWxkIG5vdCByZXRhaW4gdmlydHVhbCBzY3JvbGxhYmxlIGNvbnRlbnQgc2luY2UgYGRpc3BsYXk6bm9uZWAgc2V0cyB3aWR0aCBhbmQgaGVpZ2h0IHRvIDAuXG4gICAgdGhpcy5zdHlsZUNvbnRlbnQoe3Zpc2liaWxpdHk6IHZpc2libGUgPyBudWxsIDogJ2hpZGRlbid9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3R5bGVDb250ZW50KHN0eWxlOiB7W3N0eWxlOiBzdHJpbmddOiBhbnl9KTogdm9pZCB7XG4gICAgdGhpcy5fY29udGVudFZpZXdSZWYhLnJvb3ROb2Rlcy5mb3JFYWNoKG5vZGUgPT4gc2V0U3R5bGUobm9kZSwgc3R5bGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jb250ZW50Vmlld1JlZj8uZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
@@ -25,7 +25,7 @@ import { WORKBENCH_ELEMENT_REF } from '../content-projection/view-container.refe
25
25
  import { Arrays } from '@scion/toolkit/util';
26
26
  import { WorkbenchConfig } from '../workbench-config';
27
27
  import { distinctUntilChanged, filter } from 'rxjs/operators';
28
- import { randomUUID } from '../common/uuid.util';
28
+ import { UUID } from '@scion/toolkit/uuid';
29
29
  /** @inheritDoc */
30
30
  export class ɵWorkbenchDialog {
31
31
  constructor(component, _options) {
@@ -39,7 +39,7 @@ export class ɵWorkbenchDialog {
39
39
  /**
40
40
  * Unique identity of this dialog.
41
41
  */
42
- this.id = randomUUID();
42
+ this.id = UUID.randomUUID();
43
43
  /**
44
44
  * Indicates whether this dialog is blocked by other dialog(s) that overlay this dialog.
45
45
  */
@@ -269,4 +269,4 @@ export class ɵWorkbenchDialog {
269
269
  }
270
270
  }
271
271
  }
272
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiybV3b3JrYmVuY2gtZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvZGlhbG9nL8m1d29ya2JlbmNoLWRpYWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlJLE9BQU8sRUFBZSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsZUFBZSxFQUFzQixNQUFNLG9CQUFvQixDQUFDO0FBRXhFLE9BQU8sRUFBQyxlQUFlLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUFDLE9BQU8sRUFBYSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGVBQWUsRUFB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QztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEVBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxDQUFDO2FBQ2hFLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUNyQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQ3JDO2FBQ0EsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLENBQUMsT0FBTzthQUNULElBQUksQ0FDSCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDdEUsb0JBQW9CLEVBQUUsRUFDdEIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUNyQzthQUNBLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgY29uY2F0V2l0aCwgZGVsYXksIEVNUFRZLCBmaXJzdFZhbHVlRnJvbSwgbWFwLCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIHN3aXRjaE1hcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0NvbXBvbmVudFJlZiwgaW5qZWN0LCBJbmplY3RvciwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7V29ya2JlbmNoRGlhbG9nLCBXb3JrYmVuY2hEaWFsb2dTaXplfSBmcm9tICcuL3dvcmtiZW5jaC1kaWFsb2cnO1xuaW1wb3J0IHtXb3JrYmVuY2hEaWFsb2dPcHRpb25zfSBmcm9tICcuL3dvcmtiZW5jaC1kaWFsb2cub3B0aW9ucyc7XG5pbXBvcnQge0NvbXBvbmVudFBvcnRhbCwgQ29tcG9uZW50VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge092ZXJsYXksIE92ZXJsYXlSZWZ9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7V29ya2JlbmNoRGlhbG9nQ29tcG9uZW50fSBmcm9tICcuL3dvcmtiZW5jaC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7ybVXb3JrYmVuY2hWaWV3fSBmcm9tICcuLi92aWV3L8m1d29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHtXb3JrYmVuY2hEaWFsb2dSZWdpc3RyeX0gZnJvbSAnLi93b3JrYmVuY2gtZGlhbG9nLnJlZ2lzdHJ5JztcbmltcG9ydCB7ybVEZXN0cm95UmVmfSBmcm9tICcuLi9jb21tb24vybVkZXN0cm95LXJlZic7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtzZXRTdHlsZX0gZnJvbSAnLi4vY29tbW9uL2RvbS51dGlsJztcbmltcG9ydCB7ZnJvbURpbWVuc2lvbiR9IGZyb20gJ0BzY2lvbi90b29sa2l0L29ic2VydmFibGUnO1xuaW1wb3J0IHtzdWJzY3JpYmVJbnNpZGV9IGZyb20gJ0BzY2lvbi90b29sa2l0L29wZXJhdG9ycyc7XG5pbXBvcnQge1ZpZXdEcmFnU2VydmljZX0gZnJvbSAnLi4vdmlldy1kbmQvdmlldy1kcmFnLnNlcnZpY2UnO1xuaW1wb3J0IHtXT1JLQkVOQ0hfRUxFTUVOVF9SRUZ9IGZyb20gJy4uL2NvbnRlbnQtcHJvamVjdGlvbi92aWV3LWNvbnRhaW5lci5yZWZlcmVuY2UnO1xuaW1wb3J0IHtBcnJheXN9IGZyb20gJ0BzY2lvbi90b29sa2l0L3V0aWwnO1xuaW1wb3J0IHtXb3JrYmVuY2hDb25maWd9IGZyb20gJy4uL3dvcmtiZW5jaC1jb25maWcnO1xuaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1dvcmtiZW5jaERpYWxvZ0FjdGlvbkRpcmVjdGl2ZX0gZnJvbSAnLi9kaWFsb2ctZm9vdGVyL3dvcmtiZW5jaC1kaWFsb2ctYWN0aW9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1dvcmtiZW5jaERpYWxvZ0Zvb3RlckRpcmVjdGl2ZX0gZnJvbSAnLi9kaWFsb2ctZm9vdGVyL3dvcmtiZW5jaC1kaWFsb2ctZm9vdGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1dvcmtiZW5jaERpYWxvZ0hlYWRlckRpcmVjdGl2ZX0gZnJvbSAnLi9kaWFsb2ctaGVhZGVyL3dvcmtiZW5jaC1kaWFsb2ctaGVhZGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0Rpc3Bvc2FibGV9IGZyb20gJy4uL2NvbW1vbi9kaXNwb3NhYmxlJztcbmltcG9ydCB7QmxvY2thYmxlfSBmcm9tICcuLi9nbGFzcy1wYW5lL2Jsb2NrYWJsZSc7XG5pbXBvcnQge0Jsb2NraW5nfSBmcm9tICcuLi9nbGFzcy1wYW5lL2Jsb2NraW5nJztcbmltcG9ydCB7cmFuZG9tVVVJRH0gZnJvbSAnLi4vY29tbW9uL3V1aWQudXRpbCc7XG5cbi8qKiBAaW5oZXJpdERvYyAqL1xuZXhwb3J0IGNsYXNzIMm1V29ya2JlbmNoRGlhbG9nPFIgPSB1bmtub3duPiBpbXBsZW1lbnRzIFdvcmtiZW5jaERpYWxvZzxSPiwgQmxvY2thYmxlLCBCbG9ja2luZyB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcG9ydGFsOiBDb21wb25lbnRQb3J0YWw8V29ya2JlbmNoRGlhbG9nQ29tcG9uZW50PjtcbiAgcHJpdmF0ZSByZWFkb25seSBfd29ya2JlbmNoRGlhbG9nUmVnaXN0cnkgPSBpbmplY3QoV29ya2JlbmNoRGlhbG9nUmVnaXN0cnkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF96b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3dvcmtiZW5jaENvbmZpZyA9IGluamVjdChXb3JrYmVuY2hDb25maWcpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gbmV3IMm1RGVzdHJveVJlZigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hdHRhY2hlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHByaXZhdGUgX2JsaW5rJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFJlc3VsdCAob3IgZXJyb3IpIHRvIGJlIHBhc3NlZCB0byB0aGUgZGlhbG9nIG9wZW5lci5cbiAgICovXG4gIHByaXZhdGUgX3Jlc3VsdDogUiB8IEVycm9yIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9jb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxXb3JrYmVuY2hEaWFsb2dDb21wb25lbnQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9jc3NDbGFzczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVbmlxdWUgaWRlbnRpdHkgb2YgdGhpcyBkaWFsb2cuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaWQgPSByYW5kb21VVUlEKCk7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIGRpYWxvZyBpcyBibG9ja2VkIGJ5IG90aGVyIGRpYWxvZyhzKSB0aGF0IG92ZXJsYXkgdGhpcyBkaWFsb2cuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYmxvY2tlZEJ5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8ybVXb3JrYmVuY2hEaWFsb2cgfCBudWxsPihudWxsKTtcbiAgcHVibGljIHJlYWRvbmx5IHNpemU6IFdvcmtiZW5jaERpYWxvZ1NpemUgPSB7fTtcbiAgcHVibGljIHRpdGxlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBjbG9zYWJsZSA9IHRydWU7XG4gIHB1YmxpYyByZXNpemFibGUgPSB0cnVlO1xuICBwdWJsaWMgcGFkZGluZyA9IHRydWU7XG4gIHB1YmxpYyBoZWFkZXI6IFdvcmtiZW5jaERpYWxvZ0hlYWRlckRpcmVjdGl2ZSB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGZvb3RlcjogV29ya2JlbmNoRGlhbG9nRm9vdGVyRGlyZWN0aXZlIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgYWN0aW9ucyA9IG5ldyBBcnJheTxXb3JrYmVuY2hEaWFsb2dBY3Rpb25EaXJlY3RpdmU+KCk7XG4gIHB1YmxpYyBibGlua2luZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHVibGljIGNvbnRleHQgPSB7XG4gICAgdmlldzogaW5qZWN0KMm1V29ya2JlbmNoVmlldywge29wdGlvbmFsOiB0cnVlfSksXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHVibGljIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTx1bmtub3duPiwgcHVibGljIF9vcHRpb25zOiBXb3JrYmVuY2hEaWFsb2dPcHRpb25zKSB7XG4gICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuY3JlYXRlT3ZlcmxheSgpO1xuICAgIHRoaXMuX3BvcnRhbCA9IHRoaXMuY3JlYXRlUG9ydGFsKCk7XG4gICAgdGhpcy5fY3NzQ2xhc3MgPSBBcnJheXMuY29lcmNlKHRoaXMuX29wdGlvbnMuY3NzQ2xhc3MpLmpvaW4oJyAnKTtcbiAgICB0aGlzLl9hdHRhY2hlZCQgPSB0aGlzLm1vbml0b3JIb3N0RWxlbWVudEF0dGFjaGVkJCgpO1xuXG4gICAgdGhpcy5oaWRlT25Ib3N0RWxlbWVudERldGFjaE9yVmlld0RyYWcoKTtcbiAgICB0aGlzLnN0aWNrVG9Ib3N0RWxlbWVudCgpO1xuICAgIHRoaXMuYmxvY2tXaGVuTm90T25Ub3AoKTtcbiAgICB0aGlzLnJlc3RvcmVGb2N1c09uQXR0YWNoKCk7XG4gICAgdGhpcy5yZXN0b3JlRm9jdXNPblVuYmxvY2soKTtcbiAgICB0aGlzLmJsaW5rT25SZXF1ZXN0KCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgb3BlbigpOiBQcm9taXNlPFIgfCB1bmRlZmluZWQ+IHtcbiAgICAvLyBXYWl0IGZvciB0aGUgb3ZlcmxheSB0byBiZSBpbml0aWFsbHkgcG9zaXRpb25lZCB0byBoYXZlIGEgc21vb3RoIHNsaWRlLWluIGFuaW1hdGlvbi5cbiAgICBpZiAodGhpcy5hbmltYXRlKSB7XG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbShmcm9tRGltZW5zaW9uJCh0aGlzLl9vdmVybGF5UmVmLmhvc3RFbGVtZW50KSk7XG4gICAgfVxuXG4gICAgLy8gQXR0YWNoIHRoZSBkaWFsb2cgcG9ydGFsIHRvIHRoZSBvdmVybGF5LlxuICAgIHRoaXMuX2NvbXBvbmVudFJlZiA9IHRoaXMuX292ZXJsYXlSZWYuYXR0YWNoKHRoaXMuX3BvcnRhbCk7XG5cbiAgICAvLyBFbnN1cmUgdG8gZGVzdHJveSB0aGlzIGhhbmRsZSBvbiBicm93c2VyIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uLlxuICAgIHRoaXMuX2NvbXBvbmVudFJlZi5vbkRlc3Ryb3koKCkgPT4gdGhpcy5kZXN0cm95KCkpO1xuXG4gICAgLy8gVHJpZ2dlciBhIG1hbnVhbCBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlIHRvIGF2b2lkICdFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yJ1xuICAgIC8vIHdoZW4gdGhlIGRpYWxvZyBzZXRzIGRpYWxvZy1zcGVjaWZpYyBwcm9wZXJ0aWVzIHN1Y2ggYXMgdGl0bGUgb3Igc2l6ZSBkdXJpbmcgY29uc3RydWN0aW9uLlxuICAgIHRoaXMuX2NvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAvLyBXYWl0IGZvciB0aGUgZGlhbG9nIHRvIGNsb3NlLCByZXNvbHZpbmcgdG8gaXRzIHJlc3VsdCBvciByZWplY3RpbmcgaWYgY2xvc2VkIHdpdGggYW4gZXJyb3IuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFIgfCB1bmRlZmluZWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuX2Rlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgICAgdGhpcy5fcmVzdWx0IGluc3RhbmNlb2YgRXJyb3IgPyByZWplY3QodGhpcy5fcmVzdWx0KSA6IHJlc29sdmUodGhpcy5fcmVzdWx0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyBjbG9zZShyZXN1bHQ/OiBSIHwgRXJyb3IpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXN1bHQgPSByZXN1bHQ7XG4gICAgdGhpcy5kZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogSW5wdXRzIHBhc3NlZCB0byB0aGUgZGlhbG9nLlxuICAgKi9cbiAgcHVibGljIGdldCBpbnB1dHMoKToge1tuYW1lOiBzdHJpbmddOiB1bmtub3dufSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnMuaW5wdXRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0byBhbmltYXRlIHRoZSBkaWFsb2cuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFuaW1hdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnMuYW5pbWF0ZSA/PyBmYWxzZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgZm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmJsb2NrZWRCeSQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2NvbXBvbmVudFJlZj8uaW5zdGFuY2UuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJIZWFkZXIoaGVhZGVyOiBXb3JrYmVuY2hEaWFsb2dIZWFkZXJEaXJlY3RpdmUpOiBEaXNwb3NhYmxlIHtcbiAgICB0aGlzLmhlYWRlciA9IGhlYWRlcjtcbiAgICByZXR1cm4ge1xuICAgICAgZGlzcG9zZTogKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5oZWFkZXIgPT09IGhlYWRlcikge1xuICAgICAgICAgIHRoaXMuaGVhZGVyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJGb290ZXIoZm9vdGVyOiBXb3JrYmVuY2hEaWFsb2dGb290ZXJEaXJlY3RpdmUpOiBEaXNwb3NhYmxlIHtcbiAgICBpZiAodGhpcy5hY3Rpb25zLmxlbmd0aCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1tEaWFsb2dJbml0RXJyb3JdIEN1c3RvbSBkaWFsb2cgZm9vdGVyIG5vdCBzdXBwb3J0ZWQgaWYgdXNpbmcgZGlhbG9nIGFjdGlvbnMuJyk7XG4gICAgfVxuICAgIHRoaXMuZm9vdGVyID0gZm9vdGVyO1xuICAgIHJldHVybiB7XG4gICAgICBkaXNwb3NlOiAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZvb3RlciA9PT0gZm9vdGVyKSB7XG4gICAgICAgICAgdGhpcy5mb290ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlckFjdGlvbihhY3Rpb246IFdvcmtiZW5jaERpYWxvZ0FjdGlvbkRpcmVjdGl2ZSk6IERpc3Bvc2FibGUge1xuICAgIGlmICh0aGlzLmZvb3Rlcikge1xuICAgICAgdGhyb3cgRXJyb3IoJ1tEaWFsb2dJbml0RXJyb3JdIERpYWxvZyBhY3Rpb25zIG5vdCBzdXBwb3J0ZWQgaWYgdXNpbmcgYSBjdXN0b20gZGlhbG9nIGZvb3Rlci4nKTtcbiAgICB9XG4gICAgdGhpcy5hY3Rpb25zID0gdGhpcy5hY3Rpb25zLmNvbmNhdChhY3Rpb24pO1xuICAgIHJldHVybiB7XG4gICAgICBkaXNwb3NlOiAoKSA9PiB0aGlzLmFjdGlvbnMgPSB0aGlzLmFjdGlvbnMuZmlsdGVyKGNhbmRpZGF0ZSA9PiBjYW5kaWRhdGUgIT09IGFjdGlvbiksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgZGlhbG9nIGluIHRoZSBkaWFsb2cgc3RhY2suXG4gICAqL1xuICBwdWJsaWMgZ2V0UG9zaXRpb25JbkRpYWxvZ1N0YWNrKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtiZW5jaERpYWxvZ1JlZ2lzdHJ5LmluZGV4T2YodGhpcyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIHNldCBjc3NDbGFzcyhjc3NDbGFzczogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICB0aGlzLl9jc3NDbGFzcyA9IG5ldyBBcnJheTxzdHJpbmc+KCkuY29uY2F0KHRoaXMuX29wdGlvbnMuY3NzQ2xhc3MgPz8gW10pLmNvbmNhdChjc3NDbGFzcykuam9pbignICcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyBnZXQgY3NzQ2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY3NzQ2xhc3M7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIGJsaW5rKCk6IHZvaWQge1xuICAgIHRoaXMuX2JsaW5rJC5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVBvcnRhbCgpOiBDb21wb25lbnRQb3J0YWw8V29ya2JlbmNoRGlhbG9nQ29tcG9uZW50PiB7XG4gICAgcmV0dXJuIG5ldyBDb21wb25lbnRQb3J0YWwoV29ya2JlbmNoRGlhbG9nQ29tcG9uZW50LCBudWxsLCBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiBpbmplY3QoSW5qZWN0b3IpLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtwcm92aWRlOiDJtVdvcmtiZW5jaERpYWxvZywgdXNlVmFsdWU6IHRoaXN9LFxuICAgICAgICB7cHJvdmlkZTogV29ya2JlbmNoRGlhbG9nLCB1c2VFeGlzdGluZzogybVXb3JrYmVuY2hEaWFsb2d9LFxuICAgICAgXSxcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGRlZGljYXRlZCBvdmVybGF5IHBlciBkaWFsb2cgdG8gcGxhY2UgaXQgb24gdG9wIG9mIHByZXZpb3VzbHkgY3JlYXRlZCBvdmVybGF5cywgc3VjaCBhcyBkaWFsb2dzLCBwb3B1cHMsIGRyb3Bkb3ducywgZXRjLlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5KCk6IE92ZXJsYXlSZWYge1xuICAgIGNvbnN0IG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gICAgcmV0dXJuIG92ZXJsYXkuY3JlYXRlKHtcbiAgICAgIGRpc3Bvc2VPbk5hdmlnYXRpb246IHRydWUsIC8vIGRpc3Bvc2UgZGlhbG9nIG9uIGJyb3dzZXIgYmFjay9mb3J3YXJkIG5hdmlnYXRpb25cbiAgICAgIHBhbmVsQ2xhc3M6IFsnd2ItZGlhbG9nLW1vZGFsaXR5LWNvbnRleHQnXSxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IG92ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiBvdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMubm9vcCgpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIGZvY3VzIHdoZW4gcmUtYXR0YWNoaW5nIHRoaXMgZGlhbG9nLlxuICAgKi9cbiAgcHJpdmF0ZSByZXN0b3JlRm9jdXNPbkF0dGFjaCgpOiB2b2lkIHtcbiAgICB0aGlzLl9hdHRhY2hlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIGZvY3VzIHdoZW4gdW5ibG9ja2luZyB0aGlzIGRpYWxvZy5cbiAgICovXG4gIHByaXZhdGUgcmVzdG9yZUZvY3VzT25VbmJsb2NrKCk6IHZvaWQge1xuICAgIHRoaXMuYmxvY2tlZEJ5JFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcihibG9ja2VkQnkgPT4gIWJsb2NrZWRCeSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vbml0b3JzIGF0dGFjaG1lbnQgb2YgdGhlIGhvc3QgZWxlbWVudC5cbiAgICovXG4gIHByaXZhdGUgbW9uaXRvckhvc3RFbGVtZW50QXR0YWNoZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLmNvbnRleHQudmlldykge1xuICAgICAgcmV0dXJuIHRoaXMuY29udGV4dC52aWV3LnBvcnRhbC5hdHRhY2hlZCQ7XG4gICAgfVxuICAgIGlmICh0aGlzLl93b3JrYmVuY2hDb25maWcuZGlhbG9nPy5tb2RhbGl0eVNjb3BlID09PSAndmlld3BvcnQnKSB7XG4gICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgfVxuICAgIHJldHVybiBpbmplY3QoV09SS0JFTkNIX0VMRU1FTlRfUkVGKS5yZWYkLnBpcGUobWFwKHJlZiA9PiAhIXJlZikpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGVzIHRoaXMgZGlhbG9nIHdoZW4gZWl0aGVyIGl0cyBob3N0IGVsZW1lbnQgaXMgZGV0YWNoZWQgb3IgZHVyaW5nIHZpZXcgZHJhZyBhbmQgZHJvcCBvcGVyYXRpb24uXG4gICAqL1xuICBwcml2YXRlIGhpZGVPbkhvc3RFbGVtZW50RGV0YWNoT3JWaWV3RHJhZygpOiB2b2lkIHtcbiAgICBjb25zdCB2aWV3RHJhZ1NlcnZpY2UgPSBpbmplY3QoVmlld0RyYWdTZXJ2aWNlKTtcbiAgICBjb25zdCB2aWV3RHJhZyQgPSBtZXJnZShcbiAgICAgIHZpZXdEcmFnU2VydmljZS52aWV3RHJhZ1N0YXJ0JC5waXBlKG1hcCgoKSA9PiB0cnVlKSksXG4gICAgICB2aWV3RHJhZ1NlcnZpY2Uudmlld0RyYWdFbmQkLnBpcGUobWFwKCgpID0+IGZhbHNlKSksXG4gICAgICBvZihmYWxzZSksIC8vIHRvIGluaXRpYWxpemUgYGNvbWJpbmVMYXRlc3RgXG4gICAgKTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX2F0dGFjaGVkJCwgdmlld0RyYWckXSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzdWJzY3JpYmVJbnNpZGUoZm4gPT4gdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcihmbikpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChbYXR0YWNoZWQsIGRyYWdnaW5nXSkgPT4ge1xuICAgICAgICBjb25zdCBoaWRlRGlhbG9nID0gIWF0dGFjaGVkIHx8IGRyYWdnaW5nO1xuXG4gICAgICAgIC8vIEhpZGUgdmlhIGB2aXNpYmlsaXR5OiBoaWRkZW5gIGluc3RlYWQgb2YgYGRpc3BsYXk6IG5vbmVgIGluIG9yZGVyIHRvIHByZXNlcnZlIHRoZSBkaW1lbnNpb24gb2YgdGhlIGRpYWxvZy5cbiAgICAgICAgc2V0U3R5bGUodGhpcy5fb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudCwge3Zpc2liaWxpdHk6IGhpZGVEaWFsb2cgPyAnaGlkZGVuJyA6IG51bGx9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsaWducyB0aGlzIGRpYWxvZyB3aXRoIHRoZSBib3VuZGFyaWVzIG9mIHRoZSBob3N0IGVsZW1lbnQuXG4gICAqL1xuICBwcml2YXRlIHN0aWNrVG9Ib3N0RWxlbWVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fb3B0aW9ucy5tb2RhbGl0eSA9PT0gJ2FwcGxpY2F0aW9uJyAmJiB0aGlzLl93b3JrYmVuY2hDb25maWcuZGlhbG9nPy5tb2RhbGl0eVNjb3BlID09PSAndmlld3BvcnQnKSB7XG4gICAgICBzZXRTdHlsZSh0aGlzLl9vdmVybGF5UmVmLmhvc3RFbGVtZW50LCB7aW5zZXQ6ICcwJ30pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IHdvcmtiZW5jaFZpZXdFbGVtZW50JCA9ICh2aWV3OiDJtVdvcmtiZW5jaFZpZXcpOiBPYnNlcnZhYmxlPEhUTUxFbGVtZW50PiA9PiBvZih2aWV3LnBvcnRhbC5jb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG4gICAgICBjb25zdCB3b3JrYmVuY2hSb290RWxlbWVudCQgPSAoKTogT2JzZXJ2YWJsZTxIVE1MRWxlbWVudD4gPT4gaW5qZWN0KFdPUktCRU5DSF9FTEVNRU5UX1JFRikucmVmJC5waXBlKG1hcChyZWYgPT4gcmVmPy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpKTtcbiAgICAgIGNvbnN0IGhvc3RFbGVtZW50JCA9IHRoaXMuY29udGV4dC52aWV3ID8gd29ya2JlbmNoVmlld0VsZW1lbnQkKHRoaXMuY29udGV4dC52aWV3KSA6IHdvcmtiZW5jaFJvb3RFbGVtZW50JCgpO1xuXG4gICAgICBob3N0RWxlbWVudCRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKGhvc3RFbGVtZW50ID0+IGhvc3RFbGVtZW50ID8gZnJvbURpbWVuc2lvbiQoaG9zdEVsZW1lbnQpIDogRU1QVFkpLFxuICAgICAgICAgIG1hcCgoe2VsZW1lbnQ6IGhvc3RFbGVtZW50fSkgPT4gaG9zdEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLFxuICAgICAgICAgIHN1YnNjcmliZUluc2lkZShmbiA9PiB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKGZuKSksXG4gICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHt0b3AsIGxlZnQsIHdpZHRoLCBoZWlnaHR9KSA9PiB7XG4gICAgICAgICAgc2V0U3R5bGUodGhpcy5fb3ZlcmxheVJlZi5ob3N0RWxlbWVudCwge1xuICAgICAgICAgICAgdG9wOiBgJHt0b3B9cHhgLFxuICAgICAgICAgICAgbGVmdDogYCR7bGVmdH1weGAsXG4gICAgICAgICAgICB3aWR0aDogYCR7d2lkdGh9cHhgLFxuICAgICAgICAgICAgaGVpZ2h0OiBgJHtoZWlnaHR9cHhgLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQmxvY2tzIHRoaXMgZGlhbG9nIGlmIG5vdCB0aGUgdG9wbW9zdCBkaWFsb2cgaW4gaXRzIGNvbnRleHQuXG4gICAqL1xuICBwcml2YXRlIGJsb2NrV2hlbk5vdE9uVG9wKCk6IHZvaWQge1xuICAgIHRoaXMuX3dvcmtiZW5jaERpYWxvZ1JlZ2lzdHJ5LnRvcCQoe3ZpZXdJZDogdGhpcy5jb250ZXh0LnZpZXc/LmlkfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAodG9wID0+IHRvcCA9PT0gdGhpcyA/IG51bGwgOiB0b3ApLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRoaXMuYmxvY2tlZEJ5JCk7XG4gIH1cblxuICBwcml2YXRlIGJsaW5rT25SZXF1ZXN0KCk6IHZvaWQge1xuICAgIHRoaXMuX2JsaW5rJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiBvZih0cnVlKS5waXBlKGNvbmNhdFdpdGgob2YoZmFsc2UpLnBpcGUoZGVsYXkoMzAwKSkpKSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUodGhpcy5ibGlua2luZyQpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIHRoaXMgZGlhbG9nIGFuZCBhc3NvY2lhdGVkIHJlc291cmNlcy5cbiAgICovXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZGVzdHJveVJlZi5kZXN0cm95ZWQpIHtcbiAgICAgIHRoaXMuX2Rlc3Ryb3lSZWYuZGVzdHJveSgpO1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiybV3b3JrYmVuY2gtZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvZGlhbG9nL8m1d29ya2JlbmNoLWRpYWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlJLE9BQU8sRUFBZSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsZUFBZSxFQUFzQixNQUFNLG9CQUFvQixDQUFDO0FBRXhFLE9BQU8sRUFBQyxlQUFlLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUFDLE9BQU8sRUFBYSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGVBQWUsRUFB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QztRQUNQLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxFQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUMsQ0FBQzthQUNoRSxJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDckMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUNyQzthQUNBLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLE9BQU87YUFDVCxJQUFJLENBQ0gsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3RFLG9CQUFvQixFQUFFLEVBQ3RCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDckM7YUFDQSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGNvbmNhdFdpdGgsIGRlbGF5LCBFTVBUWSwgZmlyc3RWYWx1ZUZyb20sIG1hcCwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDb21wb25lbnRSZWYsIGluamVjdCwgSW5qZWN0b3IsIE5nWm9uZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1dvcmtiZW5jaERpYWxvZywgV29ya2JlbmNoRGlhbG9nU2l6ZX0gZnJvbSAnLi93b3JrYmVuY2gtZGlhbG9nJztcbmltcG9ydCB7V29ya2JlbmNoRGlhbG9nT3B0aW9uc30gZnJvbSAnLi93b3JrYmVuY2gtZGlhbG9nLm9wdGlvbnMnO1xuaW1wb3J0IHtDb21wb25lbnRQb3J0YWwsIENvbXBvbmVudFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtPdmVybGF5LCBPdmVybGF5UmVmfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1dvcmtiZW5jaERpYWxvZ0NvbXBvbmVudH0gZnJvbSAnLi93b3JrYmVuY2gtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQge8m1V29ya2JlbmNoVmlld30gZnJvbSAnLi4vdmlldy/JtXdvcmtiZW5jaC12aWV3Lm1vZGVsJztcbmltcG9ydCB7V29ya2JlbmNoRGlhbG9nUmVnaXN0cnl9IGZyb20gJy4vd29ya2JlbmNoLWRpYWxvZy5yZWdpc3RyeSc7XG5pbXBvcnQge8m1RGVzdHJveVJlZn0gZnJvbSAnLi4vY29tbW9uL8m1ZGVzdHJveS1yZWYnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7c2V0U3R5bGV9IGZyb20gJy4uL2NvbW1vbi9kb20udXRpbCc7XG5pbXBvcnQge2Zyb21EaW1lbnNpb24kfSBmcm9tICdAc2Npb24vdG9vbGtpdC9vYnNlcnZhYmxlJztcbmltcG9ydCB7c3Vic2NyaWJlSW5zaWRlfSBmcm9tICdAc2Npb24vdG9vbGtpdC9vcGVyYXRvcnMnO1xuaW1wb3J0IHtWaWV3RHJhZ1NlcnZpY2V9IGZyb20gJy4uL3ZpZXctZG5kL3ZpZXctZHJhZy5zZXJ2aWNlJztcbmltcG9ydCB7V09SS0JFTkNIX0VMRU1FTlRfUkVGfSBmcm9tICcuLi9jb250ZW50LXByb2plY3Rpb24vdmlldy1jb250YWluZXIucmVmZXJlbmNlJztcbmltcG9ydCB7QXJyYXlzfSBmcm9tICdAc2Npb24vdG9vbGtpdC91dGlsJztcbmltcG9ydCB7V29ya2JlbmNoQ29uZmlnfSBmcm9tICcuLi93b3JrYmVuY2gtY29uZmlnJztcbmltcG9ydCB7ZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtXb3JrYmVuY2hEaWFsb2dBY3Rpb25EaXJlY3RpdmV9IGZyb20gJy4vZGlhbG9nLWZvb3Rlci93b3JrYmVuY2gtZGlhbG9nLWFjdGlvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHtXb3JrYmVuY2hEaWFsb2dGb290ZXJEaXJlY3RpdmV9IGZyb20gJy4vZGlhbG9nLWZvb3Rlci93b3JrYmVuY2gtZGlhbG9nLWZvb3Rlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHtXb3JrYmVuY2hEaWFsb2dIZWFkZXJEaXJlY3RpdmV9IGZyb20gJy4vZGlhbG9nLWhlYWRlci93b3JrYmVuY2gtZGlhbG9nLWhlYWRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHtEaXNwb3NhYmxlfSBmcm9tICcuLi9jb21tb24vZGlzcG9zYWJsZSc7XG5pbXBvcnQge0Jsb2NrYWJsZX0gZnJvbSAnLi4vZ2xhc3MtcGFuZS9ibG9ja2FibGUnO1xuaW1wb3J0IHtCbG9ja2luZ30gZnJvbSAnLi4vZ2xhc3MtcGFuZS9ibG9ja2luZyc7XG5pbXBvcnQge1VVSUR9IGZyb20gJ0BzY2lvbi90b29sa2l0L3V1aWQnO1xuXG4vKiogQGluaGVyaXREb2MgKi9cbmV4cG9ydCBjbGFzcyDJtVdvcmtiZW5jaERpYWxvZzxSID0gdW5rbm93bj4gaW1wbGVtZW50cyBXb3JrYmVuY2hEaWFsb2c8Uj4sIEJsb2NrYWJsZSwgQmxvY2tpbmcge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BvcnRhbDogQ29tcG9uZW50UG9ydGFsPFdvcmtiZW5jaERpYWxvZ0NvbXBvbmVudD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3dvcmtiZW5jaERpYWxvZ1JlZ2lzdHJ5ID0gaW5qZWN0KFdvcmtiZW5jaERpYWxvZ1JlZ2lzdHJ5KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF93b3JrYmVuY2hDb25maWcgPSBpbmplY3QoV29ya2JlbmNoQ29uZmlnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZiA9IG5ldyDJtURlc3Ryb3lSZWYoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXR0YWNoZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwcml2YXRlIF9ibGluayQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBSZXN1bHQgKG9yIGVycm9yKSB0byBiZSBwYXNzZWQgdG8gdGhlIGRpYWxvZyBvcGVuZXIuXG4gICAqL1xuICBwcml2YXRlIF9yZXN1bHQ6IFIgfCBFcnJvciB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8V29ya2JlbmNoRGlhbG9nQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfY3NzQ2xhc3M6IHN0cmluZztcblxuICAvKipcbiAgICogVW5pcXVlIGlkZW50aXR5IG9mIHRoaXMgZGlhbG9nLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlkID0gVVVJRC5yYW5kb21VVUlEKCk7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIGRpYWxvZyBpcyBibG9ja2VkIGJ5IG90aGVyIGRpYWxvZyhzKSB0aGF0IG92ZXJsYXkgdGhpcyBkaWFsb2cuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYmxvY2tlZEJ5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8ybVXb3JrYmVuY2hEaWFsb2cgfCBudWxsPihudWxsKTtcbiAgcHVibGljIHJlYWRvbmx5IHNpemU6IFdvcmtiZW5jaERpYWxvZ1NpemUgPSB7fTtcbiAgcHVibGljIHRpdGxlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBjbG9zYWJsZSA9IHRydWU7XG4gIHB1YmxpYyByZXNpemFibGUgPSB0cnVlO1xuICBwdWJsaWMgcGFkZGluZyA9IHRydWU7XG4gIHB1YmxpYyBoZWFkZXI6IFdvcmtiZW5jaERpYWxvZ0hlYWRlckRpcmVjdGl2ZSB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGZvb3RlcjogV29ya2JlbmNoRGlhbG9nRm9vdGVyRGlyZWN0aXZlIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgYWN0aW9ucyA9IG5ldyBBcnJheTxXb3JrYmVuY2hEaWFsb2dBY3Rpb25EaXJlY3RpdmU+KCk7XG4gIHB1YmxpYyBibGlua2luZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHVibGljIGNvbnRleHQgPSB7XG4gICAgdmlldzogaW5qZWN0KMm1V29ya2JlbmNoVmlldywge29wdGlvbmFsOiB0cnVlfSksXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHVibGljIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTx1bmtub3duPiwgcHVibGljIF9vcHRpb25zOiBXb3JrYmVuY2hEaWFsb2dPcHRpb25zKSB7XG4gICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuY3JlYXRlT3ZlcmxheSgpO1xuICAgIHRoaXMuX3BvcnRhbCA9IHRoaXMuY3JlYXRlUG9ydGFsKCk7XG4gICAgdGhpcy5fY3NzQ2xhc3MgPSBBcnJheXMuY29lcmNlKHRoaXMuX29wdGlvbnMuY3NzQ2xhc3MpLmpvaW4oJyAnKTtcbiAgICB0aGlzLl9hdHRhY2hlZCQgPSB0aGlzLm1vbml0b3JIb3N0RWxlbWVudEF0dGFjaGVkJCgpO1xuXG4gICAgdGhpcy5oaWRlT25Ib3N0RWxlbWVudERldGFjaE9yVmlld0RyYWcoKTtcbiAgICB0aGlzLnN0aWNrVG9Ib3N0RWxlbWVudCgpO1xuICAgIHRoaXMuYmxvY2tXaGVuTm90T25Ub3AoKTtcbiAgICB0aGlzLnJlc3RvcmVGb2N1c09uQXR0YWNoKCk7XG4gICAgdGhpcy5yZXN0b3JlRm9jdXNPblVuYmxvY2soKTtcbiAgICB0aGlzLmJsaW5rT25SZXF1ZXN0KCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgb3BlbigpOiBQcm9taXNlPFIgfCB1bmRlZmluZWQ+IHtcbiAgICAvLyBXYWl0IGZvciB0aGUgb3ZlcmxheSB0byBiZSBpbml0aWFsbHkgcG9zaXRpb25lZCB0byBoYXZlIGEgc21vb3RoIHNsaWRlLWluIGFuaW1hdGlvbi5cbiAgICBpZiAodGhpcy5hbmltYXRlKSB7XG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbShmcm9tRGltZW5zaW9uJCh0aGlzLl9vdmVybGF5UmVmLmhvc3RFbGVtZW50KSk7XG4gICAgfVxuXG4gICAgLy8gQXR0YWNoIHRoZSBkaWFsb2cgcG9ydGFsIHRvIHRoZSBvdmVybGF5LlxuICAgIHRoaXMuX2NvbXBvbmVudFJlZiA9IHRoaXMuX292ZXJsYXlSZWYuYXR0YWNoKHRoaXMuX3BvcnRhbCk7XG5cbiAgICAvLyBFbnN1cmUgdG8gZGVzdHJveSB0aGlzIGhhbmRsZSBvbiBicm93c2VyIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uLlxuICAgIHRoaXMuX2NvbXBvbmVudFJlZi5vbkRlc3Ryb3koKCkgPT4gdGhpcy5kZXN0cm95KCkpO1xuXG4gICAgLy8gVHJpZ2dlciBhIG1hbnVhbCBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlIHRvIGF2b2lkICdFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yJ1xuICAgIC8vIHdoZW4gdGhlIGRpYWxvZyBzZXRzIGRpYWxvZy1zcGVjaWZpYyBwcm9wZXJ0aWVzIHN1Y2ggYXMgdGl0bGUgb3Igc2l6ZSBkdXJpbmcgY29uc3RydWN0aW9uLlxuICAgIHRoaXMuX2NvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAvLyBXYWl0IGZvciB0aGUgZGlhbG9nIHRvIGNsb3NlLCByZXNvbHZpbmcgdG8gaXRzIHJlc3VsdCBvciByZWplY3RpbmcgaWYgY2xvc2VkIHdpdGggYW4gZXJyb3IuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFIgfCB1bmRlZmluZWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuX2Rlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgICAgdGhpcy5fcmVzdWx0IGluc3RhbmNlb2YgRXJyb3IgPyByZWplY3QodGhpcy5fcmVzdWx0KSA6IHJlc29sdmUodGhpcy5fcmVzdWx0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyBjbG9zZShyZXN1bHQ/OiBSIHwgRXJyb3IpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXN1bHQgPSByZXN1bHQ7XG4gICAgdGhpcy5kZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogSW5wdXRzIHBhc3NlZCB0byB0aGUgZGlhbG9nLlxuICAgKi9cbiAgcHVibGljIGdldCBpbnB1dHMoKToge1tuYW1lOiBzdHJpbmddOiB1bmtub3dufSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnMuaW5wdXRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0byBhbmltYXRlIHRoZSBkaWFsb2cuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFuaW1hdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnMuYW5pbWF0ZSA/PyBmYWxzZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgZm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmJsb2NrZWRCeSQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2NvbXBvbmVudFJlZj8uaW5zdGFuY2UuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJIZWFkZXIoaGVhZGVyOiBXb3JrYmVuY2hEaWFsb2dIZWFkZXJEaXJlY3RpdmUpOiBEaXNwb3NhYmxlIHtcbiAgICB0aGlzLmhlYWRlciA9IGhlYWRlcjtcbiAgICByZXR1cm4ge1xuICAgICAgZGlzcG9zZTogKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5oZWFkZXIgPT09IGhlYWRlcikge1xuICAgICAgICAgIHRoaXMuaGVhZGVyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJGb290ZXIoZm9vdGVyOiBXb3JrYmVuY2hEaWFsb2dGb290ZXJEaXJlY3RpdmUpOiBEaXNwb3NhYmxlIHtcbiAgICBpZiAodGhpcy5hY3Rpb25zLmxlbmd0aCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1tEaWFsb2dJbml0RXJyb3JdIEN1c3RvbSBkaWFsb2cgZm9vdGVyIG5vdCBzdXBwb3J0ZWQgaWYgdXNpbmcgZGlhbG9nIGFjdGlvbnMuJyk7XG4gICAgfVxuICAgIHRoaXMuZm9vdGVyID0gZm9vdGVyO1xuICAgIHJldHVybiB7XG4gICAgICBkaXNwb3NlOiAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZvb3RlciA9PT0gZm9vdGVyKSB7XG4gICAgICAgICAgdGhpcy5mb290ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlckFjdGlvbihhY3Rpb246IFdvcmtiZW5jaERpYWxvZ0FjdGlvbkRpcmVjdGl2ZSk6IERpc3Bvc2FibGUge1xuICAgIGlmICh0aGlzLmZvb3Rlcikge1xuICAgICAgdGhyb3cgRXJyb3IoJ1tEaWFsb2dJbml0RXJyb3JdIERpYWxvZyBhY3Rpb25zIG5vdCBzdXBwb3J0ZWQgaWYgdXNpbmcgYSBjdXN0b20gZGlhbG9nIGZvb3Rlci4nKTtcbiAgICB9XG4gICAgdGhpcy5hY3Rpb25zID0gdGhpcy5hY3Rpb25zLmNvbmNhdChhY3Rpb24pO1xuICAgIHJldHVybiB7XG4gICAgICBkaXNwb3NlOiAoKSA9PiB0aGlzLmFjdGlvbnMgPSB0aGlzLmFjdGlvbnMuZmlsdGVyKGNhbmRpZGF0ZSA9PiBjYW5kaWRhdGUgIT09IGFjdGlvbiksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgZGlhbG9nIGluIHRoZSBkaWFsb2cgc3RhY2suXG4gICAqL1xuICBwdWJsaWMgZ2V0UG9zaXRpb25JbkRpYWxvZ1N0YWNrKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtiZW5jaERpYWxvZ1JlZ2lzdHJ5LmluZGV4T2YodGhpcyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIHNldCBjc3NDbGFzcyhjc3NDbGFzczogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICB0aGlzLl9jc3NDbGFzcyA9IG5ldyBBcnJheTxzdHJpbmc+KCkuY29uY2F0KHRoaXMuX29wdGlvbnMuY3NzQ2xhc3MgPz8gW10pLmNvbmNhdChjc3NDbGFzcykuam9pbignICcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyBnZXQgY3NzQ2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY3NzQ2xhc3M7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIGJsaW5rKCk6IHZvaWQge1xuICAgIHRoaXMuX2JsaW5rJC5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVBvcnRhbCgpOiBDb21wb25lbnRQb3J0YWw8V29ya2JlbmNoRGlhbG9nQ29tcG9uZW50PiB7XG4gICAgcmV0dXJuIG5ldyBDb21wb25lbnRQb3J0YWwoV29ya2JlbmNoRGlhbG9nQ29tcG9uZW50LCBudWxsLCBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiBpbmplY3QoSW5qZWN0b3IpLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtwcm92aWRlOiDJtVdvcmtiZW5jaERpYWxvZywgdXNlVmFsdWU6IHRoaXN9LFxuICAgICAgICB7cHJvdmlkZTogV29ya2JlbmNoRGlhbG9nLCB1c2VFeGlzdGluZzogybVXb3JrYmVuY2hEaWFsb2d9LFxuICAgICAgXSxcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGRlZGljYXRlZCBvdmVybGF5IHBlciBkaWFsb2cgdG8gcGxhY2UgaXQgb24gdG9wIG9mIHByZXZpb3VzbHkgY3JlYXRlZCBvdmVybGF5cywgc3VjaCBhcyBkaWFsb2dzLCBwb3B1cHMsIGRyb3Bkb3ducywgZXRjLlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5KCk6IE92ZXJsYXlSZWYge1xuICAgIGNvbnN0IG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gICAgcmV0dXJuIG92ZXJsYXkuY3JlYXRlKHtcbiAgICAgIGRpc3Bvc2VPbk5hdmlnYXRpb246IHRydWUsIC8vIGRpc3Bvc2UgZGlhbG9nIG9uIGJyb3dzZXIgYmFjay9mb3J3YXJkIG5hdmlnYXRpb25cbiAgICAgIHBhbmVsQ2xhc3M6IFsnd2ItZGlhbG9nLW1vZGFsaXR5LWNvbnRleHQnXSxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IG92ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiBvdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMubm9vcCgpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIGZvY3VzIHdoZW4gcmUtYXR0YWNoaW5nIHRoaXMgZGlhbG9nLlxuICAgKi9cbiAgcHJpdmF0ZSByZXN0b3JlRm9jdXNPbkF0dGFjaCgpOiB2b2lkIHtcbiAgICB0aGlzLl9hdHRhY2hlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIGZvY3VzIHdoZW4gdW5ibG9ja2luZyB0aGlzIGRpYWxvZy5cbiAgICovXG4gIHByaXZhdGUgcmVzdG9yZUZvY3VzT25VbmJsb2NrKCk6IHZvaWQge1xuICAgIHRoaXMuYmxvY2tlZEJ5JFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcihibG9ja2VkQnkgPT4gIWJsb2NrZWRCeSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vbml0b3JzIGF0dGFjaG1lbnQgb2YgdGhlIGhvc3QgZWxlbWVudC5cbiAgICovXG4gIHByaXZhdGUgbW9uaXRvckhvc3RFbGVtZW50QXR0YWNoZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLmNvbnRleHQudmlldykge1xuICAgICAgcmV0dXJuIHRoaXMuY29udGV4dC52aWV3LnBvcnRhbC5hdHRhY2hlZCQ7XG4gICAgfVxuICAgIGlmICh0aGlzLl93b3JrYmVuY2hDb25maWcuZGlhbG9nPy5tb2RhbGl0eVNjb3BlID09PSAndmlld3BvcnQnKSB7XG4gICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgfVxuICAgIHJldHVybiBpbmplY3QoV09SS0JFTkNIX0VMRU1FTlRfUkVGKS5yZWYkLnBpcGUobWFwKHJlZiA9PiAhIXJlZikpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGVzIHRoaXMgZGlhbG9nIHdoZW4gZWl0aGVyIGl0cyBob3N0IGVsZW1lbnQgaXMgZGV0YWNoZWQgb3IgZHVyaW5nIHZpZXcgZHJhZyBhbmQgZHJvcCBvcGVyYXRpb24uXG4gICAqL1xuICBwcml2YXRlIGhpZGVPbkhvc3RFbGVtZW50RGV0YWNoT3JWaWV3RHJhZygpOiB2b2lkIHtcbiAgICBjb25zdCB2aWV3RHJhZ1NlcnZpY2UgPSBpbmplY3QoVmlld0RyYWdTZXJ2aWNlKTtcbiAgICBjb25zdCB2aWV3RHJhZyQgPSBtZXJnZShcbiAgICAgIHZpZXdEcmFnU2VydmljZS52aWV3RHJhZ1N0YXJ0JC5waXBlKG1hcCgoKSA9PiB0cnVlKSksXG4gICAgICB2aWV3RHJhZ1NlcnZpY2Uudmlld0RyYWdFbmQkLnBpcGUobWFwKCgpID0+IGZhbHNlKSksXG4gICAgICBvZihmYWxzZSksIC8vIHRvIGluaXRpYWxpemUgYGNvbWJpbmVMYXRlc3RgXG4gICAgKTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX2F0dGFjaGVkJCwgdmlld0RyYWckXSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzdWJzY3JpYmVJbnNpZGUoZm4gPT4gdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcihmbikpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChbYXR0YWNoZWQsIGRyYWdnaW5nXSkgPT4ge1xuICAgICAgICBjb25zdCBoaWRlRGlhbG9nID0gIWF0dGFjaGVkIHx8IGRyYWdnaW5nO1xuXG4gICAgICAgIC8vIEhpZGUgdmlhIGB2aXNpYmlsaXR5OiBoaWRkZW5gIGluc3RlYWQgb2YgYGRpc3BsYXk6IG5vbmVgIGluIG9yZGVyIHRvIHByZXNlcnZlIHRoZSBkaW1lbnNpb24gb2YgdGhlIGRpYWxvZy5cbiAgICAgICAgc2V0U3R5bGUodGhpcy5fb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudCwge3Zpc2liaWxpdHk6IGhpZGVEaWFsb2cgPyAnaGlkZGVuJyA6IG51bGx9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsaWducyB0aGlzIGRpYWxvZyB3aXRoIHRoZSBib3VuZGFyaWVzIG9mIHRoZSBob3N0IGVsZW1lbnQuXG4gICAqL1xuICBwcml2YXRlIHN0aWNrVG9Ib3N0RWxlbWVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fb3B0aW9ucy5tb2RhbGl0eSA9PT0gJ2FwcGxpY2F0aW9uJyAmJiB0aGlzLl93b3JrYmVuY2hDb25maWcuZGlhbG9nPy5tb2RhbGl0eVNjb3BlID09PSAndmlld3BvcnQnKSB7XG4gICAgICBzZXRTdHlsZSh0aGlzLl9vdmVybGF5UmVmLmhvc3RFbGVtZW50LCB7aW5zZXQ6ICcwJ30pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IHdvcmtiZW5jaFZpZXdFbGVtZW50JCA9ICh2aWV3OiDJtVdvcmtiZW5jaFZpZXcpOiBPYnNlcnZhYmxlPEhUTUxFbGVtZW50PiA9PiBvZih2aWV3LnBvcnRhbC5jb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG4gICAgICBjb25zdCB3b3JrYmVuY2hSb290RWxlbWVudCQgPSAoKTogT2JzZXJ2YWJsZTxIVE1MRWxlbWVudD4gPT4gaW5qZWN0KFdPUktCRU5DSF9FTEVNRU5UX1JFRikucmVmJC5waXBlKG1hcChyZWYgPT4gcmVmPy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpKTtcbiAgICAgIGNvbnN0IGhvc3RFbGVtZW50JCA9IHRoaXMuY29udGV4dC52aWV3ID8gd29ya2JlbmNoVmlld0VsZW1lbnQkKHRoaXMuY29udGV4dC52aWV3KSA6IHdvcmtiZW5jaFJvb3RFbGVtZW50JCgpO1xuXG4gICAgICBob3N0RWxlbWVudCRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKGhvc3RFbGVtZW50ID0+IGhvc3RFbGVtZW50ID8gZnJvbURpbWVuc2lvbiQoaG9zdEVsZW1lbnQpIDogRU1QVFkpLFxuICAgICAgICAgIG1hcCgoe2VsZW1lbnQ6IGhvc3RFbGVtZW50fSkgPT4gaG9zdEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLFxuICAgICAgICAgIHN1YnNjcmliZUluc2lkZShmbiA9PiB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKGZuKSksXG4gICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHt0b3AsIGxlZnQsIHdpZHRoLCBoZWlnaHR9KSA9PiB7XG4gICAgICAgICAgc2V0U3R5bGUodGhpcy5fb3ZlcmxheVJlZi5ob3N0RWxlbWVudCwge1xuICAgICAgICAgICAgdG9wOiBgJHt0b3B9cHhgLFxuICAgICAgICAgICAgbGVmdDogYCR7bGVmdH1weGAsXG4gICAgICAgICAgICB3aWR0aDogYCR7d2lkdGh9cHhgLFxuICAgICAgICAgICAgaGVpZ2h0OiBgJHtoZWlnaHR9cHhgLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQmxvY2tzIHRoaXMgZGlhbG9nIGlmIG5vdCB0aGUgdG9wbW9zdCBkaWFsb2cgaW4gaXRzIGNvbnRleHQuXG4gICAqL1xuICBwcml2YXRlIGJsb2NrV2hlbk5vdE9uVG9wKCk6IHZvaWQge1xuICAgIHRoaXMuX3dvcmtiZW5jaERpYWxvZ1JlZ2lzdHJ5LnRvcCQoe3ZpZXdJZDogdGhpcy5jb250ZXh0LnZpZXc/LmlkfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAodG9wID0+IHRvcCA9PT0gdGhpcyA/IG51bGwgOiB0b3ApLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRoaXMuYmxvY2tlZEJ5JCk7XG4gIH1cblxuICBwcml2YXRlIGJsaW5rT25SZXF1ZXN0KCk6IHZvaWQge1xuICAgIHRoaXMuX2JsaW5rJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiBvZih0cnVlKS5waXBlKGNvbmNhdFdpdGgob2YoZmFsc2UpLnBpcGUoZGVsYXkoMzAwKSkpKSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUodGhpcy5ibGlua2luZyQpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIHRoaXMgZGlhbG9nIGFuZCBhc3NvY2lhdGVkIHJlc291cmNlcy5cbiAgICovXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZGVzdHJveVJlZi5kZXN0cm95ZWQpIHtcbiAgICAgIHRoaXMuX2Rlc3Ryb3lSZWYuZGVzdHJveSgpO1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -12,7 +12,7 @@ import { FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/fo
12
12
  import { noop } from 'rxjs';
13
13
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
14
14
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
15
- import { randomUUID } from '../common/uuid.util';
15
+ import { UUID } from '@scion/toolkit/uuid';
16
16
  import * as i0 from "@angular/core";
17
17
  import * as i1 from "@angular/cdk/a11y";
18
18
  import * as i2 from "@angular/forms";
@@ -35,7 +35,7 @@ export class FilterFieldComponent {
35
35
  this._cd = _cd;
36
36
  this._cvaChangeFn = noop;
37
37
  this._cvaTouchedFn = noop;
38
- this.id = randomUUID();
38
+ this.id = UUID.randomUUID();
39
39
  /**
40
40
  * Emits on filter change.
41
41
  */
@@ -99,13 +99,13 @@ export class FilterFieldComponent {
99
99
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FilterFieldComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
100
100
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: FilterFieldComponent, isStandalone: true, selector: "wb-filter-field", inputs: { tabindex: "tabindex", placeholder: "placeholder", disabled: "disabled" }, outputs: { filter: "filter" }, host: { listeners: { "focus": "focus()" }, properties: { "attr.tabindex": "this.componentTabindex", "class.empty": "this.empty" } }, providers: [
101
101
  { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: forwardRef(() => FilterFieldComponent) },
102
- ], viewQueries: [{ propertyName: "_inputElement", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: "<label [for]=\"id\" class=\"filter-icon scion-workbench-icons\">search</label>\n<input #input\n [attr.id]=\"id\"\n autocomplete=\"off\"\n [formControl]=\"formControl\"\n [tabindex]=\"tabindex ?? 0\"\n [placeholder]=\"placeholder ?? ''\">\n<button class=\"clear scion-workbench-icons\" tabindex=\"-1\" (click)=\"onClear()\">\n clear\n</button>\n", styles: [":host{display:inline-flex;flex-direction:row;gap:.5em;padding:.25em .5em}:host>label.filter-icon{flex:none;align-self:center;-webkit-user-select:none;user-select:none;font-size:1.5em}:host>input{all:unset;flex:auto;min-width:0}:host>button.clear{all:unset;flex:none;align-self:center;opacity:.75;cursor:pointer}:host>button.clear:hover{opacity:1}:host:not(:focus-within):not(:hover)>button.clear,:host:has(>input:disabled)>button.clear,:host.empty>button.clear{visibility:hidden}:host:has(>input:disabled)>label.filter-icon{color:var(--sci-color-text-subtlest)}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
102
+ ], viewQueries: [{ propertyName: "_inputElement", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: "<label [for]=\"id\" class=\"filter-icon scion-workbench-icons\">search</label>\n<input #input\n [attr.id]=\"id\"\n autocomplete=\"off\"\n [formControl]=\"formControl\"\n [tabindex]=\"tabindex ?? 0\"\n [placeholder]=\"placeholder ?? ''\">\n<button class=\"clear scion-workbench-icons\" tabindex=\"-1\" (click)=\"onClear()\">\n clear\n</button>\n", styles: [":host{display:inline-flex;flex-direction:row;gap:.5em;padding:.25em .5em}:host>label.filter-icon{flex:none;align-self:center;-webkit-user-select:none;user-select:none;font-size:1.5em}:host>input{all:unset;flex:auto;min-width:0}:host>input::placeholder{color:var(--sci-color-gray-400)}:host>button.clear{all:unset;flex:none;align-self:center;opacity:.75;cursor:pointer}:host>button.clear:hover{opacity:1}:host:not(:focus-within):not(:hover)>button.clear,:host:has(>input:disabled)>button.clear,:host.empty>button.clear{visibility:hidden}:host:has(>input:disabled)>label.filter-icon{color:var(--sci-color-text-subtlest)}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
103
103
  }
104
104
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: FilterFieldComponent, decorators: [{
105
105
  type: Component,
106
106
  args: [{ selector: 'wb-filter-field', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ReactiveFormsModule], providers: [
107
107
  { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: forwardRef(() => FilterFieldComponent) },
108
- ], template: "<label [for]=\"id\" class=\"filter-icon scion-workbench-icons\">search</label>\n<input #input\n [attr.id]=\"id\"\n autocomplete=\"off\"\n [formControl]=\"formControl\"\n [tabindex]=\"tabindex ?? 0\"\n [placeholder]=\"placeholder ?? ''\">\n<button class=\"clear scion-workbench-icons\" tabindex=\"-1\" (click)=\"onClear()\">\n clear\n</button>\n", styles: [":host{display:inline-flex;flex-direction:row;gap:.5em;padding:.25em .5em}:host>label.filter-icon{flex:none;align-self:center;-webkit-user-select:none;user-select:none;font-size:1.5em}:host>input{all:unset;flex:auto;min-width:0}:host>button.clear{all:unset;flex:none;align-self:center;opacity:.75;cursor:pointer}:host>button.clear:hover{opacity:1}:host:not(:focus-within):not(:hover)>button.clear,:host:has(>input:disabled)>button.clear,:host.empty>button.clear{visibility:hidden}:host:has(>input:disabled)>label.filter-icon{color:var(--sci-color-text-subtlest)}\n"] }]
108
+ ], template: "<label [for]=\"id\" class=\"filter-icon scion-workbench-icons\">search</label>\n<input #input\n [attr.id]=\"id\"\n autocomplete=\"off\"\n [formControl]=\"formControl\"\n [tabindex]=\"tabindex ?? 0\"\n [placeholder]=\"placeholder ?? ''\">\n<button class=\"clear scion-workbench-icons\" tabindex=\"-1\" (click)=\"onClear()\">\n clear\n</button>\n", styles: [":host{display:inline-flex;flex-direction:row;gap:.5em;padding:.25em .5em}:host>label.filter-icon{flex:none;align-self:center;-webkit-user-select:none;user-select:none;font-size:1.5em}:host>input{all:unset;flex:auto;min-width:0}:host>input::placeholder{color:var(--sci-color-gray-400)}:host>button.clear{all:unset;flex:none;align-self:center;opacity:.75;cursor:pointer}:host>button.clear:hover{opacity:1}:host:not(:focus-within):not(:hover)>button.clear,:host:has(>input:disabled)>button.clear,:host.empty>button.clear{visibility:hidden}:host:has(>input:disabled)>label.filter-icon{color:var(--sci-color-text-subtlest)}\n"] }]
109
109
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FocusMonitor }, { type: i0.ChangeDetectorRef }], propDecorators: { tabindex: [{
110
110
  type: Input
111
111
  }], placeholder: [{
@@ -127,4 +127,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
127
127
  type: HostListener,
128
128
  args: ['focus']
129
129
  }] } });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL2ZpbHRlci1maWVsZC9maWx0ZXItZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvZmlsdGVyLWZpZWxkL2ZpbHRlci1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxTCxPQUFPLEVBQXVCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pHLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFNUQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7O0FBRS9DOztHQUVHO0FBWUgsTUFBTSxPQUFPLG9CQUFvQjtJQW9CL0IsSUFDVyxRQUFRLENBQUMsUUFBNkM7UUFDL0QscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDM0YsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FB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QUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFDO1NBQy9GLGdKQzlCSCx5WEFVQSw0bUJEaUJZLG1CQUFtQjs7MkZBS2xCLG9CQUFvQjtrQkFYaEMsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsQ0FBQyxhQUNuQjt3QkFDVCxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDLEVBQUM7cUJBQy9GOzBJQWNNLFFBQVE7c0JBRGQsS0FBSztnQkFPQyxXQUFXO3NCQURqQixLQUFLO2dCQUlLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBYUMsTUFBTTtzQkFEWixNQUFNO2dCQUlDLGFBQWE7c0JBRHBCLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFJM0IsaUJBQWlCO3NCQUR2QixXQUFXO3VCQUFDLGVBQWU7Z0JBSWpCLEtBQUs7c0JBRGYsV0FBVzt1QkFBQyxhQUFhO2dCQTZCbkIsS0FBSztzQkFEWCxZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtub29wfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtGb2N1c01vbml0b3IsIEZvY3VzT3JpZ2lufSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtyYW5kb21VVUlEfSBmcm9tICcuLi9jb21tb24vdXVpZC51dGlsJztcblxuLyoqXG4gKiBQcm92aWRlcyBhIGZpbHRlciBjb250cm9sLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3Yi1maWx0ZXItZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgbXVsdGk6IHRydWUsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZpbHRlckZpZWxkQ29tcG9uZW50KX0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlckZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBfY3ZhQ2hhbmdlRm46ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfY3ZhVG91Y2hlZEZuOiAoKSA9PiB2b2lkID0gbm9vcDtcblxuICBwdWJsaWMgcmVhZG9ubHkgaWQgPSByYW5kb21VVUlEKCk7XG5cbiAgLyoqXG4gICAqIFNldHMgZm9jdXMgb3JkZXIgaW4gc2VxdWVudGlhbCBrZXlib2FyZCBuYXZpZ2F0aW9uLlxuICAgKiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZm9jdXMgb3JkZXIgaXMgYWNjb3JkaW5nIHRvIHRoZSBwb3NpdGlvbiBpbiB0aGUgZG9jdW1lbnQgKHRhYmluZGV4PTApLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHRhYmluZGV4PzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGhpbnQgZGlzcGxheWVkIHdoZW4gdGhpcyBmaWVsZCBpcyBlbXB0eS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwbGFjZWhvbGRlcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShkaXNhYmxlZCkgPyB0aGlzLmZvcm1Db250cm9sLmRpc2FibGUoKSA6IHRoaXMuZm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db250cm9sLmRpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIG9uIGZpbHRlciBjaGFuZ2UuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0Jywge3N0YXRpYzogdHJ1ZX0pXG4gIHByaXZhdGUgX2lucHV0RWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgcHVibGljIGNvbXBvbmVudFRhYmluZGV4ID0gLTE7IC8vIGNvbXBvbmVudCBpcyBub3QgZm9jdXNhYmxlIGluIHNlcXVlbnRpYWwga2V5Ym9hcmQgbmF2aWdhdGlvbiwgYnV0IHRhYmluZGV4IChpZiBhbnkpIGlzIGluc3RhbGxlZCBvbiBpbnB1dCBmaWVsZFxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZW1wdHknKVxuICBwdWJsaWMgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcbiAgfVxuXG4gIC8qIEBkb2NzLXByaXZhdGUgKi9cbiAgcHVibGljIGZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ob3N0OiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIF9mb2N1c01hbmFnZXI6IEZvY3VzTW9uaXRvcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5mb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJywge3VwZGF0ZU9uOiAnY2hhbmdlJywgbm9uTnVsbGFibGU6IHRydWV9KTtcbiAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgdGhpcy5fY3ZhQ2hhbmdlRm4odmFsdWUpO1xuICAgICAgICB0aGlzLmZpbHRlci5lbWl0KHZhbHVlKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fZm9jdXNNYW5hZ2VyLm1vbml0b3IodGhpcy5faG9zdC5uYXRpdmVFbGVtZW50LCB0cnVlKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKChmb2N1c09yaWdpbjogRm9jdXNPcmlnaW4pID0+IHtcbiAgICAgICAgaWYgKCFmb2N1c09yaWdpbikge1xuICAgICAgICAgIHRoaXMuX2N2YVRvdWNoZWRGbigpOyAvLyB0cmlnZ2VycyBmb3JtIGZpZWxkIHZhbGlkYXRpb24gYW5kIHNpZ25hbHMgYSBibHVyIGV2ZW50XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICBwdWJsaWMgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMuZm9jdXMoKTsgLy8gcmVzdG9yZSB0aGUgZm9jdXNcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgaW1wbGVtZW50ZWQgYXMgcGFydCBvZiBgQ29udHJvbFZhbHVlQWNjZXNzb3JgIHRvIHdvcmsgd2l0aCBBbmd1bGFyIGZvcm1zIEFQSVxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fY3ZhQ2hhbmdlRm4gPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgaW1wbGVtZW50ZWQgYXMgcGFydCBvZiBgQ29udHJvbFZhbHVlQWNjZXNzb3JgIHRvIHdvcmsgd2l0aCBBbmd1bGFyIGZvcm1zIEFQSVxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX2N2YVRvdWNoZWRGbiA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBpbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIGBDb250cm9sVmFsdWVBY2Nlc3NvcmAgdG8gd29yayB3aXRoIEFuZ3VsYXIgZm9ybXMgQVBJXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgaW1wbGVtZW50ZWQgYXMgcGFydCBvZiBgQ29udHJvbFZhbHVlQWNjZXNzb3JgIHRvIHdvcmsgd2l0aCBBbmd1bGFyIGZvcm1zIEFQSVxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb2N1c01hbmFnZXIuc3RvcE1vbml0b3JpbmcodGhpcy5faG9zdC5uYXRpdmVFbGVtZW50KTtcbiAgfVxufVxuIiwiPGxhYmVsIFtmb3JdPVwiaWRcIiBjbGFzcz1cImZpbHRlci1pY29uIHNjaW9uLXdvcmtiZW5jaC1pY29uc1wiPnNlYXJjaDwvbGFiZWw+XG48aW5wdXQgI2lucHV0XG4gICAgICAgW2F0dHIuaWRdPVwiaWRcIlxuICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXggPz8gMFwiXG4gICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyID8/ICcnXCI+XG48YnV0dG9uIGNsYXNzPVwiY2xlYXIgc2Npb24td29ya2JlbmNoLWljb25zXCIgdGFiaW5kZXg9XCItMVwiIChjbGljayk9XCJvbkNsZWFyKClcIj5cbiAgY2xlYXJcbjwvYnV0dG9uPlxuIl19
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL2ZpbHRlci1maWVsZC9maWx0ZXItZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvZmlsdGVyLWZpZWxkL2ZpbHRlci1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxTCxPQUFPLEVBQXVCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pHLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFNUQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7O0FBRXpDOztHQUVHO0FBWUgsTUFBTSxPQUFPLG9CQUFvQjtJQW9CL0IsSUFDVyxRQUFRLENBQUMsUUFBNkM7UUFDL0QscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDM0YsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FB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QUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUMsRUFBQztTQUMvRixnSkM5QkgseVhBVUEscXFCRGlCWSxtQkFBbUI7OzJGQUtsQixvQkFBb0I7a0JBWGhDLFNBQVM7K0JBQ0UsaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsbUJBQW1CLENBQUMsYUFDbkI7d0JBQ1QsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQyxFQUFDO3FCQUMvRjswSUFjTSxRQUFRO3NCQURkLEtBQUs7Z0JBT0MsV0FBVztzQkFEakIsS0FBSztnQkFJSyxRQUFRO3NCQURsQixLQUFLO2dCQWFDLE1BQU07c0JBRFosTUFBTTtnQkFJQyxhQUFhO3NCQURwQixTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBSTNCLGlCQUFpQjtzQkFEdkIsV0FBVzt1QkFBQyxlQUFlO2dCQUlqQixLQUFLO3NCQURmLFdBQVc7dUJBQUMsYUFBYTtnQkE2Qm5CLEtBQUs7c0JBRFgsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7bm9vcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NvZXJjZUJvb2xlYW5Qcm9wZXJ0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7Rm9jdXNNb25pdG9yLCBGb2N1c09yaWdpbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7VVVJRH0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvdXVpZCc7XG5cbi8qKlxuICogUHJvdmlkZXMgYSBmaWx0ZXIgY29udHJvbC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2ItZmlsdGVyLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbHRlci1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1JlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIG11bHRpOiB0cnVlLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGaWx0ZXJGaWVsZENvbXBvbmVudCl9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgX2N2YUNoYW5nZUZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX2N2YVRvdWNoZWRGbjogKCkgPT4gdm9pZCA9IG5vb3A7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlkID0gVVVJRC5yYW5kb21VVUlEKCk7XG5cbiAgLyoqXG4gICAqIFNldHMgZm9jdXMgb3JkZXIgaW4gc2VxdWVudGlhbCBrZXlib2FyZCBuYXZpZ2F0aW9uLlxuICAgKiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZm9jdXMgb3JkZXIgaXMgYWNjb3JkaW5nIHRvIHRoZSBwb3NpdGlvbiBpbiB0aGUgZG9jdW1lbnQgKHRhYmluZGV4PTApLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHRhYmluZGV4PzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGhpbnQgZGlzcGxheWVkIHdoZW4gdGhpcyBmaWVsZCBpcyBlbXB0eS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwbGFjZWhvbGRlcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShkaXNhYmxlZCkgPyB0aGlzLmZvcm1Db250cm9sLmRpc2FibGUoKSA6IHRoaXMuZm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db250cm9sLmRpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIG9uIGZpbHRlciBjaGFuZ2UuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0Jywge3N0YXRpYzogdHJ1ZX0pXG4gIHByaXZhdGUgX2lucHV0RWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgcHVibGljIGNvbXBvbmVudFRhYmluZGV4ID0gLTE7IC8vIGNvbXBvbmVudCBpcyBub3QgZm9jdXNhYmxlIGluIHNlcXVlbnRpYWwga2V5Ym9hcmQgbmF2aWdhdGlvbiwgYnV0IHRhYmluZGV4IChpZiBhbnkpIGlzIGluc3RhbGxlZCBvbiBpbnB1dCBmaWVsZFxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZW1wdHknKVxuICBwdWJsaWMgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcbiAgfVxuXG4gIC8qIEBkb2NzLXByaXZhdGUgKi9cbiAgcHVibGljIGZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ob3N0OiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIF9mb2N1c01hbmFnZXI6IEZvY3VzTW9uaXRvcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5mb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJywge3VwZGF0ZU9uOiAnY2hhbmdlJywgbm9uTnVsbGFibGU6IHRydWV9KTtcbiAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgdGhpcy5fY3ZhQ2hhbmdlRm4odmFsdWUpO1xuICAgICAgICB0aGlzLmZpbHRlci5lbWl0KHZhbHVlKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fZm9jdXNNYW5hZ2VyLm1vbml0b3IodGhpcy5faG9zdC5uYXRpdmVFbGVtZW50LCB0cnVlKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKChmb2N1c09yaWdpbjogRm9jdXNPcmlnaW4pID0+IHtcbiAgICAgICAgaWYgKCFmb2N1c09yaWdpbikge1xuICAgICAgICAgIHRoaXMuX2N2YVRvdWNoZWRGbigpOyAvLyB0cmlnZ2VycyBmb3JtIGZpZWxkIHZhbGlkYXRpb24gYW5kIHNpZ25hbHMgYSBibHVyIGV2ZW50XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICBwdWJsaWMgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMuZm9jdXMoKTsgLy8gcmVzdG9yZSB0aGUgZm9jdXNcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgaW1wbGVtZW50ZWQgYXMgcGFydCBvZiBgQ29udHJvbFZhbHVlQWNjZXNzb3JgIHRvIHdvcmsgd2l0aCBBbmd1bGFyIGZvcm1zIEFQSVxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fY3ZhQ2hhbmdlRm4gPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgaW1wbGVtZW50ZWQgYXMgcGFydCBvZiBgQ29udHJvbFZhbHVlQWNjZXNzb3JgIHRvIHdvcmsgd2l0aCBBbmd1bGFyIGZvcm1zIEFQSVxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX2N2YVRvdWNoZWRGbiA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBpbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIGBDb250cm9sVmFsdWVBY2Nlc3NvcmAgdG8gd29yayB3aXRoIEFuZ3VsYXIgZm9ybXMgQVBJXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgaW1wbGVtZW50ZWQgYXMgcGFydCBvZiBgQ29udHJvbFZhbHVlQWNjZXNzb3JgIHRvIHdvcmsgd2l0aCBBbmd1bGFyIGZvcm1zIEFQSVxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb2N1c01hbmFnZXIuc3RvcE1vbml0b3JpbmcodGhpcy5faG9zdC5uYXRpdmVFbGVtZW50KTtcbiAgfVxufVxuIiwiPGxhYmVsIFtmb3JdPVwiaWRcIiBjbGFzcz1cImZpbHRlci1pY29uIHNjaW9uLXdvcmtiZW5jaC1pY29uc1wiPnNlYXJjaDwvbGFiZWw+XG48aW5wdXQgI2lucHV0XG4gICAgICAgW2F0dHIuaWRdPVwiaWRcIlxuICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXggPz8gMFwiXG4gICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyID8/ICcnXCI+XG48YnV0dG9uIGNsYXNzPVwiY2xlYXIgc2Npb24td29ya2JlbmNoLWljb25zXCIgdGFiaW5kZXg9XCItMVwiIChjbGljayk9XCJvbkNsZWFyKClcIj5cbiAgY2xlYXJcbjwvYnV0dG9uPlxuIl19
@@ -12,7 +12,6 @@ import { MPart, MTreeNode } from '../workbench-layout.model';
12
12
  import { InstanceofPipe } from '../../common/instanceof.pipe';
13
13
  import { PortalModule } from '@angular/cdk/portal';
14
14
  import { PartPortalPipe } from '../../part/part-portal.pipe';
15
- import { NgFor, NgIf } from '@angular/common';
16
15
  import { SciSashboxComponent, SciSashDirective } from '@scion/components/sashbox';
17
16
  import { WorkbenchLayouts } from '../workbench-layouts.util';
18
17
  import * as i0 from "@angular/core";
@@ -38,18 +37,11 @@ export class GridElementComponent {
38
37
  this.MTreeNode = MTreeNode;
39
38
  this.MPart = MPart;
40
39
  this.children = new Array();
41
- /**
42
- * Each layout change creates new model object instances since the layout is deserialized from the URL.
43
- * Therefore, the "correct" track-by function is critical to help Angular identify DOM elements for reuse, which significantly can
44
- * improve performance. Note that we use the index instead of the object identity because a different identity may be computed for
45
- * nodes when re-arranging parts. Using the index is like not using *ngFor at all.
46
- */
47
- this.indexTrackByFn = (index) => index;
48
40
  }
49
41
  ngOnChanges(changes) {
50
42
  this.children = this.element instanceof MTreeNode ? this.computeChildren(this.element) : [];
51
- this.parentNodeId = this.element.parent?.nodeId;
52
- this.nodeId = this.element instanceof MTreeNode ? this.element.nodeId : undefined;
43
+ this.parentNodeId = this.element.parent?.id;
44
+ this.nodeId = this.element instanceof MTreeNode ? this.element.id : undefined;
53
45
  this.partId = this.element instanceof MPart ? this.element.id : undefined;
54
46
  }
55
47
  onSashStart() {
@@ -58,7 +50,7 @@ export class GridElementComponent {
58
50
  onSashEnd(treeNode, [sashSize1, sashSize2]) {
59
51
  const ratio = sashSize1 / (sashSize1 + sashSize2);
60
52
  this._workbenchLayoutService.notifyDragEnding();
61
- this._workbenchRouter.navigate(layout => layout.setSplitRatio(treeNode.nodeId, ratio)).then();
53
+ this._workbenchRouter.navigate(layout => layout.setSplitRatio(treeNode.id, ratio)).then();
62
54
  }
63
55
  computeChildren(treeNode) {
64
56
  const child1Visible = WorkbenchLayouts.isGridElementVisible(treeNode.child1);
@@ -79,19 +71,17 @@ export class GridElementComponent {
79
71
  return [];
80
72
  }
81
73
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: GridElementComponent, deps: [{ token: i1.ɵWorkbenchRouter }, { token: i2.WorkbenchLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
82
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: GridElementComponent, isStandalone: true, selector: "wb-grid-element", inputs: { element: "element" }, host: { properties: { "attr.data-parentnodeid": "this.parentNodeId", "attr.data-nodeid": "this.nodeId", "attr.data-partid": "this.partId" } }, usesOnChanges: true, ngImport: i0, template: "<!-- MPart (leaf) -->\n<ng-container *ngIf=\"element | wbInstanceof:MPart as part\" [cdkPortalOutlet]=\"part.id | wbPartPortal\"></ng-container>\n\n<!-- MTreeNode -->\n<ng-container *ngIf=\"element | wbInstanceof:MTreeNode as treeNode\">\n <!-- Node with a single visible child. -->\n <wb-grid-element *ngIf=\"children.length === 1\" [element]=\"children[0].element\"></wb-grid-element>\n\n <!-- Node with multiple visible children. -->\n <sci-sashbox *ngIf=\"children.length > 1\"\n [direction]=\"treeNode.direction\"\n [attr.data-nodeid]=\"treeNode.nodeId\"\n (sashStart)=\"onSashStart()\"\n (sashEnd)=\"onSashEnd(treeNode, $event)\">\n <ng-template *ngFor=\"let child of children; index as i; trackBy: indexTrackByFn\" sciSash [size]=\"child.size\">\n <wb-grid-element [element]=\"child.element\" [class]=\"'sash-' + (i + 1)\"></wb-grid-element>\n </ng-template>\n </sci-sashbox>\n</ng-container>\n", styles: [":host{display:grid}:host>sci-sashbox{z-index:auto;--sci-sashbox-gap: 0;--sci-sashbox-splitter-background-color: var(--sci-workbench-part-divider-color);--sci-sashbox-splitter-background-color-hover: var(--sci-workbench-part-divider-color-hover);--sci-sashbox-splitter-size: var(--sci-workbench-part-divider-size);--sci-sashbox-splitter-size-hover: var(--sci-workbench-part-divider-size-hover);--sci-sashbox-splitter-touch-target-size: var(--sci-workbench-part-divider-touch-target-size);--sci-sashbox-splitter-border-radius: 0;--sci-sashbox-splitter-opacity-active: var(--sci-workbench-part-divider-opacity-active);--sci-sashbox-splitter-opacity-hover: var(--sci-workbench-part-divider-opacity-hover)}\n"], dependencies: [{ kind: "component", type: GridElementComponent, selector: "wb-grid-element", inputs: ["element"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: InstanceofPipe, name: "wbInstanceof" }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "pipe", type: PartPortalPipe, name: "wbPartPortal" }, { kind: "component", type: SciSashboxComponent, selector: "sci-sashbox", inputs: ["direction"], outputs: ["sashStart", "sashEnd"] }, { kind: "directive", type: SciSashDirective, selector: "ng-template[sciSash]", inputs: ["size", "minSize"], exportAs: ["sciSash"] }] }); }
74
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: GridElementComponent, isStandalone: true, selector: "wb-grid-element", inputs: { element: "element" }, host: { properties: { "attr.data-parentnodeid": "this.parentNodeId", "attr.data-nodeid": "this.nodeId", "attr.data-partid": "this.partId" } }, usesOnChanges: true, ngImport: i0, template: "<!-- MPart (leaf) -->\n@if (element | wbInstanceof:MPart; as part) {\n <ng-container [cdkPortalOutlet]=\"part.id | wbPartPortal\"/>\n}\n\n<!-- MTreeNode -->\n@if (element | wbInstanceof:MTreeNode; as treeNode) {\n @if (children.length === 1) {\n <!-- Node with a single visible child. -->\n <wb-grid-element [element]=\"children[0].element\"/>\n }\n @if (children.length > 1) {\n <!-- Node with multiple visible children. -->\n <sci-sashbox [direction]=\"treeNode.direction\"\n [attr.data-nodeid]=\"treeNode.id\"\n (sashStart)=\"onSashStart()\"\n (sashEnd)=\"onSashEnd(treeNode, $event)\">\n @for (child of children; track child.element.id) {\n <ng-template sciSash [size]=\"child.size\">\n <wb-grid-element [element]=\"child.element\" [class]=\"'sash-' + ($index + 1)\"/>\n </ng-template>\n }\n </sci-sashbox>\n }\n}\n", styles: [":host{display:grid}:host>sci-sashbox{z-index:auto;--sci-sashbox-gap: 0;--sci-sashbox-splitter-background-color: var(--sci-workbench-part-divider-color);--sci-sashbox-splitter-background-color-hover: var(--sci-workbench-part-divider-color-hover);--sci-sashbox-splitter-size: var(--sci-workbench-part-divider-size);--sci-sashbox-splitter-size-hover: var(--sci-workbench-part-divider-size-hover);--sci-sashbox-splitter-touch-target-size: var(--sci-workbench-part-divider-touch-target-size);--sci-sashbox-splitter-border-radius: 0;--sci-sashbox-splitter-opacity-active: var(--sci-workbench-part-divider-opacity-active);--sci-sashbox-splitter-opacity-hover: var(--sci-workbench-part-divider-opacity-hover)}\n"], dependencies: [{ kind: "component", type: GridElementComponent, selector: "wb-grid-element", inputs: ["element"] }, { kind: "pipe", type: InstanceofPipe, name: "wbInstanceof" }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "pipe", type: PartPortalPipe, name: "wbPartPortal" }, { kind: "component", type: SciSashboxComponent, selector: "sci-sashbox", inputs: ["direction"], outputs: ["sashStart", "sashEnd"] }, { kind: "directive", type: SciSashDirective, selector: "ng-template[sciSash]", inputs: ["size", "minSize"], exportAs: ["sciSash"] }] }); }
83
75
  }
84
76
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: GridElementComponent, decorators: [{
85
77
  type: Component,
86
78
  args: [{ selector: 'wb-grid-element', standalone: true, imports: [
87
- NgIf,
88
- NgFor,
89
79
  InstanceofPipe,
90
80
  PortalModule,
91
81
  PartPortalPipe,
92
82
  SciSashboxComponent,
93
83
  SciSashDirective,
94
- ], template: "<!-- MPart (leaf) -->\n<ng-container *ngIf=\"element | wbInstanceof:MPart as part\" [cdkPortalOutlet]=\"part.id | wbPartPortal\"></ng-container>\n\n<!-- MTreeNode -->\n<ng-container *ngIf=\"element | wbInstanceof:MTreeNode as treeNode\">\n <!-- Node with a single visible child. -->\n <wb-grid-element *ngIf=\"children.length === 1\" [element]=\"children[0].element\"></wb-grid-element>\n\n <!-- Node with multiple visible children. -->\n <sci-sashbox *ngIf=\"children.length > 1\"\n [direction]=\"treeNode.direction\"\n [attr.data-nodeid]=\"treeNode.nodeId\"\n (sashStart)=\"onSashStart()\"\n (sashEnd)=\"onSashEnd(treeNode, $event)\">\n <ng-template *ngFor=\"let child of children; index as i; trackBy: indexTrackByFn\" sciSash [size]=\"child.size\">\n <wb-grid-element [element]=\"child.element\" [class]=\"'sash-' + (i + 1)\"></wb-grid-element>\n </ng-template>\n </sci-sashbox>\n</ng-container>\n", styles: [":host{display:grid}:host>sci-sashbox{z-index:auto;--sci-sashbox-gap: 0;--sci-sashbox-splitter-background-color: var(--sci-workbench-part-divider-color);--sci-sashbox-splitter-background-color-hover: var(--sci-workbench-part-divider-color-hover);--sci-sashbox-splitter-size: var(--sci-workbench-part-divider-size);--sci-sashbox-splitter-size-hover: var(--sci-workbench-part-divider-size-hover);--sci-sashbox-splitter-touch-target-size: var(--sci-workbench-part-divider-touch-target-size);--sci-sashbox-splitter-border-radius: 0;--sci-sashbox-splitter-opacity-active: var(--sci-workbench-part-divider-opacity-active);--sci-sashbox-splitter-opacity-hover: var(--sci-workbench-part-divider-opacity-hover)}\n"] }]
84
+ ], template: "<!-- MPart (leaf) -->\n@if (element | wbInstanceof:MPart; as part) {\n <ng-container [cdkPortalOutlet]=\"part.id | wbPartPortal\"/>\n}\n\n<!-- MTreeNode -->\n@if (element | wbInstanceof:MTreeNode; as treeNode) {\n @if (children.length === 1) {\n <!-- Node with a single visible child. -->\n <wb-grid-element [element]=\"children[0].element\"/>\n }\n @if (children.length > 1) {\n <!-- Node with multiple visible children. -->\n <sci-sashbox [direction]=\"treeNode.direction\"\n [attr.data-nodeid]=\"treeNode.id\"\n (sashStart)=\"onSashStart()\"\n (sashEnd)=\"onSashEnd(treeNode, $event)\">\n @for (child of children; track child.element.id) {\n <ng-template sciSash [size]=\"child.size\">\n <wb-grid-element [element]=\"child.element\" [class]=\"'sash-' + ($index + 1)\"/>\n </ng-template>\n }\n </sci-sashbox>\n }\n}\n", styles: [":host{display:grid}:host>sci-sashbox{z-index:auto;--sci-sashbox-gap: 0;--sci-sashbox-splitter-background-color: var(--sci-workbench-part-divider-color);--sci-sashbox-splitter-background-color-hover: var(--sci-workbench-part-divider-color-hover);--sci-sashbox-splitter-size: var(--sci-workbench-part-divider-size);--sci-sashbox-splitter-size-hover: var(--sci-workbench-part-divider-size-hover);--sci-sashbox-splitter-touch-target-size: var(--sci-workbench-part-divider-touch-target-size);--sci-sashbox-splitter-border-radius: 0;--sci-sashbox-splitter-opacity-active: var(--sci-workbench-part-divider-opacity-active);--sci-sashbox-splitter-opacity-hover: var(--sci-workbench-part-divider-opacity-hover)}\n"] }]
95
85
  }], ctorParameters: () => [{ type: i1.ɵWorkbenchRouter }, { type: i2.WorkbenchLayoutService }], propDecorators: { parentNodeId: [{
96
86
  type: HostBinding,
97
87
  args: ['attr.data-parentnodeid']
@@ -118,4 +108,4 @@ function calculateSashSizes(ratio) {
118
108
  }
119
109
  return [`${1 / (1 - ratio)}`, `${1 / ratio}`];
120
110
  }
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL2xheW91dC9ncmlkLWVsZW1lbnQvZ3JpZC1lbGVtZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL2xheW91dC9ncmlkLWVsZW1lbnQvZ3JpZC1lbGVtZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUE0QyxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRzNELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7Ozs7O0FBRTNEOzs7Ozs7Ozs7OztHQVdHO0FBZ0JILE1BQU0sT0FBTyxvQkFBb0I7SUFtQi9CLFlBQW9CLGdCQUFrQyxFQUFVLHVCQUErQztRQUEzRixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVUsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF3QjtRQWpCeEcsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUN0QixVQUFL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SUFBSSxXQUNQO3dCQUNQLElBQUk7d0JBQ0osS0FBSzt3QkFDTCxjQUFjO3dCQUNkLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLGdCQUFnQjtxQkFDakI7MEhBVU0sWUFBWTtzQkFEbEIsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBSTlCLE1BQU07c0JBRFosV0FBVzt1QkFBQyxrQkFBa0I7Z0JBSXhCLE1BQU07c0JBRFosV0FBVzt1QkFBQyxrQkFBa0I7Z0JBSXhCLE9BQU87c0JBRGIsS0FBSzt1QkFBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUM7O0FBb0R6Qjs7R0FFRztBQUNILFNBQVMsa0JBQWtCLENBQUMsS0FBYTtJQUN2QyxtSUFBbUk7SUFDbkksSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFRyYWNrQnlGdW5jdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01QYXJ0LCBNVHJlZU5vZGV9IGZyb20gJy4uL3dvcmtiZW5jaC1sYXlvdXQubW9kZWwnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaFJvdXRlcn0gZnJvbSAnLi4vLi4vcm91dGluZy/JtXdvcmtiZW5jaC1yb3V0ZXIuc2VydmljZSc7XG5pbXBvcnQge1dvcmtiZW5jaExheW91dFNlcnZpY2V9IGZyb20gJy4uL3dvcmtiZW5jaC1sYXlvdXQuc2VydmljZSc7XG5pbXBvcnQge0luc3RhbmNlb2ZQaXBlfSBmcm9tICcuLi8uLi9jb21tb24vaW5zdGFuY2VvZi5waXBlJztcbmltcG9ydCB7UG9ydGFsTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7UGFydFBvcnRhbFBpcGV9IGZyb20gJy4uLy4uL3BhcnQvcGFydC1wb3J0YWwucGlwZSc7XG5pbXBvcnQge05nRm9yLCBOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtTY2lTYXNoYm94Q29tcG9uZW50LCBTY2lTYXNoRGlyZWN0aXZlfSBmcm9tICdAc2Npb24vY29tcG9uZW50cy9zYXNoYm94JztcbmltcG9ydCB7V29ya2JlbmNoTGF5b3V0c30gZnJvbSAnLi4vd29ya2JlbmNoLWxheW91dHMudXRpbCc7XG5cbi8qKlxuICogUmVuZGVycyBhIHtAbGluayBNVHJlZU5vZGV9IG9yIHtAbGluayBNUGFydH0uXG4gKlxuICogVGhlIHdvcmtiZW5jaCBsYXlvdXQgaXMgbW9kZWxlZCBhcyBhIHRyZWUgb2Ygbm9kZXMgYHtAbGluayBNVHJlZU5vZGV9YCBhbmQgcGFydHMgYHtAbGluayBNUGFydH1gLlxuICogRWFjaCBub2RlIGhhcyB0d28gY2hpbGRyZW4sIHdoaWNoIGNhbiBiZSBlaXRoZXIgYW5vdGhlciBub2RlIG9yIGEgcGFydCAobGVhZikuIEEgbm9kZSBkZWZpbmVzXG4gKiBhIHNwbGl0IGxheW91dCBpbiB3aGljaCB0aGUgdHdvIGNoaWxkcmVuIGFyZSBhcnJhbmdlZCB2ZXJ0aWNhbGx5IG9yIGhvcml6b250YWxseS5cbiAqXG4gKiBOb2RlcyBhcmUgcmVuZGVyZWQgYXMge0BsaW5rIFNjaVNhc2hib3hDb21wb25lbnR9IGFuZCBwYXJ0cyBhcyB7QGxpbmsgUGFydENvbXBvbmVudH0gb3JcbiAqIHtAbGluayBNYWluQXJlYUxheW91dENvbXBvbmVudH0uXG4gKlxuICogQHNlZSBXb3JrYmVuY2hMYXlvdXRDb21wb25lbnRcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2ItZ3JpZC1lbGVtZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQtZWxlbWVudC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dyaWQtZWxlbWVudC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBOZ0ZvcixcbiAgICBJbnN0YW5jZW9mUGlwZSxcbiAgICBQb3J0YWxNb2R1bGUsXG4gICAgUGFydFBvcnRhbFBpcGUsXG4gICAgU2NpU2FzaGJveENvbXBvbmVudCxcbiAgICBTY2lTYXNoRGlyZWN0aXZlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBHcmlkRWxlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG5cbiAgcHVibGljIE1UcmVlTm9kZSA9IE1UcmVlTm9kZTtcbiAgcHVibGljIE1QYXJ0ID0gTVBhcnQ7XG5cbiAgcHVibGljIGNoaWxkcmVuID0gbmV3IEFycmF5PENoaWxkRWxlbWVudD4oKTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1wYXJlbnRub2RlaWQnKVxuICBwdWJsaWMgcGFyZW50Tm9kZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtbm9kZWlkJylcbiAgcHVibGljIG5vZGVJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXBhcnRpZCcpXG4gIHB1YmxpYyBwYXJ0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoe3JlcXVpcmVkOiB0cnVlfSlcbiAgcHVibGljIGVsZW1lbnQhOiBNVHJlZU5vZGUgfCBNUGFydDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF93b3JrYmVuY2hSb3V0ZXI6IMm1V29ya2JlbmNoUm91dGVyLCBwcml2YXRlIF93b3JrYmVuY2hMYXlvdXRTZXJ2aWNlOiBXb3JrYmVuY2hMYXlvdXRTZXJ2aWNlKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuY2hpbGRyZW4gPSB0aGlzLmVsZW1lbnQgaW5zdGFuY2VvZiBNVHJlZU5vZGUgPyB0aGlzLmNvbXB1dGVDaGlsZHJlbih0aGlzLmVsZW1lbnQpIDogW107XG4gICAgdGhpcy5wYXJlbnROb2RlSWQgPSB0aGlzLmVsZW1lbnQucGFyZW50Py5ub2RlSWQ7XG4gICAgdGhpcy5ub2RlSWQgPSB0aGlzLmVsZW1lbnQgaW5zdGFuY2VvZiBNVHJlZU5vZGUgPyB0aGlzLmVsZW1lbnQubm9kZUlkIDogdW5kZWZpbmVkO1xuICAgIHRoaXMucGFydElkID0gdGhpcy5lbGVtZW50IGluc3RhbmNlb2YgTVBhcnQgPyB0aGlzLmVsZW1lbnQuaWQgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgb25TYXNoU3RhcnQoKTogdm9pZCB7XG4gICAgdGhpcy5fd29ya2JlbmNoTGF5b3V0U2VydmljZS5ub3RpZnlEcmFnU3RhcnRpbmcoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNhc2hFbmQodHJlZU5vZGU6IE1UcmVlTm9kZSwgW3Nhc2hTaXplMSwgc2FzaFNpemUyXTogbnVtYmVyW10pOiB2b2lkIHtcbiAgICBjb25zdCByYXRpbyA9IHNhc2hTaXplMSAvIChzYXNoU2l6ZTEgKyBzYXNoU2l6ZTIpO1xuICAgIHRoaXMuX3dvcmtiZW5jaExheW91dFNlcnZpY2Uubm90aWZ5RHJhZ0VuZGluZygpO1xuICAgIHRoaXMuX3dvcmtiZW5jaFJvdXRlci5uYXZpZ2F0ZShsYXlvdXQgPT4gbGF5b3V0LnNldFNwbGl0UmF0aW8odHJlZU5vZGUubm9kZUlkLCByYXRpbykpLnRoZW4oKTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcHV0ZUNoaWxkcmVuKHRyZWVOb2RlOiBNVHJlZU5vZGUpOiBDaGlsZEVsZW1lbnRbXSB7XG4gICAgY29uc3QgY2hpbGQxVmlzaWJsZSA9IFdvcmtiZW5jaExheW91dHMuaXNHcmlkRWxlbWVudFZpc2libGUodHJlZU5vZGUuY2hpbGQxKTtcbiAgICBjb25zdCBjaGlsZDJWaXNpYmxlID0gV29ya2JlbmNoTGF5b3V0cy5pc0dyaWRFbGVtZW50VmlzaWJsZSh0cmVlTm9kZS5jaGlsZDIpO1xuXG4gICAgaWYgKGNoaWxkMVZpc2libGUgJiYgY2hpbGQyVmlzaWJsZSkge1xuICAgICAgY29uc3QgW3NpemUxLCBzaXplMl0gPSBjYWxjdWxhdGVTYXNoU2l6ZXModHJlZU5vZGUucmF0aW8pO1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge2VsZW1lbnQ6IHRyZWVOb2RlLmNoaWxkMSwgc2l6ZTogc2l6ZTF9LFxuICAgICAgICB7ZWxlbWVudDogdHJlZU5vZGUuY2hpbGQyLCBzaXplOiBzaXplMn0sXG4gICAgICBdO1xuICAgIH1cbiAgICBlbHNlIGlmIChjaGlsZDFWaXNpYmxlKSB7XG4gICAgICByZXR1cm4gW3tlbGVtZW50OiB0cmVlTm9kZS5jaGlsZDF9XTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY2hpbGQyVmlzaWJsZSkge1xuICAgICAgcmV0dXJuIFt7ZWxlbWVudDogdHJlZU5vZGUuY2hpbGQyfV07XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFYWNoIGxheW91dCBjaGFuZ2UgY3JlYXRlcyBuZXcgbW9kZWwgb2JqZWN0IGluc3RhbmNlcyBzaW5jZSB0aGUgbGF5b3V0IGlzIGRlc2VyaWFsaXplZCBmcm9tIHRoZSBVUkwuXG4gICAqIFRoZXJlZm9yZSwgdGhlIFwiY29ycmVjdFwiIHRyYWNrLWJ5IGZ1bmN0aW9uIGlzIGNyaXRpY2FsIHRvIGhlbHAgQW5ndWxhciBpZGVudGlmeSBET00gZWxlbWVudHMgZm9yIHJldXNlLCB3aGljaCBzaWduaWZpY2FudGx5IGNhblxuICAgKiBpbXByb3ZlIHBlcmZvcm1hbmNlLiBOb3RlIHRoYXQgd2UgdXNlIHRoZSBpbmRleCBpbnN0ZWFkIG9mIHRoZSBvYmplY3QgaWRlbnRpdHkgYmVjYXVzZSBhIGRpZmZlcmVudCBpZGVudGl0eSBtYXkgYmUgY29tcHV0ZWQgZm9yXG4gICAqIG5vZGVzIHdoZW4gcmUtYXJyYW5naW5nIHBhcnRzLiBVc2luZyB0aGUgaW5kZXggaXMgbGlrZSBub3QgdXNpbmcgKm5nRm9yIGF0IGFsbC5cbiAgICovXG4gIHB1YmxpYyBpbmRleFRyYWNrQnlGbjogVHJhY2tCeUZ1bmN0aW9uPENoaWxkRWxlbWVudD4gPSAoaW5kZXg6IG51bWJlcik6IG51bWJlciA9PiBpbmRleDtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSB0d28gc2FzaCBwcm9wb3J0aW9ucyBmb3IgdGhlIGdpdmVuIHJhdGlvLiBFYWNoIHByb3BvcnRpb24gaXMgPj0gMS5cbiAqL1xuZnVuY3Rpb24gY2FsY3VsYXRlU2FzaFNpemVzKHJhdGlvOiBudW1iZXIpOiBbc3RyaW5nLCBzdHJpbmddIHtcbiAgLy8gSW1wb3J0YW50OiBgU2NpU2FzaGJveENvbXBvbmVudGAgcmVxdWlyZXMgcHJvcG9ydGlvbnMgdG8gYmUgPj0gMS4gRm9yIHRoaXMgcmVhc29uIHdlIGNhbm5vdCBzaW1wbHkgY2FsY3VsYXRlIFtyYXRpbywgMSAtIHJhdGlvXS5cbiAgaWYgKHJhdGlvID09PSAwKSB7XG4gICAgcmV0dXJuIFsnMHB4JywgJzEnXTtcbiAgfVxuICBpZiAocmF0aW8gPT09IDEpIHtcbiAgICByZXR1cm4gWycxJywgJzBweCddO1xuICB9XG5cbiAgcmV0dXJuIFtgJHsxIC8gKDEgLSByYXRpbyl9YCwgYCR7MSAvIHJhdGlvfWBdO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSB2aXNpYmxlIGNoaWxkIG9mIGEge0BsaW5rIE1UcmVlTm9kZX0uXG4gKi9cbmludGVyZmFjZSBDaGlsZEVsZW1lbnQge1xuICBlbGVtZW50OiBNVHJlZU5vZGUgfCBNUGFydDtcbiAgc2l6ZT86IHN0cmluZztcbn1cbiIsIjwhLS0gTVBhcnQgKGxlYWYpIC0tPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZW1lbnQgfCB3Ykluc3RhbmNlb2Y6TVBhcnQgYXMgcGFydFwiIFtjZGtQb3J0YWxPdXRsZXRdPVwicGFydC5pZCB8IHdiUGFydFBvcnRhbFwiPjwvbmctY29udGFpbmVyPlxuXG48IS0tIE1UcmVlTm9kZSAtLT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50IHwgd2JJbnN0YW5jZW9mOk1UcmVlTm9kZSBhcyB0cmVlTm9kZVwiPlxuICA8IS0tIE5vZGUgd2l0aCBhIHNpbmdsZSB2aXNpYmxlIGNoaWxkLiAtLT5cbiAgPHdiLWdyaWQtZWxlbWVudCAqbmdJZj1cImNoaWxkcmVuLmxlbmd0aCA9PT0gMVwiIFtlbGVtZW50XT1cImNoaWxkcmVuWzBdLmVsZW1lbnRcIj48L3diLWdyaWQtZWxlbWVudD5cblxuICA8IS0tIE5vZGUgd2l0aCBtdWx0aXBsZSB2aXNpYmxlIGNoaWxkcmVuLiAtLT5cbiAgPHNjaS1zYXNoYm94ICpuZ0lmPVwiY2hpbGRyZW4ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgICBbZGlyZWN0aW9uXT1cInRyZWVOb2RlLmRpcmVjdGlvblwiXG4gICAgICAgICAgICAgICBbYXR0ci5kYXRhLW5vZGVpZF09XCJ0cmVlTm9kZS5ub2RlSWRcIlxuICAgICAgICAgICAgICAgKHNhc2hTdGFydCk9XCJvblNhc2hTdGFydCgpXCJcbiAgICAgICAgICAgICAgIChzYXNoRW5kKT1cIm9uU2FzaEVuZCh0cmVlTm9kZSwgJGV2ZW50KVwiPlxuICAgIDxuZy10ZW1wbGF0ZSAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgY2hpbGRyZW47IGluZGV4IGFzIGk7IHRyYWNrQnk6IGluZGV4VHJhY2tCeUZuXCIgc2NpU2FzaCBbc2l6ZV09XCJjaGlsZC5zaXplXCI+XG4gICAgICA8d2ItZ3JpZC1lbGVtZW50IFtlbGVtZW50XT1cImNoaWxkLmVsZW1lbnRcIiBbY2xhc3NdPVwiJ3Nhc2gtJyArIChpICsgMSlcIj48L3diLWdyaWQtZWxlbWVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L3NjaS1zYXNoYm94PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL2xheW91dC9ncmlkLWVsZW1lbnQvZ3JpZC1lbGVtZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL2xheW91dC9ncmlkLWVsZW1lbnQvZ3JpZC1lbGVtZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRzNELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ2hGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDOzs7OztBQUUzRDs7Ozs7Ozs7Ozs7R0FXRztBQWNILE1BQU0sT0FBTyxvQkFBb0I7SUFtQi9CLFlBQW9CLGdCQUFrQyxFQUFVLHVCQUErQztRQUEzRixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVUsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF3QjtRQWpCeEcsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUN0QixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBRWQsYUFBUSxHQUFHLElBQUksS0FBSyxFQUFnQixDQUFDO0lB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QWtCO2dCQUl4QixNQUFNO3NCQURaLFdBQVc7dUJBQUMsa0JBQWtCO2dCQUl4QixPQUFPO3NCQURiLEtBQUs7dUJBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDOztBQTRDekI7O0dBRUc7QUFDSCxTQUFTLGtCQUFrQixDQUFDLEtBQWE7SUFDdkMsbUlBQW1JO0lBQ25JLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUNELElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDaEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TVBhcnQsIE1UcmVlTm9kZX0gZnJvbSAnLi4vd29ya2JlbmNoLWxheW91dC5tb2RlbCc7XG5pbXBvcnQge8m1V29ya2JlbmNoUm91dGVyfSBmcm9tICcuLi8uLi9yb3V0aW5nL8m1d29ya2JlbmNoLXJvdXRlci5zZXJ2aWNlJztcbmltcG9ydCB7V29ya2JlbmNoTGF5b3V0U2VydmljZX0gZnJvbSAnLi4vd29ya2JlbmNoLWxheW91dC5zZXJ2aWNlJztcbmltcG9ydCB7SW5zdGFuY2VvZlBpcGV9IGZyb20gJy4uLy4uL2NvbW1vbi9pbnN0YW5jZW9mLnBpcGUnO1xuaW1wb3J0IHtQb3J0YWxNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtQYXJ0UG9ydGFsUGlwZX0gZnJvbSAnLi4vLi4vcGFydC9wYXJ0LXBvcnRhbC5waXBlJztcbmltcG9ydCB7U2NpU2FzaGJveENvbXBvbmVudCwgU2NpU2FzaERpcmVjdGl2ZX0gZnJvbSAnQHNjaW9uL2NvbXBvbmVudHMvc2FzaGJveCc7XG5pbXBvcnQge1dvcmtiZW5jaExheW91dHN9IGZyb20gJy4uL3dvcmtiZW5jaC1sYXlvdXRzLnV0aWwnO1xuXG4vKipcbiAqIFJlbmRlcnMgYSB7QGxpbmsgTVRyZWVOb2RlfSBvciB7QGxpbmsgTVBhcnR9LlxuICpcbiAqIFRoZSB3b3JrYmVuY2ggbGF5b3V0IGlzIG1vZGVsZWQgYXMgYSB0cmVlIG9mIG5vZGVzIGB7QGxpbmsgTVRyZWVOb2RlfWAgYW5kIHBhcnRzIGB7QGxpbmsgTVBhcnR9YC5cbiAqIEVhY2ggbm9kZSBoYXMgdHdvIGNoaWxkcmVuLCB3aGljaCBjYW4gYmUgZWl0aGVyIGFub3RoZXIgbm9kZSBvciBhIHBhcnQgKGxlYWYpLiBBIG5vZGUgZGVmaW5lc1xuICogYSBzcGxpdCBsYXlvdXQgaW4gd2hpY2ggdGhlIHR3byBjaGlsZHJlbiBhcmUgYXJyYW5nZWQgdmVydGljYWxseSBvciBob3Jpem9udGFsbHkuXG4gKlxuICogTm9kZXMgYXJlIHJlbmRlcmVkIGFzIHtAbGluayBTY2lTYXNoYm94Q29tcG9uZW50fSBhbmQgcGFydHMgYXMge0BsaW5rIFBhcnRDb21wb25lbnR9IG9yXG4gKiB7QGxpbmsgTWFpbkFyZWFMYXlvdXRDb21wb25lbnR9LlxuICpcbiAqIEBzZWUgV29ya2JlbmNoTGF5b3V0Q29tcG9uZW50XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3diLWdyaWQtZWxlbWVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmlkLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ncmlkLWVsZW1lbnQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEluc3RhbmNlb2ZQaXBlLFxuICAgIFBvcnRhbE1vZHVsZSxcbiAgICBQYXJ0UG9ydGFsUGlwZSxcbiAgICBTY2lTYXNoYm94Q29tcG9uZW50LFxuICAgIFNjaVNhc2hEaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEdyaWRFbGVtZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcblxuICBwdWJsaWMgTVRyZWVOb2RlID0gTVRyZWVOb2RlO1xuICBwdWJsaWMgTVBhcnQgPSBNUGFydDtcblxuICBwdWJsaWMgY2hpbGRyZW4gPSBuZXcgQXJyYXk8Q2hpbGRFbGVtZW50PigpO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXBhcmVudG5vZGVpZCcpXG4gIHB1YmxpYyBwYXJlbnROb2RlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1ub2RlaWQnKVxuICBwdWJsaWMgbm9kZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtcGFydGlkJylcbiAgcHVibGljIHBhcnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCh7cmVxdWlyZWQ6IHRydWV9KVxuICBwdWJsaWMgZWxlbWVudCE6IE1UcmVlTm9kZSB8IE1QYXJ0O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3dvcmtiZW5jaFJvdXRlcjogybVXb3JrYmVuY2hSb3V0ZXIsIHByaXZhdGUgX3dvcmtiZW5jaExheW91dFNlcnZpY2U6IFdvcmtiZW5jaExheW91dFNlcnZpY2UpIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5jaGlsZHJlbiA9IHRoaXMuZWxlbWVudCBpbnN0YW5jZW9mIE1UcmVlTm9kZSA/IHRoaXMuY29tcHV0ZUNoaWxkcmVuKHRoaXMuZWxlbWVudCkgOiBbXTtcbiAgICB0aGlzLnBhcmVudE5vZGVJZCA9IHRoaXMuZWxlbWVudC5wYXJlbnQ/LmlkO1xuICAgIHRoaXMubm9kZUlkID0gdGhpcy5lbGVtZW50IGluc3RhbmNlb2YgTVRyZWVOb2RlID8gdGhpcy5lbGVtZW50LmlkIDogdW5kZWZpbmVkO1xuICAgIHRoaXMucGFydElkID0gdGhpcy5lbGVtZW50IGluc3RhbmNlb2YgTVBhcnQgPyB0aGlzLmVsZW1lbnQuaWQgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgb25TYXNoU3RhcnQoKTogdm9pZCB7XG4gICAgdGhpcy5fd29ya2JlbmNoTGF5b3V0U2VydmljZS5ub3RpZnlEcmFnU3RhcnRpbmcoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNhc2hFbmQodHJlZU5vZGU6IE1UcmVlTm9kZSwgW3Nhc2hTaXplMSwgc2FzaFNpemUyXTogbnVtYmVyW10pOiB2b2lkIHtcbiAgICBjb25zdCByYXRpbyA9IHNhc2hTaXplMSAvIChzYXNoU2l6ZTEgKyBzYXNoU2l6ZTIpO1xuICAgIHRoaXMuX3dvcmtiZW5jaExheW91dFNlcnZpY2Uubm90aWZ5RHJhZ0VuZGluZygpO1xuICAgIHRoaXMuX3dvcmtiZW5jaFJvdXRlci5uYXZpZ2F0ZShsYXlvdXQgPT4gbGF5b3V0LnNldFNwbGl0UmF0aW8odHJlZU5vZGUuaWQsIHJhdGlvKSkudGhlbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wdXRlQ2hpbGRyZW4odHJlZU5vZGU6IE1UcmVlTm9kZSk6IENoaWxkRWxlbWVudFtdIHtcbiAgICBjb25zdCBjaGlsZDFWaXNpYmxlID0gV29ya2JlbmNoTGF5b3V0cy5pc0dyaWRFbGVtZW50VmlzaWJsZSh0cmVlTm9kZS5jaGlsZDEpO1xuICAgIGNvbnN0IGNoaWxkMlZpc2libGUgPSBXb3JrYmVuY2hMYXlvdXRzLmlzR3JpZEVsZW1lbnRWaXNpYmxlKHRyZWVOb2RlLmNoaWxkMik7XG5cbiAgICBpZiAoY2hpbGQxVmlzaWJsZSAmJiBjaGlsZDJWaXNpYmxlKSB7XG4gICAgICBjb25zdCBbc2l6ZTEsIHNpemUyXSA9IGNhbGN1bGF0ZVNhc2hTaXplcyh0cmVlTm9kZS5yYXRpbyk7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7ZWxlbWVudDogdHJlZU5vZGUuY2hpbGQxLCBzaXplOiBzaXplMX0sXG4gICAgICAgIHtlbGVtZW50OiB0cmVlTm9kZS5jaGlsZDIsIHNpemU6IHNpemUyfSxcbiAgICAgIF07XG4gICAgfVxuICAgIGVsc2UgaWYgKGNoaWxkMVZpc2libGUpIHtcbiAgICAgIHJldHVybiBbe2VsZW1lbnQ6IHRyZWVOb2RlLmNoaWxkMX1dO1xuICAgIH1cbiAgICBlbHNlIGlmIChjaGlsZDJWaXNpYmxlKSB7XG4gICAgICByZXR1cm4gW3tlbGVtZW50OiB0cmVlTm9kZS5jaGlsZDJ9XTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgdHdvIHNhc2ggcHJvcG9ydGlvbnMgZm9yIHRoZSBnaXZlbiByYXRpby4gRWFjaCBwcm9wb3J0aW9uIGlzID49IDEuXG4gKi9cbmZ1bmN0aW9uIGNhbGN1bGF0ZVNhc2hTaXplcyhyYXRpbzogbnVtYmVyKTogW3N0cmluZywgc3RyaW5nXSB7XG4gIC8vIEltcG9ydGFudDogYFNjaVNhc2hib3hDb21wb25lbnRgIHJlcXVpcmVzIHByb3BvcnRpb25zIHRvIGJlID49IDEuIEZvciB0aGlzIHJlYXNvbiB3ZSBjYW5ub3Qgc2ltcGx5IGNhbGN1bGF0ZSBbcmF0aW8sIDEgLSByYXRpb10uXG4gIGlmIChyYXRpbyA9PT0gMCkge1xuICAgIHJldHVybiBbJzBweCcsICcxJ107XG4gIH1cbiAgaWYgKHJhdGlvID09PSAxKSB7XG4gICAgcmV0dXJuIFsnMScsICcwcHgnXTtcbiAgfVxuXG4gIHJldHVybiBbYCR7MSAvICgxIC0gcmF0aW8pfWAsIGAkezEgLyByYXRpb31gXTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgdmlzaWJsZSBjaGlsZCBvZiBhIHtAbGluayBNVHJlZU5vZGV9LlxuICovXG5pbnRlcmZhY2UgQ2hpbGRFbGVtZW50IHtcbiAgZWxlbWVudDogTVRyZWVOb2RlIHwgTVBhcnQ7XG4gIHNpemU/OiBzdHJpbmc7XG59XG4iLCI8IS0tIE1QYXJ0IChsZWFmKSAtLT5cbkBpZiAoZWxlbWVudCB8IHdiSW5zdGFuY2VvZjpNUGFydDsgYXMgcGFydCkge1xuICA8bmctY29udGFpbmVyIFtjZGtQb3J0YWxPdXRsZXRdPVwicGFydC5pZCB8IHdiUGFydFBvcnRhbFwiLz5cbn1cblxuPCEtLSBNVHJlZU5vZGUgLS0+XG5AaWYgKGVsZW1lbnQgfCB3Ykluc3RhbmNlb2Y6TVRyZWVOb2RlOyBhcyB0cmVlTm9kZSkge1xuICBAaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMSkge1xuICAgIDwhLS0gTm9kZSB3aXRoIGEgc2luZ2xlIHZpc2libGUgY2hpbGQuIC0tPlxuICAgIDx3Yi1ncmlkLWVsZW1lbnQgW2VsZW1lbnRdPVwiY2hpbGRyZW5bMF0uZWxlbWVudFwiLz5cbiAgfVxuICBAaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcbiAgICA8IS0tIE5vZGUgd2l0aCBtdWx0aXBsZSB2aXNpYmxlIGNoaWxkcmVuLiAtLT5cbiAgICA8c2NpLXNhc2hib3ggW2RpcmVjdGlvbl09XCJ0cmVlTm9kZS5kaXJlY3Rpb25cIlxuICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLW5vZGVpZF09XCJ0cmVlTm9kZS5pZFwiXG4gICAgICAgICAgICAgICAgIChzYXNoU3RhcnQpPVwib25TYXNoU3RhcnQoKVwiXG4gICAgICAgICAgICAgICAgIChzYXNoRW5kKT1cIm9uU2FzaEVuZCh0cmVlTm9kZSwgJGV2ZW50KVwiPlxuICAgICAgQGZvciAoY2hpbGQgb2YgY2hpbGRyZW47IHRyYWNrIGNoaWxkLmVsZW1lbnQuaWQpIHtcbiAgICAgICAgPG5nLXRlbXBsYXRlIHNjaVNhc2ggW3NpemVdPVwiY2hpbGQuc2l6ZVwiPlxuICAgICAgICAgIDx3Yi1ncmlkLWVsZW1lbnQgW2VsZW1lbnRdPVwiY2hpbGQuZWxlbWVudFwiIFtjbGFzc109XCInc2FzaC0nICsgKCRpbmRleCArIDEpXCIvPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgfVxuICAgIDwvc2NpLXNhc2hib3g+XG4gIH1cbn1cbiJdfQ==