@ngutil/layout 0.0.3-dev.7 → 0.0.3-dev.9

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.
@@ -1,7 +1,6 @@
1
1
  import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, ElementRef, inject, Input, QueryList } from "@angular/core";
2
2
  import { combineLatest, map, shareReplay, startWith, Subject, switchMap } from "rxjs";
3
- import { Destructible, NumberWithUnit } from "@ngutil/common";
4
- import { FastDOM } from "../util";
3
+ import { Destructible, FastDOM, NumberWithUnit } from "@ngutil/common";
5
4
  import { DockingContentComponent } from "./docking-content.component";
6
5
  import { DockingPanelComponent } from "./docking-panel.component";
7
6
  import * as i0 from "@angular/core";
@@ -61,7 +60,6 @@ export class DockingLayoutComponent extends Destructible {
61
60
  }
62
61
  }
63
62
  #layout(entries) {
64
- console.log("layout", entries);
65
63
  let paddingTop = 0;
66
64
  let paddingRight = 0;
67
65
  let paddingBottom = 0;
@@ -138,7 +136,6 @@ export class DockingLayoutComponent extends Destructible {
138
136
  "--docking-panel-real-h": isHorizontal ? `${panelSize}px` : null
139
137
  });
140
138
  }
141
- console.log({ paddingTop, paddingRight, paddingBottom, paddingLeft });
142
139
  FastDOM.setStyle(this.#el.nativeElement, {
143
140
  "--docking-layout-top": `${paddingTop}px`,
144
141
  "--docking-layout-right": `${paddingRight}px`,
@@ -147,84 +144,6 @@ export class DockingLayoutComponent extends Destructible {
147
144
  });
148
145
  }
149
146
  }
150
- #layoutOld(entries) {
151
- // let paddingTop = 0
152
- // let paddingRight = 0
153
- // let paddingBottom = 0
154
- // let paddingLeft = 0
155
- // if (!this.contentOnly) {
156
- // let embeddedZIndex = EMBEDDED_ZINDEX
157
- // let overlayZIndex = OVERLAY_ZINDEX
158
- // const leftRight: PanelRefChanges[] = entries.filter(v =>
159
- // ["left", "right"].includes(v.changes.position.side)
160
- // )
161
- // const topBottom: PanelRefChanges[] = entries.filter(v =>
162
- // ["top", "bottom"].includes(v.changes.position.side)
163
- // )
164
- // for (const entry of entries) {
165
- // const changes = entry.changes
166
- // const ref = entry.ref
167
- // if (changes.mode === "embedded") {
168
- // ref.style.zIndex = `${embeddedZIndex++}`
169
- // } else if (changes.mode === "overlay") {
170
- // ref.style.zIndex = `${overlayZIndex++}`
171
- // }
172
- // }
173
- // for (const entry of leftRight) {
174
- // const changes = entry.changes
175
- // const ref = entry.ref
176
- // const padding =
177
- // changes.mode === "embedded"
178
- // ? changes.state === "full"
179
- // ? changes.fullSize
180
- // : changes.state === "mini"
181
- // ? changes.miniSize
182
- // : 0
183
- // : 0
184
- // ref.style.top = "0"
185
- // ref.style.bottom = "0"
186
- // if (changes.position.side === "left") {
187
- // paddingLeft = Math.max(paddingLeft, padding)
188
- // ref.style.left = "0"
189
- // ref.style.right = ""
190
- // } else {
191
- // paddingRight = Math.max(paddingRight, padding)
192
- // ref.style.right = "0"
193
- // ref.style.left = ""
194
- // }
195
- // }
196
- // for (const entry of topBottom) {
197
- // const changes = entry.changes
198
- // const ref = entry.ref
199
- // const padding =
200
- // changes.mode === "embedded"
201
- // ? changes.state === "full"
202
- // ? changes.fullSize
203
- // : changes.state === "mini"
204
- // ? changes.miniSize
205
- // : 0
206
- // : 0
207
- // if (changes.mode === "embedded") {
208
- // ref.style.left = `${paddingLeft}px`
209
- // ref.style.right = `${paddingRight}px`
210
- // } else {
211
- // ref.style.left = "0"
212
- // ref.style.right = "0"
213
- // }
214
- // if (changes.position?.cells[0].v === "top") {
215
- // paddingTop = Math.max(paddingTop, padding)
216
- // ref.style.top = "0"
217
- // ref.style.bottom = ""
218
- // } else {
219
- // paddingBottom = Math.max(paddingBottom, padding)
220
- // ref.style.bottom = `0`
221
- // ref.style.top = ""
222
- // }
223
- // }
224
- // }
225
- // const cel = this.contentEl.nativeElement
226
- // cel.style.padding = `${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px`
227
- }
228
147
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingLayoutComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
229
148
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: DockingLayoutComponent, isStandalone: true, selector: "nu-docking", inputs: { contentOnly: "contentOnly", positionMode: "positionMode" }, queries: [{ propertyName: "contentComponent", first: true, predicate: DockingContentComponent, descendants: true }, { propertyName: "dockingPanels", predicate: DockingPanelComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
230
149
  <ng-content select="nu-docking-panel"></ng-content>
@@ -262,4 +181,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
262
181
  type: ContentChildren,
263
182
  args: [DockingPanelComponent]
264
183
  }] } });
265
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbGF5b3V0L3NyYy9kb2NraW5nL2RvY2tpbmctbGF5b3V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLFNBQVMsRUFFWixNQUFNLGVBQWUsQ0FBQTtBQUV0QixPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFakcsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUU3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ2pDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ3JFLE9BQU8sRUFBNEIscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTs7QUFhM0YsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFBO0FBQzFCLE1BQU0sY0FBYyxHQUFHLGVBQWUsR0FBRyxDQUFDLENBQUE7QUFJMUMsOEJBQThCO0FBQzlCLG9CQUFvQjtBQUNwQixtQ0FBbUM7QUFDbkMsSUFBSTtBQUVKLG1CQUFtQjtBQUNuQiwrQ0FBK0M7QUFDL0Msb0RBQW9EO0FBQ3BELGtFQUFrRTtBQUNsRSw2Q0FBNkM7QUFDN0MsK0JBQStCO0FBQy9CLGdEQUFnRDtBQUNoRCxpQkFBaUI7QUFDakIsWUFBWTtBQUNaLFFBQVE7QUFDUixJQUFJO0FBb0JKLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxZQUFZO0lBbEJ4RDs7UUFtQmEsUUFBRyxHQUFHLE1BQU0sQ0FBQyxDQUFBLFVBQXVCLENBQUEsQ0FBQyxDQUFBO1FBRXJDLGdCQUFXLEdBQUcsS0FBSyxDQUFBO1FBQ25CLGlCQUFZLEdBQXdCLFVBQVUsQ0FBQTtRQVF2RCxZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQTtLQThOaEM7SUF6T1ksR0FBRyxDQUFrQztJQVc5QyxPQUFPLENBQXNCO0lBRTdCLGVBQWU7UUFDWCw2Q0FBNkM7UUFDNUMsSUFBNkQsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNuRyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ2YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsRUFDdkMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNqQixDQUFBO1FBRUQsMkRBQTJEO1FBRTNELElBQUksQ0FBQyxDQUFDO2FBQ0QsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdkYsSUFBSSxDQUNELFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUNyQixhQUFhLENBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUNmLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNkLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUE7UUFDN0IsQ0FBQyxDQUFDLENBQ0wsQ0FDSixDQUNKLENBQ0osQ0FDSjthQUNBLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBRXZDLFNBQVM7UUFDVCw0REFBNEQ7UUFDNUQsYUFBYTtRQUNiLDJCQUEyQjtRQUMzQiwyRUFBMkU7UUFDM0UsMEVBQTBFO1FBQzFFLDJCQUEyQjtRQUMzQixvQ0FBb0M7UUFDcEMsNkNBQTZDO1FBQzdDLGFBQWE7UUFDYixRQUFRO1FBQ1IsOEJBQThCO0lBQ2xDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxhQUFhLElBQUksT0FBTyxJQUFJLGNBQWMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ3ZCLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQXNCO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQzlCLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQTtRQUNsQixJQUFJLFlBQVksR0FBRyxDQUFDLENBQUE7UUFDcEIsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFBO1FBQ3JCLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQTtRQUNuQixJQUFJLGNBQWMsR0FBRyxlQUFlLENBQUE7UUFDcEMsSUFBSSxhQUFhLEdBQUcsY0FBYyxDQUFBO1FBRWxDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLFdBQVc7UUFDZixDQUFDO2FBQU0sQ0FBQztZQUNKLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUE7Z0JBQ2hDLE1BQU0sU0FBUyxHQUNYLFVBQVUsQ0FBQyxLQUFLLEtBQUssTUFBTTtvQkFDdkIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSztvQkFDM0IsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssTUFBTTt3QkFDM0IsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSzt3QkFDM0IsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFFYixNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxZQUFZLENBQUE7Z0JBQ2hFLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFBO2dCQUVqRCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUE7Z0JBQ25CLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQTtnQkFDckIsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFBO2dCQUN0QixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUE7Z0JBRXBCLElBQUksWUFBWSxFQUFFLENBQUM7b0JBQ2YsU0FBUyxHQUFHLENBQUMsQ0FBQTtvQkFDYixVQUFVLEdBQUcsQ0FBQyxDQUFBO29CQUNkLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO3dCQUMzQyxJQUFJLFVBQVUsRUFBRSxDQUFDOzRCQUNiLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQTt3QkFDaEQsQ0FBQzt3QkFDRCxRQUFRLEdBQUcsQ0FBQyxDQUFBO29CQUNoQixDQUFDO3lCQUFNLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO3dCQUNyRCxJQUFJLFVBQVUsRUFBRSxDQUFDOzRCQUNiLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQTt3QkFDdEQsQ0FBQzt3QkFDRCxXQUFXLEdBQUcsQ0FBQyxDQUFBO29CQUNuQixDQUFDO2dCQUNMLENBQUM7cUJBQU0sQ0FBQztvQkFDSixRQUFRLEdBQUcsQ0FBQyxDQUFBO29CQUNaLFdBQVcsR0FBRyxDQUFDLENBQUE7b0JBRWYsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxFQUFFLENBQUM7d0JBQzVDLElBQUksVUFBVSxFQUFFLENBQUM7NEJBQ2IsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFBO3dCQUNsRCxDQUFDO3dCQUNELFNBQVMsR0FBRyxDQUFDLENBQUE7b0JBQ2pCLENBQUM7eUJBQU0sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxFQUFFLENBQUM7d0JBQ3BELElBQUksVUFBVSxFQUFFLENBQUM7NEJBQ2IsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFBO3dCQUNwRCxDQUFDO3dCQUNELFVBQVUsR0FBRyxDQUFDLENBQUE7b0JBQ2xCLENBQUM7Z0JBQ0wsQ0FBQztnQkFFRCxNQUFNLGNBQWMsR0FDaEIsVUFBVSxDQUFDLEtBQUssS0FBSyxNQUFNO29CQUN2QixDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVE7b0JBQ3JCLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxLQUFLLE1BQU07d0JBQzNCLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUTt3QkFDckIsQ0FBQyxDQUFDLElBQUksY0FBYyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFFdkMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUU7b0JBQzNDLFNBQVMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO29CQUMvRCxtQkFBbUIsRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO29CQUM5RCxtQkFBbUIsRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO29CQUNsRSxtQkFBbUIsRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO29CQUNwRSxtQkFBbUIsRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO29CQUNoRSxtQkFBbUIsRUFBRSxDQUFDLFlBQVk7d0JBQzlCLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRTt3QkFDL0QsQ0FBQyxDQUFDLElBQUk7b0JBQ1YsbUJBQW1CLEVBQUUsWUFBWTt3QkFDN0IsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFO3dCQUMvRCxDQUFDLENBQUMsSUFBSTtvQkFDVix3QkFBd0IsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSTtvQkFDakUsd0JBQXdCLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO2lCQUNuRSxDQUFDLENBQUE7WUFDTixDQUFDO1lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUE7WUFFckUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRTtnQkFDckMsc0JBQXNCLEVBQUUsR0FBRyxVQUFVLElBQUk7Z0JBQ3pDLHdCQUF3QixFQUFFLEdBQUcsWUFBWSxJQUFJO2dCQUM3Qyx5QkFBeUIsRUFBRSxHQUFHLGFBQWEsSUFBSTtnQkFDL0MsdUJBQXVCLEVBQUUsR0FBRyxXQUFXLElBQUk7YUFDOUMsQ0FBQyxDQUFBO1FBQ04sQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBc0I7UUFDN0IscUJBQXFCO1FBQ3JCLHVCQUF1QjtRQUN2Qix3QkFBd0I7UUFDeEIsc0JBQXNCO1FBQ3RCLDJCQUEyQjtRQUMzQiwyQ0FBMkM7UUFDM0MseUNBQXlDO1FBQ3pDLCtEQUErRDtRQUMvRCw4REFBOEQ7UUFDOUQsUUFBUTtRQUNSLCtEQUErRDtRQUMvRCw4REFBOEQ7UUFDOUQsUUFBUTtRQUNSLHFDQUFxQztRQUNyQyx3Q0FBd0M7UUFDeEMsZ0NBQWdDO1FBQ2hDLDZDQUE2QztRQUM3Qyx1REFBdUQ7UUFDdkQsbURBQW1EO1FBQ25ELHNEQUFzRDtRQUN0RCxZQUFZO1FBQ1osUUFBUTtRQUNSLHVDQUF1QztRQUN2Qyx3Q0FBd0M7UUFDeEMsZ0NBQWdDO1FBQ2hDLDBCQUEwQjtRQUMxQiwwQ0FBMEM7UUFDMUMsNkNBQTZDO1FBQzdDLHlDQUF5QztRQUN6QyxpREFBaUQ7UUFDakQsMkNBQTJDO1FBQzNDLDRCQUE0QjtRQUM1QixzQkFBc0I7UUFDdEIsOEJBQThCO1FBQzlCLGlDQUFpQztRQUNqQyxrREFBa0Q7UUFDbEQsMkRBQTJEO1FBQzNELG1DQUFtQztRQUNuQyxtQ0FBbUM7UUFDbkMsbUJBQW1CO1FBQ25CLDZEQUE2RDtRQUM3RCxvQ0FBb0M7UUFDcEMsa0NBQWtDO1FBQ2xDLFlBQVk7UUFDWixRQUFRO1FBQ1IsdUNBQXVDO1FBQ3ZDLHdDQUF3QztRQUN4QyxnQ0FBZ0M7UUFDaEMsMEJBQTBCO1FBQzFCLDBDQUEwQztRQUMxQyw2Q0FBNkM7UUFDN0MseUNBQXlDO1FBQ3pDLGlEQUFpRDtRQUNqRCwyQ0FBMkM7UUFDM0MsNEJBQTRCO1FBQzVCLHNCQUFzQjtRQUN0Qiw2Q0FBNkM7UUFDN0Msa0RBQWtEO1FBQ2xELG9EQUFvRDtRQUNwRCxtQkFBbUI7UUFDbkIsbUNBQW1DO1FBQ25DLG9DQUFvQztRQUNwQyxZQUFZO1FBQ1osd0RBQXdEO1FBQ3hELHlEQUF5RDtRQUN6RCxrQ0FBa0M7UUFDbEMsb0NBQW9DO1FBQ3BDLG1CQUFtQjtRQUNuQiwrREFBK0Q7UUFDL0QscUNBQXFDO1FBQ3JDLGlDQUFpQztRQUNqQyxZQUFZO1FBQ1osUUFBUTtRQUNSLElBQUk7UUFDSiwyQ0FBMkM7UUFDM0MsOEZBQThGO0lBQ2xHLENBQUM7OEdBek9RLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDBMQU1qQix1QkFBdUIsbUVBQ3BCLHFCQUFxQix5RUFyQjVCOzs7Ozs7Ozs7O0tBVVQscXhCQVhTLHVCQUF1Qjs7MkZBZXhCLHNCQUFzQjtrQkFsQmxDLFNBQVM7K0JBQ0ksWUFBWSxjQUNWLElBQUksV0FDUCxDQUFDLHVCQUF1QixDQUFDLFlBQ3hCOzs7Ozs7Ozs7O0tBVVQsbUJBRWdCLHVCQUF1QixDQUFDLE1BQU07OEJBS3RDLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFaUMsZ0JBQWdCO3NCQUF0RCxZQUFZO3VCQUFDLHVCQUF1QjtnQkFDRyxhQUFhO3NCQUFwRCxlQUFlO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIFN1YmplY3QsIHN3aXRjaE1hcCB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgRGVzdHJ1Y3RpYmxlLCBOdW1iZXJXaXRoVW5pdCB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbmltcG9ydCB7IEZhc3RET00gfSBmcm9tIFwiLi4vdXRpbFwiXG5pbXBvcnQgeyBEb2NraW5nQ29udGVudENvbXBvbmVudCB9IGZyb20gXCIuL2RvY2tpbmctY29udGVudC5jb21wb25lbnRcIlxuaW1wb3J0IHsgdHlwZSBEb2NraW5nUGFuZWxDaGFuZ2VzLCBEb2NraW5nUGFuZWxDb21wb25lbnQgfSBmcm9tIFwiLi9kb2NraW5nLXBhbmVsLmNvbXBvbmVudFwiXG5cbnR5cGUgRG9ja2luZ1ZlcnRpY2FsUG9zaXRpb24gPSBcInRvcFwiIHwgXCJtaWRkbGVcIiB8IFwiYm90dG9tXCJcbnR5cGUgRG9ja2luZ0hvcml6b250YWxQb3NpdG9uID0gXCJsZWZ0XCIgfCBcImNlbnRlclwiIHwgXCJyaWdodFwiXG50eXBlIERvY2tpbmdQb3NpdGlvbiA9IGAke0RvY2tpbmdWZXJ0aWNhbFBvc2l0aW9ufToke0RvY2tpbmdIb3Jpem9udGFsUG9zaXRvbn1gXG5leHBvcnQgdHlwZSBEb2NraW5nUmFuZ2UgPVxuICAgIHwgRG9ja2luZ1ZlcnRpY2FsUG9zaXRpb25cbiAgICB8IERvY2tpbmdIb3Jpem9udGFsUG9zaXRvblxuICAgIHwgRG9ja2luZ1Bvc2l0aW9uXG4gICAgfCBgJHtEb2NraW5nUG9zaXRpb259LSR7RG9ja2luZ1Bvc2l0aW9ufWBcblxuZXhwb3J0IHR5cGUgRG9ja2luZ1Bvc2l0aW9uTW9kZSA9IFwiYWJzb2x1dGVcIiB8IFwiZml4ZWRcIlxuXG5jb25zdCBFTUJFRERFRF9aSU5ERVggPSAyMFxuY29uc3QgT1ZFUkxBWV9aSU5ERVggPSBFTUJFRERFRF9aSU5ERVggKiAyXG5cbnR5cGUgUGFuZWxzQ2hhbmdlcyA9IEFycmF5PHsgcGFuZWw6IERvY2tpbmdQYW5lbENvbXBvbmVudDsgY2hhbmdlczogRG9ja2luZ1BhbmVsQ2hhbmdlcyB9PlxuXG4vLyBpbnRlcmZhY2UgUGFuZWxSZWZDaGFuZ2VzIHtcbi8vICAgICByZWY6IFBhbmVsUmVmXG4vLyAgICAgY2hhbmdlczogRG9ja2luZ1BhbmVsQ2hhbmdlc1xuLy8gfVxuXG4vLyBjbGFzcyBQYW5lbFJlZiB7XG4vLyAgICAgc3R5bGU6IFBhcnRpYWw8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gPSB7fVxuLy8gICAgIHJlYWRvbmx5IGNoYW5nZXM6IE9ic2VydmFibGU8UGFuZWxSZWZDaGFuZ2VzPlxuLy8gICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBwYW5lbDogRG9ja2luZ1BhbmVsRGlyZWN0aXZlKSB7XG4vLyAgICAgICAgIHRoaXMuY2hhbmdlcyA9IHBhbmVsLmNoYW5nZXMucGlwZShcbi8vICAgICAgICAgICAgIG1hcChjaGFuZ2VzID0+IHtcbi8vICAgICAgICAgICAgICAgICByZXR1cm4geyByZWY6IHRoaXMsIGNoYW5nZXMgfVxuLy8gICAgICAgICAgICAgfSlcbi8vICAgICAgICAgKVxuLy8gICAgIH1cbi8vIH1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwibnUtZG9ja2luZ1wiLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0RvY2tpbmdDb250ZW50Q29tcG9uZW50XSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJudS1kb2NraW5nLXBhbmVsXCI+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIEBpZiAoIWNvbnRlbnRDb21wb25lbnQpIHtcbiAgICAgICAgICAgIDxudS1kb2NraW5nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPC9udS1kb2NraW5nLWNvbnRlbnQ+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibnUtZG9ja2luZy1jb250ZW50XCI+PC9uZy1jb250ZW50PlxuICAgICAgICB9XG4gICAgYCxcbiAgICBzdHlsZVVybDogXCIuL2RvY2tpbmctbGF5b3V0LmNvbXBvbmVudC5zY3NzXCIsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRG9ja2luZ0xheW91dENvbXBvbmVudCBleHRlbmRzIERlc3RydWN0aWJsZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gICAgcmVhZG9ubHkgI2VsID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KVxuXG4gICAgQElucHV0KCkgY29udGVudE9ubHkgPSBmYWxzZVxuICAgIEBJbnB1dCgpIHBvc2l0aW9uTW9kZTogRG9ja2luZ1Bvc2l0aW9uTW9kZSA9IFwiYWJzb2x1dGVcIlxuXG4gICAgQENvbnRlbnRDaGlsZChEb2NraW5nQ29udGVudENvbXBvbmVudCkgY29udGVudENvbXBvbmVudD86IERvY2tpbmdDb250ZW50Q29tcG9uZW50XG4gICAgQENvbnRlbnRDaGlsZHJlbihEb2NraW5nUGFuZWxDb21wb25lbnQpIGRvY2tpbmdQYW5lbHMhOiBRdWVyeUxpc3Q8RG9ja2luZ1BhbmVsQ29tcG9uZW50PlxuXG4gICAgLy8gcmVhZG9ubHkgcGFuZWxzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYW5lbFJlZltdPihbXSlcbiAgICByZWFkb25seSBwYW5lbHMhOiBPYnNlcnZhYmxlPEFycmF5PERvY2tpbmdQYW5lbENvbXBvbmVudD4+XG5cbiAgICAjcmVmbG93ID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJldHRpZXIvcHJldHRpZXJcbiAgICAgICAgKHRoaXMgYXMgeyBwYW5lbHM6IE9ic2VydmFibGU8QXJyYXk8RG9ja2luZ1BhbmVsQ29tcG9uZW50Pj4gfSkucGFuZWxzID0gdGhpcy5kb2NraW5nUGFuZWxzLmNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmRvY2tpbmdQYW5lbHMudG9BcnJheSgpKSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgIClcblxuICAgICAgICAvLyB0aGlzLnBhbmVscy5zdWJzY3JpYmUocGFuZWxzID0+IGNvbnNvbGUubG9nKHsgcGFuZWxzIH0pKVxuXG4gICAgICAgIHRoaXMuZFxuICAgICAgICAgICAgLnN1Yihjb21iaW5lTGF0ZXN0KHsgcGFuZWxzOiB0aGlzLnBhbmVscywgcmVmbG93OiB0aGlzLiNyZWZsb3cucGlwZShzdGFydFdpdGgobnVsbCkpIH0pKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCh7IHBhbmVscyB9KSA9PlxuICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxzLm1hcChwYW5lbCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsLmNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKGNoYW5nZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcGFuZWwsIGNoYW5nZXMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy4jbGF5b3V0LmJpbmQodGhpcykpXG5cbiAgICAgICAgLy8gdGhpcy5kXG4gICAgICAgIC8vICAgICAuc3ViKG1lcmdlKHRoaXMuZG9ja2luZ1BhbmVscy5jaGFuZ2VzLCB0aGlzLiNyZWZsb3cpKVxuICAgICAgICAvLyAgICAgLnBpcGUoXG4gICAgICAgIC8vICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICAvLyAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmRvY2tpbmdQYW5lbHMubWFwKHBhbmVsID0+IG5ldyBQYW5lbFJlZihwYW5lbCkpKSxcbiAgICAgICAgLy8gICAgICAgICBzd2l0Y2hNYXAocmVmcyA9PiBjb21iaW5lTGF0ZXN0KHJlZnMubWFwKHJlZiA9PiByZWYuY2hhbmdlcykpKSxcbiAgICAgICAgLy8gICAgICAgICBtYXAoY2hhbmdlcyA9PiB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHRoaXMuI2xheW91dChjaGFuZ2VzKVxuICAgICAgICAvLyAgICAgICAgICAgICByZXR1cm4gY2hhbmdlcy5tYXAoYyA9PiBjLnJlZilcbiAgICAgICAgLy8gICAgICAgICB9KVxuICAgICAgICAvLyAgICAgKVxuICAgICAgICAvLyAgICAgLnN1YnNjcmliZSh0aGlzLnBhbmVscylcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChcImNvbnRlbnRPbmx5XCIgaW4gY2hhbmdlcyB8fCBcInBvc2l0aW9uTW9kZVwiIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuI3JlZmxvdy5uZXh0KClcbiAgICAgICAgfVxuICAgIH1cblxuICAgICNsYXlvdXQoZW50cmllczogUGFuZWxzQ2hhbmdlcykge1xuICAgICAgICBjb25zb2xlLmxvZyhcImxheW91dFwiLCBlbnRyaWVzKVxuICAgICAgICBsZXQgcGFkZGluZ1RvcCA9IDBcbiAgICAgICAgbGV0IHBhZGRpbmdSaWdodCA9IDBcbiAgICAgICAgbGV0IHBhZGRpbmdCb3R0b20gPSAwXG4gICAgICAgIGxldCBwYWRkaW5nTGVmdCA9IDBcbiAgICAgICAgbGV0IGVtYmVkZGVkWkluZGV4ID0gRU1CRURERURfWklOREVYXG4gICAgICAgIGxldCBvdmVybGF5WkluZGV4ID0gT1ZFUkxBWV9aSU5ERVhcblxuICAgICAgICBpZiAodGhpcy5jb250ZW50T25seSkge1xuICAgICAgICAgICAgLy8gVE9ETzouLi5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhbmVsU3RhdGUgPSBlbnRyeS5jaGFuZ2VzXG4gICAgICAgICAgICAgICAgY29uc3QgcGFuZWxTaXplID1cbiAgICAgICAgICAgICAgICAgICAgcGFuZWxTdGF0ZS5zdGF0ZSA9PT0gXCJmdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFuZWxTdGF0ZS5mdWxsU2l6ZS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwYW5lbFN0YXRlLnN0YXRlID09PSBcIm1pbmlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHBhbmVsU3RhdGUubWluaVNpemUudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwXG5cbiAgICAgICAgICAgICAgICBjb25zdCBpc0hvcml6b250YWwgPSBwYW5lbFN0YXRlLnBvc2l0aW9uLm9yaWVudCA9PT0gXCJob3Jpem9udGFsXCJcbiAgICAgICAgICAgICAgICBjb25zdCBpc0VtYmVkZGVkID0gcGFuZWxTdGF0ZS5tb2RlID09PSBcImVtYmVkZGVkXCJcblxuICAgICAgICAgICAgICAgIGxldCBwYW5lbFRvcCA9IG51bGxcbiAgICAgICAgICAgICAgICBsZXQgcGFuZWxSaWdodCA9IG51bGxcbiAgICAgICAgICAgICAgICBsZXQgcGFuZWxCb3R0b20gPSBudWxsXG4gICAgICAgICAgICAgICAgbGV0IHBhbmVsTGVmdCA9IG51bGxcblxuICAgICAgICAgICAgICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFuZWxMZWZ0ID0gMFxuICAgICAgICAgICAgICAgICAgICBwYW5lbFJpZ2h0ID0gMFxuICAgICAgICAgICAgICAgICAgICBpZiAocGFuZWxTdGF0ZS5wb3NpdGlvbi5jZWxsc1swXS52ID09PSBcInRvcFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNFbWJlZGRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3AgPSBNYXRoLm1heChwYWRkaW5nVG9wLCBwYW5lbFNpemUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYW5lbFRvcCA9IDBcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYW5lbFN0YXRlLnBvc2l0aW9uLmNlbGxzWzBdLnYgPT09IFwiYm90dG9tXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0VtYmVkZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSA9IE1hdGgubWF4KHBhZGRpbmdCb3R0b20sIHBhbmVsU2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsQm90dG9tID0gMFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGFuZWxUb3AgPSAwXG4gICAgICAgICAgICAgICAgICAgIHBhbmVsQm90dG9tID0gMFxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYW5lbFN0YXRlLnBvc2l0aW9uLmNlbGxzWzBdLmggPT09IFwibGVmdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNFbWJlZGRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0ID0gTWF0aC5tYXgocGFkZGluZ0xlZnQsIHBhbmVsU2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsTGVmdCA9IDBcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYW5lbFN0YXRlLnBvc2l0aW9uLmNlbGxzWzBdLmggPT09IFwicmlnaHRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRW1iZWRkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQgPSBNYXRoLm1heChwYWRkaW5nUmlnaHQsIHBhbmVsU2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsUmlnaHQgPSAwXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBwYW5lbEdpdmVuU2l6ZSA9XG4gICAgICAgICAgICAgICAgICAgIHBhbmVsU3RhdGUuc3RhdGUgPT09IFwiZnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHBhbmVsU3RhdGUuZnVsbFNpemVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcGFuZWxTdGF0ZS5zdGF0ZSA9PT0gXCJtaW5pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwYW5lbFN0YXRlLm1pbmlTaXplXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogbmV3IE51bWJlcldpdGhVbml0KDAsIFwicHhcIilcblxuICAgICAgICAgICAgICAgIEZhc3RET00uc2V0U3R5bGUoZW50cnkucGFuZWwuZWwubmF0aXZlRWxlbWVudCwge1xuICAgICAgICAgICAgICAgICAgICBcInotaW5kZXhcIjogYCR7aXNFbWJlZGRlZCA/IGVtYmVkZGVkWkluZGV4KysgOiBvdmVybGF5WkluZGV4Kyt9YCxcbiAgICAgICAgICAgICAgICAgICAgXCItLWRvY2tpbmctcGFuZWwtdFwiOiBwYW5lbFRvcCAhPSBudWxsID8gYCR7cGFuZWxUb3B9cHhgIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgXCItLWRvY2tpbmctcGFuZWwtclwiOiBwYW5lbFJpZ2h0ICE9IG51bGwgPyBgJHtwYW5lbFJpZ2h0fXB4YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLWJcIjogcGFuZWxCb3R0b20gIT0gbnVsbCA/IGAke3BhbmVsQm90dG9tfXB4YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLWxcIjogcGFuZWxMZWZ0ICE9IG51bGwgPyBgJHtwYW5lbExlZnR9cHhgIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgXCItLWRvY2tpbmctcGFuZWwtd1wiOiAhaXNIb3Jpem9udGFsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGAke3BhbmVsR2l2ZW5TaXplLnVuaXQgPT09IFwiYXV0b1wiID8gXCJhdXRvXCIgOiBwYW5lbEdpdmVuU2l6ZX1gXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLWhcIjogaXNIb3Jpem9udGFsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGAke3BhbmVsR2l2ZW5TaXplLnVuaXQgPT09IFwiYXV0b1wiID8gXCJhdXRvXCIgOiBwYW5lbEdpdmVuU2l6ZX1gXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLXJlYWwtd1wiOiAhaXNIb3Jpem9udGFsID8gYCR7cGFuZWxTaXplfXB4YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLXJlYWwtaFwiOiBpc0hvcml6b250YWwgPyBgJHtwYW5lbFNpemV9cHhgIDogbnVsbFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHsgcGFkZGluZ1RvcCwgcGFkZGluZ1JpZ2h0LCBwYWRkaW5nQm90dG9tLCBwYWRkaW5nTGVmdCB9KVxuXG4gICAgICAgICAgICBGYXN0RE9NLnNldFN0eWxlKHRoaXMuI2VsLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1sYXlvdXQtdG9wXCI6IGAke3BhZGRpbmdUb3B9cHhgLFxuICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLWxheW91dC1yaWdodFwiOiBgJHtwYWRkaW5nUmlnaHR9cHhgLFxuICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLWxheW91dC1ib3R0b21cIjogYCR7cGFkZGluZ0JvdHRvbX1weGAsXG4gICAgICAgICAgICAgICAgXCItLWRvY2tpbmctbGF5b3V0LWxlZnRcIjogYCR7cGFkZGluZ0xlZnR9cHhgXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgI2xheW91dE9sZChlbnRyaWVzOiBQYW5lbHNDaGFuZ2VzKSB7XG4gICAgICAgIC8vIGxldCBwYWRkaW5nVG9wID0gMFxuICAgICAgICAvLyBsZXQgcGFkZGluZ1JpZ2h0ID0gMFxuICAgICAgICAvLyBsZXQgcGFkZGluZ0JvdHRvbSA9IDBcbiAgICAgICAgLy8gbGV0IHBhZGRpbmdMZWZ0ID0gMFxuICAgICAgICAvLyBpZiAoIXRoaXMuY29udGVudE9ubHkpIHtcbiAgICAgICAgLy8gICAgIGxldCBlbWJlZGRlZFpJbmRleCA9IEVNQkVEREVEX1pJTkRFWFxuICAgICAgICAvLyAgICAgbGV0IG92ZXJsYXlaSW5kZXggPSBPVkVSTEFZX1pJTkRFWFxuICAgICAgICAvLyAgICAgY29uc3QgbGVmdFJpZ2h0OiBQYW5lbFJlZkNoYW5nZXNbXSA9IGVudHJpZXMuZmlsdGVyKHYgPT5cbiAgICAgICAgLy8gICAgICAgICBbXCJsZWZ0XCIsIFwicmlnaHRcIl0uaW5jbHVkZXModi5jaGFuZ2VzLnBvc2l0aW9uLnNpZGUpXG4gICAgICAgIC8vICAgICApXG4gICAgICAgIC8vICAgICBjb25zdCB0b3BCb3R0b206IFBhbmVsUmVmQ2hhbmdlc1tdID0gZW50cmllcy5maWx0ZXIodiA9PlxuICAgICAgICAvLyAgICAgICAgIFtcInRvcFwiLCBcImJvdHRvbVwiXS5pbmNsdWRlcyh2LmNoYW5nZXMucG9zaXRpb24uc2lkZSlcbiAgICAgICAgLy8gICAgIClcbiAgICAgICAgLy8gICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAvLyAgICAgICAgIGNvbnN0IGNoYW5nZXMgPSBlbnRyeS5jaGFuZ2VzXG4gICAgICAgIC8vICAgICAgICAgY29uc3QgcmVmID0gZW50cnkucmVmXG4gICAgICAgIC8vICAgICAgICAgaWYgKGNoYW5nZXMubW9kZSA9PT0gXCJlbWJlZGRlZFwiKSB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS56SW5kZXggPSBgJHtlbWJlZGRlZFpJbmRleCsrfWBcbiAgICAgICAgLy8gICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZXMubW9kZSA9PT0gXCJvdmVybGF5XCIpIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgcmVmLnN0eWxlLnpJbmRleCA9IGAke292ZXJsYXlaSW5kZXgrK31gXG4gICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBsZWZ0UmlnaHQpIHtcbiAgICAgICAgLy8gICAgICAgICBjb25zdCBjaGFuZ2VzID0gZW50cnkuY2hhbmdlc1xuICAgICAgICAvLyAgICAgICAgIGNvbnN0IHJlZiA9IGVudHJ5LnJlZlxuICAgICAgICAvLyAgICAgICAgIGNvbnN0IHBhZGRpbmcgPVxuICAgICAgICAvLyAgICAgICAgICAgICBjaGFuZ2VzLm1vZGUgPT09IFwiZW1iZWRkZWRcIlxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgPyBjaGFuZ2VzLnN0YXRlID09PSBcImZ1bGxcIlxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgID8gY2hhbmdlcy5mdWxsU2l6ZVxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIDogY2hhbmdlcy5zdGF0ZSA9PT0gXCJtaW5pXCJcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgID8gY2hhbmdlcy5taW5pU2l6ZVxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgOiAwXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICA6IDBcbiAgICAgICAgLy8gICAgICAgICByZWYuc3R5bGUudG9wID0gXCIwXCJcbiAgICAgICAgLy8gICAgICAgICByZWYuc3R5bGUuYm90dG9tID0gXCIwXCJcbiAgICAgICAgLy8gICAgICAgICBpZiAoY2hhbmdlcy5wb3NpdGlvbi5zaWRlID09PSBcImxlZnRcIikge1xuICAgICAgICAvLyAgICAgICAgICAgICBwYWRkaW5nTGVmdCA9IE1hdGgubWF4KHBhZGRpbmdMZWZ0LCBwYWRkaW5nKVxuICAgICAgICAvLyAgICAgICAgICAgICByZWYuc3R5bGUubGVmdCA9IFwiMFwiXG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS5yaWdodCA9IFwiXCJcbiAgICAgICAgLy8gICAgICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgICAgICAgICBwYWRkaW5nUmlnaHQgPSBNYXRoLm1heChwYWRkaW5nUmlnaHQsIHBhZGRpbmcpXG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS5yaWdodCA9IFwiMFwiXG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS5sZWZ0ID0gXCJcIlxuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gICAgIGZvciAoY29uc3QgZW50cnkgb2YgdG9wQm90dG9tKSB7XG4gICAgICAgIC8vICAgICAgICAgY29uc3QgY2hhbmdlcyA9IGVudHJ5LmNoYW5nZXNcbiAgICAgICAgLy8gICAgICAgICBjb25zdCByZWYgPSBlbnRyeS5yZWZcbiAgICAgICAgLy8gICAgICAgICBjb25zdCBwYWRkaW5nID1cbiAgICAgICAgLy8gICAgICAgICAgICAgY2hhbmdlcy5tb2RlID09PSBcImVtYmVkZGVkXCJcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgID8gY2hhbmdlcy5zdGF0ZSA9PT0gXCJmdWxsXCJcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICA/IGNoYW5nZXMuZnVsbFNpemVcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICA6IGNoYW5nZXMuc3RhdGUgPT09IFwibWluaVwiXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICA/IGNoYW5nZXMubWluaVNpemVcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIDogMFxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgOiAwXG4gICAgICAgIC8vICAgICAgICAgaWYgKGNoYW5nZXMubW9kZSA9PT0gXCJlbWJlZGRlZFwiKSB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS5sZWZ0ID0gYCR7cGFkZGluZ0xlZnR9cHhgXG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS5yaWdodCA9IGAke3BhZGRpbmdSaWdodH1weGBcbiAgICAgICAgLy8gICAgICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgICAgICAgICByZWYuc3R5bGUubGVmdCA9IFwiMFwiXG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS5yaWdodCA9IFwiMFwiXG4gICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAvLyAgICAgICAgIGlmIChjaGFuZ2VzLnBvc2l0aW9uPy5jZWxsc1swXS52ID09PSBcInRvcFwiKSB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHBhZGRpbmdUb3AgPSBNYXRoLm1heChwYWRkaW5nVG9wLCBwYWRkaW5nKVxuICAgICAgICAvLyAgICAgICAgICAgICByZWYuc3R5bGUudG9wID0gXCIwXCJcbiAgICAgICAgLy8gICAgICAgICAgICAgcmVmLnN0eWxlLmJvdHRvbSA9IFwiXCJcbiAgICAgICAgLy8gICAgICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgICAgICAgICBwYWRkaW5nQm90dG9tID0gTWF0aC5tYXgocGFkZGluZ0JvdHRvbSwgcGFkZGluZylcbiAgICAgICAgLy8gICAgICAgICAgICAgcmVmLnN0eWxlLmJvdHRvbSA9IGAwYFxuICAgICAgICAvLyAgICAgICAgICAgICByZWYuc3R5bGUudG9wID0gXCJcIlxuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gfVxuICAgICAgICAvLyBjb25zdCBjZWwgPSB0aGlzLmNvbnRlbnRFbC5uYXRpdmVFbGVtZW50XG4gICAgICAgIC8vIGNlbC5zdHlsZS5wYWRkaW5nID0gYCR7cGFkZGluZ1RvcH1weCAke3BhZGRpbmdSaWdodH1weCAke3BhZGRpbmdCb3R0b219cHggJHtwYWRkaW5nTGVmdH1weGBcbiAgICB9XG59XG4iXX0=
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbGF5b3V0L3NyYy9kb2NraW5nL2RvY2tpbmctbGF5b3V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLFNBQVMsRUFFWixNQUFNLGVBQWUsQ0FBQTtBQUV0QixPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFakcsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFdEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDckUsT0FBTyxFQUE0QixxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFBOztBQWEzRixNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUE7QUFDMUIsTUFBTSxjQUFjLEdBQUcsZUFBZSxHQUFHLENBQUMsQ0FBQTtBQUkxQyw4QkFBOEI7QUFDOUIsb0JBQW9CO0FBQ3BCLG1DQUFtQztBQUNuQyxJQUFJO0FBRUosbUJBQW1CO0FBQ25CLCtDQUErQztBQUMvQyxvREFBb0Q7QUFDcEQsa0VBQWtFO0FBQ2xFLDZDQUE2QztBQUM3QywrQkFBK0I7QUFDL0IsZ0RBQWdEO0FBQ2hELGlCQUFpQjtBQUNqQixZQUFZO0FBQ1osUUFBUTtBQUNSLElBQUk7QUFvQkosTUFBTSxPQUFPLHNCQUF1QixTQUFRLFlBQVk7SUFsQnhEOztRQW1CYSxRQUFHLEdBQUcsTUFBTSxDQUFDLENBQUEsVUFBdUIsQ0FBQSxDQUFDLENBQUE7UUFFckMsZ0JBQVcsR0FBRyxLQUFLLENBQUE7UUFDbkIsaUJBQVksR0FBd0IsVUFBVSxDQUFBO1FBUXZELFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFBO0tBNEloQztJQXZKWSxHQUFHLENBQWtDO0lBVzlDLE9BQU8sQ0FBc0I7SUFFN0IsZUFBZTtRQUNYLDZDQUE2QztRQUM1QyxJQUE2RCxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ25HLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUN2QyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2pCLENBQUE7UUFFRCwyREFBMkQ7UUFFM0QsSUFBSSxDQUFDLENBQUM7YUFDRCxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN2RixJQUFJLENBQ0QsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQ3JCLGFBQWEsQ0FDVCxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ2YsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ2QsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQTtRQUM3QixDQUFDLENBQUMsQ0FDTCxDQUNKLENBQ0osQ0FDSixDQUNKO2FBQ0EsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7UUFFdkMsU0FBUztRQUNULDREQUE0RDtRQUM1RCxhQUFhO1FBQ2IsMkJBQTJCO1FBQzNCLDJFQUEyRTtRQUMzRSwwRUFBMEU7UUFDMUUsMkJBQTJCO1FBQzNCLG9DQUFvQztRQUNwQyw2Q0FBNkM7UUFDN0MsYUFBYTtRQUNiLFFBQVE7UUFDUiw4QkFBOEI7SUFDbEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLGFBQWEsSUFBSSxPQUFPLElBQUksY0FBYyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDdkIsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBc0I7UUFDMUIsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFBO1FBQ2xCLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQTtRQUNwQixJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUE7UUFDckIsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFBO1FBQ25CLElBQUksY0FBYyxHQUFHLGVBQWUsQ0FBQTtRQUNwQyxJQUFJLGFBQWEsR0FBRyxjQUFjLENBQUE7UUFFbEMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsV0FBVztRQUNmLENBQUM7YUFBTSxDQUFDO1lBQ0osS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQTtnQkFDaEMsTUFBTSxTQUFTLEdBQ1gsVUFBVSxDQUFDLEtBQUssS0FBSyxNQUFNO29CQUN2QixDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLO29CQUMzQixDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssS0FBSyxNQUFNO3dCQUMzQixDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLO3dCQUMzQixDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUViLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLFlBQVksQ0FBQTtnQkFDaEUsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUE7Z0JBRWpELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQTtnQkFDbkIsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFBO2dCQUNyQixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUE7Z0JBQ3RCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQTtnQkFFcEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztvQkFDZixTQUFTLEdBQUcsQ0FBQyxDQUFBO29CQUNiLFVBQVUsR0FBRyxDQUFDLENBQUE7b0JBQ2QsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUM7d0JBQzNDLElBQUksVUFBVSxFQUFFLENBQUM7NEJBQ2IsVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFBO3dCQUNoRCxDQUFDO3dCQUNELFFBQVEsR0FBRyxDQUFDLENBQUE7b0JBQ2hCLENBQUM7eUJBQU0sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7d0JBQ3JELElBQUksVUFBVSxFQUFFLENBQUM7NEJBQ2IsYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFBO3dCQUN0RCxDQUFDO3dCQUNELFdBQVcsR0FBRyxDQUFDLENBQUE7b0JBQ25CLENBQUM7Z0JBQ0wsQ0FBQztxQkFBTSxDQUFDO29CQUNKLFFBQVEsR0FBRyxDQUFDLENBQUE7b0JBQ1osV0FBVyxHQUFHLENBQUMsQ0FBQTtvQkFFZixJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLEVBQUUsQ0FBQzt3QkFDNUMsSUFBSSxVQUFVLEVBQUUsQ0FBQzs0QkFDYixXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUE7d0JBQ2xELENBQUM7d0JBQ0QsU0FBUyxHQUFHLENBQUMsQ0FBQTtvQkFDakIsQ0FBQzt5QkFBTSxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxPQUFPLEVBQUUsQ0FBQzt3QkFDcEQsSUFBSSxVQUFVLEVBQUUsQ0FBQzs0QkFDYixZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUE7d0JBQ3BELENBQUM7d0JBQ0QsVUFBVSxHQUFHLENBQUMsQ0FBQTtvQkFDbEIsQ0FBQztnQkFDTCxDQUFDO2dCQUVELE1BQU0sY0FBYyxHQUNoQixVQUFVLENBQUMsS0FBSyxLQUFLLE1BQU07b0JBQ3ZCLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUTtvQkFDckIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssTUFBTTt3QkFDM0IsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRO3dCQUNyQixDQUFDLENBQUMsSUFBSSxjQUFjLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO2dCQUV2QyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRTtvQkFDM0MsU0FBUyxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7b0JBQy9ELG1CQUFtQixFQUFFLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7b0JBQzlELG1CQUFtQixFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7b0JBQ2xFLG1CQUFtQixFQUFFLFdBQVcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7b0JBQ3BFLG1CQUFtQixFQUFFLFNBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7b0JBQ2hFLG1CQUFtQixFQUFFLENBQUMsWUFBWTt3QkFDOUIsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFO3dCQUMvRCxDQUFDLENBQUMsSUFBSTtvQkFDVixtQkFBbUIsRUFBRSxZQUFZO3dCQUM3QixDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUU7d0JBQy9ELENBQUMsQ0FBQyxJQUFJO29CQUNWLHdCQUF3QixFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO29CQUNqRSx3QkFBd0IsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7aUJBQ25FLENBQUMsQ0FBQTtZQUNOLENBQUM7WUFFRCxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFO2dCQUNyQyxzQkFBc0IsRUFBRSxHQUFHLFVBQVUsSUFBSTtnQkFDekMsd0JBQXdCLEVBQUUsR0FBRyxZQUFZLElBQUk7Z0JBQzdDLHlCQUF5QixFQUFFLEdBQUcsYUFBYSxJQUFJO2dCQUMvQyx1QkFBdUIsRUFBRSxHQUFHLFdBQVcsSUFBSTthQUM5QyxDQUFDLENBQUE7UUFDTixDQUFDO0lBQ0wsQ0FBQzs4R0F2SlEsc0JBQXNCO2tHQUF0QixzQkFBc0IsMExBTWpCLHVCQUF1QixtRUFDcEIscUJBQXFCLHlFQXJCNUI7Ozs7Ozs7Ozs7S0FVVCxxeEJBWFMsdUJBQXVCOzsyRkFleEIsc0JBQXNCO2tCQWxCbEMsU0FBUzsrQkFDSSxZQUFZLGNBQ1YsSUFBSSxXQUNQLENBQUMsdUJBQXVCLENBQUMsWUFDeEI7Ozs7Ozs7Ozs7S0FVVCxtQkFFZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFLdEMsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVpQyxnQkFBZ0I7c0JBQXRELFlBQVk7dUJBQUMsdUJBQXVCO2dCQUNHLGFBQWE7c0JBQXBELGVBQWU7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwIH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBEZXN0cnVjdGlibGUsIEZhc3RET00sIE51bWJlcldpdGhVbml0IH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuaW1wb3J0IHsgRG9ja2luZ0NvbnRlbnRDb21wb25lbnQgfSBmcm9tIFwiLi9kb2NraW5nLWNvbnRlbnQuY29tcG9uZW50XCJcbmltcG9ydCB7IHR5cGUgRG9ja2luZ1BhbmVsQ2hhbmdlcywgRG9ja2luZ1BhbmVsQ29tcG9uZW50IH0gZnJvbSBcIi4vZG9ja2luZy1wYW5lbC5jb21wb25lbnRcIlxuXG50eXBlIERvY2tpbmdWZXJ0aWNhbFBvc2l0aW9uID0gXCJ0b3BcIiB8IFwibWlkZGxlXCIgfCBcImJvdHRvbVwiXG50eXBlIERvY2tpbmdIb3Jpem9udGFsUG9zaXRvbiA9IFwibGVmdFwiIHwgXCJjZW50ZXJcIiB8IFwicmlnaHRcIlxudHlwZSBEb2NraW5nUG9zaXRpb24gPSBgJHtEb2NraW5nVmVydGljYWxQb3NpdGlvbn06JHtEb2NraW5nSG9yaXpvbnRhbFBvc2l0b259YFxuZXhwb3J0IHR5cGUgRG9ja2luZ1JhbmdlID1cbiAgICB8IERvY2tpbmdWZXJ0aWNhbFBvc2l0aW9uXG4gICAgfCBEb2NraW5nSG9yaXpvbnRhbFBvc2l0b25cbiAgICB8IERvY2tpbmdQb3NpdGlvblxuICAgIHwgYCR7RG9ja2luZ1Bvc2l0aW9ufS0ke0RvY2tpbmdQb3NpdGlvbn1gXG5cbmV4cG9ydCB0eXBlIERvY2tpbmdQb3NpdGlvbk1vZGUgPSBcImFic29sdXRlXCIgfCBcImZpeGVkXCJcblxuY29uc3QgRU1CRURERURfWklOREVYID0gMjBcbmNvbnN0IE9WRVJMQVlfWklOREVYID0gRU1CRURERURfWklOREVYICogMlxuXG50eXBlIFBhbmVsc0NoYW5nZXMgPSBBcnJheTx7IHBhbmVsOiBEb2NraW5nUGFuZWxDb21wb25lbnQ7IGNoYW5nZXM6IERvY2tpbmdQYW5lbENoYW5nZXMgfT5cblxuLy8gaW50ZXJmYWNlIFBhbmVsUmVmQ2hhbmdlcyB7XG4vLyAgICAgcmVmOiBQYW5lbFJlZlxuLy8gICAgIGNoYW5nZXM6IERvY2tpbmdQYW5lbENoYW5nZXNcbi8vIH1cblxuLy8gY2xhc3MgUGFuZWxSZWYge1xuLy8gICAgIHN0eWxlOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+ID0ge31cbi8vICAgICByZWFkb25seSBjaGFuZ2VzOiBPYnNlcnZhYmxlPFBhbmVsUmVmQ2hhbmdlcz5cbi8vICAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgcGFuZWw6IERvY2tpbmdQYW5lbERpcmVjdGl2ZSkge1xuLy8gICAgICAgICB0aGlzLmNoYW5nZXMgPSBwYW5lbC5jaGFuZ2VzLnBpcGUoXG4vLyAgICAgICAgICAgICBtYXAoY2hhbmdlcyA9PiB7XG4vLyAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcmVmOiB0aGlzLCBjaGFuZ2VzIH1cbi8vICAgICAgICAgICAgIH0pXG4vLyAgICAgICAgIClcbi8vICAgICB9XG4vLyB9XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm51LWRvY2tpbmdcIixcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtEb2NraW5nQ29udGVudENvbXBvbmVudF0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibnUtZG9ja2luZy1wYW5lbFwiPjwvbmctY29udGVudD5cblxuICAgICAgICBAaWYgKCFjb250ZW50Q29tcG9uZW50KSB7XG4gICAgICAgICAgICA8bnUtZG9ja2luZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDwvbnUtZG9ja2luZy1jb250ZW50PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm51LWRvY2tpbmctY29udGVudFwiPjwvbmctY29udGVudD5cbiAgICAgICAgfVxuICAgIGAsXG4gICAgc3R5bGVVcmw6IFwiLi9kb2NraW5nLWxheW91dC5jb21wb25lbnQuc2Nzc1wiLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERvY2tpbmdMYXlvdXRDb21wb25lbnQgZXh0ZW5kcyBEZXN0cnVjdGlibGUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICAgIHJlYWRvbmx5ICNlbCA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50PilcblxuICAgIEBJbnB1dCgpIGNvbnRlbnRPbmx5ID0gZmFsc2VcbiAgICBASW5wdXQoKSBwb3NpdGlvbk1vZGU6IERvY2tpbmdQb3NpdGlvbk1vZGUgPSBcImFic29sdXRlXCJcblxuICAgIEBDb250ZW50Q2hpbGQoRG9ja2luZ0NvbnRlbnRDb21wb25lbnQpIGNvbnRlbnRDb21wb25lbnQ/OiBEb2NraW5nQ29udGVudENvbXBvbmVudFxuICAgIEBDb250ZW50Q2hpbGRyZW4oRG9ja2luZ1BhbmVsQ29tcG9uZW50KSBkb2NraW5nUGFuZWxzITogUXVlcnlMaXN0PERvY2tpbmdQYW5lbENvbXBvbmVudD5cblxuICAgIC8vIHJlYWRvbmx5IHBhbmVscyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGFuZWxSZWZbXT4oW10pXG4gICAgcmVhZG9ubHkgcGFuZWxzITogT2JzZXJ2YWJsZTxBcnJheTxEb2NraW5nUGFuZWxDb21wb25lbnQ+PlxuXG4gICAgI3JlZmxvdyA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXG4gICAgICAgICh0aGlzIGFzIHsgcGFuZWxzOiBPYnNlcnZhYmxlPEFycmF5PERvY2tpbmdQYW5lbENvbXBvbmVudD4+IH0pLnBhbmVscyA9IHRoaXMuZG9ja2luZ1BhbmVscy5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5kb2NraW5nUGFuZWxzLnRvQXJyYXkoKSksXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICApXG5cbiAgICAgICAgLy8gdGhpcy5wYW5lbHMuc3Vic2NyaWJlKHBhbmVscyA9PiBjb25zb2xlLmxvZyh7IHBhbmVscyB9KSlcblxuICAgICAgICB0aGlzLmRcbiAgICAgICAgICAgIC5zdWIoY29tYmluZUxhdGVzdCh7IHBhbmVsczogdGhpcy5wYW5lbHMsIHJlZmxvdzogdGhpcy4jcmVmbG93LnBpcGUoc3RhcnRXaXRoKG51bGwpKSB9KSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoeyBwYW5lbHMgfSkgPT5cbiAgICAgICAgICAgICAgICAgICAgY29tYmluZUxhdGVzdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVscy5tYXAocGFuZWwgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5lbC5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcChjaGFuZ2VzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHBhbmVsLCBjaGFuZ2VzIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHRoaXMuI2xheW91dC5iaW5kKHRoaXMpKVxuXG4gICAgICAgIC8vIHRoaXMuZFxuICAgICAgICAvLyAgICAgLnN1YihtZXJnZSh0aGlzLmRvY2tpbmdQYW5lbHMuY2hhbmdlcywgdGhpcy4jcmVmbG93KSlcbiAgICAgICAgLy8gICAgIC5waXBlKFxuICAgICAgICAvLyAgICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgLy8gICAgICAgICBtYXAoKCkgPT4gdGhpcy5kb2NraW5nUGFuZWxzLm1hcChwYW5lbCA9PiBuZXcgUGFuZWxSZWYocGFuZWwpKSksXG4gICAgICAgIC8vICAgICAgICAgc3dpdGNoTWFwKHJlZnMgPT4gY29tYmluZUxhdGVzdChyZWZzLm1hcChyZWYgPT4gcmVmLmNoYW5nZXMpKSksXG4gICAgICAgIC8vICAgICAgICAgbWFwKGNoYW5nZXMgPT4ge1xuICAgICAgICAvLyAgICAgICAgICAgICB0aGlzLiNsYXlvdXQoY2hhbmdlcylcbiAgICAgICAgLy8gICAgICAgICAgICAgcmV0dXJuIGNoYW5nZXMubWFwKGMgPT4gYy5yZWYpXG4gICAgICAgIC8vICAgICAgICAgfSlcbiAgICAgICAgLy8gICAgIClcbiAgICAgICAgLy8gICAgIC5zdWJzY3JpYmUodGhpcy5wYW5lbHMpXG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoXCJjb250ZW50T25seVwiIGluIGNoYW5nZXMgfHwgXCJwb3NpdGlvbk1vZGVcIiBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLiNyZWZsb3cubmV4dCgpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjbGF5b3V0KGVudHJpZXM6IFBhbmVsc0NoYW5nZXMpIHtcbiAgICAgICAgbGV0IHBhZGRpbmdUb3AgPSAwXG4gICAgICAgIGxldCBwYWRkaW5nUmlnaHQgPSAwXG4gICAgICAgIGxldCBwYWRkaW5nQm90dG9tID0gMFxuICAgICAgICBsZXQgcGFkZGluZ0xlZnQgPSAwXG4gICAgICAgIGxldCBlbWJlZGRlZFpJbmRleCA9IEVNQkVEREVEX1pJTkRFWFxuICAgICAgICBsZXQgb3ZlcmxheVpJbmRleCA9IE9WRVJMQVlfWklOREVYXG5cbiAgICAgICAgaWYgKHRoaXMuY29udGVudE9ubHkpIHtcbiAgICAgICAgICAgIC8vIFRPRE86Li4uXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYW5lbFN0YXRlID0gZW50cnkuY2hhbmdlc1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhbmVsU2l6ZSA9XG4gICAgICAgICAgICAgICAgICAgIHBhbmVsU3RhdGUuc3RhdGUgPT09IFwiZnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHBhbmVsU3RhdGUuZnVsbFNpemUudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcGFuZWxTdGF0ZS5zdGF0ZSA9PT0gXCJtaW5pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwYW5lbFN0YXRlLm1pbmlTaXplLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogMFxuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNIb3Jpem9udGFsID0gcGFuZWxTdGF0ZS5wb3NpdGlvbi5vcmllbnQgPT09IFwiaG9yaXpvbnRhbFwiXG4gICAgICAgICAgICAgICAgY29uc3QgaXNFbWJlZGRlZCA9IHBhbmVsU3RhdGUubW9kZSA9PT0gXCJlbWJlZGRlZFwiXG5cbiAgICAgICAgICAgICAgICBsZXQgcGFuZWxUb3AgPSBudWxsXG4gICAgICAgICAgICAgICAgbGV0IHBhbmVsUmlnaHQgPSBudWxsXG4gICAgICAgICAgICAgICAgbGV0IHBhbmVsQm90dG9tID0gbnVsbFxuICAgICAgICAgICAgICAgIGxldCBwYW5lbExlZnQgPSBudWxsXG5cbiAgICAgICAgICAgICAgICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhbmVsTGVmdCA9IDBcbiAgICAgICAgICAgICAgICAgICAgcGFuZWxSaWdodCA9IDBcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhbmVsU3RhdGUucG9zaXRpb24uY2VsbHNbMF0udiA9PT0gXCJ0b3BcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRW1iZWRkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wID0gTWF0aC5tYXgocGFkZGluZ1RvcCwgcGFuZWxTaXplKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxUb3AgPSAwXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFuZWxTdGF0ZS5wb3NpdGlvbi5jZWxsc1swXS52ID09PSBcImJvdHRvbVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNFbWJlZGRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b20gPSBNYXRoLm1heChwYWRkaW5nQm90dG9tLCBwYW5lbFNpemUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYW5lbEJvdHRvbSA9IDBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBhbmVsVG9wID0gMFxuICAgICAgICAgICAgICAgICAgICBwYW5lbEJvdHRvbSA9IDBcblxuICAgICAgICAgICAgICAgICAgICBpZiAocGFuZWxTdGF0ZS5wb3NpdGlvbi5jZWxsc1swXS5oID09PSBcImxlZnRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRW1iZWRkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdCA9IE1hdGgubWF4KHBhZGRpbmdMZWZ0LCBwYW5lbFNpemUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYW5lbExlZnQgPSAwXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFuZWxTdGF0ZS5wb3NpdGlvbi5jZWxsc1swXS5oID09PSBcInJpZ2h0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0VtYmVkZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0ID0gTWF0aC5tYXgocGFkZGluZ1JpZ2h0LCBwYW5lbFNpemUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYW5lbFJpZ2h0ID0gMFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgcGFuZWxHaXZlblNpemUgPVxuICAgICAgICAgICAgICAgICAgICBwYW5lbFN0YXRlLnN0YXRlID09PSBcImZ1bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwYW5lbFN0YXRlLmZ1bGxTaXplXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHBhbmVsU3RhdGUuc3RhdGUgPT09IFwibWluaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gcGFuZWxTdGF0ZS5taW5pU2l6ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IG5ldyBOdW1iZXJXaXRoVW5pdCgwLCBcInB4XCIpXG5cbiAgICAgICAgICAgICAgICBGYXN0RE9NLnNldFN0eWxlKGVudHJ5LnBhbmVsLmVsLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ6LWluZGV4XCI6IGAke2lzRW1iZWRkZWQgPyBlbWJlZGRlZFpJbmRleCsrIDogb3ZlcmxheVpJbmRleCsrfWAsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLXRcIjogcGFuZWxUb3AgIT0gbnVsbCA/IGAke3BhbmVsVG9wfXB4YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLXJcIjogcGFuZWxSaWdodCAhPSBudWxsID8gYCR7cGFuZWxSaWdodH1weGAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1wYW5lbC1iXCI6IHBhbmVsQm90dG9tICE9IG51bGwgPyBgJHtwYW5lbEJvdHRvbX1weGAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1wYW5lbC1sXCI6IHBhbmVsTGVmdCAhPSBudWxsID8gYCR7cGFuZWxMZWZ0fXB4YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLXdcIjogIWlzSG9yaXpvbnRhbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBgJHtwYW5lbEdpdmVuU2l6ZS51bml0ID09PSBcImF1dG9cIiA/IFwiYXV0b1wiIDogcGFuZWxHaXZlblNpemV9YFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1wYW5lbC1oXCI6IGlzSG9yaXpvbnRhbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBgJHtwYW5lbEdpdmVuU2l6ZS51bml0ID09PSBcImF1dG9cIiA/IFwiYXV0b1wiIDogcGFuZWxHaXZlblNpemV9YFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1wYW5lbC1yZWFsLXdcIjogIWlzSG9yaXpvbnRhbCA/IGAke3BhbmVsU2l6ZX1weGAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1wYW5lbC1yZWFsLWhcIjogaXNIb3Jpem9udGFsID8gYCR7cGFuZWxTaXplfXB4YCA6IG51bGxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBGYXN0RE9NLnNldFN0eWxlKHRoaXMuI2VsLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1sYXlvdXQtdG9wXCI6IGAke3BhZGRpbmdUb3B9cHhgLFxuICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLWxheW91dC1yaWdodFwiOiBgJHtwYWRkaW5nUmlnaHR9cHhgLFxuICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLWxheW91dC1ib3R0b21cIjogYCR7cGFkZGluZ0JvdHRvbX1weGAsXG4gICAgICAgICAgICAgICAgXCItLWRvY2tpbmctbGF5b3V0LWxlZnRcIjogYCR7cGFkZGluZ0xlZnR9cHhgXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -1,14 +1,13 @@
1
1
  import { Component, ElementRef, inject, Input, Output } from "@angular/core";
2
2
  import { BehaviorSubject, combineLatest, map, of, shareReplay, switchMap } from "rxjs";
3
- import { coerceBoolAttr, Destructible, NumberWithUnit } from "@ngutil/common";
3
+ import { coerceBoolAttr, Destructible, FastDOM, NumberWithUnit } from "@ngutil/common";
4
4
  import { L9Range } from "../l9/range";
5
- import { FastDOM, watchDimension } from "../util";
5
+ import { watchDimension } from "../util";
6
6
  import * as i0 from "@angular/core";
7
7
  const DEFAULT_POSITION = L9Range.coerce("left");
8
8
  export class DockingPanelComponent extends Destructible {
9
9
  set positionInput(val) {
10
10
  const coerced = L9Range.coerce(val);
11
- console.log("SET POSITION", coerced, this.position.value.isEq(coerced));
12
11
  if (coerced.orient === "rect") {
13
12
  throw new Error(`Invalid position value: ${val}`);
14
13
  }
@@ -145,4 +144,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
145
144
  type: Input,
146
145
  args: ["minimizable"]
147
146
  }] } });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2RvY2tpbmcvZG9ja2luZy1wYW5lbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRWxHLE9BQU8sRUFBZ0IsY0FBYyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQXVCLE1BQU0sZ0JBQWdCLENBQUE7QUFFaEgsT0FBTyxFQUFFLE9BQU8sRUFBZSxNQUFNLGFBQWEsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQTs7QUFLakQsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBUy9DLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxZQUFZO0lBR25ELElBQ0ksYUFBYSxDQUFDLEdBQTBCO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFFbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBRXZFLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixHQUFHLEVBQUUsQ0FBQyxDQUFBO1FBQ3JELENBQUM7UUFFRCxJQUFJ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RkFFNUIscUJBQXFCO2tCQVBqQyxTQUFTO2lDQUNNLElBQUksWUFDTixrQkFBa0IsWUFDbEIsZ0JBQWdCLFlBRWhCLDJCQUEyQjt3REFNakMsYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyxVQUFVO2dCQWlCYixVQUFVO3NCQURiLEtBQUs7dUJBQUMsT0FBTztnQkFPTCxLQUFLO3NCQURiLE1BQU07dUJBQUMsY0FBYztnQkFJbEIsU0FBUztzQkFEWixLQUFLO3VCQUFDLE1BQU07Z0JBU1QsYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyxVQUFVO2dCQVViLGFBQWE7c0JBRGhCLEtBQUs7dUJBQUMsVUFBVTtnQkFVYixXQUFXO3NCQURkLEtBQUs7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbEF0dHIsIERlc3RydWN0aWJsZSwgTnVtYmVyV2l0aFVuaXQsIE51bWJlcldpdGhVbml0SW5wdXQgfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyBMOVJhbmdlLCBMOVJhbmdlTmFtZSB9IGZyb20gXCIuLi9sOS9yYW5nZVwiXG5pbXBvcnQgeyBGYXN0RE9NLCB3YXRjaERpbWVuc2lvbiB9IGZyb20gXCIuLi91dGlsXCJcblxuZXhwb3J0IHR5cGUgRG9ja2luZ1BhbmVsU3RhdGUgPSBcImZ1bGxcIiB8IFwibWluaVwiIHwgXCJpbnZpc2libGVcIlxuZXhwb3J0IHR5cGUgRG9ja2luZ1BhbmVsTW9kZSA9IFwib3ZlcmxheVwiIHwgXCJlbWJlZGRlZFwiXG5cbmNvbnN0IERFRkFVTFRfUE9TSVRJT04gPSBMOVJhbmdlLmNvZXJjZShcImxlZnRcIilcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogXCJudS1kb2NraW5nLXBhbmVsXCIsXG4gICAgZXhwb3J0QXM6IFwibnVEb2NraW5nUGFuZWxcIixcbiAgICBzdHlsZVVybDogXCIuL2RvY2tpbmctcGFuZWwuY29tcG9uZW50LnNjc3NcIixcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gXG59KVxuZXhwb3J0IGNsYXNzIERvY2tpbmdQYW5lbENvbXBvbmVudCBleHRlbmRzIERlc3RydWN0aWJsZSB7XG4gICAgcmVhZG9ubHkgZWwgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pXG5cbiAgICBASW5wdXQoXCJwb3NpdGlvblwiKVxuICAgIHNldCBwb3NpdGlvbklucHV0KHZhbDogTDlSYW5nZSB8IEw5UmFuZ2VOYW1lKSB7XG4gICAgICAgIGNvbnN0IGNvZXJjZWQgPSBMOVJhbmdlLmNvZXJjZSh2YWwpXG5cbiAgICAgICAgY29uc29sZS5sb2coXCJTRVQgUE9TSVRJT05cIiwgY29lcmNlZCwgdGhpcy5wb3NpdGlvbi52YWx1ZS5pc0VxKGNvZXJjZWQpKVxuXG4gICAgICAgIGlmIChjb2VyY2VkLm9yaWVudCA9PT0gXCJyZWN0XCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwb3NpdGlvbiB2YWx1ZTogJHt2YWx9YClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5wb3NpdGlvbi52YWx1ZS5pc0VxKGNvZXJjZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSBwb3NpdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TDlSYW5nZT4oREVGQVVMVF9QT1NJVElPTilcblxuICAgIEBJbnB1dChcInN0YXRlXCIpXG4gICAgc2V0IHN0YXRlSW5wdXQodmFsOiBEb2NraW5nUGFuZWxTdGF0ZSkge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS52YWx1ZSAhPT0gdmFsKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLm5leHQodmFsKVxuICAgICAgICB9XG4gICAgfVxuICAgIEBPdXRwdXQoXCJzdGF0ZUNoYW5nZXNcIilcbiAgICByZWFkb25seSBzdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9ja2luZ1BhbmVsU3RhdGU+KFwiaW52aXNpYmxlXCIpXG5cbiAgICBASW5wdXQoXCJtb2RlXCIpXG4gICAgc2V0IG1vZGVJbnB1dCh2YWw6IERvY2tpbmdQYW5lbE1vZGUpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZS52YWx1ZSAhPT0gdmFsKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGUubmV4dCh2YWwpXG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVhZG9ubHkgbW9kZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9ja2luZ1BhbmVsTW9kZT4oXCJvdmVybGF5XCIpXG5cbiAgICBASW5wdXQoXCJmdWxsU2l6ZVwiKVxuICAgIHNldCBmdWxsU2l6ZUlucHV0KHZhbDogTnVtYmVyV2l0aFVuaXRJbnB1dCkge1xuICAgICAgICBjb25zdCBjb2VyY2VkID0gTnVtYmVyV2l0aFVuaXQuY29lcmNlKHZhbCwgXCJweFwiKVxuICAgICAgICBpZiAodGhpcy4jZnVsbFNpemUudmFsdWUgIT09IGNvZXJjZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI2Z1bGxTaXplLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSAjZnVsbFNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE51bWJlcldpdGhVbml0PihOdW1iZXJXaXRoVW5pdC5jb2VyY2UoMCkpXG5cbiAgICBASW5wdXQoXCJtaW5pU2l6ZVwiKVxuICAgIHNldCBtaW5pU2l6ZUlucHV0KHZhbDogTnVtYmVyV2l0aFVuaXRJbnB1dCkge1xuICAgICAgICBjb25zdCBjb2VyY2VkID0gTnVtYmVyV2l0aFVuaXQuY29lcmNlKHZhbCwgXCJweFwiKVxuICAgICAgICBpZiAodGhpcy4jbWluaVNpemUudmFsdWUgIT09IGNvZXJjZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI21pbmlTaXplLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSAjbWluaVNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE51bWJlcldpdGhVbml0PihOdW1iZXJXaXRoVW5pdC5jb2VyY2UoMCkpXG5cbiAgICBASW5wdXQoXCJtaW5pbWl6YWJsZVwiKVxuICAgIHNldCBtaW5pbWl6YWJsZSh2YWw6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLiNtaW5pbWl6YWJsZSA9IGNvZXJjZUJvb2xBdHRyKHZhbClcbiAgICAgICAgdGhpcy4jbWluaW1pemFibGVBdXRvID0gZmFsc2VcbiAgICB9XG4gICAgZ2V0IG1pbmltaXphYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy4jbWluaW1pemFibGVcbiAgICB9XG4gICAgI21pbmltaXphYmxlOiBib29sZWFuID0gZmFsc2VcbiAgICAjbWluaW1pemFibGVBdXRvOiBib29sZWFuID0gdHJ1ZVxuXG4gICAgcmVhZG9ubHkgI2F1dG9TaXplID0gY29tYmluZUxhdGVzdCh7XG4gICAgICAgIGRpbTogd2F0Y2hEaW1lbnNpb24odGhpcy5lbC5uYXRpdmVFbGVtZW50LCBcInNjcm9sbC1ib3hcIiksXG4gICAgICAgIHBvczogdGhpcy5wb3NpdGlvblxuICAgIH0pLnBpcGUoXG4gICAgICAgIG1hcCgoeyBkaW0sIHBvcyB9KSA9PiB7XG4gICAgICAgICAgICBpZiAocG9zLm9yaWVudCA9PT0gXCJob3Jpem9udGFsXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGltLmhlaWdodFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGltLndpZHRoXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IGZ1bGxTaXplID0gdGhpcy4jZnVsbFNpemUucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHNpemUgPT4ge1xuICAgICAgICAgICAgaWYgKHNpemUudW5pdCA9PT0gXCJhdXRvXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jYXV0b1NpemVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHNpemUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IG1pbmlTaXplID0gdGhpcy4jbWluaVNpemUucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHNpemUgPT4ge1xuICAgICAgICAgICAgaWYgKHNpemUudW5pdCA9PT0gXCJhdXRvXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jYXV0b1NpemVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHNpemUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IGNoYW5nZXMgPSBjb21iaW5lTGF0ZXN0KHtcbiAgICAgICAgcG9zaXRpb246IHRoaXMucG9zaXRpb24sXG4gICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICAgIGZ1bGxTaXplOiB0aGlzLmZ1bGxTaXplLFxuICAgICAgICBtaW5pU2l6ZTogdGhpcy5taW5pU2l6ZVxuICAgIH0pXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKVxuXG4gICAgICAgIHRoaXMuZC5zdWIodGhpcy5jaGFuZ2VzKS5zdWJzY3JpYmUoY2hhbmdlcyA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy4jbWluaW1pemFibGVBdXRvKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jbWluaW1pemFibGUgPSB0aGlzLiNtaW5pU2l6ZS52YWx1ZS52YWx1ZSAhPT0gMFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBGYXN0RE9NLnNldEF0dHJpYnV0ZXModGhpcy5lbC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgc3RhdGU6IGNoYW5nZXMuc3RhdGUsXG4gICAgICAgICAgICAgICAgb3JpZW50OiBjaGFuZ2VzLnBvc2l0aW9uLm9yaWVudCxcbiAgICAgICAgICAgICAgICBtb2RlOiBjaGFuZ2VzLm1vZGUsXG4gICAgICAgICAgICAgICAgc2lkZTpcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlcy5wb3NpdGlvbi5vcmllbnQgPT09IFwiaG9yaXpvbnRhbFwiID8gY2hhbmdlcy5wb3NpdGlvbi5jZWxsc1swXS52IDogY2hhbmdlcy5wb3NpdGlvbi5jZWxsc1swXS5oXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIG9wZW4oKSB7XG4gICAgICAgIHRoaXMuc3RhdGUubmV4dChcImZ1bGxcIilcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5uZXh0KFwiaW52aXNpYmxlXCIpXG4gICAgfVxuXG4gICAgbWluaW1pemUoKSB7XG4gICAgICAgIGlmICh0aGlzLm1pbmltaXphYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLm5leHQoXCJtaW5pXCIpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbnR5cGUgQ2hhbmdlc09ic2VydmFibGUgPSB0eXBlb2YgRG9ja2luZ1BhbmVsQ29tcG9uZW50LnByb3RvdHlwZS5jaGFuZ2VzXG5leHBvcnQgdHlwZSBEb2NraW5nUGFuZWxDaGFuZ2VzID0gQ2hhbmdlc09ic2VydmFibGUgZXh0ZW5kcyBPYnNlcnZhYmxlPGluZmVyIFQ+ID8gVCA6IG5ldmVyXG4iXX0=
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2RvY2tpbmcvZG9ja2luZy1wYW5lbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRWxHLE9BQU8sRUFFSCxjQUFjLEVBQ2QsWUFBWSxFQUNaLE9BQU8sRUFDUCxjQUFjLEVBRWpCLE1BQU0sZ0JBQWdCLENBQUE7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBZSxNQUFNLGFBQWEsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFBOztBQUt4QyxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7QUFTL0MsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFlBQVk7SUFHbkQsSUFDSSxhQUFhLENBQUMsR0FBMEI7UUFDeEMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNuQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsR0FBRyxFQUFFLENBQUMsQ0FBQTtRQUNyRCxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8s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O2dCQWNiLFVBQVU7c0JBRGIsS0FBSzt1QkFBQyxPQUFPO2dCQU9MLEtBQUs7c0JBRGIsTUFBTTt1QkFBQyxjQUFjO2dCQUlsQixTQUFTO3NCQURaLEtBQUs7dUJBQUMsTUFBTTtnQkFTVCxhQUFhO3NCQURoQixLQUFLO3VCQUFDLFVBQVU7Z0JBVWIsYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyxVQUFVO2dCQVViLFdBQVc7c0JBRGQsS0FBSzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbmplY3QsIElucHV0LCBPdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHtcbiAgICBCb29sZWFuSW5wdXQsXG4gICAgY29lcmNlQm9vbEF0dHIsXG4gICAgRGVzdHJ1Y3RpYmxlLFxuICAgIEZhc3RET00sXG4gICAgTnVtYmVyV2l0aFVuaXQsXG4gICAgTnVtYmVyV2l0aFVuaXRJbnB1dFxufSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyBMOVJhbmdlLCBMOVJhbmdlTmFtZSB9IGZyb20gXCIuLi9sOS9yYW5nZVwiXG5pbXBvcnQgeyB3YXRjaERpbWVuc2lvbiB9IGZyb20gXCIuLi91dGlsXCJcblxuZXhwb3J0IHR5cGUgRG9ja2luZ1BhbmVsU3RhdGUgPSBcImZ1bGxcIiB8IFwibWluaVwiIHwgXCJpbnZpc2libGVcIlxuZXhwb3J0IHR5cGUgRG9ja2luZ1BhbmVsTW9kZSA9IFwib3ZlcmxheVwiIHwgXCJlbWJlZGRlZFwiXG5cbmNvbnN0IERFRkFVTFRfUE9TSVRJT04gPSBMOVJhbmdlLmNvZXJjZShcImxlZnRcIilcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogXCJudS1kb2NraW5nLXBhbmVsXCIsXG4gICAgZXhwb3J0QXM6IFwibnVEb2NraW5nUGFuZWxcIixcbiAgICBzdHlsZVVybDogXCIuL2RvY2tpbmctcGFuZWwuY29tcG9uZW50LnNjc3NcIixcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gXG59KVxuZXhwb3J0IGNsYXNzIERvY2tpbmdQYW5lbENvbXBvbmVudCBleHRlbmRzIERlc3RydWN0aWJsZSB7XG4gICAgcmVhZG9ubHkgZWwgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pXG5cbiAgICBASW5wdXQoXCJwb3NpdGlvblwiKVxuICAgIHNldCBwb3NpdGlvbklucHV0KHZhbDogTDlSYW5nZSB8IEw5UmFuZ2VOYW1lKSB7XG4gICAgICAgIGNvbnN0IGNvZXJjZWQgPSBMOVJhbmdlLmNvZXJjZSh2YWwpXG4gICAgICAgIGlmIChjb2VyY2VkLm9yaWVudCA9PT0gXCJyZWN0XCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwb3NpdGlvbiB2YWx1ZTogJHt2YWx9YClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5wb3NpdGlvbi52YWx1ZS5pc0VxKGNvZXJjZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSBwb3NpdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TDlSYW5nZT4oREVGQVVMVF9QT1NJVElPTilcblxuICAgIEBJbnB1dChcInN0YXRlXCIpXG4gICAgc2V0IHN0YXRlSW5wdXQodmFsOiBEb2NraW5nUGFuZWxTdGF0ZSkge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS52YWx1ZSAhPT0gdmFsKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLm5leHQodmFsKVxuICAgICAgICB9XG4gICAgfVxuICAgIEBPdXRwdXQoXCJzdGF0ZUNoYW5nZXNcIilcbiAgICByZWFkb25seSBzdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9ja2luZ1BhbmVsU3RhdGU+KFwiaW52aXNpYmxlXCIpXG5cbiAgICBASW5wdXQoXCJtb2RlXCIpXG4gICAgc2V0IG1vZGVJbnB1dCh2YWw6IERvY2tpbmdQYW5lbE1vZGUpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZS52YWx1ZSAhPT0gdmFsKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGUubmV4dCh2YWwpXG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVhZG9ubHkgbW9kZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9ja2luZ1BhbmVsTW9kZT4oXCJvdmVybGF5XCIpXG5cbiAgICBASW5wdXQoXCJmdWxsU2l6ZVwiKVxuICAgIHNldCBmdWxsU2l6ZUlucHV0KHZhbDogTnVtYmVyV2l0aFVuaXRJbnB1dCkge1xuICAgICAgICBjb25zdCBjb2VyY2VkID0gTnVtYmVyV2l0aFVuaXQuY29lcmNlKHZhbCwgXCJweFwiKVxuICAgICAgICBpZiAodGhpcy4jZnVsbFNpemUudmFsdWUgIT09IGNvZXJjZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI2Z1bGxTaXplLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSAjZnVsbFNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE51bWJlcldpdGhVbml0PihOdW1iZXJXaXRoVW5pdC5jb2VyY2UoMCkpXG5cbiAgICBASW5wdXQoXCJtaW5pU2l6ZVwiKVxuICAgIHNldCBtaW5pU2l6ZUlucHV0KHZhbDogTnVtYmVyV2l0aFVuaXRJbnB1dCkge1xuICAgICAgICBjb25zdCBjb2VyY2VkID0gTnVtYmVyV2l0aFVuaXQuY29lcmNlKHZhbCwgXCJweFwiKVxuICAgICAgICBpZiAodGhpcy4jbWluaVNpemUudmFsdWUgIT09IGNvZXJjZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI21pbmlTaXplLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSAjbWluaVNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE51bWJlcldpdGhVbml0PihOdW1iZXJXaXRoVW5pdC5jb2VyY2UoMCkpXG5cbiAgICBASW5wdXQoXCJtaW5pbWl6YWJsZVwiKVxuICAgIHNldCBtaW5pbWl6YWJsZSh2YWw6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLiNtaW5pbWl6YWJsZSA9IGNvZXJjZUJvb2xBdHRyKHZhbClcbiAgICAgICAgdGhpcy4jbWluaW1pemFibGVBdXRvID0gZmFsc2VcbiAgICB9XG4gICAgZ2V0IG1pbmltaXphYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy4jbWluaW1pemFibGVcbiAgICB9XG4gICAgI21pbmltaXphYmxlOiBib29sZWFuID0gZmFsc2VcbiAgICAjbWluaW1pemFibGVBdXRvOiBib29sZWFuID0gdHJ1ZVxuXG4gICAgcmVhZG9ubHkgI2F1dG9TaXplID0gY29tYmluZUxhdGVzdCh7XG4gICAgICAgIGRpbTogd2F0Y2hEaW1lbnNpb24odGhpcy5lbC5uYXRpdmVFbGVtZW50LCBcInNjcm9sbC1ib3hcIiksXG4gICAgICAgIHBvczogdGhpcy5wb3NpdGlvblxuICAgIH0pLnBpcGUoXG4gICAgICAgIG1hcCgoeyBkaW0sIHBvcyB9KSA9PiB7XG4gICAgICAgICAgICBpZiAocG9zLm9yaWVudCA9PT0gXCJob3Jpem9udGFsXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGltLmhlaWdodFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGltLndpZHRoXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IGZ1bGxTaXplID0gdGhpcy4jZnVsbFNpemUucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHNpemUgPT4ge1xuICAgICAgICAgICAgaWYgKHNpemUudW5pdCA9PT0gXCJhdXRvXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jYXV0b1NpemVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHNpemUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IG1pbmlTaXplID0gdGhpcy4jbWluaVNpemUucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHNpemUgPT4ge1xuICAgICAgICAgICAgaWYgKHNpemUudW5pdCA9PT0gXCJhdXRvXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jYXV0b1NpemVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHNpemUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IGNoYW5nZXMgPSBjb21iaW5lTGF0ZXN0KHtcbiAgICAgICAgcG9zaXRpb246IHRoaXMucG9zaXRpb24sXG4gICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICAgIGZ1bGxTaXplOiB0aGlzLmZ1bGxTaXplLFxuICAgICAgICBtaW5pU2l6ZTogdGhpcy5taW5pU2l6ZVxuICAgIH0pXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKVxuXG4gICAgICAgIHRoaXMuZC5zdWIodGhpcy5jaGFuZ2VzKS5zdWJzY3JpYmUoY2hhbmdlcyA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy4jbWluaW1pemFibGVBdXRvKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jbWluaW1pemFibGUgPSB0aGlzLiNtaW5pU2l6ZS52YWx1ZS52YWx1ZSAhPT0gMFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBGYXN0RE9NLnNldEF0dHJpYnV0ZXModGhpcy5lbC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgc3RhdGU6IGNoYW5nZXMuc3RhdGUsXG4gICAgICAgICAgICAgICAgb3JpZW50OiBjaGFuZ2VzLnBvc2l0aW9uLm9yaWVudCxcbiAgICAgICAgICAgICAgICBtb2RlOiBjaGFuZ2VzLm1vZGUsXG4gICAgICAgICAgICAgICAgc2lkZTpcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlcy5wb3NpdGlvbi5vcmllbnQgPT09IFwiaG9yaXpvbnRhbFwiID8gY2hhbmdlcy5wb3NpdGlvbi5jZWxsc1swXS52IDogY2hhbmdlcy5wb3NpdGlvbi5jZWxsc1swXS5oXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIG9wZW4oKSB7XG4gICAgICAgIHRoaXMuc3RhdGUubmV4dChcImZ1bGxcIilcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5uZXh0KFwiaW52aXNpYmxlXCIpXG4gICAgfVxuXG4gICAgbWluaW1pemUoKSB7XG4gICAgICAgIGlmICh0aGlzLm1pbmltaXphYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLm5leHQoXCJtaW5pXCIpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbnR5cGUgQ2hhbmdlc09ic2VydmFibGUgPSB0eXBlb2YgRG9ja2luZ1BhbmVsQ29tcG9uZW50LnByb3RvdHlwZS5jaGFuZ2VzXG5leHBvcnQgdHlwZSBEb2NraW5nUGFuZWxDaGFuZ2VzID0gQ2hhbmdlc09ic2VydmFibGUgZXh0ZW5kcyBPYnNlcnZhYmxlPGluZmVyIFQ+ID8gVCA6IG5ldmVyXG4iXX0=
package/esm2022/index.mjs CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./util";
2
2
  export * from "./l9";
3
3
  export * from "./docking";
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsUUFBUSxDQUFBO0FBQ3RCLGNBQWMsTUFBTSxDQUFBO0FBQ3BCLGNBQWMsV0FBVyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vdXRpbFwiXG5leHBvcnQgKiBmcm9tIFwiLi9sOVwiXG5leHBvcnQgKiBmcm9tIFwiLi9kb2NraW5nXCJcbiJdfQ==
4
+ export * from "./services/slots.service";
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsUUFBUSxDQUFBO0FBQ3RCLGNBQWMsTUFBTSxDQUFBO0FBQ3BCLGNBQWMsV0FBVyxDQUFBO0FBQ3pCLGNBQWMsMEJBQTBCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi91dGlsXCJcbmV4cG9ydCAqIGZyb20gXCIuL2w5XCJcbmV4cG9ydCAqIGZyb20gXCIuL2RvY2tpbmdcIlxuZXhwb3J0ICogZnJvbSBcIi4vc2VydmljZXMvc2xvdHMuc2VydmljZVwiXG4iXX0=
@@ -0,0 +1,240 @@
1
+ import { Directive, inject, Injectable, Injector, TemplateRef, ViewContainerRef } from "@angular/core";
2
+ import { BehaviorSubject, distinctUntilChanged, finalize, map, of, scan, shareReplay, Subject, switchMap, tap } from "rxjs";
3
+ import { Destructible } from "@ngutil/common";
4
+ import * as i0 from "@angular/core";
5
+ const SLOT_REGEX = /^([^:\s]+)(?::(\d+))?(?:\s+as\s+(.*?))?$/i;
6
+ export class SlotDef {
7
+ constructor(slot, tpl) {
8
+ this.tpl = tpl;
9
+ const match = slot.match(SLOT_REGEX);
10
+ if (!match) {
11
+ console.warn(`Invalid slot definition: ${slot}`);
12
+ }
13
+ else {
14
+ this.slot = match[1];
15
+ this.order = match[2] != null ? Number(match[2]) : Infinity;
16
+ this.id = match[3];
17
+ }
18
+ }
19
+ dispose() {
20
+ this.viewRef?.destroy();
21
+ this.viewRef = undefined;
22
+ }
23
+ }
24
+ /**
25
+ * @Directive({selector: "ng-template[xyzSlot]", inputs: [{name: "slot", alias: "xyzSlot"}]})
26
+ * class XYZSlotDirective extends SlotDirective<XYZComponentSlots> { }
27
+ *
28
+ * @Directive({selector: "ng-template[xyzSlotOutlet]", inputs: [{name: "slot", alias: "xyzSlotOutlet"}]})
29
+ * class XYZSlotOutletDirective extends SlotOutletDirective<XYZComponentSlots> { }
30
+ *
31
+ *
32
+ * @Component({provides: [SlotsService]})
33
+ * class XYZComponent {
34
+ * slots: inject(SlotsService<XYZComponentSlots>)
35
+ * }
36
+ *
37
+ *
38
+ */
39
+ export class SlotsService extends Destructible {
40
+ #events = new Subject();
41
+ #entries = this.#events.pipe(scan((entries, event) => {
42
+ if (event.type === "add") {
43
+ const index = entries.findIndex(value => value === event.def);
44
+ if (index > -1) {
45
+ entries[index] = event.def;
46
+ }
47
+ else {
48
+ entries.push(event.def);
49
+ }
50
+ }
51
+ else if (event.type === "del") {
52
+ const index = entries.findIndex(value => value === event.def);
53
+ if (index > -1) {
54
+ entries.splice(index, 1);
55
+ }
56
+ }
57
+ return entries;
58
+ }, []), tap(entries => {
59
+ entries.sort((a, b) => {
60
+ if (a.slot === b.slot) {
61
+ return a.order - b.order;
62
+ }
63
+ else {
64
+ return a.slot.localeCompare(b.slot);
65
+ }
66
+ });
67
+ }), shareReplay(1));
68
+ constructor() {
69
+ super();
70
+ // XXX: need to collect entries from the beginning
71
+ this.d.sub(this.#entries).subscribe();
72
+ }
73
+ addTpl(def) {
74
+ this.#events.next({ type: "add", def });
75
+ }
76
+ delTpl(def) {
77
+ this.#events.next({ type: "del", def });
78
+ }
79
+ #watchers = {};
80
+ watch(slot) {
81
+ const existing = this.#watchers[slot];
82
+ if (existing == null) {
83
+ return (this.#watchers[slot] = this.#watch(slot));
84
+ }
85
+ else {
86
+ return existing;
87
+ }
88
+ }
89
+ #watch(slot) {
90
+ return this.#entries.pipe(map(entries => entries.filter(entry => entry.slot === slot)), distinctUntilChanged((prev, curr) => {
91
+ if (prev.length === curr.length) {
92
+ for (let i = 0; i < prev.length; i++) {
93
+ if (prev[i] !== curr[i]) {
94
+ return false;
95
+ }
96
+ }
97
+ return true;
98
+ }
99
+ else {
100
+ return false;
101
+ }
102
+ }), finalize(() => {
103
+ delete this.#watchers[slot];
104
+ }), shareReplay(1));
105
+ }
106
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SlotsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
107
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SlotsService }); }
108
+ }
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SlotsService, decorators: [{
110
+ type: Injectable
111
+ }], ctorParameters: () => [] });
112
+ export class SlotDirective {
113
+ constructor() {
114
+ this.tpl = inject((TemplateRef));
115
+ }
116
+ set slot(slot) {
117
+ if (this.#slot !== slot) {
118
+ this.#slot = slot;
119
+ if (this.#slotDef) {
120
+ this.slotSvc.delTpl(this.#slotDef);
121
+ }
122
+ this.#slotDef = new SlotDef(slot, this.tpl);
123
+ this.slotSvc.addTpl(this.#slotDef);
124
+ }
125
+ }
126
+ get slot() {
127
+ return this.#slot;
128
+ }
129
+ #slot;
130
+ #slotDef;
131
+ ngOnDestroy() {
132
+ if (this.#slotDef) {
133
+ this.slotSvc.delTpl(this.#slotDef);
134
+ }
135
+ }
136
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SlotDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
137
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.3", type: SlotDirective, ngImport: i0 }); }
138
+ }
139
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SlotDirective, decorators: [{
140
+ type: Directive
141
+ }] });
142
+ export class SlotOutletDirective extends Destructible {
143
+ set slot(slot) {
144
+ if (this.#slot.value !== slot) {
145
+ this.#slot.next(slot);
146
+ }
147
+ }
148
+ get slot() {
149
+ return this.#slot.value;
150
+ }
151
+ #slot;
152
+ #watch;
153
+ #views;
154
+ constructor() {
155
+ super();
156
+ this.vcr = inject(ViewContainerRef);
157
+ this.injector = inject(Injector);
158
+ this.#slot = new BehaviorSubject(null);
159
+ this.#watch = this.#slot.pipe(switchMap(slot => {
160
+ if (slot) {
161
+ return this.slotSvc.watch(slot);
162
+ }
163
+ else {
164
+ return of([]);
165
+ }
166
+ }));
167
+ this.#views = [];
168
+ this.#onEntriesChanged = (entries) => {
169
+ const { remove, undecided } = this.#determineActions(entries);
170
+ for (const r of remove) {
171
+ r.dispose();
172
+ const idx = this.#views.indexOf(r);
173
+ if (idx >= 0) {
174
+ this.#views.splice(idx, 1);
175
+ }
176
+ }
177
+ this.#views.length = 0;
178
+ for (const [pos, entry] of undecided.entries()) {
179
+ if (entry.viewRef && !entry.viewRef.destroyed) {
180
+ const currentPos = this.vcr.indexOf(entry.viewRef);
181
+ if (currentPos !== pos) {
182
+ this.vcr.insert(entry.viewRef, pos);
183
+ }
184
+ }
185
+ else {
186
+ ;
187
+ entry.viewRef = this.vcr.createEmbeddedView(entry.tpl, null, {
188
+ index: pos,
189
+ injector: this.injector
190
+ });
191
+ entry.viewRef.markForCheck();
192
+ }
193
+ this.#views.push(entry);
194
+ }
195
+ };
196
+ this.d.any(this.#clearViews.bind(this));
197
+ }
198
+ ngOnInit() {
199
+ this.d.sub(this.#watch).subscribe(this.#onEntriesChanged);
200
+ }
201
+ #onEntriesChanged;
202
+ #determineActions(entries) {
203
+ const byId = {};
204
+ let remove = [];
205
+ const undecided = [];
206
+ for (const entry of entries) {
207
+ if (entry.id != null) {
208
+ if (!byId[entry.id]) {
209
+ byId[entry.id] = [entry];
210
+ }
211
+ else {
212
+ byId[entry.id].push(entry);
213
+ }
214
+ }
215
+ else {
216
+ undecided.push(entry);
217
+ }
218
+ }
219
+ for (const values of Object.values(byId)) {
220
+ remove = remove.concat(values.slice(0, -1));
221
+ undecided.push(values[values.length - 1]);
222
+ }
223
+ for (const current of this.#views) {
224
+ if (!undecided.includes(current)) {
225
+ remove.push(current);
226
+ }
227
+ }
228
+ return { remove, undecided };
229
+ }
230
+ #clearViews() {
231
+ this.vcr.clear();
232
+ this.#views = [];
233
+ }
234
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SlotOutletDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
235
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.3", type: SlotOutletDirective, usesInheritance: true, ngImport: i0 }); }
236
+ }
237
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SlotOutletDirective, decorators: [{
238
+ type: Directive
239
+ }], ctorParameters: () => [] });
240
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvdHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xheW91dC9zcmMvc2VydmljZXMvc2xvdHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULE1BQU0sRUFDTixVQUFVLEVBQ1YsUUFBUSxFQUdSLFdBQVcsRUFDWCxnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUE7QUFFdEIsT0FBTyxFQUNILGVBQWUsRUFDZixvQkFBb0IsRUFDcEIsUUFBUSxFQUNSLEdBQUcsRUFFSCxFQUFFLEVBQ0YsSUFBSSxFQUNKLFdBQVcsRUFDWCxPQUFPLEVBQ1AsU0FBUyxFQUNULEdBQUcsRUFDTixNQUFNLE1BQU0sQ0FBQTtBQUViLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQTs7QUFRMUQsTUFBTSxVQUFVLEdBQUcsMkNBQTJDLENBQUE7QUFFOUQsTUFBTSxPQUFPLE9BQU87SUFNaEIsWUFDSSxJQUFhLEVBQ0csR0FBWTtRQUFaLFFBQUcsR0FBSCxHQUFHLENBQVM7UUFFNUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUNwQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLDRCQUE0QixJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ3BELENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFRLENBQUE7WUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQTtZQUMzRCxJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUss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QVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ3hCLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUE7SUFDcEIsQ0FBQzs4R0FuR2lCLG1CQUFtQjtrR0FBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUR4QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRW1iZWRkZWRWaWV3UmVmLFxuICAgIGluamVjdCxcbiAgICBJbmplY3RhYmxlLFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7XG4gICAgQmVoYXZpb3JTdWJqZWN0LFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICAgIGZpbmFsaXplLFxuICAgIG1hcCxcbiAgICBPYnNlcnZhYmxlLFxuICAgIG9mLFxuICAgIHNjYW4sXG4gICAgc2hhcmVSZXBsYXksXG4gICAgU3ViamVjdCxcbiAgICBzd2l0Y2hNYXAsXG4gICAgdGFwXG59IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgRGVzdHJ1Y3RpYmxlLCBJRGlzcG9zYWJsZSB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbnR5cGUgU2xvdE9yZGVyID0gYDoke251bWJlcn1gXG50eXBlIFNsb3RJZCA9IGAgYXMgJHtzdHJpbmd9YFxuZXhwb3J0IHR5cGUgU2xvdDxUIGV4dGVuZHMgc3RyaW5nPiA9IGAke1R9JHtTbG90T3JkZXIgfCBcIlwifSR7U2xvdElkIHwgXCJcIn1gXG5leHBvcnQgdHlwZSBTbG90VHBsID0gVGVtcGxhdGVSZWY8YW55PlxuZXhwb3J0IHR5cGUgU2xvdFZpZXdSZWYgPSBFbWJlZGRlZFZpZXdSZWY8YW55PlxuXG5jb25zdCBTTE9UX1JFR0VYID0gL14oW146XFxzXSspKD86OihcXGQrKSk/KD86XFxzK2FzXFxzKyguKj8pKT8kL2lcblxuZXhwb3J0IGNsYXNzIFNsb3REZWY8VCBleHRlbmRzIHN0cmluZz4gaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gICAgcmVhZG9ubHkgc2xvdCE6IFRcbiAgICByZWFkb25seSBvcmRlciE6IG51bWJlclxuICAgIHJlYWRvbmx5IGlkPzogc3RyaW5nXG4gICAgcmVhZG9ubHkgdmlld1JlZj86IFNsb3RWaWV3UmVmXG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgc2xvdDogU2xvdDxUPixcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHRwbDogU2xvdFRwbFxuICAgICkge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHNsb3QubWF0Y2goU0xPVF9SRUdFWClcbiAgICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBJbnZhbGlkIHNsb3QgZGVmaW5pdGlvbjogJHtzbG90fWApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNsb3QgPSBtYXRjaFsxXSBhcyBhbnlcbiAgICAgICAgICAgIHRoaXMub3JkZXIgPSBtYXRjaFsyXSAhPSBudWxsID8gTnVtYmVyKG1hdGNoWzJdKSA6IEluZmluaXR5XG4gICAgICAgICAgICB0aGlzLmlkID0gbWF0Y2hbM10gYXMgc3RyaW5nXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNwb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdSZWY/LmRlc3Ryb3koKVxuICAgICAgICA7KHRoaXMgYXMgeyB2aWV3UmVmPzogU2xvdFZpZXdSZWYgfSkudmlld1JlZiA9IHVuZGVmaW5lZFxuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTbG90RXZlbnQ8VCBleHRlbmRzIHN0cmluZz4ge1xuICAgIHR5cGU6IFwiYWRkXCIgfCBcImRlbFwiXG4gICAgZGVmOiBTbG90RGVmPFQ+XG59XG5cbi8qKlxuICogQERpcmVjdGl2ZSh7c2VsZWN0b3I6IFwibmctdGVtcGxhdGVbeHl6U2xvdF1cIiwgaW5wdXRzOiBbe25hbWU6IFwic2xvdFwiLCBhbGlhczogXCJ4eXpTbG90XCJ9XX0pXG4gKiBjbGFzcyBYWVpTbG90RGlyZWN0aXZlIGV4dGVuZHMgU2xvdERpcmVjdGl2ZTxYWVpDb21wb25lbnRTbG90cz4geyB9XG4gKlxuICogQERpcmVjdGl2ZSh7c2VsZWN0b3I6IFwibmctdGVtcGxhdGVbeHl6U2xvdE91dGxldF1cIiwgaW5wdXRzOiBbe25hbWU6IFwic2xvdFwiLCBhbGlhczogXCJ4eXpTbG90T3V0bGV0XCJ9XX0pXG4gKiBjbGFzcyBYWVpTbG90T3V0bGV0RGlyZWN0aXZlIGV4dGVuZHMgU2xvdE91dGxldERpcmVjdGl2ZTxYWVpDb21wb25lbnRTbG90cz4geyB9XG4gKlxuICpcbiAqIEBDb21wb25lbnQoe3Byb3ZpZGVzOiBbU2xvdHNTZXJ2aWNlXX0pXG4gKiBjbGFzcyBYWVpDb21wb25lbnQge1xuICogICAgICBzbG90czogaW5qZWN0KFNsb3RzU2VydmljZTxYWVpDb21wb25lbnRTbG90cz4pXG4gKiB9XG4gKlxuICpcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNsb3RzU2VydmljZTxUIGV4dGVuZHMgc3RyaW5nID0gYW55PiBleHRlbmRzIERlc3RydWN0aWJsZSB7XG4gICAgI2V2ZW50cyA9IG5ldyBTdWJqZWN0PFNsb3RFdmVudDxUPj4oKVxuXG4gICAgI2VudHJpZXMgPSB0aGlzLiNldmVudHMucGlwZShcbiAgICAgICAgc2NhbigoZW50cmllcywgZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSBcImFkZFwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBlbnRyaWVzLmZpbmRJbmRleCh2YWx1ZSA9PiB2YWx1ZSA9PT0gZXZlbnQuZGVmKVxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGVudHJpZXNbaW5kZXhdID0gZXZlbnQuZGVmXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZW50cmllcy5wdXNoKGV2ZW50LmRlZilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09IFwiZGVsXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGVudHJpZXMuZmluZEluZGV4KHZhbHVlID0+IHZhbHVlID09PSBldmVudC5kZWYpXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgZW50cmllcy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGVudHJpZXNcbiAgICAgICAgfSwgW10gYXMgU2xvdERlZjxUPltdKSxcbiAgICAgICAgdGFwKGVudHJpZXMgPT4ge1xuICAgICAgICAgICAgZW50cmllcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGEuc2xvdCA9PT0gYi5zbG90KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLm9yZGVyIC0gYi5vcmRlclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnNsb3QubG9jYWxlQ29tcGFyZShiLnNsb3QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKClcbiAgICAgICAgLy8gWFhYOiBuZWVkIHRvIGNvbGxlY3QgZW50cmllcyBmcm9tIHRoZSBiZWdpbm5pbmdcbiAgICAgICAgdGhpcy5kLnN1Yih0aGlzLiNlbnRyaWVzKS5zdWJzY3JpYmUoKVxuICAgIH1cblxuICAgIGFkZFRwbChkZWY6IFNsb3REZWY8VD4pIHtcbiAgICAgICAgdGhpcy4jZXZlbnRzLm5leHQoeyB0eXBlOiBcImFkZFwiLCBkZWYgfSlcbiAgICB9XG5cbiAgICBkZWxUcGwoZGVmOiBTbG90RGVmPFQ+KSB7XG4gICAgICAgIHRoaXMuI2V2ZW50cy5uZXh0KHsgdHlwZTogXCJkZWxcIiwgZGVmIH0pXG4gICAgfVxuXG4gICAgI3dhdGNoZXJzOiB7IFtrZXkgaW4gVF06IE9ic2VydmFibGU8QXJyYXk8U2xvdERlZjxUPj4+IH0gPSB7fSBhcyBhbnlcblxuICAgIHdhdGNoKHNsb3Q6IFQpIHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLiN3YXRjaGVyc1tzbG90XVxuICAgICAgICBpZiAoZXhpc3RpbmcgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuICh0aGlzLiN3YXRjaGVyc1tzbG90XSA9IHRoaXMuI3dhdGNoKHNsb3QpKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjd2F0Y2goc2xvdDogVCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jZW50cmllcy5waXBlKFxuICAgICAgICAgICAgbWFwKGVudHJpZXMgPT4gZW50cmllcy5maWx0ZXIoZW50cnkgPT4gZW50cnkuc2xvdCA9PT0gc2xvdCkpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocHJldi5sZW5ndGggPT09IGN1cnIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJldi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZbaV0gIT09IGN1cnJbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLiN3YXRjaGVyc1tzbG90XVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICApXG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTbG90RGlyZWN0aXZlPFQgZXh0ZW5kcyBzdHJpbmcsIEMgPSBhbnk+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVhZG9ubHkgc2xvdFN2YzogU2xvdHNTZXJ2aWNlPFQ+XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRwbCA9IGluamVjdChUZW1wbGF0ZVJlZjxDPilcblxuICAgIHNldCBzbG90KHNsb3Q6IFNsb3Q8VD4pIHtcbiAgICAgICAgaWYgKHRoaXMuI3Nsb3QgIT09IHNsb3QpIHtcbiAgICAgICAgICAgIHRoaXMuI3Nsb3QgPSBzbG90XG5cbiAgICAgICAgICAgIGlmICh0aGlzLiNzbG90RGVmKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zbG90U3ZjLmRlbFRwbCh0aGlzLiNzbG90RGVmKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLiNzbG90RGVmID0gbmV3IFNsb3REZWY8VD4oc2xvdCwgdGhpcy50cGwpXG4gICAgICAgICAgICB0aGlzLnNsb3RTdmMuYWRkVHBsKHRoaXMuI3Nsb3REZWYpXG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IHNsb3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNzbG90XG4gICAgfVxuICAgICNzbG90ITogU2xvdDxUPlxuICAgICNzbG90RGVmPzogU2xvdERlZjxUPlxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLiNzbG90RGVmKSB7XG4gICAgICAgICAgICB0aGlzLnNsb3RTdmMuZGVsVHBsKHRoaXMuI3Nsb3REZWYpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNsb3RPdXRsZXREaXJlY3RpdmU8VCBleHRlbmRzIHN0cmluZz4gZXh0ZW5kcyBEZXN0cnVjdGlibGUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBzbG90U3ZjOiBTbG90c1NlcnZpY2U8VD5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmNyOiBWaWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvciA9IGluamVjdChJbmplY3RvcilcblxuICAgIHNldCBzbG90KHNsb3Q6IFQgfCBudWxsKSB7XG4gICAgICAgIGlmICh0aGlzLiNzbG90LnZhbHVlICE9PSBzbG90KSB7XG4gICAgICAgICAgICB0aGlzLiNzbG90Lm5leHQoc2xvdClcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgc2xvdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3Nsb3QudmFsdWVcbiAgICB9XG4gICAgI3Nsb3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFQgfCBudWxsPihudWxsKVxuXG4gICAgI3dhdGNoID0gdGhpcy4jc2xvdC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoc2xvdCA9PiB7XG4gICAgICAgICAgICBpZiAoc2xvdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNsb3RTdmMud2F0Y2goc2xvdClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKFtdKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIClcblxuICAgICN2aWV3czogQXJyYXk8U2xvdERlZjxhbnk+PiA9IFtdXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICB0aGlzLmQuYW55KHRoaXMuI2NsZWFyVmlld3MuYmluZCh0aGlzKSlcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kLnN1Yih0aGlzLiN3YXRjaCkuc3Vic2NyaWJlKHRoaXMuI29uRW50cmllc0NoYW5nZWQpXG4gICAgfVxuXG4gICAgI29uRW50cmllc0NoYW5nZWQgPSAoZW50cmllczogQXJyYXk8U2xvdERlZjxUPj4pID0+IHtcbiAgICAgICAgY29uc3QgeyByZW1vdmUsIHVuZGVjaWRlZCB9ID0gdGhpcy4jZGV0ZXJtaW5lQWN0aW9ucyhlbnRyaWVzKVxuXG4gICAgICAgIGZvciAoY29uc3QgciBvZiByZW1vdmUpIHtcbiAgICAgICAgICAgIHIuZGlzcG9zZSgpXG4gICAgICAgICAgICBjb25zdCBpZHggPSB0aGlzLiN2aWV3cy5pbmRleE9mKHIpXG4gICAgICAgICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLiN2aWV3cy5zcGxpY2UoaWR4LCAxKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy4jdmlld3MubGVuZ3RoID0gMFxuICAgICAgICBmb3IgKGNvbnN0IFtwb3MsIGVudHJ5XSBvZiB1bmRlY2lkZWQuZW50cmllcygpKSB7XG4gICAgICAgICAgICBpZiAoZW50cnkudmlld1JlZiAmJiAhZW50cnkudmlld1JlZi5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50UG9zID0gdGhpcy52Y3IuaW5kZXhPZihlbnRyeS52aWV3UmVmKVxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UG9zICE9PSBwb3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52Y3IuaW5zZXJ0KGVudHJ5LnZpZXdSZWYsIHBvcylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIDsoZW50cnkgYXMgeyB2aWV3UmVmOiBTbG90Vmlld1JlZiB9KS52aWV3UmVmID0gdGhpcy52Y3IuY3JlYXRlRW1iZWRkZWRWaWV3KGVudHJ5LnRwbCwgbnVsbCwge1xuICAgICAgICAgICAgICAgICAgICBpbmRleDogcG9zLFxuICAgICAgICAgICAgICAgICAgICBpbmplY3RvcjogdGhpcy5pbmplY3RvclxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgZW50cnkudmlld1JlZiEubWFya0ZvckNoZWNrKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuI3ZpZXdzLnB1c2goZW50cnkpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjZGV0ZXJtaW5lQWN0aW9ucyhlbnRyaWVzOiBBcnJheTxTbG90RGVmPFQ+Pikge1xuICAgICAgICBjb25zdCBieUlkOiB7IFtrZXk6IHN0cmluZ106IEFycmF5PFNsb3REZWY8VD4+IH0gPSB7fVxuICAgICAgICBsZXQgcmVtb3ZlOiBBcnJheTxTbG90RGVmPFQ+PiA9IFtdXG4gICAgICAgIGNvbnN0IHVuZGVjaWRlZDogQXJyYXk8U2xvdERlZjxUPj4gPSBbXVxuXG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgaWYgKGVudHJ5LmlkICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWJ5SWRbZW50cnkuaWRdKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ5SWRbZW50cnkuaWRdID0gW2VudHJ5XVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJ5SWRbZW50cnkuaWRdLnB1c2goZW50cnkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB1bmRlY2lkZWQucHVzaChlbnRyeSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgdmFsdWVzIG9mIE9iamVjdC52YWx1ZXMoYnlJZCkpIHtcbiAgICAgICAgICAgIHJlbW92ZSA9IHJlbW92ZS5jb25jYXQodmFsdWVzLnNsaWNlKDAsIC0xKSlcbiAgICAgICAgICAgIHVuZGVjaWRlZC5wdXNoKHZhbHVlc1t2YWx1ZXMubGVuZ3RoIC0gMV0pXG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGN1cnJlbnQgb2YgdGhpcy4jdmlld3MpIHtcbiAgICAgICAgICAgIGlmICghdW5kZWNpZGVkLmluY2x1ZGVzKGN1cnJlbnQpKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlLnB1c2goY3VycmVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IHJlbW92ZSwgdW5kZWNpZGVkIH1cbiAgICB9XG5cbiAgICAjY2xlYXJWaWV3cygpIHtcbiAgICAgICAgdGhpcy52Y3IuY2xlYXIoKVxuICAgICAgICB0aGlzLiN2aWV3cyA9IFtdXG4gICAgfVxufVxuIl19