@vacayou/tripfusion-js-sdk 1.3.0 → 1.4.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/dist/index.html +2 -17
- package/dist/main.js +2 -1359
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +12 -1
package/dist/main.js
CHANGED
|
@@ -1,1359 +1,2 @@
|
|
|
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/NDRiMiIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL2NvbnN0LnRzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL2RvbS50cyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy91dGlscy50cyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrL3dlYnBhY2svcnVudGltZS9ub25jZSIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJAaW1wb3J0IHVybChodHRwczovL3VzZS50eXBla2l0Lm5ldC9zYWc4Y2ViLmNzcyk7XCJdKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBgI3RyaXBmdXNpb24tbG9hZGVyIHtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgZm9udC1mYW1pbHk6IGZ1dHVyYS1sdC13MDEtYm9vaywgZnV0dXJhLWx0LXcwNS1ib29rLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuI3RyaXBmdXNpb24tbG9hZGVyIHNwYW4ge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xufVxuXG4jdHJpcGZ1c2lvbi1yZXN1bWUtYnV0dG9uIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDEycHggMzJweDtcbiAgICBib3gtc2hhZG93OiAwcHggMHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMjUpLCAwcHggNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgcmlnaHQ6IDMwcHg7XG4gICAgei1pbmRleDogMTAwMDAwMDAwMDAwO1xuICAgIGJvdHRvbTogNDBweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDQwMHB4KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDkyYjQzO1xuICAgIGJvcmRlci1yYWRpdXM6IDIzcHg7XG59XG5cbiN0cmlwZnVzaW9uLXJlc3VtZS1idXR0b24gc3BhbiB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICBmb250LWZhbWlseTogc3dlZXQtc2Fucy1wcm8sIHNhbnMtc2VyaWY7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBsZXR0ZXItc3BhY2luZzogMS41cHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4jdHJpcGZ1c2lvbi13aWRnZXQtd3JhcHBlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwKTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC41cyBlYXNlLW91dDtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHRvcDogMHB4O1xuICAgIHJpZ2h0OiAwcHg7XG59XG5cbiN0cmlwZnVzaW9uLXdpZGdldC1pbm5lci13cmFwcGVyIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIG1pbi13aWR0aDogMzIwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHJpZ2h0OiAwcHg7XG4gICAgYm90dG9tOiAwcHg7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMik7XG4gICAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAwOTM4ZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICN0cmlwZnVzaW9uLXdpZGdldC1pbm5lci13cmFwcGVyIHtcbiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0MHB4KTtcbiAgICAgICAgcmlnaHQ6IDIwcHg7XG4gICAgICAgIGJvdHRvbTogMjBweDtcbiAgICAgICAgd2lkdGg6IDUwMHB4O1xuICAgIH1cbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LWhlYWRlciB7XG4gICAgaGVpZ2h0OiA2MHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwOTJiNDM7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMWYxZjE7XG4gICAgcGFkZGluZzogMCAxNnB4IDAgMTZweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGNvbG9yOiB3aGl0ZTtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LWlmcmFtZSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJvcmRlcjogbm9uZTtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LWhlYWRlci10aXRsZSB7XG4gICAgZm9udC1mYW1pbHk6IHN3ZWV0LXNhbnMtcHJvLCBzYW5zLXNlcmlmO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IDEuNXB4O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbiN0cmlwZnVzaW9uLXdpZGdldC1jbG9zZS1idXR0b24ge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiAyZW07XG4gICAgaGVpZ2h0OiAyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgdGV4dC1pbmRlbnQ6IDEwMCU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IHNvbGlkIDAgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG4gICAgfVxuXG4gICAgJjpiZWZvcmUsXG4gICAgJjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAyNSU7XG4gICAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMC4wNjI1ZW0pO1xuICAgICAgICB3aWR0aDogMC4xMjVlbTtcbiAgICAgICAgaGVpZ2h0OiA1MCU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMTI1ZW07XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcbiAgICAgICAgYmFja2dyb3VuZDogY3VycmVudGNvbG9yO1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgfVxuXG4gICAgJjphZnRlciB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XG4gICAgfVxufVxuXG4uZGlzbWlzcy1idG4tc2xpZGUtaW4ge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogNTAwbXM7XG4gICAgLW1vei10cmFuc2l0aW9uOiA1MDBtcztcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcbn1cblxuLmRpc21pc3MtYnRuLXNsaWRlLW91dCB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiA1MDBtcztcbiAgICAtbW96LXRyYW5zaXRpb246IDUwMG1zO1xuICAgIHRyYW5zaXRpb246IDUwMG1zO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0MDBweCkgIWltcG9ydGFudDtcbn1cblxuLmRpc21pc3MtYnRuLXNsaWRlLW91dCBzcGFuIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4uZGlzbWlzcy1idG4tcmVzaXplLWluIHtcbiAgICB3aWR0aDogNDZweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xuICAgIHRyYW5zaXRpb246IDUwMG1zO1xuICAgIHJpZ2h0OiAzMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5kaXNtaXNzLWJ0bi1yZXNpemUtaW4gc3BhbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLmRpc21pc3MtYnRuLXJlc2l6ZS1pbjpob3ZlciB7XG4gICAgd2lkdGg6IDIxN3B4ICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiA0NnB4ICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIDMwMG1zIGxpbmVhcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5kaXNtaXNzLWJ0bi1yZXNpemUtaW46aG92ZXIgc3BhbiB7XG4gICAgZGlzcGxheTogaW5saW5lO1xuICAgIGhlaWdodDogMjBweCAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5kaXNtaXNzLWJ0bi1yZXNpemUtb3V0IHtcbiAgICB3aWR0aDogNDZweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xuICAgIHRyYW5zaXRpb246IDUwMG1zO1xuICAgIHJpZ2h0OiAtMTAwcHggIWltcG9ydGFudDtcbn1cblxuLnNsaWRlLWluIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgYW5pbWF0aW9uOiBzbGlkZS1pbiAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLWluIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICB6LWluZGV4OiAxMDAwMDAwMDAwMDAwO1xufVxuXG4uc2xpZGUtb3V0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgYW5pbWF0aW9uOiBzbGlkZS1vdXQgMXMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtb3V0IDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgei1pbmRleDogLTEwMDAwMDAwMDAwMDA7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ5NXB4KSB7XG4gICAgLnNsaWRlLWluIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICAgICAgYW5pbWF0aW9uOiBzbGlkZS11cCAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS11cCAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgICAgIHotaW5kZXg6IDEwMDAwMDAwMDAwMDA7XG4gICAgfVxuXG4gICAgLnNsaWRlLW91dCB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgICAgIGFuaW1hdGlvbjogc2xpZGUtZG93biAwLjVzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS1kb3duIDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgICAgIHotaW5kZXg6IC0xMDAwMDAwMDAwMDAwO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZS1pbiB7XG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtaW4ge1xuICAgIDEwMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlLXVwIHtcbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS11cCB7XG4gICAgMTAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGUtb3V0IHtcbiAgICAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS1vdXQge1xuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGUtZG93biB7XG4gICAgMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtZG93biB7XG4gICAgMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIH1cbn1cbmAsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vc3JjL3N0eWxlcy5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUE7SUFDSSxZQUFZO0lBQ1osa0JBQWtCO0lBQ2xCLGtCQUFrQjtJQUNsQixRQUFRO0lBQ1IsU0FBUztJQUNULGlGQUFpRjtJQUNqRixnQ0FBZ0M7QUFDcEM7QUFDQTtJQUNJLGlCQUFpQjtJQUNqQixpQkFB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bkMsMkNBQTJDO0lBQzNDLG1EQUFtRDtJQUNuRCx1QkFBdUI7QUFDM0I7O0FBRUE7SUFDSTtRQUNJLDJCQUEyQjtRQUMzQixtQ0FBbUM7UUFDbkMsNENBQTRDO1FBQzVDLG9EQUFvRDtRQUNwRCxzQkFBc0I7SUFDMUI7O0lBRUE7UUFDSSwyQkFBMkI7UUFDM0IsbUNBQW1DO1FBQ25DLDhDQUE4QztRQUM5QyxvREFBb0Q7UUFDcEQsdUJBQXVCO0lBQzNCO0FBQ0o7O0FBRUE7SUFDSTtRQUNJLHlCQUF5QjtJQUM3QjtBQUNKOztBQUVBO0lBQ0k7UUFDSSxpQ0FBaUM7SUFDckM7QUFDSjs7QUFFQTtJQUNJO1FBQ0kseUJBQXlCO0lBQzdCO0FBQ0o7O0FBRUE7SUFDSTtRQUNJLGlDQUFpQztJQUNyQztBQUNKOztBQUVBO0lBQ0k7UUFDSSx5QkFBeUI7SUFDN0I7O0lBRUE7UUFDSSwyQkFBMkI7SUFDL0I7QUFDSjs7QUFFQTtJQUNJO1FBQ0ksaUNBQWlDO0lBQ3JDOztJQUVBO1FBQ0ksbUNBQW1DO0lBQ3ZDO0FBQ0o7O0FBRUE7SUFDSTtRQUNJLHlCQUF5QjtJQUM3Qjs7SUFFQTtRQUNJLDJCQUEyQjtJQUMvQjtBQUNKOztBQUVBO0lBQ0k7UUFDSSxpQ0FBaUM7SUFDckM7O0lBRUE7UUFDSSxtQ0FBbUM7SUFDdkM7QUFDSlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAaW1wb3J0IHVybChcXFwiaHR0cHM6Ly91c2UudHlwZWtpdC5uZXQvc2FnOGNlYi5jc3NcXFwiKTtcXG5cXG4jdHJpcGZ1c2lvbi1sb2FkZXIge1xcbiAgICBjb2xvcjogd2hpdGU7XFxuICAgIG1hcmdpbi1yaWdodDogLTUwJTtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDUwJTtcXG4gICAgbGVmdDogNTAlO1xcbiAgICBmb250LWZhbWlseTogZnV0dXJhLWx0LXcwMS1ib29rLCBmdXR1cmEtbHQtdzA1LWJvb2ssIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xcbn1cXG4jdHJpcGZ1c2lvbi1sb2FkZXIgc3BhbiB7XFxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgICBmb250LXNpemU6IDEuM3JlbTtcXG59XFxuXFxuI3RyaXBmdXNpb24tcmVzdW1lLWJ1dHRvbiB7XFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgcGFkZGluZzogMTJweCAzMnB4O1xcbiAgICBib3gtc2hhZG93OiAwcHggMHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMjUpLCAwcHggNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxuICAgIHJpZ2h0OiAzMHB4O1xcbiAgICB6LWluZGV4OiAxMDAwMDAwMDAwMDA7XFxuICAgIGJvdHRvbTogNDBweDtcXG4gICAgYm9yZGVyOiBub25lO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNDAwcHgpO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDkyYjQzO1xcbiAgICBib3JkZXItcmFkaXVzOiAyM3B4O1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi1yZXN1bWUtYnV0dG9uIHNwYW4ge1xcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xcbiAgICBmb250LWZhbWlseTogc3dlZXQtc2Fucy1wcm8sIHNhbnMtc2VyaWY7XFxuICAgIGZvbnQtc2l6ZTogMXJlbTtcXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcXG4gICAgbGV0dGVyLXNwYWNpbmc6IDEuNXB4O1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7XFxuICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtd3JhcHBlciB7XFxuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMCk7XFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gICAgdG9wOiAwO1xcbiAgICByaWdodDogMDtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC41cyBlYXNlLW91dDtcXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0IHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICB0b3A6IDBweDtcXG4gICAgcmlnaHQ6IDBweDtcXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0LWlubmVyLXdyYXBwZXIge1xcbiAgICBwb3NpdGlvbjogZml4ZWQ7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIG1pbi13aWR0aDogMzIwcHg7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIHJpZ2h0OiAwcHg7XFxuICAgIGJvdHRvbTogMHB4O1xcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xcbiAgICBib3gtc2hhZG93OiAwIDJweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpO1xcbiAgICBmb250LWZhbWlseTogXFxcIlJvYm90b1xcXCIsIFxcXCJIZWx2ZXRpY2FcXFwiLCBcXFwiQXJpYWxcXFwiLCBzYW5zLXNlcmlmO1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICBmb250LXNpemU6IDFyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICAgIGxldHRlci1zcGFjaW5nOiAwLjAwOTM4ZW07XFxufVxcblxcbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xcbiAgICAjdHJpcGZ1c2lvbi13aWRnZXQtaW5uZXItd3JhcHBlciB7XFxuICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDQwcHgpO1xcbiAgICAgICAgcmlnaHQ6IDIwcHg7XFxuICAgICAgICBib3R0b206IDIwcHg7XFxuICAgICAgICB3aWR0aDogNTAwcHg7XFxuICAgIH1cXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0LWhlYWRlciB7XFxuICAgIGhlaWdodDogNjBweDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzA5MmI0MztcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMWYxZjE7XFxuICAgIHBhZGRpbmc6IDAgMTZweCAwIDE2cHg7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgY29sb3I6IHdoaXRlO1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtaWZyYW1lIHtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICBib3JkZXI6IG5vbmU7XFxufVxcblxcbiN0cmlwZnVzaW9uLXdpZGdldC1oZWFkZXItdGl0bGUge1xcbiAgICBmb250LWZhbWlseTogc3dlZXQtc2Fucy1wcm8sIHNhbnMtc2VyaWY7XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XFxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAgIGZvbnQtc2l6ZTogMXJlbTtcXG4gICAgbGV0dGVyLXNwYWNpbmc6IDEuNXB4O1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtY2xvc2UtYnV0dG9uIHtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBib3JkZXI6IG5vbmU7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIHdpZHRoOiAyZW07XFxuICAgIGhlaWdodDogMmVtO1xcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgICBmb250OiBpbmhlcml0O1xcbiAgICB0ZXh0LWluZGVudDogMTAwJTtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgICAmOmZvY3VzIHtcXG4gICAgICAgIG91dGxpbmU6IHNvbGlkIDAgdHJhbnNwYXJlbnQ7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDQpO1xcbiAgICB9XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA0KTtcXG4gICAgfVxcblxcbiAgICAmOmJlZm9yZSxcXG4gICAgJjphZnRlciB7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICB0b3A6IDI1JTtcXG4gICAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMC4wNjI1ZW0pO1xcbiAgICAgICAgd2lkdGg6IDAuMTI1ZW07XFxuICAgICAgICBoZWlnaHQ6IDUwJTtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMTI1ZW07XFxuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XFxuICAgICAgICBiYWNrZ3JvdW5kOiBjdXJyZW50Y29sb3I7XFxuICAgICAgICBjb2xvcjogd2hpdGU7XFxuICAgICAgICBjb250ZW50OiBcXFwiXFxcIjtcXG4gICAgfVxcblxcbiAgICAmOmFmdGVyIHtcXG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XFxuICAgIH1cXG59XFxuXFxuLmRpc21pc3MtYnRuLXNsaWRlLWluIHtcXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgLW1vei10cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGlzbWlzcy1idG4tc2xpZGUtb3V0IHtcXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgLW1vei10cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0MDBweCkgIWltcG9ydGFudDtcXG59XFxuXFxuLmRpc21pc3MtYnRuLXNsaWRlLW91dCBzcGFuIHtcXG4gICAgZGlzcGxheTogbm9uZTtcXG59XFxuXFxuLmRpc21pc3MtYnRuLXJlc2l6ZS1pbiB7XFxuICAgIHdpZHRoOiA0NnB4ICFpbXBvcnRhbnQ7XFxuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgcmlnaHQ6IDMwcHggIWltcG9ydGFudDtcXG59XFxuXFxuLmRpc21pc3MtYnRuLXJlc2l6ZS1pbiBzcGFuIHtcXG4gICAgZGlzcGxheTogbm9uZTtcXG59XFxuXFxuLmRpc21pc3MtYnRuLXJlc2l6ZS1pbjpob3ZlciB7XFxuICAgIHdpZHRoOiAyMTdweCAhaW1wb3J0YW50O1xcbiAgICBoZWlnaHQ6IDQ2cHggIWltcG9ydGFudDtcXG4gICAgdHJhbnNpdGlvbjogYWxsIDMwMG1zIGxpbmVhcjtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4uZGlzbWlzcy1idG4tcmVzaXplLWluOmhvdmVyIHNwYW4ge1xcbiAgICBkaXNwbGF5OiBpbmxpbmU7XFxuICAgIGhlaWdodDogMjBweCAhaW1wb3J0YW50O1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG5cXG4uZGlzbWlzcy1idG4tcmVzaXplLW91dCB7XFxuICAgIHdpZHRoOiA0NnB4ICFpbXBvcnRhbnQ7XFxuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgcmlnaHQ6IC0xMDBweCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uc2xpZGUtaW4ge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcbiAgICBhbmltYXRpb246IHNsaWRlLWluIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLWluIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgei1pbmRleDogMTAwMDAwMDAwMDAwMDtcXG59XFxuXFxuLnNsaWRlLW91dCB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIGFuaW1hdGlvbjogc2xpZGUtb3V0IDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS1vdXQgMXMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgei1pbmRleDogLTEwMDAwMDAwMDAwMDA7XFxufVxcblxcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ5NXB4KSB7XFxuICAgIC5zbGlkZS1pbiB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgICAgIGFuaW1hdGlvbjogc2xpZGUtdXAgMC44cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLXVwIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgICAgIHotaW5kZXg6IDEwMDAwMDAwMDAwMDA7XFxuICAgIH1cXG5cXG4gICAgLnNsaWRlLW91dCB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgICAgIGFuaW1hdGlvbjogc2xpZGUtZG93biAwLjVzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtZG93biAxcyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICAgICAgei1pbmRleDogLTEwMDAwMDAwMDAwMDA7XFxuICAgIH1cXG59XFxuXFxuQGtleWZyYW1lcyBzbGlkZS1pbiB7XFxuICAgIDEwMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcXG4gICAgfVxcbn1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtaW4ge1xcbiAgICAxMDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcXG4gICAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIHNsaWRlLXVwIHtcXG4gICAgMTAwJSB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xcbiAgICB9XFxufVxcblxcbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS11cCB7XFxuICAgIDEwMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xcbiAgICB9XFxufVxcblxcbkBrZXlmcmFtZXMgc2xpZGUtb3V0IHtcXG4gICAgMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcXG4gICAgfVxcblxcbiAgICAxMDAlIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gICAgfVxcbn1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtb3V0IHtcXG4gICAgMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xcbiAgICB9XFxuXFxuICAgIDEwMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIH1cXG59XFxuXFxuQGtleWZyYW1lcyBzbGlkZS1kb3duIHtcXG4gICAgMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcXG4gICAgfVxcblxcbiAgICAxMDAlIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgfVxcbn1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtZG93biB7XFxuICAgIDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcXG4gICAgfVxcblxcbiAgICAxMDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbiAgICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTtcblxuICAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cbiAgICAgIGNvbnRlbnQgKz0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTtcblxuICAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNba11bMF07XG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIF9rID0gMDsgX2sgPCBtb2R1bGVzLmxlbmd0aDsgX2srKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfa10pO1xuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bNV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/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==
|
|
1
|
+
(()=>{var n={365:(n,t,e)=>{"use strict";e.d(t,{A:()=>s});var r=e(354),i=e.n(r),o=e(314),a=e.n(o)()(i());a.push([n.id,"@import url(https://use.typekit.net/sag8ceb.css);"]),a.push([n.id,'#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\n#tripfusion-loader span {\n font-weight: bold;\n font-size: 1.3rem;\n}\n\n#tripfusion-resume-panel {\n max-width: 250px;\n position: fixed;\n overflow: hidden;\n cursor: pointer;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n padding: 12px 24px;\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 border-radius: 16px;\n color: white;\n font-size: 1rem;\n font-family: sweet-sans-pro, sans-serif;\n}\n\n.tripfusion-resume-panel__header {\n display: flex;\n justify-content: space-between;\n gap: 2em;\n align-items: center;\n}\n\n.tripfusion-resume-panel__header svg {\n width: 18px;\n height: 18px;\n fill: white;\n flex-shrink: 0;\n}\n\n.tripfusion-resume-panel__header span,\n.tripfusion-resume-panel__subheader {\n font-weight: 700;\n line-height: 1.2;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.tripfusion-resume-panel__footer {\n font-family: Roboto, Helvetica, Arial, sans-serif;\n font-size: 0.8rem;\n font-weight: 400;\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 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.tripfusion-resume-panel--slide-in {\n -webkit-transition: 500ms;\n -moz-transition: 500ms;\n transition: 500ms;\n transform: translateX(0) !important;\n}\n\n.tripfusion-resume-panel--slide-out {\n -webkit-transition: 500ms;\n -moz-transition: 500ms;\n transition: 500ms;\n transform: translateX(400px) !important;\n}\n\n.tripfusion-resume-panel--resize-in {\n width: 46px !important;\n height: 46px !important;\n transition: 500ms;\n right: 30px !important;\n}\n\n.tripfusion-resume-panel--resize-in:hover {\n width: 217px !important;\n height: 46px !important;\n transition: all 300ms linear;\n cursor: pointer;\n}\n\n.tripfusion-resume-panel--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',"",{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\n#tripfusion-loader span {\n font-weight: bold;\n font-size: 1.3rem;\n}\n\n#tripfusion-resume-panel {\n max-width: 250px;\n position: fixed;\n overflow: hidden;\n cursor: pointer;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n padding: 12px 24px;\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 border-radius: 16px;\n color: white;\n font-size: 1rem;\n font-family: sweet-sans-pro, sans-serif;\n}\n\n.tripfusion-resume-panel__header {\n display: flex;\n justify-content: space-between;\n gap: 2em;\n align-items: center;\n}\n\n.tripfusion-resume-panel__header svg {\n width: 18px;\n height: 18px;\n fill: white;\n flex-shrink: 0;\n}\n\n.tripfusion-resume-panel__header span,\n.tripfusion-resume-panel__subheader {\n font-weight: 700;\n line-height: 1.2;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.tripfusion-resume-panel__footer {\n font-family: Roboto, Helvetica, Arial, sans-serif;\n font-size: 0.8rem;\n font-weight: 400;\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 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.tripfusion-resume-panel--slide-in {\n -webkit-transition: 500ms;\n -moz-transition: 500ms;\n transition: 500ms;\n transform: translateX(0) !important;\n}\n\n.tripfusion-resume-panel--slide-out {\n -webkit-transition: 500ms;\n -moz-transition: 500ms;\n transition: 500ms;\n transform: translateX(400px) !important;\n}\n\n.tripfusion-resume-panel--resize-in {\n width: 46px !important;\n height: 46px !important;\n transition: 500ms;\n right: 30px !important;\n}\n\n.tripfusion-resume-panel--resize-in:hover {\n width: 217px !important;\n height: 46px !important;\n transition: all 300ms linear;\n cursor: pointer;\n}\n\n.tripfusion-resume-panel--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:""}]);const s=a},314:n=>{"use strict";n.exports=function(n){var t=[];return t.toString=function(){return this.map((function(t){var e="",r=void 0!==t[5];return t[4]&&(e+="@supports (".concat(t[4],") {")),t[2]&&(e+="@media ".concat(t[2]," {")),r&&(e+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),e+=n(t),r&&(e+="}"),t[2]&&(e+="}"),t[4]&&(e+="}"),e})).join("")},t.i=function(n,e,r,i,o){"string"==typeof n&&(n=[[null,n,void 0]]);var a={};if(r)for(var s=0;s<this.length;s++){var u=this[s][0];null!=u&&(a[u]=!0)}for(var c=0;c<n.length;c++){var l=[].concat(n[c]);r&&a[l[0]]||(void 0!==o&&(void 0===l[5]||(l[1]="@layer".concat(l[5].length>0?" ".concat(l[5]):""," {").concat(l[1],"}")),l[5]=o),e&&(l[2]?(l[1]="@media ".concat(l[2]," {").concat(l[1],"}"),l[2]=e):l[2]=e),i&&(l[4]?(l[1]="@supports (".concat(l[4],") {").concat(l[1],"}"),l[4]=i):l[4]="".concat(i)),t.push(l))}},t}},354:n=>{"use strict";n.exports=function(n){var t=n[1],e=n[3];if(!e)return t;if("function"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(e)))),i="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(r),o="/*# ".concat(i," */");return[t].concat([o]).join("\n")}return[t].join("\n")}},353:function(n){n.exports=function(){"use strict";var n=6e4,t=36e5,e="millisecond",r="second",i="minute",o="hour",a="day",s="week",u="month",c="quarter",l="year",A="date",d="Invalid Date",f=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,p=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,m={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(n){var t=["th","st","nd","rd"],e=n%100;return"["+n+(t[(e-20)%10]||t[e]||t[0])+"]"}},h=function(n,t,e){var r=String(n);return!r||r.length>=t?n:""+Array(t+1-r.length).join(e)+n},g={s:h,z:function(n){var t=-n.utcOffset(),e=Math.abs(t),r=Math.floor(e/60),i=e%60;return(t<=0?"+":"-")+h(r,2,"0")+":"+h(i,2,"0")},m:function n(t,e){if(t.date()<e.date())return-n(e,t);var r=12*(e.year()-t.year())+(e.month()-t.month()),i=t.clone().add(r,u),o=e-i<0,a=t.clone().add(r+(o?-1:1),u);return+(-(r+(e-i)/(o?i-a:a-i))||0)},a:function(n){return n<0?Math.ceil(n)||0:Math.floor(n)},p:function(n){return{M:u,y:l,w:s,d:a,D:A,h:o,m:i,s:r,ms:e,Q:c}[n]||String(n||"").toLowerCase().replace(/s$/,"")},u:function(n){return void 0===n}},C="en",I={};I[C]=m;var b="$isDayjsObject",w=function(n){return n instanceof k||!(!n||!n[b])},y=function n(t,e,r){var i;if(!t)return C;if("string"==typeof t){var o=t.toLowerCase();I[o]&&(i=o),e&&(I[o]=e,i=o);var a=t.split("-");if(!i&&a.length>1)return n(a[0])}else{var s=t.name;I[s]=t,i=s}return!r&&i&&(C=i),i||!r&&C},B=function(n,t){if(w(n))return n.clone();var e="object"==typeof t?t:{};return e.date=n,e.args=arguments,new k(e)},v=g;v.l=y,v.i=w,v.w=function(n,t){return B(n,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var k=function(){function m(n){this.$L=y(n.locale,null,!0),this.parse(n),this.$x=this.$x||n.x||{},this[b]=!0}var h=m.prototype;return h.parse=function(n){this.$d=function(n){var t=n.date,e=n.utc;if(null===t)return new Date(NaN);if(v.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(f);if(r){var i=r[2]-1||0,o=(r[7]||"0").substring(0,3);return e?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)}}return new Date(t)}(n),this.init()},h.init=function(){var n=this.$d;this.$y=n.getFullYear(),this.$M=n.getMonth(),this.$D=n.getDate(),this.$W=n.getDay(),this.$H=n.getHours(),this.$m=n.getMinutes(),this.$s=n.getSeconds(),this.$ms=n.getMilliseconds()},h.$utils=function(){return v},h.isValid=function(){return!(this.$d.toString()===d)},h.isSame=function(n,t){var e=B(n);return this.startOf(t)<=e&&e<=this.endOf(t)},h.isAfter=function(n,t){return B(n)<this.startOf(t)},h.isBefore=function(n,t){return this.endOf(t)<B(n)},h.$g=function(n,t,e){return v.u(n)?this[t]:this.set(e,n)},h.unix=function(){return Math.floor(this.valueOf()/1e3)},h.valueOf=function(){return this.$d.getTime()},h.startOf=function(n,t){var e=this,c=!!v.u(t)||t,d=v.p(n),f=function(n,t){var r=v.w(e.$u?Date.UTC(e.$y,t,n):new Date(e.$y,t,n),e);return c?r:r.endOf(a)},p=function(n,t){return v.w(e.toDate()[n].apply(e.toDate("s"),(c?[0,0,0,0]:[23,59,59,999]).slice(t)),e)},m=this.$W,h=this.$M,g=this.$D,C="set"+(this.$u?"UTC":"");switch(d){case l:return c?f(1,0):f(31,11);case u:return c?f(1,h):f(0,h+1);case s:var I=this.$locale().weekStart||0,b=(m<I?m+7:m)-I;return f(c?g-b:g+(6-b),h);case a:case A:return p(C+"Hours",0);case o:return p(C+"Minutes",1);case i:return p(C+"Seconds",2);case r:return p(C+"Milliseconds",3);default:return this.clone()}},h.endOf=function(n){return this.startOf(n,!1)},h.$set=function(n,t){var s,c=v.p(n),d="set"+(this.$u?"UTC":""),f=(s={},s[a]=d+"Date",s[A]=d+"Date",s[u]=d+"Month",s[l]=d+"FullYear",s[o]=d+"Hours",s[i]=d+"Minutes",s[r]=d+"Seconds",s[e]=d+"Milliseconds",s)[c],p=c===a?this.$D+(t-this.$W):t;if(c===u||c===l){var m=this.clone().set(A,1);m.$d[f](p),m.init(),this.$d=m.set(A,Math.min(this.$D,m.daysInMonth())).$d}else f&&this.$d[f](p);return this.init(),this},h.set=function(n,t){return this.clone().$set(n,t)},h.get=function(n){return this[v.p(n)]()},h.add=function(e,c){var A,d=this;e=Number(e);var f=v.p(c),p=function(n){var t=B(d);return v.w(t.date(t.date()+Math.round(n*e)),d)};if(f===u)return this.set(u,this.$M+e);if(f===l)return this.set(l,this.$y+e);if(f===a)return p(1);if(f===s)return p(7);var m=(A={},A[i]=n,A[o]=t,A[r]=1e3,A)[f]||1,h=this.$d.getTime()+e*m;return v.w(h,this)},h.subtract=function(n,t){return this.add(-1*n,t)},h.format=function(n){var t=this,e=this.$locale();if(!this.isValid())return e.invalidDate||d;var r=n||"YYYY-MM-DDTHH:mm:ssZ",i=v.z(this),o=this.$H,a=this.$m,s=this.$M,u=e.weekdays,c=e.months,l=e.meridiem,A=function(n,e,i,o){return n&&(n[e]||n(t,r))||i[e].slice(0,o)},f=function(n){return v.s(o%12||12,n,"0")},m=l||function(n,t,e){var r=n<12?"AM":"PM";return e?r.toLowerCase():r};return r.replace(p,(function(n,r){return r||function(n){switch(n){case"YY":return String(t.$y).slice(-2);case"YYYY":return v.s(t.$y,4,"0");case"M":return s+1;case"MM":return v.s(s+1,2,"0");case"MMM":return A(e.monthsShort,s,c,3);case"MMMM":return A(c,s);case"D":return t.$D;case"DD":return v.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return A(e.weekdaysMin,t.$W,u,2);case"ddd":return A(e.weekdaysShort,t.$W,u,3);case"dddd":return u[t.$W];case"H":return String(o);case"HH":return v.s(o,2,"0");case"h":return f(1);case"hh":return f(2);case"a":return m(o,a,!0);case"A":return m(o,a,!1);case"m":return String(a);case"mm":return v.s(a,2,"0");case"s":return String(t.$s);case"ss":return v.s(t.$s,2,"0");case"SSS":return v.s(t.$ms,3,"0");case"Z":return i}return null}(n)||i.replace(":","")}))},h.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},h.diff=function(e,A,d){var f,p=this,m=v.p(A),h=B(e),g=(h.utcOffset()-this.utcOffset())*n,C=this-h,I=function(){return v.m(p,h)};switch(m){case l:f=I()/12;break;case u:f=I();break;case c:f=I()/3;break;case s:f=(C-g)/6048e5;break;case a:f=(C-g)/864e5;break;case o:f=C/t;break;case i:f=C/n;break;case r:f=C/1e3;break;default:f=C}return d?f:v.a(f)},h.daysInMonth=function(){return this.endOf(u).$D},h.$locale=function(){return I[this.$L]},h.locale=function(n,t){if(!n)return this.$L;var e=this.clone(),r=y(n,t,!0);return r&&(e.$L=r),e},h.clone=function(){return v.w(this.$d,this)},h.toDate=function(){return new Date(this.valueOf())},h.toJSON=function(){return this.isValid()?this.toISOString():null},h.toISOString=function(){return this.$d.toISOString()},h.toString=function(){return this.$d.toUTCString()},m}(),x=k.prototype;return B.prototype=x,[["$ms",e],["$s",r],["$m",i],["$H",o],["$W",a],["$M",u],["$y",l],["$D",A]].forEach((function(n){x[n[1]]=function(t){return this.$g(t,n[0],n[1])}})),B.extend=function(n,t){return n.$i||(n(t,k,B),n.$i=!0),B},B.locale=y,B.isDayjs=w,B.unix=function(n){return B(1e3*n)},B.en=I[C],B.Ls=I,B.p={},B}()},72:n=>{"use strict";var t=[];function e(n){for(var e=-1,r=0;r<t.length;r++)if(t[r].identifier===n){e=r;break}return e}function r(n,r){for(var o={},a=[],s=0;s<n.length;s++){var u=n[s],c=r.base?u[0]+r.base:u[0],l=o[c]||0,A="".concat(c," ").concat(l);o[c]=l+1;var d=e(A),f={css:u[1],media:u[2],sourceMap:u[3],supports:u[4],layer:u[5]};if(-1!==d)t[d].references++,t[d].updater(f);else{var p=i(f,r);r.byIndex=s,t.splice(s,0,{identifier:A,updater:p,references:1})}a.push(A)}return a}function i(n,t){var e=t.domAPI(t);return e.update(n),function(t){if(t){if(t.css===n.css&&t.media===n.media&&t.sourceMap===n.sourceMap&&t.supports===n.supports&&t.layer===n.layer)return;e.update(n=t)}else e.remove()}}n.exports=function(n,i){var o=r(n=n||[],i=i||{});return function(n){n=n||[];for(var a=0;a<o.length;a++){var s=e(o[a]);t[s].references--}for(var u=r(n,i),c=0;c<o.length;c++){var l=e(o[c]);0===t[l].references&&(t[l].updater(),t.splice(l,1))}o=u}}},659:n=>{"use strict";var t={};n.exports=function(n,e){var r=function(n){if(void 0===t[n]){var e=document.querySelector(n);if(window.HTMLIFrameElement&&e instanceof window.HTMLIFrameElement)try{e=e.contentDocument.head}catch(n){e=null}t[n]=e}return t[n]}(n);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(e)}},540:n=>{"use strict";n.exports=function(n){var t=document.createElement("style");return n.setAttributes(t,n.attributes),n.insert(t,n.options),t}},56:(n,t,e)=>{"use strict";n.exports=function(n){var t=e.nc;t&&n.setAttribute("nonce",t)}},825:n=>{"use strict";n.exports=function(n){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=n.insertStyleElement(n);return{update:function(e){!function(n,t,e){var r="";e.supports&&(r+="@supports (".concat(e.supports,") {")),e.media&&(r+="@media ".concat(e.media," {"));var i=void 0!==e.layer;i&&(r+="@layer".concat(e.layer.length>0?" ".concat(e.layer):""," {")),r+=e.css,i&&(r+="}"),e.media&&(r+="}"),e.supports&&(r+="}");var o=e.sourceMap;o&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleTagTransform(r,n,t.options)}(t,n,e)},remove:function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(t)}}}},113:n=>{"use strict";n.exports=function(n,t){if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}}},t={};function e(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={id:r,exports:{}};return n[r].call(o.exports,o,o.exports,e),o.exports}e.n=n=>{var t=n&&n.__esModule?()=>n.default:()=>n;return e.d(t,{a:t}),t},e.d=(n,t)=>{for(var r in t)e.o(t,r)&&!e.o(n,r)&&Object.defineProperty(n,r,{enumerable:!0,get:t[r]})},e.o=(n,t)=>Object.prototype.hasOwnProperty.call(n,t),e.nc=void 0,(()=>{"use strict";var n="https://develop.bookings.vacayou.com/",t="tripfusion-widget",r="tripfusion-widget-inner-wrapper",i="tripfusion-widget-header",o="tripfusion-widget-wrapper",a="tripfusion-widget-iframe",s="tripfusion-resume-panel",u="tripfusion-loader",c="normal",l="append";const A=n=>{let t;const e=new Set,r=(n,r)=>{const i="function"==typeof n?n(t):n;if(!Object.is(i,t)){const n=t;t=(null!=r?r:"object"!=typeof i||null===i)?i:Object.assign({},t,i),e.forEach((e=>e(t,n)))}},i=()=>t,o={setState:r,getState:i,getInitialState:()=>a,subscribe:n=>(e.add(n),()=>e.delete(n))},a=t=n(r,i,o);return o},d=n=>n?A(n):A;var f=function(){return f=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var i in t=arguments[e])Object.prototype.hasOwnProperty.call(t,i)&&(n[i]=t[i]);return n},f.apply(this,arguments)},p={isOpen:!1,isResumePanelVisible:!1,isReady:!1,isBookingCompleted:!1,backgroundColor:"rgb(35, 76, 121)",cart:{}},m=d()((function(n){return f(f({},p),{showWidget:function(){return n({isOpen:!0})},hideWidget:function(){return n({isOpen:!1})},showResumePanel:function(){return n({isResumePanelVisible:!0})},hideResumePanel:function(){return n({isResumePanelVisible:!1})},setIsReady:function(t){return n({isReady:t})},setIsBookingCompleted:function(t){return n({isBookingCompleted:t})},setBackgroundColor:function(t){return n(t?{backgroundColor:t}:{backgroundColor:p.backgroundColor})},setPrimaryGuestName:function(t){return n({primaryGuestName:t})},setCart:function(t){return n({cart:t})},setDates:function(t,e){return n({checkInDate:t,checkOutDate:e})},reset:function(){return n(p)}})})),h=function(){return h=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var i in t=arguments[e])Object.prototype.hasOwnProperty.call(t,i)&&(n[i]=t[i]);return n},h.apply(this,arguments)},g=function(){var n,t=document.getElementById("tripfusion-sdk").getAttribute("src"),e=C(new URLSearchParams(t.substring(t.indexOf("?"))));return{client:null!==(n=e.client)&&void 0!==n?n:null,propertyId:e.propertyId?+e.propertyId:null}};function C(n){var t={tripfusion:"tripfusion",client:"client",propertyid:"propertyId",mode:"mode",offerid:"offerId",bookingid:"bookingId",checkin:"checkIn",checkout:"checkOut",adults:"adults",children:"children"};return Array.from(n.entries()).reduce((function(n,e){var r,i=e[0],o=e[1];return h(h({},n),((r={})[t[i.toLowerCase()]]=o,r))}),{})}function I(t){return e=this,r=arguments,o=function(t,e){var r,i,o;return void 0===e&&(e="error"),function(n,t){var e,r,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return a.next=s(0),a.throw=s(1),a.return=s(2),"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(s){return function(u){return function(s){if(e)throw new TypeError("Generator is already executing.");for(;a&&(a=0,s[0]&&(o=0)),o;)try{if(e=1,r&&(i=2&s[0]?r.return:s[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,s[1])).done)return i;switch(r=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,r=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]<i[3])){o.label=s[1];break}if(6===s[0]&&o.label<i[1]){o.label=i[1],i=s;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(s);break}i[2]&&o.ops.pop(),o.trys.pop();continue}s=t.call(n,o)}catch(n){s=[6,n],r=0}finally{e=i=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,u])}}}(this,(function(a){return r="".concat(n,"api/vacayou/log"),i={message:t,page:window.location.href},o={"content-type":"application/json"},[2,fetch(r,{method:"POST",body:JSON.stringify({type:e,payload:i}),headers:o}).then((function(n){return n.json()})).catch((function(n){console.log("Tripfusion: failed to log message: ".concat(n))}))]}))},new((i=void 0)||(i=Promise))((function(n,t){function a(n){try{u(o.next(n))}catch(n){t(n)}}function s(n){try{u(o.throw(n))}catch(n){t(n)}}function u(t){var e;t.done?n(t.value):(e=t.value,e instanceof i?e:new i((function(n){n(e)}))).then(a,s)}u((o=o.apply(e,r||[])).next())}));var e,r,i,o}function b(){try{var n=document.getElementById(t),e=document.getElementById(o);n&&e&&(document.body.style.overflow="initial",n.setAttribute("class","slide-out"),e.style.background="rgba(0, 0, 0, 0)",n.style.display="none",e.style.zIndex="".concat(-1e11))}catch(n){I("Widget: Error closing widget: ".concat(n)),console.error("Tripfusion: Error closing widget: ",n)}}function w(){document.body.style.overflow="hidden"}var y=d()((function(){return{client:"",propertyId:0,mode:c}})),B=function(n){if(!n.client||!n.propertyId)throw new Error("Client and propertyId are required");y.setState(n,!0)},v=e(353),k=e.n(v);const x=n=>Symbol.iterator in n;var E=e(72),S=e.n(E),$=e(825),O=e.n($),D=e(659),M=e.n(D),Y=e(56),j=e.n(Y),Q=e(540),_=e.n(Q),W=e(113),T=e.n(W),z=e(365),X={};function R(n){try{var t=m.getState(),e=t.setIsReady;(0,t.hideResumePanel)();var r=null!=n?n:g();(function(n,t){if(Object.is(n,t))return!0;if("object"!=typeof n||null===n||"object"!=typeof t||null===t)return!1;if(x(n)&&x(t)){const e=n[Symbol.iterator](),r=t[Symbol.iterator]();let i=e.next(),o=r.next();if(Array.isArray(i.value)&&Array.isArray(o.value)&&2===i.value.length&&2===o.value.length)return((n,t)=>{const e=n instanceof Map?n:new Map(n),r=t instanceof Map?t:new Map(t);if(e.size!==r.size)return!1;for(const[n,t]of e)if(!Object.is(t,r.get(n)))return!1;return!0})(n,t);for(;!i.done&&!o.done;){if(!Object.is(i.value,o.value))return!1;i=e.next(),o=r.next()}return!!i.done&&!!o.done}const e=Object.keys(n);if(e.length!==Object.keys(t).length)return!1;for(const r of e)if(!Object.hasOwn(t,r)||!Object.is(n[r],t[r]))return!1;return!0})(y.getState(),r)||(e(!1),B(r)),m.getState().showWidget()}catch(n){I("Widget: failed to book: ".concat(n)),console.error("Tripfusion: failed to book: ".concat(n))}}X.styleTagTransform=T(),X.setAttributes=j(),X.insert=M().bind(null,"head"),X.domAPI=O(),X.insertStyleElement=_(),S()(z.A,X),z.A&&z.A.locals&&z.A.locals,y.subscribe((function(t){!function(t){var e,i=t.client,o=t.propertyId,s=t.mode,u=t.bookingId,c=function(n,t){var e={};for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&t.indexOf(r)<0&&(e[r]=n[r]);if(null!=n&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(n);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(n,r[i])&&(e[r[i]]=n[r[i]])}return e}(t,["client","propertyId","mode","bookingId"]);try{null===(e=document.getElementById(a))||void 0===e||e.remove();var A=document.getElementById(r);if(A){var d=document.createElement("iframe"),f="".concat(n).concat(i,"/").concat(o);s===l&&u&&(f+="/booking/".concat(u,"/append"));var p=Object.entries(c).filter((function(n){return n[0],!!n[1]})).map((function(n){var t=n[0],e=n[1];return"".concat(t,"=").concat(e).toLowerCase()})).join("&");p&&(f+="?".concat(p)),d.setAttribute("src",f),d.id=a,A.appendChild(d)}}catch(n){I("Widget: Error injecting iframe: ".concat(n)),console.error("Tripfusion: Error injecting iframe: ",n)}}(t)})),m.subscribe((function(n,e){var r,c,l,A;if(n.isResumePanelVisible){var d="Complete your booking",f="",p=[];if(n.isBookingCompleted?d="Booking completed!":n.primaryGuestName&&(d+=", ".concat(n.primaryGuestName)),n.checkInDate&&n.checkOutDate&&p.push("".concat(k()(n.checkInDate).format("MMM DD")," - ").concat(k()(n.checkOutDate).format("MMM DD"))),n.cart.total){if(null===(r=n.cart)||void 0===r?void 0:r.rooms){var m=n.cart.rooms.length,h=n.cart.rooms.reduce((function(n,t){return n+t.passengers.adults+t.passengers.children.length}),0);f="".concat(m," room").concat(m>1?"s":""," for "),p.push("".concat(h," guest").concat(h>1?"s":""))}f+=null!==(l=n.cart.total)?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(l/100):""}!function(n){var t=n.headerText,e=n.subheaderText,r=n.footerText;document.getElementById(s).innerHTML='\n <div>\n <div class="tripfusion-resume-panel__header">\n <span>'.concat(t,'</span>\n <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 330 330" xml:space="preserve">\n <path id="XMLID_222_" d="M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z"/>\n </svg>\n </div>\n ').concat(e&&'<span class="tripfusion-resume-panel__subheader">'.concat(e,"</span>"),"\n </div>\n ").concat(r&&'<span class="tripfusion-resume-panel__footer">'.concat(r,"</span>"),"\n ")}({headerText:d,subheaderText:f,footerText:p.join(", ")})}n.backgroundColor!==e.backgroundColor&&function(n){var t=n.backgroundColor,e=document.getElementById(s),r=document.getElementById(i);e.style.backgroundColor=t,r.style.backgroundColor=t}({backgroundColor:n.backgroundColor}),n.isReady?(null===(c=document.getElementById(u))||void 0===c||c.remove(),n.isOpen?function(){try{var n=document.getElementById(t),e=document.getElementById(o);Object.assign(e.style,{zIndex:0xe8d4a5100b,height:"100%",background:"rgba(0, 0, 0, .5)"}),w(),n.style.display="block",n.setAttribute("class","slide-in"),setTimeout((function(){var n=document.getElementById(a);null==n||n.focus()}),250)}catch(n){I("Widget: Error openning widget: ".concat(n)),console.error("Tripfusion: Error openning widget: ",n)}}():b(),n.isResumePanelVisible?((A=document.getElementById(s)).setAttribute("class","tripfusion-resume-panel--slide-in"),A.focus()):document.getElementById(s).setAttribute("class","tripfusion-resume-panel--slide-out")):function(){var n=document.getElementById(o);if(n){var t=document.createElement("div");t.id=u,t.innerHTML="Loading <span>TripFusion</span>",n.appendChild(t),n.style.zIndex="".concat(1e11),n.style.height="100%",n.style.background="rgba(0, 0, 0, .74)",w()}}()})),function(){try{var n=g(),e=n.client,a=n.propertyId,u=setInterval((function(){"complete"===document.readyState&&(function(){try{var n=m.getState(),e=n.showWidget,a=n.hideWidget,u=n.showResumePanel,c=n.hideResumePanel,l=document.createElement("div"),A=document.createElement("div"),d=document.createElement("div"),f=document.createElement("div"),p=document.createElement("span"),h=document.createElement("button"),g=document.createElement("div");g.id=s,null==g||g.addEventListener("click",(function(){e(),c()})),l.id=t,l.style.display="none",A.id=o,l.addEventListener("click",(function(n){this===n.target&&(a(),u())})),d.id=r,f.id=i,h.id="tripfusion-widget-close-button",h.addEventListener("click",(function(){a(),u()})),p.id="tripfusion-widget-header-title",p.innerHTML="Booking",A.appendChild(l),l.appendChild(d),d.appendChild(f),f.appendChild(p),f.appendChild(h),document.body.appendChild(A),document.body.appendChild(g)}catch(n){I("Widget: Error preparing DOM: ".concat(n)),console.error("Tripfusion: Error preparing DOM: ",n)}}(),B({client:e,propertyId:a}),function(){function n(n){var t;try{var e=n.target,r=e.parentNode;"A"!==e.tagName&&"A"===(null==r?void 0:r.tagName)&&(e.href=null==r?void 0:r.href);var i=e.href||"";if(!i.includes("?"))return;var o=C(new URLSearchParams(i.substring(i.indexOf("?"))));if("true"===o.tripfusion){n.preventDefault();var a=g(),s=a.client,u=a.propertyId;R({client:null!==(t=o.client)&&void 0!==t?t:s,propertyId:o.propertyId?+o.propertyId:u,mode:o.mode===l?l:c,bookingId:(null==o?void 0:o.bookingId)&&(null==o?void 0:o.mode)===l?+o.bookingId:null,offerId:o.offerId?+o.offerId:void 0,checkIn:o.checkIn,checkOut:o.checkOut,adults:o.adults?+o.adults:void 0,children:o.children?o.children.split(",").map((function(n){return+n})):void 0})}}catch(n){I("Widget: Error in link click handler: ".concat(n)),console.error("Tripfusion: Error in link click handler: ",n)}}document.querySelectorAll("a").forEach((function(t){t.addEventListener("click",n)}))}(),clearInterval(u))}),100);!function(){function n(){setTimeout((function(){var n,t=C(new URLSearchParams(window.location.search));"true"===t.tripfusion&&(y.getState().client||t.client)&&(y.getState().propertyId||t.propertyId)&&R({client:null!==(n=t.client)&&void 0!==n?n:y.getState().client,propertyId:t.propertyId?+t.propertyId:y.getState().propertyId,mode:t.mode===l?l:c,bookingId:(null==t?void 0:t.bookingId)&&(null==t?void 0:t.mode)===l?+t.bookingId:null,offerId:t.offerId?+t.offerId:void 0,checkIn:t.checkIn,checkOut:t.checkOut,adults:t.adults?+t.adults:void 0,children:t.children?t.children.split(",").map((function(n){return+n})):void 0})}),500)}"complete"===document.readyState?n():window.addEventListener("load",n)}(),Object.assign(window,{book:R,closeWidget:b}),window.onmessage=function(n){var t=n.data;switch(t.type){case"tripfusion-widget-ready":m.getState().setIsReady(!0);break;case"tripfusion-booking-completed":m.getState().setIsBookingCompleted(!0);break;case"tripfusion-set-client-theme":var e=(r=t.data).primary;e&&m.getState().setBackgroundColor(e);break;case"tripfusion-set-guest-name":var r=t.data;m.getState().setPrimaryGuestName(r.name);break;case"tripfusion-set-dates":(r=t.data).checkIn&&r.checkOut&&m.getState().setDates(r.checkIn,r.checkOut);break;case"tripfusion-set-cart":r=t.data,m.getState().setCart(r.cart)}}}catch(n){I("Widget: failed to init Tripfusion JS SDK: ".concat(n)),console.error("Tripfusion: failed to init SDK: ".concat(n))}}()})()})();
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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V3dCLFNBQVN1SixFQUFZWixRQUFTWSxFQUFZWCxVQUVyRSxNQUVKLElSbE1GLHNCUW1NWVcsRUFBY3ZILEVBQVF2UixLQUM1QjRPLEVBQVliLFdBQVd1QixRQUFRd0osRUFBWW5LLE1BT3ZELENBQ0osQ0FBRSxNQUFPMkQsR0FDTGhCLEVBQU8sb0RBQTZDZ0IsSUFDcERDLFFBQVFELE1BQU0sMENBQW1DQSxHQUNyRCxDQUNKLENBRUEwRyxFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9zcmMvc3R5bGVzLmNzcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9kYXlqcy9kYXlqcy5taW4uanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL3J1bnRpbWUvbm9uY2UiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9zcmMvY29uc3QudHMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvenVzdGFuZC9lc20vdmFuaWxsYS5tanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9zcmMvc3RvcmUvd2lkZ2V0LnN0b3JlLnRzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL3V0aWxzLnRzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL2RvbS50cyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy9zdG9yZS9nbG9iYWwuc3RvcmUudHMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvenVzdGFuZC9lc20vdmFuaWxsYS9zaGFsbG93Lm1qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy9zdHlsZXMuY3NzPzQ0YjIiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiQGltcG9ydCB1cmwoaHR0cHM6Ly91c2UudHlwZWtpdC5uZXQvc2FnOGNlYi5jc3MpO1wiXSk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgYCN0cmlwZnVzaW9uLWxvYWRlciB7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIG1hcmdpbi1yaWdodDogLTUwJTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIGZvbnQtZmFtaWx5OiBmdXR1cmEtbHQtdzAxLWJvb2ssIGZ1dHVyYS1sdC13MDUtYm9vaywgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cblxuI3RyaXBmdXNpb24tbG9hZGVyIHNwYW4ge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xufVxuXG4jdHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwge1xuICAgIG1heC13aWR0aDogMjUwcHg7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDAuNXJlbTtcbiAgICBwYWRkaW5nOiAxMnB4IDI0cHg7XG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAycHggcmdiYSgwLCAwLCAwLCAwLjI1KSwgMHB4IDRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIHJpZ2h0OiAzMHB4O1xuICAgIHotaW5kZXg6IDEwMDAwMDAwMDAwMDtcbiAgICBib3R0b206IDQwcHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0MDBweCk7XG4gICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGZvbnQtZmFtaWx5OiBzd2VldC1zYW5zLXBybywgc2Fucy1zZXJpZjtcbn1cblxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogMmVtO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbF9faGVhZGVyIHN2ZyB7XG4gICAgd2lkdGg6IDE4cHg7XG4gICAgaGVpZ2h0OiAxOHB4O1xuICAgIGZpbGw6IHdoaXRlO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX2hlYWRlciBzcGFuLFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19zdWJoZWFkZXIge1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX2Zvb3RlciB7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICBmb250LXdlaWdodDogNDAwO1xufVxuXG4jdHJpcGZ1c2lvbi13aWRnZXQtd3JhcHBlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwKTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC41cyBlYXNlLW91dDtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHRvcDogMHB4O1xuICAgIHJpZ2h0OiAwcHg7XG59XG5cbiN0cmlwZnVzaW9uLXdpZGdldC1pbm5lci13cmFwcGVyIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIG1pbi13aWR0aDogMzIwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHJpZ2h0OiAwcHg7XG4gICAgYm90dG9tOiAwcHg7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMik7XG4gICAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAwOTM4ZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICN0cmlwZnVzaW9uLXdpZGdldC1pbm5lci13cmFwcGVyIHtcbiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0MHB4KTtcbiAgICAgICAgcmlnaHQ6IDIwcHg7XG4gICAgICAgIGJvdHRvbTogMjBweDtcbiAgICAgICAgd2lkdGg6IDUwMHB4O1xuICAgIH1cbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LWhlYWRlciB7XG4gICAgaGVpZ2h0OiA2MHB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjFmMWYxO1xuICAgIHBhZGRpbmc6IDAgMTZweCAwIDE2cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBjb2xvcjogd2hpdGU7XG59XG5cbiN0cmlwZnVzaW9uLXdpZGdldC1pZnJhbWUge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBib3JkZXI6IG5vbmU7XG59XG5cbiN0cmlwZnVzaW9uLXdpZGdldC1oZWFkZXItdGl0bGUge1xuICAgIGZvbnQtZmFtaWx5OiBzd2VldC1zYW5zLXBybywgc2Fucy1zZXJpZjtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGxldHRlci1zcGFjaW5nOiAxLjVweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4jdHJpcGZ1c2lvbi13aWRnZXQtY2xvc2UtYnV0dG9uIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogMmVtO1xuICAgIGhlaWdodDogMmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIHRleHQtaW5kZW50OiAxMDAlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICY6Zm9jdXMge1xuICAgICAgICBvdXRsaW5lOiBzb2xpZCAwIHRyYW5zcGFyZW50O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuICAgIH1cblxuICAgICY6YmVmb3JlLFxuICAgICY6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMjUlO1xuICAgICAgICBsZWZ0OiBjYWxjKDUwJSAtIDAuMDYyNWVtKTtcbiAgICAgICAgd2lkdGg6IDAuMTI1ZW07XG4gICAgICAgIGhlaWdodDogNTAlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjEyNWVtO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgICAgIGJhY2tncm91bmQ6IGN1cnJlbnRjb2xvcjtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgIH1cblxuICAgICY6YWZ0ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xuICAgIH1cbn1cblxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsLS1zbGlkZS1pbiB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiA1MDBtcztcbiAgICAtbW96LXRyYW5zaXRpb246IDUwMG1zO1xuICAgIHRyYW5zaXRpb246IDUwMG1zO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSAhaW1wb3J0YW50O1xufVxuXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwtLXNsaWRlLW91dCB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiA1MDBtcztcbiAgICAtbW96LXRyYW5zaXRpb246IDUwMG1zO1xuICAgIHRyYW5zaXRpb246IDUwMG1zO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0MDBweCkgIWltcG9ydGFudDtcbn1cblxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsLS1yZXNpemUtaW4ge1xuICAgIHdpZHRoOiA0NnB4ICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiA0NnB4ICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XG4gICAgcmlnaHQ6IDMwcHggIWltcG9ydGFudDtcbn1cblxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsLS1yZXNpemUtaW46aG92ZXIge1xuICAgIHdpZHRoOiAyMTdweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xuICAgIHRyYW5zaXRpb246IGFsbCAzMDBtcyBsaW5lYXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwtLXJlc2l6ZS1vdXQge1xuICAgIHdpZHRoOiA0NnB4ICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiA0NnB4ICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XG4gICAgcmlnaHQ6IC0xMDBweCAhaW1wb3J0YW50O1xufVxuXG4uc2xpZGUtaW4ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICBhbmltYXRpb246IHNsaWRlLWluIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtaW4gMC44cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xuICAgIHotaW5kZXg6IDEwMDAwMDAwMDAwMDA7XG59XG5cbi5zbGlkZS1vdXQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICBhbmltYXRpb246IHNsaWRlLW91dCAxcyBmb3J3YXJkcyAhaW1wb3J0YW50O1xuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS1vdXQgMXMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICB6LWluZGV4OiAtMTAwMDAwMDAwMDAwMDtcbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDk1cHgpIHtcbiAgICAuc2xpZGUtaW4ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgICAgICBhbmltYXRpb246IHNsaWRlLXVwIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLXVwIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICAgICAgei1pbmRleDogMTAwMDAwMDAwMDAwMDtcbiAgICB9XG5cbiAgICAuc2xpZGUtb3V0IHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICAgICAgYW5pbWF0aW9uOiBzbGlkZS1kb3duIDAuNXMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLWRvd24gMXMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICAgICAgei1pbmRleDogLTEwMDAwMDAwMDAwMDA7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlLWluIHtcbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcbiAgICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS1pbiB7XG4gICAgMTAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGUtdXAge1xuICAgIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xuICAgIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlLXVwIHtcbiAgICAxMDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZS1vdXQge1xuICAgIDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlLW91dCB7XG4gICAgMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZS1kb3duIHtcbiAgICAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS1kb3duIHtcbiAgICAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgfVxufVxuYCwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9zcmMvc3R5bGVzLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFQTtJQUNJLFlBQVk7SUFDWixrQkFBa0I7SUFDbEIsa0JBQWtCO0lBQ2xCLFFBQVE7SUFDUixTQUFTO0lBQ1QsaUZBQWlGO0lBQ2pGLGdDQUFnQztBQUNwQzs7QUFFQTtJQUNJLGlCQUFpQjtJQUNqQixpQkFBaUI7QUFDckI7O0FBRUE7SUFDSSxnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixlQUFlO0lBQ2YsYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixXQUFXO0lBQ1gsa0JBQWtCO0lBQ2xCLDJFQUEyRTtJQUMzRSxXQUFXO0lBQ1gscUJBQXFCO0lBQ3JCLFlBQVk7SUFDWixZQUFZO0lBQ1osNEJBQTRCO0lBQzVCLG1CQUFtQjtJQUNuQixZQUFZO0lBQ1osZUFBZTtJQUNmLHVDQUF1QztBQUMzQzs7QUFFQTtJQUNJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsUUFBUTtJQUNSLG1CQUFtQjtBQUN2Qjs7QUFFQTtJQUNJLFdBQVc7SUFDWCxZQUFZO0lBQ1osV0FBVztJQUNYLGNBQWM7QUFDbEI7O0FBRUE7O0lBRUksZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsdUJBQXVCO0FBQzNCOztBQUVBO0lBQ0ksaURBQWlEO0lBQ2pELGlCQUFpQjtJQUNqQixnQkFBZ0I7QUFDcEI7O0FBRUE7SUFDSSw0QkFBNEI7SUFDNUIsZUFBZTtJQUNmLE1BQU07SUFDTixRQUFRO0lBQ1IsV0FBVztJQUNYLG9DQUFvQztBQUN4Qzs7QUFFQTtJ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QkFBMkI7SUFDL0I7QUFDSjs7QUFFQTtJQUNJO1FBQ0ksaUNBQWlDO0lBQ3JDOztJQUVBO1FBQ0ksbUNBQW1DO0lBQ3ZDO0FBQ0pcIixcInNvdXJjZXNDb250ZW50XCI6W1wiQGltcG9ydCB1cmwoXFxcImh0dHBzOi8vdXNlLnR5cGVraXQubmV0L3NhZzhjZWIuY3NzXFxcIik7XFxuXFxuI3RyaXBmdXNpb24tbG9hZGVyIHtcXG4gICAgY29sb3I6IHdoaXRlO1xcbiAgICBtYXJnaW4tcmlnaHQ6IC01MCU7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgdG9wOiA1MCU7XFxuICAgIGxlZnQ6IDUwJTtcXG4gICAgZm9udC1mYW1pbHk6IGZ1dHVyYS1sdC13MDEtYm9vaywgZnV0dXJhLWx0LXcwNS1ib29rLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcXG59XFxuXFxuI3RyaXBmdXNpb24tbG9hZGVyIHNwYW4ge1xcbiAgICBmb250LXdlaWdodDogYm9sZDtcXG4gICAgZm9udC1zaXplOiAxLjNyZW07XFxufVxcblxcbiN0cmlwZnVzaW9uLXJlc3VtZS1wYW5lbCB7XFxuICAgIG1heC13aWR0aDogMjUwcHg7XFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICBnYXA6IDAuNXJlbTtcXG4gICAgcGFkZGluZzogMTJweCAyNHB4O1xcbiAgICBib3gtc2hhZG93OiAwcHggMHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMjUpLCAwcHggNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxuICAgIHJpZ2h0OiAzMHB4O1xcbiAgICB6LWluZGV4OiAxMDAwMDAwMDAwMDA7XFxuICAgIGJvdHRvbTogNDBweDtcXG4gICAgYm9yZGVyOiBub25lO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNDAwcHgpO1xcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xcbiAgICBjb2xvcjogd2hpdGU7XFxuICAgIGZvbnQtc2l6ZTogMXJlbTtcXG4gICAgZm9udC1mYW1pbHk6IHN3ZWV0LXNhbnMtcHJvLCBzYW5zLXNlcmlmO1xcbn1cXG5cXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX2hlYWRlciB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gICAgZ2FwOiAyZW07XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcblxcbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbF9faGVhZGVyIHN2ZyB7XFxuICAgIHdpZHRoOiAxOHB4O1xcbiAgICBoZWlnaHQ6IDE4cHg7XFxuICAgIGZpbGw6IHdoaXRlO1xcbiAgICBmbGV4LXNocmluazogMDtcXG59XFxuXFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19oZWFkZXIgc3BhbixcXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX3N1YmhlYWRlciB7XFxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbn1cXG5cXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX2Zvb3RlciB7XFxuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG8sIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtd3JhcHBlciB7XFxuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMCk7XFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gICAgdG9wOiAwO1xcbiAgICByaWdodDogMDtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC41cyBlYXNlLW91dDtcXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0IHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICB0b3A6IDBweDtcXG4gICAgcmlnaHQ6IDBweDtcXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0LWlubmVyLXdyYXBwZXIge1xcbiAgICBwb3NpdGlvbjogZml4ZWQ7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIG1pbi13aWR0aDogMzIwcHg7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIHJpZ2h0OiAwcHg7XFxuICAgIGJvdHRvbTogMHB4O1xcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xcbiAgICBib3gtc2hhZG93OiAwIDJweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpO1xcbiAgICBmb250LWZhbWlseTogXFxcIlJvYm90b1xcXCIsIFxcXCJIZWx2ZXRpY2FcXFwiLCBcXFwiQXJpYWxcXFwiLCBzYW5zLXNlcmlmO1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICBmb250LXNpemU6IDFyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICAgIGxldHRlci1zcGFjaW5nOiAwLjAwOTM4ZW07XFxufVxcblxcbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xcbiAgICAjdHJpcGZ1c2lvbi13aWRnZXQtaW5uZXItd3JhcHBlciB7XFxuICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDQwcHgpO1xcbiAgICAgICAgcmlnaHQ6IDIwcHg7XFxuICAgICAgICBib3R0b206IDIwcHg7XFxuICAgICAgICB3aWR0aDogNTAwcHg7XFxuICAgIH1cXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0LWhlYWRlciB7XFxuICAgIGhlaWdodDogNjBweDtcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMWYxZjE7XFxuICAgIHBhZGRpbmc6IDAgMTZweCAwIDE2cHg7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgY29sb3I6IHdoaXRlO1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtaWZyYW1lIHtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICBib3JkZXI6IG5vbmU7XFxufVxcblxcbiN0cmlwZnVzaW9uLXdpZGdldC1oZWFkZXItdGl0bGUge1xcbiAgICBmb250LWZhbWlseTogc3dlZXQtc2Fucy1wcm8sIHNhbnMtc2VyaWY7XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XFxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAgIGZvbnQtc2l6ZTogMXJlbTtcXG4gICAgbGV0dGVyLXNwYWNpbmc6IDEuNXB4O1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtY2xvc2UtYnV0dG9uIHtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBib3JkZXI6IG5vbmU7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIHdpZHRoOiAyZW07XFxuICAgIGhlaWdodDogMmVtO1xcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgICBmb250OiBpbmhlcml0O1xcbiAgICB0ZXh0LWluZGVudDogMTAwJTtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgICAmOmZvY3VzIHtcXG4gICAgICAgIG91dGxpbmU6IHNvbGlkIDAgdHJhbnNwYXJlbnQ7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDQpO1xcbiAgICB9XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA0KTtcXG4gICAgfVxcblxcbiAgICAmOmJlZm9yZSxcXG4gICAgJjphZnRlciB7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICB0b3A6IDI1JTtcXG4gICAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMC4wNjI1ZW0pO1xcbiAgICAgICAgd2lkdGg6IDAuMTI1ZW07XFxuICAgICAgICBoZWlnaHQ6IDUwJTtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMTI1ZW07XFxuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XFxuICAgICAgICBiYWNrZ3JvdW5kOiBjdXJyZW50Y29sb3I7XFxuICAgICAgICBjb2xvcjogd2hpdGU7XFxuICAgICAgICBjb250ZW50OiBcXFwiXFxcIjtcXG4gICAgfVxcblxcbiAgICAmOmFmdGVyIHtcXG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XFxuICAgIH1cXG59XFxuXFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsLS1zbGlkZS1pbiB7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIC1tb3otdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIHRyYW5zaXRpb246IDUwMG1zO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcXG59XFxuXFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsLS1zbGlkZS1vdXQge1xcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IDUwMG1zO1xcbiAgICAtbW96LXRyYW5zaXRpb246IDUwMG1zO1xcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDQwMHB4KSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwtLXJlc2l6ZS1pbiB7XFxuICAgIHdpZHRoOiA0NnB4ICFpbXBvcnRhbnQ7XFxuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgcmlnaHQ6IDMwcHggIWltcG9ydGFudDtcXG59XFxuXFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsLS1yZXNpemUtaW46aG92ZXIge1xcbiAgICB3aWR0aDogMjE3cHggIWltcG9ydGFudDtcXG4gICAgaGVpZ2h0OiA0NnB4ICFpbXBvcnRhbnQ7XFxuICAgIHRyYW5zaXRpb246IGFsbCAzMDBtcyBsaW5lYXI7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsLS1yZXNpemUtb3V0IHtcXG4gICAgd2lkdGg6IDQ2cHggIWltcG9ydGFudDtcXG4gICAgaGVpZ2h0OiA0NnB4ICFpbXBvcnRhbnQ7XFxuICAgIHRyYW5zaXRpb246IDUwMG1zO1xcbiAgICByaWdodDogLTEwMHB4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5zbGlkZS1pbiB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIGFuaW1hdGlvbjogc2xpZGUtaW4gMC44cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtaW4gMC44cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICB6LWluZGV4OiAxMDAwMDAwMDAwMDAwO1xcbn1cXG5cXG4uc2xpZGUtb3V0IHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gICAgYW5pbWF0aW9uOiBzbGlkZS1vdXQgMXMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLW91dCAxcyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICB6LWluZGV4OiAtMTAwMDAwMDAwMDAwMDtcXG59XFxuXFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDk1cHgpIHtcXG4gICAgLnNsaWRlLWluIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbiAgICAgICAgYW5pbWF0aW9uOiBzbGlkZS11cCAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtdXAgMC44cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICAgICAgei1pbmRleDogMTAwMDAwMDAwMDAwMDtcXG4gICAgfVxcblxcbiAgICAuc2xpZGUtb3V0IHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbiAgICAgICAgYW5pbWF0aW9uOiBzbGlkZS1kb3duIDAuNXMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS1kb3duIDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgICAgICB6LWluZGV4OiAtMTAwMDAwMDAwMDAwMDtcXG4gICAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIHNsaWRlLWluIHtcXG4gICAgMTAwJSB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xcbiAgICB9XFxufVxcblxcbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS1pbiB7XFxuICAgIDEwMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xcbiAgICB9XFxufVxcblxcbkBrZXlmcmFtZXMgc2xpZGUtdXAge1xcbiAgICAxMDAlIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XFxuICAgIH1cXG59XFxuXFxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlLXVwIHtcXG4gICAgMTAwJSB7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XFxuICAgIH1cXG59XFxuXFxuQGtleWZyYW1lcyBzbGlkZS1vdXQge1xcbiAgICAwJSB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xcbiAgICB9XFxuXFxuICAgIDEwMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcbiAgICB9XFxufVxcblxcbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS1vdXQge1xcbiAgICAwJSB7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XFxuICAgIH1cXG5cXG4gICAgMTAwJSB7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gICAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIHNsaWRlLWRvd24ge1xcbiAgICAwJSB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xcbiAgICB9XFxuXFxuICAgIDEwMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbiAgICB9XFxufVxcblxcbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS1kb3duIHtcXG4gICAgMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xcbiAgICB9XFxuXFxuICAgIDEwMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICAgIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdO1xuXG4gIC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBcIlwiO1xuICAgICAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBpdGVtWzVdICE9PSBcInVuZGVmaW5lZFwiO1xuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpO1xuICAgICAgfVxuICAgICAgY29udGVudCArPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuICAgICAgaWYgKG5lZWRMYXllcikge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9KS5qb2luKFwiXCIpO1xuICB9O1xuXG4gIC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG4gIGxpc3QuaSA9IGZ1bmN0aW9uIGkobW9kdWxlcywgbWVkaWEsIGRlZHVwZSwgc3VwcG9ydHMsIGxheWVyKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCB1bmRlZmluZWRdXTtcbiAgICB9XG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcbiAgICBpZiAoZGVkdXBlKSB7XG4gICAgICBmb3IgKHZhciBrID0gMDsgayA8IHRoaXMubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgdmFyIGlkID0gdGhpc1trXVswXTtcbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yICh2YXIgX2sgPSAwOyBfayA8IG1vZHVsZXMubGVuZ3RoOyBfaysrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19rXSk7XG4gICAgICBpZiAoZGVkdXBlICYmIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGxheWVyICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbVs1XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG1lZGlhKSB7XG4gICAgICAgIGlmICghaXRlbVsyXSkge1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzdXBwb3J0cykge1xuICAgICAgICBpZiAoIWl0ZW1bNF0pIHtcbiAgICAgICAgICBpdGVtWzRdID0gXCJcIi5jb25jYXQoc3VwcG9ydHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs0XSA9IHN1cHBvcnRzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gbGlzdDtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgdmFyIGNvbnRlbnQgPSBpdGVtWzFdO1xuICB2YXIgY3NzTWFwcGluZyA9IGl0ZW1bM107XG4gIGlmICghY3NzTWFwcGluZykge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG4gIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzc01hcHBpbmcpKSkpO1xuICAgIHZhciBkYXRhID0gXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQoYmFzZTY0KTtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbiAgICByZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oXCJcXG5cIik7XG4gIH1cbiAgcmV0dXJuIFtjb250ZW50XS5qb2luKFwiXFxuXCIpO1xufTsiLCIhZnVuY3Rpb24odCxlKXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShlKToodD1cInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOnR8fHNlbGYpLmRheWpzPWUoKX0odGhpcywoZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjt2YXIgdD0xZTMsZT02ZTQsbj0zNmU1LHI9XCJtaWxsaXNlY29uZFwiLGk9XCJzZWNvbmRcIixzPVwibWludXRlXCIsdT1cImhvdXJcIixhPVwiZGF5XCIsbz1cIndlZWtcIixjPVwibW9udGhcIixmPVwicXVhcnRlclwiLGg9XCJ5ZWFyXCIsZD1cImRhdGVcIixsPVwiSW52YWxpZCBEYXRlXCIsJD0vXihcXGR7NH0pWy0vXT8oXFxkezEsMn0pP1stL10/KFxcZHswLDJ9KVtUdFxcc10qKFxcZHsxLDJ9KT86PyhcXGR7MSwyfSk/Oj8oXFxkezEsMn0pP1suOl0/KFxcZCspPyQvLHk9L1xcWyhbXlxcXV0rKV18WXsxLDR9fE17MSw0fXxEezEsMn18ZHsxLDR9fEh7MSwyfXxoezEsMn18YXxBfG17MSwyfXxzezEsMn18WnsxLDJ9fFNTUy9nLE09e25hbWU6XCJlblwiLHdlZWtkYXlzOlwiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXlcIi5zcGxpdChcIl9cIiksbW9udGhzOlwiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlclwiLnNwbGl0KFwiX1wiKSxvcmRpbmFsOmZ1bmN0aW9uKHQpe3ZhciBlPVtcInRoXCIsXCJzdFwiLFwibmRcIixcInJkXCJdLG49dCUxMDA7cmV0dXJuXCJbXCIrdCsoZVsobi0yMCklMTBdfHxlW25dfHxlWzBdKStcIl1cIn19LG09ZnVuY3Rpb24odCxlLG4pe3ZhciByPVN0cmluZyh0KTtyZXR1cm4hcnx8ci5sZW5ndGg+PWU/dDpcIlwiK0FycmF5KGUrMS1yLmxlbmd0aCkuam9pbihuKSt0fSx2PXtzOm0sejpmdW5jdGlvbih0KXt2YXIgZT0tdC51dGNPZmZzZXQoKSxuPU1hdGguYWJzKGUpLHI9TWF0aC5mbG9vcihuLzYwKSxpPW4lNjA7cmV0dXJuKGU8PTA/XCIrXCI6XCItXCIpK20ociwyLFwiMFwiKStcIjpcIittKGksMixcIjBcIil9LG06ZnVuY3Rpb24gdChlLG4pe2lmKGUuZGF0ZSgpPG4uZGF0ZSgpKXJldHVybi10KG4sZSk7dmFyIHI9MTIqKG4ueWVhcigpLWUueWVhcigpKSsobi5tb250aCgpLWUubW9udGgoKSksaT1lLmNsb25lKCkuYWRkKHIsYykscz1uLWk8MCx1PWUuY2xvbmUoKS5hZGQocisocz8tMToxKSxjKTtyZXR1cm4rKC0ocisobi1pKS8ocz9pLXU6dS1pKSl8fDApfSxhOmZ1bmN0aW9uKHQpe3JldHVybiB0PDA/TWF0aC5jZWlsKHQpfHwwOk1hdGguZmxvb3IodCl9LHA6ZnVuY3Rpb24odCl7cmV0dXJue006Yyx5OmgsdzpvLGQ6YSxEOmQsaDp1LG06cyxzOmksbXM6cixROmZ9W3RdfHxTdHJpbmcodHx8XCJcIikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9zJC8sXCJcIil9LHU6ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXR9fSxnPVwiZW5cIixEPXt9O0RbZ109TTt2YXIgcD1cIiRpc0RheWpzT2JqZWN0XCIsUz1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIF98fCEoIXR8fCF0W3BdKX0sdz1mdW5jdGlvbiB0KGUsbixyKXt2YXIgaTtpZighZSlyZXR1cm4gZztpZihcInN0cmluZ1wiPT10eXBlb2YgZSl7dmFyIHM9ZS50b0xvd2VyQ2FzZSgpO0Rbc10mJihpPXMpLG4mJihEW3NdPW4saT1zKTt2YXIgdT1lLnNwbGl0KFwiLVwiKTtpZighaSYmdS5sZW5ndGg+MSlyZXR1cm4gdCh1WzBdKX1lbHNle3ZhciBhPWUubmFtZTtEW2FdPWUsaT1hfXJldHVybiFyJiZpJiYoZz1pKSxpfHwhciYmZ30sTz1mdW5jdGlvbih0LGUpe2lmKFModCkpcmV0dXJuIHQuY2xvbmUoKTt2YXIgbj1cIm9iamVjdFwiPT10eXBlb2YgZT9lOnt9O3JldHVybiBuLmRhdGU9dCxuLmFyZ3M9YXJndW1lbnRzLG5ldyBfKG4pfSxiPXY7Yi5sPXcsYi5pPVMsYi53PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE8odCx7bG9jYWxlOmUuJEwsdXRjOmUuJHUseDplLiR4LCRvZmZzZXQ6ZS4kb2Zmc2V0fSl9O3ZhciBfPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gTSh0KXt0aGlzLiRMPXcodC5sb2NhbGUsbnVsbCwhMCksdGhpcy5wYXJzZSh0KSx0aGlzLiR4PXRoaXMuJHh8fHQueHx8e30sdGhpc1twXT0hMH12YXIgbT1NLnByb3RvdHlwZTtyZXR1cm4gbS5wYXJzZT1mdW5jdGlvbih0KXt0aGlzLiRkPWZ1bmN0aW9uKHQpe3ZhciBlPXQuZGF0ZSxuPXQudXRjO2lmKG51bGw9PT1lKXJldHVybiBuZXcgRGF0ZShOYU4pO2lmKGIudShlKSlyZXR1cm4gbmV3IERhdGU7aWYoZSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIG5ldyBEYXRlKGUpO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlJiYhL1okL2kudGVzdChlKSl7dmFyIHI9ZS5tYXRjaCgkKTtpZihyKXt2YXIgaT1yWzJdLTF8fDAscz0ocls3XXx8XCIwXCIpLnN1YnN0cmluZygwLDMpO3JldHVybiBuP25ldyBEYXRlKERhdGUuVVRDKHJbMV0saSxyWzNdfHwxLHJbNF18fDAscls1XXx8MCxyWzZdfHwwLHMpKTpuZXcgRGF0ZShyWzFdLGksclszXXx8MSxyWzRdfHwwLHJbNV18fDAscls2XXx8MCxzKX19cmV0dXJuIG5ldyBEYXRlKGUpfSh0KSx0aGlzLmluaXQoKX0sbS5pbml0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy4kZDt0aGlzLiR5PXQuZ2V0RnVsbFllYXIoKSx0aGlzLiRNPXQuZ2V0TW9udGgoKSx0aGlzLiREPXQuZ2V0RGF0ZSgpLHRoaXMuJFc9dC5nZXREYXkoKSx0aGlzLiRIPXQuZ2V0SG91cnMoKSx0aGlzLiRtPXQuZ2V0TWludXRlcygpLHRoaXMuJHM9dC5nZXRTZWNvbmRzKCksdGhpcy4kbXM9dC5nZXRNaWxsaXNlY29uZHMoKX0sbS4kdXRpbHM9ZnVuY3Rpb24oKXtyZXR1cm4gYn0sbS5pc1ZhbGlkPWZ1bmN0aW9uKCl7cmV0dXJuISh0aGlzLiRkLnRvU3RyaW5nKCk9PT1sKX0sbS5pc1NhbWU9ZnVuY3Rpb24odCxlKXt2YXIgbj1PKHQpO3JldHVybiB0aGlzLnN0YXJ0T2YoZSk8PW4mJm48PXRoaXMuZW5kT2YoZSl9LG0uaXNBZnRlcj1mdW5jdGlvbih0LGUpe3JldHVybiBPKHQpPHRoaXMuc3RhcnRPZihlKX0sbS5pc0JlZm9yZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmVuZE9mKGUpPE8odCl9LG0uJGc9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBiLnUodCk/dGhpc1tlXTp0aGlzLnNldChuLHQpfSxtLnVuaXg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcih0aGlzLnZhbHVlT2YoKS8xZTMpfSxtLnZhbHVlT2Y9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kZC5nZXRUaW1lKCl9LG0uc3RhcnRPZj1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMscj0hIWIudShlKXx8ZSxmPWIucCh0KSxsPWZ1bmN0aW9uKHQsZSl7dmFyIGk9Yi53KG4uJHU/RGF0ZS5VVEMobi4keSxlLHQpOm5ldyBEYXRlKG4uJHksZSx0KSxuKTtyZXR1cm4gcj9pOmkuZW5kT2YoYSl9LCQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gYi53KG4udG9EYXRlKClbdF0uYXBwbHkobi50b0RhdGUoXCJzXCIpLChyP1swLDAsMCwwXTpbMjMsNTksNTksOTk5XSkuc2xpY2UoZSkpLG4pfSx5PXRoaXMuJFcsTT10aGlzLiRNLG09dGhpcy4kRCx2PVwic2V0XCIrKHRoaXMuJHU/XCJVVENcIjpcIlwiKTtzd2l0Y2goZil7Y2FzZSBoOnJldHVybiByP2woMSwwKTpsKDMxLDExKTtjYXNlIGM6cmV0dXJuIHI/bCgxLE0pOmwoMCxNKzEpO2Nhc2Ugbzp2YXIgZz10aGlzLiRsb2NhbGUoKS53ZWVrU3RhcnR8fDAsRD0oeTxnP3krNzp5KS1nO3JldHVybiBsKHI/bS1EOm0rKDYtRCksTSk7Y2FzZSBhOmNhc2UgZDpyZXR1cm4gJCh2K1wiSG91cnNcIiwwKTtjYXNlIHU6cmV0dXJuICQoditcIk1pbnV0ZXNcIiwxKTtjYXNlIHM6cmV0dXJuICQoditcIlNlY29uZHNcIiwyKTtjYXNlIGk6cmV0dXJuICQoditcIk1pbGxpc2Vjb25kc1wiLDMpO2RlZmF1bHQ6cmV0dXJuIHRoaXMuY2xvbmUoKX19LG0uZW5kT2Y9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc3RhcnRPZih0LCExKX0sbS4kc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIG4sbz1iLnAodCksZj1cInNldFwiKyh0aGlzLiR1P1wiVVRDXCI6XCJcIiksbD0obj17fSxuW2FdPWYrXCJEYXRlXCIsbltkXT1mK1wiRGF0ZVwiLG5bY109ZitcIk1vbnRoXCIsbltoXT1mK1wiRnVsbFllYXJcIixuW3VdPWYrXCJIb3Vyc1wiLG5bc109ZitcIk1pbnV0ZXNcIixuW2ldPWYrXCJTZWNvbmRzXCIsbltyXT1mK1wiTWlsbGlzZWNvbmRzXCIsbilbb10sJD1vPT09YT90aGlzLiREKyhlLXRoaXMuJFcpOmU7aWYobz09PWN8fG89PT1oKXt2YXIgeT10aGlzLmNsb25lKCkuc2V0KGQsMSk7eS4kZFtsXSgkKSx5LmluaXQoKSx0aGlzLiRkPXkuc2V0KGQsTWF0aC5taW4odGhpcy4kRCx5LmRheXNJbk1vbnRoKCkpKS4kZH1lbHNlIGwmJnRoaXMuJGRbbF0oJCk7cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXN9LG0uc2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS4kc2V0KHQsZSl9LG0uZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzW2IucCh0KV0oKX0sbS5hZGQ9ZnVuY3Rpb24ocixmKXt2YXIgZCxsPXRoaXM7cj1OdW1iZXIocik7dmFyICQ9Yi5wKGYpLHk9ZnVuY3Rpb24odCl7dmFyIGU9TyhsKTtyZXR1cm4gYi53KGUuZGF0ZShlLmRhdGUoKStNYXRoLnJvdW5kKHQqcikpLGwpfTtpZigkPT09YylyZXR1cm4gdGhpcy5zZXQoYyx0aGlzLiRNK3IpO2lmKCQ9PT1oKXJldHVybiB0aGlzLnNldChoLHRoaXMuJHkrcik7aWYoJD09PWEpcmV0dXJuIHkoMSk7aWYoJD09PW8pcmV0dXJuIHkoNyk7dmFyIE09KGQ9e30sZFtzXT1lLGRbdV09bixkW2ldPXQsZClbJF18fDEsbT10aGlzLiRkLmdldFRpbWUoKStyKk07cmV0dXJuIGIudyhtLHRoaXMpfSxtLnN1YnRyYWN0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYWRkKC0xKnQsZSl9LG0uZm9ybWF0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLiRsb2NhbGUoKTtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG4uaW52YWxpZERhdGV8fGw7dmFyIHI9dHx8XCJZWVlZLU1NLUREVEhIOm1tOnNzWlwiLGk9Yi56KHRoaXMpLHM9dGhpcy4kSCx1PXRoaXMuJG0sYT10aGlzLiRNLG89bi53ZWVrZGF5cyxjPW4ubW9udGhzLGY9bi5tZXJpZGllbSxoPWZ1bmN0aW9uKHQsbixpLHMpe3JldHVybiB0JiYodFtuXXx8dChlLHIpKXx8aVtuXS5zbGljZSgwLHMpfSxkPWZ1bmN0aW9uKHQpe3JldHVybiBiLnMocyUxMnx8MTIsdCxcIjBcIil9LCQ9Znx8ZnVuY3Rpb24odCxlLG4pe3ZhciByPXQ8MTI/XCJBTVwiOlwiUE1cIjtyZXR1cm4gbj9yLnRvTG93ZXJDYXNlKCk6cn07cmV0dXJuIHIucmVwbGFjZSh5LChmdW5jdGlvbih0LHIpe3JldHVybiByfHxmdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZVwiWVlcIjpyZXR1cm4gU3RyaW5nKGUuJHkpLnNsaWNlKC0yKTtjYXNlXCJZWVlZXCI6cmV0dXJuIGIucyhlLiR5LDQsXCIwXCIpO2Nhc2VcIk1cIjpyZXR1cm4gYSsxO2Nhc2VcIk1NXCI6cmV0dXJuIGIucyhhKzEsMixcIjBcIik7Y2FzZVwiTU1NXCI6cmV0dXJuIGgobi5tb250aHNTaG9ydCxhLGMsMyk7Y2FzZVwiTU1NTVwiOnJldHVybiBoKGMsYSk7Y2FzZVwiRFwiOnJldHVybiBlLiREO2Nhc2VcIkREXCI6cmV0dXJuIGIucyhlLiRELDIsXCIwXCIpO2Nhc2VcImRcIjpyZXR1cm4gU3RyaW5nKGUuJFcpO2Nhc2VcImRkXCI6cmV0dXJuIGgobi53ZWVrZGF5c01pbixlLiRXLG8sMik7Y2FzZVwiZGRkXCI6cmV0dXJuIGgobi53ZWVrZGF5c1Nob3J0LGUuJFcsbywzKTtjYXNlXCJkZGRkXCI6cmV0dXJuIG9bZS4kV107Y2FzZVwiSFwiOnJldHVybiBTdHJpbmcocyk7Y2FzZVwiSEhcIjpyZXR1cm4gYi5zKHMsMixcIjBcIik7Y2FzZVwiaFwiOnJldHVybiBkKDEpO2Nhc2VcImhoXCI6cmV0dXJuIGQoMik7Y2FzZVwiYVwiOnJldHVybiAkKHMsdSwhMCk7Y2FzZVwiQVwiOnJldHVybiAkKHMsdSwhMSk7Y2FzZVwibVwiOnJldHVybiBTdHJpbmcodSk7Y2FzZVwibW1cIjpyZXR1cm4gYi5zKHUsMixcIjBcIik7Y2FzZVwic1wiOnJldHVybiBTdHJpbmcoZS4kcyk7Y2FzZVwic3NcIjpyZXR1cm4gYi5zKGUuJHMsMixcIjBcIik7Y2FzZVwiU1NTXCI6cmV0dXJuIGIucyhlLiRtcywzLFwiMFwiKTtjYXNlXCJaXCI6cmV0dXJuIGl9cmV0dXJuIG51bGx9KHQpfHxpLnJlcGxhY2UoXCI6XCIsXCJcIil9KSl9LG0udXRjT2Zmc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIDE1Ki1NYXRoLnJvdW5kKHRoaXMuJGQuZ2V0VGltZXpvbmVPZmZzZXQoKS8xNSl9LG0uZGlmZj1mdW5jdGlvbihyLGQsbCl7dmFyICQseT10aGlzLE09Yi5wKGQpLG09TyhyKSx2PShtLnV0Y09mZnNldCgpLXRoaXMudXRjT2Zmc2V0KCkpKmUsZz10aGlzLW0sRD1mdW5jdGlvbigpe3JldHVybiBiLm0oeSxtKX07c3dpdGNoKE0pe2Nhc2UgaDokPUQoKS8xMjticmVhaztjYXNlIGM6JD1EKCk7YnJlYWs7Y2FzZSBmOiQ9RCgpLzM7YnJlYWs7Y2FzZSBvOiQ9KGctdikvNjA0OGU1O2JyZWFrO2Nhc2UgYTokPShnLXYpLzg2NGU1O2JyZWFrO2Nhc2UgdTokPWcvbjticmVhaztjYXNlIHM6JD1nL2U7YnJlYWs7Y2FzZSBpOiQ9Zy90O2JyZWFrO2RlZmF1bHQ6JD1nfXJldHVybiBsPyQ6Yi5hKCQpfSxtLmRheXNJbk1vbnRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW5kT2YoYykuJER9LG0uJGxvY2FsZT1mdW5jdGlvbigpe3JldHVybiBEW3RoaXMuJExdfSxtLmxvY2FsZT1mdW5jdGlvbih0LGUpe2lmKCF0KXJldHVybiB0aGlzLiRMO3ZhciBuPXRoaXMuY2xvbmUoKSxyPXcodCxlLCEwKTtyZXR1cm4gciYmKG4uJEw9ciksbn0sbS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBiLncodGhpcy4kZCx0aGlzKX0sbS50b0RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IERhdGUodGhpcy52YWx1ZU9mKCkpfSxtLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzVmFsaWQoKT90aGlzLnRvSVNPU3RyaW5nKCk6bnVsbH0sbS50b0lTT1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRkLnRvSVNPU3RyaW5nKCl9LG0udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kZC50b1VUQ1N0cmluZygpfSxNfSgpLGs9Xy5wcm90b3R5cGU7cmV0dXJuIE8ucHJvdG90eXBlPWssW1tcIiRtc1wiLHJdLFtcIiRzXCIsaV0sW1wiJG1cIixzXSxbXCIkSFwiLHVdLFtcIiRXXCIsYV0sW1wiJE1cIixjXSxbXCIkeVwiLGhdLFtcIiREXCIsZF1dLmZvckVhY2goKGZ1bmN0aW9uKHQpe2tbdFsxXV09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuJGcoZSx0WzBdLHRbMV0pfX0pKSxPLmV4dGVuZD1mdW5jdGlvbih0LGUpe3JldHVybiB0LiRpfHwodChlLF8sTyksdC4kaT0hMCksT30sTy5sb2NhbGU9dyxPLmlzRGF5anM9UyxPLnVuaXg9ZnVuY3Rpb24odCl7cmV0dXJuIE8oMWUzKnQpfSxPLmVuPURbZ10sTy5Mcz1ELE8ucD17fSxPfSkpOyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5ET00gPSBbXTtcbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcbiAgICBpZiAoaW5kZXhCeUlkZW50aWZpZXIgIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHVwZGF0ZXIgPSBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuYnlJbmRleCA9IGk7XG4gICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoaSwgMCwge1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiB1cGRhdGVyLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5mdW5jdGlvbiBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBhcGkgPSBvcHRpb25zLmRvbUFQSShvcHRpb25zKTtcbiAgYXBpLnVwZGF0ZShvYmopO1xuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiB1cGRhdGVyO1xufVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG4gICAgICBpZiAoc3R5bGVzSW5ET01bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRE9NW19pbmRleF0udXBkYXRlcigpO1xuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpO1xuXG4gICAgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIG9wdGlvbnMuc2V0QXR0cmlidXRlcyhlbGVtZW50LCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICBvcHRpb25zLmluc2VydChlbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0U3R5bGVFbGVtZW50OyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyhzdHlsZUVsZW1lbnQpIHtcbiAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSBcInVuZGVmaW5lZFwiID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuICBpZiAobm9uY2UpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gXCJcIjtcbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KG9iai5zdXBwb3J0cywgXCIpIHtcIik7XG4gIH1cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpO1xuICB9XG4gIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2Ygb2JqLmxheWVyICE9PSBcInVuZGVmaW5lZFwiO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwiQGxheWVyXCIuY29uY2F0KG9iai5sYXllci5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KG9iai5sYXllcikgOiBcIlwiLCBcIiB7XCIpO1xuICB9XG4gIGNzcyArPSBvYmouY3NzO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9XG5cbiAgLy8gRm9yIG9sZCBJRVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG4gIG9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG59XG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGVFbGVtZW50LnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBkb21BUEkob3B0aW9ucykge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKCkge30sXG4gICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XG4gICAgfTtcbiAgfVxuICB2YXIgc3R5bGVFbGVtZW50ID0gb3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUob2JqKSB7XG4gICAgICBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaik7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZG9tQVBJOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50KSB7XG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVUYWdUcmFuc2Zvcm07IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIl9fd2VicGFja19yZXF1aXJlX18ubmMgPSB1bmRlZmluZWQ7IiwiZXhwb3J0IGNvbnN0IFRSSVBGVVNJT05fQkFTRV9VUkwgPVxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IFwiaHR0cHM6Ly9kZXZlbG9wLmJvb2tpbmdzLnZhY2F5b3UuY29tL1wiIDogXCJodHRwOi8vbG9jYWxob3N0OjMwMDAvXCI7XG5leHBvcnQgY29uc3QgU0RLX1NDUklQVF9JRCA9IFwidHJpcGZ1c2lvbi1zZGtcIjtcbmV4cG9ydCBjb25zdCBXSURHRVRfSUQgPSBcInRyaXBmdXNpb24td2lkZ2V0XCI7XG5leHBvcnQgY29uc3QgV0lER0VUX0lOTkVSX1dSQVBQRVJfSUQgPSBcInRyaXBmdXNpb24td2lkZ2V0LWlubmVyLXdyYXBwZXJcIjtcbmV4cG9ydCBjb25zdCBXSURHRVRfSEVBREVSX0lEID0gXCJ0cmlwZnVzaW9uLXdpZGdldC1oZWFkZXJcIjtcbmV4cG9ydCBjb25zdCBXSURHRVRfQ0xPU0VfQlVUVE9OX0lEID0gXCJ0cmlwZnVzaW9uLXdpZGdldC1jbG9zZS1idXR0b25cIjtcbmV4cG9ydCBjb25zdCBXSURHRVRfSEVBREVSX1RJVExFX0lEID0gXCJ0cmlwZnVzaW9uLXdpZGdldC1oZWFkZXItdGl0bGVcIjtcbmV4cG9ydCBjb25zdCBXSURHRVRfV1JBUFBFUl9JRCA9IFwidHJpcGZ1c2lvbi13aWRnZXQtd3JhcHBlclwiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9JRlJBTUVfSUQgPSBcInRyaXBmdXNpb24td2lkZ2V0LWlmcmFtZVwiO1xuZXhwb3J0IGNvbnN0IFJFU1VNRV9QQU5FTF9JRCA9IFwidHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxcIjtcbmV4cG9ydCBjb25zdCBMT0FERVJfSUQgPSBcInRyaXBmdXNpb24tbG9hZGVyXCI7XG5leHBvcnQgY29uc3QgQk9PS0lOR19NT0RFID0ge1xuICAgIG5vcm1hbDogXCJub3JtYWxcIixcbiAgICBhcHBlbmQ6IFwiYXBwZW5kXCIsXG59IGFzIGNvbnN0O1xuZXhwb3J0IGNvbnN0IEFQUF9NRVNTQUdFX1RZUEUgPSB7XG4gICAgV0lER0VUX1JFQURZOiBcInRyaXBmdXNpb24td2lkZ2V0LXJlYWR5XCIsXG4gICAgQk9PS0lOR19DT01QTEVURUQ6IFwidHJpcGZ1c2lvbi1ib29raW5nLWNvbXBsZXRlZFwiLFxuICAgIFNFVF9DTElFTlRfVEhFTUU6IFwidHJpcGZ1c2lvbi1zZXQtY2xpZW50LXRoZW1lXCIsXG4gICAgU0VUX1BSSU1BUllfR1VFU1RfTkFNRTogXCJ0cmlwZnVzaW9uLXNldC1ndWVzdC1uYW1lXCIsXG4gICAgU0VUX0RBVEVTOiBcInRyaXBmdXNpb24tc2V0LWRhdGVzXCIsXG4gICAgU0VUX0NBUlQ6IFwidHJpcGZ1c2lvbi1zZXQtY2FydFwiLFxufSBhcyBjb25zdDtcbiIsImNvbnN0IGNyZWF0ZVN0b3JlSW1wbCA9IChjcmVhdGVTdGF0ZSkgPT4ge1xuICBsZXQgc3RhdGU7XG4gIGNvbnN0IGxpc3RlbmVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIGNvbnN0IHNldFN0YXRlID0gKHBhcnRpYWwsIHJlcGxhY2UpID0+IHtcbiAgICBjb25zdCBuZXh0U3RhdGUgPSB0eXBlb2YgcGFydGlhbCA9PT0gXCJmdW5jdGlvblwiID8gcGFydGlhbChzdGF0ZSkgOiBwYXJ0aWFsO1xuICAgIGlmICghT2JqZWN0LmlzKG5leHRTdGF0ZSwgc3RhdGUpKSB7XG4gICAgICBjb25zdCBwcmV2aW91c1N0YXRlID0gc3RhdGU7XG4gICAgICBzdGF0ZSA9IChyZXBsYWNlICE9IG51bGwgPyByZXBsYWNlIDogdHlwZW9mIG5leHRTdGF0ZSAhPT0gXCJvYmplY3RcIiB8fCBuZXh0U3RhdGUgPT09IG51bGwpID8gbmV4dFN0YXRlIDogT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIG5leHRTdGF0ZSk7XG4gICAgICBsaXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIpID0+IGxpc3RlbmVyKHN0YXRlLCBwcmV2aW91c1N0YXRlKSk7XG4gICAgfVxuICB9O1xuICBjb25zdCBnZXRTdGF0ZSA9ICgpID0+IHN0YXRlO1xuICBjb25zdCBnZXRJbml0aWFsU3RhdGUgPSAoKSA9PiBpbml0aWFsU3RhdGU7XG4gIGNvbnN0IHN1YnNjcmliZSA9IChsaXN0ZW5lcikgPT4ge1xuICAgIGxpc3RlbmVycy5hZGQobGlzdGVuZXIpO1xuICAgIHJldHVybiAoKSA9PiBsaXN0ZW5lcnMuZGVsZXRlKGxpc3RlbmVyKTtcbiAgfTtcbiAgY29uc3QgYXBpID0geyBzZXRTdGF0ZSwgZ2V0U3RhdGUsIGdldEluaXRpYWxTdGF0ZSwgc3Vic2NyaWJlIH07XG4gIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHN0YXRlID0gY3JlYXRlU3RhdGUoc2V0U3RhdGUsIGdldFN0YXRlLCBhcGkpO1xuICByZXR1cm4gYXBpO1xufTtcbmNvbnN0IGNyZWF0ZVN0b3JlID0gKGNyZWF0ZVN0YXRlKSA9PiBjcmVhdGVTdGF0ZSA/IGNyZWF0ZVN0b3JlSW1wbChjcmVhdGVTdGF0ZSkgOiBjcmVhdGVTdG9yZUltcGw7XG5cbmV4cG9ydCB7IGNyZWF0ZVN0b3JlIH07XG4iLCJpbXBvcnQgeyBjcmVhdGVTdG9yZSB9IGZyb20gXCJ6dXN0YW5kL3ZhbmlsbGFcIjtcblxudHlwZSBXaWRnZXRTdGF0ZSA9IHtcbiAgICBpc09wZW46IGJvb2xlYW47XG4gICAgaXNSZXN1bWVQYW5lbFZpc2libGU6IGJvb2xlYW47XG4gICAgaXNSZWFkeTogYm9vbGVhbjtcbiAgICBpc0Jvb2tpbmdDb21wbGV0ZWQ6IGJvb2xlYW47XG4gICAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gICAgcHJpbWFyeUd1ZXN0TmFtZT86IHN0cmluZztcbiAgICBjaGVja0luRGF0ZT86IHN0cmluZztcbiAgICBjaGVja091dERhdGU/OiBzdHJpbmc7XG4gICAgY2FydDogYW55O1xufTtcblxudHlwZSBBY3Rpb25zID0ge1xuICAgIHNob3dXaWRnZXQ6ICgpID0+IHZvaWQ7XG4gICAgaGlkZVdpZGdldDogKCkgPT4gdm9pZDtcbiAgICBzaG93UmVzdW1lUGFuZWw6ICgpID0+IHZvaWQ7XG4gICAgaGlkZVJlc3VtZVBhbmVsOiAoKSA9PiB2b2lkO1xuICAgIHNldElzUmVhZHk6IChpc1JlYWR5OiBib29sZWFuKSA9PiB2b2lkO1xuICAgIHNldElzQm9va2luZ0NvbXBsZXRlZDogKGlzQ29tcGxldGVkOiBib29sZWFuKSA9PiB2b2lkO1xuICAgIHNldEJhY2tncm91bmRDb2xvcjogKGNvbG9yPzogc3RyaW5nKSA9PiB2b2lkO1xuICAgIHNldFByaW1hcnlHdWVzdE5hbWU6IChuYW1lOiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgc2V0Q2FydDogKGNhcnQ/OiBhbnkpID0+IHZvaWQ7XG4gICAgc2V0RGF0ZXM6IChjaGVja0luRGF0ZTogc3RyaW5nLCBjaGVja091dERhdGU6IHN0cmluZykgPT4gdm9pZDtcbiAgICByZXNldDogKCkgPT4gdm9pZDtcbn07XG5cbmNvbnN0IGluaXRpYWxXaWRnZXRTdGF0ZTogV2lkZ2V0U3RhdGUgPSB7XG4gICAgaXNPcGVuOiBmYWxzZSxcbiAgICBpc1Jlc3VtZVBhbmVsVmlzaWJsZTogZmFsc2UsXG4gICAgaXNSZWFkeTogZmFsc2UsXG4gICAgaXNCb29raW5nQ29tcGxldGVkOiBmYWxzZSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IFwicmdiKDM1LCA3NiwgMTIxKVwiLFxuICAgIGNhcnQ6IHt9LFxufTtcblxuZXhwb3J0IGNvbnN0IHdpZGdldFN0b3JlID0gY3JlYXRlU3RvcmU8V2lkZ2V0U3RhdGUgJiBBY3Rpb25zPigpKChzZXQpID0+ICh7XG4gICAgLi4uaW5pdGlhbFdpZGdldFN0YXRlLFxuICAgIHNob3dXaWRnZXQ6ICgpID0+IHNldCh7IGlzT3BlbjogdHJ1ZSB9KSxcbiAgICBoaWRlV2lkZ2V0OiAoKSA9PiBzZXQoeyBpc09wZW46IGZhbHNlIH0pLFxuICAgIHNob3dSZXN1bWVQYW5lbDogKCkgPT4gc2V0KHsgaXNSZXN1bWVQYW5lbFZpc2libGU6IHRydWUgfSksXG4gICAgaGlkZVJlc3VtZVBhbmVsOiAoKSA9PiBzZXQoeyBpc1Jlc3VtZVBhbmVsVmlzaWJsZTogZmFsc2UgfSksXG4gICAgc2V0SXNSZWFkeTogKGlzUmVhZHkpID0+IHNldCh7IGlzUmVhZHkgfSksXG4gICAgc2V0SXNCb29raW5nQ29tcGxldGVkOiAoaXNCb29raW5nQ29tcGxldGVkKSA9PiBzZXQoeyBpc0Jvb2tpbmdDb21wbGV0ZWQgfSksXG4gICAgc2V0QmFja2dyb3VuZENvbG9yOiAoYmFja2dyb3VuZENvbG9yKSA9PlxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPyBzZXQoeyBiYWNrZ3JvdW5kQ29sb3IgfSkgOiBzZXQoeyBiYWNrZ3JvdW5kQ29sb3I6IGluaXRpYWxXaWRnZXRTdGF0ZS5iYWNrZ3JvdW5kQ29sb3IgfSksXG4gICAgc2V0UHJpbWFyeUd1ZXN0TmFtZTogKHByaW1hcnlHdWVzdE5hbWUpID0+IHNldCh7IHByaW1hcnlHdWVzdE5hbWUgfSksXG4gICAgc2V0Q2FydDogKGNhcnQpID0+IHNldCh7IGNhcnQgfSksXG4gICAgc2V0RGF0ZXM6IChjaGVja0luRGF0ZSwgY2hlY2tPdXREYXRlKSA9PiBzZXQoeyBjaGVja0luRGF0ZSwgY2hlY2tPdXREYXRlIH0pLFxuICAgIHJlc2V0OiAoKSA9PiBzZXQoaW5pdGlhbFdpZGdldFN0YXRlKSxcbn0pKTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7IFNES19TQ1JJUFRfSUQsIFRSSVBGVVNJT05fQkFTRV9VUkwgfSBmcm9tIFwiLi9jb25zdFwiO1xuXG5leHBvcnQgY29uc3Qgc3RyaW5naWZ5UHJpY2UgPSAoY2VudHM6IG51bWJlciB8IG51bGwpID0+XG4gICAgY2VudHMgIT09IG51bGwgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoXCJlbi1VU1wiLCB7IHN0eWxlOiBcImN1cnJlbmN5XCIsIGN1cnJlbmN5OiBcIlVTRFwiIH0pLmZvcm1hdChjZW50cyAvIDEwMCkgOiBcIlwiO1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdFBhcmFtcyA9ICgpID0+IHtcbiAgICBjb25zdCAkanNTZGsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChTREtfU0NSSVBUX0lEKSBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBqc1Nka1NyYyA9ICRqc1Nkay5nZXRBdHRyaWJ1dGUoXCJzcmNcIikgYXMgc3RyaW5nO1xuICAgIGNvbnN0IHVybFBhcmFtcyA9IGdldFBhcmFtc0Zyb21VcmwobmV3IFVSTFNlYXJjaFBhcmFtcyhqc1Nka1NyYy5zdWJzdHJpbmcoanNTZGtTcmMuaW5kZXhPZihcIj9cIikpKSk7XG5cbiAgICBjb25zdCBjbGllbnQgPSB1cmxQYXJhbXNbXCJjbGllbnRcIl0gPz8gbnVsbDtcbiAgICBjb25zdCBwcm9wZXJ0eUlkID0gdXJsUGFyYW1zW1wicHJvcGVydHlJZFwiXSA/ICt1cmxQYXJhbXNbXCJwcm9wZXJ0eUlkXCJdIDogbnVsbDtcblxuICAgIHJldHVybiB7IGNsaWVudCwgcHJvcGVydHlJZCB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhcmFtc0Zyb21VcmwodXJsU2VhcmNoUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXMpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBhdmFpbGFibGVTZWFyY2hQYXJhbXNNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgIHRyaXBmdXNpb246IFwidHJpcGZ1c2lvblwiLFxuICAgICAgICBjbGllbnQ6IFwiY2xpZW50XCIsXG4gICAgICAgIHByb3BlcnR5aWQ6IFwicHJvcGVydHlJZFwiLFxuICAgICAgICBtb2RlOiBcIm1vZGVcIixcbiAgICAgICAgb2ZmZXJpZDogXCJvZmZlcklkXCIsXG4gICAgICAgIGJvb2tpbmdpZDogXCJib29raW5nSWRcIixcbiAgICAgICAgY2hlY2tpbjogXCJjaGVja0luXCIsXG4gICAgICAgIGNoZWNrb3V0OiBcImNoZWNrT3V0XCIsXG4gICAgICAgIGFkdWx0czogXCJhZHVsdHNcIixcbiAgICAgICAgY2hpbGRyZW46IFwiY2hpbGRyZW5cIixcbiAgICB9O1xuICAgIHJldHVybiBBcnJheS5mcm9tKHVybFNlYXJjaFBhcmFtcy5lbnRyaWVzKCkpLnJlZHVjZShcbiAgICAgICAgKHByZXYsIFtzZWFyY2hQYXJhbUtleSwgc2VhcmNoUGFyYW1WYWx1ZV0pID0+ICh7XG4gICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgW2F2YWlsYWJsZVNlYXJjaFBhcmFtc01hcFtzZWFyY2hQYXJhbUtleS50b0xvd2VyQ2FzZSgpXV06IHNlYXJjaFBhcmFtVmFsdWUsXG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2dnZXIobWVzc2FnZTogc3RyaW5nLCB0eXBlOiBcImVycm9yXCIgfCBcImxvZ1wiID0gXCJlcnJvclwiKSB7XG4gICAgY29uc3QgdXJsID0gYCR7VFJJUEZVU0lPTl9CQVNFX1VSTH1hcGkvdmFjYXlvdS9sb2dgO1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIHBhZ2U6IHdpbmRvdy5sb2NhdGlvbi5ocmVmLFxuICAgIH07XG4gICAgY29uc3QgaGVhZGVycyA9IHtcbiAgICAgICAgXCJjb250ZW50LXR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgfTtcbiAgICByZXR1cm4gZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICB9KSxcbiAgICAgICAgaGVhZGVycyxcbiAgICB9KVxuICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBUcmlwZnVzaW9uOiBmYWlsZWQgdG8gbG9nIG1lc3NhZ2U6ICR7ZXJyb3J9YCk7XG4gICAgICAgIH0pO1xufVxuIiwiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHR5cGUgeyBHbG9iYWxTdGF0ZSB9IGZyb20gXCIuL3N0b3JlL2dsb2JhbC5zdG9yZVwiO1xuaW1wb3J0IHtcbiAgICBCT09LSU5HX01PREUsXG4gICAgTE9BREVSX0lELFxuICAgIFJFU1VNRV9QQU5FTF9JRCxcbiAgICBUUklQRlVTSU9OX0JBU0VfVVJMLFxuICAgIFdJREdFVF9DTE9TRV9CVVRUT05fSUQsXG4gICAgV0lER0VUX0hFQURFUl9JRCxcbiAgICBXSURHRVRfSEVBREVSX1RJVExFX0lELFxuICAgIFdJREdFVF9JRCxcbiAgICBXSURHRVRfSUZSQU1FX0lELFxuICAgIFdJREdFVF9JTk5FUl9XUkFQUEVSX0lELFxuICAgIFdJREdFVF9XUkFQUEVSX0lELFxufSBmcm9tIFwiLi9jb25zdFwiO1xuaW1wb3J0IHsgd2lkZ2V0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZS93aWRnZXQuc3RvcmVcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5TG9hZGluZ092ZXJsYXkoKSB7XG4gICAgY29uc3QgJHdpZGdldFdyYXBwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfV1JBUFBFUl9JRCk7XG5cbiAgICBpZiAoJHdpZGdldFdyYXBwZXIpIHtcbiAgICAgICAgY29uc3QgJGxvYWRpbmdEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICAkbG9hZGluZ0Rpdi5pZCA9IExPQURFUl9JRDtcbiAgICAgICAgJGxvYWRpbmdEaXYuaW5uZXJIVE1MID0gXCJMb2FkaW5nIDxzcGFuPlRyaXBGdXNpb248L3NwYW4+XCI7XG4gICAgICAgICR3aWRnZXRXcmFwcGVyLmFwcGVuZENoaWxkKCRsb2FkaW5nRGl2KTtcblxuICAgICAgICAkd2lkZ2V0V3JhcHBlci5zdHlsZS56SW5kZXggPSBgJHsxZTExfWA7XG4gICAgICAgICR3aWRnZXRXcmFwcGVyLnN0eWxlLmhlaWdodCA9IFwiMTAwJVwiO1xuICAgICAgICAkd2lkZ2V0V3JhcHBlci5zdHlsZS5iYWNrZ3JvdW5kID0gXCJyZ2JhKDAsIDAsIDAsIC43NClcIjtcbiAgICAgICAgbG9ja1BhZ2VTY3JvbGwoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlRG9tKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgc2hvd1dpZGdldCwgaGlkZVdpZGdldCwgc2hvd1Jlc3VtZVBhbmVsLCBoaWRlUmVzdW1lUGFuZWwgfSA9IHdpZGdldFN0b3JlLmdldFN0YXRlKCk7XG4gICAgICAgIGNvbnN0ICR3aWRnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpIGFzIEhUTUxEaXZFbGVtZW50LFxuICAgICAgICAgICAgJHdpZGdldFdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpIGFzIEhUTUxEaXZFbGVtZW50LFxuICAgICAgICAgICAgJHdpZGdldElubmVyV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikgYXMgSFRNTERpdkVsZW1lbnQsXG4gICAgICAgICAgICAkd2lkZ2V0SGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSBhcyBIVE1MRGl2RWxlbWVudCxcbiAgICAgICAgICAgICR3aWRnZXRIZWFkZXJUaXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpIGFzIEhUTUxTcGFuRWxlbWVudCxcbiAgICAgICAgICAgICR3aWRnZXRDbG9zZUJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIikgYXMgSFRNTEJ1dHRvbkVsZW1lbnQsXG4gICAgICAgICAgICAkcmVzdW1lUGFuZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpIGFzIEhUTUxEaXZFbGVtZW50O1xuXG4gICAgICAgICRyZXN1bWVQYW5lbC5pZCA9IFJFU1VNRV9QQU5FTF9JRDtcblxuICAgICAgICAkcmVzdW1lUGFuZWw/LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICBzaG93V2lkZ2V0KCk7XG4gICAgICAgICAgICBoaWRlUmVzdW1lUGFuZWwoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQ29uZmlndXJlIHdpZGdldCBhbmQgd3JhcHBlclxuICAgICAgICAkd2lkZ2V0LmlkID0gV0lER0VUX0lEO1xuICAgICAgICAkd2lkZ2V0LnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgICAgJHdpZGdldFdyYXBwZXIuaWQgPSBXSURHRVRfV1JBUFBFUl9JRDtcbiAgICAgICAgJHdpZGdldC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBpZiAodGhpcyA9PT0gZXZlbnQudGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgaGlkZVdpZGdldCgpO1xuICAgICAgICAgICAgICAgIHNob3dSZXN1bWVQYW5lbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBDb25maWd1cmUgd2lkZ2V0IGlubmVyIHdyYXBwZXJcbiAgICAgICAgJHdpZGdldElubmVyV3JhcHBlci5pZCA9IFdJREdFVF9JTk5FUl9XUkFQUEVSX0lEO1xuICAgICAgICAkd2lkZ2V0SGVhZGVyLmlkID0gV0lER0VUX0hFQURFUl9JRDtcbiAgICAgICAgJHdpZGdldENsb3NlQnV0dG9uLmlkID0gV0lER0VUX0NMT1NFX0JVVFRPTl9JRDtcbiAgICAgICAgJHdpZGdldENsb3NlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICBoaWRlV2lkZ2V0KCk7XG4gICAgICAgICAgICBzaG93UmVzdW1lUGFuZWwoKTtcbiAgICAgICAgfSk7XG4gICAgICAgICR3aWRnZXRIZWFkZXJUaXRsZS5pZCA9IFdJREdFVF9IRUFERVJfVElUTEVfSUQ7XG4gICAgICAgICR3aWRnZXRIZWFkZXJUaXRsZS5pbm5lckhUTUwgPSBcIkJvb2tpbmdcIjtcblxuICAgICAgICAvLyBBcHBlbmQgd2lkZ2V0IHRvIHdyYXBwZXIgYW5kIHdyYXBwZXIgdG8gZG9jdW1lbnQgYm9keVxuICAgICAgICAkd2lkZ2V0V3JhcHBlci5hcHBlbmRDaGlsZCgkd2lkZ2V0KTtcbiAgICAgICAgJHdpZGdldC5hcHBlbmRDaGlsZCgkd2lkZ2V0SW5uZXJXcmFwcGVyKTtcbiAgICAgICAgJHdpZGdldElubmVyV3JhcHBlci5hcHBlbmRDaGlsZCgkd2lkZ2V0SGVhZGVyKTtcbiAgICAgICAgJHdpZGdldEhlYWRlci5hcHBlbmRDaGlsZCgkd2lkZ2V0SGVhZGVyVGl0bGUpO1xuICAgICAgICAkd2lkZ2V0SGVhZGVyLmFwcGVuZENoaWxkKCR3aWRnZXRDbG9zZUJ1dHRvbik7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoJHdpZGdldFdyYXBwZXIpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKCRyZXN1bWVQYW5lbCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyKGBXaWRnZXQ6IEVycm9yIHByZXBhcmluZyBET006ICR7ZXJyb3J9YCk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUcmlwZnVzaW9uOiBFcnJvciBwcmVwYXJpbmcgRE9NOiBcIiwgZXJyb3IpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclJlc3VtZVBhbmVsKHtcbiAgICBoZWFkZXJUZXh0LFxuICAgIHN1YmhlYWRlclRleHQsXG4gICAgZm9vdGVyVGV4dCxcbn06IHtcbiAgICBoZWFkZXJUZXh0OiBzdHJpbmc7XG4gICAgc3ViaGVhZGVyVGV4dD86IHN0cmluZztcbiAgICBmb290ZXJUZXh0Pzogc3RyaW5nO1xufSkge1xuICAgIGNvbnN0ICRyZXN1bWVQYW5lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFJFU1VNRV9QQU5FTF9JRCkgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAkcmVzdW1lUGFuZWwuaW5uZXJIVE1MID0gYFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj4ke2hlYWRlclRleHR9PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzdmcgdmVyc2lvbj1cIjEuMVwiIGlkPVwiTGF5ZXJfMVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB2aWV3Qm94PVwiMCAwIDMzMCAzMzBcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzIyMl9cIiBkPVwiTTI1MC42MDYsMTU0LjM4OWwtMTUwLTE0OS45OTZjLTUuODU3LTUuODU4LTE1LjM1NS01Ljg1OC0yMS4yMTMsMC4wMDFjLTUuODU3LDUuODU4LTUuODU3LDE1LjM1NSwwLjAwMSwyMS4yMTNsMTM5LjM5MywxMzkuMzlMNzkuMzkzLDMwNC4zOTRjLTUuODU3LDUuODU4LTUuODU3LDE1LjM1NSwwLjAwMSwyMS4yMTNDODIuMzIyLDMyOC41MzYsODYuMTYxLDMzMCw5MCwzMzBzNy42NzgtMS40NjQsMTAuNjA3LTQuMzk0bDE0OS45OTktMTUwLjAwNGMyLjgxNC0yLjgxMyw0LjM5NC02LjYyOCw0LjM5NC0xMC42MDZDMjU1LDE2MS4wMTgsMjUzLjQyLDE1Ny4yMDIsMjUwLjYwNiwxNTQuMzg5elwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgJHtzdWJoZWFkZXJUZXh0ICYmIGA8c3BhbiBjbGFzcz1cInRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19zdWJoZWFkZXJcIj4ke3N1YmhlYWRlclRleHR9PC9zcGFuPmB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICAke2Zvb3RlclRleHQgJiYgYDxzcGFuIGNsYXNzPVwidHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX2Zvb3RlclwiPiR7Zm9vdGVyVGV4dH08L3NwYW4+YH1cbiAgICBgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvd1Jlc3VtZVBhbmVsKCkge1xuICAgIGNvbnN0ICRyZXN1bWVQYW5lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFJFU1VNRV9QQU5FTF9JRCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgJHJlc3VtZVBhbmVsLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIFwidHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwtLXNsaWRlLWluXCIpO1xuICAgICRyZXN1bWVQYW5lbC5mb2N1cygpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGlkZVJlc3VtZVBhbmVsKCkge1xuICAgIGNvbnN0ICRyZXN1bWVQYW5lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFJFU1VNRV9QQU5FTF9JRCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgJHJlc3VtZVBhbmVsLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIFwidHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwtLXNsaWRlLW91dFwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5XaWRnZXQoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgJHdpZGdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9JRCkgYXMgSFRNTERpdkVsZW1lbnQsXG4gICAgICAgICAgICAkd2lkZ2V0V3JhcHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9XUkFQUEVSX0lEKSBhcyBIVE1MRGl2RWxlbWVudDtcblxuICAgICAgICBPYmplY3QuYXNzaWduKCR3aWRnZXRXcmFwcGVyLnN0eWxlLCB7XG4gICAgICAgICAgICB6SW5kZXg6IDEwMDAwMDAwMDAwMTEsXG4gICAgICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgICAgICAgICAgYmFja2dyb3VuZDogXCJyZ2JhKDAsIDAsIDAsIC41KVwiLFxuICAgICAgICB9KTtcblxuICAgICAgICBsb2NrUGFnZVNjcm9sbCgpO1xuICAgICAgICAkd2lkZ2V0LnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gICAgICAgICR3aWRnZXQuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgXCJzbGlkZS1pblwiKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0ICR3aWRnZXRJZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfSUZSQU1FX0lEKTtcbiAgICAgICAgICAgICR3aWRnZXRJZnJhbWU/LmZvY3VzKCk7XG4gICAgICAgIH0sIDI1MCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyKGBXaWRnZXQ6IEVycm9yIG9wZW5uaW5nIHdpZGdldDogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlRyaXBmdXNpb246IEVycm9yIG9wZW5uaW5nIHdpZGdldDogXCIsIGVycm9yKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9zZVdpZGdldCgpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCAkd2lkZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX0lEKSxcbiAgICAgICAgICAgICR3aWRnZXRXcmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX1dSQVBQRVJfSUQpO1xuXG4gICAgICAgIGlmICgkd2lkZ2V0ICYmICR3aWRnZXRXcmFwcGVyKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gXCJpbml0aWFsXCI7XG4gICAgICAgICAgICAkd2lkZ2V0LnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIFwic2xpZGUtb3V0XCIpO1xuICAgICAgICAgICAgJHdpZGdldFdyYXBwZXIuc3R5bGUuYmFja2dyb3VuZCA9IFwicmdiYSgwLCAwLCAwLCAwKVwiO1xuICAgICAgICAgICAgJHdpZGdldC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gICAgICAgICAgICAkd2lkZ2V0V3JhcHBlci5zdHlsZS56SW5kZXggPSBgJHstMWUxMX1gO1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyKGBXaWRnZXQ6IEVycm9yIGNsb3Npbmcgd2lkZ2V0OiAke2Vycm9yfWApO1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiVHJpcGZ1c2lvbjogRXJyb3IgY2xvc2luZyB3aWRnZXQ6IFwiLCBlcnJvcik7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SWZyYW1lKHsgY2xpZW50LCBwcm9wZXJ0eUlkLCBtb2RlLCBib29raW5nSWQsIC4uLnJlc3QgfTogR2xvYmFsU3RhdGUpIHtcbiAgICB0cnkge1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfSUZSQU1FX0lEKT8ucmVtb3ZlKCk7XG5cbiAgICAgICAgY29uc3QgJGlubmVyV3JhcHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9JTk5FUl9XUkFQUEVSX0lEKTtcbiAgICAgICAgaWYgKCRpbm5lcldyYXBwZXIpIHtcbiAgICAgICAgICAgIGNvbnN0ICR3aWRnZXRJZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaWZyYW1lXCIpO1xuICAgICAgICAgICAgbGV0IHVybCA9IGAke1RSSVBGVVNJT05fQkFTRV9VUkx9JHtjbGllbnR9LyR7cHJvcGVydHlJZH1gO1xuICAgICAgICAgICAgaWYgKG1vZGUgPT09IEJPT0tJTkdfTU9ERS5hcHBlbmQgJiYgYm9va2luZ0lkKSB7XG4gICAgICAgICAgICAgICAgdXJsICs9IGAvYm9va2luZy8ke2Jvb2tpbmdJZH0vYXBwZW5kYDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgYWRkaXRpb25hbFBhcmFtcyA9IE9iamVjdC5lbnRyaWVzKHJlc3QpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gISF2YWx1ZSlcbiAgICAgICAgICAgICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAke2tleX09JHt2YWx1ZX1gLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICAgICAgLmpvaW4oXCImXCIpO1xuICAgICAgICAgICAgaWYgKGFkZGl0aW9uYWxQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICB1cmwgKz0gYD8ke2FkZGl0aW9uYWxQYXJhbXN9YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJHdpZGdldElmcmFtZS5zZXRBdHRyaWJ1dGUoXCJzcmNcIiwgdXJsKTtcbiAgICAgICAgICAgICR3aWRnZXRJZnJhbWUuaWQgPSBXSURHRVRfSUZSQU1FX0lEO1xuICAgICAgICAgICAgJGlubmVyV3JhcHBlci5hcHBlbmRDaGlsZCgkd2lkZ2V0SWZyYW1lKTtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlcihgV2lkZ2V0OiBFcnJvciBpbmplY3RpbmcgaWZyYW1lOiAke2Vycm9yfWApO1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiVHJpcGZ1c2lvbjogRXJyb3IgaW5qZWN0aW5nIGlmcmFtZTogXCIsIGVycm9yKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NrUGFnZVNjcm9sbCgpIHtcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gXCJoaWRkZW5cIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFdpZGdldFRoZW1lKHsgYmFja2dyb3VuZENvbG9yIH06IHsgYmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfSkge1xuICAgIGNvbnN0ICRyZXN1bWVQYW5lbFdyYXBwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChSRVNVTUVfUEFORUxfSUQpIGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAkd2lkZ2V0SGVhZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX0hFQURFUl9JRCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgJHJlc3VtZVBhbmVsV3JhcHBlci5zdHlsZVtcImJhY2tncm91bmRDb2xvclwiXSA9IGJhY2tncm91bmRDb2xvcjtcbiAgICAkd2lkZ2V0SGVhZGVyLnN0eWxlW1wiYmFja2dyb3VuZENvbG9yXCJdID0gYmFja2dyb3VuZENvbG9yO1xufVxuIiwiaW1wb3J0IHR5cGUgeyBOdWxsYWJsZSB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgQk9PS0lOR19NT0RFIH0gZnJvbSBcIi4uL2NvbnN0XCI7XG5pbXBvcnQgeyBjcmVhdGVTdG9yZSB9IGZyb20gXCJ6dXN0YW5kL3ZhbmlsbGFcIjtcblxuZXhwb3J0IHR5cGUgR2xvYmFsU3RhdGUgPSB7XG4gICAgY2xpZW50OiBzdHJpbmc7XG4gICAgcHJvcGVydHlJZDogbnVtYmVyO1xuICAgIG1vZGU/OiBrZXlvZiB0eXBlb2YgQk9PS0lOR19NT0RFO1xuICAgIGJvb2tpbmdJZD86IG51bWJlciB8IG51bGw7XG4gICAgY2hlY2tJbj86IHN0cmluZztcbiAgICBjaGVja091dD86IHN0cmluZztcbiAgICBhZHVsdHM/OiBudW1iZXI7XG4gICAgY2hpbGRyZW4/OiBudW1iZXJbXTtcbiAgICBvZmZlcklkPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IGNvbnN0IGdsb2JhbFN0b3JlID0gY3JlYXRlU3RvcmU8R2xvYmFsU3RhdGU+KCkoKCkgPT4gKHsgY2xpZW50OiBcIlwiLCBwcm9wZXJ0eUlkOiAwLCBtb2RlOiBCT09LSU5HX01PREUubm9ybWFsIH0pKTtcblxuZXhwb3J0IGNvbnN0IHNldEdsb2JhbFN0YXRlID0gKG5ld1N0YXRlOiBQYXJ0aWFsPE51bGxhYmxlPEdsb2JhbFN0YXRlPj4pID0+IHtcbiAgICBpZiAoIW5ld1N0YXRlLmNsaWVudCB8fCAhbmV3U3RhdGUucHJvcGVydHlJZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDbGllbnQgYW5kIHByb3BlcnR5SWQgYXJlIHJlcXVpcmVkXCIpO1xuICAgIH1cbiAgICBnbG9iYWxTdG9yZS5zZXRTdGF0ZShuZXdTdGF0ZSBhcyBHbG9iYWxTdGF0ZSwgdHJ1ZSk7XG59O1xuIiwiY29uc3QgaXNJdGVyYWJsZSA9IChvYmopID0+IFN5bWJvbC5pdGVyYXRvciBpbiBvYmo7XG5jb25zdCBjb21wYXJlTWFwTGlrZSA9IChpdGVyYWJsZUEsIGl0ZXJhYmxlQikgPT4ge1xuICBjb25zdCBtYXBBID0gaXRlcmFibGVBIGluc3RhbmNlb2YgTWFwID8gaXRlcmFibGVBIDogbmV3IE1hcChpdGVyYWJsZUEpO1xuICBjb25zdCBtYXBCID0gaXRlcmFibGVCIGluc3RhbmNlb2YgTWFwID8gaXRlcmFibGVCIDogbmV3IE1hcChpdGVyYWJsZUIpO1xuICBpZiAobWFwQS5zaXplICE9PSBtYXBCLnNpemUpIHJldHVybiBmYWxzZTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgbWFwQSkge1xuICAgIGlmICghT2JqZWN0LmlzKHZhbHVlLCBtYXBCLmdldChrZXkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5mdW5jdGlvbiBzaGFsbG93KG9iakEsIG9iakIpIHtcbiAgaWYgKE9iamVjdC5pcyhvYmpBLCBvYmpCKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh0eXBlb2Ygb2JqQSAhPT0gXCJvYmplY3RcIiB8fCBvYmpBID09PSBudWxsIHx8IHR5cGVvZiBvYmpCICE9PSBcIm9iamVjdFwiIHx8IG9iakIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGlzSXRlcmFibGUob2JqQSkgJiYgaXNJdGVyYWJsZShvYmpCKSkge1xuICAgIGNvbnN0IGl0ZXJhdG9yQSA9IG9iakFbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICAgIGNvbnN0IGl0ZXJhdG9yQiA9IG9iakJbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICAgIGxldCBuZXh0QSA9IGl0ZXJhdG9yQS5uZXh0KCk7XG4gICAgbGV0IG5leHRCID0gaXRlcmF0b3JCLm5leHQoKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShuZXh0QS52YWx1ZSkgJiYgQXJyYXkuaXNBcnJheShuZXh0Qi52YWx1ZSkgJiYgbmV4dEEudmFsdWUubGVuZ3RoID09PSAyICYmIG5leHRCLnZhbHVlLmxlbmd0aCA9PT0gMikge1xuICAgICAgcmV0dXJuIGNvbXBhcmVNYXBMaWtlKFxuICAgICAgICBvYmpBLFxuICAgICAgICBvYmpCXG4gICAgICApO1xuICAgIH1cbiAgICB3aGlsZSAoIW5leHRBLmRvbmUgJiYgIW5leHRCLmRvbmUpIHtcbiAgICAgIGlmICghT2JqZWN0LmlzKG5leHRBLnZhbHVlLCBuZXh0Qi52YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgbmV4dEEgPSBpdGVyYXRvckEubmV4dCgpO1xuICAgICAgbmV4dEIgPSBpdGVyYXRvckIubmV4dCgpO1xuICAgIH1cbiAgICByZXR1cm4gISFuZXh0QS5kb25lICYmICEhbmV4dEIuZG9uZTtcbiAgfVxuICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKG9iakEpO1xuICBpZiAoa2V5c0EubGVuZ3RoICE9PSBPYmplY3Qua2V5cyhvYmpCKS5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgZm9yIChjb25zdCBrZXlBIG9mIGtleXNBKSB7XG4gICAgaWYgKCFPYmplY3QuaGFzT3duKG9iakIsIGtleUEpIHx8ICFPYmplY3QuaXMob2JqQVtrZXlBXSwgb2JqQltrZXlBXSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCB7IHNoYWxsb3cgfTtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZXMuY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5vcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3R5bGVzLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB0eXBlIHsgQXBwTWVzc2FnZSwgTnVsbGFibGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgQVBQX01FU1NBR0VfVFlQRSwgQk9PS0lOR19NT0RFLCBMT0FERVJfSUQgfSBmcm9tIFwiLi9jb25zdFwiO1xuaW1wb3J0IHtcbiAgICBjbG9zZVdpZGdldCxcbiAgICBkaXNwbGF5TG9hZGluZ092ZXJsYXksXG4gICAgaGlkZVJlc3VtZVBhbmVsLFxuICAgIGluamVjdElmcmFtZSxcbiAgICBvcGVuV2lkZ2V0LFxuICAgIHByZXBhcmVEb20sXG4gICAgcmVuZGVyUmVzdW1lUGFuZWwsXG4gICAgc2V0V2lkZ2V0VGhlbWUsXG4gICAgc2hvd1Jlc3VtZVBhbmVsLFxufSBmcm9tIFwiLi9kb21cIjtcbmltcG9ydCB7IEdsb2JhbFN0YXRlLCBnbG9iYWxTdG9yZSwgc2V0R2xvYmFsU3RhdGUgfSBmcm9tIFwiLi9zdG9yZS9nbG9iYWwuc3RvcmVcIjtcbmltcG9ydCB7IHdpZGdldFN0b3JlIH0gZnJvbSBcIi4vc3RvcmUvd2lkZ2V0LnN0b3JlXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0UGFyYW1zLCBnZXRQYXJhbXNGcm9tVXJsLCBsb2dnZXIsIHN0cmluZ2lmeVByaWNlIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCB7IHNoYWxsb3cgfSBmcm9tIFwienVzdGFuZC92YW5pbGxhL3NoYWxsb3dcIjtcbmltcG9ydCBcIi4vc3R5bGVzLmNzc1wiO1xuXG5nbG9iYWxTdG9yZS5zdWJzY3JpYmUoKG5ld1N0YXRlKSA9PiB7XG4gICAgaW5qZWN0SWZyYW1lKG5ld1N0YXRlKTtcbn0pO1xuXG53aWRnZXRTdG9yZS5zdWJzY3JpYmUoKG5ld1N0YXRlLCBvbGRTdGF0ZSkgPT4ge1xuICAgIGlmIChuZXdTdGF0ZS5pc1Jlc3VtZVBhbmVsVmlzaWJsZSkge1xuICAgICAgICBsZXQgaGVhZGVyVGV4dCA9IFwiQ29tcGxldGUgeW91ciBib29raW5nXCI7XG4gICAgICAgIGxldCBzdWJoZWFkZXJUZXh0ID0gXCJcIjtcbiAgICAgICAgY29uc3QgZm9vdGVyUGFydHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgICAgaWYgKG5ld1N0YXRlLmlzQm9va2luZ0NvbXBsZXRlZCkge1xuICAgICAgICAgICAgaGVhZGVyVGV4dCA9IFwiQm9va2luZyBjb21wbGV0ZWQhXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAobmV3U3RhdGUucHJpbWFyeUd1ZXN0TmFtZSkge1xuICAgICAgICAgICAgICAgIGhlYWRlclRleHQgKz0gYCwgJHtuZXdTdGF0ZS5wcmltYXJ5R3Vlc3ROYW1lfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV3U3RhdGUuY2hlY2tJbkRhdGUgJiYgbmV3U3RhdGUuY2hlY2tPdXREYXRlKSB7XG4gICAgICAgICAgICBmb290ZXJQYXJ0cy5wdXNoKFxuICAgICAgICAgICAgICAgIGAke2RheWpzKG5ld1N0YXRlLmNoZWNrSW5EYXRlKS5mb3JtYXQoXCJNTU0gRERcIil9IC0gJHtkYXlqcyhuZXdTdGF0ZS5jaGVja091dERhdGUpLmZvcm1hdChcIk1NTSBERFwiKX1gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld1N0YXRlLmNhcnQudG90YWwpIHtcbiAgICAgICAgICAgIGlmIChuZXdTdGF0ZS5jYXJ0Py5yb29tcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvb21Db3VudCA9IG5ld1N0YXRlLmNhcnQucm9vbXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGNvbnN0IGd1ZXN0Q291bnQgPSBuZXdTdGF0ZS5jYXJ0LnJvb21zLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgKGFjYzogbnVtYmVyLCByb29tOiBhbnkpID0+IGFjYyArIHJvb20ucGFzc2VuZ2Vycy5hZHVsdHMgKyByb29tLnBhc3NlbmdlcnMuY2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBzdWJoZWFkZXJUZXh0ID0gYCR7cm9vbUNvdW50fSByb29tJHtyb29tQ291bnQgPiAxID8gXCJzXCIgOiBcIlwifSBmb3IgYDtcbiAgICAgICAgICAgICAgICBmb290ZXJQYXJ0cy5wdXNoKGAke2d1ZXN0Q291bnR9IGd1ZXN0JHtndWVzdENvdW50ID4gMSA/IFwic1wiIDogXCJcIn1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN1YmhlYWRlclRleHQgKz0gc3RyaW5naWZ5UHJpY2UobmV3U3RhdGUuY2FydC50b3RhbCk7XG4gICAgICAgIH1cblxuICAgICAgICByZW5kZXJSZXN1bWVQYW5lbCh7IGhlYWRlclRleHQsIHN1YmhlYWRlclRleHQsIGZvb3RlclRleHQ6IGZvb3RlclBhcnRzLmpvaW4oXCIsIFwiKSB9KTtcbiAgICB9XG5cbiAgICBpZiAobmV3U3RhdGUuYmFja2dyb3VuZENvbG9yICE9PSBvbGRTdGF0ZS5iYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICAgICAgc2V0V2lkZ2V0VGhlbWUoeyBiYWNrZ3JvdW5kQ29sb3I6IG5ld1N0YXRlLmJhY2tncm91bmRDb2xvciB9KTtcbiAgICB9XG5cbiAgICBpZiAobmV3U3RhdGUuaXNSZWFkeSkge1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChMT0FERVJfSUQpPy5yZW1vdmUoKTtcbiAgICAgICAgbmV3U3RhdGUuaXNPcGVuID8gb3BlbldpZGdldCgpIDogY2xvc2VXaWRnZXQoKTtcbiAgICAgICAgbmV3U3RhdGUuaXNSZXN1bWVQYW5lbFZpc2libGUgPyBzaG93UmVzdW1lUGFuZWwoKSA6IGhpZGVSZXN1bWVQYW5lbCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGRpc3BsYXlMb2FkaW5nT3ZlcmxheSgpO1xuICAgIH1cbn0pO1xuXG5mdW5jdGlvbiBhZGRMaW5rRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgZnVuY3Rpb24gaGFuZGxlTGlua0NsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XG5cbiAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgZXZlbnQgdGFyZ2V0IGhhcyBhIHZhbGlkIGhyZWZcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHRhcmdldC5wYXJlbnROb2RlIGFzIEhUTUxBbmNob3JFbGVtZW50O1xuICAgICAgICAgICAgaWYgKHRhcmdldC50YWdOYW1lICE9PSBcIkFcIiAmJiBwYXJlbnQ/LnRhZ05hbWUgPT09IFwiQVwiKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LmhyZWYgPSBwYXJlbnQ/LmhyZWY7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGxpbmtIcmVmID0gdGFyZ2V0LmhyZWYgfHwgXCJcIjtcbiAgICAgICAgICAgIGlmICghbGlua0hyZWYuaW5jbHVkZXMoXCI/XCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSBnZXRQYXJhbXNGcm9tVXJsKG5ldyBVUkxTZWFyY2hQYXJhbXMobGlua0hyZWYuc3Vic3RyaW5nKGxpbmtIcmVmLmluZGV4T2YoXCI/XCIpKSkpO1xuXG4gICAgICAgICAgICBpZiAodXJsUGFyYW1zLnRyaXBmdXNpb24gPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGNsaWVudCwgcHJvcGVydHlJZCB9ID0gZ2V0RGVmYXVsdFBhcmFtcygpO1xuICAgICAgICAgICAgICAgIGJvb2soe1xuICAgICAgICAgICAgICAgICAgICBjbGllbnQ6IHVybFBhcmFtcy5jbGllbnQgPz8gY2xpZW50LFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eUlkOiB1cmxQYXJhbXMucHJvcGVydHlJZCA/ICt1cmxQYXJhbXMucHJvcGVydHlJZCA6IHByb3BlcnR5SWQsXG4gICAgICAgICAgICAgICAgICAgIG1vZGU6IHVybFBhcmFtcy5tb2RlID09PSBCT09LSU5HX01PREUuYXBwZW5kID8gQk9PS0lOR19NT0RFLmFwcGVuZCA6IEJPT0tJTkdfTU9ERS5ub3JtYWwsXG4gICAgICAgICAgICAgICAgICAgIGJvb2tpbmdJZDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybFBhcmFtcz8uYm9va2luZ0lkICYmIHVybFBhcmFtcz8ubW9kZSA9PT0gQk9PS0lOR19NT0RFLmFwcGVuZCA/ICt1cmxQYXJhbXMuYm9va2luZ0lkIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJJZDogdXJsUGFyYW1zLm9mZmVySWQgPyArdXJsUGFyYW1zLm9mZmVySWQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrSW46IHVybFBhcmFtcy5jaGVja0luLFxuICAgICAgICAgICAgICAgICAgICBjaGVja091dDogdXJsUGFyYW1zLmNoZWNrT3V0LFxuICAgICAgICAgICAgICAgICAgICBhZHVsdHM6IHVybFBhcmFtcy5hZHVsdHMgPyArdXJsUGFyYW1zLmFkdWx0cyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IHVybFBhcmFtcy5jaGlsZHJlbiA/IHVybFBhcmFtcy5jaGlsZHJlbi5zcGxpdChcIixcIikubWFwKChhZ2UpID0+ICthZ2UpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgbG9nZ2VyKGBXaWRnZXQ6IEVycm9yIGluIGxpbmsgY2xpY2sgaGFuZGxlcjogJHtlcnJvcn1gKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUcmlwZnVzaW9uOiBFcnJvciBpbiBsaW5rIGNsaWNrIGhhbmRsZXI6IFwiLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiYVwiKS5mb3JFYWNoKChsaW5rRWxlbWVudCkgPT4ge1xuICAgICAgICBsaW5rRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlTGlua0NsaWNrKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gYWRkUGFnZUxvYWRMaXN0ZW5lcigpIHtcbiAgICBmdW5jdGlvbiBvbkxvYWRIYW5kbGVyKCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHVybFBhcmFtcyA9IGdldFBhcmFtc0Zyb21VcmwobmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKSk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdXJsUGFyYW1zLnRyaXBmdXNpb24gPT09IFwidHJ1ZVwiICYmXG4gICAgICAgICAgICAgICAgKGdsb2JhbFN0b3JlLmdldFN0YXRlKCkuY2xpZW50IHx8IHVybFBhcmFtcy5jbGllbnQpICYmXG4gICAgICAgICAgICAgICAgKGdsb2JhbFN0b3JlLmdldFN0YXRlKCkucHJvcGVydHlJZCB8fCB1cmxQYXJhbXMucHJvcGVydHlJZClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGJvb2soe1xuICAgICAgICAgICAgICAgICAgICBjbGllbnQ6IHVybFBhcmFtcy5jbGllbnQgPz8gZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKS5jbGllbnQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5SWQ6IHVybFBhcmFtcy5wcm9wZXJ0eUlkID8gK3VybFBhcmFtcy5wcm9wZXJ0eUlkIDogZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKS5wcm9wZXJ0eUlkLFxuICAgICAgICAgICAgICAgICAgICBtb2RlOiB1cmxQYXJhbXMubW9kZSA9PT0gQk9PS0lOR19NT0RFLmFwcGVuZCA/IEJPT0tJTkdfTU9ERS5hcHBlbmQgOiBCT09LSU5HX01PREUubm9ybWFsLFxuICAgICAgICAgICAgICAgICAgICBib29raW5nSWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmxQYXJhbXM/LmJvb2tpbmdJZCAmJiB1cmxQYXJhbXM/Lm1vZGUgPT09IEJPT0tJTkdfTU9ERS5hcHBlbmQgPyArdXJsUGFyYW1zLmJvb2tpbmdJZCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIG9mZmVySWQ6IHVybFBhcmFtcy5vZmZlcklkID8gK3VybFBhcmFtcy5vZmZlcklkIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBjaGVja0luOiB1cmxQYXJhbXMuY2hlY2tJbixcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tPdXQ6IHVybFBhcmFtcy5jaGVja091dCxcbiAgICAgICAgICAgICAgICAgICAgYWR1bHRzOiB1cmxQYXJhbXMuYWR1bHRzID8gK3VybFBhcmFtcy5hZHVsdHMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiB1cmxQYXJhbXMuY2hpbGRyZW4gPyB1cmxQYXJhbXMuY2hpbGRyZW4uc3BsaXQoXCIsXCIpLm1hcCgoYWdlKSA9PiArYWdlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgNTAwKTtcbiAgICB9XG5cbiAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gXCJjb21wbGV0ZVwiKSB7XG4gICAgICAgIG9uTG9hZEhhbmRsZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwgb25Mb2FkSGFuZGxlcik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBib29rKHByb3BzPzogUGFydGlhbDxOdWxsYWJsZTxHbG9iYWxTdGF0ZT4+KSB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBzZXRJc1JlYWR5LCBoaWRlUmVzdW1lUGFuZWw6IGhpZGVSZXN1bWVCdXR0b24gfSA9IHdpZGdldFN0b3JlLmdldFN0YXRlKCk7XG4gICAgICAgIGhpZGVSZXN1bWVCdXR0b24oKTtcblxuICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHByb3BzID8/IGdldERlZmF1bHRQYXJhbXMoKTtcbiAgICAgICAgaWYgKCFzaGFsbG93KGdsb2JhbFN0b3JlLmdldFN0YXRlKCksIG5ld1N0YXRlKSkge1xuICAgICAgICAgICAgc2V0SXNSZWFkeShmYWxzZSk7XG4gICAgICAgICAgICBzZXRHbG9iYWxTdGF0ZShuZXdTdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgd2lkZ2V0U3RvcmUuZ2V0U3RhdGUoKS5zaG93V2lkZ2V0KCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyKGBXaWRnZXQ6IGZhaWxlZCB0byBib29rOiAke2Vycm9yfWApO1xuICAgICAgICBjb25zb2xlLmVycm9yKGBUcmlwZnVzaW9uOiBmYWlsZWQgdG8gYm9vazogJHtlcnJvcn1gKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGluaXRUcmlwZnVzaW9uU2RrKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgY2xpZW50LCBwcm9wZXJ0eUlkIH0gPSBnZXREZWZhdWx0UGFyYW1zKCk7XG5cbiAgICAgICAgY29uc3QgY2hlY2tJZkRvY3VtZW50TG9hZGVkSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gXCJjb21wbGV0ZVwiKSB7XG4gICAgICAgICAgICAgICAgcHJlcGFyZURvbSgpO1xuICAgICAgICAgICAgICAgIHNldEdsb2JhbFN0YXRlKHsgY2xpZW50LCBwcm9wZXJ0eUlkIH0pO1xuICAgICAgICAgICAgICAgIGFkZExpbmtFdmVudExpc3RlbmVycygpO1xuXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lmRG9jdW1lbnRMb2FkZWRJbnRlcnZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMCk7XG4gICAgICAgIGFkZFBhZ2VMb2FkTGlzdGVuZXIoKTtcblxuICAgICAgICBPYmplY3QuYXNzaWduKHdpbmRvdywgeyBib29rLCBjbG9zZVdpZGdldCB9KTtcblxuICAgICAgICB3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2U6IEFwcE1lc3NhZ2UgPSBlLmRhdGE7XG4gICAgICAgICAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgQVBQX01FU1NBR0VfVFlQRS5XSURHRVRfUkVBRFk6IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0U3RvcmUuZ2V0U3RhdGUoKS5zZXRJc1JlYWR5KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBBUFBfTUVTU0FHRV9UWVBFLkJPT0tJTkdfQ09NUExFVEVEOiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZGdldFN0b3JlLmdldFN0YXRlKCkuc2V0SXNCb29raW5nQ29tcGxldGVkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBBUFBfTUVTU0FHRV9UWVBFLlNFVF9DTElFTlRfVEhFTUU6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZURhdGEgPSBtZXNzYWdlLmRhdGEgYXMgeyBwcmltYXJ5Pzogc3RyaW5nIH07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsaWVudFRoZW1lID0gbWVzc2FnZURhdGEucHJpbWFyeTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNsaWVudFRoZW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXRTdG9yZS5nZXRTdGF0ZSgpLnNldEJhY2tncm91bmRDb2xvcihjbGllbnRUaGVtZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQVBQX01FU1NBR0VfVFlQRS5TRVRfUFJJTUFSWV9HVUVTVF9OQU1FOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5kYXRhIGFzIHsgbmFtZTogc3RyaW5nIH07XG4gICAgICAgICAgICAgICAgICAgIHdpZGdldFN0b3JlLmdldFN0YXRlKCkuc2V0UHJpbWFyeUd1ZXN0TmFtZShtZXNzYWdlRGF0YS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQVBQX01FU1NBR0VfVFlQRS5TRVRfREFURVM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZURhdGEgPSBtZXNzYWdlLmRhdGEgYXMgeyBjaGVja0luPzogc3RyaW5nOyBjaGVja091dD86IHN0cmluZyB9O1xuICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZURhdGEuY2hlY2tJbiAmJiBtZXNzYWdlRGF0YS5jaGVja091dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0U3RvcmUuZ2V0U3RhdGUoKS5zZXREYXRlcyhtZXNzYWdlRGF0YS5jaGVja0luLCBtZXNzYWdlRGF0YS5jaGVja091dCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQVBQX01FU1NBR0VfVFlQRS5TRVRfQ0FSVDoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlRGF0YSA9IG1lc3NhZ2UuZGF0YSBhcyB7IGNhcnQ6IGFueSB9O1xuICAgICAgICAgICAgICAgICAgICB3aWRnZXRTdG9yZS5nZXRTdGF0ZSgpLnNldENhcnQobWVzc2FnZURhdGEuY2FydCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlcihgV2lkZ2V0OiBmYWlsZWQgdG8gaW5pdCBUcmlwZnVzaW9uIEpTIFNESzogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihgVHJpcGZ1c2lvbjogZmFpbGVkIHRvIGluaXQgU0RLOiAke2Vycm9yfWApO1xuICAgIH1cbn1cblxuaW5pdFRyaXBmdXNpb25TZGsoKTtcbiJdLCJuYW1lcyI6WyJfX19DU1NfTE9BREVSX0VYUE9SVF9fXyIsInB1c2giLCJtb2R1bGUiLCJpZCIsImV4cG9ydHMiLCJjc3NXaXRoTWFwcGluZ1RvU3RyaW5nIiwibGlzdCIsInRvU3RyaW5nIiwidGhpcyIsIm1hcCIsIml0ZW0iLCJjb250ZW50IiwibmVlZExheWVyIiwiY29uY2F0IiwibGVuZ3RoIiwiam9pbiIsImkiLCJtb2R1bGVzIiwibWVkaWEiLCJkZWR1cGUiLCJzdXBwb3J0cyIsImxheWVyIiwidW5kZWZpbmVkIiwiYWxyZWFkeUltcG9ydGVkTW9kdWxlcyIsImsiLCJfayIsImNzc01hcHBpbmciLCJidG9hIiwiYmFzZTY0IiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJKU09OIiwic3RyaW5naWZ5IiwiZGF0YSIsInNvdXJjZU1hcHBpbmciLCJlIiwibiIsInIiLCJzIiwidSIsImEiLCJvIiwiYyIsImYiLCJoIiwiZCIsImwiLCIkIiwieSIsIk0iLCJuYW1lIiwid2Vla2RheXMiLCJzcGxpdCIsIm1vbnRocyIsIm9yZGluYWwiLCJ0IiwibSIsIlN0cmluZyIsIkFycmF5IiwidiIsInoiLCJ1dGNPZmZzZXQiLCJNYXRoIiwiYWJzIiwiZmxvb3IiLCJkYXRlIiwieWVhciIsIm1vbnRoIiwiY2xvbmUiLCJhZGQiLCJjZWlsIiwicCIsInciLCJEIiwibXMiLCJRIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwiZyIsIlMiLCJfIiwiTyIsImFyZ3MiLCJhcmd1bWVudHMiLCJiIiwibG9jYWxlIiwiJEwiLCJ1dGMiLCIkdSIsIngiLCIkeCIsIiRvZmZzZXQiLCJwYXJzZSIsInByb3RvdHlwZSIsIiRkIiwiRGF0ZSIsIk5hTiIsInRlc3QiLCJtYXRjaCIsInN1YnN0cmluZyIsIlVUQyIsImluaXQiLCIkeSIsImdldEZ1bGxZZWFyIiwiJE0iLCJnZXRNb250aCIsIiREIiwiZ2V0RGF0ZSIsIiRXIiwiZ2V0RGF5IiwiJEgiLCJnZXRIb3VycyIsIiRtIiwiZ2V0TWludXRlcyIsIiRzIiwiZ2V0U2Vjb25kcyIsIiRtcyIsImdldE1pbGxpc2Vjb25kcyIsIiR1dGlscyIsImlzVmFsaWQiLCJpc1NhbWUiLCJzdGFydE9mIiwiZW5kT2YiLCJpc0FmdGVyIiwiaXNCZWZvcmUiLCIkZyIsInNldCIsInVuaXgiLCJ2YWx1ZU9mIiwiZ2V0VGltZSIsInRvRGF0ZSIsImFwcGx5Iiwic2xpY2UiLCIkbG9jYWxlIiwid2Vla1N0YXJ0IiwiJHNldCIsIm1pbiIsImRheXNJbk1vbnRoIiwiZ2V0IiwiTnVtYmVyIiwicm91bmQiLCJzdWJ0cmFjdCIsImZvcm1hdCIsImludmFsaWREYXRlIiwibWVyaWRpZW0iLCJtb250aHNTaG9ydCIsIndlZWtkYXlzTWluIiwid2Vla2RheXNTaG9ydCIsImdldFRpbWV6b25lT2Zmc2V0IiwiZGlmZiIsInRvSlNPTiIsInRvSVNPU3RyaW5nIiwidG9VVENTdHJpbmciLCJmb3JFYWNoIiwiZXh0ZW5kIiwiJGkiLCJpc0RheWpzIiwiZW4iLCJMcyIsInN0eWxlc0luRE9NIiwiZ2V0SW5kZXhCeUlkZW50aWZpZXIiLCJpZGVudGlmaWVyIiwicmVzdWx0IiwibW9kdWxlc1RvRG9tIiwib3B0aW9ucyIsImlkQ291bnRNYXAiLCJpZGVudGlmaWVycyIsImJhc2UiLCJjb3VudCIsImluZGV4QnlJZGVudGlmaWVyIiwib2JqIiwiY3NzIiwic291cmNlTWFwIiwicmVmZXJlbmNlcyIsInVwZGF0ZXIiLCJhZGRFbGVtZW50U3R5bGUiLCJieUluZGV4Iiwic3BsaWNlIiwiYXBpIiwiZG9tQVBJIiwidXBkYXRlIiwibmV3T2JqIiwicmVtb3ZlIiwibGFzdElkZW50aWZpZXJzIiwibmV3TGlzdCIsImluZGV4IiwibmV3TGFzdElkZW50aWZpZXJzIiwiX2kiLCJfaW5kZXgiLCJtZW1vIiwiaW5zZXJ0Iiwic3R5bGUiLCJ0YXJnZXQiLCJzdHlsZVRhcmdldCIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsIndpbmRvdyIsIkhUTUxJRnJhbWVFbGVtZW50IiwiY29udGVudERvY3VtZW50IiwiaGVhZCIsImdldFRhcmdldCIsIkVycm9yIiwiYXBwZW5kQ2hpbGQiLCJlbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZXMiLCJhdHRyaWJ1dGVzIiwic3R5bGVFbGVtZW50Iiwibm9uY2UiLCJzZXRBdHRyaWJ1dGUiLCJpbnNlcnRTdHlsZUVsZW1lbnQiLCJzdHlsZVRhZ1RyYW5zZm9ybSIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInJlbW92ZVN0eWxlRWxlbWVudCIsInN0eWxlU2hlZXQiLCJjc3NUZXh0IiwiZmlyc3RDaGlsZCIsImNyZWF0ZVRleHROb2RlIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsImNhbGwiLCJnZXR0ZXIiLCJfX2VzTW9kdWxlIiwiZGVmaW5pdGlvbiIsImtleSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsInByb3AiLCJoYXNPd25Qcm9wZXJ0eSIsIm5jIiwiVFJJUEZVU0lPTl9CQVNFX1VSTCIsIldJREdFVF9JRCIsIldJREdFVF9JTk5FUl9XUkFQUEVSX0lEIiwiV0lER0VUX0hFQURFUl9JRCIsIldJREdFVF9XUkFQUEVSX0lEIiwiV0lER0VUX0lGUkFNRV9JRCIsIlJFU1VNRV9QQU5FTF9JRCIsIkxPQURFUl9JRCIsIkJPT0tJTkdfTU9ERSIsImNyZWF0ZVN0b3JlSW1wbCIsImNyZWF0ZVN0YXRlIiwic3RhdGUiLCJsaXN0ZW5lcnMiLCJTZXQiLCJzZXRTdGF0ZSIsInBhcnRpYWwiLCJuZXh0U3RhdGUiLCJpcyIsInByZXZpb3VzU3RhdGUiLCJhc3NpZ24iLCJsaXN0ZW5lciIsImdldFN0YXRlIiwiZ2V0SW5pdGlhbFN0YXRlIiwiaW5pdGlhbFN0YXRlIiwic3Vic2NyaWJlIiwiZGVsZXRlIiwiY3JlYXRlU3RvcmUiLCJpbml0aWFsV2lkZ2V0U3RhdGUiLCJpc09wZW4iLCJpc1Jlc3VtZVBhbmVsVmlzaWJsZSIsImlzUmVhZHkiLCJpc0Jvb2tpbmdDb21wbGV0ZWQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJjYXJ0Iiwid2lkZ2V0U3RvcmUiLCJzaG93V2lkZ2V0IiwiaGlkZVdpZGdldCIsInNob3dSZXN1bWVQYW5lbCIsImhpZGVSZXN1bWVQYW5lbCIsInNldElzUmVhZHkiLCJzZXRJc0Jvb2tpbmdDb21wbGV0ZWQiLCJzZXRCYWNrZ3JvdW5kQ29sb3IiLCJzZXRQcmltYXJ5R3Vlc3ROYW1lIiwicHJpbWFyeUd1ZXN0TmFtZSIsInNldENhcnQiLCJzZXREYXRlcyIsImNoZWNrSW5EYXRlIiwiY2hlY2tPdXREYXRlIiwicmVzZXQiLCJnZXREZWZhdWx0UGFyYW1zIiwianNTZGtTcmMiLCJnZXRFbGVtZW50QnlJZCIsImdldEF0dHJpYnV0ZSIsInVybFBhcmFtcyIsImdldFBhcmFtc0Zyb21VcmwiLCJVUkxTZWFyY2hQYXJhbXMiLCJpbmRleE9mIiwiY2xpZW50IiwicHJvcGVydHlJZCIsInVybFNlYXJjaFBhcmFtcyIsImF2YWlsYWJsZVNlYXJjaFBhcmFtc01hcCIsInRyaXBmdXNpb24iLCJwcm9wZXJ0eWlkIiwibW9kZSIsIm9mZmVyaWQiLCJib29raW5naWQiLCJjaGVja2luIiwiY2hlY2tvdXQiLCJhZHVsdHMiLCJjaGlsZHJlbiIsImZyb20iLCJlbnRyaWVzIiwicmVkdWNlIiwicHJldiIsInNlYXJjaFBhcmFtS2V5Iiwic2VhcmNoUGFyYW1WYWx1ZSIsImxvZ2dlciIsIm1lc3NhZ2UiLCJ0eXBlIiwidXJsIiwicGF5bG9hZCIsInBhZ2UiLCJsb2NhdGlvbiIsImhyZWYiLCJoZWFkZXJzIiwiZmV0Y2giLCJtZXRob2QiLCJib2R5IiwidGhlbiIsInJlc3BvbnNlIiwianNvbiIsImNhdGNoIiwiZXJyb3IiLCJjb25zb2xlIiwibG9nIiwiY2xvc2VXaWRnZXQiLCIkd2lkZ2V0IiwiJHdpZGdldFdyYXBwZXIiLCJvdmVyZmxvdyIsImJhY2tncm91bmQiLCJkaXNwbGF5IiwiekluZGV4IiwibG9ja1BhZ2VTY3JvbGwiLCJnbG9iYWxTdG9yZSIsInNldEdsb2JhbFN0YXRlIiwibmV3U3RhdGUiLCJpc0l0ZXJhYmxlIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJib29rIiwicHJvcHMiLCJoaWRlUmVzdW1lQnV0dG9uIiwib2JqQSIsIm9iakIiLCJpdGVyYXRvckEiLCJpdGVyYXRvckIiLCJuZXh0QSIsIm5leHQiLCJuZXh0QiIsImlzQXJyYXkiLCJ2YWx1ZSIsIml0ZXJhYmxlQSIsIml0ZXJhYmxlQiIsIm1hcEEiLCJNYXAiLCJtYXBCIiwic2l6ZSIsImNvbXBhcmVNYXBMaWtlIiwiZG9uZSIsImtleXNBIiwia2V5cyIsImtleUEiLCJoYXNPd24iLCJzaGFsbG93IiwibG9jYWxzIiwiYm9va2luZ0lkIiwicmVzdCIsIiRpbm5lcldyYXBwZXIiLCIkd2lkZ2V0SWZyYW1lIiwiYWRkaXRpb25hbFBhcmFtcyIsImZpbHRlciIsImluamVjdElmcmFtZSIsIm9sZFN0YXRlIiwiY2VudHMiLCIkcmVzdW1lUGFuZWwiLCJoZWFkZXJUZXh0Iiwic3ViaGVhZGVyVGV4dCIsImZvb3RlclBhcnRzIiwidG90YWwiLCJyb29tcyIsInJvb21Db3VudCIsImd1ZXN0Q291bnQiLCJhY2MiLCJyb29tIiwicGFzc2VuZ2VycyIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJjdXJyZW5jeSIsImZvb3RlclRleHQiLCJpbm5lckhUTUwiLCJyZW5kZXJSZXN1bWVQYW5lbCIsIiRyZXN1bWVQYW5lbFdyYXBwZXIiLCIkd2lkZ2V0SGVhZGVyIiwic2V0V2lkZ2V0VGhlbWUiLCJoZWlnaHQiLCJzZXRUaW1lb3V0IiwiZm9jdXMiLCJvcGVuV2lkZ2V0IiwiJGxvYWRpbmdEaXYiLCJkaXNwbGF5TG9hZGluZ092ZXJsYXkiLCJzZXRJbnRlcnZhbCIsInJlYWR5U3RhdGUiLCIkd2lkZ2V0SW5uZXJXcmFwcGVyIiwiJHdpZGdldEhlYWRlclRpdGxlIiwiJHdpZGdldENsb3NlQnV0dG9uIiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50IiwicHJlcGFyZURvbSIsImhhbmRsZUxpbmtDbGljayIsInRhZ05hbWUiLCJsaW5rSHJlZiIsImluY2x1ZGVzIiwicHJldmVudERlZmF1bHQiLCJvZmZlcklkIiwiY2hlY2tJbiIsImNoZWNrT3V0IiwiYWdlIiwicXVlcnlTZWxlY3RvckFsbCIsImxpbmtFbGVtZW50IiwiYWRkTGlua0V2ZW50TGlzdGVuZXJzIiwiY2xlYXJJbnRlcnZhbCIsIm9uTG9hZEhhbmRsZXIiLCJzZWFyY2giLCJhZGRQYWdlTG9hZExpc3RlbmVyIiwib25tZXNzYWdlIiwiY2xpZW50VGhlbWUiLCJtZXNzYWdlRGF0YSIsInByaW1hcnkiLCJpbml0VHJpcGZ1c2lvblNkayJdLCJzb3VyY2VSb290IjoiIn0=
|