@mintplayer/ng-bootstrap 15.24.1 → 15.25.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dock/src/dock/dock.component.d.ts +3 -1
  2. package/dock/src/dock-panel-header/dock-panel-header.component.d.ts +5 -4
  3. package/dock/src/index.d.ts +1 -0
  4. package/dock/src/panes/content-pane.d.ts +1 -0
  5. package/dock/src/panes/dock-pane.d.ts +1 -0
  6. package/dock/src/panes/document-host-pane.d.ts +1 -0
  7. package/dock/src/panes/floating-pane.d.ts +2 -1
  8. package/dock/src/panes/split-pane.d.ts +1 -0
  9. package/dock/src/panes/tab-group-pane.d.ts +1 -0
  10. package/dock/src/services/dock/dock.service.d.ts +14 -0
  11. package/dock/src/services/index.d.ts +1 -0
  12. package/esm2020/dock/src/dock/dock.component.mjs +10 -2
  13. package/esm2020/dock/src/dock-panel-header/dock-panel-header.component.mjs +202 -96
  14. package/esm2020/dock/src/index.mjs +2 -1
  15. package/esm2020/dock/src/panes/content-pane.mjs +4 -1
  16. package/esm2020/dock/src/panes/dock-pane.mjs +1 -1
  17. package/esm2020/dock/src/panes/document-host-pane.mjs +4 -1
  18. package/esm2020/dock/src/panes/floating-pane.mjs +7 -2
  19. package/esm2020/dock/src/panes/split-pane.mjs +4 -1
  20. package/esm2020/dock/src/panes/tab-group-pane.mjs +4 -1
  21. package/esm2020/dock/src/services/dock/dock.service.mjs +56 -0
  22. package/esm2020/dock/src/services/index.mjs +2 -0
  23. package/esm2020/list-group/src/list-group-item/list-group-item.component.mjs +9 -7
  24. package/esm2020/resizable/src/resize-glyph/resize-glyph.directive.mjs +1 -1
  25. package/esm2020/treeview/index.mjs +2 -0
  26. package/esm2020/treeview/mintplayer-ng-bootstrap-treeview.mjs +5 -0
  27. package/esm2020/treeview/src/index.mjs +4 -0
  28. package/esm2020/treeview/src/treeview/treeview.component.mjs +46 -0
  29. package/esm2020/treeview/src/treeview-item/treeview-item.component.mjs +27 -0
  30. package/esm2020/treeview/src/treeview.module.mjs +21 -0
  31. package/fesm2015/mintplayer-ng-bootstrap-dock.mjs +287 -111
  32. package/fesm2015/mintplayer-ng-bootstrap-dock.mjs.map +1 -1
  33. package/fesm2015/mintplayer-ng-bootstrap-list-group.mjs +8 -6
  34. package/fesm2015/mintplayer-ng-bootstrap-list-group.mjs.map +1 -1
  35. package/fesm2015/mintplayer-ng-bootstrap-resizable.mjs.map +1 -1
  36. package/fesm2015/mintplayer-ng-bootstrap-treeview.mjs +93 -0
  37. package/fesm2015/mintplayer-ng-bootstrap-treeview.mjs.map +1 -0
  38. package/fesm2020/mintplayer-ng-bootstrap-dock.mjs +285 -111
  39. package/fesm2020/mintplayer-ng-bootstrap-dock.mjs.map +1 -1
  40. package/fesm2020/mintplayer-ng-bootstrap-list-group.mjs +8 -6
  41. package/fesm2020/mintplayer-ng-bootstrap-list-group.mjs.map +1 -1
  42. package/fesm2020/mintplayer-ng-bootstrap-resizable.mjs.map +1 -1
  43. package/fesm2020/mintplayer-ng-bootstrap-treeview.mjs +91 -0
  44. package/fesm2020/mintplayer-ng-bootstrap-treeview.mjs.map +1 -0
  45. package/list-group/src/list-group-item/list-group-item.component.d.ts +2 -4
  46. package/package.json +10 -2
  47. package/resizable/src/resize-glyph/resize-glyph.directive.d.ts +1 -1
  48. package/treeview/index.d.ts +1 -0
  49. package/treeview/src/index.d.ts +3 -0
  50. package/treeview/src/treeview/treeview.component.d.ts +16 -0
  51. package/treeview/src/treeview-item/treeview-item.component.d.ts +10 -0
  52. package/treeview/src/treeview.module.d.ts +11 -0
@@ -7,16 +7,19 @@ import { BsContentPane } from '../panes/content-pane';
7
7
  import { BsFloatingPane } from '../panes/floating-pane';
8
8
  import { BsTabGroupPane } from '../panes/tab-group-pane';
9
9
  import { BsDocumentHost } from '../panes/document-host-pane';
10
+ import { BsDockService } from '../services/dock/dock.service';
10
11
  import * as i0 from "@angular/core";
11
12
  import * as i1 from "../dock-panel/dock-panel.component";
12
13
  import * as i2 from "../dock/dock.component";
14
+ import * as i3 from "../services/dock/dock.service";
13
15
  export class BsDockPanelHeaderComponent {
14
- constructor(dockPanel, dock, element) {
16
+ constructor(dockPanel, dock, dockService, element) {
15
17
  this.dockPanel = dockPanel;
16
18
  this.dock = dock;
19
+ this.dockService = dockService;
17
20
  this.element = element;
18
21
  this.isMouseDown = false;
19
- this.isLayoutDetached = false;
22
+ this.isDragging = false;
20
23
  this.dBlock = true;
21
24
  }
22
25
  onMouseDown(ev) {
@@ -25,130 +28,233 @@ export class BsDockPanelHeaderComponent {
25
28
  }
26
29
  onMouseMove(ev) {
27
30
  if (this.isMouseDown) {
28
- if (!this.isLayoutDetached) {
29
- this.isLayoutDetached = true;
30
- this.dock.layout$.pipe(take(1)).subscribe((layout) => {
31
- let element = this.element.nativeElement;
32
- let tree = [];
31
+ if (!this.isDragging) {
32
+ this.isDragging = true;
33
+ this.dock.parentifiedLayout$.pipe(take(1)).subscribe((layout) => {
34
+ // this.dock.layout$.pipe(take(1)).subscribe((layout) => {
35
+ const traces = this.dockService.buildTraces(layout);
36
+ console.log('traces', { layout, traces });
37
+ const matching = traces.filter(t => {
38
+ const lastPane = t.trace[t.trace.length - 1];
39
+ // return (lastPane instanceof BsContentPane) && (lastPane.dockPanel === this.dockPanel);
40
+ return (lastPane instanceof BsContentPane) && (lastPane.dockPanel === this.dockPanel);
41
+ });
42
+ console.log('matching', matching);
43
+ if (matching.length !== 1) {
44
+ return;
45
+ }
46
+ // const tabs = matching[0].trace.filter(pane => pane instanceof BsTabGroupPane);
47
+ // const lastTabGroup = tabs[tabs.length - 1];
48
+ // // console.log('last tabgroup', lastTabGroup);
49
+ let tabControlEl = this.element.nativeElement;
33
50
  do {
34
- tree.push(element);
35
- element = element.parentElement;
36
- } while (element);
37
- const tabControls = tree.filter(el => el.tagName.toUpperCase() === 'BS-TAB-CONTROL');
38
- if (tabControls.length > 0) {
39
- const coords = {
40
- width: tabControls[0].clientWidth,
41
- height: tabControls[0].clientHeight,
42
- left: ev.clientX - ev.offsetX,
43
- top: ev.clientY - ev.offsetY,
44
- };
45
- this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();
46
- this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();
47
- this.removeFromPane(layout.rootPane, this.dockPanel);
48
- const floatingPane = new BsFloatingPane({
49
- pane: new BsTabGroupPane({
50
- panes: [
51
- new BsContentPane({
52
- dockPanel: this.dockPanel
53
- })
54
- ]
55
- }),
56
- size: {
57
- width: coords.width,
58
- height: coords.height,
59
- },
60
- location: {
61
- x: coords.left,
62
- y: coords.top,
51
+ if (tabControlEl.parentElement) {
52
+ tabControlEl = tabControlEl.parentElement;
53
+ }
54
+ else {
55
+ throw 'No more parents';
56
+ }
57
+ } while (tabControlEl.tagName.toUpperCase() !== 'BS-TAB-CONTROL');
58
+ const coords = {
59
+ width: tabControlEl.clientWidth,
60
+ height: tabControlEl.clientHeight,
61
+ left: ev.clientX - ev.offsetX,
62
+ top: ev.clientY - ev.offsetY,
63
+ };
64
+ // this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();
65
+ // this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();
66
+ // this.removeFromPane(layout.rootPane, this.dockPanel);
67
+ const trace = [...matching[0].trace];
68
+ this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();
69
+ this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();
70
+ for (let index = trace.length - 1; index >= 0; index--) {
71
+ if (index > 0) {
72
+ this.removeFromPaneBis(trace[index - 1], trace[index]);
73
+ if (!trace[index - 1].isEmpty)
74
+ break;
75
+ }
76
+ else {
77
+ const floatingIndex = layout.floatingPanes.indexOf(trace[0]);
78
+ if (trace[0].isEmpty && (floatingIndex > -1)) {
79
+ layout.floatingPanes.splice(floatingIndex, 1);
63
80
  }
64
- });
65
- this.dragOperation = {
66
- offsetX: ev.offsetX,
67
- offsetY: ev.offsetY,
68
- floatingPane
69
- };
70
- layout.floatingPanes.push(floatingPane);
71
- this.dock.layout$.next(layout);
81
+ }
72
82
  }
83
+ // this.removeFromPane((<any>matching[0].trace[0])['$original'], this.dockPanel);
84
+ const floatingPane = new BsFloatingPane({
85
+ pane: new BsTabGroupPane({
86
+ panes: [
87
+ new BsContentPane({
88
+ dockPanel: this.dockPanel
89
+ })
90
+ ]
91
+ }),
92
+ size: {
93
+ width: coords.width,
94
+ height: coords.height,
95
+ },
96
+ location: {
97
+ x: coords.left,
98
+ y: coords.top,
99
+ }
100
+ });
101
+ this.dragOperation = {
102
+ offsetX: ev.offsetX,
103
+ offsetY: ev.offsetY,
104
+ floatingPane
105
+ };
106
+ layout.floatingPanes.push(floatingPane);
107
+ setTimeout(() => this.dock.layout$.next(layout), 5);
108
+ // console.log('traces', { traces, matching, dockPanel: this.dockPanel, equals: traces[2].trace[3] });
109
+ // let element: HTMLElement | null = this.element.nativeElement;
110
+ // let tree: HTMLElement[] = [];
111
+ // do {
112
+ // tree.push(element!);
113
+ // element = element!.parentElement;
114
+ // } while (element);
115
+ // const tabControls = tree.filter(el => el.tagName.toUpperCase() === 'BS-TAB-CONTROL');
116
+ // if (tabControls.length > 0) {
117
+ // const coords = {
118
+ // width: tabControls[0].clientWidth,
119
+ // height: tabControls[0].clientHeight,
120
+ // left: ev.clientX - ev.offsetX,
121
+ // top: ev.clientY - ev.offsetY,
122
+ // };
123
+ // this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();
124
+ // this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();
125
+ // this.removeFromPane(layout.rootPane, this.dockPanel);
126
+ // const floatingPane = new BsFloatingPane({
127
+ // pane: new BsTabGroupPane({
128
+ // panes: [
129
+ // new BsContentPane({
130
+ // dockPanel: this.dockPanel
131
+ // })
132
+ // ]
133
+ // }),
134
+ // size: {
135
+ // width: coords.width,
136
+ // height: coords.height,
137
+ // },
138
+ // location: {
139
+ // x: coords.left,
140
+ // y: coords.top,
141
+ // }
142
+ // });
143
+ // this.dragOperation = {
144
+ // offsetX: ev.offsetX,
145
+ // offsetY: ev.offsetY,
146
+ // floatingPane
147
+ // };
148
+ // layout.floatingPanes.push(floatingPane);
149
+ // this.dock.layout$.next(layout);
150
+ // }
73
151
  });
74
152
  }
75
- else if (this.dragOperation) {
76
- if (this.dragOperation.floatingPane.location) {
77
- this.dragOperation.floatingPane.location.x = ev.clientX - this.dragOperation.offsetX;
78
- this.dragOperation.floatingPane.location.y = ev.clientY - this.dragOperation.offsetY;
153
+ else {
154
+ if (this.dragOperation) {
155
+ if (this.dragOperation.floatingPane.location) {
156
+ this.dragOperation.floatingPane.location.x = ev.clientX - this.dragOperation.offsetX;
157
+ this.dragOperation.floatingPane.location.y = ev.clientY - this.dragOperation.offsetY;
158
+ }
159
+ // } else {
160
+ // const traces = this.dockService.buildTraces(this.dock.layout);
161
+ // const matchingTrace = traces.filter(trace => {
162
+ // const pane = trace.trace[trace.trace.length - 1];
163
+ // return (pane instanceof BsContentPane) && (pane.dockPanel === this.dockPanel);
164
+ // });
165
+ // console.log('matching', { traces, matchingTrace });
166
+ // // this.dragOperation = {
167
+ // // }
79
168
  }
80
169
  }
81
170
  }
82
171
  }
83
- removeFromPane(host, panel /*, parents: BsDockPane[] */) {
172
+ removeFromPaneBis(host, pane) {
84
173
  if (host instanceof BsContentPane) {
85
- return { paneRemoved: false, hostIsEmpty: false };
86
174
  }
87
175
  else if (host instanceof BsDocumentHost) {
88
176
  // Actually documentHost should never be removed
89
- if (!host.rootPane) {
90
- return { paneRemoved: false, hostIsEmpty: true };
91
- }
92
- const result = this.removeFromPane(host.rootPane, panel);
93
- return { paneRemoved: result.paneRemoved, hostIsEmpty: result.hostIsEmpty };
94
177
  }
95
178
  else if (host instanceof BsTabGroupPane) {
96
- const matching = host.panes.filter(p => p.dockPanel === panel);
97
- if (matching.length > 0) {
98
- host.panes.splice(host.panes.findIndex(p => p.dockPanel === panel), 1);
99
- return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
100
- }
101
- else {
102
- // ATM. all panes are ContentPanes anyway.
103
- // So unless you'd want to have splitters inside the tabs,
104
- // This code will not be hit.
105
- // const result = host.panes
106
- // .map(parentPane => this.removeFromPane(parentPane, panel))
107
- // .filter(r => r.paneRemoved);
108
- //
109
- // if (result.length > 0) {
110
- // return { paneRemoved: true, hostIsEmpty: }
111
- // }
112
- return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };
179
+ if (pane instanceof BsContentPane) {
180
+ const index = host.panes.indexOf(pane);
181
+ host.panes.splice(index, 1);
113
182
  }
114
183
  }
115
184
  else if (host instanceof BsSplitPane) {
116
- const matching = host.panes
117
- .filter(p => p instanceof BsContentPane)
118
- .map(p => p)
119
- .filter(p => p.dockPanel === panel);
120
- if (matching.length > 0) {
121
- host.panes.splice(host.panes.findIndex(p => (p instanceof BsContentPane) && matching.includes(p)), 1);
122
- // TODO: Remove splitter if only 1 pane left?
123
- return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
124
- }
125
- else {
126
- for (let splitPane of host.panes) {
127
- const result = this.removeFromPane(splitPane, panel);
128
- if (result.paneRemoved && result.hostIsEmpty) {
129
- // splitPane is empty now, so we can remove it from this splitter
130
- host.panes.splice(host.panes.indexOf(splitPane), 1);
131
- return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
132
- }
133
- }
134
- }
135
- return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };
185
+ const index = host.panes.indexOf(pane);
186
+ host.panes.splice(index, 1);
187
+ }
188
+ else if (host instanceof BsFloatingPane) {
136
189
  }
137
190
  else {
138
- throw 'unknown host type';
191
+ throw 'Unknown pane type';
139
192
  }
140
193
  }
194
+ // removeFromPane(host: BsDockPane, panel: BsDockPanelComponent /*, parents: BsDockPane[] */): RemoveFromPaneResult {
195
+ // if (host instanceof BsContentPane) {
196
+ // return { paneRemoved: false, hostIsEmpty: false };
197
+ // } else if (host instanceof BsDocumentHost) {
198
+ // // Actually documentHost should never be removed
199
+ // if (!host.rootPane) {
200
+ // return { paneRemoved: false, hostIsEmpty: true };
201
+ // }
202
+ // const result = this.removeFromPane(host.rootPane, panel);
203
+ // return { paneRemoved: result.paneRemoved, hostIsEmpty: result.hostIsEmpty };
204
+ // } else if (host instanceof BsTabGroupPane) {
205
+ // const matching = host.panes.filter(p => p.dockPanel === panel);
206
+ // if (matching.length > 0) {
207
+ // host.panes.splice(host.panes.findIndex(p => p.dockPanel === panel), 1);
208
+ // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
209
+ // } else {
210
+ // // ATM. all panes are ContentPanes anyway.
211
+ // // So unless you'd want to have splitters inside the tabs,
212
+ // // This code will not be hit.
213
+ // // const result = host.panes
214
+ // // .map(parentPane => this.removeFromPane(parentPane, panel))
215
+ // // .filter(r => r.paneRemoved);
216
+ // //
217
+ // // if (result.length > 0) {
218
+ // // return { paneRemoved: true, hostIsEmpty: }
219
+ // // }
220
+ // return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };
221
+ // }
222
+ // } else if (host instanceof BsSplitPane) {
223
+ // const matching = host.panes
224
+ // .filter(p => p instanceof BsContentPane)
225
+ // .map(p => <BsContentPane>p)
226
+ // .filter(p => p.dockPanel === panel);
227
+ // if (matching.length > 0) {
228
+ // host.panes.splice(host.panes.findIndex(p => (p instanceof BsContentPane) && matching.includes(p)), 1);
229
+ // // TODO: Remove splitter if only 1 pane left?
230
+ // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
231
+ // } else {
232
+ // for (let splitPane of host.panes) {
233
+ // const result = this.removeFromPane(splitPane, panel);
234
+ // if (result.paneRemoved && result.hostIsEmpty) {
235
+ // // splitPane is empty now, so we can remove it from this splitter
236
+ // host.panes.splice(host.panes.indexOf(splitPane), 1);
237
+ // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
238
+ // }
239
+ // }
240
+ // }
241
+ // return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };
242
+ // } else {
243
+ // throw 'unknown host type';
244
+ // }
245
+ // }
141
246
  onMouseUp(ev) {
142
247
  this.isMouseDown = false;
248
+ this.isDragging = false;
143
249
  this.dragOperation = undefined;
144
250
  }
145
251
  }
146
- BsDockPanelHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BsDockPanelHeaderComponent, deps: [{ token: i1.BsDockPanelComponent }, { token: i2.BsDockComponent }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
252
+ BsDockPanelHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BsDockPanelHeaderComponent, deps: [{ token: i1.BsDockPanelComponent }, { token: i2.BsDockComponent }, { token: i3.BsDockService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
147
253
  BsDockPanelHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: BsDockPanelHeaderComponent, selector: "bs-dock-panel-header", host: { listeners: { "mousedown": "onMouseDown($event)", "document:mousemove": "onMouseMove($event)", "document:mouseup": "onMouseUp($event)" }, properties: { "class.d-block": "this.dBlock" } }, ngImport: i0, template: "<ng-content></ng-content>", styles: [":host{padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);margin:calc(-1 * var(--bs-nav-link-padding-y)) calc(-1 * var(--bs-nav-link-padding-x))}\n"] });
148
254
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BsDockPanelHeaderComponent, decorators: [{
149
255
  type: Component,
150
256
  args: [{ selector: 'bs-dock-panel-header', template: "<ng-content></ng-content>", styles: [":host{padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);margin:calc(-1 * var(--bs-nav-link-padding-y)) calc(-1 * var(--bs-nav-link-padding-x))}\n"] }]
151
- }], ctorParameters: function () { return [{ type: i1.BsDockPanelComponent }, { type: i2.BsDockComponent }, { type: i0.ElementRef }]; }, propDecorators: { onMouseDown: [{
257
+ }], ctorParameters: function () { return [{ type: i1.BsDockPanelComponent }, { type: i2.BsDockComponent }, { type: i3.BsDockService }, { type: i0.ElementRef }]; }, propDecorators: { onMouseDown: [{
152
258
  type: HostListener,
153
259
  args: ['mousedown', ['$event']]
154
260
  }], onMouseMove: [{
@@ -161,4 +267,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
161
267
  type: HostBinding,
162
268
  args: ['class.d-block']
163
269
  }] } });
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay1wYW5lbC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9kb2NrL3NyYy9kb2NrLXBhbmVsLWhlYWRlci9kb2NrLXBhbmVsLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2RvY2svc3JjL2RvY2stcGFuZWwtaGVhZGVyL2RvY2stcGFuZWwtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQWdDLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXpELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7QUFTN0QsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUFvQixTQUErQixFQUFVLElBQXFCLEVBQVUsT0FBZ0M7UUFBeEcsY0FBUyxHQUFULFNBQVMsQ0FBc0I7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFpQjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBRTVILGdCQUFXLEdB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dUhBbEpVLDBCQUEwQjsyR0FBMUIsMEJBQTBCLCtQQ25CdkMsMkJBQXlCOzJGRG1CWiwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0Usc0JBQXNCO2tLQVVPLFdBQVc7c0JBQWpELFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUtXLFdBQVc7c0JBQTFELFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBb0lBLFNBQVM7c0JBQXRELFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBS2QsTUFBTTtzQkFBbkMsV0FBVzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbmplY3QsIE9wdGlvbmFsLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCc1RhYkNvbnRyb2xDb21wb25lbnQgfSBmcm9tICdAbWludHBsYXllci9uZy1ib290c3RyYXAvdGFiLWNvbnRyb2wnO1xuaW1wb3J0IHsgQnNEb2NrUGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi9kb2NrLXBhbmVsL2RvY2stcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7IEJzRG9ja0NvbXBvbmVudCB9IGZyb20gJy4uL2RvY2svZG9jay5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnNEb2NrUGFuZSB9IGZyb20gJy4uL3BhbmVzL2RvY2stcGFuZSc7XG5pbXBvcnQgeyBCc1NwbGl0UGFuZSB9IGZyb20gJy4uL3BhbmVzL3NwbGl0LXBhbmUnO1xuaW1wb3J0IHsgQnNDb250ZW50UGFuZSB9IGZyb20gJy4uL3BhbmVzL2NvbnRlbnQtcGFuZSc7XG5pbXBvcnQgeyBCc0Zsb2F0aW5nUGFuZSB9IGZyb20gJy4uL3BhbmVzL2Zsb2F0aW5nLXBhbmUnO1xuaW1wb3J0IHsgQnNUYWJHcm91cFBhbmUgfSBmcm9tICcuLi9wYW5lcy90YWItZ3JvdXAtcGFuZSc7XG5pbXBvcnQgeyBCc0RvY3VtZW50SG9zdCB9IGZyb20gJy4uL3BhbmVzL2RvY3VtZW50LWhvc3QtcGFuZSc7XG5pbXBvcnQgeyBSZW1vdmVGcm9tUGFuZVJlc3VsdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVtb3ZlLWZyb20tcGFuZS1yZXN1bHQnO1xuaW1wb3J0IHsgRHJhZ09wZXJhdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvZHJhZy1vcGVyYXRpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy1kb2NrLXBhbmVsLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2NrLXBhbmVsLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RvY2stcGFuZWwtaGVhZGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQnNEb2NrUGFuZWxIZWFkZXJDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRvY2tQYW5lbDogQnNEb2NrUGFuZWxDb21wb25lbnQsIHByaXZhdGUgZG9jazogQnNEb2NrQ29tcG9uZW50LCBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gIGlzTW91c2VEb3duID0gZmFsc2U7XG4gIGRyYWdPcGVyYXRpb24/OiBEcmFnT3BlcmF0aW9uO1xuICBpc0xheW91dERldGFjaGVkID0gZmFsc2U7XG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pIG9uTW91c2VEb3duKGV2OiBNb3VzZUV2ZW50KSB7XG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmlzTW91c2VEb3duID0gdHJ1ZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlbW92ZScsIFsnJGV2ZW50J10pIG9uTW91c2VNb3ZlKGV2OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXNNb3VzZURvd24pIHtcbiAgICAgIGlmICghdGhpcy5pc0xheW91dERldGFjaGVkKSB7XG4gICAgICAgIHRoaXMuaXNMYXlvdXREZXRhY2hlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZG9jay5sYXlvdXQkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChsYXlvdXQpID0+IHtcblxuICAgICAgICAgIGxldCBlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICBsZXQgdHJlZTogSFRNTEVsZW1lbnRbXSA9IFtdO1xuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIHRyZWUucHVzaChlbGVtZW50ISk7XG4gICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudCEucGFyZW50RWxlbWVudDtcbiAgICAgICAgICB9IHdoaWxlIChlbGVtZW50KTtcblxuICAgICAgICAgIGNvbnN0IHRhYkNvbnRyb2xzID0gdHJlZS5maWx0ZXIoZWwgPT4gZWwudGFnTmFtZS50b1VwcGVyQ2FzZSgpID09PSAnQlMtVEFCLUNPTlRST0wnKTtcbiAgICAgICAgICBpZiAodGFiQ29udHJvbHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICAgICAgICB3aWR0aDogdGFiQ29udHJvbHNbMF0uY2xpZW50V2lkdGgsXG4gICAgICAgICAgICAgIGhlaWdodDogdGFiQ29udHJvbHNbMF0uY2xpZW50SGVpZ2h0LFxuICAgICAgICAgICAgICBsZWZ0OiBldi5jbGllbnRYIC0gZXYub2Zmc2V0WCxcbiAgICAgICAgICAgICAgdG9wOiBldi5jbGllbnRZIC0gZXYub2Zmc2V0WSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuZG9ja1BhbmVsLmhlYWRlclBvcnRhbD8uaXNBdHRhY2hlZCAmJiB0aGlzLmRvY2tQYW5lbC5oZWFkZXJQb3J0YWw/LmRldGFjaCgpO1xuICAgICAgICAgICAgdGhpcy5kb2NrUGFuZWwuY29udGVudFBvcnRhbD8uaXNBdHRhY2hlZCAmJiB0aGlzLmRvY2tQYW5lbC5jb250ZW50UG9ydGFsPy5kZXRhY2goKTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRnJvbVBhbmUobGF5b3V0LnJvb3RQYW5lLCB0aGlzLmRvY2tQYW5lbCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZsb2F0aW5nUGFuZSA9IG5ldyBCc0Zsb2F0aW5nUGFuZSh7XG4gICAgICAgICAgICAgIHBhbmU6IG5ldyBCc1RhYkdyb3VwUGFuZSh7XG4gICAgICAgICAgICAgICAgcGFuZXM6IFtcbiAgICAgICAgICAgICAgICAgIG5ldyBCc0NvbnRlbnRQYW5lKHtcbiAgICAgICAgICAgICAgICAgICAgZG9ja1BhbmVsOiB0aGlzLmRvY2tQYW5lbFxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBzaXplOiB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGNvb3Jkcy53aWR0aCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGNvb3Jkcy5oZWlnaHQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgICAgICAgICAgeDogY29vcmRzLmxlZnQsXG4gICAgICAgICAgICAgICAgeTogY29vcmRzLnRvcCxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMuZHJhZ09wZXJhdGlvbiA9IHtcbiAgICAgICAgICAgICAgb2Zmc2V0WDogZXYub2Zmc2V0WCxcbiAgICAgICAgICAgICAgb2Zmc2V0WTogZXYub2Zmc2V0WSxcbiAgICAgICAgICAgICAgZmxvYXRpbmdQYW5lXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBsYXlvdXQuZmxvYXRpbmdQYW5lcy5wdXNoKGZsb2F0aW5nUGFuZSk7XG4gICAgICAgICAgICB0aGlzLmRvY2subGF5b3V0JC5uZXh0KGxheW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kcmFnT3BlcmF0aW9uKSB7XG4gICAgICAgIGlmICh0aGlzLmRyYWdPcGVyYXRpb24uZmxvYXRpbmdQYW5lLmxvY2F0aW9uKSB7XG4gICAgICAgICAgdGhpcy5kcmFnT3BlcmF0aW9uLmZsb2F0aW5nUGFuZS5sb2NhdGlvbi54ID0gZXYuY2xpZW50WCAtIHRoaXMuZHJhZ09wZXJhdGlvbi5vZmZzZXRYO1xuICAgICAgICAgIHRoaXMuZHJhZ09wZXJhdGlvbi5mbG9hdGluZ1BhbmUubG9jYXRpb24ueSA9IGV2LmNsaWVudFkgLSB0aGlzLmRyYWdPcGVyYXRpb24ub2Zmc2V0WTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUZyb21QYW5lKGhvc3Q6IEJzRG9ja1BhbmUsIHBhbmVsOiBCc0RvY2tQYW5lbENvbXBvbmVudCAvKiwgcGFyZW50czogQnNEb2NrUGFuZVtdICovKTogUmVtb3ZlRnJvbVBhbmVSZXN1bHQge1xuICAgIGlmIChob3N0IGluc3RhbmNlb2YgQnNDb250ZW50UGFuZSkge1xuICAgICAgcmV0dXJuIHsgcGFuZVJlbW92ZWQ6IGZhbHNlLCBob3N0SXNFbXB0eTogZmFsc2UgfTtcbiAgICB9IGVsc2UgaWYgKGhvc3QgaW5zdGFuY2VvZiBCc0RvY3VtZW50SG9zdCkge1xuICAgICAgLy8gQWN0dWFsbHkgZG9jdW1lbnRIb3N0IHNob3VsZCBuZXZlciBiZSByZW1vdmVkXG5cbiAgICAgIGlmICghaG9zdC5yb290UGFuZSkge1xuICAgICAgICByZXR1cm4geyBwYW5lUmVtb3ZlZDogZmFsc2UsIGhvc3RJc0VtcHR5OiB0cnVlIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucmVtb3ZlRnJvbVBhbmUoaG9zdC5yb290UGFuZSwgcGFuZWwpO1xuICAgICAgcmV0dXJuIHsgcGFuZVJlbW92ZWQ6IHJlc3VsdC5wYW5lUmVtb3ZlZCwgaG9zdElzRW1wdHk6IHJlc3VsdC5ob3N0SXNFbXB0eSB9O1xuXG4gICAgfSBlbHNlIGlmIChob3N0IGluc3RhbmNlb2YgQnNUYWJHcm91cFBhbmUpIHtcblxuXG5cbiAgICAgIGNvbnN0IG1hdGNoaW5nID0gaG9zdC5wYW5lcy5maWx0ZXIocCA9PiBwLmRvY2tQYW5lbCA9PT0gcGFuZWwpO1xuICAgICAgaWYgKG1hdGNoaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaG9zdC5wYW5lcy5zcGxpY2UoaG9zdC5wYW5lcy5maW5kSW5kZXgocCA9PiBwLmRvY2tQYW5lbCA9PT0gcGFuZWwpLCAxKTtcbiAgICAgICAgcmV0dXJuIHsgcGFuZVJlbW92ZWQ6IHRydWUsIGhvc3RJc0VtcHR5OiBob3N0LnBhbmVzLmxlbmd0aCA9PT0gMCB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQVRNLiBhbGwgcGFuZXMgYXJlIENvbnRlbnRQYW5lcyBhbnl3YXkuXG4gICAgICAgIC8vIFNvIHVubGVzcyB5b3UnZCB3YW50IHRvIGhhdmUgc3BsaXR0ZXJzIGluc2lkZSB0aGUgdGFicyxcbiAgICAgICAgLy8gVGhpcyBjb2RlIHdpbGwgbm90IGJlIGhpdC5cblxuICAgICAgICAvLyBjb25zdCByZXN1bHQgPSBob3N0LnBhbmVzXG4gICAgICAgIC8vICAgLm1hcChwYXJlbnRQYW5lID0+IHRoaXMucmVtb3ZlRnJvbVBhbmUocGFyZW50UGFuZSwgcGFuZWwpKVxuICAgICAgICAvLyAgIC5maWx0ZXIociA9PiByLnBhbmVSZW1vdmVkKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vICAgcmV0dXJuIHsgcGFuZVJlbW92ZWQ6IHRydWUsIGhvc3RJc0VtcHR5OiB9XG4gICAgICAgIC8vIH1cbiAgICAgICAgcmV0dXJuIHsgcGFuZVJlbW92ZWQ6IGZhbHNlLCBob3N0SXNFbXB0eTogaG9zdC5wYW5lcy5sZW5ndGggPT09IDAgfTtcbiAgICAgIH1cblxuXG5cblxuICAgIH0gZWxzZSBpZiAoaG9zdCBpbnN0YW5jZW9mIEJzU3BsaXRQYW5lKSB7XG4gICAgICBjb25zdCBtYXRjaGluZyA9IGhvc3QucGFuZXNcbiAgICAgICAgLmZpbHRlcihwID0+IHAgaW5zdGFuY2VvZiBCc0NvbnRlbnRQYW5lKVxuICAgICAgICAubWFwKHAgPT4gPEJzQ29udGVudFBhbmU+cClcbiAgICAgICAgLmZpbHRlcihwID0+IHAuZG9ja1BhbmVsID09PSBwYW5lbCk7XG4gICAgICBcbiAgICAgIGlmIChtYXRjaGluZy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGhvc3QucGFuZXMuc3BsaWNlKGhvc3QucGFuZXMuZmluZEluZGV4KHAgPT4gKHAgaW5zdGFuY2VvZiBCc0NvbnRlbnRQYW5lKSAmJiBtYXRjaGluZy5pbmNsdWRlcyhwKSksIDEpO1xuXG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBzcGxpdHRlciBpZiBvbmx5IDEgcGFuZSBsZWZ0P1xuICAgICAgICByZXR1cm4geyBwYW5lUmVtb3ZlZDogdHJ1ZSwgaG9zdElzRW1wdHk6IGhvc3QucGFuZXMubGVuZ3RoID09PSAwIH07XG4gICAgICB9IGVsc2Uge1xuXG5cbiAgICAgICAgZm9yIChsZXQgc3BsaXRQYW5lIG9mIGhvc3QucGFuZXMpIHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnJlbW92ZUZyb21QYW5lKHNwbGl0UGFuZSwgcGFuZWwpO1xuICAgICAgICAgIGlmIChyZXN1bHQucGFuZVJlbW92ZWQgJiYgcmVzdWx0Lmhvc3RJc0VtcHR5KSB7XG4gICAgICAgICAgICAvLyBzcGxpdFBhbmUgaXMgZW1wdHkgbm93LCBzbyB3ZSBjYW4gcmVtb3ZlIGl0IGZyb20gdGhpcyBzcGxpdHRlclxuICAgICAgICAgICAgaG9zdC5wYW5lcy5zcGxpY2UoaG9zdC5wYW5lcy5pbmRleE9mKHNwbGl0UGFuZSksIDEpO1xuICAgICAgICAgICAgcmV0dXJuIHsgcGFuZVJlbW92ZWQ6IHRydWUsIGhvc3RJc0VtcHR5OiBob3N0LnBhbmVzLmxlbmd0aCA9PT0gMCB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4geyBwYW5lUmVtb3ZlZDogZmFsc2UsIGhvc3RJc0VtcHR5OiBob3N0LnBhbmVzLmxlbmd0aCA9PT0gMCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyAndW5rbm93biBob3N0IHR5cGUnO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNldXAnLCBbJyRldmVudCddKSBvbk1vdXNlVXAoZXY6IEV2ZW50KSB7XG4gICAgdGhpcy5pc01vdXNlRG93biA9IGZhbHNlO1xuICAgIHRoaXMuZHJhZ09wZXJhdGlvbiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZC1ibG9jaycpIGRCbG9jayA9IHRydWU7XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+Il19
270
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay1wYW5lbC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9kb2NrL3NyYy9kb2NrLXBhbmVsLWhlYWRlci9kb2NrLXBhbmVsLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2RvY2svc3JjL2RvY2stcGFuZWwtaGVhZGVyL2RvY2stcGFuZWwtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQWdDLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHNUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXpELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7OztBQU85RCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFlBQW9CLFNBQStCLEVBQVUsSUFBcUIsRUFBVSxXQUEwQixFQUFVLE9BQWdDO1FBQTVJLGNBQVMsR0FBVCxTQUFTLENBQXNCO1FBQVUsU0FBSSxH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LCtQQ3JCdkMsMkJBQXlCOzJGRHFCWiwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0Usc0JBQXNCOzhMQVVPLFdBQVc7c0JBQWpELFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUtXLFdBQVc7c0JBQTFELFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBd1BBLFNBQVM7c0JBQXRELFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTWQsTUFBTTtzQkFBbkMsV0FBVzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbmplY3QsIE9wdGlvbmFsLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCc1RhYkNvbnRyb2xDb21wb25lbnQgfSBmcm9tICdAbWludHBsYXllci9uZy1ib290c3RyYXAvdGFiLWNvbnRyb2wnO1xuaW1wb3J0IHsgUGFyZW50aWZpZWQgfSBmcm9tICdAbWludHBsYXllci9wYXJlbnRpZnknO1xuaW1wb3J0IHsgQnNEb2NrUGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi9kb2NrLXBhbmVsL2RvY2stcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7IEJzRG9ja0NvbXBvbmVudCB9IGZyb20gJy4uL2RvY2svZG9jay5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnNEb2NrUGFuZSB9IGZyb20gJy4uL3BhbmVzL2RvY2stcGFuZSc7XG5pbXBvcnQgeyBCc1NwbGl0UGFuZSB9IGZyb20gJy4uL3BhbmVzL3NwbGl0LXBhbmUnO1xuaW1wb3J0IHsgQnNDb250ZW50UGFuZSB9IGZyb20gJy4uL3BhbmVzL2NvbnRlbnQtcGFuZSc7XG5pbXBvcnQgeyBCc0Zsb2F0aW5nUGFuZSB9IGZyb20gJy4uL3BhbmVzL2Zsb2F0aW5nLXBhbmUnO1xuaW1wb3J0IHsgQnNUYWJHcm91cFBhbmUgfSBmcm9tICcuLi9wYW5lcy90YWItZ3JvdXAtcGFuZSc7XG5pbXBvcnQgeyBCc0RvY3VtZW50SG9zdCB9IGZyb20gJy4uL3BhbmVzL2RvY3VtZW50LWhvc3QtcGFuZSc7XG5pbXBvcnQgeyBSZW1vdmVGcm9tUGFuZVJlc3VsdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVtb3ZlLWZyb20tcGFuZS1yZXN1bHQnO1xuaW1wb3J0IHsgRHJhZ09wZXJhdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvZHJhZy1vcGVyYXRpb24nO1xuaW1wb3J0IHsgQnNEb2NrU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RvY2svZG9jay5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnMtZG9jay1wYW5lbC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9jay1wYW5lbC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb2NrLXBhbmVsLWhlYWRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEJzRG9ja1BhbmVsSGVhZGVyQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkb2NrUGFuZWw6IEJzRG9ja1BhbmVsQ29tcG9uZW50LCBwcml2YXRlIGRvY2s6IEJzRG9ja0NvbXBvbmVudCwgcHJpdmF0ZSBkb2NrU2VydmljZTogQnNEb2NrU2VydmljZSwgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cblxuICBpc01vdXNlRG93biA9IGZhbHNlO1xuICBkcmFnT3BlcmF0aW9uPzogRHJhZ09wZXJhdGlvbjtcbiAgaXNEcmFnZ2luZyA9IGZhbHNlO1xuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKSBvbk1vdXNlRG93bihldjogTW91c2VFdmVudCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5pc01vdXNlRG93biA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZW1vdmUnLCBbJyRldmVudCddKSBvbk1vdXNlTW92ZShldjogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmlzTW91c2VEb3duKSB7XG4gICAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZykge1xuICAgICAgICB0aGlzLmlzRHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgICAgIFxuICAgICAgICB0aGlzLmRvY2sucGFyZW50aWZpZWRMYXlvdXQkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChsYXlvdXQpID0+IHtcbiAgICAgICAgLy8gdGhpcy5kb2NrLmxheW91dCQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGxheW91dCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRyYWNlcyA9IHRoaXMuZG9ja1NlcnZpY2UuYnVpbGRUcmFjZXMobGF5b3V0KTtcbiAgICAgICAgICBjb25zb2xlLmxvZygndHJhY2VzJywge2xheW91dCwgdHJhY2VzfSk7XG4gICAgICAgICAgY29uc3QgbWF0Y2hpbmcgPSB0cmFjZXMuZmlsdGVyKHQgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGFzdFBhbmUgPSB0LnRyYWNlW3QudHJhY2UubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAvLyByZXR1cm4gKGxhc3RQYW5lIGluc3RhbmNlb2YgQnNDb250ZW50UGFuZSkgJiYgKGxhc3RQYW5lLmRvY2tQYW5lbCA9PT0gdGhpcy5kb2NrUGFuZWwpO1xuICAgICAgICAgICAgcmV0dXJuIChsYXN0UGFuZSBpbnN0YW5jZW9mIEJzQ29udGVudFBhbmUpICYmIChsYXN0UGFuZS5kb2NrUGFuZWwgPT09IHRoaXMuZG9ja1BhbmVsKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnbWF0Y2hpbmcnLCBtYXRjaGluZyk7XG4gICAgICAgICAgaWYgKG1hdGNoaW5nLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGNvbnN0IHRhYnMgPSBtYXRjaGluZ1swXS50cmFjZS5maWx0ZXIocGFuZSA9PiBwYW5lIGluc3RhbmNlb2YgQnNUYWJHcm91cFBhbmUpO1xuICAgICAgICAgIC8vIGNvbnN0IGxhc3RUYWJHcm91cCA9IHRhYnNbdGFicy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAvLyAvLyBjb25zb2xlLmxvZygnbGFzdCB0YWJncm91cCcsIGxhc3RUYWJHcm91cCk7XG5cbiAgICAgICAgICBsZXQgdGFiQ29udHJvbEVsID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgaWYgKHRhYkNvbnRyb2xFbC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICAgIHRhYkNvbnRyb2xFbCA9IHRhYkNvbnRyb2xFbCEucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRocm93ICdObyBtb3JlIHBhcmVudHMnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gd2hpbGUgKHRhYkNvbnRyb2xFbC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgIT09ICdCUy1UQUItQ09OVFJPTCcpO1xuXG4gICAgICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICAgICAgd2lkdGg6IHRhYkNvbnRyb2xFbC5jbGllbnRXaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogdGFiQ29udHJvbEVsLmNsaWVudEhlaWdodCxcbiAgICAgICAgICAgIGxlZnQ6IGV2LmNsaWVudFggLSBldi5vZmZzZXRYLFxuICAgICAgICAgICAgdG9wOiBldi5jbGllbnRZIC0gZXYub2Zmc2V0WSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgLy8gdGhpcy5kb2NrUGFuZWwuaGVhZGVyUG9ydGFsPy5pc0F0dGFjaGVkICYmIHRoaXMuZG9ja1BhbmVsLmhlYWRlclBvcnRhbD8uZGV0YWNoKCk7XG4gICAgICAgICAgLy8gdGhpcy5kb2NrUGFuZWwuY29udGVudFBvcnRhbD8uaXNBdHRhY2hlZCAmJiB0aGlzLmRvY2tQYW5lbC5jb250ZW50UG9ydGFsPy5kZXRhY2goKTtcbiAgICAgICAgICAvLyB0aGlzLnJlbW92ZUZyb21QYW5lKGxheW91dC5yb290UGFuZSwgdGhpcy5kb2NrUGFuZWwpO1xuXG4gICAgICAgICAgY29uc3QgdHJhY2UgPSBbLi4ubWF0Y2hpbmdbMF0udHJhY2VdO1xuXG4gICAgICAgICAgdGhpcy5kb2NrUGFuZWwuaGVhZGVyUG9ydGFsPy5pc0F0dGFjaGVkICYmIHRoaXMuZG9ja1BhbmVsLmhlYWRlclBvcnRhbD8uZGV0YWNoKCk7XG4gICAgICAgICAgdGhpcy5kb2NrUGFuZWwuY29udGVudFBvcnRhbD8uaXNBdHRhY2hlZCAmJiB0aGlzLmRvY2tQYW5lbC5jb250ZW50UG9ydGFsPy5kZXRhY2goKTtcbiAgICAgICAgICBcbiAgICAgICAgICBcbiAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IHRyYWNlLmxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGcm9tUGFuZUJpcyh0cmFjZVtpbmRleCAtIDFdLCB0cmFjZVtpbmRleF0pO1xuICAgICAgICAgICAgICBpZiAoIXRyYWNlW2luZGV4IC0gMV0uaXNFbXB0eSkgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBmbG9hdGluZ0luZGV4ID0gbGF5b3V0LmZsb2F0aW5nUGFuZXMuaW5kZXhPZih0cmFjZVswXSk7XG4gICAgICAgICAgICAgIGlmICh0cmFjZVswXS5pc0VtcHR5ICYmIChmbG9hdGluZ0luZGV4ID4gLTEpKSB7XG4gICAgICAgICAgICAgICAgbGF5b3V0LmZsb2F0aW5nUGFuZXMuc3BsaWNlKGZsb2F0aW5nSW5kZXgsIDEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG5cblxuICAgICAgICAgIC8vIHRoaXMucmVtb3ZlRnJvbVBhbmUoKDxhbnk+bWF0Y2hpbmdbMF0udHJhY2VbMF0pWyckb3JpZ2luYWwnXSwgdGhpcy5kb2NrUGFuZWwpO1xuXG4gICAgICAgICAgY29uc3QgZmxvYXRpbmdQYW5lID0gbmV3IEJzRmxvYXRpbmdQYW5lKHtcbiAgICAgICAgICAgIHBhbmU6IG5ldyBCc1RhYkdyb3VwUGFuZSh7XG4gICAgICAgICAgICAgIHBhbmVzOiBbXG4gICAgICAgICAgICAgICAgbmV3IEJzQ29udGVudFBhbmUoe1xuICAgICAgICAgICAgICAgICAgZG9ja1BhbmVsOiB0aGlzLmRvY2tQYW5lbFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2l6ZToge1xuICAgICAgICAgICAgICB3aWR0aDogY29vcmRzLndpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQ6IGNvb3Jkcy5oZWlnaHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgICAgICAgeDogY29vcmRzLmxlZnQsXG4gICAgICAgICAgICAgIHk6IGNvb3Jkcy50b3AsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5kcmFnT3BlcmF0aW9uID0ge1xuICAgICAgICAgICAgb2Zmc2V0WDogZXYub2Zmc2V0WCxcbiAgICAgICAgICAgIG9mZnNldFk6IGV2Lm9mZnNldFksXG4gICAgICAgICAgICBmbG9hdGluZ1BhbmVcbiAgICAgICAgICB9O1xuICAgICAgICAgIGxheW91dC5mbG9hdGluZ1BhbmVzLnB1c2goZmxvYXRpbmdQYW5lKTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZG9jay5sYXlvdXQkLm5leHQobGF5b3V0KSwgNSk7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ3RyYWNlcycsIHsgdHJhY2VzLCBtYXRjaGluZywgZG9ja1BhbmVsOiB0aGlzLmRvY2tQYW5lbCwgZXF1YWxzOiB0cmFjZXNbMl0udHJhY2VbM10gfSk7XG5cbiAgICAgICAgICAvLyAgICAgbGV0IGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgIC8vICAgICBsZXQgdHJlZTogSFRNTEVsZW1lbnRbXSA9IFtdO1xuICAgICAgICAgIC8vICAgICBkbyB7XG4gICAgICAgICAgLy8gICAgICAgdHJlZS5wdXNoKGVsZW1lbnQhKTtcbiAgICAgICAgICAvLyAgICAgICBlbGVtZW50ID0gZWxlbWVudCEucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAvLyAgICAgfSB3aGlsZSAoZWxlbWVudCk7XG5cbiAgICAgICAgICAvLyAgICAgY29uc3QgdGFiQ29udHJvbHMgPSB0cmVlLmZpbHRlcihlbCA9PiBlbC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgPT09ICdCUy1UQUItQ09OVFJPTCcpO1xuICAgICAgICAgIC8vICAgICBpZiAodGFiQ29udHJvbHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vICAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgICAvLyAgICAgICAgIHdpZHRoOiB0YWJDb250cm9sc1swXS5jbGllbnRXaWR0aCxcbiAgICAgICAgICAvLyAgICAgICAgIGhlaWdodDogdGFiQ29udHJvbHNbMF0uY2xpZW50SGVpZ2h0LFxuICAgICAgICAgIC8vICAgICAgICAgbGVmdDogZXYuY2xpZW50WCAtIGV2Lm9mZnNldFgsXG4gICAgICAgICAgLy8gICAgICAgICB0b3A6IGV2LmNsaWVudFkgLSBldi5vZmZzZXRZLFxuICAgICAgICAgIC8vICAgICAgIH07XG5cbiAgICAgICAgICAvLyAgICAgICB0aGlzLmRvY2tQYW5lbC5oZWFkZXJQb3J0YWw/LmlzQXR0YWNoZWQgJiYgdGhpcy5kb2NrUGFuZWwuaGVhZGVyUG9ydGFsPy5kZXRhY2goKTtcbiAgICAgICAgICAvLyAgICAgICB0aGlzLmRvY2tQYW5lbC5jb250ZW50UG9ydGFsPy5pc0F0dGFjaGVkICYmIHRoaXMuZG9ja1BhbmVsLmNvbnRlbnRQb3J0YWw/LmRldGFjaCgpO1xuICAgICAgICAgIC8vICAgICAgIHRoaXMucmVtb3ZlRnJvbVBhbmUobGF5b3V0LnJvb3RQYW5lLCB0aGlzLmRvY2tQYW5lbCk7XG5cbiAgICAgICAgICAvLyAgICAgICBjb25zdCBmbG9hdGluZ1BhbmUgPSBuZXcgQnNGbG9hdGluZ1BhbmUoe1xuICAgICAgICAgIC8vICAgICAgICAgcGFuZTogbmV3IEJzVGFiR3JvdXBQYW5lKHtcbiAgICAgICAgICAvLyAgICAgICAgICAgcGFuZXM6IFtcbiAgICAgICAgICAvLyAgICAgICAgICAgICBuZXcgQnNDb250ZW50UGFuZSh7XG4gICAgICAgICAgLy8gICAgICAgICAgICAgICBkb2NrUGFuZWw6IHRoaXMuZG9ja1BhbmVsXG4gICAgICAgICAgLy8gICAgICAgICAgICAgfSlcbiAgICAgICAgICAvLyAgICAgICAgICAgXVxuICAgICAgICAgIC8vICAgICAgICAgfSksXG4gICAgICAgICAgLy8gICAgICAgICBzaXplOiB7XG4gICAgICAgICAgLy8gICAgICAgICAgIHdpZHRoOiBjb29yZHMud2lkdGgsXG4gICAgICAgICAgLy8gICAgICAgICAgIGhlaWdodDogY29vcmRzLmhlaWdodCxcbiAgICAgICAgICAvLyAgICAgICAgIH0sXG4gICAgICAgICAgLy8gICAgICAgICBsb2NhdGlvbjoge1xuICAgICAgICAgIC8vICAgICAgICAgICB4OiBjb29yZHMubGVmdCxcbiAgICAgICAgICAvLyAgICAgICAgICAgeTogY29vcmRzLnRvcCxcbiAgICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgICAvLyAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAvLyAgICAgICB0aGlzLmRyYWdPcGVyYXRpb24gPSB7XG4gICAgICAgICAgLy8gICAgICAgICBvZmZzZXRYOiBldi5vZmZzZXRYLFxuICAgICAgICAgIC8vICAgICAgICAgb2Zmc2V0WTogZXYub2Zmc2V0WSxcbiAgICAgICAgICAvLyAgICAgICAgIGZsb2F0aW5nUGFuZVxuICAgICAgICAgIC8vICAgICAgIH07XG5cbiAgICAgICAgICAvLyAgICAgICBsYXlvdXQuZmxvYXRpbmdQYW5lcy5wdXNoKGZsb2F0aW5nUGFuZSk7XG4gICAgICAgICAgLy8gICAgICAgdGhpcy5kb2NrLmxheW91dCQubmV4dChsYXlvdXQpO1xuICAgICAgICAgIC8vICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ09wZXJhdGlvbikge1xuICAgICAgICAgIGlmICh0aGlzLmRyYWdPcGVyYXRpb24uZmxvYXRpbmdQYW5lLmxvY2F0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmRyYWdPcGVyYXRpb24uZmxvYXRpbmdQYW5lLmxvY2F0aW9uLnggPSBldi5jbGllbnRYIC0gdGhpcy5kcmFnT3BlcmF0aW9uLm9mZnNldFg7XG4gICAgICAgICAgICB0aGlzLmRyYWdPcGVyYXRpb24uZmxvYXRpbmdQYW5lLmxvY2F0aW9uLnkgPSBldi5jbGllbnRZIC0gdGhpcy5kcmFnT3BlcmF0aW9uLm9mZnNldFk7XG4gICAgICAgICAgfVxuICAgICAgLy8gICB9IGVsc2Uge1xuICAgICAgLy8gICAgIGNvbnN0IHRyYWNlcyA9IHRoaXMuZG9ja1NlcnZpY2UuYnVpbGRUcmFjZXModGhpcy5kb2NrLmxheW91dCk7XG4gICAgICAvLyAgICAgY29uc3QgbWF0Y2hpbmdUcmFjZSA9IHRyYWNlcy5maWx0ZXIodHJhY2UgPT4ge1xuICAgICAgLy8gICAgICAgY29uc3QgcGFuZSA9IHRyYWNlLnRyYWNlW3RyYWNlLnRyYWNlLmxlbmd0aCAtIDFdO1xuICAgICAgLy8gICAgICAgcmV0dXJuIChwYW5lIGluc3RhbmNlb2YgQnNDb250ZW50UGFuZSkgJiYgKHBhbmUuZG9ja1BhbmVsID09PSB0aGlzLmRvY2tQYW5lbCk7XG4gICAgICAvLyAgICAgfSk7XG5cbiAgICAgIC8vICAgICBjb25zb2xlLmxvZygnbWF0Y2hpbmcnLCB7IHRyYWNlcywgbWF0Y2hpbmdUcmFjZSB9KTtcbiAgICAgIC8vICAgICAvLyB0aGlzLmRyYWdPcGVyYXRpb24gPSB7XG4gICAgICAgICAgICBcbiAgICAgIC8vICAgICAvLyB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZW1vdmVGcm9tUGFuZUJpcyhob3N0OiBCc0RvY2tQYW5lLCBwYW5lOiBCc0RvY2tQYW5lKSB7XG4gICAgaWYgKGhvc3QgaW5zdGFuY2VvZiBCc0NvbnRlbnRQYW5lKSB7XG4gICAgfSBlbHNlIGlmIChob3N0IGluc3RhbmNlb2YgQnNEb2N1bWVudEhvc3QpIHtcbiAgICAgIC8vIEFjdHVhbGx5IGRvY3VtZW50SG9zdCBzaG91bGQgbmV2ZXIgYmUgcmVtb3ZlZFxuICAgIH0gZWxzZSBpZiAoaG9zdCBpbnN0YW5jZW9mIEJzVGFiR3JvdXBQYW5lKSB7XG4gICAgICBpZiAocGFuZSBpbnN0YW5jZW9mIEJzQ29udGVudFBhbmUpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBob3N0LnBhbmVzLmluZGV4T2YocGFuZSk7XG4gICAgICAgIGhvc3QucGFuZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGhvc3QgaW5zdGFuY2VvZiBCc1NwbGl0UGFuZSkge1xuICAgICAgY29uc3QgaW5kZXggPSBob3N0LnBhbmVzLmluZGV4T2YocGFuZSk7XG4gICAgICBob3N0LnBhbmVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfSBlbHNlIGlmIChob3N0IGluc3RhbmNlb2YgQnNGbG9hdGluZ1BhbmUpIHtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgJ1Vua25vd24gcGFuZSB0eXBlJztcbiAgICB9XG4gIH1cblxuICAvLyByZW1vdmVGcm9tUGFuZShob3N0OiBCc0RvY2tQYW5lLCBwYW5lbDogQnNEb2NrUGFuZWxDb21wb25lbnQgLyosIHBhcmVudHM6IEJzRG9ja1BhbmVbXSAqLyk6IFJlbW92ZUZyb21QYW5lUmVzdWx0IHtcbiAgLy8gICBpZiAoaG9zdCBpbnN0YW5jZW9mIEJzQ29udGVudFBhbmUpIHtcbiAgLy8gICAgIHJldHVybiB7IHBhbmVSZW1vdmVkOiBmYWxzZSwgaG9zdElzRW1wdHk6IGZhbHNlIH07XG4gIC8vICAgfSBlbHNlIGlmIChob3N0IGluc3RhbmNlb2YgQnNEb2N1bWVudEhvc3QpIHtcbiAgLy8gICAgIC8vIEFjdHVhbGx5IGRvY3VtZW50SG9zdCBzaG91bGQgbmV2ZXIgYmUgcmVtb3ZlZFxuXG4gIC8vICAgICBpZiAoIWhvc3Qucm9vdFBhbmUpIHtcbiAgLy8gICAgICAgcmV0dXJuIHsgcGFuZVJlbW92ZWQ6IGZhbHNlLCBob3N0SXNFbXB0eTogdHJ1ZSB9O1xuICAvLyAgICAgfVxuXG4gIC8vICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnJlbW92ZUZyb21QYW5lKGhvc3Qucm9vdFBhbmUsIHBhbmVsKTtcbiAgLy8gICAgIHJldHVybiB7IHBhbmVSZW1vdmVkOiByZXN1bHQucGFuZVJlbW92ZWQsIGhvc3RJc0VtcHR5OiByZXN1bHQuaG9zdElzRW1wdHkgfTtcblxuICAvLyAgIH0gZWxzZSBpZiAoaG9zdCBpbnN0YW5jZW9mIEJzVGFiR3JvdXBQYW5lKSB7XG5cblxuXG4gIC8vICAgICBjb25zdCBtYXRjaGluZyA9IGhvc3QucGFuZXMuZmlsdGVyKHAgPT4gcC5kb2NrUGFuZWwgPT09IHBhbmVsKTtcbiAgLy8gICAgIGlmIChtYXRjaGluZy5sZW5ndGggPiAwKSB7XG4gIC8vICAgICAgIGhvc3QucGFuZXMuc3BsaWNlKGhvc3QucGFuZXMuZmluZEluZGV4KHAgPT4gcC5kb2NrUGFuZWwgPT09IHBhbmVsKSwgMSk7XG4gIC8vICAgICAgIHJldHVybiB7IHBhbmVSZW1vdmVkOiB0cnVlLCBob3N0SXNFbXB0eTogaG9zdC5wYW5lcy5sZW5ndGggPT09IDAgfTtcbiAgLy8gICAgIH0gZWxzZSB7XG4gIC8vICAgICAgIC8vIEFUTS4gYWxsIHBhbmVzIGFyZSBDb250ZW50UGFuZXMgYW55d2F5LlxuICAvLyAgICAgICAvLyBTbyB1bmxlc3MgeW91J2Qgd2FudCB0byBoYXZlIHNwbGl0dGVycyBpbnNpZGUgdGhlIHRhYnMsXG4gIC8vICAgICAgIC8vIFRoaXMgY29kZSB3aWxsIG5vdCBiZSBoaXQuXG5cbiAgLy8gICAgICAgLy8gY29uc3QgcmVzdWx0ID0gaG9zdC5wYW5lc1xuICAvLyAgICAgICAvLyAgIC5tYXAocGFyZW50UGFuZSA9PiB0aGlzLnJlbW92ZUZyb21QYW5lKHBhcmVudFBhbmUsIHBhbmVsKSlcbiAgLy8gICAgICAgLy8gICAuZmlsdGVyKHIgPT4gci5wYW5lUmVtb3ZlZCk7XG4gIC8vICAgICAgIC8vXG4gIC8vICAgICAgIC8vIGlmIChyZXN1bHQubGVuZ3RoID4gMCkge1xuICAvLyAgICAgICAvLyAgIHJldHVybiB7IHBhbmVSZW1vdmVkOiB0cnVlLCBob3N0SXNFbXB0eTogfVxuICAvLyAgICAgICAvLyB9XG4gIC8vICAgICAgIHJldHVybiB7IHBhbmVSZW1vdmVkOiBmYWxzZSwgaG9zdElzRW1wdHk6IGhvc3QucGFuZXMubGVuZ3RoID09PSAwIH07XG4gIC8vICAgICB9XG5cblxuXG5cbiAgLy8gICB9IGVsc2UgaWYgKGhvc3QgaW5zdGFuY2VvZiBCc1NwbGl0UGFuZSkge1xuICAvLyAgICAgY29uc3QgbWF0Y2hpbmcgPSBob3N0LnBhbmVzXG4gIC8vICAgICAgIC5maWx0ZXIocCA9PiBwIGluc3RhbmNlb2YgQnNDb250ZW50UGFuZSlcbiAgLy8gICAgICAgLm1hcChwID0+IDxCc0NvbnRlbnRQYW5lPnApXG4gIC8vICAgICAgIC5maWx0ZXIocCA9PiBwLmRvY2tQYW5lbCA9PT0gcGFuZWwpO1xuICAgICAgXG4gIC8vICAgICBpZiAobWF0Y2hpbmcubGVuZ3RoID4gMCkge1xuICAvLyAgICAgICBob3N0LnBhbmVzLnNwbGljZShob3N0LnBhbmVzLmZpbmRJbmRleChwID0+IChwIGluc3RhbmNlb2YgQnNDb250ZW50UGFuZSkgJiYgbWF0Y2hpbmcuaW5jbHVkZXMocCkpLCAxKTtcblxuICAvLyAgICAgICAvLyBUT0RPOiBSZW1vdmUgc3BsaXR0ZXIgaWYgb25seSAxIHBhbmUgbGVmdD9cbiAgLy8gICAgICAgcmV0dXJuIHsgcGFuZVJlbW92ZWQ6IHRydWUsIGhvc3RJc0VtcHR5OiBob3N0LnBhbmVzLmxlbmd0aCA9PT0gMCB9O1xuICAvLyAgICAgfSBlbHNlIHtcblxuXG4gIC8vICAgICAgIGZvciAobGV0IHNwbGl0UGFuZSBvZiBob3N0LnBhbmVzKSB7XG4gIC8vICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5yZW1vdmVGcm9tUGFuZShzcGxpdFBhbmUsIHBhbmVsKTtcbiAgLy8gICAgICAgICBpZiAocmVzdWx0LnBhbmVSZW1vdmVkICYmIHJlc3VsdC5ob3N0SXNFbXB0eSkge1xuICAvLyAgICAgICAgICAgLy8gc3BsaXRQYW5lIGlzIGVtcHR5IG5vdywgc28gd2UgY2FuIHJlbW92ZSBpdCBmcm9tIHRoaXMgc3BsaXR0ZXJcbiAgLy8gICAgICAgICAgIGhvc3QucGFuZXMuc3BsaWNlKGhvc3QucGFuZXMuaW5kZXhPZihzcGxpdFBhbmUpLCAxKTtcbiAgLy8gICAgICAgICAgIHJldHVybiB7IHBhbmVSZW1vdmVkOiB0cnVlLCBob3N0SXNFbXB0eTogaG9zdC5wYW5lcy5sZW5ndGggPT09IDAgfTtcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH1cblxuICAvLyAgICAgcmV0dXJuIHsgcGFuZVJlbW92ZWQ6IGZhbHNlLCBob3N0SXNFbXB0eTogaG9zdC5wYW5lcy5sZW5ndGggPT09IDAgfTtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgdGhyb3cgJ3Vua25vd24gaG9zdCB0eXBlJztcbiAgLy8gICB9XG4gIC8vIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZXVwJywgWyckZXZlbnQnXSkgb25Nb3VzZVVwKGV2OiBFdmVudCkge1xuICAgIHRoaXMuaXNNb3VzZURvd24gPSBmYWxzZTtcbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmRyYWdPcGVyYXRpb24gPSB1bmRlZmluZWQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmQtYmxvY2snKSBkQmxvY2sgPSB0cnVlO1xufVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PiJdfQ==
@@ -6,4 +6,5 @@ export * from './dock-pane-renderer/dock-pane-renderer.component';
6
6
  export * from './enums';
7
7
  export * from './interfaces';
8
8
  export * from './panes';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2RvY2svc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RvY2subW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZG9jay9kb2NrLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2RvY2stcGFuZWwvZG9jay1wYW5lbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kb2NrLXBhbmVsLWhlYWRlci9kb2NrLXBhbmVsLWhlYWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kb2NrLXBhbmUtcmVuZGVyZXIvZG9jay1wYW5lLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2VudW1zJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL3BhbmVzJzsiXX0=
9
+ export * from './services';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2RvY2svc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RvY2subW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZG9jay9kb2NrLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2RvY2stcGFuZWwvZG9jay1wYW5lbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kb2NrLXBhbmVsLWhlYWRlci9kb2NrLXBhbmVsLWhlYWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kb2NrLXBhbmUtcmVuZGVyZXIvZG9jay1wYW5lLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2VudW1zJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL3BhbmVzJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMnOyJdfQ==
@@ -4,5 +4,8 @@ export class BsContentPane extends BsDockPane {
4
4
  super();
5
5
  Object.assign(this, data);
6
6
  }
7
+ get isEmpty() {
8
+ return false;
9
+ }
7
10
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wYW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9kb2NrL3NyYy9wYW5lcy9jb250ZW50LXBhbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV6QyxNQUFNLE9BQU8sYUFBYyxTQUFRLFVBQVU7SUFDekMsWUFBWSxJQUE2QjtRQUNyQyxLQUFLLEVBQUUsQ0FBQztRQUNSLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FJSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJzRG9ja1BhbmVsQ29tcG9uZW50IH0gZnJvbSBcIi4uL2RvY2stcGFuZWwvZG9jay1wYW5lbC5jb21wb25lbnRcIjtcbmltcG9ydCB7IEJzRG9ja1BhbmUgfSBmcm9tIFwiLi9kb2NrLXBhbmVcIjtcblxuZXhwb3J0IGNsYXNzIEJzQ29udGVudFBhbmUgZXh0ZW5kcyBCc0RvY2tQYW5lIHtcbiAgICBjb25zdHJ1Y3RvcihkYXRhPzogUGFydGlhbDxCc0NvbnRlbnRQYW5lPikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGRhdGEpO1xuICAgIH1cblxuICAgIGRvY2tQYW5lbCE6IEJzRG9ja1BhbmVsQ29tcG9uZW50O1xuICAgIGlzUGlubmVkPzogYm9vbGVhbjtcbn0iXX0=
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wYW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9kb2NrL3NyYy9wYW5lcy9jb250ZW50LXBhbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV6QyxNQUFNLE9BQU8sYUFBYyxTQUFRLFVBQVU7SUFDekMsWUFBWSxJQUE2QjtRQUNyQyxLQUFLLEVBQUUsQ0FBQztRQUNSLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFLRCxJQUFhLE9BQU87UUFDaEIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnNEb2NrUGFuZWxDb21wb25lbnQgfSBmcm9tIFwiLi4vZG9jay1wYW5lbC9kb2NrLXBhbmVsLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQnNEb2NrUGFuZSB9IGZyb20gXCIuL2RvY2stcGFuZVwiO1xuXG5leHBvcnQgY2xhc3MgQnNDb250ZW50UGFuZSBleHRlbmRzIEJzRG9ja1BhbmUge1xuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBQYXJ0aWFsPEJzQ29udGVudFBhbmU+KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgZGF0YSk7XG4gICAgfVxuXG4gICAgZG9ja1BhbmVsITogQnNEb2NrUGFuZWxDb21wb25lbnQ7XG4gICAgaXNQaW5uZWQ/OiBib29sZWFuO1xuXG4gICAgb3ZlcnJpZGUgZ2V0IGlzRW1wdHkoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59Il19
@@ -1,3 +1,3 @@
1
1
  export class BsDockPane {
2
2
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay1wYW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9kb2NrL3NyYy9wYW5lcy9kb2NrLXBhbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFnQixVQUFVO0NBQUciLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgYWJzdHJhY3QgY2xhc3MgQnNEb2NrUGFuZSB7fSJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay1wYW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9kb2NrL3NyYy9wYW5lcy9kb2NrLXBhbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFnQixVQUFVO0NBRS9CIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJzRG9ja1BhbmUge1xuICAgIGFic3RyYWN0IGdldCBpc0VtcHR5KCk6IGJvb2xlYW47XG59Il19
@@ -4,5 +4,8 @@ export class BsDocumentHost extends BsDockPane {
4
4
  super();
5
5
  Object.assign(this, data);
6
6
  }
7
+ get isEmpty() {
8
+ return this.rootPane?.isEmpty ?? true;
9
+ }
7
10
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtaG9zdC1wYW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9kb2NrL3NyYy9wYW5lcy9kb2N1bWVudC1ob3N0LXBhbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUd6QyxNQUFNLE9BQU8sY0FBZSxTQUFRLFVBQVU7SUFDMUMsWUFBWSxJQUE4QjtRQUN0QyxLQUFLLEVBQUUsQ0FBQztRQUNSLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FHSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJzRG9ja1BhbmUgfSBmcm9tIFwiLi9kb2NrLXBhbmVcIjtcbmltcG9ydCB7IEJzVGFiR3JvdXBQYW5lIH0gZnJvbSBcIi4vdGFiLWdyb3VwLXBhbmVcIjtcblxuZXhwb3J0IGNsYXNzIEJzRG9jdW1lbnRIb3N0IGV4dGVuZHMgQnNEb2NrUGFuZSB7XG4gICAgY29uc3RydWN0b3IoZGF0YT86IFBhcnRpYWw8QnNEb2N1bWVudEhvc3Q+KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgZGF0YSk7XG4gICAgfVxuXG4gICAgcm9vdFBhbmU/OiBCc1RhYkdyb3VwUGFuZVxufSJdfQ==
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtaG9zdC1wYW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9kb2NrL3NyYy9wYW5lcy9kb2N1bWVudC1ob3N0LXBhbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUd6QyxNQUFNLE9BQU8sY0FBZSxTQUFRLFVBQVU7SUFDMUMsWUFBWSxJQUE4QjtRQUN0QyxLQUFLLEVBQUUsQ0FBQztRQUNSLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFJRCxJQUFhLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUM7SUFDMUMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnNEb2NrUGFuZSB9IGZyb20gXCIuL2RvY2stcGFuZVwiO1xuaW1wb3J0IHsgQnNUYWJHcm91cFBhbmUgfSBmcm9tIFwiLi90YWItZ3JvdXAtcGFuZVwiO1xuXG5leHBvcnQgY2xhc3MgQnNEb2N1bWVudEhvc3QgZXh0ZW5kcyBCc0RvY2tQYW5lIHtcbiAgICBjb25zdHJ1Y3RvcihkYXRhPzogUGFydGlhbDxCc0RvY3VtZW50SG9zdD4pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBkYXRhKTtcbiAgICB9XG5cbiAgICByb290UGFuZT86IEJzVGFiR3JvdXBQYW5lXG5cbiAgICBvdmVycmlkZSBnZXQgaXNFbXB0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm9vdFBhbmU/LmlzRW1wdHkgPz8gdHJ1ZTtcbiAgICB9XG59Il19
@@ -1,6 +1,11 @@
1
- export class BsFloatingPane {
1
+ import { BsDockPane } from "./dock-pane";
2
+ export class BsFloatingPane extends BsDockPane {
2
3
  constructor(data) {
4
+ super();
3
5
  Object.assign(this, data);
4
6
  }
7
+ get isEmpty() {
8
+ return this.pane?.isEmpty ?? true;
9
+ }
5
10
  }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXRpbmctcGFuZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvZG9jay9zcmMvcGFuZXMvZmxvYXRpbmctcGFuZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQU8sY0FBYztJQUN2QixZQUFZLElBQThCO1FBQ3RDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FLSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJzRG9ja1BhbmUgfSBmcm9tIFwiLi9kb2NrLXBhbmVcIjtcbmltcG9ydCB7IFBvaW50IH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvcG9pbnRcIjtcbmltcG9ydCB7IFNpemUgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9zaXplXCI7XG5cbmV4cG9ydCBjbGFzcyBCc0Zsb2F0aW5nUGFuZSB7XG4gICAgY29uc3RydWN0b3IoZGF0YT86IFBhcnRpYWw8QnNGbG9hdGluZ1BhbmU+KSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgZGF0YSk7XG4gICAgfVxuICAgIFxuICAgIHBhbmU/OiBCc0RvY2tQYW5lO1xuICAgIHNpemU/OiBTaXplO1xuICAgIGxvY2F0aW9uPzogUG9pbnQ7XG59Il19
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXRpbmctcGFuZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvZG9jay9zcmMvcGFuZXMvZmxvYXRpbmctcGFuZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSXpDLE1BQU0sT0FBTyxjQUFlLFNBQVEsVUFBVTtJQUMxQyxZQUFZLElBQThCO1FBQ3RDLEtBQUssRUFBRSxDQUFDO1FBQ1IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQU1ELElBQWEsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQztJQUN0QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCc0RvY2tQYW5lIH0gZnJvbSBcIi4vZG9jay1wYW5lXCI7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL3BvaW50XCI7XG5pbXBvcnQgeyBTaXplIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvc2l6ZVwiO1xuXG5leHBvcnQgY2xhc3MgQnNGbG9hdGluZ1BhbmUgZXh0ZW5kcyBCc0RvY2tQYW5lIHtcbiAgICBjb25zdHJ1Y3RvcihkYXRhPzogUGFydGlhbDxCc0Zsb2F0aW5nUGFuZT4pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBkYXRhKTtcbiAgICB9XG4gICAgXG4gICAgcGFuZT86IEJzRG9ja1BhbmU7XG4gICAgc2l6ZT86IFNpemU7XG4gICAgbG9jYXRpb24/OiBQb2ludDtcblxuICAgIG92ZXJyaWRlIGdldCBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYW5lPy5pc0VtcHR5ID8/IHRydWU7XG4gICAgfVxufSJdfQ==
@@ -6,5 +6,8 @@ export class BsSplitPane extends BsDockPane {
6
6
  this.panes = [];
7
7
  Object.assign(this, data);
8
8
  }
9
+ get isEmpty() {
10
+ return this.panes.length === 0;
11
+ }
9
12
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtcGFuZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvZG9jay9zcmMvcGFuZXMvc3BsaXQtcGFuZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXpDLE1BQU0sT0FBTyxXQUFZLFNBQVEsVUFBVTtJQUN2QyxZQUFZLElBQTJCO1FBQ25DLEtBQUssRUFBRSxDQUFDO1FBSVosZ0JBQVcsR0FBeUIsWUFBWSxDQUFDO1FBQ2pELFVBQUssR0FBaUIsRUFBRSxDQUFDO1FBSnJCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FJSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNwbGl0UGFuZU9yaWVudGF0aW9uIH0gZnJvbSBcIi4uL3R5cGVzL3NwbGl0LXBhbmUtb3JpZW50YXRpb24udHlwZVwiO1xuaW1wb3J0IHsgQnNEb2NrUGFuZSB9IGZyb20gXCIuL2RvY2stcGFuZVwiO1xuXG5leHBvcnQgY2xhc3MgQnNTcGxpdFBhbmUgZXh0ZW5kcyBCc0RvY2tQYW5lIHtcbiAgICBjb25zdHJ1Y3RvcihkYXRhPzogUGFydGlhbDxCc1NwbGl0UGFuZT4pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBkYXRhKTtcbiAgICB9XG5cbiAgICBvcmllbnRhdGlvbjogU3BsaXRQYW5lT3JpZW50YXRpb24gPSAnaG9yaXpvbnRhbCc7XG4gICAgcGFuZXM6IEJzRG9ja1BhbmVbXSA9IFtdO1xufSJdfQ==
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtcGFuZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvZG9jay9zcmMvcGFuZXMvc3BsaXQtcGFuZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXpDLE1BQU0sT0FBTyxXQUFZLFNBQVEsVUFBVTtJQUN2QyxZQUFZLElBQTJCO1FBQ25DLEtBQUssRUFBRSxDQUFDO1FBSVosZ0JBQVcsR0FBeUIsWUFBWSxDQUFDO1FBQ2pELFVBQUssR0FBaUIsRUFBRSxDQUFDO1FBSnJCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFLRCxJQUFhLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3BsaXRQYW5lT3JpZW50YXRpb24gfSBmcm9tIFwiLi4vdHlwZXMvc3BsaXQtcGFuZS1vcmllbnRhdGlvbi50eXBlXCI7XG5pbXBvcnQgeyBCc0RvY2tQYW5lIH0gZnJvbSBcIi4vZG9jay1wYW5lXCI7XG5cbmV4cG9ydCBjbGFzcyBCc1NwbGl0UGFuZSBleHRlbmRzIEJzRG9ja1BhbmUge1xuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBQYXJ0aWFsPEJzU3BsaXRQYW5lPikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGRhdGEpO1xuICAgIH1cblxuICAgIG9yaWVudGF0aW9uOiBTcGxpdFBhbmVPcmllbnRhdGlvbiA9ICdob3Jpem9udGFsJztcbiAgICBwYW5lczogQnNEb2NrUGFuZVtdID0gW107XG5cbiAgICBvdmVycmlkZSBnZXQgaXNFbXB0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFuZXMubGVuZ3RoID09PSAwO1xuICAgIH1cbn0iXX0=
@@ -5,5 +5,8 @@ export class BsTabGroupPane extends BsDockPane {
5
5
  this.panes = [];
6
6
  Object.assign(this, data);
7
7
  }
8
+ get isEmpty() {
9
+ return this.panes.length === 0;
10
+ }
8
11
  }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLXBhbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2RvY2svc3JjL3BhbmVzL3RhYi1ncm91cC1wYW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFekMsTUFBTSxPQUFPLGNBQWUsU0FBUSxVQUFVO0lBQzFDLFlBQVksSUFBOEI7UUFDdEMsS0FBSyxFQUFFLENBQUM7UUFJWixVQUFLLEdBQW9CLEVBQUUsQ0FBQztRQUh4QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBR0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCc0NvbnRlbnRQYW5lIH0gZnJvbSBcIi4vY29udGVudC1wYW5lXCI7XG5pbXBvcnQgeyBCc0RvY2tQYW5lIH0gZnJvbSBcIi4vZG9jay1wYW5lXCI7XG5cbmV4cG9ydCBjbGFzcyBCc1RhYkdyb3VwUGFuZSBleHRlbmRzIEJzRG9ja1BhbmUge1xuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBQYXJ0aWFsPEJzVGFiR3JvdXBQYW5lPikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGRhdGEpO1xuICAgIH1cblxuICAgIHBhbmVzOiBCc0NvbnRlbnRQYW5lW10gPSBbXTtcbn0iXX0=
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLXBhbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2RvY2svc3JjL3BhbmVzL3RhYi1ncm91cC1wYW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFekMsTUFBTSxPQUFPLGNBQWUsU0FBUSxVQUFVO0lBQzFDLFlBQVksSUFBOEI7UUFDdEMsS0FBSyxFQUFFLENBQUM7UUFJWixVQUFLLEdBQW9CLEVBQUUsQ0FBQztRQUh4QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBSUQsSUFBYSxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJzQ29udGVudFBhbmUgfSBmcm9tIFwiLi9jb250ZW50LXBhbmVcIjtcbmltcG9ydCB7IEJzRG9ja1BhbmUgfSBmcm9tIFwiLi9kb2NrLXBhbmVcIjtcblxuZXhwb3J0IGNsYXNzIEJzVGFiR3JvdXBQYW5lIGV4dGVuZHMgQnNEb2NrUGFuZSB7XG4gICAgY29uc3RydWN0b3IoZGF0YT86IFBhcnRpYWw8QnNUYWJHcm91cFBhbmU+KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgZGF0YSk7XG4gICAgfVxuXG4gICAgcGFuZXM6IEJzQ29udGVudFBhbmVbXSA9IFtdO1xuICAgIFxuICAgIG92ZXJyaWRlIGdldCBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYW5lcy5sZW5ndGggPT09IDA7XG4gICAgfVxufSJdfQ==
@@ -0,0 +1,56 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BsSplitPane } from '../../panes/split-pane';
3
+ import { BsContentPane } from '../../panes/content-pane';
4
+ import { BsTabGroupPane } from '../../panes/tab-group-pane';
5
+ import { BsFloatingPane } from '../../panes/floating-pane';
6
+ import { BsDocumentHost } from '../../panes/document-host-pane';
7
+ import * as i0 from "@angular/core";
8
+ export class BsDockService {
9
+ buildTraces(layout) {
10
+ const result = [layout.rootPane, ...layout.floatingPanes].map(pane => this.buildTracesPrivate([pane]));
11
+ // const result = this.buildTracesPrivate([layout.rootPane]);
12
+ return result.flatMap(traceGroup => traceGroup);
13
+ }
14
+ buildTracesPrivate(currentSequence) {
15
+ const children = this.getChildPanes(currentSequence[currentSequence.length - 1]);
16
+ if (children.length === 0) {
17
+ return [{
18
+ finished: true,
19
+ trace: currentSequence
20
+ }];
21
+ }
22
+ else {
23
+ const result = children.map(child => this.buildTracesPrivate([...currentSequence, child]));
24
+ return result.flatMap(r => r);
25
+ }
26
+ }
27
+ getChildPanes(pane) {
28
+ if (pane instanceof BsContentPane) {
29
+ return [];
30
+ }
31
+ else if (pane instanceof BsTabGroupPane) {
32
+ return pane.panes;
33
+ }
34
+ else if (pane instanceof BsSplitPane) {
35
+ return pane.panes;
36
+ }
37
+ else if (pane instanceof BsFloatingPane) {
38
+ return pane.pane ? [pane.pane] : [];
39
+ }
40
+ else if (pane instanceof BsDocumentHost) {
41
+ return pane.rootPane ? [pane.rootPane] : [];
42
+ }
43
+ else {
44
+ return [];
45
+ }
46
+ }
47
+ }
48
+ BsDockService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BsDockService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
49
+ BsDockService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BsDockService, providedIn: 'root' });
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BsDockService, decorators: [{
51
+ type: Injectable,
52
+ args: [{
53
+ providedIn: 'root'
54
+ }]
55
+ }] });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9kb2NrL3NyYy9zZXJ2aWNlcy9kb2NrL2RvY2suc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7O0FBTWhFLE1BQU0sT0FBTyxhQUFhO0lBQ2pCLFdBQVcsQ0FBQyxNQUFvQjtRQUNyQyxNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZHLDZEQUE2RDtRQUM3RCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsZUFBNkI7UUFDdEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDekIsT0FBTyxDQUFDO29CQUNOLFFBQVEsRUFBRSxJQUFJO29CQUNkLEtBQUssRUFBRSxlQUFlO2lCQUN2QixDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEdBQUcsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFTyxhQUFhLENBQUMsSUFBZ0I7UUFDcEMsSUFBSSxJQUFJLFlBQVksYUFBYSxFQUFFO1lBQ2pDLE9BQU8sRUFBRSxDQUFDO1NBQ1g7YUFBTSxJQUFJLElBQUksWUFBWSxjQUFjLEVBQUU7WUFDekMsT0FBc0IsSUFBSSxDQUFDLEtBQU0sQ0FBQztTQUNuQzthQUFNLElBQUksSUFBSSxZQUFZLFdBQVcsRUFBRTtZQUN0QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDbkI7YUFBTSxJQUFJLElBQUksWUFBWSxjQUFjLEVBQUU7WUFDekMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3JDO2FBQU0sSUFBSSxJQUFJLFlBQVksY0FBYyxFQUFFO1lBQ3pDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUM3QzthQUFNO1lBQ0wsT0FBTyxFQUFFLENBQUM7U0FDWDtJQUNILENBQUM7OzBHQWxDVSxhQUFhOzhHQUFiLGFBQWEsY0FGWixNQUFNOzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnNEb2NrUGFuZSB9IGZyb20gJy4uLy4uL3BhbmVzL2RvY2stcGFuZSc7XG5pbXBvcnQgeyBCc1NwbGl0UGFuZSB9IGZyb20gJy4uLy4uL3BhbmVzL3NwbGl0LXBhbmUnO1xuaW1wb3J0IHsgQnNDb250ZW50UGFuZSB9IGZyb20gJy4uLy4uL3BhbmVzL2NvbnRlbnQtcGFuZSc7XG5pbXBvcnQgeyBCc1RhYkdyb3VwUGFuZSB9IGZyb20gJy4uLy4uL3BhbmVzL3RhYi1ncm91cC1wYW5lJztcbmltcG9ydCB7IEJzRmxvYXRpbmdQYW5lIH0gZnJvbSAnLi4vLi4vcGFuZXMvZmxvYXRpbmctcGFuZSc7XG5pbXBvcnQgeyBCc0RvY3VtZW50SG9zdCB9IGZyb20gJy4uLy4uL3BhbmVzL2RvY3VtZW50LWhvc3QtcGFuZSc7XG5pbXBvcnQgeyBCc0RvY2tMYXlvdXQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2RvY2stbGF5b3V0JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQnNEb2NrU2VydmljZSB7XG4gIHB1YmxpYyBidWlsZFRyYWNlcyhsYXlvdXQ6IEJzRG9ja0xheW91dCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtsYXlvdXQucm9vdFBhbmUsIC4uLmxheW91dC5mbG9hdGluZ1BhbmVzXS5tYXAocGFuZSA9PiB0aGlzLmJ1aWxkVHJhY2VzUHJpdmF0ZShbcGFuZV0pKTtcbiAgICAvLyBjb25zdCByZXN1bHQgPSB0aGlzLmJ1aWxkVHJhY2VzUHJpdmF0ZShbbGF5b3V0LnJvb3RQYW5lXSk7XG4gICAgcmV0dXJuIHJlc3VsdC5mbGF0TWFwKHRyYWNlR3JvdXAgPT4gdHJhY2VHcm91cCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVHJhY2VzUHJpdmF0ZShjdXJyZW50U2VxdWVuY2U6IEJzRG9ja1BhbmVbXSk6IFBhbmVUcmFjZVJlc3VsdFtdIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRQYW5lcyhjdXJyZW50U2VxdWVuY2VbY3VycmVudFNlcXVlbmNlLmxlbmd0aCAtIDFdKTtcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW3tcbiAgICAgICAgZmluaXNoZWQ6IHRydWUsXG4gICAgICAgIHRyYWNlOiBjdXJyZW50U2VxdWVuY2VcbiAgICAgIH1dO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBjaGlsZHJlbi5tYXAoY2hpbGQgPT4gdGhpcy5idWlsZFRyYWNlc1ByaXZhdGUoWy4uLmN1cnJlbnRTZXF1ZW5jZSwgY2hpbGRdKSk7XG4gICAgICByZXR1cm4gcmVzdWx0LmZsYXRNYXAociA9PiByKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldENoaWxkUGFuZXMocGFuZTogQnNEb2NrUGFuZSk6IEJzRG9ja1BhbmVbXSB7XG4gICAgaWYgKHBhbmUgaW5zdGFuY2VvZiBCc0NvbnRlbnRQYW5lKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfSBlbHNlIGlmIChwYW5lIGluc3RhbmNlb2YgQnNUYWJHcm91cFBhbmUpIHtcbiAgICAgIHJldHVybiAoPEJzRG9ja1BhbmVbXT5wYW5lLnBhbmVzKTtcbiAgICB9IGVsc2UgaWYgKHBhbmUgaW5zdGFuY2VvZiBCc1NwbGl0UGFuZSkge1xuICAgICAgcmV0dXJuIHBhbmUucGFuZXM7XG4gICAgfSBlbHNlIGlmIChwYW5lIGluc3RhbmNlb2YgQnNGbG9hdGluZ1BhbmUpIHtcbiAgICAgIHJldHVybiBwYW5lLnBhbmUgPyBbcGFuZS5wYW5lXSA6IFtdO1xuICAgIH0gZWxzZSBpZiAocGFuZSBpbnN0YW5jZW9mIEJzRG9jdW1lbnRIb3N0KSB7XG4gICAgICByZXR1cm4gcGFuZS5yb290UGFuZSA/IFtwYW5lLnJvb3RQYW5lXSA6IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFuZVRyYWNlUmVzdWx0IHtcbiAgdHJhY2U6IEJzRG9ja1BhbmVbXTtcbiAgZmluaXNoZWQ6IGJvb2xlYW47XG59Il19
@@ -0,0 +1,2 @@
1
+ export * from './dock/dock.service';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2RvY2svc3JjL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RvY2svZG9jay5zZXJ2aWNlJzsiXX0=