@vacayou/tripfusion-js-sdk 1.3.0 → 1.9.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/README.md +3 -4
- package/package.json +34 -23
- package/dist/index.html +0 -49
- package/dist/main.js +0 -1359
package/dist/main.js
DELETED
|
@@ -1,1359 +0,0 @@
|
|
|
1
|
-
/******/ (() => { // webpackBootstrap
|
|
2
|
-
/******/ "use strict";
|
|
3
|
-
/******/ var __webpack_modules__ = ({
|
|
4
|
-
|
|
5
|
-
/***/ "./node_modules/css-loader/dist/cjs.js!./src/styles.css":
|
|
6
|
-
/*!**************************************************************!*\
|
|
7
|
-
!*** ./node_modules/css-loader/dist/cjs.js!./src/styles.css ***!
|
|
8
|
-
\**************************************************************/
|
|
9
|
-
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
10
|
-
|
|
11
|
-
__webpack_require__.r(__webpack_exports__);
|
|
12
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
13
|
-
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
14
|
-
/* harmony export */ });
|
|
15
|
-
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
|
|
16
|
-
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
17
|
-
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
|
|
18
|
-
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
19
|
-
// Imports
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
23
|
-
___CSS_LOADER_EXPORT___.push([module.id, "@import url(https://use.typekit.net/sag8ceb.css);"]);
|
|
24
|
-
// Module
|
|
25
|
-
___CSS_LOADER_EXPORT___.push([module.id, `#tripfusion-loader {
|
|
26
|
-
color: white;
|
|
27
|
-
margin-right: -50%;
|
|
28
|
-
position: absolute;
|
|
29
|
-
top: 50%;
|
|
30
|
-
left: 50%;
|
|
31
|
-
font-family: futura-lt-w01-book, futura-lt-w05-book, Arial, Helvetica, sans-serif;
|
|
32
|
-
transform: translate(-50%, -50%);
|
|
33
|
-
}
|
|
34
|
-
#tripfusion-loader span {
|
|
35
|
-
font-weight: bold;
|
|
36
|
-
font-size: 1.3rem;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
#tripfusion-resume-button {
|
|
40
|
-
position: fixed;
|
|
41
|
-
overflow: hidden;
|
|
42
|
-
cursor: pointer;
|
|
43
|
-
display: flex;
|
|
44
|
-
justify-content: space-evenly;
|
|
45
|
-
align-items: center;
|
|
46
|
-
padding: 12px 32px;
|
|
47
|
-
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.25), 0px 4px 4px rgba(0, 0, 0, 0.1);
|
|
48
|
-
right: 30px;
|
|
49
|
-
z-index: 100000000000;
|
|
50
|
-
bottom: 40px;
|
|
51
|
-
border: none;
|
|
52
|
-
transform: translateX(400px);
|
|
53
|
-
background-color: #092b43;
|
|
54
|
-
border-radius: 23px;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
#tripfusion-resume-button span {
|
|
58
|
-
display: block !important;
|
|
59
|
-
font-family: sweet-sans-pro, sans-serif;
|
|
60
|
-
font-size: 1rem;
|
|
61
|
-
font-weight: 700;
|
|
62
|
-
line-height: 1.2;
|
|
63
|
-
letter-spacing: 1.5px;
|
|
64
|
-
text-transform: uppercase !important;
|
|
65
|
-
color: white !important;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
#tripfusion-widget-wrapper {
|
|
69
|
-
background: rgba(0, 0, 0, 0);
|
|
70
|
-
position: fixed;
|
|
71
|
-
top: 0;
|
|
72
|
-
right: 0;
|
|
73
|
-
width: 100%;
|
|
74
|
-
transition: background 0.5s ease-out;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
#tripfusion-widget {
|
|
78
|
-
position: absolute;
|
|
79
|
-
width: 100%;
|
|
80
|
-
height: 100%;
|
|
81
|
-
top: 0px;
|
|
82
|
-
right: 0px;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
#tripfusion-widget-inner-wrapper {
|
|
86
|
-
position: fixed;
|
|
87
|
-
display: flex;
|
|
88
|
-
flex-direction: column;
|
|
89
|
-
min-width: 320px;
|
|
90
|
-
width: 100%;
|
|
91
|
-
height: 100%;
|
|
92
|
-
right: 0px;
|
|
93
|
-
bottom: 0px;
|
|
94
|
-
background: white;
|
|
95
|
-
border-radius: 8px;
|
|
96
|
-
box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.2);
|
|
97
|
-
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
|
|
98
|
-
font-weight: 400;
|
|
99
|
-
font-size: 1rem;
|
|
100
|
-
line-height: 1.5;
|
|
101
|
-
letter-spacing: 0.00938em;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
@media (min-width: 768px) {
|
|
105
|
-
#tripfusion-widget-inner-wrapper {
|
|
106
|
-
height: calc(100% - 40px);
|
|
107
|
-
right: 20px;
|
|
108
|
-
bottom: 20px;
|
|
109
|
-
width: 500px;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
#tripfusion-widget-header {
|
|
114
|
-
height: 60px;
|
|
115
|
-
background-color: #092b43;
|
|
116
|
-
border-bottom: 1px solid #f1f1f1;
|
|
117
|
-
padding: 0 16px 0 16px;
|
|
118
|
-
display: flex;
|
|
119
|
-
justify-content: space-between;
|
|
120
|
-
align-items: center;
|
|
121
|
-
color: white;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
#tripfusion-widget-iframe {
|
|
125
|
-
height: 100%;
|
|
126
|
-
border: none;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
#tripfusion-widget-header-title {
|
|
130
|
-
font-family: sweet-sans-pro, sans-serif;
|
|
131
|
-
line-height: 1.2;
|
|
132
|
-
font-weight: 700;
|
|
133
|
-
font-size: 1rem;
|
|
134
|
-
letter-spacing: 1.5px;
|
|
135
|
-
text-transform: uppercase;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
#tripfusion-widget-close-button {
|
|
139
|
-
overflow: hidden;
|
|
140
|
-
position: relative;
|
|
141
|
-
border: none;
|
|
142
|
-
padding: 0;
|
|
143
|
-
width: 2em;
|
|
144
|
-
height: 2em;
|
|
145
|
-
border-radius: 50%;
|
|
146
|
-
background: transparent;
|
|
147
|
-
font: inherit;
|
|
148
|
-
text-indent: 100%;
|
|
149
|
-
cursor: pointer;
|
|
150
|
-
|
|
151
|
-
&:focus {
|
|
152
|
-
outline: solid 0 transparent;
|
|
153
|
-
background-color: rgba(0, 0, 0, 0.04);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
&:hover {
|
|
157
|
-
background-color: rgba(0, 0, 0, 0.04);
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
&:before,
|
|
161
|
-
&:after {
|
|
162
|
-
position: absolute;
|
|
163
|
-
top: 25%;
|
|
164
|
-
left: calc(50% - 0.0625em);
|
|
165
|
-
width: 0.125em;
|
|
166
|
-
height: 50%;
|
|
167
|
-
border-radius: 0.125em;
|
|
168
|
-
transform: rotate(45deg);
|
|
169
|
-
background: currentcolor;
|
|
170
|
-
color: white;
|
|
171
|
-
content: "";
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
&:after {
|
|
175
|
-
transform: rotate(-45deg);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
.dismiss-btn-slide-in {
|
|
180
|
-
-webkit-transition: 500ms;
|
|
181
|
-
-moz-transition: 500ms;
|
|
182
|
-
transition: 500ms;
|
|
183
|
-
transform: translateX(0) !important;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
.dismiss-btn-slide-out {
|
|
187
|
-
-webkit-transition: 500ms;
|
|
188
|
-
-moz-transition: 500ms;
|
|
189
|
-
transition: 500ms;
|
|
190
|
-
transform: translateX(400px) !important;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
.dismiss-btn-slide-out span {
|
|
194
|
-
display: none;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
.dismiss-btn-resize-in {
|
|
198
|
-
width: 46px !important;
|
|
199
|
-
height: 46px !important;
|
|
200
|
-
transition: 500ms;
|
|
201
|
-
right: 30px !important;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
.dismiss-btn-resize-in span {
|
|
205
|
-
display: none;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
.dismiss-btn-resize-in:hover {
|
|
209
|
-
width: 217px !important;
|
|
210
|
-
height: 46px !important;
|
|
211
|
-
transition: all 300ms linear;
|
|
212
|
-
cursor: pointer;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
.dismiss-btn-resize-in:hover span {
|
|
216
|
-
display: inline;
|
|
217
|
-
height: 20px !important;
|
|
218
|
-
overflow: hidden;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
.dismiss-btn-resize-out {
|
|
222
|
-
width: 46px !important;
|
|
223
|
-
height: 46px !important;
|
|
224
|
-
transition: 500ms;
|
|
225
|
-
right: -100px !important;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
.slide-in {
|
|
229
|
-
transform: translateX(100%);
|
|
230
|
-
-webkit-transform: translateX(100%);
|
|
231
|
-
animation: slide-in 0.8s forwards !important;
|
|
232
|
-
-webkit-animation: slide-in 0.8s forwards !important;
|
|
233
|
-
z-index: 1000000000000;
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
.slide-out {
|
|
237
|
-
transform: translateX(100%);
|
|
238
|
-
-webkit-transform: translateX(100%);
|
|
239
|
-
animation: slide-out 1s forwards !important;
|
|
240
|
-
-webkit-animation: slide-out 1s forwards !important;
|
|
241
|
-
z-index: -1000000000000;
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
@media screen and (max-width: 495px) {
|
|
245
|
-
.slide-in {
|
|
246
|
-
transform: translateY(100%);
|
|
247
|
-
-webkit-transform: translateY(100%);
|
|
248
|
-
animation: slide-up 0.8s forwards !important;
|
|
249
|
-
-webkit-animation: slide-up 0.8s forwards !important;
|
|
250
|
-
z-index: 1000000000000;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
.slide-out {
|
|
254
|
-
transform: translateY(100%);
|
|
255
|
-
-webkit-transform: translateY(100%);
|
|
256
|
-
animation: slide-down 0.5s forwards !important;
|
|
257
|
-
-webkit-animation: slide-down 1s forwards !important;
|
|
258
|
-
z-index: -1000000000000;
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
@keyframes slide-in {
|
|
263
|
-
100% {
|
|
264
|
-
transform: translateX(0%);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
@-webkit-keyframes slide-in {
|
|
269
|
-
100% {
|
|
270
|
-
-webkit-transform: translateX(0%);
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
@keyframes slide-up {
|
|
275
|
-
100% {
|
|
276
|
-
transform: translateY(0%);
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
@-webkit-keyframes slide-up {
|
|
281
|
-
100% {
|
|
282
|
-
-webkit-transform: translateY(0%);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
@keyframes slide-out {
|
|
287
|
-
0% {
|
|
288
|
-
transform: translateX(0%);
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
100% {
|
|
292
|
-
transform: translateX(100%);
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
@-webkit-keyframes slide-out {
|
|
297
|
-
0% {
|
|
298
|
-
-webkit-transform: translateX(0%);
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
100% {
|
|
302
|
-
-webkit-transform: translateX(100%);
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
@keyframes slide-down {
|
|
307
|
-
0% {
|
|
308
|
-
transform: translateY(0%);
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
100% {
|
|
312
|
-
transform: translateY(100%);
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
@-webkit-keyframes slide-down {
|
|
317
|
-
0% {
|
|
318
|
-
-webkit-transform: translateY(0%);
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
100% {
|
|
322
|
-
-webkit-transform: translateY(100%);
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
`, "",{"version":3,"sources":["webpack://./src/styles.css"],"names":[],"mappings":"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","sourcesContent":["@import url(\"https://use.typekit.net/sag8ceb.css\");\n\n#tripfusion-loader {\n color: white;\n margin-right: -50%;\n position: absolute;\n top: 50%;\n left: 50%;\n font-family: futura-lt-w01-book, futura-lt-w05-book, Arial, Helvetica, sans-serif;\n transform: translate(-50%, -50%);\n}\n#tripfusion-loader span {\n font-weight: bold;\n font-size: 1.3rem;\n}\n\n#tripfusion-resume-button {\n position: fixed;\n overflow: hidden;\n cursor: pointer;\n display: flex;\n justify-content: space-evenly;\n align-items: center;\n padding: 12px 32px;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.25), 0px 4px 4px rgba(0, 0, 0, 0.1);\n right: 30px;\n z-index: 100000000000;\n bottom: 40px;\n border: none;\n transform: translateX(400px);\n background-color: #092b43;\n border-radius: 23px;\n}\n\n#tripfusion-resume-button span {\n display: block !important;\n font-family: sweet-sans-pro, sans-serif;\n font-size: 1rem;\n font-weight: 700;\n line-height: 1.2;\n letter-spacing: 1.5px;\n text-transform: uppercase !important;\n color: white !important;\n}\n\n#tripfusion-widget-wrapper {\n background: rgba(0, 0, 0, 0);\n position: fixed;\n top: 0;\n right: 0;\n width: 100%;\n transition: background 0.5s ease-out;\n}\n\n#tripfusion-widget {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0px;\n right: 0px;\n}\n\n#tripfusion-widget-inner-wrapper {\n position: fixed;\n display: flex;\n flex-direction: column;\n min-width: 320px;\n width: 100%;\n height: 100%;\n right: 0px;\n bottom: 0px;\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.2);\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-weight: 400;\n font-size: 1rem;\n line-height: 1.5;\n letter-spacing: 0.00938em;\n}\n\n@media (min-width: 768px) {\n #tripfusion-widget-inner-wrapper {\n height: calc(100% - 40px);\n right: 20px;\n bottom: 20px;\n width: 500px;\n }\n}\n\n#tripfusion-widget-header {\n height: 60px;\n background-color: #092b43;\n border-bottom: 1px solid #f1f1f1;\n padding: 0 16px 0 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: white;\n}\n\n#tripfusion-widget-iframe {\n height: 100%;\n border: none;\n}\n\n#tripfusion-widget-header-title {\n font-family: sweet-sans-pro, sans-serif;\n line-height: 1.2;\n font-weight: 700;\n font-size: 1rem;\n letter-spacing: 1.5px;\n text-transform: uppercase;\n}\n\n#tripfusion-widget-close-button {\n overflow: hidden;\n position: relative;\n border: none;\n padding: 0;\n width: 2em;\n height: 2em;\n border-radius: 50%;\n background: transparent;\n font: inherit;\n text-indent: 100%;\n cursor: pointer;\n\n &:focus {\n outline: solid 0 transparent;\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:hover {\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:before,\n &:after {\n position: absolute;\n top: 25%;\n left: calc(50% - 0.0625em);\n width: 0.125em;\n height: 50%;\n border-radius: 0.125em;\n transform: rotate(45deg);\n background: currentcolor;\n color: white;\n content: \"\";\n }\n\n &:after {\n transform: rotate(-45deg);\n }\n}\n\n.dismiss-btn-slide-in {\n -webkit-transition: 500ms;\n -moz-transition: 500ms;\n transition: 500ms;\n transform: translateX(0) !important;\n}\n\n.dismiss-btn-slide-out {\n -webkit-transition: 500ms;\n -moz-transition: 500ms;\n transition: 500ms;\n transform: translateX(400px) !important;\n}\n\n.dismiss-btn-slide-out span {\n display: none;\n}\n\n.dismiss-btn-resize-in {\n width: 46px !important;\n height: 46px !important;\n transition: 500ms;\n right: 30px !important;\n}\n\n.dismiss-btn-resize-in span {\n display: none;\n}\n\n.dismiss-btn-resize-in:hover {\n width: 217px !important;\n height: 46px !important;\n transition: all 300ms linear;\n cursor: pointer;\n}\n\n.dismiss-btn-resize-in:hover span {\n display: inline;\n height: 20px !important;\n overflow: hidden;\n}\n\n.dismiss-btn-resize-out {\n width: 46px !important;\n height: 46px !important;\n transition: 500ms;\n right: -100px !important;\n}\n\n.slide-in {\n transform: translateX(100%);\n -webkit-transform: translateX(100%);\n animation: slide-in 0.8s forwards !important;\n -webkit-animation: slide-in 0.8s forwards !important;\n z-index: 1000000000000;\n}\n\n.slide-out {\n transform: translateX(100%);\n -webkit-transform: translateX(100%);\n animation: slide-out 1s forwards !important;\n -webkit-animation: slide-out 1s forwards !important;\n z-index: -1000000000000;\n}\n\n@media screen and (max-width: 495px) {\n .slide-in {\n transform: translateY(100%);\n -webkit-transform: translateY(100%);\n animation: slide-up 0.8s forwards !important;\n -webkit-animation: slide-up 0.8s forwards !important;\n z-index: 1000000000000;\n }\n\n .slide-out {\n transform: translateY(100%);\n -webkit-transform: translateY(100%);\n animation: slide-down 0.5s forwards !important;\n -webkit-animation: slide-down 1s forwards !important;\n z-index: -1000000000000;\n }\n}\n\n@keyframes slide-in {\n 100% {\n transform: translateX(0%);\n }\n}\n\n@-webkit-keyframes slide-in {\n 100% {\n -webkit-transform: translateX(0%);\n }\n}\n\n@keyframes slide-up {\n 100% {\n transform: translateY(0%);\n }\n}\n\n@-webkit-keyframes slide-up {\n 100% {\n -webkit-transform: translateY(0%);\n }\n}\n\n@keyframes slide-out {\n 0% {\n transform: translateX(0%);\n }\n\n 100% {\n transform: translateX(100%);\n }\n}\n\n@-webkit-keyframes slide-out {\n 0% {\n -webkit-transform: translateX(0%);\n }\n\n 100% {\n -webkit-transform: translateX(100%);\n }\n}\n\n@keyframes slide-down {\n 0% {\n transform: translateY(0%);\n }\n\n 100% {\n transform: translateY(100%);\n }\n}\n\n@-webkit-keyframes slide-down {\n 0% {\n -webkit-transform: translateY(0%);\n }\n\n 100% {\n -webkit-transform: translateY(100%);\n }\n}\n"],"sourceRoot":""}]);
|
|
326
|
-
// Exports
|
|
327
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
/***/ }),
|
|
331
|
-
|
|
332
|
-
/***/ "./node_modules/css-loader/dist/runtime/api.js":
|
|
333
|
-
/*!*****************************************************!*\
|
|
334
|
-
!*** ./node_modules/css-loader/dist/runtime/api.js ***!
|
|
335
|
-
\*****************************************************/
|
|
336
|
-
/***/ ((module) => {
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
/*
|
|
341
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
342
|
-
Author Tobias Koppers @sokra
|
|
343
|
-
*/
|
|
344
|
-
module.exports = function (cssWithMappingToString) {
|
|
345
|
-
var list = [];
|
|
346
|
-
|
|
347
|
-
// return the list of modules as css string
|
|
348
|
-
list.toString = function toString() {
|
|
349
|
-
return this.map(function (item) {
|
|
350
|
-
var content = "";
|
|
351
|
-
var needLayer = typeof item[5] !== "undefined";
|
|
352
|
-
if (item[4]) {
|
|
353
|
-
content += "@supports (".concat(item[4], ") {");
|
|
354
|
-
}
|
|
355
|
-
if (item[2]) {
|
|
356
|
-
content += "@media ".concat(item[2], " {");
|
|
357
|
-
}
|
|
358
|
-
if (needLayer) {
|
|
359
|
-
content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {");
|
|
360
|
-
}
|
|
361
|
-
content += cssWithMappingToString(item);
|
|
362
|
-
if (needLayer) {
|
|
363
|
-
content += "}";
|
|
364
|
-
}
|
|
365
|
-
if (item[2]) {
|
|
366
|
-
content += "}";
|
|
367
|
-
}
|
|
368
|
-
if (item[4]) {
|
|
369
|
-
content += "}";
|
|
370
|
-
}
|
|
371
|
-
return content;
|
|
372
|
-
}).join("");
|
|
373
|
-
};
|
|
374
|
-
|
|
375
|
-
// import a list of modules into the list
|
|
376
|
-
list.i = function i(modules, media, dedupe, supports, layer) {
|
|
377
|
-
if (typeof modules === "string") {
|
|
378
|
-
modules = [[null, modules, undefined]];
|
|
379
|
-
}
|
|
380
|
-
var alreadyImportedModules = {};
|
|
381
|
-
if (dedupe) {
|
|
382
|
-
for (var k = 0; k < this.length; k++) {
|
|
383
|
-
var id = this[k][0];
|
|
384
|
-
if (id != null) {
|
|
385
|
-
alreadyImportedModules[id] = true;
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
for (var _k = 0; _k < modules.length; _k++) {
|
|
390
|
-
var item = [].concat(modules[_k]);
|
|
391
|
-
if (dedupe && alreadyImportedModules[item[0]]) {
|
|
392
|
-
continue;
|
|
393
|
-
}
|
|
394
|
-
if (typeof layer !== "undefined") {
|
|
395
|
-
if (typeof item[5] === "undefined") {
|
|
396
|
-
item[5] = layer;
|
|
397
|
-
} else {
|
|
398
|
-
item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");
|
|
399
|
-
item[5] = layer;
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
if (media) {
|
|
403
|
-
if (!item[2]) {
|
|
404
|
-
item[2] = media;
|
|
405
|
-
} else {
|
|
406
|
-
item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");
|
|
407
|
-
item[2] = media;
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
if (supports) {
|
|
411
|
-
if (!item[4]) {
|
|
412
|
-
item[4] = "".concat(supports);
|
|
413
|
-
} else {
|
|
414
|
-
item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");
|
|
415
|
-
item[4] = supports;
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
list.push(item);
|
|
419
|
-
}
|
|
420
|
-
};
|
|
421
|
-
return list;
|
|
422
|
-
};
|
|
423
|
-
|
|
424
|
-
/***/ }),
|
|
425
|
-
|
|
426
|
-
/***/ "./node_modules/css-loader/dist/runtime/sourceMaps.js":
|
|
427
|
-
/*!************************************************************!*\
|
|
428
|
-
!*** ./node_modules/css-loader/dist/runtime/sourceMaps.js ***!
|
|
429
|
-
\************************************************************/
|
|
430
|
-
/***/ ((module) => {
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
module.exports = function (item) {
|
|
435
|
-
var content = item[1];
|
|
436
|
-
var cssMapping = item[3];
|
|
437
|
-
if (!cssMapping) {
|
|
438
|
-
return content;
|
|
439
|
-
}
|
|
440
|
-
if (typeof btoa === "function") {
|
|
441
|
-
var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));
|
|
442
|
-
var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);
|
|
443
|
-
var sourceMapping = "/*# ".concat(data, " */");
|
|
444
|
-
return [content].concat([sourceMapping]).join("\n");
|
|
445
|
-
}
|
|
446
|
-
return [content].join("\n");
|
|
447
|
-
};
|
|
448
|
-
|
|
449
|
-
/***/ }),
|
|
450
|
-
|
|
451
|
-
/***/ "./src/styles.css":
|
|
452
|
-
/*!************************!*\
|
|
453
|
-
!*** ./src/styles.css ***!
|
|
454
|
-
\************************/
|
|
455
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
456
|
-
|
|
457
|
-
__webpack_require__.r(__webpack_exports__);
|
|
458
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
459
|
-
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
460
|
-
/* harmony export */ });
|
|
461
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
|
|
462
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
463
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");
|
|
464
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
465
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");
|
|
466
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
|
|
467
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
|
|
468
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
|
|
469
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");
|
|
470
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
|
|
471
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");
|
|
472
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
|
|
473
|
-
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_styles_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../node_modules/css-loader/dist/cjs.js!./styles.css */ "./node_modules/css-loader/dist/cjs.js!./src/styles.css");
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
var options = {};
|
|
486
|
-
|
|
487
|
-
options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
|
|
488
|
-
options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
|
|
489
|
-
options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
|
|
490
|
-
options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
|
|
491
|
-
options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
|
|
492
|
-
|
|
493
|
-
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
/***/ }),
|
|
502
|
-
|
|
503
|
-
/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":
|
|
504
|
-
/*!****************************************************************************!*\
|
|
505
|
-
!*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
|
|
506
|
-
\****************************************************************************/
|
|
507
|
-
/***/ ((module) => {
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
var stylesInDOM = [];
|
|
512
|
-
function getIndexByIdentifier(identifier) {
|
|
513
|
-
var result = -1;
|
|
514
|
-
for (var i = 0; i < stylesInDOM.length; i++) {
|
|
515
|
-
if (stylesInDOM[i].identifier === identifier) {
|
|
516
|
-
result = i;
|
|
517
|
-
break;
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
return result;
|
|
521
|
-
}
|
|
522
|
-
function modulesToDom(list, options) {
|
|
523
|
-
var idCountMap = {};
|
|
524
|
-
var identifiers = [];
|
|
525
|
-
for (var i = 0; i < list.length; i++) {
|
|
526
|
-
var item = list[i];
|
|
527
|
-
var id = options.base ? item[0] + options.base : item[0];
|
|
528
|
-
var count = idCountMap[id] || 0;
|
|
529
|
-
var identifier = "".concat(id, " ").concat(count);
|
|
530
|
-
idCountMap[id] = count + 1;
|
|
531
|
-
var indexByIdentifier = getIndexByIdentifier(identifier);
|
|
532
|
-
var obj = {
|
|
533
|
-
css: item[1],
|
|
534
|
-
media: item[2],
|
|
535
|
-
sourceMap: item[3],
|
|
536
|
-
supports: item[4],
|
|
537
|
-
layer: item[5]
|
|
538
|
-
};
|
|
539
|
-
if (indexByIdentifier !== -1) {
|
|
540
|
-
stylesInDOM[indexByIdentifier].references++;
|
|
541
|
-
stylesInDOM[indexByIdentifier].updater(obj);
|
|
542
|
-
} else {
|
|
543
|
-
var updater = addElementStyle(obj, options);
|
|
544
|
-
options.byIndex = i;
|
|
545
|
-
stylesInDOM.splice(i, 0, {
|
|
546
|
-
identifier: identifier,
|
|
547
|
-
updater: updater,
|
|
548
|
-
references: 1
|
|
549
|
-
});
|
|
550
|
-
}
|
|
551
|
-
identifiers.push(identifier);
|
|
552
|
-
}
|
|
553
|
-
return identifiers;
|
|
554
|
-
}
|
|
555
|
-
function addElementStyle(obj, options) {
|
|
556
|
-
var api = options.domAPI(options);
|
|
557
|
-
api.update(obj);
|
|
558
|
-
var updater = function updater(newObj) {
|
|
559
|
-
if (newObj) {
|
|
560
|
-
if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {
|
|
561
|
-
return;
|
|
562
|
-
}
|
|
563
|
-
api.update(obj = newObj);
|
|
564
|
-
} else {
|
|
565
|
-
api.remove();
|
|
566
|
-
}
|
|
567
|
-
};
|
|
568
|
-
return updater;
|
|
569
|
-
}
|
|
570
|
-
module.exports = function (list, options) {
|
|
571
|
-
options = options || {};
|
|
572
|
-
list = list || [];
|
|
573
|
-
var lastIdentifiers = modulesToDom(list, options);
|
|
574
|
-
return function update(newList) {
|
|
575
|
-
newList = newList || [];
|
|
576
|
-
for (var i = 0; i < lastIdentifiers.length; i++) {
|
|
577
|
-
var identifier = lastIdentifiers[i];
|
|
578
|
-
var index = getIndexByIdentifier(identifier);
|
|
579
|
-
stylesInDOM[index].references--;
|
|
580
|
-
}
|
|
581
|
-
var newLastIdentifiers = modulesToDom(newList, options);
|
|
582
|
-
for (var _i = 0; _i < lastIdentifiers.length; _i++) {
|
|
583
|
-
var _identifier = lastIdentifiers[_i];
|
|
584
|
-
var _index = getIndexByIdentifier(_identifier);
|
|
585
|
-
if (stylesInDOM[_index].references === 0) {
|
|
586
|
-
stylesInDOM[_index].updater();
|
|
587
|
-
stylesInDOM.splice(_index, 1);
|
|
588
|
-
}
|
|
589
|
-
}
|
|
590
|
-
lastIdentifiers = newLastIdentifiers;
|
|
591
|
-
};
|
|
592
|
-
};
|
|
593
|
-
|
|
594
|
-
/***/ }),
|
|
595
|
-
|
|
596
|
-
/***/ "./node_modules/style-loader/dist/runtime/insertBySelector.js":
|
|
597
|
-
/*!********************************************************************!*\
|
|
598
|
-
!*** ./node_modules/style-loader/dist/runtime/insertBySelector.js ***!
|
|
599
|
-
\********************************************************************/
|
|
600
|
-
/***/ ((module) => {
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
var memo = {};
|
|
605
|
-
|
|
606
|
-
/* istanbul ignore next */
|
|
607
|
-
function getTarget(target) {
|
|
608
|
-
if (typeof memo[target] === "undefined") {
|
|
609
|
-
var styleTarget = document.querySelector(target);
|
|
610
|
-
|
|
611
|
-
// Special case to return head of iframe instead of iframe itself
|
|
612
|
-
if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
|
|
613
|
-
try {
|
|
614
|
-
// This will throw an exception if access to iframe is blocked
|
|
615
|
-
// due to cross-origin restrictions
|
|
616
|
-
styleTarget = styleTarget.contentDocument.head;
|
|
617
|
-
} catch (e) {
|
|
618
|
-
// istanbul ignore next
|
|
619
|
-
styleTarget = null;
|
|
620
|
-
}
|
|
621
|
-
}
|
|
622
|
-
memo[target] = styleTarget;
|
|
623
|
-
}
|
|
624
|
-
return memo[target];
|
|
625
|
-
}
|
|
626
|
-
|
|
627
|
-
/* istanbul ignore next */
|
|
628
|
-
function insertBySelector(insert, style) {
|
|
629
|
-
var target = getTarget(insert);
|
|
630
|
-
if (!target) {
|
|
631
|
-
throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
|
|
632
|
-
}
|
|
633
|
-
target.appendChild(style);
|
|
634
|
-
}
|
|
635
|
-
module.exports = insertBySelector;
|
|
636
|
-
|
|
637
|
-
/***/ }),
|
|
638
|
-
|
|
639
|
-
/***/ "./node_modules/style-loader/dist/runtime/insertStyleElement.js":
|
|
640
|
-
/*!**********************************************************************!*\
|
|
641
|
-
!*** ./node_modules/style-loader/dist/runtime/insertStyleElement.js ***!
|
|
642
|
-
\**********************************************************************/
|
|
643
|
-
/***/ ((module) => {
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
/* istanbul ignore next */
|
|
648
|
-
function insertStyleElement(options) {
|
|
649
|
-
var element = document.createElement("style");
|
|
650
|
-
options.setAttributes(element, options.attributes);
|
|
651
|
-
options.insert(element, options.options);
|
|
652
|
-
return element;
|
|
653
|
-
}
|
|
654
|
-
module.exports = insertStyleElement;
|
|
655
|
-
|
|
656
|
-
/***/ }),
|
|
657
|
-
|
|
658
|
-
/***/ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":
|
|
659
|
-
/*!**********************************************************************************!*\
|
|
660
|
-
!*** ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***!
|
|
661
|
-
\**********************************************************************************/
|
|
662
|
-
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
/* istanbul ignore next */
|
|
667
|
-
function setAttributesWithoutAttributes(styleElement) {
|
|
668
|
-
var nonce = true ? __webpack_require__.nc : 0;
|
|
669
|
-
if (nonce) {
|
|
670
|
-
styleElement.setAttribute("nonce", nonce);
|
|
671
|
-
}
|
|
672
|
-
}
|
|
673
|
-
module.exports = setAttributesWithoutAttributes;
|
|
674
|
-
|
|
675
|
-
/***/ }),
|
|
676
|
-
|
|
677
|
-
/***/ "./node_modules/style-loader/dist/runtime/styleDomAPI.js":
|
|
678
|
-
/*!***************************************************************!*\
|
|
679
|
-
!*** ./node_modules/style-loader/dist/runtime/styleDomAPI.js ***!
|
|
680
|
-
\***************************************************************/
|
|
681
|
-
/***/ ((module) => {
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
/* istanbul ignore next */
|
|
686
|
-
function apply(styleElement, options, obj) {
|
|
687
|
-
var css = "";
|
|
688
|
-
if (obj.supports) {
|
|
689
|
-
css += "@supports (".concat(obj.supports, ") {");
|
|
690
|
-
}
|
|
691
|
-
if (obj.media) {
|
|
692
|
-
css += "@media ".concat(obj.media, " {");
|
|
693
|
-
}
|
|
694
|
-
var needLayer = typeof obj.layer !== "undefined";
|
|
695
|
-
if (needLayer) {
|
|
696
|
-
css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {");
|
|
697
|
-
}
|
|
698
|
-
css += obj.css;
|
|
699
|
-
if (needLayer) {
|
|
700
|
-
css += "}";
|
|
701
|
-
}
|
|
702
|
-
if (obj.media) {
|
|
703
|
-
css += "}";
|
|
704
|
-
}
|
|
705
|
-
if (obj.supports) {
|
|
706
|
-
css += "}";
|
|
707
|
-
}
|
|
708
|
-
var sourceMap = obj.sourceMap;
|
|
709
|
-
if (sourceMap && typeof btoa !== "undefined") {
|
|
710
|
-
css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
|
|
711
|
-
}
|
|
712
|
-
|
|
713
|
-
// For old IE
|
|
714
|
-
/* istanbul ignore if */
|
|
715
|
-
options.styleTagTransform(css, styleElement, options.options);
|
|
716
|
-
}
|
|
717
|
-
function removeStyleElement(styleElement) {
|
|
718
|
-
// istanbul ignore if
|
|
719
|
-
if (styleElement.parentNode === null) {
|
|
720
|
-
return false;
|
|
721
|
-
}
|
|
722
|
-
styleElement.parentNode.removeChild(styleElement);
|
|
723
|
-
}
|
|
724
|
-
|
|
725
|
-
/* istanbul ignore next */
|
|
726
|
-
function domAPI(options) {
|
|
727
|
-
if (typeof document === "undefined") {
|
|
728
|
-
return {
|
|
729
|
-
update: function update() {},
|
|
730
|
-
remove: function remove() {}
|
|
731
|
-
};
|
|
732
|
-
}
|
|
733
|
-
var styleElement = options.insertStyleElement(options);
|
|
734
|
-
return {
|
|
735
|
-
update: function update(obj) {
|
|
736
|
-
apply(styleElement, options, obj);
|
|
737
|
-
},
|
|
738
|
-
remove: function remove() {
|
|
739
|
-
removeStyleElement(styleElement);
|
|
740
|
-
}
|
|
741
|
-
};
|
|
742
|
-
}
|
|
743
|
-
module.exports = domAPI;
|
|
744
|
-
|
|
745
|
-
/***/ }),
|
|
746
|
-
|
|
747
|
-
/***/ "./node_modules/style-loader/dist/runtime/styleTagTransform.js":
|
|
748
|
-
/*!*********************************************************************!*\
|
|
749
|
-
!*** ./node_modules/style-loader/dist/runtime/styleTagTransform.js ***!
|
|
750
|
-
\*********************************************************************/
|
|
751
|
-
/***/ ((module) => {
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
/* istanbul ignore next */
|
|
756
|
-
function styleTagTransform(css, styleElement) {
|
|
757
|
-
if (styleElement.styleSheet) {
|
|
758
|
-
styleElement.styleSheet.cssText = css;
|
|
759
|
-
} else {
|
|
760
|
-
while (styleElement.firstChild) {
|
|
761
|
-
styleElement.removeChild(styleElement.firstChild);
|
|
762
|
-
}
|
|
763
|
-
styleElement.appendChild(document.createTextNode(css));
|
|
764
|
-
}
|
|
765
|
-
}
|
|
766
|
-
module.exports = styleTagTransform;
|
|
767
|
-
|
|
768
|
-
/***/ }),
|
|
769
|
-
|
|
770
|
-
/***/ "./src/const.ts":
|
|
771
|
-
/*!**********************!*\
|
|
772
|
-
!*** ./src/const.ts ***!
|
|
773
|
-
\**********************/
|
|
774
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
775
|
-
|
|
776
|
-
__webpack_require__.r(__webpack_exports__);
|
|
777
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
778
|
-
/* harmony export */ BOOKING_MODE: () => (/* binding */ BOOKING_MODE),
|
|
779
|
-
/* harmony export */ LOADER_ID: () => (/* binding */ LOADER_ID),
|
|
780
|
-
/* harmony export */ RESUME_BUTTON_ID: () => (/* binding */ RESUME_BUTTON_ID),
|
|
781
|
-
/* harmony export */ SDK_SCRIPT_ID: () => (/* binding */ SDK_SCRIPT_ID),
|
|
782
|
-
/* harmony export */ TRIPFUSION_BASE_URL: () => (/* binding */ TRIPFUSION_BASE_URL),
|
|
783
|
-
/* harmony export */ WIDGET_CLOSE_BUTTON_ID: () => (/* binding */ WIDGET_CLOSE_BUTTON_ID),
|
|
784
|
-
/* harmony export */ WIDGET_HEADER_ID: () => (/* binding */ WIDGET_HEADER_ID),
|
|
785
|
-
/* harmony export */ WIDGET_HEADER_TITLE_ID: () => (/* binding */ WIDGET_HEADER_TITLE_ID),
|
|
786
|
-
/* harmony export */ WIDGET_ID: () => (/* binding */ WIDGET_ID),
|
|
787
|
-
/* harmony export */ WIDGET_IFRAME_ID: () => (/* binding */ WIDGET_IFRAME_ID),
|
|
788
|
-
/* harmony export */ WIDGET_INNER_WRAPPER_ID: () => (/* binding */ WIDGET_INNER_WRAPPER_ID),
|
|
789
|
-
/* harmony export */ WIDGET_WRAPPER_ID: () => (/* binding */ WIDGET_WRAPPER_ID)
|
|
790
|
-
/* harmony export */ });
|
|
791
|
-
var TRIPFUSION_BASE_URL = false ? 0 : "http://localhost:3000/";
|
|
792
|
-
var SDK_SCRIPT_ID = "tripfusion-sdk";
|
|
793
|
-
var WIDGET_ID = "tripfusion-widget";
|
|
794
|
-
var WIDGET_INNER_WRAPPER_ID = "tripfusion-widget-inner-wrapper";
|
|
795
|
-
var WIDGET_HEADER_ID = "tripfusion-widget-header";
|
|
796
|
-
var WIDGET_CLOSE_BUTTON_ID = "tripfusion-widget-close-button";
|
|
797
|
-
var WIDGET_HEADER_TITLE_ID = "tripfusion-widget-header-title";
|
|
798
|
-
var WIDGET_WRAPPER_ID = "tripfusion-widget-wrapper";
|
|
799
|
-
var WIDGET_IFRAME_ID = "tripfusion-widget-iframe";
|
|
800
|
-
var RESUME_BUTTON_ID = "tripfusion-resume-button";
|
|
801
|
-
var LOADER_ID = "tripfusion-loader";
|
|
802
|
-
var BOOKING_MODE = {
|
|
803
|
-
normal: "normal",
|
|
804
|
-
append: "append",
|
|
805
|
-
};
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
/***/ }),
|
|
809
|
-
|
|
810
|
-
/***/ "./src/dom.ts":
|
|
811
|
-
/*!********************!*\
|
|
812
|
-
!*** ./src/dom.ts ***!
|
|
813
|
-
\********************/
|
|
814
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
815
|
-
|
|
816
|
-
__webpack_require__.r(__webpack_exports__);
|
|
817
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
818
|
-
/* harmony export */ closeWidget: () => (/* binding */ closeWidget),
|
|
819
|
-
/* harmony export */ displayLoadingOverlay: () => (/* binding */ displayLoadingOverlay),
|
|
820
|
-
/* harmony export */ injectIframe: () => (/* binding */ injectIframe),
|
|
821
|
-
/* harmony export */ injectResumeButton: () => (/* binding */ injectResumeButton),
|
|
822
|
-
/* harmony export */ lockPageScroll: () => (/* binding */ lockPageScroll)
|
|
823
|
-
/* harmony export */ });
|
|
824
|
-
/* harmony import */ var _const__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./const */ "./src/const.ts");
|
|
825
|
-
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ "./src/utils.ts");
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
function displayLoadingOverlay() {
|
|
829
|
-
var widgetWrapper = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_WRAPPER_ID);
|
|
830
|
-
if (widgetWrapper) {
|
|
831
|
-
var loadingDiv = document.createElement("div");
|
|
832
|
-
loadingDiv.id = _const__WEBPACK_IMPORTED_MODULE_0__.LOADER_ID;
|
|
833
|
-
loadingDiv.innerHTML = "Loading <span>TripFusion</span>";
|
|
834
|
-
widgetWrapper.appendChild(loadingDiv);
|
|
835
|
-
widgetWrapper.style.zIndex = "".concat(1e11);
|
|
836
|
-
widgetWrapper.style.height = "100%";
|
|
837
|
-
widgetWrapper.style.background = "rgba(0, 0, 0, .74)";
|
|
838
|
-
lockPageScroll();
|
|
839
|
-
}
|
|
840
|
-
}
|
|
841
|
-
function injectResumeButton() {
|
|
842
|
-
try {
|
|
843
|
-
var widget = document.createElement("div"), widgetWrapper = document.createElement("div"), widgetInnerWrapper = document.createElement("div"), widgetHeader = document.createElement("div"), widgetHeaderTitle = document.createElement("span"), widgetCloseButton = document.createElement("button"), resumeButton = document.createElement("button"), resumeButtonText = document.createElement("span");
|
|
844
|
-
resumeButton.id = _const__WEBPACK_IMPORTED_MODULE_0__.RESUME_BUTTON_ID;
|
|
845
|
-
resumeButtonText.innerHTML = "Complete your booking";
|
|
846
|
-
resumeButton.appendChild(resumeButtonText);
|
|
847
|
-
widget.id = _const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_ID;
|
|
848
|
-
widget.style.display = "none";
|
|
849
|
-
widgetWrapper.id = _const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_WRAPPER_ID;
|
|
850
|
-
widgetInnerWrapper.id = _const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_INNER_WRAPPER_ID;
|
|
851
|
-
widgetHeader.id = _const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_HEADER_ID;
|
|
852
|
-
widgetCloseButton.id = _const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_CLOSE_BUTTON_ID;
|
|
853
|
-
widgetCloseButton.addEventListener("click", closeWidget);
|
|
854
|
-
widgetHeaderTitle.id = _const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_HEADER_TITLE_ID;
|
|
855
|
-
widgetHeaderTitle.innerHTML = "Booking";
|
|
856
|
-
widgetWrapper.appendChild(widget);
|
|
857
|
-
widget.appendChild(widgetInnerWrapper);
|
|
858
|
-
widgetInnerWrapper.appendChild(widgetHeader);
|
|
859
|
-
widgetHeader.appendChild(widgetHeaderTitle);
|
|
860
|
-
widgetHeader.appendChild(widgetCloseButton);
|
|
861
|
-
document.body.appendChild(widgetWrapper);
|
|
862
|
-
document.body.appendChild(resumeButton);
|
|
863
|
-
}
|
|
864
|
-
catch (error) {
|
|
865
|
-
(0,_utils__WEBPACK_IMPORTED_MODULE_1__.logger)("Widget: Error injecting resume button: ".concat(error));
|
|
866
|
-
console.error("Tripfusion: Error injecting resume button: ", error);
|
|
867
|
-
}
|
|
868
|
-
}
|
|
869
|
-
function closeWidget() {
|
|
870
|
-
try {
|
|
871
|
-
var widget = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_ID), widgetWrapper = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_WRAPPER_ID), resumeButton = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.RESUME_BUTTON_ID);
|
|
872
|
-
if (widget && widgetWrapper && resumeButton) {
|
|
873
|
-
document.body.style.overflow = "initial";
|
|
874
|
-
widget.setAttribute("class", "slide-out");
|
|
875
|
-
widgetWrapper.style.background = "rgba(0, 0, 0, 0)";
|
|
876
|
-
widget.style.display = "none";
|
|
877
|
-
widgetWrapper.style.zIndex = "".concat(-1e11);
|
|
878
|
-
resumeButton.setAttribute("class", "dismiss-btn-slide-in");
|
|
879
|
-
resumeButton.focus();
|
|
880
|
-
}
|
|
881
|
-
}
|
|
882
|
-
catch (error) {
|
|
883
|
-
(0,_utils__WEBPACK_IMPORTED_MODULE_1__.logger)("Widget: Error closing widget: ".concat(error));
|
|
884
|
-
console.error("Tripfusion: Error closing widget: ", error);
|
|
885
|
-
}
|
|
886
|
-
}
|
|
887
|
-
function injectIframe(_a) {
|
|
888
|
-
var config = _a.config, bookingData = _a.bookingData;
|
|
889
|
-
try {
|
|
890
|
-
var innerWrapper = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_INNER_WRAPPER_ID);
|
|
891
|
-
if (innerWrapper) {
|
|
892
|
-
var widgetIframe = document.createElement("iframe");
|
|
893
|
-
var url = "".concat(_const__WEBPACK_IMPORTED_MODULE_0__.TRIPFUSION_BASE_URL).concat(config.client, "/").concat(config.propertyId);
|
|
894
|
-
if (config.mode === _const__WEBPACK_IMPORTED_MODULE_0__.BOOKING_MODE.append && config.bookingId) {
|
|
895
|
-
url += "/booking/".concat(config.bookingId, "/append");
|
|
896
|
-
}
|
|
897
|
-
if (bookingData) {
|
|
898
|
-
var additionalParams = Object.entries(bookingData)
|
|
899
|
-
.filter(function (_a) {
|
|
900
|
-
var _ = _a[0], value = _a[1];
|
|
901
|
-
return !!value;
|
|
902
|
-
})
|
|
903
|
-
.map(function (_a) {
|
|
904
|
-
var key = _a[0], value = _a[1];
|
|
905
|
-
return "".concat(key, "=").concat(value).toLowerCase();
|
|
906
|
-
})
|
|
907
|
-
.join("&");
|
|
908
|
-
if (additionalParams) {
|
|
909
|
-
url += "?".concat(additionalParams);
|
|
910
|
-
}
|
|
911
|
-
}
|
|
912
|
-
widgetIframe.setAttribute("src", url);
|
|
913
|
-
widgetIframe.id = _const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_IFRAME_ID;
|
|
914
|
-
innerWrapper.appendChild(widgetIframe);
|
|
915
|
-
}
|
|
916
|
-
}
|
|
917
|
-
catch (error) {
|
|
918
|
-
(0,_utils__WEBPACK_IMPORTED_MODULE_1__.logger)("Widget: Error injecting iframe: ".concat(error));
|
|
919
|
-
console.error("Tripfusion: Error injecting iframe: ", error);
|
|
920
|
-
}
|
|
921
|
-
}
|
|
922
|
-
function lockPageScroll() {
|
|
923
|
-
document.body.style.overflow = "hidden";
|
|
924
|
-
}
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
/***/ }),
|
|
928
|
-
|
|
929
|
-
/***/ "./src/utils.ts":
|
|
930
|
-
/*!**********************!*\
|
|
931
|
-
!*** ./src/utils.ts ***!
|
|
932
|
-
\**********************/
|
|
933
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
934
|
-
|
|
935
|
-
__webpack_require__.r(__webpack_exports__);
|
|
936
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
937
|
-
/* harmony export */ getParamsFromUrl: () => (/* binding */ getParamsFromUrl),
|
|
938
|
-
/* harmony export */ logger: () => (/* binding */ logger)
|
|
939
|
-
/* harmony export */ });
|
|
940
|
-
/* harmony import */ var _const__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./const */ "./src/const.ts");
|
|
941
|
-
var __assign = (undefined && undefined.__assign) || function () {
|
|
942
|
-
__assign = Object.assign || function(t) {
|
|
943
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
944
|
-
s = arguments[i];
|
|
945
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
946
|
-
t[p] = s[p];
|
|
947
|
-
}
|
|
948
|
-
return t;
|
|
949
|
-
};
|
|
950
|
-
return __assign.apply(this, arguments);
|
|
951
|
-
};
|
|
952
|
-
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
953
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
954
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
955
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
956
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
957
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
958
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
959
|
-
});
|
|
960
|
-
};
|
|
961
|
-
var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
|
|
962
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
963
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
964
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
965
|
-
function step(op) {
|
|
966
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
967
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
968
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
969
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
970
|
-
switch (op[0]) {
|
|
971
|
-
case 0: case 1: t = op; break;
|
|
972
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
973
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
974
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
975
|
-
default:
|
|
976
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
977
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
978
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
979
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
980
|
-
if (t[2]) _.ops.pop();
|
|
981
|
-
_.trys.pop(); continue;
|
|
982
|
-
}
|
|
983
|
-
op = body.call(thisArg, _);
|
|
984
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
985
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
986
|
-
}
|
|
987
|
-
};
|
|
988
|
-
|
|
989
|
-
function getParamsFromUrl(urlSearchParams) {
|
|
990
|
-
var availableSearchParamsMap = {
|
|
991
|
-
tripfusion: "tripfusion",
|
|
992
|
-
client: "client",
|
|
993
|
-
propertyid: "propertyId",
|
|
994
|
-
mode: "mode",
|
|
995
|
-
offerid: "offerId",
|
|
996
|
-
bookingid: "bookingId",
|
|
997
|
-
checkin: "checkIn",
|
|
998
|
-
checkout: "checkOut",
|
|
999
|
-
adults: "adults",
|
|
1000
|
-
children: "children",
|
|
1001
|
-
};
|
|
1002
|
-
return Array.from(urlSearchParams.entries()).reduce(function (prev, _a) {
|
|
1003
|
-
var _b;
|
|
1004
|
-
var searchParamKey = _a[0], searchParamValue = _a[1];
|
|
1005
|
-
return (__assign(__assign({}, prev), (_b = {}, _b[availableSearchParamsMap[searchParamKey.toLowerCase()]] = searchParamValue, _b)));
|
|
1006
|
-
}, {});
|
|
1007
|
-
}
|
|
1008
|
-
function logger(message_1) {
|
|
1009
|
-
return __awaiter(this, arguments, void 0, function (message, type) {
|
|
1010
|
-
var url, payload, headers;
|
|
1011
|
-
if (type === void 0) { type = "error"; }
|
|
1012
|
-
return __generator(this, function (_a) {
|
|
1013
|
-
url = "".concat(_const__WEBPACK_IMPORTED_MODULE_0__.TRIPFUSION_BASE_URL, "api/vacayou/log");
|
|
1014
|
-
payload = {
|
|
1015
|
-
message: message,
|
|
1016
|
-
page: window.location.href,
|
|
1017
|
-
};
|
|
1018
|
-
headers = {
|
|
1019
|
-
"content-type": "application/json",
|
|
1020
|
-
};
|
|
1021
|
-
return [2, fetch(url, {
|
|
1022
|
-
method: "POST",
|
|
1023
|
-
body: JSON.stringify({
|
|
1024
|
-
type: type,
|
|
1025
|
-
payload: payload,
|
|
1026
|
-
}),
|
|
1027
|
-
headers: headers,
|
|
1028
|
-
})
|
|
1029
|
-
.then(function (response) { return response.json(); })
|
|
1030
|
-
.catch(function (error) {
|
|
1031
|
-
console.log("Tripfusion: failed to log message: ".concat(error));
|
|
1032
|
-
})];
|
|
1033
|
-
});
|
|
1034
|
-
});
|
|
1035
|
-
}
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
/***/ })
|
|
1039
|
-
|
|
1040
|
-
/******/ });
|
|
1041
|
-
/************************************************************************/
|
|
1042
|
-
/******/ // The module cache
|
|
1043
|
-
/******/ var __webpack_module_cache__ = {};
|
|
1044
|
-
/******/
|
|
1045
|
-
/******/ // The require function
|
|
1046
|
-
/******/ function __webpack_require__(moduleId) {
|
|
1047
|
-
/******/ // Check if module is in cache
|
|
1048
|
-
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|
1049
|
-
/******/ if (cachedModule !== undefined) {
|
|
1050
|
-
/******/ return cachedModule.exports;
|
|
1051
|
-
/******/ }
|
|
1052
|
-
/******/ // Create a new module (and put it into the cache)
|
|
1053
|
-
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
1054
|
-
/******/ id: moduleId,
|
|
1055
|
-
/******/ // no module.loaded needed
|
|
1056
|
-
/******/ exports: {}
|
|
1057
|
-
/******/ };
|
|
1058
|
-
/******/
|
|
1059
|
-
/******/ // Execute the module function
|
|
1060
|
-
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
1061
|
-
/******/
|
|
1062
|
-
/******/ // Return the exports of the module
|
|
1063
|
-
/******/ return module.exports;
|
|
1064
|
-
/******/ }
|
|
1065
|
-
/******/
|
|
1066
|
-
/************************************************************************/
|
|
1067
|
-
/******/ /* webpack/runtime/compat get default export */
|
|
1068
|
-
/******/ (() => {
|
|
1069
|
-
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
1070
|
-
/******/ __webpack_require__.n = (module) => {
|
|
1071
|
-
/******/ var getter = module && module.__esModule ?
|
|
1072
|
-
/******/ () => (module['default']) :
|
|
1073
|
-
/******/ () => (module);
|
|
1074
|
-
/******/ __webpack_require__.d(getter, { a: getter });
|
|
1075
|
-
/******/ return getter;
|
|
1076
|
-
/******/ };
|
|
1077
|
-
/******/ })();
|
|
1078
|
-
/******/
|
|
1079
|
-
/******/ /* webpack/runtime/define property getters */
|
|
1080
|
-
/******/ (() => {
|
|
1081
|
-
/******/ // define getter functions for harmony exports
|
|
1082
|
-
/******/ __webpack_require__.d = (exports, definition) => {
|
|
1083
|
-
/******/ for(var key in definition) {
|
|
1084
|
-
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
1085
|
-
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
1086
|
-
/******/ }
|
|
1087
|
-
/******/ }
|
|
1088
|
-
/******/ };
|
|
1089
|
-
/******/ })();
|
|
1090
|
-
/******/
|
|
1091
|
-
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
1092
|
-
/******/ (() => {
|
|
1093
|
-
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
1094
|
-
/******/ })();
|
|
1095
|
-
/******/
|
|
1096
|
-
/******/ /* webpack/runtime/make namespace object */
|
|
1097
|
-
/******/ (() => {
|
|
1098
|
-
/******/ // define __esModule on exports
|
|
1099
|
-
/******/ __webpack_require__.r = (exports) => {
|
|
1100
|
-
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
1101
|
-
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
1102
|
-
/******/ }
|
|
1103
|
-
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
1104
|
-
/******/ };
|
|
1105
|
-
/******/ })();
|
|
1106
|
-
/******/
|
|
1107
|
-
/******/ /* webpack/runtime/nonce */
|
|
1108
|
-
/******/ (() => {
|
|
1109
|
-
/******/ __webpack_require__.nc = undefined;
|
|
1110
|
-
/******/ })();
|
|
1111
|
-
/******/
|
|
1112
|
-
/************************************************************************/
|
|
1113
|
-
var __webpack_exports__ = {};
|
|
1114
|
-
/*!**********************!*\
|
|
1115
|
-
!*** ./src/index.ts ***!
|
|
1116
|
-
\**********************/
|
|
1117
|
-
__webpack_require__.r(__webpack_exports__);
|
|
1118
|
-
/* harmony import */ var _const__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./const */ "./src/const.ts");
|
|
1119
|
-
/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dom */ "./src/dom.ts");
|
|
1120
|
-
/* harmony import */ var _styles_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./styles.css */ "./src/styles.css");
|
|
1121
|
-
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "./src/utils.ts");
|
|
1122
|
-
var __assign = (undefined && undefined.__assign) || function () {
|
|
1123
|
-
__assign = Object.assign || function(t) {
|
|
1124
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
1125
|
-
s = arguments[i];
|
|
1126
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
1127
|
-
t[p] = s[p];
|
|
1128
|
-
}
|
|
1129
|
-
return t;
|
|
1130
|
-
};
|
|
1131
|
-
return __assign.apply(this, arguments);
|
|
1132
|
-
};
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
var client = null;
|
|
1138
|
-
var propertyId = null;
|
|
1139
|
-
var bookingContext = null;
|
|
1140
|
-
var isIframeReady = false;
|
|
1141
|
-
function addLinkEventListeners() {
|
|
1142
|
-
document.querySelectorAll("a").forEach(function (linkElement) {
|
|
1143
|
-
linkElement.addEventListener("click", handleLinkClick);
|
|
1144
|
-
});
|
|
1145
|
-
}
|
|
1146
|
-
function handleLinkClick(event) {
|
|
1147
|
-
var _a, _b;
|
|
1148
|
-
try {
|
|
1149
|
-
var target = event.target;
|
|
1150
|
-
if (target.tagName !== "A" && ((_a = target.parentNode) === null || _a === void 0 ? void 0 : _a.tagName) === "A") {
|
|
1151
|
-
target.href = target.parentNode.href;
|
|
1152
|
-
}
|
|
1153
|
-
var linkHref = target.href || "";
|
|
1154
|
-
if (!linkHref.includes("?")) {
|
|
1155
|
-
return;
|
|
1156
|
-
}
|
|
1157
|
-
var urlParams = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getParamsFromUrl)(new URLSearchParams(linkHref.substring(linkHref.indexOf("?"))));
|
|
1158
|
-
if (urlParams.tripfusion === "true") {
|
|
1159
|
-
event.preventDefault();
|
|
1160
|
-
book({
|
|
1161
|
-
config: {
|
|
1162
|
-
client: (_b = urlParams.client) !== null && _b !== void 0 ? _b : client,
|
|
1163
|
-
propertyId: urlParams.propertyId ? +urlParams.propertyId : propertyId,
|
|
1164
|
-
mode: urlParams.mode === _const__WEBPACK_IMPORTED_MODULE_0__.BOOKING_MODE.append ? _const__WEBPACK_IMPORTED_MODULE_0__.BOOKING_MODE.append : _const__WEBPACK_IMPORTED_MODULE_0__.BOOKING_MODE.normal,
|
|
1165
|
-
bookingId: (urlParams === null || urlParams === void 0 ? void 0 : urlParams.bookingId) && (urlParams === null || urlParams === void 0 ? void 0 : urlParams.mode) === _const__WEBPACK_IMPORTED_MODULE_0__.BOOKING_MODE.append ? +urlParams.bookingId : null,
|
|
1166
|
-
},
|
|
1167
|
-
bookingData: {
|
|
1168
|
-
offerId: urlParams.offerId ? +urlParams.offerId : undefined,
|
|
1169
|
-
checkIn: urlParams.checkIn,
|
|
1170
|
-
checkOut: urlParams.checkOut,
|
|
1171
|
-
adults: urlParams.adults ? +urlParams.adults : undefined,
|
|
1172
|
-
children: urlParams.children ? urlParams.children.split(",").map(function (age) { return +age; }) : undefined,
|
|
1173
|
-
},
|
|
1174
|
-
});
|
|
1175
|
-
}
|
|
1176
|
-
}
|
|
1177
|
-
catch (error) {
|
|
1178
|
-
(0,_utils__WEBPACK_IMPORTED_MODULE_3__.logger)("Widget: Error in link click handler: ".concat(error));
|
|
1179
|
-
console.error("Tripfusion: Error in link click handler: ", error);
|
|
1180
|
-
}
|
|
1181
|
-
}
|
|
1182
|
-
function addPageLoadListener() {
|
|
1183
|
-
if (document.readyState === "complete") {
|
|
1184
|
-
onLoadHandler();
|
|
1185
|
-
}
|
|
1186
|
-
else {
|
|
1187
|
-
window.addEventListener("load", onLoadHandler);
|
|
1188
|
-
}
|
|
1189
|
-
}
|
|
1190
|
-
function onLoadHandler() {
|
|
1191
|
-
setTimeout(function () {
|
|
1192
|
-
var _a;
|
|
1193
|
-
var urlParams = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getParamsFromUrl)(new URLSearchParams(window.location.search));
|
|
1194
|
-
if (urlParams.tripfusion === "true" && (client || urlParams.client) && (propertyId || urlParams.propertyId)) {
|
|
1195
|
-
book({
|
|
1196
|
-
config: {
|
|
1197
|
-
client: (_a = urlParams.client) !== null && _a !== void 0 ? _a : client,
|
|
1198
|
-
propertyId: urlParams.propertyId ? +urlParams.propertyId : propertyId,
|
|
1199
|
-
mode: urlParams.mode === _const__WEBPACK_IMPORTED_MODULE_0__.BOOKING_MODE.append ? _const__WEBPACK_IMPORTED_MODULE_0__.BOOKING_MODE.append : _const__WEBPACK_IMPORTED_MODULE_0__.BOOKING_MODE.normal,
|
|
1200
|
-
bookingId: (urlParams === null || urlParams === void 0 ? void 0 : urlParams.bookingId) && (urlParams === null || urlParams === void 0 ? void 0 : urlParams.mode) === _const__WEBPACK_IMPORTED_MODULE_0__.BOOKING_MODE.append ? +urlParams.bookingId : null,
|
|
1201
|
-
},
|
|
1202
|
-
bookingData: {
|
|
1203
|
-
offerId: urlParams.offerId ? +urlParams.offerId : undefined,
|
|
1204
|
-
checkIn: urlParams.checkIn,
|
|
1205
|
-
checkOut: urlParams.checkOut,
|
|
1206
|
-
adults: urlParams.adults ? +urlParams.adults : undefined,
|
|
1207
|
-
children: urlParams.children ? urlParams.children.split(",").map(function (age) { return +age; }) : undefined,
|
|
1208
|
-
},
|
|
1209
|
-
});
|
|
1210
|
-
}
|
|
1211
|
-
}, 500);
|
|
1212
|
-
}
|
|
1213
|
-
function initResumeWidget() {
|
|
1214
|
-
var checkIfDocumentLoadedInterval = setInterval(function () {
|
|
1215
|
-
if (document.readyState === "complete") {
|
|
1216
|
-
(0,_dom__WEBPACK_IMPORTED_MODULE_1__.injectResumeButton)();
|
|
1217
|
-
addLinkEventListeners();
|
|
1218
|
-
clearInterval(checkIfDocumentLoadedInterval);
|
|
1219
|
-
}
|
|
1220
|
-
}, 100);
|
|
1221
|
-
addPageLoadListener();
|
|
1222
|
-
}
|
|
1223
|
-
function book(props) {
|
|
1224
|
-
var _a, _b, _c, _d, _e;
|
|
1225
|
-
try {
|
|
1226
|
-
var widget_1 = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_ID), widgetWrapper_1 = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_WRAPPER_ID), resumeWidget = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.RESUME_BUTTON_ID), resumeWidgetClass = resumeWidget ? resumeWidget.getAttribute("class") : null;
|
|
1227
|
-
if (resumeWidgetClass === null || resumeWidgetClass === void 0 ? void 0 : resumeWidgetClass.includes("dismiss-btn")) {
|
|
1228
|
-
resumeWidget.setAttribute("class", "dismiss-btn-slide-out");
|
|
1229
|
-
}
|
|
1230
|
-
var iframeConfig = __assign(__assign({}, props), { config: __assign(__assign({}, props === null || props === void 0 ? void 0 : props.config), { client: (_b = (_a = props === null || props === void 0 ? void 0 : props.config) === null || _a === void 0 ? void 0 : _a.client) !== null && _b !== void 0 ? _b : client, propertyId: (_d = (_c = props === null || props === void 0 ? void 0 : props.config) === null || _c === void 0 ? void 0 : _c.propertyId) !== null && _d !== void 0 ? _d : propertyId }) });
|
|
1231
|
-
if (JSON.stringify(bookingContext) !== JSON.stringify(iframeConfig)) {
|
|
1232
|
-
isIframeReady = false;
|
|
1233
|
-
(0,_dom__WEBPACK_IMPORTED_MODULE_1__.displayLoadingOverlay)();
|
|
1234
|
-
(_e = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_IFRAME_ID)) === null || _e === void 0 ? void 0 : _e.remove();
|
|
1235
|
-
(0,_dom__WEBPACK_IMPORTED_MODULE_1__.injectIframe)(iframeConfig);
|
|
1236
|
-
bookingContext = iframeConfig;
|
|
1237
|
-
var resumeButton = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.RESUME_BUTTON_ID);
|
|
1238
|
-
var resumeButtonText = resumeButton === null || resumeButton === void 0 ? void 0 : resumeButton.querySelector("span");
|
|
1239
|
-
if (resumeButtonText) {
|
|
1240
|
-
resumeButtonText.innerHTML = "Complete your booking";
|
|
1241
|
-
}
|
|
1242
|
-
}
|
|
1243
|
-
var intervalId_1 = setInterval(function () {
|
|
1244
|
-
var _a;
|
|
1245
|
-
if (!isIframeReady) {
|
|
1246
|
-
return;
|
|
1247
|
-
}
|
|
1248
|
-
(_a = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.LOADER_ID)) === null || _a === void 0 ? void 0 : _a.remove();
|
|
1249
|
-
clearInterval(intervalId_1);
|
|
1250
|
-
if (widget_1.style.display === "none") {
|
|
1251
|
-
Object.assign(widgetWrapper_1.style, {
|
|
1252
|
-
zIndex: 1000000000011,
|
|
1253
|
-
height: "100%",
|
|
1254
|
-
background: "rgba(0, 0, 0, .4)",
|
|
1255
|
-
});
|
|
1256
|
-
(0,_dom__WEBPACK_IMPORTED_MODULE_1__.lockPageScroll)();
|
|
1257
|
-
setTimeout(function () {
|
|
1258
|
-
widget_1.style.display = "block";
|
|
1259
|
-
widget_1.setAttribute("class", "slide-in");
|
|
1260
|
-
}, 20);
|
|
1261
|
-
setTimeout(function () {
|
|
1262
|
-
var widgetIframe = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_IFRAME_ID);
|
|
1263
|
-
widgetIframe === null || widgetIframe === void 0 ? void 0 : widgetIframe.focus();
|
|
1264
|
-
}, 250);
|
|
1265
|
-
}
|
|
1266
|
-
var resumeButton = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.RESUME_BUTTON_ID);
|
|
1267
|
-
resumeButton === null || resumeButton === void 0 ? void 0 : resumeButton.addEventListener("click", function () {
|
|
1268
|
-
try {
|
|
1269
|
-
var resumeButtonClass = resumeButton.getAttribute("class");
|
|
1270
|
-
if (resumeButtonClass === null || resumeButtonClass === void 0 ? void 0 : resumeButtonClass.includes("dismiss-btn")) {
|
|
1271
|
-
resumeButton.setAttribute("class", "dismiss-btn-slide-out");
|
|
1272
|
-
}
|
|
1273
|
-
Object.assign(widgetWrapper_1.style, {
|
|
1274
|
-
zIndex: 1000000000011,
|
|
1275
|
-
height: "100%",
|
|
1276
|
-
background: "rgba(0, 0, 0, .5)",
|
|
1277
|
-
});
|
|
1278
|
-
document.body.style.overflow = "hidden";
|
|
1279
|
-
widget_1.style.display = "block";
|
|
1280
|
-
widget_1.setAttribute("class", "slide-in");
|
|
1281
|
-
setTimeout(function () {
|
|
1282
|
-
var widgetIframe = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_IFRAME_ID);
|
|
1283
|
-
widgetIframe === null || widgetIframe === void 0 ? void 0 : widgetIframe.focus();
|
|
1284
|
-
}, 500);
|
|
1285
|
-
}
|
|
1286
|
-
catch (error) {
|
|
1287
|
-
(0,_utils__WEBPACK_IMPORTED_MODULE_3__.logger)("Widget: resume button error: ".concat(error));
|
|
1288
|
-
console.error("Tripfusion: resume button error", error);
|
|
1289
|
-
}
|
|
1290
|
-
});
|
|
1291
|
-
}, 100);
|
|
1292
|
-
}
|
|
1293
|
-
catch (error) {
|
|
1294
|
-
(0,_utils__WEBPACK_IMPORTED_MODULE_3__.logger)("Widget: failed to book: ".concat(error));
|
|
1295
|
-
console.error("Tripfusion: failed to book: ".concat(error));
|
|
1296
|
-
}
|
|
1297
|
-
}
|
|
1298
|
-
function initTripfusionSdk() {
|
|
1299
|
-
var _a;
|
|
1300
|
-
try {
|
|
1301
|
-
var jsSdk = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.SDK_SCRIPT_ID);
|
|
1302
|
-
var jsSdkSrc = jsSdk.getAttribute("src");
|
|
1303
|
-
var urlParams = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getParamsFromUrl)(new URLSearchParams(jsSdkSrc.substring(jsSdkSrc.indexOf("?"))));
|
|
1304
|
-
client = (_a = urlParams["client"]) !== null && _a !== void 0 ? _a : null;
|
|
1305
|
-
propertyId = urlParams["propertyId"] ? +urlParams["propertyId"] : null;
|
|
1306
|
-
if (!client || !propertyId) {
|
|
1307
|
-
throw new Error("(!) Tripfusion: client and propertyId are required.");
|
|
1308
|
-
}
|
|
1309
|
-
initResumeWidget();
|
|
1310
|
-
Object.assign(window, { book: book, closeWidget: _dom__WEBPACK_IMPORTED_MODULE_1__.closeWidget });
|
|
1311
|
-
window.onmessage = function (e) {
|
|
1312
|
-
var message = e.data;
|
|
1313
|
-
switch (message.type) {
|
|
1314
|
-
case "tripfusion-widget-ready": {
|
|
1315
|
-
isIframeReady = true;
|
|
1316
|
-
break;
|
|
1317
|
-
}
|
|
1318
|
-
case "tripfusion-booking-completed": {
|
|
1319
|
-
var resumeButton = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.RESUME_BUTTON_ID);
|
|
1320
|
-
var resumeButtonText = resumeButton === null || resumeButton === void 0 ? void 0 : resumeButton.querySelector("span");
|
|
1321
|
-
if (resumeButtonText) {
|
|
1322
|
-
resumeButtonText.innerHTML = "Booking completed!";
|
|
1323
|
-
}
|
|
1324
|
-
break;
|
|
1325
|
-
}
|
|
1326
|
-
case "tripfusion-set-client-theme": {
|
|
1327
|
-
var messageData = message.data;
|
|
1328
|
-
var clientTheme = messageData.primary;
|
|
1329
|
-
var resumeButton = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.RESUME_BUTTON_ID);
|
|
1330
|
-
var widgetHeader = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_HEADER_ID);
|
|
1331
|
-
if (clientTheme) {
|
|
1332
|
-
if (resumeButton) {
|
|
1333
|
-
resumeButton.style["backgroundColor"] = clientTheme;
|
|
1334
|
-
}
|
|
1335
|
-
if (widgetHeader) {
|
|
1336
|
-
widgetHeader.style["backgroundColor"] = clientTheme;
|
|
1337
|
-
}
|
|
1338
|
-
}
|
|
1339
|
-
else {
|
|
1340
|
-
resumeButton === null || resumeButton === void 0 ? void 0 : resumeButton.removeAttribute("style");
|
|
1341
|
-
widgetHeader === null || widgetHeader === void 0 ? void 0 : widgetHeader.removeAttribute("style");
|
|
1342
|
-
}
|
|
1343
|
-
break;
|
|
1344
|
-
}
|
|
1345
|
-
default:
|
|
1346
|
-
break;
|
|
1347
|
-
}
|
|
1348
|
-
};
|
|
1349
|
-
}
|
|
1350
|
-
catch (error) {
|
|
1351
|
-
(0,_utils__WEBPACK_IMPORTED_MODULE_3__.logger)("Widget: failed to init Tripfusion JS SDK: ".concat(error));
|
|
1352
|
-
console.error("Tripfusion: failed to init SDK: ".concat(error));
|
|
1353
|
-
}
|
|
1354
|
-
}
|
|
1355
|
-
initTripfusionSdk();
|
|
1356
|
-
|
|
1357
|
-
/******/ })()
|
|
1358
|
-
;
|
|
1359
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUMwRztBQUNqQjtBQUN6Riw4QkFBOEIsbUZBQTJCLENBQUMsNEZBQXFDO0FBQy9GLDJGQUEyRjtBQUMzRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLGlGQUFpRixVQUFVLFlBQVksYUFBYSxXQUFXLFVBQVUsWUFBWSxhQUFhLE1BQU0sS0FBSyxZQUFZLGFBQWEsT0FBTyxLQUFLLFVBQVUsWUFBWSxXQUFXLFVBQVUsWUFBWSxhQUFhLGFBQWEsYUFBYSxXQUFXLFlBQVksV0FBVyxVQUFVLFlBQVksYUFBYSxhQUFhLE9BQU8sS0FBSyxZQUFZLGFBQWEsV0FBVyxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsT0FBTyxLQUFLLFlBQVksV0FBVyxVQUFVLFVBQVUsVUFBVSxZQUFZLE9BQU8sS0FBSyxZQUFZLFdBQVcsVUFBVSxVQUFVLFVBQVUsTUFBTSxLQUFLLFVBQVUsVUFBVSxZQUFZLGFBQWEsV0FBVyxVQUFVLFVBQVUsVUFBVSxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsV0FBVyxZQUFZLGFBQWEsT0FBTyxLQUFLLEtBQUssWUFBWSxXQUFXLFVBQVUsVUFBVSxNQUFNLE1BQU0sS0FBSyxVQUFVLFlBQVksYUFBYSxhQUFhLFdBQVcsWUFBWSxhQUFhLFdBQVcsT0FBTyxLQUFLLFVBQVUsVUFBVSxPQUFPLEtBQUssWUFBWSxhQUFhLGFBQWEsV0FBVyxZQUFZLGFBQWEsT0FBTyxLQUFLLFlBQVksYUFBYSxXQUFXLFVBQVUsVUFBVSxVQUFVLFlBQVksYUFBYSxXQUFXLFlBQVksWUFBWSxLQUFLLFlBQVksYUFBYSxPQUFPLEtBQUssWUFBWSxPQUFPLE1BQU0sWUFBWSxXQUFXLFlBQVksV0FBVyxVQUFVLFlBQVksYUFBYSxhQUFhLFdBQVcsVUFBVSxNQUFNLEtBQUssWUFBWSxNQUFNLE1BQU0sS0FBSyxZQUFZLGFBQWEsYUFBYSxhQUFhLE9BQU8sS0FBSyxZQUFZLGFBQWEsYUFBYSxhQUFhLE9BQU8sS0FBSyxVQUFVLE9BQU8sS0FBSyxZQUFZLGFBQWEsYUFBYSxhQUFhLE9BQU8sS0FBSyxVQUFVLE9BQU8sS0FBSyxZQUFZLGFBQWEsYUFBYSxXQUFXLE9BQU8sS0FBSyxVQUFVLFlBQVksYUFBYSxPQUFPLEtBQUssWUFBWSxhQUFhLGFBQWEsYUFBYSxPQUFPLEtBQUssWUFBWSxhQUFhLGFBQWEsYUFBYSxhQUFhLE9BQU8sS0FBSyxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsT0FBTyxLQUFLLEtBQUssWUFBWSxhQUFhLGFBQWEsYUFBYSxhQUFhLE9BQU8sS0FBSyxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsTUFBTSxNQUFNLEtBQUssS0FBSyxZQUFZLE1BQU0sTUFBTSxLQUFLLEtBQUssWUFBWSxNQUFNLE1BQU0sS0FBSyxLQUFLLFlBQVksTUFBTSxNQUFNLEtBQUssS0FBSyxZQUFZLE1BQU0sTUFBTSxLQUFLLEtBQUssWUFBWSxPQUFPLEtBQUssWUFBWSxNQUFNLE1BQU0sS0FBSyxLQUFLLFlBQVksT0FBTyxLQUFLLFlB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dUJBQVosWUFBWSxDQUFFLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDM0MsQ0FBQztvQkFDRCxNQUFNO2dCQUNWLENBQUM7Z0JBQ0Q7b0JBQ0ksTUFBTTtZQUNkLENBQUM7UUFDTCxDQUFDLENBQUM7SUFDTixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLDhDQUFNLENBQUMsb0RBQTZDLEtBQUssQ0FBRSxDQUFDLENBQUM7UUFDN0QsT0FBTyxDQUFDLEtBQUssQ0FBQywwQ0FBbUMsS0FBSyxDQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0FBQ0wsQ0FBQztBQUVELGlCQUFpQixFQUFFLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy9zdHlsZXMuY3NzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL3N0eWxlcy5jc3M/NDRiMiIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL2NvbnN0LnRzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL2RvbS50cyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy91dGlscy50cyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrL3dlYnBhY2svcnVudGltZS9ub25jZSIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJAaW1wb3J0IHVybChodHRwczovL3VzZS50eXBla2l0Lm5ldC9zYWc4Y2ViLmNzcyk7XCJdKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBgI3RyaXBmdXNpb24tbG9hZGVyIHtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgZm9udC1mYW1pbHk6IGZ1dHVyYS1sdC13MDEtYm9vaywgZnV0dXJhLWx0LXcwNS1ib29rLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuI3RyaXBmdXNpb24tbG9hZGVyIHNwYW4ge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xufVxuXG4jdHJpcGZ1c2lvbi1yZXN1bWUtYnV0dG9uIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDEycHggMzJweDtcbiAgICBib3gtc2hhZG93OiAwcHggMHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMjUpLCAwcHggNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgcmlnaHQ6IDMwcHg7XG4gICAgei1pbmRleDogMTAwMDAwMDAwMDAwO1xuICAgIGJvdHRvbTogNDBweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDQwMHB4KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDkyYjQzO1xuICAgIGJvcmRlci1yYWRpdXM6IDIzcHg7XG59XG5cbiN0cmlwZnVzaW9uLXJlc3VtZS1idXR0b24gc3BhbiB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICBmb250LWZhbWlseTogc3dlZXQtc2Fucy1wcm8sIHNhbnMtc2VyaWY7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBsZXR0ZXItc3BhY2luZzogMS41cHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4jdHJpcGZ1c2lvbi13aWRnZXQtd3JhcHBlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwKTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC41cyBlYXNlLW91dDtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHRvcDogMHB4O1xuICAgIHJpZ2h0OiAwcHg7XG59XG5cbiN0cmlwZnVzaW9uLXdpZGdldC1pbm5lci13cmFwcGVyIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIG1pbi13aWR0aDogMzIwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHJpZ2h0OiAwcHg7XG4gICAgYm90dG9tOiAwcHg7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMik7XG4gICAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAwOTM4ZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICN0cmlwZnVzaW9uLXdpZGdldC1pbm5lci13cmFwcGVyIHtcbiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0MHB4KTtcbiAgICAgICAgcmlnaHQ6IDIwcHg7XG4gICAgICAgIGJvdHRvbTogMjBweDtcbiAgICAgICAgd2lkdGg6IDUwMHB4O1xuICAgIH1cbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LWhlYWRlciB7XG4gICAgaGVpZ2h0OiA2MHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwOTJiNDM7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMWYxZjE7XG4gICAgcGFkZGluZzogMCAxNnB4IDAgMTZweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGNvbG9yOiB3aGl0ZTtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LWlmcmFtZSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJvcmRlcjogbm9uZTtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LWhlYWRlci10aXRsZSB7XG4gICAgZm9udC1mYW1pbHk6IHN3ZWV0LXNhbnMtcHJvLCBzYW5zLXNlcmlmO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IDEuNXB4O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbiN0cmlwZnVzaW9uLXdpZGdldC1jbG9zZS1idXR0b24ge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiAyZW07XG4gICAgaGVpZ2h0OiAyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgdGV4dC1pbmRlbnQ6IDEwMCU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IHNvbGlkIDAgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG4gICAgfVxuXG4gICAgJjpiZWZvcmUsXG4gICAgJjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAyNSU7XG4gICAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMC4wNjI1ZW0pO1xuICAgICAgICB3aWR0aDogMC4xMjVlbTtcbiAgICAgICAgaGVpZ2h0OiA1MCU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMTI1ZW07XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcbiAgICAgICAgYmFja2dyb3VuZDogY3VycmVudGNvbG9yO1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgfVxuXG4gICAgJjphZnRlciB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XG4gICAgfVxufVxuXG4uZGlzbWlzcy1idG4tc2xpZGUtaW4ge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogNTAwbXM7XG4gICAgLW1vei10cmFuc2l0aW9uOiA1MDBtcztcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcbn1cblxuLmRpc21pc3MtYnRuLXNsaWRlLW91dCB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiA1MDBtcztcbiAgICAtbW96LXRyYW5zaXRpb246IDUwMG1zO1xuICAgIHRyYW5zaXRpb246IDUwMG1zO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0MDBweCkgIWltcG9ydGFudDtcbn1cblxuLmRpc21pc3MtYnRuLXNsaWRlLW91dCBzcGFuIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4uZGlzbWlzcy1idG4tcmVzaXplLWluIHtcbiAgICB3aWR0aDogNDZweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xuICAgIHRyYW5zaXRpb246IDUwMG1zO1xuICAgIHJpZ2h0OiAzMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5kaXNtaXNzLWJ0bi1yZXNpemUtaW4gc3BhbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLmRpc21pc3MtYnRuLXJlc2l6ZS1pbjpob3ZlciB7XG4gICAgd2lkdGg6IDIxN3B4ICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiA0NnB4ICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIDMwMG1zIGxpbmVhcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5kaXNtaXNzLWJ0bi1yZXNpemUtaW46aG92ZXIgc3BhbiB7XG4gICAgZGlzcGxheTogaW5saW5lO1xuICAgIGhlaWdodDogMjBweCAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5kaXNtaXNzLWJ0bi1yZXNpemUtb3V0IHtcbiAgICB3aWR0aDogNDZweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xuICAgIHRyYW5zaXRpb246IDUwMG1zO1xuICAgIHJpZ2h0OiAtMTAwcHggIWltcG9ydGFudDtcbn1cblxuLnNsaWRlLWluIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgYW5pbWF0aW9uOiBzbGlkZS1pbiAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLWluIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICB6LWluZGV4OiAxMDAwMDAwMDAwMDAwO1xufVxuXG4uc2xpZGUtb3V0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgYW5pbWF0aW9uOiBzbGlkZS1vdXQgMXMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtb3V0IDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgei1pbmRleDogLTEwMDAwMDAwMDAwMDA7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ5NXB4KSB7XG4gICAgLnNsaWRlLWluIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICAgICAgYW5pbWF0aW9uOiBzbGlkZS11cCAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS11cCAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgICAgIHotaW5kZXg6IDEwMDAwMDAwMDAwMDA7XG4gICAgfVxuXG4gICAgLnNsaWRlLW91dCB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgICAgIGFuaW1hdGlvbjogc2xpZGUtZG93biAwLjVzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS1kb3duIDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgICAgIHotaW5kZXg6IC0xMDAwMDAwMDAwMDAwO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZS1pbiB7XG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtaW4ge1xuICAgIDEwMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlLXVwIHtcbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS11cCB7XG4gICAgMTAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGUtb3V0IHtcbiAgICAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS1vdXQge1xuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGUtZG93biB7XG4gICAgMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtZG93biB7XG4gICAgMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIH1cbn1cbmAsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vc3JjL3N0eWxlcy5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUE7SUFDSSxZQUFZO0lBQ1osa0JBQWtCO0lBQ2xCLGtCQUFrQjtJQUNsQixRQUFRO0lBQ1IsU0FBUztJQUNULGlGQUFpRjtJQUNqRixnQ0FBZ0M7QUFDcEM7QUFDQTtJQUNJLGlCQUFpQjtJQUNqQixpQkFBaUI7QUFDckI7O0FBRUE7SUFDSSxlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLGVBQWU7SUFDZixhQUFhO0lBQ2IsNkJBQTZCO0lBQzdCLG1CQUFtQjtJQUNuQixrQkFBa0I7SUFDbEIsMkVBQTJFO0lBQzNFLFdBQVc7SUFDWCxxQkFBcUI7SUFDckIsWUFBWTtJQUNaLFlBQVk7SUFDWiw0QkFBNEI7SUFDNUIseUJBQXlCO0lBQ3pCLG1CQUFtQjtBQUN2Qjs7QUFFQTtJQUNJLHlCQUF5QjtJQUN6Qix1Q0FBdUM7SUFDdkMsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIscUJBQXFCO0lBQ3JCLG9DQUFvQztJQUNwQyx1QkFBdUI7QUFDM0I7O0FBRUE7SUFDSSw0QkFBNEI7SUFDNUIsZUFBZTtJQUNmLE1BQU07SUFDTixRQUFRO0lBQ1IsV0FBVztJQUNYLG9DQUFvQztBQUN4Qzs7QUFFQTtJQUNJLGtCQUFrQjtJQUNsQixXQUFXO0lBQ1gsWUFBWTtJQUNaLFFBQVE7SUFDUixVQUFVO0FBQ2Q7O0FBRUE7SUFDSSxlQUFlO0lBQ2YsYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLFlBQVk7SUFDWixVQUFVO0lBQ1YsV0FBVztJQUNYLGlCQUFpQjtJQUNqQixrQkFBa0I7SUFDbEIsMkNBQTJDO0lBQzNDLHVEQUF1RDtJQUN2RCxnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQix5QkFBeUI7QUFDN0I7O0FBRUE7SUFDSTtRQUNJLHlCQUF5QjtRQUN6QixXQUFXO1FBQ1gsWUFBWTtRQUNaLFlBQVk7SUFDaEI7QUFDSjs7QUFFQTtJQUNJLFlBQVk7SUFDWix5QkFBeUI7SUFDekIsZ0NBQWdDO0lBQ2hDLHNCQUFzQjtJQUN0QixhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLG1CQUFtQjtJQUNuQixZQUFZO0FBQ2hCOztBQUVBO0lBQ0ksWUFBWTtJQUNaLFlBQVk7QUFDaEI7O0FBRUE7SUFDSSx1Q0FBdUM7SUFDdkMsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixlQUFlO0lBQ2YscUJBQXFCO0lBQ3JCLHlCQUF5QjtBQUM3Qjs7QUFFQTtJQUNJLGdCQUFnQjtJQUNoQixrQkFBa0I7SUFDbEIsWUFBWTtJQUNaLFVBQVU7SUFDVixVQUFVO0lBQ1YsV0FBVztJQUNYLGtCQUFrQjtJQUNsQix1QkFBdUI7SUFDdkIsYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixlQUFlOztJQUVmO1FBQ0ksNEJBQTRCO1FBQzVCLHFDQUFxQztJQUN6Qzs7SUFFQTtRQUNJLHFDQUFxQztJQUN6Qzs7SUFFQTs7UUFFSSxrQkFBa0I7UUFDbEIsUUFBUTtRQUNSLDBCQUEwQjtRQUMxQixjQUFjO1FBQ2QsV0FBVztRQUNYLHNCQUFzQjtRQUN0Qix3QkFBd0I7UUFDeEIsd0JBQXdCO1FBQ3hCLFlBQVk7UUFDWixXQUFXO0lBQ2Y7O0lBRUE7UUFDSSx5QkFBeUI7SUFDN0I7QUFDSjs7QUFFQTtJQUNJLHlCQUF5QjtJQUN6QixzQkFBc0I7SUFDdEIsaUJBQWlCO0lBQ2pCLG1DQUFtQztBQUN2Qzs7QUFFQTtJQUNJLHlCQUF5QjtJQUN6QixzQkFBc0I7SUFDdEIsaUJBQWlCO0lBQ2pCLHVDQUF1QztBQUMzQzs7QUFFQTtJQUNJLGFBQWE7QUFDakI7O0FBRUE7SUFDSSxzQkFBc0I7SUFDdEIsdUJBQXVCO0lBQ3ZCLGlCQUFpQjtJQUNqQixzQkFBc0I7QUFDMUI7O0FBRUE7SUFDSSxhQUFhO0FBQ2pCOztBQUVBO0lBQ0ksdUJBQXVCO0lBQ3ZCLHVCQUF1QjtJQUN2Qiw0QkFBNEI7SUFDNUIsZUFBZTtBQUNuQjs7QUFFQTtJQUNJLGVBQWU7SUFDZix1QkFBdUI7SUFDdkIsZ0JBQWdCO0FBQ3BCOztBQUVBO0lBQ0ksc0JBQXNCO0lBQ3RCLHVCQUF1QjtJQUN2QixpQkFBaUI7SUFDakIsd0JBQXdCO0FBQzVCOztBQUVBO0lBQ0ksMkJBQTJCO0lBQzNCLG1DQUFtQztJQUNuQyw0Q0FBNEM7SUFDNUMsb0RBQW9EO0lBQ3BELHNCQUFzQjtBQUMxQjs7QUFFQTtJQUNJLDJCQUEyQjtJQUMzQixtQ0FBbUM7SUFDbkMsMkNBQTJDO0lBQzNDLG1EQUFtRDtJQUNuRCx1QkFBdUI7QUFDM0I7O0FBRUE7SUFDSTtRQUNJLDJCQUEyQjtRQUMzQixtQ0FBbUM7UUFDbkMsNENBQTRDO1FBQzVDLG9EQUFvRDtRQUNwRCxzQkFBc0I7SUFDMUI7O0lBRUE7UUFDSSwyQkFBMkI7UUFDM0IsbUNBQW1DO1FBQ25DLDhDQUE4QztRQUM5QyxvREFBb0Q7UUFDcEQsdUJBQXVCO0lBQzNCO0FBQ0o7O0FBRUE7SUFDSTtRQUNJLHlCQUF5QjtJQUM3QjtBQUNKOztBQUVBO0lBQ0k7UUFDSSxpQ0FBaUM7SUFDckM7QUFDSjs7QUFFQTtJQUNJO1FBQ0kseUJBQXlCO0lBQzdCO0FBQ0o7O0FBRUE7SUFDSTtRQUNJLGlDQUFpQztJQUNyQztBQUNKOztBQUVBO0lBQ0k7UUFDSSx5QkFBeUI7SUFDN0I7O0lBRUE7UUFDSSwyQkFBMkI7SUFDL0I7QUFDSjs7QUFFQTtJQUNJO1FBQ0ksaUNBQWlDO0lBQ3JDOztJQUVBO1FBQ0ksbUNBQW1DO0lBQ3ZDO0FBQ0o7O0FBRUE7SUFDSTtRQUNJLHlCQUF5QjtJQUM3Qjs7SUFFQTtRQUNJLDJCQUEyQjtJQUMvQjtBQUNKOztBQUVBO0lBQ0k7UUFDSSxpQ0FBaUM7SUFDckM7O0lBRUE7UUFDSSxtQ0FBbUM7SUFDdkM7QUFDSlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAaW1wb3J0IHVybChcXFwiaHR0cHM6Ly91c2UudHlwZWtpdC5uZXQvc2FnOGNlYi5jc3NcXFwiKTtcXG5cXG4jdHJpcGZ1c2lvbi1sb2FkZXIge1xcbiAgICBjb2xvcjogd2hpdGU7XFxuICAgIG1hcmdpbi1yaWdodDogLTUwJTtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDUwJTtcXG4gICAgbGVmdDogNTAlO1xcbiAgICBmb250LWZhbWlseTogZnV0dXJhLWx0LXcwMS1ib29rLCBmdXR1cmEtbHQtdzA1LWJvb2ssIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xcbn1cXG4jdHJpcGZ1c2lvbi1sb2FkZXIgc3BhbiB7XFxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgICBmb250LXNpemU6IDEuM3JlbTtcXG59XFxuXFxuI3RyaXBmdXNpb24tcmVzdW1lLWJ1dHRvbiB7XFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgcGFkZGluZzogMTJweCAzMnB4O1xcbiAgICBib3gtc2hhZG93OiAwcHggMHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMjUpLCAwcHggNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxuICAgIHJpZ2h0OiAzMHB4O1xcbiAgICB6LWluZGV4OiAxMDAwMDAwMDAwMDA7XFxuICAgIGJvdHRvbTogNDBweDtcXG4gICAgYm9yZGVyOiBub25lO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNDAwcHgpO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDkyYjQzO1xcbiAgICBib3JkZXItcmFkaXVzOiAyM3B4O1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi1yZXN1bWUtYnV0dG9uIHNwYW4ge1xcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xcbiAgICBmb250LWZhbWlseTogc3dlZXQtc2Fucy1wcm8sIHNhbnMtc2VyaWY7XFxuICAgIGZvbnQtc2l6ZTogMXJlbTtcXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcXG4gICAgbGV0dGVyLXNwYWNpbmc6IDEuNXB4O1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7XFxuICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtd3JhcHBlciB7XFxuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMCk7XFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gICAgdG9wOiAwO1xcbiAgICByaWdodDogMDtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC41cyBlYXNlLW91dDtcXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0IHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICB0b3A6IDBweDtcXG4gICAgcmlnaHQ6IDBweDtcXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0LWlubmVyLXdyYXBwZXIge1xcbiAgICBwb3NpdGlvbjogZml4ZWQ7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIG1pbi13aWR0aDogMzIwcHg7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIHJpZ2h0OiAwcHg7XFxuICAgIGJvdHRvbTogMHB4O1xcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xcbiAgICBib3gtc2hhZG93OiAwIDJweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpO1xcbiAgICBmb250LWZhbWlseTogXFxcIlJvYm90b1xcXCIsIFxcXCJIZWx2ZXRpY2FcXFwiLCBcXFwiQXJpYWxcXFwiLCBzYW5zLXNlcmlmO1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICBmb250LXNpemU6IDFyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICAgIGxldHRlci1zcGFjaW5nOiAwLjAwOTM4ZW07XFxufVxcblxcbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xcbiAgICAjdHJpcGZ1c2lvbi13aWRnZXQtaW5uZXItd3JhcHBlciB7XFxuICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDQwcHgpO1xcbiAgICAgICAgcmlnaHQ6IDIwcHg7XFxuICAgICAgICBib3R0b206IDIwcHg7XFxuICAgICAgICB3aWR0aDogNTAwcHg7XFxuICAgIH1cXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0LWhlYWRlciB7XFxuICAgIGhlaWdodDogNjBweDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzA5MmI0MztcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMWYxZjE7XFxuICAgIHBhZGRpbmc6IDAgMTZweCAwIDE2cHg7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgY29sb3I6IHdoaXRlO1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtaWZyYW1lIHtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICBib3JkZXI6IG5vbmU7XFxufVxcblxcbiN0cmlwZnVzaW9uLXdpZGdldC1oZWFkZXItdGl0bGUge1xcbiAgICBmb250LWZhbWlseTogc3dlZXQtc2Fucy1wcm8sIHNhbnMtc2VyaWY7XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XFxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAgIGZvbnQtc2l6ZTogMXJlbTtcXG4gICAgbGV0dGVyLXNwYWNpbmc6IDEuNXB4O1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtY2xvc2UtYnV0dG9uIHtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBib3JkZXI6IG5vbmU7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIHdpZHRoOiAyZW07XFxuICAgIGhlaWdodDogMmVtO1xcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgICBmb250OiBpbmhlcml0O1xcbiAgICB0ZXh0LWluZGVudDogMTAwJTtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgICAmOmZvY3VzIHtcXG4gICAgICAgIG91dGxpbmU6IHNvbGlkIDAgdHJhbnNwYXJlbnQ7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDQpO1xcbiAgICB9XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA0KTtcXG4gICAgfVxcblxcbiAgICAmOmJlZm9yZSxcXG4gICAgJjphZnRlciB7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICB0b3A6IDI1JTtcXG4gICAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMC4wNjI1ZW0pO1xcbiAgICAgICAgd2lkdGg6IDAuMTI1ZW07XFxuICAgICAgICBoZWlnaHQ6IDUwJTtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMTI1ZW07XFxuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XFxuICAgICAgICBiYWNrZ3JvdW5kOiBjdXJyZW50Y29sb3I7XFxuICAgICAgICBjb2xvcjogd2hpdGU7XFxuICAgICAgICBjb250ZW50OiBcXFwiXFxcIjtcXG4gICAgfVxcblxcbiAgICAmOmFmdGVyIHtcXG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XFxuICAgIH1cXG59XFxuXFxuLmRpc21pc3MtYnRuLXNsaWRlLWluIHtcXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgLW1vei10cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGlzbWlzcy1idG4tc2xpZGUtb3V0IHtcXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgLW1vei10cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0MDBweCkgIWltcG9ydGFudDtcXG59XFxuXFxuLmRpc21pc3MtYnRuLXNsaWRlLW91dCBzcGFuIHtcXG4gICAgZGlzcGxheTogbm9uZTtcXG59XFxuXFxuLmRpc21pc3MtYnRuLXJlc2l6ZS1pbiB7XFxuICAgIHdpZHRoOiA0NnB4ICFpbXBvcnRhbnQ7XFxuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgcmlnaHQ6IDMwcHggIWltcG9ydGFudDtcXG59XFxuXFxuLmRpc21pc3MtYnRuLXJlc2l6ZS1pbiBzcGFuIHtcXG4gICAgZGlzcGxheTogbm9uZTtcXG59XFxuXFxuLmRpc21pc3MtYnRuLXJlc2l6ZS1pbjpob3ZlciB7XFxuICAgIHdpZHRoOiAyMTdweCAhaW1wb3J0YW50O1xcbiAgICBoZWlnaHQ6IDQ2cHggIWltcG9ydGFudDtcXG4gICAgdHJhbnNpdGlvbjogYWxsIDMwMG1zIGxpbmVhcjtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4uZGlzbWlzcy1idG4tcmVzaXplLWluOmhvdmVyIHNwYW4ge1xcbiAgICBkaXNwbGF5OiBpbmxpbmU7XFxuICAgIGhlaWdodDogMjBweCAhaW1wb3J0YW50O1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG5cXG4uZGlzbWlzcy1idG4tcmVzaXplLW91dCB7XFxuICAgIHdpZHRoOiA0NnB4ICFpbXBvcnRhbnQ7XFxuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgcmlnaHQ6IC0xMDBweCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uc2xpZGUtaW4ge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcbiAgICBhbmltYXRpb246IHNsaWRlLWluIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLWluIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgei1pbmRleDogMTAwMDAwMDAwMDAwMDtcXG59XFxuXFxuLnNsaWRlLW91dCB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIGFuaW1hdGlvbjogc2xpZGUtb3V0IDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS1vdXQgMXMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgei1pbmRleDogLTEwMDAwMDAwMDAwMDA7XFxufVxcblxcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ5NXB4KSB7XFxuICAgIC5zbGlkZS1pbiB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgICAgIGFuaW1hdGlvbjogc2xpZGUtdXAgMC44cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLXVwIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgICAgIHotaW5kZXg6IDEwMDAwMDAwMDAwMDA7XFxuICAgIH1cXG5cXG4gICAgLnNsaWRlLW91dCB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgICAgIGFuaW1hdGlvbjogc2xpZGUtZG93biAwLjVzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtZG93biAxcyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICAgICAgei1pbmRleDogLTEwMDAwMDAwMDAwMDA7XFxuICAgIH1cXG59XFxuXFxuQGtleWZyYW1lcyBzbGlkZS1pbiB7XFxuICAgIDEwMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcXG4gICAgfVxcbn1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtaW4ge1xcbiAgICAxMDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcXG4gICAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIHNsaWRlLXVwIHtcXG4gICAgMTAwJSB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xcbiAgICB9XFxufVxcblxcbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS11cCB7XFxuICAgIDEwMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xcbiAgICB9XFxufVxcblxcbkBrZXlmcmFtZXMgc2xpZGUtb3V0IHtcXG4gICAgMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcXG4gICAgfVxcblxcbiAgICAxMDAlIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gICAgfVxcbn1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtb3V0IHtcXG4gICAgMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xcbiAgICB9XFxuXFxuICAgIDEwMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIH1cXG59XFxuXFxuQGtleWZyYW1lcyBzbGlkZS1kb3duIHtcXG4gICAgMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcXG4gICAgfVxcblxcbiAgICAxMDAlIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgfVxcbn1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtZG93biB7XFxuICAgIDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcXG4gICAgfVxcblxcbiAgICAxMDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbiAgICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTtcblxuICAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cbiAgICAgIGNvbnRlbnQgKz0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTtcblxuICAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNba11bMF07XG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIF9rID0gMDsgX2sgPCBtb2R1bGVzLmxlbmd0aDsgX2srKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfa10pO1xuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bNV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChtZWRpYSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc3VwcG9ydHMpIHtcbiAgICAgICAgaWYgKCFpdGVtWzRdKSB7XG4gICAgICAgICAgaXRlbVs0XSA9IFwiXCIuY29uY2F0KHN1cHBvcnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNF0gPSBzdXBwb3J0cztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gIHZhciBjb250ZW50ID0gaXRlbVsxXTtcbiAgdmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuICBpZiAodHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShjc3NNYXBwaW5nKSkpKTtcbiAgICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG4gICAgcmV0dXJuIFtjb250ZW50XS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKFwiXFxuXCIpO1xuICB9XG4gIHJldHVybiBbY29udGVudF0uam9pbihcIlxcblwiKTtcbn07IiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3N0eWxlcy5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZXMuY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBzdHlsZXNJbkRPTSA9IFtdO1xuZnVuY3Rpb24gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcikge1xuICB2YXIgcmVzdWx0ID0gLTE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzSW5ET00ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3R5bGVzSW5ET01baV0uaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xuICAgICAgcmVzdWx0ID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpIHtcbiAgdmFyIGlkQ291bnRNYXAgPSB7fTtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXTtcbiAgICB2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcbiAgICB2YXIgY291bnQgPSBpZENvdW50TWFwW2lkXSB8fCAwO1xuICAgIHZhciBpZGVudGlmaWVyID0gXCJcIi5jb25jYXQoaWQsIFwiIFwiKS5jb25jYXQoY291bnQpO1xuICAgIGlkQ291bnRNYXBbaWRdID0gY291bnQgKyAxO1xuICAgIHZhciBpbmRleEJ5SWRlbnRpZmllciA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgIHZhciBvYmogPSB7XG4gICAgICBjc3M6IGl0ZW1bMV0sXG4gICAgICBtZWRpYTogaXRlbVsyXSxcbiAgICAgIHNvdXJjZU1hcDogaXRlbVszXSxcbiAgICAgIHN1cHBvcnRzOiBpdGVtWzRdLFxuICAgICAgbGF5ZXI6IGl0ZW1bNV1cbiAgICB9O1xuICAgIGlmIChpbmRleEJ5SWRlbnRpZmllciAhPT0gLTEpIHtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS5yZWZlcmVuY2VzKys7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0udXBkYXRlcihvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdXBkYXRlciA9IGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpO1xuICAgICAgb3B0aW9ucy5ieUluZGV4ID0gaTtcbiAgICAgIHN0eWxlc0luRE9NLnNwbGljZShpLCAwLCB7XG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIHVwZGF0ZXI6IHVwZGF0ZXIsXG4gICAgICAgIHJlZmVyZW5jZXM6IDFcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50aWZpZXIpO1xuICB9XG4gIHJldHVybiBpZGVudGlmaWVycztcbn1cbmZ1bmN0aW9uIGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpIHtcbiAgdmFyIGFwaSA9IG9wdGlvbnMuZG9tQVBJKG9wdGlvbnMpO1xuICBhcGkudXBkYXRlKG9iaik7XG4gIHZhciB1cGRhdGVyID0gZnVuY3Rpb24gdXBkYXRlcihuZXdPYmopIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJiBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJiBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwICYmIG5ld09iai5zdXBwb3J0cyA9PT0gb2JqLnN1cHBvcnRzICYmIG5ld09iai5sYXllciA9PT0gb2JqLmxheWVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGFwaS51cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbW92ZSgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHVwZGF0ZXI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChsaXN0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBsaXN0ID0gbGlzdCB8fCBbXTtcbiAgdmFyIGxhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZShuZXdMaXN0KSB7XG4gICAgbmV3TGlzdCA9IG5ld0xpc3QgfHwgW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW2ldO1xuICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleF0ucmVmZXJlbmNlcy0tO1xuICAgIH1cbiAgICB2YXIgbmV3TGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKG5ld0xpc3QsIG9wdGlvbnMpO1xuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2lkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbX2ldO1xuICAgICAgdmFyIF9pbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKF9pZGVudGlmaWVyKTtcbiAgICAgIGlmIChzdHlsZXNJbkRPTVtfaW5kZXhdLnJlZmVyZW5jZXMgPT09IDApIHtcbiAgICAgICAgc3R5bGVzSW5ET01bX2luZGV4XS51cGRhdGVyKCk7XG4gICAgICAgIHN0eWxlc0luRE9NLnNwbGljZShfaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICBsYXN0SWRlbnRpZmllcnMgPSBuZXdMYXN0SWRlbnRpZmllcnM7XG4gIH07XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgbWVtbyA9IHt9O1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGdldFRhcmdldCh0YXJnZXQpIHtcbiAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB2YXIgc3R5bGVUYXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7XG5cbiAgICAvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuICAgIGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYWNjZXNzIHRvIGlmcmFtZSBpcyBibG9ja2VkXG4gICAgICAgIC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gc3R5bGVUYXJnZXQuY29udGVudERvY3VtZW50LmhlYWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgbWVtb1t0YXJnZXRdID0gc3R5bGVUYXJnZXQ7XG4gIH1cbiAgcmV0dXJuIG1lbW9bdGFyZ2V0XTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBpbnNlcnRCeVNlbGVjdG9yKGluc2VydCwgc3R5bGUpIHtcbiAgdmFyIHRhcmdldCA9IGdldFRhcmdldChpbnNlcnQpO1xuICBpZiAoIXRhcmdldCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0JyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG4gIH1cbiAgdGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0QnlTZWxlY3RvcjsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgb3B0aW9ucy5zZXRBdHRyaWJ1dGVzKGVsZW1lbnQsIG9wdGlvbnMuYXR0cmlidXRlcyk7XG4gIG9wdGlvbnMuaW5zZXJ0KGVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG4gIHJldHVybiBlbGVtZW50O1xufVxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzKHN0eWxlRWxlbWVudCkge1xuICB2YXIgbm9uY2UgPSB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09IFwidW5kZWZpbmVkXCIgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG4gIGlmIChub25jZSkge1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBub25jZSk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKSB7XG4gIHZhciBjc3MgPSBcIlwiO1xuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQob2JqLnN1cHBvcnRzLCBcIikge1wiKTtcbiAgfVxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwiQG1lZGlhIFwiLmNvbmNhdChvYmoubWVkaWEsIFwiIHtcIik7XG4gIH1cbiAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBvYmoubGF5ZXIgIT09IFwidW5kZWZpbmVkXCI7XG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJAbGF5ZXJcIi5jb25jYXQob2JqLmxheWVyLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQob2JqLmxheWVyKSA6IFwiXCIsIFwiIHtcIik7XG4gIH1cbiAgY3NzICs9IG9iai5jc3M7XG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuICBpZiAoc291cmNlTWFwICYmIHR5cGVvZiBidG9hICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH1cblxuICAvLyBGb3Igb2xkIElFXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cbiAgb3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbn1cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpIHtcbiAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gIGlmIChzdHlsZUVsZW1lbnQucGFyZW50Tm9kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGRvbUFQSShvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoKSB7fSxcbiAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge31cbiAgICB9O1xuICB9XG4gIHZhciBzdHlsZUVsZW1lbnQgPSBvcHRpb25zLmluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKTtcbiAgcmV0dXJuIHtcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShvYmopIHtcbiAgICAgIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKTtcbiAgICB9LFxuICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCk7XG4gICAgfVxuICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBkb21BUEk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQpIHtcbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCk7XG4gICAgfVxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBzdHlsZVRhZ1RyYW5zZm9ybTsiLCJleHBvcnQgY29uc3QgVFJJUEZVU0lPTl9CQVNFX1VSTCA9XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCJodHRwczovL2RldmVsb3AuYm9va2luZ3MudmFjYXlvdS5jb20vXCIgOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9cIjtcbmV4cG9ydCBjb25zdCBTREtfU0NSSVBUX0lEID0gXCJ0cmlwZnVzaW9uLXNka1wiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9JRCA9IFwidHJpcGZ1c2lvbi13aWRnZXRcIjtcbmV4cG9ydCBjb25zdCBXSURHRVRfSU5ORVJfV1JBUFBFUl9JRCA9IFwidHJpcGZ1c2lvbi13aWRnZXQtaW5uZXItd3JhcHBlclwiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9IRUFERVJfSUQgPSBcInRyaXBmdXNpb24td2lkZ2V0LWhlYWRlclwiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9DTE9TRV9CVVRUT05fSUQgPSBcInRyaXBmdXNpb24td2lkZ2V0LWNsb3NlLWJ1dHRvblwiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9IRUFERVJfVElUTEVfSUQgPSBcInRyaXBmdXNpb24td2lkZ2V0LWhlYWRlci10aXRsZVwiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9XUkFQUEVSX0lEID0gXCJ0cmlwZnVzaW9uLXdpZGdldC13cmFwcGVyXCI7XG5leHBvcnQgY29uc3QgV0lER0VUX0lGUkFNRV9JRCA9IFwidHJpcGZ1c2lvbi13aWRnZXQtaWZyYW1lXCI7XG5leHBvcnQgY29uc3QgUkVTVU1FX0JVVFRPTl9JRCA9IFwidHJpcGZ1c2lvbi1yZXN1bWUtYnV0dG9uXCI7XG5leHBvcnQgY29uc3QgTE9BREVSX0lEID0gXCJ0cmlwZnVzaW9uLWxvYWRlclwiO1xuZXhwb3J0IGNvbnN0IEJPT0tJTkdfTU9ERSA9IHtcbiAgICBub3JtYWw6IFwibm9ybWFsXCIsXG4gICAgYXBwZW5kOiBcImFwcGVuZFwiLFxufSBhcyBjb25zdDtcbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB0eXBlIHsgV2lkZ2V0UHJvcHMgfSBmcm9tIFwiLi9pbmRleC50eXBlc1wiO1xuaW1wb3J0IHtcbiAgICBCT09LSU5HX01PREUsXG4gICAgTE9BREVSX0lELFxuICAgIFJFU1VNRV9CVVRUT05fSUQsXG4gICAgVFJJUEZVU0lPTl9CQVNFX1VSTCxcbiAgICBXSURHRVRfQ0xPU0VfQlVUVE9OX0lELFxuICAgIFdJREdFVF9IRUFERVJfSUQsXG4gICAgV0lER0VUX0hFQURFUl9USVRMRV9JRCxcbiAgICBXSURHRVRfSUQsXG4gICAgV0lER0VUX0lGUkFNRV9JRCxcbiAgICBXSURHRVRfSU5ORVJfV1JBUFBFUl9JRCxcbiAgICBXSURHRVRfV1JBUFBFUl9JRCxcbn0gZnJvbSBcIi4vY29uc3RcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5TG9hZGluZ092ZXJsYXkoKSB7XG4gICAgY29uc3Qgd2lkZ2V0V3JhcHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9XUkFQUEVSX0lEKTtcblxuICAgIGlmICh3aWRnZXRXcmFwcGVyKSB7XG4gICAgICAgIGNvbnN0IGxvYWRpbmdEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICBsb2FkaW5nRGl2LmlkID0gTE9BREVSX0lEO1xuICAgICAgICBsb2FkaW5nRGl2LmlubmVySFRNTCA9IFwiTG9hZGluZyA8c3Bhbj5UcmlwRnVzaW9uPC9zcGFuPlwiO1xuICAgICAgICB3aWRnZXRXcmFwcGVyLmFwcGVuZENoaWxkKGxvYWRpbmdEaXYpO1xuXG4gICAgICAgIHdpZGdldFdyYXBwZXIuc3R5bGUuekluZGV4ID0gYCR7MWUxMX1gO1xuICAgICAgICB3aWRnZXRXcmFwcGVyLnN0eWxlLmhlaWdodCA9IFwiMTAwJVwiO1xuICAgICAgICB3aWRnZXRXcmFwcGVyLnN0eWxlLmJhY2tncm91bmQgPSBcInJnYmEoMCwgMCwgMCwgLjc0KVwiO1xuICAgICAgICBsb2NrUGFnZVNjcm9sbCgpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJlc3VtZUJ1dHRvbigpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB3aWRnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLFxuICAgICAgICAgICAgd2lkZ2V0V3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksXG4gICAgICAgICAgICB3aWRnZXRJbm5lcldyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLFxuICAgICAgICAgICAgd2lkZ2V0SGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxcbiAgICAgICAgICAgIHdpZGdldEhlYWRlclRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIiksXG4gICAgICAgICAgICB3aWRnZXRDbG9zZUJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiksXG4gICAgICAgICAgICByZXN1bWVCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIpLFxuICAgICAgICAgICAgcmVzdW1lQnV0dG9uVGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuXG4gICAgICAgIC8vIENvbmZpZ3VyZSByZXN1bWUgYnV0dG9uXG4gICAgICAgIHJlc3VtZUJ1dHRvbi5pZCA9IFJFU1VNRV9CVVRUT05fSUQ7XG5cbiAgICAgICAgLy8gQ29uZmlndXJlIGJ1dHRvbiB0ZXh0XG4gICAgICAgIHJlc3VtZUJ1dHRvblRleHQuaW5uZXJIVE1MID0gXCJDb21wbGV0ZSB5b3VyIGJvb2tpbmdcIjtcbiAgICAgICAgcmVzdW1lQnV0dG9uLmFwcGVuZENoaWxkKHJlc3VtZUJ1dHRvblRleHQpO1xuXG4gICAgICAgIC8vIENvbmZpZ3VyZSB3aWRnZXQgYW5kIHdyYXBwZXJcbiAgICAgICAgd2lkZ2V0LmlkID0gV0lER0VUX0lEO1xuICAgICAgICB3aWRnZXQuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgICB3aWRnZXRXcmFwcGVyLmlkID0gV0lER0VUX1dSQVBQRVJfSUQ7XG5cbiAgICAgICAgLy8gQ29uZmlndXJlIHdpZGdldCBpbm5lciB3cmFwcGVyXG4gICAgICAgIHdpZGdldElubmVyV3JhcHBlci5pZCA9IFdJREdFVF9JTk5FUl9XUkFQUEVSX0lEO1xuICAgICAgICB3aWRnZXRIZWFkZXIuaWQgPSBXSURHRVRfSEVBREVSX0lEO1xuICAgICAgICB3aWRnZXRDbG9zZUJ1dHRvbi5pZCA9IFdJREdFVF9DTE9TRV9CVVRUT05fSUQ7XG4gICAgICAgIHdpZGdldENsb3NlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBjbG9zZVdpZGdldCk7XG4gICAgICAgIHdpZGdldEhlYWRlclRpdGxlLmlkID0gV0lER0VUX0hFQURFUl9USVRMRV9JRDtcbiAgICAgICAgd2lkZ2V0SGVhZGVyVGl0bGUuaW5uZXJIVE1MID0gXCJCb29raW5nXCI7XG5cbiAgICAgICAgLy8gQXBwZW5kIHdpZGdldCB0byB3cmFwcGVyIGFuZCB3cmFwcGVyIHRvIGRvY3VtZW50IGJvZHlcbiAgICAgICAgd2lkZ2V0V3JhcHBlci5hcHBlbmRDaGlsZCh3aWRnZXQpO1xuICAgICAgICB3aWRnZXQuYXBwZW5kQ2hpbGQod2lkZ2V0SW5uZXJXcmFwcGVyKTtcbiAgICAgICAgd2lkZ2V0SW5uZXJXcmFwcGVyLmFwcGVuZENoaWxkKHdpZGdldEhlYWRlcik7XG4gICAgICAgIHdpZGdldEhlYWRlci5hcHBlbmRDaGlsZCh3aWRnZXRIZWFkZXJUaXRsZSk7XG4gICAgICAgIHdpZGdldEhlYWRlci5hcHBlbmRDaGlsZCh3aWRnZXRDbG9zZUJ1dHRvbik7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQod2lkZ2V0V3JhcHBlcik7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmVzdW1lQnV0dG9uKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIoYFdpZGdldDogRXJyb3IgaW5qZWN0aW5nIHJlc3VtZSBidXR0b246ICR7ZXJyb3J9YCk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUcmlwZnVzaW9uOiBFcnJvciBpbmplY3RpbmcgcmVzdW1lIGJ1dHRvbjogXCIsIGVycm9yKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9zZVdpZGdldCgpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB3aWRnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfSUQpLFxuICAgICAgICAgICAgd2lkZ2V0V3JhcHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9XUkFQUEVSX0lEKSxcbiAgICAgICAgICAgIHJlc3VtZUJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFJFU1VNRV9CVVRUT05fSUQpO1xuXG4gICAgICAgIGlmICh3aWRnZXQgJiYgd2lkZ2V0V3JhcHBlciAmJiByZXN1bWVCdXR0b24pIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSBcImluaXRpYWxcIjtcbiAgICAgICAgICAgIHdpZGdldC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCBcInNsaWRlLW91dFwiKTtcbiAgICAgICAgICAgIHdpZGdldFdyYXBwZXIuc3R5bGUuYmFja2dyb3VuZCA9IFwicmdiYSgwLCAwLCAwLCAwKVwiO1xuICAgICAgICAgICAgd2lkZ2V0LnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgICAgICAgIHdpZGdldFdyYXBwZXIuc3R5bGUuekluZGV4ID0gYCR7LTFlMTF9YDtcbiAgICAgICAgICAgIHJlc3VtZUJ1dHRvbi5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCBcImRpc21pc3MtYnRuLXNsaWRlLWluXCIpO1xuICAgICAgICAgICAgcmVzdW1lQnV0dG9uLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIoYFdpZGdldDogRXJyb3IgY2xvc2luZyB3aWRnZXQ6ICR7ZXJyb3J9YCk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUcmlwZnVzaW9uOiBFcnJvciBjbG9zaW5nIHdpZGdldDogXCIsIGVycm9yKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RJZnJhbWUoeyBjb25maWcsIGJvb2tpbmdEYXRhIH06IFdpZGdldFByb3BzKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgaW5uZXJXcmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX0lOTkVSX1dSQVBQRVJfSUQpO1xuICAgICAgICBpZiAoaW5uZXJXcmFwcGVyKSB7XG4gICAgICAgICAgICBjb25zdCB3aWRnZXRJZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaWZyYW1lXCIpO1xuICAgICAgICAgICAgbGV0IHVybCA9IGAke1RSSVBGVVNJT05fQkFTRV9VUkx9JHtjb25maWcuY2xpZW50fS8ke2NvbmZpZy5wcm9wZXJ0eUlkfWA7XG4gICAgICAgICAgICBpZiAoY29uZmlnLm1vZGUgPT09IEJPT0tJTkdfTU9ERS5hcHBlbmQgJiYgY29uZmlnLmJvb2tpbmdJZCkge1xuICAgICAgICAgICAgICAgIHVybCArPSBgL2Jvb2tpbmcvJHtjb25maWcuYm9va2luZ0lkfS9hcHBlbmRgO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYm9va2luZ0RhdGEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsUGFyYW1zID0gT2JqZWN0LmVudHJpZXMoYm9va2luZ0RhdGEpXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKFtfLCB2YWx1ZV0pID0+ICEhdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fT0ke3ZhbHVlfWAudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCImXCIpO1xuICAgICAgICAgICAgICAgIGlmIChhZGRpdGlvbmFsUGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIHVybCArPSBgPyR7YWRkaXRpb25hbFBhcmFtc31gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd2lkZ2V0SWZyYW1lLnNldEF0dHJpYnV0ZShcInNyY1wiLCB1cmwpO1xuICAgICAgICAgICAgd2lkZ2V0SWZyYW1lLmlkID0gV0lER0VUX0lGUkFNRV9JRDtcbiAgICAgICAgICAgIGlubmVyV3JhcHBlci5hcHBlbmRDaGlsZCh3aWRnZXRJZnJhbWUpO1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyKGBXaWRnZXQ6IEVycm9yIGluamVjdGluZyBpZnJhbWU6ICR7ZXJyb3J9YCk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUcmlwZnVzaW9uOiBFcnJvciBpbmplY3RpbmcgaWZyYW1lOiBcIiwgZXJyb3IpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvY2tQYWdlU2Nyb2xsKCkge1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xufVxuIiwiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgVFJJUEZVU0lPTl9CQVNFX1VSTCB9IGZyb20gXCIuL2NvbnN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJhbXNGcm9tVXJsKHVybFNlYXJjaFBhcmFtczogVVJMU2VhcmNoUGFyYW1zKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3QgYXZhaWxhYmxlU2VhcmNoUGFyYW1zTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICB0cmlwZnVzaW9uOiBcInRyaXBmdXNpb25cIixcbiAgICAgICAgY2xpZW50OiBcImNsaWVudFwiLFxuICAgICAgICBwcm9wZXJ0eWlkOiBcInByb3BlcnR5SWRcIixcbiAgICAgICAgbW9kZTogXCJtb2RlXCIsXG4gICAgICAgIG9mZmVyaWQ6IFwib2ZmZXJJZFwiLFxuICAgICAgICBib29raW5naWQ6IFwiYm9va2luZ0lkXCIsXG4gICAgICAgIGNoZWNraW46IFwiY2hlY2tJblwiLFxuICAgICAgICBjaGVja291dDogXCJjaGVja091dFwiLFxuICAgICAgICBhZHVsdHM6IFwiYWR1bHRzXCIsXG4gICAgICAgIGNoaWxkcmVuOiBcImNoaWxkcmVuXCIsXG4gICAgfTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh1cmxTZWFyY2hQYXJhbXMuZW50cmllcygpKS5yZWR1Y2UoXG4gICAgICAgIChwcmV2LCBbc2VhcmNoUGFyYW1LZXksIHNlYXJjaFBhcmFtVmFsdWVdKSA9PiAoe1xuICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgIFthdmFpbGFibGVTZWFyY2hQYXJhbXNNYXBbc2VhcmNoUGFyYW1LZXkudG9Mb3dlckNhc2UoKV1dOiBzZWFyY2hQYXJhbVZhbHVlLFxuICAgICAgICB9KSxcbiAgICAgICAge31cbiAgICApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9nZ2VyKG1lc3NhZ2U6IHN0cmluZywgdHlwZTogXCJlcnJvclwiIHwgXCJsb2dcIiA9IFwiZXJyb3JcIikge1xuICAgIGNvbnN0IHVybCA9IGAke1RSSVBGVVNJT05fQkFTRV9VUkx9YXBpL3ZhY2F5b3UvbG9nYDtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBwYWdlOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICB9O1xuICAgIGNvbnN0IGhlYWRlcnMgPSB7XG4gICAgICAgIFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgIH07XG4gICAgcmV0dXJuIGZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgfSksXG4gICAgICAgIGhlYWRlcnMsXG4gICAgfSlcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5qc29uKCkpXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgVHJpcGZ1c2lvbjogZmFpbGVkIHRvIGxvZyBtZXNzYWdlOiAke2Vycm9yfWApO1xuICAgICAgICB9KTtcbn1cbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm5jID0gdW5kZWZpbmVkOyIsIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB0eXBlIHsgQXBwTWVzc2FnZSwgV2lkZ2V0UHJvcHMgfSBmcm9tIFwiLi9pbmRleC50eXBlc1wiO1xuaW1wb3J0IHtcbiAgICBCT09LSU5HX01PREUsXG4gICAgTE9BREVSX0lELFxuICAgIFJFU1VNRV9CVVRUT05fSUQsXG4gICAgU0RLX1NDUklQVF9JRCxcbiAgICBXSURHRVRfSEVBREVSX0lELFxuICAgIFdJREdFVF9JRCxcbiAgICBXSURHRVRfSUZSQU1FX0lELFxuICAgIFdJREdFVF9XUkFQUEVSX0lELFxufSBmcm9tIFwiLi9jb25zdFwiO1xuaW1wb3J0IHsgY2xvc2VXaWRnZXQsIGRpc3BsYXlMb2FkaW5nT3ZlcmxheSwgaW5qZWN0SWZyYW1lLCBpbmplY3RSZXN1bWVCdXR0b24sIGxvY2tQYWdlU2Nyb2xsIH0gZnJvbSBcIi4vZG9tXCI7XG5pbXBvcnQgXCIuL3N0eWxlcy5jc3NcIjtcbmltcG9ydCB7IGdldFBhcmFtc0Zyb21VcmwsIGxvZ2dlciB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmxldCBjbGllbnQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xubGV0IHByb3BlcnR5SWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xubGV0IGJvb2tpbmdDb250ZXh0OiBXaWRnZXRQcm9wcyB8IG51bGwgPSBudWxsO1xubGV0IGlzSWZyYW1lUmVhZHkgPSBmYWxzZTtcblxuZnVuY3Rpb24gYWRkTGlua0V2ZW50TGlzdGVuZXJzKCkge1xuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJhXCIpLmZvckVhY2goKGxpbmtFbGVtZW50KSA9PiB7XG4gICAgICAgIGxpbmtFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVMaW5rQ2xpY2spO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVMaW5rQ2xpY2soZXZlbnQ6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcblxuICAgICAgICAvLyBFbnN1cmUgdGhlIGV2ZW50IHRhcmdldCBoYXMgYSB2YWxpZCBocmVmXG4gICAgICAgIGlmICh0YXJnZXQudGFnTmFtZSAhPT0gXCJBXCIgJiYgdGFyZ2V0LnBhcmVudE5vZGU/LnRhZ05hbWUgPT09IFwiQVwiKSB7XG4gICAgICAgICAgICB0YXJnZXQuaHJlZiA9IHRhcmdldC5wYXJlbnROb2RlLmhyZWY7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsaW5rSHJlZiA9IHRhcmdldC5ocmVmIHx8IFwiXCI7XG4gICAgICAgIGlmICghbGlua0hyZWYuaW5jbHVkZXMoXCI/XCIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSBnZXRQYXJhbXNGcm9tVXJsKG5ldyBVUkxTZWFyY2hQYXJhbXMobGlua0hyZWYuc3Vic3RyaW5nKGxpbmtIcmVmLmluZGV4T2YoXCI/XCIpKSkpO1xuXG4gICAgICAgIGlmICh1cmxQYXJhbXMudHJpcGZ1c2lvbiA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBib29rKHtcbiAgICAgICAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50OiB1cmxQYXJhbXMuY2xpZW50ID8/IGNsaWVudCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlJZDogdXJsUGFyYW1zLnByb3BlcnR5SWQgPyArdXJsUGFyYW1zLnByb3BlcnR5SWQgOiAocHJvcGVydHlJZCBhcyBudW1iZXIpLFxuICAgICAgICAgICAgICAgICAgICBtb2RlOiB1cmxQYXJhbXMubW9kZSA9PT0gQk9PS0lOR19NT0RFLmFwcGVuZCA/IEJPT0tJTkdfTU9ERS5hcHBlbmQgOiBCT09LSU5HX01PREUubm9ybWFsLFxuICAgICAgICAgICAgICAgICAgICBib29raW5nSWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmxQYXJhbXM/LmJvb2tpbmdJZCAmJiB1cmxQYXJhbXM/Lm1vZGUgPT09IEJPT0tJTkdfTU9ERS5hcHBlbmQgPyArdXJsUGFyYW1zLmJvb2tpbmdJZCA6IG51bGwsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBib29raW5nRGF0YToge1xuICAgICAgICAgICAgICAgICAgICBvZmZlcklkOiB1cmxQYXJhbXMub2ZmZXJJZCA/ICt1cmxQYXJhbXMub2ZmZXJJZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tJbjogdXJsUGFyYW1zLmNoZWNrSW4sXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrT3V0OiB1cmxQYXJhbXMuY2hlY2tPdXQsXG4gICAgICAgICAgICAgICAgICAgIGFkdWx0czogdXJsUGFyYW1zLmFkdWx0cyA/ICt1cmxQYXJhbXMuYWR1bHRzIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogdXJsUGFyYW1zLmNoaWxkcmVuID8gdXJsUGFyYW1zLmNoaWxkcmVuLnNwbGl0KFwiLFwiKS5tYXAoKGFnZSkgPT4gK2FnZSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyKGBXaWRnZXQ6IEVycm9yIGluIGxpbmsgY2xpY2sgaGFuZGxlcjogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlRyaXBmdXNpb246IEVycm9yIGluIGxpbmsgY2xpY2sgaGFuZGxlcjogXCIsIGVycm9yKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFkZFBhZ2VMb2FkTGlzdGVuZXIoKSB7XG4gICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIikge1xuICAgICAgICBvbkxvYWRIYW5kbGVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsIG9uTG9hZEhhbmRsZXIpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gb25Mb2FkSGFuZGxlcigpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgdXJsUGFyYW1zID0gZ2V0UGFyYW1zRnJvbVVybChuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpKTtcbiAgICAgICAgaWYgKHVybFBhcmFtcy50cmlwZnVzaW9uID09PSBcInRydWVcIiAmJiAoY2xpZW50IHx8IHVybFBhcmFtcy5jbGllbnQpICYmIChwcm9wZXJ0eUlkIHx8IHVybFBhcmFtcy5wcm9wZXJ0eUlkKSkge1xuICAgICAgICAgICAgYm9vayh7XG4gICAgICAgICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNsaWVudDogdXJsUGFyYW1zLmNsaWVudCA/PyBjbGllbnQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5SWQ6IHVybFBhcmFtcy5wcm9wZXJ0eUlkID8gK3VybFBhcmFtcy5wcm9wZXJ0eUlkIDogKHByb3BlcnR5SWQgYXMgbnVtYmVyKSxcbiAgICAgICAgICAgICAgICAgICAgbW9kZTogdXJsUGFyYW1zLm1vZGUgPT09IEJPT0tJTkdfTU9ERS5hcHBlbmQgPyBCT09LSU5HX01PREUuYXBwZW5kIDogQk9PS0lOR19NT0RFLm5vcm1hbCxcbiAgICAgICAgICAgICAgICAgICAgYm9va2luZ0lkOlxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsUGFyYW1zPy5ib29raW5nSWQgJiYgdXJsUGFyYW1zPy5tb2RlID09PSBCT09LSU5HX01PREUuYXBwZW5kID8gK3VybFBhcmFtcy5ib29raW5nSWQgOiBudWxsLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYm9va2luZ0RhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJJZDogdXJsUGFyYW1zLm9mZmVySWQgPyArdXJsUGFyYW1zLm9mZmVySWQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrSW46IHVybFBhcmFtcy5jaGVja0luLFxuICAgICAgICAgICAgICAgICAgICBjaGVja091dDogdXJsUGFyYW1zLmNoZWNrT3V0LFxuICAgICAgICAgICAgICAgICAgICBhZHVsdHM6IHVybFBhcmFtcy5hZHVsdHMgPyArdXJsUGFyYW1zLmFkdWx0cyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IHVybFBhcmFtcy5jaGlsZHJlbiA/IHVybFBhcmFtcy5jaGlsZHJlbi5zcGxpdChcIixcIikubWFwKChhZ2UpID0+ICthZ2UpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIDUwMCk7XG59XG5cbmZ1bmN0aW9uIGluaXRSZXN1bWVXaWRnZXQoKSB7XG4gICAgY29uc3QgY2hlY2tJZkRvY3VtZW50TG9hZGVkSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIpIHtcbiAgICAgICAgICAgIGluamVjdFJlc3VtZUJ1dHRvbigpO1xuICAgICAgICAgICAgYWRkTGlua0V2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJZkRvY3VtZW50TG9hZGVkSW50ZXJ2YWwpO1xuICAgICAgICB9XG4gICAgfSwgMTAwKTtcbiAgICBhZGRQYWdlTG9hZExpc3RlbmVyKCk7XG59XG5cbmZ1bmN0aW9uIGJvb2socHJvcHM/OiBQYXJ0aWFsPFdpZGdldFByb3BzPikge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHdpZGdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9JRCkgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICB3aWRnZXRXcmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX1dSQVBQRVJfSUQpIGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgcmVzdW1lV2lkZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUkVTVU1FX0JVVFRPTl9JRCkgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICByZXN1bWVXaWRnZXRDbGFzcyA9IHJlc3VtZVdpZGdldCA/IHJlc3VtZVdpZGdldC5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKSA6IG51bGw7XG5cbiAgICAgICAgaWYgKHJlc3VtZVdpZGdldENsYXNzPy5pbmNsdWRlcyhcImRpc21pc3MtYnRuXCIpKSB7XG4gICAgICAgICAgICByZXN1bWVXaWRnZXQuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgXCJkaXNtaXNzLWJ0bi1zbGlkZS1vdXRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpZnJhbWVDb25maWcgPSB7XG4gICAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgICAgIC4uLnByb3BzPy5jb25maWcsXG4gICAgICAgICAgICAgICAgY2xpZW50OiBwcm9wcz8uY29uZmlnPy5jbGllbnQgPz8gKGNsaWVudCBhcyBzdHJpbmcpLFxuICAgICAgICAgICAgICAgIHByb3BlcnR5SWQ6IHByb3BzPy5jb25maWc/LnByb3BlcnR5SWQgPz8gKHByb3BlcnR5SWQgYXMgbnVtYmVyKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGJvb2tpbmdDb250ZXh0KSAhPT0gSlNPTi5zdHJpbmdpZnkoaWZyYW1lQ29uZmlnKSkge1xuICAgICAgICAgICAgaXNJZnJhbWVSZWFkeSA9IGZhbHNlO1xuXG4gICAgICAgICAgICBkaXNwbGF5TG9hZGluZ092ZXJsYXkoKTtcblxuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX0lGUkFNRV9JRCk/LnJlbW92ZSgpO1xuICAgICAgICAgICAgaW5qZWN0SWZyYW1lKGlmcmFtZUNvbmZpZyk7XG4gICAgICAgICAgICBib29raW5nQ29udGV4dCA9IGlmcmFtZUNvbmZpZztcblxuICAgICAgICAgICAgY29uc3QgcmVzdW1lQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUkVTVU1FX0JVVFRPTl9JRCk7XG4gICAgICAgICAgICBjb25zdCByZXN1bWVCdXR0b25UZXh0ID0gcmVzdW1lQnV0dG9uPy5xdWVyeVNlbGVjdG9yKFwic3BhblwiKTtcbiAgICAgICAgICAgIGlmIChyZXN1bWVCdXR0b25UZXh0KSB7XG4gICAgICAgICAgICAgICAgcmVzdW1lQnV0dG9uVGV4dC5pbm5lckhUTUwgPSBcIkNvbXBsZXRlIHlvdXIgYm9va2luZ1wiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIENoZWNrIGlmIElmcmFtZSBpcyBsb2FkZWRcbiAgICAgICAgY29uc3QgaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNJZnJhbWVSZWFkeSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoTE9BREVSX0lEKT8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSWQpO1xuXG4gICAgICAgICAgICAvLyBEaXNwbGF5IHdpZGdldCBhbmQgdXBkYXRlIHN0eWxlc1xuICAgICAgICAgICAgaWYgKHdpZGdldC5zdHlsZS5kaXNwbGF5ID09PSBcIm5vbmVcIikge1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24od2lkZ2V0V3JhcHBlci5zdHlsZSwge1xuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDEwMDAwMDAwMDAwMTEsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IFwicmdiYSgwLCAwLCAwLCAuNClcIixcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGxvY2tQYWdlU2Nyb2xsKCk7XG5cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0LnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gICAgICAgICAgICAgICAgICAgIHdpZGdldC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCBcInNsaWRlLWluXCIpO1xuICAgICAgICAgICAgICAgIH0sIDIwKTtcblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3aWRnZXRJZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfSUZSQU1FX0lEKTtcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0SWZyYW1lPy5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH0sIDI1MCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFJlc3VtZSBidXR0b24gY2xpY2sgaGFuZGxlclxuICAgICAgICAgICAgY29uc3QgcmVzdW1lQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUkVTVU1FX0JVVFRPTl9JRCk7XG4gICAgICAgICAgICByZXN1bWVCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdW1lQnV0dG9uQ2xhc3MgPSByZXN1bWVCdXR0b24uZ2V0QXR0cmlidXRlKFwiY2xhc3NcIik7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VtZUJ1dHRvbkNsYXNzPy5pbmNsdWRlcyhcImRpc21pc3MtYnRuXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVCdXR0b24uc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgXCJkaXNtaXNzLWJ0bi1zbGlkZS1vdXRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHdpZGdldFdyYXBwZXIuc3R5bGUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHpJbmRleDogMTAwMDAwMDAwMDAxMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBcInJnYmEoMCwgMCwgMCwgLjUpXCIsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xuICAgICAgICAgICAgICAgICAgICB3aWRnZXQuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0LnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIFwic2xpZGUtaW5cIik7XG5cbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3aWRnZXRJZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfSUZSQU1FX0lEKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldElmcmFtZT8uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBsb2dnZXIoYFdpZGdldDogcmVzdW1lIGJ1dHRvbiBlcnJvcjogJHtlcnJvcn1gKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlRyaXBmdXNpb246IHJlc3VtZSBidXR0b24gZXJyb3JcIiwgZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCAxMDApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlcihgV2lkZ2V0OiBmYWlsZWQgdG8gYm9vazogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihgVHJpcGZ1c2lvbjogZmFpbGVkIHRvIGJvb2s6ICR7ZXJyb3J9YCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpbml0VHJpcGZ1c2lvblNkaygpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBqc1NkayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFNES19TQ1JJUFRfSUQpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBqc1Nka1NyYyA9IGpzU2RrLmdldEF0dHJpYnV0ZShcInNyY1wiKSBhcyBzdHJpbmc7XG4gICAgICAgIGNvbnN0IHVybFBhcmFtcyA9IGdldFBhcmFtc0Zyb21VcmwobmV3IFVSTFNlYXJjaFBhcmFtcyhqc1Nka1NyYy5zdWJzdHJpbmcoanNTZGtTcmMuaW5kZXhPZihcIj9cIikpKSk7XG5cbiAgICAgICAgY2xpZW50ID0gdXJsUGFyYW1zW1wiY2xpZW50XCJdID8/IG51bGw7XG4gICAgICAgIHByb3BlcnR5SWQgPSB1cmxQYXJhbXNbXCJwcm9wZXJ0eUlkXCJdID8gK3VybFBhcmFtc1tcInByb3BlcnR5SWRcIl0gOiBudWxsO1xuXG4gICAgICAgIGlmICghY2xpZW50IHx8ICFwcm9wZXJ0eUlkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCIoISkgVHJpcGZ1c2lvbjogY2xpZW50IGFuZCBwcm9wZXJ0eUlkIGFyZSByZXF1aXJlZC5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBpbml0UmVzdW1lV2lkZ2V0KCk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24od2luZG93LCB7IGJvb2ssIGNsb3NlV2lkZ2V0IH0pO1xuICAgICAgICB3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2U6IEFwcE1lc3NhZ2UgPSBlLmRhdGE7XG4gICAgICAgICAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJ0cmlwZnVzaW9uLXdpZGdldC1yZWFkeVwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGlzSWZyYW1lUmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBcInRyaXBmdXNpb24tYm9va2luZy1jb21wbGV0ZWRcIjoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bWVCdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChSRVNVTUVfQlVUVE9OX0lEKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdW1lQnV0dG9uVGV4dCA9IHJlc3VtZUJ1dHRvbj8ucXVlcnlTZWxlY3RvcihcInNwYW5cIik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bWVCdXR0b25UZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVCdXR0b25UZXh0LmlubmVySFRNTCA9IFwiQm9va2luZyBjb21wbGV0ZWQhXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgXCJ0cmlwZnVzaW9uLXNldC1jbGllbnQtdGhlbWVcIjoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlRGF0YSA9IG1lc3NhZ2UuZGF0YSBhcyB7IHByaW1hcnk/OiBzdHJpbmcgfTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xpZW50VGhlbWUgPSBtZXNzYWdlRGF0YS5wcmltYXJ5O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bWVCdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChSRVNVTUVfQlVUVE9OX0lEKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2lkZ2V0SGVhZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX0hFQURFUl9JRCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnRUaGVtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VtZUJ1dHRvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZUJ1dHRvbi5zdHlsZVtcImJhY2tncm91bmRDb2xvclwiXSA9IGNsaWVudFRoZW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZGdldEhlYWRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldEhlYWRlci5zdHlsZVtcImJhY2tncm91bmRDb2xvclwiXSA9IGNsaWVudFRoZW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1lQnV0dG9uPy5yZW1vdmVBdHRyaWJ1dGUoXCJzdHlsZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldEhlYWRlcj8ucmVtb3ZlQXR0cmlidXRlKFwic3R5bGVcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlcihgV2lkZ2V0OiBmYWlsZWQgdG8gaW5pdCBUcmlwZnVzaW9uIEpTIFNESzogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihgVHJpcGZ1c2lvbjogZmFpbGVkIHRvIGluaXQgU0RLOiAke2Vycm9yfWApO1xuICAgIH1cbn1cblxuaW5pdFRyaXBmdXNpb25TZGsoKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
|