@workflow/web-shared 5.0.0-beta.14 → 5.0.0-beta.16
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/dist/components/event-list-view.d.ts +1 -1
- package/dist/components/event-list-view.d.ts.map +1 -1
- package/dist/components/event-list-view.js +20 -3
- package/dist/components/new-trace-viewer/components/timeline.d.ts +1 -1
- package/dist/components/new-trace-viewer/components/timeline.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/components/timeline.js +61 -13
- package/dist/components/new-trace-viewer/components/timeline.module.css +31 -0
- package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/trace-viewer.js +8 -9
- package/dist/components/new-trace-viewer/utils.d.ts +1 -1
- package/dist/components/new-trace-viewer/utils.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/utils.js +12 -5
- package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
- package/dist/components/sidebar/attribute-panel.js +26 -32
- package/dist/components/sidebar/attributes-block.d.ts +28 -0
- package/dist/components/sidebar/attributes-block.d.ts.map +1 -0
- package/dist/components/sidebar/attributes-block.js +83 -0
- package/dist/components/sidebar/entity-detail-panel.js +2 -2
- package/dist/components/sidebar/events-list.d.ts.map +1 -1
- package/dist/components/sidebar/events-list.js +8 -1
- package/dist/components/trace-viewer/components/node.d.ts.map +1 -1
- package/dist/components/trace-viewer/components/node.js +2 -1
- package/dist/components/ui/context-card.d.ts +47 -0
- package/dist/components/ui/context-card.d.ts.map +1 -0
- package/dist/components/ui/context-card.js +471 -0
- package/dist/components/ui/timestamp-tooltip.d.ts +34 -1
- package/dist/components/ui/timestamp-tooltip.d.ts.map +1 -1
- package/dist/components/ui/timestamp-tooltip.js +80 -132
- package/dist/components/workflow-trace-view.d.ts.map +1 -1
- package/dist/components/workflow-trace-view.js +8 -10
- package/dist/components/workflow-traces/event-colors.d.ts +1 -0
- package/dist/components/workflow-traces/event-colors.d.ts.map +1 -1
- package/dist/components/workflow-traces/event-colors.js +12 -1
- package/dist/components/workflow-traces/trace-span-construction.d.ts.map +1 -1
- package/dist/components/workflow-traces/trace-span-construction.js +2 -1
- package/dist/lib/trace-builder.d.ts +15 -0
- package/dist/lib/trace-builder.d.ts.map +1 -1
- package/dist/lib/trace-builder.js +27 -2
- package/dist/styles.css +9 -0
- package/package.json +6 -4
- package/src/components/event-list-view.tsx +25 -2
- package/src/components/new-trace-viewer/components/timeline.module.css +31 -0
- package/src/components/new-trace-viewer/components/timeline.tsx +134 -10
- package/src/components/new-trace-viewer/trace-viewer.tsx +17 -14
- package/src/components/new-trace-viewer/utils.ts +12 -4
- package/src/components/sidebar/attribute-panel.tsx +117 -119
- package/src/components/sidebar/attributes-block.tsx +182 -0
- package/src/components/sidebar/entity-detail-panel.tsx +1 -1
- package/src/components/sidebar/events-list.tsx +8 -0
- package/src/components/trace-viewer/components/node.tsx +3 -2
- package/src/components/ui/context-card.tsx +784 -0
- package/src/components/ui/timestamp-tooltip.tsx +132 -194
- package/src/components/workflow-trace-view.tsx +18 -10
- package/src/components/workflow-traces/event-colors.ts +12 -0
- package/src/components/workflow-traces/trace-span-construction.ts +1 -0
- package/src/lib/trace-builder.ts +32 -1
- package/src/styles.css +9 -0
|
@@ -5,17 +5,18 @@ import { ChevronDown, ChevronUp, RotateCcw, Search, X, ZoomIn, ZoomOut, } from '
|
|
|
5
5
|
import { useCallback, useDeferredValue, useEffect, useMemo, useRef, useState, } from 'react';
|
|
6
6
|
import { useLoadMoreOnScroll } from '../../hooks/use-load-more-on-scroll';
|
|
7
7
|
import { useReducedMotion } from '../../hooks/use-reduced-motion';
|
|
8
|
+
import { filterSpanRawEvents } from '../../lib/trace-builder';
|
|
8
9
|
import { ErrorBoundary } from '../error-boundary';
|
|
9
10
|
import { EntityDetailPanel, } from '../sidebar/entity-detail-panel';
|
|
10
11
|
import { useSidebarData } from '../sidebar/sidebar-data-context';
|
|
11
12
|
import { formatDuration, getHighResInMs } from '../trace-viewer/util/timing';
|
|
12
13
|
import { IconButton } from '../ui/icon-button';
|
|
13
|
-
import { Spinner } from '../ui/spinner';
|
|
14
14
|
import { Kbd } from '../ui/kbd';
|
|
15
|
+
import { Spinner } from '../ui/spinner';
|
|
16
|
+
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from '../ui/tooltip';
|
|
15
17
|
import EventList from './components/event-list';
|
|
16
18
|
import { SplitPane } from './components/split-pane';
|
|
17
19
|
import { TIMELINE_PADDING_PX, Timeline, TimelineHeader, } from './components/timeline';
|
|
18
|
-
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from '../ui/tooltip';
|
|
19
20
|
import { ActiveSpanProvider, useActiveSpan } from './context';
|
|
20
21
|
import { searchSpans } from './search';
|
|
21
22
|
import { computeRootBounds, computeTimeMarkers } from './utils';
|
|
@@ -82,13 +83,11 @@ function useSelectedSpanInfo() {
|
|
|
82
83
|
return useMemo(() => {
|
|
83
84
|
if (!activeSpan)
|
|
84
85
|
return null;
|
|
85
|
-
const
|
|
86
|
-
const rawEvents =
|
|
87
|
-
? sidebar.events.filter((e) => e.correlationId === correlationId)
|
|
88
|
-
: [];
|
|
86
|
+
const resource = activeSpan.attributes?.resource;
|
|
87
|
+
const rawEvents = filterSpanRawEvents(sidebar.events, resource, activeSpan.spanId);
|
|
89
88
|
return {
|
|
90
89
|
data: activeSpan.attributes?.data,
|
|
91
|
-
resource
|
|
90
|
+
resource,
|
|
92
91
|
spanId: activeSpan.spanId,
|
|
93
92
|
rawEvents,
|
|
94
93
|
};
|
|
@@ -304,7 +303,7 @@ function NewTraceViewerContent({ trace, onLoadMore, hasMore, isLoadingMore, }) {
|
|
|
304
303
|
dy *= 16;
|
|
305
304
|
const cursorFraction = Math.max(0, Math.min(1, (e.clientX - rect.left - TIMELINE_PADDING_PX) / contentWidth));
|
|
306
305
|
const isMouseWheel = e.deltaMode === 1 || Math.abs(e.deltaY) >= 50;
|
|
307
|
-
const scaleFactor =
|
|
306
|
+
const scaleFactor = 2 ** (dy / (isMouseWheel ? 200 : 60));
|
|
308
307
|
setViewport((prev) => {
|
|
309
308
|
const prevDuration = prev.end - prev.start;
|
|
310
309
|
const cursorTime = prev.start + cursorFraction * prevDuration;
|
|
@@ -396,4 +395,4 @@ function NewTraceViewerContent({ trace, onLoadMore, hasMore, isLoadingMore, }) {
|
|
|
396
395
|
}
|
|
397
396
|
}, placeholder: "Search spans...", "aria-label": "Search spans", className: "flex-1 min-w-0 bg-transparent text-sm text-gray-1000 placeholder:text-gray-800 outline-none" }), searchQuery && (_jsx("button", { type: "button", "aria-label": "Clear search", onClick: () => setSearchQuery(''), className: "-mr-2 hidden h-full max-w-full shrink-0 cursor-pointer items-center rounded-r-md border-0 bg-transparent px-2.5 font-inherit text-base text-gray-900 no-underline transition-colors duration-150 ease-in hover:text-gray-1000 focus-visible:-outline-offset-1 focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--ds-focus-color)] min-[961px]:flex", children: _jsx("kbd", { className: "inline-flex h-5 min-h-5 min-w-5 items-center justify-center rounded border border-gray-alpha-400 bg-background-100 px-1 font-sans text-[13px] font-medium leading-[1.7em] text-gray-900", children: "Esc" }) }))] }), endHeader: _jsx(TimelineHeader, { markers: timeMarkers, hoverInfo: hoverInfo }), children: [_jsxs("div", { className: "block overflow-visible", children: [_jsx(EventList, { spans: trace.spans, activeSpanId: activeSpanId, searchResult: searchResult, onSelectSpan: handleSelectSpan }), _jsx("div", { ref: loadMoreSentinelRef, className: "flex justify-center", children: isLoadingMore ? (_jsxs("div", { className: "flex items-center justify-center gap-2 py-3 text-sm text-gray-800", children: [_jsx(Spinner, { size: 14 }), _jsx("span", { children: "Loading spans\u2026" })] })) : null })] }), _jsx("div", { ref: timelineRef, className: "block min-h-0 overflow-visible relative", onDoubleClick: resetZoom, onMouseMove: handleTimelineMouseMove, onMouseLeave: handleTimelineMouseLeave, children: _jsx(Timeline, { spans: trace.spans, viewStart: viewport.start, viewEnd: viewport.end, markers: timeMarkers, selectedId: activeSpanId, searchResult: searchResult, onSelect: handleSelectSpan, hoverFraction: hoverFraction, altHeld: altHeld }) })] }), _jsxs("div", { className: "absolute right-3 bottom-3 z-[5] flex items-center border border-gray-alpha-400 rounded-md bg-background-100 shadow-sm overflow-hidden divide-x divide-gray-alpha-400", children: [_jsx(IconButton, { variant: "muted", size: "small", onClick: zoomOut, "aria-label": "Zoom out", children: _jsx(ZoomOut, { className: "w-4 h-4" }) }), _jsx(IconButton, { variant: "muted", size: "small", onClick: resetZoom, "aria-label": "Reset zoom", children: _jsx(RotateCcw, { className: "w-3.5 h-3.5" }) }), _jsx(IconButton, { variant: "muted", size: "small", onClick: zoomIn, "aria-label": "Zoom in", children: _jsx(ZoomIn, { className: "w-4 h-4" }) })] })] }), activeSpan ? (_jsxs("aside", { className: "flex flex-col h-full max-h-full bg-background-100 border-l border-gray-alpha-400 overflow-auto", children: [_jsxs("div", { className: "flex items-center justify-between gap-2 shrink-0 px-4 pt-3 pb-3", children: [_jsx("span", { className: "text-label-14 font-medium text-gray-1000 truncate block", children: selectedSpanName }), _jsxs("div", { className: "flex items-center gap-0.5 shrink-0", children: [_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(IconButton, { "aria-label": "Navigate up", "aria-keyshortcuts": "K", onClick: handleSelectPrevSpan, disabled: !prevSpanId, children: _jsx(ChevronUp, { className: "w-4 h-4" }) }) }), prevSpanId ? (_jsxs(TooltipContent, { children: ["Navigate up", _jsx(Kbd, { children: "K" })] })) : null] }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(IconButton, { "aria-label": "Navigate down", "aria-keyshortcuts": "J", onClick: handleSelectNextSpan, disabled: !nextSpanId, children: _jsx(ChevronDown, { className: "w-4 h-4" }) }) }), nextSpanId ? (_jsxs(TooltipContent, { children: ["Navigate down", _jsx(Kbd, { children: "J" })] })) : null] }), _jsx("div", { "aria-hidden": true, className: "w-px h-4 bg-gray-alpha-400 mx-1" }), _jsx(IconButton, { "aria-label": "Close span details", "aria-keyshortcuts": "Escape", onClick: clearActiveSpan, children: _jsx(X, { className: "w-4 h-4" }) })] })] }), _jsx("div", { className: "flex-1 overflow-y-auto", children: _jsx(ErrorBoundary, { children: _jsx(EntityDetailPanel, { run: sidebar.run, onStreamClick: sidebar.onStreamClick, onRunClick: sidebar.onRunClick, spanDetailData: sidebar.spanDetailData, spanDetailError: sidebar.spanDetailError, spanDetailLoading: sidebar.spanDetailLoading, onSpanSelect: sidebar.onSpanSelect, onWakeUpSleep: sidebar.onWakeUpSleep, onLoadEventData: sidebar.onLoadEventData, onResolveHook: sidebar.onResolveHook, encryptionKey: sidebar.encryptionKey, onDecrypt: sidebar.onDecrypt, isDecrypting: sidebar.isDecrypting, selectedSpan: selectedSpan }) }) })] })) : null] }));
|
|
398
397
|
}
|
|
399
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2Utdmlld2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbmV3LXRyYWNlLXZpZXdlci90cmFjZS12aWV3ZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDTixDQUFDLEVBQ0QsTUFBTSxFQUNOLE9BQU8sR0FDUixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBRUwsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsT0FBTyxFQUNQLE1BQU0sRUFDTixRQUFRLEdBQ1QsTUFBTSxPQUFPLENBQUM7QUFDZixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUNMLGlCQUFpQixHQUVsQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxTQUFTLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsUUFBUSxFQUNSLGNBQWMsR0FDZixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFDTCxPQUFPLEVBQ1AsY0FBYyxFQUNkLGVBQWUsRUFDZixjQUFjLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQVNoRSxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUM7QUFPOUIsU0FBUyxtQkFBbUIsQ0FBQyxPQUFpQjtJQUM1QyxNQUFNLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLEdBQUcsUUFBUSxDQUFXLE9BQU8sQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FLWixJQUFJLENBQUMsQ0FBQztJQUNoQixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsVUFBVSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUM7SUFDOUIsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUV6QyxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1FBQzlCLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BCLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUVQLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FDM0IsQ0FBQyxNQUFnQixFQUFFLEVBQUU7UUFDbkIsTUFBTSxFQUFFLENBQUM7UUFFVCxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLFVBQVUsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1lBQzVCLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUNoQyxNQUFNLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBRXBFLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRTtZQUNoQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDOUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLGdCQUFnQixDQUFDO2dCQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztnQkFDOUQsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO2FBQ3ZELENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxHQUFHLENBQUM7Z0JBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQzs7Z0JBQzdDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQzlCLENBQUMsQ0FBQztRQUVGLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsQ0FBQyxFQUNELENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUN4QixDQUFDO0lBRUYsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUM3QixDQUFDLE1BQWlELEVBQUUsRUFBRTtRQUNwRCxNQUFNLEVBQUUsQ0FBQztRQUNULElBQUksT0FBTyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDakMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDeEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxQixVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDMUIsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sVUFBVSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDNUIsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUMsRUFDRCxDQUFDLE1BQU0sQ0FBQyxDQUNULENBQUM7SUFFRixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUVsQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUM5QyxDQUFDO0FBRUQsOEVBQThFO0FBQzlFLHlFQUF5RTtBQUN6RSw4RUFBOEU7QUFFOUUsU0FBUyxtQkFBbUI7SUFDMUIsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLGFBQWEsRUFBRSxDQUFDO0lBQ3ZDLE1BQU0sT0FBTyxHQUFHLGNBQWMsRUFBRSxDQUFDO0lBRWpDLE9BQU8sT0FBTyxDQUFDLEdBQUcsRUFBRTtRQUNsQixJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRTdCLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDeEMsTUFBTSxTQUFTLEdBQUcsYUFBYTtZQUM3QixDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLEtBQUssYUFBYSxDQUFDO1lBQ2pFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFUCxPQUFPO1lBQ0wsSUFBSSxFQUFFLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSTtZQUNqQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSxRQUE4QjtZQUMvRCxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU07WUFDekIsU0FBUztTQUNWLENBQUM7SUFDSixDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBRUQsOEVBQThFO0FBQzlFLGlCQUFpQjtBQUNqQiw4RUFBOEU7QUFFOUUsTUFBTSxVQUFVLGNBQWMsQ0FBQyxFQUM3QixLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sRUFDUCxhQUFhLEdBQ087SUFDcEIsT0FBTyxDQUNMLEtBQUMsZUFBZSxJQUFDLGFBQWEsRUFBRSxHQUFHLFlBQ2pDLEtBQUMsa0JBQWtCLElBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLFlBQ3BDLEtBQUMscUJBQXFCLElBQ3BCLEtBQUssRUFBRSxLQUFLLEVBQ1osVUFBVSxFQUFFLFVBQVUsRUFDdEIsT0FBTyxFQUFFLE9BQU8sRUFDaEIsYUFBYSxFQUFFLGFBQWEsR0FDNUIsR0FDaUIsR0FDTCxDQUNuQixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQUMsRUFDN0IsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1AsYUFBYSxHQUNPO0lBQ3BCLE1BQU0sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsR0FDaEUsYUFBYSxFQUFFLENBQUM7SUFFbEIsTUFBTSxPQUFPLEdBQUcsY0FBYyxFQUFFLENBQUM7SUFDakMsTUFBTSxZQUFZLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztJQUUzQyxNQUFNLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRCxNQUFNLG1CQUFtQixHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTFELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FDMUIsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLENBQUMsRUFDbkQsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLG1CQUFtQixDQUFDLENBQ25DLENBQUM7SUFFRixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFMUUsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQWlCLElBQUksQ0FBQyxDQUFDO0lBQ3hELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7UUFDaEMsS0FBSyxVQUFVLEVBQUUsRUFBRSxDQUFDO0lBQ3RCLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDakIsTUFBTSxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUU7UUFDeEQsT0FBTyxFQUFFLE9BQU8sQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDO1FBQ3ZDLGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQ3JDLE9BQU8sRUFBRSxrQkFBa0I7S0FDNUIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsbUJBQW1CLENBQUM7UUFDL0QsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTO1FBQ3JCLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRO0tBQ3BDLENBQUMsQ0FBQztJQUVILE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBVztRQUNuQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVM7UUFDckIsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVE7S0FDcEMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDckMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFOUMsV0FBVyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbkIsTUFBTSxlQUFlLEdBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSTtnQkFDNUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7WUFFM0MsSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDcEIsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzFDLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO1FBRUgsV0FBVyxDQUFDLE9BQU8sR0FBRyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ3pELENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBRWpELE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUVuRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQ3pCLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFDdkUsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQy9DLENBQUM7SUFFRixNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1FBQ2pDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRS9DLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQztJQUV4QixNQUFNLE1BQU0sR0FBRyxXQUFXLENBQ3hCLENBQUMsTUFBYyxFQUFFLEVBQUU7UUFDakIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDN0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUU1QixXQUFXLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNuQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDM0MsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0MsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDMUIsZUFBZSxFQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFlBQVksR0FBRyxNQUFNLENBQUMsQ0FDdkMsQ0FBQztZQUNGLElBQUksUUFBUSxHQUFHLE1BQU0sR0FBRyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBQ3hDLElBQUksTUFBTSxHQUFHLE1BQU0sR0FBRyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBRXRDLElBQUksUUFBUSxHQUFHLEtBQUssRUFBRSxDQUFDO2dCQUNyQixRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUNqQixNQUFNLEdBQUcsS0FBSyxHQUFHLFdBQVcsQ0FBQztZQUMvQixDQUFDO1lBQ0QsSUFBSSxNQUFNLEdBQUcsS0FBSyxFQUFFLENBQUM7Z0JBQ25CLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQ2YsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxXQUFXLENBQUMsQ0FBQztZQUNsRCxDQUFDO1lBRUQsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxFQUNELENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUM3QyxDQUFDO0lBRUYsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDaEUsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBRXJFLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUNsQyxDQUFDLE1BQWMsRUFBRSxFQUFFO1FBQ2pCLElBQUksTUFBTSxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQzVCLGVBQWUsRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBQ0QsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXRCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUVsQixNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsTUFBTSxZQUFZLEdBQUcsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUV6QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzdCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRTVCLElBQUksWUFBWSxHQUFHLEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUMvQixTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3hDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEdBQUcsR0FBRyxFQUFFLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsRSxJQUFJLFFBQVEsR0FBRyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBQ25DLElBQUksTUFBTSxHQUFHLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFL0IsSUFBSSxNQUFNLEdBQUcsUUFBUSxHQUFHLGVBQWUsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QyxRQUFRLEdBQUcsTUFBTSxHQUFHLGVBQWUsR0FBRyxDQUFDLENBQUM7WUFDeEMsTUFBTSxHQUFHLE1BQU0sR0FBRyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFFRCxJQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUUsQ0FBQztZQUNyQixNQUFNLFFBQVEsR0FBRyxNQUFNLEdBQUcsUUFBUSxDQUFDO1lBQ25DLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDakIsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsSUFBSSxNQUFNLEdBQUcsS0FBSyxFQUFFLENBQUM7WUFDbkIsTUFBTSxRQUFRLEdBQUcsTUFBTSxHQUFHLFFBQVEsQ0FBQztZQUNuQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ2YsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBRUQsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDLEVBQ0Q7UUFDRSxTQUFTO1FBQ1QsYUFBYTtRQUNiLGVBQWU7UUFDZixZQUFZO1FBQ1osS0FBSyxDQUFDLEtBQUs7UUFDWCxJQUFJLENBQUMsU0FBUztRQUNkLElBQUksQ0FBQyxRQUFRO0tBQ2QsQ0FDRixDQUFDO0lBRUYsTUFBTSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFOUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFnQixFQUFRLEVBQUU7WUFDckQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQTRCLENBQUM7WUFDOUMsSUFDRSxNQUFNLFlBQVksZ0JBQWdCO2dCQUNsQyxNQUFNLFlBQVksbUJBQW1CO2dCQUNyQyxNQUFNLEVBQUUsaUJBQWlCLEVBQ3pCLENBQUM7Z0JBQ0QsT0FBTztZQUNULENBQUM7WUFDRCxNQUFNLFFBQVEsR0FDWixDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztZQUNoRSxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDbkIsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQWdCLEVBQVEsRUFBRTtZQUMzQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3ZCLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLENBQUM7aUJBQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUMzQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ25CLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQixDQUFDO2lCQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDMUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUMsQ0FBQztRQUNGLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBZ0IsRUFBUSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxLQUFLO2dCQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUM7UUFDRixNQUFNLE1BQU0sR0FBRyxHQUFTLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0MsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM5QyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEMsT0FBTyxHQUFHLEVBQUU7WUFDVixNQUFNLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ2pELE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDN0MsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUM7SUFDSixDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBRXRCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBaUIsSUFBSSxDQUFDLENBQUM7SUFDakQsTUFBTSxDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHLFFBQVEsQ0FBZ0IsSUFBSSxDQUFDLENBQUM7SUFFeEUsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRTtRQUM3QixJQUFJLGFBQWEsSUFBSSxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEtBQUssR0FBRyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQzlELE1BQU0sTUFBTSxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3hDLE9BQU8sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDMUUsQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBRWxFLE1BQU0sdUJBQXVCLEdBQUcsV0FBVyxDQUN6QyxDQUFDLENBQW1DLEVBQUUsRUFBRTtRQUN0QyxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDO1FBQy9CLElBQUksQ0FBQyxFQUFFO1lBQUUsT0FBTztRQUNoQixNQUFNLElBQUksR0FBRyxFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN4QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLG1CQUFtQixHQUFHLENBQUMsQ0FBQztRQUMxRCxJQUFJLFlBQVksSUFBSSxDQUFDO1lBQUUsT0FBTztRQUM5QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUN2QixDQUFDLEVBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FDTixDQUFDLEVBQ0QsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxZQUFZLENBQzdELENBQ0YsQ0FBQztRQUNGLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdCLENBQUMsRUFDRCxFQUFFLENBQ0gsQ0FBQztJQUVGLE1BQU0sd0JBQXdCLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtRQUNoRCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFUCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQztRQUMvQixJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU87UUFFaEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDN0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM1QixJQUFJLEtBQUssSUFBSSxDQUFDO1lBQUUsT0FBTztRQUV2QixNQUFNLE9BQU8sR0FBRyxDQUFDLENBQWEsRUFBUSxFQUFFO1lBQ3RDLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUM3QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUUxRCxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsU0FBUztnQkFBRSxPQUFPO1lBQ3pDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUVuQixNQUFNLElBQUksR0FBRyxFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUN4QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLG1CQUFtQixHQUFHLENBQUMsQ0FBQztZQUMxRCxJQUFJLFlBQVksSUFBSSxDQUFDO2dCQUFFLE9BQU87WUFFOUIsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFDbEIsSUFBSSxDQUFDLENBQUMsU0FBUyxLQUFLLENBQUM7b0JBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFFaEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDN0IsQ0FBQyxFQUNELElBQUksQ0FBQyxHQUFHLENBQ04sQ0FBQyxFQUNELENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLG1CQUFtQixDQUFDLEdBQUcsWUFBWSxDQUM3RCxDQUNGLENBQUM7Z0JBQ0YsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLFNBQVMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNuRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFaEUsV0FBVyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ25CLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztvQkFDM0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxjQUFjLEdBQUcsWUFBWSxDQUFDO29CQUM5RCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUMxQixlQUFlLEVBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsWUFBWSxHQUFHLFdBQVcsQ0FBQyxDQUM1QyxDQUFDO29CQUVGLElBQUksUUFBUSxHQUFHLFVBQVUsR0FBRyxjQUFjLEdBQUcsV0FBVyxDQUFDO29CQUN6RCxJQUFJLE1BQU0sR0FBRyxRQUFRLEdBQUcsV0FBVyxDQUFDO29CQUVwQyxJQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUUsQ0FBQzt3QkFDckIsUUFBUSxHQUFHLEtBQUssQ0FBQzt3QkFDakIsTUFBTSxHQUFHLEtBQUssR0FBRyxXQUFXLENBQUM7b0JBQy9CLENBQUM7b0JBQ0QsSUFBSSxNQUFNLEdBQUcsS0FBSyxFQUFFLENBQUM7d0JBQ25CLE1BQU0sR0FBRyxLQUFLLENBQUM7d0JBQ2YsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxXQUFXLENBQUMsQ0FBQztvQkFDbEQsQ0FBQztvQkFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQzFDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxDQUFDLFNBQVMsS0FBSyxDQUFDO29CQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBRWhDLFdBQVcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUNuQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7b0JBQzNDLE1BQU0sU0FBUyxHQUFHLENBQUMsRUFBRSxHQUFHLFlBQVksQ0FBQyxHQUFHLFlBQVksQ0FBQztvQkFFckQsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7b0JBQ3RDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDO29CQUVsQyxJQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUUsQ0FBQzt3QkFDckIsUUFBUSxHQUFHLEtBQUssQ0FBQzt3QkFDakIsTUFBTSxHQUFHLEtBQUssR0FBRyxZQUFZLENBQUM7b0JBQ2hDLENBQUM7b0JBQ0QsSUFBSSxNQUFNLEdBQUcsS0FBSyxFQUFFLENBQUM7d0JBQ25CLE1BQU0sR0FBRyxLQUFLLENBQUM7d0JBQ2YsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxZQUFZLENBQUMsQ0FBQztvQkFDbkQsQ0FBQztvQkFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQzFDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDMUQsT0FBTyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBRWpELGtFQUFrRTtJQUNsRSxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUU7UUFDcEMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQStCLENBQUM7UUFDMUQsSUFBSSxZQUFZLENBQUMsUUFBUSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3JDLE9BQVEsSUFBSSxDQUFDLEtBQTRCLElBQUssSUFBSSxDQUFDLE1BQWlCLENBQUM7UUFDdkUsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUE4QixDQUFDO1FBQ3JELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFrQyxDQUFDO1FBQzdELE9BQU8sQ0FDTCxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzNELENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN2RSxRQUFRO1lBQ1IsWUFBWTtZQUNYLElBQUksQ0FBQyxNQUFpQjtZQUN2QixTQUFTLENBQ1YsQ0FBQztJQUNKLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFakQsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQzlDLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ2pFLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLFlBQVksQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM1RCxPQUFPO1lBQ0wsVUFBVSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sSUFBSSxJQUFJO1lBQzlDLFVBQVUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLElBQUksSUFBSTtTQUMvQyxDQUFDO0lBQ0osQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRWhDLE1BQU0sb0JBQW9CLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtRQUM1QyxJQUFJLFVBQVU7WUFBRSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBRW5DLE1BQU0sb0JBQW9CLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtRQUM1QyxJQUFJLFVBQVU7WUFBRSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBRW5DLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6QyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekMsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNyRCxhQUFhLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztJQUNuQyxhQUFhLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztJQUNuQyxtQkFBbUIsQ0FBQyxPQUFPLEdBQUcsZ0JBQWdCLENBQUM7SUFFL0MsT0FBTyxDQUNMLDRCQUNZLFdBQVcscUJBQ0osVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFDNUMsU0FBUyxFQUFDLHFJQUFxSSxhQUUvSSxlQUNFLEVBQUUsRUFBQyxjQUFjLEVBQ2pCLFNBQVMsRUFBQyxnRkFBZ0YsYUFFMUYsTUFBQyxTQUFTLElBQ1Isa0JBQWtCLEVBQUUsa0JBQWtCLEVBQ3RDLFdBQVcsRUFDVCxlQUFLLFNBQVMsRUFBQyxvR0FBb0csYUFDakgsS0FBQyxNQUFNLElBQUMsU0FBUyxFQUFDLG9DQUFvQyxHQUFHLEVBQ3pELGdCQUNFLEVBQUUsRUFBQyxxQkFBcUIsRUFDeEIsSUFBSSxFQUFDLHFCQUFxQixFQUMxQixJQUFJLEVBQUMsTUFBTSxFQUNYLEtBQUssRUFBRSxXQUFXLEVBQ2xCLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQy9DLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO3dDQUNmLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxRQUFRLElBQUksV0FBVyxFQUFFLENBQUM7NENBQ3RDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQzs0Q0FDbkIsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDOzRDQUNwQixjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7d0NBQ3JCLENBQUM7b0NBQ0gsQ0FBQyxFQUNELFdBQVcsRUFBQyxpQkFBaUIsZ0JBQ2xCLGNBQWMsRUFDekIsU0FBUyxFQUFDLDZGQUE2RixHQUN2RyxFQUNELFdBQVcsSUFBSSxDQUNkLGlCQUNFLElBQUksRUFBQyxRQUFRLGdCQUNGLGNBQWMsRUFDekIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsRUFDakMsU0FBUyxFQUFDLDRXQUE0VyxZQUV0WCxjQUFLLFNBQVMsRUFBQyx5TEFBeUwsb0JBRWxNLEdBQ0MsQ0FDVixJQUNHLEVBRVIsU0FBUyxFQUNQLEtBQUMsY0FBYyxJQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsR0FBSSxhQUdoRSxlQUFLLFNBQVMsRUFBQyx3QkFBd0IsYUFDckMsS0FBQyxTQUFTLElBQ1IsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQ2xCLFlBQVksRUFBRSxZQUFZLEVBQzFCLFlBQVksRUFBRSxZQUFZLEVBQzFCLFlBQVksRUFBRSxnQkFBZ0IsR0FDOUIsRUFDRixjQUFLLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUMscUJBQXFCLFlBQzNELGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FDZixlQUFLLFNBQVMsRUFBQyxtRUFBbUUsYUFDaEYsS0FBQyxPQUFPLElBQUMsSUFBSSxFQUFFLEVBQUUsR0FBSSxFQUNyQixpREFBMkIsSUFDdkIsQ0FDUCxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQ0osSUFDRixFQUVOLGNBQ0UsR0FBRyxFQUFFLFdBQVcsRUFDaEIsU0FBUyxFQUFDLHlDQUF5QyxFQUNuRCxhQUFhLEVBQUUsU0FBUyxFQUN4QixXQUFXLEVBQUUsdUJBQXVCLEVBQ3BDLFlBQVksRUFBRSx3QkFBd0IsWUFFdEMsS0FBQyxRQUFRLElBQ1AsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQ2xCLFNBQVMsRUFBRSxRQUFRLENBQUMsS0FBSyxFQUN6QixPQUFPLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFDckIsT0FBTyxFQUFFLFdBQVcsRUFDcEIsVUFBVSxFQUFFLFlBQVksRUFDeEIsWUFBWSxFQUFFLFlBQVksRUFDMUIsUUFBUSxFQUFFLGdCQUFnQixFQUMxQixhQUFhLEVBQUUsYUFBYSxFQUM1QixPQUFPLEVBQUUsT0FBTyxHQUNoQixHQUNFLElBQ0ksRUFDWixlQUFLLFNBQVMsRUFBQyxzS0FBc0ssYUFDbkwsS0FBQyxVQUFVLElBQ1QsT0FBTyxFQUFDLE9BQU8sRUFDZixJQUFJLEVBQUMsT0FBTyxFQUNaLE9BQU8sRUFBRSxPQUFPLGdCQUNMLFVBQVUsWUFFckIsS0FBQyxPQUFPLElBQUMsU0FBUyxFQUFDLFNBQVMsR0FBRyxHQUNwQixFQUNiLEtBQUMsVUFBVSxJQUNULE9BQU8sRUFBQyxPQUFPLEVBQ2YsSUFBSSxFQUFDLE9BQU8sRUFDWixPQUFPLEVBQUUsU0FBUyxnQkFDUCxZQUFZLFlBRXZCLEtBQUMsU0FBUyxJQUFDLFNBQVMsRUFBQyxhQUFhLEdBQUcsR0FDMUIsRUFDYixLQUFDLFVBQVUsSUFDVCxPQUFPLEVBQUMsT0FBTyxFQUNmLElBQUksRUFBQyxPQUFPLEVBQ1osT0FBTyxFQUFFLE1BQU0sZ0JBQ0osU0FBUyxZQUVwQixLQUFDLE1BQU0sSUFBQyxTQUFTLEVBQUMsU0FBUyxHQUFHLEdBQ25CLElBQ1QsSUFDRixFQUdMLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FDWixpQkFBTyxTQUFTLEVBQUMsZ0dBQWdHLGFBRS9HLGVBQUssU0FBUyxFQUFDLGlFQUFpRSxhQUM5RSxlQUFNLFNBQVMsRUFBQyx5REFBeUQsWUFDdEUsZ0JBQWdCLEdBQ1osRUFDUCxlQUFLLFNBQVMsRUFBQyxvQ0FBb0MsYUFDakQsTUFBQyxPQUFPLGVBQ04sS0FBQyxjQUFjLElBQUMsT0FBTyxrQkFDckIsS0FBQyxVQUFVLGtCQUNFLGFBQWEsdUJBQ04sR0FBRyxFQUNyQixPQUFPLEVBQUUsb0JBQW9CLEVBQzdCLFFBQVEsRUFBRSxDQUFDLFVBQVUsWUFFckIsS0FBQyxTQUFTLElBQUMsU0FBUyxFQUFDLFNBQVMsR0FBRyxHQUN0QixHQUNFLEVBQ2hCLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FDWixNQUFDLGNBQWMsOEJBRWIsS0FBQyxHQUFHLG9CQUFRLElBQ0csQ0FDbEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUNBLEVBQ1YsTUFBQyxPQUFPLGVBQ04sS0FBQyxjQUFjLElBQUMsT0FBTyxrQkFDckIsS0FBQyxVQUFVLGtCQUNFLGVBQWUsdUJBQ1IsR0FBRyxFQUNyQixPQUFPLEVBQUUsb0JBQW9CLEVBQzdCLFFBQVEsRUFBRSxDQUFDLFVBQVUsWUFFckIsS0FBQyxXQUFXLElBQUMsU0FBUyxFQUFDLFNBQVMsR0FBRyxHQUN4QixHQUNFLEVBQ2hCLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FDWixNQUFDLGNBQWMsZ0NBRWIsS0FBQyxHQUFHLG9CQUFRLElBQ0csQ0FDbEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUNBLEVBQ1YsbUNBQWlCLFNBQVMsRUFBQyxpQ0FBaUMsR0FBRyxFQUMvRCxLQUFDLFVBQVUsa0JBQ0Usb0JBQW9CLHVCQUNiLFFBQVEsRUFDMUIsT0FBTyxFQUFFLGVBQWUsWUFFeEIsS0FBQyxDQUFDLElBQUMsU0FBUyxFQUFDLFNBQVMsR0FBRyxHQUNkLElBQ1QsSUFDRixFQUVOLGNBQUssU0FBUyxFQUFDLHdCQUF3QixZQUNyQyxLQUFDLGFBQWEsY0FDWixLQUFDLGlCQUFpQixJQUNoQixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFDaEIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQ3BDLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUM5QixjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFDdEMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlLEVBQ3hDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsRUFDNUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQ2xDLGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUNwQyxlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWUsRUFDeEMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQ3BDLGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUNwQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFDNUIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQ2xDLFlBQVksRUFBRSxZQUFZLEdBQzFCLEdBQ1ksR0FDWixJQUNBLENBQ1QsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUNKLENBQ1AsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHBhcnNlU3RlcE5hbWUsIHBhcnNlV29ya2Zsb3dOYW1lIH0gZnJvbSAnQHdvcmtmbG93L3V0aWxzL3BhcnNlLW5hbWUnO1xuaW1wb3J0IHtcbiAgQ2hldnJvbkRvd24sXG4gIENoZXZyb25VcCxcbiAgUm90YXRlQ2N3LFxuICBTZWFyY2gsXG4gIFgsXG4gIFpvb21JbixcbiAgWm9vbU91dCxcbn0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7XG4gIHR5cGUgUmVhY3ROb2RlLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlRGVmZXJyZWRWYWx1ZSxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VMb2FkTW9yZU9uU2Nyb2xsIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlLWxvYWQtbW9yZS1vbi1zY3JvbGwnO1xuaW1wb3J0IHsgdXNlUmVkdWNlZE1vdGlvbiB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZS1yZWR1Y2VkLW1vdGlvbic7XG5pbXBvcnQgeyBFcnJvckJvdW5kYXJ5IH0gZnJvbSAnLi4vZXJyb3ItYm91bmRhcnknO1xuaW1wb3J0IHtcbiAgRW50aXR5RGV0YWlsUGFuZWwsXG4gIHR5cGUgU2VsZWN0ZWRTcGFuSW5mbyxcbn0gZnJvbSAnLi4vc2lkZWJhci9lbnRpdHktZGV0YWlsLXBhbmVsJztcbmltcG9ydCB7IHVzZVNpZGViYXJEYXRhIH0gZnJvbSAnLi4vc2lkZWJhci9zaWRlYmFyLWRhdGEtY29udGV4dCc7XG5pbXBvcnQgdHlwZSB7IFRyYWNlV2l0aE1ldGEgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGZvcm1hdER1cmF0aW9uLCBnZXRIaWdoUmVzSW5NcyB9IGZyb20gJy4uL3RyYWNlLXZpZXdlci91dGlsL3RpbWluZyc7XG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnLi4vdWkvaWNvbi1idXR0b24nO1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4uL3VpL3NwaW5uZXInO1xuaW1wb3J0IHsgS2JkIH0gZnJvbSAnLi4vdWkva2JkJztcbmltcG9ydCBFdmVudExpc3QgZnJvbSAnLi9jb21wb25lbnRzL2V2ZW50LWxpc3QnO1xuaW1wb3J0IHsgU3BsaXRQYW5lIH0gZnJvbSAnLi9jb21wb25lbnRzL3NwbGl0LXBhbmUnO1xuaW1wb3J0IHtcbiAgVElNRUxJTkVfUEFERElOR19QWCxcbiAgVGltZWxpbmUsXG4gIFRpbWVsaW5lSGVhZGVyLFxufSBmcm9tICcuL2NvbXBvbmVudHMvdGltZWxpbmUnO1xuaW1wb3J0IHtcbiAgVG9vbHRpcCxcbiAgVG9vbHRpcENvbnRlbnQsXG4gIFRvb2x0aXBQcm92aWRlcixcbiAgVG9vbHRpcFRyaWdnZXIsXG59IGZyb20gJy4uL3VpL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQWN0aXZlU3BhblByb3ZpZGVyLCB1c2VBY3RpdmVTcGFuIH0gZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCB7IHNlYXJjaFNwYW5zIH0gZnJvbSAnLi9zZWFyY2gnO1xuaW1wb3J0IHsgY29tcHV0ZVJvb3RCb3VuZHMsIGNvbXB1dGVUaW1lTWFya2VycyB9IGZyb20gJy4vdXRpbHMnO1xuXG5pbnRlcmZhY2UgTmV3VHJhY2VWaWV3ZXJQcm9wcyB7XG4gIHRyYWNlOiBUcmFjZVdpdGhNZXRhO1xuICBvbkxvYWRNb3JlPzogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG4gIGhhc01vcmU/OiBib29sZWFuO1xuICBpc0xvYWRpbmdNb3JlPzogYm9vbGVhbjtcbn1cblxuY29uc3QgTUlOX1ZJRVdQT1JUX01TID0gMC4wMDE7XG5cbmludGVyZmFjZSBWaWV3cG9ydCB7XG4gIHN0YXJ0OiBudW1iZXI7XG4gIGVuZDogbnVtYmVyO1xufVxuXG5mdW5jdGlvbiB1c2VBbmltYXRlZFZpZXdwb3J0KGluaXRpYWw6IFZpZXdwb3J0KSB7XG4gIGNvbnN0IFt2aWV3cG9ydCwgc2V0Vmlld3BvcnRTdGF0ZV0gPSB1c2VTdGF0ZTxWaWV3cG9ydD4oaW5pdGlhbCk7XG4gIGNvbnN0IGFuaW1SZWYgPSB1c2VSZWY8e1xuICAgIHJhZjogbnVtYmVyO1xuICAgIGZyb206IFZpZXdwb3J0O1xuICAgIHRvOiBWaWV3cG9ydDtcbiAgICBzdGFydDogbnVtYmVyO1xuICB9IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGN1cnJlbnRSZWYgPSB1c2VSZWYoaW5pdGlhbCk7XG4gIGN1cnJlbnRSZWYuY3VycmVudCA9IHZpZXdwb3J0O1xuICBjb25zdCByZWR1Y2VkTW90aW9uID0gdXNlUmVkdWNlZE1vdGlvbigpO1xuXG4gIGNvbnN0IGNhbmNlbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYW5pbVJlZi5jdXJyZW50KSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShhbmltUmVmLmN1cnJlbnQucmFmKTtcbiAgICAgIGFuaW1SZWYuY3VycmVudCA9IG51bGw7XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgY29uc3QgYW5pbWF0ZVRvID0gdXNlQ2FsbGJhY2soXG4gICAgKHRhcmdldDogVmlld3BvcnQpID0+IHtcbiAgICAgIGNhbmNlbCgpO1xuXG4gICAgICBpZiAocmVkdWNlZE1vdGlvbikge1xuICAgICAgICBjdXJyZW50UmVmLmN1cnJlbnQgPSB0YXJnZXQ7XG4gICAgICAgIHNldFZpZXdwb3J0U3RhdGUodGFyZ2V0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmcm9tID0gY3VycmVudFJlZi5jdXJyZW50O1xuICAgICAgY29uc3QgYW5pbSA9IHsgcmFmOiAwLCBmcm9tLCB0bzogdGFyZ2V0LCBzdGFydDogcGVyZm9ybWFuY2Uubm93KCkgfTtcblxuICAgICAgY29uc3QgdGljayA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgdCA9IE1hdGgubWluKChwZXJmb3JtYW5jZS5ub3coKSAtIGFuaW0uc3RhcnQpIC8gMTUwLCAxKTtcbiAgICAgICAgY29uc3QgZSA9IDEgLSAoMSAtIHQpICogKDEgLSB0KTtcbiAgICAgICAgc2V0Vmlld3BvcnRTdGF0ZSh7XG4gICAgICAgICAgc3RhcnQ6IGFuaW0uZnJvbS5zdGFydCArIChhbmltLnRvLnN0YXJ0IC0gYW5pbS5mcm9tLnN0YXJ0KSAqIGUsXG4gICAgICAgICAgZW5kOiBhbmltLmZyb20uZW5kICsgKGFuaW0udG8uZW5kIC0gYW5pbS5mcm9tLmVuZCkgKiBlLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHQgPCAxKSBhbmltLnJhZiA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aWNrKTtcbiAgICAgICAgZWxzZSBhbmltUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgfTtcblxuICAgICAgYW5pbVJlZi5jdXJyZW50ID0gYW5pbTtcbiAgICAgIGFuaW0ucmFmID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2spO1xuICAgIH0sXG4gICAgW2NhbmNlbCwgcmVkdWNlZE1vdGlvbl1cbiAgKTtcblxuICBjb25zdCBzZXRWaWV3cG9ydCA9IHVzZUNhbGxiYWNrKFxuICAgICh1cGRhdGU6IFZpZXdwb3J0IHwgKChwcmV2OiBWaWV3cG9ydCkgPT4gVmlld3BvcnQpKSA9PiB7XG4gICAgICBjYW5jZWwoKTtcbiAgICAgIGlmICh0eXBlb2YgdXBkYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHNldFZpZXdwb3J0U3RhdGUoKHByZXYpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXh0ID0gdXBkYXRlKHByZXYpO1xuICAgICAgICAgIGN1cnJlbnRSZWYuY3VycmVudCA9IG5leHQ7XG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudFJlZi5jdXJyZW50ID0gdXBkYXRlO1xuICAgICAgICBzZXRWaWV3cG9ydFN0YXRlKHVwZGF0ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbY2FuY2VsXVxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiBjYW5jZWwsIFtjYW5jZWxdKTtcblxuICByZXR1cm4geyB2aWV3cG9ydCwgc2V0Vmlld3BvcnQsIGFuaW1hdGVUbyB9O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEhvb2s6IGJyaWRnZSBBY3RpdmVTcGFuQ29udGV4dCArIFNpZGViYXJEYXRhQ29udGV4dCDihpIgU2VsZWN0ZWRTcGFuSW5mb1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIHVzZVNlbGVjdGVkU3BhbkluZm8oKTogU2VsZWN0ZWRTcGFuSW5mbyB8IG51bGwge1xuICBjb25zdCB7IGFjdGl2ZVNwYW4gfSA9IHVzZUFjdGl2ZVNwYW4oKTtcbiAgY29uc3Qgc2lkZWJhciA9IHVzZVNpZGViYXJEYXRhKCk7XG5cbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghYWN0aXZlU3BhbikgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBjb3JyZWxhdGlvbklkID0gYWN0aXZlU3Bhbi5zcGFuSWQ7XG4gICAgY29uc3QgcmF3RXZlbnRzID0gY29ycmVsYXRpb25JZFxuICAgICAgPyBzaWRlYmFyLmV2ZW50cy5maWx0ZXIoKGUpID0+IGUuY29ycmVsYXRpb25JZCA9PT0gY29ycmVsYXRpb25JZClcbiAgICAgIDogW107XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogYWN0aXZlU3Bhbi5hdHRyaWJ1dGVzPy5kYXRhLFxuICAgICAgcmVzb3VyY2U6IGFjdGl2ZVNwYW4uYXR0cmlidXRlcz8ucmVzb3VyY2UgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgc3BhbklkOiBhY3RpdmVTcGFuLnNwYW5JZCxcbiAgICAgIHJhd0V2ZW50cyxcbiAgICB9O1xuICB9LCBbYWN0aXZlU3Bhbiwgc2lkZWJhcl0pO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJvb3QgY29tcG9uZW50XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGZ1bmN0aW9uIE5ld1RyYWNlVmlld2VyKHtcbiAgdHJhY2UsXG4gIG9uTG9hZE1vcmUsXG4gIGhhc01vcmUsXG4gIGlzTG9hZGluZ01vcmUsXG59OiBOZXdUcmFjZVZpZXdlclByb3BzKTogUmVhY3ROb2RlIHtcbiAgcmV0dXJuIChcbiAgICA8VG9vbHRpcFByb3ZpZGVyIGRlbGF5RHVyYXRpb249ezMwMH0+XG4gICAgICA8QWN0aXZlU3BhblByb3ZpZGVyIHNwYW5zPXt0cmFjZS5zcGFuc30+XG4gICAgICAgIDxOZXdUcmFjZVZpZXdlckNvbnRlbnRcbiAgICAgICAgICB0cmFjZT17dHJhY2V9XG4gICAgICAgICAgb25Mb2FkTW9yZT17b25Mb2FkTW9yZX1cbiAgICAgICAgICBoYXNNb3JlPXtoYXNNb3JlfVxuICAgICAgICAgIGlzTG9hZGluZ01vcmU9e2lzTG9hZGluZ01vcmV9XG4gICAgICAgIC8+XG4gICAgICA8L0FjdGl2ZVNwYW5Qcm92aWRlcj5cbiAgICA8L1Rvb2x0aXBQcm92aWRlcj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gTmV3VHJhY2VWaWV3ZXJDb250ZW50KHtcbiAgdHJhY2UsXG4gIG9uTG9hZE1vcmUsXG4gIGhhc01vcmUsXG4gIGlzTG9hZGluZ01vcmUsXG59OiBOZXdUcmFjZVZpZXdlclByb3BzKTogUmVhY3ROb2RlIHtcbiAgY29uc3QgeyBhY3RpdmVTcGFuLCBhY3RpdmVTcGFuSWQsIHNldEFjdGl2ZVNwYW4sIGNsZWFyQWN0aXZlU3BhbiB9ID1cbiAgICB1c2VBY3RpdmVTcGFuKCk7XG5cbiAgY29uc3Qgc2lkZWJhciA9IHVzZVNpZGViYXJEYXRhKCk7XG4gIGNvbnN0IHNlbGVjdGVkU3BhbiA9IHVzZVNlbGVjdGVkU3BhbkluZm8oKTtcblxuICBjb25zdCBbc2VhcmNoUXVlcnksIHNldFNlYXJjaFF1ZXJ5XSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgZGVmZXJyZWRTZWFyY2hRdWVyeSA9IHVzZURlZmVycmVkVmFsdWUoc2VhcmNoUXVlcnkpO1xuXG4gIGNvbnN0IHNlYXJjaFJlc3VsdCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gc2VhcmNoU3BhbnModHJhY2Uuc3BhbnMsIGRlZmVycmVkU2VhcmNoUXVlcnkpLFxuICAgIFt0cmFjZS5zcGFucywgZGVmZXJyZWRTZWFyY2hRdWVyeV1cbiAgKTtcblxuICBjb25zdCByb290ID0gdXNlTWVtbygoKSA9PiBjb21wdXRlUm9vdEJvdW5kcyh0cmFjZS5zcGFucyksIFt0cmFjZS5zcGFuc10pO1xuXG4gIGNvbnN0IHNjcm9sbENvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGxvYWRNb3JlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHZvaWQgb25Mb2FkTW9yZT8uKCk7XG4gIH0sIFtvbkxvYWRNb3JlXSk7XG4gIGNvbnN0IGxvYWRNb3JlU2VudGluZWxSZWYgPSB1c2VMb2FkTW9yZU9uU2Nyb2xsKGxvYWRNb3JlLCB7XG4gICAgaGFzTW9yZTogQm9vbGVhbihvbkxvYWRNb3JlICYmIGhhc01vcmUpLFxuICAgIGlzTG9hZGluZ01vcmU6IEJvb2xlYW4oaXNMb2FkaW5nTW9yZSksXG4gICAgcm9vdFJlZjogc2Nyb2xsQ29udGFpbmVyUmVmLFxuICB9KTtcblxuICBjb25zdCB7IHZpZXdwb3J0LCBzZXRWaWV3cG9ydCwgYW5pbWF0ZVRvIH0gPSB1c2VBbmltYXRlZFZpZXdwb3J0KHtcbiAgICBzdGFydDogcm9vdC5zdGFydFRpbWUsXG4gICAgZW5kOiByb290LnN0YXJ0VGltZSArIHJvb3QuZHVyYXRpb24sXG4gIH0pO1xuXG4gIGNvbnN0IHByZXZSb290UmVmID0gdXNlUmVmPFZpZXdwb3J0Pih7XG4gICAgc3RhcnQ6IHJvb3Quc3RhcnRUaW1lLFxuICAgIGVuZDogcm9vdC5zdGFydFRpbWUgKyByb290LmR1cmF0aW9uLFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHByZXZSb290ID0gcHJldlJvb3RSZWYuY3VycmVudDtcbiAgICBjb25zdCBuZXdTdGFydCA9IHJvb3Quc3RhcnRUaW1lO1xuICAgIGNvbnN0IG5ld0VuZCA9IHJvb3Quc3RhcnRUaW1lICsgcm9vdC5kdXJhdGlvbjtcblxuICAgIHNldFZpZXdwb3J0KChwcmV2KSA9PiB7XG4gICAgICBjb25zdCB3YXNBdEZ1bGxFeHRlbnQgPVxuICAgICAgICBNYXRoLmFicyhwcmV2LnN0YXJ0IC0gcHJldlJvb3Quc3RhcnQpIDwgMC4wMSAmJlxuICAgICAgICBNYXRoLmFicyhwcmV2LmVuZCAtIHByZXZSb290LmVuZCkgPCAwLjAxO1xuXG4gICAgICBpZiAod2FzQXRGdWxsRXh0ZW50KSB7XG4gICAgICAgIHJldHVybiB7IHN0YXJ0OiBuZXdTdGFydCwgZW5kOiBuZXdFbmQgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0pO1xuXG4gICAgcHJldlJvb3RSZWYuY3VycmVudCA9IHsgc3RhcnQ6IG5ld1N0YXJ0LCBlbmQ6IG5ld0VuZCB9O1xuICB9LCBbcm9vdC5zdGFydFRpbWUsIHJvb3QuZHVyYXRpb24sIHNldFZpZXdwb3J0XSk7XG5cbiAgY29uc3Qgdmlld0R1cmF0aW9uID0gdmlld3BvcnQuZW5kIC0gdmlld3BvcnQuc3RhcnQ7XG5cbiAgY29uc3QgdGltZU1hcmtlcnMgPSB1c2VNZW1vKFxuICAgICgpID0+IGNvbXB1dGVUaW1lTWFya2Vycyh2aWV3RHVyYXRpb24sIHZpZXdwb3J0LnN0YXJ0IC0gcm9vdC5zdGFydFRpbWUpLFxuICAgIFt2aWV3RHVyYXRpb24sIHZpZXdwb3J0LnN0YXJ0LCByb290LnN0YXJ0VGltZV1cbiAgKTtcblxuICBjb25zdCByZXNldFpvb20gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgYW5pbWF0ZVRvKHsgc3RhcnQ6IHJvb3Quc3RhcnRUaW1lLCBlbmQ6IHJvb3Quc3RhcnRUaW1lICsgcm9vdC5kdXJhdGlvbiB9KTtcbiAgfSwgW2FuaW1hdGVUbywgcm9vdC5zdGFydFRpbWUsIHJvb3QuZHVyYXRpb25dKTtcblxuICBjb25zdCBaT09NX0ZBQ1RPUiA9IDAuNTtcblxuICBjb25zdCB6b29tQnkgPSB1c2VDYWxsYmFjayhcbiAgICAoZmFjdG9yOiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IHJvb3RTID0gcm9vdC5zdGFydFRpbWU7XG4gICAgICBjb25zdCByb290RSA9IHJvb3Quc3RhcnRUaW1lICsgcm9vdC5kdXJhdGlvbjtcbiAgICAgIGNvbnN0IHJvb3REID0gcm9vdC5kdXJhdGlvbjtcblxuICAgICAgc2V0Vmlld3BvcnQoKHByZXYpID0+IHtcbiAgICAgICAgY29uc3QgcHJldkR1cmF0aW9uID0gcHJldi5lbmQgLSBwcmV2LnN0YXJ0O1xuICAgICAgICBjb25zdCBjZW50ZXIgPSAocHJldi5zdGFydCArIHByZXYuZW5kKSAvIDI7XG4gICAgICAgIGNvbnN0IG5ld0R1cmF0aW9uID0gTWF0aC5tYXgoXG4gICAgICAgICAgTUlOX1ZJRVdQT1JUX01TLFxuICAgICAgICAgIE1hdGgubWluKHJvb3RELCBwcmV2RHVyYXRpb24gKiBmYWN0b3IpXG4gICAgICAgICk7XG4gICAgICAgIGxldCBuZXdTdGFydCA9IGNlbnRlciAtIG5ld0R1cmF0aW9uIC8gMjtcbiAgICAgICAgbGV0IG5ld0VuZCA9IGNlbnRlciArIG5ld0R1cmF0aW9uIC8gMjtcblxuICAgICAgICBpZiAobmV3U3RhcnQgPCByb290Uykge1xuICAgICAgICAgIG5ld1N0YXJ0ID0gcm9vdFM7XG4gICAgICAgICAgbmV3RW5kID0gcm9vdFMgKyBuZXdEdXJhdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3RW5kID4gcm9vdEUpIHtcbiAgICAgICAgICBuZXdFbmQgPSByb290RTtcbiAgICAgICAgICBuZXdTdGFydCA9IE1hdGgubWF4KHJvb3RTLCByb290RSAtIG5ld0R1cmF0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IHN0YXJ0OiBuZXdTdGFydCwgZW5kOiBuZXdFbmQgfTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgW3NldFZpZXdwb3J0LCByb290LnN0YXJ0VGltZSwgcm9vdC5kdXJhdGlvbl1cbiAgKTtcblxuICBjb25zdCB6b29tSW4gPSB1c2VDYWxsYmFjaygoKSA9PiB6b29tQnkoWk9PTV9GQUNUT1IpLCBbem9vbUJ5XSk7XG4gIGNvbnN0IHpvb21PdXQgPSB1c2VDYWxsYmFjaygoKSA9PiB6b29tQnkoMSAvIFpPT01fRkFDVE9SKSwgW3pvb21CeV0pO1xuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFNwYW4gPSB1c2VDYWxsYmFjayhcbiAgICAoc3BhbklkOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChzcGFuSWQgPT09IGFjdGl2ZVNwYW5JZCkge1xuICAgICAgICBjbGVhckFjdGl2ZVNwYW4oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc2V0QWN0aXZlU3BhbihzcGFuSWQpO1xuXG4gICAgICBjb25zdCBzcGFuID0gdHJhY2Uuc3BhbnMuZmluZCgocykgPT4gcy5zcGFuSWQgPT09IHNwYW5JZCk7XG4gICAgICBpZiAoIXNwYW4pIHJldHVybjtcblxuICAgICAgY29uc3Qgc3BhblN0YXJ0ID0gZ2V0SGlnaFJlc0luTXMoc3Bhbi5zdGFydFRpbWUpO1xuICAgICAgY29uc3Qgc3BhbkVuZCA9IGdldEhpZ2hSZXNJbk1zKHNwYW4uZW5kVGltZSk7XG4gICAgICBjb25zdCBzcGFuRHVyYXRpb24gPSBzcGFuRW5kIC0gc3BhblN0YXJ0O1xuXG4gICAgICBjb25zdCByb290UyA9IHJvb3Quc3RhcnRUaW1lO1xuICAgICAgY29uc3Qgcm9vdEUgPSByb290LnN0YXJ0VGltZSArIHJvb3QuZHVyYXRpb247XG4gICAgICBjb25zdCByb290RCA9IHJvb3QuZHVyYXRpb247XG5cbiAgICAgIGlmIChzcGFuRHVyYXRpb24gPiByb290RCAqIDAuOCkge1xuICAgICAgICBhbmltYXRlVG8oeyBzdGFydDogcm9vdFMsIGVuZDogcm9vdEUgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGFkZGluZyA9IE1hdGgubWF4KHNwYW5EdXJhdGlvbiAqIDAuMiwgTUlOX1ZJRVdQT1JUX01TIC8gMik7XG4gICAgICBsZXQgbmV3U3RhcnQgPSBzcGFuU3RhcnQgLSBwYWRkaW5nO1xuICAgICAgbGV0IG5ld0VuZCA9IHNwYW5FbmQgKyBwYWRkaW5nO1xuXG4gICAgICBpZiAobmV3RW5kIC0gbmV3U3RhcnQgPCBNSU5fVklFV1BPUlRfTVMpIHtcbiAgICAgICAgY29uc3QgY2VudGVyID0gKHNwYW5TdGFydCArIHNwYW5FbmQpIC8gMjtcbiAgICAgICAgbmV3U3RhcnQgPSBjZW50ZXIgLSBNSU5fVklFV1BPUlRfTVMgLyAyO1xuICAgICAgICBuZXdFbmQgPSBjZW50ZXIgKyBNSU5fVklFV1BPUlRfTVMgLyAyO1xuICAgICAgfVxuXG4gICAgICBpZiAobmV3U3RhcnQgPCByb290Uykge1xuICAgICAgICBjb25zdCBkdXJhdGlvbiA9IG5ld0VuZCAtIG5ld1N0YXJ0O1xuICAgICAgICBuZXdTdGFydCA9IHJvb3RTO1xuICAgICAgICBuZXdFbmQgPSBNYXRoLm1pbihyb290RSwgcm9vdFMgKyBkdXJhdGlvbik7XG4gICAgICB9XG4gICAgICBpZiAobmV3RW5kID4gcm9vdEUpIHtcbiAgICAgICAgY29uc3QgZHVyYXRpb24gPSBuZXdFbmQgLSBuZXdTdGFydDtcbiAgICAgICAgbmV3RW5kID0gcm9vdEU7XG4gICAgICAgIG5ld1N0YXJ0ID0gTWF0aC5tYXgocm9vdFMsIHJvb3RFIC0gZHVyYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBhbmltYXRlVG8oeyBzdGFydDogbmV3U3RhcnQsIGVuZDogbmV3RW5kIH0pO1xuICAgIH0sXG4gICAgW1xuICAgICAgYW5pbWF0ZVRvLFxuICAgICAgc2V0QWN0aXZlU3BhbixcbiAgICAgIGNsZWFyQWN0aXZlU3BhbixcbiAgICAgIGFjdGl2ZVNwYW5JZCxcbiAgICAgIHRyYWNlLnNwYW5zLFxuICAgICAgcm9vdC5zdGFydFRpbWUsXG4gICAgICByb290LmR1cmF0aW9uLFxuICAgIF1cbiAgKTtcblxuICBjb25zdCBbYWx0SGVsZCwgc2V0QWx0SGVsZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTaWRlYmFyTmF2S2V5ID0gKGU6IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgICAgIGlmIChcbiAgICAgICAgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fFxuICAgICAgICB0YXJnZXQgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50IHx8XG4gICAgICAgIHRhcmdldD8uaXNDb250ZW50RWRpdGFibGVcbiAgICAgICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB0YXJnZXRJZCA9XG4gICAgICAgIGUua2V5ID09PSAnaycgPyBwcmV2U3BhbklkUmVmLmN1cnJlbnQgOiBuZXh0U3BhbklkUmVmLmN1cnJlbnQ7XG4gICAgICBpZiAodGFyZ2V0SWQpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBoYW5kbGVTZWxlY3RTcGFuUmVmLmN1cnJlbnQodGFyZ2V0SWQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbktleURvd24gPSAoZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICBjbGVhckFjdGl2ZVNwYW4oKTtcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09ICdBbHQnKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgc2V0QWx0SGVsZCh0cnVlKTtcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09ICdqJyB8fCBlLmtleSA9PT0gJ2snKSB7XG4gICAgICAgIGhhbmRsZVNpZGViYXJOYXZLZXkoZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBvbktleVVwID0gKGU6IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgIGlmIChlLmtleSA9PT0gJ0FsdCcpIHNldEFsdEhlbGQoZmFsc2UpO1xuICAgIH07XG4gICAgY29uc3Qgb25CbHVyID0gKCk6IHZvaWQgPT4gc2V0QWx0SGVsZChmYWxzZSk7XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93bik7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgb25LZXlVcCk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBvbkJsdXIpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93bik7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBvbktleVVwKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdibHVyJywgb25CbHVyKTtcbiAgICB9O1xuICB9LCBbY2xlYXJBY3RpdmVTcGFuXSk7XG5cbiAgY29uc3QgdGltZWxpbmVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBbaG92ZXJGcmFjdGlvbiwgc2V0SG92ZXJGcmFjdGlvbl0gPSB1c2VTdGF0ZTxudW1iZXIgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBob3ZlckluZm8gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoaG92ZXJGcmFjdGlvbiA9PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBhYnNUaW1lID0gdmlld3BvcnQuc3RhcnQgKyBob3ZlckZyYWN0aW9uICogdmlld0R1cmF0aW9uO1xuICAgIGNvbnN0IG9mZnNldCA9IGFic1RpbWUgLSByb290LnN0YXJ0VGltZTtcbiAgICByZXR1cm4geyBmcmFjdGlvbjogaG92ZXJGcmFjdGlvbiwgbGFiZWw6IGZvcm1hdER1cmF0aW9uKG9mZnNldCwgdHJ1ZSkgfTtcbiAgfSwgW2hvdmVyRnJhY3Rpb24sIHZpZXdwb3J0LnN0YXJ0LCB2aWV3RHVyYXRpb24sIHJvb3Quc3RhcnRUaW1lXSk7XG5cbiAgY29uc3QgaGFuZGxlVGltZWxpbmVNb3VzZU1vdmUgPSB1c2VDYWxsYmFjayhcbiAgICAoZTogUmVhY3QuTW91c2VFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGNvbnN0IGVsID0gdGltZWxpbmVSZWYuY3VycmVudDtcbiAgICAgIGlmICghZWwpIHJldHVybjtcbiAgICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHJlY3Qud2lkdGggLSBUSU1FTElORV9QQURESU5HX1BYICogMjtcbiAgICAgIGlmIChjb250ZW50V2lkdGggPD0gMCkgcmV0dXJuO1xuICAgICAgY29uc3QgZnJhY3Rpb24gPSBNYXRoLm1heChcbiAgICAgICAgMCxcbiAgICAgICAgTWF0aC5taW4oXG4gICAgICAgICAgMSxcbiAgICAgICAgICAoZS5jbGllbnRYIC0gcmVjdC5sZWZ0IC0gVElNRUxJTkVfUEFERElOR19QWCkgLyBjb250ZW50V2lkdGhcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHNldEhvdmVyRnJhY3Rpb24oZnJhY3Rpb24pO1xuICAgIH0sXG4gICAgW11cbiAgKTtcblxuICBjb25zdCBoYW5kbGVUaW1lbGluZU1vdXNlTGVhdmUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SG92ZXJGcmFjdGlvbihudWxsKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZWwgPSB0aW1lbGluZVJlZi5jdXJyZW50O1xuICAgIGlmICghZWwpIHJldHVybjtcblxuICAgIGNvbnN0IHJvb3RTID0gcm9vdC5zdGFydFRpbWU7XG4gICAgY29uc3Qgcm9vdEUgPSByb290LnN0YXJ0VGltZSArIHJvb3QuZHVyYXRpb247XG4gICAgY29uc3Qgcm9vdEQgPSByb290LmR1cmF0aW9uO1xuICAgIGlmIChyb290RCA8PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBvbldoZWVsID0gKGU6IFdoZWVsRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IGlzWm9vbUdlc3R1cmUgPSBlLmN0cmxLZXkgfHwgZS5tZXRhS2V5O1xuICAgICAgY29uc3QgaGFzRGVsdGFYID0gTWF0aC5hYnMoZS5kZWx0YVgpID4gTWF0aC5hYnMoZS5kZWx0YVkpO1xuXG4gICAgICBpZiAoIWlzWm9vbUdlc3R1cmUgJiYgIWhhc0RlbHRhWCkgcmV0dXJuO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICBjb25zdCByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjb250ZW50V2lkdGggPSByZWN0LndpZHRoIC0gVElNRUxJTkVfUEFERElOR19QWCAqIDI7XG4gICAgICBpZiAoY29udGVudFdpZHRoIDw9IDApIHJldHVybjtcblxuICAgICAgaWYgKGlzWm9vbUdlc3R1cmUpIHtcbiAgICAgICAgbGV0IGR5ID0gZS5kZWx0YVk7XG4gICAgICAgIGlmIChlLmRlbHRhTW9kZSA9PT0gMSkgZHkgKj0gMTY7XG5cbiAgICAgICAgY29uc3QgY3Vyc29yRnJhY3Rpb24gPSBNYXRoLm1heChcbiAgICAgICAgICAwLFxuICAgICAgICAgIE1hdGgubWluKFxuICAgICAgICAgICAgMSxcbiAgICAgICAgICAgIChlLmNsaWVudFggLSByZWN0LmxlZnQgLSBUSU1FTElORV9QQURESU5HX1BYKSAvIGNvbnRlbnRXaWR0aFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgaXNNb3VzZVdoZWVsID0gZS5kZWx0YU1vZGUgPT09IDEgfHwgTWF0aC5hYnMoZS5kZWx0YVkpID49IDUwO1xuICAgICAgICBjb25zdCBzY2FsZUZhY3RvciA9IE1hdGgucG93KDIsIGR5IC8gKGlzTW91c2VXaGVlbCA/IDIwMCA6IDYwKSk7XG5cbiAgICAgICAgc2V0Vmlld3BvcnQoKHByZXYpID0+IHtcbiAgICAgICAgICBjb25zdCBwcmV2RHVyYXRpb24gPSBwcmV2LmVuZCAtIHByZXYuc3RhcnQ7XG4gICAgICAgICAgY29uc3QgY3Vyc29yVGltZSA9IHByZXYuc3RhcnQgKyBjdXJzb3JGcmFjdGlvbiAqIHByZXZEdXJhdGlvbjtcbiAgICAgICAgICBjb25zdCBuZXdEdXJhdGlvbiA9IE1hdGgubWF4KFxuICAgICAgICAgICAgTUlOX1ZJRVdQT1JUX01TLFxuICAgICAgICAgICAgTWF0aC5taW4ocm9vdEQsIHByZXZEdXJhdGlvbiAqIHNjYWxlRmFjdG9yKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBsZXQgbmV3U3RhcnQgPSBjdXJzb3JUaW1lIC0gY3Vyc29yRnJhY3Rpb24gKiBuZXdEdXJhdGlvbjtcbiAgICAgICAgICBsZXQgbmV3RW5kID0gbmV3U3RhcnQgKyBuZXdEdXJhdGlvbjtcblxuICAgICAgICAgIGlmIChuZXdTdGFydCA8IHJvb3RTKSB7XG4gICAgICAgICAgICBuZXdTdGFydCA9IHJvb3RTO1xuICAgICAgICAgICAgbmV3RW5kID0gcm9vdFMgKyBuZXdEdXJhdGlvbjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG5ld0VuZCA+IHJvb3RFKSB7XG4gICAgICAgICAgICBuZXdFbmQgPSByb290RTtcbiAgICAgICAgICAgIG5ld1N0YXJ0ID0gTWF0aC5tYXgocm9vdFMsIHJvb3RFIC0gbmV3RHVyYXRpb24pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7IHN0YXJ0OiBuZXdTdGFydCwgZW5kOiBuZXdFbmQgfTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgZHggPSBlLmRlbHRhWDtcbiAgICAgICAgaWYgKGUuZGVsdGFNb2RlID09PSAxKSBkeCAqPSAxNjtcblxuICAgICAgICBzZXRWaWV3cG9ydCgocHJldikgPT4ge1xuICAgICAgICAgIGNvbnN0IHByZXZEdXJhdGlvbiA9IHByZXYuZW5kIC0gcHJldi5zdGFydDtcbiAgICAgICAgICBjb25zdCBwYW5BbW91bnQgPSAoZHggLyBjb250ZW50V2lkdGgpICogcHJldkR1cmF0aW9uO1xuXG4gICAgICAgICAgbGV0IG5ld1N0YXJ0ID0gcHJldi5zdGFydCArIHBhbkFtb3VudDtcbiAgICAgICAgICBsZXQgbmV3RW5kID0gcHJldi5lbmQgKyBwYW5BbW91bnQ7XG5cbiAgICAgICAgICBpZiAobmV3U3RhcnQgPCByb290Uykge1xuICAgICAgICAgICAgbmV3U3RhcnQgPSByb290UztcbiAgICAgICAgICAgIG5ld0VuZCA9IHJvb3RTICsgcHJldkR1cmF0aW9uO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobmV3RW5kID4gcm9vdEUpIHtcbiAgICAgICAgICAgIG5ld0VuZCA9IHJvb3RFO1xuICAgICAgICAgICAgbmV3U3RhcnQgPSBNYXRoLm1heChyb290Uywgcm9vdEUgLSBwcmV2RHVyYXRpb24pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7IHN0YXJ0OiBuZXdTdGFydCwgZW5kOiBuZXdFbmQgfTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgb25XaGVlbCwgeyBwYXNzaXZlOiBmYWxzZSB9KTtcbiAgICByZXR1cm4gKCkgPT4gZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBvbldoZWVsKTtcbiAgfSwgW3Jvb3Quc3RhcnRUaW1lLCByb290LmR1cmF0aW9uLCBzZXRWaWV3cG9ydF0pO1xuXG4gIC8vIERlcml2ZSB0aGUgc2VsZWN0ZWQgc3BhbiBuYW1lIGFuZCBtZXRhZGF0YSBmb3IgdGhlIHBhbmVsIGhlYWRlclxuICBjb25zdCBzZWxlY3RlZFNwYW5OYW1lID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFzZWxlY3RlZFNwYW4/LmRhdGEpIHJldHVybiAnRGV0YWlscyc7XG4gICAgY29uc3QgZGF0YSA9IHNlbGVjdGVkU3Bhbi5kYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGlmIChzZWxlY3RlZFNwYW4ucmVzb3VyY2UgPT09ICdob29rJykge1xuICAgICAgcmV0dXJuIChkYXRhLnRva2VuIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgPz8gKGRhdGEuaG9va0lkIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RlcE5hbWUgPSBkYXRhLnN0ZXBOYW1lIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCB3b3JrZmxvd05hbWUgPSBkYXRhLndvcmtmbG93TmFtZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChcbiAgICAgIChzdGVwTmFtZSA/IHBhcnNlU3RlcE5hbWUoc3RlcE5hbWUpPy5zaG9ydE5hbWUgOiB1bmRlZmluZWQpID8/XG4gICAgICAod29ya2Zsb3dOYW1lID8gcGFyc2VXb3JrZmxvd05hbWUod29ya2Zsb3dOYW1lKT8uc2hvcnROYW1lIDogdW5kZWZpbmVkKSA/P1xuICAgICAgc3RlcE5hbWUgPz9cbiAgICAgIHdvcmtmbG93TmFtZSA/P1xuICAgICAgKGRhdGEuaG9va0lkIGFzIHN0cmluZykgPz9cbiAgICAgICdEZXRhaWxzJ1xuICAgICk7XG4gIH0sIFtzZWxlY3RlZFNwYW4/LmRhdGEsIHNlbGVjdGVkU3Bhbj8ucmVzb3VyY2VdKTtcblxuICBjb25zdCB7IHByZXZTcGFuSWQsIG5leHRTcGFuSWQgfSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghYWN0aXZlU3BhbklkKSByZXR1cm4geyBwcmV2U3BhbklkOiBudWxsLCBuZXh0U3BhbklkOiBudWxsIH07XG4gICAgY29uc3QgaSA9IHRyYWNlLnNwYW5zLmZpbmRJbmRleCgocykgPT4gcy5zcGFuSWQgPT09IGFjdGl2ZVNwYW5JZCk7XG4gICAgaWYgKGkgPT09IC0xKSByZXR1cm4geyBwcmV2U3BhbklkOiBudWxsLCBuZXh0U3BhbklkOiBudWxsIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHByZXZTcGFuSWQ6IHRyYWNlLnNwYW5zW2kgLSAxXT8uc3BhbklkID8/IG51bGwsXG4gICAgICBuZXh0U3BhbklkOiB0cmFjZS5zcGFuc1tpICsgMV0/LnNwYW5JZCA/PyBudWxsLFxuICAgIH07XG4gIH0sIFthY3RpdmVTcGFuSWQsIHRyYWNlLnNwYW5zXSk7XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0UHJldlNwYW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHByZXZTcGFuSWQpIGhhbmRsZVNlbGVjdFNwYW4ocHJldlNwYW5JZCk7XG4gIH0sIFtwcmV2U3BhbklkLCBoYW5kbGVTZWxlY3RTcGFuXSk7XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0TmV4dFNwYW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKG5leHRTcGFuSWQpIGhhbmRsZVNlbGVjdFNwYW4obmV4dFNwYW5JZCk7XG4gIH0sIFtuZXh0U3BhbklkLCBoYW5kbGVTZWxlY3RTcGFuXSk7XG5cbiAgY29uc3QgcHJldlNwYW5JZFJlZiA9IHVzZVJlZihwcmV2U3BhbklkKTtcbiAgY29uc3QgbmV4dFNwYW5JZFJlZiA9IHVzZVJlZihuZXh0U3BhbklkKTtcbiAgY29uc3QgaGFuZGxlU2VsZWN0U3BhblJlZiA9IHVzZVJlZihoYW5kbGVTZWxlY3RTcGFuKTtcbiAgcHJldlNwYW5JZFJlZi5jdXJyZW50ID0gcHJldlNwYW5JZDtcbiAgbmV4dFNwYW5JZFJlZi5jdXJyZW50ID0gbmV4dFNwYW5JZDtcbiAgaGFuZGxlU2VsZWN0U3BhblJlZi5jdXJyZW50ID0gaGFuZGxlU2VsZWN0U3BhbjtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGRhdGEtcGFuZT1cInBhbmUtcm9vdFwiXG4gICAgICBkYXRhLWhhcy1kZXRhaWw9e2FjdGl2ZVNwYW4gPyAnJyA6IHVuZGVmaW5lZH1cbiAgICAgIGNsYXNzTmFtZT1cImdyaWQgdy1mdWxsIGgtZnVsbCBtYXgtaC1mdWxsIGdyaWQtY29scy1bbWlubWF4KDEwMHB4LDFmcildIGRhdGEtW2hhcy1kZXRhaWxdOmdyaWQtY29scy1bbWlubWF4KDEwMHB4LDFmcilfY2xhbXAoMjgwcHgsMzYwcHgsMTAwJSldXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGlkPVwidHJhY2UtcGFyZW50XCJcbiAgICAgICAgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLXJvd3MtWzFmcl0gaC1mdWxsIG1pbi1oLTAgb3ZlcmZsb3ctaGlkZGVuIHJlbGF0aXZlIGJnLWJhY2tncm91bmQtMTAwXCJcbiAgICAgID5cbiAgICAgICAgPFNwbGl0UGFuZVxuICAgICAgICAgIHNjcm9sbENvbnRhaW5lclJlZj17c2Nyb2xsQ29udGFpbmVyUmVmfVxuICAgICAgICAgIHN0YXJ0SGVhZGVyPXtcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctYmFja2dyb3VuZC0xMDAgYm9yZGVyLWIgYm9yZGVyLWdyYXktYWxwaGEtNDAwIGgtMTAgbWluLWgtMTAgZmxleCBpdGVtcy1jZW50ZXIgcGwtNCBwci0yIGdhcC0xLjVcIj5cbiAgICAgICAgICAgICAgPFNlYXJjaCBjbGFzc05hbWU9XCJ3LTMuNSBoLTMuNSBzaHJpbmstMCB0ZXh0LWdyYXktODAwXCIgLz5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgaWQ9XCJ0cmFjZS12aWV3ZXItc2VhcmNoXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwidHJhY2Utdmlld2VyLXNlYXJjaFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXtzZWFyY2hRdWVyeX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFF1ZXJ5KGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnICYmIHNlYXJjaFF1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUXVlcnkoJycpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggc3BhbnMuLi5cIlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTZWFyY2ggc3BhbnNcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtMSBtaW4tdy0wIGJnLXRyYW5zcGFyZW50IHRleHQtc20gdGV4dC1ncmF5LTEwMDAgcGxhY2Vob2xkZXI6dGV4dC1ncmF5LTgwMCBvdXRsaW5lLW5vbmVcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB7c2VhcmNoUXVlcnkgJiYgKFxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTZWFyY2hRdWVyeSgnJyl9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCItbXItMiBoaWRkZW4gaC1mdWxsIG1heC13LWZ1bGwgc2hyaW5rLTAgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIHJvdW5kZWQtci1tZCBib3JkZXItMCBiZy10cmFuc3BhcmVudCBweC0yLjUgZm9udC1pbmhlcml0IHRleHQtYmFzZSB0ZXh0LWdyYXktOTAwIG5vLXVuZGVybGluZSB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0xNTAgZWFzZS1pbiBob3Zlcjp0ZXh0LWdyYXktMTAwMCBmb2N1cy12aXNpYmxlOi1vdXRsaW5lLW9mZnNldC0xIGZvY3VzLXZpc2libGU6b3V0bGluZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtW3ZhcigtLWRzLWZvY3VzLWNvbG9yKV0gbWluLVs5NjFweF06ZmxleFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGtiZCBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBoLTUgbWluLWgtNSBtaW4tdy01IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkIGJvcmRlciBib3JkZXItZ3JheS1hbHBoYS00MDAgYmctYmFja2dyb3VuZC0xMDAgcHgtMSBmb250LXNhbnMgdGV4dC1bMTNweF0gZm9udC1tZWRpdW0gbGVhZGluZy1bMS43ZW1dIHRleHQtZ3JheS05MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgRXNjXG4gICAgICAgICAgICAgICAgICA8L2tiZD5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICBlbmRIZWFkZXI9e1xuICAgICAgICAgICAgPFRpbWVsaW5lSGVhZGVyIG1hcmtlcnM9e3RpbWVNYXJrZXJzfSBob3ZlckluZm89e2hvdmVySW5mb30gLz5cbiAgICAgICAgICB9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2NrIG92ZXJmbG93LXZpc2libGVcIj5cbiAgICAgICAgICAgIDxFdmVudExpc3RcbiAgICAgICAgICAgICAgc3BhbnM9e3RyYWNlLnNwYW5zfVxuICAgICAgICAgICAgICBhY3RpdmVTcGFuSWQ9e2FjdGl2ZVNwYW5JZH1cbiAgICAgICAgICAgICAgc2VhcmNoUmVzdWx0PXtzZWFyY2hSZXN1bHR9XG4gICAgICAgICAgICAgIG9uU2VsZWN0U3Bhbj17aGFuZGxlU2VsZWN0U3Bhbn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2IHJlZj17bG9hZE1vcmVTZW50aW5lbFJlZn0gY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICB7aXNMb2FkaW5nTW9yZSA/IChcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yIHB5LTMgdGV4dC1zbSB0ZXh0LWdyYXktODAwXCI+XG4gICAgICAgICAgICAgICAgICA8U3Bpbm5lciBzaXplPXsxNH0gLz5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPkxvYWRpbmcgc3BhbnPigKY8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgey8qIGJpb21lLWlnbm9yZSBsaW50L2ExMXkvbm9TdGF0aWNFbGVtZW50SW50ZXJhY3Rpb25zOiB0aW1lbGluZSBob3ZlciBhbmQgd2hlZWwgZ2VzdHVyZXMgYXJlIHBvaW50ZXItb25seSBhbm5vdGF0aW9ucyAqL31cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICByZWY9e3RpbWVsaW5lUmVmfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2sgbWluLWgtMCBvdmVyZmxvdy12aXNpYmxlIHJlbGF0aXZlXCJcbiAgICAgICAgICAgIG9uRG91YmxlQ2xpY2s9e3Jlc2V0Wm9vbX1cbiAgICAgICAgICAgIG9uTW91c2VNb3ZlPXtoYW5kbGVUaW1lbGluZU1vdXNlTW92ZX1cbiAgICAgICAgICAgIG9uTW91c2VMZWF2ZT17aGFuZGxlVGltZWxpbmVNb3VzZUxlYXZlfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxUaW1lbGluZVxuICAgICAgICAgICAgICBzcGFucz17dHJhY2Uuc3BhbnN9XG4gICAgICAgICAgICAgIHZpZXdTdGFydD17dmlld3BvcnQuc3RhcnR9XG4gICAgICAgICAgICAgIHZpZXdFbmQ9e3ZpZXdwb3J0LmVuZH1cbiAgICAgICAgICAgICAgbWFya2Vycz17dGltZU1hcmtlcnN9XG4gICAgICAgICAgICAgIHNlbGVjdGVkSWQ9e2FjdGl2ZVNwYW5JZH1cbiAgICAgICAgICAgICAgc2VhcmNoUmVzdWx0PXtzZWFyY2hSZXN1bHR9XG4gICAgICAgICAgICAgIG9uU2VsZWN0PXtoYW5kbGVTZWxlY3RTcGFufVxuICAgICAgICAgICAgICBob3ZlckZyYWN0aW9uPXtob3ZlckZyYWN0aW9ufVxuICAgICAgICAgICAgICBhbHRIZWxkPXthbHRIZWxkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9TcGxpdFBhbmU+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgcmlnaHQtMyBib3R0b20tMyB6LVs1XSBmbGV4IGl0ZW1zLWNlbnRlciBib3JkZXIgYm9yZGVyLWdyYXktYWxwaGEtNDAwIHJvdW5kZWQtbWQgYmctYmFja2dyb3VuZC0xMDAgc2hhZG93LXNtIG92ZXJmbG93LWhpZGRlbiBkaXZpZGUteCBkaXZpZGUtZ3JheS1hbHBoYS00MDBcIj5cbiAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgdmFyaWFudD1cIm11dGVkXCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBvbkNsaWNrPXt6b29tT3V0fVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlpvb20gb3V0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Wm9vbU91dCBjbGFzc05hbWU9XCJ3LTQgaC00XCIgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJtdXRlZFwiXG4gICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgb25DbGljaz17cmVzZXRab29tfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlJlc2V0IHpvb21cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxSb3RhdGVDY3cgY2xhc3NOYW1lPVwidy0zLjUgaC0zLjVcIiAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgdmFyaWFudD1cIm11dGVkXCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBvbkNsaWNrPXt6b29tSW59XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiWm9vbSBpblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFpvb21JbiBjbGFzc05hbWU9XCJ3LTQgaC00XCIgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBEZXRhaWwgcGFuZWwgKi99XG4gICAgICB7YWN0aXZlU3BhbiA/IChcbiAgICAgICAgPGFzaWRlIGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaC1mdWxsIG1heC1oLWZ1bGwgYmctYmFja2dyb3VuZC0xMDAgYm9yZGVyLWwgYm9yZGVyLWdyYXktYWxwaGEtNDAwIG92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgICB7LyogUGFuZWwgaGVhZGVyICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yIHNocmluay0wIHB4LTQgcHQtMyBwYi0zXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWxhYmVsLTE0IGZvbnQtbWVkaXVtIHRleHQtZ3JheS0xMDAwIHRydW5jYXRlIGJsb2NrXCI+XG4gICAgICAgICAgICAgIHtzZWxlY3RlZFNwYW5OYW1lfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMC41IHNocmluay0wXCI+XG4gICAgICAgICAgICAgIDxUb29sdGlwPlxuICAgICAgICAgICAgICAgIDxUb29sdGlwVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk5hdmlnYXRlIHVwXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1rZXlzaG9ydGN1dHM9XCJLXCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2VsZWN0UHJldlNwYW59XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshcHJldlNwYW5JZH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPENoZXZyb25VcCBjbGFzc05hbWU9XCJ3LTQgaC00XCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L1Rvb2x0aXBUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIHtwcmV2U3BhbklkID8gKFxuICAgICAgICAgICAgICAgICAgPFRvb2x0aXBDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0ZSB1cFxuICAgICAgICAgICAgICAgICAgICA8S2JkPks8L0tiZD5cbiAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgPFRvb2x0aXA+XG4gICAgICAgICAgICAgICAgPFRvb2x0aXBUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiTmF2aWdhdGUgZG93blwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEta2V5c2hvcnRjdXRzPVwiSlwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVNlbGVjdE5leHRTcGFufVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IW5leHRTcGFuSWR9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uRG93biBjbGFzc05hbWU9XCJ3LTQgaC00XCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L1Rvb2x0aXBUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIHtuZXh0U3BhbklkID8gKFxuICAgICAgICAgICAgICAgICAgPFRvb2x0aXBDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0ZSBkb3duXG4gICAgICAgICAgICAgICAgICAgIDxLYmQ+SjwvS2JkPlxuICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwQ29udGVudD5cbiAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICA8ZGl2IGFyaWEtaGlkZGVuIGNsYXNzTmFtZT1cInctcHggaC00IGJnLWdyYXktYWxwaGEtNDAwIG14LTFcIiAvPlxuICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSBzcGFuIGRldGFpbHNcIlxuICAgICAgICAgICAgICAgIGFyaWEta2V5c2hvcnRjdXRzPVwiRXNjYXBlXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtjbGVhckFjdGl2ZVNwYW59XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8WCBjbGFzc05hbWU9XCJ3LTQgaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgey8qIFBhbmVsIGJvZHkgKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgb3ZlcmZsb3cteS1hdXRvXCI+XG4gICAgICAgICAgICA8RXJyb3JCb3VuZGFyeT5cbiAgICAgICAgICAgICAgPEVudGl0eURldGFpbFBhbmVsXG4gICAgICAgICAgICAgICAgcnVuPXtzaWRlYmFyLnJ1bn1cbiAgICAgICAgICAgICAgICBvblN0cmVhbUNsaWNrPXtzaWRlYmFyLm9uU3RyZWFtQ2xpY2t9XG4gICAgICAgICAgICAgICAgb25SdW5DbGljaz17c2lkZWJhci5vblJ1bkNsaWNrfVxuICAgICAgICAgICAgICAgIHNwYW5EZXRhaWxEYXRhPXtzaWRlYmFyLnNwYW5EZXRhaWxEYXRhfVxuICAgICAgICAgICAgICAgIHNwYW5EZXRhaWxFcnJvcj17c2lkZWJhci5zcGFuRGV0YWlsRXJyb3J9XG4gICAgICAgICAgICAgICAgc3BhbkRldGFpbExvYWRpbmc9e3NpZGViYXIuc3BhbkRldGFpbExvYWRpbmd9XG4gICAgICAgICAgICAgICAgb25TcGFuU2VsZWN0PXtzaWRlYmFyLm9uU3BhblNlbGVjdH1cbiAgICAgICAgICAgICAgICBvbldha2VVcFNsZWVwPXtzaWRlYmFyLm9uV2FrZVVwU2xlZXB9XG4gICAgICAgICAgICAgICAgb25Mb2FkRXZlbnREYXRhPXtzaWRlYmFyLm9uTG9hZEV2ZW50RGF0YX1cbiAgICAgICAgICAgICAgICBvblJlc29sdmVIb29rPXtzaWRlYmFyLm9uUmVzb2x2ZUhvb2t9XG4gICAgICAgICAgICAgICAgZW5jcnlwdGlvbktleT17c2lkZWJhci5lbmNyeXB0aW9uS2V5fVxuICAgICAgICAgICAgICAgIG9uRGVjcnlwdD17c2lkZWJhci5vbkRlY3J5cHR9XG4gICAgICAgICAgICAgICAgaXNEZWNyeXB0aW5nPXtzaWRlYmFyLmlzRGVjcnlwdGluZ31cbiAgICAgICAgICAgICAgICBzZWxlY3RlZFNwYW49e3NlbGVjdGVkU3Bhbn1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvRXJyb3JCb3VuZGFyeT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hc2lkZT5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvZGl2PlxuICApO1xufVxuIl19
|
|
398
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2Utdmlld2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbmV3LXRyYWNlLXZpZXdlci90cmFjZS12aWV3ZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDTixDQUFDLEVBQ0QsTUFBTSxFQUNOLE9BQU8sR0FDUixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBRUwsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsT0FBTyxFQUNQLE1BQU0sRUFDTixRQUFRLEdBQ1QsTUFBTSxPQUFPLENBQUM7QUFDZixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUNMLGlCQUFpQixHQUVsQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUNMLE9BQU8sRUFDUCxjQUFjLEVBQ2QsZUFBZSxF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SUFDRixFQUVOLGNBQUssU0FBUyxFQUFDLHdCQUF3QixZQUNyQyxLQUFDLGFBQWEsY0FDWixLQUFDLGlCQUFpQixJQUNoQixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFDaEIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQ3BDLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUM5QixjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFDdEMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlLEVBQ3hDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsRUFDNUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQ2xDLGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUNwQyxlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWUsRUFDeEMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQ3BDLGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUNwQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFDNUIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQ2xDLFlBQVksRUFBRSxZQUFZLEdBQzFCLEdBQ1ksR0FDWixJQUNBLENBQ1QsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUNKLENBQ1AsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHBhcnNlU3RlcE5hbWUsIHBhcnNlV29ya2Zsb3dOYW1lIH0gZnJvbSAnQHdvcmtmbG93L3V0aWxzL3BhcnNlLW5hbWUnO1xuaW1wb3J0IHtcbiAgQ2hldnJvbkRvd24sXG4gIENoZXZyb25VcCxcbiAgUm90YXRlQ2N3LFxuICBTZWFyY2gsXG4gIFgsXG4gIFpvb21JbixcbiAgWm9vbU91dCxcbn0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7XG4gIHR5cGUgUmVhY3ROb2RlLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlRGVmZXJyZWRWYWx1ZSxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VMb2FkTW9yZU9uU2Nyb2xsIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlLWxvYWQtbW9yZS1vbi1zY3JvbGwnO1xuaW1wb3J0IHsgdXNlUmVkdWNlZE1vdGlvbiB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZS1yZWR1Y2VkLW1vdGlvbic7XG5pbXBvcnQgeyBmaWx0ZXJTcGFuUmF3RXZlbnRzIH0gZnJvbSAnLi4vLi4vbGliL3RyYWNlLWJ1aWxkZXInO1xuaW1wb3J0IHsgRXJyb3JCb3VuZGFyeSB9IGZyb20gJy4uL2Vycm9yLWJvdW5kYXJ5JztcbmltcG9ydCB7XG4gIEVudGl0eURldGFpbFBhbmVsLFxuICB0eXBlIFNlbGVjdGVkU3BhbkluZm8sXG59IGZyb20gJy4uL3NpZGViYXIvZW50aXR5LWRldGFpbC1wYW5lbCc7XG5pbXBvcnQgeyB1c2VTaWRlYmFyRGF0YSB9IGZyb20gJy4uL3NpZGViYXIvc2lkZWJhci1kYXRhLWNvbnRleHQnO1xuaW1wb3J0IHsgZm9ybWF0RHVyYXRpb24sIGdldEhpZ2hSZXNJbk1zIH0gZnJvbSAnLi4vdHJhY2Utdmlld2VyL3V0aWwvdGltaW5nJztcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICcuLi91aS9pY29uLWJ1dHRvbic7XG5pbXBvcnQgeyBLYmQgfSBmcm9tICcuLi91aS9rYmQnO1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4uL3VpL3NwaW5uZXInO1xuaW1wb3J0IHtcbiAgVG9vbHRpcCxcbiAgVG9vbHRpcENvbnRlbnQsXG4gIFRvb2x0aXBQcm92aWRlcixcbiAgVG9vbHRpcFRyaWdnZXIsXG59IGZyb20gJy4uL3VpL3Rvb2x0aXAnO1xuaW1wb3J0IEV2ZW50TGlzdCBmcm9tICcuL2NvbXBvbmVudHMvZXZlbnQtbGlzdCc7XG5pbXBvcnQgeyBTcGxpdFBhbmUgfSBmcm9tICcuL2NvbXBvbmVudHMvc3BsaXQtcGFuZSc7XG5pbXBvcnQge1xuICBUSU1FTElORV9QQURESU5HX1BYLFxuICBUaW1lbGluZSxcbiAgVGltZWxpbmVIZWFkZXIsXG59IGZyb20gJy4vY29tcG9uZW50cy90aW1lbGluZSc7XG5pbXBvcnQgeyBBY3RpdmVTcGFuUHJvdmlkZXIsIHVzZUFjdGl2ZVNwYW4gfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgc2VhcmNoU3BhbnMgfSBmcm9tICcuL3NlYXJjaCc7XG5pbXBvcnQgdHlwZSB7IFRyYWNlV2l0aE1ldGEgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGNvbXB1dGVSb290Qm91bmRzLCBjb21wdXRlVGltZU1hcmtlcnMgfSBmcm9tICcuL3V0aWxzJztcblxuaW50ZXJmYWNlIE5ld1RyYWNlVmlld2VyUHJvcHMge1xuICB0cmFjZTogVHJhY2VXaXRoTWV0YTtcbiAgb25Mb2FkTW9yZT86ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICBoYXNNb3JlPzogYm9vbGVhbjtcbiAgaXNMb2FkaW5nTW9yZT86IGJvb2xlYW47XG59XG5cbmNvbnN0IE1JTl9WSUVXUE9SVF9NUyA9IDAuMDAxO1xuXG5pbnRlcmZhY2UgVmlld3BvcnQge1xuICBzdGFydDogbnVtYmVyO1xuICBlbmQ6IG51bWJlcjtcbn1cblxuZnVuY3Rpb24gdXNlQW5pbWF0ZWRWaWV3cG9ydChpbml0aWFsOiBWaWV3cG9ydCkge1xuICBjb25zdCBbdmlld3BvcnQsIHNldFZpZXdwb3J0U3RhdGVdID0gdXNlU3RhdGU8Vmlld3BvcnQ+KGluaXRpYWwpO1xuICBjb25zdCBhbmltUmVmID0gdXNlUmVmPHtcbiAgICByYWY6IG51bWJlcjtcbiAgICBmcm9tOiBWaWV3cG9ydDtcbiAgICB0bzogVmlld3BvcnQ7XG4gICAgc3RhcnQ6IG51bWJlcjtcbiAgfSB8IG51bGw+KG51bGwpO1xuICBjb25zdCBjdXJyZW50UmVmID0gdXNlUmVmKGluaXRpYWwpO1xuICBjdXJyZW50UmVmLmN1cnJlbnQgPSB2aWV3cG9ydDtcbiAgY29uc3QgcmVkdWNlZE1vdGlvbiA9IHVzZVJlZHVjZWRNb3Rpb24oKTtcblxuICBjb25zdCBjYW5jZWwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFuaW1SZWYuY3VycmVudCkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoYW5pbVJlZi5jdXJyZW50LnJhZik7XG4gICAgICBhbmltUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IGFuaW1hdGVUbyA9IHVzZUNhbGxiYWNrKFxuICAgICh0YXJnZXQ6IFZpZXdwb3J0KSA9PiB7XG4gICAgICBjYW5jZWwoKTtcblxuICAgICAgaWYgKHJlZHVjZWRNb3Rpb24pIHtcbiAgICAgICAgY3VycmVudFJlZi5jdXJyZW50ID0gdGFyZ2V0O1xuICAgICAgICBzZXRWaWV3cG9ydFN0YXRlKHRhcmdldCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZnJvbSA9IGN1cnJlbnRSZWYuY3VycmVudDtcbiAgICAgIGNvbnN0IGFuaW0gPSB7IHJhZjogMCwgZnJvbSwgdG86IHRhcmdldCwgc3RhcnQ6IHBlcmZvcm1hbmNlLm5vdygpIH07XG5cbiAgICAgIGNvbnN0IHRpY2sgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHQgPSBNYXRoLm1pbigocGVyZm9ybWFuY2Uubm93KCkgLSBhbmltLnN0YXJ0KSAvIDE1MCwgMSk7XG4gICAgICAgIGNvbnN0IGUgPSAxIC0gKDEgLSB0KSAqICgxIC0gdCk7XG4gICAgICAgIHNldFZpZXdwb3J0U3RhdGUoe1xuICAgICAgICAgIHN0YXJ0OiBhbmltLmZyb20uc3RhcnQgKyAoYW5pbS50by5zdGFydCAtIGFuaW0uZnJvbS5zdGFydCkgKiBlLFxuICAgICAgICAgIGVuZDogYW5pbS5mcm9tLmVuZCArIChhbmltLnRvLmVuZCAtIGFuaW0uZnJvbS5lbmQpICogZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0IDwgMSkgYW5pbS5yYWYgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljayk7XG4gICAgICAgIGVsc2UgYW5pbVJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIGFuaW1SZWYuY3VycmVudCA9IGFuaW07XG4gICAgICBhbmltLnJhZiA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aWNrKTtcbiAgICB9LFxuICAgIFtjYW5jZWwsIHJlZHVjZWRNb3Rpb25dXG4gICk7XG5cbiAgY29uc3Qgc2V0Vmlld3BvcnQgPSB1c2VDYWxsYmFjayhcbiAgICAodXBkYXRlOiBWaWV3cG9ydCB8ICgocHJldjogVmlld3BvcnQpID0+IFZpZXdwb3J0KSkgPT4ge1xuICAgICAgY2FuY2VsKCk7XG4gICAgICBpZiAodHlwZW9mIHVwZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBzZXRWaWV3cG9ydFN0YXRlKChwcmV2KSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IHVwZGF0ZShwcmV2KTtcbiAgICAgICAgICBjdXJyZW50UmVmLmN1cnJlbnQgPSBuZXh0O1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnRSZWYuY3VycmVudCA9IHVwZGF0ZTtcbiAgICAgICAgc2V0Vmlld3BvcnRTdGF0ZSh1cGRhdGUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2NhbmNlbF1cbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gY2FuY2VsLCBbY2FuY2VsXSk7XG5cbiAgcmV0dXJuIHsgdmlld3BvcnQsIHNldFZpZXdwb3J0LCBhbmltYXRlVG8gfTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBIb29rOiBicmlkZ2UgQWN0aXZlU3BhbkNvbnRleHQgKyBTaWRlYmFyRGF0YUNvbnRleHQg4oaSIFNlbGVjdGVkU3BhbkluZm9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiB1c2VTZWxlY3RlZFNwYW5JbmZvKCk6IFNlbGVjdGVkU3BhbkluZm8gfCBudWxsIHtcbiAgY29uc3QgeyBhY3RpdmVTcGFuIH0gPSB1c2VBY3RpdmVTcGFuKCk7XG4gIGNvbnN0IHNpZGViYXIgPSB1c2VTaWRlYmFyRGF0YSgpO1xuXG4gIHJldHVybiB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWFjdGl2ZVNwYW4pIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBhY3RpdmVTcGFuLmF0dHJpYnV0ZXM/LnJlc291cmNlIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCByYXdFdmVudHMgPSBmaWx0ZXJTcGFuUmF3RXZlbnRzKFxuICAgICAgc2lkZWJhci5ldmVudHMsXG4gICAgICByZXNvdXJjZSxcbiAgICAgIGFjdGl2ZVNwYW4uc3BhbklkXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiBhY3RpdmVTcGFuLmF0dHJpYnV0ZXM/LmRhdGEsXG4gICAgICByZXNvdXJjZSxcbiAgICAgIHNwYW5JZDogYWN0aXZlU3Bhbi5zcGFuSWQsXG4gICAgICByYXdFdmVudHMsXG4gICAgfTtcbiAgfSwgW2FjdGl2ZVNwYW4sIHNpZGViYXJdKTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSb290IGNvbXBvbmVudFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBmdW5jdGlvbiBOZXdUcmFjZVZpZXdlcih7XG4gIHRyYWNlLFxuICBvbkxvYWRNb3JlLFxuICBoYXNNb3JlLFxuICBpc0xvYWRpbmdNb3JlLFxufTogTmV3VHJhY2VWaWV3ZXJQcm9wcyk6IFJlYWN0Tm9kZSB7XG4gIHJldHVybiAoXG4gICAgPFRvb2x0aXBQcm92aWRlciBkZWxheUR1cmF0aW9uPXszMDB9PlxuICAgICAgPEFjdGl2ZVNwYW5Qcm92aWRlciBzcGFucz17dHJhY2Uuc3BhbnN9PlxuICAgICAgICA8TmV3VHJhY2VWaWV3ZXJDb250ZW50XG4gICAgICAgICAgdHJhY2U9e3RyYWNlfVxuICAgICAgICAgIG9uTG9hZE1vcmU9e29uTG9hZE1vcmV9XG4gICAgICAgICAgaGFzTW9yZT17aGFzTW9yZX1cbiAgICAgICAgICBpc0xvYWRpbmdNb3JlPXtpc0xvYWRpbmdNb3JlfVxuICAgICAgICAvPlxuICAgICAgPC9BY3RpdmVTcGFuUHJvdmlkZXI+XG4gICAgPC9Ub29sdGlwUHJvdmlkZXI+XG4gICk7XG59XG5cbmZ1bmN0aW9uIE5ld1RyYWNlVmlld2VyQ29udGVudCh7XG4gIHRyYWNlLFxuICBvbkxvYWRNb3JlLFxuICBoYXNNb3JlLFxuICBpc0xvYWRpbmdNb3JlLFxufTogTmV3VHJhY2VWaWV3ZXJQcm9wcyk6IFJlYWN0Tm9kZSB7XG4gIGNvbnN0IHsgYWN0aXZlU3BhbiwgYWN0aXZlU3BhbklkLCBzZXRBY3RpdmVTcGFuLCBjbGVhckFjdGl2ZVNwYW4gfSA9XG4gICAgdXNlQWN0aXZlU3BhbigpO1xuXG4gIGNvbnN0IHNpZGViYXIgPSB1c2VTaWRlYmFyRGF0YSgpO1xuICBjb25zdCBzZWxlY3RlZFNwYW4gPSB1c2VTZWxlY3RlZFNwYW5JbmZvKCk7XG5cbiAgY29uc3QgW3NlYXJjaFF1ZXJ5LCBzZXRTZWFyY2hRdWVyeV0gPSB1c2VTdGF0ZSgnJyk7XG4gIGNvbnN0IGRlZmVycmVkU2VhcmNoUXVlcnkgPSB1c2VEZWZlcnJlZFZhbHVlKHNlYXJjaFF1ZXJ5KTtcblxuICBjb25zdCBzZWFyY2hSZXN1bHQgPSB1c2VNZW1vKFxuICAgICgpID0+IHNlYXJjaFNwYW5zKHRyYWNlLnNwYW5zLCBkZWZlcnJlZFNlYXJjaFF1ZXJ5KSxcbiAgICBbdHJhY2Uuc3BhbnMsIGRlZmVycmVkU2VhcmNoUXVlcnldXG4gICk7XG5cbiAgY29uc3Qgcm9vdCA9IHVzZU1lbW8oKCkgPT4gY29tcHV0ZVJvb3RCb3VuZHModHJhY2Uuc3BhbnMpLCBbdHJhY2Uuc3BhbnNdKTtcblxuICBjb25zdCBzY3JvbGxDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBsb2FkTW9yZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB2b2lkIG9uTG9hZE1vcmU/LigpO1xuICB9LCBbb25Mb2FkTW9yZV0pO1xuICBjb25zdCBsb2FkTW9yZVNlbnRpbmVsUmVmID0gdXNlTG9hZE1vcmVPblNjcm9sbChsb2FkTW9yZSwge1xuICAgIGhhc01vcmU6IEJvb2xlYW4ob25Mb2FkTW9yZSAmJiBoYXNNb3JlKSxcbiAgICBpc0xvYWRpbmdNb3JlOiBCb29sZWFuKGlzTG9hZGluZ01vcmUpLFxuICAgIHJvb3RSZWY6IHNjcm9sbENvbnRhaW5lclJlZixcbiAgfSk7XG5cbiAgY29uc3QgeyB2aWV3cG9ydCwgc2V0Vmlld3BvcnQsIGFuaW1hdGVUbyB9ID0gdXNlQW5pbWF0ZWRWaWV3cG9ydCh7XG4gICAgc3RhcnQ6IHJvb3Quc3RhcnRUaW1lLFxuICAgIGVuZDogcm9vdC5zdGFydFRpbWUgKyByb290LmR1cmF0aW9uLFxuICB9KTtcblxuICBjb25zdCBwcmV2Um9vdFJlZiA9IHVzZVJlZjxWaWV3cG9ydD4oe1xuICAgIHN0YXJ0OiByb290LnN0YXJ0VGltZSxcbiAgICBlbmQ6IHJvb3Quc3RhcnRUaW1lICsgcm9vdC5kdXJhdGlvbixcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBwcmV2Um9vdCA9IHByZXZSb290UmVmLmN1cnJlbnQ7XG4gICAgY29uc3QgbmV3U3RhcnQgPSByb290LnN0YXJ0VGltZTtcbiAgICBjb25zdCBuZXdFbmQgPSByb290LnN0YXJ0VGltZSArIHJvb3QuZHVyYXRpb247XG5cbiAgICBzZXRWaWV3cG9ydCgocHJldikgPT4ge1xuICAgICAgY29uc3Qgd2FzQXRGdWxsRXh0ZW50ID1cbiAgICAgICAgTWF0aC5hYnMocHJldi5zdGFydCAtIHByZXZSb290LnN0YXJ0KSA8IDAuMDEgJiZcbiAgICAgICAgTWF0aC5hYnMocHJldi5lbmQgLSBwcmV2Um9vdC5lbmQpIDwgMC4wMTtcblxuICAgICAgaWYgKHdhc0F0RnVsbEV4dGVudCkge1xuICAgICAgICByZXR1cm4geyBzdGFydDogbmV3U3RhcnQsIGVuZDogbmV3RW5kIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9KTtcblxuICAgIHByZXZSb290UmVmLmN1cnJlbnQgPSB7IHN0YXJ0OiBuZXdTdGFydCwgZW5kOiBuZXdFbmQgfTtcbiAgfSwgW3Jvb3Quc3RhcnRUaW1lLCByb290LmR1cmF0aW9uLCBzZXRWaWV3cG9ydF0pO1xuXG4gIGNvbnN0IHZpZXdEdXJhdGlvbiA9IHZpZXdwb3J0LmVuZCAtIHZpZXdwb3J0LnN0YXJ0O1xuXG4gIGNvbnN0IHRpbWVNYXJrZXJzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBjb21wdXRlVGltZU1hcmtlcnModmlld0R1cmF0aW9uLCB2aWV3cG9ydC5zdGFydCAtIHJvb3Quc3RhcnRUaW1lKSxcbiAgICBbdmlld0R1cmF0aW9uLCB2aWV3cG9ydC5zdGFydCwgcm9vdC5zdGFydFRpbWVdXG4gICk7XG5cbiAgY29uc3QgcmVzZXRab29tID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGFuaW1hdGVUbyh7IHN0YXJ0OiByb290LnN0YXJ0VGltZSwgZW5kOiByb290LnN0YXJ0VGltZSArIHJvb3QuZHVyYXRpb24gfSk7XG4gIH0sIFthbmltYXRlVG8sIHJvb3Quc3RhcnRUaW1lLCByb290LmR1cmF0aW9uXSk7XG5cbiAgY29uc3QgWk9PTV9GQUNUT1IgPSAwLjU7XG5cbiAgY29uc3Qgem9vbUJ5ID0gdXNlQ2FsbGJhY2soXG4gICAgKGZhY3RvcjogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCByb290UyA9IHJvb3Quc3RhcnRUaW1lO1xuICAgICAgY29uc3Qgcm9vdEUgPSByb290LnN0YXJ0VGltZSArIHJvb3QuZHVyYXRpb247XG4gICAgICBjb25zdCByb290RCA9IHJvb3QuZHVyYXRpb247XG5cbiAgICAgIHNldFZpZXdwb3J0KChwcmV2KSA9PiB7XG4gICAgICAgIGNvbnN0IHByZXZEdXJhdGlvbiA9IHByZXYuZW5kIC0gcHJldi5zdGFydDtcbiAgICAgICAgY29uc3QgY2VudGVyID0gKHByZXYuc3RhcnQgKyBwcmV2LmVuZCkgLyAyO1xuICAgICAgICBjb25zdCBuZXdEdXJhdGlvbiA9IE1hdGgubWF4KFxuICAgICAgICAgIE1JTl9WSUVXUE9SVF9NUyxcbiAgICAgICAgICBNYXRoLm1pbihyb290RCwgcHJldkR1cmF0aW9uICogZmFjdG9yKVxuICAgICAgICApO1xuICAgICAgICBsZXQgbmV3U3RhcnQgPSBjZW50ZXIgLSBuZXdEdXJhdGlvbiAvIDI7XG4gICAgICAgIGxldCBuZXdFbmQgPSBjZW50ZXIgKyBuZXdEdXJhdGlvbiAvIDI7XG5cbiAgICAgICAgaWYgKG5ld1N0YXJ0IDwgcm9vdFMpIHtcbiAgICAgICAgICBuZXdTdGFydCA9IHJvb3RTO1xuICAgICAgICAgIG5ld0VuZCA9IHJvb3RTICsgbmV3RHVyYXRpb247XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5ld0VuZCA+IHJvb3RFKSB7XG4gICAgICAgICAgbmV3RW5kID0gcm9vdEU7XG4gICAgICAgICAgbmV3U3RhcnQgPSBNYXRoLm1heChyb290Uywgcm9vdEUgLSBuZXdEdXJhdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyBzdGFydDogbmV3U3RhcnQsIGVuZDogbmV3RW5kIH07XG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtzZXRWaWV3cG9ydCwgcm9vdC5zdGFydFRpbWUsIHJvb3QuZHVyYXRpb25dXG4gICk7XG5cbiAgY29uc3Qgem9vbUluID0gdXNlQ2FsbGJhY2soKCkgPT4gem9vbUJ5KFpPT01fRkFDVE9SKSwgW3pvb21CeV0pO1xuICBjb25zdCB6b29tT3V0ID0gdXNlQ2FsbGJhY2soKCkgPT4gem9vbUJ5KDEgLyBaT09NX0ZBQ1RPUiksIFt6b29tQnldKTtcblxuICBjb25zdCBoYW5kbGVTZWxlY3RTcGFuID0gdXNlQ2FsbGJhY2soXG4gICAgKHNwYW5JZDogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoc3BhbklkID09PSBhY3RpdmVTcGFuSWQpIHtcbiAgICAgICAgY2xlYXJBY3RpdmVTcGFuKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHNldEFjdGl2ZVNwYW4oc3BhbklkKTtcblxuICAgICAgY29uc3Qgc3BhbiA9IHRyYWNlLnNwYW5zLmZpbmQoKHMpID0+IHMuc3BhbklkID09PSBzcGFuSWQpO1xuICAgICAgaWYgKCFzcGFuKSByZXR1cm47XG5cbiAgICAgIGNvbnN0IHNwYW5TdGFydCA9IGdldEhpZ2hSZXNJbk1zKHNwYW4uc3RhcnRUaW1lKTtcbiAgICAgIGNvbnN0IHNwYW5FbmQgPSBnZXRIaWdoUmVzSW5NcyhzcGFuLmVuZFRpbWUpO1xuICAgICAgY29uc3Qgc3BhbkR1cmF0aW9uID0gc3BhbkVuZCAtIHNwYW5TdGFydDtcblxuICAgICAgY29uc3Qgcm9vdFMgPSByb290LnN0YXJ0VGltZTtcbiAgICAgIGNvbnN0IHJvb3RFID0gcm9vdC5zdGFydFRpbWUgKyByb290LmR1cmF0aW9uO1xuICAgICAgY29uc3Qgcm9vdEQgPSByb290LmR1cmF0aW9uO1xuXG4gICAgICBpZiAoc3BhbkR1cmF0aW9uID4gcm9vdEQgKiAwLjgpIHtcbiAgICAgICAgYW5pbWF0ZVRvKHsgc3RhcnQ6IHJvb3RTLCBlbmQ6IHJvb3RFIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhZGRpbmcgPSBNYXRoLm1heChzcGFuRHVyYXRpb24gKiAwLjIsIE1JTl9WSUVXUE9SVF9NUyAvIDIpO1xuICAgICAgbGV0IG5ld1N0YXJ0ID0gc3BhblN0YXJ0IC0gcGFkZGluZztcbiAgICAgIGxldCBuZXdFbmQgPSBzcGFuRW5kICsgcGFkZGluZztcblxuICAgICAgaWYgKG5ld0VuZCAtIG5ld1N0YXJ0IDwgTUlOX1ZJRVdQT1JUX01TKSB7XG4gICAgICAgIGNvbnN0IGNlbnRlciA9IChzcGFuU3RhcnQgKyBzcGFuRW5kKSAvIDI7XG4gICAgICAgIG5ld1N0YXJ0ID0gY2VudGVyIC0gTUlOX1ZJRVdQT1JUX01TIC8gMjtcbiAgICAgICAgbmV3RW5kID0gY2VudGVyICsgTUlOX1ZJRVdQT1JUX01TIC8gMjtcbiAgICAgIH1cblxuICAgICAgaWYgKG5ld1N0YXJ0IDwgcm9vdFMpIHtcbiAgICAgICAgY29uc3QgZHVyYXRpb24gPSBuZXdFbmQgLSBuZXdTdGFydDtcbiAgICAgICAgbmV3U3RhcnQgPSByb290UztcbiAgICAgICAgbmV3RW5kID0gTWF0aC5taW4ocm9vdEUsIHJvb3RTICsgZHVyYXRpb24pO1xuICAgICAgfVxuICAgICAgaWYgKG5ld0VuZCA+IHJvb3RFKSB7XG4gICAgICAgIGNvbnN0IGR1cmF0aW9uID0gbmV3RW5kIC0gbmV3U3RhcnQ7XG4gICAgICAgIG5ld0VuZCA9IHJvb3RFO1xuICAgICAgICBuZXdTdGFydCA9IE1hdGgubWF4KHJvb3RTLCByb290RSAtIGR1cmF0aW9uKTtcbiAgICAgIH1cblxuICAgICAgYW5pbWF0ZVRvKHsgc3RhcnQ6IG5ld1N0YXJ0LCBlbmQ6IG5ld0VuZCB9KTtcbiAgICB9LFxuICAgIFtcbiAgICAgIGFuaW1hdGVUbyxcbiAgICAgIHNldEFjdGl2ZVNwYW4sXG4gICAgICBjbGVhckFjdGl2ZVNwYW4sXG4gICAgICBhY3RpdmVTcGFuSWQsXG4gICAgICB0cmFjZS5zcGFucyxcbiAgICAgIHJvb3Quc3RhcnRUaW1lLFxuICAgICAgcm9vdC5kdXJhdGlvbixcbiAgICBdXG4gICk7XG5cbiAgY29uc3QgW2FsdEhlbGQsIHNldEFsdEhlbGRdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlU2lkZWJhck5hdktleSA9IChlOiBLZXlib2FyZEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgICBpZiAoXG4gICAgICAgIHRhcmdldCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgfHxcbiAgICAgICAgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTFRleHRBcmVhRWxlbWVudCB8fFxuICAgICAgICB0YXJnZXQ/LmlzQ29udGVudEVkaXRhYmxlXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgdGFyZ2V0SWQgPVxuICAgICAgICBlLmtleSA9PT0gJ2snID8gcHJldlNwYW5JZFJlZi5jdXJyZW50IDogbmV4dFNwYW5JZFJlZi5jdXJyZW50O1xuICAgICAgaWYgKHRhcmdldElkKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaGFuZGxlU2VsZWN0U3BhblJlZi5jdXJyZW50KHRhcmdldElkKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25LZXlEb3duID0gKGU6IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgY2xlYXJBY3RpdmVTcGFuKCk7XG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09PSAnQWx0Jykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHNldEFsdEhlbGQodHJ1ZSk7XG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09PSAnaicgfHwgZS5rZXkgPT09ICdrJykge1xuICAgICAgICBoYW5kbGVTaWRlYmFyTmF2S2V5KGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgY29uc3Qgb25LZXlVcCA9IChlOiBLZXlib2FyZEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICBpZiAoZS5rZXkgPT09ICdBbHQnKSBzZXRBbHRIZWxkKGZhbHNlKTtcbiAgICB9O1xuICAgIGNvbnN0IG9uQmx1ciA9ICgpOiB2b2lkID0+IHNldEFsdEhlbGQoZmFsc2UpO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleURvd24pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIG9uS2V5VXApO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgb25CbHVyKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleURvd24pO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgb25LZXlVcCk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmx1cicsIG9uQmx1cik7XG4gICAgfTtcbiAgfSwgW2NsZWFyQWN0aXZlU3Bhbl0pO1xuXG4gIGNvbnN0IHRpbWVsaW5lUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2hvdmVyRnJhY3Rpb24sIHNldEhvdmVyRnJhY3Rpb25dID0gdXNlU3RhdGU8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgaG92ZXJJbmZvID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGhvdmVyRnJhY3Rpb24gPT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgYWJzVGltZSA9IHZpZXdwb3J0LnN0YXJ0ICsgaG92ZXJGcmFjdGlvbiAqIHZpZXdEdXJhdGlvbjtcbiAgICBjb25zdCBvZmZzZXQgPSBhYnNUaW1lIC0gcm9vdC5zdGFydFRpbWU7XG4gICAgcmV0dXJuIHsgZnJhY3Rpb246IGhvdmVyRnJhY3Rpb24sIGxhYmVsOiBmb3JtYXREdXJhdGlvbihvZmZzZXQsIHRydWUpIH07XG4gIH0sIFtob3ZlckZyYWN0aW9uLCB2aWV3cG9ydC5zdGFydCwgdmlld0R1cmF0aW9uLCByb290LnN0YXJ0VGltZV0pO1xuXG4gIGNvbnN0IGhhbmRsZVRpbWVsaW5lTW91c2VNb3ZlID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBjb25zdCBlbCA9IHRpbWVsaW5lUmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoIWVsKSByZXR1cm47XG4gICAgICBjb25zdCByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjb250ZW50V2lkdGggPSByZWN0LndpZHRoIC0gVElNRUxJTkVfUEFERElOR19QWCAqIDI7XG4gICAgICBpZiAoY29udGVudFdpZHRoIDw9IDApIHJldHVybjtcbiAgICAgIGNvbnN0IGZyYWN0aW9uID0gTWF0aC5tYXgoXG4gICAgICAgIDAsXG4gICAgICAgIE1hdGgubWluKFxuICAgICAgICAgIDEsXG4gICAgICAgICAgKGUuY2xpZW50WCAtIHJlY3QubGVmdCAtIFRJTUVMSU5FX1BBRERJTkdfUFgpIC8gY29udGVudFdpZHRoXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICBzZXRIb3ZlckZyYWN0aW9uKGZyYWN0aW9uKTtcbiAgICB9LFxuICAgIFtdXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlVGltZWxpbmVNb3VzZUxlYXZlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldEhvdmVyRnJhY3Rpb24obnVsbCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gdGltZWxpbmVSZWYuY3VycmVudDtcbiAgICBpZiAoIWVsKSByZXR1cm47XG5cbiAgICBjb25zdCByb290UyA9IHJvb3Quc3RhcnRUaW1lO1xuICAgIGNvbnN0IHJvb3RFID0gcm9vdC5zdGFydFRpbWUgKyByb290LmR1cmF0aW9uO1xuICAgIGNvbnN0IHJvb3REID0gcm9vdC5kdXJhdGlvbjtcbiAgICBpZiAocm9vdEQgPD0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3Qgb25XaGVlbCA9IChlOiBXaGVlbEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICBjb25zdCBpc1pvb21HZXN0dXJlID0gZS5jdHJsS2V5IHx8IGUubWV0YUtleTtcbiAgICAgIGNvbnN0IGhhc0RlbHRhWCA9IE1hdGguYWJzKGUuZGVsdGFYKSA+IE1hdGguYWJzKGUuZGVsdGFZKTtcblxuICAgICAgaWYgKCFpc1pvb21HZXN0dXJlICYmICFoYXNEZWx0YVgpIHJldHVybjtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgY29uc3QgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgY29udGVudFdpZHRoID0gcmVjdC53aWR0aCAtIFRJTUVMSU5FX1BBRERJTkdfUFggKiAyO1xuICAgICAgaWYgKGNvbnRlbnRXaWR0aCA8PSAwKSByZXR1cm47XG5cbiAgICAgIGlmIChpc1pvb21HZXN0dXJlKSB7XG4gICAgICAgIGxldCBkeSA9IGUuZGVsdGFZO1xuICAgICAgICBpZiAoZS5kZWx0YU1vZGUgPT09IDEpIGR5ICo9IDE2O1xuXG4gICAgICAgIGNvbnN0IGN1cnNvckZyYWN0aW9uID0gTWF0aC5tYXgoXG4gICAgICAgICAgMCxcbiAgICAgICAgICBNYXRoLm1pbihcbiAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAoZS5jbGllbnRYIC0gcmVjdC5sZWZ0IC0gVElNRUxJTkVfUEFERElOR19QWCkgLyBjb250ZW50V2lkdGhcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGlzTW91c2VXaGVlbCA9IGUuZGVsdGFNb2RlID09PSAxIHx8IE1hdGguYWJzKGUuZGVsdGFZKSA+PSA1MDtcbiAgICAgICAgY29uc3Qgc2NhbGVGYWN0b3IgPSAyICoqIChkeSAvIChpc01vdXNlV2hlZWwgPyAyMDAgOiA2MCkpO1xuXG4gICAgICAgIHNldFZpZXdwb3J0KChwcmV2KSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJldkR1cmF0aW9uID0gcHJldi5lbmQgLSBwcmV2LnN0YXJ0O1xuICAgICAgICAgIGNvbnN0IGN1cnNvclRpbWUgPSBwcmV2LnN0YXJ0ICsgY3Vyc29yRnJhY3Rpb24gKiBwcmV2RHVyYXRpb247XG4gICAgICAgICAgY29uc3QgbmV3RHVyYXRpb24gPSBNYXRoLm1heChcbiAgICAgICAgICAgIE1JTl9WSUVXUE9SVF9NUyxcbiAgICAgICAgICAgIE1hdGgubWluKHJvb3RELCBwcmV2RHVyYXRpb24gKiBzY2FsZUZhY3RvcilcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgbGV0IG5ld1N0YXJ0ID0gY3Vyc29yVGltZSAtIGN1cnNvckZyYWN0aW9uICogbmV3RHVyYXRpb247XG4gICAgICAgICAgbGV0IG5ld0VuZCA9IG5ld1N0YXJ0ICsgbmV3RHVyYXRpb247XG5cbiAgICAgICAgICBpZiAobmV3U3RhcnQgPCByb290Uykge1xuICAgICAgICAgICAgbmV3U3RhcnQgPSByb290UztcbiAgICAgICAgICAgIG5ld0VuZCA9IHJvb3RTICsgbmV3RHVyYXRpb247XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuZXdFbmQgPiByb290RSkge1xuICAgICAgICAgICAgbmV3RW5kID0gcm9vdEU7XG4gICAgICAgICAgICBuZXdTdGFydCA9IE1hdGgubWF4KHJvb3RTLCByb290RSAtIG5ld0R1cmF0aW9uKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4geyBzdGFydDogbmV3U3RhcnQsIGVuZDogbmV3RW5kIH07XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGR4ID0gZS5kZWx0YVg7XG4gICAgICAgIGlmIChlLmRlbHRhTW9kZSA9PT0gMSkgZHggKj0gMTY7XG5cbiAgICAgICAgc2V0Vmlld3BvcnQoKHByZXYpID0+IHtcbiAgICAgICAgICBjb25zdCBwcmV2RHVyYXRpb24gPSBwcmV2LmVuZCAtIHByZXYuc3RhcnQ7XG4gICAgICAgICAgY29uc3QgcGFuQW1vdW50ID0gKGR4IC8gY29udGVudFdpZHRoKSAqIHByZXZEdXJhdGlvbjtcblxuICAgICAgICAgIGxldCBuZXdTdGFydCA9IHByZXYuc3RhcnQgKyBwYW5BbW91bnQ7XG4gICAgICAgICAgbGV0IG5ld0VuZCA9IHByZXYuZW5kICsgcGFuQW1vdW50O1xuXG4gICAgICAgICAgaWYgKG5ld1N0YXJ0IDwgcm9vdFMpIHtcbiAgICAgICAgICAgIG5ld1N0YXJ0ID0gcm9vdFM7XG4gICAgICAgICAgICBuZXdFbmQgPSByb290UyArIHByZXZEdXJhdGlvbjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG5ld0VuZCA+IHJvb3RFKSB7XG4gICAgICAgICAgICBuZXdFbmQgPSByb290RTtcbiAgICAgICAgICAgIG5ld1N0YXJ0ID0gTWF0aC5tYXgocm9vdFMsIHJvb3RFIC0gcHJldkR1cmF0aW9uKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4geyBzdGFydDogbmV3U3RhcnQsIGVuZDogbmV3RW5kIH07XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIG9uV2hlZWwsIHsgcGFzc2l2ZTogZmFsc2UgfSk7XG4gICAgcmV0dXJuICgpID0+IGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgb25XaGVlbCk7XG4gIH0sIFtyb290LnN0YXJ0VGltZSwgcm9vdC5kdXJhdGlvbiwgc2V0Vmlld3BvcnRdKTtcblxuICAvLyBEZXJpdmUgdGhlIHNlbGVjdGVkIHNwYW4gbmFtZSBhbmQgbWV0YWRhdGEgZm9yIHRoZSBwYW5lbCBoZWFkZXJcbiAgY29uc3Qgc2VsZWN0ZWRTcGFuTmFtZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghc2VsZWN0ZWRTcGFuPy5kYXRhKSByZXR1cm4gJ0RldGFpbHMnO1xuICAgIGNvbnN0IGRhdGEgPSBzZWxlY3RlZFNwYW4uZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBpZiAoc2VsZWN0ZWRTcGFuLnJlc291cmNlID09PSAnaG9vaycpIHtcbiAgICAgIHJldHVybiAoZGF0YS50b2tlbiBhcyBzdHJpbmcgfCB1bmRlZmluZWQpID8/IChkYXRhLmhvb2tJZCBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0ZXBOYW1lID0gZGF0YS5zdGVwTmFtZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgY29uc3Qgd29ya2Zsb3dOYW1lID0gZGF0YS53b3JrZmxvd05hbWUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiAoXG4gICAgICAoc3RlcE5hbWUgPyBwYXJzZVN0ZXBOYW1lKHN0ZXBOYW1lKT8uc2hvcnROYW1lIDogdW5kZWZpbmVkKSA/P1xuICAgICAgKHdvcmtmbG93TmFtZSA/IHBhcnNlV29ya2Zsb3dOYW1lKHdvcmtmbG93TmFtZSk/LnNob3J0TmFtZSA6IHVuZGVmaW5lZCkgPz9cbiAgICAgIHN0ZXBOYW1lID8/XG4gICAgICB3b3JrZmxvd05hbWUgPz9cbiAgICAgIChkYXRhLmhvb2tJZCBhcyBzdHJpbmcpID8/XG4gICAgICAnRGV0YWlscydcbiAgICApO1xuICB9LCBbc2VsZWN0ZWRTcGFuPy5kYXRhLCBzZWxlY3RlZFNwYW4/LnJlc291cmNlXSk7XG5cbiAgY29uc3QgeyBwcmV2U3BhbklkLCBuZXh0U3BhbklkIH0gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWFjdGl2ZVNwYW5JZCkgcmV0dXJuIHsgcHJldlNwYW5JZDogbnVsbCwgbmV4dFNwYW5JZDogbnVsbCB9O1xuICAgIGNvbnN0IGkgPSB0cmFjZS5zcGFucy5maW5kSW5kZXgoKHMpID0+IHMuc3BhbklkID09PSBhY3RpdmVTcGFuSWQpO1xuICAgIGlmIChpID09PSAtMSkgcmV0dXJuIHsgcHJldlNwYW5JZDogbnVsbCwgbmV4dFNwYW5JZDogbnVsbCB9O1xuICAgIHJldHVybiB7XG4gICAgICBwcmV2U3BhbklkOiB0cmFjZS5zcGFuc1tpIC0gMV0/LnNwYW5JZCA/PyBudWxsLFxuICAgICAgbmV4dFNwYW5JZDogdHJhY2Uuc3BhbnNbaSArIDFdPy5zcGFuSWQgPz8gbnVsbCxcbiAgICB9O1xuICB9LCBbYWN0aXZlU3BhbklkLCB0cmFjZS5zcGFuc10pO1xuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFByZXZTcGFuID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChwcmV2U3BhbklkKSBoYW5kbGVTZWxlY3RTcGFuKHByZXZTcGFuSWQpO1xuICB9LCBbcHJldlNwYW5JZCwgaGFuZGxlU2VsZWN0U3Bhbl0pO1xuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdE5leHRTcGFuID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChuZXh0U3BhbklkKSBoYW5kbGVTZWxlY3RTcGFuKG5leHRTcGFuSWQpO1xuICB9LCBbbmV4dFNwYW5JZCwgaGFuZGxlU2VsZWN0U3Bhbl0pO1xuXG4gIGNvbnN0IHByZXZTcGFuSWRSZWYgPSB1c2VSZWYocHJldlNwYW5JZCk7XG4gIGNvbnN0IG5leHRTcGFuSWRSZWYgPSB1c2VSZWYobmV4dFNwYW5JZCk7XG4gIGNvbnN0IGhhbmRsZVNlbGVjdFNwYW5SZWYgPSB1c2VSZWYoaGFuZGxlU2VsZWN0U3Bhbik7XG4gIHByZXZTcGFuSWRSZWYuY3VycmVudCA9IHByZXZTcGFuSWQ7XG4gIG5leHRTcGFuSWRSZWYuY3VycmVudCA9IG5leHRTcGFuSWQ7XG4gIGhhbmRsZVNlbGVjdFNwYW5SZWYuY3VycmVudCA9IGhhbmRsZVNlbGVjdFNwYW47XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBkYXRhLXBhbmU9XCJwYW5lLXJvb3RcIlxuICAgICAgZGF0YS1oYXMtZGV0YWlsPXthY3RpdmVTcGFuID8gJycgOiB1bmRlZmluZWR9XG4gICAgICBjbGFzc05hbWU9XCJncmlkIHctZnVsbCBoLWZ1bGwgbWF4LWgtZnVsbCBncmlkLWNvbHMtW21pbm1heCgxMDBweCwxZnIpXSBkYXRhLVtoYXMtZGV0YWlsXTpncmlkLWNvbHMtW21pbm1heCgxMDBweCwxZnIpX2NsYW1wKDI4MHB4LDM2MHB4LDEwMCUpXVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBpZD1cInRyYWNlLXBhcmVudFwiXG4gICAgICAgIGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1yb3dzLVsxZnJdIGgtZnVsbCBtaW4taC0wIG92ZXJmbG93LWhpZGRlbiByZWxhdGl2ZSBiZy1iYWNrZ3JvdW5kLTEwMFwiXG4gICAgICA+XG4gICAgICAgIDxTcGxpdFBhbmVcbiAgICAgICAgICBzY3JvbGxDb250YWluZXJSZWY9e3Njcm9sbENvbnRhaW5lclJlZn1cbiAgICAgICAgICBzdGFydEhlYWRlcj17XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWJhY2tncm91bmQtMTAwIGJvcmRlci1iIGJvcmRlci1ncmF5LWFscGhhLTQwMCBoLTEwIG1pbi1oLTEwIGZsZXggaXRlbXMtY2VudGVyIHBsLTQgcHItMiBnYXAtMS41XCI+XG4gICAgICAgICAgICAgIDxTZWFyY2ggY2xhc3NOYW1lPVwidy0zLjUgaC0zLjUgc2hyaW5rLTAgdGV4dC1ncmF5LTgwMFwiIC8+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGlkPVwidHJhY2Utdmlld2VyLXNlYXJjaFwiXG4gICAgICAgICAgICAgICAgbmFtZT1cInRyYWNlLXZpZXdlci1zZWFyY2hcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17c2VhcmNoUXVlcnl9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hRdWVyeShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJyAmJiBzZWFyY2hRdWVyeSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFF1ZXJ5KCcnKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIHNwYW5zLi4uXCJcbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VhcmNoIHNwYW5zXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4LTEgbWluLXctMCBiZy10cmFuc3BhcmVudCB0ZXh0LXNtIHRleHQtZ3JheS0xMDAwIHBsYWNlaG9sZGVyOnRleHQtZ3JheS04MDAgb3V0bGluZS1ub25lXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAge3NlYXJjaFF1ZXJ5ICYmIChcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2VhcmNoUXVlcnkoJycpfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiLW1yLTIgaGlkZGVuIGgtZnVsbCBtYXgtdy1mdWxsIHNocmluay0wIGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciByb3VuZGVkLXItbWQgYm9yZGVyLTAgYmctdHJhbnNwYXJlbnQgcHgtMi41IGZvbnQtaW5oZXJpdCB0ZXh0LWJhc2UgdGV4dC1ncmF5LTkwMCBuby11bmRlcmxpbmUgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMTUwIGVhc2UtaW4gaG92ZXI6dGV4dC1ncmF5LTEwMDAgZm9jdXMtdmlzaWJsZTotb3V0bGluZS1vZmZzZXQtMSBmb2N1cy12aXNpYmxlOm91dGxpbmUgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLVt2YXIoLS1kcy1mb2N1cy1jb2xvcildIG1pbi1bOTYxcHhdOmZsZXhcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxrYmQgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggaC01IG1pbi1oLTUgbWluLXctNSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZCBib3JkZXIgYm9yZGVyLWdyYXktYWxwaGEtNDAwIGJnLWJhY2tncm91bmQtMTAwIHB4LTEgZm9udC1zYW5zIHRleHQtWzEzcHhdIGZvbnQtbWVkaXVtIGxlYWRpbmctWzEuN2VtXSB0ZXh0LWdyYXktOTAwXCI+XG4gICAgICAgICAgICAgICAgICAgIEVzY1xuICAgICAgICAgICAgICAgICAgPC9rYmQ+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgZW5kSGVhZGVyPXtcbiAgICAgICAgICAgIDxUaW1lbGluZUhlYWRlciBtYXJrZXJzPXt0aW1lTWFya2Vyc30gaG92ZXJJbmZvPXtob3ZlckluZm99IC8+XG4gICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9jayBvdmVyZmxvdy12aXNpYmxlXCI+XG4gICAgICAgICAgICA8RXZlbnRMaXN0XG4gICAgICAgICAgICAgIHNwYW5zPXt0cmFjZS5zcGFuc31cbiAgICAgICAgICAgICAgYWN0aXZlU3BhbklkPXthY3RpdmVTcGFuSWR9XG4gICAgICAgICAgICAgIHNlYXJjaFJlc3VsdD17c2VhcmNoUmVzdWx0fVxuICAgICAgICAgICAgICBvblNlbGVjdFNwYW49e2hhbmRsZVNlbGVjdFNwYW59XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiByZWY9e2xvYWRNb3JlU2VudGluZWxSZWZ9IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAge2lzTG9hZGluZ01vcmUgPyAoXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMiBweS0zIHRleHQtc20gdGV4dC1ncmF5LTgwMFwiPlxuICAgICAgICAgICAgICAgICAgPFNwaW5uZXIgc2l6ZT17MTR9IC8+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5Mb2FkaW5nIHNwYW5z4oCmPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHsvKiBiaW9tZS1pZ25vcmUgbGludC9hMTF5L25vU3RhdGljRWxlbWVudEludGVyYWN0aW9uczogdGltZWxpbmUgaG92ZXIgYW5kIHdoZWVsIGdlc3R1cmVzIGFyZSBwb2ludGVyLW9ubHkgYW5ub3RhdGlvbnMgKi99XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgcmVmPXt0aW1lbGluZVJlZn1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2NrIG1pbi1oLTAgb3ZlcmZsb3ctdmlzaWJsZSByZWxhdGl2ZVwiXG4gICAgICAgICAgICBvbkRvdWJsZUNsaWNrPXtyZXNldFpvb219XG4gICAgICAgICAgICBvbk1vdXNlTW92ZT17aGFuZGxlVGltZWxpbmVNb3VzZU1vdmV9XG4gICAgICAgICAgICBvbk1vdXNlTGVhdmU9e2hhbmRsZVRpbWVsaW5lTW91c2VMZWF2ZX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8VGltZWxpbmVcbiAgICAgICAgICAgICAgc3BhbnM9e3RyYWNlLnNwYW5zfVxuICAgICAgICAgICAgICB2aWV3U3RhcnQ9e3ZpZXdwb3J0LnN0YXJ0fVxuICAgICAgICAgICAgICB2aWV3RW5kPXt2aWV3cG9ydC5lbmR9XG4gICAgICAgICAgICAgIG1hcmtlcnM9e3RpbWVNYXJrZXJzfVxuICAgICAgICAgICAgICBzZWxlY3RlZElkPXthY3RpdmVTcGFuSWR9XG4gICAgICAgICAgICAgIHNlYXJjaFJlc3VsdD17c2VhcmNoUmVzdWx0fVxuICAgICAgICAgICAgICBvblNlbGVjdD17aGFuZGxlU2VsZWN0U3Bhbn1cbiAgICAgICAgICAgICAgaG92ZXJGcmFjdGlvbj17aG92ZXJGcmFjdGlvbn1cbiAgICAgICAgICAgICAgYWx0SGVsZD17YWx0SGVsZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvU3BsaXRQYW5lPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHJpZ2h0LTMgYm90dG9tLTMgei1bNV0gZmxleCBpdGVtcy1jZW50ZXIgYm9yZGVyIGJvcmRlci1ncmF5LWFscGhhLTQwMCByb3VuZGVkLW1kIGJnLWJhY2tncm91bmQtMTAwIHNoYWRvdy1zbSBvdmVyZmxvdy1oaWRkZW4gZGl2aWRlLXggZGl2aWRlLWdyYXktYWxwaGEtNDAwXCI+XG4gICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJtdXRlZFwiXG4gICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgb25DbGljaz17em9vbU91dH1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJab29tIG91dFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFpvb21PdXQgY2xhc3NOYW1lPVwidy00IGgtNFwiIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICB2YXJpYW50PVwibXV0ZWRcIlxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e3Jlc2V0Wm9vbX1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJSZXNldCB6b29tXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Um90YXRlQ2N3IGNsYXNzTmFtZT1cInctMy41IGgtMy41XCIgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJtdXRlZFwiXG4gICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgb25DbGljaz17em9vbUlufVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlpvb20gaW5cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxab29tSW4gY2xhc3NOYW1lPVwidy00IGgtNFwiIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogRGV0YWlsIHBhbmVsICovfVxuICAgICAge2FjdGl2ZVNwYW4gPyAoXG4gICAgICAgIDxhc2lkZSBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGgtZnVsbCBtYXgtaC1mdWxsIGJnLWJhY2tncm91bmQtMTAwIGJvcmRlci1sIGJvcmRlci1ncmF5LWFscGhhLTQwMCBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgICAgey8qIFBhbmVsIGhlYWRlciAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiBzaHJpbmstMCBweC00IHB0LTMgcGItM1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1sYWJlbC0xNCBmb250LW1lZGl1bSB0ZXh0LWdyYXktMTAwMCB0cnVuY2F0ZSBibG9ja1wiPlxuICAgICAgICAgICAgICB7c2VsZWN0ZWRTcGFuTmFtZX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTAuNSBzaHJpbmstMFwiPlxuICAgICAgICAgICAgICA8VG9vbHRpcD5cbiAgICAgICAgICAgICAgICA8VG9vbHRpcFRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJOYXZpZ2F0ZSB1cFwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEta2V5c2hvcnRjdXRzPVwiS1wiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVNlbGVjdFByZXZTcGFufVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IXByZXZTcGFuSWR9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uVXAgY2xhc3NOYW1lPVwidy00IGgtNFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwVHJpZ2dlcj5cbiAgICAgICAgICAgICAgICB7cHJldlNwYW5JZCA/IChcbiAgICAgICAgICAgICAgICAgIDxUb29sdGlwQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGUgdXBcbiAgICAgICAgICAgICAgICAgICAgPEtiZD5LPC9LYmQ+XG4gICAgICAgICAgICAgICAgICA8L1Rvb2x0aXBDb250ZW50PlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgIDxUb29sdGlwPlxuICAgICAgICAgICAgICAgIDxUb29sdGlwVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk5hdmlnYXRlIGRvd25cIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWtleXNob3J0Y3V0cz1cIkpcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTZWxlY3ROZXh0U3Bhbn1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFuZXh0U3BhbklkfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwidy00IGgtNFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwVHJpZ2dlcj5cbiAgICAgICAgICAgICAgICB7bmV4dFNwYW5JZCA/IChcbiAgICAgICAgICAgICAgICAgIDxUb29sdGlwQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGUgZG93blxuICAgICAgICAgICAgICAgICAgICA8S2JkPko8L0tiZD5cbiAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgPGRpdiBhcmlhLWhpZGRlbiBjbGFzc05hbWU9XCJ3LXB4IGgtNCBiZy1ncmF5LWFscGhhLTQwMCBteC0xXCIgLz5cbiAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2Ugc3BhbiBkZXRhaWxzXCJcbiAgICAgICAgICAgICAgICBhcmlhLWtleXNob3J0Y3V0cz1cIkVzY2FwZVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJBY3RpdmVTcGFufVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFggY2xhc3NOYW1lPVwidy00IGgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHsvKiBQYW5lbCBib2R5ICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG92ZXJmbG93LXktYXV0b1wiPlxuICAgICAgICAgICAgPEVycm9yQm91bmRhcnk+XG4gICAgICAgICAgICAgIDxFbnRpdHlEZXRhaWxQYW5lbFxuICAgICAgICAgICAgICAgIHJ1bj17c2lkZWJhci5ydW59XG4gICAgICAgICAgICAgICAgb25TdHJlYW1DbGljaz17c2lkZWJhci5vblN0cmVhbUNsaWNrfVxuICAgICAgICAgICAgICAgIG9uUnVuQ2xpY2s9e3NpZGViYXIub25SdW5DbGlja31cbiAgICAgICAgICAgICAgICBzcGFuRGV0YWlsRGF0YT17c2lkZWJhci5zcGFuRGV0YWlsRGF0YX1cbiAgICAgICAgICAgICAgICBzcGFuRGV0YWlsRXJyb3I9e3NpZGViYXIuc3BhbkRldGFpbEVycm9yfVxuICAgICAgICAgICAgICAgIHNwYW5EZXRhaWxMb2FkaW5nPXtzaWRlYmFyLnNwYW5EZXRhaWxMb2FkaW5nfVxuICAgICAgICAgICAgICAgIG9uU3BhblNlbGVjdD17c2lkZWJhci5vblNwYW5TZWxlY3R9XG4gICAgICAgICAgICAgICAgb25XYWtlVXBTbGVlcD17c2lkZWJhci5vbldha2VVcFNsZWVwfVxuICAgICAgICAgICAgICAgIG9uTG9hZEV2ZW50RGF0YT17c2lkZWJhci5vbkxvYWRFdmVudERhdGF9XG4gICAgICAgICAgICAgICAgb25SZXNvbHZlSG9vaz17c2lkZWJhci5vblJlc29sdmVIb29rfVxuICAgICAgICAgICAgICAgIGVuY3J5cHRpb25LZXk9e3NpZGViYXIuZW5jcnlwdGlvbktleX1cbiAgICAgICAgICAgICAgICBvbkRlY3J5cHQ9e3NpZGViYXIub25EZWNyeXB0fVxuICAgICAgICAgICAgICAgIGlzRGVjcnlwdGluZz17c2lkZWJhci5pc0RlY3J5cHRpbmd9XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRTcGFuPXtzZWxlY3RlZFNwYW59XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0Vycm9yQm91bmRhcnk+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXNpZGU+XG4gICAgICApIDogbnVsbH1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdfQ==
|
|
@@ -31,7 +31,7 @@ export declare function getResourceColor(resource: string): {
|
|
|
31
31
|
errorBg?: string;
|
|
32
32
|
errorBorder?: string;
|
|
33
33
|
};
|
|
34
|
-
export type SegmentStatus = 'queued' | 'running' | 'failed' | 'retrying' | 'succeeded' | 'waiting' | 'sleeping' | 'received';
|
|
34
|
+
export type SegmentStatus = 'queued' | 'running' | 'completed' | 'failed' | 'retrying' | 'succeeded' | 'waiting' | 'sleeping' | 'received';
|
|
35
35
|
export interface Segment {
|
|
36
36
|
startFraction: number;
|
|
37
37
|
endFraction: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/new-trace-viewer/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAa,MAAM,SAAS,CAAC;AAO/C,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,UAAU,CAiB3D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAKpD;AAMD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAkBD,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACb,UAAU,EAAE,CAqBd;AAMD,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,IAAI,EAAE,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,EAAE,CAkBX;AAMD,eAAO,MAAM,eAAe,EAAE,MAAM,CAClC,MAAM,EACN;IACE,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAgCF,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAEA;AAMD,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,UAAU,GACV,WAAW,GACX,SAAS,GACT,UAAU,GACV,UAAU,CAAC;AAEf,MAAM,WAAW,OAAO;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/new-trace-viewer/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAa,MAAM,SAAS,CAAC;AAO/C,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,UAAU,CAiB3D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAKpD;AAMD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAkBD,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACb,UAAU,EAAE,CAqBd;AAMD,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,IAAI,EAAE,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,EAAE,CAkBX;AAMD,eAAO,MAAM,eAAe,EAAE,MAAM,CAClC,MAAM,EACN;IACE,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAgCF,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAEA;AAMD,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,SAAS,GACT,WAAW,GACX,QAAQ,GACR,UAAU,GACV,WAAW,GACX,SAAS,GACT,UAAU,GACV,UAAU,CAAC;AAEf,MAAM,WAAW,OAAO;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;CACvB;AAoQD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,EAAE,CAyBzD"}
|
|
@@ -249,6 +249,13 @@ function computeSleepSegmentsFromSpan(_startMs, duration, _events) {
|
|
|
249
249
|
return [];
|
|
250
250
|
return [{ startFraction: 0, endFraction: 1, status: 'sleeping' }];
|
|
251
251
|
}
|
|
252
|
+
function runSegmentStatus(runStatus) {
|
|
253
|
+
if (runStatus === 'failed')
|
|
254
|
+
return 'failed';
|
|
255
|
+
if (runStatus === 'running' || runStatus === 'pending')
|
|
256
|
+
return 'running';
|
|
257
|
+
return 'completed';
|
|
258
|
+
}
|
|
252
259
|
function computeRunSegmentsFromSpan(startMs, duration, activeStartMs, events, attributes) {
|
|
253
260
|
const segments = [];
|
|
254
261
|
if (duration <= 0)
|
|
@@ -256,10 +263,10 @@ function computeRunSegmentsFromSpan(startMs, duration, activeStartMs, events, at
|
|
|
256
263
|
const sorted = [...events]
|
|
257
264
|
.map((e) => ({ name: e.name, time: getHighResInMs(e.timestamp) }))
|
|
258
265
|
.sort((a, b) => a.time - b.time);
|
|
266
|
+
const runData = attributes?.data;
|
|
267
|
+
const runStatus = runData?.status;
|
|
259
268
|
const hasRunCreated = sorted.some((e) => e.name === 'run_created');
|
|
260
269
|
if (!hasRunCreated) {
|
|
261
|
-
const runData = attributes?.data;
|
|
262
|
-
const runStatus = runData?.status;
|
|
263
270
|
return computeV1RunSegments(startMs, duration, activeStartMs, runStatus);
|
|
264
271
|
}
|
|
265
272
|
const failedEvent = sorted.find((e) => e.name === 'run_failed');
|
|
@@ -278,7 +285,7 @@ function computeRunSegmentsFromSpan(startMs, duration, activeStartMs, events, at
|
|
|
278
285
|
segments.push({
|
|
279
286
|
startFraction: cursor,
|
|
280
287
|
endFraction: 1,
|
|
281
|
-
status: failedEvent ? 'failed' :
|
|
288
|
+
status: failedEvent ? 'failed' : runSegmentStatus(runStatus),
|
|
282
289
|
});
|
|
283
290
|
return segments;
|
|
284
291
|
}
|
|
@@ -299,7 +306,7 @@ function computeV1RunSegments(startMs, duration, activeStartMs, runStatus) {
|
|
|
299
306
|
segments.push({
|
|
300
307
|
startFraction: cursor,
|
|
301
308
|
endFraction: 1,
|
|
302
|
-
status: runStatus
|
|
309
|
+
status: runSegmentStatus(runStatus),
|
|
303
310
|
});
|
|
304
311
|
return segments;
|
|
305
312
|
}
|
|
@@ -327,4 +334,4 @@ export function computeSpanSegments(span) {
|
|
|
327
334
|
return [];
|
|
328
335
|
}
|
|
329
336
|
}
|
|
330
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9uZXctdHJhY2Utdmlld2VyL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFZN0UsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQWE7SUFDN0MsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDO0lBQ3hDLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztJQUV0QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLE1BQU0sQ0FBQyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekMsTUFBTSxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsR0FBRyxRQUFRO1lBQUUsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsR0FBRyxNQUFNO1lBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxD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QVEsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZTtRQUN4QyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDdEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUVkLFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLEtBQUssTUFBTTtZQUNULE9BQU8sMkJBQTJCLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckUsS0FBSyxNQUFNO1lBQ1QsT0FBTywyQkFBMkIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRSxLQUFLLE9BQU87WUFDVixPQUFPLDRCQUE0QixDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RFLEtBQUssS0FBSztZQUNSLE9BQU8sMEJBQTBCLENBQy9CLE9BQU8sRUFDUCxRQUFRLEVBQ1IsYUFBYSxFQUNiLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FDaEIsQ0FBQztRQUNKO1lBQ0UsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU3BhbiwgU3BhbkV2ZW50IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBmb3JtYXREdXJhdGlvbiwgZ2V0SGlnaFJlc0luTXMgfSBmcm9tICcuLi90cmFjZS12aWV3ZXIvdXRpbC90aW1pbmcnO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJvb3QgYm91bmRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGludGVyZmFjZSBSb290Qm91bmRzIHtcbiAgc3RhcnRUaW1lOiBudW1iZXI7XG4gIGVuZFRpbWU6IG51bWJlcjtcbiAgZHVyYXRpb246IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVSb290Qm91bmRzKHNwYW5zOiBTcGFuW10pOiBSb290Qm91bmRzIHtcbiAgbGV0IG1pblN0YXJ0ID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICBsZXQgbWF4RW5kID0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO1xuXG4gIGZvciAoY29uc3Qgc3BhbiBvZiBzcGFucykge1xuICAgIGNvbnN0IHMgPSBnZXRIaWdoUmVzSW5NcyhzcGFuLnN0YXJ0VGltZSk7XG4gICAgY29uc3QgZSA9IGdldEhpZ2hSZXNJbk1zKHNwYW4uZW5kVGltZSk7XG4gICAgaWYgKHMgPCBtaW5TdGFydCkgbWluU3RhcnQgPSBzO1xuICAgIGlmIChlID4gbWF4RW5kKSBtYXhFbmQgPSBlO1xuICB9XG5cbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobWluU3RhcnQpIHx8ICFOdW1iZXIuaXNGaW5pdGUobWF4RW5kKSkge1xuICAgIHJldHVybiB7IHN0YXJ0VGltZTogMCwgZW5kVGltZTogMSwgZHVyYXRpb246IDEgfTtcbiAgfVxuXG4gIGNvbnN0IGR1cmF0aW9uID0gTWF0aC5tYXgobWF4RW5kIC0gbWluU3RhcnQsIDEpO1xuICByZXR1cm4geyBzdGFydFRpbWU6IG1pblN0YXJ0LCBlbmRUaW1lOiBtYXhFbmQsIGR1cmF0aW9uIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTcGFuRHVyYXRpb25NcyhzcGFuOiBTcGFuKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGgubWF4KFxuICAgIDAsXG4gICAgZ2V0SGlnaFJlc0luTXMoc3Bhbi5lbmRUaW1lKSAtIGdldEhpZ2hSZXNJbk1zKHNwYW4uc3RhcnRUaW1lKVxuICApO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRpbWUgbWFya2Vyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgVGltZU1hcmtlciB7XG4gIHBvc2l0aW9uOiBudW1iZXI7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBudW1iZXI7XG59XG5cbmNvbnN0IE5JQ0VfSU5URVJWQUxTID0gW1xuICAxLCAyLCA1LCAxMCwgMjAsIDUwLCAxMDAsIDIwMCwgNTAwLCAxXzAwMCwgMl8wMDAsIDVfMDAwLCAxMF8wMDAsIDIwXzAwMCxcbiAgNTBfMDAwLCAxMDBfMDAwLCAyMDBfMDAwLCA1MDBfMDAwLCAxXzAwMF8wMDAsIDJfMDAwXzAwMCwgNV8wMDBfMDAwLFxuICAxMF8wMDBfMDAwLCAyMF8wMDBfMDAwLCA1MF8wMDBfMDAwLCAxMDBfMDAwXzAwMCwgMjAwXzAwMF8wMDAsIDUwMF8wMDBfMDAwLFxuICAxXzAwMF8wMDBfMDAwLCAyXzAwMF8wMDBfMDAwLCA1XzAwMF8wMDBfMDAwLFxuXTtcblxuY29uc3QgTUFYX01BUktFUlMgPSA4O1xuXG5mdW5jdGlvbiBwaWNrSW50ZXJ2YWwodmlld0R1cmF0aW9uOiBudW1iZXIsIG1heFRpY2tzOiBudW1iZXIpOiBudW1iZXIge1xuICBmb3IgKGNvbnN0IGludGVydmFsIG9mIE5JQ0VfSU5URVJWQUxTKSB7XG4gICAgaWYgKHZpZXdEdXJhdGlvbiAvIGludGVydmFsIDw9IG1heFRpY2tzKSByZXR1cm4gaW50ZXJ2YWw7XG4gIH1cbiAgcmV0dXJuIE5JQ0VfSU5URVJWQUxTW05JQ0VfSU5URVJWQUxTLmxlbmd0aCAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVRpbWVNYXJrZXJzKFxuICB2aWV3RHVyYXRpb246IG51bWJlcixcbiAgb2Zmc2V0OiBudW1iZXJcbik6IFRpbWVNYXJrZXJbXSB7XG4gIGlmICh2aWV3RHVyYXRpb24gPD0gMCkgcmV0dXJuIFtdO1xuXG4gIGNvbnN0IG1heFRpY2tzID0gNjtcbiAgY29uc3QgaW50ZXJ2YWwgPSBwaWNrSW50ZXJ2YWwodmlld0R1cmF0aW9uLCBtYXhUaWNrcyk7XG5cbiAgY29uc3QgZmlyc3RUaWNrID0gTWF0aC5jZWlsKG9mZnNldCAvIGludGVydmFsKSAqIGludGVydmFsO1xuICBjb25zdCBtYXJrZXJzOiBUaW1lTWFya2VyW10gPSBbXTtcblxuICBmb3IgKGxldCB0ID0gZmlyc3RUaWNrOyB0IDw9IG9mZnNldCArIHZpZXdEdXJhdGlvbjsgdCArPSBpbnRlcnZhbCkge1xuICAgIGNvbnN0IHBvc2l0aW9uID0gKHQgLSBvZmZzZXQpIC8gdmlld0R1cmF0aW9uO1xuICAgIGlmIChwb3NpdGlvbiA8IC0wLjAxIHx8IHBvc2l0aW9uID4gMS4wMSkgY29udGludWU7XG4gICAgbWFya2Vycy5wdXNoKHtcbiAgICAgIHBvc2l0aW9uOiBNYXRoLm1pbihNYXRoLm1heChwb3NpdGlvbiwgMCksIDEpLFxuICAgICAgbGFiZWw6IGZvcm1hdER1cmF0aW9uKE1hdGguYWJzKHQpLCB0cnVlKSxcbiAgICAgIHZhbHVlOiB0LFxuICAgIH0pO1xuICAgIGlmIChtYXJrZXJzLmxlbmd0aCA+PSBNQVhfTUFSS0VSUykgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gbWFya2Vycztcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTcGFuIGdhcHMg4oCUIHRpbWUgZGVsdGFzIGJldHdlZW4gY29uc2VjdXRpdmUgc3BhbnMgKEFsdC1rZXkgb3ZlcmxheSlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIFNwYW5HYXAge1xuICBnYXBNczogbnVtYmVyO1xuICBsZWZ0RnJhYzogbnVtYmVyO1xuICByaWdodEZyYWM6IG51bWJlcjtcbiAgcm93SW5kZXg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVTcGFuR2FwcyhcbiAgc3BhbnM6IFNwYW5bXSxcbiAgdmlld1N0YXJ0OiBudW1iZXIsXG4gIHZpZXdFbmQ6IG51bWJlclxuKTogU3BhbkdhcFtdIHtcbiAgY29uc3QgcmFuZ2UgPSB2aWV3RW5kIC0gdmlld1N0YXJ0O1xuICBpZiAocmFuZ2UgPD0gMCkgcmV0dXJuIFtdO1xuXG4gIGNvbnN0IGdhcHM6IFNwYW5HYXBbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNwYW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIGNvbnN0IGVuZFRpbWUgPSBnZXRIaWdoUmVzSW5NcyhzcGFuc1tpXS5lbmRUaW1lKTtcbiAgICBjb25zdCBzdGFydFRpbWUgPSBnZXRIaWdoUmVzSW5NcyhzcGFuc1tpICsgMV0uc3RhcnRUaW1lKTtcbiAgICBjb25zdCBnYXBNcyA9IHN0YXJ0VGltZSAtIGVuZFRpbWU7XG4gICAgaWYgKGdhcE1zIDw9IDApIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgbGVmdEZyYWMgPSBNYXRoLm1pbihNYXRoLm1heCgoZW5kVGltZSAtIHZpZXdTdGFydCkgLyByYW5nZSwgMCksIDEpO1xuICAgIGNvbnN0IHJpZ2h0RnJhYyA9IE1hdGgubWluKE1hdGgubWF4KChzdGFydFRpbWUgLSB2aWV3U3RhcnQpIC8gcmFuZ2UsIDApLCAxKTtcbiAgICBpZiAocmlnaHRGcmFjIC0gbGVmdEZyYWMgPCAwLjAwMSkgY29udGludWU7XG5cbiAgICBnYXBzLnB1c2goeyBnYXBNcywgbGVmdEZyYWMsIHJpZ2h0RnJhYywgcm93SW5kZXg6IGkgfSk7XG4gIH1cbiAgcmV0dXJuIGdhcHM7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmVzb3VyY2UgY29sb3JzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IFJFU09VUkNFX0NPTE9SUzogUmVjb3JkPFxuICBzdHJpbmcsXG4gIHtcbiAgICBiZzogc3RyaW5nO1xuICAgIGJvcmRlcjogc3RyaW5nO1xuICAgIGVycm9yQmc/OiBzdHJpbmc7XG4gICAgZXJyb3JCb3JkZXI/OiBzdHJpbmc7XG4gIH1cbj4gPSB7XG4gIHJ1bjoge1xuICAgIGJnOiAndmFyKC0tZHMtYmx1ZS0yMDApJyxcbiAgICBib3JkZXI6ICd2YXIoLS1kcy1ibHVlLTUwMCknLFxuICAgIGVycm9yQmc6ICd2YXIoLS1kcy1yZWQtMjAwKScsXG4gICAgZXJyb3JCb3JkZXI6ICd2YXIoLS1kcy1yZWQtNTAwKScsXG4gIH0sXG4gIHN0ZXA6IHtcbiAgICBiZzogJ3ZhcigtLWRzLWdyZWVuLTIwMCknLFxuICAgIGJvcmRlcjogJ3ZhcigtLWRzLWdyZWVuLTUwMCknLFxuICAgIGVycm9yQmc6ICd2YXIoLS1kcy1yZWQtMjAwKScsXG4gICAgZXJyb3JCb3JkZXI6ICd2YXIoLS1kcy1yZWQtNTAwKScsXG4gIH0sXG4gIGhvb2s6IHtcbiAgICBiZzogJ3ZhcigtLWRzLWFtYmVyLTIwMCknLFxuICAgIGJvcmRlcjogJ3ZhcigtLWRzLWFtYmVyLTUwMCknLFxuICAgIGVycm9yQmc6ICd2YXIoLS1kcy1yZWQtMjAwKScsXG4gICAgZXJyb3JCb3JkZXI6ICd2YXIoLS1kcy1yZWQtNTAwKScsXG4gIH0sXG4gIHNsZWVwOiB7XG4gICAgYmc6ICd2YXIoLS1kcy1wdXJwbGUtMjAwKScsXG4gICAgYm9yZGVyOiAndmFyKC0tZHMtcHVycGxlLTUwMCknLFxuICAgIGVycm9yQmc6ICd2YXIoLS1kcy1yZWQtMjAwKScsXG4gICAgZXJyb3JCb3JkZXI6ICd2YXIoLS1kcy1yZWQtNTAwKScsXG4gIH0sXG4gIGRlZmF1bHQ6IHtcbiAgICBiZzogJ3ZhcigtLWRzLWdyYXktMjAwKScsXG4gICAgYm9yZGVyOiAndmFyKC0tZHMtZ3JheS01MDApJyxcbiAgICBlcnJvckJnOiAndmFyKC0tZHMtcmVkLTIwMCknLFxuICAgIGVycm9yQm9yZGVyOiAndmFyKC0tZHMtcmVkLTUwMCknLFxuICB9LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc291cmNlQ29sb3IocmVzb3VyY2U6IHN0cmluZyk6IHtcbiAgYmc6IHN0cmluZztcbiAgYm9yZGVyOiBzdHJpbmc7XG4gIGVycm9yQmc/OiBzdHJpbmc7XG4gIGVycm9yQm9yZGVyPzogc3RyaW5nO1xufSB7XG4gIHJldHVybiBSRVNPVVJDRV9DT0xPUlNbcmVzb3VyY2VdID8/IFJFU09VUkNFX0NPTE9SUy5kZWZhdWx0O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNwYW4gc2VnbWVudHMg4oCUIHNwbGl0IGEgdGltZWxpbmUgYmFyIGludG8gY29sb3JlZCBzZWN0aW9ucyBieSBldmVudCBzdGF0ZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCB0eXBlIFNlZ21lbnRTdGF0dXMgPVxuICB8ICdxdWV1ZWQnXG4gIHwgJ3J1bm5pbmcnXG4gIHwgJ2ZhaWxlZCdcbiAgfCAncmV0cnlpbmcnXG4gIHwgJ3N1Y2NlZWRlZCdcbiAgfCAnd2FpdGluZydcbiAgfCAnc2xlZXBpbmcnXG4gIHwgJ3JlY2VpdmVkJztcblxuZXhwb3J0IGludGVyZmFjZSBTZWdtZW50IHtcbiAgc3RhcnRGcmFjdGlvbjogbnVtYmVyO1xuICBlbmRGcmFjdGlvbjogbnVtYmVyO1xuICBzdGF0dXM6IFNlZ21lbnRTdGF0dXM7XG59XG5cbmZ1bmN0aW9uIGNsYW1wRnJhY3Rpb24odmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCB2YWx1ZSkpO1xufVxuXG5mdW5jdGlvbiB0aW1lVG9GcmFjdGlvbihcbiAgdGltZTogbnVtYmVyLFxuICBzcGFuU3RhcnQ6IG51bWJlcixcbiAgc3BhbkR1cmF0aW9uOiBudW1iZXJcbik6IG51bWJlciB7XG4gIGlmIChzcGFuRHVyYXRpb24gPD0gMCkgcmV0dXJuIDA7XG4gIHJldHVybiBjbGFtcEZyYWN0aW9uKCh0aW1lIC0gc3BhblN0YXJ0KSAvIHNwYW5EdXJhdGlvbik7XG59XG5cbmludGVyZmFjZSBFdmVudE1hcmsge1xuICB0aW1lOiBudW1iZXI7XG4gIHR5cGU6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gc29ydGVkRXZlbnRNYXJrcyhcbiAgZXZlbnRzOiBTcGFuRXZlbnRbXSxcbiAgcmVsZXZhbnROYW1lczogc3RyaW5nW11cbik6IEV2ZW50TWFya1tdIHtcbiAgcmV0dXJuIGV2ZW50c1xuICAgIC5maWx0ZXIoKGUpID0+IHJlbGV2YW50TmFtZXMuaW5jbHVkZXMoZS5uYW1lKSlcbiAgICAubWFwKChlKSA9PiAoeyB0aW1lOiBnZXRIaWdoUmVzSW5NcyhlLnRpbWVzdGFtcCksIHR5cGU6IGUubmFtZSB9KSlcbiAgICAuc29ydCgoYSwgYikgPT4gYS50aW1lIC0gYi50aW1lKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVN0ZXBTZWdtZW50c0Zyb21TcGFuKFxuICBzdGFydE1zOiBudW1iZXIsXG4gIGR1cmF0aW9uOiBudW1iZXIsXG4gIGV2ZW50czogU3BhbkV2ZW50W11cbik6IFNlZ21lbnRbXSB7XG4gIGNvbnN0IHNlZ21lbnRzOiBTZWdtZW50W10gPSBbXTtcbiAgaWYgKGR1cmF0aW9uIDw9IDApIHJldHVybiBzZWdtZW50cztcblxuICBjb25zdCBtYXJrcyA9IHNvcnRlZEV2ZW50TWFya3MoZXZlbnRzLCBbXG4gICAgJ3N0ZXBfc3RhcnRlZCcsXG4gICAgJ3N0ZXBfcmV0cnlpbmcnLFxuICAgICdzdGVwX2ZhaWxlZCcsXG4gICAgJ3N0ZXBfY29tcGxldGVkJyxcbiAgXSk7XG5cbiAgaWYgKG1hcmtzLmxlbmd0aCA9PT0gMCkge1xuICAgIHNlZ21lbnRzLnB1c2goeyBzdGFydEZyYWN0aW9uOiAwLCBlbmRGcmFjdGlvbjogMSwgc3RhdHVzOiAncnVubmluZycgfSk7XG4gICAgcmV0dXJuIHNlZ21lbnRzO1xuICB9XG5cbiAgY29uc3QgZmlyc3RGcmFjdGlvbiA9IHRpbWVUb0ZyYWN0aW9uKG1hcmtzWzBdLnRpbWUsIHN0YXJ0TXMsIGR1cmF0aW9uKTtcbiAgaWYgKGZpcnN0RnJhY3Rpb24gPiAwLjAwMSkge1xuICAgIHNlZ21lbnRzLnB1c2goe1xuICAgICAgc3RhcnRGcmFjdGlvbjogMCxcbiAgICAgIGVuZEZyYWN0aW9uOiBmaXJzdEZyYWN0aW9uLFxuICAgICAgc3RhdHVzOiAncXVldWVkJyxcbiAgICB9KTtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWFya3MubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBtYXJrID0gbWFya3NbaV07XG4gICAgY29uc3QgbWFya0ZyYWMgPSB0aW1lVG9GcmFjdGlvbihtYXJrLnRpbWUsIHN0YXJ0TXMsIGR1cmF0aW9uKTtcbiAgICBjb25zdCBuZXh0TWFyayA9IG1hcmtzW2kgKyAxXTtcbiAgICBjb25zdCBuZXh0RnJhYyA9IG5leHRNYXJrXG4gICAgICA/IHRpbWVUb0ZyYWN0aW9uKG5leHRNYXJrLnRpbWUsIHN0YXJ0TXMsIGR1cmF0aW9uKVxuICAgICAgOiAxO1xuXG4gICAgaWYgKG1hcmsudHlwZSA9PT0gJ3N0ZXBfc3RhcnRlZCcpIHtcbiAgICAgIGlmIChpID09PSBtYXJrcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHNlZ21lbnRzLnB1c2goe1xuICAgICAgICAgIHN0YXJ0RnJhY3Rpb246IG1hcmtGcmFjLFxuICAgICAgICAgIGVuZEZyYWN0aW9uOiAxLFxuICAgICAgICAgIHN0YXR1czogJ3N1Y2NlZWRlZCcsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmV4dFR5cGUgPSBuZXh0TWFyay50eXBlO1xuICAgICAgICBjb25zdCBhdHRlbXB0U3RhdHVzOiBTZWdtZW50U3RhdHVzID1cbiAgICAgICAgICBuZXh0VHlwZSA9PT0gJ3N0ZXBfcmV0cnlpbmcnIHx8IG5leHRUeXBlID09PSAnc3RlcF9mYWlsZWQnXG4gICAgICAgICAgICA/ICdmYWlsZWQnXG4gICAgICAgICAgICA6IG5leHRUeXBlID09PSAnc3RlcF9jb21wbGV0ZWQnXG4gICAgICAgICAgICAgID8gJ3N1Y2NlZWRlZCdcbiAgICAgICAgICAgICAgOiAncnVubmluZyc7XG4gICAgICAgIHNlZ21lbnRzLnB1c2goe1xuICAgICAgICAgIHN0YXJ0RnJhY3Rpb246IG1hcmtGcmFjLFxuICAgICAgICAgIGVuZEZyYWN0aW9uOiBuZXh0RnJhYyxcbiAgICAgICAgICBzdGF0dXM6IGF0dGVtcHRTdGF0dXMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobWFyay50eXBlID09PSAnc3RlcF9yZXRyeWluZycpIHtcbiAgICAgIHNlZ21lbnRzLnB1c2goe1xuICAgICAgICBzdGFydEZyYWN0aW9uOiBtYXJrRnJhYyxcbiAgICAgICAgZW5kRnJhY3Rpb246IG5leHRGcmFjLFxuICAgICAgICBzdGF0dXM6ICdyZXRyeWluZycsXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKG1hcmsudHlwZSA9PT0gJ3N0ZXBfZmFpbGVkJykge1xuICAgICAgaWYgKG1hcmtGcmFjIDwgMC45OTkpIHtcbiAgICAgICAgc2VnbWVudHMucHVzaCh7XG4gICAgICAgICAgc3RhcnRGcmFjdGlvbjogbWFya0ZyYWMsXG4gICAgICAgICAgZW5kRnJhY3Rpb246IDEsXG4gICAgICAgICAgc3RhdHVzOiAnZmFpbGVkJyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNlZ21lbnRzO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlSG9va1NlZ21lbnRzRnJvbVNwYW4oXG4gIHN0YXJ0TXM6IG51bWJlcixcbiAgZHVyYXRpb246IG51bWJlcixcbiAgZXZlbnRzOiBTcGFuRXZlbnRbXVxuKTogU2VnbWVudFtdIHtcbiAgY29uc3Qgc2VnbWVudHM6IFNlZ21lbnRbXSA9IFtdO1xuICBpZiAoZHVyYXRpb24gPD0gMCkgcmV0dXJuIHNlZ21lbnRzO1xuXG4gIGNvbnN0IHNvcnRlZCA9IFsuLi5ldmVudHNdXG4gICAgLm1hcCgoZSkgPT4gKHsgbmFtZTogZS5uYW1lLCB0aW1lOiBnZXRIaWdoUmVzSW5NcyhlLnRpbWVzdGFtcCkgfSkpXG4gICAgLnNvcnQoKGEsIGIpID0+IGEudGltZSAtIGIudGltZSk7XG5cbiAgY29uc3QgcmVjZWl2ZWQgPSBzb3J0ZWQuZmluZCgoZSkgPT4gZS5uYW1lID09PSAnaG9va19yZWNlaXZlZCcpO1xuICBjb25zdCBkaXNwb3NlZCA9IHNvcnRlZC5maW5kKChlKSA9PiBlLm5hbWUgPT09ICdob29rX2Rpc3Bvc2VkJyk7XG5cbiAgaWYgKCFyZWNlaXZlZCAmJiAhZGlzcG9zZWQpIHtcbiAgICBzZWdtZW50cy5wdXNoKHsgc3RhcnRGcmFjdGlvbjogMCwgZW5kRnJhY3Rpb246IDEsIHN0YXR1czogJ3dhaXRpbmcnIH0pO1xuICAgIHJldHVybiBzZWdtZW50cztcbiAgfVxuXG4gIGNvbnN0IHJlY2VpdmVkRnJhYyA9IHJlY2VpdmVkXG4gICAgPyB0aW1lVG9GcmFjdGlvbihyZWNlaXZlZC50aW1lLCBzdGFydE1zLCBkdXJhdGlvbilcbiAgICA6IG51bGw7XG4gIGNvbnN0IGRpc3Bvc2VkRnJhYyA9IGRpc3Bvc2VkXG4gICAgPyB0aW1lVG9GcmFjdGlvbihkaXNwb3NlZC50aW1lLCBzdGFydE1zLCBkdXJhdGlvbilcbiAgICA6IG51bGw7XG5cbiAgaWYgKHJlY2VpdmVkRnJhYyAhPT0gbnVsbCAmJiByZWNlaXZlZEZyYWMgPiAwLjAwMSkge1xuICAgIHNlZ21lbnRzLnB1c2goe1xuICAgICAgc3RhcnRGcmFjdGlvbjogMCxcbiAgICAgIGVuZEZyYWN0aW9uOiByZWNlaXZlZEZyYWMsXG4gICAgICBzdGF0dXM6ICd3YWl0aW5nJyxcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChyZWNlaXZlZEZyYWMgPT09IG51bGwgJiYgZGlzcG9zZWRGcmFjICE9PSBudWxsKSB7XG4gICAgc2VnbWVudHMucHVzaCh7XG4gICAgICBzdGFydEZyYWN0aW9uOiAwLFxuICAgICAgZW5kRnJhY3Rpb246IGRpc3Bvc2VkRnJhYyxcbiAgICAgIHN0YXR1czogJ3dhaXRpbmcnLFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHJlY2VpdmVkRnJhYyAhPT0gbnVsbCkge1xuICAgIHNlZ21lbnRzLnB1c2goe1xuICAgICAgc3RhcnRGcmFjdGlvbjogcmVjZWl2ZWRGcmFjLFxuICAgICAgZW5kRnJhY3Rpb246IGRpc3Bvc2VkRnJhYyA/PyAxLFxuICAgICAgc3RhdHVzOiAncmVjZWl2ZWQnLFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKGRpc3Bvc2VkRnJhYyAhPT0gbnVsbCAmJiBkaXNwb3NlZEZyYWMgPCAwLjk5OSkge1xuICAgIHNlZ21lbnRzLnB1c2goe1xuICAgICAgc3RhcnRGcmFjdGlvbjogZGlzcG9zZWRGcmFjLFxuICAgICAgZW5kRnJhY3Rpb246IDEsXG4gICAgICBzdGF0dXM6ICdzdWNjZWVkZWQnLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHNlZ21lbnRzO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlU2xlZXBTZWdtZW50c0Zyb21TcGFuKFxuICBfc3RhcnRNczogbnVtYmVyLFxuICBkdXJhdGlvbjogbnVtYmVyLFxuICBfZXZlbnRzOiBTcGFuRXZlbnRbXVxuKTogU2VnbWVudFtdIHtcbiAgaWYgKGR1cmF0aW9uIDw9IDApIHJldHVybiBbXTtcbiAgcmV0dXJuIFt7IHN0YXJ0RnJhY3Rpb246IDAsIGVuZEZyYWN0aW9uOiAxLCBzdGF0dXM6ICdzbGVlcGluZycgfV07XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVSdW5TZWdtZW50c0Zyb21TcGFuKFxuICBzdGFydE1zOiBudW1iZXIsXG4gIGR1cmF0aW9uOiBudW1iZXIsXG4gIGFjdGl2ZVN0YXJ0TXM6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgZXZlbnRzOiBTcGFuRXZlbnRbXSxcbiAgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbik6IFNlZ21lbnRbXSB7XG4gIGNvbnN0IHNlZ21lbnRzOiBTZWdtZW50W10gPSBbXTtcbiAgaWYgKGR1cmF0aW9uIDw9IDApIHJldHVybiBzZWdtZW50cztcblxuICBjb25zdCBzb3J0ZWQgPSBbLi4uZXZlbnRzXVxuICAgIC5tYXAoKGUpID0+ICh7IG5hbWU6IGUubmFtZSwgdGltZTogZ2V0SGlnaFJlc0luTXMoZS50aW1lc3RhbXApIH0pKVxuICAgIC5zb3J0KChhLCBiKSA9PiBhLnRpbWUgLSBiLnRpbWUpO1xuXG4gIGNvbnN0IGhhc1J1bkNyZWF0ZWQgPSBzb3J0ZWQuc29tZSgoZSkgPT4gZS5uYW1lID09PSAncnVuX2NyZWF0ZWQnKTtcblxuICBpZiAoIWhhc1J1bkNyZWF0ZWQpIHtcbiAgICBjb25zdCBydW5EYXRhID0gYXR0cmlidXRlcz8uZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBydW5TdGF0dXMgPSBydW5EYXRhPy5zdGF0dXMgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiBjb21wdXRlVjFSdW5TZWdtZW50cyhzdGFydE1zLCBkdXJhdGlvbiwgYWN0aXZlU3RhcnRNcywgcnVuU3RhdHVzKTtcbiAgfVxuXG4gIGNvbnN0IGZhaWxlZEV2ZW50ID0gc29ydGVkLmZpbmQoKGUpID0+IGUubmFtZSA9PT0gJ3J1bl9mYWlsZWQnKTtcblxuICBsZXQgY3Vyc29yID0gMDtcbiAgaWYgKGFjdGl2ZVN0YXJ0TXMgIT09IHVuZGVmaW5lZCAmJiBhY3RpdmVTdGFydE1zID4gc3RhcnRNcykge1xuICAgIGNvbnN0IHF1ZXVlZEZyYWMgPSB0aW1lVG9GcmFjdGlvbihhY3RpdmVTdGFydE1zLCBzdGFydE1zLCBkdXJhdGlvbik7XG4gICAgaWYgKHF1ZXVlZEZyYWMgPiAwLjAwMSkge1xuICAgICAgc2VnbWVudHMucHVzaCh7XG4gICAgICAgIHN0YXJ0RnJhY3Rpb246IDAsXG4gICAgICAgIGVuZEZyYWN0aW9uOiBxdWV1ZWRGcmFjLFxuICAgICAgICBzdGF0dXM6ICdxdWV1ZWQnLFxuICAgICAgfSk7XG4gICAgICBjdXJzb3IgPSBxdWV1ZWRGcmFjO1xuICAgIH1cbiAgfVxuXG4gIHNlZ21lbnRzLnB1c2goe1xuICAgIHN0YXJ0RnJhY3Rpb246IGN1cnNvcixcbiAgICBlbmRGcmFjdGlvbjogMSxcbiAgICBzdGF0dXM6IGZhaWxlZEV2ZW50ID8gJ2ZhaWxlZCcgOiAncnVubmluZycsXG4gIH0pO1xuXG4gIHJldHVybiBzZWdtZW50cztcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVYxUnVuU2VnbWVudHMoXG4gIHN0YXJ0TXM6IG51bWJlcixcbiAgZHVyYXRpb246IG51bWJlcixcbiAgYWN0aXZlU3RhcnRNczogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBydW5TdGF0dXM6IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogU2VnbWVudFtdIHtcbiAgY29uc3Qgc2VnbWVudHM6IFNlZ21lbnRbXSA9IFtdO1xuXG4gIGxldCBjdXJzb3IgPSAwO1xuICBpZiAoYWN0aXZlU3RhcnRNcyAhPT0gdW5kZWZpbmVkICYmIGFjdGl2ZVN0YXJ0TXMgPiBzdGFydE1zKSB7XG4gICAgY29uc3QgcXVldWVkRnJhYyA9IHRpbWVUb0ZyYWN0aW9uKGFjdGl2ZVN0YXJ0TXMsIHN0YXJ0TXMsIGR1cmF0aW9uKTtcbiAgICBpZiAocXVldWVkRnJhYyA+IDAuMDAxKSB7XG4gICAgICBzZWdtZW50cy5wdXNoKHtcbiAgICAgICAgc3RhcnRGcmFjdGlvbjogMCxcbiAgICAgICAgZW5kRnJhY3Rpb246IHF1ZXVlZEZyYWMsXG4gICAgICAgIHN0YXR1czogJ3F1ZXVlZCcsXG4gICAgICB9KTtcbiAgICAgIGN1cnNvciA9IHF1ZXVlZEZyYWM7XG4gICAgfVxuICB9XG5cbiAgc2VnbWVudHMucHVzaCh7XG4gICAgc3RhcnRGcmFjdGlvbjogY3Vyc29yLFxuICAgIGVuZEZyYWN0aW9uOiAxLFxuICAgIHN0YXR1czogcnVuU3RhdHVzID09PSAnZmFpbGVkJyA/ICdmYWlsZWQnIDogJ3J1bm5pbmcnLFxuICB9KTtcblxuICByZXR1cm4gc2VnbWVudHM7XG59XG5cbi8qKlxuICogQ29tcHV0ZSBldmVudC1iYXNlZCBzZWdtZW50cyBmb3IgYSBzcGFuLiBEaXNwYXRjaGVzIG9uIGBzcGFuLnJlc291cmNlYFxuICogdG8gdGhlIGFwcHJvcHJpYXRlIHJlc291cmNlLXR5cGUtc3BlY2lmaWMgc2VnbWVudCBidWlsZGVyLlxuICogUmV0dXJucyBhbiBlbXB0eSBhcnJheSBmb3IgZ2VuZXJpYyAobm9uLXdvcmtmbG93KSBzcGFucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVTcGFuU2VnbWVudHMoc3BhbjogU3Bhbik6IFNlZ21lbnRbXSB7XG4gIGNvbnN0IHN0YXJ0TXMgPSBnZXRIaWdoUmVzSW5NcyhzcGFuLnN0YXJ0VGltZSk7XG4gIGNvbnN0IGR1cmF0aW9uID0gZ2V0U3BhbkR1cmF0aW9uTXMoc3Bhbik7XG4gIGNvbnN0IGFjdGl2ZVN0YXJ0TXMgPSBzcGFuLmFjdGl2ZVN0YXJ0VGltZVxuICAgID8gZ2V0SGlnaFJlc0luTXMoc3Bhbi5hY3RpdmVTdGFydFRpbWUpXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgc3dpdGNoIChzcGFuLnJlc291cmNlKSB7XG4gICAgY2FzZSAnc3RlcCc6XG4gICAgICByZXR1cm4gY29tcHV0ZVN0ZXBTZWdtZW50c0Zyb21TcGFuKHN0YXJ0TXMsIGR1cmF0aW9uLCBzcGFuLmV2ZW50cyk7XG4gICAgY2FzZSAnaG9vayc6XG4gICAgICByZXR1cm4gY29tcHV0ZUhvb2tTZWdtZW50c0Zyb21TcGFuKHN0YXJ0TXMsIGR1cmF0aW9uLCBzcGFuLmV2ZW50cyk7XG4gICAgY2FzZSAnc2xlZXAnOlxuICAgICAgcmV0dXJuIGNvbXB1dGVTbGVlcFNlZ21lbnRzRnJvbVNwYW4oc3RhcnRNcywgZHVyYXRpb24sIHNwYW4uZXZlbnRzKTtcbiAgICBjYXNlICdydW4nOlxuICAgICAgcmV0dXJuIGNvbXB1dGVSdW5TZWdtZW50c0Zyb21TcGFuKFxuICAgICAgICBzdGFydE1zLFxuICAgICAgICBkdXJhdGlvbixcbiAgICAgICAgYWN0aXZlU3RhcnRNcyxcbiAgICAgICAgc3Bhbi5ldmVudHMsXG4gICAgICAgIHNwYW4uYXR0cmlidXRlc1xuICAgICAgKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFtdO1xuICB9XG59XG4iXX0=
|
|
337
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9uZXctdHJhY2Utdmlld2VyL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFZN0UsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQWE7SUFDN0MsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDO0lBQ3hDLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztJQUV0QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLE1BQU0sQ0FBQyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekMsTUFBTSxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsR0FBRyxRQUFRO1lBQUUsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsR0FBRyxNQUFNO1lBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxD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LENBQUMsQ0FBQztJQUVILE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLElBQVU7SUFDNUMsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZTtRQUN4QyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDdEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUVkLFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLEtBQUssTUFBTTtZQUNULE9BQU8sMkJBQTJCLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckUsS0FBSyxNQUFNO1lBQ1QsT0FBTywyQkFBMkIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRSxLQUFLLE9BQU87WUFDVixPQUFPLDRCQUE0QixDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RFLEtBQUssS0FBSztZQUNSLE9BQU8sMEJBQTBCLENBQy9CLE9BQU8sRUFDUCxRQUFRLEVBQ1IsYUFBYSxFQUNiLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FDaEIsQ0FBQztRQUNKO1lBQ0UsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU3BhbiwgU3BhbkV2ZW50IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBmb3JtYXREdXJhdGlvbiwgZ2V0SGlnaFJlc0luTXMgfSBmcm9tICcuLi90cmFjZS12aWV3ZXIvdXRpbC90aW1pbmcnO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJvb3QgYm91bmRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGludGVyZmFjZSBSb290Qm91bmRzIHtcbiAgc3RhcnRUaW1lOiBudW1iZXI7XG4gIGVuZFRpbWU6IG51bWJlcjtcbiAgZHVyYXRpb246IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVSb290Qm91bmRzKHNwYW5zOiBTcGFuW10pOiBSb290Qm91bmRzIHtcbiAgbGV0IG1pblN0YXJ0ID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICBsZXQgbWF4RW5kID0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO1xuXG4gIGZvciAoY29uc3Qgc3BhbiBvZiBzcGFucykge1xuICAgIGNvbnN0IHMgPSBnZXRIaWdoUmVzSW5NcyhzcGFuLnN0YXJ0VGltZSk7XG4gICAgY29uc3QgZSA9IGdldEhpZ2hSZXNJbk1zKHNwYW4uZW5kVGltZSk7XG4gICAgaWYgKHMgPCBtaW5TdGFydCkgbWluU3RhcnQgPSBzO1xuICAgIGlmIChlID4gbWF4RW5kKSBtYXhFbmQgPSBlO1xuICB9XG5cbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobWluU3RhcnQpIHx8ICFOdW1iZXIuaXNGaW5pdGUobWF4RW5kKSkge1xuICAgIHJldHVybiB7IHN0YXJ0VGltZTogMCwgZW5kVGltZTogMSwgZHVyYXRpb246IDEgfTtcbiAgfVxuXG4gIGNvbnN0IGR1cmF0aW9uID0gTWF0aC5tYXgobWF4RW5kIC0gbWluU3RhcnQsIDEpO1xuICByZXR1cm4geyBzdGFydFRpbWU6IG1pblN0YXJ0LCBlbmRUaW1lOiBtYXhFbmQsIGR1cmF0aW9uIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTcGFuRHVyYXRpb25NcyhzcGFuOiBTcGFuKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGgubWF4KFxuICAgIDAsXG4gICAgZ2V0SGlnaFJlc0luTXMoc3Bhbi5lbmRUaW1lKSAtIGdldEhpZ2hSZXNJbk1zKHNwYW4uc3RhcnRUaW1lKVxuICApO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRpbWUgbWFya2Vyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgVGltZU1hcmtlciB7XG4gIHBvc2l0aW9uOiBudW1iZXI7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBudW1iZXI7XG59XG5cbmNvbnN0IE5JQ0VfSU5URVJWQUxTID0gW1xuICAxLCAyLCA1LCAxMCwgMjAsIDUwLCAxMDAsIDIwMCwgNTAwLCAxXzAwMCwgMl8wMDAsIDVfMDAwLCAxMF8wMDAsIDIwXzAwMCxcbiAgNTBfMDAwLCAxMDBfMDAwLCAyMDBfMDAwLCA1MDBfMDAwLCAxXzAwMF8wMDAsIDJfMDAwXzAwMCwgNV8wMDBfMDAwLFxuICAxMF8wMDBfMDAwLCAyMF8wMDBfMDAwLCA1MF8wMDBfMDAwLCAxMDBfMDAwXzAwMCwgMjAwXzAwMF8wMDAsIDUwMF8wMDBfMDAwLFxuICAxXzAwMF8wMDBfMDAwLCAyXzAwMF8wMDBfMDAwLCA1XzAwMF8wMDBfMDAwLFxuXTtcblxuY29uc3QgTUFYX01BUktFUlMgPSA4O1xuXG5mdW5jdGlvbiBwaWNrSW50ZXJ2YWwodmlld0R1cmF0aW9uOiBudW1iZXIsIG1heFRpY2tzOiBudW1iZXIpOiBudW1iZXIge1xuICBmb3IgKGNvbnN0IGludGVydmFsIG9mIE5JQ0VfSU5URVJWQUxTKSB7XG4gICAgaWYgKHZpZXdEdXJhdGlvbiAvIGludGVydmFsIDw9IG1heFRpY2tzKSByZXR1cm4gaW50ZXJ2YWw7XG4gIH1cbiAgcmV0dXJuIE5JQ0VfSU5URVJWQUxTW05JQ0VfSU5URVJWQUxTLmxlbmd0aCAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVRpbWVNYXJrZXJzKFxuICB2aWV3RHVyYXRpb246IG51bWJlcixcbiAgb2Zmc2V0OiBudW1iZXJcbik6IFRpbWVNYXJrZXJbXSB7XG4gIGlmICh2aWV3RHVyYXRpb24gPD0gMCkgcmV0dXJuIFtdO1xuXG4gIGNvbnN0IG1heFRpY2tzID0gNjtcbiAgY29uc3QgaW50ZXJ2YWwgPSBwaWNrSW50ZXJ2YWwodmlld0R1cmF0aW9uLCBtYXhUaWNrcyk7XG5cbiAgY29uc3QgZmlyc3RUaWNrID0gTWF0aC5jZWlsKG9mZnNldCAvIGludGVydmFsKSAqIGludGVydmFsO1xuICBjb25zdCBtYXJrZXJzOiBUaW1lTWFya2VyW10gPSBbXTtcblxuICBmb3IgKGxldCB0ID0gZmlyc3RUaWNrOyB0IDw9IG9mZnNldCArIHZpZXdEdXJhdGlvbjsgdCArPSBpbnRlcnZhbCkge1xuICAgIGNvbnN0IHBvc2l0aW9uID0gKHQgLSBvZmZzZXQpIC8gdmlld0R1cmF0aW9uO1xuICAgIGlmIChwb3NpdGlvbiA8IC0wLjAxIHx8IHBvc2l0aW9uID4gMS4wMSkgY29udGludWU7XG4gICAgbWFya2Vycy5wdXNoKHtcbiAgICAgIHBvc2l0aW9uOiBNYXRoLm1pbihNYXRoLm1heChwb3NpdGlvbiwgMCksIDEpLFxuICAgICAgbGFiZWw6IGZvcm1hdER1cmF0aW9uKE1hdGguYWJzKHQpLCB0cnVlKSxcbiAgICAgIHZhbHVlOiB0LFxuICAgIH0pO1xuICAgIGlmIChtYXJrZXJzLmxlbmd0aCA+PSBNQVhfTUFSS0VSUykgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gbWFya2Vycztcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTcGFuIGdhcHMg4oCUIHRpbWUgZGVsdGFzIGJldHdlZW4gY29uc2VjdXRpdmUgc3BhbnMgKEFsdC1rZXkgb3ZlcmxheSlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIFNwYW5HYXAge1xuICBnYXBNczogbnVtYmVyO1xuICBsZWZ0RnJhYzogbnVtYmVyO1xuICByaWdodEZyYWM6IG51bWJlcjtcbiAgcm93SW5kZXg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVTcGFuR2FwcyhcbiAgc3BhbnM6IFNwYW5bXSxcbiAgdmlld1N0YXJ0OiBudW1iZXIsXG4gIHZpZXdFbmQ6IG51bWJlclxuKTogU3BhbkdhcFtdIHtcbiAgY29uc3QgcmFuZ2UgPSB2aWV3RW5kIC0gdmlld1N0YXJ0O1xuICBpZiAocmFuZ2UgPD0gMCkgcmV0dXJuIFtdO1xuXG4gIGNvbnN0IGdhcHM6IFNwYW5HYXBbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNwYW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIGNvbnN0IGVuZFRpbWUgPSBnZXRIaWdoUmVzSW5NcyhzcGFuc1tpXS5lbmRUaW1lKTtcbiAgICBjb25zdCBzdGFydFRpbWUgPSBnZXRIaWdoUmVzSW5NcyhzcGFuc1tpICsgMV0uc3RhcnRUaW1lKTtcbiAgICBjb25zdCBnYXBNcyA9IHN0YXJ0VGltZSAtIGVuZFRpbWU7XG4gICAgaWYgKGdhcE1zIDw9IDApIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgbGVmdEZyYWMgPSBNYXRoLm1pbihNYXRoLm1heCgoZW5kVGltZSAtIHZpZXdTdGFydCkgLyByYW5nZSwgMCksIDEpO1xuICAgIGNvbnN0IHJpZ2h0RnJhYyA9IE1hdGgubWluKE1hdGgubWF4KChzdGFydFRpbWUgLSB2aWV3U3RhcnQpIC8gcmFuZ2UsIDApLCAxKTtcbiAgICBpZiAocmlnaHRGcmFjIC0gbGVmdEZyYWMgPCAwLjAwMSkgY29udGludWU7XG5cbiAgICBnYXBzLnB1c2goeyBnYXBNcywgbGVmdEZyYWMsIHJpZ2h0RnJhYywgcm93SW5kZXg6IGkgfSk7XG4gIH1cbiAgcmV0dXJuIGdhcHM7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmVzb3VyY2UgY29sb3JzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IFJFU09VUkNFX0NPTE9SUzogUmVjb3JkPFxuICBzdHJpbmcsXG4gIHtcbiAgICBiZzogc3RyaW5nO1xuICAgIGJvcmRlcjogc3RyaW5nO1xuICAgIGVycm9yQmc/OiBzdHJpbmc7XG4gICAgZXJyb3JCb3JkZXI/OiBzdHJpbmc7XG4gIH1cbj4gPSB7XG4gIHJ1bjoge1xuICAgIGJnOiAndmFyKC0tZHMtYmx1ZS0yMDApJyxcbiAgICBib3JkZXI6ICd2YXIoLS1kcy1ibHVlLTUwMCknLFxuICAgIGVycm9yQmc6ICd2YXIoLS1kcy1yZWQtMjAwKScsXG4gICAgZXJyb3JCb3JkZXI6ICd2YXIoLS1kcy1yZWQtNTAwKScsXG4gIH0sXG4gIHN0ZXA6IHtcbiAgICBiZzogJ3ZhcigtLWRzLWdyZWVuLTIwMCknLFxuICAgIGJvcmRlcjogJ3ZhcigtLWRzLWdyZWVuLTUwMCknLFxuICAgIGVycm9yQmc6ICd2YXIoLS1kcy1yZWQtMjAwKScsXG4gICAgZXJyb3JCb3JkZXI6ICd2YXIoLS1kcy1yZWQtNTAwKScsXG4gIH0sXG4gIGhvb2s6IHtcbiAgICBiZzogJ3ZhcigtLWRzLWFtYmVyLTIwMCknLFxuICAgIGJvcmRlcjogJ3ZhcigtLWRzLWFtYmVyLTUwMCknLFxuICAgIGVycm9yQmc6ICd2YXIoLS1kcy1yZWQtMjAwKScsXG4gICAgZXJyb3JCb3JkZXI6ICd2YXIoLS1kcy1yZWQtNTAwKScsXG4gIH0sXG4gIHNsZWVwOiB7XG4gICAgYmc6ICd2YXIoLS1kcy1wdXJwbGUtMjAwKScsXG4gICAgYm9yZGVyOiAndmFyKC0tZHMtcHVycGxlLTUwMCknLFxuICAgIGVycm9yQmc6ICd2YXIoLS1kcy1yZWQtMjAwKScsXG4gICAgZXJyb3JCb3JkZXI6ICd2YXIoLS1kcy1yZWQtNTAwKScsXG4gIH0sXG4gIGRlZmF1bHQ6IHtcbiAgICBiZzogJ3ZhcigtLWRzLWdyYXktMjAwKScsXG4gICAgYm9yZGVyOiAndmFyKC0tZHMtZ3JheS01MDApJyxcbiAgICBlcnJvckJnOiAndmFyKC0tZHMtcmVkLTIwMCknLFxuICAgIGVycm9yQm9yZGVyOiAndmFyKC0tZHMtcmVkLTUwMCknLFxuICB9LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc291cmNlQ29sb3IocmVzb3VyY2U6IHN0cmluZyk6IHtcbiAgYmc6IHN0cmluZztcbiAgYm9yZGVyOiBzdHJpbmc7XG4gIGVycm9yQmc/OiBzdHJpbmc7XG4gIGVycm9yQm9yZGVyPzogc3RyaW5nO1xufSB7XG4gIHJldHVybiBSRVNPVVJDRV9DT0xPUlNbcmVzb3VyY2VdID8/IFJFU09VUkNFX0NPTE9SUy5kZWZhdWx0O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNwYW4gc2VnbWVudHMg4oCUIHNwbGl0IGEgdGltZWxpbmUgYmFyIGludG8gY29sb3JlZCBzZWN0aW9ucyBieSBldmVudCBzdGF0ZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCB0eXBlIFNlZ21lbnRTdGF0dXMgPVxuICB8ICdxdWV1ZWQnXG4gIHwgJ3J1bm5pbmcnXG4gIHwgJ2NvbXBsZXRlZCdcbiAgfCAnZmFpbGVkJ1xuICB8ICdyZXRyeWluZydcbiAgfCAnc3VjY2VlZGVkJ1xuICB8ICd3YWl0aW5nJ1xuICB8ICdzbGVlcGluZydcbiAgfCAncmVjZWl2ZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlZ21lbnQge1xuICBzdGFydEZyYWN0aW9uOiBudW1iZXI7XG4gIGVuZEZyYWN0aW9uOiBudW1iZXI7XG4gIHN0YXR1czogU2VnbWVudFN0YXR1cztcbn1cblxuZnVuY3Rpb24gY2xhbXBGcmFjdGlvbih2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGgubWF4KDAsIE1hdGgubWluKDEsIHZhbHVlKSk7XG59XG5cbmZ1bmN0aW9uIHRpbWVUb0ZyYWN0aW9uKFxuICB0aW1lOiBudW1iZXIsXG4gIHNwYW5TdGFydDogbnVtYmVyLFxuICBzcGFuRHVyYXRpb246IG51bWJlclxuKTogbnVtYmVyIHtcbiAgaWYgKHNwYW5EdXJhdGlvbiA8PSAwKSByZXR1cm4gMDtcbiAgcmV0dXJuIGNsYW1wRnJhY3Rpb24oKHRpbWUgLSBzcGFuU3RhcnQpIC8gc3BhbkR1cmF0aW9uKTtcbn1cblxuaW50ZXJmYWNlIEV2ZW50TWFyayB7XG4gIHRpbWU6IG51bWJlcjtcbiAgdHlwZTogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBzb3J0ZWRFdmVudE1hcmtzKFxuICBldmVudHM6IFNwYW5FdmVudFtdLFxuICByZWxldmFudE5hbWVzOiBzdHJpbmdbXVxuKTogRXZlbnRNYXJrW10ge1xuICByZXR1cm4gZXZlbnRzXG4gICAgLmZpbHRlcigoZSkgPT4gcmVsZXZhbnROYW1lcy5pbmNsdWRlcyhlLm5hbWUpKVxuICAgIC5tYXAoKGUpID0+ICh7IHRpbWU6IGdldEhpZ2hSZXNJbk1zKGUudGltZXN0YW1wKSwgdHlwZTogZS5uYW1lIH0pKVxuICAgIC5zb3J0KChhLCBiKSA9PiBhLnRpbWUgLSBiLnRpbWUpO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlU3RlcFNlZ21lbnRzRnJvbVNwYW4oXG4gIHN0YXJ0TXM6IG51bWJlcixcbiAgZHVyYXRpb246IG51bWJlcixcbiAgZXZlbnRzOiBTcGFuRXZlbnRbXVxuKTogU2VnbWVudFtdIHtcbiAgY29uc3Qgc2VnbWVudHM6IFNlZ21lbnRbXSA9IFtdO1xuICBpZiAoZHVyYXRpb24gPD0gMCkgcmV0dXJuIHNlZ21lbnRzO1xuXG4gIGNvbnN0IG1hcmtzID0gc29ydGVkRXZlbnRNYXJrcyhldmVudHMsIFtcbiAgICAnc3RlcF9zdGFydGVkJyxcbiAgICAnc3RlcF9yZXRyeWluZycsXG4gICAgJ3N0ZXBfZmFpbGVkJyxcbiAgICAnc3RlcF9jb21wbGV0ZWQnLFxuICBdKTtcblxuICBpZiAobWFya3MubGVuZ3RoID09PSAwKSB7XG4gICAgc2VnbWVudHMucHVzaCh7IHN0YXJ0RnJhY3Rpb246IDAsIGVuZEZyYWN0aW9uOiAxLCBzdGF0dXM6ICdydW5uaW5nJyB9KTtcbiAgICByZXR1cm4gc2VnbWVudHM7XG4gIH1cblxuICBjb25zdCBmaXJzdEZyYWN0aW9uID0gdGltZVRvRnJhY3Rpb24obWFya3NbMF0udGltZSwgc3RhcnRNcywgZHVyYXRpb24pO1xuICBpZiAoZmlyc3RGcmFjdGlvbiA+IDAuMDAxKSB7XG4gICAgc2VnbWVudHMucHVzaCh7XG4gICAgICBzdGFydEZyYWN0aW9uOiAwLFxuICAgICAgZW5kRnJhY3Rpb246IGZpcnN0RnJhY3Rpb24sXG4gICAgICBzdGF0dXM6ICdxdWV1ZWQnLFxuICAgIH0pO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXJrcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IG1hcmsgPSBtYXJrc1tpXTtcbiAgICBjb25zdCBtYXJrRnJhYyA9IHRpbWVUb0ZyYWN0aW9uKG1hcmsudGltZSwgc3RhcnRNcywgZHVyYXRpb24pO1xuICAgIGNvbnN0IG5leHRNYXJrID0gbWFya3NbaSArIDFdO1xuICAgIGNvbnN0IG5leHRGcmFjID0gbmV4dE1hcmtcbiAgICAgID8gdGltZVRvRnJhY3Rpb24obmV4dE1hcmsudGltZSwgc3RhcnRNcywgZHVyYXRpb24pXG4gICAgICA6IDE7XG5cbiAgICBpZiAobWFyay50eXBlID09PSAnc3RlcF9zdGFydGVkJykge1xuICAgICAgaWYgKGkgPT09IG1hcmtzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgc2VnbWVudHMucHVzaCh7XG4gICAgICAgICAgc3RhcnRGcmFjdGlvbjogbWFya0ZyYWMsXG4gICAgICAgICAgZW5kRnJhY3Rpb246IDEsXG4gICAgICAgICAgc3RhdHVzOiAnc3VjY2VlZGVkJyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBuZXh0VHlwZSA9IG5leHRNYXJrLnR5cGU7XG4gICAgICAgIGNvbnN0IGF0dGVtcHRTdGF0dXM6IFNlZ21lbnRTdGF0dXMgPVxuICAgICAgICAgIG5leHRUeXBlID09PSAnc3RlcF9yZXRyeWluZycgfHwgbmV4dFR5cGUgPT09ICdzdGVwX2ZhaWxlZCdcbiAgICAgICAgICAgID8gJ2ZhaWxlZCdcbiAgICAgICAgICAgIDogbmV4dFR5cGUgPT09ICdzdGVwX2NvbXBsZXRlZCdcbiAgICAgICAgICAgICAgPyAnc3VjY2VlZGVkJ1xuICAgICAgICAgICAgICA6ICdydW5uaW5nJztcbiAgICAgICAgc2VnbWVudHMucHVzaCh7XG4gICAgICAgICAgc3RhcnRGcmFjdGlvbjogbWFya0ZyYWMsXG4gICAgICAgICAgZW5kRnJhY3Rpb246IG5leHRGcmFjLFxuICAgICAgICAgIHN0YXR1czogYXR0ZW1wdFN0YXR1cyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChtYXJrLnR5cGUgPT09ICdzdGVwX3JldHJ5aW5nJykge1xuICAgICAgc2VnbWVudHMucHVzaCh7XG4gICAgICAgIHN0YXJ0RnJhY3Rpb246IG1hcmtGcmFjLFxuICAgICAgICBlbmRGcmFjdGlvbjogbmV4dEZyYWMsXG4gICAgICAgIHN0YXR1czogJ3JldHJ5aW5nJyxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAobWFyay50eXBlID09PSAnc3RlcF9mYWlsZWQnKSB7XG4gICAgICBpZiAobWFya0ZyYWMgPCAwLjk5OSkge1xuICAgICAgICBzZWdtZW50cy5wdXNoKHtcbiAgICAgICAgICBzdGFydEZyYWN0aW9uOiBtYXJrRnJhYyxcbiAgICAgICAgICBlbmRGcmFjdGlvbjogMSxcbiAgICAgICAgICBzdGF0dXM6ICdmYWlsZWQnLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2VnbWVudHM7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVIb29rU2VnbWVudHNGcm9tU3BhbihcbiAgc3RhcnRNczogbnVtYmVyLFxuICBkdXJhdGlvbjogbnVtYmVyLFxuICBldmVudHM6IFNwYW5FdmVudFtdXG4pOiBTZWdtZW50W10ge1xuICBjb25zdCBzZWdtZW50czogU2VnbWVudFtdID0gW107XG4gIGlmIChkdXJhdGlvbiA8PSAwKSByZXR1cm4gc2VnbWVudHM7XG5cbiAgY29uc3Qgc29ydGVkID0gWy4uLmV2ZW50c11cbiAgICAubWFwKChlKSA9PiAoeyBuYW1lOiBlLm5hbWUsIHRpbWU6IGdldEhpZ2hSZXNJbk1zKGUudGltZXN0YW1wKSB9KSlcbiAgICAuc29ydCgoYSwgYikgPT4gYS50aW1lIC0gYi50aW1lKTtcblxuICBjb25zdCByZWNlaXZlZCA9IHNvcnRlZC5maW5kKChlKSA9PiBlLm5hbWUgPT09ICdob29rX3JlY2VpdmVkJyk7XG4gIGNvbnN0IGRpc3Bvc2VkID0gc29ydGVkLmZpbmQoKGUpID0+IGUubmFtZSA9PT0gJ2hvb2tfZGlzcG9zZWQnKTtcblxuICBpZiAoIXJlY2VpdmVkICYmICFkaXNwb3NlZCkge1xuICAgIHNlZ21lbnRzLnB1c2goeyBzdGFydEZyYWN0aW9uOiAwLCBlbmRGcmFjdGlvbjogMSwgc3RhdHVzOiAnd2FpdGluZycgfSk7XG4gICAgcmV0dXJuIHNlZ21lbnRzO1xuICB9XG5cbiAgY29uc3QgcmVjZWl2ZWRGcmFjID0gcmVjZWl2ZWRcbiAgICA/IHRpbWVUb0ZyYWN0aW9uKHJlY2VpdmVkLnRpbWUsIHN0YXJ0TXMsIGR1cmF0aW9uKVxuICAgIDogbnVsbDtcbiAgY29uc3QgZGlzcG9zZWRGcmFjID0gZGlzcG9zZWRcbiAgICA/IHRpbWVUb0ZyYWN0aW9uKGRpc3Bvc2VkLnRpbWUsIHN0YXJ0TXMsIGR1cmF0aW9uKVxuICAgIDogbnVsbDtcblxuICBpZiAocmVjZWl2ZWRGcmFjICE9PSBudWxsICYmIHJlY2VpdmVkRnJhYyA+IDAuMDAxKSB7XG4gICAgc2VnbWVudHMucHVzaCh7XG4gICAgICBzdGFydEZyYWN0aW9uOiAwLFxuICAgICAgZW5kRnJhY3Rpb246IHJlY2VpdmVkRnJhYyxcbiAgICAgIHN0YXR1czogJ3dhaXRpbmcnLFxuICAgIH0pO1xuICB9IGVsc2UgaWYgKHJlY2VpdmVkRnJhYyA9PT0gbnVsbCAmJiBkaXNwb3NlZEZyYWMgIT09IG51bGwpIHtcbiAgICBzZWdtZW50cy5wdXNoKHtcbiAgICAgIHN0YXJ0RnJhY3Rpb246IDAsXG4gICAgICBlbmRGcmFjdGlvbjogZGlzcG9zZWRGcmFjLFxuICAgICAgc3RhdHVzOiAnd2FpdGluZycsXG4gICAgfSk7XG4gIH1cblxuICBpZiAocmVjZWl2ZWRGcmFjICE9PSBudWxsKSB7XG4gICAgc2VnbWVudHMucHVzaCh7XG4gICAgICBzdGFydEZyYWN0aW9uOiByZWNlaXZlZEZyYWMsXG4gICAgICBlbmRGcmFjdGlvbjogZGlzcG9zZWRGcmFjID8/IDEsXG4gICAgICBzdGF0dXM6ICdyZWNlaXZlZCcsXG4gICAgfSk7XG4gIH1cblxuICBpZiAoZGlzcG9zZWRGcmFjICE9PSBudWxsICYmIGRpc3Bvc2VkRnJhYyA8IDAuOTk5KSB7XG4gICAgc2VnbWVudHMucHVzaCh7XG4gICAgICBzdGFydEZyYWN0aW9uOiBkaXNwb3NlZEZyYWMsXG4gICAgICBlbmRGcmFjdGlvbjogMSxcbiAgICAgIHN0YXR1czogJ3N1Y2NlZWRlZCcsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gc2VnbWVudHM7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVTbGVlcFNlZ21lbnRzRnJvbVNwYW4oXG4gIF9zdGFydE1zOiBudW1iZXIsXG4gIGR1cmF0aW9uOiBudW1iZXIsXG4gIF9ldmVudHM6IFNwYW5FdmVudFtdXG4pOiBTZWdtZW50W10ge1xuICBpZiAoZHVyYXRpb24gPD0gMCkgcmV0dXJuIFtdO1xuICByZXR1cm4gW3sgc3RhcnRGcmFjdGlvbjogMCwgZW5kRnJhY3Rpb246IDEsIHN0YXR1czogJ3NsZWVwaW5nJyB9XTtcbn1cblxuZnVuY3Rpb24gcnVuU2VnbWVudFN0YXR1cyhydW5TdGF0dXM6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFNlZ21lbnRTdGF0dXMge1xuICBpZiAocnVuU3RhdHVzID09PSAnZmFpbGVkJykgcmV0dXJuICdmYWlsZWQnO1xuICBpZiAocnVuU3RhdHVzID09PSAncnVubmluZycgfHwgcnVuU3RhdHVzID09PSAncGVuZGluZycpIHJldHVybiAncnVubmluZyc7XG4gIHJldHVybiAnY29tcGxldGVkJztcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVJ1blNlZ21lbnRzRnJvbVNwYW4oXG4gIHN0YXJ0TXM6IG51bWJlcixcbiAgZHVyYXRpb246IG51bWJlcixcbiAgYWN0aXZlU3RhcnRNczogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBldmVudHM6IFNwYW5FdmVudFtdLFxuICBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuKTogU2VnbWVudFtdIHtcbiAgY29uc3Qgc2VnbWVudHM6IFNlZ21lbnRbXSA9IFtdO1xuICBpZiAoZHVyYXRpb24gPD0gMCkgcmV0dXJuIHNlZ21lbnRzO1xuXG4gIGNvbnN0IHNvcnRlZCA9IFsuLi5ldmVudHNdXG4gICAgLm1hcCgoZSkgPT4gKHsgbmFtZTogZS5uYW1lLCB0aW1lOiBnZXRIaWdoUmVzSW5NcyhlLnRpbWVzdGFtcCkgfSkpXG4gICAgLnNvcnQoKGEsIGIpID0+IGEudGltZSAtIGIudGltZSk7XG5cbiAgY29uc3QgcnVuRGF0YSA9IGF0dHJpYnV0ZXM/LmRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHJ1blN0YXR1cyA9IHJ1bkRhdGE/LnN0YXR1cyBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3QgaGFzUnVuQ3JlYXRlZCA9IHNvcnRlZC5zb21lKChlKSA9PiBlLm5hbWUgPT09ICdydW5fY3JlYXRlZCcpO1xuXG4gIGlmICghaGFzUnVuQ3JlYXRlZCkge1xuICAgIHJldHVybiBjb21wdXRlVjFSdW5TZWdtZW50cyhzdGFydE1zLCBkdXJhdGlvbiwgYWN0aXZlU3RhcnRNcywgcnVuU3RhdHVzKTtcbiAgfVxuXG4gIGNvbnN0IGZhaWxlZEV2ZW50ID0gc29ydGVkLmZpbmQoKGUpID0+IGUubmFtZSA9PT0gJ3J1bl9mYWlsZWQnKTtcblxuICBsZXQgY3Vyc29yID0gMDtcbiAgaWYgKGFjdGl2ZVN0YXJ0TXMgIT09IHVuZGVmaW5lZCAmJiBhY3RpdmVTdGFydE1zID4gc3RhcnRNcykge1xuICAgIGNvbnN0IHF1ZXVlZEZyYWMgPSB0aW1lVG9GcmFjdGlvbihhY3RpdmVTdGFydE1zLCBzdGFydE1zLCBkdXJhdGlvbik7XG4gICAgaWYgKHF1ZXVlZEZyYWMgPiAwLjAwMSkge1xuICAgICAgc2VnbWVudHMucHVzaCh7XG4gICAgICAgIHN0YXJ0RnJhY3Rpb246IDAsXG4gICAgICAgIGVuZEZyYWN0aW9uOiBxdWV1ZWRGcmFjLFxuICAgICAgICBzdGF0dXM6ICdxdWV1ZWQnLFxuICAgICAgfSk7XG4gICAgICBjdXJzb3IgPSBxdWV1ZWRGcmFjO1xuICAgIH1cbiAgfVxuXG4gIHNlZ21lbnRzLnB1c2goe1xuICAgIHN0YXJ0RnJhY3Rpb246IGN1cnNvcixcbiAgICBlbmRGcmFjdGlvbjogMSxcbiAgICBzdGF0dXM6IGZhaWxlZEV2ZW50ID8gJ2ZhaWxlZCcgOiBydW5TZWdtZW50U3RhdHVzKHJ1blN0YXR1cyksXG4gIH0pO1xuXG4gIHJldHVybiBzZWdtZW50cztcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVYxUnVuU2VnbWVudHMoXG4gIHN0YXJ0TXM6IG51bWJlcixcbiAgZHVyYXRpb246IG51bWJlcixcbiAgYWN0aXZlU3RhcnRNczogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBydW5TdGF0dXM6IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogU2VnbWVudFtdIHtcbiAgY29uc3Qgc2VnbWVudHM6IFNlZ21lbnRbXSA9IFtdO1xuXG4gIGxldCBjdXJzb3IgPSAwO1xuICBpZiAoYWN0aXZlU3RhcnRNcyAhPT0gdW5kZWZpbmVkICYmIGFjdGl2ZVN0YXJ0TXMgPiBzdGFydE1zKSB7XG4gICAgY29uc3QgcXVldWVkRnJhYyA9IHRpbWVUb0ZyYWN0aW9uKGFjdGl2ZVN0YXJ0TXMsIHN0YXJ0TXMsIGR1cmF0aW9uKTtcbiAgICBpZiAocXVldWVkRnJhYyA+IDAuMDAxKSB7XG4gICAgICBzZWdtZW50cy5wdXNoKHtcbiAgICAgICAgc3RhcnRGcmFjdGlvbjogMCxcbiAgICAgICAgZW5kRnJhY3Rpb246IHF1ZXVlZEZyYWMsXG4gICAgICAgIHN0YXR1czogJ3F1ZXVlZCcsXG4gICAgICB9KTtcbiAgICAgIGN1cnNvciA9IHF1ZXVlZEZyYWM7XG4gICAgfVxuICB9XG5cbiAgc2VnbWVudHMucHVzaCh7XG4gICAgc3RhcnRGcmFjdGlvbjogY3Vyc29yLFxuICAgIGVuZEZyYWN0aW9uOiAxLFxuICAgIHN0YXR1czogcnVuU2VnbWVudFN0YXR1cyhydW5TdGF0dXMpLFxuICB9KTtcblxuICByZXR1cm4gc2VnbWVudHM7XG59XG5cbi8qKlxuICogQ29tcHV0ZSBldmVudC1iYXNlZCBzZWdtZW50cyBmb3IgYSBzcGFuLiBEaXNwYXRjaGVzIG9uIGBzcGFuLnJlc291cmNlYFxuICogdG8gdGhlIGFwcHJvcHJpYXRlIHJlc291cmNlLXR5cGUtc3BlY2lmaWMgc2VnbWVudCBidWlsZGVyLlxuICogUmV0dXJucyBhbiBlbXB0eSBhcnJheSBmb3IgZ2VuZXJpYyAobm9uLXdvcmtmbG93KSBzcGFucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVTcGFuU2VnbWVudHMoc3BhbjogU3Bhbik6IFNlZ21lbnRbXSB7XG4gIGNvbnN0IHN0YXJ0TXMgPSBnZXRIaWdoUmVzSW5NcyhzcGFuLnN0YXJ0VGltZSk7XG4gIGNvbnN0IGR1cmF0aW9uID0gZ2V0U3BhbkR1cmF0aW9uTXMoc3Bhbik7XG4gIGNvbnN0IGFjdGl2ZVN0YXJ0TXMgPSBzcGFuLmFjdGl2ZVN0YXJ0VGltZVxuICAgID8gZ2V0SGlnaFJlc0luTXMoc3Bhbi5hY3RpdmVTdGFydFRpbWUpXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgc3dpdGNoIChzcGFuLnJlc291cmNlKSB7XG4gICAgY2FzZSAnc3RlcCc6XG4gICAgICByZXR1cm4gY29tcHV0ZVN0ZXBTZWdtZW50c0Zyb21TcGFuKHN0YXJ0TXMsIGR1cmF0aW9uLCBzcGFuLmV2ZW50cyk7XG4gICAgY2FzZSAnaG9vayc6XG4gICAgICByZXR1cm4gY29tcHV0ZUhvb2tTZWdtZW50c0Zyb21TcGFuKHN0YXJ0TXMsIGR1cmF0aW9uLCBzcGFuLmV2ZW50cyk7XG4gICAgY2FzZSAnc2xlZXAnOlxuICAgICAgcmV0dXJuIGNvbXB1dGVTbGVlcFNlZ21lbnRzRnJvbVNwYW4oc3RhcnRNcywgZHVyYXRpb24sIHNwYW4uZXZlbnRzKTtcbiAgICBjYXNlICdydW4nOlxuICAgICAgcmV0dXJuIGNvbXB1dGVSdW5TZWdtZW50c0Zyb21TcGFuKFxuICAgICAgICBzdGFydE1zLFxuICAgICAgICBkdXJhdGlvbixcbiAgICAgICAgYWN0aXZlU3RhcnRNcyxcbiAgICAgICAgc3Bhbi5ldmVudHMsXG4gICAgICAgIHNwYW4uYXR0cmlidXRlc1xuICAgICAgKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFtdO1xuICB9XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attribute-panel.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/attribute-panel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"attribute-panel.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/attribute-panel.tsx"],"names":[],"mappings":"AA0VA,eAAO,MAAM,oBAAoB,GAAI,OAAO,OAAO,KAAG,MAOrD,CAAC;AAoBF,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAqPD,eAAO,MAAM,cAAc,GAAI,mDAM5B;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,mDAyEA,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,uHAW5B;IACD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kDAAkD;IAClD,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,+CAA+C;IAC/C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,kDAAkD;IAClD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,4CA6NA,CAAC"}
|