@gravitee/ui-components 3.25.2 → 3.25.3-typescript-ad6021f
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/CHANGELOG.md +1292 -0
- package/LICENSE.txt +202 -0
- package/README.md +195 -0
- package/package.json +17 -4
- package/src/.eslintrc.js +19 -0
- package/src/atoms/gv-autocomplete.js +156 -132
- package/src/atoms/gv-button.js +248 -73
- package/src/atoms/gv-checkbox.js +103 -45
- package/src/atoms/gv-date-picker-calendar.js +393 -312
- package/src/atoms/gv-date-picker-cell.js +81 -57
- package/src/atoms/gv-date-picker.js +319 -180
- package/src/atoms/gv-file-upload.js +195 -85
- package/src/atoms/gv-icon.js +34 -13
- package/src/atoms/gv-image.js +66 -31
- package/src/atoms/gv-input-message.js +37 -12
- package/src/atoms/gv-input.js +148 -117
- package/src/atoms/gv-link.js +125 -47
- package/src/atoms/gv-message.js +69 -18
- package/src/atoms/gv-metric.js +68 -19
- package/src/atoms/gv-relative-time.js +38 -67
- package/src/atoms/gv-select-native.js +215 -96
- package/src/atoms/gv-select.js +230 -110
- package/src/atoms/gv-spinner.js +26 -5
- package/src/atoms/gv-state.js +66 -25
- package/src/atoms/gv-switch.js +160 -40
- package/src/atoms/gv-tag.js +78 -26
- package/src/atoms/gv-text.js +83 -22
- package/src/charts/gv-chart-bar.js +18 -22
- package/src/charts/gv-chart-gauge.js +31 -28
- package/src/charts/gv-chart-histogram.js +10 -18
- package/src/charts/gv-chart-line.js +59 -70
- package/src/charts/gv-chart-map.js +42 -44
- package/src/charts/gv-chart-pie.js +14 -18
- package/src/index.js +0 -1
- package/src/lib/cron-expression.js +35 -40
- package/src/lib/date.js +1 -10
- package/src/lib/events.js +1 -3
- package/src/lib/http-client-schema-form.js +12 -13
- package/src/lib/http.js +56 -57
- package/src/lib/i18n.js +22 -30
- package/src/lib/item.js +12 -13
- package/src/lib/properties.js +42 -77
- package/src/lib/schema-form.js +5 -4
- package/src/lib/studio.js +60 -13
- package/src/lib/style.js +8 -8
- package/src/lib/text-format.js +7 -14
- package/src/lib/theme.js +5 -8
- package/src/lib/utils.js +18 -17
- package/src/mixins/chart-element.js +54 -31
- package/src/mixins/input-element.js +47 -60
- package/src/mixins/item-resource.js +32 -34
- package/src/mixins/keyboard-element.js +5 -6
- package/src/mixins/update-after-browser.js +1 -4
- package/src/mixins/with-resize-observer.js +13 -23
- package/src/mixins/with-skeleton-attribute.js +48 -54
- package/src/molecules/gv-card-full.js +147 -26
- package/src/molecules/gv-card-list.js +42 -13
- package/src/molecules/gv-card.js +91 -17
- package/src/molecules/gv-category-list.js +17 -6
- package/src/molecules/gv-category.js +103 -23
- package/src/molecules/gv-code.js +142 -80
- package/src/molecules/gv-confirm.js +71 -41
- package/src/molecules/gv-cron-editor.js +389 -143
- package/src/molecules/gv-dropdown-menu.js +46 -14
- package/src/molecules/gv-expandable.js +59 -31
- package/src/molecules/gv-expression-language.js +138 -176
- package/src/molecules/gv-identity-picture.js +66 -43
- package/src/molecules/gv-list.js +134 -42
- package/src/molecules/gv-metrics.js +49 -37
- package/src/molecules/gv-modal.js +95 -28
- package/src/molecules/gv-nav.js +75 -49
- package/src/molecules/gv-option.js +130 -57
- package/src/molecules/gv-plans.js +209 -86
- package/src/molecules/gv-popover.js +177 -57
- package/src/molecules/gv-promote.js +146 -28
- package/src/molecules/gv-rating-list.js +195 -69
- package/src/molecules/gv-rating.js +105 -52
- package/src/molecules/gv-row-expandable.js +11 -5
- package/src/molecules/gv-row.js +147 -21
- package/src/molecules/gv-stats.js +48 -23
- package/src/molecules/gv-stepper.js +187 -43
- package/src/molecules/gv-table.js +309 -199
- package/src/molecules/gv-tree.js +156 -33
- package/src/organisms/gv-documentation.js +127 -44
- package/src/organisms/gv-header.js +195 -37
- package/src/organisms/gv-http-client.js +168 -32
- package/src/organisms/gv-menu.js +158 -37
- package/src/organisms/gv-newsletter-subscription.js +189 -48
- package/src/organisms/gv-pagination.js +77 -49
- package/src/organisms/gv-properties.js +492 -271
- package/src/organisms/gv-resizable-views.js +259 -41
- package/src/organisms/gv-resources.js +275 -168
- package/src/organisms/gv-schema-form-array.js +159 -49
- package/src/organisms/gv-schema-form-control-object.js +73 -59
- package/src/organisms/gv-schema-form-control.js +134 -107
- package/src/organisms/gv-schema-form.js +313 -208
- package/src/organisms/gv-tabs.js +98 -66
- package/src/organisms/gv-user-menu.js +201 -36
- package/src/organisms/gv-vertical-menu.js +61 -20
- package/src/policy-studio/gv-flow-step.js +265 -105
- package/src/policy-studio/gv-flow.js +304 -125
- package/src/policy-studio/gv-policy-studio-menu.js +471 -157
- package/src/policy-studio/gv-policy-studio.js +774 -710
- package/src/styles/empty.js +20 -3
- package/src/styles/input.js +247 -3
- package/src/styles/link.js +16 -3
- package/src/styles/shapes.js +0 -1
- package/src/styles/skeleton.js +37 -3
- package/src/styles/zoom.js +24 -3
- package/src/theme/definition.json +1762 -0
- package/src/theme/gv-theme.js +60 -21
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { css, LitElement, html } from 'lit';
|
|
17
17
|
import { classMap } from 'lit/directives/class-map';
|
|
18
|
+
|
|
18
19
|
/**
|
|
19
20
|
* Popover component
|
|
20
21
|
*
|
|
@@ -36,52 +37,174 @@ import { classMap } from 'lit/directives/class-map';
|
|
|
36
37
|
* @cssprop {Color} [--gv-popover--bdc=var(--gv-theme-neutral-color, #f5f5f5)] - Border color
|
|
37
38
|
* @cssprop {Length} [--gv-popover--p=0.5rem] - Padding
|
|
38
39
|
*/
|
|
39
|
-
|
|
40
40
|
export class GvPopover extends LitElement {
|
|
41
41
|
static get properties() {
|
|
42
42
|
return {
|
|
43
|
-
event: {
|
|
44
|
-
|
|
45
|
-
},
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
},
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
},
|
|
53
|
-
small: {
|
|
54
|
-
type: Boolean,
|
|
55
|
-
reflect: true
|
|
56
|
-
},
|
|
57
|
-
medium: {
|
|
58
|
-
type: Boolean,
|
|
59
|
-
reflect: true
|
|
60
|
-
},
|
|
61
|
-
large: {
|
|
62
|
-
type: Boolean,
|
|
63
|
-
reflect: true
|
|
64
|
-
},
|
|
65
|
-
width: {
|
|
66
|
-
type: String
|
|
67
|
-
},
|
|
68
|
-
position: {
|
|
69
|
-
type: String,
|
|
70
|
-
reflect: true
|
|
71
|
-
},
|
|
72
|
-
auto: {
|
|
73
|
-
type: Boolean
|
|
74
|
-
},
|
|
75
|
-
_opened: {
|
|
76
|
-
type: Boolean,
|
|
77
|
-
attribute: false
|
|
78
|
-
}
|
|
43
|
+
event: { type: String },
|
|
44
|
+
delay: { type: Number },
|
|
45
|
+
arrow: { type: Boolean, reflect: true },
|
|
46
|
+
small: { type: Boolean, reflect: true },
|
|
47
|
+
medium: { type: Boolean, reflect: true },
|
|
48
|
+
large: { type: Boolean, reflect: true },
|
|
49
|
+
width: { type: String },
|
|
50
|
+
position: { type: String, reflect: true },
|
|
51
|
+
auto: { type: Boolean },
|
|
52
|
+
_opened: { type: Boolean, attribute: false },
|
|
79
53
|
};
|
|
80
54
|
}
|
|
81
55
|
|
|
82
56
|
static get styles() {
|
|
83
|
-
return [
|
|
84
|
-
|
|
57
|
+
return [
|
|
58
|
+
// language=CSS
|
|
59
|
+
css`
|
|
60
|
+
:host {
|
|
61
|
+
cursor: pointer;
|
|
62
|
+
box-sizing: border-box;
|
|
63
|
+
display: inline-block;
|
|
64
|
+
position: relative;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.popover {
|
|
68
|
+
--bgc: var(--gv-popover--bgc, var(--gv-theme-neutral-color-lighter, #fafafa));
|
|
69
|
+
color: var(--gv-popover--c, var(--gv-theme-font-color-dark, #262626));
|
|
70
|
+
position: absolute;
|
|
71
|
+
background-color: var(--bgc);
|
|
72
|
+
padding: var(--gv-popover--p, 0.5rem);
|
|
73
|
+
border-radius: 4px;
|
|
74
|
+
z-index: 1000;
|
|
75
|
+
margin: 0 auto;
|
|
76
|
+
text-align: center;
|
|
77
|
+
width: auto;
|
|
78
|
+
box-sizing: content-box;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
:host([position='bottom']) .popover {
|
|
82
|
+
top: calc(100% + 0.4rem);
|
|
83
|
+
transform: translateX(-50%);
|
|
84
|
+
left: 50%;
|
|
85
|
+
box-shadow: 1px 0 0 0 var(--gv-theme-neutral-color, #f5f5f5), 0 2px 3px var(--gv-theme-neutral-color-dark, #bfbfbf);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
:host([position='bottom'][arrow]) .popover {
|
|
89
|
+
top: calc(100% + 0.4rem + 10px);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
:host([position='bottom'][arrow]) .arrow {
|
|
93
|
+
top: calc(100% - 8px);
|
|
94
|
+
transform: translateX(-50%);
|
|
95
|
+
left: 50%;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
:host([position='top']) .popover {
|
|
99
|
+
bottom: calc(100% + 0.4rem);
|
|
100
|
+
transform: translateX(-50%);
|
|
101
|
+
left: 50%;
|
|
102
|
+
box-shadow: 1px 0 0 0 var(--gv-theme-neutral-color, #f5f5f5), 0 -2px 3px var(--gv-theme-neutral-color-dark, #bfbfbf);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
:host([position='top'][arrow]) .popover {
|
|
106
|
+
bottom: calc(100% + 0.4rem + 10px);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
:host([position='top'][arrow]) .arrow {
|
|
110
|
+
bottom: calc(100% - 8px);
|
|
111
|
+
transform: translateX(-50%) rotate(180deg);
|
|
112
|
+
left: 50%;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
:host([position='left']) .popover {
|
|
116
|
+
top: 50%;
|
|
117
|
+
transform: translateY(-50%);
|
|
118
|
+
right: calc(100% + 0.4rem);
|
|
119
|
+
box-shadow: -1px 0 0 0 var(--gv-theme-neutral-color, #f5f5f5), -1px 2px 3px var(--gv-theme-neutral-color-dark, #bfbfbf);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
:host([position='left'][arrow]) .popover {
|
|
123
|
+
right: calc(100% + 0.4rem + 10px);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
:host([position='left'][arrow]) .arrow {
|
|
127
|
+
top: 50%;
|
|
128
|
+
transform: translateY(-50%) rotate(90deg);
|
|
129
|
+
right: calc(100% - 8px);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
:host([position='right']) .popover {
|
|
133
|
+
top: 50%;
|
|
134
|
+
transform: translateY(-50%);
|
|
135
|
+
left: calc(100% + 0.4rem);
|
|
136
|
+
box-shadow: 1px 0 0 1px var(--gv-theme-neutral-color, #f5f5f5), 1px 1px 1px var(--gv-theme-neutral-color-dark, #bfbfbf);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
:host([position='right'][arrow]) .popover {
|
|
140
|
+
left: calc(100% + 0.4rem + 10px);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
:host([position='right'][arrow]) .arrow {
|
|
144
|
+
left: calc(100% - 8px);
|
|
145
|
+
top: 50%;
|
|
146
|
+
transform: translateY(-50%) rotate(-90deg);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.inline .popover {
|
|
150
|
+
white-space: nowrap;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
:host([small]) .popover {
|
|
154
|
+
width: 200px;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
:host([medium]) .popover {
|
|
158
|
+
width: 350px;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
:host([large]) .popover {
|
|
162
|
+
width: 500px;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.content {
|
|
166
|
+
width: 100%;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.popover,
|
|
170
|
+
.arrow {
|
|
171
|
+
opacity: 0;
|
|
172
|
+
visibility: hidden;
|
|
173
|
+
transition: opacity 0.3s ease-in-out;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.open .popover,
|
|
177
|
+
.open .arrow {
|
|
178
|
+
display: block;
|
|
179
|
+
opacity: 1;
|
|
180
|
+
visibility: visible;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.close .popover,
|
|
184
|
+
.close .arrow {
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.arrow {
|
|
188
|
+
width: 25px;
|
|
189
|
+
height: 25px;
|
|
190
|
+
z-index: 101;
|
|
191
|
+
position: absolute;
|
|
192
|
+
overflow: hidden;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.arrow:after {
|
|
196
|
+
content: '';
|
|
197
|
+
position: absolute;
|
|
198
|
+
width: 12px;
|
|
199
|
+
height: 12px;
|
|
200
|
+
background: var(--gv-popover--bgc, var(--gv-theme-neutral-color-lighter, #fafafa));
|
|
201
|
+
transform: rotate(45deg);
|
|
202
|
+
top: 19px;
|
|
203
|
+
left: 6px;
|
|
204
|
+
border: 1px solid var(--gv-popover--bdc, var(--gv-theme-neutral-color, #f5f5f5));
|
|
205
|
+
}
|
|
206
|
+
`,
|
|
207
|
+
];
|
|
85
208
|
}
|
|
86
209
|
|
|
87
210
|
constructor() {
|
|
@@ -98,9 +221,7 @@ export class GvPopover extends LitElement {
|
|
|
98
221
|
if (this.event === 'click') {
|
|
99
222
|
window.removeEventListener(this.event, this._closeHandler);
|
|
100
223
|
}
|
|
101
|
-
|
|
102
224
|
this._opened = true;
|
|
103
|
-
|
|
104
225
|
if (this.event === 'click') {
|
|
105
226
|
setTimeout(() => window.addEventListener(this.event, this._closeHandler));
|
|
106
227
|
}
|
|
@@ -127,12 +248,12 @@ export class GvPopover extends LitElement {
|
|
|
127
248
|
|
|
128
249
|
render() {
|
|
129
250
|
const inline = this.width == null && !this.small && !this.medium && !this.large;
|
|
130
|
-
const classes = {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
251
|
+
const classes = { open: this._opened, content: true, inline };
|
|
252
|
+
return html` <div class="${classMap(classes)}">
|
|
253
|
+
<slot></slot>
|
|
254
|
+
${this.arrow ? html`<div class="arrow"></div>` : ''}
|
|
255
|
+
<div class="popover">${this.renderContent()}</div>
|
|
256
|
+
</div>`;
|
|
136
257
|
}
|
|
137
258
|
|
|
138
259
|
renderContent() {
|
|
@@ -142,7 +263,6 @@ export class GvPopover extends LitElement {
|
|
|
142
263
|
firstUpdated(_changedProperties) {
|
|
143
264
|
setTimeout(() => {
|
|
144
265
|
this.addEventListener(this.event, this._open.bind(this));
|
|
145
|
-
|
|
146
266
|
if (this.event.startsWith('mouse') && this.delay === 0) {
|
|
147
267
|
this.addEventListener('mouseleave', this._close.bind(this));
|
|
148
268
|
}
|
|
@@ -153,7 +273,7 @@ export class GvPopover extends LitElement {
|
|
|
153
273
|
const popover = this.shadowRoot.querySelector('.popover');
|
|
154
274
|
return {
|
|
155
275
|
width: popover.offsetWidth,
|
|
156
|
-
height: popover.offsetHeight
|
|
276
|
+
height: popover.offsetHeight,
|
|
157
277
|
};
|
|
158
278
|
}
|
|
159
279
|
|
|
@@ -164,20 +284,22 @@ export class GvPopover extends LitElement {
|
|
|
164
284
|
_getCenterPosition() {
|
|
165
285
|
return {
|
|
166
286
|
x: this.target.x + this.target.width / 2 + window.scrollX,
|
|
167
|
-
y: this.target.y + this.target.height / 2 + window.scrollY
|
|
287
|
+
y: this.target.y + this.target.height / 2 + window.scrollY,
|
|
168
288
|
};
|
|
169
289
|
}
|
|
170
290
|
|
|
171
291
|
_updatePosition() {
|
|
172
292
|
if (this.position != null && this.auto) {
|
|
173
293
|
const popover = this.shadowRoot.querySelector('.popover');
|
|
174
|
-
|
|
175
294
|
if (popover) {
|
|
176
295
|
this.target = this.firstElementChild.getBoundingClientRect();
|
|
177
|
-
|
|
178
|
-
|
|
296
|
+
if (
|
|
297
|
+
(this.position === 'top' && !this._hasTopSpace()) ||
|
|
298
|
+
(this.position === 'bottom' && !this._hasBottomSpace()) ||
|
|
299
|
+
(this.position === 'left' && !this._hasLeftSpace()) ||
|
|
300
|
+
(this.position === 'right' && !this._hasRightSpace())
|
|
301
|
+
) {
|
|
179
302
|
const index = [this._hasTopSpace(), this._hasRightSpace(), this._hasBottomSpace(), this._hasLeftSpace()].indexOf(true);
|
|
180
|
-
|
|
181
303
|
if (index > -1) {
|
|
182
304
|
this.position = ['top', 'right', 'bottom', 'left'][index];
|
|
183
305
|
}
|
|
@@ -222,10 +344,8 @@ export class GvPopover extends LitElement {
|
|
|
222
344
|
if (props.has('width')) {
|
|
223
345
|
this.shadowRoot.querySelector('.popover').style.setProperty('width', this.width);
|
|
224
346
|
}
|
|
225
|
-
|
|
226
347
|
this._updatePosition();
|
|
227
348
|
}
|
|
228
|
-
|
|
229
349
|
}
|
|
350
|
+
|
|
230
351
|
window.customElements.define('gv-popover', GvPopover);
|
|
231
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL21vbGVjdWxlcy9ndi1wb3BvdmVyLmpzIl0sIm5hbWVzIjpbImNzcyIsIkxpdEVsZW1lbnQiLCJodG1sIiwiY2xhc3NNYXAiLCJHdlBvcG92ZXIiLCJwcm9wZXJ0aWVzIiwiZXZlbnQiLCJ0eXBlIiwiU3RyaW5nIiwiZGVsYXkiLCJOdW1iZXIiLCJhcnJvdyIsIkJvb2xlYW4iLCJyZWZsZWN0Iiwic21hbGwiLCJtZWRpdW0iLCJsYXJnZSIsIndpZHRoIiwicG9zaXRpb24iLCJhdXRvIiwiX29wZW5lZCIsImF0dHJpYnV0ZSIsInN0eWxlcyIsImNvbnN0cnVjdG9yIiwiX2Nsb3NlSGFuZGxlciIsIl9jbG9zZSIsImJpbmQiLCJfb3BlbiIsImUiLCJ3aW5kb3ciLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2V0VGltZW91dCIsImFkZEV2ZW50TGlzdGVuZXIiLCJjbG9zZSIsInRhcmdldCIsImZpcnN0RWxlbWVudENoaWxkIiwib3BlbkVsZW1lbnQiLCJzaGFkb3dSb290IiwicXVlcnlTZWxlY3RvciIsImNsYXNzTGlzdCIsImFkZCIsInJlbW92ZSIsInJlbmRlciIsImlubGluZSIsImNsYXNzZXMiLCJvcGVuIiwiY29udGVudCIsInJlbmRlckNvbnRlbnQiLCJmaXJzdFVwZGF0ZWQiLCJfY2hhbmdlZFByb3BlcnRpZXMiLCJzdGFydHNXaXRoIiwiX2dldENvbnRlbnRTaXplIiwicG9wb3ZlciIsIm9mZnNldFdpZHRoIiwiaGVpZ2h0Iiwib2Zmc2V0SGVpZ2h0IiwiX2dldFBvc2l0aW9uUGFkZGluZyIsIl9nZXRDZW50ZXJQb3NpdGlvbiIsIngiLCJzY3JvbGxYIiwieSIsInNjcm9sbFkiLCJfdXBkYXRlUG9zaXRpb24iLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJfaGFzVG9wU3BhY2UiLCJfaGFzQm90dG9tU3BhY2UiLCJfaGFzTGVmdFNwYWNlIiwiX2hhc1JpZ2h0U3BhY2UiLCJpbmRleCIsImluZGV4T2YiLCJfZ2V0TWF4WCIsImlubmVyV2lkdGgiLCJfZ2V0TWF4WSIsImlubmVySGVpZ2h0IiwidXBkYXRlZCIsInByb3BzIiwiaGFzIiwic3R5bGUiLCJzZXRQcm9wZXJ0eSIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxHQUFULEVBQWNDLFVBQWQsRUFBMEJDLElBQTFCLFFBQXNDLEtBQXRDO0FBQ0EsU0FBU0MsUUFBVCxRQUF5QiwwQkFBekI7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxTQUFOLFNBQXdCSCxVQUF4QixDQUFtQztBQUNuQixhQUFWSSxVQUFVLEdBQUc7QUFDdEIsV0FBTztBQUNMQyxNQUFBQSxLQUFLLEVBQUU7QUFBRUMsUUFBQUEsSUFBSSxFQUFFQztBQUFSLE9BREY7QUFFTEMsTUFBQUEsS0FBSyxFQUFFO0FBQUVGLFFBQUFBLElBQUksRUFBRUc7QUFBUixPQUZGO0FBR0xDLE1BQUFBLEtBQUssRUFBRTtBQUFFSixRQUFBQSxJQUFJLEVBQUVLLE9BQVI7QUFBaUJDLFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQUhGO0FBSUxDLE1BQUFBLEtBQUssRUFBRTtBQUFFUCxRQUFBQSxJQUFJLEVBQUVLLE9BQVI7QUFBaUJDLFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQUpGO0FBS0xFLE1BQUFBLE1BQU0sRUFBRTtBQUFFUixRQUFBQSxJQUFJLEVBQUVLLE9BQVI7QUFBaUJDLFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQUxIO0FBTUxHLE1BQUFBLEtBQUssRUFBRTtBQUFFVCxRQUFBQSxJQUFJLEVBQUVLLE9BQVI7QUFBaUJD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LE9BQVYsQ0FBSixFQUF3QjtBQUN0QixXQUFLdkMsVUFBTCxDQUFnQkMsYUFBaEIsQ0FBOEIsVUFBOUIsRUFBMEN1QyxLQUExQyxDQUFnREMsV0FBaEQsQ0FBNEQsT0FBNUQsRUFBcUUsS0FBSzdELEtBQTFFO0FBQ0Q7O0FBQ0QsU0FBSzZDLGVBQUw7QUFDRDs7QUFwVHVDO0FBdVQxQ2pDLE1BQU0sQ0FBQ2tELGNBQVAsQ0FBc0JDLE1BQXRCLENBQTZCLFlBQTdCLEVBQTJDNUUsU0FBM0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3NzLCBMaXRFbGVtZW50LCBodG1sIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvY2xhc3MtbWFwJztcblxuLyoqXG4gKiBQb3BvdmVyIGNvbXBvbmVudFxuICpcbiAqICMjIERldGFpbHNcbiAqICogaGFzIEB0aGVtZSBmYWNldFxuICpcbiAqIEBhdHRyIHtTdHJpbmd9IGV2ZW50IC0gdGhlIGV2ZW50IHRoYXQgdHJpZ2dlcnMgdGhlIG9wZW5pbmcuXG4gKiBAYXR0ciB7U3RyaW5nfSBkZWxheSAtIHRoZSB0aW1lIGJlZm9yZSBjbG9zaW5nLCB1c2VmdWwgZm9yIGEgY2xpY2sgZXZlbnRcbiAqIEBhdHRyIHtTdHJpbmd9IGFycm93IC0gaWYgbmVlZCBhcnJvd1xuICogQGF0dHIge1N0cmluZ30gc21hbGwgLSBTbWFsbCBwb3BvdmVyXG4gKiBAYXR0ciB7U3RyaW5nfSBtZWRpdW0gLSBNZWRpdW0gcG9wb3ZlclxuICogQGF0dHIge1N0cmluZ30gbGFyZ2UgLSBMYXJnZSBwb3BvdmVyXG4gKiBAYXR0ciB7U3RyaW5nfSB3aWR0aCAtIFRoZSB3aWR0aCBvZiBwb3BvdmVyXG4gKiBAYXR0ciB7U3RyaW5nfSBwb3NpdGlvbiAtIFRoZSBwb3NpdGlvbiB0b3AsIHJpZ2h0LCBib3R0b20gb3IgbGVmdFxuICogQGF0dHIge0Jvb2xlYW59IGF1dG8gLSB0byBsZXQgdGhlIGNvbXBvbmVudCBjaG9vc2UgdGhlIHBvc2l0aW9uXG4gKlxuICogQGNzc3Byb3Age0NvbG9yfSBbLS1ndi1wb3BvdmVyLS1iZ2M9dmFyKC0tZ3YtdGhlbWUtbmV1dHJhbC1jb2xvci1saWdodGVyLCAjZmFmYWZhKV0gLSBCYWNrZ3JvdW5kIGNvbG9yXG4gKiBAY3NzcHJvcCB7Q29sb3J9IFstLWd2LXBvcG92ZXItLWM9dmFyKC0tZ3YtdGhlbWUtZm9udC1jb2xvci1kYXJrLCAjMjYyNjI2KV0gLSBDb2xvclxuICogQGNzc3Byb3Age0NvbG9yfSBbLS1ndi1wb3BvdmVyLS1iZGM9dmFyKC0tZ3YtdGhlbWUtbmV1dHJhbC1jb2xvciwgI2Y1ZjVmNSldIC0gQm9yZGVyIGNvbG9yXG4gKiBAY3NzcHJvcCB7TGVuZ3RofSBbLS1ndi1wb3BvdmVyLS1wPTAuNXJlbV0gLSBQYWRkaW5nXG4gKi9cbmV4cG9ydCBjbGFzcyBHdlBvcG92ZXIgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgc3RhdGljIGdldCBwcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBldmVudDogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICAgIGRlbGF5OiB7IHR5cGU6IE51bWJlciB9LFxuICAgICAgYXJyb3c6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgc21hbGw6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgbWVkaXVtOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGxhcmdlOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHdpZHRoOiB7IHR5cGU6IFN0cmluZyB9LFxuICAgICAgcG9zaXRpb246IHsgdHlwZTogU3RyaW5nLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBhdXRvOiB7IHR5cGU6IEJvb2xlYW4gfSxcbiAgICAgIF9vcGVuZWQ6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLy8gbGFuZ3VhZ2U9Q1NTXG4gICAgICBjc3NgXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgLnBvcG92ZXIge1xuICAgICAgICAgIC0tYmdjOiB2YXIoLS1ndi1wb3BvdmVyLS1iZ2MsIHZhcigtLWd2LXRoZW1lLW5ldXRyYWwtY29sb3ItbGlnaHRlciwgI2ZhZmFmYSkpO1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1ndi1wb3BvdmVyLS1jLCB2YXIoLS1ndi10aGVtZS1mb250LWNvbG9yLWRhcmssICMyNjI2MjYpKTtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmdjKTtcbiAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1ndi1wb3BvdmVyLS1wLCAwLjVyZW0pO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtwb3NpdGlvbj0nYm90dG9tJ10pIC5wb3BvdmVyIHtcbiAgICAgICAgICB0b3A6IGNhbGMoMTAwJSArIDAuNHJlbSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgICBib3gtc2hhZG93OiAxcHggMCAwIDAgdmFyKC0tZ3YtdGhlbWUtbmV1dHJhbC1jb2xvciwgI2Y1ZjVmNSksIDAgMnB4IDNweCB2YXIoLS1ndi10aGVtZS1uZXV0cmFsLWNvbG9yLWRhcmssICNiZmJmYmYpO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3Bvc2l0aW9uPSdib3R0b20nXVthcnJvd10pIC5wb3BvdmVyIHtcbiAgICAgICAgICB0b3A6IGNhbGMoMTAwJSArIDAuNHJlbSArIDEwcHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3Bvc2l0aW9uPSdib3R0b20nXVthcnJvd10pIC5hcnJvdyB7XG4gICAgICAgICAgdG9wOiBjYWxjKDEwMCUgLSA4cHgpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbcG9zaXRpb249J3RvcCddKSAucG9wb3ZlciB7XG4gICAgICAgICAgYm90dG9tOiBjYWxjKDEwMCUgKyAwLjRyZW0pO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgYm94LXNoYWRvdzogMXB4IDAgMCAwIHZhcigtLWd2LXRoZW1lLW5ldXRyYWwtY29sb3IsICNmNWY1ZjUpLCAwIC0ycHggM3B4IHZhcigtLWd2LXRoZW1lLW5ldXRyYWwtY29sb3ItZGFyaywgI2JmYmZiZik7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbcG9zaXRpb249J3RvcCddW2Fycm93XSkgLnBvcG92ZXIge1xuICAgICAgICAgIGJvdHRvbTogY2FsYygxMDAlICsgMC40cmVtICsgMTBweCk7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbcG9zaXRpb249J3RvcCddW2Fycm93XSkgLmFycm93IHtcbiAgICAgICAgICBib3R0b206IGNhbGMoMTAwJSAtIDhweCk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHJvdGF0ZSgxODBkZWcpO1xuICAgICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtwb3NpdGlvbj0nbGVmdCddKSAucG9wb3ZlciB7XG4gICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgIHJpZ2h0OiBjYWxjKDEwMCUgKyAwLjRyZW0pO1xuICAgICAgICAgIGJveC1zaGFkb3c6IC0xcHggMCAwIDAgdmFyKC0tZ3YtdGhlbWUtbmV1dHJhbC1jb2xvciwgI2Y1ZjVmNSksIC0xcHggMnB4IDNweCB2YXIoLS1ndi10aGVtZS1uZXV0cmFsLWNvbG9yLWRhcmssICNiZmJmYmYpO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3Bvc2l0aW9uPSdsZWZ0J11bYXJyb3ddKSAucG9wb3ZlciB7XG4gICAgICAgICAgcmlnaHQ6IGNhbGMoMTAwJSArIDAuNHJlbSArIDEwcHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3Bvc2l0aW9uPSdsZWZ0J11bYXJyb3ddKSAuYXJyb3cge1xuICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoOTBkZWcpO1xuICAgICAgICAgIHJpZ2h0OiBjYWxjKDEwMCUgLSA4cHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3Bvc2l0aW9uPSdyaWdodCddKSAucG9wb3ZlciB7XG4gICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgIGxlZnQ6IGNhbGMoMTAwJSArIDAuNHJlbSk7XG4gICAgICAgICAgYm94LXNoYWRvdzogMXB4IDAgMCAxcHggdmFyKC0tZ3YtdGhlbWUtbmV1dHJhbC1jb2xvciwgI2Y1ZjVmNSksIDFweCAxcHggMXB4IHZhcigtLWd2LXRoZW1lLW5ldXRyYWwtY29sb3ItZGFyaywgI2JmYmZiZik7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbcG9zaXRpb249J3JpZ2h0J11bYXJyb3ddKSAucG9wb3ZlciB7XG4gICAgICAgICAgbGVmdDogY2FsYygxMDAlICsgMC40cmVtICsgMTBweCk7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbcG9zaXRpb249J3JpZ2h0J11bYXJyb3ddKSAuYXJyb3cge1xuICAgICAgICAgIGxlZnQ6IGNhbGMoMTAwJSAtIDhweCk7XG4gICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSgtOTBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmlubGluZSAucG9wb3ZlciB7XG4gICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtzbWFsbF0pIC5wb3BvdmVyIHtcbiAgICAgICAgICB3aWR0aDogMjAwcHg7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbbWVkaXVtXSkgLnBvcG92ZXIge1xuICAgICAgICAgIHdpZHRoOiAzNTBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtsYXJnZV0pIC5wb3BvdmVyIHtcbiAgICAgICAgICB3aWR0aDogNTAwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuY29udGVudCB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAucG9wb3ZlcixcbiAgICAgICAgLmFycm93IHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZS1pbi1vdXQ7XG4gICAgICAgIH1cblxuICAgICAgICAub3BlbiAucG9wb3ZlcixcbiAgICAgICAgLm9wZW4gLmFycm93IHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIH1cblxuICAgICAgICAuY2xvc2UgLnBvcG92ZXIsXG4gICAgICAgIC5jbG9zZSAuYXJyb3cge1xuICAgICAgICB9XG5cbiAgICAgICAgLmFycm93IHtcbiAgICAgICAgICB3aWR0aDogMjVweDtcbiAgICAgICAgICBoZWlnaHQ6IDI1cHg7XG4gICAgICAgICAgei1pbmRleDogMTAxO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG5cbiAgICAgICAgLmFycm93OmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgd2lkdGg6IDEycHg7XG4gICAgICAgICAgaGVpZ2h0OiAxMnB4O1xuICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWd2LXBvcG92ZXItLWJnYywgdmFyKC0tZ3YtdGhlbWUtbmV1dHJhbC1jb2xvci1saWdodGVyLCAjZmFmYWZhKSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICAgICAgICAgIHRvcDogMTlweDtcbiAgICAgICAgICBsZWZ0OiA2cHg7XG4gICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZ3YtcG9wb3Zlci0tYmRjLCB2YXIoLS1ndi10aGVtZS1uZXV0cmFsLWNvbG9yLCAjZjVmNWY1KSk7XG4gICAgICAgIH1cbiAgICAgIGAsXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5ldmVudCA9ICdtb3VzZW92ZXInO1xuICAgIHRoaXMuX2Nsb3NlSGFuZGxlciA9IHRoaXMuX2Nsb3NlLmJpbmQodGhpcyk7XG4gICAgdGhpcy5kZWxheSA9IDA7XG4gICAgdGhpcy5hcnJvdyA9IGZhbHNlO1xuICAgIHRoaXMucG9zaXRpb24gPSAnYm90dG9tJztcbiAgICB0aGlzLmF1dG8gPSBmYWxzZTtcbiAgfVxuXG4gIF9vcGVuKGUpIHtcbiAgICBpZiAodGhpcy5ldmVudCA9PT0gJ2NsaWNrJykge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcy5ldmVudCwgdGhpcy5fY2xvc2VIYW5kbGVyKTtcbiAgICB9XG4gICAgdGhpcy5fb3BlbmVkID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5ldmVudCA9PT0gJ2NsaWNrJykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmV2ZW50LCB0aGlzLl9jbG9zZUhhbmRsZXIpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZWxheSA+IDApIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fY2xvc2Uoe30pLCB0aGlzLmRlbGF5KTtcbiAgICB9XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLl9jbG9zZSh7fSk7XG4gIH1cblxuICBfY2xvc2UoZSkge1xuICAgIGlmICh0aGlzLl9vcGVuZWQgJiYgKGUudGFyZ2V0ICE9PSB0aGlzLmZpcnN0RWxlbWVudENoaWxkIHx8IHRoaXMuZXZlbnQgIT09ICdjbGljaycpKSB7XG4gICAgICBjb25zdCBvcGVuRWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcub3BlbicpO1xuICAgICAgb3BlbkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnY2xvc2UnKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBvcGVuRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdjbG9zZScpO1xuICAgICAgICB0aGlzLl9vcGVuZWQgPSBmYWxzZTtcbiAgICAgIH0sIDIwMCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IGlubGluZSA9IHRoaXMud2lkdGggPT0gbnVsbCAmJiAhdGhpcy5zbWFsbCAmJiAhdGhpcy5tZWRpdW0gJiYgIXRoaXMubGFyZ2U7XG4gICAgY29uc3QgY2xhc3NlcyA9IHsgb3BlbjogdGhpcy5fb3BlbmVkLCBjb250ZW50OiB0cnVlLCBpbmxpbmUgfTtcbiAgICByZXR1cm4gaHRtbGAgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoY2xhc3Nlcyl9XCI+XG4gICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICAke3RoaXMuYXJyb3cgPyBodG1sYDxkaXYgY2xhc3M9XCJhcnJvd1wiPjwvZGl2PmAgOiAnJ31cbiAgICAgIDxkaXYgY2xhc3M9XCJwb3BvdmVyXCI+JHt0aGlzLnJlbmRlckNvbnRlbnQoKX08L2Rpdj5cbiAgICA8L2Rpdj5gO1xuICB9XG5cbiAgcmVuZGVyQ29udGVudCgpIHtcbiAgICByZXR1cm4gaHRtbGA8c2xvdCBuYW1lPVwicG9wb3ZlclwiPjwvc2xvdD5gO1xuICB9XG5cbiAgZmlyc3RVcGRhdGVkKF9jaGFuZ2VkUHJvcGVydGllcykge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKHRoaXMuZXZlbnQsIHRoaXMuX29wZW4uYmluZCh0aGlzKSk7XG4gICAgICBpZiAodGhpcy5ldmVudC5zdGFydHNXaXRoKCdtb3VzZScpICYmIHRoaXMuZGVsYXkgPT09IDApIHtcbiAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5fY2xvc2UuYmluZCh0aGlzKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBfZ2V0Q29udGVudFNpemUoKSB7XG4gICAgY29uc3QgcG9wb3ZlciA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcucG9wb3ZlcicpO1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogcG9wb3Zlci5vZmZzZXRXaWR0aCxcbiAgICAgIGhlaWdodDogcG9wb3Zlci5vZmZzZXRIZWlnaHQsXG4gICAgfTtcbiAgfVxuXG4gIF9nZXRQb3NpdGlvblBhZGRpbmcoKSB7XG4gICAgcmV0dXJuIDEwO1xuICB9XG5cbiAgX2dldENlbnRlclBvc2l0aW9uKCkge1xuICAgIHJldHVybiB7XG4gICAgICB4OiB0aGlzLnRhcmdldC54ICsgdGhpcy50YXJnZXQud2lkdGggLyAyICsgd2luZG93LnNjcm9sbFgsXG4gICAgICB5OiB0aGlzLnRhcmdldC55ICsgdGhpcy50YXJnZXQuaGVpZ2h0IC8gMiArIHdpbmRvdy5zY3JvbGxZLFxuICAgIH07XG4gIH1cblxuICBfdXBkYXRlUG9zaXRpb24oKSB7XG4gICAgaWYgKHRoaXMucG9zaXRpb24gIT0gbnVsbCAmJiB0aGlzLmF1dG8pIHtcbiAgICAgIGNvbnN0IHBvcG92ZXIgPSB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignLnBvcG92ZXInKTtcbiAgICAgIGlmIChwb3BvdmVyKSB7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGhpcy5maXJzdEVsZW1lbnRDaGlsZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICh0aGlzLnBvc2l0aW9uID09PSAndG9wJyAmJiAhdGhpcy5faGFzVG9wU3BhY2UoKSkgfHxcbiAgICAgICAgICAodGhpcy5wb3NpdGlvbiA9PT0gJ2JvdHRvbScgJiYgIXRoaXMuX2hhc0JvdHRvbVNwYWNlKCkpIHx8XG4gICAgICAgICAgKHRoaXMucG9zaXRpb24gPT09ICdsZWZ0JyAmJiAhdGhpcy5faGFzTGVmdFNwYWNlKCkpIHx8XG4gICAgICAgICAgKHRoaXMucG9zaXRpb24gPT09ICdyaWdodCcgJiYgIXRoaXMuX2hhc1JpZ2h0U3BhY2UoKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSBbdGhpcy5faGFzVG9wU3BhY2UoKSwgdGhpcy5faGFzUmlnaHRTcGFjZSgpLCB0aGlzLl9oYXNCb3R0b21TcGFjZSgpLCB0aGlzLl9oYXNMZWZ0U3BhY2UoKV0uaW5kZXhPZih0cnVlKTtcbiAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J11baW5kZXhdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9nZXRNYXhYKCkge1xuICAgIHJldHVybiB3aW5kb3cuaW5uZXJXaWR0aCAtIHRoaXMuX2dldFBvc2l0aW9uUGFkZGluZygpO1xuICB9XG5cbiAgX2dldE1heFkoKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lckhlaWdodCAtIHRoaXMuX2dldFBvc2l0aW9uUGFkZGluZygpO1xuICB9XG5cbiAgX2hhc0JvdHRvbVNwYWNlKCkge1xuICAgIGNvbnN0IHkgPSB0aGlzLnRhcmdldC55ICsgdGhpcy50YXJnZXQuaGVpZ2h0ICsgdGhpcy5fZ2V0Q29udGVudFNpemUoKS5oZWlnaHQgKyB0aGlzLl9nZXRQb3NpdGlvblBhZGRpbmcoKTtcblxuICAgIHJldHVybiB5IDw9IHRoaXMuX2dldE1heFkoKTtcbiAgfVxuXG4gIF9oYXNSaWdodFNwYWNlKCkge1xuICAgIGNvbnN0IHkgPSB0aGlzLnRhcmdldC54ICsgdGhpcy50YXJnZXQud2lkdGggKyB0aGlzLl9nZXRDb250ZW50U2l6ZSgpLndpZHRoICsgdGhpcy5fZ2V0UG9zaXRpb25QYWRkaW5nKCk7XG5cbiAgICByZXR1cm4geSA8PSB0aGlzLl9nZXRNYXhYKCk7XG4gIH1cblxuICBfaGFzVG9wU3BhY2UoKSB7XG4gICAgY29uc3QgeSA9IHRoaXMudGFyZ2V0LnkgLSB0aGlzLl9nZXRDb250ZW50U2l6ZSgpLmhlaWdodCAtIHRoaXMuX2dldFBvc2l0aW9uUGFkZGluZygpO1xuXG4gICAgcmV0dXJuIHkgPj0gdGhpcy5fZ2V0UG9zaXRpb25QYWRkaW5nKCk7XG4gIH1cblxuICBfaGFzTGVmdFNwYWNlKCkge1xuICAgIGNvbnN0IHkgPSB0aGlzLnRhcmdldC54IC0gdGhpcy5fZ2V0Q29udGVudFNpemUoKS53aWR0aCAtIHRoaXMuX2dldFBvc2l0aW9uUGFkZGluZygpO1xuXG4gICAgcmV0dXJuIHkgPj0gdGhpcy5fZ2V0UG9zaXRpb25QYWRkaW5nKCk7XG4gIH1cblxuICB1cGRhdGVkKHByb3BzKSB7XG4gICAgaWYgKHByb3BzLmhhcygnd2lkdGgnKSkge1xuICAgICAgdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJy5wb3BvdmVyJykuc3R5bGUuc2V0UHJvcGVydHkoJ3dpZHRoJywgdGhpcy53aWR0aCk7XG4gICAgfVxuICAgIHRoaXMuX3VwZGF0ZVBvc2l0aW9uKCk7XG4gIH1cbn1cblxud2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZ3YtcG9wb3ZlcicsIEd2UG9wb3Zlcik7XG4iXX0=
|
|
@@ -20,10 +20,12 @@ import { i18n } from '../lib/i18n';
|
|
|
20
20
|
import { ItemResource } from '../mixins/item-resource';
|
|
21
21
|
import { getTitle, getDescription, getVersion, getOwner } from '../lib/item';
|
|
22
22
|
import { truncate } from '../lib/utils';
|
|
23
|
+
|
|
23
24
|
import '../atoms/gv-image';
|
|
24
25
|
import '../atoms/gv-button';
|
|
25
26
|
import '../molecules/gv-rating';
|
|
26
27
|
import '../molecules/gv-metrics';
|
|
28
|
+
|
|
27
29
|
/**
|
|
28
30
|
* Promote component
|
|
29
31
|
*
|
|
@@ -42,50 +44,166 @@ import '../molecules/gv-metrics';
|
|
|
42
44
|
* @cssprop {Length} [--gv-promote-button--p=19px 80px] - Button padding
|
|
43
45
|
* @cssprop {Length} [--gv-promote-button--fz=var(--gv-theme-font-size-l, 16px)] - Button font size
|
|
44
46
|
*/
|
|
45
|
-
|
|
46
47
|
export class GvPromote extends ItemResource(LitElement) {
|
|
47
48
|
static get properties() {
|
|
48
|
-
return {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
49
|
+
return {
|
|
50
|
+
...super.properties,
|
|
51
|
+
limit: { type: Number },
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
static get styles() {
|
|
56
|
-
return [
|
|
57
|
-
|
|
56
|
+
return [
|
|
57
|
+
...super.styles,
|
|
58
|
+
// language=CSS
|
|
59
|
+
css`
|
|
60
|
+
:host {
|
|
61
|
+
box-sizing: border-box;
|
|
62
|
+
display: inline-block;
|
|
63
|
+
margin: 0.2rem;
|
|
64
|
+
vertical-align: middle;
|
|
65
|
+
--gv-button--p: var(--gv-promote-button--p, 19px 80px);
|
|
66
|
+
--gv-button--fz: var(--gv-promote-button--fz, var(--gv-theme-font-size-l, 16px));
|
|
67
|
+
--gv-preview-button: 'none';
|
|
68
|
+
width: 100%;
|
|
69
|
+
--gv-icon--s: 20px;
|
|
70
|
+
--gv-rating--s: 20px;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
gv-identity-picture {
|
|
74
|
+
height: var(--gv-promote-image--h, 300px);
|
|
75
|
+
width: var(--gv-promote-image--w, 300px);
|
|
76
|
+
--gv-image--of: contain;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.container {
|
|
80
|
+
display: flex;
|
|
81
|
+
min-height: 420px;
|
|
82
|
+
max-height: 420px;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.image {
|
|
86
|
+
background-color: var(--gv-promote-image--bgc, var(--gv-theme-color-light, #86c3d0));
|
|
87
|
+
min-height: 0;
|
|
88
|
+
min-width: 0;
|
|
89
|
+
width: 480px;
|
|
90
|
+
display: flex;
|
|
91
|
+
align-items: center;
|
|
92
|
+
justify-content: center;
|
|
93
|
+
border-radius: 4px 0 0 4px;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.title {
|
|
97
|
+
text-transform: capitalize;
|
|
98
|
+
min-height: 32px;
|
|
99
|
+
display: flex;
|
|
100
|
+
align-items: center;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.title h2 {
|
|
104
|
+
font-size: var(--gv-theme-font-size-xl, 26px);
|
|
105
|
+
flex: 1;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.title .version {
|
|
109
|
+
font-size: var(--gv-theme-font-size-s, 12px);
|
|
110
|
+
color: var(--gv-theme-neutral-color-dark, #d9d9d9);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.owner {
|
|
114
|
+
--gv-icon--c: var(--gv-theme-neutral-color-dark, #bfbfbf);
|
|
115
|
+
--gv-icon--s: 16px;
|
|
116
|
+
color: var(--gv-theme-neutral-color-dark, #bfbfbf);
|
|
117
|
+
display: flex;
|
|
118
|
+
padding-bottom: 2px;
|
|
119
|
+
margin-top: -8px;
|
|
120
|
+
line-height: initial;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.content {
|
|
124
|
+
flex: 1;
|
|
125
|
+
padding: 1.5rem;
|
|
126
|
+
background-color: var(--gv-promote--bgc, var(--gv-theme-neutral-color-lightest, #ffffff));
|
|
127
|
+
color: var(--gv-theme-font-color-dark, #262626);
|
|
128
|
+
font-size: var(--gv-theme-font-size-l, 16px);
|
|
129
|
+
line-height: 24px;
|
|
130
|
+
border-radius: 0 4px 4px 0;
|
|
131
|
+
display: flex;
|
|
132
|
+
flex-direction: column;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.description {
|
|
136
|
+
margin: 24px 0px;
|
|
137
|
+
flex-grow: 1;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.description-large {
|
|
141
|
+
text-align: justify;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.infos {
|
|
145
|
+
display: flex;
|
|
146
|
+
justify-content: flex-end;
|
|
147
|
+
margin: 0.5rem 0.2rem;
|
|
148
|
+
align-items: center;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
gv-metrics {
|
|
152
|
+
display: flex;
|
|
153
|
+
height: 100%;
|
|
154
|
+
justify-content: flex-end;
|
|
155
|
+
align-items: stretch;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.labels {
|
|
159
|
+
text-align: right;
|
|
160
|
+
}
|
|
161
|
+
`,
|
|
162
|
+
];
|
|
58
163
|
}
|
|
59
164
|
|
|
60
165
|
_onClick() {
|
|
61
|
-
dispatchCustomEvent(this, 'click', {
|
|
62
|
-
data: this._item,
|
|
63
|
-
href: this.href
|
|
64
|
-
});
|
|
166
|
+
dispatchCustomEvent(this, 'click', { data: this._item, href: this.href });
|
|
65
167
|
}
|
|
66
168
|
|
|
67
169
|
render() {
|
|
68
170
|
if (this._invisible) {
|
|
69
171
|
return '';
|
|
70
172
|
}
|
|
71
|
-
|
|
72
173
|
const owner = getOwner(this._item);
|
|
73
|
-
return html`<div class="container">
|
|
74
|
-
skeleton: this._skeleton,
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
174
|
+
return html`<div class="container">
|
|
175
|
+
<div class="${classMap({ skeleton: this._skeleton, image: true })}">${this._renderImage()}</div>
|
|
176
|
+
<div class="content">
|
|
177
|
+
${this._error && !this._skeleton
|
|
178
|
+
? html`<p class="description error">${i18n('gv-promote.error')}</p>`
|
|
179
|
+
: html`
|
|
180
|
+
${this._empty && !this._skeleton
|
|
181
|
+
? html`<p class="description empty">${i18n('gv-promote.empty')}</p>`
|
|
182
|
+
: html` <div class=${classMap({ skeleton: this._skeleton, title: true })}>
|
|
183
|
+
<h2>${getTitle(this._item)}</h2>
|
|
184
|
+
<span class="version">${getVersion(this._item)}</span>
|
|
185
|
+
</div>
|
|
186
|
+
${owner != null && owner.trim().length > 0
|
|
187
|
+
? html`<div class="owner"><gv-icon shape="general:user" size="8px"></gv-icon>${owner}</div>`
|
|
188
|
+
: ''}
|
|
189
|
+
<p
|
|
190
|
+
class=${classMap({
|
|
191
|
+
skeleton: this._skeleton,
|
|
192
|
+
description: true,
|
|
193
|
+
'description-large': getDescription(this._item).split(' ').length > 10,
|
|
194
|
+
})}
|
|
195
|
+
>
|
|
196
|
+
${truncate(getDescription(this._item), this.limit)}
|
|
197
|
+
</p>
|
|
198
|
+
<div class=${classMap({ skeleton: this._skeleton, infos: true })}>${this._renderMetricsWithRating()}</div>
|
|
199
|
+
<div class="labels">${this._renderLabels(true)}</div>
|
|
200
|
+
<gv-button ?skeleton=${this._skeleton} .href="${this.href}" @click="${this._onClick}"
|
|
201
|
+
>${i18n('gv-promote.view')}</gv-button
|
|
202
|
+
>`}
|
|
203
|
+
`}
|
|
204
|
+
</div>
|
|
205
|
+
</div>`;
|
|
87
206
|
}
|
|
88
|
-
|
|
89
207
|
}
|
|
208
|
+
|
|
90
209
|
window.customElements.define('gv-promote', GvPromote);
|
|
91
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL21vbGVjdWxlcy9ndi1wcm9tb3RlLmpzIl0sIm5hbWVzIjpbImNzcyIsIkxpdEVsZW1lbnQiLCJodG1sIiwiY2xhc3NNYXAiLCJkaXNwYXRjaEN1c3RvbUV2ZW50IiwiaTE4biIsIkl0ZW1SZXNvdXJjZSIsImdldFRpdGxlIiwiZ2V0RGVzY3JpcHRpb24iLCJnZXRWZXJzaW9uIiwiZ2V0T3duZXIiLCJ0cnVuY2F0ZSIsIkd2UHJvbW90ZSIsInByb3BlcnRpZXMiLCJsaW1pdCIsInR5cGUiLCJOdW1iZXIiLCJzdHlsZXMiLCJfb25DbGljayIsImRhdGEiLCJfaXRlbSIsImhyZWYiLCJyZW5kZXIiLCJfaW52aXNpYmxlIiwib3duZXIiLCJza2VsZXRvbiIsIl9za2VsZXRvbiIsImltYWdlIiwiX3JlbmRlckltYWdlIiwiX2Vycm9yIiwiX2VtcHR5IiwidGl0bGUiLCJ0cmltIiwibGVuZ3RoIiwiZGVzY3JpcHRpb24iLCJzcGxpdCIsImluZm9zIiwiX3JlbmRlck1ldHJpY3NXaXRoUmF0aW5nIiwiX3JlbmRlckxhYmVscyIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxHQUFULEVBQWNDLFVBQWQsRUFBMEJDLElBQTFCLFFBQXNDLEtBQXRDO0FBQ0EsU0FBU0MsUUFBVCxRQUF5QiwwQkFBekI7QUFDQSxTQUFTQyxtQkFBVCxRQUFvQyxlQUFwQztBQUNBLFNBQVNDLElBQVQsUUFBcUIsYUFBckI7QUFDQSxTQUFTQyxZQUFULFFBQTZCLHlCQUE3QjtBQUNBLFNBQVNDLFFBQVQsRUFBbUJDLGNBQW5CLEVBQW1DQyxVQUFuQyxFQUErQ0MsUUFBL0MsUUFBK0QsYUFBL0Q7QUFDQSxTQUFTQyxRQUFULFFB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Y0FITixHQUxELGdCQUFYO0FBZ0NEOztBQS9KcUQ7QUFrS3hEa0MsTUFBTSxDQUFDQyxjQUFQLENBQXNCQyxNQUF0QixDQUE2QixZQUE3QixFQUEyQzdCLFNBQTNDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IGNzcywgTGl0RWxlbWVudCwgaHRtbCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjbGFzc01hcCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL2NsYXNzLW1hcCc7XG5pbXBvcnQgeyBkaXNwYXRjaEN1c3RvbUV2ZW50IH0gZnJvbSAnLi4vbGliL2V2ZW50cyc7XG5pbXBvcnQgeyBpMThuIH0gZnJvbSAnLi4vbGliL2kxOG4nO1xuaW1wb3J0IHsgSXRlbVJlc291cmNlIH0gZnJvbSAnLi4vbWl4aW5zL2l0ZW0tcmVzb3VyY2UnO1xuaW1wb3J0IHsgZ2V0VGl0bGUsIGdldERlc2NyaXB0aW9uLCBnZXRWZXJzaW9uLCBnZXRPd25lciB9IGZyb20gJy4uL2xpYi9pdGVtJztcbmltcG9ydCB7IHRydW5jYXRlIH0gZnJvbSAnLi4vbGliL3V0aWxzJztcblxuaW1wb3J0ICcuLi9hdG9tcy9ndi1pbWFnZSc7XG5pbXBvcnQgJy4uL2F0b21zL2d2LWJ1dHRvbic7XG5pbXBvcnQgJy4uL21vbGVjdWxlcy9ndi1yYXRpbmcnO1xuaW1wb3J0ICcuLi9tb2xlY3VsZXMvZ3YtbWV0cmljcyc7XG5cbi8qKlxuICogUHJvbW90ZSBjb21wb25lbnRcbiAqXG4gKiAjIyBEZXRhaWxzXG4gKiAqIGhhcyBAdGhlbWUgZmFjZXRcbiAqXG4gKiBAZmlyZXMgZ3YtcHJvbW90ZTpjbGljayAtIFdoZW4gY2xpY2sgb24gYnV0dG9uIGZvciB2aWV3IGl0ZW1cbiAqIEBmaXJlcyBndi10YWc6Y2xpY2sgLSBXaGVuIG9uZSBvZiB0aGUgbGFiZWwgaXMgY2xpY2tlZFxuICpcbiAqIEBhdHRyIHtQcm9taXNlPGFueT59IGl0ZW0gLSBhbiBpdGVtLlxuICpcbiAqIEBjc3Nwcm9wIHtDb2xvcn0gWy0tZ3YtcHJvbW90ZS1pbWFnZS0tYmdjPXZhcigtLWd2LXRoZW1lLWNvbG9yLWxpZ2h0LCAjODZjM2QwKV0gLSBJbWFnZSBiYWNrZ3JvdW5kIGNvbG9yXG4gKiBAY3NzcHJvcCB7Q29sb3J9IFstLWd2LXByb21vdGUtLWJnYz12YXIoLS1ndi10aGVtZS1uZXV0cmFsLWNvbG9yLWxpZ2h0ZXN0LCAjZmZmZmZmKV0gLSBCYWNrZ3JvdW5kIGNvbG9yXG4gKiBAY3NzcHJvcCB7TGVuZ3RofSBbLS1ndi1wcm9tb3RlLWltYWdlLS1oPTMwMHB4XSAtIEltYWdlIGhlaWdodFxuICogQGNzc3Byb3Age0xlbmd0aH0gWy0tZ3YtcHJvbW90ZS1pbWFnZS0tdz0zMDBweF0gLSBJbWFnZSB3aWR0aFxuICogQGNzc3Byb3Age0xlbmd0aH0gWy0tZ3YtcHJvbW90ZS1idXR0b24tLXA9MTlweCA4MHB4XSAtIEJ1dHRvbiBwYWRkaW5nXG4gKiBAY3NzcHJvcCB7TGVuZ3RofSBbLS1ndi1wcm9tb3RlLWJ1dHRvbi0tZno9dmFyKC0tZ3YtdGhlbWUtZm9udC1zaXplLWwsIDE2cHgpXSAtIEJ1dHRvbiBmb250IHNpemVcbiAqL1xuZXhwb3J0IGNsYXNzIEd2UHJvbW90ZSBleHRlbmRzIEl0ZW1SZXNvdXJjZShMaXRFbGVtZW50KSB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIucHJvcGVydGllcyxcbiAgICAgIGxpbWl0OiB7IHR5cGU6IE51bWJlciB9LFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uc3VwZXIuc3R5bGVzLFxuICAgICAgLy8gbGFuZ3VhZ2U9Q1NTXG4gICAgICBjc3NgXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICBtYXJnaW46IDAuMnJlbTtcbiAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgIC0tZ3YtYnV0dG9uLS1wOiB2YXIoLS1ndi1wcm9tb3RlLWJ1dHRvbi0tcCwgMTlweCA4MHB4KTtcbiAgICAgICAgICAtLWd2LWJ1dHRvbi0tZno6IHZhcigtLWd2LXByb21vdGUtYnV0dG9uLS1meiwgdmFyKC0tZ3YtdGhlbWUtZm9udC1zaXplLWwsIDE2cHgpKTtcbiAgICAgICAgICAtLWd2LXByZXZpZXctYnV0dG9uOiAnbm9uZSc7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgLS1ndi1pY29uLS1zOiAyMHB4O1xuICAgICAgICAgIC0tZ3YtcmF0aW5nLS1zOiAyMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgZ3YtaWRlbnRpdHktcGljdHVyZSB7XG4gICAgICAgICAgaGVpZ2h0OiB2YXIoLS1ndi1wcm9tb3RlLWltYWdlLS1oLCAzMDBweCk7XG4gICAgICAgICAgd2lkdGg6IHZhcigtLWd2LXByb21vdGUtaW1hZ2UtLXcsIDMwMHB4KTtcbiAgICAgICAgICAtLWd2LWltYWdlLS1vZjogY29udGFpbjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb250YWluZXIge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgbWluLWhlaWdodDogNDIwcHg7XG4gICAgICAgICAgbWF4LWhlaWdodDogNDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuaW1hZ2Uge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWd2LXByb21vdGUtaW1hZ2UtLWJnYywgdmFyKC0tZ3YtdGhlbWUtY29sb3ItbGlnaHQsICM4NmMzZDApKTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgICB3aWR0aDogNDgwcHg7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweCAwIDAgNHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnRpdGxlIHtcbiAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiAzMnB4O1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC50aXRsZSBoMiB7XG4gICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1ndi10aGVtZS1mb250LXNpemUteGwsIDI2cHgpO1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAudGl0bGUgLnZlcnNpb24ge1xuICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZ3YtdGhlbWUtZm9udC1zaXplLXMsIDEycHgpO1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1ndi10aGVtZS1uZXV0cmFsLWNvbG9yLWRhcmssICNkOWQ5ZDkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLm93bmVyIHtcbiAgICAgICAgICAtLWd2LWljb24tLWM6IHZhcigtLWd2LXRoZW1lLW5ldXRyYWwtY29sb3ItZGFyaywgI2JmYmZiZik7XG4gICAgICAgICAgLS1ndi1pY29uLS1zOiAxNnB4O1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1ndi10aGVtZS1uZXV0cmFsLWNvbG9yLWRhcmssICNiZmJmYmYpO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgcGFkZGluZy1ib3R0b206IDJweDtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAtOHB4O1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiBpbml0aWFsO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRlbnQge1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWd2LXByb21vdGUtLWJnYywgdmFyKC0tZ3YtdGhlbWUtbmV1dHJhbC1jb2xvci1saWdodGVzdCwgI2ZmZmZmZikpO1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1ndi10aGVtZS1mb250LWNvbG9yLWRhcmssICMyNjI2MjYpO1xuICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZ3YtdGhlbWUtZm9udC1zaXplLWwsIDE2cHgpO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAgNHB4IDRweCAwO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgbWFyZ2luOiAyNHB4IDBweDtcbiAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAuZGVzY3JpcHRpb24tbGFyZ2Uge1xuICAgICAgICAgIHRleHQtYWxpZ246IGp1c3RpZnk7XG4gICAgICAgIH1cblxuICAgICAgICAuaW5mb3Mge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgICBtYXJnaW46IDAuNXJlbSAwLjJyZW07XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LW1ldHJpY3Mge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgICAgIH1cblxuICAgICAgICAubGFiZWxzIHtcbiAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICBdO1xuICB9XG5cbiAgX29uQ2xpY2soKSB7XG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnY2xpY2snLCB7IGRhdGE6IHRoaXMuX2l0ZW0sIGhyZWY6IHRoaXMuaHJlZiB9KTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5faW52aXNpYmxlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IG93bmVyID0gZ2V0T3duZXIodGhpcy5faXRlbSk7XG4gICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyBza2VsZXRvbjogdGhpcy5fc2tlbGV0b24sIGltYWdlOiB0cnVlIH0pfVwiPiR7dGhpcy5fcmVuZGVySW1hZ2UoKX08L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgICR7dGhpcy5fZXJyb3IgJiYgIXRoaXMuX3NrZWxldG9uXG4gICAgICAgICAgPyBodG1sYDxwIGNsYXNzPVwiZGVzY3JpcHRpb24gZXJyb3JcIj4ke2kxOG4oJ2d2LXByb21vdGUuZXJyb3InKX08L3A+YFxuICAgICAgICAgIDogaHRtbGBcbiAgICAgICAgICAgICAgJHt0aGlzLl9lbXB0eSAmJiAhdGhpcy5fc2tlbGV0b25cbiAgICAgICAgICAgICAgICA/IGh0bWxgPHAgY2xhc3M9XCJkZXNjcmlwdGlvbiBlbXB0eVwiPiR7aTE4bignZ3YtcHJvbW90ZS5lbXB0eScpfTwvcD5gXG4gICAgICAgICAgICAgICAgOiBodG1sYCA8ZGl2IGNsYXNzPSR7Y2xhc3NNYXAoeyBza2VsZXRvbjogdGhpcy5fc2tlbGV0b24sIHRpdGxlOiB0cnVlIH0pfT5cbiAgICAgICAgICAgICAgICAgICAgICA8aDI+JHtnZXRUaXRsZSh0aGlzLl9pdGVtKX08L2gyPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmVyc2lvblwiPiR7Z2V0VmVyc2lvbih0aGlzLl9pdGVtKX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAke293bmVyICE9IG51bGwgJiYgb3duZXIudHJpbSgpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICA/IGh0bWxgPGRpdiBjbGFzcz1cIm93bmVyXCI+PGd2LWljb24gc2hhcGU9XCJnZW5lcmFsOnVzZXJcIiBzaXplPVwiOHB4XCI+PC9ndi1pY29uPiR7b3duZXJ9PC9kaXY+YFxuICAgICAgICAgICAgICAgICAgICAgIDogJyd9XG4gICAgICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9JHtjbGFzc01hcCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBza2VsZXRvbjogdGhpcy5fc2tlbGV0b24sXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZXNjcmlwdGlvbi1sYXJnZSc6IGdldERlc2NyaXB0aW9uKHRoaXMuX2l0ZW0pLnNwbGl0KCcgJykubGVuZ3RoID4gMTAsXG4gICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAke3RydW5jYXRlKGdldERlc2NyaXB0aW9uKHRoaXMuX2l0ZW0pLCB0aGlzLmxpbWl0KX1cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSR7Y2xhc3NNYXAoeyBza2VsZXRvbjogdGhpcy5fc2tlbGV0b24sIGluZm9zOiB0cnVlIH0pfT4ke3RoaXMuX3JlbmRlck1ldHJpY3NXaXRoUmF0aW5nKCl9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbHNcIj4ke3RoaXMuX3JlbmRlckxhYmVscyh0cnVlKX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGd2LWJ1dHRvbiA/c2tlbGV0b249JHt0aGlzLl9za2VsZXRvbn0gLmhyZWY9XCIke3RoaXMuaHJlZn1cIiBAY2xpY2s9XCIke3RoaXMuX29uQ2xpY2t9XCJcbiAgICAgICAgICAgICAgICAgICAgICA+JHtpMThuKCdndi1wcm9tb3RlLnZpZXcnKX08L2d2LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICA+YH1cbiAgICAgICAgICAgIGB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5gO1xuICB9XG59XG5cbndpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2d2LXByb21vdGUnLCBHdlByb21vdGUpO1xuIl19
|