@visuno/angular 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +24 -0
- package/README.md +56 -2
- package/account-table/account-table.component.d.ts +72 -0
- package/action-log/action-log.component.d.ts +41 -0
- package/activity-heatmap/activity-heatmap.component.d.ts +67 -0
- package/agent-inbox/agent-inbox.component.d.ts +75 -0
- package/agent-lanes/agent-lanes.component.d.ts +152 -0
- package/agent-phases/agent-phases.component.d.ts +62 -0
- package/agent-run-timeline/agent-run-timeline.component.d.ts +113 -0
- package/agent-tree/agent-tree.component.d.ts +80 -0
- package/answer-action-bar/answer-action-bar.component.d.ts +110 -0
- package/artifact-card/artifact-card.component.d.ts +145 -0
- package/attachment-tray/attachment-tray.component.d.ts +84 -0
- package/badge/badge.component.d.ts +25 -0
- package/bar-chart/bar-chart.component.d.ts +87 -0
- package/browser-session/browser-session.component.d.ts +70 -0
- package/buttons/buttons.component.d.ts +63 -0
- package/card/card.component.d.ts +21 -0
- package/change-review/change-review.component.d.ts +97 -0
- package/citation-hover-card/citation-hover-card.component.d.ts +95 -0
- package/code-viewer/code-viewer.component.d.ts +86 -0
- package/composer/composer.component.d.ts +114 -0
- package/context-meter/context-meter.component.d.ts +60 -0
- package/core/icon.component.d.ts +10 -0
- package/core/reduced-motion.service.d.ts +15 -0
- package/decision-prompt/decision-prompt.component.d.ts +56 -0
- package/design-review/design-review.component.d.ts +108 -0
- package/design-tuner/design-tuner.component.d.ts +75 -0
- package/details-panel/details-panel.component.d.ts +150 -0
- package/donut-chart/donut-chart.component.d.ts +63 -0
- package/draft-review/draft-review.component.d.ts +128 -0
- package/error-recovery/error-recovery.component.d.ts +59 -0
- package/esm2022/account-table/account-table.component.mjs +399 -0
- package/esm2022/action-log/action-log.component.mjs +177 -0
- package/esm2022/activity-heatmap/activity-heatmap.component.mjs +285 -0
- package/esm2022/agent-inbox/agent-inbox.component.mjs +284 -0
- package/esm2022/agent-lanes/agent-lanes.component.mjs +600 -0
- package/esm2022/agent-phases/agent-phases.component.mjs +300 -0
- package/esm2022/agent-run-timeline/agent-run-timeline.component.mjs +412 -0
- package/esm2022/agent-tree/agent-tree.component.mjs +393 -0
- package/esm2022/answer-action-bar/answer-action-bar.component.mjs +636 -0
- package/esm2022/artifact-card/artifact-card.component.mjs +916 -0
- package/esm2022/attachment-tray/attachment-tray.component.mjs +402 -0
- package/esm2022/badge/badge.component.mjs +97 -0
- package/esm2022/bar-chart/bar-chart.component.mjs +300 -0
- package/esm2022/browser-session/browser-session.component.mjs +352 -0
- package/esm2022/buttons/buttons.component.mjs +215 -0
- package/esm2022/card/card.component.mjs +107 -0
- package/esm2022/change-review/change-review.component.mjs +398 -0
- package/esm2022/citation-hover-card/citation-hover-card.component.mjs +360 -0
- package/esm2022/code-viewer/code-viewer.component.mjs +291 -0
- package/esm2022/composer/composer.component.mjs +743 -0
- package/esm2022/context-meter/context-meter.component.mjs +275 -0
- package/esm2022/core/icon.component.mjs +111 -0
- package/esm2022/core/reduced-motion.service.mjs +34 -0
- package/esm2022/decision-prompt/decision-prompt.component.mjs +259 -0
- package/esm2022/design-review/design-review.component.mjs +428 -0
- package/esm2022/design-tuner/design-tuner.component.mjs +341 -0
- package/esm2022/details-panel/details-panel.component.mjs +537 -0
- package/esm2022/donut-chart/donut-chart.component.mjs +240 -0
- package/esm2022/draft-review/draft-review.component.mjs +549 -0
- package/esm2022/error-recovery/error-recovery.component.mjs +231 -0
- package/esm2022/eval-results/eval-results.component.mjs +368 -0
- package/esm2022/feedback-sheet/feedback-sheet.component.mjs +411 -0
- package/esm2022/field-extraction/field-extraction.component.mjs +368 -0
- package/esm2022/funnel-chart/funnel-chart.component.mjs +258 -0
- package/esm2022/grid/grid.component.mjs +66 -0
- package/esm2022/health-score/health-score.component.mjs +420 -0
- package/esm2022/human-handoff/human-handoff.component.mjs +676 -0
- package/esm2022/image-generation/image-generation.component.mjs +1028 -0
- package/esm2022/inline-text-diff/inline-text-diff.component.mjs +390 -0
- package/esm2022/launch-checklist/launch-checklist.component.mjs +229 -0
- package/esm2022/line-chart/line-chart.component.mjs +417 -0
- package/esm2022/live-answer/live-answer.component.mjs +411 -0
- package/esm2022/metric-insight/metric-insight.component.mjs +511 -0
- package/esm2022/modal/modal.component.mjs +202 -0
- package/esm2022/model-picker/model-picker.component.mjs +491 -0
- package/esm2022/permission-gate/permission-gate.component.mjs +498 -0
- package/esm2022/plan-review/plan-review.component.mjs +432 -0
- package/esm2022/progress/progress.component.mjs +503 -0
- package/esm2022/prompt-library/prompt-library.component.mjs +453 -0
- package/esm2022/prompt-starters/prompt-starters.component.mjs +272 -0
- package/esm2022/proposal-card/proposal-card.component.mjs +402 -0
- package/esm2022/public-api.mjs +88 -0
- package/esm2022/radar-chart/radar-chart.component.mjs +500 -0
- package/esm2022/radial-goals/radial-goals.component.mjs +418 -0
- package/esm2022/reasoning-trail/reasoning-trail.component.mjs +284 -0
- package/esm2022/response-versions/response-versions.component.mjs +288 -0
- package/esm2022/rewrite-toolbar/rewrite-toolbar.component.mjs +397 -0
- package/esm2022/rich-text-editor/rich-text-editor.component.mjs +1755 -0
- package/esm2022/run-cost/run-cost.component.mjs +215 -0
- package/esm2022/run-queue/run-queue.component.mjs +481 -0
- package/esm2022/run-summary/run-summary.component.mjs +331 -0
- package/esm2022/scatter-chart/scatter-chart.component.mjs +705 -0
- package/esm2022/score-breakdown/score-breakdown.component.mjs +460 -0
- package/esm2022/segmented-control/segmented-control.component.mjs +180 -0
- package/esm2022/source-stack/source-stack.component.mjs +245 -0
- package/esm2022/stat-cards/stat-cards.component.mjs +258 -0
- package/esm2022/status-pill/status-pill.component.mjs +305 -0
- package/esm2022/steering/steering.component.mjs +343 -0
- package/esm2022/step-loader/step-loader.component.mjs +209 -0
- package/esm2022/task-table/task-table.component.mjs +534 -0
- package/esm2022/terminal-stream/terminal-stream.component.mjs +583 -0
- package/esm2022/thinking/thinking.component.mjs +276 -0
- package/esm2022/thinking-states/thinking-states.component.mjs +333 -0
- package/esm2022/thread-panel/thread-panel.component.mjs +271 -0
- package/esm2022/toast/toast.component.mjs +195 -0
- package/esm2022/toast-stack/toast-stack.component.mjs +301 -0
- package/esm2022/tool-call/tool-call.component.mjs +273 -0
- package/esm2022/tooltip/tooltip.component.mjs +417 -0
- package/esm2022/top-pages/top-pages.component.mjs +240 -0
- package/esm2022/trace-view/trace-view.component.mjs +440 -0
- package/esm2022/visuno-angular.mjs +5 -0
- package/esm2022/voice-capture/voice-capture.component.mjs +650 -0
- package/esm2022/voice-orb/voice-orb.component.mjs +538 -0
- package/esm2022/web-search/web-search.component.mjs +374 -0
- package/eval-results/eval-results.component.d.ts +67 -0
- package/feedback-sheet/feedback-sheet.component.d.ts +74 -0
- package/fesm2022/visuno-angular.mjs +31992 -0
- package/fesm2022/visuno-angular.mjs.map +1 -0
- package/field-extraction/field-extraction.component.d.ts +82 -0
- package/funnel-chart/funnel-chart.component.d.ts +70 -0
- package/grid/grid.component.d.ts +22 -0
- package/health-score/health-score.component.d.ts +87 -0
- package/human-handoff/human-handoff.component.d.ts +125 -0
- package/image-generation/image-generation.component.d.ts +253 -0
- package/index.d.ts +5 -0
- package/inline-text-diff/inline-text-diff.component.d.ts +76 -0
- package/launch-checklist/launch-checklist.component.d.ts +46 -0
- package/line-chart/line-chart.component.d.ts +89 -0
- package/live-answer/live-answer.component.d.ts +110 -0
- package/metric-insight/metric-insight.component.d.ts +110 -0
- package/modal/modal.component.d.ts +37 -0
- package/model-picker/model-picker.component.d.ts +97 -0
- package/package.json +51 -4
- package/permission-gate/permission-gate.component.d.ts +100 -0
- package/plan-review/plan-review.component.d.ts +86 -0
- package/progress/progress.component.d.ts +91 -0
- package/prompt-library/prompt-library.component.d.ts +121 -0
- package/prompt-starters/prompt-starters.component.d.ts +65 -0
- package/proposal-card/proposal-card.component.d.ts +101 -0
- package/public-api.d.ts +82 -0
- package/radar-chart/radar-chart.component.d.ts +110 -0
- package/radial-goals/radial-goals.component.d.ts +90 -0
- package/reasoning-trail/reasoning-trail.component.d.ts +73 -0
- package/response-versions/response-versions.component.d.ts +54 -0
- package/rewrite-toolbar/rewrite-toolbar.component.d.ts +92 -0
- package/rich-text-editor/rich-text-editor.component.d.ts +180 -0
- package/run-cost/run-cost.component.d.ts +43 -0
- package/run-queue/run-queue.component.d.ts +93 -0
- package/run-summary/run-summary.component.d.ts +81 -0
- package/scatter-chart/scatter-chart.component.d.ts +139 -0
- package/score-breakdown/score-breakdown.component.d.ts +107 -0
- package/segmented-control/segmented-control.component.d.ts +44 -0
- package/source-stack/source-stack.component.d.ts +60 -0
- package/stat-cards/stat-cards.component.d.ts +86 -0
- package/status-pill/status-pill.component.d.ts +64 -0
- package/steering/steering.component.d.ts +75 -0
- package/step-loader/step-loader.component.d.ts +40 -0
- package/styles.css +424 -0
- package/task-table/task-table.component.d.ts +114 -0
- package/terminal-stream/terminal-stream.component.d.ts +110 -0
- package/thinking/thinking.component.d.ts +63 -0
- package/thinking-states/thinking-states.component.d.ts +51 -0
- package/thread-panel/thread-panel.component.d.ts +75 -0
- package/toast/toast.component.d.ts +56 -0
- package/toast-stack/toast-stack.component.d.ts +72 -0
- package/tokens.css +424 -0
- package/tool-call/tool-call.component.d.ts +61 -0
- package/tooltip/tooltip.component.d.ts +89 -0
- package/top-pages/top-pages.component.d.ts +75 -0
- package/trace-view/trace-view.component.d.ts +95 -0
- package/voice-capture/voice-capture.component.d.ts +103 -0
- package/voice-orb/voice-orb.component.d.ts +78 -0
- package/web-search/web-search.component.d.ts +77 -0
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
// framework/angular/thinking-states/thinking-states.component.ts
|
|
2
|
+
//
|
|
3
|
+
// Native Angular port of framework/react/thinking-states/ThinkingStates.tsx.
|
|
4
|
+
// Ten thinking indicators to pick from, each a small mark beside a status line
|
|
5
|
+
// that steps through what the agent is doing. Inputs mirror the React props;
|
|
6
|
+
// the grid generation, the auto-stepping, the stream typing and the seconds
|
|
7
|
+
// counter are ported from the vanilla JS (thinking-states.js).
|
|
8
|
+
import { Component, Input, ViewEncapsulation, } from '@angular/core';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "../core/reduced-motion.service";
|
|
11
|
+
// Orbit, Morph, Scan, Stream and Spiral are drawn on a grid of dots, each at its
|
|
12
|
+
// own density (Orbit 5x5, Scan 6x6, Morph 7x7, Stream 4x3, Spiral 5x5): which
|
|
13
|
+
// part each dot plays, and its place in the run as an animation delay.
|
|
14
|
+
function grid(k) {
|
|
15
|
+
const n = { orbit: 5, scan: 6, morph: 7, stream: 4, spiral: 5 }[k];
|
|
16
|
+
const rows = k === 'stream' ? 3 : n;
|
|
17
|
+
const at = (x, y) => y * n + x;
|
|
18
|
+
const cls = Array(n * rows).fill('');
|
|
19
|
+
const dly = Array(n * rows).fill(null);
|
|
20
|
+
const pose = new Set();
|
|
21
|
+
const run = (order, dur) => order.forEach((c, i) => { dly[c] = (i / order.length - 1) * dur; });
|
|
22
|
+
if (k === 'orbit') {
|
|
23
|
+
const ring = [];
|
|
24
|
+
for (let x = 0; x < n; x++)
|
|
25
|
+
ring.push(at(x, 0));
|
|
26
|
+
for (let y = 1; y < n; y++)
|
|
27
|
+
ring.push(at(n - 1, y));
|
|
28
|
+
for (let x = n - 2; x >= 0; x--)
|
|
29
|
+
ring.push(at(x, n - 1));
|
|
30
|
+
for (let y = n - 2; y > 0; y--)
|
|
31
|
+
ring.push(at(0, y));
|
|
32
|
+
ring.forEach((c) => { cls[c] = 'r'; });
|
|
33
|
+
run(ring, 1.6);
|
|
34
|
+
cls[at(2, 2)] = 'c';
|
|
35
|
+
[0, ring.length - 1, ring.length - 2].forEach((i) => pose.add(ring[i]));
|
|
36
|
+
}
|
|
37
|
+
else if (k === 'scan') {
|
|
38
|
+
const len = [6, 0, 5, 0, 3, 0];
|
|
39
|
+
for (let y = 0; y < n; y++)
|
|
40
|
+
for (let x = 0; x < n; x++) {
|
|
41
|
+
const c = at(x, y);
|
|
42
|
+
cls[c] = x < len[y] ? 'l' : 'b';
|
|
43
|
+
dly[c] = (x / n - 1) * 1.6;
|
|
44
|
+
if (x === 2)
|
|
45
|
+
pose.add(c);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else if (k === 'morph') {
|
|
49
|
+
for (let y = 0; y < n; y++)
|
|
50
|
+
for (let x = 0; x < n; x++) {
|
|
51
|
+
const rect = y >= 1 && y <= 5;
|
|
52
|
+
const circ = (x - 3) ** 2 + (y - 3) ** 2 <= 10;
|
|
53
|
+
const tri = Math.abs(x - 3) <= y / 2;
|
|
54
|
+
const c = at(x, y);
|
|
55
|
+
cls[c] = 'm' + ((rect ? 1 : 0) | (circ ? 2 : 0) | (tri ? 4 : 0));
|
|
56
|
+
if (circ)
|
|
57
|
+
pose.add(c);
|
|
58
|
+
dly[c] = -(((c * 37 + 11) % 17) / 17) * 0.32;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else if (k === 'spiral') {
|
|
62
|
+
// walk an inward spiral; each cell lights in turn and holds its place in the run as a delay
|
|
63
|
+
const path = [];
|
|
64
|
+
let x0 = 0, y0 = 0, x1 = n - 1, y1 = n - 1;
|
|
65
|
+
while (x0 <= x1 && y0 <= y1) {
|
|
66
|
+
for (let x = x0; x <= x1; x++)
|
|
67
|
+
path.push(at(x, y0));
|
|
68
|
+
for (let y = y0 + 1; y <= y1; y++)
|
|
69
|
+
path.push(at(x1, y));
|
|
70
|
+
if (y0 < y1)
|
|
71
|
+
for (let x = x1 - 1; x >= x0; x--)
|
|
72
|
+
path.push(at(x, y1));
|
|
73
|
+
if (x0 < x1)
|
|
74
|
+
for (let y = y1 - 1; y > y0; y--)
|
|
75
|
+
path.push(at(x0, y));
|
|
76
|
+
x0++;
|
|
77
|
+
y0++;
|
|
78
|
+
x1--;
|
|
79
|
+
y1--;
|
|
80
|
+
}
|
|
81
|
+
path.forEach((c) => { cls[c] = 'sp'; });
|
|
82
|
+
run(path, 1.8);
|
|
83
|
+
[path[path.length - 1], path[0], path[1]].forEach((c) => pose.add(c));
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
for (let y = 0; y < rows; y++)
|
|
87
|
+
for (let x = 0; x < n; x++) {
|
|
88
|
+
const c = at(x, y);
|
|
89
|
+
cls[c] = 's' + c;
|
|
90
|
+
if (y < 2)
|
|
91
|
+
pose.add(c);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return cls.map((x, c) => ({
|
|
95
|
+
cls: [x, pose.has(c) ? 'p' : '']
|
|
96
|
+
.filter(Boolean)
|
|
97
|
+
.map((y) => 'vo-' + y)
|
|
98
|
+
.join(' '),
|
|
99
|
+
delay: dly[c],
|
|
100
|
+
}));
|
|
101
|
+
}
|
|
102
|
+
const GRIDS = {
|
|
103
|
+
orbit: grid('orbit'),
|
|
104
|
+
morph: grid('morph'),
|
|
105
|
+
scan: grid('scan'),
|
|
106
|
+
stream: grid('stream'),
|
|
107
|
+
spiral: grid('spiral'),
|
|
108
|
+
};
|
|
109
|
+
const MATRIX = Array.from({ length: 16 }, (_, i) => i);
|
|
110
|
+
const STACK = [0, 1, 2];
|
|
111
|
+
const WAVE = [0, 1, 2, 3, 4];
|
|
112
|
+
/** Ten thinking indicators to pick from, each a small mark beside a status line. */
|
|
113
|
+
export class ThinkingStatesComponent {
|
|
114
|
+
constructor(reduced) {
|
|
115
|
+
this.reduced = reduced;
|
|
116
|
+
/** Which indicator to show. */
|
|
117
|
+
this.variant = 'orbit';
|
|
118
|
+
/** The status lines. With more than one, they take turns unless `current` is set. */
|
|
119
|
+
this.steps = ['Thinking'];
|
|
120
|
+
/** Milliseconds each line shows for when they take turns. */
|
|
121
|
+
this.interval = 2600;
|
|
122
|
+
/** The whole current line (for the screen reader). */
|
|
123
|
+
this.text = '';
|
|
124
|
+
/** What is painted now (the typed prefix in Stream, otherwise the whole line). */
|
|
125
|
+
this.shown = '';
|
|
126
|
+
/** Seconds shown, or null when hidden. */
|
|
127
|
+
this.secs = 0;
|
|
128
|
+
this.auto = 0;
|
|
129
|
+
this.counted = 0;
|
|
130
|
+
this.typed = 0;
|
|
131
|
+
}
|
|
132
|
+
get gridKind() {
|
|
133
|
+
return this.variant === 'morph' || this.variant === 'scan' || this.variant === 'stream' || this.variant === 'spiral'
|
|
134
|
+
? this.variant
|
|
135
|
+
: 'orbit';
|
|
136
|
+
}
|
|
137
|
+
get dots() {
|
|
138
|
+
return GRIDS[this.gridKind];
|
|
139
|
+
}
|
|
140
|
+
get matrix() {
|
|
141
|
+
return MATRIX;
|
|
142
|
+
}
|
|
143
|
+
get stack() {
|
|
144
|
+
return STACK;
|
|
145
|
+
}
|
|
146
|
+
get wave() {
|
|
147
|
+
return WAVE;
|
|
148
|
+
}
|
|
149
|
+
ngOnInit() {
|
|
150
|
+
this.startRotation();
|
|
151
|
+
this.startSeconds();
|
|
152
|
+
this.updateText(false);
|
|
153
|
+
}
|
|
154
|
+
ngOnChanges(changes) {
|
|
155
|
+
if (changes['current'] || changes['steps'] || changes['interval']) {
|
|
156
|
+
this.startRotation();
|
|
157
|
+
}
|
|
158
|
+
if (changes['seconds']) {
|
|
159
|
+
this.startSeconds();
|
|
160
|
+
}
|
|
161
|
+
if (changes['variant'] || changes['current'] || changes['steps']) {
|
|
162
|
+
this.updateText(!changes['variant']);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// the lines take turns by themselves unless `current` fixes one, or there is only one
|
|
166
|
+
startRotation() {
|
|
167
|
+
clearInterval(this.rotateTimer);
|
|
168
|
+
this.rotateTimer = undefined;
|
|
169
|
+
if (this.current !== undefined || this.steps.length < 2)
|
|
170
|
+
return;
|
|
171
|
+
this.rotateTimer = setInterval(() => {
|
|
172
|
+
this.auto = (this.auto + 1) % this.steps.length;
|
|
173
|
+
this.updateText(true);
|
|
174
|
+
}, this.interval);
|
|
175
|
+
}
|
|
176
|
+
startSeconds() {
|
|
177
|
+
clearInterval(this.secondTimer);
|
|
178
|
+
this.secondTimer = undefined;
|
|
179
|
+
if (this.seconds === false) {
|
|
180
|
+
this.secs = null;
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
if (this.seconds !== undefined) {
|
|
184
|
+
this.secs = this.seconds;
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
this.secs = this.counted;
|
|
188
|
+
this.secondTimer = setInterval(() => {
|
|
189
|
+
this.counted++;
|
|
190
|
+
this.secs = this.counted;
|
|
191
|
+
}, 1000);
|
|
192
|
+
}
|
|
193
|
+
// Stream types each new line out behind its caret; the others show it whole.
|
|
194
|
+
updateText(fresh) {
|
|
195
|
+
const index = Math.max(0, Math.min(this.current ?? this.auto, this.steps.length - 1));
|
|
196
|
+
const next = this.steps[index] ?? '';
|
|
197
|
+
const changed = next !== this.text;
|
|
198
|
+
this.text = next;
|
|
199
|
+
clearInterval(this.typeTimer);
|
|
200
|
+
this.typeTimer = undefined;
|
|
201
|
+
if (this.variant !== 'stream' || this.reduced.reduce() || !fresh || !changed) {
|
|
202
|
+
this.shown = next;
|
|
203
|
+
this.typed = next.length;
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
let n = 0;
|
|
207
|
+
this.typed = 0;
|
|
208
|
+
this.shown = '';
|
|
209
|
+
this.typeTimer = setInterval(() => {
|
|
210
|
+
n++;
|
|
211
|
+
this.typed = n;
|
|
212
|
+
this.shown = next.slice(0, n);
|
|
213
|
+
if (n >= next.length) {
|
|
214
|
+
clearInterval(this.typeTimer);
|
|
215
|
+
this.typeTimer = undefined;
|
|
216
|
+
}
|
|
217
|
+
}, 32);
|
|
218
|
+
}
|
|
219
|
+
ngOnDestroy() {
|
|
220
|
+
clearInterval(this.rotateTimer);
|
|
221
|
+
clearInterval(this.secondTimer);
|
|
222
|
+
clearInterval(this.typeTimer);
|
|
223
|
+
}
|
|
224
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ThinkingStatesComponent, deps: [{ token: i1.ReducedMotionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
225
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ThinkingStatesComponent, isStandalone: true, selector: "vo-thinking-states", inputs: { variant: "variant", steps: "steps", current: "current", interval: "interval", seconds: "seconds" }, usesOnChanges: true, ngImport: i0, template: `
|
|
226
|
+
<div data-vo="" [attr.data-v]="variant" class="vo-ths">
|
|
227
|
+
<div class="vo-ths-row">
|
|
228
|
+
<span class="vo-ths-mk" aria-hidden="true">
|
|
229
|
+
@switch (variant) {
|
|
230
|
+
@case ('matrix') {
|
|
231
|
+
<span class="vo-ths-mtx">
|
|
232
|
+
@for (i of matrix; track i) { <i></i> }
|
|
233
|
+
</span>
|
|
234
|
+
}
|
|
235
|
+
@case ('stack') {
|
|
236
|
+
<span class="vo-ths-stk"><i></i><i></i><i></i></span>
|
|
237
|
+
}
|
|
238
|
+
@case ('pulse') {
|
|
239
|
+
<span class="vo-ths-pul"><i class="vo-core"></i><i class="vo-ring"></i><i class="vo-ring"></i></span>
|
|
240
|
+
}
|
|
241
|
+
@case ('wave') {
|
|
242
|
+
<span class="vo-ths-wav">
|
|
243
|
+
@for (i of wave; track i) { <i></i> }
|
|
244
|
+
</span>
|
|
245
|
+
}
|
|
246
|
+
@case ('bounce') {
|
|
247
|
+
<span class="vo-ths-bnc"><i></i><i></i><i></i></span>
|
|
248
|
+
}
|
|
249
|
+
@default {
|
|
250
|
+
<span class="vo-ths-dg" [attr.data-k]="gridKind">
|
|
251
|
+
@for (d of dots; track $index) {
|
|
252
|
+
<i [class]="d.cls" [style.animationDelay]="d.delay != null ? d.delay.toFixed(3) + 's' : null"></i>
|
|
253
|
+
}
|
|
254
|
+
</span>
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
</span>
|
|
258
|
+
<span class="vo-ths-l" aria-hidden="true">
|
|
259
|
+
<span class="vo-ths-tx" [class.vo-shim]="variant === 'orbit'">{{ shown }}</span>
|
|
260
|
+
@if (variant === 'stream') {
|
|
261
|
+
<span class="vo-ths-car"></span>
|
|
262
|
+
}
|
|
263
|
+
</span>
|
|
264
|
+
@if (secs !== null) {
|
|
265
|
+
<span class="vo-ths-t vo-num" aria-hidden="true">{{ secs }}s</span>
|
|
266
|
+
}
|
|
267
|
+
</div>
|
|
268
|
+
<!-- a screen reader hears each new line once, never the letters as they type -->
|
|
269
|
+
<span class="vo-ths-sr" role="status" aria-live="polite">{{ text }}</span>
|
|
270
|
+
</div>
|
|
271
|
+
`, isInline: true, styles: [".vo-ths{width:100%;max-width:264px;margin-inline:auto;min-height:84px;display:flex;flex-direction:column;justify-content:center;gap:var(--vo-s-3);position:relative}.vo-ths-row{display:flex;align-items:center;gap:10px;min-width:0}.vo-ths-mk{position:relative;width:28px;height:28px;flex:none;display:grid;place-items:center;border-radius:calc(9px * var(--vo-rk));background:var(--vo-chip);color:var(--vo-accent-mark,var(--vo-accent))}.vo-ths-l{flex:0 1 auto;min-width:0;font-size:14px;line-height:20px;color:var(--vo-fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vo-ths-car{display:inline-block;width:2px;height:15px;margin-left:2px;vertical-align:-3px;border-radius:1px;background:var(--vo-accent-mark,var(--vo-accent));animation:vo-thsblink 1s steps(1,end) infinite}@keyframes vo-thsblink{50%{opacity:0}}.vo-ths-t{flex:none;font-size:13px;color:var(--vo-muted)}.vo-ths-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.vo-ths-dg{display:grid;grid-template-columns:repeat(var(--vo-n),var(--vo-ds));gap:var(--vo-dg);--vo-ds:2px;--vo-dg:1px}.vo-ths-dg i{display:block;width:var(--vo-ds);height:var(--vo-ds);border-radius:50%;background:currentColor;opacity:.14}.vo-ths-dg[data-k=orbit]{--vo-n:5;--vo-ds:3px;--vo-dg:1px}.vo-ths-dg .vo-r{animation:vo-thsor 1.6s linear infinite}.vo-ths-dg .vo-c{opacity:.85;animation:vo-thscore 1.6s var(--vo-ease-io) infinite}@keyframes vo-thsor{0%{opacity:1}30%{opacity:.45}60%,to{opacity:.14}}@keyframes vo-thscore{50%{transform:scale(.7)}}.vo-ths-dg[data-k=scan]{--vo-n:6;--vo-ds:2px;--vo-dg:1px}.vo-ths-dg .vo-l{animation:vo-thsscl 1.6s linear infinite}.vo-ths-dg .vo-b{opacity:.06;animation:vo-thsscb 1.6s linear infinite}@keyframes vo-thsscl{0%{opacity:1}35%,to{opacity:.3}}@keyframes vo-thsscb{0%{opacity:.38}25%,to{opacity:.06}}.vo-ths-dg[data-k=morph]{--vo-n:7;--vo-ds:2px;--vo-dg:1px}.vo-ths-dg[data-k=morph] i{animation-duration:3.2s;animation-timing-function:var(--vo-ease-io);animation-iteration-count:infinite}.vo-ths-dg .vo-m0{animation-name:vo-thsm0}.vo-ths-dg .vo-m1{animation-name:vo-thsm1}.vo-ths-dg .vo-m2{animation-name:vo-thsm2}.vo-ths-dg .vo-m3{animation-name:vo-thsm3}.vo-ths-dg .vo-m4{animation-name:vo-thsm4}.vo-ths-dg .vo-m5{animation-name:vo-thsm5}.vo-ths-dg .vo-m6{animation-name:vo-thsm6}.vo-ths-dg .vo-m7{animation-name:vo-thsm7}@keyframes vo-thsm0{0%{opacity:.12}20%{opacity:.12}22.6%{opacity:.5}25.2%{opacity:.12}27.8%{opacity:.4}30.4%{opacity:.12}33%{opacity:.12}53%{opacity:.12}55.6%{opacity:.5}58.2%{opacity:.12}60.8%{opacity:.4}63.4%{opacity:.12}66%{opacity:.12}86%{opacity:.12}88.8%{opacity:.5}91.6%{opacity:.12}94.4%{opacity:.4}97.2%{opacity:.12}to{opacity:.12}}@keyframes vo-thsm1{0%{opacity:1}20%{opacity:1}22.6%{opacity:.85}25.2%{opacity:.2}27.8%{opacity:.95}30.4%{opacity:.3}33%{opacity:.12}53%{opacity:.12}55.6%{opacity:.5}58.2%{opacity:.12}60.8%{opacity:.4}63.4%{opacity:.12}66%{opacity:.12}86%{opacity:.12}88.8%{opacity:.85}91.6%{opacity:.2}94.4%{opacity:.95}97.2%{opacity:.3}to{opacity:1}}@keyframes vo-thsm2{0%{opacity:.12}20%{opacity:.12}22.6%{opacity:.85}25.2%{opacity:.2}27.8%{opacity:.95}30.4%{opacity:.3}33%{opacity:1}53%{opacity:1}55.6%{opacity:.85}58.2%{opacity:.2}60.8%{opacity:.95}63.4%{opacity:.3}66%{opacity:.12}86%{opacity:.12}88.8%{opacity:.5}91.6%{opacity:.12}94.4%{opacity:.4}97.2%{opacity:.12}to{opacity:.12}}@keyframes vo-thsm3{0%{opacity:1}20%{opacity:1}22.6%{opacity:.85}25.2%{opacity:.2}27.8%{opacity:.95}30.4%{opacity:.3}33%{opacity:1}53%{opacity:1}55.6%{opacity:.85}58.2%{opacity:.2}60.8%{opacity:.95}63.4%{opacity:.3}66%{opacity:.12}86%{opacity:.12}88.8%{opacity:.85}91.6%{opacity:.2}94.4%{opacity:.95}97.2%{opacity:.3}to{opacity:1}}@keyframes vo-thsm4{0%{opacity:.12}20%{opacity:.12}22.6%{opacity:.5}25.2%{opacity:.12}27.8%{opacity:.4}30.4%{opacity:.12}33%{opacity:.12}53%{opacity:.12}55.6%{opacity:.85}58.2%{opacity:.2}60.8%{opacity:.95}63.4%{opacity:.3}66%{opacity:1}86%{opacity:1}88.8%{opacity:.85}91.6%{opacity:.2}94.4%{opacity:.95}97.2%{opacity:.3}to{opacity:.12}}@keyframes vo-thsm5{0%{opacity:1}20%{opacity:1}22.6%{opacity:.85}25.2%{opacity:.2}27.8%{opacity:.95}30.4%{opacity:.3}33%{opacity:.12}53%{opacity:.12}55.6%{opacity:.85}58.2%{opacity:.2}60.8%{opacity:.95}63.4%{opacity:.3}66%{opacity:1}86%{opacity:1}88.8%{opacity:.85}91.6%{opacity:.2}94.4%{opacity:.95}97.2%{opacity:.3}to{opacity:1}}@keyframes vo-thsm6{0%{opacity:.12}20%{opacity:.12}22.6%{opacity:.85}25.2%{opacity:.2}27.8%{opacity:.95}30.4%{opacity:.3}33%{opacity:1}53%{opacity:1}55.6%{opacity:.85}58.2%{opacity:.2}60.8%{opacity:.95}63.4%{opacity:.3}66%{opacity:1}86%{opacity:1}88.8%{opacity:.85}91.6%{opacity:.2}94.4%{opacity:.95}97.2%{opacity:.3}to{opacity:.12}}@keyframes vo-thsm7{0%{opacity:1}20%{opacity:1}22.6%{opacity:.85}25.2%{opacity:.2}27.8%{opacity:.95}30.4%{opacity:.3}33%{opacity:1}53%{opacity:1}55.6%{opacity:.85}58.2%{opacity:.2}60.8%{opacity:.95}63.4%{opacity:.3}66%{opacity:1}86%{opacity:1}88.8%{opacity:.85}91.6%{opacity:.2}94.4%{opacity:.95}97.2%{opacity:.3}to{opacity:1}}.vo-ths-dg[data-k=stream]{--vo-n:4;--vo-ds:3px;--vo-dg:2px;row-gap:4px;height:18px;align-content:start;padding-top:1px;box-sizing:border-box}.vo-ths-dg[data-k=stream] i{animation-duration:2.2s;animation-timing-function:linear;animation-iteration-count:infinite}.vo-ths-dg .vo-s0{animation-name:vo-thss0}.vo-ths-dg .vo-s1{animation-name:vo-thss1}.vo-ths-dg .vo-s2{animation-name:vo-thss2}.vo-ths-dg .vo-s3{animation-name:vo-thss3}.vo-ths-dg .vo-s4{animation-name:vo-thss4}.vo-ths-dg .vo-s5{animation-name:vo-thss5}.vo-ths-dg .vo-s6{animation-name:vo-thss6}.vo-ths-dg .vo-s7{animation-name:vo-thss7}.vo-ths-dg .vo-s8{animation-name:vo-thss8}.vo-ths-dg .vo-s9{animation-name:vo-thss9}.vo-ths-dg .vo-s10{animation-name:vo-thss10}.vo-ths-dg .vo-s11{animation-name:vo-thss11}@keyframes vo-thss0{0%,4.0%{opacity:.14}7.5%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss1{0%,9.5%{opacity:.14}13.0%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss2{0%,15.0%{opacity:.14}18.5%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss3{0%,20.5%{opacity:.14}24.0%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss4{0%,26.0%{opacity:.14}29.5%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss5{0%,31.5%{opacity:.14}35.0%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss6{0%,37.0%{opacity:.14}40.5%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss7{0%,42.5%{opacity:.14}46.0%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss8{0%,48.0%{opacity:.14}51.5%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss9{0%,53.5%{opacity:.14}57.0%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss10{0%,59.0%{opacity:.14}62.5%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss11{0%,64.5%{opacity:.14}68.0%,82%{opacity:1}94%,to{opacity:.14}}.vo-ths-pul{position:relative;width:20px;height:20px}.vo-ths-pul i{position:absolute;inset:0;margin:auto;border-radius:50%;background:currentColor}.vo-ths-pul .vo-core{width:5px;height:5px;opacity:.85;animation:vo-thspc 1.8s var(--vo-ease-io) infinite}.vo-ths-pul .vo-ring{width:5px;height:5px;background:none;box-shadow:inset 0 0 0 1.25px currentColor;animation:vo-thspr 1.8s var(--vo-ease-io) infinite}.vo-ths-pul .vo-ring:nth-child(3){animation-delay:-.9s}@keyframes vo-thspc{50%{transform:scale(.7)}}@keyframes vo-thspr{0%{width:5px;height:5px;opacity:.7}to{width:18px;height:18px;opacity:0}}.vo-ths-wav{display:flex;align-items:center;gap:2px;height:18px}.vo-ths-wav i{display:block;width:2.5px;height:4px;border-radius:1.25px;background:currentColor;opacity:.75;transform-origin:center;animation:vo-thswv 1s var(--vo-ease-io) infinite}.vo-ths-wav i:nth-child(1){animation-delay:-0s}.vo-ths-wav i:nth-child(2){animation-delay:-.12s}.vo-ths-wav i:nth-child(3){animation-delay:-.24s}.vo-ths-wav i:nth-child(4){animation-delay:-.36s}.vo-ths-wav i:nth-child(5){animation-delay:-.48s}@keyframes vo-thswv{0%,to{transform:scaleY(1);opacity:.5}50%{transform:scaleY(3.4);opacity:1}}.vo-ths-bnc{display:flex;align-items:flex-end;gap:3px;height:18px}.vo-ths-bnc i{display:block;width:4px;height:4px;border-radius:50%;background:currentColor;opacity:.85;animation:vo-thsbn 1.1s var(--vo-ease-io) infinite}.vo-ths-bnc i:nth-child(2){animation-delay:.18s}.vo-ths-bnc i:nth-child(3){animation-delay:.36s}@keyframes vo-thsbn{0%,70%,to{transform:translateY(0);opacity:.5}35%{transform:translateY(-6px);opacity:1}}.vo-ths-dg[data-k=spiral]{--vo-n:5;--vo-ds:2px;--vo-dg:1px}.vo-ths-dg .vo-sp{animation:vo-thssp 1.8s linear infinite}@keyframes vo-thssp{0%{opacity:1}30%{opacity:.5}60%,to{opacity:.14}}.vo-ths-mtx{display:grid;grid-template-columns:repeat(4,3px);gap:2px}.vo-ths-mtx i{display:block;width:3px;height:3px;border-radius:50%;background:currentColor;opacity:.2;animation:vo-thstw 2s var(--vo-ease-io) infinite}.vo-ths-mtx i:nth-child(3n){animation-duration:2.6s}.vo-ths-mtx i:nth-child(3n+1){animation-duration:1.7s}.vo-ths-mtx i:nth-child(1){animation-delay:-.1s}.vo-ths-mtx i:nth-child(2){animation-delay:-.9s}.vo-ths-mtx i:nth-child(3){animation-delay:-1.9s}.vo-ths-mtx i:nth-child(4){animation-delay:-.4s}.vo-ths-mtx i:nth-child(5){animation-delay:-1.2s}.vo-ths-mtx i:nth-child(6){animation-delay:-.2s}.vo-ths-mtx i:nth-child(7){animation-delay:-1.6s}.vo-ths-mtx i:nth-child(8){animation-delay:-.7s}.vo-ths-mtx i:nth-child(9){animation-delay:-.5s}.vo-ths-mtx i:nth-child(10){animation-delay:-1.4s}.vo-ths-mtx i:nth-child(11){animation-delay:-.05s}.vo-ths-mtx i:nth-child(12){animation-delay:-1s}.vo-ths-mtx i:nth-child(13){animation-delay:-2.1s}.vo-ths-mtx i:nth-child(14){animation-delay:-.8s}.vo-ths-mtx i:nth-child(15){animation-delay:-1.3s}.vo-ths-mtx i:nth-child(16){animation-delay:-.3s}@keyframes vo-thstw{0%,to{opacity:.2}45%,60%{opacity:1}}.vo-ths-stk{position:relative;width:20px;height:20px}.vo-ths-stk i{position:absolute;left:3px;top:3px;width:11px;height:13px;border-radius:calc(2.5px * var(--vo-rk));background:var(--vo-surface);box-shadow:inset 0 0 0 1.25px currentColor;color:color-mix(in srgb,var(--vo-fg) 34%,transparent);animation:vo-thsstk 2.4s var(--vo-ease-io) infinite}.vo-ths-stk i:nth-child(1){translate:6px -3px;opacity:.6;z-index:1}.vo-ths-stk i:nth-child(2){translate:3px 0;opacity:.85;z-index:2;animation-delay:-.8s}.vo-ths-stk i:nth-child(3){translate:0 3px;z-index:3;color:var(--vo-accent-mark,var(--vo-accent));animation-delay:-1.6s}@keyframes vo-thsstk{0%{translate:6px -3px;opacity:.6;z-index:1;color:color-mix(in srgb,var(--vo-fg) 34%,transparent)}25%{translate:3px 0;opacity:.85;z-index:2;color:color-mix(in srgb,var(--vo-fg) 34%,transparent)}50%,66%{translate:0 3px;opacity:1;z-index:3;color:var(--vo-accent-mark,var(--vo-accent))}80%{translate:-5px 6px;opacity:0;z-index:3;color:var(--vo-accent-mark,var(--vo-accent))}81%{translate:6px -3px;opacity:0;z-index:1;color:color-mix(in srgb,var(--vo-fg) 34%,transparent)}to{translate:6px -3px;opacity:.6;z-index:1;color:color-mix(in srgb,var(--vo-fg) 34%,transparent)}}@media (prefers-reduced-motion:reduce){.vo-ths-mk *,.vo-ths-car{animation:none!important}.vo-ths-dg .vo-p{opacity:1}.vo-ths-mtx i:is(:nth-child(2),:nth-child(5),:nth-child(7),:nth-child(10),:nth-child(12),:nth-child(15)){opacity:1}.vo-ths-pul .vo-ring{width:12px;height:12px;opacity:.4}.vo-ths-wav i:nth-child(3){transform:scaleY(3.4);opacity:1}.vo-ths-bnc i:nth-child(2){transform:translateY(-6px);opacity:1}}:root:not([data-style=soft]) .vo-ths-mk:not(:where([data-style=soft],[data-style=soft] *)){background:var(--vo-surface);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--vo-rail) 50%,transparent)}:root:not([data-style=soft]) .vo-ths-dg i:not(:where([data-style=soft],[data-style=soft] *)){border-radius:0}:root:not([data-style=soft]) .vo-ths-car:not(:where([data-style=soft],[data-style=soft] *)){width:7px;vertical-align:-3px}:root:not([data-style=soft]) .vo-ths-mtx i:not(:where([data-style=soft],[data-style=soft] *)){animation-timing-function:steps(1,end)}:root:not([data-style=soft]) .vo-ths-stk i:not(:where([data-style=soft],[data-style=soft] *)){animation-timing-function:steps(3)}:root:not([data-style=soft]) .vo-ths-wav i:not(:where([data-style=soft],[data-style=soft] *)){border-radius:0}:root:not([data-style=soft]) .vo-ths-bnc i:not(:where([data-style=soft],[data-style=soft] *)){border-radius:0}:root:not([data-style=soft]) .vo-ths-pul :is(.vo-core,.vo-ring):not(:where([data-style=soft],[data-style=soft] *)){border-radius:0}\n"], encapsulation: i0.ViewEncapsulation.None }); }
|
|
272
|
+
}
|
|
273
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ThinkingStatesComponent, decorators: [{
|
|
274
|
+
type: Component,
|
|
275
|
+
args: [{ selector: 'vo-thinking-states', standalone: true, encapsulation: ViewEncapsulation.None, template: `
|
|
276
|
+
<div data-vo="" [attr.data-v]="variant" class="vo-ths">
|
|
277
|
+
<div class="vo-ths-row">
|
|
278
|
+
<span class="vo-ths-mk" aria-hidden="true">
|
|
279
|
+
@switch (variant) {
|
|
280
|
+
@case ('matrix') {
|
|
281
|
+
<span class="vo-ths-mtx">
|
|
282
|
+
@for (i of matrix; track i) { <i></i> }
|
|
283
|
+
</span>
|
|
284
|
+
}
|
|
285
|
+
@case ('stack') {
|
|
286
|
+
<span class="vo-ths-stk"><i></i><i></i><i></i></span>
|
|
287
|
+
}
|
|
288
|
+
@case ('pulse') {
|
|
289
|
+
<span class="vo-ths-pul"><i class="vo-core"></i><i class="vo-ring"></i><i class="vo-ring"></i></span>
|
|
290
|
+
}
|
|
291
|
+
@case ('wave') {
|
|
292
|
+
<span class="vo-ths-wav">
|
|
293
|
+
@for (i of wave; track i) { <i></i> }
|
|
294
|
+
</span>
|
|
295
|
+
}
|
|
296
|
+
@case ('bounce') {
|
|
297
|
+
<span class="vo-ths-bnc"><i></i><i></i><i></i></span>
|
|
298
|
+
}
|
|
299
|
+
@default {
|
|
300
|
+
<span class="vo-ths-dg" [attr.data-k]="gridKind">
|
|
301
|
+
@for (d of dots; track $index) {
|
|
302
|
+
<i [class]="d.cls" [style.animationDelay]="d.delay != null ? d.delay.toFixed(3) + 's' : null"></i>
|
|
303
|
+
}
|
|
304
|
+
</span>
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
</span>
|
|
308
|
+
<span class="vo-ths-l" aria-hidden="true">
|
|
309
|
+
<span class="vo-ths-tx" [class.vo-shim]="variant === 'orbit'">{{ shown }}</span>
|
|
310
|
+
@if (variant === 'stream') {
|
|
311
|
+
<span class="vo-ths-car"></span>
|
|
312
|
+
}
|
|
313
|
+
</span>
|
|
314
|
+
@if (secs !== null) {
|
|
315
|
+
<span class="vo-ths-t vo-num" aria-hidden="true">{{ secs }}s</span>
|
|
316
|
+
}
|
|
317
|
+
</div>
|
|
318
|
+
<!-- a screen reader hears each new line once, never the letters as they type -->
|
|
319
|
+
<span class="vo-ths-sr" role="status" aria-live="polite">{{ text }}</span>
|
|
320
|
+
</div>
|
|
321
|
+
`, styles: [".vo-ths{width:100%;max-width:264px;margin-inline:auto;min-height:84px;display:flex;flex-direction:column;justify-content:center;gap:var(--vo-s-3);position:relative}.vo-ths-row{display:flex;align-items:center;gap:10px;min-width:0}.vo-ths-mk{position:relative;width:28px;height:28px;flex:none;display:grid;place-items:center;border-radius:calc(9px * var(--vo-rk));background:var(--vo-chip);color:var(--vo-accent-mark,var(--vo-accent))}.vo-ths-l{flex:0 1 auto;min-width:0;font-size:14px;line-height:20px;color:var(--vo-fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vo-ths-car{display:inline-block;width:2px;height:15px;margin-left:2px;vertical-align:-3px;border-radius:1px;background:var(--vo-accent-mark,var(--vo-accent));animation:vo-thsblink 1s steps(1,end) infinite}@keyframes vo-thsblink{50%{opacity:0}}.vo-ths-t{flex:none;font-size:13px;color:var(--vo-muted)}.vo-ths-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.vo-ths-dg{display:grid;grid-template-columns:repeat(var(--vo-n),var(--vo-ds));gap:var(--vo-dg);--vo-ds:2px;--vo-dg:1px}.vo-ths-dg i{display:block;width:var(--vo-ds);height:var(--vo-ds);border-radius:50%;background:currentColor;opacity:.14}.vo-ths-dg[data-k=orbit]{--vo-n:5;--vo-ds:3px;--vo-dg:1px}.vo-ths-dg .vo-r{animation:vo-thsor 1.6s linear infinite}.vo-ths-dg .vo-c{opacity:.85;animation:vo-thscore 1.6s var(--vo-ease-io) infinite}@keyframes vo-thsor{0%{opacity:1}30%{opacity:.45}60%,to{opacity:.14}}@keyframes vo-thscore{50%{transform:scale(.7)}}.vo-ths-dg[data-k=scan]{--vo-n:6;--vo-ds:2px;--vo-dg:1px}.vo-ths-dg .vo-l{animation:vo-thsscl 1.6s linear infinite}.vo-ths-dg .vo-b{opacity:.06;animation:vo-thsscb 1.6s linear infinite}@keyframes vo-thsscl{0%{opacity:1}35%,to{opacity:.3}}@keyframes vo-thsscb{0%{opacity:.38}25%,to{opacity:.06}}.vo-ths-dg[data-k=morph]{--vo-n:7;--vo-ds:2px;--vo-dg:1px}.vo-ths-dg[data-k=morph] i{animation-duration:3.2s;animation-timing-function:var(--vo-ease-io);animation-iteration-count:infinite}.vo-ths-dg .vo-m0{animation-name:vo-thsm0}.vo-ths-dg .vo-m1{animation-name:vo-thsm1}.vo-ths-dg .vo-m2{animation-name:vo-thsm2}.vo-ths-dg .vo-m3{animation-name:vo-thsm3}.vo-ths-dg .vo-m4{animation-name:vo-thsm4}.vo-ths-dg .vo-m5{animation-name:vo-thsm5}.vo-ths-dg .vo-m6{animation-name:vo-thsm6}.vo-ths-dg .vo-m7{animation-name:vo-thsm7}@keyframes vo-thsm0{0%{opacity:.12}20%{opacity:.12}22.6%{opacity:.5}25.2%{opacity:.12}27.8%{opacity:.4}30.4%{opacity:.12}33%{opacity:.12}53%{opacity:.12}55.6%{opacity:.5}58.2%{opacity:.12}60.8%{opacity:.4}63.4%{opacity:.12}66%{opacity:.12}86%{opacity:.12}88.8%{opacity:.5}91.6%{opacity:.12}94.4%{opacity:.4}97.2%{opacity:.12}to{opacity:.12}}@keyframes vo-thsm1{0%{opacity:1}20%{opacity:1}22.6%{opacity:.85}25.2%{opacity:.2}27.8%{opacity:.95}30.4%{opacity:.3}33%{opacity:.12}53%{opacity:.12}55.6%{opacity:.5}58.2%{opacity:.12}60.8%{opacity:.4}63.4%{opacity:.12}66%{opacity:.12}86%{opacity:.12}88.8%{opacity:.85}91.6%{opacity:.2}94.4%{opacity:.95}97.2%{opacity:.3}to{opacity:1}}@keyframes vo-thsm2{0%{opacity:.12}20%{opacity:.12}22.6%{opacity:.85}25.2%{opacity:.2}27.8%{opacity:.95}30.4%{opacity:.3}33%{opacity:1}53%{opacity:1}55.6%{opacity:.85}58.2%{opacity:.2}60.8%{opacity:.95}63.4%{opacity:.3}66%{opacity:.12}86%{opacity:.12}88.8%{opacity:.5}91.6%{opacity:.12}94.4%{opacity:.4}97.2%{opacity:.12}to{opacity:.12}}@keyframes vo-thsm3{0%{opacity:1}20%{opacity:1}22.6%{opacity:.85}25.2%{opacity:.2}27.8%{opacity:.95}30.4%{opacity:.3}33%{opacity:1}53%{opacity:1}55.6%{opacity:.85}58.2%{opacity:.2}60.8%{opacity:.95}63.4%{opacity:.3}66%{opacity:.12}86%{opacity:.12}88.8%{opacity:.85}91.6%{opacity:.2}94.4%{opacity:.95}97.2%{opacity:.3}to{opacity:1}}@keyframes vo-thsm4{0%{opacity:.12}20%{opacity:.12}22.6%{opacity:.5}25.2%{opacity:.12}27.8%{opacity:.4}30.4%{opacity:.12}33%{opacity:.12}53%{opacity:.12}55.6%{opacity:.85}58.2%{opacity:.2}60.8%{opacity:.95}63.4%{opacity:.3}66%{opacity:1}86%{opacity:1}88.8%{opacity:.85}91.6%{opacity:.2}94.4%{opacity:.95}97.2%{opacity:.3}to{opacity:.12}}@keyframes vo-thsm5{0%{opacity:1}20%{opacity:1}22.6%{opacity:.85}25.2%{opacity:.2}27.8%{opacity:.95}30.4%{opacity:.3}33%{opacity:.12}53%{opacity:.12}55.6%{opacity:.85}58.2%{opacity:.2}60.8%{opacity:.95}63.4%{opacity:.3}66%{opacity:1}86%{opacity:1}88.8%{opacity:.85}91.6%{opacity:.2}94.4%{opacity:.95}97.2%{opacity:.3}to{opacity:1}}@keyframes vo-thsm6{0%{opacity:.12}20%{opacity:.12}22.6%{opacity:.85}25.2%{opacity:.2}27.8%{opacity:.95}30.4%{opacity:.3}33%{opacity:1}53%{opacity:1}55.6%{opacity:.85}58.2%{opacity:.2}60.8%{opacity:.95}63.4%{opacity:.3}66%{opacity:1}86%{opacity:1}88.8%{opacity:.85}91.6%{opacity:.2}94.4%{opacity:.95}97.2%{opacity:.3}to{opacity:.12}}@keyframes vo-thsm7{0%{opacity:1}20%{opacity:1}22.6%{opacity:.85}25.2%{opacity:.2}27.8%{opacity:.95}30.4%{opacity:.3}33%{opacity:1}53%{opacity:1}55.6%{opacity:.85}58.2%{opacity:.2}60.8%{opacity:.95}63.4%{opacity:.3}66%{opacity:1}86%{opacity:1}88.8%{opacity:.85}91.6%{opacity:.2}94.4%{opacity:.95}97.2%{opacity:.3}to{opacity:1}}.vo-ths-dg[data-k=stream]{--vo-n:4;--vo-ds:3px;--vo-dg:2px;row-gap:4px;height:18px;align-content:start;padding-top:1px;box-sizing:border-box}.vo-ths-dg[data-k=stream] i{animation-duration:2.2s;animation-timing-function:linear;animation-iteration-count:infinite}.vo-ths-dg .vo-s0{animation-name:vo-thss0}.vo-ths-dg .vo-s1{animation-name:vo-thss1}.vo-ths-dg .vo-s2{animation-name:vo-thss2}.vo-ths-dg .vo-s3{animation-name:vo-thss3}.vo-ths-dg .vo-s4{animation-name:vo-thss4}.vo-ths-dg .vo-s5{animation-name:vo-thss5}.vo-ths-dg .vo-s6{animation-name:vo-thss6}.vo-ths-dg .vo-s7{animation-name:vo-thss7}.vo-ths-dg .vo-s8{animation-name:vo-thss8}.vo-ths-dg .vo-s9{animation-name:vo-thss9}.vo-ths-dg .vo-s10{animation-name:vo-thss10}.vo-ths-dg .vo-s11{animation-name:vo-thss11}@keyframes vo-thss0{0%,4.0%{opacity:.14}7.5%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss1{0%,9.5%{opacity:.14}13.0%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss2{0%,15.0%{opacity:.14}18.5%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss3{0%,20.5%{opacity:.14}24.0%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss4{0%,26.0%{opacity:.14}29.5%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss5{0%,31.5%{opacity:.14}35.0%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss6{0%,37.0%{opacity:.14}40.5%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss7{0%,42.5%{opacity:.14}46.0%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss8{0%,48.0%{opacity:.14}51.5%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss9{0%,53.5%{opacity:.14}57.0%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss10{0%,59.0%{opacity:.14}62.5%,82%{opacity:1}94%,to{opacity:.14}}@keyframes vo-thss11{0%,64.5%{opacity:.14}68.0%,82%{opacity:1}94%,to{opacity:.14}}.vo-ths-pul{position:relative;width:20px;height:20px}.vo-ths-pul i{position:absolute;inset:0;margin:auto;border-radius:50%;background:currentColor}.vo-ths-pul .vo-core{width:5px;height:5px;opacity:.85;animation:vo-thspc 1.8s var(--vo-ease-io) infinite}.vo-ths-pul .vo-ring{width:5px;height:5px;background:none;box-shadow:inset 0 0 0 1.25px currentColor;animation:vo-thspr 1.8s var(--vo-ease-io) infinite}.vo-ths-pul .vo-ring:nth-child(3){animation-delay:-.9s}@keyframes vo-thspc{50%{transform:scale(.7)}}@keyframes vo-thspr{0%{width:5px;height:5px;opacity:.7}to{width:18px;height:18px;opacity:0}}.vo-ths-wav{display:flex;align-items:center;gap:2px;height:18px}.vo-ths-wav i{display:block;width:2.5px;height:4px;border-radius:1.25px;background:currentColor;opacity:.75;transform-origin:center;animation:vo-thswv 1s var(--vo-ease-io) infinite}.vo-ths-wav i:nth-child(1){animation-delay:-0s}.vo-ths-wav i:nth-child(2){animation-delay:-.12s}.vo-ths-wav i:nth-child(3){animation-delay:-.24s}.vo-ths-wav i:nth-child(4){animation-delay:-.36s}.vo-ths-wav i:nth-child(5){animation-delay:-.48s}@keyframes vo-thswv{0%,to{transform:scaleY(1);opacity:.5}50%{transform:scaleY(3.4);opacity:1}}.vo-ths-bnc{display:flex;align-items:flex-end;gap:3px;height:18px}.vo-ths-bnc i{display:block;width:4px;height:4px;border-radius:50%;background:currentColor;opacity:.85;animation:vo-thsbn 1.1s var(--vo-ease-io) infinite}.vo-ths-bnc i:nth-child(2){animation-delay:.18s}.vo-ths-bnc i:nth-child(3){animation-delay:.36s}@keyframes vo-thsbn{0%,70%,to{transform:translateY(0);opacity:.5}35%{transform:translateY(-6px);opacity:1}}.vo-ths-dg[data-k=spiral]{--vo-n:5;--vo-ds:2px;--vo-dg:1px}.vo-ths-dg .vo-sp{animation:vo-thssp 1.8s linear infinite}@keyframes vo-thssp{0%{opacity:1}30%{opacity:.5}60%,to{opacity:.14}}.vo-ths-mtx{display:grid;grid-template-columns:repeat(4,3px);gap:2px}.vo-ths-mtx i{display:block;width:3px;height:3px;border-radius:50%;background:currentColor;opacity:.2;animation:vo-thstw 2s var(--vo-ease-io) infinite}.vo-ths-mtx i:nth-child(3n){animation-duration:2.6s}.vo-ths-mtx i:nth-child(3n+1){animation-duration:1.7s}.vo-ths-mtx i:nth-child(1){animation-delay:-.1s}.vo-ths-mtx i:nth-child(2){animation-delay:-.9s}.vo-ths-mtx i:nth-child(3){animation-delay:-1.9s}.vo-ths-mtx i:nth-child(4){animation-delay:-.4s}.vo-ths-mtx i:nth-child(5){animation-delay:-1.2s}.vo-ths-mtx i:nth-child(6){animation-delay:-.2s}.vo-ths-mtx i:nth-child(7){animation-delay:-1.6s}.vo-ths-mtx i:nth-child(8){animation-delay:-.7s}.vo-ths-mtx i:nth-child(9){animation-delay:-.5s}.vo-ths-mtx i:nth-child(10){animation-delay:-1.4s}.vo-ths-mtx i:nth-child(11){animation-delay:-.05s}.vo-ths-mtx i:nth-child(12){animation-delay:-1s}.vo-ths-mtx i:nth-child(13){animation-delay:-2.1s}.vo-ths-mtx i:nth-child(14){animation-delay:-.8s}.vo-ths-mtx i:nth-child(15){animation-delay:-1.3s}.vo-ths-mtx i:nth-child(16){animation-delay:-.3s}@keyframes vo-thstw{0%,to{opacity:.2}45%,60%{opacity:1}}.vo-ths-stk{position:relative;width:20px;height:20px}.vo-ths-stk i{position:absolute;left:3px;top:3px;width:11px;height:13px;border-radius:calc(2.5px * var(--vo-rk));background:var(--vo-surface);box-shadow:inset 0 0 0 1.25px currentColor;color:color-mix(in srgb,var(--vo-fg) 34%,transparent);animation:vo-thsstk 2.4s var(--vo-ease-io) infinite}.vo-ths-stk i:nth-child(1){translate:6px -3px;opacity:.6;z-index:1}.vo-ths-stk i:nth-child(2){translate:3px 0;opacity:.85;z-index:2;animation-delay:-.8s}.vo-ths-stk i:nth-child(3){translate:0 3px;z-index:3;color:var(--vo-accent-mark,var(--vo-accent));animation-delay:-1.6s}@keyframes vo-thsstk{0%{translate:6px -3px;opacity:.6;z-index:1;color:color-mix(in srgb,var(--vo-fg) 34%,transparent)}25%{translate:3px 0;opacity:.85;z-index:2;color:color-mix(in srgb,var(--vo-fg) 34%,transparent)}50%,66%{translate:0 3px;opacity:1;z-index:3;color:var(--vo-accent-mark,var(--vo-accent))}80%{translate:-5px 6px;opacity:0;z-index:3;color:var(--vo-accent-mark,var(--vo-accent))}81%{translate:6px -3px;opacity:0;z-index:1;color:color-mix(in srgb,var(--vo-fg) 34%,transparent)}to{translate:6px -3px;opacity:.6;z-index:1;color:color-mix(in srgb,var(--vo-fg) 34%,transparent)}}@media (prefers-reduced-motion:reduce){.vo-ths-mk *,.vo-ths-car{animation:none!important}.vo-ths-dg .vo-p{opacity:1}.vo-ths-mtx i:is(:nth-child(2),:nth-child(5),:nth-child(7),:nth-child(10),:nth-child(12),:nth-child(15)){opacity:1}.vo-ths-pul .vo-ring{width:12px;height:12px;opacity:.4}.vo-ths-wav i:nth-child(3){transform:scaleY(3.4);opacity:1}.vo-ths-bnc i:nth-child(2){transform:translateY(-6px);opacity:1}}:root:not([data-style=soft]) .vo-ths-mk:not(:where([data-style=soft],[data-style=soft] *)){background:var(--vo-surface);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--vo-rail) 50%,transparent)}:root:not([data-style=soft]) .vo-ths-dg i:not(:where([data-style=soft],[data-style=soft] *)){border-radius:0}:root:not([data-style=soft]) .vo-ths-car:not(:where([data-style=soft],[data-style=soft] *)){width:7px;vertical-align:-3px}:root:not([data-style=soft]) .vo-ths-mtx i:not(:where([data-style=soft],[data-style=soft] *)){animation-timing-function:steps(1,end)}:root:not([data-style=soft]) .vo-ths-stk i:not(:where([data-style=soft],[data-style=soft] *)){animation-timing-function:steps(3)}:root:not([data-style=soft]) .vo-ths-wav i:not(:where([data-style=soft],[data-style=soft] *)){border-radius:0}:root:not([data-style=soft]) .vo-ths-bnc i:not(:where([data-style=soft],[data-style=soft] *)){border-radius:0}:root:not([data-style=soft]) .vo-ths-pul :is(.vo-core,.vo-ring):not(:where([data-style=soft],[data-style=soft] *)){border-radius:0}\n"] }]
|
|
322
|
+
}], ctorParameters: () => [{ type: i1.ReducedMotionService }], propDecorators: { variant: [{
|
|
323
|
+
type: Input
|
|
324
|
+
}], steps: [{
|
|
325
|
+
type: Input
|
|
326
|
+
}], current: [{
|
|
327
|
+
type: Input
|
|
328
|
+
}], interval: [{
|
|
329
|
+
type: Input
|
|
330
|
+
}], seconds: [{
|
|
331
|
+
type: Input
|
|
332
|
+
}] } });
|
|
333
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhpbmtpbmctc3RhdGVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RoaW5raW5nLXN0YXRlcy90aGlua2luZy1zdGF0ZXMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlFQUFpRTtBQUNqRSxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLCtFQUErRTtBQUMvRSw2RUFBNkU7QUFDN0UsNEVBQTRFO0FBQzVFLCtEQUErRDtBQUUvRCxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFLTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7OztBQVl2QixpRkFBaUY7QUFDakYsOEVBQThFO0FBQzlFLHVFQUF1RTtBQUN2RSxTQUFTLElBQUksQ0FBQyxDQUFXO0lBQ3ZCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQyxNQUFNLEdBQUcsR0FBYSxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxNQUFNLEdBQUcsR0FBc0IsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUMvQixNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQWUsRUFBRSxHQUFXLEVBQUUsRUFBRSxDQUMzQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsSUFBSSxDQUFDLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLEdBQWEsRUFBRSxDQUFDO1FBQzFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDcEIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO1NBQU0sSUFBSSxDQUFDLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDeEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbkIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUNoQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQztvQkFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLENBQUM7SUFDTCxDQUFDO1NBQU0sSUFBSSxDQUFDLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDeEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUMzQixNQUFNLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMvQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNuQixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakUsSUFBSSxJQUFJO29CQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQy9DLENBQUM7SUFDTCxDQUFDO1NBQU0sSUFBSSxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDMUIsNEZBQTRGO1FBQzVGLE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztRQUMxQixJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQzVCLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFO2dCQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BELEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRTtnQkFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4RCxJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRTtvQkFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyRSxJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRTtvQkFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRSxFQUFFLEVBQUUsQ0FBQztZQUFDLEVBQUUsRUFBRSxDQUFDO1lBQUMsRUFBRSxFQUFFLENBQUM7WUFBQyxFQUFFLEVBQUUsQ0FBQztRQUN6QixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDZixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO1NBQU0sQ0FBQztRQUNOLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQzNCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbkIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUM7b0JBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEIsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQzdCLE1BQU0sQ0FBQyxPQUFPLENBQUM7YUFDZixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7YUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNaLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQ2QsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxLQUFLLEdBQTRCO0lBQ3JDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3BCLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3BCLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ2xCLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3RCLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDO0NBQ3ZCLENBQUM7QUFFRixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRTdCLG9GQUFvRjtBQXNEcEYsTUFBTSxPQUFPLHVCQUF1QjtJQTBCbEMsWUFBNkIsT0FBNkI7UUFBN0IsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7UUF6QjFELCtCQUErQjtRQUN0QixZQUFPLEdBQW9CLE9BQU8sQ0FBQztRQUM1QyxxRkFBcUY7UUFDNUUsVUFBSyxHQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFHeEMsNkRBQTZEO1FBQ3BELGFBQVEsR0FBRyxJQUFJLENBQUM7UUFJekIsc0RBQXNEO1FBQ3RELFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixrRkFBa0Y7UUFDbEYsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLDBDQUEwQztRQUMxQyxTQUFJLEdBQWtCLENBQUMsQ0FBQztRQUVoQixTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ1QsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUNaLFVBQUssR0FBRyxDQUFDLENBQUM7SUFLMkMsQ0FBQztJQUU5RCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssUUFBUTtZQUNsSCxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDZCxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDbEUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2pFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQztJQUVELHNGQUFzRjtJQUM5RSxhQUFhO1FBQ25CLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQUUsT0FBTztRQUNoRSxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDbEMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFTyxZQUFZO1FBQ2xCLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDbEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzNCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCw2RUFBNkU7SUFDckUsVUFBVSxDQUFDLEtBQWM7UUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQztRQUNuQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUVqQixhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBRTNCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1lBQ2hDLENBQUMsRUFBRSxDQUFDO1lBQ0osSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDckIsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRCxXQUFXO1FBQ1QsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEMsQ0FBQzsrR0FsSVUsdUJBQXVCO21HQUF2Qix1QkFBdUIsaU5BakR4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThDVDs7NEZBR1UsdUJBQXVCO2tCQXJEbkMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxpQkFDRCxpQkFBaUIsQ0FBQyxJQUFJLFlBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOENUO3lGQUtRLE9BQU87c0JBQWYsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZnJhbWV3b3JrL2FuZ3VsYXIvdGhpbmtpbmctc3RhdGVzL3RoaW5raW5nLXN0YXRlcy5jb21wb25lbnQudHNcbi8vXG4vLyBOYXRpdmUgQW5ndWxhciBwb3J0IG9mIGZyYW1ld29yay9yZWFjdC90aGlua2luZy1zdGF0ZXMvVGhpbmtpbmdTdGF0ZXMudHN4LlxuLy8gVGVuIHRoaW5raW5nIGluZGljYXRvcnMgdG8gcGljayBmcm9tLCBlYWNoIGEgc21hbGwgbWFyayBiZXNpZGUgYSBzdGF0dXMgbGluZVxuLy8gdGhhdCBzdGVwcyB0aHJvdWdoIHdoYXQgdGhlIGFnZW50IGlzIGRvaW5nLiBJbnB1dHMgbWlycm9yIHRoZSBSZWFjdCBwcm9wcztcbi8vIHRoZSBncmlkIGdlbmVyYXRpb24sIHRoZSBhdXRvLXN0ZXBwaW5nLCB0aGUgc3RyZWFtIHR5cGluZyBhbmQgdGhlIHNlY29uZHNcbi8vIGNvdW50ZXIgYXJlIHBvcnRlZCBmcm9tIHRoZSB2YW5pbGxhIEpTICh0aGlua2luZy1zdGF0ZXMuanMpLlxuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWR1Y2VkTW90aW9uU2VydmljZSB9IGZyb20gJy4uL2NvcmUvcmVkdWNlZC1tb3Rpb24uc2VydmljZSc7XG5cbmV4cG9ydCB0eXBlIFRoaW5raW5nVmFyaWFudCA9ICdvcmJpdCcgfCAnbW9ycGgnIHwgJ3NjYW4nIHwgJ3N0cmVhbScgfCAnbWF0cml4JyB8ICdzdGFjaycgfCAncHVsc2UnIHwgJ3dhdmUnIHwgJ2JvdW5jZScgfCAnc3BpcmFsJztcbnR5cGUgR3JpZEtpbmQgPSAnb3JiaXQnIHwgJ21vcnBoJyB8ICdzY2FuJyB8ICdzdHJlYW0nIHwgJ3NwaXJhbCc7XG5cbi8qKiBPbmUgZG90IGluIGEgZ3JpZCBtYXJrOiBpdHMgcGFydCBjbGFzc2VzIGFuZCBvcHRpb25hbCBhbmltYXRpb24gZGVsYXkuICovXG5pbnRlcmZhY2UgRG90IHtcbiAgY2xzOiBzdHJpbmc7XG4gIGRlbGF5OiBudW1iZXIgfCBudWxsO1xufVxuXG4vLyBPcmJpdCwgTW9ycGgsIFNjYW4sIFN0cmVhbSBhbmQgU3BpcmFsIGFyZSBkcmF3biBvbiBhIGdyaWQgb2YgZG90cywgZWFjaCBhdCBpdHNcbi8vIG93biBkZW5zaXR5IChPcmJpdCA1eDUsIFNjYW4gNng2LCBNb3JwaCA3eDcsIFN0cmVhbSA0eDMsIFNwaXJhbCA1eDUpOiB3aGljaFxuLy8gcGFydCBlYWNoIGRvdCBwbGF5cywgYW5kIGl0cyBwbGFjZSBpbiB0aGUgcnVuIGFzIGFuIGFuaW1hdGlvbiBkZWxheS5cbmZ1bmN0aW9uIGdyaWQoazogR3JpZEtpbmQpOiBEb3RbXSB7XG4gIGNvbnN0IG4gPSB7IG9yYml0OiA1LCBzY2FuOiA2LCBtb3JwaDogNywgc3RyZWFtOiA0LCBzcGlyYWw6IDUgfVtrXTtcbiAgY29uc3Qgcm93cyA9IGsgPT09ICdzdHJlYW0nID8gMyA6IG47XG4gIGNvbnN0IGF0ID0gKHg6IG51bWJlciwgeTogbnVtYmVyKSA9PiB5ICogbiArIHg7XG4gIGNvbnN0IGNsczogc3RyaW5nW10gPSBBcnJheShuICogcm93cykuZmlsbCgnJyk7XG4gIGNvbnN0IGRseTogKG51bWJlciB8IG51bGwpW10gPSBBcnJheShuICogcm93cykuZmlsbChudWxsKTtcbiAgY29uc3QgcG9zZSA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuICBjb25zdCBydW4gPSAob3JkZXI6IG51bWJlcltdLCBkdXI6IG51bWJlcikgPT5cbiAgICBvcmRlci5mb3JFYWNoKChjLCBpKSA9PiB7IGRseVtjXSA9IChpIC8gb3JkZXIubGVuZ3RoIC0gMSkgKiBkdXI7IH0pO1xuICBpZiAoayA9PT0gJ29yYml0Jykge1xuICAgIGNvbnN0IHJpbmc6IG51bWJlcltdID0gW107XG4gICAgZm9yIChsZXQgeCA9IDA7IHggPCBuOyB4KyspIHJpbmcucHVzaChhdCh4LCAwKSk7XG4gICAgZm9yIChsZXQgeSA9IDE7IHkgPCBuOyB5KyspIHJpbmcucHVzaChhdChuIC0gMSwgeSkpO1xuICAgIGZvciAobGV0IHggPSBuIC0gMjsgeCA+PSAwOyB4LS0pIHJpbmcucHVzaChhdCh4LCBuIC0gMSkpO1xuICAgIGZvciAobGV0IHkgPSBuIC0gMjsgeSA+IDA7IHktLSkgcmluZy5wdXNoKGF0KDAsIHkpKTtcbiAgICByaW5nLmZvckVhY2goKGMpID0+IHsgY2xzW2NdID0gJ3InOyB9KTtcbiAgICBydW4ocmluZywgMS42KTtcbiAgICBjbHNbYXQoMiwgMildID0gJ2MnO1xuICAgIFswLCByaW5nLmxlbmd0aCAtIDEsIHJpbmcubGVuZ3RoIC0gMl0uZm9yRWFjaCgoaSkgPT4gcG9zZS5hZGQocmluZ1tpXSkpO1xuICB9IGVsc2UgaWYgKGsgPT09ICdzY2FuJykge1xuICAgIGNvbnN0IGxlbiA9IFs2LCAwLCA1LCAwLCAzLCAwXTtcbiAgICBmb3IgKGxldCB5ID0gMDsgeSA8IG47IHkrKylcbiAgICAgIGZvciAobGV0IHggPSAwOyB4IDwgbjsgeCsrKSB7XG4gICAgICAgIGNvbnN0IGMgPSBhdCh4LCB5KTtcbiAgICAgICAgY2xzW2NdID0geCA8IGxlblt5XSA/ICdsJyA6ICdiJztcbiAgICAgICAgZGx5W2NdID0gKHggLyBuIC0gMSkgKiAxLjY7XG4gICAgICAgIGlmICh4ID09PSAyKSBwb3NlLmFkZChjKTtcbiAgICAgIH1cbiAgfSBlbHNlIGlmIChrID09PSAnbW9ycGgnKSB7XG4gICAgZm9yIChsZXQgeSA9IDA7IHkgPCBuOyB5KyspXG4gICAgICBmb3IgKGxldCB4ID0gMDsgeCA8IG47IHgrKykge1xuICAgICAgICBjb25zdCByZWN0ID0geSA+PSAxICYmIHkgPD0gNTtcbiAgICAgICAgY29uc3QgY2lyYyA9ICh4IC0gMykgKiogMiArICh5IC0gMykgKiogMiA8PSAxMDtcbiAgICAgICAgY29uc3QgdHJpID0gTWF0aC5hYnMoeCAtIDMpIDw9IHkgLyAyO1xuICAgICAgICBjb25zdCBjID0gYXQoeCwgeSk7XG4gICAgICAgIGNsc1tjXSA9ICdtJyArICgocmVjdCA/IDEgOiAwKSB8IChjaXJjID8gMiA6IDApIHwgKHRyaSA/IDQgOiAwKSk7XG4gICAgICAgIGlmIChjaXJjKSBwb3NlLmFkZChjKTtcbiAgICAgICAgZGx5W2NdID0gLSgoKGMgKiAzNyArIDExKSAlIDE3KSAvIDE3KSAqIDAuMzI7XG4gICAgICB9XG4gIH0gZWxzZSBpZiAoayA9PT0gJ3NwaXJhbCcpIHtcbiAgICAvLyB3YWxrIGFuIGlud2FyZCBzcGlyYWw7IGVhY2ggY2VsbCBsaWdodHMgaW4gdHVybiBhbmQgaG9sZHMgaXRzIHBsYWNlIGluIHRoZSBydW4gYXMgYSBkZWxheVxuICAgIGNvbnN0IHBhdGg6IG51bWJlcltdID0gW107XG4gICAgbGV0IHgwID0gMCwgeTAgPSAwLCB4MSA9IG4gLSAxLCB5MSA9IG4gLSAxO1xuICAgIHdoaWxlICh4MCA8PSB4MSAmJiB5MCA8PSB5MSkge1xuICAgICAgZm9yIChsZXQgeCA9IHgwOyB4IDw9IHgxOyB4KyspIHBhdGgucHVzaChhdCh4LCB5MCkpO1xuICAgICAgZm9yIChsZXQgeSA9IHkwICsgMTsgeSA8PSB5MTsgeSsrKSBwYXRoLnB1c2goYXQoeDEsIHkpKTtcbiAgICAgIGlmICh5MCA8IHkxKSBmb3IgKGxldCB4ID0geDEgLSAxOyB4ID49IHgwOyB4LS0pIHBhdGgucHVzaChhdCh4LCB5MSkpO1xuICAgICAgaWYgKHgwIDwgeDEpIGZvciAobGV0IHkgPSB5MSAtIDE7IHkgPiB5MDsgeS0tKSBwYXRoLnB1c2goYXQoeDAsIHkpKTtcbiAgICAgIHgwKys7IHkwKys7IHgxLS07IHkxLS07XG4gICAgfVxuICAgIHBhdGguZm9yRWFjaCgoYykgPT4geyBjbHNbY10gPSAnc3AnOyB9KTtcbiAgICBydW4ocGF0aCwgMS44KTtcbiAgICBbcGF0aFtwYXRoLmxlbmd0aCAtIDFdLCBwYXRoWzBdLCBwYXRoWzFdXS5mb3JFYWNoKChjKSA9PiBwb3NlLmFkZChjKSk7XG4gIH0gZWxzZSB7XG4gICAgZm9yIChsZXQgeSA9IDA7IHkgPCByb3dzOyB5KyspXG4gICAgICBmb3IgKGxldCB4ID0gMDsgeCA8IG47IHgrKykge1xuICAgICAgICBjb25zdCBjID0gYXQoeCwgeSk7XG4gICAgICAgIGNsc1tjXSA9ICdzJyArIGM7XG4gICAgICAgIGlmICh5IDwgMikgcG9zZS5hZGQoYyk7XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIGNscy5tYXAoKHgsIGMpID0+ICh7XG4gICAgY2xzOiBbeCwgcG9zZS5oYXMoYykgPyAncCcgOiAnJ11cbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5tYXAoKHkpID0+ICd2by0nICsgeSlcbiAgICAgIC5qb2luKCcgJyksXG4gICAgZGVsYXk6IGRseVtjXSxcbiAgfSkpO1xufVxuXG5jb25zdCBHUklEUzogUmVjb3JkPEdyaWRLaW5kLCBEb3RbXT4gPSB7XG4gIG9yYml0OiBncmlkKCdvcmJpdCcpLFxuICBtb3JwaDogZ3JpZCgnbW9ycGgnKSxcbiAgc2NhbjogZ3JpZCgnc2NhbicpLFxuICBzdHJlYW06IGdyaWQoJ3N0cmVhbScpLFxuICBzcGlyYWw6IGdyaWQoJ3NwaXJhbCcpLFxufTtcblxuY29uc3QgTUFUUklYID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMTYgfSwgKF8sIGkpID0+IGkpO1xuY29uc3QgU1RBQ0sgPSBbMCwgMSwgMl07XG5jb25zdCBXQVZFID0gWzAsIDEsIDIsIDMsIDRdO1xuXG4vKiogVGVuIHRoaW5raW5nIGluZGljYXRvcnMgdG8gcGljayBmcm9tLCBlYWNoIGEgc21hbGwgbWFyayBiZXNpZGUgYSBzdGF0dXMgbGluZS4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZvLXRoaW5raW5nLXN0YXRlcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBkYXRhLXZvPVwiXCIgW2F0dHIuZGF0YS12XT1cInZhcmlhbnRcIiBjbGFzcz1cInZvLXRoc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInZvLXRocy1yb3dcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ2by10aHMtbWtcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICBAc3dpdGNoICh2YXJpYW50KSB7XG4gICAgICAgICAgICBAY2FzZSAoJ21hdHJpeCcpIHtcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2by10aHMtbXR4XCI+XG4gICAgICAgICAgICAgICAgQGZvciAoaSBvZiBtYXRyaXg7IHRyYWNrIGkpIHsgPGk+PC9pPiB9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBjYXNlICgnc3RhY2snKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidm8tdGhzLXN0a1wiPjxpPjwvaT48aT48L2k+PGk+PC9pPjwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBjYXNlICgncHVsc2UnKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidm8tdGhzLXB1bFwiPjxpIGNsYXNzPVwidm8tY29yZVwiPjwvaT48aSBjbGFzcz1cInZvLXJpbmdcIj48L2k+PGkgY2xhc3M9XCJ2by1yaW5nXCI+PC9pPjwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBjYXNlICgnd2F2ZScpIHtcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2by10aHMtd2F2XCI+XG4gICAgICAgICAgICAgICAgQGZvciAoaSBvZiB3YXZlOyB0cmFjayBpKSB7IDxpPjwvaT4gfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoJ2JvdW5jZScpIHtcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2by10aHMtYm5jXCI+PGk+PC9pPjxpPjwvaT48aT48L2k+PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZvLXRocy1kZ1wiIFthdHRyLmRhdGEta109XCJncmlkS2luZFwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGQgb2YgZG90czsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiZC5jbHNcIiBbc3R5bGUuYW5pbWF0aW9uRGVsYXldPVwiZC5kZWxheSAhPSBudWxsID8gZC5kZWxheS50b0ZpeGVkKDMpICsgJ3MnIDogbnVsbFwiPjwvaT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ2by10aHMtbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidm8tdGhzLXR4XCIgW2NsYXNzLnZvLXNoaW1dPVwidmFyaWFudCA9PT0gJ29yYml0J1wiPnt7IHNob3duIH19PC9zcGFuPlxuICAgICAgICAgIEBpZiAodmFyaWFudCA9PT0gJ3N0cmVhbScpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidm8tdGhzLWNhclwiPjwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgQGlmIChzZWNzICE9PSBudWxsKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2by10aHMtdCB2by1udW1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj57eyBzZWNzIH19czwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIGEgc2NyZWVuIHJlYWRlciBoZWFycyBlYWNoIG5ldyBsaW5lIG9uY2UsIG5ldmVyIHRoZSBsZXR0ZXJzIGFzIHRoZXkgdHlwZSAtLT5cbiAgICAgIDxzcGFuIGNsYXNzPVwidm8tdGhzLXNyXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPnt7IHRleHQgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsOiAnLi90aGlua2luZy1zdGF0ZXMuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgVGhpbmtpbmdTdGF0ZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgLyoqIFdoaWNoIGluZGljYXRvciB0byBzaG93LiAqL1xuICBASW5wdXQoKSB2YXJpYW50OiBUaGlua2luZ1ZhcmlhbnQgPSAnb3JiaXQnO1xuICAvKiogVGhlIHN0YXR1cyBsaW5lcy4gV2l0aCBtb3JlIHRoYW4gb25lLCB0aGV5IHRha2UgdHVybnMgdW5sZXNzIGBjdXJyZW50YCBpcyBzZXQuICovXG4gIEBJbnB1dCgpIHN0ZXBzOiBzdHJpbmdbXSA9IFsnVGhpbmtpbmcnXTtcbiAgLyoqIEluZGV4IG9mIHRoZSBsaW5lIHRvIHNob3cuIExlYXZlIGl0IG91dCB0byBsZXQgdGhlIGxpbmVzIHRha2UgdHVybnMuICovXG4gIEBJbnB1dCgpIGN1cnJlbnQ/OiBudW1iZXI7XG4gIC8qKiBNaWxsaXNlY29uZHMgZWFjaCBsaW5lIHNob3dzIGZvciB3aGVuIHRoZXkgdGFrZSB0dXJucy4gKi9cbiAgQElucHV0KCkgaW50ZXJ2YWwgPSAyNjAwO1xuICAvKiogU2Vjb25kcyBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lLiBDb3VudHMgYnkgaXRzZWxmIHdoZW4gbGVmdCBvdXQ7IGZhbHNlIGhpZGVzIGl0LiAqL1xuICBASW5wdXQoKSBzZWNvbmRzPzogbnVtYmVyIHwgZmFsc2U7XG5cbiAgLyoqIFRoZSB3aG9sZSBjdXJyZW50IGxpbmUgKGZvciB0aGUgc2NyZWVuIHJlYWRlcikuICovXG4gIHRleHQgPSAnJztcbiAgLyoqIFdoYXQgaXMgcGFpbnRlZCBub3cgKHRoZSB0eXBlZCBwcmVmaXggaW4gU3RyZWFtLCBvdGhlcndpc2UgdGhlIHdob2xlIGxpbmUpLiAqL1xuICBzaG93biA9ICcnO1xuICAvKiogU2Vjb25kcyBzaG93biwgb3IgbnVsbCB3aGVuIGhpZGRlbi4gKi9cbiAgc2VjczogbnVtYmVyIHwgbnVsbCA9IDA7XG5cbiAgcHJpdmF0ZSBhdXRvID0gMDtcbiAgcHJpdmF0ZSBjb3VudGVkID0gMDtcbiAgcHJpdmF0ZSB0eXBlZCA9IDA7XG4gIHByaXZhdGUgcm90YXRlVGltZXI/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD47XG4gIHByaXZhdGUgc2Vjb25kVGltZXI/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD47XG4gIHByaXZhdGUgdHlwZVRpbWVyPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcmVkdWNlZDogUmVkdWNlZE1vdGlvblNlcnZpY2UpIHt9XG5cbiAgZ2V0IGdyaWRLaW5kKCk6IEdyaWRLaW5kIHtcbiAgICByZXR1cm4gdGhpcy52YXJpYW50ID09PSAnbW9ycGgnIHx8IHRoaXMudmFyaWFudCA9PT0gJ3NjYW4nIHx8IHRoaXMudmFyaWFudCA9PT0gJ3N0cmVhbScgfHwgdGhpcy52YXJpYW50ID09PSAnc3BpcmFsJ1xuICAgICAgPyB0aGlzLnZhcmlhbnRcbiAgICAgIDogJ29yYml0JztcbiAgfVxuXG4gIGdldCBkb3RzKCk6IERvdFtdIHtcbiAgICByZXR1cm4gR1JJRFNbdGhpcy5ncmlkS2luZF07XG4gIH1cblxuICBnZXQgbWF0cml4KCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gTUFUUklYO1xuICB9XG5cbiAgZ2V0IHN0YWNrKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gU1RBQ0s7XG4gIH1cblxuICBnZXQgd2F2ZSgpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIFdBVkU7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXJ0Um90YXRpb24oKTtcbiAgICB0aGlzLnN0YXJ0U2Vjb25kcygpO1xuICAgIHRoaXMudXBkYXRlVGV4dChmYWxzZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2N1cnJlbnQnXSB8fCBjaGFuZ2VzWydzdGVwcyddIHx8IGNoYW5nZXNbJ2ludGVydmFsJ10pIHtcbiAgICAgIHRoaXMuc3RhcnRSb3RhdGlvbigpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snc2Vjb25kcyddKSB7XG4gICAgICB0aGlzLnN0YXJ0U2Vjb25kcygpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1sndmFyaWFudCddIHx8IGNoYW5nZXNbJ2N1cnJlbnQnXSB8fCBjaGFuZ2VzWydzdGVwcyddKSB7XG4gICAgICB0aGlzLnVwZGF0ZVRleHQoIWNoYW5nZXNbJ3ZhcmlhbnQnXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gdGhlIGxpbmVzIHRha2UgdHVybnMgYnkgdGhlbXNlbHZlcyB1bmxlc3MgYGN1cnJlbnRgIGZpeGVzIG9uZSwgb3IgdGhlcmUgaXMgb25seSBvbmVcbiAgcHJpdmF0ZSBzdGFydFJvdGF0aW9uKCk6IHZvaWQge1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5yb3RhdGVUaW1lcik7XG4gICAgdGhpcy5yb3RhdGVUaW1lciA9IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5jdXJyZW50ICE9PSB1bmRlZmluZWQgfHwgdGhpcy5zdGVwcy5sZW5ndGggPCAyKSByZXR1cm47XG4gICAgdGhpcy5yb3RhdGVUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHRoaXMuYXV0byA9ICh0aGlzLmF1dG8gKyAxKSAlIHRoaXMuc3RlcHMubGVuZ3RoO1xuICAgICAgdGhpcy51cGRhdGVUZXh0KHRydWUpO1xuICAgIH0sIHRoaXMuaW50ZXJ2YWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFNlY29uZHMoKTogdm9pZCB7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLnNlY29uZFRpbWVyKTtcbiAgICB0aGlzLnNlY29uZFRpbWVyID0gdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLnNlY29uZHMgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnNlY3MgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWNvbmRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuc2VjcyA9IHRoaXMuc2Vjb25kcztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZWNzID0gdGhpcy5jb3VudGVkO1xuICAgIHRoaXMuc2Vjb25kVGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB0aGlzLmNvdW50ZWQrKztcbiAgICAgIHRoaXMuc2VjcyA9IHRoaXMuY291bnRlZDtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIC8vIFN0cmVhbSB0eXBlcyBlYWNoIG5ldyBsaW5lIG91dCBiZWhpbmQgaXRzIGNhcmV0OyB0aGUgb3RoZXJzIHNob3cgaXQgd2hvbGUuXG4gIHByaXZhdGUgdXBkYXRlVGV4dChmcmVzaDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4odGhpcy5jdXJyZW50ID8/IHRoaXMuYXV0bywgdGhpcy5zdGVwcy5sZW5ndGggLSAxKSk7XG4gICAgY29uc3QgbmV4dCA9IHRoaXMuc3RlcHNbaW5kZXhdID8/ICcnO1xuICAgIGNvbnN0IGNoYW5nZWQgPSBuZXh0ICE9PSB0aGlzLnRleHQ7XG4gICAgdGhpcy50ZXh0ID0gbmV4dDtcblxuICAgIGNsZWFySW50ZXJ2YWwodGhpcy50eXBlVGltZXIpO1xuICAgIHRoaXMudHlwZVRpbWVyID0gdW5kZWZpbmVkO1xuXG4gICAgaWYgKHRoaXMudmFyaWFudCAhPT0gJ3N0cmVhbScgfHwgdGhpcy5yZWR1Y2VkLnJlZHVjZSgpIHx8ICFmcmVzaCB8fCAhY2hhbmdlZCkge1xuICAgICAgdGhpcy5zaG93biA9IG5leHQ7XG4gICAgICB0aGlzLnR5cGVkID0gbmV4dC5sZW5ndGg7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBuID0gMDtcbiAgICB0aGlzLnR5cGVkID0gMDtcbiAgICB0aGlzLnNob3duID0gJyc7XG4gICAgdGhpcy50eXBlVGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBuKys7XG4gICAgICB0aGlzLnR5cGVkID0gbjtcbiAgICAgIHRoaXMuc2hvd24gPSBuZXh0LnNsaWNlKDAsIG4pO1xuICAgICAgaWYgKG4gPj0gbmV4dC5sZW5ndGgpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnR5cGVUaW1lcik7XG4gICAgICAgIHRoaXMudHlwZVRpbWVyID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH0sIDMyKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5yb3RhdGVUaW1lcik7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLnNlY29uZFRpbWVyKTtcbiAgICBjbGVhckludGVydmFsKHRoaXMudHlwZVRpbWVyKTtcbiAgfVxufVxuIl19
|