@seniorsistemas/components-ai 1.2.0 → 1.3.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/esm2022/lib/components/dynamic-form/dynamic-form.component.mjs +45 -8
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-datetime.component.mjs +100 -0
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-lookup.component.mjs +31 -9
- package/esm2022/lib/components/dynamic-form/models/dynamic-form.models.mjs +1 -1
- package/esm2022/lib/components/loading/loading.component.mjs +279 -0
- package/esm2022/lib/directives/table-loading/table-loading.directive.mjs +166 -0
- package/esm2022/lib/services/entity.service.mjs +52 -22
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/seniorsistemas-components-ai.mjs +652 -39
- package/fesm2022/seniorsistemas-components-ai.mjs.map +1 -1
- package/lib/components/dynamic-form/fields/dynamic-field-datetime.component.d.ts +20 -0
- package/lib/components/dynamic-form/fields/dynamic-field-lookup.component.d.ts +4 -2
- package/lib/components/dynamic-form/models/dynamic-form.models.d.ts +1 -1
- package/lib/components/loading/loading.component.d.ts +17 -0
- package/lib/directives/table-loading/table-loading.directive.d.ts +34 -0
- package/lib/services/entity.service.d.ts +12 -3
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
const COLOR_MAP = {
|
|
6
|
+
primary: { base: 'var(--p-primary-500, #3b82f6)', light: 'var(--p-primary-300, #93c5fd)' },
|
|
7
|
+
secondary: { base: 'var(--p-surface-500, #64748b)', light: 'var(--p-surface-300, #cbd5e1)' },
|
|
8
|
+
success: { base: 'var(--p-green-500, #22c55e)', light: 'var(--p-green-300, #86efac)' },
|
|
9
|
+
warn: { base: 'var(--p-yellow-500, #eab308)', light: 'var(--p-yellow-300, #fde047)' },
|
|
10
|
+
danger: { base: 'var(--p-red-500, #ef4444)', light: 'var(--p-red-300, #fca5a5)' },
|
|
11
|
+
info: { base: 'var(--p-blue-500, #3b82f6)', light: 'var(--p-blue-300, #93c5fd)' },
|
|
12
|
+
senior: { base: '#0d9488', light: '#00c89a' },
|
|
13
|
+
};
|
|
14
|
+
const SENIOR_PATH_RIGHT = 'M174.719 518.932L258.161 439.782C264.546 433.762 269.614 426.603 273.072 418.719C276.53 410.834 278.31 402.378 278.31 393.838C278.31 385.298 276.53 376.843 273.072 368.958C269.614 361.073 264.546 353.915 258.161 347.895L174.719 269.199C168.45 263.304 163.474 256.289 160.077 248.56C156.681 240.83 154.933 232.539 154.933 224.165C154.933 215.792 156.681 207.501 160.077 199.771C163.474 192.042 168.45 185.027 174.719 179.132L303.718 301.496C329.517 326.089 344 359.371 344 394.066C344 428.76 329.517 462.043 303.718 486.635L174.719 609C168.45 603.105 163.474 596.09 160.077 588.36C156.681 580.631 154.933 572.34 154.933 563.966C154.933 555.592 156.681 547.301 160.077 539.572C163.474 531.842 168.45 524.828 174.719 518.932Z';
|
|
15
|
+
const SENIOR_PATH_LEFT = 'M173.76 94.0677L90.3189 173.218C83.9334 179.238 78.8659 186.397 75.408 194.281C71.95 202.166 70.1698 210.622 70.1698 219.162C70.1698 227.702 71.95 236.157 75.408 244.042C78.8659 251.927 83.9334 259.085 90.3189 265.105L173.76 344.256C180.03 350.151 185.006 357.166 188.402 364.895C191.798 372.625 193.547 380.916 193.547 389.289C193.547 397.663 191.798 405.954 188.402 413.684C185.006 421.413 180.03 428.428 173.76 434.323L44.2823 311.504C18.4832 286.911 4 253.629 4 218.934C4 184.24 18.4832 150.957 44.2823 126.365L173.76 4C186.213 16.0129 193.192 32.1861 193.192 49.0338C193.192 65.8815 186.213 82.0547 173.76 94.0677Z';
|
|
16
|
+
const SENIOR_PATH_FULL = SENIOR_PATH_RIGHT + ' ' + SENIOR_PATH_LEFT;
|
|
17
|
+
export class LoadingComponent {
|
|
18
|
+
variant = 'senior-reveal';
|
|
19
|
+
color = 'senior';
|
|
20
|
+
size = 40;
|
|
21
|
+
text = '';
|
|
22
|
+
padding = '3rem 0';
|
|
23
|
+
get colorBase() {
|
|
24
|
+
return (COLOR_MAP[this.color] || COLOR_MAP['senior']).base;
|
|
25
|
+
}
|
|
26
|
+
get colorLight() {
|
|
27
|
+
return (COLOR_MAP[this.color] || COLOR_MAP['senior']).light;
|
|
28
|
+
}
|
|
29
|
+
pathRight = SENIOR_PATH_RIGHT;
|
|
30
|
+
pathLeft = SENIOR_PATH_LEFT;
|
|
31
|
+
pathFull = SENIOR_PATH_FULL;
|
|
32
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
33
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LoadingComponent, isStandalone: true, selector: "sia-loading", inputs: { variant: "variant", color: "color", size: "size", text: "text", padding: "padding" }, ngImport: i0, template: `
|
|
34
|
+
<div class="sia-loading" [style.padding]="padding"
|
|
35
|
+
[class.sia-loading--skeleton]="variant === 'skeleton'"
|
|
36
|
+
[style.--sia-c]="colorBase" [style.--sia-cl]="colorLight">
|
|
37
|
+
|
|
38
|
+
<div class="sia-dots" *ngIf="variant === 'dots'">
|
|
39
|
+
<span class="dot" *ngFor="let d of [0,1,2]" [style.--i]="d"></span>
|
|
40
|
+
</div>
|
|
41
|
+
|
|
42
|
+
<div class="sia-pulse" *ngIf="variant === 'pulse'" [style.--size]="size + 'px'">
|
|
43
|
+
<span class="ring ring-1"></span>
|
|
44
|
+
<span class="ring ring-2"></span>
|
|
45
|
+
<span class="core"></span>
|
|
46
|
+
</div>
|
|
47
|
+
|
|
48
|
+
<div class="sia-bars" *ngIf="variant === 'bars'" [style.--h]="size + 'px'">
|
|
49
|
+
<span class="bar" *ngFor="let b of [0,1,2,3,4]" [style.--i]="b"></span>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
<div class="sia-orbit" *ngIf="variant === 'orbit'" [style.--size]="size + 'px'">
|
|
53
|
+
<span class="orbit-track"></span>
|
|
54
|
+
<span class="orbit-dot orbit-dot-1"></span>
|
|
55
|
+
<span class="orbit-dot orbit-dot-2"></span>
|
|
56
|
+
</div>
|
|
57
|
+
|
|
58
|
+
<div class="sia-morph" *ngIf="variant === 'morph'" [style.--size]="size + 'px'">
|
|
59
|
+
<span class="morph-shape"></span>
|
|
60
|
+
</div>
|
|
61
|
+
|
|
62
|
+
<div class="sia-wave" *ngIf="variant === 'wave'">
|
|
63
|
+
<span class="wave-dot" *ngFor="let w of [0,1,2,3,4,5,6]" [style.--i]="w"></span>
|
|
64
|
+
</div>
|
|
65
|
+
|
|
66
|
+
<div class="sia-skeleton" *ngIf="variant === 'skeleton'">
|
|
67
|
+
<div class="skel-row skel-row--header">
|
|
68
|
+
<div class="skel-circle"></div>
|
|
69
|
+
<div class="skel-lines">
|
|
70
|
+
<div class="skel-line skel-line--md"></div>
|
|
71
|
+
<div class="skel-line skel-line--sm"></div>
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
<div class="skel-line skel-line--full"></div>
|
|
75
|
+
<div class="skel-line skel-line--lg"></div>
|
|
76
|
+
<div class="skel-line skel-line--md"></div>
|
|
77
|
+
</div>
|
|
78
|
+
|
|
79
|
+
<!-- ═══ SENIOR VARIANTS ═══ -->
|
|
80
|
+
|
|
81
|
+
<!-- senior-draw: stroke draw animation -->
|
|
82
|
+
<div class="sia-senior-draw" *ngIf="variant === 'senior-draw'" [style.--size]="size + 'px'">
|
|
83
|
+
<svg [attr.width]="size" [attr.height]="size" viewBox="0 0 348 613" fill="none">
|
|
84
|
+
<path class="sp sp-r" [attr.d]="pathRight"
|
|
85
|
+
[attr.stroke]="colorBase" stroke-width="6" fill="none" stroke-linecap="round" stroke-linejoin="round" />
|
|
86
|
+
<path class="sp sp-l" [attr.d]="pathLeft"
|
|
87
|
+
[attr.stroke]="colorBase" stroke-width="6" fill="none" stroke-linecap="round" stroke-linejoin="round" />
|
|
88
|
+
</svg>
|
|
89
|
+
</div>
|
|
90
|
+
|
|
91
|
+
<!-- senior-pulse: circle with logo, pulse + scale -->
|
|
92
|
+
<div class="sia-senior-pulse" *ngIf="variant === 'senior-pulse'" [style.--size]="size + 'px'">
|
|
93
|
+
<div class="sp-circle">
|
|
94
|
+
<svg [attr.width]="size * 0.5" [attr.height]="size * 0.88" viewBox="0 0 348 613" fill="none">
|
|
95
|
+
<path [attr.d]="pathFull" fill="white" />
|
|
96
|
+
</svg>
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
|
|
100
|
+
<!-- senior-glow: neon glow with breathing -->
|
|
101
|
+
<div class="sia-senior-glow" *ngIf="variant === 'senior-glow'" [style.--size]="size + 'px'">
|
|
102
|
+
<svg [attr.width]="size" [attr.height]="size" viewBox="0 0 348 613" fill="none">
|
|
103
|
+
<path class="glow-shadow" [attr.d]="pathFull" [attr.stroke]="colorLight" stroke-width="12" fill="none" />
|
|
104
|
+
<path class="glow-main" [attr.d]="pathFull" [attr.stroke]="colorBase" stroke-width="4" fill="none" />
|
|
105
|
+
</svg>
|
|
106
|
+
</div>
|
|
107
|
+
|
|
108
|
+
<!-- senior-flip: 3D Y-axis flip -->
|
|
109
|
+
<div class="sia-senior-flip" *ngIf="variant === 'senior-flip'" [style.--size]="size + 'px'">
|
|
110
|
+
<svg [attr.width]="size" [attr.height]="size" viewBox="0 0 348 613" fill="none">
|
|
111
|
+
<path [attr.d]="pathFull" [attr.fill]="colorBase" />
|
|
112
|
+
</svg>
|
|
113
|
+
</div>
|
|
114
|
+
|
|
115
|
+
<!-- senior-bounce: alternating halves bounce -->
|
|
116
|
+
<div class="sia-senior-bounce" *ngIf="variant === 'senior-bounce'" [style.--size]="size + 'px'">
|
|
117
|
+
<svg [attr.width]="size" [attr.height]="size" viewBox="0 0 348 613" fill="none">
|
|
118
|
+
<path class="bounce-r" [attr.d]="pathRight" [attr.fill]="colorBase" />
|
|
119
|
+
<path class="bounce-l" [attr.d]="pathLeft" [attr.fill]="colorLight" />
|
|
120
|
+
</svg>
|
|
121
|
+
</div>
|
|
122
|
+
|
|
123
|
+
<!-- senior-reveal: tennis ball bouncing with Senior logo inside -->
|
|
124
|
+
<div class="sia-senior-reveal" *ngIf="variant === 'senior-reveal'" [style.--size]="size * 1.3 + 'px'">
|
|
125
|
+
<!-- Tennis ball with Senior logo inside -->
|
|
126
|
+
<svg class="sr-ball" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
|
127
|
+
<defs>
|
|
128
|
+
<clipPath id="sr-clip"><circle cx="50" cy="50" r="48" /></clipPath>
|
|
129
|
+
</defs>
|
|
130
|
+
<circle cx="50" cy="50" r="48" [attr.fill]="colorBase" />
|
|
131
|
+
<g clip-path="url(#sr-clip)">
|
|
132
|
+
<!-- top-right seam curve -->
|
|
133
|
+
<path d="M38 -2 C58 18, 62 38, 102 48" stroke="white" stroke-width="9" fill="none" stroke-linecap="round" opacity="0.15" />
|
|
134
|
+
<path d="M38 -2 C58 18, 62 38, 102 48" stroke="white" stroke-width="4" fill="none" stroke-linecap="round" opacity="0.8" />
|
|
135
|
+
<!-- bottom-left seam curve -->
|
|
136
|
+
<path d="M-2 52 C38 62, 42 82, 62 102" stroke="white" stroke-width="9" fill="none" stroke-linecap="round" opacity="0.15" />
|
|
137
|
+
<path d="M-2 52 C38 62, 42 82, 62 102" stroke="white" stroke-width="4" fill="none" stroke-linecap="round" opacity="0.8" />
|
|
138
|
+
<g transform="translate(32.6, 19.4) scale(0.10)">
|
|
139
|
+
<path [attr.d]="pathFull" fill="white" opacity="0.8" />
|
|
140
|
+
</g>
|
|
141
|
+
</g>
|
|
142
|
+
</svg>
|
|
143
|
+
<div class="sr-shadow"></div>
|
|
144
|
+
</div>
|
|
145
|
+
|
|
146
|
+
<span class="sia-loading-text" *ngIf="text && variant !== 'skeleton'">{{ text }}</span>
|
|
147
|
+
</div>
|
|
148
|
+
`, isInline: true, styles: [":host{display:block}.sia-loading{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;padding:3rem 0}.sia-loading--skeleton{align-items:stretch}.sia-loading-text{color:var(--p-text-muted-color, #94a3b8);font-size:.8rem;letter-spacing:.02em}.sia-dots{display:flex;gap:6px;align-items:center}.sia-dots .dot{width:10px;height:10px;border-radius:50%;background:var(--sia-c);animation:sia-dot-bounce 1.2s calc(var(--i) * .15s) ease-in-out infinite}@keyframes sia-dot-bounce{0%,60%,to{transform:translateY(0) scale(1);opacity:.4}30%{transform:translateY(-12px) scale(1.15);opacity:1}}.sia-pulse{position:relative;width:var(--size, 40px);height:var(--size, 40px)}.sia-pulse .ring{position:absolute;inset:0;border-radius:50%;border:2px solid var(--sia-c);opacity:0}.sia-pulse .ring-1{animation:sia-ripple 1.8s 0s ease-out infinite}.sia-pulse .ring-2{animation:sia-ripple 1.8s .6s ease-out infinite}.sia-pulse .core{position:absolute;top:50%;left:50%;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:var(--sia-c);animation:sia-core-pulse 1.8s ease-in-out infinite}@keyframes sia-ripple{0%{transform:scale(.3);opacity:.8}to{transform:scale(1);opacity:0}}@keyframes sia-core-pulse{0%,to{transform:scale(1);opacity:.6}50%{transform:scale(1.3);opacity:1}}.sia-bars{display:flex;align-items:center;gap:3px;height:var(--h, 40px)}.sia-bars .bar{width:4px;height:40%;border-radius:2px;background:var(--sia-c);animation:sia-bar-wave 1s calc(var(--i) * .1s) ease-in-out infinite}@keyframes sia-bar-wave{0%,to{height:20%;opacity:.4}50%{height:100%;opacity:1}}.sia-orbit{position:relative;width:var(--size, 40px);height:var(--size, 40px)}.sia-orbit .orbit-track{position:absolute;inset:0;border-radius:50%;border:1.5px solid var(--p-surface-200, #e2e8f0)}.sia-orbit .orbit-dot{position:absolute;width:8px;height:8px;border-radius:50%;top:-4px;left:calc(50% - 4px)}.sia-orbit .orbit-dot-1{background:var(--sia-c);animation:sia-orbit-spin 1.4s linear infinite;transform-origin:50% calc(var(--size, 40px) / 2 + 4px)}.sia-orbit .orbit-dot-2{background:var(--sia-cl);animation:sia-orbit-spin 1.4s .7s linear infinite;transform-origin:50% calc(var(--size, 40px) / 2 + 4px)}@keyframes sia-orbit-spin{to{transform:rotate(360deg)}}.sia-morph{width:var(--size, 40px);height:var(--size, 40px);display:flex;align-items:center;justify-content:center}.sia-morph .morph-shape{width:70%;height:70%;background:var(--sia-c);animation:sia-morph 2.4s ease-in-out infinite}@keyframes sia-morph{0%{border-radius:50%;transform:rotate(0) scale(1)}25%{border-radius:30% 70% 50% 50%;transform:rotate(90deg) scale(.85)}50%{border-radius:50% 30% 70%;transform:rotate(180deg) scale(1)}75%{border-radius:70% 50% 30% 70%;transform:rotate(270deg) scale(.85)}to{border-radius:50%;transform:rotate(360deg) scale(1)}}.sia-wave{display:flex;align-items:center;gap:3px}.sia-wave .wave-dot{width:6px;height:6px;border-radius:50%;background:var(--sia-c);animation:sia-wave-flow 1.6s calc(var(--i) * .12s) ease-in-out infinite}@keyframes sia-wave-flow{0%,to{transform:translateY(0) scale(.6);opacity:.3}50%{transform:translateY(-10px) scale(1);opacity:1}}.sia-skeleton{display:flex;flex-direction:column;gap:.75rem;padding:0 1rem;width:100%}.skel-row{display:flex;align-items:center;gap:.75rem}.skel-row--header{margin-bottom:.25rem}.skel-circle{width:36px;height:36px;border-radius:50%;flex-shrink:0;background:var(--p-surface-200, #e2e8f0);animation:sia-shimmer 1.6s ease-in-out infinite}.skel-lines{flex:1;display:flex;flex-direction:column;gap:.4rem}.skel-line{height:10px;border-radius:4px;background:var(--p-surface-200, #e2e8f0);animation:sia-shimmer 1.6s ease-in-out infinite}.skel-line--full{width:100%;animation-delay:.1s}.skel-line--lg{width:75%;animation-delay:.2s}.skel-line--md{width:55%;animation-delay:.3s}.skel-line--sm{width:35%;animation-delay:.15s}@keyframes sia-shimmer{0%,to{opacity:.4}50%{opacity:1}}.sia-senior-draw{width:var(--size, 40px);height:var(--size, 40px);display:flex;align-items:center;justify-content:center}.sia-senior-draw .sp{stroke-dasharray:1200;stroke-dashoffset:1200}.sia-senior-draw .sp-r{animation:sia-sd-r 2s ease-in-out infinite}.sia-senior-draw .sp-l{animation:sia-sd-l 2s ease-in-out infinite}@keyframes sia-sd-r{0%{stroke-dashoffset:1200;opacity:.2}35%{stroke-dashoffset:0;opacity:1}60%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:-1200;opacity:.2}}@keyframes sia-sd-l{0%{stroke-dashoffset:1200;opacity:.2}15%{stroke-dashoffset:1200;opacity:.2}50%{stroke-dashoffset:0;opacity:1}65%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:-1200;opacity:.2}}.sia-senior-pulse{display:flex;align-items:center;justify-content:center}.sia-senior-pulse .sp-circle{width:var(--size, 64px);height:var(--size, 64px);border-radius:50%;background-color:var(--sia-c);display:flex;align-items:center;justify-content:center;position:relative;animation:sia-sp-pulse 1.4s ease-out infinite,sia-sp-scale 1.4s ease-in-out infinite}@keyframes sia-sp-pulse{0%{box-shadow:0 0 0 0 var(--sia-cl)}70%{box-shadow:0 0 0 20px transparent}to{box-shadow:0 0 0 0 transparent}}@keyframes sia-sp-scale{0%,to{transform:scale(1)}50%{transform:scale(1.12)}}.sia-senior-glow{width:var(--size, 40px);height:var(--size, 40px);display:flex;align-items:center;justify-content:center}.sia-senior-glow .glow-shadow{opacity:.3;filter:blur(4px);animation:sia-sg-breathe 2s ease-in-out infinite}.sia-senior-glow .glow-main{animation:sia-sg-breathe 2s ease-in-out infinite}@keyframes sia-sg-breathe{0%,to{opacity:.4;filter:drop-shadow(0 0 2px var(--sia-cl))}50%{opacity:1;filter:drop-shadow(0 0 10px var(--sia-cl)) drop-shadow(0 0 20px var(--sia-c))}}.sia-senior-flip{width:var(--size, 40px);height:var(--size, 40px);display:flex;align-items:center;justify-content:center;perspective:300px}.sia-senior-flip svg{animation:sia-sf-flip 2s ease-in-out infinite;transform-style:preserve-3d}@keyframes sia-sf-flip{0%{transform:rotateY(0)}50%{transform:rotateY(180deg)}to{transform:rotateY(360deg)}}.sia-senior-bounce{width:var(--size, 40px);height:var(--size, 40px);display:flex;align-items:center;justify-content:center}.sia-senior-bounce .bounce-r{animation:sia-sb-r 1.2s ease-in-out infinite;transform-origin:center center}.sia-senior-bounce .bounce-l{animation:sia-sb-l 1.2s ease-in-out infinite;transform-origin:center center}@keyframes sia-sb-r{0%,to{transform:translateY(0) scale(1);opacity:.7}50%{transform:translateY(-8px) scale(1.05);opacity:1}}@keyframes sia-sb-l{0%,to{transform:translateY(-8px) scale(1.05);opacity:1}50%{transform:translateY(0) scale(1);opacity:.7}}.sia-senior-reveal{width:var(--size, 64px);height:calc(var(--size, 64px) * 1.4);position:relative;display:flex;align-items:center;justify-content:center}.sia-senior-reveal .sr-ball{position:absolute;width:var(--size, 64px);height:var(--size, 64px);border-radius:50%;overflow:hidden;animation:sia-sr-bounce 1.2s ease-in-out infinite}.sia-senior-reveal .sr-shadow{position:absolute;bottom:0;width:60%;height:6px;border-radius:50%;background:#0000001f;animation:sia-sr-shadow 1.2s ease-in-out infinite}@keyframes sia-sr-bounce{0%,to{transform:translateY(20%) scaleX(1.06) scaleY(.94)}50%{transform:translateY(-25%) scaleX(.96) scaleY(1.04)}}@keyframes sia-sr-shadow{0%,to{transform:scaleX(1);opacity:.12}50%{transform:scaleX(.6);opacity:.06}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
149
|
+
}
|
|
150
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadingComponent, decorators: [{
|
|
151
|
+
type: Component,
|
|
152
|
+
args: [{ selector: 'sia-loading', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule], template: `
|
|
153
|
+
<div class="sia-loading" [style.padding]="padding"
|
|
154
|
+
[class.sia-loading--skeleton]="variant === 'skeleton'"
|
|
155
|
+
[style.--sia-c]="colorBase" [style.--sia-cl]="colorLight">
|
|
156
|
+
|
|
157
|
+
<div class="sia-dots" *ngIf="variant === 'dots'">
|
|
158
|
+
<span class="dot" *ngFor="let d of [0,1,2]" [style.--i]="d"></span>
|
|
159
|
+
</div>
|
|
160
|
+
|
|
161
|
+
<div class="sia-pulse" *ngIf="variant === 'pulse'" [style.--size]="size + 'px'">
|
|
162
|
+
<span class="ring ring-1"></span>
|
|
163
|
+
<span class="ring ring-2"></span>
|
|
164
|
+
<span class="core"></span>
|
|
165
|
+
</div>
|
|
166
|
+
|
|
167
|
+
<div class="sia-bars" *ngIf="variant === 'bars'" [style.--h]="size + 'px'">
|
|
168
|
+
<span class="bar" *ngFor="let b of [0,1,2,3,4]" [style.--i]="b"></span>
|
|
169
|
+
</div>
|
|
170
|
+
|
|
171
|
+
<div class="sia-orbit" *ngIf="variant === 'orbit'" [style.--size]="size + 'px'">
|
|
172
|
+
<span class="orbit-track"></span>
|
|
173
|
+
<span class="orbit-dot orbit-dot-1"></span>
|
|
174
|
+
<span class="orbit-dot orbit-dot-2"></span>
|
|
175
|
+
</div>
|
|
176
|
+
|
|
177
|
+
<div class="sia-morph" *ngIf="variant === 'morph'" [style.--size]="size + 'px'">
|
|
178
|
+
<span class="morph-shape"></span>
|
|
179
|
+
</div>
|
|
180
|
+
|
|
181
|
+
<div class="sia-wave" *ngIf="variant === 'wave'">
|
|
182
|
+
<span class="wave-dot" *ngFor="let w of [0,1,2,3,4,5,6]" [style.--i]="w"></span>
|
|
183
|
+
</div>
|
|
184
|
+
|
|
185
|
+
<div class="sia-skeleton" *ngIf="variant === 'skeleton'">
|
|
186
|
+
<div class="skel-row skel-row--header">
|
|
187
|
+
<div class="skel-circle"></div>
|
|
188
|
+
<div class="skel-lines">
|
|
189
|
+
<div class="skel-line skel-line--md"></div>
|
|
190
|
+
<div class="skel-line skel-line--sm"></div>
|
|
191
|
+
</div>
|
|
192
|
+
</div>
|
|
193
|
+
<div class="skel-line skel-line--full"></div>
|
|
194
|
+
<div class="skel-line skel-line--lg"></div>
|
|
195
|
+
<div class="skel-line skel-line--md"></div>
|
|
196
|
+
</div>
|
|
197
|
+
|
|
198
|
+
<!-- ═══ SENIOR VARIANTS ═══ -->
|
|
199
|
+
|
|
200
|
+
<!-- senior-draw: stroke draw animation -->
|
|
201
|
+
<div class="sia-senior-draw" *ngIf="variant === 'senior-draw'" [style.--size]="size + 'px'">
|
|
202
|
+
<svg [attr.width]="size" [attr.height]="size" viewBox="0 0 348 613" fill="none">
|
|
203
|
+
<path class="sp sp-r" [attr.d]="pathRight"
|
|
204
|
+
[attr.stroke]="colorBase" stroke-width="6" fill="none" stroke-linecap="round" stroke-linejoin="round" />
|
|
205
|
+
<path class="sp sp-l" [attr.d]="pathLeft"
|
|
206
|
+
[attr.stroke]="colorBase" stroke-width="6" fill="none" stroke-linecap="round" stroke-linejoin="round" />
|
|
207
|
+
</svg>
|
|
208
|
+
</div>
|
|
209
|
+
|
|
210
|
+
<!-- senior-pulse: circle with logo, pulse + scale -->
|
|
211
|
+
<div class="sia-senior-pulse" *ngIf="variant === 'senior-pulse'" [style.--size]="size + 'px'">
|
|
212
|
+
<div class="sp-circle">
|
|
213
|
+
<svg [attr.width]="size * 0.5" [attr.height]="size * 0.88" viewBox="0 0 348 613" fill="none">
|
|
214
|
+
<path [attr.d]="pathFull" fill="white" />
|
|
215
|
+
</svg>
|
|
216
|
+
</div>
|
|
217
|
+
</div>
|
|
218
|
+
|
|
219
|
+
<!-- senior-glow: neon glow with breathing -->
|
|
220
|
+
<div class="sia-senior-glow" *ngIf="variant === 'senior-glow'" [style.--size]="size + 'px'">
|
|
221
|
+
<svg [attr.width]="size" [attr.height]="size" viewBox="0 0 348 613" fill="none">
|
|
222
|
+
<path class="glow-shadow" [attr.d]="pathFull" [attr.stroke]="colorLight" stroke-width="12" fill="none" />
|
|
223
|
+
<path class="glow-main" [attr.d]="pathFull" [attr.stroke]="colorBase" stroke-width="4" fill="none" />
|
|
224
|
+
</svg>
|
|
225
|
+
</div>
|
|
226
|
+
|
|
227
|
+
<!-- senior-flip: 3D Y-axis flip -->
|
|
228
|
+
<div class="sia-senior-flip" *ngIf="variant === 'senior-flip'" [style.--size]="size + 'px'">
|
|
229
|
+
<svg [attr.width]="size" [attr.height]="size" viewBox="0 0 348 613" fill="none">
|
|
230
|
+
<path [attr.d]="pathFull" [attr.fill]="colorBase" />
|
|
231
|
+
</svg>
|
|
232
|
+
</div>
|
|
233
|
+
|
|
234
|
+
<!-- senior-bounce: alternating halves bounce -->
|
|
235
|
+
<div class="sia-senior-bounce" *ngIf="variant === 'senior-bounce'" [style.--size]="size + 'px'">
|
|
236
|
+
<svg [attr.width]="size" [attr.height]="size" viewBox="0 0 348 613" fill="none">
|
|
237
|
+
<path class="bounce-r" [attr.d]="pathRight" [attr.fill]="colorBase" />
|
|
238
|
+
<path class="bounce-l" [attr.d]="pathLeft" [attr.fill]="colorLight" />
|
|
239
|
+
</svg>
|
|
240
|
+
</div>
|
|
241
|
+
|
|
242
|
+
<!-- senior-reveal: tennis ball bouncing with Senior logo inside -->
|
|
243
|
+
<div class="sia-senior-reveal" *ngIf="variant === 'senior-reveal'" [style.--size]="size * 1.3 + 'px'">
|
|
244
|
+
<!-- Tennis ball with Senior logo inside -->
|
|
245
|
+
<svg class="sr-ball" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
|
246
|
+
<defs>
|
|
247
|
+
<clipPath id="sr-clip"><circle cx="50" cy="50" r="48" /></clipPath>
|
|
248
|
+
</defs>
|
|
249
|
+
<circle cx="50" cy="50" r="48" [attr.fill]="colorBase" />
|
|
250
|
+
<g clip-path="url(#sr-clip)">
|
|
251
|
+
<!-- top-right seam curve -->
|
|
252
|
+
<path d="M38 -2 C58 18, 62 38, 102 48" stroke="white" stroke-width="9" fill="none" stroke-linecap="round" opacity="0.15" />
|
|
253
|
+
<path d="M38 -2 C58 18, 62 38, 102 48" stroke="white" stroke-width="4" fill="none" stroke-linecap="round" opacity="0.8" />
|
|
254
|
+
<!-- bottom-left seam curve -->
|
|
255
|
+
<path d="M-2 52 C38 62, 42 82, 62 102" stroke="white" stroke-width="9" fill="none" stroke-linecap="round" opacity="0.15" />
|
|
256
|
+
<path d="M-2 52 C38 62, 42 82, 62 102" stroke="white" stroke-width="4" fill="none" stroke-linecap="round" opacity="0.8" />
|
|
257
|
+
<g transform="translate(32.6, 19.4) scale(0.10)">
|
|
258
|
+
<path [attr.d]="pathFull" fill="white" opacity="0.8" />
|
|
259
|
+
</g>
|
|
260
|
+
</g>
|
|
261
|
+
</svg>
|
|
262
|
+
<div class="sr-shadow"></div>
|
|
263
|
+
</div>
|
|
264
|
+
|
|
265
|
+
<span class="sia-loading-text" *ngIf="text && variant !== 'skeleton'">{{ text }}</span>
|
|
266
|
+
</div>
|
|
267
|
+
`, styles: [":host{display:block}.sia-loading{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;padding:3rem 0}.sia-loading--skeleton{align-items:stretch}.sia-loading-text{color:var(--p-text-muted-color, #94a3b8);font-size:.8rem;letter-spacing:.02em}.sia-dots{display:flex;gap:6px;align-items:center}.sia-dots .dot{width:10px;height:10px;border-radius:50%;background:var(--sia-c);animation:sia-dot-bounce 1.2s calc(var(--i) * .15s) ease-in-out infinite}@keyframes sia-dot-bounce{0%,60%,to{transform:translateY(0) scale(1);opacity:.4}30%{transform:translateY(-12px) scale(1.15);opacity:1}}.sia-pulse{position:relative;width:var(--size, 40px);height:var(--size, 40px)}.sia-pulse .ring{position:absolute;inset:0;border-radius:50%;border:2px solid var(--sia-c);opacity:0}.sia-pulse .ring-1{animation:sia-ripple 1.8s 0s ease-out infinite}.sia-pulse .ring-2{animation:sia-ripple 1.8s .6s ease-out infinite}.sia-pulse .core{position:absolute;top:50%;left:50%;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:var(--sia-c);animation:sia-core-pulse 1.8s ease-in-out infinite}@keyframes sia-ripple{0%{transform:scale(.3);opacity:.8}to{transform:scale(1);opacity:0}}@keyframes sia-core-pulse{0%,to{transform:scale(1);opacity:.6}50%{transform:scale(1.3);opacity:1}}.sia-bars{display:flex;align-items:center;gap:3px;height:var(--h, 40px)}.sia-bars .bar{width:4px;height:40%;border-radius:2px;background:var(--sia-c);animation:sia-bar-wave 1s calc(var(--i) * .1s) ease-in-out infinite}@keyframes sia-bar-wave{0%,to{height:20%;opacity:.4}50%{height:100%;opacity:1}}.sia-orbit{position:relative;width:var(--size, 40px);height:var(--size, 40px)}.sia-orbit .orbit-track{position:absolute;inset:0;border-radius:50%;border:1.5px solid var(--p-surface-200, #e2e8f0)}.sia-orbit .orbit-dot{position:absolute;width:8px;height:8px;border-radius:50%;top:-4px;left:calc(50% - 4px)}.sia-orbit .orbit-dot-1{background:var(--sia-c);animation:sia-orbit-spin 1.4s linear infinite;transform-origin:50% calc(var(--size, 40px) / 2 + 4px)}.sia-orbit .orbit-dot-2{background:var(--sia-cl);animation:sia-orbit-spin 1.4s .7s linear infinite;transform-origin:50% calc(var(--size, 40px) / 2 + 4px)}@keyframes sia-orbit-spin{to{transform:rotate(360deg)}}.sia-morph{width:var(--size, 40px);height:var(--size, 40px);display:flex;align-items:center;justify-content:center}.sia-morph .morph-shape{width:70%;height:70%;background:var(--sia-c);animation:sia-morph 2.4s ease-in-out infinite}@keyframes sia-morph{0%{border-radius:50%;transform:rotate(0) scale(1)}25%{border-radius:30% 70% 50% 50%;transform:rotate(90deg) scale(.85)}50%{border-radius:50% 30% 70%;transform:rotate(180deg) scale(1)}75%{border-radius:70% 50% 30% 70%;transform:rotate(270deg) scale(.85)}to{border-radius:50%;transform:rotate(360deg) scale(1)}}.sia-wave{display:flex;align-items:center;gap:3px}.sia-wave .wave-dot{width:6px;height:6px;border-radius:50%;background:var(--sia-c);animation:sia-wave-flow 1.6s calc(var(--i) * .12s) ease-in-out infinite}@keyframes sia-wave-flow{0%,to{transform:translateY(0) scale(.6);opacity:.3}50%{transform:translateY(-10px) scale(1);opacity:1}}.sia-skeleton{display:flex;flex-direction:column;gap:.75rem;padding:0 1rem;width:100%}.skel-row{display:flex;align-items:center;gap:.75rem}.skel-row--header{margin-bottom:.25rem}.skel-circle{width:36px;height:36px;border-radius:50%;flex-shrink:0;background:var(--p-surface-200, #e2e8f0);animation:sia-shimmer 1.6s ease-in-out infinite}.skel-lines{flex:1;display:flex;flex-direction:column;gap:.4rem}.skel-line{height:10px;border-radius:4px;background:var(--p-surface-200, #e2e8f0);animation:sia-shimmer 1.6s ease-in-out infinite}.skel-line--full{width:100%;animation-delay:.1s}.skel-line--lg{width:75%;animation-delay:.2s}.skel-line--md{width:55%;animation-delay:.3s}.skel-line--sm{width:35%;animation-delay:.15s}@keyframes sia-shimmer{0%,to{opacity:.4}50%{opacity:1}}.sia-senior-draw{width:var(--size, 40px);height:var(--size, 40px);display:flex;align-items:center;justify-content:center}.sia-senior-draw .sp{stroke-dasharray:1200;stroke-dashoffset:1200}.sia-senior-draw .sp-r{animation:sia-sd-r 2s ease-in-out infinite}.sia-senior-draw .sp-l{animation:sia-sd-l 2s ease-in-out infinite}@keyframes sia-sd-r{0%{stroke-dashoffset:1200;opacity:.2}35%{stroke-dashoffset:0;opacity:1}60%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:-1200;opacity:.2}}@keyframes sia-sd-l{0%{stroke-dashoffset:1200;opacity:.2}15%{stroke-dashoffset:1200;opacity:.2}50%{stroke-dashoffset:0;opacity:1}65%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:-1200;opacity:.2}}.sia-senior-pulse{display:flex;align-items:center;justify-content:center}.sia-senior-pulse .sp-circle{width:var(--size, 64px);height:var(--size, 64px);border-radius:50%;background-color:var(--sia-c);display:flex;align-items:center;justify-content:center;position:relative;animation:sia-sp-pulse 1.4s ease-out infinite,sia-sp-scale 1.4s ease-in-out infinite}@keyframes sia-sp-pulse{0%{box-shadow:0 0 0 0 var(--sia-cl)}70%{box-shadow:0 0 0 20px transparent}to{box-shadow:0 0 0 0 transparent}}@keyframes sia-sp-scale{0%,to{transform:scale(1)}50%{transform:scale(1.12)}}.sia-senior-glow{width:var(--size, 40px);height:var(--size, 40px);display:flex;align-items:center;justify-content:center}.sia-senior-glow .glow-shadow{opacity:.3;filter:blur(4px);animation:sia-sg-breathe 2s ease-in-out infinite}.sia-senior-glow .glow-main{animation:sia-sg-breathe 2s ease-in-out infinite}@keyframes sia-sg-breathe{0%,to{opacity:.4;filter:drop-shadow(0 0 2px var(--sia-cl))}50%{opacity:1;filter:drop-shadow(0 0 10px var(--sia-cl)) drop-shadow(0 0 20px var(--sia-c))}}.sia-senior-flip{width:var(--size, 40px);height:var(--size, 40px);display:flex;align-items:center;justify-content:center;perspective:300px}.sia-senior-flip svg{animation:sia-sf-flip 2s ease-in-out infinite;transform-style:preserve-3d}@keyframes sia-sf-flip{0%{transform:rotateY(0)}50%{transform:rotateY(180deg)}to{transform:rotateY(360deg)}}.sia-senior-bounce{width:var(--size, 40px);height:var(--size, 40px);display:flex;align-items:center;justify-content:center}.sia-senior-bounce .bounce-r{animation:sia-sb-r 1.2s ease-in-out infinite;transform-origin:center center}.sia-senior-bounce .bounce-l{animation:sia-sb-l 1.2s ease-in-out infinite;transform-origin:center center}@keyframes sia-sb-r{0%,to{transform:translateY(0) scale(1);opacity:.7}50%{transform:translateY(-8px) scale(1.05);opacity:1}}@keyframes sia-sb-l{0%,to{transform:translateY(-8px) scale(1.05);opacity:1}50%{transform:translateY(0) scale(1);opacity:.7}}.sia-senior-reveal{width:var(--size, 64px);height:calc(var(--size, 64px) * 1.4);position:relative;display:flex;align-items:center;justify-content:center}.sia-senior-reveal .sr-ball{position:absolute;width:var(--size, 64px);height:var(--size, 64px);border-radius:50%;overflow:hidden;animation:sia-sr-bounce 1.2s ease-in-out infinite}.sia-senior-reveal .sr-shadow{position:absolute;bottom:0;width:60%;height:6px;border-radius:50%;background:#0000001f;animation:sia-sr-shadow 1.2s ease-in-out infinite}@keyframes sia-sr-bounce{0%,to{transform:translateY(20%) scaleX(1.06) scaleY(.94)}50%{transform:translateY(-25%) scaleX(.96) scaleY(1.04)}}@keyframes sia-sr-shadow{0%,to{transform:scaleX(1);opacity:.12}50%{transform:scaleX(.6);opacity:.06}}\n"] }]
|
|
268
|
+
}], propDecorators: { variant: [{
|
|
269
|
+
type: Input
|
|
270
|
+
}], color: [{
|
|
271
|
+
type: Input
|
|
272
|
+
}], size: [{
|
|
273
|
+
type: Input
|
|
274
|
+
}], text: [{
|
|
275
|
+
type: Input
|
|
276
|
+
}], padding: [{
|
|
277
|
+
type: Input
|
|
278
|
+
}] } });
|
|
279
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLWFpL3NyYy9saWIvY29tcG9uZW50cy9sb2FkaW5nL2xvYWRpbmcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBTy9DLE1BQU0sU0FBUyxHQUEwRDtJQUN2RSxPQUFPLEVBQUksRUFBRSxJQUFJLEVBQUUsK0JBQStCLEVBQUcsS0FBSyxFQUFFLCtCQUErQixFQUFFO0lBQzdGLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSwrQkFBK0IsRUFBRyxLQUFLLEVBQUUsK0JBQStCLEVBQUU7SUFDN0YsT0FBTyxFQUFJLEVBQUUsSUFBSSxFQUFFLDZCQUE2QixFQUFLLEtBQUssRUFBRSw2QkFBNkIsRUFBRTtJQUMzRixJQUFJLEVBQU8sRUFBRSxJQUFJLEVBQUUsOEJBQThCLEVBQUksS0FBSyxFQUFFLDhCQUE4QixFQUFFO0lBQzVGLE1BQU0sRUFBSyxFQUFFLElBQUksRUFBRSwyQkFBMkIsRUFBTyxLQUFLLEVBQUUsMkJBQTJCLEVBQUU7SUFDekYsSUFBSSxFQUFPLEVBQUUsSUFBSSxFQUFFLDRCQUE0QixFQUFNLEtBQUssRUFBRSw0QkFBNEIsRUFBRTtJQUMxRixNQUFNLEVBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUF5QixLQUFLLEVBQUUsU0FBUyxFQUFFO0NBQ3hFLENBQUM7QUFFRixNQUFNLGlCQUFpQixHQUFHLG90QkFBb3RCLENBQUM7QUFDL3VCLE1BQU0sZ0JBQWdCLEdBQUcsNm1CQUE2bUIsQ0FBQztBQUN2b0IsTUFBTSxnQkFBZ0IsR0FBRyxpQkFBaUIsR0FBRyxHQUFHLEdBQUcsZ0JBQWdCLENBQUM7QUFrVnBFLE1BQU0sT0FBTyxnQkFBZ0I7SUFDbEIsT0FBTyxHQUFtQixlQUFlLENBQUM7SUFDMUMsS0FBSyxHQUFpQixRQUFRLENBQUM7SUFDL0IsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUNsQixJQUFJLEdBQVcsRUFBRSxDQUFDO0lBQ2xCLE9BQU8sR0FBVyxRQUFRLENBQUM7SUFFcEMsSUFBSSxTQUFTO1FBQ1gsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDOUQsQ0FBQztJQUVELFNBQVMsR0FBRyxpQkFBaUIsQ0FBQztJQUM5QixRQUFRLEdBQUcsZ0JBQWdCLENBQUM7SUFDNUIsUUFBUSxHQUFHLGdCQUFnQixDQUFDO3dHQWpCakIsZ0JBQWdCOzRGQUFoQixnQkFBZ0IsdUtBM1VqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1IVCwrdE9BcEhTLFlBQVk7OzRGQTRVWCxnQkFBZ0I7a0JBaFY1QixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxZQUFZLENBQUMsWUFDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1IVDs4QkF5TlEsT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5leHBvcnQgdHlwZSBMb2FkaW5nVmFyaWFudCA9XG4gIHwgJ2RvdHMnIHwgJ3B1bHNlJyB8ICdiYXJzJyB8ICdvcmJpdCcgfCAnbW9ycGgnIHwgJ3dhdmUnIHwgJ3NrZWxldG9uJ1xuICB8ICdzZW5pb3ItZHJhdycgfCAnc2VuaW9yLXB1bHNlJyB8ICdzZW5pb3ItZ2xvdycgfCAnc2VuaW9yLWZsaXAnIHwgJ3Nlbmlvci1ib3VuY2UnIHwgJ3Nlbmlvci1yZXZlYWwnO1xuZXhwb3J0IHR5cGUgTG9hZGluZ0NvbG9yID0gJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAnc3VjY2VzcycgfCAnd2FybicgfCAnZGFuZ2VyJyB8ICdpbmZvJyB8ICdzZW5pb3InO1xuXG5jb25zdCBDT0xPUl9NQVA6IFJlY29yZDxMb2FkaW5nQ29sb3IsIHsgYmFzZTogc3RyaW5nOyBsaWdodDogc3RyaW5nIH0+ID0ge1xuICBwcmltYXJ5OiAgIHsgYmFzZTogJ3ZhcigtLXAtcHJpbWFyeS01MDAsICMzYjgyZjYpJywgIGxpZ2h0OiAndmFyKC0tcC1wcmltYXJ5LTMwMCwgIzkzYzVmZCknIH0sXG4gIHNlY29uZGFyeTogeyBiYXNlOiAndmFyKC0tcC1zdXJmYWNlLTUwMCwgIzY0NzQ4YiknLCAgbGlnaHQ6ICd2YXIoLS1wLXN1cmZhY2UtMzAwLCAjY2JkNWUxKScgfSxcbiAgc3VjY2VzczogICB7IGJhc2U6ICd2YXIoLS1wLWdyZWVuLTUwMCwgIzIyYzU1ZSknLCAgICBsaWdodDogJ3ZhcigtLXAtZ3JlZW4tMzAwLCAjODZlZmFjKScgfSxcbiAgd2FybjogICAgICB7IGJhc2U6ICd2YXIoLS1wLXllbGxvdy01MDAsICNlYWIzMDgpJywgICBsaWdodDogJ3ZhcigtLXAteWVsbG93LTMwMCwgI2ZkZTA0NyknIH0sXG4gIGRhbmdlcjogICAgeyBiYXNlOiAndmFyKC0tcC1yZWQtNTAwLCAjZWY0NDQ0KScsICAgICAgbGlnaHQ6ICd2YXIoLS1wLXJlZC0zMDAsICNmY2E1YTUpJyB9LFxuICBpbmZvOiAgICAgIHsgYmFzZTogJ3ZhcigtLXAtYmx1ZS01MDAsICMzYjgyZjYpJywgICAgIGxpZ2h0OiAndmFyKC0tcC1ibHVlLTMwMCwgIzkzYzVmZCknIH0sXG4gIHNlbmlvcjogICAgeyBiYXNlOiAnIzBkOTQ4OCcsICAgICAgICAgICAgICAgICAgICAgICAgbGlnaHQ6ICcjMDBjODlhJyB9LFxufTtcblxuY29uc3QgU0VOSU9SX1BBVEhfUklHSFQgPSAnTTE3NC43MTkgNTE4LjkzMkwyNTguMTYxIDQzOS43ODJDMjY0LjU0NiA0MzMuNzYyIDI2OS42MTQgNDI2LjYwMyAyNzMuMDcyIDQxOC43MTlDMjc2LjUzIDQxMC44MzQgMjc4LjMxIDQwMi4zNzggMjc4LjMxIDM5My44MzhDMjc4LjMxIDM4NS4yOTggMjc2LjUzIDM3Ni44NDMgMjczLjA3MiAzNjguOTU4QzI2OS42MTQgMzYxLjA3MyAyNjQuNTQ2IDM1My45MTUgMjU4LjE2MSAzNDcuODk1TDE3NC43MTkgMjY5LjE5OUMxNjguNDUgMjYzLjMwNCAxNjMuNDc0IDI1Ni4yODkgMTYwLjA3NyAyNDguNTZDMTU2LjY4MSAyNDAuODMgMTU0LjkzMyAyMzIuNTM5IDE1NC45MzMgMjI0LjE2NUMxNTQuOTMzIDIxNS43OTIgMTU2LjY4MSAyMDcuNTAxIDE2MC4wNzcgMTk5Ljc3MUMxNjMuNDc0IDE5Mi4wNDIgMTY4LjQ1IDE4NS4wMjcgMTc0LjcxOSAxNzkuMTMyTDMwMy43MTggMzAxLjQ5NkMzMjkuNTE3IDMyNi4wODkgMzQ0IDM1OS4zNzEgMzQ0IDM5NC4wNjZDMzQ0IDQyOC43NiAzMjkuNTE3IDQ2Mi4wNDMgMzAzLjcxOCA0ODYuNjM1TDE3NC43MTkgNjA5QzE2OC40NSA2MDMuMTA1IDE2My40NzQgNTk2LjA5IDE2MC4wNzcgNTg4LjM2QzE1Ni42ODEgNTgwLjYzMSAxNTQuOTMzIDU3Mi4zNCAxNTQuOTMzIDU2My45NjZDMTU0LjkzMyA1NTUuNTkyIDE1Ni42ODEgNTQ3LjMwMSAxNjAuMDc3IDUzOS41NzJDMTYzLjQ3NCA1MzEuODQyIDE2OC40NSA1MjQuODI4IDE3NC43MTkgNTE4LjkzMlonO1xuY29uc3QgU0VOSU9SX1BBVEhfTEVGVCA9ICdNMTczLjc2IDk0LjA2NzdMOTAuMzE4OSAxNzMuMjE4QzgzLjkzMzQgMTc5LjIzOCA3OC44NjU5IDE4Ni4zOTcgNzUuNDA4IDE5NC4yODFDNzEuOTUgMjAyLjE2NiA3MC4xNjk4IDIxMC42MjIgNzAuMTY5OCAyMTkuMTYyQzcwLjE2OTggMjI3LjcwMiA3MS45NSAyMzYuMTU3IDc1LjQwOCAyNDQuMDQyQzc4Ljg2NTkgMjUxLjkyNyA4My45MzM0IDI1OS4wODUgOTAuMzE4OSAyNjUuMTA1TDE3My43NiAzNDQuMjU2QzE4MC4wMyAzNTAuMTUxIDE4NS4wMDYgMzU3LjE2NiAxODguNDAyIDM2NC44OTVDMTkxLjc5OCAzNzIuNjI1IDE5My41NDcgMzgwLjkxNiAxOTMuNTQ3IDM4OS4yODlDMTkzLjU0NyAzOTcuNjYzIDE5MS43OTggNDA1Ljk1NCAxODguNDAyIDQxMy42ODRDMTg1LjAwNiA0MjEuNDEzIDE4MC4wMyA0MjguNDI4IDE3My43NiA0MzQuMzIzTDQ0LjI4MjMgMzExLjUwNEMxOC40ODMyIDI4Ni45MTEgNCAyNTMuNjI5IDQgMjE4LjkzNEM0IDE4NC4yNCAxOC40ODMyIDE1MC45NTcgNDQuMjgyMyAxMjYuMzY1TDE3My43NiA0QzE4Ni4yMTMgMTYuMDEyOSAxOTMuMTkyIDMyLjE4NjEgMTkzLjE5MiA0OS4wMzM4QzE5My4xOTIgNjUuODgxNSAxODYuMjEzIDgyLjA1NDcgMTczLjc2IDk0LjA2NzdaJztcbmNvbnN0IFNFTklPUl9QQVRIX0ZVTEwgPSBTRU5JT1JfUEFUSF9SSUdIVCArICcgJyArIFNFTklPUl9QQVRIX0xFRlQ7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpYS1sb2FkaW5nJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJzaWEtbG9hZGluZ1wiIFtzdHlsZS5wYWRkaW5nXT1cInBhZGRpbmdcIlxuICAgICAgW2NsYXNzLnNpYS1sb2FkaW5nLS1za2VsZXRvbl09XCJ2YXJpYW50ID09PSAnc2tlbGV0b24nXCJcbiAgICAgIFtzdHlsZS4tLXNpYS1jXT1cImNvbG9yQmFzZVwiIFtzdHlsZS4tLXNpYS1jbF09XCJjb2xvckxpZ2h0XCI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJzaWEtZG90c1wiICpuZ0lmPVwidmFyaWFudCA9PT0gJ2RvdHMnXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCIgKm5nRm9yPVwibGV0IGQgb2YgWzAsMSwyXVwiIFtzdHlsZS4tLWldPVwiZFwiPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwic2lhLXB1bHNlXCIgKm5nSWY9XCJ2YXJpYW50ID09PSAncHVsc2UnXCIgW3N0eWxlLi0tc2l6ZV09XCJzaXplICsgJ3B4J1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInJpbmcgcmluZy0xXCI+PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInJpbmcgcmluZy0yXCI+PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNvcmVcIj48L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInNpYS1iYXJzXCIgKm5nSWY9XCJ2YXJpYW50ID09PSAnYmFycydcIiBbc3R5bGUuLS1oXT1cInNpemUgKyAncHgnXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYmFyXCIgKm5nRm9yPVwibGV0IGIgb2YgWzAsMSwyLDMsNF1cIiBbc3R5bGUuLS1pXT1cImJcIj48L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInNpYS1vcmJpdFwiICpuZ0lmPVwidmFyaWFudCA9PT0gJ29yYml0J1wiIFtzdHlsZS4tLXNpemVdPVwic2l6ZSArICdweCdcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmJpdC10cmFja1wiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmJpdC1kb3Qgb3JiaXQtZG90LTFcIj48L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwib3JiaXQtZG90IG9yYml0LWRvdC0yXCI+PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJzaWEtbW9ycGhcIiAqbmdJZj1cInZhcmlhbnQgPT09ICdtb3JwaCdcIiBbc3R5bGUuLS1zaXplXT1cInNpemUgKyAncHgnXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibW9ycGgtc2hhcGVcIj48L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInNpYS13YXZlXCIgKm5nSWY9XCJ2YXJpYW50ID09PSAnd2F2ZSdcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ3YXZlLWRvdFwiICpuZ0Zvcj1cImxldCB3IG9mIFswLDEsMiwzLDQsNSw2XVwiIFtzdHlsZS4tLWldPVwid1wiPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwic2lhLXNrZWxldG9uXCIgKm5nSWY9XCJ2YXJpYW50ID09PSAnc2tlbGV0b24nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJza2VsLXJvdyBza2VsLXJvdy0taGVhZGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNrZWwtY2lyY2xlXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNrZWwtbGluZXNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJza2VsLWxpbmUgc2tlbC1saW5lLS1tZFwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNrZWwtbGluZSBza2VsLWxpbmUtLXNtXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbC1saW5lIHNrZWwtbGluZS0tZnVsbFwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbC1saW5lIHNrZWwtbGluZS0tbGdcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNrZWwtbGluZSBza2VsLWxpbmUtLW1kXCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSDilZDilZDilZAgU0VOSU9SIFZBUklBTlRTIOKVkOKVkOKVkCAtLT5cblxuICAgICAgPCEtLSBzZW5pb3ItZHJhdzogc3Ryb2tlIGRyYXcgYW5pbWF0aW9uIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNpYS1zZW5pb3ItZHJhd1wiICpuZ0lmPVwidmFyaWFudCA9PT0gJ3Nlbmlvci1kcmF3J1wiIFtzdHlsZS4tLXNpemVdPVwic2l6ZSArICdweCdcIj5cbiAgICAgICAgPHN2ZyBbYXR0ci53aWR0aF09XCJzaXplXCIgW2F0dHIuaGVpZ2h0XT1cInNpemVcIiB2aWV3Qm94PVwiMCAwIDM0OCA2MTNcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgIDxwYXRoIGNsYXNzPVwic3Agc3AtclwiIFthdHRyLmRdPVwicGF0aFJpZ2h0XCJcbiAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJjb2xvckJhc2VcIiBzdHJva2Utd2lkdGg9XCI2XCIgZmlsbD1cIm5vbmVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgIDxwYXRoIGNsYXNzPVwic3Agc3AtbFwiIFthdHRyLmRdPVwicGF0aExlZnRcIlxuICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cImNvbG9yQmFzZVwiIHN0cm9rZS13aWR0aD1cIjZcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gc2VuaW9yLXB1bHNlOiBjaXJjbGUgd2l0aCBsb2dvLCBwdWxzZSArIHNjYWxlIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNpYS1zZW5pb3ItcHVsc2VcIiAqbmdJZj1cInZhcmlhbnQgPT09ICdzZW5pb3ItcHVsc2UnXCIgW3N0eWxlLi0tc2l6ZV09XCJzaXplICsgJ3B4J1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3AtY2lyY2xlXCI+XG4gICAgICAgICAgPHN2ZyBbYXR0ci53aWR0aF09XCJzaXplICogMC41XCIgW2F0dHIuaGVpZ2h0XT1cInNpemUgKiAwLjg4XCIgdmlld0JveD1cIjAgMCAzNDggNjEzXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgIDxwYXRoIFthdHRyLmRdPVwicGF0aEZ1bGxcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIHNlbmlvci1nbG93OiBuZW9uIGdsb3cgd2l0aCBicmVhdGhpbmcgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwic2lhLXNlbmlvci1nbG93XCIgKm5nSWY9XCJ2YXJpYW50ID09PSAnc2VuaW9yLWdsb3cnXCIgW3N0eWxlLi0tc2l6ZV09XCJzaXplICsgJ3B4J1wiPlxuICAgICAgICA8c3ZnIFthdHRyLndpZHRoXT1cInNpemVcIiBbYXR0ci5oZWlnaHRdPVwic2l6ZVwiIHZpZXdCb3g9XCIwIDAgMzQ4IDYxM1wiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgPHBhdGggY2xhc3M9XCJnbG93LXNoYWRvd1wiIFthdHRyLmRdPVwicGF0aEZ1bGxcIiBbYXR0ci5zdHJva2VdPVwiY29sb3JMaWdodFwiIHN0cm9rZS13aWR0aD1cIjEyXCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICAgIDxwYXRoIGNsYXNzPVwiZ2xvdy1tYWluXCIgW2F0dHIuZF09XCJwYXRoRnVsbFwiIFthdHRyLnN0cm9rZV09XCJjb2xvckJhc2VcIiBzdHJva2Utd2lkdGg9XCI0XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIHNlbmlvci1mbGlwOiAzRCBZLWF4aXMgZmxpcCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzaWEtc2VuaW9yLWZsaXBcIiAqbmdJZj1cInZhcmlhbnQgPT09ICdzZW5pb3ItZmxpcCdcIiBbc3R5bGUuLS1zaXplXT1cInNpemUgKyAncHgnXCI+XG4gICAgICAgIDxzdmcgW2F0dHIud2lkdGhdPVwic2l6ZVwiIFthdHRyLmhlaWdodF09XCJzaXplXCIgdmlld0JveD1cIjAgMCAzNDggNjEzXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICA8cGF0aCBbYXR0ci5kXT1cInBhdGhGdWxsXCIgW2F0dHIuZmlsbF09XCJjb2xvckJhc2VcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIHNlbmlvci1ib3VuY2U6IGFsdGVybmF0aW5nIGhhbHZlcyBib3VuY2UgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwic2lhLXNlbmlvci1ib3VuY2VcIiAqbmdJZj1cInZhcmlhbnQgPT09ICdzZW5pb3ItYm91bmNlJ1wiIFtzdHlsZS4tLXNpemVdPVwic2l6ZSArICdweCdcIj5cbiAgICAgICAgPHN2ZyBbYXR0ci53aWR0aF09XCJzaXplXCIgW2F0dHIuaGVpZ2h0XT1cInNpemVcIiB2aWV3Qm94PVwiMCAwIDM0OCA2MTNcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgIDxwYXRoIGNsYXNzPVwiYm91bmNlLXJcIiBbYXR0ci5kXT1cInBhdGhSaWdodFwiIFthdHRyLmZpbGxdPVwiY29sb3JCYXNlXCIgLz5cbiAgICAgICAgICA8cGF0aCBjbGFzcz1cImJvdW5jZS1sXCIgW2F0dHIuZF09XCJwYXRoTGVmdFwiIFthdHRyLmZpbGxdPVwiY29sb3JMaWdodFwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gc2VuaW9yLXJldmVhbDogdGVubmlzIGJhbGwgYm91bmNpbmcgd2l0aCBTZW5pb3IgbG9nbyBpbnNpZGUgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwic2lhLXNlbmlvci1yZXZlYWxcIiAqbmdJZj1cInZhcmlhbnQgPT09ICdzZW5pb3ItcmV2ZWFsJ1wiIFtzdHlsZS4tLXNpemVdPVwic2l6ZSAqIDEuMyArICdweCdcIj5cbiAgICAgICAgPCEtLSBUZW5uaXMgYmFsbCB3aXRoIFNlbmlvciBsb2dvIGluc2lkZSAtLT5cbiAgICAgICAgPHN2ZyBjbGFzcz1cInNyLWJhbGxcIiB2aWV3Qm94PVwiMCAwIDEwMCAxMDBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJzci1jbGlwXCI+PGNpcmNsZSBjeD1cIjUwXCIgY3k9XCI1MFwiIHI9XCI0OFwiIC8+PC9jbGlwUGF0aD5cbiAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjUwXCIgY3k9XCI1MFwiIHI9XCI0OFwiIFthdHRyLmZpbGxdPVwiY29sb3JCYXNlXCIgLz5cbiAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI3NyLWNsaXApXCI+XG4gICAgICAgICAgICA8IS0tIHRvcC1yaWdodCBzZWFtIGN1cnZlIC0tPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0zOCAtMiBDNTggMTgsIDYyIDM4LCAxMDIgNDhcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjlcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBvcGFjaXR5PVwiMC4xNVwiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTM4IC0yIEM1OCAxOCwgNjIgMzgsIDEwMiA0OFwiIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIG9wYWNpdHk9XCIwLjhcIiAvPlxuICAgICAgICAgICAgPCEtLSBib3R0b20tbGVmdCBzZWFtIGN1cnZlIC0tPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0tMiA1MiBDMzggNjIsIDQyIDgyLCA2MiAxMDJcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjlcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBvcGFjaXR5PVwiMC4xNVwiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTS0yIDUyIEMzOCA2MiwgNDIgODIsIDYyIDEwMlwiIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIG9wYWNpdHk9XCIwLjhcIiAvPlxuICAgICAgICAgICAgPGcgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDMyLjYsIDE5LjQpIHNjYWxlKDAuMTApXCI+XG4gICAgICAgICAgICAgIDxwYXRoIFthdHRyLmRdPVwicGF0aEZ1bGxcIiBmaWxsPVwid2hpdGVcIiBvcGFjaXR5PVwiMC44XCIgLz5cbiAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICA8L2c+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Itc2hhZG93XCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPHNwYW4gY2xhc3M9XCJzaWEtbG9hZGluZy10ZXh0XCIgKm5nSWY9XCJ0ZXh0ICYmIHZhcmlhbnQgIT09ICdza2VsZXRvbidcIj57eyB0ZXh0IH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgOmhvc3QgeyBkaXNwbGF5OiBibG9jazsgfVxuICAgIC5zaWEtbG9hZGluZyB7XG4gICAgICBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogMC43NXJlbTsgcGFkZGluZzogM3JlbSAwO1xuICAgIH1cbiAgICAuc2lhLWxvYWRpbmctLXNrZWxldG9uIHsgYWxpZ24taXRlbXM6IHN0cmV0Y2g7IH1cbiAgICAuc2lhLWxvYWRpbmctdGV4dCB7IGNvbG9yOiB2YXIoLS1wLXRleHQtbXV0ZWQtY29sb3IsICM5NGEzYjgpOyBmb250LXNpemU6IDAuOHJlbTsgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTsgfVxuXG4gICAgLyog4pSA4pSAIERvdHMg4pSA4pSAICovXG4gICAgLnNpYS1kb3RzIHsgZGlzcGxheTogZmxleDsgZ2FwOiA2cHg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cbiAgICAuc2lhLWRvdHMgLmRvdCB7XG4gICAgICB3aWR0aDogMTBweDsgaGVpZ2h0OiAxMHB4OyBib3JkZXItcmFkaXVzOiA1MCU7IGJhY2tncm91bmQ6IHZhcigtLXNpYS1jKTtcbiAgICAgIGFuaW1hdGlvbjogc2lhLWRvdC1ib3VuY2UgMS4ycyBjYWxjKHZhcigtLWkpICogMC4xNXMpIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgIH1cbiAgICBAa2V5ZnJhbWVzIHNpYS1kb3QtYm91bmNlIHtcbiAgICAgIDAlLCA2MCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7IG9wYWNpdHk6IDAuNDsgfVxuICAgICAgMzAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMnB4KSBzY2FsZSgxLjE1KTsgb3BhY2l0eTogMTsgfVxuICAgIH1cblxuICAgIC8qIOKUgOKUgCBQdWxzZSDilIDilIAgKi9cbiAgICAuc2lhLXB1bHNlIHsgcG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogdmFyKC0tc2l6ZSwgNDBweCk7IGhlaWdodDogdmFyKC0tc2l6ZSwgNDBweCk7IH1cbiAgICAuc2lhLXB1bHNlIC5yaW5nIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgaW5zZXQ6IDA7IGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXNpYS1jKTsgb3BhY2l0eTogMDtcbiAgICB9XG4gICAgLnNpYS1wdWxzZSAucmluZy0xIHsgYW5pbWF0aW9uOiBzaWEtcmlwcGxlIDEuOHMgMHMgZWFzZS1vdXQgaW5maW5pdGU7IH1cbiAgICAuc2lhLXB1bHNlIC5yaW5nLTIgeyBhbmltYXRpb246IHNpYS1yaXBwbGUgMS44cyAwLjZzIGVhc2Utb3V0IGluZmluaXRlOyB9XG4gICAgLnNpYS1wdWxzZSAuY29yZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNTAlOyBsZWZ0OiA1MCU7IHdpZHRoOiAxMHB4OyBoZWlnaHQ6IDEwcHg7XG4gICAgICBtYXJnaW46IC01cHggMCAwIC01cHg7IGJvcmRlci1yYWRpdXM6IDUwJTsgYmFja2dyb3VuZDogdmFyKC0tc2lhLWMpO1xuICAgICAgYW5pbWF0aW9uOiBzaWEtY29yZS1wdWxzZSAxLjhzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgIH1cbiAgICBAa2V5ZnJhbWVzIHNpYS1yaXBwbGUgeyAwJSB7IHRyYW5zZm9ybTogc2NhbGUoMC4zKTsgb3BhY2l0eTogMC44OyB9IDEwMCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEpOyBvcGFjaXR5OiAwOyB9IH1cbiAgICBAa2V5ZnJhbWVzIHNpYS1jb3JlLXB1bHNlIHsgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEpOyBvcGFjaXR5OiAwLjY7IH0gNTAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjMpOyBvcGFjaXR5OiAxOyB9IH1cblxuICAgIC8qIOKUgOKUgCBCYXJzIOKUgOKUgCAqL1xuICAgIC5zaWEtYmFycyB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogM3B4OyBoZWlnaHQ6IHZhcigtLWgsIDQwcHgpOyB9XG4gICAgLnNpYS1iYXJzIC5iYXIge1xuICAgICAgd2lkdGg6IDRweDsgaGVpZ2h0OiA0MCU7IGJvcmRlci1yYWRpdXM6IDJweDsgYmFja2dyb3VuZDogdmFyKC0tc2lhLWMpO1xuICAgICAgYW5pbWF0aW9uOiBzaWEtYmFyLXdhdmUgMXMgY2FsYyh2YXIoLS1pKSAqIDAuMXMpIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgIH1cbiAgICBAa2V5ZnJhbWVzIHNpYS1iYXItd2F2ZSB7IDAlLCAxMDAlIHsgaGVpZ2h0OiAyMCU7IG9wYWNpdHk6IDAuNDsgfSA1MCUgeyBoZWlnaHQ6IDEwMCU7IG9wYWNpdHk6IDE7IH0gfVxuXG4gICAgLyog4pSA4pSAIE9yYml0IOKUgOKUgCAqL1xuICAgIC5zaWEtb3JiaXQgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiB2YXIoLS1zaXplLCA0MHB4KTsgaGVpZ2h0OiB2YXIoLS1zaXplLCA0MHB4KTsgfVxuICAgIC5zaWEtb3JiaXQgLm9yYml0LXRyYWNrIHsgcG9zaXRpb246IGFic29sdXRlOyBpbnNldDogMDsgYm9yZGVyLXJhZGl1czogNTAlOyBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLXAtc3VyZmFjZS0yMDAsICNlMmU4ZjApOyB9XG4gICAgLnNpYS1vcmJpdCAub3JiaXQtZG90IHsgcG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogOHB4OyBoZWlnaHQ6IDhweDsgYm9yZGVyLXJhZGl1czogNTAlOyB0b3A6IC00cHg7IGxlZnQ6IGNhbGMoNTAlIC0gNHB4KTsgfVxuICAgIC5zaWEtb3JiaXQgLm9yYml0LWRvdC0xIHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNpYS1jKTsgYW5pbWF0aW9uOiBzaWEtb3JiaXQtc3BpbiAxLjRzIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSBjYWxjKHZhcigtLXNpemUsIDQwcHgpIC8gMiArIDRweCk7XG4gICAgfVxuICAgIC5zaWEtb3JiaXQgLm9yYml0LWRvdC0yIHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNpYS1jbCk7IGFuaW1hdGlvbjogc2lhLW9yYml0LXNwaW4gMS40cyAwLjdzIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSBjYWxjKHZhcigtLXNpemUsIDQwcHgpIC8gMiArIDRweCk7XG4gICAgfVxuICAgIEBrZXlmcmFtZXMgc2lhLW9yYml0LXNwaW4geyB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0gfVxuXG4gICAgLyog4pSA4pSAIE1vcnBoIOKUgOKUgCAqL1xuICAgIC5zaWEtbW9ycGggeyB3aWR0aDogdmFyKC0tc2l6ZSwgNDBweCk7IGhlaWdodDogdmFyKC0tc2l6ZSwgNDBweCk7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB9XG4gICAgLnNpYS1tb3JwaCAubW9ycGgtc2hhcGUge1xuICAgICAgd2lkdGg6IDcwJTsgaGVpZ2h0OiA3MCU7IGJhY2tncm91bmQ6IHZhcigtLXNpYS1jKTtcbiAgICAgIGFuaW1hdGlvbjogc2lhLW1vcnBoIDIuNHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgfVxuICAgIEBrZXlmcmFtZXMgc2lhLW1vcnBoIHtcbiAgICAgIDAlICAgeyBib3JkZXItcmFkaXVzOiA1MCUgNTAlIDUwJSA1MCU7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpIHNjYWxlKDEpOyB9XG4gICAgICAyNSUgIHsgYm9yZGVyLXJhZGl1czogMzAlIDcwJSA1MCUgNTAlOyB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZykgc2NhbGUoMC44NSk7IH1cbiAgICAgIDUwJSAgeyBib3JkZXItcmFkaXVzOiA1MCUgMzAlIDcwJSAzMCU7IHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZykgc2NhbGUoMSk7IH1cbiAgICAgIDc1JSAgeyBib3JkZXItcmFkaXVzOiA3MCUgNTAlIDMwJSA3MCU7IHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZykgc2NhbGUoMC44NSk7IH1cbiAgICAgIDEwMCUgeyBib3JkZXItcmFkaXVzOiA1MCUgNTAlIDUwJSA1MCU7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZykgc2NhbGUoMSk7IH1cbiAgICB9XG5cbiAgICAvKiDilIDilIAgV2F2ZSDilIDilIAgKi9cbiAgICAuc2lhLXdhdmUgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDNweDsgfVxuICAgIC5zaWEtd2F2ZSAud2F2ZS1kb3Qge1xuICAgICAgd2lkdGg6IDZweDsgaGVpZ2h0OiA2cHg7IGJvcmRlci1yYWRpdXM6IDUwJTsgYmFja2dyb3VuZDogdmFyKC0tc2lhLWMpO1xuICAgICAgYW5pbWF0aW9uOiBzaWEtd2F2ZS1mbG93IDEuNnMgY2FsYyh2YXIoLS1pKSAqIDAuMTJzKSBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICB9XG4gICAgQGtleWZyYW1lcyBzaWEtd2F2ZS1mbG93IHtcbiAgICAgIDAlLCAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDAuNik7IG9wYWNpdHk6IDAuMzsgfVxuICAgICAgNTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KSBzY2FsZSgxKTsgb3BhY2l0eTogMTsgfVxuICAgIH1cblxuICAgIC8qIOKUgOKUgCBTa2VsZXRvbiDilIDilIAgKi9cbiAgICAuc2lhLXNrZWxldG9uIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAwLjc1cmVtOyBwYWRkaW5nOiAwIDFyZW07IHdpZHRoOiAxMDAlOyB9XG4gICAgLnNrZWwtcm93IHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAwLjc1cmVtOyB9XG4gICAgLnNrZWwtcm93LS1oZWFkZXIgeyBtYXJnaW4tYm90dG9tOiAwLjI1cmVtOyB9XG4gICAgLnNrZWwtY2lyY2xlIHtcbiAgICAgIHdpZHRoOiAzNnB4OyBoZWlnaHQ6IDM2cHg7IGJvcmRlci1yYWRpdXM6IDUwJTsgZmxleC1zaHJpbms6IDA7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wLXN1cmZhY2UtMjAwLCAjZTJlOGYwKTsgYW5pbWF0aW9uOiBzaWEtc2hpbW1lciAxLjZzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgIH1cbiAgICAuc2tlbC1saW5lcyB7IGZsZXg6IDE7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMC40cmVtOyB9XG4gICAgLnNrZWwtbGluZSB7XG4gICAgICBoZWlnaHQ6IDEwcHg7IGJvcmRlci1yYWRpdXM6IDRweDsgYmFja2dyb3VuZDogdmFyKC0tcC1zdXJmYWNlLTIwMCwgI2UyZThmMCk7XG4gICAgICBhbmltYXRpb246IHNpYS1zaGltbWVyIDEuNnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgfVxuICAgIC5za2VsLWxpbmUtLWZ1bGwgeyB3aWR0aDogMTAwJTsgYW5pbWF0aW9uLWRlbGF5OiAwLjFzOyB9XG4gICAgLnNrZWwtbGluZS0tbGcgICB7IHdpZHRoOiA3NSU7IGFuaW1hdGlvbi1kZWxheTogMC4yczsgfVxuICAgIC5za2VsLWxpbmUtLW1kICAgeyB3aWR0aDogNTUlOyBhbmltYXRpb24tZGVsYXk6IDAuM3M7IH1cbiAgICAuc2tlbC1saW5lLS1zbSAgIHsgd2lkdGg6IDM1JTsgYW5pbWF0aW9uLWRlbGF5OiAwLjE1czsgfVxuICAgIEBrZXlmcmFtZXMgc2lhLXNoaW1tZXIgeyAwJSwgMTAwJSB7IG9wYWNpdHk6IDAuNDsgfSA1MCUgeyBvcGFjaXR5OiAxOyB9IH1cblxuICAgIC8qIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkFxuICAgICAgIFNFTklPUiBWQVJJQU5UU1xuICAgICAgIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCAqL1xuXG4gICAgLyog4pSA4pSAIHNlbmlvci1kcmF3OiBzdHJva2UgZHJhdyBhbmltYXRpb24g4pSA4pSAICovXG4gICAgLnNpYS1zZW5pb3ItZHJhdyB7IHdpZHRoOiB2YXIoLS1zaXplLCA0MHB4KTsgaGVpZ2h0OiB2YXIoLS1zaXplLCA0MHB4KTsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH1cbiAgICAuc2lhLXNlbmlvci1kcmF3IC5zcCB7IHN0cm9rZS1kYXNoYXJyYXk6IDEyMDA7IHN0cm9rZS1kYXNob2Zmc2V0OiAxMjAwOyB9XG4gICAgLnNpYS1zZW5pb3ItZHJhdyAuc3AtciB7IGFuaW1hdGlvbjogc2lhLXNkLXIgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7IH1cbiAgICAuc2lhLXNlbmlvci1kcmF3IC5zcC1sIHsgYW5pbWF0aW9uOiBzaWEtc2QtbCAycyBlYXNlLWluLW91dCBpbmZpbml0ZTsgfVxuICAgIEBrZXlmcmFtZXMgc2lhLXNkLXIge1xuICAgICAgMCUgICB7IHN0cm9rZS1kYXNob2Zmc2V0OiAxMjAwOyBvcGFjaXR5OiAwLjI7IH1cbiAgICAgIDM1JSAgeyBzdHJva2UtZGFzaG9mZnNldDogMDsgb3BhY2l0eTogMTsgfVxuICAgICAgNjAlICB7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBvcGFjaXR5OiAxOyB9XG4gICAgICAxMDAlIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IC0xMjAwOyBvcGFjaXR5OiAwLjI7IH1cbiAgICB9XG4gICAgQGtleWZyYW1lcyBzaWEtc2QtbCB7XG4gICAgICAwJSAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IDEyMDA7IG9wYWNpdHk6IDAuMjsgfVxuICAgICAgMTUlICB7IHN0cm9rZS1kYXNob2Zmc2V0OiAxMjAwOyBvcGFjaXR5OiAwLjI7IH1cbiAgICAgIDUwJSAgeyBzdHJva2UtZGFzaG9mZnNldDogMDsgb3BhY2l0eTogMTsgfVxuICAgICAgNjUlICB7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBvcGFjaXR5OiAxOyB9XG4gICAgICAxMDAlIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IC0xMjAwOyBvcGFjaXR5OiAwLjI7IH1cbiAgICB9XG5cbiAgICAvKiDilIDilIAgc2VuaW9yLXB1bHNlOiBjaXJjbGUgd2l0aCBsb2dvLCBwdWxzZSArIHNjYWxlIOKUgOKUgCAqL1xuICAgIC5zaWEtc2VuaW9yLXB1bHNlIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH1cbiAgICAuc2lhLXNlbmlvci1wdWxzZSAuc3AtY2lyY2xlIHtcbiAgICAgIHdpZHRoOiB2YXIoLS1zaXplLCA2NHB4KTsgaGVpZ2h0OiB2YXIoLS1zaXplLCA2NHB4KTsgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2lhLWMpOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGFuaW1hdGlvbjogc2lhLXNwLXB1bHNlIDEuNHMgZWFzZS1vdXQgaW5maW5pdGUsIHNpYS1zcC1zY2FsZSAxLjRzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgIH1cbiAgICBAa2V5ZnJhbWVzIHNpYS1zcC1wdWxzZSB7XG4gICAgICAwJSAgeyBib3gtc2hhZG93OiAwIDAgMCAwIHZhcigtLXNpYS1jbCk7IH1cbiAgICAgIDcwJSB7IGJveC1zaGFkb3c6IDAgMCAwIDIwcHggdHJhbnNwYXJlbnQ7IH1cbiAgICAgIDEwMCV7IGJveC1zaGFkb3c6IDAgMCAwIDAgdHJhbnNwYXJlbnQ7IH1cbiAgICB9XG4gICAgQGtleWZyYW1lcyBzaWEtc3Atc2NhbGUgeyAwJSwgMTAwJSB7IHRyYW5zZm9ybTogc2NhbGUoMSk7IH0gNTAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjEyKTsgfSB9XG5cbiAgICAvKiDilIDilIAgc2VuaW9yLWdsb3c6IG5lb24gZ2xvdyBicmVhdGhpbmcg4pSA4pSAICovXG4gICAgLnNpYS1zZW5pb3ItZ2xvdyB7IHdpZHRoOiB2YXIoLS1zaXplLCA0MHB4KTsgaGVpZ2h0OiB2YXIoLS1zaXplLCA0MHB4KTsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH1cbiAgICAuc2lhLXNlbmlvci1nbG93IC5nbG93LXNoYWRvdyB7XG4gICAgICBvcGFjaXR5OiAwLjM7IGZpbHRlcjogYmx1cig0cHgpO1xuICAgICAgYW5pbWF0aW9uOiBzaWEtc2ctYnJlYXRoZSAycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICB9XG4gICAgLnNpYS1zZW5pb3ItZ2xvdyAuZ2xvdy1tYWluIHtcbiAgICAgIGFuaW1hdGlvbjogc2lhLXNnLWJyZWF0aGUgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgfVxuICAgIEBrZXlmcmFtZXMgc2lhLXNnLWJyZWF0aGUge1xuICAgICAgMCUsIDEwMCUgeyBvcGFjaXR5OiAwLjQ7IGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDJweCB2YXIoLS1zaWEtY2wpKTsgfVxuICAgICAgNTAlICAgICAgeyBvcGFjaXR5OiAxOyAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDEwcHggdmFyKC0tc2lhLWNsKSkgZHJvcC1zaGFkb3coMCAwIDIwcHggdmFyKC0tc2lhLWMpKTsgfVxuICAgIH1cblxuICAgIC8qIOKUgOKUgCBzZW5pb3ItZmxpcDogM0QgWS1heGlzIGZsaXAg4pSA4pSAICovXG4gICAgLnNpYS1zZW5pb3ItZmxpcCB7XG4gICAgICB3aWR0aDogdmFyKC0tc2l6ZSwgNDBweCk7IGhlaWdodDogdmFyKC0tc2l6ZSwgNDBweCk7XG4gICAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIHBlcnNwZWN0aXZlOiAzMDBweDtcbiAgICB9XG4gICAgLnNpYS1zZW5pb3ItZmxpcCBzdmcge1xuICAgICAgYW5pbWF0aW9uOiBzaWEtc2YtZmxpcCAycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgfVxuICAgIEBrZXlmcmFtZXMgc2lhLXNmLWZsaXAge1xuICAgICAgMCUgICB7IHRyYW5zZm9ybTogcm90YXRlWSgwZGVnKTsgfVxuICAgICAgNTAlICB7IHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOyB9XG4gICAgICAxMDAlIHsgdHJhbnNmb3JtOiByb3RhdGVZKDM2MGRlZyk7IH1cbiAgICB9XG5cbiAgICAvKiDilIDilIAgc2VuaW9yLWJvdW5jZTogYWx0ZXJuYXRpbmcgaGFsdmVzIGJvdW5jZSDilIDilIAgKi9cbiAgICAuc2lhLXNlbmlvci1ib3VuY2UgeyB3aWR0aDogdmFyKC0tc2l6ZSwgNDBweCk7IGhlaWdodDogdmFyKC0tc2l6ZSwgNDBweCk7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB9XG4gICAgLnNpYS1zZW5pb3ItYm91bmNlIC5ib3VuY2UtciB7XG4gICAgICBhbmltYXRpb246IHNpYS1zYi1yIDEuMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyO1xuICAgIH1cbiAgICAuc2lhLXNlbmlvci1ib3VuY2UgLmJvdW5jZS1sIHtcbiAgICAgIGFuaW1hdGlvbjogc2lhLXNiLWwgMS4ycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7XG4gICAgfVxuICAgIEBrZXlmcmFtZXMgc2lhLXNiLXIge1xuICAgICAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7IG9wYWNpdHk6IDAuNzsgfVxuICAgICAgNTAlICAgICAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCkgc2NhbGUoMS4wNSk7IG9wYWNpdHk6IDE7IH1cbiAgICB9XG4gICAgQGtleWZyYW1lcyBzaWEtc2ItbCB7XG4gICAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOHB4KSBzY2FsZSgxLjA1KTsgb3BhY2l0eTogMTsgfVxuICAgICAgNTAlICAgICAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7IG9wYWNpdHk6IDAuNzsgfVxuICAgIH1cblxuICAgIC8qIOKUgOKUgCBzZW5pb3ItcmV2ZWFsOiB0ZW5uaXMgYmFsbCBib3VuY2Ug4pSA4pSAICovXG4gICAgLnNpYS1zZW5pb3ItcmV2ZWFsIHtcbiAgICAgIHdpZHRoOiB2YXIoLS1zaXplLCA2NHB4KTsgaGVpZ2h0OiBjYWxjKHZhcigtLXNpemUsIDY0cHgpICogMS40KTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuICAgIC5zaWEtc2VuaW9yLXJldmVhbCAuc3ItYmFsbCB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiB2YXIoLS1zaXplLCA2NHB4KTsgaGVpZ2h0OiB2YXIoLS1zaXplLCA2NHB4KTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIGFuaW1hdGlvbjogc2lhLXNyLWJvdW5jZSAxLjJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgIH1cbiAgICAuc2lhLXNlbmlvci1yZXZlYWwgLnNyLXNoYWRvdyB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IGJvdHRvbTogMDsgd2lkdGg6IDYwJTsgaGVpZ2h0OiA2cHg7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7IGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC4xMik7XG4gICAgICBhbmltYXRpb246IHNpYS1zci1zaGFkb3cgMS4ycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIHNpYS1zci1ib3VuY2Uge1xuICAgICAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjAlKSBzY2FsZVgoMS4wNikgc2NhbGVZKDAuOTQpOyB9XG4gICAgICA1MCUgICAgICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjUlKSBzY2FsZVgoMC45Nikgc2NhbGVZKDEuMDQpOyB9XG4gICAgfVxuICAgIEBrZXlmcmFtZXMgc2lhLXNyLXNoYWRvdyB7XG4gICAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogc2NhbGVYKDEpOyBvcGFjaXR5OiAwLjEyOyB9XG4gICAgICA1MCUgICAgICB7IHRyYW5zZm9ybTogc2NhbGVYKDAuNik7IG9wYWNpdHk6IDAuMDY7IH1cbiAgICB9XG4gIGBdXG59KVxuZXhwb3J0IGNsYXNzIExvYWRpbmdDb21wb25lbnQge1xuICBASW5wdXQoKSB2YXJpYW50OiBMb2FkaW5nVmFyaWFudCA9ICdzZW5pb3ItcmV2ZWFsJztcbiAgQElucHV0KCkgY29sb3I6IExvYWRpbmdDb2xvciA9ICdzZW5pb3InO1xuICBASW5wdXQoKSBzaXplOiBudW1iZXIgPSA0MDtcbiAgQElucHV0KCkgdGV4dDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHBhZGRpbmc6IHN0cmluZyA9ICczcmVtIDAnO1xuXG4gIGdldCBjb2xvckJhc2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKENPTE9SX01BUFt0aGlzLmNvbG9yXSB8fCBDT0xPUl9NQVBbJ3NlbmlvciddKS5iYXNlO1xuICB9XG5cbiAgZ2V0IGNvbG9yTGlnaHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKENPTE9SX01BUFt0aGlzLmNvbG9yXSB8fCBDT0xPUl9NQVBbJ3NlbmlvciddKS5saWdodDtcbiAgfVxuXG4gIHBhdGhSaWdodCA9IFNFTklPUl9QQVRIX1JJR0hUO1xuICBwYXRoTGVmdCA9IFNFTklPUl9QQVRIX0xFRlQ7XG4gIHBhdGhGdWxsID0gU0VOSU9SX1BBVEhfRlVMTDtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { Directive, Input, } from '@angular/core';
|
|
2
|
+
import { LoadingComponent } from '../../components/loading/loading.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Directive that replaces PrimeNG p-table's default loading spinner
|
|
6
|
+
* with the sia-loading component injected as a table row in the tbody.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* <p-table [loading]="loading" siaTableLoading>
|
|
10
|
+
*/
|
|
11
|
+
export class TableLoadingDirective {
|
|
12
|
+
el;
|
|
13
|
+
renderer;
|
|
14
|
+
vcr;
|
|
15
|
+
loading = false;
|
|
16
|
+
siaLoadingVariant = 'senior-reveal';
|
|
17
|
+
siaLoadingColor = 'senior';
|
|
18
|
+
siaLoadingSize = 36;
|
|
19
|
+
loadingRow = null;
|
|
20
|
+
loadingRef = null;
|
|
21
|
+
observer = null;
|
|
22
|
+
styleEl = null;
|
|
23
|
+
constructor(el, renderer, vcr) {
|
|
24
|
+
this.el = el;
|
|
25
|
+
this.renderer = renderer;
|
|
26
|
+
this.vcr = vcr;
|
|
27
|
+
}
|
|
28
|
+
ngAfterViewInit() {
|
|
29
|
+
this.injectHideStyles();
|
|
30
|
+
this.setupObserver();
|
|
31
|
+
if (this.loading) {
|
|
32
|
+
this.showLoading();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
ngOnChanges(changes) {
|
|
36
|
+
if (changes['loading'] && !changes['loading'].firstChange) {
|
|
37
|
+
if (this.loading) {
|
|
38
|
+
this.showLoading();
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
this.removeLoading();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (this.loadingRef) {
|
|
45
|
+
if (changes['siaLoadingVariant'])
|
|
46
|
+
this.loadingRef.instance.variant = this.siaLoadingVariant;
|
|
47
|
+
if (changes['siaLoadingColor'])
|
|
48
|
+
this.loadingRef.instance.color = this.siaLoadingColor;
|
|
49
|
+
if (changes['siaLoadingSize'])
|
|
50
|
+
this.loadingRef.instance.size = this.siaLoadingSize;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
ngOnDestroy() {
|
|
54
|
+
this.removeLoading();
|
|
55
|
+
this.observer?.disconnect();
|
|
56
|
+
this.observer = null;
|
|
57
|
+
this.styleEl?.remove();
|
|
58
|
+
this.styleEl = null;
|
|
59
|
+
}
|
|
60
|
+
injectHideStyles() {
|
|
61
|
+
const host = this.el.nativeElement;
|
|
62
|
+
this.styleEl = this.renderer.createElement('style');
|
|
63
|
+
this.styleEl.textContent = `
|
|
64
|
+
.p-datatable-loading-overlay,
|
|
65
|
+
.p-datatable-mask {
|
|
66
|
+
display: none !important;
|
|
67
|
+
}
|
|
68
|
+
`;
|
|
69
|
+
this.renderer.appendChild(host, this.styleEl);
|
|
70
|
+
}
|
|
71
|
+
setupObserver() {
|
|
72
|
+
const host = this.el.nativeElement;
|
|
73
|
+
this.observer = new MutationObserver((mutations) => {
|
|
74
|
+
for (const m of mutations) {
|
|
75
|
+
m.addedNodes.forEach((node) => {
|
|
76
|
+
if (node instanceof HTMLElement) {
|
|
77
|
+
if (node.classList.contains('p-datatable-loading-overlay') ||
|
|
78
|
+
node.classList.contains('p-datatable-mask')) {
|
|
79
|
+
node.style.display = 'none';
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
this.observer.observe(host, { childList: true, subtree: true });
|
|
86
|
+
}
|
|
87
|
+
showLoading() {
|
|
88
|
+
if (this.loadingRow)
|
|
89
|
+
return;
|
|
90
|
+
const host = this.el.nativeElement;
|
|
91
|
+
const tbody = host.querySelector('tbody');
|
|
92
|
+
if (!tbody)
|
|
93
|
+
return;
|
|
94
|
+
// Hide existing data rows
|
|
95
|
+
const existingRows = tbody.querySelectorAll('tr');
|
|
96
|
+
existingRows.forEach((row) => {
|
|
97
|
+
this.renderer.setStyle(row, 'display', 'none');
|
|
98
|
+
});
|
|
99
|
+
// Count columns from thead
|
|
100
|
+
const colCount = this.getColumnCount(host);
|
|
101
|
+
// Create <tr>
|
|
102
|
+
this.loadingRow = this.renderer.createElement('tr');
|
|
103
|
+
this.renderer.addClass(this.loadingRow, 'sia-table-loading-row');
|
|
104
|
+
// Create <td colspan="N">
|
|
105
|
+
const td = this.renderer.createElement('td');
|
|
106
|
+
this.renderer.setAttribute(td, 'colspan', String(colCount || 99));
|
|
107
|
+
this.renderer.setStyle(td, 'text-align', 'center');
|
|
108
|
+
this.renderer.setStyle(td, 'padding', '2rem 0');
|
|
109
|
+
this.renderer.setStyle(td, 'border', 'none');
|
|
110
|
+
// Create LoadingComponent
|
|
111
|
+
this.loadingRef = this.vcr.createComponent(LoadingComponent);
|
|
112
|
+
this.loadingRef.instance.variant = this.siaLoadingVariant;
|
|
113
|
+
this.loadingRef.instance.color = this.siaLoadingColor;
|
|
114
|
+
this.loadingRef.instance.size = this.siaLoadingSize;
|
|
115
|
+
this.loadingRef.instance.padding = '0';
|
|
116
|
+
const loadingEl = this.loadingRef.location.nativeElement;
|
|
117
|
+
this.renderer.appendChild(td, loadingEl);
|
|
118
|
+
this.renderer.appendChild(this.loadingRow, td);
|
|
119
|
+
this.renderer.appendChild(tbody, this.loadingRow);
|
|
120
|
+
}
|
|
121
|
+
removeLoading() {
|
|
122
|
+
const host = this.el.nativeElement;
|
|
123
|
+
const tbody = host.querySelector('tbody');
|
|
124
|
+
// Remove loading row
|
|
125
|
+
if (this.loadingRow?.parentNode) {
|
|
126
|
+
this.renderer.removeChild(this.loadingRow.parentNode, this.loadingRow);
|
|
127
|
+
}
|
|
128
|
+
this.loadingRow = null;
|
|
129
|
+
if (this.loadingRef) {
|
|
130
|
+
this.loadingRef.destroy();
|
|
131
|
+
this.loadingRef = null;
|
|
132
|
+
}
|
|
133
|
+
// Restore hidden data rows
|
|
134
|
+
if (tbody) {
|
|
135
|
+
const rows = tbody.querySelectorAll('tr');
|
|
136
|
+
rows.forEach((row) => {
|
|
137
|
+
this.renderer.removeStyle(row, 'display');
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
getColumnCount(host) {
|
|
142
|
+
const headerRow = host.querySelector('thead tr');
|
|
143
|
+
if (headerRow) {
|
|
144
|
+
return headerRow.querySelectorAll('th').length;
|
|
145
|
+
}
|
|
146
|
+
return 99;
|
|
147
|
+
}
|
|
148
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableLoadingDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
149
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: TableLoadingDirective, isStandalone: true, selector: "p-table[siaTableLoading]", inputs: { loading: "loading", siaLoadingVariant: "siaLoadingVariant", siaLoadingColor: "siaLoadingColor", siaLoadingSize: "siaLoadingSize" }, usesOnChanges: true, ngImport: i0 });
|
|
150
|
+
}
|
|
151
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableLoadingDirective, decorators: [{
|
|
152
|
+
type: Directive,
|
|
153
|
+
args: [{
|
|
154
|
+
selector: 'p-table[siaTableLoading]',
|
|
155
|
+
standalone: true,
|
|
156
|
+
}]
|
|
157
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }], propDecorators: { loading: [{
|
|
158
|
+
type: Input
|
|
159
|
+
}], siaLoadingVariant: [{
|
|
160
|
+
type: Input
|
|
161
|
+
}], siaLoadingColor: [{
|
|
162
|
+
type: Input
|
|
163
|
+
}], siaLoadingSize: [{
|
|
164
|
+
type: Input
|
|
165
|
+
}] } });
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbG9hZGluZy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLWFpL3NyYy9saWIvZGlyZWN0aXZlcy90YWJsZS1sb2FkaW5nL3RhYmxlLWxvYWRpbmcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxHQVNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0MsTUFBTSw0Q0FBNEMsQ0FBQzs7QUFFNUc7Ozs7OztHQU1HO0FBS0gsTUFBTSxPQUFPLHFCQUFxQjtJQVl0QjtJQUNBO0lBQ0E7SUFiRCxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLGlCQUFpQixHQUFtQixlQUFlLENBQUM7SUFDcEQsZUFBZSxHQUFpQixRQUFRLENBQUM7SUFDekMsY0FBYyxHQUFXLEVBQUUsQ0FBQztJQUU3QixVQUFVLEdBQStCLElBQUksQ0FBQztJQUM5QyxVQUFVLEdBQTBDLElBQUksQ0FBQztJQUN6RCxRQUFRLEdBQTRCLElBQUksQ0FBQztJQUN6QyxPQUFPLEdBQTRCLElBQUksQ0FBQztJQUVoRCxZQUNVLEVBQWMsRUFDZCxRQUFtQixFQUNuQixHQUFxQjtRQUZyQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixRQUFHLEdBQUgsR0FBRyxDQUFrQjtJQUM1QixDQUFDO0lBRUosZUFBZTtRQUNiLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsU0FB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QztZQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLENBQUM7UUFFRCwyQkFBMkI7UUFDM0IsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUM1QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFDLElBQWlCO1FBQ3RDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakQsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLE9BQU8sU0FBUyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNqRCxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO3dHQXBKVSxxQkFBcUI7NEZBQXJCLHFCQUFxQjs7NEZBQXJCLHFCQUFxQjtrQkFKakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7c0lBRVUsT0FBTztzQkFBZixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIEVsZW1lbnRSZWYsXG4gIFJlbmRlcmVyMixcbiAgQ29tcG9uZW50UmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBPbkRlc3Ryb3ksXG4gIEFmdGVyVmlld0luaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9hZGluZ0NvbXBvbmVudCwgTG9hZGluZ1ZhcmlhbnQsIExvYWRpbmdDb2xvciB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbG9hZGluZy9sb2FkaW5nLmNvbXBvbmVudCc7XG5cbi8qKlxuICogRGlyZWN0aXZlIHRoYXQgcmVwbGFjZXMgUHJpbWVORyBwLXRhYmxlJ3MgZGVmYXVsdCBsb2FkaW5nIHNwaW5uZXJcbiAqIHdpdGggdGhlIHNpYS1sb2FkaW5nIGNvbXBvbmVudCBpbmplY3RlZCBhcyBhIHRhYmxlIHJvdyBpbiB0aGUgdGJvZHkuXG4gKlxuICogVXNhZ2U6XG4gKiAgIDxwLXRhYmxlIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBzaWFUYWJsZUxvYWRpbmc+XG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ3AtdGFibGVbc2lhVGFibGVMb2FkaW5nXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlTG9hZGluZ0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuICBASW5wdXQoKSBzaWFMb2FkaW5nVmFyaWFudDogTG9hZGluZ1ZhcmlhbnQgPSAnc2VuaW9yLXJldmVhbCc7XG4gIEBJbnB1dCgpIHNpYUxvYWRpbmdDb2xvcjogTG9hZGluZ0NvbG9yID0gJ3Nlbmlvcic7XG4gIEBJbnB1dCgpIHNpYUxvYWRpbmdTaXplOiBudW1iZXIgPSAzNjtcblxuICBwcml2YXRlIGxvYWRpbmdSb3c6IEhUTUxUYWJsZVJvd0VsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBsb2FkaW5nUmVmOiBDb21wb25lbnRSZWY8TG9hZGluZ0NvbXBvbmVudD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBvYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN0eWxlRWw6IEhUTUxTdHlsZUVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHZjcjogVmlld0NvbnRhaW5lclJlZlxuICApIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5qZWN0SGlkZVN0eWxlcygpO1xuICAgIHRoaXMuc2V0dXBPYnNlcnZlcigpO1xuICAgIGlmICh0aGlzLmxvYWRpbmcpIHtcbiAgICAgIHRoaXMuc2hvd0xvYWRpbmcoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2xvYWRpbmcnXSAmJiAhY2hhbmdlc1snbG9hZGluZyddLmZpcnN0Q2hhbmdlKSB7XG4gICAgICBpZiAodGhpcy5sb2FkaW5nKSB7XG4gICAgICAgIHRoaXMuc2hvd0xvYWRpbmcoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVtb3ZlTG9hZGluZygpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5sb2FkaW5nUmVmKSB7XG4gICAgICBpZiAoY2hhbmdlc1snc2lhTG9hZGluZ1ZhcmlhbnQnXSkgdGhpcy5sb2FkaW5nUmVmLmluc3RhbmNlLnZhcmlhbnQgPSB0aGlzLnNpYUxvYWRpbmdWYXJpYW50O1xuICAgICAgaWYgKGNoYW5nZXNbJ3NpYUxvYWRpbmdDb2xvciddKSB0aGlzLmxvYWRpbmdSZWYuaW5zdGFuY2UuY29sb3IgPSB0aGlzLnNpYUxvYWRpbmdDb2xvcjtcbiAgICAgIGlmIChjaGFuZ2VzWydzaWFMb2FkaW5nU2l6ZSddKSB0aGlzLmxvYWRpbmdSZWYuaW5zdGFuY2Uuc2l6ZSA9IHRoaXMuc2lhTG9hZGluZ1NpemU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmVMb2FkaW5nKCk7XG4gICAgdGhpcy5vYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBudWxsO1xuICAgIHRoaXMuc3R5bGVFbD8ucmVtb3ZlKCk7XG4gICAgdGhpcy5zdHlsZUVsID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgaW5qZWN0SGlkZVN0eWxlcygpOiB2b2lkIHtcbiAgICBjb25zdCBob3N0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIHRoaXMuc3R5bGVFbCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICB0aGlzLnN0eWxlRWwhLnRleHRDb250ZW50ID0gYFxuICAgICAgLnAtZGF0YXRhYmxlLWxvYWRpbmctb3ZlcmxheSxcbiAgICAgIC5wLWRhdGF0YWJsZS1tYXNrIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIGA7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChob3N0LCB0aGlzLnN0eWxlRWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cE9ic2VydmVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGhvc3QgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy5vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcbiAgICAgIGZvciAoY29uc3QgbSBvZiBtdXRhdGlvbnMpIHtcbiAgICAgICAgbS5hZGRlZE5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCdwLWRhdGF0YWJsZS1sb2FkaW5nLW92ZXJsYXknKSB8fFxuICAgICAgICAgICAgICBub2RlLmNsYXNzTGlzdC5jb250YWlucygncC1kYXRhdGFibGUtbWFzaycpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgbm9kZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKGhvc3QsIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93TG9hZGluZygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nUm93KSByZXR1cm47XG5cbiAgICBjb25zdCBob3N0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IHRib2R5ID0gaG9zdC5xdWVyeVNlbGVjdG9yKCd0Ym9keScpO1xuICAgIGlmICghdGJvZHkpIHJldHVybjtcblxuICAgIC8vIEhpZGUgZXhpc3RpbmcgZGF0YSByb3dzXG4gICAgY29uc3QgZXhpc3RpbmdSb3dzID0gdGJvZHkucXVlcnlTZWxlY3RvckFsbCgndHInKTtcbiAgICBleGlzdGluZ1Jvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHJvdywgJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgIH0pO1xuXG4gICAgLy8gQ291bnQgY29sdW1ucyBmcm9tIHRoZWFkXG4gICAgY29uc3QgY29sQ291bnQgPSB0aGlzLmdldENvbHVtbkNvdW50KGhvc3QpO1xuXG4gICAgLy8gQ3JlYXRlIDx0cj5cbiAgICB0aGlzLmxvYWRpbmdSb3cgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmxvYWRpbmdSb3csICdzaWEtdGFibGUtbG9hZGluZy1yb3cnKTtcblxuICAgIC8vIENyZWF0ZSA8dGQgY29sc3Bhbj1cIk5cIj5cbiAgICBjb25zdCB0ZCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgndGQnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0ZCwgJ2NvbHNwYW4nLCBTdHJpbmcoY29sQ291bnQgfHwgOTkpKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRkLCAndGV4dC1hbGlnbicsICdjZW50ZXInKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRkLCAncGFkZGluZycsICcycmVtIDAnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRkLCAnYm9yZGVyJywgJ25vbmUnKTtcblxuICAgIC8vIENyZWF0ZSBMb2FkaW5nQ29tcG9uZW50XG4gICAgdGhpcy5sb2FkaW5nUmVmID0gdGhpcy52Y3IuY3JlYXRlQ29tcG9uZW50KExvYWRpbmdDb21wb25lbnQpO1xuICAgIHRoaXMubG9hZGluZ1JlZi5pbnN0YW5jZS52YXJpYW50ID0gdGhpcy5zaWFMb2FkaW5nVmFyaWFudDtcbiAgICB0aGlzLmxvYWRpbmdSZWYuaW5zdGFuY2UuY29sb3IgPSB0aGlzLnNpYUxvYWRpbmdDb2xvcjtcbiAgICB0aGlzLmxvYWRpbmdSZWYuaW5zdGFuY2Uuc2l6ZSA9IHRoaXMuc2lhTG9hZGluZ1NpemU7XG4gICAgdGhpcy5sb2FkaW5nUmVmLmluc3RhbmNlLnBhZGRpbmcgPSAnMCc7XG5cbiAgICBjb25zdCBsb2FkaW5nRWwgPSB0aGlzLmxvYWRpbmdSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRkLCBsb2FkaW5nRWwpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5sb2FkaW5nUm93LCB0ZCk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0Ym9keSwgdGhpcy5sb2FkaW5nUm93KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlTG9hZGluZygpOiB2b2lkIHtcbiAgICBjb25zdCBob3N0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IHRib2R5ID0gaG9zdC5xdWVyeVNlbGVjdG9yKCd0Ym9keScpO1xuXG4gICAgLy8gUmVtb3ZlIGxvYWRpbmcgcm93XG4gICAgaWYgKHRoaXMubG9hZGluZ1Jvdz8ucGFyZW50Tm9kZSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLmxvYWRpbmdSb3cucGFyZW50Tm9kZSwgdGhpcy5sb2FkaW5nUm93KTtcbiAgICB9XG4gICAgdGhpcy5sb2FkaW5nUm93ID0gbnVsbDtcbiAgICBpZiAodGhpcy5sb2FkaW5nUmVmKSB7XG4gICAgICB0aGlzLmxvYWRpbmdSZWYuZGVzdHJveSgpO1xuICAgICAgdGhpcy5sb2FkaW5nUmVmID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBSZXN0b3JlIGhpZGRlbiBkYXRhIHJvd3NcbiAgICBpZiAodGJvZHkpIHtcbiAgICAgIGNvbnN0IHJvd3MgPSB0Ym9keS5xdWVyeVNlbGVjdG9yQWxsKCd0cicpO1xuICAgICAgcm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShyb3csICdkaXNwbGF5Jyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldENvbHVtbkNvdW50KGhvc3Q6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgICBjb25zdCBoZWFkZXJSb3cgPSBob3N0LnF1ZXJ5U2VsZWN0b3IoJ3RoZWFkIHRyJyk7XG4gICAgaWYgKGhlYWRlclJvdykge1xuICAgICAgcmV0dXJuIGhlYWRlclJvdy5xdWVyeVNlbGVjdG9yQWxsKCd0aCcpLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIDk5O1xuICB9XG59XG4iXX0=
|