@projectcor/maia-components 2.11.100-4 → 2.11.100-5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,28 @@
1
- import React, { memo, useEffect } from 'react';
1
+ import React, { memo, useEffect, useMemo } from 'react';
2
2
  import { AgentActivityIndicator } from '../../atoms/AgentActivityIndicator';
3
- import { buildActivityFromExecutionSegment } from '../../../utils/streamTimeline';
3
+ import { collectRunningStepsFromTimeline } from '../../../utils/streamTimeline';
4
4
  import { getWritingStreamActivity } from '../../../utils/streamActivityMessages';
5
5
  import { useT } from '../../../hooks/useT';
6
6
  import { streamDebugLog } from '../../../utils/streamDebugLog';
7
7
  import { SCStreamExecutionSegment, SCStreamTurnTimeline, SCStreamTurnContentBlock } from './StreamAssistantTurnTimeline.styles';
8
8
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ var buildBottomTimelineActivity = function buildBottomTimelineActivity(runningSteps, waitingResponse, isWriting, initialActivity, t) {
10
+ if (runningSteps.length > 0) {
11
+ var activeStep = runningSteps[runningSteps.length - 1];
12
+ return {
13
+ phase: 'action',
14
+ message: activeStep.message,
15
+ executionSteps: runningSteps
16
+ };
17
+ }
18
+ if (isWriting) {
19
+ return (initialActivity === null || initialActivity === void 0 ? void 0 : initialActivity.phase) === 'writing' ? initialActivity : getWritingStreamActivity(t);
20
+ }
21
+ if (waitingResponse && initialActivity) {
22
+ return initialActivity;
23
+ }
24
+ return null;
25
+ };
9
26
  export var StreamAssistantTurnTimeline = /*#__PURE__*/memo(function (_ref) {
10
27
  var segments = _ref.segments,
11
28
  initialActivity = _ref.initialActivity,
@@ -14,76 +31,61 @@ export var StreamAssistantTurnTimeline = /*#__PURE__*/memo(function (_ref) {
14
31
  renderContentBlock = _ref.renderContentBlock;
15
32
  var _useT = useT(),
16
33
  t = _useT.t;
34
+ var runningSteps = useMemo(function () {
35
+ return collectRunningStepsFromTimeline(segments);
36
+ }, [segments]);
37
+ var contentSegments = useMemo(function () {
38
+ return segments.filter(function (segment) {
39
+ return segment.type === 'content';
40
+ });
41
+ }, [segments]);
42
+ var bottomActivity = useMemo(function () {
43
+ return buildBottomTimelineActivity(runningSteps, waitingResponse, isWriting, initialActivity, t);
44
+ }, [runningSteps, waitingResponse, isWriting, initialActivity, t]);
17
45
  useEffect(function () {
18
46
  if (!waitingResponse && !isWriting && segments.length === 0) return;
19
- var executionSegments = segments.filter(function (segment) {
20
- return segment.type === 'execution';
21
- });
22
47
  streamDebugLog('streamTimelineUI', 'render', {
23
48
  waitingResponse: waitingResponse,
24
49
  isWriting: isWriting,
25
50
  segmentCount: segments.length,
26
- executionSegmentCount: executionSegments.length,
51
+ contentSegmentCount: contentSegments.length,
52
+ runningStepCount: runningSteps.length,
27
53
  hasInitialActivity: Boolean(initialActivity),
28
54
  initialActivityMessage: initialActivity === null || initialActivity === void 0 ? void 0 : initialActivity.message,
29
- executionSteps: executionSegments.flatMap(function (segment) {
30
- return segment.type === 'execution' ? segment.steps.map(function (step) {
31
- return {
32
- node: step.node,
33
- toolName: step.toolName,
34
- status: step.status,
35
- message: step.message
36
- };
37
- }) : [];
55
+ bottomActivityPhase: bottomActivity === null || bottomActivity === void 0 ? void 0 : bottomActivity.phase,
56
+ runningSteps: runningSteps.map(function (step) {
57
+ return {
58
+ node: step.node,
59
+ toolName: step.toolName,
60
+ status: step.status,
61
+ message: step.message
62
+ };
38
63
  })
39
64
  });
40
- }, [segments, initialActivity, waitingResponse, isWriting]);
65
+ }, [segments, contentSegments.length, initialActivity, waitingResponse, isWriting, runningSteps, bottomActivity === null || bottomActivity === void 0 ? void 0 : bottomActivity.phase]);
41
66
  if (!waitingResponse && !isWriting && segments.length === 0) {
42
67
  return null;
43
68
  }
44
- var contentBlockIndex = 0;
45
- var executionSegments = segments.filter(function (segment) {
46
- return segment.type === 'execution';
47
- });
48
- var hasExecutionSegments = executionSegments.length > 0;
49
- var hasContentSegments = segments.some(function (segment) {
50
- return segment.type === 'content';
51
- });
52
- var preStreamActivity = waitingResponse && segments.length === 0 && initialActivity ? initialActivity : null;
53
- var writingOnlyActivity = isWriting && !hasExecutionSegments && hasContentSegments ? (initialActivity === null || initialActivity === void 0 ? void 0 : initialActivity.phase) === 'writing' ? initialActivity : getWritingStreamActivity(t) : null;
69
+ var hasContent = contentSegments.length > 0;
54
70
  return /*#__PURE__*/_jsxs(SCStreamTurnTimeline, {
55
- children: [preStreamActivity && /*#__PURE__*/_jsx(SCStreamExecutionSegment, {
56
- children: /*#__PURE__*/_jsx(AgentActivityIndicator, {
57
- activity: preStreamActivity
58
- })
59
- }), writingOnlyActivity && /*#__PURE__*/_jsx(SCStreamExecutionSegment, {
60
- children: /*#__PURE__*/_jsx(AgentActivityIndicator, {
61
- activity: writingOnlyActivity
62
- })
63
- }), segments.map(function (segment, index) {
64
- var previousSegment = index > 0 ? segments[index - 1] : undefined;
65
- if (segment.type === 'execution') {
66
- return /*#__PURE__*/_jsx(SCStreamExecutionSegment, {
67
- $afterContent: (previousSegment === null || previousSegment === void 0 ? void 0 : previousSegment.type) === 'content',
68
- children: /*#__PURE__*/_jsx(AgentActivityIndicator, {
69
- activity: buildActivityFromExecutionSegment(segment, t)
70
- })
71
- }, segment.id);
72
- }
73
- var isLastSegment = index === segments.length - 1;
74
- var isStreaming = isLastSegment && isWriting;
75
- var showAssistantHeader = contentBlockIndex === 0;
76
- contentBlockIndex += 1;
71
+ children: [contentSegments.map(function (segment, index) {
72
+ var isLastContent = index === contentSegments.length - 1;
73
+ var showAssistantHeader = index === 0;
77
74
  return /*#__PURE__*/_jsx(SCStreamTurnContentBlock, {
78
75
  children: renderContentBlock({
79
76
  segmentId: segment.id,
80
77
  text: segment.text,
81
- isStreaming: isStreaming,
78
+ isStreaming: isLastContent && isWriting,
82
79
  showAssistantHeader: showAssistantHeader
83
80
  })
84
81
  }, segment.id);
82
+ }), bottomActivity && /*#__PURE__*/_jsx(SCStreamExecutionSegment, {
83
+ $afterContent: hasContent,
84
+ children: /*#__PURE__*/_jsx(AgentActivityIndicator, {
85
+ activity: bottomActivity
86
+ })
85
87
  })]
86
88
  });
87
89
  });
88
90
  StreamAssistantTurnTimeline.displayName = 'StreamAssistantTurnTimeline';
89
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VFZmZlY3QiLCJBZ2VudEFjdGl2aXR5SW5kaWNhdG9yIiwiYnVpbGRBY3Rpdml0eUZyb21FeGVjdXRpb25TZWdtZW50IiwiZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5IiwidXNlVCIsInN0cmVhbURlYnVnTG9nIiwiU0NTdHJlYW1FeGVjdXRpb25TZWdtZW50IiwiU0NTdHJlYW1UdXJuVGltZWxpbmUiLCJTQ1N0cmVhbVR1cm5Db250ZW50QmxvY2siLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiU3RyZWFtQXNzaXN0YW50VHVyblRpbWVsaW5lIiwiX3JlZiIsInNlZ21lbnRzIiwiaW5pdGlhbEFjdGl2aXR5Iiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNXcml0aW5nIiwicmVuZGVyQ29udGVudEJsb2NrIiwiX3VzZVQiLCJ0IiwibGVuZ3RoIiwiZXhlY3V0aW9uU2VnbWVudHMiLCJmaWx0ZXIiLCJzZWdtZW50IiwidHlwZSIsInNlZ21lbnRDb3VudCIsImV4ZWN1dGlvblNlZ21lbnRDb3VudCIsImhhc0luaXRpYWxBY3Rpdml0eSIsIkJvb2xlYW4iLCJpbml0aWFsQWN0aXZpdHlNZXNzYWdlIiwibWVzc2FnZSIsImV4ZWN1dGlvblN0ZXBzIiwiZmxhdE1hcCIsInN0ZXBzIiwibWFwIiwic3RlcCIsIm5vZGUiLCJ0b29sTmFtZSIsInN0YXR1cyIsImNvbnRlbnRCbG9ja0luZGV4IiwiaGFzRXhlY3V0aW9uU2VnbWVudHMiLCJoYXNDb250ZW50U2VnbWVudHMiLCJzb21lIiwicHJlU3RyZWFtQWN0aXZpdHkiLCJ3cml0aW5nT25seUFjdGl2aXR5IiwicGhhc2UiLCJjaGlsZHJlbiIsImFjdGl2aXR5IiwiaW5kZXgiLCJwcmV2aW91c1NlZ21lbnQiLCJ1bmRlZmluZWQiLCIkYWZ0ZXJDb250ZW50IiwiaWQiLCJpc0xhc3RTZWdtZW50IiwiaXNTdHJlYW1pbmciLCJzaG93QXNzaXN0YW50SGVhZGVyIiwic2VnbWVudElkIiwidGV4dCIsImRpc3BsYXlOYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1N0cmVhbUFzc2lzdGFudFR1cm5UaW1lbGluZS9TdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBtZW1vLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgU3RyZWFtQWN0aXZpdHkgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9zdHJlYW1BY3Rpdml0eSdcbmltcG9ydCB0eXBlIHsgU3RyZWFtVGltZWxpbmVTZWdtZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvc3RyZWFtVGltZWxpbmUnXG5pbXBvcnQgeyBBZ2VudEFjdGl2aXR5SW5kaWNhdG9yIH0gZnJvbSAnLi4vLi4vYXRvbXMvQWdlbnRBY3Rpdml0eUluZGljYXRvcidcbmltcG9ydCB7IGJ1aWxkQWN0aXZpdHlGcm9tRXhlY3V0aW9uU2VnbWVudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3N0cmVhbVRpbWVsaW5lJ1xuaW1wb3J0IHsgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgc3RyZWFtRGVidWdMb2cgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zdHJlYW1EZWJ1Z0xvZydcbmltcG9ydCB7XG4gIFNDU3RyZWFtRXhlY3V0aW9uU2VnbWVudCxcbiAgU0NTdHJlYW1UdXJuVGltZWxpbmUsXG4gIFNDU3RyZWFtVHVybkNvbnRlbnRCbG9jayxcbn0gZnJvbSAnLi9TdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUuc3R5bGVzJ1xuXG5leHBvcnQgdHlwZSBTdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmVQcm9wcyA9IHtcbiAgc2VnbWVudHM6IFN0cmVhbVRpbWVsaW5lU2VnbWVudFtdXG4gIGluaXRpYWxBY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkgfCBudWxsXG4gIHdhaXRpbmdSZXNwb25zZTogYm9vbGVhblxuICBpc1dyaXRpbmc6IGJvb2xlYW5cbiAgcmVuZGVyQ29udGVudEJsb2NrOiAocGFyYW1zOiB7XG4gICAgc2VnbWVudElkOiBzdHJpbmdcbiAgICB0ZXh0OiBzdHJpbmdcbiAgICBpc1N0cmVhbWluZzogYm9vbGVhblxuICAgIHNob3dBc3Npc3RhbnRIZWFkZXI6IGJvb2xlYW5cbiAgfSkgPT4gUmVhY3QuUmVhY3ROb2RlXG59XG5cbmV4cG9ydCBjb25zdCBTdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUgPSBtZW1vKFxuICAoeyBzZWdtZW50cywgaW5pdGlhbEFjdGl2aXR5LCB3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZywgcmVuZGVyQ29udGVudEJsb2NrIH06IFN0cmVhbUFzc2lzdGFudFR1cm5UaW1lbGluZVByb3BzKSA9PiB7XG4gICAgY29uc3QgeyB0IH0gPSB1c2VUKClcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXdhaXRpbmdSZXNwb25zZSAmJiAhaXNXcml0aW5nICYmIHNlZ21lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG4gICAgICBjb25zdCBleGVjdXRpb25TZWdtZW50cyA9IHNlZ21lbnRzLmZpbHRlcihzZWdtZW50ID0+IHNlZ21lbnQudHlwZSA9PT0gJ2V4ZWN1dGlvbicpXG4gICAgICBzdHJlYW1EZWJ1Z0xvZygnc3RyZWFtVGltZWxpbmVVSScsICdyZW5kZXInLCB7XG4gICAgICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICAgICAgaXNXcml0aW5nLFxuICAgICAgICBzZWdtZW50Q291bnQ6IHNlZ21lbnRzLmxlbmd0aCxcbiAgICAgICAgZXhlY3V0aW9uU2VnbWVudENvdW50OiBleGVjdXRpb25TZWdtZW50cy5sZW5ndGgsXG4gICAgICAgIGhhc0luaXRpYWxBY3Rpdml0eTogQm9vbGVhbihpbml0aWFsQWN0aXZpdHkpLFxuICAgICAgICBpbml0aWFsQWN0aXZpdHlNZXNzYWdlOiBpbml0aWFsQWN0aXZpdHk/Lm1lc3NhZ2UsXG4gICAgICAgIGV4ZWN1dGlvblN0ZXBzOiBleGVjdXRpb25TZWdtZW50cy5mbGF0TWFwKHNlZ21lbnQgPT5cbiAgICAgICAgICBzZWdtZW50LnR5cGUgPT09ICdleGVjdXRpb24nXG4gICAgICAgICAgICA/IHNlZ21lbnQuc3RlcHMubWFwKHN0ZXAgPT4gKHtcbiAgICAgICAgICAgICAgICBub2RlOiBzdGVwLm5vZGUsXG4gICAgICAgICAgICAgICAgdG9vbE5hbWU6IHN0ZXAudG9vbE5hbWUsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiBzdGVwLnN0YXR1cyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBzdGVwLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgOiBbXVxuICAgICAgICApLFxuICAgICAgfSlcbiAgICB9LCBbc2VnbWVudHMsIGluaXRpYWxBY3Rpdml0eSwgd2FpdGluZ1Jlc3BvbnNlLCBpc1dyaXRpbmddKVxuXG4gICAgaWYgKCF3YWl0aW5nUmVzcG9uc2UgJiYgIWlzV3JpdGluZyAmJiBzZWdtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgbGV0IGNvbnRlbnRCbG9ja0luZGV4ID0gMFxuICAgIGNvbnN0IGV4ZWN1dGlvblNlZ21lbnRzID0gc2VnbWVudHMuZmlsdGVyKHNlZ21lbnQgPT4gc2VnbWVudC50eXBlID09PSAnZXhlY3V0aW9uJylcbiAgICBjb25zdCBoYXNFeGVjdXRpb25TZWdtZW50cyA9IGV4ZWN1dGlvblNlZ21lbnRzLmxlbmd0aCA+IDBcbiAgICBjb25zdCBoYXNDb250ZW50U2VnbWVudHMgPSBzZWdtZW50cy5zb21lKHNlZ21lbnQgPT4gc2VnbWVudC50eXBlID09PSAnY29udGVudCcpXG5cbiAgICBjb25zdCBwcmVTdHJlYW1BY3Rpdml0eSA9IHdhaXRpbmdSZXNwb25zZSAmJiBzZWdtZW50cy5sZW5ndGggPT09IDAgJiYgaW5pdGlhbEFjdGl2aXR5ID8gaW5pdGlhbEFjdGl2aXR5IDogbnVsbFxuXG4gICAgY29uc3Qgd3JpdGluZ09ubHlBY3Rpdml0eSA9XG4gICAgICBpc1dyaXRpbmcgJiYgIWhhc0V4ZWN1dGlvblNlZ21lbnRzICYmIGhhc0NvbnRlbnRTZWdtZW50c1xuICAgICAgICA/IGluaXRpYWxBY3Rpdml0eT8ucGhhc2UgPT09ICd3cml0aW5nJ1xuICAgICAgICAgID8gaW5pdGlhbEFjdGl2aXR5XG4gICAgICAgICAgOiBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkodClcbiAgICAgICAgOiBudWxsXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNDU3RyZWFtVHVyblRpbWVsaW5lPlxuICAgICAgICB7cHJlU3RyZWFtQWN0aXZpdHkgJiYgKFxuICAgICAgICAgIDxTQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQ+XG4gICAgICAgICAgICA8QWdlbnRBY3Rpdml0eUluZGljYXRvciBhY3Rpdml0eT17cHJlU3RyZWFtQWN0aXZpdHl9IC8+XG4gICAgICAgICAgPC9TQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQ+XG4gICAgICAgICl9XG4gICAgICAgIHt3cml0aW5nT25seUFjdGl2aXR5ICYmIChcbiAgICAgICAgICA8U0NTdHJlYW1FeGVjdXRpb25TZWdtZW50PlxuICAgICAgICAgICAgPEFnZW50QWN0aXZpdHlJbmRpY2F0b3IgYWN0aXZpdHk9e3dyaXRpbmdPbmx5QWN0aXZpdHl9IC8+XG4gICAgICAgICAgPC9TQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQ+XG4gICAgICAgICl9XG4gICAgICAgIHtzZWdtZW50cy5tYXAoKHNlZ21lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJldmlvdXNTZWdtZW50ID0gaW5kZXggPiAwID8gc2VnbWVudHNbaW5kZXggLSAxXSA6IHVuZGVmaW5lZFxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQudHlwZSA9PT0gJ2V4ZWN1dGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxTQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQga2V5PXtzZWdtZW50LmlkfSAkYWZ0ZXJDb250ZW50PXtwcmV2aW91c1NlZ21lbnQ/LnR5cGUgPT09ICdjb250ZW50J30+XG4gICAgICAgICAgICAgICAgPEFnZW50QWN0aXZpdHlJbmRpY2F0b3IgYWN0aXZpdHk9e2J1aWxkQWN0aXZpdHlGcm9tRXhlY3V0aW9uU2VnbWVudChzZWdtZW50LCB0KX0gLz5cbiAgICAgICAgICAgICAgPC9TQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQ+XG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgaXNMYXN0U2VnbWVudCA9IGluZGV4ID09PSBzZWdtZW50cy5sZW5ndGggLSAxXG4gICAgICAgICAgY29uc3QgaXNTdHJlYW1pbmcgPSBpc0xhc3RTZWdtZW50ICYmIGlzV3JpdGluZ1xuICAgICAgICAgIGNvbnN0IHNob3dBc3Npc3RhbnRIZWFkZXIgPSBjb250ZW50QmxvY2tJbmRleCA9PT0gMFxuICAgICAgICAgIGNvbnRlbnRCbG9ja0luZGV4ICs9IDFcblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8U0NTdHJlYW1UdXJuQ29udGVudEJsb2NrIGtleT17c2VnbWVudC5pZH0+XG4gICAgICAgICAgICAgIHtyZW5kZXJDb250ZW50QmxvY2soe1xuICAgICAgICAgICAgICAgIHNlZ21lbnRJZDogc2VnbWVudC5pZCxcbiAgICAgICAgICAgICAgICB0ZXh0OiBzZWdtZW50LnRleHQsXG4gICAgICAgICAgICAgICAgaXNTdHJlYW1pbmcsXG4gICAgICAgICAgICAgICAgc2hvd0Fzc2lzdGFudEhlYWRlcixcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICA8L1NDU3RyZWFtVHVybkNvbnRlbnRCbG9jaz5cbiAgICAgICAgICApXG4gICAgICAgIH0pfVxuICAgICAgPC9TQ1N0cmVhbVR1cm5UaW1lbGluZT5cbiAgICApXG4gIH1cbilcblxuU3RyZWFtQXNzaXN0YW50VHVyblRpbWVsaW5lLmRpc3BsYXlOYW1lID0gJ1N0cmVhbUFzc2lzdGFudFR1cm5UaW1lbGluZSdcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsS0FBSyxJQUFJQyxJQUFJLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBRzlDLFNBQVNDLHNCQUFzQixRQUFRLG9DQUFvQztBQUMzRSxTQUFTQyxpQ0FBaUMsUUFBUSwrQkFBK0I7QUFDakYsU0FBU0Msd0JBQXdCLFFBQVEsdUNBQXVDO0FBQ2hGLFNBQVNDLElBQUksUUFBUSxxQkFBcUI7QUFDMUMsU0FBU0MsY0FBYyxRQUFRLCtCQUErQjtBQUM5RCxTQUNFQyx3QkFBd0IsRUFDeEJDLG9CQUFvQixFQUNwQkMsd0JBQXdCLFFBQ25CLHNDQUFzQztBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQSxFQUFBQyxJQUFBLElBQUFDLEtBQUE7QUFlN0MsT0FBTyxJQUFNQywyQkFBMkIsZ0JBQUdkLElBQUksQ0FDN0MsVUFBQWUsSUFBQSxFQUFxSDtFQUFBLElBQWxIQyxRQUFRLEdBQUFELElBQUEsQ0FBUkMsUUFBUTtJQUFFQyxlQUFlLEdBQUFGLElBQUEsQ0FBZkUsZUFBZTtJQUFFQyxlQUFlLEdBQUFILElBQUEsQ0FBZkcsZUFBZTtJQUFFQyxTQUFTLEdBQUFKLElBQUEsQ0FBVEksU0FBUztJQUFFQyxrQkFBa0IsR0FBQUwsSUFBQSxDQUFsQkssa0JBQWtCO0VBQzFFLElBQUFDLEtBQUEsR0FBY2hCLElBQUksQ0FBQyxDQUFDO0lBQVppQixDQUFDLEdBQUFELEtBQUEsQ0FBREMsQ0FBQztFQUVUckIsU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJLENBQUNpQixlQUFlLElBQUksQ0FBQ0MsU0FBUyxJQUFJSCxRQUFRLENBQUNPLE1BQU0sS0FBSyxDQUFDLEVBQUU7SUFDN0QsSUFBTUMsaUJBQWlCLEdBQUdSLFFBQVEsQ0FBQ1MsTUFBTSxDQUFDLFVBQUFDLE9BQU87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
91
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwiQWdlbnRBY3Rpdml0eUluZGljYXRvciIsImNvbGxlY3RSdW5uaW5nU3RlcHNGcm9tVGltZWxpbmUiLCJnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkiLCJ1c2VUIiwic3RyZWFtRGVidWdMb2ciLCJTQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQiLCJTQ1N0cmVhbVR1cm5UaW1lbGluZSIsIlNDU3RyZWFtVHVybkNvbnRlbnRCbG9jayIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJidWlsZEJvdHRvbVRpbWVsaW5lQWN0aXZpdHkiLCJydW5uaW5nU3RlcHMiLCJ3YWl0aW5nUmVzcG9uc2UiLCJpc1dyaXRpbmciLCJpbml0aWFsQWN0aXZpdHkiLCJ0IiwibGVuZ3RoIiwiYWN0aXZlU3RlcCIsInBoYXNlIiwibWVzc2FnZSIsImV4ZWN1dGlvblN0ZXBzIiwiU3RyZWFtQXNzaXN0YW50VHVyblRpbWVsaW5lIiwiX3JlZiIsInNlZ21lbnRzIiwicmVuZGVyQ29udGVudEJsb2NrIiwiX3VzZVQiLCJjb250ZW50U2VnbWVudHMiLCJmaWx0ZXIiLCJzZWdtZW50IiwidHlwZSIsImJvdHRvbUFjdGl2aXR5Iiwic2VnbWVudENvdW50IiwiY29udGVudFNlZ21lbnRDb3VudCIsInJ1bm5pbmdTdGVwQ291bnQiLCJoYXNJbml0aWFsQWN0aXZpdHkiLCJCb29sZWFuIiwiaW5pdGlhbEFjdGl2aXR5TWVzc2FnZSIsImJvdHRvbUFjdGl2aXR5UGhhc2UiLCJtYXAiLCJzdGVwIiwibm9kZSIsInRvb2xOYW1lIiwic3RhdHVzIiwiaGFzQ29udGVudCIsImNoaWxkcmVuIiwiaW5kZXgiLCJpc0xhc3RDb250ZW50Iiwic2hvd0Fzc2lzdGFudEhlYWRlciIsInNlZ21lbnRJZCIsImlkIiwidGV4dCIsImlzU3RyZWFtaW5nIiwiJGFmdGVyQ29udGVudCIsImFjdGl2aXR5IiwiZGlzcGxheU5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvU3RyZWFtQXNzaXN0YW50VHVyblRpbWVsaW5lL1N0cmVhbUFzc2lzdGFudFR1cm5UaW1lbGluZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IG1lbW8sIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1UaW1lbGluZVNlZ21lbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9zdHJlYW1UaW1lbGluZSdcbmltcG9ydCB7IEFnZW50QWN0aXZpdHlJbmRpY2F0b3IgfSBmcm9tICcuLi8uLi9hdG9tcy9BZ2VudEFjdGl2aXR5SW5kaWNhdG9yJ1xuaW1wb3J0IHsgY29sbGVjdFJ1bm5pbmdTdGVwc0Zyb21UaW1lbGluZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3N0cmVhbVRpbWVsaW5lJ1xuaW1wb3J0IHsgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgc3RyZWFtRGVidWdMb2cgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zdHJlYW1EZWJ1Z0xvZydcbmltcG9ydCB7XG4gIFNDU3RyZWFtRXhlY3V0aW9uU2VnbWVudCxcbiAgU0NTdHJlYW1UdXJuVGltZWxpbmUsXG4gIFNDU3RyZWFtVHVybkNvbnRlbnRCbG9jayxcbn0gZnJvbSAnLi9TdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUuc3R5bGVzJ1xuXG5leHBvcnQgdHlwZSBTdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmVQcm9wcyA9IHtcbiAgc2VnbWVudHM6IFN0cmVhbVRpbWVsaW5lU2VnbWVudFtdXG4gIGluaXRpYWxBY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkgfCBudWxsXG4gIHdhaXRpbmdSZXNwb25zZTogYm9vbGVhblxuICBpc1dyaXRpbmc6IGJvb2xlYW5cbiAgcmVuZGVyQ29udGVudEJsb2NrOiAocGFyYW1zOiB7XG4gICAgc2VnbWVudElkOiBzdHJpbmdcbiAgICB0ZXh0OiBzdHJpbmdcbiAgICBpc1N0cmVhbWluZzogYm9vbGVhblxuICAgIHNob3dBc3Npc3RhbnRIZWFkZXI6IGJvb2xlYW5cbiAgfSkgPT4gUmVhY3QuUmVhY3ROb2RlXG59XG5cbmNvbnN0IGJ1aWxkQm90dG9tVGltZWxpbmVBY3Rpdml0eSA9IChcbiAgcnVubmluZ1N0ZXBzOiBSZXR1cm5UeXBlPHR5cGVvZiBjb2xsZWN0UnVubmluZ1N0ZXBzRnJvbVRpbWVsaW5lPixcbiAgd2FpdGluZ1Jlc3BvbnNlOiBib29sZWFuLFxuICBpc1dyaXRpbmc6IGJvb2xlYW4sXG4gIGluaXRpYWxBY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkgfCBudWxsLFxuICB0OiBSZXR1cm5UeXBlPHR5cGVvZiB1c2VUPlsndCddXG4pOiBTdHJlYW1BY3Rpdml0eSB8IG51bGwgPT4ge1xuICBpZiAocnVubmluZ1N0ZXBzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBhY3RpdmVTdGVwID0gcnVubmluZ1N0ZXBzW3J1bm5pbmdTdGVwcy5sZW5ndGggLSAxXVxuICAgIHJldHVybiB7XG4gICAgICBwaGFzZTogJ2FjdGlvbicsXG4gICAgICBtZXNzYWdlOiBhY3RpdmVTdGVwLm1lc3NhZ2UsXG4gICAgICBleGVjdXRpb25TdGVwczogcnVubmluZ1N0ZXBzLFxuICAgIH1cbiAgfVxuXG4gIGlmIChpc1dyaXRpbmcpIHtcbiAgICByZXR1cm4gaW5pdGlhbEFjdGl2aXR5Py5waGFzZSA9PT0gJ3dyaXRpbmcnID8gaW5pdGlhbEFjdGl2aXR5IDogZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHQpXG4gIH1cblxuICBpZiAod2FpdGluZ1Jlc3BvbnNlICYmIGluaXRpYWxBY3Rpdml0eSkge1xuICAgIHJldHVybiBpbml0aWFsQWN0aXZpdHlcbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBjb25zdCBTdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUgPSBtZW1vKFxuICAoeyBzZWdtZW50cywgaW5pdGlhbEFjdGl2aXR5LCB3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZywgcmVuZGVyQ29udGVudEJsb2NrIH06IFN0cmVhbUFzc2lzdGFudFR1cm5UaW1lbGluZVByb3BzKSA9PiB7XG4gICAgY29uc3QgeyB0IH0gPSB1c2VUKClcblxuICAgIGNvbnN0IHJ1bm5pbmdTdGVwcyA9IHVzZU1lbW8oKCkgPT4gY29sbGVjdFJ1bm5pbmdTdGVwc0Zyb21UaW1lbGluZShzZWdtZW50cyksIFtzZWdtZW50c10pXG4gICAgY29uc3QgY29udGVudFNlZ21lbnRzID0gdXNlTWVtbygoKSA9PiBzZWdtZW50cy5maWx0ZXIoc2VnbWVudCA9PiBzZWdtZW50LnR5cGUgPT09ICdjb250ZW50JyksIFtzZWdtZW50c10pXG4gICAgY29uc3QgYm90dG9tQWN0aXZpdHkgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gYnVpbGRCb3R0b21UaW1lbGluZUFjdGl2aXR5KHJ1bm5pbmdTdGVwcywgd2FpdGluZ1Jlc3BvbnNlLCBpc1dyaXRpbmcsIGluaXRpYWxBY3Rpdml0eSwgdCksXG4gICAgICBbcnVubmluZ1N0ZXBzLCB3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZywgaW5pdGlhbEFjdGl2aXR5LCB0XVxuICAgIClcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXdhaXRpbmdSZXNwb25zZSAmJiAhaXNXcml0aW5nICYmIHNlZ21lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG4gICAgICBzdHJlYW1EZWJ1Z0xvZygnc3RyZWFtVGltZWxpbmVVSScsICdyZW5kZXInLCB7XG4gICAgICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICAgICAgaXNXcml0aW5nLFxuICAgICAgICBzZWdtZW50Q291bnQ6IHNlZ21lbnRzLmxlbmd0aCxcbiAgICAgICAgY29udGVudFNlZ21lbnRDb3VudDogY29udGVudFNlZ21lbnRzLmxlbmd0aCxcbiAgICAgICAgcnVubmluZ1N0ZXBDb3VudDogcnVubmluZ1N0ZXBzLmxlbmd0aCxcbiAgICAgICAgaGFzSW5pdGlhbEFjdGl2aXR5OiBCb29sZWFuKGluaXRpYWxBY3Rpdml0eSksXG4gICAgICAgIGluaXRpYWxBY3Rpdml0eU1lc3NhZ2U6IGluaXRpYWxBY3Rpdml0eT8ubWVzc2FnZSxcbiAgICAgICAgYm90dG9tQWN0aXZpdHlQaGFzZTogYm90dG9tQWN0aXZpdHk/LnBoYXNlLFxuICAgICAgICBydW5uaW5nU3RlcHM6IHJ1bm5pbmdTdGVwcy5tYXAoc3RlcCA9PiAoe1xuICAgICAgICAgIG5vZGU6IHN0ZXAubm9kZSxcbiAgICAgICAgICB0b29sTmFtZTogc3RlcC50b29sTmFtZSxcbiAgICAgICAgICBzdGF0dXM6IHN0ZXAuc3RhdHVzLFxuICAgICAgICAgIG1lc3NhZ2U6IHN0ZXAubWVzc2FnZSxcbiAgICAgICAgfSkpLFxuICAgICAgfSlcbiAgICB9LCBbXG4gICAgICBzZWdtZW50cyxcbiAgICAgIGNvbnRlbnRTZWdtZW50cy5sZW5ndGgsXG4gICAgICBpbml0aWFsQWN0aXZpdHksXG4gICAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgICBpc1dyaXRpbmcsXG4gICAgICBydW5uaW5nU3RlcHMsXG4gICAgICBib3R0b21BY3Rpdml0eT8ucGhhc2UsXG4gICAgXSlcblxuICAgIGlmICghd2FpdGluZ1Jlc3BvbnNlICYmICFpc1dyaXRpbmcgJiYgc2VnbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IGhhc0NvbnRlbnQgPSBjb250ZW50U2VnbWVudHMubGVuZ3RoID4gMFxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ1N0cmVhbVR1cm5UaW1lbGluZT5cbiAgICAgICAge2NvbnRlbnRTZWdtZW50cy5tYXAoKHNlZ21lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNMYXN0Q29udGVudCA9IGluZGV4ID09PSBjb250ZW50U2VnbWVudHMubGVuZ3RoIC0gMVxuICAgICAgICAgIGNvbnN0IHNob3dBc3Npc3RhbnRIZWFkZXIgPSBpbmRleCA9PT0gMFxuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxTQ1N0cmVhbVR1cm5Db250ZW50QmxvY2sga2V5PXtzZWdtZW50LmlkfT5cbiAgICAgICAgICAgICAge3JlbmRlckNvbnRlbnRCbG9jayh7XG4gICAgICAgICAgICAgICAgc2VnbWVudElkOiBzZWdtZW50LmlkLFxuICAgICAgICAgICAgICAgIHRleHQ6IHNlZ21lbnQudGV4dCxcbiAgICAgICAgICAgICAgICBpc1N0cmVhbWluZzogaXNMYXN0Q29udGVudCAmJiBpc1dyaXRpbmcsXG4gICAgICAgICAgICAgICAgc2hvd0Fzc2lzdGFudEhlYWRlcixcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICA8L1NDU3RyZWFtVHVybkNvbnRlbnRCbG9jaz5cbiAgICAgICAgICApXG4gICAgICAgIH0pfVxuICAgICAgICB7Ym90dG9tQWN0aXZpdHkgJiYgKFxuICAgICAgICAgIDxTQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQgJGFmdGVyQ29udGVudD17aGFzQ29udGVudH0+XG4gICAgICAgICAgICA8QWdlbnRBY3Rpdml0eUluZGljYXRvciBhY3Rpdml0eT17Ym90dG9tQWN0aXZpdHl9IC8+XG4gICAgICAgICAgPC9TQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQ+XG4gICAgICAgICl9XG4gICAgICA8L1NDU3RyZWFtVHVyblRpbWVsaW5lPlxuICAgIClcbiAgfVxuKVxuXG5TdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUuZGlzcGxheU5hbWUgPSAnU3RyZWFtQXNzaXN0YW50VHVyblRpbWVsaW5lJ1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxLQUFLLElB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
@@ -87,6 +87,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
87
87
  streamTimelineStore.clear();
88
88
  setStreamActivity(null);
89
89
  setLoadingMessage(null);
90
+ setIsWriting(false);
90
91
  }, []);
91
92
  var beginStreamTimelineTurn = useCallback(function (turnId) {
92
93
  streamDebugLog('orchestrator', 'beginStreamTimelineTurn', {
@@ -193,6 +194,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
193
194
  }
194
195
  }, [applyStreamActivity, hitlExecutionContextRef, t]);
195
196
  var handleStreamWritingStarted = useCallback(function () {
197
+ setIsWriting(true);
196
198
  syncStreamTimelineContent(accumulatedContentRef.current);
197
199
  applyStreamActivityPreservingSteps(getWritingStreamActivity(t));
198
200
  }, [applyStreamActivityPreservingSteps, syncStreamTimelineContent, t]);
@@ -731,4 +733,4 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
731
733
  resetStreamExecutionTrace: resetStreamExecutionTrace
732
734
  };
733
735
  };
734
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlVHJhbnNsYXRpb24iLCJtYWlhIiwiU0VDVElPTlMiLCJBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyIsImFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UiLCJjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlIiwiY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZSIsImdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSIsImdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UiLCJnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5IiwiY29tcGxldGVBbGxFeGVjdXRpb25TdGVwcyIsImdldEFjdGl2ZUV4ZWN1dGlvblN0ZXAiLCJtZXJnZUFjdGl2aXR5V2l0aEV4ZWN1dGlvblN0ZXBzIiwicmVzZXRFeGVjdXRpb25TdGVwQ291bnRlciIsImFwcGVuZENvbnRlbnRUb1N0cmVhbVRpbWVsaW5lIiwiYXBwZW5kTm9kZVRvU3RyZWFtVGltZWxpbmUiLCJmaW5hbGl6ZVN0cmVhbVRpbWVsaW5lIiwic3RhcnRTdHJlYW1UaW1lbGluZVR1cm4iLCJzdHJlYW1UaW1lbGluZVN0b3JlIiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInN0cmVhbURlYnVnQWN0aXZpdHkiLCJzdHJlYW1EZWJ1Z0FwcHJvdmFsIiwic3RyZWFtRGVidWdMb2ciLCJzdHJlYW1EZWJ1Z0xvZ0hpdGxVaU92ZXJsYXAiLCJzdHJlYW1EZWJ1Z05vZGUiLCJzdHJlYW1EZWJ1Z1NzZSIsInN1bW1hcml6ZUhpdGxDb250ZXh0Iiwic3VtbWFyaXplVGltZWxpbmVTbmFwc2hvdCIsInVzZU9yY2hlc3RyYXRvclN0cmVhbSIsIl9yZWYiLCJvblN0cmVhbVVwZGF0ZSIsIm9uRmluaXNoU3RyZWFtIiwib25TdGFydFdyaXRpbmciLCJvblN0b3AiLCJvbkVycm9yIiwib25BcHByb3ZhbFJlcXVpcmVkIiwiaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYiLCJfdXNlVHJhbnNsYXRpb24iLCJjaGF0QUkiLCJ0IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiZGF0YSIsInNldERhdGEiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzTG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzV3JpdGluZyIsInNldElzV3JpdGluZyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibG9hZGluZ01lc3NhZ2UiLCJzZXRMb2FkaW5nTWVzc2FnZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic3RyZWFtQWN0aXZpdHkiLCJzZXRTdHJlYW1BY3Rpdml0eSIsImFib3J0Q29udHJvbGxlclJlZiIsImlzU3RvcHBlZFJlZiIsImFjdGl2aXR5TWVzc2FnZUluZGV4UmVmIiwic3RyZWFtQWN0aXZpdHlSZWYiLCJleGVjdXRpb25TdGVwc1JlZiIsImFjY3VtdWxhdGVkQ29udGVudFJlZiIsIm9uU3RyZWFtVXBkYXRlUmVmIiwib25GaW5pc2hTdHJlYW1SZWYiLCJvblN0YXJ0V3JpdGluZ1JlZiIsIm9uU3RvcFJlZiIsIm9uRXJyb3JSZWYiLCJvbkFwcHJvdmFsUmVxdWlyZWRSZWYiLCJjdXJyZW50IiwiY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUiLCJwcmV2aW91c1R1cm5JZCIsImdldFNuYXBzaG90IiwidHVybklkIiwiZXhlY3V0aW9uU3RlcENvdW50IiwibGVuZ3RoIiwiY2xlYXIiLCJiZWdpblN0cmVhbVRpbWVsaW5lVHVybiIsInJlcGxhY2UiLCJzeW5jU3RyZWFtVGltZWxpbmVDb250ZW50IiwiYWNjdW11bGF0ZWRUZXh0IiwibmV4dCIsImFwcGx5U3RyZWFtQWN0aXZpdHkiLCJhY3Rpdml0eSIsInByZXYiLCJwaGFzZSIsIm1lc3NhZ2UiLCJwcmVzZXJ2ZWRTdGVwcyIsImFwcGx5U3RyZWFtQWN0aXZpdHlQcmVzZXJ2aW5nU3RlcHMiLCJzdGVwcyIsInJlc2V0U3RyZWFtRXhlY3V0aW9uVHJhY2UiLCJmaW5hbGl6ZVN0cmVhbUV4ZWN1dGlvblRyYWNlIiwiX2FjdGl2ZVN0ZXAkbWVzc2FnZSIsImNvbXBsZXRlZFN0ZXBzIiwiYWN0aXZlU3RlcCIsImhhbmRsZVN0cmVhbU5vZGVFdmVudCIsInBheWxvYWQiLCJub2RlIiwic2tpcHBlZCIsInRocmVhZElkIiwidGhyZWFkX2lkIiwidW5kZWZpbmVkIiwiaGl0bENvbnRleHQiLCJ0aW1lbGluZU5leHQiLCJsYXN0RXhlY3V0aW9uIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic2VnbWVudHMiLCJyZXZlcnNlIiwiZmluZCIsInNlZ21lbnQiLCJ0eXBlIiwidXNlUmVzdW1pbmdGYWxsYmFjayIsInNjb3BlIiwic291cmNlIiwibm9kZVBheWxvYWQiLCJhY3Rpdml0eU1lc3NhZ2UiLCJ1aVN1cmZhY2VzIiwiaGFuZGxlU3RyZWFtV3JpdGluZ1N0YXJ0ZWQiLCJpbnRlcnZhbElkIiwid2luZG93Iiwic2V0SW50ZXJ2YWwiLCJfcHJldiRleGVjdXRpb25TdGVwcyIsImFkdmFuY2VkIiwibmV4dEluZGV4IiwibWVyZ2VkQWN0aXZpdHkiLCJfb2JqZWN0U3ByZWFkIiwiZXhlY3V0aW9uU3RlcHMiLCJjbGVhckludGVydmFsIiwiaGFuZGxlU1NFU3RyZWFtIiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInJlc3BvbnNlIiwiX29uRXJyb3JSZWYkY3VycmVudCIsIl9kYXRhJGVycm9yIiwiX2RhdGEkZXJyb3IyIiwicGVuZGluZ0NvbnRlbnQiLCJ0aHJvdHRsZVRpbWVyIiwic3RyZWFtU2V0dGxlZCIsImVtaXRUaHJvdHRsZWQiLCJmbHVzaFBlbmRpbmciLCJfcmVzcG9uc2UkYm9keSIsInJlYWRlciIsImRlY29kZXIiLCJidWZmZXIiLCJhY2N1bXVsYXRlZENvbnRlbnQiLCJoYXNTdGFydGVkV3JpdGluZyIsImVuc3VyZVdyaXRpbmdTdGFydGVkIiwiYXBwbHlTdHJlYW1DaHVuayIsImFwcGx5U3RyZWFtQ29tcGxldGUiLCJfeWllbGQkcmVhZGVyJHJlYWQiLCJkb25lIiwidmFsdWUiLCJsaW5lcyIsIl9pdGVyYXRvciIsIl9zdGVwIiwibGluZSIsIl9saW5lJHNwbGl0IiwiX2xpbmUkc3BsaXQyIiwiZXZlbnRMaW5lIiwiZGF0YUxpbmUiLCJldmVudFR5cGUiLCJkYXRhU3RyIiwiX2RhdGEiLCJjaHVuayIsIl9jaHVuayIsIl9vbkFwcHJvdmFsUmVxdWlyZWRSZSIsImlzTWFudWFsQXBwcm92YWwiLCJtYW51YWxBY3Rpdml0eSIsIl9vbkVycm9yUmVmJGN1cnJlbnQyIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJ3cmFwIiwiX2NvbnRleHQiLCJjb250ZW50Iiwic2V0VGltZW91dCIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdSIsInRvRW1pdCIsImNhbGwiLCJjbGVhclRpbWVvdXQiLCJfb25TdHJlYW1VcGRhdGVSZWYkY3UyIiwiYm9keSIsImdldFJlYWRlciIsIkVycm9yIiwiVGV4dERlY29kZXIiLCJfb25TdGFydFdyaXRpbmdSZWYkY3UiLCJhY2N1bXVsYXRlZExlbmd0aCIsIl9wYXlsb2FkJGFnZW50X2lkIiwiX3N1YmFnZW50UmF3JHJlc29sdmVkIiwiX29uRmluaXNoU3RyZWFtUmVmJGN1IiwiZmluYWxDb250ZW50IiwiZmluYWxDb250ZW50TGVuZ3RoIiwidGltZWxpbmUiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwibWVtb3J5X3Nlc3Npb25faWQiLCJhdHRhY2htZW50cyIsIkFycmF5IiwiaXNBcnJheSIsInN1Z2dlc3Rpb25zIiwic3VnZ2VzdF9yZXBseSIsImFnZW50SWRSYXciLCJhZ2VudF9pZCIsImFnZW50SWQiLCJjb21wbGV0ZWRBZ2VudElkIiwiU3RyaW5nIiwidHJpbSIsInN1YmFnZW50UmF3Iiwic3ViYWdlbnQiLCJyZXNvbHZlZENvbnRleHQiLCJyZXNvbHZlZF9jb250ZXh0IiwiY2FuY2VsIiwiYWJydXB0IiwicmVhZCIsInNlbnQiLCJkZWNvZGUiLCJzdHJlYW0iLCJzcGxpdCIsInBvcCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwicyIsIm4iLCJKU09OIiwicGFyc2UiLCJ0b29sX25hbWUiLCJtZXNzYWdlUHJldmlldyIsInNsaWNlIiwibWFudWFsQXBwcm92YWxEZXRlY3RlZCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsInBlbmRpbmdUb29scyIsInBlbmRpbmdfYWN0aW9ucyIsIm1hcCIsImEiLCJ3aWxsQ2xlYXJMb2FkaW5nU3RhdGUiLCJjb25zb2xlIiwiZXJyb3IiLCJ3YXJuIiwiZSIsImYiLCJmaW5pc2giLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImFza01haWEiLCJfcmVmNCIsIl9jYWxsZWUyIiwiX3JlZjMiLCJoaXN0b3J5IiwicHJvamVjdElkIiwibGFuZyIsInVzZXJJZCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY29tcGFueUlkIiwiY2hhdElkIiwibWVzc2FnZUlkIiwiY2xpZW50SWQiLCJjbGllbnROYW1lIiwiZmVlSWQiLCJhZ2VudE5hbWUiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsInByb2plY3ROYW1lIiwidGFza0lkIiwidGFza05hbWUiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwiZnVhSWQiLCJzY0lkIiwiYWdlbnRFbnRpdHkiLCJhZ2VudFR5cGUiLCJjb250ZXh0TWVzc2FnZSIsImNvbnRleHREYXRhIiwiX2F0dGFjaG1lbnRzJGxlbmd0aCIsIl9hYm9ydENvbnRyb2xsZXJSZWYkYyIsImluaXRpYWxBY3Rpdml0eSIsIl9vbkVycm9yUmVmJGN1cnJlbnQzIiwiX3Q1IiwiX2NvbnRleHQyIiwiaGFzQXR0YWNobWVudHMiLCJCb29sZWFuIiwiYXR0YWNobWVudHNDb3VudCIsIkFib3J0Q29udHJvbGxlciIsIk9yY2hlc3RyYXRvciIsIm9yY2hlc3RyYXRvciIsImlucHV0Iiwic2lnbmFsIiwiX3gyIiwic3RvcFN0cmVhbWluZyIsIl9vblN0b3BSZWYkY3VycmVudCIsImFib3J0IiwiYWJvcnRTdHJlYW1TaWxlbnRseSIsInVwZGF0ZVN0cmVhbUFjdGl2aXR5IiwicmVzZXQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlT3JjaGVzdHJhdG9yU3RyZWFtL3VzZU9yY2hlc3RyYXRvclN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zdGFudC1jb25kaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IENoYXRIaXN0b3J5IH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IEFnZW50RW50aXR5LCBBZ2VudFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IENvbnRleHRNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBVc2VPcmNoZXN0cmF0b3JTdHJlYW1Qcm9wcywgUmVzb2x2ZWRDb250ZXh0IH0gZnJvbSAnLi91c2VPcmNoZXN0cmF0b3JTdHJlYW0uaW50ZXJmYWNlJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSwgU3RyZWFtRXhlY3V0aW9uU3RlcCwgU3RyZWFtTm9kZUV2ZW50UGF5bG9hZCB9IGZyb20gJy4uLy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHtcbiAgQUNUSVZJVFlfTUVTU0FHRV9ST1RBVEVfTVMsXG4gIGFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UsXG4gIGNhbkFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UsXG4gIGNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UsXG4gIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSxcbiAgZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSxcbiAgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHksXG59IGZyb20gJy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQge1xuICBjb21wbGV0ZUFsbEV4ZWN1dGlvblN0ZXBzLFxuICBmaW5hbGl6ZUV4ZWN1dGlvblN0ZXBzRm9yV3JpdGluZyxcbiAgZ2V0QWN0aXZlRXhlY3V0aW9uU3RlcCxcbiAgbWVyZ2VBY3Rpdml0eVdpdGhFeGVjdXRpb25TdGVwcyxcbiAgcHVzaEV4ZWN1dGlvblN0ZXBGcm9tTm9kZSxcbiAgcmVzZXRFeGVjdXRpb25TdGVwQ291bnRlcixcbn0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtRXhlY3V0aW9uU3RlcHMnXG5pbXBvcnQge1xuICBhcHBlbmRDb250ZW50VG9TdHJlYW1UaW1lbGluZSxcbiAgYXBwZW5kTm9kZVRvU3RyZWFtVGltZWxpbmUsXG4gIGZpbmFsaXplU3RyZWFtVGltZWxpbmUsXG4gIHN0YXJ0U3RyZWFtVGltZWxpbmVUdXJuLFxufSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1UaW1lbGluZSdcbmltcG9ydCB7IHN0cmVhbVRpbWVsaW5lU3RvcmUgfSBmcm9tICcuLi91c2VTdHJlYW1UaW1lbGluZS9zdHJlYW1UaW1lbGluZVN0b3JlJ1xuaW1wb3J0IHsgaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkLCBtZXJnZVN0cmVhbUNodW5rIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3NlU3RyZWFtQ29udGVudCdcbmltcG9ydCB7XG4gIHN0cmVhbURlYnVnQWN0aXZpdHksXG4gIHN0cmVhbURlYnVnQXBwcm92YWwsXG4gIHN0cmVhbURlYnVnTG9nLFxuICBzdHJlYW1EZWJ1Z0xvZ0hpdGxVaU92ZXJsYXAsXG4gIHN0cmVhbURlYnVnTm9kZSxcbiAgc3RyZWFtRGVidWdTc2UsXG4gIHN1bW1hcml6ZUhpdGxDb250ZXh0LFxuICBzdW1tYXJpemVUaW1lbGluZVNuYXBzaG90LFxufSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1EZWJ1Z0xvZydcblxudHlwZSBTdWJhZ2VudFJhdyA9IHsgbmFtZT86IHN0cmluZzsgcmVzb2x2ZWRfY29udGV4dD86IFJlc29sdmVkQ29udGV4dCB8IG51bGwgfSB8IG51bGwgfCB1bmRlZmluZWRcblxuZXhwb3J0IGNvbnN0IHVzZU9yY2hlc3RyYXRvclN0cmVhbSA9ICh7XG4gIG9uU3RyZWFtVXBkYXRlLFxuICBvbkZpbmlzaFN0cmVhbSxcbiAgb25TdGFydFdyaXRpbmcsXG4gIG9uU3RvcCxcbiAgb25FcnJvcixcbiAgb25BcHByb3ZhbFJlcXVpcmVkLFxuICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZixcbn06IFVzZU9yY2hlc3RyYXRvclN0cmVhbVByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oW1NFQ1RJT05TLmNoYXRBSV0pXG4gIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1dyaXRpbmcsIHNldElzV3JpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2xvYWRpbmdNZXNzYWdlLCBzZXRMb2FkaW5nTWVzc2FnZV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbc3RyZWFtQWN0aXZpdHksIHNldFN0cmVhbUFjdGl2aXR5XSA9IHVzZVN0YXRlPFN0cmVhbUFjdGl2aXR5IHwgbnVsbD4obnVsbClcbiAgY29uc3QgYWJvcnRDb250cm9sbGVyUmVmID0gdXNlUmVmPEFib3J0Q29udHJvbGxlciB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzU3RvcHBlZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYgPSB1c2VSZWYoMClcbiAgY29uc3Qgc3RyZWFtQWN0aXZpdHlSZWYgPSB1c2VSZWY8U3RyZWFtQWN0aXZpdHkgfCBudWxsPihudWxsKVxuICBjb25zdCBleGVjdXRpb25TdGVwc1JlZiA9IHVzZVJlZjxTdHJlYW1FeGVjdXRpb25TdGVwW10+KFtdKVxuICBjb25zdCBhY2N1bXVsYXRlZENvbnRlbnRSZWYgPSB1c2VSZWYoJycpXG5cbiAgY29uc3Qgb25TdHJlYW1VcGRhdGVSZWYgPSB1c2VSZWYob25TdHJlYW1VcGRhdGUpXG4gIGNvbnN0IG9uRmluaXNoU3RyZWFtUmVmID0gdXNlUmVmKG9uRmluaXNoU3RyZWFtKVxuICBjb25zdCBvblN0YXJ0V3JpdGluZ1JlZiA9IHVzZVJlZihvblN0YXJ0V3JpdGluZylcbiAgY29uc3Qgb25TdG9wUmVmID0gdXNlUmVmKG9uU3RvcClcbiAgY29uc3Qgb25FcnJvclJlZiA9IHVzZVJlZihvbkVycm9yKVxuICBjb25zdCBvbkFwcHJvdmFsUmVxdWlyZWRSZWYgPSB1c2VSZWYob25BcHByb3ZhbFJlcXVpcmVkKVxuXG4gIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQgPSBvblN0cmVhbVVwZGF0ZVxuICBvbkZpbmlzaFN0cmVhbVJlZi5jdXJyZW50ID0gb25GaW5pc2hTdHJlYW1cbiAgb25TdGFydFdyaXRpbmdSZWYuY3VycmVudCA9IG9uU3RhcnRXcml0aW5nXG4gIG9uU3RvcFJlZi5jdXJyZW50ID0gb25TdG9wXG4gIG9uRXJyb3JSZWYuY3VycmVudCA9IG9uRXJyb3JcbiAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQgPSBvbkFwcHJvdmFsUmVxdWlyZWRcblxuICBjb25zdCBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzdHJlYW1EZWJ1Z0xvZygnb3JjaGVzdHJhdG9yJywgJ2NsZWFyU3RyZWFtTG9hZGluZ1N0YXRlJywge1xuICAgICAgcHJldmlvdXNUdXJuSWQ6IHN0cmVhbVRpbWVsaW5lU3RvcmUuZ2V0U25hcHNob3QoKS50dXJuSWQsXG4gICAgICBleGVjdXRpb25TdGVwQ291bnQ6IGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnQubGVuZ3RoLFxuICAgIH0pXG4gICAgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCA9IDBcbiAgICBzdHJlYW1BY3Rpdml0eVJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnQgPSBbXVxuICAgIGFjY3VtdWxhdGVkQ29udGVudFJlZi5jdXJyZW50ID0gJydcbiAgICByZXNldEV4ZWN1dGlvblN0ZXBDb3VudGVyKClcbiAgICBzdHJlYW1UaW1lbGluZVN0b3JlLmNsZWFyKClcbiAgICBzZXRTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGJlZ2luU3RyZWFtVGltZWxpbmVUdXJuID0gdXNlQ2FsbGJhY2soKHR1cm5JZDogc3RyaW5nKSA9PiB7XG4gICAgc3RyZWFtRGVidWdMb2coJ29yY2hlc3RyYXRvcicsICdiZWdpblN0cmVhbVRpbWVsaW5lVHVybicsIHsgdHVybklkIH0pXG4gICAgYWNjdW11bGF0ZWRDb250ZW50UmVmLmN1cnJlbnQgPSAnJ1xuICAgIGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnQgPSBbXVxuICAgIHJlc2V0RXhlY3V0aW9uU3RlcENvdW50ZXIoKVxuICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShzdGFydFN0cmVhbVRpbWVsaW5lVHVybih0dXJuSWQpKVxuICB9LCBbXSlcblxuICBjb25zdCBzeW5jU3RyZWFtVGltZWxpbmVDb250ZW50ID0gdXNlQ2FsbGJhY2soKGFjY3VtdWxhdGVkVGV4dDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbmV4dCA9IGFwcGVuZENvbnRlbnRUb1N0cmVhbVRpbWVsaW5lKHN0cmVhbVRpbWVsaW5lU3RvcmUuZ2V0U25hcHNob3QoKSwgYWNjdW11bGF0ZWRUZXh0KVxuICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShuZXh0KVxuICB9LCBbXSlcblxuICBjb25zdCBhcHBseVN0cmVhbUFjdGl2aXR5ID0gdXNlQ2FsbGJhY2soKGFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSkgPT4ge1xuICAgIGNvbnN0IHByZXYgPSBzdHJlYW1BY3Rpdml0eVJlZi5jdXJyZW50XG4gICAgaWYgKHByZXY/LnBoYXNlID09PSBhY3Rpdml0eS5waGFzZSAmJiBjYW5Sb3RhdGVTdHJlYW1BY3Rpdml0eVBoYXNlKGFjdGl2aXR5LnBoYXNlKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChwcmV2Py5waGFzZSAhPT0gYWN0aXZpdHkucGhhc2UpIHtcbiAgICAgIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQgPSAwXG4gICAgfVxuICAgIHN0cmVhbUFjdGl2aXR5UmVmLmN1cnJlbnQgPSBhY3Rpdml0eVxuICAgIHNldFN0cmVhbUFjdGl2aXR5KGFjdGl2aXR5KVxuICAgIHNldExvYWRpbmdNZXNzYWdlKGFjdGl2aXR5Lm1lc3NhZ2UpXG4gICAgc3RyZWFtRGVidWdBY3Rpdml0eSgnb3JjaGVzdHJhdG9yJywgJ2FwcGx5U3RyZWFtQWN0aXZpdHknLCBhY3Rpdml0eSwge1xuICAgICAgcHJlc2VydmVkU3RlcHM6IGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnQubGVuZ3RoLFxuICAgIH0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGFwcGx5U3RyZWFtQWN0aXZpdHlQcmVzZXJ2aW5nU3RlcHMgPSB1c2VDYWxsYmFjayhcbiAgICAoYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5KSA9PiB7XG4gICAgICBjb25zdCBzdGVwcyA9IGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnRcbiAgICAgIGlmIChzdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkobWVyZ2VBY3Rpdml0eVdpdGhFeGVjdXRpb25TdGVwcyhhY3Rpdml0eSwgc3RlcHMpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkoYWN0aXZpdHkpXG4gICAgfSxcbiAgICBbYXBwbHlTdHJlYW1BY3Rpdml0eV1cbiAgKVxuXG4gIGNvbnN0IHJlc2V0U3RyZWFtRXhlY3V0aW9uVHJhY2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZXhlY3V0aW9uU3RlcHNSZWYuY3VycmVudCA9IFtdXG4gICAgcmVzZXRFeGVjdXRpb25TdGVwQ291bnRlcigpXG4gIH0sIFtdKVxuXG4gIC8qKiBNYXJjYSBlbCByYXN0cm8gY29tbyBjb21wbGV0YWRvIHkgbG8gbWFudGllbmUgdmlzaWJsZSAobm8gbGltcGlhIGhhc3RhIGVsIHByw7N4aW1vIHR1cm5vKS4gKi9cbiAgY29uc3QgZmluYWxpemVTdHJlYW1FeGVjdXRpb25UcmFjZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBjb21wbGV0ZWRTdGVwcyA9IGNvbXBsZXRlQWxsRXhlY3V0aW9uU3RlcHMoZXhlY3V0aW9uU3RlcHNSZWYuY3VycmVudClcbiAgICBleGVjdXRpb25TdGVwc1JlZi5jdXJyZW50ID0gY29tcGxldGVkU3RlcHNcblxuICAgIGlmIChjb21wbGV0ZWRTdGVwcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZVN0ZXAgPSBnZXRBY3RpdmVFeGVjdXRpb25TdGVwKGNvbXBsZXRlZFN0ZXBzKVxuICAgIGNvbnN0IGFjdGl2aXR5ID0gbWVyZ2VBY3Rpdml0eVdpdGhFeGVjdXRpb25TdGVwcyhcbiAgICAgIHtcbiAgICAgICAgcGhhc2U6ICd3cml0aW5nJyxcbiAgICAgICAgbWVzc2FnZTogYWN0aXZlU3RlcD8ubWVzc2FnZSA/PyBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkodCkubWVzc2FnZSxcbiAgICAgIH0sXG4gICAgICBjb21wbGV0ZWRTdGVwc1xuICAgIClcbiAgICBzdHJlYW1BY3Rpdml0eVJlZi5jdXJyZW50ID0gYWN0aXZpdHlcbiAgICBzZXRTdHJlYW1BY3Rpdml0eShhY3Rpdml0eSlcbiAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKVxuICB9LCBbY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUsIHRdKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbU5vZGVFdmVudCA9IHVzZUNhbGxiYWNrKFxuICAgIChwYXlsb2FkOiBTdHJlYW1Ob2RlRXZlbnRQYXlsb2FkLCBhY2N1bXVsYXRlZFRleHQ/OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChwYXlsb2FkLm5vZGUgPT09ICdhZ2VudF90cmFuc2ZlcicpIHtcbiAgICAgICAgc3RyZWFtRGVidWdOb2RlKCdvcmNoZXN0cmF0b3InLCBwYXlsb2FkLCB7IHNraXBwZWQ6ICdhZ2VudF90cmFuc2ZlcicgfSlcbiAgICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmICghcGF5bG9hZC5tZXNzYWdlIHx8IHR5cGVvZiBwYXlsb2FkLm1lc3NhZ2UgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHN0cmVhbURlYnVnTm9kZSgnb3JjaGVzdHJhdG9yJywgcGF5bG9hZCwgeyBza2lwcGVkOiAnbWlzc2luZ19tZXNzYWdlJyB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgY29uc3QgdGhyZWFkSWQgPSB0eXBlb2YgcGF5bG9hZC50aHJlYWRfaWQgPT09ICdzdHJpbmcnID8gcGF5bG9hZC50aHJlYWRfaWQgOiB1bmRlZmluZWRcbiAgICAgIGNvbnN0IGhpdGxDb250ZXh0ID0gaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWY/LmN1cnJlbnRcbiAgICAgIHN0cmVhbURlYnVnTm9kZSgnb3JjaGVzdHJhdG9yJywgcGF5bG9hZCwge1xuICAgICAgICB0aHJlYWRJZCxcbiAgICAgICAgaGl0bENvbnRleHQ6IGhpdGxDb250ZXh0ID8gc3VtbWFyaXplSGl0bENvbnRleHQoaGl0bENvbnRleHQpIDogbnVsbCxcbiAgICAgIH0pXG4gICAgICBjb25zdCB0aW1lbGluZU5leHQgPSBhcHBlbmROb2RlVG9TdHJlYW1UaW1lbGluZShcbiAgICAgICAgc3RyZWFtVGltZWxpbmVTdG9yZS5nZXRTbmFwc2hvdCgpLFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgICBhY2N1bXVsYXRlZFRleHQgPz8gYWNjdW11bGF0ZWRDb250ZW50UmVmLmN1cnJlbnQsXG4gICAgICAgIHQsXG4gICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmPy5jdXJyZW50LFxuICAgICAgICB0aHJlYWRJZFxuICAgICAgKVxuICAgICAgc3RyZWFtVGltZWxpbmVTdG9yZS5yZXBsYWNlKHRpbWVsaW5lTmV4dClcblxuICAgICAgY29uc3QgbGFzdEV4ZWN1dGlvbiA9IFsuLi50aW1lbGluZU5leHQuc2VnbWVudHNdLnJldmVyc2UoKS5maW5kKHNlZ21lbnQgPT4gc2VnbWVudC50eXBlID09PSAnZXhlY3V0aW9uJylcbiAgICAgIGlmIChsYXN0RXhlY3V0aW9uPy50eXBlID09PSAnZXhlY3V0aW9uJykge1xuICAgICAgICBleGVjdXRpb25TdGVwc1JlZi5jdXJyZW50ID0gbGFzdEV4ZWN1dGlvbi5zdGVwc1xuICAgICAgICBjb25zdCBhY3Rpdml0eSA9IHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5KFxuICAgICAgICAgIHBheWxvYWQubWVzc2FnZSxcbiAgICAgICAgICB0LFxuICAgICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmPy5jdXJyZW50LFxuICAgICAgICAgIHRocmVhZElkLFxuICAgICAgICAgIHBheWxvYWQubm9kZSA9PT0gJ3Jlc3VtaW5nJyA/IHsgdXNlUmVzdW1pbmdGYWxsYmFjazogdHJ1ZSB9IDogdW5kZWZpbmVkXG4gICAgICAgIClcbiAgICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eShtZXJnZUFjdGl2aXR5V2l0aEV4ZWN1dGlvblN0ZXBzKGFjdGl2aXR5LCBsYXN0RXhlY3V0aW9uLnN0ZXBzKSlcbiAgICAgICAgc3RyZWFtRGVidWdBY3Rpdml0eSgnb3JjaGVzdHJhdG9yJywgJ25vZGU6YWN0aXZpdHknLCBhY3Rpdml0eSwge1xuICAgICAgICAgIGV4ZWN1dGlvblN0ZXBDb3VudDogbGFzdEV4ZWN1dGlvbi5zdGVwcy5sZW5ndGgsXG4gICAgICAgIH0pXG4gICAgICAgIHN0cmVhbURlYnVnTG9nSGl0bFVpT3ZlcmxhcCh7XG4gICAgICAgICAgc2NvcGU6ICdvcmNoZXN0cmF0b3InLFxuICAgICAgICAgIHNvdXJjZTogJ25vZGUnLFxuICAgICAgICAgIG5vZGVQYXlsb2FkOiBwYXlsb2FkLFxuICAgICAgICAgIGFjdGl2aXR5TWVzc2FnZTogYWN0aXZpdHkubWVzc2FnZSxcbiAgICAgICAgICBoaXRsQ29udGV4dCxcbiAgICAgICAgICB1aVN1cmZhY2VzOiBbJ3N0cmVhbUFjdGl2aXR5JywgJ3N0cmVhbVRpbWVsaW5lJ10sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbYXBwbHlTdHJlYW1BY3Rpdml0eSwgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYsIHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1Xcml0aW5nU3RhcnRlZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzeW5jU3RyZWFtVGltZWxpbmVDb250ZW50KGFjY3VtdWxhdGVkQ29udGVudFJlZi5jdXJyZW50KVxuICAgIGFwcGx5U3RyZWFtQWN0aXZpdHlQcmVzZXJ2aW5nU3RlcHMoZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHQpKVxuICB9LCBbYXBwbHlTdHJlYW1BY3Rpdml0eVByZXNlcnZpbmdTdGVwcywgc3luY1N0cmVhbVRpbWVsaW5lQ29udGVudCwgdF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdHJlYW1BY3Rpdml0eVJlZi5jdXJyZW50ID0gc3RyZWFtQWN0aXZpdHlcbiAgfSwgW3N0cmVhbUFjdGl2aXR5XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNMb2FkaW5nIHx8IGlzV3JpdGluZyB8fCAhc3RyZWFtQWN0aXZpdHkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gICAgaWYgKCFjYW5Sb3RhdGVTdHJlYW1BY3Rpdml0eVBoYXNlKHN0cmVhbUFjdGl2aXR5LnBoYXNlKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgY29uc3QgcHJldiA9IHN0cmVhbUFjdGl2aXR5UmVmLmN1cnJlbnRcbiAgICAgIGlmICghcHJldiB8fCAhY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZShwcmV2LnBoYXNlKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmICghY2FuQWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZShwcmV2LnBoYXNlLCBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50KSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IGFkdmFuY2VkID0gYWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZShwcmV2LCBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50LCB0KVxuICAgICAgaWYgKCFhZHZhbmNlZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQgPSBhZHZhbmNlZC5uZXh0SW5kZXhcbiAgICAgIGNvbnN0IG1lcmdlZEFjdGl2aXR5ID0ge1xuICAgICAgICAuLi5hZHZhbmNlZC5hY3Rpdml0eSxcbiAgICAgICAgLi4uKHByZXYuZXhlY3V0aW9uU3RlcHM/Lmxlbmd0aCA/IHsgZXhlY3V0aW9uU3RlcHM6IHByZXYuZXhlY3V0aW9uU3RlcHMgfSA6IHt9KSxcbiAgICAgIH1cbiAgICAgIHN0cmVhbUFjdGl2aXR5UmVmLmN1cnJlbnQgPSBtZXJnZWRBY3Rpdml0eVxuICAgICAgc2V0U3RyZWFtQWN0aXZpdHkobWVyZ2VkQWN0aXZpdHkpXG4gICAgICBzZXRMb2FkaW5nTWVzc2FnZShtZXJnZWRBY3Rpdml0eS5tZXNzYWdlKVxuICAgIH0sIEFDVElWSVRZX01FU1NBR0VfUk9UQVRFX01TKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5jbGVhckludGVydmFsKGludGVydmFsSWQpXG4gIH0sIFtpc0xvYWRpbmcsIGlzV3JpdGluZywgc3RyZWFtQWN0aXZpdHk/LnBoYXNlLCB0XSlcblxuICBjb25zdCBoYW5kbGVTU0VTdHJlYW0gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAvLyBUaW1lLXRocm90dGxlOiBldml0YSBlbWl0aXIgb25TdHJlYW1VcGRhdGUgbcOhcyBkZSB1bmEgdmV6IGNhZGEgfjE2bXMuXG4gICAgICAvLyBVc2Ftb3MgdGltZXIgcGFyYSBxdWUgZWwgc3RyZWFtIHNpZ2EgcGludGFuZG8gYXVucXVlIHJBRiBlc3TDqSB0aHJvdHRsZWFkby5cbiAgICAgIC8vIE5vdGE6IG5vIHRvY2Ftb3MgZWwgc3RhdGUgYGRhdGFgIGVuIGVsIGhvdCBwYXRoIChzb2xvIHNlIGFjdHVhbGl6YSBlblxuICAgICAgLy8gYGNvbXBsZXRlYC9yZXNldHMpIHBhcmEgbm8gcmUtcmVuZGVyaXphciBhIGxvcyBjb25zdW1pZG9yZXMgZGVsIGhvb2tcbiAgICAgIC8vIGVuIGNhZGEgZnJhbWU7IGVsIHRleHRvIGVuIHZpdm8gdmlhamEgcG9yIGVsIHN0cmVhbWluZ1N0b3JlLlxuICAgICAgbGV0IHBlbmRpbmdDb250ZW50OiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICAgICAgbGV0IHRocm90dGxlVGltZXI6IG51bWJlciB8IG51bGwgPSBudWxsXG4gICAgICBsZXQgc3RyZWFtU2V0dGxlZCA9IGZhbHNlXG4gICAgICBjb25zdCBlbWl0VGhyb3R0bGVkID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICBwZW5kaW5nQ29udGVudCA9IGNvbnRlbnRcbiAgICAgICAgaWYgKHRocm90dGxlVGltZXIgIT0gbnVsbCkgcmV0dXJuXG4gICAgICAgIHRocm90dGxlVGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhyb3R0bGVUaW1lciA9IG51bGxcbiAgICAgICAgICBpZiAoc3RyZWFtU2V0dGxlZCkge1xuICAgICAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBlbmRpbmdDb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvRW1pdCA9IHBlbmRpbmdDb250ZW50XG4gICAgICAgICAgICBwZW5kaW5nQ29udGVudCA9IG51bGxcbiAgICAgICAgICAgIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQ/Lih0b0VtaXQsIG51bGwsICcnKVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTYpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZsdXNoUGVuZGluZyA9ICgpID0+IHtcbiAgICAgICAgaWYgKHRocm90dGxlVGltZXIgIT0gbnVsbCkge1xuICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhyb3R0bGVUaW1lcilcbiAgICAgICAgICB0aHJvdHRsZVRpbWVyID0gbnVsbFxuICAgICAgICB9XG4gICAgICAgIGlmIChwZW5kaW5nQ29udGVudCAhPSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgdG9FbWl0ID0gcGVuZGluZ0NvbnRlbnRcbiAgICAgICAgICBwZW5kaW5nQ29udGVudCA9IG51bGxcbiAgICAgICAgICBvblN0cmVhbVVwZGF0ZVJlZi5jdXJyZW50Py4odG9FbWl0LCBudWxsLCAnJylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5Py5nZXRSZWFkZXIoKVxuICAgICAgICBpZiAoIXJlYWRlcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gcmVhZGVyIGF2YWlsYWJsZScpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKClcbiAgICAgICAgbGV0IGJ1ZmZlciA9ICcnXG4gICAgICAgIGxldCBhY2N1bXVsYXRlZENvbnRlbnQgPSAnJ1xuICAgICAgICBsZXQgaGFzU3RhcnRlZFdyaXRpbmcgPSBmYWxzZVxuXG4gICAgICAgIGNvbnN0IGVuc3VyZVdyaXRpbmdTdGFydGVkID0gKCkgPT4ge1xuICAgICAgICAgIGlmIChoYXNTdGFydGVkV3JpdGluZykgcmV0dXJuXG4gICAgICAgICAgaGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlXG4gICAgICAgICAgc3RyZWFtRGVidWdTc2UoJ2Fza01haWEnLCAnd3JpdGluZzpzdGFydGVkJywge1xuICAgICAgICAgICAgYWNjdW11bGF0ZWRMZW5ndGg6IGFjY3VtdWxhdGVkQ29udGVudC5sZW5ndGgsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBzZXRJc1dyaXRpbmcodHJ1ZSlcbiAgICAgICAgICBoYW5kbGVTdHJlYW1Xcml0aW5nU3RhcnRlZCgpXG4gICAgICAgICAgb25TdGFydFdyaXRpbmdSZWYuY3VycmVudD8uKClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFwcGx5U3RyZWFtQ2h1bmsgPSAoY2h1bms6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGlmICghY2h1bmspIHJldHVyblxuICAgICAgICAgIGFjY3VtdWxhdGVkQ29udGVudCA9IG1lcmdlU3RyZWFtQ2h1bmsoYWNjdW11bGF0ZWRDb250ZW50LCBjaHVuaylcbiAgICAgICAgICBhY2N1bXVsYXRlZENvbnRlbnRSZWYuY3VycmVudCA9IGFjY3VtdWxhdGVkQ29udGVudFxuICAgICAgICAgIHN5bmNTdHJlYW1UaW1lbGluZUNvbnRlbnQoYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgIGVtaXRUaHJvdHRsZWQoYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXBwbHlTdHJlYW1Db21wbGV0ZSA9IChwYXlsb2FkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4ge1xuICAgICAgICAgIGlmIChzdHJlYW1TZXR0bGVkKSByZXR1cm5cbiAgICAgICAgICBzdHJlYW1TZXR0bGVkID0gdHJ1ZVxuXG4gICAgICAgICAgY29uc3QgZmluYWxDb250ZW50ID0gKHBheWxvYWQuY29udGVudCBhcyBzdHJpbmcpIHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgICAgICAgIHN0cmVhbURlYnVnU3NlKCdhc2tNYWlhJywgJ2NvbXBsZXRlJywge1xuICAgICAgICAgICAgZmluYWxDb250ZW50TGVuZ3RoOiBmaW5hbENvbnRlbnQubGVuZ3RoLFxuICAgICAgICAgICAgdGltZWxpbmU6IHN1bW1hcml6ZVRpbWVsaW5lU25hcHNob3Qoc3RyZWFtVGltZWxpbmVTdG9yZS5nZXRTbmFwc2hvdCgpKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGFjY3VtdWxhdGVkQ29udGVudFJlZi5jdXJyZW50ID0gZmluYWxDb250ZW50XG4gICAgICAgICAgc3luY1N0cmVhbVRpbWVsaW5lQ29udGVudChmaW5hbENvbnRlbnQpXG4gICAgICAgICAgc3RyZWFtVGltZWxpbmVTdG9yZS5yZXBsYWNlKGZpbmFsaXplU3RyZWFtVGltZWxpbmUoc3RyZWFtVGltZWxpbmVTdG9yZS5nZXRTbmFwc2hvdCgpKSlcbiAgICAgICAgICBjb25zdCBzb3VyY2VzID0gcGF5bG9hZC5zb3VyY2VzIHx8IG51bGxcbiAgICAgICAgICBjb25zdCBtZW1vcnlTZXNzaW9uSWQgPSAocGF5bG9hZC5tZW1vcnlfc2Vzc2lvbl9pZCBhcyBzdHJpbmcpIHx8ICcnXG4gICAgICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBBcnJheS5pc0FycmF5KHBheWxvYWQuYXR0YWNobWVudHMpID8gcGF5bG9hZC5hdHRhY2htZW50cyA6IG51bGxcbiAgICAgICAgICBsZXQgc3VnZ2VzdGlvbnM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGxcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXlsb2FkLnN1Z2dlc3RfcmVwbHkpKSB7XG4gICAgICAgICAgICBzdWdnZXN0aW9ucyA9IHBheWxvYWQuc3VnZ2VzdF9yZXBseSBhcyBzdHJpbmdbXVxuICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwYXlsb2FkLnN1Z2dlc3Rpb25zKSkge1xuICAgICAgICAgICAgc3VnZ2VzdGlvbnMgPSBwYXlsb2FkLnN1Z2dlc3Rpb25zIGFzIHN0cmluZ1tdXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGFnZW50SWRSYXcgPSBwYXlsb2FkLmFnZW50X2lkID8/IHBheWxvYWQuYWdlbnRJZFxuICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZEFnZW50SWQgPVxuICAgICAgICAgICAgYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICAgICAgICBjb25zdCBzdWJhZ2VudFJhdyA9IHBheWxvYWQuc3ViYWdlbnQgYXMgU3ViYWdlbnRSYXdcbiAgICAgICAgICBjb25zdCByZXNvbHZlZENvbnRleHQgPSBzdWJhZ2VudFJhdz8ucmVzb2x2ZWRfY29udGV4dCA/PyBudWxsXG4gICAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgICBzZXREYXRhKGZpbmFsQ29udGVudClcbiAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgICBzZXRTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgICAgICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpXG4gICAgICAgICAgb25GaW5pc2hTdHJlYW1SZWYuY3VycmVudD8uKFxuICAgICAgICAgICAgZmluYWxDb250ZW50LFxuICAgICAgICAgICAgc291cmNlcyxcbiAgICAgICAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgICAgIGF0dGFjaG1lbnRzLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnMsXG4gICAgICAgICAgICBjb21wbGV0ZWRBZ2VudElkLFxuICAgICAgICAgICAgcmVzb2x2ZWRDb250ZXh0XG4gICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICBpZiAoaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJlYWRlci5jYW5jZWwoKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG4gICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICByZWFkZXIuY2FuY2VsKClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KVxuICAgICAgICAgIGNvbnN0IGxpbmVzID0gYnVmZmVyLnNwbGl0KCdcXG5cXG4nKVxuICAgICAgICAgIGJ1ZmZlciA9IGxpbmVzLnBvcCgpIHx8ICcnXG5cbiAgICAgICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgICAgIGlmIChsaW5lLnRyaW0oKSA9PT0gJycpIGNvbnRpbnVlXG5cbiAgICAgICAgICAgIGNvbnN0IFtldmVudExpbmUsIGRhdGFMaW5lXSA9IGxpbmUuc3BsaXQoJ1xcbicpXG4gICAgICAgICAgICBpZiAoIWV2ZW50TGluZSB8fCAhZGF0YUxpbmUpIGNvbnRpbnVlXG5cbiAgICAgICAgICAgIGNvbnN0IGV2ZW50VHlwZSA9IGV2ZW50TGluZS5yZXBsYWNlKCdldmVudDogJywgJycpLnRyaW0oKVxuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9IGRhdGFMaW5lLnJlcGxhY2UoJ2RhdGE6ICcsICcnKS50cmltKClcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGF0YVN0cilcblxuICAgICAgICAgICAgICBpZiAoc3RyZWFtU2V0dGxlZCAmJiBldmVudFR5cGUgIT09ICdlcnJvcicpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgc3RyZWFtRGVidWdTc2UoJ2Fza01haWEnLCBldmVudFR5cGUsIHtcbiAgICAgICAgICAgICAgICBoYXNTdGFydGVkV3JpdGluZyxcbiAgICAgICAgICAgICAgICBhY2N1bXVsYXRlZExlbmd0aDogYWNjdW11bGF0ZWRDb250ZW50Lmxlbmd0aCxcbiAgICAgICAgICAgICAgICAuLi4oZXZlbnRUeXBlID09PSAnbm9kZSdcbiAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgIG5vZGU6IGRhdGEubm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICB0b29sX25hbWU6IGRhdGEudG9vbF9uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VQcmV2aWV3OiB0eXBlb2YgZGF0YS5tZXNzYWdlID09PSAnc3RyaW5nJyA/IGRhdGEubWVzc2FnZS5zbGljZSgwLCA4MCkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgIC4uLihldmVudFR5cGUgPT09ICdhcHByb3ZhbF9yZXF1aXJlZCdcbiAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbEFwcHJvdmFsRGV0ZWN0ZWQ6IGRhdGEubWFudWFsX2FwcHJvdmFsX2RldGVjdGVkID09PSB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdUb29sczogQXJyYXkuaXNBcnJheShkYXRhLnBlbmRpbmdfYWN0aW9ucylcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZGF0YS5wZW5kaW5nX2FjdGlvbnMubWFwKChhOiB7IHRvb2xfbmFtZT86IHN0cmluZyB9KSA9PiBhLnRvb2xfbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50VHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3RoaW5raW5nJzpcbiAgICAgICAgICAgICAgICAgIGlmICghaGFzU3RhcnRlZFdyaXRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUFjdGl2aXR5UHJlc2VydmluZ1N0ZXBzKHtcbiAgICAgICAgICAgICAgICAgICAgICBwaGFzZTogJ3RoaW5raW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlKDAsIHQpLFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3Rva2VuJzoge1xuICAgICAgICAgICAgICAgICAgY29uc3QgY2h1bmsgPSB0eXBlb2YgZGF0YS5jb250ZW50ID09PSAnc3RyaW5nJyA/IGRhdGEuY29udGVudCA6ICcnXG4gICAgICAgICAgICAgICAgICBlbnN1cmVXcml0aW5nU3RhcnRlZCgpXG4gICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUNodW5rKGNodW5rKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXNlICdjb250ZW50Jzoge1xuICAgICAgICAgICAgICAgICAgY29uc3QgY2h1bmsgPSB0eXBlb2YgZGF0YS5jb250ZW50ID09PSAnc3RyaW5nJyA/IGRhdGEuY29udGVudCA6ICcnXG4gICAgICAgICAgICAgICAgICBlbnN1cmVXcml0aW5nU3RhcnRlZCgpXG4gICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUNodW5rKGNodW5rKVxuICAgICAgICAgICAgICAgICAgaWYgKGlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZChkYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUNvbXBsZXRlKGRhdGEpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgICAgICAgICAgaGFuZGxlU3RyZWFtTm9kZUV2ZW50KGRhdGEgYXMgU3RyZWFtTm9kZUV2ZW50UGF5bG9hZClcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBjYXNlICdjb21wbGV0ZSc6XG4gICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUNvbXBsZXRlKGRhdGEpXG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnYXBwcm92YWxfcmVxdWlyZWQnOiB7XG4gICAgICAgICAgICAgICAgICAvLyBNYW51YWwgYXBwcm92YWw6IGVsIFNTRSBzaWd1ZSBjb24gbm9kZS90b2tlbi9jb21wbGV0ZSAoeSBwdWVkZVxuICAgICAgICAgICAgICAgICAgLy8gZW5jYWRlbmFyIG3DoXMgYXBwcm92YWxfcmVxdWlyZWQpLiBTb2xvIGVsIGFwcHJvdmFsIFwicGF1c2Fkb1wiXG4gICAgICAgICAgICAgICAgICAvLyAoYm90w7NuKSBlcyB0ZXJtaW5hbCBwYXJhIGVzdGUgc3RyZWFtLlxuICAgICAgICAgICAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgICAgICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTWFudWFsQXBwcm92YWwgPSBkYXRhLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCA9PT0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgc3RyZWFtRGVidWdBcHByb3ZhbCgnb3JjaGVzdHJhdG9yJywgJ2FwcHJvdmFsX3JlcXVpcmVkJywgZGF0YSwge1xuICAgICAgICAgICAgICAgICAgICBpc01hbnVhbEFwcHJvdmFsLFxuICAgICAgICAgICAgICAgICAgICB3aWxsQ2xlYXJMb2FkaW5nU3RhdGU6ICFpc01hbnVhbEFwcHJvdmFsLFxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIGlmICghaXNNYW51YWxBcHByb3ZhbCkge1xuICAgICAgICAgICAgICAgICAgICBzdHJlYW1TZXR0bGVkID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBvbkFwcHJvdmFsUmVxdWlyZWRSZWYuY3VycmVudD8uKGRhdGEsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICAgICAgICAgIGlmIChpc01hbnVhbEFwcHJvdmFsICYmIEFycmF5LmlzQXJyYXkoZGF0YS5wZW5kaW5nX2FjdGlvbnMpICYmIGRhdGEucGVuZGluZ19hY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYW51YWxBY3Rpdml0eSA9IHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmPy5jdXJyZW50KVxuICAgICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KG1hbnVhbEFjdGl2aXR5KVxuICAgICAgICAgICAgICAgICAgICBzdHJlYW1EZWJ1Z0xvZ0hpdGxVaU92ZXJsYXAoe1xuICAgICAgICAgICAgICAgICAgICAgIHNjb3BlOiAnb3JjaGVzdHJhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICdpbml0aWFsQWN0aXZpdHknLFxuICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5TWVzc2FnZTogbWFudWFsQWN0aXZpdHkubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICBoaXRsQ29udGV4dDogaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWY/LmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgdWlTdXJmYWNlczogWydzdHJlYW1BY3Rpdml0eScsICdhcHByb3ZhbEJveCddLFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgICAgICBzdHJlYW1TZXR0bGVkID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignU1NFIEVycm9yOicsIGRhdGEuZXJyb3IpXG4gICAgICAgICAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgICAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgICAgICAgICAgICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpIC8vIExpbXBpYXIgbWVuc2FqZSBjdWFuZG8gaGF5IGVycm9yXG4gICAgICAgICAgICAgICAgICBvbkVycm9yUmVmLmN1cnJlbnQ/LihkYXRhLmVycm9yPy50eXBlLCBkYXRhLmVycm9yPy5tZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1Vua25vd24gU1NFIGV2ZW50IHR5cGU6JywgZXZlbnRUeXBlKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIFNTRSBkYXRhOicsIHBhcnNlRXJyb3IsIGRhdGFTdHIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG5cbiAgICAgICAgLy8gU29sbyBlamVjdXRhciBvbkVycm9yIHNpIG5vIGZ1ZSB1biBzdG9wIGludGVuY2lvbmFsXG4gICAgICAgIGlmICghaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBvbkVycm9yUmVmLmN1cnJlbnQ/LigpXG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgIGlmICghc3RyZWFtU2V0dGxlZCkge1xuICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eVByZXNlcnZpbmdTdGVwcyxcbiAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlLFxuICAgICAgaGFuZGxlU3RyZWFtTm9kZUV2ZW50LFxuICAgICAgaGFuZGxlU3RyZWFtV3JpdGluZ1N0YXJ0ZWQsXG4gICAgICBzeW5jU3RyZWFtVGltZWxpbmVDb250ZW50LFxuICAgICAgdCxcbiAgICBdXG4gIClcblxuICBjb25zdCBhc2tNYWlhID0gYXN5bmMgKHtcbiAgICBtZXNzYWdlLFxuICAgIGhpc3RvcnksXG4gICAgcHJvamVjdElkLFxuICAgIGxhbmcsXG4gICAgdXNlcklkLFxuICAgIGZpcnN0TmFtZSxcbiAgICBsYXN0TmFtZSxcbiAgICBjb21wYW55SWQsXG4gICAgY2hhdElkLFxuICAgIG1lc3NhZ2VJZCxcbiAgICBjbGllbnRJZCxcbiAgICBjbGllbnROYW1lLFxuICAgIGZlZUlkLFxuICAgIGFnZW50TmFtZSxcbiAgICBhZ2VudElkLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBhdHRhY2htZW50cyxcbiAgICBwcm9qZWN0TmFtZSxcbiAgICB0YXNrSWQsXG4gICAgdGFza05hbWUsXG4gICAgZmFxSWQsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQsXG4gICAgZnVhSWQsXG4gICAgc2NJZCxcbiAgICBhZ2VudEVudGl0eSxcbiAgICBhZ2VudFR5cGUsXG4gICAgY29udGV4dE1lc3NhZ2UsXG4gICAgY29udGV4dERhdGEsXG4gIH06IHtcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBoaXN0b3J5OiBDaGF0SGlzdG9yeVtdXG4gICAgcHJvamVjdElkOiBudW1iZXIgfCBudWxsXG4gICAgbGFuZzogc3RyaW5nXG4gICAgdXNlcklkOiBzdHJpbmdcbiAgICBmaXJzdE5hbWU/OiBzdHJpbmdcbiAgICBsYXN0TmFtZT86IHN0cmluZ1xuICAgIGNvbXBhbnlJZDogc3RyaW5nXG4gICAgY2hhdElkOiBzdHJpbmdcbiAgICBtZXNzYWdlSWQ6IHN0cmluZ1xuICAgIGNsaWVudElkPzogbnVtYmVyXG4gICAgY2xpZW50TmFtZT86IHN0cmluZ1xuICAgIGZlZUlkPzogbnVtYmVyXG4gICAgYWdlbnROYW1lOiBzdHJpbmdcbiAgICBhZ2VudElkOiBzdHJpbmdcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBpc0RlZXBTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gICAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbiAgICB0YXNrSWQ/OiBudW1iZXJcbiAgICB0YXNrTmFtZT86IHN0cmluZ1xuICAgIGZhcUlkPzogc3RyaW5nXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmdcbiAgICBmdWFJZD86IHN0cmluZ1xuICAgIHNjSWQ/OiBzdHJpbmdcbiAgICBhZ2VudEVudGl0eT86IEFnZW50RW50aXR5XG4gICAgYWdlbnRUeXBlPzogQWdlbnRUeXBlXG4gICAgY29udGV4dE1lc3NhZ2U/OiBDb250ZXh0TWVzc2FnZVxuICAgIGNvbnRleHREYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBzZXREYXRhKG51bGwpXG4gICAgICBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50ID0gMFxuICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgYmVnaW5TdHJlYW1UaW1lbGluZVR1cm4obWVzc2FnZUlkKVxuICAgICAgY29uc3QgaW5pdGlhbEFjdGl2aXR5ID0gZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5KHQsIHtcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICAgICAgaGFzQXR0YWNobWVudHM6IEJvb2xlYW4oYXR0YWNobWVudHM/Lmxlbmd0aCksXG4gICAgICAgIGF0dGFjaG1lbnRzQ291bnQ6IGF0dGFjaG1lbnRzPy5sZW5ndGggPz8gMCxcbiAgICAgIH0pXG4gICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KGluaXRpYWxBY3Rpdml0eSlcbiAgICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gZmFsc2UgLy8gUmVzZXRlYXIgZmxhZyBhbCBpbmljaWFyIG51ZXZhIHBldGljacOzblxuXG4gICAgICBzdHJlYW1EZWJ1Z0xvZygnb3JjaGVzdHJhdG9yJywgJ2Fza01haWE6c3RhcnQnLCB7IG1lc3NhZ2VJZCwgY2hhdElkIH0pXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLm9yY2hlc3RyYXRvcihcbiAgICAgICAge1xuICAgICAgICAgIGlucHV0OiBtZXNzYWdlLFxuICAgICAgICAgIGhpc3RvcnksXG4gICAgICAgICAgbGFuZyxcbiAgICAgICAgICB1c2VySWQsXG4gICAgICAgICAgLi4uKGZpcnN0TmFtZSA/IHsgZmlyc3ROYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGxhc3ROYW1lID8geyBsYXN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIGNvbXBhbnlJZCxcbiAgICAgICAgICBjaGF0SWQsXG4gICAgICAgICAgbWVzc2FnZUlkLFxuICAgICAgICAgIGNsaWVudElkLFxuICAgICAgICAgIC4uLihmZWVJZCAhPSBudWxsID8geyBmZWVJZCB9IDoge30pLFxuICAgICAgICAgIGFnZW50TmFtZSxcbiAgICAgICAgICBhZ2VudElkLFxuICAgICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICAgICAgICAuLi4ocHJvamVjdElkID8geyBwcm9qZWN0SWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYXR0YWNobWVudHMgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHByb2plY3ROYW1lID8geyBwcm9qZWN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihjbGllbnROYW1lID8geyBjbGllbnROYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHRhc2tJZCAhPSBudWxsID8geyB0YXNrSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4odGFza05hbWUgPyB7IHRhc2tOYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGZhcUlkID8geyBmYXFJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oZnVhSWQgPyB7IGZ1YUlkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHNjSWQgPyB7IHNjSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnRFbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnRUeXBlICE9IG51bGwgPyB7IGFnZW50VHlwZSB9IDoge30pLFxuICAgICAgICAgIC4uLihjb250ZXh0TWVzc2FnZSA/IHsgY29udGV4dE1lc3NhZ2UgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhIH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50Py5zaWduYWxcbiAgICAgIClcblxuICAgICAgYXdhaXQgaGFuZGxlU1NFU3RyZWFtKHJlc3BvbnNlKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBTaSBmdWUgdW4gYWJvcnQgaW50ZW5jaW9uYWwgKHN0b3AgbWFudWFsIG8gY2FtYmlvIGRlIGNoYXQpLCBubyBkaXNwYXJhciBvbkVycm9yXG4gICAgICAvLyBwb3JxdWUgZXNvIGluc2VydGEgdW4gXCJtZW5zYWplIGRlIGVycm9yXCIgZW4gZWwgY2hhdCBhbCBxdWUgYWNhYmFtb3MgZGUgbmF2ZWdhci5cbiAgICAgIGlmICghaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgb25FcnJvclJlZi5jdXJyZW50Py4oKVxuICAgICAgfVxuICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBzdG9wU3RyZWFtaW5nID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCkge1xuICAgICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICBvblN0b3BSZWYuY3VycmVudD8uKClcbiAgICB9XG4gIH0sIFtjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZV0pXG5cbiAgLyoqXG4gICAqIEFib3J0YSBlbCBzdHJlYW0gZW4gY3Vyc28gKHNpIGV4aXN0ZSkgc2luIGRpc3BhcmFyIGBvblN0b3BgLlxuICAgKiDDmnNlbG8gZW4gY2Fzb3MgZG9uZGUgbm8gcXVlcmVtb3MgYWdyZWdhciBlbCBtZW5zYWplIGRlIFwiY2FuY2VsYWRvXCJcbiAgICogKHBvciBlamVtcGxvLCBhbCBjYW1iaWFyIGRlIGNoYXQpLlxuICAgKi9cbiAgY29uc3QgYWJvcnRTdHJlYW1TaWxlbnRseSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQuYWJvcnQoKVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgIH1cbiAgfSwgW2NsZWFyU3RyZWFtTG9hZGluZ1N0YXRlXSlcblxuICAvLyBDbGVhbnVwIGFsIGRlc21vbnRhcjogc2kgcXVlZGEgdW4gc3RyZWFtIGFjdGl2bywgYWJvcnRhcmxvIHBhcmEgZXZpdGFyXG4gIC8vIHF1ZSBpbnRlbnRlIGFjdHVhbGl6YXIgZXN0YWRvIGVuIHVuIGNvbXBvbmVudGUgeWEgZGVzbW9udGFkbyAoZnVnYXMgZGVcbiAgLy8gbWVtb3JpYSB5IHdhcm5pbmdzKS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50LmFib3J0KClcbiAgICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCB1cGRhdGVTdHJlYW1BY3Rpdml0eSA9IHVzZUNhbGxiYWNrKFxuICAgIChhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkgfCBudWxsKSA9PiB7XG4gICAgICBpZiAoIWFjdGl2aXR5KSB7XG4gICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KGFjdGl2aXR5KVxuICAgIH0sXG4gICAgW2FwcGx5U3RyZWFtQWN0aXZpdHksIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlXVxuICApXG5cbiAgY29uc3QgcmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0RGF0YShudWxsKVxuICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFza01haWEsXG4gICAgcmVzcG9uc2U6IGRhdGEsXG4gICAgaXNMb2FkaW5nLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdHJlYW1BY3Rpdml0eSxcbiAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eSxcbiAgICByZXNldCxcbiAgICBzdG9wU3RyZWFtaW5nLFxuICAgIGFib3J0U3RyZWFtU2lsZW50bHksXG4gICAgaGFuZGxlU1NFU3RyZWFtLCAvLyBFeHBvbmVyIHBhcmEgcG9kZXIgdXNhcmxvIGVuIGNvbnRpbnVlLXRocmVhZFxuICAgIGhhbmRsZVN0cmVhbU5vZGVFdmVudCxcbiAgICBoYW5kbGVTdHJlYW1Xcml0aW5nU3RhcnRlZCxcbiAgICBiZWdpblN0cmVhbVRpbWVsaW5lVHVybixcbiAgICBzeW5jU3RyZWFtVGltZWxpbmVDb250ZW50LFxuICAgIGZpbmFsaXplU3RyZWFtRXhlY3V0aW9uVHJhY2UsXG4gICAgcmVzZXRTdHJlYW1FeGVjdXRpb25UcmFjZSxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFFBQVEsRUFBRUMsV0FBVyxFQUFFQyxNQUFNLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBQ2hFLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBRTlDLE9BQU9DLElBQUksTUFBTSxxQkFBcUI7QUFLdEMsU0FBU0MsUUFBUSxRQUFRLHdCQUF3QjtBQUVqRCxTQUNFQywwQkFBMEIsRUFDMUJDLDRCQUE0QixFQUM1QkMsK0JBQStCLEVBQy9CQyw0QkFBNEIsRUFDNUJDLHdCQUF3QixFQUN4QkMseUJBQXlCLEVBQ3pCQyx3QkFBd0IsRUFDeEJDLDZCQUE2QixFQUM3QkMsZ0NBQWdDLFFBQzNCLG9DQUFvQztBQUMzQyxTQUNFQyx5QkFBeUIsRUFFekJDLHNCQUFzQixFQUN0QkMsK0JBQStCLEVBRS9CQyx5QkFBeUIsUUFDcEIsa0NBQWtDO0FBQ3pDLFNBQ0VDLDZCQUE2QixFQUM3QkMsMEJBQTBCLEVBQzFCQyxzQkFBc0IsRUFDdEJDLHVCQUF1QixRQUNsQiw0QkFBNEI7QUFDbkMsU0FBU0MsbUJBQW1CLFFBQVEsMENBQTBDO0FBQzlFLFNBQVNDLHdCQUF3QixFQUFFQyxnQkFBZ0IsUUFBUSw4QkFBOEI7QUFDekYsU0FDRUMsbUJBQW1CLEVBQ25CQyxtQkFBbUIsRUFDbkJDLGNBQWMsRUFDZEMsMkJBQTJCLEVBQzNCQyxlQUFlLEVBQ2ZDLGNBQWMsRUFDZEMsb0JBQW9CLEVBQ3BC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
736
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlVHJhbnNsYXRpb24iLCJtYWlhIiwiU0VDVElPTlMiLCJBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyIsImFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UiLCJjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlIiwiY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZSIsImdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSIsImdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UiLCJnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5IiwiY29tcGxldGVBbGxFeGVjdXRpb25TdGVwcyIsImdldEFjdGl2ZUV4ZWN1dGlvblN0ZXAiLCJtZXJnZUFjdGl2aXR5V2l0aEV4ZWN1dGlvblN0ZXBzIiwicmVzZXRFeGVjdXRpb25TdGVwQ291bnRlciIsImFwcGVuZENvbnRlbnRUb1N0cmVhbVRpbWVsaW5lIiwiYXBwZW5kTm9kZVRvU3RyZWFtVGltZWxpbmUiLCJmaW5hbGl6ZVN0cmVhbVRpbWVsaW5lIiwic3RhcnRTdHJlYW1UaW1lbGluZVR1cm4iLCJzdHJlYW1UaW1lbGluZVN0b3JlIiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInN0cmVhbURlYnVnQWN0aXZpdHkiLCJzdHJlYW1EZWJ1Z0FwcHJvdmFsIiwic3RyZWFtRGVidWdMb2ciLCJzdHJlYW1EZWJ1Z0xvZ0hpdGxVaU92ZXJsYXAiLCJzdHJlYW1EZWJ1Z05vZGUiLCJzdHJlYW1EZWJ1Z1NzZSIsInN1bW1hcml6ZUhpdGxDb250ZXh0Iiwic3VtbWFyaXplVGltZWxpbmVTbmFwc2hvdCIsInVzZU9yY2hlc3RyYXRvclN0cmVhbSIsIl9yZWYiLCJvblN0cmVhbVVwZGF0ZSIsIm9uRmluaXNoU3RyZWFtIiwib25TdGFydFdyaXRpbmciLCJvblN0b3AiLCJvbkVycm9yIiwib25BcHByb3ZhbFJlcXVpcmVkIiwiaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYiLCJfdXNlVHJhbnNsYXRpb24iLCJjaGF0QUkiLCJ0IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiZGF0YSIsInNldERhdGEiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzTG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzV3JpdGluZyIsInNldElzV3JpdGluZyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibG9hZGluZ01lc3NhZ2UiLCJzZXRMb2FkaW5nTWVzc2FnZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic3RyZWFtQWN0aXZpdHkiLCJzZXRTdHJlYW1BY3Rpdml0eSIsImFib3J0Q29udHJvbGxlclJlZiIsImlzU3RvcHBlZFJlZiIsImFjdGl2aXR5TWVzc2FnZUluZGV4UmVmIiwic3RyZWFtQWN0aXZpdHlSZWYiLCJleGVjdXRpb25TdGVwc1JlZiIsImFjY3VtdWxhdGVkQ29udGVudFJlZiIsIm9uU3RyZWFtVXBkYXRlUmVmIiwib25GaW5pc2hTdHJlYW1SZWYiLCJvblN0YXJ0V3JpdGluZ1JlZiIsIm9uU3RvcFJlZiIsIm9uRXJyb3JSZWYiLCJvbkFwcHJvdmFsUmVxdWlyZWRSZWYiLCJjdXJyZW50IiwiY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUiLCJwcmV2aW91c1R1cm5JZCIsImdldFNuYXBzaG90IiwidHVybklkIiwiZXhlY3V0aW9uU3RlcENvdW50IiwibGVuZ3RoIiwiY2xlYXIiLCJiZWdpblN0cmVhbVRpbWVsaW5lVHVybiIsInJlcGxhY2UiLCJzeW5jU3RyZWFtVGltZWxpbmVDb250ZW50IiwiYWNjdW11bGF0ZWRUZXh0IiwibmV4dCIsImFwcGx5U3RyZWFtQWN0aXZpdHkiLCJhY3Rpdml0eSIsInByZXYiLCJwaGFzZSIsIm1lc3NhZ2UiLCJwcmVzZXJ2ZWRTdGVwcyIsImFwcGx5U3RyZWFtQWN0aXZpdHlQcmVzZXJ2aW5nU3RlcHMiLCJzdGVwcyIsInJlc2V0U3RyZWFtRXhlY3V0aW9uVHJhY2UiLCJmaW5hbGl6ZVN0cmVhbUV4ZWN1dGlvblRyYWNlIiwiX2FjdGl2ZVN0ZXAkbWVzc2FnZSIsImNvbXBsZXRlZFN0ZXBzIiwiYWN0aXZlU3RlcCIsImhhbmRsZVN0cmVhbU5vZGVFdmVudCIsInBheWxvYWQiLCJub2RlIiwic2tpcHBlZCIsInRocmVhZElkIiwidGhyZWFkX2lkIiwidW5kZWZpbmVkIiwiaGl0bENvbnRleHQiLCJ0aW1lbGluZU5leHQiLCJsYXN0RXhlY3V0aW9uIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic2VnbWVudHMiLCJyZXZlcnNlIiwiZmluZCIsInNlZ21lbnQiLCJ0eXBlIiwidXNlUmVzdW1pbmdGYWxsYmFjayIsInNjb3BlIiwic291cmNlIiwibm9kZVBheWxvYWQiLCJhY3Rpdml0eU1lc3NhZ2UiLCJ1aVN1cmZhY2VzIiwiaGFuZGxlU3RyZWFtV3JpdGluZ1N0YXJ0ZWQiLCJpbnRlcnZhbElkIiwid2luZG93Iiwic2V0SW50ZXJ2YWwiLCJfcHJldiRleGVjdXRpb25TdGVwcyIsImFkdmFuY2VkIiwibmV4dEluZGV4IiwibWVyZ2VkQWN0aXZpdHkiLCJfb2JqZWN0U3ByZWFkIiwiZXhlY3V0aW9uU3RlcHMiLCJjbGVhckludGVydmFsIiwiaGFuZGxlU1NFU3RyZWFtIiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInJlc3BvbnNlIiwiX29uRXJyb3JSZWYkY3VycmVudCIsIl9kYXRhJGVycm9yIiwiX2RhdGEkZXJyb3IyIiwicGVuZGluZ0NvbnRlbnQiLCJ0aHJvdHRsZVRpbWVyIiwic3RyZWFtU2V0dGxlZCIsImVtaXRUaHJvdHRsZWQiLCJmbHVzaFBlbmRpbmciLCJfcmVzcG9uc2UkYm9keSIsInJlYWRlciIsImRlY29kZXIiLCJidWZmZXIiLCJhY2N1bXVsYXRlZENvbnRlbnQiLCJoYXNTdGFydGVkV3JpdGluZyIsImVuc3VyZVdyaXRpbmdTdGFydGVkIiwiYXBwbHlTdHJlYW1DaHVuayIsImFwcGx5U3RyZWFtQ29tcGxldGUiLCJfeWllbGQkcmVhZGVyJHJlYWQiLCJkb25lIiwidmFsdWUiLCJsaW5lcyIsIl9pdGVyYXRvciIsIl9zdGVwIiwibGluZSIsIl9saW5lJHNwbGl0IiwiX2xpbmUkc3BsaXQyIiwiZXZlbnRMaW5lIiwiZGF0YUxpbmUiLCJldmVudFR5cGUiLCJkYXRhU3RyIiwiX2RhdGEiLCJjaHVuayIsIl9jaHVuayIsIl9vbkFwcHJvdmFsUmVxdWlyZWRSZSIsImlzTWFudWFsQXBwcm92YWwiLCJtYW51YWxBY3Rpdml0eSIsIl9vbkVycm9yUmVmJGN1cnJlbnQyIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJ3cmFwIiwiX2NvbnRleHQiLCJjb250ZW50Iiwic2V0VGltZW91dCIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdSIsInRvRW1pdCIsImNhbGwiLCJjbGVhclRpbWVvdXQiLCJfb25TdHJlYW1VcGRhdGVSZWYkY3UyIiwiYm9keSIsImdldFJlYWRlciIsIkVycm9yIiwiVGV4dERlY29kZXIiLCJfb25TdGFydFdyaXRpbmdSZWYkY3UiLCJhY2N1bXVsYXRlZExlbmd0aCIsIl9wYXlsb2FkJGFnZW50X2lkIiwiX3N1YmFnZW50UmF3JHJlc29sdmVkIiwiX29uRmluaXNoU3RyZWFtUmVmJGN1IiwiZmluYWxDb250ZW50IiwiZmluYWxDb250ZW50TGVuZ3RoIiwidGltZWxpbmUiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwibWVtb3J5X3Nlc3Npb25faWQiLCJhdHRhY2htZW50cyIsIkFycmF5IiwiaXNBcnJheSIsInN1Z2dlc3Rpb25zIiwic3VnZ2VzdF9yZXBseSIsImFnZW50SWRSYXciLCJhZ2VudF9pZCIsImFnZW50SWQiLCJjb21wbGV0ZWRBZ2VudElkIiwiU3RyaW5nIiwidHJpbSIsInN1YmFnZW50UmF3Iiwic3ViYWdlbnQiLCJyZXNvbHZlZENvbnRleHQiLCJyZXNvbHZlZF9jb250ZXh0IiwiY2FuY2VsIiwiYWJydXB0IiwicmVhZCIsInNlbnQiLCJkZWNvZGUiLCJzdHJlYW0iLCJzcGxpdCIsInBvcCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwicyIsIm4iLCJKU09OIiwicGFyc2UiLCJ0b29sX25hbWUiLCJtZXNzYWdlUHJldmlldyIsInNsaWNlIiwibWFudWFsQXBwcm92YWxEZXRlY3RlZCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsInBlbmRpbmdUb29scyIsInBlbmRpbmdfYWN0aW9ucyIsIm1hcCIsImEiLCJ3aWxsQ2xlYXJMb2FkaW5nU3RhdGUiLCJjb25zb2xlIiwiZXJyb3IiLCJ3YXJuIiwiZSIsImYiLCJmaW5pc2giLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImFza01haWEiLCJfcmVmNCIsIl9jYWxsZWUyIiwiX3JlZjMiLCJoaXN0b3J5IiwicHJvamVjdElkIiwibGFuZyIsInVzZXJJZCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY29tcGFueUlkIiwiY2hhdElkIiwibWVzc2FnZUlkIiwiY2xpZW50SWQiLCJjbGllbnROYW1lIiwiZmVlSWQiLCJhZ2VudE5hbWUiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsInByb2plY3ROYW1lIiwidGFza0lkIiwidGFza05hbWUiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwiZnVhSWQiLCJzY0lkIiwiYWdlbnRFbnRpdHkiLCJhZ2VudFR5cGUiLCJjb250ZXh0TWVzc2FnZSIsImNvbnRleHREYXRhIiwiX2F0dGFjaG1lbnRzJGxlbmd0aCIsIl9hYm9ydENvbnRyb2xsZXJSZWYkYyIsImluaXRpYWxBY3Rpdml0eSIsIl9vbkVycm9yUmVmJGN1cnJlbnQzIiwiX3Q1IiwiX2NvbnRleHQyIiwiaGFzQXR0YWNobWVudHMiLCJCb29sZWFuIiwiYXR0YWNobWVudHNDb3VudCIsIkFib3J0Q29udHJvbGxlciIsIk9yY2hlc3RyYXRvciIsIm9yY2hlc3RyYXRvciIsImlucHV0Iiwic2lnbmFsIiwiX3gyIiwic3RvcFN0cmVhbWluZyIsIl9vblN0b3BSZWYkY3VycmVudCIsImFib3J0IiwiYWJvcnRTdHJlYW1TaWxlbnRseSIsInVwZGF0ZVN0cmVhbUFjdGl2aXR5IiwicmVzZXQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlT3JjaGVzdHJhdG9yU3RyZWFtL3VzZU9yY2hlc3RyYXRvclN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zdGFudC1jb25kaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IENoYXRIaXN0b3J5IH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IEFnZW50RW50aXR5LCBBZ2VudFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IENvbnRleHRNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBVc2VPcmNoZXN0cmF0b3JTdHJlYW1Qcm9wcywgUmVzb2x2ZWRDb250ZXh0IH0gZnJvbSAnLi91c2VPcmNoZXN0cmF0b3JTdHJlYW0uaW50ZXJmYWNlJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSwgU3RyZWFtRXhlY3V0aW9uU3RlcCwgU3RyZWFtTm9kZUV2ZW50UGF5bG9hZCB9IGZyb20gJy4uLy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHtcbiAgQUNUSVZJVFlfTUVTU0FHRV9ST1RBVEVfTVMsXG4gIGFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UsXG4gIGNhbkFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UsXG4gIGNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UsXG4gIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSxcbiAgZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSxcbiAgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHksXG59IGZyb20gJy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQge1xuICBjb21wbGV0ZUFsbEV4ZWN1dGlvblN0ZXBzLFxuICBmaW5hbGl6ZUV4ZWN1dGlvblN0ZXBzRm9yV3JpdGluZyxcbiAgZ2V0QWN0aXZlRXhlY3V0aW9uU3RlcCxcbiAgbWVyZ2VBY3Rpdml0eVdpdGhFeGVjdXRpb25TdGVwcyxcbiAgcHVzaEV4ZWN1dGlvblN0ZXBGcm9tTm9kZSxcbiAgcmVzZXRFeGVjdXRpb25TdGVwQ291bnRlcixcbn0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtRXhlY3V0aW9uU3RlcHMnXG5pbXBvcnQge1xuICBhcHBlbmRDb250ZW50VG9TdHJlYW1UaW1lbGluZSxcbiAgYXBwZW5kTm9kZVRvU3RyZWFtVGltZWxpbmUsXG4gIGZpbmFsaXplU3RyZWFtVGltZWxpbmUsXG4gIHN0YXJ0U3RyZWFtVGltZWxpbmVUdXJuLFxufSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1UaW1lbGluZSdcbmltcG9ydCB7IHN0cmVhbVRpbWVsaW5lU3RvcmUgfSBmcm9tICcuLi91c2VTdHJlYW1UaW1lbGluZS9zdHJlYW1UaW1lbGluZVN0b3JlJ1xuaW1wb3J0IHsgaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkLCBtZXJnZVN0cmVhbUNodW5rIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3NlU3RyZWFtQ29udGVudCdcbmltcG9ydCB7XG4gIHN0cmVhbURlYnVnQWN0aXZpdHksXG4gIHN0cmVhbURlYnVnQXBwcm92YWwsXG4gIHN0cmVhbURlYnVnTG9nLFxuICBzdHJlYW1EZWJ1Z0xvZ0hpdGxVaU92ZXJsYXAsXG4gIHN0cmVhbURlYnVnTm9kZSxcbiAgc3RyZWFtRGVidWdTc2UsXG4gIHN1bW1hcml6ZUhpdGxDb250ZXh0LFxuICBzdW1tYXJpemVUaW1lbGluZVNuYXBzaG90LFxufSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1EZWJ1Z0xvZydcblxudHlwZSBTdWJhZ2VudFJhdyA9IHsgbmFtZT86IHN0cmluZzsgcmVzb2x2ZWRfY29udGV4dD86IFJlc29sdmVkQ29udGV4dCB8IG51bGwgfSB8IG51bGwgfCB1bmRlZmluZWRcblxuZXhwb3J0IGNvbnN0IHVzZU9yY2hlc3RyYXRvclN0cmVhbSA9ICh7XG4gIG9uU3RyZWFtVXBkYXRlLFxuICBvbkZpbmlzaFN0cmVhbSxcbiAgb25TdGFydFdyaXRpbmcsXG4gIG9uU3RvcCxcbiAgb25FcnJvcixcbiAgb25BcHByb3ZhbFJlcXVpcmVkLFxuICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZixcbn06IFVzZU9yY2hlc3RyYXRvclN0cmVhbVByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oW1NFQ1RJT05TLmNoYXRBSV0pXG4gIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1dyaXRpbmcsIHNldElzV3JpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2xvYWRpbmdNZXNzYWdlLCBzZXRMb2FkaW5nTWVzc2FnZV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbc3RyZWFtQWN0aXZpdHksIHNldFN0cmVhbUFjdGl2aXR5XSA9IHVzZVN0YXRlPFN0cmVhbUFjdGl2aXR5IHwgbnVsbD4obnVsbClcbiAgY29uc3QgYWJvcnRDb250cm9sbGVyUmVmID0gdXNlUmVmPEFib3J0Q29udHJvbGxlciB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzU3RvcHBlZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYgPSB1c2VSZWYoMClcbiAgY29uc3Qgc3RyZWFtQWN0aXZpdHlSZWYgPSB1c2VSZWY8U3RyZWFtQWN0aXZpdHkgfCBudWxsPihudWxsKVxuICBjb25zdCBleGVjdXRpb25TdGVwc1JlZiA9IHVzZVJlZjxTdHJlYW1FeGVjdXRpb25TdGVwW10+KFtdKVxuICBjb25zdCBhY2N1bXVsYXRlZENvbnRlbnRSZWYgPSB1c2VSZWYoJycpXG5cbiAgY29uc3Qgb25TdHJlYW1VcGRhdGVSZWYgPSB1c2VSZWYob25TdHJlYW1VcGRhdGUpXG4gIGNvbnN0IG9uRmluaXNoU3RyZWFtUmVmID0gdXNlUmVmKG9uRmluaXNoU3RyZWFtKVxuICBjb25zdCBvblN0YXJ0V3JpdGluZ1JlZiA9IHVzZVJlZihvblN0YXJ0V3JpdGluZylcbiAgY29uc3Qgb25TdG9wUmVmID0gdXNlUmVmKG9uU3RvcClcbiAgY29uc3Qgb25FcnJvclJlZiA9IHVzZVJlZihvbkVycm9yKVxuICBjb25zdCBvbkFwcHJvdmFsUmVxdWlyZWRSZWYgPSB1c2VSZWYob25BcHByb3ZhbFJlcXVpcmVkKVxuXG4gIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQgPSBvblN0cmVhbVVwZGF0ZVxuICBvbkZpbmlzaFN0cmVhbVJlZi5jdXJyZW50ID0gb25GaW5pc2hTdHJlYW1cbiAgb25TdGFydFdyaXRpbmdSZWYuY3VycmVudCA9IG9uU3RhcnRXcml0aW5nXG4gIG9uU3RvcFJlZi5jdXJyZW50ID0gb25TdG9wXG4gIG9uRXJyb3JSZWYuY3VycmVudCA9IG9uRXJyb3JcbiAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQgPSBvbkFwcHJvdmFsUmVxdWlyZWRcblxuICBjb25zdCBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzdHJlYW1EZWJ1Z0xvZygnb3JjaGVzdHJhdG9yJywgJ2NsZWFyU3RyZWFtTG9hZGluZ1N0YXRlJywge1xuICAgICAgcHJldmlvdXNUdXJuSWQ6IHN0cmVhbVRpbWVsaW5lU3RvcmUuZ2V0U25hcHNob3QoKS50dXJuSWQsXG4gICAgICBleGVjdXRpb25TdGVwQ291bnQ6IGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnQubGVuZ3RoLFxuICAgIH0pXG4gICAgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCA9IDBcbiAgICBzdHJlYW1BY3Rpdml0eVJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnQgPSBbXVxuICAgIGFjY3VtdWxhdGVkQ29udGVudFJlZi5jdXJyZW50ID0gJydcbiAgICByZXNldEV4ZWN1dGlvblN0ZXBDb3VudGVyKClcbiAgICBzdHJlYW1UaW1lbGluZVN0b3JlLmNsZWFyKClcbiAgICBzZXRTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpXG4gICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICB9LCBbXSlcblxuICBjb25zdCBiZWdpblN0cmVhbVRpbWVsaW5lVHVybiA9IHVzZUNhbGxiYWNrKCh0dXJuSWQ6IHN0cmluZykgPT4ge1xuICAgIHN0cmVhbURlYnVnTG9nKCdvcmNoZXN0cmF0b3InLCAnYmVnaW5TdHJlYW1UaW1lbGluZVR1cm4nLCB7IHR1cm5JZCB9KVxuICAgIGFjY3VtdWxhdGVkQ29udGVudFJlZi5jdXJyZW50ID0gJydcbiAgICBleGVjdXRpb25TdGVwc1JlZi5jdXJyZW50ID0gW11cbiAgICByZXNldEV4ZWN1dGlvblN0ZXBDb3VudGVyKClcbiAgICBzdHJlYW1UaW1lbGluZVN0b3JlLnJlcGxhY2Uoc3RhcnRTdHJlYW1UaW1lbGluZVR1cm4odHVybklkKSlcbiAgfSwgW10pXG5cbiAgY29uc3Qgc3luY1N0cmVhbVRpbWVsaW5lQ29udGVudCA9IHVzZUNhbGxiYWNrKChhY2N1bXVsYXRlZFRleHQ6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IG5leHQgPSBhcHBlbmRDb250ZW50VG9TdHJlYW1UaW1lbGluZShzdHJlYW1UaW1lbGluZVN0b3JlLmdldFNuYXBzaG90KCksIGFjY3VtdWxhdGVkVGV4dClcbiAgICBzdHJlYW1UaW1lbGluZVN0b3JlLnJlcGxhY2UobmV4dClcbiAgfSwgW10pXG5cbiAgY29uc3QgYXBwbHlTdHJlYW1BY3Rpdml0eSA9IHVzZUNhbGxiYWNrKChhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkpID0+IHtcbiAgICBjb25zdCBwcmV2ID0gc3RyZWFtQWN0aXZpdHlSZWYuY3VycmVudFxuICAgIGlmIChwcmV2Py5waGFzZSA9PT0gYWN0aXZpdHkucGhhc2UgJiYgY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZShhY3Rpdml0eS5waGFzZSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAocHJldj8ucGhhc2UgIT09IGFjdGl2aXR5LnBoYXNlKSB7XG4gICAgICBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50ID0gMFxuICAgIH1cbiAgICBzdHJlYW1BY3Rpdml0eVJlZi5jdXJyZW50ID0gYWN0aXZpdHlcbiAgICBzZXRTdHJlYW1BY3Rpdml0eShhY3Rpdml0eSlcbiAgICBzZXRMb2FkaW5nTWVzc2FnZShhY3Rpdml0eS5tZXNzYWdlKVxuICAgIHN0cmVhbURlYnVnQWN0aXZpdHkoJ29yY2hlc3RyYXRvcicsICdhcHBseVN0cmVhbUFjdGl2aXR5JywgYWN0aXZpdHksIHtcbiAgICAgIHByZXNlcnZlZFN0ZXBzOiBleGVjdXRpb25TdGVwc1JlZi5jdXJyZW50Lmxlbmd0aCxcbiAgICB9KVxuICB9LCBbXSlcblxuICBjb25zdCBhcHBseVN0cmVhbUFjdGl2aXR5UHJlc2VydmluZ1N0ZXBzID0gdXNlQ2FsbGJhY2soXG4gICAgKGFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSkgPT4ge1xuICAgICAgY29uc3Qgc3RlcHMgPSBleGVjdXRpb25TdGVwc1JlZi5jdXJyZW50XG4gICAgICBpZiAoc3RlcHMubGVuZ3RoID4gMCkge1xuICAgICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KG1lcmdlQWN0aXZpdHlXaXRoRXhlY3V0aW9uU3RlcHMoYWN0aXZpdHksIHN0ZXBzKSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KGFjdGl2aXR5KVxuICAgIH0sXG4gICAgW2FwcGx5U3RyZWFtQWN0aXZpdHldXG4gIClcblxuICBjb25zdCByZXNldFN0cmVhbUV4ZWN1dGlvblRyYWNlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnQgPSBbXVxuICAgIHJlc2V0RXhlY3V0aW9uU3RlcENvdW50ZXIoKVxuICB9LCBbXSlcblxuICAvKiogTWFyY2EgZWwgcmFzdHJvIGNvbW8gY29tcGxldGFkbyB5IGxvIG1hbnRpZW5lIHZpc2libGUgKG5vIGxpbXBpYSBoYXN0YSBlbCBwcsOzeGltbyB0dXJubykuICovXG4gIGNvbnN0IGZpbmFsaXplU3RyZWFtRXhlY3V0aW9uVHJhY2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgY29tcGxldGVkU3RlcHMgPSBjb21wbGV0ZUFsbEV4ZWN1dGlvblN0ZXBzKGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnQpXG4gICAgZXhlY3V0aW9uU3RlcHNSZWYuY3VycmVudCA9IGNvbXBsZXRlZFN0ZXBzXG5cbiAgICBpZiAoY29tcGxldGVkU3RlcHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBhY3RpdmVTdGVwID0gZ2V0QWN0aXZlRXhlY3V0aW9uU3RlcChjb21wbGV0ZWRTdGVwcylcbiAgICBjb25zdCBhY3Rpdml0eSA9IG1lcmdlQWN0aXZpdHlXaXRoRXhlY3V0aW9uU3RlcHMoXG4gICAgICB7XG4gICAgICAgIHBoYXNlOiAnd3JpdGluZycsXG4gICAgICAgIG1lc3NhZ2U6IGFjdGl2ZVN0ZXA/Lm1lc3NhZ2UgPz8gZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHQpLm1lc3NhZ2UsXG4gICAgICB9LFxuICAgICAgY29tcGxldGVkU3RlcHNcbiAgICApXG4gICAgc3RyZWFtQWN0aXZpdHlSZWYuY3VycmVudCA9IGFjdGl2aXR5XG4gICAgc2V0U3RyZWFtQWN0aXZpdHkoYWN0aXZpdHkpXG4gICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbClcbiAgfSwgW2NsZWFyU3RyZWFtTG9hZGluZ1N0YXRlLCB0XSlcblxuICBjb25zdCBoYW5kbGVTdHJlYW1Ob2RlRXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAocGF5bG9hZDogU3RyZWFtTm9kZUV2ZW50UGF5bG9hZCwgYWNjdW11bGF0ZWRUZXh0Pzogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAocGF5bG9hZC5ub2RlID09PSAnYWdlbnRfdHJhbnNmZXInKSB7XG4gICAgICAgIHN0cmVhbURlYnVnTm9kZSgnb3JjaGVzdHJhdG9yJywgcGF5bG9hZCwgeyBza2lwcGVkOiAnYWdlbnRfdHJhbnNmZXInIH0pXG4gICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoIXBheWxvYWQubWVzc2FnZSB8fCB0eXBlb2YgcGF5bG9hZC5tZXNzYWdlICE9PSAnc3RyaW5nJykge1xuICAgICAgICBzdHJlYW1EZWJ1Z05vZGUoJ29yY2hlc3RyYXRvcicsIHBheWxvYWQsIHsgc2tpcHBlZDogJ21pc3NpbmdfbWVzc2FnZScgfSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgIGNvbnN0IHRocmVhZElkID0gdHlwZW9mIHBheWxvYWQudGhyZWFkX2lkID09PSAnc3RyaW5nJyA/IHBheWxvYWQudGhyZWFkX2lkIDogdW5kZWZpbmVkXG4gICAgICBjb25zdCBoaXRsQ29udGV4dCA9IGhpdGxFeGVjdXRpb25Db250ZXh0UmVmPy5jdXJyZW50XG4gICAgICBzdHJlYW1EZWJ1Z05vZGUoJ29yY2hlc3RyYXRvcicsIHBheWxvYWQsIHtcbiAgICAgICAgdGhyZWFkSWQsXG4gICAgICAgIGhpdGxDb250ZXh0OiBoaXRsQ29udGV4dCA/IHN1bW1hcml6ZUhpdGxDb250ZXh0KGhpdGxDb250ZXh0KSA6IG51bGwsXG4gICAgICB9KVxuICAgICAgY29uc3QgdGltZWxpbmVOZXh0ID0gYXBwZW5kTm9kZVRvU3RyZWFtVGltZWxpbmUoXG4gICAgICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUuZ2V0U25hcHNob3QoKSxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgYWNjdW11bGF0ZWRUZXh0ID8/IGFjY3VtdWxhdGVkQ29udGVudFJlZi5jdXJyZW50LFxuICAgICAgICB0LFxuICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZj8uY3VycmVudCxcbiAgICAgICAgdGhyZWFkSWRcbiAgICAgIClcbiAgICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZSh0aW1lbGluZU5leHQpXG5cbiAgICAgIGNvbnN0IGxhc3RFeGVjdXRpb24gPSBbLi4udGltZWxpbmVOZXh0LnNlZ21lbnRzXS5yZXZlcnNlKCkuZmluZChzZWdtZW50ID0+IHNlZ21lbnQudHlwZSA9PT0gJ2V4ZWN1dGlvbicpXG4gICAgICBpZiAobGFzdEV4ZWN1dGlvbj8udHlwZSA9PT0gJ2V4ZWN1dGlvbicpIHtcbiAgICAgICAgZXhlY3V0aW9uU3RlcHNSZWYuY3VycmVudCA9IGxhc3RFeGVjdXRpb24uc3RlcHNcbiAgICAgICAgY29uc3QgYWN0aXZpdHkgPSByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eShcbiAgICAgICAgICBwYXlsb2FkLm1lc3NhZ2UsXG4gICAgICAgICAgdCxcbiAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZj8uY3VycmVudCxcbiAgICAgICAgICB0aHJlYWRJZCxcbiAgICAgICAgICBwYXlsb2FkLm5vZGUgPT09ICdyZXN1bWluZycgPyB7IHVzZVJlc3VtaW5nRmFsbGJhY2s6IHRydWUgfSA6IHVuZGVmaW5lZFxuICAgICAgICApXG4gICAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkobWVyZ2VBY3Rpdml0eVdpdGhFeGVjdXRpb25TdGVwcyhhY3Rpdml0eSwgbGFzdEV4ZWN1dGlvbi5zdGVwcykpXG4gICAgICAgIHN0cmVhbURlYnVnQWN0aXZpdHkoJ29yY2hlc3RyYXRvcicsICdub2RlOmFjdGl2aXR5JywgYWN0aXZpdHksIHtcbiAgICAgICAgICBleGVjdXRpb25TdGVwQ291bnQ6IGxhc3RFeGVjdXRpb24uc3RlcHMubGVuZ3RoLFxuICAgICAgICB9KVxuICAgICAgICBzdHJlYW1EZWJ1Z0xvZ0hpdGxVaU92ZXJsYXAoe1xuICAgICAgICAgIHNjb3BlOiAnb3JjaGVzdHJhdG9yJyxcbiAgICAgICAgICBzb3VyY2U6ICdub2RlJyxcbiAgICAgICAgICBub2RlUGF5bG9hZDogcGF5bG9hZCxcbiAgICAgICAgICBhY3Rpdml0eU1lc3NhZ2U6IGFjdGl2aXR5Lm1lc3NhZ2UsXG4gICAgICAgICAgaGl0bENvbnRleHQsXG4gICAgICAgICAgdWlTdXJmYWNlczogWydzdHJlYW1BY3Rpdml0eScsICdzdHJlYW1UaW1lbGluZSddLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FwcGx5U3RyZWFtQWN0aXZpdHksIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLCB0XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtV3JpdGluZ1N0YXJ0ZWQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNXcml0aW5nKHRydWUpXG4gICAgc3luY1N0cmVhbVRpbWVsaW5lQ29udGVudChhY2N1bXVsYXRlZENvbnRlbnRSZWYuY3VycmVudClcbiAgICBhcHBseVN0cmVhbUFjdGl2aXR5UHJlc2VydmluZ1N0ZXBzKGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSh0KSlcbiAgfSwgW2FwcGx5U3RyZWFtQWN0aXZpdHlQcmVzZXJ2aW5nU3RlcHMsIHN5bmNTdHJlYW1UaW1lbGluZUNvbnRlbnQsIHRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc3RyZWFtQWN0aXZpdHlSZWYuY3VycmVudCA9IHN0cmVhbUFjdGl2aXR5XG4gIH0sIFtzdHJlYW1BY3Rpdml0eV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzTG9hZGluZyB8fCBpc1dyaXRpbmcgfHwgIXN0cmVhbUFjdGl2aXR5KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGlmICghY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZShzdHJlYW1BY3Rpdml0eS5waGFzZSkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBpbnRlcnZhbElkID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGNvbnN0IHByZXYgPSBzdHJlYW1BY3Rpdml0eVJlZi5jdXJyZW50XG4gICAgICBpZiAoIXByZXYgfHwgIWNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UocHJldi5waGFzZSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoIWNhbkFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UocHJldi5waGFzZSwgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBhZHZhbmNlZCA9IGFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UocHJldiwgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCwgdClcbiAgICAgIGlmICghYWR2YW5jZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50ID0gYWR2YW5jZWQubmV4dEluZGV4XG4gICAgICBjb25zdCBtZXJnZWRBY3Rpdml0eSA9IHtcbiAgICAgICAgLi4uYWR2YW5jZWQuYWN0aXZpdHksXG4gICAgICAgIC4uLihwcmV2LmV4ZWN1dGlvblN0ZXBzPy5sZW5ndGggPyB7IGV4ZWN1dGlvblN0ZXBzOiBwcmV2LmV4ZWN1dGlvblN0ZXBzIH0gOiB7fSksXG4gICAgICB9XG4gICAgICBzdHJlYW1BY3Rpdml0eVJlZi5jdXJyZW50ID0gbWVyZ2VkQWN0aXZpdHlcbiAgICAgIHNldFN0cmVhbUFjdGl2aXR5KG1lcmdlZEFjdGl2aXR5KVxuICAgICAgc2V0TG9hZGluZ01lc3NhZ2UobWVyZ2VkQWN0aXZpdHkubWVzc2FnZSlcbiAgICB9LCBBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUylcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKVxuICB9LCBbaXNMb2FkaW5nLCBpc1dyaXRpbmcsIHN0cmVhbUFjdGl2aXR5Py5waGFzZSwgdF0pXG5cbiAgY29uc3QgaGFuZGxlU1NFU3RyZWFtID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4ge1xuICAgICAgLy8gVGltZS10aHJvdHRsZTogZXZpdGEgZW1pdGlyIG9uU3RyZWFtVXBkYXRlIG3DoXMgZGUgdW5hIHZleiBjYWRhIH4xNm1zLlxuICAgICAgLy8gVXNhbW9zIHRpbWVyIHBhcmEgcXVlIGVsIHN0cmVhbSBzaWdhIHBpbnRhbmRvIGF1bnF1ZSByQUYgZXN0w6kgdGhyb3R0bGVhZG8uXG4gICAgICAvLyBOb3RhOiBubyB0b2NhbW9zIGVsIHN0YXRlIGBkYXRhYCBlbiBlbCBob3QgcGF0aCAoc29sbyBzZSBhY3R1YWxpemEgZW5cbiAgICAgIC8vIGBjb21wbGV0ZWAvcmVzZXRzKSBwYXJhIG5vIHJlLXJlbmRlcml6YXIgYSBsb3MgY29uc3VtaWRvcmVzIGRlbCBob29rXG4gICAgICAvLyBlbiBjYWRhIGZyYW1lOyBlbCB0ZXh0byBlbiB2aXZvIHZpYWphIHBvciBlbCBzdHJlYW1pbmdTdG9yZS5cbiAgICAgIGxldCBwZW5kaW5nQ29udGVudDogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgICAgIGxldCB0aHJvdHRsZVRpbWVyOiBudW1iZXIgfCBudWxsID0gbnVsbFxuICAgICAgbGV0IHN0cmVhbVNldHRsZWQgPSBmYWxzZVxuICAgICAgY29uc3QgZW1pdFRocm90dGxlZCA9IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBjb250ZW50XG4gICAgICAgIGlmICh0aHJvdHRsZVRpbWVyICE9IG51bGwpIHJldHVyblxuICAgICAgICB0aHJvdHRsZVRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRocm90dGxlVGltZXIgPSBudWxsXG4gICAgICAgICAgaWYgKHN0cmVhbVNldHRsZWQpIHtcbiAgICAgICAgICAgIHBlbmRpbmdDb250ZW50ID0gbnVsbFxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwZW5kaW5nQ29udGVudCAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCB0b0VtaXQgPSBwZW5kaW5nQ29udGVudFxuICAgICAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgICAgICBvblN0cmVhbVVwZGF0ZVJlZi5jdXJyZW50Py4odG9FbWl0LCBudWxsLCAnJylcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDE2KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBmbHVzaFBlbmRpbmcgPSAoKSA9PiB7XG4gICAgICAgIGlmICh0aHJvdHRsZVRpbWVyICE9IG51bGwpIHtcbiAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRocm90dGxlVGltZXIpXG4gICAgICAgICAgdGhyb3R0bGVUaW1lciA9IG51bGxcbiAgICAgICAgfVxuICAgICAgICBpZiAocGVuZGluZ0NvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHRvRW1pdCA9IHBlbmRpbmdDb250ZW50XG4gICAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgICAgb25TdHJlYW1VcGRhdGVSZWYuY3VycmVudD8uKHRvRW1pdCwgbnVsbCwgJycpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keT8uZ2V0UmVhZGVyKClcbiAgICAgICAgaWYgKCFyZWFkZXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlYWRlciBhdmFpbGFibGUnKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG4gICAgICAgIGxldCBidWZmZXIgPSAnJ1xuICAgICAgICBsZXQgYWNjdW11bGF0ZWRDb250ZW50ID0gJydcbiAgICAgICAgbGV0IGhhc1N0YXJ0ZWRXcml0aW5nID0gZmFsc2VcblxuICAgICAgICBjb25zdCBlbnN1cmVXcml0aW5nU3RhcnRlZCA9ICgpID0+IHtcbiAgICAgICAgICBpZiAoaGFzU3RhcnRlZFdyaXRpbmcpIHJldHVyblxuICAgICAgICAgIGhhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZVxuICAgICAgICAgIHN0cmVhbURlYnVnU3NlKCdhc2tNYWlhJywgJ3dyaXRpbmc6c3RhcnRlZCcsIHtcbiAgICAgICAgICAgIGFjY3VtdWxhdGVkTGVuZ3RoOiBhY2N1bXVsYXRlZENvbnRlbnQubGVuZ3RoLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgc2V0SXNXcml0aW5nKHRydWUpXG4gICAgICAgICAgaGFuZGxlU3RyZWFtV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgIG9uU3RhcnRXcml0aW5nUmVmLmN1cnJlbnQ/LigpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcHBseVN0cmVhbUNodW5rID0gKGNodW5rOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAoIWNodW5rKSByZXR1cm5cbiAgICAgICAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkQ29udGVudCwgY2h1bmspXG4gICAgICAgICAgYWNjdW11bGF0ZWRDb250ZW50UmVmLmN1cnJlbnQgPSBhY2N1bXVsYXRlZENvbnRlbnRcbiAgICAgICAgICBzeW5jU3RyZWFtVGltZWxpbmVDb250ZW50KGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICBlbWl0VGhyb3R0bGVkKGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFwcGx5U3RyZWFtQ29tcGxldGUgPSAocGF5bG9hZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHtcbiAgICAgICAgICBpZiAoc3RyZWFtU2V0dGxlZCkgcmV0dXJuXG4gICAgICAgICAgc3RyZWFtU2V0dGxlZCA9IHRydWVcblxuICAgICAgICAgIGNvbnN0IGZpbmFsQ29udGVudCA9IChwYXlsb2FkLmNvbnRlbnQgYXMgc3RyaW5nKSB8fCBhY2N1bXVsYXRlZENvbnRlbnRcbiAgICAgICAgICBzdHJlYW1EZWJ1Z1NzZSgnYXNrTWFpYScsICdjb21wbGV0ZScsIHtcbiAgICAgICAgICAgIGZpbmFsQ29udGVudExlbmd0aDogZmluYWxDb250ZW50Lmxlbmd0aCxcbiAgICAgICAgICAgIHRpbWVsaW5lOiBzdW1tYXJpemVUaW1lbGluZVNuYXBzaG90KHN0cmVhbVRpbWVsaW5lU3RvcmUuZ2V0U25hcHNob3QoKSksXG4gICAgICAgICAgfSlcbiAgICAgICAgICBhY2N1bXVsYXRlZENvbnRlbnRSZWYuY3VycmVudCA9IGZpbmFsQ29udGVudFxuICAgICAgICAgIHN5bmNTdHJlYW1UaW1lbGluZUNvbnRlbnQoZmluYWxDb250ZW50KVxuICAgICAgICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShmaW5hbGl6ZVN0cmVhbVRpbWVsaW5lKHN0cmVhbVRpbWVsaW5lU3RvcmUuZ2V0U25hcHNob3QoKSkpXG4gICAgICAgICAgY29uc3Qgc291cmNlcyA9IHBheWxvYWQuc291cmNlcyB8fCBudWxsXG4gICAgICAgICAgY29uc3QgbWVtb3J5U2Vzc2lvbklkID0gKHBheWxvYWQubWVtb3J5X3Nlc3Npb25faWQgYXMgc3RyaW5nKSB8fCAnJ1xuICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gQXJyYXkuaXNBcnJheShwYXlsb2FkLmF0dGFjaG1lbnRzKSA/IHBheWxvYWQuYXR0YWNobWVudHMgOiBudWxsXG4gICAgICAgICAgbGV0IHN1Z2dlc3Rpb25zOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZC5zdWdnZXN0X3JlcGx5KSkge1xuICAgICAgICAgICAgc3VnZ2VzdGlvbnMgPSBwYXlsb2FkLnN1Z2dlc3RfcmVwbHkgYXMgc3RyaW5nW11cbiAgICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZC5zdWdnZXN0aW9ucykpIHtcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zID0gcGF5bG9hZC5zdWdnZXN0aW9ucyBhcyBzdHJpbmdbXVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhZ2VudElkUmF3ID0gcGF5bG9hZC5hZ2VudF9pZCA/PyBwYXlsb2FkLmFnZW50SWRcbiAgICAgICAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID1cbiAgICAgICAgICAgIGFnZW50SWRSYXcgIT0gbnVsbCAmJiBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpICE9PSAnJyA/IFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgOiBudWxsXG4gICAgICAgICAgY29uc3Qgc3ViYWdlbnRSYXcgPSBwYXlsb2FkLnN1YmFnZW50IGFzIFN1YmFnZW50UmF3XG4gICAgICAgICAgY29uc3QgcmVzb2x2ZWRDb250ZXh0ID0gc3ViYWdlbnRSYXc/LnJlc29sdmVkX2NvbnRleHQgPz8gbnVsbFxuICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgc2V0RGF0YShmaW5hbENvbnRlbnQpXG4gICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgc2V0U3RyZWFtQWN0aXZpdHkobnVsbClcbiAgICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKVxuICAgICAgICAgIG9uRmluaXNoU3RyZWFtUmVmLmN1cnJlbnQ/LihcbiAgICAgICAgICAgIGZpbmFsQ29udGVudCxcbiAgICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgICAgICBhdHRhY2htZW50cyxcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zLFxuICAgICAgICAgICAgY29tcGxldGVkQWdlbnRJZCxcbiAgICAgICAgICAgIHJlc29sdmVkQ29udGV4dFxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgaWYgKGlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICByZWFkZXIuY2FuY2VsKClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpc1N0b3BwZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJ1ZmZlciArPSBkZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06IHRydWUgfSlcbiAgICAgICAgICBjb25zdCBsaW5lcyA9IGJ1ZmZlci5zcGxpdCgnXFxuXFxuJylcbiAgICAgICAgICBidWZmZXIgPSBsaW5lcy5wb3AoKSB8fCAnJ1xuXG4gICAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICBpZiAobGluZS50cmltKCkgPT09ICcnKSBjb250aW51ZVxuXG4gICAgICAgICAgICBjb25zdCBbZXZlbnRMaW5lLCBkYXRhTGluZV0gPSBsaW5lLnNwbGl0KCdcXG4nKVxuICAgICAgICAgICAgaWYgKCFldmVudExpbmUgfHwgIWRhdGFMaW5lKSBjb250aW51ZVxuXG4gICAgICAgICAgICBjb25zdCBldmVudFR5cGUgPSBldmVudExpbmUucmVwbGFjZSgnZXZlbnQ6ICcsICcnKS50cmltKClcbiAgICAgICAgICAgIGNvbnN0IGRhdGFTdHIgPSBkYXRhTGluZS5yZXBsYWNlKCdkYXRhOiAnLCAnJykudHJpbSgpXG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGRhdGFTdHIpXG5cbiAgICAgICAgICAgICAgaWYgKHN0cmVhbVNldHRsZWQgJiYgZXZlbnRUeXBlICE9PSAnZXJyb3InKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHN0cmVhbURlYnVnU3NlKCdhc2tNYWlhJywgZXZlbnRUeXBlLCB7XG4gICAgICAgICAgICAgICAgaGFzU3RhcnRlZFdyaXRpbmcsXG4gICAgICAgICAgICAgICAgYWNjdW11bGF0ZWRMZW5ndGg6IGFjY3VtdWxhdGVkQ29udGVudC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgLi4uKGV2ZW50VHlwZSA9PT0gJ25vZGUnXG4gICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICBub2RlOiBkYXRhLm5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgdG9vbF9uYW1lOiBkYXRhLnRvb2xfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlUHJldmlldzogdHlwZW9mIGRhdGEubWVzc2FnZSA9PT0gJ3N0cmluZycgPyBkYXRhLm1lc3NhZ2Uuc2xpY2UoMCwgODApIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAuLi4oZXZlbnRUeXBlID09PSAnYXBwcm92YWxfcmVxdWlyZWQnXG4gICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICBtYW51YWxBcHByb3ZhbERldGVjdGVkOiBkYXRhLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCA9PT0gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nVG9vbHM6IEFycmF5LmlzQXJyYXkoZGF0YS5wZW5kaW5nX2FjdGlvbnMpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGRhdGEucGVuZGluZ19hY3Rpb25zLm1hcCgoYTogeyB0b29sX25hbWU/OiBzdHJpbmcgfSkgPT4gYS50b29sX25hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgc3dpdGNoIChldmVudFR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd0aGlua2luZyc6XG4gICAgICAgICAgICAgICAgICBpZiAoIWhhc1N0YXJ0ZWRXcml0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eVByZXNlcnZpbmdTdGVwcyh7XG4gICAgICAgICAgICAgICAgICAgICAgcGhhc2U6ICd0aGlua2luZycsXG4gICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSgwLCB0KSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBjYXNlICd0b2tlbic6IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gdHlwZW9mIGRhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBkYXRhLmNvbnRlbnQgOiAnJ1xuICAgICAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1DaHVuayhjaHVuaylcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSAnY29udGVudCc6IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gdHlwZW9mIGRhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBkYXRhLmNvbnRlbnQgOiAnJ1xuICAgICAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1DaHVuayhjaHVuaylcbiAgICAgICAgICAgICAgICAgIGlmIChpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1Db21wbGV0ZShkYXRhKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXNlICdub2RlJzpcbiAgICAgICAgICAgICAgICAgIGhhbmRsZVN0cmVhbU5vZGVFdmVudChkYXRhIGFzIFN0cmVhbU5vZGVFdmVudFBheWxvYWQpXG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnY29tcGxldGUnOlxuICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1Db21wbGV0ZShkYXRhKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2FwcHJvdmFsX3JlcXVpcmVkJzoge1xuICAgICAgICAgICAgICAgICAgLy8gTWFudWFsIGFwcHJvdmFsOiBlbCBTU0Ugc2lndWUgY29uIG5vZGUvdG9rZW4vY29tcGxldGUgKHkgcHVlZGVcbiAgICAgICAgICAgICAgICAgIC8vIGVuY2FkZW5hciBtw6FzIGFwcHJvdmFsX3JlcXVpcmVkKS4gU29sbyBlbCBhcHByb3ZhbCBcInBhdXNhZG9cIlxuICAgICAgICAgICAgICAgICAgLy8gKGJvdMOzbikgZXMgdGVybWluYWwgcGFyYSBlc3RlIHN0cmVhbS5cbiAgICAgICAgICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBjb25zdCBpc01hbnVhbEFwcHJvdmFsID0gZGF0YS5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQgPT09IHRydWVcbiAgICAgICAgICAgICAgICAgIHN0cmVhbURlYnVnQXBwcm92YWwoJ29yY2hlc3RyYXRvcicsICdhcHByb3ZhbF9yZXF1aXJlZCcsIGRhdGEsIHtcbiAgICAgICAgICAgICAgICAgICAgaXNNYW51YWxBcHByb3ZhbCxcbiAgICAgICAgICAgICAgICAgICAgd2lsbENsZWFyTG9hZGluZ1N0YXRlOiAhaXNNYW51YWxBcHByb3ZhbCxcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICBpZiAoIWlzTWFudWFsQXBwcm92YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyZWFtU2V0dGxlZCA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQ/LihkYXRhLCBhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICAgICAgICAgICAgICBpZiAoaXNNYW51YWxBcHByb3ZhbCAmJiBBcnJheS5pc0FycmF5KGRhdGEucGVuZGluZ19hY3Rpb25zKSAmJiBkYXRhLnBlbmRpbmdfYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFudWFsQWN0aXZpdHkgPSByZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSh0LCBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZj8uY3VycmVudClcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eShtYW51YWxBY3Rpdml0eSlcbiAgICAgICAgICAgICAgICAgICAgc3RyZWFtRGVidWdMb2dIaXRsVWlPdmVybGFwKHtcbiAgICAgICAgICAgICAgICAgICAgICBzY29wZTogJ29yY2hlc3RyYXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgc291cmNlOiAnaW5pdGlhbEFjdGl2aXR5JyxcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eU1lc3NhZ2U6IG1hbnVhbEFjdGl2aXR5Lm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgaGl0bENvbnRleHQ6IGhpdGxFeGVjdXRpb25Db250ZXh0UmVmPy5jdXJyZW50LFxuICAgICAgICAgICAgICAgICAgICAgIHVpU3VyZmFjZXM6IFsnc3RyZWFtQWN0aXZpdHknLCAnYXBwcm92YWxCb3gnXSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICAgICAgc3RyZWFtU2V0dGxlZCA9IHRydWVcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NTRSBFcnJvcjonLCBkYXRhLmVycm9yKVxuICAgICAgICAgICAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgICAgICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKSAvLyBMaW1waWFyIG1lbnNhamUgY3VhbmRvIGhheSBlcnJvclxuICAgICAgICAgICAgICAgICAgb25FcnJvclJlZi5jdXJyZW50Py4oZGF0YS5lcnJvcj8udHlwZSwgZGF0YS5lcnJvcj8ubWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdVbmtub3duIFNTRSBldmVudCB0eXBlOicsIGV2ZW50VHlwZSlcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKHBhcnNlRXJyb3IpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBTU0UgZGF0YTonLCBwYXJzZUVycm9yLCBkYXRhU3RyKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuXG4gICAgICAgIC8vIFNvbG8gZWplY3V0YXIgb25FcnJvciBzaSBubyBmdWUgdW4gc3RvcCBpbnRlbmNpb25hbFxuICAgICAgICBpZiAoIWlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgb25FcnJvclJlZi5jdXJyZW50Py4oKVxuICAgICAgICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICBpZiAoIXN0cmVhbVNldHRsZWQpIHtcbiAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHlQcmVzZXJ2aW5nU3RlcHMsXG4gICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSxcbiAgICAgIGhhbmRsZVN0cmVhbU5vZGVFdmVudCxcbiAgICAgIGhhbmRsZVN0cmVhbVdyaXRpbmdTdGFydGVkLFxuICAgICAgc3luY1N0cmVhbVRpbWVsaW5lQ29udGVudCxcbiAgICAgIHQsXG4gICAgXVxuICApXG5cbiAgY29uc3QgYXNrTWFpYSA9IGFzeW5jICh7XG4gICAgbWVzc2FnZSxcbiAgICBoaXN0b3J5LFxuICAgIHByb2plY3RJZCxcbiAgICBsYW5nLFxuICAgIHVzZXJJZCxcbiAgICBmaXJzdE5hbWUsXG4gICAgbGFzdE5hbWUsXG4gICAgY29tcGFueUlkLFxuICAgIGNoYXRJZCxcbiAgICBtZXNzYWdlSWQsXG4gICAgY2xpZW50SWQsXG4gICAgY2xpZW50TmFtZSxcbiAgICBmZWVJZCxcbiAgICBhZ2VudE5hbWUsXG4gICAgYWdlbnRJZCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgYXR0YWNobWVudHMsXG4gICAgcHJvamVjdE5hbWUsXG4gICAgdGFza0lkLFxuICAgIHRhc2tOYW1lLFxuICAgIGZhcUlkLFxuICAgIGFnZW50U3VnZ2VzdGlvbklkLFxuICAgIGZ1YUlkLFxuICAgIHNjSWQsXG4gICAgYWdlbnRFbnRpdHksXG4gICAgYWdlbnRUeXBlLFxuICAgIGNvbnRleHRNZXNzYWdlLFxuICAgIGNvbnRleHREYXRhLFxuICB9OiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgaGlzdG9yeTogQ2hhdEhpc3RvcnlbXVxuICAgIHByb2plY3RJZDogbnVtYmVyIHwgbnVsbFxuICAgIGxhbmc6IHN0cmluZ1xuICAgIHVzZXJJZDogc3RyaW5nXG4gICAgZmlyc3ROYW1lPzogc3RyaW5nXG4gICAgbGFzdE5hbWU/OiBzdHJpbmdcbiAgICBjb21wYW55SWQ6IHN0cmluZ1xuICAgIGNoYXRJZDogc3RyaW5nXG4gICAgbWVzc2FnZUlkOiBzdHJpbmdcbiAgICBjbGllbnRJZD86IG51bWJlclxuICAgIGNsaWVudE5hbWU/OiBzdHJpbmdcbiAgICBmZWVJZD86IG51bWJlclxuICAgIGFnZW50TmFtZTogc3RyaW5nXG4gICAgYWdlbnRJZDogc3RyaW5nXG4gICAgaXNXZWJTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICAgIHByb2plY3ROYW1lPzogc3RyaW5nXG4gICAgdGFza0lkPzogbnVtYmVyXG4gICAgdGFza05hbWU/OiBzdHJpbmdcbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gICAgZnVhSWQ/OiBzdHJpbmdcbiAgICBzY0lkPzogc3RyaW5nXG4gICAgYWdlbnRFbnRpdHk/OiBBZ2VudEVudGl0eVxuICAgIGFnZW50VHlwZT86IEFnZW50VHlwZVxuICAgIGNvbnRleHRNZXNzYWdlPzogQ29udGV4dE1lc3NhZ2VcbiAgICBjb250ZXh0RGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgc2V0RGF0YShudWxsKVxuICAgICAgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCA9IDBcbiAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgIGJlZ2luU3RyZWFtVGltZWxpbmVUdXJuKG1lc3NhZ2VJZClcbiAgICAgIGNvbnN0IGluaXRpYWxBY3Rpdml0eSA9IGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSh0LCB7XG4gICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgICAgIGhhc0F0dGFjaG1lbnRzOiBCb29sZWFuKGF0dGFjaG1lbnRzPy5sZW5ndGgpLFxuICAgICAgICBhdHRhY2htZW50c0NvdW50OiBhdHRhY2htZW50cz8ubGVuZ3RoID8/IDAsXG4gICAgICB9KVxuICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eShpbml0aWFsQWN0aXZpdHkpXG4gICAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IGZhbHNlIC8vIFJlc2V0ZWFyIGZsYWcgYWwgaW5pY2lhciBudWV2YSBwZXRpY2nDs25cblxuICAgICAgc3RyZWFtRGVidWdMb2coJ29yY2hlc3RyYXRvcicsICdhc2tNYWlhOnN0YXJ0JywgeyBtZXNzYWdlSWQsIGNoYXRJZCB9KVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLk9yY2hlc3RyYXRvci5vcmNoZXN0cmF0b3IoXG4gICAgICAgIHtcbiAgICAgICAgICBpbnB1dDogbWVzc2FnZSxcbiAgICAgICAgICBoaXN0b3J5LFxuICAgICAgICAgIGxhbmcsXG4gICAgICAgICAgdXNlcklkLFxuICAgICAgICAgIC4uLihmaXJzdE5hbWUgPyB7IGZpcnN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihsYXN0TmFtZSA/IHsgbGFzdE5hbWUgfSA6IHt9KSxcbiAgICAgICAgICBjb21wYW55SWQsXG4gICAgICAgICAgY2hhdElkLFxuICAgICAgICAgIG1lc3NhZ2VJZCxcbiAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICAuLi4oZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQgfSA6IHt9KSxcbiAgICAgICAgICBhZ2VudE5hbWUsXG4gICAgICAgICAgYWdlbnRJZCxcbiAgICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgICAgICAgLi4uKHByb2plY3RJZCA/IHsgcHJvamVjdElkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGF0dGFjaG1lbnRzID8geyBhdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAgIC4uLihwcm9qZWN0TmFtZSA/IHsgcHJvamVjdE5hbWUgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY2xpZW50TmFtZSA/IHsgY2xpZW50TmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLih0YXNrSWQgIT0gbnVsbCA/IHsgdGFza0lkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHRhc2tOYW1lID8geyB0YXNrTmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihmYXFJZCA/IHsgZmFxSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGZ1YUlkID8geyBmdWFJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihzY0lkID8geyBzY0lkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50RW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5IH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50VHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGUgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGNvbnRleHREYXRhID8geyBjb250ZXh0RGF0YSB9IDoge30pLFxuICAgICAgICB9LFxuICAgICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudD8uc2lnbmFsXG4gICAgICApXG5cbiAgICAgIGF3YWl0IGhhbmRsZVNTRVN0cmVhbShyZXNwb25zZSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gU2kgZnVlIHVuIGFib3J0IGludGVuY2lvbmFsIChzdG9wIG1hbnVhbCBvIGNhbWJpbyBkZSBjaGF0KSwgbm8gZGlzcGFyYXIgb25FcnJvclxuICAgICAgLy8gcG9ycXVlIGVzbyBpbnNlcnRhIHVuIFwibWVuc2FqZSBkZSBlcnJvclwiIGVuIGVsIGNoYXQgYWwgcXVlIGFjYWJhbW9zIGRlIG5hdmVnYXIuXG4gICAgICBpZiAoIWlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgIG9uRXJyb3JSZWYuY3VycmVudD8uKClcbiAgICAgIH1cbiAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RvcFN0cmVhbWluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQuYWJvcnQoKVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgb25TdG9wUmVmLmN1cnJlbnQ/LigpXG4gICAgfVxuICB9LCBbY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGVdKVxuXG4gIC8qKlxuICAgKiBBYm9ydGEgZWwgc3RyZWFtIGVuIGN1cnNvIChzaSBleGlzdGUpIHNpbiBkaXNwYXJhciBgb25TdG9wYC5cbiAgICogw5pzZWxvIGVuIGNhc29zIGRvbmRlIG5vIHF1ZXJlbW9zIGFncmVnYXIgZWwgbWVuc2FqZSBkZSBcImNhbmNlbGFkb1wiXG4gICAqIChwb3IgZWplbXBsbywgYWwgY2FtYmlhciBkZSBjaGF0KS5cbiAgICovXG4gIGNvbnN0IGFib3J0U3RyZWFtU2lsZW50bHkgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50LmFib3J0KClcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICB9XG4gIH0sIFtjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZV0pXG5cbiAgLy8gQ2xlYW51cCBhbCBkZXNtb250YXI6IHNpIHF1ZWRhIHVuIHN0cmVhbSBhY3Rpdm8sIGFib3J0YXJsbyBwYXJhIGV2aXRhclxuICAvLyBxdWUgaW50ZW50ZSBhY3R1YWxpemFyIGVzdGFkbyBlbiB1biBjb21wb25lbnRlIHlhIGRlc21vbnRhZG8gKGZ1Z2FzIGRlXG4gIC8vIG1lbW9yaWEgeSB3YXJuaW5ncykuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCkge1xuICAgICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpXG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgdXBkYXRlU3RyZWFtQWN0aXZpdHkgPSB1c2VDYWxsYmFjayhcbiAgICAoYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5IHwgbnVsbCkgPT4ge1xuICAgICAgaWYgKCFhY3Rpdml0eSkge1xuICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eShhY3Rpdml0eSlcbiAgICB9LFxuICAgIFthcHBseVN0cmVhbUFjdGl2aXR5LCBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZV1cbiAgKVxuXG4gIGNvbnN0IHJlc2V0ID0gKCkgPT4ge1xuICAgIHNldERhdGEobnVsbClcbiAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhc2tNYWlhLFxuICAgIHJlc3BvbnNlOiBkYXRhLFxuICAgIGlzTG9hZGluZyxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgdXBkYXRlU3RyZWFtQWN0aXZpdHksXG4gICAgcmVzZXQsXG4gICAgc3RvcFN0cmVhbWluZyxcbiAgICBhYm9ydFN0cmVhbVNpbGVudGx5LFxuICAgIGhhbmRsZVNTRVN0cmVhbSwgLy8gRXhwb25lciBwYXJhIHBvZGVyIHVzYXJsbyBlbiBjb250aW51ZS10aHJlYWRcbiAgICBoYW5kbGVTdHJlYW1Ob2RlRXZlbnQsXG4gICAgaGFuZGxlU3RyZWFtV3JpdGluZ1N0YXJ0ZWQsXG4gICAgYmVnaW5TdHJlYW1UaW1lbGluZVR1cm4sXG4gICAgc3luY1N0cmVhbVRpbWVsaW5lQ29udGVudCxcbiAgICBmaW5hbGl6ZVN0cmVhbUV4ZWN1dGlvblRyYWNlLFxuICAgIHJlc2V0U3RyZWFtRXhlY3V0aW9uVHJhY2UsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxRQUFRLEVBQUVDLFdBQVcsRUFBRUMsTUFBTSxFQUFFQyxTQUFTLFFBQVEsT0FBTztBQUNoRSxTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUU5QyxPQUFPQyxJQUFJLE1BQU0scUJBQXFCO0FBS3RDLFNBQVNDLFFBQVEsUUFBUSx3QkFBd0I7QUFFakQsU0FDRUMsMEJBQTBCLEVBQzFCQyw0QkFBNEIsRUFDNUJDLCtCQUErQixFQUMvQkMsNEJBQTRCLEVBQzVCQyx3QkFBd0IsRUFDeEJDLHlCQUF5QixFQUN6QkMsd0JBQXdCLEVBQ3hCQyw2QkFBNkIsRUFDN0JDLGdDQUFnQyxRQUMzQixvQ0FBb0M7QUFDM0MsU0FDRUMseUJBQXlCLEVBRXpCQyxzQkFBc0IsRUFDdEJDLCtCQUErQixFQUUvQkMseUJBQXlCLFFBQ3BCLGtDQUFrQztBQUN6QyxTQUNFQyw2QkFBNkIsRUFDN0JDLDBCQUEwQixFQUMxQkMsc0JBQXNCLEVBQ3RCQyx1QkFBdUIsUUFDbEIsNEJBQTRCO0FBQ25DLFNBQVNDLG1CQUFtQixRQUFRLDBDQUEwQztBQUM5RSxTQUFTQyx3QkFBd0IsRUFBRUMsZ0JBQWdCLFFBQVEsOEJBQThCO0FBQ3pGLFNBQ0VDLG1CQUFtQixFQUNuQkMsbUJBQW1CLEVBQ25CQyxjQUFjLEVBQ2RD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
@@ -27,8 +27,15 @@ export var completeAllExecutionSteps = function completeAllExecutionSteps(steps)
27
27
  });
28
28
  });
29
29
  };
30
+ export var getRunningExecutionSteps = function getRunningExecutionSteps(steps) {
31
+ return steps.filter(function (step) {
32
+ return step.status === 'running';
33
+ });
34
+ };
30
35
  export var shouldShowExecutionTrace = function shouldShowExecutionTrace(steps) {
31
36
  if (!(steps !== null && steps !== void 0 && steps.length)) return false;
37
+ var running = getRunningExecutionSteps(steps);
38
+ if (running.length === steps.length) return running.length >= 1;
32
39
  if (steps.length >= 2) return true;
33
40
  return steps.some(function (step) {
34
41
  return step.status === 'completed';
@@ -55,21 +62,31 @@ export var pushExecutionStepFromNode = function pushExecutionStepFromNode(curren
55
62
  return completedPrevious;
56
63
  }
57
64
  if (payload.node !== 'resuming') {
58
- var lastStep = completedPrevious[completedPrevious.length - 1];
59
- if ((lastStep === null || lastStep === void 0 ? void 0 : lastStep.node) === 'resuming' && lastStep.message.trim().toLowerCase() === message.trim().toLowerCase()) {
65
+ var _lastStep = completedPrevious[completedPrevious.length - 1];
66
+ if ((_lastStep === null || _lastStep === void 0 ? void 0 : _lastStep.node) === 'resuming' && _lastStep.message.trim().toLowerCase() === message.trim().toLowerCase()) {
60
67
  streamDebugLog('executionSteps', 'replace:redundant-resuming', {
61
- resumingMessage: lastStep.message,
68
+ resumingMessage: _lastStep.message,
62
69
  toolNode: payload.node,
63
70
  toolName: payload.tool_name
64
71
  });
65
72
  completedPrevious = completedPrevious.slice(0, -1);
66
73
  }
67
74
  }
75
+ var toolName = (_payload$tool_name = payload.tool_name) !== null && _payload$tool_name !== void 0 ? _payload$tool_name : payload.node !== 'resuming' ? payload.node : undefined;
76
+ var lastStep = completedPrevious[completedPrevious.length - 1];
77
+ if ((lastStep === null || lastStep === void 0 ? void 0 : lastStep.status) === 'running' && lastStep.toolName === toolName && lastStep.message.trim().toLowerCase() === message.trim().toLowerCase()) {
78
+ streamDebugLog('executionSteps', 'skip:duplicate-running', {
79
+ node: payload.node,
80
+ toolName: toolName,
81
+ message: message
82
+ });
83
+ return completedPrevious;
84
+ }
68
85
  var newStep = {
69
86
  id: nextStepId(),
70
87
  message: message,
71
88
  node: payload.node,
72
- toolName: (_payload$tool_name = payload.tool_name) !== null && _payload$tool_name !== void 0 ? _payload$tool_name : payload.node !== 'resuming' ? payload.node : undefined,
89
+ toolName: toolName,
73
90
  status: 'running'
74
91
  };
75
92
  var nextSteps = [].concat(_toConsumableArray(completedPrevious), [newStep]);
@@ -116,4 +133,4 @@ export var getActiveExecutionStep = function getActiveExecutionStep(steps) {
116
133
  });
117
134
  return running !== null && running !== void 0 ? running : steps[steps.length - 1];
118
135
  };
119
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSIsInN0cmVhbURlYnVnTG9nIiwiZXhlY3V0aW9uU3RlcENvdW50ZXIiLCJuZXh0U3RlcElkIiwiY29uY2F0IiwicmVzZXRFeGVjdXRpb25TdGVwQ291bnRlciIsImNvbXBsZXRlUnVubmluZ1N0ZXBzIiwic3RlcHMiLCJtYXAiLCJzdGVwIiwic3RhdHVzIiwiX29iamVjdFNwcmVhZCIsImNvbXBsZXRlUnVubmluZ1N0ZXBzSW5TdGVwcyIsImNvbXBsZXRlQWxsRXhlY3V0aW9uU3RlcHMiLCJzaG91bGRTaG93RXhlY3V0aW9uVHJhY2UiLCJsZW5ndGgiLCJzb21lIiwicmVzb2x2ZVN0ZXBNZXNzYWdlRnJvbU5vZGUiLCJwYXlsb2FkIiwidCIsImNvbnRleHQiLCJ0aHJlYWRJZCIsImFjdGl2aXR5IiwibWVzc2FnZSIsInRocmVhZF9pZCIsInB1c2hFeGVjdXRpb25TdGVwRnJvbU5vZGUiLCJjdXJyZW50U3RlcHMiLCJfY29udGV4dCRwZW5kaW5nQWN0aW8iLCJfcGF5bG9hZCR0b29sX25hbWUiLCJjb21wbGV0ZWRQcmV2aW91cyIsIm5vZGUiLCJwZW5kaW5nQWN0aW9ucyIsInBlbmRpbmdUb29scyIsImFjdGlvbiIsInRvb2xfbmFtZSIsImxhc3RTdGVwIiwidHJpbSIsInRvTG93ZXJDYXNlIiwicmVzdW1pbmdNZXNzYWdlIiwidG9vbE5vZGUiLCJ0b29sTmFtZSIsInNsaWNlIiwibmV3U3RlcCIsImlkIiwidW5kZWZpbmVkIiwibmV4dFN0ZXBzIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic3RlcENvdW50IiwiaGFzSGl0bENvbnRleHQiLCJCb29sZWFuIiwiZmluYWxpemVFeGVjdXRpb25TdGVwc0ZvcldyaXRpbmciLCJ3cml0aW5nTWVzc2FnZSIsImNvbXBsZXRlZCIsIndyaXRpbmdJbmRleCIsImZpbmRJbmRleCIsImluZGV4IiwibWVyZ2VBY3Rpdml0eVdpdGhFeGVjdXRpb25TdGVwcyIsImV4ZWN1dGlvblN0ZXBzIiwiZ2V0QWN0aXZlRXhlY3V0aW9uU3RlcCIsInJ1bm5pbmciLCJyZXZlcnNlIiwiZmluZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zdHJlYW1FeGVjdXRpb25TdGVwcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN0cmVhbUV4ZWN1dGlvblN0ZXAsIFN0cmVhbU5vZGVFdmVudFBheWxvYWQsIFN0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi4vdHlwZXMvc3RyZWFtQWN0aXZpdHknXG5pbXBvcnQgdHlwZSB7IEhpdGxFeGVjdXRpb25Db250ZXh0IH0gZnJvbSAnLi9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHkgfSBmcm9tICcuL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBzdHJlYW1EZWJ1Z0xvZyB9IGZyb20gJy4vc3RyZWFtRGVidWdMb2cnXG5cbnR5cGUgVHJhbnNsYXRlRm4gPSAoa2V5OiBzdHJpbmcpID0+IHN0cmluZ1xuXG5sZXQgZXhlY3V0aW9uU3RlcENvdW50ZXIgPSAwXG5cbmNvbnN0IG5leHRTdGVwSWQgPSAoKTogc3RyaW5nID0+IHtcbiAgZXhlY3V0aW9uU3RlcENvdW50ZXIgKz0gMVxuICByZXR1cm4gYGV4ZWMtc3RlcC0ke2V4ZWN1dGlvblN0ZXBDb3VudGVyfWBcbn1cblxuZXhwb3J0IGNvbnN0IHJlc2V0RXhlY3V0aW9uU3RlcENvdW50ZXIgPSAoKTogdm9pZCA9PiB7XG4gIGV4ZWN1dGlvblN0ZXBDb3VudGVyID0gMFxufVxuXG5jb25zdCBjb21wbGV0ZVJ1bm5pbmdTdGVwcyA9IChzdGVwczogU3RyZWFtRXhlY3V0aW9uU3RlcFtdKTogU3RyZWFtRXhlY3V0aW9uU3RlcFtdID0+XG4gIHN0ZXBzLm1hcChzdGVwID0+IChzdGVwLnN0YXR1cyA9PT0gJ3J1bm5pbmcnID8geyAuLi5zdGVwLCBzdGF0dXM6ICdjb21wbGV0ZWQnIGFzIGNvbnN0IH0gOiBzdGVwKSlcblxuZXhwb3J0IGNvbnN0IGNvbXBsZXRlUnVubmluZ1N0ZXBzSW5TdGVwcyA9IGNvbXBsZXRlUnVubmluZ1N0ZXBzXG5cbmV4cG9ydCBjb25zdCBjb21wbGV0ZUFsbEV4ZWN1dGlvblN0ZXBzID0gKHN0ZXBzOiBTdHJlYW1FeGVjdXRpb25TdGVwW10pOiBTdHJlYW1FeGVjdXRpb25TdGVwW10gPT5cbiAgc3RlcHMubWFwKHN0ZXAgPT4gKHsgLi4uc3RlcCwgc3RhdHVzOiAnY29tcGxldGVkJyBhcyBjb25zdCB9KSlcblxuZXhwb3J0IGNvbnN0IHNob3VsZFNob3dFeGVjdXRpb25UcmFjZSA9IChzdGVwczogU3RyZWFtRXhlY3V0aW9uU3RlcFtdIHwgdW5kZWZpbmVkKTogYm9vbGVhbiA9PiB7XG4gIGlmICghc3RlcHM/Lmxlbmd0aCkgcmV0dXJuIGZhbHNlXG4gIGlmIChzdGVwcy5sZW5ndGggPj0gMikgcmV0dXJuIHRydWVcbiAgcmV0dXJuIHN0ZXBzLnNvbWUoc3RlcCA9PiBzdGVwLnN0YXR1cyA9PT0gJ2NvbXBsZXRlZCcpXG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlU3RlcE1lc3NhZ2VGcm9tTm9kZSA9IChcbiAgcGF5bG9hZDogU3RyZWFtTm9kZUV2ZW50UGF5bG9hZCxcbiAgdDogVHJhbnNsYXRlRm4sXG4gIGNvbnRleHQ/OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGwsXG4gIHRocmVhZElkPzogc3RyaW5nXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBhY3Rpdml0eSA9IHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5KHBheWxvYWQubWVzc2FnZSwgdCwgY29udGV4dCwgdGhyZWFkSWQgPz8gcGF5bG9hZC50aHJlYWRfaWQpXG4gIHJldHVybiBhY3Rpdml0eS5tZXNzYWdlXG59XG5cbmV4cG9ydCBjb25zdCBwdXNoRXhlY3V0aW9uU3RlcEZyb21Ob2RlID0gKFxuICBjdXJyZW50U3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSxcbiAgcGF5bG9hZDogU3RyZWFtTm9kZUV2ZW50UGF5bG9hZCxcbiAgdDogVHJhbnNsYXRlRm4sXG4gIGNvbnRleHQ/OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGwsXG4gIHRocmVhZElkPzogc3RyaW5nXG4pOiBTdHJlYW1FeGVjdXRpb25TdGVwW10gPT4ge1xuICBjb25zdCBtZXNzYWdlID0gcmVzb2x2ZVN0ZXBNZXNzYWdlRnJvbU5vZGUocGF5bG9hZCwgdCwgY29udGV4dCwgdGhyZWFkSWQpXG4gIGxldCBjb21wbGV0ZWRQcmV2aW91cyA9IGNvbXBsZXRlUnVubmluZ1N0ZXBzKGN1cnJlbnRTdGVwcylcblxuICAvLyBjb250aW51ZS10aHJlYWQ6IGVsIGJhY2tlbmQgZW52w61hIGByZXN1bWluZ2AgeSBlbnNlZ3VpZGEgZWwgbm9kZSBkZSBsYSB0b29sXG4gIC8vIGNvbiBlbCBtaXNtbyBtZW5zYWplIGxlZ2libGUuIE9taXRpbW9zIGByZXN1bWluZ2AgcGFyYSBubyBkdXBsaWNhciBlbCBpbmRpY2Fkb3IuXG4gIGlmIChwYXlsb2FkLm5vZGUgPT09ICdyZXN1bWluZycgJiYgY29udGV4dD8ucGVuZGluZ0FjdGlvbnM/Lmxlbmd0aCkge1xuICAgIHN0cmVhbURlYnVnTG9nKCdleGVjdXRpb25TdGVwcycsICdza2lwOnJlc3VtaW5nLXdpdGgtaGl0bC1jb250ZXh0Jywge1xuICAgICAgbWVzc2FnZSxcbiAgICAgIHBlbmRpbmdUb29sczogY29udGV4dC5wZW5kaW5nQWN0aW9ucy5tYXAoYWN0aW9uID0+IGFjdGlvbi50b29sX25hbWUpLFxuICAgIH0pXG4gICAgcmV0dXJuIGNvbXBsZXRlZFByZXZpb3VzXG4gIH1cblxuICBpZiAocGF5bG9hZC5ub2RlICE9PSAncmVzdW1pbmcnKSB7XG4gICAgY29uc3QgbGFzdFN0ZXAgPSBjb21wbGV0ZWRQcmV2aW91c1tjb21wbGV0ZWRQcmV2aW91cy5sZW5ndGggLSAxXVxuICAgIGlmIChsYXN0U3RlcD8ubm9kZSA9PT0gJ3Jlc3VtaW5nJyAmJiBsYXN0U3RlcC5tZXNzYWdlLnRyaW0oKS50b0xvd2VyQ2FzZSgpID09PSBtZXNzYWdlLnRyaW0oKS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBzdHJlYW1EZWJ1Z0xvZygnZXhlY3V0aW9uU3RlcHMnLCAncmVwbGFjZTpyZWR1bmRhbnQtcmVzdW1pbmcnLCB7XG4gICAgICAgIHJlc3VtaW5nTWVzc2FnZTogbGFzdFN0ZXAubWVzc2FnZSxcbiAgICAgICAgdG9vbE5vZGU6IHBheWxvYWQubm9kZSxcbiAgICAgICAgdG9vbE5hbWU6IHBheWxvYWQudG9vbF9uYW1lLFxuICAgICAgfSlcbiAgICAgIGNvbXBsZXRlZFByZXZpb3VzID0gY29tcGxldGVkUHJldmlvdXMuc2xpY2UoMCwgLTEpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgbmV3U3RlcDogU3RyZWFtRXhlY3V0aW9uU3RlcCA9IHtcbiAgICBpZDogbmV4dFN0ZXBJZCgpLFxuICAgIG1lc3NhZ2UsXG4gICAgbm9kZTogcGF5bG9hZC5ub2RlLFxuICAgIHRvb2xOYW1lOiBwYXlsb2FkLnRvb2xfbmFtZSA/PyAocGF5bG9hZC5ub2RlICE9PSAncmVzdW1pbmcnID8gcGF5bG9hZC5ub2RlIDogdW5kZWZpbmVkKSxcbiAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgfVxuICBjb25zdCBuZXh0U3RlcHMgPSBbLi4uY29tcGxldGVkUHJldmlvdXMsIG5ld1N0ZXBdXG4gIHN0cmVhbURlYnVnTG9nKCdleGVjdXRpb25TdGVwcycsICdwdXNoJywge1xuICAgIG5vZGU6IHBheWxvYWQubm9kZSxcbiAgICB0b29sTmFtZTogbmV3U3RlcC50b29sTmFtZSxcbiAgICBtZXNzYWdlOiBuZXdTdGVwLm1lc3NhZ2UsXG4gICAgc3RlcENvdW50OiBuZXh0U3RlcHMubGVuZ3RoLFxuICAgIGhhc0hpdGxDb250ZXh0OiBCb29sZWFuKGNvbnRleHQpLFxuICB9KVxuICByZXR1cm4gbmV4dFN0ZXBzXG59XG5cbi8qKiBBbCBpbmljaWFyIHRva2VuL2NvbnRlbnQ6IG1hcmNhIHRvb2xzIGNvbW8gY29tcGxldGFkYXMgeSBhZ3JlZ2EvYWN0dWFsaXphIGVsIHBhc28gZGUgZXNjcml0dXJhLiAqL1xuZXhwb3J0IGNvbnN0IGZpbmFsaXplRXhlY3V0aW9uU3RlcHNGb3JXcml0aW5nID0gKFxuICBjdXJyZW50U3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSxcbiAgd3JpdGluZ01lc3NhZ2U6IHN0cmluZ1xuKTogU3RyZWFtRXhlY3V0aW9uU3RlcFtdID0+IHtcbiAgY29uc3QgY29tcGxldGVkID0gY29tcGxldGVSdW5uaW5nU3RlcHMoY3VycmVudFN0ZXBzKVxuICBjb25zdCB3cml0aW5nSW5kZXggPSBjb21wbGV0ZWQuZmluZEluZGV4KHN0ZXAgPT4gc3RlcC5ub2RlID09PSAnX193cml0aW5nX18nKVxuXG4gIGlmICh3cml0aW5nSW5kZXggPj0gMCkge1xuICAgIHJldHVybiBjb21wbGV0ZWQubWFwKChzdGVwLCBpbmRleCkgPT5cbiAgICAgIGluZGV4ID09PSB3cml0aW5nSW5kZXggPyB7IC4uLnN0ZXAsIG1lc3NhZ2U6IHdyaXRpbmdNZXNzYWdlLCBzdGF0dXM6ICdydW5uaW5nJyBhcyBjb25zdCB9IDogc3RlcFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgLi4uY29tcGxldGVkLFxuICAgIHtcbiAgICAgIGlkOiBuZXh0U3RlcElkKCksXG4gICAgICBtZXNzYWdlOiB3cml0aW5nTWVzc2FnZSxcbiAgICAgIG5vZGU6ICdfX3dyaXRpbmdfXycsXG4gICAgICBzdGF0dXM6ICdydW5uaW5nJyBhcyBjb25zdCxcbiAgICB9LFxuICBdXG59XG5cbmV4cG9ydCBjb25zdCBtZXJnZUFjdGl2aXR5V2l0aEV4ZWN1dGlvblN0ZXBzID0gKFxuICBhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHksXG4gIHN0ZXBzOiBTdHJlYW1FeGVjdXRpb25TdGVwW11cbik6IFN0cmVhbUFjdGl2aXR5ID0+ICh7XG4gIC4uLmFjdGl2aXR5LFxuICBleGVjdXRpb25TdGVwczogc3RlcHMubGVuZ3RoID4gMCA/IHN0ZXBzIDogdW5kZWZpbmVkLFxufSlcblxuZXhwb3J0IGNvbnN0IGdldEFjdGl2ZUV4ZWN1dGlvblN0ZXAgPSAoc3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSk6IFN0cmVhbUV4ZWN1dGlvblN0ZXAgfCBudWxsID0+IHtcbiAgaWYgKCFzdGVwcy5sZW5ndGgpIHJldHVybiBudWxsXG4gIGNvbnN0IHJ1bm5pbmcgPSBbLi4uc3RlcHNdLnJldmVyc2UoKS5maW5kKHN0ZXAgPT4gc3RlcC5zdGF0dXMgPT09ICdydW5uaW5nJylcbiAgcmV0dXJuIHJ1bm5pbmcgPz8gc3RlcHNbc3RlcHMubGVuZ3RoIC0gMV1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLFNBQVNBLDZCQUE2QixRQUFRLDBCQUEwQjtBQUN4RSxTQUFTQyxjQUFjLFFBQVEsa0JBQWtCO0FBSWpELElBQUlDLG9CQUFvQixHQUFHLENBQUM7QUFFNUIsSUFBTUMsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUEsRUFBaUI7RUFDL0JELG9CQUFvQixJQUFJLENBQUM7RUFDekIsb0JBQUFFLE1BQUEsQ0FBb0JGLG9CQUFvQjtBQUMxQyxDQUFDO0FBRUQsT0FBTyxJQUFNRyx5QkFBeUIsR0FBRyxTQUE1QkEseUJBQXlCQSxDQUFBLEVBQWU7RUFDbkRILG9CQUFvQixHQUFHLENBQUM7QUFDMUIsQ0FBQztBQUVELElBQU1JLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlDLEtBQTRCO0VBQUEsT0FDeERBLEtBQUssQ0FBQ0MsR0FBRyxDQUFDLFVBQUFDLElBQUk7SUFBQSxPQUFLQSxJQUFJLENBQUNDLE1BQU0sS0FBSyxTQUFTLEdBQUFDLGFBQUEsQ0FBQUEsYUFBQSxLQUFRRixJQUFJO01BQUVDLE1BQU0sRUFBRTtJQUFvQixLQUFLRCxJQUFJO0VBQUEsQ0FBQyxDQUFDO0FBQUE7QUFFbkcsT0FBTyxJQUFNRywyQkFBMkIsR0FBR04sb0JBQW9CO0FBRS9ELE9BQU8sSUFBTU8seUJBQXlCLEdBQUcsU0FBNUJBLHlCQUF5QkEsQ0FBSU4sS0FBNEI7RUFB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
136
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSIsInN0cmVhbURlYnVnTG9nIiwiZXhlY3V0aW9uU3RlcENvdW50ZXIiLCJuZXh0U3RlcElkIiwiY29uY2F0IiwicmVzZXRFeGVjdXRpb25TdGVwQ291bnRlciIsImNvbXBsZXRlUnVubmluZ1N0ZXBzIiwic3RlcHMiLCJtYXAiLCJzdGVwIiwic3RhdHVzIiwiX29iamVjdFNwcmVhZCIsImNvbXBsZXRlUnVubmluZ1N0ZXBzSW5TdGVwcyIsImNvbXBsZXRlQWxsRXhlY3V0aW9uU3RlcHMiLCJnZXRSdW5uaW5nRXhlY3V0aW9uU3RlcHMiLCJmaWx0ZXIiLCJzaG91bGRTaG93RXhlY3V0aW9uVHJhY2UiLCJsZW5ndGgiLCJydW5uaW5nIiwic29tZSIsInJlc29sdmVTdGVwTWVzc2FnZUZyb21Ob2RlIiwicGF5bG9hZCIsInQiLCJjb250ZXh0IiwidGhyZWFkSWQiLCJhY3Rpdml0eSIsIm1lc3NhZ2UiLCJ0aHJlYWRfaWQiLCJwdXNoRXhlY3V0aW9uU3RlcEZyb21Ob2RlIiwiY3VycmVudFN0ZXBzIiwiX2NvbnRleHQkcGVuZGluZ0FjdGlvIiwiX3BheWxvYWQkdG9vbF9uYW1lIiwiY29tcGxldGVkUHJldmlvdXMiLCJub2RlIiwicGVuZGluZ0FjdGlvbnMiLCJwZW5kaW5nVG9vbHMiLCJhY3Rpb24iLCJ0b29sX25hbWUiLCJsYXN0U3RlcCIsInRyaW0iLCJ0b0xvd2VyQ2FzZSIsInJlc3VtaW5nTWVzc2FnZSIsInRvb2xOb2RlIiwidG9vbE5hbWUiLCJzbGljZSIsInVuZGVmaW5lZCIsIm5ld1N0ZXAiLCJpZCIsIm5leHRTdGVwcyIsIl90b0NvbnN1bWFibGVBcnJheSIsInN0ZXBDb3VudCIsImhhc0hpdGxDb250ZXh0IiwiQm9vbGVhbiIsImZpbmFsaXplRXhlY3V0aW9uU3RlcHNGb3JXcml0aW5nIiwid3JpdGluZ01lc3NhZ2UiLCJjb21wbGV0ZWQiLCJ3cml0aW5nSW5kZXgiLCJmaW5kSW5kZXgiLCJpbmRleCIsIm1lcmdlQWN0aXZpdHlXaXRoRXhlY3V0aW9uU3RlcHMiLCJleGVjdXRpb25TdGVwcyIsImdldEFjdGl2ZUV4ZWN1dGlvblN0ZXAiLCJyZXZlcnNlIiwiZmluZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zdHJlYW1FeGVjdXRpb25TdGVwcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN0cmVhbUV4ZWN1dGlvblN0ZXAsIFN0cmVhbU5vZGVFdmVudFBheWxvYWQsIFN0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi4vdHlwZXMvc3RyZWFtQWN0aXZpdHknXG5pbXBvcnQgdHlwZSB7IEhpdGxFeGVjdXRpb25Db250ZXh0IH0gZnJvbSAnLi9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHkgfSBmcm9tICcuL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBzdHJlYW1EZWJ1Z0xvZyB9IGZyb20gJy4vc3RyZWFtRGVidWdMb2cnXG5cbnR5cGUgVHJhbnNsYXRlRm4gPSAoa2V5OiBzdHJpbmcpID0+IHN0cmluZ1xuXG5sZXQgZXhlY3V0aW9uU3RlcENvdW50ZXIgPSAwXG5cbmNvbnN0IG5leHRTdGVwSWQgPSAoKTogc3RyaW5nID0+IHtcbiAgZXhlY3V0aW9uU3RlcENvdW50ZXIgKz0gMVxuICByZXR1cm4gYGV4ZWMtc3RlcC0ke2V4ZWN1dGlvblN0ZXBDb3VudGVyfWBcbn1cblxuZXhwb3J0IGNvbnN0IHJlc2V0RXhlY3V0aW9uU3RlcENvdW50ZXIgPSAoKTogdm9pZCA9PiB7XG4gIGV4ZWN1dGlvblN0ZXBDb3VudGVyID0gMFxufVxuXG5jb25zdCBjb21wbGV0ZVJ1bm5pbmdTdGVwcyA9IChzdGVwczogU3RyZWFtRXhlY3V0aW9uU3RlcFtdKTogU3RyZWFtRXhlY3V0aW9uU3RlcFtdID0+XG4gIHN0ZXBzLm1hcChzdGVwID0+IChzdGVwLnN0YXR1cyA9PT0gJ3J1bm5pbmcnID8geyAuLi5zdGVwLCBzdGF0dXM6ICdjb21wbGV0ZWQnIGFzIGNvbnN0IH0gOiBzdGVwKSlcblxuZXhwb3J0IGNvbnN0IGNvbXBsZXRlUnVubmluZ1N0ZXBzSW5TdGVwcyA9IGNvbXBsZXRlUnVubmluZ1N0ZXBzXG5cbmV4cG9ydCBjb25zdCBjb21wbGV0ZUFsbEV4ZWN1dGlvblN0ZXBzID0gKHN0ZXBzOiBTdHJlYW1FeGVjdXRpb25TdGVwW10pOiBTdHJlYW1FeGVjdXRpb25TdGVwW10gPT5cbiAgc3RlcHMubWFwKHN0ZXAgPT4gKHsgLi4uc3RlcCwgc3RhdHVzOiAnY29tcGxldGVkJyBhcyBjb25zdCB9KSlcblxuZXhwb3J0IGNvbnN0IGdldFJ1bm5pbmdFeGVjdXRpb25TdGVwcyA9IChzdGVwczogU3RyZWFtRXhlY3V0aW9uU3RlcFtdKTogU3RyZWFtRXhlY3V0aW9uU3RlcFtdID0+XG4gIHN0ZXBzLmZpbHRlcihzdGVwID0+IHN0ZXAuc3RhdHVzID09PSAncnVubmluZycpXG5cbmV4cG9ydCBjb25zdCBzaG91bGRTaG93RXhlY3V0aW9uVHJhY2UgPSAoc3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT4ge1xuICBpZiAoIXN0ZXBzPy5sZW5ndGgpIHJldHVybiBmYWxzZVxuICBjb25zdCBydW5uaW5nID0gZ2V0UnVubmluZ0V4ZWN1dGlvblN0ZXBzKHN0ZXBzKVxuICBpZiAocnVubmluZy5sZW5ndGggPT09IHN0ZXBzLmxlbmd0aCkgcmV0dXJuIHJ1bm5pbmcubGVuZ3RoID49IDFcbiAgaWYgKHN0ZXBzLmxlbmd0aCA+PSAyKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gc3RlcHMuc29tZShzdGVwID0+IHN0ZXAuc3RhdHVzID09PSAnY29tcGxldGVkJylcbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVTdGVwTWVzc2FnZUZyb21Ob2RlID0gKFxuICBwYXlsb2FkOiBTdHJlYW1Ob2RlRXZlbnRQYXlsb2FkLFxuICB0OiBUcmFuc2xhdGVGbixcbiAgY29udGV4dD86IEhpdGxFeGVjdXRpb25Db250ZXh0IHwgbnVsbCxcbiAgdGhyZWFkSWQ/OiBzdHJpbmdcbik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGFjdGl2aXR5ID0gcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHkocGF5bG9hZC5tZXNzYWdlLCB0LCBjb250ZXh0LCB0aHJlYWRJZCA/PyBwYXlsb2FkLnRocmVhZF9pZClcbiAgcmV0dXJuIGFjdGl2aXR5Lm1lc3NhZ2Vcbn1cblxuZXhwb3J0IGNvbnN0IHB1c2hFeGVjdXRpb25TdGVwRnJvbU5vZGUgPSAoXG4gIGN1cnJlbnRTdGVwczogU3RyZWFtRXhlY3V0aW9uU3RlcFtdLFxuICBwYXlsb2FkOiBTdHJlYW1Ob2RlRXZlbnRQYXlsb2FkLFxuICB0OiBUcmFuc2xhdGVGbixcbiAgY29udGV4dD86IEhpdGxFeGVjdXRpb25Db250ZXh0IHwgbnVsbCxcbiAgdGhyZWFkSWQ/OiBzdHJpbmdcbik6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSA9PiB7XG4gIGNvbnN0IG1lc3NhZ2UgPSByZXNvbHZlU3RlcE1lc3NhZ2VGcm9tTm9kZShwYXlsb2FkLCB0LCBjb250ZXh0LCB0aHJlYWRJZClcbiAgbGV0IGNvbXBsZXRlZFByZXZpb3VzID0gY29tcGxldGVSdW5uaW5nU3RlcHMoY3VycmVudFN0ZXBzKVxuXG4gIC8vIGNvbnRpbnVlLXRocmVhZDogZWwgYmFja2VuZCBlbnbDrWEgYHJlc3VtaW5nYCB5IGVuc2VndWlkYSBlbCBub2RlIGRlIGxhIHRvb2xcbiAgLy8gY29uIGVsIG1pc21vIG1lbnNhamUgbGVnaWJsZS4gT21pdGltb3MgYHJlc3VtaW5nYCBwYXJhIG5vIGR1cGxpY2FyIGVsIGluZGljYWRvci5cbiAgaWYgKHBheWxvYWQubm9kZSA9PT0gJ3Jlc3VtaW5nJyAmJiBjb250ZXh0Py5wZW5kaW5nQWN0aW9ucz8ubGVuZ3RoKSB7XG4gICAgc3RyZWFtRGVidWdMb2coJ2V4ZWN1dGlvblN0ZXBzJywgJ3NraXA6cmVzdW1pbmctd2l0aC1oaXRsLWNvbnRleHQnLCB7XG4gICAgICBtZXNzYWdlLFxuICAgICAgcGVuZGluZ1Rvb2xzOiBjb250ZXh0LnBlbmRpbmdBY3Rpb25zLm1hcChhY3Rpb24gPT4gYWN0aW9uLnRvb2xfbmFtZSksXG4gICAgfSlcbiAgICByZXR1cm4gY29tcGxldGVkUHJldmlvdXNcbiAgfVxuXG4gIGlmIChwYXlsb2FkLm5vZGUgIT09ICdyZXN1bWluZycpIHtcbiAgICBjb25zdCBsYXN0U3RlcCA9IGNvbXBsZXRlZFByZXZpb3VzW2NvbXBsZXRlZFByZXZpb3VzLmxlbmd0aCAtIDFdXG4gICAgaWYgKGxhc3RTdGVwPy5ub2RlID09PSAncmVzdW1pbmcnICYmIGxhc3RTdGVwLm1lc3NhZ2UudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT09IG1lc3NhZ2UudHJpbSgpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIHN0cmVhbURlYnVnTG9nKCdleGVjdXRpb25TdGVwcycsICdyZXBsYWNlOnJlZHVuZGFudC1yZXN1bWluZycsIHtcbiAgICAgICAgcmVzdW1pbmdNZXNzYWdlOiBsYXN0U3RlcC5tZXNzYWdlLFxuICAgICAgICB0b29sTm9kZTogcGF5bG9hZC5ub2RlLFxuICAgICAgICB0b29sTmFtZTogcGF5bG9hZC50b29sX25hbWUsXG4gICAgICB9KVxuICAgICAgY29tcGxldGVkUHJldmlvdXMgPSBjb21wbGV0ZWRQcmV2aW91cy5zbGljZSgwLCAtMSlcbiAgICB9XG4gIH1cblxuICBjb25zdCB0b29sTmFtZSA9IHBheWxvYWQudG9vbF9uYW1lID8/IChwYXlsb2FkLm5vZGUgIT09ICdyZXN1bWluZycgPyBwYXlsb2FkLm5vZGUgOiB1bmRlZmluZWQpXG4gIGNvbnN0IGxhc3RTdGVwID0gY29tcGxldGVkUHJldmlvdXNbY29tcGxldGVkUHJldmlvdXMubGVuZ3RoIC0gMV1cbiAgaWYgKFxuICAgIGxhc3RTdGVwPy5zdGF0dXMgPT09ICdydW5uaW5nJyAmJlxuICAgIGxhc3RTdGVwLnRvb2xOYW1lID09PSB0b29sTmFtZSAmJlxuICAgIGxhc3RTdGVwLm1lc3NhZ2UudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT09IG1lc3NhZ2UudHJpbSgpLnRvTG93ZXJDYXNlKClcbiAgKSB7XG4gICAgc3RyZWFtRGVidWdMb2coJ2V4ZWN1dGlvblN0ZXBzJywgJ3NraXA6ZHVwbGljYXRlLXJ1bm5pbmcnLCB7XG4gICAgICBub2RlOiBwYXlsb2FkLm5vZGUsXG4gICAgICB0b29sTmFtZSxcbiAgICAgIG1lc3NhZ2UsXG4gICAgfSlcbiAgICByZXR1cm4gY29tcGxldGVkUHJldmlvdXNcbiAgfVxuXG4gIGNvbnN0IG5ld1N0ZXA6IFN0cmVhbUV4ZWN1dGlvblN0ZXAgPSB7XG4gICAgaWQ6IG5leHRTdGVwSWQoKSxcbiAgICBtZXNzYWdlLFxuICAgIG5vZGU6IHBheWxvYWQubm9kZSxcbiAgICB0b29sTmFtZSxcbiAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgfVxuICBjb25zdCBuZXh0U3RlcHMgPSBbLi4uY29tcGxldGVkUHJldmlvdXMsIG5ld1N0ZXBdXG4gIHN0cmVhbURlYnVnTG9nKCdleGVjdXRpb25TdGVwcycsICdwdXNoJywge1xuICAgIG5vZGU6IHBheWxvYWQubm9kZSxcbiAgICB0b29sTmFtZTogbmV3U3RlcC50b29sTmFtZSxcbiAgICBtZXNzYWdlOiBuZXdTdGVwLm1lc3NhZ2UsXG4gICAgc3RlcENvdW50OiBuZXh0U3RlcHMubGVuZ3RoLFxuICAgIGhhc0hpdGxDb250ZXh0OiBCb29sZWFuKGNvbnRleHQpLFxuICB9KVxuICByZXR1cm4gbmV4dFN0ZXBzXG59XG5cbi8qKiBBbCBpbmljaWFyIHRva2VuL2NvbnRlbnQ6IG1hcmNhIHRvb2xzIGNvbW8gY29tcGxldGFkYXMgeSBhZ3JlZ2EvYWN0dWFsaXphIGVsIHBhc28gZGUgZXNjcml0dXJhLiAqL1xuZXhwb3J0IGNvbnN0IGZpbmFsaXplRXhlY3V0aW9uU3RlcHNGb3JXcml0aW5nID0gKFxuICBjdXJyZW50U3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSxcbiAgd3JpdGluZ01lc3NhZ2U6IHN0cmluZ1xuKTogU3RyZWFtRXhlY3V0aW9uU3RlcFtdID0+IHtcbiAgY29uc3QgY29tcGxldGVkID0gY29tcGxldGVSdW5uaW5nU3RlcHMoY3VycmVudFN0ZXBzKVxuICBjb25zdCB3cml0aW5nSW5kZXggPSBjb21wbGV0ZWQuZmluZEluZGV4KHN0ZXAgPT4gc3RlcC5ub2RlID09PSAnX193cml0aW5nX18nKVxuXG4gIGlmICh3cml0aW5nSW5kZXggPj0gMCkge1xuICAgIHJldHVybiBjb21wbGV0ZWQubWFwKChzdGVwLCBpbmRleCkgPT5cbiAgICAgIGluZGV4ID09PSB3cml0aW5nSW5kZXggPyB7IC4uLnN0ZXAsIG1lc3NhZ2U6IHdyaXRpbmdNZXNzYWdlLCBzdGF0dXM6ICdydW5uaW5nJyBhcyBjb25zdCB9IDogc3RlcFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgLi4uY29tcGxldGVkLFxuICAgIHtcbiAgICAgIGlkOiBuZXh0U3RlcElkKCksXG4gICAgICBtZXNzYWdlOiB3cml0aW5nTWVzc2FnZSxcbiAgICAgIG5vZGU6ICdfX3dyaXRpbmdfXycsXG4gICAgICBzdGF0dXM6ICdydW5uaW5nJyBhcyBjb25zdCxcbiAgICB9LFxuICBdXG59XG5cbmV4cG9ydCBjb25zdCBtZXJnZUFjdGl2aXR5V2l0aEV4ZWN1dGlvblN0ZXBzID0gKFxuICBhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHksXG4gIHN0ZXBzOiBTdHJlYW1FeGVjdXRpb25TdGVwW11cbik6IFN0cmVhbUFjdGl2aXR5ID0+ICh7XG4gIC4uLmFjdGl2aXR5LFxuICBleGVjdXRpb25TdGVwczogc3RlcHMubGVuZ3RoID4gMCA/IHN0ZXBzIDogdW5kZWZpbmVkLFxufSlcblxuZXhwb3J0IGNvbnN0IGdldEFjdGl2ZUV4ZWN1dGlvblN0ZXAgPSAoc3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSk6IFN0cmVhbUV4ZWN1dGlvblN0ZXAgfCBudWxsID0+IHtcbiAgaWYgKCFzdGVwcy5sZW5ndGgpIHJldHVybiBudWxsXG4gIGNvbnN0IHJ1bm5pbmcgPSBbLi4uc3RlcHNdLnJldmVyc2UoKS5maW5kKHN0ZXAgPT4gc3RlcC5zdGF0dXMgPT09ICdydW5uaW5nJylcbiAgcmV0dXJuIHJ1bm5pbmcgPz8gc3RlcHNbc3RlcHMubGVuZ3RoIC0gMV1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLFNBQVNBLDZCQUE2QixRQUFRLDBCQUEwQjtBQUN4RSxTQUFTQyxjQUFjLFFBQVEsa0JBQWtCO0FBSWpELElBQUlDLG9CQUFvQixHQUFHLENBQUM7QUFFNUIsSUFBTUMsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUEsRUFBaUI7RUFDL0JELG9CQUFvQixJQUFJLENBQUM7RUFDekIsb0JBQUFFLE1BQUEsQ0FBb0JGLG9CQUFvQjtBQUMxQyxDQUFDO0FBRUQsT0FBTyxJQUFNRyx5QkFBeUIsR0FBRyxTQUE1QkEseUJBQXlCQSxDQUFBLEVBQWU7RUFDbkRILG9CQUFvQixHQUFHLENBQUM7QUFDMUIsQ0FBQztBQUVELElBQU1JLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlDLEtBQTRCO0VBQUEsT0FDeERBLEtBQUssQ0FBQ0MsR0FBRyxDQUFDLFVBQUFDLElBQUk7SUFBQSxPQUFLQSxJQUFJLENBQUNDLE1BQU0sS0FBSyxTQUFTLEdBQUFDLGFBQUEsQ0FBQUEsYUFBQSxLQUFRRixJQUFJO01BQUVDLE1BQU0sRUFBRTtJQUFvQixLQUFLRCxJQUFJO0VBQUEsQ0FBQyxDQUFDO0FBQUE7QUFFbkcsT0FBTyxJQUFNRywyQkFBMkIsR0FBR04sb0JBQW9CO0FBRS9ELE9BQU8sSUFBTU8seUJBQXlCLEdBQUcsU0FBNUJBLHlCQUF5QkEsQ0FBSU4sS0FBNEI7RUFBQSxPQUNwRUEsS0FBSyxDQUFDQyxHQUFHLENBQUMsVUFBQUMsSUFBSTtJQUFBLE9BQUFFLGFBQUEsQ0FBQUEsYUFBQSxLQUFVRixJQUFJO01BQUVDLE1BQU0sRUFBRTtJQUFvQjtFQUFBLENBQUcsQ0FBQztBQUFBO0FBRWhFLE9BQU8sSUFBTUksd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FBSVAsS0FBNEI7RUFBQSxPQUNuRUEsS0FBSyxDQUFDUSxNQUFNLENBQUMsVUFBQU4sSUFBSTtJQUFBLE9BQUlBLElBQUksQ0FBQ0MsTUFBTSxLQUFLLFNBQVM7RUFBQSxFQUFDO0FBQUE7QUFFakQsT0FBTyxJQUFNTSx3QkFBd0IsR0FBRyxTQUEzQkEsd0JBQXdCQSxDQUFJVCxLQUF3QyxFQUFjO0VBQzdGLElBQUksRUFBQ0EsS0FBSyxhQUFMQSxLQUFLLGVBQUxBLEtBQUssQ0FBRVUsTUFBTSxHQUFFLE9BQU8sS0FBSztFQUNoQyxJQUFNQyxPQUFPLEdBQUdKLHdCQUF3QixDQUFDUCxLQUFLLENBQUM7RUFDL0MsSUFBSVcsT0FBTyxDQUFDRCxNQUFNLEtBQUtWLEtBQUssQ0FBQ1UsTUFBTSxFQUFFLE9BQU9DLE9BQU8sQ0FBQ0QsTUFBTSxJQUFJLENBQUM7RUFDL0QsSUFBSVYsS0FBSyxDQUFDVSxNQUFNLElBQUksQ0FBQyxFQUFFLE9BQU8sSUFBSTtFQUNsQyxPQUFPVixLQUFLLENBQUNZLElBQUksQ0FBQyxVQUFBVixJQUFJO0lBQUEsT0FBSUEsSUFBSSxDQUFDQyxNQUFNLEtBQUssV0FBVztFQUFBLEVBQUM7QUFDeEQsQ0FBQztBQUVELE9BQU8sSUFBTVUsMEJBQTBCLEdBQUcsU0FBN0JBLDBCQUEwQkEsQ0FDckNDLE9BQStCLEVBQy9CQyxDQUFjLEVBQ2RDLE9BQXFDLEVBQ3JDQyxRQUFpQixFQUNOO0VBQ1gsSUFBTUMsUUFBUSxHQUFHekIsNkJBQTZCLENBQUNxQixPQUFPLENBQUNLLE9BQU8sRUFBRUosQ0FBQyxFQUFFQyxPQUFPLEVBQUVDLFFBQVEsYUFBUkEsUUFBUSxjQUFSQSxRQUFRLEdBQUlILE9BQU8sQ0FBQ00sU0FBUyxDQUFDO0VBQzFHLE9BQU9GLFFBQVEsQ0FBQ0MsT0FBTztBQUN6QixDQUFDO0FBRUQsT0FBTyxJQUFNRSx5QkFBeUIsR0FBRyxTQUE1QkEseUJBQXlCQSxDQUNwQ0MsWUFBbUMsRUFDbkNSLE9BQStCLEVBQy9CQyxDQUFjLEVBQ2RDLE9BQXFDLEVBQ3JDQyxRQUFpQixFQUNTO0VBQUEsSUFBQU0scUJBQUEsRUFBQUMsa0JBQUE7RUFDMUIsSUFBTUwsT0FBTyxHQUFHTiwwQkFBMEIsQ0FBQ0MsT0FBTyxFQUFFQyxDQUFDLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxDQUFDO0VBQ3pFLElBQUlRLGlCQUFpQixHQUFHMUIsb0JBQW9CLENBQUN1QixZQUFZLENBQUM7O0VBRTFEO0VBQ0E7RUFDQSxJQUFJUixPQUFPLENBQUNZLElBQUksS0FBSyxVQUFVLElBQUlWLE9BQU8sYUFBUEEsT0FBTyxnQkFBQU8scUJBQUEsR0FBUFAsT0FBTyxDQUFFVyxjQUFjLGNBQUFKLHFCQUFBLGVBQXZCQSxxQkFBQSxDQUF5QmIsTUFBTSxFQUFFO0lBQ2xFaEIsY0FBYyxDQUFDLGdCQUFnQixFQUFFLGlDQUFpQyxFQUFFO01BQ2xFeUIsT0FBTyxFQUFQQSxPQUFPO01BQ1BTLFlBQVksRUFBRVosT0FBTyxDQUFDVyxjQUFjLENBQUMxQixHQUFHLENBQUMsVUFBQTRCLE1BQU07UUFBQSxPQUFJQSxNQUFNLENBQUNDLFNBQVM7TUFBQTtJQUNyRSxDQUFDLENBQUM7SUFDRixPQUFPTCxpQkFBaUI7RUFDMUI7RUFFQSxJQUFJWCxPQUFPLENBQUNZLElBQUksS0FBSyxVQUFVLEVBQUU7SUFDL0IsSUFBTUssU0FBUSxHQUFHTixpQkFBaUIsQ0FBQ0EsaUJBQWlCLENBQUNmLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDaEUsSUFBSSxDQUFBcUIsU0FBUSxhQUFSQSxTQUFRLHVCQUFSQSxTQUFRLENBQUVMLElBQUksTUFBSyxVQUFVLElBQUlLLFNBQVEsQ0FBQ1osT0FBTyxDQUFDYSxJQUFJLENBQUMsQ0FBQyxDQUFDQyxXQUFXLENBQUMsQ0FBQyxLQUFLZCxPQUFPLENBQUNhLElBQUksQ0FBQyxDQUFDLENBQUNDLFdBQVcsQ0FBQyxDQUFDLEVBQUU7TUFDM0d2QyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsNEJBQTRCLEVBQUU7UUFDN0R3QyxlQUFlLEVBQUVILFNBQVEsQ0FBQ1osT0FBTztRQUNqQ2dCLFFBQVEsRUFBRXJCLE9BQU8sQ0FBQ1ksSUFBSTtRQUN0QlUsUUFBUSxFQUFFdEIsT0FBTyxDQUFDZ0I7TUFDcEIsQ0FBQyxDQUFDO01BQ0ZMLGlCQUFpQixHQUFHQSxpQkFBaUIsQ0FBQ1ksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRDtFQUNGO0VBRUEsSUFBTUQsUUFBUSxJQUFBWixrQkFBQSxHQUFHVixPQUFPLENBQUNnQixTQUFTLGNBQUFOLGtCQUFBLGNBQUFBLGtCQUFBLEdBQUtWLE9BQU8sQ0FBQ1ksSUFBSSxLQUFLLFVBQVUsR0FBR1osT0FBTyxDQUFDWSxJQUFJLEdBQUdZLFNBQVU7RUFDOUYsSUFBTVAsUUFBUSxHQUFHTixpQkFBaUIsQ0FBQ0EsaUJBQWlCLENBQUNmLE1BQU0sR0FBRyxDQUFDLENBQUM7RUFDaEUsSUFDRSxDQUFBcUIsUUFBUSxhQUFSQSxRQUFRLHVCQUFSQSxRQUFRLENBQUU1QixNQUFNLE1BQUssU0FBUyxJQUM5QjRCLFFBQVEsQ0FBQ0ssUUFBUSxLQUFLQSxRQUFRLElBQzlCTCxRQUFRLENBQUNaLE9BQU8sQ0FBQ2EsSUFBSSxDQUFDLENBQUMsQ0FBQ0MsV0FBVyxDQUFDLENBQUMsS0FBS2QsT0FBTyxDQUFDYSxJQUFJLENBQUMsQ0FBQyxDQUFDQyxXQUFXLENBQUMsQ0FBQyxFQUN0RTtJQUNBdkMsY0FBYyxDQUFDLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFO01BQ3pEZ0MsSUFBSSxFQUFFWixPQUFPLENBQUNZLElBQUk7TUFDbEJVLFFBQVEsRUFBUkEsUUFBUTtNQUNSakIsT0FBTyxFQUFQQTtJQUNGLENBQUMsQ0FBQztJQUNGLE9BQU9NLGlCQUFpQjtFQUMxQjtFQUVBLElBQU1jLE9BQTRCLEdBQUc7SUFDbkNDLEVBQUUsRUFBRTVDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hCdUIsT0FBTyxFQUFQQSxPQUFPO0lBQ1BPLElBQUksRUFBRVosT0FBTyxDQUFDWSxJQUFJO0lBQ2xCVSxRQUFRLEVBQVJBLFFBQVE7SUFDUmpDLE1BQU0sRUFBRTtFQUNWLENBQUM7RUFDRCxJQUFNc0MsU0FBUyxNQUFBNUMsTUFBQSxDQUFBNkMsa0JBQUEsQ0FBT2pCLGlCQUFpQixJQUFFYyxPQUFPLEVBQUM7RUFDakQ3QyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFO0lBQ3ZDZ0MsSUFBSSxFQUFFWixPQUFPLENBQUNZLElBQUk7SUFDbEJVLFFBQVEsRUFBRUcsT0FBTyxDQUFDSCxRQUFRO0lBQzFCakIsT0FBTyxFQUFFb0IsT0FBTyxDQUFDcEIsT0FBTztJQUN4QndCLFNBQVMsRUFBRUYsU0FBUyxDQUFDL0IsTUFBTTtJQUMzQmtDLGNBQWMsRUFBRUMsT0FBTyxDQUFDN0IsT0FBTztFQUNqQyxDQUFDLENBQUM7RUFDRixPQUFPeUIsU0FBUztBQUNsQixDQUFDOztBQUVEO0FBQ0EsT0FBTyxJQUFNSyxnQ0FBZ0MsR0FBRyxTQUFuQ0EsZ0NBQWdDQSxDQUMzQ3hCLFlBQW1DLEVBQ25DeUIsY0FBc0IsRUFDSTtFQUMxQixJQUFNQyxTQUFTLEdBQUdqRCxvQkFBb0IsQ0FBQ3VCLFlBQVksQ0FBQztFQUNwRCxJQUFNMkIsWUFBWSxHQUFHRCxTQUFTLENBQUNFLFNBQVMsQ0FBQyxVQUFBaEQsSUFBSTtJQUFBLE9BQUlBLElBQUksQ0FBQ3dCLElBQUksS0FBSyxhQUFhO0VBQUEsRUFBQztFQUU3RSxJQUFJdUIsWUFBWSxJQUFJLENBQUMsRUFBRTtJQUNyQixPQUFPRCxTQUFTLENBQUMvQyxHQUFHLENBQUMsVUFBQ0MsSUFBSSxFQUFFaUQsS0FBSztNQUFBLE9BQy9CQSxLQUFLLEtBQUtGLFlBQVksR0FBQTdDLGFBQUEsQ0FBQUEsYUFBQSxLQUFRRixJQUFJO1FBQUVpQixPQUFPLEVBQUU0QixjQUFjO1FBQUU1QyxNQUFNLEVBQUU7TUFBa0IsS0FBS0QsSUFBSTtJQUFBLENBQ2xHLENBQUM7RUFDSDtFQUVBLFVBQUFMLE1BQUEsQ0FBQTZDLGtCQUFBLENBQ0tNLFNBQVMsSUFDWjtJQUNFUixFQUFFLEVBQUU1QyxVQUFVLENBQUMsQ0FBQztJQUNoQnVCLE9BQU8sRUFBRTRCLGNBQWM7SUFDdkJyQixJQUFJLEVBQUUsYUFBYTtJQUNuQnZCLE1BQU0sRUFBRTtFQUNWLENBQUM7QUFFTCxDQUFDO0FBRUQsT0FBTyxJQUFNaUQsK0JBQStCLEdBQUcsU0FBbENBLCtCQUErQkEsQ0FDMUNsQyxRQUF3QixFQUN4QmxCLEtBQTRCO0VBQUEsT0FBQUksYUFBQSxDQUFBQSxhQUFBLEtBRXpCYyxRQUFRO0lBQ1htQyxjQUFjLEVBQUVyRCxLQUFLLENBQUNVLE1BQU0sR0FBRyxDQUFDLEdBQUdWLEtBQUssR0FBR3NDO0VBQVM7QUFBQSxDQUNwRDtBQUVGLE9BQU8sSUFBTWdCLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUl0RCxLQUE0QixFQUFpQztFQUNsRyxJQUFJLENBQUNBLEtBQUssQ0FBQ1UsTUFBTSxFQUFFLE9BQU8sSUFBSTtFQUM5QixJQUFNQyxPQUFPLEdBQUcrQixrQkFBQSxDQUFJMUMsS0FBSyxFQUFFdUQsT0FBTyxDQUFDLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLFVBQUF0RCxJQUFJO0lBQUEsT0FBSUEsSUFBSSxDQUFDQyxNQUFNLEtBQUssU0FBUztFQUFBLEVBQUM7RUFDNUUsT0FBT1EsT0FBTyxhQUFQQSxPQUFPLGNBQVBBLE9BQU8sR0FBSVgsS0FBSyxDQUFDQSxLQUFLLENBQUNVLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDM0MsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -71,6 +71,13 @@ export var appendNodeToStreamTimeline = function appendNodeToStreamTimeline(snap
71
71
  var executionIndex = segments.length - 1;
72
72
  var executionSegment = segments[executionIndex];
73
73
  var steps = pushExecutionStepFromNode(executionSegment.steps, payload, t, context, threadId);
74
+ if (steps.length === 0) {
75
+ streamDebugLog('timeline', 'node:skip-empty', {
76
+ node: payload.node,
77
+ tool_name: payload.tool_name
78
+ });
79
+ return base;
80
+ }
74
81
  segments[executionIndex] = _objectSpread(_objectSpread({}, executionSegment), {}, {
75
82
  steps: steps
76
83
  });
@@ -133,18 +140,27 @@ export var finalizeStreamTimeline = function finalizeStreamTimeline(snapshot) {
133
140
  return next;
134
141
  };
135
142
  export var buildActivityFromExecutionSegment = function buildActivityFromExecutionSegment(segment, t) {
136
- var _ref, _running$message;
137
- var running = _toConsumableArray(segment.steps).reverse().find(function (step) {
143
+ var _active$message;
144
+ var runningSteps = segment.steps.filter(function (step) {
138
145
  return step.status === 'running';
139
146
  });
140
- var lastStep = segment.steps[segment.steps.length - 1];
141
- var message = (_ref = (_running$message = running === null || running === void 0 ? void 0 : running.message) !== null && _running$message !== void 0 ? _running$message : lastStep === null || lastStep === void 0 ? void 0 : lastStep.message) !== null && _ref !== void 0 ? _ref : t('chat.executingAction');
147
+ var active = runningSteps[runningSteps.length - 1];
148
+ var message = (_active$message = active === null || active === void 0 ? void 0 : active.message) !== null && _active$message !== void 0 ? _active$message : t('chat.executingAction');
142
149
  return {
143
150
  phase: 'action',
144
151
  message: message,
145
- executionSteps: segment.steps
152
+ executionSteps: runningSteps
146
153
  };
147
154
  };
155
+ export var collectRunningStepsFromTimeline = function collectRunningStepsFromTimeline(segments) {
156
+ return segments.filter(function (segment) {
157
+ return segment.type === 'execution';
158
+ }).flatMap(function (segment) {
159
+ return segment.steps.filter(function (step) {
160
+ return step.status === 'running';
161
+ });
162
+ });
163
+ };
148
164
 
149
165
  /** Cierra steps en ejecución sin crear segmento de contenido (p. ej. al recibir otro node). */
150
166
  export var completeRunningStepsInTimeline = function completeRunningStepsInTimeline(snapshot) {
@@ -158,4 +174,4 @@ export var completeRunningStepsInTimeline = function completeRunningStepsInTimel
158
174
  segments: segments
159
175
  });
160
176
  };
161
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21wbGV0ZUFsbEV4ZWN1dGlvblN0ZXBzIiwiY29tcGxldGVSdW5uaW5nU3RlcHNJblN0ZXBzIiwicHVzaEV4ZWN1dGlvblN0ZXBGcm9tTm9kZSIsInN0cmVhbURlYnVnTG9nIiwic3RyZWFtRGVidWdUaW1lbGluZSIsInRpbWVsaW5lU2VnbWVudENvdW50ZXIiLCJuZXh0U2VnbWVudElkIiwicHJlZml4IiwiY29uY2F0IiwicmVzZXRUaW1lbGluZVNlZ21lbnRDb3VudGVyIiwiY3JlYXRlRW1wdHlUaW1lbGluZVNuYXBzaG90IiwidHVybklkIiwic2VnbWVudHMiLCJjb250ZW50RnJvemVuTGVuZ3RoIiwiZ2V0TGFzdFNlZ21lbnQiLCJsZW5ndGgiLCJzZWFsRXhlY3V0aW9uU2VnbWVudCIsInNlZ21lbnQiLCJfb2JqZWN0U3ByZWFkIiwic3RlcHMiLCJzZWFsQWxsRXhlY3V0aW9uU2VnbWVudHMiLCJtYXAiLCJ0eXBlIiwic3RhcnRTdHJlYW1UaW1lbGluZVR1cm4iLCJzbmFwc2hvdCIsImFwcGVuZE5vZGVUb1N0cmVhbVRpbWVsaW5lIiwicGF5bG9hZCIsImFjY3VtdWxhdGVkVGV4dCIsInQiLCJjb250ZXh0IiwidGhyZWFkSWQiLCJiYXNlIiwibGFzdEJlZm9yZSIsImZyZWV6ZVRpbWVsaW5lQ29udGVudEJvdW5kYXJ5IiwibGFzdCIsIl90b0NvbnN1bWFibGVBcnJheSIsInB1c2giLCJpZCIsImV4ZWN1dGlvbkluZGV4IiwiZXhlY3V0aW9uU2VnbWVudCIsIm5leHQiLCJub2RlIiwidG9vbF9uYW1lIiwidGhyZWFkX2lkIiwiYmFja2VuZE1lc3NhZ2UiLCJtZXNzYWdlIiwic3RlcENvdW50IiwiaGFzSGl0bENvbnRleHQiLCJCb29sZWFuIiwiYXBwZW5kQ29udGVudFRvU3RyZWFtVGltZWxpbmUiLCJzbGljZVRleHQiLCJzbGljZSIsInNlYWxlZCIsInRleHQiLCJmaW5hbGl6ZVN0cmVhbVRpbWVsaW5lIiwiYnVpbGRBY3Rpdml0eUZyb21FeGVjdXRpb25TZWdtZW50IiwiX3JlZiIsIl9ydW5uaW5nJG1lc3NhZ2UiLCJydW5uaW5nIiwicmV2ZXJzZSIsImZpbmQiLCJzdGVwIiwic3RhdHVzIiwibGFzdFN0ZXAiLCJwaGFzZSIsImV4ZWN1dGlvblN0ZXBzIiwiY29tcGxldGVSdW5uaW5nU3RlcHNJblRpbWVsaW5lIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3N0cmVhbVRpbWVsaW5lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU3RyZWFtRXhlY3V0aW9uU3RlcCB9IGZyb20gJy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHR5cGUge1xuICBTdHJlYW1UaW1lbGluZUV4ZWN1dGlvblNlZ21lbnQsXG4gIFN0cmVhbVRpbWVsaW5lU2VnbWVudCxcbiAgU3RyZWFtVGltZWxpbmVTbmFwc2hvdCxcbn0gZnJvbSAnLi4vdHlwZXMvc3RyZWFtVGltZWxpbmUnXG5pbXBvcnQge1xuICBjb21wbGV0ZUFsbEV4ZWN1dGlvblN0ZXBzLFxuICBjb21wbGV0ZVJ1bm5pbmdTdGVwc0luU3RlcHMsXG4gIHB1c2hFeGVjdXRpb25TdGVwRnJvbU5vZGUsXG59IGZyb20gJy4vc3RyZWFtRXhlY3V0aW9uU3RlcHMnXG5pbXBvcnQgdHlwZSB7IFN0cmVhbU5vZGVFdmVudFBheWxvYWQgfSBmcm9tICcuLi90eXBlcy9zdHJlYW1BY3Rpdml0eSdcbmltcG9ydCB0eXBlIHsgSGl0bEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tICcuL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBzdHJlYW1EZWJ1Z0xvZywgc3RyZWFtRGVidWdUaW1lbGluZSB9IGZyb20gJy4vc3RyZWFtRGVidWdMb2cnXG5cbnR5cGUgVHJhbnNsYXRlRm4gPSAoa2V5OiBzdHJpbmcpID0+IHN0cmluZ1xuXG5sZXQgdGltZWxpbmVTZWdtZW50Q291bnRlciA9IDBcblxuY29uc3QgbmV4dFNlZ21lbnRJZCA9IChwcmVmaXg6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHRpbWVsaW5lU2VnbWVudENvdW50ZXIgKz0gMVxuICByZXR1cm4gYCR7cHJlZml4fS0ke3RpbWVsaW5lU2VnbWVudENvdW50ZXJ9YFxufVxuXG5leHBvcnQgY29uc3QgcmVzZXRUaW1lbGluZVNlZ21lbnRDb3VudGVyID0gKCk6IHZvaWQgPT4ge1xuICB0aW1lbGluZVNlZ21lbnRDb3VudGVyID0gMFxufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlRW1wdHlUaW1lbGluZVNuYXBzaG90ID0gKCk6IFN0cmVhbVRpbWVsaW5lU25hcHNob3QgPT4gKHtcbiAgdHVybklkOiBudWxsLFxuICBzZWdtZW50czogW10sXG4gIGNvbnRlbnRGcm96ZW5MZW5ndGg6IDAsXG59KVxuXG5jb25zdCBnZXRMYXN0U2VnbWVudCA9IChzZWdtZW50czogU3RyZWFtVGltZWxpbmVTZWdtZW50W10pOiBTdHJlYW1UaW1lbGluZVNlZ21lbnQgfCB1bmRlZmluZWQgPT5cbiAgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMV1cblxuY29uc3Qgc2VhbEV4ZWN1dGlvblNlZ21lbnQgPSAoc2VnbWVudDogU3RyZWFtVGltZWxpbmVFeGVjdXRpb25TZWdtZW50KTogU3RyZWFtVGltZWxpbmVFeGVjdXRpb25TZWdtZW50ID0+ICh7XG4gIC4uLnNlZ21lbnQsXG4gIHN0ZXBzOiBjb21wbGV0ZUFsbEV4ZWN1dGlvblN0ZXBzKHNlZ21lbnQuc3RlcHMpLFxufSlcblxuY29uc3Qgc2VhbEFsbEV4ZWN1dGlvblNlZ21lbnRzID0gKHNlZ21lbnRzOiBTdHJlYW1UaW1lbGluZVNlZ21lbnRbXSk6IFN0cmVhbVRpbWVsaW5lU2VnbWVudFtdID0+XG4gIHNlZ21lbnRzLm1hcChzZWdtZW50ID0+IChzZWdtZW50LnR5cGUgPT09ICdleGVjdXRpb24nID8gc2VhbEV4ZWN1dGlvblNlZ21lbnQoc2VnbWVudCkgOiBzZWdtZW50KSlcblxuZXhwb3J0IGNvbnN0IHN0YXJ0U3RyZWFtVGltZWxpbmVUdXJuID0gKHR1cm5JZDogc3RyaW5nKTogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCA9PiB7XG4gIHJlc2V0VGltZWxpbmVTZWdtZW50Q291bnRlcigpXG4gIGNvbnN0IHNuYXBzaG90ID0ge1xuICAgIHR1cm5JZCxcbiAgICBzZWdtZW50czogW10sXG4gICAgY29udGVudEZyb3plbkxlbmd0aDogMCxcbiAgfVxuICBzdHJlYW1EZWJ1Z0xvZygndGltZWxpbmUnLCAndHVybjpzdGFydCcsIHsgdHVybklkIH0pXG4gIHJldHVybiBzbmFwc2hvdFxufVxuXG5leHBvcnQgY29uc3QgYXBwZW5kTm9kZVRvU3RyZWFtVGltZWxpbmUgPSAoXG4gIHNuYXBzaG90OiBTdHJlYW1UaW1lbGluZVNuYXBzaG90LFxuICBwYXlsb2FkOiBTdHJlYW1Ob2RlRXZlbnRQYXlsb2FkLFxuICBhY2N1bXVsYXRlZFRleHQ6IHN0cmluZyxcbiAgdDogVHJhbnNsYXRlRm4sXG4gIGNvbnRleHQ/OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGwsXG4gIHRocmVhZElkPzogc3RyaW5nXG4pOiBTdHJlYW1UaW1lbGluZVNuYXBzaG90ID0+IHtcbiAgbGV0IGJhc2UgPSBzbmFwc2hvdFxuICBjb25zdCBsYXN0QmVmb3JlID0gZ2V0TGFzdFNlZ21lbnQoYmFzZS5zZWdtZW50cylcblxuICBpZiAobGFzdEJlZm9yZT8udHlwZSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgYmFzZSA9IGZyZWV6ZVRpbWVsaW5lQ29udGVudEJvdW5kYXJ5KGJhc2UsIGFjY3VtdWxhdGVkVGV4dClcbiAgfVxuXG4gIGNvbnN0IGxhc3QgPSBnZXRMYXN0U2VnbWVudChiYXNlLnNlZ21lbnRzKVxuICBsZXQgc2VnbWVudHMgPSBiYXNlLnNlZ21lbnRzXG5cbiAgaWYgKGxhc3Q/LnR5cGUgPT09ICdjb250ZW50Jykge1xuICAgIHNlZ21lbnRzID0gWy4uLnNlZ21lbnRzXVxuICAgIHNlZ21lbnRzLnB1c2goe1xuICAgICAgdHlwZTogJ2V4ZWN1dGlvbicsXG4gICAgICBpZDogbmV4dFNlZ21lbnRJZCgnZXhlYycpLFxuICAgICAgc3RlcHM6IFtdLFxuICAgIH0pXG4gIH0gZWxzZSBpZiAoIWxhc3QgfHwgbGFzdC50eXBlICE9PSAnZXhlY3V0aW9uJykge1xuICAgIHNlZ21lbnRzID0gW1xuICAgICAgLi4uc2VnbWVudHMsXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdleGVjdXRpb24nLFxuICAgICAgICBpZDogbmV4dFNlZ21lbnRJZCgnZXhlYycpLFxuICAgICAgICBzdGVwczogW10sXG4gICAgICB9LFxuICAgIF1cbiAgfSBlbHNlIHtcbiAgICBzZWdtZW50cyA9IFsuLi5zZWdtZW50c11cbiAgfVxuXG4gIGNvbnN0IGV4ZWN1dGlvbkluZGV4ID0gc2VnbWVudHMubGVuZ3RoIC0gMVxuICBjb25zdCBleGVjdXRpb25TZWdtZW50ID0gc2VnbWVudHNbZXhlY3V0aW9uSW5kZXhdIGFzIFN0cmVhbVRpbWVsaW5lRXhlY3V0aW9uU2VnbWVudFxuICBjb25zdCBzdGVwcyA9IHB1c2hFeGVjdXRpb25TdGVwRnJvbU5vZGUoZXhlY3V0aW9uU2VnbWVudC5zdGVwcywgcGF5bG9hZCwgdCwgY29udGV4dCwgdGhyZWFkSWQpXG5cbiAgc2VnbWVudHNbZXhlY3V0aW9uSW5kZXhdID0ge1xuICAgIC4uLmV4ZWN1dGlvblNlZ21lbnQsXG4gICAgc3RlcHMsXG4gIH1cblxuICBjb25zdCBuZXh0ID0ge1xuICAgIC4uLmJhc2UsXG4gICAgc2VnbWVudHMsXG4gIH1cbiAgc3RyZWFtRGVidWdUaW1lbGluZSgndGltZWxpbmUnLCAnbm9kZTphcHBlbmQnLCBuZXh0KVxuICBzdHJlYW1EZWJ1Z0xvZygndGltZWxpbmUnLCAnbm9kZTpwYXlsb2FkJywge1xuICAgIG5vZGU6IHBheWxvYWQubm9kZSxcbiAgICB0b29sX25hbWU6IHBheWxvYWQudG9vbF9uYW1lLFxuICAgIHRocmVhZF9pZDogdGhyZWFkSWQgPz8gcGF5bG9hZC50aHJlYWRfaWQsXG4gICAgYmFja2VuZE1lc3NhZ2U6IHBheWxvYWQubWVzc2FnZSxcbiAgICBzdGVwQ291bnQ6IHN0ZXBzLmxlbmd0aCxcbiAgICBoYXNIaXRsQ29udGV4dDogQm9vbGVhbihjb250ZXh0KSxcbiAgfSlcbiAgcmV0dXJuIG5leHRcbn1cblxuZXhwb3J0IGNvbnN0IGFwcGVuZENvbnRlbnRUb1N0cmVhbVRpbWVsaW5lID0gKFxuICBzbmFwc2hvdDogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCxcbiAgYWNjdW11bGF0ZWRUZXh0OiBzdHJpbmdcbik6IFN0cmVhbVRpbWVsaW5lU25hcHNob3QgPT4ge1xuICBjb25zdCBzbGljZVRleHQgPSBhY2N1bXVsYXRlZFRleHQuc2xpY2Uoc25hcHNob3QuY29udGVudEZyb3plbkxlbmd0aClcbiAgaWYgKCFzbGljZVRleHQgJiYgIWdldExhc3RTZWdtZW50KHNuYXBzaG90LnNlZ21lbnRzKSkge1xuICAgIHJldHVybiBzbmFwc2hvdFxuICB9XG5cbiAgbGV0IHNlZ21lbnRzID0gc25hcHNob3Quc2VnbWVudHNcbiAgY29uc3QgbGFzdCA9IGdldExhc3RTZWdtZW50KHNlZ21lbnRzKVxuXG4gIGlmIChsYXN0Py50eXBlID09PSAnZXhlY3V0aW9uJykge1xuICAgIGNvbnN0IHNlYWxlZCA9IHNlYWxFeGVjdXRpb25TZWdtZW50KGxhc3QpXG4gICAgc2VnbWVudHMgPSBbLi4uc2VnbWVudHMuc2xpY2UoMCwgLTEpLCBzZWFsZWRdXG4gICAgc2VnbWVudHMucHVzaCh7XG4gICAgICB0eXBlOiAnY29udGVudCcsXG4gICAgICBpZDogbmV4dFNlZ21lbnRJZCgnY29udGVudCcpLFxuICAgICAgdGV4dDogc2xpY2VUZXh0LFxuICAgIH0pXG4gIH0gZWxzZSBpZiAobGFzdD8udHlwZSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgc2VnbWVudHMgPSBbLi4uc2VnbWVudHMuc2xpY2UoMCwgLTEpLCB7IC4uLmxhc3QsIHRleHQ6IHNsaWNlVGV4dCB9XVxuICB9IGVsc2Uge1xuICAgIHNlZ21lbnRzID0gW1xuICAgICAgLi4uc2VnbWVudHMsXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdjb250ZW50JyxcbiAgICAgICAgaWQ6IG5leHRTZWdtZW50SWQoJ2NvbnRlbnQnKSxcbiAgICAgICAgdGV4dDogc2xpY2VUZXh0LFxuICAgICAgfSxcbiAgICBdXG4gIH1cblxuICBjb25zdCBuZXh0ID0ge1xuICAgIC4uLnNuYXBzaG90LFxuICAgIHNlZ21lbnRzLFxuICB9XG4gIHN0cmVhbURlYnVnVGltZWxpbmUoJ3RpbWVsaW5lJywgJ2NvbnRlbnQ6YXBwZW5kJywgbmV4dClcbiAgcmV0dXJuIG5leHRcbn1cblxuZXhwb3J0IGNvbnN0IGZyZWV6ZVRpbWVsaW5lQ29udGVudEJvdW5kYXJ5ID0gKFxuICBzbmFwc2hvdDogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCxcbiAgYWNjdW11bGF0ZWRUZXh0OiBzdHJpbmdcbik6IFN0cmVhbVRpbWVsaW5lU25hcHNob3QgPT4gKHtcbiAgLi4uc25hcHNob3QsXG4gIGNvbnRlbnRGcm96ZW5MZW5ndGg6IGFjY3VtdWxhdGVkVGV4dC5sZW5ndGgsXG59KVxuXG5leHBvcnQgY29uc3QgZmluYWxpemVTdHJlYW1UaW1lbGluZSA9IChzbmFwc2hvdDogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCk6IFN0cmVhbVRpbWVsaW5lU25hcHNob3QgPT4ge1xuICBjb25zdCBuZXh0ID0ge1xuICAgIC4uLnNuYXBzaG90LFxuICAgIHNlZ21lbnRzOiBzZWFsQWxsRXhlY3V0aW9uU2VnbWVudHMoc25hcHNob3Quc2VnbWVudHMpLFxuICB9XG4gIHN0cmVhbURlYnVnVGltZWxpbmUoJ3RpbWVsaW5lJywgJ2ZpbmFsaXplJywgbmV4dClcbiAgcmV0dXJuIG5leHRcbn1cblxuZXhwb3J0IGNvbnN0IGJ1aWxkQWN0aXZpdHlGcm9tRXhlY3V0aW9uU2VnbWVudCA9IChcbiAgc2VnbWVudDogU3RyZWFtVGltZWxpbmVFeGVjdXRpb25TZWdtZW50LFxuICB0OiBUcmFuc2xhdGVGblxuKTogeyBwaGFzZTogJ2FjdGlvbic7IG1lc3NhZ2U6IHN0cmluZzsgZXhlY3V0aW9uU3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSB9ID0+IHtcbiAgY29uc3QgcnVubmluZyA9IFsuLi5zZWdtZW50LnN0ZXBzXS5yZXZlcnNlKCkuZmluZChzdGVwID0+IHN0ZXAuc3RhdHVzID09PSAncnVubmluZycpXG4gIGNvbnN0IGxhc3RTdGVwID0gc2VnbWVudC5zdGVwc1tzZWdtZW50LnN0ZXBzLmxlbmd0aCAtIDFdXG4gIGNvbnN0IG1lc3NhZ2UgPSBydW5uaW5nPy5tZXNzYWdlID8/IGxhc3RTdGVwPy5tZXNzYWdlID8/IHQoJ2NoYXQuZXhlY3V0aW5nQWN0aW9uJylcblxuICByZXR1cm4ge1xuICAgIHBoYXNlOiAnYWN0aW9uJyxcbiAgICBtZXNzYWdlLFxuICAgIGV4ZWN1dGlvblN0ZXBzOiBzZWdtZW50LnN0ZXBzLFxuICB9XG59XG5cbi8qKiBDaWVycmEgc3RlcHMgZW4gZWplY3VjacOzbiBzaW4gY3JlYXIgc2VnbWVudG8gZGUgY29udGVuaWRvIChwLiBlai4gYWwgcmVjaWJpciBvdHJvIG5vZGUpLiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBsZXRlUnVubmluZ1N0ZXBzSW5UaW1lbGluZSA9IChzbmFwc2hvdDogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCk6IFN0cmVhbVRpbWVsaW5lU25hcHNob3QgPT4ge1xuICBjb25zdCBzZWdtZW50cyA9IHNuYXBzaG90LnNlZ21lbnRzLm1hcChzZWdtZW50ID0+IHtcbiAgICBpZiAoc2VnbWVudC50eXBlICE9PSAnZXhlY3V0aW9uJykgcmV0dXJuIHNlZ21lbnRcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc2VnbWVudCxcbiAgICAgIHN0ZXBzOiBjb21wbGV0ZVJ1bm5pbmdTdGVwc0luU3RlcHMoc2VnbWVudC5zdGVwcyksXG4gICAgfVxuICB9KVxuICByZXR1cm4geyAuLi5zbmFwc2hvdCwgc2VnbWVudHMgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBTUEsU0FDRUEseUJBQXlCLEVBQ3pCQywyQkFBMkIsRUFDM0JDLHlCQUF5QixRQUNwQix3QkFB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
177
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21wbGV0ZUFsbEV4ZWN1dGlvblN0ZXBzIiwiY29tcGxldGVSdW5uaW5nU3RlcHNJblN0ZXBzIiwicHVzaEV4ZWN1dGlvblN0ZXBGcm9tTm9kZSIsInN0cmVhbURlYnVnTG9nIiwic3RyZWFtRGVidWdUaW1lbGluZSIsInRpbWVsaW5lU2VnbWVudENvdW50ZXIiLCJuZXh0U2VnbWVudElkIiwicHJlZml4IiwiY29uY2F0IiwicmVzZXRUaW1lbGluZVNlZ21lbnRDb3VudGVyIiwiY3JlYXRlRW1wdHlUaW1lbGluZVNuYXBzaG90IiwidHVybklkIiwic2VnbWVudHMiLCJjb250ZW50RnJvemVuTGVuZ3RoIiwiZ2V0TGFzdFNlZ21lbnQiLCJsZW5ndGgiLCJzZWFsRXhlY3V0aW9uU2VnbWVudCIsInNlZ21lbnQiLCJfb2JqZWN0U3ByZWFkIiwic3RlcHMiLCJzZWFsQWxsRXhlY3V0aW9uU2VnbWVudHMiLCJtYXAiLCJ0eXBlIiwic3RhcnRTdHJlYW1UaW1lbGluZVR1cm4iLCJzbmFwc2hvdCIsImFwcGVuZE5vZGVUb1N0cmVhbVRpbWVsaW5lIiwicGF5bG9hZCIsImFjY3VtdWxhdGVkVGV4dCIsInQiLCJjb250ZXh0IiwidGhyZWFkSWQiLCJiYXNlIiwibGFzdEJlZm9yZSIsImZyZWV6ZVRpbWVsaW5lQ29udGVudEJvdW5kYXJ5IiwibGFzdCIsIl90b0NvbnN1bWFibGVBcnJheSIsInB1c2giLCJpZCIsImV4ZWN1dGlvbkluZGV4IiwiZXhlY3V0aW9uU2VnbWVudCIsIm5vZGUiLCJ0b29sX25hbWUiLCJuZXh0IiwidGhyZWFkX2lkIiwiYmFja2VuZE1lc3NhZ2UiLCJtZXNzYWdlIiwic3RlcENvdW50IiwiaGFzSGl0bENvbnRleHQiLCJCb29sZWFuIiwiYXBwZW5kQ29udGVudFRvU3RyZWFtVGltZWxpbmUiLCJzbGljZVRleHQiLCJzbGljZSIsInNlYWxlZCIsInRleHQiLCJmaW5hbGl6ZVN0cmVhbVRpbWVsaW5lIiwiYnVpbGRBY3Rpdml0eUZyb21FeGVjdXRpb25TZWdtZW50IiwiX2FjdGl2ZSRtZXNzYWdlIiwicnVubmluZ1N0ZXBzIiwiZmlsdGVyIiwic3RlcCIsInN0YXR1cyIsImFjdGl2ZSIsInBoYXNlIiwiZXhlY3V0aW9uU3RlcHMiLCJjb2xsZWN0UnVubmluZ1N0ZXBzRnJvbVRpbWVsaW5lIiwiZmxhdE1hcCIsImNvbXBsZXRlUnVubmluZ1N0ZXBzSW5UaW1lbGluZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zdHJlYW1UaW1lbGluZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN0cmVhbUV4ZWN1dGlvblN0ZXAgfSBmcm9tICcuLi90eXBlcy9zdHJlYW1BY3Rpdml0eSdcbmltcG9ydCB0eXBlIHtcbiAgU3RyZWFtVGltZWxpbmVFeGVjdXRpb25TZWdtZW50LFxuICBTdHJlYW1UaW1lbGluZVNlZ21lbnQsXG4gIFN0cmVhbVRpbWVsaW5lU25hcHNob3QsXG59IGZyb20gJy4uL3R5cGVzL3N0cmVhbVRpbWVsaW5lJ1xuaW1wb3J0IHtcbiAgY29tcGxldGVBbGxFeGVjdXRpb25TdGVwcyxcbiAgY29tcGxldGVSdW5uaW5nU3RlcHNJblN0ZXBzLFxuICBwdXNoRXhlY3V0aW9uU3RlcEZyb21Ob2RlLFxufSBmcm9tICcuL3N0cmVhbUV4ZWN1dGlvblN0ZXBzJ1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1Ob2RlRXZlbnRQYXlsb2FkIH0gZnJvbSAnLi4vdHlwZXMvc3RyZWFtQWN0aXZpdHknXG5pbXBvcnQgdHlwZSB7IEhpdGxFeGVjdXRpb25Db250ZXh0IH0gZnJvbSAnLi9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgc3RyZWFtRGVidWdMb2csIHN0cmVhbURlYnVnVGltZWxpbmUgfSBmcm9tICcuL3N0cmVhbURlYnVnTG9nJ1xuXG50eXBlIFRyYW5zbGF0ZUZuID0gKGtleTogc3RyaW5nKSA9PiBzdHJpbmdcblxubGV0IHRpbWVsaW5lU2VnbWVudENvdW50ZXIgPSAwXG5cbmNvbnN0IG5leHRTZWdtZW50SWQgPSAocHJlZml4OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICB0aW1lbGluZVNlZ21lbnRDb3VudGVyICs9IDFcbiAgcmV0dXJuIGAke3ByZWZpeH0tJHt0aW1lbGluZVNlZ21lbnRDb3VudGVyfWBcbn1cblxuZXhwb3J0IGNvbnN0IHJlc2V0VGltZWxpbmVTZWdtZW50Q291bnRlciA9ICgpOiB2b2lkID0+IHtcbiAgdGltZWxpbmVTZWdtZW50Q291bnRlciA9IDBcbn1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUVtcHR5VGltZWxpbmVTbmFwc2hvdCA9ICgpOiBTdHJlYW1UaW1lbGluZVNuYXBzaG90ID0+ICh7XG4gIHR1cm5JZDogbnVsbCxcbiAgc2VnbWVudHM6IFtdLFxuICBjb250ZW50RnJvemVuTGVuZ3RoOiAwLFxufSlcblxuY29uc3QgZ2V0TGFzdFNlZ21lbnQgPSAoc2VnbWVudHM6IFN0cmVhbVRpbWVsaW5lU2VnbWVudFtdKTogU3RyZWFtVGltZWxpbmVTZWdtZW50IHwgdW5kZWZpbmVkID0+XG4gIHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdXG5cbmNvbnN0IHNlYWxFeGVjdXRpb25TZWdtZW50ID0gKHNlZ21lbnQ6IFN0cmVhbVRpbWVsaW5lRXhlY3V0aW9uU2VnbWVudCk6IFN0cmVhbVRpbWVsaW5lRXhlY3V0aW9uU2VnbWVudCA9PiAoe1xuICAuLi5zZWdtZW50LFxuICBzdGVwczogY29tcGxldGVBbGxFeGVjdXRpb25TdGVwcyhzZWdtZW50LnN0ZXBzKSxcbn0pXG5cbmNvbnN0IHNlYWxBbGxFeGVjdXRpb25TZWdtZW50cyA9IChzZWdtZW50czogU3RyZWFtVGltZWxpbmVTZWdtZW50W10pOiBTdHJlYW1UaW1lbGluZVNlZ21lbnRbXSA9PlxuICBzZWdtZW50cy5tYXAoc2VnbWVudCA9PiAoc2VnbWVudC50eXBlID09PSAnZXhlY3V0aW9uJyA/IHNlYWxFeGVjdXRpb25TZWdtZW50KHNlZ21lbnQpIDogc2VnbWVudCkpXG5cbmV4cG9ydCBjb25zdCBzdGFydFN0cmVhbVRpbWVsaW5lVHVybiA9ICh0dXJuSWQ6IHN0cmluZyk6IFN0cmVhbVRpbWVsaW5lU25hcHNob3QgPT4ge1xuICByZXNldFRpbWVsaW5lU2VnbWVudENvdW50ZXIoKVxuICBjb25zdCBzbmFwc2hvdCA9IHtcbiAgICB0dXJuSWQsXG4gICAgc2VnbWVudHM6IFtdLFxuICAgIGNvbnRlbnRGcm96ZW5MZW5ndGg6IDAsXG4gIH1cbiAgc3RyZWFtRGVidWdMb2coJ3RpbWVsaW5lJywgJ3R1cm46c3RhcnQnLCB7IHR1cm5JZCB9KVxuICByZXR1cm4gc25hcHNob3Rcbn1cblxuZXhwb3J0IGNvbnN0IGFwcGVuZE5vZGVUb1N0cmVhbVRpbWVsaW5lID0gKFxuICBzbmFwc2hvdDogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCxcbiAgcGF5bG9hZDogU3RyZWFtTm9kZUV2ZW50UGF5bG9hZCxcbiAgYWNjdW11bGF0ZWRUZXh0OiBzdHJpbmcsXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBjb250ZXh0PzogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsLFxuICB0aHJlYWRJZD86IHN0cmluZ1xuKTogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCA9PiB7XG4gIGxldCBiYXNlID0gc25hcHNob3RcbiAgY29uc3QgbGFzdEJlZm9yZSA9IGdldExhc3RTZWdtZW50KGJhc2Uuc2VnbWVudHMpXG5cbiAgaWYgKGxhc3RCZWZvcmU/LnR5cGUgPT09ICdjb250ZW50Jykge1xuICAgIGJhc2UgPSBmcmVlemVUaW1lbGluZUNvbnRlbnRCb3VuZGFyeShiYXNlLCBhY2N1bXVsYXRlZFRleHQpXG4gIH1cblxuICBjb25zdCBsYXN0ID0gZ2V0TGFzdFNlZ21lbnQoYmFzZS5zZWdtZW50cylcbiAgbGV0IHNlZ21lbnRzID0gYmFzZS5zZWdtZW50c1xuXG4gIGlmIChsYXN0Py50eXBlID09PSAnY29udGVudCcpIHtcbiAgICBzZWdtZW50cyA9IFsuLi5zZWdtZW50c11cbiAgICBzZWdtZW50cy5wdXNoKHtcbiAgICAgIHR5cGU6ICdleGVjdXRpb24nLFxuICAgICAgaWQ6IG5leHRTZWdtZW50SWQoJ2V4ZWMnKSxcbiAgICAgIHN0ZXBzOiBbXSxcbiAgICB9KVxuICB9IGVsc2UgaWYgKCFsYXN0IHx8IGxhc3QudHlwZSAhPT0gJ2V4ZWN1dGlvbicpIHtcbiAgICBzZWdtZW50cyA9IFtcbiAgICAgIC4uLnNlZ21lbnRzLFxuICAgICAge1xuICAgICAgICB0eXBlOiAnZXhlY3V0aW9uJyxcbiAgICAgICAgaWQ6IG5leHRTZWdtZW50SWQoJ2V4ZWMnKSxcbiAgICAgICAgc3RlcHM6IFtdLFxuICAgICAgfSxcbiAgICBdXG4gIH0gZWxzZSB7XG4gICAgc2VnbWVudHMgPSBbLi4uc2VnbWVudHNdXG4gIH1cblxuICBjb25zdCBleGVjdXRpb25JbmRleCA9IHNlZ21lbnRzLmxlbmd0aCAtIDFcbiAgY29uc3QgZXhlY3V0aW9uU2VnbWVudCA9IHNlZ21lbnRzW2V4ZWN1dGlvbkluZGV4XSBhcyBTdHJlYW1UaW1lbGluZUV4ZWN1dGlvblNlZ21lbnRcbiAgY29uc3Qgc3RlcHMgPSBwdXNoRXhlY3V0aW9uU3RlcEZyb21Ob2RlKGV4ZWN1dGlvblNlZ21lbnQuc3RlcHMsIHBheWxvYWQsIHQsIGNvbnRleHQsIHRocmVhZElkKVxuXG4gIGlmIChzdGVwcy5sZW5ndGggPT09IDApIHtcbiAgICBzdHJlYW1EZWJ1Z0xvZygndGltZWxpbmUnLCAnbm9kZTpza2lwLWVtcHR5Jywge1xuICAgICAgbm9kZTogcGF5bG9hZC5ub2RlLFxuICAgICAgdG9vbF9uYW1lOiBwYXlsb2FkLnRvb2xfbmFtZSxcbiAgICB9KVxuICAgIHJldHVybiBiYXNlXG4gIH1cblxuICBzZWdtZW50c1tleGVjdXRpb25JbmRleF0gPSB7XG4gICAgLi4uZXhlY3V0aW9uU2VnbWVudCxcbiAgICBzdGVwcyxcbiAgfVxuXG4gIGNvbnN0IG5leHQgPSB7XG4gICAgLi4uYmFzZSxcbiAgICBzZWdtZW50cyxcbiAgfVxuICBzdHJlYW1EZWJ1Z1RpbWVsaW5lKCd0aW1lbGluZScsICdub2RlOmFwcGVuZCcsIG5leHQpXG4gIHN0cmVhbURlYnVnTG9nKCd0aW1lbGluZScsICdub2RlOnBheWxvYWQnLCB7XG4gICAgbm9kZTogcGF5bG9hZC5ub2RlLFxuICAgIHRvb2xfbmFtZTogcGF5bG9hZC50b29sX25hbWUsXG4gICAgdGhyZWFkX2lkOiB0aHJlYWRJZCA/PyBwYXlsb2FkLnRocmVhZF9pZCxcbiAgICBiYWNrZW5kTWVzc2FnZTogcGF5bG9hZC5tZXNzYWdlLFxuICAgIHN0ZXBDb3VudDogc3RlcHMubGVuZ3RoLFxuICAgIGhhc0hpdGxDb250ZXh0OiBCb29sZWFuKGNvbnRleHQpLFxuICB9KVxuICByZXR1cm4gbmV4dFxufVxuXG5leHBvcnQgY29uc3QgYXBwZW5kQ29udGVudFRvU3RyZWFtVGltZWxpbmUgPSAoXG4gIHNuYXBzaG90OiBTdHJlYW1UaW1lbGluZVNuYXBzaG90LFxuICBhY2N1bXVsYXRlZFRleHQ6IHN0cmluZ1xuKTogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCA9PiB7XG4gIGNvbnN0IHNsaWNlVGV4dCA9IGFjY3VtdWxhdGVkVGV4dC5zbGljZShzbmFwc2hvdC5jb250ZW50RnJvemVuTGVuZ3RoKVxuICBpZiAoIXNsaWNlVGV4dCAmJiAhZ2V0TGFzdFNlZ21lbnQoc25hcHNob3Quc2VnbWVudHMpKSB7XG4gICAgcmV0dXJuIHNuYXBzaG90XG4gIH1cblxuICBsZXQgc2VnbWVudHMgPSBzbmFwc2hvdC5zZWdtZW50c1xuICBjb25zdCBsYXN0ID0gZ2V0TGFzdFNlZ21lbnQoc2VnbWVudHMpXG5cbiAgaWYgKGxhc3Q/LnR5cGUgPT09ICdleGVjdXRpb24nKSB7XG4gICAgY29uc3Qgc2VhbGVkID0gc2VhbEV4ZWN1dGlvblNlZ21lbnQobGFzdClcbiAgICBzZWdtZW50cyA9IFsuLi5zZWdtZW50cy5zbGljZSgwLCAtMSksIHNlYWxlZF1cbiAgICBzZWdtZW50cy5wdXNoKHtcbiAgICAgIHR5cGU6ICdjb250ZW50JyxcbiAgICAgIGlkOiBuZXh0U2VnbWVudElkKCdjb250ZW50JyksXG4gICAgICB0ZXh0OiBzbGljZVRleHQsXG4gICAgfSlcbiAgfSBlbHNlIGlmIChsYXN0Py50eXBlID09PSAnY29udGVudCcpIHtcbiAgICBzZWdtZW50cyA9IFsuLi5zZWdtZW50cy5zbGljZSgwLCAtMSksIHsgLi4ubGFzdCwgdGV4dDogc2xpY2VUZXh0IH1dXG4gIH0gZWxzZSB7XG4gICAgc2VnbWVudHMgPSBbXG4gICAgICAuLi5zZWdtZW50cyxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2NvbnRlbnQnLFxuICAgICAgICBpZDogbmV4dFNlZ21lbnRJZCgnY29udGVudCcpLFxuICAgICAgICB0ZXh0OiBzbGljZVRleHQsXG4gICAgICB9LFxuICAgIF1cbiAgfVxuXG4gIGNvbnN0IG5leHQgPSB7XG4gICAgLi4uc25hcHNob3QsXG4gICAgc2VnbWVudHMsXG4gIH1cbiAgc3RyZWFtRGVidWdUaW1lbGluZSgndGltZWxpbmUnLCAnY29udGVudDphcHBlbmQnLCBuZXh0KVxuICByZXR1cm4gbmV4dFxufVxuXG5leHBvcnQgY29uc3QgZnJlZXplVGltZWxpbmVDb250ZW50Qm91bmRhcnkgPSAoXG4gIHNuYXBzaG90OiBTdHJlYW1UaW1lbGluZVNuYXBzaG90LFxuICBhY2N1bXVsYXRlZFRleHQ6IHN0cmluZ1xuKTogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCA9PiAoe1xuICAuLi5zbmFwc2hvdCxcbiAgY29udGVudEZyb3plbkxlbmd0aDogYWNjdW11bGF0ZWRUZXh0Lmxlbmd0aCxcbn0pXG5cbmV4cG9ydCBjb25zdCBmaW5hbGl6ZVN0cmVhbVRpbWVsaW5lID0gKHNuYXBzaG90OiBTdHJlYW1UaW1lbGluZVNuYXBzaG90KTogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCA9PiB7XG4gIGNvbnN0IG5leHQgPSB7XG4gICAgLi4uc25hcHNob3QsXG4gICAgc2VnbWVudHM6IHNlYWxBbGxFeGVjdXRpb25TZWdtZW50cyhzbmFwc2hvdC5zZWdtZW50cyksXG4gIH1cbiAgc3RyZWFtRGVidWdUaW1lbGluZSgndGltZWxpbmUnLCAnZmluYWxpemUnLCBuZXh0KVxuICByZXR1cm4gbmV4dFxufVxuXG5leHBvcnQgY29uc3QgYnVpbGRBY3Rpdml0eUZyb21FeGVjdXRpb25TZWdtZW50ID0gKFxuICBzZWdtZW50OiBTdHJlYW1UaW1lbGluZUV4ZWN1dGlvblNlZ21lbnQsXG4gIHQ6IFRyYW5zbGF0ZUZuXG4pOiB7IHBoYXNlOiAnYWN0aW9uJzsgbWVzc2FnZTogc3RyaW5nOyBleGVjdXRpb25TdGVwczogU3RyZWFtRXhlY3V0aW9uU3RlcFtdIH0gPT4ge1xuICBjb25zdCBydW5uaW5nU3RlcHMgPSBzZWdtZW50LnN0ZXBzLmZpbHRlcihzdGVwID0+IHN0ZXAuc3RhdHVzID09PSAncnVubmluZycpXG4gIGNvbnN0IGFjdGl2ZSA9IHJ1bm5pbmdTdGVwc1tydW5uaW5nU3RlcHMubGVuZ3RoIC0gMV1cbiAgY29uc3QgbWVzc2FnZSA9IGFjdGl2ZT8ubWVzc2FnZSA/PyB0KCdjaGF0LmV4ZWN1dGluZ0FjdGlvbicpXG5cbiAgcmV0dXJuIHtcbiAgICBwaGFzZTogJ2FjdGlvbicsXG4gICAgbWVzc2FnZSxcbiAgICBleGVjdXRpb25TdGVwczogcnVubmluZ1N0ZXBzLFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBjb2xsZWN0UnVubmluZ1N0ZXBzRnJvbVRpbWVsaW5lID0gKHNlZ21lbnRzOiBTdHJlYW1UaW1lbGluZVNlZ21lbnRbXSk6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSA9PlxuICBzZWdtZW50c1xuICAgIC5maWx0ZXIoKHNlZ21lbnQpOiBzZWdtZW50IGlzIFN0cmVhbVRpbWVsaW5lRXhlY3V0aW9uU2VnbWVudCA9PiBzZWdtZW50LnR5cGUgPT09ICdleGVjdXRpb24nKVxuICAgIC5mbGF0TWFwKHNlZ21lbnQgPT4gc2VnbWVudC5zdGVwcy5maWx0ZXIoc3RlcCA9PiBzdGVwLnN0YXR1cyA9PT0gJ3J1bm5pbmcnKSlcblxuLyoqIENpZXJyYSBzdGVwcyBlbiBlamVjdWNpw7NuIHNpbiBjcmVhciBzZWdtZW50byBkZSBjb250ZW5pZG8gKHAuIGVqLiBhbCByZWNpYmlyIG90cm8gbm9kZSkuICovXG5leHBvcnQgY29uc3QgY29tcGxldGVSdW5uaW5nU3RlcHNJblRpbWVsaW5lID0gKHNuYXBzaG90OiBTdHJlYW1UaW1lbGluZVNuYXBzaG90KTogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCA9PiB7XG4gIGNvbnN0IHNlZ21lbnRzID0gc25hcHNob3Quc2VnbWVudHMubWFwKHNlZ21lbnQgPT4ge1xuICAgIGlmIChzZWdtZW50LnR5cGUgIT09ICdleGVjdXRpb24nKSByZXR1cm4gc2VnbWVudFxuICAgIHJldHVybiB7XG4gICAgICAuLi5zZWdtZW50LFxuICAgICAgc3RlcHM6IGNvbXBsZXRlUnVubmluZ1N0ZXBzSW5TdGVwcyhzZWdtZW50LnN0ZXBzKSxcbiAgICB9XG4gIH0pXG4gIHJldHVybiB7IC4uLnNuYXBzaG90LCBzZWdtZW50cyB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFNQSxTQUNFQSx5QkFBeUIsRUFDekJDLDJCQUEyQixFQUMzQkMseUJBQXlCLFFBQ3BCLHdCQUF3QjtBQUcvQixTQUFTQyxjQUFjLEVBQUVDLG1CQUFtQixRQUFRLGtCQUFrQjtBQUl0RSxJQUFJQyxzQkFBc0IsR0FBRyxDQUFDO0FBRTlCLElBQU1DLGFBQWEsR0FBRyxTQUFoQkEsYUFBYUEsQ0FBSUMsTUFBYyxFQUFhO0VBQ2hERixzQkFBc0IsSUFBSSxDQUFDO0VBQzNCLFVBQUFHLE1BQUEsQ0FBVUQsTUFBTSxPQUFBQyxNQUFBLENBQUlILHNCQUFzQjtBQUM1QyxDQUFDO0FBRUQsT0FBTyxJQUFNSSwyQkFBMkIsR0FBRyxTQUE5QkEsMkJBQTJCQSxDQUFBLEVBQWU7RUFDckRKLHNCQUFzQixHQUFHLENBQUM7QUFDNUIsQ0FBQztBQUVELE9BQU8sSUFBTUssMkJBQTJCLEdBQUcsU0FBOUJBLDJCQUEyQkEsQ0FBQTtFQUFBLE9BQWtDO0lBQ3hFQyxNQUFNLEVBQUUsSUFBSTtJQUNaQyxRQUFRLEVBQUUsRUFBRTtJQUNaQyxtQkFBbUIsRUFBRTtF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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectcor/maia-components",
3
- "version": "2.11.100-4",
3
+ "version": "2.11.100-5",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "repository": {