ng-virtual-list 17.12.4 → 17.12.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/ng-list-item/const/index.mjs +2 -1
- package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.mjs +2 -5
- package/esm2022/lib/components/ng-prerender-container/core/prerender-track-box.mjs +4 -2
- package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar.component.mjs +6 -16
- package/esm2022/lib/components/ng-scroll-view/base/base-scroll-view.component.mjs +17 -3
- package/esm2022/lib/components/ng-scroll-view/ng-scroll-view.component.mjs +20 -10
- package/esm2022/lib/components/ng-scroller/ng-scroller.component.mjs +8 -12
- package/esm2022/lib/core/interfaces/metrics.mjs +1 -1
- package/esm2022/lib/core/interfaces/recalculate-metrics-options.mjs +1 -1
- package/esm2022/lib/core/track-box.mjs +17 -9
- package/esm2022/lib/directives/locale-sensitive/locale-sensitive.directive.mjs +7 -7
- package/esm2022/lib/models/render-item-config.model.mjs +1 -1
- package/esm2022/lib/models/render-item-measures.model.mjs +1 -1
- package/esm2022/lib/ng-virtual-list.component.mjs +91 -87
- package/esm2022/lib/utils/animator/animator.mjs +12 -6
- package/esm2022/lib/utils/animator/interfaces/animator-params.mjs +1 -1
- package/esm2022/lib/utils/animator/interfaces/animator-update-data.mjs +1 -1
- package/esm2022/lib/utils/animator/types/easing.mjs +1 -1
- package/esm2022/lib/utils/event-emitter/event-emitter.mjs +2 -2
- package/esm2022/lib/utils/event-emitter/interfaces/event-emitter.mjs +1 -1
- package/fesm2022/ng-virtual-list.mjs +177 -147
- package/fesm2022/ng-virtual-list.mjs.map +1 -1
- package/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.d.ts +1 -4
- package/lib/components/ng-prerender-container/core/prerender-track-box.d.ts +1 -1
- package/lib/components/ng-scroll-bar/ng-scroll-bar.component.d.ts +2 -7
- package/lib/components/ng-scroll-view/base/base-scroll-view.component.d.ts +8 -2
- package/lib/components/ng-scroll-view/ng-scroll-view.component.d.ts +5 -1
- package/lib/components/ng-scroller/ng-scroller.component.d.ts +2 -4
- package/lib/core/interfaces/metrics.d.ts +3 -1
- package/lib/core/interfaces/recalculate-metrics-options.d.ts +1 -0
- package/lib/core/track-box.d.ts +1 -1
- package/lib/directives/locale-sensitive/locale-sensitive.directive.d.ts +3 -3
- package/lib/models/render-item-config.model.d.ts +5 -1
- package/lib/models/render-item-measures.model.d.ts +5 -1
- package/lib/ng-virtual-list.component.d.ts +2 -3
- package/lib/utils/animator/animator.d.ts +1 -1
- package/lib/utils/animator/interfaces/animator-params.d.ts +1 -1
- package/lib/utils/animator/interfaces/animator-update-data.d.ts +1 -1
- package/lib/utils/animator/types/easing.d.ts +1 -1
- package/lib/utils/event-emitter/event-emitter.d.ts +1 -1
- package/lib/utils/event-emitter/interfaces/event-emitter.d.ts +1 -1
- package/package.json +1 -1
|
@@ -3,7 +3,6 @@ import { BehaviorSubject, combineLatest, debounceTime, distinctUntilChanged, fil
|
|
|
3
3
|
import { ScrollBox } from './utils';
|
|
4
4
|
import { NgScrollBarComponent } from "../ng-scroll-bar/ng-scroll-bar.component";
|
|
5
5
|
import { BEHAVIOR_INSTANT, DEFAULT_MAX_MOTION_BLUR, DEFAULT_MOTION_BLUR, DEFAULT_MOTION_BLUR_ENABLED, DEFAULT_OVERLAPPING_SCROLLBAR, DEFAULT_SCROLLBAR_ENABLED, DEFAULT_SCROLLBAR_INTERACTIVE, DEFAULT_SCROLLBAR_MIN_SIZE, DEFAULT_SCROLLBAR_THICKNESS, LEFT_PROP_NAME, PX, SCROLLER_SCROLL, TOP_PROP_NAME, } from '../../const';
|
|
6
|
-
import { TextDirections } from '../../enums';
|
|
7
6
|
import { NgScrollView, SCROLL_VIEW_INVERSION } from '../ng-scroll-view';
|
|
8
7
|
import { SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, SCROLL_VIEW_OVERSCROLL_ENABLED } from '../ng-scroll-view/const';
|
|
9
8
|
import * as i0 from "@angular/core";
|
|
@@ -17,7 +16,7 @@ export const SCROLL_EVENT = new Event(SCROLLER_SCROLL);
|
|
|
17
16
|
* The scroller for the NgVirtualList item component
|
|
18
17
|
* Maximum performance for extremely large lists.
|
|
19
18
|
* It is based on algorithms for virtualization of screen objects.
|
|
20
|
-
* @link https://github.com/DjonnyX/ng-virtual-list/blob/
|
|
19
|
+
* @link https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/components/ng-scroller/ng-scroller.component.ts
|
|
21
20
|
* @author Evgenii Alexandrovich Grebennikov
|
|
22
21
|
* @email djonnyx@gmail.com
|
|
23
22
|
*/
|
|
@@ -155,8 +154,6 @@ export class NgScrollerComponent extends NgScrollView {
|
|
|
155
154
|
$show = this._$show.asObservable();
|
|
156
155
|
_$preparedSignal = new BehaviorSubject(false);
|
|
157
156
|
$preparedSignal = this._$preparedSignal.asObservable();
|
|
158
|
-
_$langTextDir = new BehaviorSubject(TextDirections.LTR);
|
|
159
|
-
$langTextDir = this._$langTextDir.asObservable();
|
|
160
157
|
_$listStyles = new BehaviorSubject({ perspectiveOrigin: 'center' });
|
|
161
158
|
$listStyles = this._$listStyles.asObservable();
|
|
162
159
|
_scrollBox = new ScrollBox();
|
|
@@ -244,9 +241,6 @@ export class NgScrollerComponent extends NgScrollView {
|
|
|
244
241
|
}), debounceTime(50), tap(([, , filter, ,]) => {
|
|
245
242
|
filter.nativeElement.setStdDeviation(0, 0);
|
|
246
243
|
})).subscribe();
|
|
247
|
-
this._service.$langTextDir.pipe(takeUntil(this._$unsubscribe), debounceTime(0), tap(v => {
|
|
248
|
-
this._$langTextDir.next(v);
|
|
249
|
-
})).subscribe();
|
|
250
244
|
const $prepare = this.$preparedSignal;
|
|
251
245
|
$prepare.pipe(takeUntil(this._$unsubscribe), filter(v => !!v), tap(() => {
|
|
252
246
|
this.updateScrollBarHandler(true, false, true);
|
|
@@ -286,9 +280,9 @@ export class NgScrollerComponent extends NgScrollView {
|
|
|
286
280
|
this._$viewInitialized.next(true);
|
|
287
281
|
}
|
|
288
282
|
recalculatePerspective() {
|
|
289
|
-
const isVertical = this._$isVertical.getValue(), scrollSize = (isVertical ? this.scrollTop : this.scrollLeft) - this._startLayoutOffset, { width, height } = this._$viewportBounds.getValue();
|
|
283
|
+
const isVertical = this._$isVertical.getValue(), inverted = this.horizontalAxisInvertion, scrollSize = (isVertical ? this.scrollTop : this.scrollLeft) - this._startLayoutOffset, maxScrollSize = isVertical ? this.scrollHeight : this.scrollWidth, { width, height } = this._$viewportBounds.getValue();
|
|
290
284
|
this._$listStyles.next({
|
|
291
|
-
perspectiveOrigin: `${isVertical ? width * .5 : (scrollSize + width * .5)}${PX} ${isVertical ? (scrollSize + height * .5) : height * .5}${PX}`
|
|
285
|
+
perspectiveOrigin: `${isVertical ? width * .5 : (inverted ? ((maxScrollSize - scrollSize) + width * .5 - this.startOffset) : (scrollSize + width * .5))}${PX} ${isVertical ? (inverted ? ((maxScrollSize - scrollSize) + height * .5) : (scrollSize + height * .5)) : height * .5}${PX}`
|
|
292
286
|
});
|
|
293
287
|
}
|
|
294
288
|
onResizeViewport() {
|
|
@@ -301,6 +295,7 @@ export class NgScrollerComponent extends NgScrollView {
|
|
|
301
295
|
this._$viewportBounds.next(bounds);
|
|
302
296
|
this.updateScrollBar();
|
|
303
297
|
this._$resizeViewport.next(bounds);
|
|
298
|
+
this.recalculatePerspective();
|
|
304
299
|
}
|
|
305
300
|
}
|
|
306
301
|
onResizeContent(value = null) {
|
|
@@ -316,6 +311,7 @@ export class NgScrollerComponent extends NgScrollView {
|
|
|
316
311
|
this._$contentBounds.next(bounds);
|
|
317
312
|
this.updateScrollBar();
|
|
318
313
|
this._$resizeContent.next(bounds);
|
|
314
|
+
this.recalculatePerspective();
|
|
319
315
|
}
|
|
320
316
|
}
|
|
321
317
|
updateScrollBarHandler(update = false, blending = true, fireUpdate = false) {
|
|
@@ -480,7 +476,7 @@ export class NgScrollerComponent extends NgScrollView {
|
|
|
480
476
|
{ provide: SCROLL_VIEW_INVERSION, useValue: false },
|
|
481
477
|
{ provide: SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, useValue: true },
|
|
482
478
|
{ provide: SCROLL_VIEW_OVERSCROLL_ENABLED, useValue: true },
|
|
483
|
-
], viewQueries: [{ propertyName: "scrollBar", first: true, predicate: ["scrollBar"], descendants: true, read: NgScrollBarComponent }, { propertyName: "filter", first: true, predicate: ["filter"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div localeSensitive [langTextDir]=\"($langTextDir | async)!\" [listDir]=\"($direction | async)!\" class=\"ngvl__container\"\r\n [ngClass]=\"($containerClasses | async)!\">\r\n <svg part=\"viewport\" width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\"
|
|
479
|
+
], viewQueries: [{ propertyName: "scrollBar", first: true, predicate: ["scrollBar"], descendants: true, read: NgScrollBarComponent }, { propertyName: "filter", first: true, predicate: ["filter"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div localeSensitive [langTextDir]=\"($langTextDir | async)!\" [listDir]=\"($direction | async)!\" class=\"ngvl__container\"\r\n [ngClass]=\"($containerClasses | async)!\">\r\n <svg part=\"viewport\" width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <filter [id]=\"_filterId\">\r\n <feGaussianBlur #filter></feGaussianBlur>\r\n </filter>\r\n <foreignObject xmlns=\"http://www.w3.org/1999/xhtml\" width=\"100%\" height=\"100%\" class=\"ngvl__viewport\">\r\n <div class=\"ngvl__scroller-wrapper\" [class.filtered]=\"($motionBlurEnabled | async)!\"\r\n [style.filter]=\"($motionBlurEnabled | async)! ? _filter : 'unset'\">\r\n <div cdkScrollable #scrollViewport part=\"scroller\" class=\"ngvl__scroller\">\r\n <div #scrollContent [attr.aria-orientation]=\"($direction | async)!\"\r\n [attr.aria-activedescendant]=\"$focusedElement | async\" tabindex=\"0\" part=\"list\"\r\n class=\"ngvl__list\" [ngClass]=\"($actualClasses | async)!\" [ngStyle]=\"($listStyles | async)!\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n </foreignObject>\r\n </svg>\r\n <ng-container *ngIf=\"($scrollbarEnabled | async)!\">\r\n <ng-scroll-bar #scrollBar [direction]=\"($direction | async)!\" [size]=\"($actualThumbSize | async)!\"\r\n [langTextDir]=\"($langTextDir | async)!\" [renderer]=\"($scrollbarThumbRenderer | async)!\"\r\n [thickness]=\"($scrollbarThickness | async)!\" [params]=\"($scrollbarThumbParams | async)!\"\r\n [loading]=\"($loading | async)!\" [overlapping]=\"($overlappingScrollbar | async)!\"\r\n [thumbGradientPositions]=\"($thumbColorPositions | async)!\" [prepared]=\"($preparedSignal | async)!\"\r\n [interactive]=\"($scrollbarInteractive | async)!\" [show]=\"($show | async)!\"\r\n [startOffset]=\"($startOffset | async)!\" [langTextDir]=\"($langTextDir | async)!\"\r\n [endOffset]=\"($endOffset | async)!\" [overscrollEnabled]=\"($overscrollEnabled | async)!\"\r\n [scrollBehavior]=\"($scrollBehavior | async)!\" [scrollbarMinSize]=\"($scrollbarMinSize | async)!\"\r\n (onDrag)=\"onScrollBarDragHandler($event)\" (onDragEnd)=\"onScrollBarDragEndHandler($event)\"></ng-scroll-bar>\r\n </ng-container>\r\n</div>", styles: [":host{position:relative;overflow:hidden;-webkit-user-select:none;user-select:none}.ngvl__container{position:relative;overflow:hidden;display:grid;width:100%;height:100%;cursor:grab}.ngvl__container.overlapping{position:relative;display:block}.ngvl__container.grabbing{cursor:grabbing}.ngvl__container.horizontal{transition:grid-template-rows .1s ease-out}.ngvl__container.horizontal:not(.overlapping){grid-template-rows:1fr 0}.ngvl__container.horizontal.scrollable.enabled:not(.overlapping){grid-template-rows:1fr auto}.ngvl__container.horizontal .ngvl__list{display:inline-flex}.ngvl__container.horizontal .ngvl__scroller-wrapper.filtered,.ngvl__container.horizontal .ngvl__scroller{overflow:unset}.ngvl__container.vertical{transition:grid-template-columns .1s ease-out}.ngvl__container.vertical:not(.overlapping){grid-template-columns:1fr 0}.ngvl__container.vertical.scrollable.enabled:not(.overlapping){grid-template-columns:1fr auto}.ngvl__container.vertical .ngvl__scroller-wrapper.filtered,.ngvl__container.vertical .ngvl__scroller{overflow:unset}.ngvl__container .ngvl__scroller-wrapper,.ngvl__container .ngvl__scroller{display:block;position:relative;overflow:hidden;width:100%;height:100%}.ngvl__container .ngvl__list{position:absolute;list-style:none;padding:0;margin:0;width:100%;height:100%;opacity:0}.ngvl__container .ngvl__list.prepared{opacity:1}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.NgScrollBarComponent, selector: "ng-scroll-bar", inputs: ["loading", "thumbGradientPositions", "size", "thickness", "scrollbarMinSize", "prepared", "interactive", "overlapping", "show", "params", "renderer"], outputs: ["onDrag", "onDragEnd"] }, { kind: "directive", type: i3.LocaleSensitiveDirective, selector: "[localeSensitive]", inputs: ["langTextDir", "listDir"] }, { kind: "directive", type: i4.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
|
|
484
480
|
}
|
|
485
481
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgScrollerComponent, decorators: [{
|
|
486
482
|
type: Component,
|
|
@@ -488,7 +484,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
488
484
|
{ provide: SCROLL_VIEW_INVERSION, useValue: false },
|
|
489
485
|
{ provide: SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, useValue: true },
|
|
490
486
|
{ provide: SCROLL_VIEW_OVERSCROLL_ENABLED, useValue: true },
|
|
491
|
-
], standalone: false, template: "<div localeSensitive [langTextDir]=\"($langTextDir | async)!\" [listDir]=\"($direction | async)!\" class=\"ngvl__container\"\r\n [ngClass]=\"($containerClasses | async)!\">\r\n <svg part=\"viewport\" width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\"
|
|
487
|
+
], standalone: false, template: "<div localeSensitive [langTextDir]=\"($langTextDir | async)!\" [listDir]=\"($direction | async)!\" class=\"ngvl__container\"\r\n [ngClass]=\"($containerClasses | async)!\">\r\n <svg part=\"viewport\" width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <filter [id]=\"_filterId\">\r\n <feGaussianBlur #filter></feGaussianBlur>\r\n </filter>\r\n <foreignObject xmlns=\"http://www.w3.org/1999/xhtml\" width=\"100%\" height=\"100%\" class=\"ngvl__viewport\">\r\n <div class=\"ngvl__scroller-wrapper\" [class.filtered]=\"($motionBlurEnabled | async)!\"\r\n [style.filter]=\"($motionBlurEnabled | async)! ? _filter : 'unset'\">\r\n <div cdkScrollable #scrollViewport part=\"scroller\" class=\"ngvl__scroller\">\r\n <div #scrollContent [attr.aria-orientation]=\"($direction | async)!\"\r\n [attr.aria-activedescendant]=\"$focusedElement | async\" tabindex=\"0\" part=\"list\"\r\n class=\"ngvl__list\" [ngClass]=\"($actualClasses | async)!\" [ngStyle]=\"($listStyles | async)!\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n </foreignObject>\r\n </svg>\r\n <ng-container *ngIf=\"($scrollbarEnabled | async)!\">\r\n <ng-scroll-bar #scrollBar [direction]=\"($direction | async)!\" [size]=\"($actualThumbSize | async)!\"\r\n [langTextDir]=\"($langTextDir | async)!\" [renderer]=\"($scrollbarThumbRenderer | async)!\"\r\n [thickness]=\"($scrollbarThickness | async)!\" [params]=\"($scrollbarThumbParams | async)!\"\r\n [loading]=\"($loading | async)!\" [overlapping]=\"($overlappingScrollbar | async)!\"\r\n [thumbGradientPositions]=\"($thumbColorPositions | async)!\" [prepared]=\"($preparedSignal | async)!\"\r\n [interactive]=\"($scrollbarInteractive | async)!\" [show]=\"($show | async)!\"\r\n [startOffset]=\"($startOffset | async)!\" [langTextDir]=\"($langTextDir | async)!\"\r\n [endOffset]=\"($endOffset | async)!\" [overscrollEnabled]=\"($overscrollEnabled | async)!\"\r\n [scrollBehavior]=\"($scrollBehavior | async)!\" [scrollbarMinSize]=\"($scrollbarMinSize | async)!\"\r\n (onDrag)=\"onScrollBarDragHandler($event)\" (onDragEnd)=\"onScrollBarDragEndHandler($event)\"></ng-scroll-bar>\r\n </ng-container>\r\n</div>", styles: [":host{position:relative;overflow:hidden;-webkit-user-select:none;user-select:none}.ngvl__container{position:relative;overflow:hidden;display:grid;width:100%;height:100%;cursor:grab}.ngvl__container.overlapping{position:relative;display:block}.ngvl__container.grabbing{cursor:grabbing}.ngvl__container.horizontal{transition:grid-template-rows .1s ease-out}.ngvl__container.horizontal:not(.overlapping){grid-template-rows:1fr 0}.ngvl__container.horizontal.scrollable.enabled:not(.overlapping){grid-template-rows:1fr auto}.ngvl__container.horizontal .ngvl__list{display:inline-flex}.ngvl__container.horizontal .ngvl__scroller-wrapper.filtered,.ngvl__container.horizontal .ngvl__scroller{overflow:unset}.ngvl__container.vertical{transition:grid-template-columns .1s ease-out}.ngvl__container.vertical:not(.overlapping){grid-template-columns:1fr 0}.ngvl__container.vertical.scrollable.enabled:not(.overlapping){grid-template-columns:1fr auto}.ngvl__container.vertical .ngvl__scroller-wrapper.filtered,.ngvl__container.vertical .ngvl__scroller{overflow:unset}.ngvl__container .ngvl__scroller-wrapper,.ngvl__container .ngvl__scroller{display:block;position:relative;overflow:hidden;width:100%;height:100%}.ngvl__container .ngvl__list{position:absolute;list-style:none;padding:0;margin:0;width:100%;height:100%;opacity:0}.ngvl__container .ngvl__list.prepared{opacity:1}\n"] }]
|
|
492
488
|
}], ctorParameters: () => [], propDecorators: { scrollBar: [{
|
|
493
489
|
type: ViewChild,
|
|
494
490
|
args: ['scrollBar', { read: NgScrollBarComponent }]
|
|
@@ -526,4 +522,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
526
522
|
}], motionBlurEnabled: [{
|
|
527
523
|
type: Input
|
|
528
524
|
}] } });
|
|
529
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2Nyb2xsZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1zY3JvbGxlci9uZy1zY3JvbGxlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbGVyL25nLXNjcm9sbGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNySSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXBDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRWhGLE9BQU8sRUFDTCxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSw2QkFBNkIsRUFBRSx5QkFBeUIsRUFDckosNkJBQTZCLEVBQUUsMEJBQTBCLEVBQUUsMkJBQTJCLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxlQUFlLEVBQUUsYUFBYSxHQUMzSSxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBbUIsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFekYsT0FBTyxFQUFFLHFDQUFx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Z0JBWUYsY0FBYztzQkFEakIsS0FBSztnQkFZRixvQkFBb0I7c0JBRHZCLEtBQUs7Z0JBWUYsT0FBTztzQkFEVixLQUFLO2dCQVlGLE9BQU87c0JBRFYsS0FBSztnQkFZRixPQUFPO3NCQURWLEtBQUs7Z0JBWUYsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVlGLGtCQUFrQjtzQkFEckIsS0FBSztnQkFZRixzQkFBc0I7c0JBRHpCLEtBQUs7Z0JBWUYsb0JBQW9CO3NCQUR2QixLQUFLO2dCQVlGLFVBQVU7c0JBRGIsS0FBSztnQkFZRixhQUFhO3NCQURoQixLQUFLO2dCQVlGLGlCQUFpQjtzQkFEcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBmcm9tLCBvZiwgU3ViamVjdCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2Nyb2xsQm94IH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IElkLCBUZXh0RGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xyXG5pbXBvcnQgeyBOZ1Njcm9sbEJhckNvbXBvbmVudCB9IGZyb20gXCIuLi9uZy1zY3JvbGwtYmFyL25nLXNjcm9sbC1iYXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEdyYWRpZW50Q29sb3JQb3NpdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcy9ncmFkaWVudC1jb2xvci1wb3NpdGlvbnMnO1xyXG5pbXBvcnQge1xyXG4gIEJFSEFWSU9SX0lOU1RBTlQsIERFRkFVTFRfTUFYX01PVElPTl9CTFVSLCBERUZBVUxUX01PVElPTl9CTFVSLCBERUZBVUxUX01PVElPTl9CTFVSX0VOQUJMRUQsIERFRkFVTFRfT1ZFUkxBUFBJTkdfU0NST0xMQkFSLCBERUZBVUxUX1NDUk9MTEJBUl9FTkFCTEVELFxyXG4gIERFRkFVTFRfU0NST0xMQkFSX0lOVEVSQUNUSVZFLCBERUZBVUxUX1NDUk9MTEJBUl9NSU5fU0laRSwgREVGQVVMVF9TQ1JPTExCQVJfVEhJQ0tORVNTLCBMRUZUX1BST1BfTkFNRSwgUFgsIFNDUk9MTEVSX1NDUk9MTCwgVE9QX1BST1BfTkFNRSxcclxufSBmcm9tICcuLi8uLi9jb25zdCc7XHJcbmltcG9ydCB7IFRleHREaXJlY3Rpb25zIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBJU2Nyb2xsVG9QYXJhbXMsIE5nU2Nyb2xsVmlldywgU0NST0xMX1ZJRVdfSU5WRVJTSU9OIH0gZnJvbSAnLi4vbmctc2Nyb2xsLXZpZXcnO1xyXG5pbXBvcnQgeyBJU2Nyb2xsQmFyRHJhZ0V2ZW50IH0gZnJvbSAnLi4vbmctc2Nyb2xsLWJhci9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgU0NST0xMX1ZJRVdfTk9STUFMSVpFX1ZBTFVFX0ZST01fWkVSTywgU0NST0xMX1ZJRVdfT1ZFUlNDUk9MTF9FTkFCTEVEIH0gZnJvbSAnLi4vbmctc2Nyb2xsLXZpZXcvY29uc3QnO1xyXG5pbXBvcnQgeyBJU2l6ZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5cclxuY29uc3QgVE9QID0gJ3RvcCcsXHJcbiAgTEVGVCA9ICdsZWZ0JyxcclxuICBJTlNUQU5UID0gJ2luc3RhbnQnIGFzIFNjcm9sbEJlaGF2aW9yLFxyXG4gIE1PVElPTl9CTFVSID0gJ21vdGlvbi1ibHVyJztcclxuXHJcbmV4cG9ydCBjb25zdCBTQ1JPTExfRVZFTlQgPSBuZXcgRXZlbnQoU0NST0xMRVJfU0NST0xMKTtcclxuXHJcbi8qKlxyXG4gKiBUaGUgc2Nyb2xsZXIgZm9yIHRoZSBOZ1ZpcnR1YWxMaXN0IGl0ZW0gY29tcG9uZW50XHJcbiAqIE1heGltdW0gcGVyZm9ybWFuY2UgZm9yIGV4dHJlbWVseSBsYXJnZSBsaXN0cy5cclxuICogSXQgaXMgYmFzZWQgb24gYWxnb3JpdGhtcyBmb3IgdmlydHVhbGl6YXRpb24gb2Ygc2NyZWVuIG9iamVjdHMuXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE3LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1zY3JvbGxlci9uZy1zY3JvbGxlci5jb21wb25lbnQudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25nLXNjcm9sbGVyJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHsgcHJvdmlkZTogU0NST0xMX1ZJRVdfSU5WRVJTSU9OLCB1c2VWYWx1ZTogZmFsc2UgfSxcclxuICAgIHsgcHJvdmlkZTogU0NST0xMX1ZJRVdfTk9STUFMSVpFX1ZBTFVFX0ZST01fWkVSTywgdXNlVmFsdWU6IHRydWUgfSxcclxuICAgIHsgcHJvdmlkZTogU0NST0xMX1ZJRVdfT1ZFUlNDUk9MTF9FTkFCTEVELCB1c2VWYWx1ZTogdHJ1ZSB9LFxyXG4gIF0sXHJcbiAgc3RhbmRhbG9uZTogZmFsc2UsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25nLXNjcm9sbGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9uZy1zY3JvbGxlci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmdTY3JvbGxlckNvbXBvbmVudCBleHRlbmRzIE5nU2Nyb2xsVmlldyB7XHJcbiAgQFZpZXdDaGlsZCgnc2Nyb2xsQmFyJywgeyByZWFkOiBOZ1Njcm9sbEJhckNvbXBvbmVudCB9KVxyXG4gIHJlYWRvbmx5IHNjcm9sbEJhcjogTmdTY3JvbGxCYXJDb21wb25lbnQgfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlcicpXHJcbiAgcmVhZG9ubHkgZmlsdGVyOiBFbGVtZW50UmVmPFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudD4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHJlYWRvbmx5IG9uU2Nyb2xsYmFyVmlzaWJsZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfJHNjcm9sbGJhckVuYWJsZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KERFRkFVTFRfU0NST0xMQkFSX0VOQUJMRUQpO1xyXG4gIHJlYWRvbmx5ICRzY3JvbGxiYXJFbmFibGVkID0gdGhpcy5fJHNjcm9sbGJhckVuYWJsZWQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNjcm9sbGJhckVuYWJsZWQodjogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuXyRzY3JvbGxiYXJFbmFibGVkLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHNjcm9sbGJhckVuYWJsZWQubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHNjcm9sbGJhckVuYWJsZWQoKSB7IHJldHVybiB0aGlzLl8kc2Nyb2xsYmFyRW5hYmxlZC5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRzY3JvbGxiYXJJbnRlcmFjdGl2ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oREVGQVVMVF9TQ1JPTExCQVJfSU5URVJBQ1RJVkUpO1xyXG4gIHJlYWRvbmx5ICRzY3JvbGxiYXJJbnRlcmFjdGl2ZSA9IHRoaXMuXyRzY3JvbGxiYXJJbnRlcmFjdGl2ZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgc2Nyb2xsYmFySW50ZXJhY3RpdmUodjogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuXyRzY3JvbGxiYXJJbnRlcmFjdGl2ZS5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRzY3JvbGxiYXJJbnRlcmFjdGl2ZS5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgc2Nyb2xsYmFySW50ZXJhY3RpdmUoKSB7IHJldHVybiB0aGlzLl8kc2Nyb2xsYmFySW50ZXJhY3RpdmUuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kZm9jdXNlZEVsZW1lbnQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElkIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG4gIHJlYWRvbmx5ICRmb2N1c2VkRWxlbWVudCA9IHRoaXMuXyRmb2N1c2VkRWxlbWVudC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgZm9jdXNlZEVsZW1lbnQodjogSWQgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh0aGlzLl8kZm9jdXNlZEVsZW1lbnQuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kZm9jdXNlZEVsZW1lbnQubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGZvY3VzZWRFbGVtZW50KCkgeyByZXR1cm4gdGhpcy5fJGZvY3VzZWRFbGVtZW50LmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJG92ZXJsYXBwaW5nU2Nyb2xsYmFyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihERUZBVUxUX09WRVJMQVBQSU5HX1NDUk9MTEJBUik7XHJcbiAgcmVhZG9ubHkgJG92ZXJsYXBwaW5nU2Nyb2xsYmFyID0gdGhpcy5fJG92ZXJsYXBwaW5nU2Nyb2xsYmFyLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBvdmVybGFwcGluZ1Njcm9sbGJhcih2OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5fJG92ZXJsYXBwaW5nU2Nyb2xsYmFyLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJG92ZXJsYXBwaW5nU2Nyb2xsYmFyLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBvdmVybGFwcGluZ1Njcm9sbGJhcigpIHsgcmV0dXJuIHRoaXMuXyRvdmVybGFwcGluZ1Njcm9sbGJhci5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRjb250ZW50ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIVE1MRWxlbWVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuICByZWFkb25seSAkY29udGVudCA9IHRoaXMuXyRmb2N1c2VkRWxlbWVudC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgY29udGVudCh2OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuXyRjb250ZW50LmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJGNvbnRlbnQubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGNvbnRlbnQoKSB7IHJldHVybiB0aGlzLl8kY29udGVudC5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRsb2FkaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgJGxvYWRpbmcgPSB0aGlzLl8kbG9hZGluZy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgbG9hZGluZyh2OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5fJGxvYWRpbmcuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kbG9hZGluZy5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgbG9hZGluZygpIHsgcmV0dXJuIHRoaXMuXyRsb2FkaW5nLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJGNsYXNzZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgW2NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0+KHt9KTtcclxuICByZWFkb25seSAkY2xhc3NlcyA9IHRoaXMuXyRjbGFzc2VzLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBjbGFzc2VzKHY6IHsgW2NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0pIHtcclxuICAgIGlmICh0aGlzLl8kY2xhc3Nlcy5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRjbGFzc2VzLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBjbGFzc2VzKCkgeyByZXR1cm4gdGhpcy5fJGNsYXNzZXMuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kc2Nyb2xsYmFyTWluU2l6ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPihERUZBVUxUX1NDUk9MTEJBUl9NSU5fU0laRSk7XHJcbiAgcmVhZG9ubHkgJHNjcm9sbGJhck1pblNpemUgPSB0aGlzLl8kc2Nyb2xsYmFyTWluU2l6ZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgc2Nyb2xsYmFyTWluU2l6ZSh2OiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLl8kc2Nyb2xsYmFyTWluU2l6ZS5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRzY3JvbGxiYXJNaW5TaXplLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBzY3JvbGxiYXJNaW5TaXplKCkgeyByZXR1cm4gdGhpcy5fJHNjcm9sbGJhck1pblNpemUuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kc2Nyb2xsYmFyVGhpY2tuZXNzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KERFRkFVTFRfU0NST0xMQkFSX1RISUNLTkVTUyk7XHJcbiAgcmVhZG9ubHkgJHNjcm9sbGJhclRoaWNrbmVzcyA9IHRoaXMuXyRzY3JvbGxiYXJUaGlja25lc3MuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNjcm9sbGJhclRoaWNrbmVzcyh2OiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLl8kc2Nyb2xsYmFyVGhpY2tuZXNzLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHNjcm9sbGJhclRoaWNrbmVzcy5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgc2Nyb2xsYmFyVGhpY2tuZXNzKCkgeyByZXR1cm4gdGhpcy5fJHNjcm9sbGJhclRoaWNrbmVzcy5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRzY3JvbGxiYXJUaHVtYlJlbmRlcmVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4obnVsbCk7XHJcbiAgcmVhZG9ubHkgJHNjcm9sbGJhclRodW1iUmVuZGVyZXIgPSB0aGlzLl8kc2Nyb2xsYmFyVGh1bWJSZW5kZXJlci5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgc2Nyb2xsYmFyVGh1bWJSZW5kZXJlcih2OiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCkge1xyXG4gICAgaWYgKHRoaXMuXyRzY3JvbGxiYXJUaHVtYlJlbmRlcmVyLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHNjcm9sbGJhclRodW1iUmVuZGVyZXIubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHNjcm9sbGJhclRodW1iUmVuZGVyZXIoKSB7IHJldHVybiB0aGlzLl8kc2Nyb2xsYmFyVGh1bWJSZW5kZXJlci5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRzY3JvbGxiYXJUaHVtYlBhcmFtcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9IHwgbnVsbD4obnVsbCk7XHJcbiAgcmVhZG9ubHkgJHNjcm9sbGJhclRodW1iUGFyYW1zID0gdGhpcy5fJHNjcm9sbGJhclRodW1iUGFyYW1zLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBzY3JvbGxiYXJUaHVtYlBhcmFtcyh2OiB7IFtwcm9wTmFtZTogc3RyaW5nXTogYW55IH0gfCBudWxsKSB7XHJcbiAgICBpZiAodGhpcy5fJHNjcm9sbGJhclRodW1iUGFyYW1zLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHNjcm9sbGJhclRodW1iUGFyYW1zLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBzY3JvbGxiYXJUaHVtYlBhcmFtcygpIHsgcmV0dXJuIHRoaXMuXyRzY3JvbGxiYXJUaHVtYlBhcmFtcy5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRtb3Rpb25CbHVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCAnZGlzYWJsZWQnPihERUZBVUxUX01PVElPTl9CTFVSKTtcclxuICByZWFkb25seSAkbW90aW9uQmx1ciA9IHRoaXMuXyRtb3Rpb25CbHVyLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBtb3Rpb25CbHVyKHY6IG51bWJlciB8ICdkaXNhYmxlZCcpIHtcclxuICAgIGlmICh0aGlzLl8kbW90aW9uQmx1ci5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRtb3Rpb25CbHVyLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBtb3Rpb25CbHVyKCkgeyByZXR1cm4gdGhpcy5fJG1vdGlvbkJsdXIuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kbWF4TW90aW9uQmx1ciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPihERUZBVUxUX01BWF9NT1RJT05fQkxVUik7XHJcbiAgcmVhZG9ubHkgJG1heE1vdGlvbkJsdXIgPSB0aGlzLl8kbWF4TW90aW9uQmx1ci5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgbWF4TW90aW9uQmx1cih2OiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLl8kbWF4TW90aW9uQmx1ci5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRtYXhNb3Rpb25CbHVyLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBtYXhNb3Rpb25CbHVyKCkgeyByZXR1cm4gdGhpcy5fJG1heE1vdGlvbkJsdXIuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kbW90aW9uQmx1ckVuYWJsZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KERFRkFVTFRfTU9USU9OX0JMVVJfRU5BQkxFRCk7XHJcbiAgcmVhZG9ubHkgJG1vdGlvbkJsdXJFbmFibGVkID0gdGhpcy5fJG1vdGlvbkJsdXJFbmFibGVkLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBtb3Rpb25CbHVyRW5hYmxlZCh2OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5fJG1vdGlvbkJsdXJFbmFibGVkLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJG1vdGlvbkJsdXJFbmFibGVkLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBtb3Rpb25CbHVyRW5hYmxlZCgpIHsgcmV0dXJuIHRoaXMuXyRtb3Rpb25CbHVyRW5hYmxlZC5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRhY3R1YWxDbGFzc2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFtjTmFtZTogc3RyaW5nXTogYm9vbGVhbiB9Pih7fSk7XHJcbiAgcmVhZG9ubHkgJGFjdHVhbENsYXNzZXMgPSB0aGlzLl8kYWN0dWFsQ2xhc3Nlcy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfJGNvbnRhaW5lckNsYXNzZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgW2NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0+KHt9KTtcclxuICByZWFkb25seSAkY29udGFpbmVyQ2xhc3NlcyA9IHRoaXMuXyRjb250YWluZXJDbGFzc2VzLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kdGh1bWJHcmFkaWVudFBvc2l0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8R3JhZGllbnRDb2xvclBvc2l0aW9ucz4oWzAsIDBdKTtcclxuICByZWFkb25seSAkdGh1bWJHcmFkaWVudFBvc2l0aW9ucyA9IHRoaXMuXyR0aHVtYkdyYWRpZW50UG9zaXRpb25zLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kdGh1bWJTaXplID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xyXG4gIHJlYWRvbmx5ICR0aHVtYlNpemUgPSB0aGlzLl8kdGh1bWJTaXplLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kdGh1bWJDb2xvclBvc2l0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8R3JhZGllbnRDb2xvclBvc2l0aW9ucz4oWzAsIDBdKTtcclxuICByZWFkb25seSAkdGh1bWJDb2xvclBvc2l0aW9ucyA9IHRoaXMuXyR0aHVtYkNvbG9yUG9zaXRpb25zLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kYWN0dWFsVGh1bWJTaXplID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xyXG4gIHJlYWRvbmx5ICRhY3R1YWxUaHVtYlNpemUgPSB0aGlzLl8kYWN0dWFsVGh1bWJTaXplLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kc2Nyb2xsYmFyU2hvdyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHJlYWRvbmx5ICRzY3JvbGxiYXJTaG93ID0gdGhpcy5fJHNjcm9sbGJhclNob3cuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyRzaG93ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgJHNob3cgPSB0aGlzLl8kc2hvdy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfJHByZXBhcmVkU2lnbmFsID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgJHByZXBhcmVkU2lnbmFsID0gdGhpcy5fJHByZXBhcmVkU2lnbmFsLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kbGFuZ1RleHREaXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRleHREaXJlY3Rpb24+KFRleHREaXJlY3Rpb25zLkxUUik7XHJcbiAgcmVhZG9ubHkgJGxhbmdUZXh0RGlyID0gdGhpcy5fJGxhbmdUZXh0RGlyLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kbGlzdFN0eWxlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBwZXJzcGVjdGl2ZU9yaWdpbjogc3RyaW5nIH0+KHsgcGVyc3BlY3RpdmVPcmlnaW46ICdjZW50ZXInIH0pO1xyXG4gIHJlYWRvbmx5ICRsaXN0U3R5bGVzID0gdGhpcy5fJGxpc3RTdHlsZXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgX3Njcm9sbEJveCA9IG5ldyBTY3JvbGxCb3goKTtcclxuXHJcbiAgZ2V0IGhvc3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zY3JvbGxWaWV3cG9ydD8ubmF0aXZlRWxlbWVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgXyRzY3JvbGxiYXJTY3JvbGwgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIHJlYWRvbmx5ICRzY3JvbGxiYXJTY3JvbGwgPSB0aGlzLl8kc2Nyb2xsYmFyU2Nyb2xsLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF9wcmVwYXJlZCA9IGZhbHNlO1xyXG4gIHNldCBwcmVwYXJlZCh2OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5fcHJlcGFyZWQgIT09IHYpIHtcclxuICAgICAgdGhpcy5fcHJlcGFyZWQgPSB2O1xyXG4gICAgICB0aGlzLl8kcHJlcGFyZWRTaWduYWwubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvdmVycmlkZSBzZXRYKHg6IG51bWJlciwgc25hcDogYm9vbGVhbiA9IHRydWUsIG5vcm1hbGl6ZTogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgIGlmICh4ICE9PSB1bmRlZmluZWQgJiYgIU51bWJlci5pc05hTih4KSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZURpcmVjdGlvbih4LCB0aGlzLl94KTtcclxuXHJcbiAgICAgIHRoaXMuX3ggPSB0aGlzLl9hY3R1YWxYID0geDtcclxuXHJcbiAgICAgIGNvbnN0IG92ZXJyaWRkZW4gPSBub3JtYWxpemUgPyB0aGlzLm5vcm1hbGl6ZVNjcm9sbFNpemUoKSA6IGZhbHNlO1xyXG5cclxuICAgICAgdGhpcy5yZWZyZXNoQ29vcmRpbmF0ZSh0aGlzLl94LCB0aGlzLl95KTtcclxuXHJcbiAgICAgIGlmICghb3ZlcnJpZGRlbikge1xyXG4gICAgICAgIHRoaXMubWVhc3VyZVZlbG9jaXR5KCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudXBkYXRlU2Nyb2xsQmFyKCk7XHJcblxyXG4gICAgICB0aGlzLnJlY2FsY3VsYXRlUGVyc3BlY3RpdmUoKTtcclxuXHJcbiAgICAgIGlmIChzbmFwKSB7XHJcbiAgICAgICAgdGhpcy5jaGVja0ludGVyc2VjdGlvbkNvbXBvbmVudCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2V0WSh5OiBudW1iZXIsIHNuYXA6IGJvb2xlYW4gPSB0cnVlLCBub3JtYWxpemU6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICBpZiAoeSAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oeSkpIHtcclxuICAgICAgdGhpcy51cGRhdGVEaXJlY3Rpb24oeSwgdGhpcy5feSk7XHJcblxyXG4gICAgICB0aGlzLl95ID0gdGhpcy5fYWN0dWFsWSA9IHk7XHJcblxyXG4gICAgICBjb25zdCBvdmVycmlkZGVuID0gbm9ybWFsaXplID8gdGhpcy5ub3JtYWxpemVTY3JvbGxTaXplKCkgOiBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMucmVmcmVzaENvb3JkaW5hdGUodGhpcy5feCwgdGhpcy5feSk7XHJcblxyXG4gICAgICBpZiAoIW92ZXJyaWRkZW4pIHtcclxuICAgICAgICB0aGlzLm1lYXN1cmVWZWxvY2l0eSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG5cclxuICAgICAgdGhpcy5yZWNhbGN1bGF0ZVBlcnNwZWN0aXZlKCk7XHJcblxyXG4gICAgICBpZiAoc25hcCkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tJbnRlcnNlY3Rpb25Db21wb25lbnQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgc2V0IHN0YXJ0TGF5b3V0T2Zmc2V0KHY6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuX3N0YXJ0TGF5b3V0T2Zmc2V0ICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuX3N0YXJ0TGF5b3V0T2Zmc2V0ID0gdjtcclxuXHJcbiAgICAgIHRoaXMucmVmcmVzaENvb3JkaW5hdGUodGhpcy5feCwgdGhpcy5feSk7XHJcblxyXG4gICAgICB0aGlzLnJlY2FsY3VsYXRlUGVyc3BlY3RpdmUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgb3ZlcnJpZGUgZ2V0IHN0YXJ0TGF5b3V0T2Zmc2V0KCkgeyByZXR1cm4gdGhpcy5fc3RhcnRMYXlvdXRPZmZzZXQ7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJHZpZXdJbml0aWFsaXplZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHJlYWRvbmx5ICR2aWV3SW5pdGlhbGl6ZWQgPSB0aGlzLl8kdmlld0luaXRpYWxpemVkLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF9pc1Njcm9sbGJhclVzZXJBY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBnZXQgaXNTY3JvbGxiYXJVc2VyQWN0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzU2Nyb2xsYmFyVXNlckFjdGlvbjtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfJHJlc2l6ZVZpZXdwb3J0ID0gbmV3IFN1YmplY3Q8SVNpemU+KCk7XHJcbiAgcmVhZG9ubHkgJHJlc2l6ZVZpZXdwb3J0ID0gdGhpcy5fJHJlc2l6ZVZpZXdwb3J0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcm90ZWN0ZWQgXyRyZXNpemVDb250ZW50ID0gbmV3IFN1YmplY3Q8SVNpemU+KCk7XHJcbiAgcmVhZG9ubHkgJHJlc2l6ZUNvbnRlbnQgPSB0aGlzLl8kcmVzaXplQ29udGVudC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJvdGVjdGVkIF9maWx0ZXJJZDogc3RyaW5nO1xyXG5cclxuICBwcm90ZWN0ZWQgX2ZpbHRlcjogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcblxyXG4gICAgdGhpcy5fZmlsdGVySWQgPSBgJHt0aGlzLl9zZXJ2aWNlLmlkfS0ke01PVElPTl9CTFVSfWA7XHJcbiAgICB0aGlzLl9maWx0ZXIgPSBgdXJsKCMke3RoaXMuX2ZpbHRlcklkfSlgO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XHJcblxyXG4gICAgY29uc3QgJGZpbHRlciA9IG9mKHRoaXMuZmlsdGVyKSxcclxuICAgICAgJG1vdGlvbkJsdXIgPSB0aGlzLiRtb3Rpb25CbHVyLFxyXG4gICAgICAkbWF4TW90aW9uQmx1ciA9IHRoaXMuJG1heE1vdGlvbkJsdXIsXHJcbiAgICAgICRtb3Rpb25CbHVyRW5hYmxlZCA9IHRoaXMuJG1vdGlvbkJsdXJFbmFibGVkLFxyXG4gICAgICAkaXNWZXJ0aWNhbCA9IHRoaXMuJGlzVmVydGljYWw7XHJcblxyXG4gICAgY29uc3QgJHNjcm9sbGJhclNjcm9sbCA9IHRoaXMuJHNjcm9sbGJhclNjcm9sbDtcclxuICAgICRzY3JvbGxiYXJTY3JvbGwucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRlYm91bmNlVGltZSg1MCksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kcm9wVmVsb2NpdHkoKTtcclxuICAgICAgICB0aGlzLmZpcmVTY3JvbGxFdmVudChmYWxzZSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkYXZlcmFnZVZlbG9jaXR5ID0gdGhpcy4kYXZlcmFnZVZlbG9jaXR5O1xyXG4gICAgY29tYmluZUxhdGVzdChbJGlzVmVydGljYWwsICRhdmVyYWdlVmVsb2NpdHksICRmaWx0ZXIsICRtb3Rpb25CbHVyRW5hYmxlZCwgJG1vdGlvbkJsdXIsICRtYXhNb3Rpb25CbHVyXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGZpbHRlcigoWywgLCBmLCBlLCBtYl0pID0+ICEhZiAmJiAoISFlICYmIG1iICE9PSAwKSksXHJcbiAgICAgIHRhcCgoW2lzVmVydGljYWwsIHYsIGZpbHRlciwgLCBtYiwgbWJNYXhdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgX3YgPSB2ICogKG1iIGFzIG51bWJlciksIHZhbHVlID0gX3YgPiBtYk1heCA/IG1iTWF4IDogX3Y7XHJcbiAgICAgICAgZmlsdGVyIS5uYXRpdmVFbGVtZW50LnNldFN0ZERldmlhdGlvbihpc1ZlcnRpY2FsID8gMCA6IHYgKiB2YWx1ZSwgaXNWZXJ0aWNhbCA/IHYgKiB2YWx1ZSA6IDApO1xyXG4gICAgICB9KSxcclxuICAgICAgZGVib3VuY2VUaW1lKDUwKSxcclxuICAgICAgdGFwKChbLCAsIGZpbHRlciwgLF0pID0+IHtcclxuICAgICAgICBmaWx0ZXIhLm5hdGl2ZUVsZW1lbnQuc2V0U3RkRGV2aWF0aW9uKDAsIDApO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgdGhpcy5fc2VydmljZS4kbGFuZ1RleHREaXIucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRlYm91bmNlVGltZSgwKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIHRoaXMuXyRsYW5nVGV4dERpci5uZXh0KHYpO1xyXG4gICAgICB9KVxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkcHJlcGFyZSA9IHRoaXMuJHByZXBhcmVkU2lnbmFsO1xyXG4gICAgJHByZXBhcmUucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGZpbHRlcih2ID0+ICEhdiksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxCYXJIYW5kbGVyKHRydWUsIGZhbHNlLCB0cnVlKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbnN0ICRzY3JvbGxiYXJFbmFibGVkID0gdGhpcy4kc2Nyb2xsYmFyRW5hYmxlZCxcclxuICAgICAgJHNjcm9sbGJhclNob3cgPSB0aGlzLiRzY3JvbGxiYXJTaG93O1xyXG5cclxuICAgIGNvbWJpbmVMYXRlc3QoWyRzY3JvbGxiYXJFbmFibGVkLCAkc2Nyb2xsYmFyU2hvdywgdGhpcy4kcHJlcGFyZWRTaWduYWxdKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgdGFwKChbc2Nyb2xsYmFyRW5hYmxlZCwgc2Nyb2xsYmFyU2hvdywgcHJlcGFyZWRdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJHNob3cubmV4dChzY3JvbGxiYXJFbmFibGVkICYmIHNjcm9sbGJhclNob3cgJiYgcHJlcGFyZWQpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29uc3QgJHN0YXJ0T2Zmc2V0ID0gdGhpcy4kc3RhcnRPZmZzZXQsXHJcbiAgICAgICRlbmRPZmZzZXQgPSB0aGlzLiRlbmRPZmZzZXQsXHJcbiAgICAgICRzY3JvbGxiYXJNaW5TaXplID0gdGhpcy4kc2Nyb2xsYmFyTWluU2l6ZSxcclxuICAgICAgJHRodW1iU2l6ZSA9IHRoaXMuJHRodW1iU2l6ZTtcclxuXHJcbiAgICBmcm9tKFskZW5kT2Zmc2V0LCAkc3RhcnRPZmZzZXQsICR0aHVtYlNpemUsICRzY3JvbGxiYXJNaW5TaXplLCAkaXNWZXJ0aWNhbF0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMCksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxCYXIoKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbnN0ICR1cGRhdGVTY3JvbGxCYXIgPSB0aGlzLiR1cGRhdGVTY3JvbGxCYXI7XHJcblxyXG4gICAgJHVwZGF0ZVNjcm9sbEJhci5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZGVib3VuY2VUaW1lKDApLFxyXG4gICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudXBkYXRlU2Nyb2xsQmFySGFuZGxlcighdGhpcy5faXNTY3JvbGxiYXJVc2VyQWN0aW9uKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbnN0ICRncmFiYmluZyA9IHRoaXMuJGdyYWJiaW5nO1xyXG4gICAgJGdyYWJiaW5nLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAodiA9PiB7XHJcbiAgICAgICAgdGhpcy5fc2VydmljZS5ncmFiYmluZyA9IHY7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLiRjbGFzc2VzLCB0aGlzLiRkaXJlY3Rpb24sIHRoaXMuJGdyYWJiaW5nLCB0aGlzLiRtb3Rpb25CbHVyRW5hYmxlZF0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMCksXHJcbiAgICAgIHRhcCgoW2NsYXNzZXMsIGRpcmVjdGlvbiwgZ3JhYmJpbmcsIGZpbHRlcmVkXSkgPT4ge1xyXG4gICAgICAgIHRoaXMuXyRhY3R1YWxDbGFzc2VzLm5leHQoeyAuLi5jbGFzc2VzLCBbZGlyZWN0aW9uXTogdHJ1ZSwgZ3JhYmJpbmcsIGZpbHRlcmVkIH0pO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy4kY29udGVudEJvdW5kcywgdGhpcy4kdmlld3BvcnRCb3VuZHMsIHRoaXMuJGlzVmVydGljYWwsIHRoaXMuJGRpcmVjdGlvbiwgdGhpcy4kZ3JhYmJpbmcsIHRoaXMuJHNjcm9sbGJhckVuYWJsZWQsIHRoaXMuJG92ZXJsYXBwaW5nU2Nyb2xsYmFyXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIGRlYm91bmNlVGltZSgwKSxcclxuICAgICAgdGFwKChbY29udGVudEJvdW5kcywgdmlld3BvcnRCb3VuZHMsIGlzVmVydGljYWwsIGRpcmVjdGlvbiwgZ3JhYmJpbmcsIHNjcm9sbGJhckVuYWJsZWQsIG92ZXJsYXBwaW5nU2Nyb2xsYmFyXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgd2lkdGg6IGNvbnRlbnRXaWR0aCwgaGVpZ2h0OiBjb250ZW50SGVpZ2h0IH0gPSBjb250ZW50Qm91bmRzLFxyXG4gICAgICAgICAgeyB3aWR0aCwgaGVpZ2h0IH0gPSB2aWV3cG9ydEJvdW5kcyxcclxuICAgICAgICAgIHZpZXdwb3J0U2l6ZSA9IGlzVmVydGljYWwgPyBoZWlnaHQgOiB3aWR0aCxcclxuICAgICAgICAgIGNvbnRlbnRTaXplID0gaXNWZXJ0aWNhbCA/IGNvbnRlbnRIZWlnaHQgOiBjb250ZW50V2lkdGg7XHJcbiAgICAgICAgdGhpcy5fJGNvbnRhaW5lckNsYXNzZXMubmV4dCh7IFtkaXJlY3Rpb25dOiB0cnVlLCBncmFiYmluZywgZW5hYmxlZDogc2Nyb2xsYmFyRW5hYmxlZCwgc2Nyb2xsYWJsZTogY29udGVudFNpemUgPiB2aWV3cG9ydFNpemUsIG92ZXJsYXBwaW5nOiBvdmVybGFwcGluZ1Njcm9sbGJhciB9KTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuJHZpZXdJbml0aWFsaXplZC5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZmlsdGVyKHYgPT4gISF2KSxcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhckhhbmRsZXIoKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuJHRodW1iR3JhZGllbnRQb3NpdGlvbnMucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRlYm91bmNlVGltZSgwKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIHRoaXMuXyR0aHVtYkNvbG9yUG9zaXRpb25zLm5leHQodik7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLiR0aHVtYlNpemUucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRlYm91bmNlVGltZSgwKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIHRoaXMuXyRhY3R1YWxUaHVtYlNpemUubmV4dCh2KTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuXyR2aWV3SW5pdGlhbGl6ZWQubmV4dCh0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVjYWxjdWxhdGVQZXJzcGVjdGl2ZSgpIHtcclxuICAgIGNvbnN0IGlzVmVydGljYWwgPSB0aGlzLl8kaXNWZXJ0aWNhbC5nZXRWYWx1ZSgpLCBzY3JvbGxTaXplID0gKGlzVmVydGljYWwgPyB0aGlzLnNjcm9sbFRvcCA6IHRoaXMuc2Nyb2xsTGVmdCkgLSB0aGlzLl9zdGFydExheW91dE9mZnNldCxcclxuICAgICAgeyB3aWR0aCwgaGVpZ2h0IH0gPSB0aGlzLl8kdmlld3BvcnRCb3VuZHMuZ2V0VmFsdWUoKTtcclxuICAgIHRoaXMuXyRsaXN0U3R5bGVzLm5leHQoe1xyXG4gICAgICBwZXJzcGVjdGl2ZU9yaWdpbjogYCR7aXNWZXJ0aWNhbCA/IHdpZHRoICogLjUgOiAoc2Nyb2xsU2l6ZSArIHdpZHRoICogLjUpfSR7UFh9ICR7aXNWZXJ0aWNhbCA/IChzY3JvbGxTaXplICsgaGVpZ2h0ICogLjUpIDogaGVpZ2h0ICogLjV9JHtQWH1gXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvdmVycmlkZSBvblJlc2l6ZVZpZXdwb3J0KCkge1xyXG4gICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLnNjcm9sbFZpZXdwb3J0Py5uYXRpdmVFbGVtZW50O1xyXG4gICAgaWYgKCEhdmlld3BvcnQpIHtcclxuICAgICAgY29uc3QgYm91bmRzOiBJU2l6ZSA9IHsgd2lkdGg6IHZpZXdwb3J0Lm9mZnNldFdpZHRoLCBoZWlnaHQ6IHZpZXdwb3J0Lm9mZnNldEhlaWdodCB9LCBiID0gdGhpcy5fJHZpZXdwb3J0Qm91bmRzLmdldFZhbHVlKCk7XHJcbiAgICAgIGlmIChib3VuZHMud2lkdGggPT09IGIud2lkdGggJiYgYm91bmRzLmhlaWdodCA9PT0gYi5oZWlnaHQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fJHZpZXdwb3J0Qm91bmRzLm5leHQoYm91bmRzKTtcclxuICAgICAgdGhpcy51cGRhdGVTY3JvbGxCYXIoKTtcclxuICAgICAgdGhpcy5fJHJlc2l6ZVZpZXdwb3J0Lm5leHQoYm91bmRzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvdmVycmlkZSBvblJlc2l6ZUNvbnRlbnQodmFsdWU6IG51bWJlciB8IG51bGwgPSBudWxsKSB7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5zY3JvbGxDb250ZW50Py5uYXRpdmVFbGVtZW50O1xyXG4gICAgaWYgKCEhY29udGVudCkge1xyXG4gICAgICBjb25zdCBpc1ZlcnRpY2FsID0gdGhpcy5fJGlzVmVydGljYWwuZ2V0VmFsdWUoKSwgYm91bmRzOiBJU2l6ZSA9IHtcclxuICAgICAgICB3aWR0aDogaXNWZXJ0aWNhbCA/IGNvbnRlbnQub2Zmc2V0V2lkdGggOiAodmFsdWUgPz8gY29udGVudC5vZmZzZXRXaWR0aCksXHJcbiAgICAgICAgaGVpZ2h0OiBpc1ZlcnRpY2FsID8gKHZhbHVlID8/IGNvbnRlbnQub2Zmc2V0SGVpZ2h0KSA6IGNvbnRlbnQub2Zmc2V0SGVpZ2h0XHJcbiAgICAgIH0sIGIgPSB0aGlzLl8kY29udGVudEJvdW5kcy5nZXRWYWx1ZSgpO1xyXG4gICAgICBpZiAodmFsdWUgPT09IG51bGwgJiYgYm91bmRzLndpZHRoID09PSBiLndpZHRoICYmIGJvdW5kcy5oZWlnaHQgPT09IGIuaGVpZ2h0KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuXyRjb250ZW50Qm91bmRzLm5leHQoYm91bmRzKTtcclxuICAgICAgdGhpcy51cGRhdGVTY3JvbGxCYXIoKTtcclxuICAgICAgdGhpcy5fJHJlc2l6ZUNvbnRlbnQubmV4dChib3VuZHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVTY3JvbGxCYXJIYW5kbGVyKHVwZGF0ZTogYm9vbGVhbiA9IGZhbHNlLCBibGVuZGluZzogYm9vbGVhbiA9IHRydWUsIGZpcmVVcGRhdGU6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgY29uc3QgZGlyZWN0aW9uID0gdGhpcy5kaXJlY3Rpb24sXHJcbiAgICAgIGlzVmVydGljYWwgPSB0aGlzLl8kaXNWZXJ0aWNhbC5nZXRWYWx1ZSgpLFxyXG4gICAgICB2aWV3cG9ydEJvdW5kcyA9IHRoaXMuXyR2aWV3cG9ydEJvdW5kcy5nZXRWYWx1ZSgpLFxyXG4gICAgICBjb250ZW50Qm91bmRzID0gdGhpcy5fJGNvbnRlbnRCb3VuZHMuZ2V0VmFsdWUoKSxcclxuICAgICAgc3RhcnRPZmZzZXQgPSB0aGlzLnN0YXJ0T2Zmc2V0LFxyXG4gICAgICBlbmRPZmZzZXQgPSB0aGlzLmVuZE9mZnNldCxcclxuICAgICAge1xyXG4gICAgICAgIHRodW1iU2l6ZSxcclxuICAgICAgICB0aHVtYlBvc2l0aW9uLFxyXG4gICAgICAgIHRodW1iR3JhZGllbnRQb3NpdGlvbnMsXHJcbiAgICAgIH0gPSB0aGlzLl9zY3JvbGxCb3guY2FsY3VsYXRlU2Nyb2xsKHtcclxuICAgICAgICBkaXJlY3Rpb24sXHJcbiAgICAgICAgdmlld3BvcnRXaWR0aDogdmlld3BvcnRCb3VuZHMud2lkdGgsXHJcbiAgICAgICAgdmlld3BvcnRIZWlnaHQ6IHZpZXdwb3J0Qm91bmRzLmhlaWdodCxcclxuICAgICAgICBjb250ZW50V2lkdGg6IGNvbnRlbnRCb3VuZHMud2lkdGgsXHJcbiAgICAgICAgY29udGVudEhlaWdodDogY29udGVudEJvdW5kcy5oZWlnaHQsXHJcbiAgICAgICAgc3RhcnRPZmZzZXQsXHJcbiAgICAgICAgZW5kT2Zmc2V0LFxyXG4gICAgICAgIHBvc2l0aW9uWDogdGhpcy5feCxcclxuICAgICAgICBwb3NpdGlvblk6IHRoaXMuX3ksXHJcbiAgICAgICAgbWluU2l6ZTogdGhpcy5zY3JvbGxiYXJNaW5TaXplLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLl8kdGh1bWJHcmFkaWVudFBvc2l0aW9ucy5uZXh0KHRodW1iR3JhZGllbnRQb3NpdGlvbnMpO1xyXG4gICAgdGhpcy5fJHRodW1iU2l6ZS5uZXh0KHRodW1iU2l6ZSk7XHJcbiAgICBjb25zdCBhY3R1YWxUaHVtYlBvc2l0aW9uID0gdGh1bWJQb3NpdGlvbiA8IHN0YXJ0T2Zmc2V0ID8gc3RhcnRPZmZzZXQgOiB0aHVtYlBvc2l0aW9uO1xyXG4gICAgaWYgKHVwZGF0ZSkge1xyXG4gICAgICB0aGlzLnNjcm9sbEJhcj8uc2Nyb2xsKHtcclxuICAgICAgICBbaXNWZXJ0aWNhbCA/IFRPUF9QUk9QX05BTUUgOiBMRUZUX1BST1BfTkFNRV06IGFjdHVhbFRodW1iUG9zaXRpb24sIGZpcmVVcGRhdGUsIGJlaGF2aW9yOiBCRUhBVklPUl9JTlNUQU5ULFxyXG4gICAgICAgIHVzZXJBY3Rpb246IGZhbHNlLCBibGVuZGluZyxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl8kc2Nyb2xsYmFyU2hvdy5uZXh0KHRoaXMuc2Nyb2xsYWJsZSAmJiB0aGlzLnNjcm9sbGJhckVuYWJsZWQpO1xyXG4gIH07XHJcblxyXG4gIG92ZXJyaWRlIHRpY2soKSB7XHJcbiAgICBzdXBlci50aWNrKCk7XHJcblxyXG4gICAgdGhpcy5zY3JvbGxCYXI/LnRpY2soKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlU2Nyb2xsQmFyKCkge1xyXG4gICAgdGhpcy5fJHVwZGF0ZVNjcm9sbEJhci5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoU2Nyb2xsYmFyKCkge1xyXG4gICAgdGhpcy51cGRhdGVTY3JvbGxCYXJIYW5kbGVyKHRydWUsIGZhbHNlLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgb25EcmFnU3RhcnQoKSB7XHJcbiAgICBzdXBlci5vbkRyYWdTdGFydCgpO1xyXG5cclxuICAgIHRoaXMuc3RvcFNjcm9sbGJhcigpO1xyXG5cclxuICAgIHRoaXMuX2lzU2Nyb2xsYmFyVXNlckFjdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMudXBkYXRlU2Nyb2xsQmFyKCk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSByZXNldCgpIHtcclxuICAgIHN1cGVyLnJlc2V0KCk7XHJcbiAgICB0aGlzLnRvdGFsU2l6ZSA9IDA7XHJcbiAgICB0aGlzLm9uUmVzaXplQ29udGVudCgwKTtcclxuICAgIHRoaXMuc3RvcFNjcm9sbGJhcigpO1xyXG4gICAgdGhpcy5yZWZyZXNoKHRydWUsIHRydWUpO1xyXG4gICAgdGhpcy5wcmVwYXJlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaChmaXJlVXBkYXRlOiBib29sZWFuID0gZmFsc2UsIHVwZGF0ZVNjcm9sbGJhcjogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgIGlmICh1cGRhdGVTY3JvbGxiYXIpIHtcclxuICAgICAgdGhpcy5zdG9wU2Nyb2xsaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zY3JvbGxMaW1pdHMoKTtcclxuXHJcbiAgICB0aGlzLnJlZnJlc2hDb29yZGluYXRlKHRoaXMuX3gsIHRoaXMuX3kpO1xyXG5cclxuICAgIGlmICh1cGRhdGVTY3JvbGxiYXIpIHtcclxuICAgICAgdGhpcy51cGRhdGVTY3JvbGxCYXJIYW5kbGVyKGZhbHNlKTtcclxuICAgICAgdGhpcy5lbWl0U2Nyb2xsYWJsZUV2ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZpcmVVcGRhdGUpIHtcclxuICAgICAgdGhpcy5maXJlU2Nyb2xsRXZlbnQoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc25hcElmTmVlZChhbmltYXRlZCA9IHRydWUpIHtcclxuICAgIHRoaXMuc25hcFdpdGhJbml0aWFsRm9yY2VJZk5lY2Vzc2FyeShudWxsLCBhbmltYXRlZCwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBzdGFydFNjcm9sbFRvKCkge1xyXG4gICAgdGhpcy5zdG9wU2Nyb2xsYmFyKCk7XHJcbiAgICB0aGlzLnN0b3BTY3JvbGxpbmcodHJ1ZSk7XHJcbiAgICB0aGlzLl9zY3JvbGxEaXJlY3Rpb24uY2xlYXIoKTtcclxuICAgIHRoaXMuZHJvcFZlbG9jaXR5KCk7XHJcbiAgICB0aGlzLl9pc1Njcm9sbHNUbyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBmaW5pc2hlZFNjcm9sbFRvKCkge1xyXG4gICAgdGhpcy5faXNTY3JvbGxzVG8gPSBmYWxzZTtcclxuICAgIHRoaXMuX3Njcm9sbERpcmVjdGlvbi5jbGVhcigpO1xyXG4gICAgdGhpcy5kcm9wVmVsb2NpdHkoKTtcclxuICAgIHRoaXMuY2hlY2tJbnRlcnNlY3Rpb25Db21wb25lbnQoKTtcclxuICAgIHRoaXMuZmlyZVNjcm9sbEV2ZW50KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG8ocGFyYW1zOiBJU2Nyb2xsVG9QYXJhbXMpOiBudW1iZXIge1xyXG4gICAgY29uc3QgdXNlckFjdGlvbiA9IHBhcmFtcz8udXNlckFjdGlvbiA/PyB0cnVlO1xyXG4gICAgaWYgKHVzZXJBY3Rpb24pIHtcclxuICAgICAgdGhpcy5faXNTY3JvbGxiYXJVc2VyQWN0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2Nyb2xsQmFyPy5zdG9wU2Nyb2xsaW5nKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5zY3JvbGwoeyAuLi5wYXJhbXMsIHVzZXJBY3Rpb246IHVzZXJBY3Rpb24gfSk7XHJcbiAgfVxyXG5cclxuICBzdG9wU2Nyb2xsYmFyKCkge1xyXG4gICAgaWYgKCEhdGhpcy5zY3JvbGxCYXIpIHtcclxuICAgICAgdGhpcy5zY3JvbGxCYXIuc3RvcFNjcm9sbGluZygpO1xyXG4gICAgICB0aGlzLmFsaWduUG9zaXRpb24oKTtcclxuICAgICAgdGhpcy5kcm9wVmVsb2NpdHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZHJvcFZlbG9jaXR5KCkge1xyXG4gICAgdGhpcy5fdmVsb2NpdGllcyA9IFswXTtcclxuICAgIHRoaXMuXyR2ZWxvY2l0eS5uZXh0KDApO1xyXG4gICAgdGhpcy5fJGF2ZXJhZ2VWZWxvY2l0eS5uZXh0KDApO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHN0b3BNb3ZpbmcoKSB7XHJcbiAgICBzdXBlci5zdG9wTW92aW5nKCk7XHJcbiAgICB0aGlzLmRyb3BWZWxvY2l0eSgpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIG9uQW5pbWF0aW9uQ29tcGxldGUocG9zaXRpb246IG51bWJlcikge1xyXG4gICAgdGhpcy5kcm9wVmVsb2NpdHkoKTtcclxuICAgIHRoaXMuXyRzY3JvbGxFbmQubmV4dChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBvblNjcm9sbEJhckRyYWdIYW5kbGVyKGV2ZW50OiBJU2Nyb2xsQmFyRHJhZ0V2ZW50KSB7XHJcbiAgICBjb25zdCB7IHBvc2l0aW9uLCBtaW4sIG1heCwgdXNlckFjdGlvbiB9ID0gZXZlbnQ7XHJcbiAgICB0aGlzLl9pc1Njcm9sbGJhclVzZXJBY3Rpb24gPSB1c2VyQWN0aW9uO1xyXG4gICAgaWYgKCF1c2VyQWN0aW9uKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuXyRzY3JvbGxiYXJTY3JvbGwubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuc3RvcFNjcm9sbGluZyh0cnVlKTtcclxuICAgIGNvbnN0IGlzVmVydGljYWwgPSB0aGlzLl8kaXNWZXJ0aWNhbC5nZXRWYWx1ZSgpLFxyXG4gICAgICB7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlUG9zaXRpb24sXHJcbiAgICAgIH0gPSB0aGlzLl9zY3JvbGxCb3guZ2V0U2Nyb2xsUG9zaXRpb25CeVNjcm9sbEJhcih7XHJcbiAgICAgICAgc2Nyb2xsU2l6ZTogaXNWZXJ0aWNhbCA/IHRoaXMuc2Nyb2xsSGVpZ2h0IDogdGhpcy5zY3JvbGxXaWR0aCxcclxuICAgICAgICBwb3NpdGlvbixcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5zY3JvbGxUbyh7XHJcbiAgICAgIFtpc1ZlcnRpY2FsID8gVE9QIDogTEVGVF06IGFic29sdXRlUG9zaXRpb24sIGJlaGF2aW9yOiBJTlNUQU5ULFxyXG4gICAgICBibGVuZGluZzogZmFsc2UsIHVzZXJBY3Rpb246IHRydWUsIGZpcmVVcGRhdGU6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZW1pdFNjcm9sbGFibGVFdmVudCgpO1xyXG4gICAgdGhpcy5fc2VydmljZS51cGRhdGUoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgb25TY3JvbGxCYXJEcmFnRW5kSGFuZGxlcihldmVudDogSVNjcm9sbEJhckRyYWdFdmVudCkge1xyXG4gICAgY29uc3QgeyBwb3NpdGlvbiwgbWluLCBtYXgsIHVzZXJBY3Rpb24gfSA9IGV2ZW50O1xyXG4gICAgdGhpcy5faXNTY3JvbGxiYXJVc2VyQWN0aW9uID0gdXNlckFjdGlvbjtcclxuICAgIGlmICghdXNlckFjdGlvbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9pc1Njcm9sbGJhclVzZXJBY3Rpb24gPSBmYWxzZTtcclxuICAgIHRoaXMuZHJvcFZlbG9jaXR5KCk7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLnVwZGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCBpc0VkZ2UgPSB0aGlzLmZpcmVVcGRhdGVJZkVkZ2VzRGV0ZWN0ZWQocG9zaXRpb24sIG1pbiwgbWF4LCB0cnVlLCB0cnVlKTtcclxuICAgIGlmICghaXNFZGdlKSB7XHJcbiAgICAgIHRoaXMuYWxpZ25Qb3NpdGlvbigpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fc2Nyb2xsRGlyZWN0aW9uLmNsZWFyKCk7XHJcbiAgICB0aGlzLl8kc2Nyb2xsYmFyU2Nyb2xsLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmZpcmVTY3JvbGxFdmVudCh0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlyZVVwZGF0ZUlmRWRnZXNEZXRlY3RlZChwb3NpdGlvbjogbnVtYmVyLCBtaW46IG51bWJlciA9IDAsIG1heDogbnVtYmVyID0gMSwgYW5pbWF0aW9uOiBib29sZWFuID0gZmFsc2UsIHVzZXJBY3Rpb246IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgaWYgKHVzZXJBY3Rpb24gJiYgYW5pbWF0aW9uKSB7XHJcbiAgICAgIGlmIChwb3NpdGlvbiA8PSBtaW4pIHtcclxuICAgICAgICB0aGlzLl9zZXJ2aWNlLnNjcm9sbFRvU3RhcnQoKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmIChwb3NpdGlvbiA+PSBtYXgpIHtcclxuICAgICAgICB0aGlzLl9zZXJ2aWNlLnNjcm9sbFRvRW5kKCk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn0iLCI8ZGl2IGxvY2FsZVNlbnNpdGl2ZSBbbGFuZ1RleHREaXJdPVwiKCRsYW5nVGV4dERpciB8IGFzeW5jKSFcIiBbbGlzdERpcl09XCIoJGRpcmVjdGlvbiB8IGFzeW5jKSFcIiBjbGFzcz1cIm5ndmxfX2NvbnRhaW5lclwiXHJcbiAgICBbbmdDbGFzc109XCIoJGNvbnRhaW5lckNsYXNzZXMgfCBhc3luYykhXCI+XHJcbiAgICA8c3ZnIHBhcnQ9XCJ2aWV3cG9ydFwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCI+XHJcbiAgICAgICAgPGZpbHRlciBbaWRdPVwiX2ZpbHRlcklkXCI+XHJcbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciAjZmlsdGVyPjwvZmVHYXVzc2lhbkJsdXI+XHJcbiAgICAgICAgPC9maWx0ZXI+XHJcbiAgICAgICAgPGZvcmVpZ25PYmplY3QgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIGNsYXNzPVwibmd2bF9fdmlld3BvcnRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ndmxfX3Njcm9sbGVyLXdyYXBwZXJcIiBbY2xhc3MuZmlsdGVyZWRdPVwiKCRtb3Rpb25CbHVyRW5hYmxlZCB8IGFzeW5jKSFcIiBbc3R5bGUuZmlsdGVyXT1cIigkbW90aW9uQmx1ckVuYWJsZWQgfCBhc3luYykhID8gX2ZpbHRlciA6ICd1bnNldCdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2RrU2Nyb2xsYWJsZSAjc2Nyb2xsVmlld3BvcnQgcGFydD1cInNjcm9sbGVyXCIgY2xhc3M9XCJuZ3ZsX19zY3JvbGxlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgI3Njcm9sbENvbnRlbnQgW2F0dHIuYXJpYS1vcmllbnRhdGlvbl09XCIoJGRpcmVjdGlvbiB8IGFzeW5jKSFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdPVwiJGZvY3VzZWRFbGVtZW50IHwgYXN5bmNcIiB0YWJpbmRleD1cIjBcIiBwYXJ0PVwibGlzdFwiIGNsYXNzPVwibmd2bF9fbGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIigkYWN0dWFsQ2xhc3NlcyB8IGFzeW5jKSFcIiBbbmdTdHlsZV09XCIoJGxpc3RTdHlsZXMgfCBhc3luYykhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2ZvcmVpZ25PYmplY3Q+XHJcbiAgICA8L3N2Zz5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoJHNjcm9sbGJhckVuYWJsZWQgfCBhc3luYykhXCI+XHJcbiAgICAgICAgPG5nLXNjcm9sbC1iYXIgI3Njcm9sbEJhciBbZGlyZWN0aW9uXT1cIigkZGlyZWN0aW9uIHwgYXN5bmMpIVwiIFtzaXplXT1cIigkYWN0dWFsVGh1bWJTaXplIHwgYXN5bmMpIVwiIFtyZW5kZXJlcl09XCIoJHNjcm9sbGJhclRodW1iUmVuZGVyZXIgfCBhc3luYykhXCJcclxuICAgICAgICAgICAgW3RoaWNrbmVzc109XCIoJHNjcm9sbGJhclRoaWNrbmVzcyB8IGFzeW5jKSFcIiBbcGFyYW1zXT1cIigkc2Nyb2xsYmFyVGh1bWJQYXJhbXMgfCBhc3luYykhXCIgW2xvYWRpbmddPVwiKCRsb2FkaW5nIHwgYXN5bmMpIVwiIFtvdmVybGFwcGluZ109XCIoJG92ZXJsYXBwaW5nU2Nyb2xsYmFyIHwgYXN5bmMpIVwiXHJcbiAgICAgICAgICAgIFt0aHVtYkdyYWRpZW50UG9zaXRpb25zXT1cIigkdGh1bWJDb2xvclBvc2l0aW9ucyB8IGFzeW5jKSFcIiBbcHJlcGFyZWRdPVwiKCRwcmVwYXJlZFNpZ25hbCB8IGFzeW5jKSFcIiBbaW50ZXJhY3RpdmVdPVwiKCRzY3JvbGxiYXJJbnRlcmFjdGl2ZSB8IGFzeW5jKSFcIlxyXG4gICAgICAgICAgICBbc2hvd109XCIoJHNob3cgfCBhc3luYykhXCIgW3N0YXJ0T2Zmc2V0XT1cIigkc3RhcnRPZmZzZXQgfCBhc3luYykhXCIgW2xhbmdUZXh0RGlyXT1cIigkbGFuZ1RleHREaXIgfCBhc3luYykhXCJcclxuICAgICAgICAgICAgW2VuZE9mZnNldF09XCIoJGVuZE9mZnNldCB8IGFzeW5jKSFcIiBbb3ZlcnNjcm9sbEVuYWJsZWRdPVwiKCRvdmVyc2Nyb2xsRW5hYmxlZCB8IGFzeW5jKSFcIiBbc2Nyb2xsQmVoYXZpb3JdPVwiKCRzY3JvbGxCZWhhdmlvciB8IGFzeW5jKSFcIlxyXG4gICAgICAgICAgICBbc2Nyb2xsYmFyTWluU2l6ZV09XCIoJHNjcm9sbGJhck1pblNpemUgfCBhc3luYykhXCIgKG9uRHJhZyk9XCJvblNjcm9sbEJhckRyYWdIYW5kbGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAob25EcmFnRW5kKT1cIm9uU2Nyb2xsQmFyRHJhZ0VuZEhhbmRsZXIoJGV2ZW50KVwiPjwvbmctc2Nyb2xsLWJhcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj4iXX0=
|
|
525
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2Nyb2xsZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1zY3JvbGxlci9uZy1zY3JvbGxlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbGVyL25nLXNjcm9sbGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNySSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXBDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRWhGLE9BQU8sRUFDTCxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSw2QkFBNkIsRUFBRSx5QkFBeUIsRUFDckosNkJBQTZCLEVBQUUsMEJBQTBCLEVBQUUsMkJBQTJCLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxlQUFlLEVBQUUsYUFBYSxHQUMzSSxNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQW1CLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXpGLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7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QUFLO2dCQVlGLG9CQUFvQjtzQkFEdkIsS0FBSztnQkFZRixjQUFjO3NCQURqQixLQUFLO2dCQVlGLG9CQUFvQjtzQkFEdkIsS0FBSztnQkFZRixPQUFPO3NCQURWLEtBQUs7Z0JBWUYsT0FBTztzQkFEVixLQUFLO2dCQVlGLE9BQU87c0JBRFYsS0FBSztnQkFZRixnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBWUYsa0JBQWtCO3NCQURyQixLQUFLO2dCQVlGLHNCQUFzQjtzQkFEekIsS0FBSztnQkFZRixvQkFBb0I7c0JBRHZCLEtBQUs7Z0JBWUYsVUFBVTtzQkFEYixLQUFLO2dCQVlGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBWUYsaUJBQWlCO3NCQURwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIGZyb20sIG9mLCBTdWJqZWN0LCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTY3JvbGxCb3ggfSBmcm9tICcuL3V0aWxzJztcclxuaW1wb3J0IHsgSWQsIFRleHREaXJlY3Rpb24gfSBmcm9tICcuLi8uLi90eXBlcyc7XHJcbmltcG9ydCB7IE5nU2Nyb2xsQmFyQ29tcG9uZW50IH0gZnJvbSBcIi4uL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgR3JhZGllbnRDb2xvclBvc2l0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzL2dyYWRpZW50LWNvbG9yLXBvc2l0aW9ucyc7XHJcbmltcG9ydCB7XHJcbiAgQkVIQVZJT1JfSU5TVEFOVCwgREVGQVVMVF9NQVhfTU9USU9OX0JMVVIsIERFRkFVTFRfTU9USU9OX0JMVVIsIERFRkFVTFRfTU9USU9OX0JMVVJfRU5BQkxFRCwgREVGQVVMVF9PVkVSTEFQUElOR19TQ1JPTExCQVIsIERFRkFVTFRfU0NST0xMQkFSX0VOQUJMRUQsXHJcbiAgREVGQVVMVF9TQ1JPTExCQVJfSU5URVJBQ1RJVkUsIERFRkFVTFRfU0NST0xMQkFSX01JTl9TSVpFLCBERUZBVUxUX1NDUk9MTEJBUl9USElDS05FU1MsIExFRlRfUFJPUF9OQU1FLCBQWCwgU0NST0xMRVJfU0NST0xMLCBUT1BfUFJPUF9OQU1FLFxyXG59IGZyb20gJy4uLy4uL2NvbnN0JztcclxuaW1wb3J0IHsgVGV4dERpcmVjdGlvbnMgfSBmcm9tICcuLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IElTY3JvbGxUb1BhcmFtcywgTmdTY3JvbGxWaWV3LCBTQ1JPTExfVklFV19JTlZFUlNJT04gfSBmcm9tICcuLi9uZy1zY3JvbGwtdmlldyc7XHJcbmltcG9ydCB7IElTY3JvbGxCYXJEcmFnRXZlbnQgfSBmcm9tICcuLi9uZy1zY3JvbGwtYmFyL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBTQ1JPTExfVklFV19OT1JNQUxJWkVfVkFMVUVfRlJPTV9aRVJPLCBTQ1JPTExfVklFV19PVkVSU0NST0xMX0VOQUJMRUQgfSBmcm9tICcuLi9uZy1zY3JvbGwtdmlldy9jb25zdCc7XHJcbmltcG9ydCB7IElTaXplIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcblxyXG5jb25zdCBUT1AgPSAndG9wJyxcclxuICBMRUZUID0gJ2xlZnQnLFxyXG4gIElOU1RBTlQgPSAnaW5zdGFudCcgYXMgU2Nyb2xsQmVoYXZpb3IsXHJcbiAgTU9USU9OX0JMVVIgPSAnbW90aW9uLWJsdXInO1xyXG5cclxuZXhwb3J0IGNvbnN0IFNDUk9MTF9FVkVOVCA9IG5ldyBFdmVudChTQ1JPTExFUl9TQ1JPTEwpO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBzY3JvbGxlciBmb3IgdGhlIE5nVmlydHVhbExpc3QgaXRlbSBjb21wb25lbnRcclxuICogTWF4aW11bSBwZXJmb3JtYW5jZSBmb3IgZXh0cmVtZWx5IGxhcmdlIGxpc3RzLlxyXG4gKiBJdCBpcyBiYXNlZCBvbiBhbGdvcml0aG1zIGZvciB2aXJ0dWFsaXphdGlvbiBvZiBzY3JlZW4gb2JqZWN0cy5cclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTQueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbGVyL25nLXNjcm9sbGVyLmNvbXBvbmVudC50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgQWxleGFuZHJvdmljaCBHcmViZW5uaWtvdlxyXG4gKiBAZW1haWwgZGpvbm55eEBnbWFpbC5jb21cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmctc2Nyb2xsZXInLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgeyBwcm92aWRlOiBTQ1JPTExfVklFV19JTlZFUlNJT04sIHVzZVZhbHVlOiBmYWxzZSB9LFxyXG4gICAgeyBwcm92aWRlOiBTQ1JPTExfVklFV19OT1JNQUxJWkVfVkFMVUVfRlJPTV9aRVJPLCB1c2VWYWx1ZTogdHJ1ZSB9LFxyXG4gICAgeyBwcm92aWRlOiBTQ1JPTExfVklFV19PVkVSU0NST0xMX0VOQUJMRUQsIHVzZVZhbHVlOiB0cnVlIH0sXHJcbiAgXSxcclxuICBzdGFuZGFsb25lOiBmYWxzZSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmctc2Nyb2xsZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25nLXNjcm9sbGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ1Njcm9sbGVyQ29tcG9uZW50IGV4dGVuZHMgTmdTY3JvbGxWaWV3IHtcclxuICBAVmlld0NoaWxkKCdzY3JvbGxCYXInLCB7IHJlYWQ6IE5nU2Nyb2xsQmFyQ29tcG9uZW50IH0pXHJcbiAgcmVhZG9ubHkgc2Nyb2xsQmFyOiBOZ1Njcm9sbEJhckNvbXBvbmVudCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZmlsdGVyJylcclxuICByZWFkb25seSBmaWx0ZXI6IEVsZW1lbnRSZWY8U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50PiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcmVhZG9ubHkgb25TY3JvbGxiYXJWaXNpYmxlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBwcml2YXRlIF8kc2Nyb2xsYmFyRW5hYmxlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oREVGQVVMVF9TQ1JPTExCQVJfRU5BQkxFRCk7XHJcbiAgcmVhZG9ubHkgJHNjcm9sbGJhckVuYWJsZWQgPSB0aGlzLl8kc2Nyb2xsYmFyRW5hYmxlZC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgc2Nyb2xsYmFyRW5hYmxlZCh2OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5fJHNjcm9sbGJhckVuYWJsZWQuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kc2Nyb2xsYmFyRW5hYmxlZC5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgc2Nyb2xsYmFyRW5hYmxlZCgpIHsgcmV0dXJuIHRoaXMuXyRzY3JvbGxiYXJFbmFibGVkLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJHNjcm9sbGJhckludGVyYWN0aXZlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihERUZBVUxUX1NDUk9MTEJBUl9JTlRFUkFDVElWRSk7XHJcbiAgcmVhZG9ubHkgJHNjcm9sbGJhckludGVyYWN0aXZlID0gdGhpcy5fJHNjcm9sbGJhckludGVyYWN0aXZlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBzY3JvbGxiYXJJbnRlcmFjdGl2ZSh2OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5fJHNjcm9sbGJhckludGVyYWN0aXZlLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHNjcm9sbGJhckludGVyYWN0aXZlLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBzY3JvbGxiYXJJbnRlcmFjdGl2ZSgpIHsgcmV0dXJuIHRoaXMuXyRzY3JvbGxiYXJJbnRlcmFjdGl2ZS5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRmb2N1c2VkRWxlbWVudCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SWQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcbiAgcmVhZG9ubHkgJGZvY3VzZWRFbGVtZW50ID0gdGhpcy5fJGZvY3VzZWRFbGVtZW50LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBmb2N1c2VkRWxlbWVudCh2OiBJZCB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuXyRmb2N1c2VkRWxlbWVudC5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRmb2N1c2VkRWxlbWVudC5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgZm9jdXNlZEVsZW1lbnQoKSB7IHJldHVybiB0aGlzLl8kZm9jdXNlZEVsZW1lbnQuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kb3ZlcmxhcHBpbmdTY3JvbGxiYXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KERFRkFVTFRfT1ZFUkxBUFBJTkdfU0NST0xMQkFSKTtcclxuICByZWFkb25seSAkb3ZlcmxhcHBpbmdTY3JvbGxiYXIgPSB0aGlzLl8kb3ZlcmxhcHBpbmdTY3JvbGxiYXIuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG92ZXJsYXBwaW5nU2Nyb2xsYmFyKHY6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLl8kb3ZlcmxhcHBpbmdTY3JvbGxiYXIuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kb3ZlcmxhcHBpbmdTY3JvbGxiYXIubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IG92ZXJsYXBwaW5nU2Nyb2xsYmFyKCkgeyByZXR1cm4gdGhpcy5fJG92ZXJsYXBwaW5nU2Nyb2xsYmFyLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJGNvbnRlbnQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG4gIHJlYWRvbmx5ICRjb250ZW50ID0gdGhpcy5fJGZvY3VzZWRFbGVtZW50LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBjb250ZW50KHY6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy5fJGNvbnRlbnQuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kY29udGVudC5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgY29udGVudCgpIHsgcmV0dXJuIHRoaXMuXyRjb250ZW50LmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJGxvYWRpbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICByZWFkb25seSAkbG9hZGluZyA9IHRoaXMuXyRsb2FkaW5nLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBsb2FkaW5nKHY6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLl8kbG9hZGluZy5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRsb2FkaW5nLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBsb2FkaW5nKCkgeyByZXR1cm4gdGhpcy5fJGxvYWRpbmcuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kY2xhc3NlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBbY05hbWU6IHN0cmluZ106IGJvb2xlYW4gfT4oe30pO1xyXG4gIHJlYWRvbmx5ICRjbGFzc2VzID0gdGhpcy5fJGNsYXNzZXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGNsYXNzZXModjogeyBbY05hbWU6IHN0cmluZ106IGJvb2xlYW4gfSkge1xyXG4gICAgaWYgKHRoaXMuXyRjbGFzc2VzLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJGNsYXNzZXMubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGNsYXNzZXMoKSB7IHJldHVybiB0aGlzLl8kY2xhc3Nlcy5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRzY3JvbGxiYXJNaW5TaXplID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KERFRkFVTFRfU0NST0xMQkFSX01JTl9TSVpFKTtcclxuICByZWFkb25seSAkc2Nyb2xsYmFyTWluU2l6ZSA9IHRoaXMuXyRzY3JvbGxiYXJNaW5TaXplLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBzY3JvbGxiYXJNaW5TaXplKHY6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuXyRzY3JvbGxiYXJNaW5TaXplLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHNjcm9sbGJhck1pblNpemUubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHNjcm9sbGJhck1pblNpemUoKSB7IHJldHVybiB0aGlzLl8kc2Nyb2xsYmFyTWluU2l6ZS5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRzY3JvbGxiYXJUaGlja25lc3MgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oREVGQVVMVF9TQ1JPTExCQVJfVEhJQ0tORVNTKTtcclxuICByZWFkb25seSAkc2Nyb2xsYmFyVGhpY2tuZXNzID0gdGhpcy5fJHNjcm9sbGJhclRoaWNrbmVzcy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgc2Nyb2xsYmFyVGhpY2tuZXNzKHY6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuXyRzY3JvbGxiYXJUaGlja25lc3MuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kc2Nyb2xsYmFyVGhpY2tuZXNzLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBzY3JvbGxiYXJUaGlja25lc3MoKSB7IHJldHVybiB0aGlzLl8kc2Nyb2xsYmFyVGhpY2tuZXNzLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJHNjcm9sbGJhclRodW1iUmVuZGVyZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPihudWxsKTtcclxuICByZWFkb25seSAkc2Nyb2xsYmFyVGh1bWJSZW5kZXJlciA9IHRoaXMuXyRzY3JvbGxiYXJUaHVtYlJlbmRlcmVyLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBzY3JvbGxiYXJUaHVtYlJlbmRlcmVyKHY6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsKSB7XHJcbiAgICBpZiAodGhpcy5fJHNjcm9sbGJhclRodW1iUmVuZGVyZXIuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kc2Nyb2xsYmFyVGh1bWJSZW5kZXJlci5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgc2Nyb2xsYmFyVGh1bWJSZW5kZXJlcigpIHsgcmV0dXJuIHRoaXMuXyRzY3JvbGxiYXJUaHVtYlJlbmRlcmVyLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJHNjcm9sbGJhclRodW1iUGFyYW1zID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFtwcm9wTmFtZTogc3RyaW5nXTogYW55IH0gfCBudWxsPihudWxsKTtcclxuICByZWFkb25seSAkc2Nyb2xsYmFyVGh1bWJQYXJhbXMgPSB0aGlzLl8kc2Nyb2xsYmFyVGh1bWJQYXJhbXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNjcm9sbGJhclRodW1iUGFyYW1zKHY6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSB8IG51bGwpIHtcclxuICAgIGlmICh0aGlzLl8kc2Nyb2xsYmFyVGh1bWJQYXJhbXMuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kc2Nyb2xsYmFyVGh1bWJQYXJhbXMubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHNjcm9sbGJhclRodW1iUGFyYW1zKCkgeyByZXR1cm4gdGhpcy5fJHNjcm9sbGJhclRodW1iUGFyYW1zLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJG1vdGlvbkJsdXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlciB8ICdkaXNhYmxlZCc+KERFRkFVTFRfTU9USU9OX0JMVVIpO1xyXG4gIHJlYWRvbmx5ICRtb3Rpb25CbHVyID0gdGhpcy5fJG1vdGlvbkJsdXIuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG1vdGlvbkJsdXIodjogbnVtYmVyIHwgJ2Rpc2FibGVkJykge1xyXG4gICAgaWYgKHRoaXMuXyRtb3Rpb25CbHVyLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJG1vdGlvbkJsdXIubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IG1vdGlvbkJsdXIoKSB7IHJldHVybiB0aGlzLl8kbW90aW9uQmx1ci5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRtYXhNb3Rpb25CbHVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KERFRkFVTFRfTUFYX01PVElPTl9CTFVSKTtcclxuICByZWFkb25seSAkbWF4TW90aW9uQmx1ciA9IHRoaXMuXyRtYXhNb3Rpb25CbHVyLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBtYXhNb3Rpb25CbHVyKHY6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuXyRtYXhNb3Rpb25CbHVyLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJG1heE1vdGlvbkJsdXIubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IG1heE1vdGlvbkJsdXIoKSB7IHJldHVybiB0aGlzLl8kbWF4TW90aW9uQmx1ci5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRtb3Rpb25CbHVyRW5hYmxlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oREVGQVVMVF9NT1RJT05fQkxVUl9FTkFCTEVEKTtcclxuICByZWFkb25seSAkbW90aW9uQmx1ckVuYWJsZWQgPSB0aGlzLl8kbW90aW9uQmx1ckVuYWJsZWQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG1vdGlvbkJsdXJFbmFibGVkKHY6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLl8kbW90aW9uQmx1ckVuYWJsZWQuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kbW90aW9uQmx1ckVuYWJsZWQubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IG1vdGlvbkJsdXJFbmFibGVkKCkgeyByZXR1cm4gdGhpcy5fJG1vdGlvbkJsdXJFbmFibGVkLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJGFjdHVhbENsYXNzZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgW2NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0+KHt9KTtcclxuICByZWFkb25seSAkYWN0dWFsQ2xhc3NlcyA9IHRoaXMuXyRhY3R1YWxDbGFzc2VzLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kY29udGFpbmVyQ2xhc3NlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBbY05hbWU6IHN0cmluZ106IGJvb2xlYW4gfT4oe30pO1xyXG4gIHJlYWRvbmx5ICRjb250YWluZXJDbGFzc2VzID0gdGhpcy5fJGNvbnRhaW5lckNsYXNzZXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyR0aHVtYkdyYWRpZW50UG9zaXRpb25zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxHcmFkaWVudENvbG9yUG9zaXRpb25zPihbMCwgMF0pO1xyXG4gIHJlYWRvbmx5ICR0aHVtYkdyYWRpZW50UG9zaXRpb25zID0gdGhpcy5fJHRodW1iR3JhZGllbnRQb3NpdGlvbnMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyR0aHVtYlNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcbiAgcmVhZG9ubHkgJHRodW1iU2l6ZSA9IHRoaXMuXyR0aHVtYlNpemUuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyR0aHVtYkNvbG9yUG9zaXRpb25zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxHcmFkaWVudENvbG9yUG9zaXRpb25zPihbMCwgMF0pO1xyXG4gIHJlYWRvbmx5ICR0aHVtYkNvbG9yUG9zaXRpb25zID0gdGhpcy5fJHRodW1iQ29sb3JQb3NpdGlvbnMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyRhY3R1YWxUaHVtYlNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcbiAgcmVhZG9ubHkgJGFjdHVhbFRodW1iU2l6ZSA9IHRoaXMuXyRhY3R1YWxUaHVtYlNpemUuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyRzY3JvbGxiYXJTaG93ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgJHNjcm9sbGJhclNob3cgPSB0aGlzLl8kc2Nyb2xsYmFyU2hvdy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfJHNob3cgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICByZWFkb25seSAkc2hvdyA9IHRoaXMuXyRzaG93LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kcHJlcGFyZWRTaWduYWwgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICByZWFkb25seSAkcHJlcGFyZWRTaWduYWwgPSB0aGlzLl8kcHJlcGFyZWRTaWduYWwuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyRsaXN0U3R5bGVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IHBlcnNwZWN0aXZlT3JpZ2luOiBzdHJpbmcgfT4oeyBwZXJzcGVjdGl2ZU9yaWdpbjogJ2NlbnRlcicgfSk7XHJcbiAgcmVhZG9ubHkgJGxpc3RTdHlsZXMgPSB0aGlzLl8kbGlzdFN0eWxlcy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfc2Nyb2xsQm94ID0gbmV3IFNjcm9sbEJveCgpO1xyXG5cclxuICBnZXQgaG9zdCgpIHtcclxuICAgIHJldHVybiB0aGlzLnNjcm9sbFZpZXdwb3J0Py5uYXRpdmVFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfJHNjcm9sbGJhclNjcm9sbCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgcmVhZG9ubHkgJHNjcm9sbGJhclNjcm9sbCA9IHRoaXMuXyRzY3JvbGxiYXJTY3JvbGwuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVkID0gZmFsc2U7XHJcbiAgc2V0IHByZXBhcmVkKHY6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLl9wcmVwYXJlZCAhPT0gdikge1xyXG4gICAgICB0aGlzLl9wcmVwYXJlZCA9IHY7XHJcbiAgICAgIHRoaXMuXyRwcmVwYXJlZFNpZ25hbC5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHNldFgoeDogbnVtYmVyLCBzbmFwOiBib29sZWFuID0gdHJ1ZSwgbm9ybWFsaXplOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgaWYgKHggIT09IHVuZGVmaW5lZCAmJiAhTnVtYmVyLmlzTmFOKHgpKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlRGlyZWN0aW9uKHgsIHRoaXMuX3gpO1xyXG5cclxuICAgICAgdGhpcy5feCA9IHRoaXMuX2FjdHVhbFggPSB4O1xyXG5cclxuICAgICAgY29uc3Qgb3ZlcnJpZGRlbiA9IG5vcm1hbGl6ZSA/IHRoaXMubm9ybWFsaXplU2Nyb2xsU2l6ZSgpIDogZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLnJlZnJlc2hDb29yZGluYXRlKHRoaXMuX3gsIHRoaXMuX3kpO1xyXG5cclxuICAgICAgaWYgKCFvdmVycmlkZGVuKSB7XHJcbiAgICAgICAgdGhpcy5tZWFzdXJlVmVsb2NpdHkoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy51cGRhdGVTY3JvbGxCYXIoKTtcclxuXHJcbiAgICAgIHRoaXMucmVjYWxjdWxhdGVQZXJzcGVjdGl2ZSgpO1xyXG5cclxuICAgICAgaWYgKHNuYXApIHtcclxuICAgICAgICB0aGlzLmNoZWNrSW50ZXJzZWN0aW9uQ29tcG9uZW50KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvdmVycmlkZSBzZXRZKHk6IG51bWJlciwgc25hcDogYm9vbGVhbiA9IHRydWUsIG5vcm1hbGl6ZTogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgIGlmICh5ICE9PSB1bmRlZmluZWQgJiYgIU51bWJlci5pc05hTih5KSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZURpcmVjdGlvbih5LCB0aGlzLl95KTtcclxuXHJcbiAgICAgIHRoaXMuX3kgPSB0aGlzLl9hY3R1YWxZID0geTtcclxuXHJcbiAgICAgIGNvbnN0IG92ZXJyaWRkZW4gPSBub3JtYWxpemUgPyB0aGlzLm5vcm1hbGl6ZVNjcm9sbFNpemUoKSA6IGZhbHNlO1xyXG5cclxuICAgICAgdGhpcy5yZWZyZXNoQ29vcmRpbmF0ZSh0aGlzLl94LCB0aGlzLl95KTtcclxuXHJcbiAgICAgIGlmICghb3ZlcnJpZGRlbikge1xyXG4gICAgICAgIHRoaXMubWVhc3VyZVZlbG9jaXR5KCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudXBkYXRlU2Nyb2xsQmFyKCk7XHJcblxyXG4gICAgICB0aGlzLnJlY2FsY3VsYXRlUGVyc3BlY3RpdmUoKTtcclxuXHJcbiAgICAgIGlmIChzbmFwKSB7XHJcbiAgICAgICAgdGhpcy5jaGVja0ludGVyc2VjdGlvbkNvbXBvbmVudCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBzZXQgc3RhcnRMYXlvdXRPZmZzZXQodjogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5fc3RhcnRMYXlvdXRPZmZzZXQgIT09IHYpIHtcclxuICAgICAgdGhpcy5fc3RhcnRMYXlvdXRPZmZzZXQgPSB2O1xyXG5cclxuICAgICAgdGhpcy5yZWZyZXNoQ29vcmRpbmF0ZSh0aGlzLl94LCB0aGlzLl95KTtcclxuXHJcbiAgICAgIHRoaXMucmVjYWxjdWxhdGVQZXJzcGVjdGl2ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBvdmVycmlkZSBnZXQgc3RhcnRMYXlvdXRPZmZzZXQoKSB7IHJldHVybiB0aGlzLl9zdGFydExheW91dE9mZnNldDsgfVxyXG5cclxuICBwcml2YXRlIF8kdmlld0luaXRpYWxpemVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgJHZpZXdJbml0aWFsaXplZCA9IHRoaXMuXyR2aWV3SW5pdGlhbGl6ZWQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgX2lzU2Nyb2xsYmFyVXNlckFjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGdldCBpc1Njcm9sbGJhclVzZXJBY3Rpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNTY3JvbGxiYXJVc2VyQWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF8kcmVzaXplVmlld3BvcnQgPSBuZXcgU3ViamVjdDxJU2l6ZT4oKTtcclxuICByZWFkb25seSAkcmVzaXplVmlld3BvcnQgPSB0aGlzLl8kcmVzaXplVmlld3BvcnQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByb3RlY3RlZCBfJHJlc2l6ZUNvbnRlbnQgPSBuZXcgU3ViamVjdDxJU2l6ZT4oKTtcclxuICByZWFkb25seSAkcmVzaXplQ29udGVudCA9IHRoaXMuXyRyZXNpemVDb250ZW50LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcm90ZWN0ZWQgX2ZpbHRlcklkOiBzdHJpbmc7XHJcblxyXG4gIHByb3RlY3RlZCBfZmlsdGVyOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICB0aGlzLl9maWx0ZXJJZCA9IGAke3RoaXMuX3NlcnZpY2UuaWR9LSR7TU9USU9OX0JMVVJ9YDtcclxuICAgIHRoaXMuX2ZpbHRlciA9IGB1cmwoIyR7dGhpcy5fZmlsdGVySWR9KWA7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcclxuXHJcbiAgICBjb25zdCAkZmlsdGVyID0gb2YodGhpcy5maWx0ZXIpLFxyXG4gICAgICAkbW90aW9uQmx1ciA9IHRoaXMuJG1vdGlvbkJsdXIsXHJcbiAgICAgICRtYXhNb3Rpb25CbHVyID0gdGhpcy4kbWF4TW90aW9uQmx1cixcclxuICAgICAgJG1vdGlvbkJsdXJFbmFibGVkID0gdGhpcy4kbW90aW9uQmx1ckVuYWJsZWQsXHJcbiAgICAgICRpc1ZlcnRpY2FsID0gdGhpcy4kaXNWZXJ0aWNhbDtcclxuXHJcbiAgICBjb25zdCAkc2Nyb2xsYmFyU2Nyb2xsID0gdGhpcy4kc2Nyb2xsYmFyU2Nyb2xsO1xyXG4gICAgJHNjcm9sbGJhclNjcm9sbC5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZGVib3VuY2VUaW1lKDUwKSxcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICB0aGlzLmRyb3BWZWxvY2l0eSgpO1xyXG4gICAgICAgIHRoaXMuZmlyZVNjcm9sbEV2ZW50KGZhbHNlKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbnN0ICRhdmVyYWdlVmVsb2NpdHkgPSB0aGlzLiRhdmVyYWdlVmVsb2NpdHk7XHJcbiAgICBjb21iaW5lTGF0ZXN0KFskaXNWZXJ0aWNhbCwgJGF2ZXJhZ2VWZWxvY2l0eSwgJGZpbHRlciwgJG1vdGlvbkJsdXJFbmFibGVkLCAkbW90aW9uQmx1ciwgJG1heE1vdGlvbkJsdXJdKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZmlsdGVyKChbLCAsIGYsIGUsIG1iXSkgPT4gISFmICYmICghIWUgJiYgbWIgIT09IDApKSxcclxuICAgICAgdGFwKChbaXNWZXJ0aWNhbCwgdiwgZmlsdGVyLCAsIG1iLCBtYk1heF0pID0+IHtcclxuICAgICAgICBjb25zdCBfdiA9IHYgKiAobWIgYXMgbnVtYmVyKSwgdmFsdWUgPSBfdiA+IG1iTWF4ID8gbWJNYXggOiBfdjtcclxuICAgICAgICBmaWx0ZXIhLm5hdGl2ZUVsZW1lbnQuc2V0U3RkRGV2aWF0aW9uKGlzVmVydGljYWwgPyAwIDogdiAqIHZhbHVlLCBpc1ZlcnRpY2FsID8gdiAqIHZhbHVlIDogMCk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoNTApLFxyXG4gICAgICB0YXAoKFssICwgZmlsdGVyLCAsXSkgPT4ge1xyXG4gICAgICAgIGZpbHRlciEubmF0aXZlRWxlbWVudC5zZXRTdGREZXZpYXRpb24oMCwgMCk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkcHJlcGFyZSA9IHRoaXMuJHByZXBhcmVkU2lnbmFsO1xyXG4gICAgJHByZXBhcmUucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGZpbHRlcih2ID0+ICEhdiksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxCYXJIYW5kbGVyKHRydWUsIGZhbHNlLCB0cnVlKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbnN0ICRzY3JvbGxiYXJFbmFibGVkID0gdGhpcy4kc2Nyb2xsYmFyRW5hYmxlZCxcclxuICAgICAgJHNjcm9sbGJhclNob3cgPSB0aGlzLiRzY3JvbGxiYXJTaG93O1xyXG5cclxuICAgIGNvbWJpbmVMYXRlc3QoWyRzY3JvbGxiYXJFbmFibGVkLCAkc2Nyb2xsYmFyU2hvdywgdGhpcy4kcHJlcGFyZWRTaWduYWxdKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgdGFwKChbc2Nyb2xsYmFyRW5hYmxlZCwgc2Nyb2xsYmFyU2hvdywgcHJlcGFyZWRdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJHNob3cubmV4dChzY3JvbGxiYXJFbmFibGVkICYmIHNjcm9sbGJhclNob3cgJiYgcHJlcGFyZWQpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29uc3QgJHN0YXJ0T2Zmc2V0ID0gdGhpcy4kc3RhcnRPZmZzZXQsXHJcbiAgICAgICRlbmRPZmZzZXQgPSB0aGlzLiRlbmRPZmZzZXQsXHJcbiAgICAgICRzY3JvbGxiYXJNaW5TaXplID0gdGhpcy4kc2Nyb2xsYmFyTWluU2l6ZSxcclxuICAgICAgJHRodW1iU2l6ZSA9IHRoaXMuJHRodW1iU2l6ZTtcclxuXHJcbiAgICBmcm9tKFskZW5kT2Zmc2V0LCAkc3RhcnRPZmZzZXQsICR0aHVtYlNpemUsICRzY3JvbGxiYXJNaW5TaXplLCAkaXNWZXJ0aWNhbF0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMCksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxCYXIoKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbnN0ICR1cGRhdGVTY3JvbGxCYXIgPSB0aGlzLiR1cGRhdGVTY3JvbGxCYXI7XHJcblxyXG4gICAgJHVwZGF0ZVNjcm9sbEJhci5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZGVib3VuY2VUaW1lKDApLFxyXG4gICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudXBkYXRlU2Nyb2xsQmFySGFuZGxlcighdGhpcy5faXNTY3JvbGxiYXJVc2VyQWN0aW9uKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbnN0ICRncmFiYmluZyA9IHRoaXMuJGdyYWJiaW5nO1xyXG4gICAgJGdyYWJiaW5nLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAodiA9PiB7XHJcbiAgICAgICAgdGhpcy5fc2VydmljZS5ncmFiYmluZyA9IHY7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLiRjbGFzc2VzLCB0aGlzLiRkaXJlY3Rpb24sIHRoaXMuJGdyYWJiaW5nLCB0aGlzLiRtb3Rpb25CbHVyRW5hYmxlZF0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMCksXHJcbiAgICAgIHRhcCgoW2NsYXNzZXMsIGRpcmVjdGlvbiwgZ3JhYmJpbmcsIGZpbHRlcmVkXSkgPT4ge1xyXG4gICAgICAgIHRoaXMuXyRhY3R1YWxDbGFzc2VzLm5leHQoeyAuLi5jbGFzc2VzLCBbZGlyZWN0aW9uXTogdHJ1ZSwgZ3JhYmJpbmcsIGZpbHRlcmVkIH0pO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy4kY29udGVudEJvdW5kcywgdGhpcy4kdmlld3BvcnRCb3VuZHMsIHRoaXMuJGlzVmVydGljYWwsIHRoaXMuJGRpcmVjdGlvbiwgdGhpcy4kZ3JhYmJpbmcsIHRoaXMuJHNjcm9sbGJhckVuYWJsZWQsIHRoaXMuJG92ZXJsYXBwaW5nU2Nyb2xsYmFyXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIGRlYm91bmNlVGltZSgwKSxcclxuICAgICAgdGFwKChbY29udGVudEJvdW5kcywgdmlld3BvcnRCb3VuZHMsIGlzVmVydGljYWwsIGRpcmVjdGlvbiwgZ3JhYmJpbmcsIHNjcm9sbGJhckVuYWJsZWQsIG92ZXJsYXBwaW5nU2Nyb2xsYmFyXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgd2lkdGg6IGNvbnRlbnRXaWR0aCwgaGVpZ2h0OiBjb250ZW50SGVpZ2h0IH0gPSBjb250ZW50Qm91bmRzLFxyXG4gICAgICAgICAgeyB3aWR0aCwgaGVpZ2h0IH0gPSB2aWV3cG9ydEJvdW5kcyxcclxuICAgICAgICAgIHZpZXdwb3J0U2l6ZSA9IGlzVmVydGljYWwgPyBoZWlnaHQgOiB3aWR0aCxcclxuICAgICAgICAgIGNvbnRlbnRTaXplID0gaXNWZXJ0aWNhbCA/IGNvbnRlbnRIZWlnaHQgOiBjb250ZW50V2lkdGg7XHJcbiAgICAgICAgdGhpcy5fJGNvbnRhaW5lckNsYXNzZXMubmV4dCh7IFtkaXJlY3Rpb25dOiB0cnVlLCBncmFiYmluZywgZW5hYmxlZDogc2Nyb2xsYmFyRW5hYmxlZCwgc2Nyb2xsYWJsZTogY29udGVudFNpemUgPiB2aWV3cG9ydFNpemUsIG92ZXJsYXBwaW5nOiBvdmVybGFwcGluZ1Njcm9sbGJhciB9KTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuJHZpZXdJbml0aWFsaXplZC5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZmlsdGVyKHYgPT4gISF2KSxcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhckhhbmRsZXIoKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuJHRodW1iR3JhZGllbnRQb3NpdGlvbnMucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRlYm91bmNlVGltZSgwKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIHRoaXMuXyR0aHVtYkNvbG9yUG9zaXRpb25zLm5leHQodik7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLiR0aHVtYlNpemUucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRlYm91bmNlVGltZSgwKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIHRoaXMuXyRhY3R1YWxUaHVtYlNpemUubmV4dCh2KTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuXyR2aWV3SW5pdGlhbGl6ZWQubmV4dCh0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVjYWxjdWxhdGVQZXJzcGVjdGl2ZSgpIHtcclxuICAgIGNvbnN0IGlzVmVydGljYWwgPSB0aGlzLl8kaXNWZXJ0aWNhbC5nZXRWYWx1ZSgpLFxyXG4gICAgICBpbnZlcnRlZCA9IHRoaXMuaG9yaXpvbnRhbEF4aXNJbnZlcnRpb24sXHJcbiAgICAgIHNjcm9sbFNpemUgPSAoaXNWZXJ0aWNhbCA/IHRoaXMuc2Nyb2xsVG9wIDogdGhpcy5zY3JvbGxMZWZ0KSAtIHRoaXMuX3N0YXJ0TGF5b3V0T2Zmc2V0LFxyXG4gICAgICBtYXhTY3JvbGxTaXplID0gaXNWZXJ0aWNhbCA/IHRoaXMuc2Nyb2xsSGVpZ2h0IDogdGhpcy5zY3JvbGxXaWR0aCxcclxuICAgICAgeyB3aWR0aCwgaGVpZ2h0IH0gPSB0aGlzLl8kdmlld3BvcnRCb3VuZHMuZ2V0VmFsdWUoKTtcclxuICAgIHRoaXMuXyRsaXN0U3R5bGVzLm5leHQoe1xyXG4gICAgICBwZXJzcGVjdGl2ZU9yaWdpbjogYCR7aXNWZXJ0aWNhbCA/IHdpZHRoICogLjUgOiAoaW52ZXJ0ZWQgPyAoKG1heFNjcm9sbFNpemUgLSBzY3JvbGxTaXplKSArIHdpZHRoICogLjUgLSB0aGlzLnN0YXJ0T2Zmc2V0KSA6IChzY3JvbGxTaXplICsgd2lkdGggKiAuNSkpfSR7UFh9ICR7aXNWZXJ0aWNhbCA/IChpbnZlcnRlZCA/ICgobWF4U2Nyb2xsU2l6ZSAtIHNjcm9sbFNpemUpICsgaGVpZ2h0ICogLjUpIDogKHNjcm9sbFNpemUgKyBoZWlnaHQgKiAuNSkpIDogaGVpZ2h0ICogLjV9JHtQWH1gXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvdmVycmlkZSBvblJlc2l6ZVZpZXdwb3J0KCkge1xyXG4gICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLnNjcm9sbFZpZXdwb3J0Py5uYXRpdmVFbGVtZW50O1xyXG4gICAgaWYgKCEhdmlld3BvcnQpIHtcclxuICAgICAgY29uc3QgYm91bmRzOiBJU2l6ZSA9IHsgd2lkdGg6IHZpZXdwb3J0Lm9mZnNldFdpZHRoLCBoZWlnaHQ6IHZpZXdwb3J0Lm9mZnNldEhlaWdodCB9LCBiID0gdGhpcy5fJHZpZXdwb3J0Qm91bmRzLmdldFZhbHVlKCk7XHJcbiAgICAgIGlmIChib3VuZHMud2lkdGggPT09IGIud2lkdGggJiYgYm91bmRzLmhlaWdodCA9PT0gYi5oZWlnaHQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fJHZpZXdwb3J0Qm91bmRzLm5leHQoYm91bmRzKTtcclxuICAgICAgdGhpcy51cGRhdGVTY3JvbGxCYXIoKTtcclxuICAgICAgdGhpcy5fJHJlc2l6ZVZpZXdwb3J0Lm5leHQoYm91bmRzKTtcclxuICAgICAgdGhpcy5yZWNhbGN1bGF0ZVBlcnNwZWN0aXZlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgb25SZXNpemVDb250ZW50KHZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbCkge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuc2Nyb2xsQ29udGVudD8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghIWNvbnRlbnQpIHtcclxuICAgICAgY29uc3QgaXNWZXJ0aWNhbCA9IHRoaXMuXyRpc1ZlcnRpY2FsLmdldFZhbHVlKCksIGJvdW5kczogSVNpemUgPSB7XHJcbiAgICAgICAgd2lkdGg6IGlzVmVydGljYWwgPyBjb250ZW50Lm9mZnNldFdpZHRoIDogKHZhbHVlID8/IGNvbnRlbnQub2Zmc2V0V2lkdGgpLFxyXG4gICAgICAgIGhlaWdodDogaXNWZXJ0aWNhbCA/ICh2YWx1ZSA/PyBjb250ZW50Lm9mZnNldEhlaWdodCkgOiBjb250ZW50Lm9mZnNldEhlaWdodFxyXG4gICAgICB9LCBiID0gdGhpcy5fJGNvbnRlbnRCb3VuZHMuZ2V0VmFsdWUoKTtcclxuICAgICAgaWYgKHZhbHVlID09PSBudWxsICYmIGJvdW5kcy53aWR0aCA9PT0gYi53aWR0aCAmJiBib3VuZHMuaGVpZ2h0ID09PSBiLmhlaWdodCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl8kY29udGVudEJvdW5kcy5uZXh0KGJvdW5kcyk7XHJcbiAgICAgIHRoaXMudXBkYXRlU2Nyb2xsQmFyKCk7XHJcbiAgICAgIHRoaXMuXyRyZXNpemVDb250ZW50Lm5leHQoYm91bmRzKTtcclxuICAgICAgdGhpcy5yZWNhbGN1bGF0ZVBlcnNwZWN0aXZlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVNjcm9sbEJhckhhbmRsZXIodXBkYXRlOiBib29sZWFuID0gZmFsc2UsIGJsZW5kaW5nOiBib29sZWFuID0gdHJ1ZSwgZmlyZVVwZGF0ZTogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBkaXJlY3Rpb24gPSB0aGlzLmRpcmVjdGlvbixcclxuICAgICAgaXNWZXJ0aWNhbCA9IHRoaXMuXyRpc1ZlcnRpY2FsLmdldFZhbHVlKCksXHJcbiAgICAgIHZpZXdwb3J0Qm91bmRzID0gdGhpcy5fJHZpZXdwb3J0Qm91bmRzLmdldFZhbHVlKCksXHJcbiAgICAgIGNvbnRlbnRCb3VuZHMgPSB0aGlzLl8kY29udGVudEJvdW5kcy5nZXRWYWx1ZSgpLFxyXG4gICAgICBzdGFydE9mZnNldCA9IHRoaXMuc3RhcnRPZmZzZXQsXHJcbiAgICAgIGVuZE9mZnNldCA9IHRoaXMuZW5kT2Zmc2V0LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGh1bWJTaXplLFxyXG4gICAgICAgIHRodW1iUG9zaXRpb24sXHJcbiAgICAgICAgdGh1bWJHcmFkaWVudFBvc2l0aW9ucyxcclxuICAgICAgfSA9IHRoaXMuX3Njcm9sbEJveC5jYWxjdWxhdGVTY3JvbGwoe1xyXG4gICAgICAgIGRpcmVjdGlvbixcclxuICAgICAgICB2aWV3cG9ydFdpZHRoOiB2aWV3cG9ydEJvdW5kcy53aWR0aCxcclxuICAgICAgICB2aWV3cG9ydEhlaWdodDogdmlld3BvcnRCb3VuZHMuaGVpZ2h0LFxyXG4gICAgICAgIGNvbnRlbnRXaWR0aDogY29udGVudEJvdW5kcy53aWR0aCxcclxuICAgICAgICBjb250ZW50SGVpZ2h0OiBjb250ZW50Qm91bmRzLmhlaWdodCxcclxuICAgICAgICBzdGFydE9mZnNldCxcclxuICAgICAgICBlbmRPZmZzZXQsXHJcbiAgICAgICAgcG9zaXRpb25YOiB0aGlzLl94LFxyXG4gICAgICAgIHBvc2l0aW9uWTogdGhpcy5feSxcclxuICAgICAgICBtaW5TaXplOiB0aGlzLnNjcm9sbGJhck1pblNpemUsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuXyR0aHVtYkdyYWRpZW50UG9zaXRpb25zLm5leHQodGh1bWJHcmFkaWVudFBvc2l0aW9ucyk7XHJcbiAgICB0aGlzLl8kdGh1bWJTaXplLm5leHQodGh1bWJTaXplKTtcclxuICAgIGNvbnN0IGFjdHVhbFRodW1iUG9zaXRpb24gPSB0aHVtYlBvc2l0aW9uIDwgc3RhcnRPZmZzZXQgPyBzdGFydE9mZnNldCA6IHRodW1iUG9zaXRpb247XHJcbiAgICBpZiAodXBkYXRlKSB7XHJcbiAgICAgIHRoaXMuc2Nyb2xsQmFyPy5zY3JvbGwoe1xyXG4gICAgICAgIFtpc1ZlcnRpY2FsID8gVE9QX1BST1BfTkFNRSA6IExFRlRfUFJPUF9OQU1FXTogYWN0dWFsVGh1bWJQb3NpdGlvbiwgZmlyZVVwZGF0ZSwgYmVoYXZpb3I6IEJFSEFWSU9SX0lOU1RBTlQsXHJcbiAgICAgICAgdXNlckFjdGlvbjogZmFsc2UsIGJsZW5kaW5nLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuXyRzY3JvbGxiYXJTaG93Lm5leHQodGhpcy5zY3JvbGxhYmxlICYmIHRoaXMuc2Nyb2xsYmFyRW5hYmxlZCk7XHJcbiAgfTtcclxuXHJcbiAgb3ZlcnJpZGUgdGljaygpIHtcclxuICAgIHN1cGVyLnRpY2soKTtcclxuXHJcbiAgICB0aGlzLnNjcm9sbEJhcj8udGljaygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVTY3JvbGxCYXIoKSB7XHJcbiAgICB0aGlzLl8kdXBkYXRlU2Nyb2xsQmFyLm5leHQoKTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2hTY3JvbGxiYXIoKSB7XHJcbiAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhckhhbmRsZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvdmVycmlkZSBvbkRyYWdTdGFydCgpIHtcclxuICAgIHN1cGVyLm9uRHJhZ1N0YXJ0KCk7XHJcblxyXG4gICAgdGhpcy5zdG9wU2Nyb2xsYmFyKCk7XHJcblxyXG4gICAgdGhpcy5faXNTY3JvbGxiYXJVc2VyQWN0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy51cGRhdGVTY3JvbGxCYXIoKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHJlc2V0KCkge1xyXG4gICAgc3VwZXIucmVzZXQoKTtcclxuICAgIHRoaXMudG90YWxTaXplID0gMDtcclxuICAgIHRoaXMub25SZXNpemVDb250ZW50KDApO1xyXG4gICAgdGhpcy5zdG9wU2Nyb2xsYmFyKCk7XHJcbiAgICB0aGlzLnJlZnJlc2godHJ1ZSwgdHJ1ZSk7XHJcbiAgICB0aGlzLnByZXBhcmVkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoKGZpcmVVcGRhdGU6IGJvb2xlYW4gPSBmYWxzZSwgdXBkYXRlU2Nyb2xsYmFyOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgaWYgKHVwZGF0ZVNjcm9sbGJhcikge1xyXG4gICAgICB0aGlzLnN0b3BTY3JvbGxpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNjcm9sbExpbWl0cygpO1xyXG5cclxuICAgIHRoaXMucmVmcmVzaENvb3JkaW5hdGUodGhpcy5feCwgdGhpcy5feSk7XHJcblxyXG4gICAgaWYgKHVwZGF0ZVNjcm9sbGJhcikge1xyXG4gICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhckhhbmRsZXIoZmFsc2UpO1xyXG4gICAgICB0aGlzLmVtaXRTY3JvbGxhYmxlRXZlbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZmlyZVVwZGF0ZSkge1xyXG4gICAgICB0aGlzLmZpcmVTY3JvbGxFdmVudChmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzbmFwSWZOZWVkKGFuaW1hdGVkID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5zbmFwV2l0aEluaXRpYWxGb3JjZUlmTmVjZXNzYXJ5KG51bGwsIGFuaW1hdGVkLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIHN0YXJ0U2Nyb2xsVG8oKSB7XHJcbiAgICB0aGlzLnN0b3BTY3JvbGxiYXIoKTtcclxuICAgIHRoaXMuc3RvcFNjcm9sbGluZyh0cnVlKTtcclxuICAgIHRoaXMuX3Njcm9sbERpcmVjdGlvbi5jbGVhcigpO1xyXG4gICAgdGhpcy5kcm9wVmVsb2NpdHkoKTtcclxuICAgIHRoaXMuX2lzU2Nyb2xsc1RvID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGZpbmlzaGVkU2Nyb2xsVG8oKSB7XHJcbiAgICB0aGlzLl9pc1Njcm9sbHNUbyA9IGZhbHNlO1xyXG4gICAgdGhpcy5fc2Nyb2xsRGlyZWN0aW9uLmNsZWFyKCk7XHJcbiAgICB0aGlzLmRyb3BWZWxvY2l0eSgpO1xyXG4gICAgdGhpcy5jaGVja0ludGVyc2VjdGlvbkNvbXBvbmVudCgpO1xyXG4gICAgdGhpcy5maXJlU2Nyb2xsRXZlbnQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxUbyhwYXJhbXM6IElTY3JvbGxUb1BhcmFtcyk6IG51bWJlciB7XHJcbiAgICBjb25zdCB1c2VyQWN0aW9uID0gcGFyYW1zPy51c2VyQWN0aW9uID8/IHRydWU7XHJcbiAgICBpZiAodXNlckFjdGlvbikge1xyXG4gICAgICB0aGlzLl9pc1Njcm9sbGJhclVzZXJBY3Rpb24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5zY3JvbGxCYXI/LnN0b3BTY3JvbGxpbmcoKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnNjcm9sbCh7IC4uLnBhcmFtcywgdXNlckFjdGlvbjogdXNlckFjdGlvbiB9KTtcclxuICB9XHJcblxyXG4gIHN0b3BTY3JvbGxiYXIoKSB7XHJcbiAgICBpZiAoISF0aGlzLnNjcm9sbEJhcikge1xyXG4gICAgICB0aGlzLnNjcm9sbEJhci5zdG9wU2Nyb2xsaW5nKCk7XHJcbiAgICAgIHRoaXMuYWxpZ25Qb3NpdGlvbigpO1xyXG4gICAgICB0aGlzLmRyb3BWZWxvY2l0eSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkcm9wVmVsb2NpdHkoKSB7XHJcbiAgICB0aGlzLl92ZWxvY2l0aWVzID0gWzBdO1xyXG4gICAgdGhpcy5fJHZlbG9jaXR5Lm5leHQoMCk7XHJcbiAgICB0aGlzLl8kYXZlcmFnZVZlbG9jaXR5Lm5leHQoMCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc3RvcE1vdmluZygpIHtcclxuICAgIHN1cGVyLnN0b3BNb3ZpbmcoKTtcclxuICAgIHRoaXMuZHJvcFZlbG9jaXR5KCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgb25BbmltYXRpb25Db21wbGV0ZShwb3NpdGlvbjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmRyb3BWZWxvY2l0eSgpO1xyXG4gICAgdGhpcy5fJHNjcm9sbEVuZC5uZXh0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIG9uU2Nyb2xsQmFyRHJhZ0hhbmRsZXIoZXZlbnQ6IElTY3JvbGxCYXJEcmFnRXZlbnQpIHtcclxuICAgIGNvbnN0IHsgcG9zaXRpb24sIG1pbiwgbWF4LCB1c2VyQWN0aW9uIH0gPSBldmVudDtcclxuICAgIHRoaXMuX2lzU2Nyb2xsYmFyVXNlckFjdGlvbiA9IHVzZXJBY3Rpb247XHJcbiAgICBpZiAoIXVzZXJBY3Rpb24pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fJHNjcm9sbGJhclNjcm9sbC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5zdG9wU2Nyb2xsaW5nKHRydWUpO1xyXG4gICAgY29uc3QgaXNWZXJ0aWNhbCA9IHRoaXMuXyRpc1ZlcnRpY2FsLmdldFZhbHVlKCksXHJcbiAgICAgIHtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGVQb3NpdGlvbixcclxuICAgICAgfSA9IHRoaXMuX3Njcm9sbEJveC5nZXRTY3JvbGxQb3NpdGlvbkJ5U2Nyb2xsQmFyKHtcclxuICAgICAgICBzY3JvbGxTaXplOiBpc1ZlcnRpY2FsID8gdGhpcy5zY3JvbGxIZWlnaHQgOiB0aGlzLnNjcm9sbFdpZHRoLFxyXG4gICAgICAgIHBvc2l0aW9uLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnNjcm9sbFRvKHtcclxuICAgICAgW2lzVmVydGljYWwgPyBUT1AgOiBMRUZUXTogYWJzb2x1dGVQb3NpdGlvbiwgYmVoYXZpb3I6IElOU1RBTlQsXHJcbiAgICAgIGJsZW5kaW5nOiBmYWxzZSwgdXNlckFjdGlvbjogdHJ1ZSwgZmlyZVVwZGF0ZTogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5lbWl0U2Nyb2xsYWJsZUV2ZW50KCk7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLnVwZGF0ZShmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBvblNjcm9sbEJhckRyYWdFbmRIYW5kbGVyKGV2ZW50OiBJU2Nyb2xsQmFyRHJhZ0V2ZW50KSB7XHJcbiAgICBjb25zdCB7IHBvc2l0aW9uLCBtaW4sIG1heCwgdXNlckFjdGlvbiB9ID0gZXZlbnQ7XHJcbiAgICB0aGlzLl9pc1Njcm9sbGJhclVzZXJBY3Rpb24gPSB1c2VyQWN0aW9uO1xyXG4gICAgaWYgKCF1c2VyQWN0aW9uKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2lzU2Nyb2xsYmFyVXNlckFjdGlvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5kcm9wVmVsb2NpdHkoKTtcclxuICAgIHRoaXMuX3NlcnZpY2UudXBkYXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IGlzRWRnZSA9IHRoaXMuZmlyZVVwZGF0ZUlmRWRnZXNEZXRlY3RlZChwb3NpdGlvbiwgbWluLCBtYXgsIHRydWUsIHRydWUpO1xyXG4gICAgaWYgKCFpc0VkZ2UpIHtcclxuICAgICAgdGhpcy5hbGlnblBvc2l0aW9uKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zY3JvbGxEaXJlY3Rpb24uY2xlYXIoKTtcclxuICAgIHRoaXMuXyRzY3JvbGxiYXJTY3JvbGwubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZmlyZVNjcm9sbEV2ZW50KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaXJlVXBkYXRlSWZFZGdlc0RldGVjdGVkKHBvc2l0aW9uOiBudW1iZXIsIG1pbjogbnVtYmVyID0gMCwgbWF4OiBudW1iZXIgPSAxLCBhbmltYXRpb246IGJvb2xlYW4gPSBmYWxzZSwgdXNlckFjdGlvbjogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBpZiAodXNlckFjdGlvbiAmJiBhbmltYXRpb24pIHtcclxuICAgICAgaWYgKHBvc2l0aW9uIDw9IG1pbikge1xyXG4gICAgICAgIHRoaXMuX3NlcnZpY2Uuc2Nyb2xsVG9TdGFydCgpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID49IG1heCkge1xyXG4gICAgICAgIHRoaXMuX3NlcnZpY2Uuc2Nyb2xsVG9FbmQoKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufSIsIjxkaXYgbG9jYWxlU2Vuc2l0aXZlIFtsYW5nVGV4dERpcl09XCIoJGxhbmdUZXh0RGlyIHwgYXN5bmMpIVwiIFtsaXN0RGlyXT1cIigkZGlyZWN0aW9uIHwgYXN5bmMpIVwiIGNsYXNzPVwibmd2bF9fY29udGFpbmVyXCJcclxuICAgIFtuZ0NsYXNzXT1cIigkY29udGFpbmVyQ2xhc3NlcyB8IGFzeW5jKSFcIj5cclxuICAgIDxzdmcgcGFydD1cInZpZXdwb3J0XCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiPlxyXG4gICAgICAgIDxmaWx0ZXIgW2lkXT1cIl9maWx0ZXJJZFwiPlxyXG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgI2ZpbHRlcj48L2ZlR2F1c3NpYW5CbHVyPlxyXG4gICAgICAgIDwvZmlsdGVyPlxyXG4gICAgICAgIDxmb3JlaWduT2JqZWN0IHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiBjbGFzcz1cIm5ndmxfX3ZpZXdwb3J0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZ3ZsX19zY3JvbGxlci13cmFwcGVyXCIgW2NsYXNzLmZpbHRlcmVkXT1cIigkbW90aW9uQmx1ckVuYWJsZWQgfCBhc3luYykhXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5maWx0ZXJdPVwiKCRtb3Rpb25CbHVyRW5hYmxlZCB8IGFzeW5jKSEgPyBfZmlsdGVyIDogJ3Vuc2V0J1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjZGtTY3JvbGxhYmxlICNzY3JvbGxWaWV3cG9ydCBwYXJ0PVwic2Nyb2xsZXJcIiBjbGFzcz1cIm5ndmxfX3Njcm9sbGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAjc2Nyb2xsQ29udGVudCBbYXR0ci5hcmlhLW9yaWVudGF0aW9uXT1cIigkZGlyZWN0aW9uIHwgYXN5bmMpIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF09XCIkZm9jdXNlZEVsZW1lbnQgfCBhc3luY1wiIHRhYmluZGV4PVwiMFwiIHBhcnQ9XCJsaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuZ3ZsX19saXN0XCIgW25nQ2xhc3NdPVwiKCRhY3R1YWxDbGFzc2VzIHwgYXN5bmMpIVwiIFtuZ1N0eWxlXT1cIigkbGlzdFN0eWxlcyB8IGFzeW5jKSFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZm9yZWlnbk9iamVjdD5cclxuICAgIDwvc3ZnPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIigkc2Nyb2xsYmFyRW5hYmxlZCB8IGFzeW5jKSFcIj5cclxuICAgICAgICA8bmctc2Nyb2xsLWJhciAjc2Nyb2xsQmFyIFtkaXJlY3Rpb25dPVwiKCRkaXJlY3Rpb24gfCBhc3luYykhXCIgW3NpemVdPVwiKCRhY3R1YWxUaHVtYlNpemUgfCBhc3luYykhXCJcclxuICAgICAgICAgICAgW2xhbmdUZXh0RGlyXT1cIigkbGFuZ1RleHREaXIgfCBhc3luYykhXCIgW3JlbmRlcmVyXT1cIigkc2Nyb2xsYmFyVGh1bWJSZW5kZXJlciB8IGFzeW5jKSFcIlxyXG4gICAgICAgICAgICBbdGhpY2tuZXNzXT1cIigkc2Nyb2xsYmFyVGhpY2tuZXNzIHwgYXN5bmMpIVwiIFtwYXJhbXNdPVwiKCRzY3JvbGxiYXJUaHVtYlBhcmFtcyB8IGFzeW5jKSFcIlxyXG4gICAgICAgICAgICBbbG9hZGluZ109XCIoJGxvYWRpbmcgfCBhc3luYykhXCIgW292ZXJsYXBwaW5nXT1cIigkb3ZlcmxhcHBpbmdTY3JvbGxiYXIgfCBhc3luYykhXCJcclxuICAgICAgICAgICAgW3RodW1iR3JhZGllbnRQb3NpdGlvbnNdPVwiKCR0aHVtYkNvbG9yUG9zaXRpb25zIHwgYXN5bmMpIVwiIFtwcmVwYXJlZF09XCIoJHByZXBhcmVkU2lnbmFsIHwgYXN5bmMpIVwiXHJcbiAgICAgICAgICAgIFtpbnRlcmFjdGl2ZV09XCIoJHNjcm9sbGJhckludGVyYWN0aXZlIHwgYXN5bmMpIVwiIFtzaG93XT1cIigkc2hvdyB8IGFzeW5jKSFcIlxyXG4gICAgICAgICAgICBbc3RhcnRPZmZzZXRdPVwiKCRzdGFydE9mZnNldCB8IGFzeW5jKSFcIiBbbGFuZ1RleHREaXJdPVwiKCRsYW5nVGV4dERpciB8IGFzeW5jKSFcIlxyXG4gICAgICAgICAgICBbZW5kT2Zmc2V0XT1cIigkZW5kT2Zmc2V0IHwgYXN5bmMpIVwiIFtvdmVyc2Nyb2xsRW5hYmxlZF09XCIoJG92ZXJzY3JvbGxFbmFibGVkIHwgYXN5bmMpIVwiXHJcbiAgICAgICAgICAgIFtzY3JvbGxCZWhhdmlvcl09XCIoJHNjcm9sbEJlaGF2aW9yIHwgYXN5bmMpIVwiIFtzY3JvbGxiYXJNaW5TaXplXT1cIigkc2Nyb2xsYmFyTWluU2l6ZSB8IGFzeW5jKSFcIlxyXG4gICAgICAgICAgICAob25EcmFnKT1cIm9uU2Nyb2xsQmFyRHJhZ0hhbmRsZXIoJGV2ZW50KVwiIChvbkRyYWdFbmQpPVwib25TY3JvbGxCYXJEcmFnRW5kSGFuZGxlcigkZXZlbnQpXCI+PC9uZy1zY3JvbGwtYmFyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvcmUvaW50ZXJmYWNlcy9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIRUlHSFRfUFJPUF9OQU1FLCBXSURUSF9QUk9QX05BTUUgfSBmcm9tIFwiLi4vLi4vY29uc3RcIjtcclxuaW1wb3J0IHsgSXRlbVRyYW5zZm9ybSwgU25hcFRvSXRlbUFsaWduIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XHJcbmltcG9ydCB7IElJdGVtIH0gZnJvbSBcIi4vaXRlbVwiO1xyXG5cclxuLyoqXHJcbiAqIElNZXRyaWNzXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE0LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29yZS9pbnRlcmZhY2VzL21ldHJpY3MudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElNZXRyaWNzPEkgZXh0ZW5kcyBJSXRlbT4ge1xyXG4gICAgZGVsdGE6IG51bWJlcjtcclxuICAgIGludmVydGVkOiBib29sZWFuO1xyXG4gICAgbm9ybWFsaXplZEl0ZW1XaWR0aDogbnVtYmVyO1xyXG4gICAgbm9ybWFsaXplZEl0ZW1IZWlnaHQ6IG51bWJlcjtcclxuICAgIHdpZHRoOiBudW1iZXI7XHJcbiAgICBoZWlnaHQ6IG51bWJlcjtcclxuICAgIGR5bmFtaWNTaXplOiBib29sZWFuO1xyXG4gICAgZGl2aWRlczogbnVtYmVyO1xyXG4gICAgaXRlbVNpemU6IG51bWJlcjtcclxuICAgIG1pbkl0ZW1TaXplOiBudW1iZXI7XHJcbiAgICBtYXhJdGVtU2l6ZTogbnVtYmVyO1xyXG4gICAgaXRlbXM6IEFycmF5PEk+O1xyXG4gICAgaXRlbXNGcm9tU3RhcnRUb1Njcm9sbEVuZDogbnVtYmVyO1xyXG4gICAgaXRlbXNGcm9tU3RhcnRUb0Rpc3BsYXlFbmQ6IG51bWJlcjtcclxuICAgIGl0ZW1zT25EaXNwbGF5V2VpZ2h0OiBudW1iZXI7XHJcbiAgICBpdGVtc09uRGlzcGxheUxlbmd0aDogbnVtYmVyO1xyXG4gICAgaXNWZXJ0aWNhbDogYm9vbGVhbjtcclxuICAgIGxlZnRIaWRkZW5JdGVtc1dlaWdodDogbnVtYmVyO1xyXG4gICAgbGVmdEl0ZW1MZW5ndGg6IG51bWJlcjtcclxuICAgIGxlZnRJdGVtc1dlaWdodDogbnVtYmVyO1xyXG4gICAgbGVmdExheW91dE9mZnNldDogbnVtYmVyO1xyXG4gICAgbGVmdExheW91dEluZGV4T2Zmc2V0OiBudW1iZXI7XHJcbiAgICByZW5kZXJJdGVtczogbnVtYmVyO1xyXG4gICAgcmlnaHRJdGVtTGVuZ3RoOiBudW1iZXI7XHJcbiAgICByaWdodEl0ZW1zV2VpZ2h0OiBudW1iZXI7XHJcbiAgICBzY3JvbGxTaXplOiBudW1iZXI7XHJcbiAgICBtYXhTY3JvbGxTaXplOiBudW1iZXI7XHJcbiAgICBsZWZ0U2l6ZU9mQWRkZWRJdGVtczogbnVtYmVyO1xyXG4gICAgc2l6ZVByb3BlcnR5OiB0eXBlb2YgSEVJR0hUX1BST1BfTkFNRSB8IHR5cGVvZiBXSURUSF9QUk9QX05BTUU7XHJcbiAgICBzdGlja3lFbmFibGVkOiBib29sZWFuO1xyXG4gICAgc3RpY2t5UG9zOiBudW1iZXI7XHJcbiAgICBzdGFydEluZGV4OiBudW1iZXI7XHJcbiAgICBzdGFydFBvc2l0aW9uOiBudW1iZXI7XHJcbiAgICB0b3RhbEl0ZW1zVG9EaXNwbGF5RW5kV2VpZ2h0OiBudW1iZXI7XHJcbiAgICB0b3RhbExlbmd0aDogbnVtYmVyO1xyXG4gICAgdG90YWxTaXplOiBudW1iZXI7XHJcbiAgICB0eXBpY2FsSXRlbVNpemU6IG51bWJlcjtcclxuICAgIGlzRnJvbUl0ZW1JZEZvdW5kOiBib29sZWFuO1xyXG4gICAgaXNVcGRhdGluZzogYm9vbGVhbjtcclxuICAgIHNuYXBUb0l0ZW06IGJvb2xlYW47XHJcbiAgICBzbmFwVG9JdGVtQWxpZ246IFNuYXBUb0l0ZW1BbGlnbjtcclxuICAgIGl0ZW1UcmFuc2Zvcm06IEl0ZW1UcmFuc2Zvcm0gfCBudWxsO1xyXG59Il19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYWxjdWxhdGUtbWV0cmljcy1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29yZS9pbnRlcmZhY2VzL3JlY2FsY3VsYXRlLW1ldHJpY3Mtb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVNpemUgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBBbGlnbm1lbnQsIElkLCBJdGVtVHJhbnNmb3JtLCBTbmFwVG9JdGVtQWxpZ24gfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcclxuaW1wb3J0IHsgSUl0ZW0gfSBmcm9tIFwiLi9pdGVtXCI7XHJcblxyXG4vKipcclxuICogSVJlY2FsY3VsYXRlTWV0cmljc09wdGlvbnNcclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTcueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb3JlL2ludGVyZmFjZXMvcmVjYWxjdWxhdGUtbWV0cmljcy1vcHRpb25zLnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBJUmVjYWxjdWxhdGVNZXRyaWNzT3B0aW9uczxJIGV4dGVuZHMgSUl0ZW0sIEMgZXh0ZW5kcyBBcnJheTxJPj4ge1xyXG4gICAgYWxpZ25tZW50OiBBbGlnbm1lbnQ7XHJcbiAgICBib3VuZHM6IElTaXplO1xyXG4gICAgY29sbGVjdGlvbjogQztcclxuICAgIGlzVmVydGljYWw6IGJvb2xlYW47XHJcbiAgICBpdGVtU2l6ZTogbnVtYmVyO1xyXG4gICAgbWluSXRlbVNpemU6IG51bWJlcjtcclxuICAgIG1heEl0ZW1TaXplOiBudW1iZXI7XHJcbiAgICBidWZmZXJTaXplOiBudW1iZXI7XHJcbiAgICBtYXhCdWZmZXJTaXplOiBudW1iZXI7XHJcbiAgICBkeW5hbWljU2l6ZTogYm9vbGVhbjtcclxuICAgIHNjcm9sbFNpemU6IG51bWJlcjtcclxuICAgIHN0aWNreUVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgICBlbmFibGVkQnVmZmVyT3B0aW1pemF0aW9uOiBib29sZWFuO1xyXG4gICAgZnJvbUl0ZW1JZD86IElkO1xyXG4gICAgcHJldmlvdXNUb3RhbFNpemU6IG51bWJlcjtcclxuICAgIGNydWREZXRlY3RlZDogYm9vbGVhbjtcclxuICAgIGRlbGV0ZWRJdGVtc01hcDogeyBbaW5kZXg6IG51bWJlcl06IElTaXplOyB9O1xyXG4gICAgc25hcFRvSXRlbTogYm9vbGVhbjtcclxuICAgIHNuYXBUb0l0ZW1BbGlnbjogU25hcFRvSXRlbUFsaWduO1xyXG4gICAgaW52ZXJ0ZWQ6IGJvb2xlYW47XHJcbiAgICBpdGVtVHJhbnNmb3JtOiBJdGVtVHJhbnNmb3JtIHwgbnVsbDtcclxufSJdfQ==
|