pdf-ysk-vue3 2.2.4 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/pdf-ysk-vue3.es.js +179 -176
- package/package.json +1 -1
package/dist/pdf-ysk-vue3.es.js
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
const
|
|
1
|
+
import { defineComponent as il, ref as G, computed as Yl, useSlots as al, onBeforeMount as wl, onMounted as Sl, watch as C, onUnmounted as Dl, openBlock as T, createElementBlock as L, createElementVNode as o, normalizeStyle as J, toDisplayString as n, createCommentVNode as K, unref as bl, renderSlot as dl, nextTick as xl } from "vue";
|
|
2
|
+
const jl = {
|
|
3
3
|
class: "pdf-vue3-main",
|
|
4
4
|
style: { height: "100%", position: "relative", "min-height": "10px" }
|
|
5
|
-
},
|
|
5
|
+
}, Jl = {
|
|
6
6
|
key: 0,
|
|
7
7
|
style: { display: "flex", "justify-content": "center", "align-items": "center", height: "100%", color: "#666" }
|
|
8
|
-
},
|
|
8
|
+
}, Ul = {
|
|
9
9
|
key: 1,
|
|
10
10
|
class: "pdf-vue3-container",
|
|
11
11
|
style: { height: "100%" }
|
|
12
|
-
},
|
|
12
|
+
}, kl = {
|
|
13
13
|
key: 0,
|
|
14
14
|
style: { "text-align": "center", padding: "20px", color: "#666", "font-size": "14px" }
|
|
15
|
-
},
|
|
15
|
+
}, Fl = {
|
|
16
16
|
key: 2,
|
|
17
17
|
class: "pdf-vue3-progress",
|
|
18
18
|
style: { position: "absolute", left: "0", top: "0", width: "100%", "user-select": "none", "pointer-events": "none" }
|
|
19
|
-
},
|
|
19
|
+
}, Ol = {
|
|
20
20
|
key: 3,
|
|
21
21
|
class: "pdf-vue3-pageTooltip",
|
|
22
22
|
style: { position: "absolute", left: "12px", top: "12px", width: "calc(100% - 12px)", "user-select": "none", "pointer-events": "none" }
|
|
23
|
-
},
|
|
23
|
+
}, tl = {
|
|
24
24
|
key: 1,
|
|
25
25
|
style: { width: "50px", height: "50px", background: "rgba(0, 0, 0, 0.4)", color: "#ffffff", "font-size": "16px", "border-radius": "50%", display: "flex", "justify-content": "center", "align-items": "center" }
|
|
26
|
-
},
|
|
26
|
+
}, Cl = /* @__PURE__ */ o("svg", {
|
|
27
27
|
width: "24",
|
|
28
28
|
height: "24",
|
|
29
29
|
viewBox: "0 0 24 24",
|
|
30
30
|
fill: "none",
|
|
31
31
|
xmlns: "http://www.w3.org/2000/svg"
|
|
32
32
|
}, [
|
|
33
|
-
/* @__PURE__ */
|
|
33
|
+
/* @__PURE__ */ o("path", {
|
|
34
34
|
"fill-rule": "evenodd",
|
|
35
35
|
"clip-rule": "evenodd",
|
|
36
36
|
d: "M11.0001 22.2877H13.0001V7.80237L16.2428 11.045L17.657 9.63079L12.0001 3.97394L6.34326 9.63079L7.75748 11.045L11.0001 7.80236V22.2877ZM18 3H6V1H18V3Z",
|
|
37
37
|
fill: "currentColor"
|
|
38
38
|
})
|
|
39
|
-
], -1),
|
|
40
|
-
|
|
41
|
-
],
|
|
39
|
+
], -1), nl = [
|
|
40
|
+
Cl
|
|
41
|
+
], Ql = /* @__PURE__ */ il({
|
|
42
42
|
name: "pdf-ysk-vue3",
|
|
43
43
|
__name: "pdf-ysk-vue3",
|
|
44
44
|
props: {
|
|
@@ -64,11 +64,11 @@ const Dl = {
|
|
|
64
64
|
batchSize: { default: 10 }
|
|
65
65
|
},
|
|
66
66
|
emits: ["onProgress", "onComplete", "onScroll", "onPageChange", "onPdfInit"],
|
|
67
|
-
setup(
|
|
68
|
-
const b =
|
|
69
|
-
let
|
|
70
|
-
const
|
|
71
|
-
if (!
|
|
67
|
+
setup(Xl, { expose: Vl, emit: X }) {
|
|
68
|
+
const b = Xl;
|
|
69
|
+
let Q = null, E = null;
|
|
70
|
+
const U = G(1), cl = Yl(() => parseInt(String(b.rowGap))), g = al(), p = G([]), k = G(0), x = G(0), y = Yl(() => Math.min(100, k.value * 0.5 + x.value * 0.5)), i = G(null), Wl = () => {
|
|
71
|
+
if (!E)
|
|
72
72
|
throw console.error("PDF.js is not loaded yet"), new Error("PDF.js is not loaded yet");
|
|
73
73
|
const l = {
|
|
74
74
|
httpHeaders: b.httpHeaders,
|
|
@@ -96,149 +96,152 @@ const Dl = {
|
|
|
96
96
|
}
|
|
97
97
|
for (const Z in l)
|
|
98
98
|
l[Z] === void 0 && delete l[Z];
|
|
99
|
-
|
|
100
|
-
const d = Z
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
99
|
+
k.value = 0, x.value = 0, X("onProgress", y.value), i.value = E(l), i.value.onProgress = (Z) => {
|
|
100
|
+
const d = Number((Z == null ? void 0 : Z.total) || 0), c = Number((Z == null ? void 0 : Z.loaded) || 0);
|
|
101
|
+
if (d > 0) {
|
|
102
|
+
const W = c / d * 100;
|
|
103
|
+
k.value = W >= 100 ? 100 : W, X("onProgress", y.value);
|
|
104
|
+
}
|
|
105
|
+
}, i.value.promise.then(() => {
|
|
106
|
+
k.value = 100, X("onProgress", y.value), X("onComplete");
|
|
104
107
|
});
|
|
105
|
-
},
|
|
108
|
+
}, m = G(0), j = G(1), H = G(0), u = G([]), a = G(), h = G();
|
|
106
109
|
let w = null;
|
|
107
|
-
const
|
|
108
|
-
|
|
110
|
+
const I = G(!1), Gl = G(!1), Y = G(!1), V = G(0), P = () => {
|
|
111
|
+
p.value.forEach((l) => {
|
|
109
112
|
l && l.parentNode && l.parentNode.removeChild(l);
|
|
110
|
-
}),
|
|
111
|
-
},
|
|
113
|
+
}), p.value = [], u.value = [], V.value = 0;
|
|
114
|
+
}, ml = async (l, Z) => {
|
|
112
115
|
var c;
|
|
113
|
-
if (!w ||
|
|
116
|
+
if (!w || I.value)
|
|
114
117
|
return;
|
|
115
|
-
const d = ((c =
|
|
118
|
+
const d = ((c = h.value) == null ? void 0 : c.clientWidth) || 0;
|
|
116
119
|
if (!(d <= 0))
|
|
117
|
-
for (let
|
|
118
|
-
const M =
|
|
120
|
+
for (let W = l; W <= Z && W < m.value && !I.value; W++) {
|
|
121
|
+
const M = W;
|
|
119
122
|
try {
|
|
120
|
-
const
|
|
121
|
-
|
|
123
|
+
const z = await w.getPage(M + 1), t = z.getViewport({ scale: 1 }), ll = (d - 4) / t.width, S = z.getViewport({ scale: ll * U.value }), Rl = S.height / U.value, s = document.createElement("canvas"), pl = `pdf-canvas-b${Date.now()}-${Math.random().toString(36).slice(2)}-${M}`;
|
|
124
|
+
s.id = pl, s.style.cssText = `
|
|
122
125
|
display: block;
|
|
123
126
|
box-shadow: #a9a9a9 0px 1px 3px 0px;
|
|
124
127
|
margin-left: auto;
|
|
125
128
|
margin-right: auto;
|
|
126
129
|
width: calc(100% - 4px);
|
|
127
|
-
margin-bottom: ${
|
|
128
|
-
height: ${
|
|
129
|
-
`,
|
|
130
|
-
const
|
|
131
|
-
if (
|
|
130
|
+
margin-bottom: ${cl.value}px;
|
|
131
|
+
height: ${Rl}px;
|
|
132
|
+
`, s.width = S.width, s.height = S.height, h.value && h.value.appendChild(s), p.value[M] = s;
|
|
133
|
+
const Zl = s.getContext("2d");
|
|
134
|
+
if (!Zl)
|
|
132
135
|
throw new Error("Failed to get canvas context");
|
|
133
|
-
|
|
134
|
-
canvasContext:
|
|
136
|
+
Zl.clearRect(0, 0, s.width, s.height), await z.render({
|
|
137
|
+
canvasContext: Zl,
|
|
135
138
|
viewport: S
|
|
136
139
|
}).promise;
|
|
137
|
-
let
|
|
140
|
+
let Nl = 0;
|
|
138
141
|
for (let D = 0; D <= M; D++) {
|
|
139
|
-
const
|
|
140
|
-
|
|
142
|
+
const Ml = p.value[D];
|
|
143
|
+
Ml && (Nl += Ml.height / U.value + (D < M ? cl.value : 0));
|
|
141
144
|
}
|
|
142
|
-
if (
|
|
145
|
+
if (u.value[M] = Nl, V.value++, m.value > 0 && (x.value = Math.min(
|
|
143
146
|
100,
|
|
144
|
-
|
|
145
|
-
), b.page && M + 1 === Math.min(b.page,
|
|
146
|
-
const D = M > 0 ?
|
|
147
|
-
|
|
147
|
+
V.value / m.value * 100
|
|
148
|
+
), X("onProgress", y.value)), b.page && M + 1 === Math.min(b.page, m.value)) {
|
|
149
|
+
const D = M > 0 ? u.value[M - 1] + 2 : 0;
|
|
150
|
+
a.value && a.value.scrollTo(0, D);
|
|
148
151
|
}
|
|
149
|
-
} catch (
|
|
150
|
-
if (
|
|
152
|
+
} catch (z) {
|
|
153
|
+
if (z && z.name === "RenderingCancelledException") {
|
|
151
154
|
console.log(`Rendering cancelled for page ${M + 1}`);
|
|
152
155
|
break;
|
|
153
156
|
} else
|
|
154
|
-
console.error(`Error rendering PDF page ${M + 1}:`,
|
|
157
|
+
console.error(`Error rendering PDF page ${M + 1}:`, z);
|
|
155
158
|
}
|
|
156
159
|
}
|
|
157
|
-
},
|
|
158
|
-
if (Y.value && (
|
|
160
|
+
}, F = async () => {
|
|
161
|
+
if (Y.value && (I.value = !0, await new Promise((c) => setTimeout(c, 100))), !i.value || !i.value.promise) {
|
|
159
162
|
console.error("Loading task is not initialized");
|
|
160
163
|
return;
|
|
161
164
|
}
|
|
162
|
-
|
|
165
|
+
P(), x.value = 0, X("onProgress", y.value), Gl.value = !1, Y.value = !0, I.value = !1;
|
|
163
166
|
try {
|
|
164
167
|
if (!w) {
|
|
165
|
-
const c = await
|
|
166
|
-
w = c,
|
|
168
|
+
const c = await i.value.promise;
|
|
169
|
+
w = c, m.value = c.numPages, X("onPdfInit", c);
|
|
167
170
|
}
|
|
168
171
|
} catch (c) {
|
|
169
172
|
console.error("Error loading PDF:", c), Y.value = !1;
|
|
170
173
|
return;
|
|
171
174
|
}
|
|
172
|
-
if (!
|
|
175
|
+
if (!h.value) {
|
|
173
176
|
console.error("Container not found"), Y.value = !1;
|
|
174
177
|
return;
|
|
175
178
|
}
|
|
176
|
-
if (
|
|
179
|
+
if (h.value.clientWidth <= 0) {
|
|
177
180
|
console.error("Container width is 0"), Y.value = !1;
|
|
178
181
|
return;
|
|
179
182
|
}
|
|
180
|
-
const Z = b.batchSize || 10, d = Math.min(Z,
|
|
181
|
-
await
|
|
183
|
+
const Z = b.batchSize || 10, d = Math.min(Z, m.value) - 1;
|
|
184
|
+
await ml(0, d), Tl(), Gl.value = !0, Y.value = !1, V.value >= m.value && m.value > 0 && (x.value = 100, X("onProgress", y.value));
|
|
182
185
|
};
|
|
183
|
-
let
|
|
184
|
-
const
|
|
185
|
-
!
|
|
186
|
+
let N = null;
|
|
187
|
+
const Tl = () => {
|
|
188
|
+
!h.value || N || (N = new IntersectionObserver(
|
|
186
189
|
(l) => {
|
|
187
190
|
l.forEach((Z) => {
|
|
188
191
|
if (Z.isIntersecting && !Y.value) {
|
|
189
|
-
const
|
|
190
|
-
|
|
192
|
+
const W = Z.target.id.match(/pdf-canvas-b\d+-[^-]+-(\d+)/);
|
|
193
|
+
W && parseInt(W[1]) >= V.value - 5 && B();
|
|
191
194
|
}
|
|
192
195
|
});
|
|
193
196
|
},
|
|
194
197
|
{
|
|
195
|
-
root:
|
|
198
|
+
root: a.value,
|
|
196
199
|
rootMargin: "200px 0px",
|
|
197
200
|
// Load 200px before entering viewport
|
|
198
201
|
threshold: 0.1
|
|
199
202
|
}
|
|
200
|
-
),
|
|
201
|
-
l && (
|
|
203
|
+
), p.value.forEach((l) => {
|
|
204
|
+
l && (N == null || N.observe(l));
|
|
202
205
|
}));
|
|
203
|
-
},
|
|
204
|
-
if (Y.value ||
|
|
206
|
+
}, B = async () => {
|
|
207
|
+
if (Y.value || I.value || V.value >= m.value)
|
|
205
208
|
return;
|
|
206
209
|
Y.value = !0;
|
|
207
|
-
const l = b.batchSize || 10, Z =
|
|
208
|
-
if (await
|
|
209
|
-
for (let c = Z; c <= d && c <
|
|
210
|
-
const
|
|
211
|
-
|
|
210
|
+
const l = b.batchSize || 10, Z = V.value, d = Math.min(Z + l - 1, m.value - 1);
|
|
211
|
+
if (await ml(Z, d), N)
|
|
212
|
+
for (let c = Z; c <= d && c < p.value.length; c++) {
|
|
213
|
+
const W = p.value[c];
|
|
214
|
+
W && N.observe(W);
|
|
212
215
|
}
|
|
213
|
-
Y.value = !1,
|
|
216
|
+
Y.value = !1, V.value >= m.value && (N == null || N.disconnect(), N = null);
|
|
214
217
|
};
|
|
215
|
-
let
|
|
216
|
-
const
|
|
217
|
-
|
|
218
|
-
|
|
218
|
+
let v;
|
|
219
|
+
const Ll = (l) => {
|
|
220
|
+
A.value = !0, clearTimeout(v), v = setTimeout(() => {
|
|
221
|
+
A.value = !1;
|
|
219
222
|
}, 1e3);
|
|
220
223
|
const Z = l.target.scrollTop;
|
|
221
|
-
if (
|
|
222
|
-
for (let
|
|
223
|
-
if (
|
|
224
|
-
|
|
224
|
+
if (H.value = Z, X("onScroll", Z), u.value.length > 0) {
|
|
225
|
+
for (let W = 0; W < u.value.length; W++)
|
|
226
|
+
if (u.value[W] > Z) {
|
|
227
|
+
j.value !== W + 1 && (j.value = W + 1, X("onPageChange", W + 1));
|
|
225
228
|
break;
|
|
226
229
|
}
|
|
227
230
|
}
|
|
228
231
|
const d = l.target;
|
|
229
|
-
d.scrollTop + d.clientHeight >= d.scrollHeight - 500 && !Y.value &&
|
|
230
|
-
},
|
|
231
|
-
let
|
|
232
|
-
const
|
|
233
|
-
|
|
234
|
-
w && !Y.value && (
|
|
235
|
-
|
|
232
|
+
d.scrollTop + d.clientHeight >= d.scrollHeight - 500 && !Y.value && V.value < m.value && B();
|
|
233
|
+
}, e = G(0), A = G(!1);
|
|
234
|
+
let f;
|
|
235
|
+
const r = () => {
|
|
236
|
+
e.value = window.innerHeight, clearTimeout(f), f = setTimeout(async () => {
|
|
237
|
+
w && !Y.value && (I.value = !0, setTimeout(() => {
|
|
238
|
+
F();
|
|
236
239
|
}, 300));
|
|
237
240
|
}, 500);
|
|
238
|
-
},
|
|
241
|
+
}, yl = G(0), ul = G(0), hl = () => {
|
|
239
242
|
var l;
|
|
240
|
-
|
|
241
|
-
},
|
|
243
|
+
yl.value = window.innerWidth, ul.value = ((l = h.value) == null ? void 0 : l.offsetWidth) || 0;
|
|
244
|
+
}, O = G(!1), R = G(!1), q = G(!1), zl = async () => {
|
|
242
245
|
try {
|
|
243
246
|
console.log("Loading PDF.js...");
|
|
244
247
|
let l;
|
|
@@ -252,155 +255,155 @@ const Dl = {
|
|
|
252
255
|
}
|
|
253
256
|
if (!l)
|
|
254
257
|
throw new Error("Failed to import PDF.js");
|
|
255
|
-
|
|
258
|
+
Q = l.GlobalWorkerOptions, E = l.getDocument;
|
|
256
259
|
try {
|
|
257
260
|
const Z = new URL("data:application/javascript;base64,LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDIzIE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi8KIWZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoInBkZmpzLWRpc3QvYnVpbGQvcGRmLndvcmtlciIsW10sdCk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHNbInBkZmpzLWRpc3QvYnVpbGQvcGRmLndvcmtlciJdPXQoKTplWyJwZGZqcy1kaXN0L2J1aWxkL3BkZi53b3JrZXIiXT1lLnBkZmpzV29ya2VyPXQoKX0oZ2xvYmFsVGhpcywoKCk9PigoKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZT1bLChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Xb3JrZXJUYXNrPXQuV29ya2VyTWVzc2FnZUhhbmRsZXI9dm9pZCAwO3ZhciByPWEoMiksaT1hKDMpLG49YSg0KSxzPWEoNiksbz1hKDcyKSxjPWEoNjYpLGw9YSgxMDMpLGg9YSgxMDQpLHU9YSgxMDUpO2NsYXNzIFdvcmtlclRhc2t7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lPWU7dGhpcy50ZXJtaW5hdGVkPSExO3RoaXMuX2NhcGFiaWxpdHk9bmV3IHIuUHJvbWlzZUNhcGFiaWxpdHl9Z2V0IGZpbmlzaGVkKCl7cmV0dXJuIHRoaXMuX2NhcGFiaWxpdHkucHJvbWlzZX1maW5pc2goKXt0aGlzLl9jYXBhYmlsaXR5LnJlc29sdmUoKX10ZXJtaW5hdGUoKXt0aGlzLnRlcm1pbmF0ZWQ9ITB9ZW5zdXJlTm90VGVybWluYXRlZCgpe2lmKHRoaXMudGVybWluYXRlZCl0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB0YXNrIHdhcyB0ZXJtaW5hdGVkIil9fXQuV29ya2VyVGFzaz1Xb3JrZXJUYXNrO2NsYXNzIFdvcmtlck1lc3NhZ2VIYW5kbGVye3N0YXRpYyBzZXR1cChlLHQpe2xldCBhPSExO2Uub24oInRlc3QiLChmdW5jdGlvbih0KXtpZighYSl7YT0hMDtlLnNlbmQoInRlc3QiLHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KX19KSk7ZS5vbigiY29uZmlndXJlIiwoZnVuY3Rpb24oZSl7KDAsci5zZXRWZXJib3NpdHlMZXZlbCkoZS52ZXJib3NpdHkpfSkpO2Uub24oIkdldERvY1JlcXVlc3QiLChmdW5jdGlvbihlKXtyZXR1cm4gV29ya2VyTWVzc2FnZUhhbmRsZXIuY3JlYXRlRG9jdW1lbnRIYW5kbGVyKGUsdCl9KSl9c3RhdGljIGNyZWF0ZURvY3VtZW50SGFuZGxlcihlLHQpe2xldCBhLGw9ITEsZD1udWxsO2NvbnN0IGY9bmV3IFNldCxnPSgwLHIuZ2V0VmVyYm9zaXR5TGV2ZWwpKCkse2RvY0lkOnAsYXBpVmVyc2lvbjptfT1lLGI9IjMuNy4xMDciO2lmKG0hPT1iKXRocm93IG5ldyBFcnJvcihgVGhlIEFQSSB2ZXJzaW9uICIke219IiBkb2VzIG5vdCBtYXRjaCB0aGUgV29ya2VyIHZlcnNpb24gIiR7Yn0iLmApO2NvbnN0IHk9W107Zm9yKGNvbnN0IGUgaW5bXSl5LnB1c2goZSk7aWYoeS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJUaGUgYEFycmF5LnByb3RvdHlwZWAgY29udGFpbnMgdW5leHBlY3RlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXM6ICIreS5qb2luKCIsICIpKyI7IHRodXMgYnJlYWtpbmcgZS5nLiBgZm9yLi4uaW5gIGl0ZXJhdGlvbiBvZiBgQXJyYXlgcy4iKTtjb25zdCB3PXArIl93b3JrZXIiO2xldCBTPW5ldyBoLk1lc3NhZ2VIYW5kbGVyKHcscCx0KTtmdW5jdGlvbiBlbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYobCl0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgdGVybWluYXRlZCIpfWZ1bmN0aW9uIHN0YXJ0V29ya2VyVGFzayhlKXtmLmFkZChlKX1mdW5jdGlvbiBmaW5pc2hXb3JrZXJUYXNrKGUpe2UuZmluaXNoKCk7Zi5kZWxldGUoZSl9YXN5bmMgZnVuY3Rpb24gbG9hZERvY3VtZW50KGUpe2F3YWl0IGEuZW5zdXJlRG9jKCJjaGVja0hlYWRlciIpO2F3YWl0IGEuZW5zdXJlRG9jKCJwYXJzZVN0YXJ0WFJlZiIpO2F3YWl0IGEuZW5zdXJlRG9jKCJwYXJzZSIsW2VdKTthd2FpdCBhLmVuc3VyZURvYygiY2hlY2tGaXJzdFBhZ2UiLFtlXSk7YXdhaXQgYS5lbnN1cmVEb2MoImNoZWNrTGFzdFBhZ2UiLFtlXSk7Y29uc3QgdD1hd2FpdCBhLmVuc3VyZURvYygiaXNQdXJlWGZhIik7aWYodCl7Y29uc3QgZT1uZXcgV29ya2VyVGFzaygibG9hZFhmYUZvbnRzIik7c3RhcnRXb3JrZXJUYXNrKGUpO2F3YWl0IFByb21pc2UuYWxsKFthLmxvYWRYZmFGb250cyhTLGUpLmNhdGNoKChlPT57fSkpLnRoZW4oKCgpPT5maW5pc2hXb3JrZXJUYXNrKGUpKSksYS5sb2FkWGZhSW1hZ2VzKCldKX1jb25zdFtyLGldPWF3YWl0IFByb21pc2UuYWxsKFthLmVuc3VyZURvYygibnVtUGFnZXMiKSxhLmVuc3VyZURvYygiZmluZ2VycHJpbnRzIildKTtyZXR1cm57bnVtUGFnZXM6cixmaW5nZXJwcmludHM6aSxodG1sRm9yWGZhOnQ/YXdhaXQgYS5lbnN1cmVEb2MoImh0bWxGb3JYZmEiKTpudWxsfX1mdW5jdGlvbiBnZXRQZGZNYW5hZ2VyKHtkYXRhOmUscGFzc3dvcmQ6dCxkaXNhYmxlQXV0b0ZldGNoOmEscmFuZ2VDaHVua1NpemU6bixsZW5ndGg6byxkb2NCYXNlVXJsOmMsZW5hYmxlWGZhOmwsZXZhbHVhdG9yT3B0aW9uczpofSl7Y29uc3QgZj17c291cmNlOm51bGwsZGlzYWJsZUF1dG9GZXRjaDphLGRvY0Jhc2VVcmw6Yyxkb2NJZDpwLGVuYWJsZVhmYTpsLGV2YWx1YXRvck9wdGlvbnM6aCxoYW5kbGVyOlMsbGVuZ3RoOm8scGFzc3dvcmQ6dCxyYW5nZUNodW5rU2l6ZTpufSxnPW5ldyByLlByb21pc2VDYXBhYmlsaXR5O2xldCBtO2lmKGUpe3RyeXtmLnNvdXJjZT1lO209bmV3IHMuTG9jYWxQZGZNYW5hZ2VyKGYpO2cucmVzb2x2ZShtKX1jYXRjaChlKXtnLnJlamVjdChlKX1yZXR1cm4gZy5wcm9taXNlfWxldCBiLHk9W107dHJ5e2I9bmV3IHUuUERGV29ya2VyU3RyZWFtKFMpfWNhdGNoKGUpe2cucmVqZWN0KGUpO3JldHVybiBnLnByb21pc2V9Y29uc3Qgdz1iLmdldEZ1bGxSZWFkZXIoKTt3LmhlYWRlcnNSZWFkeS50aGVuKChmdW5jdGlvbigpe2lmKHcuaXNSYW5nZVN1cHBvcnRlZCl7Zi5zb3VyY2U9YjtmLmxlbmd0aD13LmNvbnRlbnRMZW5ndGg7Zi5kaXNhYmxlQXV0b0ZldGNofHw9dy5pc1N0cmVhbWluZ1N1cHBvcnRlZDttPW5ldyBzLk5ldHdvcmtQZGZNYW5hZ2VyKGYpO2Zvcihjb25zdCBlIG9mIHkpbS5zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpO3k9W107Zy5yZXNvbHZlKG0pO2Q9bnVsbH19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2cucmVqZWN0KGUpO2Q9bnVsbH0pKTtsZXQgeD0wO25ldyBQcm9taXNlKChmdW5jdGlvbihlLHQpe2NvbnN0IHJlYWRDaHVuaz1mdW5jdGlvbih7dmFsdWU6ZSxkb25lOmF9KXt0cnl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2lmKGEpe218fGZ1bmN0aW9uKCl7Y29uc3QgZT0oMCxpLmFycmF5QnVmZmVyc1RvQnl0ZXMpKHkpO28mJmUubGVuZ3RoIT09byYmKDAsci53YXJuKSgicmVwb3J0ZWQgSFRUUCBsZW5ndGggaXMgZGlmZmVyZW50IGZyb20gYWN0dWFsIik7dHJ5e2Yuc291cmNlPWU7bT1uZXcgcy5Mb2NhbFBkZk1hbmFnZXIoZik7Zy5yZXNvbHZlKG0pfWNhdGNoKGUpe2cucmVqZWN0KGUpfXk9W119KCk7ZD1udWxsO3JldHVybn14Kz1lLmJ5dGVMZW5ndGg7dy5pc1N0cmVhbWluZ1N1cHBvcnRlZHx8Uy5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDp4LHRvdGFsOk1hdGgubWF4KHgsdy5jb250ZW50TGVuZ3RofHwwKX0pO20/bS5zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpOnkucHVzaChlKTt3LnJlYWQoKS50aGVuKHJlYWRDaHVuayx0KX1jYXRjaChlKXt0KGUpfX07dy5yZWFkKCkudGhlbihyZWFkQ2h1bmssdCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2cucmVqZWN0KGUpO2Q9bnVsbH0pKTtkPWZ1bmN0aW9uKGUpe2IuY2FuY2VsQWxsUmVxdWVzdHMoZSl9O3JldHVybiBnLnByb21pc2V9Uy5vbigiR2V0UGFnZSIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbYS5lbnN1cmUoZSwicm90YXRlIiksYS5lbnN1cmUoZSwicmVmIiksYS5lbnN1cmUoZSwidXNlclVuaXQiKSxhLmVuc3VyZShlLCJ2aWV3IildKS50aGVuKChmdW5jdGlvbihbZSx0LGEscl0pe3JldHVybntyb3RhdGU6ZSxyZWY6dCx1c2VyVW5pdDphLHZpZXc6cn19KSl9KSl9KSk7Uy5vbigiR2V0UGFnZUluZGV4IiwoZnVuY3Rpb24oZSl7Y29uc3QgdD1uLlJlZi5nZXQoZS5udW0sZS5nZW4pO3JldHVybiBhLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW3RdKX0pKTtTLm9uKCJHZXREZXN0aW5hdGlvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJkZXN0aW5hdGlvbnMiKX0pKTtTLm9uKCJHZXREZXN0aW5hdGlvbiIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coImdldERlc3RpbmF0aW9uIixbZS5pZF0pfSkpO1Mub24oIkdldFBhZ2VMYWJlbHMiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwYWdlTGFiZWxzIil9KSk7Uy5vbigiR2V0UGFnZUxheW91dCIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coInBhZ2VMYXlvdXQiKX0pKTtTLm9uKCJHZXRQYWdlTW9kZSIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coInBhZ2VNb2RlIil9KSk7Uy5vbigiR2V0Vmlld2VyUHJlZmVyZW5jZXMiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJ2aWV3ZXJQcmVmZXJlbmNlcyIpfSkpO1Mub24oIkdldE9wZW5BY3Rpb24iLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJvcGVuQWN0aW9uIil9KSk7Uy5vbigiR2V0QXR0YWNobWVudHMiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJhdHRhY2htZW50cyIpfSkpO1Mub24oIkdldEphdmFTY3JpcHQiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJqYXZhU2NyaXB0Iil9KSk7Uy5vbigiR2V0RG9jSlNBY3Rpb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIil9KSk7Uy5vbigiR2V0UGFnZUpTQWN0aW9ucyIsKGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZX0pe3JldHVybiBhLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlKGUsImpzQWN0aW9ucyIpfSkpfSkpO1Mub24oIkdldE91dGxpbmUiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJkb2N1bWVudE91dGxpbmUiKX0pKTtTLm9uKCJHZXRPcHRpb25hbENvbnRlbnRDb25maWciLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJvcHRpb25hbENvbnRlbnRDb25maWciKX0pKTtTLm9uKCJHZXRQZXJtaXNzaW9ucyIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coInBlcm1pc3Npb25zIil9KSk7Uy5vbigiR2V0TWV0YWRhdGEiLChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2EuZW5zdXJlRG9jKCJkb2N1bWVudEluZm8iKSxhLmVuc3VyZUNhdGFsb2coIm1ldGFkYXRhIildKX0pKTtTLm9uKCJHZXRNYXJrSW5mbyIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coIm1hcmtJbmZvIil9KSk7Uy5vbigiR2V0RGF0YSIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLnJlcXVlc3RMb2FkZWRTdHJlYW0oKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5ieXRlc30pKX0pKTtTLm9uKCJHZXRBbm5vdGF0aW9ucyIsKGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZSxpbnRlbnQ6dH0pe3JldHVybiBhLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24oYSl7Y29uc3Qgcj1uZXcgV29ya2VyVGFzayhgR2V0QW5ub3RhdGlvbnM6IHBhZ2UgJHtlfWApO3N0YXJ0V29ya2VyVGFzayhyKTtyZXR1cm4gYS5nZXRBbm5vdGF0aW9uc0RhdGEoUyxyLHQpLnRoZW4oKGU9PntmaW5pc2hXb3JrZXJUYXNrKHIpO3JldHVybiBlfSksKGU9PntmaW5pc2hXb3JrZXJUYXNrKHIpO3Rocm93IGV9KSl9KSl9KSk7Uy5vbigiR2V0RmllbGRPYmplY3RzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlRG9jKCJmaWVsZE9iamVjdHMiKX0pKTtTLm9uKCJIYXNKU0FjdGlvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVEb2MoImhhc0pTQWN0aW9ucyIpfSkpO1Mub24oIkdldENhbGN1bGF0aW9uT3JkZXJJZHMiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVEb2MoImNhbGN1bGF0aW9uT3JkZXJJZHMiKX0pKTtTLm9uKCJTYXZlRG9jdW1lbnQiLChmdW5jdGlvbih7aXNQdXJlWGZhOmUsbnVtUGFnZXM6dCxhbm5vdGF0aW9uU3RvcmFnZTpzLGZpbGVuYW1lOm99KXtjb25zdCBsPVthLnJlcXVlc3RMb2FkZWRTdHJlYW0oKSxhLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIiksYS5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybVJlZiIpLGEuZW5zdXJlRG9jKCJ4cmVmIiksYS5lbnN1cmVEb2MoInN0YXJ0WFJlZiIpXSxoPWU/bnVsbDooMCxpLmdldE5ld0Fubm90YXRpb25zTWFwKShzKTtpZihoKWZvcihjb25zdFtlLHRdb2YgaClsLnB1c2goYS5nZXRQYWdlKGUpLnRoZW4oKGE9Pntjb25zdCByPW5ldyBXb3JrZXJUYXNrKGBTYXZlIChlZGl0b3IpOiBwYWdlICR7ZX1gKTtyZXR1cm4gYS5zYXZlTmV3QW5ub3RhdGlvbnMoUyxyLHQpLmZpbmFsbHkoKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayhyKX0pKX0pKSk7aWYoZSlsLnB1c2goYS5zZXJpYWxpemVYZmFEYXRhKHMpKTtlbHNlIGZvcihsZXQgZT0wO2U8dDtlKyspbC5wdXNoKGEuZ2V0UGFnZShlKS50aGVuKChmdW5jdGlvbih0KXtjb25zdCBhPW5ldyBXb3JrZXJUYXNrKGBTYXZlOiBwYWdlICR7ZX1gKTtyZXR1cm4gdC5zYXZlKFMsYSxzKS5maW5hbGx5KChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2soYSl9KSl9KSkpO3JldHVybiBQcm9taXNlLmFsbChsKS50aGVuKChmdW5jdGlvbihbdCxhLGkscyxsLC4uLmhdKXtsZXQgdT1bXSxkPW51bGw7aWYoZSl7ZD1oWzBdO2lmKCFkKXJldHVybiB0LmJ5dGVzfWVsc2V7dT1oLmZsYXQoMik7aWYoMD09PXUubGVuZ3RoKXJldHVybiB0LmJ5dGVzfWNvbnN0IGY9aSYmYSBpbnN0YW5jZW9mIG4uRGljdCYmdS5zb21lKChlPT5lLm5lZWRBcHBlYXJhbmNlcykpLGc9YSBpbnN0YW5jZW9mIG4uRGljdCYmYS5nZXQoIlhGQSIpfHxudWxsO2xldCBwPW51bGwsbT0hMTtpZihBcnJheS5pc0FycmF5KGcpKXtmb3IobGV0IGU9MCx0PWcubGVuZ3RoO2U8dDtlKz0yKWlmKCJkYXRhc2V0cyI9PT1nW2VdKXtwPWdbZSsxXTttPSEwfW51bGw9PT1wJiYocD1zLmdldE5ld1RlbXBvcmFyeVJlZigpKX1lbHNlIGcmJigwLHIud2FybikoIlVuc3VwcG9ydGVkIFhGQSB0eXBlLiIpO2xldCBiPU9iamVjdC5jcmVhdGUobnVsbCk7aWYocy50cmFpbGVyKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCksdD1zLnRyYWlsZXIuZ2V0KCJJbmZvIil8fG51bGw7dCBpbnN0YW5jZW9mIG4uRGljdCYmdC5mb3JFYWNoKCgodCxhKT0+eyJzdHJpbmciPT10eXBlb2YgYSYmKGVbdF09KDAsci5zdHJpbmdUb1BERlN0cmluZykoYSkpfSkpO2I9e3Jvb3RSZWY6cy50cmFpbGVyLmdldFJhdygiUm9vdCIpfHxudWxsLGVuY3J5cHRSZWY6cy50cmFpbGVyLmdldFJhdygiRW5jcnlwdCIpfHxudWxsLG5ld1JlZjpzLmdldE5ld1RlbXBvcmFyeVJlZigpLGluZm9SZWY6cy50cmFpbGVyLmdldFJhdygiSW5mbyIpfHxudWxsLGluZm86ZSxmaWxlSWRzOnMudHJhaWxlci5nZXQoIklEIil8fG51bGwsc3RhcnRYUmVmOnMubGFzdFhSZWZTdHJlYW1Qb3M/P2wsZmlsZW5hbWU6b319dHJ5e3JldHVybigwLGMuaW5jcmVtZW50YWxVcGRhdGUpKHtvcmlnaW5hbERhdGE6dC5ieXRlcyx4cmVmSW5mbzpiLG5ld1JlZnM6dSx4cmVmOnMsaGFzWGZhOiEhZyx4ZmFEYXRhc2V0c1JlZjpwLGhhc1hmYURhdGFzZXRzRW50cnk6bSxuZWVkQXBwZWFyYW5jZXM6ZixhY3JvRm9ybVJlZjppLGFjcm9Gb3JtOmEseGZhRGF0YTpkfSl9ZmluYWxseXtzLnJlc2V0TmV3VGVtcG9yYXJ5UmVmKCl9fSkpfSkpO1Mub24oIkdldE9wZXJhdG9yTGlzdCIsKGZ1bmN0aW9uKGUsdCl7Y29uc3QgaT1lLnBhZ2VJbmRleDthLmdldFBhZ2UoaSkudGhlbigoZnVuY3Rpb24oYSl7Y29uc3Qgbj1uZXcgV29ya2VyVGFzayhgR2V0T3BlcmF0b3JMaXN0OiBwYWdlICR7aX1gKTtzdGFydFdvcmtlclRhc2sobik7Y29uc3Qgcz1nPj1yLlZlcmJvc2l0eUxldmVsLklORk9TP0RhdGUubm93KCk6MDthLmdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjpTLHNpbms6dCx0YXNrOm4saW50ZW50OmUuaW50ZW50LGNhY2hlS2V5OmUuY2FjaGVLZXksYW5ub3RhdGlvblN0b3JhZ2U6ZS5hbm5vdGF0aW9uU3RvcmFnZX0pLnRoZW4oKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2sobik7cyYmKDAsci5pbmZvKShgcGFnZT0ke2krMX0gLSBnZXRPcGVyYXRvckxpc3Q6IHRpbWU9JHtEYXRlLm5vdygpLXN9bXMsIGxlbj0ke2UubGVuZ3RofWApO3QuY2xvc2UoKX0pLChmdW5jdGlvbihlKXtmaW5pc2hXb3JrZXJUYXNrKG4pO24udGVybWluYXRlZHx8dC5lcnJvcihlKX0pKX0pKX0pKTtTLm9uKCJHZXRUZXh0Q29udGVudCIsKGZ1bmN0aW9uKGUsdCl7Y29uc3R7cGFnZUluZGV4OmksaW5jbHVkZU1hcmtlZENvbnRlbnQ6bixkaXNhYmxlTm9ybWFsaXphdGlvbjpzfT1lO2EuZ2V0UGFnZShpKS50aGVuKChmdW5jdGlvbihlKXtjb25zdCBhPW5ldyBXb3JrZXJUYXNrKCJHZXRUZXh0Q29udGVudDogcGFnZSAiK2kpO3N0YXJ0V29ya2VyVGFzayhhKTtjb25zdCBvPWc+PXIuVmVyYm9zaXR5TGV2ZWwuSU5GT1M/RGF0ZS5ub3coKTowO2UuZXh0cmFjdFRleHRDb250ZW50KHtoYW5kbGVyOlMsdGFzazphLHNpbms6dCxpbmNsdWRlTWFya2VkQ29udGVudDpuLGRpc2FibGVOb3JtYWxpemF0aW9uOnN9KS50aGVuKChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2soYSk7byYmKDAsci5pbmZvKShgcGFnZT0ke2krMX0gLSBnZXRUZXh0Q29udGVudDogdGltZT1gKyhEYXRlLm5vdygpLW8pKyJtcyIpO3QuY2xvc2UoKX0pLChmdW5jdGlvbihlKXtmaW5pc2hXb3JrZXJUYXNrKGEpO2EudGVybWluYXRlZHx8dC5lcnJvcihlKX0pKX0pKX0pKTtTLm9uKCJHZXRTdHJ1Y3RUcmVlIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZ2V0UGFnZShlLnBhZ2VJbmRleCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlKGUsImdldFN0cnVjdFRyZWUiKX0pKX0pKTtTLm9uKCJGb250RmFsbGJhY2siLChmdW5jdGlvbihlKXtyZXR1cm4gYS5mb250RmFsbGJhY2soZS5pZCxTKX0pKTtTLm9uKCJDbGVhbnVwIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuY2xlYW51cCghMCl9KSk7Uy5vbigiVGVybWluYXRlIiwoZnVuY3Rpb24oZSl7bD0hMDtjb25zdCB0PVtdO2lmKGEpe2EudGVybWluYXRlKG5ldyByLkFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpO2NvbnN0IGU9YS5jbGVhbnVwKCk7dC5wdXNoKGUpO2E9bnVsbH1lbHNlKDAsby5jbGVhckdsb2JhbENhY2hlcykoKTtkJiZkKG5ldyByLkFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpO2Zvcihjb25zdCBlIG9mIGYpe3QucHVzaChlLmZpbmlzaGVkKTtlLnRlcm1pbmF0ZSgpfXJldHVybiBQcm9taXNlLmFsbCh0KS50aGVuKChmdW5jdGlvbigpe1MuZGVzdHJveSgpO1M9bnVsbH0pKX0pKTtTLm9uKCJSZWFkeSIsKGZ1bmN0aW9uKHQpeyFmdW5jdGlvbiBzZXR1cERvYyhlKXtmdW5jdGlvbiBvblN1Y2Nlc3MoZSl7ZW5zdXJlTm90VGVybWluYXRlZCgpO1Muc2VuZCgiR2V0RG9jIix7cGRmSW5mbzplfSl9ZnVuY3Rpb24gb25GYWlsdXJlKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtpZihlIGluc3RhbmNlb2Ygci5QYXNzd29yZEV4Y2VwdGlvbil7Y29uc3QgdD1uZXcgV29ya2VyVGFzayhgUGFzc3dvcmRFeGNlcHRpb246IHJlc3BvbnNlICR7ZS5jb2RlfWApO3N0YXJ0V29ya2VyVGFzayh0KTtTLnNlbmRXaXRoUHJvbWlzZSgiUGFzc3dvcmRSZXF1ZXN0IixlKS50aGVuKChmdW5jdGlvbih7cGFzc3dvcmQ6ZX0pe2ZpbmlzaFdvcmtlclRhc2sodCk7YS51cGRhdGVQYXNzd29yZChlKTtwZGZNYW5hZ2VyUmVhZHkoKX0pKS5jYXRjaCgoZnVuY3Rpb24oKXtmaW5pc2hXb3JrZXJUYXNrKHQpO1Muc2VuZCgiRG9jRXhjZXB0aW9uIixlKX0pKX1lbHNlIGUgaW5zdGFuY2VvZiByLkludmFsaWRQREZFeGNlcHRpb258fGUgaW5zdGFuY2VvZiByLk1pc3NpbmdQREZFeGNlcHRpb258fGUgaW5zdGFuY2VvZiByLlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIHIuVW5rbm93bkVycm9yRXhjZXB0aW9uP1Muc2VuZCgiRG9jRXhjZXB0aW9uIixlKTpTLnNlbmQoIkRvY0V4Y2VwdGlvbiIsbmV3IHIuVW5rbm93bkVycm9yRXhjZXB0aW9uKGUubWVzc2FnZSxlLnRvU3RyaW5nKCkpKX1mdW5jdGlvbiBwZGZNYW5hZ2VyUmVhZHkoKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7bG9hZERvY3VtZW50KCExKS50aGVuKG9uU3VjY2VzcywoZnVuY3Rpb24oZSl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2UgaW5zdGFuY2VvZiBpLlhSZWZQYXJzZUV4Y2VwdGlvbj9hLnJlcXVlc3RMb2FkZWRTdHJlYW0oKS50aGVuKChmdW5jdGlvbigpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtsb2FkRG9jdW1lbnQoITApLnRoZW4ob25TdWNjZXNzLG9uRmFpbHVyZSl9KSk6b25GYWlsdXJlKGUpfSkpfWVuc3VyZU5vdFRlcm1pbmF0ZWQoKTtnZXRQZGZNYW5hZ2VyKGUpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKGwpe2UudGVybWluYXRlKG5ldyByLkFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpO3Rocm93IG5ldyBFcnJvcigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkIil9YT1lO2EucmVxdWVzdExvYWRlZFN0cmVhbSghMCkudGhlbigoZT0+e1Muc2VuZCgiRGF0YUxvYWRlZCIse2xlbmd0aDplLmJ5dGVzLmJ5dGVMZW5ndGh9KX0pKX0pKS50aGVuKHBkZk1hbmFnZXJSZWFkeSxvbkZhaWx1cmUpfShlKTtlPW51bGx9KSk7cmV0dXJuIHd9c3RhdGljIGluaXRpYWxpemVGcm9tUG9ydChlKXtjb25zdCB0PW5ldyBoLk1lc3NhZ2VIYW5kbGVyKCJ3b3JrZXIiLCJtYWluIixlKTtXb3JrZXJNZXNzYWdlSGFuZGxlci5zZXR1cCh0LGUpO3Quc2VuZCgicmVhZHkiLG51bGwpfX10Lldvcmtlck1lc3NhZ2VIYW5kbGVyPVdvcmtlck1lc3NhZ2VIYW5kbGVyOyJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93JiYhbC5pc05vZGVKUyYmInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiZmdW5jdGlvbiBpc01lc3NhZ2VQb3J0KGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLnBvc3RNZXNzYWdlJiYib25tZXNzYWdlImluIGV9KHNlbGYpJiZXb3JrZXJNZXNzYWdlSGFuZGxlci5pbml0aWFsaXplRnJvbVBvcnQoc2VsZil9LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVmVyYm9zaXR5TGV2ZWw9dC5VdGlsPXQuVW5rbm93bkVycm9yRXhjZXB0aW9uPXQuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uPXQuVGV4dFJlbmRlcmluZ01vZGU9dC5SZW5kZXJpbmdJbnRlbnRGbGFnPXQuUHJvbWlzZUNhcGFiaWxpdHk9dC5QZXJtaXNzaW9uRmxhZz10LlBhc3N3b3JkUmVzcG9uc2VzPXQuUGFzc3dvcmRFeGNlcHRpb249dC5QYWdlQWN0aW9uRXZlbnRUeXBlPXQuT1BTPXQuTWlzc2luZ1BERkV4Y2VwdGlvbj10Lk1BWF9JTUFHRV9TSVpFX1RPX0NBQ0hFPXQuTElORV9GQUNUT1I9dC5MSU5FX0RFU0NFTlRfRkFDVE9SPXQuSW52YWxpZFBERkV4Y2VwdGlvbj10LkltYWdlS2luZD10LklERU5USVRZX01BVFJJWD10LkZvcm1hdEVycm9yPXQuRmVhdHVyZVRlc3Q9dC5GT05UX0lERU5USVRZX01BVFJJWD10LkRvY3VtZW50QWN0aW9uRXZlbnRUeXBlPXQuQ01hcENvbXByZXNzaW9uVHlwZT10LkJhc2VFeGNlcHRpb249dC5CQVNFTElORV9GQUNUT1I9dC5Bbm5vdGF0aW9uVHlwZT10LkFubm90YXRpb25TdGF0ZU1vZGVsVHlwZT10LkFubm90YXRpb25SZXZpZXdTdGF0ZT10LkFubm90YXRpb25SZXBseVR5cGU9dC5Bbm5vdGF0aW9uTW9kZT10LkFubm90YXRpb25NYXJrZWRTdGF0ZT10LkFubm90YXRpb25GbGFnPXQuQW5ub3RhdGlvbkZpZWxkRmxhZz10LkFubm90YXRpb25FZGl0b3JUeXBlPXQuQW5ub3RhdGlvbkVkaXRvclByZWZpeD10LkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlPXQuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZT10LkFubm90YXRpb25BY3Rpb25FdmVudFR5cGU9dC5BYm9ydEV4Y2VwdGlvbj12b2lkIDA7dC5hc3NlcnQ9ZnVuY3Rpb24gYXNzZXJ0KGUsdCl7ZXx8dW5yZWFjaGFibGUodCl9O3QuYnl0ZXNUb1N0cmluZz1mdW5jdGlvbiBieXRlc1RvU3RyaW5nKGUpeyJvYmplY3QiPT10eXBlb2YgZSYmdm9pZCAwIT09ZT8ubGVuZ3RofHx1bnJlYWNoYWJsZSgiSW52YWxpZCBhcmd1bWVudCBmb3IgYnl0ZXNUb1N0cmluZyIpO2NvbnN0IHQ9ZS5sZW5ndGgsYT04MTkyO2lmKHQ8YSlyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGUpO2NvbnN0IHI9W107Zm9yKGxldCBpPTA7aTx0O2krPWEpe2NvbnN0IG49TWF0aC5taW4oaSthLHQpLHM9ZS5zdWJhcnJheShpLG4pO3IucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwscykpfXJldHVybiByLmpvaW4oIiIpfTt0LmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmw9ZnVuY3Rpb24gY3JlYXRlVmFsaWRBYnNvbHV0ZVVybChlLHQ9bnVsbCxhPW51bGwpe2lmKCFlKXJldHVybiBudWxsO3RyeXtpZihhJiYic3RyaW5nIj09dHlwZW9mIGUpe2lmKGEuYWRkRGVmYXVsdFByb3RvY29sJiZlLnN0YXJ0c1dpdGgoInd3dy4iKSl7Y29uc3QgdD1lLm1hdGNoKC9cLi9nKTt0Py5sZW5ndGg+PTImJihlPWBodHRwOi8vJHtlfWApfWlmKGEudHJ5Q29udmVydEVuY29kaW5nKXRyeXtlPXN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaChlKXt9fWNvbnN0IHI9dD9uZXcgVVJMKGUsdCk6bmV3IFVSTChlKTtpZihmdW5jdGlvbiBfaXNWYWxpZFByb3RvY29sKGUpe3N3aXRjaChlPy5wcm90b2NvbCl7Y2FzZSJodHRwOiI6Y2FzZSJodHRwczoiOmNhc2UiZnRwOiI6Y2FzZSJtYWlsdG86IjpjYXNlInRlbDoiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fShyKSlyZXR1cm4gcn1jYXRjaChlKXt9cmV0dXJuIG51bGx9O3QuZ2V0TW9kaWZpY2F0aW9uRGF0ZT1mdW5jdGlvbiBnZXRNb2RpZmljYXRpb25EYXRlKGU9bmV3IERhdGUpe3JldHVybltlLmdldFVUQ0Z1bGxZZWFyKCkudG9TdHJpbmcoKSwoZS5nZXRVVENNb250aCgpKzEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDRGF0ZSgpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDSG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ01pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ1NlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKV0uam9pbigiIil9O3QuZ2V0VmVyYm9zaXR5TGV2ZWw9ZnVuY3Rpb24gZ2V0VmVyYm9zaXR5TGV2ZWwoKXtyZXR1cm4gcn07dC5pbmZvPWZ1bmN0aW9uIGluZm8oZSl7cj49YS5JTkZPUyYmY29uc29sZS5sb2coYEluZm86ICR7ZX1gKX07dC5pc0FycmF5QnVmZmVyPWZ1bmN0aW9uIGlzQXJyYXlCdWZmZXIoZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiZ2b2lkIDAhPT1lPy5ieXRlTGVuZ3RofTt0LmlzQXJyYXlFcXVhbD1mdW5jdGlvbiBpc0FycmF5RXF1YWwoZSx0KXtpZihlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKylpZihlW2FdIT09dFthXSlyZXR1cm4hMTtyZXR1cm4hMH07dC5ub3JtYWxpemVVbmljb2RlPWZ1bmN0aW9uIG5vcm1hbGl6ZVVuaWNvZGUoZSl7aWYoIW8pe289LyhbXHUwMGEwXHUwMGI1XHUwMzdlXHUwZWIzXHUyMDAwLVx1MjAwYVx1MjAyZlx1MjEyNlx1ZmIwMC1cdWZiMDRcdWZiMDZcdWZiMjAtXHVmYjM2XHVmYjM4LVx1ZmIzY1x1ZmIzZVx1ZmI0MC1cdWZiNDFcdWZiNDMtXHVmYjQ0XHVmYjQ2LVx1ZmJhMVx1ZmJhNC1cdWZiYTlcdWZiYWUtXHVmYmIxXHVmYmQzLVx1ZmJkY1x1ZmJkZS1cdWZiZTdcdWZiZWEtXHVmYmY4XHVmYmZjLVx1ZmJmZFx1ZmMwMC1cdWZjNWRcdWZjNjQtXHVmY2YxXHVmY2Y1LVx1ZmQzZFx1ZmQ4OFx1ZmRmNFx1ZmRmYS1cdWZkZmJcdWZlNzFcdWZlNzdcdWZlNzlcdWZlN2JcdWZlN2RdKyl8KFx1ZmIwNSspL2d1O2M9bmV3IE1hcChbWyLvrIUiLCLFv3QiXV0pfXJldHVybiBlLnJlcGxhY2VBbGwobywoKGUsdCxhKT0+dD90Lm5vcm1hbGl6ZSgiTkZLQyIpOmMuZ2V0KGEpKSl9O3Qub2JqZWN0RnJvbU1hcD1mdW5jdGlvbiBvYmplY3RGcm9tTWFwKGUpe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbYSxyXW9mIGUpdFthXT1yO3JldHVybiB0fTt0Lm9iamVjdFNpemU9ZnVuY3Rpb24gb2JqZWN0U2l6ZShlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkubGVuZ3RofTt0LnNldFZlcmJvc2l0eUxldmVsPWZ1bmN0aW9uIHNldFZlcmJvc2l0eUxldmVsKGUpe051bWJlci5pc0ludGVnZXIoZSkmJihyPWUpfTt0LnNoYWRvdz1zaGFkb3c7dC5zdHJpbmczMj1mdW5jdGlvbiBzdHJpbmczMihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlKX07dC5zdHJpbmdUb0J5dGVzPXN0cmluZ1RvQnl0ZXM7dC5zdHJpbmdUb1BERlN0cmluZz1mdW5jdGlvbiBzdHJpbmdUb1BERlN0cmluZyhlKXtpZihlWzBdPj0iw68iKXtsZXQgdDsiw74iPT09ZVswXSYmIsO/Ij09PWVbMV0/dD0idXRmLTE2YmUiOiLDvyI9PT1lWzBdJiYiw74iPT09ZVsxXT90PSJ1dGYtMTZsZSI6IsOvIj09PWVbMF0mJiLCuyI9PT1lWzFdJiYiwr8iPT09ZVsyXSYmKHQ9InV0Zi04Iik7aWYodCl0cnl7Y29uc3QgYT1uZXcgVGV4dERlY29kZXIodCx7ZmF0YWw6ITB9KSxyPXN0cmluZ1RvQnl0ZXMoZSk7cmV0dXJuIGEuZGVjb2RlKHIpfWNhdGNoKGUpe3dhcm4oYHN0cmluZ1RvUERGU3RyaW5nOiAiJHtlfSIuYCl9fWNvbnN0IHQ9W107Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPXNbZS5jaGFyQ29kZUF0KGEpXTt0LnB1c2gocj9TdHJpbmcuZnJvbUNoYXJDb2RlKHIpOmUuY2hhckF0KGEpKX1yZXR1cm4gdC5qb2luKCIiKX07dC5zdHJpbmdUb1VURjhTdHJpbmc9c3RyaW5nVG9VVEY4U3RyaW5nO3QudW5yZWFjaGFibGU9dW5yZWFjaGFibGU7dC51dGY4U3RyaW5nVG9TdHJpbmc9ZnVuY3Rpb24gdXRmOFN0cmluZ1RvU3RyaW5nKGUpe3JldHVybiB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZSkpfTt0Lndhcm49d2Fybjt0LklERU5USVRZX01BVFJJWD1bMSwwLDAsMSwwLDBdO3QuRk9OVF9JREVOVElUWV9NQVRSSVg9Wy4wMDEsMCwwLC4wMDEsMCwwXTt0Lk1BWF9JTUFHRV9TSVpFX1RPX0NBQ0hFPTFlNzt0LkxJTkVfRkFDVE9SPTEuMzU7dC5MSU5FX0RFU0NFTlRfRkFDVE9SPS4zNTt0LkJBU0VMSU5FX0ZBQ1RPUj0uMjU5MjU5MjU5MjU5MjU5MjQ7dC5SZW5kZXJpbmdJbnRlbnRGbGFnPXtBTlk6MSxESVNQTEFZOjIsUFJJTlQ6NCxTQVZFOjgsQU5OT1RBVElPTlNfRk9STVM6MTYsQU5OT1RBVElPTlNfU1RPUkFHRTozMixBTk5PVEFUSU9OU19ESVNBQkxFOjY0LE9QTElTVDoyNTZ9O3QuQW5ub3RhdGlvbk1vZGU9e0RJU0FCTEU6MCxFTkFCTEU6MSxFTkFCTEVfRk9STVM6MixFTkFCTEVfU1RPUkFHRTozfTt0LkFubm90YXRpb25FZGl0b3JQcmVmaXg9InBkZmpzX2ludGVybmFsX2VkaXRvcl8iO3QuQW5ub3RhdGlvbkVkaXRvclR5cGU9e0RJU0FCTEU6LTEsTk9ORTowLEZSRUVURVhUOjMsSU5LOjE1fTt0LkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlPXtGUkVFVEVYVF9TSVpFOjEsRlJFRVRFWFRfQ09MT1I6MixGUkVFVEVYVF9PUEFDSVRZOjMsSU5LX0NPTE9SOjExLElOS19USElDS05FU1M6MTIsSU5LX09QQUNJVFk6MTN9O3QuUGVybWlzc2lvbkZsYWc9e1BSSU5UOjQsTU9ESUZZX0NPTlRFTlRTOjgsQ09QWToxNixNT0RJRllfQU5OT1RBVElPTlM6MzIsRklMTF9JTlRFUkFDVElWRV9GT1JNUzoyNTYsQ09QWV9GT1JfQUNDRVNTSUJJTElUWTo1MTIsQVNTRU1CTEU6MTAyNCxQUklOVF9ISUdIX1FVQUxJVFk6MjA0OH07dC5UZXh0UmVuZGVyaW5nTW9kZT17RklMTDowLFNUUk9LRToxLEZJTExfU1RST0tFOjIsSU5WSVNJQkxFOjMsRklMTF9BRERfVE9fUEFUSDo0LFNUUk9LRV9BRERfVE9fUEFUSDo1LEZJTExfU1RST0tFX0FERF9UT19QQVRIOjYsQUREX1RPX1BBVEg6NyxGSUxMX1NUUk9LRV9NQVNLOjMsQUREX1RPX1BBVEhfRkxBRzo0fTt0LkltYWdlS2luZD17R1JBWVNDQUxFXzFCUFA6MSxSR0JfMjRCUFA6MixSR0JBXzMyQlBQOjN9O3QuQW5ub3RhdGlvblR5cGU9e1RFWFQ6MSxMSU5LOjIsRlJFRVRFWFQ6MyxMSU5FOjQsU1FVQVJFOjUsQ0lSQ0xFOjYsUE9MWUdPTjo3LFBPTFlMSU5FOjgsSElHSExJR0hUOjksVU5ERVJMSU5FOjEwLFNRVUlHR0xZOjExLFNUUklLRU9VVDoxMixTVEFNUDoxMyxDQVJFVDoxNCxJTks6MTUsUE9QVVA6MTYsRklMRUFUVEFDSE1FTlQ6MTcsU09VTkQ6MTgsTU9WSUU6MTksV0lER0VUOjIwLFNDUkVFTjoyMSxQUklOVEVSTUFSSzoyMixUUkFQTkVUOjIzLFdBVEVSTUFSSzoyNCxUSFJFRUQ6MjUsUkVEQUNUOjI2fTt0LkFubm90YXRpb25TdGF0ZU1vZGVsVHlwZT17TUFSS0VEOiJNYXJrZWQiLFJFVklFVzoiUmV2aWV3In07dC5Bbm5vdGF0aW9uTWFya2VkU3RhdGU9e01BUktFRDoiTWFya2VkIixVTk1BUktFRDoiVW5tYXJrZWQifTt0LkFubm90YXRpb25SZXZpZXdTdGF0ZT17QUNDRVBURUQ6IkFjY2VwdGVkIixSRUpFQ1RFRDoiUmVqZWN0ZWQiLENBTkNFTExFRDoiQ2FuY2VsbGVkIixDT01QTEVURUQ6IkNvbXBsZXRlZCIsTk9ORToiTm9uZSJ9O3QuQW5ub3RhdGlvblJlcGx5VHlwZT17R1JPVVA6Ikdyb3VwIixSRVBMWToiUiJ9O3QuQW5ub3RhdGlvbkZsYWc9e0lOVklTSUJMRToxLEhJRERFTjoyLFBSSU5UOjQsTk9aT09NOjgsTk9ST1RBVEU6MTYsTk9WSUVXOjMyLFJFQURPTkxZOjY0LExPQ0tFRDoxMjgsVE9HR0xFTk9WSUVXOjI1NixMT0NLRURDT05URU5UUzo1MTJ9O3QuQW5ub3RhdGlvbkZpZWxkRmxhZz17UkVBRE9OTFk6MSxSRVFVSVJFRDoyLE5PRVhQT1JUOjQsTVVMVElMSU5FOjQwOTYsUEFTU1dPUkQ6ODE5MixOT1RPR0dMRVRPT0ZGOjE2Mzg0LFJBRElPOjMyNzY4LFBVU0hCVVRUT046NjU1MzYsQ09NQk86MTMxMDcyLEVESVQ6MjYyMTQ0LFNPUlQ6NTI0Mjg4LEZJTEVTRUxFQ1Q6MTA0ODU3NixNVUxUSVNFTEVDVDoyMDk3MTUyLERPTk9UU1BFTExDSEVDSzo0MTk0MzA0LERPTk9UU0NST0xMOjgzODg2MDgsQ09NQjoxNjc3NzIxNixSSUNIVEVYVDozMzU1NDQzMixSQURJT1NJTlVOSVNPTjozMzU1NDQzMixDT01NSVRPTlNFTENIQU5HRTo2NzEwODg2NH07dC5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlPXtTT0xJRDoxLERBU0hFRDoyLEJFVkVMRUQ6MyxJTlNFVDo0LFVOREVSTElORTo1fTt0LkFubm90YXRpb25BY3Rpb25FdmVudFR5cGU9e0U6Ik1vdXNlIEVudGVyIixYOiJNb3VzZSBFeGl0IixEOiJNb3VzZSBEb3duIixVOiJNb3VzZSBVcCIsRm86IkZvY3VzIixCbDoiQmx1ciIsUE86IlBhZ2VPcGVuIixQQzoiUGFnZUNsb3NlIixQVjoiUGFnZVZpc2libGUiLFBJOiJQYWdlSW52aXNpYmxlIixLOiJLZXlzdHJva2UiLEY6IkZvcm1hdCIsVjoiVmFsaWRhdGUiLEM6IkNhbGN1bGF0ZSJ9O3QuRG9jdW1lbnRBY3Rpb25FdmVudFR5cGU9e1dDOiJXaWxsQ2xvc2UiLFdTOiJXaWxsU2F2ZSIsRFM6IkRpZFNhdmUiLFdQOiJXaWxsUHJpbnQiLERQOiJEaWRQcmludCJ9O3QuUGFnZUFjdGlvbkV2ZW50VHlwZT17TzoiUGFnZU9wZW4iLEM6IlBhZ2VDbG9zZSJ9O2NvbnN0IGE9e0VSUk9SUzowLFdBUk5JTkdTOjEsSU5GT1M6NX07dC5WZXJib3NpdHlMZXZlbD1hO3QuQ01hcENvbXByZXNzaW9uVHlwZT17Tk9ORTowLEJJTkFSWToxfTt0Lk9QUz17ZGVwZW5kZW5jeToxLHNldExpbmVXaWR0aDoyLHNldExpbmVDYXA6MyxzZXRMaW5lSm9pbjo0LHNldE1pdGVyTGltaXQ6NSxzZXREYXNoOjYsc2V0UmVuZGVyaW5nSW50ZW50Ojcsc2V0RmxhdG5lc3M6OCxzZXRHU3RhdGU6OSxzYXZlOjEwLHJlc3RvcmU6MTEsdHJhbnNmb3JtOjEyLG1vdmVUbzoxMyxsaW5lVG86MTQsY3VydmVUbzoxNSxjdXJ2ZVRvMjoxNixjdXJ2ZVRvMzoxNyxjbG9zZVBhdGg6MTgscmVjdGFuZ2xlOjE5LHN0cm9rZToyMCxjbG9zZVN0cm9rZToyMSxmaWxsOjIyLGVvRmlsbDoyMyxmaWxsU3Ryb2tlOjI0LGVvRmlsbFN0cm9rZToyNSxjbG9zZUZpbGxTdHJva2U6MjYsY2xvc2VFT0ZpbGxTdHJva2U6MjcsZW5kUGF0aDoyOCxjbGlwOjI5LGVvQ2xpcDozMCxiZWdpblRleHQ6MzEsZW5kVGV4dDozMixzZXRDaGFyU3BhY2luZzozMyxzZXRXb3JkU3BhY2luZzozNCxzZXRIU2NhbGU6MzUsc2V0TGVhZGluZzozNixzZXRGb250OjM3LHNldFRleHRSZW5kZXJpbmdNb2RlOjM4LHNldFRleHRSaXNlOjM5LG1vdmVUZXh0OjQwLHNldExlYWRpbmdNb3ZlVGV4dDo0MSxzZXRUZXh0TWF0cml4OjQyLG5leHRMaW5lOjQzLHNob3dUZXh0OjQ0LHNob3dTcGFjZWRUZXh0OjQ1LG5leHRMaW5lU2hvd1RleHQ6NDYsbmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQ6NDcsc2V0Q2hhcldpZHRoOjQ4LHNldENoYXJXaWR0aEFuZEJvdW5kczo0OSxzZXRTdHJva2VDb2xvclNwYWNlOjUwLHNldEZpbGxDb2xvclNwYWNlOjUxLHNldFN0cm9rZUNvbG9yOjUyLHNldFN0cm9rZUNvbG9yTjo1MyxzZXRGaWxsQ29sb3I6NTQsc2V0RmlsbENvbG9yTjo1NSxzZXRTdHJva2VHcmF5OjU2LHNldEZpbGxHcmF5OjU3LHNldFN0cm9rZVJHQkNvbG9yOjU4LHNldEZpbGxSR0JDb2xvcjo1OSxzZXRTdHJva2VDTVlLQ29sb3I6NjAsc2V0RmlsbENNWUtDb2xvcjo2MSxzaGFkaW5nRmlsbDo2MixiZWdpbklubGluZUltYWdlOjYzLGJlZ2luSW1hZ2VEYXRhOjY0LGVuZElubGluZUltYWdlOjY1LHBhaW50WE9iamVjdDo2NixtYXJrUG9pbnQ6NjcsbWFya1BvaW50UHJvcHM6NjgsYmVnaW5NYXJrZWRDb250ZW50OjY5LGJlZ2luTWFya2VkQ29udGVudFByb3BzOjcwLGVuZE1hcmtlZENvbnRlbnQ6NzEsYmVnaW5Db21wYXQ6NzIsZW5kQ29tcGF0OjczLHBhaW50Rm9ybVhPYmplY3RCZWdpbjo3NCxwYWludEZvcm1YT2JqZWN0RW5kOjc1LGJlZ2luR3JvdXA6NzYsZW5kR3JvdXA6NzcsYmVnaW5Bbm5vdGF0aW9uOjgwLGVuZEFubm90YXRpb246ODEscGFpbnRJbWFnZU1hc2tYT2JqZWN0OjgzLHBhaW50SW1hZ2VNYXNrWE9iamVjdEdyb3VwOjg0LHBhaW50SW1hZ2VYT2JqZWN0Ojg1LHBhaW50SW5saW5lSW1hZ2VYT2JqZWN0Ojg2LHBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXA6ODcscGFpbnRJbWFnZVhPYmplY3RSZXBlYXQ6ODgscGFpbnRJbWFnZU1hc2tYT2JqZWN0UmVwZWF0Ojg5LHBhaW50U29saWRDb2xvckltYWdlTWFzazo5MCxjb25zdHJ1Y3RQYXRoOjkxfTt0LlBhc3N3b3JkUmVzcG9uc2VzPXtORUVEX1BBU1NXT1JEOjEsSU5DT1JSRUNUX1BBU1NXT1JEOjJ9O2xldCByPWEuV0FSTklOR1M7ZnVuY3Rpb24gd2FybihlKXtyPj1hLldBUk5JTkdTJiZjb25zb2xlLmxvZyhgV2FybmluZzogJHtlfWApfWZ1bmN0aW9uIHVucmVhY2hhYmxlKGUpe3Rocm93IG5ldyBFcnJvcihlKX1mdW5jdGlvbiBzaGFkb3coZSx0LGEscj0hMSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6YSxlbnVtZXJhYmxlOiFyLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMX0pO3JldHVybiBhfWNvbnN0IGk9ZnVuY3Rpb24gQmFzZUV4Y2VwdGlvbkNsb3N1cmUoKXtmdW5jdGlvbiBCYXNlRXhjZXB0aW9uKGUsdCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VFeGNlcHRpb24mJnVucmVhY2hhYmxlKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlRXhjZXB0aW9uLiIpO3RoaXMubWVzc2FnZT1lO3RoaXMubmFtZT10fUJhc2VFeGNlcHRpb24ucHJvdG90eXBlPW5ldyBFcnJvcjtCYXNlRXhjZXB0aW9uLmNvbnN0cnVjdG9yPUJhc2VFeGNlcHRpb247cmV0dXJuIEJhc2VFeGNlcHRpb259KCk7dC5CYXNlRXhjZXB0aW9uPWk7dC5QYXNzd29yZEV4Y2VwdGlvbj1jbGFzcyBQYXNzd29yZEV4Y2VwdGlvbiBleHRlbmRzIGl7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJQYXNzd29yZEV4Y2VwdGlvbiIpO3RoaXMuY29kZT10fX07dC5Vbmtub3duRXJyb3JFeGNlcHRpb249Y2xhc3MgVW5rbm93bkVycm9yRXhjZXB0aW9uIGV4dGVuZHMgaXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlVua25vd25FcnJvckV4Y2VwdGlvbiIpO3RoaXMuZGV0YWlscz10fX07dC5JbnZhbGlkUERGRXhjZXB0aW9uPWNsYXNzIEludmFsaWRQREZFeGNlcHRpb24gZXh0ZW5kcyBpe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkludmFsaWRQREZFeGNlcHRpb24iKX19O3QuTWlzc2luZ1BERkV4Y2VwdGlvbj1jbGFzcyBNaXNzaW5nUERGRXhjZXB0aW9uIGV4dGVuZHMgaXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJNaXNzaW5nUERGRXhjZXB0aW9uIil9fTt0LlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbj1jbGFzcyBVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24gZXh0ZW5kcyBpe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIik7dGhpcy5zdGF0dXM9dH19O3QuRm9ybWF0RXJyb3I9Y2xhc3MgRm9ybWF0RXJyb3IgZXh0ZW5kcyBpe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkZvcm1hdEVycm9yIil9fTt0LkFib3J0RXhjZXB0aW9uPWNsYXNzIEFib3J0RXhjZXB0aW9uIGV4dGVuZHMgaXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJBYm9ydEV4Y2VwdGlvbiIpfX07ZnVuY3Rpb24gc3RyaW5nVG9CeXRlcyhlKXsic3RyaW5nIiE9dHlwZW9mIGUmJnVucmVhY2hhYmxlKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBzdHJpbmdUb0J5dGVzIik7Y29uc3QgdD1lLmxlbmd0aCxhPW5ldyBVaW50OEFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDsrK3IpYVtyXT0yNTUmZS5jaGFyQ29kZUF0KHIpO3JldHVybiBhfXQuRmVhdHVyZVRlc3Q9Y2xhc3MgRmVhdHVyZVRlc3R7c3RhdGljIGdldCBpc0xpdHRsZUVuZGlhbigpe3JldHVybiBzaGFkb3codGhpcywiaXNMaXR0bGVFbmRpYW4iLGZ1bmN0aW9uIGlzTGl0dGxlRW5kaWFuKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheSg0KTtlWzBdPTE7cmV0dXJuIDE9PT1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIsMCwxKVswXX0oKSl9c3RhdGljIGdldCBpc0V2YWxTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzRXZhbFN1cHBvcnRlZCIsZnVuY3Rpb24gaXNFdmFsU3VwcG9ydGVkKCl7dHJ5e25ldyBGdW5jdGlvbigiIik7cmV0dXJuITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpKX1zdGF0aWMgZ2V0IGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCIsInVuZGVmaW5lZCIhPXR5cGVvZiBPZmZzY3JlZW5DYW52YXMpfXN0YXRpYyBnZXQgcGxhdGZvcm0oKXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIG5hdmlnYXRvcj9zaGFkb3codGhpcywicGxhdGZvcm0iLHtpc1dpbjohMSxpc01hYzohMX0pOnNoYWRvdyh0aGlzLCJwbGF0Zm9ybSIse2lzV2luOm5hdmlnYXRvci5wbGF0Zm9ybS5pbmNsdWRlcygiV2luIiksaXNNYWM6bmF2aWdhdG9yLnBsYXRmb3JtLmluY2x1ZGVzKCJNYWMiKX0pfX07Y29uc3Qgbj1bLi4uQXJyYXkoMjU2KS5rZXlzKCldLm1hcCgoZT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKSk7Y2xhc3MgVXRpbHtzdGF0aWMgbWFrZUhleENvbG9yKGUsdCxhKXtyZXR1cm5gIyR7bltlXX0ke25bdF19JHtuW2FdfWB9c3RhdGljIHNjYWxlTWluTWF4KGUsdCl7bGV0IGE7aWYoZVswXSl7aWYoZVswXTwwKXthPXRbMF07dFswXT10WzFdO3RbMV09YX10WzBdKj1lWzBdO3RbMV0qPWVbMF07aWYoZVszXTwwKXthPXRbMl07dFsyXT10WzNdO3RbM109YX10WzJdKj1lWzNdO3RbM10qPWVbM119ZWxzZXthPXRbMF07dFswXT10WzJdO3RbMl09YTthPXRbMV07dFsxXT10WzNdO3RbM109YTtpZihlWzFdPDApe2E9dFsyXTt0WzJdPXRbM107dFszXT1hfXRbMl0qPWVbMV07dFszXSo9ZVsxXTtpZihlWzJdPDApe2E9dFswXTt0WzBdPXRbMV07dFsxXT1hfXRbMF0qPWVbMl07dFsxXSo9ZVsyXX10WzBdKz1lWzRdO3RbMV0rPWVbNF07dFsyXSs9ZVs1XTt0WzNdKz1lWzVdfXN0YXRpYyB0cmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMl0qdFsxXSxlWzFdKnRbMF0rZVszXSp0WzFdLGVbMF0qdFsyXStlWzJdKnRbM10sZVsxXSp0WzJdK2VbM10qdFszXSxlWzBdKnRbNF0rZVsyXSp0WzVdK2VbNF0sZVsxXSp0WzRdK2VbM10qdFs1XStlWzVdXX1zdGF0aWMgYXBwbHlUcmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMV0qdFsyXSt0WzRdLGVbMF0qdFsxXStlWzFdKnRbM10rdFs1XV19c3RhdGljIGFwcGx5SW52ZXJzZVRyYW5zZm9ybShlLHQpe2NvbnN0IGE9dFswXSp0WzNdLXRbMV0qdFsyXTtyZXR1cm5bKGVbMF0qdFszXS1lWzFdKnRbMl0rdFsyXSp0WzVdLXRbNF0qdFszXSkvYSwoLWVbMF0qdFsxXStlWzFdKnRbMF0rdFs0XSp0WzFdLXRbNV0qdFswXSkvYV19c3RhdGljIGdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KGUsdCl7Y29uc3QgYT1VdGlsLmFwcGx5VHJhbnNmb3JtKGUsdCkscj1VdGlsLmFwcGx5VHJhbnNmb3JtKGUuc2xpY2UoMiw0KSx0KSxpPVV0aWwuYXBwbHlUcmFuc2Zvcm0oW2VbMF0sZVszXV0sdCksbj1VdGlsLmFwcGx5VHJhbnNmb3JtKFtlWzJdLGVbMV1dLHQpO3JldHVybltNYXRoLm1pbihhWzBdLHJbMF0saVswXSxuWzBdKSxNYXRoLm1pbihhWzFdLHJbMV0saVsxXSxuWzFdKSxNYXRoLm1heChhWzBdLHJbMF0saVswXSxuWzBdKSxNYXRoLm1heChhWzFdLHJbMV0saVsxXSxuWzFdKV19c3RhdGljIGludmVyc2VUcmFuc2Zvcm0oZSl7Y29uc3QgdD1lWzBdKmVbM10tZVsxXSplWzJdO3JldHVybltlWzNdL3QsLWVbMV0vdCwtZVsyXS90LGVbMF0vdCwoZVsyXSplWzVdLWVbNF0qZVszXSkvdCwoZVs0XSplWzFdLWVbNV0qZVswXSkvdF19c3RhdGljIHNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGUpe2NvbnN0IHQ9W2VbMF0sZVsyXSxlWzFdLGVbM11dLGE9ZVswXSp0WzBdK2VbMV0qdFsyXSxyPWVbMF0qdFsxXStlWzFdKnRbM10saT1lWzJdKnRbMF0rZVszXSp0WzJdLG49ZVsyXSp0WzFdK2VbM10qdFszXSxzPShhK24pLzIsbz1NYXRoLnNxcnQoKGErbikqKjItNCooYSpuLWkqcikpLzIsYz1zK298fDEsbD1zLW98fDE7cmV0dXJuW01hdGguc3FydChjKSxNYXRoLnNxcnQobCldfXN0YXRpYyBub3JtYWxpemVSZWN0KGUpe2NvbnN0IHQ9ZS5zbGljZSgwKTtpZihlWzBdPmVbMl0pe3RbMF09ZVsyXTt0WzJdPWVbMF19aWYoZVsxXT5lWzNdKXt0WzFdPWVbM107dFszXT1lWzFdfXJldHVybiB0fXN0YXRpYyBpbnRlcnNlY3QoZSx0KXtjb25zdCBhPU1hdGgubWF4KE1hdGgubWluKGVbMF0sZVsyXSksTWF0aC5taW4odFswXSx0WzJdKSkscj1NYXRoLm1pbihNYXRoLm1heChlWzBdLGVbMl0pLE1hdGgubWF4KHRbMF0sdFsyXSkpO2lmKGE+cilyZXR1cm4gbnVsbDtjb25zdCBpPU1hdGgubWF4KE1hdGgubWluKGVbMV0sZVszXSksTWF0aC5taW4odFsxXSx0WzNdKSksbj1NYXRoLm1pbihNYXRoLm1heChlWzFdLGVbM10pLE1hdGgubWF4KHRbMV0sdFszXSkpO3JldHVybiBpPm4/bnVsbDpbYSxpLHIsbl19c3RhdGljIGJlemllckJvdW5kaW5nQm94KGUsdCxhLHIsaSxuLHMsbyl7Y29uc3QgYz1bXSxsPVtbXSxbXV07bGV0IGgsdSxkLGYsZyxwLG0sYjtmb3IobGV0IGw9MDtsPDI7KytsKXtpZigwPT09bCl7dT02KmUtMTIqYSs2Kmk7aD0tMyplKzkqYS05KmkrMypzO2Q9MyphLTMqZX1lbHNle3U9Nip0LTEyKnIrNipuO2g9LTMqdCs5KnItOSpuKzMqbztkPTMqci0zKnR9aWYoTWF0aC5hYnMoaCk8MWUtMTIpe2lmKE1hdGguYWJzKHUpPDFlLTEyKWNvbnRpbnVlO2Y9LWQvdTswPGYmJmY8MSYmYy5wdXNoKGYpfWVsc2V7bT11KnUtNCpkKmg7Yj1NYXRoLnNxcnQobSk7aWYoIShtPDApKXtnPSgtdStiKS8oMipoKTswPGcmJmc8MSYmYy5wdXNoKGcpO3A9KC11LWIpLygyKmgpOzA8cCYmcDwxJiZjLnB1c2gocCl9fX1sZXQgeSx3PWMubGVuZ3RoO2NvbnN0IFM9dztmb3IoO3ctLTspe2Y9Y1t3XTt5PTEtZjtsWzBdW3ddPXkqeSp5KmUrMyp5KnkqZiphKzMqeSpmKmYqaStmKmYqZipzO2xbMV1bd109eSp5KnkqdCszKnkqeSpmKnIrMyp5KmYqZipuK2YqZipmKm99bFswXVtTXT1lO2xbMV1bU109dDtsWzBdW1MrMV09cztsWzFdW1MrMV09bztsWzBdLmxlbmd0aD1sWzFdLmxlbmd0aD1TKzI7cmV0dXJuW01hdGgubWluKC4uLmxbMF0pLE1hdGgubWluKC4uLmxbMV0pLE1hdGgubWF4KC4uLmxbMF0pLE1hdGgubWF4KC4uLmxbMV0pXX19dC5VdGlsPVV0aWw7Y29uc3Qgcz1bMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzI4LDcxMSw3MTAsNzI5LDczMyw3MzEsNzMwLDczMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MjI2LDgyMjQsODIyNSw4MjMwLDgyMTIsODIxMSw0MDIsODI2MCw4MjQ5LDgyNTAsODcyMiw4MjQwLDgyMjIsODIyMCw4MjIxLDgyMTYsODIxNyw4MjE4LDg0ODIsNjQyNTcsNjQyNTgsMzIxLDMzOCwzNTIsMzc2LDM4MSwzMDUsMzIyLDMzOSwzNTMsMzgyLDAsODM2NF07ZnVuY3Rpb24gc3RyaW5nVG9VVEY4U3RyaW5nKGUpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGUpKX10LlByb21pc2VDYXBhYmlsaXR5PWNsYXNzIFByb21pc2VDYXBhYmlsaXR5eyNlPSExO2NvbnN0cnVjdG9yKCl7dGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKCgoZSx0KT0+e3RoaXMucmVzb2x2ZT10PT57dGhpcy4jZT0hMDtlKHQpfTt0aGlzLnJlamVjdD1lPT57dGhpcy4jZT0hMDt0KGUpfX0pKX1nZXQgc2V0dGxlZCgpe3JldHVybiB0aGlzLiNlfX07bGV0IG89bnVsbCxjPW51bGx9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YUmVmUGFyc2VFeGNlcHRpb249dC5YUmVmRW50cnlFeGNlcHRpb249dC5QYXJzZXJFT0ZFeGNlcHRpb249dC5QREZfVkVSU0lPTl9SRUdFWFA9dC5NaXNzaW5nRGF0YUV4Y2VwdGlvbj12b2lkIDA7dC5hcnJheUJ1ZmZlcnNUb0J5dGVzPWZ1bmN0aW9uIGFycmF5QnVmZmVyc1RvQnl0ZXMoZSl7Y29uc3QgdD1lLmxlbmd0aDtpZigwPT09dClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7aWYoMT09PXQpcmV0dXJuIG5ldyBVaW50OEFycmF5KGVbMF0pO2xldCBhPTA7Zm9yKGxldCByPTA7cjx0O3IrKylhKz1lW3JdLmJ5dGVMZW5ndGg7Y29uc3Qgcj1uZXcgVWludDhBcnJheShhKTtsZXQgaT0wO2ZvcihsZXQgYT0wO2E8dDthKyspe2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoZVthXSk7ci5zZXQodCxpKTtpKz10LmJ5dGVMZW5ndGh9cmV0dXJuIHJ9O3QuY29sbGVjdEFjdGlvbnM9ZnVuY3Rpb24gY29sbGVjdEFjdGlvbnMoZSx0LGEpe2NvbnN0IG49T2JqZWN0LmNyZWF0ZShudWxsKSxzPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkFBIixzdG9wV2hlbkZvdW5kOiExfSk7aWYocylmb3IobGV0IHQ9cy5sZW5ndGgtMTt0Pj0wO3QtLSl7Y29uc3Qgcj1zW3RdO2lmKHIgaW5zdGFuY2VvZiBpLkRpY3QpZm9yKGNvbnN0IHQgb2Ygci5nZXRLZXlzKCkpe2NvbnN0IHM9YVt0XTtpZighcyljb250aW51ZTtjb25zdCBvPVtdO19jb2xsZWN0SlMoci5nZXRSYXcodCksZSxvLG5ldyBpLlJlZlNldCk7by5sZW5ndGg+MCYmKG5bc109byl9fWlmKHQuaGFzKCJBIikpe2NvbnN0IGE9W107X2NvbGxlY3RKUyh0LmdldCgiQSIpLGUsYSxuZXcgaS5SZWZTZXQpO2EubGVuZ3RoPjAmJihuLkFjdGlvbj1hKX1yZXR1cm4oMCxyLm9iamVjdFNpemUpKG4pPjA/bjpudWxsfTt0LmVuY29kZVRvWG1sU3RyaW5nPWZ1bmN0aW9uIGVuY29kZVRvWG1sU3RyaW5nKGUpe2NvbnN0IHQ9W107bGV0IGE9MDtmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspe2NvbnN0IGk9ZS5jb2RlUG9pbnRBdChyKTtpZigzMjw9aSYmaTw9MTI2KXtjb25zdCBuPW9baV07aWYobil7YTxyJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxyKSk7dC5wdXNoKG4pO2E9cisxfX1lbHNle2E8ciYmdC5wdXNoKGUuc3Vic3RyaW5nKGEscikpO3QucHVzaChgJiN4JHtpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfTtgKTtpPjU1Mjk1JiYoaTw1NzM0NHx8aT42NTUzMykmJnIrKzthPXIrMX19aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2E8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhhLGUubGVuZ3RoKSk7cmV0dXJuIHQuam9pbigiIil9O3QuZXNjYXBlUERGTmFtZT1mdW5jdGlvbiBlc2NhcGVQREZOYW1lKGUpe2NvbnN0IHQ9W107bGV0IGE9MDtmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspe2NvbnN0IGk9ZS5jaGFyQ29kZUF0KHIpO2lmKGk8MzN8fGk+MTI2fHwzNT09PWl8fDQwPT09aXx8NDE9PT1pfHw2MD09PWl8fDYyPT09aXx8OTE9PT1pfHw5Mz09PWl8fDEyMz09PWl8fDEyNT09PWl8fDQ3PT09aXx8Mzc9PT1pKXthPHImJnQucHVzaChlLnN1YnN0cmluZyhhLHIpKTt0LnB1c2goYCMke2kudG9TdHJpbmcoMTYpfWApO2E9cisxfX1pZigwPT09dC5sZW5ndGgpcmV0dXJuIGU7YTxlLmxlbmd0aCYmdC5wdXNoKGUuc3Vic3RyaW5nKGEsZS5sZW5ndGgpKTtyZXR1cm4gdC5qb2luKCIiKX07dC5lc2NhcGVTdHJpbmc9ZnVuY3Rpb24gZXNjYXBlU3RyaW5nKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoLyhbKClcXFxuXHJdKS9nLChlPT4iXG4iPT09ZT8iXFxuIjoiXHIiPT09ZT8iXFxyIjpgXFwke2V9YCkpfTt0LmdldEluaGVyaXRhYmxlUHJvcGVydHk9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eTt0LmdldExvb2t1cFRhYmxlRmFjdG9yeT1mdW5jdGlvbiBnZXRMb29rdXBUYWJsZUZhY3RvcnkoZSl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoZSl7dD1PYmplY3QuY3JlYXRlKG51bGwpO2UodCk7ZT1udWxsfXJldHVybiB0fX07dC5nZXROZXdBbm5vdGF0aW9uc01hcD1mdW5jdGlvbiBnZXROZXdBbm5vdGF0aW9uc01hcChlKXtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBNYXA7Zm9yKGNvbnN0W2EsaV1vZiBlKXtpZighYS5zdGFydHNXaXRoKHIuQW5ub3RhdGlvbkVkaXRvclByZWZpeCkpY29udGludWU7bGV0IGU9dC5nZXQoaS5wYWdlSW5kZXgpO2lmKCFlKXtlPVtdO3Quc2V0KGkucGFnZUluZGV4LGUpfWUucHVzaChpKX1yZXR1cm4gdC5zaXplPjA/dDpudWxsfTt0LmdldFJvdGF0aW9uTWF0cml4PWZ1bmN0aW9uIGdldFJvdGF0aW9uTWF0cml4KGUsdCxhKXtzd2l0Y2goZSl7Y2FzZSA5MDpyZXR1cm5bMCwxLC0xLDAsdCwwXTtjYXNlIDE4MDpyZXR1cm5bLTEsMCwwLC0xLHQsYV07Y2FzZSAyNzA6cmV0dXJuWzAsLTEsMSwwLDAsYV07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX19O3QuaXNBc2NpaT1mdW5jdGlvbiBpc0FzY2lpKGUpe3JldHVybi9eW1x4MDAtXHg3Rl0qJC8udGVzdChlKX07dC5pc1doaXRlU3BhY2U9ZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGUpe3JldHVybiAzMj09PWV8fDk9PT1lfHwxMz09PWV8fDEwPT09ZX07dC5sb2cyPWZ1bmN0aW9uIGxvZzIoZSl7aWYoZTw9MClyZXR1cm4gMDtyZXR1cm4gTWF0aC5jZWlsKE1hdGgubG9nMihlKSl9O3QubnVtYmVyVG9TdHJpbmc9ZnVuY3Rpb24gbnVtYmVyVG9TdHJpbmcoZSl7aWYoTnVtYmVyLmlzSW50ZWdlcihlKSlyZXR1cm4gZS50b1N0cmluZygpO2NvbnN0IHQ9TWF0aC5yb3VuZCgxMDAqZSk7aWYodCUxMDA9PTApcmV0dXJuKHQvMTAwKS50b1N0cmluZygpO2lmKHQlMTA9PTApcmV0dXJuIGUudG9GaXhlZCgxKTtyZXR1cm4gZS50b0ZpeGVkKDIpfTt0LnBhcnNlWEZBUGF0aD1mdW5jdGlvbiBwYXJzZVhGQVBhdGgoZSl7Y29uc3QgdD0vKC4rKVxbKFxkKylcXSQvO3JldHVybiBlLnNwbGl0KCIuIikubWFwKChlPT57Y29uc3QgYT1lLm1hdGNoKHQpO3JldHVybiBhP3tuYW1lOmFbMV0scG9zOnBhcnNlSW50KGFbMl0sMTApfTp7bmFtZTplLHBvczowfX0pKX07dC5yZWFkSW50OD1mdW5jdGlvbiByZWFkSW50OChlLHQpe3JldHVybiBlW3RdPDwyND4+MjR9O3QucmVhZFVpbnQxNj1mdW5jdGlvbiByZWFkVWludDE2KGUsdCl7cmV0dXJuIGVbdF08PDh8ZVt0KzFdfTt0LnJlYWRVaW50MzI9ZnVuY3Rpb24gcmVhZFVpbnQzMihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM10pPj4+MH07dC5yZWNvdmVySnNVUkw9ZnVuY3Rpb24gcmVjb3ZlckpzVVJMKGUpe2NvbnN0IHQ9bmV3IFJlZ0V4cCgiXlxccyooIitbImFwcC5sYXVuY2hVUkwiLCJ3aW5kb3cub3BlbiIsInhmYS5ob3N0LmdvdG9VUkwiXS5qb2luKCJ8IikucmVwbGFjZUFsbCgiLiIsIlxcLiIpKyIpXFwoKD86J3xcIikoW14nXCJdKikoPzonfFwiKSg/OixcXHMqKFxcdyspXFwpfFxcKSkiLCJpIikuZXhlYyhlKTtpZih0Py5bMl0pe2NvbnN0IGU9dFsyXTtsZXQgYT0hMTsidHJ1ZSI9PT10WzNdJiYiYXBwLmxhdW5jaFVSTCI9PT10WzFdJiYoYT0hMCk7cmV0dXJue3VybDplLG5ld1dpbmRvdzphfX1yZXR1cm4gbnVsbH07dC5zdHJpbmdUb1VURjE2SGV4U3RyaW5nPWZ1bmN0aW9uIHN0cmluZ1RvVVRGMTZIZXhTdHJpbmcoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KGEpO3QucHVzaCgocj4+OCYyNTUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIiksKDI1NSZyKS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKX1yZXR1cm4gdC5qb2luKCIiKX07dC5zdHJpbmdUb1VURjE2U3RyaW5nPWZ1bmN0aW9uIHN0cmluZ1RvVVRGMTZTdHJpbmcoZSx0PSExKXtjb25zdCBhPVtdO3QmJmEucHVzaCgiw77DvyIpO2ZvcihsZXQgdD0wLHI9ZS5sZW5ndGg7dDxyO3QrKyl7Y29uc3Qgcj1lLmNoYXJDb2RlQXQodCk7YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUocj4+OCYyNTUpLFN0cmluZy5mcm9tQ2hhckNvZGUoMjU1JnIpKX1yZXR1cm4gYS5qb2luKCIiKX07dC50b1JvbWFuTnVtZXJhbHM9ZnVuY3Rpb24gdG9Sb21hbk51bWVyYWxzKGUsdD0hMSl7KDAsci5hc3NlcnQpKE51bWJlci5pc0ludGVnZXIoZSkmJmU+MCwiVGhlIG51bWJlciBzaG91bGQgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLiIpO2NvbnN0IGE9W107bGV0IGk7Zm9yKDtlPj0xZTM7KXtlLT0xZTM7YS5wdXNoKCJNIil9aT1lLzEwMHwwO2UlPTEwMDthLnB1c2goc1tpXSk7aT1lLzEwfDA7ZSU9MTA7YS5wdXNoKHNbMTAraV0pO2EucHVzaChzWzIwK2VdKTtjb25zdCBuPWEuam9pbigiIik7cmV0dXJuIHQ/bi50b0xvd2VyQ2FzZSgpOm59O3QudmFsaWRhdGVDU1NGb250PWZ1bmN0aW9uIHZhbGlkYXRlQ1NTRm9udChlKXtjb25zdCB0PW5ldyBTZXQoWyIxMDAiLCIyMDAiLCIzMDAiLCI0MDAiLCI1MDAiLCI2MDAiLCI3MDAiLCI4MDAiLCI5MDAiLCIxMDAwIiwibm9ybWFsIiwiYm9sZCIsImJvbGRlciIsImxpZ2h0ZXIiXSkse2ZvbnRGYW1pbHk6YSxmb250V2VpZ2h0OnIsaXRhbGljQW5nbGU6aX09ZTtpZighdmFsaWRhdGVGb250TmFtZShhLCEwKSlyZXR1cm4hMTtjb25zdCBuPXI/ci50b1N0cmluZygpOiIiO2UuZm9udFdlaWdodD10LmhhcyhuKT9uOiI0MDAiO2NvbnN0IHM9cGFyc2VGbG9hdChpKTtlLml0YWxpY0FuZ2xlPWlzTmFOKHMpfHxzPC05MHx8cz45MD8iMTQiOmkudG9TdHJpbmcoKTtyZXR1cm4hMH07dC52YWxpZGF0ZUZvbnROYW1lPXZhbGlkYXRlRm9udE5hbWU7dmFyIHI9YSgyKSxpPWEoNCksbj1hKDUpO3QuUERGX1ZFUlNJT05fUkVHRVhQPS9eWzEtOV1cLlxkJC87Y2xhc3MgTWlzc2luZ0RhdGFFeGNlcHRpb24gZXh0ZW5kcyByLkJhc2VFeGNlcHRpb257Y29uc3RydWN0b3IoZSx0KXtzdXBlcihgTWlzc2luZyBkYXRhIFske2V9LCAke3R9KWAsIk1pc3NpbmdEYXRhRXhjZXB0aW9uIik7dGhpcy5iZWdpbj1lO3RoaXMuZW5kPXR9fXQuTWlzc2luZ0RhdGFFeGNlcHRpb249TWlzc2luZ0RhdGFFeGNlcHRpb247Y2xhc3MgUGFyc2VyRU9GRXhjZXB0aW9uIGV4dGVuZHMgci5CYXNlRXhjZXB0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIlBhcnNlckVPRkV4Y2VwdGlvbiIpfX10LlBhcnNlckVPRkV4Y2VwdGlvbj1QYXJzZXJFT0ZFeGNlcHRpb247Y2xhc3MgWFJlZkVudHJ5RXhjZXB0aW9uIGV4dGVuZHMgci5CYXNlRXhjZXB0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIlhSZWZFbnRyeUV4Y2VwdGlvbiIpfX10LlhSZWZFbnRyeUV4Y2VwdGlvbj1YUmVmRW50cnlFeGNlcHRpb247Y2xhc3MgWFJlZlBhcnNlRXhjZXB0aW9uIGV4dGVuZHMgci5CYXNlRXhjZXB0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIlhSZWZQYXJzZUV4Y2VwdGlvbiIpfX10LlhSZWZQYXJzZUV4Y2VwdGlvbj1YUmVmUGFyc2VFeGNlcHRpb247ZnVuY3Rpb24gZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDplLGtleTp0LGdldEFycmF5OmE9ITEsc3RvcFdoZW5Gb3VuZDpyPSEwfSl7bGV0IG47Y29uc3Qgcz1uZXcgaS5SZWZTZXQ7Zm9yKDtlIGluc3RhbmNlb2YgaS5EaWN0JiYoIWUub2JqSWR8fCFzLmhhcyhlLm9iaklkKSk7KXtlLm9iaklkJiZzLnB1dChlLm9iaklkKTtjb25zdCBpPWE/ZS5nZXRBcnJheSh0KTplLmdldCh0KTtpZih2b2lkIDAhPT1pKXtpZihyKXJldHVybiBpOyhufHw9W10pLnB1c2goaSl9ZT1lLmdldCgiUGFyZW50Iil9cmV0dXJuIG59Y29uc3Qgcz1bIiIsIkMiLCJDQyIsIkNDQyIsIkNEIiwiRCIsIkRDIiwiRENDIiwiRENDQyIsIkNNIiwiIiwiWCIsIlhYIiwiWFhYIiwiWEwiLCJMIiwiTFgiLCJMWFgiLCJMWFhYIiwiWEMiLCIiLCJJIiwiSUkiLCJJSUkiLCJJViIsIlYiLCJWSSIsIlZJSSIsIlZJSUkiLCJJWCJdO2Z1bmN0aW9uIF9jb2xsZWN0SlMoZSx0LGEscyl7aWYoIWUpcmV0dXJuO2xldCBvPW51bGw7aWYoZSBpbnN0YW5jZW9mIGkuUmVmKXtpZihzLmhhcyhlKSlyZXR1cm47bz1lO3MucHV0KG8pO2U9dC5mZXRjaChlKX1pZihBcnJheS5pc0FycmF5KGUpKWZvcihjb25zdCByIG9mIGUpX2NvbGxlY3RKUyhyLHQsYSxzKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBpLkRpY3Qpe2lmKCgwLGkuaXNOYW1lKShlLmdldCgiUyIpLCJKYXZhU2NyaXB0Iikpe2NvbnN0IHQ9ZS5nZXQoIkpTIik7bGV0IGk7dCBpbnN0YW5jZW9mIG4uQmFzZVN0cmVhbT9pPXQuZ2V0U3RyaW5nKCk6InN0cmluZyI9PXR5cGVvZiB0JiYoaT10KTtpJiY9KDAsci5zdHJpbmdUb1BERlN0cmluZykoaSkucmVwbGFjZUFsbCgiXDAiLCIiKTtpJiZhLnB1c2goaSl9X2NvbGxlY3RKUyhlLmdldFJhdygiTmV4dCIpLHQsYSxzKX1vJiZzLnJlbW92ZShvKX1jb25zdCBvPXs2MDoiJmx0OyIsNjI6IiZndDsiLDM4OiImYW1wOyIsMzQ6IiZxdW90OyIsMzk6IiZhcG9zOyJ9O2Z1bmN0aW9uIHZhbGlkYXRlRm9udE5hbWUoZSx0PSExKXtjb25zdCBhPS9eKCJ8JykuKigifCcpJC8uZXhlYyhlKTtpZihhJiZhWzFdPT09YVsyXSl7aWYobmV3IFJlZ0V4cChgW15cXFxcXSR7YVsxXX1gKS50ZXN0KGUuc2xpY2UoMSwtMSkpKXt0JiYoMCxyLndhcm4pKGBGb250RmFtaWx5IGNvbnRhaW5zIHVuZXNjYXBlZCAke2FbMV19OiAke2V9LmApO3JldHVybiExfX1lbHNlIGZvcihjb25zdCBhIG9mIGUuc3BsaXQoL1sgXHRdKy8pKWlmKC9eKFxkfCgtKFxkfC0pKSkvLnRlc3QoYSl8fCEvXltcdy1cXF0rJC8udGVzdChhKSl7dCYmKDAsci53YXJuKShgRm9udEZhbWlseSBjb250YWlucyBpbnZhbGlkIDxjdXN0b20taWRlbnQ+OiAke2V9LmApO3JldHVybiExfXJldHVybiEwfX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlJlZlNldENhY2hlPXQuUmVmU2V0PXQuUmVmPXQuTmFtZT10LkVPRj10LkRpY3Q9dC5DbWQ9dC5DSVJDVUxBUl9SRUY9dm9pZCAwO3QuY2xlYXJQcmltaXRpdmVDYWNoZXM9ZnVuY3Rpb24gY2xlYXJQcmltaXRpdmVDYWNoZXMoKXtzPU9iamVjdC5jcmVhdGUobnVsbCk7bz1PYmplY3QuY3JlYXRlKG51bGwpO2M9T2JqZWN0LmNyZWF0ZShudWxsKX07dC5pc0NtZD1mdW5jdGlvbiBpc0NtZChlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgQ21kJiYodm9pZCAwPT09dHx8ZS5jbWQ9PT10KX07dC5pc0RpY3Q9ZnVuY3Rpb24gaXNEaWN0KGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBEaWN0JiYodm9pZCAwPT09dHx8aXNOYW1lKGUuZ2V0KCJUeXBlIiksdCkpfTt0LmlzTmFtZT1pc05hbWU7dC5pc1JlZnNFcXVhbD1mdW5jdGlvbiBpc1JlZnNFcXVhbChlLHQpe3JldHVybiBlLm51bT09PXQubnVtJiZlLmdlbj09PXQuZ2VufTt2YXIgcj1hKDIpO2NvbnN0IGk9U3ltYm9sKCJDSVJDVUxBUl9SRUYiKTt0LkNJUkNVTEFSX1JFRj1pO2NvbnN0IG49U3ltYm9sKCJFT0YiKTt0LkVPRj1uO2xldCBzPU9iamVjdC5jcmVhdGUobnVsbCksbz1PYmplY3QuY3JlYXRlKG51bGwpLGM9T2JqZWN0LmNyZWF0ZShudWxsKTtjbGFzcyBOYW1le2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZT1lfXN0YXRpYyBnZXQoZSl7cmV0dXJuIG9bZV18fD1uZXcgTmFtZShlKX19dC5OYW1lPU5hbWU7Y2xhc3MgQ21ke2NvbnN0cnVjdG9yKGUpe3RoaXMuY21kPWV9c3RhdGljIGdldChlKXtyZXR1cm4gc1tlXXx8PW5ldyBDbWQoZSl9fXQuQ21kPUNtZDtjb25zdCBsPWZ1bmN0aW9uIG5vblNlcmlhbGl6YWJsZUNsb3N1cmUoKXtyZXR1cm4gbH07Y2xhc3MgRGljdHtjb25zdHJ1Y3RvcihlPW51bGwpe3RoaXMuX21hcD1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMueHJlZj1lO3RoaXMub2JqSWQ9bnVsbDt0aGlzLnN1cHByZXNzRW5jcnlwdGlvbj0hMTt0aGlzLl9fbm9uU2VyaWFsaXphYmxlX189bH1hc3NpZ25YcmVmKGUpe3RoaXMueHJlZj1lfWdldCBzaXplKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX21hcCkubGVuZ3RofWdldChlLHQsYSl7bGV0IHI9dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PXImJnZvaWQgMCE9PXQpe3I9dGhpcy5fbWFwW3RdO3ZvaWQgMD09PXImJnZvaWQgMCE9PWEmJihyPXRoaXMuX21hcFthXSl9cmV0dXJuIHIgaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2gocix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6cn1hc3luYyBnZXRBc3luYyhlLHQsYSl7bGV0IHI9dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PXImJnZvaWQgMCE9PXQpe3I9dGhpcy5fbWFwW3RdO3ZvaWQgMD09PXImJnZvaWQgMCE9PWEmJihyPXRoaXMuX21hcFthXSl9cmV0dXJuIHIgaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2hBc3luYyhyLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKTpyfWdldEFycmF5KGUsdCxhKXtsZXQgcj10aGlzLl9tYXBbZV07aWYodm9pZCAwPT09ciYmdm9pZCAwIT09dCl7cj10aGlzLl9tYXBbdF07dm9pZCAwPT09ciYmdm9pZCAwIT09YSYmKHI9dGhpcy5fbWFwW2FdKX1yIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWYmJihyPXRoaXMueHJlZi5mZXRjaChyLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKSk7aWYoQXJyYXkuaXNBcnJheShyKSl7cj1yLnNsaWNlKCk7Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKXJbZV1pbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmJiYocltlXT10aGlzLnhyZWYuZmV0Y2gocltlXSx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbikpfXJldHVybiByfWdldFJhdyhlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWdldEtleXMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbWFwKX1nZXRSYXdWYWx1ZXMoKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9tYXApfXNldChlLHQpe3RoaXMuX21hcFtlXT10fWhhcyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLmdldCh0KSl9c3RhdGljIGdldCBlbXB0eSgpe2NvbnN0IGU9bmV3IERpY3QobnVsbCk7ZS5zZXQ9KGUsdCk9PnsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIGBzZXRgIG9uIHRoZSBlbXB0eSBkaWN0aW9uYXJ5LiIpfTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZW1wdHkiLGUpfXN0YXRpYyBtZXJnZSh7eHJlZjplLGRpY3RBcnJheTp0LG1lcmdlU3ViRGljdHM6YT0hMX0pe2NvbnN0IHI9bmV3IERpY3QoZSksaT1uZXcgTWFwO2Zvcihjb25zdCBlIG9mIHQpaWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W3Qscl1vZiBPYmplY3QuZW50cmllcyhlLl9tYXApKXtsZXQgZT1pLmdldCh0KTtpZih2b2lkIDA9PT1lKXtlPVtdO2kuc2V0KHQsZSl9ZWxzZSBpZighKGEmJnIgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLnB1c2gocil9Zm9yKGNvbnN0W3QsYV1vZiBpKXtpZigxPT09YS5sZW5ndGh8fCEoYVswXWluc3RhbmNlb2YgRGljdCkpe3IuX21hcFt0XT1hWzBdO2NvbnRpbnVlfWNvbnN0IGk9bmV3IERpY3QoZSk7Zm9yKGNvbnN0IGUgb2YgYSlmb3IoY29uc3RbdCxhXW9mIE9iamVjdC5lbnRyaWVzKGUuX21hcCkpdm9pZCAwPT09aS5fbWFwW3RdJiYoaS5fbWFwW3RdPWEpO2kuc2l6ZT4wJiYoci5fbWFwW3RdPWkpfWkuY2xlYXIoKTtyZXR1cm4gci5zaXplPjA/cjpEaWN0LmVtcHR5fX10LkRpY3Q9RGljdDtjbGFzcyBSZWZ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm51bT1lO3RoaXMuZ2VuPXR9dG9TdHJpbmcoKXtyZXR1cm4gMD09PXRoaXMuZ2VuP2Ake3RoaXMubnVtfVJgOmAke3RoaXMubnVtfVIke3RoaXMuZ2VufWB9c3RhdGljIGdldChlLHQpe2NvbnN0IGE9MD09PXQ/YCR7ZX1SYDpgJHtlfVIke3R9YDtyZXR1cm4gY1thXXx8PW5ldyBSZWYoZSx0KX19dC5SZWY9UmVmO2NsYXNzIFJlZlNldHtjb25zdHJ1Y3RvcihlPW51bGwpe3RoaXMuX3NldD1uZXcgU2V0KGU/Ll9zZXQpfWhhcyhlKXtyZXR1cm4gdGhpcy5fc2V0LmhhcyhlLnRvU3RyaW5nKCkpfXB1dChlKXt0aGlzLl9zZXQuYWRkKGUudG9TdHJpbmcoKSl9cmVtb3ZlKGUpe3RoaXMuX3NldC5kZWxldGUoZS50b1N0cmluZygpKX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzLl9zZXQudmFsdWVzKCl9Y2xlYXIoKXt0aGlzLl9zZXQuY2xlYXIoKX19dC5SZWZTZXQ9UmVmU2V0O2NsYXNzIFJlZlNldENhY2hle2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBNYXB9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fbWFwLnNpemV9Z2V0KGUpe3JldHVybiB0aGlzLl9tYXAuZ2V0KGUudG9TdHJpbmcoKSl9aGFzKGUpe3JldHVybiB0aGlzLl9tYXAuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUsdCl7dGhpcy5fbWFwLnNldChlLnRvU3RyaW5nKCksdCl9cHV0QWxpYXMoZSx0KXt0aGlzLl9tYXAuc2V0KGUudG9TdHJpbmcoKSx0aGlzLmdldCh0KSl9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gdGhpcy5fbWFwLnZhbHVlcygpfWNsZWFyKCl7dGhpcy5fbWFwLmNsZWFyKCl9fXQuUmVmU2V0Q2FjaGU9UmVmU2V0Q2FjaGU7ZnVuY3Rpb24gaXNOYW1lKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBOYW1lJiYodm9pZCAwPT09dHx8ZS5uYW1lPT09dCl9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQmFzZVN0cmVhbT12b2lkIDA7dmFyIHI9YSgyKTtjbGFzcyBCYXNlU3RyZWFte2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VTdHJlYW0mJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlU3RyZWFtLiIpfWdldCBsZW5ndGgoKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgZ2V0dGVyIGBsZW5ndGhgIGFjY2Vzc2VkIil9Z2V0IGlzRW1wdHkoKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgZ2V0dGVyIGBpc0VtcHR5YCBhY2Nlc3NlZCIpfWdldCBpc0RhdGFMb2FkZWQoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiaXNEYXRhTG9hZGVkIiwhMCl9Z2V0Qnl0ZSgpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVgIGNhbGxlZCIpfWdldEJ5dGVzKGUpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVzYCBjYWxsZWQiKX1wZWVrQnl0ZSgpe2NvbnN0IGU9dGhpcy5nZXRCeXRlKCk7LTEhPT1lJiZ0aGlzLnBvcy0tO3JldHVybiBlfXBlZWtCeXRlcyhlKXtjb25zdCB0PXRoaXMuZ2V0Qnl0ZXMoZSk7dGhpcy5wb3MtPXQubGVuZ3RoO3JldHVybiB0fWdldFVpbnQxNigpe2NvbnN0IGU9dGhpcy5nZXRCeXRlKCksdD10aGlzLmdldEJ5dGUoKTtyZXR1cm4tMT09PWV8fC0xPT09dD8tMTooZTw8OCkrdH1nZXRJbnQzMigpe3JldHVybih0aGlzLmdldEJ5dGUoKTw8MjQpKyh0aGlzLmdldEJ5dGUoKTw8MTYpKyh0aGlzLmdldEJ5dGUoKTw8OCkrdGhpcy5nZXRCeXRlKCl9Z2V0Qnl0ZVJhbmdlKGUsdCl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZVJhbmdlYCBjYWxsZWQiKX1nZXRTdHJpbmcoZSl7cmV0dXJuKDAsci5ieXRlc1RvU3RyaW5nKSh0aGlzLmdldEJ5dGVzKGUpKX1za2lwKGUpe3RoaXMucG9zKz1lfHwxfXJlc2V0KCl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgcmVzZXRgIGNhbGxlZCIpfW1vdmVTdGFydCgpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYG1vdmVTdGFydGAgY2FsbGVkIil9bWFrZVN1YlN0cmVhbShlLHQsYT1udWxsKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBtYWtlU3ViU3RyZWFtYCBjYWxsZWQiKX1nZXRCYXNlU3RyZWFtcygpe3JldHVybiBudWxsfX10LkJhc2VTdHJlYW09QmFzZVN0cmVhbX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk5ldHdvcmtQZGZNYW5hZ2VyPXQuTG9jYWxQZGZNYW5hZ2VyPXZvaWQgMDt2YXIgcj1hKDIpLGk9YSg3KSxuPWEoMykscz1hKDkpLG89YSg4KTtjbGFzcyBCYXNlUGRmTWFuYWdlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZVBkZk1hbmFnZXImJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlUGRmTWFuYWdlci4iKTt0aGlzLl9kb2NCYXNlVXJsPWZ1bmN0aW9uIHBhcnNlRG9jQmFzZVVybChlKXtpZihlKXtjb25zdCB0PSgwLHIuY3JlYXRlVmFsaWRBYnNvbHV0ZVVybCkoZSk7aWYodClyZXR1cm4gdC5ocmVmOygwLHIud2FybikoYEludmFsaWQgYWJzb2x1dGUgZG9jQmFzZVVybDogIiR7ZX0iLmApfXJldHVybiBudWxsfShlLmRvY0Jhc2VVcmwpO3RoaXMuX2RvY0lkPWUuZG9jSWQ7dGhpcy5fcGFzc3dvcmQ9ZS5wYXNzd29yZDt0aGlzLmVuYWJsZVhmYT1lLmVuYWJsZVhmYTtlLmV2YWx1YXRvck9wdGlvbnMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQmJj1yLkZlYXR1cmVUZXN0LmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkO3RoaXMuZXZhbHVhdG9yT3B0aW9ucz1lLmV2YWx1YXRvck9wdGlvbnN9Z2V0IGRvY0lkKCl7cmV0dXJuIHRoaXMuX2RvY0lkfWdldCBwYXNzd29yZCgpe3JldHVybiB0aGlzLl9wYXNzd29yZH1nZXQgZG9jQmFzZVVybCgpe2NvbnN0IGU9dGhpcy5wZGZEb2N1bWVudC5jYXRhbG9nO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJkb2NCYXNlVXJsIixlLmJhc2VVcmx8fHRoaXMuX2RvY0Jhc2VVcmwpfWVuc3VyZURvYyhlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LGUsdCl9ZW5zdXJlWFJlZihlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LnhyZWYsZSx0KX1lbnN1cmVDYXRhbG9nKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQuY2F0YWxvZyxlLHQpfWdldFBhZ2UoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuZ2V0UGFnZShlKX1mb250RmFsbGJhY2soZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5mb250RmFsbGJhY2soZSx0KX1sb2FkWGZhRm9udHMoZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5sb2FkWGZhRm9udHMoZSx0KX1sb2FkWGZhSW1hZ2VzKCl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQubG9hZFhmYUltYWdlcygpfXNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuc2VyaWFsaXplWGZhRGF0YShlKX1jbGVhbnVwKGU9ITEpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmNsZWFudXAoZSl9YXN5bmMgZW5zdXJlKGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBlbnN1cmVgIGNhbGxlZCIpfXJlcXVlc3RSYW5nZShlLHQpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHJlcXVlc3RSYW5nZWAgY2FsbGVkIil9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGByZXF1ZXN0TG9hZGVkU3RyZWFtYCBjYWxsZWQiKX1zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHNlbmRQcm9ncmVzc2l2ZURhdGFgIGNhbGxlZCIpfXVwZGF0ZVBhc3N3b3JkKGUpe3RoaXMuX3Bhc3N3b3JkPWV9dGVybWluYXRlKGUpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHRlcm1pbmF0ZWAgY2FsbGVkIil9fXQuTG9jYWxQZGZNYW5hZ2VyPWNsYXNzIExvY2FsUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9bmV3IG8uU3RyZWFtKGUuc291cmNlKTt0aGlzLnBkZkRvY3VtZW50PW5ldyBzLlBERkRvY3VtZW50KHRoaXMsdCk7dGhpcy5fbG9hZGVkU3RyZWFtUHJvbWlzZT1Qcm9taXNlLnJlc29sdmUodCl9YXN5bmMgZW5zdXJlKGUsdCxhKXtjb25zdCByPWVbdF07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHI/ci5hcHBseShlLGEpOnJ9cmVxdWVzdFJhbmdlKGUsdCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfXJlcXVlc3RMb2FkZWRTdHJlYW0oZT0hMSl7cmV0dXJuIHRoaXMuX2xvYWRlZFN0cmVhbVByb21pc2V9dGVybWluYXRlKGUpe319O3QuTmV0d29ya1BkZk1hbmFnZXI9Y2xhc3MgTmV0d29ya1BkZk1hbmFnZXIgZXh0ZW5kcyBCYXNlUGRmTWFuYWdlcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLnN0cmVhbU1hbmFnZXI9bmV3IGkuQ2h1bmtlZFN0cmVhbU1hbmFnZXIoZS5zb3VyY2Use21zZ0hhbmRsZXI6ZS5oYW5kbGVyLGxlbmd0aDplLmxlbmd0aCxkaXNhYmxlQXV0b0ZldGNoOmUuZGlzYWJsZUF1dG9GZXRjaCxyYW5nZUNodW5rU2l6ZTplLnJhbmdlQ2h1bmtTaXplfSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgcy5QREZEb2N1bWVudCh0aGlzLHRoaXMuc3RyZWFtTWFuYWdlci5nZXRTdHJlYW0oKSl9YXN5bmMgZW5zdXJlKGUsdCxhKXt0cnl7Y29uc3Qgcj1lW3RdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByP3IuYXBwbHkoZSxhKTpyfWNhdGNoKHIpe2lmKCEociBpbnN0YW5jZW9mIG4uTWlzc2luZ0RhdGFFeGNlcHRpb24pKXRocm93IHI7YXdhaXQgdGhpcy5yZXF1ZXN0UmFuZ2Uoci5iZWdpbixyLmVuZCk7cmV0dXJuIHRoaXMuZW5zdXJlKGUsdCxhKX19cmVxdWVzdFJhbmdlKGUsdCl7cmV0dXJuIHRoaXMuc3RyZWFtTWFuYWdlci5yZXF1ZXN0UmFuZ2UoZSx0KX1yZXF1ZXN0TG9hZGVkU3RyZWFtKGU9ITEpe3JldHVybiB0aGlzLnN0cmVhbU1hbmFnZXIucmVxdWVzdEFsbENodW5rcyhlKX1zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpe3RoaXMuc3RyZWFtTWFuYWdlci5vblJlY2VpdmVEYXRhKHtjaHVuazplfSl9dGVybWluYXRlKGUpe3RoaXMuc3RyZWFtTWFuYWdlci5hYm9ydChlKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ2h1bmtlZFN0cmVhbU1hbmFnZXI9dC5DaHVua2VkU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDMpLGk9YSgyKSxuPWEoOCk7Y2xhc3MgQ2h1bmtlZFN0cmVhbSBleHRlbmRzIG4uU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcihuZXcgVWludDhBcnJheShlKSwwLGUsbnVsbCk7dGhpcy5jaHVua1NpemU9dDt0aGlzLl9sb2FkZWRDaHVua3M9bmV3IFNldDt0aGlzLm51bUNodW5rcz1NYXRoLmNlaWwoZS90KTt0aGlzLm1hbmFnZXI9YTt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD0wO3RoaXMubGFzdFN1Y2Nlc3NmdWxFbnN1cmVCeXRlQ2h1bms9LTF9Z2V0TWlzc2luZ0NodW5rcygpe2NvbnN0IGU9W107Zm9yKGxldCB0PTAsYT10aGlzLm51bUNodW5rczt0PGE7Kyt0KXRoaXMuX2xvYWRlZENodW5rcy5oYXModCl8fGUucHVzaCh0KTtyZXR1cm4gZX1nZXQgbnVtQ2h1bmtzTG9hZGVkKCl7cmV0dXJuIHRoaXMuX2xvYWRlZENodW5rcy5zaXplfWdldCBpc0RhdGFMb2FkZWQoKXtyZXR1cm4gdGhpcy5udW1DaHVua3NMb2FkZWQ9PT10aGlzLm51bUNodW5rc31vblJlY2VpdmVEYXRhKGUsdCl7Y29uc3QgYT10aGlzLmNodW5rU2l6ZTtpZihlJWEhPTApdGhyb3cgbmV3IEVycm9yKGBCYWQgYmVnaW4gb2Zmc2V0OiAke2V9YCk7Y29uc3Qgcj1lK3QuYnl0ZUxlbmd0aDtpZihyJWEhPTAmJnIhPT10aGlzLmJ5dGVzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYEJhZCBlbmQgb2Zmc2V0OiAke3J9YCk7dGhpcy5ieXRlcy5zZXQobmV3IFVpbnQ4QXJyYXkodCksZSk7Y29uc3QgaT1NYXRoLmZsb29yKGUvYSksbj1NYXRoLmZsb29yKChyLTEpL2EpKzE7Zm9yKGxldCBlPWk7ZTxuOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuYWRkKGUpfW9uUmVjZWl2ZVByb2dyZXNzaXZlRGF0YShlKXtsZXQgdD10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aDtjb25zdCBhPU1hdGguZmxvb3IodC90aGlzLmNodW5rU2l6ZSk7dGhpcy5ieXRlcy5zZXQobmV3IFVpbnQ4QXJyYXkoZSksdCk7dCs9ZS5ieXRlTGVuZ3RoO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPXQ7Y29uc3Qgcj10Pj10aGlzLmVuZD90aGlzLm51bUNodW5rczpNYXRoLmZsb29yKHQvdGhpcy5jaHVua1NpemUpO2ZvcihsZXQgZT1hO2U8cjsrK2UpdGhpcy5fbG9hZGVkQ2h1bmtzLmFkZChlKX1lbnN1cmVCeXRlKGUpe2lmKGU8dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgpcmV0dXJuO2NvbnN0IHQ9TWF0aC5mbG9vcihlL3RoaXMuY2h1bmtTaXplKTtpZighKHQ+dGhpcy5udW1DaHVua3MpJiZ0IT09dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuayl7aWYoIXRoaXMuX2xvYWRlZENodW5rcy5oYXModCkpdGhyb3cgbmV3IHIuTWlzc2luZ0RhdGFFeGNlcHRpb24oZSxlKzEpO3RoaXMubGFzdFN1Y2Nlc3NmdWxFbnN1cmVCeXRlQ2h1bms9dH19ZW5zdXJlUmFuZ2UoZSx0KXtpZihlPj10KXJldHVybjtpZih0PD10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgYT1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKGE+dGhpcy5udW1DaHVua3MpcmV0dXJuO2NvbnN0IGk9TWF0aC5taW4oTWF0aC5mbG9vcigodC0xKS90aGlzLmNodW5rU2l6ZSkrMSx0aGlzLm51bUNodW5rcyk7Zm9yKGxldCBuPWE7bjxpOysrbilpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhuKSl0aHJvdyBuZXcgci5NaXNzaW5nRGF0YUV4Y2VwdGlvbihlLHQpfW5leHRFbXB0eUNodW5rKGUpe2NvbnN0IHQ9dGhpcy5udW1DaHVua3M7Zm9yKGxldCBhPTA7YTx0OysrYSl7Y29uc3Qgcj0oZSthKSV0O2lmKCF0aGlzLl9sb2FkZWRDaHVua3MuaGFzKHIpKXJldHVybiByfXJldHVybiBudWxsfWhhc0NodW5rKGUpe3JldHVybiB0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGUpfWdldEJ5dGUoKXtjb25zdCBlPXRoaXMucG9zO2lmKGU+PXRoaXMuZW5kKXJldHVybi0xO2U+PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZUJ5dGUoZSk7cmV0dXJuIHRoaXMuYnl0ZXNbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSl7Y29uc3QgdD10aGlzLmJ5dGVzLGE9dGhpcy5wb3Mscj10aGlzLmVuZDtpZighZSl7cj50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShhLHIpO3JldHVybiB0LnN1YmFycmF5KGEscil9bGV0IGk9YStlO2k+ciYmKGk9cik7aT50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShhLGkpO3RoaXMucG9zPWk7cmV0dXJuIHQuc3ViYXJyYXkoYSxpKX1nZXRCeXRlUmFuZ2UoZSx0KXtlPDAmJihlPTApO3Q+dGhpcy5lbmQmJih0PXRoaXMuZW5kKTt0PnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGUsdCk7cmV0dXJuIHRoaXMuYnl0ZXMuc3ViYXJyYXkoZSx0KX1tYWtlU3ViU3RyZWFtKGUsdCxhPW51bGwpe3Q/ZSt0PnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGUsZSt0KTplPj10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVCeXRlKGUpO2Z1bmN0aW9uIENodW5rZWRTdHJlYW1TdWJzdHJlYW0oKXt9Q2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0aGlzKTtDaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZS5nZXRNaXNzaW5nQ2h1bmtzPWZ1bmN0aW9uKCl7Y29uc3QgZT10aGlzLmNodW5rU2l6ZSx0PU1hdGguZmxvb3IodGhpcy5zdGFydC9lKSxhPU1hdGguZmxvb3IoKHRoaXMuZW5kLTEpL2UpKzEscj1bXTtmb3IobGV0IGU9dDtlPGE7KytlKXRoaXMuX2xvYWRlZENodW5rcy5oYXMoZSl8fHIucHVzaChlKTtyZXR1cm4gcn07T2JqZWN0LmRlZmluZVByb3BlcnR5KENodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlLCJpc0RhdGFMb2FkZWQiLHtnZXQoKXtyZXR1cm4gdGhpcy5udW1DaHVua3NMb2FkZWQ9PT10aGlzLm51bUNodW5rc3x8MD09PXRoaXMuZ2V0TWlzc2luZ0NodW5rcygpLmxlbmd0aH0sY29uZmlndXJhYmxlOiEwfSk7Y29uc3Qgcj1uZXcgQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbTtyLnBvcz1yLnN0YXJ0PWU7ci5lbmQ9ZSt0fHx0aGlzLmVuZDtyLmRpY3Q9YTtyZXR1cm4gcn1nZXRCYXNlU3RyZWFtcygpe3JldHVyblt0aGlzXX19dC5DaHVua2VkU3RyZWFtPUNodW5rZWRTdHJlYW07dC5DaHVua2VkU3RyZWFtTWFuYWdlcj1jbGFzcyBDaHVua2VkU3RyZWFtTWFuYWdlcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMubGVuZ3RoPXQubGVuZ3RoO3RoaXMuY2h1bmtTaXplPXQucmFuZ2VDaHVua1NpemU7dGhpcy5zdHJlYW09bmV3IENodW5rZWRTdHJlYW0odGhpcy5sZW5ndGgsdGhpcy5jaHVua1NpemUsdGhpcyk7dGhpcy5wZGZOZXR3b3JrU3RyZWFtPWU7dGhpcy5kaXNhYmxlQXV0b0ZldGNoPXQuZGlzYWJsZUF1dG9GZXRjaDt0aGlzLm1zZ0hhbmRsZXI9dC5tc2dIYW5kbGVyO3RoaXMuY3VyclJlcXVlc3RJZD0wO3RoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdD1uZXcgTWFwO3RoaXMuX3JlcXVlc3RzQnlDaHVuaz1uZXcgTWFwO3RoaXMuX3Byb21pc2VzQnlSZXF1ZXN0PW5ldyBNYXA7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9MDt0aGlzLmFib3J0ZWQ9ITE7dGhpcy5fbG9hZGVkU3RyZWFtQ2FwYWJpbGl0eT1uZXcgaS5Qcm9taXNlQ2FwYWJpbGl0eX1zZW5kUmVxdWVzdChlLHQpe2NvbnN0IGE9dGhpcy5wZGZOZXR3b3JrU3RyZWFtLmdldFJhbmdlUmVhZGVyKGUsdCk7YS5pc1N0cmVhbWluZ1N1cHBvcnRlZHx8KGEub25Qcm9ncmVzcz10aGlzLm9uUHJvZ3Jlc3MuYmluZCh0aGlzKSk7bGV0IGk9W10sbj0wO3JldHVybiBuZXcgUHJvbWlzZSgoKGUsdCk9Pntjb25zdCByZWFkQ2h1bms9KHt2YWx1ZTpzLGRvbmU6b30pPT57dHJ5e2lmKG8pe2NvbnN0IHQ9KDAsci5hcnJheUJ1ZmZlcnNUb0J5dGVzKShpKTtpPW51bGw7ZSh0KTtyZXR1cm59bis9cy5ieXRlTGVuZ3RoO2EuaXNTdHJlYW1pbmdTdXBwb3J0ZWQmJnRoaXMub25Qcm9ncmVzcyh7bG9hZGVkOm59KTtpLnB1c2gocyk7YS5yZWFkKCkudGhlbihyZWFkQ2h1bmssdCl9Y2F0Y2goZSl7dChlKX19O2EucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpfSkpLnRoZW4oKHQ9Pnt0aGlzLmFib3J0ZWR8fHRoaXMub25SZWNlaXZlRGF0YSh7Y2h1bms6dCxiZWdpbjplfSl9KSl9cmVxdWVzdEFsbENodW5rcyhlPSExKXtpZighZSl7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRNaXNzaW5nQ2h1bmtzKCk7dGhpcy5fcmVxdWVzdENodW5rcyhlKX1yZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtQ2FwYWJpbGl0eS5wcm9taXNlfV9yZXF1ZXN0Q2h1bmtzKGUpe2NvbnN0IHQ9dGhpcy5jdXJyUmVxdWVzdElkKyssYT1uZXcgU2V0O3RoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5zZXQodCxhKTtmb3IoY29uc3QgdCBvZiBlKXRoaXMuc3RyZWFtLmhhc0NodW5rKHQpfHxhLmFkZCh0KTtpZigwPT09YS5zaXplKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtjb25zdCByPW5ldyBpLlByb21pc2VDYXBhYmlsaXR5O3RoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LnNldCh0LHIpO2NvbnN0IG49W107Zm9yKGNvbnN0IGUgb2YgYSl7bGV0IGE9dGhpcy5fcmVxdWVzdHNCeUNodW5rLmdldChlKTtpZighYSl7YT1bXTt0aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuc2V0KGUsYSk7bi5wdXNoKGUpfWEucHVzaCh0KX1pZihuLmxlbmd0aD4wKXtjb25zdCBlPXRoaXMuZ3JvdXBDaHVua3Mobik7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT10LmJlZ2luQ2h1bmsqdGhpcy5jaHVua1NpemUsYT1NYXRoLm1pbih0LmVuZENodW5rKnRoaXMuY2h1bmtTaXplLHRoaXMubGVuZ3RoKTt0aGlzLnNlbmRSZXF1ZXN0KGUsYSkuY2F0Y2goci5yZWplY3QpfX1yZXR1cm4gci5wcm9taXNlLmNhdGNoKChlPT57aWYoIXRoaXMuYWJvcnRlZCl0aHJvdyBlfSkpfWdldFN0cmVhbSgpe3JldHVybiB0aGlzLnN0cmVhbX1yZXF1ZXN0UmFuZ2UoZSx0KXt0PU1hdGgubWluKHQsdGhpcy5sZW5ndGgpO2NvbnN0IGE9dGhpcy5nZXRCZWdpbkNodW5rKGUpLHI9dGhpcy5nZXRFbmRDaHVuayh0KSxpPVtdO2ZvcihsZXQgZT1hO2U8cjsrK2UpaS5wdXNoKGUpO3JldHVybiB0aGlzLl9yZXF1ZXN0Q2h1bmtzKGkpfXJlcXVlc3RSYW5nZXMoZT1bXSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPXRoaXMuZ2V0QmVnaW5DaHVuayhhLmJlZ2luKSxyPXRoaXMuZ2V0RW5kQ2h1bmsoYS5lbmQpO2ZvcihsZXQgYT1lO2E8cjsrK2EpdC5pbmNsdWRlcyhhKXx8dC5wdXNoKGEpfXQuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS10fSkpO3JldHVybiB0aGlzLl9yZXF1ZXN0Q2h1bmtzKHQpfWdyb3VwQ2h1bmtzKGUpe2NvbnN0IHQ9W107bGV0IGE9LTEscj0tMTtmb3IobGV0IGk9MCxuPWUubGVuZ3RoO2k8bjsrK2kpe2NvbnN0IG49ZVtpXTthPDAmJihhPW4pO2lmKHI+PTAmJnIrMSE9PW4pe3QucHVzaCh7YmVnaW5DaHVuazphLGVuZENodW5rOnIrMX0pO2E9bn1pKzE9PT1lLmxlbmd0aCYmdC5wdXNoKHtiZWdpbkNodW5rOmEsZW5kQ2h1bms6bisxfSk7cj1ufXJldHVybiB0fW9uUHJvZ3Jlc3MoZSl7dGhpcy5tc2dIYW5kbGVyLnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOnRoaXMuc3RyZWFtLm51bUNodW5rc0xvYWRlZCp0aGlzLmNodW5rU2l6ZStlLmxvYWRlZCx0b3RhbDp0aGlzLmxlbmd0aH0pfW9uUmVjZWl2ZURhdGEoZSl7Y29uc3QgdD1lLmNodW5rLGE9dm9pZCAwPT09ZS5iZWdpbixyPWE/dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg6ZS5iZWdpbixpPXIrdC5ieXRlTGVuZ3RoLG49TWF0aC5mbG9vcihyL3RoaXMuY2h1bmtTaXplKSxzPWk8dGhpcy5sZW5ndGg/TWF0aC5mbG9vcihpL3RoaXMuY2h1bmtTaXplKTpNYXRoLmNlaWwoaS90aGlzLmNodW5rU2l6ZSk7aWYoYSl7dGhpcy5zdHJlYW0ub25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKHQpO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPWl9ZWxzZSB0aGlzLnN0cmVhbS5vblJlY2VpdmVEYXRhKHIsdCk7dGhpcy5zdHJlYW0uaXNEYXRhTG9hZGVkJiZ0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnJlc29sdmUodGhpcy5zdHJlYW0pO2NvbnN0IG89W107Zm9yKGxldCBlPW47ZTxzOysrZSl7Y29uc3QgdD10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0KGUpO2lmKHQpe3RoaXMuX3JlcXVlc3RzQnlDaHVuay5kZWxldGUoZSk7Zm9yKGNvbnN0IGEgb2YgdCl7Y29uc3QgdD10aGlzLl9jaHVua3NOZWVkZWRCeVJlcXVlc3QuZ2V0KGEpO3QuaGFzKGUpJiZ0LmRlbGV0ZShlKTt0LnNpemU+MHx8by5wdXNoKGEpfX19aWYoIXRoaXMuZGlzYWJsZUF1dG9GZXRjaCYmMD09PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5zaXplKXtsZXQgZTtpZigxPT09dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKXtjb25zdCB0PXRoaXMuc3RyZWFtLm51bUNodW5rcy0xO3RoaXMuc3RyZWFtLmhhc0NodW5rKHQpfHwoZT10KX1lbHNlIGU9dGhpcy5zdHJlYW0ubmV4dEVtcHR5Q2h1bmsocyk7TnVtYmVyLmlzSW50ZWdlcihlKSYmdGhpcy5fcmVxdWVzdENodW5rcyhbZV0pfWZvcihjb25zdCBlIG9mIG8pe2NvbnN0IHQ9dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QuZ2V0KGUpO3RoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LmRlbGV0ZShlKTt0LnJlc29sdmUoKX10aGlzLm1zZ0hhbmRsZXIuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKnRoaXMuY2h1bmtTaXplLHRvdGFsOnRoaXMubGVuZ3RofSl9b25FcnJvcihlKXt0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnJlamVjdChlKX1nZXRCZWdpbkNodW5rKGUpe3JldHVybiBNYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpfWdldEVuZENodW5rKGUpe3JldHVybiBNYXRoLmZsb29yKChlLTEpL3RoaXMuY2h1bmtTaXplKSsxfWFib3J0KGUpe3RoaXMuYWJvcnRlZD0hMDt0aGlzLnBkZk5ldHdvcmtTdHJlYW0mJnRoaXMucGRmTmV0d29ya1N0cmVhbS5jYW5jZWxBbGxSZXF1ZXN0cyhlKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9wcm9taXNlc0J5UmVxdWVzdC52YWx1ZXMoKSl0LnJlamVjdChlKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU3RyaW5nU3RyZWFtPXQuU3RyZWFtPXQuTnVsbFN0cmVhbT12b2lkIDA7dmFyIHI9YSg1KSxpPWEoMik7Y2xhc3MgU3RyZWFtIGV4dGVuZHMgci5CYXNlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxhLHIpe3N1cGVyKCk7dGhpcy5ieXRlcz1lIGluc3RhbmNlb2YgVWludDhBcnJheT9lOm5ldyBVaW50OEFycmF5KGUpO3RoaXMuc3RhcnQ9dHx8MDt0aGlzLnBvcz10aGlzLnN0YXJ0O3RoaXMuZW5kPXQrYXx8dGhpcy5ieXRlcy5sZW5ndGg7dGhpcy5kaWN0PXJ9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmVuZC10aGlzLnN0YXJ0fWdldCBpc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzLmxlbmd0aH1nZXRCeXRlKCl7cmV0dXJuIHRoaXMucG9zPj10aGlzLmVuZD8tMTp0aGlzLmJ5dGVzW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5ieXRlcyxhPXRoaXMucG9zLHI9dGhpcy5lbmQ7aWYoIWUpcmV0dXJuIHQuc3ViYXJyYXkoYSxyKTtsZXQgaT1hK2U7aT5yJiYoaT1yKTt0aGlzLnBvcz1pO3JldHVybiB0LnN1YmFycmF5KGEsaSl9Z2V0Qnl0ZVJhbmdlKGUsdCl7ZTwwJiYoZT0wKTt0PnRoaXMuZW5kJiYodD10aGlzLmVuZCk7cmV0dXJuIHRoaXMuYnl0ZXMuc3ViYXJyYXkoZSx0KX1yZXNldCgpe3RoaXMucG9zPXRoaXMuc3RhcnR9bW92ZVN0YXJ0KCl7dGhpcy5zdGFydD10aGlzLnBvc31tYWtlU3ViU3RyZWFtKGUsdCxhPW51bGwpe3JldHVybiBuZXcgU3RyZWFtKHRoaXMuYnl0ZXMuYnVmZmVyLGUsdCxhKX19dC5TdHJlYW09U3RyZWFtO3QuU3RyaW5nU3RyZWFtPWNsYXNzIFN0cmluZ1N0cmVhbSBleHRlbmRzIFN0cmVhbXtjb25zdHJ1Y3RvcihlKXtzdXBlcigoMCxpLnN0cmluZ1RvQnl0ZXMpKGUpKX19O3QuTnVsbFN0cmVhbT1jbGFzcyBOdWxsU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IFVpbnQ4QXJyYXkoMCkpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5QYWdlPXQuUERGRG9jdW1lbnQ9dm9pZCAwO3ZhciByPWEoMTApLGk9YSgyKSxuPWEoMykscz1hKDQpLG89YSg1MSksYz1hKDUpLGw9YSg2OCksaD1hKDcwKSx1PWEoNzIpLGQ9YSgxMDEpLGY9YSgxNiksZz1hKDgpLHA9YSg3NiksbT1hKDY0KSxiPWEoMTMpLHk9YSgxOCksdz1hKDc1KSxTPWEoNjYpLHg9YSg3NyksQz1hKDEwMik7Y29uc3Qgaz1bMCwwLDYxMiw3OTJdO2NsYXNzIFBhZ2V7Y29uc3RydWN0b3Ioe3BkZk1hbmFnZXI6ZSx4cmVmOnQscGFnZUluZGV4OmEscGFnZURpY3Q6cixyZWY6aSxnbG9iYWxJZEZhY3Rvcnk6bixmb250Q2FjaGU6cyxidWlsdEluQ01hcENhY2hlOm8sc3RhbmRhcmRGb250RGF0YUNhY2hlOmMsZ2xvYmFsSW1hZ2VDYWNoZTpsLHN5c3RlbUZvbnRDYWNoZTpoLG5vbkJsZW5kTW9kZXNTZXQ6dSx4ZmFGYWN0b3J5OmR9KXt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnBhZ2VJbmRleD1hO3RoaXMucGFnZURpY3Q9cjt0aGlzLnhyZWY9dDt0aGlzLnJlZj1pO3RoaXMuZm9udENhY2hlPXM7dGhpcy5idWlsdEluQ01hcENhY2hlPW87dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9Yzt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bDt0aGlzLnN5c3RlbUZvbnRDYWNoZT1oO3RoaXMubm9uQmxlbmRNb2Rlc1NldD11O3RoaXMuZXZhbHVhdG9yT3B0aW9ucz1lLmV2YWx1YXRvck9wdGlvbnM7dGhpcy5yZXNvdXJjZXNQcm9taXNlPW51bGw7dGhpcy54ZmFGYWN0b3J5PWQ7Y29uc3QgZj17b2JqOjB9O3RoaXMuX2xvY2FsSWRGYWN0b3J5PWNsYXNzIGV4dGVuZHMgbntzdGF0aWMgY3JlYXRlT2JqSWQoKXtyZXR1cm5gcCR7YX1fJHsrK2Yub2JqfWB9c3RhdGljIGdldFBhZ2VPYmpJZCgpe3JldHVybmBwJHtpLnRvU3RyaW5nKCl9YH19fV9nZXRJbmhlcml0YWJsZVByb3BlcnR5KGUsdD0hMSl7Y29uc3QgYT0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnRoaXMucGFnZURpY3Qsa2V5OmUsZ2V0QXJyYXk6dCxzdG9wV2hlbkZvdW5kOiExfSk7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/MSE9PWEubGVuZ3RoJiZhWzBdaW5zdGFuY2VvZiBzLkRpY3Q/cy5EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6YX0pOmFbMF06YX1nZXQgY29udGVudCgpe3JldHVybiB0aGlzLnBhZ2VEaWN0LmdldEFycmF5KCJDb250ZW50cyIpfWdldCByZXNvdXJjZXMoKXtjb25zdCBlPXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoIlJlc291cmNlcyIpO3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJyZXNvdXJjZXMiLGUgaW5zdGFuY2VvZiBzLkRpY3Q/ZTpzLkRpY3QuZW1wdHkpfV9nZXRCb3VuZGluZ0JveChlKXtpZih0aGlzLnhmYURhdGEpcmV0dXJuIHRoaXMueGZhRGF0YS5iYm94O2xldCB0PXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoZSwhMCk7aWYoQXJyYXkuaXNBcnJheSh0KSYmND09PXQubGVuZ3RoKXt0PWkuVXRpbC5ub3JtYWxpemVSZWN0KHQpO2lmKHRbMl0tdFswXT4wJiZ0WzNdLXRbMV0+MClyZXR1cm4gdDsoMCxpLndhcm4pKGBFbXB0eSwgb3IgaW52YWxpZCwgLyR7ZX0gZW50cnkuYCl9cmV0dXJuIG51bGx9Z2V0IG1lZGlhQm94KCl7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsIm1lZGlhQm94Iix0aGlzLl9nZXRCb3VuZGluZ0JveCgiTWVkaWFCb3giKXx8ayl9Z2V0IGNyb3BCb3goKXtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiY3JvcEJveCIsdGhpcy5fZ2V0Qm91bmRpbmdCb3goIkNyb3BCb3giKXx8dGhpcy5tZWRpYUJveCl9Z2V0IHVzZXJVbml0KCl7bGV0IGU9dGhpcy5wYWdlRGljdC5nZXQoIlVzZXJVbml0Iik7KCJudW1iZXIiIT10eXBlb2YgZXx8ZTw9MCkmJihlPTEpO3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJ1c2VyVW5pdCIsZSl9Z2V0IHZpZXcoKXtjb25zdHtjcm9wQm94OmUsbWVkaWFCb3g6dH09dGhpcztpZihlIT09dCYmISgwLGkuaXNBcnJheUVxdWFsKShlLHQpKXtjb25zdCBhPWkuVXRpbC5pbnRlcnNlY3QoZSx0KTtpZihhJiZhWzJdLWFbMF0+MCYmYVszXS1hWzFdPjApcmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsInZpZXciLGEpOygwLGkud2FybikoIkVtcHR5IC9Dcm9wQm94IGFuZCAvTWVkaWFCb3ggaW50ZXJzZWN0aW9uLiIpfXJldHVybigwLGkuc2hhZG93KSh0aGlzLCJ2aWV3Iix0KX1nZXQgcm90YXRlKCl7bGV0IGU9dGhpcy5fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSgiUm90YXRlIil8fDA7ZSU5MCE9MD9lPTA6ZT49MzYwP2UlPTM2MDplPDAmJihlPShlJTM2MCszNjApJTM2MCk7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsInJvdGF0ZSIsZSl9X29uU3ViU3RyZWFtRXJyb3IoZSx0KXtpZighdGhpcy5ldmFsdWF0b3JPcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLGkud2FybikoYGdldENvbnRlbnRTdHJlYW0gLSBpZ25vcmluZyBzdWItc3RyZWFtICgke3R9KTogIiR7ZX0iLmApfWdldENvbnRlbnRTdHJlYW0oKXtyZXR1cm4gdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJjb250ZW50IikudGhlbigoZT0+ZSBpbnN0YW5jZW9mIGMuQmFzZVN0cmVhbT9lOkFycmF5LmlzQXJyYXkoZSk/bmV3IHkuU3RyZWFtc1NlcXVlbmNlU3RyZWFtKGUsdGhpcy5fb25TdWJTdHJlYW1FcnJvci5iaW5kKHRoaXMpKTpuZXcgZy5OdWxsU3RyZWFtKSl9Z2V0IHhmYURhdGEoKXtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywieGZhRGF0YSIsdGhpcy54ZmFGYWN0b3J5P3tiYm94OnRoaXMueGZhRmFjdG9yeS5nZXRCb3VuZGluZ0JveCh0aGlzLnBhZ2VJbmRleCl9Om51bGwpfWFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsYSl7aWYodGhpcy54ZmFGYWN0b3J5KXRocm93IG5ldyBFcnJvcigiWEZBOiBDYW5ub3Qgc2F2ZSBuZXcgYW5ub3RhdGlvbnMuIik7Y29uc3QgaT1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pLG49dGhpcy5wYWdlRGljdCxzPXRoaXMuYW5ub3RhdGlvbnMuc2xpY2UoKSxvPWF3YWl0IHIuQW5ub3RhdGlvbkZhY3Rvcnkuc2F2ZU5ld0Fubm90YXRpb25zKGksdCxhKTtmb3IoY29uc3R7cmVmOmV9b2Ygby5hbm5vdGF0aW9ucylzLnB1c2goZSk7Y29uc3QgYz1uLmdldCgiQW5ub3RzIik7bi5zZXQoIkFubm90cyIscyk7Y29uc3QgbD1bXTtsZXQgaD1udWxsO3RoaXMueHJlZi5lbmNyeXB0JiYoaD10aGlzLnhyZWYuZW5jcnlwdC5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5yZWYubnVtLHRoaXMucmVmLmdlbikpO2F3YWl0KDAsUy53cml0ZU9iamVjdCkodGhpcy5yZWYsbixsLGgpO2MmJm4uc2V0KCJBbm5vdHMiLGMpO2NvbnN0IHU9by5kZXBlbmRlbmNpZXM7dS5wdXNoKHtyZWY6dGhpcy5yZWYsZGF0YTpsLmpvaW4oIiIpfSwuLi5vLmFubm90YXRpb25zKTtyZXR1cm4gdX1zYXZlKGUsdCxhKXtjb25zdCByPW5ldyBiLlBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSk7cmV0dXJuIHRoaXMuX3BhcnNlZEFubm90YXRpb25zLnRoZW4oKGZ1bmN0aW9uKGUpe2NvbnN0IG49W107Zm9yKGNvbnN0IHMgb2YgZSlzLm11c3RCZVByaW50ZWQoYSkmJm4ucHVzaChzLnNhdmUocix0LGEpLmNhdGNoKChmdW5jdGlvbihlKXsoMCxpLndhcm4pKGBzYXZlIC0gaWdub3JpbmcgYW5ub3RhdGlvbiBkYXRhIGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO3JldHVybiBQcm9taXNlLmFsbChuKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5maWx0ZXIoKGU9PiEhZSkpfSkpfSkpfWxvYWRSZXNvdXJjZXMoZSl7dGhpcy5yZXNvdXJjZXNQcm9taXNlfHwodGhpcy5yZXNvdXJjZXNQcm9taXNlPXRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywicmVzb3VyY2VzIikpO3JldHVybiB0aGlzLnJlc291cmNlc1Byb21pc2UudGhlbigoKCk9Pm5ldyBwLk9iamVjdExvYWRlcih0aGlzLnJlc291cmNlcyxlLHRoaXMueHJlZikubG9hZCgpKSl9Z2V0T3BlcmF0b3JMaXN0KHtoYW5kbGVyOmUsc2luazp0LHRhc2s6YSxpbnRlbnQ6cyxjYWNoZUtleTpvLGFubm90YXRpb25TdG9yYWdlOmM9bnVsbH0pe2NvbnN0IGw9dGhpcy5nZXRDb250ZW50U3RyZWFtKCksaD10aGlzLmxvYWRSZXNvdXJjZXMoWyJDb2xvclNwYWNlIiwiRXh0R1N0YXRlIiwiRm9udCIsIlBhdHRlcm4iLCJQcm9wZXJ0aWVzIiwiU2hhZGluZyIsIlhPYmplY3QiXSksdT1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pLGQ9dGhpcy54ZmFGYWN0b3J5P251bGw6KDAsbi5nZXROZXdBbm5vdGF0aW9uc01hcCkoYyk7bGV0IGY9UHJvbWlzZS5yZXNvbHZlKG51bGwpO2lmKGQpe2NvbnN0IGU9ZC5nZXQodGhpcy5wYWdlSW5kZXgpO2UmJihmPXIuQW5ub3RhdGlvbkZhY3RvcnkucHJpbnROZXdBbm5vdGF0aW9ucyh1LGEsZSkpfWNvbnN0IGc9UHJvbWlzZS5hbGwoW2wsaF0pLnRoZW4oKChbcl0pPT57Y29uc3QgaT1uZXcgbS5PcGVyYXRvckxpc3Qocyx0KTtlLnNlbmQoIlN0YXJ0UmVuZGVyUGFnZSIse3RyYW5zcGFyZW5jeTp1Lmhhc0JsZW5kTW9kZXModGhpcy5yZXNvdXJjZXMsdGhpcy5ub25CbGVuZE1vZGVzU2V0KSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsY2FjaGVLZXk6b30pO3JldHVybiB1LmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnIsdGFzazphLHJlc291cmNlczp0aGlzLnJlc291cmNlcyxvcGVyYXRvckxpc3Q6aX0pLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSl9KSk7cmV0dXJuIFByb21pc2UuYWxsKFtnLHRoaXMuX3BhcnNlZEFubm90YXRpb25zLGZdKS50aGVuKChmdW5jdGlvbihbZSx0LHJdKXtyJiYodD10LmNvbmNhdChyKSk7aWYoMD09PXQubGVuZ3RofHxzJmkuUmVuZGVyaW5nSW50ZW50RmxhZy5BTk5PVEFUSU9OU19ESVNBQkxFKXtlLmZsdXNoKCEwKTtyZXR1cm57bGVuZ3RoOmUudG90YWxMZW5ndGh9fWNvbnN0IG49ISEocyZpLlJlbmRlcmluZ0ludGVudEZsYWcuQU5OT1RBVElPTlNfRk9STVMpLG89ISEocyZpLlJlbmRlcmluZ0ludGVudEZsYWcuQU5ZKSxsPSEhKHMmaS5SZW5kZXJpbmdJbnRlbnRGbGFnLkRJU1BMQVkpLGg9ISEocyZpLlJlbmRlcmluZ0ludGVudEZsYWcuUFJJTlQpLGQ9W107Zm9yKGNvbnN0IGUgb2YgdCkob3x8bCYmZS5tdXN0QmVWaWV3ZWQoYyl8fGgmJmUubXVzdEJlUHJpbnRlZChjKSkmJmQucHVzaChlLmdldE9wZXJhdG9yTGlzdCh1LGEscyxuLGMpLmNhdGNoKChmdW5jdGlvbihlKXsoMCxpLndhcm4pKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke2EubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm57b3BMaXN0Om51bGwsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX0pKSk7cmV0dXJuIFByb21pc2UuYWxsKGQpLnRoZW4oKGZ1bmN0aW9uKHQpe2xldCBhPSExLHI9ITE7Zm9yKGNvbnN0e29wTGlzdDppLHNlcGFyYXRlRm9ybTpuLHNlcGFyYXRlQ2FudmFzOnN9b2YgdCl7ZS5hZGRPcExpc3QoaSk7YXx8PW47cnx8PXN9ZS5mbHVzaCghMCx7Zm9ybTphLGNhbnZhczpyfSk7cmV0dXJue2xlbmd0aDplLnRvdGFsTGVuZ3RofX0pKX0pKX1leHRyYWN0VGV4dENvbnRlbnQoe2hhbmRsZXI6ZSx0YXNrOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6YSxkaXNhYmxlTm9ybWFsaXphdGlvbjpyLHNpbms6aX0pe2NvbnN0IG49dGhpcy5nZXRDb250ZW50U3RyZWFtKCkscz10aGlzLmxvYWRSZXNvdXJjZXMoWyJFeHRHU3RhdGUiLCJGb250IiwiUHJvcGVydGllcyIsIlhPYmplY3QiXSk7cmV0dXJuIFByb21pc2UuYWxsKFtuLHNdKS50aGVuKCgoW25dKT0+bmV3IGIuUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxpZEZhY3Rvcnk6dGhpcy5fbG9jYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dGhpcy5zeXN0ZW1Gb250Q2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KS5nZXRUZXh0Q29udGVudCh7c3RyZWFtOm4sdGFzazp0LHJlc291cmNlczp0aGlzLnJlc291cmNlcyxpbmNsdWRlTWFya2VkQ29udGVudDphLGRpc2FibGVOb3JtYWxpemF0aW9uOnIsc2luazppLHZpZXdCb3g6dGhpcy52aWV3fSkpKX1hc3luYyBnZXRTdHJ1Y3RUcmVlKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKTtpZighZSlyZXR1cm4gbnVsbDtyZXR1cm4oYXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJfcGFyc2VTdHJ1Y3RUcmVlIixbZV0pKS5zZXJpYWxpemFibGV9X3BhcnNlU3RydWN0VHJlZShlKXtjb25zdCB0PW5ldyB3LlN0cnVjdFRyZWVQYWdlKGUsdGhpcy5wYWdlRGljdCk7dC5wYXJzZSgpO3JldHVybiB0fWFzeW5jIGdldEFubm90YXRpb25zRGF0YShlLHQsYSl7Y29uc3Qgcj1hd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztpZigwPT09ci5sZW5ndGgpcmV0dXJuW107Y29uc3Qgbj1bXSxzPVtdO2xldCBvO2NvbnN0IGM9ISEoYSZpLlJlbmRlcmluZ0ludGVudEZsYWcuQU5ZKSxsPSEhKGEmaS5SZW5kZXJpbmdJbnRlbnRGbGFnLkRJU1BMQVkpLGg9ISEoYSZpLlJlbmRlcmluZ0ludGVudEZsYWcuUFJJTlQpO2Zvcihjb25zdCBhIG9mIHIpe2NvbnN0IHI9Y3x8bCYmYS52aWV3YWJsZTsocnx8aCYmYS5wcmludGFibGUpJiZuLnB1c2goYS5kYXRhKTtpZihhLmhhc1RleHRDb250ZW50JiZyKXtvfHw9bmV3IGIuUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxpZEZhY3Rvcnk6dGhpcy5fbG9jYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dGhpcy5zeXN0ZW1Gb250Q2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KTtzLnB1c2goYS5leHRyYWN0VGV4dENvbnRlbnQobyx0LFstMS8wLC0xLzAsMS8wLDEvMF0pLmNhdGNoKChmdW5jdGlvbihlKXsoMCxpLndhcm4pKGBnZXRBbm5vdGF0aW9uc0RhdGEgLSBpZ25vcmluZyB0ZXh0Q29udGVudCBkdXJpbmcgIiR7dC5uYW1lfSIgdGFzazogIiR7ZX0iLmApfSkpKX19YXdhaXQgUHJvbWlzZS5hbGwocyk7cmV0dXJuIG59Z2V0IGFubm90YXRpb25zKCl7Y29uc3QgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJBbm5vdHMiKTtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiYW5ub3RhdGlvbnMiLEFycmF5LmlzQXJyYXkoZSk/ZTpbXSl9Z2V0IF9wYXJzZWRBbm5vdGF0aW9ucygpe2NvbnN0IGU9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJhbm5vdGF0aW9ucyIpLnRoZW4oKCgpPT57Y29uc3QgZT1bXTtmb3IoY29uc3QgdCBvZiB0aGlzLmFubm90YXRpb25zKWUucHVzaChyLkFubm90YXRpb25GYWN0b3J5LmNyZWF0ZSh0aGlzLnhyZWYsdCx0aGlzLnBkZk1hbmFnZXIsdGhpcy5fbG9jYWxJZEZhY3RvcnksITEpLmNhdGNoKChmdW5jdGlvbihlKXsoMCxpLndhcm4pKGBfcGFyc2VkQW5ub3RhdGlvbnM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSk7cmV0dXJuIFByb21pc2UuYWxsKGUpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gZTtjb25zdCB0PVtdO2xldCBhO2Zvcihjb25zdCBpIG9mIGUpaSYmKGkgaW5zdGFuY2VvZiByLlBvcHVwQW5ub3RhdGlvbj8oYXx8PVtdKS5wdXNoKGkpOnQucHVzaChpKSk7YSYmdC5wdXNoKC4uLmEpO3JldHVybiB0fSkpfSkpO3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJfcGFyc2VkQW5ub3RhdGlvbnMiLGUpfWdldCBqc0FjdGlvbnMoKXtjb25zdCBlPSgwLG4uY29sbGVjdEFjdGlvbnMpKHRoaXMueHJlZix0aGlzLnBhZ2VEaWN0LGkuUGFnZUFjdGlvbkV2ZW50VHlwZSk7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImpzQWN0aW9ucyIsZSl9fXQuUGFnZT1QYWdlO2NvbnN0IHY9bmV3IFVpbnQ4QXJyYXkoWzM3LDgwLDY4LDcwLDQ1XSksRj1uZXcgVWludDhBcnJheShbMTE1LDExNiw5NywxMTQsMTE2LDEyMCwxMTQsMTAxLDEwMl0pLE89bmV3IFVpbnQ4QXJyYXkoWzEwMSwxMTAsMTAwLDExMSw5OCwxMDZdKTtmdW5jdGlvbiBmaW5kKGUsdCxhPTEwMjQscj0hMSl7Y29uc3QgaT10Lmxlbmd0aCxuPWUucGVla0J5dGVzKGEpLHM9bi5sZW5ndGgtaTtpZihzPD0wKXJldHVybiExO2lmKHIpe2NvbnN0IGE9aS0xO2xldCByPW4ubGVuZ3RoLTE7Zm9yKDtyPj1hOyl7bGV0IHM9MDtmb3IoO3M8aSYmbltyLXNdPT09dFthLXNdOylzKys7aWYocz49aSl7ZS5wb3MrPXItYTtyZXR1cm4hMH1yLS19fWVsc2V7bGV0IGE9MDtmb3IoO2E8PXM7KXtsZXQgcj0wO2Zvcig7cjxpJiZuW2Ercl09PT10W3JdOylyKys7aWYocj49aSl7ZS5wb3MrPWE7cmV0dXJuITB9YSsrfX1yZXR1cm4hMX10LlBERkRvY3VtZW50PWNsYXNzIFBERkRvY3VtZW50e2NvbnN0cnVjdG9yKGUsdCl7aWYodC5sZW5ndGg8PTApdGhyb3cgbmV3IGkuSW52YWxpZFBERkV4Y2VwdGlvbigiVGhlIFBERiBmaWxlIGlzIGVtcHR5LCBpLmUuIGl0cyBzaXplIGlzIHplcm8gYnl0ZXMuIik7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy5zdHJlYW09dDt0aGlzLnhyZWY9bmV3IEMuWFJlZih0LGUpO3RoaXMuX3BhZ2VQcm9taXNlcz1uZXcgTWFwO3RoaXMuX3ZlcnNpb249bnVsbDtjb25zdCBhPXtmb250OjB9O3RoaXMuX2dsb2JhbElkRmFjdG9yeT1jbGFzc3tzdGF0aWMgZ2V0RG9jSWQoKXtyZXR1cm5gZ18ke2UuZG9jSWR9YH1zdGF0aWMgY3JlYXRlRm9udElkKCl7cmV0dXJuImYiKyArK2EuZm9udH1zdGF0aWMgY3JlYXRlT2JqSWQoKXsoMCxpLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBjcmVhdGVPYmpJZGAgY2FsbGVkLiIpfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXsoMCxpLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRQYWdlT2JqSWRgIGNhbGxlZC4iKX19fXBhcnNlKGUpe3RoaXMueHJlZi5wYXJzZShlKTt0aGlzLmNhdGFsb2c9bmV3IGguQ2F0YWxvZyh0aGlzLnBkZk1hbmFnZXIsdGhpcy54cmVmKX1nZXQgbGluZWFyaXphdGlvbigpe2xldCBlPW51bGw7dHJ5e2U9Zi5MaW5lYXJpemF0aW9uLmNyZWF0ZSh0aGlzLnN0cmVhbSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIG4uTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxpLmluZm8pKGUpfXJldHVybigwLGkuc2hhZG93KSh0aGlzLCJsaW5lYXJpemF0aW9uIixlKX1nZXQgc3RhcnRYUmVmKCl7Y29uc3QgZT10aGlzLnN0cmVhbTtsZXQgdD0wO2lmKHRoaXMubGluZWFyaXphdGlvbil7ZS5yZXNldCgpO2ZpbmQoZSxPKSYmKHQ9ZS5wb3MrNi1lLnN0YXJ0KX1lbHNle2NvbnN0IGE9MTAyNCxyPUYubGVuZ3RoO2xldCBpPSExLHM9ZS5lbmQ7Zm9yKDshaSYmcz4wOyl7cy09YS1yO3M8MCYmKHM9MCk7ZS5wb3M9cztpPWZpbmQoZSxGLGEsITApfWlmKGkpe2Uuc2tpcCg5KTtsZXQgYTtkb3thPWUuZ2V0Qnl0ZSgpfXdoaWxlKCgwLG4uaXNXaGl0ZVNwYWNlKShhKSk7bGV0IHI9IiI7Zm9yKDthPj0zMiYmYTw9NTc7KXtyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpO2E9ZS5nZXRCeXRlKCl9dD1wYXJzZUludChyLDEwKTtpc05hTih0KSYmKHQ9MCl9fXJldHVybigwLGkuc2hhZG93KSh0aGlzLCJzdGFydFhSZWYiLHQpfWNoZWNrSGVhZGVyKCl7Y29uc3QgZT10aGlzLnN0cmVhbTtlLnJlc2V0KCk7aWYoIWZpbmQoZSx2KSlyZXR1cm47ZS5tb3ZlU3RhcnQoKTtlLnNraXAodi5sZW5ndGgpO2xldCB0LGE9IiI7Zm9yKDsodD1lLmdldEJ5dGUoKSk+MzImJmEubGVuZ3RoPDc7KWErPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7bi5QREZfVkVSU0lPTl9SRUdFWFAudGVzdChhKT90aGlzLl92ZXJzaW9uPWE6KDAsaS53YXJuKShgSW52YWxpZCBQREYgaGVhZGVyIHZlcnNpb246ICR7YX1gKX1wYXJzZVN0YXJ0WFJlZigpe3RoaXMueHJlZi5zZXRTdGFydFhSZWYodGhpcy5zdGFydFhSZWYpfWdldCBudW1QYWdlcygpe2xldCBlPTA7ZT10aGlzLmNhdGFsb2cuaGFzQWN0dWFsTnVtUGFnZXM/dGhpcy5jYXRhbG9nLm51bVBhZ2VzOnRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3RvcnkuZ2V0TnVtUGFnZXMoKTp0aGlzLmxpbmVhcml6YXRpb24/dGhpcy5saW5lYXJpemF0aW9uLm51bVBhZ2VzOnRoaXMuY2F0YWxvZy5udW1QYWdlcztyZXR1cm4oMCxpLnNoYWRvdykodGhpcywibnVtUGFnZXMiLGUpfV9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGUsdD0wKXtyZXR1cm4hIUFycmF5LmlzQXJyYXkoZSkmJmUuZXZlcnkoKGU9PntpZighKChlPXRoaXMueHJlZi5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm4hMTtpZihlLmhhcygiS2lkcyIpKXtpZigrK3Q+MTApeygwLGkud2FybikoIl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzOiBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCByZWFjaGVkIik7cmV0dXJuITF9cmV0dXJuIHRoaXMuX2hhc09ubHlEb2N1bWVudFNpZ25hdHVyZXMoZS5nZXQoIktpZHMiKSx0KX1jb25zdCBhPSgwLHMuaXNOYW1lKShlLmdldCgiRlQiKSwiU2lnIikscj1lLmdldCgiUmVjdCIpLG49QXJyYXkuaXNBcnJheShyKSYmci5ldmVyeSgoZT0+MD09PWUpKTtyZXR1cm4gYSYmbn0pKX1nZXQgX3hmYVN0cmVhbXMoKXtjb25zdCBlPXRoaXMuY2F0YWxvZy5hY3JvRm9ybTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PWUuZ2V0KCJYRkEiKSxhPXsieGRwOnhkcCI6IiIsdGVtcGxhdGU6IiIsZGF0YXNldHM6IiIsY29uZmlnOiIiLGNvbm5lY3Rpb25TZXQ6IiIsbG9jYWxlU2V0OiIiLHN0eWxlc2hlZXQ6IiIsIi94ZHA6eGRwIjoiIn07aWYodCBpbnN0YW5jZW9mIGMuQmFzZVN0cmVhbSYmIXQuaXNFbXB0eSl7YVsieGRwOnhkcCJdPXQ7cmV0dXJuIGF9aWYoIUFycmF5LmlzQXJyYXkodCl8fDA9PT10Lmxlbmd0aClyZXR1cm4gbnVsbDtmb3IobGV0IGU9MCxyPXQubGVuZ3RoO2U8cjtlKz0yKXtsZXQgaTtpPTA9PT1lPyJ4ZHA6eGRwIjplPT09ci0yPyIveGRwOnhkcCI6dFtlXTtpZighYS5oYXNPd25Qcm9wZXJ0eShpKSljb250aW51ZTtjb25zdCBuPXRoaXMueHJlZi5mZXRjaElmUmVmKHRbZSsxXSk7biBpbnN0YW5jZW9mIGMuQmFzZVN0cmVhbSYmIW4uaXNFbXB0eSYmKGFbaV09bil9cmV0dXJuIGF9Z2V0IHhmYURhdGFzZXRzKCl7Y29uc3QgZT10aGlzLl94ZmFTdHJlYW1zO2lmKCFlKXJldHVybigwLGkuc2hhZG93KSh0aGlzLCJ4ZmFEYXRhc2V0cyIsbnVsbCk7Zm9yKGNvbnN0IHQgb2ZbImRhdGFzZXRzIiwieGRwOnhkcCJdKXtjb25zdCBhPWVbdF07aWYoYSl0cnl7Y29uc3QgZT17W3RdOigwLGkuc3RyaW5nVG9VVEY4U3RyaW5nKShhLmdldFN0cmluZygpKX07cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsInhmYURhdGFzZXRzIixuZXcgZC5EYXRhc2V0UmVhZGVyKGUpKX1jYXRjaChlKXsoMCxpLndhcm4pKCJYRkEgLSBJbnZhbGlkIHV0Zi04IHN0cmluZy4iKTticmVha319cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsInhmYURhdGFzZXRzIixudWxsKX1nZXQgeGZhRGF0YSgpe2NvbnN0IGU9dGhpcy5feGZhU3RyZWFtcztpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W2Escl1vZiBPYmplY3QuZW50cmllcyhlKSlpZihyKXRyeXt0W2FdPSgwLGkuc3RyaW5nVG9VVEY4U3RyaW5nKShyLmdldFN0cmluZygpKX1jYXRjaChlKXsoMCxpLndhcm4pKCJYRkEgLSBJbnZhbGlkIHV0Zi04IHN0cmluZy4iKTtyZXR1cm4gbnVsbH1yZXR1cm4gdH1nZXQgeGZhRmFjdG9yeSgpe2xldCBlO3RoaXMucGRmTWFuYWdlci5lbmFibGVYZmEmJnRoaXMuY2F0YWxvZy5uZWVkc1JlbmRlcmluZyYmdGhpcy5mb3JtSW5mby5oYXNYZmEmJiF0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtJiYoZT10aGlzLnhmYURhdGEpO3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJ4ZmFGYWN0b3J5IixlP25ldyB4LlhGQUZhY3RvcnkoZSk6bnVsbCl9Z2V0IGlzUHVyZVhmYSgpe3JldHVybiEhdGhpcy54ZmFGYWN0b3J5JiZ0aGlzLnhmYUZhY3RvcnkuaXNWYWxpZCgpfWdldCBodG1sRm9yWGZhKCl7cmV0dXJuIHRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3RvcnkuZ2V0UGFnZXMoKTpudWxsfWFzeW5jIGxvYWRYZmFJbWFnZXMoKXtjb25zdCBlPWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJ4ZmFJbWFnZXMiKTtpZighZSlyZXR1cm47Y29uc3QgdD1lLmdldEtleXMoKSxhPW5ldyBwLk9iamVjdExvYWRlcihlLHQsdGhpcy54cmVmKTthd2FpdCBhLmxvYWQoKTtjb25zdCByPW5ldyBNYXA7Zm9yKGNvbnN0IGEgb2YgdCl7Y29uc3QgdD1lLmdldChhKTt0IGluc3RhbmNlb2YgYy5CYXNlU3RyZWFtJiZyLnNldChhLHQuZ2V0Qnl0ZXMoKSl9dGhpcy54ZmFGYWN0b3J5LnNldEltYWdlcyhyKX1hc3luYyBsb2FkWGZhRm9udHMoZSx0KXtjb25zdCBhPWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpO2lmKCFhKXJldHVybjtjb25zdCByPWF3YWl0IGEuZ2V0QXN5bmMoIkRSIik7aWYoIShyIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Y29uc3QgYz1uZXcgcC5PYmplY3RMb2FkZXIocixbIkZvbnQiXSx0aGlzLnhyZWYpO2F3YWl0IGMubG9hZCgpO2NvbnN0IGw9ci5nZXQoIkZvbnQiKTtpZighKGwgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybjtjb25zdCBoPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLnBkZk1hbmFnZXIuZXZhbHVhdG9yT3B0aW9ucyk7aC51c2VTeXN0ZW1Gb250cz0hMTtjb25zdCB1PW5ldyBiLlBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6LTEsaWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5jYXRhbG9nLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuY2F0YWxvZy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLmNhdGFsb2cuc3RhbmRhcmRGb250RGF0YUNhY2hlLG9wdGlvbnM6aH0pLGQ9bmV3IG0uT3BlcmF0b3JMaXN0LGY9W10sZz17Z2V0IGZvbnQoKXtyZXR1cm4gZi5hdCgtMSl9LHNldCBmb250KGUpe2YucHVzaChlKX0sY2xvbmUoKXtyZXR1cm4gdGhpc319LHk9bmV3IE1hcDtsLmZvckVhY2goKChlLHQpPT57eS5zZXQoZSx0KX0pKTtjb25zdCB3PVtdO2Zvcihjb25zdFtlLGFdb2YgeSl7Y29uc3Qgbz1hLmdldCgiRm9udERlc2NyaXB0b3IiKTtpZighKG8gaW5zdGFuY2VvZiBzLkRpY3QpKWNvbnRpbnVlO2xldCBjPW8uZ2V0KCJGb250RmFtaWx5Iik7Yz1jLnJlcGxhY2VBbGwoL1sgXSsoXGQpL2csIiQxIik7Y29uc3QgbD17Zm9udEZhbWlseTpjLGZvbnRXZWlnaHQ6by5nZXQoIkZvbnRXZWlnaHQiKSxpdGFsaWNBbmdsZTotby5nZXQoIkl0YWxpY0FuZ2xlIil9OygwLG4udmFsaWRhdGVDU1NGb250KShsKSYmdy5wdXNoKHUuaGFuZGxlU2V0Rm9udChyLFtzLk5hbWUuZ2V0KGUpLDFdLG51bGwsZCx0LGcsbnVsbCxsKS5jYXRjaCgoZnVuY3Rpb24oZSl7KDAsaS53YXJuKShgbG9hZFhmYUZvbnRzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpfWF3YWl0IFByb21pc2UuYWxsKHcpO2NvbnN0IFM9dGhpcy54ZmFGYWN0b3J5LnNldEZvbnRzKGYpO2lmKCFTKXJldHVybjtoLmlnbm9yZUVycm9ycz0hMDt3Lmxlbmd0aD0wO2YubGVuZ3RoPTA7Y29uc3QgeD1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIFMpKDAsby5nZXRYZmFGb250TmFtZSkoYCR7ZX0tUmVndWxhcmApfHx4LmFkZChlKTt4LnNpemUmJlMucHVzaCgiUGRmSlMtRmFsbGJhY2siKTtmb3IoY29uc3QgZSBvZiBTKWlmKCF4LmhhcyhlKSlmb3IoY29uc3QgYSBvZlt7bmFtZToiUmVndWxhciIsZm9udFdlaWdodDo0MDAsaXRhbGljQW5nbGU6MH0se25hbWU6IkJvbGQiLGZvbnRXZWlnaHQ6NzAwLGl0YWxpY0FuZ2xlOjB9LHtuYW1lOiJJdGFsaWMiLGZvbnRXZWlnaHQ6NDAwLGl0YWxpY0FuZ2xlOjEyfSx7bmFtZToiQm9sZEl0YWxpYyIsZm9udFdlaWdodDo3MDAsaXRhbGljQW5nbGU6MTJ9XSl7Y29uc3Qgbj1gJHtlfS0ke2EubmFtZX1gLGM9KDAsby5nZXRYZmFGb250RGljdCkobik7dy5wdXNoKHUuaGFuZGxlU2V0Rm9udChyLFtzLk5hbWUuZ2V0KG4pLDFdLG51bGwsZCx0LGcsYyx7Zm9udEZhbWlseTplLGZvbnRXZWlnaHQ6YS5mb250V2VpZ2h0LGl0YWxpY0FuZ2xlOmEuaXRhbGljQW5nbGV9KS5jYXRjaCgoZnVuY3Rpb24oZSl7KDAsaS53YXJuKShgbG9hZFhmYUZvbnRzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpfWF3YWl0IFByb21pc2UuYWxsKHcpO3RoaXMueGZhRmFjdG9yeS5hcHBlbmRGb250cyhmLHgpfWFzeW5jIHNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3Rvcnkuc2VyaWFsaXplRGF0YShlKTpudWxsfWdldCB2ZXJzaW9uKCl7cmV0dXJuIHRoaXMuY2F0YWxvZy52ZXJzaW9ufHx0aGlzLl92ZXJzaW9ufWdldCBmb3JtSW5mbygpe2NvbnN0IGU9e2hhc0ZpZWxkczohMSxoYXNBY3JvRm9ybTohMSxoYXNYZmE6ITEsaGFzU2lnbmF0dXJlczohMX0sdD10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIXQpcmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImZvcm1JbmZvIixlKTt0cnl7Y29uc3QgYT10LmdldCgiRmllbGRzIikscj1BcnJheS5pc0FycmF5KGEpJiZhLmxlbmd0aD4wO2UuaGFzRmllbGRzPXI7Y29uc3QgaT10LmdldCgiWEZBIik7ZS5oYXNYZmE9QXJyYXkuaXNBcnJheShpKSYmaS5sZW5ndGg+MHx8aSBpbnN0YW5jZW9mIGMuQmFzZVN0cmVhbSYmIWkuaXNFbXB0eTtjb25zdCBuPSEhKDEmdC5nZXQoIlNpZ0ZsYWdzIikpLHM9biYmdGhpcy5faGFzT25seURvY3VtZW50U2lnbmF0dXJlcyhhKTtlLmhhc0Fjcm9Gb3JtPXImJiFzO2UuaGFzU2lnbmF0dXJlcz1ufWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBuLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsaS53YXJuKShgQ2Fubm90IGZldGNoIGZvcm0gaW5mb3JtYXRpb246ICIke2V9Ii5gKX1yZXR1cm4oMCxpLnNoYWRvdykodGhpcywiZm9ybUluZm8iLGUpfWdldCBkb2N1bWVudEluZm8oKXtjb25zdCBlPXtQREZGb3JtYXRWZXJzaW9uOnRoaXMudmVyc2lvbixMYW5ndWFnZTp0aGlzLmNhdGFsb2cubGFuZyxFbmNyeXB0RmlsdGVyTmFtZTp0aGlzLnhyZWYuZW5jcnlwdD90aGlzLnhyZWYuZW5jcnlwdC5maWx0ZXJOYW1lOm51bGwsSXNMaW5lYXJpemVkOiEhdGhpcy5saW5lYXJpemF0aW9uLElzQWNyb0Zvcm1QcmVzZW50OnRoaXMuZm9ybUluZm8uaGFzQWNyb0Zvcm0sSXNYRkFQcmVzZW50OnRoaXMuZm9ybUluZm8uaGFzWGZhLElzQ29sbGVjdGlvblByZXNlbnQ6ISF0aGlzLmNhdGFsb2cuY29sbGVjdGlvbixJc1NpZ25hdHVyZXNQcmVzZW50OnRoaXMuZm9ybUluZm8uaGFzU2lnbmF0dXJlc307bGV0IHQ7dHJ5e3Q9dGhpcy54cmVmLnRyYWlsZXIuZ2V0KCJJbmZvIil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIG4uTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxpLmluZm8pKCJUaGUgZG9jdW1lbnQgaW5mb3JtYXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLiIpfWlmKCEodCBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImRvY3VtZW50SW5mbyIsZSk7Zm9yKGNvbnN0IGEgb2YgdC5nZXRLZXlzKCkpe2NvbnN0IHI9dC5nZXQoYSk7c3dpdGNoKGEpe2Nhc2UiVGl0bGUiOmNhc2UiQXV0aG9yIjpjYXNlIlN1YmplY3QiOmNhc2UiS2V5d29yZHMiOmNhc2UiQ3JlYXRvciI6Y2FzZSJQcm9kdWNlciI6Y2FzZSJDcmVhdGlvbkRhdGUiOmNhc2UiTW9kRGF0ZSI6aWYoInN0cmluZyI9PXR5cGVvZiByKXtlW2FdPSgwLGkuc3RyaW5nVG9QREZTdHJpbmcpKHIpO2NvbnRpbnVlfWJyZWFrO2Nhc2UiVHJhcHBlZCI6aWYociBpbnN0YW5jZW9mIHMuTmFtZSl7ZVthXT1yO2NvbnRpbnVlfWJyZWFrO2RlZmF1bHQ6bGV0IHQ7c3dpdGNoKHR5cGVvZiByKXtjYXNlInN0cmluZyI6dD0oMCxpLnN0cmluZ1RvUERGU3RyaW5nKShyKTticmVhaztjYXNlIm51bWJlciI6Y2FzZSJib29sZWFuIjp0PXI7YnJlYWs7ZGVmYXVsdDpyIGluc3RhbmNlb2Ygcy5OYW1lJiYodD1yKX1pZih2b2lkIDA9PT10KXsoMCxpLndhcm4pKGBCYWQgdmFsdWUsIGZvciBjdXN0b20ga2V5ICIke2F9IiwgaW4gSW5mbzogJHtyfS5gKTtjb250aW51ZX1lLkN1c3RvbXx8KGUuQ3VzdG9tPU9iamVjdC5jcmVhdGUobnVsbCkpO2UuQ3VzdG9tW2FdPXQ7Y29udGludWV9KDAsaS53YXJuKShgQmFkIHZhbHVlLCBmb3Iga2V5ICIke2F9IiwgaW4gSW5mbzogJHtyfS5gKX1yZXR1cm4oMCxpLnNoYWRvdykodGhpcywiZG9jdW1lbnRJbmZvIixlKX1nZXQgZmluZ2VycHJpbnRzKCl7ZnVuY3Rpb24gdmFsaWRhdGUoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiZlLmxlbmd0aD4wJiYiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiIT09ZX1mdW5jdGlvbiBoZXhTdHJpbmcoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPWEudG9TdHJpbmcoMTYpO3QucHVzaChlLnBhZFN0YXJ0KDIsIjAiKSl9cmV0dXJuIHQuam9pbigiIil9Y29uc3QgZT10aGlzLnhyZWYudHJhaWxlci5nZXQoIklEIik7bGV0IHQsYTtpZihBcnJheS5pc0FycmF5KGUpJiZ2YWxpZGF0ZShlWzBdKSl7dD0oMCxpLnN0cmluZ1RvQnl0ZXMpKGVbMF0pO2VbMV0hPT1lWzBdJiZ2YWxpZGF0ZShlWzFdKSYmKGE9KDAsaS5zdHJpbmdUb0J5dGVzKShlWzFdKSl9ZWxzZSB0PSgwLGwuY2FsY3VsYXRlTUQ1KSh0aGlzLnN0cmVhbS5nZXRCeXRlUmFuZ2UoMCwxMDI0KSwwLDEwMjQpO3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJmaW5nZXJwcmludHMiLFtoZXhTdHJpbmcodCksYT9oZXhTdHJpbmcoYSk6bnVsbF0pfWFzeW5jIF9nZXRMaW5lYXJpemF0aW9uUGFnZShlKXtjb25zdHtjYXRhbG9nOnQsbGluZWFyaXphdGlvbjphLHhyZWY6cn09dGhpcyxuPXMuUmVmLmdldChhLm9iamVjdE51bWJlckZpcnN0LDApO3RyeXtjb25zdCBlPWF3YWl0IHIuZmV0Y2hBc3luYyhuKTtpZihlIGluc3RhbmNlb2Ygcy5EaWN0KXtsZXQgYT1lLmdldFJhdygiVHlwZSIpO2EgaW5zdGFuY2VvZiBzLlJlZiYmKGE9YXdhaXQgci5mZXRjaEFzeW5jKGEpKTtpZigoMCxzLmlzTmFtZSkoYSwiUGFnZSIpfHwhZS5oYXMoIlR5cGUiKSYmIWUuaGFzKCJLaWRzIikpe3QucGFnZUtpZHNDb3VudENhY2hlLmhhcyhuKXx8dC5wYWdlS2lkc0NvdW50Q2FjaGUucHV0KG4sMSk7dC5wYWdlSW5kZXhDYWNoZS5oYXMobil8fHQucGFnZUluZGV4Q2FjaGUucHV0KG4sMCk7cmV0dXJuW2Usbl19fXRocm93IG5ldyBpLkZvcm1hdEVycm9yKCJUaGUgTGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGRvZXNuJ3QgcG9pbnQgdG8gYSB2YWxpZCBQYWdlIGRpY3Rpb25hcnkuIil9Y2F0Y2goYSl7KDAsaS53YXJuKShgX2dldExpbmVhcml6YXRpb25QYWdlOiAiJHthLm1lc3NhZ2V9Ii5gKTtyZXR1cm4gdC5nZXRQYWdlRGljdChlKX19Z2V0UGFnZShlKXtjb25zdCB0PXRoaXMuX3BhZ2VQcm9taXNlcy5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdHtjYXRhbG9nOmEsbGluZWFyaXphdGlvbjpyLHhmYUZhY3Rvcnk6aX09dGhpcztsZXQgbjtuPWk/UHJvbWlzZS5yZXNvbHZlKFtzLkRpY3QuZW1wdHksbnVsbF0pOnI/LnBhZ2VGaXJzdD09PWU/dGhpcy5fZ2V0TGluZWFyaXphdGlvblBhZ2UoZSk6YS5nZXRQYWdlRGljdChlKTtuPW4udGhlbigoKFt0LHJdKT0+bmV3IFBhZ2Uoe3BkZk1hbmFnZXI6dGhpcy5wZGZNYW5hZ2VyLHhyZWY6dGhpcy54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0OnQscmVmOnIsZ2xvYmFsSWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6YS5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTphLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOmEuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6YS5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTphLnN5c3RlbUZvbnRDYWNoZSxub25CbGVuZE1vZGVzU2V0OmEubm9uQmxlbmRNb2Rlc1NldCx4ZmFGYWN0b3J5Oml9KSkpO3RoaXMuX3BhZ2VQcm9taXNlcy5zZXQoZSxuKTtyZXR1cm4gbn1hc3luYyBjaGVja0ZpcnN0UGFnZShlPSExKXtpZighZSl0cnl7YXdhaXQgdGhpcy5nZXRQYWdlKDApfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBuLlhSZWZFbnRyeUV4Y2VwdGlvbil7dGhpcy5fcGFnZVByb21pc2VzLmRlbGV0ZSgwKTthd2FpdCB0aGlzLmNsZWFudXAoKTt0aHJvdyBuZXcgbi5YUmVmUGFyc2VFeGNlcHRpb259fX1hc3luYyBjaGVja0xhc3RQYWdlKGU9ITEpe2NvbnN0e2NhdGFsb2c6dCxwZGZNYW5hZ2VyOmF9PXRoaXM7dC5zZXRBY3R1YWxOdW1QYWdlcygpO2xldCByO3RyeXthd2FpdCBQcm9taXNlLmFsbChbYS5lbnN1cmVEb2MoInhmYUZhY3RvcnkiKSxhLmVuc3VyZURvYygibGluZWFyaXphdGlvbiIpLGEuZW5zdXJlQ2F0YWxvZygibnVtUGFnZXMiKV0pO2lmKHRoaXMueGZhRmFjdG9yeSlyZXR1cm47cj10aGlzLmxpbmVhcml6YXRpb24/dGhpcy5saW5lYXJpemF0aW9uLm51bVBhZ2VzOnQubnVtUGFnZXM7aWYoIU51bWJlci5pc0ludGVnZXIocikpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoIlBhZ2UgY291bnQgaXMgbm90IGFuIGludGVnZXIuIik7aWYocjw9MSlyZXR1cm47YXdhaXQgdGhpcy5nZXRQYWdlKHItMSl9Y2F0Y2gocyl7dGhpcy5fcGFnZVByb21pc2VzLmRlbGV0ZShyLTEpO2F3YWl0IHRoaXMuY2xlYW51cCgpO2lmKHMgaW5zdGFuY2VvZiBuLlhSZWZFbnRyeUV4Y2VwdGlvbiYmIWUpdGhyb3cgbmV3IG4uWFJlZlBhcnNlRXhjZXB0aW9uOygwLGkud2FybikoYGNoZWNrTGFzdFBhZ2UgLSBpbnZhbGlkIC9QYWdlcyB0cmVlIC9Db3VudDogJHtyfS5gKTtsZXQgbzt0cnl7bz1hd2FpdCB0LmdldEFsbFBhZ2VEaWN0cyhlKX1jYXRjaChhKXtpZihhIGluc3RhbmNlb2Ygbi5YUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IG5ldyBuLlhSZWZQYXJzZUV4Y2VwdGlvbjt0LnNldEFjdHVhbE51bVBhZ2VzKDEpO3JldHVybn1mb3IoY29uc3RbZSxbcixpXV1vZiBvKXtsZXQgbjtpZihyIGluc3RhbmNlb2YgRXJyb3Ipe249UHJvbWlzZS5yZWplY3Qocik7bi5jYXRjaCgoKCk9Pnt9KSl9ZWxzZSBuPVByb21pc2UucmVzb2x2ZShuZXcgUGFnZSh7cGRmTWFuYWdlcjphLHhyZWY6dGhpcy54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0OnIscmVmOmksZ2xvYmFsSWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6dC5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0LmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnQuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dC5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0LnN5c3RlbUZvbnRDYWNoZSxub25CbGVuZE1vZGVzU2V0OnQubm9uQmxlbmRNb2Rlc1NldCx4ZmFGYWN0b3J5Om51bGx9KSk7dGhpcy5fcGFnZVByb21pc2VzLnNldChlLG4pfXQuc2V0QWN0dWFsTnVtUGFnZXMoby5zaXplKX19Zm9udEZhbGxiYWNrKGUsdCl7cmV0dXJuIHRoaXMuY2F0YWxvZy5mb250RmFsbGJhY2soZSx0KX1hc3luYyBjbGVhbnVwKGU9ITEpe3JldHVybiB0aGlzLmNhdGFsb2c/dGhpcy5jYXRhbG9nLmNsZWFudXAoZSk6KDAsdS5jbGVhckdsb2JhbENhY2hlcykoKX1fY29sbGVjdEZpZWxkT2JqZWN0cyhlLHQsYSl7Y29uc3Qgbj10aGlzLnhyZWYuZmV0Y2hJZlJlZih0KTtpZihuLmhhcygiVCIpKXtjb25zdCB0PSgwLGkuc3RyaW5nVG9QREZTdHJpbmcpKG4uZ2V0KCJUIikpO2U9IiI9PT1lP3Q6YCR7ZX0uJHt0fWB9YS5oYXMoZSl8fGEuc2V0KGUsW10pO2EuZ2V0KGUpLnB1c2goci5Bbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUodGhpcy54cmVmLHQsdGhpcy5wZGZNYW5hZ2VyLHRoaXMuX2xvY2FsSWRGYWN0b3J5LCEwKS50aGVuKChlPT5lPy5nZXRGaWVsZE9iamVjdCgpKSkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLGkud2FybikoYF9jb2xsZWN0RmllbGRPYmplY3RzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO2lmKG4uaGFzKCJLaWRzIikpe2NvbnN0IHQ9bi5nZXQoIktpZHMiKTtmb3IoY29uc3QgciBvZiB0KXRoaXMuX2NvbGxlY3RGaWVsZE9iamVjdHMoZSxyLGEpfX1nZXQgZmllbGRPYmplY3RzKCl7aWYoIXRoaXMuZm9ybUluZm8uaGFzRmllbGRzKXJldHVybigwLGkuc2hhZG93KSh0aGlzLCJmaWVsZE9iamVjdHMiLFByb21pc2UucmVzb2x2ZShudWxsKSk7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpLHQ9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiB0aGlzLmNhdGFsb2cuYWNyb0Zvcm0uZ2V0KCJGaWVsZHMiKSl0aGlzLl9jb2xsZWN0RmllbGRPYmplY3RzKCIiLGUsdCk7Y29uc3QgYT1bXTtmb3IoY29uc3RbcixpXW9mIHQpYS5wdXNoKFByb21pc2UuYWxsKGkpLnRoZW4oKHQ9PnsodD10LmZpbHRlcigoZT0+ISFlKSkpLmxlbmd0aD4wJiYoZVtyXT10KX0pKSk7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImZpZWxkT2JqZWN0cyIsUHJvbWlzZS5hbGwoYSkudGhlbigoKCk9PmUpKSl9Z2V0IGhhc0pTQWN0aW9ucygpe2NvbnN0IGU9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiX3BhcnNlSGFzSlNBY3Rpb25zIik7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImhhc0pTQWN0aW9ucyIsZSl9YXN5bmMgX3BhcnNlSGFzSlNBY3Rpb25zKCl7Y29uc3RbZSx0XT1hd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImpzQWN0aW9ucyIpLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpXSk7cmV0dXJuISFlfHwhIXQmJk9iamVjdC52YWx1ZXModCkuc29tZSgoZT0+ZS5zb21lKChlPT5udWxsIT09ZS5hY3Rpb25zKSkpKX1nZXQgY2FsY3VsYXRpb25PcmRlcklkcygpe2NvbnN0IGU9dGhpcy5jYXRhbG9nLmFjcm9Gb3JtO2lmKCFlPy5oYXMoIkNPIikpcmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpO2NvbnN0IHQ9ZS5nZXQoIkNPIik7aWYoIUFycmF5LmlzQXJyYXkodCl8fDA9PT10Lmxlbmd0aClyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCk7Y29uc3QgYT1bXTtmb3IoY29uc3QgZSBvZiB0KWUgaW5zdGFuY2VvZiBzLlJlZiYmYS5wdXNoKGUudG9TdHJpbmcoKSk7cmV0dXJuIDA9PT1hLmxlbmd0aD8oMCxpLnNoYWRvdykodGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCk6KDAsaS5zaGFkb3cpKHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLGEpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Qb3B1cEFubm90YXRpb249dC5NYXJrdXBBbm5vdGF0aW9uPXQuQW5ub3RhdGlvbkZhY3Rvcnk9dC5Bbm5vdGF0aW9uQm9yZGVyU3R5bGU9dC5Bbm5vdGF0aW9uPXZvaWQgMDt0LmdldFF1YWRQb2ludHM9Z2V0UXVhZFBvaW50czt2YXIgcj1hKDIpLGk9YSgzKSxuPWEoMTEpLHM9YSg0KSxvPWEoNjYpLGM9YSg1KSxsPWEoNjApLGg9YSg3MCksdT1hKDEyKSxkPWEoNzMpLGY9YSg3NiksZz1hKDY0KSxwPWEoOCksbT1hKDc3KTt0LkFubm90YXRpb25GYWN0b3J5PWNsYXNzIEFubm90YXRpb25GYWN0b3J5e3N0YXRpYyBjcmVhdGUoZSx0LGEscixpKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2EuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKSxhLmVuc3VyZUNhdGFsb2coImJhc2VVcmwiKSxhLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIiksYS5lbnN1cmVEb2MoInhmYURhdGFzZXRzIiksaT90aGlzLl9nZXRQYWdlSW5kZXgoZSx0LGEpOi0xXSkudGhlbigoKFtuLHMsbyxjLGxdKT0+YS5lbnN1cmUodGhpcywiX2NyZWF0ZSIsW2UsdCxhLHIsbixvLGMsaSxsXSkpKX1zdGF0aWMgX2NyZWF0ZShlLHQsYSxuLG8sYz1udWxsLGwsaCx1PS0xKXtjb25zdCBkPWUuZmV0Y2hJZlJlZih0KTtpZighKGQgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybjtjb25zdCBmPXQgaW5zdGFuY2VvZiBzLlJlZj90LnRvU3RyaW5nKCk6YGFubm90XyR7bi5jcmVhdGVPYmpJZCgpfWA7bGV0IGc9ZC5nZXQoIlN1YnR5cGUiKTtnPWcgaW5zdGFuY2VvZiBzLk5hbWU/Zy5uYW1lOm51bGw7Y29uc3QgcD1vIGluc3RhbmNlb2Ygcy5EaWN0P286cy5EaWN0LmVtcHR5LG09e3hyZWY6ZSxyZWY6dCxkaWN0OmQsc3VidHlwZTpnLGlkOmYscGRmTWFuYWdlcjphLGFjcm9Gb3JtOnAsYXR0YWNobWVudHM6Yyx4ZmFEYXRhc2V0czpsLGNvbGxlY3RGaWVsZHM6aCxuZWVkQXBwZWFyYW5jZXM6IWgmJiEwPT09cC5nZXQoIk5lZWRBcHBlYXJhbmNlcyIpLHBhZ2VJbmRleDp1LGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmEuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZH07c3dpdGNoKGcpe2Nhc2UiTGluayI6cmV0dXJuIG5ldyBMaW5rQW5ub3RhdGlvbihtKTtjYXNlIlRleHQiOnJldHVybiBuZXcgVGV4dEFubm90YXRpb24obSk7Y2FzZSJXaWRnZXQiOmxldCBlPSgwLGkuZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6ZCxrZXk6IkZUIn0pO2U9ZSBpbnN0YW5jZW9mIHMuTmFtZT9lLm5hbWU6bnVsbDtzd2l0Y2goZSl7Y2FzZSJUeCI6cmV0dXJuIG5ldyBUZXh0V2lkZ2V0QW5ub3RhdGlvbihtKTtjYXNlIkJ0biI6cmV0dXJuIG5ldyBCdXR0b25XaWRnZXRBbm5vdGF0aW9uKG0pO2Nhc2UiQ2giOnJldHVybiBuZXcgQ2hvaWNlV2lkZ2V0QW5ub3RhdGlvbihtKTtjYXNlIlNpZyI6cmV0dXJuIG5ldyBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uKG0pfSgwLHIud2FybikoYFVuaW1wbGVtZW50ZWQgd2lkZ2V0IGZpZWxkIHR5cGUgIiR7ZX0iLCBmYWxsaW5nIGJhY2sgdG8gYmFzZSBmaWVsZCB0eXBlLmApO3JldHVybiBuZXcgV2lkZ2V0QW5ub3RhdGlvbihtKTtjYXNlIlBvcHVwIjpyZXR1cm4gbmV3IFBvcHVwQW5ub3RhdGlvbihtKTtjYXNlIkZyZWVUZXh0IjpyZXR1cm4gbmV3IEZyZWVUZXh0QW5ub3RhdGlvbihtKTtjYXNlIkxpbmUiOnJldHVybiBuZXcgTGluZUFubm90YXRpb24obSk7Y2FzZSJTcXVhcmUiOnJldHVybiBuZXcgU3F1YXJlQW5ub3RhdGlvbihtKTtjYXNlIkNpcmNsZSI6cmV0dXJuIG5ldyBDaXJjbGVBbm5vdGF0aW9uKG0pO2Nhc2UiUG9seUxpbmUiOnJldHVybiBuZXcgUG9seWxpbmVBbm5vdGF0aW9uKG0pO2Nhc2UiUG9seWdvbiI6cmV0dXJuIG5ldyBQb2x5Z29uQW5ub3RhdGlvbihtKTtjYXNlIkNhcmV0IjpyZXR1cm4gbmV3IENhcmV0QW5ub3RhdGlvbihtKTtjYXNlIkluayI6cmV0dXJuIG5ldyBJbmtBbm5vdGF0aW9uKG0pO2Nhc2UiSGlnaGxpZ2h0IjpyZXR1cm4gbmV3IEhpZ2hsaWdodEFubm90YXRpb24obSk7Y2FzZSJVbmRlcmxpbmUiOnJldHVybiBuZXcgVW5kZXJsaW5lQW5ub3RhdGlvbihtKTtjYXNlIlNxdWlnZ2x5IjpyZXR1cm4gbmV3IFNxdWlnZ2x5QW5ub3RhdGlvbihtKTtjYXNlIlN0cmlrZU91dCI6cmV0dXJuIG5ldyBTdHJpa2VPdXRBbm5vdGF0aW9uKG0pO2Nhc2UiU3RhbXAiOnJldHVybiBuZXcgU3RhbXBBbm5vdGF0aW9uKG0pO2Nhc2UiRmlsZUF0dGFjaG1lbnQiOnJldHVybiBuZXcgRmlsZUF0dGFjaG1lbnRBbm5vdGF0aW9uKG0pO2RlZmF1bHQ6aHx8KGc/KDAsci53YXJuKShgVW5pbXBsZW1lbnRlZCBhbm5vdGF0aW9uIHR5cGUgIiR7Z30iLCBmYWxsaW5nIGJhY2sgdG8gYmFzZSBhbm5vdGF0aW9uLmApOigwLHIud2FybikoIkFubm90YXRpb24gaXMgbWlzc2luZyB0aGUgcmVxdWlyZWQgL1N1YnR5cGUuIikpO3JldHVybiBuZXcgQW5ub3RhdGlvbihtKX19c3RhdGljIGFzeW5jIF9nZXRQYWdlSW5kZXgoZSx0LGEpe3RyeXtjb25zdCByPWF3YWl0IGUuZmV0Y2hJZlJlZkFzeW5jKHQpO2lmKCEociBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuLTE7Y29uc3QgaT1yLmdldFJhdygiUCIpO2lmKCEoaSBpbnN0YW5jZW9mIHMuUmVmKSlyZXR1cm4tMTtyZXR1cm4gYXdhaXQgYS5lbnN1cmVDYXRhbG9nKCJnZXRQYWdlSW5kZXgiLFtpXSl9Y2F0Y2goZSl7KDAsci53YXJuKShgX2dldFBhZ2VJbmRleDogIiR7ZX0iLmApO3JldHVybi0xfX1zdGF0aWMgYXN5bmMgc2F2ZU5ld0Fubm90YXRpb25zKGUsdCxhKXtjb25zdCBpPWUueHJlZjtsZXQgbjtjb25zdCBjPVtdLGw9W107Zm9yKGNvbnN0IGggb2YgYSlzd2l0Y2goaC5hbm5vdGF0aW9uVHlwZSl7Y2FzZSByLkFubm90YXRpb25FZGl0b3JUeXBlLkZSRUVURVhUOmlmKCFuKXtjb25zdCBlPW5ldyBzLkRpY3QoaSk7ZS5zZXQoIkJhc2VGb250IixzLk5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkZvbnQiKSk7ZS5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIlR5cGUxIikpO2Uuc2V0KCJFbmNvZGluZyIscy5OYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO2NvbnN0IHQ9W107bj1pLmdldE5ld1RlbXBvcmFyeVJlZigpO2F3YWl0KDAsby53cml0ZU9iamVjdCkobixlLHQsbnVsbCk7Yy5wdXNoKHtyZWY6bixkYXRhOnQuam9pbigiIil9KX1sLnB1c2goRnJlZVRleHRBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24oaSxoLGMse2V2YWx1YXRvcjplLHRhc2s6dCxiYXNlRm9udFJlZjpufSkpO2JyZWFrO2Nhc2Ugci5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTks6bC5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihpLGgsYykpfXJldHVybnthbm5vdGF0aW9uczphd2FpdCBQcm9taXNlLmFsbChsKSxkZXBlbmRlbmNpZXM6Y319c3RhdGljIGFzeW5jIHByaW50TmV3QW5ub3RhdGlvbnMoZSx0LGEpe2lmKCFhKXJldHVybiBudWxsO2NvbnN0IGk9ZS54cmVmLHtpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpufT1lLm9wdGlvbnMscz1bXTtmb3IoY29uc3QgbyBvZiBhKXN3aXRjaChvLmFubm90YXRpb25UeXBlKXtjYXNlIHIuQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQ6cy5wdXNoKEZyZWVUZXh0QW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oaSxvLHtldmFsdWF0b3I6ZSx0YXNrOnQsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6bn0pKTticmVhaztjYXNlIHIuQW5ub3RhdGlvbkVkaXRvclR5cGUuSU5LOnMucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihpLG8se2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOm59KSl9cmV0dXJuIFByb21pc2UuYWxsKHMpfX07ZnVuY3Rpb24gZ2V0UmdiQ29sb3IoZSx0PW5ldyBVaW50OENsYW1wZWRBcnJheSgzKSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHQ7Y29uc3QgYT10fHxuZXcgVWludDhDbGFtcGVkQXJyYXkoMyk7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG51bGw7Y2FzZSAxOnUuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShlLDAsYSwwKTtyZXR1cm4gYTtjYXNlIDM6dS5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0oZSwwLGEsMCk7cmV0dXJuIGE7Y2FzZSA0OnUuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiSXRlbShlLDAsYSwwKTtyZXR1cm4gYTtkZWZhdWx0OnJldHVybiB0fX1mdW5jdGlvbiBnZXRQZGZDb2xvckFycmF5KGUpe3JldHVybiBBcnJheS5mcm9tKGUsKGU9PmUvMjU1KSl9ZnVuY3Rpb24gZ2V0UXVhZFBvaW50cyhlLHQpe2NvbnN0IGE9ZS5nZXRBcnJheSgiUXVhZFBvaW50cyIpO2lmKCFBcnJheS5pc0FycmF5KGEpfHwwPT09YS5sZW5ndGh8fGEubGVuZ3RoJTg+MClyZXR1cm4gbnVsbDtjb25zdCByPVtdO2ZvcihsZXQgZT0wLGk9YS5sZW5ndGgvODtlPGk7ZSsrKXtsZXQgaT0xLzAsbj0tMS8wLHM9MS8wLG89LTEvMDtmb3IobGV0IHQ9OCplLHI9OCplKzg7dDxyO3QrPTIpe2NvbnN0IGU9YVt0XSxyPWFbdCsxXTtpPU1hdGgubWluKGUsaSk7bj1NYXRoLm1heChlLG4pO3M9TWF0aC5taW4ocixzKTtvPU1hdGgubWF4KHIsbyl9aWYobnVsbCE9PXQmJihpPHRbMF18fG4+dFsyXXx8czx0WzFdfHxvPnRbM10pKXJldHVybiBudWxsO3IucHVzaChbe3g6aSx5Om99LHt4Om4seTpvfSx7eDppLHk6c30se3g6bix5OnN9XSl9cmV0dXJuIHJ9ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtTWF0cml4KGUsdCxhKXtjb25zdFtpLG4scyxvXT1yLlV0aWwuZ2V0QXhpYWxBbGlnbmVkQm91bmRpbmdCb3godCxhKTtpZihpPT09c3x8bj09PW8pcmV0dXJuWzEsMCwwLDEsZVswXSxlWzFdXTtjb25zdCBjPShlWzJdLWVbMF0pLyhzLWkpLGw9KGVbM10tZVsxXSkvKG8tbik7cmV0dXJuW2MsMCwwLGwsZVswXS1pKmMsZVsxXS1uKmxdfWNsYXNzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLnNldFRpdGxlKHQuZ2V0KCJUIikpO3RoaXMuc2V0Q29udGVudHModC5nZXQoIkNvbnRlbnRzIikpO3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZSh0LmdldCgiTSIpKTt0aGlzLnNldEZsYWdzKHQuZ2V0KCJGIikpO3RoaXMuc2V0UmVjdGFuZ2xlKHQuZ2V0QXJyYXkoIlJlY3QiKSk7dGhpcy5zZXRDb2xvcih0LmdldEFycmF5KCJDIikpO3RoaXMuc2V0Qm9yZGVyU3R5bGUodCk7dGhpcy5zZXRBcHBlYXJhbmNlKHQpO3RoaXMuc2V0T3B0aW9uYWxDb250ZW50KHQpO2NvbnN0IG49dC5nZXQoIk1LIik7dGhpcy5zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKG4pO3RoaXMuc2V0Um90YXRpb24obik7dGhpcy5fc3RyZWFtcz1bXTt0aGlzLmFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmFwcGVhcmFuY2UpO2NvbnN0IG89ISEodGhpcy5mbGFncyZyLkFubm90YXRpb25GbGFnLkxPQ0tFRCksYz0hISh0aGlzLmZsYWdzJnIuQW5ub3RhdGlvbkZsYWcuTE9DS0VEQ09OVEVOVFMpO3RoaXMuZGF0YT17YW5ub3RhdGlvbkZsYWdzOnRoaXMuZmxhZ3MsYm9yZGVyU3R5bGU6dGhpcy5ib3JkZXJTdHlsZSxjb2xvcjp0aGlzLmNvbG9yLGJhY2tncm91bmRDb2xvcjp0aGlzLmJhY2tncm91bmRDb2xvcixib3JkZXJDb2xvcjp0aGlzLmJvcmRlckNvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sY29udGVudHNPYmo6dGhpcy5fY29udGVudHMsaGFzQXBwZWFyYW5jZTohIXRoaXMuYXBwZWFyYW5jZSxpZDplLmlkLG1vZGlmaWNhdGlvbkRhdGU6dGhpcy5tb2RpZmljYXRpb25EYXRlLHJlY3Q6dGhpcy5yZWN0YW5nbGUsc3VidHlwZTplLnN1YnR5cGUsaGFzT3duQ2FudmFzOiExLG5vUm90YXRlOiEhKHRoaXMuZmxhZ3Mmci5Bbm5vdGF0aW9uRmxhZy5OT1JPVEFURSksbm9IVE1MOm8mJmN9O2lmKGUuY29sbGVjdEZpZWxkcyl7Y29uc3Qgbj10LmdldCgiS2lkcyIpO2lmKEFycmF5LmlzQXJyYXkobikpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2Ygbil0IGluc3RhbmNlb2Ygcy5SZWYmJmUucHVzaCh0LnRvU3RyaW5nKCkpOzAhPT1lLmxlbmd0aCYmKHRoaXMuZGF0YS5raWRJZHM9ZSl9dGhpcy5kYXRhLmFjdGlvbnM9KDAsaS5jb2xsZWN0QWN0aW9ucykoYSx0LHIuQW5ub3RhdGlvbkFjdGlvbkV2ZW50VHlwZSk7dGhpcy5kYXRhLmZpZWxkTmFtZT10aGlzLl9jb25zdHJ1Y3RGaWVsZE5hbWUodCk7dGhpcy5kYXRhLnBhZ2VJbmRleD1lLnBhZ2VJbmRleH10aGlzLl9pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD1lLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9bnVsbDt0aGlzLl9uZWVkQXBwZWFyYW5jZXM9ITF9X2hhc0ZsYWcoZSx0KXtyZXR1cm4hIShlJnQpfV9pc1ZpZXdhYmxlKGUpe3JldHVybiF0aGlzLl9oYXNGbGFnKGUsci5Bbm5vdGF0aW9uRmxhZy5JTlZJU0lCTEUpJiYhdGhpcy5faGFzRmxhZyhlLHIuQW5ub3RhdGlvbkZsYWcuTk9WSUVXKX1faXNQcmludGFibGUoZSl7cmV0dXJuIHRoaXMuX2hhc0ZsYWcoZSxyLkFubm90YXRpb25GbGFnLlBSSU5UKSYmIXRoaXMuX2hhc0ZsYWcoZSxyLkFubm90YXRpb25GbGFnLklOVklTSUJMRSl9bXVzdEJlVmlld2VkKGUpe2NvbnN0IHQ9ZT8uZ2V0KHRoaXMuZGF0YS5pZCk/LmhpZGRlbjtyZXR1cm4gdm9pZCAwIT09dD8hdDp0aGlzLnZpZXdhYmxlJiYhdGhpcy5faGFzRmxhZyh0aGlzLmZsYWdzLHIuQW5ub3RhdGlvbkZsYWcuSElEREVOKX1tdXN0QmVQcmludGVkKGUpe2NvbnN0IHQ9ZT8uZ2V0KHRoaXMuZGF0YS5pZCk/LnByaW50O3JldHVybiB2b2lkIDAhPT10P3Q6dGhpcy5wcmludGFibGV9Z2V0IHZpZXdhYmxlKCl7cmV0dXJuIG51bGwhPT10aGlzLmRhdGEucXVhZFBvaW50cyYmKDA9PT10aGlzLmZsYWdzfHx0aGlzLl9pc1ZpZXdhYmxlKHRoaXMuZmxhZ3MpKX1nZXQgcHJpbnRhYmxlKCl7cmV0dXJuIG51bGwhPT10aGlzLmRhdGEucXVhZFBvaW50cyYmKDAhPT10aGlzLmZsYWdzJiZ0aGlzLl9pc1ByaW50YWJsZSh0aGlzLmZsYWdzKSl9X3BhcnNlU3RyaW5nSGVscGVyKGUpe2NvbnN0IHQ9InN0cmluZyI9PXR5cGVvZiBlPygwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUpOiIiO3JldHVybntzdHI6dCxkaXI6dCYmInJ0bCI9PT0oMCxsLmJpZGkpKHQpLmRpcj8icnRsIjoibHRyIn19c2V0RGVmYXVsdEFwcGVhcmFuY2UoZSl7Y29uc3QgdD0oMCxpLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OmUuZGljdCxrZXk6IkRBIn0pfHxlLmFjcm9Gb3JtLmdldCgiREEiKTt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0ic3RyaW5nIj09dHlwZW9mIHQ/dDoiIjt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPSgwLG4ucGFyc2VEZWZhdWx0QXBwZWFyYW5jZSkodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2UpfXNldFRpdGxlKGUpe3RoaXMuX3RpdGxlPXRoaXMuX3BhcnNlU3RyaW5nSGVscGVyKGUpfXNldENvbnRlbnRzKGUpe3RoaXMuX2NvbnRlbnRzPXRoaXMuX3BhcnNlU3RyaW5nSGVscGVyKGUpfXNldE1vZGlmaWNhdGlvbkRhdGUoZSl7dGhpcy5tb2RpZmljYXRpb25EYXRlPSJzdHJpbmciPT10eXBlb2YgZT9lOm51bGx9c2V0RmxhZ3MoZSl7dGhpcy5mbGFncz1OdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPjA/ZTowfWhhc0ZsYWcoZSl7cmV0dXJuIHRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyxlKX1zZXRSZWN0YW5nbGUoZSl7QXJyYXkuaXNBcnJheShlKSYmND09PWUubGVuZ3RoP3RoaXMucmVjdGFuZ2xlPXIuVXRpbC5ub3JtYWxpemVSZWN0KGUpOnRoaXMucmVjdGFuZ2xlPVswLDAsMCwwXX1zZXRDb2xvcihlKXt0aGlzLmNvbG9yPWdldFJnYkNvbG9yKGUpfXNldExpbmVFbmRpbmdzKGUpe3RoaXMubGluZUVuZGluZ3M9WyJOb25lIiwiTm9uZSJdO2lmKEFycmF5LmlzQXJyYXkoZSkmJjI9PT1lLmxlbmd0aClmb3IobGV0IHQ9MDt0PDI7dCsrKXtjb25zdCBhPWVbdF07aWYoYSBpbnN0YW5jZW9mIHMuTmFtZSlzd2l0Y2goYS5uYW1lKXtjYXNlIk5vbmUiOmNvbnRpbnVlO2Nhc2UiU3F1YXJlIjpjYXNlIkNpcmNsZSI6Y2FzZSJEaWFtb25kIjpjYXNlIk9wZW5BcnJvdyI6Y2FzZSJDbG9zZWRBcnJvdyI6Y2FzZSJCdXR0IjpjYXNlIlJPcGVuQXJyb3ciOmNhc2UiUkNsb3NlZEFycm93IjpjYXNlIlNsYXNoIjp0aGlzLmxpbmVFbmRpbmdzW3RdPWEubmFtZTtjb250aW51ZX0oMCxyLndhcm4pKGBJZ25vcmluZyBpbnZhbGlkIGxpbmVFbmRpbmc6ICR7YX1gKX19c2V0Um90YXRpb24oZSl7dGhpcy5yb3RhdGlvbj0wO2lmKGUgaW5zdGFuY2VvZiBzLkRpY3Qpe2xldCB0PWUuZ2V0KCJSIil8fDA7aWYoTnVtYmVyLmlzSW50ZWdlcih0KSYmMCE9PXQpe3QlPTM2MDt0PDAmJih0Kz0zNjApO3QlOTA9PTAmJih0aGlzLnJvdGF0aW9uPXQpfX19c2V0Qm9yZGVyQW5kQmFja2dyb3VuZENvbG9ycyhlKXtpZihlIGluc3RhbmNlb2Ygcy5EaWN0KXt0aGlzLmJvcmRlckNvbG9yPWdldFJnYkNvbG9yKGUuZ2V0QXJyYXkoIkJDIiksbnVsbCk7dGhpcy5iYWNrZ3JvdW5kQ29sb3I9Z2V0UmdiQ29sb3IoZS5nZXRBcnJheSgiQkciKSxudWxsKX1lbHNlIHRoaXMuYm9yZGVyQ29sb3I9dGhpcy5iYWNrZ3JvdW5kQ29sb3I9bnVsbH1zZXRCb3JkZXJTdHlsZShlKXt0aGlzLmJvcmRlclN0eWxlPW5ldyBBbm5vdGF0aW9uQm9yZGVyU3R5bGU7aWYoZSBpbnN0YW5jZW9mIHMuRGljdClpZihlLmhhcygiQlMiKSl7Y29uc3QgdD1lLmdldCgiQlMiKSxhPXQuZ2V0KCJUeXBlIik7aWYoIWF8fCgwLHMuaXNOYW1lKShhLCJCb3JkZXIiKSl7dGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCh0LmdldCgiVyIpLHRoaXMucmVjdGFuZ2xlKTt0aGlzLmJvcmRlclN0eWxlLnNldFN0eWxlKHQuZ2V0KCJTIikpO3RoaXMuYm9yZGVyU3R5bGUuc2V0RGFzaEFycmF5KHQuZ2V0QXJyYXkoIkQiKSl9fWVsc2UgaWYoZS5oYXMoIkJvcmRlciIpKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkJvcmRlciIpO2lmKEFycmF5LmlzQXJyYXkodCkmJnQubGVuZ3RoPj0zKXt0aGlzLmJvcmRlclN0eWxlLnNldEhvcml6b250YWxDb3JuZXJSYWRpdXModFswXSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRWZXJ0aWNhbENvcm5lclJhZGl1cyh0WzFdKTt0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKHRbMl0sdGhpcy5yZWN0YW5nbGUpOzQ9PT10Lmxlbmd0aCYmdGhpcy5ib3JkZXJTdHlsZS5zZXREYXNoQXJyYXkodFszXSwhMCl9fWVsc2UgdGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCgwKX1zZXRBcHBlYXJhbmNlKGUpe3RoaXMuYXBwZWFyYW5jZT1udWxsO2NvbnN0IHQ9ZS5nZXQoIkFQIik7aWYoISh0IGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Y29uc3QgYT10LmdldCgiTiIpO2lmKGEgaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0pe3RoaXMuYXBwZWFyYW5jZT1hO3JldHVybn1pZighKGEgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybjtjb25zdCByPWUuZ2V0KCJBUyIpO2lmKCEociBpbnN0YW5jZW9mIHMuTmFtZSYmYS5oYXMoci5uYW1lKSkpcmV0dXJuO2NvbnN0IGk9YS5nZXQoci5uYW1lKTtpIGluc3RhbmNlb2YgYy5CYXNlU3RyZWFtJiYodGhpcy5hcHBlYXJhbmNlPWkpfXNldE9wdGlvbmFsQ29udGVudChlKXt0aGlzLm9jPW51bGw7Y29uc3QgdD1lLmdldCgiT0MiKTt0IGluc3RhbmNlb2Ygcy5OYW1lPygwLHIud2FybikoInNldE9wdGlvbmFsQ29udGVudDogU3VwcG9ydCBmb3IgL05hbWUtZW50cnkgaXMgbm90IGltcGxlbWVudGVkLiIpOnQgaW5zdGFuY2VvZiBzLkRpY3QmJih0aGlzLm9jPXQpfWxvYWRSZXNvdXJjZXMoZSx0KXtyZXR1cm4gdC5kaWN0LmdldEFzeW5jKCJSZXNvdXJjZXMiKS50aGVuKCh0PT57aWYoIXQpcmV0dXJuO3JldHVybiBuZXcgZi5PYmplY3RMb2FkZXIodCxlLHQueHJlZikubG9hZCgpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHR9KSl9KSl9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLGksbil7Y29uc3Qgbz10aGlzLmRhdGE7bGV0IGM9dGhpcy5hcHBlYXJhbmNlO2NvbnN0IGw9ISEodGhpcy5kYXRhLmhhc093bkNhbnZhcyYmYSZyLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSk7aWYoIWMpe2lmKCFsKXJldHVybntvcExpc3Q6bmV3IGcuT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX07Yz1uZXcgcC5TdHJpbmdTdHJlYW0oIiIpO2MuZGljdD1uZXcgcy5EaWN0fWNvbnN0IGg9Yy5kaWN0LHU9YXdhaXQgdGhpcy5sb2FkUmVzb3VyY2VzKFsiRXh0R1N0YXRlIiwiQ29sb3JTcGFjZSIsIlBhdHRlcm4iLCJTaGFkaW5nIiwiWE9iamVjdCIsIkZvbnQiXSxjKSxkPWguZ2V0QXJyYXkoIkJCb3giKXx8WzAsMCwxLDFdLGY9aC5nZXRBcnJheSgiTWF0cml4Iil8fFsxLDAsMCwxLDAsMF0sbT1nZXRUcmFuc2Zvcm1NYXRyaXgoby5yZWN0LGQsZiksYj1uZXcgZy5PcGVyYXRvckxpc3Q7bGV0IHk7dGhpcy5vYyYmKHk9YXdhaXQgZS5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyh0aGlzLm9jLG51bGwpKTt2b2lkIDAhPT15JiZiLmFkZE9wKHIuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzLFsiT0MiLHldKTtiLmFkZE9wKHIuT1BTLmJlZ2luQW5ub3RhdGlvbixbby5pZCxvLnJlY3QsbSxmLGxdKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmMsdGFzazp0LHJlc291cmNlczp1LG9wZXJhdG9yTGlzdDpiLGZhbGxiYWNrRm9udERpY3Q6dGhpcy5fZmFsbGJhY2tGb250RGljdH0pO2IuYWRkT3Aoci5PUFMuZW5kQW5ub3RhdGlvbixbXSk7dm9pZCAwIT09eSYmYi5hZGRPcChyLk9QUy5lbmRNYXJrZWRDb250ZW50LFtdKTt0aGlzLnJlc2V0KCk7cmV0dXJue29wTGlzdDpiLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczpsfX1hc3luYyBzYXZlKGUsdCxhKXtyZXR1cm4gbnVsbH1nZXQgaGFzVGV4dENvbnRlbnQoKXtyZXR1cm4hMX1hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoZSx0LGEpe2lmKCF0aGlzLmFwcGVhcmFuY2UpcmV0dXJuO2NvbnN0IHI9YXdhaXQgdGhpcy5sb2FkUmVzb3VyY2VzKFsiRXh0R1N0YXRlIiwiRm9udCIsIlByb3BlcnRpZXMiLCJYT2JqZWN0Il0sdGhpcy5hcHBlYXJhbmNlKSxpPVtdLG49W10scz17ZGVzaXJlZFNpemU6TWF0aC5JbmZpbml0eSxyZWFkeTohMCxlbnF1ZXVlKGUsdCl7Zm9yKGNvbnN0IHQgb2YgZS5pdGVtcyl7bi5wdXNoKHQuc3RyKTtpZih0Lmhhc0VPTCl7aS5wdXNoKG4uam9pbigiIikpO24ubGVuZ3RoPTB9fX19O2F3YWl0IGUuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTp0aGlzLmFwcGVhcmFuY2UsdGFzazp0LHJlc291cmNlczpyLGluY2x1ZGVNYXJrZWRDb250ZW50OiEwLHNpbms6cyx2aWV3Qm94OmF9KTt0aGlzLnJlc2V0KCk7bi5sZW5ndGgmJmkucHVzaChuLmpvaW4oIiIpKTtpLmxlbmd0aD4wJiYodGhpcy5kYXRhLnRleHRDb250ZW50PWkpfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJuIHRoaXMuZGF0YS5raWRJZHM/e2lkOnRoaXMuZGF0YS5pZCxhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3IsdHlwZToiIixraWRJZHM6dGhpcy5kYXRhLmtpZElkcyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgscm90YXRpb246dGhpcy5yb3RhdGlvbn06bnVsbH1yZXNldCgpe2Zvcihjb25zdCBlIG9mIHRoaXMuX3N0cmVhbXMpZS5yZXNldCgpfV9jb25zdHJ1Y3RGaWVsZE5hbWUoZSl7aWYoIWUuaGFzKCJUIikmJiFlLmhhcygiUGFyZW50IikpeygwLHIud2FybikoIlVua25vd24gZmllbGQgbmFtZSwgZmFsbGluZyBiYWNrIHRvIGVtcHR5IGZpZWxkIG5hbWUuIik7cmV0dXJuIiJ9aWYoIWUuaGFzKCJQYXJlbnQiKSlyZXR1cm4oMCxyLnN0cmluZ1RvUERGU3RyaW5nKShlLmdldCgiVCIpKTtjb25zdCB0PVtdO2UuaGFzKCJUIikmJnQudW5zaGlmdCgoMCxyLnN0cmluZ1RvUERGU3RyaW5nKShlLmdldCgiVCIpKSk7bGV0IGE9ZTtjb25zdCBpPW5ldyBzLlJlZlNldDtlLm9iaklkJiZpLnB1dChlLm9iaklkKTtmb3IoO2EuaGFzKCJQYXJlbnQiKTspe2E9YS5nZXQoIlBhcmVudCIpO2lmKCEoYSBpbnN0YW5jZW9mIHMuRGljdCl8fGEub2JqSWQmJmkuaGFzKGEub2JqSWQpKWJyZWFrO2Eub2JqSWQmJmkucHV0KGEub2JqSWQpO2lmKGEuaGFzKCJUIikpe2NvbnN0IGU9KDAsci5zdHJpbmdUb1BERlN0cmluZykoYS5nZXQoIlQiKSk7ZS5zdGFydHNXaXRoKCIjIil8fHQudW5zaGlmdChlKX19cmV0dXJuIHQuam9pbigiLiIpfX10LkFubm90YXRpb249QW5ub3RhdGlvbjtjbGFzcyBBbm5vdGF0aW9uQm9yZGVyU3R5bGV7Y29uc3RydWN0b3IoKXt0aGlzLndpZHRoPTE7dGhpcy5zdHlsZT1yLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuU09MSUQ7dGhpcy5kYXNoQXJyYXk9WzNdO3RoaXMuaG9yaXpvbnRhbENvcm5lclJhZGl1cz0wO3RoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9MH1zZXRXaWR0aChlLHQ9WzAsMCwwLDBdKXtpZihlIGluc3RhbmNlb2Ygcy5OYW1lKXRoaXMud2lkdGg9MDtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgZSl7aWYoZT4wKXtjb25zdCBhPSh0WzJdLXRbMF0pLzIsaT0odFszXS10WzFdKS8yO2lmKGE+MCYmaT4wJiYoZT5hfHxlPmkpKXsoMCxyLndhcm4pKGBBbm5vdGF0aW9uQm9yZGVyU3R5bGUuc2V0V2lkdGggLSBpZ25vcmluZyB3aWR0aDogJHtlfWApO2U9MX19dGhpcy53aWR0aD1lfX1zZXRTdHlsZShlKXtpZihlIGluc3RhbmNlb2Ygcy5OYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiUyI6dGhpcy5zdHlsZT1yLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuU09MSUQ7YnJlYWs7Y2FzZSJEIjp0aGlzLnN0eWxlPXIuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5EQVNIRUQ7YnJlYWs7Y2FzZSJCIjp0aGlzLnN0eWxlPXIuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5CRVZFTEVEO2JyZWFrO2Nhc2UiSSI6dGhpcy5zdHlsZT1yLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuSU5TRVQ7YnJlYWs7Y2FzZSJVIjp0aGlzLnN0eWxlPXIuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5VTkRFUkxJTkV9fXNldERhc2hBcnJheShlLHQ9ITEpe2lmKEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPjApe2xldCBhPSEwLHI9ITA7Zm9yKGNvbnN0IHQgb2YgZSl7aWYoISgrdD49MCkpe2E9ITE7YnJlYWt9dD4wJiYocj0hMSl9aWYoYSYmIXIpe3RoaXMuZGFzaEFycmF5PWU7dCYmdGhpcy5zZXRTdHlsZShzLk5hbWUuZ2V0KCJEIikpfWVsc2UgdGhpcy53aWR0aD0wfWVsc2UgZSYmKHRoaXMud2lkdGg9MCl9c2V0SG9yaXpvbnRhbENvcm5lclJhZGl1cyhlKXtOdW1iZXIuaXNJbnRlZ2VyKGUpJiYodGhpcy5ob3Jpem9udGFsQ29ybmVyUmFkaXVzPWUpfXNldFZlcnRpY2FsQ29ybmVyUmFkaXVzKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0aGlzLnZlcnRpY2FsQ29ybmVyUmFkaXVzPWUpfX10LkFubm90YXRpb25Cb3JkZXJTdHlsZT1Bbm5vdGF0aW9uQm9yZGVyU3R5bGU7Y2xhc3MgTWFya3VwQW5ub3RhdGlvbiBleHRlbmRzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO2lmKHQuaGFzKCJJUlQiKSl7Y29uc3QgZT10LmdldFJhdygiSVJUIik7dGhpcy5kYXRhLmluUmVwbHlUbz1lIGluc3RhbmNlb2Ygcy5SZWY/ZS50b1N0cmluZygpOm51bGw7Y29uc3QgYT10LmdldCgiUlQiKTt0aGlzLmRhdGEucmVwbHlUeXBlPWEgaW5zdGFuY2VvZiBzLk5hbWU/YS5uYW1lOnIuQW5ub3RhdGlvblJlcGx5VHlwZS5SRVBMWX1pZih0aGlzLmRhdGEucmVwbHlUeXBlPT09ci5Bbm5vdGF0aW9uUmVwbHlUeXBlLkdST1VQKXtjb25zdCBlPXQuZ2V0KCJJUlQiKTt0aGlzLnNldFRpdGxlKGUuZ2V0KCJUIikpO3RoaXMuZGF0YS50aXRsZU9iaj10aGlzLl90aXRsZTt0aGlzLnNldENvbnRlbnRzKGUuZ2V0KCJDb250ZW50cyIpKTt0aGlzLmRhdGEuY29udGVudHNPYmo9dGhpcy5fY29udGVudHM7aWYoZS5oYXMoIkNyZWF0aW9uRGF0ZSIpKXt0aGlzLnNldENyZWF0aW9uRGF0ZShlLmdldCgiQ3JlYXRpb25EYXRlIikpO3RoaXMuZGF0YS5jcmVhdGlvbkRhdGU9dGhpcy5jcmVhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEuY3JlYXRpb25EYXRlPW51bGw7aWYoZS5oYXMoIk0iKSl7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKGUuZ2V0KCJNIikpO3RoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPXRoaXMubW9kaWZpY2F0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPW51bGw7dGhpcy5kYXRhLmhhc1BvcHVwPWUuaGFzKCJQb3B1cCIpO2lmKGUuaGFzKCJDIikpe3RoaXMuc2V0Q29sb3IoZS5nZXRBcnJheSgiQyIpKTt0aGlzLmRhdGEuY29sb3I9dGhpcy5jb2xvcn1lbHNlIHRoaXMuZGF0YS5jb2xvcj1udWxsfWVsc2V7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q3JlYXRpb25EYXRlKHQuZ2V0KCJDcmVhdGlvbkRhdGUiKSk7dGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT10aGlzLmNyZWF0aW9uRGF0ZTt0aGlzLmRhdGEuaGFzUG9wdXA9dC5oYXMoIlBvcHVwIik7dC5oYXMoIkMiKXx8KHRoaXMuZGF0YS5jb2xvcj1udWxsKX10LmhhcygiUkMiKSYmKHRoaXMuZGF0YS5yaWNoVGV4dD1tLlhGQUZhY3RvcnkuZ2V0UmljaFRleHRBc0h0bWwodC5nZXQoIlJDIikpKX1zZXRDcmVhdGlvbkRhdGUoZSl7dGhpcy5jcmVhdGlvbkRhdGU9InN0cmluZyI9PXR5cGVvZiBlP2U6bnVsbH1fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZSxleHRyYTp0LHN0cm9rZUNvbG9yOmEsZmlsbENvbG9yOnIsYmxlbmRNb2RlOmksc3Ryb2tlQWxwaGE6bixmaWxsQWxwaGE6byxwb2ludHNDYWxsYmFjazpjfSl7bGV0IGw9TnVtYmVyLk1BWF9WQUxVRSxoPU51bWJlci5NQVhfVkFMVUUsdT1OdW1iZXIuTUlOX1ZBTFVFLGQ9TnVtYmVyLk1JTl9WQUxVRTtjb25zdCBmPVsicSJdO3QmJmYucHVzaCh0KTthJiZmLnB1c2goYCR7YVswXX0gJHthWzFdfSAke2FbMl19IFJHYCk7ciYmZi5wdXNoKGAke3JbMF19ICR7clsxXX0gJHtyWzJdfSByZ2ApO2xldCBnPXRoaXMuZGF0YS5xdWFkUG9pbnRzO2d8fChnPVtbe3g6dGhpcy5yZWN0YW5nbGVbMF0seTp0aGlzLnJlY3RhbmdsZVszXX0se3g6dGhpcy5yZWN0YW5nbGVbMl0seTp0aGlzLnJlY3RhbmdsZVszXX0se3g6dGhpcy5yZWN0YW5nbGVbMF0seTp0aGlzLnJlY3RhbmdsZVsxXX0se3g6dGhpcy5yZWN0YW5nbGVbMl0seTp0aGlzLnJlY3RhbmdsZVsxXX1dXSk7Zm9yKGNvbnN0IGUgb2YgZyl7Y29uc3RbdCxhLHIsaV09YyhmLGUpO2w9TWF0aC5taW4obCx0KTt1PU1hdGgubWF4KHUsYSk7aD1NYXRoLm1pbihoLHIpO2Q9TWF0aC5tYXgoZCxpKX1mLnB1c2goIlEiKTtjb25zdCBtPW5ldyBzLkRpY3QoZSksYj1uZXcgcy5EaWN0KGUpO2Iuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGb3JtIikpO2NvbnN0IHk9bmV3IHAuU3RyaW5nU3RyZWFtKGYuam9pbigiICIpKTt5LmRpY3Q9YjttLnNldCgiRm0wIix5KTtjb25zdCB3PW5ldyBzLkRpY3QoZSk7aSYmdy5zZXQoIkJNIixzLk5hbWUuZ2V0KGkpKTsibnVtYmVyIj09dHlwZW9mIG4mJncuc2V0KCJDQSIsbik7Im51bWJlciI9PXR5cGVvZiBvJiZ3LnNldCgiY2EiLG8pO2NvbnN0IFM9bmV3IHMuRGljdChlKTtTLnNldCgiR1MwIix3KTtjb25zdCB4PW5ldyBzLkRpY3QoZSk7eC5zZXQoIkV4dEdTdGF0ZSIsUyk7eC5zZXQoIlhPYmplY3QiLG0pO2NvbnN0IEM9bmV3IHMuRGljdChlKTtDLnNldCgiUmVzb3VyY2VzIix4KTtjb25zdCBrPXRoaXMuZGF0YS5yZWN0PVtsLGgsdSxkXTtDLnNldCgiQkJveCIsayk7dGhpcy5hcHBlYXJhbmNlPW5ldyBwLlN0cmluZ1N0cmVhbSgiL0dTMCBncyAvRm0wIERvIik7dGhpcy5hcHBlYXJhbmNlLmRpY3Q9Qzt0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlLHkpfXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBbm5vdGF0aW9uKGUsdCxhLHIpe2NvbnN0IGk9ZS5nZXROZXdUZW1wb3JhcnlSZWYoKSxuPWF3YWl0IHRoaXMuY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbSh0LGUscikscz1bXTtsZXQgYztpZihuKXtjb25zdCByPWUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7Yz10aGlzLmNyZWF0ZU5ld0RpY3QodCxlLHthcFJlZjpyfSk7Y29uc3QgaT1lLmVuY3J5cHQ/ZS5lbmNyeXB0LmNyZWF0ZUNpcGhlclRyYW5zZm9ybShyLm51bSxyLmdlbik6bnVsbDthd2FpdCgwLG8ud3JpdGVPYmplY3QpKHIsbixzLGkpO2EucHVzaCh7cmVmOnIsZGF0YTpzLmpvaW4oIiIpfSl9ZWxzZSBjPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse30pO3MubGVuZ3RoPTA7Y29uc3QgbD1lLmVuY3J5cHQ/ZS5lbmNyeXB0LmNyZWF0ZUNpcGhlclRyYW5zZm9ybShpLm51bSxpLmdlbik6bnVsbDthd2FpdCgwLG8ud3JpdGVPYmplY3QpKGksYyxzLGwpO3JldHVybntyZWY6aSxkYXRhOnMuam9pbigiIil9fXN0YXRpYyBhc3luYyBjcmVhdGVOZXdQcmludEFubm90YXRpb24oZSx0LGEpe2NvbnN0IHI9YXdhaXQgdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKHQsZSxhKSxpPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse2FwOnJ9KTtyZXR1cm4gbmV3IHRoaXMucHJvdG90eXBlLmNvbnN0cnVjdG9yKHtkaWN0OmkseHJlZjplLGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmEuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWR9KX19dC5NYXJrdXBBbm5vdGF0aW9uPU1hcmt1cEFubm90YXRpb247Y2xhc3MgV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZSxuPXRoaXMuZGF0YTt0aGlzLnJlZj1lLnJlZjt0aGlzLl9uZWVkQXBwZWFyYW5jZXM9ZS5uZWVkQXBwZWFyYW5jZXM7bi5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLldJREdFVDt2b2lkIDA9PT1uLmZpZWxkTmFtZSYmKG4uZmllbGROYW1lPXRoaXMuX2NvbnN0cnVjdEZpZWxkTmFtZSh0KSk7dm9pZCAwPT09bi5hY3Rpb25zJiYobi5hY3Rpb25zPSgwLGkuY29sbGVjdEFjdGlvbnMpKGEsdCxyLkFubm90YXRpb25BY3Rpb25FdmVudFR5cGUpKTtsZXQgbz0oMCxpLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJWIixnZXRBcnJheTohMH0pO24uZmllbGRWYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUobyk7Y29uc3QgYz0oMCxpLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJEViIsZ2V0QXJyYXk6ITB9KTtuLmRlZmF1bHRGaWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShjKTtpZih2b2lkIDA9PT1vJiZlLnhmYURhdGFzZXRzKXtjb25zdCB0PXRoaXMuX3RpdGxlLnN0cjtpZih0KXt0aGlzLl9oYXNWYWx1ZUZyb21YRkE9ITA7bi5maWVsZFZhbHVlPW89ZS54ZmFEYXRhc2V0cy5nZXRWYWx1ZSh0KX19dm9pZCAwPT09byYmbnVsbCE9PW4uZGVmYXVsdEZpZWxkVmFsdWUmJihuLmZpZWxkVmFsdWU9bi5kZWZhdWx0RmllbGRWYWx1ZSk7bi5hbHRlcm5hdGl2ZVRleHQ9KDAsci5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIlRVIil8fCIiKTt0aGlzLnNldERlZmF1bHRBcHBlYXJhbmNlKGUpO24uaGFzQXBwZWFyYW5jZXx8PXRoaXMuX25lZWRBcHBlYXJhbmNlcyYmdm9pZCAwIT09bi5maWVsZFZhbHVlJiZudWxsIT09bi5maWVsZFZhbHVlO2NvbnN0IGw9KDAsaS5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDp0LGtleToiRlQifSk7bi5maWVsZFR5cGU9bCBpbnN0YW5jZW9mIHMuTmFtZT9sLm5hbWU6bnVsbDtjb25zdCBoPSgwLGkuZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6IkRSIn0pLHU9ZS5hY3JvRm9ybS5nZXQoIkRSIiksZD10aGlzLmFwcGVhcmFuY2U/LmRpY3QuZ2V0KCJSZXNvdXJjZXMiKTt0aGlzLl9maWVsZFJlc291cmNlcz17bG9jYWxSZXNvdXJjZXM6aCxhY3JvRm9ybVJlc291cmNlczp1LGFwcGVhcmFuY2VSZXNvdXJjZXM6ZCxtZXJnZWRSZXNvdXJjZXM6cy5EaWN0Lm1lcmdlKHt4cmVmOmEsZGljdEFycmF5OltoLGQsdV0sbWVyZ2VTdWJEaWN0czohMH0pfTtuLmZpZWxkRmxhZ3M9KDAsaS5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDp0LGtleToiRmYifSk7KCFOdW1iZXIuaXNJbnRlZ2VyKG4uZmllbGRGbGFncyl8fG4uZmllbGRGbGFnczwwKSYmKG4uZmllbGRGbGFncz0wKTtuLnJlYWRPbmx5PXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5SRUFET05MWSk7bi5yZXF1aXJlZD10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUkVRVUlSRUQpO24uaGlkZGVuPXRoaXMuX2hhc0ZsYWcobi5hbm5vdGF0aW9uRmxhZ3Msci5Bbm5vdGF0aW9uRmxhZy5ISURERU4pfV9kZWNvZGVGb3JtVmFsdWUoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5maWx0ZXIoKGU9PiJzdHJpbmciPT10eXBlb2YgZSkpLm1hcCgoZT0+KDAsci5zdHJpbmdUb1BERlN0cmluZykoZSkpKTplIGluc3RhbmNlb2Ygcy5OYW1lPygwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUubmFtZSk6InN0cmluZyI9PXR5cGVvZiBlPygwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUpOm51bGx9aGFzRmllbGRGbGFnKGUpe3JldHVybiEhKHRoaXMuZGF0YS5maWVsZEZsYWdzJmUpfWdldFJvdGF0aW9uTWF0cml4KGUpe2xldCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT10JiYodD10aGlzLnJvdGF0aW9uKTtpZigwPT09dClyZXR1cm4gci5JREVOVElUWV9NQVRSSVg7Y29uc3QgYT10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSxuPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdO3JldHVybigwLGkuZ2V0Um90YXRpb25NYXRyaXgpKHQsYSxuKX1nZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQXBwZWFyYW5jZXMoZSl7bGV0IHQ9ZT8uZ2V0KHRoaXMuZGF0YS5pZCk/LnJvdGF0aW9uO3ZvaWQgMD09PXQmJih0PXRoaXMucm90YXRpb24pO2lmKCF0aGlzLmJhY2tncm91bmRDb2xvciYmIXRoaXMuYm9yZGVyQ29sb3IpcmV0dXJuIiI7Y29uc3QgYT10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSxyPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLGk9MD09PXR8fDE4MD09PXQ/YDAgMCAke2F9ICR7cn0gcmVgOmAwIDAgJHtyfSAke2F9IHJlYDtsZXQgcz0iIjt0aGlzLmJhY2tncm91bmRDb2xvciYmKHM9YCR7KDAsbi5nZXRQZGZDb2xvcikodGhpcy5iYWNrZ3JvdW5kQ29sb3IsITApfSAke2l9IGYgYCk7aWYodGhpcy5ib3JkZXJDb2xvcil7cys9YCR7dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MX0gdyAkeygwLG4uZ2V0UGRmQ29sb3IpKHRoaXMuYm9yZGVyQ29sb3IsITEpfSAke2l9IFMgYH1yZXR1cm4gc31hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGEsaSxuKXtpZihpJiYhKHRoaXMgaW5zdGFuY2VvZiBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uKSYmIXRoaXMuZGF0YS5ub0hUTUwmJiF0aGlzLmRhdGEuaGFzT3duQ2FudmFzKXJldHVybntvcExpc3Q6bmV3IGcuT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMCxzZXBhcmF0ZUNhbnZhczohMX07aWYoIXRoaXMuX2hhc1RleHQpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsYSxpLG4pO2NvbnN0IHM9YXdhaXQgdGhpcy5fZ2V0QXBwZWFyYW5jZShlLHQsYSxuKTtpZih0aGlzLmFwcGVhcmFuY2UmJm51bGw9PT1zKXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LGEsaSxuKTtjb25zdCBvPW5ldyBnLk9wZXJhdG9yTGlzdDtpZighdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fG51bGw9PT1zKXJldHVybntvcExpc3Q6byxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9O2NvbnN0IGM9WzAsMCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXV0sbD1nZXRUcmFuc2Zvcm1NYXRyaXgodGhpcy5kYXRhLnJlY3QsYyxbMSwwLDAsMSwwLDBdKTtsZXQgaDt0aGlzLm9jJiYoaD1hd2FpdCBlLnBhcnNlTWFya2VkQ29udGVudFByb3BzKHRoaXMub2MsbnVsbCkpO3ZvaWQgMCE9PWgmJm8uYWRkT3Aoci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsWyJPQyIsaF0pO28uYWRkT3Aoci5PUFMuYmVnaW5Bbm5vdGF0aW9uLFt0aGlzLmRhdGEuaWQsdGhpcy5kYXRhLnJlY3QsbCx0aGlzLmdldFJvdGF0aW9uTWF0cml4KG4pLCExXSk7Y29uc3QgdT1uZXcgcC5TdHJpbmdTdHJlYW0ocyk7YXdhaXQgZS5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTp1LHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLG9wZXJhdG9yTGlzdDpvfSk7by5hZGRPcChyLk9QUy5lbmRBbm5vdGF0aW9uLFtdKTt2b2lkIDAhPT1oJiZvLmFkZE9wKHIuT1BTLmVuZE1hcmtlZENvbnRlbnQsW10pO3JldHVybntvcExpc3Q6byxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fV9nZXRNS0RpY3QoZSl7Y29uc3QgdD1uZXcgcy5EaWN0KG51bGwpO2UmJnQuc2V0KCJSIixlKTt0aGlzLmJvcmRlckNvbG9yJiZ0LnNldCgiQkMiLGdldFBkZkNvbG9yQXJyYXkodGhpcy5ib3JkZXJDb2xvcikpO3RoaXMuYmFja2dyb3VuZENvbG9yJiZ0LnNldCgiQkciLGdldFBkZkNvbG9yQXJyYXkodGhpcy5iYWNrZ3JvdW5kQ29sb3IpKTtyZXR1cm4gdC5zaXplPjA/dDpudWxsfWFtZW5kU2F2ZWREaWN0KGUsdCl7fWFzeW5jIHNhdmUoZSx0LGEpe2NvbnN0IG49YT8uZ2V0KHRoaXMuZGF0YS5pZCk7bGV0IGM9bj8udmFsdWUsbD1uPy5yb3RhdGlvbjtpZihjPT09dGhpcy5kYXRhLmZpZWxkVmFsdWV8fHZvaWQgMD09PWMpe2lmKCF0aGlzLl9oYXNWYWx1ZUZyb21YRkEmJnZvaWQgMD09PWwpcmV0dXJuIG51bGw7Y3x8PXRoaXMuZGF0YS5maWVsZFZhbHVlfWlmKHZvaWQgMD09PWwmJiF0aGlzLl9oYXNWYWx1ZUZyb21YRkEmJkFycmF5LmlzQXJyYXkoYykmJkFycmF5LmlzQXJyYXkodGhpcy5kYXRhLmZpZWxkVmFsdWUpJiZjLmxlbmd0aD09PXRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aCYmYy5ldmVyeSgoKGUsdCk9PmU9PT10aGlzLmRhdGEuZmllbGRWYWx1ZVt0XSkpKXJldHVybiBudWxsO3ZvaWQgMD09PWwmJihsPXRoaXMucm90YXRpb24pO2xldCBoPW51bGw7aWYoIXRoaXMuX25lZWRBcHBlYXJhbmNlcyl7aD1hd2FpdCB0aGlzLl9nZXRBcHBlYXJhbmNlKGUsdCxyLlJlbmRlcmluZ0ludGVudEZsYWcuU0FWRSxhKTtpZihudWxsPT09aClyZXR1cm4gbnVsbH1sZXQgdT0hMTtpZihoPy5uZWVkQXBwZWFyYW5jZXMpe3U9ITA7aD1udWxsfWNvbnN0e3hyZWY6ZH09ZSxmPWQuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShmIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm4gbnVsbDtjb25zdCBnPW5ldyBzLkRpY3QoZCk7Zm9yKGNvbnN0IGUgb2YgZi5nZXRLZXlzKCkpIkFQIiE9PWUmJmcuc2V0KGUsZi5nZXRSYXcoZSkpO2NvbnN0IG09e3BhdGg6dGhpcy5kYXRhLmZpZWxkTmFtZSx2YWx1ZTpjfSxlbmNvZGVyPWU9PigwLGkuaXNBc2NpaSkoZSk/ZTooMCxpLnN0cmluZ1RvVVRGMTZTdHJpbmcpKGUsITApO2cuc2V0KCJWIixBcnJheS5pc0FycmF5KGMpP2MubWFwKGVuY29kZXIpOmVuY29kZXIoYykpO3RoaXMuYW1lbmRTYXZlZERpY3QoYSxnKTtjb25zdCBiPXRoaXMuX2dldE1LRGljdChsKTtiJiZnLnNldCgiTUsiLGIpO2NvbnN0IHk9ZC5lbmNyeXB0LHc9eT95LmNyZWF0ZUNpcGhlclRyYW5zZm9ybSh0aGlzLnJlZi5udW0sdGhpcy5yZWYuZ2VuKTpudWxsLFM9W10seD1be3JlZjp0aGlzLnJlZixkYXRhOiIiLHhmYTptLG5lZWRBcHBlYXJhbmNlczp1fV07aWYobnVsbCE9PWgpe2NvbnN0IGU9ZC5nZXROZXdUZW1wb3JhcnlSZWYoKSx0PW5ldyBzLkRpY3QoZCk7Zy5zZXQoIkFQIix0KTt0LnNldCgiTiIsZSk7bGV0IGk9bnVsbDt5JiYoaT15LmNyZWF0ZUNpcGhlclRyYW5zZm9ybShlLm51bSxlLmdlbikpO2NvbnN0IG49dGhpcy5fZ2V0U2F2ZUZpZWxkUmVzb3VyY2VzKGQpLGM9bmV3IHAuU3RyaW5nU3RyZWFtKGgpLGw9Yy5kaWN0PW5ldyBzLkRpY3QoZCk7bC5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZvcm0iKSk7bC5zZXQoIlJlc291cmNlcyIsbik7bC5zZXQoIkJCb3giLFswLDAsdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sdGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV1dKTtjb25zdCB1PXRoaXMuZ2V0Um90YXRpb25NYXRyaXgoYSk7dSE9PXIuSURFTlRJVFlfTUFUUklYJiZsLnNldCgiTWF0cml4Iix1KTthd2FpdCgwLG8ud3JpdGVPYmplY3QpKGUsYyxTLGkpO3gucHVzaCh7cmVmOmUsZGF0YTpTLmpvaW4oIiIpLHhmYTpudWxsLG5lZWRBcHBlYXJhbmNlczohMX0pO1MubGVuZ3RoPTB9Zy5zZXQoIk0iLGBEOiR7KDAsci5nZXRNb2RpZmljYXRpb25EYXRlKSgpfWApO2F3YWl0KDAsby53cml0ZU9iamVjdCkodGhpcy5yZWYsZyxTLHcpO3hbMF0uZGF0YT1TLmpvaW4oIiIpO3JldHVybiB4fWFzeW5jIF9nZXRBcHBlYXJhbmNlKGUsdCxhLHMpe2lmKHRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5QQVNTV09SRCkpcmV0dXJuIG51bGw7Y29uc3Qgbz1zPy5nZXQodGhpcy5kYXRhLmlkKTtsZXQgYyxsO2lmKG8pe2M9by5mb3JtYXR0ZWRWYWx1ZXx8by52YWx1ZTtsPW8ucm90YXRpb259aWYodm9pZCAwPT09bCYmdm9pZCAwPT09YyYmIXRoaXMuX25lZWRBcHBlYXJhbmNlcyYmKCF0aGlzLl9oYXNWYWx1ZUZyb21YRkF8fHRoaXMuYXBwZWFyYW5jZSkpcmV0dXJuIG51bGw7Y29uc3QgaD10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhzKTtpZih2b2lkIDA9PT1jKXtjPXRoaXMuZGF0YS5maWVsZFZhbHVlO2lmKCFjKXJldHVybmAvVHggQk1DIHEgJHtofVEgRU1DYH1BcnJheS5pc0FycmF5KGMpJiYxPT09Yy5sZW5ndGgmJihjPWNbMF0pOygwLHIuYXNzZXJ0KSgic3RyaW5nIj09dHlwZW9mIGMsIkV4cGVjdGVkIGB2YWx1ZWAgdG8gYmUgYSBzdHJpbmcuIik7Yz1jLnRyaW0oKTtpZih0aGlzLmRhdGEuY29tYm8pe2NvbnN0IGU9dGhpcy5kYXRhLm9wdGlvbnMuZmluZCgoKHtleHBvcnRWYWx1ZTplfSk9PmM9PT1lKSk7Yz1lPy5kaXNwbGF5VmFsdWV8fGN9aWYoIiI9PT1jKXJldHVybmAvVHggQk1DIHEgJHtofVEgRU1DYDt2b2lkIDA9PT1sJiYobD10aGlzLnJvdGF0aW9uKTtsZXQgdSxkPS0xO2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpe3U9Yy5zcGxpdCgvXHJcbj98XG4vKS5tYXAoKGU9PmUubm9ybWFsaXplKCJORkMiKSkpO2Q9dS5sZW5ndGh9ZWxzZSB1PVtjLnJlcGxhY2UoL1xyXG4/fFxuLywiIikubm9ybWFsaXplKCJORkMiKV07bGV0IGY9dGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV0sZz10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXTs5MCE9PWwmJjI3MCE9PWx8fChbZyxmXT1bZixnXSk7dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fCh0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPSgwLG4ucGFyc2VEZWZhdWx0QXBwZWFyYW5jZSkodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9Ii9IZWx2ZXRpY2EgMCBUZiAwIGciKSk7bGV0IHAsbSxiLHk9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKTtjb25zdCB3PVtdO2xldCBTPSExO2Zvcihjb25zdCBlIG9mIHUpe2NvbnN0IHQ9eS5lbmNvZGVTdHJpbmcoZSk7dC5sZW5ndGg+MSYmKFM9ITApO3cucHVzaCh0LmpvaW4oIiIpKX1pZihTJiZhJnIuUmVuZGVyaW5nSW50ZW50RmxhZy5TQVZFKXJldHVybntuZWVkQXBwZWFyYW5jZXM6ITB9O2lmKFMmJnRoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKXtjb25zdCBhPXRoaXMuZGF0YS5jb21iPyJtb25vc3BhY2UiOiJzYW5zLXNlcmlmIixyPW5ldyBuLkZha2VVbmljb2RlRm9udChlLnhyZWYsYSkscz1yLmNyZWF0ZUZvbnRSZXNvdXJjZXModS5qb2luKCIiKSksbz1zLmdldFJhdygiRm9udCIpO2lmKHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcy5oYXMoIkZvbnQiKSl7Y29uc3QgZT10aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuZ2V0KCJGb250Iik7Zm9yKGNvbnN0IHQgb2Ygby5nZXRLZXlzKCkpZS5zZXQodCxvLmdldFJhdyh0KSl9ZWxzZSB0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuc2V0KCJGb250IixvKTtjb25zdCBsPXIuZm9udE5hbWUubmFtZTt5PWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKGUsdCx7Zm9udE5hbWU6bCxmb250U2l6ZTowfSxzKTtmb3IobGV0IGU9MCx0PXcubGVuZ3RoO2U8dDtlKyspd1tlXT0oMCxpLnN0cmluZ1RvVVRGMTZTdHJpbmcpKHVbZV0pO2NvbnN0IGg9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemU9MDt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnROYW1lPWw7W3AsbSxiXT10aGlzLl9jb21wdXRlRm9udFNpemUoZi0yLGctNCxjLHksZCk7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT1ofWVsc2V7dGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWR8fCgwLHIud2FybikoIl9nZXRBcHBlYXJhbmNlOiBPZmZzY3JlZW5DYW52YXMgaXMgbm90IHN1cHBvcnRlZCwgYW5ub3RhdGlvbiBtYXkgbm90IHJlbmRlciBjb3JyZWN0bHkuIik7W3AsbSxiXT10aGlzLl9jb21wdXRlRm9udFNpemUoZi0yLGctNCxjLHksZCl9bGV0IHg9eS5kZXNjZW50O3g9aXNOYU4oeCk/ci5CQVNFTElORV9GQUNUT1IqYjpNYXRoLm1heChyLkJBU0VMSU5FX0ZBQ1RPUipiLE1hdGguYWJzKHgpKm0pO2NvbnN0IEM9TWF0aC5taW4oTWF0aC5mbG9vcigoZi1tKS8yKSwxKSxrPXRoaXMuZGF0YS50ZXh0QWxpZ25tZW50O2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpcmV0dXJuIHRoaXMuX2dldE11bHRpbGluZUFwcGVhcmFuY2UocCx3LHksbSxnLGYsaywyLEMseCxiLHMpO2lmKHRoaXMuZGF0YS5jb21iKXJldHVybiB0aGlzLl9nZXRDb21iQXBwZWFyYW5jZShwLHksd1swXSxtLGcsZiwyLEMseCxiLHMpO2NvbnN0IHY9Qyt4O2lmKDA9PT1rfHxrPjIpcmV0dXJuYC9UeCBCTUMgcSAke2h9QlQgYCtwK2AgMSAwIDAgMSAkeygwLGkubnVtYmVyVG9TdHJpbmcpKDIpfSAkeygwLGkubnVtYmVyVG9TdHJpbmcpKHYpfSBUbSAoJHsoMCxpLmVzY2FwZVN0cmluZykod1swXSl9KSBUaiBFVCBRIEVNQ2A7cmV0dXJuYC9UeCBCTUMgcSAke2h9QlQgYCtwK2AgMSAwIDAgMSAwIDAgVG0gJHt0aGlzLl9yZW5kZXJUZXh0KHdbMF0seSxtLGcsayx7c2hpZnQ6MH0sMix2KX0gRVQgUSBFTUNgfXN0YXRpYyBhc3luYyBfZ2V0Rm9udERhdGEoZSx0LGEscil7Y29uc3QgaT1uZXcgZy5PcGVyYXRvckxpc3Qsbj17Zm9udDpudWxsLGNsb25lKCl7cmV0dXJuIHRoaXN9fSx7Zm9udE5hbWU6byxmb250U2l6ZTpjfT1hO2F3YWl0IGUuaGFuZGxlU2V0Rm9udChyLFtvJiZzLk5hbWUuZ2V0KG8pLGNdLG51bGwsaSx0LG4sbnVsbCk7cmV0dXJuIG4uZm9udH1fZ2V0VGV4dFdpZHRoKGUsdCl7cmV0dXJuIHQuY2hhcnNUb0dseXBocyhlKS5yZWR1Y2UoKChlLHQpPT5lK3Qud2lkdGgpLDApLzFlM31fY29tcHV0ZUZvbnRTaXplKGUsdCxhLGkscyl7bGV0e2ZvbnRTaXplOm99PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsYz0ob3x8MTIpKnIuTElORV9GQUNUT1IsbD1NYXRoLnJvdW5kKGUvYyk7aWYoIW8pe2NvbnN0IHJvdW5kV2l0aFR3b0RpZ2l0cz1lPT5NYXRoLmZsb29yKDEwMCplKS8xMDA7aWYoLTE9PT1zKXtjb25zdCBuPXRoaXMuX2dldFRleHRXaWR0aChhLGkpO289cm91bmRXaXRoVHdvRGlnaXRzKE1hdGgubWluKGUvci5MSU5FX0ZBQ1RPUixuPnQ/dC9uOjEvMCkpO2w9MX1lbHNle2NvbnN0IG49YS5zcGxpdCgvXHJcbj98XG4vKSxoPVtdO2Zvcihjb25zdCBlIG9mIG4pe2NvbnN0IHQ9aS5lbmNvZGVTdHJpbmcoZSkuam9pbigiIiksYT1pLmNoYXJzVG9HbHlwaHModCkscj1pLmdldENoYXJQb3NpdGlvbnModCk7aC5wdXNoKHtsaW5lOnQsZ2x5cGhzOmEscG9zaXRpb25zOnJ9KX1jb25zdCBpc1Rvb0JpZz1hPT57bGV0IHI9MDtmb3IoY29uc3QgbiBvZiBoKXtyKz10aGlzLl9zcGxpdExpbmUobnVsbCxpLGEsdCxuKS5sZW5ndGgqYTtpZihyPmUpcmV0dXJuITB9cmV0dXJuITF9O2w9TWF0aC5tYXgobCxzKTtmb3IoOzspe2M9ZS9sO289cm91bmRXaXRoVHdvRGlnaXRzKGMvci5MSU5FX0ZBQ1RPUik7aWYoIWlzVG9vQmlnKG8pKWJyZWFrO2wrK319Y29uc3R7Zm9udE5hbWU6aCxmb250Q29sb3I6dX09dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YTt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0oMCxuLmNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlKSh7Zm9udFNpemU6byxmb250TmFtZTpoLGZvbnRDb2xvcjp1fSl9cmV0dXJuW3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlLG8sZS9sXX1fcmVuZGVyVGV4dChlLHQsYSxyLG4scyxvLGMpe2xldCBsO2lmKDE9PT1uKXtsPShyLXRoaXMuX2dldFRleHRXaWR0aChlLHQpKmEpLzJ9ZWxzZSBpZigyPT09bil7bD1yLXRoaXMuX2dldFRleHRXaWR0aChlLHQpKmEtb31lbHNlIGw9bztjb25zdCBoPSgwLGkubnVtYmVyVG9TdHJpbmcpKGwtcy5zaGlmdCk7cy5zaGlmdD1sO3JldHVybmAke2h9ICR7Yz0oMCxpLm51bWJlclRvU3RyaW5nKShjKX0gVGQgKCR7KDAsaS5lc2NhcGVTdHJpbmcpKGUpfSkgVGpgfV9nZXRTYXZlRmllbGRSZXNvdXJjZXMoZSl7Y29uc3R7bG9jYWxSZXNvdXJjZXM6dCxhcHBlYXJhbmNlUmVzb3VyY2VzOmEsYWNyb0Zvcm1SZXNvdXJjZXM6cn09dGhpcy5fZmllbGRSZXNvdXJjZXMsaT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPy5mb250TmFtZTtpZighaSlyZXR1cm4gdHx8cy5EaWN0LmVtcHR5O2Zvcihjb25zdCBlIG9mW3QsYV0paWYoZSBpbnN0YW5jZW9mIHMuRGljdCl7Y29uc3QgdD1lLmdldCgiRm9udCIpO2lmKHQgaW5zdGFuY2VvZiBzLkRpY3QmJnQuaGFzKGkpKXJldHVybiBlfWlmKHIgaW5zdGFuY2VvZiBzLkRpY3Qpe2NvbnN0IGE9ci5nZXQoIkZvbnQiKTtpZihhIGluc3RhbmNlb2Ygcy5EaWN0JiZhLmhhcyhpKSl7Y29uc3Qgcj1uZXcgcy5EaWN0KGUpO3Iuc2V0KGksYS5nZXRSYXcoaSkpO2NvbnN0IG49bmV3IHMuRGljdChlKTtuLnNldCgiRm9udCIscik7cmV0dXJuIHMuRGljdC5tZXJnZSh7eHJlZjplLGRpY3RBcnJheTpbbix0XSxtZXJnZVN1YkRpY3RzOiEwfSl9fXJldHVybiB0fHxzLkRpY3QuZW1wdHl9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gbnVsbH19Y2xhc3MgVGV4dFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLnJlYWRPbmx5JiYhdGhpcy5kYXRhLm5vSFRNTDt0aGlzLl9oYXNUZXh0PSEwO2NvbnN0IHQ9ZS5kaWN0OyJzdHJpbmciIT10eXBlb2YgdGhpcy5kYXRhLmZpZWxkVmFsdWUmJih0aGlzLmRhdGEuZmllbGRWYWx1ZT0iIik7bGV0IGE9KDAsaS5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDp0LGtleToiUSJ9KTsoIU51bWJlci5pc0ludGVnZXIoYSl8fGE8MHx8YT4yKSYmKGE9bnVsbCk7dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQ9YTtsZXQgbj0oMCxpLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJNYXhMZW4ifSk7KCFOdW1iZXIuaXNJbnRlZ2VyKG4pfHxuPDApJiYobj0wKTt0aGlzLmRhdGEubWF4TGVuPW47dGhpcy5kYXRhLm11bHRpTGluZT10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuTVVMVElMSU5FKTt0aGlzLmRhdGEuY29tYj10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuQ09NQikmJiF0aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuTVVMVElMSU5FKSYmIXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5QQVNTV09SRCkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuRklMRVNFTEVDVCkmJjAhPT10aGlzLmRhdGEubWF4TGVuO3RoaXMuZGF0YS5kb05vdFNjcm9sbD10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuRE9OT1RTQ1JPTEwpfWdldCBoYXNUZXh0Q29udGVudCgpe3JldHVybiEhdGhpcy5hcHBlYXJhbmNlfV9nZXRDb21iQXBwZWFyYW5jZShlLHQsYSxyLG4scyxvLGMsbCxoLHUpe2NvbnN0IGQ9bi90aGlzLmRhdGEubWF4TGVuLGY9dGhpcy5nZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQXBwZWFyYW5jZXModSksZz1bXSxwPXQuZ2V0Q2hhclBvc2l0aW9ucyhhKTtmb3IoY29uc3RbZSx0XW9mIHApZy5wdXNoKGAoJHsoMCxpLmVzY2FwZVN0cmluZykoYS5zdWJzdHJpbmcoZSx0KSl9KSBUamApO2NvbnN0IG09Zy5qb2luKGAgJHsoMCxpLm51bWJlclRvU3RyaW5nKShkKX0gMCBUZCBgKTtyZXR1cm5gL1R4IEJNQyBxICR7Zn1CVCBgK2UrYCAxIDAgMCAxICR7KDAsaS5udW1iZXJUb1N0cmluZykobyl9ICR7KDAsaS5udW1iZXJUb1N0cmluZykoYytsKX0gVG0gJHttfSBFVCBRIEVNQ2B9X2dldE11bHRpbGluZUFwcGVhcmFuY2UoZSx0LGEscixuLHMsbyxjLGwsaCx1LGQpe2NvbnN0IGY9W10sZz1uLTIqYyxwPXtzaGlmdDowfTtmb3IobGV0IGU9MCxpPXQubGVuZ3RoO2U8aTtlKyspe2NvbnN0IGk9dFtlXSxzPXRoaXMuX3NwbGl0TGluZShpLGEscixnKTtmb3IobGV0IHQ9MCxpPXMubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9c1t0XSxkPTA9PT1lJiYwPT09dD8tbC0odS1oKTotdTtmLnB1c2godGhpcy5fcmVuZGVyVGV4dChpLGEscixuLG8scCxjLGQpKX19Y29uc3QgbT10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhkKSxiPWYuam9pbigiXG4iKTtyZXR1cm5gL1R4IEJNQyBxICR7bX1CVCBgK2UrYCAxIDAgMCAxIDAgJHsoMCxpLm51bWJlclRvU3RyaW5nKShzKX0gVG0gJHtifSBFVCBRIEVNQ2B9X3NwbGl0TGluZShlLHQsYSxyLGk9e30pe2U9aS5saW5lfHxlO2NvbnN0IG49aS5nbHlwaHN8fHQuY2hhcnNUb0dseXBocyhlKTtpZihuLmxlbmd0aDw9MSlyZXR1cm5bZV07Y29uc3Qgcz1pLnBvc2l0aW9uc3x8dC5nZXRDaGFyUG9zaXRpb25zKGUpLG89YS8xZTMsYz1bXTtsZXQgbD0tMSxoPS0xLHU9LTEsZD0wLGY9MDtmb3IobGV0IHQ9MCxhPW4ubGVuZ3RoO3Q8YTt0Kyspe2NvbnN0W2EsaV09c1t0XSxnPW5bdF0scD1nLndpZHRoKm87aWYoIiAiPT09Zy51bmljb2RlKWlmKGYrcD5yKXtjLnB1c2goZS5zdWJzdHJpbmcoZCxhKSk7ZD1hO2Y9cDtsPS0xO3U9LTF9ZWxzZXtmKz1wO2w9YTtoPWk7dT10fWVsc2UgaWYoZitwPnIpaWYoLTEhPT1sKXtjLnB1c2goZS5zdWJzdHJpbmcoZCxoKSk7ZD1oO3Q9dSsxO2w9LTE7Zj0wfWVsc2V7Yy5wdXNoKGUuc3Vic3RyaW5nKGQsYSkpO2Q9YTtmPXB9ZWxzZSBmKz1wfWQ8ZS5sZW5ndGgmJmMucHVzaChlLnN1YnN0cmluZyhkLGUubGVuZ3RoKSk7cmV0dXJuIGN9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlLGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWV8fCIiLG11bHRpbGluZTp0aGlzLmRhdGEubXVsdGlMaW5lLHBhc3N3b3JkOnRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5QQVNTV09SRCksY2hhckxpbWl0OnRoaXMuZGF0YS5tYXhMZW4sY29tYjp0aGlzLmRhdGEuY29tYixlZGl0YWJsZTohdGhpcy5kYXRhLnJlYWRPbmx5LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxyZWN0OnRoaXMuZGF0YS5yZWN0LGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHR5cGU6InRleHQifX19Y2xhc3MgQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1udWxsO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1udWxsO3RoaXMuZGF0YS5jaGVja0JveD0hdGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlJBRElPKSYmIXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5QVVNIQlVUVE9OKTt0aGlzLmRhdGEucmFkaW9CdXR0b249dGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlJBRElPKSYmIXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5QVVNIQlVUVE9OKTt0aGlzLmRhdGEucHVzaEJ1dHRvbj10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUFVTSEJVVFRPTik7dGhpcy5kYXRhLmlzVG9vbHRpcE9ubHk9ITE7aWYodGhpcy5kYXRhLmNoZWNrQm94KXRoaXMuX3Byb2Nlc3NDaGVja0JveChlKTtlbHNlIGlmKHRoaXMuZGF0YS5yYWRpb0J1dHRvbil0aGlzLl9wcm9jZXNzUmFkaW9CdXR0b24oZSk7ZWxzZSBpZih0aGlzLmRhdGEucHVzaEJ1dHRvbil7dGhpcy5kYXRhLmhhc093bkNhbnZhcz0hMDt0aGlzLl9wcm9jZXNzUHVzaEJ1dHRvbihlKX1lbHNlKDAsci53YXJuKSgiSW52YWxpZCBmaWVsZCBmbGFncyBmb3IgYnV0dG9uIHdpZGdldCBhbm5vdGF0aW9uIil9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLGksbil7aWYodGhpcy5kYXRhLnB1c2hCdXR0b24pcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsYSwhMSxuKTtsZXQgcz1udWxsLG89bnVsbDtpZihuKXtjb25zdCBlPW4uZ2V0KHRoaXMuZGF0YS5pZCk7cz1lP2UudmFsdWU6bnVsbDtvPWU/ZS5yb3RhdGlvbjpudWxsfWlmKG51bGw9PT1zJiZ0aGlzLmFwcGVhcmFuY2UpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsYSxpLG4pO251bGw9PXMmJihzPXRoaXMuZGF0YS5jaGVja0JveD90aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7Y29uc3QgYz1zP3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U6dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlO2lmKGMpe2NvbnN0IHM9dGhpcy5hcHBlYXJhbmNlLGw9Yy5kaWN0LmdldEFycmF5KCJNYXRyaXgiKXx8ci5JREVOVElUWV9NQVRSSVg7byYmYy5kaWN0LnNldCgiTWF0cml4Iix0aGlzLmdldFJvdGF0aW9uTWF0cml4KG4pKTt0aGlzLmFwcGVhcmFuY2U9Yztjb25zdCBoPXN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsYSxpLG4pO3RoaXMuYXBwZWFyYW5jZT1zO2MuZGljdC5zZXQoIk1hdHJpeCIsbCk7cmV0dXJuIGh9cmV0dXJue29wTGlzdDpuZXcgZy5PcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX1hc3luYyBzYXZlKGUsdCxhKXtyZXR1cm4gdGhpcy5kYXRhLmNoZWNrQm94P3RoaXMuX3NhdmVDaGVja2JveChlLHQsYSk6dGhpcy5kYXRhLnJhZGlvQnV0dG9uP3RoaXMuX3NhdmVSYWRpb0J1dHRvbihlLHQsYSk6bnVsbH1hc3luYyBfc2F2ZUNoZWNrYm94KGUsdCxhKXtpZighYSlyZXR1cm4gbnVsbDtjb25zdCBpPWEuZ2V0KHRoaXMuZGF0YS5pZCk7bGV0IG49aT8ucm90YXRpb24sYz1pPy52YWx1ZTtpZih2b2lkIDA9PT1uKXtpZih2b2lkIDA9PT1jKXJldHVybiBudWxsO2lmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlPT09YylyZXR1cm4gbnVsbH1jb25zdCBsPWUueHJlZi5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKGwgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybiBudWxsO3ZvaWQgMD09PW4mJihuPXRoaXMucm90YXRpb24pO3ZvaWQgMD09PWMmJihjPXRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlKTtjb25zdCBoPXtwYXRoOnRoaXMuZGF0YS5maWVsZE5hbWUsdmFsdWU6Yz90aGlzLmRhdGEuZXhwb3J0VmFsdWU6IiJ9LHU9cy5OYW1lLmdldChjP3RoaXMuZGF0YS5leHBvcnRWYWx1ZToiT2ZmIik7bC5zZXQoIlYiLHUpO2wuc2V0KCJBUyIsdSk7bC5zZXQoIk0iLGBEOiR7KDAsci5nZXRNb2RpZmljYXRpb25EYXRlKSgpfWApO2NvbnN0IGQ9dGhpcy5fZ2V0TUtEaWN0KG4pO2QmJmwuc2V0KCJNSyIsZCk7Y29uc3QgZj1lLnhyZWYuZW5jcnlwdDtsZXQgZz1udWxsO2YmJihnPWYuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKHRoaXMucmVmLm51bSx0aGlzLnJlZi5nZW4pKTtjb25zdCBwPVtgJHt0aGlzLnJlZi5udW19ICR7dGhpcy5yZWYuZ2VufSBvYmpcbmBdO2F3YWl0KDAsby53cml0ZURpY3QpKGwscCxnKTtwLnB1c2goIlxuZW5kb2JqXG4iKTtyZXR1cm5be3JlZjp0aGlzLnJlZixkYXRhOnAuam9pbigiIikseGZhOmh9XX1hc3luYyBfc2F2ZVJhZGlvQnV0dG9uKGUsdCxhKXtpZighYSlyZXR1cm4gbnVsbDtjb25zdCBpPWEuZ2V0KHRoaXMuZGF0YS5pZCk7bGV0IG49aT8ucm90YXRpb24sYz1pPy52YWx1ZTtpZih2b2lkIDA9PT1uKXtpZih2b2lkIDA9PT1jKXJldHVybiBudWxsO2lmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlPT09YylyZXR1cm4gbnVsbH1jb25zdCBsPWUueHJlZi5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKGwgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybiBudWxsO3ZvaWQgMD09PWMmJihjPXRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlKTt2b2lkIDA9PT1uJiYobj10aGlzLnJvdGF0aW9uKTtjb25zdCBoPXtwYXRoOnRoaXMuZGF0YS5maWVsZE5hbWUsdmFsdWU6Yz90aGlzLmRhdGEuYnV0dG9uVmFsdWU6IiJ9LHU9cy5OYW1lLmdldChjP3RoaXMuZGF0YS5idXR0b25WYWx1ZToiT2ZmIik7bGV0IGQ9bnVsbDtjb25zdCBmPWUueHJlZi5lbmNyeXB0O2lmKGMpaWYodGhpcy5wYXJlbnQgaW5zdGFuY2VvZiBzLlJlZil7Y29uc3QgdD1lLnhyZWYuZmV0Y2godGhpcy5wYXJlbnQpO2xldCBhPW51bGw7ZiYmKGE9Zi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5wYXJlbnQubnVtLHRoaXMucGFyZW50LmdlbikpO3Quc2V0KCJWIix1KTtkPVtgJHt0aGlzLnBhcmVudC5udW19ICR7dGhpcy5wYXJlbnQuZ2VufSBvYmpcbmBdO2F3YWl0KDAsby53cml0ZURpY3QpKHQsZCxhKTtkLnB1c2goIlxuZW5kb2JqXG4iKX1lbHNlIHRoaXMucGFyZW50IGluc3RhbmNlb2Ygcy5EaWN0JiZ0aGlzLnBhcmVudC5zZXQoIlYiLHUpO2wuc2V0KCJBUyIsdSk7bC5zZXQoIk0iLGBEOiR7KDAsci5nZXRNb2RpZmljYXRpb25EYXRlKSgpfWApO2NvbnN0IGc9dGhpcy5fZ2V0TUtEaWN0KG4pO2cmJmwuc2V0KCJNSyIsZyk7bGV0IHA9bnVsbDtmJiYocD1mLmNyZWF0ZUNpcGhlclRyYW5zZm9ybSh0aGlzLnJlZi5udW0sdGhpcy5yZWYuZ2VuKSk7Y29uc3QgbT1bYCR7dGhpcy5yZWYubnVtfSAke3RoaXMucmVmLmdlbn0gb2JqXG5gXTthd2FpdCgwLG8ud3JpdGVEaWN0KShsLG0scCk7bS5wdXNoKCJcbmVuZG9ialxuIik7Y29uc3QgYj1be3JlZjp0aGlzLnJlZixkYXRhOm0uam9pbigiIikseGZhOmh9XTtudWxsIT09ZCYmYi5wdXNoKHtyZWY6dGhpcy5wYXJlbnQsZGF0YTpkLmpvaW4oIiIpLHhmYTpudWxsfSk7cmV0dXJuIGJ9X2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZShlLHQpe2NvbnN0IGE9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sbj10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxvPVswLDAsYSxuXSxjPS44Kk1hdGgubWluKGEsbik7bGV0IGwsaDtpZigiY2hlY2siPT09dCl7bD17d2lkdGg6Ljc1NSpjLGhlaWdodDouNzA1KmN9O2g9IjMifWVsc2UgaWYoImRpc2MiPT09dCl7bD17d2lkdGg6Ljc5MSpjLGhlaWdodDouNzA1KmN9O2g9ImwifWVsc2UoMCxyLnVucmVhY2hhYmxlKShgX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZSAtIHVuc3VwcG9ydGVkIHR5cGU6ICR7dH1gKTtjb25zdCB1PWBxIEJUIC9QZGZKc1phRGIgJHtjfSBUZiAwIGcgJHsoMCxpLm51bWJlclRvU3RyaW5nKSgoYS1sLndpZHRoKS8yKX0gJHsoMCxpLm51bWJlclRvU3RyaW5nKSgobi1sLmhlaWdodCkvMil9IFRkICgke2h9KSBUaiBFVCBRYCxkPW5ldyBzLkRpY3QoZS54cmVmKTtkLnNldCgiRm9ybVR5cGUiLDEpO2Quc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGb3JtIikpO2Quc2V0KCJUeXBlIixzLk5hbWUuZ2V0KCJYT2JqZWN0IikpO2Quc2V0KCJCQm94IixvKTtkLnNldCgiTWF0cml4IixbMSwwLDAsMSwwLDBdKTtkLnNldCgiTGVuZ3RoIix1Lmxlbmd0aCk7Y29uc3QgZj1uZXcgcy5EaWN0KGUueHJlZiksZz1uZXcgcy5EaWN0KGUueHJlZik7Zy5zZXQoIlBkZkpzWmFEYiIsdGhpcy5mYWxsYmFja0ZvbnREaWN0KTtmLnNldCgiRm9udCIsZyk7ZC5zZXQoIlJlc291cmNlcyIsZik7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1uZXcgcC5TdHJpbmdTdHJlYW0odSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZS5kaWN0PWQ7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpfV9wcm9jZXNzQ2hlY2tCb3goZSl7Y29uc3QgdD1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IGE9dC5nZXQoIk4iKTtpZighKGEgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybjtjb25zdCByPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShlLmRpY3QuZ2V0KCJBUyIpKTsic3RyaW5nIj09dHlwZW9mIHImJih0aGlzLmRhdGEuZmllbGRWYWx1ZT1yKTtjb25zdCBpPW51bGwhPT10aGlzLmRhdGEuZmllbGRWYWx1ZSYmIk9mZiIhPT10aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZToiWWVzIixuPWEuZ2V0S2V5cygpO2lmKDA9PT1uLmxlbmd0aCluLnB1c2goIk9mZiIsaSk7ZWxzZSBpZigxPT09bi5sZW5ndGgpIk9mZiI9PT1uWzBdP24ucHVzaChpKTpuLnVuc2hpZnQoIk9mZiIpO2Vsc2UgaWYobi5pbmNsdWRlcyhpKSl7bi5sZW5ndGg9MDtuLnB1c2goIk9mZiIsaSl9ZWxzZXtjb25zdCBlPW4uZmluZCgoZT0+Ik9mZiIhPT1lKSk7bi5sZW5ndGg9MDtuLnB1c2goIk9mZiIsZSl9bi5pbmNsdWRlcyh0aGlzLmRhdGEuZmllbGRWYWx1ZSl8fCh0aGlzLmRhdGEuZmllbGRWYWx1ZT0iT2ZmIik7dGhpcy5kYXRhLmV4cG9ydFZhbHVlPW5bMV07Y29uc3Qgbz1hLmdldCh0aGlzLmRhdGEuZXhwb3J0VmFsdWUpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U9byBpbnN0YW5jZW9mIGMuQmFzZVN0cmVhbT9vOm51bGw7Y29uc3QgbD1hLmdldCgiT2ZmIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPWwgaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0/bDpudWxsO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U/dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpOnRoaXMuX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZShlLCJjaGVjayIpO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZSYmdGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMudW5jaGVja2VkQXBwZWFyYW5jZSk7dGhpcy5fZmFsbGJhY2tGb250RGljdD10aGlzLmZhbGxiYWNrRm9udERpY3R9X3Byb2Nlc3NSYWRpb0J1dHRvbihlKXt0aGlzLmRhdGEuZmllbGRWYWx1ZT10aGlzLmRhdGEuYnV0dG9uVmFsdWU9bnVsbDtjb25zdCB0PWUuZGljdC5nZXQoIlBhcmVudCIpO2lmKHQgaW5zdGFuY2VvZiBzLkRpY3Qpe3RoaXMucGFyZW50PWUuZGljdC5nZXRSYXcoIlBhcmVudCIpO2NvbnN0IGE9dC5nZXQoIlYiKTthIGluc3RhbmNlb2Ygcy5OYW1lJiYodGhpcy5kYXRhLmZpZWxkVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGEpKX1jb25zdCBhPWUuZGljdC5nZXQoIkFQIik7aWYoIShhIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Y29uc3Qgcj1hLmdldCgiTiIpO2lmKCEociBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2Zvcihjb25zdCBlIG9mIHIuZ2V0S2V5cygpKWlmKCJPZmYiIT09ZSl7dGhpcy5kYXRhLmJ1dHRvblZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShlKTticmVha31jb25zdCBpPXIuZ2V0KHRoaXMuZGF0YS5idXR0b25WYWx1ZSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1pIGluc3RhbmNlb2YgYy5CYXNlU3RyZWFtP2k6bnVsbDtjb25zdCBuPXIuZ2V0KCJPZmYiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U9biBpbnN0YW5jZW9mIGMuQmFzZVN0cmVhbT9uOm51bGw7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT90aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSk6dGhpcy5fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsImRpc2MiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0fV9wcm9jZXNzUHVzaEJ1dHRvbihlKXtpZihlLmRpY3QuaGFzKCJBIil8fGUuZGljdC5oYXMoIkFBIil8fHRoaXMuZGF0YS5hbHRlcm5hdGl2ZVRleHQpe3RoaXMuZGF0YS5pc1Rvb2x0aXBPbmx5PSFlLmRpY3QuaGFzKCJBIikmJiFlLmRpY3QuaGFzKCJBQSIpO2guQ2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDplLmRpY3QscmVzdWx0T2JqOnRoaXMuZGF0YSxkb2NCYXNlVXJsOmUucGRmTWFuYWdlci5kb2NCYXNlVXJsLGRvY0F0dGFjaG1lbnRzOmUuYXR0YWNobWVudHN9KX1lbHNlKDAsci53YXJuKSgiUHVzaCBidXR0b25zIHdpdGhvdXQgYWN0aW9uIGRpY3Rpb25hcmllcyBhcmUgbm90IHN1cHBvcnRlZCIpfWdldEZpZWxkT2JqZWN0KCl7bGV0IGUsdD0iYnV0dG9uIjtpZih0aGlzLmRhdGEuY2hlY2tCb3gpe3Q9ImNoZWNrYm94IjtlPXRoaXMuZGF0YS5leHBvcnRWYWx1ZX1lbHNlIGlmKHRoaXMuZGF0YS5yYWRpb0J1dHRvbil7dD0icmFkaW9idXR0b24iO2U9dGhpcy5kYXRhLmJ1dHRvblZhbHVlfXJldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWV8fCJPZmYiLGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsZXhwb3J0VmFsdWVzOmUsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxoaWRkZW46dGhpcy5kYXRhLmhpZGRlbixhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbix0eXBlOnR9fWdldCBmYWxsYmFja0ZvbnREaWN0KCl7Y29uc3QgZT1uZXcgcy5EaWN0O2Uuc2V0KCJCYXNlRm9udCIscy5OYW1lLmdldCgiWmFwZkRpbmdiYXRzIikpO2Uuc2V0KCJUeXBlIixzLk5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZhbGxiYWNrVHlwZSIpKTtlLnNldCgiRW5jb2RpbmciLHMuTmFtZS5nZXQoIlphcGZEaW5nYmF0c0VuY29kaW5nIikpO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJmYWxsYmFja0ZvbnREaWN0IixlKX19Y2xhc3MgQ2hvaWNlV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmluZGljZXM9dC5nZXRBcnJheSgiSSIpO3RoaXMuaGFzSW5kaWNlcz1BcnJheS5pc0FycmF5KHRoaXMuaW5kaWNlcykmJnRoaXMuaW5kaWNlcy5sZW5ndGg+MDt0aGlzLmRhdGEub3B0aW9ucz1bXTtjb25zdCBuPSgwLGkuZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6Ik9wdCJ9KTtpZihBcnJheS5pc0FycmF5KG4pKWZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1hLmZldGNoSWZSZWYobltlXSkscj1BcnJheS5pc0FycmF5KHQpO3RoaXMuZGF0YS5vcHRpb25zW2VdPXtleHBvcnRWYWx1ZTp0aGlzLl9kZWNvZGVGb3JtVmFsdWUocj9hLmZldGNoSWZSZWYodFswXSk6dCksZGlzcGxheVZhbHVlOnRoaXMuX2RlY29kZUZvcm1WYWx1ZShyP2EuZmV0Y2hJZlJlZih0WzFdKTp0KX19aWYodGhpcy5oYXNJbmRpY2VzKXt0aGlzLmRhdGEuZmllbGRWYWx1ZT1bXTtjb25zdCBlPXRoaXMuZGF0YS5vcHRpb25zLmxlbmd0aDtmb3IoY29uc3QgdCBvZiB0aGlzLmluZGljZXMpTnVtYmVyLmlzSW50ZWdlcih0KSYmdD49MCYmdDxlJiZ0aGlzLmRhdGEuZmllbGRWYWx1ZS5wdXNoKHRoaXMuZGF0YS5vcHRpb25zW3RdLmV4cG9ydFZhbHVlKX1lbHNlInN0cmluZyI9PXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZT1bdGhpcy5kYXRhLmZpZWxkVmFsdWVdOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwodGhpcy5kYXRhLmZpZWxkVmFsdWU9W10pO3RoaXMuZGF0YS5jb21ibz10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuQ09NQk8pO3RoaXMuZGF0YS5tdWx0aVNlbGVjdD10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuTVVMVElTRUxFQ1QpO3RoaXMuX2hhc1RleHQ9ITB9Z2V0RmllbGRPYmplY3QoKXtjb25zdCBlPXRoaXMuZGF0YS5jb21ibz8iY29tYm9ib3giOiJsaXN0Ym94Iix0PXRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aD4wP3RoaXMuZGF0YS5maWVsZFZhbHVlWzBdOm51bGw7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0LGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxudW1JdGVtczp0aGlzLmRhdGEuZmllbGRWYWx1ZS5sZW5ndGgsbXVsdGlwbGVTZWxlY3Rpb246dGhpcy5kYXRhLm11bHRpU2VsZWN0LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsaXRlbXM6dGhpcy5kYXRhLm9wdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHR5cGU6ZX19YW1lbmRTYXZlZERpY3QoZSx0KXtpZighdGhpcy5oYXNJbmRpY2VzKXJldHVybjtsZXQgYT1lPy5nZXQodGhpcy5kYXRhLmlkKT8udmFsdWU7QXJyYXkuaXNBcnJheShhKXx8KGE9W2FdKTtjb25zdCByPVtdLHtvcHRpb25zOml9PXRoaXMuZGF0YTtmb3IobGV0IGU9MCx0PTAsbj1pLmxlbmd0aDtlPG47ZSsrKWlmKGlbZV0uZXhwb3J0VmFsdWU9PT1hW3RdKXtyLnB1c2goZSk7dCs9MX10LnNldCgiSSIscil9YXN5bmMgX2dldEFwcGVhcmFuY2UoZSx0LGEsaSl7aWYodGhpcy5kYXRhLmNvbWJvKXJldHVybiBzdXBlci5fZ2V0QXBwZWFyYW5jZShlLHQsYSxpKTtsZXQgcyxvO2NvbnN0IGM9aT8uZ2V0KHRoaXMuZGF0YS5pZCk7aWYoYyl7bz1jLnJvdGF0aW9uO3M9Yy52YWx1ZX1pZih2b2lkIDA9PT1vJiZ2b2lkIDA9PT1zJiYhdGhpcy5fbmVlZEFwcGVhcmFuY2VzKXJldHVybiBudWxsO3ZvaWQgMD09PXM/cz10aGlzLmRhdGEuZmllbGRWYWx1ZTpBcnJheS5pc0FycmF5KHMpfHwocz1bc10pO2xldCBsPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLGg9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF07OTAhPT1vJiYyNzAhPT1vfHwoW2gsbF09W2wsaF0pO2NvbnN0IHU9dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoLGQ9W107Zm9yKGxldCBlPTA7ZTx1O2UrKyl7Y29uc3R7ZXhwb3J0VmFsdWU6dH09dGhpcy5kYXRhLm9wdGlvbnNbZV07cy5pbmNsdWRlcyh0KSYmZC5wdXNoKGUpfXRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlfHwodGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT0oMCxuLnBhcnNlRGVmYXVsdEFwcGVhcmFuY2UpKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSIvSGVsdmV0aWNhIDAgVGYgMCBnIikpO2NvbnN0IGY9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKTtsZXQgZyx7Zm9udFNpemU6cH09dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YTtpZihwKWc9dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U7ZWxzZXtjb25zdCBlPShsLTEpL3U7bGV0IHQsYT0tMTtmb3IoY29uc3R7ZGlzcGxheVZhbHVlOmV9b2YgdGhpcy5kYXRhLm9wdGlvbnMpe2NvbnN0IHI9dGhpcy5fZ2V0VGV4dFdpZHRoKGUsZik7aWYocj5hKXthPXI7dD1lfX1bZyxwXT10aGlzLl9jb21wdXRlRm9udFNpemUoZSxoLTQsdCxmLC0xKX1jb25zdCBtPXAqci5MSU5FX0ZBQ1RPUixiPShtLXApLzIseT1NYXRoLmZsb29yKGwvbSk7bGV0IHc7aWYoMT09PWQubGVuZ3RoKXtjb25zdCBlPWRbMF07dz1lLWUleX1lbHNlIHc9ZC5sZW5ndGg/ZFswXTowO2NvbnN0IFM9TWF0aC5taW4odyt5KzEsdSkseD1bIi9UeCBCTUMgcSIsYDEgMSAke2h9ICR7bH0gcmUgVyBuYF07aWYoZC5sZW5ndGgpe3gucHVzaCgiMC42MDAwMDYgMC43NTY4NjYgMC44NTQ5MDQgcmciKTtmb3IoY29uc3QgZSBvZiBkKXc8PWUmJmU8UyYmeC5wdXNoKGAxICR7bC0oZS13KzEpKm19ICR7aH0gJHttfSByZSBmYCl9eC5wdXNoKCJCVCIsZyxgMSAwIDAgMSAwICR7bH0gVG1gKTtjb25zdCBDPXtzaGlmdDowfTtmb3IobGV0IGU9dztlPFM7ZSsrKXtjb25zdHtkaXNwbGF5VmFsdWU6dH09dGhpcy5kYXRhLm9wdGlvbnNbZV0sYT1lPT09dz9iOjA7eC5wdXNoKHRoaXMuX3JlbmRlclRleHQodCxmLHAsaCwwLEMsMiwtbSthKSl9eC5wdXNoKCJFVCBRIEVNQyIpO3JldHVybiB4LmpvaW4oIlxuIil9fWNsYXNzIFNpZ25hdHVyZVdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5maWVsZFZhbHVlPW51bGw7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGV9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOm51bGwscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHR5cGU6InNpZ25hdHVyZSJ9fX1jbGFzcyBUZXh0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLm5vUm90YXRlPSEwO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO2NvbnN0e2RpY3Q6dH09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5URVhUO2lmKHRoaXMuZGF0YS5oYXNBcHBlYXJhbmNlKXRoaXMuZGF0YS5uYW1lPSJOb0ljb24iO2Vsc2V7dGhpcy5kYXRhLnJlY3RbMV09dGhpcy5kYXRhLnJlY3RbM10tMjI7dGhpcy5kYXRhLnJlY3RbMl09dGhpcy5kYXRhLnJlY3RbMF0rMjI7dGhpcy5kYXRhLm5hbWU9dC5oYXMoIk5hbWUiKT90LmdldCgiTmFtZSIpLm5hbWU6Ik5vdGUifWlmKHQuaGFzKCJTdGF0ZSIpKXt0aGlzLmRhdGEuc3RhdGU9dC5nZXQoIlN0YXRlIil8fG51bGw7dGhpcy5kYXRhLnN0YXRlTW9kZWw9dC5nZXQoIlN0YXRlTW9kZWwiKXx8bnVsbH1lbHNle3RoaXMuZGF0YS5zdGF0ZT1udWxsO3RoaXMuZGF0YS5zdGF0ZU1vZGVsPW51bGx9fX1jbGFzcyBMaW5rQW5ub3RhdGlvbiBleHRlbmRzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuTElOSztjb25zdCB0PWdldFF1YWRQb2ludHMoZS5kaWN0LHRoaXMucmVjdGFuZ2xlKTt0JiYodGhpcy5kYXRhLnF1YWRQb2ludHM9dCk7dGhpcy5kYXRhLmJvcmRlckNvbG9yfHw9dGhpcy5kYXRhLmNvbG9yO2guQ2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDplLmRpY3QscmVzdWx0T2JqOnRoaXMuZGF0YSxkb2NCYXNlVXJsOmUucGRmTWFuYWdlci5kb2NCYXNlVXJsLGRvY0F0dGFjaG1lbnRzOmUuYXR0YWNobWVudHN9KX19Y2xhc3MgUG9wdXBBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnR9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuUE9QVVA7bGV0IGE9dC5nZXQoIlBhcmVudCIpO2lmKCFhKXsoMCxyLndhcm4pKCJQb3B1cCBhbm5vdGF0aW9uIGhhcyBhIG1pc3Npbmcgb3IgaW52YWxpZCBwYXJlbnQgYW5ub3RhdGlvbi4iKTtyZXR1cm59Y29uc3QgaT1hLmdldCgiU3VidHlwZSIpO3RoaXMuZGF0YS5wYXJlbnRUeXBlPWkgaW5zdGFuY2VvZiBzLk5hbWU/aS5uYW1lOm51bGw7Y29uc3Qgbj10LmdldFJhdygiUGFyZW50Iik7dGhpcy5kYXRhLnBhcmVudElkPW4gaW5zdGFuY2VvZiBzLlJlZj9uLnRvU3RyaW5nKCk6bnVsbDtjb25zdCBvPWEuZ2V0QXJyYXkoIlJlY3QiKTtBcnJheS5pc0FycmF5KG8pJiY0PT09by5sZW5ndGg/dGhpcy5kYXRhLnBhcmVudFJlY3Q9ci5VdGlsLm5vcm1hbGl6ZVJlY3Qobyk6dGhpcy5kYXRhLnBhcmVudFJlY3Q9WzAsMCwwLDBdO2NvbnN0IGM9YS5nZXQoIlJUIik7KDAscy5pc05hbWUpKGMsci5Bbm5vdGF0aW9uUmVwbHlUeXBlLkdST1VQKSYmKGE9YS5nZXQoIklSVCIpKTtpZihhLmhhcygiTSIpKXt0aGlzLnNldE1vZGlmaWNhdGlvbkRhdGUoYS5nZXQoIk0iKSk7dGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9dGhpcy5tb2RpZmljYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9bnVsbDtpZihhLmhhcygiQyIpKXt0aGlzLnNldENvbG9yKGEuZ2V0QXJyYXkoIkMiKSk7dGhpcy5kYXRhLmNvbG9yPXRoaXMuY29sb3J9ZWxzZSB0aGlzLmRhdGEuY29sb3I9bnVsbDtpZighdGhpcy52aWV3YWJsZSl7Y29uc3QgZT1hLmdldCgiRiIpO3RoaXMuX2lzVmlld2FibGUoZSkmJnRoaXMuc2V0RmxhZ3MoZSl9dGhpcy5zZXRUaXRsZShhLmdldCgiVCIpKTt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDb250ZW50cyhhLmdldCgiQ29udGVudHMiKSk7dGhpcy5kYXRhLmNvbnRlbnRzT2JqPXRoaXMuX2NvbnRlbnRzO2EuaGFzKCJSQyIpJiYodGhpcy5kYXRhLnJpY2hUZXh0PW0uWEZBRmFjdG9yeS5nZXRSaWNoVGV4dEFzSHRtbChhLmdldCgiUkMiKSkpfX10LlBvcHVwQW5ub3RhdGlvbj1Qb3B1cEFubm90YXRpb247Y2xhc3MgRnJlZVRleHRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTtjb25zdHt4cmVmOnR9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuRlJFRVRFWFQ7dGhpcy5zZXREZWZhdWx0QXBwZWFyYW5jZShlKTtpZighdGhpcy5hcHBlYXJhbmNlJiZ0aGlzLl9pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3QgYT1lLmRpY3QuZ2V0KCJDQSIpLHI9bmV3IG4uRmFrZVVuaWNvZGVGb250KHQsInNhbnMtc2VyaWYiKSxpPXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7dGhpcy5hcHBlYXJhbmNlPXIuY3JlYXRlQXBwZWFyYW5jZSh0aGlzLl9jb250ZW50cy5zdHIsdGhpcy5yZWN0YW5nbGUsdGhpcy5yb3RhdGlvbixpLmZvbnRTaXplfHwxMCxpLmZvbnRDb2xvcixhKTt0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlLG4uRmFrZVVuaWNvZGVGb250LnRvVW5pY29kZVN0cmVhbSl9ZWxzZSB0aGlzLl9pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZHx8KDAsci53YXJuKSgiRnJlZVRleHRBbm5vdGF0aW9uOiBPZmZzY3JlZW5DYW52YXMgaXMgbm90IHN1cHBvcnRlZCwgYW5ub3RhdGlvbiBtYXkgbm90IHJlbmRlciBjb3JyZWN0bHkuIil9Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuISF0aGlzLmFwcGVhcmFuY2V9c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjphLGFwOm99KXtjb25zdHtjb2xvcjpjLGZvbnRTaXplOmwscmVjdDpoLHJvdGF0aW9uOnUsdXNlcjpkLHZhbHVlOmZ9PWUsZz1uZXcgcy5EaWN0KHQpO2cuc2V0KCJUeXBlIixzLk5hbWUuZ2V0KCJBbm5vdCIpKTtnLnNldCgiU3VidHlwZSIscy5OYW1lLmdldCgiRnJlZVRleHQiKSk7Zy5zZXQoIkNyZWF0aW9uRGF0ZSIsYEQ6JHsoMCxyLmdldE1vZGlmaWNhdGlvbkRhdGUpKCl9YCk7Zy5zZXQoIlJlY3QiLGgpO2NvbnN0IHA9YC9IZWx2ICR7bH0gVGYgJHsoMCxuLmdldFBkZkNvbG9yKShjLCEwKX1gO2cuc2V0KCJEQSIscCk7Zy5zZXQoIkNvbnRlbnRzIiwoMCxpLmlzQXNjaWkpKGYpP2Y6KDAsaS5zdHJpbmdUb1VURjE2U3RyaW5nKShmLCEwKSk7Zy5zZXQoIkYiLDQpO2cuc2V0KCJCb3JkZXIiLFswLDAsMF0pO2cuc2V0KCJSb3RhdGUiLHUpO2QmJmcuc2V0KCJUIiwoMCxpLmlzQXNjaWkpKGQpP2Q6KDAsaS5zdHJpbmdUb1VURjE2U3RyaW5nKShkLCEwKSk7aWYoYXx8byl7Y29uc3QgZT1uZXcgcy5EaWN0KHQpO2cuc2V0KCJBUCIsZSk7YT9lLnNldCgiTiIsYSk6ZS5zZXQoIk4iLG8pfXJldHVybiBnfXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxhKXtjb25zdHtiYXNlRm9udFJlZjpvLGV2YWx1YXRvcjpjLHRhc2s6bH09YSx7Y29sb3I6aCxmb250U2l6ZTp1LHJlY3Q6ZCxyb3RhdGlvbjpmLHZhbHVlOmd9PWUsbT1uZXcgcy5EaWN0KHQpLGI9bmV3IHMuRGljdCh0KTtpZihvKWIuc2V0KCJIZWx2IixvKTtlbHNle2NvbnN0IGU9bmV3IHMuRGljdCh0KTtlLnNldCgiQmFzZUZvbnQiLHMuTmFtZS5nZXQoIkhlbHZldGljYSIpKTtlLnNldCgiVHlwZSIscy5OYW1lLmdldCgiRm9udCIpKTtlLnNldCgiU3VidHlwZSIscy5OYW1lLmdldCgiVHlwZTEiKSk7ZS5zZXQoIkVuY29kaW5nIixzLk5hbWUuZ2V0KCJXaW5BbnNpRW5jb2RpbmciKSk7Yi5zZXQoIkhlbHYiLGUpfW0uc2V0KCJGb250IixiKTtjb25zdCB5PWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKGMsbCx7Zm9udE5hbWU6IkhlbHZldGljYSIsZm9udFNpemU6dX0sbSksW3csUyx4LENdPWQ7bGV0IGs9eC13LHY9Qy1TO2YlMTgwIT0wJiYoW2ssdl09W3Ysa10pO2NvbnN0IEY9Zy5zcGxpdCgiXG4iKSxPPXUvMWUzO2xldCBUPS0xLzA7Y29uc3QgTT1bXTtmb3IobGV0IGUgb2YgRil7Y29uc3QgdD15LmVuY29kZVN0cmluZyhlKTtpZih0Lmxlbmd0aD4xKXJldHVybiBudWxsO2U9dC5qb2luKCIiKTtNLnB1c2goZSk7bGV0IGE9MDtjb25zdCByPXkuY2hhcnNUb0dseXBocyhlKTtmb3IoY29uc3QgZSBvZiByKWErPWUud2lkdGgqTztUPU1hdGgubWF4KFQsYSl9bGV0IEU9MTtUPmsmJihFPWsvVCk7bGV0IEQ9MTtjb25zdCBOPXIuTElORV9GQUNUT1IqdSxSPXIuTElORV9ERVNDRU5UX0ZBQ1RPUip1LEw9TipGLmxlbmd0aDtMPnYmJihEPXYvTCk7Y29uc3QgXz11Kk1hdGgubWluKEUsRCksJD1bInEiLGAwIDAgJHsoMCxpLm51bWJlclRvU3RyaW5nKShrKX0gJHsoMCxpLm51bWJlclRvU3RyaW5nKSh2KX0gcmUgVyBuYCwiQlQiLGAxIDAgMCAxIDAgJHsoMCxpLm51bWJlclRvU3RyaW5nKSh2K1IpfSBUbSAwIFRjICR7KDAsbi5nZXRQZGZDb2xvcikoaCwhMCl9YCxgL0hlbHYgJHsoMCxpLm51bWJlclRvU3RyaW5nKShfKX0gVGZgXSxqPSgwLGkubnVtYmVyVG9TdHJpbmcpKE4pO2Zvcihjb25zdCBlIG9mIE0pJC5wdXNoKGAwIC0ke2p9IFRkICgkeygwLGkuZXNjYXBlU3RyaW5nKShlKX0pIFRqYCk7JC5wdXNoKCJFVCIsIlEiKTtjb25zdCBVPSQuam9pbigiXG4iKSxYPW5ldyBzLkRpY3QodCk7WC5zZXQoIkZvcm1UeXBlIiwxKTtYLnNldCgiU3VidHlwZSIscy5OYW1lLmdldCgiRm9ybSIpKTtYLnNldCgiVHlwZSIscy5OYW1lLmdldCgiWE9iamVjdCIpKTtYLnNldCgiQkJveCIsWzAsMCxrLHZdKTtYLnNldCgiUmVzb3VyY2VzIixtKTtpZihmKXtjb25zdCBlPSgwLGkuZ2V0Um90YXRpb25NYXRyaXgpKGYsayx2KTtYLnNldCgiTWF0cml4IixlKX1jb25zdCBIPW5ldyBwLlN0cmluZ1N0cmVhbShVKTtILmRpY3Q9WDtyZXR1cm4gSH19Y2xhc3MgTGluZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuTElORTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTtjb25zdCBpPXQuZ2V0QXJyYXkoIkwiKTt0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzPXIuVXRpbC5ub3JtYWxpemVSZWN0KGkpO3RoaXMuc2V0TGluZUVuZGluZ3ModC5nZXRBcnJheSgiTEUiKSk7dGhpcy5kYXRhLmxpbmVFbmRpbmdzPXRoaXMubGluZUVuZGluZ3M7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxuPXQuZ2V0KCJDQSIpLHM9Z2V0UmdiQ29sb3IodC5nZXRBcnJheSgiSUMiKSxudWxsKSxvPXM/Z2V0UGRmQ29sb3JBcnJheShzKTpudWxsLGM9bz9uOm51bGwsbD10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLGg9MipsLHU9W3RoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMF0taCx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzFdLWgsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1syXStoLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbM10raF07ci5VdGlsLmludGVyc2VjdCh0aGlzLnJlY3RhbmdsZSx1KXx8KHRoaXMucmVjdGFuZ2xlPXUpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmEsZXh0cmE6YCR7bH0gd2Asc3Ryb2tlQ29sb3I6ZSxmaWxsQ29sb3I6byxzdHJva2VBbHBoYTpuLGZpbGxBbHBoYTpjLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke2lbMF19ICR7aVsxXX0gbWAsYCR7aVsyXX0gJHtpWzNdfSBsYCwiUyIpO3JldHVyblt0WzBdLngtbCx0WzFdLngrbCx0WzNdLnktbCx0WzFdLnkrbF19fSl9fX1jbGFzcyBTcXVhcmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlNRVUFSRTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLHI9dC5nZXQoIkNBIiksaT1nZXRSZ2JDb2xvcih0LmdldEFycmF5KCJJQyIpLG51bGwpLG49aT9nZXRQZGZDb2xvckFycmF5KGkpOm51bGwscz1uP3I6bnVsbDtpZigwPT09dGhpcy5ib3JkZXJTdHlsZS53aWR0aCYmIW4pcmV0dXJuO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmEsZXh0cmE6YCR7dGhpcy5ib3JkZXJTdHlsZS53aWR0aH0gd2Asc3Ryb2tlQ29sb3I6ZSxmaWxsQ29sb3I6bixzdHJva2VBbHBoYTpyLGZpbGxBbHBoYTpzLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgYT10WzJdLngrdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLHI9dFsyXS55K3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixpPXRbM10ueC10WzJdLngtdGhpcy5ib3JkZXJTdHlsZS53aWR0aCxzPXRbMV0ueS10WzNdLnktdGhpcy5ib3JkZXJTdHlsZS53aWR0aDtlLnB1c2goYCR7YX0gJHtyfSAke2l9ICR7c30gcmVgKTtuP2UucHVzaCgiQiIpOmUucHVzaCgiUyIpO3JldHVyblt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX19Y2xhc3MgQ2lyY2xlQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5DSVJDTEU7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxyPXQuZ2V0KCJDQSIpLGk9Z2V0UmdiQ29sb3IodC5nZXRBcnJheSgiSUMiKSxudWxsKSxuPWk/Z2V0UGRmQ29sb3JBcnJheShpKTpudWxsLHM9bj9yOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFuKXJldHVybjtjb25zdCBvPTQvMypNYXRoLnRhbihNYXRoLlBJLzgpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmEsZXh0cmE6YCR7dGhpcy5ib3JkZXJTdHlsZS53aWR0aH0gd2Asc3Ryb2tlQ29sb3I6ZSxmaWxsQ29sb3I6bixzdHJva2VBbHBoYTpyLGZpbGxBbHBoYTpzLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgYT10WzBdLngrdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLHI9dFswXS55LXRoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixpPXRbM10ueC10aGlzLmJvcmRlclN0eWxlLndpZHRoLzIscz10WzNdLnkrdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLGM9YSsoaS1hKS8yLGw9cisocy1yKS8yLGg9KGktYSkvMipvLHU9KHMtcikvMipvO2UucHVzaChgJHtjfSAke3N9IG1gLGAke2MraH0gJHtzfSAke2l9ICR7bCt1fSAke2l9ICR7bH0gY2AsYCR7aX0gJHtsLXV9ICR7YytofSAke3J9ICR7Y30gJHtyfSBjYCxgJHtjLWh9ICR7cn0gJHthfSAke2wtdX0gJHthfSAke2x9IGNgLGAke2F9ICR7bCt1fSAke2MtaH0gJHtzfSAke2N9ICR7c30gY2AsImgiKTtuP2UucHVzaCgiQiIpOmUucHVzaCgiUyIpO3JldHVyblt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX19Y2xhc3MgUG9seWxpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlBPTFlMSU5FO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS52ZXJ0aWNlcz1bXTtpZighKHRoaXMgaW5zdGFuY2VvZiBQb2x5Z29uQW5ub3RhdGlvbikpe3RoaXMuc2V0TGluZUVuZGluZ3ModC5nZXRBcnJheSgiTEUiKSk7dGhpcy5kYXRhLmxpbmVFbmRpbmdzPXRoaXMubGluZUVuZGluZ3N9Y29uc3QgaT10LmdldEFycmF5KCJWZXJ0aWNlcyIpO2lmKEFycmF5LmlzQXJyYXkoaSkpe2ZvcihsZXQgZT0wLHQ9aS5sZW5ndGg7ZTx0O2UrPTIpdGhpcy5kYXRhLnZlcnRpY2VzLnB1c2goe3g6aVtlXSx5OmlbZSsxXX0pO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0saT10LmdldCgiQ0EiKSxuPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEscz0yKm4sbz1bMS8wLDEvMCwtMS8wLC0xLzBdO2Zvcihjb25zdCBlIG9mIHRoaXMuZGF0YS52ZXJ0aWNlcyl7b1swXT1NYXRoLm1pbihvWzBdLGUueC1zKTtvWzFdPU1hdGgubWluKG9bMV0sZS55LXMpO29bMl09TWF0aC5tYXgob1syXSxlLngrcyk7b1szXT1NYXRoLm1heChvWzNdLGUueStzKX1yLlV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLG8pfHwodGhpcy5yZWN0YW5nbGU9byk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6YSxleHRyYTpgJHtufSB3YCxzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOmkscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBhPXRoaXMuZGF0YS52ZXJ0aWNlcztmb3IobGV0IHQ9MCxyPWEubGVuZ3RoO3Q8cjt0KyspZS5wdXNoKGAke2FbdF0ueH0gJHthW3RdLnl9ICR7MD09PXQ/Im0iOiJsIn1gKTtlLnB1c2goIlMiKTtyZXR1cm5bdFswXS54LHRbMV0ueCx0WzNdLnksdFsxXS55XX19KX19fX1jbGFzcyBQb2x5Z29uQW5ub3RhdGlvbiBleHRlbmRzIFBvbHlsaW5lQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5QT0xZR09OfX1jbGFzcyBDYXJldEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkNBUkVUfX1jbGFzcyBJbmtBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTtjb25zdHtkaWN0OnQseHJlZjphfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLklOSzt0aGlzLmRhdGEuaW5rTGlzdHM9W107Y29uc3QgaT10LmdldEFycmF5KCJJbmtMaXN0Iik7aWYoQXJyYXkuaXNBcnJheShpKSl7Zm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7KytlKXt0aGlzLmRhdGEuaW5rTGlzdHMucHVzaChbXSk7Zm9yKGxldCB0PTAscj1pW2VdLmxlbmd0aDt0PHI7dCs9Mil0aGlzLmRhdGEuaW5rTGlzdHNbZV0ucHVzaCh7eDphLmZldGNoSWZSZWYoaVtlXVt0XSkseTphLmZldGNoSWZSZWYoaVtlXVt0KzFdKX0pfWlmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0saT10LmdldCgiQ0EiKSxuPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEscz0yKm4sbz1bMS8wLDEvMCwtMS8wLC0xLzBdO2Zvcihjb25zdCBlIG9mIHRoaXMuZGF0YS5pbmtMaXN0cylmb3IoY29uc3QgdCBvZiBlKXtvWzBdPU1hdGgubWluKG9bMF0sdC54LXMpO29bMV09TWF0aC5taW4ob1sxXSx0Lnktcyk7b1syXT1NYXRoLm1heChvWzJdLHQueCtzKTtvWzNdPU1hdGgubWF4KG9bM10sdC55K3MpfXIuVXRpbC5pbnRlcnNlY3QodGhpcy5yZWN0YW5nbGUsbyl8fCh0aGlzLnJlY3RhbmdsZT1vKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOmAke259IHdgLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6aSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2Zvcihjb25zdCB0IG9mIHRoaXMuZGF0YS5pbmtMaXN0cyl7Zm9yKGxldCBhPTAscj10Lmxlbmd0aDthPHI7YSsrKWUucHVzaChgJHt0W2FdLnh9ICR7dFthXS55fSAkezA9PT1hPyJtIjoibCJ9YCk7ZS5wdXNoKCJTIil9cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fX1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQse2FwUmVmOmEsYXA6aX0pe2NvbnN0e3BhdGhzOm4scmVjdDpvLHJvdGF0aW9uOmN9PWUsbD1uZXcgcy5EaWN0KHQpO2wuc2V0KCJUeXBlIixzLk5hbWUuZ2V0KCJBbm5vdCIpKTtsLnNldCgiU3VidHlwZSIscy5OYW1lLmdldCgiSW5rIikpO2wuc2V0KCJDcmVhdGlvbkRhdGUiLGBEOiR7KDAsci5nZXRNb2RpZmljYXRpb25EYXRlKSgpfWApO2wuc2V0KCJSZWN0IixvKTtsLnNldCgiSW5rTGlzdCIsbi5tYXAoKGU9PmUucG9pbnRzKSkpO2wuc2V0KCJGIiw0KTtsLnNldCgiQm9yZGVyIixbMCwwLDBdKTtsLnNldCgiUm90YXRlIixjKTtjb25zdCBoPW5ldyBzLkRpY3QodCk7bC5zZXQoIkFQIixoKTthP2guc2V0KCJOIixhKTpoLnNldCgiTiIsaSk7cmV0dXJuIGx9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LGEpe2NvbnN0e2NvbG9yOnIscmVjdDpvLHJvdGF0aW9uOmMscGF0aHM6bCx0aGlja25lc3M6aCxvcGFjaXR5OnV9PWUsW2QsZixnLG1dPW87bGV0IGI9Zy1kLHk9bS1mO2MlMTgwIT0wJiYoW2IseV09W3ksYl0pO2NvbnN0IHc9W2Ake2h9IHcgMSBKIDEgamAsYCR7KDAsbi5nZXRQZGZDb2xvcikociwhMSl9YF07MSE9PXUmJncucHVzaCgiL1IwIGdzIik7Y29uc3QgUz1bXTtmb3IoY29uc3R7YmV6aWVyOmV9b2YgbCl7Uy5sZW5ndGg9MDtTLnB1c2goYCR7KDAsaS5udW1iZXJUb1N0cmluZykoZVswXSl9ICR7KDAsaS5udW1iZXJUb1N0cmluZykoZVsxXSl9IG1gKTtmb3IobGV0IHQ9MixhPWUubGVuZ3RoO3Q8YTt0Kz02KXtjb25zdCBhPWUuc2xpY2UodCx0KzYpLm1hcChpLm51bWJlclRvU3RyaW5nKS5qb2luKCIgIik7Uy5wdXNoKGAke2F9IGNgKX1TLnB1c2goIlMiKTt3LnB1c2goUy5qb2luKCJcbiIpKX1jb25zdCB4PXcuam9pbigiXG4iKSxDPW5ldyBzLkRpY3QodCk7Qy5zZXQoIkZvcm1UeXBlIiwxKTtDLnNldCgiU3VidHlwZSIscy5OYW1lLmdldCgiRm9ybSIpKTtDLnNldCgiVHlwZSIscy5OYW1lLmdldCgiWE9iamVjdCIpKTtDLnNldCgiQkJveCIsWzAsMCxiLHldKTtDLnNldCgiTGVuZ3RoIix4Lmxlbmd0aCk7aWYoYyl7Y29uc3QgZT0oMCxpLmdldFJvdGF0aW9uTWF0cml4KShjLGIseSk7Qy5zZXQoIk1hdHJpeCIsZSl9aWYoMSE9PXUpe2NvbnN0IGU9bmV3IHMuRGljdCh0KSxhPW5ldyBzLkRpY3QodCkscj1uZXcgcy5EaWN0KHQpO3Iuc2V0KCJDQSIsdSk7ci5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKTthLnNldCgiUjAiLHIpO2Uuc2V0KCJFeHRHU3RhdGUiLGEpO0Muc2V0KCJSZXNvdXJjZXMiLGUpfWNvbnN0IGs9bmV3IHAuU3RyaW5nU3RyZWFtKHgpO2suZGljdD1DO3JldHVybiBrfX1jbGFzcyBIaWdobGlnaHRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkhJR0hMSUdIVDtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2NvbnN0IGU9dGhpcy5hcHBlYXJhbmNlPy5kaWN0LmdldCgiUmVzb3VyY2VzIik7aWYoIXRoaXMuYXBwZWFyYW5jZXx8IWU/LmhhcygiRXh0R1N0YXRlIikpe3RoaXMuYXBwZWFyYW5jZSYmKDAsci53YXJuKSgiSGlnaGxpZ2h0QW5ub3RhdGlvbiAtIGlnbm9yaW5nIGJ1aWx0LWluIGFwcGVhcmFuY2Ugc3RyZWFtLiIpO2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlsxLDEsMF0saT10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGZpbGxDb2xvcjplLGJsZW5kTW9kZToiTXVsdGlwbHkiLGZpbGxBbHBoYTppLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbMF0ueH0gJHt0WzBdLnl9IG1gLGAke3RbMV0ueH0gJHt0WzFdLnl9IGxgLGAke3RbM10ueH0gJHt0WzNdLnl9IGxgLGAke3RbMl0ueH0gJHt0WzJdLnl9IGxgLCJmIik7cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fWVsc2UgdGhpcy5kYXRhLmhhc1BvcHVwPSExfX1jbGFzcyBVbmRlcmxpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlVOREVSTElORTtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0scj10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOiJbXSAwIGQgMC41NzEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTpyLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbMl0ueH0gJHt0WzJdLnkrMS4zfSBtYCxgJHt0WzNdLnh9ICR7dFszXS55KzEuM30gbGAsIlMiKTtyZXR1cm5bdFswXS54LHRbMV0ueCx0WzNdLnksdFsxXS55XX19KX19ZWxzZSB0aGlzLmRhdGEuaGFzUG9wdXA9ITF9fWNsYXNzIFNxdWlnZ2x5QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5TUVVJR0dMWTtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0scj10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOnIscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBhPSh0WzBdLnktdFsyXS55KS82O2xldCByPWEsaT10WzJdLng7Y29uc3Qgbj10WzJdLnkscz10WzNdLng7ZS5wdXNoKGAke2l9ICR7bityfSBtYCk7ZG97aSs9MjtyPTA9PT1yP2E6MDtlLnB1c2goYCR7aX0gJHtuK3J9IGxgKX13aGlsZShpPHMpO2UucHVzaCgiUyIpO3JldHVyblt0WzJdLngscyxuLTIqYSxuKzIqYV19fSl9fWVsc2UgdGhpcy5kYXRhLmhhc1BvcHVwPSExfX1jbGFzcyBTdHJpa2VPdXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlNUUklLRU9VVDtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0scj10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOnIscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goKHRbMF0ueCt0WzJdLngpLzIrIiAiKyh0WzBdLnkrdFsyXS55KS8yKyIgbSIsKHRbMV0ueCt0WzNdLngpLzIrIiAiKyh0WzFdLnkrdFszXS55KS8yKyIgbCIsIlMiKTtyZXR1cm5bdFswXS54LHRbMV0ueCx0WzNdLnksdFsxXS55XX19KX19ZWxzZSB0aGlzLmRhdGEuaGFzUG9wdXA9ITF9fWNsYXNzIFN0YW1wQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuU1RBTVA7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGV9fWNsYXNzIEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZSxpPW5ldyBkLkZpbGVTcGVjKHQuZ2V0KCJGUyIpLGEpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkZJTEVBVFRBQ0hNRU5UO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5maWxlPWkuc2VyaWFsaXphYmxlO2NvbnN0IG49dC5nZXQoIk5hbWUiKTt0aGlzLmRhdGEubmFtZT1uIGluc3RhbmNlb2Ygcy5OYW1lPygwLHIuc3RyaW5nVG9QREZTdHJpbmcpKG4ubmFtZSk6IlB1c2hQaW4ifX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5GYWtlVW5pY29kZUZvbnQ9dm9pZCAwO3QuY3JlYXRlRGVmYXVsdEFwcGVhcmFuY2U9ZnVuY3Rpb24gY3JlYXRlRGVmYXVsdEFwcGVhcmFuY2Uoe2ZvbnRTaXplOmUsZm9udE5hbWU6dCxmb250Q29sb3I6YX0pe3JldHVybmAvJHsoMCxpLmVzY2FwZVBERk5hbWUpKHQpfSAke2V9IFRmICR7Z2V0UGRmQ29sb3IoYSwhMCl9YH07dC5nZXRQZGZDb2xvcj1nZXRQZGZDb2xvcjt0LnBhcnNlRGVmYXVsdEFwcGVhcmFuY2U9ZnVuY3Rpb24gcGFyc2VEZWZhdWx0QXBwZWFyYW5jZShlKXtyZXR1cm4gbmV3IERlZmF1bHRBcHBlYXJhbmNlRXZhbHVhdG9yKGUpLnBhcnNlKCl9O3ZhciByPWEoNCksaT1hKDMpLG49YSgyKSxzPWEoMTIpLG89YSgxMyksYz1hKDgpO2NsYXNzIERlZmF1bHRBcHBlYXJhbmNlRXZhbHVhdG9yIGV4dGVuZHMgby5FdmFsdWF0b3JQcmVwcm9jZXNzb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIobmV3IGMuU3RyaW5nU3RyZWFtKGUpKX1wYXJzZSgpe2NvbnN0IGU9e2ZuOjAsYXJnczpbXX0sdD17Zm9udFNpemU6MCxmb250TmFtZToiIixmb250Q29sb3I6bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpfTt0cnl7Zm9yKDs7KXtlLmFyZ3MubGVuZ3RoPTA7aWYoIXRoaXMucmVhZChlKSlicmVhaztpZigwIT09dGhpcy5zYXZlZFN0YXRlc0RlcHRoKWNvbnRpbnVlO2NvbnN0e2ZuOmEsYXJnczppfT1lO3N3aXRjaCgwfGEpe2Nhc2Ugbi5PUFMuc2V0Rm9udDpjb25zdFtlLGFdPWk7ZSBpbnN0YW5jZW9mIHIuTmFtZSYmKHQuZm9udE5hbWU9ZS5uYW1lKTsibnVtYmVyIj09dHlwZW9mIGEmJmE+MCYmKHQuZm9udFNpemU9YSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRGaWxsUkdCQ29sb3I6cy5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0oaSwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0RmlsbEdyYXk6cy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheS5nZXRSZ2JJdGVtKGksMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIG4uT1BTLnNldEZpbGxDb2xvclNwYWNlOnMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiSXRlbShpLDAsdC5mb250Q29sb3IsMCl9fX1jYXRjaChlKXsoMCxuLndhcm4pKGBwYXJzZURlZmF1bHRBcHBlYXJhbmNlIC0gaWdub3JpbmcgZXJyb3JzOiAiJHtlfSIuYCl9cmV0dXJuIHR9fWZ1bmN0aW9uIGdldFBkZkNvbG9yKGUsdCl7aWYoZVswXT09PWVbMV0mJmVbMV09PT1lWzJdKXtjb25zdCBhPWVbMF0vMjU1O3JldHVybmAkeygwLGkubnVtYmVyVG9TdHJpbmcpKGEpfSAke3Q/ImciOiJHIn1gfXJldHVybiBBcnJheS5mcm9tKGUsKGU9PigwLGkubnVtYmVyVG9TdHJpbmcpKGUvMjU1KSkpLmpvaW4oIiAiKSsiICIrKHQ/InJnIjoiUkciKX1jbGFzcyBGYWtlVW5pY29kZUZvbnR7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnhyZWY9ZTt0aGlzLndpZHRocz1udWxsO3RoaXMuZmlyc3RDaGFyPTEvMDt0aGlzLmxhc3RDaGFyPS0xLzA7dGhpcy5mb250RmFtaWx5PXQ7Y29uc3QgYT1uZXcgT2Zmc2NyZWVuQ2FudmFzKDEsMSk7dGhpcy5jdHhNZWFzdXJlPWEuZ2V0Q29udGV4dCgiMmQiKTtGYWtlVW5pY29kZUZvbnQuX2ZvbnROYW1lSWR8fChGYWtlVW5pY29kZUZvbnQuX2ZvbnROYW1lSWQ9MSk7dGhpcy5mb250TmFtZT1yLk5hbWUuZ2V0KGBJbnZhbGlkUERGanNGb250XyR7dH1fJHtGYWtlVW5pY29kZUZvbnQuX2ZvbnROYW1lSWQrK31gKX1nZXQgdG9Vbmljb2RlUmVmKCl7aWYoIUZha2VVbmljb2RlRm9udC5fdG9Vbmljb2RlUmVmKXtjb25zdCBlPSIvQ0lESW5pdCAvUHJvY1NldCBmaW5kcmVzb3VyY2UgYmVnaW5cbjEyIGRpY3QgYmVnaW5cbmJlZ2luY21hcFxuL0NJRFN5c3RlbUluZm9cbjw8IC9SZWdpc3RyeSAoQWRvYmUpXG4vT3JkZXJpbmcgKFVDUykgL1N1cHBsZW1lbnQgMCA+PiBkZWZcbi9DTWFwTmFtZSAvQWRvYmUtSWRlbnRpdHktVUNTIGRlZlxuL0NNYXBUeXBlIDIgZGVmXG4xIGJlZ2luY29kZXNwYWNlcmFuZ2VcbjwwMDAwPiA8RkZGRj5cbmVuZGNvZGVzcGFjZXJhbmdlXG4xIGJlZ2luYmZyYW5nZVxuPDAwMDA+IDxGRkZGPiA8MDAwMD5cbmVuZGJmcmFuZ2VcbmVuZGNtYXAgQ01hcE5hbWUgY3VycmVudGRpY3QgL0NNYXAgZGVmaW5lcmVzb3VyY2UgcG9wIGVuZCBlbmQiLHQ9RmFrZVVuaWNvZGVGb250LnRvVW5pY29kZVN0cmVhbT1uZXcgYy5TdHJpbmdTdHJlYW0oZSksYT1uZXcgci5EaWN0KHRoaXMueHJlZik7dC5kaWN0PWE7YS5zZXQoIkxlbmd0aCIsZS5sZW5ndGgpO0Zha2VVbmljb2RlRm9udC5fdG9Vbmljb2RlUmVmPXRoaXMueHJlZi5nZXROZXdQZXJzaXN0ZW50UmVmKHQpfXJldHVybiBGYWtlVW5pY29kZUZvbnQuX3RvVW5pY29kZVJlZn1nZXQgZm9udERlc2NyaXB0b3JSZWYoKXtpZighRmFrZVVuaWNvZGVGb250Ll9mb250RGVzY3JpcHRvclJlZil7Y29uc3QgZT1uZXcgci5EaWN0KHRoaXMueHJlZik7ZS5zZXQoIlR5cGUiLHIuTmFtZS5nZXQoIkZvbnREZXNjcmlwdG9yIikpO2Uuc2V0KCJGb250TmFtZSIsdGhpcy5mb250TmFtZSk7ZS5zZXQoIkZvbnRGYW1pbHkiLCJNeXJpYWRQcm8gUmVndWxhciIpO2Uuc2V0KCJGb250QkJveCIsWzAsMCwwLDBdKTtlLnNldCgiRm9udFN0cmV0Y2giLHIuTmFtZS5nZXQoIk5vcm1hbCIpKTtlLnNldCgiRm9udFdlaWdodCIsNDAwKTtlLnNldCgiSXRhbGljQW5nbGUiLDApO0Zha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWY9dGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9cmV0dXJuIEZha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWZ9Z2V0IGRlc2NlbmRhbnRGb250UmVmKCl7Y29uc3QgZT1uZXcgci5EaWN0KHRoaXMueHJlZik7ZS5zZXQoIkJhc2VGb250Iix0aGlzLmZvbnROYW1lKTtlLnNldCgiVHlwZSIsci5OYW1lLmdldCgiRm9udCIpKTtlLnNldCgiU3VidHlwZSIsci5OYW1lLmdldCgiQ0lERm9udFR5cGUwIikpO2Uuc2V0KCJDSURUb0dJRE1hcCIsci5OYW1lLmdldCgiSWRlbnRpdHkiKSk7ZS5zZXQoIkZpcnN0Q2hhciIsdGhpcy5maXJzdENoYXIpO2Uuc2V0KCJMYXN0Q2hhciIsdGhpcy5sYXN0Q2hhcik7ZS5zZXQoIkZvbnREZXNjcmlwdG9yIix0aGlzLmZvbnREZXNjcmlwdG9yUmVmKTtlLnNldCgiRFciLDFlMyk7Y29uc3QgdD1bXSxhPVsuLi50aGlzLndpZHRocy5lbnRyaWVzKCldLnNvcnQoKTtsZXQgaT1udWxsLG49bnVsbDtmb3IoY29uc3RbZSxyXW9mIGEpaWYoaSlpZihlPT09aStuLmxlbmd0aCluLnB1c2gocik7ZWxzZXt0LnB1c2goaSxuKTtpPWU7bj1bcl19ZWxzZXtpPWU7bj1bcl19aSYmdC5wdXNoKGksbik7ZS5zZXQoIlciLHQpO2NvbnN0IHM9bmV3IHIuRGljdCh0aGlzLnhyZWYpO3Muc2V0KCJPcmRlcmluZyIsIklkZW50aXR5Iik7cy5zZXQoIlJlZ2lzdHJ5IiwiQWRvYmUiKTtzLnNldCgiU3VwcGxlbWVudCIsMCk7ZS5zZXQoIkNJRFN5c3RlbUluZm8iLHMpO3JldHVybiB0aGlzLnhyZWYuZ2V0TmV3UGVyc2lzdGVudFJlZihlKX1nZXQgYmFzZUZvbnRSZWYoKXtjb25zdCBlPW5ldyByLkRpY3QodGhpcy54cmVmKTtlLnNldCgiQmFzZUZvbnQiLHRoaXMuZm9udE5hbWUpO2Uuc2V0KCJUeXBlIixyLk5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixyLk5hbWUuZ2V0KCJUeXBlMCIpKTtlLnNldCgiRW5jb2RpbmciLHIuTmFtZS5nZXQoIklkZW50aXR5LUgiKSk7ZS5zZXQoIkRlc2NlbmRhbnRGb250cyIsW3RoaXMuZGVzY2VuZGFudEZvbnRSZWZdKTtlLnNldCgiVG9Vbmljb2RlIix0aGlzLnRvVW5pY29kZVJlZik7cmV0dXJuIHRoaXMueHJlZi5nZXROZXdQZXJzaXN0ZW50UmVmKGUpfWdldCByZXNvdXJjZXMoKXtjb25zdCBlPW5ldyByLkRpY3QodGhpcy54cmVmKSx0PW5ldyByLkRpY3QodGhpcy54cmVmKTt0LnNldCh0aGlzLmZvbnROYW1lLm5hbWUsdGhpcy5iYXNlRm9udFJlZik7ZS5zZXQoIkZvbnQiLHQpO3JldHVybiBlfV9jcmVhdGVDb250ZXh0KCl7dGhpcy53aWR0aHM9bmV3IE1hcDt0aGlzLmN0eE1lYXN1cmUuZm9udD1gMTAwMHB4ICR7dGhpcy5mb250RmFtaWx5fWA7cmV0dXJuIHRoaXMuY3R4TWVhc3VyZX1jcmVhdGVGb250UmVzb3VyY2VzKGUpe2NvbnN0IHQ9dGhpcy5fY3JlYXRlQ29udGV4dCgpO2Zvcihjb25zdCBhIG9mIGUuc3BsaXQoL1xyXG4/fFxuLykpZm9yKGNvbnN0IGUgb2YgYS5zcGxpdCgiIikpe2NvbnN0IGE9ZS5jaGFyQ29kZUF0KDApO2lmKHRoaXMud2lkdGhzLmhhcyhhKSljb250aW51ZTtjb25zdCByPXQubWVhc3VyZVRleHQoZSksaT1NYXRoLmNlaWwoci53aWR0aCk7dGhpcy53aWR0aHMuc2V0KGEsaSk7dGhpcy5maXJzdENoYXI9TWF0aC5taW4oYSx0aGlzLmZpcnN0Q2hhcik7dGhpcy5sYXN0Q2hhcj1NYXRoLm1heChhLHRoaXMubGFzdENoYXIpfXJldHVybiB0aGlzLnJlc291cmNlc31jcmVhdGVBcHBlYXJhbmNlKGUsdCxhLHMsbyxsKXtjb25zdCBoPXRoaXMuX2NyZWF0ZUNvbnRleHQoKSx1PVtdO2xldCBkPS0xLzA7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvXHJcbj98XG4vKSl7dS5wdXNoKHQpO2NvbnN0IGU9aC5tZWFzdXJlVGV4dCh0KS53aWR0aDtkPU1hdGgubWF4KGQsZSk7Zm9yKGNvbnN0IGUgb2YgdC5zcGxpdCgiIikpe2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KDApO2xldCBhPXRoaXMud2lkdGhzLmdldCh0KTtpZih2b2lkIDA9PT1hKXtjb25zdCByPWgubWVhc3VyZVRleHQoZSk7YT1NYXRoLmNlaWwoci53aWR0aCk7dGhpcy53aWR0aHMuc2V0KHQsYSk7dGhpcy5maXJzdENoYXI9TWF0aC5taW4odCx0aGlzLmZpcnN0Q2hhcik7dGhpcy5sYXN0Q2hhcj1NYXRoLm1heCh0LHRoaXMubGFzdENoYXIpfX19ZCo9cy8xZTM7Y29uc3RbZixnLHAsbV09dDtsZXQgYj1wLWYseT1tLWc7YSUxODAhPTAmJihbYix5XT1beSxiXSk7bGV0IHc9MTtkPmImJih3PWIvZCk7bGV0IFM9MTtjb25zdCB4PW4uTElORV9GQUNUT1IqcyxDPW4uTElORV9ERVNDRU5UX0ZBQ1RPUipzLGs9eCp1Lmxlbmd0aDtrPnkmJihTPXkvayk7Y29uc3Qgdj1zKk1hdGgubWluKHcsUyksRj1bInEiLGAwIDAgJHsoMCxpLm51bWJlclRvU3RyaW5nKShiKX0gJHsoMCxpLm51bWJlclRvU3RyaW5nKSh5KX0gcmUgVyBuYCwiQlQiLGAxIDAgMCAxIDAgJHsoMCxpLm51bWJlclRvU3RyaW5nKSh5K0MpfSBUbSAwIFRjICR7Z2V0UGRmQ29sb3IobywhMCl9YCxgLyR7dGhpcy5mb250TmFtZS5uYW1lfSAkeygwLGkubnVtYmVyVG9TdHJpbmcpKHYpfSBUZmBdLHtyZXNvdXJjZXM6T309dGhpcztpZigxIT09KGw9Im51bWJlciI9PXR5cGVvZiBsJiZsPj0wJiZsPD0xP2w6MSkpe0YucHVzaCgiL1IwIGdzIik7Y29uc3QgZT1uZXcgci5EaWN0KHRoaXMueHJlZiksdD1uZXcgci5EaWN0KHRoaXMueHJlZik7dC5zZXQoImNhIixsKTt0LnNldCgiQ0EiLGwpO3Quc2V0KCJUeXBlIixyLk5hbWUuZ2V0KCJFeHRHU3RhdGUiKSk7ZS5zZXQoIlIwIix0KTtPLnNldCgiRXh0R1N0YXRlIixlKX1jb25zdCBUPSgwLGkubnVtYmVyVG9TdHJpbmcpKHgpO2Zvcihjb25zdCBlIG9mIHUpRi5wdXNoKGAwIC0ke1R9IFRkIDwkeygwLGkuc3RyaW5nVG9VVEYxNkhleFN0cmluZykoZSl9PiBUamApO0YucHVzaCgiRVQiLCJRIik7Y29uc3QgTT1GLmpvaW4oIlxuIiksRT1uZXcgci5EaWN0KHRoaXMueHJlZik7RS5zZXQoIlN1YnR5cGUiLHIuTmFtZS5nZXQoIkZvcm0iKSk7RS5zZXQoIlR5cGUiLHIuTmFtZS5nZXQoIlhPYmplY3QiKSk7RS5zZXQoIkJCb3giLFswLDAsYix5XSk7RS5zZXQoIkxlbmd0aCIsTS5sZW5ndGgpO0Uuc2V0KCJSZXNvdXJjZXMiLE8pO2lmKGEpe2NvbnN0IGU9KDAsaS5nZXRSb3RhdGlvbk1hdHJpeCkoYSxiLHkpO0Uuc2V0KCJNYXRyaXgiLGUpfWNvbnN0IEQ9bmV3IGMuU3RyaW5nU3RyZWFtKE0pO0QuZGljdD1FO3JldHVybiBEfX10LkZha2VVbmljb2RlRm9udD1GYWtlVW5pY29kZUZvbnR9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Db2xvclNwYWNlPXZvaWQgMDt2YXIgcj1hKDIpLGk9YSg0KSxuPWEoNSkscz1hKDMpO2NsYXNzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmNvbnN0cnVjdG9yPT09Q29sb3JTcGFjZSYmKDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIENvbG9yU3BhY2UuIik7dGhpcy5uYW1lPWU7dGhpcy5udW1Db21wcz10fWdldFJnYihlLHQpe2NvbnN0IGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO3RoaXMuZ2V0UmdiSXRlbShlLHQsYSwwKTtyZXR1cm4gYX1nZXRSZ2JJdGVtKGUsdCxhLGkpeygwLHIudW5yZWFjaGFibGUpKCJTaG91bGQgbm90IGNhbGwgQ29sb3JTcGFjZS5nZXRSZ2JJdGVtIil9Z2V0UmdiQnVmZmVyKGUsdCxhLGksbixzLG8peygwLHIudW5yZWFjaGFibGUpKCJTaG91bGQgbm90IGNhbGwgQ29sb3JTcGFjZS5nZXRSZ2JCdWZmZXIiKX1nZXRPdXRwdXRMZW5ndGgoZSx0KXsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0T3V0cHV0TGVuZ3RoIil9aXNQYXNzdGhyb3VnaChlKXtyZXR1cm4hMX1pc0RlZmF1bHREZWNvZGUoZSx0KXtyZXR1cm4gQ29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUoZSx0aGlzLm51bUNvbXBzKX1maWxsUmdiKGUsdCxhLHIsaSxuLHMsbyxjKXtjb25zdCBsPXQqYTtsZXQgaD1udWxsO2NvbnN0IHU9MTw8cyxkPWEhPT1pfHx0IT09cjtpZih0aGlzLmlzUGFzc3Rocm91Z2gocykpaD1vO2Vsc2UgaWYoMT09PXRoaXMubnVtQ29tcHMmJmw+dSYmIkRldmljZUdyYXkiIT09dGhpcy5uYW1lJiYiRGV2aWNlUkdCIiE9PXRoaXMubmFtZSl7Y29uc3QgdD1zPD04P25ldyBVaW50OEFycmF5KHUpOm5ldyBVaW50MTZBcnJheSh1KTtmb3IobGV0IGU9MDtlPHU7ZSsrKXRbZV09ZTtjb25zdCBhPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKnUpO3RoaXMuZ2V0UmdiQnVmZmVyKHQsMCx1LGEsMCxzLDApO2lmKGQpe2g9bmV3IFVpbnQ4QXJyYXkoMypsKTtsZXQgZT0wO2ZvcihsZXQgdD0wO3Q8bDsrK3Qpe2NvbnN0IHI9MypvW3RdO2hbZSsrXT1hW3JdO2hbZSsrXT1hW3IrMV07aFtlKytdPWFbcisyXX19ZWxzZXtsZXQgdD0wO2ZvcihsZXQgcj0wO3I8bDsrK3Ipe2NvbnN0IGk9MypvW3JdO2VbdCsrXT1hW2ldO2VbdCsrXT1hW2krMV07ZVt0KytdPWFbaSsyXTt0Kz1jfX19ZWxzZSBpZihkKXtoPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKmwpO3RoaXMuZ2V0UmdiQnVmZmVyKG8sMCxsLGgsMCxzLDApfWVsc2UgdGhpcy5nZXRSZ2JCdWZmZXIobywwLHIqbixlLDAscyxjKTtpZihoKWlmKGQpIWZ1bmN0aW9uIHJlc2l6ZVJnYkltYWdlKGUsdCxhLHIsaSxuLHMpe3M9MSE9PXM/MDpzO2NvbnN0IG89YS9pLGM9ci9uO2xldCBsLGg9MDtjb25zdCB1PW5ldyBVaW50MTZBcnJheShpKSxkPTMqYTtmb3IobGV0IGU9MDtlPGk7ZSsrKXVbZV09MypNYXRoLmZsb29yKGUqbyk7Zm9yKGxldCBhPTA7YTxuO2ErKyl7Y29uc3Qgcj1NYXRoLmZsb29yKGEqYykqZDtmb3IobGV0IGE9MDthPGk7YSsrKXtsPXIrdVthXTt0W2grK109ZVtsKytdO3RbaCsrXT1lW2wrK107dFtoKytdPWVbbCsrXTtoKz1zfX19KGgsZSx0LGEscixpLGMpO2Vsc2V7bGV0IHQ9MCxhPTA7Zm9yKGxldCBpPTAscz1yKm47aTxzO2krKyl7ZVt0KytdPWhbYSsrXTtlW3QrK109aFthKytdO2VbdCsrXT1oW2ErK107dCs9Y319fWdldCB1c2VzWmVyb1RvT25lUmFuZ2UoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywidXNlc1plcm9Ub09uZVJhbmdlIiwhMCl9c3RhdGljIF9jYWNoZShlLHQsYSxyKXtpZighYSl0aHJvdyBuZXcgRXJyb3IoJ0NvbG9yU3BhY2UuX2NhY2hlIC0gZXhwZWN0ZWQgImxvY2FsQ29sb3JTcGFjZUNhY2hlIiBhcmd1bWVudC4nKTtpZighcil0aHJvdyBuZXcgRXJyb3IoJ0NvbG9yU3BhY2UuX2NhY2hlIC0gZXhwZWN0ZWQgInBhcnNlZENvbG9yU3BhY2UiIGFyZ3VtZW50LicpO2xldCBuLHM7aWYoZSBpbnN0YW5jZW9mIGkuUmVmKXtzPWU7ZT10LmZldGNoKGUpfWUgaW5zdGFuY2VvZiBpLk5hbWUmJihuPWUubmFtZSk7KG58fHMpJiZhLnNldChuLHMscil9c3RhdGljIGdldENhY2hlZChlLHQsYSl7aWYoIWEpdGhyb3cgbmV3IEVycm9yKCdDb2xvclNwYWNlLmdldENhY2hlZCAtIGV4cGVjdGVkICJsb2NhbENvbG9yU3BhY2VDYWNoZSIgYXJndW1lbnQuJyk7aWYoZSBpbnN0YW5jZW9mIGkuUmVmKXtjb25zdCByPWEuZ2V0QnlSZWYoZSk7aWYocilyZXR1cm4gcjt0cnl7ZT10LmZldGNoKGUpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBzLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGV9fWlmKGUgaW5zdGFuY2VvZiBpLk5hbWUpe2NvbnN0IHQ9YS5nZXRCeU5hbWUoZS5uYW1lKTtpZih0KXJldHVybiB0fXJldHVybiBudWxsfXN0YXRpYyBhc3luYyBwYXJzZUFzeW5jKHtjczplLHhyZWY6dCxyZXNvdXJjZXM6YT1udWxsLHBkZkZ1bmN0aW9uRmFjdG9yeTpyLGxvY2FsQ29sb3JTcGFjZUNhY2hlOml9KXtjb25zdCBuPXRoaXMuX3BhcnNlKGUsdCxhLHIpO3RoaXMuX2NhY2hlKGUsdCxpLG4pO3JldHVybiBufXN0YXRpYyBwYXJzZSh7Y3M6ZSx4cmVmOnQscmVzb3VyY2VzOmE9bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6cixsb2NhbENvbG9yU3BhY2VDYWNoZTppfSl7Y29uc3Qgbj10aGlzLmdldENhY2hlZChlLHQsaSk7aWYobilyZXR1cm4gbjtjb25zdCBzPXRoaXMuX3BhcnNlKGUsdCxhLHIpO3RoaXMuX2NhY2hlKGUsdCxpLHMpO3JldHVybiBzfXN0YXRpYyBfcGFyc2UoZSx0LGE9bnVsbCxuKXtpZigoZT10LmZldGNoSWZSZWYoZSkpaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJHIjpjYXNlIkRldmljZUdyYXkiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheTtjYXNlIlJHQiI6Y2FzZSJEZXZpY2VSR0IiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMucmdiO2Nhc2UiQ01ZSyI6Y2FzZSJEZXZpY2VDTVlLIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmNteWs7Y2FzZSJQYXR0ZXJuIjpyZXR1cm4gbmV3IFBhdHRlcm5DUyhudWxsKTtkZWZhdWx0OmlmKGEgaW5zdGFuY2VvZiBpLkRpY3Qpe2NvbnN0IHI9YS5nZXQoIkNvbG9yU3BhY2UiKTtpZihyIGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBzPXIuZ2V0KGUubmFtZSk7aWYocyl7aWYocyBpbnN0YW5jZW9mIGkuTmFtZSlyZXR1cm4gdGhpcy5fcGFyc2Uocyx0LGEsbik7ZT1zO2JyZWFrfX19dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFVucmVjb2duaXplZCBDb2xvclNwYWNlOiAke2UubmFtZX1gKX1pZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCBpPXQuZmV0Y2hJZlJlZihlWzBdKS5uYW1lO2xldCBzLG8sdSxkLGYsZztzd2l0Y2goaSl7Y2FzZSJHIjpjYXNlIkRldmljZUdyYXkiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheTtjYXNlIlJHQiI6Y2FzZSJEZXZpY2VSR0IiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMucmdiO2Nhc2UiQ01ZSyI6Y2FzZSJEZXZpY2VDTVlLIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmNteWs7Y2FzZSJDYWxHcmF5IjpzPXQuZmV0Y2hJZlJlZihlWzFdKTtkPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtmPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtnPXMuZ2V0KCJHYW1tYSIpO3JldHVybiBuZXcgYyhkLGYsZyk7Y2FzZSJDYWxSR0IiOnM9dC5mZXRjaElmUmVmKGVbMV0pO2Q9cy5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2Y9cy5nZXRBcnJheSgiQmxhY2tQb2ludCIpO2c9cy5nZXRBcnJheSgiR2FtbWEiKTtjb25zdCBwPXMuZ2V0QXJyYXkoIk1hdHJpeCIpO3JldHVybiBuZXcgbChkLGYsZyxwKTtjYXNlIklDQ0Jhc2VkIjpjb25zdCBtPXQuZmV0Y2hJZlJlZihlWzFdKS5kaWN0O289bS5nZXQoIk4iKTtjb25zdCBiPW0uZ2V0KCJBbHRlcm5hdGUiKTtpZihiKXtjb25zdCBlPXRoaXMuX3BhcnNlKGIsdCxhLG4pO2lmKGUubnVtQ29tcHM9PT1vKXJldHVybiBlOygwLHIud2FybikoIklDQ0Jhc2VkIGNvbG9yIHNwYWNlOiBJZ25vcmluZyBpbmNvcnJlY3QgL0FsdGVybmF0ZSBlbnRyeS4iKX1pZigxPT09bylyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXk7aWYoMz09PW8pcmV0dXJuIHRoaXMuc2luZ2xldG9ucy5yZ2I7aWYoND09PW8pcmV0dXJuIHRoaXMuc2luZ2xldG9ucy5jbXlrO2JyZWFrO2Nhc2UiUGF0dGVybiI6dT1lWzFdfHxudWxsO3UmJih1PXRoaXMuX3BhcnNlKHUsdCxhLG4pKTtyZXR1cm4gbmV3IFBhdHRlcm5DUyh1KTtjYXNlIkkiOmNhc2UiSW5kZXhlZCI6dT10aGlzLl9wYXJzZShlWzFdLHQsYSxuKTtjb25zdCB5PXQuZmV0Y2hJZlJlZihlWzJdKSsxLHc9dC5mZXRjaElmUmVmKGVbM10pO3JldHVybiBuZXcgSW5kZXhlZENTKHUseSx3KTtjYXNlIlNlcGFyYXRpb24iOmNhc2UiRGV2aWNlTiI6Y29uc3QgUz10LmZldGNoSWZSZWYoZVsxXSk7bz1BcnJheS5pc0FycmF5KFMpP1MubGVuZ3RoOjE7dT10aGlzLl9wYXJzZShlWzJdLHQsYSxuKTtjb25zdCB4PW4uY3JlYXRlKGVbM10pO3JldHVybiBuZXcgQWx0ZXJuYXRlQ1Mobyx1LHgpO2Nhc2UiTGFiIjpzPXQuZmV0Y2hJZlJlZihlWzFdKTtkPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtmPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtjb25zdCBDPXMuZ2V0QXJyYXkoIlJhbmdlIik7cmV0dXJuIG5ldyBoKGQsZixDKTtkZWZhdWx0OnRocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbmltcGxlbWVudGVkIENvbG9yU3BhY2Ugb2JqZWN0OiAke2l9YCl9fXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbnJlY29nbml6ZWQgQ29sb3JTcGFjZSBvYmplY3Q6ICR7ZX1gKX1zdGF0aWMgaXNEZWZhdWx0RGVjb2RlKGUsdCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuITA7aWYoMip0IT09ZS5sZW5ndGgpeygwLHIud2FybikoIlRoZSBkZWNvZGUgbWFwIGlzIG5vdCB0aGUgY29ycmVjdCBsZW5ndGgiKTtyZXR1cm4hMH1mb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0Kz0yKWlmKDAhPT1lW3RdfHwxIT09ZVt0KzFdKXJldHVybiExO3JldHVybiEwfXN0YXRpYyBnZXQgc2luZ2xldG9ucygpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJzaW5nbGV0b25zIix7Z2V0IGdyYXkoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZ3JheSIsbmV3IERldmljZUdyYXlDUyl9LGdldCByZ2IoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywicmdiIixuZXcgRGV2aWNlUmdiQ1MpfSxnZXQgY215aygpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJjbXlrIixuZXcgbyl9fSl9fXQuQ29sb3JTcGFjZT1Db2xvclNwYWNlO2NsYXNzIEFsdGVybmF0ZUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoIkFsdGVybmF0ZSIsZSk7dGhpcy5iYXNlPXQ7dGhpcy50aW50Rm49YTt0aGlzLnRtcEJ1Zj1uZXcgRmxvYXQzMkFycmF5KHQubnVtQ29tcHMpfWdldFJnYkl0ZW0oZSx0LGEscil7Y29uc3QgaT10aGlzLnRtcEJ1Zjt0aGlzLnRpbnRGbihlLHQsaSwwKTt0aGlzLmJhc2UuZ2V0UmdiSXRlbShpLDAsYSxyKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixpLG4scyl7Y29uc3Qgbz10aGlzLnRpbnRGbixjPXRoaXMuYmFzZSxsPTEvKCgxPDxuKS0xKSxoPWMubnVtQ29tcHMsdT1jLnVzZXNaZXJvVG9PbmVSYW5nZSxkPShjLmlzUGFzc3Rocm91Z2goOCl8fCF1KSYmMD09PXM7bGV0IGY9ZD9pOjA7Y29uc3QgZz1kP3I6bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGgqYSkscD10aGlzLm51bUNvbXBzLG09bmV3IEZsb2F0MzJBcnJheShwKSxiPW5ldyBGbG9hdDMyQXJyYXkoaCk7bGV0IHksdztmb3IoeT0wO3k8YTt5Kyspe2Zvcih3PTA7dzxwO3crKyltW3ddPWVbdCsrXSpsO28obSwwLGIsMCk7aWYodSlmb3Iodz0wO3c8aDt3KyspZ1tmKytdPTI1NSpiW3ddO2Vsc2V7Yy5nZXRSZ2JJdGVtKGIsMCxnLGYpO2YrPWh9fWR8fGMuZ2V0UmdiQnVmZmVyKGcsMCxhLHIsaSw4LHMpfWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiB0aGlzLmJhc2UuZ2V0T3V0cHV0TGVuZ3RoKGUqdGhpcy5iYXNlLm51bUNvbXBzL3RoaXMubnVtQ29tcHMsdCl9fWNsYXNzIFBhdHRlcm5DUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSl7c3VwZXIoIlBhdHRlcm4iLG51bGwpO3RoaXMuYmFzZT1lfWlzRGVmYXVsdERlY29kZShlLHQpeygwLHIudW5yZWFjaGFibGUpKCJTaG91bGQgbm90IGNhbGwgUGF0dGVybkNTLmlzRGVmYXVsdERlY29kZSIpfX1jbGFzcyBJbmRleGVkQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiSW5kZXhlZCIsMSk7dGhpcy5iYXNlPWU7dGhpcy5oaWdoVmFsPXQ7Y29uc3QgaT1lLm51bUNvbXBzKnQ7dGhpcy5sb29rdXA9bmV3IFVpbnQ4QXJyYXkoaSk7aWYoYSBpbnN0YW5jZW9mIG4uQmFzZVN0cmVhbSl7Y29uc3QgZT1hLmdldEJ5dGVzKGkpO3RoaXMubG9va3VwLnNldChlKX1lbHNle2lmKCJzdHJpbmciIT10eXBlb2YgYSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW5kZXhlZENTIC0gdW5yZWNvZ25pemVkIGxvb2t1cCB0YWJsZTogJHthfWApO2ZvcihsZXQgZT0wO2U8aTsrK2UpdGhpcy5sb29rdXBbZV09MjU1JmEuY2hhckNvZGVBdChlKX19Z2V0UmdiSXRlbShlLHQsYSxyKXtjb25zdCBpPXRoaXMuYmFzZS5udW1Db21wcyxuPWVbdF0qaTt0aGlzLmJhc2UuZ2V0UmdiQnVmZmVyKHRoaXMubG9va3VwLG4sMSxhLHIsOCwwKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixpLG4scyl7Y29uc3Qgbz10aGlzLmJhc2UsYz1vLm51bUNvbXBzLGw9by5nZXRPdXRwdXRMZW5ndGgoYyxzKSxoPXRoaXMubG9va3VwO2ZvcihsZXQgbj0wO248YTsrK24pe2NvbnN0IGE9ZVt0KytdKmM7by5nZXRSZ2JCdWZmZXIoaCxhLDEscixpLDgscyk7aSs9bH19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuYmFzZS5nZXRPdXRwdXRMZW5ndGgoZSp0aGlzLmJhc2UubnVtQ29tcHMsdCl9aXNEZWZhdWx0RGVjb2RlKGUsdCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuITA7aWYoMiE9PWUubGVuZ3RoKXsoMCxyLndhcm4pKCJEZWNvZGUgbWFwIGxlbmd0aCBpcyBub3QgY29ycmVjdCIpO3JldHVybiEwfWlmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpfHx0PDEpeygwLHIud2FybikoIkJpdHMgcGVyIGNvbXBvbmVudCBpcyBub3QgY29ycmVjdCIpO3JldHVybiEwfXJldHVybiAwPT09ZVswXSYmZVsxXT09PSgxPDx0KS0xfX1jbGFzcyBEZXZpY2VHcmF5Q1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZUdyYXkiLDEpfWdldFJnYkl0ZW0oZSx0LGEscil7Y29uc3QgaT0yNTUqZVt0XTthW3JdPWFbcisxXT1hW3IrMl09aX1nZXRSZ2JCdWZmZXIoZSx0LGEscixpLG4scyl7Y29uc3Qgbz0yNTUvKCgxPDxuKS0xKTtsZXQgYz10LGw9aTtmb3IobGV0IHQ9MDt0PGE7Kyt0KXtjb25zdCB0PW8qZVtjKytdO3JbbCsrXT10O3JbbCsrXT10O3JbbCsrXT10O2wrPXN9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpfX1jbGFzcyBEZXZpY2VSZ2JDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoKXtzdXBlcigiRGV2aWNlUkdCIiwzKX1nZXRSZ2JJdGVtKGUsdCxhLHIpe2Fbcl09MjU1KmVbdF07YVtyKzFdPTI1NSplW3QrMV07YVtyKzJdPTI1NSplW3QrMl19Z2V0UmdiQnVmZmVyKGUsdCxhLHIsaSxuLHMpe2lmKDg9PT1uJiYwPT09cyl7ci5zZXQoZS5zdWJhcnJheSh0LHQrMyphKSxpKTtyZXR1cm59Y29uc3Qgbz0yNTUvKCgxPDxuKS0xKTtsZXQgYz10LGw9aTtmb3IobGV0IHQ9MDt0PGE7Kyt0KXtyW2wrK109byplW2MrK107cltsKytdPW8qZVtjKytdO3JbbCsrXT1vKmVbYysrXTtsKz1zfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KS8zfDB9aXNQYXNzdGhyb3VnaChlKXtyZXR1cm4gOD09PWV9fWNvbnN0IG89ZnVuY3Rpb24gRGV2aWNlQ215a0NTQ2xvc3VyZSgpe2Z1bmN0aW9uIGNvbnZlcnRUb1JnYihlLHQsYSxyLGkpe2NvbnN0IG49ZVt0XSphLHM9ZVt0KzFdKmEsbz1lW3QrMl0qYSxjPWVbdCszXSphO3JbaV09MjU1K24qKC00LjM4NzMzMjM4NDYwOTk4OCpuKzU0LjQ4NjE1MTk0MTg5MTc2KnMrMTguODIyOTA1MDIxNjUzMDIqbysyMTIuMjU2NjI0NTE2Mzk1ODUqYy0yODUuMjMzMTAyNjEzNzAwNCkrcyooMS43MTQ5NzYzNDc3MzYyMTM0KnMtNS42MDk2NzM2OTA0MDQ3MzE1Km8rLTE3Ljg3Mzg3MDg2MTQxNTQ0NCpjLTUuNDk3MDA2NDI3MTk2MzY2KStvKigtMi41MjE3MzQwMTMxNjgzMDMzKm8tMjEuMjQ4OTIzMzM3MzUzMDczKmMrMTcuNTExOTI3MDg0MTgxMykrYyooLTIxLjg2MTIyMTQ3NDYzNjA1KmMtMTg5LjQ4MTgwODM1OTIyNzQ3KTtyW2krMV09MjU1K24qKDguODQxMDQxNDIyMDM2MTQ5Km4rNjAuMTE4MDI3MDQ1NTk3MzY2KnMrNi44NzE0MjU1OTIwNDkwMDcqbyszMS4xNTkxMDAxMzAwNTU5MjIqYy03OS4yOTcwODQ0ODE2NTQ4KStzKigtMTUuMzEwMzYxMzA2OTY3ODE3KnMrMTcuNTc1MjUxMjYxMTA5NDgyKm8rMTMxLjM1MjUwOTEyNDkzOTc2KmMtMTkwLjk0NTMzMDI1ODg5NTEpK28qKDQuNDQ0MzM5MTAyODUyNzM5Km8rOS44NjMyODYxNDkzNDA1KmMtMjQuODY3NDE1ODI1NTU4NzgpK2MqKC0yMC43MzczMjU0NzExODEwMzQqYy0xODcuODA0NTM3MDk3MTk1NzgpO3JbaSsyXT0yNTUrbiooLjg4NDI1MjI0MzAwMDMyOTYqbis4LjA3ODY3NzUwMzExMjkyOCpzKzMwLjg5OTc4MzA5NzAzNzI5Km8tLjIzODgzMjM4Njg5MTc4OTM0KmMtMTQuMTgzNTc2Nzk5NjczMjg2KStzKigxMC40OTU5MzI3MzQzMjA3MipzKzYzLjAyMzc4NDk0NzU0MDUyKm8rNTAuNjA2OTU3NjU2MzYwNzM0KmMtMTEyLjIzODg0MjUzNzE5MjQ4KStvKiguMDMyOTYwNDExMTQ4NzMyMTcqbysxMTUuNjAzODQ0NDk2NDY2NDEqYy0xOTMuNTgyMDkzNTY4NjE1MDUpK2MqKC0yMi4zMzgxNjgwNzMwOTg4NipjLTE4MC4xMjYxMzk3NDcwODM2Nyl9cmV0dXJuIGNsYXNzIERldmljZUNteWtDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoKXtzdXBlcigiRGV2aWNlQ01ZSyIsNCl9Z2V0UmdiSXRlbShlLHQsYSxyKXtjb252ZXJ0VG9SZ2IoZSx0LDEsYSxyKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixpLG4scyl7Y29uc3Qgbz0xLygoMTw8biktMSk7Zm9yKGxldCBuPTA7bjxhO24rKyl7Y29udmVydFRvUmdiKGUsdCxvLHIsaSk7dCs9NDtpKz0zK3N9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlLzQqKDMrdCl8MH19fSgpLGM9ZnVuY3Rpb24gQ2FsR3JheUNTQ2xvc3VyZSgpe2Z1bmN0aW9uIGNvbnZlcnRUb1JnYihlLHQsYSxyLGksbil7Y29uc3Qgcz0odFthXSpuKSoqZS5HLG89ZS5ZVypzLGM9TWF0aC5tYXgoMjk1LjgqbyoqLjMzMzMzMzMzMzMzMzMzMzMtNDAuOCwwKTtyW2ldPWM7cltpKzFdPWM7cltpKzJdPWN9cmV0dXJuIGNsYXNzIENhbEdyYXlDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKCJDYWxHcmF5IiwxKTtpZighZSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIENhbEdyYXkiKTt0fHw9WzAsMCwwXTthfHw9MTt0aGlzLlhXPWVbMF07dGhpcy5ZVz1lWzFdO3RoaXMuWlc9ZVsyXTt0aGlzLlhCPXRbMF07dGhpcy5ZQj10WzFdO3RoaXMuWkI9dFsyXTt0aGlzLkc9YTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAke3RoaXMubmFtZX0sIG5vIGZhbGxiYWNrIGF2YWlsYWJsZWApO2lmKHRoaXMuWEI8MHx8dGhpcy5ZQjwwfHx0aGlzLlpCPDApeygwLHIuaW5mbykoYEludmFsaWQgQmxhY2tQb2ludCBmb3IgJHt0aGlzLm5hbWV9LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLlhCPXRoaXMuWUI9dGhpcy5aQj0wfTA9PT10aGlzLlhCJiYwPT09dGhpcy5ZQiYmMD09PXRoaXMuWkJ8fCgwLHIud2FybikoYCR7dGhpcy5uYW1lfSwgQmxhY2tQb2ludDogWEI6ICR7dGhpcy5YQn0sIFlCOiAke3RoaXMuWUJ9LCBaQjogJHt0aGlzLlpCfSwgb25seSBkZWZhdWx0IHZhbHVlcyBhcmUgc3VwcG9ydGVkLmApO2lmKHRoaXMuRzwxKXsoMCxyLmluZm8pKGBJbnZhbGlkIEdhbW1hOiAke3RoaXMuR30gZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5HPTF9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKHRoaXMsZSx0LGEsciwxKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixpLG4scyl7Y29uc3Qgbz0xLygoMTw8biktMSk7Zm9yKGxldCBuPTA7bjxhOysrbil7Y29udmVydFRvUmdiKHRoaXMsZSx0LHIsaSxvKTt0Kz0xO2krPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCl9fX0oKSxsPWZ1bmN0aW9uIENhbFJHQkNTQ2xvc3VyZSgpe2NvbnN0IGU9bmV3IEZsb2F0MzJBcnJheShbLjg5NTEsLjI2NjQsLS4xNjE0LC0uNzUwMiwxLjcxMzUsLjAzNjcsLjAzODksLS4wNjg1LDEuMDI5Nl0pLHQ9bmV3IEZsb2F0MzJBcnJheShbLjk4Njk5MjksLS4xNDcwNTQzLC4xNTk5NjI3LC40MzIzMDUzLC41MTgzNjAzLC4wNDkyOTEyLC0uMDA4NTI4NywuMDQwMDQyOCwuOTY4NDg2N10pLGE9bmV3IEZsb2F0MzJBcnJheShbMy4yNDA0NTQyLC0xLjUzNzEzODUsLS40OTg1MzE0LC0uOTY5MjY2LDEuODc2MDEwOCwuMDQxNTU2LC4wNTU2NDM0LC0uMjA0MDI1OSwxLjA1NzIyNTJdKSxpPW5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSksbj1uZXcgRmxvYXQzMkFycmF5KDMpLHM9bmV3IEZsb2F0MzJBcnJheSgzKSxvPW5ldyBGbG9hdDMyQXJyYXkoMyksYz0oMjQvMTE2KSoqMy84O2Z1bmN0aW9uIG1hdHJpeFByb2R1Y3QoZSx0LGEpe2FbMF09ZVswXSp0WzBdK2VbMV0qdFsxXStlWzJdKnRbMl07YVsxXT1lWzNdKnRbMF0rZVs0XSp0WzFdK2VbNV0qdFsyXTthWzJdPWVbNl0qdFswXStlWzddKnRbMV0rZVs4XSp0WzJdfWZ1bmN0aW9uIHNSR0JUcmFuc2ZlckZ1bmN0aW9uKGUpe3JldHVybiBlPD0uMDAzMTMwOD9hZGp1c3RUb1JhbmdlKDAsMSwxMi45MiplKTplPj0uOTk1NTQ1MjU/MTphZGp1c3RUb1JhbmdlKDAsMSwxLjA1NSplKiooMS8yLjQpLS4wNTUpfWZ1bmN0aW9uIGFkanVzdFRvUmFuZ2UoZSx0LGEpe3JldHVybiBNYXRoLm1heChlLE1hdGgubWluKHQsYSkpfWZ1bmN0aW9uIGRlY29kZUwoZSl7cmV0dXJuIGU8MD8tZGVjb2RlTCgtZSk6ZT44PygoZSsxNikvMTE2KSoqMzplKmN9ZnVuY3Rpb24gY29udmVydFRvUmdiKHIsYyxsLGgsdSxkKXtjb25zdCBmPWFkanVzdFRvUmFuZ2UoMCwxLGNbbF0qZCksZz1hZGp1c3RUb1JhbmdlKDAsMSxjW2wrMV0qZCkscD1hZGp1c3RUb1JhbmdlKDAsMSxjW2wrMl0qZCksbT0xPT09Zj8xOmYqKnIuR1IsYj0xPT09Zz8xOmcqKnIuR0cseT0xPT09cD8xOnAqKnIuR0Isdz1yLk1YQSptK3IuTVhCKmIrci5NWEMqeSxTPXIuTVlBKm0rci5NWUIqYityLk1ZQyp5LHg9ci5NWkEqbStyLk1aQipiK3IuTVpDKnksQz1zO0NbMF09dztDWzFdPVM7Q1syXT14O2NvbnN0IGs9bzshZnVuY3Rpb24gbm9ybWFsaXplV2hpdGVQb2ludFRvRmxhdChhLHIsaSl7aWYoMT09PWFbMF0mJjE9PT1hWzJdKXtpWzBdPXJbMF07aVsxXT1yWzFdO2lbMl09clsyXTtyZXR1cm59Y29uc3Qgcz1pO21hdHJpeFByb2R1Y3QoZSxyLHMpO2NvbnN0IG89bjshZnVuY3Rpb24gY29udmVydFRvRmxhdChlLHQsYSl7YVswXT0xKnRbMF0vZVswXTthWzFdPTEqdFsxXS9lWzFdO2FbMl09MSp0WzJdL2VbMl19KGEscyxvKTttYXRyaXhQcm9kdWN0KHQsbyxpKX0oci53aGl0ZVBvaW50LEMsayk7Y29uc3Qgdj1zOyFmdW5jdGlvbiBjb21wZW5zYXRlQmxhY2tQb2ludChlLHQsYSl7aWYoMD09PWVbMF0mJjA9PT1lWzFdJiYwPT09ZVsyXSl7YVswXT10WzBdO2FbMV09dFsxXTthWzJdPXRbMl07cmV0dXJufWNvbnN0IHI9ZGVjb2RlTCgwKSxpPSgxLXIpLygxLWRlY29kZUwoZVswXSkpLG49MS1pLHM9KDEtcikvKDEtZGVjb2RlTChlWzFdKSksbz0xLXMsYz0oMS1yKS8oMS1kZWNvZGVMKGVbMl0pKSxsPTEtYzthWzBdPXRbMF0qaStuO2FbMV09dFsxXSpzK287YVsyXT10WzJdKmMrbH0oci5ibGFja1BvaW50LGssdik7Y29uc3QgRj1vOyFmdW5jdGlvbiBub3JtYWxpemVXaGl0ZVBvaW50VG9ENjUoYSxyLGkpe2NvbnN0IHM9aTttYXRyaXhQcm9kdWN0KGUscixzKTtjb25zdCBvPW47IWZ1bmN0aW9uIGNvbnZlcnRUb0Q2NShlLHQsYSl7YVswXT0uOTUwNDcqdFswXS9lWzBdO2FbMV09MSp0WzFdL2VbMV07YVsyXT0xLjA4ODgzKnRbMl0vZVsyXX0oYSxzLG8pO21hdHJpeFByb2R1Y3QodCxvLGkpfShpLHYsRik7Y29uc3QgTz1zO21hdHJpeFByb2R1Y3QoYSxGLE8pO2hbdV09MjU1KnNSR0JUcmFuc2ZlckZ1bmN0aW9uKE9bMF0pO2hbdSsxXT0yNTUqc1JHQlRyYW5zZmVyRnVuY3Rpb24oT1sxXSk7aFt1KzJdPTI1NSpzUkdCVHJhbnNmZXJGdW5jdGlvbihPWzJdKX1yZXR1cm4gY2xhc3MgQ2FsUkdCQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhLGkpe3N1cGVyKCJDYWxSR0IiLDMpO2lmKCFlKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgQ2FsUkdCIik7dHx8PW5ldyBGbG9hdDMyQXJyYXkoMyk7YXx8PW5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSk7aXx8PW5ldyBGbG9hdDMyQXJyYXkoWzEsMCwwLDAsMSwwLDAsMCwxXSk7Y29uc3Qgbj1lWzBdLHM9ZVsxXSxvPWVbMl07dGhpcy53aGl0ZVBvaW50PWU7Y29uc3QgYz10WzBdLGw9dFsxXSxoPXRbMl07dGhpcy5ibGFja1BvaW50PXQ7dGhpcy5HUj1hWzBdO3RoaXMuR0c9YVsxXTt0aGlzLkdCPWFbMl07dGhpcy5NWEE9aVswXTt0aGlzLk1ZQT1pWzFdO3RoaXMuTVpBPWlbMl07dGhpcy5NWEI9aVszXTt0aGlzLk1ZQj1pWzRdO3RoaXMuTVpCPWlbNV07dGhpcy5NWEM9aVs2XTt0aGlzLk1ZQz1pWzddO3RoaXMuTVpDPWlbOF07aWYobjwwfHxvPDB8fDEhPT1zKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cyBmb3IgJHt0aGlzLm5hbWV9LCBubyBmYWxsYmFjayBhdmFpbGFibGVgKTtpZihjPDB8fGw8MHx8aDwwKXsoMCxyLmluZm8pKGBJbnZhbGlkIEJsYWNrUG9pbnQgZm9yICR7dGhpcy5uYW1lfSBbJHtjfSwgJHtsfSwgJHtofV0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuYmxhY2tQb2ludD1uZXcgRmxvYXQzMkFycmF5KDMpfWlmKHRoaXMuR1I8MHx8dGhpcy5HRzwwfHx0aGlzLkdCPDApeygwLHIuaW5mbykoYEludmFsaWQgR2FtbWEgWyR7dGhpcy5HUn0sICR7dGhpcy5HR30sICR7dGhpcy5HQn1dIGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuR1I9dGhpcy5HRz10aGlzLkdCPTF9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKHRoaXMsZSx0LGEsciwxKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixpLG4scyl7Y29uc3Qgbz0xLygoMTw8biktMSk7Zm9yKGxldCBuPTA7bjxhOysrbil7Y29udmVydFRvUmdiKHRoaXMsZSx0LHIsaSxvKTt0Kz0zO2krPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfX19KCksaD1mdW5jdGlvbiBMYWJDU0Nsb3N1cmUoKXtmdW5jdGlvbiBmbl9nKGUpe2xldCB0O3Q9ZT49Ni8yOT9lKiozOjEwOC84NDEqKGUtNC8yOSk7cmV0dXJuIHR9ZnVuY3Rpb24gZGVjb2RlKGUsdCxhLHIpe3JldHVybiBhK2UqKHItYSkvdH1mdW5jdGlvbiBjb252ZXJ0VG9SZ2IoZSx0LGEscixpLG4pe2xldCBzPXRbYV0sbz10W2ErMV0sYz10W2ErMl07aWYoITEhPT1yKXtzPWRlY29kZShzLHIsMCwxMDApO289ZGVjb2RlKG8scixlLmFtaW4sZS5hbWF4KTtjPWRlY29kZShjLHIsZS5ibWluLGUuYm1heCl9bz5lLmFtYXg/bz1lLmFtYXg6bzxlLmFtaW4mJihvPWUuYW1pbik7Yz5lLmJtYXg/Yz1lLmJtYXg6YzxlLmJtaW4mJihjPWUuYm1pbik7Y29uc3QgbD0ocysxNikvMTE2LGg9bCtvLzUwMCx1PWwtYy8yMDAsZD1lLlhXKmZuX2coaCksZj1lLllXKmZuX2cobCksZz1lLlpXKmZuX2codSk7bGV0IHAsbSxiO2lmKGUuWlc8MSl7cD0zLjEzMzkqZCstMS42MTcqZistLjQ5MDYqZzttPS0uOTc4NSpkKzEuOTE2KmYrLjAzMzMqZztiPS4wNzIqZCstLjIyOSpmKzEuNDA1NypnfWVsc2V7cD0zLjI0MDYqZCstMS41MzcyKmYrLS40OTg2Kmc7bT0tLjk2ODkqZCsxLjg3NTgqZisuMDQxNSpnO2I9LjA1NTcqZCstLjIwNCpmKzEuMDU3Kmd9aVtuXT0yNTUqTWF0aC5zcXJ0KHApO2lbbisxXT0yNTUqTWF0aC5zcXJ0KG0pO2lbbisyXT0yNTUqTWF0aC5zcXJ0KGIpfXJldHVybiBjbGFzcyBMYWJDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKCJMYWIiLDMpO2lmKCFlKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgTGFiIik7dHx8PVswLDAsMF07YXx8PVstMTAwLDEwMCwtMTAwLDEwMF07dGhpcy5YVz1lWzBdO3RoaXMuWVc9ZVsxXTt0aGlzLlpXPWVbMl07dGhpcy5hbWluPWFbMF07dGhpcy5hbWF4PWFbMV07dGhpcy5ibWluPWFbMl07dGhpcy5ibWF4PWFbM107dGhpcy5YQj10WzBdO3RoaXMuWUI9dFsxXTt0aGlzLlpCPXRbMl07aWYodGhpcy5YVzwwfHx0aGlzLlpXPDB8fDEhPT10aGlzLllXKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cywgbm8gZmFsbGJhY2sgYXZhaWxhYmxlIik7aWYodGhpcy5YQjwwfHx0aGlzLllCPDB8fHRoaXMuWkI8MCl7KDAsci5pbmZvKSgiSW52YWxpZCBCbGFja1BvaW50LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdCIpO3RoaXMuWEI9dGhpcy5ZQj10aGlzLlpCPTB9aWYodGhpcy5hbWluPnRoaXMuYW1heHx8dGhpcy5ibWluPnRoaXMuYm1heCl7KDAsci5pbmZvKSgiSW52YWxpZCBSYW5nZSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHRzIik7dGhpcy5hbWluPS0xMDA7dGhpcy5hbWF4PTEwMDt0aGlzLmJtaW49LTEwMDt0aGlzLmJtYXg9MTAwfX1nZXRSZ2JJdGVtKGUsdCxhLHIpe2NvbnZlcnRUb1JnYih0aGlzLGUsdCwhMSxhLHIpfWdldFJnYkJ1ZmZlcihlLHQsYSxyLGksbixzKXtjb25zdCBvPSgxPDxuKS0xO2ZvcihsZXQgbj0wO248YTtuKyspe2NvbnZlcnRUb1JnYih0aGlzLGUsdCxvLHIsaSk7dCs9MztpKz0zK3N9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpLzN8MH1pc0RlZmF1bHREZWNvZGUoZSx0KXtyZXR1cm4hMH1nZXQgdXNlc1plcm9Ub09uZVJhbmdlKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInVzZXNaZXJvVG9PbmVSYW5nZSIsITEpfX19KCl9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5QYXJ0aWFsRXZhbHVhdG9yPXQuRXZhbHVhdG9yUHJlcHJvY2Vzc29yPXZvaWQgMDt2YXIgcj1hKDIpLGk9YSgxNCksbj1hKDQpLHM9YSgzNCksbz1hKDM3KSxjPWEoNDEpLGw9YSg1MCksaD1hKDUxKSx1PWEoNDIpLGQ9YSg1NyksZj1hKDE2KSxnPWEoNTkpLHA9YSg4KSxtPWEoNSksYj1hKDYwKSx5PWEoMTIpLHc9YSgxOCksUz1hKDM4KSx4PWEoNjEpLEM9YSgzOSksaz1hKDMpLHY9YSg0NSksRj1hKDQwKSxPPWEoNjIpLFQ9YSg2MyksTT1hKDY0KSxFPWEoNjUpO2NvbnN0IEQ9T2JqZWN0LmZyZWV6ZSh7bWF4SW1hZ2VTaXplOi0xLGRpc2FibGVGb250RmFjZTohMSxpZ25vcmVFcnJvcnM6ITEsaXNFdmFsU3VwcG9ydGVkOiEwLGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOiExLGNhbnZhc01heEFyZWFJbkJ5dGVzOi0xLGZvbnRFeHRyYVByb3BlcnRpZXM6ITEsdXNlU3lzdGVtRm9udHM6ITAsY01hcFVybDpudWxsLHN0YW5kYXJkRm9udERhdGFVcmw6bnVsbH0pLE49MSxSPTIsTD1Qcm9taXNlLnJlc29sdmUoKTtmdW5jdGlvbiBub3JtYWxpemVCbGVuZE1vZGUoZSx0PSExKXtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPW5vcm1hbGl6ZUJsZW5kTW9kZSh0LCEwKTtpZihlKXJldHVybiBlfSgwLHIud2FybikoYFVuc3VwcG9ydGVkIGJsZW5kIG1vZGUgQXJyYXk6ICR7ZX1gKTtyZXR1cm4ic291cmNlLW92ZXIifWlmKCEoZSBpbnN0YW5jZW9mIG4uTmFtZSkpcmV0dXJuIHQ/bnVsbDoic291cmNlLW92ZXIiO3N3aXRjaChlLm5hbWUpe2Nhc2UiTm9ybWFsIjpjYXNlIkNvbXBhdGlibGUiOnJldHVybiJzb3VyY2Utb3ZlciI7Y2FzZSJNdWx0aXBseSI6cmV0dXJuIm11bHRpcGx5IjtjYXNlIlNjcmVlbiI6cmV0dXJuInNjcmVlbiI7Y2FzZSJPdmVybGF5IjpyZXR1cm4ib3ZlcmxheSI7Y2FzZSJEYXJrZW4iOnJldHVybiJkYXJrZW4iO2Nhc2UiTGlnaHRlbiI6cmV0dXJuImxpZ2h0ZW4iO2Nhc2UiQ29sb3JEb2RnZSI6cmV0dXJuImNvbG9yLWRvZGdlIjtjYXNlIkNvbG9yQnVybiI6cmV0dXJuImNvbG9yLWJ1cm4iO2Nhc2UiSGFyZExpZ2h0IjpyZXR1cm4iaGFyZC1saWdodCI7Y2FzZSJTb2Z0TGlnaHQiOnJldHVybiJzb2Z0LWxpZ2h0IjtjYXNlIkRpZmZlcmVuY2UiOnJldHVybiJkaWZmZXJlbmNlIjtjYXNlIkV4Y2x1c2lvbiI6cmV0dXJuImV4Y2x1c2lvbiI7Y2FzZSJIdWUiOnJldHVybiJodWUiO2Nhc2UiU2F0dXJhdGlvbiI6cmV0dXJuInNhdHVyYXRpb24iO2Nhc2UiQ29sb3IiOnJldHVybiJjb2xvciI7Y2FzZSJMdW1pbm9zaXR5IjpyZXR1cm4ibHVtaW5vc2l0eSJ9aWYodClyZXR1cm4gbnVsbDsoMCxyLndhcm4pKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlOiAke2UubmFtZX1gKTtyZXR1cm4ic291cmNlLW92ZXIifWZ1bmN0aW9uIGluY3JlbWVudENhY2hlZEltYWdlTWFza0NvdW50KGUpe2UuZm49PT1yLk9QUy5wYWludEltYWdlTWFza1hPYmplY3QmJmUuYXJnc1swXT8uY291bnQ+MCYmZS5hcmdzWzBdLmNvdW50Kyt9Y2xhc3MgVGltZVNsb3RNYW5hZ2Vye3N0YXRpYyBUSU1FX1NMT1RfRFVSQVRJT05fTVM9MjA7c3RhdGljIENIRUNLX1RJTUVfRVZFUlk9MTAwO2NvbnN0cnVjdG9yKCl7dGhpcy5yZXNldCgpfWNoZWNrKCl7aWYoKyt0aGlzLmNoZWNrZWQ8VGltZVNsb3RNYW5hZ2VyLkNIRUNLX1RJTUVfRVZFUlkpcmV0dXJuITE7dGhpcy5jaGVja2VkPTA7cmV0dXJuIHRoaXMuZW5kVGltZTw9RGF0ZS5ub3coKX1yZXNldCgpe3RoaXMuZW5kVGltZT1EYXRlLm5vdygpK1RpbWVTbG90TWFuYWdlci5USU1FX1NMT1RfRFVSQVRJT05fTVM7dGhpcy5jaGVja2VkPTB9fWNsYXNzIFBhcnRpYWxFdmFsdWF0b3J7Y29uc3RydWN0b3Ioe3hyZWY6ZSxoYW5kbGVyOnQscGFnZUluZGV4OmEsaWRGYWN0b3J5OnIsZm9udENhY2hlOmksYnVpbHRJbkNNYXBDYWNoZTpuLHN0YW5kYXJkRm9udERhdGFDYWNoZTpzLGdsb2JhbEltYWdlQ2FjaGU6byxzeXN0ZW1Gb250Q2FjaGU6YyxvcHRpb25zOmw9bnVsbH0pe3RoaXMueHJlZj1lO3RoaXMuaGFuZGxlcj10O3RoaXMucGFnZUluZGV4PWE7dGhpcy5pZEZhY3Rvcnk9cjt0aGlzLmZvbnRDYWNoZT1pO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1uO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPXM7dGhpcy5nbG9iYWxJbWFnZUNhY2hlPW87dGhpcy5zeXN0ZW1Gb250Q2FjaGU9Yzt0aGlzLm9wdGlvbnM9bHx8RDt0aGlzLnBhcnNpbmdUeXBlM0ZvbnQ9ITE7dGhpcy5fcmVnaW9uYWxJbWFnZUNhY2hlPW5ldyBnLlJlZ2lvbmFsSW1hZ2VDYWNoZTt0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQ9dGhpcy5mZXRjaEJ1aWx0SW5DTWFwLmJpbmQodGhpcyk7Ty5JbWFnZVJlc2l6ZXIuc2V0TWF4QXJlYSh0aGlzLm9wdGlvbnMuY2FudmFzTWF4QXJlYUluQnl0ZXMpfWdldCBfcGRmRnVuY3Rpb25GYWN0b3J5KCl7Y29uc3QgZT1uZXcgZC5QREZGdW5jdGlvbkZhY3Rvcnkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLm9wdGlvbnMuaXNFdmFsU3VwcG9ydGVkfSk7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIl9wZGZGdW5jdGlvbkZhY3RvcnkiLGUpfWNsb25lKGU9bnVsbCl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKHRoaXMpO3Qub3B0aW9ucz1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5vcHRpb25zLGUpO3JldHVybiB0fWhhc0JsZW5kTW9kZXMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiBuLkRpY3QpKXJldHVybiExO2lmKGUub2JqSWQmJnQuaGFzKGUub2JqSWQpKXJldHVybiExO2NvbnN0IGE9bmV3IG4uUmVmU2V0KHQpO2Uub2JqSWQmJmEucHV0KGUub2JqSWQpO2NvbnN0IGk9W2VdLHM9dGhpcy54cmVmO2Zvcig7aS5sZW5ndGg7KXtjb25zdCBlPWkuc2hpZnQoKSx0PWUuZ2V0KCJFeHRHU3RhdGUiKTtpZih0IGluc3RhbmNlb2Ygbi5EaWN0KWZvcihsZXQgZSBvZiB0LmdldFJhd1ZhbHVlcygpKXtpZihlIGluc3RhbmNlb2Ygbi5SZWYpe2lmKGEuaGFzKGUpKWNvbnRpbnVlO3RyeXtlPXMuZmV0Y2goZSl9Y2F0Y2godCl7YS5wdXQoZSk7KDAsci5pbmZvKShgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiBuLkRpY3QpKWNvbnRpbnVlO2Uub2JqSWQmJmEucHV0KGUub2JqSWQpO2NvbnN0IHQ9ZS5nZXQoIkJNIik7aWYodCBpbnN0YW5jZW9mIG4uTmFtZSl7aWYoIk5vcm1hbCIhPT10Lm5hbWUpcmV0dXJuITB9ZWxzZSBpZih2b2lkIDAhPT10JiZBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBlIG9mIHQpaWYoZSBpbnN0YW5jZW9mIG4uTmFtZSYmIk5vcm1hbCIhPT1lLm5hbWUpcmV0dXJuITB9Y29uc3Qgbz1lLmdldCgiWE9iamVjdCIpO2lmKG8gaW5zdGFuY2VvZiBuLkRpY3QpZm9yKGxldCBlIG9mIG8uZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBuLlJlZil7aWYoYS5oYXMoZSkpY29udGludWU7dHJ5e2U9cy5mZXRjaChlKX1jYXRjaCh0KXthLnB1dChlKTsoMCxyLmluZm8pKGBoYXNCbGVuZE1vZGVzIC0gaWdub3JpbmcgWE9iamVjdDogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiBtLkJhc2VTdHJlYW0pKWNvbnRpbnVlO2UuZGljdC5vYmpJZCYmYS5wdXQoZS5kaWN0Lm9iaklkKTtjb25zdCB0PWUuZGljdC5nZXQoIlJlc291cmNlcyIpO2lmKHQgaW5zdGFuY2VvZiBuLkRpY3QmJighdC5vYmpJZHx8IWEuaGFzKHQub2JqSWQpKSl7aS5wdXNoKHQpO3Qub2JqSWQmJmEucHV0KHQub2JqSWQpfX19Zm9yKGNvbnN0IGUgb2YgYSl0LnB1dChlKTtyZXR1cm4hMX1hc3luYyBmZXRjaEJ1aWx0SW5DTWFwKGUpe2NvbnN0IHQ9dGhpcy5idWlsdEluQ01hcENhY2hlLmdldChlKTtpZih0KXJldHVybiB0O2xldCBhO2lmKG51bGwhPT10aGlzLm9wdGlvbnMuY01hcFVybCl7Y29uc3QgdD1gJHt0aGlzLm9wdGlvbnMuY01hcFVybH0ke2V9LmJjbWFwYCxpPWF3YWl0IGZldGNoKHQpO2lmKCFpLm9rKXRocm93IG5ldyBFcnJvcihgZmV0Y2hCdWlsdEluQ01hcDogZmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7dH0iIHdpdGggIiR7aS5zdGF0dXNUZXh0fSIuYCk7YT17Y01hcERhdGE6bmV3IFVpbnQ4QXJyYXkoYXdhaXQgaS5hcnJheUJ1ZmZlcigpKSxjb21wcmVzc2lvblR5cGU6ci5DTWFwQ29tcHJlc3Npb25UeXBlLkJJTkFSWX19ZWxzZSBhPWF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoQnVpbHRJbkNNYXAiLHtuYW1lOmV9KTthLmNvbXByZXNzaW9uVHlwZSE9PXIuQ01hcENvbXByZXNzaW9uVHlwZS5OT05FJiZ0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuc2V0KGUsYSk7cmV0dXJuIGF9YXN5bmMgZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUpe2NvbnN0IHQ9dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuZ2V0KGUpO2lmKHQpcmV0dXJuIG5ldyBwLlN0cmVhbSh0KTtpZih0aGlzLm9wdGlvbnMudXNlU3lzdGVtRm9udHMmJiJTeW1ib2wiIT09ZSYmIlphcGZEaW5nYmF0cyIhPT1lKXJldHVybiBudWxsO2NvbnN0IGE9KDAsYy5nZXRGb250TmFtZVRvRmlsZU1hcCkoKVtlXTtsZXQgaTtpZihudWxsIT09dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmwpe2NvbnN0IGU9YCR7dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmx9JHthfWAsdD1hd2FpdCBmZXRjaChlKTt0Lm9rP2k9YXdhaXQgdC5hcnJheUJ1ZmZlcigpOigwLHIud2FybikoYGZldGNoU3RhbmRhcmRGb250RGF0YTogZmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7ZX0iIHdpdGggIiR7dC5zdGF0dXNUZXh0fSIuYCl9ZWxzZSB0cnl7aT1hd2FpdCB0aGlzLmhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJGZXRjaFN0YW5kYXJkRm9udERhdGEiLHtmaWxlbmFtZTphfSl9Y2F0Y2goZSl7KDAsci53YXJuKShgZmV0Y2hTdGFuZGFyZEZvbnREYXRhOiBmYWlsZWQgdG8gZmV0Y2ggZmlsZSAiJHthfSIgd2l0aCAiJHtlfSIuYCl9aWYoIWkpcmV0dXJuIG51bGw7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuc2V0KGUsaSk7cmV0dXJuIG5ldyBwLlN0cmVhbShpKX1hc3luYyBidWlsZEZvcm1YT2JqZWN0KGUsdCxhLGkscyxvLGMpe2NvbnN0IGw9dC5kaWN0LGg9bC5nZXRBcnJheSgiTWF0cml4Iik7bGV0IHUsZCxmPWwuZ2V0QXJyYXkoIkJCb3giKTtmPUFycmF5LmlzQXJyYXkoZikmJjQ9PT1mLmxlbmd0aD9yLlV0aWwubm9ybWFsaXplUmVjdChmKTpudWxsO2wuaGFzKCJPQyIpJiYodT1hd2FpdCB0aGlzLnBhcnNlTWFya2VkQ29udGVudFByb3BzKGwuZ2V0KCJPQyIpLGUpKTt2b2lkIDAhPT11JiZpLmFkZE9wKHIuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzLFsiT0MiLHVdKTtjb25zdCBnPWwuZ2V0KCJHcm91cCIpO2lmKGcpe2Q9e21hdHJpeDpoLGJib3g6ZixzbWFzazphLGlzb2xhdGVkOiExLGtub2Nrb3V0OiExfTtjb25zdCB0PWcuZ2V0KCJTIik7bGV0IHM9bnVsbDtpZigoMCxuLmlzTmFtZSkodCwiVHJhbnNwYXJlbmN5Iikpe2QuaXNvbGF0ZWQ9Zy5nZXQoIkkiKXx8ITE7ZC5rbm9ja291dD1nLmdldCgiSyIpfHwhMTtpZihnLmhhcygiQ1MiKSl7Y29uc3QgdD1nLmdldFJhdygiQ1MiKSxhPXkuQ29sb3JTcGFjZS5nZXRDYWNoZWQodCx0aGlzLnhyZWYsYyk7cz1hfHxhd2FpdCB0aGlzLnBhcnNlQ29sb3JTcGFjZSh7Y3M6dCxyZXNvdXJjZXM6ZSxsb2NhbENvbG9yU3BhY2VDYWNoZTpjfSl9fWlmKGE/LmJhY2tkcm9wKXtzfHw9eS5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiO2EuYmFja2Ryb3A9cy5nZXRSZ2IoYS5iYWNrZHJvcCwwKX1pLmFkZE9wKHIuT1BTLmJlZ2luR3JvdXAsW2RdKX1jb25zdCBwPWc/W2gsbnVsbF06W2gsZl07aS5hZGRPcChyLk9QUy5wYWludEZvcm1YT2JqZWN0QmVnaW4scCk7cmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOnMscmVzb3VyY2VzOmwuZ2V0KCJSZXNvdXJjZXMiKXx8ZSxvcGVyYXRvckxpc3Q6aSxpbml0aWFsU3RhdGU6b30pLnRoZW4oKGZ1bmN0aW9uKCl7aS5hZGRPcChyLk9QUy5wYWludEZvcm1YT2JqZWN0RW5kLFtdKTtnJiZpLmFkZE9wKHIuT1BTLmVuZEdyb3VwLFtkXSk7dm9pZCAwIT09dSYmaS5hZGRPcChyLk9QUy5lbmRNYXJrZWRDb250ZW50LFtdKX0pKX1fc2VuZEltZ0RhdGEoZSx0LGE9ITEpe2NvbnN0IHI9dD9bdC5iaXRtYXB8fHQuZGF0YS5idWZmZXJdOm51bGw7cmV0dXJuIHRoaXMucGFyc2luZ1R5cGUzRm9udHx8YT90aGlzLmhhbmRsZXIuc2VuZCgiY29tbW9ub2JqIixbZSwiSW1hZ2UiLHRdLHIpOnRoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtlLHRoaXMucGFnZUluZGV4LCJJbWFnZSIsdF0scil9YXN5bmMgYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOmUsaW1hZ2U6dCxpc0lubGluZTphPSExLG9wZXJhdG9yTGlzdDppLGNhY2hlS2V5Om4sbG9jYWxJbWFnZUNhY2hlOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6b30pe2NvbnN0IGM9dC5kaWN0LGw9Yy5vYmpJZCxoPWMuZ2V0KCJXIiwiV2lkdGgiKSx1PWMuZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoIWh8fCJudW1iZXIiIT10eXBlb2YgaHx8IXV8fCJudW1iZXIiIT10eXBlb2YgdSl7KDAsci53YXJuKSgiSW1hZ2UgZGltZW5zaW9ucyBhcmUgbWlzc2luZywgb3Igbm90IG51bWJlcnMuIik7cmV0dXJufWNvbnN0IGQ9dGhpcy5vcHRpb25zLm1heEltYWdlU2l6ZTtpZigtMSE9PWQmJmgqdT5kKXtjb25zdCBlPSJJbWFnZSBleGNlZWRlZCBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBhbmQgd2FzIHJlbW92ZWQuIjtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXsoMCxyLndhcm4pKGUpO3JldHVybn10aHJvdyBuZXcgRXJyb3IoZSl9bGV0IGY7Yy5oYXMoIk9DIikmJihmPWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoYy5nZXQoIk9DIiksZSkpO2xldCBnLHA7aWYoYy5nZXQoIklNIiwiSW1hZ2VNYXNrIil8fCExKXtjb25zdCBlPWMuZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKSxhPWgrNz4+MyxvPXQuZ2V0Qnl0ZXMoYSp1KSxkPWMuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpe2c9RS5QREZJbWFnZS5jcmVhdGVSYXdNYXNrKHtpbWdBcnJheTpvLHdpZHRoOmgsaGVpZ2h0OnUsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06dCBpbnN0YW5jZW9mIHcuRGVjb2RlU3RyZWFtLGludmVyc2VEZWNvZGU6ZD8uWzBdPjAsaW50ZXJwb2xhdGU6ZX0pO2cuY2FjaGVkPSEhbjtwPVtnXTtpLmFkZEltYWdlT3BzKHIuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdCxwLGYpO2lmKG4pe2NvbnN0IGU9e2ZuOnIuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdCxhcmdzOnAsb3B0aW9uYWxDb250ZW50OmZ9O3Muc2V0KG4sbCxlKTtsJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsbCxlKX1yZXR1cm59Zz1hd2FpdCBFLlBERkltYWdlLmNyZWF0ZU1hc2soe2ltZ0FycmF5Om8sd2lkdGg6aCxoZWlnaHQ6dSxpbWFnZUlzRnJvbURlY29kZVN0cmVhbTp0IGluc3RhbmNlb2Ygdy5EZWNvZGVTdHJlYW0saW52ZXJzZURlY29kZTpkPy5bMF0+MCxpbnRlcnBvbGF0ZTplLGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOnRoaXMub3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZH0pO2lmKGcuaXNTaW5nbGVPcGFxdWVQaXhlbCl7aS5hZGRJbWFnZU9wcyhyLk9QUy5wYWludFNvbGlkQ29sb3JJbWFnZU1hc2ssW10sZik7aWYobil7Y29uc3QgZT17Zm46ci5PUFMucGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrLGFyZ3M6W10sb3B0aW9uYWxDb250ZW50OmZ9O3Muc2V0KG4sbCxlKTtsJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsbCxlKX1yZXR1cm59Y29uc3QgbT1gbWFza18ke3RoaXMuaWRGYWN0b3J5LmNyZWF0ZU9iaklkKCl9YDtpLmFkZERlcGVuZGVuY3kobSk7dGhpcy5fc2VuZEltZ0RhdGEobSxnKTtwPVt7ZGF0YTptLHdpZHRoOmcud2lkdGgsaGVpZ2h0OmcuaGVpZ2h0LGludGVycG9sYXRlOmcuaW50ZXJwb2xhdGUsY291bnQ6MX1dO2kuYWRkSW1hZ2VPcHMoci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0LHAsZik7aWYobil7Y29uc3QgZT17Zm46ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0LGFyZ3M6cCxvcHRpb25hbENvbnRlbnQ6Zn07cy5zZXQobixsLGUpO2wmJnRoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCxsLGUpfXJldHVybn1jb25zdCBtPWMuZ2V0KCJTTSIsIlNNYXNrIil8fCExLGI9Yy5nZXQoIk1hc2siKXx8ITE7aWYoYSYmIW0mJiFiJiZoK3U8MjAwKXtjb25zdCBuPW5ldyBFLlBERkltYWdlKHt4cmVmOnRoaXMueHJlZixyZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmEscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTpvfSk7Zz1hd2FpdCBuLmNyZWF0ZUltYWdlRGF0YSghMCwhMSk7aS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD10aGlzLm9wdGlvbnMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ7aS5hZGRJbWFnZU9wcyhyLk9QUy5wYWludElubGluZUltYWdlWE9iamVjdCxbZ10sZik7cmV0dXJufWxldCB5PWBpbWdfJHt0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpfWAsUz0hMTtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpeT1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV90eXBlM18ke3l9YDtlbHNlIGlmKGwpe1M9dGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNob3VsZENhY2hlKGwsdGhpcy5wYWdlSW5kZXgpO1MmJih5PWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9XyR7eX1gKX1pLmFkZERlcGVuZGVuY3koeSk7cD1beSxoLHVdO0UuUERGSW1hZ2UuYnVpbGRJbWFnZSh7eHJlZjp0aGlzLnhyZWYscmVzOmUsaW1hZ2U6dCxpc0lubGluZTphLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6b30pLnRoZW4oKGFzeW5jIGU9PntnPWF3YWl0IGUuY3JlYXRlSW1hZ2VEYXRhKCExLHRoaXMub3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCk7aWYobiYmbCYmUyl7bGV0IGU9MDtlPWcuYml0bWFwP2cud2lkdGgqZy5oZWlnaHQqNDpnLmRhdGEubGVuZ3RoO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5hZGRCeXRlU2l6ZShsLGUpfXJldHVybiB0aGlzLl9zZW5kSW1nRGF0YSh5LGcsUyl9KSkuY2F0Y2goKGU9PnsoMCxyLndhcm4pKGBVbmFibGUgdG8gZGVjb2RlIGltYWdlICIke3l9IjogIiR7ZX0iLmApO3JldHVybiB0aGlzLl9zZW5kSW1nRGF0YSh5LG51bGwsUyl9KSk7aS5hZGRJbWFnZU9wcyhyLk9QUy5wYWludEltYWdlWE9iamVjdCxwLGYpO2lmKG4pe2NvbnN0IGU9e2ZuOnIuT1BTLnBhaW50SW1hZ2VYT2JqZWN0LGFyZ3M6cCxvcHRpb25hbENvbnRlbnQ6Zn07cy5zZXQobixsLGUpO2lmKGwpe3RoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCxsLGUpO2lmKFMpeygwLHIuYXNzZXJ0KSghYSwiQ2Fubm90IGNhY2hlIGFuIGlubGluZSBpbWFnZSBnbG9iYWxseS4iKTt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YShsLHtvYmpJZDp5LGZuOnIuT1BTLnBhaW50SW1hZ2VYT2JqZWN0LGFyZ3M6cCxvcHRpb25hbENvbnRlbnQ6ZixieXRlU2l6ZTowfSl9fX19aGFuZGxlU01hc2soZSx0LGEscixpLG4pe2NvbnN0IHM9ZS5nZXQoIkciKSxvPXtzdWJ0eXBlOmUuZ2V0KCJTIikubmFtZSxiYWNrZHJvcDplLmdldCgiQkMiKX0sYz1lLmdldCgiVFIiKTtpZigoMCxkLmlzUERGRnVuY3Rpb24pKGMpKXtjb25zdCBlPXRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeS5jcmVhdGUoYyksdD1uZXcgVWludDhBcnJheSgyNTYpLGE9bmV3IEZsb2F0MzJBcnJheSgxKTtmb3IobGV0IHI9MDtyPDI1NjtyKyspe2FbMF09ci8yNTU7ZShhLDAsYSwwKTt0W3JdPTI1NSphWzBdfDB9by50cmFuc2Zlck1hcD10fXJldHVybiB0aGlzLmJ1aWxkRm9ybVhPYmplY3QodCxzLG8sYSxyLGkuc3RhdGUuY2xvbmUoKSxuKX1oYW5kbGVUcmFuc2ZlckZ1bmN0aW9uKGUpe2xldCB0O2lmKEFycmF5LmlzQXJyYXkoZSkpdD1lO2Vsc2V7aWYoISgwLGQuaXNQREZGdW5jdGlvbikoZSkpcmV0dXJuIG51bGw7dD1bZV19Y29uc3QgYT1bXTtsZXQgcj0wLGk9MDtmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PXRoaXMueHJlZi5mZXRjaElmUmVmKGUpO3IrKztpZigoMCxuLmlzTmFtZSkodCwiSWRlbnRpdHkiKSl7YS5wdXNoKG51bGwpO2NvbnRpbnVlfWlmKCEoMCxkLmlzUERGRnVuY3Rpb24pKHQpKXJldHVybiBudWxsO2NvbnN0IHM9dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LmNyZWF0ZSh0KSxvPW5ldyBVaW50OEFycmF5KDI1NiksYz1uZXcgRmxvYXQzMkFycmF5KDEpO2ZvcihsZXQgZT0wO2U8MjU2O2UrKyl7Y1swXT1lLzI1NTtzKGMsMCxjLDApO29bZV09MjU1KmNbMF18MH1hLnB1c2gobyk7aSsrfXJldHVybiAxIT09ciYmNCE9PXJ8fDA9PT1pP251bGw6YX1oYW5kbGVUaWxpbmdUeXBlKGUsdCxhLGkscyxvLGMsaCl7Y29uc3QgdT1uZXcgTS5PcGVyYXRvckxpc3QsZD1uLkRpY3QubWVyZ2Uoe3hyZWY6dGhpcy54cmVmLGRpY3RBcnJheTpbcy5nZXQoIlJlc291cmNlcyIpLGFdfSk7cmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06aSx0YXNrOmMscmVzb3VyY2VzOmQsb3BlcmF0b3JMaXN0OnV9KS50aGVuKChmdW5jdGlvbigpe2NvbnN0IGE9dS5nZXRJUigpLHI9KDAsbC5nZXRUaWxpbmdQYXR0ZXJuSVIpKGEscyx0KTtvLmFkZERlcGVuZGVuY2llcyh1LmRlcGVuZGVuY2llcyk7by5hZGRPcChlLHIpO3Mub2JqSWQmJmguc2V0KG51bGwscy5vYmpJZCx7b3BlcmF0b3JMaXN0SVI6YSxkaWN0OnN9KX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGhhbmRsZVRpbGluZ1R5cGUgLSBpZ25vcmluZyBwYXR0ZXJuOiAiJHtlfSIuYCl9fSkpfWhhbmRsZVNldEZvbnQoZSx0LGEscixpLG8sYz1udWxsLGw9bnVsbCl7Y29uc3QgaD10Py5bMF1pbnN0YW5jZW9mIG4uTmFtZT90WzBdLm5hbWU6bnVsbDtyZXR1cm4gdGhpcy5sb2FkRm9udChoLGEsZSxjLGwpLnRoZW4oKHQ9PnQuZm9udC5pc1R5cGUzRm9udD90LmxvYWRUeXBlM0RhdGEodGhpcyxlLGkpLnRoZW4oKGZ1bmN0aW9uKCl7ci5hZGREZXBlbmRlbmNpZXModC50eXBlM0RlcGVuZGVuY2llcyk7cmV0dXJuIHR9KSkuY2F0Y2goKGU9Pm5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZToiZ19mb250X2Vycm9yIixmb250Om5ldyBzLkVycm9yRm9udChgVHlwZTMgZm9udCBsb2FkIGVycm9yOiAke2V9YCksZGljdDp0LmZvbnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KSkpOnQpKS50aGVuKChlPT57by5mb250PWUuZm9udDtlLnNlbmQodGhpcy5oYW5kbGVyKTtyZXR1cm4gZS5sb2FkZWROYW1lfSkpfWhhbmRsZVRleHQoZSx0KXtjb25zdCBhPXQuZm9udCxpPWEuY2hhcnNUb0dseXBocyhlKTtpZihhLmRhdGEpeyghISh0LnRleHRSZW5kZXJpbmdNb2RlJnIuVGV4dFJlbmRlcmluZ01vZGUuQUREX1RPX1BBVEhfRkxBRyl8fCJQYXR0ZXJuIj09PXQuZmlsbENvbG9yU3BhY2UubmFtZXx8YS5kaXNhYmxlRm9udEZhY2V8fHRoaXMub3B0aW9ucy5kaXNhYmxlRm9udEZhY2UpJiZQYXJ0aWFsRXZhbHVhdG9yLmJ1aWxkRm9udFBhdGhzKGEsaSx0aGlzLmhhbmRsZXIsdGhpcy5vcHRpb25zKX1yZXR1cm4gaX1lbnN1cmVTdGF0ZUZvbnQoZSl7aWYoZS5mb250KXJldHVybjtjb25zdCB0PW5ldyByLkZvcm1hdEVycm9yKCJNaXNzaW5nIHNldEZvbnQgKFRmKSBvcGVyYXRvciBiZWZvcmUgdGV4dCByZW5kZXJpbmcgb3BlcmF0b3IuIik7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgdDsoMCxyLndhcm4pKGBlbnN1cmVTdGF0ZUZvbnQ6ICIke3R9Ii5gKX1hc3luYyBzZXRHU3RhdGUoe3Jlc291cmNlczplLGdTdGF0ZTp0LG9wZXJhdG9yTGlzdDphLGNhY2hlS2V5OmksdGFzazpzLHN0YXRlTWFuYWdlcjpvLGxvY2FsR1N0YXRlQ2FjaGU6Yyxsb2NhbENvbG9yU3BhY2VDYWNoZTpsfSl7Y29uc3QgaD10Lm9iaklkO2xldCB1PSEwO2NvbnN0IGQ9W107bGV0IGY9UHJvbWlzZS5yZXNvbHZlKCk7Zm9yKGNvbnN0IGkgb2YgdC5nZXRLZXlzKCkpe2NvbnN0IGM9dC5nZXQoaSk7c3dpdGNoKGkpe2Nhc2UiVHlwZSI6YnJlYWs7Y2FzZSJMVyI6Y2FzZSJMQyI6Y2FzZSJMSiI6Y2FzZSJNTCI6Y2FzZSJEIjpjYXNlIlJJIjpjYXNlIkZMIjpjYXNlIkNBIjpjYXNlImNhIjpkLnB1c2goW2ksY10pO2JyZWFrO2Nhc2UiRm9udCI6dT0hMTtmPWYudGhlbigoKCk9PnRoaXMuaGFuZGxlU2V0Rm9udChlLG51bGwsY1swXSxhLHMsby5zdGF0ZSkudGhlbigoZnVuY3Rpb24oZSl7YS5hZGREZXBlbmRlbmN5KGUpO2QucHVzaChbaSxbZSxjWzFdXV0pfSkpKSk7YnJlYWs7Y2FzZSJCTSI6ZC5wdXNoKFtpLG5vcm1hbGl6ZUJsZW5kTW9kZShjKV0pO2JyZWFrO2Nhc2UiU01hc2siOmlmKCgwLG4uaXNOYW1lKShjLCJOb25lIikpe2QucHVzaChbaSwhMV0pO2JyZWFrfWlmKGMgaW5zdGFuY2VvZiBuLkRpY3Qpe3U9ITE7Zj1mLnRoZW4oKCgpPT50aGlzLmhhbmRsZVNNYXNrKGMsZSxhLHMsbyxsKSkpO2QucHVzaChbaSwhMF0pfWVsc2UoMCxyLndhcm4pKCJVbnN1cHBvcnRlZCBTTWFzayB0eXBlIik7YnJlYWs7Y2FzZSJUUiI6Y29uc3QgdD10aGlzLmhhbmRsZVRyYW5zZmVyRnVuY3Rpb24oYyk7ZC5wdXNoKFtpLHRdKTticmVhaztjYXNlIk9QIjpjYXNlIm9wIjpjYXNlIk9QTSI6Y2FzZSJCRyI6Y2FzZSJCRzIiOmNhc2UiVUNSIjpjYXNlIlVDUjIiOmNhc2UiVFIyIjpjYXNlIkhUIjpjYXNlIlNNIjpjYXNlIlNBIjpjYXNlIkFJUyI6Y2FzZSJUSyI6KDAsci5pbmZvKSgiZ3JhcGhpYyBzdGF0ZSBvcGVyYXRvciAiK2kpO2JyZWFrO2RlZmF1bHQ6KDAsci5pbmZvKSgiVW5rbm93biBncmFwaGljIHN0YXRlIG9wZXJhdG9yICIraSl9fXJldHVybiBmLnRoZW4oKGZ1bmN0aW9uKCl7ZC5sZW5ndGg+MCYmYS5hZGRPcChyLk9QUy5zZXRHU3RhdGUsW2RdKTt1JiZjLnNldChpLGgsZCl9KSl9bG9hZEZvbnQoZSx0LGEsaT1udWxsLG89bnVsbCl7Y29uc3QgZXJyb3JGb250PWFzeW5jKCk9Pm5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZToiZ19mb250X2Vycm9yIixmb250Om5ldyBzLkVycm9yRm9udChgRm9udCAiJHtlfSIgaXMgbm90IGF2YWlsYWJsZS5gKSxkaWN0OnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KTtsZXQgYztpZih0KXQgaW5zdGFuY2VvZiBuLlJlZiYmKGM9dCk7ZWxzZXtjb25zdCB0PWEuZ2V0KCJGb250Iik7dCYmKGM9dC5nZXRSYXcoZSkpfWlmKGMpe2lmKHRoaXMucGFyc2luZ1R5cGUzRm9udCYmdGhpcy50eXBlM0ZvbnRSZWZzLmhhcyhjKSlyZXR1cm4gZXJyb3JGb250KCk7aWYodGhpcy5mb250Q2FjaGUuaGFzKGMpKXJldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQoYyk7dD10aGlzLnhyZWYuZmV0Y2hJZlJlZihjKX1pZighKHQgaW5zdGFuY2VvZiBuLkRpY3QpKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyYmIXRoaXMucGFyc2luZ1R5cGUzRm9udCl7KDAsci53YXJuKShgRm9udCAiJHtlfSIgaXMgbm90IGF2YWlsYWJsZS5gKTtyZXR1cm4gZXJyb3JGb250KCl9KDAsci53YXJuKShgRm9udCAiJHtlfSIgaXMgbm90IGF2YWlsYWJsZSAtLSBhdHRlbXB0aW5nIHRvIGZhbGxiYWNrIHRvIGEgZGVmYXVsdCBmb250LmApO3Q9aXx8UGFydGlhbEV2YWx1YXRvci5mYWxsYmFja0ZvbnREaWN0fWlmKHQuY2FjaGVLZXkmJnRoaXMuZm9udENhY2hlLmhhcyh0LmNhY2hlS2V5KSlyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KHQuY2FjaGVLZXkpO2NvbnN0IGw9bmV3IHIuUHJvbWlzZUNhcGFiaWxpdHk7bGV0IGg7dHJ5e2g9dGhpcy5wcmVFdmFsdWF0ZUZvbnQodCk7aC5jc3NGb250SW5mbz1vfWNhdGNoKGUpeygwLHIud2FybikoYGxvYWRGb250IC0gcHJlRXZhbHVhdGVGb250IGZhaWxlZDogIiR7ZX0iLmApO3JldHVybiBlcnJvckZvbnQoKX1jb25zdHtkZXNjcmlwdG9yOnUsaGFzaDpkfT1oLGY9YyBpbnN0YW5jZW9mIG4uUmVmO2xldCBnO2lmKGQmJnUgaW5zdGFuY2VvZiBuLkRpY3Qpe2NvbnN0IGU9dS5mb250QWxpYXNlc3x8PU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZVtkXSl7Y29uc3QgdD1lW2RdLmFsaWFzUmVmO2lmKGYmJnQmJnRoaXMuZm9udENhY2hlLmhhcyh0KSl7dGhpcy5mb250Q2FjaGUucHV0QWxpYXMoYyx0KTtyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KGMpfX1lbHNlIGVbZF09e2ZvbnRJRDp0aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKX07ZiYmKGVbZF0uYWxpYXNSZWY9Yyk7Zz1lW2RdLmZvbnRJRH1lbHNlIGc9dGhpcy5pZEZhY3RvcnkuY3JlYXRlRm9udElkKCk7KDAsci5hc3NlcnQpKGc/LnN0YXJ0c1dpdGgoImYiKSwnVGhlICJmb250SUQiIG11c3QgYmUgKGNvcnJlY3RseSkgZGVmaW5lZC4nKTtpZihmKXRoaXMuZm9udENhY2hlLnB1dChjLGwucHJvbWlzZSk7ZWxzZXt0LmNhY2hlS2V5PWBjYWNoZUtleV8ke2d9YDt0aGlzLmZvbnRDYWNoZS5wdXQodC5jYWNoZUtleSxsLnByb21pc2UpfXQubG9hZGVkTmFtZT1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV8ke2d9YDt0aGlzLnRyYW5zbGF0ZUZvbnQoaCkudGhlbigoZT0+e2wucmVzb2x2ZShuZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6dC5sb2FkZWROYW1lLGZvbnQ6ZSxkaWN0OnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KSl9KSkuY2F0Y2goKGU9PnsoMCxyLndhcm4pKGBsb2FkRm9udCAtIHRyYW5zbGF0ZUZvbnQgZmFpbGVkOiAiJHtlfSIuYCk7bC5yZXNvbHZlKG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDpuZXcgcy5FcnJvckZvbnQoZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTplKSxkaWN0OnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KSl9KSk7cmV0dXJuIGwucHJvbWlzZX1idWlsZFBhdGgoZSx0LGEsaT0hMSl7Y29uc3Qgbj1lLmxlbmd0aC0xO2F8fChhPVtdKTtpZihuPDB8fGUuZm5BcnJheVtuXSE9PXIuT1BTLmNvbnN0cnVjdFBhdGgpe2lmKGkpeygwLHIud2FybikoYEVuY291bnRlcmVkIHBhdGggb3BlcmF0b3IgIiR7dH0iIGluc2lkZSBvZiBhIHRleHQgb2JqZWN0LmApO2UuYWRkT3Aoci5PUFMuc2F2ZSxudWxsKX1sZXQgbjtzd2l0Y2godCl7Y2FzZSByLk9QUy5yZWN0YW5nbGU6Y29uc3QgZT1hWzBdK2FbMl0sdD1hWzFdK2FbM107bj1bTWF0aC5taW4oYVswXSxlKSxNYXRoLm1heChhWzBdLGUpLE1hdGgubWluKGFbMV0sdCksTWF0aC5tYXgoYVsxXSx0KV07YnJlYWs7Y2FzZSByLk9QUy5tb3ZlVG86Y2FzZSByLk9QUy5saW5lVG86bj1bYVswXSxhWzBdLGFbMV0sYVsxXV07YnJlYWs7ZGVmYXVsdDpuPVsxLzAsLTEvMCwxLzAsLTEvMF19ZS5hZGRPcChyLk9QUy5jb25zdHJ1Y3RQYXRoLFtbdF0sYSxuXSk7aSYmZS5hZGRPcChyLk9QUy5yZXN0b3JlLG51bGwpfWVsc2V7Y29uc3QgaT1lLmFyZ3NBcnJheVtuXTtpWzBdLnB1c2godCk7aVsxXS5wdXNoKC4uLmEpO2NvbnN0IHM9aVsyXTtzd2l0Y2godCl7Y2FzZSByLk9QUy5yZWN0YW5nbGU6Y29uc3QgZT1hWzBdK2FbMl0sdD1hWzFdK2FbM107c1swXT1NYXRoLm1pbihzWzBdLGFbMF0sZSk7c1sxXT1NYXRoLm1heChzWzFdLGFbMF0sZSk7c1syXT1NYXRoLm1pbihzWzJdLGFbMV0sdCk7c1szXT1NYXRoLm1heChzWzNdLGFbMV0sdCk7YnJlYWs7Y2FzZSByLk9QUy5tb3ZlVG86Y2FzZSByLk9QUy5saW5lVG86c1swXT1NYXRoLm1pbihzWzBdLGFbMF0pO3NbMV09TWF0aC5tYXgoc1sxXSxhWzBdKTtzWzJdPU1hdGgubWluKHNbMl0sYVsxXSk7c1szXT1NYXRoLm1heChzWzNdLGFbMV0pfX19cGFyc2VDb2xvclNwYWNlKHtjczplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmF9KXtyZXR1cm4geS5Db2xvclNwYWNlLnBhcnNlQXN5bmMoe2NzOmUseHJlZjp0aGlzLnhyZWYscmVzb3VyY2VzOnQscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTphfSkuY2F0Y2goKGU9PntpZihlIGluc3RhbmNlb2Ygci5BYm9ydEV4Y2VwdGlvbilyZXR1cm4gbnVsbDtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXsoMCxyLndhcm4pKGBwYXJzZUNvbG9yU3BhY2UgLSBpZ25vcmluZyBDb2xvclNwYWNlOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9dGhyb3cgZX0pKX1wYXJzZVNoYWRpbmcoe3NoYWRpbmc6ZSxyZXNvdXJjZXM6dCxsb2NhbENvbG9yU3BhY2VDYWNoZTphLGxvY2FsU2hhZGluZ1BhdHRlcm5DYWNoZTpyfSl7bGV0IGk9ci5nZXQoZSk7aWYoIWkpe2NvbnN0IG49bC5QYXR0ZXJuLnBhcnNlU2hhZGluZyhlLHRoaXMueHJlZix0LHRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxhKS5nZXRJUigpO2k9YHBhdHRlcm5fJHt0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpfWA7dGhpcy5wYXJzaW5nVHlwZTNGb250JiYoaT1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV90eXBlM18ke2l9YCk7ci5zZXQoZSxpKTt0aGlzLnBhcnNpbmdUeXBlM0ZvbnQ/dGhpcy5oYW5kbGVyLnNlbmQoImNvbW1vbm9iaiIsW2ksIlBhdHRlcm4iLG5dKTp0aGlzLmhhbmRsZXIuc2VuZCgib2JqIixbaSx0aGlzLnBhZ2VJbmRleCwiUGF0dGVybiIsbl0pfXJldHVybiBpfWhhbmRsZUNvbG9yTihlLHQsYSxpLHMsbyxjLGgsdSxkKXtjb25zdCBmPWEucG9wKCk7aWYoZiBpbnN0YW5jZW9mIG4uTmFtZSl7Y29uc3QgZz1zLmdldFJhdyhmLm5hbWUpLHA9ZyBpbnN0YW5jZW9mIG4uUmVmJiZ1LmdldEJ5UmVmKGcpO2lmKHApdHJ5e2NvbnN0IHI9aS5iYXNlP2kuYmFzZS5nZXRSZ2IoYSwwKTpudWxsLG49KDAsbC5nZXRUaWxpbmdQYXR0ZXJuSVIpKHAub3BlcmF0b3JMaXN0SVIscC5kaWN0LHIpO2UuYWRkT3AodCxuKTtyZXR1cm59Y2F0Y2goZSl7fWNvbnN0IGI9dGhpcy54cmVmLmZldGNoSWZSZWYoZyk7aWYoYil7Y29uc3Qgbj1iIGluc3RhbmNlb2YgbS5CYXNlU3RyZWFtP2IuZGljdDpiLHM9bi5nZXQoIlBhdHRlcm5UeXBlIik7aWYocz09PU4pe2NvbnN0IHI9aS5iYXNlP2kuYmFzZS5nZXRSZ2IoYSwwKTpudWxsO3JldHVybiB0aGlzLmhhbmRsZVRpbGluZ1R5cGUodCxyLG8sYixuLGUsYyx1KX1pZihzPT09Uil7Y29uc3QgYT1uLmdldCgiU2hhZGluZyIpLHI9bi5nZXRBcnJheSgiTWF0cml4IiksaT10aGlzLnBhcnNlU2hhZGluZyh7c2hhZGluZzphLHJlc291cmNlczpvLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmgsbG9jYWxTaGFkaW5nUGF0dGVybkNhY2hlOmR9KTtlLmFkZE9wKHQsWyJTaGFkaW5nIixpLHJdKTtyZXR1cm59dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFVua25vd24gUGF0dGVyblR5cGU6ICR7c31gKX19dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFVua25vd24gUGF0dGVybk5hbWU6ICR7Zn1gKX1fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihlLHQsYSl7aWYoKyt0PjEwKXsoMCxyLndhcm4pKCJWaXNpYmlsaXR5IGV4cHJlc3Npb24gaXMgdG9vIGRlZXBseSBuZXN0ZWQiKTtyZXR1cm59Y29uc3QgaT1lLmxlbmd0aCxzPXRoaXMueHJlZi5mZXRjaElmUmVmKGVbMF0pO2lmKCEoaTwyKSYmcyBpbnN0YW5jZW9mIG4uTmFtZSl7c3dpdGNoKHMubmFtZSl7Y2FzZSJBbmQiOmNhc2UiT3IiOmNhc2UiTm90IjphLnB1c2gocy5uYW1lKTticmVhaztkZWZhdWx0OigwLHIud2FybikoYEludmFsaWQgb3BlcmF0b3IgJHtzLm5hbWV9IGluIHZpc2liaWxpdHkgZXhwcmVzc2lvbmApO3JldHVybn1mb3IobGV0IHI9MTtyPGk7cisrKXtjb25zdCBpPWVbcl0scz10aGlzLnhyZWYuZmV0Y2hJZlJlZihpKTtpZihBcnJheS5pc0FycmF5KHMpKXtjb25zdCBlPVtdO2EucHVzaChlKTt0aGlzLl9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKHMsdCxlKX1lbHNlIGkgaW5zdGFuY2VvZiBuLlJlZiYmYS5wdXNoKGkudG9TdHJpbmcoKSl9fWVsc2UoMCxyLndhcm4pKCJJbnZhbGlkIHZpc2liaWxpdHkgZXhwcmVzc2lvbiIpfWFzeW5jIHBhcnNlTWFya2VkQ29udGVudFByb3BzKGUsdCl7bGV0IGE7aWYoZSBpbnN0YW5jZW9mIG4uTmFtZSl7YT10LmdldCgiUHJvcGVydGllcyIpLmdldChlLm5hbWUpfWVsc2V7aWYoIShlIGluc3RhbmNlb2Ygbi5EaWN0KSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiT3B0aW9uYWwgY29udGVudCBwcm9wZXJ0aWVzIG1hbGZvcm1lZC4iKTthPWV9Y29uc3QgaT1hLmdldCgiVHlwZSIpLm5hbWU7aWYoIk9DRyI9PT1pKXJldHVybnt0eXBlOmksaWQ6YS5vYmpJZH07aWYoIk9DTUQiPT09aSl7Y29uc3QgZT1hLmdldCgiVkUiKTtpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PVtdO3RoaXMuX3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24oZSwwLHQpO2lmKHQubGVuZ3RoPjApcmV0dXJue3R5cGU6Ik9DTUQiLGV4cHJlc3Npb246dH19Y29uc3QgdD1hLmdldCgiT0NHcyIpO2lmKEFycmF5LmlzQXJyYXkodCl8fHQgaW5zdGFuY2VvZiBuLkRpY3Qpe2NvbnN0IGU9W107aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IoY29uc3QgYSBvZiB0KWUucHVzaChhLnRvU3RyaW5nKCkpO2Vsc2UgZS5wdXNoKHQub2JqSWQpO3JldHVybnt0eXBlOmksaWRzOmUscG9saWN5OmEuZ2V0KCJQIilpbnN0YW5jZW9mIG4uTmFtZT9hLmdldCgiUCIpLm5hbWU6bnVsbCxleHByZXNzaW9uOm51bGx9fWlmKHQgaW5zdGFuY2VvZiBuLlJlZilyZXR1cm57dHlwZTppLGlkOnQudG9TdHJpbmcoKX19cmV0dXJuIG51bGx9Z2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06ZSx0YXNrOnQscmVzb3VyY2VzOmEsb3BlcmF0b3JMaXN0OmksaW5pdGlhbFN0YXRlOnM9bnVsbCxmYWxsYmFja0ZvbnREaWN0Om89bnVsbH0pe2F8fD1uLkRpY3QuZW1wdHk7c3x8PW5ldyBFdmFsU3RhdGU7aWYoIWkpdGhyb3cgbmV3IEVycm9yKCdnZXRPcGVyYXRvckxpc3Q6IG1pc3NpbmcgIm9wZXJhdG9yTGlzdCIgcGFyYW1ldGVyJyk7Y29uc3QgYz10aGlzLGw9dGhpcy54cmVmO2xldCBoPSExO2NvbnN0IHU9bmV3IGcuTG9jYWxJbWFnZUNhY2hlLGQ9bmV3IGcuTG9jYWxDb2xvclNwYWNlQ2FjaGUsZj1uZXcgZy5Mb2NhbEdTdGF0ZUNhY2hlLHA9bmV3IGcuTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUsYj1uZXcgTWFwLHc9YS5nZXQoIlhPYmplY3QiKXx8bi5EaWN0LmVtcHR5LFM9YS5nZXQoIlBhdHRlcm4iKXx8bi5EaWN0LmVtcHR5LHg9bmV3IFN0YXRlTWFuYWdlcihzKSxDPW5ldyBFdmFsdWF0b3JQcmVwcm9jZXNzb3IoZSxsLHgpLGs9bmV3IFRpbWVTbG90TWFuYWdlcjtmdW5jdGlvbiBjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKGUpe2ZvcihsZXQgZT0wLHQ9Qy5zYXZlZFN0YXRlc0RlcHRoO2U8dDtlKyspaS5hZGRPcChyLk9QUy5yZXN0b3JlLFtdKX1yZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uIHByb21pc2VCb2R5KGUscyl7Y29uc3QgbmV4dD1mdW5jdGlvbih0KXtQcm9taXNlLmFsbChbdCxpLnJlYWR5XSkudGhlbigoZnVuY3Rpb24oKXt0cnl7cHJvbWlzZUJvZHkoZSxzKX1jYXRjaChlKXtzKGUpfX0pLHMpfTt0LmVuc3VyZU5vdFRlcm1pbmF0ZWQoKTtrLnJlc2V0KCk7Y29uc3QgZz17fTtsZXQgdixGLE8sVCxNLEU7Zm9yKDshKHY9ay5jaGVjaygpKTspe2cuYXJncz1udWxsO2lmKCFDLnJlYWQoZykpYnJlYWs7bGV0IGU9Zy5hcmdzLHM9Zy5mbjtzd2l0Y2goMHxzKXtjYXNlIHIuT1BTLnBhaW50WE9iamVjdDpFPWVbMF1pbnN0YW5jZW9mIG4uTmFtZTtNPWVbMF0ubmFtZTtpZihFKXtjb25zdCB0PXUuZ2V0QnlOYW1lKE0pO2lmKHQpe2kuYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQpO2luY3JlbWVudENhY2hlZEltYWdlTWFza0NvdW50KHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxzKXtpZighRSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiWE9iamVjdCBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7bGV0IG89dy5nZXRSYXcoTSk7aWYobyBpbnN0YW5jZW9mIG4uUmVmKXtjb25zdCB0PXUuZ2V0QnlSZWYobyl8fGMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5nZXRCeVJlZihvKTtpZih0KXtpLmFkZEltYWdlT3BzKHQuZm4sdC5hcmdzLHQub3B0aW9uYWxDb250ZW50KTtpbmNyZW1lbnRDYWNoZWRJbWFnZU1hc2tDb3VudCh0KTtlKCk7cmV0dXJufWNvbnN0IGE9Yy5nbG9iYWxJbWFnZUNhY2hlLmdldERhdGEobyxjLnBhZ2VJbmRleCk7aWYoYSl7aS5hZGREZXBlbmRlbmN5KGEub2JqSWQpO2kuYWRkSW1hZ2VPcHMoYS5mbixhLmFyZ3MsYS5vcHRpb25hbENvbnRlbnQpO2UoKTtyZXR1cm59bz1sLmZldGNoKG8pfWlmKCEobyBpbnN0YW5jZW9mIG0uQmFzZVN0cmVhbSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGJlIGEgc3RyZWFtIik7Y29uc3QgaD1vLmRpY3QuZ2V0KCJTdWJ0eXBlIik7aWYoIShoIGluc3RhbmNlb2Ygbi5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgaGF2ZSBhIE5hbWUgc3VidHlwZSIpO2lmKCJGb3JtIiE9PWgubmFtZSlpZigiSW1hZ2UiIT09aC5uYW1lKXtpZigiUFMiIT09aC5uYW1lKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbmhhbmRsZWQgWE9iamVjdCBzdWJ0eXBlICR7aC5uYW1lfWApOygwLHIuaW5mbykoIklnbm9yZWQgWE9iamVjdCBzdWJ0eXBlIFBTIik7ZSgpfWVsc2UgYy5idWlsZFBhaW50SW1hZ2VYT2JqZWN0KHtyZXNvdXJjZXM6YSxpbWFnZTpvLG9wZXJhdG9yTGlzdDppLGNhY2hlS2V5Ok0sbG9jYWxJbWFnZUNhY2hlOnUsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZH0pLnRoZW4oZSxzKTtlbHNle3guc2F2ZSgpO2MuYnVpbGRGb3JtWE9iamVjdChhLG8sbnVsbCxpLHQseC5zdGF0ZS5jbG9uZSgpLGQpLnRoZW4oKGZ1bmN0aW9uKCl7eC5yZXN0b3JlKCk7ZSgpfSkscyl9fSkpLmNhdGNoKChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKSl7aWYoIWMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTsoMCxyLndhcm4pKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSByLk9QUy5zZXRGb250OnZhciBEPWVbMV07bmV4dChjLmhhbmRsZVNldEZvbnQoYSxlLG51bGwsaSx0LHguc3RhdGUsbykudGhlbigoZnVuY3Rpb24oZSl7aS5hZGREZXBlbmRlbmN5KGUpO2kuYWRkT3Aoci5PUFMuc2V0Rm9udCxbZSxEXSl9KSkpO3JldHVybjtjYXNlIHIuT1BTLmJlZ2luVGV4dDpoPSEwO2JyZWFrO2Nhc2Ugci5PUFMuZW5kVGV4dDpoPSExO2JyZWFrO2Nhc2Ugci5PUFMuZW5kSW5saW5lSW1hZ2U6dmFyIE49ZVswXS5jYWNoZUtleTtpZihOKXtjb25zdCB0PXUuZ2V0QnlOYW1lKE4pO2lmKHQpe2kuYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQpO2luY3JlbWVudENhY2hlZEltYWdlTWFza0NvdW50KHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChjLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczphLGltYWdlOmVbMF0saXNJbmxpbmU6ITAsb3BlcmF0b3JMaXN0OmksY2FjaGVLZXk6Tixsb2NhbEltYWdlQ2FjaGU6dSxsb2NhbENvbG9yU3BhY2VDYWNoZTpkfSkpO3JldHVybjtjYXNlIHIuT1BTLnNob3dUZXh0OmlmKCF4LnN0YXRlLmZvbnQpe2MuZW5zdXJlU3RhdGVGb250KHguc3RhdGUpO2NvbnRpbnVlfWVbMF09Yy5oYW5kbGVUZXh0KGVbMF0seC5zdGF0ZSk7YnJlYWs7Y2FzZSByLk9QUy5zaG93U3BhY2VkVGV4dDppZigheC5zdGF0ZS5mb250KXtjLmVuc3VyZVN0YXRlRm9udCh4LnN0YXRlKTtjb250aW51ZX12YXIgUj1bXSxfPXguc3RhdGU7Zm9yKGNvbnN0IHQgb2YgZVswXSkic3RyaW5nIj09dHlwZW9mIHQ/Ui5wdXNoKC4uLmMuaGFuZGxlVGV4dCh0LF8pKToibnVtYmVyIj09dHlwZW9mIHQmJlIucHVzaCh0KTtlWzBdPVI7cz1yLk9QUy5zaG93VGV4dDticmVhaztjYXNlIHIuT1BTLm5leHRMaW5lU2hvd1RleHQ6aWYoIXguc3RhdGUuZm9udCl7Yy5lbnN1cmVTdGF0ZUZvbnQoeC5zdGF0ZSk7Y29udGludWV9aS5hZGRPcChyLk9QUy5uZXh0TGluZSk7ZVswXT1jLmhhbmRsZVRleHQoZVswXSx4LnN0YXRlKTtzPXIuT1BTLnNob3dUZXh0O2JyZWFrO2Nhc2Ugci5PUFMubmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQ6aWYoIXguc3RhdGUuZm9udCl7Yy5lbnN1cmVTdGF0ZUZvbnQoeC5zdGF0ZSk7Y29udGludWV9aS5hZGRPcChyLk9QUy5uZXh0TGluZSk7aS5hZGRPcChyLk9QUy5zZXRXb3JkU3BhY2luZyxbZS5zaGlmdCgpXSk7aS5hZGRPcChyLk9QUy5zZXRDaGFyU3BhY2luZyxbZS5zaGlmdCgpXSk7ZVswXT1jLmhhbmRsZVRleHQoZVswXSx4LnN0YXRlKTtzPXIuT1BTLnNob3dUZXh0O2JyZWFrO2Nhc2Ugci5PUFMuc2V0VGV4dFJlbmRlcmluZ01vZGU6eC5zdGF0ZS50ZXh0UmVuZGVyaW5nTW9kZT1lWzBdO2JyZWFrO2Nhc2Ugci5PUFMuc2V0RmlsbENvbG9yU3BhY2U6e2NvbnN0IHQ9eS5Db2xvclNwYWNlLmdldENhY2hlZChlWzBdLGwsZCk7aWYodCl7eC5zdGF0ZS5maWxsQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQoYy5wYXJzZUNvbG9yU3BhY2Uoe2NzOmVbMF0scmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZH0pLnRoZW4oKGZ1bmN0aW9uKGUpe2UmJih4LnN0YXRlLmZpbGxDb2xvclNwYWNlPWUpfSkpKTtyZXR1cm59Y2FzZSByLk9QUy5zZXRTdHJva2VDb2xvclNwYWNlOntjb25zdCB0PXkuQ29sb3JTcGFjZS5nZXRDYWNoZWQoZVswXSxsLGQpO2lmKHQpe3guc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQoYy5wYXJzZUNvbG9yU3BhY2Uoe2NzOmVbMF0scmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZH0pLnRoZW4oKGZ1bmN0aW9uKGUpe2UmJih4LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9ZSl9KSkpO3JldHVybn1jYXNlIHIuT1BTLnNldEZpbGxDb2xvcjpUPXguc3RhdGUuZmlsbENvbG9yU3BhY2U7ZT1ULmdldFJnYihlLDApO3M9ci5PUFMuc2V0RmlsbFJHQkNvbG9yO2JyZWFrO2Nhc2Ugci5PUFMuc2V0U3Ryb2tlQ29sb3I6VD14LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7ZT1ULmdldFJnYihlLDApO3M9ci5PUFMuc2V0U3Ryb2tlUkdCQ29sb3I7YnJlYWs7Y2FzZSByLk9QUy5zZXRGaWxsR3JheTp4LnN0YXRlLmZpbGxDb2xvclNwYWNlPXkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7ZT15LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5LmdldFJnYihlLDApO3M9ci5PUFMuc2V0RmlsbFJHQkNvbG9yO2JyZWFrO2Nhc2Ugci5PUFMuc2V0U3Ryb2tlR3JheTp4LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9eS5Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheTtlPXkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldEZpbGxDTVlLQ29sb3I6eC5zdGF0ZS5maWxsQ29sb3JTcGFjZT15LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrO2U9eS5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2IoZSwwKTtzPXIuT1BTLnNldEZpbGxSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldFN0cm9rZUNNWUtDb2xvcjp4LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9eS5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215aztlPXkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldEZpbGxSR0JDb2xvcjp4LnN0YXRlLmZpbGxDb2xvclNwYWNlPXkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPXkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2IoZSwwKTticmVhaztjYXNlIHIuT1BTLnNldFN0cm9rZVJHQkNvbG9yOnguc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT15LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2I7ZT15LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSByLk9QUy5zZXRGaWxsQ29sb3JOOlQ9eC5zdGF0ZS5maWxsQ29sb3JTcGFjZTtpZigiUGF0dGVybiI9PT1ULm5hbWUpe25leHQoYy5oYW5kbGVDb2xvck4oaSxyLk9QUy5zZXRGaWxsQ29sb3JOLGUsVCxTLGEsdCxkLHAsYikpO3JldHVybn1lPVQuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRGaWxsUkdCQ29sb3I7YnJlYWs7Y2FzZSByLk9QUy5zZXRTdHJva2VDb2xvck46VD14LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7aWYoIlBhdHRlcm4iPT09VC5uYW1lKXtuZXh0KGMuaGFuZGxlQ29sb3JOKGksci5PUFMuc2V0U3Ryb2tlQ29sb3JOLGUsVCxTLGEsdCxkLHAsYikpO3JldHVybn1lPVQuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNoYWRpbmdGaWxsOnZhciAkPWEuZ2V0KCJTaGFkaW5nIik7aWYoISQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgcmVzb3VyY2UgZm91bmQiKTt2YXIgaj0kLmdldChlWzBdLm5hbWUpO2lmKCFqKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJObyBzaGFkaW5nIG9iamVjdCBmb3VuZCIpO2U9W2MucGFyc2VTaGFkaW5nKHtzaGFkaW5nOmoscmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZCxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6Yn0pXTtzPXIuT1BTLnNoYWRpbmdGaWxsO2JyZWFrO2Nhc2Ugci5PUFMuc2V0R1N0YXRlOkU9ZVswXWluc3RhbmNlb2Ygbi5OYW1lO009ZVswXS5uYW1lO2lmKEUpe2NvbnN0IHQ9Zi5nZXRCeU5hbWUoTSk7aWYodCl7dC5sZW5ndGg+MCYmaS5hZGRPcChyLk9QUy5zZXRHU3RhdGUsW3RdKTtlPW51bGw7Y29udGludWV9fW5leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUscyl7aWYoIUUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7Y29uc3Qgbz1hLmdldCgiRXh0R1N0YXRlIik7aWYoIShvIGluc3RhbmNlb2Ygbi5EaWN0KSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3QgbD1vLmdldChNKTtpZighKGwgaW5zdGFuY2VvZiBuLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjLnNldEdTdGF0ZSh7cmVzb3VyY2VzOmEsZ1N0YXRlOmwsb3BlcmF0b3JMaXN0OmksY2FjaGVLZXk6TSx0YXNrOnQsc3RhdGVNYW5hZ2VyOngsbG9jYWxHU3RhdGVDYWNoZTpmLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmR9KS50aGVuKGUscyl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighYy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2Ugci5PUFMubW92ZVRvOmNhc2Ugci5PUFMubGluZVRvOmNhc2Ugci5PUFMuY3VydmVUbzpjYXNlIHIuT1BTLmN1cnZlVG8yOmNhc2Ugci5PUFMuY3VydmVUbzM6Y2FzZSByLk9QUy5jbG9zZVBhdGg6Y2FzZSByLk9QUy5yZWN0YW5nbGU6Yy5idWlsZFBhdGgoaSxzLGUsaCk7Y29udGludWU7Y2FzZSByLk9QUy5tYXJrUG9pbnQ6Y2FzZSByLk9QUy5tYXJrUG9pbnRQcm9wczpjYXNlIHIuT1BTLmJlZ2luQ29tcGF0OmNhc2Ugci5PUFMuZW5kQ29tcGF0OmNvbnRpbnVlO2Nhc2Ugci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6aWYoIShlWzBdaW5zdGFuY2VvZiBuLk5hbWUpKXsoMCxyLndhcm4pKGBFeHBlY3RlZCBuYW1lIGZvciBiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyBhcmcwPSR7ZVswXX1gKTtjb250aW51ZX1pZigiT0MiPT09ZVswXS5uYW1lKXtuZXh0KGMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZVsxXSxhKS50aGVuKChlPT57aS5hZGRPcChyLk9QUy5iZWdpbk1hcmtlZENvbnRlbnRQcm9wcyxbIk9DIixlXSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKSl7aWYoIWMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTsoMCxyLndhcm4pKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBiZWdpbk1hcmtlZENvbnRlbnRQcm9wczogIiR7ZX0iLmApfX0pKSk7cmV0dXJufWU9W2VbMF0ubmFtZSxlWzFdaW5zdGFuY2VvZiBuLkRpY3Q/ZVsxXS5nZXQoIk1DSUQiKTpudWxsXTticmVhaztjYXNlIHIuT1BTLmJlZ2luTWFya2VkQ29udGVudDpjYXNlIHIuT1BTLmVuZE1hcmtlZENvbnRlbnQ6ZGVmYXVsdDppZihudWxsIT09ZSl7Zm9yKEY9MCxPPWUubGVuZ3RoO0Y8TyYmIShlW0ZdaW5zdGFuY2VvZiBuLkRpY3QpO0YrKyk7aWYoRjxPKXsoMCxyLndhcm4pKCJnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBvcGVyYXRvcjogIitzKTtjb250aW51ZX19fWkuYWRkT3AocyxlKX1pZih2KW5leHQoTCk7ZWxzZXtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCk7ZSgpfX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIGVycm9ycyBkdXJpbmcgIiR7dC5uYW1lfSIgdGFzazogIiR7ZX0iLmApO2Nsb3NlUGVuZGluZ1Jlc3RvcmVPUFMoKX19KSl9Z2V0VGV4dENvbnRlbnQoe3N0cmVhbTplLHRhc2s6dCxyZXNvdXJjZXM6YSxzdGF0ZU1hbmFnZXI6aT1udWxsLGluY2x1ZGVNYXJrZWRDb250ZW50OnM9ITEsc2luazpvLHNlZW5TdHlsZXM6Yz1uZXcgU2V0LHZpZXdCb3g6bCxtYXJrZWRDb250ZW50RGF0YTpoPW51bGwsZGlzYWJsZU5vcm1hbGl6YXRpb246dT0hMX0pe2F8fD1uLkRpY3QuZW1wdHk7aXx8PW5ldyBTdGF0ZU1hbmFnZXIobmV3IFRleHRTdGF0ZSk7cyYmKGh8fD17bGV2ZWw6MH0pO2NvbnN0IGQ9e2l0ZW1zOltdLHN0eWxlczpPYmplY3QuY3JlYXRlKG51bGwpfSxmPXtpbml0aWFsaXplZDohMSxzdHI6W10sdG90YWxXaWR0aDowLHRvdGFsSGVpZ2h0OjAsd2lkdGg6MCxoZWlnaHQ6MCx2ZXJ0aWNhbDohMSxwcmV2VHJhbnNmb3JtOm51bGwsdGV4dEFkdmFuY2VTY2FsZTowLHNwYWNlSW5GbG93TWluOjAsc3BhY2VJbkZsb3dNYXg6MCx0cmFja2luZ1NwYWNlTWluOjEvMCxuZWdhdGl2ZVNwYWNlTWF4Oi0xLzAsbm90QVNwYWNlOi0xLzAsdHJhbnNmb3JtOm51bGwsZm9udE5hbWU6bnVsbCxoYXNFT0w6ITF9LHA9WyIgIiwiICJdO2xldCB5PTA7ZnVuY3Rpb24gc2F2ZUxhc3RDaGFyKGUpe2NvbnN0IHQ9KHkrMSklMixhPSIgIiE9PXBbeV0mJiIgIj09PXBbdF07cFt5XT1lO3k9dDtyZXR1cm4gYX1mdW5jdGlvbiBzaG91bGRBZGRXaGl0ZXBzYWNlKCl7cmV0dXJuIiAiIT09cFt5XSYmIiAiPT09cFsoeSsxKSUyXX1mdW5jdGlvbiByZXNldExhc3RDaGFycygpe3BbMF09cFsxXT0iICI7eT0wfWNvbnN0IHc9dGhpcyxTPXRoaXMueHJlZix4PVtdO2xldCBDPW51bGw7Y29uc3Qgaz1uZXcgZy5Mb2NhbEltYWdlQ2FjaGUsdj1uZXcgZy5Mb2NhbEdTdGF0ZUNhY2hlLEY9bmV3IEV2YWx1YXRvclByZXByb2Nlc3NvcihlLFMsaSk7bGV0IE87ZnVuY3Rpb24gcHVzaFdoaXRlc3BhY2Uoe3dpZHRoOmU9MCxoZWlnaHQ6dD0wLHRyYW5zZm9ybTphPWYucHJldlRyYW5zZm9ybSxmb250TmFtZTpyPWYuZm9udE5hbWV9KXtkLml0ZW1zLnB1c2goe3N0cjoiICIsZGlyOiJsdHIiLHdpZHRoOmUsaGVpZ2h0OnQsdHJhbnNmb3JtOmEsZm9udE5hbWU6cixoYXNFT0w6ITF9KX1mdW5jdGlvbiBnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpe2NvbnN0IGU9Ty5mb250LHQ9W08uZm9udFNpemUqTy50ZXh0SFNjYWxlLDAsMCxPLmZvbnRTaXplLDAsTy50ZXh0UmlzZV07aWYoZS5pc1R5cGUzRm9udCYmKE8uZm9udFNpemU8PTF8fGUuaXNDaGFyQkJveCkmJiEoMCxyLmlzQXJyYXlFcXVhbCkoTy5mb250TWF0cml4LHIuRk9OVF9JREVOVElUWV9NQVRSSVgpKXtjb25zdCBhPWUuYmJveFszXS1lLmJib3hbMV07YT4wJiYodFszXSo9YSpPLmZvbnRNYXRyaXhbM10pfXJldHVybiByLlV0aWwudHJhbnNmb3JtKE8uY3RtLHIuVXRpbC50cmFuc2Zvcm0oTy50ZXh0TWF0cml4LHQpKX1mdW5jdGlvbiBlbnN1cmVUZXh0Q29udGVudEl0ZW0oKXtpZihmLmluaXRpYWxpemVkKXJldHVybiBmO2NvbnN0e2ZvbnQ6ZSxsb2FkZWROYW1lOnR9PU87aWYoIWMuaGFzKHQpKXtjLmFkZCh0KTtkLnN0eWxlc1t0XT17Zm9udEZhbWlseTplLmZhbGxiYWNrTmFtZSxhc2NlbnQ6ZS5hc2NlbnQsZGVzY2VudDplLmRlc2NlbnQsdmVydGljYWw6ZS52ZXJ0aWNhbH19Zi5mb250TmFtZT10O2NvbnN0IGE9Zi50cmFuc2Zvcm09Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKTtpZihlLnZlcnRpY2FsKXtmLndpZHRoPWYudG90YWxXaWR0aD1NYXRoLmh5cG90KGFbMF0sYVsxXSk7Zi5oZWlnaHQ9Zi50b3RhbEhlaWdodD0wO2YudmVydGljYWw9ITB9ZWxzZXtmLndpZHRoPWYudG90YWxXaWR0aD0wO2YuaGVpZ2h0PWYudG90YWxIZWlnaHQ9TWF0aC5oeXBvdChhWzJdLGFbM10pO2YudmVydGljYWw9ITF9Y29uc3Qgcj1NYXRoLmh5cG90KE8udGV4dExpbmVNYXRyaXhbMF0sTy50ZXh0TGluZU1hdHJpeFsxXSksaT1NYXRoLmh5cG90KE8uY3RtWzBdLE8uY3RtWzFdKTtmLnRleHRBZHZhbmNlU2NhbGU9aSpyO2NvbnN0e2ZvbnRTaXplOm59PU87Zi50cmFja2luZ1NwYWNlTWluPS4xMDIqbjtmLm5vdEFTcGFjZT0uMDMqbjtmLm5lZ2F0aXZlU3BhY2VNYXg9LS4yKm47Zi5zcGFjZUluRmxvd01pbj0uMTAyKm47Zi5zcGFjZUluRmxvd01heD0uNipuO2YuaGFzRU9MPSExO2YuaW5pdGlhbGl6ZWQ9ITA7cmV0dXJuIGZ9ZnVuY3Rpb24gdXBkYXRlQWR2YW5jZVNjYWxlKCl7aWYoIWYuaW5pdGlhbGl6ZWQpcmV0dXJuO2NvbnN0IGU9TWF0aC5oeXBvdChPLnRleHRMaW5lTWF0cml4WzBdLE8udGV4dExpbmVNYXRyaXhbMV0pLHQ9TWF0aC5oeXBvdChPLmN0bVswXSxPLmN0bVsxXSkqZTtpZih0IT09Zi50ZXh0QWR2YW5jZVNjYWxlKXtpZihmLnZlcnRpY2FsKXtmLnRvdGFsSGVpZ2h0Kz1mLmhlaWdodCpmLnRleHRBZHZhbmNlU2NhbGU7Zi5oZWlnaHQ9MH1lbHNle2YudG90YWxXaWR0aCs9Zi53aWR0aCpmLnRleHRBZHZhbmNlU2NhbGU7Zi53aWR0aD0wfWYudGV4dEFkdmFuY2VTY2FsZT10fX1mdW5jdGlvbiBoYW5kbGVTZXRGb250KGUsaSl7cmV0dXJuIHcubG9hZEZvbnQoZSxpLGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmZvbnQuaXNUeXBlM0ZvbnQ/ZS5sb2FkVHlwZTNEYXRhKHcsYSx0KS5jYXRjaCgoZnVuY3Rpb24oKXt9KSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gZX0pKTplfSkpLnRoZW4oKGZ1bmN0aW9uKGUpe08ubG9hZGVkTmFtZT1lLmxvYWRlZE5hbWU7Ty5mb250PWUuZm9udDtPLmZvbnRNYXRyaXg9ZS5mb250LmZvbnRNYXRyaXh8fHIuRk9OVF9JREVOVElUWV9NQVRSSVh9KSl9ZnVuY3Rpb24gYXBwbHlJbnZlcnNlUm90YXRpb24oZSx0LGEpe2NvbnN0IHI9TWF0aC5oeXBvdChhWzBdLGFbMV0pO3JldHVyblsoYVswXSplK2FbMV0qdCkvciwoYVsyXSplK2FbM10qdCkvcl19ZnVuY3Rpb24gY29tcGFyZVdpdGhMYXN0UG9zaXRpb24oZSl7Y29uc3QgdD1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpO2xldCBhPXRbNF0scj10WzVdO2lmKE8uZm9udD8udmVydGljYWwpe2lmKGE8bFswXXx8YT5sWzJdfHxyK2U8bFsxXXx8cj5sWzNdKXJldHVybiExfWVsc2UgaWYoYStlPGxbMF18fGE+bFsyXXx8cjxsWzFdfHxyPmxbM10pcmV0dXJuITE7aWYoIU8uZm9udHx8IWYucHJldlRyYW5zZm9ybSlyZXR1cm4hMDtsZXQgaT1mLnByZXZUcmFuc2Zvcm1bNF0sbj1mLnByZXZUcmFuc2Zvcm1bNV07aWYoaT09PWEmJm49PT1yKXJldHVybiEwO2xldCBzPS0xO3RbMF0mJjA9PT10WzFdJiYwPT09dFsyXT9zPXRbMF0+MD8wOjE4MDp0WzFdJiYwPT09dFswXSYmMD09PXRbM10mJihzPXRbMV0+MD85MDoyNzApO3N3aXRjaChzKXtjYXNlIDA6YnJlYWs7Y2FzZSA5MDpbYSxyXT1bcixhXTtbaSxuXT1bbixpXTticmVhaztjYXNlIDE4MDpbYSxyLGksbl09Wy1hLC1yLC1pLC1uXTticmVhaztjYXNlIDI3MDpbYSxyXT1bLXIsLWFdO1tpLG5dPVstbiwtaV07YnJlYWs7ZGVmYXVsdDpbYSxyXT1hcHBseUludmVyc2VSb3RhdGlvbihhLHIsdCk7W2ksbl09YXBwbHlJbnZlcnNlUm90YXRpb24oaSxuLGYucHJldlRyYW5zZm9ybSl9aWYoTy5mb250LnZlcnRpY2FsKXtjb25zdCBlPShuLXIpL2YudGV4dEFkdmFuY2VTY2FsZSx0PWEtaSxzPU1hdGguc2lnbihmLmhlaWdodCk7aWYoZTxzKmYubmVnYXRpdmVTcGFjZU1heCl7aWYoTWF0aC5hYnModCk+LjUqZi53aWR0aCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWlmKE1hdGguYWJzKHQpPmYud2lkdGgpe2FwcGVuZEVPTCgpO3JldHVybiEwfWU8PXMqZi5ub3RBU3BhY2UmJnJlc2V0TGFzdENoYXJzKCk7aWYoZTw9cypmLnRyYWNraW5nU3BhY2VNaW4paWYoc2hvdWxkQWRkV2hpdGVwc2FjZSgpKXtyZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cHVzaFdoaXRlc3BhY2Uoe2hlaWdodDpNYXRoLmFicyhlKX0pfWVsc2UgZi5oZWlnaHQrPWU7ZWxzZSBpZighYWRkRmFrZVNwYWNlcyhlLGYucHJldlRyYW5zZm9ybSxzKSlpZigwPT09Zi5zdHIubGVuZ3RoKXtyZXNldExhc3RDaGFycygpO3B1c2hXaGl0ZXNwYWNlKHtoZWlnaHQ6TWF0aC5hYnMoZSl9KX1lbHNlIGYuaGVpZ2h0Kz1lO01hdGguYWJzKHQpPi4yNSpmLndpZHRoJiZmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWNvbnN0IG89KGEtaSkvZi50ZXh0QWR2YW5jZVNjYWxlLGM9ci1uLGg9TWF0aC5zaWduKGYud2lkdGgpO2lmKG88aCpmLm5lZ2F0aXZlU3BhY2VNYXgpe2lmKE1hdGguYWJzKGMpPi41KmYuaGVpZ2h0KXthcHBlbmRFT0woKTtyZXR1cm4hMH1yZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmV0dXJuITB9aWYoTWF0aC5hYnMoYyk+Zi5oZWlnaHQpe2FwcGVuZEVPTCgpO3JldHVybiEwfW88PWgqZi5ub3RBU3BhY2UmJnJlc2V0TGFzdENoYXJzKCk7aWYobzw9aCpmLnRyYWNraW5nU3BhY2VNaW4paWYoc2hvdWxkQWRkV2hpdGVwc2FjZSgpKXtyZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKG8pfSl9ZWxzZSBmLndpZHRoKz1vO2Vsc2UgaWYoIWFkZEZha2VTcGFjZXMobyxmLnByZXZUcmFuc2Zvcm0saCkpaWYoMD09PWYuc3RyLmxlbmd0aCl7cmVzZXRMYXN0Q2hhcnMoKTtwdXNoV2hpdGVzcGFjZSh7d2lkdGg6TWF0aC5hYnMobyl9KX1lbHNlIGYud2lkdGgrPW87TWF0aC5hYnMoYyk+LjI1KmYuaGVpZ2h0JiZmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWZ1bmN0aW9uIGJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzp0fSl7Y29uc3QgYT1PLmZvbnQ7aWYoIWUpe2NvbnN0IGU9Ty5jaGFyU3BhY2luZyt0O2UmJihhLnZlcnRpY2FsP08udHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1lKTpPLnRyYW5zbGF0ZVRleHRNYXRyaXgoZSpPLnRleHRIU2NhbGUsMCkpO3JldHVybn1jb25zdCByPWEuY2hhcnNUb0dseXBocyhlKSxpPU8uZm9udE1hdHJpeFswXSpPLmZvbnRTaXplO2ZvcihsZXQgZT0wLG49ci5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgcz1yW2VdLHtjYXRlZ29yeTpvfT1zO2lmKG8uaXNJbnZpc2libGVGb3JtYXRNYXJrKWNvbnRpbnVlO2xldCBjPU8uY2hhclNwYWNpbmcrKGUrMT09PW4/dDowKSxsPXMud2lkdGg7YS52ZXJ0aWNhbCYmKGw9cy52bWV0cmljP3Mudm1ldHJpY1swXTotbCk7bGV0IGg9bCppO2lmKG8uaXNXaGl0ZXNwYWNlKXtpZihhLnZlcnRpY2FsKXtjKz0taCtPLndvcmRTcGFjaW5nO08udHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1jKX1lbHNle2MrPWgrTy53b3JkU3BhY2luZztPLnRyYW5zbGF0ZVRleHRNYXRyaXgoYypPLnRleHRIU2NhbGUsMCl9c2F2ZUxhc3RDaGFyKCIgIik7Y29udGludWV9aWYoIW8uaXNaZXJvV2lkdGhEaWFjcml0aWMmJiFjb21wYXJlV2l0aExhc3RQb3NpdGlvbihoKSl7YS52ZXJ0aWNhbD9PLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCxoKTpPLnRyYW5zbGF0ZVRleHRNYXRyaXgoaCpPLnRleHRIU2NhbGUsMCk7Y29udGludWV9Y29uc3QgdT1lbnN1cmVUZXh0Q29udGVudEl0ZW0oKTtvLmlzWmVyb1dpZHRoRGlhY3JpdGljJiYoaD0wKTtpZihhLnZlcnRpY2FsKXtPLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCxoKTtoPU1hdGguYWJzKGgpO3UuaGVpZ2h0Kz1ofWVsc2V7aCo9Ty50ZXh0SFNjYWxlO08udHJhbnNsYXRlVGV4dE1hdHJpeChoLDApO3Uud2lkdGgrPWh9aCYmKHUucHJldlRyYW5zZm9ybT1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpKTtjb25zdCBkPXMudW5pY29kZTtzYXZlTGFzdENoYXIoZCkmJnUuc3RyLnB1c2goIiAiKTt1LnN0ci5wdXNoKGQpO2MmJihhLnZlcnRpY2FsP08udHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1jKTpPLnRyYW5zbGF0ZVRleHRNYXRyaXgoYypPLnRleHRIU2NhbGUsMCkpfX1mdW5jdGlvbiBhcHBlbmRFT0woKXtyZXNldExhc3RDaGFycygpO2lmKGYuaW5pdGlhbGl6ZWQpe2YuaGFzRU9MPSEwO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCl9ZWxzZSBkLml0ZW1zLnB1c2goe3N0cjoiIixkaXI6Imx0ciIsd2lkdGg6MCxoZWlnaHQ6MCx0cmFuc2Zvcm06Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxmb250TmFtZTpPLmxvYWRlZE5hbWUsaGFzRU9MOiEwfSl9ZnVuY3Rpb24gYWRkRmFrZVNwYWNlcyhlLHQsYSl7aWYoYSpmLnNwYWNlSW5GbG93TWluPD1lJiZlPD1hKmYuc3BhY2VJbkZsb3dNYXgpe2lmKGYuaW5pdGlhbGl6ZWQpe3Jlc2V0TGFzdENoYXJzKCk7Zi5zdHIucHVzaCgiICIpfXJldHVybiExfWNvbnN0IHI9Zi5mb250TmFtZTtsZXQgaT0wO2lmKGYudmVydGljYWwpe2k9ZTtlPTB9Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXNldExhc3RDaGFycygpO3B1c2hXaGl0ZXNwYWNlKHt3aWR0aDpNYXRoLmFicyhlKSxoZWlnaHQ6TWF0aC5hYnMoaSksdHJhbnNmb3JtOnR8fGdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCksZm9udE5hbWU6cn0pO3JldHVybiEwfWZ1bmN0aW9uIGZsdXNoVGV4dENvbnRlbnRJdGVtKCl7aWYoZi5pbml0aWFsaXplZCYmZi5zdHIpe2YudmVydGljYWw/Zi50b3RhbEhlaWdodCs9Zi5oZWlnaHQqZi50ZXh0QWR2YW5jZVNjYWxlOmYudG90YWxXaWR0aCs9Zi53aWR0aCpmLnRleHRBZHZhbmNlU2NhbGU7ZC5pdGVtcy5wdXNoKGZ1bmN0aW9uIHJ1bkJpZGlUcmFuc2Zvcm0oZSl7bGV0IHQ9ZS5zdHIuam9pbigiIik7dXx8KHQ9KDAsci5ub3JtYWxpemVVbmljb2RlKSh0KSk7Y29uc3QgYT0oMCxiLmJpZGkpKHQsLTEsZS52ZXJ0aWNhbCk7cmV0dXJue3N0cjphLnN0cixkaXI6YS5kaXIsd2lkdGg6TWF0aC5hYnMoZS50b3RhbFdpZHRoKSxoZWlnaHQ6TWF0aC5hYnMoZS50b3RhbEhlaWdodCksdHJhbnNmb3JtOmUudHJhbnNmb3JtLGZvbnROYW1lOmUuZm9udE5hbWUsaGFzRU9MOmUuaGFzRU9MfX0oZikpO2YuaW5pdGlhbGl6ZWQ9ITE7Zi5zdHIubGVuZ3RoPTB9fWZ1bmN0aW9uIGVucXVldWVDaHVuayhlPSExKXtjb25zdCB0PWQuaXRlbXMubGVuZ3RoO2lmKDAhPT10JiYhKGUmJnQ8MTApKXtvLmVucXVldWUoZCx0KTtkLml0ZW1zPVtdO2Quc3R5bGVzPU9iamVjdC5jcmVhdGUobnVsbCl9fWNvbnN0IFQ9bmV3IFRpbWVTbG90TWFuYWdlcjtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uIHByb21pc2VCb2R5KGUsZil7Y29uc3QgbmV4dD1mdW5jdGlvbih0KXtlbnF1ZXVlQ2h1bmsoITApO1Byb21pc2UuYWxsKFt0LG8ucmVhZHldKS50aGVuKChmdW5jdGlvbigpe3RyeXtwcm9taXNlQm9keShlLGYpfWNhdGNoKGUpe2YoZSl9fSksZil9O3QuZW5zdXJlTm90VGVybWluYXRlZCgpO1QucmVzZXQoKTtjb25zdCBnPXt9O2xldCBwLGI9W107Zm9yKDshKHA9VC5jaGVjaygpKTspe2IubGVuZ3RoPTA7Zy5hcmdzPWI7aWYoIUYucmVhZChnKSlicmVhaztjb25zdCBlPU87Tz1pLnN0YXRlO2NvbnN0IGY9Zy5mbjtiPWcuYXJncztzd2l0Y2goMHxmKXtjYXNlIHIuT1BTLnNldEZvbnQ6dmFyIHk9YlswXS5uYW1lLE09YlsxXTtpZihPLmZvbnQmJnk9PT1PLmZvbnROYW1lJiZNPT09Ty5mb250U2l6ZSlicmVhaztmbHVzaFRleHRDb250ZW50SXRlbSgpO08uZm9udE5hbWU9eTtPLmZvbnRTaXplPU07bmV4dChoYW5kbGVTZXRGb250KHksbnVsbCkpO3JldHVybjtjYXNlIHIuT1BTLnNldFRleHRSaXNlOk8udGV4dFJpc2U9YlswXTticmVhaztjYXNlIHIuT1BTLnNldEhTY2FsZTpPLnRleHRIU2NhbGU9YlswXS8xMDA7YnJlYWs7Y2FzZSByLk9QUy5zZXRMZWFkaW5nOk8ubGVhZGluZz1iWzBdO2JyZWFrO2Nhc2Ugci5PUFMubW92ZVRleHQ6Ty50cmFuc2xhdGVUZXh0TGluZU1hdHJpeChiWzBdLGJbMV0pO08udGV4dE1hdHJpeD1PLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7YnJlYWs7Y2FzZSByLk9QUy5zZXRMZWFkaW5nTW92ZVRleHQ6Ty5sZWFkaW5nPS1iWzFdO08udHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoYlswXSxiWzFdKTtPLnRleHRNYXRyaXg9Ty50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2JyZWFrO2Nhc2Ugci5PUFMubmV4dExpbmU6Ty5jYXJyaWFnZVJldHVybigpO2JyZWFrO2Nhc2Ugci5PUFMuc2V0VGV4dE1hdHJpeDpPLnNldFRleHRNYXRyaXgoYlswXSxiWzFdLGJbMl0sYlszXSxiWzRdLGJbNV0pO08uc2V0VGV4dExpbmVNYXRyaXgoYlswXSxiWzFdLGJbMl0sYlszXSxiWzRdLGJbNV0pO3VwZGF0ZUFkdmFuY2VTY2FsZSgpO2JyZWFrO2Nhc2Ugci5PUFMuc2V0Q2hhclNwYWNpbmc6Ty5jaGFyU3BhY2luZz1iWzBdO2JyZWFrO2Nhc2Ugci5PUFMuc2V0V29yZFNwYWNpbmc6Ty53b3JkU3BhY2luZz1iWzBdO2JyZWFrO2Nhc2Ugci5PUFMuYmVnaW5UZXh0Ok8udGV4dE1hdHJpeD1yLklERU5USVRZX01BVFJJWC5zbGljZSgpO08udGV4dExpbmVNYXRyaXg9ci5JREVOVElUWV9NQVRSSVguc2xpY2UoKTticmVhaztjYXNlIHIuT1BTLnNob3dTcGFjZWRUZXh0OmlmKCFpLnN0YXRlLmZvbnQpe3cuZW5zdXJlU3RhdGVGb250KGkuc3RhdGUpO2NvbnRpbnVlfWNvbnN0IGY9KE8uZm9udC52ZXJ0aWNhbD8xOi0xKSpPLmZvbnRTaXplLzFlMyxnPWJbMF07Zm9yKGxldCBlPTAsdD1nLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PWdbZV07aWYoInN0cmluZyI9PXR5cGVvZiB0KXgucHVzaCh0KTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgdCYmMCE9PXQpe2NvbnN0IGU9eC5qb2luKCIiKTt4Lmxlbmd0aD0wO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzp0KmZ9KX19aWYoeC5sZW5ndGg+MCl7Y29uc3QgZT14LmpvaW4oIiIpO3gubGVuZ3RoPTA7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmUsZXh0cmFTcGFjaW5nOjB9KX1icmVhaztjYXNlIHIuT1BTLnNob3dUZXh0OmlmKCFpLnN0YXRlLmZvbnQpe3cuZW5zdXJlU3RhdGVGb250KGkuc3RhdGUpO2NvbnRpbnVlfWJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczpiWzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSByLk9QUy5uZXh0TGluZVNob3dUZXh0OmlmKCFpLnN0YXRlLmZvbnQpe3cuZW5zdXJlU3RhdGVGb250KGkuc3RhdGUpO2NvbnRpbnVlfU8uY2FycmlhZ2VSZXR1cm4oKTtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6YlswXSxleHRyYVNwYWNpbmc6MH0pO2JyZWFrO2Nhc2Ugci5PUFMubmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQ6aWYoIWkuc3RhdGUuZm9udCl7dy5lbnN1cmVTdGF0ZUZvbnQoaS5zdGF0ZSk7Y29udGludWV9Ty53b3JkU3BhY2luZz1iWzBdO08uY2hhclNwYWNpbmc9YlsxXTtPLmNhcnJpYWdlUmV0dXJuKCk7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmJbMl0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIHIuT1BTLnBhaW50WE9iamVjdDpmbHVzaFRleHRDb250ZW50SXRlbSgpO0N8fChDPWEuZ2V0KCJYT2JqZWN0Iil8fG4uRGljdC5lbXB0eSk7dmFyIEU9YlswXWluc3RhbmNlb2Ygbi5OYW1lLEQ9YlswXS5uYW1lO2lmKEUmJmsuZ2V0QnlOYW1lKEQpKWJyZWFrO25leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsZCl7aWYoIUUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlhPYmplY3QgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2xldCBmPUMuZ2V0UmF3KEQpO2lmKGYgaW5zdGFuY2VvZiBuLlJlZil7aWYoay5nZXRCeVJlZihmKSl7ZSgpO3JldHVybn1pZih3Lmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShmLHcucGFnZUluZGV4KSl7ZSgpO3JldHVybn1mPVMuZmV0Y2goZil9aWYoIShmIGluc3RhbmNlb2YgbS5CYXNlU3RyZWFtKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgYmUgYSBzdHJlYW0iKTtjb25zdCBnPWYuZGljdC5nZXQoIlN1YnR5cGUiKTtpZighKGcgaW5zdGFuY2VvZiBuLk5hbWUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBoYXZlIGEgTmFtZSBzdWJ0eXBlIik7aWYoIkZvcm0iIT09Zy5uYW1lKXtrLnNldChELGYuZGljdC5vYmpJZCwhMCk7ZSgpO3JldHVybn1jb25zdCBwPWkuc3RhdGUuY2xvbmUoKSxiPW5ldyBTdGF0ZU1hbmFnZXIocCkseT1mLmRpY3QuZ2V0QXJyYXkoIk1hdHJpeCIpO0FycmF5LmlzQXJyYXkoeSkmJjY9PT15Lmxlbmd0aCYmYi50cmFuc2Zvcm0oeSk7ZW5xdWV1ZUNodW5rKCk7Y29uc3QgeD17ZW5xdWV1ZUludm9rZWQ6ITEsZW5xdWV1ZShlLHQpe3RoaXMuZW5xdWV1ZUludm9rZWQ9ITA7by5lbnF1ZXVlKGUsdCl9LGdldCBkZXNpcmVkU2l6ZSgpe3JldHVybiBvLmRlc2lyZWRTaXplfSxnZXQgcmVhZHkoKXtyZXR1cm4gby5yZWFkeX19O3cuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTpmLHRhc2s6dCxyZXNvdXJjZXM6Zi5kaWN0LmdldCgiUmVzb3VyY2VzIil8fGEsc3RhdGVNYW5hZ2VyOmIsaW5jbHVkZU1hcmtlZENvbnRlbnQ6cyxzaW5rOngsc2VlblN0eWxlczpjLHZpZXdCb3g6bCxtYXJrZWRDb250ZW50RGF0YTpoLGRpc2FibGVOb3JtYWxpemF0aW9uOnV9KS50aGVuKChmdW5jdGlvbigpe3guZW5xdWV1ZUludm9rZWR8fGsuc2V0KEQsZi5kaWN0Lm9iaklkLCEwKTtlKCl9KSxkKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2Ygci5BYm9ydEV4Y2VwdGlvbikpe2lmKCF3Lm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7KDAsci53YXJuKShgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSByLk9QUy5zZXRHU3RhdGU6RT1iWzBdaW5zdGFuY2VvZiBuLk5hbWU7RD1iWzBdLm5hbWU7aWYoRSYmdi5nZXRCeU5hbWUoRCkpYnJlYWs7bmV4dChuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSx0KXtpZighRSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiR1N0YXRlIG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtjb25zdCBpPWEuZ2V0KCJFeHRHU3RhdGUiKTtpZighKGkgaW5zdGFuY2VvZiBuLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJFeHRHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCBzPWkuZ2V0KEQpO2lmKCEocyBpbnN0YW5jZW9mIG4uRGljdCkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IG89cy5nZXQoIkZvbnQiKTtpZihvKXtmbHVzaFRleHRDb250ZW50SXRlbSgpO08uZm9udE5hbWU9bnVsbDtPLmZvbnRTaXplPW9bMV07aGFuZGxlU2V0Rm9udChudWxsLG9bMF0pLnRoZW4oZSx0KX1lbHNle3Yuc2V0KEQscy5vYmpJZCwhMCk7ZSgpfX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2Ygci5BYm9ydEV4Y2VwdGlvbikpe2lmKCF3Lm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7KDAsci53YXJuKShgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICIke2V9Ii5gKX19KSkpO3JldHVybjtjYXNlIHIuT1BTLmJlZ2luTWFya2VkQ29udGVudDpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKHMpe2gubGV2ZWwrKztkLml0ZW1zLnB1c2goe3R5cGU6ImJlZ2luTWFya2VkQ29udGVudCIsdGFnOmJbMF1pbnN0YW5jZW9mIG4uTmFtZT9iWzBdLm5hbWU6bnVsbH0pfWJyZWFrO2Nhc2Ugci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtpZihzKXtoLmxldmVsKys7bGV0IGU9bnVsbDtiWzFdaW5zdGFuY2VvZiBuLkRpY3QmJihlPWJbMV0uZ2V0KCJNQ0lEIikpO2QuaXRlbXMucHVzaCh7dHlwZToiYmVnaW5NYXJrZWRDb250ZW50UHJvcHMiLGlkOk51bWJlci5pc0ludGVnZXIoZSk/YCR7dy5pZEZhY3RvcnkuZ2V0UGFnZU9iaklkKCl9X21jJHtlfWA6bnVsbCx0YWc6YlswXWluc3RhbmNlb2Ygbi5OYW1lP2JbMF0ubmFtZTpudWxsfSl9YnJlYWs7Y2FzZSByLk9QUy5lbmRNYXJrZWRDb250ZW50OmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYocyl7aWYoMD09PWgubGV2ZWwpYnJlYWs7aC5sZXZlbC0tO2QuaXRlbXMucHVzaCh7dHlwZToiZW5kTWFya2VkQ29udGVudCJ9KX1icmVhaztjYXNlIHIuT1BTLnJlc3RvcmU6IWV8fGUuZm9udD09PU8uZm9udCYmZS5mb250U2l6ZT09PU8uZm9udFNpemUmJmUuZm9udE5hbWU9PT1PLmZvbnROYW1lfHxmbHVzaFRleHRDb250ZW50SXRlbSgpfWlmKGQuaXRlbXMubGVuZ3RoPj1vLmRlc2lyZWRTaXplKXtwPSEwO2JyZWFrfX1pZihwKW5leHQoTCk7ZWxzZXtmbHVzaFRleHRDb250ZW50SXRlbSgpO2VucXVldWVDaHVuaygpO2UoKX19KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTsoMCxyLndhcm4pKGBnZXRUZXh0Q29udGVudCAtIGlnbm9yaW5nIGVycm9ycyBkdXJpbmcgIiR7dC5uYW1lfSIgdGFzazogIiR7ZX0iLmApO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7ZW5xdWV1ZUNodW5rKCl9fSkpfWV4dHJhY3REYXRhU3RydWN0dXJlcyhlLHQsYSl7Y29uc3QgaT10aGlzLnhyZWY7bGV0IHM7Y29uc3QgbD10aGlzLnJlYWRUb1VuaWNvZGUoYS50b1VuaWNvZGV8fGUuZ2V0KCJUb1VuaWNvZGUiKXx8dC5nZXQoIlRvVW5pY29kZSIpKTtpZihhLmNvbXBvc2l0ZSl7Y29uc3QgdD1lLmdldCgiQ0lEU3lzdGVtSW5mbyIpO3QgaW5zdGFuY2VvZiBuLkRpY3QmJihhLmNpZFN5c3RlbUluZm89e3JlZ2lzdHJ5OigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKHQuZ2V0KCJSZWdpc3RyeSIpKSxvcmRlcmluZzooMCxyLnN0cmluZ1RvUERGU3RyaW5nKSh0LmdldCgiT3JkZXJpbmciKSksc3VwcGxlbWVudDp0LmdldCgiU3VwcGxlbWVudCIpfSk7dHJ5e2NvbnN0IHQ9ZS5nZXQoIkNJRFRvR0lETWFwIik7dCBpbnN0YW5jZW9mIG0uQmFzZVN0cmVhbSYmKHM9dC5nZXRCeXRlcygpKX1jYXRjaChlKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGV4dHJhY3REYXRhU3RydWN0dXJlcyAtIGlnbm9yaW5nIENJRFRvR0lETWFwIGRhdGE6ICIke2V9Ii5gKX19Y29uc3QgaD1bXTtsZXQgdSxkPW51bGw7aWYoZS5oYXMoIkVuY29kaW5nIikpe3U9ZS5nZXQoIkVuY29kaW5nIik7aWYodSBpbnN0YW5jZW9mIG4uRGljdCl7ZD11LmdldCgiQmFzZUVuY29kaW5nIik7ZD1kIGluc3RhbmNlb2Ygbi5OYW1lP2QubmFtZTpudWxsO2lmKHUuaGFzKCJEaWZmZXJlbmNlcyIpKXtjb25zdCBlPXUuZ2V0KCJEaWZmZXJlbmNlcyIpO2xldCB0PTA7Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT1pLmZldGNoSWZSZWYoYSk7aWYoIm51bWJlciI9PXR5cGVvZiBlKXQ9ZTtlbHNle2lmKCEoZSBpbnN0YW5jZW9mIG4uTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgZW50cnkgaW4gJ0RpZmZlcmVuY2VzJyBhcnJheTogJHtlfWApO2hbdCsrXT1lLm5hbWV9fX19ZWxzZSBpZih1IGluc3RhbmNlb2Ygbi5OYW1lKWQ9dS5uYW1lO2Vsc2V7Y29uc3QgZT0iRW5jb2RpbmcgaXMgbm90IGEgTmFtZSBub3IgYSBEaWN0IjtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihlKTsoMCxyLndhcm4pKGUpfSJNYWNSb21hbkVuY29kaW5nIiE9PWQmJiJNYWNFeHBlcnRFbmNvZGluZyIhPT1kJiYiV2luQW5zaUVuY29kaW5nIiE9PWQmJihkPW51bGwpfWNvbnN0IGY9IWEuZmlsZXx8YS5pc0ludGVybmFsRm9udDtkJiZmJiYoMCxjLmdldFN5bWJvbHNGb250cykoKVthLm5hbWVdJiYoZD1udWxsKTtpZihkKWEuZGVmYXVsdEVuY29kaW5nPSgwLG8uZ2V0RW5jb2RpbmcpKGQpO2Vsc2V7Y29uc3QgZT0hIShhLmZsYWdzJlMuRm9udEZsYWdzLlN5bWJvbGljKSx0PSEhKGEuZmxhZ3MmUy5Gb250RmxhZ3MuTm9uc3ltYm9saWMpO3U9by5TdGFuZGFyZEVuY29kaW5nOyJUcnVlVHlwZSIhPT1hLnR5cGV8fHR8fCh1PW8uV2luQW5zaUVuY29kaW5nKTtpZihlKXt1PW8uTWFjUm9tYW5FbmNvZGluZztmJiYoL1N5bWJvbC9pLnRlc3QoYS5uYW1lKT91PW8uU3ltYm9sU2V0RW5jb2Rpbmc6L0RpbmdiYXRzL2kudGVzdChhLm5hbWUpP3U9by5aYXBmRGluZ2JhdHNFbmNvZGluZzovV2luZ2RpbmdzL2kudGVzdChhLm5hbWUpJiYodT1vLldpbkFuc2lFbmNvZGluZykpfWEuZGVmYXVsdEVuY29kaW5nPXV9YS5kaWZmZXJlbmNlcz1oO2EuYmFzZUVuY29kaW5nTmFtZT1kO2EuaGFzRW5jb2Rpbmc9ISFkfHxoLmxlbmd0aD4wO2EuZGljdD1lO3JldHVybiBsLnRoZW4oKGU9PnthLnRvVW5pY29kZT1lO3JldHVybiB0aGlzLmJ1aWxkVG9Vbmljb2RlKGEpfSkpLnRoZW4oKGU9PnthLnRvVW5pY29kZT1lO3MmJihhLmNpZFRvR2lkTWFwPXRoaXMucmVhZENpZFRvR2lkTWFwKHMsZSkpO3JldHVybiBhfSkpfV9zaW1wbGVGb250VG9Vbmljb2RlKGUsdD0hMSl7KDAsci5hc3NlcnQpKCFlLmNvbXBvc2l0ZSwiTXVzdCBiZSBhIHNpbXBsZSBmb250LiIpO2NvbnN0IGE9W10saT1lLmRlZmF1bHRFbmNvZGluZy5zbGljZSgpLG49ZS5iYXNlRW5jb2RpbmdOYW1lLHM9ZS5kaWZmZXJlbmNlcztmb3IoY29uc3QgZSBpbiBzKXtjb25zdCB0PXNbZV07Ii5ub3RkZWYiIT09dCYmKGlbZV09dCl9Y29uc3QgYz0oMCxDLmdldEdseXBoc1VuaWNvZGUpKCk7Zm9yKGNvbnN0IHIgaW4gaSl7bGV0IHM9aVtyXTtpZigiIj09PXMpY29udGludWU7bGV0IGw9Y1tzXTtpZih2b2lkIDAhPT1sKXthW3JdPVN0cmluZy5mcm9tQ2hhckNvZGUobCk7Y29udGludWV9bGV0IGg9MDtzd2l0Y2goc1swXSl7Y2FzZSJHIjozPT09cy5sZW5ndGgmJihoPXBhcnNlSW50KHMuc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJnIjo1PT09cy5sZW5ndGgmJihoPXBhcnNlSW50KHMuc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJDIjpjYXNlImMiOmlmKHMubGVuZ3RoPj0zJiZzLmxlbmd0aDw9NCl7Y29uc3QgYT1zLnN1YnN0cmluZygxKTtpZih0KXtoPXBhcnNlSW50KGEsMTYpO2JyZWFrfWg9K2E7aWYoTnVtYmVyLmlzTmFOKGgpJiZOdW1iZXIuaXNJbnRlZ2VyKHBhcnNlSW50KGEsMTYpKSlyZXR1cm4gdGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlLCEwKX1icmVhaztjYXNlInUiOmw9KDAsRi5nZXRVbmljb2RlRm9yR2x5cGgpKHMsYyk7LTEhPT1sJiYoaD1sKTticmVhaztkZWZhdWx0OnN3aXRjaChzKXtjYXNlImZfaCI6Y2FzZSJmX3QiOmNhc2UiVF9oIjphW3JdPXMucmVwbGFjZUFsbCgiXyIsIiIpO2NvbnRpbnVlfX1pZihoPjAmJmg8PTExMTQxMTEmJk51bWJlci5pc0ludGVnZXIoaCkpe2lmKG4mJmg9PT0rcil7Y29uc3QgZT0oMCxvLmdldEVuY29kaW5nKShuKTtpZihlJiYocz1lW3JdKSl7YVtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGNbc10pO2NvbnRpbnVlfX1hW3JdPVN0cmluZy5mcm9tQ29kZVBvaW50KGgpfX1yZXR1cm4gYX1hc3luYyBidWlsZFRvVW5pY29kZShlKXtlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwPWUudG9Vbmljb2RlPy5sZW5ndGg+MDtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXshZS5jb21wb3NpdGUmJmUuaGFzRW5jb2RpbmcmJihlLmZhbGxiYWNrVG9Vbmljb2RlPXRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO3JldHVybiBlLnRvVW5pY29kZX1pZighZS5jb21wb3NpdGUpcmV0dXJuIG5ldyB1LlRvVW5pY29kZU1hcCh0aGlzLl9zaW1wbGVGb250VG9Vbmljb2RlKGUpKTtpZihlLmNvbXBvc2l0ZSYmKGUuY01hcC5idWlsdEluQ01hcCYmIShlLmNNYXAgaW5zdGFuY2VvZiBpLklkZW50aXR5Q01hcCl8fCJBZG9iZSI9PT1lLmNpZFN5c3RlbUluZm8ucmVnaXN0cnkmJigiR0IxIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IkNOUzEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiSmFwYW4xIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IktvcmVhMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmcpKSl7Y29uc3R7cmVnaXN0cnk6dCxvcmRlcmluZzphfT1lLmNpZFN5c3RlbUluZm8scz1uLk5hbWUuZ2V0KGAke3R9LSR7YX0tVUNTMmApLG89YXdhaXQgaS5DTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOnMsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSksYz1bXSxsPVtdO2UuY01hcC5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2lmKHQ+NjU1MzUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk1heCBzaXplIG9mIENJRCBpcyA2NSw1MzUiKTtjb25zdCBhPW8ubG9va3VwKHQpO2lmKGEpe2wubGVuZ3RoPTA7Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSs9MilsLnB1c2goKGEuY2hhckNvZGVBdChlKTw8OCkrYS5jaGFyQ29kZUF0KGUrMSkpO2NbZV09U3RyaW5nLmZyb21DaGFyQ29kZSguLi5sKX19KSk7cmV0dXJuIG5ldyB1LlRvVW5pY29kZU1hcChjKX1yZXR1cm4gbmV3IHUuSWRlbnRpdHlUb1VuaWNvZGVNYXAoZS5maXJzdENoYXIsZS5sYXN0Q2hhcil9cmVhZFRvVW5pY29kZShlKXtyZXR1cm4gZT9lIGluc3RhbmNlb2Ygbi5OYW1lP2kuQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgaS5JZGVudGl0eUNNYXA/bmV3IHUuSWRlbnRpdHlUb1VuaWNvZGVNYXAoMCw2NTUzNSk6bmV3IHUuVG9Vbmljb2RlTWFwKGUuZ2V0TWFwKCkpfSkpOmUgaW5zdGFuY2VvZiBtLkJhc2VTdHJlYW0/aS5DTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSkudGhlbigoZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIGkuSWRlbnRpdHlDTWFwKXJldHVybiBuZXcgdS5JZGVudGl0eVRvVW5pY29kZU1hcCgwLDY1NTM1KTtjb25zdCB0PW5ldyBBcnJheShlLmxlbmd0aCk7ZS5mb3JFYWNoKChmdW5jdGlvbihlLGEpe2lmKCJudW1iZXIiPT10eXBlb2YgYSl7dFtlXT1TdHJpbmcuZnJvbUNvZGVQb2ludChhKTtyZXR1cm59Y29uc3Qgcj1bXTtmb3IobGV0IGU9MDtlPGEubGVuZ3RoO2UrPTIpe2NvbnN0IHQ9YS5jaGFyQ29kZUF0KGUpPDw4fGEuY2hhckNvZGVBdChlKzEpO2lmKDU1Mjk2IT0oNjM0ODgmdCkpe3IucHVzaCh0KTtjb250aW51ZX1lKz0yO2NvbnN0IGk9YS5jaGFyQ29kZUF0KGUpPDw4fGEuY2hhckNvZGVBdChlKzEpO3IucHVzaCgoKDEwMjMmdCk8PDEwKSsoMTAyMyZpKSs2NTUzNil9dFtlXT1TdHJpbmcuZnJvbUNvZGVQb2ludCguLi5yKX0pKTtyZXR1cm4gbmV3IHUuVG9Vbmljb2RlTWFwKHQpfSksKGU9PntpZihlIGluc3RhbmNlb2Ygci5BYm9ydEV4Y2VwdGlvbilyZXR1cm4gbnVsbDtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXsoMCxyLndhcm4pKGByZWFkVG9Vbmljb2RlIC0gaWdub3JpbmcgVG9Vbmljb2RlIGRhdGE6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH10aHJvdyBlfSkpOlByb21pc2UucmVzb2x2ZShudWxsKTpQcm9taXNlLnJlc29sdmUobnVsbCl9cmVhZENpZFRvR2lkTWFwKGUsdCl7Y29uc3QgYT1bXTtmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspe2NvbnN0IGk9ZVtyKytdPDw4fGVbcl0sbj1yPj4xOygwIT09aXx8dC5oYXMobikpJiYoYVtuXT1pKX1yZXR1cm4gYX1leHRyYWN0V2lkdGhzKGUsdCxhKXtjb25zdCByPXRoaXMueHJlZjtsZXQgaT1bXSxzPTA7Y29uc3Qgbz1bXTtsZXQgYyxsLGgsdSxkLGYsZyxwO2lmKGEuY29tcG9zaXRlKXtzPWUuaGFzKCJEVyIpP2UuZ2V0KCJEVyIpOjFlMztwPWUuZ2V0KCJXIik7aWYocClmb3IobD0wLGg9cC5sZW5ndGg7bDxoO2wrKyl7Zj1yLmZldGNoSWZSZWYocFtsKytdKTtnPXIuZmV0Y2hJZlJlZihwW2xdKTtpZihBcnJheS5pc0FycmF5KGcpKWZvcih1PTAsZD1nLmxlbmd0aDt1PGQ7dSsrKWlbZisrXT1yLmZldGNoSWZSZWYoZ1t1XSk7ZWxzZXtjb25zdCBlPXIuZmV0Y2hJZlJlZihwWysrbF0pO2Zvcih1PWY7dTw9Zzt1KyspaVt1XT1lfX1pZihhLnZlcnRpY2FsKXtsZXQgdD1lLmdldEFycmF5KCJEVzIiKXx8Wzg4MCwtMWUzXTtjPVt0WzFdLC41KnMsdFswXV07dD1lLmdldCgiVzIiKTtpZih0KWZvcihsPTAsaD10Lmxlbmd0aDtsPGg7bCsrKXtmPXIuZmV0Y2hJZlJlZih0W2wrK10pO2c9ci5mZXRjaElmUmVmKHRbbF0pO2lmKEFycmF5LmlzQXJyYXkoZykpZm9yKHU9MCxkPWcubGVuZ3RoO3U8ZDt1Kyspb1tmKytdPVtyLmZldGNoSWZSZWYoZ1t1KytdKSxyLmZldGNoSWZSZWYoZ1t1KytdKSxyLmZldGNoSWZSZWYoZ1t1XSldO2Vsc2V7Y29uc3QgZT1bci5mZXRjaElmUmVmKHRbKytsXSksci5mZXRjaElmUmVmKHRbKytsXSksci5mZXRjaElmUmVmKHRbKytsXSldO2Zvcih1PWY7dTw9Zzt1Kyspb1t1XT1lfX19fWVsc2V7Y29uc3Qgbz1hLmZpcnN0Q2hhcjtwPWUuZ2V0KCJXaWR0aHMiKTtpZihwKXt1PW87Zm9yKGw9MCxoPXAubGVuZ3RoO2w8aDtsKyspaVt1KytdPXIuZmV0Y2hJZlJlZihwW2xdKTtzPXBhcnNlRmxvYXQodC5nZXQoIk1pc3NpbmdXaWR0aCIpKXx8MH1lbHNle2NvbnN0IHQ9ZS5nZXQoIkJhc2VGb250Iik7aWYodCBpbnN0YW5jZW9mIG4uTmFtZSl7Y29uc3QgZT10aGlzLmdldEJhc2VGb250TWV0cmljcyh0Lm5hbWUpO2k9dGhpcy5idWlsZENoYXJDb2RlVG9XaWR0aChlLndpZHRocyxhKTtzPWUuZGVmYXVsdFdpZHRofX19bGV0IG09ITAsYj1zO2Zvcihjb25zdCBlIGluIGkpe2NvbnN0IHQ9aVtlXTtpZih0KWlmKGIpe2lmKGIhPT10KXttPSExO2JyZWFrfX1lbHNlIGI9dH1tP2EuZmxhZ3N8PVMuRm9udEZsYWdzLkZpeGVkUGl0Y2g6YS5mbGFncyY9flMuRm9udEZsYWdzLkZpeGVkUGl0Y2g7YS5kZWZhdWx0V2lkdGg9czthLndpZHRocz1pO2EuZGVmYXVsdFZNZXRyaWNzPWM7YS52bWV0cmljcz1vfWlzU2VyaWZGb250KGUpe2NvbnN0IHQ9ZS5zcGxpdCgiLSIpWzBdO3JldHVybiB0IGluKDAsYy5nZXRTZXJpZkZvbnRzKSgpfHwvc2VyaWYvZ2kudGVzdCh0KX1nZXRCYXNlRm9udE1ldHJpY3MoZSl7bGV0IHQ9MCxhPU9iamVjdC5jcmVhdGUobnVsbCkscj0hMTtsZXQgaT0oMCxjLmdldFN0ZEZvbnRNYXApKClbZV18fGU7Y29uc3Qgbj0oMCx2LmdldE1ldHJpY3MpKCk7aSBpbiBufHwoaT10aGlzLmlzU2VyaWZGb250KGUpPyJUaW1lcy1Sb21hbiI6IkhlbHZldGljYSIpO2NvbnN0IHM9bltpXTtpZigibnVtYmVyIj09dHlwZW9mIHMpe3Q9cztyPSEwfWVsc2UgYT1zKCk7cmV0dXJue2RlZmF1bHRXaWR0aDp0LG1vbm9zcGFjZTpyLHdpZHRoczphfX1idWlsZENoYXJDb2RlVG9XaWR0aChlLHQpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPXQuZGlmZmVyZW5jZXMsaT10LmRlZmF1bHRFbmNvZGluZztmb3IobGV0IHQ9MDt0PDI1Njt0KyspdCBpbiByJiZlW3JbdF1dP2FbdF09ZVtyW3RdXTp0IGluIGkmJmVbaVt0XV0mJihhW3RdPWVbaVt0XV0pO3JldHVybiBhfXByZUV2YWx1YXRlRm9udChlKXtjb25zdCB0PWU7bGV0IGE9ZS5nZXQoIlN1YnR5cGUiKTtpZighKGEgaW5zdGFuY2VvZiBuLk5hbWUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgU3VidHlwZSIpO2xldCBpLHMsbz0hMTtpZigiVHlwZTAiPT09YS5uYW1lKXtjb25zdCB0PWUuZ2V0KCJEZXNjZW5kYW50Rm9udHMiKTtpZighdCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRGVzY2VuZGFudCBmb250cyBhcmUgbm90IHNwZWNpZmllZCIpO2lmKCEoKGU9QXJyYXkuaXNBcnJheSh0KT90aGlzLnhyZWYuZmV0Y2hJZlJlZih0WzBdKTp0KWluc3RhbmNlb2Ygbi5EaWN0KSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRGVzY2VuZGFudCBmb250IGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7YT1lLmdldCgiU3VidHlwZSIpO2lmKCEoYSBpbnN0YW5jZW9mIG4uTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBTdWJ0eXBlIik7bz0hMH1jb25zdCBjPWUuZ2V0KCJGaXJzdENoYXIiKXx8MCxsPWUuZ2V0KCJMYXN0Q2hhciIpfHwobz82NTUzNToyNTUpLGg9ZS5nZXQoIkZvbnREZXNjcmlwdG9yIik7aWYoaCl7aT1uZXcgVC5NdXJtdXJIYXNoM182NDtjb25zdCBhPXQuZ2V0UmF3KCJFbmNvZGluZyIpO2lmKGEgaW5zdGFuY2VvZiBuLk5hbWUpaS51cGRhdGUoYS5uYW1lKTtlbHNlIGlmKGEgaW5zdGFuY2VvZiBuLlJlZilpLnVwZGF0ZShhLnRvU3RyaW5nKCkpO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIG4uRGljdClmb3IoY29uc3QgZSBvZiBhLmdldFJhd1ZhbHVlcygpKWlmKGUgaW5zdGFuY2VvZiBuLk5hbWUpaS51cGRhdGUoZS5uYW1lKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBuLlJlZilpLnVwZGF0ZShlLnRvU3RyaW5nKCkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3QgdD1lLmxlbmd0aCxhPW5ldyBBcnJheSh0KTtmb3IobGV0IHI9MDtyPHQ7cisrKXtjb25zdCB0PWVbcl07dCBpbnN0YW5jZW9mIG4uTmFtZT9hW3JdPXQubmFtZTooIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2Ygbi5SZWYpJiYoYVtyXT10LnRvU3RyaW5nKCkpfWkudXBkYXRlKGEuam9pbigpKX1pLnVwZGF0ZShgJHtjfS0ke2x9YCk7cz1lLmdldCgiVG9Vbmljb2RlIil8fHQuZ2V0KCJUb1VuaWNvZGUiKTtpZihzIGluc3RhbmNlb2YgbS5CYXNlU3RyZWFtKXtjb25zdCBlPXMuc3RyfHxzLHQ9ZS5idWZmZXI/bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIuYnVmZmVyLDAsZS5idWZmZXJMZW5ndGgpOm5ldyBVaW50OEFycmF5KGUuYnl0ZXMuYnVmZmVyLGUuc3RhcnQsZS5lbmQtZS5zdGFydCk7aS51cGRhdGUodCl9ZWxzZSBzIGluc3RhbmNlb2Ygbi5OYW1lJiZpLnVwZGF0ZShzLm5hbWUpO2NvbnN0IHI9ZS5nZXQoIldpZHRocyIpfHx0LmdldCgiV2lkdGhzIik7aWYoQXJyYXkuaXNBcnJheShyKSl7Y29uc3QgZT1bXTtmb3IoY29uc3QgdCBvZiByKSgibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBuLlJlZikmJmUucHVzaCh0LnRvU3RyaW5nKCkpO2kudXBkYXRlKGUuam9pbigpKX1pZihvKXtpLnVwZGF0ZSgiY29tcG9zaXRlRm9udCIpO2NvbnN0IGE9ZS5nZXQoIlciKXx8dC5nZXQoIlciKTtpZihBcnJheS5pc0FycmF5KGEpKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIGEpaWYoIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2Ygbi5SZWYpZS5wdXNoKHQudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBhPVtdO2Zvcihjb25zdCBlIG9mIHQpKCJudW1iZXIiPT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIG4uUmVmKSYmYS5wdXNoKGUudG9TdHJpbmcoKSk7ZS5wdXNoKGBbJHthLmpvaW4oKX1dYCl9aS51cGRhdGUoZS5qb2luKCkpfWNvbnN0IHI9ZS5nZXRSYXcoIkNJRFRvR0lETWFwIil8fHQuZ2V0UmF3KCJDSURUb0dJRE1hcCIpO3IgaW5zdGFuY2VvZiBuLk5hbWU/aS51cGRhdGUoci5uYW1lKTpyIGluc3RhbmNlb2Ygbi5SZWY/aS51cGRhdGUoci50b1N0cmluZygpKTpyIGluc3RhbmNlb2YgbS5CYXNlU3RyZWFtJiZpLnVwZGF0ZShyLnBlZWtCeXRlcygpKX19cmV0dXJue2Rlc2NyaXB0b3I6aCxkaWN0OmUsYmFzZURpY3Q6dCxjb21wb3NpdGU6byx0eXBlOmEubmFtZSxmaXJzdENoYXI6YyxsYXN0Q2hhcjpsLHRvVW5pY29kZTpzLGhhc2g6aT9pLmhleGRpZ2VzdCgpOiIifX1hc3luYyB0cmFuc2xhdGVGb250KHtkZXNjcmlwdG9yOmUsZGljdDp0LGJhc2VEaWN0OmEsY29tcG9zaXRlOm8sdHlwZTpsLGZpcnN0Q2hhcjp1LGxhc3RDaGFyOmQsdG9Vbmljb2RlOmYsY3NzRm9udEluZm86Z30pe2NvbnN0IG09IlR5cGUzIj09PWw7bGV0IGI7aWYoIWUpe2lmKCFtKXtsZXQgZT10LmdldCgiQmFzZUZvbnQiKTtpZighKGUgaW5zdGFuY2VvZiBuLk5hbWUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJCYXNlIGZvbnQgaXMgbm90IHNwZWNpZmllZCIpO2U9ZS5uYW1lLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpO2NvbnN0IGk9dGhpcy5nZXRCYXNlRm9udE1ldHJpY3MoZSksbz1lLnNwbGl0KCItIilbMF0saD0odGhpcy5pc1NlcmlmRm9udChvKT9TLkZvbnRGbGFncy5TZXJpZjowKXwoaS5tb25vc3BhY2U/Uy5Gb250RmxhZ3MuRml4ZWRQaXRjaDowKXwoKDAsYy5nZXRTeW1ib2xzRm9udHMpKClbb10/Uy5Gb250RmxhZ3MuU3ltYm9saWM6Uy5Gb250RmxhZ3MuTm9uc3ltYm9saWMpO2I9e3R5cGU6bCxuYW1lOmUsbG9hZGVkTmFtZTphLmxvYWRlZE5hbWUsc3lzdGVtRm9udEluZm86bnVsbCx3aWR0aHM6aS53aWR0aHMsZGVmYXVsdFdpZHRoOmkuZGVmYXVsdFdpZHRoLGlzU2ltdWxhdGVkRmxhZ3M6ITAsZmxhZ3M6aCxmaXJzdENoYXI6dSxsYXN0Q2hhcjpkLHRvVW5pY29kZTpmLHhIZWlnaHQ6MCxjYXBIZWlnaHQ6MCxpdGFsaWNBbmdsZTowLGlzVHlwZTNGb250Om19O2NvbnN0IGc9dC5nZXQoIldpZHRocyIpLHA9KDAsYy5nZXRTdGFuZGFyZEZvbnROYW1lKShlKTtsZXQgeT1udWxsO2lmKHApe3k9YXdhaXQgdGhpcy5mZXRjaFN0YW5kYXJkRm9udERhdGEocCk7Yi5pc0ludGVybmFsRm9udD0hIXl9IWIuaXNJbnRlcm5hbEZvbnQmJnRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyYmKGIuc3lzdGVtRm9udEluZm89KDAseC5nZXRGb250U3Vic3RpdHV0aW9uKSh0aGlzLnN5c3RlbUZvbnRDYWNoZSx0aGlzLmlkRmFjdG9yeSx0aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybCxlLHApKTtyZXR1cm4gdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXModCx0LGIpLnRoZW4oKHQ9PntpZihnKXtjb25zdCBlPVtdO2xldCBhPXU7Zm9yKGNvbnN0IHQgb2YgZyllW2ErK109dGhpcy54cmVmLmZldGNoSWZSZWYodCk7dC53aWR0aHM9ZX1lbHNlIHQud2lkdGhzPXRoaXMuYnVpbGRDaGFyQ29kZVRvV2lkdGgoaS53aWR0aHMsdCk7cmV0dXJuIG5ldyBzLkZvbnQoZSx5LHQpfSkpfShlPW5ldyBuLkRpY3QobnVsbCkpLnNldCgiRm9udE5hbWUiLG4uTmFtZS5nZXQobCkpO2Uuc2V0KCJGb250QkJveCIsdC5nZXRBcnJheSgiRm9udEJCb3giKXx8WzAsMCwwLDBdKX1sZXQgeSx3LEMsayx2LEY9ZS5nZXQoIkZvbnROYW1lIiksTz10LmdldCgiQmFzZUZvbnQiKTsic3RyaW5nIj09dHlwZW9mIEYmJihGPW4uTmFtZS5nZXQoRikpOyJzdHJpbmciPT10eXBlb2YgTyYmKE89bi5OYW1lLmdldChPKSk7aWYoIW0pe2NvbnN0IGU9Rj8ubmFtZSx0PU8/Lm5hbWU7aWYoZSE9PXQpeygwLHIuaW5mbykoYFRoZSBGb250RGVzY3JpcHRvcidzIEZvbnROYW1lIGlzICIke2V9IiBidXQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBGb250J3MgQmFzZUZvbnQgIiR7dH0iLmApO2UmJnQ/LnN0YXJ0c1dpdGgoZSkmJihGPU8pfX1GfHw9TztpZighKEYgaW5zdGFuY2VvZiBuLk5hbWUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgbmFtZSIpO3RyeXt5PWUuZ2V0KCJGb250RmlsZSIsIkZvbnRGaWxlMiIsIkZvbnRGaWxlMyIpfWNhdGNoKGUpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7KDAsci53YXJuKShgdHJhbnNsYXRlRm9udCAtIGZldGNoaW5nICIke0YubmFtZX0iIGZvbnQgZmlsZTogIiR7ZX0iLmApO3k9bmV3IHAuTnVsbFN0cmVhbX1sZXQgVD0hMSxNPW51bGwsRT1udWxsO2lmKHkpe2lmKHkuZGljdCl7Y29uc3QgZT15LmRpY3QuZ2V0KCJTdWJ0eXBlIik7ZSBpbnN0YW5jZW9mIG4uTmFtZSYmKHc9ZS5uYW1lKTtDPXkuZGljdC5nZXQoIkxlbmd0aDEiKTtrPXkuZGljdC5nZXQoIkxlbmd0aDIiKTt2PXkuZGljdC5nZXQoIkxlbmd0aDMiKX19ZWxzZSBpZihnKXtjb25zdCBlPSgwLGguZ2V0WGZhRm9udE5hbWUpKEYubmFtZSk7aWYoZSl7Zy5mb250RmFtaWx5PWAke2cuZm9udEZhbWlseX0tUGRmSlMtWEZBYDtnLm1ldHJpY3M9ZS5tZXRyaWNzfHxudWxsO009ZS5mYWN0b3JzfHxudWxsO3k9YXdhaXQgdGhpcy5mZXRjaFN0YW5kYXJkRm9udERhdGEoZS5uYW1lKTtUPSEheTthPXQ9KDAsaC5nZXRYZmFGb250RGljdCkoRi5uYW1lKTtvPSEwfX1lbHNlIGlmKCFtKXtjb25zdCBlPSgwLGMuZ2V0U3RhbmRhcmRGb250TmFtZSkoRi5uYW1lKTtpZihlKXt5PWF3YWl0IHRoaXMuZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUpO1Q9ISF5fSFUJiZ0aGlzLm9wdGlvbnMudXNlU3lzdGVtRm9udHMmJihFPSgwLHguZ2V0Rm9udFN1YnN0aXR1dGlvbikodGhpcy5zeXN0ZW1Gb250Q2FjaGUsdGhpcy5pZEZhY3RvcnksdGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmwsRi5uYW1lLGUpKX1iPXt0eXBlOmwsbmFtZTpGLm5hbWUsc3VidHlwZTp3LGZpbGU6eSxsZW5ndGgxOkMsbGVuZ3RoMjprLGxlbmd0aDM6dixpc0ludGVybmFsRm9udDpULGxvYWRlZE5hbWU6YS5sb2FkZWROYW1lLGNvbXBvc2l0ZTpvLGZpeGVkUGl0Y2g6ITEsZm9udE1hdHJpeDp0LmdldEFycmF5KCJGb250TWF0cml4Iil8fHIuRk9OVF9JREVOVElUWV9NQVRSSVgsZmlyc3RDaGFyOnUsbGFzdENoYXI6ZCx0b1VuaWNvZGU6ZixiYm94OmUuZ2V0QXJyYXkoIkZvbnRCQm94Iil8fHQuZ2V0QXJyYXkoIkZvbnRCQm94IiksYXNjZW50OmUuZ2V0KCJBc2NlbnQiKSxkZXNjZW50OmUuZ2V0KCJEZXNjZW50IikseEhlaWdodDplLmdldCgiWEhlaWdodCIpfHwwLGNhcEhlaWdodDplLmdldCgiQ2FwSGVpZ2h0Iil8fDAsZmxhZ3M6ZS5nZXQoIkZsYWdzIiksaXRhbGljQW5nbGU6ZS5nZXQoIkl0YWxpY0FuZ2xlIil8fDAsaXNUeXBlM0ZvbnQ6bSxjc3NGb250SW5mbzpnLHNjYWxlRmFjdG9yczpNLHN5c3RlbUZvbnRJbmZvOkV9O2lmKG8pe2NvbnN0IGU9YS5nZXQoIkVuY29kaW5nIik7ZSBpbnN0YW5jZW9mIG4uTmFtZSYmKGIuY2lkRW5jb2Rpbmc9ZS5uYW1lKTtjb25zdCB0PWF3YWl0IGkuQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pO2IuY01hcD10O2IudmVydGljYWw9Yi5jTWFwLnZlcnRpY2FsfXJldHVybiB0aGlzLmV4dHJhY3REYXRhU3RydWN0dXJlcyh0LGEsYikudGhlbigoYT0+e3RoaXMuZXh0cmFjdFdpZHRocyh0LGUsYSk7cmV0dXJuIG5ldyBzLkZvbnQoRi5uYW1lLHksYSl9KSl9c3RhdGljIGJ1aWxkRm9udFBhdGhzKGUsdCxhLGkpe2Z1bmN0aW9uIGJ1aWxkUGF0aCh0KXtjb25zdCBuPWAke2UubG9hZGVkTmFtZX1fcGF0aF8ke3R9YDt0cnl7aWYoZS5yZW5kZXJlci5oYXNCdWlsdFBhdGgodCkpcmV0dXJuO2Euc2VuZCgiY29tbW9ub2JqIixbbiwiRm9udFBhdGgiLGUucmVuZGVyZXIuZ2V0UGF0aEpzKHQpXSl9Y2F0Y2goZSl7aWYoaS5pZ25vcmVFcnJvcnMpeygwLHIud2FybikoYGJ1aWxkRm9udFBhdGhzIC0gaWdub3JpbmcgJHtufSBnbHlwaDogIiR7ZX0iLmApO3JldHVybn10aHJvdyBlfX1mb3IoY29uc3QgZSBvZiB0KXtidWlsZFBhdGgoZS5mb250Q2hhcik7Y29uc3QgdD1lLmFjY2VudDt0Py5mb250Q2hhciYmYnVpbGRQYXRoKHQuZm9udENoYXIpfX1zdGF0aWMgZ2V0IGZhbGxiYWNrRm9udERpY3QoKXtjb25zdCBlPW5ldyBuLkRpY3Q7ZS5zZXQoIkJhc2VGb250IixuLk5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLG4uTmFtZS5nZXQoIkZhbGxiYWNrVHlwZSIpKTtlLnNldCgiU3VidHlwZSIsbi5OYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJFbmNvZGluZyIsbi5OYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJmYWxsYmFja0ZvbnREaWN0IixlKX19dC5QYXJ0aWFsRXZhbHVhdG9yPVBhcnRpYWxFdmFsdWF0b3I7Y2xhc3MgVHJhbnNsYXRlZEZvbnR7Y29uc3RydWN0b3Ioe2xvYWRlZE5hbWU6ZSxmb250OnQsZGljdDphLGV2YWx1YXRvck9wdGlvbnM6cn0pe3RoaXMubG9hZGVkTmFtZT1lO3RoaXMuZm9udD10O3RoaXMuZGljdD1hO3RoaXMuX2V2YWx1YXRvck9wdGlvbnM9cnx8RDt0aGlzLnR5cGUzTG9hZGVkPW51bGw7dGhpcy50eXBlM0RlcGVuZGVuY2llcz10LmlzVHlwZTNGb250P25ldyBTZXQ6bnVsbDt0aGlzLnNlbnQ9ITF9c2VuZChlKXtpZighdGhpcy5zZW50KXt0aGlzLnNlbnQ9ITA7ZS5zZW5kKCJjb21tb25vYmoiLFt0aGlzLmxvYWRlZE5hbWUsIkZvbnQiLHRoaXMuZm9udC5leHBvcnREYXRhKHRoaXMuX2V2YWx1YXRvck9wdGlvbnMuZm9udEV4dHJhUHJvcGVydGllcyldKX19ZmFsbGJhY2soZSl7aWYodGhpcy5mb250LmRhdGEpe3RoaXMuZm9udC5kaXNhYmxlRm9udEZhY2U9ITA7UGFydGlhbEV2YWx1YXRvci5idWlsZEZvbnRQYXRocyh0aGlzLmZvbnQsdGhpcy5mb250LmdseXBoQ2FjaGVWYWx1ZXMsZSx0aGlzLl9ldmFsdWF0b3JPcHRpb25zKX19bG9hZFR5cGUzRGF0YShlLHQsYSl7aWYodGhpcy50eXBlM0xvYWRlZClyZXR1cm4gdGhpcy50eXBlM0xvYWRlZDtpZighdGhpcy5mb250LmlzVHlwZTNGb250KXRocm93IG5ldyBFcnJvcigiTXVzdCBiZSBhIFR5cGUzIGZvbnQuIik7Y29uc3QgaT1lLmNsb25lKHtpZ25vcmVFcnJvcnM6ITF9KTtpLnBhcnNpbmdUeXBlM0ZvbnQ9ITA7Y29uc3Qgcz1uZXcgbi5SZWZTZXQoZS50eXBlM0ZvbnRSZWZzKTt0aGlzLmRpY3Qub2JqSWQmJiFzLmhhcyh0aGlzLmRpY3Qub2JqSWQpJiZzLnB1dCh0aGlzLmRpY3Qub2JqSWQpO2kudHlwZTNGb250UmVmcz1zO2NvbnN0IG89dGhpcy5mb250LGM9dGhpcy50eXBlM0RlcGVuZGVuY2llcztsZXQgbD1Qcm9taXNlLnJlc29sdmUoKTtjb25zdCBoPXRoaXMuZGljdC5nZXQoIkNoYXJQcm9jcyIpLHU9dGhpcy5kaWN0LmdldCgiUmVzb3VyY2VzIil8fHQsZD1PYmplY3QuY3JlYXRlKG51bGwpLGY9ci5VdGlsLm5vcm1hbGl6ZVJlY3Qoby5iYm94fHxbMCwwLDAsMF0pLGc9ZlsyXS1mWzBdLHA9ZlszXS1mWzFdLG09TWF0aC5oeXBvdChnLHApO2Zvcihjb25zdCBlIG9mIGguZ2V0S2V5cygpKWw9bC50aGVuKCgoKT0+e2NvbnN0IHQ9aC5nZXQoZSksbj1uZXcgTS5PcGVyYXRvckxpc3Q7cmV0dXJuIGkuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOmEscmVzb3VyY2VzOnUsb3BlcmF0b3JMaXN0Om59KS50aGVuKCgoKT0+e24uZm5BcnJheVswXT09PXIuT1BTLnNldENoYXJXaWR0aEFuZEJvdW5kcyYmdGhpcy5fcmVtb3ZlVHlwZTNDb2xvck9wZXJhdG9ycyhuLG0pO2RbZV09bi5nZXRJUigpO2Zvcihjb25zdCBlIG9mIG4uZGVwZW5kZW5jaWVzKWMuYWRkKGUpfSkpLmNhdGNoKChmdW5jdGlvbih0KXsoMCxyLndhcm4pKGBUeXBlMyBmb250IHJlc291cmNlICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApO2NvbnN0IGE9bmV3IE0uT3BlcmF0b3JMaXN0O2RbZV09YS5nZXRJUigpfSkpfSkpO3RoaXMudHlwZTNMb2FkZWQ9bC50aGVuKCgoKT0+e28uY2hhclByb2NPcGVyYXRvckxpc3Q9ZDtpZih0aGlzLl9iYm94KXtvLmlzQ2hhckJCb3g9ITA7by5iYm94PXRoaXMuX2Jib3h9fSkpO3JldHVybiB0aGlzLnR5cGUzTG9hZGVkfV9yZW1vdmVUeXBlM0NvbG9yT3BlcmF0b3JzKGUsdD1OYU4pe2NvbnN0IGE9ci5VdGlsLm5vcm1hbGl6ZVJlY3QoZS5hcmdzQXJyYXlbMF0uc2xpY2UoMikpLGk9YVsyXS1hWzBdLG49YVszXS1hWzFdLHM9TWF0aC5oeXBvdChpLG4pO2lmKDA9PT1pfHwwPT09bil7ZS5mbkFycmF5LnNwbGljZSgwLDEpO2UuYXJnc0FycmF5LnNwbGljZSgwLDEpfWVsc2UgaWYoMD09PXR8fE1hdGgucm91bmQocy90KT49MTApe3RoaXMuX2Jib3h8fCh0aGlzLl9iYm94PVsxLzAsMS8wLC0xLzAsLTEvMF0pO3RoaXMuX2Jib3hbMF09TWF0aC5taW4odGhpcy5fYmJveFswXSxhWzBdKTt0aGlzLl9iYm94WzFdPU1hdGgubWluKHRoaXMuX2Jib3hbMV0sYVsxXSk7dGhpcy5fYmJveFsyXT1NYXRoLm1heCh0aGlzLl9iYm94WzJdLGFbMl0pO3RoaXMuX2Jib3hbM109TWF0aC5tYXgodGhpcy5fYmJveFszXSxhWzNdKX1sZXQgbz0wLGM9ZS5sZW5ndGg7Zm9yKDtvPGM7KXtzd2l0Y2goZS5mbkFycmF5W29dKXtjYXNlIHIuT1BTLnNldENoYXJXaWR0aEFuZEJvdW5kczpicmVhaztjYXNlIHIuT1BTLnNldFN0cm9rZUNvbG9yU3BhY2U6Y2FzZSByLk9QUy5zZXRGaWxsQ29sb3JTcGFjZTpjYXNlIHIuT1BTLnNldFN0cm9rZUNvbG9yOmNhc2Ugci5PUFMuc2V0U3Ryb2tlQ29sb3JOOmNhc2Ugci5PUFMuc2V0RmlsbENvbG9yOmNhc2Ugci5PUFMuc2V0RmlsbENvbG9yTjpjYXNlIHIuT1BTLnNldFN0cm9rZUdyYXk6Y2FzZSByLk9QUy5zZXRGaWxsR3JheTpjYXNlIHIuT1BTLnNldFN0cm9rZVJHQkNvbG9yOmNhc2Ugci5PUFMuc2V0RmlsbFJHQkNvbG9yOmNhc2Ugci5PUFMuc2V0U3Ryb2tlQ01ZS0NvbG9yOmNhc2Ugci5PUFMuc2V0RmlsbENNWUtDb2xvcjpjYXNlIHIuT1BTLnNoYWRpbmdGaWxsOmNhc2Ugci5PUFMuc2V0UmVuZGVyaW5nSW50ZW50OmUuZm5BcnJheS5zcGxpY2UobywxKTtlLmFyZ3NBcnJheS5zcGxpY2UobywxKTtjLS07Y29udGludWU7Y2FzZSByLk9QUy5zZXRHU3RhdGU6Y29uc3RbdF09ZS5hcmdzQXJyYXlbb107bGV0IGE9MCxpPXQubGVuZ3RoO2Zvcig7YTxpOyl7Y29uc3RbZV09dFthXTtzd2l0Y2goZSl7Y2FzZSJUUiI6Y2FzZSJUUjIiOmNhc2UiSFQiOmNhc2UiQkciOmNhc2UiQkcyIjpjYXNlIlVDUiI6Y2FzZSJVQ1IyIjp0LnNwbGljZShhLDEpO2ktLTtjb250aW51ZX1hKyt9fW8rK319fWNsYXNzIFN0YXRlTWFuYWdlcntjb25zdHJ1Y3RvcihlPW5ldyBFdmFsU3RhdGUpe3RoaXMuc3RhdGU9ZTt0aGlzLnN0YXRlU3RhY2s9W119c2F2ZSgpe2NvbnN0IGU9dGhpcy5zdGF0ZTt0aGlzLnN0YXRlU3RhY2sucHVzaCh0aGlzLnN0YXRlKTt0aGlzLnN0YXRlPWUuY2xvbmUoKX1yZXN0b3JlKCl7Y29uc3QgZT10aGlzLnN0YXRlU3RhY2sucG9wKCk7ZSYmKHRoaXMuc3RhdGU9ZSl9dHJhbnNmb3JtKGUpe3RoaXMuc3RhdGUuY3RtPXIuVXRpbC50cmFuc2Zvcm0odGhpcy5zdGF0ZS5jdG0sZSl9fWNsYXNzIFRleHRTdGF0ZXtjb25zdHJ1Y3Rvcigpe3RoaXMuY3RtPW5ldyBGbG9hdDMyQXJyYXkoci5JREVOVElUWV9NQVRSSVgpO3RoaXMuZm9udE5hbWU9bnVsbDt0aGlzLmZvbnRTaXplPTA7dGhpcy5sb2FkZWROYW1lPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5mb250TWF0cml4PXIuRk9OVF9JREVOVElUWV9NQVRSSVg7dGhpcy50ZXh0TWF0cml4PXIuSURFTlRJVFlfTUFUUklYLnNsaWNlKCk7dGhpcy50ZXh0TGluZU1hdHJpeD1yLklERU5USVRZX01BVFJJWC5zbGljZSgpO3RoaXMuY2hhclNwYWNpbmc9MDt0aGlzLndvcmRTcGFjaW5nPTA7dGhpcy5sZWFkaW5nPTA7dGhpcy50ZXh0SFNjYWxlPTE7dGhpcy50ZXh0UmlzZT0wfXNldFRleHRNYXRyaXgoZSx0LGEscixpLG4pe2NvbnN0IHM9dGhpcy50ZXh0TWF0cml4O3NbMF09ZTtzWzFdPXQ7c1syXT1hO3NbM109cjtzWzRdPWk7c1s1XT1ufXNldFRleHRMaW5lTWF0cml4KGUsdCxhLHIsaSxuKXtjb25zdCBzPXRoaXMudGV4dExpbmVNYXRyaXg7c1swXT1lO3NbMV09dDtzWzJdPWE7c1szXT1yO3NbNF09aTtzWzVdPW59dHJhbnNsYXRlVGV4dE1hdHJpeChlLHQpe2NvbnN0IGE9dGhpcy50ZXh0TWF0cml4O2FbNF09YVswXSplK2FbMl0qdCthWzRdO2FbNV09YVsxXSplK2FbM10qdCthWzVdfXRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KGUsdCl7Y29uc3QgYT10aGlzLnRleHRMaW5lTWF0cml4O2FbNF09YVswXSplK2FbMl0qdCthWzRdO2FbNV09YVsxXSplK2FbM10qdCthWzVdfWNhcnJpYWdlUmV0dXJuKCl7dGhpcy50cmFuc2xhdGVUZXh0TGluZU1hdHJpeCgwLC10aGlzLmxlYWRpbmcpO3RoaXMudGV4dE1hdHJpeD10aGlzLnRleHRMaW5lTWF0cml4LnNsaWNlKCl9Y2xvbmUoKXtjb25zdCBlPU9iamVjdC5jcmVhdGUodGhpcyk7ZS50ZXh0TWF0cml4PXRoaXMudGV4dE1hdHJpeC5zbGljZSgpO2UudGV4dExpbmVNYXRyaXg9dGhpcy50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2UuZm9udE1hdHJpeD10aGlzLmZvbnRNYXRyaXguc2xpY2UoKTtyZXR1cm4gZX19Y2xhc3MgRXZhbFN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5jdG09bmV3IEZsb2F0MzJBcnJheShyLklERU5USVRZX01BVFJJWCk7dGhpcy5mb250PW51bGw7dGhpcy50ZXh0UmVuZGVyaW5nTW9kZT1yLlRleHRSZW5kZXJpbmdNb2RlLkZJTEw7dGhpcy5maWxsQ29sb3JTcGFjZT15LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5O3RoaXMuc3Ryb2tlQ29sb3JTcGFjZT15LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5fWNsb25lKCl7cmV0dXJuIE9iamVjdC5jcmVhdGUodGhpcyl9fWNsYXNzIEV2YWx1YXRvclByZXByb2Nlc3NvcntzdGF0aWMgZ2V0IG9wTWFwKCl7Y29uc3QgZT0oMCxrLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uudz17aWQ6ci5PUFMuc2V0TGluZVdpZHRoLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuSj17aWQ6ci5PUFMuc2V0TGluZUNhcCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLmo9e2lkOnIuT1BTLnNldExpbmVKb2luLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuTT17aWQ6ci5PUFMuc2V0TWl0ZXJMaW1pdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLmQ9e2lkOnIuT1BTLnNldERhc2gsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5yaT17aWQ6ci5PUFMuc2V0UmVuZGVyaW5nSW50ZW50LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuaT17aWQ6ci5PUFMuc2V0RmxhdG5lc3MsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5ncz17aWQ6ci5PUFMuc2V0R1N0YXRlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UucT17aWQ6ci5PUFMuc2F2ZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLlE9e2lkOnIuT1BTLnJlc3RvcmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5jbT17aWQ6ci5PUFMudHJhbnNmb3JtLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9O2UubT17aWQ6ci5PUFMubW92ZVRvLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UubD17aWQ6ci5PUFMubGluZVRvLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UuYz17aWQ6ci5PUFMuY3VydmVUbyxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfTtlLnY9e2lkOnIuT1BTLmN1cnZlVG8yLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9O2UueT17aWQ6ci5PUFMuY3VydmVUbzMsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX07ZS5oPXtpZDpyLk9QUy5jbG9zZVBhdGgsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5yZT17aWQ6ci5PUFMucmVjdGFuZ2xlLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9O2UuUz17aWQ6ci5PUFMuc3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2Uucz17aWQ6ci5PUFMuY2xvc2VTdHJva2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5mPXtpZDpyLk9QUy5maWxsLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuRj17aWQ6ci5PUFMuZmlsbCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlWyJmKiJdPXtpZDpyLk9QUy5lb0ZpbGwsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5CPXtpZDpyLk9QUy5maWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2VbIkIqIl09e2lkOnIuT1BTLmVvRmlsbFN0cm9rZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLmI9e2lkOnIuT1BTLmNsb3NlRmlsbFN0cm9rZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlWyJiKiJdPXtpZDpyLk9QUy5jbG9zZUVPRmlsbFN0cm9rZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLm49e2lkOnIuT1BTLmVuZFBhdGgsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5XPXtpZDpyLk9QUy5jbGlwLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2VbIlcqIl09e2lkOnIuT1BTLmVvQ2xpcCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLkJUPXtpZDpyLk9QUy5iZWdpblRleHQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5FVD17aWQ6ci5PUFMuZW5kVGV4dCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLlRjPXtpZDpyLk9QUy5zZXRDaGFyU3BhY2luZyxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLlR3PXtpZDpyLk9QUy5zZXRXb3JkU3BhY2luZyxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLlR6PXtpZDpyLk9QUy5zZXRIU2NhbGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5UTD17aWQ6ci5PUFMuc2V0TGVhZGluZyxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLlRmPXtpZDpyLk9QUy5zZXRGb250LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UuVHI9e2lkOnIuT1BTLnNldFRleHRSZW5kZXJpbmdNb2RlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVHM9e2lkOnIuT1BTLnNldFRleHRSaXNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVGQ9e2lkOnIuT1BTLm1vdmVUZXh0LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UuVEQ9e2lkOnIuT1BTLnNldExlYWRpbmdNb3ZlVGV4dCxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfTtlLlRtPXtpZDpyLk9QUy5zZXRUZXh0TWF0cml4LG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9O2VbIlQqIl09e2lkOnIuT1BTLm5leHRMaW5lLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuVGo9e2lkOnIuT1BTLnNob3dUZXh0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVEo9e2lkOnIuT1BTLnNob3dTcGFjZWRUZXh0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2VbIiciXT17aWQ6ci5PUFMubmV4dExpbmVTaG93VGV4dCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlWyciJ109e2lkOnIuT1BTLm5leHRMaW5lU2V0U3BhY2luZ1Nob3dUZXh0LG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9O2UuZDA9e2lkOnIuT1BTLnNldENoYXJXaWR0aCxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfTtlLmQxPXtpZDpyLk9QUy5zZXRDaGFyV2lkdGhBbmRCb3VuZHMsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX07ZS5DUz17aWQ6ci5PUFMuc2V0U3Ryb2tlQ29sb3JTcGFjZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLmNzPXtpZDpyLk9QUy5zZXRGaWxsQ29sb3JTcGFjZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLlNDPXtpZDpyLk9QUy5zZXRTdHJva2VDb2xvcixudW1BcmdzOjQsdmFyaWFibGVBcmdzOiEwfTtlLlNDTj17aWQ6ci5PUFMuc2V0U3Ryb2tlQ29sb3JOLG51bUFyZ3M6MzMsdmFyaWFibGVBcmdzOiEwfTtlLnNjPXtpZDpyLk9QUy5zZXRGaWxsQ29sb3IsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMH07ZS5zY249e2lkOnIuT1BTLnNldEZpbGxDb2xvck4sbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9O2UuRz17aWQ6ci5PUFMuc2V0U3Ryb2tlR3JheSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLmc9e2lkOnIuT1BTLnNldEZpbGxHcmF5LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuUkc9e2lkOnIuT1BTLnNldFN0cm9rZVJHQkNvbG9yLG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9O2Uucmc9e2lkOnIuT1BTLnNldEZpbGxSR0JDb2xvcixudW1BcmdzOjMsdmFyaWFibGVBcmdzOiExfTtlLks9e2lkOnIuT1BTLnNldFN0cm9rZUNNWUtDb2xvcixudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfTtlLms9e2lkOnIuT1BTLnNldEZpbGxDTVlLQ29sb3IsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX07ZS5zaD17aWQ6ci5PUFMuc2hhZGluZ0ZpbGwsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5CST17aWQ6ci5PUFMuYmVnaW5JbmxpbmVJbWFnZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLklEPXtpZDpyLk9QUy5iZWdpbkltYWdlRGF0YSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLkVJPXtpZDpyLk9QUy5lbmRJbmxpbmVJbWFnZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLkRvPXtpZDpyLk9QUy5wYWludFhPYmplY3QsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5NUD17aWQ6ci5PUFMubWFya1BvaW50LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuRFA9e2lkOnIuT1BTLm1hcmtQb2ludFByb3BzLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UuQk1DPXtpZDpyLk9QUy5iZWdpbk1hcmtlZENvbnRlbnQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5CREM9e2lkOnIuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UuRU1DPXtpZDpyLk9QUy5lbmRNYXJrZWRDb250ZW50LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuQlg9e2lkOnIuT1BTLmJlZ2luQ29tcGF0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuRVg9e2lkOnIuT1BTLmVuZENvbXBhdCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLkJNPW51bGw7ZS5CRD1udWxsO2UudHJ1ZT1udWxsO2UuZmE9bnVsbDtlLmZhbD1udWxsO2UuZmFscz1udWxsO2UuZmFsc2U9bnVsbDtlLm51PW51bGw7ZS5udWw9bnVsbDtlLm51bGw9bnVsbH0pKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywib3BNYXAiLGUoKSl9c3RhdGljIE1BWF9JTlZBTElEX1BBVEhfT1BTPTEwO2NvbnN0cnVjdG9yKGUsdCxhPW5ldyBTdGF0ZU1hbmFnZXIpe3RoaXMucGFyc2VyPW5ldyBmLlBhcnNlcih7bGV4ZXI6bmV3IGYuTGV4ZXIoZSxFdmFsdWF0b3JQcmVwcm9jZXNzb3Iub3BNYXApLHhyZWY6dH0pO3RoaXMuc3RhdGVNYW5hZ2VyPWE7dGhpcy5ub25Qcm9jZXNzZWRBcmdzPVtdO3RoaXMuX2lzUGF0aE9wPSExO3RoaXMuX251bUludmFsaWRQYXRoT1BTPTB9Z2V0IHNhdmVkU3RhdGVzRGVwdGgoKXtyZXR1cm4gdGhpcy5zdGF0ZU1hbmFnZXIuc3RhdGVTdGFjay5sZW5ndGh9cmVhZChlKXtsZXQgdD1lLmFyZ3M7Zm9yKDs7KXtjb25zdCBhPXRoaXMucGFyc2VyLmdldE9iaigpO2lmKGEgaW5zdGFuY2VvZiBuLkNtZCl7Y29uc3QgaT1hLmNtZCxuPUV2YWx1YXRvclByZXByb2Nlc3Nvci5vcE1hcFtpXTtpZighbil7KDAsci53YXJuKShgVW5rbm93biBjb21tYW5kICIke2l9Ii5gKTtjb250aW51ZX1jb25zdCBzPW4uaWQsbz1uLm51bUFyZ3M7bGV0IGM9bnVsbCE9PXQ/dC5sZW5ndGg6MDt0aGlzLl9pc1BhdGhPcHx8KHRoaXMuX251bUludmFsaWRQYXRoT1BTPTApO3RoaXMuX2lzUGF0aE9wPXM+PXIuT1BTLm1vdmVUbyYmczw9ci5PUFMuZW5kUGF0aDtpZihuLnZhcmlhYmxlQXJncyljPm8mJigwLHIuaW5mbykoYENvbW1hbmQgJHtpfTogZXhwZWN0ZWQgWzAsICR7b31dIGFyZ3MsIGJ1dCByZWNlaXZlZCAke2N9IGFyZ3MuYCk7ZWxzZXtpZihjIT09byl7Y29uc3QgZT10aGlzLm5vblByb2Nlc3NlZEFyZ3M7Zm9yKDtjPm87KXtlLnB1c2godC5zaGlmdCgpKTtjLS19Zm9yKDtjPG8mJjAhPT1lLmxlbmd0aDspe251bGw9PT10JiYodD1bXSk7dC51bnNoaWZ0KGUucG9wKCkpO2MrK319aWYoYzxvKXtjb25zdCBlPWBjb21tYW5kICR7aX06IGV4cGVjdGVkICR7b30gYXJncywgYnV0IHJlY2VpdmVkICR7Y30gYXJncy5gO2lmKHRoaXMuX2lzUGF0aE9wJiYrK3RoaXMuX251bUludmFsaWRQYXRoT1BTPkV2YWx1YXRvclByZXByb2Nlc3Nvci5NQVhfSU5WQUxJRF9QQVRIX09QUyl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCAke2V9YCk7KDAsci53YXJuKShgU2tpcHBpbmcgJHtlfWApO251bGwhPT10JiYodC5sZW5ndGg9MCk7Y29udGludWV9fXRoaXMucHJlcHJvY2Vzc0NvbW1hbmQocyx0KTtlLmZuPXM7ZS5hcmdzPXQ7cmV0dXJuITB9aWYoYT09PW4uRU9GKXJldHVybiExO2lmKG51bGwhPT1hKXtudWxsPT09dCYmKHQ9W10pO3QucHVzaChhKTtpZih0Lmxlbmd0aD4zMyl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVG9vIG1hbnkgYXJndW1lbnRzIil9fX1wcmVwcm9jZXNzQ29tbWFuZChlLHQpe3N3aXRjaCgwfGUpe2Nhc2Ugci5PUFMuc2F2ZTp0aGlzLnN0YXRlTWFuYWdlci5zYXZlKCk7YnJlYWs7Y2FzZSByLk9QUy5yZXN0b3JlOnRoaXMuc3RhdGVNYW5hZ2VyLnJlc3RvcmUoKTticmVhaztjYXNlIHIuT1BTLnRyYW5zZm9ybTp0aGlzLnN0YXRlTWFuYWdlci50cmFuc2Zvcm0odCl9fX10LkV2YWx1YXRvclByZXByb2Nlc3Nvcj1FdmFsdWF0b3JQcmVwcm9jZXNzb3J9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5JZGVudGl0eUNNYXA9dC5DTWFwRmFjdG9yeT10LkNNYXA9dm9pZCAwO3ZhciByPWEoMiksaT1hKDQpLG49YSg1KSxzPWEoMTUpLG89YSgxNiksYz1hKDMpLGw9YSg4KTtjb25zdCBoPVsiQWRvYmUtR0IxLVVDUzIiLCJBZG9iZS1DTlMxLVVDUzIiLCJBZG9iZS1KYXBhbjEtVUNTMiIsIkFkb2JlLUtvcmVhMS1VQ1MyIiwiNzgtRVVDLUgiLCI3OC1FVUMtViIsIjc4LUgiLCI3OC1SS1NKLUgiLCI3OC1SS1NKLVYiLCI3OC1WIiwiNzhtcy1SS1NKLUgiLCI3OG1zLVJLU0otViIsIjgzcHYtUktTSi1IIiwiOTBtcy1SS1NKLUgiLCI5MG1zLVJLU0otViIsIjkwbXNwLVJLU0otSCIsIjkwbXNwLVJLU0otViIsIjkwcHYtUktTSi1IIiwiOTBwdi1SS1NKLVYiLCJBZGQtSCIsIkFkZC1SS1NKLUgiLCJBZGQtUktTSi1WIiwiQWRkLVYiLCJBZG9iZS1DTlMxLTAiLCJBZG9iZS1DTlMxLTEiLCJBZG9iZS1DTlMxLTIiLCJBZG9iZS1DTlMxLTMiLCJBZG9iZS1DTlMxLTQiLCJBZG9iZS1DTlMxLTUiLCJBZG9iZS1DTlMxLTYiLCJBZG9iZS1HQjEtMCIsIkFkb2JlLUdCMS0xIiwiQWRvYmUtR0IxLTIiLCJBZG9iZS1HQjEtMyIsIkFkb2JlLUdCMS00IiwiQWRvYmUtR0IxLTUiLCJBZG9iZS1KYXBhbjEtMCIsIkFkb2JlLUphcGFuMS0xIiwiQWRvYmUtSmFwYW4xLTIiLCJBZG9iZS1KYXBhbjEtMyIsIkFkb2JlLUphcGFuMS00IiwiQWRvYmUtSmFwYW4xLTUiLCJBZG9iZS1KYXBhbjEtNiIsIkFkb2JlLUtvcmVhMS0wIiwiQWRvYmUtS29yZWExLTEiLCJBZG9iZS1Lb3JlYTEtMiIsIkI1LUgiLCJCNS1WIiwiQjVwYy1IIiwiQjVwYy1WIiwiQ05TLUVVQy1IIiwiQ05TLUVVQy1WIiwiQ05TMS1IIiwiQ05TMS1WIiwiQ05TMi1IIiwiQ05TMi1WIiwiRVRISy1CNS1IIiwiRVRISy1CNS1WIiwiRVRlbi1CNS1IIiwiRVRlbi1CNS1WIiwiRVRlbm1zLUI1LUgiLCJFVGVubXMtQjUtViIsIkVVQy1IIiwiRVVDLVYiLCJFeHQtSCIsIkV4dC1SS1NKLUgiLCJFeHQtUktTSi1WIiwiRXh0LVYiLCJHQi1FVUMtSCIsIkdCLUVVQy1WIiwiR0ItSCIsIkdCLVYiLCJHQkstRVVDLUgiLCJHQkstRVVDLVYiLCJHQksySy1IIiwiR0JLMkstViIsIkdCS3AtRVVDLUgiLCJHQktwLUVVQy1WIiwiR0JULUVVQy1IIiwiR0JULUVVQy1WIiwiR0JULUgiLCJHQlQtViIsIkdCVHBjLUVVQy1IIiwiR0JUcGMtRVVDLVYiLCJHQnBjLUVVQy1IIiwiR0JwYy1FVUMtViIsIkgiLCJIS2RsYS1CNS1IIiwiSEtkbGEtQjUtViIsIkhLZGxiLUI1LUgiLCJIS2RsYi1CNS1WIiwiSEtnY2NzLUI1LUgiLCJIS2djY3MtQjUtViIsIkhLbTMxNC1CNS1IIiwiSEttMzE0LUI1LVYiLCJIS200NzEtQjUtSCIsIkhLbTQ3MS1CNS1WIiwiSEtzY3MtQjUtSCIsIkhLc2NzLUI1LVYiLCJIYW5rYWt1IiwiSGlyYWdhbmEiLCJLU0MtRVVDLUgiLCJLU0MtRVVDLVYiLCJLU0MtSCIsIktTQy1Kb2hhYi1IIiwiS1NDLUpvaGFiLVYiLCJLU0MtViIsIktTQ21zLVVIQy1IIiwiS1NDbXMtVUhDLUhXLUgiLCJLU0Ntcy1VSEMtSFctViIsIktTQ21zLVVIQy1WIiwiS1NDcGMtRVVDLUgiLCJLU0NwYy1FVUMtViIsIkthdGFrYW5hIiwiTldQLUgiLCJOV1AtViIsIlJLU0otSCIsIlJLU0otViIsIlJvbWFuIiwiVW5pQ05TLVVDUzItSCIsIlVuaUNOUy1VQ1MyLVYiLCJVbmlDTlMtVVRGMTYtSCIsIlVuaUNOUy1VVEYxNi1WIiwiVW5pQ05TLVVURjMyLUgiLCJVbmlDTlMtVVRGMzItViIsIlVuaUNOUy1VVEY4LUgiLCJVbmlDTlMtVVRGOC1WIiwiVW5pR0ItVUNTMi1IIiwiVW5pR0ItVUNTMi1WIiwiVW5pR0ItVVRGMTYtSCIsIlVuaUdCLVVURjE2LVYiLCJVbmlHQi1VVEYzMi1IIiwiVW5pR0ItVVRGMzItViIsIlVuaUdCLVVURjgtSCIsIlVuaUdCLVVURjgtViIsIlVuaUpJUy1VQ1MyLUgiLCJVbmlKSVMtVUNTMi1IVy1IIiwiVW5pSklTLVVDUzItSFctViIsIlVuaUpJUy1VQ1MyLVYiLCJVbmlKSVMtVVRGMTYtSCIsIlVuaUpJUy1VVEYxNi1WIiwiVW5pSklTLVVURjMyLUgiLCJVbmlKSVMtVVRGMzItViIsIlVuaUpJUy1VVEY4LUgiLCJVbmlKSVMtVVRGOC1WIiwiVW5pSklTMjAwNC1VVEYxNi1IIiwiVW5pSklTMjAwNC1VVEYxNi1WIiwiVW5pSklTMjAwNC1VVEYzMi1IIiwiVW5pSklTMjAwNC1VVEYzMi1WIiwiVW5pSklTMjAwNC1VVEY4LUgiLCJVbmlKSVMyMDA0LVVURjgtViIsIlVuaUpJU1Byby1VQ1MyLUhXLVYiLCJVbmlKSVNQcm8tVUNTMi1WIiwiVW5pSklTUHJvLVVURjgtViIsIlVuaUpJU1gwMjEzLVVURjMyLUgiLCJVbmlKSVNYMDIxMy1VVEYzMi1WIiwiVW5pSklTWDAyMTMyMDA0LVVURjMyLUgiLCJVbmlKSVNYMDIxMzIwMDQtVVRGMzItViIsIlVuaUtTLVVDUzItSCIsIlVuaUtTLVVDUzItViIsIlVuaUtTLVVURjE2LUgiLCJVbmlLUy1VVEYxNi1WIiwiVW5pS1MtVVRGMzItSCIsIlVuaUtTLVVURjMyLVYiLCJVbmlLUy1VVEY4LUgiLCJVbmlLUy1VVEY4LVYiLCJWIiwiV1AtU3ltYm9sIl0sdT0yKioyNC0xO2NsYXNzIENNYXB7Y29uc3RydWN0b3IoZT0hMSl7dGhpcy5jb2Rlc3BhY2VSYW5nZXM9W1tdLFtdLFtdLFtdXTt0aGlzLm51bUNvZGVzcGFjZVJhbmdlcz0wO3RoaXMuX21hcD1bXTt0aGlzLm5hbWU9IiI7dGhpcy52ZXJ0aWNhbD0hMTt0aGlzLnVzZUNNYXA9bnVsbDt0aGlzLmJ1aWx0SW5DTWFwPWV9YWRkQ29kZXNwYWNlUmFuZ2UoZSx0LGEpe3RoaXMuY29kZXNwYWNlUmFuZ2VzW2UtMV0ucHVzaCh0LGEpO3RoaXMubnVtQ29kZXNwYWNlUmFuZ2VzKyt9bWFwQ2lkUmFuZ2UoZSx0LGEpe2lmKHQtZT51KXRocm93IG5ldyBFcnJvcigibWFwQ2lkUmFuZ2UgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Zm9yKDtlPD10Oyl0aGlzLl9tYXBbZSsrXT1hKyt9bWFwQmZSYW5nZShlLHQsYSl7aWYodC1lPnUpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlIC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2NvbnN0IHI9YS5sZW5ndGgtMTtmb3IoO2U8PXQ7KXt0aGlzLl9tYXBbZSsrXT1hO2NvbnN0IHQ9YS5jaGFyQ29kZUF0KHIpKzE7dD4yNTU/YT1hLnN1YnN0cmluZygwLHItMSkrU3RyaW5nLmZyb21DaGFyQ29kZShhLmNoYXJDb2RlQXQoci0xKSsxKSsiXDAiOmE9YS5zdWJzdHJpbmcoMCxyKStTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfX1tYXBCZlJhbmdlVG9BcnJheShlLHQsYSl7aWYodC1lPnUpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlVG9BcnJheSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtjb25zdCByPWEubGVuZ3RoO2xldCBpPTA7Zm9yKDtlPD10JiZpPHI7KXt0aGlzLl9tYXBbZV09YVtpKytdOysrZX19bWFwT25lKGUsdCl7dGhpcy5fbWFwW2VdPXR9bG9va3VwKGUpe3JldHVybiB0aGlzLl9tYXBbZV19Y29udGFpbnMoZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX21hcFtlXX1mb3JFYWNoKGUpe2NvbnN0IHQ9dGhpcy5fbWFwLGE9dC5sZW5ndGg7aWYoYTw9NjU1MzYpZm9yKGxldCByPTA7cjxhO3IrKyl2b2lkIDAhPT10W3JdJiZlKHIsdFtyXSk7ZWxzZSBmb3IoY29uc3QgYSBpbiB0KWUoYSx0W2FdKX1jaGFyQ29kZU9mKGUpe2NvbnN0IHQ9dGhpcy5fbWFwO2lmKHQubGVuZ3RoPD02NTUzNilyZXR1cm4gdC5pbmRleE9mKGUpO2Zvcihjb25zdCBhIGluIHQpaWYodFthXT09PWUpcmV0dXJuIDB8YTtyZXR1cm4tMX1nZXRNYXAoKXtyZXR1cm4gdGhpcy5fbWFwfXJlYWRDaGFyQ29kZShlLHQsYSl7bGV0IHI9MDtjb25zdCBpPXRoaXMuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgbj0wLHM9aS5sZW5ndGg7bjxzO24rKyl7cj0ocjw8OHxlLmNoYXJDb2RlQXQodCtuKSk+Pj4wO2NvbnN0IHM9aVtuXTtmb3IobGV0IGU9MCx0PXMubGVuZ3RoO2U8dDspe2NvbnN0IHQ9c1tlKytdLGk9c1tlKytdO2lmKHI+PXQmJnI8PWkpe2EuY2hhcmNvZGU9cjthLmxlbmd0aD1uKzE7cmV0dXJufX19YS5jaGFyY29kZT0wO2EubGVuZ3RoPTF9Z2V0Q2hhckNvZGVMZW5ndGgoZSl7Y29uc3QgdD10aGlzLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IGE9MCxyPXQubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9dFthXTtmb3IobGV0IHQ9MCxpPXIubGVuZ3RoO3Q8aTspe2NvbnN0IGk9clt0KytdLG49clt0KytdO2lmKGU+PWkmJmU8PW4pcmV0dXJuIGErMX19cmV0dXJuIDF9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWdldCBpc0lkZW50aXR5Q01hcCgpe2lmKCJJZGVudGl0eS1IIiE9PXRoaXMubmFtZSYmIklkZW50aXR5LVYiIT09dGhpcy5uYW1lKXJldHVybiExO2lmKDY1NTM2IT09dGhpcy5fbWFwLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGU9MDtlPDY1NTM2O2UrKylpZih0aGlzLl9tYXBbZV0hPT1lKXJldHVybiExO3JldHVybiEwfX10LkNNYXA9Q01hcDtjbGFzcyBJZGVudGl0eUNNYXAgZXh0ZW5kcyBDTWFwe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKTt0aGlzLnZlcnRpY2FsPWU7dGhpcy5hZGRDb2Rlc3BhY2VSYW5nZSh0LDAsNjU1MzUpfW1hcENpZFJhbmdlKGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgic2hvdWxkIG5vdCBjYWxsIG1hcENpZFJhbmdlIil9bWFwQmZSYW5nZShlLHQsYSl7KDAsci51bnJlYWNoYWJsZSkoInNob3VsZCBub3QgY2FsbCBtYXBCZlJhbmdlIil9bWFwQmZSYW5nZVRvQXJyYXkoZSx0LGEpeygwLHIudW5yZWFjaGFibGUpKCJzaG91bGQgbm90IGNhbGwgbWFwQmZSYW5nZVRvQXJyYXkiKX1tYXBPbmUoZSx0KXsoMCxyLnVucmVhY2hhYmxlKSgic2hvdWxkIG5vdCBjYWxsIG1hcENpZE9uZSIpfWxvb2t1cChlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzU/ZTp2b2lkIDB9Y29udGFpbnMoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1fWZvckVhY2goZSl7Zm9yKGxldCB0PTA7dDw9NjU1MzU7dCsrKWUodCx0KX1jaGFyQ29kZU9mKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNT9lOi0xfWdldE1hcCgpe2NvbnN0IGU9bmV3IEFycmF5KDY1NTM2KTtmb3IobGV0IHQ9MDt0PD02NTUzNTt0KyspZVt0XT10O3JldHVybiBlfWdldCBsZW5ndGgoKXtyZXR1cm4gNjU1MzZ9Z2V0IGlzSWRlbnRpdHlDTWFwKCl7KDAsci51bnJlYWNoYWJsZSkoInNob3VsZCBub3QgYWNjZXNzIC5pc0lkZW50aXR5Q01hcCIpfX10LklkZW50aXR5Q01hcD1JZGVudGl0eUNNYXA7ZnVuY3Rpb24gc3RyVG9JbnQoZSl7bGV0IHQ9MDtmb3IobGV0IGE9MDthPGUubGVuZ3RoO2ErKyl0PXQ8PDh8ZS5jaGFyQ29kZUF0KGEpO3JldHVybiB0Pj4+MH1mdW5jdGlvbiBleHBlY3RTdHJpbmcoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJNYWxmb3JtZWQgQ01hcDogZXhwZWN0ZWQgc3RyaW5nLiIpfWZ1bmN0aW9uIGV4cGVjdEludChlKXtpZighTnVtYmVyLmlzSW50ZWdlcihlKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiTWFsZm9ybWVkIENNYXA6IGV4cGVjdGVkIGludC4iKX1mdW5jdGlvbiBwYXJzZUJmQ2hhcihlLHQpe2Zvcig7Oyl7bGV0IGE9dC5nZXRPYmooKTtpZihhPT09aS5FT0YpYnJlYWs7aWYoKDAsaS5pc0NtZCkoYSwiZW5kYmZjaGFyIikpcmV0dXJuO2V4cGVjdFN0cmluZyhhKTtjb25zdCByPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoYSk7Y29uc3Qgbj1hO2UubWFwT25lKHIsbil9fWZ1bmN0aW9uIHBhcnNlQmZSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IGE9dC5nZXRPYmooKTtpZihhPT09aS5FT0YpYnJlYWs7aWYoKDAsaS5pc0NtZCkoYSwiZW5kYmZyYW5nZSIpKXJldHVybjtleHBlY3RTdHJpbmcoYSk7Y29uc3Qgcj1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IG49c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2lmKE51bWJlci5pc0ludGVnZXIoYSl8fCJzdHJpbmciPT10eXBlb2YgYSl7Y29uc3QgdD1OdW1iZXIuaXNJbnRlZ2VyKGEpP1N0cmluZy5mcm9tQ2hhckNvZGUoYSk6YTtlLm1hcEJmUmFuZ2UocixuLHQpfWVsc2V7aWYoISgwLGkuaXNDbWQpKGEsIlsiKSlicmVhazt7YT10LmdldE9iaigpO2NvbnN0IHM9W107Zm9yKDshKDAsaS5pc0NtZCkoYSwiXSIpJiZhIT09aS5FT0Y7KXtzLnB1c2goYSk7YT10LmdldE9iaigpfWUubWFwQmZSYW5nZVRvQXJyYXkocixuLHMpfX19dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgYmYgcmFuZ2UuIil9ZnVuY3Rpb24gcGFyc2VDaWRDaGFyKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1pLkVPRilicmVhaztpZigoMCxpLmlzQ21kKShhLCJlbmRjaWRjaGFyIikpcmV0dXJuO2V4cGVjdFN0cmluZyhhKTtjb25zdCByPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtleHBlY3RJbnQoYSk7Y29uc3Qgbj1hO2UubWFwT25lKHIsbil9fWZ1bmN0aW9uIHBhcnNlQ2lkUmFuZ2UoZSx0KXtmb3IoOzspe2xldCBhPXQuZ2V0T2JqKCk7aWYoYT09PWkuRU9GKWJyZWFrO2lmKCgwLGkuaXNDbWQpKGEsImVuZGNpZHJhbmdlIikpcmV0dXJuO2V4cGVjdFN0cmluZyhhKTtjb25zdCByPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoYSk7Y29uc3Qgbj1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7ZXhwZWN0SW50KGEpO2NvbnN0IHM9YTtlLm1hcENpZFJhbmdlKHIsbixzKX19ZnVuY3Rpb24gcGFyc2VDb2Rlc3BhY2VSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IGE9dC5nZXRPYmooKTtpZihhPT09aS5FT0YpYnJlYWs7aWYoKDAsaS5pc0NtZCkoYSwiZW5kY29kZXNwYWNlcmFuZ2UiKSlyZXR1cm47aWYoInN0cmluZyIhPXR5cGVvZiBhKWJyZWFrO2NvbnN0IHI9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2lmKCJzdHJpbmciIT10eXBlb2YgYSlicmVhaztjb25zdCBuPXN0clRvSW50KGEpO2UuYWRkQ29kZXNwYWNlUmFuZ2UoYS5sZW5ndGgscixuKX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBjb2Rlc3BhY2UgcmFuZ2UuIil9ZnVuY3Rpb24gcGFyc2VXTW9kZShlLHQpe2NvbnN0IGE9dC5nZXRPYmooKTtOdW1iZXIuaXNJbnRlZ2VyKGEpJiYoZS52ZXJ0aWNhbD0hIWEpfWZ1bmN0aW9uIHBhcnNlQ01hcE5hbWUoZSx0KXtjb25zdCBhPXQuZ2V0T2JqKCk7YSBpbnN0YW5jZW9mIGkuTmFtZSYmKGUubmFtZT1hLm5hbWUpfWFzeW5jIGZ1bmN0aW9uIHBhcnNlQ01hcChlLHQsYSxuKXtsZXQgcyxvO2U6Zm9yKDs7KXRyeXtjb25zdCBhPXQuZ2V0T2JqKCk7aWYoYT09PWkuRU9GKWJyZWFrO2lmKGEgaW5zdGFuY2VvZiBpLk5hbWUpeyJXTW9kZSI9PT1hLm5hbWU/cGFyc2VXTW9kZShlLHQpOiJDTWFwTmFtZSI9PT1hLm5hbWUmJnBhcnNlQ01hcE5hbWUoZSx0KTtzPWF9ZWxzZSBpZihhIGluc3RhbmNlb2YgaS5DbWQpc3dpdGNoKGEuY21kKXtjYXNlImVuZGNtYXAiOmJyZWFrIGU7Y2FzZSJ1c2VjbWFwIjpzIGluc3RhbmNlb2YgaS5OYW1lJiYobz1zLm5hbWUpO2JyZWFrO2Nhc2UiYmVnaW5jb2Rlc3BhY2VyYW5nZSI6cGFyc2VDb2Rlc3BhY2VSYW5nZShlLHQpO2JyZWFrO2Nhc2UiYmVnaW5iZmNoYXIiOnBhcnNlQmZDaGFyKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmNpZGNoYXIiOnBhcnNlQ2lkQ2hhcihlLHQpO2JyZWFrO2Nhc2UiYmVnaW5iZnJhbmdlIjpwYXJzZUJmUmFuZ2UoZSx0KTticmVhaztjYXNlImJlZ2luY2lkcmFuZ2UiOnBhcnNlQ2lkUmFuZ2UoZSx0KX19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGMuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxyLndhcm4pKCJJbnZhbGlkIGNNYXAgZGF0YTogIitlKTtjb250aW51ZX0hbiYmbyYmKG49byk7cmV0dXJuIG4/ZXh0ZW5kQ01hcChlLGEsbik6ZX1hc3luYyBmdW5jdGlvbiBleHRlbmRDTWFwKGUsdCxhKXtlLnVzZUNNYXA9YXdhaXQgY3JlYXRlQnVpbHRJbkNNYXAoYSx0KTtpZigwPT09ZS5udW1Db2Rlc3BhY2VSYW5nZXMpe2NvbnN0IHQ9ZS51c2VDTWFwLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IGE9MDthPHQubGVuZ3RoO2ErKyllLmNvZGVzcGFjZVJhbmdlc1thXT10W2FdLnNsaWNlKCk7ZS5udW1Db2Rlc3BhY2VSYW5nZXM9ZS51c2VDTWFwLm51bUNvZGVzcGFjZVJhbmdlc31lLnVzZUNNYXAuZm9yRWFjaCgoZnVuY3Rpb24odCxhKXtlLmNvbnRhaW5zKHQpfHxlLm1hcE9uZSh0LGUudXNlQ01hcC5sb29rdXAodCkpfSkpO3JldHVybiBlfWFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUJ1aWx0SW5DTWFwKGUsdCl7aWYoIklkZW50aXR5LUgiPT09ZSlyZXR1cm4gbmV3IElkZW50aXR5Q01hcCghMSwyKTtpZigiSWRlbnRpdHktViI9PT1lKXJldHVybiBuZXcgSWRlbnRpdHlDTWFwKCEwLDIpO2lmKCFoLmluY2x1ZGVzKGUpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBDTWFwIG5hbWU6ICIrZSk7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJCdWlsdC1pbiBDTWFwIHBhcmFtZXRlcnMgYXJlIG5vdCBwcm92aWRlZC4iKTtjb25zdHtjTWFwRGF0YTphLGNvbXByZXNzaW9uVHlwZTppfT1hd2FpdCB0KGUpLG49bmV3IENNYXAoITApO2lmKGk9PT1yLkNNYXBDb21wcmVzc2lvblR5cGUuQklOQVJZKXJldHVybihuZXcgcy5CaW5hcnlDTWFwUmVhZGVyKS5wcm9jZXNzKGEsbiwoZT0+ZXh0ZW5kQ01hcChuLHQsZSkpKTtpZihpPT09ci5DTWFwQ29tcHJlc3Npb25UeXBlLk5PTkUpe2NvbnN0IGU9bmV3IG8uTGV4ZXIobmV3IGwuU3RyZWFtKGEpKTtyZXR1cm4gcGFyc2VDTWFwKG4sZSx0LG51bGwpfXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBDTWFwICJjb21wcmVzc2lvblR5cGUiIHZhbHVlOiAke2l9YCl9dC5DTWFwRmFjdG9yeT1jbGFzcyBDTWFwRmFjdG9yeXtzdGF0aWMgYXN5bmMgY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dCx1c2VDTWFwOmF9KXtpZihlIGluc3RhbmNlb2YgaS5OYW1lKXJldHVybiBjcmVhdGVCdWlsdEluQ01hcChlLm5hbWUsdCk7aWYoZSBpbnN0YW5jZW9mIG4uQmFzZVN0cmVhbSl7Y29uc3Qgcj1hd2FpdCBwYXJzZUNNYXAobmV3IENNYXAsbmV3IG8uTGV4ZXIoZSksdCxhKTtyZXR1cm4gci5pc0lkZW50aXR5Q01hcD9jcmVhdGVCdWlsdEluQ01hcChyLm5hbWUsdCk6cn10aHJvdyBuZXcgRXJyb3IoIkVuY29kaW5nIHJlcXVpcmVkLiIpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5CaW5hcnlDTWFwUmVhZGVyPXZvaWQgMDt2YXIgcj1hKDIpO2Z1bmN0aW9uIGhleFRvSW50KGUsdCl7bGV0IGE9MDtmb3IobGV0IHI9MDtyPD10O3IrKylhPWE8PDh8ZVtyXTtyZXR1cm4gYT4+PjB9ZnVuY3Rpb24gaGV4VG9TdHIoZSx0KXtyZXR1cm4gMT09PXQ/U3RyaW5nLmZyb21DaGFyQ29kZShlWzBdLGVbMV0pOjM9PT10P1N0cmluZy5mcm9tQ2hhckNvZGUoZVswXSxlWzFdLGVbMl0sZVszXSk6U3RyaW5nLmZyb21DaGFyQ29kZSguLi5lLnN1YmFycmF5KDAsdCsxKSl9ZnVuY3Rpb24gYWRkSGV4KGUsdCxhKXtsZXQgcj0wO2ZvcihsZXQgaT1hO2k+PTA7aS0tKXtyKz1lW2ldK3RbaV07ZVtpXT0yNTUmcjtyPj49OH19ZnVuY3Rpb24gaW5jSGV4KGUsdCl7bGV0IGE9MTtmb3IobGV0IHI9dDtyPj0wJiZhPjA7ci0tKXthKz1lW3JdO2Vbcl09MjU1JmE7YT4+PTh9fWNvbnN0IGk9MTY7Y2xhc3MgQmluYXJ5Q01hcFN0cmVhbXtjb25zdHJ1Y3RvcihlKXt0aGlzLmJ1ZmZlcj1lO3RoaXMucG9zPTA7dGhpcy5lbmQ9ZS5sZW5ndGg7dGhpcy50bXBCdWY9bmV3IFVpbnQ4QXJyYXkoMTkpfXJlYWRCeXRlKCl7cmV0dXJuIHRoaXMucG9zPj10aGlzLmVuZD8tMTp0aGlzLmJ1ZmZlclt0aGlzLnBvcysrXX1yZWFkTnVtYmVyKCl7bGV0IGUsdD0wO2Rve2NvbnN0IGE9dGhpcy5yZWFkQnl0ZSgpO2lmKGE8MCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigidW5leHBlY3RlZCBFT0YgaW4gYmNtYXAiKTtlPSEoMTI4JmEpO3Q9dDw8N3wxMjcmYX13aGlsZSghZSk7cmV0dXJuIHR9cmVhZFNpZ25lZCgpe2NvbnN0IGU9dGhpcy5yZWFkTnVtYmVyKCk7cmV0dXJuIDEmZT9+KGU+Pj4xKTplPj4+MX1yZWFkSGV4KGUsdCl7ZS5zZXQodGhpcy5idWZmZXIuc3ViYXJyYXkodGhpcy5wb3MsdGhpcy5wb3MrdCsxKSk7dGhpcy5wb3MrPXQrMX1yZWFkSGV4TnVtYmVyKGUsdCl7bGV0IGE7Y29uc3QgaT10aGlzLnRtcEJ1ZjtsZXQgbj0wO2Rve2NvbnN0IGU9dGhpcy5yZWFkQnl0ZSgpO2lmKGU8MCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigidW5leHBlY3RlZCBFT0YgaW4gYmNtYXAiKTthPSEoMTI4JmUpO2lbbisrXT0xMjcmZX13aGlsZSghYSk7bGV0IHM9dCxvPTAsYz0wO2Zvcig7cz49MDspe2Zvcig7Yzw4JiZpLmxlbmd0aD4wOyl7b3w9aVstLW5dPDxjO2MrPTd9ZVtzXT0yNTUmbztzLS07bz4+PTg7Yy09OH19cmVhZEhleFNpZ25lZChlLHQpe3RoaXMucmVhZEhleE51bWJlcihlLHQpO2NvbnN0IGE9MSZlW3RdPzI1NTowO2xldCByPTA7Zm9yKGxldCBpPTA7aTw9dDtpKyspe3I9KDEmcik8PDh8ZVtpXTtlW2ldPXI+PjFeYX19cmVhZFN0cmluZygpe2NvbnN0IGU9dGhpcy5yZWFkTnVtYmVyKCksdD1uZXcgQXJyYXkoZSk7Zm9yKGxldCBhPTA7YTxlO2ErKyl0W2FdPXRoaXMucmVhZE51bWJlcigpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLnQpfX10LkJpbmFyeUNNYXBSZWFkZXI9Y2xhc3MgQmluYXJ5Q01hcFJlYWRlcnthc3luYyBwcm9jZXNzKGUsdCxhKXtjb25zdCByPW5ldyBCaW5hcnlDTWFwU3RyZWFtKGUpLG49ci5yZWFkQnl0ZSgpO3QudmVydGljYWw9ISEoMSZuKTtsZXQgcz1udWxsO2NvbnN0IG89bmV3IFVpbnQ4QXJyYXkoaSksYz1uZXcgVWludDhBcnJheShpKSxsPW5ldyBVaW50OEFycmF5KGkpLGg9bmV3IFVpbnQ4QXJyYXkoaSksdT1uZXcgVWludDhBcnJheShpKTtsZXQgZCxmO2Zvcig7KGY9ci5yZWFkQnl0ZSgpKT49MDspe2NvbnN0IGU9Zj4+NTtpZig3PT09ZSl7c3dpdGNoKDMxJmYpe2Nhc2UgMDpyLnJlYWRTdHJpbmcoKTticmVhaztjYXNlIDE6cz1yLnJlYWRTdHJpbmcoKX1jb250aW51ZX1jb25zdCBhPSEhKDE2JmYpLG49MTUmZjtpZihuKzE+aSl0aHJvdyBuZXcgRXJyb3IoIkJpbmFyeUNNYXBSZWFkZXIucHJvY2VzczogSW52YWxpZCBkYXRhU2l6ZS4iKTtjb25zdCBnPTEscD1yLnJlYWROdW1iZXIoKTtzd2l0Y2goZSl7Y2FzZSAwOnIucmVhZEhleChvLG4pO3IucmVhZEhleE51bWJlcihjLG4pO2FkZEhleChjLG8sbik7dC5hZGRDb2Rlc3BhY2VSYW5nZShuKzEsaGV4VG9JbnQobyxuKSxoZXhUb0ludChjLG4pKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgoYyxuKTtyLnJlYWRIZXhOdW1iZXIobyxuKTthZGRIZXgobyxjLG4pO3IucmVhZEhleE51bWJlcihjLG4pO2FkZEhleChjLG8sbik7dC5hZGRDb2Rlc3BhY2VSYW5nZShuKzEsaGV4VG9JbnQobyxuKSxoZXhUb0ludChjLG4pKX1icmVhaztjYXNlIDE6ci5yZWFkSGV4KG8sbik7ci5yZWFkSGV4TnVtYmVyKGMsbik7YWRkSGV4KGMsbyxuKTtyLnJlYWROdW1iZXIoKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgoYyxuKTtyLnJlYWRIZXhOdW1iZXIobyxuKTthZGRIZXgobyxjLG4pO3IucmVhZEhleE51bWJlcihjLG4pO2FkZEhleChjLG8sbik7ci5yZWFkTnVtYmVyKCl9YnJlYWs7Y2FzZSAyOnIucmVhZEhleChsLG4pO2Q9ci5yZWFkTnVtYmVyKCk7dC5tYXBPbmUoaGV4VG9JbnQobCxuKSxkKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgobCxuKTtpZighYSl7ci5yZWFkSGV4TnVtYmVyKHUsbik7YWRkSGV4KGwsdSxuKX1kPXIucmVhZFNpZ25lZCgpKyhkKzEpO3QubWFwT25lKGhleFRvSW50KGwsbiksZCl9YnJlYWs7Y2FzZSAzOnIucmVhZEhleChvLG4pO3IucmVhZEhleE51bWJlcihjLG4pO2FkZEhleChjLG8sbik7ZD1yLnJlYWROdW1iZXIoKTt0Lm1hcENpZFJhbmdlKGhleFRvSW50KG8sbiksaGV4VG9JbnQoYyxuKSxkKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgoYyxuKTtpZihhKW8uc2V0KGMpO2Vsc2V7ci5yZWFkSGV4TnVtYmVyKG8sbik7YWRkSGV4KG8sYyxuKX1yLnJlYWRIZXhOdW1iZXIoYyxuKTthZGRIZXgoYyxvLG4pO2Q9ci5yZWFkTnVtYmVyKCk7dC5tYXBDaWRSYW5nZShoZXhUb0ludChvLG4pLGhleFRvSW50KGMsbiksZCl9YnJlYWs7Y2FzZSA0OnIucmVhZEhleChsLGcpO3IucmVhZEhleChoLG4pO3QubWFwT25lKGhleFRvSW50KGwsZyksaGV4VG9TdHIoaCxuKSk7Zm9yKGxldCBlPTE7ZTxwO2UrKyl7aW5jSGV4KGwsZyk7aWYoIWEpe3IucmVhZEhleE51bWJlcih1LGcpO2FkZEhleChsLHUsZyl9aW5jSGV4KGgsbik7ci5yZWFkSGV4U2lnbmVkKHUsbik7YWRkSGV4KGgsdSxuKTt0Lm1hcE9uZShoZXhUb0ludChsLGcpLGhleFRvU3RyKGgsbikpfWJyZWFrO2Nhc2UgNTpyLnJlYWRIZXgobyxnKTtyLnJlYWRIZXhOdW1iZXIoYyxnKTthZGRIZXgoYyxvLGcpO3IucmVhZEhleChoLG4pO3QubWFwQmZSYW5nZShoZXhUb0ludChvLGcpLGhleFRvSW50KGMsZyksaGV4VG9TdHIoaCxuKSk7Zm9yKGxldCBlPTE7ZTxwO2UrKyl7aW5jSGV4KGMsZyk7aWYoYSlvLnNldChjKTtlbHNle3IucmVhZEhleE51bWJlcihvLGcpO2FkZEhleChvLGMsZyl9ci5yZWFkSGV4TnVtYmVyKGMsZyk7YWRkSGV4KGMsbyxnKTtyLnJlYWRIZXgoaCxuKTt0Lm1hcEJmUmFuZ2UoaGV4VG9JbnQobyxnKSxoZXhUb0ludChjLGcpLGhleFRvU3RyKGgsbikpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBCaW5hcnlDTWFwUmVhZGVyLnByb2Nlc3MgLSB1bmtub3duIHR5cGU6ICR7ZX1gKX19cmV0dXJuIHM/YShzKTp0fX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5QYXJzZXI9dC5MaW5lYXJpemF0aW9uPXQuTGV4ZXI9dm9pZCAwO3ZhciByPWEoMiksaT1hKDQpLG49YSgzKSxzPWEoOCksbz1hKDE3KSxjPWEoMTkpLGw9YSgyMCksaD1hKDIyKSx1PWEoMjMpLGQ9YSgyNiksZj1hKDI5KSxnPWEoMzEpLHA9YSgzMiksbT1hKDMzKTtjbGFzcyBQYXJzZXJ7Y29uc3RydWN0b3Ioe2xleGVyOmUseHJlZjp0LGFsbG93U3RyZWFtczphPSExLHJlY292ZXJ5TW9kZTpyPSExfSl7dGhpcy5sZXhlcj1lO3RoaXMueHJlZj10O3RoaXMuYWxsb3dTdHJlYW1zPWE7dGhpcy5yZWNvdmVyeU1vZGU9cjt0aGlzLmltYWdlQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9pbWFnZUlkPTA7dGhpcy5yZWZpbGwoKX1yZWZpbGwoKXt0aGlzLmJ1ZjE9dGhpcy5sZXhlci5nZXRPYmooKTt0aGlzLmJ1ZjI9dGhpcy5sZXhlci5nZXRPYmooKX1zaGlmdCgpe2lmKHRoaXMuYnVmMiBpbnN0YW5jZW9mIGkuQ21kJiYiSUQiPT09dGhpcy5idWYyLmNtZCl7dGhpcy5idWYxPXRoaXMuYnVmMjt0aGlzLmJ1ZjI9bnVsbH1lbHNle3RoaXMuYnVmMT10aGlzLmJ1ZjI7dGhpcy5idWYyPXRoaXMubGV4ZXIuZ2V0T2JqKCl9fXRyeVNoaWZ0KCl7dHJ5e3RoaXMuc2hpZnQoKTtyZXR1cm4hMH1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygbi5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3JldHVybiExfX1nZXRPYmooZT1udWxsKXtjb25zdCB0PXRoaXMuYnVmMTt0aGlzLnNoaWZ0KCk7aWYodCBpbnN0YW5jZW9mIGkuQ21kKXN3aXRjaCh0LmNtZCl7Y2FzZSJCSSI6cmV0dXJuIHRoaXMubWFrZUlubGluZUltYWdlKGUpO2Nhc2UiWyI6Y29uc3QgYT1bXTtmb3IoOyEoMCxpLmlzQ21kKSh0aGlzLmJ1ZjEsIl0iKSYmdGhpcy5idWYxIT09aS5FT0Y7KWEucHVzaCh0aGlzLmdldE9iaihlKSk7aWYodGhpcy5idWYxPT09aS5FT0Ype2lmKHRoaXMucmVjb3ZlcnlNb2RlKXJldHVybiBhO3Rocm93IG5ldyBuLlBhcnNlckVPRkV4Y2VwdGlvbigiRW5kIG9mIGZpbGUgaW5zaWRlIGFycmF5LiIpfXRoaXMuc2hpZnQoKTtyZXR1cm4gYTtjYXNlIjw8Ijpjb25zdCBzPW5ldyBpLkRpY3QodGhpcy54cmVmKTtmb3IoOyEoMCxpLmlzQ21kKSh0aGlzLmJ1ZjEsIj4+IikmJnRoaXMuYnVmMSE9PWkuRU9GOyl7aWYoISh0aGlzLmJ1ZjEgaW5zdGFuY2VvZiBpLk5hbWUpKXsoMCxyLmluZm8pKCJNYWxmb3JtZWQgZGljdGlvbmFyeToga2V5IG11c3QgYmUgYSBuYW1lIG9iamVjdCIpO3RoaXMuc2hpZnQoKTtjb250aW51ZX1jb25zdCB0PXRoaXMuYnVmMS5uYW1lO3RoaXMuc2hpZnQoKTtpZih0aGlzLmJ1ZjE9PT1pLkVPRilicmVhaztzLnNldCh0LHRoaXMuZ2V0T2JqKGUpKX1pZih0aGlzLmJ1ZjE9PT1pLkVPRil7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIHM7dGhyb3cgbmV3IG4uUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgZGljdGlvbmFyeS4iKX1pZigoMCxpLmlzQ21kKSh0aGlzLmJ1ZjIsInN0cmVhbSIpKXJldHVybiB0aGlzLmFsbG93U3RyZWFtcz90aGlzLm1ha2VTdHJlYW0ocyxlKTpzO3RoaXMuc2hpZnQoKTtyZXR1cm4gcztkZWZhdWx0OnJldHVybiB0fWlmKE51bWJlci5pc0ludGVnZXIodCkpe2lmKE51bWJlci5pc0ludGVnZXIodGhpcy5idWYxKSYmKDAsaS5pc0NtZCkodGhpcy5idWYyLCJSIikpe2NvbnN0IGU9aS5SZWYuZ2V0KHQsdGhpcy5idWYxKTt0aGlzLnNoaWZ0KCk7dGhpcy5zaGlmdCgpO3JldHVybiBlfXJldHVybiB0fXJldHVybiJzdHJpbmciPT10eXBlb2YgdCYmZT9lLmRlY3J5cHRTdHJpbmcodCk6dH1maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKXtjb25zdHtrbm93bkNvbW1hbmRzOnR9PXRoaXMubGV4ZXIsYT1lLnBvcztsZXQgbyxjLGw9MDtmb3IoOy0xIT09KG89ZS5nZXRCeXRlKCkpOylpZigwPT09bClsPTY5PT09bz8xOjA7ZWxzZSBpZigxPT09bClsPTczPT09bz8yOjA7ZWxzZSBpZigzMj09PW98fDEwPT09b3x8MTM9PT1vKXtjPWUucG9zO2NvbnN0IGE9ZS5wZWVrQnl0ZXMoMTUpLG49YS5sZW5ndGg7aWYoMD09PW4pYnJlYWs7Zm9yKGxldCBlPTA7ZTxuO2UrKyl7bz1hW2VdO2lmKCgwIT09b3x8MD09PWFbZSsxXSkmJigxMCE9PW8mJjEzIT09byYmKG88MzJ8fG8+MTI3KSkpe2w9MDticmVha319aWYoMiE9PWwpY29udGludWU7aWYoIXQpeygwLHIud2FybikoImZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kIC0gYGxleGVyLmtub3duQ29tbWFuZHNgIGlzIHVuZGVmaW5lZC4iKTtjb250aW51ZX1jb25zdCBoPW5ldyBMZXhlcihuZXcgcy5TdHJlYW0oYS5zbGljZSgpKSx0KTtoLl9oZXhTdHJpbmdXYXJuPSgpPT57fTtsZXQgdT0wO2Zvcig7Oyl7Y29uc3QgZT1oLmdldE9iaigpO2lmKGU9PT1pLkVPRil7bD0wO2JyZWFrfWlmKGUgaW5zdGFuY2VvZiBpLkNtZCl7Y29uc3QgYT10W2UuY21kXTtpZighYSl7bD0wO2JyZWFrfWlmKGEudmFyaWFibGVBcmdzP3U8PWEubnVtQXJnczp1PT09YS5udW1BcmdzKWJyZWFrO3U9MH1lbHNlIHUrK31pZigyPT09bClicmVha31lbHNlIGw9MDtpZigtMT09PW8peygwLHIud2FybikoImZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kOiBSZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSB3aXRob3V0IGZpbmRpbmcgYSB2YWxpZCBFSSBtYXJrZXIiKTtpZihjKXsoMCxyLndhcm4pKCcuLi4gdHJ5aW5nIHRvIHJlY292ZXIgYnkgdXNpbmcgdGhlIGxhc3QgIkVJIiBvY2N1cnJlbmNlLicpO2Uuc2tpcCgtKGUucG9zLWMpKX19bGV0IGg9NDtlLnNraXAoLWgpO289ZS5wZWVrQnl0ZSgpO2Uuc2tpcChoKTsoMCxuLmlzV2hpdGVTcGFjZSkobyl8fGgtLTtyZXR1cm4gZS5wb3MtaC1hfWZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgYSxpLG49ITE7Zm9yKDstMSE9PShhPWUuZ2V0Qnl0ZSgpKTspaWYoMjU1PT09YSl7c3dpdGNoKGUuZ2V0Qnl0ZSgpKXtjYXNlIDA6YnJlYWs7Y2FzZSAyNTU6ZS5za2lwKC0xKTticmVhaztjYXNlIDIxNzpuPSEwO2JyZWFrO2Nhc2UgMTkyOmNhc2UgMTkzOmNhc2UgMTk0OmNhc2UgMTk1OmNhc2UgMTk3OmNhc2UgMTk4OmNhc2UgMTk5OmNhc2UgMjAxOmNhc2UgMjAyOmNhc2UgMjAzOmNhc2UgMjA1OmNhc2UgMjA2OmNhc2UgMjA3OmNhc2UgMTk2OmNhc2UgMjA0OmNhc2UgMjE4OmNhc2UgMjE5OmNhc2UgMjIwOmNhc2UgMjIxOmNhc2UgMjIyOmNhc2UgMjIzOmNhc2UgMjI0OmNhc2UgMjI1OmNhc2UgMjI2OmNhc2UgMjI3OmNhc2UgMjI4OmNhc2UgMjI5OmNhc2UgMjMwOmNhc2UgMjMxOmNhc2UgMjMyOmNhc2UgMjMzOmNhc2UgMjM0OmNhc2UgMjM1OmNhc2UgMjM2OmNhc2UgMjM3OmNhc2UgMjM4OmNhc2UgMjM5OmNhc2UgMjU0Omk9ZS5nZXRVaW50MTYoKTtpPjI/ZS5za2lwKGktMik6ZS5za2lwKC0yKX1pZihuKWJyZWFrfWNvbnN0IHM9ZS5wb3MtdDtpZigtMT09PWEpeygwLHIud2FybikoIklubGluZSBEQ1REZWNvZGUgaW1hZ2Ugc3RyZWFtOiBFT0kgbWFya2VyIG5vdCBmb3VuZCwgc2VhcmNoaW5nIGZvciAvRUkvIGluc3RlYWQuIik7ZS5za2lwKC1zKTtyZXR1cm4gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKX10aGlzLmlubGluZVN0cmVhbVNraXBFSShlKTtyZXR1cm4gc31maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBhO2Zvcig7LTEhPT0oYT1lLmdldEJ5dGUoKSk7KWlmKDEyNj09PWEpe2NvbnN0IHQ9ZS5wb3M7YT1lLnBlZWtCeXRlKCk7Zm9yKDsoMCxuLmlzV2hpdGVTcGFjZSkoYSk7KXtlLnNraXAoKTthPWUucGVla0J5dGUoKX1pZig2Mj09PWEpe2Uuc2tpcCgpO2JyZWFrfWlmKGUucG9zPnQpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMik7aWYoNjk9PT10WzBdJiY3Mz09PXRbMV0pYnJlYWt9fWNvbnN0IGk9ZS5wb3MtdDtpZigtMT09PWEpeygwLHIud2FybikoIklubGluZSBBU0NJSTg1RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtaSk7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIGl9ZmluZEFTQ0lJSGV4RGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IGE7Zm9yKDstMSE9PShhPWUuZ2V0Qnl0ZSgpKSYmNjIhPT1hOyk7Y29uc3QgaT1lLnBvcy10O2lmKC0xPT09YSl7KDAsci53YXJuKSgiSW5saW5lIEFTQ0lJSGV4RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtaSk7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIGl9aW5saW5lU3RyZWFtU2tpcEVJKGUpe2xldCB0LGE9MDtmb3IoOy0xIT09KHQ9ZS5nZXRCeXRlKCkpOylpZigwPT09YSlhPTY5PT09dD8xOjA7ZWxzZSBpZigxPT09YSlhPTczPT09dD8yOjA7ZWxzZSBpZigyPT09YSlicmVha31tYWtlSW5saW5lSW1hZ2UoZSl7Y29uc3QgdD10aGlzLmxleGVyLGE9dC5zdHJlYW0sbj1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBzO2Zvcig7ISgwLGkuaXNDbWQpKHRoaXMuYnVmMSwiSUQiKSYmdGhpcy5idWYxIT09aS5FT0Y7KXtpZighKHRoaXMuYnVmMSBpbnN0YW5jZW9mIGkuTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkRpY3Rpb25hcnkga2V5IG11c3QgYmUgYSBuYW1lIG9iamVjdCIpO2NvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PWkuRU9GKWJyZWFrO25bdF09dGhpcy5nZXRPYmooZSl9LTEhPT10LmJlZ2luSW5saW5lSW1hZ2VQb3MmJihzPWEucG9zLXQuYmVnaW5JbmxpbmVJbWFnZVBvcyk7Y29uc3Qgbz10aGlzLnhyZWYuZmV0Y2hJZlJlZihuLkZ8fG4uRmlsdGVyKTtsZXQgYztpZihvIGluc3RhbmNlb2YgaS5OYW1lKWM9by5uYW1lO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShvKSl7Y29uc3QgZT10aGlzLnhyZWYuZmV0Y2hJZlJlZihvWzBdKTtlIGluc3RhbmNlb2YgaS5OYW1lJiYoYz1lLm5hbWUpfWNvbnN0IGw9YS5wb3M7bGV0IGgsdTtzd2l0Y2goYyl7Y2FzZSJEQ1QiOmNhc2UiRENURGVjb2RlIjpoPXRoaXMuZmluZERDVERlY29kZUlubGluZVN0cmVhbUVuZChhKTticmVhaztjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpoPXRoaXMuZmluZEFTQ0lJODVEZWNvZGVJbmxpbmVTdHJlYW1FbmQoYSk7YnJlYWs7Y2FzZSJBSHgiOmNhc2UiQVNDSUlIZXhEZWNvZGUiOmg9dGhpcy5maW5kQVNDSUlIZXhEZWNvZGVJbmxpbmVTdHJlYW1FbmQoYSk7YnJlYWs7ZGVmYXVsdDpoPXRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoYSl9aWYoaDwxZTMmJnM+MCl7Y29uc3QgZT1hLnBvczthLnBvcz10LmJlZ2luSW5saW5lSW1hZ2VQb3M7dT1mdW5jdGlvbiBnZXRJbmxpbmVJbWFnZUNhY2hlS2V5KGUpe2NvbnN0IHQ9W10sYT1lLmxlbmd0aDtsZXQgcj0wO2Zvcig7cjxhLTE7KXQucHVzaChlW3IrK108PDh8ZVtyKytdKTtyPGEmJnQucHVzaChlW3JdKTtyZXR1cm4gYSsiXyIrU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLHQpfShhLmdldEJ5dGVzKHMraCkpO2EucG9zPWU7Y29uc3Qgcj10aGlzLmltYWdlQ2FjaGVbdV07aWYodm9pZCAwIT09cil7dGhpcy5idWYyPWkuQ21kLmdldCgiRUkiKTt0aGlzLnNoaWZ0KCk7ci5yZXNldCgpO3JldHVybiByfX1jb25zdCBkPW5ldyBpLkRpY3QodGhpcy54cmVmKTtmb3IoY29uc3QgZSBpbiBuKWQuc2V0KGUsbltlXSk7bGV0IGY9YS5tYWtlU3ViU3RyZWFtKGwsaCxkKTtlJiYoZj1lLmNyZWF0ZVN0cmVhbShmLGgpKTtmPXRoaXMuZmlsdGVyKGYsZCxoKTtmLmRpY3Q9ZDtpZih2b2lkIDAhPT11KXtmLmNhY2hlS2V5PSJpbmxpbmVfaW1nXyIrICsrdGhpcy5faW1hZ2VJZDt0aGlzLmltYWdlQ2FjaGVbdV09Zn10aGlzLmJ1ZjI9aS5DbWQuZ2V0KCJFSSIpO3RoaXMuc2hpZnQoKTtyZXR1cm4gZn1fZmluZFN0cmVhbUxlbmd0aChlLHQpe2NvbnN0e3N0cmVhbTphfT10aGlzLmxleGVyO2EucG9zPWU7Y29uc3Qgcj10Lmxlbmd0aDtmb3IoO2EucG9zPGEuZW5kOyl7Y29uc3QgaT1hLnBlZWtCeXRlcygyMDQ4KSxuPWkubGVuZ3RoLXI7aWYobjw9MClicmVhaztsZXQgcz0wO2Zvcig7czxuOyl7bGV0IG49MDtmb3IoO248ciYmaVtzK25dPT09dFtuXTspbisrO2lmKG4+PXIpe2EucG9zKz1zO3JldHVybiBhLnBvcy1lfXMrK31hLnBvcys9bn1yZXR1cm4tMX1tYWtlU3RyZWFtKGUsdCl7Y29uc3QgYT10aGlzLmxleGVyO2xldCBzPWEuc3RyZWFtO2Euc2tpcFRvTmV4dExpbmUoKTtjb25zdCBvPXMucG9zLTE7bGV0IGM9ZS5nZXQoIkxlbmd0aCIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGMpKXsoMCxyLmluZm8pKGBCYWQgbGVuZ3RoICIke2MmJmMudG9TdHJpbmcoKX0iIGluIHN0cmVhbS5gKTtjPTB9cy5wb3M9bytjO2EubmV4dENoYXIoKTtpZih0aGlzLnRyeVNoaWZ0KCkmJigwLGkuaXNDbWQpKHRoaXMuYnVmMiwiZW5kc3RyZWFtIikpdGhpcy5zaGlmdCgpO2Vsc2V7Y29uc3QgZT1uZXcgVWludDhBcnJheShbMTAxLDExMCwxMDAsMTE1LDExNiwxMTQsMTAxLDk3LDEwOV0pO2xldCB0PXRoaXMuX2ZpbmRTdHJlYW1MZW5ndGgobyxlKTtpZih0PDApe2NvbnN0IGE9MTtmb3IobGV0IGk9MTtpPD1hO2krKyl7Y29uc3QgYT1lLmxlbmd0aC1pLGM9ZS5zbGljZSgwLGEpLGw9dGhpcy5fZmluZFN0cmVhbUxlbmd0aChvLGMpO2lmKGw+PTApe2NvbnN0IGU9cy5wZWVrQnl0ZXMoYSsxKVthXTtpZighKDAsbi5pc1doaXRlU3BhY2UpKGUpKWJyZWFrOygwLHIuaW5mbykoYEZvdW5kICIkeygwLHIuYnl0ZXNUb1N0cmluZykoYyl9IiB3aGVuIHNlYXJjaGluZyBmb3IgZW5kc3RyZWFtIGNvbW1hbmQuYCk7dD1sO2JyZWFrfX1pZih0PDApdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk1pc3NpbmcgZW5kc3RyZWFtIGNvbW1hbmQuIil9Yz10O2EubmV4dENoYXIoKTt0aGlzLnNoaWZ0KCk7dGhpcy5zaGlmdCgpfXRoaXMuc2hpZnQoKTtzPXMubWFrZVN1YlN0cmVhbShvLGMsZSk7dCYmKHM9dC5jcmVhdGVTdHJlYW0ocyxjKSk7cz10aGlzLmZpbHRlcihzLGUsYyk7cy5kaWN0PWU7cmV0dXJuIHN9ZmlsdGVyKGUsdCxhKXtsZXQgbj10LmdldCgiRiIsIkZpbHRlciIpLHM9dC5nZXQoIkRQIiwiRGVjb2RlUGFybXMiKTtpZihuIGluc3RhbmNlb2YgaS5OYW1lKXtBcnJheS5pc0FycmF5KHMpJiYoMCxyLndhcm4pKCIvRGVjb2RlUGFybXMgc2hvdWxkIG5vdCBiZSBhbiBBcnJheSwgd2hlbiAvRmlsdGVyIGlzIGEgTmFtZS4iKTtyZXR1cm4gdGhpcy5tYWtlRmlsdGVyKGUsbi5uYW1lLGEscyl9bGV0IG89YTtpZihBcnJheS5pc0FycmF5KG4pKXtjb25zdCB0PW4sYT1zO2ZvcihsZXQgYz0wLGw9dC5sZW5ndGg7YzxsOysrYyl7bj10aGlzLnhyZWYuZmV0Y2hJZlJlZih0W2NdKTtpZighKG4gaW5zdGFuY2VvZiBpLk5hbWUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBCYWQgZmlsdGVyIG5hbWUgIiR7bn0iYCk7cz1udWxsO0FycmF5LmlzQXJyYXkoYSkmJmMgaW4gYSYmKHM9dGhpcy54cmVmLmZldGNoSWZSZWYoYVtjXSkpO2U9dGhpcy5tYWtlRmlsdGVyKGUsbi5uYW1lLG8scyk7bz1udWxsfX1yZXR1cm4gZX1tYWtlRmlsdGVyKGUsdCxhLGkpe2lmKDA9PT1hKXsoMCxyLndhcm4pKGBFbXB0eSAiJHt0fSIgc3RyZWFtLmApO3JldHVybiBuZXcgcy5OdWxsU3RyZWFtfXRyeXtzd2l0Y2godCl7Y2FzZSJGbCI6Y2FzZSJGbGF0ZURlY29kZSI6cmV0dXJuIGk/bmV3IHAuUHJlZGljdG9yU3RyZWFtKG5ldyBoLkZsYXRlU3RyZWFtKGUsYSksYSxpKTpuZXcgaC5GbGF0ZVN0cmVhbShlLGEpO2Nhc2UiTFpXIjpjYXNlIkxaV0RlY29kZSI6bGV0IHQ9MTtpZihpKXtpLmhhcygiRWFybHlDaGFuZ2UiKSYmKHQ9aS5nZXQoIkVhcmx5Q2hhbmdlIikpO3JldHVybiBuZXcgcC5QcmVkaWN0b3JTdHJlYW0obmV3IGcuTFpXU3RyZWFtKGUsYSx0KSxhLGkpfXJldHVybiBuZXcgZy5MWldTdHJlYW0oZSxhLHQpO2Nhc2UiRENUIjpjYXNlIkRDVERlY29kZSI6cmV0dXJuIG5ldyBkLkpwZWdTdHJlYW0oZSxhLGkpO2Nhc2UiSlBYIjpjYXNlIkpQWERlY29kZSI6cmV0dXJuIG5ldyBmLkpweFN0cmVhbShlLGEsaSk7Y2FzZSJBODUiOmNhc2UiQVNDSUk4NURlY29kZSI6cmV0dXJuIG5ldyBvLkFzY2lpODVTdHJlYW0oZSxhKTtjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6cmV0dXJuIG5ldyBjLkFzY2lpSGV4U3RyZWFtKGUsYSk7Y2FzZSJDQ0YiOmNhc2UiQ0NJVFRGYXhEZWNvZGUiOnJldHVybiBuZXcgbC5DQ0lUVEZheFN0cmVhbShlLGEsaSk7Y2FzZSJSTCI6Y2FzZSJSdW5MZW5ndGhEZWNvZGUiOnJldHVybiBuZXcgbS5SdW5MZW5ndGhTdHJlYW0oZSxhKTtjYXNlIkpCSUcyRGVjb2RlIjpyZXR1cm4gbmV3IHUuSmJpZzJTdHJlYW0oZSxhLGkpfSgwLHIud2FybikoYEZpbHRlciAiJHt0fSIgaXMgbm90IHN1cHBvcnRlZC5gKTtyZXR1cm4gZX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygbi5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLHIud2FybikoYEludmFsaWQgc3RyZWFtOiAiJHtlfSJgKTtyZXR1cm4gbmV3IHMuTnVsbFN0cmVhbX19fXQuUGFyc2VyPVBhcnNlcjtjb25zdCBiPVsxLDAsMCwwLDAsMCwwLDAsMCwxLDEsMCwxLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDIsMCwwLDIsMiwwLDAsMCwwLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXTtmdW5jdGlvbiB0b0hleERpZ2l0KGUpe3JldHVybiBlPj00OCYmZTw9NTc/MTUmZTplPj02NSYmZTw9NzB8fGU+PTk3JiZlPD0xMDI/OSsoMTUmZSk6LTF9Y2xhc3MgTGV4ZXJ7Y29uc3RydWN0b3IoZSx0PW51bGwpe3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpO3RoaXMuc3RyQnVmPVtdO3RoaXMua25vd25Db21tYW5kcz10O3RoaXMuX2hleFN0cmluZ051bVdhcm49MDt0aGlzLmJlZ2luSW5saW5lSW1hZ2VQb3M9LTF9bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9cGVla0NoYXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0ucGVla0J5dGUoKX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyLHQ9ITEsYT0wLGk9MDtpZig0NT09PWUpe2k9LTE7ZT10aGlzLm5leHRDaGFyKCk7NDU9PT1lJiYoZT10aGlzLm5leHRDaGFyKCkpfWVsc2UgaWYoNDM9PT1lKXtpPTE7ZT10aGlzLm5leHRDaGFyKCl9aWYoMTA9PT1lfHwxMz09PWUpZG97ZT10aGlzLm5leHRDaGFyKCl9d2hpbGUoMTA9PT1lfHwxMz09PWUpO2lmKDQ2PT09ZSl7YT0xMDtlPXRoaXMubmV4dENoYXIoKX1pZihlPDQ4fHxlPjU3KXtjb25zdCB0PWBJbnZhbGlkIG51bWJlcjogJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfSAoY2hhckNvZGUgJHtlfSlgO2lmKCgwLG4uaXNXaGl0ZVNwYWNlKShlKXx8LTE9PT1lKXsoMCxyLmluZm8pKGBMZXhlci5nZXROdW1iZXIgLSAiJHt0fSIuYCk7cmV0dXJuIDB9dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IodCl9aXx8PTE7bGV0IHM9ZS00OCxvPTAsYz0xO2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MDspaWYoZT49NDgmJmU8PTU3KXtjb25zdCByPWUtNDg7aWYodClvPTEwKm8rcjtlbHNlezAhPT1hJiYoYSo9MTApO3M9MTAqcytyfX1lbHNlIGlmKDQ2PT09ZSl7aWYoMCE9PWEpYnJlYWs7YT0xfWVsc2UgaWYoNDU9PT1lKSgwLHIud2FybikoIkJhZGx5IGZvcm1hdHRlZCBudW1iZXI6IG1pbnVzIHNpZ24gaW4gdGhlIG1pZGRsZSIpO2Vsc2V7aWYoNjkhPT1lJiYxMDEhPT1lKWJyZWFrO2U9dGhpcy5wZWVrQ2hhcigpO2lmKDQzPT09ZXx8NDU9PT1lKXtjPTQ1PT09ZT8tMToxO3RoaXMubmV4dENoYXIoKX1lbHNlIGlmKGU8NDh8fGU+NTcpYnJlYWs7dD0hMH0wIT09YSYmKHMvPWEpO3QmJihzKj0xMCoqKGMqbykpO3JldHVybiBpKnN9Z2V0U3RyaW5nKCl7bGV0IGU9MSx0PSExO2NvbnN0IGE9dGhpcy5zdHJCdWY7YS5sZW5ndGg9MDtsZXQgaT10aGlzLm5leHRDaGFyKCk7Zm9yKDs7KXtsZXQgbj0hMTtzd2l0Y2goMHxpKXtjYXNlLTE6KDAsci53YXJuKSgiVW50ZXJtaW5hdGVkIHN0cmluZyIpO3Q9ITA7YnJlYWs7Y2FzZSA0MDorK2U7YS5wdXNoKCIoIik7YnJlYWs7Y2FzZSA0MTppZigwPT0tLWUpe3RoaXMubmV4dENoYXIoKTt0PSEwfWVsc2UgYS5wdXNoKCIpIik7YnJlYWs7Y2FzZSA5MjppPXRoaXMubmV4dENoYXIoKTtzd2l0Y2goaSl7Y2FzZS0xOigwLHIud2FybikoIlVudGVybWluYXRlZCBzdHJpbmciKTt0PSEwO2JyZWFrO2Nhc2UgMTEwOmEucHVzaCgiXG4iKTticmVhaztjYXNlIDExNDphLnB1c2goIlxyIik7YnJlYWs7Y2FzZSAxMTY6YS5wdXNoKCJcdCIpO2JyZWFrO2Nhc2UgOTg6YS5wdXNoKCJcYiIpO2JyZWFrO2Nhc2UgMTAyOmEucHVzaCgiXGYiKTticmVhaztjYXNlIDkyOmNhc2UgNDA6Y2FzZSA0MTphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShpKSk7YnJlYWs7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmxldCBlPTE1Jmk7aT10aGlzLm5leHRDaGFyKCk7bj0hMDtpZihpPj00OCYmaTw9NTUpe2U9KGU8PDMpKygxNSZpKTtpPXRoaXMubmV4dENoYXIoKTtpZihpPj00OCYmaTw9NTUpe249ITE7ZT0oZTw8MykrKDE1JmkpfX1hLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7YnJlYWs7Y2FzZSAxMzoxMD09PXRoaXMucGVla0NoYXIoKSYmdGhpcy5uZXh0Q2hhcigpO2JyZWFrO2Nhc2UgMTA6YnJlYWs7ZGVmYXVsdDphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShpKSl9YnJlYWs7ZGVmYXVsdDphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShpKSl9aWYodClicmVhaztufHwoaT10aGlzLm5leHRDaGFyKCkpfXJldHVybiBhLmpvaW4oIiIpfWdldE5hbWUoKXtsZXQgZSx0O2NvbnN0IGE9dGhpcy5zdHJCdWY7YS5sZW5ndGg9MDtmb3IoOyhlPXRoaXMubmV4dENoYXIoKSk+PTAmJiFiW2VdOylpZigzNT09PWUpe2U9dGhpcy5uZXh0Q2hhcigpO2lmKGJbZV0peygwLHIud2FybikoIkxleGVyX2dldE5hbWU6IE5VTUJFUiBTSUdOICgjKSBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSBoZXhhZGVjaW1hbCBudW1iZXIuIik7YS5wdXNoKCIjIik7YnJlYWt9Y29uc3QgaT10b0hleERpZ2l0KGUpO2lmKC0xIT09aSl7dD1lO2U9dGhpcy5uZXh0Q2hhcigpO2NvbnN0IG49dG9IZXhEaWdpdChlKTtpZigtMT09PW4peygwLHIud2FybikoYExleGVyX2dldE5hbWU6IElsbGVnYWwgZGlnaXQgKCR7U3RyaW5nLmZyb21DaGFyQ29kZShlKX0pIGluIGhleGFkZWNpbWFsIG51bWJlci5gKTthLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO2lmKGJbZV0pYnJlYWs7YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2NvbnRpbnVlfWEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGk8PDR8bikpfWVsc2UgYS5wdXNoKCIjIixTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKX1lbHNlIGEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTthLmxlbmd0aD4xMjcmJigwLHIud2FybikoYE5hbWUgdG9rZW4gaXMgbG9uZ2VyIHRoYW4gYWxsb3dlZCBieSB0aGUgc3BlYzogJHthLmxlbmd0aH1gKTtyZXR1cm4gaS5OYW1lLmdldChhLmpvaW4oIiIpKX1faGV4U3RyaW5nV2FybihlKXs1IT10aGlzLl9oZXhTdHJpbmdOdW1XYXJuKys/dGhpcy5faGV4U3RyaW5nTnVtV2Fybj41fHwoMCxyLndhcm4pKGBnZXRIZXhTdHJpbmcgLSBpZ25vcmluZyBpbnZhbGlkIGNoYXJhY3RlcjogJHtlfWApOigwLHIud2FybikoImdldEhleFN0cmluZyAtIGlnbm9yaW5nIGFkZGl0aW9uYWwgaW52YWxpZCBjaGFyYWN0ZXJzLiIpfWdldEhleFN0cmluZygpe2NvbnN0IGU9dGhpcy5zdHJCdWY7ZS5sZW5ndGg9MDtsZXQgdCxhLGk9dGhpcy5jdXJyZW50Q2hhcixuPSEwO3RoaXMuX2hleFN0cmluZ051bVdhcm49MDtmb3IoOzspe2lmKGk8MCl7KDAsci53YXJuKSgiVW50ZXJtaW5hdGVkIGhleCBzdHJpbmciKTticmVha31pZig2Mj09PWkpe3RoaXMubmV4dENoYXIoKTticmVha31pZigxIT09YltpXSl7aWYobil7dD10b0hleERpZ2l0KGkpO2lmKC0xPT09dCl7dGhpcy5faGV4U3RyaW5nV2FybihpKTtpPXRoaXMubmV4dENoYXIoKTtjb250aW51ZX19ZWxzZXthPXRvSGV4RGlnaXQoaSk7aWYoLTE9PT1hKXt0aGlzLl9oZXhTdHJpbmdXYXJuKGkpO2k9dGhpcy5uZXh0Q2hhcigpO2NvbnRpbnVlfWUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQ8PDR8YSkpfW49IW47aT10aGlzLm5leHRDaGFyKCl9ZWxzZSBpPXRoaXMubmV4dENoYXIoKX1yZXR1cm4gZS5qb2luKCIiKX1nZXRPYmooKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZih0PDApcmV0dXJuIGkuRU9GO2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoMSE9PWJbdF0pYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gdGhpcy5nZXROdW1iZXIoKTtjYXNlIDQwOnJldHVybiB0aGlzLmdldFN0cmluZygpO2Nhc2UgNDc6cmV0dXJuIHRoaXMuZ2V0TmFtZSgpO2Nhc2UgOTE6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBpLkNtZC5nZXQoIlsiKTtjYXNlIDkzOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gaS5DbWQuZ2V0KCJdIik7Y2FzZSA2MDp0PXRoaXMubmV4dENoYXIoKTtpZig2MD09PXQpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gaS5DbWQuZ2V0KCI8PCIpfXJldHVybiB0aGlzLmdldEhleFN0cmluZygpO2Nhc2UgNjI6dD10aGlzLm5leHRDaGFyKCk7aWYoNjI9PT10KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIGkuQ21kLmdldCgiPj4iKX1yZXR1cm4gaS5DbWQuZ2V0KCI+Iik7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBpLkNtZC5nZXQoInsiKTtjYXNlIDEyNTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIGkuQ21kLmdldCgifSIpO2Nhc2UgNDE6dGhpcy5uZXh0Q2hhcigpO3Rocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbGxlZ2FsIGNoYXJhY3RlcjogJHt0fWApfWxldCBhPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7aWYodDwzMnx8dD4xMjcpe2NvbnN0IGU9dGhpcy5wZWVrQ2hhcigpO2lmKGU+PTMyJiZlPD0xMjcpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gaS5DbWQuZ2V0KGEpfX1jb25zdCBuPXRoaXMua25vd25Db21tYW5kcztsZXQgcz12b2lkIDAhPT1uPy5bYV07Zm9yKDsodD10aGlzLm5leHRDaGFyKCkpPj0wJiYhYlt0XTspe2NvbnN0IGU9YStTdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2lmKHMmJnZvaWQgMD09PW5bZV0pYnJlYWs7aWYoMTI4PT09YS5sZW5ndGgpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYENvbW1hbmQgdG9rZW4gdG9vIGxvbmc6ICR7YS5sZW5ndGh9YCk7YT1lO3M9dm9pZCAwIT09bj8uW2FdfWlmKCJ0cnVlIj09PWEpcmV0dXJuITA7aWYoImZhbHNlIj09PWEpcmV0dXJuITE7aWYoIm51bGwiPT09YSlyZXR1cm4gbnVsbDsiQkkiPT09YSYmKHRoaXMuYmVnaW5JbmxpbmVJbWFnZVBvcz10aGlzLnN0cmVhbS5wb3MpO3JldHVybiBpLkNtZC5nZXQoYSl9c2tpcFRvTmV4dExpbmUoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2Zvcig7ZT49MDspe2lmKDEzPT09ZSl7ZT10aGlzLm5leHRDaGFyKCk7MTA9PT1lJiZ0aGlzLm5leHRDaGFyKCk7YnJlYWt9aWYoMTA9PT1lKXt0aGlzLm5leHRDaGFyKCk7YnJlYWt9ZT10aGlzLm5leHRDaGFyKCl9fX10LkxleGVyPUxleGVyO3QuTGluZWFyaXphdGlvbj1jbGFzcyBMaW5lYXJpemF0aW9ue3N0YXRpYyBjcmVhdGUoZSl7ZnVuY3Rpb24gZ2V0SW50KGUsdCxhPSExKXtjb25zdCByPWUuZ2V0KHQpO2lmKE51bWJlci5pc0ludGVnZXIocikmJihhP3I+PTA6cj4wKSlyZXR1cm4gcjt0aHJvdyBuZXcgRXJyb3IoYFRoZSAiJHt0fSIgcGFyYW1ldGVyIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC5gKX1jb25zdCB0PW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihlKSx4cmVmOm51bGx9KSxhPXQuZ2V0T2JqKCkscj10LmdldE9iaigpLG49dC5nZXRPYmooKSxzPXQuZ2V0T2JqKCk7bGV0IG8sYztpZighKE51bWJlci5pc0ludGVnZXIoYSkmJk51bWJlci5pc0ludGVnZXIocikmJigwLGkuaXNDbWQpKG4sIm9iaiIpJiZzIGluc3RhbmNlb2YgaS5EaWN0JiYibnVtYmVyIj09dHlwZW9mKG89cy5nZXQoIkxpbmVhcml6ZWQiKSkmJm8+MCkpcmV0dXJuIG51bGw7aWYoKGM9Z2V0SW50KHMsIkwiKSkhPT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoJ1RoZSAiTCIgcGFyYW1ldGVyIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgZG9lcyBub3QgZXF1YWwgdGhlIHN0cmVhbSBsZW5ndGguJyk7cmV0dXJue2xlbmd0aDpjLGhpbnRzOmZ1bmN0aW9uIGdldEhpbnRzKGUpe2NvbnN0IHQ9ZS5nZXQoIkgiKTtsZXQgYTtpZihBcnJheS5pc0FycmF5KHQpJiYoMj09PShhPXQubGVuZ3RoKXx8ND09PWEpKXtmb3IobGV0IGU9MDtlPGE7ZSsrKXtjb25zdCBhPXRbZV07aWYoIShOdW1iZXIuaXNJbnRlZ2VyKGEpJiZhPjApKXRocm93IG5ldyBFcnJvcihgSGludCAoJHtlfSkgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLmApfXJldHVybiB0fXRocm93IG5ldyBFcnJvcigiSGludCBhcnJheSBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuIil9KHMpLG9iamVjdE51bWJlckZpcnN0OmdldEludChzLCJPIiksZW5kRmlyc3Q6Z2V0SW50KHMsIkUiKSxudW1QYWdlczpnZXRJbnQocywiTiIpLG1haW5YUmVmRW50cmllc09mZnNldDpnZXRJbnQocywiVCIpLHBhZ2VGaXJzdDpzLmhhcygiUCIpP2dldEludChzLCJQIiwhMCk6MH19fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkFzY2lpODVTdHJlYW09dm9pZCAwO3ZhciByPWEoMTgpLGk9YSgzKTtjbGFzcyBBc2NpaTg1U3RyZWFtIGV4dGVuZHMgci5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0KXt0JiYodCo9LjgpO3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmlucHV0PW5ldyBVaW50OEFycmF5KDUpfXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHI7bGV0IHQ9ZS5nZXRCeXRlKCk7Zm9yKDsoMCxpLmlzV2hpdGVTcGFjZSkodCk7KXQ9ZS5nZXRCeXRlKCk7aWYoLTE9PT10fHwxMjY9PT10KXt0aGlzLmVvZj0hMDtyZXR1cm59Y29uc3QgYT10aGlzLmJ1ZmZlckxlbmd0aDtsZXQgcixuO2lmKDEyMj09PXQpe3I9dGhpcy5lbnN1cmVCdWZmZXIoYSs0KTtmb3Iobj0wO248NDsrK24pclthK25dPTA7dGhpcy5idWZmZXJMZW5ndGgrPTR9ZWxzZXtjb25zdCBzPXRoaXMuaW5wdXQ7c1swXT10O2ZvcihuPTE7bjw1Oysrbil7dD1lLmdldEJ5dGUoKTtmb3IoOygwLGkuaXNXaGl0ZVNwYWNlKSh0KTspdD1lLmdldEJ5dGUoKTtzW25dPXQ7aWYoLTE9PT10fHwxMjY9PT10KWJyZWFrfXI9dGhpcy5lbnN1cmVCdWZmZXIoYStuLTEpO3RoaXMuYnVmZmVyTGVuZ3RoKz1uLTE7aWYobjw1KXtmb3IoO248NTsrK24pc1tuXT0xMTc7dGhpcy5lb2Y9ITB9bGV0IG89MDtmb3Iobj0wO248NTsrK24pbz04NSpvKyhzW25dLTMzKTtmb3Iobj0zO24+PTA7LS1uKXtyW2Erbl09MjU1Jm87bz4+PTh9fX19dC5Bc2NpaTg1U3RyZWFtPUFzY2lpODVTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5TdHJlYW1zU2VxdWVuY2VTdHJlYW09dC5EZWNvZGVTdHJlYW09dm9pZCAwO3ZhciByPWEoNSksaT1hKDgpO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoMCk7Y2xhc3MgRGVjb2RlU3RyZWFtIGV4dGVuZHMgci5CYXNlU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKCk7dGhpcy5fcmF3TWluQnVmZmVyTGVuZ3RoPWV8fDA7dGhpcy5wb3M9MDt0aGlzLmJ1ZmZlckxlbmd0aD0wO3RoaXMuZW9mPSExO3RoaXMuYnVmZmVyPW47dGhpcy5taW5CdWZmZXJMZW5ndGg9NTEyO2lmKGUpZm9yKDt0aGlzLm1pbkJ1ZmZlckxlbmd0aDxlOyl0aGlzLm1pbkJ1ZmZlckxlbmd0aCo9Mn1nZXQgaXNFbXB0eSgpe2Zvcig7IXRoaXMuZW9mJiYwPT09dGhpcy5idWZmZXJMZW5ndGg7KXRoaXMucmVhZEJsb2NrKCk7cmV0dXJuIDA9PT10aGlzLmJ1ZmZlckxlbmd0aH1lbnN1cmVCdWZmZXIoZSl7Y29uc3QgdD10aGlzLmJ1ZmZlcjtpZihlPD10LmJ5dGVMZW5ndGgpcmV0dXJuIHQ7bGV0IGE9dGhpcy5taW5CdWZmZXJMZW5ndGg7Zm9yKDthPGU7KWEqPTI7Y29uc3Qgcj1uZXcgVWludDhBcnJheShhKTtyLnNldCh0KTtyZXR1cm4gdGhpcy5idWZmZXI9cn1nZXRCeXRlKCl7Y29uc3QgZT10aGlzLnBvcztmb3IoO3RoaXMuYnVmZmVyTGVuZ3RoPD1lOyl7aWYodGhpcy5lb2YpcmV0dXJuLTE7dGhpcy5yZWFkQmxvY2soKX1yZXR1cm4gdGhpcy5idWZmZXJbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSl7Y29uc3QgdD10aGlzLnBvcztsZXQgYTtpZihlKXt0aGlzLmVuc3VyZUJ1ZmZlcih0K2UpO2E9dCtlO2Zvcig7IXRoaXMuZW9mJiZ0aGlzLmJ1ZmZlckxlbmd0aDxhOyl0aGlzLnJlYWRCbG9jaygpO2NvbnN0IHI9dGhpcy5idWZmZXJMZW5ndGg7YT5yJiYoYT1yKX1lbHNle2Zvcig7IXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpO2E9dGhpcy5idWZmZXJMZW5ndGh9dGhpcy5wb3M9YTtyZXR1cm4gdGhpcy5idWZmZXIuc3ViYXJyYXkodCxhKX1yZXNldCgpe3RoaXMucG9zPTB9bWFrZVN1YlN0cmVhbShlLHQsYT1udWxsKXtpZih2b2lkIDA9PT10KWZvcig7IXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpO2Vsc2V7Y29uc3QgYT1lK3Q7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw9YSYmIXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpfXJldHVybiBuZXcgaS5TdHJlYW0odGhpcy5idWZmZXIsZSx0LGEpfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuIHRoaXMuc3RyP3RoaXMuc3RyLmdldEJhc2VTdHJlYW1zKCk6bnVsbH19dC5EZWNvZGVTdHJlYW09RGVjb2RlU3RyZWFtO3QuU3RyZWFtc1NlcXVlbmNlU3RyZWFtPWNsYXNzIFN0cmVhbXNTZXF1ZW5jZVN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7bGV0IGE9MDtmb3IoY29uc3QgdCBvZiBlKWErPXQgaW5zdGFuY2VvZiBEZWNvZGVTdHJlYW0/dC5fcmF3TWluQnVmZmVyTGVuZ3RoOnQubGVuZ3RoO3N1cGVyKGEpO3RoaXMuc3RyZWFtcz1lO3RoaXMuX29uRXJyb3I9dH1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyZWFtcztpZigwPT09ZS5sZW5ndGgpe3RoaXMuZW9mPSEwO3JldHVybn1jb25zdCB0PWUuc2hpZnQoKTtsZXQgYTt0cnl7YT10LmdldEJ5dGVzKCl9Y2F0Y2goZSl7aWYodGhpcy5fb25FcnJvcil7dGhpcy5fb25FcnJvcihlLHQuZGljdD8ub2JqSWQpO3JldHVybn10aHJvdyBlfWNvbnN0IHI9dGhpcy5idWZmZXJMZW5ndGgsaT1yK2EubGVuZ3RoO3RoaXMuZW5zdXJlQnVmZmVyKGkpLnNldChhLHIpO3RoaXMuYnVmZmVyTGVuZ3RoPWl9Z2V0QmFzZVN0cmVhbXMoKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXMuc3RyZWFtcyl7Y29uc3QgYT10LmdldEJhc2VTdHJlYW1zKCk7YSYmZS5wdXNoKC4uLmEpfXJldHVybiBlLmxlbmd0aD4wP2U6bnVsbH19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQXNjaWlIZXhTdHJlYW09dm9pZCAwO3ZhciByPWEoMTgpO2NsYXNzIEFzY2lpSGV4U3RyZWFtIGV4dGVuZHMgci5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0KXt0JiYodCo9LjUpO3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmZpcnN0RGlnaXQ9LTF9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0ci5nZXRCeXRlcyg4ZTMpO2lmKCFlLmxlbmd0aCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IHQ9ZS5sZW5ndGgrMT4+MSxhPXRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoK3QpO2xldCByPXRoaXMuYnVmZmVyTGVuZ3RoLGk9dGhpcy5maXJzdERpZ2l0O2Zvcihjb25zdCB0IG9mIGUpe2xldCBlO2lmKHQ+PTQ4JiZ0PD01NyllPTE1JnQ7ZWxzZXtpZighKHQ+PTY1JiZ0PD03MHx8dD49OTcmJnQ8PTEwMikpe2lmKDYyPT09dCl7dGhpcy5lb2Y9ITA7YnJlYWt9Y29udGludWV9ZT05KygxNSZ0KX1pZihpPDApaT1lO2Vsc2V7YVtyKytdPWk8PDR8ZTtpPS0xfX1pZihpPj0wJiZ0aGlzLmVvZil7YVtyKytdPWk8PDQ7aT0tMX10aGlzLmZpcnN0RGlnaXQ9aTt0aGlzLmJ1ZmZlckxlbmd0aD1yfX10LkFzY2lpSGV4U3RyZWFtPUFzY2lpSGV4U3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ0NJVFRGYXhTdHJlYW09dm9pZCAwO3ZhciByPWEoMjEpLGk9YSgxOCksbj1hKDQpO2NsYXNzIENDSVRURmF4U3RyZWFtIGV4dGVuZHMgaS5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDthIGluc3RhbmNlb2Ygbi5EaWN0fHwoYT1uLkRpY3QuZW1wdHkpO2NvbnN0IGk9e25leHQ6KCk9PmUuZ2V0Qnl0ZSgpfTt0aGlzLmNjaXR0RmF4RGVjb2Rlcj1uZXcgci5DQ0lUVEZheERlY29kZXIoaSx7SzphLmdldCgiSyIpLEVuZE9mTGluZTphLmdldCgiRW5kT2ZMaW5lIiksRW5jb2RlZEJ5dGVBbGlnbjphLmdldCgiRW5jb2RlZEJ5dGVBbGlnbiIpLENvbHVtbnM6YS5nZXQoIkNvbHVtbnMiKSxSb3dzOmEuZ2V0KCJSb3dzIiksRW5kT2ZCbG9jazphLmdldCgiRW5kT2ZCbG9jayIpLEJsYWNrSXMxOmEuZ2V0KCJCbGFja0lzMSIpfSl9cmVhZEJsb2NrKCl7Zm9yKDshdGhpcy5lb2Y7KXtjb25zdCBlPXRoaXMuY2NpdHRGYXhEZWNvZGVyLnJlYWROZXh0Q2hhcigpO2lmKC0xPT09ZSl7dGhpcy5lb2Y9ITA7cmV0dXJufXRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoKzEpO3RoaXMuYnVmZmVyW3RoaXMuYnVmZmVyTGVuZ3RoKytdPWV9fX10LkNDSVRURmF4U3RyZWFtPUNDSVRURmF4U3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ0NJVFRGYXhEZWNvZGVyPXZvaWQgMDt2YXIgcj1hKDIpO2NvbnN0IGk9LTEsbj1bWy0xLC0xXSxbLTEsLTFdLFs3LDhdLFs3LDddLFs2LDZdLFs2LDZdLFs2LDVdLFs2LDVdLFs0LDBdLFs0LDBdLFs0LDBdLFs0LDBdLFs0LDBdLFs0LDBdLFs0LDBdLFs0LDBdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdXSxzPVtbLTEsLTFdLFsxMiwtMl0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzEyLDE5ODRdLFsxMiwyMDQ4XSxbMTIsMjExMl0sWzEyLDIxNzZdLFsxMiwyMjQwXSxbMTIsMjMwNF0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMiwyMzY4XSxbMTIsMjQzMl0sWzEyLDI0OTZdLFsxMiwyNTYwXV0sbz1bWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbOCwyOV0sWzgsMjldLFs4LDMwXSxbOCwzMF0sWzgsNDVdLFs4LDQ1XSxbOCw0Nl0sWzgsNDZdLFs3LDIyXSxbNywyMl0sWzcsMjJdLFs3LDIyXSxbNywyM10sWzcsMjNdLFs3LDIzXSxbNywyM10sWzgsNDddLFs4LDQ3XSxbOCw0OF0sWzgsNDhdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzcsMjBdLFs3LDIwXSxbNywyMF0sWzcsMjBdLFs4LDMzXSxbOCwzM10sWzgsMzRdLFs4LDM0XSxbOCwzNV0sWzgsMzVdLFs4LDM2XSxbOCwzNl0sWzgsMzddLFs4LDM3XSxbOCwzOF0sWzgsMzhdLFs3LDE5XSxbNywxOV0sWzcsMTldLFs3LDE5XSxbOCwzMV0sWzgsMzFdLFs4LDMyXSxbOCwzMl0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbOCw1M10sWzgsNTNdLFs4LDU0XSxbOCw1NF0sWzcsMjZdLFs3LDI2XSxbNywyNl0sWzcsMjZdLFs4LDM5XSxbOCwzOV0sWzgsNDBdLFs4LDQwXSxbOCw0MV0sWzgsNDFdLFs4LDQyXSxbOCw0Ml0sWzgsNDNdLFs4LDQzXSxbOCw0NF0sWzgsNDRdLFs3LDIxXSxbNywyMV0sWzcsMjFdLFs3LDIxXSxbNywyOF0sWzcsMjhdLFs3LDI4XSxbNywyOF0sWzgsNjFdLFs4LDYxXSxbOCw2Ml0sWzgsNjJdLFs4LDYzXSxbOCw2M10sWzgsMF0sWzgsMF0sWzgsMzIwXSxbOCwzMjBdLFs4LDM4NF0sWzgsMzg0XSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs3LDI3XSxbNywyN10sWzcsMjddLFs3LDI3XSxbOCw1OV0sWzgsNTldLFs4LDYwXSxbOCw2MF0sWzksMTQ3Ml0sWzksMTUzNl0sWzksMTYwMF0sWzksMTcyOF0sWzcsMThdLFs3LDE4XSxbNywxOF0sWzcsMThdLFs3LDI0XSxbNywyNF0sWzcsMjRdLFs3LDI0XSxbOCw0OV0sWzgsNDldLFs4LDUwXSxbOCw1MF0sWzgsNTFdLFs4LDUxXSxbOCw1Ml0sWzgsNTJdLFs3LDI1XSxbNywyNV0sWzcsMjVdLFs3LDI1XSxbOCw1NV0sWzgsNTVdLFs4LDU2XSxbOCw1Nl0sWzgsNTddLFs4LDU3XSxbOCw1OF0sWzgsNThdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbOCw0NDhdLFs4LDQ0OF0sWzgsNTEyXSxbOCw1MTJdLFs5LDcwNF0sWzksNzY4XSxbOCw2NDBdLFs4LDY0MF0sWzgsNTc2XSxbOCw1NzZdLFs5LDgzMl0sWzksODk2XSxbOSw5NjBdLFs5LDEwMjRdLFs5LDEwODhdLFs5LDExNTJdLFs5LDEyMTZdLFs5LDEyODBdLFs5LDEzNDRdLFs5LDE0MDhdLFs3LDI1Nl0sWzcsMjU2XSxbNywyNTZdLFs3LDI1Nl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XV0sYz1bWy0xLC0xXSxbLTEsLTFdLFsxMiwtMl0sWzEyLC0yXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTIsMTk4NF0sWzEyLDE5ODRdLFsxMiwyMDQ4XSxbMTIsMjA0OF0sWzEyLDIxMTJdLFsxMiwyMTEyXSxbMTIsMjE3Nl0sWzEyLDIxNzZdLFsxMiwyMjQwXSxbMTIsMjI0MF0sWzEyLDIzMDRdLFsxMiwyMzA0XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMiwyMzY4XSxbMTIsMjM2OF0sWzEyLDI0MzJdLFsxMiwyNDMyXSxbMTIsMjQ5Nl0sWzEyLDI0OTZdLFsxMiwyNTYwXSxbMTIsMjU2MF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMiw1Ml0sWzEyLDUyXSxbMTMsNjQwXSxbMTMsNzA0XSxbMTMsNzY4XSxbMTMsODMyXSxbMTIsNTVdLFsxMiw1NV0sWzEyLDU2XSxbMTIsNTZdLFsxMywxMjgwXSxbMTMsMTM0NF0sWzEzLDE0MDhdLFsxMywxNDcyXSxbMTIsNTldLFsxMiw1OV0sWzEyLDYwXSxbMTIsNjBdLFsxMywxNTM2XSxbMTMsMTYwMF0sWzExLDI0XSxbMTEsMjRdLFsxMSwyNF0sWzExLDI0XSxbMTEsMjVdLFsxMSwyNV0sWzExLDI1XSxbMTEsMjVdLFsxMywxNjY0XSxbMTMsMTcyOF0sWzEyLDMyMF0sWzEyLDMyMF0sWzEyLDM4NF0sWzEyLDM4NF0sWzEyLDQ0OF0sWzEyLDQ0OF0sWzEzLDUxMl0sWzEzLDU3Nl0sWzEyLDUzXSxbMTIsNTNdLFsxMiw1NF0sWzEyLDU0XSxbMTMsODk2XSxbMTMsOTYwXSxbMTMsMTAyNF0sWzEzLDEwODhdLFsxMywxMTUyXSxbMTMsMTIxNl0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdXSxsPVtbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzExLDIzXSxbMTEsMjNdLFsxMiw1MF0sWzEyLDUxXSxbMTIsNDRdLFsxMiw0NV0sWzEyLDQ2XSxbMTIsNDddLFsxMiw1N10sWzEyLDU4XSxbMTIsNjFdLFsxMiwyNTZdLFsxMCwxNl0sWzEwLDE2XSxbMTAsMTZdLFsxMCwxNl0sWzEwLDE3XSxbMTAsMTddLFsxMCwxN10sWzEwLDE3XSxbMTIsNDhdLFsxMiw0OV0sWzEyLDYyXSxbMTIsNjNdLFsxMiwzMF0sWzEyLDMxXSxbMTIsMzJdLFsxMiwzM10sWzEyLDQwXSxbMTIsNDFdLFsxMSwyMl0sWzExLDIyXSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzEyLDEyOF0sWzEyLDE5Ml0sWzEyLDI2XSxbMTIsMjddLFsxMiwyOF0sWzEyLDI5XSxbMTEsMTldLFsxMSwxOV0sWzExLDIwXSxbMTEsMjBdLFsxMiwzNF0sWzEyLDM1XSxbMTIsMzZdLFsxMiwzN10sWzEyLDM4XSxbMTIsMzldLFsxMSwyMV0sWzExLDIxXSxbMTIsNDJdLFsxMiw0M10sWzEwLDBdLFsxMCwwXSxbMTAsMF0sWzEwLDBdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl1dLGg9W1stMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzYsOV0sWzYsOF0sWzUsN10sWzUsN10sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl1dO3QuQ0NJVFRGYXhEZWNvZGVyPWNsYXNzIENDSVRURmF4RGVjb2Rlcntjb25zdHJ1Y3RvcihlLHQ9e30pe2lmKCFlfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5uZXh0KXRocm93IG5ldyBFcnJvcignQ0NJVFRGYXhEZWNvZGVyIC0gaW52YWxpZCAic291cmNlIiBwYXJhbWV0ZXIuJyk7dGhpcy5zb3VyY2U9ZTt0aGlzLmVvZj0hMTt0aGlzLmVuY29kaW5nPXQuS3x8MDt0aGlzLmVvbGluZT10LkVuZE9mTGluZXx8ITE7dGhpcy5ieXRlQWxpZ249dC5FbmNvZGVkQnl0ZUFsaWdufHwhMTt0aGlzLmNvbHVtbnM9dC5Db2x1bW5zfHwxNzI4O3RoaXMucm93cz10LlJvd3N8fDA7dGhpcy5lb2Jsb2NrPXQuRW5kT2ZCbG9jaz8/ITA7dGhpcy5ibGFjaz10LkJsYWNrSXMxfHwhMTt0aGlzLmNvZGluZ0xpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysxKTt0aGlzLnJlZkxpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysyKTt0aGlzLmNvZGluZ0xpbmVbMF09dGhpcy5jb2x1bW5zO3RoaXMuY29kaW5nUG9zPTA7dGhpcy5yb3c9MDt0aGlzLm5leHRMaW5lMkQ9dGhpcy5lbmNvZGluZzwwO3RoaXMuaW5wdXRCaXRzPTA7dGhpcy5pbnB1dEJ1Zj0wO3RoaXMub3V0cHV0Qml0cz0wO3RoaXMucm93c0RvbmU9ITE7bGV0IGE7Zm9yKDswPT09KGE9dGhpcy5fbG9va0JpdHMoMTIpKTspdGhpcy5fZWF0Qml0cygxKTsxPT09YSYmdGhpcy5fZWF0Qml0cygxMik7aWYodGhpcy5lbmNvZGluZz4wKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXJlYWROZXh0Q2hhcigpe2lmKHRoaXMuZW9mKXJldHVybi0xO2NvbnN0IGU9dGhpcy5yZWZMaW5lLHQ9dGhpcy5jb2RpbmdMaW5lLGE9dGhpcy5jb2x1bW5zO2xldCBuLHMsbyxjLGw7aWYoMD09PXRoaXMub3V0cHV0Qml0cyl7dGhpcy5yb3dzRG9uZSYmKHRoaXMuZW9mPSEwKTtpZih0aGlzLmVvZilyZXR1cm4tMTt0aGlzLmVycj0hMTtsZXQgbyxsLGg7aWYodGhpcy5uZXh0TGluZTJEKXtmb3IoYz0wO3RbY108YTsrK2MpZVtjXT10W2NdO2VbYysrXT1hO2VbY109YTt0WzBdPTA7dGhpcy5jb2RpbmdQb3M9MDtuPTA7cz0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108YTspe289dGhpcy5fZ2V0VHdvRGltQ29kZSgpO3N3aXRjaChvKXtjYXNlIDA6dGhpcy5fYWRkUGl4ZWxzKGVbbisxXSxzKTtlW24rMV08YSYmKG4rPTIpO2JyZWFrO2Nhc2UgMTpvPWw9MDtpZihzKXtkb3tvKz1oPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGg+PTY0KTtkb3tsKz1oPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGg+PTY0KX1lbHNle2Rve28rPWg9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoaD49NjQpO2Rve2wrPWg9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoaD49NjQpfXRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStvLHMpO3RbdGhpcy5jb2RpbmdQb3NdPGEmJnRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStsLDFecyk7Zm9yKDtlW25dPD10W3RoaXMuY29kaW5nUG9zXSYmZVtuXTxhOyluKz0yO2JyZWFrO2Nhc2UgNzp0aGlzLl9hZGRQaXhlbHMoZVtuXSszLHMpO3NePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108YSl7KytuO2Zvcig7ZVtuXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbbl08YTspbis9Mn1icmVhaztjYXNlIDU6dGhpcy5fYWRkUGl4ZWxzKGVbbl0rMixzKTtzXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpeysrbjtmb3IoO2Vbbl08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW25dPGE7KW4rPTJ9YnJlYWs7Y2FzZSAzOnRoaXMuX2FkZFBpeGVscyhlW25dKzEscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXsrK247Zm9yKDtlW25dPD10W3RoaXMuY29kaW5nUG9zXSYmZVtuXTxhOyluKz0yfWJyZWFrO2Nhc2UgMjp0aGlzLl9hZGRQaXhlbHMoZVtuXSxzKTtzXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpeysrbjtmb3IoO2Vbbl08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW25dPGE7KW4rPTJ9YnJlYWs7Y2FzZSA4OnRoaXMuX2FkZFBpeGVsc05lZyhlW25dLTMscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtuPjA/LS1uOisrbjtmb3IoO2Vbbl08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW25dPGE7KW4rPTJ9YnJlYWs7Y2FzZSA2OnRoaXMuX2FkZFBpeGVsc05lZyhlW25dLTIscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtuPjA/LS1uOisrbjtmb3IoO2Vbbl08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW25dPGE7KW4rPTJ9YnJlYWs7Y2FzZSA0OnRoaXMuX2FkZFBpeGVsc05lZyhlW25dLTEscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtuPjA/LS1uOisrbjtmb3IoO2Vbbl08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW25dPGE7KW4rPTJ9YnJlYWs7Y2FzZSBpOnRoaXMuX2FkZFBpeGVscyhhLDApO3RoaXMuZW9mPSEwO2JyZWFrO2RlZmF1bHQ6KDAsci5pbmZvKSgiYmFkIDJkIGNvZGUiKTt0aGlzLl9hZGRQaXhlbHMoYSwwKTt0aGlzLmVycj0hMH19fWVsc2V7dFswXT0wO3RoaXMuY29kaW5nUG9zPTA7cz0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108YTspe289MDtpZihzKWRve28rPWg9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoaD49NjQpO2Vsc2UgZG97bys9aD10aGlzLl9nZXRXaGl0ZUNvZGUoKX13aGlsZShoPj02NCk7dGhpcy5fYWRkUGl4ZWxzKHRbdGhpcy5jb2RpbmdQb3NdK28scyk7c149MX19bGV0IHU9ITE7dGhpcy5ieXRlQWxpZ24mJih0aGlzLmlucHV0Qml0cyY9LTgpO2lmKHRoaXMuZW9ibG9ja3x8dGhpcy5yb3chPT10aGlzLnJvd3MtMSl7bz10aGlzLl9sb29rQml0cygxMik7aWYodGhpcy5lb2xpbmUpZm9yKDtvIT09aSYmMSE9PW87KXt0aGlzLl9lYXRCaXRzKDEpO289dGhpcy5fbG9va0JpdHMoMTIpfWVsc2UgZm9yKDswPT09bzspe3RoaXMuX2VhdEJpdHMoMSk7bz10aGlzLl9sb29rQml0cygxMil9aWYoMT09PW8pe3RoaXMuX2VhdEJpdHMoMTIpO3U9ITB9ZWxzZSBvPT09aSYmKHRoaXMuZW9mPSEwKX1lbHNlIHRoaXMucm93c0RvbmU9ITA7aWYoIXRoaXMuZW9mJiZ0aGlzLmVuY29kaW5nPjAmJiF0aGlzLnJvd3NEb25lKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9aWYodGhpcy5lb2Jsb2NrJiZ1JiZ0aGlzLmJ5dGVBbGlnbil7bz10aGlzLl9sb29rQml0cygxMik7aWYoMT09PW8pe3RoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fbG9va0JpdHMoMSk7dGhpcy5fZWF0Qml0cygxKX1pZih0aGlzLmVuY29kaW5nPj0wKWZvcihjPTA7Yzw0OysrYyl7bz10aGlzLl9sb29rQml0cygxMik7MSE9PW8mJigwLHIuaW5mbykoImJhZCBydGMgY29kZTogIitvKTt0aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXRoaXMuZW9mPSEwfX1lbHNlIGlmKHRoaXMuZXJyJiZ0aGlzLmVvbGluZSl7Zm9yKDs7KXtvPXRoaXMuX2xvb2tCaXRzKDEzKTtpZihvPT09aSl7dGhpcy5lb2Y9ITA7cmV0dXJuLTF9aWYobz4+MT09MSlicmVhazt0aGlzLl9lYXRCaXRzKDEpfXRoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fZWF0Qml0cygxKTt0aGlzLm5leHRMaW5lMkQ9ISgxJm8pfX10WzBdPjA/dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3M9MF06dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3M9MV07dGhpcy5yb3crK31pZih0aGlzLm91dHB1dEJpdHM+PTgpe2w9MSZ0aGlzLmNvZGluZ1Bvcz8wOjI1NTt0aGlzLm91dHB1dEJpdHMtPTg7aWYoMD09PXRoaXMub3V0cHV0Qml0cyYmdFt0aGlzLmNvZGluZ1Bvc108YSl7dGhpcy5jb2RpbmdQb3MrKzt0aGlzLm91dHB1dEJpdHM9dFt0aGlzLmNvZGluZ1Bvc10tdFt0aGlzLmNvZGluZ1Bvcy0xXX19ZWxzZXtvPTg7bD0wO2Rve2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5vdXRwdXRCaXRzKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdJbnZhbGlkIC9DQ0lUVEZheERlY29kZSBkYXRhLCAib3V0cHV0Qml0cyIgbXVzdCBiZSBhIG51bWJlci4nKTtpZih0aGlzLm91dHB1dEJpdHM+byl7bDw8PW87MSZ0aGlzLmNvZGluZ1Bvc3x8KGx8PTI1NT4+OC1vKTt0aGlzLm91dHB1dEJpdHMtPW87bz0wfWVsc2V7bDw8PXRoaXMub3V0cHV0Qml0czsxJnRoaXMuY29kaW5nUG9zfHwobHw9MjU1Pj44LXRoaXMub3V0cHV0Qml0cyk7by09dGhpcy5vdXRwdXRCaXRzO3RoaXMub3V0cHV0Qml0cz0wO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpe3RoaXMuY29kaW5nUG9zKys7dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3NdLXRbdGhpcy5jb2RpbmdQb3MtMV19ZWxzZSBpZihvPjApe2w8PD1vO289MH19fXdoaWxlKG8pfXRoaXMuYmxhY2smJihsXj0yNTUpO3JldHVybiBsfV9hZGRQaXhlbHMoZSx0KXtjb25zdCBhPXRoaXMuY29kaW5nTGluZTtsZXQgaT10aGlzLmNvZGluZ1BvcztpZihlPmFbaV0pe2lmKGU+dGhpcy5jb2x1bW5zKXsoMCxyLmluZm8pKCJyb3cgaXMgd3JvbmcgbGVuZ3RoIik7dGhpcy5lcnI9ITA7ZT10aGlzLmNvbHVtbnN9MSZpXnQmJisraTthW2ldPWV9dGhpcy5jb2RpbmdQb3M9aX1fYWRkUGl4ZWxzTmVnKGUsdCl7Y29uc3QgYT10aGlzLmNvZGluZ0xpbmU7bGV0IGk9dGhpcy5jb2RpbmdQb3M7aWYoZT5hW2ldKXtpZihlPnRoaXMuY29sdW1ucyl7KDAsci5pbmZvKSgicm93IGlzIHdyb25nIGxlbmd0aCIpO3RoaXMuZXJyPSEwO2U9dGhpcy5jb2x1bW5zfTEmaV50JiYrK2k7YVtpXT1lfWVsc2UgaWYoZTxhW2ldKXtpZihlPDApeygwLHIuaW5mbykoImludmFsaWQgY29kZSIpO3RoaXMuZXJyPSEwO2U9MH1mb3IoO2k+MCYmZTxhW2ktMV07KS0taTthW2ldPWV9dGhpcy5jb2RpbmdQb3M9aX1fZmluZFRhYmxlQ29kZShlLHQsYSxyKXtjb25zdCBuPXJ8fDA7Zm9yKGxldCByPWU7cjw9dDsrK3Ipe2xldCBlPXRoaXMuX2xvb2tCaXRzKHIpO2lmKGU9PT1pKXJldHVyblshMCwxLCExXTtyPHQmJihlPDw9dC1yKTtpZighbnx8ZT49bil7Y29uc3QgdD1hW2Utbl07aWYodFswXT09PXIpe3RoaXMuX2VhdEJpdHMocik7cmV0dXJuWyEwLHRbMV0sITBdfX19cmV0dXJuWyExLDAsITFdfV9nZXRUd29EaW1Db2RlKCl7bGV0IGUsdD0wO2lmKHRoaXMuZW9ibG9jayl7dD10aGlzLl9sb29rQml0cyg3KTtlPW5bdF07aWYoZT8uWzBdPjApe3RoaXMuX2VhdEJpdHMoZVswXSk7cmV0dXJuIGVbMV19fWVsc2V7Y29uc3QgZT10aGlzLl9maW5kVGFibGVDb2RlKDEsNyxuKTtpZihlWzBdJiZlWzJdKXJldHVybiBlWzFdfSgwLHIuaW5mbykoIkJhZCB0d28gZGltIGNvZGUiKTtyZXR1cm4gaX1fZ2V0V2hpdGVDb2RlKCl7bGV0IGUsdD0wO2lmKHRoaXMuZW9ibG9jayl7dD10aGlzLl9sb29rQml0cygxMik7aWYodD09PWkpcmV0dXJuIDE7ZT10Pj41PT0wP3NbdF06b1t0Pj4zXTtpZihlWzBdPjApe3RoaXMuX2VhdEJpdHMoZVswXSk7cmV0dXJuIGVbMV19fWVsc2V7bGV0IGU9dGhpcy5fZmluZFRhYmxlQ29kZSgxLDksbyk7aWYoZVswXSlyZXR1cm4gZVsxXTtlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMTEsMTIscyk7aWYoZVswXSlyZXR1cm4gZVsxXX0oMCxyLmluZm8pKCJiYWQgd2hpdGUgY29kZSIpO3RoaXMuX2VhdEJpdHMoMSk7cmV0dXJuIDF9X2dldEJsYWNrQ29kZSgpe2xldCBlLHQ7aWYodGhpcy5lb2Jsb2NrKXtlPXRoaXMuX2xvb2tCaXRzKDEzKTtpZihlPT09aSlyZXR1cm4gMTt0PWU+Pjc9PTA/Y1tlXTplPj45PT0wJiZlPj43IT0wP2xbKGU+PjEpLTY0XTpoW2U+PjddO2lmKHRbMF0+MCl7dGhpcy5fZWF0Qml0cyh0WzBdKTtyZXR1cm4gdFsxXX19ZWxzZXtsZXQgZT10aGlzLl9maW5kVGFibGVDb2RlKDIsNixoKTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSg3LDEyLGwsNjQpO2lmKGVbMF0pcmV0dXJuIGVbMV07ZT10aGlzLl9maW5kVGFibGVDb2RlKDEwLDEzLGMpO2lmKGVbMF0pcmV0dXJuIGVbMV19KDAsci5pbmZvKSgiYmFkIGJsYWNrIGNvZGUiKTt0aGlzLl9lYXRCaXRzKDEpO3JldHVybiAxfV9sb29rQml0cyhlKXtsZXQgdDtmb3IoO3RoaXMuaW5wdXRCaXRzPGU7KXtpZigtMT09PSh0PXRoaXMuc291cmNlLm5leHQoKSkpcmV0dXJuIDA9PT10aGlzLmlucHV0Qml0cz9pOnRoaXMuaW5wdXRCdWY8PGUtdGhpcy5pbnB1dEJpdHMmNjU1MzU+PjE2LWU7dGhpcy5pbnB1dEJ1Zj10aGlzLmlucHV0QnVmPDw4fHQ7dGhpcy5pbnB1dEJpdHMrPTh9cmV0dXJuIHRoaXMuaW5wdXRCdWY+PnRoaXMuaW5wdXRCaXRzLWUmNjU1MzU+PjE2LWV9X2VhdEJpdHMoZSl7KHRoaXMuaW5wdXRCaXRzLT1lKTwwJiYodGhpcy5pbnB1dEJpdHM9MCl9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkZsYXRlU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDE4KSxpPWEoMik7Y29uc3Qgbj1uZXcgSW50MzJBcnJheShbMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV0pLHM9bmV3IEludDMyQXJyYXkoWzMsNCw1LDYsNyw4LDksMTAsNjU1NDcsNjU1NDksNjU1NTEsNjU1NTMsMTMxMDkxLDEzMTA5NSwxMzEwOTksMTMxMTAzLDE5NjY0MywxOTY2NTEsMTk2NjU5LDE5NjY2NywyNjIyMTEsMjYyMjI3LDI2MjI0MywyNjIyNTksMzI3ODExLDMyNzg0MywzMjc4NzUsMzI3OTA3LDI1OCwyNTgsMjU4XSksbz1uZXcgSW50MzJBcnJheShbMSwyLDMsNCw2NTU0MSw2NTU0MywxMzEwODEsMTMxMDg1LDE5NjYyNSwxOTY2MzMsMjYyMTc3LDI2MjE5MywzMjc3NDUsMzI3Nzc3LDM5MzM0NSwzOTM0MDksNDU5MDA5LDQ1OTEzNyw1MjQ4MDEsNTI1MDU3LDU5MDg0OSw1OTEzNjEsNjU3NDA5LDY1ODQzMyw3MjQ5OTMsNzI3MDQxLDc5NDYyNSw3OTg3MjEsODY4MzUzLDg3NjU0NV0pLGM9W25ldyBJbnQzMkFycmF5KFs0NTkwMDgsNTI0MzY4LDUyNDMwNCw1MjQ1NjgsNDU5MDI0LDUyNDQwMCw1MjQzMzYsNTkwMDE2LDQ1OTAxNiw1MjQzODQsNTI0MzIwLDU4OTk4NCw1MjQyODgsNTI0NDE2LDUyNDM1Miw1OTAwNDgsNDU5MDEyLDUyNDM3Niw1MjQzMTIsNTg5OTY4LDQ1OTAyOCw1MjQ0MDgsNTI0MzQ0LDU5MDAzMiw0NTkwMjAsNTI0MzkyLDUyNDMyOCw1OWU0LDUyNDI5Niw1MjQ0MjQsNTI0MzYwLDU5MDA2NCw0NTkwMTAsNTI0MzcyLDUyNDMwOCw1MjQ1NzIsNDU5MDI2LDUyNDQwNCw1MjQzNDAsNTkwMDI0LDQ1OTAxOCw1MjQzODgsNTI0MzI0LDU4OTk5Miw1MjQyOTIsNTI0NDIwLDUyNDM1Niw1OTAwNTYsNDU5MDE0LDUyNDM4MCw1MjQzMTYsNTg5OTc2LDQ1OTAzMCw1MjQ0MTIsNTI0MzQ4LDU5MDA0MCw0NTkwMjIsNTI0Mzk2LDUyNDMzMiw1OTAwMDgsNTI0MzAwLDUyNDQyOCw1MjQzNjQsNTkwMDcyLDQ1OTAwOSw1MjQzNzAsNTI0MzA2LDUyNDU3MCw0NTkwMjUsNTI0NDAyLDUyNDMzOCw1OTAwMjAsNDU5MDE3LDUyNDM4Niw1MjQzMjIsNTg5OTg4LDUyNDI5MCw1MjQ0MTgsNTI0MzU0LDU5MDA1Miw0NTkwMTMsNTI0Mzc4LDUyNDMxNCw1ODk5NzIsNDU5MDI5LDUyNDQxMCw1MjQzNDYsNTkwMDM2LDQ1OTAyMSw1MjQzOTQsNTI0MzMwLDU5MDAwNCw1MjQyOTgsNTI0NDI2LDUyNDM2Miw1OTAwNjgsNDU5MDExLDUyNDM3NCw1MjQzMTAsNTI0NTc0LDQ1OTAyNyw1MjQ0MDYsNTI0MzQyLDU5MDAyOCw0NTkwMTksNTI0MzkwLDUyNDMyNiw1ODk5OTYsNTI0Mjk0LDUyNDQyMiw1MjQzNTgsNTkwMDYwLDQ1OTAxNSw1MjQzODIsNTI0MzE4LDU4OTk4MCw0NTkwMzEsNTI0NDE0LDUyNDM1MCw1OTAwNDQsNDU5MDIzLDUyNDM5OCw1MjQzMzQsNTkwMDEyLDUyNDMwMiw1MjQ0MzAsNTI0MzY2LDU5MDA3Niw0NTkwMDgsNTI0MzY5LDUyNDMwNSw1MjQ1NjksNDU5MDI0LDUyNDQwMSw1MjQzMzcsNTkwMDE4LDQ1OTAxNiw1MjQzODUsNTI0MzIxLDU4OTk4Niw1MjQyODksNTI0NDE3LDUyNDM1Myw1OTAwNTAsNDU5MDEyLDUyNDM3Nyw1MjQzMTMsNTg5OTcwLDQ1OTAyOCw1MjQ0MDksNTI0MzQ1LDU5MDAzNCw0NTkwMjAsNTI0MzkzLDUyNDMyOSw1OTAwMDIsNTI0Mjk3LDUyNDQyNSw1MjQzNjEsNTkwMDY2LDQ1OTAxMCw1MjQzNzMsNTI0MzA5LDUyNDU3Myw0NTkwMjYsNTI0NDA1LDUyNDM0MSw1OTAwMjYsNDU5MDE4LDUyNDM4OSw1MjQzMjUsNTg5OTk0LDUyNDI5Myw1MjQ0MjEsNTI0MzU3LDU5MDA1OCw0NTkwMTQsNTI0MzgxLDUyNDMxNyw1ODk5NzgsNDU5MDMwLDUyNDQxMyw1MjQzNDksNTkwMDQyLDQ1OTAyMiw1MjQzOTcsNTI0MzMzLDU5MDAxMCw1MjQzMDEsNTI0NDI5LDUyNDM2NSw1OTAwNzQsNDU5MDA5LDUyNDM3MSw1MjQzMDcsNTI0NTcxLDQ1OTAyNSw1MjQ0MDMsNTI0MzM5LDU5MDAyMiw0NTkwMTcsNTI0Mzg3LDUyNDMyMyw1ODk5OTAsNTI0MjkxLDUyNDQxOSw1MjQzNTUsNTkwMDU0LDQ1OTAxMyw1MjQzNzksNTI0MzE1LDU4OTk3NCw0NTkwMjksNTI0NDExLDUyNDM0Nyw1OTAwMzgsNDU5MDIxLDUyNDM5NSw1MjQzMzEsNTkwMDA2LDUyNDI5OSw1MjQ0MjcsNTI0MzYzLDU5MDA3MCw0NTkwMTEsNTI0Mzc1LDUyNDMxMSw1MjQ1NzUsNDU5MDI3LDUyNDQwNyw1MjQzNDMsNTkwMDMwLDQ1OTAxOSw1MjQzOTEsNTI0MzI3LDU4OTk5OCw1MjQyOTUsNTI0NDIzLDUyNDM1OSw1OTAwNjIsNDU5MDE1LDUyNDM4Myw1MjQzMTksNTg5OTgyLDQ1OTAzMSw1MjQ0MTUsNTI0MzUxLDU5MDA0Niw0NTkwMjMsNTI0Mzk5LDUyNDMzNSw1OTAwMTQsNTI0MzAzLDUyNDQzMSw1MjQzNjcsNTkwMDc4LDQ1OTAwOCw1MjQzNjgsNTI0MzA0LDUyNDU2OCw0NTkwMjQsNTI0NDAwLDUyNDMzNiw1OTAwMTcsNDU5MDE2LDUyNDM4NCw1MjQzMjAsNTg5OTg1LDUyNDI4OCw1MjQ0MTYsNTI0MzUyLDU5MDA0OSw0NTkwMTIsNTI0Mzc2LDUyNDMxMiw1ODk5NjksNDU5MDI4LDUyNDQwOCw1MjQzNDQsNTkwMDMzLDQ1OTAyMCw1MjQzOTIsNTI0MzI4LDU5MDAwMSw1MjQyOTYsNTI0NDI0LDUyNDM2MCw1OTAwNjUsNDU5MDEwLDUyNDM3Miw1MjQzMDgsNTI0NTcyLDQ1OTAyNiw1MjQ0MDQsNTI0MzQwLDU5MDAyNSw0NTkwMTgsNTI0Mzg4LDUyNDMyNCw1ODk5OTMsNTI0MjkyLDUyNDQyMCw1MjQzNTYsNTkwMDU3LDQ1OTAxNCw1MjQzODAsNTI0MzE2LDU4OTk3Nyw0NTkwMzAsNTI0NDEyLDUyNDM0OCw1OTAwNDEsNDU5MDIyLDUyNDM5Niw1MjQzMzIsNTkwMDA5LDUyNDMwMCw1MjQ0MjgsNTI0MzY0LDU5MDA3Myw0NTkwMDksNTI0MzcwLDUyNDMwNiw1MjQ1NzAsNDU5MDI1LDUyNDQwMiw1MjQzMzgsNTkwMDIxLDQ1OTAxNyw1MjQzODYsNTI0MzIyLDU4OTk4OSw1MjQyOTAsNTI0NDE4LDUyNDM1NCw1OTAwNTMsNDU5MDEzLDUyNDM3OCw1MjQzMTQsNTg5OTczLDQ1OTAyOSw1MjQ0MTAsNTI0MzQ2LDU5MDAzNyw0NTkwMjEsNTI0Mzk0LDUyNDMzMCw1OTAwMDUsNTI0Mjk4LDUyNDQyNiw1MjQzNjIsNTkwMDY5LDQ1OTAxMSw1MjQzNzQsNTI0MzEwLDUyNDU3NCw0NTkwMjcsNTI0NDA2LDUyNDM0Miw1OTAwMjksNDU5MDE5LDUyNDM5MCw1MjQzMjYsNTg5OTk3LDUyNDI5NCw1MjQ0MjIsNTI0MzU4LDU5MDA2MSw0NTkwMTUsNTI0MzgyLDUyNDMxOCw1ODk5ODEsNDU5MDMxLDUyNDQxNCw1MjQzNTAsNTkwMDQ1LDQ1OTAyMyw1MjQzOTgsNTI0MzM0LDU5MDAxMyw1MjQzMDIsNTI0NDMwLDUyNDM2Niw1OTAwNzcsNDU5MDA4LDUyNDM2OSw1MjQzMDUsNTI0NTY5LDQ1OTAyNCw1MjQ0MDEsNTI0MzM3LDU5MDAxOSw0NTkwMTYsNTI0Mzg1LDUyNDMyMSw1ODk5ODcsNTI0Mjg5LDUyNDQxNyw1MjQzNTMsNTkwMDUxLDQ1OTAxMiw1MjQzNzcsNTI0MzEzLDU4OTk3MSw0NTkwMjgsNTI0NDA5LDUyNDM0NSw1OTAwMzUsNDU5MDIwLDUyNDM5Myw1MjQzMjksNTkwMDAzLDUyNDI5Nyw1MjQ0MjUsNTI0MzYxLDU5MDA2Nyw0NTkwMTAsNTI0MzczLDUyNDMwOSw1MjQ1NzMsNDU5MDI2LDUyNDQwNSw1MjQzNDEsNTkwMDI3LDQ1OTAxOCw1MjQzODksNTI0MzI1LDU4OTk5NSw1MjQyOTMsNTI0NDIxLDUyNDM1Nyw1OTAwNTksNDU5MDE0LDUyNDM4MSw1MjQzMTcsNTg5OTc5LDQ1OTAzMCw1MjQ0MTMsNTI0MzQ5LDU5MDA0Myw0NTkwMjIsNTI0Mzk3LDUyNDMzMyw1OTAwMTEsNTI0MzAxLDUyNDQyOSw1MjQzNjUsNTkwMDc1LDQ1OTAwOSw1MjQzNzEsNTI0MzA3LDUyNDU3MSw0NTkwMjUsNTI0NDAzLDUyNDMzOSw1OTAwMjMsNDU5MDE3LDUyNDM4Nyw1MjQzMjMsNTg5OTkxLDUyNDI5MSw1MjQ0MTksNTI0MzU1LDU5MDA1NSw0NTkwMTMsNTI0Mzc5LDUyNDMxNSw1ODk5NzUsNDU5MDI5LDUyNDQxMSw1MjQzNDcsNTkwMDM5LDQ1OTAyMSw1MjQzOTUsNTI0MzMxLDU5MDAwNyw1MjQyOTksNTI0NDI3LDUyNDM2Myw1OTAwNzEsNDU5MDExLDUyNDM3NSw1MjQzMTEsNTI0NTc1LDQ1OTAyNyw1MjQ0MDcsNTI0MzQzLDU5MDAzMSw0NTkwMTksNTI0MzkxLDUyNDMyNyw1ODk5OTksNTI0Mjk1LDUyNDQyMyw1MjQzNTksNTkwMDYzLDQ1OTAxNSw1MjQzODMsNTI0MzE5LDU4OTk4Myw0NTkwMzEsNTI0NDE1LDUyNDM1MSw1OTAwNDcsNDU5MDIzLDUyNDM5OSw1MjQzMzUsNTkwMDE1LDUyNDMwMyw1MjQ0MzEsNTI0MzY3LDU5MDA3OV0pLDldLGw9W25ldyBJbnQzMkFycmF5KFszMjc2ODAsMzI3Njk2LDMyNzY4OCwzMjc3MDQsMzI3Njg0LDMyNzcwMCwzMjc2OTIsMzI3NzA4LDMyNzY4MiwzMjc2OTgsMzI3NjkwLDMyNzcwNiwzMjc2ODYsMzI3NzAyLDMyNzY5NCwwLDMyNzY4MSwzMjc2OTcsMzI3Njg5LDMyNzcwNSwzMjc2ODUsMzI3NzAxLDMyNzY5MywzMjc3MDksMzI3NjgzLDMyNzY5OSwzMjc2OTEsMzI3NzA3LDMyNzY4NywzMjc3MDMsMzI3Njk1LDBdKSw1XTtjbGFzcyBGbGF0ZVN0cmVhbSBleHRlbmRzIHIuRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O2NvbnN0IGE9ZS5nZXRCeXRlKCkscj1lLmdldEJ5dGUoKTtpZigtMT09PWF8fC0xPT09cil0aHJvdyBuZXcgaS5Gb3JtYXRFcnJvcihgSW52YWxpZCBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtOiAke2F9LCAke3J9YCk7aWYoOCE9KDE1JmEpKXRocm93IG5ldyBpLkZvcm1hdEVycm9yKGBVbmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCBpbiBmbGF0ZSBzdHJlYW06ICR7YX0sICR7cn1gKTtpZigoKGE8PDgpK3IpJTMxIT0wKXRocm93IG5ldyBpLkZvcm1hdEVycm9yKGBCYWQgRkNIRUNLIGluIGZsYXRlIHN0cmVhbTogJHthfSwgJHtyfWApO2lmKDMyJnIpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoYEZESUNUIGJpdCBzZXQgaW4gZmxhdGUgc3RyZWFtOiAke2F9LCAke3J9YCk7dGhpcy5jb2RlU2l6ZT0wO3RoaXMuY29kZUJ1Zj0wfWdldEJpdHMoZSl7Y29uc3QgdD10aGlzLnN0cjtsZXQgYSxyPXRoaXMuY29kZVNpemUsbj10aGlzLmNvZGVCdWY7Zm9yKDtyPGU7KXtpZigtMT09PShhPXQuZ2V0Qnl0ZSgpKSl0aHJvdyBuZXcgaS5Gb3JtYXRFcnJvcigiQmFkIGVuY29kaW5nIGluIGZsYXRlIHN0cmVhbSIpO258PWE8PHI7cis9OH1hPW4mKDE8PGUpLTE7dGhpcy5jb2RlQnVmPW4+PmU7dGhpcy5jb2RlU2l6ZT1yLT1lO3JldHVybiBhfWdldENvZGUoZSl7Y29uc3QgdD10aGlzLnN0cixhPWVbMF0scj1lWzFdO2xldCBuLHM9dGhpcy5jb2RlU2l6ZSxvPXRoaXMuY29kZUJ1Zjtmb3IoO3M8ciYmLTEhPT0obj10LmdldEJ5dGUoKSk7KXtvfD1uPDxzO3MrPTh9Y29uc3QgYz1hW28mKDE8PHIpLTFdLGw9Yz4+MTYsaD02NTUzNSZjO2lmKGw8MXx8czxsKXRocm93IG5ldyBpLkZvcm1hdEVycm9yKCJCYWQgZW5jb2RpbmcgaW4gZmxhdGUgc3RyZWFtIik7dGhpcy5jb2RlQnVmPW8+Pmw7dGhpcy5jb2RlU2l6ZT1zLWw7cmV0dXJuIGh9Z2VuZXJhdGVIdWZmbWFuVGFibGUoZSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgYSxyPTA7Zm9yKGE9MDthPHQ7KythKWVbYV0+ciYmKHI9ZVthXSk7Y29uc3QgaT0xPDxyLG49bmV3IEludDMyQXJyYXkoaSk7Zm9yKGxldCBzPTEsbz0wLGM9MjtzPD1yOysrcyxvPDw9MSxjPDw9MSlmb3IobGV0IHI9MDtyPHQ7KytyKWlmKGVbcl09PT1zKXtsZXQgZT0wLHQ9bztmb3IoYT0wO2E8czsrK2Epe2U9ZTw8MXwxJnQ7dD4+PTF9Zm9yKGE9ZTthPGk7YSs9YyluW2FdPXM8PDE2fHI7KytvfXJldHVybltuLHJdfXJlYWRCbG9jaygpe2xldCBlLHQ7Y29uc3QgYT10aGlzLnN0cjtsZXQgcixoLHU9dGhpcy5nZXRCaXRzKDMpOzEmdSYmKHRoaXMuZW9mPSEwKTt1Pj49MTtpZigwPT09dSl7bGV0IHQ7aWYoLTE9PT0odD1hLmdldEJ5dGUoKSkpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoIkJhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtIik7bGV0IHI9dDtpZigtMT09PSh0PWEuZ2V0Qnl0ZSgpKSl0aHJvdyBuZXcgaS5Gb3JtYXRFcnJvcigiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyfD10PDw4O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXRocm93IG5ldyBpLkZvcm1hdEVycm9yKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO2xldCBuPXQ7aWYoLTE9PT0odD1hLmdldEJ5dGUoKSkpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoIkJhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtIik7bnw9dDw8ODtpZihuIT09KDY1NTM1Jn5yKSYmKDAhPT1yfHwwIT09bikpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoIkJhZCB1bmNvbXByZXNzZWQgYmxvY2sgbGVuZ3RoIGluIGZsYXRlIHN0cmVhbSIpO3RoaXMuY29kZUJ1Zj0wO3RoaXMuY29kZVNpemU9MDtjb25zdCBzPXRoaXMuYnVmZmVyTGVuZ3RoLG89cytyO2U9dGhpcy5lbnN1cmVCdWZmZXIobyk7dGhpcy5idWZmZXJMZW5ndGg9bztpZigwPT09ciktMT09PWEucGVla0J5dGUoKSYmKHRoaXMuZW9mPSEwKTtlbHNle2NvbnN0IHQ9YS5nZXRCeXRlcyhyKTtlLnNldCh0LHMpO3QubGVuZ3RoPHImJih0aGlzLmVvZj0hMCl9cmV0dXJufWlmKDE9PT11KXtyPWM7aD1sfWVsc2V7aWYoMiE9PXUpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoIlVua25vd24gYmxvY2sgdHlwZSBpbiBmbGF0ZSBzdHJlYW0iKTt7Y29uc3QgZT10aGlzLmdldEJpdHMoNSkrMjU3LGE9dGhpcy5nZXRCaXRzKDUpKzEsaT10aGlzLmdldEJpdHMoNCkrNCxzPW5ldyBVaW50OEFycmF5KG4ubGVuZ3RoKTtsZXQgbztmb3Iobz0wO288aTsrK28pc1tuW29dXT10aGlzLmdldEJpdHMoMyk7Y29uc3QgYz10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKHMpO3Q9MDtvPTA7Y29uc3QgbD1lK2EsdT1uZXcgVWludDhBcnJheShsKTtsZXQgZCxmLGc7Zm9yKDtvPGw7KXtjb25zdCBlPXRoaXMuZ2V0Q29kZShjKTtpZigxNj09PWUpe2Q9MjtmPTM7Zz10fWVsc2UgaWYoMTc9PT1lKXtkPTM7Zj0zO2c9dD0wfWVsc2V7aWYoMTghPT1lKXt1W28rK109dD1lO2NvbnRpbnVlfWQ9NztmPTExO2c9dD0wfWxldCBhPXRoaXMuZ2V0Qml0cyhkKStmO2Zvcig7YS0tID4wOyl1W28rK109Z31yPXRoaXMuZ2VuZXJhdGVIdWZmbWFuVGFibGUodS5zdWJhcnJheSgwLGUpKTtoPXRoaXMuZ2VuZXJhdGVIdWZmbWFuVGFibGUodS5zdWJhcnJheShlLGwpKX19ZT10aGlzLmJ1ZmZlcjtsZXQgZD1lP2UubGVuZ3RoOjAsZj10aGlzLmJ1ZmZlckxlbmd0aDtmb3IoOzspe2xldCBhPXRoaXMuZ2V0Q29kZShyKTtpZihhPDI1Nil7aWYoZisxPj1kKXtlPXRoaXMuZW5zdXJlQnVmZmVyKGYrMSk7ZD1lLmxlbmd0aH1lW2YrK109YTtjb250aW51ZX1pZigyNTY9PT1hKXt0aGlzLmJ1ZmZlckxlbmd0aD1mO3JldHVybn1hLT0yNTc7YT1zW2FdO2xldCBpPWE+PjE2O2k+MCYmKGk9dGhpcy5nZXRCaXRzKGkpKTt0PSg2NTUzNSZhKStpO2E9dGhpcy5nZXRDb2RlKGgpO2E9b1thXTtpPWE+PjE2O2k+MCYmKGk9dGhpcy5nZXRCaXRzKGkpKTtjb25zdCBuPSg2NTUzNSZhKStpO2lmKGYrdD49ZCl7ZT10aGlzLmVuc3VyZUJ1ZmZlcihmK3QpO2Q9ZS5sZW5ndGh9Zm9yKGxldCBhPTA7YTx0OysrYSwrK2YpZVtmXT1lW2Ytbl19fX10LkZsYXRlU3RyZWFtPUZsYXRlU3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSmJpZzJTdHJlYW09dm9pZCAwO3ZhciByPWEoNSksaT1hKDE4KSxuPWEoNCkscz1hKDI0KSxvPWEoMik7Y2xhc3MgSmJpZzJTdHJlYW0gZXh0ZW5kcyBpLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMubWF5YmVMZW5ndGg9dDt0aGlzLnBhcmFtcz1hfWdldCBieXRlcygpe3JldHVybigwLG8uc2hhZG93KSh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfWVuc3VyZUJ1ZmZlcihlKXt9cmVhZEJsb2NrKCl7aWYodGhpcy5lb2YpcmV0dXJuO2NvbnN0IGU9bmV3IHMuSmJpZzJJbWFnZSx0PVtdO2lmKHRoaXMucGFyYW1zIGluc3RhbmNlb2Ygbi5EaWN0KXtjb25zdCBlPXRoaXMucGFyYW1zLmdldCgiSkJJRzJHbG9iYWxzIik7aWYoZSBpbnN0YW5jZW9mIHIuQmFzZVN0cmVhbSl7Y29uc3QgYT1lLmdldEJ5dGVzKCk7dC5wdXNoKHtkYXRhOmEsc3RhcnQ6MCxlbmQ6YS5sZW5ndGh9KX19dC5wdXNoKHtkYXRhOnRoaXMuYnl0ZXMsc3RhcnQ6MCxlbmQ6dGhpcy5ieXRlcy5sZW5ndGh9KTtjb25zdCBhPWUucGFyc2VDaHVua3ModCksaT1hLmxlbmd0aDtmb3IobGV0IGU9MDtlPGk7ZSsrKWFbZV1ePTI1NTt0aGlzLmJ1ZmZlcj1hO3RoaXMuYnVmZmVyTGVuZ3RoPWk7dGhpcy5lb2Y9ITB9fXQuSmJpZzJTdHJlYW09SmJpZzJTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5KYmlnMkltYWdlPXZvaWQgMDt2YXIgcj1hKDIpLGk9YSgzKSxuPWEoMjUpLHM9YSgyMSk7Y2xhc3MgSmJpZzJFcnJvciBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihgSkJJRzIgZXJyb3I6ICR7ZX1gLCJKYmlnMkVycm9yIil9fWNsYXNzIENvbnRleHRDYWNoZXtnZXRDb250ZXh0cyhlKXtyZXR1cm4gZSBpbiB0aGlzP3RoaXNbZV06dGhpc1tlXT1uZXcgSW50OEFycmF5KDY1NTM2KX19Y2xhc3MgRGVjb2RpbmdDb250ZXh0e2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmRhdGE9ZTt0aGlzLnN0YXJ0PXQ7dGhpcy5lbmQ9YX1nZXQgZGVjb2Rlcigpe2NvbnN0IGU9bmV3IG4uQXJpdGhtZXRpY0RlY29kZXIodGhpcy5kYXRhLHRoaXMuc3RhcnQsdGhpcy5lbmQpO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJkZWNvZGVyIixlKX1nZXQgY29udGV4dENhY2hlKCl7Y29uc3QgZT1uZXcgQ29udGV4dENhY2hlO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJjb250ZXh0Q2FjaGUiLGUpfX1jb25zdCBvPTIqKjMxLTEsYz0tKDIqKjMxKTtmdW5jdGlvbiBkZWNvZGVJbnRlZ2VyKGUsdCxhKXtjb25zdCByPWUuZ2V0Q29udGV4dHModCk7bGV0IGk9MTtmdW5jdGlvbiByZWFkQml0cyhlKXtsZXQgdD0wO2ZvcihsZXQgbj0wO248ZTtuKyspe2NvbnN0IGU9YS5yZWFkQml0KHIsaSk7aT1pPDI1Nj9pPDwxfGU6NTExJihpPDwxfGUpfDI1Njt0PXQ8PDF8ZX1yZXR1cm4gdD4+PjB9Y29uc3Qgbj1yZWFkQml0cygxKSxzPXJlYWRCaXRzKDEpP3JlYWRCaXRzKDEpP3JlYWRCaXRzKDEpP3JlYWRCaXRzKDEpP3JlYWRCaXRzKDEpP3JlYWRCaXRzKDMyKSs0NDM2OnJlYWRCaXRzKDEyKSszNDA6cmVhZEJpdHMoOCkrODQ6cmVhZEJpdHMoNikrMjA6cmVhZEJpdHMoNCkrNDpyZWFkQml0cygyKTtsZXQgbDswPT09bj9sPXM6cz4wJiYobD0tcyk7cmV0dXJuIGw+PWMmJmw8PW8/bDpudWxsfWZ1bmN0aW9uIGRlY29kZUlBSUQoZSx0LGEpe2NvbnN0IHI9ZS5nZXRDb250ZXh0cygiSUFJRCIpO2xldCBpPTE7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7aT1pPDwxfHQucmVhZEJpdChyLGkpfXJldHVybiBhPDMxP2kmKDE8PGEpLTE6MjE0NzQ4MzY0NyZpfWNvbnN0IGw9WyJTeW1ib2xEaWN0aW9uYXJ5IixudWxsLG51bGwsbnVsbCwiSW50ZXJtZWRpYXRlVGV4dFJlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlVGV4dFJlZ2lvbiIsIkltbWVkaWF0ZUxvc3NsZXNzVGV4dFJlZ2lvbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCJQYXR0ZXJuRGljdGlvbmFyeSIsbnVsbCxudWxsLG51bGwsIkludGVybWVkaWF0ZUhhbGZ0b25lUmVnaW9uIixudWxsLCJJbW1lZGlhdGVIYWxmdG9uZVJlZ2lvbiIsIkltbWVkaWF0ZUxvc3NsZXNzSGFsZnRvbmVSZWdpb24iLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCJJbnRlcm1lZGlhdGVHZW5lcmljUmVnaW9uIixudWxsLCJJbW1lZGlhdGVHZW5lcmljUmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NHZW5lcmljUmVnaW9uIiwiSW50ZXJtZWRpYXRlR2VuZXJpY1JlZmluZW1lbnRSZWdpb24iLG51bGwsIkltbWVkaWF0ZUdlbmVyaWNSZWZpbmVtZW50UmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NHZW5lcmljUmVmaW5lbWVudFJlZ2lvbiIsbnVsbCxudWxsLG51bGwsbnVsbCwiUGFnZUluZm9ybWF0aW9uIiwiRW5kT2ZQYWdlIiwiRW5kT2ZTdHJpcGUiLCJFbmRPZkZpbGUiLCJQcm9maWxlcyIsIlRhYmxlcyIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCJFeHRlbnNpb24iXSxoPVtbe3g6LTEseTotMn0se3g6MCx5Oi0yfSx7eDoxLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDoyLHk6LTF9LHt4Oi00LHk6MH0se3g6LTMseTowfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dLFt7eDotMSx5Oi0yfSx7eDowLHk6LTJ9LHt4OjEseTotMn0se3g6Mix5Oi0yfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6Mix5Oi0xfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV0sW3t4Oi0xLHk6LTJ9LHt4OjAseTotMn0se3g6MSx5Oi0yfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTIseTowfSx7eDotMSx5OjB9XSxbe3g6LTMseTotMX0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi00LHk6MH0se3g6LTMseTowfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dXSx1PVt7Y29kaW5nOlt7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTEseTowfV0scmVmZXJlbmNlOlt7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTEseTowfSx7eDowLHk6MH0se3g6MSx5OjB9LHt4Oi0xLHk6MX0se3g6MCx5OjF9LHt4OjEseToxfV19LHtjb2Rpbmc6W3t4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9XSxyZWZlcmVuY2U6W3t4OjAseTotMX0se3g6LTEseTowfSx7eDowLHk6MH0se3g6MSx5OjB9LHt4OjAseToxfSx7eDoxLHk6MX1dfV0sZD1bMzk3MTcsMTk0MSwyMjksNDA1XSxmPVszMiw4XTtmdW5jdGlvbiBkZWNvZGVCaXRtYXAoZSx0LGEscixpLG4scyxvKXtpZihlKXtyZXR1cm4gZGVjb2RlTU1SQml0bWFwKG5ldyBSZWFkZXIoby5kYXRhLG8uc3RhcnQsby5lbmQpLHQsYSwhMSl9aWYoMD09PXImJiFuJiYhaSYmND09PXMubGVuZ3RoJiYzPT09c1swXS54JiYtMT09PXNbMF0ueSYmLTM9PT1zWzFdLngmJi0xPT09c1sxXS55JiYyPT09c1syXS54JiYtMj09PXNbMl0ueSYmLTI9PT1zWzNdLngmJi0yPT09c1szXS55KXJldHVybiBmdW5jdGlvbiBkZWNvZGVCaXRtYXBUZW1wbGF0ZTAoZSx0LGEpe2NvbnN0IHI9YS5kZWNvZGVyLGk9YS5jb250ZXh0Q2FjaGUuZ2V0Q29udGV4dHMoIkdCIiksbj1bXTtsZXQgcyxvLGMsbCxoLHUsZDtmb3Iobz0wO288dDtvKyspe2g9bltvXT1uZXcgVWludDhBcnJheShlKTt1PW88MT9oOm5bby0xXTtkPW88Mj9oOm5bby0yXTtzPWRbMF08PDEzfGRbMV08PDEyfGRbMl08PDExfHVbMF08PDd8dVsxXTw8Nnx1WzJdPDw1fHVbM108PDQ7Zm9yKGM9MDtjPGU7YysrKXtoW2NdPWw9ci5yZWFkQml0KGkscyk7cz0oMzE3MzUmcyk8PDF8KGMrMzxlP2RbYyszXTw8MTE6MCl8KGMrNDxlP3VbYys0XTw8NDowKXxsfX1yZXR1cm4gbn0odCxhLG8pO2NvbnN0IGM9ISFuLGw9aFtyXS5jb25jYXQocyk7bC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLnktdC55fHxlLngtdC54fSkpO2NvbnN0IHU9bC5sZW5ndGgsZj1uZXcgSW50OEFycmF5KHUpLGc9bmV3IEludDhBcnJheSh1KSxwPVtdO2xldCBtLGIseT0wLHc9MCxTPTAseD0wO2ZvcihiPTA7Yjx1O2IrKyl7ZltiXT1sW2JdLng7Z1tiXT1sW2JdLnk7dz1NYXRoLm1pbih3LGxbYl0ueCk7Uz1NYXRoLm1heChTLGxbYl0ueCk7eD1NYXRoLm1pbih4LGxbYl0ueSk7Yjx1LTEmJmxbYl0ueT09PWxbYisxXS55JiZsW2JdLng9PT1sW2IrMV0ueC0xP3l8PTE8PHUtMS1iOnAucHVzaChiKX1jb25zdCBDPXAubGVuZ3RoLGs9bmV3IEludDhBcnJheShDKSx2PW5ldyBJbnQ4QXJyYXkoQyksRj1uZXcgVWludDE2QXJyYXkoQyk7Zm9yKG09MDttPEM7bSsrKXtiPXBbbV07a1ttXT1sW2JdLng7dlttXT1sW2JdLnk7RlttXT0xPDx1LTEtYn1jb25zdCBPPS13LFQ9LXgsTT10LVMsRT1kW3JdO2xldCBEPW5ldyBVaW50OEFycmF5KHQpO2NvbnN0IE49W10sUj1vLmRlY29kZXIsTD1vLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR0IiKTtsZXQgXywkLGosVSxYLEg9MCxxPTA7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7aWYoaSl7SF49Ui5yZWFkQml0KEwsRSk7aWYoSCl7Ti5wdXNoKEQpO2NvbnRpbnVlfX1EPW5ldyBVaW50OEFycmF5KEQpO04ucHVzaChEKTtmb3IoXz0wO188dDtfKyspe2lmKGMmJm5bZV1bX10pe0RbX109MDtjb250aW51ZX1pZihfPj1PJiZfPE0mJmU+PVQpe3E9cTw8MSZ5O2ZvcihiPTA7YjxDO2IrKyl7JD1lK3ZbYl07aj1fK2tbYl07VT1OWyRdW2pdO2lmKFUpe1U9RltiXTtxfD1VfX19ZWxzZXtxPTA7WD11LTE7Zm9yKGI9MDtiPHU7YisrLFgtLSl7aj1fK2ZbYl07aWYoaj49MCYmajx0KXskPWUrZ1tiXTtpZigkPj0wKXtVPU5bJF1bal07VSYmKHF8PVU8PFgpfX19fWNvbnN0IGE9Ui5yZWFkQml0KEwscSk7RFtfXT1hfX1yZXR1cm4gTn1mdW5jdGlvbiBkZWNvZGVSZWZpbmVtZW50KGUsdCxhLHIsaSxuLHMsbyxjKXtsZXQgbD11W2FdLmNvZGluZzswPT09YSYmKGw9bC5jb25jYXQoW29bMF1dKSk7Y29uc3QgaD1sLmxlbmd0aCxkPW5ldyBJbnQzMkFycmF5KGgpLGc9bmV3IEludDMyQXJyYXkoaCk7bGV0IHA7Zm9yKHA9MDtwPGg7cCsrKXtkW3BdPWxbcF0ueDtnW3BdPWxbcF0ueX1sZXQgbT11W2FdLnJlZmVyZW5jZTswPT09YSYmKG09bS5jb25jYXQoW29bMV1dKSk7Y29uc3QgYj1tLmxlbmd0aCx5PW5ldyBJbnQzMkFycmF5KGIpLHc9bmV3IEludDMyQXJyYXkoYik7Zm9yKHA9MDtwPGI7cCsrKXt5W3BdPW1bcF0ueDt3W3BdPW1bcF0ueX1jb25zdCBTPXJbMF0ubGVuZ3RoLHg9ci5sZW5ndGgsQz1mW2FdLGs9W10sdj1jLmRlY29kZXIsRj1jLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR1IiKTtsZXQgTz0wO2ZvcihsZXQgYT0wO2E8dDthKyspe2lmKHMpe09ePXYucmVhZEJpdChGLEMpO2lmKE8pdGhyb3cgbmV3IEpiaWcyRXJyb3IoInByZWRpY3Rpb24gaXMgbm90IHN1cHBvcnRlZCIpfWNvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoZSk7ay5wdXNoKHQpO2ZvcihsZXQgcz0wO3M8ZTtzKyspe2xldCBvLGMsbD0wO2ZvcihwPTA7cDxoO3ArKyl7bz1hK2dbcF07Yz1zK2RbcF07bzwwfHxjPDB8fGM+PWU/bDw8PTE6bD1sPDwxfGtbb11bY119Zm9yKHA9MDtwPGI7cCsrKXtvPWErd1twXS1uO2M9cyt5W3BdLWk7bzwwfHxvPj14fHxjPDB8fGM+PVM/bDw8PTE6bD1sPDwxfHJbb11bY119Y29uc3QgdT12LnJlYWRCaXQoRixsKTt0W3NdPXV9fXJldHVybiBrfWZ1bmN0aW9uIGRlY29kZVRleHRSZWdpb24oZSx0LGEscixpLG4scyxvLGMsbCxoLHUsZCxmLGcscCxtLGIseSl7aWYoZSYmdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigicmVmaW5lbWVudCB3aXRoIEh1ZmZtYW4gaXMgbm90IHN1cHBvcnRlZCIpO2NvbnN0IHc9W107bGV0IFMseDtmb3IoUz0wO1M8cjtTKyspe3g9bmV3IFVpbnQ4QXJyYXkoYSk7aWYoaSlmb3IobGV0IGU9MDtlPGE7ZSsrKXhbZV09aTt3LnB1c2goeCl9Y29uc3QgQz1tLmRlY29kZXIsaz1tLmNvbnRleHRDYWNoZTtsZXQgdj1lPy1mLnRhYmxlRGVsdGFULmRlY29kZSh5KTotZGVjb2RlSW50ZWdlcihrLCJJQURUIixDKSxGPTA7Uz0wO2Zvcig7UzxuOyl7dis9ZT9mLnRhYmxlRGVsdGFULmRlY29kZSh5KTpkZWNvZGVJbnRlZ2VyKGssIklBRFQiLEMpO0YrPWU/Zi50YWJsZUZpcnN0Uy5kZWNvZGUoeSk6ZGVjb2RlSW50ZWdlcihrLCJJQUZTIixDKTtsZXQgcj1GO2Zvcig7Oyl7bGV0IGk9MDtzPjEmJihpPWU/eS5yZWFkQml0cyhiKTpkZWNvZGVJbnRlZ2VyKGssIklBSVQiLEMpKTtjb25zdCBuPXMqditpLEY9ZT9mLnN5bWJvbElEVGFibGUuZGVjb2RlKHkpOmRlY29kZUlBSUQoayxDLGMpLE89dCYmKGU/eS5yZWFkQml0KCk6ZGVjb2RlSW50ZWdlcihrLCJJQVJJIixDKSk7bGV0IFQ9b1tGXSxNPVRbMF0ubGVuZ3RoLEU9VC5sZW5ndGg7aWYoTyl7Y29uc3QgZT1kZWNvZGVJbnRlZ2VyKGssIklBUkRXIixDKSx0PWRlY29kZUludGVnZXIoaywiSUFSREgiLEMpO00rPWU7RSs9dDtUPWRlY29kZVJlZmluZW1lbnQoTSxFLGcsVCwoZT4+MSkrZGVjb2RlSW50ZWdlcihrLCJJQVJEWCIsQyksKHQ+PjEpK2RlY29kZUludGVnZXIoaywiSUFSRFkiLEMpLCExLHAsbSl9Y29uc3QgRD1uLSgxJnU/MDpFLTEpLE49ci0oMiZ1P00tMTowKTtsZXQgUixMLF87aWYobCl7Zm9yKFI9MDtSPEU7UisrKXt4PXdbTitSXTtpZigheCljb250aW51ZTtfPVRbUl07Y29uc3QgZT1NYXRoLm1pbihhLUQsTSk7c3dpdGNoKGQpe2Nhc2UgMDpmb3IoTD0wO0w8ZTtMKyspeFtEK0xdfD1fW0xdO2JyZWFrO2Nhc2UgMjpmb3IoTD0wO0w8ZTtMKyspeFtEK0xdXj1fW0xdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICR7ZH0gaXMgbm90IHN1cHBvcnRlZGApfX1yKz1FLTF9ZWxzZXtmb3IoTD0wO0w8RTtMKyspe3g9d1tEK0xdO2lmKHgpe189VFtMXTtzd2l0Y2goZCl7Y2FzZSAwOmZvcihSPTA7UjxNO1IrKyl4W04rUl18PV9bUl07YnJlYWs7Y2FzZSAyOmZvcihSPTA7UjxNO1IrKyl4W04rUl1ePV9bUl07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgJHtkfSBpcyBub3Qgc3VwcG9ydGVkYCl9fX1yKz1NLTF9UysrO2NvbnN0ICQ9ZT9mLnRhYmxlRGVsdGFTLmRlY29kZSh5KTpkZWNvZGVJbnRlZ2VyKGssIklBRFMiLEMpO2lmKG51bGw9PT0kKWJyZWFrO3IrPSQraH19cmV0dXJuIHd9ZnVuY3Rpb24gcmVhZFNlZ21lbnRIZWFkZXIoZSx0KXtjb25zdCBhPXt9O2EubnVtYmVyPSgwLGkucmVhZFVpbnQzMikoZSx0KTtjb25zdCByPWVbdCs0XSxuPTYzJnI7aWYoIWxbbl0pdGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgc2VnbWVudCB0eXBlOiAiK24pO2EudHlwZT1uO2EudHlwZU5hbWU9bFtuXTthLmRlZmVycmVkTm9uUmV0YWluPSEhKDEyOCZyKTtjb25zdCBzPSEhKDY0JnIpLG89ZVt0KzVdO2xldCBjPW8+PjUmNztjb25zdCBoPVszMSZvXTtsZXQgdT10KzY7aWYoNz09PW8pe2M9NTM2ODcwOTExJigwLGkucmVhZFVpbnQzMikoZSx1LTEpO3UrPTM7bGV0IHQ9Yys3Pj4zO2hbMF09ZVt1KytdO2Zvcig7LS10PjA7KWgucHVzaChlW3UrK10pfWVsc2UgaWYoNT09PW98fDY9PT1vKXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIHJlZmVycmVkLXRvIGZsYWdzIik7YS5yZXRhaW5CaXRzPWg7bGV0IGQ9NDthLm51bWJlcjw9MjU2P2Q9MTphLm51bWJlcjw9NjU1MzYmJihkPTIpO2NvbnN0IGY9W107bGV0IHAsbTtmb3IocD0wO3A8YztwKyspe2xldCB0O3Q9MT09PWQ/ZVt1XToyPT09ZD8oMCxpLnJlYWRVaW50MTYpKGUsdSk6KDAsaS5yZWFkVWludDMyKShlLHUpO2YucHVzaCh0KTt1Kz1kfWEucmVmZXJyZWRUbz1mO2lmKHMpe2EucGFnZUFzc29jaWF0aW9uPSgwLGkucmVhZFVpbnQzMikoZSx1KTt1Kz00fWVsc2UgYS5wYWdlQXNzb2NpYXRpb249ZVt1KytdO2EubGVuZ3RoPSgwLGkucmVhZFVpbnQzMikoZSx1KTt1Kz00O2lmKDQyOTQ5NjcyOTU9PT1hLmxlbmd0aCl7aWYoMzghPT1uKXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIHVua25vd24gc2VnbWVudCBsZW5ndGgiKTt7Y29uc3QgdD1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGUsdSkscj0hISgxJmVbdStnXSksaT02LG49bmV3IFVpbnQ4QXJyYXkoaSk7aWYoIXIpe25bMF09MjU1O25bMV09MTcyfW5bMl09dC5oZWlnaHQ+Pj4yNCYyNTU7blszXT10LmhlaWdodD4+MTYmMjU1O25bNF09dC5oZWlnaHQ+PjgmMjU1O25bNV09MjU1JnQuaGVpZ2h0O2ZvcihwPXUsbT1lLmxlbmd0aDtwPG07cCsrKXtsZXQgdD0wO2Zvcig7dDxpJiZuW3RdPT09ZVtwK3RdOyl0Kys7aWYodD09PWkpe2EubGVuZ3RoPXAraTticmVha319aWYoNDI5NDk2NzI5NT09PWEubGVuZ3RoKXRocm93IG5ldyBKYmlnMkVycm9yKCJzZWdtZW50IGVuZCB3YXMgbm90IGZvdW5kIil9fWEuaGVhZGVyRW5kPXU7cmV0dXJuIGF9ZnVuY3Rpb24gcmVhZFNlZ21lbnRzKGUsdCxhLHIpe2NvbnN0IGk9W107bGV0IG49YTtmb3IoO248cjspe2NvbnN0IGE9cmVhZFNlZ21lbnRIZWFkZXIodCxuKTtuPWEuaGVhZGVyRW5kO2NvbnN0IHI9e2hlYWRlcjphLGRhdGE6dH07aWYoIWUucmFuZG9tQWNjZXNzKXtyLnN0YXJ0PW47bis9YS5sZW5ndGg7ci5lbmQ9bn1pLnB1c2gocik7aWYoNTE9PT1hLnR5cGUpYnJlYWt9aWYoZS5yYW5kb21BY2Nlc3MpZm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSsrKXtpW2VdLnN0YXJ0PW47bis9aVtlXS5oZWFkZXIubGVuZ3RoO2lbZV0uZW5kPW59cmV0dXJuIGl9ZnVuY3Rpb24gcmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihlLHQpe3JldHVybnt3aWR0aDooMCxpLnJlYWRVaW50MzIpKGUsdCksaGVpZ2h0OigwLGkucmVhZFVpbnQzMikoZSx0KzQpLHg6KDAsaS5yZWFkVWludDMyKShlLHQrOCkseTooMCxpLnJlYWRVaW50MzIpKGUsdCsxMiksY29tYmluYXRpb25PcGVyYXRvcjo3JmVbdCsxNl19fWNvbnN0IGc9MTc7ZnVuY3Rpb24gcHJvY2Vzc1NlZ21lbnQoZSx0KXtjb25zdCBhPWUuaGVhZGVyLHI9ZS5kYXRhLG49ZS5lbmQ7bGV0IHMsbyxjLGwsaD1lLnN0YXJ0O3N3aXRjaChhLnR5cGUpe2Nhc2UgMDpjb25zdCBlPXt9LHQ9KDAsaS5yZWFkVWludDE2KShyLGgpO2UuaHVmZm1hbj0hISgxJnQpO2UucmVmaW5lbWVudD0hISgyJnQpO2UuaHVmZm1hbkRIU2VsZWN0b3I9dD4+MiYzO2UuaHVmZm1hbkRXU2VsZWN0b3I9dD4+NCYzO2UuYml0bWFwU2l6ZVNlbGVjdG9yPXQ+PjYmMTtlLmFnZ3JlZ2F0aW9uSW5zdGFuY2VzU2VsZWN0b3I9dD4+NyYxO2UuYml0bWFwQ29kaW5nQ29udGV4dFVzZWQ9ISEoMjU2JnQpO2UuYml0bWFwQ29kaW5nQ29udGV4dFJldGFpbmVkPSEhKDUxMiZ0KTtlLnRlbXBsYXRlPXQ+PjEwJjM7ZS5yZWZpbmVtZW50VGVtcGxhdGU9dD4+MTImMTtoKz0yO2lmKCFlLmh1ZmZtYW4pe2w9MD09PWUudGVtcGxhdGU/NDoxO289W107Zm9yKGM9MDtjPGw7YysrKXtvLnB1c2goe3g6KDAsaS5yZWFkSW50OCkocixoKSx5OigwLGkucmVhZEludDgpKHIsaCsxKX0pO2grPTJ9ZS5hdD1vfWlmKGUucmVmaW5lbWVudCYmIWUucmVmaW5lbWVudFRlbXBsYXRlKXtvPVtdO2ZvcihjPTA7YzwyO2MrKyl7by5wdXNoKHt4OigwLGkucmVhZEludDgpKHIsaCkseTooMCxpLnJlYWRJbnQ4KShyLGgrMSl9KTtoKz0yfWUucmVmaW5lbWVudEF0PW99ZS5udW1iZXJPZkV4cG9ydGVkU3ltYm9scz0oMCxpLnJlYWRVaW50MzIpKHIsaCk7aCs9NDtlLm51bWJlck9mTmV3U3ltYm9scz0oMCxpLnJlYWRVaW50MzIpKHIsaCk7aCs9NDtzPVtlLGEubnVtYmVyLGEucmVmZXJyZWRUbyxyLGgsbl07YnJlYWs7Y2FzZSA2OmNhc2UgNzpjb25zdCB1PXt9O3UuaW5mbz1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKHIsaCk7aCs9Zztjb25zdCBkPSgwLGkucmVhZFVpbnQxNikocixoKTtoKz0yO3UuaHVmZm1hbj0hISgxJmQpO3UucmVmaW5lbWVudD0hISgyJmQpO3UubG9nU3RyaXBTaXplPWQ+PjImMzt1LnN0cmlwU2l6ZT0xPDx1LmxvZ1N0cmlwU2l6ZTt1LnJlZmVyZW5jZUNvcm5lcj1kPj40JjM7dS50cmFuc3Bvc2VkPSEhKDY0JmQpO3UuY29tYmluYXRpb25PcGVyYXRvcj1kPj43JjM7dS5kZWZhdWx0UGl4ZWxWYWx1ZT1kPj45JjE7dS5kc09mZnNldD1kPDwxNz4+Mjc7dS5yZWZpbmVtZW50VGVtcGxhdGU9ZD4+MTUmMTtpZih1Lmh1ZmZtYW4pe2NvbnN0IGU9KDAsaS5yZWFkVWludDE2KShyLGgpO2grPTI7dS5odWZmbWFuRlM9MyZlO3UuaHVmZm1hbkRTPWU+PjImMzt1Lmh1ZmZtYW5EVD1lPj40JjM7dS5odWZmbWFuUmVmaW5lbWVudERXPWU+PjYmMzt1Lmh1ZmZtYW5SZWZpbmVtZW50REg9ZT4+OCYzO3UuaHVmZm1hblJlZmluZW1lbnREWD1lPj4xMCYzO3UuaHVmZm1hblJlZmluZW1lbnREWT1lPj4xMiYzO3UuaHVmZm1hblJlZmluZW1lbnRTaXplU2VsZWN0b3I9ISEoMTYzODQmZSl9aWYodS5yZWZpbmVtZW50JiYhdS5yZWZpbmVtZW50VGVtcGxhdGUpe289W107Zm9yKGM9MDtjPDI7YysrKXtvLnB1c2goe3g6KDAsaS5yZWFkSW50OCkocixoKSx5OigwLGkucmVhZEludDgpKHIsaCsxKX0pO2grPTJ9dS5yZWZpbmVtZW50QXQ9b311Lm51bWJlck9mU3ltYm9sSW5zdGFuY2VzPSgwLGkucmVhZFVpbnQzMikocixoKTtoKz00O3M9W3UsYS5yZWZlcnJlZFRvLHIsaCxuXTticmVhaztjYXNlIDE2OmNvbnN0IGY9e30scD1yW2grK107Zi5tbXI9ISEoMSZwKTtmLnRlbXBsYXRlPXA+PjEmMztmLnBhdHRlcm5XaWR0aD1yW2grK107Zi5wYXR0ZXJuSGVpZ2h0PXJbaCsrXTtmLm1heFBhdHRlcm5JbmRleD0oMCxpLnJlYWRVaW50MzIpKHIsaCk7aCs9NDtzPVtmLGEubnVtYmVyLHIsaCxuXTticmVhaztjYXNlIDIyOmNhc2UgMjM6Y29uc3QgbT17fTttLmluZm89cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihyLGgpO2grPWc7Y29uc3QgYj1yW2grK107bS5tbXI9ISEoMSZiKTttLnRlbXBsYXRlPWI+PjEmMzttLmVuYWJsZVNraXA9ISEoOCZiKTttLmNvbWJpbmF0aW9uT3BlcmF0b3I9Yj4+NCY3O20uZGVmYXVsdFBpeGVsVmFsdWU9Yj4+NyYxO20uZ3JpZFdpZHRoPSgwLGkucmVhZFVpbnQzMikocixoKTtoKz00O20uZ3JpZEhlaWdodD0oMCxpLnJlYWRVaW50MzIpKHIsaCk7aCs9NDttLmdyaWRPZmZzZXRYPTQyOTQ5NjcyOTUmKDAsaS5yZWFkVWludDMyKShyLGgpO2grPTQ7bS5ncmlkT2Zmc2V0WT00Mjk0OTY3Mjk1JigwLGkucmVhZFVpbnQzMikocixoKTtoKz00O20uZ3JpZFZlY3Rvclg9KDAsaS5yZWFkVWludDE2KShyLGgpO2grPTI7bS5ncmlkVmVjdG9yWT0oMCxpLnJlYWRVaW50MTYpKHIsaCk7aCs9MjtzPVttLGEucmVmZXJyZWRUbyxyLGgsbl07YnJlYWs7Y2FzZSAzODpjYXNlIDM5OmNvbnN0IHk9e307eS5pbmZvPXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24ocixoKTtoKz1nO2NvbnN0IHc9cltoKytdO3kubW1yPSEhKDEmdyk7eS50ZW1wbGF0ZT13Pj4xJjM7eS5wcmVkaWN0aW9uPSEhKDgmdyk7aWYoIXkubW1yKXtsPTA9PT15LnRlbXBsYXRlPzQ6MTtvPVtdO2ZvcihjPTA7YzxsO2MrKyl7by5wdXNoKHt4OigwLGkucmVhZEludDgpKHIsaCkseTooMCxpLnJlYWRJbnQ4KShyLGgrMSl9KTtoKz0yfXkuYXQ9b31zPVt5LHIsaCxuXTticmVhaztjYXNlIDQ4OmNvbnN0IFM9e3dpZHRoOigwLGkucmVhZFVpbnQzMikocixoKSxoZWlnaHQ6KDAsaS5yZWFkVWludDMyKShyLGgrNCkscmVzb2x1dGlvblg6KDAsaS5yZWFkVWludDMyKShyLGgrOCkscmVzb2x1dGlvblk6KDAsaS5yZWFkVWludDMyKShyLGgrMTIpfTs0Mjk0OTY3Mjk1PT09Uy5oZWlnaHQmJmRlbGV0ZSBTLmhlaWdodDtjb25zdCB4PXJbaCsxNl07KDAsaS5yZWFkVWludDE2KShyLGgrMTcpO1MubG9zc2xlc3M9ISEoMSZ4KTtTLnJlZmluZW1lbnQ9ISEoMiZ4KTtTLmRlZmF1bHRQaXhlbFZhbHVlPXg+PjImMTtTLmNvbWJpbmF0aW9uT3BlcmF0b3I9eD4+MyYzO1MucmVxdWlyZXNCdWZmZXI9ISEoMzImeCk7Uy5jb21iaW5hdGlvbk9wZXJhdG9yT3ZlcnJpZGU9ISEoNjQmeCk7cz1bU107YnJlYWs7Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA2MjpicmVhaztjYXNlIDUzOnM9W2EubnVtYmVyLHIsaCxuXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBzZWdtZW50IHR5cGUgJHthLnR5cGVOYW1lfSgke2EudHlwZX0pIGlzIG5vdCBpbXBsZW1lbnRlZGApfWNvbnN0IHU9Im9uIithLnR5cGVOYW1lO3UgaW4gdCYmdFt1XS5hcHBseSh0LHMpfWZ1bmN0aW9uIHByb2Nlc3NTZWdtZW50cyhlLHQpe2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKylwcm9jZXNzU2VnbWVudChlW2FdLHQpfWNsYXNzIFNpbXBsZVNlZ21lbnRWaXNpdG9ye29uUGFnZUluZm9ybWF0aW9uKGUpe3RoaXMuY3VycmVudFBhZ2VJbmZvPWU7Y29uc3QgdD1lLndpZHRoKzc+PjMsYT1uZXcgVWludDhDbGFtcGVkQXJyYXkodCplLmhlaWdodCk7ZS5kZWZhdWx0UGl4ZWxWYWx1ZSYmYS5maWxsKDI1NSk7dGhpcy5idWZmZXI9YX1kcmF3Qml0bWFwKGUsdCl7Y29uc3QgYT10aGlzLmN1cnJlbnRQYWdlSW5mbyxyPWUud2lkdGgsaT1lLmhlaWdodCxuPWEud2lkdGgrNz4+MyxzPWEuY29tYmluYXRpb25PcGVyYXRvck92ZXJyaWRlP2UuY29tYmluYXRpb25PcGVyYXRvcjphLmNvbWJpbmF0aW9uT3BlcmF0b3Isbz10aGlzLmJ1ZmZlcixjPTEyOD4+KDcmZS54KTtsZXQgbCxoLHUsZCxmPWUueSpuKyhlLng+PjMpO3N3aXRjaChzKXtjYXNlIDA6Zm9yKGw9MDtsPGk7bCsrKXt1PWM7ZD1mO2ZvcihoPTA7aDxyO2grKyl7dFtsXVtoXSYmKG9bZF18PXUpO3U+Pj0xO2lmKCF1KXt1PTEyODtkKyt9fWYrPW59YnJlYWs7Y2FzZSAyOmZvcihsPTA7bDxpO2wrKyl7dT1jO2Q9Zjtmb3IoaD0wO2g8cjtoKyspe3RbbF1baF0mJihvW2RdXj11KTt1Pj49MTtpZighdSl7dT0xMjg7ZCsrfX1mKz1ufWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICR7c30gaXMgbm90IHN1cHBvcnRlZGApfX1vbkltbWVkaWF0ZUdlbmVyaWNSZWdpb24oZSx0LGEscil7Y29uc3QgaT1lLmluZm8sbj1uZXcgRGVjb2RpbmdDb250ZXh0KHQsYSxyKSxzPWRlY29kZUJpdG1hcChlLm1tcixpLndpZHRoLGkuaGVpZ2h0LGUudGVtcGxhdGUsZS5wcmVkaWN0aW9uLG51bGwsZS5hdCxuKTt0aGlzLmRyYXdCaXRtYXAoaSxzKX1vbkltbWVkaWF0ZUxvc3NsZXNzR2VuZXJpY1JlZ2lvbigpe3RoaXMub25JbW1lZGlhdGVHZW5lcmljUmVnaW9uKC4uLmFyZ3VtZW50cyl9b25TeW1ib2xEaWN0aW9uYXJ5KGUsdCxhLHIsbixzKXtsZXQgbyxjO2lmKGUuaHVmZm1hbil7bz1mdW5jdGlvbiBnZXRTeW1ib2xEaWN0aW9uYXJ5SHVmZm1hblRhYmxlcyhlLHQsYSl7bGV0IHIsaSxuLHMsbz0wO3N3aXRjaChlLmh1ZmZtYW5ESFNlbGVjdG9yKXtjYXNlIDA6Y2FzZSAxOnI9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5ESFNlbGVjdG9yKzQpO2JyZWFrO2Nhc2UgMzpyPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShvLHQsYSk7bysrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBESCBzZWxlY3RvciIpfXN3aXRjaChlLmh1ZmZtYW5EV1NlbGVjdG9yKXtjYXNlIDA6Y2FzZSAxOmk9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EV1NlbGVjdG9yKzIpO2JyZWFrO2Nhc2UgMzppPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShvLHQsYSk7bysrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBEVyBzZWxlY3RvciIpfWlmKGUuYml0bWFwU2l6ZVNlbGVjdG9yKXtuPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShvLHQsYSk7bysrfWVsc2Ugbj1nZXRTdGFuZGFyZFRhYmxlKDEpO3M9ZS5hZ2dyZWdhdGlvbkluc3RhbmNlc1NlbGVjdG9yP2dldEN1c3RvbUh1ZmZtYW5UYWJsZShvLHQsYSk6Z2V0U3RhbmRhcmRUYWJsZSgxKTtyZXR1cm57dGFibGVEZWx0YUhlaWdodDpyLHRhYmxlRGVsdGFXaWR0aDppLHRhYmxlQml0bWFwU2l6ZTpuLHRhYmxlQWdncmVnYXRlSW5zdGFuY2VzOnN9fShlLGEsdGhpcy5jdXN0b21UYWJsZXMpO2M9bmV3IFJlYWRlcihyLG4scyl9bGV0IGw9dGhpcy5zeW1ib2xzO2x8fCh0aGlzLnN5bWJvbHM9bD17fSk7Y29uc3QgaD1bXTtmb3IoY29uc3QgZSBvZiBhKXtjb25zdCB0PWxbZV07dCYmaC5wdXNoKC4uLnQpfWNvbnN0IHU9bmV3IERlY29kaW5nQ29udGV4dChyLG4scyk7bFt0XT1mdW5jdGlvbiBkZWNvZGVTeW1ib2xEaWN0aW9uYXJ5KGUsdCxhLHIsbixzLG8sYyxsLGgsdSxkKXtpZihlJiZ0KXRocm93IG5ldyBKYmlnMkVycm9yKCJzeW1ib2wgcmVmaW5lbWVudCB3aXRoIEh1ZmZtYW4gaXMgbm90IHN1cHBvcnRlZCIpO2NvbnN0IGY9W107bGV0IGc9MCxwPSgwLGkubG9nMikoYS5sZW5ndGgrcik7Y29uc3QgbT11LmRlY29kZXIsYj11LmNvbnRleHRDYWNoZTtsZXQgeSx3O2lmKGUpe3k9Z2V0U3RhbmRhcmRUYWJsZSgxKTt3PVtdO3A9TWF0aC5tYXgocCwxKX1mb3IoO2YubGVuZ3RoPHI7KXtnKz1lP3MudGFibGVEZWx0YUhlaWdodC5kZWNvZGUoZCk6ZGVjb2RlSW50ZWdlcihiLCJJQURIIixtKTtsZXQgcj0wLGk9MDtjb25zdCBuPWU/dy5sZW5ndGg6MDtmb3IoOzspe2NvbnN0IG49ZT9zLnRhYmxlRGVsdGFXaWR0aC5kZWNvZGUoZCk6ZGVjb2RlSW50ZWdlcihiLCJJQURXIixtKTtpZihudWxsPT09bilicmVhaztyKz1uO2krPXI7bGV0IHk7aWYodCl7Y29uc3QgaT1kZWNvZGVJbnRlZ2VyKGIsIklBQUkiLG0pO2lmKGk+MSl5PWRlY29kZVRleHRSZWdpb24oZSx0LHIsZywwLGksMSxhLmNvbmNhdChmKSxwLDAsMCwxLDAscyxsLGgsdSwwLGQpO2Vsc2V7Y29uc3QgZT1kZWNvZGVJQUlEKGIsbSxwKSx0PWRlY29kZUludGVnZXIoYiwiSUFSRFgiLG0pLGk9ZGVjb2RlSW50ZWdlcihiLCJJQVJEWSIsbSk7eT1kZWNvZGVSZWZpbmVtZW50KHIsZyxsLGU8YS5sZW5ndGg/YVtlXTpmW2UtYS5sZW5ndGhdLHQsaSwhMSxoLHUpfWYucHVzaCh5KX1lbHNlIGlmKGUpdy5wdXNoKHIpO2Vsc2V7eT1kZWNvZGVCaXRtYXAoITEscixnLG8sITEsbnVsbCxjLHUpO2YucHVzaCh5KX19aWYoZSYmIXQpe2NvbnN0IGU9cy50YWJsZUJpdG1hcFNpemUuZGVjb2RlKGQpO2QuYnl0ZUFsaWduKCk7bGV0IHQ7aWYoMD09PWUpdD1yZWFkVW5jb21wcmVzc2VkQml0bWFwKGQsaSxnKTtlbHNle2NvbnN0IGE9ZC5lbmQscj1kLnBvc2l0aW9uK2U7ZC5lbmQ9cjt0PWRlY29kZU1NUkJpdG1hcChkLGksZywhMSk7ZC5lbmQ9YTtkLnBvc2l0aW9uPXJ9Y29uc3QgYT13Lmxlbmd0aDtpZihuPT09YS0xKWYucHVzaCh0KTtlbHNle2xldCBlLHIsaSxzLG8sYz0wO2ZvcihlPW47ZTxhO2UrKyl7cz13W2VdO2k9YytzO289W107Zm9yKHI9MDtyPGc7cisrKW8ucHVzaCh0W3JdLnN1YmFycmF5KGMsaSkpO2YucHVzaChvKTtjPWl9fX19Y29uc3QgUz1bXSx4PVtdO2xldCBDLGssdj0hMTtjb25zdCBGPWEubGVuZ3RoK3I7Zm9yKDt4Lmxlbmd0aDxGOyl7bGV0IHQ9ZT95LmRlY29kZShkKTpkZWNvZGVJbnRlZ2VyKGIsIklBRVgiLG0pO2Zvcig7dC0tOyl4LnB1c2godik7dj0hdn1mb3IoQz0wLGs9YS5sZW5ndGg7QzxrO0MrKyl4W0NdJiZTLnB1c2goYVtDXSk7Zm9yKGxldCBlPTA7ZTxyO0MrKyxlKyspeFtDXSYmUy5wdXNoKGZbZV0pO3JldHVybiBTfShlLmh1ZmZtYW4sZS5yZWZpbmVtZW50LGgsZS5udW1iZXJPZk5ld1N5bWJvbHMsZS5udW1iZXJPZkV4cG9ydGVkU3ltYm9scyxvLGUudGVtcGxhdGUsZS5hdCxlLnJlZmluZW1lbnRUZW1wbGF0ZSxlLnJlZmluZW1lbnRBdCx1LGMpfW9uSW1tZWRpYXRlVGV4dFJlZ2lvbihlLHQsYSxyLG4pe2NvbnN0IHM9ZS5pbmZvO2xldCBvLGM7Y29uc3QgbD10aGlzLnN5bWJvbHMsaD1bXTtmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PWxbZV07dCYmaC5wdXNoKC4uLnQpfWNvbnN0IHU9KDAsaS5sb2cyKShoLmxlbmd0aCk7aWYoZS5odWZmbWFuKXtjPW5ldyBSZWFkZXIoYSxyLG4pO289ZnVuY3Rpb24gZ2V0VGV4dFJlZ2lvbkh1ZmZtYW5UYWJsZXMoZSx0LGEscixpKXtjb25zdCBuPVtdO2ZvcihsZXQgZT0wO2U8PTM0O2UrKyl7Y29uc3QgdD1pLnJlYWRCaXRzKDQpO24ucHVzaChuZXcgSHVmZm1hbkxpbmUoW2UsdCwwLDBdKSl9Y29uc3Qgcz1uZXcgSHVmZm1hblRhYmxlKG4sITEpO24ubGVuZ3RoPTA7Zm9yKGxldCBlPTA7ZTxyOyl7Y29uc3QgdD1zLmRlY29kZShpKTtpZih0Pj0zMil7bGV0IGEscixzO3N3aXRjaCh0KXtjYXNlIDMyOmlmKDA9PT1lKXRocm93IG5ldyBKYmlnMkVycm9yKCJubyBwcmV2aW91cyB2YWx1ZSBpbiBzeW1ib2wgSUQgdGFibGUiKTtyPWkucmVhZEJpdHMoMikrMzthPW5bZS0xXS5wcmVmaXhMZW5ndGg7YnJlYWs7Y2FzZSAzMzpyPWkucmVhZEJpdHMoMykrMzthPTA7YnJlYWs7Y2FzZSAzNDpyPWkucmVhZEJpdHMoNykrMTE7YT0wO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgY29kZSBsZW5ndGggaW4gc3ltYm9sIElEIHRhYmxlIil9Zm9yKHM9MDtzPHI7cysrKXtuLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtlLGEsMCwwXSkpO2UrK319ZWxzZXtuLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtlLHQsMCwwXSkpO2UrK319aS5ieXRlQWxpZ24oKTtjb25zdCBvPW5ldyBIdWZmbWFuVGFibGUobiwhMSk7bGV0IGMsbCxoLHU9MDtzd2l0Y2goZS5odWZmbWFuRlMpe2Nhc2UgMDpjYXNlIDE6Yz1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkZTKzYpO2JyZWFrO2Nhc2UgMzpjPWdldEN1c3RvbUh1ZmZtYW5UYWJsZSh1LHQsYSk7dSsrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBGUyBzZWxlY3RvciIpfXN3aXRjaChlLmh1ZmZtYW5EUyl7Y2FzZSAwOmNhc2UgMTpjYXNlIDI6bD1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkRTKzgpO2JyZWFrO2Nhc2UgMzpsPWdldEN1c3RvbUh1ZmZtYW5UYWJsZSh1LHQsYSk7dSsrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBEUyBzZWxlY3RvciIpfXN3aXRjaChlLmh1ZmZtYW5EVCl7Y2FzZSAwOmNhc2UgMTpjYXNlIDI6aD1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkRUKzExKTticmVhaztjYXNlIDM6aD1nZXRDdXN0b21IdWZmbWFuVGFibGUodSx0LGEpO3UrKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFQgc2VsZWN0b3IiKX1pZihlLnJlZmluZW1lbnQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInJlZmluZW1lbnQgd2l0aCBIdWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm57c3ltYm9sSURUYWJsZTpvLHRhYmxlRmlyc3RTOmMsdGFibGVEZWx0YVM6bCx0YWJsZURlbHRhVDpofX0oZSx0LHRoaXMuY3VzdG9tVGFibGVzLGgubGVuZ3RoLGMpfWNvbnN0IGQ9bmV3IERlY29kaW5nQ29udGV4dChhLHIsbiksZj1kZWNvZGVUZXh0UmVnaW9uKGUuaHVmZm1hbixlLnJlZmluZW1lbnQscy53aWR0aCxzLmhlaWdodCxlLmRlZmF1bHRQaXhlbFZhbHVlLGUubnVtYmVyT2ZTeW1ib2xJbnN0YW5jZXMsZS5zdHJpcFNpemUsaCx1LGUudHJhbnNwb3NlZCxlLmRzT2Zmc2V0LGUucmVmZXJlbmNlQ29ybmVyLGUuY29tYmluYXRpb25PcGVyYXRvcixvLGUucmVmaW5lbWVudFRlbXBsYXRlLGUucmVmaW5lbWVudEF0LGQsZS5sb2dTdHJpcFNpemUsYyk7dGhpcy5kcmF3Qml0bWFwKHMsZil9b25JbW1lZGlhdGVMb3NzbGVzc1RleHRSZWdpb24oKXt0aGlzLm9uSW1tZWRpYXRlVGV4dFJlZ2lvbiguLi5hcmd1bWVudHMpfW9uUGF0dGVybkRpY3Rpb25hcnkoZSx0LGEscixpKXtsZXQgbj10aGlzLnBhdHRlcm5zO258fCh0aGlzLnBhdHRlcm5zPW49e30pO2NvbnN0IHM9bmV3IERlY29kaW5nQ29udGV4dChhLHIsaSk7blt0XT1mdW5jdGlvbiBkZWNvZGVQYXR0ZXJuRGljdGlvbmFyeShlLHQsYSxyLGksbil7Y29uc3Qgcz1bXTtpZighZSl7cy5wdXNoKHt4Oi10LHk6MH0pOzA9PT1pJiZzLnB1c2goe3g6LTMseTotMX0se3g6Mix5Oi0yfSx7eDotMix5Oi0yfSl9Y29uc3Qgbz1kZWNvZGVCaXRtYXAoZSwocisxKSp0LGEsaSwhMSxudWxsLHMsbiksYz1bXTtmb3IobGV0IGU9MDtlPD1yO2UrKyl7Y29uc3Qgcj1bXSxpPXQqZSxuPWkrdDtmb3IobGV0IGU9MDtlPGE7ZSsrKXIucHVzaChvW2VdLnN1YmFycmF5KGksbikpO2MucHVzaChyKX1yZXR1cm4gY30oZS5tbXIsZS5wYXR0ZXJuV2lkdGgsZS5wYXR0ZXJuSGVpZ2h0LGUubWF4UGF0dGVybkluZGV4LGUudGVtcGxhdGUscyl9b25JbW1lZGlhdGVIYWxmdG9uZVJlZ2lvbihlLHQsYSxyLG4pe2NvbnN0IHM9dGhpcy5wYXR0ZXJuc1t0WzBdXSxvPWUuaW5mbyxjPW5ldyBEZWNvZGluZ0NvbnRleHQoYSxyLG4pLGw9ZnVuY3Rpb24gZGVjb2RlSGFsZnRvbmVSZWdpb24oZSx0LGEscixuLHMsbyxjLGwsaCx1LGQsZixnLHApe2lmKG8pdGhyb3cgbmV3IEpiaWcyRXJyb3IoInNraXAgaXMgbm90IHN1cHBvcnRlZCIpO2lmKDAhPT1jKXRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAiJHtjfSIgaXMgbm90IHN1cHBvcnRlZCBpbiBoYWxmdG9uZSByZWdpb25gKTtjb25zdCBtPVtdO2xldCBiLHksdztmb3IoYj0wO2I8bjtiKyspe3c9bmV3IFVpbnQ4QXJyYXkocik7aWYocylmb3IoeT0wO3k8cjt5Kyspd1t5XT1zO20ucHVzaCh3KX1jb25zdCBTPXQubGVuZ3RoLHg9dFswXSxDPXhbMF0ubGVuZ3RoLGs9eC5sZW5ndGgsdj0oMCxpLmxvZzIpKFMpLEY9W107aWYoIWUpe0YucHVzaCh7eDphPD0xPzM6Mix5Oi0xfSk7MD09PWEmJkYucHVzaCh7eDotMyx5Oi0xfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTJ9KX1jb25zdCBPPVtdO2xldCBULE0sRSxELE4sUixMLF8sJCxqLFU7ZSYmKFQ9bmV3IFJlYWRlcihwLmRhdGEscC5zdGFydCxwLmVuZCkpO2ZvcihiPXYtMTtiPj0wO2ItLSl7TT1lP2RlY29kZU1NUkJpdG1hcChULGwsaCwhMCk6ZGVjb2RlQml0bWFwKCExLGwsaCxhLCExLG51bGwsRixwKTtPW2JdPU19Zm9yKEU9MDtFPGg7RSsrKWZvcihEPTA7RDxsO0QrKyl7Tj0wO1I9MDtmb3IoeT12LTE7eT49MDt5LS0pe05ePU9beV1bRV1bRF07Unw9Tjw8eX1MPXRbUl07Xz11K0UqZytEKmY+Pjg7JD1kK0UqZi1EKmc+Pjg7aWYoXz49MCYmXytDPD1yJiYkPj0wJiYkK2s8PW4pZm9yKGI9MDtiPGs7YisrKXtVPW1bJCtiXTtqPUxbYl07Zm9yKHk9MDt5PEM7eSsrKVVbXyt5XXw9alt5XX1lbHNle2xldCBlLHQ7Zm9yKGI9MDtiPGs7YisrKXt0PSQrYjtpZighKHQ8MHx8dD49bikpe1U9bVt0XTtqPUxbYl07Zm9yKHk9MDt5PEM7eSsrKXtlPV8reTtlPj0wJiZlPHImJihVW2VdfD1qW3ldKX19fX19cmV0dXJuIG19KGUubW1yLHMsZS50ZW1wbGF0ZSxvLndpZHRoLG8uaGVpZ2h0LGUuZGVmYXVsdFBpeGVsVmFsdWUsZS5lbmFibGVTa2lwLGUuY29tYmluYXRpb25PcGVyYXRvcixlLmdyaWRXaWR0aCxlLmdyaWRIZWlnaHQsZS5ncmlkT2Zmc2V0WCxlLmdyaWRPZmZzZXRZLGUuZ3JpZFZlY3RvclgsZS5ncmlkVmVjdG9yWSxjKTt0aGlzLmRyYXdCaXRtYXAobyxsKX1vbkltbWVkaWF0ZUxvc3NsZXNzSGFsZnRvbmVSZWdpb24oKXt0aGlzLm9uSW1tZWRpYXRlSGFsZnRvbmVSZWdpb24oLi4uYXJndW1lbnRzKX1vblRhYmxlcyhlLHQsYSxyKXtsZXQgbj10aGlzLmN1c3RvbVRhYmxlcztufHwodGhpcy5jdXN0b21UYWJsZXM9bj17fSk7bltlXT1mdW5jdGlvbiBkZWNvZGVUYWJsZXNTZWdtZW50KGUsdCxhKXtjb25zdCByPWVbdF0sbj00Mjk0OTY3Mjk1JigwLGkucmVhZFVpbnQzMikoZSx0KzEpLHM9NDI5NDk2NzI5NSYoMCxpLnJlYWRVaW50MzIpKGUsdCs1KSxvPW5ldyBSZWFkZXIoZSx0KzksYSksYz0xKyhyPj4xJjcpLGw9MSsocj4+NCY3KSxoPVtdO2xldCB1LGQsZj1uO2Rve3U9by5yZWFkQml0cyhjKTtkPW8ucmVhZEJpdHMobCk7aC5wdXNoKG5ldyBIdWZmbWFuTGluZShbZix1LGQsMF0pKTtmKz0xPDxkfXdoaWxlKGY8cyk7dT1vLnJlYWRCaXRzKGMpO2gucHVzaChuZXcgSHVmZm1hbkxpbmUoW24tMSx1LDMyLDAsImxvd2VyIl0pKTt1PW8ucmVhZEJpdHMoYyk7aC5wdXNoKG5ldyBIdWZmbWFuTGluZShbcyx1LDMyLDBdKSk7aWYoMSZyKXt1PW8ucmVhZEJpdHMoYyk7aC5wdXNoKG5ldyBIdWZmbWFuTGluZShbdSwwXSkpfXJldHVybiBuZXcgSHVmZm1hblRhYmxlKGgsITEpfSh0LGEscil9fWNsYXNzIEh1ZmZtYW5MaW5le2NvbnN0cnVjdG9yKGUpe2lmKDI9PT1lLmxlbmd0aCl7dGhpcy5pc09PQj0hMDt0aGlzLnJhbmdlTG93PTA7dGhpcy5wcmVmaXhMZW5ndGg9ZVswXTt0aGlzLnJhbmdlTGVuZ3RoPTA7dGhpcy5wcmVmaXhDb2RlPWVbMV07dGhpcy5pc0xvd2VyUmFuZ2U9ITF9ZWxzZXt0aGlzLmlzT09CPSExO3RoaXMucmFuZ2VMb3c9ZVswXTt0aGlzLnByZWZpeExlbmd0aD1lWzFdO3RoaXMucmFuZ2VMZW5ndGg9ZVsyXTt0aGlzLnByZWZpeENvZGU9ZVszXTt0aGlzLmlzTG93ZXJSYW5nZT0ibG93ZXIiPT09ZVs0XX19fWNsYXNzIEh1ZmZtYW5UcmVlTm9kZXtjb25zdHJ1Y3RvcihlKXt0aGlzLmNoaWxkcmVuPVtdO2lmKGUpe3RoaXMuaXNMZWFmPSEwO3RoaXMucmFuZ2VMZW5ndGg9ZS5yYW5nZUxlbmd0aDt0aGlzLnJhbmdlTG93PWUucmFuZ2VMb3c7dGhpcy5pc0xvd2VyUmFuZ2U9ZS5pc0xvd2VyUmFuZ2U7dGhpcy5pc09PQj1lLmlzT09CfWVsc2UgdGhpcy5pc0xlYWY9ITF9YnVpbGRUcmVlKGUsdCl7Y29uc3QgYT1lLnByZWZpeENvZGU+PnQmMTtpZih0PD0wKXRoaXMuY2hpbGRyZW5bYV09bmV3IEh1ZmZtYW5UcmVlTm9kZShlKTtlbHNle2xldCByPXRoaXMuY2hpbGRyZW5bYV07cnx8KHRoaXMuY2hpbGRyZW5bYV09cj1uZXcgSHVmZm1hblRyZWVOb2RlKG51bGwpKTtyLmJ1aWxkVHJlZShlLHQtMSl9fWRlY29kZU5vZGUoZSl7aWYodGhpcy5pc0xlYWYpe2lmKHRoaXMuaXNPT0IpcmV0dXJuIG51bGw7Y29uc3QgdD1lLnJlYWRCaXRzKHRoaXMucmFuZ2VMZW5ndGgpO3JldHVybiB0aGlzLnJhbmdlTG93Kyh0aGlzLmlzTG93ZXJSYW5nZT8tdDp0KX1jb25zdCB0PXRoaXMuY2hpbGRyZW5bZS5yZWFkQml0KCldO2lmKCF0KXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gZGF0YSIpO3JldHVybiB0LmRlY29kZU5vZGUoZSl9fWNsYXNzIEh1ZmZtYW5UYWJsZXtjb25zdHJ1Y3RvcihlLHQpe3R8fHRoaXMuYXNzaWduUHJlZml4Q29kZXMoZSk7dGhpcy5yb290Tm9kZT1uZXcgSHVmZm1hblRyZWVOb2RlKG51bGwpO2ZvcihsZXQgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrKyl7Y29uc3QgYT1lW3RdO2EucHJlZml4TGVuZ3RoPjAmJnRoaXMucm9vdE5vZGUuYnVpbGRUcmVlKGEsYS5wcmVmaXhMZW5ndGgtMSl9fWRlY29kZShlKXtyZXR1cm4gdGhpcy5yb290Tm9kZS5kZWNvZGVOb2RlKGUpfWFzc2lnblByZWZpeENvZGVzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGE9MDtmb3IobGV0IHI9MDtyPHQ7cisrKWE9TWF0aC5tYXgoYSxlW3JdLnByZWZpeExlbmd0aCk7Y29uc3Qgcj1uZXcgVWludDMyQXJyYXkoYSsxKTtmb3IobGV0IGE9MDthPHQ7YSsrKXJbZVthXS5wcmVmaXhMZW5ndGhdKys7bGV0IGksbixzLG89MSxjPTA7clswXT0wO2Zvcig7bzw9YTspe2M9YytyW28tMV08PDE7aT1jO249MDtmb3IoO248dDspe3M9ZVtuXTtpZihzLnByZWZpeExlbmd0aD09PW8pe3MucHJlZml4Q29kZT1pO2krK31uKyt9bysrfX19Y29uc3QgcD17fTtmdW5jdGlvbiBnZXRTdGFuZGFyZFRhYmxlKGUpe2xldCB0LGE9cFtlXTtpZihhKXJldHVybiBhO3N3aXRjaChlKXtjYXNlIDE6dD1bWzAsMSw0LDBdLFsxNiwyLDgsMl0sWzI3MiwzLDE2LDZdLFs2NTgwOCwzLDMyLDddXTticmVhaztjYXNlIDI6dD1bWzAsMSwwLDBdLFsxLDIsMCwyXSxbMiwzLDAsNl0sWzMsNCwzLDE0XSxbMTEsNSw2LDMwXSxbNzUsNiwzMiw2Ml0sWzYsNjNdXTticmVhaztjYXNlIDM6dD1bWy0yNTYsOCw4LDI1NF0sWzAsMSwwLDBdLFsxLDIsMCwyXSxbMiwzLDAsNl0sWzMsNCwzLDE0XSxbMTEsNSw2LDMwXSxbLTI1Nyw4LDMyLDI1NSwibG93ZXIiXSxbNzUsNywzMiwxMjZdLFs2LDYyXV07YnJlYWs7Y2FzZSA0OnQ9W1sxLDEsMCwwXSxbMiwyLDAsMl0sWzMsMywwLDZdLFs0LDQsMywxNF0sWzEyLDUsNiwzMF0sWzc2LDUsMzIsMzFdXTticmVhaztjYXNlIDU6dD1bWy0yNTUsNyw4LDEyNl0sWzEsMSwwLDBdLFsyLDIsMCwyXSxbMywzLDAsNl0sWzQsNCwzLDE0XSxbMTIsNSw2LDMwXSxbLTI1Niw3LDMyLDEyNywibG93ZXIiXSxbNzYsNiwzMiw2Ml1dO2JyZWFrO2Nhc2UgNjp0PVtbLTIwNDgsNSwxMCwyOF0sWy0xMDI0LDQsOSw4XSxbLTUxMiw0LDgsOV0sWy0yNTYsNCw3LDEwXSxbLTEyOCw1LDYsMjldLFstNjQsNSw1LDMwXSxbLTMyLDQsNSwxMV0sWzAsMiw3LDBdLFsxMjgsMyw3LDJdLFsyNTYsMyw4LDNdLFs1MTIsNCw5LDEyXSxbMTAyNCw0LDEwLDEzXSxbLTIwNDksNiwzMiw2MiwibG93ZXIiXSxbMjA0OCw2LDMyLDYzXV07YnJlYWs7Y2FzZSA3OnQ9W1stMTAyNCw0LDksOF0sWy01MTIsMyw4LDBdLFstMjU2LDQsNyw5XSxbLTEyOCw1LDYsMjZdLFstNjQsNSw1LDI3XSxbLTMyLDQsNSwxMF0sWzAsNCw1LDExXSxbMzIsNSw1LDI4XSxbNjQsNSw2LDI5XSxbMTI4LDQsNywxMl0sWzI1NiwzLDgsMV0sWzUxMiwzLDksMl0sWzEwMjQsMywxMCwzXSxbLTEwMjUsNSwzMiwzMCwibG93ZXIiXSxbMjA0OCw1LDMyLDMxXV07YnJlYWs7Y2FzZSA4OnQ9W1stMTUsOCwzLDI1Ml0sWy03LDksMSw1MDhdLFstNSw4LDEsMjUzXSxbLTMsOSwwLDUwOV0sWy0yLDcsMCwxMjRdLFstMSw0LDAsMTBdLFswLDIsMSwwXSxbMiw1LDAsMjZdLFszLDYsMCw1OF0sWzQsMyw0LDRdLFsyMCw2LDEsNTldLFsyMiw0LDQsMTFdLFszOCw0LDUsMTJdLFs3MCw1LDYsMjddLFsxMzQsNSw3LDI4XSxbMjYyLDYsNyw2MF0sWzM5MCw3LDgsMTI1XSxbNjQ2LDYsMTAsNjFdLFstMTYsOSwzMiw1MTAsImxvd2VyIl0sWzE2NzAsOSwzMiw1MTFdLFsyLDFdXTticmVhaztjYXNlIDk6dD1bWy0zMSw4LDQsMjUyXSxbLTE1LDksMiw1MDhdLFstMTEsOCwyLDI1M10sWy03LDksMSw1MDldLFstNSw3LDEsMTI0XSxbLTMsNCwxLDEwXSxbLTEsMywxLDJdLFsxLDMsMSwzXSxbMyw1LDEsMjZdLFs1LDYsMSw1OF0sWzcsMyw1LDRdLFszOSw2LDIsNTldLFs0Myw0LDUsMTFdLFs3NSw0LDYsMTJdLFsxMzksNSw3LDI3XSxbMjY3LDUsOCwyOF0sWzUyMyw2LDgsNjBdLFs3NzksNyw5LDEyNV0sWzEyOTEsNiwxMSw2MV0sWy0zMiw5LDMyLDUxMCwibG93ZXIiXSxbMzMzOSw5LDMyLDUxMV0sWzIsMF1dO2JyZWFrO2Nhc2UgMTA6dD1bWy0yMSw3LDQsMTIyXSxbLTUsOCwwLDI1Ml0sWy00LDcsMCwxMjNdLFstMyw1LDAsMjRdLFstMiwyLDIsMF0sWzIsNSwwLDI1XSxbMyw2LDAsNTRdLFs0LDcsMCwxMjRdLFs1LDgsMCwyNTNdLFs2LDIsNiwxXSxbNzAsNSw1LDI2XSxbMTAyLDYsNSw1NV0sWzEzNCw2LDYsNTZdLFsxOTgsNiw3LDU3XSxbMzI2LDYsOCw1OF0sWzU4Miw2LDksNTldLFsxMDk0LDYsMTAsNjBdLFsyMTE4LDcsMTEsMTI1XSxbLTIyLDgsMzIsMjU0LCJsb3dlciJdLFs0MTY2LDgsMzIsMjU1XSxbMiwyXV07YnJlYWs7Y2FzZSAxMTp0PVtbMSwxLDAsMF0sWzIsMiwxLDJdLFs0LDQsMCwxMl0sWzUsNCwxLDEzXSxbNyw1LDEsMjhdLFs5LDUsMiwyOV0sWzEzLDYsMiw2MF0sWzE3LDcsMiwxMjJdLFsyMSw3LDMsMTIzXSxbMjksNyw0LDEyNF0sWzQ1LDcsNSwxMjVdLFs3Nyw3LDYsMTI2XSxbMTQxLDcsMzIsMTI3XV07YnJlYWs7Y2FzZSAxMjp0PVtbMSwxLDAsMF0sWzIsMiwwLDJdLFszLDMsMSw2XSxbNSw1LDAsMjhdLFs2LDUsMSwyOV0sWzgsNiwxLDYwXSxbMTAsNywwLDEyMl0sWzExLDcsMSwxMjNdLFsxMyw3LDIsMTI0XSxbMTcsNywzLDEyNV0sWzI1LDcsNCwxMjZdLFs0MSw4LDUsMjU0XSxbNzMsOCwzMiwyNTVdXTticmVhaztjYXNlIDEzOnQ9W1sxLDEsMCwwXSxbMiwzLDAsNF0sWzMsNCwwLDEyXSxbNCw1LDAsMjhdLFs1LDQsMSwxM10sWzcsMywzLDVdLFsxNSw2LDEsNThdLFsxNyw2LDIsNTldLFsyMSw2LDMsNjBdLFsyOSw2LDQsNjFdLFs0NSw2LDUsNjJdLFs3Nyw3LDYsMTI2XSxbMTQxLDcsMzIsMTI3XV07YnJlYWs7Y2FzZSAxNDp0PVtbLTIsMywwLDRdLFstMSwzLDAsNV0sWzAsMSwwLDBdLFsxLDMsMCw2XSxbMiwzLDAsN11dO2JyZWFrO2Nhc2UgMTU6dD1bWy0yNCw3LDQsMTI0XSxbLTgsNiwyLDYwXSxbLTQsNSwxLDI4XSxbLTIsNCwwLDEyXSxbLTEsMywwLDRdLFswLDEsMCwwXSxbMSwzLDAsNV0sWzIsNCwwLDEzXSxbMyw1LDEsMjldLFs1LDYsMiw2MV0sWzksNyw0LDEyNV0sWy0yNSw3LDMyLDEyNiwibG93ZXIiXSxbMjUsNywzMiwxMjddXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBzdGFuZGFyZCB0YWJsZSBCLiR7ZX0gZG9lcyBub3QgZXhpc3RgKX1mb3IobGV0IGU9MCxhPXQubGVuZ3RoO2U8YTtlKyspdFtlXT1uZXcgSHVmZm1hbkxpbmUodFtlXSk7YT1uZXcgSHVmZm1hblRhYmxlKHQsITApO3BbZV09YTtyZXR1cm4gYX1jbGFzcyBSZWFkZXJ7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuZGF0YT1lO3RoaXMuc3RhcnQ9dDt0aGlzLmVuZD1hO3RoaXMucG9zaXRpb249dDt0aGlzLnNoaWZ0PS0xO3RoaXMuY3VycmVudEJ5dGU9MH1yZWFkQml0KCl7aWYodGhpcy5zaGlmdDwwKXtpZih0aGlzLnBvc2l0aW9uPj10aGlzLmVuZCl0aHJvdyBuZXcgSmJpZzJFcnJvcigiZW5kIG9mIGRhdGEgd2hpbGUgcmVhZGluZyBiaXQiKTt0aGlzLmN1cnJlbnRCeXRlPXRoaXMuZGF0YVt0aGlzLnBvc2l0aW9uKytdO3RoaXMuc2hpZnQ9N31jb25zdCBlPXRoaXMuY3VycmVudEJ5dGU+PnRoaXMuc2hpZnQmMTt0aGlzLnNoaWZ0LS07cmV0dXJuIGV9cmVhZEJpdHMoZSl7bGV0IHQsYT0wO2Zvcih0PWUtMTt0Pj0wO3QtLSlhfD10aGlzLnJlYWRCaXQoKTw8dDtyZXR1cm4gYX1ieXRlQWxpZ24oKXt0aGlzLnNoaWZ0PS0xfW5leHQoKXtyZXR1cm4gdGhpcy5wb3NpdGlvbj49dGhpcy5lbmQ/LTE6dGhpcy5kYXRhW3RoaXMucG9zaXRpb24rK119fWZ1bmN0aW9uIGdldEN1c3RvbUh1ZmZtYW5UYWJsZShlLHQsYSl7bGV0IHI9MDtmb3IobGV0IGk9MCxuPXQubGVuZ3RoO2k8bjtpKyspe2NvbnN0IG49YVt0W2ldXTtpZihuKXtpZihlPT09cilyZXR1cm4gbjtyKyt9fXRocm93IG5ldyBKYmlnMkVycm9yKCJjYW4ndCBmaW5kIGN1c3RvbSBIdWZmbWFuIHRhYmxlIil9ZnVuY3Rpb24gcmVhZFVuY29tcHJlc3NlZEJpdG1hcChlLHQsYSl7Y29uc3Qgcj1bXTtmb3IobGV0IGk9MDtpPGE7aSsrKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KHQpO3IucHVzaChhKTtmb3IobGV0IHI9MDtyPHQ7cisrKWFbcl09ZS5yZWFkQml0KCk7ZS5ieXRlQWxpZ24oKX1yZXR1cm4gcn1mdW5jdGlvbiBkZWNvZGVNTVJCaXRtYXAoZSx0LGEscil7Y29uc3QgaT17SzotMSxDb2x1bW5zOnQsUm93czphLEJsYWNrSXMxOiEwLEVuZE9mQmxvY2s6cn0sbj1uZXcgcy5DQ0lUVEZheERlY29kZXIoZSxpKSxvPVtdO2xldCBjLGw9ITE7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7Y29uc3QgZT1uZXcgVWludDhBcnJheSh0KTtvLnB1c2goZSk7bGV0IGE9LTE7Zm9yKGxldCByPTA7cjx0O3IrKyl7aWYoYTwwKXtjPW4ucmVhZE5leHRDaGFyKCk7aWYoLTE9PT1jKXtjPTA7bD0hMH1hPTd9ZVtyXT1jPj5hJjE7YS0tfX1pZihyJiYhbCl7Y29uc3QgZT01O2ZvcihsZXQgdD0wO3Q8ZSYmLTEhPT1uLnJlYWROZXh0Q2hhcigpO3QrKyk7fXJldHVybiBvfXQuSmJpZzJJbWFnZT1jbGFzcyBKYmlnMkltYWdle3BhcnNlQ2h1bmtzKGUpe3JldHVybiBmdW5jdGlvbiBwYXJzZUpiaWcyQ2h1bmtzKGUpe2NvbnN0IHQ9bmV3IFNpbXBsZVNlZ21lbnRWaXNpdG9yO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj1lW2FdO3Byb2Nlc3NTZWdtZW50cyhyZWFkU2VnbWVudHMoe30sci5kYXRhLHIuc3RhcnQsci5lbmQpLHQpfXJldHVybiB0LmJ1ZmZlcn0oZSl9cGFyc2UoZSl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQ6IEpiaWcySW1hZ2UucGFyc2UiKX19fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkFyaXRobWV0aWNEZWNvZGVyPXZvaWQgMDtjb25zdCBhPVt7cWU6MjIwMTcsbm1wczoxLG5scHM6MSxzd2l0Y2hGbGFnOjF9LHtxZToxMzMxMyxubXBzOjIsbmxwczo2LHN3aXRjaEZsYWc6MH0se3FlOjYxNDUsbm1wczozLG5scHM6OSxzd2l0Y2hGbGFnOjB9LHtxZToyNzUzLG5tcHM6NCxubHBzOjEyLHN3aXRjaEZsYWc6MH0se3FlOjEzMTMsbm1wczo1LG5scHM6Mjksc3dpdGNoRmxhZzowfSx7cWU6NTQ1LG5tcHM6MzgsbmxwczozMyxzd2l0Y2hGbGFnOjB9LHtxZToyMjAxNyxubXBzOjcsbmxwczo2LHN3aXRjaEZsYWc6MX0se3FlOjIxNTA1LG5tcHM6OCxubHBzOjE0LHN3aXRjaEZsYWc6MH0se3FlOjE4NDMzLG5tcHM6OSxubHBzOjE0LHN3aXRjaEZsYWc6MH0se3FlOjE0MzM3LG5tcHM6MTAsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxMjI4OSxubXBzOjExLG5scHM6MTcsc3dpdGNoRmxhZzowfSx7cWU6OTIxNyxubXBzOjEyLG5scHM6MTgsc3dpdGNoRmxhZzowfSx7cWU6NzE2OSxubXBzOjEzLG5scHM6MjAsc3dpdGNoRmxhZzowfSx7cWU6NTYzMyxubXBzOjI5LG5scHM6MjEsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczoxNSxubHBzOjE0LHN3aXRjaEZsYWc6MX0se3FlOjIxNTA1LG5tcHM6MTYsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToyMDczNyxubXBzOjE3LG5scHM6MTUsc3dpdGNoRmxhZzowfSx7cWU6MTg0MzMsbm1wczoxOCxubHBzOjE2LHN3aXRjaEZsYWc6MH0se3FlOjE0MzM3LG5tcHM6MTksbmxwczoxNyxzd2l0Y2hGbGFnOjB9LHtxZToxMzMxMyxubXBzOjIwLG5scHM6MTgsc3dpdGNoRmxhZzowfSx7cWU6MTIyODksbm1wczoyMSxubHBzOjE5LHN3aXRjaEZsYWc6MH0se3FlOjEwMjQxLG5tcHM6MjIsbmxwczoxOSxzd2l0Y2hGbGFnOjB9LHtxZTo5MjE3LG5tcHM6MjMsbmxwczoyMCxzd2l0Y2hGbGFnOjB9LHtxZTo4NzA1LG5tcHM6MjQsbmxwczoyMSxzd2l0Y2hGbGFnOjB9LHtxZTo3MTY5LG5tcHM6MjUsbmxwczoyMixzd2l0Y2hGbGFnOjB9LHtxZTo2MTQ1LG5tcHM6MjYsbmxwczoyMyxzd2l0Y2hGbGFnOjB9LHtxZTo1NjMzLG5tcHM6MjcsbmxwczoyNCxzd2l0Y2hGbGFnOjB9LHtxZTo1MTIxLG5tcHM6MjgsbmxwczoyNSxzd2l0Y2hGbGFnOjB9LHtxZTo0NjA5LG5tcHM6MjksbmxwczoyNixzd2l0Y2hGbGFnOjB9LHtxZTo0MzUzLG5tcHM6MzAsbmxwczoyNyxzd2l0Y2hGbGFnOjB9LHtxZToyNzUzLG5tcHM6MzEsbmxwczoyOCxzd2l0Y2hGbGFnOjB9LHtxZToyNDk3LG5tcHM6MzIsbmxwczoyOSxzd2l0Y2hGbGFnOjB9LHtxZToyMjA5LG5tcHM6MzMsbmxwczozMCxzd2l0Y2hGbGFnOjB9LHtxZToxMzEzLG5tcHM6MzQsbmxwczozMSxzd2l0Y2hGbGFnOjB9LHtxZToxMDg5LG5tcHM6MzUsbmxwczozMixzd2l0Y2hGbGFnOjB9LHtxZTo2NzMsbm1wczozNixubHBzOjMzLHN3aXRjaEZsYWc6MH0se3FlOjU0NSxubXBzOjM3LG5scHM6MzQsc3dpdGNoRmxhZzowfSx7cWU6MzIxLG5tcHM6MzgsbmxwczozNSxzd2l0Y2hGbGFnOjB9LHtxZToyNzMsbm1wczozOSxubHBzOjM2LHN3aXRjaEZsYWc6MH0se3FlOjEzMyxubXBzOjQwLG5scHM6Mzcsc3dpdGNoRmxhZzowfSx7cWU6NzMsbm1wczo0MSxubHBzOjM4LHN3aXRjaEZsYWc6MH0se3FlOjM3LG5tcHM6NDIsbmxwczozOSxzd2l0Y2hGbGFnOjB9LHtxZToyMSxubXBzOjQzLG5scHM6NDAsc3dpdGNoRmxhZzowfSx7cWU6OSxubXBzOjQ0LG5scHM6NDEsc3dpdGNoRmxhZzowfSx7cWU6NSxubXBzOjQ1LG5scHM6NDIsc3dpdGNoRmxhZzowfSx7cWU6MSxubXBzOjQ1LG5scHM6NDMsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczo0NixubHBzOjQ2LHN3aXRjaEZsYWc6MH1dO3QuQXJpdGhtZXRpY0RlY29kZXI9Y2xhc3MgQXJpdGhtZXRpY0RlY29kZXJ7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuZGF0YT1lO3RoaXMuYnA9dDt0aGlzLmRhdGFFbmQ9YTt0aGlzLmNoaWdoPWVbdF07dGhpcy5jbG93PTA7dGhpcy5ieXRlSW4oKTt0aGlzLmNoaWdoPXRoaXMuY2hpZ2g8PDcmNjU1MzV8dGhpcy5jbG93Pj45JjEyNzt0aGlzLmNsb3c9dGhpcy5jbG93PDw3JjY1NTM1O3RoaXMuY3QtPTc7dGhpcy5hPTMyNzY4fWJ5dGVJbigpe2NvbnN0IGU9dGhpcy5kYXRhO2xldCB0PXRoaXMuYnA7aWYoMjU1PT09ZVt0XSlpZihlW3QrMV0+MTQzKXt0aGlzLmNsb3crPTY1MjgwO3RoaXMuY3Q9OH1lbHNle3QrKzt0aGlzLmNsb3crPWVbdF08PDk7dGhpcy5jdD03O3RoaXMuYnA9dH1lbHNle3QrKzt0aGlzLmNsb3crPXQ8dGhpcy5kYXRhRW5kP2VbdF08PDg6NjUyODA7dGhpcy5jdD04O3RoaXMuYnA9dH1pZih0aGlzLmNsb3c+NjU1MzUpe3RoaXMuY2hpZ2grPXRoaXMuY2xvdz4+MTY7dGhpcy5jbG93Jj02NTUzNX19cmVhZEJpdChlLHQpe2xldCByPWVbdF0+PjEsaT0xJmVbdF07Y29uc3Qgbj1hW3JdLHM9bi5xZTtsZXQgbyxjPXRoaXMuYS1zO2lmKHRoaXMuY2hpZ2g8cylpZihjPHMpe2M9cztvPWk7cj1uLm5tcHN9ZWxzZXtjPXM7bz0xXmk7MT09PW4uc3dpdGNoRmxhZyYmKGk9byk7cj1uLm5scHN9ZWxzZXt0aGlzLmNoaWdoLT1zO2lmKDAhPSgzMjc2OCZjKSl7dGhpcy5hPWM7cmV0dXJuIGl9aWYoYzxzKXtvPTFeaTsxPT09bi5zd2l0Y2hGbGFnJiYoaT1vKTtyPW4ubmxwc31lbHNle289aTtyPW4ubm1wc319ZG97MD09PXRoaXMuY3QmJnRoaXMuYnl0ZUluKCk7Yzw8PTE7dGhpcy5jaGlnaD10aGlzLmNoaWdoPDwxJjY1NTM1fHRoaXMuY2xvdz4+MTUmMTt0aGlzLmNsb3c9dGhpcy5jbG93PDwxJjY1NTM1O3RoaXMuY3QtLX13aGlsZSgwPT0oMzI3NjgmYykpO3RoaXMuYT1jO2VbdF09cjw8MXxpO3JldHVybiBvfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5KcGVnU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDE4KSxpPWEoNCksbj1hKDI3KSxzPWEoMik7Y2xhc3MgSnBlZ1N0cmVhbSBleHRlbmRzIHIuRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxhKXtsZXQgcjtmb3IoOy0xIT09KHI9ZS5nZXRCeXRlKCkpOylpZigyNTU9PT1yKXtlLnNraXAoLTEpO2JyZWFrfXN1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9YX1nZXQgYnl0ZXMoKXtyZXR1cm4oMCxzLnNoYWRvdykodGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe2lmKHRoaXMuZW9mKXJldHVybjtjb25zdCBlPXtkZWNvZGVUcmFuc2Zvcm06dm9pZCAwLGNvbG9yVHJhbnNmb3JtOnZvaWQgMH0sdD10aGlzLmRpY3QuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTtpZigodGhpcy5mb3JjZVJHQkF8fHRoaXMuZm9yY2VSR0IpJiZBcnJheS5pc0FycmF5KHQpKXtjb25zdCBhPXRoaXMuZGljdC5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKXx8OCxyPXQubGVuZ3RoLGk9bmV3IEludDMyQXJyYXkocik7bGV0IG49ITE7Y29uc3Qgcz0oMTw8YSktMTtmb3IobGV0IGU9MDtlPHI7ZSs9Mil7aVtlXT0yNTYqKHRbZSsxXS10W2VdKXwwO2lbZSsxXT10W2VdKnN8MDsyNTY9PT1pW2VdJiYwPT09aVtlKzFdfHwobj0hMCl9biYmKGUuZGVjb2RlVHJhbnNmb3JtPWkpfWlmKHRoaXMucGFyYW1zIGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCB0PXRoaXMucGFyYW1zLmdldCgiQ29sb3JUcmFuc2Zvcm0iKTtOdW1iZXIuaXNJbnRlZ2VyKHQpJiYoZS5jb2xvclRyYW5zZm9ybT10KX1jb25zdCBhPW5ldyBuLkpwZWdJbWFnZShlKTthLnBhcnNlKHRoaXMuYnl0ZXMpO2NvbnN0IHI9YS5nZXREYXRhKHt3aWR0aDp0aGlzLmRyYXdXaWR0aCxoZWlnaHQ6dGhpcy5kcmF3SGVpZ2h0LGZvcmNlUkdCQTp0aGlzLmZvcmNlUkdCQSxmb3JjZVJHQjp0aGlzLmZvcmNlUkdCLGlzU291cmNlUERGOiEwfSk7dGhpcy5idWZmZXI9cjt0aGlzLmJ1ZmZlckxlbmd0aD1yLmxlbmd0aDt0aGlzLmVvZj0hMH19dC5KcGVnU3RyZWFtPUpwZWdTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5KcGVnSW1hZ2U9dm9pZCAwO3ZhciByPWEoMiksaT1hKDI4KSxuPWEoMyk7Y2xhc3MgSnBlZ0Vycm9yIGV4dGVuZHMgci5CYXNlRXhjZXB0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGBKUEVHIGVycm9yOiAke2V9YCwiSnBlZ0Vycm9yIil9fWNsYXNzIEROTE1hcmtlckVycm9yIGV4dGVuZHMgci5CYXNlRXhjZXB0aW9ue2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiRE5MTWFya2VyRXJyb3IiKTt0aGlzLnNjYW5MaW5lcz10fX1jbGFzcyBFT0lNYXJrZXJFcnJvciBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJFT0lNYXJrZXJFcnJvciIpfX1jb25zdCBzPW5ldyBVaW50OEFycmF5KFswLDEsOCwxNiw5LDIsMywxMCwxNywyNCwzMiwyNSwxOCwxMSw0LDUsMTIsMTksMjYsMzMsNDAsNDgsNDEsMzQsMjcsMjAsMTMsNiw3LDE0LDIxLDI4LDM1LDQyLDQ5LDU2LDU3LDUwLDQzLDM2LDI5LDIyLDE1LDIzLDMwLDM3LDQ0LDUxLDU4LDU5LDUyLDQ1LDM4LDMxLDM5LDQ2LDUzLDYwLDYxLDU0LDQ3LDU1LDYyLDYzXSksbz00MDE3LGM9Nzk5LGw9MzQwNixoPTIyNzYsdT0xNTY3LGQ9Mzc4NCxmPTU3OTMsZz0yODk2O2Z1bmN0aW9uIGJ1aWxkSHVmZm1hblRhYmxlKGUsdCl7bGV0IGEscixpPTAsbj0xNjtmb3IoO24+MCYmIWVbbi0xXTspbi0tO2NvbnN0IHM9W3tjaGlsZHJlbjpbXSxpbmRleDowfV07bGV0IG8sYz1zWzBdO2ZvcihhPTA7YTxuO2ErKyl7Zm9yKHI9MDtyPGVbYV07cisrKXtjPXMucG9wKCk7Yy5jaGlsZHJlbltjLmluZGV4XT10W2ldO2Zvcig7Yy5pbmRleD4wOyljPXMucG9wKCk7Yy5pbmRleCsrO3MucHVzaChjKTtmb3IoO3MubGVuZ3RoPD1hOyl7cy5wdXNoKG89e2NoaWxkcmVuOltdLGluZGV4OjB9KTtjLmNoaWxkcmVuW2MuaW5kZXhdPW8uY2hpbGRyZW47Yz1vfWkrK31pZihhKzE8bil7cy5wdXNoKG89e2NoaWxkcmVuOltdLGluZGV4OjB9KTtjLmNoaWxkcmVuW2MuaW5kZXhdPW8uY2hpbGRyZW47Yz1vfX1yZXR1cm4gc1swXS5jaGlsZHJlbn1mdW5jdGlvbiBnZXRCbG9ja0J1ZmZlck9mZnNldChlLHQsYSl7cmV0dXJuIDY0KigoZS5ibG9ja3NQZXJMaW5lKzEpKnQrYSl9ZnVuY3Rpb24gZGVjb2RlU2NhbihlLHQsYSxpLG8sYyxsLGgsdSxkPSExKXtjb25zdCBmPWEubWN1c1BlckxpbmUsZz1hLnByb2dyZXNzaXZlLHA9dDtsZXQgbT0wLGI9MDtmdW5jdGlvbiByZWFkQml0KCl7aWYoYj4wKXtiLS07cmV0dXJuIG0+PmImMX1tPWVbdCsrXTtpZigyNTU9PT1tKXtjb25zdCByPWVbdCsrXTtpZihyKXtpZigyMjA9PT1yJiZkKXt0Kz0yO2NvbnN0IHI9KDAsbi5yZWFkVWludDE2KShlLHQpO3QrPTI7aWYocj4wJiZyIT09YS5zY2FuTGluZXMpdGhyb3cgbmV3IEROTE1hcmtlckVycm9yKCJGb3VuZCBETkwgbWFya2VyICgweEZGREMpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhIixyKX1lbHNlIGlmKDIxNz09PXIpe2lmKGQpe2NvbnN0IGU9eCooOD09PWEucHJlY2lzaW9uPzg6MCk7aWYoZT4wJiZNYXRoLnJvdW5kKGEuc2NhbkxpbmVzL2UpPj01KXRocm93IG5ldyBETkxNYXJrZXJFcnJvcigiRm91bmQgRU9JIG1hcmtlciAoMHhGRkQ5KSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSwgcG9zc2libHkgY2F1c2VkIGJ5IGluY29ycmVjdCBgc2NhbkxpbmVzYCBwYXJhbWV0ZXIiLGUpfXRocm93IG5ldyBFT0lNYXJrZXJFcnJvcigiRm91bmQgRU9JIG1hcmtlciAoMHhGRkQ5KSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSIpfXRocm93IG5ldyBKcGVnRXJyb3IoYHVuZXhwZWN0ZWQgbWFya2VyICR7KG08PDh8cikudG9TdHJpbmcoMTYpfWApfX1iPTc7cmV0dXJuIG0+Pj43fWZ1bmN0aW9uIGRlY29kZUh1ZmZtYW4oZSl7bGV0IHQ9ZTtmb3IoOzspe3Q9dFtyZWFkQml0KCldO3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJudW1iZXIiOnJldHVybiB0O2Nhc2Uib2JqZWN0Ijpjb250aW51ZX10aHJvdyBuZXcgSnBlZ0Vycm9yKCJpbnZhbGlkIGh1ZmZtYW4gc2VxdWVuY2UiKX19ZnVuY3Rpb24gcmVjZWl2ZShlKXtsZXQgdD0wO2Zvcig7ZT4wOyl7dD10PDwxfHJlYWRCaXQoKTtlLS19cmV0dXJuIHR9ZnVuY3Rpb24gcmVjZWl2ZUFuZEV4dGVuZChlKXtpZigxPT09ZSlyZXR1cm4gMT09PXJlYWRCaXQoKT8xOi0xO2NvbnN0IHQ9cmVjZWl2ZShlKTtyZXR1cm4gdD49MTw8ZS0xP3Q6dCsoLTE8PGUpKzF9bGV0IHk9MDtsZXQgdyxTPTA7bGV0IHg9MDtmdW5jdGlvbiBkZWNvZGVNY3UoZSx0LGEscixpKXtjb25zdCBuPWElZjt4PShhL2Z8MCkqZS52K3I7Y29uc3Qgcz1uKmUuaCtpO3QoZSxnZXRCbG9ja0J1ZmZlck9mZnNldChlLHgscykpfWZ1bmN0aW9uIGRlY29kZUJsb2NrKGUsdCxhKXt4PWEvZS5ibG9ja3NQZXJMaW5lfDA7Y29uc3Qgcj1hJWUuYmxvY2tzUGVyTGluZTt0KGUsZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSx4LHIpKX1jb25zdCBDPWkubGVuZ3RoO2xldCBrLHYsRixPLFQsTTtNPWc/MD09PWM/MD09PWg/ZnVuY3Rpb24gZGVjb2RlRENGaXJzdChlLHQpe2NvbnN0IGE9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZURDKSxyPTA9PT1hPzA6cmVjZWl2ZUFuZEV4dGVuZChhKTw8dTtlLmJsb2NrRGF0YVt0XT1lLnByZWQrPXJ9OmZ1bmN0aW9uIGRlY29kZURDU3VjY2Vzc2l2ZShlLHQpe2UuYmxvY2tEYXRhW3RdfD1yZWFkQml0KCk8PHV9OjA9PT1oP2Z1bmN0aW9uIGRlY29kZUFDRmlyc3QoZSx0KXtpZih5PjApe3ktLTtyZXR1cm59bGV0IGE9Yztjb25zdCByPWw7Zm9yKDthPD1yOyl7Y29uc3Qgcj1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlQUMpLGk9MTUmcixuPXI+PjQ7aWYoMD09PWkpe2lmKG48MTUpe3k9cmVjZWl2ZShuKSsoMTw8biktMTticmVha31hKz0xNjtjb250aW51ZX1hKz1uO2NvbnN0IG89c1thXTtlLmJsb2NrRGF0YVt0K29dPXJlY2VpdmVBbmRFeHRlbmQoaSkqKDE8PHUpO2ErK319OmZ1bmN0aW9uIGRlY29kZUFDU3VjY2Vzc2l2ZShlLHQpe2xldCBhPWM7Y29uc3Qgcj1sO2xldCBpLG4sbz0wO2Zvcig7YTw9cjspe2NvbnN0IHI9dCtzW2FdLGM9ZS5ibG9ja0RhdGFbcl08MD8tMToxO3N3aXRjaChTKXtjYXNlIDA6bj1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlQUMpO2k9MTUmbjtvPW4+PjQ7aWYoMD09PWkpaWYobzwxNSl7eT1yZWNlaXZlKG8pKygxPDxvKTtTPTR9ZWxzZXtvPTE2O1M9MX1lbHNle2lmKDEhPT1pKXRocm93IG5ldyBKcGVnRXJyb3IoImludmFsaWQgQUNuIGVuY29kaW5nIik7dz1yZWNlaXZlQW5kRXh0ZW5kKGkpO1M9bz8yOjN9Y29udGludWU7Y2FzZSAxOmNhc2UgMjppZihlLmJsb2NrRGF0YVtyXSllLmJsb2NrRGF0YVtyXSs9YyoocmVhZEJpdCgpPDx1KTtlbHNle28tLTswPT09byYmKFM9Mj09PVM/MzowKX1icmVhaztjYXNlIDM6aWYoZS5ibG9ja0RhdGFbcl0pZS5ibG9ja0RhdGFbcl0rPWMqKHJlYWRCaXQoKTw8dSk7ZWxzZXtlLmJsb2NrRGF0YVtyXT13PDx1O1M9MH1icmVhaztjYXNlIDQ6ZS5ibG9ja0RhdGFbcl0mJihlLmJsb2NrRGF0YVtyXSs9YyoocmVhZEJpdCgpPDx1KSl9YSsrfWlmKDQ9PT1TKXt5LS07MD09PXkmJihTPTApfX06ZnVuY3Rpb24gZGVjb2RlQmFzZWxpbmUoZSx0KXtjb25zdCBhPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVEQykscj0wPT09YT8wOnJlY2VpdmVBbmRFeHRlbmQoYSk7ZS5ibG9ja0RhdGFbdF09ZS5wcmVkKz1yO2xldCBpPTE7Zm9yKDtpPDY0Oyl7Y29uc3QgYT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlQUMpLHI9MTUmYSxuPWE+PjQ7aWYoMD09PXIpe2lmKG48MTUpYnJlYWs7aSs9MTY7Y29udGludWV9aSs9bjtjb25zdCBvPXNbaV07ZS5ibG9ja0RhdGFbdCtvXT1yZWNlaXZlQW5kRXh0ZW5kKHIpO2krK319O2xldCBFLEQsTixSLEw9MDtEPTE9PT1DP2lbMF0uYmxvY2tzUGVyTGluZSppWzBdLmJsb2Nrc1BlckNvbHVtbjpmKmEubWN1c1BlckNvbHVtbjtmb3IoO0w8PUQ7KXtjb25zdCBhPW8/TWF0aC5taW4oRC1MLG8pOkQ7aWYoYT4wKXtmb3Iodj0wO3Y8Qzt2KyspaVt2XS5wcmVkPTA7eT0wO2lmKDE9PT1DKXtrPWlbMF07Zm9yKFQ9MDtUPGE7VCsrKXtkZWNvZGVCbG9jayhrLE0sTCk7TCsrfX1lbHNlIGZvcihUPTA7VDxhO1QrKyl7Zm9yKHY9MDt2PEM7disrKXtrPWlbdl07Tj1rLmg7Uj1rLnY7Zm9yKEY9MDtGPFI7RisrKWZvcihPPTA7TzxOO08rKylkZWNvZGVNY3UoayxNLEwsRixPKX1MKyt9fWI9MDtFPWZpbmROZXh0RmlsZU1hcmtlcihlLHQpO2lmKCFFKWJyZWFrO2lmKEUuaW52YWxpZCl7Y29uc3QgZT1hPjA/InVuZXhwZWN0ZWQiOiJleGNlc3NpdmUiOygwLHIud2FybikoYGRlY29kZVNjYW4gLSAke2V9IE1DVSBkYXRhLCBjdXJyZW50IG1hcmtlciBpczogJHtFLmludmFsaWR9YCk7dD1FLm9mZnNldH1pZighKEUubWFya2VyPj02NTQ4OCYmRS5tYXJrZXI8PTY1NDk1KSlicmVhazt0Kz0yfXJldHVybiB0LXB9ZnVuY3Rpb24gcXVhbnRpemVBbmRJbnZlcnNlKGUsdCxhKXtjb25zdCByPWUucXVhbnRpemF0aW9uVGFibGUsaT1lLmJsb2NrRGF0YTtsZXQgbixzLHAsbSxiLHksdyxTLHgsQyxrLHYsRixPLFQsTSxFO2lmKCFyKXRocm93IG5ldyBKcGVnRXJyb3IoIm1pc3NpbmcgcmVxdWlyZWQgUXVhbnRpemF0aW9uIFRhYmxlLiIpO2ZvcihsZXQgZT0wO2U8NjQ7ZSs9OCl7eD1pW3QrZV07Qz1pW3QrZSsxXTtrPWlbdCtlKzJdO3Y9aVt0K2UrM107Rj1pW3QrZSs0XTtPPWlbdCtlKzVdO1Q9aVt0K2UrNl07TT1pW3QrZSs3XTt4Kj1yW2VdO2lmKDAhPShDfGt8dnxGfE98VHxNKSl7Qyo9cltlKzFdO2sqPXJbZSsyXTt2Kj1yW2UrM107Rio9cltlKzRdO08qPXJbZSs1XTtUKj1yW2UrNl07TSo9cltlKzddO249Zip4KzEyOD4+ODtzPWYqRisxMjg+Pjg7cD1rO209VDtiPWcqKEMtTSkrMTI4Pj44O1M9ZyooQytNKSsxMjg+Pjg7eT12PDw0O3c9Tzw8NDtuPW4rcysxPj4xO3M9bi1zO0U9cCpkK20qdSsxMjg+Pjg7cD1wKnUtbSpkKzEyOD4+ODttPUU7Yj1iK3crMT4+MTt3PWItdztTPVMreSsxPj4xO3k9Uy15O249bittKzE+PjE7bT1uLW07cz1zK3ArMT4+MTtwPXMtcDtFPWIqaCtTKmwrMjA0OD4+MTI7Yj1iKmwtUypoKzIwNDg+PjEyO1M9RTtFPXkqYyt3Km8rMjA0OD4+MTI7eT15Km8tdypjKzIwNDg+PjEyO3c9RTthW2VdPW4rUzthW2UrN109bi1TO2FbZSsxXT1zK3c7YVtlKzZdPXMtdzthW2UrMl09cCt5O2FbZSs1XT1wLXk7YVtlKzNdPW0rYjthW2UrNF09bS1ifWVsc2V7RT1mKngrNTEyPj4xMDthW2VdPUU7YVtlKzFdPUU7YVtlKzJdPUU7YVtlKzNdPUU7YVtlKzRdPUU7YVtlKzVdPUU7YVtlKzZdPUU7YVtlKzddPUV9fWZvcihsZXQgZT0wO2U8ODsrK2Upe3g9YVtlXTtDPWFbZSs4XTtrPWFbZSsxNl07dj1hW2UrMjRdO0Y9YVtlKzMyXTtPPWFbZSs0MF07VD1hW2UrNDhdO009YVtlKzU2XTtpZigwIT0oQ3xrfHZ8RnxPfFR8TSkpe249Zip4KzIwNDg+PjEyO3M9ZipGKzIwNDg+PjEyO3A9azttPVQ7Yj1nKihDLU0pKzIwNDg+PjEyO1M9ZyooQytNKSsyMDQ4Pj4xMjt5PXY7dz1PO249NDExMisobitzKzE+PjEpO3M9bi1zO0U9cCpkK20qdSsyMDQ4Pj4xMjtwPXAqdS1tKmQrMjA0OD4+MTI7bT1FO2I9Yit3KzE+PjE7dz1iLXc7Uz1TK3krMT4+MTt5PVMteTtuPW4rbSsxPj4xO209bi1tO3M9cytwKzE+PjE7cD1zLXA7RT1iKmgrUypsKzIwNDg+PjEyO2I9YipsLVMqaCsyMDQ4Pj4xMjtTPUU7RT15KmMrdypvKzIwNDg+PjEyO3k9eSpvLXcqYysyMDQ4Pj4xMjt3PUU7eD1uK1M7TT1uLVM7Qz1zK3c7VD1zLXc7az1wK3k7Tz1wLXk7dj1tK2I7Rj1tLWI7eDwxNj94PTA6eD49NDA4MD94PTI1NTp4Pj49NDtDPDE2P0M9MDpDPj00MDgwP0M9MjU1OkM+Pj00O2s8MTY/az0wOms+PTQwODA/az0yNTU6az4+PTQ7djwxNj92PTA6dj49NDA4MD92PTI1NTp2Pj49NDtGPDE2P0Y9MDpGPj00MDgwP0Y9MjU1OkY+Pj00O088MTY/Tz0wOk8+PTQwODA/Tz0yNTU6Tz4+PTQ7VDwxNj9UPTA6VD49NDA4MD9UPTI1NTpUPj49NDtNPDE2P009MDpNPj00MDgwP009MjU1Ok0+Pj00O2lbdCtlXT14O2lbdCtlKzhdPUM7aVt0K2UrMTZdPWs7aVt0K2UrMjRdPXY7aVt0K2UrMzJdPUY7aVt0K2UrNDBdPU87aVt0K2UrNDhdPVQ7aVt0K2UrNTZdPU19ZWxzZXtFPWYqeCs4MTkyPj4xNDtFPUU8LTIwNDA/MDpFPj0yMDI0PzI1NTpFKzIwNTY+PjQ7aVt0K2VdPUU7aVt0K2UrOF09RTtpW3QrZSsxNl09RTtpW3QrZSsyNF09RTtpW3QrZSszMl09RTtpW3QrZSs0MF09RTtpW3QrZSs0OF09RTtpW3QrZSs1Nl09RX19fWZ1bmN0aW9uIGJ1aWxkQ29tcG9uZW50RGF0YShlLHQpe2NvbnN0IGE9dC5ibG9ja3NQZXJMaW5lLHI9dC5ibG9ja3NQZXJDb2x1bW4saT1uZXcgSW50MTZBcnJheSg2NCk7Zm9yKGxldCBlPTA7ZTxyO2UrKylmb3IobGV0IHI9MDtyPGE7cisrKXtxdWFudGl6ZUFuZEludmVyc2UodCxnZXRCbG9ja0J1ZmZlck9mZnNldCh0LGUsciksaSl9cmV0dXJuIHQuYmxvY2tEYXRhfWZ1bmN0aW9uIGZpbmROZXh0RmlsZU1hcmtlcihlLHQsYT10KXtjb25zdCByPWUubGVuZ3RoLTE7bGV0IGk9YTx0P2E6dDtpZih0Pj1yKXJldHVybiBudWxsO2NvbnN0IHM9KDAsbi5yZWFkVWludDE2KShlLHQpO2lmKHM+PTY1NDcyJiZzPD02NTUzNClyZXR1cm57aW52YWxpZDpudWxsLG1hcmtlcjpzLG9mZnNldDp0fTtsZXQgbz0oMCxuLnJlYWRVaW50MTYpKGUsaSk7Zm9yKDshKG8+PTY1NDcyJiZvPD02NTUzNCk7KXtpZigrK2k+PXIpcmV0dXJuIG51bGw7bz0oMCxuLnJlYWRVaW50MTYpKGUsaSl9cmV0dXJue2ludmFsaWQ6cy50b1N0cmluZygxNiksbWFya2VyOm8sb2Zmc2V0Oml9fXQuSnBlZ0ltYWdlPWNsYXNzIEpwZWdJbWFnZXtjb25zdHJ1Y3Rvcih7ZGVjb2RlVHJhbnNmb3JtOmU9bnVsbCxjb2xvclRyYW5zZm9ybTp0PS0xfT17fSl7dGhpcy5fZGVjb2RlVHJhbnNmb3JtPWU7dGhpcy5fY29sb3JUcmFuc2Zvcm09dH1wYXJzZShlLHtkbmxTY2FuTGluZXM6dD1udWxsfT17fSl7ZnVuY3Rpb24gcmVhZERhdGFCbG9jaygpe2NvbnN0IHQ9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7bGV0IGE9byt0LTI7Y29uc3QgaT1maW5kTmV4dEZpbGVNYXJrZXIoZSxhLG8pO2lmKGk/LmludmFsaWQpeygwLHIud2FybikoInJlYWREYXRhQmxvY2sgLSBpbmNvcnJlY3QgbGVuZ3RoLCBjdXJyZW50IG1hcmtlciBpczogIitpLmludmFsaWQpO2E9aS5vZmZzZXR9Y29uc3Qgcz1lLnN1YmFycmF5KG8sYSk7bys9cy5sZW5ndGg7cmV0dXJuIHN9ZnVuY3Rpb24gcHJlcGFyZUNvbXBvbmVudHMoZSl7Y29uc3QgdD1NYXRoLmNlaWwoZS5zYW1wbGVzUGVyTGluZS84L2UubWF4SCksYT1NYXRoLmNlaWwoZS5zY2FuTGluZXMvOC9lLm1heFYpO2Zvcihjb25zdCByIG9mIGUuY29tcG9uZW50cyl7Y29uc3QgaT1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2FtcGxlc1BlckxpbmUvOCkqci5oL2UubWF4SCksbj1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2NhbkxpbmVzLzgpKnIudi9lLm1heFYpLHM9dCpyLmgsbz02NCooYSpyLnYpKihzKzEpO3IuYmxvY2tEYXRhPW5ldyBJbnQxNkFycmF5KG8pO3IuYmxvY2tzUGVyTGluZT1pO3IuYmxvY2tzUGVyQ29sdW1uPW59ZS5tY3VzUGVyTGluZT10O2UubWN1c1BlckNvbHVtbj1hfWxldCBhLGksbz0wLGM9bnVsbCxsPW51bGwsaD0wO2NvbnN0IHU9W10sZD1bXSxmPVtdO2xldCBnPSgwLG4ucmVhZFVpbnQxNikoZSxvKTtvKz0yO2lmKDY1NDk2IT09Zyl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJTT0kgbm90IGZvdW5kIik7Zz0oMCxuLnJlYWRVaW50MTYpKGUsbyk7bys9MjtlOmZvcig7NjU0OTchPT1nOyl7bGV0IHAsbSxiO3N3aXRjaChnKXtjYXNlIDY1NTA0OmNhc2UgNjU1MDU6Y2FzZSA2NTUwNjpjYXNlIDY1NTA3OmNhc2UgNjU1MDg6Y2FzZSA2NTUwOTpjYXNlIDY1NTEwOmNhc2UgNjU1MTE6Y2FzZSA2NTUxMjpjYXNlIDY1NTEzOmNhc2UgNjU1MTQ6Y2FzZSA2NTUxNTpjYXNlIDY1NTE2OmNhc2UgNjU1MTc6Y2FzZSA2NTUxODpjYXNlIDY1NTE5OmNhc2UgNjU1MzQ6Y29uc3QgeT1yZWFkRGF0YUJsb2NrKCk7NjU1MDQ9PT1nJiY3ND09PXlbMF0mJjcwPT09eVsxXSYmNzM9PT15WzJdJiY3MD09PXlbM10mJjA9PT15WzRdJiYoYz17dmVyc2lvbjp7bWFqb3I6eVs1XSxtaW5vcjp5WzZdfSxkZW5zaXR5VW5pdHM6eVs3XSx4RGVuc2l0eTp5WzhdPDw4fHlbOV0seURlbnNpdHk6eVsxMF08PDh8eVsxMV0sdGh1bWJXaWR0aDp5WzEyXSx0aHVtYkhlaWdodDp5WzEzXSx0aHVtYkRhdGE6eS5zdWJhcnJheSgxNCwxNCszKnlbMTJdKnlbMTNdKX0pOzY1NTE4PT09ZyYmNjU9PT15WzBdJiYxMDA9PT15WzFdJiYxMTE9PT15WzJdJiY5OD09PXlbM10mJjEwMT09PXlbNF0mJihsPXt2ZXJzaW9uOnlbNV08PDh8eVs2XSxmbGFnczA6eVs3XTw8OHx5WzhdLGZsYWdzMTp5WzldPDw4fHlbMTBdLHRyYW5zZm9ybUNvZGU6eVsxMV19KTticmVhaztjYXNlIDY1NDk5OmNvbnN0IHc9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7Y29uc3QgUz13K28tMjtsZXQgeDtmb3IoO288Uzspe2NvbnN0IHQ9ZVtvKytdLGE9bmV3IFVpbnQxNkFycmF5KDY0KTtpZih0Pj40PT0wKWZvcihtPTA7bTw2NDttKyspe3g9c1ttXTthW3hdPWVbbysrXX1lbHNle2lmKHQ+PjQhPTEpdGhyb3cgbmV3IEpwZWdFcnJvcigiRFFUIC0gaW52YWxpZCB0YWJsZSBzcGVjIik7Zm9yKG09MDttPDY0O20rKyl7eD1zW21dO2FbeF09KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTJ9fXVbMTUmdF09YX1icmVhaztjYXNlIDY1NDcyOmNhc2UgNjU0NzM6Y2FzZSA2NTQ3NDppZihhKXRocm93IG5ldyBKcGVnRXJyb3IoIk9ubHkgc2luZ2xlIGZyYW1lIEpQRUdzIHN1cHBvcnRlZCIpO28rPTI7YT17fTthLmV4dGVuZGVkPTY1NDczPT09ZzthLnByb2dyZXNzaXZlPTY1NDc0PT09ZzthLnByZWNpc2lvbj1lW28rK107Y29uc3QgQz0oMCxuLnJlYWRVaW50MTYpKGUsbyk7bys9MjthLnNjYW5MaW5lcz10fHxDO2Euc2FtcGxlc1BlckxpbmU9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7YS5jb21wb25lbnRzPVtdO2EuY29tcG9uZW50SWRzPXt9O2NvbnN0IGs9ZVtvKytdO2xldCB2PTAsRj0wO2ZvcihwPTA7cDxrO3ArKyl7Y29uc3QgdD1lW29dLHI9ZVtvKzFdPj40LGk9MTUmZVtvKzFdO3Y8ciYmKHY9cik7RjxpJiYoRj1pKTtjb25zdCBuPWVbbysyXTtiPWEuY29tcG9uZW50cy5wdXNoKHtoOnIsdjppLHF1YW50aXphdGlvbklkOm4scXVhbnRpemF0aW9uVGFibGU6bnVsbH0pO2EuY29tcG9uZW50SWRzW3RdPWItMTtvKz0zfWEubWF4SD12O2EubWF4Vj1GO3ByZXBhcmVDb21wb25lbnRzKGEpO2JyZWFrO2Nhc2UgNjU0NzY6Y29uc3QgTz0oMCxuLnJlYWRVaW50MTYpKGUsbyk7bys9Mjtmb3IocD0yO3A8Tzspe2NvbnN0IHQ9ZVtvKytdLGE9bmV3IFVpbnQ4QXJyYXkoMTYpO2xldCByPTA7Zm9yKG09MDttPDE2O20rKyxvKyspcis9YVttXT1lW29dO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkocik7Zm9yKG09MDttPHI7bSsrLG8rKylpW21dPWVbb107cCs9MTcrcjsodD4+ND09MD9mOmQpWzE1JnRdPWJ1aWxkSHVmZm1hblRhYmxlKGEsaSl9YnJlYWs7Y2FzZSA2NTUwMTpvKz0yO2k9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7YnJlYWs7Y2FzZSA2NTQ5ODpjb25zdCBUPTE9PSsraCYmIXQ7bys9Mjtjb25zdCBNPWVbbysrXSxFPVtdO2ZvcihwPTA7cDxNO3ArKyl7Y29uc3QgdD1lW28rK10scj1hLmNvbXBvbmVudElkc1t0XSxpPWEuY29tcG9uZW50c1tyXTtpLmluZGV4PXQ7Y29uc3Qgbj1lW28rK107aS5odWZmbWFuVGFibGVEQz1mW24+PjRdO2kuaHVmZm1hblRhYmxlQUM9ZFsxNSZuXTtFLnB1c2goaSl9Y29uc3QgRD1lW28rK10sTj1lW28rK10sUj1lW28rK107dHJ5e2NvbnN0IHQ9ZGVjb2RlU2NhbihlLG8sYSxFLGksRCxOLFI+PjQsMTUmUixUKTtvKz10fWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBETkxNYXJrZXJFcnJvcil7KDAsci53YXJuKShgJHt0Lm1lc3NhZ2V9IC0tIGF0dGVtcHRpbmcgdG8gcmUtcGFyc2UgdGhlIEpQRUcgaW1hZ2UuYCk7cmV0dXJuIHRoaXMucGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQuc2NhbkxpbmVzfSl9aWYodCBpbnN0YW5jZW9mIEVPSU1hcmtlckVycm9yKXsoMCxyLndhcm4pKGAke3QubWVzc2FnZX0gLS0gaWdub3JpbmcgdGhlIHJlc3Qgb2YgdGhlIGltYWdlIGRhdGEuYCk7YnJlYWsgZX10aHJvdyB0fWJyZWFrO2Nhc2UgNjU1MDA6bys9NDticmVhaztjYXNlIDY1NTM1OjI1NSE9PWVbb10mJm8tLTticmVhaztkZWZhdWx0OmNvbnN0IEw9ZmluZE5leHRGaWxlTWFya2VyKGUsby0yLG8tMyk7aWYoTD8uaW52YWxpZCl7KDAsci53YXJuKSgiSnBlZ0ltYWdlLnBhcnNlIC0gdW5leHBlY3RlZCBkYXRhLCBjdXJyZW50IG1hcmtlciBpczogIitMLmludmFsaWQpO289TC5vZmZzZXQ7YnJlYWt9aWYoIUx8fG8+PWUubGVuZ3RoLTEpeygwLHIud2FybikoIkpwZWdJbWFnZS5wYXJzZSAtIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW1hZ2UgZGF0YSB3aXRob3V0IGZpbmRpbmcgYW4gRU9JIG1hcmtlciAoMHhGRkQ5KS4iKTticmVhayBlfXRocm93IG5ldyBKcGVnRXJyb3IoIkpwZWdJbWFnZS5wYXJzZSAtIHVua25vd24gbWFya2VyOiAiK2cudG9TdHJpbmcoMTYpKX1nPSgwLG4ucmVhZFVpbnQxNikoZSxvKTtvKz0yfXRoaXMud2lkdGg9YS5zYW1wbGVzUGVyTGluZTt0aGlzLmhlaWdodD1hLnNjYW5MaW5lczt0aGlzLmpmaWY9Yzt0aGlzLmFkb2JlPWw7dGhpcy5jb21wb25lbnRzPVtdO2Zvcihjb25zdCBlIG9mIGEuY29tcG9uZW50cyl7Y29uc3QgdD11W2UucXVhbnRpemF0aW9uSWRdO3QmJihlLnF1YW50aXphdGlvblRhYmxlPXQpO3RoaXMuY29tcG9uZW50cy5wdXNoKHtpbmRleDplLmluZGV4LG91dHB1dDpidWlsZENvbXBvbmVudERhdGEoMCxlKSxzY2FsZVg6ZS5oL2EubWF4SCxzY2FsZVk6ZS52L2EubWF4VixibG9ja3NQZXJMaW5lOmUuYmxvY2tzUGVyTGluZSxibG9ja3NQZXJDb2x1bW46ZS5ibG9ja3NQZXJDb2x1bW59KX10aGlzLm51bUNvbXBvbmVudHM9dGhpcy5jb21wb25lbnRzLmxlbmd0aH1fZ2V0TGluZWFyaXplZEJsb2NrRGF0YShlLHQsYT0hMSl7Y29uc3Qgcj10aGlzLndpZHRoL2UsaT10aGlzLmhlaWdodC90O2xldCBuLHMsbyxjLGwsaCx1LGQsZixnLHAsbT0wO2NvbnN0IGI9dGhpcy5jb21wb25lbnRzLmxlbmd0aCx5PWUqdCpiLHc9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHkpLFM9bmV3IFVpbnQzMkFycmF5KGUpLHg9NDI5NDk2NzI4ODtsZXQgQztmb3IodT0wO3U8Yjt1Kyspe249dGhpcy5jb21wb25lbnRzW3VdO3M9bi5zY2FsZVgqcjtvPW4uc2NhbGVZKmk7bT11O3A9bi5vdXRwdXQ7Yz1uLmJsb2Nrc1BlckxpbmUrMTw8MztpZihzIT09Qyl7Zm9yKGw9MDtsPGU7bCsrKXtkPTB8bCpzO1NbbF09KGQmeCk8PDN8NyZkfUM9c31mb3IoaD0wO2g8dDtoKyspe2Q9MHxoKm87Zz1jKihkJngpfCg3JmQpPDwzO2ZvcihsPTA7bDxlO2wrKyl7d1ttXT1wW2crU1tsXV07bSs9Yn19fWxldCBrPXRoaXMuX2RlY29kZVRyYW5zZm9ybTthfHw0IT09Ynx8a3x8KGs9bmV3IEludDMyQXJyYXkoWy0yNTYsMjU1LC0yNTYsMjU1LC0yNTYsMjU1LC0yNTYsMjU1XSkpO2lmKGspZm9yKHU9MDt1PHk7KWZvcihkPTAsZj0wO2Q8YjtkKyssdSsrLGYrPTIpd1t1XT0od1t1XSprW2ZdPj44KStrW2YrMV07cmV0dXJuIHd9Z2V0IF9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZCgpe3JldHVybiB0aGlzLmFkb2JlPyEhdGhpcy5hZG9iZS50cmFuc2Zvcm1Db2RlOjM9PT10aGlzLm51bUNvbXBvbmVudHM/MCE9PXRoaXMuX2NvbG9yVHJhbnNmb3JtJiYoODIhPT10aGlzLmNvbXBvbmVudHNbMF0uaW5kZXh8fDcxIT09dGhpcy5jb21wb25lbnRzWzFdLmluZGV4fHw2NiE9PXRoaXMuY29tcG9uZW50c1syXS5pbmRleCk6MT09PXRoaXMuX2NvbG9yVHJhbnNmb3JtfV9jb252ZXJ0WWNjVG9SZ2IoZSl7bGV0IHQsYSxyO2ZvcihsZXQgaT0wLG49ZS5sZW5ndGg7aTxuO2krPTMpe3Q9ZVtpXTthPWVbaSsxXTtyPWVbaSsyXTtlW2ldPXQtMTc5LjQ1NisxLjQwMipyO2VbaSsxXT10KzEzNS40NTktLjM0NCphLS43MTQqcjtlW2krMl09dC0yMjYuODE2KzEuNzcyKmF9cmV0dXJuIGV9X2NvbnZlcnRZY2NUb1JnYmEoZSx0KXtmb3IobGV0IGE9MCxyPTAsaT1lLmxlbmd0aDthPGk7YSs9MyxyKz00KXtjb25zdCBpPWVbYV0sbj1lW2ErMV0scz1lW2ErMl07dFtyXT1pLTE3OS40NTYrMS40MDIqczt0W3IrMV09aSsxMzUuNDU5LS4zNDQqbi0uNzE0KnM7dFtyKzJdPWktMjI2LjgxNisxLjc3MipuO3RbciszXT0yNTV9cmV0dXJuIHR9X2NvbnZlcnRZY2NrVG9SZ2IoZSl7bGV0IHQsYSxyLGksbj0wO2ZvcihsZXQgcz0wLG89ZS5sZW5ndGg7czxvO3MrPTQpe3Q9ZVtzXTthPWVbcysxXTtyPWVbcysyXTtpPWVbcyszXTtlW24rK109YSooLTY2MDYzNTY2OTQyMDM2NGUtMTkqYSsuMDAwNDM3MTMwNDc1OTI2MjMyKnItNTQwODA2MTAwNjQ1OTllLTE4KnQrLjAwMDQ4NDQ5Nzk3MTIwMjgxKmktLjE1NDM2MjE1MTg3MTEyNiktMTIyLjY3MTk1NDA2ODk0K3IqKC0uMDAwOTU3OTY0Mzc4NDQ1NzczKnIrLjAwMDgxNzA3NjkxMTM0NjYyNSp0LS4wMDQ3NzI3MTQwNTQwODc0NyppKzEuNTMzODAyNTMyMjE3MzQpK3QqKC4wMDA5NjEyNTAxODQxMzA2ODgqdC0uMDAyNjYyNTczMzIyODM5MzMqaSsuNDgzNTcwODg0NTEyNjUpK2kqKC0uMDAwMzM2MTk3MTc3NjE4Mzk0KmkrLjQ4NDc5MTU2MTQ5MDc3Nik7ZVtuKytdPTEwNy4yNjgwMzkzOTc3MjQrYSooMjE5OTI3MTA0NTI1NzQxZS0xOSphLS4wMDA2NDA5OTIwMTgyOTc5NDUqcisuMDAwNjU5Mzk3MDAxMjQ1NTc3KnQrLjAwMDQyNjEwNTY1MjkzODgzNyppLS4xNzY0OTE3OTI0NjI4NzUpK3IqKC0uMDAwNzc4MjY5OTQxNTEzNjgzKnIrLjAwMTMwODcyMjYxNDA4Mjc1KnQrLjAwMDc3MDQ4MjYzMTgwMTEzMippLS4xNTEwNTE0OTI3NzU1NjIpK3QqKC4wMDEyNjkzNTM2ODExNDg0Myp0LS4wMDI2NTA5MDE4OTAxMDg5OCppKy4yNTgwMjkxMDIwNjg0NSkraSooLS4wMDAzMTg5MTMxMTc1ODgzMjgqaS0uMjEzNzQyNDAwMzIzNjY1KTtlW24rK109YSooLS4wMDA1NzAxMTUxOTY5NzM2NzcqYS0yNjM0MDkwNTEwMDQ1ODllLTE5KnIrLjAwMjA3NDEwODgxMTUwMTIqdC0uMDAyODgyNjAyMzY4NTM0NDIqaSsuODE0MjcyOTY4MzU5Mjk1KS0yMC44MTAwMTI1NDY5NDcrciooLTE1MzQ5NjA1NzQ0MDk3NWUtMTkqci0uMDAwMTMyNjg5MDQzOTYxNDQ2KnQrLjAwMDU2MDgzMzY5MTI0MjgxMippLS4xOTUxNTIwMjc1MzQwNDkpK3QqKC4wMDE3NDQxODEzMjkyNzU4Mip0LS4wMDI1NTI0MzMyMTQzOTM0NyppKy4xMTY5MzUwMjA0NjUxNDUpK2kqKC0uMDAwMzQzNTMxOTk2NTEwNTU1KmkrLjI0MTY1MjYwMjMyNDA3KX1yZXR1cm4gZS5zdWJhcnJheSgwLG4pfV9jb252ZXJ0WWNja1RvUmdiYShlKXtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0Kz00KXtjb25zdCBhPWVbdF0scj1lW3QrMV0saT1lW3QrMl0sbj1lW3QrM107ZVt0XT1yKigtNjYwNjM1NjY5NDIwMzY0ZS0xOSpyKy4wMDA0MzcxMzA0NzU5MjYyMzIqaS01NDA4MDYxMDA2NDU5OWUtMTgqYSsuMDAwNDg0NDk3OTcxMjAyODEqbi0uMTU0MzYyMTUxODcxMTI2KS0xMjIuNjcxOTU0MDY4OTQraSooLS4wMDA5NTc5NjQzNzg0NDU3NzMqaSsuMDAwODE3MDc2OTExMzQ2NjI1KmEtLjAwNDc3MjcxNDA1NDA4NzQ3Km4rMS41MzM4MDI1MzIyMTczNCkrYSooLjAwMDk2MTI1MDE4NDEzMDY4OCphLS4wMDI2NjI1NzMzMjI4MzkzMypuKy40ODM1NzA4ODQ1MTI2NSkrbiooLS4wMDAzMzYxOTcxNzc2MTgzOTQqbisuNDg0NzkxNTYxNDkwNzc2KTtlW3QrMV09MTA3LjI2ODAzOTM5NzcyNCtyKigyMTk5MjcxMDQ1MjU3NDFlLTE5KnItLjAwMDY0MDk5MjAxODI5Nzk0NSppKy4wMDA2NTkzOTcwMDEyNDU1NzcqYSsuMDAwNDI2MTA1NjUyOTM4ODM3Km4tLjE3NjQ5MTc5MjQ2Mjg3NSkraSooLS4wMDA3NzgyNjk5NDE1MTM2ODMqaSsuMDAxMzA4NzIyNjE0MDgyNzUqYSsuMDAwNzcwNDgyNjMxODAxMTMyKm4tLjE1MTA1MTQ5Mjc3NTU2MikrYSooLjAwMTI2OTM1MzY4MTE0ODQzKmEtLjAwMjY1MDkwMTg5MDEwODk4Km4rLjI1ODAyOTEwMjA2ODQ1KStuKigtLjAwMDMxODkxMzExNzU4ODMyOCpuLS4yMTM3NDI0MDAzMjM2NjUpO2VbdCsyXT1yKigtLjAwMDU3MDExNTE5Njk3MzY3NypyLTI2MzQwOTA1MTAwNDU4OWUtMTkqaSsuMDAyMDc0MTA4ODExNTAxMiphLS4wMDI4ODI2MDIzNjg1MzQ0MipuKy44MTQyNzI5NjgzNTkyOTUpLTIwLjgxMDAxMjU0Njk0NytpKigtMTUzNDk2MDU3NDQwOTc1ZS0xOSppLS4wMDAxMzI2ODkwNDM5NjE0NDYqYSsuMDAwNTYwODMzNjkxMjQyODEyKm4tLjE5NTE1MjAyNzUzNDA0OSkrYSooLjAwMTc0NDE4MTMyOTI3NTgyKmEtLjAwMjU1MjQzMzIxNDM5MzQ3Km4rLjExNjkzNTAyMDQ2NTE0NSkrbiooLS4wMDAzNDM1MzE5OTY1MTA1NTUqbisuMjQxNjUyNjAyMzI0MDcpO2VbdCszXT0yNTV9cmV0dXJuIGV9X2NvbnZlcnRZY2NrVG9DbXlrKGUpe2xldCB0LGEscjtmb3IobGV0IGk9MCxuPWUubGVuZ3RoO2k8bjtpKz00KXt0PWVbaV07YT1lW2krMV07cj1lW2krMl07ZVtpXT00MzQuNDU2LXQtMS40MDIqcjtlW2krMV09MTE5LjU0MS10Ky4zNDQqYSsuNzE0KnI7ZVtpKzJdPTQ4MS44MTYtdC0xLjc3MiphfXJldHVybiBlfV9jb252ZXJ0Q215a1RvUmdiKGUpe2xldCB0LGEscixpLG49MDtmb3IobGV0IHM9MCxvPWUubGVuZ3RoO3M8bztzKz00KXt0PWVbc107YT1lW3MrMV07cj1lW3MrMl07aT1lW3MrM107ZVtuKytdPTI1NSt0KigtNjc0NzE0NzA3MzYwMjQ0MWUtMjAqdCsuMDAwODM3OTI2MjEyMTAxMzcyNyphKy4wMDAyODk0NzE4MTg4NjQzMjk0KnIrLjAwMzI2NDIzMTA1NzUzNzgwNippLTEuMTE4NTYxMTg2NzIwMzkzNykrYSooMjYzNzQxMDc2MTYwODk0MDVlLTIxKmEtODYyNjk0OTE1ODYzODU3MmUtMjAqci0uMDAwMjc0ODc2OTA2NzQ5OTQ5MSppLS4wMjE1NTY4ODc5NDk3ODk2NykrciooLTM4NzgwOTkyMTI4NjkzNjNlLTIwKnItLjAwMDMyNjc4MDgyNzk0ODUyODYqaSsuMDY4Njc0MjIzODU5NTM0NSktaSooLjAwMDMzNjE5NzE3NzYxODM5MzcqaSsuNzQzMDY1OTE1MTM0MjI1NCk7ZVtuKytdPTI1NSt0KiguMDAwMTM1OTYzNzI4MTM1ODg4NDgqdCsuMDAwOTI0NTM3MTMyNTczNTg1KmErLjAwMDEwNTY3MzU5NjE4NjgzNTkzKnIrLjAwMDQ3OTE4NjQ2ODc0MzY1MTIqaS0uMzEwOTY4OTU4NzUxNTg3NSkrYSooLS4wMDAyMzU0NTM0NjEwODM3MDM0NCphKy4wMDAyNzAyODQ1MjUzNTM0NzE0KnIrLjAwMjAyMDAzMDg5NzczMDcxNTYqaS0uNzQ4ODA1MjE2NzAxNTQ5NCkrciooNjgzNDgxNTk5ODIzNTY2MmUtMjAqcisuMDAwMTUxNjg0NTIzNjM0NjA5NzMqaS0uMDk3NTE5Mjc3NzQ3Mjg5MzMpLWkqKC4wMDAzMTg5MTMxMTc1ODgzMjgxKmkrLjczNjQ4ODM4MDc3MzMxNjgpO2VbbisrXT0yNTUrdCooMTM1OTg2NTA0MTEzODUzMDdlLTIxKnQrLjAwMDEyNDIzOTU2MTc1NDkwODUxKmErLjAwMDQ3NTE5ODUwOTc1ODM1ODkqci0zNjcyOTMxNzQ3NjYzMDQyMmUtMjIqaS0uMDU1NjIxODY5ODAyNjQwMzQpK2EqKC4wMDAxNjE0MTM4MDU5ODcyNDY3NiphKy4wMDA5NjkyMjM5MTMwNzI1MTg2KnIrLjAwMDc3ODI2OTI0NTAwMzYyNTMqaS0uNDQwMTUyMzIzNjc1MjY0NjMpK3IqKDUuMDY4ODgyOTE0MDY4NzY5ZS03KnIrLjAwMTc3NzgzNjkwMTEzNzUwNzEqaS0uNzU5MTQ1NDY0OTc0OTYwOSktaSooLjAwMDM0MzUzMTk5NjUxMDU1NTMqaSsuNzA2Mzc3MDE4NjE2MDE0NCl9cmV0dXJuIGUuc3ViYXJyYXkoMCxuKX1fY29udmVydENteWtUb1JnYmEoZSl7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCs9NCl7Y29uc3QgYT1lW3RdLHI9ZVt0KzFdLGk9ZVt0KzJdLG49ZVt0KzNdO2VbdF09MjU1K2EqKC02NzQ3MTQ3MDczNjAyNDQxZS0yMCphKy4wMDA4Mzc5MjYyMTIxMDEzNzI3KnIrLjAwMDI4OTQ3MTgxODg2NDMyOTQqaSsuMDAzMjY0MjMxMDU3NTM3ODA2Km4tMS4xMTg1NjExODY3MjAzOTM3KStyKigyNjM3NDEwNzYxNjA4OTQwNWUtMjEqci04NjI2OTQ5MTU4NjM4NTcyZS0yMCppLS4wMDAyNzQ4NzY5MDY3NDk5NDkxKm4tLjAyMTU1Njg4Nzk0OTc4OTY3KStpKigtMzg3ODA5OTIxMjg2OTM2M2UtMjAqaS0uMDAwMzI2NzgwODI3OTQ4NTI4NipuKy4wNjg2NzQyMjM4NTk1MzQ1KS1uKiguMDAwMzM2MTk3MTc3NjE4MzkzNypuKy43NDMwNjU5MTUxMzQyMjU0KTtlW3QrMV09MjU1K2EqKC4wMDAxMzU5NjM3MjgxMzU4ODg0OCphKy4wMDA5MjQ1MzcxMzI1NzM1ODUqcisuMDAwMTA1NjczNTk2MTg2ODM1OTMqaSsuMDAwNDc5MTg2NDY4NzQzNjUxMipuLS4zMTA5Njg5NTg3NTE1ODc1KStyKigtLjAwMDIzNTQ1MzQ2MTA4MzcwMzQ0KnIrLjAwMDI3MDI4NDUyNTM1MzQ3MTQqaSsuMDAyMDIwMDMwODk3NzMwNzE1NipuLS43NDg4MDUyMTY3MDE1NDk0KStpKig2ODM0ODE1OTk4MjM1NjYyZS0yMCppKy4wMDAxNTE2ODQ1MjM2MzQ2MDk3MypuLS4wOTc1MTkyNzc3NDcyODkzMyktbiooLjAwMDMxODkxMzExNzU4ODMyODEqbisuNzM2NDg4MzgwNzczMzE2OCk7ZVt0KzJdPTI1NSthKigxMzU5ODY1MDQxMTM4NTMwN2UtMjEqYSsuMDAwMTI0MjM5NTYxNzU0OTA4NTEqcisuMDAwNDc1MTk4NTA5NzU4MzU4OSppLTM2NzI5MzE3NDc2NjMwNDIyZS0yMipuLS4wNTU2MjE4Njk4MDI2NDAzNCkrciooLjAwMDE2MTQxMzgwNTk4NzI0Njc2KnIrLjAwMDk2OTIyMzkxMzA3MjUxODYqaSsuMDAwNzc4MjY5MjQ1MDAzNjI1MypuLS40NDAxNTIzMjM2NzUyNjQ2MykraSooNS4wNjg4ODI5MTQwNjg3NjllLTcqaSsuMDAxNzc3ODM2OTAxMTM3NTA3MSpuLS43NTkxNDU0NjQ5NzQ5NjA5KS1uKiguMDAwMzQzNTMxOTk2NTEwNTU1MypuKy43MDYzNzcwMTg2MTYwMTQ0KTtlW3QrM109MjU1fXJldHVybiBlfWdldERhdGEoe3dpZHRoOmUsaGVpZ2h0OnQsZm9yY2VSR0JBOmE9ITEsZm9yY2VSR0I6cj0hMSxpc1NvdXJjZVBERjpuPSExfSl7aWYodGhpcy5udW1Db21wb25lbnRzPjQpdGhyb3cgbmV3IEpwZWdFcnJvcigiVW5zdXBwb3J0ZWQgY29sb3IgbW9kZSIpO2NvbnN0IHM9dGhpcy5fZ2V0TGluZWFyaXplZEJsb2NrRGF0YShlLHQsbik7aWYoMT09PXRoaXMubnVtQ29tcG9uZW50cyYmKGF8fHIpKXtjb25zdCBlPXMubGVuZ3RoKihhPzQ6MyksdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoZSk7bGV0IHI9MDtpZihhKSgwLGkuZ3JheVRvUkdCQSkocyxuZXcgVWludDMyQXJyYXkodC5idWZmZXIpKTtlbHNlIGZvcihjb25zdCBlIG9mIHMpe3RbcisrXT1lO3RbcisrXT1lO3RbcisrXT1lfXJldHVybiB0fWlmKDM9PT10aGlzLm51bUNvbXBvbmVudHMmJnRoaXMuX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKXtpZihhKXtjb25zdCBlPW5ldyBVaW50OENsYW1wZWRBcnJheShzLmxlbmd0aC8zKjQpO3JldHVybiB0aGlzLl9jb252ZXJ0WWNjVG9SZ2JhKHMsZSl9cmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NUb1JnYihzKX1pZig0PT09dGhpcy5udW1Db21wb25lbnRzKXtpZih0aGlzLl9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZClyZXR1cm4gYT90aGlzLl9jb252ZXJ0WWNja1RvUmdiYShzKTpyP3RoaXMuX2NvbnZlcnRZY2NrVG9SZ2Iocyk6dGhpcy5fY29udmVydFljY2tUb0NteWsocyk7aWYoYSlyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYmEocyk7aWYocilyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYihzKX1yZXR1cm4gc319fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuY29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkE9Y29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkE7dC5jb252ZXJ0VG9SR0JBPWZ1bmN0aW9uIGNvbnZlcnRUb1JHQkEoZSl7c3dpdGNoKGUua2luZCl7Y2FzZSByLkltYWdlS2luZC5HUkFZU0NBTEVfMUJQUDpyZXR1cm4gY29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoZSk7Y2FzZSByLkltYWdlS2luZC5SR0JfMjRCUFA6cmV0dXJuIGZ1bmN0aW9uIGNvbnZlcnRSR0JUb1JHQkEoe3NyYzplLHNyY1Bvczp0PTAsZGVzdDphLGRlc3RQb3M6aT0wLHdpZHRoOm4saGVpZ2h0OnN9KXtsZXQgbz0wO2NvbnN0IGM9ZS5sZW5ndGg+PjIsbD1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIsdCxjKTtpZihyLkZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuKXtmb3IoO288Yy0yO28rPTMsaSs9NCl7Y29uc3QgZT1sW29dLHQ9bFtvKzFdLHI9bFtvKzJdO2FbaV09NDI3ODE5MDA4MHxlO2FbaSsxXT1lPj4+MjR8dDw8OHw0Mjc4MTkwMDgwO2FbaSsyXT10Pj4+MTZ8cjw8MTZ8NDI3ODE5MDA4MDthW2krM109cj4+Pjh8NDI3ODE5MDA4MH1mb3IobGV0IHQ9NCpvLHI9ZS5sZW5ndGg7dDxyO3QrPTMpYVtpKytdPWVbdF18ZVt0KzFdPDw4fGVbdCsyXTw8MTZ8NDI3ODE5MDA4MH1lbHNle2Zvcig7bzxjLTI7bys9MyxpKz00KXtjb25zdCBlPWxbb10sdD1sW28rMV0scj1sW28rMl07YVtpXT0yNTV8ZTthW2krMV09ZTw8MjR8dD4+Pjh8MjU1O2FbaSsyXT10PDwxNnxyPj4+MTZ8MjU1O2FbaSszXT1yPDw4fDI1NX1mb3IobGV0IHQ9NCpvLHI9ZS5sZW5ndGg7dDxyO3QrPTMpYVtpKytdPWVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fDI1NX1yZXR1cm57c3JjUG9zOnQsZGVzdFBvczppfX0oZSl9cmV0dXJuIG51bGx9O3QuZ3JheVRvUkdCQT1mdW5jdGlvbiBncmF5VG9SR0JBKGUsdCl7aWYoci5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbilmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspdFthXT02NTc5MyplW2FdfDQyNzgxOTAwODA7ZWxzZSBmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspdFthXT0xNjg0MzAwOCplW2FdfDI1NX07dmFyIHI9YSgyKTtmdW5jdGlvbiBjb252ZXJ0QmxhY2tBbmRXaGl0ZVRvUkdCQSh7c3JjOmUsc3JjUG9zOnQ9MCxkZXN0OmEsd2lkdGg6aSxoZWlnaHQ6bixub25CbGFja0NvbG9yOnM9NDI5NDk2NzI5NSxpbnZlcnNlRGVjb2RlOm89ITF9KXtjb25zdCBjPXIuRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTUsW2wsaF09bz9bcyxjXTpbYyxzXSx1PWk+PjMsZD03JmksZj1lLmxlbmd0aDthPW5ldyBVaW50MzJBcnJheShhLmJ1ZmZlcik7bGV0IGc9MDtmb3IobGV0IHI9MDtyPG47cisrKXtmb3IoY29uc3Qgcj10K3U7dDxyO3QrKyl7Y29uc3Qgcj10PGY/ZVt0XToyNTU7YVtnKytdPTEyOCZyP2g6bDthW2crK109NjQmcj9oOmw7YVtnKytdPTMyJnI/aDpsO2FbZysrXT0xNiZyP2g6bDthW2crK109OCZyP2g6bDthW2crK109NCZyP2g6bDthW2crK109MiZyP2g6bDthW2crK109MSZyP2g6bH1pZigwPT09ZCljb250aW51ZTtjb25zdCByPXQ8Zj9lW3QrK106MjU1O2ZvcihsZXQgZT0wO2U8ZDtlKyspYVtnKytdPXImMTw8Ny1lP2g6bH1yZXR1cm57c3JjUG9zOnQsZGVzdFBvczpnfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5KcHhTdHJlYW09dm9pZCAwO3ZhciByPWEoMTgpLGk9YSgzMCksbj1hKDIpO2NsYXNzIEpweFN0cmVhbSBleHRlbmRzIHIuRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPWF9Z2V0IGJ5dGVzKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9ZW5zdXJlQnVmZmVyKGUpe31yZWFkQmxvY2soKXtpZih0aGlzLmVvZilyZXR1cm47Y29uc3QgZT1uZXcgaS5KcHhJbWFnZTtlLnBhcnNlKHRoaXMuYnl0ZXMpO2NvbnN0IHQ9ZS53aWR0aCxhPWUuaGVpZ2h0LHI9ZS5jb21wb25lbnRzQ291bnQsbj1lLnRpbGVzLmxlbmd0aDtpZigxPT09bil0aGlzLmJ1ZmZlcj1lLnRpbGVzWzBdLml0ZW1zO2Vsc2V7Y29uc3QgaT1uZXcgVWludDhDbGFtcGVkQXJyYXkodCphKnIpO2ZvcihsZXQgYT0wO2E8bjthKyspe2NvbnN0IG49ZS50aWxlc1thXSxzPW4ud2lkdGgsbz1uLmhlaWdodCxjPW4ubGVmdCxsPW4udG9wLGg9bi5pdGVtcztsZXQgdT0wLGQ9KHQqbCtjKSpyO2NvbnN0IGY9dCpyLGc9cypyO2ZvcihsZXQgZT0wO2U8bztlKyspe2NvbnN0IGU9aC5zdWJhcnJheSh1LHUrZyk7aS5zZXQoZSxkKTt1Kz1nO2QrPWZ9fXRoaXMuYnVmZmVyPWl9dGhpcy5idWZmZXJMZW5ndGg9dGhpcy5idWZmZXIubGVuZ3RoO3RoaXMuZW9mPSEwfX10LkpweFN0cmVhbT1KcHhTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5KcHhJbWFnZT12b2lkIDA7dmFyIHI9YSgyKSxpPWEoMyksbj1hKDI1KTtjbGFzcyBKcHhFcnJvciBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihgSlBYIGVycm9yOiAke2V9YCwiSnB4RXJyb3IiKX19Y29uc3Qgcz17TEw6MCxMSDoxLEhMOjEsSEg6Mn07dC5KcHhJbWFnZT1jbGFzcyBKcHhJbWFnZXtjb25zdHJ1Y3Rvcigpe3RoaXMuZmFpbE9uQ29ycnVwdGVkSW1hZ2U9ITF9cGFyc2UoZSl7aWYoNjUzNTk9PT0oMCxpLnJlYWRVaW50MTYpKGUsMCkpe3RoaXMucGFyc2VDb2Rlc3RyZWFtKGUsMCxlLmxlbmd0aCk7cmV0dXJufWNvbnN0IHQ9ZS5sZW5ndGg7bGV0IGE9MDtmb3IoO2E8dDspe2xldCBuPTgscz0oMCxpLnJlYWRVaW50MzIpKGUsYSk7Y29uc3Qgbz0oMCxpLnJlYWRVaW50MzIpKGUsYSs0KTthKz1uO2lmKDE9PT1zKXtzPTQyOTQ5NjcyOTYqKDAsaS5yZWFkVWludDMyKShlLGEpKygwLGkucmVhZFVpbnQzMikoZSxhKzQpO2ErPTg7bis9OH0wPT09cyYmKHM9dC1hK24pO2lmKHM8bil0aHJvdyBuZXcgSnB4RXJyb3IoIkludmFsaWQgYm94IGZpZWxkIHNpemUiKTtjb25zdCBjPXMtbjtsZXQgbD0hMDtzd2l0Y2gobyl7Y2FzZSAxNzg1NzM3ODMyOmw9ITE7YnJlYWs7Y2FzZSAxNjY4MjQ2NjQyOmNvbnN0IHQ9ZVthXTtpZigxPT09dCl7Y29uc3QgdD0oMCxpLnJlYWRVaW50MzIpKGUsYSszKTtzd2l0Y2godCl7Y2FzZSAxNjpjYXNlIDE3OmNhc2UgMTg6YnJlYWs7ZGVmYXVsdDooMCxyLndhcm4pKCJVbmtub3duIGNvbG9yc3BhY2UgIit0KX19ZWxzZSAyPT09dCYmKDAsci5pbmZvKSgiSUNDIHByb2ZpbGUgbm90IHN1cHBvcnRlZCIpO2JyZWFrO2Nhc2UgMTc4NTczNzgyNzp0aGlzLnBhcnNlQ29kZXN0cmVhbShlLGEsYStjKTticmVhaztjYXNlIDE3ODM2MzZlMzoyMTg3OTM3MzghPT0oMCxpLnJlYWRVaW50MzIpKGUsYSkmJigwLHIud2FybikoIkludmFsaWQgSlAyIHNpZ25hdHVyZSIpO2JyZWFrO2Nhc2UgMTc4MzYzNDQ1ODpjYXNlIDE3MTg5MDkyOTY6Y2FzZSAxOTIwMDk5Njk3OmNhc2UgMTkxOTI1MTIzMjpjYXNlIDE3Njg0NDkxMzg6YnJlYWs7ZGVmYXVsdDpjb25zdCBuPVN0cmluZy5mcm9tQ2hhckNvZGUobz4+MjQmMjU1LG8+PjE2JjI1NSxvPj44JjI1NSwyNTUmbyk7KDAsci53YXJuKShgVW5zdXBwb3J0ZWQgaGVhZGVyIHR5cGUgJHtvfSAoJHtufSkuYCl9bCYmKGErPWMpfX1wYXJzZUltYWdlUHJvcGVydGllcyhlKXtsZXQgdD1lLmdldEJ5dGUoKTtmb3IoO3Q+PTA7KXtjb25zdCBhPXQ7dD1lLmdldEJ5dGUoKTtpZig2NTM2MT09PShhPDw4fHQpKXtlLnNraXAoNCk7Y29uc3QgdD1lLmdldEludDMyKCk+Pj4wLGE9ZS5nZXRJbnQzMigpPj4+MCxyPWUuZ2V0SW50MzIoKT4+PjAsaT1lLmdldEludDMyKCk+Pj4wO2Uuc2tpcCgxNik7Y29uc3Qgbj1lLmdldFVpbnQxNigpO3RoaXMud2lkdGg9dC1yO3RoaXMuaGVpZ2h0PWEtaTt0aGlzLmNvbXBvbmVudHNDb3VudD1uO3RoaXMuYml0c1BlckNvbXBvbmVudD04O3JldHVybn19dGhyb3cgbmV3IEpweEVycm9yKCJObyBzaXplIG1hcmtlciBmb3VuZCBpbiBKUFggc3RyZWFtIil9cGFyc2VDb2Rlc3RyZWFtKGUsdCxhKXtjb25zdCBuPXt9O2xldCBzPSExO3RyeXtsZXQgbz10O2Zvcig7bysxPGE7KXtjb25zdCB0PSgwLGkucmVhZFVpbnQxNikoZSxvKTtvKz0yO2xldCBhLGMsbCxoLHUsZCxmPTA7c3dpdGNoKHQpe2Nhc2UgNjUzNTk6bi5tYWluSGVhZGVyPSEwO2JyZWFrO2Nhc2UgNjU0OTc6YnJlYWs7Y2FzZSA2NTM2MTpmPSgwLGkucmVhZFVpbnQxNikoZSxvKTtjb25zdCBnPXt9O2cuWHNpej0oMCxpLnJlYWRVaW50MzIpKGUsbys0KTtnLllzaXo9KDAsaS5yZWFkVWludDMyKShlLG8rOCk7Zy5YT3Npej0oMCxpLnJlYWRVaW50MzIpKGUsbysxMik7Zy5ZT3Npej0oMCxpLnJlYWRVaW50MzIpKGUsbysxNik7Zy5YVHNpej0oMCxpLnJlYWRVaW50MzIpKGUsbysyMCk7Zy5ZVHNpej0oMCxpLnJlYWRVaW50MzIpKGUsbysyNCk7Zy5YVE9zaXo9KDAsaS5yZWFkVWludDMyKShlLG8rMjgpO2cuWVRPc2l6PSgwLGkucmVhZFVpbnQzMikoZSxvKzMyKTtjb25zdCBwPSgwLGkucmVhZFVpbnQxNikoZSxvKzM2KTtnLkNzaXo9cDtjb25zdCBtPVtdO2E9byszODtmb3IobGV0IHQ9MDt0PHA7dCsrKXtjb25zdCB0PXtwcmVjaXNpb246MSsoMTI3JmVbYV0pLGlzU2lnbmVkOiEhKDEyOCZlW2FdKSxYUnNpejplW2ErMV0sWVJzaXo6ZVthKzJdfTthKz0zO2NhbGN1bGF0ZUNvbXBvbmVudERpbWVuc2lvbnModCxnKTttLnB1c2godCl9bi5TSVo9ZztuLmNvbXBvbmVudHM9bTtjYWxjdWxhdGVUaWxlR3JpZHMobixtKTtuLlFDQz1bXTtuLkNPQz1bXTticmVhaztjYXNlIDY1MzcyOmY9KDAsaS5yZWFkVWludDE2KShlLG8pO2NvbnN0IGI9e307YT1vKzI7Yz1lW2ErK107c3dpdGNoKDMxJmMpe2Nhc2UgMDpoPTg7dT0hMDticmVhaztjYXNlIDE6aD0xNjt1PSExO2JyZWFrO2Nhc2UgMjpoPTE2O3U9ITA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgU1FjZCB2YWx1ZSAiK2MpfWIubm9RdWFudGl6YXRpb249OD09PWg7Yi5zY2FsYXJFeHBvdW5kZWQ9dTtiLmd1YXJkQml0cz1jPj41O2w9W107Zm9yKDthPGYrbzspe2NvbnN0IHQ9e307aWYoOD09PWgpe3QuZXBzaWxvbj1lW2ErK10+PjM7dC5tdT0wfWVsc2V7dC5lcHNpbG9uPWVbYV0+PjM7dC5tdT0oNyZlW2FdKTw8OHxlW2ErMV07YSs9Mn1sLnB1c2godCl9Yi5TUHFjZHM9bDtpZihuLm1haW5IZWFkZXIpbi5RQ0Q9YjtlbHNle24uY3VycmVudFRpbGUuUUNEPWI7bi5jdXJyZW50VGlsZS5RQ0M9W119YnJlYWs7Y2FzZSA2NTM3MzpmPSgwLGkucmVhZFVpbnQxNikoZSxvKTtjb25zdCB5PXt9O2E9bysyO2xldCB3O2lmKG4uU0laLkNzaXo8MjU3KXc9ZVthKytdO2Vsc2V7dz0oMCxpLnJlYWRVaW50MTYpKGUsYSk7YSs9Mn1jPWVbYSsrXTtzd2l0Y2goMzEmYyl7Y2FzZSAwOmg9ODt1PSEwO2JyZWFrO2Nhc2UgMTpoPTE2O3U9ITE7YnJlYWs7Y2FzZSAyOmg9MTY7dT0hMDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTUWNkIHZhbHVlICIrYyl9eS5ub1F1YW50aXphdGlvbj04PT09aDt5LnNjYWxhckV4cG91bmRlZD11O3kuZ3VhcmRCaXRzPWM+PjU7bD1bXTtmb3IoO2E8ZitvOyl7Y29uc3QgdD17fTtpZig4PT09aCl7dC5lcHNpbG9uPWVbYSsrXT4+Mzt0Lm11PTB9ZWxzZXt0LmVwc2lsb249ZVthXT4+Mzt0Lm11PSg3JmVbYV0pPDw4fGVbYSsxXTthKz0yfWwucHVzaCh0KX15LlNQcWNkcz1sO24ubWFpbkhlYWRlcj9uLlFDQ1t3XT15Om4uY3VycmVudFRpbGUuUUNDW3ddPXk7YnJlYWs7Y2FzZSA2NTM2MjpmPSgwLGkucmVhZFVpbnQxNikoZSxvKTtjb25zdCBTPXt9O2E9bysyO2NvbnN0IHg9ZVthKytdO1MuZW50cm9weUNvZGVyV2l0aEN1c3RvbVByZWNpbmN0cz0hISgxJngpO1Muc29wTWFya2VyVXNlZD0hISgyJngpO1MuZXBoTWFya2VyVXNlZD0hISg0JngpO1MucHJvZ3Jlc3Npb25PcmRlcj1lW2ErK107Uy5sYXllcnNDb3VudD0oMCxpLnJlYWRVaW50MTYpKGUsYSk7YSs9MjtTLm11bHRpcGxlQ29tcG9uZW50VHJhbnNmb3JtPWVbYSsrXTtTLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudD1lW2ErK107Uy54Y2I9MisoMTUmZVthKytdKTtTLnljYj0yKygxNSZlW2ErK10pO2NvbnN0IEM9ZVthKytdO1Muc2VsZWN0aXZlQXJpdGhtZXRpY0NvZGluZ0J5cGFzcz0hISgxJkMpO1MucmVzZXRDb250ZXh0UHJvYmFiaWxpdGllcz0hISgyJkMpO1MudGVybWluYXRpb25PbkVhY2hDb2RpbmdQYXNzPSEhKDQmQyk7Uy52ZXJ0aWNhbGx5U3RyaXBlPSEhKDgmQyk7Uy5wcmVkaWN0YWJsZVRlcm1pbmF0aW9uPSEhKDE2JkMpO1Muc2VnbWVudGF0aW9uU3ltYm9sVXNlZD0hISgzMiZDKTtTLnJldmVyc2libGVUcmFuc2Zvcm1hdGlvbj1lW2ErK107aWYoUy5lbnRyb3B5Q29kZXJXaXRoQ3VzdG9tUHJlY2luY3RzKXtjb25zdCB0PVtdO2Zvcig7YTxmK287KXtjb25zdCByPWVbYSsrXTt0LnB1c2goe1BQeDoxNSZyLFBQeTpyPj40fSl9Uy5wcmVjaW5jdHNTaXplcz10fWNvbnN0IGs9W107Uy5zZWxlY3RpdmVBcml0aG1ldGljQ29kaW5nQnlwYXNzJiZrLnB1c2goInNlbGVjdGl2ZUFyaXRobWV0aWNDb2RpbmdCeXBhc3MiKTtTLnRlcm1pbmF0aW9uT25FYWNoQ29kaW5nUGFzcyYmay5wdXNoKCJ0ZXJtaW5hdGlvbk9uRWFjaENvZGluZ1Bhc3MiKTtTLnZlcnRpY2FsbHlTdHJpcGUmJmsucHVzaCgidmVydGljYWxseVN0cmlwZSIpO1MucHJlZGljdGFibGVUZXJtaW5hdGlvbiYmay5wdXNoKCJwcmVkaWN0YWJsZVRlcm1pbmF0aW9uIik7aWYoay5sZW5ndGg+MCl7cz0hMDsoMCxyLndhcm4pKGBKUFg6IFVuc3VwcG9ydGVkIENPRCBvcHRpb25zICgke2suam9pbigiLCAiKX0pLmApfWlmKG4ubWFpbkhlYWRlciluLkNPRD1TO2Vsc2V7bi5jdXJyZW50VGlsZS5DT0Q9UztuLmN1cnJlbnRUaWxlLkNPQz1bXX1icmVhaztjYXNlIDY1NDI0OmY9KDAsaS5yZWFkVWludDE2KShlLG8pO2Q9e307ZC5pbmRleD0oMCxpLnJlYWRVaW50MTYpKGUsbysyKTtkLmxlbmd0aD0oMCxpLnJlYWRVaW50MzIpKGUsbys0KTtkLmRhdGFFbmQ9ZC5sZW5ndGgrby0yO2QucGFydEluZGV4PWVbbys4XTtkLnBhcnRzQ291bnQ9ZVtvKzldO24ubWFpbkhlYWRlcj0hMTtpZigwPT09ZC5wYXJ0SW5kZXgpe2QuQ09EPW4uQ09EO2QuQ09DPW4uQ09DLnNsaWNlKDApO2QuUUNEPW4uUUNEO2QuUUNDPW4uUUNDLnNsaWNlKDApfW4uY3VycmVudFRpbGU9ZDticmVhaztjYXNlIDY1NDI3OmQ9bi5jdXJyZW50VGlsZTtpZigwPT09ZC5wYXJ0SW5kZXgpe2luaXRpYWxpemVUaWxlKG4sZC5pbmRleCk7YnVpbGRQYWNrZXRzKG4pfWY9ZC5kYXRhRW5kLW87cGFyc2VUaWxlUGFja2V0cyhuLGUsbyxmKTticmVhaztjYXNlIDY1MzYzOigwLHIud2FybikoIkpQWDogQ29kZXN0cmVhbSBjb2RlIDB4RkY1MyAoQ09DKSBpcyBub3QgaW1wbGVtZW50ZWQuIik7Y2FzZSA2NTM2NTpjYXNlIDY1MzY3OmNhc2UgNjUzNjg6Y2FzZSA2NTM4MDpmPSgwLGkucmVhZFVpbnQxNikoZSxvKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5rbm93biBjb2Rlc3RyZWFtIGNvZGU6ICIrdC50b1N0cmluZygxNikpfW8rPWZ9fWNhdGNoKGUpe2lmKHN8fHRoaXMuZmFpbE9uQ29ycnVwdGVkSW1hZ2UpdGhyb3cgbmV3IEpweEVycm9yKGUubWVzc2FnZSk7KDAsci53YXJuKShgSlBYOiBUcnlpbmcgdG8gcmVjb3ZlciBmcm9tOiAiJHtlLm1lc3NhZ2V9Ii5gKX10aGlzLnRpbGVzPWZ1bmN0aW9uIHRyYW5zZm9ybUNvbXBvbmVudHMoZSl7Y29uc3QgdD1lLlNJWixhPWUuY29tcG9uZW50cyxyPXQuQ3NpeixpPVtdO2ZvcihsZXQgdD0wLG49ZS50aWxlcy5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1lLnRpbGVzW3RdLHM9W107Zm9yKGxldCB0PTA7dDxyO3QrKylzW3RdPXRyYW5zZm9ybVRpbGUoZSxuLHQpO2NvbnN0IG89c1swXSxjPW5ldyBVaW50OENsYW1wZWRBcnJheShvLml0ZW1zLmxlbmd0aCpyKSxsPXtsZWZ0Om8ubGVmdCx0b3A6by50b3Asd2lkdGg6by53aWR0aCxoZWlnaHQ6by5oZWlnaHQsaXRlbXM6Y307bGV0IGgsdSxkLGYsZyxwLG0sYj0wO2lmKG4uY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycy5tdWx0aXBsZUNvbXBvbmVudFRyYW5zZm9ybSl7Y29uc3QgZT00PT09cix0PXNbMF0uaXRlbXMsaT1zWzFdLml0ZW1zLG89c1syXS5pdGVtcyxsPWU/c1szXS5pdGVtczpudWxsO2g9YVswXS5wcmVjaXNpb24tODt1PS41KygxMjg8PGgpO2NvbnN0IHk9bi5jb21wb25lbnRzWzBdLHc9ci0zO2Y9dC5sZW5ndGg7aWYoeS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMucmV2ZXJzaWJsZVRyYW5zZm9ybWF0aW9uKWZvcihkPTA7ZDxmO2QrKyxiKz13KXtnPXRbZF0rdTtwPWlbZF07bT1vW2RdO2NvbnN0IGU9Zy0obStwPj4yKTtjW2IrK109ZSttPj5oO2NbYisrXT1lPj5oO2NbYisrXT1lK3A+Pmh9ZWxzZSBmb3IoZD0wO2Q8ZjtkKyssYis9dyl7Zz10W2RdK3U7cD1pW2RdO209b1tkXTtjW2IrK109ZysxLjQwMiptPj5oO2NbYisrXT1nLS4zNDQxMypwLS43MTQxNCptPj5oO2NbYisrXT1nKzEuNzcyKnA+Pmh9aWYoZSlmb3IoZD0wLGI9MztkPGY7ZCsrLGIrPTQpY1tiXT1sW2RdK3U+Pmh9ZWxzZSBmb3IobGV0IGU9MDtlPHI7ZSsrKXtjb25zdCB0PXNbZV0uaXRlbXM7aD1hW2VdLnByZWNpc2lvbi04O3U9LjUrKDEyODw8aCk7Zm9yKGI9ZSxkPTAsZj10Lmxlbmd0aDtkPGY7ZCsrKXtjW2JdPXRbZF0rdT4+aDtiKz1yfX1pLnB1c2gobCl9cmV0dXJuIGl9KG4pO3RoaXMud2lkdGg9bi5TSVouWHNpei1uLlNJWi5YT3Npejt0aGlzLmhlaWdodD1uLlNJWi5Zc2l6LW4uU0laLllPc2l6O3RoaXMuY29tcG9uZW50c0NvdW50PW4uU0laLkNzaXp9fTtmdW5jdGlvbiBjYWxjdWxhdGVDb21wb25lbnREaW1lbnNpb25zKGUsdCl7ZS54MD1NYXRoLmNlaWwodC5YT3Npei9lLlhSc2l6KTtlLngxPU1hdGguY2VpbCh0LlhzaXovZS5YUnNpeik7ZS55MD1NYXRoLmNlaWwodC5ZT3Npei9lLllSc2l6KTtlLnkxPU1hdGguY2VpbCh0LllzaXovZS5ZUnNpeik7ZS53aWR0aD1lLngxLWUueDA7ZS5oZWlnaHQ9ZS55MS1lLnkwfWZ1bmN0aW9uIGNhbGN1bGF0ZVRpbGVHcmlkcyhlLHQpe2NvbnN0IGE9ZS5TSVoscj1bXTtsZXQgaTtjb25zdCBuPU1hdGguY2VpbCgoYS5Yc2l6LWEuWFRPc2l6KS9hLlhUc2l6KSxzPU1hdGguY2VpbCgoYS5Zc2l6LWEuWVRPc2l6KS9hLllUc2l6KTtmb3IobGV0IGU9MDtlPHM7ZSsrKWZvcihsZXQgdD0wO3Q8bjt0Kyspe2k9e307aS50eDA9TWF0aC5tYXgoYS5YVE9zaXordCphLlhUc2l6LGEuWE9zaXopO2kudHkwPU1hdGgubWF4KGEuWVRPc2l6K2UqYS5ZVHNpeixhLllPc2l6KTtpLnR4MT1NYXRoLm1pbihhLlhUT3NpeisodCsxKSphLlhUc2l6LGEuWHNpeik7aS50eTE9TWF0aC5taW4oYS5ZVE9zaXorKGUrMSkqYS5ZVHNpeixhLllzaXopO2kud2lkdGg9aS50eDEtaS50eDA7aS5oZWlnaHQ9aS50eTEtaS50eTA7aS5jb21wb25lbnRzPVtdO3IucHVzaChpKX1lLnRpbGVzPXI7Zm9yKGxldCBlPTAsbj1hLkNzaXo7ZTxuO2UrKyl7Y29uc3QgYT10W2VdO2ZvcihsZXQgdD0wLG49ci5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj17fTtpPXJbdF07bi50Y3gwPU1hdGguY2VpbChpLnR4MC9hLlhSc2l6KTtuLnRjeTA9TWF0aC5jZWlsKGkudHkwL2EuWVJzaXopO24udGN4MT1NYXRoLmNlaWwoaS50eDEvYS5YUnNpeik7bi50Y3kxPU1hdGguY2VpbChpLnR5MS9hLllSc2l6KTtuLndpZHRoPW4udGN4MS1uLnRjeDA7bi5oZWlnaHQ9bi50Y3kxLW4udGN5MDtpLmNvbXBvbmVudHNbZV09bn19fWZ1bmN0aW9uIGdldEJsb2Nrc0RpbWVuc2lvbnMoZSx0LGEpe2NvbnN0IHI9dC5jb2RpbmdTdHlsZVBhcmFtZXRlcnMsaT17fTtpZihyLmVudHJvcHlDb2RlcldpdGhDdXN0b21QcmVjaW5jdHMpe2kuUFB4PXIucHJlY2luY3RzU2l6ZXNbYV0uUFB4O2kuUFB5PXIucHJlY2luY3RzU2l6ZXNbYV0uUFB5fWVsc2V7aS5QUHg9MTU7aS5QUHk9MTV9aS54Y2JfPWE+MD9NYXRoLm1pbihyLnhjYixpLlBQeC0xKTpNYXRoLm1pbihyLnhjYixpLlBQeCk7aS55Y2JfPWE+MD9NYXRoLm1pbihyLnljYixpLlBQeS0xKTpNYXRoLm1pbihyLnljYixpLlBQeSk7cmV0dXJuIGl9ZnVuY3Rpb24gYnVpbGRQcmVjaW5jdHMoZSx0LGEpe2NvbnN0IHI9MTw8YS5QUHgsaT0xPDxhLlBQeSxuPTA9PT10LnJlc0xldmVsLHM9MTw8YS5QUHgrKG4/MDotMSksbz0xPDxhLlBQeSsobj8wOi0xKSxjPXQudHJ4MT50LnRyeDA/TWF0aC5jZWlsKHQudHJ4MS9yKS1NYXRoLmZsb29yKHQudHJ4MC9yKTowLGw9dC50cnkxPnQudHJ5MD9NYXRoLmNlaWwodC50cnkxL2kpLU1hdGguZmxvb3IodC50cnkwL2kpOjAsaD1jKmw7dC5wcmVjaW5jdFBhcmFtZXRlcnM9e3ByZWNpbmN0V2lkdGg6cixwcmVjaW5jdEhlaWdodDppLG51bXByZWNpbmN0c3dpZGU6YyxudW1wcmVjaW5jdHNoaWdoOmwsbnVtcHJlY2luY3RzOmgscHJlY2luY3RXaWR0aEluU3ViYmFuZDpzLHByZWNpbmN0SGVpZ2h0SW5TdWJiYW5kOm99fWZ1bmN0aW9uIGJ1aWxkQ29kZWJsb2NrcyhlLHQsYSl7Y29uc3Qgcj1hLnhjYl8saT1hLnljYl8sbj0xPDxyLHM9MTw8aSxvPXQudGJ4MD4+cixjPXQudGJ5MD4+aSxsPXQudGJ4MStuLTE+PnIsaD10LnRieTErcy0xPj5pLHU9dC5yZXNvbHV0aW9uLnByZWNpbmN0UGFyYW1ldGVycyxkPVtdLGY9W107bGV0IGcscCxtLGI7Zm9yKHA9YztwPGg7cCsrKWZvcihnPW87ZzxsO2crKyl7bT17Y2J4OmcsY2J5OnAsdGJ4MDpuKmcsdGJ5MDpzKnAsdGJ4MTpuKihnKzEpLHRieTE6cyoocCsxKX07bS50YngwXz1NYXRoLm1heCh0LnRieDAsbS50YngwKTttLnRieTBfPU1hdGgubWF4KHQudGJ5MCxtLnRieTApO20udGJ4MV89TWF0aC5taW4odC50YngxLG0udGJ4MSk7bS50YnkxXz1NYXRoLm1pbih0LnRieTEsbS50YnkxKTtiPU1hdGguZmxvb3IoKG0udGJ4MF8tdC50YngwKS91LnByZWNpbmN0V2lkdGhJblN1YmJhbmQpK01hdGguZmxvb3IoKG0udGJ5MF8tdC50YnkwKS91LnByZWNpbmN0SGVpZ2h0SW5TdWJiYW5kKSp1Lm51bXByZWNpbmN0c3dpZGU7bS5wcmVjaW5jdE51bWJlcj1iO20uc3ViYmFuZFR5cGU9dC50eXBlO20uTGJsb2NrPTM7aWYobS50YngxXzw9bS50YngwX3x8bS50YnkxXzw9bS50YnkwXyljb250aW51ZTtkLnB1c2gobSk7bGV0IGU9ZltiXTtpZih2b2lkIDAhPT1lKXtnPGUuY2J4TWluP2UuY2J4TWluPWc6Zz5lLmNieE1heCYmKGUuY2J4TWF4PWcpO3A8ZS5jYnlNaW4/ZS5jYnhNaW49cDpwPmUuY2J5TWF4JiYoZS5jYnlNYXg9cCl9ZWxzZSBmW2JdPWU9e2NieE1pbjpnLGNieU1pbjpwLGNieE1heDpnLGNieU1heDpwfTttLnByZWNpbmN0PWV9dC5jb2RlYmxvY2tQYXJhbWV0ZXJzPXtjb2RlYmxvY2tXaWR0aDpyLGNvZGVibG9ja0hlaWdodDppLG51bWNvZGVibG9ja3dpZGU6bC1vKzEsbnVtY29kZWJsb2NraGlnaDpoLWMrMX07dC5jb2RlYmxvY2tzPWQ7dC5wcmVjaW5jdHM9Zn1mdW5jdGlvbiBjcmVhdGVQYWNrZXQoZSx0LGEpe2NvbnN0IHI9W10saT1lLnN1YmJhbmRzO2ZvcihsZXQgZT0wLGE9aS5sZW5ndGg7ZTxhO2UrKyl7Y29uc3QgYT1pW2VdLmNvZGVibG9ja3M7Zm9yKGxldCBlPTAsaT1hLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBpPWFbZV07aS5wcmVjaW5jdE51bWJlcj09PXQmJnIucHVzaChpKX19cmV0dXJue2xheWVyTnVtYmVyOmEsY29kZWJsb2NrczpyfX1mdW5jdGlvbiBMYXllclJlc29sdXRpb25Db21wb25lbnRQb3NpdGlvbkl0ZXJhdG9yKGUpe2NvbnN0IHQ9ZS5TSVosYT1lLmN1cnJlbnRUaWxlLmluZGV4LHI9ZS50aWxlc1thXSxpPXIuY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycy5sYXllcnNDb3VudCxuPXQuQ3NpejtsZXQgcz0wO2ZvcihsZXQgZT0wO2U8bjtlKyspcz1NYXRoLm1heChzLHIuY29tcG9uZW50c1tlXS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KTtsZXQgbz0wLGM9MCxsPTAsaD0wO3RoaXMubmV4dFBhY2tldD1mdW5jdGlvbiBKcHhJbWFnZV9uZXh0UGFja2V0KCl7Zm9yKDtvPGk7bysrKXtmb3IoO2M8PXM7YysrKXtmb3IoO2w8bjtsKyspe2NvbnN0IGU9ci5jb21wb25lbnRzW2xdO2lmKGM+ZS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KWNvbnRpbnVlO2NvbnN0IHQ9ZS5yZXNvbHV0aW9uc1tjXSxhPXQucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0cztmb3IoO2g8YTspe2NvbnN0IGU9Y3JlYXRlUGFja2V0KHQsaCxvKTtoKys7cmV0dXJuIGV9aD0wfWw9MH1jPTB9dGhyb3cgbmV3IEpweEVycm9yKCJPdXQgb2YgcGFja2V0cyIpfX1mdW5jdGlvbiBSZXNvbHV0aW9uTGF5ZXJDb21wb25lbnRQb3NpdGlvbkl0ZXJhdG9yKGUpe2NvbnN0IHQ9ZS5TSVosYT1lLmN1cnJlbnRUaWxlLmluZGV4LHI9ZS50aWxlc1thXSxpPXIuY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycy5sYXllcnNDb3VudCxuPXQuQ3NpejtsZXQgcz0wO2ZvcihsZXQgZT0wO2U8bjtlKyspcz1NYXRoLm1heChzLHIuY29tcG9uZW50c1tlXS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KTtsZXQgbz0wLGM9MCxsPTAsaD0wO3RoaXMubmV4dFBhY2tldD1mdW5jdGlvbiBKcHhJbWFnZV9uZXh0UGFja2V0KCl7Zm9yKDtvPD1zO28rKyl7Zm9yKDtjPGk7YysrKXtmb3IoO2w8bjtsKyspe2NvbnN0IGU9ci5jb21wb25lbnRzW2xdO2lmKG8+ZS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KWNvbnRpbnVlO2NvbnN0IHQ9ZS5yZXNvbHV0aW9uc1tvXSxhPXQucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0cztmb3IoO2g8YTspe2NvbnN0IGU9Y3JlYXRlUGFja2V0KHQsaCxjKTtoKys7cmV0dXJuIGV9aD0wfWw9MH1jPTB9dGhyb3cgbmV3IEpweEVycm9yKCJPdXQgb2YgcGFja2V0cyIpfX1mdW5jdGlvbiBSZXNvbHV0aW9uUG9zaXRpb25Db21wb25lbnRMYXllckl0ZXJhdG9yKGUpe2NvbnN0IHQ9ZS5TSVosYT1lLmN1cnJlbnRUaWxlLmluZGV4LHI9ZS50aWxlc1thXSxpPXIuY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycy5sYXllcnNDb3VudCxuPXQuQ3NpejtsZXQgcyxvLGMsbCxoPTA7Zm9yKGM9MDtjPG47YysrKXtjb25zdCBlPXIuY29tcG9uZW50c1tjXTtoPU1hdGgubWF4KGgsZS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KX1jb25zdCB1PW5ldyBJbnQzMkFycmF5KGgrMSk7Zm9yKG89MDtvPD1oOysrbyl7bGV0IGU9MDtmb3IoYz0wO2M8bjsrK2Mpe2NvbnN0IHQ9ci5jb21wb25lbnRzW2NdLnJlc29sdXRpb25zO288dC5sZW5ndGgmJihlPU1hdGgubWF4KGUsdFtvXS5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzKSl9dVtvXT1lfXM9MDtvPTA7Yz0wO2w9MDt0aGlzLm5leHRQYWNrZXQ9ZnVuY3Rpb24gSnB4SW1hZ2VfbmV4dFBhY2tldCgpe2Zvcig7bzw9aDtvKyspe2Zvcig7bDx1W29dO2wrKyl7Zm9yKDtjPG47YysrKXtjb25zdCBlPXIuY29tcG9uZW50c1tjXTtpZihvPmUuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCljb250aW51ZTtjb25zdCB0PWUucmVzb2x1dGlvbnNbb10sYT10LnByZWNpbmN0UGFyYW1ldGVycy5udW1wcmVjaW5jdHM7aWYoIShsPj1hKSl7Zm9yKDtzPGk7KXtjb25zdCBlPWNyZWF0ZVBhY2tldCh0LGwscyk7cysrO3JldHVybiBlfXM9MH19Yz0wfWw9MH10aHJvdyBuZXcgSnB4RXJyb3IoIk91dCBvZiBwYWNrZXRzIil9fWZ1bmN0aW9uIFBvc2l0aW9uQ29tcG9uZW50UmVzb2x1dGlvbkxheWVySXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLGk9ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LG49dC5Dc2l6LHM9Z2V0UHJlY2luY3RTaXplc0luSW1hZ2VTY2FsZShyKSxvPXM7bGV0IGM9MCxsPTAsaD0wLHU9MCxkPTA7dGhpcy5uZXh0UGFja2V0PWZ1bmN0aW9uIEpweEltYWdlX25leHRQYWNrZXQoKXtmb3IoO2Q8by5tYXhOdW1IaWdoO2QrKyl7Zm9yKDt1PG8ubWF4TnVtV2lkZTt1Kyspe2Zvcig7aDxuO2grKyl7Y29uc3QgZT1yLmNvbXBvbmVudHNbaF0sdD1lLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQ7Zm9yKDtsPD10O2wrKyl7Y29uc3QgdD1lLnJlc29sdXRpb25zW2xdLGE9cy5jb21wb25lbnRzW2hdLnJlc29sdXRpb25zW2xdLHI9Z2V0UHJlY2luY3RJbmRleElmRXhpc3QodSxkLGEsbyx0KTtpZihudWxsIT09cil7Zm9yKDtjPGk7KXtjb25zdCBlPWNyZWF0ZVBhY2tldCh0LHIsYyk7YysrO3JldHVybiBlfWM9MH19bD0wfWg9MH11PTB9dGhyb3cgbmV3IEpweEVycm9yKCJPdXQgb2YgcGFja2V0cyIpfX1mdW5jdGlvbiBDb21wb25lbnRQb3NpdGlvblJlc29sdXRpb25MYXllckl0ZXJhdG9yKGUpe2NvbnN0IHQ9ZS5TSVosYT1lLmN1cnJlbnRUaWxlLmluZGV4LHI9ZS50aWxlc1thXSxpPXIuY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycy5sYXllcnNDb3VudCxuPXQuQ3NpeixzPWdldFByZWNpbmN0U2l6ZXNJbkltYWdlU2NhbGUocik7bGV0IG89MCxjPTAsbD0wLGg9MCx1PTA7dGhpcy5uZXh0UGFja2V0PWZ1bmN0aW9uIEpweEltYWdlX25leHRQYWNrZXQoKXtmb3IoO2w8bjsrK2wpe2NvbnN0IGU9ci5jb21wb25lbnRzW2xdLHQ9cy5jb21wb25lbnRzW2xdLGE9ZS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50O2Zvcig7dTx0Lm1heE51bUhpZ2g7dSsrKXtmb3IoO2g8dC5tYXhOdW1XaWRlO2grKyl7Zm9yKDtjPD1hO2MrKyl7Y29uc3QgYT1lLnJlc29sdXRpb25zW2NdLHI9dC5yZXNvbHV0aW9uc1tjXSxuPWdldFByZWNpbmN0SW5kZXhJZkV4aXN0KGgsdSxyLHQsYSk7aWYobnVsbCE9PW4pe2Zvcig7bzxpOyl7Y29uc3QgZT1jcmVhdGVQYWNrZXQoYSxuLG8pO28rKztyZXR1cm4gZX1vPTB9fWM9MH1oPTB9dT0wfXRocm93IG5ldyBKcHhFcnJvcigiT3V0IG9mIHBhY2tldHMiKX19ZnVuY3Rpb24gZ2V0UHJlY2luY3RJbmRleElmRXhpc3QoZSx0LGEscixpKXtjb25zdCBuPWUqci5taW5XaWR0aCxzPXQqci5taW5IZWlnaHQ7aWYobiVhLndpZHRoIT0wfHxzJWEuaGVpZ2h0IT0wKXJldHVybiBudWxsO2NvbnN0IG89cy9hLndpZHRoKmkucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0c3dpZGU7cmV0dXJuIG4vYS5oZWlnaHQrb31mdW5jdGlvbiBnZXRQcmVjaW5jdFNpemVzSW5JbWFnZVNjYWxlKGUpe2NvbnN0IHQ9ZS5jb21wb25lbnRzLmxlbmd0aDtsZXQgYT1OdW1iZXIuTUFYX1ZBTFVFLHI9TnVtYmVyLk1BWF9WQUxVRSxpPTAsbj0wO2NvbnN0IHM9bmV3IEFycmF5KHQpO2ZvcihsZXQgbz0wO288dDtvKyspe2NvbnN0IHQ9ZS5jb21wb25lbnRzW29dLGM9dC5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50LGw9bmV3IEFycmF5KGMrMSk7bGV0IGg9TnVtYmVyLk1BWF9WQUxVRSx1PU51bWJlci5NQVhfVkFMVUUsZD0wLGY9MCxnPTE7Zm9yKGxldCBlPWM7ZT49MDstLWUpe2NvbnN0IGE9dC5yZXNvbHV0aW9uc1tlXSxyPWcqYS5wcmVjaW5jdFBhcmFtZXRlcnMucHJlY2luY3RXaWR0aCxpPWcqYS5wcmVjaW5jdFBhcmFtZXRlcnMucHJlY2luY3RIZWlnaHQ7aD1NYXRoLm1pbihoLHIpO3U9TWF0aC5taW4odSxpKTtkPU1hdGgubWF4KGQsYS5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3Rzd2lkZSk7Zj1NYXRoLm1heChmLGEucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0c2hpZ2gpO2xbZV09e3dpZHRoOnIsaGVpZ2h0Oml9O2c8PD0xfWE9TWF0aC5taW4oYSxoKTtyPU1hdGgubWluKHIsdSk7aT1NYXRoLm1heChpLGQpO249TWF0aC5tYXgobixmKTtzW29dPXtyZXNvbHV0aW9uczpsLG1pbldpZHRoOmgsbWluSGVpZ2h0OnUsbWF4TnVtV2lkZTpkLG1heE51bUhpZ2g6Zn19cmV0dXJue2NvbXBvbmVudHM6cyxtaW5XaWR0aDphLG1pbkhlaWdodDpyLG1heE51bVdpZGU6aSxtYXhOdW1IaWdoOm59fWZ1bmN0aW9uIGJ1aWxkUGFja2V0cyhlKXtjb25zdCB0PWUuU0laLGE9ZS5jdXJyZW50VGlsZS5pbmRleCxyPWUudGlsZXNbYV0saT10LkNzaXo7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7Y29uc3QgdD1yLmNvbXBvbmVudHNbZV0sYT10LmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQsaT1bXSxuPVtdO2ZvcihsZXQgZT0wO2U8PWE7ZSsrKXtjb25zdCByPWdldEJsb2Nrc0RpbWVuc2lvbnMoMCx0LGUpLHM9e30sbz0xPDxhLWU7cy50cngwPU1hdGguY2VpbCh0LnRjeDAvbyk7cy50cnkwPU1hdGguY2VpbCh0LnRjeTAvbyk7cy50cngxPU1hdGguY2VpbCh0LnRjeDEvbyk7cy50cnkxPU1hdGguY2VpbCh0LnRjeTEvbyk7cy5yZXNMZXZlbD1lO2J1aWxkUHJlY2luY3RzKDAscyxyKTtpLnB1c2gocyk7bGV0IGM7aWYoMD09PWUpe2M9e307Yy50eXBlPSJMTCI7Yy50YngwPU1hdGguY2VpbCh0LnRjeDAvbyk7Yy50YnkwPU1hdGguY2VpbCh0LnRjeTAvbyk7Yy50YngxPU1hdGguY2VpbCh0LnRjeDEvbyk7Yy50YnkxPU1hdGguY2VpbCh0LnRjeTEvbyk7Yy5yZXNvbHV0aW9uPXM7YnVpbGRDb2RlYmxvY2tzKDAsYyxyKTtuLnB1c2goYyk7cy5zdWJiYW5kcz1bY119ZWxzZXtjb25zdCBpPTE8PGEtZSsxLG89W107Yz17fTtjLnR5cGU9IkhMIjtjLnRieDA9TWF0aC5jZWlsKHQudGN4MC9pLS41KTtjLnRieTA9TWF0aC5jZWlsKHQudGN5MC9pKTtjLnRieDE9TWF0aC5jZWlsKHQudGN4MS9pLS41KTtjLnRieTE9TWF0aC5jZWlsKHQudGN5MS9pKTtjLnJlc29sdXRpb249cztidWlsZENvZGVibG9ja3MoMCxjLHIpO24ucHVzaChjKTtvLnB1c2goYyk7Yz17fTtjLnR5cGU9IkxIIjtjLnRieDA9TWF0aC5jZWlsKHQudGN4MC9pKTtjLnRieTA9TWF0aC5jZWlsKHQudGN5MC9pLS41KTtjLnRieDE9TWF0aC5jZWlsKHQudGN4MS9pKTtjLnRieTE9TWF0aC5jZWlsKHQudGN5MS9pLS41KTtjLnJlc29sdXRpb249cztidWlsZENvZGVibG9ja3MoMCxjLHIpO24ucHVzaChjKTtvLnB1c2goYyk7Yz17fTtjLnR5cGU9IkhIIjtjLnRieDA9TWF0aC5jZWlsKHQudGN4MC9pLS41KTtjLnRieTA9TWF0aC5jZWlsKHQudGN5MC9pLS41KTtjLnRieDE9TWF0aC5jZWlsKHQudGN4MS9pLS41KTtjLnRieTE9TWF0aC5jZWlsKHQudGN5MS9pLS41KTtjLnJlc29sdXRpb249cztidWlsZENvZGVibG9ja3MoMCxjLHIpO24ucHVzaChjKTtvLnB1c2goYyk7cy5zdWJiYW5kcz1vfX10LnJlc29sdXRpb25zPWk7dC5zdWJiYW5kcz1ufWNvbnN0IG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLnByb2dyZXNzaW9uT3JkZXI7c3dpdGNoKG4pe2Nhc2UgMDpyLnBhY2tldHNJdGVyYXRvcj1uZXcgTGF5ZXJSZXNvbHV0aW9uQ29tcG9uZW50UG9zaXRpb25JdGVyYXRvcihlKTticmVhaztjYXNlIDE6ci5wYWNrZXRzSXRlcmF0b3I9bmV3IFJlc29sdXRpb25MYXllckNvbXBvbmVudFBvc2l0aW9uSXRlcmF0b3IoZSk7YnJlYWs7Y2FzZSAyOnIucGFja2V0c0l0ZXJhdG9yPW5ldyBSZXNvbHV0aW9uUG9zaXRpb25Db21wb25lbnRMYXllckl0ZXJhdG9yKGUpO2JyZWFrO2Nhc2UgMzpyLnBhY2tldHNJdGVyYXRvcj1uZXcgUG9zaXRpb25Db21wb25lbnRSZXNvbHV0aW9uTGF5ZXJJdGVyYXRvcihlKTticmVhaztjYXNlIDQ6ci5wYWNrZXRzSXRlcmF0b3I9bmV3IENvbXBvbmVudFBvc2l0aW9uUmVzb2x1dGlvbkxheWVySXRlcmF0b3IoZSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSnB4RXJyb3IoYFVuc3VwcG9ydGVkIHByb2dyZXNzaW9uIG9yZGVyICR7bn1gKX19ZnVuY3Rpb24gcGFyc2VUaWxlUGFja2V0cyhlLHQsYSxyKXtsZXQgbixzPTAsbz0wLGM9ITE7ZnVuY3Rpb24gcmVhZEJpdHMoZSl7Zm9yKDtvPGU7KXtjb25zdCBlPXRbYStzXTtzKys7aWYoYyl7bj1uPDw3fGU7bys9NztjPSExfWVsc2V7bj1uPDw4fGU7bys9OH0yNTU9PT1lJiYoYz0hMCl9by09ZTtyZXR1cm4gbj4+Pm8mKDE8PGUpLTF9ZnVuY3Rpb24gc2tpcE1hcmtlcklmRXF1YWwoZSl7aWYoMjU1PT09dFthK3MtMV0mJnRbYStzXT09PWUpe3NraXBCeXRlcygxKTtyZXR1cm4hMH1pZigyNTU9PT10W2Erc10mJnRbYStzKzFdPT09ZSl7c2tpcEJ5dGVzKDIpO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHNraXBCeXRlcyhlKXtzKz1lfWZ1bmN0aW9uIGFsaWduVG9CeXRlKCl7bz0wO2lmKGMpe3MrKztjPSExfX1mdW5jdGlvbiByZWFkQ29kaW5ncGFzc2VzKCl7aWYoMD09PXJlYWRCaXRzKDEpKXJldHVybiAxO2lmKDA9PT1yZWFkQml0cygxKSlyZXR1cm4gMjtsZXQgZT1yZWFkQml0cygyKTtpZihlPDMpcmV0dXJuIGUrMztlPXJlYWRCaXRzKDUpO2lmKGU8MzEpcmV0dXJuIGUrNjtlPXJlYWRCaXRzKDcpO3JldHVybiBlKzM3fWNvbnN0IGw9ZS5jdXJyZW50VGlsZS5pbmRleCxoPWUudGlsZXNbbF0sdT1lLkNPRC5zb3BNYXJrZXJVc2VkLGQ9ZS5DT0QuZXBoTWFya2VyVXNlZCxmPWgucGFja2V0c0l0ZXJhdG9yO2Zvcig7czxyOyl7YWxpZ25Ub0J5dGUoKTt1JiZza2lwTWFya2VySWZFcXVhbCgxNDUpJiZza2lwQnl0ZXMoNCk7Y29uc3QgZT1mLm5leHRQYWNrZXQoKTtpZighcmVhZEJpdHMoMSkpY29udGludWU7Y29uc3Qgcj1lLmxheWVyTnVtYmVyLG49W107bGV0IG87Zm9yKGxldCB0PTAsYT1lLmNvZGVibG9ja3MubGVuZ3RoO3Q8YTt0Kyspe289ZS5jb2RlYmxvY2tzW3RdO2xldCBhPW8ucHJlY2luY3Q7Y29uc3Qgcz1vLmNieC1hLmNieE1pbixjPW8uY2J5LWEuY2J5TWluO2xldCBsLGgsdT0hMSxkPSExO2lmKHZvaWQgMCE9PW8uaW5jbHVkZWQpdT0hIXJlYWRCaXRzKDEpO2Vsc2V7YT1vLnByZWNpbmN0O2xldCBlO2lmKHZvaWQgMCE9PWEuaW5jbHVzaW9uVHJlZSllPWEuaW5jbHVzaW9uVHJlZTtlbHNle2NvbnN0IHQ9YS5jYnhNYXgtYS5jYnhNaW4rMSxpPWEuY2J5TWF4LWEuY2J5TWluKzE7ZT1uZXcgSW5jbHVzaW9uVHJlZSh0LGkscik7aD1uZXcgVGFnVHJlZSh0LGkpO2EuaW5jbHVzaW9uVHJlZT1lO2EuemVyb0JpdFBsYW5lc1RyZWU9aDtmb3IobGV0IGU9MDtlPHI7ZSsrKWlmKDAhPT1yZWFkQml0cygxKSl0aHJvdyBuZXcgSnB4RXJyb3IoIkludmFsaWQgdGFnIHRyZWUiKX1pZihlLnJlc2V0KHMsYyxyKSlmb3IoOzspe2lmKCFyZWFkQml0cygxKSl7ZS5pbmNyZW1lbnRWYWx1ZShyKTticmVha31sPSFlLm5leHRMZXZlbCgpO2lmKGwpe28uaW5jbHVkZWQ9ITA7dT1kPSEwO2JyZWFrfX19aWYoIXUpY29udGludWU7aWYoZCl7aD1hLnplcm9CaXRQbGFuZXNUcmVlO2gucmVzZXQocyxjKTtmb3IoOzspaWYocmVhZEJpdHMoMSkpe2w9IWgubmV4dExldmVsKCk7aWYobClicmVha31lbHNlIGguaW5jcmVtZW50VmFsdWUoKTtvLnplcm9CaXRQbGFuZXM9aC52YWx1ZX1jb25zdCBmPXJlYWRDb2RpbmdwYXNzZXMoKTtmb3IoO3JlYWRCaXRzKDEpOylvLkxibG9jaysrO2NvbnN0IGc9KDAsaS5sb2cyKShmKSxwPXJlYWRCaXRzKChmPDE8PGc/Zy0xOmcpK28uTGJsb2NrKTtuLnB1c2goe2NvZGVibG9jazpvLGNvZGluZ3Bhc3NlczpmLGRhdGFMZW5ndGg6cH0pfWFsaWduVG9CeXRlKCk7ZCYmc2tpcE1hcmtlcklmRXF1YWwoMTQ2KTtmb3IoO24ubGVuZ3RoPjA7KXtjb25zdCBlPW4uc2hpZnQoKTtvPWUuY29kZWJsb2NrO3ZvaWQgMD09PW8uZGF0YSYmKG8uZGF0YT1bXSk7by5kYXRhLnB1c2goe2RhdGE6dCxzdGFydDphK3MsZW5kOmErcytlLmRhdGFMZW5ndGgsY29kaW5ncGFzc2VzOmUuY29kaW5ncGFzc2VzfSk7cys9ZS5kYXRhTGVuZ3RofX1yZXR1cm4gc31mdW5jdGlvbiBjb3B5Q29lZmZpY2llbnRzKGUsdCxhLHIsaSxzLG8sYyxsKXtjb25zdCBoPXIudGJ4MCx1PXIudGJ5MCxkPXIudGJ4MS1yLnRieDAsZj1yLmNvZGVibG9ja3MsZz0iSCI9PT1yLnR5cGUuY2hhckF0KDApPzE6MCxwPSJIIj09PXIudHlwZS5jaGFyQXQoMSk/dDowO2ZvcihsZXQgYT0wLG09Zi5sZW5ndGg7YTxtOysrYSl7Y29uc3QgbT1mW2FdLGI9bS50YngxXy1tLnRieDBfLHk9bS50YnkxXy1tLnRieTBfO2lmKDA9PT1ifHwwPT09eSljb250aW51ZTtpZih2b2lkIDA9PT1tLmRhdGEpY29udGludWU7Y29uc3Qgdz1uZXcgQml0TW9kZWwoYix5LG0uc3ViYmFuZFR5cGUsbS56ZXJvQml0UGxhbmVzLHMpO2xldCBTPTI7Y29uc3QgeD1tLmRhdGE7bGV0IEMsayx2LEY9MCxPPTA7Zm9yKEM9MCxrPXgubGVuZ3RoO0M8aztDKyspe3Y9eFtDXTtGKz12LmVuZC12LnN0YXJ0O08rPXYuY29kaW5ncGFzc2VzfWNvbnN0IFQ9bmV3IFVpbnQ4QXJyYXkoRik7bGV0IE09MDtmb3IoQz0wLGs9eC5sZW5ndGg7QzxrO0MrKyl7dj14W0NdO2NvbnN0IGU9di5kYXRhLnN1YmFycmF5KHYuc3RhcnQsdi5lbmQpO1Quc2V0KGUsTSk7TSs9ZS5sZW5ndGh9Y29uc3QgRT1uZXcgbi5Bcml0aG1ldGljRGVjb2RlcihULDAsRik7dy5zZXREZWNvZGVyKEUpO2ZvcihDPTA7QzxPO0MrKyl7c3dpdGNoKFMpe2Nhc2UgMDp3LnJ1blNpZ25pZmljYW5jZVByb3BhZ2F0aW9uUGFzcygpO2JyZWFrO2Nhc2UgMTp3LnJ1bk1hZ25pdHVkZVJlZmluZW1lbnRQYXNzKCk7YnJlYWs7Y2FzZSAyOncucnVuQ2xlYW51cFBhc3MoKTtjJiZ3LmNoZWNrU2VnbWVudGF0aW9uU3ltYm9sKCl9bCYmdy5yZXNldCgpO1M9KFMrMSklM31sZXQgRD1tLnRieDBfLWgrKG0udGJ5MF8tdSkqZDtjb25zdCBOPXcuY29lZmZpY2VudHNTaWduLFI9dy5jb2VmZmljZW50c01hZ25pdHVkZSxMPXcuYml0c0RlY29kZWQsXz1vPzA6LjU7bGV0ICQsaixVO009MDtjb25zdCBYPSJMTCIhPT1yLnR5cGU7Zm9yKEM9MDtDPHk7QysrKXtjb25zdCBhPTIqKEQvZHwwKSoodC1kKStnK3A7Zm9yKCQ9MDskPGI7JCsrKXtqPVJbTV07aWYoMCE9PWope2o9KGorXykqaTswIT09TltNXSYmKGo9LWopO1U9TFtNXTtjb25zdCB0PVg/YSsoRDw8MSk6RDtlW3RdPW8mJlU+PXM/ajpqKigxPDxzLVUpfUQrKztNKyt9RCs9ZC1ifX19ZnVuY3Rpb24gdHJhbnNmb3JtVGlsZShlLHQsYSl7Y29uc3Qgcj10LmNvbXBvbmVudHNbYV0saT1yLmNvZGluZ1N0eWxlUGFyYW1ldGVycyxuPXIucXVhbnRpemF0aW9uUGFyYW1ldGVycyxvPWkuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50LGM9bi5TUHFjZHMsbD1uLnNjYWxhckV4cG91bmRlZCxoPW4uZ3VhcmRCaXRzLHU9aS5zZWdtZW50YXRpb25TeW1ib2xVc2VkLGQ9aS5yZXNldENvbnRleHRQcm9iYWJpbGl0aWVzLGY9ZS5jb21wb25lbnRzW2FdLnByZWNpc2lvbixnPWkucmV2ZXJzaWJsZVRyYW5zZm9ybWF0aW9uLHA9Zz9uZXcgUmV2ZXJzaWJsZVRyYW5zZm9ybTpuZXcgSXJyZXZlcnNpYmxlVHJhbnNmb3JtLG09W107bGV0IGI9MDtmb3IobGV0IGU9MDtlPD1vO2UrKyl7Y29uc3QgdD1yLnJlc29sdXRpb25zW2VdLGE9dC50cngxLXQudHJ4MCxpPXQudHJ5MS10LnRyeTAsbj1uZXcgRmxvYXQzMkFycmF5KGEqaSk7Zm9yKGxldCByPTAsaT10LnN1YmJhbmRzLmxlbmd0aDtyPGk7cisrKXtsZXQgaSxvO2lmKGwpe2k9Y1tiXS5tdTtvPWNbYl0uZXBzaWxvbjtiKyt9ZWxzZXtpPWNbMF0ubXU7bz1jWzBdLmVwc2lsb24rKGU+MD8xLWU6MCl9Y29uc3QgcD10LnN1YmJhbmRzW3JdLG09c1twLnR5cGVdO2NvcHlDb2VmZmljaWVudHMobixhLDAscCxnPzE6MioqKGYrbS1vKSooMStpLzIwNDgpLGgrby0xLGcsdSxkKX1tLnB1c2goe3dpZHRoOmEsaGVpZ2h0OmksaXRlbXM6bn0pfWNvbnN0IHk9cC5jYWxjdWxhdGUobSxyLnRjeDAsci50Y3kwKTtyZXR1cm57bGVmdDpyLnRjeDAsdG9wOnIudGN5MCx3aWR0aDp5LndpZHRoLGhlaWdodDp5LmhlaWdodCxpdGVtczp5Lml0ZW1zfX1mdW5jdGlvbiBpbml0aWFsaXplVGlsZShlLHQpe2NvbnN0IGE9ZS5TSVouQ3NpeixyPWUudGlsZXNbdF07Zm9yKGxldCB0PTA7dDxhO3QrKyl7Y29uc3QgYT1yLmNvbXBvbmVudHNbdF0saT12b2lkIDAhPT1lLmN1cnJlbnRUaWxlLlFDQ1t0XT9lLmN1cnJlbnRUaWxlLlFDQ1t0XTplLmN1cnJlbnRUaWxlLlFDRDthLnF1YW50aXphdGlvblBhcmFtZXRlcnM9aTtjb25zdCBuPXZvaWQgMCE9PWUuY3VycmVudFRpbGUuQ09DW3RdP2UuY3VycmVudFRpbGUuQ09DW3RdOmUuY3VycmVudFRpbGUuQ09EO2EuY29kaW5nU3R5bGVQYXJhbWV0ZXJzPW59ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzPWUuY3VycmVudFRpbGUuQ09EfWNsYXNzIFRhZ1RyZWV7Y29uc3RydWN0b3IoZSx0KXtjb25zdCBhPSgwLGkubG9nMikoTWF0aC5tYXgoZSx0KSkrMTt0aGlzLmxldmVscz1bXTtmb3IobGV0IHI9MDtyPGE7cisrKXtjb25zdCBhPXt3aWR0aDplLGhlaWdodDp0LGl0ZW1zOltdfTt0aGlzLmxldmVscy5wdXNoKGEpO2U9TWF0aC5jZWlsKGUvMik7dD1NYXRoLmNlaWwodC8yKX19cmVzZXQoZSx0KXtsZXQgYSxyPTAsaT0wO2Zvcig7cjx0aGlzLmxldmVscy5sZW5ndGg7KXthPXRoaXMubGV2ZWxzW3JdO2NvbnN0IG49ZSt0KmEud2lkdGg7aWYodm9pZCAwIT09YS5pdGVtc1tuXSl7aT1hLml0ZW1zW25dO2JyZWFrfWEuaW5kZXg9bjtlPj49MTt0Pj49MTtyKyt9ci0tO2E9dGhpcy5sZXZlbHNbcl07YS5pdGVtc1thLmluZGV4XT1pO3RoaXMuY3VycmVudExldmVsPXI7ZGVsZXRlIHRoaXMudmFsdWV9aW5jcmVtZW50VmFsdWUoKXtjb25zdCBlPXRoaXMubGV2ZWxzW3RoaXMuY3VycmVudExldmVsXTtlLml0ZW1zW2UuaW5kZXhdKyt9bmV4dExldmVsKCl7bGV0IGU9dGhpcy5jdXJyZW50TGV2ZWwsdD10aGlzLmxldmVsc1tlXTtjb25zdCBhPXQuaXRlbXNbdC5pbmRleF07ZS0tO2lmKGU8MCl7dGhpcy52YWx1ZT1hO3JldHVybiExfXRoaXMuY3VycmVudExldmVsPWU7dD10aGlzLmxldmVsc1tlXTt0Lml0ZW1zW3QuaW5kZXhdPWE7cmV0dXJuITB9fWNsYXNzIEluY2x1c2lvblRyZWV7Y29uc3RydWN0b3IoZSx0LGEpe2NvbnN0IHI9KDAsaS5sb2cyKShNYXRoLm1heChlLHQpKSsxO3RoaXMubGV2ZWxzPVtdO2ZvcihsZXQgaT0wO2k8cjtpKyspe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZSp0KTtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspcltlXT1hO2NvbnN0IGk9e3dpZHRoOmUsaGVpZ2h0OnQsaXRlbXM6cn07dGhpcy5sZXZlbHMucHVzaChpKTtlPU1hdGguY2VpbChlLzIpO3Q9TWF0aC5jZWlsKHQvMil9fXJlc2V0KGUsdCxhKXtsZXQgcj0wO2Zvcig7cjx0aGlzLmxldmVscy5sZW5ndGg7KXtjb25zdCBpPXRoaXMubGV2ZWxzW3JdLG49ZSt0Kmkud2lkdGg7aS5pbmRleD1uO2NvbnN0IHM9aS5pdGVtc1tuXTtpZigyNTU9PT1zKWJyZWFrO2lmKHM+YSl7dGhpcy5jdXJyZW50TGV2ZWw9cjt0aGlzLnByb3BhZ2F0ZVZhbHVlcygpO3JldHVybiExfWU+Pj0xO3Q+Pj0xO3IrK310aGlzLmN1cnJlbnRMZXZlbD1yLTE7cmV0dXJuITB9aW5jcmVtZW50VmFsdWUoZSl7Y29uc3QgdD10aGlzLmxldmVsc1t0aGlzLmN1cnJlbnRMZXZlbF07dC5pdGVtc1t0LmluZGV4XT1lKzE7dGhpcy5wcm9wYWdhdGVWYWx1ZXMoKX1wcm9wYWdhdGVWYWx1ZXMoKXtsZXQgZT10aGlzLmN1cnJlbnRMZXZlbCx0PXRoaXMubGV2ZWxzW2VdO2NvbnN0IGE9dC5pdGVtc1t0LmluZGV4XTtmb3IoOy0tZT49MDspe3Q9dGhpcy5sZXZlbHNbZV07dC5pdGVtc1t0LmluZGV4XT1hfX1uZXh0TGV2ZWwoKXtsZXQgZT10aGlzLmN1cnJlbnRMZXZlbCx0PXRoaXMubGV2ZWxzW2VdO2NvbnN0IGE9dC5pdGVtc1t0LmluZGV4XTt0Lml0ZW1zW3QuaW5kZXhdPTI1NTtlLS07aWYoZTwwKXJldHVybiExO3RoaXMuY3VycmVudExldmVsPWU7dD10aGlzLmxldmVsc1tlXTt0Lml0ZW1zW3QuaW5kZXhdPWE7cmV0dXJuITB9fWNsYXNzIEJpdE1vZGVse3N0YXRpYyBVTklGT1JNX0NPTlRFWFQ9MTc7c3RhdGljIFJVTkxFTkdUSF9DT05URVhUPTE4O3N0YXRpYyBMTEFuZExIQ29udGV4dHNMYWJlbD1uZXcgVWludDhBcnJheShbMCw1LDgsMCwzLDcsOCwwLDQsNyw4LDAsMCwwLDAsMCwxLDYsOCwwLDMsNyw4LDAsNCw3LDgsMCwwLDAsMCwwLDIsNiw4LDAsMyw3LDgsMCw0LDcsOCwwLDAsMCwwLDAsMiw2LDgsMCwzLDcsOCwwLDQsNyw4LDAsMCwwLDAsMCwyLDYsOCwwLDMsNyw4LDAsNCw3LDhdKTtzdGF0aWMgSExDb250ZXh0TGFiZWw9bmV3IFVpbnQ4QXJyYXkoWzAsMyw0LDAsNSw3LDcsMCw4LDgsOCwwLDAsMCwwLDAsMSwzLDQsMCw2LDcsNywwLDgsOCw4LDAsMCwwLDAsMCwyLDMsNCwwLDYsNyw3LDAsOCw4LDgsMCwwLDAsMCwwLDIsMyw0LDAsNiw3LDcsMCw4LDgsOCwwLDAsMCwwLDAsMiwzLDQsMCw2LDcsNywwLDgsOCw4XSk7c3RhdGljIEhIQ29udGV4dExhYmVsPW5ldyBVaW50OEFycmF5KFswLDEsMiwwLDEsMiwyLDAsMiwyLDIsMCwwLDAsMCwwLDMsNCw1LDAsNCw1LDUsMCw1LDUsNSwwLDAsMCwwLDAsNiw3LDcsMCw3LDcsNywwLDcsNyw3LDAsMCwwLDAsMCw4LDgsOCwwLDgsOCw4LDAsOCw4LDgsMCwwLDAsMCwwLDgsOCw4LDAsOCw4LDgsMCw4LDgsOF0pO2NvbnN0cnVjdG9yKGUsdCxhLHIsaSl7dGhpcy53aWR0aD1lO3RoaXMuaGVpZ2h0PXQ7bGV0IG47bj0iSEgiPT09YT9CaXRNb2RlbC5ISENvbnRleHRMYWJlbDoiSEwiPT09YT9CaXRNb2RlbC5ITENvbnRleHRMYWJlbDpCaXRNb2RlbC5MTEFuZExIQ29udGV4dHNMYWJlbDt0aGlzLmNvbnRleHRMYWJlbFRhYmxlPW47Y29uc3Qgcz1lKnQ7dGhpcy5uZWlnaGJvcnNTaWduaWZpY2FuY2U9bmV3IFVpbnQ4QXJyYXkocyk7dGhpcy5jb2VmZmljZW50c1NpZ249bmV3IFVpbnQ4QXJyYXkocyk7bGV0IG87bz1pPjE0P25ldyBVaW50MzJBcnJheShzKTppPjY/bmV3IFVpbnQxNkFycmF5KHMpOm5ldyBVaW50OEFycmF5KHMpO3RoaXMuY29lZmZpY2VudHNNYWduaXR1ZGU9bzt0aGlzLnByb2Nlc3NpbmdGbGFncz1uZXcgVWludDhBcnJheShzKTtjb25zdCBjPW5ldyBVaW50OEFycmF5KHMpO2lmKDAhPT1yKWZvcihsZXQgZT0wO2U8cztlKyspY1tlXT1yO3RoaXMuYml0c0RlY29kZWQ9Yzt0aGlzLnJlc2V0KCl9c2V0RGVjb2RlcihlKXt0aGlzLmRlY29kZXI9ZX1yZXNldCgpe3RoaXMuY29udGV4dHM9bmV3IEludDhBcnJheSgxOSk7dGhpcy5jb250ZXh0c1swXT04O3RoaXMuY29udGV4dHNbQml0TW9kZWwuVU5JRk9STV9DT05URVhUXT05Mjt0aGlzLmNvbnRleHRzW0JpdE1vZGVsLlJVTkxFTkdUSF9DT05URVhUXT02fXNldE5laWdoYm9yc1NpZ25pZmljYW5jZShlLHQsYSl7Y29uc3Qgcj10aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZSxpPXRoaXMud2lkdGgsbj10aGlzLmhlaWdodCxzPXQ+MCxvPXQrMTxpO2xldCBjO2lmKGU+MCl7Yz1hLWk7cyYmKHJbYy0xXSs9MTYpO28mJihyW2MrMV0rPTE2KTtyW2NdKz00fWlmKGUrMTxuKXtjPWEraTtzJiYocltjLTFdKz0xNik7byYmKHJbYysxXSs9MTYpO3JbY10rPTR9cyYmKHJbYS0xXSs9MSk7byYmKHJbYSsxXSs9MSk7clthXXw9MTI4fXJ1blNpZ25pZmljYW5jZVByb3BhZ2F0aW9uUGFzcygpe2NvbnN0IGU9dGhpcy5kZWNvZGVyLHQ9dGhpcy53aWR0aCxhPXRoaXMuaGVpZ2h0LHI9dGhpcy5jb2VmZmljZW50c01hZ25pdHVkZSxpPXRoaXMuY29lZmZpY2VudHNTaWduLG49dGhpcy5uZWlnaGJvcnNTaWduaWZpY2FuY2Uscz10aGlzLnByb2Nlc3NpbmdGbGFncyxvPXRoaXMuY29udGV4dHMsYz10aGlzLmNvbnRleHRMYWJlbFRhYmxlLGw9dGhpcy5iaXRzRGVjb2RlZDtmb3IobGV0IGg9MDtoPGE7aCs9NClmb3IobGV0IHU9MDt1PHQ7dSsrKXtsZXQgZD1oKnQrdTtmb3IobGV0IGY9MDtmPDQ7ZisrLGQrPXQpe2NvbnN0IHQ9aCtmO2lmKHQ+PWEpYnJlYWs7c1tkXSY9LTI7aWYocltkXXx8IW5bZF0pY29udGludWU7Y29uc3QgZz1jW25bZF1dO2lmKGUucmVhZEJpdChvLGcpKXtjb25zdCBlPXRoaXMuZGVjb2RlU2lnbkJpdCh0LHUsZCk7aVtkXT1lO3JbZF09MTt0aGlzLnNldE5laWdoYm9yc1NpZ25pZmljYW5jZSh0LHUsZCk7c1tkXXw9Mn1sW2RdKys7c1tkXXw9MX19fWRlY29kZVNpZ25CaXQoZSx0LGEpe2NvbnN0IHI9dGhpcy53aWR0aCxpPXRoaXMuaGVpZ2h0LG49dGhpcy5jb2VmZmljZW50c01hZ25pdHVkZSxzPXRoaXMuY29lZmZpY2VudHNTaWduO2xldCBvLGMsbCxoLHUsZDtoPXQ+MCYmMCE9PW5bYS0xXTtpZih0KzE8ciYmMCE9PW5bYSsxXSl7bD1zW2ErMV07aWYoaCl7Yz1zW2EtMV07bz0xLWwtY31lbHNlIG89MS1sLWx9ZWxzZSBpZihoKXtjPXNbYS0xXTtvPTEtYy1jfWVsc2Ugbz0wO2NvbnN0IGY9MypvO2g9ZT4wJiYwIT09blthLXJdO2lmKGUrMTxpJiYwIT09blthK3JdKXtsPXNbYStyXTtpZihoKXtjPXNbYS1yXTtvPTEtbC1jK2Z9ZWxzZSBvPTEtbC1sK2Z9ZWxzZSBpZihoKXtjPXNbYS1yXTtvPTEtYy1jK2Z9ZWxzZSBvPWY7aWYobz49MCl7dT05K287ZD10aGlzLmRlY29kZXIucmVhZEJpdCh0aGlzLmNvbnRleHRzLHUpfWVsc2V7dT05LW87ZD0xXnRoaXMuZGVjb2Rlci5yZWFkQml0KHRoaXMuY29udGV4dHMsdSl9cmV0dXJuIGR9cnVuTWFnbml0dWRlUmVmaW5lbWVudFBhc3MoKXtjb25zdCBlPXRoaXMuZGVjb2Rlcix0PXRoaXMud2lkdGgsYT10aGlzLmhlaWdodCxyPXRoaXMuY29lZmZpY2VudHNNYWduaXR1ZGUsaT10aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZSxuPXRoaXMuY29udGV4dHMscz10aGlzLmJpdHNEZWNvZGVkLG89dGhpcy5wcm9jZXNzaW5nRmxhZ3MsYz10KmEsbD00KnQ7Zm9yKGxldCBhLGg9MDtoPGM7aD1hKXthPU1hdGgubWluKGMsaCtsKTtmb3IobGV0IGM9MDtjPHQ7YysrKWZvcihsZXQgbD1oK2M7bDxhO2wrPXQpe2lmKCFyW2xdfHwwIT0oMSZvW2xdKSljb250aW51ZTtsZXQgdD0xNjtpZigwIT0oMiZvW2xdKSl7b1tsXV49Mjt0PTA9PT0oMTI3JmlbbF0pPzE1OjE0fWNvbnN0IGE9ZS5yZWFkQml0KG4sdCk7cltsXT1yW2xdPDwxfGE7c1tsXSsrO29bbF18PTF9fX1ydW5DbGVhbnVwUGFzcygpe2NvbnN0IGU9dGhpcy5kZWNvZGVyLHQ9dGhpcy53aWR0aCxhPXRoaXMuaGVpZ2h0LHI9dGhpcy5uZWlnaGJvcnNTaWduaWZpY2FuY2UsaT10aGlzLmNvZWZmaWNlbnRzTWFnbml0dWRlLG49dGhpcy5jb2VmZmljZW50c1NpZ24scz10aGlzLmNvbnRleHRzLG89dGhpcy5jb250ZXh0TGFiZWxUYWJsZSxjPXRoaXMuYml0c0RlY29kZWQsbD10aGlzLnByb2Nlc3NpbmdGbGFncyxoPXQsdT0yKnQsZD0zKnQ7bGV0IGY7Zm9yKGxldCBnPTA7ZzxhO2c9Zil7Zj1NYXRoLm1pbihnKzQsYSk7Y29uc3QgcD1nKnQsbT1nKzM8YTtmb3IobGV0IGE9MDthPHQ7YSsrKXtjb25zdCBiPXArYTtsZXQgeSx3PTAsUz1iLHg9ZztpZihtJiYwPT09bFtiXSYmMD09PWxbYitoXSYmMD09PWxbYit1XSYmMD09PWxbYitkXSYmMD09PXJbYl0mJjA9PT1yW2IraF0mJjA9PT1yW2IrdV0mJjA9PT1yW2IrZF0pe2lmKCFlLnJlYWRCaXQocyxCaXRNb2RlbC5SVU5MRU5HVEhfQ09OVEVYVCkpe2NbYl0rKztjW2IraF0rKztjW2IrdV0rKztjW2IrZF0rKztjb250aW51ZX13PWUucmVhZEJpdChzLEJpdE1vZGVsLlVOSUZPUk1fQ09OVEVYVCk8PDF8ZS5yZWFkQml0KHMsQml0TW9kZWwuVU5JRk9STV9DT05URVhUKTtpZigwIT09dyl7eD1nK3c7Uys9dyp0fXk9dGhpcy5kZWNvZGVTaWduQml0KHgsYSxTKTtuW1NdPXk7aVtTXT0xO3RoaXMuc2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlKHgsYSxTKTtsW1NdfD0yO1M9Yjtmb3IobGV0IGU9ZztlPD14O2UrKyxTKz10KWNbU10rKzt3Kyt9Zm9yKHg9Zyt3O3g8Zjt4KyssUys9dCl7aWYoaVtTXXx8MCE9KDEmbFtTXSkpY29udGludWU7Y29uc3QgdD1vW3JbU11dO2lmKDE9PT1lLnJlYWRCaXQocyx0KSl7eT10aGlzLmRlY29kZVNpZ25CaXQoeCxhLFMpO25bU109eTtpW1NdPTE7dGhpcy5zZXROZWlnaGJvcnNTaWduaWZpY2FuY2UoeCxhLFMpO2xbU118PTJ9Y1tTXSsrfX19fWNoZWNrU2VnbWVudGF0aW9uU3ltYm9sKCl7Y29uc3QgZT10aGlzLmRlY29kZXIsdD10aGlzLmNvbnRleHRzO2lmKDEwIT09KGUucmVhZEJpdCh0LEJpdE1vZGVsLlVOSUZPUk1fQ09OVEVYVCk8PDN8ZS5yZWFkQml0KHQsQml0TW9kZWwuVU5JRk9STV9DT05URVhUKTw8MnxlLnJlYWRCaXQodCxCaXRNb2RlbC5VTklGT1JNX0NPTlRFWFQpPDwxfGUucmVhZEJpdCh0LEJpdE1vZGVsLlVOSUZPUk1fQ09OVEVYVCkpKXRocm93IG5ldyBKcHhFcnJvcigiSW52YWxpZCBzZWdtZW50YXRpb24gc3ltYm9sIil9fWNsYXNzIFRyYW5zZm9ybXtjb25zdHJ1Y3Rvcigpe3RoaXMuY29uc3RydWN0b3I9PT1UcmFuc2Zvcm0mJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBUcmFuc2Zvcm0uIil9Y2FsY3VsYXRlKGUsdCxhKXtsZXQgcj1lWzBdO2ZvcihsZXQgaT0xLG49ZS5sZW5ndGg7aTxuO2krKylyPXRoaXMuaXRlcmF0ZShyLGVbaV0sdCxhKTtyZXR1cm4gcn1leHRlbmQoZSx0LGEpe2xldCByPXQtMSxpPXQrMSxuPXQrYS0yLHM9dCthO2Vbci0tXT1lW2krK107ZVtzKytdPWVbbi0tXTtlW3ItLV09ZVtpKytdO2VbcysrXT1lW24tLV07ZVtyLS1dPWVbaSsrXTtlW3MrK109ZVtuLS1dO2Vbcl09ZVtpXTtlW3NdPWVbbl19ZmlsdGVyKGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBmaWx0ZXJgIGNhbGxlZCIpfWl0ZXJhdGUoZSx0LGEscil7Y29uc3QgaT1lLndpZHRoLG49ZS5oZWlnaHQ7bGV0IHM9ZS5pdGVtcztjb25zdCBvPXQud2lkdGgsYz10LmhlaWdodCxsPXQuaXRlbXM7bGV0IGgsdSxkLGYsZyxwO2ZvcihkPTAsaD0wO2g8bjtoKyspe2Y9MipoKm87Zm9yKHU9MDt1PGk7dSsrLGQrKyxmKz0yKWxbZl09c1tkXX1zPWUuaXRlbXM9bnVsbDtjb25zdCBtPW5ldyBGbG9hdDMyQXJyYXkobys4KTtpZigxPT09byl7aWYoMCE9KDEmYSkpZm9yKHA9MCxkPTA7cDxjO3ArKyxkKz1vKWxbZF0qPS41fWVsc2UgZm9yKHA9MCxkPTA7cDxjO3ArKyxkKz1vKXttLnNldChsLnN1YmFycmF5KGQsZCtvKSw0KTt0aGlzLmV4dGVuZChtLDQsbyk7dGhpcy5maWx0ZXIobSw0LG8pO2wuc2V0KG0uc3ViYXJyYXkoNCw0K28pLGQpfWxldCBiPTE2O2NvbnN0IHk9W107Zm9yKGg9MDtoPGI7aCsrKXkucHVzaChuZXcgRmxvYXQzMkFycmF5KGMrOCkpO2xldCB3LFM9MDtlPTQrYztpZigxPT09Yyl7aWYoMCE9KDEmcikpZm9yKGc9MDtnPG87ZysrKWxbZ10qPS41fWVsc2UgZm9yKGc9MDtnPG87ZysrKXtpZigwPT09Uyl7Yj1NYXRoLm1pbihvLWcsYik7Zm9yKGQ9ZyxmPTQ7ZjxlO2QrPW8sZisrKWZvcih3PTA7dzxiO3crKyl5W3ddW2ZdPWxbZCt3XTtTPWJ9Uy0tO2NvbnN0IHQ9eVtTXTt0aGlzLmV4dGVuZCh0LDQsYyk7dGhpcy5maWx0ZXIodCw0LGMpO2lmKDA9PT1TKXtkPWctYisxO2ZvcihmPTQ7ZjxlO2QrPW8sZisrKWZvcih3PTA7dzxiO3crKylsW2Qrd109eVt3XVtmXX19cmV0dXJue3dpZHRoOm8saGVpZ2h0OmMsaXRlbXM6bH19fWNsYXNzIElycmV2ZXJzaWJsZVRyYW5zZm9ybSBleHRlbmRzIFRyYW5zZm9ybXtmaWx0ZXIoZSx0LGEpe2NvbnN0IHI9YT4+MTtsZXQgaSxuLHMsbztjb25zdCBjPS0xLjU4NjEzNDM0MjA1OTkyNCxsPS0uMDUyOTgwMTE4NTcyOTYxLGg9Ljg4MjkxMTA3NTUzMDkzNCx1PS40NDM1MDY4NTIwNDM5NzEsZD0xLjIzMDE3NDEwNDkxNDAwMTtpPSh0fD0wKS0zO2ZvcihuPXIrNDtuLS07aSs9MillW2ldKj0uODEyODkzMDY2MTE1OTYwOTtpPXQtMjtzPXUqZVtpLTFdO2ZvcihuPXIrMztuLS07aSs9Mil7bz11KmVbaSsxXTtlW2ldPWQqZVtpXS1zLW87aWYoIW4tLSlicmVhaztpKz0yO3M9dSplW2krMV07ZVtpXT1kKmVbaV0tcy1vfWk9dC0xO3M9aCplW2ktMV07Zm9yKG49cisyO24tLTtpKz0yKXtvPWgqZVtpKzFdO2VbaV0tPXMrbztpZighbi0tKWJyZWFrO2krPTI7cz1oKmVbaSsxXTtlW2ldLT1zK299aT10O3M9bCplW2ktMV07Zm9yKG49cisxO24tLTtpKz0yKXtvPWwqZVtpKzFdO2VbaV0tPXMrbztpZighbi0tKWJyZWFrO2krPTI7cz1sKmVbaSsxXTtlW2ldLT1zK299aWYoMCE9PXIpe2k9dCsxO3M9YyplW2ktMV07Zm9yKG49cjtuLS07aSs9Mil7bz1jKmVbaSsxXTtlW2ldLT1zK287aWYoIW4tLSlicmVhaztpKz0yO3M9YyplW2krMV07ZVtpXS09cytvfX19fWNsYXNzIFJldmVyc2libGVUcmFuc2Zvcm0gZXh0ZW5kcyBUcmFuc2Zvcm17ZmlsdGVyKGUsdCxhKXtjb25zdCByPWE+PjE7bGV0IGksbjtmb3IoaT10fD0wLG49cisxO24tLTtpKz0yKWVbaV0tPWVbaS0xXStlW2krMV0rMj4+Mjtmb3IoaT10KzEsbj1yO24tLTtpKz0yKWVbaV0rPWVbaS0xXStlW2krMV0+PjF9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkxaV1N0cmVhbT12b2lkIDA7dmFyIHI9YSgxOCk7Y2xhc3MgTFpXU3RyZWFtIGV4dGVuZHMgci5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmNhY2hlZERhdGE9MDt0aGlzLmJpdHNDYWNoZWQ9MDtjb25zdCByPTQwOTYsaT17ZWFybHlDaGFuZ2U6YSxjb2RlTGVuZ3RoOjksbmV4dENvZGU6MjU4LGRpY3Rpb25hcnlWYWx1ZXM6bmV3IFVpbnQ4QXJyYXkociksZGljdGlvbmFyeUxlbmd0aHM6bmV3IFVpbnQxNkFycmF5KHIpLGRpY3Rpb25hcnlQcmV2Q29kZXM6bmV3IFVpbnQxNkFycmF5KHIpLGN1cnJlbnRTZXF1ZW5jZTpuZXcgVWludDhBcnJheShyKSxjdXJyZW50U2VxdWVuY2VMZW5ndGg6MH07Zm9yKGxldCBlPTA7ZTwyNTY7KytlKXtpLmRpY3Rpb25hcnlWYWx1ZXNbZV09ZTtpLmRpY3Rpb25hcnlMZW5ndGhzW2VdPTF9dGhpcy5sendTdGF0ZT1pfXJlYWRCaXRzKGUpe2xldCB0PXRoaXMuYml0c0NhY2hlZCxhPXRoaXMuY2FjaGVkRGF0YTtmb3IoO3Q8ZTspe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZSgpO2lmKC0xPT09ZSl7dGhpcy5lb2Y9ITA7cmV0dXJuIG51bGx9YT1hPDw4fGU7dCs9OH10aGlzLmJpdHNDYWNoZWQ9dC09ZTt0aGlzLmNhY2hlZERhdGE9YTt0aGlzLmxhc3RDb2RlPW51bGw7cmV0dXJuIGE+Pj50JigxPDxlKS0xfXJlYWRCbG9jaygpe2xldCBlLHQsYSxyPTEwMjQ7Y29uc3QgaT10aGlzLmx6d1N0YXRlO2lmKCFpKXJldHVybjtjb25zdCBuPWkuZWFybHlDaGFuZ2U7bGV0IHM9aS5uZXh0Q29kZTtjb25zdCBvPWkuZGljdGlvbmFyeVZhbHVlcyxjPWkuZGljdGlvbmFyeUxlbmd0aHMsbD1pLmRpY3Rpb25hcnlQcmV2Q29kZXM7bGV0IGg9aS5jb2RlTGVuZ3RoLHU9aS5wcmV2Q29kZTtjb25zdCBkPWkuY3VycmVudFNlcXVlbmNlO2xldCBmPWkuY3VycmVudFNlcXVlbmNlTGVuZ3RoLGc9MCxwPXRoaXMuYnVmZmVyTGVuZ3RoLG09dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrcik7Zm9yKGU9MDtlPDUxMjtlKyspe2NvbnN0IGU9dGhpcy5yZWFkQml0cyhoKSxpPWY+MDtpZihlPDI1Nil7ZFswXT1lO2Y9MX1lbHNle2lmKCEoZT49MjU4KSl7aWYoMjU2PT09ZSl7aD05O3M9MjU4O2Y9MDtjb250aW51ZX10aGlzLmVvZj0hMDtkZWxldGUgdGhpcy5sendTdGF0ZTticmVha31pZihlPHMpe2Y9Y1tlXTtmb3IodD1mLTEsYT1lO3Q+PTA7dC0tKXtkW3RdPW9bYV07YT1sW2FdfX1lbHNlIGRbZisrXT1kWzBdfWlmKGkpe2xbc109dTtjW3NdPWNbdV0rMTtvW3NdPWRbMF07cysrO2g9cytuJnMrbi0xP2g6MHxNYXRoLm1pbihNYXRoLmxvZyhzK24pLy42OTMxNDcxODA1NTk5NDUzKzEsMTIpfXU9ZTtnKz1mO2lmKHI8Zyl7ZG97cis9NTEyfXdoaWxlKHI8Zyk7bT10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCtyKX1mb3IodD0wO3Q8Zjt0KyspbVtwKytdPWRbdF19aS5uZXh0Q29kZT1zO2kuY29kZUxlbmd0aD1oO2kucHJldkNvZGU9dTtpLmN1cnJlbnRTZXF1ZW5jZUxlbmd0aD1mO3RoaXMuYnVmZmVyTGVuZ3RoPXB9fXQuTFpXU3RyZWFtPUxaV1N0cmVhbX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlByZWRpY3RvclN0cmVhbT12b2lkIDA7dmFyIHI9YSgxOCksaT1hKDQpLG49YSgyKTtjbGFzcyBQcmVkaWN0b3JTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7aWYoIShhIGluc3RhbmNlb2YgaS5EaWN0KSlyZXR1cm4gZTtjb25zdCByPXRoaXMucHJlZGljdG9yPWEuZ2V0KCJQcmVkaWN0b3IiKXx8MTtpZihyPD0xKXJldHVybiBlO2lmKDIhPT1yJiYocjwxMHx8cj4xNSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYFVuc3VwcG9ydGVkIHByZWRpY3RvcjogJHtyfWApO3RoaXMucmVhZEJsb2NrPTI9PT1yP3RoaXMucmVhZEJsb2NrVGlmZjp0aGlzLnJlYWRCbG9ja1BuZzt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7Y29uc3Qgcz10aGlzLmNvbG9ycz1hLmdldCgiQ29sb3JzIil8fDEsbz10aGlzLmJpdHM9YS5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKXx8OCxjPXRoaXMuY29sdW1ucz1hLmdldCgiQ29sdW1ucyIpfHwxO3RoaXMucGl4Qnl0ZXM9cypvKzc+PjM7dGhpcy5yb3dCeXRlcz1jKnMqbys3Pj4zO3JldHVybiB0aGlzfXJlYWRCbG9ja1RpZmYoKXtjb25zdCBlPXRoaXMucm93Qnl0ZXMsdD10aGlzLmJ1ZmZlckxlbmd0aCxhPXRoaXMuZW5zdXJlQnVmZmVyKHQrZSkscj10aGlzLmJpdHMsaT10aGlzLmNvbG9ycyxuPXRoaXMuc3RyLmdldEJ5dGVzKGUpO3RoaXMuZW9mPSFuLmxlbmd0aDtpZih0aGlzLmVvZilyZXR1cm47bGV0IHMsbz0wLGM9MCxsPTAsaD0wLHU9dDtpZigxPT09ciYmMT09PWkpZm9yKHM9MDtzPGU7KytzKXtsZXQgZT1uW3NdXm87ZV49ZT4+MTtlXj1lPj4yO2VePWU+PjQ7bz0oMSZlKTw8NzthW3UrK109ZX1lbHNlIGlmKDg9PT1yKXtmb3Iocz0wO3M8aTsrK3MpYVt1KytdPW5bc107Zm9yKDtzPGU7KytzKXthW3VdPWFbdS1pXStuW3NdO3UrK319ZWxzZSBpZigxNj09PXIpe2NvbnN0IHQ9MippO2ZvcihzPTA7czx0OysrcylhW3UrK109bltzXTtmb3IoO3M8ZTtzKz0yKXtjb25zdCBlPSgoMjU1Jm5bc10pPDw4KSsoMjU1Jm5bcysxXSkrKCgyNTUmYVt1LXRdKTw8OCkrKDI1NSZhW3UtdCsxXSk7YVt1KytdPWU+PjgmMjU1O2FbdSsrXT0yNTUmZX19ZWxzZXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGkrMSksdT0oMTw8ciktMTtsZXQgZD0wLGY9dDtjb25zdCBnPXRoaXMuY29sdW1ucztmb3Iocz0wO3M8ZzsrK3MpZm9yKGxldCB0PTA7dDxpOysrdCl7aWYobDxyKXtvPW88PDh8MjU1Jm5bZCsrXTtsKz04fWVbdF09ZVt0XSsobz4+bC1yKSZ1O2wtPXI7Yz1jPDxyfGVbdF07aCs9cjtpZihoPj04KXthW2YrK109Yz4+aC04JjI1NTtoLT04fX1oPjAmJihhW2YrK109KGM8PDgtaCkrKG8mKDE8PDgtaCktMSkpfXRoaXMuYnVmZmVyTGVuZ3RoKz1lfXJlYWRCbG9ja1BuZygpe2NvbnN0IGU9dGhpcy5yb3dCeXRlcyx0PXRoaXMucGl4Qnl0ZXMsYT10aGlzLnN0ci5nZXRCeXRlKCkscj10aGlzLnN0ci5nZXRCeXRlcyhlKTt0aGlzLmVvZj0hci5sZW5ndGg7aWYodGhpcy5lb2YpcmV0dXJuO2NvbnN0IGk9dGhpcy5idWZmZXJMZW5ndGgscz10aGlzLmVuc3VyZUJ1ZmZlcihpK2UpO2xldCBvPXMuc3ViYXJyYXkoaS1lLGkpOzA9PT1vLmxlbmd0aCYmKG89bmV3IFVpbnQ4QXJyYXkoZSkpO2xldCBjLGwsaCx1PWk7c3dpdGNoKGEpe2Nhc2UgMDpmb3IoYz0wO2M8ZTsrK2Mpc1t1KytdPXJbY107YnJlYWs7Y2FzZSAxOmZvcihjPTA7Yzx0OysrYylzW3UrK109cltjXTtmb3IoO2M8ZTsrK2Mpe3NbdV09c1t1LXRdK3JbY10mMjU1O3UrK31icmVhaztjYXNlIDI6Zm9yKGM9MDtjPGU7KytjKXNbdSsrXT1vW2NdK3JbY10mMjU1O2JyZWFrO2Nhc2UgMzpmb3IoYz0wO2M8dDsrK2Mpc1t1KytdPShvW2NdPj4xKStyW2NdO2Zvcig7YzxlOysrYyl7c1t1XT0ob1tjXStzW3UtdF0+PjEpK3JbY10mMjU1O3UrK31icmVhaztjYXNlIDQ6Zm9yKGM9MDtjPHQ7KytjKXtsPW9bY107aD1yW2NdO3NbdSsrXT1sK2h9Zm9yKDtjPGU7KytjKXtsPW9bY107Y29uc3QgZT1vW2MtdF0sYT1zW3UtdF0saT1hK2wtZTtsZXQgbj1pLWE7bjwwJiYobj0tbik7bGV0IGQ9aS1sO2Q8MCYmKGQ9LWQpO2xldCBmPWktZTtmPDAmJihmPS1mKTtoPXJbY107c1t1KytdPW48PWQmJm48PWY/YStoOmQ8PWY/bCtoOmUraH1icmVhaztkZWZhdWx0OnRocm93IG5ldyBuLkZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwcmVkaWN0b3I6ICR7YX1gKX10aGlzLmJ1ZmZlckxlbmd0aCs9ZX19dC5QcmVkaWN0b3JTdHJlYW09UHJlZGljdG9yU3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUnVuTGVuZ3RoU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDE4KTtjbGFzcyBSdW5MZW5ndGhTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdH1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKDIpO2lmKCFlfHxlLmxlbmd0aDwyfHwxMjg9PT1lWzBdKXt0aGlzLmVvZj0hMDtyZXR1cm59bGV0IHQsYT10aGlzLmJ1ZmZlckxlbmd0aCxyPWVbMF07aWYocjwxMjgpe3Q9dGhpcy5lbnN1cmVCdWZmZXIoYStyKzEpO3RbYSsrXT1lWzFdO2lmKHI+MCl7Y29uc3QgZT10aGlzLnN0ci5nZXRCeXRlcyhyKTt0LnNldChlLGEpO2ErPXJ9fWVsc2V7cj0yNTctcjtjb25zdCBpPWVbMV07dD10aGlzLmVuc3VyZUJ1ZmZlcihhK3IrMSk7Zm9yKGxldCBlPTA7ZTxyO2UrKyl0W2ErK109aX10aGlzLmJ1ZmZlckxlbmd0aD1hfX10LlJ1bkxlbmd0aFN0cmVhbT1SdW5MZW5ndGhTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Gb250PXQuRXJyb3JGb250PXZvaWQgMDt2YXIgcj1hKDIpLGk9YSgzNSksbj1hKDM4KSxzPWEoNDApLG89YSgzOSksYz1hKDM3KSxsPWEoNDEpLGg9YSg0MiksdT1hKDQzKSxkPWEoNDQpLGY9YSg0NSksZz1hKDQ2KSxwPWEoMTQpLG09YSg0NyksYj1hKDMpLHk9YSg4KSx3PWEoNDgpO2NvbnN0IFM9W1s1NzM0NCw2Mzc0M10sWzEwNDg1NzYsMTExNDEwOV1dLHg9MWUzLEM9WyJhc2NlbnQiLCJiYm94IiwiYmxhY2siLCJib2xkIiwiY2hhclByb2NPcGVyYXRvckxpc3QiLCJjb21wb3NpdGUiLCJjc3NGb250SW5mbyIsImRhdGEiLCJkZWZhdWx0Vk1ldHJpY3MiLCJkZWZhdWx0V2lkdGgiLCJkZXNjZW50IiwiZmFsbGJhY2tOYW1lIiwiZm9udE1hdHJpeCIsImlzSW52YWxpZFBERmpzRm9udCIsImlzVHlwZTNGb250IiwiaXRhbGljIiwibG9hZGVkTmFtZSIsIm1pbWV0eXBlIiwibWlzc2luZ0ZpbGUiLCJuYW1lIiwicmVtZWFzdXJlIiwic3VidHlwZSIsInN5c3RlbUZvbnRJbmZvIiwidHlwZSIsInZlcnRpY2FsIl0saz1bImNNYXAiLCJkZWZhdWx0RW5jb2RpbmciLCJkaWZmZXJlbmNlcyIsImlzTW9ub3NwYWNlIiwiaXNTZXJpZkZvbnQiLCJpc1N5bWJvbGljRm9udCIsInNlYWNNYXAiLCJ0b0ZvbnRDaGFyIiwidG9Vbmljb2RlIiwidm1ldHJpY3MiLCJ3aWR0aHMiXTtmdW5jdGlvbiBhZGp1c3RXaWR0aHMoZSl7aWYoIWUuZm9udE1hdHJpeClyZXR1cm47aWYoZS5mb250TWF0cml4WzBdPT09ci5GT05UX0lERU5USVRZX01BVFJJWFswXSlyZXR1cm47Y29uc3QgdD0uMDAxL2UuZm9udE1hdHJpeFswXSxhPWUud2lkdGhzO2Zvcihjb25zdCBlIGluIGEpYVtlXSo9dDtlLmRlZmF1bHRXaWR0aCo9dH1mdW5jdGlvbiBhbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGUpe2lmKCFlLmZhbGxiYWNrVG9Vbmljb2RlKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgaW4gZS5mYWxsYmFja1RvVW5pY29kZSllLnRvVW5pY29kZS5oYXMoYSl8fCh0W2FdPWUuZmFsbGJhY2tUb1VuaWNvZGVbYV0pO3QubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHQpfWNsYXNzIEdseXBoe2NvbnN0cnVjdG9yKGUsdCxhLHIsaSxuLHMsbyxjKXt0aGlzLm9yaWdpbmFsQ2hhckNvZGU9ZTt0aGlzLmZvbnRDaGFyPXQ7dGhpcy51bmljb2RlPWE7dGhpcy5hY2NlbnQ9cjt0aGlzLndpZHRoPWk7dGhpcy52bWV0cmljPW47dGhpcy5vcGVyYXRvckxpc3RJZD1zO3RoaXMuaXNTcGFjZT1vO3RoaXMuaXNJbkZvbnQ9Y31nZXQgY2F0ZWdvcnkoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiY2F0ZWdvcnkiLCgwLHMuZ2V0Q2hhclVuaWNvZGVDYXRlZ29yeSkodGhpcy51bmljb2RlKSwhMCl9fWZ1bmN0aW9uIGludDE2KGUsdCl7cmV0dXJuKGU8PDgpK3R9ZnVuY3Rpb24gd3JpdGVTaWduZWRJbnQxNihlLHQsYSl7ZVt0KzFdPWE7ZVt0XT1hPj4+OH1mdW5jdGlvbiBzaWduZWRJbnQxNihlLHQpe2NvbnN0IGE9KGU8PDgpK3Q7cmV0dXJuIDMyNzY4JmE/YS02NTUzNjphfWZ1bmN0aW9uIHN0cmluZzE2KGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjgmMjU1LDI1NSZlKX1mdW5jdGlvbiBzYWZlU3RyaW5nMTYoZSl7ZT4zMjc2Nz9lPTMyNzY3OmU8LTMyNzY4JiYoZT0tMzI3NjgpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjgmMjU1LDI1NSZlKX1mdW5jdGlvbiBpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcyg0KTtyZXR1cm4idHRjZiI9PT0oMCxyLmJ5dGVzVG9TdHJpbmcpKHQpfWZ1bmN0aW9uIGdldEZvbnRGaWxlVHlwZShlLHt0eXBlOnQsc3VidHlwZTphLGNvbXBvc2l0ZTppfSl7bGV0IG4scztpZihmdW5jdGlvbiBpc1RydWVUeXBlRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiA2NTUzNj09PSgwLGIucmVhZFVpbnQzMikodCwwKXx8InRydWUiPT09KDAsci5ieXRlc1RvU3RyaW5nKSh0KX0oZSl8fGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZShlKSluPWk/IkNJREZvbnRUeXBlMiI6IlRydWVUeXBlIjtlbHNlIGlmKGZ1bmN0aW9uIGlzT3BlblR5cGVGaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoNCk7cmV0dXJuIk9UVE8iPT09KDAsci5ieXRlc1RvU3RyaW5nKSh0KX0oZSkpbj1pPyJDSURGb250VHlwZTIiOiJPcGVuVHlwZSI7ZWxzZSBpZihmdW5jdGlvbiBpc1R5cGUxRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDIpO3JldHVybiAzNz09PXRbMF0mJjMzPT09dFsxXXx8MTI4PT09dFswXSYmMT09PXRbMV19KGUpKW49aT8iQ0lERm9udFR5cGUwIjoiTU1UeXBlMSI9PT10PyJNTVR5cGUxIjoiVHlwZTEiO2Vsc2UgaWYoZnVuY3Rpb24gaXNDRkZGaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoNCk7cmV0dXJuIHRbMF0+PTEmJnRbM10+PTEmJnRbM108PTR9KGUpKWlmKGkpe249IkNJREZvbnRUeXBlMCI7cz0iQ0lERm9udFR5cGUwQyJ9ZWxzZXtuPSJNTVR5cGUxIj09PXQ/Ik1NVHlwZTEiOiJUeXBlMSI7cz0iVHlwZTFDIn1lbHNleygwLHIud2FybikoImdldEZvbnRGaWxlVHlwZTogVW5hYmxlIHRvIGRldGVjdCBjb3JyZWN0IGZvbnQgZmlsZSBUeXBlL1N1YnR5cGUuIik7bj10O3M9YX1yZXR1cm5bbixzXX1mdW5jdGlvbiBhcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGUsdCl7Zm9yKGNvbnN0IGEgaW4gdCllWythXT10W2FdfWZ1bmN0aW9uIGJ1aWxkVG9Gb250Q2hhcihlLHQsYSl7Y29uc3Qgcj1bXTtsZXQgaTtmb3IobGV0IGE9MCxuPWUubGVuZ3RoO2E8bjthKyspe2k9KDAscy5nZXRVbmljb2RlRm9yR2x5cGgpKGVbYV0sdCk7LTEhPT1pJiYoclthXT1pKX1mb3IoY29uc3QgZSBpbiBhKXtpPSgwLHMuZ2V0VW5pY29kZUZvckdseXBoKShhW2VdLHQpOy0xIT09aSYmKHJbK2VdPWkpfXJldHVybiByfWZ1bmN0aW9uIGlzTWFjTmFtZVJlY29yZChlKXtyZXR1cm4gMT09PWUucGxhdGZvcm0mJjA9PT1lLmVuY29kaW5nJiYwPT09ZS5sYW5ndWFnZX1mdW5jdGlvbiBpc1dpbk5hbWVSZWNvcmQoZSl7cmV0dXJuIDM9PT1lLnBsYXRmb3JtJiYxPT09ZS5lbmNvZGluZyYmMTAzMz09PWUubGFuZ3VhZ2V9ZnVuY3Rpb24gY29udmVydENpZFN0cmluZyhlLHQsYT0hMSl7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIHQuY2hhckNvZGVBdCgwKTtjYXNlIDI6cmV0dXJuIHQuY2hhckNvZGVBdCgwKTw8OHx0LmNoYXJDb2RlQXQoMSl9Y29uc3QgaT1gVW5zdXBwb3J0ZWQgQ0lEIHN0cmluZyAoY2hhckNvZGUgJHtlfSk6ICIke3R9Ii5gO2lmKGEpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoaSk7KDAsci53YXJuKShpKTtyZXR1cm4gdH1mdW5jdGlvbiBhZGp1c3RNYXBwaW5nKGUsdCxhLGkpe2NvbnN0IG49T2JqZWN0LmNyZWF0ZShudWxsKSxzPW5ldyBNYXAsbz1bXSxjPW5ldyBTZXQ7bGV0IGw9MDtsZXQgaD1TW2xdWzBdLHU9U1tsXVsxXTtmb3IobGV0IGYgaW4gZSl7Znw9MDtsZXQgZz1lW2ZdO2lmKCF0KGcpKWNvbnRpbnVlO2lmKGg+dSl7bCsrO2lmKGw+PVMubGVuZ3RoKXsoMCxyLndhcm4pKCJSYW4gb3V0IG9mIHNwYWNlIGluIGZvbnQgcHJpdmF0ZSB1c2UgYXJlYS4iKTticmVha31oPVNbbF1bMF07dT1TW2xdWzFdfWNvbnN0IHA9aCsrOzA9PT1nJiYoZz1hKTtsZXQgbT1pLmdldChmKTsic3RyaW5nIj09dHlwZW9mIG0mJihtPW0uY29kZVBvaW50QXQoMCkpO2lmKG0mJiEoZD1tLFNbMF1bMF08PWQmJmQ8PVNbMF1bMV18fFNbMV1bMF08PWQmJmQ8PVNbMV1bMV0pJiYhYy5oYXMoZykpe3Muc2V0KG0sZyk7Yy5hZGQoZyl9bltwXT1nO29bZl09cH12YXIgZDtyZXR1cm57dG9Gb250Q2hhcjpvLGNoYXJDb2RlVG9HbHlwaElkOm4sdG9Vbmljb2RlRXh0cmFNYXA6cyxuZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlOmh9fWZ1bmN0aW9uIGNyZWF0ZUNtYXBUYWJsZShlLHQsYSl7Y29uc3QgaT1mdW5jdGlvbiBnZXRSYW5nZXMoZSx0LGEpe2NvbnN0IHI9W107Zm9yKGNvbnN0IHQgaW4gZSllW3RdPj1hfHxyLnB1c2goe2ZvbnRDaGFyQ29kZTowfHQsZ2x5cGhJZDplW3RdfSk7aWYodClmb3IoY29uc3RbZSxpXW9mIHQpaT49YXx8ci5wdXNoKHtmb250Q2hhckNvZGU6ZSxnbHlwaElkOml9KTswPT09ci5sZW5ndGgmJnIucHVzaCh7Zm9udENoYXJDb2RlOjAsZ2x5cGhJZDowfSk7ci5zb3J0KChmdW5jdGlvbiBmb250R2V0UmFuZ2VzU29ydChlLHQpe3JldHVybiBlLmZvbnRDaGFyQ29kZS10LmZvbnRDaGFyQ29kZX0pKTtjb25zdCBpPVtdLG49ci5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxuOyl7Y29uc3QgdD1yW2VdLmZvbnRDaGFyQ29kZSxhPVtyW2VdLmdseXBoSWRdOysrZTtsZXQgcz10O2Zvcig7ZTxuJiZzKzE9PT1yW2VdLmZvbnRDaGFyQ29kZTspe2EucHVzaChyW2VdLmdseXBoSWQpOysrczsrK2U7aWYoNjU1MzU9PT1zKWJyZWFrfWkucHVzaChbdCxzLGFdKX1yZXR1cm4gaX0oZSx0LGEpLG49aS5hdCgtMSlbMV0+NjU1MzU/MjoxO2xldCBzLG8sYyxsLGg9IlwwXDAiK3N0cmluZzE2KG4pKyJcMANcMAEiKygwLHIuc3RyaW5nMzIpKDQrOCpuKTtmb3Iocz1pLmxlbmd0aC0xO3M+PTAmJiEoaVtzXVswXTw9NjU1MzUpOy0tcyk7Y29uc3QgdT1zKzE7aVtzXVswXTw2NTUzNSYmNjU1MzU9PT1pW3NdWzFdJiYoaVtzXVsxXT02NTUzNCk7Y29uc3QgZD1pW3NdWzFdPDY1NTM1PzE6MCxmPXUrZCxnPW0uT3BlblR5cGVGaWxlQnVpbGRlci5nZXRTZWFyY2hQYXJhbXMoZiwyKTtsZXQgcCxiLHksdyxTPSIiLHg9IiIsQz0iIixrPSIiLHY9IiIsRj0wO2ZvcihzPTAsbz11O3M8bztzKyspe3A9aVtzXTtiPXBbMF07eT1wWzFdO1MrPXN0cmluZzE2KGIpO3grPXN0cmluZzE2KHkpO3c9cFsyXTtsZXQgZT0hMDtmb3IoYz0xLGw9dy5sZW5ndGg7YzxsOysrYylpZih3W2NdIT09d1tjLTFdKzEpe2U9ITE7YnJlYWt9aWYoZSl7Qys9c3RyaW5nMTYod1swXS1iJjY1NTM1KTtrKz1zdHJpbmcxNigwKX1lbHNle2NvbnN0IGU9MiooZi1zKSsyKkY7Ris9eS1iKzE7Qys9c3RyaW5nMTYoMCk7ays9c3RyaW5nMTYoZSk7Zm9yKGM9MCxsPXcubGVuZ3RoO2M8bDsrK2Mpdis9c3RyaW5nMTYod1tjXSl9fWlmKGQ+MCl7eCs9IsO/w78iO1MrPSLDv8O/IjtDKz0iXDABIjtrKz0iXDBcMCJ9Y29uc3QgTz0iXDBcMCIrc3RyaW5nMTYoMipmKStzdHJpbmcxNihnLnJhbmdlKStzdHJpbmcxNihnLmVudHJ5KStzdHJpbmcxNihnLnJhbmdlU2hpZnQpK3grIlwwXDAiK1MrQytrK3Y7bGV0IFQ9IiIsTT0iIjtpZihuPjEpe2grPSJcMANcMFxuIisoMCxyLnN0cmluZzMyKSg0Kzgqbis0K08ubGVuZ3RoKTtUPSIiO2ZvcihzPTAsbz1pLmxlbmd0aDtzPG87cysrKXtwPWlbc107Yj1wWzBdO3c9cFsyXTtsZXQgZT13WzBdO2ZvcihjPTEsbD13Lmxlbmd0aDtjPGw7KytjKWlmKHdbY10hPT13W2MtMV0rMSl7eT1wWzBdK2MtMTtUKz0oMCxyLnN0cmluZzMyKShiKSsoMCxyLnN0cmluZzMyKSh5KSsoMCxyLnN0cmluZzMyKShlKTtiPXkrMTtlPXdbY119VCs9KDAsci5zdHJpbmczMikoYikrKDAsci5zdHJpbmczMikocFsxXSkrKDAsci5zdHJpbmczMikoZSl9TT0iXDBcZlwwXDAiKygwLHIuc3RyaW5nMzIpKFQubGVuZ3RoKzE2KSsiXDBcMFwwXDAiKygwLHIuc3RyaW5nMzIpKFQubGVuZ3RoLzEyKX1yZXR1cm4gaCsiXDAEIitzdHJpbmcxNihPLmxlbmd0aCs0KStPK00rVH1mdW5jdGlvbiBjcmVhdGVPUzJUYWJsZShlLHQsYSl7YXx8PXt1bml0c1BlckVtOjAseU1heDowLHlNaW46MCxhc2NlbnQ6MCxkZXNjZW50OjB9O2xldCBpPTAsbj0wLG89MCxjPTAsbD1udWxsLGg9MCx1PS0xO2lmKHQpe2ZvcihsZXQgZSBpbiB0KXtlfD0wOyhsPmV8fCFsKSYmKGw9ZSk7aDxlJiYoaD1lKTt1PSgwLHMuZ2V0VW5pY29kZVJhbmdlRm9yKShlLHUpO2lmKHU8MzIpaXw9MTw8dTtlbHNlIGlmKHU8NjQpbnw9MTw8dS0zMjtlbHNlIGlmKHU8OTYpb3w9MTw8dS02NDtlbHNle2lmKCEodTwxMjMpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmljb2RlIHJhbmdlcyBCaXRzID4gMTIzIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNhZ2UiKTtjfD0xPDx1LTk2fX1oPjY1NTM1JiYoaD02NTUzNSl9ZWxzZXtsPTA7aD0yNTV9Y29uc3QgZD1lLmJib3h8fFswLDAsMCwwXSxmPWEudW5pdHNQZXJFbXx8MS8oZS5mb250TWF0cml4fHxyLkZPTlRfSURFTlRJVFlfTUFUUklYKVswXSxnPWUuYXNjZW50U2NhbGVkPzE6Zi94LHA9YS5hc2NlbnR8fE1hdGgucm91bmQoZyooZS5hc2NlbnR8fGRbM10pKTtsZXQgbT1hLmRlc2NlbnR8fE1hdGgucm91bmQoZyooZS5kZXNjZW50fHxkWzFdKSk7bT4wJiZlLmRlc2NlbnQ+MCYmZFsxXTwwJiYobT0tbSk7Y29uc3QgYj1hLnlNYXh8fHAseT0tYS55TWlufHwtbTtyZXR1cm4iXDADAiQBw7RcMAVcMFwwAsKKAsK7XDBcMFwwwowCwooCwrtcMFwwAcOfXHgwMDEBAlwwXDBcMFwwBiIrU3RyaW5nLmZyb21DaGFyQ29kZShlLmZpeGVkUGl0Y2g/OTowKSsiXDBcMFwwXDBcMFwwIisoMCxyLnN0cmluZzMyKShpKSsoMCxyLnN0cmluZzMyKShuKSsoMCxyLnN0cmluZzMyKShvKSsoMCxyLnN0cmluZzMyKShjKSsiKjIxKiIrc3RyaW5nMTYoZS5pdGFsaWNBbmdsZT8xOjApK3N0cmluZzE2KGx8fGUuZmlyc3RDaGFyKStzdHJpbmcxNihofHxlLmxhc3RDaGFyKStzdHJpbmcxNihwKStzdHJpbmcxNihtKSsiXDBkIitzdHJpbmcxNihiKStzdHJpbmcxNih5KSsiXDBcMFwwXDBcMFwwXDBcMCIrc3RyaW5nMTYoZS54SGVpZ2h0KStzdHJpbmcxNihlLmNhcEhlaWdodCkrc3RyaW5nMTYoMCkrc3RyaW5nMTYobHx8ZS5maXJzdENoYXIpKyJcMAMifWZ1bmN0aW9uIGNyZWF0ZVBvc3RUYWJsZShlKXtjb25zdCB0PU1hdGguZmxvb3IoNjU1MzYqZS5pdGFsaWNBbmdsZSk7cmV0dXJuIlwwA1wwXDAiKygwLHIuc3RyaW5nMzIpKHQpKyJcMFwwXDBcMCIrKDAsci5zdHJpbmczMikoZS5maXhlZFBpdGNoPzE6MCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIn1mdW5jdGlvbiBjcmVhdGVQb3N0c2NyaXB0TmFtZShlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC9bXlx4MjEtXHg3RV18W1tcXSgpe308Pi8lXS9nLCIiKS5zbGljZSgwLDYzKX1mdW5jdGlvbiBjcmVhdGVOYW1lVGFibGUoZSx0KXt0fHwodD1bW10sW11dKTtjb25zdCBhPVt0WzBdWzBdfHwiT3JpZ2luYWwgbGljZW5jZSIsdFswXVsxXXx8ZSx0WzBdWzJdfHwiVW5rbm93biIsdFswXVszXXx8InVuaXF1ZUlEIix0WzBdWzRdfHxlLHRbMF1bNV18fCJWZXJzaW9uIDAuMTEiLHRbMF1bNl18fGNyZWF0ZVBvc3RzY3JpcHROYW1lKGUpLHRbMF1bN118fCJVbmtub3duIix0WzBdWzhdfHwiVW5rbm93biIsdFswXVs5XXx8IlVua25vd24iXSxyPVtdO2xldCBpLG4scyxvLGM7Zm9yKGk9MCxuPWEubGVuZ3RoO2k8bjtpKyspe2M9dFsxXVtpXXx8YVtpXTtjb25zdCBlPVtdO2ZvcihzPTAsbz1jLmxlbmd0aDtzPG87cysrKWUucHVzaChzdHJpbmcxNihjLmNoYXJDb2RlQXQocykpKTtyLnB1c2goZS5qb2luKCIiKSl9Y29uc3QgbD1bYSxyXSxoPVsiXDABIiwiXDADIl0sdT1bIlwwXDAiLCJcMAEiXSxkPVsiXDBcMCIsIgRcdCJdLGY9YS5sZW5ndGgqaC5sZW5ndGg7bGV0IGc9IlwwXDAiK3N0cmluZzE2KGYpK3N0cmluZzE2KDEyKmYrNikscD0wO2ZvcihpPTAsbj1oLmxlbmd0aDtpPG47aSsrKXtjb25zdCBlPWxbaV07Zm9yKHM9MCxvPWUubGVuZ3RoO3M8bztzKyspe2M9ZVtzXTtnKz1oW2ldK3VbaV0rZFtpXStzdHJpbmcxNihzKStzdHJpbmcxNihjLmxlbmd0aCkrc3RyaW5nMTYocCk7cCs9Yy5sZW5ndGh9fWcrPWEuam9pbigiIikrci5qb2luKCIiKTtyZXR1cm4gZ310LkZvbnQ9Y2xhc3MgRm9udHtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5uYW1lPWU7dGhpcy5wc05hbWU9bnVsbDt0aGlzLm1pbWV0eXBlPW51bGw7dGhpcy5kaXNhYmxlRm9udEZhY2U9ITE7dGhpcy5sb2FkZWROYW1lPWEubG9hZGVkTmFtZTt0aGlzLmlzVHlwZTNGb250PWEuaXNUeXBlM0ZvbnQ7dGhpcy5taXNzaW5nRmlsZT0hMTt0aGlzLmNzc0ZvbnRJbmZvPWEuY3NzRm9udEluZm87dGhpcy5fY2hhcnNDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2dseXBoQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgaT0hIShhLmZsYWdzJm4uRm9udEZsYWdzLlNlcmlmKTtpZighaSYmIWEuaXNTaW11bGF0ZWRGbGFncyl7Y29uc3QgdD1lLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpLnNwbGl0KCItIilbMF0sYT0oMCxsLmdldFNlcmlmRm9udHMpKCk7Zm9yKGNvbnN0IGUgb2YgdC5zcGxpdCgiKyIpKWlmKGFbZV0pe2k9ITA7YnJlYWt9fXRoaXMuaXNTZXJpZkZvbnQ9aTt0aGlzLmlzU3ltYm9saWNGb250PSEhKGEuZmxhZ3Mmbi5Gb250RmxhZ3MuU3ltYm9saWMpO3RoaXMuaXNNb25vc3BhY2U9ISEoYS5mbGFncyZuLkZvbnRGbGFncy5GaXhlZFBpdGNoKTtsZXR7dHlwZTpzLHN1YnR5cGU6b309YTt0aGlzLnR5cGU9czt0aGlzLnN1YnR5cGU9bzt0aGlzLnN5c3RlbUZvbnRJbmZvPWEuc3lzdGVtRm9udEluZm87Y29uc3QgYz1lLm1hdGNoKC9eSW52YWxpZFBERmpzRm9udF8oLiopX1xkKyQvKTt0aGlzLmlzSW52YWxpZFBERmpzRm9udD0hIWM7dGhpcy5pc0ludmFsaWRQREZqc0ZvbnQ/dGhpcy5mYWxsYmFja05hbWU9Y1sxXTp0aGlzLmlzTW9ub3NwYWNlP3RoaXMuZmFsbGJhY2tOYW1lPSJtb25vc3BhY2UiOnRoaXMuaXNTZXJpZkZvbnQ/dGhpcy5mYWxsYmFja05hbWU9InNlcmlmIjp0aGlzLmZhbGxiYWNrTmFtZT0ic2Fucy1zZXJpZiI7aWYodGhpcy5zeXN0ZW1Gb250SW5mbz8uZ3Vlc3NGYWxsYmFjayl7dGhpcy5zeXN0ZW1Gb250SW5mby5ndWVzc0ZhbGxiYWNrPSExO3RoaXMuc3lzdGVtRm9udEluZm8uY3NzKz1gLCR7dGhpcy5mYWxsYmFja05hbWV9YH10aGlzLmRpZmZlcmVuY2VzPWEuZGlmZmVyZW5jZXM7dGhpcy53aWR0aHM9YS53aWR0aHM7dGhpcy5kZWZhdWx0V2lkdGg9YS5kZWZhdWx0V2lkdGg7dGhpcy5jb21wb3NpdGU9YS5jb21wb3NpdGU7dGhpcy5jTWFwPWEuY01hcDt0aGlzLmNhcEhlaWdodD1hLmNhcEhlaWdodC94O3RoaXMuYXNjZW50PWEuYXNjZW50L3g7dGhpcy5kZXNjZW50PWEuZGVzY2VudC94O3RoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQ7dGhpcy5mb250TWF0cml4PWEuZm9udE1hdHJpeDt0aGlzLmJib3g9YS5iYm94O3RoaXMuZGVmYXVsdEVuY29kaW5nPWEuZGVmYXVsdEVuY29kaW5nO3RoaXMudG9Vbmljb2RlPWEudG9Vbmljb2RlO3RoaXMudG9Gb250Q2hhcj1bXTtpZigiVHlwZTMiPT09YS50eXBlKXtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy50b0ZvbnRDaGFyW2VdPXRoaXMuZGlmZmVyZW5jZXNbZV18fGEuZGVmYXVsdEVuY29kaW5nW2VdO3JldHVybn10aGlzLmNpZEVuY29kaW5nPWEuY2lkRW5jb2Rpbmd8fCIiO3RoaXMudmVydGljYWw9ISFhLnZlcnRpY2FsO2lmKHRoaXMudmVydGljYWwpe3RoaXMudm1ldHJpY3M9YS52bWV0cmljczt0aGlzLmRlZmF1bHRWTWV0cmljcz1hLmRlZmF1bHRWTWV0cmljc31pZighdHx8dC5pc0VtcHR5KXt0JiYoMCxyLndhcm4pKCdGb250IGZpbGUgaXMgZW1wdHkgaW4gIicrZSsnIiAoJyt0aGlzLmxvYWRlZE5hbWUrIikiKTt0aGlzLmZhbGxiYWNrVG9TeXN0ZW1Gb250KGEpO3JldHVybn1bcyxvXT1nZXRGb250RmlsZVR5cGUodCxhKTtzPT09dGhpcy50eXBlJiZvPT09dGhpcy5zdWJ0eXBlfHwoMCxyLmluZm8pKGBJbmNvbnNpc3RlbnQgZm9udCBmaWxlIFR5cGUvU3ViVHlwZSwgZXhwZWN0ZWQ6ICR7dGhpcy50eXBlfS8ke3RoaXMuc3VidHlwZX0gYnV0IGZvdW5kOiAke3N9LyR7b30uYCk7bGV0IGg7dHJ5e3N3aXRjaChzKXtjYXNlIk1NVHlwZTEiOigwLHIuaW5mbykoIk1NVHlwZTEgZm9udCAoIitlKyIpLCBmYWxsaW5nIGJhY2sgdG8gVHlwZTEuIik7Y2FzZSJUeXBlMSI6Y2FzZSJDSURGb250VHlwZTAiOnRoaXMubWltZXR5cGU9ImZvbnQvb3BlbnR5cGUiO2NvbnN0IGk9IlR5cGUxQyI9PT1vfHwiQ0lERm9udFR5cGUwQyI9PT1vP25ldyB1LkNGRkZvbnQodCxhKTpuZXcgdy5UeXBlMUZvbnQoZSx0LGEpO2FkanVzdFdpZHRocyhhKTtoPXRoaXMuY29udmVydChlLGksYSk7YnJlYWs7Y2FzZSJPcGVuVHlwZSI6Y2FzZSJUcnVlVHlwZSI6Y2FzZSJDSURGb250VHlwZTIiOnRoaXMubWltZXR5cGU9ImZvbnQvb3BlbnR5cGUiO2g9dGhpcy5jaGVja0FuZFJlcGFpcihlLHQsYSk7aWYodGhpcy5pc09wZW5UeXBlKXthZGp1c3RXaWR0aHMoYSk7cz0iT3BlblR5cGUifWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEZvbnQgJHtzfSBpcyBub3Qgc3VwcG9ydGVkYCl9fWNhdGNoKGUpeygwLHIud2FybikoZSk7dGhpcy5mYWxsYmFja1RvU3lzdGVtRm9udChhKTtyZXR1cm59YW1lbmRGYWxsYmFja1RvVW5pY29kZShhKTt0aGlzLmRhdGE9aDt0aGlzLnR5cGU9czt0aGlzLnN1YnR5cGU9bzt0aGlzLmZvbnRNYXRyaXg9YS5mb250TWF0cml4O3RoaXMud2lkdGhzPWEud2lkdGhzO3RoaXMuZGVmYXVsdFdpZHRoPWEuZGVmYXVsdFdpZHRoO3RoaXMudG9Vbmljb2RlPWEudG9Vbmljb2RlO3RoaXMuc2VhY01hcD1hLnNlYWNNYXB9Z2V0IHJlbmRlcmVyKCl7Y29uc3QgZT1kLkZvbnRSZW5kZXJlckZhY3RvcnkuY3JlYXRlKHRoaXMsbi5TRUFDX0FOQUxZU0lTX0VOQUJMRUQpO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJyZW5kZXJlciIsZSl9ZXhwb3J0RGF0YShlPSExKXtjb25zdCB0PWU/Wy4uLkMsLi4ua106QyxhPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHIsaTtmb3IociBvZiB0KXtpPXRoaXNbcl07dm9pZCAwIT09aSYmKGFbcl09aSl9cmV0dXJuIGF9ZmFsbGJhY2tUb1N5c3RlbUZvbnQoZSl7dGhpcy5taXNzaW5nRmlsZT0hMDtjb25zdHtuYW1lOnQsdHlwZTphfT10aGlzO2xldCByPSgwLG4ubm9ybWFsaXplRm9udE5hbWUpKHQpO2NvbnN0IGk9KDAsbC5nZXRTdGRGb250TWFwKSgpLHU9KDAsbC5nZXROb25TdGRGb250TWFwKSgpLGQ9ISFpW3JdLGc9ISghdVtyXXx8IWlbdVtyXV0pO3I9aVtyXXx8dVtyXXx8cjtjb25zdCBwPSgwLGYuZ2V0Rm9udEJhc2ljTWV0cmljcykoKVtyXTtpZihwKXtpc05hTih0aGlzLmFzY2VudCkmJih0aGlzLmFzY2VudD1wLmFzY2VudC94KTtpc05hTih0aGlzLmRlc2NlbnQpJiYodGhpcy5kZXNjZW50PXAuZGVzY2VudC94KTtpc05hTih0aGlzLmNhcEhlaWdodCkmJih0aGlzLmNhcEhlaWdodD1wLmNhcEhlaWdodC94KX10aGlzLmJvbGQ9L2JvbGQvZ2kudGVzdChyKTt0aGlzLml0YWxpYz0vb2JsaXF1ZXxpdGFsaWMvZ2kudGVzdChyKTt0aGlzLmJsYWNrPS9CbGFjay9nLnRlc3QodCk7Y29uc3QgbT0vTmFycm93L2cudGVzdCh0KTt0aGlzLnJlbWVhc3VyZT0oIWR8fG0pJiZPYmplY3Qua2V5cyh0aGlzLndpZHRocykubGVuZ3RoPjA7aWYoKGR8fGcpJiYiQ0lERm9udFR5cGUyIj09PWEmJnRoaXMuY2lkRW5jb2Rpbmcuc3RhcnRzV2l0aCgiSWRlbnRpdHktIikpe2NvbnN0IGE9ZS5jaWRUb0dpZE1hcCxyPVtdO2FwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAociwoMCxsLmdldEdseXBoTWFwRm9yU3RhbmRhcmRGb250cykoKSk7L0FyaWFsLT9CbGFjay9pLnRlc3QodCk/YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChyLCgwLGwuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JBcmlhbEJsYWNrKSgpKTovQ2FsaWJyaS9pLnRlc3QodCkmJmFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAociwoMCxsLmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQ2FsaWJyaSkoKSk7aWYoYSl7Zm9yKGNvbnN0IGUgaW4gcil7Y29uc3QgdD1yW2VdO3ZvaWQgMCE9PWFbdF0mJihyWytlXT1hW3RdKX1hLmxlbmd0aCE9PXRoaXMudG9Vbmljb2RlLmxlbmd0aCYmZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcCYmdGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBoLklkZW50aXR5VG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2NvbnN0IGk9cltlXTt2b2lkIDA9PT1hW2ldJiYoclsrZV09dCl9KSl9dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBoLklkZW50aXR5VG9Vbmljb2RlTWFwfHx0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe3JbK2VdPXR9KSk7dGhpcy50b0ZvbnRDaGFyPXI7dGhpcy50b1VuaWNvZGU9bmV3IGguVG9Vbmljb2RlTWFwKHIpfWVsc2UgaWYoL1N5bWJvbC9pLnRlc3QocikpdGhpcy50b0ZvbnRDaGFyPWJ1aWxkVG9Gb250Q2hhcihjLlN5bWJvbFNldEVuY29kaW5nLCgwLG8uZ2V0R2x5cGhzVW5pY29kZSkoKSx0aGlzLmRpZmZlcmVuY2VzKTtlbHNlIGlmKC9EaW5nYmF0cy9pLnRlc3QocikpdGhpcy50b0ZvbnRDaGFyPWJ1aWxkVG9Gb250Q2hhcihjLlphcGZEaW5nYmF0c0VuY29kaW5nLCgwLG8uZ2V0RGluZ2JhdHNHbHlwaHNVbmljb2RlKSgpLHRoaXMuZGlmZmVyZW5jZXMpO2Vsc2UgaWYoZCl7Y29uc3QgZT1idWlsZFRvRm9udENoYXIodGhpcy5kZWZhdWx0RW5jb2RpbmcsKDAsby5nZXRHbHlwaHNVbmljb2RlKSgpLHRoaXMuZGlmZmVyZW5jZXMpOyJDSURGb250VHlwZTIiIT09YXx8dGhpcy5jaWRFbmNvZGluZy5zdGFydHNXaXRoKCJJZGVudGl0eS0iKXx8dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBoLklkZW50aXR5VG9Vbmljb2RlTWFwfHx0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbih0LGEpe2VbK3RdPWF9KSk7dGhpcy50b0ZvbnRDaGFyPWV9ZWxzZXtjb25zdCBlPSgwLG8uZ2V0R2x5cGhzVW5pY29kZSkoKSxhPVtdO3RoaXMudG9Vbmljb2RlLmZvckVhY2goKCh0LHIpPT57aWYoIXRoaXMuY29tcG9zaXRlKXtjb25zdCBhPXRoaXMuZGlmZmVyZW5jZXNbdF18fHRoaXMuZGVmYXVsdEVuY29kaW5nW3RdLGk9KDAscy5nZXRVbmljb2RlRm9yR2x5cGgpKGEsZSk7LTEhPT1pJiYocj1pKX1hWyt0XT1yfSkpO3RoaXMuY29tcG9zaXRlJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXAmJi9UYWhvbWF8VmVyZGFuYS9pLnRlc3QodCkmJmFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoYSwoMCxsLmdldEdseXBoTWFwRm9yU3RhbmRhcmRGb250cykoKSk7dGhpcy50b0ZvbnRDaGFyPWF9YW1lbmRGYWxsYmFja1RvVW5pY29kZShlKTt0aGlzLmxvYWRlZE5hbWU9ci5zcGxpdCgiLSIpWzBdfWNoZWNrQW5kUmVwYWlyKGUsdCxhKXtjb25zdCBzPVsiT1MvMiIsImNtYXAiLCJoZWFkIiwiaGhlYSIsImhtdHgiLCJtYXhwIiwibmFtZSIsInBvc3QiLCJsb2NhIiwiZ2x5ZiIsImZwZ20iLCJwcmVwIiwiY3Z0ICIsIkNGRiAiXTtmdW5jdGlvbiByZWFkVGFibGVzKGUsdCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpO2FbIk9TLzIiXT1udWxsO2EuY21hcD1udWxsO2EuaGVhZD1udWxsO2EuaGhlYT1udWxsO2EuaG10eD1udWxsO2EubWF4cD1udWxsO2EubmFtZT1udWxsO2EucG9zdD1udWxsO2ZvcihsZXQgcj0wO3I8dDtyKyspe2NvbnN0IHQ9cmVhZFRhYmxlRW50cnkoZSk7cy5pbmNsdWRlcyh0LnRhZykmJigwIT09dC5sZW5ndGgmJihhW3QudGFnXT10KSl9cmV0dXJuIGF9ZnVuY3Rpb24gcmVhZFRhYmxlRW50cnkoZSl7Y29uc3QgdD1lLmdldFN0cmluZyg0KSxhPWUuZ2V0SW50MzIoKT4+PjAscj1lLmdldEludDMyKCk+Pj4wLGk9ZS5nZXRJbnQzMigpPj4+MCxuPWUucG9zO2UucG9zPWUuc3RhcnR8fDA7ZS5za2lwKHIpO2NvbnN0IHM9ZS5nZXRCeXRlcyhpKTtlLnBvcz1uO2lmKCJoZWFkIj09PXQpe3NbOF09c1s5XT1zWzEwXT1zWzExXT0wO3NbMTddfD0zMn1yZXR1cm57dGFnOnQsY2hlY2tzdW06YSxsZW5ndGg6aSxvZmZzZXQ6cixkYXRhOnN9fWZ1bmN0aW9uIHJlYWRPcGVuVHlwZUhlYWRlcihlKXtyZXR1cm57dmVyc2lvbjplLmdldFN0cmluZyg0KSxudW1UYWJsZXM6ZS5nZXRVaW50MTYoKSxzZWFyY2hSYW5nZTplLmdldFVpbnQxNigpLGVudHJ5U2VsZWN0b3I6ZS5nZXRVaW50MTYoKSxyYW5nZVNoaWZ0OmUuZ2V0VWludDE2KCl9fWZ1bmN0aW9uIHNhbml0aXplR2x5cGgoZSx0LGEscixpLG4pe2NvbnN0IHM9e2xlbmd0aDowLHNpemVPZkluc3RydWN0aW9uczowfTtpZih0PDB8fHQ+PWUubGVuZ3RofHxhPmUubGVuZ3RofHxhLXQ8PTEyKXJldHVybiBzO2NvbnN0IG89ZS5zdWJhcnJheSh0LGEpLGM9c2lnbmVkSW50MTYob1syXSxvWzNdKSxsPXNpZ25lZEludDE2KG9bNF0sb1s1XSksaD1zaWduZWRJbnQxNihvWzZdLG9bN10pLHU9c2lnbmVkSW50MTYob1s4XSxvWzldKTtpZihjPmgpe3dyaXRlU2lnbmVkSW50MTYobywyLGgpO3dyaXRlU2lnbmVkSW50MTYobyw2LGMpfWlmKGw+dSl7d3JpdGVTaWduZWRJbnQxNihvLDQsdSk7d3JpdGVTaWduZWRJbnQxNihvLDgsbCl9Y29uc3QgZD1zaWduZWRJbnQxNihvWzBdLG9bMV0pO2lmKGQ8MCl7aWYoZDwtMSlyZXR1cm4gcztyLnNldChvLGkpO3MubGVuZ3RoPW8ubGVuZ3RoO3JldHVybiBzfWxldCBmLGc9MTAscD0wO2ZvcihmPTA7ZjxkO2YrKyl7cD0ob1tnXTw8OHxvW2crMV0pKzE7Zys9Mn1jb25zdCBtPWcsYj1vW2ddPDw4fG9bZysxXTtzLnNpemVPZkluc3RydWN0aW9ucz1iO2crPTIrYjtjb25zdCB5PWc7bGV0IHc9MDtmb3IoZj0wO2Y8cDtmKyspe2NvbnN0IGU9b1tnKytdOzE5MiZlJiYob1tnLTFdPTYzJmUpO2xldCB0PTI7MiZlP3Q9MToxNiZlJiYodD0wKTtsZXQgYT0yOzQmZT9hPTE6MzImZSYmKGE9MCk7Y29uc3Qgcj10K2E7dys9cjtpZig4JmUpe2NvbnN0IGU9b1tnKytdOzA9PT1lJiYob1tnLTFdXj04KTtmKz1lO3crPWUqcn19aWYoMD09PXcpcmV0dXJuIHM7bGV0IFM9Zyt3O2lmKFM+by5sZW5ndGgpcmV0dXJuIHM7aWYoIW4mJmI+MCl7ci5zZXQoby5zdWJhcnJheSgwLG0pLGkpO3Iuc2V0KFswLDBdLGkrbSk7ci5zZXQoby5zdWJhcnJheSh5LFMpLGkrbSsyKTtTLT1iO28ubGVuZ3RoLVM+MyYmKFM9UyszJi00KTtzLmxlbmd0aD1TO3JldHVybiBzfWlmKG8ubGVuZ3RoLVM+Myl7Uz1TKzMmLTQ7ci5zZXQoby5zdWJhcnJheSgwLFMpLGkpO3MubGVuZ3RoPVM7cmV0dXJuIHN9ci5zZXQobyxpKTtzLmxlbmd0aD1vLmxlbmd0aDtyZXR1cm4gc31mdW5jdGlvbiByZWFkTmFtZVRhYmxlKGUpe2NvbnN0IGE9KHQuc3RhcnR8fDApK2Uub2Zmc2V0O3QucG9zPWE7Y29uc3Qgcj1bW10sW11dLGk9W10sbj1lLmxlbmd0aCxzPWErbjtpZigwIT09dC5nZXRVaW50MTYoKXx8bjw2KXJldHVybltyLGldO2NvbnN0IG89dC5nZXRVaW50MTYoKSxjPXQuZ2V0VWludDE2KCk7bGV0IGwsaDtmb3IobD0wO2w8byYmdC5wb3MrMTI8PXM7bCsrKXtjb25zdCBlPXtwbGF0Zm9ybTp0LmdldFVpbnQxNigpLGVuY29kaW5nOnQuZ2V0VWludDE2KCksbGFuZ3VhZ2U6dC5nZXRVaW50MTYoKSxuYW1lOnQuZ2V0VWludDE2KCksbGVuZ3RoOnQuZ2V0VWludDE2KCksb2Zmc2V0OnQuZ2V0VWludDE2KCl9Oyhpc01hY05hbWVSZWNvcmQoZSl8fGlzV2luTmFtZVJlY29yZChlKSkmJmkucHVzaChlKX1mb3IobD0wLGg9aS5sZW5ndGg7bDxoO2wrKyl7Y29uc3QgZT1pW2xdO2lmKGUubGVuZ3RoPD0wKWNvbnRpbnVlO2NvbnN0IG49YStjK2Uub2Zmc2V0O2lmKG4rZS5sZW5ndGg+cyljb250aW51ZTt0LnBvcz1uO2NvbnN0IG89ZS5uYW1lO2lmKGUuZW5jb2Rpbmcpe2xldCBhPSIiO2ZvcihsZXQgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrPTIpYSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0LmdldFVpbnQxNigpKTtyWzFdW29dPWF9ZWxzZSByWzBdW29dPXQuZ2V0U3RyaW5nKGUubGVuZ3RoKX1yZXR1cm5bcixpXX1jb25zdCBsPVswLDAsMCwwLDAsMCwwLDAsLTIsLTIsLTIsLTIsMCwwLC0yLC01LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLDAsMCwtMSwwLC0xLC0xLC0xLC0xLDEsLTEsLTk5OSwwLDEsMCwtMSwtMiwwLC0xLC0yLC0xLC0xLDAsLTEsLTEsMCwwLC05OTksLTk5OSwtMSwtMSwtMSwtMSwtMiwtOTk5LC0yLC0yLC05OTksMCwtMiwtMiwwLDAsLTIsMCwtMiwwLDAsMCwtMiwtMSwtMSwxLDEsMCwwLC0xLC0xLC0xLC0xLC0xLC0xLC0xLDAsMCwtMSwwLC0xLC0xLDAsLTk5OSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwtMiwtOTk5LC05OTksLTk5OSwtOTk5LC05OTksLTEsLTEsLTIsLTIsMCwwLDAsMCwtMSwtMSwtOTk5LC0yLC0yLDAsMCwtMSwtMiwtMiwwLDAsMCwtMSwtMSwtMSwtMl07ZnVuY3Rpb24gc2FuaXRpemVUVFByb2dyYW0oZSx0KXtsZXQgYSxpLG4scyxvLGM9ZS5kYXRhLGg9MCx1PTAsZD0wO2NvbnN0IGY9W10sZz1bXSxwPVtdO2xldCBtPXQudG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zLGI9ITEseT0wLHc9MDtmb3IobGV0IGU9Yy5sZW5ndGg7aDxlOyl7Y29uc3QgZT1jW2grK107aWYoNjQ9PT1lKXtpPWNbaCsrXTtpZihifHx3KWgrPWk7ZWxzZSBmb3IoYT0wO2E8aTthKyspZi5wdXNoKGNbaCsrXSl9ZWxzZSBpZig2NT09PWUpe2k9Y1toKytdO2lmKGJ8fHcpaCs9MippO2Vsc2UgZm9yKGE9MDthPGk7YSsrKXtuPWNbaCsrXTtmLnB1c2gobjw8OHxjW2grK10pfX1lbHNlIGlmKDE3Nj09KDI0OCZlKSl7aT1lLTE3NisxO2lmKGJ8fHcpaCs9aTtlbHNlIGZvcihhPTA7YTxpO2ErKylmLnB1c2goY1toKytdKX1lbHNlIGlmKDE4ND09KDI0OCZlKSl7aT1lLTE4NCsxO2lmKGJ8fHcpaCs9MippO2Vsc2UgZm9yKGE9MDthPGk7YSsrKXtuPWNbaCsrXTtmLnB1c2gobjw8OHxjW2grK10pfX1lbHNlIGlmKDQzIT09ZXx8bSlpZig0NCE9PWV8fG0pe2lmKDQ1PT09ZSlpZihiKXtiPSExO3U9aH1lbHNle289Zy5wb3AoKTtpZighbyl7KDAsci53YXJuKSgiVFQ6IEVOREYgYmFkIHN0YWNrIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn1zPXAucG9wKCk7Yz1vLmRhdGE7aD1vLmk7dC5mdW5jdGlvbnNTdGFja0RlbHRhc1tzXT1mLmxlbmd0aC1vLnN0YWNrVG9wfWVsc2UgaWYoMTM3PT09ZSl7aWYoYnx8dyl7KDAsci53YXJuKSgiVFQ6IG5lc3RlZCBJREVGcyBub3QgYWxsb3dlZCIpO209ITB9Yj0hMDtkPWh9ZWxzZSBpZig4OD09PWUpKyt5O2Vsc2UgaWYoMjc9PT1lKXc9eTtlbHNlIGlmKDg5PT09ZSl7dz09PXkmJih3PTApOy0teX1lbHNlIGlmKDI4PT09ZSYmIWImJiF3KXtjb25zdCBlPWYuYXQoLTEpO2U+MCYmKGgrPWUtMSl9fWVsc2V7aWYoYnx8dyl7KDAsci53YXJuKSgiVFQ6IG5lc3RlZCBGREVGcyBub3QgYWxsb3dlZCIpO209ITB9Yj0hMDtkPWg7cz1mLnBvcCgpO3QuZnVuY3Rpb25zRGVmaW5lZFtzXT17ZGF0YTpjLGk6aH19ZWxzZSBpZighYiYmIXcpe3M9Zi5hdCgtMSk7aWYoaXNOYU4ocykpKDAsci5pbmZvKSgiVFQ6IENBTEwgZW1wdHkgc3RhY2sgKG9yIGludmFsaWQgZW50cnkpLiIpO2Vsc2V7dC5mdW5jdGlvbnNVc2VkW3NdPSEwO2lmKHMgaW4gdC5mdW5jdGlvbnNTdGFja0RlbHRhcyl7Y29uc3QgZT1mLmxlbmd0aCt0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzW3NdO2lmKGU8MCl7KDAsci53YXJuKSgiVFQ6IENBTEwgaW52YWxpZCBmdW5jdGlvbnMgc3RhY2sgZGVsdGEuIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn1mLmxlbmd0aD1lfWVsc2UgaWYocyBpbiB0LmZ1bmN0aW9uc0RlZmluZWQmJiFwLmluY2x1ZGVzKHMpKXtnLnB1c2goe2RhdGE6YyxpOmgsc3RhY2tUb3A6Zi5sZW5ndGgtMX0pO3AucHVzaChzKTtvPXQuZnVuY3Rpb25zRGVmaW5lZFtzXTtpZighbyl7KDAsci53YXJuKSgiVFQ6IENBTEwgbm9uLWV4aXN0ZW50IGZ1bmN0aW9uIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn1jPW8uZGF0YTtoPW8uaX19fWlmKCFiJiYhdyl7bGV0IHQ9MDtlPD0xNDI/dD1sW2VdOmU+PTE5MiYmZTw9MjIzP3Q9LTE6ZT49MjI0JiYodD0tMik7aWYoZT49MTEzJiZlPD0xMTcpe2k9Zi5wb3AoKTtpc05hTihpKXx8KHQ9MiotaSl9Zm9yKDt0PDAmJmYubGVuZ3RoPjA7KXtmLnBvcCgpO3QrK31mb3IoO3Q+MDspe2YucHVzaChOYU4pO3QtLX19fXQudG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zPW07Y29uc3QgUz1bY107aD5jLmxlbmd0aCYmUy5wdXNoKG5ldyBVaW50OEFycmF5KGgtYy5sZW5ndGgpKTtpZihkPnUpeygwLHIud2FybikoIlRUOiBjb21wbGVtZW50aW5nIGEgbWlzc2luZyBmdW5jdGlvbiB0YWlsIik7Uy5wdXNoKG5ldyBVaW50OEFycmF5KFszNCw0NV0pKX0hZnVuY3Rpb24gZm9sZFRUVGFibGUoZSx0KXtpZih0Lmxlbmd0aD4xKXtsZXQgYSxyLGk9MDtmb3IoYT0wLHI9dC5sZW5ndGg7YTxyO2ErKylpKz10W2FdLmxlbmd0aDtpPWkrMyYtNDtjb25zdCBuPW5ldyBVaW50OEFycmF5KGkpO2xldCBzPTA7Zm9yKGE9MCxyPXQubGVuZ3RoO2E8cjthKyspe24uc2V0KHRbYV0scyk7cys9dFthXS5sZW5ndGh9ZS5kYXRhPW47ZS5sZW5ndGg9aX19KGUsUyl9bGV0IGQsZixiLHc7aWYoaXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKHQ9bmV3IHkuU3RyZWFtKG5ldyBVaW50OEFycmF5KHQuZ2V0Qnl0ZXMoKSkpKSl7Y29uc3QgZT1mdW5jdGlvbiByZWFkVHJ1ZVR5cGVDb2xsZWN0aW9uRGF0YShlLHQpe2NvbnN0e251bUZvbnRzOmEsb2Zmc2V0VGFibGU6aX09ZnVuY3Rpb24gcmVhZFRydWVUeXBlQ29sbGVjdGlvbkhlYWRlcihlKXtjb25zdCB0PWUuZ2V0U3RyaW5nKDQpOygwLHIuYXNzZXJ0KSgidHRjZiI9PT10LCJNdXN0IGJlIGEgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250LiIpO2NvbnN0IGE9ZS5nZXRVaW50MTYoKSxpPWUuZ2V0VWludDE2KCksbj1lLmdldEludDMyKCk+Pj4wLHM9W107Zm9yKGxldCB0PTA7dDxuO3QrKylzLnB1c2goZS5nZXRJbnQzMigpPj4+MCk7Y29uc3Qgbz17dHRjVGFnOnQsbWFqb3JWZXJzaW9uOmEsbWlub3JWZXJzaW9uOmksbnVtRm9udHM6bixvZmZzZXRUYWJsZTpzfTtzd2l0Y2goYSl7Y2FzZSAxOnJldHVybiBvO2Nhc2UgMjpvLmRzaWdUYWc9ZS5nZXRJbnQzMigpPj4+MDtvLmRzaWdMZW5ndGg9ZS5nZXRJbnQzMigpPj4+MDtvLmRzaWdPZmZzZXQ9ZS5nZXRJbnQzMigpPj4+MDtyZXR1cm4gb310aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBUcnVlVHlwZSBDb2xsZWN0aW9uIG1ham9yVmVyc2lvbjogJHthfS5gKX0oZSksbj10LnNwbGl0KCIrIik7bGV0IHM7Zm9yKGxldCBvPTA7bzxhO28rKyl7ZS5wb3M9KGUuc3RhcnR8fDApK2lbb107Y29uc3QgYT1yZWFkT3BlblR5cGVIZWFkZXIoZSksYz1yZWFkVGFibGVzKGUsYS5udW1UYWJsZXMpO2lmKCFjLm5hbWUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoJ1RydWVUeXBlIENvbGxlY3Rpb24gZm9udCBtdXN0IGNvbnRhaW4gYSAibmFtZSIgdGFibGUuJyk7Y29uc3RbbF09cmVhZE5hbWVUYWJsZShjLm5hbWUpO2ZvcihsZXQgZT0wLHI9bC5sZW5ndGg7ZTxyO2UrKylmb3IobGV0IHI9MCxpPWxbZV0ubGVuZ3RoO3I8aTtyKyspe2NvbnN0IGk9bFtlXVtyXT8ucmVwbGFjZUFsbCgvXHMvZywiIik7aWYoaSl7aWYoaT09PXQpcmV0dXJue2hlYWRlcjphLHRhYmxlczpjfTtpZighKG4ubGVuZ3RoPDIpKWZvcihjb25zdCBlIG9mIG4paT09PWUmJihzPXtuYW1lOmUsaGVhZGVyOmEsdGFibGVzOmN9KX19fWlmKHMpeygwLHIud2FybikoYFRydWVUeXBlIENvbGxlY3Rpb24gZG9lcyBub3QgY29udGFpbiAiJHt0fSIgZm9udCwgZmFsbGluZyBiYWNrIHRvICIke3MubmFtZX0iIGZvbnQgaW5zdGVhZC5gKTtyZXR1cm57aGVhZGVyOnMuaGVhZGVyLHRhYmxlczpzLnRhYmxlc319dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFRydWVUeXBlIENvbGxlY3Rpb24gZG9lcyBub3QgY29udGFpbiAiJHt0fSIgZm9udC5gKX0odCx0aGlzLm5hbWUpO2Q9ZS5oZWFkZXI7Zj1lLnRhYmxlc31lbHNle2Q9cmVhZE9wZW5UeXBlSGVhZGVyKHQpO2Y9cmVhZFRhYmxlcyh0LGQubnVtVGFibGVzKX1jb25zdCBTPSFmWyJDRkYgIl07aWYoUyl7aWYoIWYubG9jYSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcignUmVxdWlyZWQgImxvY2EiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO2lmKCFmLmdseWYpeygwLHIud2FybikoJ1JlcXVpcmVkICJnbHlmIiB0YWJsZSBpcyBub3QgZm91bmQgLS0gdHJ5aW5nIHRvIHJlY292ZXIuJyk7Zi5nbHlmPXt0YWc6ImdseWYiLGRhdGE6bmV3IFVpbnQ4QXJyYXkoMCl9fXRoaXMuaXNPcGVuVHlwZT0hMX1lbHNle2NvbnN0IHQ9YS5jb21wb3NpdGUmJihhLmNpZFRvR2lkTWFwPy5sZW5ndGg+MHx8IShhLmNNYXAgaW5zdGFuY2VvZiBwLklkZW50aXR5Q01hcCkpO2lmKCJPVFRPIj09PWQudmVyc2lvbiYmIXR8fCFmLmhlYWR8fCFmLmhoZWF8fCFmLm1heHB8fCFmLnBvc3Qpe3c9bmV3IHkuU3RyZWFtKGZbIkNGRiAiXS5kYXRhKTtiPW5ldyB1LkNGRkZvbnQodyxhKTthZGp1c3RXaWR0aHMoYSk7cmV0dXJuIHRoaXMuY29udmVydChlLGIsYSl9ZGVsZXRlIGYuZ2x5ZjtkZWxldGUgZi5sb2NhO2RlbGV0ZSBmLmZwZ207ZGVsZXRlIGYucHJlcDtkZWxldGUgZlsiY3Z0ICJdO3RoaXMuaXNPcGVuVHlwZT0hMH1pZighZi5tYXhwKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdSZXF1aXJlZCAibWF4cCIgdGFibGUgaXMgbm90IGZvdW5kJyk7dC5wb3M9KHQuc3RhcnR8fDApK2YubWF4cC5vZmZzZXQ7Y29uc3QgeD10LmdldEludDMyKCksQz10LmdldFVpbnQxNigpO2lmKGEuc2NhbGVGYWN0b3JzPy5sZW5ndGg9PT1DJiZTKXtjb25zdHtzY2FsZUZhY3RvcnM6ZX09YSx0PWludDE2KGYuaGVhZC5kYXRhWzUwXSxmLmhlYWQuZGF0YVs1MV0pLHI9bmV3IGcuR2x5ZlRhYmxlKHtnbHlmVGFibGU6Zi5nbHlmLmRhdGEsaXNHbHlwaExvY2F0aW9uc0xvbmc6dCxsb2NhVGFibGU6Zi5sb2NhLmRhdGEsbnVtR2x5cGhzOkN9KTtyLnNjYWxlKGUpO2NvbnN0e2dseWY6aSxsb2NhOm4saXNMb2NhdGlvbkxvbmc6c309ci53cml0ZSgpO2YuZ2x5Zi5kYXRhPWk7Zi5sb2NhLmRhdGE9bjtpZihzIT09ISF0KXtmLmhlYWQuZGF0YVs1MF09MDtmLmhlYWQuZGF0YVs1MV09cz8xOjB9Y29uc3Qgbz1mLmhtdHguZGF0YTtmb3IobGV0IHQ9MDt0PEM7dCsrKXtjb25zdCBhPTQqdCxyPU1hdGgucm91bmQoZVt0XSppbnQxNihvW2FdLG9bYSsxXSkpO29bYV09cj4+OCYyNTU7b1thKzFdPTI1NSZyO3dyaXRlU2lnbmVkSW50MTYobyxhKzIsTWF0aC5yb3VuZChlW3RdKnNpZ25lZEludDE2KG9bYSsyXSxvW2ErM10pKSl9fWxldCBrPUMrMSx2PSEwO2lmKGs+NjU1MzUpe3Y9ITE7az1DOygwLHIud2FybikoIk5vdCBlbm91Z2ggc3BhY2UgaW4gZ2x5ZnMgdG8gZHVwbGljYXRlIGZpcnN0IGdseXBoLiIpfWxldCBGPTAsTz0wO2lmKHg+PTY1NTM2JiZmLm1heHAubGVuZ3RoPj0yMil7dC5wb3MrPTg7aWYodC5nZXRVaW50MTYoKT4yKXtmLm1heHAuZGF0YVsxNF09MDtmLm1heHAuZGF0YVsxNV09Mn10LnBvcys9NDtGPXQuZ2V0VWludDE2KCk7dC5wb3MrPTQ7Tz10LmdldFVpbnQxNigpfWYubWF4cC5kYXRhWzRdPWs+Pjg7Zi5tYXhwLmRhdGFbNV09MjU1Jms7Y29uc3QgVD1mdW5jdGlvbiBzYW5pdGl6ZVRUUHJvZ3JhbXMoZSx0LGEsaSl7Y29uc3Qgbj17ZnVuY3Rpb25zRGVmaW5lZDpbXSxmdW5jdGlvbnNVc2VkOltdLGZ1bmN0aW9uc1N0YWNrRGVsdGFzOltdLHRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9uczohMSxoaW50c1ZhbGlkOiEwfTtlJiZzYW5pdGl6ZVRUUHJvZ3JhbShlLG4pO3QmJnNhbml0aXplVFRQcm9ncmFtKHQsbik7ZSYmZnVuY3Rpb24gY2hlY2tJbnZhbGlkRnVuY3Rpb25zKGUsdCl7aWYoIWUudG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zKWlmKGUuZnVuY3Rpb25zRGVmaW5lZC5sZW5ndGg+dCl7KDAsci53YXJuKSgiVFQ6IG1vcmUgZnVuY3Rpb25zIGRlZmluZWQgdGhhbiBleHBlY3RlZCIpO2UuaGludHNWYWxpZD0hMX1lbHNlIGZvcihsZXQgYT0wLGk9ZS5mdW5jdGlvbnNVc2VkLmxlbmd0aDthPGk7YSsrKXtpZihhPnQpeygwLHIud2FybikoIlRUOiBpbnZhbGlkIGZ1bmN0aW9uIGlkOiAiK2EpO2UuaGludHNWYWxpZD0hMTtyZXR1cm59aWYoZS5mdW5jdGlvbnNVc2VkW2FdJiYhZS5mdW5jdGlvbnNEZWZpbmVkW2FdKXsoMCxyLndhcm4pKCJUVDogdW5kZWZpbmVkIGZ1bmN0aW9uOiAiK2EpO2UuaGludHNWYWxpZD0hMTtyZXR1cm59fX0obixpKTtpZihhJiYxJmEubGVuZ3RoKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGEubGVuZ3RoKzEpO2Uuc2V0KGEuZGF0YSk7YS5kYXRhPWV9cmV0dXJuIG4uaGludHNWYWxpZH0oZi5mcGdtLGYucHJlcCxmWyJjdnQgIl0sRik7aWYoIVQpe2RlbGV0ZSBmLmZwZ207ZGVsZXRlIGYucHJlcDtkZWxldGUgZlsiY3Z0ICJdfSFmdW5jdGlvbiBzYW5pdGl6ZU1ldHJpY3MoZSx0LGEsaSxuLHMpe2lmKCF0KXthJiYoYS5kYXRhPW51bGwpO3JldHVybn1lLnBvcz0oZS5zdGFydHx8MCkrdC5vZmZzZXQ7ZS5wb3MrPTQ7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7Y29uc3Qgbz1lLmdldFVpbnQxNigpO2UucG9zKz04O2UucG9zKz0yO2xldCBjPWUuZ2V0VWludDE2KCk7aWYoMCE9PW8pe2lmKCEoMiZpbnQxNihpLmRhdGFbNDRdLGkuZGF0YVs0NV0pKSl7dC5kYXRhWzIyXT0wO3QuZGF0YVsyM109MH19aWYoYz5uKXsoMCxyLmluZm8pKGBUaGUgbnVtT2ZNZXRyaWNzICgke2N9KSBzaG91bGQgbm90IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbnVtR2x5cGhzICgke259KS5gKTtjPW47dC5kYXRhWzM0XT0oNjUyODAmYyk+Pjg7dC5kYXRhWzM1XT0yNTUmY31jb25zdCBsPW4tYy0oYS5sZW5ndGgtNCpjPj4xKTtpZihsPjApe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoYS5sZW5ndGgrMipsKTtlLnNldChhLmRhdGEpO2lmKHMpe2VbYS5sZW5ndGhdPWEuZGF0YVsyXTtlW2EubGVuZ3RoKzFdPWEuZGF0YVszXX1hLmRhdGE9ZX19KHQsZi5oaGVhLGYuaG10eCxmLmhlYWQsayx2KTtpZighZi5oZWFkKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdSZXF1aXJlZCAiaGVhZCIgdGFibGUgaXMgbm90IGZvdW5kJyk7IWZ1bmN0aW9uIHNhbml0aXplSGVhZChlLHQsYSl7Y29uc3QgaT1lLmRhdGEsbj1mdW5jdGlvbiBpbnQzMihlLHQsYSxyKXtyZXR1cm4oZTw8MjQpKyh0PDwxNikrKGE8PDgpK3J9KGlbMF0saVsxXSxpWzJdLGlbM10pO2lmKG4+PjE2IT0xKXsoMCxyLmluZm8pKCJBdHRlbXB0aW5nIHRvIGZpeCBpbnZhbGlkIHZlcnNpb24gaW4gaGVhZCB0YWJsZTogIituKTtpWzBdPTA7aVsxXT0xO2lbMl09MDtpWzNdPTB9Y29uc3Qgcz1pbnQxNihpWzUwXSxpWzUxXSk7aWYoczwwfHxzPjEpeygwLHIuaW5mbykoIkF0dGVtcHRpbmcgdG8gZml4IGludmFsaWQgaW5kZXhUb0xvY0Zvcm1hdCBpbiBoZWFkIHRhYmxlOiAiK3MpO2NvbnN0IGU9dCsxO2lmKGE9PT1lPDwxKXtpWzUwXT0wO2lbNTFdPTB9ZWxzZXtpZihhIT09ZTw8Mil0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiQ291bGQgbm90IGZpeCBpbmRleFRvTG9jRm9ybWF0OiAiK3MpO2lbNTBdPTA7aVs1MV09MX19fShmLmhlYWQsQyxTP2YubG9jYS5sZW5ndGg6MCk7bGV0IE09T2JqZWN0LmNyZWF0ZShudWxsKTtpZihTKXtjb25zdCBlPWludDE2KGYuaGVhZC5kYXRhWzUwXSxmLmhlYWQuZGF0YVs1MV0pLHQ9ZnVuY3Rpb24gc2FuaXRpemVHbHlwaExvY2F0aW9ucyhlLHQsYSxyLGksbixzKXtsZXQgbyxjLGw7aWYocil7bz00O2M9ZnVuY3Rpb24gZm9udEl0ZW1EZWNvZGVMb25nKGUsdCl7cmV0dXJuIGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXX07bD1mdW5jdGlvbiBmb250SXRlbUVuY29kZUxvbmcoZSx0LGEpe2VbdF09YT4+PjI0JjI1NTtlW3QrMV09YT4+MTYmMjU1O2VbdCsyXT1hPj44JjI1NTtlW3QrM109MjU1JmF9fWVsc2V7bz0yO2M9ZnVuY3Rpb24gZm9udEl0ZW1EZWNvZGUoZSx0KXtyZXR1cm4gZVt0XTw8OXxlW3QrMV08PDF9O2w9ZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGUoZSx0LGEpe2VbdF09YT4+OSYyNTU7ZVt0KzFdPWE+PjEmMjU1fX1jb25zdCBoPW4/YSsxOmEsdT1vKigxK2gpLGQ9bmV3IFVpbnQ4QXJyYXkodSk7ZC5zZXQoZS5kYXRhLnN1YmFycmF5KDAsdSkpO2UuZGF0YT1kO2NvbnN0IGY9dC5kYXRhLGc9Zi5sZW5ndGgscD1uZXcgVWludDhBcnJheShnKTtsZXQgbSxiO2NvbnN0IHk9W107Zm9yKG09MCxiPTA7bTxhKzE7bSsrLGIrPW8pe2xldCBlPWMoZCxiKTtlPmcmJihlPWcpO3kucHVzaCh7aW5kZXg6bSxvZmZzZXQ6ZSxlbmRPZmZzZXQ6MH0pfXkuc29ydCgoKGUsdCk9PmUub2Zmc2V0LXQub2Zmc2V0KSk7Zm9yKG09MDttPGE7bSsrKXlbbV0uZW5kT2Zmc2V0PXlbbSsxXS5vZmZzZXQ7eS5zb3J0KCgoZSx0KT0+ZS5pbmRleC10LmluZGV4KSk7Zm9yKG09MDttPGE7bSsrKXtjb25zdHtvZmZzZXQ6ZSxlbmRPZmZzZXQ6dH09eVttXTtpZigwIT09ZXx8MCE9PXQpYnJlYWs7Y29uc3QgYT15W20rMV0ub2Zmc2V0O2lmKDAhPT1hKXt5W21dLmVuZE9mZnNldD1hO2JyZWFrfX1jb25zdCB3PU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IFM9MDtsKGQsMCxTKTtmb3IobT0wLGI9bzttPGE7bSsrLGIrPW8pe2NvbnN0IGU9c2FuaXRpemVHbHlwaChmLHlbbV0ub2Zmc2V0LHlbbV0uZW5kT2Zmc2V0LHAsUyxpKSx0PWUubGVuZ3RoOzA9PT10JiYod1ttXT0hMCk7ZS5zaXplT2ZJbnN0cnVjdGlvbnM+cyYmKHM9ZS5zaXplT2ZJbnN0cnVjdGlvbnMpO1MrPXQ7bChkLGIsUyl9aWYoMD09PVMpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoWzAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OSwwXSk7Zm9yKG09MCxiPW87bTxoO20rKyxiKz1vKWwoZCxiLGUubGVuZ3RoKTt0LmRhdGE9ZX1lbHNlIGlmKG4pe2NvbnN0IGE9YyhkLG8pO2lmKHAubGVuZ3RoPmErUyl0LmRhdGE9cC5zdWJhcnJheSgwLGErUyk7ZWxzZXt0LmRhdGE9bmV3IFVpbnQ4QXJyYXkoYStTKTt0LmRhdGEuc2V0KHAuc3ViYXJyYXkoMCxTKSl9dC5kYXRhLnNldChwLnN1YmFycmF5KDAsYSksUyk7bChlLmRhdGEsZC5sZW5ndGgtbyxTK2EpfWVsc2UgdC5kYXRhPXAuc3ViYXJyYXkoMCxTKTtyZXR1cm57bWlzc2luZ0dseXBoczp3LG1heFNpemVPZkluc3RydWN0aW9uczpzfX0oZi5sb2NhLGYuZ2x5ZixDLGUsVCx2LE8pO009dC5taXNzaW5nR2x5cGhzO2lmKHg+PTY1NTM2JiZmLm1heHAubGVuZ3RoPj0yMil7Zi5tYXhwLmRhdGFbMjZdPXQubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zPj44O2YubWF4cC5kYXRhWzI3XT0yNTUmdC5tYXhTaXplT2ZJbnN0cnVjdGlvbnN9fWlmKCFmLmhoZWEpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJoaGVhIiB0YWJsZSBpcyBub3QgZm91bmQnKTtpZigwPT09Zi5oaGVhLmRhdGFbMTBdJiYwPT09Zi5oaGVhLmRhdGFbMTFdKXtmLmhoZWEuZGF0YVsxMF09MjU1O2YuaGhlYS5kYXRhWzExXT0yNTV9Y29uc3QgRT17dW5pdHNQZXJFbTppbnQxNihmLmhlYWQuZGF0YVsxOF0sZi5oZWFkLmRhdGFbMTldKSx5TWF4OnNpZ25lZEludDE2KGYuaGVhZC5kYXRhWzQyXSxmLmhlYWQuZGF0YVs0M10pLHlNaW46c2lnbmVkSW50MTYoZi5oZWFkLmRhdGFbMzhdLGYuaGVhZC5kYXRhWzM5XSksYXNjZW50OnNpZ25lZEludDE2KGYuaGhlYS5kYXRhWzRdLGYuaGhlYS5kYXRhWzVdKSxkZXNjZW50OnNpZ25lZEludDE2KGYuaGhlYS5kYXRhWzZdLGYuaGhlYS5kYXRhWzddKSxsaW5lR2FwOnNpZ25lZEludDE2KGYuaGhlYS5kYXRhWzhdLGYuaGhlYS5kYXRhWzldKX07dGhpcy5hc2NlbnQ9RS5hc2NlbnQvRS51bml0c1BlckVtO3RoaXMuZGVzY2VudD1FLmRlc2NlbnQvRS51bml0c1BlckVtO3RoaXMubGluZUdhcD1FLmxpbmVHYXAvRS51bml0c1BlckVtO2lmKHRoaXMuY3NzRm9udEluZm8/LmxpbmVIZWlnaHQpe3RoaXMubGluZUhlaWdodD10aGlzLmNzc0ZvbnRJbmZvLm1ldHJpY3MubGluZUhlaWdodDt0aGlzLmxpbmVHYXA9dGhpcy5jc3NGb250SW5mby5tZXRyaWNzLmxpbmVHYXB9ZWxzZSB0aGlzLmxpbmVIZWlnaHQ9dGhpcy5hc2NlbnQtdGhpcy5kZXNjZW50K3RoaXMubGluZUdhcDtmLnBvc3QmJmZ1bmN0aW9uIHJlYWRQb3N0U2NyaXB0VGFibGUoZSxhLGkpe2NvbnN0IHM9KHQuc3RhcnR8fDApK2Uub2Zmc2V0O3QucG9zPXM7Y29uc3Qgbz1zK2UubGVuZ3RoLGM9dC5nZXRJbnQzMigpO3Quc2tpcCgyOCk7bGV0IGwsaCx1PSEwO3N3aXRjaChjKXtjYXNlIDY1NTM2Omw9bi5NYWNTdGFuZGFyZEdseXBoT3JkZXJpbmc7YnJlYWs7Y2FzZSAxMzEwNzI6Y29uc3QgZT10LmdldFVpbnQxNigpO2lmKGUhPT1pKXt1PSExO2JyZWFrfWNvbnN0IHM9W107Zm9yKGg9MDtoPGU7KytoKXtjb25zdCBlPXQuZ2V0VWludDE2KCk7aWYoZT49MzI3Njgpe3U9ITE7YnJlYWt9cy5wdXNoKGUpfWlmKCF1KWJyZWFrO2NvbnN0IGQ9W10sZj1bXTtmb3IoO3QucG9zPG87KXtjb25zdCBlPXQuZ2V0Qnl0ZSgpO2YubGVuZ3RoPWU7Zm9yKGg9MDtoPGU7KytoKWZbaF09U3RyaW5nLmZyb21DaGFyQ29kZSh0LmdldEJ5dGUoKSk7ZC5wdXNoKGYuam9pbigiIikpfWw9W107Zm9yKGg9MDtoPGU7KytoKXtjb25zdCBlPXNbaF07ZTwyNTg/bC5wdXNoKG4uTWFjU3RhbmRhcmRHbHlwaE9yZGVyaW5nW2VdKTpsLnB1c2goZFtlLTI1OF0pfWJyZWFrO2Nhc2UgMTk2NjA4OmJyZWFrO2RlZmF1bHQ6KDAsci53YXJuKSgiVW5rbm93bi91bnN1cHBvcnRlZCBwb3N0IHRhYmxlIHZlcnNpb24gIitjKTt1PSExO2EuZGVmYXVsdEVuY29kaW5nJiYobD1hLmRlZmF1bHRFbmNvZGluZyl9YS5nbHlwaE5hbWVzPWw7cmV0dXJuIHV9KGYucG9zdCxhLEMpO2YucG9zdD17dGFnOiJwb3N0IixkYXRhOmNyZWF0ZVBvc3RUYWJsZShhKX07Y29uc3QgRD1bXTtmdW5jdGlvbiBoYXNHbHlwaChlKXtyZXR1cm4hTVtlXX1pZihhLmNvbXBvc2l0ZSl7Y29uc3QgZT1hLmNpZFRvR2lkTWFwfHxbXSx0PTA9PT1lLmxlbmd0aDthLmNNYXAuZm9yRWFjaCgoZnVuY3Rpb24oYSxpKXsic3RyaW5nIj09dHlwZW9mIGkmJihpPWNvbnZlcnRDaWRTdHJpbmcoYSxpLCEwKSk7aWYoaT42NTUzNSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiTWF4IHNpemUgb2YgQ0lEIGlzIDY1LDUzNSIpO2xldCBuPS0xO3Q/bj1pOnZvaWQgMCE9PWVbaV0mJihuPWVbaV0pO24+PTAmJm48QyYmaGFzR2x5cGgobikmJihEW2FdPW4pfSkpfWVsc2V7Y29uc3QgZT1mdW5jdGlvbiByZWFkQ21hcFRhYmxlKGUsdCxhLGkpe2lmKCFlKXsoMCxyLndhcm4pKCJObyBjbWFwIHRhYmxlIGF2YWlsYWJsZS4iKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19bGV0IG4scz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9czt0LnNraXAoMik7Y29uc3Qgbz10LmdldFVpbnQxNigpO2xldCBjLGw9ITE7Zm9yKGxldCBlPTA7ZTxvO2UrKyl7Y29uc3Qgcj10LmdldFVpbnQxNigpLG49dC5nZXRVaW50MTYoKSxzPXQuZ2V0SW50MzIoKT4+PjA7bGV0IGg9ITE7aWYoYz8ucGxhdGZvcm1JZCE9PXJ8fGM/LmVuY29kaW5nSWQhPT1uKXtpZigwIT09cnx8MCE9PW4mJjEhPT1uJiYzIT09bilpZigxPT09ciYmMD09PW4paD0hMDtlbHNlIGlmKDMhPT1yfHwxIT09bnx8IWkmJmMpe2lmKGEmJjM9PT1yJiYwPT09bil7aD0hMDtsZXQgYT0hMDtpZihlPG8tMSl7Y29uc3QgZT10LnBlZWtCeXRlcygyKTtpbnQxNihlWzBdLGVbMV0pPHImJihhPSExKX1hJiYobD0hMCl9fWVsc2V7aD0hMDthfHwobD0hMCl9ZWxzZSBoPSEwO2gmJihjPXtwbGF0Zm9ybUlkOnIsZW5jb2RpbmdJZDpuLG9mZnNldDpzfSk7aWYobClicmVha319YyYmKHQucG9zPXMrYy5vZmZzZXQpO2lmKCFjfHwtMT09PXQucGVla0J5dGUoKSl7KDAsci53YXJuKSgiQ291bGQgbm90IGZpbmQgYSBwcmVmZXJyZWQgY21hcCB0YWJsZS4iKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19Y29uc3QgaD10LmdldFVpbnQxNigpO2xldCB1PSExO2NvbnN0IGQ9W107bGV0IGYsZztpZigwPT09aCl7dC5za2lwKDQpO2ZvcihmPTA7ZjwyNTY7ZisrKXtjb25zdCBlPXQuZ2V0Qnl0ZSgpO2UmJmQucHVzaCh7Y2hhckNvZGU6ZixnbHlwaElkOmV9KX11PSEwfWVsc2UgaWYoMj09PWgpe3Quc2tpcCg0KTtjb25zdCBlPVtdO2xldCBhPTA7Zm9yKGxldCByPTA7cjwyNTY7cisrKXtjb25zdCByPXQuZ2V0VWludDE2KCk+PjM7ZS5wdXNoKHIpO2E9TWF0aC5tYXgocixhKX1jb25zdCByPVtdO2ZvcihsZXQgZT0wO2U8PWE7ZSsrKXIucHVzaCh7Zmlyc3RDb2RlOnQuZ2V0VWludDE2KCksZW50cnlDb3VudDp0LmdldFVpbnQxNigpLGlkRGVsdGE6c2lnbmVkSW50MTYodC5nZXRCeXRlKCksdC5nZXRCeXRlKCkpLGlkUmFuZ2VQb3M6dC5wb3MrdC5nZXRVaW50MTYoKX0pO2ZvcihsZXQgYT0wO2E8MjU2O2ErKylpZigwPT09ZVthXSl7dC5wb3M9clswXS5pZFJhbmdlUG9zKzIqYTtnPXQuZ2V0VWludDE2KCk7ZC5wdXNoKHtjaGFyQ29kZTphLGdseXBoSWQ6Z30pfWVsc2V7Y29uc3QgaT1yW2VbYV1dO2ZvcihmPTA7ZjxpLmVudHJ5Q291bnQ7ZisrKXtjb25zdCBlPShhPDw4KStmK2kuZmlyc3RDb2RlO3QucG9zPWkuaWRSYW5nZVBvcysyKmY7Zz10LmdldFVpbnQxNigpOzAhPT1nJiYoZz0oZytpLmlkRGVsdGEpJTY1NTM2KTtkLnB1c2goe2NoYXJDb2RlOmUsZ2x5cGhJZDpnfSl9fX1lbHNlIGlmKDQ9PT1oKXt0LnNraXAoNCk7Y29uc3QgZT10LmdldFVpbnQxNigpPj4xO3Quc2tpcCg2KTtjb25zdCBhPVtdO2xldCByO2ZvcihyPTA7cjxlO3IrKylhLnB1c2goe2VuZDp0LmdldFVpbnQxNigpfSk7dC5za2lwKDIpO2ZvcihyPTA7cjxlO3IrKylhW3JdLnN0YXJ0PXQuZ2V0VWludDE2KCk7Zm9yKHI9MDtyPGU7cisrKWFbcl0uZGVsdGE9dC5nZXRVaW50MTYoKTtsZXQgaSxvPTA7Zm9yKHI9MDtyPGU7cisrKXtuPWFbcl07Y29uc3Qgcz10LmdldFVpbnQxNigpO2lmKHMpe2k9KHM+PjEpLShlLXIpO24ub2Zmc2V0SW5kZXg9aTtvPU1hdGgubWF4KG8saStuLmVuZC1uLnN0YXJ0KzEpfWVsc2Ugbi5vZmZzZXRJbmRleD0tMX1jb25zdCBjPVtdO2ZvcihmPTA7ZjxvO2YrKyljLnB1c2godC5nZXRVaW50MTYoKSk7Zm9yKHI9MDtyPGU7cisrKXtuPWFbcl07cz1uLnN0YXJ0O2NvbnN0IGU9bi5lbmQsdD1uLmRlbHRhO2k9bi5vZmZzZXRJbmRleDtmb3IoZj1zO2Y8PWU7ZisrKWlmKDY1NTM1IT09Zil7Zz1pPDA/ZjpjW2krZi1zXTtnPWcrdCY2NTUzNTtkLnB1c2goe2NoYXJDb2RlOmYsZ2x5cGhJZDpnfSl9fX1lbHNlIGlmKDY9PT1oKXt0LnNraXAoNCk7Y29uc3QgZT10LmdldFVpbnQxNigpLGE9dC5nZXRVaW50MTYoKTtmb3IoZj0wO2Y8YTtmKyspe2c9dC5nZXRVaW50MTYoKTtjb25zdCBhPWUrZjtkLnB1c2goe2NoYXJDb2RlOmEsZ2x5cGhJZDpnfSl9fWVsc2V7aWYoMTIhPT1oKXsoMCxyLndhcm4pKCJjbWFwIHRhYmxlIGhhcyB1bnN1cHBvcnRlZCBmb3JtYXQ6ICIraCk7cmV0dXJue3BsYXRmb3JtSWQ6LTEsZW5jb2RpbmdJZDotMSxtYXBwaW5nczpbXSxoYXNTaG9ydENtYXA6ITF9fXt0LnNraXAoMTApO2NvbnN0IGU9dC5nZXRJbnQzMigpPj4+MDtmb3IoZj0wO2Y8ZTtmKyspe2NvbnN0IGU9dC5nZXRJbnQzMigpPj4+MCxhPXQuZ2V0SW50MzIoKT4+PjA7bGV0IHI9dC5nZXRJbnQzMigpPj4+MDtmb3IobGV0IHQ9ZTt0PD1hO3QrKylkLnB1c2goe2NoYXJDb2RlOnQsZ2x5cGhJZDpyKyt9KX19fWQuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jaGFyQ29kZS10LmNoYXJDb2RlfSkpO2ZvcihsZXQgZT0xO2U8ZC5sZW5ndGg7ZSsrKWlmKGRbZS0xXS5jaGFyQ29kZT09PWRbZV0uY2hhckNvZGUpe2Quc3BsaWNlKGUsMSk7ZS0tfXJldHVybntwbGF0Zm9ybUlkOmMucGxhdGZvcm1JZCxlbmNvZGluZ0lkOmMuZW5jb2RpbmdJZCxtYXBwaW5nczpkLGhhc1Nob3J0Q21hcDp1fX0oZi5jbWFwLHQsdGhpcy5pc1N5bWJvbGljRm9udCxhLmhhc0VuY29kaW5nKSxpPWUucGxhdGZvcm1JZCxzPWUuZW5jb2RpbmdJZCxsPWUubWFwcGluZ3M7bGV0IHU9W10sZD0hMTshYS5oYXNFbmNvZGluZ3x8Ik1hY1JvbWFuRW5jb2RpbmciIT09YS5iYXNlRW5jb2RpbmdOYW1lJiYiV2luQW5zaUVuY29kaW5nIiE9PWEuYmFzZUVuY29kaW5nTmFtZXx8KHU9KDAsYy5nZXRFbmNvZGluZykoYS5iYXNlRW5jb2RpbmdOYW1lKSk7aWYoYS5oYXNFbmNvZGluZyYmIXRoaXMuaXNTeW1ib2xpY0ZvbnQmJigzPT09aSYmMT09PXN8fDE9PT1pJiYwPT09cykpe2NvbnN0IGU9KDAsby5nZXRHbHlwaHNVbmljb2RlKSgpO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl7bGV0IHI7cj12b2lkIDAhPT10aGlzLmRpZmZlcmVuY2VzW3RdP3RoaXMuZGlmZmVyZW5jZXNbdF06dS5sZW5ndGgmJiIiIT09dVt0XT91W3RdOmMuU3RhbmRhcmRFbmNvZGluZ1t0XTtpZighciljb250aW51ZTtjb25zdCBvPSgwLG4ucmVjb3ZlckdseXBoTmFtZSkocixlKTtsZXQgZDszPT09aSYmMT09PXM/ZD1lW29dOjE9PT1pJiYwPT09cyYmKGQ9Yy5NYWNSb21hbkVuY29kaW5nLmluZGV4T2YobykpO2lmKHZvaWQgMD09PWQpe2lmKCFhLmdseXBoTmFtZXMmJmEuaGFzSW5jbHVkZWRUb1VuaWNvZGVNYXAmJiEodGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBoLklkZW50aXR5VG9Vbmljb2RlTWFwKSl7Y29uc3QgZT10aGlzLnRvVW5pY29kZS5nZXQodCk7ZSYmKGQ9ZS5jb2RlUG9pbnRBdCgwKSl9aWYodm9pZCAwPT09ZCljb250aW51ZX1mb3IoY29uc3QgZSBvZiBsKWlmKGUuY2hhckNvZGU9PT1kKXtEW3RdPWUuZ2x5cGhJZDticmVha319fWVsc2UgaWYoMD09PWkpe2Zvcihjb25zdCBlIG9mIGwpRFtlLmNoYXJDb2RlXT1lLmdseXBoSWQ7ZD0hMH1lbHNlIGZvcihjb25zdCBlIG9mIGwpe2xldCB0PWUuY2hhckNvZGU7Mz09PWkmJnQ+PTYxNDQwJiZ0PD02MTY5NSYmKHQmPTI1NSk7RFt0XT1lLmdseXBoSWR9aWYoYS5nbHlwaE5hbWVzJiYodS5sZW5ndGh8fHRoaXMuZGlmZmVyZW5jZXMubGVuZ3RoKSlmb3IobGV0IGU9MDtlPDI1NjsrK2Upe2lmKCFkJiZ2b2lkIDAhPT1EW2VdKWNvbnRpbnVlO2NvbnN0IHQ9dGhpcy5kaWZmZXJlbmNlc1tlXXx8dVtlXTtpZighdCljb250aW51ZTtjb25zdCByPWEuZ2x5cGhOYW1lcy5pbmRleE9mKHQpO3I+MCYmaGFzR2x5cGgocikmJihEW2VdPXIpfX0wPT09RC5sZW5ndGgmJihEWzBdPTApO2xldCBOPWstMTt2fHwoTj0wKTtpZighYS5jc3NGb250SW5mbyl7Y29uc3QgZT1hZGp1c3RNYXBwaW5nKEQsaGFzR2x5cGgsTix0aGlzLnRvVW5pY29kZSk7dGhpcy50b0ZvbnRDaGFyPWUudG9Gb250Q2hhcjtmLmNtYXA9e3RhZzoiY21hcCIsZGF0YTpjcmVhdGVDbWFwVGFibGUoZS5jaGFyQ29kZVRvR2x5cGhJZCxlLnRvVW5pY29kZUV4dHJhTWFwLGspfTtmWyJPUy8yIl0mJmZ1bmN0aW9uIHZhbGlkYXRlT1MyVGFibGUoZSx0KXt0LnBvcz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7Y29uc3QgYT10LmdldFVpbnQxNigpO3Quc2tpcCg2MCk7Y29uc3Qgcj10LmdldFVpbnQxNigpO2lmKGE8NCYmNzY4JnIpcmV0dXJuITE7aWYodC5nZXRVaW50MTYoKT50LmdldFVpbnQxNigpKXJldHVybiExO3Quc2tpcCg2KTtpZigwPT09dC5nZXRVaW50MTYoKSlyZXR1cm4hMTtlLmRhdGFbOF09ZS5kYXRhWzldPTA7cmV0dXJuITB9KGZbIk9TLzIiXSx0KXx8KGZbIk9TLzIiXT17dGFnOiJPUy8yIixkYXRhOmNyZWF0ZU9TMlRhYmxlKGEsZS5jaGFyQ29kZVRvR2x5cGhJZCxFKX0pfWlmKCFTKXRyeXt3PW5ldyB5LlN0cmVhbShmWyJDRkYgIl0uZGF0YSk7Yj1uZXcgaS5DRkZQYXJzZXIodyxhLG4uU0VBQ19BTkFMWVNJU19FTkFCTEVEKS5wYXJzZSgpO2IuZHVwbGljYXRlRmlyc3RHbHlwaCgpO2NvbnN0IGU9bmV3IGkuQ0ZGQ29tcGlsZXIoYik7ZlsiQ0ZGICJdLmRhdGE9ZS5jb21waWxlKCl9Y2F0Y2goZSl7KDAsci53YXJuKSgiRmFpbGVkIHRvIGNvbXBpbGUgZm9udCAiK2EubG9hZGVkTmFtZSl9aWYoZi5uYW1lKXtjb25zdFt0LHJdPXJlYWROYW1lVGFibGUoZi5uYW1lKTtmLm5hbWUuZGF0YT1jcmVhdGVOYW1lVGFibGUoZSx0KTt0aGlzLnBzTmFtZT10WzBdWzZdfHxudWxsO2EuY29tcG9zaXRlfHxmdW5jdGlvbiBhZGp1c3RUcnVlVHlwZVRvVW5pY29kZShlLHQsYSl7aWYoZS5pc0ludGVybmFsRm9udClyZXR1cm47aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcClyZXR1cm47aWYoZS5oYXNFbmNvZGluZylyZXR1cm47aWYoZS50b1VuaWNvZGUgaW5zdGFuY2VvZiBoLklkZW50aXR5VG9Vbmljb2RlTWFwKXJldHVybjtpZighdClyZXR1cm47aWYoMD09PWEubGVuZ3RoKXJldHVybjtpZihlLmRlZmF1bHRFbmNvZGluZz09PWMuV2luQW5zaUVuY29kaW5nKXJldHVybjtmb3IoY29uc3QgZSBvZiBhKWlmKCFpc1dpbk5hbWVSZWNvcmQoZSkpcmV0dXJuO2NvbnN0IHI9Yy5XaW5BbnNpRW5jb2RpbmcsaT1bXSxuPSgwLG8uZ2V0R2x5cGhzVW5pY29kZSkoKTtmb3IoY29uc3QgZSBpbiByKXtjb25zdCB0PXJbZV07aWYoIiI9PT10KWNvbnRpbnVlO2NvbnN0IGE9blt0XTt2b2lkIDAhPT1hJiYoaVtlXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpKX1pLmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZChpKX0oYSx0aGlzLmlzU3ltYm9saWNGb250LHIpfWVsc2UgZi5uYW1lPXt0YWc6Im5hbWUiLGRhdGE6Y3JlYXRlTmFtZVRhYmxlKHRoaXMubmFtZSl9O2NvbnN0IFI9bmV3IG0uT3BlblR5cGVGaWxlQnVpbGRlcihkLnZlcnNpb24pO2Zvcihjb25zdCBlIGluIGYpUi5hZGRUYWJsZShlLGZbZV0uZGF0YSk7cmV0dXJuIFIudG9BcnJheSgpfWNvbnZlcnQoZSx0LGEpe2EuZml4ZWRQaXRjaD0hMTthLmJ1aWx0SW5FbmNvZGluZyYmZnVuY3Rpb24gYWRqdXN0VHlwZTFUb1VuaWNvZGUoZSx0KXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZih0PT09ZS5kZWZhdWx0RW5jb2RpbmcpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgaC5JZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47Y29uc3QgYT1bXSxyPSgwLG8uZ2V0R2x5cGhzVW5pY29kZSkoKTtmb3IoY29uc3QgaSBpbiB0KXtpZihlLmhhc0VuY29kaW5nJiYoZS5iYXNlRW5jb2RpbmdOYW1lfHx2b2lkIDAhPT1lLmRpZmZlcmVuY2VzW2ldKSljb250aW51ZTtjb25zdCBuPXRbaV0sbz0oMCxzLmdldFVuaWNvZGVGb3JHbHlwaCkobixyKTstMSE9PW8mJihhW2ldPVN0cmluZy5mcm9tQ2hhckNvZGUobykpfWEubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKGEpfShhLGEuYnVpbHRJbkVuY29kaW5nKTtsZXQgaT0xO3QgaW5zdGFuY2VvZiB1LkNGRkZvbnQmJihpPXQubnVtR2x5cGhzLTEpO2NvbnN0IGw9dC5nZXRHbHlwaE1hcHBpbmcoYSk7bGV0IGQ9bnVsbCxmPWwsZz1udWxsO2lmKCFhLmNzc0ZvbnRJbmZvKXtkPWFkanVzdE1hcHBpbmcobCx0Lmhhc0dseXBoSWQuYmluZCh0KSxpLHRoaXMudG9Vbmljb2RlKTt0aGlzLnRvRm9udENoYXI9ZC50b0ZvbnRDaGFyO2Y9ZC5jaGFyQ29kZVRvR2x5cGhJZDtnPWQudG9Vbmljb2RlRXh0cmFNYXB9Y29uc3QgcD10Lm51bUdseXBocztmdW5jdGlvbiBnZXRDaGFyQ29kZXMoZSx0KXtsZXQgYT1udWxsO2Zvcihjb25zdCByIGluIGUpdD09PWVbcl0mJihhfHw9W10pLnB1c2goMHxyKTtyZXR1cm4gYX1mdW5jdGlvbiBjcmVhdGVDaGFyQ29kZShlLHQpe2Zvcihjb25zdCBhIGluIGUpaWYodD09PWVbYV0pcmV0dXJuIDB8YTtkLmNoYXJDb2RlVG9HbHlwaElkW2QubmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZV09dDtyZXR1cm4gZC5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlKyt9Y29uc3QgYj10LnNlYWNzO2lmKGQmJm4uU0VBQ19BTkFMWVNJU19FTkFCTEVEJiZiPy5sZW5ndGgpe2NvbnN0IGU9YS5mb250TWF0cml4fHxyLkZPTlRfSURFTlRJVFlfTUFUUklYLGk9dC5nZXRDaGFyc2V0KCksbj1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgdCBpbiBiKXt0fD0wO2NvbnN0IGE9Ylt0XSxyPWMuU3RhbmRhcmRFbmNvZGluZ1thWzJdXSxzPWMuU3RhbmRhcmRFbmNvZGluZ1thWzNdXSxvPWkuaW5kZXhPZihyKSxoPWkuaW5kZXhPZihzKTtpZihvPDB8fGg8MCljb250aW51ZTtjb25zdCB1PXt4OmFbMF0qZVswXSthWzFdKmVbMl0rZVs0XSx5OmFbMF0qZVsxXSthWzFdKmVbM10rZVs1XX0sZj1nZXRDaGFyQ29kZXMobCx0KTtpZihmKWZvcihjb25zdCBlIG9mIGYpe2NvbnN0IHQ9ZC5jaGFyQ29kZVRvR2x5cGhJZCxhPWNyZWF0ZUNoYXJDb2RlKHQsbykscj1jcmVhdGVDaGFyQ29kZSh0LGgpO25bZV09e2Jhc2VGb250Q2hhckNvZGU6YSxhY2NlbnRGb250Q2hhckNvZGU6cixhY2NlbnRPZmZzZXQ6dX19fWEuc2VhY01hcD1ufWNvbnN0IHk9MS8oYS5mb250TWF0cml4fHxyLkZPTlRfSURFTlRJVFlfTUFUUklYKVswXSx3PW5ldyBtLk9wZW5UeXBlRmlsZUJ1aWxkZXIoIk9UVE8iKTt3LmFkZFRhYmxlKCJDRkYgIix0LmRhdGEpO3cuYWRkVGFibGUoIk9TLzIiLGNyZWF0ZU9TMlRhYmxlKGEsZikpO3cuYWRkVGFibGUoImNtYXAiLGNyZWF0ZUNtYXBUYWJsZShmLGcscCkpO3cuYWRkVGFibGUoImhlYWQiLCJcMAFcMFwwXDBcMBBcMFwwXDBcMFwwXw88w7VcMFwwIitzYWZlU3RyaW5nMTYoeSkrIlwwXDBcMFwwwp5cdn4nXDBcMFwwXDDCnlx2fidcMFwwIitzYWZlU3RyaW5nMTYoYS5kZXNjZW50KSsiD8O/IitzYWZlU3RyaW5nMTYoYS5hc2NlbnQpK3N0cmluZzE2KGEuaXRhbGljQW5nbGU/MjowKSsiXDARXDBcMFwwXDBcMFwwIik7dy5hZGRUYWJsZSgiaGhlYSIsIlwwAVwwXDAiK3NhZmVTdHJpbmcxNihhLmFzY2VudCkrc2FmZVN0cmluZzE2KGEuZGVzY2VudCkrIlwwXDDDv8O/XDBcMFwwXDBcMFwwIitzYWZlU3RyaW5nMTYoYS5jYXBIZWlnaHQpK3NhZmVTdHJpbmcxNihNYXRoLnRhbihhLml0YWxpY0FuZ2xlKSphLnhIZWlnaHQpKyJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiK3N0cmluZzE2KHApKTt3LmFkZFRhYmxlKCJobXR4IixmdW5jdGlvbiBmb250RmllbGRzSG10eCgpe2NvbnN0IGU9dC5jaGFyc3RyaW5ncyxhPXQuY2ZmP3QuY2ZmLndpZHRoczpudWxsO2xldCByPSJcMFwwXDBcMCI7Zm9yKGxldCB0PTEsaT1wO3Q8aTt0Kyspe2xldCBpPTA7aWYoZSl7Y29uc3QgYT1lW3QtMV07aT0id2lkdGgiaW4gYT9hLndpZHRoOjB9ZWxzZSBhJiYoaT1NYXRoLmNlaWwoYVt0XXx8MCkpO3IrPXN0cmluZzE2KGkpK3N0cmluZzE2KDApfXJldHVybiByfSgpKTt3LmFkZFRhYmxlKCJtYXhwIiwiXDBcMFBcMCIrc3RyaW5nMTYocCkpO3cuYWRkVGFibGUoIm5hbWUiLGNyZWF0ZU5hbWVUYWJsZShlKSk7dy5hZGRUYWJsZSgicG9zdCIsY3JlYXRlUG9zdFRhYmxlKGEpKTtyZXR1cm4gdy50b0FycmF5KCl9Z2V0IHNwYWNlV2lkdGgoKXtjb25zdCBlPVsic3BhY2UiLCJtaW51cyIsIm9uZSIsImkiLCJJIl07bGV0IHQ7Zm9yKGNvbnN0IGEgb2YgZSl7aWYoYSBpbiB0aGlzLndpZHRocyl7dD10aGlzLndpZHRoc1thXTticmVha31jb25zdCBlPSgwLG8uZ2V0R2x5cGhzVW5pY29kZSkoKVthXTtsZXQgcj0wO2lmKHRoaXMuY29tcG9zaXRlJiZ0aGlzLmNNYXAuY29udGFpbnMoZSkpe3I9dGhpcy5jTWFwLmxvb2t1cChlKTsic3RyaW5nIj09dHlwZW9mIHImJihyPWNvbnZlcnRDaWRTdHJpbmcoZSxyKSl9IXImJnRoaXMudG9Vbmljb2RlJiYocj10aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKGUpKTtyPD0wJiYocj1lKTt0PXRoaXMud2lkdGhzW3JdO2lmKHQpYnJlYWt9cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInNwYWNlV2lkdGgiLHR8fHRoaXMuZGVmYXVsdFdpZHRoKX1fY2hhclRvR2x5cGgoZSx0PSExKXtsZXQgYSxpLG4sbz10aGlzLl9nbHlwaENhY2hlW2VdO2lmKG8/LmlzU3BhY2U9PT10KXJldHVybiBvO2xldCBjPWU7aWYodGhpcy5jTWFwPy5jb250YWlucyhlKSl7Yz10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgYyYmKGM9Y29udmVydENpZFN0cmluZyhlLGMpKX1pPXRoaXMud2lkdGhzW2NdOyJudW1iZXIiIT10eXBlb2YgaSYmKGk9dGhpcy5kZWZhdWx0V2lkdGgpO2NvbnN0IGw9dGhpcy52bWV0cmljcz8uW2NdO2xldCBoPXRoaXMudG9Vbmljb2RlLmdldChlKXx8ZTsibnVtYmVyIj09dHlwZW9mIGgmJihoPVN0cmluZy5mcm9tQ2hhckNvZGUoaCkpO2xldCB1PXZvaWQgMCE9PXRoaXMudG9Gb250Q2hhcltlXTthPXRoaXMudG9Gb250Q2hhcltlXXx8ZTtpZih0aGlzLm1pc3NpbmdGaWxlKXtjb25zdCB0PXRoaXMuZGlmZmVyZW5jZXNbZV18fHRoaXMuZGVmYXVsdEVuY29kaW5nW2VdOyIubm90ZGVmIiE9PXQmJiIiIT09dHx8IlR5cGUxIiE9PXRoaXMudHlwZXx8KGE9MzIpO2E9KDAscy5tYXBTcGVjaWFsVW5pY29kZVZhbHVlcykoYSl9dGhpcy5pc1R5cGUzRm9udCYmKG49YSk7bGV0IGQ9bnVsbDtpZih0aGlzLnNlYWNNYXA/LltlXSl7dT0hMDtjb25zdCB0PXRoaXMuc2VhY01hcFtlXTthPXQuYmFzZUZvbnRDaGFyQ29kZTtkPXtmb250Q2hhcjpTdHJpbmcuZnJvbUNvZGVQb2ludCh0LmFjY2VudEZvbnRDaGFyQ29kZSksb2Zmc2V0OnQuYWNjZW50T2Zmc2V0fX1sZXQgZj0iIjsibnVtYmVyIj09dHlwZW9mIGEmJihhPD0xMTE0MTExP2Y9U3RyaW5nLmZyb21Db2RlUG9pbnQoYSk6KDAsci53YXJuKShgY2hhclRvR2x5cGggLSBpbnZhbGlkIGZvbnRDaGFyQ29kZTogJHthfWApKTtvPW5ldyBHbHlwaChlLGYsaCxkLGksbCxuLHQsdSk7cmV0dXJuIHRoaXMuX2dseXBoQ2FjaGVbZV09b31jaGFyc1RvR2x5cGhzKGUpe2xldCB0PXRoaXMuX2NoYXJzQ2FjaGVbZV07aWYodClyZXR1cm4gdDt0PVtdO2lmKHRoaXMuY01hcCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9ZS5sZW5ndGg7bGV0IGk9MDtmb3IoO2k8cjspe3RoaXMuY01hcC5yZWFkQ2hhckNvZGUoZSxpLGEpO2NvbnN0e2NoYXJjb2RlOnIsbGVuZ3RoOm59PWE7aSs9bjtjb25zdCBzPXRoaXMuX2NoYXJUb0dseXBoKHIsMT09PW4mJjMyPT09ZS5jaGFyQ29kZUF0KGktMSkpO3QucHVzaChzKX19ZWxzZSBmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjsrK2Epe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KGEpLGk9dGhpcy5fY2hhclRvR2x5cGgociwzMj09PXIpO3QucHVzaChpKX1yZXR1cm4gdGhpcy5fY2hhcnNDYWNoZVtlXT10fWdldENoYXJQb3NpdGlvbnMoZSl7Y29uc3QgdD1bXTtpZih0aGlzLmNNYXApe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgcj0wO2Zvcig7cjxlLmxlbmd0aDspe3RoaXMuY01hcC5yZWFkQ2hhckNvZGUoZSxyLGEpO2NvbnN0IGk9YS5sZW5ndGg7dC5wdXNoKFtyLHIraV0pO3IrPWl9fWVsc2UgZm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7KythKXQucHVzaChbYSxhKzFdKTtyZXR1cm4gdH1nZXQgZ2x5cGhDYWNoZVZhbHVlcygpe3JldHVybiBPYmplY3QudmFsdWVzKHRoaXMuX2dseXBoQ2FjaGUpfWVuY29kZVN0cmluZyhlKXtjb25zdCB0PVtdLGE9W10saGFzQ3VycmVudEJ1ZkVycm9ycz0oKT0+dC5sZW5ndGglMj09MSxyPXRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgaC5JZGVudGl0eVRvVW5pY29kZU1hcD9lPT50aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKGUpOmU9PnRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoU3RyaW5nLmZyb21Db2RlUG9pbnQoZSkpO2ZvcihsZXQgaT0wLG49ZS5sZW5ndGg7aTxuO2krKyl7Y29uc3Qgbj1lLmNvZGVQb2ludEF0KGkpO24+NTUyOTUmJihuPDU3MzQ0fHxuPjY1NTMzKSYmaSsrO2lmKHRoaXMudG9Vbmljb2RlKXtjb25zdCBlPXIobik7aWYoLTEhPT1lKXtpZihoYXNDdXJyZW50QnVmRXJyb3JzKCkpe3QucHVzaChhLmpvaW4oIiIpKTthLmxlbmd0aD0wfWZvcihsZXQgdD0odGhpcy5jTWFwP3RoaXMuY01hcC5nZXRDaGFyQ29kZUxlbmd0aChlKToxKS0xO3Q+PTA7dC0tKWEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjgqdCYyNTUpKTtjb250aW51ZX19aWYoIWhhc0N1cnJlbnRCdWZFcnJvcnMoKSl7dC5wdXNoKGEuam9pbigiIikpO2EubGVuZ3RoPTB9YS5wdXNoKFN0cmluZy5mcm9tQ29kZVBvaW50KG4pKX10LnB1c2goYS5qb2luKCIiKSk7cmV0dXJuIHR9fTt0LkVycm9yRm9udD1jbGFzcyBFcnJvckZvbnR7Y29uc3RydWN0b3IoZSl7dGhpcy5lcnJvcj1lO3RoaXMubG9hZGVkTmFtZT0iZ19mb250X2Vycm9yIjt0aGlzLm1pc3NpbmdGaWxlPSEwfWNoYXJzVG9HbHlwaHMoKXtyZXR1cm5bXX1lbmNvZGVTdHJpbmcoZSl7cmV0dXJuW2VdfWV4cG9ydERhdGEoZT0hMSl7cmV0dXJue2Vycm9yOnRoaXMuZXJyb3J9fX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DRkZUb3BEaWN0PXQuQ0ZGU3RyaW5ncz10LkNGRlN0YW5kYXJkU3RyaW5ncz10LkNGRlByaXZhdGVEaWN0PXQuQ0ZGUGFyc2VyPXQuQ0ZGSW5kZXg9dC5DRkZIZWFkZXI9dC5DRkZGRFNlbGVjdD10LkNGRkNvbXBpbGVyPXQuQ0ZGQ2hhcnNldD10LkNGRj12b2lkIDA7dmFyIHI9YSgyKSxpPWEoMzYpLG49YSgzNyk7Y29uc3Qgcz1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwicXVlc3Rpb25kb3duIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiQUUiLCJvcmRmZW1pbmluZSIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiYWUiLCJkb3RsZXNzaSIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIm9uZXN1cGVyaW9yIiwibG9naWNhbG5vdCIsIm11IiwidHJhZGVtYXJrIiwiRXRoIiwib25laGFsZiIsInBsdXNtaW51cyIsIlRob3JuIiwib25lcXVhcnRlciIsImRpdmlkZSIsImJyb2tlbmJhciIsImRlZ3JlZSIsInRob3JuIiwidGhyZWVxdWFydGVycyIsInR3b3N1cGVyaW9yIiwicmVnaXN0ZXJlZCIsIm1pbnVzIiwiZXRoIiwibXVsdGlwbHkiLCJ0aHJlZXN1cGVyaW9yIiwiY29weXJpZ2h0IiwiQWFjdXRlIiwiQWNpcmN1bWZsZXgiLCJBZGllcmVzaXMiLCJBZ3JhdmUiLCJBcmluZyIsIkF0aWxkZSIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk50aWxkZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT2RpZXJlc2lzIiwiT2dyYXZlIiwiT3RpbGRlIiwiU2Nhcm9uIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJVZ3JhdmUiLCJZYWN1dGUiLCJZZGllcmVzaXMiLCJaY2Fyb24iLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImFncmF2ZSIsImFyaW5nIiwiYXRpbGRlIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImVncmF2ZSIsImlhY3V0ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwiaWdyYXZlIiwibnRpbGRlIiwib2FjdXRlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvZ3JhdmUiLCJvdGlsZGUiLCJzY2Fyb24iLCJ1YWN1dGUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsInVncmF2ZSIsInlhY3V0ZSIsInlkaWVyZXNpcyIsInpjYXJvbiIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCJpc3VwZXJpb3IiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCJmZiIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuc3VwZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCJleGNsYW1kb3duc21hbGwiLCJjZW50b2xkc3R5bGUiLCJMc2xhc2hzbWFsbCIsIlNjYXJvbnNtYWxsIiwiWmNhcm9uc21hbGwiLCJEaWVyZXNpc3NtYWxsIiwiQnJldmVzbWFsbCIsIkNhcm9uc21hbGwiLCJEb3RhY2NlbnRzbWFsbCIsIk1hY3JvbnNtYWxsIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwiT2dvbmVrc21hbGwiLCJSaW5nc21hbGwiLCJDZWRpbGxhc21hbGwiLCJxdWVzdGlvbmRvd25zbWFsbCIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCJ6ZXJvc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiLCIwMDEuMDAwIiwiMDAxLjAwMSIsIjAwMS4wMDIiLCIwMDEuMDAzIiwiQmxhY2siLCJCb2xkIiwiQm9vayIsIkxpZ2h0IiwiTWVkaXVtIiwiUmVndWxhciIsIlJvbWFuIiwiU2VtaWJvbGQiXTt0LkNGRlN0YW5kYXJkU3RyaW5ncz1zO2NvbnN0IG89MzkxLGM9W251bGwse2lkOiJoc3RlbSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSxudWxsLHtpZDoidnN0ZW0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0se2lkOiJ2bW92ZXRvIixtaW46MSxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InJsaW5ldG8iLG1pbjoyLHJlc2V0U3RhY2s6ITB9LHtpZDoiaGxpbmV0byIsbWluOjEscmVzZXRTdGFjazohMH0se2lkOiJ2bGluZXRvIixtaW46MSxyZXNldFN0YWNrOiEwfSx7aWQ6InJyY3VydmV0byIsbWluOjYscmVzZXRTdGFjazohMH0sbnVsbCx7aWQ6ImNhbGxzdWJyIixtaW46MSx1bmRlZlN0YWNrOiEwfSx7aWQ6InJldHVybiIsbWluOjAsdW5kZWZTdGFjazohMH0sbnVsbCxudWxsLHtpZDoiZW5kY2hhciIsbWluOjAsc3RhY2tDbGVhcmluZzohMH0sbnVsbCxudWxsLG51bGwse2lkOiJoc3RlbWhtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoiaGludG1hc2siLG1pbjowLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoiY250cm1hc2siLG1pbjowLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoicm1vdmV0byIsbWluOjIsc3RhY2tDbGVhcmluZzohMH0se2lkOiJobW92ZXRvIixtaW46MSxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InZzdGVtaG0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0se2lkOiJyY3VydmVsaW5lIixtaW46OCxyZXNldFN0YWNrOiEwfSx7aWQ6InJsaW5lY3VydmUiLG1pbjo4LHJlc2V0U3RhY2s6ITB9LHtpZDoidnZjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSx7aWQ6ImhoY3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0sbnVsbCx7aWQ6ImNhbGxnc3ViciIsbWluOjEsdW5kZWZTdGFjazohMH0se2lkOiJ2aGN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LHtpZDoiaHZjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfV0sbD1bbnVsbCxudWxsLG51bGwse2lkOiJhbmQiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LHtpZDoib3IiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LHtpZDoibm90IixtaW46MSxzdGFja0RlbHRhOjB9LG51bGwsbnVsbCxudWxsLHtpZDoiYWJzIixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiYWRkIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdK2VbdC0xXX19LHtpZDoic3ViIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdLWVbdC0xXX19LHtpZDoiZGl2IixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdL2VbdC0xXX19LG51bGwse2lkOiJuZWciLG1pbjoxLHN0YWNrRGVsdGE6MCxzdGFja0ZuKGUsdCl7ZVt0LTFdPS1lW3QtMV19fSx7aWQ6ImVxIixtaW46MixzdGFja0RlbHRhOi0xfSxudWxsLG51bGwse2lkOiJkcm9wIixtaW46MSxzdGFja0RlbHRhOi0xfSxudWxsLHtpZDoicHV0IixtaW46MixzdGFja0RlbHRhOi0yfSx7aWQ6ImdldCIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImlmZWxzZSIsbWluOjQsc3RhY2tEZWx0YTotM30se2lkOiJyYW5kb20iLG1pbjowLHN0YWNrRGVsdGE6MX0se2lkOiJtdWwiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0qZVt0LTFdfX0sbnVsbCx7aWQ6InNxcnQiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJkdXAiLG1pbjoxLHN0YWNrRGVsdGE6MX0se2lkOiJleGNoIixtaW46MixzdGFja0RlbHRhOjB9LHtpZDoiaW5kZXgiLG1pbjoyLHN0YWNrRGVsdGE6MH0se2lkOiJyb2xsIixtaW46MyxzdGFja0RlbHRhOi0yfSxudWxsLG51bGwsbnVsbCx7aWQ6ImhmbGV4IixtaW46NyxyZXNldFN0YWNrOiEwfSx7aWQ6ImZsZXgiLG1pbjoxMyxyZXNldFN0YWNrOiEwfSx7aWQ6ImhmbGV4MSIsbWluOjkscmVzZXRTdGFjazohMH0se2lkOiJmbGV4MSIsbWluOjExLHJlc2V0U3RhY2s6ITB9XTt0LkNGRlBhcnNlcj1jbGFzcyBDRkZQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuYnl0ZXM9ZS5nZXRCeXRlcygpO3RoaXMucHJvcGVydGllcz10O3RoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZD0hIWF9cGFyc2UoKXtjb25zdCBlPXRoaXMucHJvcGVydGllcyx0PW5ldyBDRkY7dGhpcy5jZmY9dDtjb25zdCBhPXRoaXMucGFyc2VIZWFkZXIoKSxyPXRoaXMucGFyc2VJbmRleChhLmVuZFBvcyksaT10aGlzLnBhcnNlSW5kZXgoci5lbmRQb3MpLG49dGhpcy5wYXJzZUluZGV4KGkuZW5kUG9zKSxzPXRoaXMucGFyc2VJbmRleChuLmVuZFBvcyksbz10aGlzLnBhcnNlRGljdChpLm9iai5nZXQoMCkpLGM9dGhpcy5jcmVhdGVEaWN0KENGRlRvcERpY3Qsbyx0LnN0cmluZ3MpO3QuaGVhZGVyPWEub2JqO3QubmFtZXM9dGhpcy5wYXJzZU5hbWVJbmRleChyLm9iaik7dC5zdHJpbmdzPXRoaXMucGFyc2VTdHJpbmdJbmRleChuLm9iaik7dC50b3BEaWN0PWM7dC5nbG9iYWxTdWJySW5kZXg9cy5vYmo7dGhpcy5wYXJzZVByaXZhdGVEaWN0KHQudG9wRGljdCk7dC5pc0NJREZvbnQ9Yy5oYXNOYW1lKCJST1MiKTtjb25zdCBsPWMuZ2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIpLGg9dGhpcy5wYXJzZUluZGV4KGwpLm9iaix1PWMuZ2V0QnlOYW1lKCJGb250TWF0cml4Iik7dSYmKGUuZm9udE1hdHJpeD11KTtjb25zdCBkPWMuZ2V0QnlOYW1lKCJGb250QkJveCIpO2lmKGQpe2UuYXNjZW50PU1hdGgubWF4KGRbM10sZFsxXSk7ZS5kZXNjZW50PU1hdGgubWluKGRbMV0sZFszXSk7ZS5hc2NlbnRTY2FsZWQ9ITB9bGV0IGYsZztpZih0LmlzQ0lERm9udCl7Y29uc3QgZT10aGlzLnBhcnNlSW5kZXgoYy5nZXRCeU5hbWUoIkZEQXJyYXkiKSkub2JqO2ZvcihsZXQgYT0wLHI9ZS5jb3VudDthPHI7KythKXtjb25zdCByPWUuZ2V0KGEpLGk9dGhpcy5jcmVhdGVEaWN0KENGRlRvcERpY3QsdGhpcy5wYXJzZURpY3QociksdC5zdHJpbmdzKTt0aGlzLnBhcnNlUHJpdmF0ZURpY3QoaSk7dC5mZEFycmF5LnB1c2goaSl9Zz1udWxsO2Y9dGhpcy5wYXJzZUNoYXJzZXRzKGMuZ2V0QnlOYW1lKCJjaGFyc2V0IiksaC5jb3VudCx0LnN0cmluZ3MsITApO3QuZmRTZWxlY3Q9dGhpcy5wYXJzZUZEU2VsZWN0KGMuZ2V0QnlOYW1lKCJGRFNlbGVjdCIpLGguY291bnQpfWVsc2V7Zj10aGlzLnBhcnNlQ2hhcnNldHMoYy5nZXRCeU5hbWUoImNoYXJzZXQiKSxoLmNvdW50LHQuc3RyaW5ncywhMSk7Zz10aGlzLnBhcnNlRW5jb2RpbmcoYy5nZXRCeU5hbWUoIkVuY29kaW5nIiksZSx0LnN0cmluZ3MsZi5jaGFyc2V0KX10LmNoYXJzZXQ9Zjt0LmVuY29kaW5nPWc7Y29uc3QgcD10aGlzLnBhcnNlQ2hhclN0cmluZ3Moe2NoYXJTdHJpbmdzOmgsbG9jYWxTdWJySW5kZXg6Yy5wcml2YXRlRGljdC5zdWJyc0luZGV4LGdsb2JhbFN1YnJJbmRleDpzLm9iaixmZFNlbGVjdDp0LmZkU2VsZWN0LGZkQXJyYXk6dC5mZEFycmF5LHByaXZhdGVEaWN0OmMucHJpdmF0ZURpY3R9KTt0LmNoYXJTdHJpbmdzPXAuY2hhclN0cmluZ3M7dC5zZWFjcz1wLnNlYWNzO3Qud2lkdGhzPXAud2lkdGhzO3JldHVybiB0fXBhcnNlSGVhZGVyKCl7bGV0IGU9dGhpcy5ieXRlcztjb25zdCB0PWUubGVuZ3RoO2xldCBhPTA7Zm9yKDthPHQmJjEhPT1lW2FdOykrK2E7aWYoYT49dCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBDRkYgaGVhZGVyIik7aWYoMCE9PWEpeygwLHIuaW5mbykoImNmZiBkYXRhIGlzIHNoaWZ0ZWQiKTtlPWUuc3ViYXJyYXkoYSk7dGhpcy5ieXRlcz1lfWNvbnN0IGk9ZVswXSxuPWVbMV0scz1lWzJdLG89ZVszXTtyZXR1cm57b2JqOm5ldyBDRkZIZWFkZXIoaSxuLHMsbyksZW5kUG9zOnN9fXBhcnNlRGljdChlKXtsZXQgdD0wO2Z1bmN0aW9uIHBhcnNlT3BlcmFuZCgpe2xldCBhPWVbdCsrXTtpZigzMD09PWEpcmV0dXJuIGZ1bmN0aW9uIHBhcnNlRmxvYXRPcGVyYW5kKCl7bGV0IGE9IiI7Y29uc3Qgcj0xNSxpPVsiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIi4iLCJFIiwiRS0iLG51bGwsIi0iXSxuPWUubGVuZ3RoO2Zvcig7dDxuOyl7Y29uc3Qgbj1lW3QrK10scz1uPj40LG89MTUmbjtpZihzPT09cilicmVhazthKz1pW3NdO2lmKG89PT1yKWJyZWFrO2ErPWlbb119cmV0dXJuIHBhcnNlRmxvYXQoYSl9KCk7aWYoMjg9PT1hKXthPWVbdCsrXTthPShhPDwyNHxlW3QrK108PDE2KT4+MTY7cmV0dXJuIGF9aWYoMjk9PT1hKXthPWVbdCsrXTthPWE8PDh8ZVt0KytdO2E9YTw8OHxlW3QrK107YT1hPDw4fGVbdCsrXTtyZXR1cm4gYX1pZihhPj0zMiYmYTw9MjQ2KXJldHVybiBhLTEzOTtpZihhPj0yNDcmJmE8PTI1MClyZXR1cm4gMjU2KihhLTI0NykrZVt0KytdKzEwODtpZihhPj0yNTEmJmE8PTI1NClyZXR1cm4tMjU2KihhLTI1MSktZVt0KytdLTEwODsoMCxyLndhcm4pKCdDRkZQYXJzZXJfcGFyc2VEaWN0OiAiJythKyciIGlzIGEgcmVzZXJ2ZWQgY29tbWFuZC4nKTtyZXR1cm4gTmFOfWxldCBhPVtdO2NvbnN0IGk9W107dD0wO2NvbnN0IG49ZS5sZW5ndGg7Zm9yKDt0PG47KXtsZXQgcj1lW3RdO2lmKHI8PTIxKXsxMj09PXImJihyPXI8PDh8ZVsrK3RdKTtpLnB1c2goW3IsYV0pO2E9W107Kyt0fWVsc2UgYS5wdXNoKHBhcnNlT3BlcmFuZCgpKX1yZXR1cm4gaX1wYXJzZUluZGV4KGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4LGE9dGhpcy5ieXRlcyxyPWFbZSsrXTw8OHxhW2UrK10saT1bXTtsZXQgbixzLG89ZTtpZigwIT09cil7Y29uc3QgdD1hW2UrK10sYz1lKyhyKzEpKnQtMTtmb3Iobj0wLHM9cisxO248czsrK24pe2xldCByPTA7Zm9yKGxldCBpPTA7aTx0OysraSl7cjw8PTg7cis9YVtlKytdfWkucHVzaChjK3IpfW89aVtyXX1mb3Iobj0wLHM9aS5sZW5ndGgtMTtuPHM7KytuKXtjb25zdCBlPWlbbl0scj1pW24rMV07dC5hZGQoYS5zdWJhcnJheShlLHIpKX1yZXR1cm57b2JqOnQsZW5kUG9zOm99fXBhcnNlTmFtZUluZGV4KGUpe2NvbnN0IHQ9W107Zm9yKGxldCBhPTAsaT1lLmNvdW50O2E8aTsrK2Epe2NvbnN0IGk9ZS5nZXQoYSk7dC5wdXNoKCgwLHIuYnl0ZXNUb1N0cmluZykoaSkpfXJldHVybiB0fXBhcnNlU3RyaW5nSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGU3RyaW5ncztmb3IobGV0IGE9MCxpPWUuY291bnQ7YTxpOysrYSl7Y29uc3QgaT1lLmdldChhKTt0LmFkZCgoMCxyLmJ5dGVzVG9TdHJpbmcpKGkpKX1yZXR1cm4gdH1jcmVhdGVEaWN0KGUsdCxhKXtjb25zdCByPW5ldyBlKGEpO2Zvcihjb25zdFtlLGFdb2YgdClyLnNldEJ5S2V5KGUsYSk7cmV0dXJuIHJ9cGFyc2VDaGFyU3RyaW5nKGUsdCxhLGkpe2lmKCF0fHxlLmNhbGxEZXB0aD4xMClyZXR1cm4hMTtsZXQgbj1lLnN0YWNrU2l6ZTtjb25zdCBzPWUuc3RhY2s7bGV0IG89dC5sZW5ndGg7Zm9yKGxldCBoPTA7aDxvOyl7Y29uc3QgdT10W2grK107bGV0IGQ9bnVsbDtpZigxMj09PXUpe2NvbnN0IGU9dFtoKytdO2lmKDA9PT1lKXt0W2gtMl09MTM5O3RbaC0xXT0yMjtuPTB9ZWxzZSBkPWxbZV19ZWxzZSBpZigyOD09PXUpe3Nbbl09KHRbaF08PDI0fHRbaCsxXTw8MTYpPj4xNjtoKz0yO24rK31lbHNlIGlmKDE0PT09dSl7aWYobj49NCl7bi09NDtpZih0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQpe2Uuc2VhYz1zLnNsaWNlKG4sbis0KTtyZXR1cm4hMX19ZD1jW3VdfWVsc2UgaWYodT49MzImJnU8PTI0Nil7c1tuXT11LTEzOTtuKyt9ZWxzZSBpZih1Pj0yNDcmJnU8PTI1NCl7c1tuXT11PDI1MT8odS0yNDc8PDgpK3RbaF0rMTA4Oi0odS0yNTE8PDgpLXRbaF0tMTA4O2grKztuKyt9ZWxzZSBpZigyNTU9PT11KXtzW25dPSh0W2hdPDwyNHx0W2grMV08PDE2fHRbaCsyXTw8OHx0W2grM10pLzY1NTM2O2grPTQ7bisrfWVsc2UgaWYoMTk9PT11fHwyMD09PXUpe2UuaGludHMrPW4+PjE7aWYoMD09PWUuaGludHMpe3QuY29weVdpdGhpbihoLTEsaCwtMSk7aC09MTtvLT0xO2NvbnRpbnVlfWgrPWUuaGludHMrNz4+MztuJT0yO2Q9Y1t1XX1lbHNle2lmKDEwPT09dXx8Mjk9PT11KXtsZXQgdDt0PTEwPT09dT9hOmk7aWYoIXQpe2Q9Y1t1XTsoMCxyLndhcm4pKCJNaXNzaW5nIHN1YnJzSW5kZXggZm9yICIrZC5pZCk7cmV0dXJuITF9bGV0IG89MzI3Njg7dC5jb3VudDwxMjQwP289MTA3OnQuY291bnQ8MzM5MDAmJihvPTExMzEpO2NvbnN0IGw9c1stLW5dK287aWYobDwwfHxsPj10LmNvdW50fHxpc05hTihsKSl7ZD1jW3VdOygwLHIud2FybikoIk91dCBvZiBib3VuZHMgc3VickluZGV4IGZvciAiK2QuaWQpO3JldHVybiExfWUuc3RhY2tTaXplPW47ZS5jYWxsRGVwdGgrKztpZighdGhpcy5wYXJzZUNoYXJTdHJpbmcoZSx0LmdldChsKSxhLGkpKXJldHVybiExO2UuY2FsbERlcHRoLS07bj1lLnN0YWNrU2l6ZTtjb250aW51ZX1pZigxMT09PXUpe2Uuc3RhY2tTaXplPW47cmV0dXJuITB9aWYoMD09PXUmJmg9PT10Lmxlbmd0aCl7dFtoLTFdPTE0O2Q9Y1sxNF19ZWxzZXtpZig5PT09dSl7dC5jb3B5V2l0aGluKGgtMSxoLC0xKTtoLT0xO28tPTE7Y29udGludWV9ZD1jW3VdfX1pZihkKXtpZihkLnN0ZW0pe2UuaGludHMrPW4+PjE7aWYoMz09PXV8fDIzPT09dSllLmhhc1ZTdGVtcz0hMDtlbHNlIGlmKGUuaGFzVlN0ZW1zJiYoMT09PXV8fDE4PT09dSkpeygwLHIud2FybikoIkNGRiBzdGVtIGhpbnRzIGFyZSBpbiB3cm9uZyBvcmRlciIpO3RbaC0xXT0xPT09dT8zOjIzfX1pZigibWluImluIGQmJiFlLnVuZGVmU3RhY2smJm48ZC5taW4peygwLHIud2FybikoIk5vdCBlbm91Z2ggcGFyYW1ldGVycyBmb3IgIitkLmlkKyI7IGFjdHVhbDogIituKyIsIGV4cGVjdGVkOiAiK2QubWluKTtpZigwPT09bil7dFtoLTFdPTE0O3JldHVybiEwfXJldHVybiExfWlmKGUuZmlyc3RTdGFja0NsZWFyaW5nJiZkLnN0YWNrQ2xlYXJpbmcpe2UuZmlyc3RTdGFja0NsZWFyaW5nPSExO24tPWQubWluO24+PTImJmQuc3RlbT9uJT0yOm4+MSYmKDAsci53YXJuKSgiRm91bmQgdG9vIG1hbnkgcGFyYW1ldGVycyBmb3Igc3RhY2stY2xlYXJpbmcgY29tbWFuZCIpO24+MCYmKGUud2lkdGg9c1tuLTFdKX1pZigic3RhY2tEZWx0YSJpbiBkKXsic3RhY2tGbiJpbiBkJiZkLnN0YWNrRm4ocyxuKTtuKz1kLnN0YWNrRGVsdGF9ZWxzZSBpZihkLnN0YWNrQ2xlYXJpbmcpbj0wO2Vsc2UgaWYoZC5yZXNldFN0YWNrKXtuPTA7ZS51bmRlZlN0YWNrPSExfWVsc2UgaWYoZC51bmRlZlN0YWNrKXtuPTA7ZS51bmRlZlN0YWNrPSEwO2UuZmlyc3RTdGFja0NsZWFyaW5nPSExfX19bzx0Lmxlbmd0aCYmdC5maWxsKDE0LG8pO2Uuc3RhY2tTaXplPW47cmV0dXJuITB9cGFyc2VDaGFyU3RyaW5ncyh7Y2hhclN0cmluZ3M6ZSxsb2NhbFN1YnJJbmRleDp0LGdsb2JhbFN1YnJJbmRleDphLGZkU2VsZWN0OmksZmRBcnJheTpuLHByaXZhdGVEaWN0OnN9KXtjb25zdCBvPVtdLGM9W10sbD1lLmNvdW50O2ZvcihsZXQgaD0wO2g8bDtoKyspe2NvbnN0IGw9ZS5nZXQoaCksdT17Y2FsbERlcHRoOjAsc3RhY2tTaXplOjAsc3RhY2s6W10sdW5kZWZTdGFjazohMCxoaW50czowLGZpcnN0U3RhY2tDbGVhcmluZzohMCxzZWFjOm51bGwsd2lkdGg6bnVsbCxoYXNWU3RlbXM6ITF9O2xldCBkPSEwLGY9bnVsbCxnPXM7aWYoaSYmbi5sZW5ndGgpe2NvbnN0IGU9aS5nZXRGREluZGV4KGgpO2lmKC0xPT09ZSl7KDAsci53YXJuKSgiR2x5cGggaW5kZXggaXMgbm90IGluIGZkIHNlbGVjdC4iKTtkPSExfWlmKGU+PW4ubGVuZ3RoKXsoMCxyLndhcm4pKCJJbnZhbGlkIGZkIGluZGV4IGZvciBnbHlwaCBpbmRleC4iKTtkPSExfWlmKGQpe2c9bltlXS5wcml2YXRlRGljdDtmPWcuc3VicnNJbmRleH19ZWxzZSB0JiYoZj10KTtkJiYoZD10aGlzLnBhcnNlQ2hhclN0cmluZyh1LGwsZixhKSk7aWYobnVsbCE9PXUud2lkdGgpe2NvbnN0IGU9Zy5nZXRCeU5hbWUoIm5vbWluYWxXaWR0aFgiKTtjW2hdPWUrdS53aWR0aH1lbHNle2NvbnN0IGU9Zy5nZXRCeU5hbWUoImRlZmF1bHRXaWR0aFgiKTtjW2hdPWV9bnVsbCE9PXUuc2VhYyYmKG9baF09dS5zZWFjKTtkfHxlLnNldChoLG5ldyBVaW50OEFycmF5KFsxNF0pKX1yZXR1cm57Y2hhclN0cmluZ3M6ZSxzZWFjczpvLHdpZHRoczpjfX1lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpe2NvbnN0IHQ9dGhpcy5jcmVhdGVEaWN0KENGRlByaXZhdGVEaWN0LFtdLGUuc3RyaW5ncyk7ZS5zZXRCeUtleSgxOCxbMCwwXSk7ZS5wcml2YXRlRGljdD10fXBhcnNlUHJpdmF0ZURpY3QoZSl7aWYoIWUuaGFzTmFtZSgiUHJpdmF0ZSIpKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IHQ9ZS5nZXRCeU5hbWUoIlByaXZhdGUiKTtpZighQXJyYXkuaXNBcnJheSh0KXx8MiE9PXQubGVuZ3RoKXtlLnJlbW92ZUJ5TmFtZSgiUHJpdmF0ZSIpO3JldHVybn1jb25zdCBhPXRbMF0scj10WzFdO2lmKDA9PT1hfHxyPj10aGlzLmJ5dGVzLmxlbmd0aCl7dGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpO3JldHVybn1jb25zdCBpPXIrYSxuPXRoaXMuYnl0ZXMuc3ViYXJyYXkocixpKSxzPXRoaXMucGFyc2VEaWN0KG4pLG89dGhpcy5jcmVhdGVEaWN0KENGRlByaXZhdGVEaWN0LHMsZS5zdHJpbmdzKTtlLnByaXZhdGVEaWN0PW87MD09PW8uZ2V0QnlOYW1lKCJFeHBhbnNpb25GYWN0b3IiKSYmby5zZXRCeU5hbWUoIkV4cGFuc2lvbkZhY3RvciIsLjA2KTtpZighby5nZXRCeU5hbWUoIlN1YnJzIikpcmV0dXJuO2NvbnN0IGM9by5nZXRCeU5hbWUoIlN1YnJzIiksbD1yK2M7aWYoMD09PWN8fGw+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IGg9dGhpcy5wYXJzZUluZGV4KGwpO28uc3VicnNJbmRleD1oLm9ian1wYXJzZUNoYXJzZXRzKGUsdCxhLG4pe2lmKDA9PT1lKXJldHVybiBuZXcgQ0ZGQ2hhcnNldCghMCxkLklTT19BRE9CRSxpLklTT0Fkb2JlQ2hhcnNldCk7aWYoMT09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGQuRVhQRVJULGkuRXhwZXJ0Q2hhcnNldCk7aWYoMj09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGQuRVhQRVJUX1NVQlNFVCxpLkV4cGVydFN1YnNldENoYXJzZXQpO2NvbnN0IHM9dGhpcy5ieXRlcyxvPWUsYz1zW2UrK10sbD1bbj8wOiIubm90ZGVmIl07bGV0IGgsdSxmO3QtPTE7c3dpdGNoKGMpe2Nhc2UgMDpmb3IoZj0wO2Y8dDtmKyspe2g9c1tlKytdPDw4fHNbZSsrXTtsLnB1c2gobj9oOmEuZ2V0KGgpKX1icmVhaztjYXNlIDE6Zm9yKDtsLmxlbmd0aDw9dDspe2g9c1tlKytdPDw4fHNbZSsrXTt1PXNbZSsrXTtmb3IoZj0wO2Y8PXU7ZisrKWwucHVzaChuP2grKzphLmdldChoKyspKX1icmVhaztjYXNlIDI6Zm9yKDtsLmxlbmd0aDw9dDspe2g9c1tlKytdPDw4fHNbZSsrXTt1PXNbZSsrXTw8OHxzW2UrK107Zm9yKGY9MDtmPD11O2YrKylsLnB1c2gobj9oKys6YS5nZXQoaCsrKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5rbm93biBjaGFyc2V0IGZvcm1hdCIpfWNvbnN0IGc9ZSxwPXMuc3ViYXJyYXkobyxnKTtyZXR1cm4gbmV3IENGRkNoYXJzZXQoITEsYyxsLHApfXBhcnNlRW5jb2RpbmcoZSx0LGEsaSl7Y29uc3Qgcz1PYmplY3QuY3JlYXRlKG51bGwpLG89dGhpcy5ieXRlcztsZXQgYyxsLGgsdT0hMSxkPW51bGw7aWYoMD09PWV8fDE9PT1lKXt1PSEwO2M9ZTtjb25zdCB0PWU/bi5FeHBlcnRFbmNvZGluZzpuLlN0YW5kYXJkRW5jb2Rpbmc7Zm9yKGw9MCxoPWkubGVuZ3RoO2w8aDtsKyspe2NvbnN0IGU9dC5pbmRleE9mKGlbbF0pOy0xIT09ZSYmKHNbZV09bCl9fWVsc2V7Y29uc3QgdD1lO2M9b1tlKytdO3N3aXRjaCgxMjcmYyl7Y2FzZSAwOmNvbnN0IHQ9b1tlKytdO2ZvcihsPTE7bDw9dDtsKyspc1tvW2UrK11dPWw7YnJlYWs7Y2FzZSAxOmNvbnN0IGE9b1tlKytdO2xldCBpPTE7Zm9yKGw9MDtsPGE7bCsrKXtjb25zdCB0PW9bZSsrXSxhPW9bZSsrXTtmb3IobGV0IGU9dDtlPD10K2E7ZSsrKXNbZV09aSsrfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFVua25vd24gZW5jb2RpbmcgZm9ybWF0OiAke2N9IGluIENGRmApfWNvbnN0IG49ZTtpZigxMjgmYyl7b1t0XSY9MTI3OyFmdW5jdGlvbiByZWFkU3VwcGxlbWVudCgpe2NvbnN0IHQ9b1tlKytdO2ZvcihsPTA7bDx0O2wrKyl7Y29uc3QgdD1vW2UrK10scj0ob1tlKytdPDw4KSsoMjU1Jm9bZSsrXSk7c1t0XT1pLmluZGV4T2YoYS5nZXQocikpfX0oKX1kPW8uc3ViYXJyYXkodCxuKX1jJj0xMjc7cmV0dXJuIG5ldyBDRkZFbmNvZGluZyh1LGMscyxkKX1wYXJzZUZEU2VsZWN0KGUsdCl7Y29uc3QgYT10aGlzLmJ5dGVzLGk9YVtlKytdLG49W107bGV0IHM7c3dpdGNoKGkpe2Nhc2UgMDpmb3Iocz0wO3M8dDsrK3Mpe2NvbnN0IHQ9YVtlKytdO24ucHVzaCh0KX1icmVhaztjYXNlIDM6Y29uc3Qgbz1hW2UrK108PDh8YVtlKytdO2ZvcihzPTA7czxvOysrcyl7bGV0IHQ9YVtlKytdPDw4fGFbZSsrXTtpZigwPT09cyYmMCE9PXQpeygwLHIud2FybikoInBhcnNlRkRTZWxlY3Q6IFRoZSBmaXJzdCByYW5nZSBtdXN0IGhhdmUgYSBmaXJzdCBHSUQgb2YgMCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4iKTt0PTB9Y29uc3QgaT1hW2UrK10sbz1hW2VdPDw4fGFbZSsxXTtmb3IobGV0IGU9dDtlPG87KytlKW4ucHVzaChpKX1lKz0yO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYHBhcnNlRkRTZWxlY3Q6IFVua25vd24gZm9ybWF0ICIke2l9Ii5gKX1pZihuLmxlbmd0aCE9PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoInBhcnNlRkRTZWxlY3Q6IEludmFsaWQgZm9udCBkYXRhLiIpO3JldHVybiBuZXcgQ0ZGRkRTZWxlY3QoaSxuKX19O2NsYXNzIENGRntjb25zdHJ1Y3Rvcigpe3RoaXMuaGVhZGVyPW51bGw7dGhpcy5uYW1lcz1bXTt0aGlzLnRvcERpY3Q9bnVsbDt0aGlzLnN0cmluZ3M9bmV3IENGRlN0cmluZ3M7dGhpcy5nbG9iYWxTdWJySW5kZXg9bnVsbDt0aGlzLmVuY29kaW5nPW51bGw7dGhpcy5jaGFyc2V0PW51bGw7dGhpcy5jaGFyU3RyaW5ncz1udWxsO3RoaXMuZmRBcnJheT1bXTt0aGlzLmZkU2VsZWN0PW51bGw7dGhpcy5pc0NJREZvbnQ9ITF9ZHVwbGljYXRlRmlyc3RHbHlwaCgpe2lmKHRoaXMuY2hhclN0cmluZ3MuY291bnQ+PTY1NTM1KXsoMCxyLndhcm4pKCJOb3QgZW5vdWdoIHNwYWNlIGluIGNoYXJzdHJpbmdzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKTtyZXR1cm59Y29uc3QgZT10aGlzLmNoYXJTdHJpbmdzLmdldCgwKTt0aGlzLmNoYXJTdHJpbmdzLmFkZChlKTt0aGlzLmlzQ0lERm9udCYmdGhpcy5mZFNlbGVjdC5mZFNlbGVjdC5wdXNoKHRoaXMuZmRTZWxlY3QuZmRTZWxlY3RbMF0pfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLmNoYXJTdHJpbmdzLmNvdW50KXJldHVybiExO3JldHVybiB0aGlzLmNoYXJTdHJpbmdzLmdldChlKS5sZW5ndGg+MH19dC5DRkY9Q0ZGO2NsYXNzIENGRkhlYWRlcntjb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLm1ham9yPWU7dGhpcy5taW5vcj10O3RoaXMuaGRyU2l6ZT1hO3RoaXMub2ZmU2l6ZT1yfX10LkNGRkhlYWRlcj1DRkZIZWFkZXI7Y2xhc3MgQ0ZGU3RyaW5nc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc3RyaW5ncz1bXX1nZXQoZSl7cmV0dXJuIGU+PTAmJmU8PTM5MD9zW2VdOmUtbzw9dGhpcy5zdHJpbmdzLmxlbmd0aD90aGlzLnN0cmluZ3NbZS1vXTpzWzBdfWdldFNJRChlKXtsZXQgdD1zLmluZGV4T2YoZSk7aWYoLTEhPT10KXJldHVybiB0O3Q9dGhpcy5zdHJpbmdzLmluZGV4T2YoZSk7cmV0dXJuLTEhPT10P3QrbzotMX1hZGQoZSl7dGhpcy5zdHJpbmdzLnB1c2goZSl9Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMuc3RyaW5ncy5sZW5ndGh9fXQuQ0ZGU3RyaW5ncz1DRkZTdHJpbmdzO2NsYXNzIENGRkluZGV4e2NvbnN0cnVjdG9yKCl7dGhpcy5vYmplY3RzPVtdO3RoaXMubGVuZ3RoPTB9YWRkKGUpe3RoaXMubGVuZ3RoKz1lLmxlbmd0aDt0aGlzLm9iamVjdHMucHVzaChlKX1zZXQoZSx0KXt0aGlzLmxlbmd0aCs9dC5sZW5ndGgtdGhpcy5vYmplY3RzW2VdLmxlbmd0aDt0aGlzLm9iamVjdHNbZV09dH1nZXQoZSl7cmV0dXJuIHRoaXMub2JqZWN0c1tlXX1nZXQgY291bnQoKXtyZXR1cm4gdGhpcy5vYmplY3RzLmxlbmd0aH19dC5DRkZJbmRleD1DRkZJbmRleDtjbGFzcyBDRkZEaWN0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5rZXlUb05hbWVNYXA9ZS5rZXlUb05hbWVNYXA7dGhpcy5uYW1lVG9LZXlNYXA9ZS5uYW1lVG9LZXlNYXA7dGhpcy5kZWZhdWx0cz1lLmRlZmF1bHRzO3RoaXMudHlwZXM9ZS50eXBlczt0aGlzLm9wY29kZXM9ZS5vcGNvZGVzO3RoaXMub3JkZXI9ZS5vcmRlcjt0aGlzLnN0cmluZ3M9dDt0aGlzLnZhbHVlcz1PYmplY3QuY3JlYXRlKG51bGwpfXNldEJ5S2V5KGUsdCl7aWYoIShlIGluIHRoaXMua2V5VG9OYW1lTWFwKSlyZXR1cm4hMTtpZigwPT09dC5sZW5ndGgpcmV0dXJuITA7Zm9yKGNvbnN0IGEgb2YgdClpZihpc05hTihhKSl7KDAsci53YXJuKShgSW52YWxpZCBDRkZEaWN0IHZhbHVlOiAiJHt0fSIgZm9yIGtleSAiJHtlfSIuYCk7cmV0dXJuITB9Y29uc3QgYT10aGlzLnR5cGVzW2VdOyJudW0iIT09YSYmInNpZCIhPT1hJiYib2Zmc2V0IiE9PWF8fCh0PXRbMF0pO3RoaXMudmFsdWVzW2VdPXQ7cmV0dXJuITB9c2V0QnlOYW1lKGUsdCl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgIiR7ZX0iYCk7dGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dPXR9aGFzTmFtZShlKXtyZXR1cm4gdGhpcy5uYW1lVG9LZXlNYXBbZV1pbiB0aGlzLnZhbHVlc31nZXRCeU5hbWUoZSl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgJHtlfSJgKTtjb25zdCB0PXRoaXMubmFtZVRvS2V5TWFwW2VdO3JldHVybiB0IGluIHRoaXMudmFsdWVzP3RoaXMudmFsdWVzW3RdOnRoaXMuZGVmYXVsdHNbdF19cmVtb3ZlQnlOYW1lKGUpe2RlbGV0ZSB0aGlzLnZhbHVlc1t0aGlzLm5hbWVUb0tleU1hcFtlXV19c3RhdGljIGNyZWF0ZVRhYmxlcyhlKXtjb25zdCB0PXtrZXlUb05hbWVNYXA6e30sbmFtZVRvS2V5TWFwOnt9LGRlZmF1bHRzOnt9LHR5cGVzOnt9LG9wY29kZXM6e30sb3JkZXI6W119O2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9QXJyYXkuaXNBcnJheShhWzBdKT8oYVswXVswXTw8OCkrYVswXVsxXTphWzBdO3Qua2V5VG9OYW1lTWFwW2VdPWFbMV07dC5uYW1lVG9LZXlNYXBbYVsxXV09ZTt0LnR5cGVzW2VdPWFbMl07dC5kZWZhdWx0c1tlXT1hWzNdO3Qub3Bjb2Rlc1tlXT1BcnJheS5pc0FycmF5KGFbMF0pP2FbMF06W2FbMF1dO3Qub3JkZXIucHVzaChlKX1yZXR1cm4gdH19Y29uc3QgaD1bW1sxMiwzMF0sIlJPUyIsWyJzaWQiLCJzaWQiLCJudW0iXSxudWxsXSxbWzEyLDIwXSwiU3ludGhldGljQmFzZSIsIm51bSIsbnVsbF0sWzAsInZlcnNpb24iLCJzaWQiLG51bGxdLFsxLCJOb3RpY2UiLCJzaWQiLG51bGxdLFtbMTIsMF0sIkNvcHlyaWdodCIsInNpZCIsbnVsbF0sWzIsIkZ1bGxOYW1lIiwic2lkIixudWxsXSxbMywiRmFtaWx5TmFtZSIsInNpZCIsbnVsbF0sWzQsIldlaWdodCIsInNpZCIsbnVsbF0sW1sxMiwxXSwiaXNGaXhlZFBpdGNoIiwibnVtIiwwXSxbWzEyLDJdLCJJdGFsaWNBbmdsZSIsIm51bSIsMF0sW1sxMiwzXSwiVW5kZXJsaW5lUG9zaXRpb24iLCJudW0iLC0xMDBdLFtbMTIsNF0sIlVuZGVybGluZVRoaWNrbmVzcyIsIm51bSIsNTBdLFtbMTIsNV0sIlBhaW50VHlwZSIsIm51bSIsMF0sW1sxMiw2XSwiQ2hhcnN0cmluZ1R5cGUiLCJudW0iLDJdLFtbMTIsN10sIkZvbnRNYXRyaXgiLFsibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWy4wMDEsMCwwLC4wMDEsMCwwXV0sWzEzLCJVbmlxdWVJRCIsIm51bSIsbnVsbF0sWzUsIkZvbnRCQm94IixbIm51bSIsIm51bSIsIm51bSIsIm51bSJdLFswLDAsMCwwXV0sW1sxMiw4XSwiU3Ryb2tlV2lkdGgiLCJudW0iLDBdLFsxNCwiWFVJRCIsImFycmF5IixudWxsXSxbMTUsImNoYXJzZXQiLCJvZmZzZXQiLDBdLFsxNiwiRW5jb2RpbmciLCJvZmZzZXQiLDBdLFsxNywiQ2hhclN0cmluZ3MiLCJvZmZzZXQiLDBdLFsxOCwiUHJpdmF0ZSIsWyJvZmZzZXQiLCJvZmZzZXQiXSxudWxsXSxbWzEyLDIxXSwiUG9zdFNjcmlwdCIsInNpZCIsbnVsbF0sW1sxMiwyMl0sIkJhc2VGb250TmFtZSIsInNpZCIsbnVsbF0sW1sxMiwyM10sIkJhc2VGb250QmxlbmQiLCJkZWx0YSIsbnVsbF0sW1sxMiwzMV0sIkNJREZvbnRWZXJzaW9uIiwibnVtIiwwXSxbWzEyLDMyXSwiQ0lERm9udFJldmlzaW9uIiwibnVtIiwwXSxbWzEyLDMzXSwiQ0lERm9udFR5cGUiLCJudW0iLDBdLFtbMTIsMzRdLCJDSURDb3VudCIsIm51bSIsODcyMF0sW1sxMiwzNV0sIlVJREJhc2UiLCJudW0iLG51bGxdLFtbMTIsMzddLCJGRFNlbGVjdCIsIm9mZnNldCIsbnVsbF0sW1sxMiwzNl0sIkZEQXJyYXkiLCJvZmZzZXQiLG51bGxdLFtbMTIsMzhdLCJGb250TmFtZSIsInNpZCIsbnVsbF1dO2NsYXNzIENGRlRvcERpY3QgZXh0ZW5kcyBDRkZEaWN0e3N0YXRpYyBnZXQgdGFibGVzKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInRhYmxlcyIsdGhpcy5jcmVhdGVUYWJsZXMoaCkpfWNvbnN0cnVjdG9yKGUpe3N1cGVyKENGRlRvcERpY3QudGFibGVzLGUpO3RoaXMucHJpdmF0ZURpY3Q9bnVsbH19dC5DRkZUb3BEaWN0PUNGRlRvcERpY3Q7Y29uc3QgdT1bWzYsIkJsdWVWYWx1ZXMiLCJkZWx0YSIsbnVsbF0sWzcsIk90aGVyQmx1ZXMiLCJkZWx0YSIsbnVsbF0sWzgsIkZhbWlseUJsdWVzIiwiZGVsdGEiLG51bGxdLFs5LCJGYW1pbHlPdGhlckJsdWVzIiwiZGVsdGEiLG51bGxdLFtbMTIsOV0sIkJsdWVTY2FsZSIsIm51bSIsLjAzOTYyNV0sW1sxMiwxMF0sIkJsdWVTaGlmdCIsIm51bSIsN10sW1sxMiwxMV0sIkJsdWVGdXp6IiwibnVtIiwxXSxbMTAsIlN0ZEhXIiwibnVtIixudWxsXSxbMTEsIlN0ZFZXIiwibnVtIixudWxsXSxbWzEyLDEyXSwiU3RlbVNuYXBIIiwiZGVsdGEiLG51bGxdLFtbMTIsMTNdLCJTdGVtU25hcFYiLCJkZWx0YSIsbnVsbF0sW1sxMiwxNF0sIkZvcmNlQm9sZCIsIm51bSIsMF0sW1sxMiwxN10sIkxhbmd1YWdlR3JvdXAiLCJudW0iLDBdLFtbMTIsMThdLCJFeHBhbnNpb25GYWN0b3IiLCJudW0iLC4wNl0sW1sxMiwxOV0sImluaXRpYWxSYW5kb21TZWVkIiwibnVtIiwwXSxbMjAsImRlZmF1bHRXaWR0aFgiLCJudW0iLDBdLFsyMSwibm9taW5hbFdpZHRoWCIsIm51bSIsMF0sWzE5LCJTdWJycyIsIm9mZnNldCIsbnVsbF1dO2NsYXNzIENGRlByaXZhdGVEaWN0IGV4dGVuZHMgQ0ZGRGljdHtzdGF0aWMgZ2V0IHRhYmxlcygpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJ0YWJsZXMiLHRoaXMuY3JlYXRlVGFibGVzKHUpKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihDRkZQcml2YXRlRGljdC50YWJsZXMsZSk7dGhpcy5zdWJyc0luZGV4PW51bGx9fXQuQ0ZGUHJpdmF0ZURpY3Q9Q0ZGUHJpdmF0ZURpY3Q7Y29uc3QgZD17SVNPX0FET0JFOjAsRVhQRVJUOjEsRVhQRVJUX1NVQlNFVDoyfTtjbGFzcyBDRkZDaGFyc2V0e2NvbnN0cnVjdG9yKGUsdCxhLHIpe3RoaXMucHJlZGVmaW5lZD1lO3RoaXMuZm9ybWF0PXQ7dGhpcy5jaGFyc2V0PWE7dGhpcy5yYXc9cn19dC5DRkZDaGFyc2V0PUNGRkNoYXJzZXQ7Y2xhc3MgQ0ZGRW5jb2Rpbmd7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmVuY29kaW5nPWE7dGhpcy5yYXc9cn19Y2xhc3MgQ0ZGRkRTZWxlY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZvcm1hdD1lO3RoaXMuZmRTZWxlY3Q9dH1nZXRGREluZGV4KGUpe3JldHVybiBlPDB8fGU+PXRoaXMuZmRTZWxlY3QubGVuZ3RoPy0xOnRoaXMuZmRTZWxlY3RbZV19fXQuQ0ZGRkRTZWxlY3Q9Q0ZGRkRTZWxlY3Q7Y2xhc3MgQ0ZGT2Zmc2V0VHJhY2tlcntjb25zdHJ1Y3Rvcigpe3RoaXMub2Zmc2V0cz1PYmplY3QuY3JlYXRlKG51bGwpfWlzVHJhY2tpbmcoZSl7cmV0dXJuIGUgaW4gdGhpcy5vZmZzZXRzfXRyYWNrKGUsdCl7aWYoZSBpbiB0aGlzLm9mZnNldHMpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEFscmVhZHkgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO3RoaXMub2Zmc2V0c1tlXT10fW9mZnNldChlKXtmb3IoY29uc3QgdCBpbiB0aGlzLm9mZnNldHMpdGhpcy5vZmZzZXRzW3RdKz1lfXNldEVudHJ5TG9jYXRpb24oZSx0LGEpe2lmKCEoZSBpbiB0aGlzLm9mZnNldHMpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBOb3QgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO2NvbnN0IGk9YS5kYXRhLG49dGhpcy5vZmZzZXRzW2VdO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhOysrZSl7Y29uc3QgYT01KmUrbixzPWErMSxvPWErMixjPWErMyxsPWErNDtpZigyOSE9PWlbYV18fDAhPT1pW3NdfHwwIT09aVtvXXx8MCE9PWlbY118fDAhPT1pW2xdKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ3cml0aW5nIHRvIGFuIG9mZnNldCB0aGF0IGlzIG5vdCBlbXB0eSIpO2NvbnN0IGg9dFtlXTtpW2FdPTI5O2lbc109aD4+MjQmMjU1O2lbb109aD4+MTYmMjU1O2lbY109aD4+OCYyNTU7aVtsXT0yNTUmaH19fWNsYXNzIENGRkNvbXBpbGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuY2ZmPWV9Y29tcGlsZSgpe2NvbnN0IGU9dGhpcy5jZmYsdD17ZGF0YTpbXSxsZW5ndGg6MCxhZGQoZSl7ZS5sZW5ndGg8PTY1NTM2P3RoaXMuZGF0YS5wdXNoKC4uLmUpOnRoaXMuZGF0YT10aGlzLmRhdGEuY29uY2F0KGUpO3RoaXMubGVuZ3RoPXRoaXMuZGF0YS5sZW5ndGh9fSxhPXRoaXMuY29tcGlsZUhlYWRlcihlLmhlYWRlcik7dC5hZGQoYSk7Y29uc3QgaT10aGlzLmNvbXBpbGVOYW1lSW5kZXgoZS5uYW1lcyk7dC5hZGQoaSk7aWYoZS5pc0NJREZvbnQmJmUudG9wRGljdC5oYXNOYW1lKCJGb250TWF0cml4Iikpe2NvbnN0IHQ9ZS50b3BEaWN0LmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpO2UudG9wRGljdC5yZW1vdmVCeU5hbWUoIkZvbnRNYXRyaXgiKTtmb3IoY29uc3QgYSBvZiBlLmZkQXJyYXkpe2xldCBlPXQuc2xpY2UoMCk7YS5oYXNOYW1lKCJGb250TWF0cml4IikmJihlPXIuVXRpbC50cmFuc2Zvcm0oZSxhLmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpKSk7YS5zZXRCeU5hbWUoIkZvbnRNYXRyaXgiLGUpfX1jb25zdCBuPWUudG9wRGljdC5nZXRCeU5hbWUoIlhVSUQiKTtuPy5sZW5ndGg+MTYmJmUudG9wRGljdC5yZW1vdmVCeU5hbWUoIlhVSUQiKTtlLnRvcERpY3Quc2V0QnlOYW1lKCJjaGFyc2V0IiwwKTtsZXQgcz10aGlzLmNvbXBpbGVUb3BEaWN0cyhbZS50b3BEaWN0XSx0Lmxlbmd0aCxlLmlzQ0lERm9udCk7dC5hZGQocy5vdXRwdXQpO2NvbnN0IG89cy50cmFja2Vyc1swXSxjPXRoaXMuY29tcGlsZVN0cmluZ0luZGV4KGUuc3RyaW5ncy5zdHJpbmdzKTt0LmFkZChjKTtjb25zdCBsPXRoaXMuY29tcGlsZUluZGV4KGUuZ2xvYmFsU3VickluZGV4KTt0LmFkZChsKTtpZihlLmVuY29kaW5nJiZlLnRvcERpY3QuaGFzTmFtZSgiRW5jb2RpbmciKSlpZihlLmVuY29kaW5nLnByZWRlZmluZWQpby5zZXRFbnRyeUxvY2F0aW9uKCJFbmNvZGluZyIsW2UuZW5jb2RpbmcuZm9ybWF0XSx0KTtlbHNle2NvbnN0IGE9dGhpcy5jb21waWxlRW5jb2RpbmcoZS5lbmNvZGluZyk7by5zZXRFbnRyeUxvY2F0aW9uKCJFbmNvZGluZyIsW3QubGVuZ3RoXSx0KTt0LmFkZChhKX1jb25zdCBoPXRoaXMuY29tcGlsZUNoYXJzZXQoZS5jaGFyc2V0LGUuY2hhclN0cmluZ3MuY291bnQsZS5zdHJpbmdzLGUuaXNDSURGb250KTtvLnNldEVudHJ5TG9jYXRpb24oImNoYXJzZXQiLFt0Lmxlbmd0aF0sdCk7dC5hZGQoaCk7Y29uc3QgdT10aGlzLmNvbXBpbGVDaGFyU3RyaW5ncyhlLmNoYXJTdHJpbmdzKTtvLnNldEVudHJ5TG9jYXRpb24oIkNoYXJTdHJpbmdzIixbdC5sZW5ndGhdLHQpO3QuYWRkKHUpO2lmKGUuaXNDSURGb250KXtvLnNldEVudHJ5TG9jYXRpb24oIkZEU2VsZWN0IixbdC5sZW5ndGhdLHQpO2NvbnN0IGE9dGhpcy5jb21waWxlRkRTZWxlY3QoZS5mZFNlbGVjdCk7dC5hZGQoYSk7cz10aGlzLmNvbXBpbGVUb3BEaWN0cyhlLmZkQXJyYXksdC5sZW5ndGgsITApO28uc2V0RW50cnlMb2NhdGlvbigiRkRBcnJheSIsW3QubGVuZ3RoXSx0KTt0LmFkZChzLm91dHB1dCk7Y29uc3Qgcj1zLnRyYWNrZXJzO3RoaXMuY29tcGlsZVByaXZhdGVEaWN0cyhlLmZkQXJyYXkscix0KX10aGlzLmNvbXBpbGVQcml2YXRlRGljdHMoW2UudG9wRGljdF0sW29dLHQpO3QuYWRkKFswXSk7cmV0dXJuIHQuZGF0YX1lbmNvZGVOdW1iZXIoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSk/dGhpcy5lbmNvZGVJbnRlZ2VyKGUpOnRoaXMuZW5jb2RlRmxvYXQoZSl9c3RhdGljIGdldCBFbmNvZGVGbG9hdFJlZ0V4cCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJFbmNvZGVGbG9hdFJlZ0V4cCIsL1wuKFxkKj8pKD86OXs1LDIwfXwwezUsMjB9KVxkezAsMn0oPzplKC4rKXwkKS8pfWVuY29kZUZsb2F0KGUpe2xldCB0PWUudG9TdHJpbmcoKTtjb25zdCBhPUNGRkNvbXBpbGVyLkVuY29kZUZsb2F0UmVnRXhwLmV4ZWModCk7aWYoYSl7Y29uc3Qgcj1wYXJzZUZsb2F0KCIxZSIrKChhWzJdPythWzJdOjApK2FbMV0ubGVuZ3RoKSk7dD0oTWF0aC5yb3VuZChlKnIpL3IpLnRvU3RyaW5nKCl9bGV0IHIsaSxuPSIiO2ZvcihyPTAsaT10Lmxlbmd0aDtyPGk7KytyKXtjb25zdCBlPXRbcl07bis9ImUiPT09ZT8iLSI9PT10Wysrcl0/ImMiOiJiIjoiLiI9PT1lPyJhIjoiLSI9PT1lPyJlIjplfW4rPTEmbi5sZW5ndGg/ImYiOiJmZiI7Y29uc3Qgcz1bMzBdO2ZvcihyPTAsaT1uLmxlbmd0aDtyPGk7cis9MilzLnB1c2gocGFyc2VJbnQobi5zdWJzdHJpbmcocixyKzIpLDE2KSk7cmV0dXJuIHN9ZW5jb2RlSW50ZWdlcihlKXtsZXQgdDt0PWU+PS0xMDcmJmU8PTEwNz9bZSsxMzldOmU+PTEwOCYmZTw9MTEzMT9bMjQ3KygoZS09MTA4KT4+OCksMjU1JmVdOmU+PS0xMTMxJiZlPD0tMTA4P1syNTErKChlPS1lLTEwOCk+PjgpLDI1NSZlXTplPj0tMzI3NjgmJmU8PTMyNzY3P1syOCxlPj44JjI1NSwyNTUmZV06WzI5LGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmVdO3JldHVybiB0fWNvbXBpbGVIZWFkZXIoZSl7cmV0dXJuW2UubWFqb3IsZS5taW5vciw0LGUub2ZmU2l6ZV19Y29tcGlsZU5hbWVJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPU1hdGgubWluKGEubGVuZ3RoLDEyNyk7bGV0IGk9bmV3IEFycmF5KGUpO2ZvcihsZXQgdD0wO3Q8ZTt0Kyspe2xldCBlPWFbdF07KGU8IiEifHxlPiJ+Inx8IlsiPT09ZXx8Il0iPT09ZXx8IigiPT09ZXx8IikiPT09ZXx8InsiPT09ZXx8In0iPT09ZXx8IjwiPT09ZXx8Ij4iPT09ZXx8Ii8iPT09ZXx8IiUiPT09ZSkmJihlPSJfIik7aVt0XT1lfWk9aS5qb2luKCIiKTsiIj09PWkmJihpPSJCYWRfRm9udF9OYW1lIik7dC5hZGQoKDAsci5zdHJpbmdUb0J5dGVzKShpKSl9cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVUb3BEaWN0cyhlLHQsYSl7Y29uc3Qgcj1bXTtsZXQgaT1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IG4gb2YgZSl7aWYoYSl7bi5yZW1vdmVCeU5hbWUoIkNJREZvbnRWZXJzaW9uIik7bi5yZW1vdmVCeU5hbWUoIkNJREZvbnRSZXZpc2lvbiIpO24ucmVtb3ZlQnlOYW1lKCJDSURGb250VHlwZSIpO24ucmVtb3ZlQnlOYW1lKCJDSURDb3VudCIpO24ucmVtb3ZlQnlOYW1lKCJVSURCYXNlIil9Y29uc3QgZT1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixzPXRoaXMuY29tcGlsZURpY3QobixlKTtyLnB1c2goZSk7aS5hZGQocyk7ZS5vZmZzZXQodCl9aT10aGlzLmNvbXBpbGVJbmRleChpLHIpO3JldHVybnt0cmFja2VyczpyLG91dHB1dDppfX1jb21waWxlUHJpdmF0ZURpY3RzKGUsdCxhKXtmb3IobGV0IGk9MCxuPWUubGVuZ3RoO2k8bjsrK2kpe2NvbnN0IG49ZVtpXSxzPW4ucHJpdmF0ZURpY3Q7aWYoIXN8fCFuLmhhc05hbWUoIlByaXZhdGUiKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVGhlcmUgbXVzdCBiZSBhIHByaXZhdGUgZGljdGlvbmFyeS4iKTtjb25zdCBvPW5ldyBDRkZPZmZzZXRUcmFja2VyLGM9dGhpcy5jb21waWxlRGljdChzLG8pO2xldCBsPWEubGVuZ3RoO28ub2Zmc2V0KGwpO2MubGVuZ3RofHwobD0wKTt0W2ldLnNldEVudHJ5TG9jYXRpb24oIlByaXZhdGUiLFtjLmxlbmd0aCxsXSxhKTthLmFkZChjKTtpZihzLnN1YnJzSW5kZXgmJnMuaGFzTmFtZSgiU3VicnMiKSl7Y29uc3QgZT10aGlzLmNvbXBpbGVJbmRleChzLnN1YnJzSW5kZXgpO28uc2V0RW50cnlMb2NhdGlvbigiU3VicnMiLFtjLmxlbmd0aF0sYSk7YS5hZGQoZSl9fX1jb21waWxlRGljdChlLHQpe2NvbnN0IGE9W107Zm9yKGNvbnN0IGkgb2YgZS5vcmRlcil7aWYoIShpIGluIGUudmFsdWVzKSljb250aW51ZTtsZXQgbj1lLnZhbHVlc1tpXSxzPWUudHlwZXNbaV07QXJyYXkuaXNBcnJheShzKXx8KHM9W3NdKTtBcnJheS5pc0FycmF5KG4pfHwobj1bbl0pO2lmKDAhPT1uLmxlbmd0aCl7Zm9yKGxldCBvPTAsYz1zLmxlbmd0aDtvPGM7KytvKXtjb25zdCBjPXNbb10sbD1uW29dO3N3aXRjaChjKXtjYXNlIm51bSI6Y2FzZSJzaWQiOmEucHVzaCguLi50aGlzLmVuY29kZU51bWJlcihsKSk7YnJlYWs7Y2FzZSJvZmZzZXQiOmNvbnN0IHM9ZS5rZXlUb05hbWVNYXBbaV07dC5pc1RyYWNraW5nKHMpfHx0LnRyYWNrKHMsYS5sZW5ndGgpO2EucHVzaCgyOSwwLDAsMCwwKTticmVhaztjYXNlImFycmF5IjpjYXNlImRlbHRhIjphLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIobCkpO2ZvcihsZXQgZT0xLHQ9bi5sZW5ndGg7ZTx0OysrZSlhLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIobltlXSkpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFVua25vd24gZGF0YSB0eXBlIG9mICR7Y31gKX19YS5wdXNoKC4uLmUub3Bjb2Rlc1tpXSl9fXJldHVybiBhfWNvbXBpbGVTdHJpbmdJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IoY29uc3QgYSBvZiBlKXQuYWRkKCgwLHIuc3RyaW5nVG9CeXRlcykoYSkpO3JldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX1jb21waWxlQ2hhclN0cmluZ3MoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGxldCBhPTA7YTxlLmNvdW50O2ErKyl7Y29uc3Qgcj1lLmdldChhKTswIT09ci5sZW5ndGg/dC5hZGQocik6dC5hZGQobmV3IFVpbnQ4QXJyYXkoWzEzOSwxNF0pKX1yZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUNoYXJzZXQoZSx0LGEsaSl7bGV0IG47Y29uc3Qgcz10LTE7aWYoaSluPW5ldyBVaW50OEFycmF5KFsyLDAsMCxzPj44JjI1NSwyNTUmc10pO2Vsc2V7bj1uZXcgVWludDhBcnJheSgxKzIqcyk7blswXT0wO2xldCB0PTA7Y29uc3QgaT1lLmNoYXJzZXQubGVuZ3RoO2xldCBvPSExO2ZvcihsZXQgcz0xO3M8bi5sZW5ndGg7cys9Mil7bGV0IGM9MDtpZih0PGkpe2NvbnN0IGk9ZS5jaGFyc2V0W3QrK107Yz1hLmdldFNJRChpKTtpZigtMT09PWMpe2M9MDtpZighbyl7bz0hMDsoMCxyLndhcm4pKGBDb3VsZG4ndCBmaW5kICR7aX0gaW4gQ0ZGIHN0cmluZ3NgKX19fW5bc109Yz4+OCYyNTU7bltzKzFdPTI1NSZjfX1yZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShuKX1jb21waWxlRW5jb2RpbmcoZSl7cmV0dXJuIHRoaXMuY29tcGlsZVR5cGVkQXJyYXkoZS5yYXcpfWNvbXBpbGVGRFNlbGVjdChlKXtjb25zdCB0PWUuZm9ybWF0O2xldCBhLHI7c3dpdGNoKHQpe2Nhc2UgMDphPW5ldyBVaW50OEFycmF5KDErZS5mZFNlbGVjdC5sZW5ndGgpO2FbMF09dDtmb3Iocj0wO3I8ZS5mZFNlbGVjdC5sZW5ndGg7cisrKWFbcisxXT1lLmZkU2VsZWN0W3JdO2JyZWFrO2Nhc2UgMzpjb25zdCBpPTA7bGV0IG49ZS5mZFNlbGVjdFswXTtjb25zdCBzPVt0LDAsMCxpPj44JjI1NSwyNTUmaSxuXTtmb3Iocj0xO3I8ZS5mZFNlbGVjdC5sZW5ndGg7cisrKXtjb25zdCB0PWUuZmRTZWxlY3Rbcl07aWYodCE9PW4pe3MucHVzaChyPj44JjI1NSwyNTUmcix0KTtuPXR9fWNvbnN0IG89KHMubGVuZ3RoLTMpLzM7c1sxXT1vPj44JjI1NTtzWzJdPTI1NSZvO3MucHVzaChyPj44JjI1NSwyNTUmcik7YT1uZXcgVWludDhBcnJheShzKX1yZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShhKX1jb21waWxlVHlwZWRBcnJheShlKXtyZXR1cm4gQXJyYXkuZnJvbShlKX1jb21waWxlSW5kZXgoZSx0PVtdKXtjb25zdCBhPWUub2JqZWN0cyxyPWEubGVuZ3RoO2lmKDA9PT1yKXJldHVyblswLDBdO2NvbnN0IGk9W3I+PjgmMjU1LDI1NSZyXTtsZXQgbixzLG89MTtmb3Iobj0wO248cjsrK24pbys9YVtuXS5sZW5ndGg7cz1vPDI1Nj8xOm88NjU1MzY/MjpvPDE2Nzc3MjE2PzM6NDtpLnB1c2gocyk7bGV0IGM9MTtmb3Iobj0wO248cisxO24rKyl7MT09PXM/aS5wdXNoKDI1NSZjKToyPT09cz9pLnB1c2goYz4+OCYyNTUsMjU1JmMpOjM9PT1zP2kucHVzaChjPj4xNiYyNTUsYz4+OCYyNTUsMjU1JmMpOmkucHVzaChjPj4+MjQmMjU1LGM+PjE2JjI1NSxjPj44JjI1NSwyNTUmYyk7YVtuXSYmKGMrPWFbbl0ubGVuZ3RoKX1mb3Iobj0wO248cjtuKyspe3Rbbl0mJnRbbl0ub2Zmc2V0KGkubGVuZ3RoKTtpLnB1c2goLi4uYVtuXSl9cmV0dXJuIGl9fXQuQ0ZGQ29tcGlsZXI9Q0ZGQ29tcGlsZXJ9LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSVNPQWRvYmVDaGFyc2V0PXQuRXhwZXJ0U3Vic2V0Q2hhcnNldD10LkV4cGVydENoYXJzZXQ9dm9pZCAwO3QuSVNPQWRvYmVDaGFyc2V0PVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCJxdWVzdGlvbmRvd24iLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCJBRSIsIm9yZGZlbWluaW5lIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCJhZSIsImRvdGxlc3NpIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwib25lc3VwZXJpb3IiLCJsb2dpY2Fsbm90IiwibXUiLCJ0cmFkZW1hcmsiLCJFdGgiLCJvbmVoYWxmIiwicGx1c21pbnVzIiwiVGhvcm4iLCJvbmVxdWFydGVyIiwiZGl2aWRlIiwiYnJva2VuYmFyIiwiZGVncmVlIiwidGhvcm4iLCJ0aHJlZXF1YXJ0ZXJzIiwidHdvc3VwZXJpb3IiLCJyZWdpc3RlcmVkIiwibWludXMiLCJldGgiLCJtdWx0aXBseSIsInRocmVlc3VwZXJpb3IiLCJjb3B5cmlnaHQiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkFkaWVyZXNpcyIsIkFncmF2ZSIsIkFyaW5nIiwiQXRpbGRlIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJFY2lyY3VtZmxleCIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiTnRpbGRlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJPZGllcmVzaXMiLCJPZ3JhdmUiLCJPdGlsZGUiLCJTY2Fyb24iLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIlVncmF2ZSIsIllhY3V0ZSIsIllkaWVyZXNpcyIsIlpjYXJvbiIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYWdyYXZlIiwiYXJpbmciLCJhdGlsZGUiLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiZWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJpZ3JhdmUiLCJudGlsZGUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm9ncmF2ZSIsIm90aWxkZSIsInNjYXJvbiIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwidWdyYXZlIiwieWFjdXRlIiwieWRpZXJlc2lzIiwiemNhcm9uIl07dC5FeHBlcnRDaGFyc2V0PVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwicXVlc3Rpb25zbWFsbCIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuc3VwZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCJleGNsYW1kb3duc21hbGwiLCJjZW50b2xkc3R5bGUiLCJMc2xhc2hzbWFsbCIsIlNjYXJvbnNtYWxsIiwiWmNhcm9uc21hbGwiLCJEaWVyZXNpc3NtYWxsIiwiQnJldmVzbWFsbCIsIkNhcm9uc21hbGwiLCJEb3RhY2NlbnRzbWFsbCIsIk1hY3JvbnNtYWxsIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwiT2dvbmVrc21hbGwiLCJSaW5nc21hbGwiLCJDZWRpbGxhc21hbGwiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd25zbWFsbCIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCJ6ZXJvc3VwZXJpb3IiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsImVpZ2h0c3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJvbmVpbmZlcmlvciIsInR3b2luZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsImZvdXJpbmZlcmlvciIsImZpdmVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJuaW5laW5mZXJpb3IiLCJjZW50aW5mZXJpb3IiLCJkb2xsYXJpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiY29tbWFpbmZlcmlvciIsIkFncmF2ZXNtYWxsIiwiQWFjdXRlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQXRpbGRlc21hbGwiLCJBZGllcmVzaXNzbWFsbCIsIkFyaW5nc21hbGwiLCJBRXNtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVncmF2ZXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJZ3JhdmVzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiRXRoc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2FjdXRlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT3RpbGRlc21hbGwiLCJPZGllcmVzaXNzbWFsbCIsIk9Fc21hbGwiLCJPc2xhc2hzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWFjdXRlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCJZYWN1dGVzbWFsbCIsIlRob3Juc21hbGwiLCJZZGllcmVzaXNzbWFsbCJdO3QuRXhwZXJ0U3Vic2V0Q2hhcnNldD1bIi5ub3RkZWYiLCJzcGFjZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJoeXBoZW5zdXBlcmlvciIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJjZW50b2xkc3R5bGUiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiXX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5aYXBmRGluZ2JhdHNFbmNvZGluZz10LldpbkFuc2lFbmNvZGluZz10LlN5bWJvbFNldEVuY29kaW5nPXQuU3RhbmRhcmRFbmNvZGluZz10Lk1hY1JvbWFuRW5jb2Rpbmc9dC5FeHBlcnRFbmNvZGluZz12b2lkIDA7dC5nZXRFbmNvZGluZz1mdW5jdGlvbiBnZXRFbmNvZGluZyhlKXtzd2l0Y2goZSl7Y2FzZSJXaW5BbnNpRW5jb2RpbmciOnJldHVybiBzO2Nhc2UiU3RhbmRhcmRFbmNvZGluZyI6cmV0dXJuIG47Y2FzZSJNYWNSb21hbkVuY29kaW5nIjpyZXR1cm4gaTtjYXNlIlN5bWJvbFNldEVuY29kaW5nIjpyZXR1cm4gbztjYXNlIlphcGZEaW5nYmF0c0VuY29kaW5nIjpyZXR1cm4gYztjYXNlIkV4cGVydEVuY29kaW5nIjpyZXR1cm4gYTtjYXNlIk1hY0V4cGVydEVuY29kaW5nIjpyZXR1cm4gcjtkZWZhdWx0OnJldHVybiBudWxsfX07Y29uc3QgYT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsIiIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwicXVlc3Rpb25zbWFsbCIsIiIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsIiIsIiIsIiIsImlzdXBlcmlvciIsIiIsIiIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsIiIsIiIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuc3VwZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCJjZW50b2xkc3R5bGUiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIlNjYXJvbnNtYWxsIiwiWmNhcm9uc21hbGwiLCJEaWVyZXNpc3NtYWxsIiwiQnJldmVzbWFsbCIsIkNhcm9uc21hbGwiLCIiLCJEb3RhY2NlbnRzbWFsbCIsIiIsIiIsIk1hY3JvbnNtYWxsIiwiIiwiIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwiIiwiIiwiT2dvbmVrc21hbGwiLCJSaW5nc21hbGwiLCJDZWRpbGxhc21hbGwiLCIiLCIiLCIiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd25zbWFsbCIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCIiLCIiLCJ6ZXJvc3VwZXJpb3IiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsImVpZ2h0c3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJvbmVpbmZlcmlvciIsInR3b2luZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsImZvdXJpbmZlcmlvciIsImZpdmVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJuaW5laW5mZXJpb3IiLCJjZW50aW5mZXJpb3IiLCJkb2xsYXJpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiY29tbWFpbmZlcmlvciIsIkFncmF2ZXNtYWxsIiwiQWFjdXRlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQXRpbGRlc21hbGwiLCJBZGllcmVzaXNzbWFsbCIsIkFyaW5nc21hbGwiLCJBRXNtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVncmF2ZXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJZ3JhdmVzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiRXRoc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2FjdXRlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT3RpbGRlc21hbGwiLCJPZGllcmVzaXNzbWFsbCIsIk9Fc21hbGwiLCJPc2xhc2hzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWFjdXRlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCJZYWN1dGVzbWFsbCIsIlRob3Juc21hbGwiLCJZZGllcmVzaXNzbWFsbCJdO3QuRXhwZXJ0RW5jb2Rpbmc9YTtjb25zdCByPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiY2VudG9sZHN0eWxlIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsIiIsInRocmVlcXVhcnRlcnNlbWRhc2giLCIiLCJxdWVzdGlvbnNtYWxsIiwiIiwiIiwiIiwiIiwiRXRoc21hbGwiLCIiLCIiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiIiwiIiwiIiwiIiwiIiwiIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCIiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5pbmZlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsIiIsIiIsImFzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsIiIsIiIsIiIsIiIsIkFhY3V0ZXNtYWxsIiwiQWdyYXZlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBdGlsZGVzbWFsbCIsIkFyaW5nc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWdyYXZlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPdGlsZGVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWdyYXZlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCIiLCJlaWdodHN1cGVyaW9yIiwiZm91cmluZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJTY2Fyb25zbWFsbCIsIiIsImNlbnRpbmZlcmlvciIsInR3b2luZmVyaW9yIiwiIiwiRGllcmVzaXNzbWFsbCIsIiIsIkNhcm9uc21hbGwiLCJvc3VwZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCIiLCJjb21tYWluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJZYWN1dGVzbWFsbCIsIiIsImRvbGxhcmluZmVyaW9yIiwiIiwiIiwiVGhvcm5zbWFsbCIsIiIsIm5pbmVpbmZlcmlvciIsInplcm9pbmZlcmlvciIsIlpjYXJvbnNtYWxsIiwiQUVzbWFsbCIsIk9zbGFzaHNtYWxsIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVpbmZlcmlvciIsIkxzbGFzaHNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiIiwiQ2VkaWxsYXNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiT0VzbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5zdXBlcmlvciIsIiIsIiIsIiIsIiIsImV4Y2xhbWRvd25zbWFsbCIsIiIsIllkaWVyZXNpc3NtYWxsIiwiIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvc3VwZXJpb3IiLCIiLCJlc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCIiLCIiLCJpc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJkc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCIiLCJsc3VwZXJpb3IiLCJPZ29uZWtzbWFsbCIsIkJyZXZlc21hbGwiLCJNYWNyb25zbWFsbCIsImJzdXBlcmlvciIsIm5zdXBlcmlvciIsIm1zdXBlcmlvciIsImNvbW1hc3VwZXJpb3IiLCJwZXJpb2RzdXBlcmlvciIsIkRvdGFjY2VudHNtYWxsIiwiUmluZ3NtYWxsIiwiIiwiIiwiIiwiIl0saT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3Rlc2luZ2xlIiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJncmF2ZSIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCIiLCJBZGllcmVzaXMiLCJBcmluZyIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiTnRpbGRlIiwiT2RpZXJlc2lzIiwiVWRpZXJlc2lzIiwiYWFjdXRlIiwiYWdyYXZlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhdGlsZGUiLCJhcmluZyIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWdyYXZlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpYWN1dGUiLCJpZ3JhdmUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsIm50aWxkZSIsIm9hY3V0ZSIsIm9ncmF2ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib3RpbGRlIiwidWFjdXRlIiwidWdyYXZlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJkYWdnZXIiLCJkZWdyZWUiLCJjZW50Iiwic3RlcmxpbmciLCJzZWN0aW9uIiwiYnVsbGV0IiwicGFyYWdyYXBoIiwiZ2VybWFuZGJscyIsInJlZ2lzdGVyZWQiLCJjb3B5cmlnaHQiLCJ0cmFkZW1hcmsiLCJhY3V0ZSIsImRpZXJlc2lzIiwibm90ZXF1YWwiLCJBRSIsIk9zbGFzaCIsImluZmluaXR5IiwicGx1c21pbnVzIiwibGVzc2VxdWFsIiwiZ3JlYXRlcmVxdWFsIiwieWVuIiwibXUiLCJwYXJ0aWFsZGlmZiIsInN1bW1hdGlvbiIsInByb2R1Y3QiLCJwaSIsImludGVncmFsIiwib3JkZmVtaW5pbmUiLCJvcmRtYXNjdWxpbmUiLCJPbWVnYSIsImFlIiwib3NsYXNoIiwicXVlc3Rpb25kb3duIiwiZXhjbGFtZG93biIsImxvZ2ljYWxub3QiLCJyYWRpY2FsIiwiZmxvcmluIiwiYXBwcm94ZXF1YWwiLCJEZWx0YSIsImd1aWxsZW1vdGxlZnQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwic3BhY2UiLCJBZ3JhdmUiLCJBdGlsZGUiLCJPdGlsZGUiLCJPRSIsIm9lIiwiZW5kYXNoIiwiZW1kYXNoIiwicXVvdGVkYmxsZWZ0IiwicXVvdGVkYmxyaWdodCIsInF1b3RlbGVmdCIsInF1b3RlcmlnaHQiLCJkaXZpZGUiLCJsb3plbmdlIiwieWRpZXJlc2lzIiwiWWRpZXJlc2lzIiwiZnJhY3Rpb24iLCJjdXJyZW5jeSIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicGVydGhvdXNhbmQiLCJBY2lyY3VtZmxleCIsIkVjaXJjdW1mbGV4IiwiQWFjdXRlIiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsImFwcGxlIiwiT2dyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZ3JhdmUiLCJkb3RsZXNzaSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiJdO3QuTWFjUm9tYW5FbmNvZGluZz1pO2NvbnN0IG49WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsIiIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwiIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwiIiwicXVlc3Rpb25kb3duIiwiIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCIiLCJyaW5nIiwiY2VkaWxsYSIsIiIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiQUUiLCIiLCJvcmRmZW1pbmluZSIsIiIsIiIsIiIsIiIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiIiwiIiwiIiwiIiwiIiwiYWUiLCIiLCIiLCIiLCJkb3RsZXNzaSIsIiIsIiIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIiIsIiIsIiIsIiJdO3QuU3RhbmRhcmRFbmNvZGluZz1uO2NvbnN0IHM9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiYnVsbGV0IiwiRXVybyIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwiZmxvcmluIiwicXVvdGVkYmxiYXNlIiwiZWxsaXBzaXMiLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJjaXJjdW1mbGV4IiwicGVydGhvdXNhbmQiLCJTY2Fyb24iLCJndWlsc2luZ2xsZWZ0IiwiT0UiLCJidWxsZXQiLCJaY2Fyb24iLCJidWxsZXQiLCJidWxsZXQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwicXVvdGVkYmxsZWZ0IiwicXVvdGVkYmxyaWdodCIsImJ1bGxldCIsImVuZGFzaCIsImVtZGFzaCIsInRpbGRlIiwidHJhZGVtYXJrIiwic2Nhcm9uIiwiZ3VpbHNpbmdscmlnaHQiLCJvZSIsImJ1bGxldCIsInpjYXJvbiIsIllkaWVyZXNpcyIsInNwYWNlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImN1cnJlbmN5IiwieWVuIiwiYnJva2VuYmFyIiwic2VjdGlvbiIsImRpZXJlc2lzIiwiY29weXJpZ2h0Iiwib3JkZmVtaW5pbmUiLCJndWlsbGVtb3RsZWZ0IiwibG9naWNhbG5vdCIsImh5cGhlbiIsInJlZ2lzdGVyZWQiLCJtYWNyb24iLCJkZWdyZWUiLCJwbHVzbWludXMiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJhY3V0ZSIsIm11IiwicGFyYWdyYXBoIiwicGVyaW9kY2VudGVyZWQiLCJjZWRpbGxhIiwib25lc3VwZXJpb3IiLCJvcmRtYXNjdWxpbmUiLCJndWlsbGVtb3RyaWdodCIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsInF1ZXN0aW9uZG93biIsIkFncmF2ZSIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQXRpbGRlIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJBRSIsIkNjZWRpbGxhIiwiRWdyYXZlIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJJZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIkV0aCIsIk50aWxkZSIsIk9ncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT3RpbGRlIiwiT2RpZXJlc2lzIiwibXVsdGlwbHkiLCJPc2xhc2giLCJVZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIllhY3V0ZSIsIlRob3JuIiwiZ2VybWFuZGJscyIsImFncmF2ZSIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYXRpbGRlIiwiYWRpZXJlc2lzIiwiYXJpbmciLCJhZSIsImNjZWRpbGxhIiwiZWdyYXZlIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImV0aCIsIm50aWxkZSIsIm9ncmF2ZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib3RpbGRlIiwib2RpZXJlc2lzIiwiZGl2aWRlIiwib3NsYXNoIiwidWdyYXZlIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ5YWN1dGUiLCJ0aG9ybiIsInlkaWVyZXNpcyJdO3QuV2luQW5zaUVuY29kaW5nPXM7Y29uc3Qgbz1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwidW5pdmVyc2FsIiwibnVtYmVyc2lnbiIsImV4aXN0ZW50aWFsIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInN1Y2h0aGF0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrbWF0aCIsInBsdXMiLCJjb21tYSIsIm1pbnVzIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJjb25ncnVlbnQiLCJBbHBoYSIsIkJldGEiLCJDaGkiLCJEZWx0YSIsIkVwc2lsb24iLCJQaGkiLCJHYW1tYSIsIkV0YSIsIklvdGEiLCJ0aGV0YTEiLCJLYXBwYSIsIkxhbWJkYSIsIk11IiwiTnUiLCJPbWljcm9uIiwiUGkiLCJUaGV0YSIsIlJobyIsIlNpZ21hIiwiVGF1IiwiVXBzaWxvbiIsInNpZ21hMSIsIk9tZWdhIiwiWGkiLCJQc2kiLCJaZXRhIiwiYnJhY2tldGxlZnQiLCJ0aGVyZWZvcmUiLCJicmFja2V0cmlnaHQiLCJwZXJwZW5kaWN1bGFyIiwidW5kZXJzY29yZSIsInJhZGljYWxleCIsImFscGhhIiwiYmV0YSIsImNoaSIsImRlbHRhIiwiZXBzaWxvbiIsInBoaSIsImdhbW1hIiwiZXRhIiwiaW90YSIsInBoaTEiLCJrYXBwYSIsImxhbWJkYSIsIm11IiwibnUiLCJvbWljcm9uIiwicGkiLCJ0aGV0YSIsInJobyIsInNpZ21hIiwidGF1IiwidXBzaWxvbiIsIm9tZWdhMSIsIm9tZWdhIiwieGkiLCJwc2kiLCJ6ZXRhIiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsInNpbWlsYXIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJFdXJvIiwiVXBzaWxvbjEiLCJtaW51dGUiLCJsZXNzZXF1YWwiLCJmcmFjdGlvbiIsImluZmluaXR5IiwiZmxvcmluIiwiY2x1YiIsImRpYW1vbmQiLCJoZWFydCIsInNwYWRlIiwiYXJyb3dib3RoIiwiYXJyb3dsZWZ0IiwiYXJyb3d1cCIsImFycm93cmlnaHQiLCJhcnJvd2Rvd24iLCJkZWdyZWUiLCJwbHVzbWludXMiLCJzZWNvbmQiLCJncmVhdGVyZXF1YWwiLCJtdWx0aXBseSIsInByb3BvcnRpb25hbCIsInBhcnRpYWxkaWZmIiwiYnVsbGV0IiwiZGl2aWRlIiwibm90ZXF1YWwiLCJlcXVpdmFsZW5jZSIsImFwcHJveGVxdWFsIiwiZWxsaXBzaXMiLCJhcnJvd3ZlcnRleCIsImFycm93aG9yaXpleCIsImNhcnJpYWdlcmV0dXJuIiwiYWxlcGgiLCJJZnJha3R1ciIsIlJmcmFrdHVyIiwid2VpZXJzdHJhc3MiLCJjaXJjbGVtdWx0aXBseSIsImNpcmNsZXBsdXMiLCJlbXB0eXNldCIsImludGVyc2VjdGlvbiIsInVuaW9uIiwicHJvcGVyc3VwZXJzZXQiLCJyZWZsZXhzdXBlcnNldCIsIm5vdHN1YnNldCIsInByb3BlcnN1YnNldCIsInJlZmxleHN1YnNldCIsImVsZW1lbnQiLCJub3RlbGVtZW50IiwiYW5nbGUiLCJncmFkaWVudCIsInJlZ2lzdGVyc2VyaWYiLCJjb3B5cmlnaHRzZXJpZiIsInRyYWRlbWFya3NlcmlmIiwicHJvZHVjdCIsInJhZGljYWwiLCJkb3RtYXRoIiwibG9naWNhbG5vdCIsImxvZ2ljYWxhbmQiLCJsb2dpY2Fsb3IiLCJhcnJvd2RibGJvdGgiLCJhcnJvd2RibGxlZnQiLCJhcnJvd2RibHVwIiwiYXJyb3dkYmxyaWdodCIsImFycm93ZGJsZG93biIsImxvemVuZ2UiLCJhbmdsZWxlZnQiLCJyZWdpc3RlcnNhbnMiLCJjb3B5cmlnaHRzYW5zIiwidHJhZGVtYXJrc2FucyIsInN1bW1hdGlvbiIsInBhcmVubGVmdHRwIiwicGFyZW5sZWZ0ZXgiLCJwYXJlbmxlZnRidCIsImJyYWNrZXRsZWZ0dHAiLCJicmFja2V0bGVmdGV4IiwiYnJhY2tldGxlZnRidCIsImJyYWNlbGVmdHRwIiwiYnJhY2VsZWZ0bWlkIiwiYnJhY2VsZWZ0YnQiLCJicmFjZWV4IiwiIiwiYW5nbGVyaWdodCIsImludGVncmFsIiwiaW50ZWdyYWx0cCIsImludGVncmFsZXgiLCJpbnRlZ3JhbGJ0IiwicGFyZW5yaWdodHRwIiwicGFyZW5yaWdodGV4IiwicGFyZW5yaWdodGJ0IiwiYnJhY2tldHJpZ2h0dHAiLCJicmFja2V0cmlnaHRleCIsImJyYWNrZXRyaWdodGJ0IiwiYnJhY2VyaWdodHRwIiwiYnJhY2VyaWdodG1pZCIsImJyYWNlcmlnaHRidCIsIiJdO3QuU3ltYm9sU2V0RW5jb2Rpbmc9bztjb25zdCBjPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJhMSIsImEyIiwiYTIwMiIsImEzIiwiYTQiLCJhNSIsImExMTkiLCJhMTE4IiwiYTExNyIsImExMSIsImExMiIsImExMyIsImExNCIsImExNSIsImExNiIsImExMDUiLCJhMTciLCJhMTgiLCJhMTkiLCJhMjAiLCJhMjEiLCJhMjIiLCJhMjMiLCJhMjQiLCJhMjUiLCJhMjYiLCJhMjciLCJhMjgiLCJhNiIsImE3IiwiYTgiLCJhOSIsImExMCIsImEyOSIsImEzMCIsImEzMSIsImEzMiIsImEzMyIsImEzNCIsImEzNSIsImEzNiIsImEzNyIsImEzOCIsImEzOSIsImE0MCIsImE0MSIsImE0MiIsImE0MyIsImE0NCIsImE0NSIsImE0NiIsImE0NyIsImE0OCIsImE0OSIsImE1MCIsImE1MSIsImE1MiIsImE1MyIsImE1NCIsImE1NSIsImE1NiIsImE1NyIsImE1OCIsImE1OSIsImE2MCIsImE2MSIsImE2MiIsImE2MyIsImE2NCIsImE2NSIsImE2NiIsImE2NyIsImE2OCIsImE2OSIsImE3MCIsImE3MSIsImE3MiIsImE3MyIsImE3NCIsImEyMDMiLCJhNzUiLCJhMjA0IiwiYTc2IiwiYTc3IiwiYTc4IiwiYTc5IiwiYTgxIiwiYTgyIiwiYTgzIiwiYTg0IiwiYTk3IiwiYTk4IiwiYTk5IiwiYTEwMCIsIiIsImE4OSIsImE5MCIsImE5MyIsImE5NCIsImE5MSIsImE5MiIsImEyMDUiLCJhODUiLCJhMjA2IiwiYTg2IiwiYTg3IiwiYTg4IiwiYTk1IiwiYTk2IiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiYTEwMSIsImExMDIiLCJhMTAzIiwiYTEwNCIsImExMDYiLCJhMTA3IiwiYTEwOCIsImExMTIiLCJhMTExIiwiYTExMCIsImExMDkiLCJhMTIwIiwiYTEyMSIsImExMjIiLCJhMTIzIiwiYTEyNCIsImExMjUiLCJhMTI2IiwiYTEyNyIsImExMjgiLCJhMTI5IiwiYTEzMCIsImExMzEiLCJhMTMyIiwiYTEzMyIsImExMzQiLCJhMTM1IiwiYTEzNiIsImExMzciLCJhMTM4IiwiYTEzOSIsImExNDAiLCJhMTQxIiwiYTE0MiIsImExNDMiLCJhMTQ0IiwiYTE0NSIsImExNDYiLCJhMTQ3IiwiYTE0OCIsImExNDkiLCJhMTUwIiwiYTE1MSIsImExNTIiLCJhMTUzIiwiYTE1NCIsImExNTUiLCJhMTU2IiwiYTE1NyIsImExNTgiLCJhMTU5IiwiYTE2MCIsImExNjEiLCJhMTYzIiwiYTE2NCIsImExOTYiLCJhMTY1IiwiYTE5MiIsImExNjYiLCJhMTY3IiwiYTE2OCIsImExNjkiLCJhMTcwIiwiYTE3MSIsImExNzIiLCJhMTczIiwiYTE2MiIsImExNzQiLCJhMTc1IiwiYTE3NiIsImExNzciLCJhMTc4IiwiYTE3OSIsImExOTMiLCJhMTgwIiwiYTE5OSIsImExODEiLCJhMjAwIiwiYTE4MiIsIiIsImEyMDEiLCJhMTgzIiwiYTE4NCIsImExOTciLCJhMTg1IiwiYTE5NCIsImExOTgiLCJhMTg2IiwiYTE5NSIsImExODciLCJhMTg4IiwiYTE4OSIsImExOTAiLCJhMTkxIiwiIl07dC5aYXBmRGluZ2JhdHNFbmNvZGluZz1jfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU0VBQ19BTkFMWVNJU19FTkFCTEVEPXQuTWFjU3RhbmRhcmRHbHlwaE9yZGVyaW5nPXQuRm9udEZsYWdzPXZvaWQgMDt0Lm5vcm1hbGl6ZUZvbnROYW1lPWZ1bmN0aW9uIG5vcm1hbGl6ZUZvbnROYW1lKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpLnJlcGxhY2VBbGwoL1xzL2csIiIpfTt0LnJlY292ZXJHbHlwaE5hbWU9cmVjb3ZlckdseXBoTmFtZTt0LnR5cGUxRm9udEdseXBoTWFwcGluZz1mdW5jdGlvbiB0eXBlMUZvbnRHbHlwaE1hcHBpbmcoZSx0LGEpe2NvbnN0IG49T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgcyxjLGw7Y29uc3QgaD0hIShlLmZsYWdzJm8uU3ltYm9saWMpO2lmKGUuaXNJbnRlcm5hbEZvbnQpe2w9dDtmb3IoYz0wO2M8bC5sZW5ndGg7YysrKXtzPWEuaW5kZXhPZihsW2NdKTtuW2NdPXM+PTA/czowfX1lbHNlIGlmKGUuYmFzZUVuY29kaW5nTmFtZSl7bD0oMCxyLmdldEVuY29kaW5nKShlLmJhc2VFbmNvZGluZ05hbWUpO2ZvcihjPTA7YzxsLmxlbmd0aDtjKyspe3M9YS5pbmRleE9mKGxbY10pO25bY109cz49MD9zOjB9fWVsc2UgaWYoaClmb3IoYyBpbiB0KW5bY109dFtjXTtlbHNle2w9ci5TdGFuZGFyZEVuY29kaW5nO2ZvcihjPTA7YzxsLmxlbmd0aDtjKyspe3M9YS5pbmRleE9mKGxbY10pO25bY109cz49MD9zOjB9fWNvbnN0IHU9ZS5kaWZmZXJlbmNlcztsZXQgZDtpZih1KWZvcihjIGluIHUpe2NvbnN0IGU9dVtjXTtzPWEuaW5kZXhPZihlKTtpZigtMT09PXMpe2R8fChkPSgwLGkuZ2V0R2x5cGhzVW5pY29kZSkoKSk7Y29uc3QgdD1yZWNvdmVyR2x5cGhOYW1lKGUsZCk7dCE9PWUmJihzPWEuaW5kZXhPZih0KSl9bltjXT1zPj0wP3M6MH1yZXR1cm4gbn07dmFyIHI9YSgzNyksaT1hKDM5KSxuPWEoNDApLHM9YSgyKTt0LlNFQUNfQU5BTFlTSVNfRU5BQkxFRD0hMDtjb25zdCBvPXtGaXhlZFBpdGNoOjEsU2VyaWY6MixTeW1ib2xpYzo0LFNjcmlwdDo4LE5vbnN5bWJvbGljOjMyLEl0YWxpYzo2NCxBbGxDYXA6NjU1MzYsU21hbGxDYXA6MTMxMDcyLEZvcmNlQm9sZDoyNjIxNDR9O3QuRm9udEZsYWdzPW87dC5NYWNTdGFuZGFyZEdseXBoT3JkZXJpbmc9WyIubm90ZGVmIiwiLm51bGwiLCJub25tYXJraW5ncmV0dXJuIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJOdGlsZGUiLCJPZGllcmVzaXMiLCJVZGllcmVzaXMiLCJhYWN1dGUiLCJhZ3JhdmUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImF0aWxkZSIsImFyaW5nIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlZ3JhdmUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImlhY3V0ZSIsImlncmF2ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwibnRpbGRlIiwib2FjdXRlIiwib2dyYXZlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvdGlsZGUiLCJ1YWN1dGUiLCJ1Z3JhdmUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsImRhZ2dlciIsImRlZ3JlZSIsImNlbnQiLCJzdGVybGluZyIsInNlY3Rpb24iLCJidWxsZXQiLCJwYXJhZ3JhcGgiLCJnZXJtYW5kYmxzIiwicmVnaXN0ZXJlZCIsImNvcHlyaWdodCIsInRyYWRlbWFyayIsImFjdXRlIiwiZGllcmVzaXMiLCJub3RlcXVhbCIsIkFFIiwiT3NsYXNoIiwiaW5maW5pdHkiLCJwbHVzbWludXMiLCJsZXNzZXF1YWwiLCJncmVhdGVyZXF1YWwiLCJ5ZW4iLCJtdSIsInBhcnRpYWxkaWZmIiwic3VtbWF0aW9uIiwicHJvZHVjdCIsInBpIiwiaW50ZWdyYWwiLCJvcmRmZW1pbmluZSIsIm9yZG1hc2N1bGluZSIsIk9tZWdhIiwiYWUiLCJvc2xhc2giLCJxdWVzdGlvbmRvd24iLCJleGNsYW1kb3duIiwibG9naWNhbG5vdCIsInJhZGljYWwiLCJmbG9yaW4iLCJhcHByb3hlcXVhbCIsIkRlbHRhIiwiZ3VpbGxlbW90bGVmdCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJub25icmVha2luZ3NwYWNlIiwiQWdyYXZlIiwiQXRpbGRlIiwiT3RpbGRlIiwiT0UiLCJvZSIsImVuZGFzaCIsImVtZGFzaCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwiZGl2aWRlIiwibG96ZW5nZSIsInlkaWVyZXNpcyIsIllkaWVyZXNpcyIsImZyYWN0aW9uIiwiY3VycmVuY3kiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInBlcnRob3VzYW5kIiwiQWNpcmN1bWZsZXgiLCJFY2lyY3VtZmxleCIsIkFhY3V0ZSIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJhcHBsZSIsIk9ncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWdyYXZlIiwiZG90bGVzc2kiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJMc2xhc2giLCJsc2xhc2giLCJTY2Fyb24iLCJzY2Fyb24iLCJaY2Fyb24iLCJ6Y2Fyb24iLCJicm9rZW5iYXIiLCJFdGgiLCJldGgiLCJZYWN1dGUiLCJ5YWN1dGUiLCJUaG9ybiIsInRob3JuIiwibWludXMiLCJtdWx0aXBseSIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwib25laGFsZiIsIm9uZXF1YXJ0ZXIiLCJ0aHJlZXF1YXJ0ZXJzIiwiZnJhbmMiLCJHYnJldmUiLCJnYnJldmUiLCJJZG90YWNjZW50IiwiU2NlZGlsbGEiLCJzY2VkaWxsYSIsIkNhY3V0ZSIsImNhY3V0ZSIsIkNjYXJvbiIsImNjYXJvbiIsImRjcm9hdCJdO2Z1bmN0aW9uIHJlY292ZXJHbHlwaE5hbWUoZSx0KXtpZih2b2lkIDAhPT10W2VdKXJldHVybiBlO2NvbnN0IGE9KDAsbi5nZXRVbmljb2RlRm9yR2x5cGgpKGUsdCk7aWYoLTEhPT1hKWZvcihjb25zdCBlIGluIHQpaWYodFtlXT09PWEpcmV0dXJuIGU7KDAscy5pbmZvKSgiVW5hYmxlIHRvIHJlY292ZXIgYSBzdGFuZGFyZCBnbHlwaCBuYW1lIGZvcjogIitlKTtyZXR1cm4gZX19LChlLHQsYSk9PnthLnIodCk7YS5kKHQse2dldERpbmdiYXRzR2x5cGhzVW5pY29kZTooKT0+bixnZXRHbHlwaHNVbmljb2RlOigpPT5pfSk7dmFyIHI9YSgzKTtjb25zdCBpPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5BPTY1O2UuQUU9MTk4O2UuQUVhY3V0ZT01MDg7ZS5BRW1hY3Jvbj00ODI7ZS5BRXNtYWxsPTYzNDYyO2UuQWFjdXRlPTE5MztlLkFhY3V0ZXNtYWxsPTYzNDU3O2UuQWJyZXZlPTI1ODtlLkFicmV2ZWFjdXRlPTc4NTQ7ZS5BYnJldmVjeXJpbGxpYz0xMjMyO2UuQWJyZXZlZG90YmVsb3c9Nzg2MjtlLkFicmV2ZWdyYXZlPTc4NTY7ZS5BYnJldmVob29rYWJvdmU9Nzg1ODtlLkFicmV2ZXRpbGRlPTc4NjA7ZS5BY2Fyb249NDYxO2UuQWNpcmNsZT05Mzk4O2UuQWNpcmN1bWZsZXg9MTk0O2UuQWNpcmN1bWZsZXhhY3V0ZT03ODQ0O2UuQWNpcmN1bWZsZXhkb3RiZWxvdz03ODUyO2UuQWNpcmN1bWZsZXhncmF2ZT03ODQ2O2UuQWNpcmN1bWZsZXhob29rYWJvdmU9Nzg0ODtlLkFjaXJjdW1mbGV4c21hbGw9NjM0NTg7ZS5BY2lyY3VtZmxleHRpbGRlPTc4NTA7ZS5BY3V0ZT02MzE3NztlLkFjdXRlc21hbGw9NjM0MTI7ZS5BY3lyaWxsaWM9MTA0MDtlLkFkYmxncmF2ZT01MTI7ZS5BZGllcmVzaXM9MTk2O2UuQWRpZXJlc2lzY3lyaWxsaWM9MTIzNDtlLkFkaWVyZXNpc21hY3Jvbj00Nzg7ZS5BZGllcmVzaXNzbWFsbD02MzQ2MDtlLkFkb3RiZWxvdz03ODQwO2UuQWRvdG1hY3Jvbj00ODA7ZS5BZ3JhdmU9MTkyO2UuQWdyYXZlc21hbGw9NjM0NTY7ZS5BaG9va2Fib3ZlPTc4NDI7ZS5BaWVjeXJpbGxpYz0xMjM2O2UuQWludmVydGVkYnJldmU9NTE0O2UuQWxwaGE9OTEzO2UuQWxwaGF0b25vcz05MDI7ZS5BbWFjcm9uPTI1NjtlLkFtb25vc3BhY2U9NjUzMTM7ZS5Bb2dvbmVrPTI2MDtlLkFyaW5nPTE5NztlLkFyaW5nYWN1dGU9NTA2O2UuQXJpbmdiZWxvdz03NjgwO2UuQXJpbmdzbWFsbD02MzQ2MTtlLkFzbWFsbD02MzMyOTtlLkF0aWxkZT0xOTU7ZS5BdGlsZGVzbWFsbD02MzQ1OTtlLkF5YmFybWVuaWFuPTEzMjk7ZS5CPTY2O2UuQmNpcmNsZT05Mzk5O2UuQmRvdGFjY2VudD03NjgyO2UuQmRvdGJlbG93PTc2ODQ7ZS5CZWN5cmlsbGljPTEwNDE7ZS5CZW5hcm1lbmlhbj0xMzMwO2UuQmV0YT05MTQ7ZS5CaG9vaz0zODU7ZS5CbGluZWJlbG93PTc2ODY7ZS5CbW9ub3NwYWNlPTY1MzE0O2UuQnJldmVzbWFsbD02MzIyMDtlLkJzbWFsbD02MzMzMDtlLkJ0b3BiYXI9Mzg2O2UuQz02NztlLkNhYXJtZW5pYW49MTM0MjtlLkNhY3V0ZT0yNjI7ZS5DYXJvbj02MzE3ODtlLkNhcm9uc21hbGw9NjMyMjE7ZS5DY2Fyb249MjY4O2UuQ2NlZGlsbGE9MTk5O2UuQ2NlZGlsbGFhY3V0ZT03Njg4O2UuQ2NlZGlsbGFzbWFsbD02MzQ2MztlLkNjaXJjbGU9OTQwMDtlLkNjaXJjdW1mbGV4PTI2NDtlLkNkb3Q9MjY2O2UuQ2RvdGFjY2VudD0yNjY7ZS5DZWRpbGxhc21hbGw9NjM0MTY7ZS5DaGFhcm1lbmlhbj0xMzUzO2UuQ2hlYWJraGFzaWFuY3lyaWxsaWM9MTIxMjtlLkNoZWN5cmlsbGljPTEwNjM7ZS5DaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYz0xMjE0O2UuQ2hlZGVzY2VuZGVyY3lyaWxsaWM9MTIwNjtlLkNoZWRpZXJlc2lzY3lyaWxsaWM9MTI2ODtlLkNoZWhhcm1lbmlhbj0xMzQ3O2UuQ2hla2hha2Fzc2lhbmN5cmlsbGljPTEyMjc7ZS5DaGV2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTEyMDg7ZS5DaGk9OTM1O2UuQ2hvb2s9MzkxO2UuQ2lyY3VtZmxleHNtYWxsPTYzMjIyO2UuQ21vbm9zcGFjZT02NTMxNTtlLkNvYXJtZW5pYW49MTM2MTtlLkNzbWFsbD02MzMzMTtlLkQ9Njg7ZS5EWj00OTc7ZS5EWmNhcm9uPTQ1MjtlLkRhYXJtZW5pYW49MTMzMjtlLkRhZnJpY2FuPTM5MztlLkRjYXJvbj0yNzA7ZS5EY2VkaWxsYT03Njk2O2UuRGNpcmNsZT05NDAxO2UuRGNpcmN1bWZsZXhiZWxvdz03Njk4O2UuRGNyb2F0PTI3MjtlLkRkb3RhY2NlbnQ9NzY5MDtlLkRkb3RiZWxvdz03NjkyO2UuRGVjeXJpbGxpYz0xMDQ0O2UuRGVpY29wdGljPTEwMDY7ZS5EZWx0YT04NzEwO2UuRGVsdGFncmVlaz05MTY7ZS5EaG9vaz0zOTQ7ZS5EaWVyZXNpcz02MzE3OTtlLkRpZXJlc2lzQWN1dGU9NjMxODA7ZS5EaWVyZXNpc0dyYXZlPTYzMTgxO2UuRGllcmVzaXNzbWFsbD02MzQwMDtlLkRpZ2FtbWFncmVlaz05ODg7ZS5EamVjeXJpbGxpYz0xMDI2O2UuRGxpbmViZWxvdz03Njk0O2UuRG1vbm9zcGFjZT02NTMxNjtlLkRvdGFjY2VudHNtYWxsPTYzMjIzO2UuRHNsYXNoPTI3MjtlLkRzbWFsbD02MzMzMjtlLkR0b3BiYXI9Mzk1O2UuRHo9NDk4O2UuRHpjYXJvbj00NTM7ZS5EemVhYmtoYXNpYW5jeXJpbGxpYz0xMjQ4O2UuRHplY3lyaWxsaWM9MTAyOTtlLkR6aGVjeXJpbGxpYz0xMDM5O2UuRT02OTtlLkVhY3V0ZT0yMDE7ZS5FYWN1dGVzbWFsbD02MzQ2NTtlLkVicmV2ZT0yNzY7ZS5FY2Fyb249MjgyO2UuRWNlZGlsbGFicmV2ZT03NzA4O2UuRWNoYXJtZW5pYW49MTMzMztlLkVjaXJjbGU9OTQwMjtlLkVjaXJjdW1mbGV4PTIwMjtlLkVjaXJjdW1mbGV4YWN1dGU9Nzg3MDtlLkVjaXJjdW1mbGV4YmVsb3c9NzcwNDtlLkVjaXJjdW1mbGV4ZG90YmVsb3c9Nzg3ODtlLkVjaXJjdW1mbGV4Z3JhdmU9Nzg3MjtlLkVjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NzQ7ZS5FY2lyY3VtZmxleHNtYWxsPTYzNDY2O2UuRWNpcmN1bWZsZXh0aWxkZT03ODc2O2UuRWN5cmlsbGljPTEwMjg7ZS5FZGJsZ3JhdmU9NTE2O2UuRWRpZXJlc2lzPTIwMztlLkVkaWVyZXNpc3NtYWxsPTYzNDY3O2UuRWRvdD0yNzg7ZS5FZG90YWNjZW50PTI3ODtlLkVkb3RiZWxvdz03ODY0O2UuRWZjeXJpbGxpYz0xMDYwO2UuRWdyYXZlPTIwMDtlLkVncmF2ZXNtYWxsPTYzNDY0O2UuRWhhcm1lbmlhbj0xMzM1O2UuRWhvb2thYm92ZT03ODY2O2UuRWlnaHRyb21hbj04NTUxO2UuRWludmVydGVkYnJldmU9NTE4O2UuRWlvdGlmaWVkY3lyaWxsaWM9MTEyNDtlLkVsY3lyaWxsaWM9MTA1MTtlLkVsZXZlbnJvbWFuPTg1NTQ7ZS5FbWFjcm9uPTI3NDtlLkVtYWNyb25hY3V0ZT03NzAyO2UuRW1hY3JvbmdyYXZlPTc3MDA7ZS5FbWN5cmlsbGljPTEwNTI7ZS5FbW9ub3NwYWNlPTY1MzE3O2UuRW5jeXJpbGxpYz0xMDUzO2UuRW5kZXNjZW5kZXJjeXJpbGxpYz0xMTg2O2UuRW5nPTMzMDtlLkVuZ2hlY3lyaWxsaWM9MTE4ODtlLkVuaG9va2N5cmlsbGljPTEyMjM7ZS5Fb2dvbmVrPTI4MDtlLkVvcGVuPTQwMDtlLkVwc2lsb249OTE3O2UuRXBzaWxvbnRvbm9zPTkwNDtlLkVyY3lyaWxsaWM9MTA1NjtlLkVyZXZlcnNlZD0zOTg7ZS5FcmV2ZXJzZWRjeXJpbGxpYz0xMDY5O2UuRXNjeXJpbGxpYz0xMDU3O2UuRXNkZXNjZW5kZXJjeXJpbGxpYz0xMTk0O2UuRXNoPTQyNTtlLkVzbWFsbD02MzMzMztlLkV0YT05MTk7ZS5FdGFybWVuaWFuPTEzMzY7ZS5FdGF0b25vcz05MDU7ZS5FdGg9MjA4O2UuRXRoc21hbGw9NjM0NzI7ZS5FdGlsZGU9Nzg2ODtlLkV0aWxkZWJlbG93PTc3MDY7ZS5FdXJvPTgzNjQ7ZS5Femg9NDM5O2UuRXpoY2Fyb249NDk0O2UuRXpocmV2ZXJzZWQ9NDQwO2UuRj03MDtlLkZjaXJjbGU9OTQwMztlLkZkb3RhY2NlbnQ9NzcxMDtlLkZlaGFybWVuaWFuPTEzNjY7ZS5GZWljb3B0aWM9OTk2O2UuRmhvb2s9NDAxO2UuRml0YWN5cmlsbGljPTExMzg7ZS5GaXZlcm9tYW49ODU0ODtlLkZtb25vc3BhY2U9NjUzMTg7ZS5Gb3Vycm9tYW49ODU0NztlLkZzbWFsbD02MzMzNDtlLkc9NzE7ZS5HQnNxdWFyZT0xMzE5MTtlLkdhY3V0ZT01MDA7ZS5HYW1tYT05MTU7ZS5HYW1tYWFmcmljYW49NDA0O2UuR2FuZ2lhY29wdGljPTEwMDI7ZS5HYnJldmU9Mjg2O2UuR2Nhcm9uPTQ4NjtlLkdjZWRpbGxhPTI5MDtlLkdjaXJjbGU9OTQwNDtlLkdjaXJjdW1mbGV4PTI4NDtlLkdjb21tYWFjY2VudD0yOTA7ZS5HZG90PTI4ODtlLkdkb3RhY2NlbnQ9Mjg4O2UuR2VjeXJpbGxpYz0xMDQzO2UuR2hhZGFybWVuaWFuPTEzNDY7ZS5HaGVtaWRkbGVob29rY3lyaWxsaWM9MTE3MjtlLkdoZXN0cm9rZWN5cmlsbGljPTExNzA7ZS5HaGV1cHR1cm5jeXJpbGxpYz0xMTY4O2UuR2hvb2s9NDAzO2UuR2ltYXJtZW5pYW49MTMzMTtlLkdqZWN5cmlsbGljPTEwMjc7ZS5HbWFjcm9uPTc3MTI7ZS5HbW9ub3NwYWNlPTY1MzE5O2UuR3JhdmU9NjMxODI7ZS5HcmF2ZXNtYWxsPTYzMzI4O2UuR3NtYWxsPTYzMzM1O2UuR3NtYWxsaG9vaz02Njc7ZS5Hc3Ryb2tlPTQ4NDtlLkg9NzI7ZS5IMTg1MzM9OTY3OTtlLkgxODU0Mz05NjQyO2UuSDE4NTUxPTk2NDM7ZS5IMjIwNzM9OTYzMztlLkhQc3F1YXJlPTEzMjU5O2UuSGFhYmtoYXNpYW5jeXJpbGxpYz0xMTkyO2UuSGFkZXNjZW5kZXJjeXJpbGxpYz0xMjAyO2UuSGFyZHNpZ25jeXJpbGxpYz0xMDY2O2UuSGJhcj0yOTQ7ZS5IYnJldmViZWxvdz03NzIyO2UuSGNlZGlsbGE9NzcyMDtlLkhjaXJjbGU9OTQwNTtlLkhjaXJjdW1mbGV4PTI5MjtlLkhkaWVyZXNpcz03NzE4O2UuSGRvdGFjY2VudD03NzE0O2UuSGRvdGJlbG93PTc3MTY7ZS5IbW9ub3NwYWNlPTY1MzIwO2UuSG9hcm1lbmlhbj0xMzQ0O2UuSG9yaWNvcHRpYz0xZTM7ZS5Ic21hbGw9NjMzMzY7ZS5IdW5nYXJ1bWxhdXQ9NjMxODM7ZS5IdW5nYXJ1bWxhdXRzbWFsbD02MzIyNDtlLkh6c3F1YXJlPTEzMjAwO2UuST03MztlLklBY3lyaWxsaWM9MTA3MTtlLklKPTMwNjtlLklVY3lyaWxsaWM9MTA3MDtlLklhY3V0ZT0yMDU7ZS5JYWN1dGVzbWFsbD02MzQ2OTtlLklicmV2ZT0zMDA7ZS5JY2Fyb249NDYzO2UuSWNpcmNsZT05NDA2O2UuSWNpcmN1bWZsZXg9MjA2O2UuSWNpcmN1bWZsZXhzbWFsbD02MzQ3MDtlLkljeXJpbGxpYz0xMDMwO2UuSWRibGdyYXZlPTUyMDtlLklkaWVyZXNpcz0yMDc7ZS5JZGllcmVzaXNhY3V0ZT03NzI2O2UuSWRpZXJlc2lzY3lyaWxsaWM9MTI1MjtlLklkaWVyZXNpc3NtYWxsPTYzNDcxO2UuSWRvdD0zMDQ7ZS5JZG90YWNjZW50PTMwNDtlLklkb3RiZWxvdz03ODgyO2UuSWVicmV2ZWN5cmlsbGljPTEyMzg7ZS5JZWN5cmlsbGljPTEwNDU7ZS5JZnJha3R1cj04NDY1O2UuSWdyYXZlPTIwNDtlLklncmF2ZXNtYWxsPTYzNDY4O2UuSWhvb2thYm92ZT03ODgwO2UuSWljeXJpbGxpYz0xMDQ4O2UuSWludmVydGVkYnJldmU9NTIyO2UuSWlzaG9ydGN5cmlsbGljPTEwNDk7ZS5JbWFjcm9uPTI5ODtlLkltYWNyb25jeXJpbGxpYz0xMjUwO2UuSW1vbm9zcGFjZT02NTMyMTtlLkluaWFybWVuaWFuPTEzMzk7ZS5Jb2N5cmlsbGljPTEwMjU7ZS5Jb2dvbmVrPTMwMjtlLklvdGE9OTIxO2UuSW90YWFmcmljYW49NDA2O2UuSW90YWRpZXJlc2lzPTkzODtlLklvdGF0b25vcz05MDY7ZS5Jc21hbGw9NjMzMzc7ZS5Jc3Ryb2tlPTQwNztlLkl0aWxkZT0yOTY7ZS5JdGlsZGViZWxvdz03NzI0O2UuSXpoaXRzYWN5cmlsbGljPTExNDA7ZS5JemhpdHNhZGJsZ3JhdmVjeXJpbGxpYz0xMTQyO2UuSj03NDtlLkphYXJtZW5pYW49MTM0NTtlLkpjaXJjbGU9OTQwNztlLkpjaXJjdW1mbGV4PTMwODtlLkplY3lyaWxsaWM9MTAzMjtlLkpoZWhhcm1lbmlhbj0xMzU1O2UuSm1vbm9zcGFjZT02NTMyMjtlLkpzbWFsbD02MzMzODtlLks9NzU7ZS5LQnNxdWFyZT0xMzE4OTtlLktLc3F1YXJlPTEzMjYxO2UuS2FiYXNoa2lyY3lyaWxsaWM9MTE4NDtlLkthY3V0ZT03NzI4O2UuS2FjeXJpbGxpYz0xMDUwO2UuS2FkZXNjZW5kZXJjeXJpbGxpYz0xMTc4O2UuS2Fob29rY3lyaWxsaWM9MTIxOTtlLkthcHBhPTkyMjtlLkthc3Ryb2tlY3lyaWxsaWM9MTE4MjtlLkthdmVydGljYWxzdHJva2VjeXJpbGxpYz0xMTgwO2UuS2Nhcm9uPTQ4ODtlLktjZWRpbGxhPTMxMDtlLktjaXJjbGU9OTQwODtlLktjb21tYWFjY2VudD0zMTA7ZS5LZG90YmVsb3c9NzczMDtlLktlaGFybWVuaWFuPTEzNjQ7ZS5LZW5hcm1lbmlhbj0xMzQzO2UuS2hhY3lyaWxsaWM9MTA2MTtlLktoZWljb3B0aWM9OTk4O2UuS2hvb2s9NDA4O2UuS2plY3lyaWxsaWM9MTAzNjtlLktsaW5lYmVsb3c9NzczMjtlLkttb25vc3BhY2U9NjUzMjM7ZS5Lb3BwYWN5cmlsbGljPTExNTI7ZS5Lb3BwYWdyZWVrPTk5MDtlLktzaWN5cmlsbGljPTExMzQ7ZS5Lc21hbGw9NjMzMzk7ZS5MPTc2O2UuTEo9NDU1O2UuTEw9NjMxNjc7ZS5MYWN1dGU9MzEzO2UuTGFtYmRhPTkyMztlLkxjYXJvbj0zMTc7ZS5MY2VkaWxsYT0zMTU7ZS5MY2lyY2xlPTk0MDk7ZS5MY2lyY3VtZmxleGJlbG93PTc3NDA7ZS5MY29tbWFhY2NlbnQ9MzE1O2UuTGRvdD0zMTk7ZS5MZG90YWNjZW50PTMxOTtlLkxkb3RiZWxvdz03NzM0O2UuTGRvdGJlbG93bWFjcm9uPTc3MzY7ZS5MaXduYXJtZW5pYW49MTM0MDtlLkxqPTQ1NjtlLkxqZWN5cmlsbGljPTEwMzM7ZS5MbGluZWJlbG93PTc3Mzg7ZS5MbW9ub3NwYWNlPTY1MzI0O2UuTHNsYXNoPTMyMTtlLkxzbGFzaHNtYWxsPTYzMjI1O2UuTHNtYWxsPTYzMzQwO2UuTT03NztlLk1Cc3F1YXJlPTEzMTkwO2UuTWFjcm9uPTYzMTg0O2UuTWFjcm9uc21hbGw9NjM0MDc7ZS5NYWN1dGU9Nzc0MjtlLk1jaXJjbGU9OTQxMDtlLk1kb3RhY2NlbnQ9Nzc0NDtlLk1kb3RiZWxvdz03NzQ2O2UuTWVuYXJtZW5pYW49MTM0ODtlLk1tb25vc3BhY2U9NjUzMjU7ZS5Nc21hbGw9NjMzNDE7ZS5NdHVybmVkPTQxMjtlLk11PTkyNDtlLk49Nzg7ZS5OSj00NTg7ZS5OYWN1dGU9MzIzO2UuTmNhcm9uPTMyNztlLk5jZWRpbGxhPTMyNTtlLk5jaXJjbGU9OTQxMTtlLk5jaXJjdW1mbGV4YmVsb3c9Nzc1NDtlLk5jb21tYWFjY2VudD0zMjU7ZS5OZG90YWNjZW50PTc3NDg7ZS5OZG90YmVsb3c9Nzc1MDtlLk5ob29rbGVmdD00MTM7ZS5OaW5lcm9tYW49ODU1MjtlLk5qPTQ1OTtlLk5qZWN5cmlsbGljPTEwMzQ7ZS5ObGluZWJlbG93PTc3NTI7ZS5ObW9ub3NwYWNlPTY1MzI2O2UuTm93YXJtZW5pYW49MTM1MDtlLk5zbWFsbD02MzM0MjtlLk50aWxkZT0yMDk7ZS5OdGlsZGVzbWFsbD02MzQ3MztlLk51PTkyNTtlLk89Nzk7ZS5PRT0zMzg7ZS5PRXNtYWxsPTYzMjI2O2UuT2FjdXRlPTIxMTtlLk9hY3V0ZXNtYWxsPTYzNDc1O2UuT2JhcnJlZGN5cmlsbGljPTEyNTY7ZS5PYmFycmVkZGllcmVzaXNjeXJpbGxpYz0xMjU4O2UuT2JyZXZlPTMzNDtlLk9jYXJvbj00NjU7ZS5PY2VudGVyZWR0aWxkZT00MTU7ZS5PY2lyY2xlPTk0MTI7ZS5PY2lyY3VtZmxleD0yMTI7ZS5PY2lyY3VtZmxleGFjdXRlPTc4ODg7ZS5PY2lyY3VtZmxleGRvdGJlbG93PTc4OTY7ZS5PY2lyY3VtZmxleGdyYXZlPTc4OTA7ZS5PY2lyY3VtZmxleGhvb2thYm92ZT03ODkyO2UuT2NpcmN1bWZsZXhzbWFsbD02MzQ3NjtlLk9jaXJjdW1mbGV4dGlsZGU9Nzg5NDtlLk9jeXJpbGxpYz0xMDU0O2UuT2RibGFjdXRlPTMzNjtlLk9kYmxncmF2ZT01MjQ7ZS5PZGllcmVzaXM9MjE0O2UuT2RpZXJlc2lzY3lyaWxsaWM9MTI1NDtlLk9kaWVyZXNpc3NtYWxsPTYzNDc4O2UuT2RvdGJlbG93PTc4ODQ7ZS5PZ29uZWtzbWFsbD02MzIyNztlLk9ncmF2ZT0yMTA7ZS5PZ3JhdmVzbWFsbD02MzQ3NDtlLk9oYXJtZW5pYW49MTM2NTtlLk9obT04NDg2O2UuT2hvb2thYm92ZT03ODg2O2UuT2hvcm49NDE2O2UuT2hvcm5hY3V0ZT03ODk4O2UuT2hvcm5kb3RiZWxvdz03OTA2O2UuT2hvcm5ncmF2ZT03OTAwO2UuT2hvcm5ob29rYWJvdmU9NzkwMjtlLk9ob3JudGlsZGU9NzkwNDtlLk9odW5nYXJ1bWxhdXQ9MzM2O2UuT2k9NDE4O2UuT2ludmVydGVkYnJldmU9NTI2O2UuT21hY3Jvbj0zMzI7ZS5PbWFjcm9uYWN1dGU9Nzc2MjtlLk9tYWNyb25ncmF2ZT03NzYwO2UuT21lZ2E9ODQ4NjtlLk9tZWdhY3lyaWxsaWM9MTEyMDtlLk9tZWdhZ3JlZWs9OTM3O2UuT21lZ2Fyb3VuZGN5cmlsbGljPTExNDY7ZS5PbWVnYXRpdGxvY3lyaWxsaWM9MTE0ODtlLk9tZWdhdG9ub3M9OTExO2UuT21pY3Jvbj05Mjc7ZS5PbWljcm9udG9ub3M9OTA4O2UuT21vbm9zcGFjZT02NTMyNztlLk9uZXJvbWFuPTg1NDQ7ZS5Pb2dvbmVrPTQ5MDtlLk9vZ29uZWttYWNyb249NDkyO2UuT29wZW49MzkwO2UuT3NsYXNoPTIxNjtlLk9zbGFzaGFjdXRlPTUxMDtlLk9zbGFzaHNtYWxsPTYzNDgwO2UuT3NtYWxsPTYzMzQzO2UuT3N0cm9rZWFjdXRlPTUxMDtlLk90Y3lyaWxsaWM9MTE1MDtlLk90aWxkZT0yMTM7ZS5PdGlsZGVhY3V0ZT03NzU2O2UuT3RpbGRlZGllcmVzaXM9Nzc1ODtlLk90aWxkZXNtYWxsPTYzNDc3O2UuUD04MDtlLlBhY3V0ZT03NzY0O2UuUGNpcmNsZT05NDEzO2UuUGRvdGFjY2VudD03NzY2O2UuUGVjeXJpbGxpYz0xMDU1O2UuUGVoYXJtZW5pYW49MTM1NDtlLlBlbWlkZGxlaG9va2N5cmlsbGljPTExOTA7ZS5QaGk9OTM0O2UuUGhvb2s9NDIwO2UuUGk9OTI4O2UuUGl3cmFybWVuaWFuPTEzNjM7ZS5QbW9ub3NwYWNlPTY1MzI4O2UuUHNpPTkzNjtlLlBzaWN5cmlsbGljPTExMzY7ZS5Qc21hbGw9NjMzNDQ7ZS5RPTgxO2UuUWNpcmNsZT05NDE0O2UuUW1vbm9zcGFjZT02NTMyOTtlLlFzbWFsbD02MzM0NTtlLlI9ODI7ZS5SYWFybWVuaWFuPTEzNTY7ZS5SYWN1dGU9MzQwO2UuUmNhcm9uPTM0NDtlLlJjZWRpbGxhPTM0MjtlLlJjaXJjbGU9OTQxNTtlLlJjb21tYWFjY2VudD0zNDI7ZS5SZGJsZ3JhdmU9NTI4O2UuUmRvdGFjY2VudD03NzY4O2UuUmRvdGJlbG93PTc3NzA7ZS5SZG90YmVsb3dtYWNyb249Nzc3MjtlLlJlaGFybWVuaWFuPTEzNjA7ZS5SZnJha3R1cj04NDc2O2UuUmhvPTkyOTtlLlJpbmdzbWFsbD02MzIyODtlLlJpbnZlcnRlZGJyZXZlPTUzMDtlLlJsaW5lYmVsb3c9Nzc3NDtlLlJtb25vc3BhY2U9NjUzMzA7ZS5Sc21hbGw9NjMzNDY7ZS5Sc21hbGxpbnZlcnRlZD02NDE7ZS5Sc21hbGxpbnZlcnRlZHN1cGVyaW9yPTY5NDtlLlM9ODM7ZS5TRjAxMDAwMD05NDg0O2UuU0YwMjAwMDA9OTQ5MjtlLlNGMDMwMDAwPTk0ODg7ZS5TRjA0MDAwMD05NDk2O2UuU0YwNTAwMDA9OTUzMjtlLlNGMDYwMDAwPTk1MTY7ZS5TRjA3MDAwMD05NTI0O2UuU0YwODAwMDA9OTUwMDtlLlNGMDkwMDAwPTk1MDg7ZS5TRjEwMDAwMD05NDcyO2UuU0YxMTAwMDA9OTQ3NDtlLlNGMTkwMDAwPTk1Njk7ZS5TRjIwMDAwMD05NTcwO2UuU0YyMTAwMDA9OTU1ODtlLlNGMjIwMDAwPTk1NTc7ZS5TRjIzMDAwMD05NTcxO2UuU0YyNDAwMDA9OTU1MztlLlNGMjUwMDAwPTk1NTk7ZS5TRjI2MDAwMD05NTY1O2UuU0YyNzAwMDA9OTU2NDtlLlNGMjgwMDAwPTk1NjM7ZS5TRjM2MDAwMD05NTY2O2UuU0YzNzAwMDA9OTU2NztlLlNGMzgwMDAwPTk1NjI7ZS5TRjM5MDAwMD05NTU2O2UuU0Y0MDAwMDA9OTU3NztlLlNGNDEwMDAwPTk1NzQ7ZS5TRjQyMDAwMD05NTY4O2UuU0Y0MzAwMDA9OTU1MjtlLlNGNDQwMDAwPTk1ODA7ZS5TRjQ1MDAwMD05NTc1O2UuU0Y0NjAwMDA9OTU3NjtlLlNGNDcwMDAwPTk1NzI7ZS5TRjQ4MDAwMD05NTczO2UuU0Y0OTAwMDA9OTU2MTtlLlNGNTAwMDAwPTk1NjA7ZS5TRjUxMDAwMD05NTU0O2UuU0Y1MjAwMDA9OTU1NTtlLlNGNTMwMDAwPTk1Nzk7ZS5TRjU0MDAwMD05NTc4O2UuU2FjdXRlPTM0NjtlLlNhY3V0ZWRvdGFjY2VudD03NzgwO2UuU2FtcGlncmVlaz05OTI7ZS5TY2Fyb249MzUyO2UuU2Nhcm9uZG90YWNjZW50PTc3ODI7ZS5TY2Fyb25zbWFsbD02MzIyOTtlLlNjZWRpbGxhPTM1MDtlLlNjaHdhPTM5OTtlLlNjaHdhY3lyaWxsaWM9MTI0MDtlLlNjaHdhZGllcmVzaXNjeXJpbGxpYz0xMjQyO2UuU2NpcmNsZT05NDE2O2UuU2NpcmN1bWZsZXg9MzQ4O2UuU2NvbW1hYWNjZW50PTUzNjtlLlNkb3RhY2NlbnQ9Nzc3NjtlLlNkb3RiZWxvdz03Nzc4O2UuU2RvdGJlbG93ZG90YWNjZW50PTc3ODQ7ZS5TZWhhcm1lbmlhbj0xMzU3O2UuU2V2ZW5yb21hbj04NTUwO2UuU2hhYXJtZW5pYW49MTM1MTtlLlNoYWN5cmlsbGljPTEwNjQ7ZS5TaGNoYWN5cmlsbGljPTEwNjU7ZS5TaGVpY29wdGljPTk5NDtlLlNoaGFjeXJpbGxpYz0xMjEwO2UuU2hpbWFjb3B0aWM9MTAwNDtlLlNpZ21hPTkzMTtlLlNpeHJvbWFuPTg1NDk7ZS5TbW9ub3NwYWNlPTY1MzMxO2UuU29mdHNpZ25jeXJpbGxpYz0xMDY4O2UuU3NtYWxsPTYzMzQ3O2UuU3RpZ21hZ3JlZWs9OTg2O2UuVD04NDtlLlRhdT05MzI7ZS5UYmFyPTM1ODtlLlRjYXJvbj0zNTY7ZS5UY2VkaWxsYT0zNTQ7ZS5UY2lyY2xlPTk0MTc7ZS5UY2lyY3VtZmxleGJlbG93PTc3OTI7ZS5UY29tbWFhY2NlbnQ9MzU0O2UuVGRvdGFjY2VudD03Nzg2O2UuVGRvdGJlbG93PTc3ODg7ZS5UZWN5cmlsbGljPTEwNTg7ZS5UZWRlc2NlbmRlcmN5cmlsbGljPTExOTY7ZS5UZW5yb21hbj04NTUzO2UuVGV0c2VjeXJpbGxpYz0xMjA0O2UuVGhldGE9OTIwO2UuVGhvb2s9NDI4O2UuVGhvcm49MjIyO2UuVGhvcm5zbWFsbD02MzQ4NjtlLlRocmVlcm9tYW49ODU0NjtlLlRpbGRlc21hbGw9NjMyMzA7ZS5UaXduYXJtZW5pYW49MTM1OTtlLlRsaW5lYmVsb3c9Nzc5MDtlLlRtb25vc3BhY2U9NjUzMzI7ZS5Ub2FybWVuaWFuPTEzMzc7ZS5Ub25lZml2ZT00NDQ7ZS5Ub25lc2l4PTM4ODtlLlRvbmV0d289NDIzO2UuVHJldHJvZmxleGhvb2s9NDMwO2UuVHNlY3lyaWxsaWM9MTA2MjtlLlRzaGVjeXJpbGxpYz0xMDM1O2UuVHNtYWxsPTYzMzQ4O2UuVHdlbHZlcm9tYW49ODU1NTtlLlR3b3JvbWFuPTg1NDU7ZS5VPTg1O2UuVWFjdXRlPTIxODtlLlVhY3V0ZXNtYWxsPTYzNDgyO2UuVWJyZXZlPTM2NDtlLlVjYXJvbj00Njc7ZS5VY2lyY2xlPTk0MTg7ZS5VY2lyY3VtZmxleD0yMTk7ZS5VY2lyY3VtZmxleGJlbG93PTc3OTg7ZS5VY2lyY3VtZmxleHNtYWxsPTYzNDgzO2UuVWN5cmlsbGljPTEwNTk7ZS5VZGJsYWN1dGU9MzY4O2UuVWRibGdyYXZlPTUzMjtlLlVkaWVyZXNpcz0yMjA7ZS5VZGllcmVzaXNhY3V0ZT00NzE7ZS5VZGllcmVzaXNiZWxvdz03Nzk0O2UuVWRpZXJlc2lzY2Fyb249NDczO2UuVWRpZXJlc2lzY3lyaWxsaWM9MTI2NDtlLlVkaWVyZXNpc2dyYXZlPTQ3NTtlLlVkaWVyZXNpc21hY3Jvbj00Njk7ZS5VZGllcmVzaXNzbWFsbD02MzQ4NDtlLlVkb3RiZWxvdz03OTA4O2UuVWdyYXZlPTIxNztlLlVncmF2ZXNtYWxsPTYzNDgxO2UuVWhvb2thYm92ZT03OTEwO2UuVWhvcm49NDMxO2UuVWhvcm5hY3V0ZT03OTEyO2UuVWhvcm5kb3RiZWxvdz03OTIwO2UuVWhvcm5ncmF2ZT03OTE0O2UuVWhvcm5ob29rYWJvdmU9NzkxNjtlLlVob3JudGlsZGU9NzkxODtlLlVodW5nYXJ1bWxhdXQ9MzY4O2UuVWh1bmdhcnVtbGF1dGN5cmlsbGljPTEyNjY7ZS5VaW52ZXJ0ZWRicmV2ZT01MzQ7ZS5Va2N5cmlsbGljPTExNDQ7ZS5VbWFjcm9uPTM2MjtlLlVtYWNyb25jeXJpbGxpYz0xMjYyO2UuVW1hY3JvbmRpZXJlc2lzPTc4MDI7ZS5VbW9ub3NwYWNlPTY1MzMzO2UuVW9nb25laz0zNzA7ZS5VcHNpbG9uPTkzMztlLlVwc2lsb24xPTk3ODtlLlVwc2lsb25hY3V0ZWhvb2tzeW1ib2xncmVlaz05Nzk7ZS5VcHNpbG9uYWZyaWNhbj00MzM7ZS5VcHNpbG9uZGllcmVzaXM9OTM5O2UuVXBzaWxvbmRpZXJlc2lzaG9va3N5bWJvbGdyZWVrPTk4MDtlLlVwc2lsb25ob29rc3ltYm9sPTk3ODtlLlVwc2lsb250b25vcz05MTA7ZS5VcmluZz0zNjY7ZS5Vc2hvcnRjeXJpbGxpYz0xMDM4O2UuVXNtYWxsPTYzMzQ5O2UuVXN0cmFpZ2h0Y3lyaWxsaWM9MTE5ODtlLlVzdHJhaWdodHN0cm9rZWN5cmlsbGljPTEyMDA7ZS5VdGlsZGU9MzYwO2UuVXRpbGRlYWN1dGU9NzgwMDtlLlV0aWxkZWJlbG93PTc3OTY7ZS5WPTg2O2UuVmNpcmNsZT05NDE5O2UuVmRvdGJlbG93PTc4MDY7ZS5WZWN5cmlsbGljPTEwNDI7ZS5WZXdhcm1lbmlhbj0xMzU4O2UuVmhvb2s9NDM0O2UuVm1vbm9zcGFjZT02NTMzNDtlLlZvYXJtZW5pYW49MTM1MjtlLlZzbWFsbD02MzM1MDtlLlZ0aWxkZT03ODA0O2UuVz04NztlLldhY3V0ZT03ODEwO2UuV2NpcmNsZT05NDIwO2UuV2NpcmN1bWZsZXg9MzcyO2UuV2RpZXJlc2lzPTc4MTI7ZS5XZG90YWNjZW50PTc4MTQ7ZS5XZG90YmVsb3c9NzgxNjtlLldncmF2ZT03ODA4O2UuV21vbm9zcGFjZT02NTMzNTtlLldzbWFsbD02MzM1MTtlLlg9ODg7ZS5YY2lyY2xlPTk0MjE7ZS5YZGllcmVzaXM9NzgyMDtlLlhkb3RhY2NlbnQ9NzgxODtlLlhlaGFybWVuaWFuPTEzNDE7ZS5YaT05MjY7ZS5YbW9ub3NwYWNlPTY1MzM2O2UuWHNtYWxsPTYzMzUyO2UuWT04OTtlLllhY3V0ZT0yMjE7ZS5ZYWN1dGVzbWFsbD02MzQ4NTtlLllhdGN5cmlsbGljPTExMjI7ZS5ZY2lyY2xlPTk0MjI7ZS5ZY2lyY3VtZmxleD0zNzQ7ZS5ZZGllcmVzaXM9Mzc2O2UuWWRpZXJlc2lzc21hbGw9NjM0ODc7ZS5ZZG90YWNjZW50PTc4MjI7ZS5ZZG90YmVsb3c9NzkyNDtlLlllcmljeXJpbGxpYz0xMDY3O2UuWWVydWRpZXJlc2lzY3lyaWxsaWM9MTI3MjtlLllncmF2ZT03OTIyO2UuWWhvb2s9NDM1O2UuWWhvb2thYm92ZT03OTI2O2UuWWlhcm1lbmlhbj0xMzQ5O2UuWWljeXJpbGxpYz0xMDMxO2UuWWl3bmFybWVuaWFuPTEzNjI7ZS5ZbW9ub3NwYWNlPTY1MzM3O2UuWXNtYWxsPTYzMzUzO2UuWXRpbGRlPTc5Mjg7ZS5ZdXNiaWdjeXJpbGxpYz0xMTMwO2UuWXVzYmlnaW90aWZpZWRjeXJpbGxpYz0xMTMyO2UuWXVzbGl0dGxlY3lyaWxsaWM9MTEyNjtlLll1c2xpdHRsZWlvdGlmaWVkY3lyaWxsaWM9MTEyODtlLlo9OTA7ZS5aYWFybWVuaWFuPTEzMzQ7ZS5aYWN1dGU9Mzc3O2UuWmNhcm9uPTM4MTtlLlpjYXJvbnNtYWxsPTYzMjMxO2UuWmNpcmNsZT05NDIzO2UuWmNpcmN1bWZsZXg9NzgyNDtlLlpkb3Q9Mzc5O2UuWmRvdGFjY2VudD0zNzk7ZS5aZG90YmVsb3c9NzgyNjtlLlplY3lyaWxsaWM9MTA0NztlLlplZGVzY2VuZGVyY3lyaWxsaWM9MTE3NjtlLlplZGllcmVzaXNjeXJpbGxpYz0xMjQ2O2UuWmV0YT05MTg7ZS5aaGVhcm1lbmlhbj0xMzM4O2UuWmhlYnJldmVjeXJpbGxpYz0xMjE3O2UuWmhlY3lyaWxsaWM9MTA0NjtlLlpoZWRlc2NlbmRlcmN5cmlsbGljPTExNzQ7ZS5aaGVkaWVyZXNpc2N5cmlsbGljPTEyNDQ7ZS5abGluZWJlbG93PTc4Mjg7ZS5abW9ub3NwYWNlPTY1MzM4O2UuWnNtYWxsPTYzMzU0O2UuWnN0cm9rZT00Mzc7ZS5hPTk3O2UuYWFiZW5nYWxpPTI0Mzg7ZS5hYWN1dGU9MjI1O2UuYWFkZXZhPTIzMTA7ZS5hYWd1amFyYXRpPTI2OTQ7ZS5hYWd1cm11a2hpPTI1NjY7ZS5hYW1hdHJhZ3VybXVraGk9MjYyMjtlLmFhcnVzcXVhcmU9MTMwNTk7ZS5hYXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NDtlLmFhdm93ZWxzaWduZGV2YT0yMzY2O2UuYWF2b3dlbHNpZ25ndWphcmF0aT0yNzUwO2UuYWJicmV2aWF0aW9ubWFya2FybWVuaWFuPTEzNzU7ZS5hYmJyZXZpYXRpb25zaWduZGV2YT0yNDE2O2UuYWJlbmdhbGk9MjQzNztlLmFib3BvbW9mbz0xMjU3MDtlLmFicmV2ZT0yNTk7ZS5hYnJldmVhY3V0ZT03ODU1O2UuYWJyZXZlY3lyaWxsaWM9MTIzMztlLmFicmV2ZWRvdGJlbG93PTc4NjM7ZS5hYnJldmVncmF2ZT03ODU3O2UuYWJyZXZlaG9va2Fib3ZlPTc4NTk7ZS5hYnJldmV0aWxkZT03ODYxO2UuYWNhcm9uPTQ2MjtlLmFjaXJjbGU9OTQyNDtlLmFjaXJjdW1mbGV4PTIyNjtlLmFjaXJjdW1mbGV4YWN1dGU9Nzg0NTtlLmFjaXJjdW1mbGV4ZG90YmVsb3c9Nzg1MztlLmFjaXJjdW1mbGV4Z3JhdmU9Nzg0NztlLmFjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NDk7ZS5hY2lyY3VtZmxleHRpbGRlPTc4NTE7ZS5hY3V0ZT0xODA7ZS5hY3V0ZWJlbG93Y21iPTc5MTtlLmFjdXRlY21iPTc2OTtlLmFjdXRlY29tYj03Njk7ZS5hY3V0ZWRldmE9MjM4ODtlLmFjdXRlbG93bW9kPTcxOTtlLmFjdXRldG9uZWNtYj04MzM7ZS5hY3lyaWxsaWM9MTA3MjtlLmFkYmxncmF2ZT01MTM7ZS5hZGRha2d1cm11a2hpPTI2NzM7ZS5hZGV2YT0yMzA5O2UuYWRpZXJlc2lzPTIyODtlLmFkaWVyZXNpc2N5cmlsbGljPTEyMzU7ZS5hZGllcmVzaXNtYWNyb249NDc5O2UuYWRvdGJlbG93PTc4NDE7ZS5hZG90bWFjcm9uPTQ4MTtlLmFlPTIzMDtlLmFlYWN1dGU9NTA5O2UuYWVrb3JlYW49MTI2MjQ7ZS5hZW1hY3Jvbj00ODM7ZS5hZmlpMDAyMDg9ODIxMztlLmFmaWkwODk0MT04MzU2O2UuYWZpaTEwMDE3PTEwNDA7ZS5hZmlpMTAwMTg9MTA0MTtlLmFmaWkxMDAxOT0xMDQyO2UuYWZpaTEwMDIwPTEwNDM7ZS5hZmlpMTAwMjE9MTA0NDtlLmFmaWkxMDAyMj0xMDQ1O2UuYWZpaTEwMDIzPTEwMjU7ZS5hZmlpMTAwMjQ9MTA0NjtlLmFmaWkxMDAyNT0xMDQ3O2UuYWZpaTEwMDI2PTEwNDg7ZS5hZmlpMTAwMjc9MTA0OTtlLmFmaWkxMDAyOD0xMDUwO2UuYWZpaTEwMDI5PTEwNTE7ZS5hZmlpMTAwMzA9MTA1MjtlLmFmaWkxMDAzMT0xMDUzO2UuYWZpaTEwMDMyPTEwNTQ7ZS5hZmlpMTAwMzM9MTA1NTtlLmFmaWkxMDAzND0xMDU2O2UuYWZpaTEwMDM1PTEwNTc7ZS5hZmlpMTAwMzY9MTA1ODtlLmFmaWkxMDAzNz0xMDU5O2UuYWZpaTEwMDM4PTEwNjA7ZS5hZmlpMTAwMzk9MTA2MTtlLmFmaWkxMDA0MD0xMDYyO2UuYWZpaTEwMDQxPTEwNjM7ZS5hZmlpMTAwNDI9MTA2NDtlLmFmaWkxMDA0Mz0xMDY1O2UuYWZpaTEwMDQ0PTEwNjY7ZS5hZmlpMTAwNDU9MTA2NztlLmFmaWkxMDA0Nj0xMDY4O2UuYWZpaTEwMDQ3PTEwNjk7ZS5hZmlpMTAwNDg9MTA3MDtlLmFmaWkxMDA0OT0xMDcxO2UuYWZpaTEwMDUwPTExNjg7ZS5hZmlpMTAwNTE9MTAyNjtlLmFmaWkxMDA1Mj0xMDI3O2UuYWZpaTEwMDUzPTEwMjg7ZS5hZmlpMTAwNTQ9MTAyOTtlLmFmaWkxMDA1NT0xMDMwO2UuYWZpaTEwMDU2PTEwMzE7ZS5hZmlpMTAwNTc9MTAzMjtlLmFmaWkxMDA1OD0xMDMzO2UuYWZpaTEwMDU5PTEwMzQ7ZS5hZmlpMTAwNjA9MTAzNTtlLmFmaWkxMDA2MT0xMDM2O2UuYWZpaTEwMDYyPTEwMzg7ZS5hZmlpMTAwNjM9NjMxNzI7ZS5hZmlpMTAwNjQ9NjMxNzM7ZS5hZmlpMTAwNjU9MTA3MjtlLmFmaWkxMDA2Nj0xMDczO2UuYWZpaTEwMDY3PTEwNzQ7ZS5hZmlpMTAwNjg9MTA3NTtlLmFmaWkxMDA2OT0xMDc2O2UuYWZpaTEwMDcwPTEwNzc7ZS5hZmlpMTAwNzE9MTEwNTtlLmFmaWkxMDA3Mj0xMDc4O2UuYWZpaTEwMDczPTEwNzk7ZS5hZmlpMTAwNzQ9MTA4MDtlLmFmaWkxMDA3NT0xMDgxO2UuYWZpaTEwMDc2PTEwODI7ZS5hZmlpMTAwNzc9MTA4MztlLmFmaWkxMDA3OD0xMDg0O2UuYWZpaTEwMDc5PTEwODU7ZS5hZmlpMTAwODA9MTA4NjtlLmFmaWkxMDA4MT0xMDg3O2UuYWZpaTEwMDgyPTEwODg7ZS5hZmlpMTAwODM9MTA4OTtlLmFmaWkxMDA4ND0xMDkwO2UuYWZpaTEwMDg1PTEwOTE7ZS5hZmlpMTAwODY9MTA5MjtlLmFmaWkxMDA4Nz0xMDkzO2UuYWZpaTEwMDg4PTEwOTQ7ZS5hZmlpMTAwODk9MTA5NTtlLmFmaWkxMDA5MD0xMDk2O2UuYWZpaTEwMDkxPTEwOTc7ZS5hZmlpMTAwOTI9MTA5ODtlLmFmaWkxMDA5Mz0xMDk5O2UuYWZpaTEwMDk0PTExMDA7ZS5hZmlpMTAwOTU9MTEwMTtlLmFmaWkxMDA5Nj0xMTAyO2UuYWZpaTEwMDk3PTExMDM7ZS5hZmlpMTAwOTg9MTE2OTtlLmFmaWkxMDA5OT0xMTA2O2UuYWZpaTEwMTAwPTExMDc7ZS5hZmlpMTAxMDE9MTEwODtlLmFmaWkxMDEwMj0xMTA5O2UuYWZpaTEwMTAzPTExMTA7ZS5hZmlpMTAxMDQ9MTExMTtlLmFmaWkxMDEwNT0xMTEyO2UuYWZpaTEwMTA2PTExMTM7ZS5hZmlpMTAxMDc9MTExNDtlLmFmaWkxMDEwOD0xMTE1O2UuYWZpaTEwMTA5PTExMTY7ZS5hZmlpMTAxMTA9MTExODtlLmFmaWkxMDE0NT0xMDM5O2UuYWZpaTEwMTQ2PTExMjI7ZS5hZmlpMTAxNDc9MTEzODtlLmFmaWkxMDE0OD0xMTQwO2UuYWZpaTEwMTkyPTYzMTc0O2UuYWZpaTEwMTkzPTExMTk7ZS5hZmlpMTAxOTQ9MTEyMztlLmFmaWkxMDE5NT0xMTM5O2UuYWZpaTEwMTk2PTExNDE7ZS5hZmlpMTA4MzE9NjMxNzU7ZS5hZmlpMTA4MzI9NjMxNzY7ZS5hZmlpMTA4NDY9MTI0MTtlLmFmaWkyOTk9ODIwNjtlLmFmaWkzMDA9ODIwNztlLmFmaWkzMDE9ODIwNTtlLmFmaWk1NzM4MT0xNjQyO2UuYWZpaTU3Mzg4PTE1NDg7ZS5hZmlpNTczOTI9MTYzMjtlLmFmaWk1NzM5Mz0xNjMzO2UuYWZpaTU3Mzk0PTE2MzQ7ZS5hZmlpNTczOTU9MTYzNTtlLmFmaWk1NzM5Nj0xNjM2O2UuYWZpaTU3Mzk3PTE2Mzc7ZS5hZmlpNTczOTg9MTYzODtlLmFmaWk1NzM5OT0xNjM5O2UuYWZpaTU3NDAwPTE2NDA7ZS5hZmlpNTc0MDE9MTY0MTtlLmFmaWk1NzQwMz0xNTYzO2UuYWZpaTU3NDA3PTE1Njc7ZS5hZmlpNTc0MDk9MTU2OTtlLmFmaWk1NzQxMD0xNTcwO2UuYWZpaTU3NDExPTE1NzE7ZS5hZmlpNTc0MTI9MTU3MjtlLmFmaWk1NzQxMz0xNTczO2UuYWZpaTU3NDE0PTE1NzQ7ZS5hZmlpNTc0MTU9MTU3NTtlLmFmaWk1NzQxNj0xNTc2O2UuYWZpaTU3NDE3PTE1Nzc7ZS5hZmlpNTc0MTg9MTU3ODtlLmFmaWk1NzQxOT0xNTc5O2UuYWZpaTU3NDIwPTE1ODA7ZS5hZmlpNTc0MjE9MTU4MTtlLmFmaWk1NzQyMj0xNTgyO2UuYWZpaTU3NDIzPTE1ODM7ZS5hZmlpNTc0MjQ9MTU4NDtlLmFmaWk1NzQyNT0xNTg1O2UuYWZpaTU3NDI2PTE1ODY7ZS5hZmlpNTc0Mjc9MTU4NztlLmFmaWk1NzQyOD0xNTg4O2UuYWZpaTU3NDI5PTE1ODk7ZS5hZmlpNTc0MzA9MTU5MDtlLmFmaWk1NzQzMT0xNTkxO2UuYWZpaTU3NDMyPTE1OTI7ZS5hZmlpNTc0MzM9MTU5MztlLmFmaWk1NzQzND0xNTk0O2UuYWZpaTU3NDQwPTE2MDA7ZS5hZmlpNTc0NDE9MTYwMTtlLmFmaWk1NzQ0Mj0xNjAyO2UuYWZpaTU3NDQzPTE2MDM7ZS5hZmlpNTc0NDQ9MTYwNDtlLmFmaWk1NzQ0NT0xNjA1O2UuYWZpaTU3NDQ2PTE2MDY7ZS5hZmlpNTc0NDg9MTYwODtlLmFmaWk1NzQ0OT0xNjA5O2UuYWZpaTU3NDUwPTE2MTA7ZS5hZmlpNTc0NTE9MTYxMTtlLmFmaWk1NzQ1Mj0xNjEyO2UuYWZpaTU3NDUzPTE2MTM7ZS5hZmlpNTc0NTQ9MTYxNDtlLmFmaWk1NzQ1NT0xNjE1O2UuYWZpaTU3NDU2PTE2MTY7ZS5hZmlpNTc0NTc9MTYxNztlLmFmaWk1NzQ1OD0xNjE4O2UuYWZpaTU3NDcwPTE2MDc7ZS5hZmlpNTc1MDU9MTcwMDtlLmFmaWk1NzUwNj0xNjYyO2UuYWZpaTU3NTA3PTE2NzA7ZS5hZmlpNTc1MDg9MTY4ODtlLmFmaWk1NzUwOT0xNzExO2UuYWZpaTU3NTExPTE2NTc7ZS5hZmlpNTc1MTI9MTY3MjtlLmFmaWk1NzUxMz0xNjgxO2UuYWZpaTU3NTE0PTE3MjI7ZS5hZmlpNTc1MTk9MTc0NjtlLmFmaWk1NzUzND0xNzQ5O2UuYWZpaTU3NjM2PTgzNjI7ZS5hZmlpNTc2NDU9MTQ3MDtlLmFmaWk1NzY1OD0xNDc1O2UuYWZpaTU3NjY0PTE0ODg7ZS5hZmlpNTc2NjU9MTQ4OTtlLmFmaWk1NzY2Nj0xNDkwO2UuYWZpaTU3NjY3PTE0OTE7ZS5hZmlpNTc2Njg9MTQ5MjtlLmFmaWk1NzY2OT0xNDkzO2UuYWZpaTU3NjcwPTE0OTQ7ZS5hZmlpNTc2NzE9MTQ5NTtlLmFmaWk1NzY3Mj0xNDk2O2UuYWZpaTU3NjczPTE0OTc7ZS5hZmlpNTc2NzQ9MTQ5ODtlLmFmaWk1NzY3NT0xNDk5O2UuYWZpaTU3Njc2PTE1MDA7ZS5hZmlpNTc2Nzc9MTUwMTtlLmFmaWk1NzY3OD0xNTAyO2UuYWZpaTU3Njc5PTE1MDM7ZS5hZmlpNTc2ODA9MTUwNDtlLmFmaWk1NzY4MT0xNTA1O2UuYWZpaTU3NjgyPTE1MDY7ZS5hZmlpNTc2ODM9MTUwNztlLmFmaWk1NzY4ND0xNTA4O2UuYWZpaTU3Njg1PTE1MDk7ZS5hZmlpNTc2ODY9MTUxMDtlLmFmaWk1NzY4Nz0xNTExO2UuYWZpaTU3Njg4PTE1MTI7ZS5hZmlpNTc2ODk9MTUxMztlLmFmaWk1NzY5MD0xNTE0O2UuYWZpaTU3Njk0PTY0Mjk4O2UuYWZpaTU3Njk1PTY0Mjk5O2UuYWZpaTU3NzAwPTY0MzMxO2UuYWZpaTU3NzA1PTY0Mjg3O2UuYWZpaTU3NzE2PTE1MjA7ZS5hZmlpNTc3MTc9MTUyMTtlLmFmaWk1NzcxOD0xNTIyO2UuYWZpaTU3NzIzPTY0MzA5O2UuYWZpaTU3NzkzPTE0NjA7ZS5hZmlpNTc3OTQ9MTQ2MTtlLmFmaWk1Nzc5NT0xNDYyO2UuYWZpaTU3Nzk2PTE0Njc7ZS5hZmlpNTc3OTc9MTQ2NDtlLmFmaWk1Nzc5OD0xNDYzO2UuYWZpaTU3Nzk5PTE0NTY7ZS5hZmlpNTc4MDA9MTQ1ODtlLmFmaWk1NzgwMT0xNDU3O2UuYWZpaTU3ODAyPTE0NTk7ZS5hZmlpNTc4MDM9MTQ3NDtlLmFmaWk1NzgwND0xNDczO2UuYWZpaTU3ODA2PTE0NjU7ZS5hZmlpNTc4MDc9MTQ2ODtlLmFmaWk1NzgzOT0xNDY5O2UuYWZpaTU3ODQxPTE0NzE7ZS5hZmlpNTc4NDI9MTQ3MjtlLmFmaWk1NzkyOT03MDA7ZS5hZmlpNjEyNDg9ODQ1MztlLmFmaWk2MTI4OT04NDY3O2UuYWZpaTYxMzUyPTg0NzA7ZS5hZmlpNjE1NzM9ODIzNjtlLmFmaWk2MTU3ND04MjM3O2UuYWZpaTYxNTc1PTgyMzg7ZS5hZmlpNjE2NjQ9ODIwNDtlLmFmaWk2MzE2Nz0xNjQ1O2UuYWZpaTY0OTM3PTcwMTtlLmFncmF2ZT0yMjQ7ZS5hZ3VqYXJhdGk9MjY5MztlLmFndXJtdWtoaT0yNTY1O2UuYWhpcmFnYW5hPTEyMzU0O2UuYWhvb2thYm92ZT03ODQzO2UuYWliZW5nYWxpPTI0NDg7ZS5haWJvcG9tb2ZvPTEyNTc0O2UuYWlkZXZhPTIzMjA7ZS5haWVjeXJpbGxpYz0xMjM3O2UuYWlndWphcmF0aT0yNzA0O2UuYWlndXJtdWtoaT0yNTc2O2UuYWltYXRyYWd1cm11a2hpPTI2MzI7ZS5haW5hcmFiaWM9MTU5MztlLmFpbmZpbmFsYXJhYmljPTY1MjI2O2UuYWluaW5pdGlhbGFyYWJpYz02NTIyNztlLmFpbm1lZGlhbGFyYWJpYz02NTIyODtlLmFpbnZlcnRlZGJyZXZlPTUxNTtlLmFpdm93ZWxzaWduYmVuZ2FsaT0yNTA0O2UuYWl2b3dlbHNpZ25kZXZhPTIzNzY7ZS5haXZvd2Vsc2lnbmd1amFyYXRpPTI3NjA7ZS5ha2F0YWthbmE9MTI0NTA7ZS5ha2F0YWthbmFoYWxmd2lkdGg9NjUzOTM7ZS5ha29yZWFuPTEyNjIzO2UuYWxlZj0xNDg4O2UuYWxlZmFyYWJpYz0xNTc1O2UuYWxlZmRhZ2VzaGhlYnJldz02NDMwNDtlLmFsZWZmaW5hbGFyYWJpYz02NTE2NjtlLmFsZWZoYW16YWFib3ZlYXJhYmljPTE1NzE7ZS5hbGVmaGFtemFhYm92ZWZpbmFsYXJhYmljPTY1MTU2O2UuYWxlZmhhbXphYmVsb3dhcmFiaWM9MTU3MztlLmFsZWZoYW16YWJlbG93ZmluYWxhcmFiaWM9NjUxNjA7ZS5hbGVmaGVicmV3PTE0ODg7ZS5hbGVmbGFtZWRoZWJyZXc9NjQzMzU7ZS5hbGVmbWFkZGFhYm92ZWFyYWJpYz0xNTcwO2UuYWxlZm1hZGRhYWJvdmVmaW5hbGFyYWJpYz02NTE1NDtlLmFsZWZtYWtzdXJhYXJhYmljPTE2MDk7ZS5hbGVmbWFrc3VyYWZpbmFsYXJhYmljPTY1MjY0O2UuYWxlZm1ha3N1cmFpbml0aWFsYXJhYmljPTY1MjY3O2UuYWxlZm1ha3N1cmFtZWRpYWxhcmFiaWM9NjUyNjg7ZS5hbGVmcGF0YWhoZWJyZXc9NjQzMDI7ZS5hbGVmcWFtYXRzaGVicmV3PTY0MzAzO2UuYWxlcGg9ODUwMTtlLmFsbGVxdWFsPTg3ODA7ZS5hbHBoYT05NDU7ZS5hbHBoYXRvbm9zPTk0MDtlLmFtYWNyb249MjU3O2UuYW1vbm9zcGFjZT02NTM0NTtlLmFtcGVyc2FuZD0zODtlLmFtcGVyc2FuZG1vbm9zcGFjZT02NTI4NjtlLmFtcGVyc2FuZHNtYWxsPTYzMjcwO2UuYW1zcXVhcmU9MTMyNTA7ZS5hbmJvcG9tb2ZvPTEyNTc4O2UuYW5nYm9wb21vZm89MTI1ODA7ZS5hbmdicmFja2V0bGVmdD0xMjI5NjtlLmFuZ2JyYWNrZXRyaWdodD0xMjI5NztlLmFuZ2toYW5raHV0aGFpPTM2NzQ7ZS5hbmdsZT04NzM2O2UuYW5nbGVicmFja2V0bGVmdD0xMjI5NjtlLmFuZ2xlYnJhY2tldGxlZnR2ZXJ0aWNhbD02NTA4NztlLmFuZ2xlYnJhY2tldHJpZ2h0PTEyMjk3O2UuYW5nbGVicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4ODtlLmFuZ2xlbGVmdD05MDAxO2UuYW5nbGVyaWdodD05MDAyO2UuYW5nc3Ryb209ODQ5MTtlLmFub3RlbGVpYT05MDM7ZS5hbnVkYXR0YWRldmE9MjM4NjtlLmFudXN2YXJhYmVuZ2FsaT0yNDM0O2UuYW51c3ZhcmFkZXZhPTIzMDY7ZS5hbnVzdmFyYWd1amFyYXRpPTI2OTA7ZS5hb2dvbmVrPTI2MTtlLmFwYWF0b3NxdWFyZT0xMzA1NjtlLmFwYXJlbj05MzcyO2UuYXBvc3Ryb3BoZWFybWVuaWFuPTEzNzA7ZS5hcG9zdHJvcGhlbW9kPTcwMDtlLmFwcGxlPTYzNzQzO2UuYXBwcm9hY2hlcz04Nzg0O2UuYXBwcm94ZXF1YWw9ODc3NjtlLmFwcHJveGVxdWFsb3JpbWFnZT04Nzg2O2UuYXBwcm94aW1hdGVseWVxdWFsPTg3NzM7ZS5hcmFlYWVrb3JlYW49MTI2ODY7ZS5hcmFlYWtvcmVhbj0xMjY4NTtlLmFyYz04OTc4O2UuYXJpZ2h0aGFsZnJpbmc9NzgzNDtlLmFyaW5nPTIyOTtlLmFyaW5nYWN1dGU9NTA3O2UuYXJpbmdiZWxvdz03NjgxO2UuYXJyb3dib3RoPTg1OTY7ZS5hcnJvd2Rhc2hkb3duPTg2NzU7ZS5hcnJvd2Rhc2hsZWZ0PTg2NzI7ZS5hcnJvd2Rhc2hyaWdodD04Njc0O2UuYXJyb3dkYXNodXA9ODY3MztlLmFycm93ZGJsYm90aD04NjYwO2UuYXJyb3dkYmxkb3duPTg2NTk7ZS5hcnJvd2RibGxlZnQ9ODY1NjtlLmFycm93ZGJscmlnaHQ9ODY1ODtlLmFycm93ZGJsdXA9ODY1NztlLmFycm93ZG93bj04NTk1O2UuYXJyb3dkb3dubGVmdD04NjAxO2UuYXJyb3dkb3ducmlnaHQ9ODYwMDtlLmFycm93ZG93bndoaXRlPTg2ODE7ZS5hcnJvd2hlYWRkb3dubW9kPTcwOTtlLmFycm93aGVhZGxlZnRtb2Q9NzA2O2UuYXJyb3doZWFkcmlnaHRtb2Q9NzA3O2UuYXJyb3doZWFkdXBtb2Q9NzA4O2UuYXJyb3dob3JpemV4PTYzNzE5O2UuYXJyb3dsZWZ0PTg1OTI7ZS5hcnJvd2xlZnRkYmw9ODY1NjtlLmFycm93bGVmdGRibHN0cm9rZT04NjUzO2UuYXJyb3dsZWZ0b3ZlcnJpZ2h0PTg2NDY7ZS5hcnJvd2xlZnR3aGl0ZT04Njc4O2UuYXJyb3dyaWdodD04NTk0O2UuYXJyb3dyaWdodGRibHN0cm9rZT04NjU1O2UuYXJyb3dyaWdodGhlYXZ5PTEwMTQyO2UuYXJyb3dyaWdodG92ZXJsZWZ0PTg2NDQ7ZS5hcnJvd3JpZ2h0d2hpdGU9ODY4MDtlLmFycm93dGFibGVmdD04Njc2O2UuYXJyb3d0YWJyaWdodD04Njc3O2UuYXJyb3d1cD04NTkzO2UuYXJyb3d1cGRuPTg1OTc7ZS5hcnJvd3VwZG5ic2U9ODYxNjtlLmFycm93dXBkb3duYmFzZT04NjE2O2UuYXJyb3d1cGxlZnQ9ODU5ODtlLmFycm93dXBsZWZ0b2Zkb3duPTg2NDU7ZS5hcnJvd3VwcmlnaHQ9ODU5OTtlLmFycm93dXB3aGl0ZT04Njc5O2UuYXJyb3d2ZXJ0ZXg9NjM3MTg7ZS5hc2NpaWNpcmN1bT05NDtlLmFzY2lpY2lyY3VtbW9ub3NwYWNlPTY1MzQyO2UuYXNjaWl0aWxkZT0xMjY7ZS5hc2NpaXRpbGRlbW9ub3NwYWNlPTY1Mzc0O2UuYXNjcmlwdD01OTM7ZS5hc2NyaXB0dHVybmVkPTU5NDtlLmFzbWFsbGhpcmFnYW5hPTEyMzUzO2UuYXNtYWxsa2F0YWthbmE9MTI0NDk7ZS5hc21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4MztlLmFzdGVyaXNrPTQyO2UuYXN0ZXJpc2thbHRvbmVhcmFiaWM9MTY0NTtlLmFzdGVyaXNrYXJhYmljPTE2NDU7ZS5hc3Rlcmlza21hdGg9ODcyNztlLmFzdGVyaXNrbW9ub3NwYWNlPTY1MjkwO2UuYXN0ZXJpc2tzbWFsbD02NTEyMTtlLmFzdGVyaXNtPTgyNTg7ZS5hc3VwZXJpb3I9NjMyMDk7ZS5hc3ltcHRvdGljYWxseWVxdWFsPTg3NzE7ZS5hdD02NDtlLmF0aWxkZT0yMjc7ZS5hdG1vbm9zcGFjZT02NTMxMjtlLmF0c21hbGw9NjUxMzE7ZS5hdHVybmVkPTU5MjtlLmF1YmVuZ2FsaT0yNDUyO2UuYXVib3BvbW9mbz0xMjU3NjtlLmF1ZGV2YT0yMzI0O2UuYXVndWphcmF0aT0yNzA4O2UuYXVndXJtdWtoaT0yNTgwO2UuYXVsZW5ndGhtYXJrYmVuZ2FsaT0yNTE5O2UuYXVtYXRyYWd1cm11a2hpPTI2MzY7ZS5hdXZvd2Vsc2lnbmJlbmdhbGk9MjUwODtlLmF1dm93ZWxzaWduZGV2YT0yMzgwO2UuYXV2b3dlbHNpZ25ndWphcmF0aT0yNzY0O2UuYXZhZ3JhaGFkZXZhPTIzNjU7ZS5heWJhcm1lbmlhbj0xMzc3O2UuYXlpbj0xNTA2O2UuYXlpbmFsdG9uZWhlYnJldz02NDI4ODtlLmF5aW5oZWJyZXc9MTUwNjtlLmI9OTg7ZS5iYWJlbmdhbGk9MjQ3NjtlLmJhY2tzbGFzaD05MjtlLmJhY2tzbGFzaG1vbm9zcGFjZT02NTM0MDtlLmJhZGV2YT0yMzQ4O2UuYmFndWphcmF0aT0yNzMyO2UuYmFndXJtdWtoaT0yNjA0O2UuYmFoaXJhZ2FuYT0xMjQwMDtlLmJhaHR0aGFpPTM2NDc7ZS5iYWthdGFrYW5hPTEyNDk2O2UuYmFyPTEyNDtlLmJhcm1vbm9zcGFjZT02NTM3MjtlLmJib3BvbW9mbz0xMjU0OTtlLmJjaXJjbGU9OTQyNTtlLmJkb3RhY2NlbnQ9NzY4MztlLmJkb3RiZWxvdz03Njg1O2UuYmVhbWVkc2l4dGVlbnRobm90ZXM9OTgzNjtlLmJlY2F1c2U9ODc1NztlLmJlY3lyaWxsaWM9MTA3MztlLmJlaGFyYWJpYz0xNTc2O2UuYmVoZmluYWxhcmFiaWM9NjUxNjg7ZS5iZWhpbml0aWFsYXJhYmljPTY1MTY5O2UuYmVoaXJhZ2FuYT0xMjQwOTtlLmJlaG1lZGlhbGFyYWJpYz02NTE3MDtlLmJlaG1lZW1pbml0aWFsYXJhYmljPTY0NjcxO2UuYmVobWVlbWlzb2xhdGVkYXJhYmljPTY0NTIwO2UuYmVobm9vbmZpbmFsYXJhYmljPTY0NjIxO2UuYmVrYXRha2FuYT0xMjUwNTtlLmJlbmFybWVuaWFuPTEzNzg7ZS5iZXQ9MTQ4OTtlLmJldGE9OTQ2O2UuYmV0YXN5bWJvbGdyZWVrPTk3NjtlLmJldGRhZ2VzaD02NDMwNTtlLmJldGRhZ2VzaGhlYnJldz02NDMwNTtlLmJldGhlYnJldz0xNDg5O2UuYmV0cmFmZWhlYnJldz02NDMzMjtlLmJoYWJlbmdhbGk9MjQ3NztlLmJoYWRldmE9MjM0OTtlLmJoYWd1amFyYXRpPTI3MzM7ZS5iaGFndXJtdWtoaT0yNjA1O2UuYmhvb2s9NTk1O2UuYmloaXJhZ2FuYT0xMjQwMztlLmJpa2F0YWthbmE9MTI0OTk7ZS5iaWxhYmlhbGNsaWNrPTY2NDtlLmJpbmRpZ3VybXVraGk9MjU2MjtlLmJpcnVzcXVhcmU9MTMxMDU7ZS5ibGFja2NpcmNsZT05Njc5O2UuYmxhY2tkaWFtb25kPTk2NzA7ZS5ibGFja2Rvd25wb2ludGluZ3RyaWFuZ2xlPTk2NjA7ZS5ibGFja2xlZnRwb2ludGluZ3BvaW50ZXI9OTY2ODtlLmJsYWNrbGVmdHBvaW50aW5ndHJpYW5nbGU9OTY2NDtlLmJsYWNrbGVudGljdWxhcmJyYWNrZXRsZWZ0PTEyMzA0O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldGxlZnR2ZXJ0aWNhbD02NTA4MztlLmJsYWNrbGVudGljdWxhcmJyYWNrZXRyaWdodD0xMjMwNTtlLmJsYWNrbGVudGljdWxhcmJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg0O2UuYmxhY2tsb3dlcmxlZnR0cmlhbmdsZT05Njk5O2UuYmxhY2tsb3dlcnJpZ2h0dHJpYW5nbGU9OTY5ODtlLmJsYWNrcmVjdGFuZ2xlPTk2NDQ7ZS5ibGFja3JpZ2h0cG9pbnRpbmdwb2ludGVyPTk2NTg7ZS5ibGFja3JpZ2h0cG9pbnRpbmd0cmlhbmdsZT05NjU0O2UuYmxhY2tzbWFsbHNxdWFyZT05NjQyO2UuYmxhY2tzbWlsaW5nZmFjZT05Nzg3O2UuYmxhY2tzcXVhcmU9OTYzMjtlLmJsYWNrc3Rhcj05NzMzO2UuYmxhY2t1cHBlcmxlZnR0cmlhbmdsZT05NzAwO2UuYmxhY2t1cHBlcnJpZ2h0dHJpYW5nbGU9OTcwMTtlLmJsYWNrdXBwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY1MjtlLmJsYWNrdXBwb2ludGluZ3RyaWFuZ2xlPTk2NTA7ZS5ibGFuaz05MjUxO2UuYmxpbmViZWxvdz03Njg3O2UuYmxvY2s9OTYwODtlLmJtb25vc3BhY2U9NjUzNDY7ZS5ib2JhaW1haXRoYWk9MzYxMDtlLmJvaGlyYWdhbmE9MTI0MTI7ZS5ib2thdGFrYW5hPTEyNTA4O2UuYnBhcmVuPTkzNzM7ZS5icXNxdWFyZT0xMzI1MTtlLmJyYWNlZXg9NjM3MzI7ZS5icmFjZWxlZnQ9MTIzO2UuYnJhY2VsZWZ0YnQ9NjM3MzE7ZS5icmFjZWxlZnRtaWQ9NjM3MzA7ZS5icmFjZWxlZnRtb25vc3BhY2U9NjUzNzE7ZS5icmFjZWxlZnRzbWFsbD02NTExNTtlLmJyYWNlbGVmdHRwPTYzNzI5O2UuYnJhY2VsZWZ0dmVydGljYWw9NjUwNzk7ZS5icmFjZXJpZ2h0PTEyNTtlLmJyYWNlcmlnaHRidD02Mzc0MjtlLmJyYWNlcmlnaHRtaWQ9NjM3NDE7ZS5icmFjZXJpZ2h0bW9ub3NwYWNlPTY1MzczO2UuYnJhY2VyaWdodHNtYWxsPTY1MTE2O2UuYnJhY2VyaWdodHRwPTYzNzQwO2UuYnJhY2VyaWdodHZlcnRpY2FsPTY1MDgwO2UuYnJhY2tldGxlZnQ9OTE7ZS5icmFja2V0bGVmdGJ0PTYzNzI4O2UuYnJhY2tldGxlZnRleD02MzcyNztlLmJyYWNrZXRsZWZ0bW9ub3NwYWNlPTY1MzM5O2UuYnJhY2tldGxlZnR0cD02MzcyNjtlLmJyYWNrZXRyaWdodD05MztlLmJyYWNrZXRyaWdodGJ0PTYzNzM5O2UuYnJhY2tldHJpZ2h0ZXg9NjM3Mzg7ZS5icmFja2V0cmlnaHRtb25vc3BhY2U9NjUzNDE7ZS5icmFja2V0cmlnaHR0cD02MzczNztlLmJyZXZlPTcyODtlLmJyZXZlYmVsb3djbWI9ODE0O2UuYnJldmVjbWI9Nzc0O2UuYnJldmVpbnZlcnRlZGJlbG93Y21iPTgxNTtlLmJyZXZlaW52ZXJ0ZWRjbWI9Nzg1O2UuYnJldmVpbnZlcnRlZGRvdWJsZWNtYj04NjU7ZS5icmlkZ2ViZWxvd2NtYj04MTA7ZS5icmlkZ2VpbnZlcnRlZGJlbG93Y21iPTgyNjtlLmJyb2tlbmJhcj0xNjY7ZS5ic3Ryb2tlPTM4NDtlLmJzdXBlcmlvcj02MzIxMDtlLmJ0b3BiYXI9Mzg3O2UuYnVoaXJhZ2FuYT0xMjQwNjtlLmJ1a2F0YWthbmE9MTI1MDI7ZS5idWxsZXQ9ODIyNjtlLmJ1bGxldGludmVyc2U9OTY4ODtlLmJ1bGxldG9wZXJhdG9yPTg3Mjk7ZS5idWxsc2V5ZT05Njc4O2UuYz05OTtlLmNhYXJtZW5pYW49MTM5MDtlLmNhYmVuZ2FsaT0yNDU4O2UuY2FjdXRlPTI2MztlLmNhZGV2YT0yMzMwO2UuY2FndWphcmF0aT0yNzE0O2UuY2FndXJtdWtoaT0yNTg2O2UuY2Fsc3F1YXJlPTEzMTkyO2UuY2FuZHJhYmluZHViZW5nYWxpPTI0MzM7ZS5jYW5kcmFiaW5kdWNtYj03ODQ7ZS5jYW5kcmFiaW5kdWRldmE9MjMwNTtlLmNhbmRyYWJpbmR1Z3VqYXJhdGk9MjY4OTtlLmNhcHNsb2NrPTg2ODI7ZS5jYXJlb2Y9ODQ1MztlLmNhcm9uPTcxMTtlLmNhcm9uYmVsb3djbWI9ODEyO2UuY2Fyb25jbWI9NzgwO2UuY2FycmlhZ2VyZXR1cm49ODYyOTtlLmNib3BvbW9mbz0xMjU2ODtlLmNjYXJvbj0yNjk7ZS5jY2VkaWxsYT0yMzE7ZS5jY2VkaWxsYWFjdXRlPTc2ODk7ZS5jY2lyY2xlPTk0MjY7ZS5jY2lyY3VtZmxleD0yNjU7ZS5jY3VybD01OTc7ZS5jZG90PTI2NztlLmNkb3RhY2NlbnQ9MjY3O2UuY2RzcXVhcmU9MTMyNTM7ZS5jZWRpbGxhPTE4NDtlLmNlZGlsbGFjbWI9ODA3O2UuY2VudD0xNjI7ZS5jZW50aWdyYWRlPTg0NTE7ZS5jZW50aW5mZXJpb3I9NjMxOTk7ZS5jZW50bW9ub3NwYWNlPTY1NTA0O2UuY2VudG9sZHN0eWxlPTYzMzk0O2UuY2VudHN1cGVyaW9yPTYzMjAwO2UuY2hhYXJtZW5pYW49MTQwMTtlLmNoYWJlbmdhbGk9MjQ1OTtlLmNoYWRldmE9MjMzMTtlLmNoYWd1amFyYXRpPTI3MTU7ZS5jaGFndXJtdWtoaT0yNTg3O2UuY2hib3BvbW9mbz0xMjU2NDtlLmNoZWFia2hhc2lhbmN5cmlsbGljPTEyMTM7ZS5jaGVja21hcms9MTAwMDM7ZS5jaGVjeXJpbGxpYz0xMDk1O2UuY2hlZGVzY2VuZGVyYWJraGFzaWFuY3lyaWxsaWM9MTIxNTtlLmNoZWRlc2NlbmRlcmN5cmlsbGljPTEyMDc7ZS5jaGVkaWVyZXNpc2N5cmlsbGljPTEyNjk7ZS5jaGVoYXJtZW5pYW49MTM5NTtlLmNoZWtoYWthc3NpYW5jeXJpbGxpYz0xMjI4O2UuY2hldmVydGljYWxzdHJva2VjeXJpbGxpYz0xMjA5O2UuY2hpPTk2NztlLmNoaWV1Y2hhY2lyY2xla29yZWFuPTEyOTE5O2UuY2hpZXVjaGFwYXJlbmtvcmVhbj0xMjgyMztlLmNoaWV1Y2hjaXJjbGVrb3JlYW49MTI5MDU7ZS5jaGlldWNoa29yZWFuPTEyNjE4O2UuY2hpZXVjaHBhcmVua29yZWFuPTEyODA5O2UuY2hvY2hhbmd0aGFpPTM1OTQ7ZS5jaG9jaGFudGhhaT0zNTkyO2UuY2hvY2hpbmd0aGFpPTM1OTM7ZS5jaG9jaG9ldGhhaT0zNTk2O2UuY2hvb2s9MzkyO2UuY2lldWNhY2lyY2xla29yZWFuPTEyOTE4O2UuY2lldWNhcGFyZW5rb3JlYW49MTI4MjI7ZS5jaWV1Y2NpcmNsZWtvcmVhbj0xMjkwNDtlLmNpZXVja29yZWFuPTEyNjE2O2UuY2lldWNwYXJlbmtvcmVhbj0xMjgwODtlLmNpZXVjdXBhcmVua29yZWFuPTEyODI4O2UuY2lyY2xlPTk2NzU7ZS5jaXJjbGVjb3B5cnQ9MTY5O2UuY2lyY2xlbXVsdGlwbHk9ODg1NTtlLmNpcmNsZW90PTg4NTc7ZS5jaXJjbGVwbHVzPTg4NTM7ZS5jaXJjbGVwb3N0YWxtYXJrPTEyMzQyO2UuY2lyY2xld2l0aGxlZnRoYWxmYmxhY2s9OTY4MDtlLmNpcmNsZXdpdGhyaWdodGhhbGZibGFjaz05NjgxO2UuY2lyY3VtZmxleD03MTA7ZS5jaXJjdW1mbGV4YmVsb3djbWI9ODEzO2UuY2lyY3VtZmxleGNtYj03NzA7ZS5jbGVhcj04OTk5O2UuY2xpY2thbHZlb2xhcj00NTA7ZS5jbGlja2RlbnRhbD00NDg7ZS5jbGlja2xhdGVyYWw9NDQ5O2UuY2xpY2tyZXRyb2ZsZXg9NDUxO2UuY2x1Yj05ODI3O2UuY2x1YnN1aXRibGFjaz05ODI3O2UuY2x1YnN1aXR3aGl0ZT05ODMxO2UuY21jdWJlZHNxdWFyZT0xMzIyMDtlLmNtb25vc3BhY2U9NjUzNDc7ZS5jbXNxdWFyZWRzcXVhcmU9MTMyMTY7ZS5jb2FybWVuaWFuPTE0MDk7ZS5jb2xvbj01ODtlLmNvbG9ubW9uZXRhcnk9ODM1MztlLmNvbG9ubW9ub3NwYWNlPTY1MzA2O2UuY29sb25zaWduPTgzNTM7ZS5jb2xvbnNtYWxsPTY1MTA5O2UuY29sb250cmlhbmd1bGFyaGFsZm1vZD03MjE7ZS5jb2xvbnRyaWFuZ3VsYXJtb2Q9NzIwO2UuY29tbWE9NDQ7ZS5jb21tYWFib3ZlY21iPTc4NztlLmNvbW1hYWJvdmVyaWdodGNtYj03ODk7ZS5jb21tYWFjY2VudD02MzE3MTtlLmNvbW1hYXJhYmljPTE1NDg7ZS5jb21tYWFybWVuaWFuPTEzNzM7ZS5jb21tYWluZmVyaW9yPTYzMjAxO2UuY29tbWFtb25vc3BhY2U9NjUyOTI7ZS5jb21tYXJldmVyc2VkYWJvdmVjbWI9Nzg4O2UuY29tbWFyZXZlcnNlZG1vZD03MDE7ZS5jb21tYXNtYWxsPTY1MTA0O2UuY29tbWFzdXBlcmlvcj02MzIwMjtlLmNvbW1hdHVybmVkYWJvdmVjbWI9Nzg2O2UuY29tbWF0dXJuZWRtb2Q9Njk5O2UuY29tcGFzcz05Nzg4O2UuY29uZ3J1ZW50PTg3NzM7ZS5jb250b3VyaW50ZWdyYWw9ODc1MDtlLmNvbnRyb2w9ODk2MztlLmNvbnRyb2xBQ0s9NjtlLmNvbnRyb2xCRUw9NztlLmNvbnRyb2xCUz04O2UuY29udHJvbENBTj0yNDtlLmNvbnRyb2xDUj0xMztlLmNvbnRyb2xEQzE9MTc7ZS5jb250cm9sREMyPTE4O2UuY29udHJvbERDMz0xOTtlLmNvbnRyb2xEQzQ9MjA7ZS5jb250cm9sREVMPTEyNztlLmNvbnRyb2xETEU9MTY7ZS5jb250cm9sRU09MjU7ZS5jb250cm9sRU5RPTU7ZS5jb250cm9sRU9UPTQ7ZS5jb250cm9sRVNDPTI3O2UuY29udHJvbEVUQj0yMztlLmNvbnRyb2xFVFg9MztlLmNvbnRyb2xGRj0xMjtlLmNvbnRyb2xGUz0yODtlLmNvbnRyb2xHUz0yOTtlLmNvbnRyb2xIVD05O2UuY29udHJvbExGPTEwO2UuY29udHJvbE5BSz0yMTtlLmNvbnRyb2xOVUxMPTA7ZS5jb250cm9sUlM9MzA7ZS5jb250cm9sU0k9MTU7ZS5jb250cm9sU089MTQ7ZS5jb250cm9sU09UPTI7ZS5jb250cm9sU1RYPTE7ZS5jb250cm9sU1VCPTI2O2UuY29udHJvbFNZTj0yMjtlLmNvbnRyb2xVUz0zMTtlLmNvbnRyb2xWVD0xMTtlLmNvcHlyaWdodD0xNjk7ZS5jb3B5cmlnaHRzYW5zPTYzNzIxO2UuY29weXJpZ2h0c2VyaWY9NjMxOTM7ZS5jb3JuZXJicmFja2V0bGVmdD0xMjMwMDtlLmNvcm5lcmJyYWNrZXRsZWZ0aGFsZndpZHRoPTY1Mzc4O2UuY29ybmVyYnJhY2tldGxlZnR2ZXJ0aWNhbD02NTA4OTtlLmNvcm5lcmJyYWNrZXRyaWdodD0xMjMwMTtlLmNvcm5lcmJyYWNrZXRyaWdodGhhbGZ3aWR0aD02NTM3OTtlLmNvcm5lcmJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDkwO2UuY29ycG9yYXRpb25zcXVhcmU9MTMxODM7ZS5jb3NxdWFyZT0xMzI1NTtlLmNvdmVya2dzcXVhcmU9MTMyNTQ7ZS5jcGFyZW49OTM3NDtlLmNydXplaXJvPTgzNTQ7ZS5jc3RyZXRjaGVkPTY2MztlLmN1cmx5YW5kPTg5MTE7ZS5jdXJseW9yPTg5MTA7ZS5jdXJyZW5jeT0xNjQ7ZS5jeXJCcmV2ZT02MzE4NTtlLmN5ckZsZXg9NjMxODY7ZS5jeXJicmV2ZT02MzE4ODtlLmN5cmZsZXg9NjMxODk7ZS5kPTEwMDtlLmRhYXJtZW5pYW49MTM4MDtlLmRhYmVuZ2FsaT0yNDcwO2UuZGFkYXJhYmljPTE1OTA7ZS5kYWRldmE9MjM0MjtlLmRhZGZpbmFsYXJhYmljPTY1MjE0O2UuZGFkaW5pdGlhbGFyYWJpYz02NTIxNTtlLmRhZG1lZGlhbGFyYWJpYz02NTIxNjtlLmRhZ2VzaD0xNDY4O2UuZGFnZXNoaGVicmV3PTE0Njg7ZS5kYWdnZXI9ODIyNDtlLmRhZ2dlcmRibD04MjI1O2UuZGFndWphcmF0aT0yNzI2O2UuZGFndXJtdWtoaT0yNTk4O2UuZGFoaXJhZ2FuYT0xMjM4NDtlLmRha2F0YWthbmE9MTI0ODA7ZS5kYWxhcmFiaWM9MTU4MztlLmRhbGV0PTE0OTE7ZS5kYWxldGRhZ2VzaD02NDMwNztlLmRhbGV0ZGFnZXNoaGVicmV3PTY0MzA3O2UuZGFsZXRoZWJyZXc9MTQ5MTtlLmRhbGZpbmFsYXJhYmljPTY1MTk0O2UuZGFtbWFhcmFiaWM9MTYxNTtlLmRhbW1hbG93YXJhYmljPTE2MTU7ZS5kYW1tYXRhbmFsdG9uZWFyYWJpYz0xNjEyO2UuZGFtbWF0YW5hcmFiaWM9MTYxMjtlLmRhbmRhPTI0MDQ7ZS5kYXJnYWhlYnJldz0xNDQ3O2UuZGFyZ2FsZWZ0aGVicmV3PTE0NDc7ZS5kYXNpYXBuZXVtYXRhY3lyaWxsaWNjbWI9MTE1NztlLmRibEdyYXZlPTYzMTg3O2UuZGJsYW5nbGVicmFja2V0bGVmdD0xMjI5ODtlLmRibGFuZ2xlYnJhY2tldGxlZnR2ZXJ0aWNhbD02NTA4NTtlLmRibGFuZ2xlYnJhY2tldHJpZ2h0PTEyMjk5O2UuZGJsYW5nbGVicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4NjtlLmRibGFyY2hpbnZlcnRlZGJlbG93Y21iPTgxMTtlLmRibGFycm93bGVmdD04NjYwO2UuZGJsYXJyb3dyaWdodD04NjU4O2UuZGJsZGFuZGE9MjQwNTtlLmRibGdyYXZlPTYzMTkwO2UuZGJsZ3JhdmVjbWI9NzgzO2UuZGJsaW50ZWdyYWw9ODc0ODtlLmRibGxvd2xpbmU9ODIxNTtlLmRibGxvd2xpbmVjbWI9ODE5O2UuZGJsb3ZlcmxpbmVjbWI9ODMxO2UuZGJscHJpbWVtb2Q9Njk4O2UuZGJsdmVydGljYWxiYXI9ODIxNDtlLmRibHZlcnRpY2FsbGluZWFib3ZlY21iPTc4MjtlLmRib3BvbW9mbz0xMjU1MztlLmRic3F1YXJlPTEzMjU2O2UuZGNhcm9uPTI3MTtlLmRjZWRpbGxhPTc2OTc7ZS5kY2lyY2xlPTk0Mjc7ZS5kY2lyY3VtZmxleGJlbG93PTc2OTk7ZS5kY3JvYXQ9MjczO2UuZGRhYmVuZ2FsaT0yNDY1O2UuZGRhZGV2YT0yMzM3O2UuZGRhZ3VqYXJhdGk9MjcyMTtlLmRkYWd1cm11a2hpPTI1OTM7ZS5kZGFsYXJhYmljPTE2NzI7ZS5kZGFsZmluYWxhcmFiaWM9NjQzOTM7ZS5kZGRoYWRldmE9MjM5NjtlLmRkaGFiZW5nYWxpPTI0NjY7ZS5kZGhhZGV2YT0yMzM4O2UuZGRoYWd1amFyYXRpPTI3MjI7ZS5kZGhhZ3VybXVraGk9MjU5NDtlLmRkb3RhY2NlbnQ9NzY5MTtlLmRkb3RiZWxvdz03NjkzO2UuZGVjaW1hbHNlcGFyYXRvcmFyYWJpYz0xNjQzO2UuZGVjaW1hbHNlcGFyYXRvcnBlcnNpYW49MTY0MztlLmRlY3lyaWxsaWM9MTA3NjtlLmRlZ3JlZT0xNzY7ZS5kZWhpaGVicmV3PTE0NTM7ZS5kZWhpcmFnYW5hPTEyMzkxO2UuZGVpY29wdGljPTEwMDc7ZS5kZWthdGFrYW5hPTEyNDg3O2UuZGVsZXRlbGVmdD05MDAzO2UuZGVsZXRlcmlnaHQ9ODk5ODtlLmRlbHRhPTk0ODtlLmRlbHRhdHVybmVkPTM5NztlLmRlbm9taW5hdG9ybWludXNvbmVudW1lcmF0b3JiZW5nYWxpPTI1NTI7ZS5kZXpoPTY3NjtlLmRoYWJlbmdhbGk9MjQ3MTtlLmRoYWRldmE9MjM0MztlLmRoYWd1amFyYXRpPTI3Mjc7ZS5kaGFndXJtdWtoaT0yNTk5O2UuZGhvb2s9NTk5O2UuZGlhbHl0aWthdG9ub3M9OTAxO2UuZGlhbHl0aWthdG9ub3NjbWI9ODM2O2UuZGlhbW9uZD05ODMwO2UuZGlhbW9uZHN1aXR3aGl0ZT05ODI2O2UuZGllcmVzaXM9MTY4O2UuZGllcmVzaXNhY3V0ZT02MzE5MTtlLmRpZXJlc2lzYmVsb3djbWI9ODA0O2UuZGllcmVzaXNjbWI9Nzc2O2UuZGllcmVzaXNncmF2ZT02MzE5MjtlLmRpZXJlc2lzdG9ub3M9OTAxO2UuZGloaXJhZ2FuYT0xMjM4NjtlLmRpa2F0YWthbmE9MTI0ODI7ZS5kaXR0b21hcms9MTIyOTE7ZS5kaXZpZGU9MjQ3O2UuZGl2aWRlcz04NzM5O2UuZGl2aXNpb25zbGFzaD04NzI1O2UuZGplY3lyaWxsaWM9MTEwNjtlLmRrc2hhZGU9OTYxOTtlLmRsaW5lYmVsb3c9NzY5NTtlLmRsc3F1YXJlPTEzMjA3O2UuZG1hY3Jvbj0yNzM7ZS5kbW9ub3NwYWNlPTY1MzQ4O2UuZG5ibG9jaz05NjA0O2UuZG9jaGFkYXRoYWk9MzU5ODtlLmRvZGVrdGhhaT0zNjA0O2UuZG9oaXJhZ2FuYT0xMjM5MztlLmRva2F0YWthbmE9MTI0ODk7ZS5kb2xsYXI9MzY7ZS5kb2xsYXJpbmZlcmlvcj02MzIwMztlLmRvbGxhcm1vbm9zcGFjZT02NTI4NDtlLmRvbGxhcm9sZHN0eWxlPTYzMjY4O2UuZG9sbGFyc21hbGw9NjUxMjk7ZS5kb2xsYXJzdXBlcmlvcj02MzIwNDtlLmRvbmc9ODM2MztlLmRvcnVzcXVhcmU9MTMwOTQ7ZS5kb3RhY2NlbnQ9NzI5O2UuZG90YWNjZW50Y21iPTc3NTtlLmRvdGJlbG93Y21iPTgwMztlLmRvdGJlbG93Y29tYj04MDM7ZS5kb3RrYXRha2FuYT0xMjUzOTtlLmRvdGxlc3NpPTMwNTtlLmRvdGxlc3NqPTYzMTY2O2UuZG90bGVzc2pzdHJva2Vob29rPTY0NDtlLmRvdG1hdGg9ODkwMTtlLmRvdHRlZGNpcmNsZT05Njc2O2UuZG91YmxleW9kcGF0YWg9NjQyODc7ZS5kb3VibGV5b2RwYXRhaGhlYnJldz02NDI4NztlLmRvd250YWNrYmVsb3djbWI9Nzk4O2UuZG93bnRhY2ttb2Q9NzI1O2UuZHBhcmVuPTkzNzU7ZS5kc3VwZXJpb3I9NjMyMTE7ZS5kdGFpbD01OTg7ZS5kdG9wYmFyPTM5NjtlLmR1aGlyYWdhbmE9MTIzODk7ZS5kdWthdGFrYW5hPTEyNDg1O2UuZHo9NDk5O2UuZHphbHRvbmU9Njc1O2UuZHpjYXJvbj00NTQ7ZS5kemN1cmw9Njc3O2UuZHplYWJraGFzaWFuY3lyaWxsaWM9MTI0OTtlLmR6ZWN5cmlsbGljPTExMDk7ZS5kemhlY3lyaWxsaWM9MTExOTtlLmU9MTAxO2UuZWFjdXRlPTIzMztlLmVhcnRoPTk3OTM7ZS5lYmVuZ2FsaT0yNDQ3O2UuZWJvcG9tb2ZvPTEyNTcyO2UuZWJyZXZlPTI3NztlLmVjYW5kcmFkZXZhPTIzMTc7ZS5lY2FuZHJhZ3VqYXJhdGk9MjcwMTtlLmVjYW5kcmF2b3dlbHNpZ25kZXZhPTIzNzM7ZS5lY2FuZHJhdm93ZWxzaWduZ3VqYXJhdGk9Mjc1NztlLmVjYXJvbj0yODM7ZS5lY2VkaWxsYWJyZXZlPTc3MDk7ZS5lY2hhcm1lbmlhbj0xMzgxO2UuZWNoeWl3bmFybWVuaWFuPTE0MTU7ZS5lY2lyY2xlPTk0Mjg7ZS5lY2lyY3VtZmxleD0yMzQ7ZS5lY2lyY3VtZmxleGFjdXRlPTc4NzE7ZS5lY2lyY3VtZmxleGJlbG93PTc3MDU7ZS5lY2lyY3VtZmxleGRvdGJlbG93PTc4Nzk7ZS5lY2lyY3VtZmxleGdyYXZlPTc4NzM7ZS5lY2lyY3VtZmxleGhvb2thYm92ZT03ODc1O2UuZWNpcmN1bWZsZXh0aWxkZT03ODc3O2UuZWN5cmlsbGljPTExMDg7ZS5lZGJsZ3JhdmU9NTE3O2UuZWRldmE9MjMxOTtlLmVkaWVyZXNpcz0yMzU7ZS5lZG90PTI3OTtlLmVkb3RhY2NlbnQ9Mjc5O2UuZWRvdGJlbG93PTc4NjU7ZS5lZWd1cm11a2hpPTI1NzU7ZS5lZW1hdHJhZ3VybXVraGk9MjYzMTtlLmVmY3lyaWxsaWM9MTA5MjtlLmVncmF2ZT0yMzI7ZS5lZ3VqYXJhdGk9MjcwMztlLmVoYXJtZW5pYW49MTM4MztlLmVoYm9wb21vZm89MTI1NzM7ZS5laGlyYWdhbmE9MTIzNjA7ZS5laG9va2Fib3ZlPTc4Njc7ZS5laWJvcG9tb2ZvPTEyNTc1O2UuZWlnaHQ9NTY7ZS5laWdodGFyYWJpYz0xNjQwO2UuZWlnaHRiZW5nYWxpPTI1NDI7ZS5laWdodGNpcmNsZT05MzE5O2UuZWlnaHRjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI5O2UuZWlnaHRkZXZhPTI0MTQ7ZS5laWdodGVlbmNpcmNsZT05MzI5O2UuZWlnaHRlZW5wYXJlbj05MzQ5O2UuZWlnaHRlZW5wZXJpb2Q9OTM2OTtlLmVpZ2h0Z3VqYXJhdGk9Mjc5ODtlLmVpZ2h0Z3VybXVraGk9MjY3MDtlLmVpZ2h0aGFja2FyYWJpYz0xNjQwO2UuZWlnaHRoYW5nemhvdT0xMjMyODtlLmVpZ2h0aG5vdGViZWFtZWQ9OTgzNTtlLmVpZ2h0aWRlb2dyYXBoaWNwYXJlbj0xMjgzOTtlLmVpZ2h0aW5mZXJpb3I9ODMyODtlLmVpZ2h0bW9ub3NwYWNlPTY1MzA0O2UuZWlnaHRvbGRzdHlsZT02MzI4ODtlLmVpZ2h0cGFyZW49OTMzOTtlLmVpZ2h0cGVyaW9kPTkzNTk7ZS5laWdodHBlcnNpYW49MTc4NDtlLmVpZ2h0cm9tYW49ODU2NztlLmVpZ2h0c3VwZXJpb3I9ODMxMjtlLmVpZ2h0dGhhaT0zNjcyO2UuZWludmVydGVkYnJldmU9NTE5O2UuZWlvdGlmaWVkY3lyaWxsaWM9MTEyNTtlLmVrYXRha2FuYT0xMjQ1NjtlLmVrYXRha2FuYWhhbGZ3aWR0aD02NTM5NjtlLmVrb25rYXJndXJtdWtoaT0yNjc2O2UuZWtvcmVhbj0xMjYyODtlLmVsY3lyaWxsaWM9MTA4MztlLmVsZW1lbnQ9ODcxMjtlLmVsZXZlbmNpcmNsZT05MzIyO2UuZWxldmVucGFyZW49OTM0MjtlLmVsZXZlbnBlcmlvZD05MzYyO2UuZWxldmVucm9tYW49ODU3MDtlLmVsbGlwc2lzPTgyMzA7ZS5lbGxpcHNpc3ZlcnRpY2FsPTg5NDI7ZS5lbWFjcm9uPTI3NTtlLmVtYWNyb25hY3V0ZT03NzAzO2UuZW1hY3JvbmdyYXZlPTc3MDE7ZS5lbWN5cmlsbGljPTEwODQ7ZS5lbWRhc2g9ODIxMjtlLmVtZGFzaHZlcnRpY2FsPTY1MDczO2UuZW1vbm9zcGFjZT02NTM0OTtlLmVtcGhhc2lzbWFya2FybWVuaWFuPTEzNzE7ZS5lbXB0eXNldD04NzA5O2UuZW5ib3BvbW9mbz0xMjU3OTtlLmVuY3lyaWxsaWM9MTA4NTtlLmVuZGFzaD04MjExO2UuZW5kYXNodmVydGljYWw9NjUwNzQ7ZS5lbmRlc2NlbmRlcmN5cmlsbGljPTExODc7ZS5lbmc9MzMxO2UuZW5nYm9wb21vZm89MTI1ODE7ZS5lbmdoZWN5cmlsbGljPTExODk7ZS5lbmhvb2tjeXJpbGxpYz0xMjI0O2UuZW5zcGFjZT04MTk0O2UuZW9nb25laz0yODE7ZS5lb2tvcmVhbj0xMjYyNztlLmVvcGVuPTYwMztlLmVvcGVuY2xvc2VkPTY2NjtlLmVvcGVucmV2ZXJzZWQ9NjA0O2UuZW9wZW5yZXZlcnNlZGNsb3NlZD02MDY7ZS5lb3BlbnJldmVyc2VkaG9vaz02MDU7ZS5lcGFyZW49OTM3NjtlLmVwc2lsb249OTQ5O2UuZXBzaWxvbnRvbm9zPTk0MTtlLmVxdWFsPTYxO2UuZXF1YWxtb25vc3BhY2U9NjUzMDk7ZS5lcXVhbHNtYWxsPTY1MTI2O2UuZXF1YWxzdXBlcmlvcj04MzE2O2UuZXF1aXZhbGVuY2U9ODgwMTtlLmVyYm9wb21vZm89MTI1ODI7ZS5lcmN5cmlsbGljPTEwODg7ZS5lcmV2ZXJzZWQ9NjAwO2UuZXJldmVyc2VkY3lyaWxsaWM9MTEwMTtlLmVzY3lyaWxsaWM9MTA4OTtlLmVzZGVzY2VuZGVyY3lyaWxsaWM9MTE5NTtlLmVzaD02NDM7ZS5lc2hjdXJsPTY0NjtlLmVzaG9ydGRldmE9MjMxODtlLmVzaG9ydHZvd2Vsc2lnbmRldmE9MjM3NDtlLmVzaHJldmVyc2VkbG9vcD00MjY7ZS5lc2hzcXVhdHJldmVyc2VkPTY0NTtlLmVzbWFsbGhpcmFnYW5hPTEyMzU5O2UuZXNtYWxsa2F0YWthbmE9MTI0NTU7ZS5lc21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4NjtlLmVzdGltYXRlZD04NDk0O2UuZXN1cGVyaW9yPTYzMjEyO2UuZXRhPTk1MTtlLmV0YXJtZW5pYW49MTM4NDtlLmV0YXRvbm9zPTk0MjtlLmV0aD0yNDA7ZS5ldGlsZGU9Nzg2OTtlLmV0aWxkZWJlbG93PTc3MDc7ZS5ldG5haHRhZm91a2hoZWJyZXc9MTQyNTtlLmV0bmFodGFmb3VraGxlZnRoZWJyZXc9MTQyNTtlLmV0bmFodGFoZWJyZXc9MTQyNTtlLmV0bmFodGFsZWZ0aGVicmV3PTE0MjU7ZS5ldHVybmVkPTQ3NztlLmV1a29yZWFuPTEyNjQxO2UuZXVybz04MzY0O2UuZXZvd2Vsc2lnbmJlbmdhbGk9MjUwMztlLmV2b3dlbHNpZ25kZXZhPTIzNzU7ZS5ldm93ZWxzaWduZ3VqYXJhdGk9Mjc1OTtlLmV4Y2xhbT0zMztlLmV4Y2xhbWFybWVuaWFuPTEzNzI7ZS5leGNsYW1kYmw9ODI1MjtlLmV4Y2xhbWRvd249MTYxO2UuZXhjbGFtZG93bnNtYWxsPTYzMzkzO2UuZXhjbGFtbW9ub3NwYWNlPTY1MjgxO2UuZXhjbGFtc21hbGw9NjMyNjU7ZS5leGlzdGVudGlhbD04NzA3O2UuZXpoPTY1ODtlLmV6aGNhcm9uPTQ5NTtlLmV6aGN1cmw9NjU5O2UuZXpocmV2ZXJzZWQ9NDQxO2UuZXpodGFpbD00NDI7ZS5mPTEwMjtlLmZhZGV2YT0yMzk4O2UuZmFndXJtdWtoaT0yNjU0O2UuZmFocmVuaGVpdD04NDU3O2UuZmF0aGFhcmFiaWM9MTYxNDtlLmZhdGhhbG93YXJhYmljPTE2MTQ7ZS5mYXRoYXRhbmFyYWJpYz0xNjExO2UuZmJvcG9tb2ZvPTEyNTUyO2UuZmNpcmNsZT05NDI5O2UuZmRvdGFjY2VudD03NzExO2UuZmVoYXJhYmljPTE2MDE7ZS5mZWhhcm1lbmlhbj0xNDE0O2UuZmVoZmluYWxhcmFiaWM9NjUyMzQ7ZS5mZWhpbml0aWFsYXJhYmljPTY1MjM1O2UuZmVobWVkaWFsYXJhYmljPTY1MjM2O2UuZmVpY29wdGljPTk5NztlLmZlbWFsZT05NzkyO2UuZmY9NjQyNTY7ZS5mX2Y9NjQyNTY7ZS5mZmk9NjQyNTk7ZS5mX2ZfaT02NDI1OTtlLmZmbD02NDI2MDtlLmZfZl9sPTY0MjYwO2UuZmk9NjQyNTc7ZS5mX2k9NjQyNTc7ZS5maWZ0ZWVuY2lyY2xlPTkzMjY7ZS5maWZ0ZWVucGFyZW49OTM0NjtlLmZpZnRlZW5wZXJpb2Q9OTM2NjtlLmZpZ3VyZWRhc2g9ODIxMDtlLmZpbGxlZGJveD05NjMyO2UuZmlsbGVkcmVjdD05NjQ0O2UuZmluYWxrYWY9MTQ5ODtlLmZpbmFsa2FmZGFnZXNoPTY0MzE0O2UuZmluYWxrYWZkYWdlc2hoZWJyZXc9NjQzMTQ7ZS5maW5hbGthZmhlYnJldz0xNDk4O2UuZmluYWxtZW09MTUwMTtlLmZpbmFsbWVtaGVicmV3PTE1MDE7ZS5maW5hbG51bj0xNTAzO2UuZmluYWxudW5oZWJyZXc9MTUwMztlLmZpbmFscGU9MTUwNztlLmZpbmFscGVoZWJyZXc9MTUwNztlLmZpbmFsdHNhZGk9MTUwOTtlLmZpbmFsdHNhZGloZWJyZXc9MTUwOTtlLmZpcnN0dG9uZWNoaW5lc2U9NzEzO2UuZmlzaGV5ZT05NjczO2UuZml0YWN5cmlsbGljPTExMzk7ZS5maXZlPTUzO2UuZml2ZWFyYWJpYz0xNjM3O2UuZml2ZWJlbmdhbGk9MjUzOTtlLmZpdmVjaXJjbGU9OTMxNjtlLmZpdmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI2O2UuZml2ZWRldmE9MjQxMTtlLmZpdmVlaWdodGhzPTg1NDE7ZS5maXZlZ3VqYXJhdGk9Mjc5NTtlLmZpdmVndXJtdWtoaT0yNjY3O2UuZml2ZWhhY2thcmFiaWM9MTYzNztlLmZpdmVoYW5nemhvdT0xMjMyNTtlLmZpdmVpZGVvZ3JhcGhpY3BhcmVuPTEyODM2O2UuZml2ZWluZmVyaW9yPTgzMjU7ZS5maXZlbW9ub3NwYWNlPTY1MzAxO2UuZml2ZW9sZHN0eWxlPTYzMjg1O2UuZml2ZXBhcmVuPTkzMzY7ZS5maXZlcGVyaW9kPTkzNTY7ZS5maXZlcGVyc2lhbj0xNzgxO2UuZml2ZXJvbWFuPTg1NjQ7ZS5maXZlc3VwZXJpb3I9ODMwOTtlLmZpdmV0aGFpPTM2Njk7ZS5mbD02NDI1ODtlLmZfbD02NDI1ODtlLmZsb3Jpbj00MDI7ZS5mbW9ub3NwYWNlPTY1MzUwO2UuZm1zcXVhcmU9MTMyMDk7ZS5mb2ZhbnRoYWk9MzYxNTtlLmZvZmF0aGFpPTM2MTM7ZS5mb25nbWFudGhhaT0zNjYzO2UuZm9yYWxsPTg3MDQ7ZS5mb3VyPTUyO2UuZm91cmFyYWJpYz0xNjM2O2UuZm91cmJlbmdhbGk9MjUzODtlLmZvdXJjaXJjbGU9OTMxNTtlLmZvdXJjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI1O2UuZm91cmRldmE9MjQxMDtlLmZvdXJndWphcmF0aT0yNzk0O2UuZm91cmd1cm11a2hpPTI2NjY7ZS5mb3VyaGFja2FyYWJpYz0xNjM2O2UuZm91cmhhbmd6aG91PTEyMzI0O2UuZm91cmlkZW9ncmFwaGljcGFyZW49MTI4MzU7ZS5mb3VyaW5mZXJpb3I9ODMyNDtlLmZvdXJtb25vc3BhY2U9NjUzMDA7ZS5mb3VybnVtZXJhdG9yYmVuZ2FsaT0yNTUxO2UuZm91cm9sZHN0eWxlPTYzMjg0O2UuZm91cnBhcmVuPTkzMzU7ZS5mb3VycGVyaW9kPTkzNTU7ZS5mb3VycGVyc2lhbj0xNzgwO2UuZm91cnJvbWFuPTg1NjM7ZS5mb3Vyc3VwZXJpb3I9ODMwODtlLmZvdXJ0ZWVuY2lyY2xlPTkzMjU7ZS5mb3VydGVlbnBhcmVuPTkzNDU7ZS5mb3VydGVlbnBlcmlvZD05MzY1O2UuZm91cnRoYWk9MzY2ODtlLmZvdXJ0aHRvbmVjaGluZXNlPTcxNTtlLmZwYXJlbj05Mzc3O2UuZnJhY3Rpb249ODI2MDtlLmZyYW5jPTgzNTU7ZS5nPTEwMztlLmdhYmVuZ2FsaT0yNDU1O2UuZ2FjdXRlPTUwMTtlLmdhZGV2YT0yMzI3O2UuZ2FmYXJhYmljPTE3MTE7ZS5nYWZmaW5hbGFyYWJpYz02NDQwMztlLmdhZmluaXRpYWxhcmFiaWM9NjQ0MDQ7ZS5nYWZtZWRpYWxhcmFiaWM9NjQ0MDU7ZS5nYWd1amFyYXRpPTI3MTE7ZS5nYWd1cm11a2hpPTI1ODM7ZS5nYWhpcmFnYW5hPTEyMzY0O2UuZ2FrYXRha2FuYT0xMjQ2MDtlLmdhbW1hPTk0NztlLmdhbW1hbGF0aW5zbWFsbD02MTE7ZS5nYW1tYXN1cGVyaW9yPTczNjtlLmdhbmdpYWNvcHRpYz0xMDAzO2UuZ2JvcG9tb2ZvPTEyNTU3O2UuZ2JyZXZlPTI4NztlLmdjYXJvbj00ODc7ZS5nY2VkaWxsYT0yOTE7ZS5nY2lyY2xlPTk0MzA7ZS5nY2lyY3VtZmxleD0yODU7ZS5nY29tbWFhY2NlbnQ9MjkxO2UuZ2RvdD0yODk7ZS5nZG90YWNjZW50PTI4OTtlLmdlY3lyaWxsaWM9MTA3NTtlLmdlaGlyYWdhbmE9MTIzNzA7ZS5nZWthdGFrYW5hPTEyNDY2O2UuZ2VvbWV0cmljYWxseWVxdWFsPTg3ODU7ZS5nZXJlc2hhY2NlbnRoZWJyZXc9MTQzNjtlLmdlcmVzaGhlYnJldz0xNTIzO2UuZ2VyZXNobXVxZGFtaGVicmV3PTE0Mzc7ZS5nZXJtYW5kYmxzPTIyMztlLmdlcnNoYXlpbWFjY2VudGhlYnJldz0xNDM4O2UuZ2Vyc2hheWltaGVicmV3PTE1MjQ7ZS5nZXRhbWFyaz0xMjMwNztlLmdoYWJlbmdhbGk9MjQ1NjtlLmdoYWRhcm1lbmlhbj0xMzk0O2UuZ2hhZGV2YT0yMzI4O2UuZ2hhZ3VqYXJhdGk9MjcxMjtlLmdoYWd1cm11a2hpPTI1ODQ7ZS5naGFpbmFyYWJpYz0xNTk0O2UuZ2hhaW5maW5hbGFyYWJpYz02NTIzMDtlLmdoYWluaW5pdGlhbGFyYWJpYz02NTIzMTtlLmdoYWlubWVkaWFsYXJhYmljPTY1MjMyO2UuZ2hlbWlkZGxlaG9va2N5cmlsbGljPTExNzM7ZS5naGVzdHJva2VjeXJpbGxpYz0xMTcxO2UuZ2hldXB0dXJuY3lyaWxsaWM9MTE2OTtlLmdoaGFkZXZhPTIzOTQ7ZS5naGhhZ3VybXVraGk9MjY1MDtlLmdob29rPTYwODtlLmdoenNxdWFyZT0xMzIwMztlLmdpaGlyYWdhbmE9MTIzNjY7ZS5naWthdGFrYW5hPTEyNDYyO2UuZ2ltYXJtZW5pYW49MTM3OTtlLmdpbWVsPTE0OTA7ZS5naW1lbGRhZ2VzaD02NDMwNjtlLmdpbWVsZGFnZXNoaGVicmV3PTY0MzA2O2UuZ2ltZWxoZWJyZXc9MTQ5MDtlLmdqZWN5cmlsbGljPTExMDc7ZS5nbG90dGFsaW52ZXJ0ZWRzdHJva2U9NDQ2O2UuZ2xvdHRhbHN0b3A9NjYwO2UuZ2xvdHRhbHN0b3BpbnZlcnRlZD02NjI7ZS5nbG90dGFsc3RvcG1vZD03MDQ7ZS5nbG90dGFsc3RvcHJldmVyc2VkPTY2MTtlLmdsb3R0YWxzdG9wcmV2ZXJzZWRtb2Q9NzA1O2UuZ2xvdHRhbHN0b3ByZXZlcnNlZHN1cGVyaW9yPTc0MDtlLmdsb3R0YWxzdG9wc3Ryb2tlPTY3MztlLmdsb3R0YWxzdG9wc3Ryb2tlcmV2ZXJzZWQ9Njc0O2UuZ21hY3Jvbj03NzEzO2UuZ21vbm9zcGFjZT02NTM1MTtlLmdvaGlyYWdhbmE9MTIzNzI7ZS5nb2thdGFrYW5hPTEyNDY4O2UuZ3BhcmVuPTkzNzg7ZS5ncGFzcXVhcmU9MTMyMjg7ZS5ncmFkaWVudD04NzExO2UuZ3JhdmU9OTY7ZS5ncmF2ZWJlbG93Y21iPTc5MDtlLmdyYXZlY21iPTc2ODtlLmdyYXZlY29tYj03Njg7ZS5ncmF2ZWRldmE9MjM4NztlLmdyYXZlbG93bW9kPTcxODtlLmdyYXZlbW9ub3NwYWNlPTY1MzQ0O2UuZ3JhdmV0b25lY21iPTgzMjtlLmdyZWF0ZXI9NjI7ZS5ncmVhdGVyZXF1YWw9ODgwNTtlLmdyZWF0ZXJlcXVhbG9ybGVzcz04OTIzO2UuZ3JlYXRlcm1vbm9zcGFjZT02NTMxMDtlLmdyZWF0ZXJvcmVxdWl2YWxlbnQ9ODgxOTtlLmdyZWF0ZXJvcmxlc3M9ODgyMztlLmdyZWF0ZXJvdmVyZXF1YWw9ODgwNztlLmdyZWF0ZXJzbWFsbD02NTEyNTtlLmdzY3JpcHQ9NjA5O2UuZ3N0cm9rZT00ODU7ZS5ndWhpcmFnYW5hPTEyMzY4O2UuZ3VpbGxlbW90bGVmdD0xNzE7ZS5ndWlsbGVtb3RyaWdodD0xODc7ZS5ndWlsc2luZ2xsZWZ0PTgyNDk7ZS5ndWlsc2luZ2xyaWdodD04MjUwO2UuZ3VrYXRha2FuYT0xMjQ2NDtlLmd1cmFtdXNxdWFyZT0xMzA4MDtlLmd5c3F1YXJlPTEzMjU3O2UuaD0xMDQ7ZS5oYWFia2hhc2lhbmN5cmlsbGljPTExOTM7ZS5oYWFsdG9uZWFyYWJpYz0xNzI5O2UuaGFiZW5nYWxpPTI0ODk7ZS5oYWRlc2NlbmRlcmN5cmlsbGljPTEyMDM7ZS5oYWRldmE9MjM2MTtlLmhhZ3VqYXJhdGk9Mjc0NTtlLmhhZ3VybXVraGk9MjYxNztlLmhhaGFyYWJpYz0xNTgxO2UuaGFoZmluYWxhcmFiaWM9NjUxODY7ZS5oYWhpbml0aWFsYXJhYmljPTY1MTg3O2UuaGFoaXJhZ2FuYT0xMjM5OTtlLmhhaG1lZGlhbGFyYWJpYz02NTE4ODtlLmhhaXR1c3F1YXJlPTEzMDk4O2UuaGFrYXRha2FuYT0xMjQ5NTtlLmhha2F0YWthbmFoYWxmd2lkdGg9NjU0MTg7ZS5oYWxhbnRndXJtdWtoaT0yNjM3O2UuaGFtemFhcmFiaWM9MTU2OTtlLmhhbXphbG93YXJhYmljPTE1Njk7ZS5oYW5ndWxmaWxsZXI9MTI2NDQ7ZS5oYXJkc2lnbmN5cmlsbGljPTEwOTg7ZS5oYXJwb29ubGVmdGJhcmJ1cD04NjM2O2UuaGFycG9vbnJpZ2h0YmFyYnVwPTg2NDA7ZS5oYXNxdWFyZT0xMzI1ODtlLmhhdGFmcGF0YWg9MTQ1ODtlLmhhdGFmcGF0YWgxNj0xNDU4O2UuaGF0YWZwYXRhaDIzPTE0NTg7ZS5oYXRhZnBhdGFoMmY9MTQ1ODtlLmhhdGFmcGF0YWhoZWJyZXc9MTQ1ODtlLmhhdGFmcGF0YWhuYXJyb3doZWJyZXc9MTQ1ODtlLmhhdGFmcGF0YWhxdWFydGVyaGVicmV3PTE0NTg7ZS5oYXRhZnBhdGFod2lkZWhlYnJldz0xNDU4O2UuaGF0YWZxYW1hdHM9MTQ1OTtlLmhhdGFmcWFtYXRzMWI9MTQ1OTtlLmhhdGFmcWFtYXRzMjg9MTQ1OTtlLmhhdGFmcWFtYXRzMzQ9MTQ1OTtlLmhhdGFmcWFtYXRzaGVicmV3PTE0NTk7ZS5oYXRhZnFhbWF0c25hcnJvd2hlYnJldz0xNDU5O2UuaGF0YWZxYW1hdHNxdWFydGVyaGVicmV3PTE0NTk7ZS5oYXRhZnFhbWF0c3dpZGVoZWJyZXc9MTQ1OTtlLmhhdGFmc2Vnb2w9MTQ1NztlLmhhdGFmc2Vnb2wxNz0xNDU3O2UuaGF0YWZzZWdvbDI0PTE0NTc7ZS5oYXRhZnNlZ29sMzA9MTQ1NztlLmhhdGFmc2Vnb2xoZWJyZXc9MTQ1NztlLmhhdGFmc2Vnb2xuYXJyb3doZWJyZXc9MTQ1NztlLmhhdGFmc2Vnb2xxdWFydGVyaGVicmV3PTE0NTc7ZS5oYXRhZnNlZ29sd2lkZWhlYnJldz0xNDU3O2UuaGJhcj0yOTU7ZS5oYm9wb21vZm89MTI1NTk7ZS5oYnJldmViZWxvdz03NzIzO2UuaGNlZGlsbGE9NzcyMTtlLmhjaXJjbGU9OTQzMTtlLmhjaXJjdW1mbGV4PTI5MztlLmhkaWVyZXNpcz03NzE5O2UuaGRvdGFjY2VudD03NzE1O2UuaGRvdGJlbG93PTc3MTc7ZS5oZT0xNDkyO2UuaGVhcnQ9OTgyOTtlLmhlYXJ0c3VpdGJsYWNrPTk4Mjk7ZS5oZWFydHN1aXR3aGl0ZT05ODI1O2UuaGVkYWdlc2g9NjQzMDg7ZS5oZWRhZ2VzaGhlYnJldz02NDMwODtlLmhlaGFsdG9uZWFyYWJpYz0xNzI5O2UuaGVoYXJhYmljPTE2MDc7ZS5oZWhlYnJldz0xNDkyO2UuaGVoZmluYWxhbHRvbmVhcmFiaWM9NjQ0MjM7ZS5oZWhmaW5hbGFsdHR3b2FyYWJpYz02NTI1ODtlLmhlaGZpbmFsYXJhYmljPTY1MjU4O2UuaGVoaGFtemFhYm92ZWZpbmFsYXJhYmljPTY0NDIxO2UuaGVoaGFtemFhYm92ZWlzb2xhdGVkYXJhYmljPTY0NDIwO2UuaGVoaW5pdGlhbGFsdG9uZWFyYWJpYz02NDQyNDtlLmhlaGluaXRpYWxhcmFiaWM9NjUyNTk7ZS5oZWhpcmFnYW5hPTEyNDA4O2UuaGVobWVkaWFsYWx0b25lYXJhYmljPTY0NDI1O2UuaGVobWVkaWFsYXJhYmljPTY1MjYwO2UuaGVpc2VpZXJhc3F1YXJlPTEzMTc5O2UuaGVrYXRha2FuYT0xMjUwNDtlLmhla2F0YWthbmFoYWxmd2lkdGg9NjU0MjE7ZS5oZWt1dGFhcnVzcXVhcmU9MTMxMTA7ZS5oZW5naG9vaz02MTU7ZS5oZXJ1dHVzcXVhcmU9MTMxMTM7ZS5oZXQ9MTQ5NTtlLmhldGhlYnJldz0xNDk1O2UuaGhvb2s9NjE0O2UuaGhvb2tzdXBlcmlvcj02ODk7ZS5oaWV1aGFjaXJjbGVrb3JlYW49MTI5MjM7ZS5oaWV1aGFwYXJlbmtvcmVhbj0xMjgyNztlLmhpZXVoY2lyY2xla29yZWFuPTEyOTA5O2UuaGlldWhrb3JlYW49MTI2MjI7ZS5oaWV1aHBhcmVua29yZWFuPTEyODEzO2UuaGloaXJhZ2FuYT0xMjQwMjtlLmhpa2F0YWthbmE9MTI0OTg7ZS5oaWthdGFrYW5haGFsZndpZHRoPTY1NDE5O2UuaGlyaXE9MTQ2MDtlLmhpcmlxMTQ9MTQ2MDtlLmhpcmlxMjE9MTQ2MDtlLmhpcmlxMmQ9MTQ2MDtlLmhpcmlxaGVicmV3PTE0NjA7ZS5oaXJpcW5hcnJvd2hlYnJldz0xNDYwO2UuaGlyaXFxdWFydGVyaGVicmV3PTE0NjA7ZS5oaXJpcXdpZGVoZWJyZXc9MTQ2MDtlLmhsaW5lYmVsb3c9NzgzMDtlLmhtb25vc3BhY2U9NjUzNTI7ZS5ob2FybWVuaWFuPTEzOTI7ZS5ob2hpcHRoYWk9MzYyNztlLmhvaGlyYWdhbmE9MTI0MTE7ZS5ob2thdGFrYW5hPTEyNTA3O2UuaG9rYXRha2FuYWhhbGZ3aWR0aD02NTQyMjtlLmhvbGFtPTE0NjU7ZS5ob2xhbTE5PTE0NjU7ZS5ob2xhbTI2PTE0NjU7ZS5ob2xhbTMyPTE0NjU7ZS5ob2xhbWhlYnJldz0xNDY1O2UuaG9sYW1uYXJyb3doZWJyZXc9MTQ2NTtlLmhvbGFtcXVhcnRlcmhlYnJldz0xNDY1O2UuaG9sYW13aWRlaGVicmV3PTE0NjU7ZS5ob25va2h1a3RoYWk9MzYzMDtlLmhvb2thYm92ZWNvbWI9Nzc3O2UuaG9va2NtYj03Nzc7ZS5ob29rcGFsYXRhbGl6ZWRiZWxvd2NtYj04MDE7ZS5ob29rcmV0cm9mbGV4YmVsb3djbWI9ODAyO2UuaG9vbnNxdWFyZT0xMzEyMjtlLmhvcmljb3B0aWM9MTAwMTtlLmhvcml6b250YWxiYXI9ODIxMztlLmhvcm5jbWI9Nzk1O2UuaG90c3ByaW5ncz05ODMyO2UuaG91c2U9ODk2MjtlLmhwYXJlbj05Mzc5O2UuaHN1cGVyaW9yPTY4ODtlLmh0dXJuZWQ9NjEzO2UuaHVoaXJhZ2FuYT0xMjQwNTtlLmh1aWl0b3NxdWFyZT0xMzEwNztlLmh1a2F0YWthbmE9MTI1MDE7ZS5odWthdGFrYW5haGFsZndpZHRoPTY1NDIwO2UuaHVuZ2FydW1sYXV0PTczMztlLmh1bmdhcnVtbGF1dGNtYj03Nzk7ZS5odj00MDU7ZS5oeXBoZW49NDU7ZS5oeXBoZW5pbmZlcmlvcj02MzIwNTtlLmh5cGhlbm1vbm9zcGFjZT02NTI5MztlLmh5cGhlbnNtYWxsPTY1MTIzO2UuaHlwaGVuc3VwZXJpb3I9NjMyMDY7ZS5oeXBoZW50d289ODIwODtlLmk9MTA1O2UuaWFjdXRlPTIzNztlLmlhY3lyaWxsaWM9MTEwMztlLmliZW5nYWxpPTI0Mzk7ZS5pYm9wb21vZm89MTI1ODM7ZS5pYnJldmU9MzAxO2UuaWNhcm9uPTQ2NDtlLmljaXJjbGU9OTQzMjtlLmljaXJjdW1mbGV4PTIzODtlLmljeXJpbGxpYz0xMTEwO2UuaWRibGdyYXZlPTUyMTtlLmlkZW9ncmFwaGVhcnRoY2lyY2xlPTEyOTQzO2UuaWRlb2dyYXBoZmlyZWNpcmNsZT0xMjkzOTtlLmlkZW9ncmFwaGljYWxsaWFuY2VwYXJlbj0xMjg2MztlLmlkZW9ncmFwaGljY2FsbHBhcmVuPTEyODU4O2UuaWRlb2dyYXBoaWNjZW50cmVjaXJjbGU9MTI5NjU7ZS5pZGVvZ3JhcGhpY2Nsb3NlPTEyMjk0O2UuaWRlb2dyYXBoaWNjb21tYT0xMjI4OTtlLmlkZW9ncmFwaGljY29tbWFsZWZ0PTY1MzgwO2UuaWRlb2dyYXBoaWNjb25ncmF0dWxhdGlvbnBhcmVuPTEyODU1O2UuaWRlb2dyYXBoaWNjb3JyZWN0Y2lyY2xlPTEyOTYzO2UuaWRlb2dyYXBoaWNlYXJ0aHBhcmVuPTEyODQ3O2UuaWRlb2dyYXBoaWNlbnRlcnByaXNlcGFyZW49MTI4NjE7ZS5pZGVvZ3JhcGhpY2V4Y2VsbGVudGNpcmNsZT0xMjk1NztlLmlkZW9ncmFwaGljZmVzdGl2YWxwYXJlbj0xMjg2NDtlLmlkZW9ncmFwaGljZmluYW5jaWFsY2lyY2xlPTEyOTUwO2UuaWRlb2dyYXBoaWNmaW5hbmNpYWxwYXJlbj0xMjg1NDtlLmlkZW9ncmFwaGljZmlyZXBhcmVuPTEyODQzO2UuaWRlb2dyYXBoaWNoYXZlcGFyZW49MTI4NTA7ZS5pZGVvZ3JhcGhpY2hpZ2hjaXJjbGU9MTI5NjQ7ZS5pZGVvZ3JhcGhpY2l0ZXJhdGlvbm1hcms9MTIyOTM7ZS5pZGVvZ3JhcGhpY2xhYm9yY2lyY2xlPTEyOTUyO2UuaWRlb2dyYXBoaWNsYWJvcnBhcmVuPTEyODU2O2UuaWRlb2dyYXBoaWNsZWZ0Y2lyY2xlPTEyOTY3O2UuaWRlb2dyYXBoaWNsb3djaXJjbGU9MTI5NjY7ZS5pZGVvZ3JhcGhpY21lZGljaW5lY2lyY2xlPTEyOTY5O2UuaWRlb2dyYXBoaWNtZXRhbHBhcmVuPTEyODQ2O2UuaWRlb2dyYXBoaWNtb29ucGFyZW49MTI4NDI7ZS5pZGVvZ3JhcGhpY25hbWVwYXJlbj0xMjg1MjtlLmlkZW9ncmFwaGljcGVyaW9kPTEyMjkwO2UuaWRlb2dyYXBoaWNwcmludGNpcmNsZT0xMjk1ODtlLmlkZW9ncmFwaGljcmVhY2hwYXJlbj0xMjg2NztlLmlkZW9ncmFwaGljcmVwcmVzZW50cGFyZW49MTI4NTc7ZS5pZGVvZ3JhcGhpY3Jlc291cmNlcGFyZW49MTI4NjI7ZS5pZGVvZ3JhcGhpY3JpZ2h0Y2lyY2xlPTEyOTY4O2UuaWRlb2dyYXBoaWNzZWNyZXRjaXJjbGU9MTI5NTM7ZS5pZGVvZ3JhcGhpY3NlbGZwYXJlbj0xMjg2NjtlLmlkZW9ncmFwaGljc29jaWV0eXBhcmVuPTEyODUxO2UuaWRlb2dyYXBoaWNzcGFjZT0xMjI4ODtlLmlkZW9ncmFwaGljc3BlY2lhbHBhcmVuPTEyODUzO2UuaWRlb2dyYXBoaWNzdG9ja3BhcmVuPTEyODQ5O2UuaWRlb2dyYXBoaWNzdHVkeXBhcmVuPTEyODU5O2UuaWRlb2dyYXBoaWNzdW5wYXJlbj0xMjg0ODtlLmlkZW9ncmFwaGljc3VwZXJ2aXNlcGFyZW49MTI4NjA7ZS5pZGVvZ3JhcGhpY3dhdGVycGFyZW49MTI4NDQ7ZS5pZGVvZ3JhcGhpY3dvb2RwYXJlbj0xMjg0NTtlLmlkZW9ncmFwaGljemVybz0xMjI5NTtlLmlkZW9ncmFwaG1ldGFsY2lyY2xlPTEyOTQyO2UuaWRlb2dyYXBobW9vbmNpcmNsZT0xMjkzODtlLmlkZW9ncmFwaG5hbWVjaXJjbGU9MTI5NDg7ZS5pZGVvZ3JhcGhzdW5jaXJjbGU9MTI5NDQ7ZS5pZGVvZ3JhcGh3YXRlcmNpcmNsZT0xMjk0MDtlLmlkZW9ncmFwaHdvb2RjaXJjbGU9MTI5NDE7ZS5pZGV2YT0yMzExO2UuaWRpZXJlc2lzPTIzOTtlLmlkaWVyZXNpc2FjdXRlPTc3Mjc7ZS5pZGllcmVzaXNjeXJpbGxpYz0xMjUzO2UuaWRvdGJlbG93PTc4ODM7ZS5pZWJyZXZlY3lyaWxsaWM9MTIzOTtlLmllY3lyaWxsaWM9MTA3NztlLmlldW5nYWNpcmNsZWtvcmVhbj0xMjkxNztlLmlldW5nYXBhcmVua29yZWFuPTEyODIxO2UuaWV1bmdjaXJjbGVrb3JlYW49MTI5MDM7ZS5pZXVuZ2tvcmVhbj0xMjYxNTtlLmlldW5ncGFyZW5rb3JlYW49MTI4MDc7ZS5pZ3JhdmU9MjM2O2UuaWd1amFyYXRpPTI2OTU7ZS5pZ3VybXVraGk9MjU2NztlLmloaXJhZ2FuYT0xMjM1NjtlLmlob29rYWJvdmU9Nzg4MTtlLmlpYmVuZ2FsaT0yNDQwO2UuaWljeXJpbGxpYz0xMDgwO2UuaWlkZXZhPTIzMTI7ZS5paWd1amFyYXRpPTI2OTY7ZS5paWd1cm11a2hpPTI1Njg7ZS5paW1hdHJhZ3VybXVraGk9MjYyNDtlLmlpbnZlcnRlZGJyZXZlPTUyMztlLmlpc2hvcnRjeXJpbGxpYz0xMDgxO2UuaWl2b3dlbHNpZ25iZW5nYWxpPTI0OTY7ZS5paXZvd2Vsc2lnbmRldmE9MjM2ODtlLmlpdm93ZWxzaWduZ3VqYXJhdGk9Mjc1MjtlLmlqPTMwNztlLmlrYXRha2FuYT0xMjQ1MjtlLmlrYXRha2FuYWhhbGZ3aWR0aD02NTM5NDtlLmlrb3JlYW49MTI2NDM7ZS5pbGRlPTczMjtlLmlsdXloZWJyZXc9MTQ1MjtlLmltYWNyb249Mjk5O2UuaW1hY3JvbmN5cmlsbGljPTEyNTE7ZS5pbWFnZW9yYXBwcm94aW1hdGVseWVxdWFsPTg3ODc7ZS5pbWF0cmFndXJtdWtoaT0yNjIzO2UuaW1vbm9zcGFjZT02NTM1MztlLmluY3JlbWVudD04NzEwO2UuaW5maW5pdHk9ODczNDtlLmluaWFybWVuaWFuPTEzODc7ZS5pbnRlZ3JhbD04NzQ3O2UuaW50ZWdyYWxib3R0b209ODk5MztlLmludGVncmFsYnQ9ODk5MztlLmludGVncmFsZXg9NjM3MzM7ZS5pbnRlZ3JhbHRvcD04OTkyO2UuaW50ZWdyYWx0cD04OTkyO2UuaW50ZXJzZWN0aW9uPTg3NDU7ZS5pbnRpc3F1YXJlPTEzMDYxO2UuaW52YnVsbGV0PTk2ODg7ZS5pbnZjaXJjbGU9OTY4OTtlLmludnNtaWxlZmFjZT05Nzg3O2UuaW9jeXJpbGxpYz0xMTA1O2UuaW9nb25laz0zMDM7ZS5pb3RhPTk1MztlLmlvdGFkaWVyZXNpcz05NzA7ZS5pb3RhZGllcmVzaXN0b25vcz05MTI7ZS5pb3RhbGF0aW49NjE3O2UuaW90YXRvbm9zPTk0MztlLmlwYXJlbj05MzgwO2UuaXJpZ3VybXVraGk9MjY3NDtlLmlzbWFsbGhpcmFnYW5hPTEyMzU1O2UuaXNtYWxsa2F0YWthbmE9MTI0NTE7ZS5pc21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4NDtlLmlzc2hhcmJlbmdhbGk9MjU1NDtlLmlzdHJva2U9NjE2O2UuaXN1cGVyaW9yPTYzMjEzO2UuaXRlcmF0aW9uaGlyYWdhbmE9MTI0NDU7ZS5pdGVyYXRpb25rYXRha2FuYT0xMjU0MTtlLml0aWxkZT0yOTc7ZS5pdGlsZGViZWxvdz03NzI1O2UuaXVib3BvbW9mbz0xMjU4NTtlLml1Y3lyaWxsaWM9MTEwMjtlLml2b3dlbHNpZ25iZW5nYWxpPTI0OTU7ZS5pdm93ZWxzaWduZGV2YT0yMzY3O2UuaXZvd2Vsc2lnbmd1amFyYXRpPTI3NTE7ZS5pemhpdHNhY3lyaWxsaWM9MTE0MTtlLml6aGl0c2FkYmxncmF2ZWN5cmlsbGljPTExNDM7ZS5qPTEwNjtlLmphYXJtZW5pYW49MTM5MztlLmphYmVuZ2FsaT0yNDYwO2UuamFkZXZhPTIzMzI7ZS5qYWd1amFyYXRpPTI3MTY7ZS5qYWd1cm11a2hpPTI1ODg7ZS5qYm9wb21vZm89MTI1NjA7ZS5qY2Fyb249NDk2O2UuamNpcmNsZT05NDMzO2UuamNpcmN1bWZsZXg9MzA5O2UuamNyb3NzZWR0YWlsPTY2OTtlLmpkb3RsZXNzc3Ryb2tlPTYwNztlLmplY3lyaWxsaWM9MTExMjtlLmplZW1hcmFiaWM9MTU4MDtlLmplZW1maW5hbGFyYWJpYz02NTE4MjtlLmplZW1pbml0aWFsYXJhYmljPTY1MTgzO2UuamVlbW1lZGlhbGFyYWJpYz02NTE4NDtlLmplaGFyYWJpYz0xNjg4O2UuamVoZmluYWxhcmFiaWM9NjQzOTU7ZS5qaGFiZW5nYWxpPTI0NjE7ZS5qaGFkZXZhPTIzMzM7ZS5qaGFndWphcmF0aT0yNzE3O2UuamhhZ3VybXVraGk9MjU4OTtlLmpoZWhhcm1lbmlhbj0xNDAzO2UuamlzPTEyMjkyO2Uuam1vbm9zcGFjZT02NTM1NDtlLmpwYXJlbj05MzgxO2UuanN1cGVyaW9yPTY5MDtlLms9MTA3O2Uua2FiYXNoa2lyY3lyaWxsaWM9MTE4NTtlLmthYmVuZ2FsaT0yNDUzO2Uua2FjdXRlPTc3Mjk7ZS5rYWN5cmlsbGljPTEwODI7ZS5rYWRlc2NlbmRlcmN5cmlsbGljPTExNzk7ZS5rYWRldmE9MjMyNTtlLmthZj0xNDk5O2Uua2FmYXJhYmljPTE2MDM7ZS5rYWZkYWdlc2g9NjQzMTU7ZS5rYWZkYWdlc2hoZWJyZXc9NjQzMTU7ZS5rYWZmaW5hbGFyYWJpYz02NTI0MjtlLmthZmhlYnJldz0xNDk5O2Uua2FmaW5pdGlhbGFyYWJpYz02NTI0MztlLmthZm1lZGlhbGFyYWJpYz02NTI0NDtlLmthZnJhZmVoZWJyZXc9NjQzMzM7ZS5rYWd1amFyYXRpPTI3MDk7ZS5rYWd1cm11a2hpPTI1ODE7ZS5rYWhpcmFnYW5hPTEyMzYzO2Uua2Fob29rY3lyaWxsaWM9MTIyMDtlLmtha2F0YWthbmE9MTI0NTk7ZS5rYWthdGFrYW5haGFsZndpZHRoPTY1Mzk4O2Uua2FwcGE9OTU0O2Uua2FwcGFzeW1ib2xncmVlaz0xMDA4O2Uua2FweWVvdW5taWV1bWtvcmVhbj0xMjY1NztlLmthcHllb3VucGhpZXVwaGtvcmVhbj0xMjY3NjtlLmthcHllb3VucGlldXBrb3JlYW49MTI2NjQ7ZS5rYXB5ZW91bnNzYW5ncGlldXBrb3JlYW49MTI2NjU7ZS5rYXJvcmlpc3F1YXJlPTEzMDY5O2Uua2FzaGlkYWF1dG9hcmFiaWM9MTYwMDtlLmthc2hpZGFhdXRvbm9zaWRlYmVhcmluZ2FyYWJpYz0xNjAwO2Uua2FzbWFsbGthdGFrYW5hPTEyNTMzO2Uua2FzcXVhcmU9MTMxODg7ZS5rYXNyYWFyYWJpYz0xNjE2O2Uua2FzcmF0YW5hcmFiaWM9MTYxMztlLmthc3Ryb2tlY3lyaWxsaWM9MTE4MztlLmthdGFoaXJhcHJvbG9uZ21hcmtoYWxmd2lkdGg9NjUzOTI7ZS5rYXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTE4MTtlLmtib3BvbW9mbz0xMjU1ODtlLmtjYWxzcXVhcmU9MTMxOTM7ZS5rY2Fyb249NDg5O2Uua2NlZGlsbGE9MzExO2Uua2NpcmNsZT05NDM0O2Uua2NvbW1hYWNjZW50PTMxMTtlLmtkb3RiZWxvdz03NzMxO2Uua2VoYXJtZW5pYW49MTQxMjtlLmtlaGlyYWdhbmE9MTIzNjk7ZS5rZWthdGFrYW5hPTEyNDY1O2Uua2VrYXRha2FuYWhhbGZ3aWR0aD02NTQwMTtlLmtlbmFybWVuaWFuPTEzOTE7ZS5rZXNtYWxsa2F0YWthbmE9MTI1MzQ7ZS5rZ3JlZW5sYW5kaWM9MzEyO2Uua2hhYmVuZ2FsaT0yNDU0O2Uua2hhY3lyaWxsaWM9MTA5MztlLmtoYWRldmE9MjMyNjtlLmtoYWd1amFyYXRpPTI3MTA7ZS5raGFndXJtdWtoaT0yNTgyO2Uua2hhaGFyYWJpYz0xNTgyO2Uua2hhaGZpbmFsYXJhYmljPTY1MTkwO2Uua2hhaGluaXRpYWxhcmFiaWM9NjUxOTE7ZS5raGFobWVkaWFsYXJhYmljPTY1MTkyO2Uua2hlaWNvcHRpYz05OTk7ZS5raGhhZGV2YT0yMzkzO2Uua2hoYWd1cm11a2hpPTI2NDk7ZS5raGlldWtoYWNpcmNsZWtvcmVhbj0xMjkyMDtlLmtoaWV1a2hhcGFyZW5rb3JlYW49MTI4MjQ7ZS5raGlldWtoY2lyY2xla29yZWFuPTEyOTA2O2Uua2hpZXVraGtvcmVhbj0xMjYxOTtlLmtoaWV1a2hwYXJlbmtvcmVhbj0xMjgxMDtlLmtob2toYWl0aGFpPTM1ODY7ZS5raG9raG9udGhhaT0zNTg5O2Uua2hva2h1YXR0aGFpPTM1ODc7ZS5raG9raHdhaXRoYWk9MzU4ODtlLmtob211dHRoYWk9MzY3NTtlLmtob29rPTQwOTtlLmtob3Jha2hhbmd0aGFpPTM1OTA7ZS5raHpzcXVhcmU9MTMyMDE7ZS5raWhpcmFnYW5hPTEyMzY1O2Uua2lrYXRha2FuYT0xMjQ2MTtlLmtpa2F0YWthbmFoYWxmd2lkdGg9NjUzOTk7ZS5raXJvZ3VyYW11c3F1YXJlPTEzMDc3O2Uua2lyb21lZXRvcnVzcXVhcmU9MTMwNzg7ZS5raXJvc3F1YXJlPTEzMDc2O2Uua2l5ZW9rYWNpcmNsZWtvcmVhbj0xMjkxMDtlLmtpeWVva2FwYXJlbmtvcmVhbj0xMjgxNDtlLmtpeWVva2NpcmNsZWtvcmVhbj0xMjg5NjtlLmtpeWVva2tvcmVhbj0xMjU5MztlLmtpeWVva3BhcmVua29yZWFuPTEyODAwO2Uua2l5ZW9rc2lvc2tvcmVhbj0xMjU5NTtlLmtqZWN5cmlsbGljPTExMTY7ZS5rbGluZWJlbG93PTc3MzM7ZS5rbHNxdWFyZT0xMzIwODtlLmttY3ViZWRzcXVhcmU9MTMyMjI7ZS5rbW9ub3NwYWNlPTY1MzU1O2Uua21zcXVhcmVkc3F1YXJlPTEzMjE4O2Uua29oaXJhZ2FuYT0xMjM3MTtlLmtvaG1zcXVhcmU9MTMyNDg7ZS5rb2thaXRoYWk9MzU4NTtlLmtva2F0YWthbmE9MTI0Njc7ZS5rb2thdGFrYW5haGFsZndpZHRoPTY1NDAyO2Uua29vcG9zcXVhcmU9MTMwODY7ZS5rb3BwYWN5cmlsbGljPTExNTM7ZS5rb3JlYW5zdGFuZGFyZHN5bWJvbD0xMjkyNztlLmtvcm9uaXNjbWI9ODM1O2Uua3BhcmVuPTkzODI7ZS5rcGFzcXVhcmU9MTMyMjY7ZS5rc2ljeXJpbGxpYz0xMTM1O2Uua3RzcXVhcmU9MTMyNjM7ZS5rdHVybmVkPTY3MDtlLmt1aGlyYWdhbmE9MTIzNjc7ZS5rdWthdGFrYW5hPTEyNDYzO2Uua3VrYXRha2FuYWhhbGZ3aWR0aD02NTQwMDtlLmt2c3F1YXJlPTEzMjQwO2Uua3dzcXVhcmU9MTMyNDY7ZS5sPTEwODtlLmxhYmVuZ2FsaT0yNDgyO2UubGFjdXRlPTMxNDtlLmxhZGV2YT0yMzU0O2UubGFndWphcmF0aT0yNzM4O2UubGFndXJtdWtoaT0yNjEwO2UubGFra2hhbmd5YW90aGFpPTM2NTM7ZS5sYW1hbGVmZmluYWxhcmFiaWM9NjUyNzY7ZS5sYW1hbGVmaGFtemFhYm92ZWZpbmFsYXJhYmljPTY1MjcyO2UubGFtYWxlZmhhbXphYWJvdmVpc29sYXRlZGFyYWJpYz02NTI3MTtlLmxhbWFsZWZoYW16YWJlbG93ZmluYWxhcmFiaWM9NjUyNzQ7ZS5sYW1hbGVmaGFtemFiZWxvd2lzb2xhdGVkYXJhYmljPTY1MjczO2UubGFtYWxlZmlzb2xhdGVkYXJhYmljPTY1Mjc1O2UubGFtYWxlZm1hZGRhYWJvdmVmaW5hbGFyYWJpYz02NTI3MDtlLmxhbWFsZWZtYWRkYWFib3ZlaXNvbGF0ZWRhcmFiaWM9NjUyNjk7ZS5sYW1hcmFiaWM9MTYwNDtlLmxhbWJkYT05NTU7ZS5sYW1iZGFzdHJva2U9NDExO2UubGFtZWQ9MTUwMDtlLmxhbWVkZGFnZXNoPTY0MzE2O2UubGFtZWRkYWdlc2hoZWJyZXc9NjQzMTY7ZS5sYW1lZGhlYnJldz0xNTAwO2UubGFtZmluYWxhcmFiaWM9NjUyNDY7ZS5sYW1oYWhpbml0aWFsYXJhYmljPTY0NzE0O2UubGFtaW5pdGlhbGFyYWJpYz02NTI0NztlLmxhbWplZW1pbml0aWFsYXJhYmljPTY0NzEzO2UubGFta2hhaGluaXRpYWxhcmFiaWM9NjQ3MTU7ZS5sYW1sYW1oZWhpc29sYXRlZGFyYWJpYz02NTAxMDtlLmxhbW1lZGlhbGFyYWJpYz02NTI0ODtlLmxhbW1lZW1oYWhpbml0aWFsYXJhYmljPTY0OTA0O2UubGFtbWVlbWluaXRpYWxhcmFiaWM9NjQ3MTY7ZS5sYXJnZWNpcmNsZT05NzExO2UubGJhcj00MTA7ZS5sYmVsdD02MjA7ZS5sYm9wb21vZm89MTI1NTY7ZS5sY2Fyb249MzE4O2UubGNlZGlsbGE9MzE2O2UubGNpcmNsZT05NDM1O2UubGNpcmN1bWZsZXhiZWxvdz03NzQxO2UubGNvbW1hYWNjZW50PTMxNjtlLmxkb3Q9MzIwO2UubGRvdGFjY2VudD0zMjA7ZS5sZG90YmVsb3c9NzczNTtlLmxkb3RiZWxvd21hY3Jvbj03NzM3O2UubGVmdGFuZ2xlYWJvdmVjbWI9Nzk0O2UubGVmdHRhY2tiZWxvd2NtYj03OTI7ZS5sZXNzPTYwO2UubGVzc2VxdWFsPTg4MDQ7ZS5sZXNzZXF1YWxvcmdyZWF0ZXI9ODkyMjtlLmxlc3Ntb25vc3BhY2U9NjUzMDg7ZS5sZXNzb3JlcXVpdmFsZW50PTg4MTg7ZS5sZXNzb3JncmVhdGVyPTg4MjI7ZS5sZXNzb3ZlcmVxdWFsPTg4MDY7ZS5sZXNzc21hbGw9NjUxMjQ7ZS5sZXpoPTYyMjtlLmxmYmxvY2s9OTYxMjtlLmxob29rcmV0cm9mbGV4PTYyMTtlLmxpcmE9ODM1NjtlLmxpd25hcm1lbmlhbj0xMzg4O2UubGo9NDU3O2UubGplY3lyaWxsaWM9MTExMztlLmxsPTYzMTY4O2UubGxhZGV2YT0yMzU1O2UubGxhZ3VqYXJhdGk9MjczOTtlLmxsaW5lYmVsb3c9NzczOTtlLmxsbGFkZXZhPTIzNTY7ZS5sbHZvY2FsaWNiZW5nYWxpPTI1Mjk7ZS5sbHZvY2FsaWNkZXZhPTI0MDE7ZS5sbHZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpPTI1MzE7ZS5sbHZvY2FsaWN2b3dlbHNpZ25kZXZhPTI0MDM7ZS5sbWlkZGxldGlsZGU9NjE5O2UubG1vbm9zcGFjZT02NTM1NjtlLmxtc3F1YXJlPTEzMjY0O2UubG9jaHVsYXRoYWk9MzYyODtlLmxvZ2ljYWxhbmQ9ODc0MztlLmxvZ2ljYWxub3Q9MTcyO2UubG9naWNhbG5vdHJldmVyc2VkPTg5NzY7ZS5sb2dpY2Fsb3I9ODc0NDtlLmxvbGluZ3RoYWk9MzYyMTtlLmxvbmdzPTM4MztlLmxvd2xpbmVjZW50ZXJsaW5lPTY1MTAyO2UubG93bGluZWNtYj04MTg7ZS5sb3dsaW5lZGFzaGVkPTY1MTAxO2UubG96ZW5nZT05Njc0O2UubHBhcmVuPTkzODM7ZS5sc2xhc2g9MzIyO2UubHNxdWFyZT04NDY3O2UubHN1cGVyaW9yPTYzMjE0O2UubHRzaGFkZT05NjE3O2UubHV0aGFpPTM2MjI7ZS5sdm9jYWxpY2JlbmdhbGk9MjQ0NDtlLmx2b2NhbGljZGV2YT0yMzE2O2UubHZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpPTI1MzA7ZS5sdm9jYWxpY3Zvd2Vsc2lnbmRldmE9MjQwMjtlLmx4c3F1YXJlPTEzMjY3O2UubT0xMDk7ZS5tYWJlbmdhbGk9MjQ3ODtlLm1hY3Jvbj0xNzU7ZS5tYWNyb25iZWxvd2NtYj04MTc7ZS5tYWNyb25jbWI9NzcyO2UubWFjcm9ubG93bW9kPTcxNztlLm1hY3Jvbm1vbm9zcGFjZT02NTUwNztlLm1hY3V0ZT03NzQzO2UubWFkZXZhPTIzNTA7ZS5tYWd1amFyYXRpPTI3MzQ7ZS5tYWd1cm11a2hpPTI2MDY7ZS5tYWhhcGFraGhlYnJldz0xNDQ0O2UubWFoYXBha2hsZWZ0aGVicmV3PTE0NDQ7ZS5tYWhpcmFnYW5hPTEyNDE0O2UubWFpY2hhdHRhd2Fsb3dsZWZ0dGhhaT02MzYzNztlLm1haWNoYXR0YXdhbG93cmlnaHR0aGFpPTYzNjM2O2UubWFpY2hhdHRhd2F0aGFpPTM2NTk7ZS5tYWljaGF0dGF3YXVwcGVybGVmdHRoYWk9NjM2MzU7ZS5tYWlla2xvd2xlZnR0aGFpPTYzNjI4O2UubWFpZWtsb3dyaWdodHRoYWk9NjM2Mjc7ZS5tYWlla3RoYWk9MzY1NjtlLm1haWVrdXBwZXJsZWZ0dGhhaT02MzYyNjtlLm1haWhhbmFrYXRsZWZ0dGhhaT02MzYyMDtlLm1haWhhbmFrYXR0aGFpPTM2MzM7ZS5tYWl0YWlraHVsZWZ0dGhhaT02MzYyNTtlLm1haXRhaWtodXRoYWk9MzY1NTtlLm1haXRob2xvd2xlZnR0aGFpPTYzNjMxO2UubWFpdGhvbG93cmlnaHR0aGFpPTYzNjMwO2UubWFpdGhvdGhhaT0zNjU3O2UubWFpdGhvdXBwZXJsZWZ0dGhhaT02MzYyOTtlLm1haXRyaWxvd2xlZnR0aGFpPTYzNjM0O2UubWFpdHJpbG93cmlnaHR0aGFpPTYzNjMzO2UubWFpdHJpdGhhaT0zNjU4O2UubWFpdHJpdXBwZXJsZWZ0dGhhaT02MzYzMjtlLm1haXlhbW9rdGhhaT0zNjU0O2UubWFrYXRha2FuYT0xMjUxMDtlLm1ha2F0YWthbmFoYWxmd2lkdGg9NjU0MjM7ZS5tYWxlPTk3OTQ7ZS5tYW5zeW9uc3F1YXJlPTEzMTI3O2UubWFxYWZoZWJyZXc9MTQ3MDtlLm1hcnM9OTc5NDtlLm1hc29yYWNpcmNsZWhlYnJldz0xNDU1O2UubWFzcXVhcmU9MTMxODc7ZS5tYm9wb21vZm89MTI1NTE7ZS5tYnNxdWFyZT0xMzI2ODtlLm1jaXJjbGU9OTQzNjtlLm1jdWJlZHNxdWFyZT0xMzIyMTtlLm1kb3RhY2NlbnQ9Nzc0NTtlLm1kb3RiZWxvdz03NzQ3O2UubWVlbWFyYWJpYz0xNjA1O2UubWVlbWZpbmFsYXJhYmljPTY1MjUwO2UubWVlbWluaXRpYWxhcmFiaWM9NjUyNTE7ZS5tZWVtbWVkaWFsYXJhYmljPTY1MjUyO2UubWVlbW1lZW1pbml0aWFsYXJhYmljPTY0NzIxO2UubWVlbW1lZW1pc29sYXRlZGFyYWJpYz02NDU4NDtlLm1lZXRvcnVzcXVhcmU9MTMxMzM7ZS5tZWhpcmFnYW5hPTEyNDE3O2UubWVpemllcmFzcXVhcmU9MTMxODI7ZS5tZWthdGFrYW5hPTEyNTEzO2UubWVrYXRha2FuYWhhbGZ3aWR0aD02NTQyNjtlLm1lbT0xNTAyO2UubWVtZGFnZXNoPTY0MzE4O2UubWVtZGFnZXNoaGVicmV3PTY0MzE4O2UubWVtaGVicmV3PTE1MDI7ZS5tZW5hcm1lbmlhbj0xMzk2O2UubWVya2hhaGVicmV3PTE0NDU7ZS5tZXJraGFrZWZ1bGFoZWJyZXc9MTQ0NjtlLm1lcmtoYWtlZnVsYWxlZnRoZWJyZXc9MTQ0NjtlLm1lcmtoYWxlZnRoZWJyZXc9MTQ0NTtlLm1ob29rPTYyNTtlLm1oenNxdWFyZT0xMzIwMjtlLm1pZGRsZWRvdGthdGFrYW5haGFsZndpZHRoPTY1MzgxO2UubWlkZG90PTE4MztlLm1pZXVtYWNpcmNsZWtvcmVhbj0xMjkxNDtlLm1pZXVtYXBhcmVua29yZWFuPTEyODE4O2UubWlldW1jaXJjbGVrb3JlYW49MTI5MDA7ZS5taWV1bWtvcmVhbj0xMjYwOTtlLm1pZXVtcGFuc2lvc2tvcmVhbj0xMjY1NjtlLm1pZXVtcGFyZW5rb3JlYW49MTI4MDQ7ZS5taWV1bXBpZXVwa29yZWFuPTEyNjU0O2UubWlldW1zaW9za29yZWFuPTEyNjU1O2UubWloaXJhZ2FuYT0xMjQxNTtlLm1pa2F0YWthbmE9MTI1MTE7ZS5taWthdGFrYW5haGFsZndpZHRoPTY1NDI0O2UubWludXM9ODcyMjtlLm1pbnVzYmVsb3djbWI9ODAwO2UubWludXNjaXJjbGU9ODg1NDtlLm1pbnVzbW9kPTcyNztlLm1pbnVzcGx1cz04NzIzO2UubWludXRlPTgyNDI7ZS5taXJpYmFhcnVzcXVhcmU9MTMxMzA7ZS5taXJpc3F1YXJlPTEzMTI5O2UubWxvbmdsZWd0dXJuZWQ9NjI0O2UubWxzcXVhcmU9MTMyMDY7ZS5tbWN1YmVkc3F1YXJlPTEzMjE5O2UubW1vbm9zcGFjZT02NTM1NztlLm1tc3F1YXJlZHNxdWFyZT0xMzIxNTtlLm1vaGlyYWdhbmE9MTI0MTg7ZS5tb2htc3F1YXJlPTEzMjQ5O2UubW9rYXRha2FuYT0xMjUxNDtlLm1va2F0YWthbmFoYWxmd2lkdGg9NjU0Mjc7ZS5tb2xzcXVhcmU9MTMyNzA7ZS5tb21hdGhhaT0zNjE3O2UubW92ZXJzc3F1YXJlPTEzMjIzO2UubW92ZXJzc3F1YXJlZHNxdWFyZT0xMzIyNDtlLm1wYXJlbj05Mzg0O2UubXBhc3F1YXJlPTEzMjI3O2UubXNzcXVhcmU9MTMyMzU7ZS5tc3VwZXJpb3I9NjMyMTU7ZS5tdHVybmVkPTYyMztlLm11PTE4MTtlLm11MT0xODE7ZS5tdWFzcXVhcmU9MTMxODY7ZS5tdWNoZ3JlYXRlcj04ODExO2UubXVjaGxlc3M9ODgxMDtlLm11ZnNxdWFyZT0xMzE5NjtlLm11Z3JlZWs9OTU2O2UubXVnc3F1YXJlPTEzMTk3O2UubXVoaXJhZ2FuYT0xMjQxNjtlLm11a2F0YWthbmE9MTI1MTI7ZS5tdWthdGFrYW5haGFsZndpZHRoPTY1NDI1O2UubXVsc3F1YXJlPTEzMjA1O2UubXVsdGlwbHk9MjE1O2UubXVtc3F1YXJlPTEzMjExO2UubXVuYWhoZWJyZXc9MTQ0MztlLm11bmFobGVmdGhlYnJldz0xNDQzO2UubXVzaWNhbG5vdGU9OTgzNDtlLm11c2ljYWxub3RlZGJsPTk4MzU7ZS5tdXNpY2ZsYXRzaWduPTk4Mzc7ZS5tdXNpY3NoYXJwc2lnbj05ODM5O2UubXVzc3F1YXJlPTEzMjM0O2UubXV2c3F1YXJlPTEzMjM4O2UubXV3c3F1YXJlPTEzMjQ0O2UubXZtZWdhc3F1YXJlPTEzMjQxO2UubXZzcXVhcmU9MTMyMzk7ZS5td21lZ2FzcXVhcmU9MTMyNDc7ZS5td3NxdWFyZT0xMzI0NTtlLm49MTEwO2UubmFiZW5nYWxpPTI0NzI7ZS5uYWJsYT04NzExO2UubmFjdXRlPTMyNDtlLm5hZGV2YT0yMzQ0O2UubmFndWphcmF0aT0yNzI4O2UubmFndXJtdWtoaT0yNjAwO2UubmFoaXJhZ2FuYT0xMjM5NDtlLm5ha2F0YWthbmE9MTI0OTA7ZS5uYWthdGFrYW5haGFsZndpZHRoPTY1NDEzO2UubmFwb3N0cm9waGU9MzI5O2UubmFzcXVhcmU9MTMxODU7ZS5uYm9wb21vZm89MTI1NTU7ZS5uYnNwYWNlPTE2MDtlLm5jYXJvbj0zMjg7ZS5uY2VkaWxsYT0zMjY7ZS5uY2lyY2xlPTk0Mzc7ZS5uY2lyY3VtZmxleGJlbG93PTc3NTU7ZS5uY29tbWFhY2NlbnQ9MzI2O2UubmRvdGFjY2VudD03NzQ5O2UubmRvdGJlbG93PTc3NTE7ZS5uZWhpcmFnYW5hPTEyMzk3O2UubmVrYXRha2FuYT0xMjQ5MztlLm5la2F0YWthbmFoYWxmd2lkdGg9NjU0MTY7ZS5uZXdzaGVxZWxzaWduPTgzNjI7ZS5uZnNxdWFyZT0xMzE5NTtlLm5nYWJlbmdhbGk9MjQ1NztlLm5nYWRldmE9MjMyOTtlLm5nYWd1amFyYXRpPTI3MTM7ZS5uZ2FndXJtdWtoaT0yNTg1O2Uubmdvbmd1dGhhaT0zNTkxO2UubmhpcmFnYW5hPTEyNDM1O2Uubmhvb2tsZWZ0PTYyNjtlLm5ob29rcmV0cm9mbGV4PTYyNztlLm5pZXVuYWNpcmNsZWtvcmVhbj0xMjkxMTtlLm5pZXVuYXBhcmVua29yZWFuPTEyODE1O2UubmlldW5jaWV1Y2tvcmVhbj0xMjU5NztlLm5pZXVuY2lyY2xla29yZWFuPTEyODk3O2UubmlldW5oaWV1aGtvcmVhbj0xMjU5ODtlLm5pZXVua29yZWFuPTEyNTk2O2UubmlldW5wYW5zaW9za29yZWFuPTEyNjQ4O2UubmlldW5wYXJlbmtvcmVhbj0xMjgwMTtlLm5pZXVuc2lvc2tvcmVhbj0xMjY0NztlLm5pZXVudGlrZXV0a29yZWFuPTEyNjQ2O2UubmloaXJhZ2FuYT0xMjM5NTtlLm5pa2F0YWthbmE9MTI0OTE7ZS5uaWthdGFrYW5haGFsZndpZHRoPTY1NDE0O2UubmlraGFoaXRsZWZ0dGhhaT02MzY0MTtlLm5pa2hhaGl0dGhhaT0zNjYxO2UubmluZT01NztlLm5pbmVhcmFiaWM9MTY0MTtlLm5pbmViZW5nYWxpPTI1NDM7ZS5uaW5lY2lyY2xlPTkzMjA7ZS5uaW5lY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEzMDtlLm5pbmVkZXZhPTI0MTU7ZS5uaW5lZ3VqYXJhdGk9Mjc5OTtlLm5pbmVndXJtdWtoaT0yNjcxO2UubmluZWhhY2thcmFiaWM9MTY0MTtlLm5pbmVoYW5nemhvdT0xMjMyOTtlLm5pbmVpZGVvZ3JhcGhpY3BhcmVuPTEyODQwO2UubmluZWluZmVyaW9yPTgzMjk7ZS5uaW5lbW9ub3NwYWNlPTY1MzA1O2UubmluZW9sZHN0eWxlPTYzMjg5O2UubmluZXBhcmVuPTkzNDA7ZS5uaW5lcGVyaW9kPTkzNjA7ZS5uaW5lcGVyc2lhbj0xNzg1O2UubmluZXJvbWFuPTg1Njg7ZS5uaW5lc3VwZXJpb3I9ODMxMztlLm5pbmV0ZWVuY2lyY2xlPTkzMzA7ZS5uaW5ldGVlbnBhcmVuPTkzNTA7ZS5uaW5ldGVlbnBlcmlvZD05MzcwO2UubmluZXRoYWk9MzY3MztlLm5qPTQ2MDtlLm5qZWN5cmlsbGljPTExMTQ7ZS5ua2F0YWthbmE9MTI1MzE7ZS5ua2F0YWthbmFoYWxmd2lkdGg9NjU0Mzc7ZS5ubGVncmlnaHRsb25nPTQxNDtlLm5saW5lYmVsb3c9Nzc1MztlLm5tb25vc3BhY2U9NjUzNTg7ZS5ubXNxdWFyZT0xMzIxMDtlLm5uYWJlbmdhbGk9MjQ2NztlLm5uYWRldmE9MjMzOTtlLm5uYWd1amFyYXRpPTI3MjM7ZS5ubmFndXJtdWtoaT0yNTk1O2Uubm5uYWRldmE9MjM0NTtlLm5vaGlyYWdhbmE9MTIzOTg7ZS5ub2thdGFrYW5hPTEyNDk0O2Uubm9rYXRha2FuYWhhbGZ3aWR0aD02NTQxNztlLm5vbmJyZWFraW5nc3BhY2U9MTYwO2Uubm9uZW50aGFpPTM2MDM7ZS5ub251dGhhaT0zNjA5O2Uubm9vbmFyYWJpYz0xNjA2O2Uubm9vbmZpbmFsYXJhYmljPTY1MjU0O2Uubm9vbmdodW5uYWFyYWJpYz0xNzIyO2Uubm9vbmdodW5uYWZpbmFsYXJhYmljPTY0NDE1O2Uubm9vbmluaXRpYWxhcmFiaWM9NjUyNTU7ZS5ub29uamVlbWluaXRpYWxhcmFiaWM9NjQ3MjI7ZS5ub29uamVlbWlzb2xhdGVkYXJhYmljPTY0NTg3O2Uubm9vbm1lZGlhbGFyYWJpYz02NTI1NjtlLm5vb25tZWVtaW5pdGlhbGFyYWJpYz02NDcyNTtlLm5vb25tZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1OTA7ZS5ub29ubm9vbmZpbmFsYXJhYmljPTY0NjUzO2Uubm90Y29udGFpbnM9ODcxNjtlLm5vdGVsZW1lbnQ9ODcxMztlLm5vdGVsZW1lbnRvZj04NzEzO2Uubm90ZXF1YWw9ODgwMDtlLm5vdGdyZWF0ZXI9ODgxNTtlLm5vdGdyZWF0ZXJub3JlcXVhbD04ODE3O2Uubm90Z3JlYXRlcm5vcmxlc3M9ODgyNTtlLm5vdGlkZW50aWNhbD04ODAyO2Uubm90bGVzcz04ODE0O2Uubm90bGVzc25vcmVxdWFsPTg4MTY7ZS5ub3RwYXJhbGxlbD04NzQyO2Uubm90cHJlY2VkZXM9ODgzMjtlLm5vdHN1YnNldD04ODM2O2Uubm90c3VjY2VlZHM9ODgzMztlLm5vdHN1cGVyc2V0PTg4Mzc7ZS5ub3dhcm1lbmlhbj0xMzk4O2UubnBhcmVuPTkzODU7ZS5uc3NxdWFyZT0xMzIzMztlLm5zdXBlcmlvcj04MzE5O2UubnRpbGRlPTI0MTtlLm51PTk1NztlLm51aGlyYWdhbmE9MTIzOTY7ZS5udWthdGFrYW5hPTEyNDkyO2UubnVrYXRha2FuYWhhbGZ3aWR0aD02NTQxNTtlLm51a3RhYmVuZ2FsaT0yNDkyO2UubnVrdGFkZXZhPTIzNjQ7ZS5udWt0YWd1amFyYXRpPTI3NDg7ZS5udWt0YWd1cm11a2hpPTI2MjA7ZS5udW1iZXJzaWduPTM1O2UubnVtYmVyc2lnbm1vbm9zcGFjZT02NTI4MztlLm51bWJlcnNpZ25zbWFsbD02NTExOTtlLm51bWVyYWxzaWduZ3JlZWs9ODg0O2UubnVtZXJhbHNpZ25sb3dlcmdyZWVrPTg4NTtlLm51bWVybz04NDcwO2UubnVuPTE1MDQ7ZS5udW5kYWdlc2g9NjQzMjA7ZS5udW5kYWdlc2hoZWJyZXc9NjQzMjA7ZS5udW5oZWJyZXc9MTUwNDtlLm52c3F1YXJlPTEzMjM3O2UubndzcXVhcmU9MTMyNDM7ZS5ueWFiZW5nYWxpPTI0NjI7ZS5ueWFkZXZhPTIzMzQ7ZS5ueWFndWphcmF0aT0yNzE4O2UubnlhZ3VybXVraGk9MjU5MDtlLm89MTExO2Uub2FjdXRlPTI0MztlLm9hbmd0aGFpPTM2Mjk7ZS5vYmFycmVkPTYyOTtlLm9iYXJyZWRjeXJpbGxpYz0xMjU3O2Uub2JhcnJlZGRpZXJlc2lzY3lyaWxsaWM9MTI1OTtlLm9iZW5nYWxpPTI0NTE7ZS5vYm9wb21vZm89MTI1NzE7ZS5vYnJldmU9MzM1O2Uub2NhbmRyYWRldmE9MjMyMTtlLm9jYW5kcmFndWphcmF0aT0yNzA1O2Uub2NhbmRyYXZvd2Vsc2lnbmRldmE9MjM3NztlLm9jYW5kcmF2b3dlbHNpZ25ndWphcmF0aT0yNzYxO2Uub2Nhcm9uPTQ2NjtlLm9jaXJjbGU9OTQzODtlLm9jaXJjdW1mbGV4PTI0NDtlLm9jaXJjdW1mbGV4YWN1dGU9Nzg4OTtlLm9jaXJjdW1mbGV4ZG90YmVsb3c9Nzg5NztlLm9jaXJjdW1mbGV4Z3JhdmU9Nzg5MTtlLm9jaXJjdW1mbGV4aG9va2Fib3ZlPTc4OTM7ZS5vY2lyY3VtZmxleHRpbGRlPTc4OTU7ZS5vY3lyaWxsaWM9MTA4NjtlLm9kYmxhY3V0ZT0zMzc7ZS5vZGJsZ3JhdmU9NTI1O2Uub2RldmE9MjMyMztlLm9kaWVyZXNpcz0yNDY7ZS5vZGllcmVzaXNjeXJpbGxpYz0xMjU1O2Uub2RvdGJlbG93PTc4ODU7ZS5vZT0zMzk7ZS5vZWtvcmVhbj0xMjYzNDtlLm9nb25laz03MzE7ZS5vZ29uZWtjbWI9ODA4O2Uub2dyYXZlPTI0MjtlLm9ndWphcmF0aT0yNzA3O2Uub2hhcm1lbmlhbj0xNDEzO2Uub2hpcmFnYW5hPTEyMzYyO2Uub2hvb2thYm92ZT03ODg3O2Uub2hvcm49NDE3O2Uub2hvcm5hY3V0ZT03ODk5O2Uub2hvcm5kb3RiZWxvdz03OTA3O2Uub2hvcm5ncmF2ZT03OTAxO2Uub2hvcm5ob29rYWJvdmU9NzkwMztlLm9ob3JudGlsZGU9NzkwNTtlLm9odW5nYXJ1bWxhdXQ9MzM3O2Uub2k9NDE5O2Uub2ludmVydGVkYnJldmU9NTI3O2Uub2thdGFrYW5hPTEyNDU4O2Uub2thdGFrYW5haGFsZndpZHRoPTY1Mzk3O2Uub2tvcmVhbj0xMjYzMTtlLm9sZWhlYnJldz0xNDUxO2Uub21hY3Jvbj0zMzM7ZS5vbWFjcm9uYWN1dGU9Nzc2MztlLm9tYWNyb25ncmF2ZT03NzYxO2Uub21kZXZhPTIzODQ7ZS5vbWVnYT05Njk7ZS5vbWVnYTE9OTgyO2Uub21lZ2FjeXJpbGxpYz0xMTIxO2Uub21lZ2FsYXRpbmNsb3NlZD02MzE7ZS5vbWVnYXJvdW5kY3lyaWxsaWM9MTE0NztlLm9tZWdhdGl0bG9jeXJpbGxpYz0xMTQ5O2Uub21lZ2F0b25vcz05NzQ7ZS5vbWd1amFyYXRpPTI3Njg7ZS5vbWljcm9uPTk1OTtlLm9taWNyb250b25vcz05NzI7ZS5vbW9ub3NwYWNlPTY1MzU5O2Uub25lPTQ5O2Uub25lYXJhYmljPTE2MzM7ZS5vbmViZW5nYWxpPTI1MzU7ZS5vbmVjaXJjbGU9OTMxMjtlLm9uZWNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjI7ZS5vbmVkZXZhPTI0MDc7ZS5vbmVkb3RlbmxlYWRlcj04MjI4O2Uub25lZWlnaHRoPTg1Mzk7ZS5vbmVmaXR0ZWQ9NjMxOTY7ZS5vbmVndWphcmF0aT0yNzkxO2Uub25lZ3VybXVraGk9MjY2MztlLm9uZWhhY2thcmFiaWM9MTYzMztlLm9uZWhhbGY9MTg5O2Uub25laGFuZ3pob3U9MTIzMjE7ZS5vbmVpZGVvZ3JhcGhpY3BhcmVuPTEyODMyO2Uub25laW5mZXJpb3I9ODMyMTtlLm9uZW1vbm9zcGFjZT02NTI5NztlLm9uZW51bWVyYXRvcmJlbmdhbGk9MjU0ODtlLm9uZW9sZHN0eWxlPTYzMjgxO2Uub25lcGFyZW49OTMzMjtlLm9uZXBlcmlvZD05MzUyO2Uub25lcGVyc2lhbj0xNzc3O2Uub25lcXVhcnRlcj0xODg7ZS5vbmVyb21hbj04NTYwO2Uub25lc3VwZXJpb3I9MTg1O2Uub25ldGhhaT0zNjY1O2Uub25ldGhpcmQ9ODUzMTtlLm9vZ29uZWs9NDkxO2Uub29nb25la21hY3Jvbj00OTM7ZS5vb2d1cm11a2hpPTI1Nzk7ZS5vb21hdHJhZ3VybXVraGk9MjYzNTtlLm9vcGVuPTU5NjtlLm9wYXJlbj05Mzg2O2Uub3BlbmJ1bGxldD05NzAyO2Uub3B0aW9uPTg5OTc7ZS5vcmRmZW1pbmluZT0xNzA7ZS5vcmRtYXNjdWxpbmU9MTg2O2Uub3J0aG9nb25hbD04NzM1O2Uub3Nob3J0ZGV2YT0yMzIyO2Uub3Nob3J0dm93ZWxzaWduZGV2YT0yMzc4O2Uub3NsYXNoPTI0ODtlLm9zbGFzaGFjdXRlPTUxMTtlLm9zbWFsbGhpcmFnYW5hPTEyMzYxO2Uub3NtYWxsa2F0YWthbmE9MTI0NTc7ZS5vc21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4NztlLm9zdHJva2VhY3V0ZT01MTE7ZS5vc3VwZXJpb3I9NjMyMTY7ZS5vdGN5cmlsbGljPTExNTE7ZS5vdGlsZGU9MjQ1O2Uub3RpbGRlYWN1dGU9Nzc1NztlLm90aWxkZWRpZXJlc2lzPTc3NTk7ZS5vdWJvcG9tb2ZvPTEyNTc3O2Uub3ZlcmxpbmU9ODI1NDtlLm92ZXJsaW5lY2VudGVybGluZT02NTA5ODtlLm92ZXJsaW5lY21iPTc3MztlLm92ZXJsaW5lZGFzaGVkPTY1MDk3O2Uub3ZlcmxpbmVkYmx3YXZ5PTY1MTAwO2Uub3ZlcmxpbmV3YXZ5PTY1MDk5O2Uub3ZlcnNjb3JlPTE3NTtlLm92b3dlbHNpZ25iZW5nYWxpPTI1MDc7ZS5vdm93ZWxzaWduZGV2YT0yMzc5O2Uub3Zvd2Vsc2lnbmd1amFyYXRpPTI3NjM7ZS5wPTExMjtlLnBhYW1wc3NxdWFyZT0xMzE4NDtlLnBhYXNlbnRvc3F1YXJlPTEzMDk5O2UucGFiZW5nYWxpPTI0NzQ7ZS5wYWN1dGU9Nzc2NTtlLnBhZGV2YT0yMzQ2O2UucGFnZWRvd249ODY3MTtlLnBhZ2V1cD04NjcwO2UucGFndWphcmF0aT0yNzMwO2UucGFndXJtdWtoaT0yNjAyO2UucGFoaXJhZ2FuYT0xMjQwMTtlLnBhaXlhbm5vaXRoYWk9MzYzMTtlLnBha2F0YWthbmE9MTI0OTc7ZS5wYWxhdGFsaXphdGlvbmN5cmlsbGljY21iPTExNTY7ZS5wYWxvY2hrYWN5cmlsbGljPTEyMTY7ZS5wYW5zaW9za29yZWFuPTEyNjcxO2UucGFyYWdyYXBoPTE4MjtlLnBhcmFsbGVsPTg3NDE7ZS5wYXJlbmxlZnQ9NDA7ZS5wYXJlbmxlZnRhbHRvbmVhcmFiaWM9NjQ4MzA7ZS5wYXJlbmxlZnRidD02MzcyNTtlLnBhcmVubGVmdGV4PTYzNzI0O2UucGFyZW5sZWZ0aW5mZXJpb3I9ODMzMztlLnBhcmVubGVmdG1vbm9zcGFjZT02NTI4ODtlLnBhcmVubGVmdHNtYWxsPTY1MTEzO2UucGFyZW5sZWZ0c3VwZXJpb3I9ODMxNztlLnBhcmVubGVmdHRwPTYzNzIzO2UucGFyZW5sZWZ0dmVydGljYWw9NjUwNzc7ZS5wYXJlbnJpZ2h0PTQxO2UucGFyZW5yaWdodGFsdG9uZWFyYWJpYz02NDgzMTtlLnBhcmVucmlnaHRidD02MzczNjtlLnBhcmVucmlnaHRleD02MzczNTtlLnBhcmVucmlnaHRpbmZlcmlvcj04MzM0O2UucGFyZW5yaWdodG1vbm9zcGFjZT02NTI4OTtlLnBhcmVucmlnaHRzbWFsbD02NTExNDtlLnBhcmVucmlnaHRzdXBlcmlvcj04MzE4O2UucGFyZW5yaWdodHRwPTYzNzM0O2UucGFyZW5yaWdodHZlcnRpY2FsPTY1MDc4O2UucGFydGlhbGRpZmY9ODcwNjtlLnBhc2VxaGVicmV3PTE0NzI7ZS5wYXNodGFoZWJyZXc9MTQzMztlLnBhc3F1YXJlPTEzMjI1O2UucGF0YWg9MTQ2MztlLnBhdGFoMTE9MTQ2MztlLnBhdGFoMWQ9MTQ2MztlLnBhdGFoMmE9MTQ2MztlLnBhdGFoaGVicmV3PTE0NjM7ZS5wYXRhaG5hcnJvd2hlYnJldz0xNDYzO2UucGF0YWhxdWFydGVyaGVicmV3PTE0NjM7ZS5wYXRhaHdpZGVoZWJyZXc9MTQ2MztlLnBhemVyaGVicmV3PTE0NDE7ZS5wYm9wb21vZm89MTI1NTA7ZS5wY2lyY2xlPTk0Mzk7ZS5wZG90YWNjZW50PTc3Njc7ZS5wZT0xNTA4O2UucGVjeXJpbGxpYz0xMDg3O2UucGVkYWdlc2g9NjQzMjQ7ZS5wZWRhZ2VzaGhlYnJldz02NDMyNDtlLnBlZXppc3F1YXJlPTEzMTE1O2UucGVmaW5hbGRhZ2VzaGhlYnJldz02NDMyMztlLnBlaGFyYWJpYz0xNjYyO2UucGVoYXJtZW5pYW49MTQwMjtlLnBlaGVicmV3PTE1MDg7ZS5wZWhmaW5hbGFyYWJpYz02NDM0MztlLnBlaGluaXRpYWxhcmFiaWM9NjQzNDQ7ZS5wZWhpcmFnYW5hPTEyNDEwO2UucGVobWVkaWFsYXJhYmljPTY0MzQ1O2UucGVrYXRha2FuYT0xMjUwNjtlLnBlbWlkZGxlaG9va2N5cmlsbGljPTExOTE7ZS5wZXJhZmVoZWJyZXc9NjQzMzQ7ZS5wZXJjZW50PTM3O2UucGVyY2VudGFyYWJpYz0xNjQyO2UucGVyY2VudG1vbm9zcGFjZT02NTI4NTtlLnBlcmNlbnRzbWFsbD02NTEzMDtlLnBlcmlvZD00NjtlLnBlcmlvZGFybWVuaWFuPTE0MTc7ZS5wZXJpb2RjZW50ZXJlZD0xODM7ZS5wZXJpb2RoYWxmd2lkdGg9NjUzNzc7ZS5wZXJpb2RpbmZlcmlvcj02MzIwNztlLnBlcmlvZG1vbm9zcGFjZT02NTI5NDtlLnBlcmlvZHNtYWxsPTY1MTA2O2UucGVyaW9kc3VwZXJpb3I9NjMyMDg7ZS5wZXJpc3BvbWVuaWdyZWVrY21iPTgzNDtlLnBlcnBlbmRpY3VsYXI9ODg2OTtlLnBlcnRob3VzYW5kPTgyNDA7ZS5wZXNldGE9ODM1OTtlLnBmc3F1YXJlPTEzMTk0O2UucGhhYmVuZ2FsaT0yNDc1O2UucGhhZGV2YT0yMzQ3O2UucGhhZ3VqYXJhdGk9MjczMTtlLnBoYWd1cm11a2hpPTI2MDM7ZS5waGk9OTY2O2UucGhpMT05ODE7ZS5waGlldXBoYWNpcmNsZWtvcmVhbj0xMjkyMjtlLnBoaWV1cGhhcGFyZW5rb3JlYW49MTI4MjY7ZS5waGlldXBoY2lyY2xla29yZWFuPTEyOTA4O2UucGhpZXVwaGtvcmVhbj0xMjYyMTtlLnBoaWV1cGhwYXJlbmtvcmVhbj0xMjgxMjtlLnBoaWxhdGluPTYzMjtlLnBoaW50aHV0aGFpPTM2NDI7ZS5waGlzeW1ib2xncmVlaz05ODE7ZS5waG9vaz00MjE7ZS5waG9waGFudGhhaT0zNjE0O2UucGhvcGh1bmd0aGFpPTM2MTI7ZS5waG9zYW1waGFvdGhhaT0zNjE2O2UucGk9OTYwO2UucGlldXBhY2lyY2xla29yZWFuPTEyOTE1O2UucGlldXBhcGFyZW5rb3JlYW49MTI4MTk7ZS5waWV1cGNpZXVja29yZWFuPTEyNjYyO2UucGlldXBjaXJjbGVrb3JlYW49MTI5MDE7ZS5waWV1cGtpeWVva2tvcmVhbj0xMjY1ODtlLnBpZXVwa29yZWFuPTEyNjEwO2UucGlldXBwYXJlbmtvcmVhbj0xMjgwNTtlLnBpZXVwc2lvc2tpeWVva2tvcmVhbj0xMjY2MDtlLnBpZXVwc2lvc2tvcmVhbj0xMjYxMjtlLnBpZXVwc2lvc3Rpa2V1dGtvcmVhbj0xMjY2MTtlLnBpZXVwdGhpZXV0aGtvcmVhbj0xMjY2MztlLnBpZXVwdGlrZXV0a29yZWFuPTEyNjU5O2UucGloaXJhZ2FuYT0xMjQwNDtlLnBpa2F0YWthbmE9MTI1MDA7ZS5waXN5bWJvbGdyZWVrPTk4MjtlLnBpd3Jhcm1lbmlhbj0xNDExO2UucGx1cz00MztlLnBsdXNiZWxvd2NtYj03OTk7ZS5wbHVzY2lyY2xlPTg4NTM7ZS5wbHVzbWludXM9MTc3O2UucGx1c21vZD03MjY7ZS5wbHVzbW9ub3NwYWNlPTY1MjkxO2UucGx1c3NtYWxsPTY1MTIyO2UucGx1c3N1cGVyaW9yPTgzMTQ7ZS5wbW9ub3NwYWNlPTY1MzYwO2UucG1zcXVhcmU9MTMyNzI7ZS5wb2hpcmFnYW5hPTEyNDEzO2UucG9pbnRpbmdpbmRleGRvd253aGl0ZT05NzU5O2UucG9pbnRpbmdpbmRleGxlZnR3aGl0ZT05NzU2O2UucG9pbnRpbmdpbmRleHJpZ2h0d2hpdGU9OTc1ODtlLnBvaW50aW5naW5kZXh1cHdoaXRlPTk3NTc7ZS5wb2thdGFrYW5hPTEyNTA5O2UucG9wbGF0aGFpPTM2MTE7ZS5wb3N0YWxtYXJrPTEyMzA2O2UucG9zdGFsbWFya2ZhY2U9MTIzMjA7ZS5wcGFyZW49OTM4NztlLnByZWNlZGVzPTg4MjY7ZS5wcmVzY3JpcHRpb249ODQ3ODtlLnByaW1lbW9kPTY5NztlLnByaW1lcmV2ZXJzZWQ9ODI0NTtlLnByb2R1Y3Q9ODcxOTtlLnByb2plY3RpdmU9ODk2NTtlLnByb2xvbmdlZGthbmE9MTI1NDA7ZS5wcm9wZWxsb3I9ODk4NDtlLnByb3BlcnN1YnNldD04ODM0O2UucHJvcGVyc3VwZXJzZXQ9ODgzNTtlLnByb3BvcnRpb249ODc1OTtlLnByb3BvcnRpb25hbD04NzMzO2UucHNpPTk2ODtlLnBzaWN5cmlsbGljPTExMzc7ZS5wc2lsaXBuZXVtYXRhY3lyaWxsaWNjbWI9MTE1ODtlLnBzc3F1YXJlPTEzMjMyO2UucHVoaXJhZ2FuYT0xMjQwNztlLnB1a2F0YWthbmE9MTI1MDM7ZS5wdnNxdWFyZT0xMzIzNjtlLnB3c3F1YXJlPTEzMjQyO2UucT0xMTM7ZS5xYWRldmE9MjM5MjtlLnFhZG1haGVicmV3PTE0NDg7ZS5xYWZhcmFiaWM9MTYwMjtlLnFhZmZpbmFsYXJhYmljPTY1MjM4O2UucWFmaW5pdGlhbGFyYWJpYz02NTIzOTtlLnFhZm1lZGlhbGFyYWJpYz02NTI0MDtlLnFhbWF0cz0xNDY0O2UucWFtYXRzMTA9MTQ2NDtlLnFhbWF0czFhPTE0NjQ7ZS5xYW1hdHMxYz0xNDY0O2UucWFtYXRzMjc9MTQ2NDtlLnFhbWF0czI5PTE0NjQ7ZS5xYW1hdHMzMz0xNDY0O2UucWFtYXRzZGU9MTQ2NDtlLnFhbWF0c2hlYnJldz0xNDY0O2UucWFtYXRzbmFycm93aGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbmhlYnJldz0xNDY0O2UucWFtYXRzcWF0YW5uYXJyb3doZWJyZXc9MTQ2NDtlLnFhbWF0c3FhdGFucXVhcnRlcmhlYnJldz0xNDY0O2UucWFtYXRzcWF0YW53aWRlaGVicmV3PTE0NjQ7ZS5xYW1hdHNxdWFydGVyaGVicmV3PTE0NjQ7ZS5xYW1hdHN3aWRlaGVicmV3PTE0NjQ7ZS5xYXJuZXlwYXJhaGVicmV3PTE0Mzk7ZS5xYm9wb21vZm89MTI1NjE7ZS5xY2lyY2xlPTk0NDA7ZS5xaG9vaz02NzI7ZS5xbW9ub3NwYWNlPTY1MzYxO2UucW9mPTE1MTE7ZS5xb2ZkYWdlc2g9NjQzMjc7ZS5xb2ZkYWdlc2hoZWJyZXc9NjQzMjc7ZS5xb2ZoZWJyZXc9MTUxMTtlLnFwYXJlbj05Mzg4O2UucXVhcnRlcm5vdGU9OTgzMztlLnF1YnV0cz0xNDY3O2UucXVidXRzMTg9MTQ2NztlLnF1YnV0czI1PTE0Njc7ZS5xdWJ1dHMzMT0xNDY3O2UucXVidXRzaGVicmV3PTE0Njc7ZS5xdWJ1dHNuYXJyb3doZWJyZXc9MTQ2NztlLnF1YnV0c3F1YXJ0ZXJoZWJyZXc9MTQ2NztlLnF1YnV0c3dpZGVoZWJyZXc9MTQ2NztlLnF1ZXN0aW9uPTYzO2UucXVlc3Rpb25hcmFiaWM9MTU2NztlLnF1ZXN0aW9uYXJtZW5pYW49MTM3NDtlLnF1ZXN0aW9uZG93bj0xOTE7ZS5xdWVzdGlvbmRvd25zbWFsbD02MzQyMztlLnF1ZXN0aW9uZ3JlZWs9ODk0O2UucXVlc3Rpb25tb25vc3BhY2U9NjUzMTE7ZS5xdWVzdGlvbnNtYWxsPTYzMjk1O2UucXVvdGVkYmw9MzQ7ZS5xdW90ZWRibGJhc2U9ODIyMjtlLnF1b3RlZGJsbGVmdD04MjIwO2UucXVvdGVkYmxtb25vc3BhY2U9NjUyODI7ZS5xdW90ZWRibHByaW1lPTEyMzE4O2UucXVvdGVkYmxwcmltZXJldmVyc2VkPTEyMzE3O2UucXVvdGVkYmxyaWdodD04MjIxO2UucXVvdGVsZWZ0PTgyMTY7ZS5xdW90ZWxlZnRyZXZlcnNlZD04MjE5O2UucXVvdGVyZXZlcnNlZD04MjE5O2UucXVvdGVyaWdodD04MjE3O2UucXVvdGVyaWdodG49MzI5O2UucXVvdGVzaW5nbGJhc2U9ODIxODtlLnF1b3Rlc2luZ2xlPTM5O2UucXVvdGVzaW5nbGVtb25vc3BhY2U9NjUyODc7ZS5yPTExNDtlLnJhYXJtZW5pYW49MTQwNDtlLnJhYmVuZ2FsaT0yNDgwO2UucmFjdXRlPTM0MTtlLnJhZGV2YT0yMzUyO2UucmFkaWNhbD04NzMwO2UucmFkaWNhbGV4PTYzNzE3O2UucmFkb3ZlcnNzcXVhcmU9MTMyMzA7ZS5yYWRvdmVyc3NxdWFyZWRzcXVhcmU9MTMyMzE7ZS5yYWRzcXVhcmU9MTMyMjk7ZS5yYWZlPTE0NzE7ZS5yYWZlaGVicmV3PTE0NzE7ZS5yYWd1amFyYXRpPTI3MzY7ZS5yYWd1cm11a2hpPTI2MDg7ZS5yYWhpcmFnYW5hPTEyNDI1O2UucmFrYXRha2FuYT0xMjUyMTtlLnJha2F0YWthbmFoYWxmd2lkdGg9NjU0MzE7ZS5yYWxvd2VyZGlhZ29uYWxiZW5nYWxpPTI1NDU7ZS5yYW1pZGRsZWRpYWdvbmFsYmVuZ2FsaT0yNTQ0O2UucmFtc2hvcm49NjEyO2UucmF0aW89ODc1ODtlLnJib3BvbW9mbz0xMjU2NjtlLnJjYXJvbj0zNDU7ZS5yY2VkaWxsYT0zNDM7ZS5yY2lyY2xlPTk0NDE7ZS5yY29tbWFhY2NlbnQ9MzQzO2UucmRibGdyYXZlPTUyOTtlLnJkb3RhY2NlbnQ9Nzc2OTtlLnJkb3RiZWxvdz03NzcxO2UucmRvdGJlbG93bWFjcm9uPTc3NzM7ZS5yZWZlcmVuY2VtYXJrPTgyNTE7ZS5yZWZsZXhzdWJzZXQ9ODgzODtlLnJlZmxleHN1cGVyc2V0PTg4Mzk7ZS5yZWdpc3RlcmVkPTE3NDtlLnJlZ2lzdGVyc2Fucz02MzcyMDtlLnJlZ2lzdGVyc2VyaWY9NjMxOTQ7ZS5yZWhhcmFiaWM9MTU4NTtlLnJlaGFybWVuaWFuPTE0MDg7ZS5yZWhmaW5hbGFyYWJpYz02NTE5ODtlLnJlaGlyYWdhbmE9MTI0Mjg7ZS5yZWthdGFrYW5hPTEyNTI0O2UucmVrYXRha2FuYWhhbGZ3aWR0aD02NTQzNDtlLnJlc2g9MTUxMjtlLnJlc2hkYWdlc2hoZWJyZXc9NjQzMjg7ZS5yZXNoaGVicmV3PTE1MTI7ZS5yZXZlcnNlZHRpbGRlPTg3NjU7ZS5yZXZpYWhlYnJldz0xNDMxO2UucmV2aWFtdWdyYXNoaGVicmV3PTE0MzE7ZS5yZXZsb2dpY2Fsbm90PTg5NzY7ZS5yZmlzaGhvb2s9NjM4O2UucmZpc2hob29rcmV2ZXJzZWQ9NjM5O2UucmhhYmVuZ2FsaT0yNTI1O2UucmhhZGV2YT0yMzk3O2UucmhvPTk2MTtlLnJob29rPTYzNztlLnJob29rdHVybmVkPTYzNTtlLnJob29rdHVybmVkc3VwZXJpb3I9NjkzO2Uucmhvc3ltYm9sZ3JlZWs9MTAwOTtlLnJob3RpY2hvb2ttb2Q9NzM0O2UucmlldWxhY2lyY2xla29yZWFuPTEyOTEzO2UucmlldWxhcGFyZW5rb3JlYW49MTI4MTc7ZS5yaWV1bGNpcmNsZWtvcmVhbj0xMjg5OTtlLnJpZXVsaGlldWhrb3JlYW49MTI2MDg7ZS5yaWV1bGtpeWVva2tvcmVhbj0xMjYwMjtlLnJpZXVsa2l5ZW9rc2lvc2tvcmVhbj0xMjY0OTtlLnJpZXVsa29yZWFuPTEyNjAxO2UucmlldWxtaWV1bWtvcmVhbj0xMjYwMztlLnJpZXVscGFuc2lvc2tvcmVhbj0xMjY1MjtlLnJpZXVscGFyZW5rb3JlYW49MTI4MDM7ZS5yaWV1bHBoaWV1cGhrb3JlYW49MTI2MDc7ZS5yaWV1bHBpZXVwa29yZWFuPTEyNjA0O2UucmlldWxwaWV1cHNpb3Nrb3JlYW49MTI2NTE7ZS5yaWV1bHNpb3Nrb3JlYW49MTI2MDU7ZS5yaWV1bHRoaWV1dGhrb3JlYW49MTI2MDY7ZS5yaWV1bHRpa2V1dGtvcmVhbj0xMjY1MDtlLnJpZXVseWVvcmluaGlldWhrb3JlYW49MTI2NTM7ZS5yaWdodGFuZ2xlPTg3MzU7ZS5yaWdodHRhY2tiZWxvd2NtYj03OTM7ZS5yaWdodHRyaWFuZ2xlPTg4OTU7ZS5yaWhpcmFnYW5hPTEyNDI2O2UucmlrYXRha2FuYT0xMjUyMjtlLnJpa2F0YWthbmFoYWxmd2lkdGg9NjU0MzI7ZS5yaW5nPTczMDtlLnJpbmdiZWxvd2NtYj04MDU7ZS5yaW5nY21iPTc3ODtlLnJpbmdoYWxmbGVmdD03MDM7ZS5yaW5naGFsZmxlZnRhcm1lbmlhbj0xMzY5O2UucmluZ2hhbGZsZWZ0YmVsb3djbWI9Nzk2O2UucmluZ2hhbGZsZWZ0Y2VudGVyZWQ9NzIzO2UucmluZ2hhbGZyaWdodD03MDI7ZS5yaW5naGFsZnJpZ2h0YmVsb3djbWI9ODI1O2UucmluZ2hhbGZyaWdodGNlbnRlcmVkPTcyMjtlLnJpbnZlcnRlZGJyZXZlPTUzMTtlLnJpdHRvcnVzcXVhcmU9MTMxMzc7ZS5ybGluZWJlbG93PTc3NzU7ZS5ybG9uZ2xlZz02MzY7ZS5ybG9uZ2xlZ3R1cm5lZD02MzQ7ZS5ybW9ub3NwYWNlPTY1MzYyO2Uucm9oaXJhZ2FuYT0xMjQyOTtlLnJva2F0YWthbmE9MTI1MjU7ZS5yb2thdGFrYW5haGFsZndpZHRoPTY1NDM1O2Uucm9ydWF0aGFpPTM2MTk7ZS5ycGFyZW49OTM4OTtlLnJyYWJlbmdhbGk9MjUyNDtlLnJyYWRldmE9MjM1MztlLnJyYWd1cm11a2hpPTI2NTI7ZS5ycmVoYXJhYmljPTE2ODE7ZS5ycmVoZmluYWxhcmFiaWM9NjQzOTc7ZS5ycnZvY2FsaWNiZW5nYWxpPTI1Mjg7ZS5ycnZvY2FsaWNkZXZhPTI0MDA7ZS5ycnZvY2FsaWNndWphcmF0aT0yNzg0O2UucnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTAwO2UucnJ2b2NhbGljdm93ZWxzaWduZGV2YT0yMzcyO2UucnJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGk9Mjc1NjtlLnJzdXBlcmlvcj02MzIxNztlLnJ0YmxvY2s9OTYxNjtlLnJ0dXJuZWQ9NjMzO2UucnR1cm5lZHN1cGVyaW9yPTY5MjtlLnJ1aGlyYWdhbmE9MTI0Mjc7ZS5ydWthdGFrYW5hPTEyNTIzO2UucnVrYXRha2FuYWhhbGZ3aWR0aD02NTQzMztlLnJ1cGVlbWFya2JlbmdhbGk9MjU0NjtlLnJ1cGVlc2lnbmJlbmdhbGk9MjU0NztlLnJ1cGlhaD02MzE5NztlLnJ1dGhhaT0zNjIwO2UucnZvY2FsaWNiZW5nYWxpPTI0NDM7ZS5ydm9jYWxpY2RldmE9MjMxNTtlLnJ2b2NhbGljZ3VqYXJhdGk9MjY5OTtlLnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNDk5O2UucnZvY2FsaWN2b3dlbHNpZ25kZXZhPTIzNzE7ZS5ydm9jYWxpY3Zvd2Vsc2lnbmd1amFyYXRpPTI3NTU7ZS5zPTExNTtlLnNhYmVuZ2FsaT0yNDg4O2Uuc2FjdXRlPTM0NztlLnNhY3V0ZWRvdGFjY2VudD03NzgxO2Uuc2FkYXJhYmljPTE1ODk7ZS5zYWRldmE9MjM2MDtlLnNhZGZpbmFsYXJhYmljPTY1MjEwO2Uuc2FkaW5pdGlhbGFyYWJpYz02NTIxMTtlLnNhZG1lZGlhbGFyYWJpYz02NTIxMjtlLnNhZ3VqYXJhdGk9Mjc0NDtlLnNhZ3VybXVraGk9MjYxNjtlLnNhaGlyYWdhbmE9MTIzNzM7ZS5zYWthdGFrYW5hPTEyNDY5O2Uuc2FrYXRha2FuYWhhbGZ3aWR0aD02NTQwMztlLnNhbGxhbGxhaG91YWxheWhld2FzYWxsYW1hcmFiaWM9NjUwMTg7ZS5zYW1la2g9MTUwNTtlLnNhbWVraGRhZ2VzaD02NDMyMTtlLnNhbWVraGRhZ2VzaGhlYnJldz02NDMyMTtlLnNhbWVraGhlYnJldz0xNTA1O2Uuc2FyYWFhdGhhaT0zNjM0O2Uuc2FyYWFldGhhaT0zNjQ5O2Uuc2FyYWFpbWFpbWFsYWl0aGFpPTM2NTI7ZS5zYXJhYWltYWltdWFudGhhaT0zNjUxO2Uuc2FyYWFtdGhhaT0zNjM1O2Uuc2FyYWF0aGFpPTM2MzI7ZS5zYXJhZXRoYWk9MzY0ODtlLnNhcmFpaWxlZnR0aGFpPTYzNjIyO2Uuc2FyYWlpdGhhaT0zNjM3O2Uuc2FyYWlsZWZ0dGhhaT02MzYyMTtlLnNhcmFpdGhhaT0zNjM2O2Uuc2FyYW90aGFpPTM2NTA7ZS5zYXJhdWVlbGVmdHRoYWk9NjM2MjQ7ZS5zYXJhdWVldGhhaT0zNjM5O2Uuc2FyYXVlbGVmdHRoYWk9NjM2MjM7ZS5zYXJhdWV0aGFpPTM2Mzg7ZS5zYXJhdXRoYWk9MzY0MDtlLnNhcmF1dXRoYWk9MzY0MTtlLnNib3BvbW9mbz0xMjU2OTtlLnNjYXJvbj0zNTM7ZS5zY2Fyb25kb3RhY2NlbnQ9Nzc4MztlLnNjZWRpbGxhPTM1MTtlLnNjaHdhPTYwMTtlLnNjaHdhY3lyaWxsaWM9MTI0MTtlLnNjaHdhZGllcmVzaXNjeXJpbGxpYz0xMjQzO2Uuc2Nod2Fob29rPTYwMjtlLnNjaXJjbGU9OTQ0MjtlLnNjaXJjdW1mbGV4PTM0OTtlLnNjb21tYWFjY2VudD01Mzc7ZS5zZG90YWNjZW50PTc3Nzc7ZS5zZG90YmVsb3c9Nzc3OTtlLnNkb3RiZWxvd2RvdGFjY2VudD03Nzg1O2Uuc2VhZ3VsbGJlbG93Y21iPTgyODtlLnNlY29uZD04MjQzO2Uuc2Vjb25kdG9uZWNoaW5lc2U9NzE0O2Uuc2VjdGlvbj0xNjc7ZS5zZWVuYXJhYmljPTE1ODc7ZS5zZWVuZmluYWxhcmFiaWM9NjUyMDI7ZS5zZWVuaW5pdGlhbGFyYWJpYz02NTIwMztlLnNlZW5tZWRpYWxhcmFiaWM9NjUyMDQ7ZS5zZWdvbD0xNDYyO2Uuc2Vnb2wxMz0xNDYyO2Uuc2Vnb2wxZj0xNDYyO2Uuc2Vnb2wyYz0xNDYyO2Uuc2Vnb2xoZWJyZXc9MTQ2MjtlLnNlZ29sbmFycm93aGVicmV3PTE0NjI7ZS5zZWdvbHF1YXJ0ZXJoZWJyZXc9MTQ2MjtlLnNlZ29sdGFoZWJyZXc9MTQyNjtlLnNlZ29sd2lkZWhlYnJldz0xNDYyO2Uuc2VoYXJtZW5pYW49MTQwNTtlLnNlaGlyYWdhbmE9MTIzNzk7ZS5zZWthdGFrYW5hPTEyNDc1O2Uuc2VrYXRha2FuYWhhbGZ3aWR0aD02NTQwNjtlLnNlbWljb2xvbj01OTtlLnNlbWljb2xvbmFyYWJpYz0xNTYzO2Uuc2VtaWNvbG9ubW9ub3NwYWNlPTY1MzA3O2Uuc2VtaWNvbG9uc21hbGw9NjUxMDg7ZS5zZW1pdm9pY2VkbWFya2thbmE9MTI0NDQ7ZS5zZW1pdm9pY2VkbWFya2thbmFoYWxmd2lkdGg9NjU0Mzk7ZS5zZW50aXNxdWFyZT0xMzA5MDtlLnNlbnRvc3F1YXJlPTEzMDkxO2Uuc2V2ZW49NTU7ZS5zZXZlbmFyYWJpYz0xNjM5O2Uuc2V2ZW5iZW5nYWxpPTI1NDE7ZS5zZXZlbmNpcmNsZT05MzE4O2Uuc2V2ZW5jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI4O2Uuc2V2ZW5kZXZhPTI0MTM7ZS5zZXZlbmVpZ2h0aHM9ODU0MjtlLnNldmVuZ3VqYXJhdGk9Mjc5NztlLnNldmVuZ3VybXVraGk9MjY2OTtlLnNldmVuaGFja2FyYWJpYz0xNjM5O2Uuc2V2ZW5oYW5nemhvdT0xMjMyNztlLnNldmVuaWRlb2dyYXBoaWNwYXJlbj0xMjgzODtlLnNldmVuaW5mZXJpb3I9ODMyNztlLnNldmVubW9ub3NwYWNlPTY1MzAzO2Uuc2V2ZW5vbGRzdHlsZT02MzI4NztlLnNldmVucGFyZW49OTMzODtlLnNldmVucGVyaW9kPTkzNTg7ZS5zZXZlbnBlcnNpYW49MTc4MztlLnNldmVucm9tYW49ODU2NjtlLnNldmVuc3VwZXJpb3I9ODMxMTtlLnNldmVudGVlbmNpcmNsZT05MzI4O2Uuc2V2ZW50ZWVucGFyZW49OTM0ODtlLnNldmVudGVlbnBlcmlvZD05MzY4O2Uuc2V2ZW50aGFpPTM2NzE7ZS5zZnRoeXBoZW49MTczO2Uuc2hhYXJtZW5pYW49MTM5OTtlLnNoYWJlbmdhbGk9MjQ4NjtlLnNoYWN5cmlsbGljPTEwOTY7ZS5zaGFkZGFhcmFiaWM9MTYxNztlLnNoYWRkYWRhbW1hYXJhYmljPTY0NjA5O2Uuc2hhZGRhZGFtbWF0YW5hcmFiaWM9NjQ2MDY7ZS5zaGFkZGFmYXRoYWFyYWJpYz02NDYwODtlLnNoYWRkYWthc3JhYXJhYmljPTY0NjEwO2Uuc2hhZGRha2FzcmF0YW5hcmFiaWM9NjQ2MDc7ZS5zaGFkZT05NjE4O2Uuc2hhZGVkYXJrPTk2MTk7ZS5zaGFkZWxpZ2h0PTk2MTc7ZS5zaGFkZW1lZGl1bT05NjE4O2Uuc2hhZGV2YT0yMzU4O2Uuc2hhZ3VqYXJhdGk9Mjc0MjtlLnNoYWd1cm11a2hpPTI2MTQ7ZS5zaGFsc2hlbGV0aGVicmV3PTE0Mjc7ZS5zaGJvcG9tb2ZvPTEyNTY1O2Uuc2hjaGFjeXJpbGxpYz0xMDk3O2Uuc2hlZW5hcmFiaWM9MTU4ODtlLnNoZWVuZmluYWxhcmFiaWM9NjUyMDY7ZS5zaGVlbmluaXRpYWxhcmFiaWM9NjUyMDc7ZS5zaGVlbm1lZGlhbGFyYWJpYz02NTIwODtlLnNoZWljb3B0aWM9OTk1O2Uuc2hlcWVsPTgzNjI7ZS5zaGVxZWxoZWJyZXc9ODM2MjtlLnNoZXZhPTE0NTY7ZS5zaGV2YTExNT0xNDU2O2Uuc2hldmExNT0xNDU2O2Uuc2hldmEyMj0xNDU2O2Uuc2hldmEyZT0xNDU2O2Uuc2hldmFoZWJyZXc9MTQ1NjtlLnNoZXZhbmFycm93aGVicmV3PTE0NTY7ZS5zaGV2YXF1YXJ0ZXJoZWJyZXc9MTQ1NjtlLnNoZXZhd2lkZWhlYnJldz0xNDU2O2Uuc2hoYWN5cmlsbGljPTEyMTE7ZS5zaGltYWNvcHRpYz0xMDA1O2Uuc2hpbj0xNTEzO2Uuc2hpbmRhZ2VzaD02NDMyOTtlLnNoaW5kYWdlc2hoZWJyZXc9NjQzMjk7ZS5zaGluZGFnZXNoc2hpbmRvdD02NDMwMDtlLnNoaW5kYWdlc2hzaGluZG90aGVicmV3PTY0MzAwO2Uuc2hpbmRhZ2VzaHNpbmRvdD02NDMwMTtlLnNoaW5kYWdlc2hzaW5kb3RoZWJyZXc9NjQzMDE7ZS5zaGluZG90aGVicmV3PTE0NzM7ZS5zaGluaGVicmV3PTE1MTM7ZS5zaGluc2hpbmRvdD02NDI5ODtlLnNoaW5zaGluZG90aGVicmV3PTY0Mjk4O2Uuc2hpbnNpbmRvdD02NDI5OTtlLnNoaW5zaW5kb3RoZWJyZXc9NjQyOTk7ZS5zaG9vaz02NDI7ZS5zaWdtYT05NjM7ZS5zaWdtYTE9OTYyO2Uuc2lnbWFmaW5hbD05NjI7ZS5zaWdtYWx1bmF0ZXN5bWJvbGdyZWVrPTEwMTA7ZS5zaWhpcmFnYW5hPTEyMzc1O2Uuc2lrYXRha2FuYT0xMjQ3MTtlLnNpa2F0YWthbmFoYWxmd2lkdGg9NjU0MDQ7ZS5zaWx1cWhlYnJldz0xNDY5O2Uuc2lsdXFsZWZ0aGVicmV3PTE0Njk7ZS5zaW1pbGFyPTg3NjQ7ZS5zaW5kb3RoZWJyZXc9MTQ3NDtlLnNpb3NhY2lyY2xla29yZWFuPTEyOTE2O2Uuc2lvc2FwYXJlbmtvcmVhbj0xMjgyMDtlLnNpb3NjaWV1Y2tvcmVhbj0xMjY3MDtlLnNpb3NjaXJjbGVrb3JlYW49MTI5MDI7ZS5zaW9za2l5ZW9ra29yZWFuPTEyNjY2O2Uuc2lvc2tvcmVhbj0xMjYxMztlLnNpb3NuaWV1bmtvcmVhbj0xMjY2NztlLnNpb3NwYXJlbmtvcmVhbj0xMjgwNjtlLnNpb3NwaWV1cGtvcmVhbj0xMjY2OTtlLnNpb3N0aWtldXRrb3JlYW49MTI2Njg7ZS5zaXg9NTQ7ZS5zaXhhcmFiaWM9MTYzODtlLnNpeGJlbmdhbGk9MjU0MDtlLnNpeGNpcmNsZT05MzE3O2Uuc2l4Y2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNztlLnNpeGRldmE9MjQxMjtlLnNpeGd1amFyYXRpPTI3OTY7ZS5zaXhndXJtdWtoaT0yNjY4O2Uuc2l4aGFja2FyYWJpYz0xNjM4O2Uuc2l4aGFuZ3pob3U9MTIzMjY7ZS5zaXhpZGVvZ3JhcGhpY3BhcmVuPTEyODM3O2Uuc2l4aW5mZXJpb3I9ODMyNjtlLnNpeG1vbm9zcGFjZT02NTMwMjtlLnNpeG9sZHN0eWxlPTYzMjg2O2Uuc2l4cGFyZW49OTMzNztlLnNpeHBlcmlvZD05MzU3O2Uuc2l4cGVyc2lhbj0xNzgyO2Uuc2l4cm9tYW49ODU2NTtlLnNpeHN1cGVyaW9yPTgzMTA7ZS5zaXh0ZWVuY2lyY2xlPTkzMjc7ZS5zaXh0ZWVuY3VycmVuY3lkZW5vbWluYXRvcmJlbmdhbGk9MjU1MztlLnNpeHRlZW5wYXJlbj05MzQ3O2Uuc2l4dGVlbnBlcmlvZD05MzY3O2Uuc2l4dGhhaT0zNjcwO2Uuc2xhc2g9NDc7ZS5zbGFzaG1vbm9zcGFjZT02NTI5NTtlLnNsb25nPTM4MztlLnNsb25nZG90YWNjZW50PTc4MzU7ZS5zbWlsZWZhY2U9OTc4NjtlLnNtb25vc3BhY2U9NjUzNjM7ZS5zb2ZwYXN1cWhlYnJldz0xNDc1O2Uuc29mdGh5cGhlbj0xNzM7ZS5zb2Z0c2lnbmN5cmlsbGljPTExMDA7ZS5zb2hpcmFnYW5hPTEyMzgxO2Uuc29rYXRha2FuYT0xMjQ3NztlLnNva2F0YWthbmFoYWxmd2lkdGg9NjU0MDc7ZS5zb2xpZHVzbG9uZ292ZXJsYXljbWI9ODI0O2Uuc29saWR1c3Nob3J0b3ZlcmxheWNtYj04MjM7ZS5zb3J1c2l0aGFpPTM2MjU7ZS5zb3NhbGF0aGFpPTM2MjQ7ZS5zb3NvdGhhaT0zNTk1O2Uuc29zdWF0aGFpPTM2MjY7ZS5zcGFjZT0zMjtlLnNwYWNlaGFja2FyYWJpYz0zMjtlLnNwYWRlPTk4MjQ7ZS5zcGFkZXN1aXRibGFjaz05ODI0O2Uuc3BhZGVzdWl0d2hpdGU9OTgyODtlLnNwYXJlbj05MzkwO2Uuc3F1YXJlYmVsb3djbWI9ODI3O2Uuc3F1YXJlY2M9MTMyNTI7ZS5zcXVhcmVjbT0xMzIxMztlLnNxdWFyZWRpYWdvbmFsY3Jvc3NoYXRjaGZpbGw9OTY0MTtlLnNxdWFyZWhvcml6b250YWxmaWxsPTk2MzY7ZS5zcXVhcmVrZz0xMzE5OTtlLnNxdWFyZWttPTEzMjE0O2Uuc3F1YXJla21jYXBpdGFsPTEzMjYyO2Uuc3F1YXJlbG49MTMyNjU7ZS5zcXVhcmVsb2c9MTMyNjY7ZS5zcXVhcmVtZz0xMzE5ODtlLnNxdWFyZW1pbD0xMzI2OTtlLnNxdWFyZW1tPTEzMjEyO2Uuc3F1YXJlbXNxdWFyZWQ9MTMyMTc7ZS5zcXVhcmVvcnRob2dvbmFsY3Jvc3NoYXRjaGZpbGw9OTYzODtlLnNxdWFyZXVwcGVybGVmdHRvbG93ZXJyaWdodGZpbGw9OTYzOTtlLnNxdWFyZXVwcGVycmlnaHR0b2xvd2VybGVmdGZpbGw9OTY0MDtlLnNxdWFyZXZlcnRpY2FsZmlsbD05NjM3O2Uuc3F1YXJld2hpdGV3aXRoc21hbGxibGFjaz05NjM1O2Uuc3JzcXVhcmU9MTMyNzU7ZS5zc2FiZW5nYWxpPTI0ODc7ZS5zc2FkZXZhPTIzNTk7ZS5zc2FndWphcmF0aT0yNzQzO2Uuc3NhbmdjaWV1Y2tvcmVhbj0xMjYxNztlLnNzYW5naGlldWhrb3JlYW49MTI2Nzc7ZS5zc2FuZ2lldW5na29yZWFuPTEyNjcyO2Uuc3NhbmdraXllb2trb3JlYW49MTI1OTQ7ZS5zc2FuZ25pZXVua29yZWFuPTEyNjQ1O2Uuc3NhbmdwaWV1cGtvcmVhbj0xMjYxMTtlLnNzYW5nc2lvc2tvcmVhbj0xMjYxNDtlLnNzYW5ndGlrZXV0a29yZWFuPTEyNjAwO2Uuc3N1cGVyaW9yPTYzMjE4O2Uuc3Rlcmxpbmc9MTYzO2Uuc3Rlcmxpbmdtb25vc3BhY2U9NjU1MDU7ZS5zdHJva2Vsb25nb3ZlcmxheWNtYj04MjI7ZS5zdHJva2VzaG9ydG92ZXJsYXljbWI9ODIxO2Uuc3Vic2V0PTg4MzQ7ZS5zdWJzZXRub3RlcXVhbD04ODQyO2Uuc3Vic2V0b3JlcXVhbD04ODM4O2Uuc3VjY2VlZHM9ODgyNztlLnN1Y2h0aGF0PTg3MTU7ZS5zdWhpcmFnYW5hPTEyMzc3O2Uuc3VrYXRha2FuYT0xMjQ3MztlLnN1a2F0YWthbmFoYWxmd2lkdGg9NjU0MDU7ZS5zdWt1bmFyYWJpYz0xNjE4O2Uuc3VtbWF0aW9uPTg3MjE7ZS5zdW49OTc4ODtlLnN1cGVyc2V0PTg4MzU7ZS5zdXBlcnNldG5vdGVxdWFsPTg4NDM7ZS5zdXBlcnNldG9yZXF1YWw9ODgzOTtlLnN2c3F1YXJlPTEzMjc2O2Uuc3lvdXdhZXJhc3F1YXJlPTEzMTgwO2UudD0xMTY7ZS50YWJlbmdhbGk9MjQ2ODtlLnRhY2tkb3duPTg4Njg7ZS50YWNrbGVmdD04ODY3O2UudGFkZXZhPTIzNDA7ZS50YWd1amFyYXRpPTI3MjQ7ZS50YWd1cm11a2hpPTI1OTY7ZS50YWhhcmFiaWM9MTU5MTtlLnRhaGZpbmFsYXJhYmljPTY1MjE4O2UudGFoaW5pdGlhbGFyYWJpYz02NTIxOTtlLnRhaGlyYWdhbmE9MTIzODM7ZS50YWhtZWRpYWxhcmFiaWM9NjUyMjA7ZS50YWlzeW91ZXJhc3F1YXJlPTEzMTgxO2UudGFrYXRha2FuYT0xMjQ3OTtlLnRha2F0YWthbmFoYWxmd2lkdGg9NjU0MDg7ZS50YXR3ZWVsYXJhYmljPTE2MDA7ZS50YXU9OTY0O2UudGF2PTE1MTQ7ZS50YXZkYWdlcz02NDMzMDtlLnRhdmRhZ2VzaD02NDMzMDtlLnRhdmRhZ2VzaGhlYnJldz02NDMzMDtlLnRhdmhlYnJldz0xNTE0O2UudGJhcj0zNTk7ZS50Ym9wb21vZm89MTI1NTQ7ZS50Y2Fyb249MzU3O2UudGNjdXJsPTY4MDtlLnRjZWRpbGxhPTM1NTtlLnRjaGVoYXJhYmljPTE2NzA7ZS50Y2hlaGZpbmFsYXJhYmljPTY0Mzc5O2UudGNoZWhpbml0aWFsYXJhYmljPTY0MzgwO2UudGNoZWhtZWRpYWxhcmFiaWM9NjQzODE7ZS50Y2lyY2xlPTk0NDM7ZS50Y2lyY3VtZmxleGJlbG93PTc3OTM7ZS50Y29tbWFhY2NlbnQ9MzU1O2UudGRpZXJlc2lzPTc4MzE7ZS50ZG90YWNjZW50PTc3ODc7ZS50ZG90YmVsb3c9Nzc4OTtlLnRlY3lyaWxsaWM9MTA5MDtlLnRlZGVzY2VuZGVyY3lyaWxsaWM9MTE5NztlLnRlaGFyYWJpYz0xNTc4O2UudGVoZmluYWxhcmFiaWM9NjUxNzQ7ZS50ZWhoYWhpbml0aWFsYXJhYmljPTY0Njc0O2UudGVoaGFoaXNvbGF0ZWRhcmFiaWM9NjQ1MjQ7ZS50ZWhpbml0aWFsYXJhYmljPTY1MTc1O2UudGVoaXJhZ2FuYT0xMjM5MDtlLnRlaGplZW1pbml0aWFsYXJhYmljPTY0NjczO2UudGVoamVlbWlzb2xhdGVkYXJhYmljPTY0NTIzO2UudGVobWFyYnV0YWFyYWJpYz0xNTc3O2UudGVobWFyYnV0YWZpbmFsYXJhYmljPTY1MTcyO2UudGVobWVkaWFsYXJhYmljPTY1MTc2O2UudGVobWVlbWluaXRpYWxhcmFiaWM9NjQ2NzY7ZS50ZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjY7ZS50ZWhub29uZmluYWxhcmFiaWM9NjQ2Mjc7ZS50ZWthdGFrYW5hPTEyNDg2O2UudGVrYXRha2FuYWhhbGZ3aWR0aD02NTQxMTtlLnRlbGVwaG9uZT04NDgxO2UudGVsZXBob25lYmxhY2s9OTc0MjtlLnRlbGlzaGFnZWRvbGFoZWJyZXc9MTQ0MDtlLnRlbGlzaGFxZXRhbmFoZWJyZXc9MTQ0OTtlLnRlbmNpcmNsZT05MzIxO2UudGVuaWRlb2dyYXBoaWNwYXJlbj0xMjg0MTtlLnRlbnBhcmVuPTkzNDE7ZS50ZW5wZXJpb2Q9OTM2MTtlLnRlbnJvbWFuPTg1Njk7ZS50ZXNoPTY3OTtlLnRldD0xNDk2O2UudGV0ZGFnZXNoPTY0MzEyO2UudGV0ZGFnZXNoaGVicmV3PTY0MzEyO2UudGV0aGVicmV3PTE0OTY7ZS50ZXRzZWN5cmlsbGljPTEyMDU7ZS50ZXZpcmhlYnJldz0xNDM1O2UudGV2aXJsZWZ0aGVicmV3PTE0MzU7ZS50aGFiZW5nYWxpPTI0Njk7ZS50aGFkZXZhPTIzNDE7ZS50aGFndWphcmF0aT0yNzI1O2UudGhhZ3VybXVraGk9MjU5NztlLnRoYWxhcmFiaWM9MTU4NDtlLnRoYWxmaW5hbGFyYWJpYz02NTE5NjtlLnRoYW50aGFraGF0bG93bGVmdHRoYWk9NjM2NDA7ZS50aGFudGhha2hhdGxvd3JpZ2h0dGhhaT02MzYzOTtlLnRoYW50aGFraGF0dGhhaT0zNjYwO2UudGhhbnRoYWtoYXR1cHBlcmxlZnR0aGFpPTYzNjM4O2UudGhlaGFyYWJpYz0xNTc5O2UudGhlaGZpbmFsYXJhYmljPTY1MTc4O2UudGhlaGluaXRpYWxhcmFiaWM9NjUxNzk7ZS50aGVobWVkaWFsYXJhYmljPTY1MTgwO2UudGhlcmVleGlzdHM9ODcwNztlLnRoZXJlZm9yZT04NzU2O2UudGhldGE9OTUyO2UudGhldGExPTk3NztlLnRoZXRhc3ltYm9sZ3JlZWs9OTc3O2UudGhpZXV0aGFjaXJjbGVrb3JlYW49MTI5MjE7ZS50aGlldXRoYXBhcmVua29yZWFuPTEyODI1O2UudGhpZXV0aGNpcmNsZWtvcmVhbj0xMjkwNztlLnRoaWV1dGhrb3JlYW49MTI2MjA7ZS50aGlldXRocGFyZW5rb3JlYW49MTI4MTE7ZS50aGlydGVlbmNpcmNsZT05MzI0O2UudGhpcnRlZW5wYXJlbj05MzQ0O2UudGhpcnRlZW5wZXJpb2Q9OTM2NDtlLnRob25hbmdtb250aG90aGFpPTM2MDE7ZS50aG9vaz00Mjk7ZS50aG9waHV0aGFvdGhhaT0zNjAyO2UudGhvcm49MjU0O2UudGhvdGhhaGFudGhhaT0zNjA3O2UudGhvdGhhbnRoYWk9MzYwMDtlLnRob3Rob25ndGhhaT0zNjA4O2UudGhvdGh1bmd0aGFpPTM2MDY7ZS50aG91c2FuZGN5cmlsbGljPTExNTQ7ZS50aG91c2FuZHNzZXBhcmF0b3JhcmFiaWM9MTY0NDtlLnRob3VzYW5kc3NlcGFyYXRvcnBlcnNpYW49MTY0NDtlLnRocmVlPTUxO2UudGhyZWVhcmFiaWM9MTYzNTtlLnRocmVlYmVuZ2FsaT0yNTM3O2UudGhyZWVjaXJjbGU9OTMxNDtlLnRocmVlY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNDtlLnRocmVlZGV2YT0yNDA5O2UudGhyZWVlaWdodGhzPTg1NDA7ZS50aHJlZWd1amFyYXRpPTI3OTM7ZS50aHJlZWd1cm11a2hpPTI2NjU7ZS50aHJlZWhhY2thcmFiaWM9MTYzNTtlLnRocmVlaGFuZ3pob3U9MTIzMjM7ZS50aHJlZWlkZW9ncmFwaGljcGFyZW49MTI4MzQ7ZS50aHJlZWluZmVyaW9yPTgzMjM7ZS50aHJlZW1vbm9zcGFjZT02NTI5OTtlLnRocmVlbnVtZXJhdG9yYmVuZ2FsaT0yNTUwO2UudGhyZWVvbGRzdHlsZT02MzI4MztlLnRocmVlcGFyZW49OTMzNDtlLnRocmVlcGVyaW9kPTkzNTQ7ZS50aHJlZXBlcnNpYW49MTc3OTtlLnRocmVlcXVhcnRlcnM9MTkwO2UudGhyZWVxdWFydGVyc2VtZGFzaD02MzE5ODtlLnRocmVlcm9tYW49ODU2MjtlLnRocmVlc3VwZXJpb3I9MTc5O2UudGhyZWV0aGFpPTM2Njc7ZS50aHpzcXVhcmU9MTMyMDQ7ZS50aWhpcmFnYW5hPTEyMzg1O2UudGlrYXRha2FuYT0xMjQ4MTtlLnRpa2F0YWthbmFoYWxmd2lkdGg9NjU0MDk7ZS50aWtldXRhY2lyY2xla29yZWFuPTEyOTEyO2UudGlrZXV0YXBhcmVua29yZWFuPTEyODE2O2UudGlrZXV0Y2lyY2xla29yZWFuPTEyODk4O2UudGlrZXV0a29yZWFuPTEyNTk5O2UudGlrZXV0cGFyZW5rb3JlYW49MTI4MDI7ZS50aWxkZT03MzI7ZS50aWxkZWJlbG93Y21iPTgxNjtlLnRpbGRlY21iPTc3MTtlLnRpbGRlY29tYj03NzE7ZS50aWxkZWRvdWJsZWNtYj04NjQ7ZS50aWxkZW9wZXJhdG9yPTg3NjQ7ZS50aWxkZW92ZXJsYXljbWI9ODIwO2UudGlsZGV2ZXJ0aWNhbGNtYj04MzA7ZS50aW1lc2NpcmNsZT04ODU1O2UudGlwZWhhaGVicmV3PTE0MzA7ZS50aXBlaGFsZWZ0aGVicmV3PTE0MzA7ZS50aXBwaWd1cm11a2hpPTI2NzI7ZS50aXRsb2N5cmlsbGljY21iPTExNTU7ZS50aXduYXJtZW5pYW49MTQwNztlLnRsaW5lYmVsb3c9Nzc5MTtlLnRtb25vc3BhY2U9NjUzNjQ7ZS50b2FybWVuaWFuPTEzODU7ZS50b2hpcmFnYW5hPTEyMzkyO2UudG9rYXRha2FuYT0xMjQ4ODtlLnRva2F0YWthbmFoYWxmd2lkdGg9NjU0MTI7ZS50b25lYmFyZXh0cmFoaWdobW9kPTc0MTtlLnRvbmViYXJleHRyYWxvd21vZD03NDU7ZS50b25lYmFyaGlnaG1vZD03NDI7ZS50b25lYmFybG93bW9kPTc0NDtlLnRvbmViYXJtaWRtb2Q9NzQzO2UudG9uZWZpdmU9NDQ1O2UudG9uZXNpeD0zODk7ZS50b25ldHdvPTQyNDtlLnRvbm9zPTkwMDtlLnRvbnNxdWFyZT0xMzA5NTtlLnRvcGF0YWt0aGFpPTM1OTk7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ9MTIzMDg7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnRzbWFsbD02NTExNztlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHZlcnRpY2FsPTY1MDgxO2UudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodD0xMjMwOTtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHRzbWFsbD02NTExODtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4MjtlLnRvdGFvdGhhaT0zNjA1O2UudHBhbGF0YWxob29rPTQyNztlLnRwYXJlbj05MzkxO2UudHJhZGVtYXJrPTg0ODI7ZS50cmFkZW1hcmtzYW5zPTYzNzIyO2UudHJhZGVtYXJrc2VyaWY9NjMxOTU7ZS50cmV0cm9mbGV4aG9vaz02NDg7ZS50cmlhZ2RuPTk2NjA7ZS50cmlhZ2xmPTk2Njg7ZS50cmlhZ3J0PTk2NTg7ZS50cmlhZ3VwPTk2NTA7ZS50cz02Nzg7ZS50c2FkaT0xNTEwO2UudHNhZGlkYWdlc2g9NjQzMjY7ZS50c2FkaWRhZ2VzaGhlYnJldz02NDMyNjtlLnRzYWRpaGVicmV3PTE1MTA7ZS50c2VjeXJpbGxpYz0xMDk0O2UudHNlcmU9MTQ2MTtlLnRzZXJlMTI9MTQ2MTtlLnRzZXJlMWU9MTQ2MTtlLnRzZXJlMmI9MTQ2MTtlLnRzZXJlaGVicmV3PTE0NjE7ZS50c2VyZW5hcnJvd2hlYnJldz0xNDYxO2UudHNlcmVxdWFydGVyaGVicmV3PTE0NjE7ZS50c2VyZXdpZGVoZWJyZXc9MTQ2MTtlLnRzaGVjeXJpbGxpYz0xMTE1O2UudHN1cGVyaW9yPTYzMjE5O2UudHRhYmVuZ2FsaT0yNDYzO2UudHRhZGV2YT0yMzM1O2UudHRhZ3VqYXJhdGk9MjcxOTtlLnR0YWd1cm11a2hpPTI1OTE7ZS50dGVoYXJhYmljPTE2NTc7ZS50dGVoZmluYWxhcmFiaWM9NjQzNTk7ZS50dGVoaW5pdGlhbGFyYWJpYz02NDM2MDtlLnR0ZWhtZWRpYWxhcmFiaWM9NjQzNjE7ZS50dGhhYmVuZ2FsaT0yNDY0O2UudHRoYWRldmE9MjMzNjtlLnR0aGFndWphcmF0aT0yNzIwO2UudHRoYWd1cm11a2hpPTI1OTI7ZS50dHVybmVkPTY0NztlLnR1aGlyYWdhbmE9MTIzODg7ZS50dWthdGFrYW5hPTEyNDg0O2UudHVrYXRha2FuYWhhbGZ3aWR0aD02NTQxMDtlLnR1c21hbGxoaXJhZ2FuYT0xMjM4NztlLnR1c21hbGxrYXRha2FuYT0xMjQ4MztlLnR1c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM5MTtlLnR3ZWx2ZWNpcmNsZT05MzIzO2UudHdlbHZlcGFyZW49OTM0MztlLnR3ZWx2ZXBlcmlvZD05MzYzO2UudHdlbHZlcm9tYW49ODU3MTtlLnR3ZW50eWNpcmNsZT05MzMxO2UudHdlbnR5aGFuZ3pob3U9MjEzMTY7ZS50d2VudHlwYXJlbj05MzUxO2UudHdlbnR5cGVyaW9kPTkzNzE7ZS50d289NTA7ZS50d29hcmFiaWM9MTYzNDtlLnR3b2JlbmdhbGk9MjUzNjtlLnR3b2NpcmNsZT05MzEzO2UudHdvY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyMztlLnR3b2RldmE9MjQwODtlLnR3b2RvdGVubGVhZGVyPTgyMjk7ZS50d29kb3RsZWFkZXI9ODIyOTtlLnR3b2RvdGxlYWRlcnZlcnRpY2FsPTY1MDcyO2UudHdvZ3VqYXJhdGk9Mjc5MjtlLnR3b2d1cm11a2hpPTI2NjQ7ZS50d29oYWNrYXJhYmljPTE2MzQ7ZS50d29oYW5nemhvdT0xMjMyMjtlLnR3b2lkZW9ncmFwaGljcGFyZW49MTI4MzM7ZS50d29pbmZlcmlvcj04MzIyO2UudHdvbW9ub3NwYWNlPTY1Mjk4O2UudHdvbnVtZXJhdG9yYmVuZ2FsaT0yNTQ5O2UudHdvb2xkc3R5bGU9NjMyODI7ZS50d29wYXJlbj05MzMzO2UudHdvcGVyaW9kPTkzNTM7ZS50d29wZXJzaWFuPTE3Nzg7ZS50d29yb21hbj04NTYxO2UudHdvc3Ryb2tlPTQ0MztlLnR3b3N1cGVyaW9yPTE3ODtlLnR3b3RoYWk9MzY2NjtlLnR3b3RoaXJkcz04NTMyO2UudT0xMTc7ZS51YWN1dGU9MjUwO2UudWJhcj02NDk7ZS51YmVuZ2FsaT0yNDQxO2UudWJvcG9tb2ZvPTEyNTg0O2UudWJyZXZlPTM2NTtlLnVjYXJvbj00Njg7ZS51Y2lyY2xlPTk0NDQ7ZS51Y2lyY3VtZmxleD0yNTE7ZS51Y2lyY3VtZmxleGJlbG93PTc3OTk7ZS51Y3lyaWxsaWM9MTA5MTtlLnVkYXR0YWRldmE9MjM4NTtlLnVkYmxhY3V0ZT0zNjk7ZS51ZGJsZ3JhdmU9NTMzO2UudWRldmE9MjMxMztlLnVkaWVyZXNpcz0yNTI7ZS51ZGllcmVzaXNhY3V0ZT00NzI7ZS51ZGllcmVzaXNiZWxvdz03Nzk1O2UudWRpZXJlc2lzY2Fyb249NDc0O2UudWRpZXJlc2lzY3lyaWxsaWM9MTI2NTtlLnVkaWVyZXNpc2dyYXZlPTQ3NjtlLnVkaWVyZXNpc21hY3Jvbj00NzA7ZS51ZG90YmVsb3c9NzkwOTtlLnVncmF2ZT0yNDk7ZS51Z3VqYXJhdGk9MjY5NztlLnVndXJtdWtoaT0yNTY5O2UudWhpcmFnYW5hPTEyMzU4O2UudWhvb2thYm92ZT03OTExO2UudWhvcm49NDMyO2UudWhvcm5hY3V0ZT03OTEzO2UudWhvcm5kb3RiZWxvdz03OTIxO2UudWhvcm5ncmF2ZT03OTE1O2UudWhvcm5ob29rYWJvdmU9NzkxNztlLnVob3JudGlsZGU9NzkxOTtlLnVodW5nYXJ1bWxhdXQ9MzY5O2UudWh1bmdhcnVtbGF1dGN5cmlsbGljPTEyNjc7ZS51aW52ZXJ0ZWRicmV2ZT01MzU7ZS51a2F0YWthbmE9MTI0NTQ7ZS51a2F0YWthbmFoYWxmd2lkdGg9NjUzOTU7ZS51a2N5cmlsbGljPTExNDU7ZS51a29yZWFuPTEyNjM2O2UudW1hY3Jvbj0zNjM7ZS51bWFjcm9uY3lyaWxsaWM9MTI2MztlLnVtYWNyb25kaWVyZXNpcz03ODAzO2UudW1hdHJhZ3VybXVraGk9MjYyNTtlLnVtb25vc3BhY2U9NjUzNjU7ZS51bmRlcnNjb3JlPTk1O2UudW5kZXJzY29yZWRibD04MjE1O2UudW5kZXJzY29yZW1vbm9zcGFjZT02NTM0MztlLnVuZGVyc2NvcmV2ZXJ0aWNhbD02NTA3NTtlLnVuZGVyc2NvcmV3YXZ5PTY1MTAzO2UudW5pb249ODc0NjtlLnVuaXZlcnNhbD04NzA0O2UudW9nb25laz0zNzE7ZS51cGFyZW49OTM5MjtlLnVwYmxvY2s9OTYwMDtlLnVwcGVyZG90aGVicmV3PTE0NzY7ZS51cHNpbG9uPTk2NTtlLnVwc2lsb25kaWVyZXNpcz05NzE7ZS51cHNpbG9uZGllcmVzaXN0b25vcz05NDQ7ZS51cHNpbG9ubGF0aW49NjUwO2UudXBzaWxvbnRvbm9zPTk3MztlLnVwdGFja2JlbG93Y21iPTc5NztlLnVwdGFja21vZD03MjQ7ZS51cmFndXJtdWtoaT0yNjc1O2UudXJpbmc9MzY3O2UudXNob3J0Y3lyaWxsaWM9MTExODtlLnVzbWFsbGhpcmFnYW5hPTEyMzU3O2UudXNtYWxsa2F0YWthbmE9MTI0NTM7ZS51c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4NTtlLnVzdHJhaWdodGN5cmlsbGljPTExOTk7ZS51c3RyYWlnaHRzdHJva2VjeXJpbGxpYz0xMjAxO2UudXRpbGRlPTM2MTtlLnV0aWxkZWFjdXRlPTc4MDE7ZS51dGlsZGViZWxvdz03Nzk3O2UudXViZW5nYWxpPTI0NDI7ZS51dWRldmE9MjMxNDtlLnV1Z3VqYXJhdGk9MjY5ODtlLnV1Z3VybXVraGk9MjU3MDtlLnV1bWF0cmFndXJtdWtoaT0yNjI2O2UudXV2b3dlbHNpZ25iZW5nYWxpPTI0OTg7ZS51dXZvd2Vsc2lnbmRldmE9MjM3MDtlLnV1dm93ZWxzaWduZ3VqYXJhdGk9Mjc1NDtlLnV2b3dlbHNpZ25iZW5nYWxpPTI0OTc7ZS51dm93ZWxzaWduZGV2YT0yMzY5O2UudXZvd2Vsc2lnbmd1amFyYXRpPTI3NTM7ZS52PTExODtlLnZhZGV2YT0yMzU3O2UudmFndWphcmF0aT0yNzQxO2UudmFndXJtdWtoaT0yNjEzO2UudmFrYXRha2FuYT0xMjUzNTtlLnZhdj0xNDkzO2UudmF2ZGFnZXNoPTY0MzA5O2UudmF2ZGFnZXNoNjU9NjQzMDk7ZS52YXZkYWdlc2hoZWJyZXc9NjQzMDk7ZS52YXZoZWJyZXc9MTQ5MztlLnZhdmhvbGFtPTY0MzMxO2UudmF2aG9sYW1oZWJyZXc9NjQzMzE7ZS52YXZ2YXZoZWJyZXc9MTUyMDtlLnZhdnlvZGhlYnJldz0xNTIxO2UudmNpcmNsZT05NDQ1O2UudmRvdGJlbG93PTc4MDc7ZS52ZWN5cmlsbGljPTEwNzQ7ZS52ZWhhcmFiaWM9MTcwMDtlLnZlaGZpbmFsYXJhYmljPTY0MzYzO2UudmVoaW5pdGlhbGFyYWJpYz02NDM2NDtlLnZlaG1lZGlhbGFyYWJpYz02NDM2NTtlLnZla2F0YWthbmE9MTI1Mzc7ZS52ZW51cz05NzkyO2UudmVydGljYWxiYXI9MTI0O2UudmVydGljYWxsaW5lYWJvdmVjbWI9NzgxO2UudmVydGljYWxsaW5lYmVsb3djbWI9ODA5O2UudmVydGljYWxsaW5lbG93bW9kPTcxNjtlLnZlcnRpY2FsbGluZW1vZD03MTI7ZS52ZXdhcm1lbmlhbj0xNDA2O2Uudmhvb2s9NjUxO2UudmlrYXRha2FuYT0xMjUzNjtlLnZpcmFtYWJlbmdhbGk9MjUwOTtlLnZpcmFtYWRldmE9MjM4MTtlLnZpcmFtYWd1amFyYXRpPTI3NjU7ZS52aXNhcmdhYmVuZ2FsaT0yNDM1O2UudmlzYXJnYWRldmE9MjMwNztlLnZpc2FyZ2FndWphcmF0aT0yNjkxO2Uudm1vbm9zcGFjZT02NTM2NjtlLnZvYXJtZW5pYW49MTQwMDtlLnZvaWNlZGl0ZXJhdGlvbmhpcmFnYW5hPTEyNDQ2O2Uudm9pY2VkaXRlcmF0aW9ua2F0YWthbmE9MTI1NDI7ZS52b2ljZWRtYXJra2FuYT0xMjQ0MztlLnZvaWNlZG1hcmtrYW5haGFsZndpZHRoPTY1NDM4O2Uudm9rYXRha2FuYT0xMjUzODtlLnZwYXJlbj05MzkzO2UudnRpbGRlPTc4MDU7ZS52dHVybmVkPTY1MjtlLnZ1aGlyYWdhbmE9MTI0MzY7ZS52dWthdGFrYW5hPTEyNTMyO2Uudz0xMTk7ZS53YWN1dGU9NzgxMTtlLndhZWtvcmVhbj0xMjYzMztlLndhaGlyYWdhbmE9MTI0MzE7ZS53YWthdGFrYW5hPTEyNTI3O2Uud2FrYXRha2FuYWhhbGZ3aWR0aD02NTQzNjtlLndha29yZWFuPTEyNjMyO2Uud2FzbWFsbGhpcmFnYW5hPTEyNDMwO2Uud2FzbWFsbGthdGFrYW5hPTEyNTI2O2Uud2F0dG9zcXVhcmU9MTMxNDM7ZS53YXZlZGFzaD0xMjMxNjtlLndhdnl1bmRlcnNjb3JldmVydGljYWw9NjUwNzY7ZS53YXdhcmFiaWM9MTYwODtlLndhd2ZpbmFsYXJhYmljPTY1MjYyO2Uud2F3aGFtemFhYm92ZWFyYWJpYz0xNTcyO2Uud2F3aGFtemFhYm92ZWZpbmFsYXJhYmljPTY1MTU4O2Uud2JzcXVhcmU9MTMyNzc7ZS53Y2lyY2xlPTk0NDY7ZS53Y2lyY3VtZmxleD0zNzM7ZS53ZGllcmVzaXM9NzgxMztlLndkb3RhY2NlbnQ9NzgxNTtlLndkb3RiZWxvdz03ODE3O2Uud2VoaXJhZ2FuYT0xMjQzMztlLndlaWVyc3RyYXNzPTg0NzI7ZS53ZWthdGFrYW5hPTEyNTI5O2Uud2Vrb3JlYW49MTI2Mzg7ZS53ZW9rb3JlYW49MTI2Mzc7ZS53Z3JhdmU9NzgwOTtlLndoaXRlYnVsbGV0PTk3MDI7ZS53aGl0ZWNpcmNsZT05Njc1O2Uud2hpdGVjaXJjbGVpbnZlcnNlPTk2ODk7ZS53aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0PTEyMzAyO2Uud2hpdGVjb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDkxO2Uud2hpdGVjb3JuZXJicmFja2V0cmlnaHQ9MTIzMDM7ZS53aGl0ZWNvcm5lcmJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDkyO2Uud2hpdGVkaWFtb25kPTk2NzE7ZS53aGl0ZWRpYW1vbmRjb250YWluaW5nYmxhY2tzbWFsbGRpYW1vbmQ9OTY3MjtlLndoaXRlZG93bnBvaW50aW5nc21hbGx0cmlhbmdsZT05NjYzO2Uud2hpdGVkb3ducG9pbnRpbmd0cmlhbmdsZT05NjYxO2Uud2hpdGVsZWZ0cG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2Njc7ZS53aGl0ZWxlZnRwb2ludGluZ3RyaWFuZ2xlPTk2NjU7ZS53aGl0ZWxlbnRpY3VsYXJicmFja2V0bGVmdD0xMjMxMDtlLndoaXRlbGVudGljdWxhcmJyYWNrZXRyaWdodD0xMjMxMTtlLndoaXRlcmlnaHRwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY1NztlLndoaXRlcmlnaHRwb2ludGluZ3RyaWFuZ2xlPTk2NTU7ZS53aGl0ZXNtYWxsc3F1YXJlPTk2NDM7ZS53aGl0ZXNtaWxpbmdmYWNlPTk3ODY7ZS53aGl0ZXNxdWFyZT05NjMzO2Uud2hpdGVzdGFyPTk3MzQ7ZS53aGl0ZXRlbGVwaG9uZT05NzQzO2Uud2hpdGV0b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ9MTIzMTI7ZS53aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHQ9MTIzMTM7ZS53aGl0ZXVwcG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NTM7ZS53aGl0ZXVwcG9pbnRpbmd0cmlhbmdsZT05NjUxO2Uud2loaXJhZ2FuYT0xMjQzMjtlLndpa2F0YWthbmE9MTI1Mjg7ZS53aWtvcmVhbj0xMjYzOTtlLndtb25vc3BhY2U9NjUzNjc7ZS53b2hpcmFnYW5hPTEyNDM0O2Uud29rYXRha2FuYT0xMjUzMDtlLndva2F0YWthbmFoYWxmd2lkdGg9NjUzODI7ZS53b249ODM2MTtlLndvbm1vbm9zcGFjZT02NTUxMDtlLndvd2FlbnRoYWk9MzYyMztlLndwYXJlbj05Mzk0O2Uud3Jpbmc9NzgzMjtlLndzdXBlcmlvcj02OTU7ZS53dHVybmVkPTY1MztlLnd5bm49NDQ3O2UueD0xMjA7ZS54YWJvdmVjbWI9ODI5O2UueGJvcG9tb2ZvPTEyNTYyO2UueGNpcmNsZT05NDQ3O2UueGRpZXJlc2lzPTc4MjE7ZS54ZG90YWNjZW50PTc4MTk7ZS54ZWhhcm1lbmlhbj0xMzg5O2UueGk9OTU4O2UueG1vbm9zcGFjZT02NTM2ODtlLnhwYXJlbj05Mzk1O2UueHN1cGVyaW9yPTczOTtlLnk9MTIxO2UueWFhZG9zcXVhcmU9MTMxMzQ7ZS55YWJlbmdhbGk9MjQ3OTtlLnlhY3V0ZT0yNTM7ZS55YWRldmE9MjM1MTtlLnlhZWtvcmVhbj0xMjYyNjtlLnlhZ3VqYXJhdGk9MjczNTtlLnlhZ3VybXVraGk9MjYwNztlLnlhaGlyYWdhbmE9MTI0MjA7ZS55YWthdGFrYW5hPTEyNTE2O2UueWFrYXRha2FuYWhhbGZ3aWR0aD02NTQyODtlLnlha29yZWFuPTEyNjI1O2UueWFtYWtrYW50aGFpPTM2NjI7ZS55YXNtYWxsaGlyYWdhbmE9MTI0MTk7ZS55YXNtYWxsa2F0YWthbmE9MTI1MTU7ZS55YXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODg7ZS55YXRjeXJpbGxpYz0xMTIzO2UueWNpcmNsZT05NDQ4O2UueWNpcmN1bWZsZXg9Mzc1O2UueWRpZXJlc2lzPTI1NTtlLnlkb3RhY2NlbnQ9NzgyMztlLnlkb3RiZWxvdz03OTI1O2UueWVoYXJhYmljPTE2MTA7ZS55ZWhiYXJyZWVhcmFiaWM9MTc0NjtlLnllaGJhcnJlZWZpbmFsYXJhYmljPTY0NDMxO2UueWVoZmluYWxhcmFiaWM9NjUyNjY7ZS55ZWhoYW16YWFib3ZlYXJhYmljPTE1NzQ7ZS55ZWhoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNjI7ZS55ZWhoYW16YWFib3ZlaW5pdGlhbGFyYWJpYz02NTE2MztlLnllaGhhbXphYWJvdmVtZWRpYWxhcmFiaWM9NjUxNjQ7ZS55ZWhpbml0aWFsYXJhYmljPTY1MjY3O2UueWVobWVkaWFsYXJhYmljPTY1MjY4O2UueWVobWVlbWluaXRpYWxhcmFiaWM9NjQ3MzM7ZS55ZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ2MDA7ZS55ZWhub29uZmluYWxhcmFiaWM9NjQ2NjA7ZS55ZWh0aHJlZWRvdHNiZWxvd2FyYWJpYz0xNzQ1O2UueWVrb3JlYW49MTI2MzA7ZS55ZW49MTY1O2UueWVubW9ub3NwYWNlPTY1NTA5O2UueWVva29yZWFuPTEyNjI5O2UueWVvcmluaGlldWhrb3JlYW49MTI2Nzg7ZS55ZXJhaGJlbnlvbW9oZWJyZXc9MTQ1MDtlLnllcmFoYmVueW9tb2xlZnRoZWJyZXc9MTQ1MDtlLnllcmljeXJpbGxpYz0xMDk5O2UueWVydWRpZXJlc2lzY3lyaWxsaWM9MTI3MztlLnllc2lldW5na29yZWFuPTEyNjczO2UueWVzaWV1bmdwYW5zaW9za29yZWFuPTEyNjc1O2UueWVzaWV1bmdzaW9za29yZWFuPTEyNjc0O2UueWV0aXZoZWJyZXc9MTQzNDtlLnlncmF2ZT03OTIzO2UueWhvb2s9NDM2O2UueWhvb2thYm92ZT03OTI3O2UueWlhcm1lbmlhbj0xMzk3O2UueWljeXJpbGxpYz0xMTExO2UueWlrb3JlYW49MTI2NDI7ZS55aW55YW5nPTk3NzU7ZS55aXduYXJtZW5pYW49MTQxMDtlLnltb25vc3BhY2U9NjUzNjk7ZS55b2Q9MTQ5NztlLnlvZGRhZ2VzaD02NDMxMztlLnlvZGRhZ2VzaGhlYnJldz02NDMxMztlLnlvZGhlYnJldz0xNDk3O2UueW9keW9kaGVicmV3PTE1MjI7ZS55b2R5b2RwYXRhaGhlYnJldz02NDI4NztlLnlvaGlyYWdhbmE9MTI0MjQ7ZS55b2lrb3JlYW49MTI2ODE7ZS55b2thdGFrYW5hPTEyNTIwO2UueW9rYXRha2FuYWhhbGZ3aWR0aD02NTQzMDtlLnlva29yZWFuPTEyNjM1O2UueW9zbWFsbGhpcmFnYW5hPTEyNDIzO2UueW9zbWFsbGthdGFrYW5hPTEyNTE5O2UueW9zbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzkwO2UueW90Z3JlZWs9MTAxMTtlLnlveWFla29yZWFuPTEyNjgwO2UueW95YWtvcmVhbj0xMjY3OTtlLnlveWFrdGhhaT0zNjE4O2UueW95aW5ndGhhaT0zNTk3O2UueXBhcmVuPTkzOTY7ZS55cG9nZWdyYW1tZW5pPTg5MDtlLnlwb2dlZ3JhbW1lbmlncmVla2NtYj04Mzc7ZS55cj00MjI7ZS55cmluZz03ODMzO2UueXN1cGVyaW9yPTY5NjtlLnl0aWxkZT03OTI5O2UueXR1cm5lZD02NTQ7ZS55dWhpcmFnYW5hPTEyNDIyO2UueXVpa29yZWFuPTEyNjg0O2UueXVrYXRha2FuYT0xMjUxODtlLnl1a2F0YWthbmFoYWxmd2lkdGg9NjU0Mjk7ZS55dWtvcmVhbj0xMjY0MDtlLnl1c2JpZ2N5cmlsbGljPTExMzE7ZS55dXNiaWdpb3RpZmllZGN5cmlsbGljPTExMzM7ZS55dXNsaXR0bGVjeXJpbGxpYz0xMTI3O2UueXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYz0xMTI5O2UueXVzbWFsbGhpcmFnYW5hPTEyNDIxO2UueXVzbWFsbGthdGFrYW5hPTEyNTE3O2UueXVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg5O2UueXV5ZWtvcmVhbj0xMjY4MztlLnl1eWVva29yZWFuPTEyNjgyO2UueXlhYmVuZ2FsaT0yNTI3O2UueXlhZGV2YT0yMzk5O2Uuej0xMjI7ZS56YWFybWVuaWFuPTEzODI7ZS56YWN1dGU9Mzc4O2UuemFkZXZhPTIzOTU7ZS56YWd1cm11a2hpPTI2NTE7ZS56YWhhcmFiaWM9MTU5MjtlLnphaGZpbmFsYXJhYmljPTY1MjIyO2UuemFoaW5pdGlhbGFyYWJpYz02NTIyMztlLnphaGlyYWdhbmE9MTIzNzQ7ZS56YWhtZWRpYWxhcmFiaWM9NjUyMjQ7ZS56YWluYXJhYmljPTE1ODY7ZS56YWluZmluYWxhcmFiaWM9NjUyMDA7ZS56YWthdGFrYW5hPTEyNDcwO2UuemFxZWZnYWRvbGhlYnJldz0xNDI5O2UuemFxZWZxYXRhbmhlYnJldz0xNDI4O2UuemFycWFoZWJyZXc9MTQzMjtlLnpheWluPTE0OTQ7ZS56YXlpbmRhZ2VzaD02NDMxMDtlLnpheWluZGFnZXNoaGVicmV3PTY0MzEwO2UuemF5aW5oZWJyZXc9MTQ5NDtlLnpib3BvbW9mbz0xMjU2NztlLnpjYXJvbj0zODI7ZS56Y2lyY2xlPTk0NDk7ZS56Y2lyY3VtZmxleD03ODI1O2UuemN1cmw9NjU3O2UuemRvdD0zODA7ZS56ZG90YWNjZW50PTM4MDtlLnpkb3RiZWxvdz03ODI3O2UuemVjeXJpbGxpYz0xMDc5O2UuemVkZXNjZW5kZXJjeXJpbGxpYz0xMTc3O2UuemVkaWVyZXNpc2N5cmlsbGljPTEyNDc7ZS56ZWhpcmFnYW5hPTEyMzgwO2UuemVrYXRha2FuYT0xMjQ3NjtlLnplcm89NDg7ZS56ZXJvYXJhYmljPTE2MzI7ZS56ZXJvYmVuZ2FsaT0yNTM0O2UuemVyb2RldmE9MjQwNjtlLnplcm9ndWphcmF0aT0yNzkwO2UuemVyb2d1cm11a2hpPTI2NjI7ZS56ZXJvaGFja2FyYWJpYz0xNjMyO2UuemVyb2luZmVyaW9yPTgzMjA7ZS56ZXJvbW9ub3NwYWNlPTY1Mjk2O2UuemVyb29sZHN0eWxlPTYzMjgwO2UuemVyb3BlcnNpYW49MTc3NjtlLnplcm9zdXBlcmlvcj04MzA0O2UuemVyb3RoYWk9MzY2NDtlLnplcm93aWR0aGpvaW5lcj02NTI3OTtlLnplcm93aWR0aG5vbmpvaW5lcj04MjA0O2UuemVyb3dpZHRoc3BhY2U9ODIwMztlLnpldGE9OTUwO2Uuemhib3BvbW9mbz0xMjU2MztlLnpoZWFybWVuaWFuPTEzODY7ZS56aGVicmV2ZWN5cmlsbGljPTEyMTg7ZS56aGVjeXJpbGxpYz0xMDc4O2UuemhlZGVzY2VuZGVyY3lyaWxsaWM9MTE3NTtlLnpoZWRpZXJlc2lzY3lyaWxsaWM9MTI0NTtlLnppaGlyYWdhbmE9MTIzNzY7ZS56aWthdGFrYW5hPTEyNDcyO2Uuemlub3JoZWJyZXc9MTQ1NDtlLnpsaW5lYmVsb3c9NzgyOTtlLnptb25vc3BhY2U9NjUzNzA7ZS56b2hpcmFnYW5hPTEyMzgyO2Uuem9rYXRha2FuYT0xMjQ3ODtlLnpwYXJlbj05Mzk3O2UuenJldHJvZmxleGhvb2s9NjU2O2UuenN0cm9rZT00Mzg7ZS56dWhpcmFnYW5hPTEyMzc4O2UuenVrYXRha2FuYT0xMjQ3NDtlWyIubm90ZGVmIl09MDtlLmFuZ2JyYWNrZXRsZWZ0YmlnPTkwMDE7ZS5hbmdicmFja2V0bGVmdEJpZz05MDAxO2UuYW5nYnJhY2tldGxlZnRiaWdnPTkwMDE7ZS5hbmdicmFja2V0bGVmdEJpZ2c9OTAwMTtlLmFuZ2JyYWNrZXRyaWdodEJpZz05MDAyO2UuYW5nYnJhY2tldHJpZ2h0YmlnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRCaWdnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRiaWdnPTkwMDI7ZS5hcnJvd2hvb2tsZWZ0PTg2MTg7ZS5hcnJvd2hvb2tyaWdodD04NjE3O2UuYXJyb3dsZWZ0dG9waGFsZj04NjM2O2UuYXJyb3dsZWZ0Ym90aGFsZj04NjM3O2UuYXJyb3dub3J0aGVhc3Q9ODU5OTtlLmFycm93bm9ydGh3ZXN0PTg1OTg7ZS5hcnJvd3JpZ2h0dG9waGFsZj04NjQwO2UuYXJyb3dyaWdodGJvdGhhbGY9ODY0MTtlLmFycm93c291dGhlYXN0PTg2MDA7ZS5hcnJvd3NvdXRod2VzdD04NjAxO2UuYmFja3NsYXNoYmlnPTg3MjY7ZS5iYWNrc2xhc2hCaWc9ODcyNjtlLmJhY2tzbGFzaEJpZ2c9ODcyNjtlLmJhY2tzbGFzaGJpZ2c9ODcyNjtlLmJhcmRibD04MjE0O2UuYnJhY2VodGlwZG93bmxlZnQ9NjUwNzk7ZS5icmFjZWh0aXBkb3ducmlnaHQ9NjUwNzk7ZS5icmFjZWh0aXB1cGxlZnQ9NjUwODA7ZS5icmFjZWh0aXB1cHJpZ2h0PTY1MDgwO2UuYnJhY2VsZWZ0QmlnPTEyMztlLmJyYWNlbGVmdGJpZz0xMjM7ZS5icmFjZWxlZnRiaWdnPTEyMztlLmJyYWNlbGVmdEJpZ2c9MTIzO2UuYnJhY2VyaWdodEJpZz0xMjU7ZS5icmFjZXJpZ2h0YmlnPTEyNTtlLmJyYWNlcmlnaHRiaWdnPTEyNTtlLmJyYWNlcmlnaHRCaWdnPTEyNTtlLmJyYWNrZXRsZWZ0YmlnPTkxO2UuYnJhY2tldGxlZnRCaWc9OTE7ZS5icmFja2V0bGVmdGJpZ2c9OTE7ZS5icmFja2V0bGVmdEJpZ2c9OTE7ZS5icmFja2V0cmlnaHRCaWc9OTM7ZS5icmFja2V0cmlnaHRiaWc9OTM7ZS5icmFja2V0cmlnaHRiaWdnPTkzO2UuYnJhY2tldHJpZ2h0QmlnZz05MztlLmNlaWxpbmdsZWZ0YmlnPTg5Njg7ZS5jZWlsaW5nbGVmdEJpZz04OTY4O2UuY2VpbGluZ2xlZnRCaWdnPTg5Njg7ZS5jZWlsaW5nbGVmdGJpZ2c9ODk2ODtlLmNlaWxpbmdyaWdodGJpZz04OTY5O2UuY2VpbGluZ3JpZ2h0QmlnPTg5Njk7ZS5jZWlsaW5ncmlnaHRiaWdnPTg5Njk7ZS5jZWlsaW5ncmlnaHRCaWdnPTg5Njk7ZS5jaXJjbGVkb3RkaXNwbGF5PTg4NTc7ZS5jaXJjbGVkb3R0ZXh0PTg4NTc7ZS5jaXJjbGVtdWx0aXBseWRpc3BsYXk9ODg1NTtlLmNpcmNsZW11bHRpcGx5dGV4dD04ODU1O2UuY2lyY2xlcGx1c2Rpc3BsYXk9ODg1MztlLmNpcmNsZXBsdXN0ZXh0PTg4NTM7ZS5jb250aW50ZWdyYWxkaXNwbGF5PTg3NTA7ZS5jb250aW50ZWdyYWx0ZXh0PTg3NTA7ZS5jb3Byb2R1Y3RkaXNwbGF5PTg3MjA7ZS5jb3Byb2R1Y3R0ZXh0PTg3MjA7ZS5mbG9vcmxlZnRCaWc9ODk3MDtlLmZsb29ybGVmdGJpZz04OTcwO2UuZmxvb3JsZWZ0YmlnZz04OTcwO2UuZmxvb3JsZWZ0QmlnZz04OTcwO2UuZmxvb3JyaWdodGJpZz04OTcxO2UuZmxvb3JyaWdodEJpZz04OTcxO2UuZmxvb3JyaWdodEJpZ2c9ODk3MTtlLmZsb29ycmlnaHRiaWdnPTg5NzE7ZS5oYXR3aWRlPTc3MDtlLmhhdHdpZGVyPTc3MDtlLmhhdHdpZGVzdD03NzA7ZS5pbnRlcmNhbD03NDg4O2UuaW50ZWdyYWxkaXNwbGF5PTg3NDc7ZS5pbnRlZ3JhbHRleHQ9ODc0NztlLmludGVyc2VjdGlvbmRpc3BsYXk9ODg5ODtlLmludGVyc2VjdGlvbnRleHQ9ODg5ODtlLmxvZ2ljYWxhbmRkaXNwbGF5PTg3NDM7ZS5sb2dpY2FsYW5kdGV4dD04NzQzO2UubG9naWNhbG9yZGlzcGxheT04NzQ0O2UubG9naWNhbG9ydGV4dD04NzQ0O2UucGFyZW5sZWZ0QmlnPTQwO2UucGFyZW5sZWZ0YmlnPTQwO2UucGFyZW5sZWZ0QmlnZz00MDtlLnBhcmVubGVmdGJpZ2c9NDA7ZS5wYXJlbnJpZ2h0QmlnPTQxO2UucGFyZW5yaWdodGJpZz00MTtlLnBhcmVucmlnaHRCaWdnPTQxO2UucGFyZW5yaWdodGJpZ2c9NDE7ZS5wcmltZT04MjQyO2UucHJvZHVjdGRpc3BsYXk9ODcxOTtlLnByb2R1Y3R0ZXh0PTg3MTk7ZS5yYWRpY2FsYmlnPTg3MzA7ZS5yYWRpY2FsQmlnPTg3MzA7ZS5yYWRpY2FsQmlnZz04NzMwO2UucmFkaWNhbGJpZ2c9ODczMDtlLnJhZGljYWxidD04NzMwO2UucmFkaWNhbHRwPTg3MzA7ZS5yYWRpY2FsdmVydGV4PTg3MzA7ZS5zbGFzaGJpZz00NztlLnNsYXNoQmlnPTQ3O2Uuc2xhc2hCaWdnPTQ3O2Uuc2xhc2hiaWdnPTQ3O2Uuc3VtbWF0aW9uZGlzcGxheT04NzIxO2Uuc3VtbWF0aW9udGV4dD04NzIxO2UudGlsZGV3aWRlPTczMjtlLnRpbGRld2lkZXI9NzMyO2UudGlsZGV3aWRlc3Q9NzMyO2UudW5pb25kaXNwbGF5PTg4OTk7ZS51bmlvbm11bHRpZGlzcGxheT04ODQ2O2UudW5pb25tdWx0aXRleHQ9ODg0NjtlLnVuaW9uc3FkaXNwbGF5PTg4NTI7ZS51bmlvbnNxdGV4dD04ODUyO2UudW5pb250ZXh0PTg4OTk7ZS52ZXh0ZW5kZG91YmxlPTg3NDE7ZS52ZXh0ZW5kc2luZ2xlPTg3Mzl9KSksbj0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MzI7ZS5hMT05OTg1O2UuYTI9OTk4NjtlLmEyMDI9OTk4NztlLmEzPTk5ODg7ZS5hND05NzQyO2UuYTU9OTk5MDtlLmExMTk9OTk5MTtlLmExMTg9OTk5MjtlLmExMTc9OTk5MztlLmExMT05NzU1O2UuYTEyPTk3NTg7ZS5hMTM9OTk5NjtlLmExND05OTk3O2UuYTE1PTk5OTg7ZS5hMTY9OTk5OTtlLmExMDU9MWU0O2UuYTE3PTEwMDAxO2UuYTE4PTEwMDAyO2UuYTE5PTEwMDAzO2UuYTIwPTEwMDA0O2UuYTIxPTEwMDA1O2UuYTIyPTEwMDA2O2UuYTIzPTEwMDA3O2UuYTI0PTEwMDA4O2UuYTI1PTEwMDA5O2UuYTI2PTEwMDEwO2UuYTI3PTEwMDExO2UuYTI4PTEwMDEyO2UuYTY9MTAwMTM7ZS5hNz0xMDAxNDtlLmE4PTEwMDE1O2UuYTk9MTAwMTY7ZS5hMTA9MTAwMTc7ZS5hMjk9MTAwMTg7ZS5hMzA9MTAwMTk7ZS5hMzE9MTAwMjA7ZS5hMzI9MTAwMjE7ZS5hMzM9MTAwMjI7ZS5hMzQ9MTAwMjM7ZS5hMzU9OTczMztlLmEzNj0xMDAyNTtlLmEzNz0xMDAyNjtlLmEzOD0xMDAyNztlLmEzOT0xMDAyODtlLmE0MD0xMDAyOTtlLmE0MT0xMDAzMDtlLmE0Mj0xMDAzMTtlLmE0Mz0xMDAzMjtlLmE0ND0xMDAzMztlLmE0NT0xMDAzNDtlLmE0Nj0xMDAzNTtlLmE0Nz0xMDAzNjtlLmE0OD0xMDAzNztlLmE0OT0xMDAzODtlLmE1MD0xMDAzOTtlLmE1MT0xMDA0MDtlLmE1Mj0xMDA0MTtlLmE1Mz0xMDA0MjtlLmE1ND0xMDA0MztlLmE1NT0xMDA0NDtlLmE1Nj0xMDA0NTtlLmE1Nz0xMDA0NjtlLmE1OD0xMDA0NztlLmE1OT0xMDA0ODtlLmE2MD0xMDA0OTtlLmE2MT0xMDA1MDtlLmE2Mj0xMDA1MTtlLmE2Mz0xMDA1MjtlLmE2ND0xMDA1MztlLmE2NT0xMDA1NDtlLmE2Nj0xMDA1NTtlLmE2Nz0xMDA1NjtlLmE2OD0xMDA1NztlLmE2OT0xMDA1ODtlLmE3MD0xMDA1OTtlLmE3MT05Njc5O2UuYTcyPTEwMDYxO2UuYTczPTk2MzI7ZS5hNzQ9MTAwNjM7ZS5hMjAzPTEwMDY0O2UuYTc1PTEwMDY1O2UuYTIwND0xMDA2NjtlLmE3Nj05NjUwO2UuYTc3PTk2NjA7ZS5hNzg9OTY3MDtlLmE3OT0xMDA3MDtlLmE4MT05Njg3O2UuYTgyPTEwMDcyO2UuYTgzPTEwMDczO2UuYTg0PTEwMDc0O2UuYTk3PTEwMDc1O2UuYTk4PTEwMDc2O2UuYTk5PTEwMDc3O2UuYTEwMD0xMDA3ODtlLmExMDE9MTAwODE7ZS5hMTAyPTEwMDgyO2UuYTEwMz0xMDA4MztlLmExMDQ9MTAwODQ7ZS5hMTA2PTEwMDg1O2UuYTEwNz0xMDA4NjtlLmExMDg9MTAwODc7ZS5hMTEyPTk4Mjc7ZS5hMTExPTk4MzA7ZS5hMTEwPTk4Mjk7ZS5hMTA5PTk4MjQ7ZS5hMTIwPTkzMTI7ZS5hMTIxPTkzMTM7ZS5hMTIyPTkzMTQ7ZS5hMTIzPTkzMTU7ZS5hMTI0PTkzMTY7ZS5hMTI1PTkzMTc7ZS5hMTI2PTkzMTg7ZS5hMTI3PTkzMTk7ZS5hMTI4PTkzMjA7ZS5hMTI5PTkzMjE7ZS5hMTMwPTEwMTAyO2UuYTEzMT0xMDEwMztlLmExMzI9MTAxMDQ7ZS5hMTMzPTEwMTA1O2UuYTEzND0xMDEwNjtlLmExMzU9MTAxMDc7ZS5hMTM2PTEwMTA4O2UuYTEzNz0xMDEwOTtlLmExMzg9MTAxMTA7ZS5hMTM5PTEwMTExO2UuYTE0MD0xMDExMjtlLmExNDE9MTAxMTM7ZS5hMTQyPTEwMTE0O2UuYTE0Mz0xMDExNTtlLmExNDQ9MTAxMTY7ZS5hMTQ1PTEwMTE3O2UuYTE0Nj0xMDExODtlLmExNDc9MTAxMTk7ZS5hMTQ4PTEwMTIwO2UuYTE0OT0xMDEyMTtlLmExNTA9MTAxMjI7ZS5hMTUxPTEwMTIzO2UuYTE1Mj0xMDEyNDtlLmExNTM9MTAxMjU7ZS5hMTU0PTEwMTI2O2UuYTE1NT0xMDEyNztlLmExNTY9MTAxMjg7ZS5hMTU3PTEwMTI5O2UuYTE1OD0xMDEzMDtlLmExNTk9MTAxMzE7ZS5hMTYwPTEwMTMyO2UuYTE2MT04NTk0O2UuYTE2Mz04NTk2O2UuYTE2ND04NTk3O2UuYTE5Nj0xMDEzNjtlLmExNjU9MTAxMzc7ZS5hMTkyPTEwMTM4O2UuYTE2Nj0xMDEzOTtlLmExNjc9MTAxNDA7ZS5hMTY4PTEwMTQxO2UuYTE2OT0xMDE0MjtlLmExNzA9MTAxNDM7ZS5hMTcxPTEwMTQ0O2UuYTE3Mj0xMDE0NTtlLmExNzM9MTAxNDY7ZS5hMTYyPTEwMTQ3O2UuYTE3ND0xMDE0ODtlLmExNzU9MTAxNDk7ZS5hMTc2PTEwMTUwO2UuYTE3Nz0xMDE1MTtlLmExNzg9MTAxNTI7ZS5hMTc5PTEwMTUzO2UuYTE5Mz0xMDE1NDtlLmExODA9MTAxNTU7ZS5hMTk5PTEwMTU2O2UuYTE4MT0xMDE1NztlLmEyMDA9MTAxNTg7ZS5hMTgyPTEwMTU5O2UuYTIwMT0xMDE2MTtlLmExODM9MTAxNjI7ZS5hMTg0PTEwMTYzO2UuYTE5Nz0xMDE2NDtlLmExODU9MTAxNjU7ZS5hMTk0PTEwMTY2O2UuYTE5OD0xMDE2NztlLmExODY9MTAxNjg7ZS5hMTk1PTEwMTY5O2UuYTE4Nz0xMDE3MDtlLmExODg9MTAxNzE7ZS5hMTg5PTEwMTcyO2UuYTE5MD0xMDE3MztlLmExOTE9MTAxNzQ7ZS5hODk9MTAwODg7ZS5hOTA9MTAwODk7ZS5hOTM9MTAwOTA7ZS5hOTQ9MTAwOTE7ZS5hOTE9MTAwOTI7ZS5hOTI9MTAwOTM7ZS5hMjA1PTEwMDk0O2UuYTg1PTEwMDk1O2UuYTIwNj0xMDA5NjtlLmE4Nj0xMDA5NztlLmE4Nz0xMDA5ODtlLmE4OD0xMDA5OTtlLmE5NT0xMDEwMDtlLmE5Nj0xMDEwMTtlWyIubm90ZGVmIl09MH0pKX0sKGUsdCxhKT0+e2Eucih0KTthLmQodCx7Y2xlYXJVbmljb2RlQ2FjaGVzOigpPT5jbGVhclVuaWNvZGVDYWNoZXMsZ2V0Q2hhclVuaWNvZGVDYXRlZ29yeTooKT0+Z2V0Q2hhclVuaWNvZGVDYXRlZ29yeSxnZXRVbmljb2RlRm9yR2x5cGg6KCk9PmdldFVuaWNvZGVGb3JHbHlwaCxnZXRVbmljb2RlUmFuZ2VGb3I6KCk9PmdldFVuaWNvZGVSYW5nZUZvcixtYXBTcGVjaWFsVW5pY29kZVZhbHVlczooKT0+bWFwU3BlY2lhbFVuaWNvZGVWYWx1ZXN9KTtjb25zdCByPSgwLGEoMykuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZVs2MzcyMV09MTY5O2VbNjMxOTNdPTE2OTtlWzYzNzIwXT0xNzQ7ZVs2MzE5NF09MTc0O2VbNjM3MjJdPTg0ODI7ZVs2MzE5NV09ODQ4MjtlWzYzNzI5XT05MTI3O2VbNjM3MzBdPTkxMjg7ZVs2MzczMV09OTEyOTtlWzYzNzQwXT05MTMxO2VbNjM3NDFdPTkxMzI7ZVs2Mzc0Ml09OTEzMztlWzYzNzI2XT05MTIxO2VbNjM3MjddPTkxMjI7ZVs2MzcyOF09OTEyMztlWzYzNzM3XT05MTI0O2VbNjM3MzhdPTkxMjU7ZVs2MzczOV09OTEyNjtlWzYzNzIzXT05MTE1O2VbNjM3MjRdPTkxMTY7ZVs2MzcyNV09OTExNztlWzYzNzM0XT05MTE4O2VbNjM3MzVdPTkxMTk7ZVs2MzczNl09OTEyMH0pKTtmdW5jdGlvbiBtYXBTcGVjaWFsVW5pY29kZVZhbHVlcyhlKXtyZXR1cm4gZT49NjU1MjAmJmU8PTY1NTM1PzA6ZT49NjI5NzYmJmU8PTYzNzQzP3IoKVtlXXx8ZToxNzM9PT1lPzQ1OmV9ZnVuY3Rpb24gZ2V0VW5pY29kZUZvckdseXBoKGUsdCl7bGV0IGE9dFtlXTtpZih2b2lkIDAhPT1hKXJldHVybiBhO2lmKCFlKXJldHVybi0xO2lmKCJ1Ij09PWVbMF0pe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IHI7aWYoNz09PXQmJiJuIj09PWVbMV0mJiJpIj09PWVbMl0pcj1lLnN1YnN0cmluZygzKTtlbHNle2lmKCEodD49NSYmdDw9NykpcmV0dXJuLTE7cj1lLnN1YnN0cmluZygxKX1pZihyPT09ci50b1VwcGVyQ2FzZSgpKXthPXBhcnNlSW50KHIsMTYpO2lmKGE+PTApcmV0dXJuIGF9fXJldHVybi0xfWNvbnN0IGk9W1swLDEyN10sWzEyOCwyNTVdLFsyNTYsMzgzXSxbMzg0LDU5MV0sWzU5Miw2ODcsNzQyNCw3NTUxLDc1NTIsNzYxNV0sWzY4OCw3NjcsNDI3NTIsNDI3ODNdLFs3NjgsODc5LDc2MTYsNzY3OV0sWzg4MCwxMDIzXSxbMTEzOTIsMTE1MTldLFsxMDI0LDEyNzksMTI4MCwxMzI3LDExNzQ0LDExNzc1LDQyNTYwLDQyNjU1XSxbMTMyOCwxNDIzXSxbMTQyNCwxNTM1XSxbNDIyNDAsNDI1NTldLFsxNTM2LDE3OTEsMTg3MiwxOTE5XSxbMTk4NCwyMDQ3XSxbMjMwNCwyNDMxXSxbMjQzMiwyNTU5XSxbMjU2MCwyNjg3XSxbMjY4OCwyODE1XSxbMjgxNiwyOTQzXSxbMjk0NCwzMDcxXSxbMzA3MiwzMTk5XSxbMzIwMCwzMzI3XSxbMzMyOCwzNDU1XSxbMzU4NCwzNzExXSxbMzcxMiwzODM5XSxbNDI1Niw0MzUxLDExNTIwLDExNTY3XSxbNjkxMiw3MDM5XSxbNDM1Miw0NjA3XSxbNzY4MCw3OTM1LDExMzYwLDExMzkxLDQyNzg0LDQzMDA3XSxbNzkzNiw4MTkxXSxbODE5Miw4MzAzLDExNzc2LDExOTAzXSxbODMwNCw4MzUxXSxbODM1Miw4Mzk5XSxbODQwMCw4NDQ3XSxbODQ0OCw4NTI3XSxbODUyOCw4NTkxXSxbODU5Miw4NzAzLDEwMjI0LDEwMjM5LDEwNDk2LDEwNjIzLDExMDA4LDExMjYzXSxbODcwNCw4OTU5LDEwNzUyLDExMDA3LDEwMTc2LDEwMjIzLDEwNjI0LDEwNzUxXSxbODk2MCw5MjE1XSxbOTIxNiw5Mjc5XSxbOTI4MCw5MzExXSxbOTMxMiw5NDcxXSxbOTQ3Miw5NTk5XSxbOTYwMCw5NjMxXSxbOTYzMiw5NzI3XSxbOTcyOCw5OTgzXSxbOTk4NCwxMDE3NV0sWzEyMjg4LDEyMzUxXSxbMTIzNTIsMTI0NDddLFsxMjQ0OCwxMjU0MywxMjc4NCwxMjc5OV0sWzEyNTQ0LDEyNTkxLDEyNzA0LDEyNzM1XSxbMTI1OTIsMTI2ODddLFs0MzA3Miw0MzEzNV0sWzEyODAwLDEzMDU1XSxbMTMwNTYsMTMzMTFdLFs0NDAzMiw1NTIxNV0sWzU1Mjk2LDU3MzQzXSxbNjc4NDAsNjc4NzFdLFsxOTk2OCw0MDk1OSwxMTkwNCwxMjAzMSwxMjAzMiwxMjI1NSwxMjI3MiwxMjI4NywxMzMxMiwxOTkwMywxMzEwNzIsMTczNzkxLDEyNjg4LDEyNzAzXSxbNTczNDQsNjM3NDNdLFsxMjczNiwxMjc4Myw2Mzc0NCw2NDI1NSwxOTQ1NjAsMTk1MTAzXSxbNjQyNTYsNjQzMzVdLFs2NDMzNiw2NTAyM10sWzY1MDU2LDY1MDcxXSxbNjUwNDAsNjUwNTVdLFs2NTEwNCw2NTEzNV0sWzY1MTM2LDY1Mjc5XSxbNjUyODAsNjU1MTldLFs2NTUyMCw2NTUzNV0sWzM4NDAsNDA5NV0sWzE3OTIsMTg3MV0sWzE5MjAsMTk4M10sWzM0NTYsMzU4M10sWzQwOTYsNDI1NV0sWzQ2MDgsNDk5MSw0OTkyLDUwMjMsMTE2NDgsMTE3NDNdLFs1MDI0LDUxMTldLFs1MTIwLDU3NTldLFs1NzYwLDU3OTFdLFs1NzkyLDU4ODddLFs2MDE2LDYxNDNdLFs2MTQ0LDYzMTldLFsxMDI0MCwxMDQ5NV0sWzQwOTYwLDQyMTI3XSxbNTg4OCw1OTE5LDU5MjAsNTk1MSw1OTUyLDU5ODMsNTk4NCw2MDE1XSxbNjYzMDQsNjYzNTFdLFs2NjM1Miw2NjM4M10sWzY2NTYwLDY2NjM5XSxbMTE4Nzg0LDExOTAzOSwxMTkwNDAsMTE5Mjk1LDExOTI5NiwxMTkzNzVdLFsxMTk4MDgsMTIwODMxXSxbMTA0NDQ4MCwxMDQ4NTczXSxbNjUwMjQsNjUwMzksOTE3NzYwLDkxNzk5OV0sWzkxNzUwNCw5MTc2MzFdLFs2NDAwLDY0NzldLFs2NDgwLDY1MjddLFs2NTI4LDY2MjNdLFs2NjU2LDY2ODddLFsxMTI2NCwxMTM1OV0sWzExNTY4LDExNjQ3XSxbMTk5MDQsMTk5NjddLFs0MzAwOCw0MzA1NV0sWzY1NTM2LDY1NjYzLDY1NjY0LDY1NzkxLDY1NzkyLDY1ODU1XSxbNjU4NTYsNjU5MzVdLFs2NjQzMiw2NjQ2M10sWzY2NDY0LDY2NTI3XSxbNjY2NDAsNjY2ODddLFs2NjY4OCw2NjczNV0sWzY3NTg0LDY3NjQ3XSxbNjgwOTYsNjgxOTFdLFsxMTk1NTIsMTE5NjQ3XSxbNzM3MjgsNzQ3NTEsNzQ3NTIsNzQ4NzldLFsxMTk2NDgsMTE5Njc5XSxbNzA0MCw3MTAzXSxbNzE2OCw3MjQ3XSxbNzI0OCw3Mjk1XSxbNDMxMzYsNDMyMzFdLFs0MzI2NCw0MzMxMV0sWzQzMzEyLDQzMzU5XSxbNDM1MjAsNDM2MTVdLFs2NTkzNiw2NTk5OV0sWzY2ZTMsNjYwNDddLFs2NjIwOCw2NjI3MSw2NjE3Niw2NjIwNyw2Nzg3Miw2NzkwM10sWzEyNzAyNCwxMjcxMzUsMTI2OTc2LDEyNzAyM11dO2Z1bmN0aW9uIGdldFVuaWNvZGVSYW5nZUZvcihlLHQ9LTEpe2lmKC0xIT09dCl7Y29uc3QgYT1pW3RdO2ZvcihsZXQgcj0wLGk9YS5sZW5ndGg7cjxpO3IrPTIpaWYoZT49YVtyXSYmZTw9YVtyKzFdKXJldHVybiB0fWZvcihsZXQgdD0wLGE9aS5sZW5ndGg7dDxhO3QrKyl7Y29uc3QgYT1pW3RdO2ZvcihsZXQgcj0wLGk9YS5sZW5ndGg7cjxpO3IrPTIpaWYoZT49YVtyXSYmZTw9YVtyKzFdKXJldHVybiB0fXJldHVybi0xfWNvbnN0IG49bmV3IFJlZ0V4cCgiXihcXHMpfChcXHB7TW59KXwoXFxwe0NmfSkkIiwidSIpLHM9bmV3IE1hcDtmdW5jdGlvbiBnZXRDaGFyVW5pY29kZUNhdGVnb3J5KGUpe2NvbnN0IHQ9cy5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBhPWUubWF0Y2gobikscj17aXNXaGl0ZXNwYWNlOiEhYT8uWzFdLGlzWmVyb1dpZHRoRGlhY3JpdGljOiEhYT8uWzJdLGlzSW52aXNpYmxlRm9ybWF0TWFyazohIWE/LlszXX07cy5zZXQoZSxyKTtyZXR1cm4gcn1mdW5jdGlvbiBjbGVhclVuaWNvZGVDYWNoZXMoKXtzLmNsZWFyKCl9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuZ2V0U2VyaWZGb250cz10LmdldE5vblN0ZEZvbnRNYXA9dC5nZXRHbHlwaE1hcEZvclN0YW5kYXJkRm9udHM9dC5nZXRGb250TmFtZVRvRmlsZU1hcD12b2lkIDA7dC5nZXRTdGFuZGFyZEZvbnROYW1lPWZ1bmN0aW9uIGdldFN0YW5kYXJkRm9udE5hbWUoZSl7Y29uc3QgdD0oMCxpLm5vcm1hbGl6ZUZvbnROYW1lKShlKTtyZXR1cm4gbigpW3RdfTt0LmdldFN5bWJvbHNGb250cz10LmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQ2FsaWJyaT10LmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQXJpYWxCbGFjaz10LmdldFN0ZEZvbnRNYXA9dm9pZCAwO3ZhciByPWEoMyksaT1hKDM4KTtjb25zdCBuPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZVsiVGltZXMtUm9tYW4iXT0iVGltZXMtUm9tYW4iO2UuSGVsdmV0aWNhPSJIZWx2ZXRpY2EiO2UuQ291cmllcj0iQ291cmllciI7ZS5TeW1ib2w9IlN5bWJvbCI7ZVsiVGltZXMtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJIZWx2ZXRpY2EtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ291cmllci1Cb2xkIl09IkNvdXJpZXItQm9sZCI7ZS5aYXBmRGluZ2JhdHM9IlphcGZEaW5nYmF0cyI7ZVsiVGltZXMtSXRhbGljIl09IlRpbWVzLUl0YWxpYyI7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkNvdXJpZXItT2JsaXF1ZSJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlLkFyaWFsTmFycm93PSJIZWx2ZXRpY2EiO2VbIkFyaWFsTmFycm93LUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsTmFycm93LUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbE5hcnJvdy1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxCbGFjaz0iSGVsdmV0aWNhIjtlWyJBcmlhbEJsYWNrLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsQmxhY2stQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsQmxhY2stSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJBcmlhbC1CbGFjayJdPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJsYWNrLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUJsYWNrLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1CbGFjay1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWw9IkhlbHZldGljYSI7ZVsiQXJpYWwtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5BcmlhbE1UPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJvbGRNVCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtSXRhbGljTVQiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkFyaWFsLUJvbGRJdGFsaWNNVC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWwtQm9sZE1ULUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUl0YWxpY01ULUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5BcmlhbFVuaWNvZGVNUz0iSGVsdmV0aWNhIjtlWyJBcmlhbFVuaWNvZGVNUy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbFVuaWNvZGVNUy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWxVbmljb2RlTVMtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJDb3VyaWVyLUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllci1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlLkNvdXJpZXJOZXc9IkNvdXJpZXIiO2VbIkNvdXJpZXJOZXctQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2VbIkNvdXJpZXJOZXctQm9sZEl0YWxpYyJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJDb3VyaWVyTmV3LUl0YWxpYyJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIkNvdXJpZXJOZXdQUy1Cb2xkSXRhbGljTVQiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllck5ld1BTLUJvbGRNVCJdPSJDb3VyaWVyLUJvbGQiO2VbIkNvdXJpZXJOZXdQUy1JdGFsaWNNVCJdPSJDb3VyaWVyLU9ibGlxdWUiO2UuQ291cmllck5ld1BTTVQ9IkNvdXJpZXIiO2VbIkhlbHZldGljYS1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiSGVsdmV0aWNhLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiU3ltYm9sLUJvbGQiXT0iU3ltYm9sIjtlWyJTeW1ib2wtQm9sZEl0YWxpYyJdPSJTeW1ib2wiO2VbIlN5bWJvbC1JdGFsaWMiXT0iU3ltYm9sIjtlLlRpbWVzTmV3Um9tYW49IlRpbWVzLVJvbWFuIjtlWyJUaW1lc05ld1JvbWFuLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hbi1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW4tSXRhbGljIl09IlRpbWVzLUl0YWxpYyI7ZS5UaW1lc05ld1JvbWFuUFM9IlRpbWVzLVJvbWFuIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZEl0YWxpY01UIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QUy1Cb2xkTVQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QUy1JdGFsaWNNVCJdPSJUaW1lcy1JdGFsaWMiO2UuVGltZXNOZXdSb21hblBTTVQ9IlRpbWVzLVJvbWFuIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QU01ULUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTTVQtSXRhbGljIl09IlRpbWVzLUl0YWxpYyJ9KSk7dC5nZXRTdGRGb250TWFwPW47Y29uc3Qgcz0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2UuQ291cmllcj0iRm94aXRGaXhlZC5wZmIiO2VbIkNvdXJpZXItQm9sZCJdPSJGb3hpdEZpeGVkQm9sZC5wZmIiO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT0iRm94aXRGaXhlZEJvbGRJdGFsaWMucGZiIjtlWyJDb3VyaWVyLU9ibGlxdWUiXT0iRm94aXRGaXhlZEl0YWxpYy5wZmIiO2UuSGVsdmV0aWNhPSJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iTGliZXJhdGlvblNhbnMtQm9sZC50dGYiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljLnR0ZiI7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iTGliZXJhdGlvblNhbnMtSXRhbGljLnR0ZiI7ZVsiVGltZXMtUm9tYW4iXT0iRm94aXRTZXJpZi5wZmIiO2VbIlRpbWVzLUJvbGQiXT0iRm94aXRTZXJpZkJvbGQucGZiIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IkZveGl0U2VyaWZCb2xkSXRhbGljLnBmYiI7ZVsiVGltZXMtSXRhbGljIl09IkZveGl0U2VyaWZJdGFsaWMucGZiIjtlLlN5bWJvbD0iRm94aXRTeW1ib2wucGZiIjtlLlphcGZEaW5nYmF0cz0iRm94aXREaW5nYmF0cy5wZmIiO2VbIkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiXT0iTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUJvbGQiXT0iTGliZXJhdGlvblNhbnMtQm9sZC50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUl0YWxpYyJdPSJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIjtlWyJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIl09IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIn0pKTt0LmdldEZvbnROYW1lVG9GaWxlTWFwPXM7Y29uc3Qgbz0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2UuQ2FsaWJyaT0iSGVsdmV0aWNhIjtlWyJDYWxpYnJpLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNhbGlicmktSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkNlbnR1cnlHb3RoaWM9IkhlbHZldGljYSI7ZVsiQ2VudHVyeUdvdGhpYy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJDZW50dXJ5R290aGljLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJDZW50dXJ5R290aGljLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5Db21pY1NhbnNNUz0iQ29taWMgU2FucyBNUyI7ZVsiQ29taWNTYW5zTVMtQm9sZCJdPSJDb21pYyBTYW5zIE1TLUJvbGQiO2VbIkNvbWljU2Fuc01TLUJvbGRJdGFsaWMiXT0iQ29taWMgU2FucyBNUy1Cb2xkSXRhbGljIjtlWyJDb21pY1NhbnNNUy1JdGFsaWMiXT0iQ29taWMgU2FucyBNUy1JdGFsaWMiO2UuSW1wYWN0PSJIZWx2ZXRpY2EiO2VbIkl0Y1N5bWJvbC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJJdGNTeW1ib2wtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1Cb29rIl09IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLUJvb2tJdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1NZWRpdW0iXT0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtTWVkaXVtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkx1Y2lkYUNvbnNvbGU9IkNvdXJpZXIiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZEl0YWxpYyJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJMdWNpZGFDb25zb2xlLUl0YWxpYyJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIkx1Y2lkYVNhbnMtRGVtaSJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiTVMtR290aGljIl09Ik1TIEdvdGhpYyI7ZVsiTVMtR290aGljLUJvbGQiXT0iTVMgR290aGljLUJvbGQiO2VbIk1TLUdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIEdvdGhpYy1Cb2xkSXRhbGljIjtlWyJNUy1Hb3RoaWMtSXRhbGljIl09Ik1TIEdvdGhpYy1JdGFsaWMiO2VbIk1TLU1pbmNobyJdPSJNUyBNaW5jaG8iO2VbIk1TLU1pbmNoby1Cb2xkIl09Ik1TIE1pbmNoby1Cb2xkIjtlWyJNUy1NaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBNaW5jaG8tQm9sZEl0YWxpYyI7ZVsiTVMtTWluY2hvLUl0YWxpYyJdPSJNUyBNaW5jaG8tSXRhbGljIjtlWyJNUy1QR290aGljIl09Ik1TIFBHb3RoaWMiO2VbIk1TLVBHb3RoaWMtQm9sZCJdPSJNUyBQR290aGljLUJvbGQiO2VbIk1TLVBHb3RoaWMtQm9sZEl0YWxpYyJdPSJNUyBQR290aGljLUJvbGRJdGFsaWMiO2VbIk1TLVBHb3RoaWMtSXRhbGljIl09Ik1TIFBHb3RoaWMtSXRhbGljIjtlWyJNUy1QTWluY2hvIl09Ik1TIFBNaW5jaG8iO2VbIk1TLVBNaW5jaG8tQm9sZCJdPSJNUyBQTWluY2hvLUJvbGQiO2VbIk1TLVBNaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBQTWluY2hvLUJvbGRJdGFsaWMiO2VbIk1TLVBNaW5jaG8tSXRhbGljIl09Ik1TIFBNaW5jaG8tSXRhbGljIjtlLk51cHRpYWxTY3JpcHQ9IlRpbWVzLUl0YWxpYyI7ZS5TZWdvZVVJU3ltYm9sPSJIZWx2ZXRpY2EifSkpO3QuZ2V0Tm9uU3RkRm9udE1hcD1vO2NvbnN0IGM9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlWyJBZG9iZSBKZW5zb24iXT0hMDtlWyJBZG9iZSBUZXh0Il09ITA7ZS5BbGJlcnR1cz0hMDtlLkFsZHVzPSEwO2UuQWxleGFuZHJpYT0hMDtlLkFsZ2VyaWFuPSEwO2VbIkFtZXJpY2FuIFR5cGV3cml0ZXIiXT0hMDtlLkFudGlxdWE9ITA7ZS5BcGV4PSEwO2UuQXJubz0hMDtlLkFzdGVyPSEwO2UuQXVyb3JhPSEwO2UuQmFza2VydmlsbGU9ITA7ZS5CZWxsPSEwO2UuQmVtYm89ITA7ZVsiQmVtYm8gU2Nob29sYm9vayJdPSEwO2UuQmVuZ3VpYXQ9ITA7ZVsiQmVya2VsZXkgT2xkIFN0eWxlIl09ITA7ZVsiQmVybmhhcmQgTW9kZXJuIl09ITA7ZVsiQmVydGhvbGQgQ2l0eSJdPSEwO2UuQm9kb25pPSEwO2VbIkJhdWVyIEJvZG9uaSJdPSEwO2VbIkJvb2sgQW50aXF1YSJdPSEwO2UuQm9va21hbj0hMDtlWyJCb3JkZWF1eCBSb21hbiJdPSEwO2VbIkNhbGlmb3JuaWFuIEZCIl09ITA7ZS5DYWxpc3RvPSEwO2UuQ2FsdmVydD0hMDtlLkNhcGl0YWxzPSEwO2UuQ2FtYnJpYT0hMDtlLkNhcnRpZXI9ITA7ZS5DYXNsb249ITA7ZS5DYXR1bGw9ITA7ZS5DZW50YXVyPSEwO2VbIkNlbnR1cnkgT2xkIFN0eWxlIl09ITA7ZVsiQ2VudHVyeSBTY2hvb2xib29rIl09ITA7ZS5DaGFwYXJyYWw9ITA7ZVsiQ2hhcmlzIFNJTCJdPSEwO2UuQ2hlbHRlbmhhbT0hMDtlWyJDaG9sbGEgU2xhYiJdPSEwO2UuQ2xhcmVuZG9uPSEwO2UuQ2xlYXJmYWNlPSEwO2UuQ29jaGluPSEwO2UuQ29sb25uYT0hMDtlWyJDb21wdXRlciBNb2Rlcm4iXT0hMDtlWyJDb25jcmV0ZSBSb21hbiJdPSEwO2UuQ29uc3RhbnRpYT0hMDtlWyJDb29wZXIgQmxhY2siXT0hMDtlLkNvcm9uYT0hMDtlLkVjb3R5cGU9ITA7ZS5FZ3lwdGllbm5lPSEwO2UuRWxlcGhhbnQ9ITA7ZS5FeGNlbHNpb3I9ITA7ZS5GYWlyZmllbGQ9ITA7ZVsiRkYgU2NhbGEiXT0hMDtlLkZvbGthcmQ9ITA7ZS5Gb290bGlnaHQ9ITA7ZS5GcmVlU2VyaWY9ITA7ZVsiRnJpeiBRdWFkcmF0YSJdPSEwO2UuR2FyYW1vbmQ9ITA7ZS5HZW50aXVtPSEwO2UuR2VvcmdpYT0hMDtlLkdsb3VjZXN0ZXI9ITA7ZVsiR291ZHkgT2xkIFN0eWxlIl09ITA7ZVsiR291ZHkgU2Nob29sYm9vayJdPSEwO2VbIkdvdWR5IFBybyBGb250Il09ITA7ZS5HcmFuam9uPSEwO2VbIkd1YXJkaWFuIEVneXB0aWFuIl09ITA7ZS5IZWF0aGVyPSEwO2UuSGVyY3VsZXM9ITA7ZVsiSGlnaCBUb3dlciBUZXh0Il09ITA7ZS5IaXJvc2hpZ2U9ITA7ZVsiSG9lZmxlciBUZXh0Il09ITA7ZVsiSHVtYW5hIFNlcmlmIl09ITA7ZS5JbXByaW50PSEwO2VbIklvbmljIE5vLiA1Il09ITA7ZS5KYW5zb249ITA7ZS5Kb2FubmE9ITA7ZS5Lb3Jpbm5hPSEwO2UuTGV4aWNvbj0hMDtlLkxpYmVyYXRpb25TZXJpZj0hMDtlWyJMaWJlcmF0aW9uIFNlcmlmIl09ITA7ZVsiTGludXggTGliZXJ0aW5lIl09ITA7ZS5MaXRlcmF0dXJuYXlhPSEwO2UuTHVjaWRhPSEwO2VbIkx1Y2lkYSBCcmlnaHQiXT0hMDtlLk1lbGlvcj0hMDtlLk1lbXBoaXM9ITA7ZS5NaWxsZXI9ITA7ZS5NaW5pb249ITA7ZS5Nb2Rlcm49ITA7ZVsiTW9uYSBMaXNhIl09ITA7ZVsiTXJzIEVhdmVzIl09ITA7ZVsiTVMgU2VyaWYiXT0hMDtlWyJNdXNlbyBTbGFiIl09ITA7ZVsiTmV3IFlvcmsiXT0hMDtlWyJOaW1idXMgUm9tYW4iXT0hMDtlWyJOUFMgUmF3bGluc29uIFJvYWR3YXkiXT0hMDtlLk51cHRpYWxTY3JpcHQ9ITA7ZS5QYWxhdGlubz0hMDtlLlBlcnBldHVhPSEwO2UuUGxhbnRpbj0hMDtlWyJQbGFudGluIFNjaG9vbGJvb2siXT0hMDtlLlBsYXliaWxsPSEwO2VbIlBvb3IgUmljaGFyZCJdPSEwO2VbIlJhd2xpbnNvbiBSb2Fkd2F5Il09ITA7ZS5SZW5hdWx0PSEwO2UuUmVxdWllbT0hMDtlLlJvY2t3ZWxsPSEwO2UuUm9tYW49ITA7ZVsiUm90aXMgU2VyaWYiXT0hMDtlLlNhYm9uPSEwO2UuU2NhbGE9ITA7ZS5TZWFndWxsPSEwO2UuU2lzdGluYT0hMDtlLlNvdXZlbmlyPSEwO2UuU1RJWD0hMDtlWyJTdG9uZSBJbmZvcm1hbCJdPSEwO2VbIlN0b25lIFNlcmlmIl09ITA7ZS5TeWxmYWVuPSEwO2UuVGltZXM9ITA7ZS5UcmFqYW49ITA7ZVsiVHJpbml0w6kiXT0hMDtlWyJUcnVtcCBNZWRpYWV2YWwiXT0hMDtlLlV0b3BpYT0hMDtlWyJWYWxlIFR5cGUiXT0hMDtlWyJCaXRzdHJlYW0gVmVyYSJdPSEwO2VbIlZlcmEgU2VyaWYiXT0hMDtlLlZlcnNhaWxsZXM9ITA7ZS5XYW50ZWQ9ITA7ZS5XZWlzcz0hMDtlWyJXaWRlIExhdGluIl09ITA7ZS5XaW5kc29yPSEwO2UuWElUUz0hMH0pKTt0LmdldFNlcmlmRm9udHM9Yztjb25zdCBsPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5EaW5nYmF0cz0hMDtlLlN5bWJvbD0hMDtlLlphcGZEaW5nYmF0cz0hMH0pKTt0LmdldFN5bWJvbHNGb250cz1sO2NvbnN0IGg9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlWzJdPTEwO2VbM109MzI7ZVs0XT0zMztlWzVdPTM0O2VbNl09MzU7ZVs3XT0zNjtlWzhdPTM3O2VbOV09Mzg7ZVsxMF09Mzk7ZVsxMV09NDA7ZVsxMl09NDE7ZVsxM109NDI7ZVsxNF09NDM7ZVsxNV09NDQ7ZVsxNl09NDU7ZVsxN109NDY7ZVsxOF09NDc7ZVsxOV09NDg7ZVsyMF09NDk7ZVsyMV09NTA7ZVsyMl09NTE7ZVsyM109NTI7ZVsyNF09NTM7ZVsyNV09NTQ7ZVsyNl09NTU7ZVsyN109NTY7ZVsyOF09NTc7ZVsyOV09NTg7ZVszMF09ODk0O2VbMzFdPTYwO2VbMzJdPTYxO2VbMzNdPTYyO2VbMzRdPTYzO2VbMzVdPTY0O2VbMzZdPTY1O2VbMzddPTY2O2VbMzhdPTY3O2VbMzldPTY4O2VbNDBdPTY5O2VbNDFdPTcwO2VbNDJdPTcxO2VbNDNdPTcyO2VbNDRdPTczO2VbNDVdPTc0O2VbNDZdPTc1O2VbNDddPTc2O2VbNDhdPTc3O2VbNDldPTc4O2VbNTBdPTc5O2VbNTFdPTgwO2VbNTJdPTgxO2VbNTNdPTgyO2VbNTRdPTgzO2VbNTVdPTg0O2VbNTZdPTg1O2VbNTddPTg2O2VbNThdPTg3O2VbNTldPTg4O2VbNjBdPTg5O2VbNjFdPTkwO2VbNjJdPTkxO2VbNjNdPTkyO2VbNjRdPTkzO2VbNjVdPTk0O2VbNjZdPTk1O2VbNjddPTk2O2VbNjhdPTk3O2VbNjldPTk4O2VbNzBdPTk5O2VbNzFdPTEwMDtlWzcyXT0xMDE7ZVs3M109MTAyO2VbNzRdPTEwMztlWzc1XT0xMDQ7ZVs3Nl09MTA1O2VbNzddPTEwNjtlWzc4XT0xMDc7ZVs3OV09MTA4O2VbODBdPTEwOTtlWzgxXT0xMTA7ZVs4Ml09MTExO2VbODNdPTExMjtlWzg0XT0xMTM7ZVs4NV09MTE0O2VbODZdPTExNTtlWzg3XT0xMTY7ZVs4OF09MTE3O2VbODldPTExODtlWzkwXT0xMTk7ZVs5MV09MTIwO2VbOTJdPTEyMTtlWzkzXT0xMjI7ZVs5NF09MTIzO2VbOTVdPTEyNDtlWzk2XT0xMjU7ZVs5N109MTI2O2VbOThdPTE5NjtlWzk5XT0xOTc7ZVsxMDBdPTE5OTtlWzEwMV09MjAxO2VbMTAyXT0yMDk7ZVsxMDNdPTIxNDtlWzEwNF09MjIwO2VbMTA1XT0yMjU7ZVsxMDZdPTIyNDtlWzEwN109MjI2O2VbMTA4XT0yMjg7ZVsxMDldPTIyNztlWzExMF09MjI5O2VbMTExXT0yMzE7ZVsxMTJdPTIzMztlWzExM109MjMyO2VbMTE0XT0yMzQ7ZVsxMTVdPTIzNTtlWzExNl09MjM3O2VbMTE3XT0yMzY7ZVsxMThdPTIzODtlWzExOV09MjM5O2VbMTIwXT0yNDE7ZVsxMjFdPTI0MztlWzEyMl09MjQyO2VbMTIzXT0yNDQ7ZVsxMjRdPTI0NjtlWzEyNV09MjQ1O2VbMTI2XT0yNTA7ZVsxMjddPTI0OTtlWzEyOF09MjUxO2VbMTI5XT0yNTI7ZVsxMzBdPTgyMjQ7ZVsxMzFdPTE3NjtlWzEzMl09MTYyO2VbMTMzXT0xNjM7ZVsxMzRdPTE2NztlWzEzNV09ODIyNjtlWzEzNl09MTgyO2VbMTM3XT0yMjM7ZVsxMzhdPTE3NDtlWzEzOV09MTY5O2VbMTQwXT04NDgyO2VbMTQxXT0xODA7ZVsxNDJdPTE2ODtlWzE0M109ODgwMDtlWzE0NF09MTk4O2VbMTQ1XT0yMTY7ZVsxNDZdPTg3MzQ7ZVsxNDddPTE3NztlWzE0OF09ODgwNDtlWzE0OV09ODgwNTtlWzE1MF09MTY1O2VbMTUxXT0xODE7ZVsxNTJdPTg3MDY7ZVsxNTNdPTg3MjE7ZVsxNTRdPTg3MTk7ZVsxNTZdPTg3NDc7ZVsxNTddPTE3MDtlWzE1OF09MTg2O2VbMTU5XT04NDg2O2VbMTYwXT0yMzA7ZVsxNjFdPTI0ODtlWzE2Ml09MTkxO2VbMTYzXT0xNjE7ZVsxNjRdPTE3MjtlWzE2NV09ODczMDtlWzE2Nl09NDAyO2VbMTY3XT04Nzc2O2VbMTY4XT04NzEwO2VbMTY5XT0xNzE7ZVsxNzBdPTE4NztlWzE3MV09ODIzMDtlWzE3OV09ODIyMDtlWzE4MF09ODIyMTtlWzE4MV09ODIxNjtlWzE4Ml09ODIxNztlWzIwMF09MTkzO2VbMjAzXT0yMDU7ZVsyMDddPTIxMTtlWzIxMF09MjE4O2VbMjIzXT03MTE7ZVsyMjRdPTMyMTtlWzIyNV09MzIyO2VbMjI2XT0zNTI7ZVsyMjddPTM1MztlWzIyOF09MzgxO2VbMjI5XT0zODI7ZVsyMzNdPTIyMTtlWzIzNF09MjUzO2VbMjUyXT0yNjM7ZVsyNTNdPTI2ODtlWzI1NF09MjY5O2VbMjU4XT0yNTg7ZVsyNjBdPTI2MDtlWzI2MV09MjYxO2VbMjY1XT0yODA7ZVsyNjZdPTI4MTtlWzI2N109MjgyO2VbMjY4XT0yODM7ZVsyNjldPTMxMztlWzI3NV09MzIzO2VbMjc2XT0zMjQ7ZVsyNzhdPTMyODtlWzI4M109MzQ0O2VbMjg0XT0zNDU7ZVsyODVdPTM0NjtlWzI4Nl09MzQ3O2VbMjkyXT0zNjc7ZVsyOTVdPTM3NztlWzI5Nl09Mzc4O2VbMjk4XT0zODA7ZVszMDVdPTk2MztlWzMwNl09OTY0O2VbMzA3XT05NjY7ZVszMDhdPTgyMTU7ZVszMDldPTgyNTI7ZVszMTBdPTgzMTk7ZVszMTFdPTgzNTk7ZVszMTJdPTg1OTI7ZVszMTNdPTg1OTM7ZVszMzddPTk1NTI7ZVs0OTNdPTEwMzk7ZVs0OTRdPTEwNDA7ZVs2NzJdPTE0ODg7ZVs2NzNdPTE0ODk7ZVs2NzRdPTE0OTA7ZVs2NzVdPTE0OTE7ZVs2NzZdPTE0OTI7ZVs2NzddPTE0OTM7ZVs2NzhdPTE0OTQ7ZVs2NzldPTE0OTU7ZVs2ODBdPTE0OTY7ZVs2ODFdPTE0OTc7ZVs2ODJdPTE0OTg7ZVs2ODNdPTE0OTk7ZVs2ODRdPTE1MDA7ZVs2ODVdPTE1MDE7ZVs2ODZdPTE1MDI7ZVs2ODddPTE1MDM7ZVs2ODhdPTE1MDQ7ZVs2ODldPTE1MDU7ZVs2OTBdPTE1MDY7ZVs2OTFdPTE1MDc7ZVs2OTJdPTE1MDg7ZVs2OTNdPTE1MDk7ZVs2OTRdPTE1MTA7ZVs2OTVdPTE1MTE7ZVs2OTZdPTE1MTI7ZVs2OTddPTE1MTM7ZVs2OThdPTE1MTQ7ZVs3MDVdPTE1MjQ7ZVs3MDZdPTgzNjI7ZVs3MTBdPTY0Mjg4O2VbNzExXT02NDI5ODtlWzc1OV09MTYxNztlWzc2MV09MTc3NjtlWzc2M109MTc3ODtlWzc3NV09MTY1MjtlWzc3N109MTc2NDtlWzc3OF09MTc4MDtlWzc3OV09MTc4MTtlWzc4MF09MTc4MjtlWzc4Ml09NzcxO2VbNzgzXT02NDcyNjtlWzc4Nl09ODM2MztlWzc4OF09ODUzMjtlWzc5MF09NzY4O2VbNzkxXT03Njk7ZVs3OTJdPTc2ODtlWzc5NV09ODAzO2VbNzk3XT02NDMzNjtlWzc5OF09NjQzMzc7ZVs3OTldPTY0MzQyO2VbODAwXT02NDM0MztlWzgwMV09NjQzNDQ7ZVs4MDJdPTY0MzQ1O2VbODAzXT02NDM2MjtlWzgwNF09NjQzNjM7ZVs4MDVdPTY0MzY0O2VbMjQyNF09NzgyMTtlWzI0MjVdPTc4MjI7ZVsyNDI2XT03ODIzO2VbMjQyN109NzgyNDtlWzI0MjhdPTc4MjU7ZVsyNDI5XT03ODI2O2VbMjQzMF09NzgyNztlWzI0MzNdPTc2ODI7ZVsyNjc4XT04MDQ1O2VbMjY3OV09ODA0NjtlWzI4MzBdPTE1NTI7ZVsyODM4XT02ODY7ZVsyODQwXT03NTE7ZVsyODQyXT03NTM7ZVsyODQzXT03NTQ7ZVsyODQ0XT03NTU7ZVsyODQ2XT03NTc7ZVsyODU2XT03Njc7ZVsyODU3XT04NDg7ZVsyODU4XT04NDk7ZVsyODYyXT04NTM7ZVsyODYzXT04NTQ7ZVsyODY0XT04NTU7ZVsyODY1XT04NjE7ZVsyODY2XT04NjI7ZVsyOTA2XT03NDYwO2VbMjkwOF09NzQ2MjtlWzI5MDldPTc0NjM7ZVsyOTEwXT03NDY0O2VbMjkxMl09NzQ2NjtlWzI5MTNdPTc0Njc7ZVsyOTE0XT03NDY4O2VbMjkxNl09NzQ3MDtlWzI5MTddPTc0NzE7ZVsyOTE4XT03NDcyO2VbMjkyMF09NzQ3NDtlWzI5MjFdPTc0NzU7ZVsyOTIyXT03NDc2O2VbMjkyNF09NzQ3ODtlWzI5MjVdPTc0Nzk7ZVsyOTI2XT03NDgwO2VbMjkyOF09NzQ4MjtlWzI5MjldPTc0ODM7ZVsyOTMwXT03NDg0O2VbMjkzMl09NzQ4NjtlWzI5MzNdPTc0ODc7ZVsyOTM0XT03NDg4O2VbMjkzNl09NzQ5MDtlWzI5MzddPTc0OTE7ZVsyOTM4XT03NDkyO2VbMjk0MF09NzQ5NDtlWzI5NDFdPTc0OTU7ZVsyOTQyXT03NDk2O2VbMjk0NF09NzQ5ODtlWzI5NDZdPTc1MDA7ZVsyOTQ4XT03NTAyO2VbMjk1MF09NzUwNDtlWzI5NTFdPTc1MDU7ZVsyOTUyXT03NTA2O2VbMjk1NF09NzUwODtlWzI5NTVdPTc1MDk7ZVsyOTU2XT03NTEwO2VbMjk1OF09NzUxMjtlWzI5NTldPTc1MTM7ZVsyOTYwXT03NTE0O2VbMjk2Ml09NzUxNjtlWzI5NjNdPTc1MTc7ZVsyOTY0XT03NTE4O2VbMjk2Nl09NzUyMDtlWzI5NjddPTc1MjE7ZVsyOTY4XT03NTIyO2VbMjk3MF09NzUyNDtlWzI5NzFdPTc1MjU7ZVsyOTcyXT03NTI2O2VbMjk3NF09NzUyODtlWzI5NzVdPTc1Mjk7ZVsyOTc2XT03NTMwO2VbMjk3OF09MTUzNztlWzI5NzldPTE1Mzg7ZVsyOTgwXT0xNTM5O2VbMjk4Ml09MTU0OTtlWzI5ODNdPTE1NTE7ZVsyOTg0XT0xNTUyO2VbMjk4Nl09MTU1NDtlWzI5ODddPTE1NTU7ZVsyOTg4XT0xNTU2O2VbMjk5MF09MTYyMztlWzI5OTFdPTE2MjQ7ZVsyOTk1XT0xNzc1O2VbMjk5OV09MTc5MTtlWzMwMDJdPTY0MjkwO2VbMzAwM109NjQyOTE7ZVszMDA0XT02NDI5MjtlWzMwMDZdPTY0Mjk0O2VbMzAwN109NjQyOTU7ZVszMDA4XT02NDI5NjtlWzMwMTFdPTE5MDA7ZVszMDE0XT04MjIzO2VbMzAxNV09ODI0NDtlWzMwMTddPTc1MzI7ZVszMDE4XT03NTMzO2VbMzAxOV09NzUzNDtlWzMwNzVdPTc1OTA7ZVszMDc2XT03NTkxO2VbMzA3OV09NzU5NDtlWzMwODBdPTc1OTU7ZVszMDgzXT03NTk4O2VbMzA4NF09NzU5OTtlWzMwODddPTc2MDI7ZVszMDg4XT03NjAzO2VbMzA5MV09NzYwNjtlWzMwOTJdPTc2MDc7ZVszMDk1XT03NjEwO2VbMzA5Nl09NzYxMTtlWzMwOTldPTc2MTQ7ZVszMTAwXT03NjE1O2VbMzEwM109NzYxODtlWzMxMDRdPTc2MTk7ZVszMTA3XT04MzM3O2VbMzEwOF09ODMzODtlWzMxMTZdPTE4ODQ7ZVszMTE5XT0xODg1O2VbMzEyMF09MTg4NTtlWzMxMjNdPTE4ODY7ZVszMTI0XT0xODg2O2VbMzEyN109MTg4NztlWzMxMjhdPTE4ODc7ZVszMTMxXT0xODg4O2VbMzEzMl09MTg4ODtlWzMxMzVdPTE4ODk7ZVszMTM2XT0xODg5O2VbMzEzOV09MTg5MDtlWzMxNDBdPTE4OTA7ZVszMTQzXT0xODkxO2VbMzE0NF09MTg5MTtlWzMxNDddPTE4OTI7ZVszMTQ4XT0xODkyO2VbMzE1M109NTgwO2VbMzE1NF09NTgxO2VbMzE1N109NTg0O2VbMzE1OF09NTg1O2VbMzE2MV09NTg4O2VbMzE2Ml09NTg5O2VbMzE2NV09ODkxO2VbMzE2Nl09ODkyO2VbMzE2OV09MTI3NDtlWzMxNzBdPTEyNzU7ZVszMTczXT0xMjc4O2VbMzE3NF09MTI3OTtlWzMxODFdPTc2MjI7ZVszMTgyXT03NjIzO2VbMzI4Ml09MTE3OTk7ZVszMzE2XT01Nzg7ZVszMzc5XT00Mjc4NTtlWzMzOTNdPTExNTk7ZVszNDE2XT04Mzc3fSkpO3QuZ2V0R2x5cGhNYXBGb3JTdGFuZGFyZEZvbnRzPWg7Y29uc3QgdT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMjI3XT0zMjI7ZVsyNjRdPTI2MTtlWzI5MV09MzQ2fSkpO3QuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JBcmlhbEJsYWNrPXU7Y29uc3QgZD0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMV09MzI7ZVs0XT02NTtlWzVdPTE5MjtlWzZdPTE5MztlWzldPTE5NjtlWzE3XT02NjtlWzE4XT02NztlWzIxXT0yNjg7ZVsyNF09Njg7ZVsyOF09Njk7ZVsyOV09MjAwO2VbMzBdPTIwMTtlWzMyXT0yODI7ZVszOF09NzA7ZVszOV09NzE7ZVs0NF09NzI7ZVs0N109NzM7ZVs0OF09MjA0O2VbNDldPTIwNTtlWzU4XT03NDtlWzYwXT03NTtlWzYyXT03NjtlWzY4XT03NztlWzY5XT03ODtlWzc1XT03OTtlWzc2XT0yMTA7ZVs4MF09MjE0O2VbODddPTgwO2VbODldPTgxO2VbOTBdPTgyO2VbOTJdPTM0NDtlWzk0XT04MztlWzk3XT0zNTI7ZVsxMDBdPTg0O2VbMTA0XT04NTtlWzEwOV09MjIwO2VbMTE1XT04NjtlWzExNl09ODc7ZVsxMjFdPTg4O2VbMTIyXT04OTtlWzEyNF09MjIxO2VbMTI3XT05MDtlWzEyOV09MzgxO2VbMjU4XT05NztlWzI1OV09MjI0O2VbMjYwXT0yMjU7ZVsyNjNdPTIyODtlWzI2OF09MjYxO2VbMjcxXT05ODtlWzI3Ml09OTk7ZVsyNzNdPTI2MztlWzI3NV09MjY5O2VbMjgyXT0xMDA7ZVsyODZdPTEwMTtlWzI4N109MjMyO2VbMjg4XT0yMzM7ZVsyOTBdPTI4MztlWzI5NV09MjgxO2VbMjk2XT0xMDI7ZVszMzZdPTEwMztlWzM0Nl09MTA0O2VbMzQ5XT0xMDU7ZVszNTBdPTIzNjtlWzM1MV09MjM3O2VbMzYxXT0xMDY7ZVszNjRdPTEwNztlWzM2N109MTA4O2VbMzcxXT0zMjI7ZVszNzNdPTEwOTtlWzM3NF09MTEwO2VbMzgxXT0xMTE7ZVszODJdPTI0MjtlWzM4M109MjQzO2VbMzg2XT0yNDY7ZVszOTNdPTExMjtlWzM5NV09MTEzO2VbMzk2XT0xMTQ7ZVszOThdPTM0NTtlWzQwMF09MTE1O2VbNDAxXT0zNDc7ZVs0MDNdPTM1MztlWzQxMF09MTE2O2VbNDM3XT0xMTc7ZVs0NDJdPTI1MjtlWzQ0OF09MTE4O2VbNDQ5XT0xMTk7ZVs0NTRdPTEyMDtlWzQ1NV09MTIxO2VbNDU3XT0yNTM7ZVs0NjBdPTEyMjtlWzQ2Ml09MzgyO2VbNDYzXT0zODA7ZVs4NTNdPTQ0O2VbODU1XT01ODtlWzg1Nl09NDY7ZVs4NzZdPTQ3O2VbODc4XT00NTtlWzg4Ml09NDU7ZVs4OTRdPTQwO2VbODk1XT00MTtlWzg5Nl09OTE7ZVs4OTddPTkzO2VbOTIzXT02NDtlWzEwMDRdPTQ4O2VbMTAwNV09NDk7ZVsxMDA2XT01MDtlWzEwMDddPTUxO2VbMTAwOF09NTI7ZVsxMDA5XT01MztlWzEwMTBdPTU0O2VbMTAxMV09NTU7ZVsxMDEyXT01NjtlWzEwMTNdPTU3O2VbMTA4MV09Mzc7ZVsxMDg1XT00MztlWzEwODZdPTQ1fSkpO3QuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JDYWxpYnJpPWR9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Ub1VuaWNvZGVNYXA9dC5JZGVudGl0eVRvVW5pY29kZU1hcD12b2lkIDA7dmFyIHI9YSgyKTt0LlRvVW5pY29kZU1hcD1jbGFzcyBUb1VuaWNvZGVNYXB7Y29uc3RydWN0b3IoZT1bXSl7dGhpcy5fbWFwPWV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLl9tYXBbdF0uY2hhckNvZGVBdCgwKSl9aGFzKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLl9tYXBbZV19Z2V0KGUpe3JldHVybiB0aGlzLl9tYXBbZV19Y2hhckNvZGVPZihlKXtjb25zdCB0PXRoaXMuX21hcDtpZih0Lmxlbmd0aDw9NjU1MzYpcmV0dXJuIHQuaW5kZXhPZihlKTtmb3IoY29uc3QgYSBpbiB0KWlmKHRbYV09PT1lKXJldHVybiAwfGE7cmV0dXJuLTF9YW1lbmQoZSl7Zm9yKGNvbnN0IHQgaW4gZSl0aGlzLl9tYXBbdF09ZVt0XX19O3QuSWRlbnRpdHlUb1VuaWNvZGVNYXA9Y2xhc3MgSWRlbnRpdHlUb1VuaWNvZGVNYXB7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZpcnN0Q2hhcj1lO3RoaXMubGFzdENoYXI9dH1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMubGFzdENoYXIrMS10aGlzLmZpcnN0Q2hhcn1mb3JFYWNoKGUpe2ZvcihsZXQgdD10aGlzLmZpcnN0Q2hhcixhPXRoaXMubGFzdENoYXI7dDw9YTt0KyspZSh0LHQpfWhhcyhlKXtyZXR1cm4gdGhpcy5maXJzdENoYXI8PWUmJmU8PXRoaXMubGFzdENoYXJ9Z2V0KGUpe2lmKHRoaXMuZmlyc3RDaGFyPD1lJiZlPD10aGlzLmxhc3RDaGFyKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfWNoYXJDb2RlT2YoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU+PXRoaXMuZmlyc3RDaGFyJiZlPD10aGlzLmxhc3RDaGFyP2U6LTF9YW1lbmQoZSl7KDAsci51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBhbWVuZCgpIil9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkNGRkZvbnQ9dm9pZCAwO3ZhciByPWEoMzUpLGk9YSgzOCksbj1hKDIpO3QuQ0ZGRm9udD1jbGFzcyBDRkZGb250e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wcm9wZXJ0aWVzPXQ7Y29uc3QgYT1uZXcgci5DRkZQYXJzZXIoZSx0LGkuU0VBQ19BTkFMWVNJU19FTkFCTEVEKTt0aGlzLmNmZj1hLnBhcnNlKCk7dGhpcy5jZmYuZHVwbGljYXRlRmlyc3RHbHlwaCgpO2NvbnN0IHM9bmV3IHIuQ0ZGQ29tcGlsZXIodGhpcy5jZmYpO3RoaXMuc2VhY3M9dGhpcy5jZmYuc2VhY3M7dHJ5e3RoaXMuZGF0YT1zLmNvbXBpbGUoKX1jYXRjaChhKXsoMCxuLndhcm4pKCJGYWlsZWQgdG8gY29tcGlsZSBmb250ICIrdC5sb2FkZWROYW1lKTt0aGlzLmRhdGE9ZX10aGlzLl9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2ZmLmNoYXJTdHJpbmdzLmNvdW50fWdldENoYXJzZXQoKXtyZXR1cm4gdGhpcy5jZmYuY2hhcnNldC5jaGFyc2V0fWdldEdseXBoTWFwcGluZygpe2NvbnN0IGU9dGhpcy5jZmYsdD10aGlzLnByb3BlcnRpZXMse2NpZFRvR2lkTWFwOmEsY01hcDpyfT10LG49ZS5jaGFyc2V0LmNoYXJzZXQ7bGV0IHMsbztpZih0LmNvbXBvc2l0ZSl7bGV0IHQsaTtpZihhPy5sZW5ndGg+MCl7dD1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgZT0wLHI9YS5sZW5ndGg7ZTxyO2UrKyl7Y29uc3Qgcj1hW2VdO3ZvaWQgMCE9PXImJih0W3JdPWUpfX1zPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZS5pc0NJREZvbnQpZm9yKG89MDtvPG4ubGVuZ3RoO28rKyl7Y29uc3QgZT1uW29dO2k9ci5jaGFyQ29kZU9mKGUpO3ZvaWQgMCE9PXQ/LltpXSYmKGk9dFtpXSk7c1tpXT1vfWVsc2UgZm9yKG89MDtvPGUuY2hhclN0cmluZ3MuY291bnQ7bysrKXtpPXIuY2hhckNvZGVPZihvKTtzW2ldPW99cmV0dXJuIHN9bGV0IGM9ZS5lbmNvZGluZz9lLmVuY29kaW5nLmVuY29kaW5nOm51bGw7dC5pc0ludGVybmFsRm9udCYmKGM9dC5kZWZhdWx0RW5jb2RpbmcpO3M9KDAsaS50eXBlMUZvbnRHbHlwaE1hcHBpbmcpKHQsYyxuKTtyZXR1cm4gc31oYXNHbHlwaElkKGUpe3JldHVybiB0aGlzLmNmZi5oYXNHbHlwaElkKGUpfV9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKXtjb25zdHtjaGFyc2V0OmUsZW5jb2Rpbmc6dH09dGhpcy5jZmY7aWYoIWV8fCF0KXJldHVybjtjb25zdCBhPWUuY2hhcnNldCxyPXQuZW5jb2RpbmcsaT1bXTtmb3IoY29uc3QgZSBpbiByKXtjb25zdCB0PXJbZV07aWYodD49MCl7Y29uc3Qgcj1hW3RdO3ImJihpW2VdPXIpfX1pLmxlbmd0aD4wJiYodGhpcy5wcm9wZXJ0aWVzLmJ1aWx0SW5FbmNvZGluZz1pKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuRm9udFJlbmRlcmVyRmFjdG9yeT12b2lkIDA7dmFyIHI9YSgyKSxpPWEoMzUpLG49YSgzOSkscz1hKDM3KSxvPWEoOCk7ZnVuY3Rpb24gZ2V0VWludDMyKGUsdCl7cmV0dXJuKGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXSk+Pj4wfWZ1bmN0aW9uIGdldFVpbnQxNihlLHQpe3JldHVybiBlW3RdPDw4fGVbdCsxXX1mdW5jdGlvbiBnZXRJbnQxNihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2KT4+MTZ9ZnVuY3Rpb24gZ2V0SW50OChlLHQpe3JldHVybiBlW3RdPDwyND4+MjR9ZnVuY3Rpb24gZ2V0RmxvYXQyMTQoZSx0KXtyZXR1cm4gZ2V0SW50MTYoZSx0KS8xNjM4NH1mdW5jdGlvbiBnZXRTdWJyb3V0aW5lQmlhcyhlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhPTMyNzY4O3Q8MTI0MD9hPTEwNzp0PDMzOTAwJiYoYT0xMTMxKTtyZXR1cm4gYX1mdW5jdGlvbiBwYXJzZUNtYXAoZSx0LGEpe2NvbnN0IGk9MT09PWdldFVpbnQxNihlLHQrMik/Z2V0VWludDMyKGUsdCs4KTpnZXRVaW50MzIoZSx0KzE2KSxuPWdldFVpbnQxNihlLHQraSk7bGV0IHMsbyxjO2lmKDQ9PT1uKXtnZXRVaW50MTYoZSx0K2krMik7Y29uc3QgYT1nZXRVaW50MTYoZSx0K2krNik+PjE7bz10K2krMTQ7cz1bXTtmb3IoYz0wO2M8YTtjKyssbys9MilzW2NdPXtlbmQ6Z2V0VWludDE2KGUsbyl9O28rPTI7Zm9yKGM9MDtjPGE7YysrLG8rPTIpc1tjXS5zdGFydD1nZXRVaW50MTYoZSxvKTtmb3IoYz0wO2M8YTtjKyssbys9MilzW2NdLmlkRGVsdGE9Z2V0VWludDE2KGUsbyk7Zm9yKGM9MDtjPGE7YysrLG8rPTIpe2xldCB0PWdldFVpbnQxNihlLG8pO2lmKDAhPT10KXtzW2NdLmlkcz1bXTtmb3IobGV0IGE9MCxyPXNbY10uZW5kLXNbY10uc3RhcnQrMTthPHI7YSsrKXtzW2NdLmlkc1thXT1nZXRVaW50MTYoZSxvK3QpO3QrPTJ9fX1yZXR1cm4gc31pZigxMj09PW4pe2NvbnN0IGE9Z2V0VWludDMyKGUsdCtpKzEyKTtvPXQraSsxNjtzPVtdO2ZvcihjPTA7YzxhO2MrKyl7dD1nZXRVaW50MzIoZSxvKTtzLnB1c2goe3N0YXJ0OnQsZW5kOmdldFVpbnQzMihlLG8rNCksaWREZWx0YTpnZXRVaW50MzIoZSxvKzgpLXR9KTtvKz0xMn1yZXR1cm4gc310aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgdW5zdXBwb3J0ZWQgY21hcDogJHtufWApfWZ1bmN0aW9uIHBhcnNlQ2ZmKGUsdCxhLHIpe2NvbnN0IG49bmV3IGkuQ0ZGUGFyc2VyKG5ldyBvLlN0cmVhbShlLHQsYS10KSx7fSxyKS5wYXJzZSgpO3JldHVybntnbHlwaHM6bi5jaGFyU3RyaW5ncy5vYmplY3RzLHN1YnJzOm4udG9wRGljdC5wcml2YXRlRGljdD8uc3VicnNJbmRleD8ub2JqZWN0cyxnc3VicnM6bi5nbG9iYWxTdWJySW5kZXg/Lm9iamVjdHMsaXNDRkZDSURGb250Om4uaXNDSURGb250LGZkU2VsZWN0Om4uZmRTZWxlY3QsZmRBcnJheTpuLmZkQXJyYXl9fWZ1bmN0aW9uIGxvb2t1cENtYXAoZSx0KXtjb25zdCBhPXQuY29kZVBvaW50QXQoMCk7bGV0IHI9MCxpPTAsbj1lLmxlbmd0aC0xO2Zvcig7aTxuOyl7Y29uc3QgdD1pK24rMT4+MTthPGVbdF0uc3RhcnQ/bj10LTE6aT10fWVbaV0uc3RhcnQ8PWEmJmE8PWVbaV0uZW5kJiYocj1lW2ldLmlkRGVsdGErKGVbaV0uaWRzP2VbaV0uaWRzW2EtZVtpXS5zdGFydF06YSkmNjU1MzUpO3JldHVybntjaGFyQ29kZTphLGdseXBoSWQ6cn19ZnVuY3Rpb24gY29tcGlsZUdseWYoZSx0LGEpe2Z1bmN0aW9uIG1vdmVUbyhlLGEpe3QucHVzaCh7Y21kOiJtb3ZlVG8iLGFyZ3M6W2UsYV19KX1mdW5jdGlvbiBsaW5lVG8oZSxhKXt0LnB1c2goe2NtZDoibGluZVRvIixhcmdzOltlLGFdfSl9ZnVuY3Rpb24gcXVhZHJhdGljQ3VydmVUbyhlLGEscixpKXt0LnB1c2goe2NtZDoicXVhZHJhdGljQ3VydmVUbyIsYXJnczpbZSxhLHIsaV19KX1sZXQgcj0wO2NvbnN0IGk9Z2V0SW50MTYoZSxyKTtsZXQgbixzPTAsbz0wO3IrPTEwO2lmKGk8MClkb3tuPWdldFVpbnQxNihlLHIpO2NvbnN0IGk9Z2V0VWludDE2KGUscisyKTtyKz00O2xldCBjLGw7aWYoMSZuKXtpZigyJm4pe2M9Z2V0SW50MTYoZSxyKTtsPWdldEludDE2KGUscisyKX1lbHNle2M9Z2V0VWludDE2KGUscik7bD1nZXRVaW50MTYoZSxyKzIpfXIrPTR9ZWxzZSBpZigyJm4pe2M9Z2V0SW50OChlLHIrKyk7bD1nZXRJbnQ4KGUscisrKX1lbHNle2M9ZVtyKytdO2w9ZVtyKytdfWlmKDImbil7cz1jO289bH1lbHNle3M9MDtvPTB9bGV0IGg9MSx1PTEsZD0wLGY9MDtpZig4Jm4pe2g9dT1nZXRGbG9hdDIxNChlLHIpO3IrPTJ9ZWxzZSBpZig2NCZuKXtoPWdldEZsb2F0MjE0KGUscik7dT1nZXRGbG9hdDIxNChlLHIrMik7cis9NH1lbHNlIGlmKDEyOCZuKXtoPWdldEZsb2F0MjE0KGUscik7ZD1nZXRGbG9hdDIxNChlLHIrMik7Zj1nZXRGbG9hdDIxNChlLHIrNCk7dT1nZXRGbG9hdDIxNChlLHIrNik7cis9OH1jb25zdCBnPWEuZ2x5cGhzW2ldO2lmKGcpe3QucHVzaCh7Y21kOiJzYXZlIn0se2NtZDoidHJhbnNmb3JtIixhcmdzOltoLGQsZix1LHMsb119KTtjb21waWxlR2x5ZihnLHQsYSk7dC5wdXNoKHtjbWQ6InJlc3RvcmUifSl9fXdoaWxlKDMyJm4pO2Vsc2V7Y29uc3QgdD1bXTtsZXQgYSxjO2ZvcihhPTA7YTxpO2ErKyl7dC5wdXNoKGdldFVpbnQxNihlLHIpKTtyKz0yfXIrPTIrZ2V0VWludDE2KGUscik7Y29uc3QgbD10LmF0KC0xKSsxLGg9W107Zm9yKDtoLmxlbmd0aDxsOyl7bj1lW3IrK107bGV0IHQ9MTs4Jm4mJih0Kz1lW3IrK10pO2Zvcig7dC0tID4wOyloLnB1c2goe2ZsYWdzOm59KX1mb3IoYT0wO2E8bDthKyspe3N3aXRjaCgxOCZoW2FdLmZsYWdzKXtjYXNlIDA6cys9Z2V0SW50MTYoZSxyKTtyKz0yO2JyZWFrO2Nhc2UgMjpzLT1lW3IrK107YnJlYWs7Y2FzZSAxODpzKz1lW3IrK119aFthXS54PXN9Zm9yKGE9MDthPGw7YSsrKXtzd2l0Y2goMzYmaFthXS5mbGFncyl7Y2FzZSAwOm8rPWdldEludDE2KGUscik7cis9MjticmVhaztjYXNlIDQ6by09ZVtyKytdO2JyZWFrO2Nhc2UgMzY6bys9ZVtyKytdfWhbYV0ueT1vfWxldCB1PTA7Zm9yKHI9MDtyPGk7cisrKXtjb25zdCBlPXRbcl0saT1oLnNsaWNlKHUsZSsxKTtpZigxJmlbMF0uZmxhZ3MpaS5wdXNoKGlbMF0pO2Vsc2UgaWYoMSZpLmF0KC0xKS5mbGFncylpLnVuc2hpZnQoaS5hdCgtMSkpO2Vsc2V7Y29uc3QgZT17ZmxhZ3M6MSx4OihpWzBdLngraS5hdCgtMSkueCkvMix5OihpWzBdLnkraS5hdCgtMSkueSkvMn07aS51bnNoaWZ0KGUpO2kucHVzaChlKX1tb3ZlVG8oaVswXS54LGlbMF0ueSk7Zm9yKGE9MSxjPWkubGVuZ3RoO2E8YzthKyspaWYoMSZpW2FdLmZsYWdzKWxpbmVUbyhpW2FdLngsaVthXS55KTtlbHNlIGlmKDEmaVthKzFdLmZsYWdzKXtxdWFkcmF0aWNDdXJ2ZVRvKGlbYV0ueCxpW2FdLnksaVthKzFdLngsaVthKzFdLnkpO2ErK31lbHNlIHF1YWRyYXRpY0N1cnZlVG8oaVthXS54LGlbYV0ueSwoaVthXS54K2lbYSsxXS54KS8yLChpW2FdLnkraVthKzFdLnkpLzIpO3U9ZSsxfX19ZnVuY3Rpb24gY29tcGlsZUNoYXJTdHJpbmcoZSx0LGEsaSl7ZnVuY3Rpb24gbW92ZVRvKGUsYSl7dC5wdXNoKHtjbWQ6Im1vdmVUbyIsYXJnczpbZSxhXX0pfWZ1bmN0aW9uIGxpbmVUbyhlLGEpe3QucHVzaCh7Y21kOiJsaW5lVG8iLGFyZ3M6W2UsYV19KX1mdW5jdGlvbiBiZXppZXJDdXJ2ZVRvKGUsYSxyLGksbixzKXt0LnB1c2goe2NtZDoiYmV6aWVyQ3VydmVUbyIsYXJnczpbZSxhLHIsaSxuLHNdfSl9Y29uc3Qgbj1bXTtsZXQgbz0wLGM9MCxsPTA7IWZ1bmN0aW9uIHBhcnNlKGUpe2xldCBoPTA7Zm9yKDtoPGUubGVuZ3RoOyl7bGV0IHUsZCxmLGcscCxtLGIseSx3LFM9ITEseD1lW2grK107c3dpdGNoKHgpe2Nhc2UgMTpjYXNlIDM6Y2FzZSAxODpjYXNlIDIzOmwrPW4ubGVuZ3RoPj4xO1M9ITA7YnJlYWs7Y2FzZSA0OmMrPW4ucG9wKCk7bW92ZVRvKG8sYyk7Uz0hMDticmVhaztjYXNlIDU6Zm9yKDtuLmxlbmd0aD4wOyl7bys9bi5zaGlmdCgpO2MrPW4uc2hpZnQoKTtsaW5lVG8obyxjKX1icmVhaztjYXNlIDY6Zm9yKDtuLmxlbmd0aD4wOyl7bys9bi5zaGlmdCgpO2xpbmVUbyhvLGMpO2lmKDA9PT1uLmxlbmd0aClicmVhaztjKz1uLnNoaWZ0KCk7bGluZVRvKG8sYyl9YnJlYWs7Y2FzZSA3OmZvcig7bi5sZW5ndGg+MDspe2MrPW4uc2hpZnQoKTtsaW5lVG8obyxjKTtpZigwPT09bi5sZW5ndGgpYnJlYWs7bys9bi5zaGlmdCgpO2xpbmVUbyhvLGMpfWJyZWFrO2Nhc2UgODpmb3IoO24ubGVuZ3RoPjA7KXt1PW8rbi5zaGlmdCgpO2Y9YytuLnNoaWZ0KCk7ZD11K24uc2hpZnQoKTtnPWYrbi5zaGlmdCgpO289ZCtuLnNoaWZ0KCk7Yz1nK24uc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1icmVhaztjYXNlIDEwOnk9bi5wb3AoKTt3PW51bGw7aWYoYS5pc0NGRkNJREZvbnQpe2NvbnN0IGU9YS5mZFNlbGVjdC5nZXRGREluZGV4KGkpO2lmKGU+PTAmJmU8YS5mZEFycmF5Lmxlbmd0aCl7Y29uc3QgdD1hLmZkQXJyYXlbZV07bGV0IHI7dC5wcml2YXRlRGljdD8uc3VicnNJbmRleCYmKHI9dC5wcml2YXRlRGljdC5zdWJyc0luZGV4Lm9iamVjdHMpO2lmKHIpe3krPWdldFN1YnJvdXRpbmVCaWFzKHIpO3c9clt5XX19ZWxzZSgwLHIud2FybikoIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWVsc2Ugdz1hLnN1YnJzW3krYS5zdWJyc0JpYXNdO3cmJnBhcnNlKHcpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuO2Nhc2UgMTI6eD1lW2grK107c3dpdGNoKHgpe2Nhc2UgMzQ6dT1vK24uc2hpZnQoKTtkPXUrbi5zaGlmdCgpO3A9YytuLnNoaWZ0KCk7bz1kK24uc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsYyxkLHAsbyxwKTt1PW8rbi5zaGlmdCgpO2Q9dStuLnNoaWZ0KCk7bz1kK24uc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUscCxkLGMsbyxjKTticmVhaztjYXNlIDM1OnU9bytuLnNoaWZ0KCk7Zj1jK24uc2hpZnQoKTtkPXUrbi5zaGlmdCgpO2c9ZituLnNoaWZ0KCk7bz1kK24uc2hpZnQoKTtjPWcrbi5zaGlmdCgpO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO3U9bytuLnNoaWZ0KCk7Zj1jK24uc2hpZnQoKTtkPXUrbi5zaGlmdCgpO2c9ZituLnNoaWZ0KCk7bz1kK24uc2hpZnQoKTtjPWcrbi5zaGlmdCgpO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO24ucG9wKCk7YnJlYWs7Y2FzZSAzNjp1PW8rbi5zaGlmdCgpO3A9YytuLnNoaWZ0KCk7ZD11K24uc2hpZnQoKTttPXArbi5zaGlmdCgpO289ZCtuLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LHAsZCxtLG8sbSk7dT1vK24uc2hpZnQoKTtkPXUrbi5zaGlmdCgpO2I9bStuLnNoaWZ0KCk7bz1kK24uc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsbSxkLGIsbyxjKTticmVhaztjYXNlIDM3OmNvbnN0IGU9byx0PWM7dT1vK24uc2hpZnQoKTtmPWMrbi5zaGlmdCgpO2Q9dStuLnNoaWZ0KCk7Zz1mK24uc2hpZnQoKTtvPWQrbi5zaGlmdCgpO2M9ZytuLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyk7dT1vK24uc2hpZnQoKTtmPWMrbi5zaGlmdCgpO2Q9dStuLnNoaWZ0KCk7Zz1mK24uc2hpZnQoKTtvPWQ7Yz1nO01hdGguYWJzKG8tZSk+TWF0aC5hYnMoYy10KT9vKz1uLnNoaWZ0KCk6Yys9bi5zaGlmdCgpO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6IDEyICR7eH1gKX1icmVhaztjYXNlIDE0OmlmKG4ubGVuZ3RoPj00KXtjb25zdCBlPW4ucG9wKCkscj1uLnBvcCgpO2M9bi5wb3AoKTtvPW4ucG9wKCk7dC5wdXNoKHtjbWQ6InNhdmUifSx7Y21kOiJ0cmFuc2xhdGUiLGFyZ3M6W28sY119KTtsZXQgaT1sb29rdXBDbWFwKGEuY21hcCxTdHJpbmcuZnJvbUNoYXJDb2RlKGEuZ2x5cGhOYW1lTWFwW3MuU3RhbmRhcmRFbmNvZGluZ1tlXV0pKTtjb21waWxlQ2hhclN0cmluZyhhLmdseXBoc1tpLmdseXBoSWRdLHQsYSxpLmdseXBoSWQpO3QucHVzaCh7Y21kOiJyZXN0b3JlIn0pO2k9bG9va3VwQ21hcChhLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShhLmdseXBoTmFtZU1hcFtzLlN0YW5kYXJkRW5jb2Rpbmdbcl1dKSk7Y29tcGlsZUNoYXJTdHJpbmcoYS5nbHlwaHNbaS5nbHlwaElkXSx0LGEsaS5nbHlwaElkKX1yZXR1cm47Y2FzZSAxOTpjYXNlIDIwOmwrPW4ubGVuZ3RoPj4xO2grPWwrNz4+MztTPSEwO2JyZWFrO2Nhc2UgMjE6Yys9bi5wb3AoKTtvKz1uLnBvcCgpO21vdmVUbyhvLGMpO1M9ITA7YnJlYWs7Y2FzZSAyMjpvKz1uLnBvcCgpO21vdmVUbyhvLGMpO1M9ITA7YnJlYWs7Y2FzZSAyNDpmb3IoO24ubGVuZ3RoPjI7KXt1PW8rbi5zaGlmdCgpO2Y9YytuLnNoaWZ0KCk7ZD11K24uc2hpZnQoKTtnPWYrbi5zaGlmdCgpO289ZCtuLnNoaWZ0KCk7Yz1nK24uc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1vKz1uLnNoaWZ0KCk7Yys9bi5zaGlmdCgpO2xpbmVUbyhvLGMpO2JyZWFrO2Nhc2UgMjU6Zm9yKDtuLmxlbmd0aD42Oyl7bys9bi5zaGlmdCgpO2MrPW4uc2hpZnQoKTtsaW5lVG8obyxjKX11PW8rbi5zaGlmdCgpO2Y9YytuLnNoaWZ0KCk7ZD11K24uc2hpZnQoKTtnPWYrbi5zaGlmdCgpO289ZCtuLnNoaWZ0KCk7Yz1nK24uc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKTticmVhaztjYXNlIDI2Om4ubGVuZ3RoJTImJihvKz1uLnNoaWZ0KCkpO2Zvcig7bi5sZW5ndGg+MDspe3U9bztmPWMrbi5zaGlmdCgpO2Q9dStuLnNoaWZ0KCk7Zz1mK24uc2hpZnQoKTtvPWQ7Yz1nK24uc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1icmVhaztjYXNlIDI3Om4ubGVuZ3RoJTImJihjKz1uLnNoaWZ0KCkpO2Zvcig7bi5sZW5ndGg+MDspe3U9bytuLnNoaWZ0KCk7Zj1jO2Q9dStuLnNoaWZ0KCk7Zz1mK24uc2hpZnQoKTtvPWQrbi5zaGlmdCgpO2M9ZztiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1icmVhaztjYXNlIDI4Om4ucHVzaCgoZVtoXTw8MjR8ZVtoKzFdPDwxNik+PjE2KTtoKz0yO2JyZWFrO2Nhc2UgMjk6eT1uLnBvcCgpK2EuZ3N1YnJzQmlhczt3PWEuZ3N1YnJzW3ldO3cmJnBhcnNlKHcpO2JyZWFrO2Nhc2UgMzA6Zm9yKDtuLmxlbmd0aD4wOyl7dT1vO2Y9YytuLnNoaWZ0KCk7ZD11K24uc2hpZnQoKTtnPWYrbi5zaGlmdCgpO289ZCtuLnNoaWZ0KCk7Yz1nKygxPT09bi5sZW5ndGg/bi5zaGlmdCgpOjApO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO2lmKDA9PT1uLmxlbmd0aClicmVhazt1PW8rbi5zaGlmdCgpO2Y9YztkPXUrbi5zaGlmdCgpO2c9ZituLnNoaWZ0KCk7Yz1nK24uc2hpZnQoKTtvPWQrKDE9PT1uLmxlbmd0aD9uLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyl9YnJlYWs7Y2FzZSAzMTpmb3IoO24ubGVuZ3RoPjA7KXt1PW8rbi5zaGlmdCgpO2Y9YztkPXUrbi5zaGlmdCgpO2c9ZituLnNoaWZ0KCk7Yz1nK24uc2hpZnQoKTtvPWQrKDE9PT1uLmxlbmd0aD9uLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyk7aWYoMD09PW4ubGVuZ3RoKWJyZWFrO3U9bztmPWMrbi5zaGlmdCgpO2Q9dStuLnNoaWZ0KCk7Zz1mK24uc2hpZnQoKTtvPWQrbi5zaGlmdCgpO2M9ZysoMT09PW4ubGVuZ3RoP24uc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1icmVhaztkZWZhdWx0OmlmKHg8MzIpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6ICR7eH1gKTtpZih4PDI0NyluLnB1c2goeC0xMzkpO2Vsc2UgaWYoeDwyNTEpbi5wdXNoKDI1NiooeC0yNDcpK2VbaCsrXSsxMDgpO2Vsc2UgaWYoeDwyNTUpbi5wdXNoKDI1NiotKHgtMjUxKS1lW2grK10tMTA4KTtlbHNle24ucHVzaCgoZVtoXTw8MjR8ZVtoKzFdPDwxNnxlW2grMl08PDh8ZVtoKzNdKS82NTUzNik7aCs9NH19UyYmKG4ubGVuZ3RoPTApfX0oZSl9Y29uc3QgYz1bXTtjbGFzcyBDb21waWxlZEZvbnR7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25zdHJ1Y3Rvcj09PUNvbXBpbGVkRm9udCYmKDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIENvbXBpbGVkRm9udC4iKTt0aGlzLmZvbnRNYXRyaXg9ZTt0aGlzLmNvbXBpbGVkR2x5cGhzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkPU9iamVjdC5jcmVhdGUobnVsbCl9Z2V0UGF0aEpzKGUpe2NvbnN0e2NoYXJDb2RlOnQsZ2x5cGhJZDphfT1sb29rdXBDbWFwKHRoaXMuY21hcCxlKTtsZXQgcj10aGlzLmNvbXBpbGVkR2x5cGhzW2FdO2lmKCFyKXRyeXtyPXRoaXMuY29tcGlsZUdseXBoKHRoaXMuZ2x5cGhzW2FdLGEpO3RoaXMuY29tcGlsZWRHbHlwaHNbYV09cn1jYXRjaChlKXt0aGlzLmNvbXBpbGVkR2x5cGhzW2FdPWM7dm9pZCAwPT09dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdJiYodGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPWEpO3Rocm93IGV9dm9pZCAwPT09dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdJiYodGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPWEpO3JldHVybiByfWNvbXBpbGVHbHlwaChlLHQpe2lmKCFlfHwwPT09ZS5sZW5ndGh8fDE0PT09ZVswXSlyZXR1cm4gYztsZXQgYT10aGlzLmZvbnRNYXRyaXg7aWYodGhpcy5pc0NGRkNJREZvbnQpe2NvbnN0IGU9dGhpcy5mZFNlbGVjdC5nZXRGREluZGV4KHQpO2lmKGU+PTAmJmU8dGhpcy5mZEFycmF5Lmxlbmd0aCl7YT10aGlzLmZkQXJyYXlbZV0uZ2V0QnlOYW1lKCJGb250TWF0cml4Iil8fHIuRk9OVF9JREVOVElUWV9NQVRSSVh9ZWxzZSgwLHIud2FybikoIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWNvbnN0IGk9W3tjbWQ6InNhdmUifSx7Y21kOiJ0cmFuc2Zvcm0iLGFyZ3M6YS5zbGljZSgpfSx7Y21kOiJzY2FsZSIsYXJnczpbInNpemUiLCItc2l6ZSJdfV07dGhpcy5jb21waWxlR2x5cGhJbXBsKGUsaSx0KTtpLnB1c2goe2NtZDoicmVzdG9yZSJ9KTtyZXR1cm4gaX1jb21waWxlR2x5cGhJbXBsKCl7KDAsci51bnJlYWNoYWJsZSkoIkNoaWxkcmVuIGNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB0aGlzLiIpfWhhc0J1aWx0UGF0aChlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6YX09bG9va3VwQ21hcCh0aGlzLmNtYXAsZSk7cmV0dXJuIHZvaWQgMCE9PXRoaXMuY29tcGlsZWRHbHlwaHNbYV0mJnZvaWQgMCE9PXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XX19Y2xhc3MgVHJ1ZVR5cGVDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoYXx8WzQ4OGUtNiwwLDAsNDg4ZS02LDAsMF0pO3RoaXMuZ2x5cGhzPWU7dGhpcy5jbWFwPXR9Y29tcGlsZUdseXBoSW1wbChlLHQpe2NvbXBpbGVHbHlmKGUsdCx0aGlzKX19Y2xhc3MgVHlwZTJDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsYSxyKXtzdXBlcihhfHxbLjAwMSwwLDAsLjAwMSwwLDBdKTt0aGlzLmdseXBocz1lLmdseXBoczt0aGlzLmdzdWJycz1lLmdzdWJyc3x8W107dGhpcy5zdWJycz1lLnN1YnJzfHxbXTt0aGlzLmNtYXA9dDt0aGlzLmdseXBoTmFtZU1hcD1yfHwoMCxuLmdldEdseXBoc1VuaWNvZGUpKCk7dGhpcy5nc3VicnNCaWFzPWdldFN1YnJvdXRpbmVCaWFzKHRoaXMuZ3N1YnJzKTt0aGlzLnN1YnJzQmlhcz1nZXRTdWJyb3V0aW5lQmlhcyh0aGlzLnN1YnJzKTt0aGlzLmlzQ0ZGQ0lERm9udD1lLmlzQ0ZGQ0lERm9udDt0aGlzLmZkU2VsZWN0PWUuZmRTZWxlY3Q7dGhpcy5mZEFycmF5PWUuZmRBcnJheX1jb21waWxlR2x5cGhJbXBsKGUsdCxhKXtjb21waWxlQ2hhclN0cmluZyhlLHQsdGhpcyxhKX19dC5Gb250UmVuZGVyZXJGYWN0b3J5PWNsYXNzIEZvbnRSZW5kZXJlckZhY3Rvcnl7c3RhdGljIGNyZWF0ZShlLHQpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZS5kYXRhKTtsZXQgaSxuLHMsbyxjLGw7Y29uc3QgaD1nZXRVaW50MTYoYSw0KTtmb3IobGV0IGU9MCx1PTEyO2U8aDtlKyssdSs9MTYpe2NvbnN0IGU9KDAsci5ieXRlc1RvU3RyaW5nKShhLnN1YmFycmF5KHUsdSs0KSksaD1nZXRVaW50MzIoYSx1KzgpLGQ9Z2V0VWludDMyKGEsdSsxMik7c3dpdGNoKGUpe2Nhc2UiY21hcCI6aT1wYXJzZUNtYXAoYSxoKTticmVhaztjYXNlImdseWYiOm49YS5zdWJhcnJheShoLGgrZCk7YnJlYWs7Y2FzZSJsb2NhIjpzPWEuc3ViYXJyYXkoaCxoK2QpO2JyZWFrO2Nhc2UiaGVhZCI6bD1nZXRVaW50MTYoYSxoKzE4KTtjPWdldFVpbnQxNihhLGgrNTApO2JyZWFrO2Nhc2UiQ0ZGICI6bz1wYXJzZUNmZihhLGgsaCtkLHQpfX1pZihuKXtjb25zdCB0PWw/WzEvbCwwLDAsMS9sLDAsMF06ZS5mb250TWF0cml4O3JldHVybiBuZXcgVHJ1ZVR5cGVDb21waWxlZChmdW5jdGlvbiBwYXJzZUdseWZUYWJsZShlLHQsYSl7bGV0IHIsaTtpZihhKXtyPTQ7aT1nZXRVaW50MzJ9ZWxzZXtyPTI7aT0oZSx0KT0+MipnZXRVaW50MTYoZSx0KX1jb25zdCBuPVtdO2xldCBzPWkodCwwKTtmb3IobGV0IGE9cjthPHQubGVuZ3RoO2ErPXIpe2NvbnN0IHI9aSh0LGEpO24ucHVzaChlLnN1YmFycmF5KHMscikpO3M9cn1yZXR1cm4gbn0obixzLGMpLGksdCl9cmV0dXJuIG5ldyBUeXBlMkNvbXBpbGVkKG8saSxlLmZvbnRNYXRyaXgsZS5nbHlwaE5hbWVNYXApfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5nZXRNZXRyaWNzPXQuZ2V0Rm9udEJhc2ljTWV0cmljcz12b2lkIDA7dmFyIHI9YSgzKTtjb25zdCBpPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPTYwMDtlWyJDb3VyaWVyLUJvbGQiXT02MDA7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPTYwMDtlWyJDb3VyaWVyLU9ibGlxdWUiXT02MDA7ZS5IZWx2ZXRpY2E9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0yNzg7ZS5xdW90ZWRibD0zNTU7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD02Njc7ZS5xdW90ZXJpZ2h0PTIyMjtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NTU2O2UuYXQ9MTAxNTtlLkE9NjY3O2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTAwO2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0yNzg7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTI3ODtlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTIyMjtlLmE9NTU2O2UuYj01NTY7ZS5jPTUwMDtlLmQ9NTU2O2UuZT01NTY7ZS5mPTI3ODtlLmc9NTU2O2UuaD01NTY7ZS5pPTIyMjtlLmo9MjIyO2Uuaz01MDA7ZS5sPTIyMjtlLm09ODMzO2Uubj01NTY7ZS5vPTU1NjtlLnA9NTU2O2UucT01NTY7ZS5yPTMzMztlLnM9NTAwO2UudD0yNzg7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej01MDA7ZS5icmFjZWxlZnQ9MzM0O2UuYmFyPTI2MDtlLmJyYWNlcmlnaHQ9MzM0O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTE5MTtlLnF1b3RlZGJsbGVmdD0zMzM7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTUzNztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yMjI7ZS5xdW90ZWRibGJhc2U9MzMzO2UucXVvdGVkYmxyaWdodD0zMzM7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9MjIyO2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9NTAwO2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTAwO2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yMjI7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTAwO2Uuc2NlZGlsbGE9NTAwO2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT01MDA7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NjQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01MDA7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjYwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTU1NjtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9MjIyO2UudGNhcm9uPTMxNztlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yMjI7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTU1NjtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTUwMDtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTU1NjtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTI5OTtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTU1NjtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTU1NjtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT01NTY7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTU1NjtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTU2O2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz01NTY7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTU1NjtlLmV0aD01NTY7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZVsiSGVsdmV0aWNhLUJvbGQiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQ3NDtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTcyMjtlLnF1b3RlcmlnaHQ9Mjc4O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj02MTE7ZS5hdD05NzU7ZS5BPTcyMjtlLkI9NzIyO2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTU1NjtlLks9NzIyO2UuTD02MTE7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODQ7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yNzg7ZS5hPTU1NjtlLmI9NjExO2UuYz01NTY7ZS5kPTYxMTtlLmU9NTU2O2UuZj0zMzM7ZS5nPTYxMTtlLmg9NjExO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTU2O2UubD0yNzg7ZS5tPTg4OTtlLm49NjExO2Uubz02MTE7ZS5wPTYxMTtlLnE9NjExO2Uucj0zODk7ZS5zPTU1NjtlLnQ9MzMzO2UudT02MTE7ZS52PTU1NjtlLnc9Nzc4O2UueD01NTY7ZS55PTU1NjtlLno9NTAwO2UuYnJhY2VsZWZ0PTM4OTtlLmJhcj0yODA7ZS5icmFjZXJpZ2h0PTM4OTtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0yMzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTYxMTtlLmZsPTYxMTtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01NTY7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9Mjc4O2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NjExO2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTU2O2Uuc2NvbW1hYWNjZW50PTU1NjtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTYxMTtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTU1NjtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTU1NjtlLnNjZWRpbGxhPTU1NjtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NjExO2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NTU2O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTc0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NjExO2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NjExO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01NTY7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTU2O2UubmFjdXRlPTYxMTtlLnVtYWNyb249NjExO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI4MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj02MTE7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zODk7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT02MTE7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01NTY7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTYxMTtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT02MTE7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD02MTE7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD02MTE7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj00MDA7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD02MTE7ZS5udGlsZGU9NjExO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NjExO2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT02MTE7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTYxMTtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTYxMTtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj02MTE7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NjExO2UudWRpZXJlc2lzPTYxMTtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD02MTE7ZS5ldGg9NjExO2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD02MTE7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDc0O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NzIyO2UucXVvdGVyaWdodD0yNzg7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTYxMTtlLmF0PTk3NTtlLkE9NzIyO2UuQj03MjI7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTU2O2UuSz03MjI7ZS5MPTYxMTtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4NDtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTI3ODtlLmE9NTU2O2UuYj02MTE7ZS5jPTU1NjtlLmQ9NjExO2UuZT01NTY7ZS5mPTMzMztlLmc9NjExO2UuaD02MTE7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01NTY7ZS5sPTI3ODtlLm09ODg5O2Uubj02MTE7ZS5vPTYxMTtlLnA9NjExO2UucT02MTE7ZS5yPTM4OTtlLnM9NTU2O2UudD0zMzM7ZS51PTYxMTtlLnY9NTU2O2Uudz03Nzg7ZS54PTU1NjtlLnk9NTU2O2Uuej01MDA7ZS5icmFjZWxlZnQ9Mzg5O2UuYmFyPTI4MDtlLmJyYWNlcmlnaHQ9Mzg5O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTIzODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NjExO2UuZmw9NjExO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTU1NjtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yNzg7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD02MTE7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01NTY7ZS5zY29tbWFhY2NlbnQ9NTU2O2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NjExO2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTU2O2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTU2O2Uuc2NlZGlsbGE9NTU2O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD02MTE7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT01NTY7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NzQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz02MTE7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT02MTE7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTU1NjtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01NTY7ZS5uYWN1dGU9NjExO2UudW1hY3Jvbj02MTE7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjgwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTYxMTtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM4OTtlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTYxMTtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTU1NjtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NjExO2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTYxMTtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTYxMTtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTYxMTtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTQwMDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTYxMTtlLm50aWxkZT02MTE7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT02MTE7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTYxMTtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NjExO2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NjExO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTYxMTtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz02MTE7ZS51ZGllcmVzaXM9NjExO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTYxMTtlLmV0aD02MTE7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTYxMTtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTI3ODtlLnF1b3RlZGJsPTM1NTtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTY2NztlLnF1b3RlcmlnaHQ9MjIyO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj01NTY7ZS5hdD0xMDE1O2UuQT02Njc7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01MDA7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTI3ODtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mjc4O2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9MjIyO2UuYT01NTY7ZS5iPTU1NjtlLmM9NTAwO2UuZD01NTY7ZS5lPTU1NjtlLmY9Mjc4O2UuZz01NTY7ZS5oPTU1NjtlLmk9MjIyO2Uuaj0yMjI7ZS5rPTUwMDtlLmw9MjIyO2UubT04MzM7ZS5uPTU1NjtlLm89NTU2O2UucD01NTY7ZS5xPTU1NjtlLnI9MzMzO2Uucz01MDA7ZS50PTI3ODtlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTUwMDtlLmJyYWNlbGVmdD0zMzQ7ZS5iYXI9MjYwO2UuYnJhY2VyaWdodD0zMzQ7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MTkxO2UucXVvdGVkYmxsZWZ0PTMzMztlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTM3O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTIyMjtlLnF1b3RlZGJsYmFzZT0zMzM7ZS5xdW90ZWRibHJpZ2h0PTMzMztlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yMjI7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD01MDA7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01MDA7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTIyMjtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01MDA7ZS5zY2VkaWxsYT01MDA7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NjY3O2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTUwMDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj02NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTUwMDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yNjA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTMzMztlLm9tYWNyb249NTU2O2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yMjI7ZS50Y2Fyb249MzE3O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTIyMjtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTU2O2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTAwO2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTU2O2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249Mjk5O2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NTU2O2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTU2O2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTU1NjtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTU2O2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01NTY7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTU1NjtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTU2O2UuZXRoPTU1NjtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlLlN5bWJvbD0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnVuaXZlcnNhbD03MTM7ZS5udW1iZXJzaWduPTUwMDtlLmV4aXN0ZW50aWFsPTU0OTtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnN1Y2h0aGF0PTQzOTtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrbWF0aD01MDA7ZS5wbHVzPTU0OTtlLmNvbW1hPTI1MDtlLm1pbnVzPTU0OTtlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU0OTtlLmVxdWFsPTU0OTtlLmdyZWF0ZXI9NTQ5O2UucXVlc3Rpb249NDQ0O2UuY29uZ3J1ZW50PTU0OTtlLkFscGhhPTcyMjtlLkJldGE9NjY3O2UuQ2hpPTcyMjtlLkRlbHRhPTYxMjtlLkVwc2lsb249NjExO2UuUGhpPTc2MztlLkdhbW1hPTYwMztlLkV0YT03MjI7ZS5Jb3RhPTMzMztlLnRoZXRhMT02MzE7ZS5LYXBwYT03MjI7ZS5MYW1iZGE9Njg2O2UuTXU9ODg5O2UuTnU9NzIyO2UuT21pY3Jvbj03MjI7ZS5QaT03Njg7ZS5UaGV0YT03NDE7ZS5SaG89NTU2O2UuU2lnbWE9NTkyO2UuVGF1PTYxMTtlLlVwc2lsb249NjkwO2Uuc2lnbWExPTQzOTtlLk9tZWdhPTc2ODtlLlhpPTY0NTtlLlBzaT03OTU7ZS5aZXRhPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLnRoZXJlZm9yZT04NjM7ZS5icmFja2V0cmlnaHQ9MzMzO2UucGVycGVuZGljdWxhcj02NTg7ZS51bmRlcnNjb3JlPTUwMDtlLnJhZGljYWxleD01MDA7ZS5hbHBoYT02MzE7ZS5iZXRhPTU0OTtlLmNoaT01NDk7ZS5kZWx0YT00OTQ7ZS5lcHNpbG9uPTQzOTtlLnBoaT01MjE7ZS5nYW1tYT00MTE7ZS5ldGE9NjAzO2UuaW90YT0zMjk7ZS5waGkxPTYwMztlLmthcHBhPTU0OTtlLmxhbWJkYT01NDk7ZS5tdT01NzY7ZS5udT01MjE7ZS5vbWljcm9uPTU0OTtlLnBpPTU0OTtlLnRoZXRhPTUyMTtlLnJobz01NDk7ZS5zaWdtYT02MDM7ZS50YXU9NDM5O2UudXBzaWxvbj01NzY7ZS5vbWVnYTE9NzEzO2Uub21lZ2E9Njg2O2UueGk9NDkzO2UucHNpPTY4NjtlLnpldGE9NDk0O2UuYnJhY2VsZWZ0PTQ4MDtlLmJhcj0yMDA7ZS5icmFjZXJpZ2h0PTQ4MDtlLnNpbWlsYXI9NTQ5O2UuRXVybz03NTA7ZS5VcHNpbG9uMT02MjA7ZS5taW51dGU9MjQ3O2UubGVzc2VxdWFsPTU0OTtlLmZyYWN0aW9uPTE2NztlLmluZmluaXR5PTcxMztlLmZsb3Jpbj01MDA7ZS5jbHViPTc1MztlLmRpYW1vbmQ9NzUzO2UuaGVhcnQ9NzUzO2Uuc3BhZGU9NzUzO2UuYXJyb3dib3RoPTEwNDI7ZS5hcnJvd2xlZnQ9OTg3O2UuYXJyb3d1cD02MDM7ZS5hcnJvd3JpZ2h0PTk4NztlLmFycm93ZG93bj02MDM7ZS5kZWdyZWU9NDAwO2UucGx1c21pbnVzPTU0OTtlLnNlY29uZD00MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UubXVsdGlwbHk9NTQ5O2UucHJvcG9ydGlvbmFsPTcxMztlLnBhcnRpYWxkaWZmPTQ5NDtlLmJ1bGxldD00NjA7ZS5kaXZpZGU9NTQ5O2Uubm90ZXF1YWw9NTQ5O2UuZXF1aXZhbGVuY2U9NTQ5O2UuYXBwcm94ZXF1YWw9NTQ5O2UuZWxsaXBzaXM9MWUzO2UuYXJyb3d2ZXJ0ZXg9NjAzO2UuYXJyb3dob3JpemV4PTFlMztlLmNhcnJpYWdlcmV0dXJuPTY1ODtlLmFsZXBoPTgyMztlLklmcmFrdHVyPTY4NjtlLlJmcmFrdHVyPTc5NTtlLndlaWVyc3RyYXNzPTk4NztlLmNpcmNsZW11bHRpcGx5PTc2ODtlLmNpcmNsZXBsdXM9NzY4O2UuZW1wdHlzZXQ9ODIzO2UuaW50ZXJzZWN0aW9uPTc2ODtlLnVuaW9uPTc2ODtlLnByb3BlcnN1cGVyc2V0PTcxMztlLnJlZmxleHN1cGVyc2V0PTcxMztlLm5vdHN1YnNldD03MTM7ZS5wcm9wZXJzdWJzZXQ9NzEzO2UucmVmbGV4c3Vic2V0PTcxMztlLmVsZW1lbnQ9NzEzO2Uubm90ZWxlbWVudD03MTM7ZS5hbmdsZT03Njg7ZS5ncmFkaWVudD03MTM7ZS5yZWdpc3RlcnNlcmlmPTc5MDtlLmNvcHlyaWdodHNlcmlmPTc5MDtlLnRyYWRlbWFya3NlcmlmPTg5MDtlLnByb2R1Y3Q9ODIzO2UucmFkaWNhbD01NDk7ZS5kb3RtYXRoPTI1MDtlLmxvZ2ljYWxub3Q9NzEzO2UubG9naWNhbGFuZD02MDM7ZS5sb2dpY2Fsb3I9NjAzO2UuYXJyb3dkYmxib3RoPTEwNDI7ZS5hcnJvd2RibGxlZnQ9OTg3O2UuYXJyb3dkYmx1cD02MDM7ZS5hcnJvd2RibHJpZ2h0PTk4NztlLmFycm93ZGJsZG93bj02MDM7ZS5sb3plbmdlPTQ5NDtlLmFuZ2xlbGVmdD0zMjk7ZS5yZWdpc3RlcnNhbnM9NzkwO2UuY29weXJpZ2h0c2Fucz03OTA7ZS50cmFkZW1hcmtzYW5zPTc4NjtlLnN1bW1hdGlvbj03MTM7ZS5wYXJlbmxlZnR0cD0zODQ7ZS5wYXJlbmxlZnRleD0zODQ7ZS5wYXJlbmxlZnRidD0zODQ7ZS5icmFja2V0bGVmdHRwPTM4NDtlLmJyYWNrZXRsZWZ0ZXg9Mzg0O2UuYnJhY2tldGxlZnRidD0zODQ7ZS5icmFjZWxlZnR0cD00OTQ7ZS5icmFjZWxlZnRtaWQ9NDk0O2UuYnJhY2VsZWZ0YnQ9NDk0O2UuYnJhY2VleD00OTQ7ZS5hbmdsZXJpZ2h0PTMyOTtlLmludGVncmFsPTI3NDtlLmludGVncmFsdHA9Njg2O2UuaW50ZWdyYWxleD02ODY7ZS5pbnRlZ3JhbGJ0PTY4NjtlLnBhcmVucmlnaHR0cD0zODQ7ZS5wYXJlbnJpZ2h0ZXg9Mzg0O2UucGFyZW5yaWdodGJ0PTM4NDtlLmJyYWNrZXRyaWdodHRwPTM4NDtlLmJyYWNrZXRyaWdodGV4PTM4NDtlLmJyYWNrZXRyaWdodGJ0PTM4NDtlLmJyYWNlcmlnaHR0cD00OTQ7ZS5icmFjZXJpZ2h0bWlkPTQ5NDtlLmJyYWNlcmlnaHRidD00OTQ7ZS5hcHBsZT03OTB9KSk7ZVsiVGltZXMtUm9tYW4iXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQwODtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NjQ7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTY0O2UuZXF1YWw9NTY0O2UuZ3JlYXRlcj01NjQ7ZS5xdWVzdGlvbj00NDQ7ZS5hdD05MjE7ZS5BPTcyMjtlLkI9NjY3O2UuQz02Njc7ZS5EPTcyMjtlLkU9NjExO2UuRj01NTY7ZS5HPTcyMjtlLkg9NzIyO2UuST0zMzM7ZS5KPTM4OTtlLks9NzIyO2UuTD02MTE7ZS5NPTg4OTtlLk49NzIyO2UuTz03MjI7ZS5QPTU1NjtlLlE9NzIyO2UuUj02Njc7ZS5TPTU1NjtlLlQ9NjExO2UuVT03MjI7ZS5WPTcyMjtlLlc9OTQ0O2UuWD03MjI7ZS5ZPTcyMjtlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTQ0NDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTAwO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTAwO2UubD0yNzg7ZS5tPTc3ODtlLm49NTAwO2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zMzM7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01MDA7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NDQ0O2UuYnJhY2VsZWZ0PTQ4MDtlLmJhcj0yMDA7ZS5icmFjZXJpZ2h0PTQ4MDtlLmFzY2lpdGlsZGU9NTQxO2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0xODA7ZS5xdW90ZWRibGxlZnQ9NDQ0O2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD00NTM7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTQ0NDtlLnF1b3RlZGJscmlnaHQ9NDQ0O2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTQ0NDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9ODg5O2Uub3JkZmVtaW5pbmU9Mjc2O2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03MjI7ZS5PRT04ODk7ZS5vcmRtYXNjdWxpbmU9MzEwO2UuYWU9NjY3O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zMzM7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTQ0NDtlLnVodW5nYXJ1bWxhdXQ9NTAwO2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz03MjI7ZS5kaXZpZGU9NTY0O2UuWWFjdXRlPTcyMjtlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT00NDQ7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTQ0NDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTUwMDtlLkVkaWVyZXNpcz02MTE7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc2MDtlLkVtYWNyb249NjExO2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTQ0NDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTQ0NDtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTQ0NDtlLkVkb3RhY2NlbnQ9NjExO2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj02Njc7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTAwO2UuYWNpcmN1bWZsZXg9NDQ0O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj01NTY7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02Njc7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTU4ODtlLlVtYWNyb249NzIyO2UudXJpbmc9NTAwO2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01NjQ7ZS51YWN1dGU9NTAwO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjExO2UuYWRpZXJlc2lzPTQ0NDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTUwMDtlLnVtYWNyb249NTAwO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zMzM7ZS5wbHVzbWludXM9NTY0O2UuYnJva2VuYmFyPTIwMDtlLnJlZ2lzdGVyZWQ9NzYwO2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9MzMzO2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02MTE7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zMjY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTQ0NDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTQ0NDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01MDA7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTYxMTtlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zNDQ7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz05ODA7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zMzM7ZS5JbWFjcm9uPTMzMztlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTAwO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjExO2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTUwMDtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02Njc7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9NDQ0O2UuRWNhcm9uPTYxMTtlLklvZ29uZWs9MzMzO2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU2NDtlLkljaXJjdW1mbGV4PTMzMztlLm5jYXJvbj01MDA7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01NjQ7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTUwMDtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTQ0NDtlLm5jb21tYWFjY2VudD01MDA7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2VbIlRpbWVzLUJvbGQiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTU1NTtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9MWUzO2UuYW1wZXJzYW5kPTgzMztlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NzA7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTcwO2UuZXF1YWw9NTcwO2UuZ3JlYXRlcj01NzA7ZS5xdWVzdGlvbj01MDA7ZS5hdD05MzA7ZS5BPTcyMjtlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9Nzc4O2UuST0zODk7ZS5KPTUwMDtlLks9Nzc4O2UuTD02Njc7ZS5NPTk0NDtlLk49NzIyO2UuTz03Nzg7ZS5QPTYxMTtlLlE9Nzc4O2UuUj03MjI7ZS5TPTU1NjtlLlQ9NjY3O2UuVT03MjI7ZS5WPTcyMjtlLlc9MWUzO2UuWD03MjI7ZS5ZPTcyMjtlLlo9NjY3O2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODE7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTU2O2UuYz00NDQ7ZS5kPTU1NjtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTU2O2UuaT0yNzg7ZS5qPTMzMztlLms9NTU2O2UubD0yNzg7ZS5tPTgzMztlLm49NTU2O2Uubz01MDA7ZS5wPTU1NjtlLnE9NTU2O2Uucj00NDQ7ZS5zPTM4OTtlLnQ9MzMzO2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NDQ0O2UuYnJhY2VsZWZ0PTM5NDtlLmJhcj0yMjA7ZS5icmFjZXJpZ2h0PTM5NDtlLmFzY2lpdGlsZGU9NTIwO2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yNzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01NDA7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzAwO2UuTHNsYXNoPTY2NztlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzMwO2UuYWU9NzIyO2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTU1NjtlLklkaWVyZXNpcz0zODk7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz03MjI7ZS5kaXZpZGU9NTcwO2UuWWFjdXRlPTcyMjtlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc0NztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD02Njc7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249NDQ0O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02Njc7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTY3MjtlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01NzA7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTY2NztlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zODk7ZS5wbHVzbWludXM9NTcwO2UuYnJva2VuYmFyPTIyMDtlLnJlZ2lzdGVyZWQ9NzQ3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mzg5O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9NDQ0O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjY3O2UuWmNhcm9uPTY2NztlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj00MTY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTQ0NDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zOTQ7ZS5LY29tbWFhY2NlbnQ9Nzc4O2UuTGFjdXRlPTY2NztlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zODk7ZS5JbWFjcm9uPTM4OTtlLkxjYXJvbj02Njc7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD00NDQ7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjY3O2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NDQ0O2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mzg5O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU3MDtlLkljaXJjdW1mbGV4PTM4OTtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01NzA7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTQ0NDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTM4OTtlLnF1b3RlZGJsPTU1NTtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NzA7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTcwO2UuZXF1YWw9NTcwO2UuZ3JlYXRlcj01NzA7ZS5xdWVzdGlvbj01MDA7ZS5hdD04MzI7ZS5BPTY2NztlLkI9NjY3O2UuQz02Njc7ZS5EPTcyMjtlLkU9NjY3O2UuRj02Njc7ZS5HPTcyMjtlLkg9Nzc4O2UuST0zODk7ZS5KPTUwMDtlLks9NjY3O2UuTD02MTE7ZS5NPTg4OTtlLk49NzIyO2UuTz03MjI7ZS5QPTYxMTtlLlE9NzIyO2UuUj02Njc7ZS5TPTU1NjtlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9ODg5O2UuWD02Njc7ZS5ZPTYxMTtlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01NzA7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTU2O2UuaT0yNzg7ZS5qPTI3ODtlLms9NTAwO2UubD0yNzg7ZS5tPTc3ODtlLm49NTU2O2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zODk7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01NTY7ZS52PTQ0NDtlLnc9NjY3O2UueD01MDA7ZS55PTQ0NDtlLno9Mzg5O2UuYnJhY2VsZWZ0PTM0ODtlLmJhcj0yMjA7ZS5icmFjZXJpZ2h0PTM0ODtlLmFzY2lpdGlsZGU9NTcwO2UuZXhjbGFtZG93bj0zODk7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yNzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01MDA7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9OTQ0O2Uub3JkZmVtaW5pbmU9MjY2O2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03MjI7ZS5PRT05NDQ7ZS5vcmRtYXNjdWxpbmU9MzAwO2UuYWU9NzIyO2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zODk7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz02MTE7ZS5kaXZpZGU9NTcwO2UuWWFjdXRlPTYxMTtlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NDQ0O2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc0NztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj02Njc7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02Njc7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTYwODtlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01NzA7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz00NDQ7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zODk7ZS5wbHVzbWludXM9NTcwO2UuYnJva2VuYmFyPTIyMDtlLnJlZ2lzdGVyZWQ9NzQ3O2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9Mzg5O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zNjY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTM4OTtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01NzY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zODI7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zODk7ZS5JbWFjcm9uPTM4OTtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02Njc7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9Mzg5O2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mzg5O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTYwNjtlLkljaXJjdW1mbGV4PTM4OTtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD02MDY7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTM4OTtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2VbIlRpbWVzLUl0YWxpYyJdPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDIwO2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTY3NTtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz02NzU7ZS5lcXVhbD02NzU7ZS5ncmVhdGVyPTY3NTtlLnF1ZXN0aW9uPTUwMDtlLmF0PTkyMDtlLkE9NjExO2UuQj02MTE7ZS5DPTY2NztlLkQ9NzIyO2UuRT02MTE7ZS5GPTYxMTtlLkc9NzIyO2UuSD03MjI7ZS5JPTMzMztlLko9NDQ0O2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj02Njc7ZS5PPTcyMjtlLlA9NjExO2UuUT03MjI7ZS5SPTYxMTtlLlM9NTAwO2UuVD01NTY7ZS5VPTcyMjtlLlY9NjExO2UuVz04MzM7ZS5YPTYxMTtlLlk9NTU2O2UuWj01NTY7ZS5icmFja2V0bGVmdD0zODk7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTM4OTtlLmFzY2lpY2lyY3VtPTQyMjtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTI3ODtlLmc9NTAwO2UuaD01MDA7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz00NDQ7ZS5sPTI3ODtlLm09NzIyO2Uubj01MDA7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTM4OTtlLnM9Mzg5O2UudD0yNzg7ZS51PTUwMDtlLnY9NDQ0O2Uudz02Njc7ZS54PTQ0NDtlLnk9NDQ0O2Uuej0zODk7ZS5icmFjZWxlZnQ9NDAwO2UuYmFyPTI3NTtlLmJyYWNlcmlnaHQ9NDAwO2UuYXNjaWl0aWxkZT01NDE7ZS5leGNsYW1kb3duPTM4OTtlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTIxNDtlLnF1b3RlZGJsbGVmdD01NTY7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTUyMztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTU2O2UucXVvdGVkYmxyaWdodD01NTY7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz04ODk7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD04ODk7ZS5BRT04ODk7ZS5vcmRmZW1pbmluZT0yNzY7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTcyMjtlLk9FPTk0NDtlLm9yZG1hc2N1bGluZT0zMTA7ZS5hZT02Njc7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTY2NztlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTMzMztlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01MDA7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTU1NjtlLmRpdmlkZT02NzU7ZS5ZYWN1dGU9NTU2O2UuQWNpcmN1bWZsZXg9NjExO2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT00NDQ7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTAwO2UuRWRpZXJlc2lzPTYxMTtlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzYwO2UuRW1hY3Jvbj02MTE7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTY2NztlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTU1NjtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02MTE7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTYxMTtlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01MDA7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTYxMTtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTU1NjtlLlRob3JuPTYxMTtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTYxMTtlLlNhY3V0ZT01MDA7ZS5kY2Fyb249NTQ0O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01MDA7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NjExO2UuQWJyZXZlPTYxMTtlLm11bHRpcGx5PTY3NTtlLnVhY3V0ZT01MDA7ZS5UY2Fyb249NTU2O2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTQ0NDtlLk5hY3V0ZT02Njc7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02MTE7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTAwO2UudW1hY3Jvbj01MDA7ZS5OY2Fyb249NjY3O2UuSWFjdXRlPTMzMztlLnBsdXNtaW51cz02NzU7ZS5icm9rZW5iYXI9Mjc1O2UucmVnaXN0ZXJlZD03NjA7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zMzM7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTYxMTtlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT01NTY7ZS5aY2Fyb249NTU2O2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTMwMDtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjExO2UuQWRpZXJlc2lzPTYxMTtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9Mzg5O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTUwMDtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjExO2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTAwO2UubGNhcm9uPTMwMDtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTk4MDtlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTMzMztlLkltYWNyb249MzMzO2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01MDA7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02MTE7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01MDA7ZS5TY29tbWFhY2NlbnQ9NTAwO2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTAwO2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT02Njc7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTYxMTtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjExO2UuQW9nb25laz02MTE7ZS5BcmluZz02MTE7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD0zODk7ZS5FY2Fyb249NjExO2UuSW9nb25laz0zMzM7ZS5rY29tbWFhY2NlbnQ9NDQ0O2UubWludXM9Njc1O2UuSWNpcmN1bWZsZXg9MzMzO2UubmNhcm9uPTUwMDtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTY3NTtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTAwO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249Mzg5O2UubmNvbW1hYWNjZW50PTUwMDtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZS5aYXBmRGluZ2JhdHM9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmExPTk3NDtlLmEyPTk2MTtlLmEyMDI9OTc0O2UuYTM9OTgwO2UuYTQ9NzE5O2UuYTU9Nzg5O2UuYTExOT03OTA7ZS5hMTE4PTc5MTtlLmExMTc9NjkwO2UuYTExPTk2MDtlLmExMj05Mzk7ZS5hMTM9NTQ5O2UuYTE0PTg1NTtlLmExNT05MTE7ZS5hMTY9OTMzO2UuYTEwNT05MTE7ZS5hMTc9OTQ1O2UuYTE4PTk3NDtlLmExOT03NTU7ZS5hMjA9ODQ2O2UuYTIxPTc2MjtlLmEyMj03NjE7ZS5hMjM9NTcxO2UuYTI0PTY3NztlLmEyNT03NjM7ZS5hMjY9NzYwO2UuYTI3PTc1OTtlLmEyOD03NTQ7ZS5hNj00OTQ7ZS5hNz01NTI7ZS5hOD01Mzc7ZS5hOT01Nzc7ZS5hMTA9NjkyO2UuYTI5PTc4NjtlLmEzMD03ODg7ZS5hMzE9Nzg4O2UuYTMyPTc5MDtlLmEzMz03OTM7ZS5hMzQ9Nzk0O2UuYTM1PTgxNjtlLmEzNj04MjM7ZS5hMzc9Nzg5O2UuYTM4PTg0MTtlLmEzOT04MjM7ZS5hNDA9ODMzO2UuYTQxPTgxNjtlLmE0Mj04MzE7ZS5hNDM9OTIzO2UuYTQ0PTc0NDtlLmE0NT03MjM7ZS5hNDY9NzQ5O2UuYTQ3PTc5MDtlLmE0OD03OTI7ZS5hNDk9Njk1O2UuYTUwPTc3NjtlLmE1MT03Njg7ZS5hNTI9NzkyO2UuYTUzPTc1OTtlLmE1ND03MDc7ZS5hNTU9NzA4O2UuYTU2PTY4MjtlLmE1Nz03MDE7ZS5hNTg9ODI2O2UuYTU5PTgxNTtlLmE2MD03ODk7ZS5hNjE9Nzg5O2UuYTYyPTcwNztlLmE2Mz02ODc7ZS5hNjQ9Njk2O2UuYTY1PTY4OTtlLmE2Nj03ODY7ZS5hNjc9Nzg3O2UuYTY4PTcxMztlLmE2OT03OTE7ZS5hNzA9Nzg1O2UuYTcxPTc5MTtlLmE3Mj04NzM7ZS5hNzM9NzYxO2UuYTc0PTc2MjtlLmEyMDM9NzYyO2UuYTc1PTc1OTtlLmEyMDQ9NzU5O2UuYTc2PTg5MjtlLmE3Nz04OTI7ZS5hNzg9Nzg4O2UuYTc5PTc4NDtlLmE4MT00Mzg7ZS5hODI9MTM4O2UuYTgzPTI3NztlLmE4ND00MTU7ZS5hOTc9MzkyO2UuYTk4PTM5MjtlLmE5OT02Njg7ZS5hMTAwPTY2ODtlLmE4OT0zOTA7ZS5hOTA9MzkwO2UuYTkzPTMxNztlLmE5ND0zMTc7ZS5hOTE9Mjc2O2UuYTkyPTI3NjtlLmEyMDU9NTA5O2UuYTg1PTUwOTtlLmEyMDY9NDEwO2UuYTg2PTQxMDtlLmE4Nz0yMzQ7ZS5hODg9MjM0O2UuYTk1PTMzNDtlLmE5Nj0zMzQ7ZS5hMTAxPTczMjtlLmExMDI9NTQ0O2UuYTEwMz01NDQ7ZS5hMTA0PTkxMDtlLmExMDY9NjY3O2UuYTEwNz03NjA7ZS5hMTA4PTc2MDtlLmExMTI9Nzc2O2UuYTExMT01OTU7ZS5hMTEwPTY5NDtlLmExMDk9NjI2O2UuYTEyMD03ODg7ZS5hMTIxPTc4ODtlLmExMjI9Nzg4O2UuYTEyMz03ODg7ZS5hMTI0PTc4ODtlLmExMjU9Nzg4O2UuYTEyNj03ODg7ZS5hMTI3PTc4ODtlLmExMjg9Nzg4O2UuYTEyOT03ODg7ZS5hMTMwPTc4ODtlLmExMzE9Nzg4O2UuYTEzMj03ODg7ZS5hMTMzPTc4ODtlLmExMzQ9Nzg4O2UuYTEzNT03ODg7ZS5hMTM2PTc4ODtlLmExMzc9Nzg4O2UuYTEzOD03ODg7ZS5hMTM5PTc4ODtlLmExNDA9Nzg4O2UuYTE0MT03ODg7ZS5hMTQyPTc4ODtlLmExNDM9Nzg4O2UuYTE0ND03ODg7ZS5hMTQ1PTc4ODtlLmExNDY9Nzg4O2UuYTE0Nz03ODg7ZS5hMTQ4PTc4ODtlLmExNDk9Nzg4O2UuYTE1MD03ODg7ZS5hMTUxPTc4ODtlLmExNTI9Nzg4O2UuYTE1Mz03ODg7ZS5hMTU0PTc4ODtlLmExNTU9Nzg4O2UuYTE1Nj03ODg7ZS5hMTU3PTc4ODtlLmExNTg9Nzg4O2UuYTE1OT03ODg7ZS5hMTYwPTg5NDtlLmExNjE9ODM4O2UuYTE2Mz0xMDE2O2UuYTE2ND00NTg7ZS5hMTk2PTc0ODtlLmExNjU9OTI0O2UuYTE5Mj03NDg7ZS5hMTY2PTkxODtlLmExNjc9OTI3O2UuYTE2OD05Mjg7ZS5hMTY5PTkyODtlLmExNzA9ODM0O2UuYTE3MT04NzM7ZS5hMTcyPTgyODtlLmExNzM9OTI0O2UuYTE2Mj05MjQ7ZS5hMTc0PTkxNztlLmExNzU9OTMwO2UuYTE3Nj05MzE7ZS5hMTc3PTQ2MztlLmExNzg9ODgzO2UuYTE3OT04MzY7ZS5hMTkzPTgzNjtlLmExODA9ODY3O2UuYTE5OT04Njc7ZS5hMTgxPTY5NjtlLmEyMDA9Njk2O2UuYTE4Mj04NzQ7ZS5hMjAxPTg3NDtlLmExODM9NzYwO2UuYTE4ND05NDY7ZS5hMTk3PTc3MTtlLmExODU9ODY1O2UuYTE5ND03NzE7ZS5hMTk4PTg4ODtlLmExODY9OTY3O2UuYTE5NT04ODg7ZS5hMTg3PTgzMTtlLmExODg9ODczO2UuYTE4OT05Mjc7ZS5hMTkwPTk3MDtlLmExOTE9OTE4fSkpfSkpO3QuZ2V0TWV0cmljcz1pO2NvbnN0IG49KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkNvdXJpZXI9e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDotNDI2fTtlWyJDb3VyaWVyLUJvbGQiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQzOX07ZVsiQ291cmllci1PYmxpcXVlIl09e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDo0MjZ9O2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn07ZS5IZWx2ZXRpY2E9e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9O2VbIkhlbHZldGljYS1PYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTMyfTtlWyJUaW1lcy1Sb21hbiJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjYyLHhIZWlnaHQ6NDUwfTtlWyJUaW1lcy1Cb2xkIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NzYseEhlaWdodDo0NjF9O2VbIlRpbWVzLUl0YWxpYyJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjUzLHhIZWlnaHQ6NDQxfTtlWyJUaW1lcy1Cb2xkSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjkseEhlaWdodDo0NjJ9O2UuU3ltYm9sPXthc2NlbnQ6TWF0aC5OYU4sZGVzY2VudDpNYXRoLk5hTixjYXBIZWlnaHQ6TWF0aC5OYU4seEhlaWdodDpNYXRoLk5hTn07ZS5aYXBmRGluZ2JhdHM9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfX0pKTt0LmdldEZvbnRCYXNpY01ldHJpY3M9bn0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5HbHlmVGFibGU9dm9pZCAwO3QuR2x5ZlRhYmxlPWNsYXNzIEdseWZUYWJsZXtjb25zdHJ1Y3Rvcih7Z2x5ZlRhYmxlOmUsaXNHbHlwaExvY2F0aW9uc0xvbmc6dCxsb2NhVGFibGU6YSxudW1HbHlwaHM6cn0pe3RoaXMuZ2x5cGhzPVtdO2NvbnN0IGk9bmV3IERhdGFWaWV3KGEuYnVmZmVyLGEuYnl0ZU9mZnNldCxhLmJ5dGVMZW5ndGgpLG49bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLHM9dD80OjI7bGV0IG89dD9pLmdldFVpbnQzMigwKToyKmkuZ2V0VWludDE2KDApLGM9MDtmb3IobGV0IGU9MDtlPHI7ZSsrKXtjKz1zO2NvbnN0IGU9dD9pLmdldFVpbnQzMihjKToyKmkuZ2V0VWludDE2KGMpO2lmKGU9PT1vKXt0aGlzLmdseXBocy5wdXNoKG5ldyBHbHlwaCh7fSkpO2NvbnRpbnVlfWNvbnN0IGE9R2x5cGgucGFyc2UobyxuKTt0aGlzLmdseXBocy5wdXNoKGEpO289ZX19Z2V0U2l6ZSgpe3JldHVybiB0aGlzLmdseXBocy5yZWR1Y2UoKChlLHQpPT5lKyh0LmdldFNpemUoKSszJi00KSksMCl9d3JpdGUoKXtjb25zdCBlPXRoaXMuZ2V0U2l6ZSgpLHQ9bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcihlKSksYT1lPjEzMTA3MCxyPWE/NDoyLGk9bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigodGhpcy5nbHlwaHMubGVuZ3RoKzEpKnIpKTthP2kuc2V0VWludDMyKDAsMCk6aS5zZXRVaW50MTYoMCwwKTtsZXQgbj0wLHM9MDtmb3IoY29uc3QgZSBvZiB0aGlzLmdseXBocyl7bis9ZS53cml0ZShuLHQpO249biszJi00O3MrPXI7YT9pLnNldFVpbnQzMihzLG4pOmkuc2V0VWludDE2KHMsbj4+MSl9cmV0dXJue2lzTG9jYXRpb25Mb25nOmEsbG9jYTpuZXcgVWludDhBcnJheShpLmJ1ZmZlciksZ2x5ZjpuZXcgVWludDhBcnJheSh0LmJ1ZmZlcil9fXNjYWxlKGUpe2ZvcihsZXQgdD0wLGE9dGhpcy5nbHlwaHMubGVuZ3RoO3Q8YTt0KyspdGhpcy5nbHlwaHNbdF0uc2NhbGUoZVt0XSl9fTtjbGFzcyBHbHlwaHtjb25zdHJ1Y3Rvcih7aGVhZGVyOmU9bnVsbCxzaW1wbGU6dD1udWxsLGNvbXBvc2l0ZXM6YT1udWxsfSl7dGhpcy5oZWFkZXI9ZTt0aGlzLnNpbXBsZT10O3RoaXMuY29tcG9zaXRlcz1hfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0W2Escl09R2x5cGhIZWFkZXIucGFyc2UoZSx0KTtlKz1hO2lmKHIubnVtYmVyT2ZDb250b3VyczwwKXtjb25zdCBhPVtdO2Zvcig7Oyl7Y29uc3RbcixpXT1Db21wb3NpdGVHbHlwaC5wYXJzZShlLHQpO2UrPXI7YS5wdXNoKGkpO2lmKCEoMzImaS5mbGFncykpYnJlYWt9cmV0dXJuIG5ldyBHbHlwaCh7aGVhZGVyOnIsY29tcG9zaXRlczphfSl9Y29uc3QgaT1TaW1wbGVHbHlwaC5wYXJzZShlLHQsci5udW1iZXJPZkNvbnRvdXJzKTtyZXR1cm4gbmV3IEdseXBoKHtoZWFkZXI6cixzaW1wbGU6aX0pfWdldFNpemUoKXtpZighdGhpcy5oZWFkZXIpcmV0dXJuIDA7Y29uc3QgZT10aGlzLnNpbXBsZT90aGlzLnNpbXBsZS5nZXRTaXplKCk6dGhpcy5jb21wb3NpdGVzLnJlZHVjZSgoKGUsdCk9PmUrdC5nZXRTaXplKCkpLDApO3JldHVybiB0aGlzLmhlYWRlci5nZXRTaXplKCkrZX13cml0ZShlLHQpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm4gMDtjb25zdCBhPWU7ZSs9dGhpcy5oZWFkZXIud3JpdGUoZSx0KTtpZih0aGlzLnNpbXBsZSllKz10aGlzLnNpbXBsZS53cml0ZShlLHQpO2Vsc2UgZm9yKGNvbnN0IGEgb2YgdGhpcy5jb21wb3NpdGVzKWUrPWEud3JpdGUoZSx0KTtyZXR1cm4gZS1hfXNjYWxlKGUpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm47Y29uc3QgdD0odGhpcy5oZWFkZXIueE1pbit0aGlzLmhlYWRlci54TWF4KS8yO3RoaXMuaGVhZGVyLnNjYWxlKHQsZSk7aWYodGhpcy5zaW1wbGUpdGhpcy5zaW1wbGUuc2NhbGUodCxlKTtlbHNlIGZvcihjb25zdCBhIG9mIHRoaXMuY29tcG9zaXRlcylhLnNjYWxlKHQsZSl9fWNsYXNzIEdseXBoSGVhZGVye2NvbnN0cnVjdG9yKHtudW1iZXJPZkNvbnRvdXJzOmUseE1pbjp0LHlNaW46YSx4TWF4OnIseU1heDppfSl7dGhpcy5udW1iZXJPZkNvbnRvdXJzPWU7dGhpcy54TWluPXQ7dGhpcy55TWluPWE7dGhpcy54TWF4PXI7dGhpcy55TWF4PWl9c3RhdGljIHBhcnNlKGUsdCl7cmV0dXJuWzEwLG5ldyBHbHlwaEhlYWRlcih7bnVtYmVyT2ZDb250b3Vyczp0LmdldEludDE2KGUpLHhNaW46dC5nZXRJbnQxNihlKzIpLHlNaW46dC5nZXRJbnQxNihlKzQpLHhNYXg6dC5nZXRJbnQxNihlKzYpLHlNYXg6dC5nZXRJbnQxNihlKzgpfSldfWdldFNpemUoKXtyZXR1cm4gMTB9d3JpdGUoZSx0KXt0LnNldEludDE2KGUsdGhpcy5udW1iZXJPZkNvbnRvdXJzKTt0LnNldEludDE2KGUrMix0aGlzLnhNaW4pO3Quc2V0SW50MTYoZSs0LHRoaXMueU1pbik7dC5zZXRJbnQxNihlKzYsdGhpcy54TWF4KTt0LnNldEludDE2KGUrOCx0aGlzLnlNYXgpO3JldHVybiAxMH1zY2FsZShlLHQpe3RoaXMueE1pbj1NYXRoLnJvdW5kKGUrKHRoaXMueE1pbi1lKSp0KTt0aGlzLnhNYXg9TWF0aC5yb3VuZChlKyh0aGlzLnhNYXgtZSkqdCl9fWNsYXNzIENvbnRvdXJ7Y29uc3RydWN0b3Ioe2ZsYWdzOmUseENvb3JkaW5hdGVzOnQseUNvb3JkaW5hdGVzOmF9KXt0aGlzLnhDb29yZGluYXRlcz10O3RoaXMueUNvb3JkaW5hdGVzPWE7dGhpcy5mbGFncz1lfX1jbGFzcyBTaW1wbGVHbHlwaHtjb25zdHJ1Y3Rvcih7Y29udG91cnM6ZSxpbnN0cnVjdGlvbnM6dH0pe3RoaXMuY29udG91cnM9ZTt0aGlzLmluc3RydWN0aW9ucz10fXN0YXRpYyBwYXJzZShlLHQsYSl7Y29uc3Qgcj1bXTtmb3IobGV0IGk9MDtpPGE7aSsrKXtjb25zdCBhPXQuZ2V0VWludDE2KGUpO2UrPTI7ci5wdXNoKGEpfWNvbnN0IGk9clthLTFdKzEsbj10LmdldFVpbnQxNihlKTtlKz0yO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK24pO2UrPW47Y29uc3Qgbz1bXTtmb3IobGV0IGE9MDthPGk7ZSsrLGErKyl7bGV0IHI9dC5nZXRVaW50OChlKTtvLnB1c2gocik7aWYoOCZyKXtjb25zdCBpPXQuZ2V0VWludDgoKytlKTtyXj04O2ZvcihsZXQgZT0wO2U8aTtlKyspby5wdXNoKHIpO2ErPWl9fWNvbnN0IGM9W107bGV0IGw9W10saD1bXSx1PVtdO2NvbnN0IGQ9W107bGV0IGY9MCxnPTA7Zm9yKGxldCBhPTA7YTxpO2ErKyl7Y29uc3QgaT1vW2FdO2lmKDImaSl7Y29uc3QgYT10LmdldFVpbnQ4KGUrKyk7Zys9MTYmaT9hOi1hO2wucHVzaChnKX1lbHNlIGlmKDE2JmkpbC5wdXNoKGcpO2Vsc2V7Zys9dC5nZXRJbnQxNihlKTtlKz0yO2wucHVzaChnKX1pZihyW2ZdPT09YSl7ZisrO2MucHVzaChsKTtsPVtdfX1nPTA7Zj0wO2ZvcihsZXQgYT0wO2E8aTthKyspe2NvbnN0IGk9b1thXTtpZig0Jmkpe2NvbnN0IGE9dC5nZXRVaW50OChlKyspO2crPTMyJmk/YTotYTtoLnB1c2goZyl9ZWxzZSBpZigzMiZpKWgucHVzaChnKTtlbHNle2crPXQuZ2V0SW50MTYoZSk7ZSs9MjtoLnB1c2goZyl9dS5wdXNoKDEmaXw2NCZpKTtpZihyW2ZdPT09YSl7bD1jW2ZdO2YrKztkLnB1c2gobmV3IENvbnRvdXIoe2ZsYWdzOnUseENvb3JkaW5hdGVzOmwseUNvb3JkaW5hdGVzOmh9KSk7aD1bXTt1PVtdfX1yZXR1cm4gbmV3IFNpbXBsZUdseXBoKHtjb250b3VyczpkLGluc3RydWN0aW9uczpzfSl9Z2V0U2l6ZSgpe2xldCBlPTIqdGhpcy5jb250b3Vycy5sZW5ndGgrMit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgsdD0wLGE9MDtmb3IoY29uc3QgciBvZiB0aGlzLmNvbnRvdXJzKXtlKz1yLmZsYWdzLmxlbmd0aDtmb3IobGV0IGk9MCxuPXIueENvb3JkaW5hdGVzLmxlbmd0aDtpPG47aSsrKXtjb25zdCBuPXIueENvb3JkaW5hdGVzW2ldLHM9ci55Q29vcmRpbmF0ZXNbaV07bGV0IG89TWF0aC5hYnMobi10KTtvPjI1NT9lKz0yOm8+MCYmKGUrPTEpO3Q9bjtvPU1hdGguYWJzKHMtYSk7bz4yNTU/ZSs9MjpvPjAmJihlKz0xKTthPXN9fXJldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgYT1lLHI9W10saT1bXSxuPVtdO2xldCBzPTAsbz0wO2Zvcihjb25zdCBhIG9mIHRoaXMuY29udG91cnMpe2ZvcihsZXQgZT0wLHQ9YS54Q29vcmRpbmF0ZXMubGVuZ3RoO2U8dDtlKyspe2xldCB0PWEuZmxhZ3NbZV07Y29uc3QgYz1hLnhDb29yZGluYXRlc1tlXTtsZXQgbD1jLXM7aWYoMD09PWwpe3R8PTE2O3IucHVzaCgwKX1lbHNle2NvbnN0IGU9TWF0aC5hYnMobCk7aWYoZTw9MjU1KXt0fD1sPj0wPzE4OjI7ci5wdXNoKGUpfWVsc2Ugci5wdXNoKGwpfXM9Yztjb25zdCBoPWEueUNvb3JkaW5hdGVzW2VdO2w9aC1vO2lmKDA9PT1sKXt0fD0zMjtpLnB1c2goMCl9ZWxzZXtjb25zdCBlPU1hdGguYWJzKGwpO2lmKGU8PTI1NSl7dHw9bD49MD8zNjo0O2kucHVzaChlKX1lbHNlIGkucHVzaChsKX1vPWg7bi5wdXNoKHQpfXQuc2V0VWludDE2KGUsci5sZW5ndGgtMSk7ZSs9Mn10LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjtpZih0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpe25ldyBVaW50OEFycmF5KHQuYnVmZmVyLDAsdC5idWZmZXIuYnl0ZUxlbmd0aCkuc2V0KHRoaXMuaW5zdHJ1Y3Rpb25zLGUpO2UrPXRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aH1mb3IoY29uc3QgYSBvZiBuKXQuc2V0VWludDgoZSsrLGEpO2ZvcihsZXQgYT0wLGk9ci5sZW5ndGg7YTxpO2ErKyl7Y29uc3QgaT1yW2FdLHM9blthXTtpZigyJnMpdC5zZXRVaW50OChlKyssaSk7ZWxzZSBpZighKDE2JnMpKXt0LnNldEludDE2KGUsaSk7ZSs9Mn19Zm9yKGxldCBhPTAscj1pLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPWlbYV0scz1uW2FdO2lmKDQmcyl0LnNldFVpbnQ4KGUrKyxyKTtlbHNlIGlmKCEoMzImcykpe3Quc2V0SW50MTYoZSxyKTtlKz0yfX1yZXR1cm4gZS1hfXNjYWxlKGUsdCl7Zm9yKGNvbnN0IGEgb2YgdGhpcy5jb250b3VycylpZigwIT09YS54Q29vcmRpbmF0ZXMubGVuZ3RoKWZvcihsZXQgcj0wLGk9YS54Q29vcmRpbmF0ZXMubGVuZ3RoO3I8aTtyKyspYS54Q29vcmRpbmF0ZXNbcl09TWF0aC5yb3VuZChlKyhhLnhDb29yZGluYXRlc1tyXS1lKSp0KX19Y2xhc3MgQ29tcG9zaXRlR2x5cGh7Y29uc3RydWN0b3Ioe2ZsYWdzOmUsZ2x5cGhJbmRleDp0LGFyZ3VtZW50MTphLGFyZ3VtZW50MjpyLHRyYW5zZjppLGluc3RydWN0aW9uczpufSl7dGhpcy5mbGFncz1lO3RoaXMuZ2x5cGhJbmRleD10O3RoaXMuYXJndW1lbnQxPWE7dGhpcy5hcmd1bWVudDI9cjt0aGlzLnRyYW5zZj1pO3RoaXMuaW5zdHJ1Y3Rpb25zPW59c3RhdGljIHBhcnNlKGUsdCl7Y29uc3QgYT1lLHI9W107bGV0IGk9dC5nZXRVaW50MTYoZSk7Y29uc3Qgbj10LmdldFVpbnQxNihlKzIpO2UrPTQ7bGV0IHMsbztpZigxJmkpe2lmKDImaSl7cz10LmdldEludDE2KGUpO289dC5nZXRJbnQxNihlKzIpfWVsc2V7cz10LmdldFVpbnQxNihlKTtvPXQuZ2V0VWludDE2KGUrMil9ZSs9NDtpXj0xfWVsc2V7aWYoMiZpKXtzPXQuZ2V0SW50OChlKTtvPXQuZ2V0SW50OChlKzEpfWVsc2V7cz10LmdldFVpbnQ4KGUpO289dC5nZXRVaW50OChlKzEpfWUrPTJ9aWYoOCZpKXtyLnB1c2godC5nZXRVaW50MTYoZSkpO2UrPTJ9ZWxzZSBpZig2NCZpKXtyLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSk7ZSs9NH1lbHNlIGlmKDEyOCZpKXtyLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSx0LmdldFVpbnQxNihlKzQpLHQuZ2V0VWludDE2KGUrNikpO2UrPTh9bGV0IGM9bnVsbDtpZigyNTYmaSl7Y29uc3QgYT10LmdldFVpbnQxNihlKTtlKz0yO2M9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK2EpO2UrPWF9cmV0dXJuW2UtYSxuZXcgQ29tcG9zaXRlR2x5cGgoe2ZsYWdzOmksZ2x5cGhJbmRleDpuLGFyZ3VtZW50MTpzLGFyZ3VtZW50MjpvLHRyYW5zZjpyLGluc3RydWN0aW9uczpjfSldfWdldFNpemUoKXtsZXQgZT00KzIqdGhpcy50cmFuc2YubGVuZ3RoOzI1NiZ0aGlzLmZsYWdzJiYoZSs9Mit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7MiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KGUrPTIpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KGUrPTIpO3JldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgYT1lOzImdGhpcy5mbGFncz90aGlzLmFyZ3VtZW50MT49LTEyOCYmdGhpcy5hcmd1bWVudDE8PTEyNyYmdGhpcy5hcmd1bWVudDI+PS0xMjgmJnRoaXMuYXJndW1lbnQyPD0xMjd8fCh0aGlzLmZsYWdzfD0xKTp0aGlzLmFyZ3VtZW50MT49MCYmdGhpcy5hcmd1bWVudDE8PTI1NSYmdGhpcy5hcmd1bWVudDI+PTAmJnRoaXMuYXJndW1lbnQyPD0yNTV8fCh0aGlzLmZsYWdzfD0xKTt0LnNldFVpbnQxNihlLHRoaXMuZmxhZ3MpO3Quc2V0VWludDE2KGUrMix0aGlzLmdseXBoSW5kZXgpO2UrPTQ7aWYoMSZ0aGlzLmZsYWdzKXtpZigyJnRoaXMuZmxhZ3Mpe3Quc2V0SW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRJbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpfWVsc2V7dC5zZXRVaW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRVaW50MTYoZSsyLHRoaXMuYXJndW1lbnQyKX1lKz00fWVsc2V7dC5zZXRVaW50OChlLHRoaXMuYXJndW1lbnQxKTt0LnNldFVpbnQ4KGUrMSx0aGlzLmFyZ3VtZW50Mik7ZSs9Mn1pZigyNTYmdGhpcy5mbGFncyl7dC5zZXRVaW50MTYoZSx0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7aWYodGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKXtuZXcgVWludDhBcnJheSh0LmJ1ZmZlciwwLHQuYnVmZmVyLmJ5dGVMZW5ndGgpLnNldCh0aGlzLmluc3RydWN0aW9ucyxlKTtlKz10aGlzLmluc3RydWN0aW9ucy5sZW5ndGh9fXJldHVybiBlLWF9c2NhbGUoZSx0KXt9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk9wZW5UeXBlRmlsZUJ1aWxkZXI9dm9pZCAwO3ZhciByPWEoMyksaT1hKDIpO2Z1bmN0aW9uIHdyaXRlSW50MTYoZSx0LGEpe2VbdF09YT4+OCYyNTU7ZVt0KzFdPTI1NSZhfWZ1bmN0aW9uIHdyaXRlSW50MzIoZSx0LGEpe2VbdF09YT4+MjQmMjU1O2VbdCsxXT1hPj4xNiYyNTU7ZVt0KzJdPWE+PjgmMjU1O2VbdCszXT0yNTUmYX1mdW5jdGlvbiB3cml0ZURhdGEoZSx0LGEpe2lmKGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KWUuc2V0KGEsdCk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGEpZm9yKGxldCByPTAsaT1hLmxlbmd0aDtyPGk7cisrKWVbdCsrXT0yNTUmYS5jaGFyQ29kZUF0KHIpO2Vsc2UgZm9yKGNvbnN0IHIgb2YgYSllW3QrK109MjU1JnJ9Y2xhc3MgT3BlblR5cGVGaWxlQnVpbGRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnNmbnQ9ZTt0aGlzLnRhYmxlcz1PYmplY3QuY3JlYXRlKG51bGwpfXN0YXRpYyBnZXRTZWFyY2hQYXJhbXMoZSx0KXtsZXQgYT0xLHI9MDtmb3IoOyhhXmUpPmE7KXthPDw9MTtyKyt9Y29uc3QgaT1hKnQ7cmV0dXJue3JhbmdlOmksZW50cnk6cixyYW5nZVNoaWZ0OnQqZS1pfX10b0FycmF5KCl7bGV0IGU9dGhpcy5zZm50O2NvbnN0IHQ9dGhpcy50YWJsZXMsYT1PYmplY3Qua2V5cyh0KTthLnNvcnQoKTtjb25zdCBuPWEubGVuZ3RoO2xldCBzLG8sYyxsLGgsdT0xMisxNipuO2NvbnN0IGQ9W3VdO2ZvcihzPTA7czxuO3MrKyl7bD10W2Fbc11dO3UrPShsLmxlbmd0aCszJi00KT4+PjA7ZC5wdXNoKHUpfWNvbnN0IGY9bmV3IFVpbnQ4QXJyYXkodSk7Zm9yKHM9MDtzPG47cysrKXtsPXRbYVtzXV07d3JpdGVEYXRhKGYsZFtzXSxsKX0idHJ1ZSI9PT1lJiYoZT0oMCxpLnN0cmluZzMyKSg2NTUzNikpO2ZbMF09MjU1JmUuY2hhckNvZGVBdCgwKTtmWzFdPTI1NSZlLmNoYXJDb2RlQXQoMSk7ZlsyXT0yNTUmZS5jaGFyQ29kZUF0KDIpO2ZbM109MjU1JmUuY2hhckNvZGVBdCgzKTt3cml0ZUludDE2KGYsNCxuKTtjb25zdCBnPU9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKG4sMTYpO3dyaXRlSW50MTYoZiw2LGcucmFuZ2UpO3dyaXRlSW50MTYoZiw4LGcuZW50cnkpO3dyaXRlSW50MTYoZiwxMCxnLnJhbmdlU2hpZnQpO3U9MTI7Zm9yKHM9MDtzPG47cysrKXtoPWFbc107Zlt1XT0yNTUmaC5jaGFyQ29kZUF0KDApO2ZbdSsxXT0yNTUmaC5jaGFyQ29kZUF0KDEpO2ZbdSsyXT0yNTUmaC5jaGFyQ29kZUF0KDIpO2ZbdSszXT0yNTUmaC5jaGFyQ29kZUF0KDMpO2xldCBlPTA7Zm9yKG89ZFtzXSxjPWRbcysxXTtvPGM7bys9NCl7ZT1lKygwLHIucmVhZFVpbnQzMikoZixvKT4+PjB9d3JpdGVJbnQzMihmLHUrNCxlKTt3cml0ZUludDMyKGYsdSs4LGRbc10pO3dyaXRlSW50MzIoZix1KzEyLHRbaF0ubGVuZ3RoKTt1Kz0xNn1yZXR1cm4gZn1hZGRUYWJsZShlLHQpe2lmKGUgaW4gdGhpcy50YWJsZXMpdGhyb3cgbmV3IEVycm9yKCJUYWJsZSAiK2UrIiBhbHJlYWR5IGV4aXN0cyIpO3RoaXMudGFibGVzW2VdPXR9fXQuT3BlblR5cGVGaWxlQnVpbGRlcj1PcGVuVHlwZUZpbGVCdWlsZGVyfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVHlwZTFGb250PXZvaWQgMDt2YXIgcj1hKDM1KSxpPWEoMiksbj1hKDM4KSxzPWEoMyksbz1hKDgpLGM9YSg0OSk7ZnVuY3Rpb24gZmluZEJsb2NrKGUsdCxhKXtjb25zdCByPWUubGVuZ3RoLGk9dC5sZW5ndGgsbj1yLWk7bGV0IG89YSxjPSExO2Zvcig7bzxuOyl7bGV0IGE9MDtmb3IoO2E8aSYmZVtvK2FdPT09dFthXTspYSsrO2lmKGE+PWkpe28rPWE7Zm9yKDtvPHImJigwLHMuaXNXaGl0ZVNwYWNlKShlW29dKTspbysrO2M9ITA7YnJlYWt9bysrfXJldHVybntmb3VuZDpjLGxlbmd0aDpvfX10LlR5cGUxRm9udD1jbGFzcyBUeXBlMUZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe2xldCByPWEubGVuZ3RoMSxzPWEubGVuZ3RoMixsPXQucGVla0J5dGVzKDYpO2NvbnN0IGg9MTI4PT09bFswXSYmMT09PWxbMV07aWYoaCl7dC5za2lwKDYpO3I9bFs1XTw8MjR8bFs0XTw8MTZ8bFszXTw8OHxsWzJdfWNvbnN0IHU9ZnVuY3Rpb24gZ2V0SGVhZGVyQmxvY2soZSx0KXtjb25zdCBhPVsxMDEsMTAxLDEyMCwxMDEsOTldLHI9ZS5wb3M7bGV0IG4scyxjLGw7dHJ5e249ZS5nZXRCeXRlcyh0KTtzPW4ubGVuZ3RofWNhdGNoKGUpe31pZihzPT09dCl7Yz1maW5kQmxvY2sobixhLHQtMiphLmxlbmd0aCk7aWYoYy5mb3VuZCYmYy5sZW5ndGg9PT10KXJldHVybntzdHJlYW06bmV3IG8uU3RyZWFtKG4pLGxlbmd0aDp0fX0oMCxpLndhcm4pKCdJbnZhbGlkICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHRyeWluZyB0byByZWNvdmVyLicpO2UucG9zPXI7Zm9yKDs7KXtjPWZpbmRCbG9jayhlLnBlZWtCeXRlcygyMDQ4KSxhLDApO2lmKDA9PT1jLmxlbmd0aClicmVhaztlLnBvcys9Yy5sZW5ndGg7aWYoYy5mb3VuZCl7bD1lLnBvcy1yO2JyZWFrfX1lLnBvcz1yO2lmKGwpcmV0dXJue3N0cmVhbTpuZXcgby5TdHJlYW0oZS5nZXRCeXRlcyhsKSksbGVuZ3RoOmx9OygwLGkud2FybikoJ1VuYWJsZSB0byByZWNvdmVyICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHVzaW5nIGFzIGlzLicpO3JldHVybntzdHJlYW06bmV3IG8uU3RyZWFtKGUuZ2V0Qnl0ZXModCkpLGxlbmd0aDp0fX0odCxyKTtuZXcgYy5UeXBlMVBhcnNlcih1LnN0cmVhbSwhMSxuLlNFQUNfQU5BTFlTSVNfRU5BQkxFRCkuZXh0cmFjdEZvbnRIZWFkZXIoYSk7aWYoaCl7bD10LmdldEJ5dGVzKDYpO3M9bFs1XTw8MjR8bFs0XTw8MTZ8bFszXTw8OHxsWzJdfWNvbnN0IGQ9ZnVuY3Rpb24gZ2V0RWV4ZWNCbG9jayhlLHQpe2NvbnN0IGE9ZS5nZXRCeXRlcygpO2lmKDA9PT1hLmxlbmd0aCl0aHJvdyBuZXcgaS5Gb3JtYXRFcnJvcigiZ2V0RWV4ZWNCbG9jayAtIG5vIGZvbnQgcHJvZ3JhbSBmb3VuZC4iKTtyZXR1cm57c3RyZWFtOm5ldyBvLlN0cmVhbShhKSxsZW5ndGg6YS5sZW5ndGh9fSh0KSxmPW5ldyBjLlR5cGUxUGFyc2VyKGQuc3RyZWFtLCEwLG4uU0VBQ19BTkFMWVNJU19FTkFCTEVEKS5leHRyYWN0Rm9udFByb2dyYW0oYSk7Zm9yKGNvbnN0IGUgaW4gZi5wcm9wZXJ0aWVzKWFbZV09Zi5wcm9wZXJ0aWVzW2VdO2NvbnN0IGc9Zi5jaGFyc3RyaW5ncyxwPXRoaXMuZ2V0VHlwZTJDaGFyc3RyaW5ncyhnKSxtPXRoaXMuZ2V0VHlwZTJTdWJycyhmLnN1YnJzKTt0aGlzLmNoYXJzdHJpbmdzPWc7dGhpcy5kYXRhPXRoaXMud3JhcChlLHAsdGhpcy5jaGFyc3RyaW5ncyxtLGEpO3RoaXMuc2VhY3M9dGhpcy5nZXRTZWFjcyhmLmNoYXJzdHJpbmdzKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3MubGVuZ3RoKzF9Z2V0Q2hhcnNldCgpe2NvbnN0IGU9WyIubm90ZGVmIl07Zm9yKGNvbnN0e2dseXBoTmFtZTp0fW9mIHRoaXMuY2hhcnN0cmluZ3MpZS5wdXNoKHQpO3JldHVybiBlfWdldEdseXBoTWFwcGluZyhlKXtjb25zdCB0PXRoaXMuY2hhcnN0cmluZ3M7aWYoZS5jb21wb3NpdGUpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHI9MCxpPXQubGVuZ3RoO3I8aTtyKyspe2FbZS5jTWFwLmNoYXJDb2RlT2YocildPXIrMX1yZXR1cm4gYX1jb25zdCBhPVsiLm5vdGRlZiJdO2xldCByLGk7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKylhLnB1c2godFtpXS5nbHlwaE5hbWUpO2NvbnN0IHM9ZS5idWlsdEluRW5jb2Rpbmc7aWYocyl7cj1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBlIGluIHMpe2k9YS5pbmRleE9mKHNbZV0pO2k+PTAmJihyW2VdPWkpfX1yZXR1cm4oMCxuLnR5cGUxRm9udEdseXBoTWFwcGluZykoZSxyLGEpfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLm51bUdseXBocylyZXR1cm4hMTtpZigwPT09ZSlyZXR1cm4hMDtyZXR1cm4gdGhpcy5jaGFyc3RyaW5nc1tlLTFdLmNoYXJzdHJpbmcubGVuZ3RoPjB9Z2V0U2VhY3MoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZVthXTtyLnNlYWMmJih0W2ErMV09ci5zZWFjKX1yZXR1cm4gdH1nZXRUeXBlMkNoYXJzdHJpbmdzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgb2YgZSl0LnB1c2goYS5jaGFyc3RyaW5nKTtyZXR1cm4gdH1nZXRUeXBlMlN1YnJzKGUpe2xldCB0PTA7Y29uc3QgYT1lLmxlbmd0aDt0PWE8MTEzMz8xMDc6YTwzMzc2OT8xMTMxOjMyNzY4O2NvbnN0IHI9W107bGV0IGk7Zm9yKGk9MDtpPHQ7aSsrKXIucHVzaChbMTFdKTtmb3IoaT0wO2k8YTtpKyspci5wdXNoKGVbaV0pO3JldHVybiByfXdyYXAoZSx0LGEsaSxuKXtjb25zdCBzPW5ldyByLkNGRjtzLmhlYWRlcj1uZXcgci5DRkZIZWFkZXIoMSwwLDQsNCk7cy5uYW1lcz1bZV07Y29uc3Qgbz1uZXcgci5DRkZUb3BEaWN0O28uc2V0QnlOYW1lKCJ2ZXJzaW9uIiwzOTEpO28uc2V0QnlOYW1lKCJOb3RpY2UiLDM5Mik7by5zZXRCeU5hbWUoIkZ1bGxOYW1lIiwzOTMpO28uc2V0QnlOYW1lKCJGYW1pbHlOYW1lIiwzOTQpO28uc2V0QnlOYW1lKCJXZWlnaHQiLDM5NSk7by5zZXRCeU5hbWUoIkVuY29kaW5nIixudWxsKTtvLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsbi5mb250TWF0cml4KTtvLnNldEJ5TmFtZSgiRm9udEJCb3giLG4uYmJveCk7by5zZXRCeU5hbWUoImNoYXJzZXQiLG51bGwpO28uc2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIsbnVsbCk7by5zZXRCeU5hbWUoIlByaXZhdGUiLG51bGwpO3MudG9wRGljdD1vO2NvbnN0IGM9bmV3IHIuQ0ZGU3RyaW5ncztjLmFkZCgiVmVyc2lvbiAwLjExIik7Yy5hZGQoIlNlZSBvcmlnaW5hbCBub3RpY2UiKTtjLmFkZChlKTtjLmFkZChlKTtjLmFkZCgiTWVkaXVtIik7cy5zdHJpbmdzPWM7cy5nbG9iYWxTdWJySW5kZXg9bmV3IHIuQ0ZGSW5kZXg7Y29uc3QgbD10Lmxlbmd0aCxoPVsiLm5vdGRlZiJdO2xldCB1LGQ7Zm9yKHU9MDt1PGw7dSsrKXtjb25zdCBlPWFbdV0uZ2x5cGhOYW1lOy0xPT09ci5DRkZTdGFuZGFyZFN0cmluZ3MuaW5kZXhPZihlKSYmYy5hZGQoZSk7aC5wdXNoKGUpfXMuY2hhcnNldD1uZXcgci5DRkZDaGFyc2V0KCExLDAsaCk7Y29uc3QgZj1uZXcgci5DRkZJbmRleDtmLmFkZChbMTM5LDE0XSk7Zm9yKHU9MDt1PGw7dSsrKWYuYWRkKHRbdV0pO3MuY2hhclN0cmluZ3M9Zjtjb25zdCBnPW5ldyByLkNGRlByaXZhdGVEaWN0O2cuc2V0QnlOYW1lKCJTdWJycyIsbnVsbCk7Y29uc3QgcD1bIkJsdWVWYWx1ZXMiLCJPdGhlckJsdWVzIiwiRmFtaWx5Qmx1ZXMiLCJGYW1pbHlPdGhlckJsdWVzIiwiU3RlbVNuYXBIIiwiU3RlbVNuYXBWIiwiQmx1ZVNoaWZ0IiwiQmx1ZUZ1enoiLCJCbHVlU2NhbGUiLCJMYW5ndWFnZUdyb3VwIiwiRXhwYW5zaW9uRmFjdG9yIiwiRm9yY2VCb2xkIiwiU3RkSFciLCJTdGRWVyJdO2Zvcih1PTAsZD1wLmxlbmd0aDt1PGQ7dSsrKXtjb25zdCBlPXBbdV07aWYoIShlIGluIG4ucHJpdmF0ZURhdGEpKWNvbnRpbnVlO2NvbnN0IHQ9bi5wcml2YXRlRGF0YVtlXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT10Lmxlbmd0aC0xO2U+MDtlLS0pdFtlXS09dFtlLTFdO2cuc2V0QnlOYW1lKGUsdCl9cy50b3BEaWN0LnByaXZhdGVEaWN0PWc7Y29uc3QgbT1uZXcgci5DRkZJbmRleDtmb3IodT0wLGQ9aS5sZW5ndGg7dTxkO3UrKyltLmFkZChpW3VdKTtnLnN1YnJzSW5kZXg9bTtyZXR1cm4gbmV3IHIuQ0ZGQ29tcGlsZXIocykuY29tcGlsZSgpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5UeXBlMVBhcnNlcj12b2lkIDA7dmFyIHI9YSgzNyksaT1hKDMpLG49YSg4KSxzPWEoMik7Y29uc3Qgbz1bNF0sYz1bNV0sbD1bNl0saD1bN10sdT1bOF0sZD1bMTIsMzVdLGY9WzE0XSxnPVsyMV0scD1bMjJdLG09WzMwXSxiPVszMV07Y2xhc3MgVHlwZTFDaGFyU3RyaW5ne2NvbnN0cnVjdG9yKCl7dGhpcy53aWR0aD0wO3RoaXMubHNiPTA7dGhpcy5mbGV4aW5nPSExO3RoaXMub3V0cHV0PVtdO3RoaXMuc3RhY2s9W119Y29udmVydChlLHQsYSl7Y29uc3Qgcj1lLmxlbmd0aDtsZXQgaSxuLHksdz0hMTtmb3IobGV0IFM9MDtTPHI7UysrKXtsZXQgcj1lW1NdO2lmKHI8MzIpezEyPT09ciYmKHI9KHI8PDgpK2VbKytTXSk7c3dpdGNoKHIpe2Nhc2UgMTpjYXNlIDM6Y2FzZSA5OmNhc2UgMzA3MjpjYXNlIDMwNzM6Y2FzZSAzMDc0OmNhc2UgMzEwNTp0aGlzLnN0YWNrPVtdO2JyZWFrO2Nhc2UgNDppZih0aGlzLmZsZXhpbmcpe2lmKHRoaXMuc3RhY2subGVuZ3RoPDEpe3c9ITA7YnJlYWt9Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaCgwLGUpO2JyZWFrfXc9dGhpcy5leGVjdXRlQ29tbWFuZCgxLG8pO2JyZWFrO2Nhc2UgNTp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixjKTticmVhaztjYXNlIDY6dz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsbCk7YnJlYWs7Y2FzZSA3Onc9dGhpcy5leGVjdXRlQ29tbWFuZCgxLGgpO2JyZWFrO2Nhc2UgODp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoNix1KTticmVhaztjYXNlIDEwOmlmKHRoaXMuc3RhY2subGVuZ3RoPDEpe3c9ITA7YnJlYWt9eT10aGlzLnN0YWNrLnBvcCgpO2lmKCF0W3ldKXt3PSEwO2JyZWFrfXc9dGhpcy5jb252ZXJ0KHRbeV0sdCxhKTticmVhaztjYXNlIDExOnJldHVybiB3O2Nhc2UgMTM6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7dz0hMDticmVha31pPXRoaXMuc3RhY2sucG9wKCk7bj10aGlzLnN0YWNrLnBvcCgpO3RoaXMubHNiPW47dGhpcy53aWR0aD1pO3RoaXMuc3RhY2sucHVzaChpLG4pO3c9dGhpcy5leGVjdXRlQ29tbWFuZCgyLHApO2JyZWFrO2Nhc2UgMTQ6dGhpcy5vdXRwdXQucHVzaChmWzBdKTticmVhaztjYXNlIDIxOmlmKHRoaXMuZmxleGluZylicmVhazt3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixnKTticmVhaztjYXNlIDIyOmlmKHRoaXMuZmxleGluZyl7dGhpcy5zdGFjay5wdXNoKDApO2JyZWFrfXc9dGhpcy5leGVjdXRlQ29tbWFuZCgxLHApO2JyZWFrO2Nhc2UgMzA6dz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsbSk7YnJlYWs7Y2FzZSAzMTp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxiKTticmVhaztjYXNlIDMwNzg6aWYoYSl7Y29uc3QgZT10aGlzLnN0YWNrLmF0KC01KTt0aGlzLnNlYWM9dGhpcy5zdGFjay5zcGxpY2UoLTQsNCk7dGhpcy5zZWFjWzBdKz10aGlzLmxzYi1lO3c9dGhpcy5leGVjdXRlQ29tbWFuZCgwLGYpfWVsc2Ugdz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsZik7YnJlYWs7Y2FzZSAzMDc5OmlmKHRoaXMuc3RhY2subGVuZ3RoPDQpe3c9ITA7YnJlYWt9dGhpcy5zdGFjay5wb3AoKTtpPXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO249dGhpcy5zdGFjay5wb3AoKTt0aGlzLmxzYj1uO3RoaXMud2lkdGg9aTt0aGlzLnN0YWNrLnB1c2goaSxuLGUpO3c9dGhpcy5leGVjdXRlQ29tbWFuZCgzLGcpO2JyZWFrO2Nhc2UgMzA4NDppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXt3PSEwO2JyZWFrfWNvbnN0IFM9dGhpcy5zdGFjay5wb3AoKSx4PXRoaXMuc3RhY2sucG9wKCk7dGhpcy5zdGFjay5wdXNoKHgvUyk7YnJlYWs7Y2FzZSAzMDg4OmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe3c9ITA7YnJlYWt9eT10aGlzLnN0YWNrLnBvcCgpO2NvbnN0IEM9dGhpcy5zdGFjay5wb3AoKTtpZigwPT09eSYmMz09PUMpe2NvbnN0IGU9dGhpcy5zdGFjay5zcGxpY2UoLTE3LDE3KTt0aGlzLnN0YWNrLnB1c2goZVsyXStlWzBdLGVbM10rZVsxXSxlWzRdLGVbNV0sZVs2XSxlWzddLGVbOF0sZVs5XSxlWzEwXSxlWzExXSxlWzEyXSxlWzEzXSxlWzE0XSk7dz10aGlzLmV4ZWN1dGVDb21tYW5kKDEzLGQsITApO3RoaXMuZmxleGluZz0hMTt0aGlzLnN0YWNrLnB1c2goZVsxNV0sZVsxNl0pfWVsc2UgMT09PXkmJjA9PT1DJiYodGhpcy5mbGV4aW5nPSEwKTticmVhaztjYXNlIDMwODk6YnJlYWs7ZGVmYXVsdDooMCxzLndhcm4pKCdVbmtub3duIHR5cGUgMSBjaGFyc3RyaW5nIGNvbW1hbmQgb2YgIicrcisnIicpfWlmKHcpYnJlYWt9ZWxzZXtyPD0yNDY/ci09MTM5OnI9cjw9MjUwPzI1Niooci0yNDcpK2VbKytTXSsxMDg6cjw9MjU0Py0yNTYqKHItMjUxKS1lWysrU10tMTA4OigyNTUmZVsrK1NdKTw8MjR8KDI1NSZlWysrU10pPDwxNnwoMjU1JmVbKytTXSk8PDh8KDI1NSZlWysrU10pPDwwO3RoaXMuc3RhY2sucHVzaChyKX19cmV0dXJuIHd9ZXhlY3V0ZUNvbW1hbmQoZSx0LGEpe2NvbnN0IHI9dGhpcy5zdGFjay5sZW5ndGg7aWYoZT5yKXJldHVybiEwO2NvbnN0IGk9ci1lO2ZvcihsZXQgZT1pO2U8cjtlKyspe2xldCB0PXRoaXMuc3RhY2tbZV07aWYoTnVtYmVyLmlzSW50ZWdlcih0KSl0aGlzLm91dHB1dC5wdXNoKDI4LHQ+PjgmMjU1LDI1NSZ0KTtlbHNle3Q9NjU1MzYqdHwwO3RoaXMub3V0cHV0LnB1c2goMjU1LHQ+PjI0JjI1NSx0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQpfX10aGlzLm91dHB1dC5wdXNoKC4uLnQpO2E/dGhpcy5zdGFjay5zcGxpY2UoaSxlKTp0aGlzLnN0YWNrLmxlbmd0aD0wO3JldHVybiExfX1mdW5jdGlvbiBpc0hleERpZ2l0KGUpe3JldHVybiBlPj00OCYmZTw9NTd8fGU+PTY1JiZlPD03MHx8ZT49OTcmJmU8PTEwMn1mdW5jdGlvbiBkZWNyeXB0KGUsdCxhKXtpZihhPj1lLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7bGV0IHIsaSxuPTB8dDtmb3Iocj0wO3I8YTtyKyspbj01Mjg0NSooZVtyXStuKSsyMjcxOSY2NTUzNTtjb25zdCBzPWUubGVuZ3RoLWEsbz1uZXcgVWludDhBcnJheShzKTtmb3Iocj1hLGk9MDtpPHM7cisrLGkrKyl7Y29uc3QgdD1lW3JdO29baV09dF5uPj44O249NTI4NDUqKHQrbikrMjI3MTkmNjU1MzV9cmV0dXJuIG99ZnVuY3Rpb24gaXNTcGVjaWFsKGUpe3JldHVybiA0Nz09PWV8fDkxPT09ZXx8OTM9PT1lfHwxMjM9PT1lfHwxMjU9PT1lfHw0MD09PWV8fDQxPT09ZX10LlR5cGUxUGFyc2VyPWNsYXNzIFR5cGUxUGFyc2Vye2NvbnN0cnVjdG9yKGUsdCxhKXtpZih0KXtjb25zdCB0PWUuZ2V0Qnl0ZXMoKSxhPSEoKGlzSGV4RGlnaXQodFswXSl8fCgwLGkuaXNXaGl0ZVNwYWNlKSh0WzBdKSkmJmlzSGV4RGlnaXQodFsxXSkmJmlzSGV4RGlnaXQodFsyXSkmJmlzSGV4RGlnaXQodFszXSkmJmlzSGV4RGlnaXQodFs0XSkmJmlzSGV4RGlnaXQodFs1XSkmJmlzSGV4RGlnaXQodFs2XSkmJmlzSGV4RGlnaXQodFs3XSkpO2U9bmV3IG4uU3RyZWFtKGE/ZGVjcnlwdCh0LDU1NjY1LDQpOmZ1bmN0aW9uIGRlY3J5cHRBc2NpaShlLHQsYSl7bGV0IHI9MHx0O2NvbnN0IGk9ZS5sZW5ndGgsbj1uZXcgVWludDhBcnJheShpPj4+MSk7bGV0IHMsbztmb3Iocz0wLG89MDtzPGk7cysrKXtjb25zdCB0PWVbc107aWYoIWlzSGV4RGlnaXQodCkpY29udGludWU7cysrO2xldCBhO2Zvcig7czxpJiYhaXNIZXhEaWdpdChhPWVbc10pOylzKys7aWYoczxpKXtjb25zdCBlPXBhcnNlSW50KFN0cmluZy5mcm9tQ2hhckNvZGUodCxhKSwxNik7bltvKytdPWVecj4+ODtyPTUyODQ1KihlK3IpKzIyNzE5JjY1NTM1fX1yZXR1cm4gbi5zbGljZShhLG8pfSh0LDU1NjY1LDQpKX10aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQ9ISFhO3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpfXJlYWROdW1iZXJBcnJheSgpe3RoaXMuZ2V0VG9rZW4oKTtjb25zdCBlPVtdO2Zvcig7Oyl7Y29uc3QgdD10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PXR8fCJdIj09PXR8fCJ9Ij09PXQpYnJlYWs7ZS5wdXNoKHBhcnNlRmxvYXQodHx8MCkpfXJldHVybiBlfXJlYWROdW1iZXIoKXtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtyZXR1cm4gcGFyc2VGbG9hdChlfHwwKX1yZWFkSW50KCl7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7cmV0dXJuIDB8cGFyc2VJbnQoZXx8MCwxMCl9cmVhZEJvb2xlYW4oKXtyZXR1cm4idHJ1ZSI9PT10aGlzLmdldFRva2VuKCk/MTowfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfXByZXZDaGFyKCl7dGhpcy5zdHJlYW0uc2tpcCgtMik7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfWdldFRva2VuKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYoLTE9PT10KXJldHVybiBudWxsO2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoISgwLGkuaXNXaGl0ZVNwYWNlKSh0KSlicmVhazt0PXRoaXMubmV4dENoYXIoKX1pZihpc1NwZWNpYWwodCkpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0KX1sZXQgYT0iIjtkb3thKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO3Q9dGhpcy5uZXh0Q2hhcigpfXdoaWxlKHQ+PTAmJiEoMCxpLmlzV2hpdGVTcGFjZSkodCkmJiFpc1NwZWNpYWwodCkpO3JldHVybiBhfXJlYWRDaGFyU3RyaW5ncyhlLHQpe3JldHVybi0xPT09dD9lOmRlY3J5cHQoZSw0MzMwLHQpfWV4dHJhY3RGb250UHJvZ3JhbShlKXtjb25zdCB0PXRoaXMuc3RyZWFtLGE9W10scj1bXSxpPU9iamVjdC5jcmVhdGUobnVsbCk7aS5sZW5JVj00O2NvbnN0IG49e3N1YnJzOltdLGNoYXJzdHJpbmdzOltdLHByb3BlcnRpZXM6e3ByaXZhdGVEYXRhOml9fTtsZXQgcyxvLGMsbDtmb3IoO251bGwhPT0ocz10aGlzLmdldFRva2VuKCkpOylpZigiLyI9PT1zKXtzPXRoaXMuZ2V0VG9rZW4oKTtzd2l0Y2gocyl7Y2FzZSJDaGFyU3RyaW5ncyI6dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO2Zvcig7Oyl7cz10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PXN8fCJlbmQiPT09cylicmVhaztpZigiLyIhPT1zKWNvbnRpbnVlO2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO289dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2M9bz4wP3QuZ2V0Qnl0ZXMobyk6bmV3IFVpbnQ4QXJyYXkoMCk7bD1uLnByb3BlcnRpZXMucHJpdmF0ZURhdGEubGVuSVY7Y29uc3QgYT10aGlzLnJlYWRDaGFyU3RyaW5ncyhjLGwpO3RoaXMubmV4dENoYXIoKTtzPXRoaXMuZ2V0VG9rZW4oKTsibm9hY2Nlc3MiPT09cz90aGlzLmdldFRva2VuKCk6Ii8iPT09cyYmdGhpcy5wcmV2Q2hhcigpO3IucHVzaCh7Z2x5cGg6ZSxlbmNvZGVkOmF9KX1icmVhaztjYXNlIlN1YnJzIjp0aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Zm9yKDsiZHVwIj09PXRoaXMuZ2V0VG9rZW4oKTspe2NvbnN0IGU9dGhpcy5yZWFkSW50KCk7bz10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Yz1vPjA/dC5nZXRCeXRlcyhvKTpuZXcgVWludDhBcnJheSgwKTtsPW4ucHJvcGVydGllcy5wcml2YXRlRGF0YS5sZW5JVjtjb25zdCByPXRoaXMucmVhZENoYXJTdHJpbmdzKGMsbCk7dGhpcy5uZXh0Q2hhcigpO3M9dGhpcy5nZXRUb2tlbigpOyJub2FjY2VzcyI9PT1zJiZ0aGlzLmdldFRva2VuKCk7YVtlXT1yfWJyZWFrO2Nhc2UiQmx1ZVZhbHVlcyI6Y2FzZSJPdGhlckJsdWVzIjpjYXNlIkZhbWlseUJsdWVzIjpjYXNlIkZhbWlseU90aGVyQmx1ZXMiOmNvbnN0IGU9dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmxlbmd0aD4wJiZlLmxlbmd0aCwwO2JyZWFrO2Nhc2UiU3RlbVNuYXBIIjpjYXNlIlN0ZW1TbmFwViI6bi5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW3NdPXRoaXMucmVhZE51bWJlckFycmF5KCk7YnJlYWs7Y2FzZSJTdGRIVyI6Y2FzZSJTdGRWVyI6bi5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW3NdPXRoaXMucmVhZE51bWJlckFycmF5KClbMF07YnJlYWs7Y2FzZSJCbHVlU2hpZnQiOmNhc2UibGVuSVYiOmNhc2UiQmx1ZUZ1enoiOmNhc2UiQmx1ZVNjYWxlIjpjYXNlIkxhbmd1YWdlR3JvdXAiOm4ucHJvcGVydGllcy5wcml2YXRlRGF0YVtzXT10aGlzLnJlYWROdW1iZXIoKTticmVhaztjYXNlIkV4cGFuc2lvbkZhY3RvciI6bi5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW3NdPXRoaXMucmVhZE51bWJlcigpfHwuMDY7YnJlYWs7Y2FzZSJGb3JjZUJvbGQiOm4ucHJvcGVydGllcy5wcml2YXRlRGF0YVtzXT10aGlzLnJlYWRCb29sZWFuKCl9fWZvcihjb25zdHtlbmNvZGVkOnQsZ2x5cGg6aX1vZiByKXtjb25zdCByPW5ldyBUeXBlMUNoYXJTdHJpbmcscz1yLmNvbnZlcnQodCxhLHRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZCk7bGV0IG89ci5vdXRwdXQ7cyYmKG89WzE0XSk7Y29uc3QgYz17Z2x5cGhOYW1lOmksY2hhcnN0cmluZzpvLHdpZHRoOnIud2lkdGgsbHNiOnIubHNiLHNlYWM6ci5zZWFjfTsiLm5vdGRlZiI9PT1pP24uY2hhcnN0cmluZ3MudW5zaGlmdChjKTpuLmNoYXJzdHJpbmdzLnB1c2goYyk7aWYoZS5idWlsdEluRW5jb2Rpbmcpe2NvbnN0IHQ9ZS5idWlsdEluRW5jb2RpbmcuaW5kZXhPZihpKTt0Pi0xJiZ2b2lkIDA9PT1lLndpZHRoc1t0XSYmdD49ZS5maXJzdENoYXImJnQ8PWUubGFzdENoYXImJihlLndpZHRoc1t0XT1yLndpZHRoKX19cmV0dXJuIG59ZXh0cmFjdEZvbnRIZWFkZXIoZSl7bGV0IHQ7Zm9yKDtudWxsIT09KHQ9dGhpcy5nZXRUb2tlbigpKTspaWYoIi8iPT09dCl7dD10aGlzLmdldFRva2VuKCk7c3dpdGNoKHQpe2Nhc2UiRm9udE1hdHJpeCI6Y29uc3QgYT10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UuZm9udE1hdHJpeD1hO2JyZWFrO2Nhc2UiRW5jb2RpbmciOmNvbnN0IGk9dGhpcy5nZXRUb2tlbigpO2xldCBuO2lmKC9eXGQrJC8udGVzdChpKSl7bj1bXTtjb25zdCBlPTB8cGFyc2VJbnQoaSwxMCk7dGhpcy5nZXRUb2tlbigpO2ZvcihsZXQgYT0wO2E8ZTthKyspe3Q9dGhpcy5nZXRUb2tlbigpO2Zvcig7ImR1cCIhPT10JiYiZGVmIiE9PXQ7KXt0PXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09dClyZXR1cm59aWYoImRlZiI9PT10KWJyZWFrO2NvbnN0IGU9dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2NvbnN0IGE9dGhpcy5nZXRUb2tlbigpO25bZV09YTt0aGlzLmdldFRva2VuKCl9fWVsc2Ugbj0oMCxyLmdldEVuY29kaW5nKShpKTtlLmJ1aWx0SW5FbmNvZGluZz1uO2JyZWFrO2Nhc2UiRm9udEJCb3giOmNvbnN0IHM9dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmFzY2VudD1NYXRoLm1heChzWzNdLHNbMV0pO2UuZGVzY2VudD1NYXRoLm1pbihzWzFdLHNbM10pO2UuYXNjZW50U2NhbGVkPSEwfX19fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBhdHRlcm49dm9pZCAwO3QuZ2V0VGlsaW5nUGF0dGVybklSPWZ1bmN0aW9uIGdldFRpbGluZ1BhdHRlcm5JUihlLHQsYSl7Y29uc3QgaT10LmdldEFycmF5KCJNYXRyaXgiKSxuPXIuVXRpbC5ub3JtYWxpemVSZWN0KHQuZ2V0QXJyYXkoIkJCb3giKSkscz10LmdldCgiWFN0ZXAiKSxvPXQuZ2V0KCJZU3RlcCIpLGM9dC5nZXQoIlBhaW50VHlwZSIpLGw9dC5nZXQoIlRpbGluZ1R5cGUiKTtpZihuWzJdLW5bMF09PTB8fG5bM10tblsxXT09MCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL0JCb3ggYXJyYXk6IFske259XS5gKTtyZXR1cm5bIlRpbGluZ1BhdHRlcm4iLGEsZSxpLG4scyxvLGMsbF19O3ZhciByPWEoMiksaT1hKDUpLG49YSgxMikscz1hKDMpO2NvbnN0IG89MixjPTMsbD00LGg9NSx1PTYsZD03O3QuUGF0dGVybj1jbGFzcyBQYXR0ZXJue2NvbnN0cnVjdG9yKCl7KDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIFBhdHRlcm4uIil9c3RhdGljIHBhcnNlU2hhZGluZyhlLHQsYSxuLGYpe2NvbnN0IGc9ZSBpbnN0YW5jZW9mIGkuQmFzZVN0cmVhbT9lLmRpY3Q6ZSxwPWcuZ2V0KCJTaGFkaW5nVHlwZSIpO3RyeXtzd2l0Y2gocCl7Y2FzZSBvOmNhc2UgYzpyZXR1cm4gbmV3IFJhZGlhbEF4aWFsU2hhZGluZyhnLHQsYSxuLGYpO2Nhc2UgbDpjYXNlIGg6Y2FzZSB1OmNhc2UgZDpyZXR1cm4gbmV3IE1lc2hTaGFkaW5nKGUsdCxhLG4sZik7ZGVmYXVsdDp0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5zdXBwb3J0ZWQgU2hhZGluZ1R5cGU6ICIrcCl9fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBzLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci53YXJuKShlKTtyZXR1cm4gbmV3IER1bW15U2hhZGluZ319fTtjbGFzcyBCYXNlU2hhZGluZ3tzdGF0aWMgU01BTExfTlVNQkVSPTFlLTY7Y29uc3RydWN0b3IoKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZVNoYWRpbmcmJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlU2hhZGluZy4iKX1nZXRJUigpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYGdldElSYCBjYWxsZWQuIil9fWNsYXNzIFJhZGlhbEF4aWFsU2hhZGluZyBleHRlbmRzIEJhc2VTaGFkaW5ne2NvbnN0cnVjdG9yKGUsdCxhLGkscyl7c3VwZXIoKTt0aGlzLmNvb3Jkc0Fycj1lLmdldEFycmF5KCJDb29yZHMiKTt0aGlzLnNoYWRpbmdUeXBlPWUuZ2V0KCJTaGFkaW5nVHlwZSIpO2NvbnN0IG89bi5Db2xvclNwYWNlLnBhcnNlKHtjczplLmdldFJhdygiQ1MiKXx8ZS5nZXRSYXcoIkNvbG9yU3BhY2UiKSx4cmVmOnQscmVzb3VyY2VzOmEscGRmRnVuY3Rpb25GYWN0b3J5OmksbG9jYWxDb2xvclNwYWNlQ2FjaGU6c30pLGw9ZS5nZXRBcnJheSgiQkJveCIpO0FycmF5LmlzQXJyYXkobCkmJjQ9PT1sLmxlbmd0aD90aGlzLmJib3g9ci5VdGlsLm5vcm1hbGl6ZVJlY3QobCk6dGhpcy5iYm94PW51bGw7bGV0IGg9MCx1PTE7aWYoZS5oYXMoIkRvbWFpbiIpKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkRvbWFpbiIpO2g9dFswXTt1PXRbMV19bGV0IGQ9ITEsZj0hMTtpZihlLmhhcygiRXh0ZW5kIikpe2NvbnN0IHQ9ZS5nZXRBcnJheSgiRXh0ZW5kIik7ZD10WzBdO2Y9dFsxXX1pZighKHRoaXMuc2hhZGluZ1R5cGUhPT1jfHxkJiZmKSl7Y29uc3RbZSx0LGEsaSxuLHNdPXRoaXMuY29vcmRzQXJyLG89TWF0aC5oeXBvdChlLWksdC1uKTthPD1zK28mJnM8PWErbyYmKDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgcmFkaWFsIGdyYWRpZW50LiIpfXRoaXMuZXh0ZW5kU3RhcnQ9ZDt0aGlzLmV4dGVuZEVuZD1mO2NvbnN0IGc9ZS5nZXRSYXcoIkZ1bmN0aW9uIikscD1pLmNyZWF0ZUZyb21BcnJheShnKSxtPSh1LWgpLzg0MCxiPXRoaXMuY29sb3JTdG9wcz1bXTtpZihoPj11fHxtPD0wKXsoMCxyLmluZm8pKCJCYWQgc2hhZGluZyBkb21haW4uIik7cmV0dXJufWNvbnN0IHk9bmV3IEZsb2F0MzJBcnJheShvLm51bUNvbXBzKSx3PW5ldyBGbG9hdDMyQXJyYXkoMSk7bGV0IFMseD0wO3dbMF09aDtwKHcsMCx5LDApO2xldCBDPW8uZ2V0UmdiKHksMCk7Y29uc3Qgaz1yLlV0aWwubWFrZUhleENvbG9yKENbMF0sQ1sxXSxDWzJdKTtiLnB1c2goWzAsa10pO2xldCB2PTE7d1swXT1oK207cCh3LDAseSwwKTtsZXQgRj1vLmdldFJnYih5LDApLE89RlswXS1DWzBdKzEsVD1GWzFdLUNbMV0rMSxNPUZbMl0tQ1syXSsxLEU9RlswXS1DWzBdLTEsRD1GWzFdLUNbMV0tMSxOPUZbMl0tQ1syXS0xO2ZvcihsZXQgZT0yO2U8ODQwO2UrKyl7d1swXT1oK2UqbTtwKHcsMCx5LDApO1M9by5nZXRSZ2IoeSwwKTtjb25zdCB0PWUteDtPPU1hdGgubWluKE8sKFNbMF0tQ1swXSsxKS90KTtUPU1hdGgubWluKFQsKFNbMV0tQ1sxXSsxKS90KTtNPU1hdGgubWluKE0sKFNbMl0tQ1syXSsxKS90KTtFPU1hdGgubWF4KEUsKFNbMF0tQ1swXS0xKS90KTtEPU1hdGgubWF4KEQsKFNbMV0tQ1sxXS0xKS90KTtOPU1hdGgubWF4KE4sKFNbMl0tQ1syXS0xKS90KTtpZighKEU8PU8mJkQ8PVQmJk48PU0pKXtjb25zdCBlPXIuVXRpbC5tYWtlSGV4Q29sb3IoRlswXSxGWzFdLEZbMl0pO2IucHVzaChbdi84NDAsZV0pO089U1swXS1GWzBdKzE7VD1TWzFdLUZbMV0rMTtNPVNbMl0tRlsyXSsxO0U9U1swXS1GWzBdLTE7RD1TWzFdLUZbMV0tMTtOPVNbMl0tRlsyXS0xO3g9djtDPUZ9dj1lO0Y9U31jb25zdCBSPXIuVXRpbC5tYWtlSGV4Q29sb3IoRlswXSxGWzFdLEZbMl0pO2IucHVzaChbMSxSXSk7bGV0IEw9InRyYW5zcGFyZW50IjtpZihlLmhhcygiQmFja2dyb3VuZCIpKXtTPW8uZ2V0UmdiKGUuZ2V0KCJCYWNrZ3JvdW5kIiksMCk7TD1yLlV0aWwubWFrZUhleENvbG9yKFNbMF0sU1sxXSxTWzJdKX1pZighZCl7Yi51bnNoaWZ0KFswLExdKTtiWzFdWzBdKz1CYXNlU2hhZGluZy5TTUFMTF9OVU1CRVJ9aWYoIWYpe2IuYXQoLTEpWzBdLT1CYXNlU2hhZGluZy5TTUFMTF9OVU1CRVI7Yi5wdXNoKFsxLExdKX10aGlzLmNvbG9yU3RvcHM9Yn1nZXRJUigpe2NvbnN0IGU9dGhpcy5jb29yZHNBcnIsdD10aGlzLnNoYWRpbmdUeXBlO2xldCBhLGksbixzLGw7aWYodD09PW8pe2k9W2VbMF0sZVsxXV07bj1bZVsyXSxlWzNdXTtzPW51bGw7bD1udWxsO2E9ImF4aWFsIn1lbHNlIGlmKHQ9PT1jKXtpPVtlWzBdLGVbMV1dO249W2VbM10sZVs0XV07cz1lWzJdO2w9ZVs1XTthPSJyYWRpYWwifWVsc2UoMCxyLnVucmVhY2hhYmxlKShgZ2V0UGF0dGVybiB0eXBlIHVua25vd246ICR7dH1gKTtyZXR1cm5bIlJhZGlhbEF4aWFsIixhLHRoaXMuYmJveCx0aGlzLmNvbG9yU3RvcHMsaSxuLHMsbF19fWNsYXNzIE1lc2hTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnN0cmVhbT1lO3RoaXMuY29udGV4dD10O3RoaXMuYnVmZmVyPTA7dGhpcy5idWZmZXJMZW5ndGg9MDtjb25zdCBhPXQubnVtQ29tcHM7dGhpcy50bXBDb21wc0J1Zj1uZXcgRmxvYXQzMkFycmF5KGEpO2NvbnN0IHI9dC5jb2xvclNwYWNlLm51bUNvbXBzO3RoaXMudG1wQ3NDb21wc0J1Zj10LmNvbG9yRm4/bmV3IEZsb2F0MzJBcnJheShyKTp0aGlzLnRtcENvbXBzQnVmfWdldCBoYXNEYXRhKCl7aWYodGhpcy5zdHJlYW0uZW5kKXJldHVybiB0aGlzLnN0cmVhbS5wb3M8dGhpcy5zdHJlYW0uZW5kO2lmKHRoaXMuYnVmZmVyTGVuZ3RoPjApcmV0dXJuITA7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRCeXRlKCk7aWYoZTwwKXJldHVybiExO3RoaXMuYnVmZmVyPWU7dGhpcy5idWZmZXJMZW5ndGg9ODtyZXR1cm4hMH1yZWFkQml0cyhlKXtsZXQgdD10aGlzLmJ1ZmZlcixhPXRoaXMuYnVmZmVyTGVuZ3RoO2lmKDMyPT09ZSl7aWYoMD09PWEpcmV0dXJuKHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8MjR8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDwxNnx0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpKT4+PjA7dD10PDwyNHx0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDE2fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8OHx0aGlzLnN0cmVhbS5nZXRCeXRlKCk7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRCeXRlKCk7dGhpcy5idWZmZXI9ZSYoMTw8YSktMTtyZXR1cm4odDw8OC1hfCgyNTUmZSk+PmEpPj4+MH1pZig4PT09ZSYmMD09PWEpcmV0dXJuIHRoaXMuc3RyZWFtLmdldEJ5dGUoKTtmb3IoO2E8ZTspe3Q9dDw8OHx0aGlzLnN0cmVhbS5nZXRCeXRlKCk7YSs9OH1hLT1lO3RoaXMuYnVmZmVyTGVuZ3RoPWE7dGhpcy5idWZmZXI9dCYoMTw8YSktMTtyZXR1cm4gdD4+YX1hbGlnbigpe3RoaXMuYnVmZmVyPTA7dGhpcy5idWZmZXJMZW5ndGg9MH1yZWFkRmxhZygpe3JldHVybiB0aGlzLnJlYWRCaXRzKHRoaXMuY29udGV4dC5iaXRzUGVyRmxhZyl9cmVhZENvb3JkaW5hdGUoKXtjb25zdCBlPXRoaXMuY29udGV4dC5iaXRzUGVyQ29vcmRpbmF0ZSx0PXRoaXMucmVhZEJpdHMoZSksYT10aGlzLnJlYWRCaXRzKGUpLHI9dGhpcy5jb250ZXh0LmRlY29kZSxpPWU8MzI/MS8oKDE8PGUpLTEpOjIuMzI4MzA2NDM2NTM4Njk2M2UtMTA7cmV0dXJuW3QqaSooclsxXS1yWzBdKStyWzBdLGEqaSooclszXS1yWzJdKStyWzJdXX1yZWFkQ29tcG9uZW50cygpe2NvbnN0IGU9dGhpcy5jb250ZXh0Lm51bUNvbXBzLHQ9dGhpcy5jb250ZXh0LmJpdHNQZXJDb21wb25lbnQsYT10PDMyPzEvKCgxPDx0KS0xKToyLjMyODMwNjQzNjUzODY5NjNlLTEwLHI9dGhpcy5jb250ZXh0LmRlY29kZSxpPXRoaXMudG1wQ29tcHNCdWY7Zm9yKGxldCBuPTAscz00O248ZTtuKysscys9Mil7Y29uc3QgZT10aGlzLnJlYWRCaXRzKHQpO2lbbl09ZSphKihyW3MrMV0tcltzXSkrcltzXX1jb25zdCBuPXRoaXMudG1wQ3NDb21wc0J1Zjt0aGlzLmNvbnRleHQuY29sb3JGbiYmdGhpcy5jb250ZXh0LmNvbG9yRm4oaSwwLG4sMCk7cmV0dXJuIHRoaXMuY29udGV4dC5jb2xvclNwYWNlLmdldFJnYihuLDApfX1jb25zdCBmPWZ1bmN0aW9uIGdldEJDbG9zdXJlKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZVt0XXx8PWZ1bmN0aW9uIGJ1aWxkQihlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wO2E8PWU7YSsrKXtjb25zdCByPWEvZSxpPTEtcjt0LnB1c2gobmV3IEZsb2F0MzJBcnJheShbaSppKmksMypyKmkqaSwzKnIqcippLHIqcipyXSkpfXJldHVybiB0fSh0KX19KCk7Y2xhc3MgTWVzaFNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tzdGF0aWMgTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQ9MztzdGF0aWMgTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQ9MjA7c3RhdGljIFRSSUFOR0xFX0RFTlNJVFk9MjA7Y29uc3RydWN0b3IoZSx0LGEscyxvKXtzdXBlcigpO2lmKCEoZSBpbnN0YW5jZW9mIGkuQmFzZVN0cmVhbSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk1lc2ggZGF0YSBpcyBub3QgYSBzdHJlYW0iKTtjb25zdCBjPWUuZGljdDt0aGlzLnNoYWRpbmdUeXBlPWMuZ2V0KCJTaGFkaW5nVHlwZSIpO2NvbnN0IGY9Yy5nZXRBcnJheSgiQkJveCIpO0FycmF5LmlzQXJyYXkoZikmJjQ9PT1mLmxlbmd0aD90aGlzLmJib3g9ci5VdGlsLm5vcm1hbGl6ZVJlY3QoZik6dGhpcy5iYm94PW51bGw7Y29uc3QgZz1uLkNvbG9yU3BhY2UucGFyc2Uoe2NzOmMuZ2V0UmF3KCJDUyIpfHxjLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6cyxsb2NhbENvbG9yU3BhY2VDYWNoZTpvfSk7dGhpcy5iYWNrZ3JvdW5kPWMuaGFzKCJCYWNrZ3JvdW5kIik/Zy5nZXRSZ2IoYy5nZXQoIkJhY2tncm91bmQiKSwwKTpudWxsO2NvbnN0IHA9Yy5nZXRSYXcoIkZ1bmN0aW9uIiksbT1wP3MuY3JlYXRlRnJvbUFycmF5KHApOm51bGw7dGhpcy5jb29yZHM9W107dGhpcy5jb2xvcnM9W107dGhpcy5maWd1cmVzPVtdO2NvbnN0IGI9e2JpdHNQZXJDb29yZGluYXRlOmMuZ2V0KCJCaXRzUGVyQ29vcmRpbmF0ZSIpLGJpdHNQZXJDb21wb25lbnQ6Yy5nZXQoIkJpdHNQZXJDb21wb25lbnQiKSxiaXRzUGVyRmxhZzpjLmdldCgiQml0c1BlckZsYWciKSxkZWNvZGU6Yy5nZXRBcnJheSgiRGVjb2RlIiksY29sb3JGbjptLGNvbG9yU3BhY2U6ZyxudW1Db21wczptPzE6Zy5udW1Db21wc30seT1uZXcgTWVzaFN0cmVhbVJlYWRlcihlLGIpO2xldCB3PSExO3N3aXRjaCh0aGlzLnNoYWRpbmdUeXBlKXtjYXNlIGw6dGhpcy5fZGVjb2RlVHlwZTRTaGFkaW5nKHkpO2JyZWFrO2Nhc2UgaDpjb25zdCBlPTB8Yy5nZXQoIlZlcnRpY2VzUGVyUm93Iik7aWYoZTwyKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFZlcnRpY2VzUGVyUm93Iik7dGhpcy5fZGVjb2RlVHlwZTVTaGFkaW5nKHksZSk7YnJlYWs7Y2FzZSB1OnRoaXMuX2RlY29kZVR5cGU2U2hhZGluZyh5KTt3PSEwO2JyZWFrO2Nhc2UgZDp0aGlzLl9kZWNvZGVUeXBlN1NoYWRpbmcoeSk7dz0hMDticmVhaztkZWZhdWx0OigwLHIudW5yZWFjaGFibGUpKCJVbnN1cHBvcnRlZCBtZXNoIHR5cGUuIil9aWYodyl7dGhpcy5fdXBkYXRlQm91bmRzKCk7Zm9yKGxldCBlPTAsdD10aGlzLmZpZ3VyZXMubGVuZ3RoO2U8dDtlKyspdGhpcy5fYnVpbGRGaWd1cmVGcm9tUGF0Y2goZSl9dGhpcy5fdXBkYXRlQm91bmRzKCk7dGhpcy5fcGFja0RhdGEoKX1fZGVjb2RlVHlwZTRTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxpPVtdLG49W107bGV0IHM9MDtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IG89ZS5yZWFkRmxhZygpLGM9ZS5yZWFkQ29vcmRpbmF0ZSgpLGw9ZS5yZWFkQ29tcG9uZW50cygpO2lmKDA9PT1zKXtpZighKDA8PW8mJm88PTIpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU0IGZsYWciKTtzd2l0Y2gobyl7Y2FzZSAwOnM9MzticmVhaztjYXNlIDE6bi5wdXNoKG4uYXQoLTIpLG4uYXQoLTEpKTtzPTE7YnJlYWs7Y2FzZSAyOm4ucHVzaChuLmF0KC0zKSxuLmF0KC0xKSk7cz0xfWkucHVzaChvKX1uLnB1c2godC5sZW5ndGgpO3QucHVzaChjKTthLnB1c2gobCk7cy0tO2UuYWxpZ24oKX10aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToidHJpYW5nbGVzIixjb29yZHM6bmV3IEludDMyQXJyYXkobiksY29sb3JzOm5ldyBJbnQzMkFycmF5KG4pfSl9X2RlY29kZVR5cGU1U2hhZGluZyhlLHQpe2NvbnN0IGE9dGhpcy5jb29yZHMscj10aGlzLmNvbG9ycyxpPVtdO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3QgdD1lLnJlYWRDb29yZGluYXRlKCksbj1lLnJlYWRDb21wb25lbnRzKCk7aS5wdXNoKGEubGVuZ3RoKTthLnB1c2godCk7ci5wdXNoKG4pfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJsYXR0aWNlIixjb29yZHM6bmV3IEludDMyQXJyYXkoaSksY29sb3JzOm5ldyBJbnQzMkFycmF5KGkpLHZlcnRpY2VzUGVyUm93OnR9KX1fZGVjb2RlVHlwZTZTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxpPW5ldyBJbnQzMkFycmF5KDE2KSxuPW5ldyBJbnQzMkFycmF5KDQpO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgcz1lLnJlYWRGbGFnKCk7aWYoISgwPD1zJiZzPD0zKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNiBmbGFnIik7Y29uc3Qgbz10Lmxlbmd0aDtmb3IobGV0IGE9MCxyPTAhPT1zPzg6MTI7YTxyO2ErKyl0LnB1c2goZS5yZWFkQ29vcmRpbmF0ZSgpKTtjb25zdCBjPWEubGVuZ3RoO2ZvcihsZXQgdD0wLHI9MCE9PXM/Mjo0O3Q8cjt0KyspYS5wdXNoKGUucmVhZENvbXBvbmVudHMoKSk7bGV0IGwsaCx1LGQ7c3dpdGNoKHMpe2Nhc2UgMDppWzEyXT1vKzM7aVsxM109bys0O2lbMTRdPW8rNTtpWzE1XT1vKzY7aVs4XT1vKzI7aVsxMV09bys3O2lbNF09bysxO2lbN109bys4O2lbMF09bztpWzFdPW8rMTE7aVsyXT1vKzEwO2lbM109bys5O25bMl09YysxO25bM109YysyO25bMF09YztuWzFdPWMrMzticmVhaztjYXNlIDE6bD1pWzEyXTtoPWlbMTNdO3U9aVsxNF07ZD1pWzE1XTtpWzEyXT1kO2lbMTNdPW8rMDtpWzE0XT1vKzE7aVsxNV09bysyO2lbOF09dTtpWzExXT1vKzM7aVs0XT1oO2lbN109bys0O2lbMF09bDtpWzFdPW8rNztpWzJdPW8rNjtpWzNdPW8rNTtsPW5bMl07aD1uWzNdO25bMl09aDtuWzNdPWM7blswXT1sO25bMV09YysxO2JyZWFrO2Nhc2UgMjpsPWlbMTVdO2g9aVsxMV07aVsxMl09aVszXTtpWzEzXT1vKzA7aVsxNF09bysxO2lbMTVdPW8rMjtpWzhdPWlbN107aVsxMV09byszO2lbNF09aDtpWzddPW8rNDtpWzBdPWw7aVsxXT1vKzc7aVsyXT1vKzY7aVszXT1vKzU7bD1uWzNdO25bMl09blsxXTtuWzNdPWM7blswXT1sO25bMV09YysxO2JyZWFrO2Nhc2UgMzppWzEyXT1pWzBdO2lbMTNdPW8rMDtpWzE0XT1vKzE7aVsxNV09bysyO2lbOF09aVsxXTtpWzExXT1vKzM7aVs0XT1pWzJdO2lbN109bys0O2lbMF09aVszXTtpWzFdPW8rNztpWzJdPW8rNjtpWzNdPW8rNTtuWzJdPW5bMF07blszXT1jO25bMF09blsxXTtuWzFdPWMrMX1pWzVdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbaVswXV1bMF0tdFtpWzE1XV1bMF0rNioodFtpWzRdXVswXSt0W2lbMV1dWzBdKS0yKih0W2lbMTJdXVswXSt0W2lbM11dWzBdKSszKih0W2lbMTNdXVswXSt0W2lbN11dWzBdKSkvOSwoLTQqdFtpWzBdXVsxXS10W2lbMTVdXVsxXSs2Kih0W2lbNF1dWzFdK3RbaVsxXV1bMV0pLTIqKHRbaVsxMl1dWzFdK3RbaVszXV1bMV0pKzMqKHRbaVsxM11dWzFdK3RbaVs3XV1bMV0pKS85XSk7aVs2XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W2lbM11dWzBdLXRbaVsxMl1dWzBdKzYqKHRbaVsyXV1bMF0rdFtpWzddXVswXSktMioodFtpWzBdXVswXSt0W2lbMTVdXVswXSkrMyoodFtpWzRdXVswXSt0W2lbMTRdXVswXSkpLzksKC00KnRbaVszXV1bMV0tdFtpWzEyXV1bMV0rNioodFtpWzJdXVsxXSt0W2lbN11dWzFdKS0yKih0W2lbMF1dWzFdK3RbaVsxNV1dWzFdKSszKih0W2lbNF1dWzFdK3RbaVsxNF1dWzFdKSkvOV0pO2lbOV09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFtpWzEyXV1bMF0tdFtpWzNdXVswXSs2Kih0W2lbOF1dWzBdK3RbaVsxM11dWzBdKS0yKih0W2lbMF1dWzBdK3RbaVsxNV1dWzBdKSszKih0W2lbMTFdXVswXSt0W2lbMV1dWzBdKSkvOSwoLTQqdFtpWzEyXV1bMV0tdFtpWzNdXVsxXSs2Kih0W2lbOF1dWzFdK3RbaVsxM11dWzFdKS0yKih0W2lbMF1dWzFdK3RbaVsxNV1dWzFdKSszKih0W2lbMTFdXVsxXSt0W2lbMV1dWzFdKSkvOV0pO2lbMTBdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbaVsxNV1dWzBdLXRbaVswXV1bMF0rNioodFtpWzExXV1bMF0rdFtpWzE0XV1bMF0pLTIqKHRbaVsxMl1dWzBdK3RbaVszXV1bMF0pKzMqKHRbaVsyXV1bMF0rdFtpWzhdXVswXSkpLzksKC00KnRbaVsxNV1dWzFdLXRbaVswXV1bMV0rNioodFtpWzExXV1bMV0rdFtpWzE0XV1bMV0pLTIqKHRbaVsxMl1dWzFdK3RbaVszXV1bMV0pKzMqKHRbaVsyXV1bMV0rdFtpWzhdXVsxXSkpLzldKTt0aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToicGF0Y2giLGNvb3JkczpuZXcgSW50MzJBcnJheShpKSxjb2xvcnM6bmV3IEludDMyQXJyYXkobil9KX19X2RlY29kZVR5cGU3U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLGE9dGhpcy5jb2xvcnMsaT1uZXcgSW50MzJBcnJheSgxNiksbj1uZXcgSW50MzJBcnJheSg0KTtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IHM9ZS5yZWFkRmxhZygpO2lmKCEoMDw9cyYmczw9MykpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTcgZmxhZyIpO2NvbnN0IG89dC5sZW5ndGg7Zm9yKGxldCBhPTAscj0wIT09cz8xMjoxNjthPHI7YSsrKXQucHVzaChlLnJlYWRDb29yZGluYXRlKCkpO2NvbnN0IGM9YS5sZW5ndGg7Zm9yKGxldCB0PTAscj0wIT09cz8yOjQ7dDxyO3QrKylhLnB1c2goZS5yZWFkQ29tcG9uZW50cygpKTtsZXQgbCxoLHUsZDtzd2l0Y2gocyl7Y2FzZSAwOmlbMTJdPW8rMztpWzEzXT1vKzQ7aVsxNF09bys1O2lbMTVdPW8rNjtpWzhdPW8rMjtpWzldPW8rMTM7aVsxMF09bysxNDtpWzExXT1vKzc7aVs0XT1vKzE7aVs1XT1vKzEyO2lbNl09bysxNTtpWzddPW8rODtpWzBdPW87aVsxXT1vKzExO2lbMl09bysxMDtpWzNdPW8rOTtuWzJdPWMrMTtuWzNdPWMrMjtuWzBdPWM7blsxXT1jKzM7YnJlYWs7Y2FzZSAxOmw9aVsxMl07aD1pWzEzXTt1PWlbMTRdO2Q9aVsxNV07aVsxMl09ZDtpWzEzXT1vKzA7aVsxNF09bysxO2lbMTVdPW8rMjtpWzhdPXU7aVs5XT1vKzk7aVsxMF09bysxMDtpWzExXT1vKzM7aVs0XT1oO2lbNV09bys4O2lbNl09bysxMTtpWzddPW8rNDtpWzBdPWw7aVsxXT1vKzc7aVsyXT1vKzY7aVszXT1vKzU7bD1uWzJdO2g9blszXTtuWzJdPWg7blszXT1jO25bMF09bDtuWzFdPWMrMTticmVhaztjYXNlIDI6bD1pWzE1XTtoPWlbMTFdO2lbMTJdPWlbM107aVsxM109byswO2lbMTRdPW8rMTtpWzE1XT1vKzI7aVs4XT1pWzddO2lbOV09bys5O2lbMTBdPW8rMTA7aVsxMV09byszO2lbNF09aDtpWzVdPW8rODtpWzZdPW8rMTE7aVs3XT1vKzQ7aVswXT1sO2lbMV09bys3O2lbMl09bys2O2lbM109bys1O2w9blszXTtuWzJdPW5bMV07blszXT1jO25bMF09bDtuWzFdPWMrMTticmVhaztjYXNlIDM6aVsxMl09aVswXTtpWzEzXT1vKzA7aVsxNF09bysxO2lbMTVdPW8rMjtpWzhdPWlbMV07aVs5XT1vKzk7aVsxMF09bysxMDtpWzExXT1vKzM7aVs0XT1pWzJdO2lbNV09bys4O2lbNl09bysxMTtpWzddPW8rNDtpWzBdPWlbM107aVsxXT1vKzc7aVsyXT1vKzY7aVszXT1vKzU7blsyXT1uWzBdO25bM109YztuWzBdPW5bMV07blsxXT1jKzF9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6InBhdGNoIixjb29yZHM6bmV3IEludDMyQXJyYXkoaSksY29sb3JzOm5ldyBJbnQzMkFycmF5KG4pfSl9fV9idWlsZEZpZ3VyZUZyb21QYXRjaChlKXtjb25zdCB0PXRoaXMuZmlndXJlc1tlXTsoMCxyLmFzc2VydCkoInBhdGNoIj09PXQudHlwZSwiVW5leHBlY3RlZCBwYXRjaCBtZXNoIGZpZ3VyZSIpO2NvbnN0IGE9dGhpcy5jb29yZHMsaT10aGlzLmNvbG9ycyxuPXQuY29vcmRzLHM9dC5jb2xvcnMsbz1NYXRoLm1pbihhW25bMF1dWzBdLGFbblszXV1bMF0sYVtuWzEyXV1bMF0sYVtuWzE1XV1bMF0pLGM9TWF0aC5taW4oYVtuWzBdXVsxXSxhW25bM11dWzFdLGFbblsxMl1dWzFdLGFbblsxNV1dWzFdKSxsPU1hdGgubWF4KGFbblswXV1bMF0sYVtuWzNdXVswXSxhW25bMTJdXVswXSxhW25bMTVdXVswXSksaD1NYXRoLm1heChhW25bMF1dWzFdLGFbblszXV1bMV0sYVtuWzEyXV1bMV0sYVtuWzE1XV1bMV0pO2xldCB1PU1hdGguY2VpbCgobC1vKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1syXS10aGlzLmJvdW5kc1swXSkpO3U9TWF0aC5tYXgoTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWF0aC5taW4oTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsdSkpO2xldCBkPU1hdGguY2VpbCgoaC1jKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1szXS10aGlzLmJvdW5kc1sxXSkpO2Q9TWF0aC5tYXgoTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWF0aC5taW4oTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsZCkpO2NvbnN0IGc9dSsxLHA9bmV3IEludDMyQXJyYXkoKGQrMSkqZyksbT1uZXcgSW50MzJBcnJheSgoZCsxKSpnKTtsZXQgYj0wO2NvbnN0IHk9bmV3IFVpbnQ4QXJyYXkoMyksdz1uZXcgVWludDhBcnJheSgzKSxTPWlbc1swXV0seD1pW3NbMV1dLEM9aVtzWzJdXSxrPWlbc1szXV0sdj1mKGQpLEY9Zih1KTtmb3IobGV0IGU9MDtlPD1kO2UrKyl7eVswXT0oU1swXSooZC1lKStDWzBdKmUpL2R8MDt5WzFdPShTWzFdKihkLWUpK0NbMV0qZSkvZHwwO3lbMl09KFNbMl0qKGQtZSkrQ1syXSplKS9kfDA7d1swXT0oeFswXSooZC1lKStrWzBdKmUpL2R8MDt3WzFdPSh4WzFdKihkLWUpK2tbMV0qZSkvZHwwO3dbMl09KHhbMl0qKGQtZSkra1syXSplKS9kfDA7Zm9yKGxldCB0PTA7dDw9dTt0KyssYisrKXtpZighKDAhPT1lJiZlIT09ZHx8MCE9PXQmJnQhPT11KSljb250aW51ZTtsZXQgcj0wLHM9MCxvPTA7Zm9yKGxldCBpPTA7aTw9MztpKyspZm9yKGxldCBjPTA7Yzw9MztjKyssbysrKXtjb25zdCBsPXZbZV1baV0qRlt0XVtjXTtyKz1hW25bb11dWzBdKmw7cys9YVtuW29dXVsxXSpsfXBbYl09YS5sZW5ndGg7YS5wdXNoKFtyLHNdKTttW2JdPWkubGVuZ3RoO2NvbnN0IGM9bmV3IFVpbnQ4QXJyYXkoMyk7Y1swXT0oeVswXSoodS10KSt3WzBdKnQpL3V8MDtjWzFdPSh5WzFdKih1LXQpK3dbMV0qdCkvdXwwO2NbMl09KHlbMl0qKHUtdCkrd1syXSp0KS91fDA7aS5wdXNoKGMpfX1wWzBdPW5bMF07bVswXT1zWzBdO3BbdV09blszXTttW3VdPXNbMV07cFtnKmRdPW5bMTJdO21bZypkXT1zWzJdO3BbZypkK3VdPW5bMTVdO21bZypkK3VdPXNbM107dGhpcy5maWd1cmVzW2VdPXt0eXBlOiJsYXR0aWNlIixjb29yZHM6cCxjb2xvcnM6bSx2ZXJ0aWNlc1BlclJvdzpnfX1fdXBkYXRlQm91bmRzKCl7bGV0IGU9dGhpcy5jb29yZHNbMF1bMF0sdD10aGlzLmNvb3Jkc1swXVsxXSxhPWUscj10O2ZvcihsZXQgaT0xLG49dGhpcy5jb29yZHMubGVuZ3RoO2k8bjtpKyspe2NvbnN0IG49dGhpcy5jb29yZHNbaV1bMF0scz10aGlzLmNvb3Jkc1tpXVsxXTtlPWU+bj9uOmU7dD10PnM/czp0O2E9YTxuP246YTtyPXI8cz9zOnJ9dGhpcy5ib3VuZHM9W2UsdCxhLHJdfV9wYWNrRGF0YSgpe2xldCBlLHQsYSxyO2NvbnN0IGk9dGhpcy5jb29yZHMsbj1uZXcgRmxvYXQzMkFycmF5KDIqaS5sZW5ndGgpO2ZvcihlPTAsYT0wLHQ9aS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1pW2VdO25bYSsrXT10WzBdO25bYSsrXT10WzFdfXRoaXMuY29vcmRzPW47Y29uc3Qgcz10aGlzLmNvbG9ycyxvPW5ldyBVaW50OEFycmF5KDMqcy5sZW5ndGgpO2ZvcihlPTAsYT0wLHQ9cy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1zW2VdO29bYSsrXT10WzBdO29bYSsrXT10WzFdO29bYSsrXT10WzJdfXRoaXMuY29sb3JzPW87Y29uc3QgYz10aGlzLmZpZ3VyZXM7Zm9yKGU9MCx0PWMubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9Y1tlXSxpPXQuY29vcmRzLG49dC5jb2xvcnM7Zm9yKGE9MCxyPWkubGVuZ3RoO2E8cjthKyspe2lbYV0qPTI7blthXSo9M319fWdldElSKCl7cmV0dXJuWyJNZXNoIix0aGlzLnNoYWRpbmdUeXBlLHRoaXMuY29vcmRzLHRoaXMuY29sb3JzLHRoaXMuZmlndXJlcyx0aGlzLmJvdW5kcyx0aGlzLmJib3gsdGhpcy5iYWNrZ3JvdW5kXX19Y2xhc3MgRHVtbXlTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7Z2V0SVIoKXtyZXR1cm5bIkR1bW15Il19fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmdldFhmYUZvbnREaWN0PWZ1bmN0aW9uIGdldFhmYUZvbnREaWN0KGUpe2NvbnN0IHQ9ZnVuY3Rpb24gZ2V0WGZhRm9udFdpZHRocyhlKXtjb25zdCB0PWdldFhmYUZvbnROYW1lKGUpO2lmKCF0KXJldHVybiBudWxsO2NvbnN0e2Jhc2VXaWR0aHM6YSxiYXNlTWFwcGluZzpyLGZhY3RvcnM6aX09dDtsZXQgbjtuPWk/YS5tYXAoKChlLHQpPT5lKmlbdF0pKTphO2xldCBzLG89LTI7Y29uc3QgYz1bXTtmb3IoY29uc3RbZSx0XW9mIHIubWFwKCgoZSx0KT0+W2UsdF0pKS5zb3J0KCgoW2VdLFt0XSk9PmUtdCkpKWlmKC0xIT09ZSlpZihlPT09bysxKXtzLnB1c2goblt0XSk7bys9MX1lbHNle289ZTtzPVtuW3RdXTtjLnB1c2goZSxzKX1yZXR1cm4gY30oZSksYT1uZXcgaS5EaWN0KG51bGwpO2Euc2V0KCJCYXNlRm9udCIsaS5OYW1lLmdldChlKSk7YS5zZXQoIlR5cGUiLGkuTmFtZS5nZXQoIkZvbnQiKSk7YS5zZXQoIlN1YnR5cGUiLGkuTmFtZS5nZXQoIkNJREZvbnRUeXBlMiIpKTthLnNldCgiRW5jb2RpbmciLGkuTmFtZS5nZXQoIklkZW50aXR5LUgiKSk7YS5zZXQoIkNJRFRvR0lETWFwIixpLk5hbWUuZ2V0KCJJZGVudGl0eSIpKTthLnNldCgiVyIsdCk7YS5zZXQoIkZpcnN0Q2hhciIsdFswXSk7YS5zZXQoIkxhc3RDaGFyIix0LmF0KC0yKSt0LmF0KC0xKS5sZW5ndGgtMSk7Y29uc3Qgcj1uZXcgaS5EaWN0KG51bGwpO2Euc2V0KCJGb250RGVzY3JpcHRvciIscik7Y29uc3Qgbj1uZXcgaS5EaWN0KG51bGwpO24uc2V0KCJPcmRlcmluZyIsIklkZW50aXR5Iik7bi5zZXQoIlJlZ2lzdHJ5IiwiQWRvYmUiKTtuLnNldCgiU3VwcGxlbWVudCIsMCk7YS5zZXQoIkNJRFN5c3RlbUluZm8iLG4pO3JldHVybiBhfTt0LmdldFhmYUZvbnROYW1lPWdldFhmYUZvbnROYW1lO3ZhciByPWEoNTIpLGk9YSg0KSxuPWEoNTMpLHM9YSg1NCksbz1hKDU1KSxjPWEoNTYpLGw9YSgzKSxoPWEoMzgpO2NvbnN0IHU9KDAsbC5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlWyJNeXJpYWRQcm8tUmVndWxhciJdPWVbIlBkZkpTLUZhbGxiYWNrLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpvLk15cmlhZFByb1JlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6by5NeXJpYWRQcm9SZWd1bGFyTWV0cmljc307ZVsiTXlyaWFkUHJvLUJvbGQiXT1lWyJQZGZKUy1GYWxsYmFjay1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6by5NeXJpYWRQcm9Cb2xkRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZyxtZXRyaWNzOm8uTXlyaWFkUHJvQm9sZE1ldHJpY3N9O2VbIk15cmlhZFByby1JdCJdPWVbIk15cmlhZFByby1JdGFsaWMiXT1lWyJQZGZKUy1GYWxsYmFjay1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOm8uTXlyaWFkUHJvSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmcsbWV0cmljczpvLk15cmlhZFByb0l0YWxpY01ldHJpY3N9O2VbIk15cmlhZFByby1Cb2xkSXQiXT1lWyJNeXJpYWRQcm8tQm9sZEl0YWxpYyJdPWVbIlBkZkpTLUZhbGxiYWNrLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpvLk15cmlhZFByb0JvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6by5NeXJpYWRQcm9Cb2xkSXRhbGljTWV0cmljc307ZS5BcmlhbE1UPWUuQXJpYWw9ZVsiQXJpYWwtUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZ307ZVsiQXJpYWwtQm9sZE1UIl09ZVsiQXJpYWwtQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZ307ZVsiQXJpYWwtSXRhbGljTVQiXT1lWyJBcmlhbC1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmd9O2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPWVbIkFyaWFsLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsYmFzZVdpZHRoczpzLkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY01hcHBpbmd9O2VbIkNhbGlicmktUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOnIuQ2FsaWJyaVJlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6ci5DYWxpYnJpUmVndWxhck1ldHJpY3N9O2VbIkNhbGlicmktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOnIuQ2FsaWJyaUJvbGRGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nLG1ldHJpY3M6ci5DYWxpYnJpQm9sZE1ldHJpY3N9O2VbIkNhbGlicmktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpyLkNhbGlicmlJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZyxtZXRyaWNzOnIuQ2FsaWJyaUl0YWxpY01ldHJpY3N9O2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOnIuQ2FsaWJyaUJvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6ci5DYWxpYnJpQm9sZEl0YWxpY01ldHJpY3N9O2VbIlNlZ29ldWktUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOmMuU2Vnb2V1aVJlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpUmVndWxhck1ldHJpY3N9O2VbIlNlZ29ldWktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOmMuU2Vnb2V1aUJvbGRGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpQm9sZE1ldHJpY3N9O2VbIlNlZ29ldWktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpjLlNlZ29ldWlJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZyxtZXRyaWNzOmMuU2Vnb2V1aUl0YWxpY01ldHJpY3N9O2VbIlNlZ29ldWktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOmMuU2Vnb2V1aUJvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3N9O2VbIkhlbHZldGljYS1SZWd1bGFyIl09ZS5IZWx2ZXRpY2E9e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6bi5IZWx2ZXRpY2FSZWd1bGFyRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZyxtZXRyaWNzOm4uSGVsdmV0aWNhUmVndWxhck1ldHJpY3N9O2VbIkhlbHZldGljYS1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6bi5IZWx2ZXRpY2FCb2xkRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZyxtZXRyaWNzOm4uSGVsdmV0aWNhQm9sZE1ldHJpY3N9O2VbIkhlbHZldGljYS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOm4uSGVsdmV0aWNhSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmcsbWV0cmljczpuLkhlbHZldGljYUl0YWxpY01ldHJpY3N9O2VbIkhlbHZldGljYS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6bi5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZyxtZXRyaWNzOm4uSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3N9fSkpO2Z1bmN0aW9uIGdldFhmYUZvbnROYW1lKGUpe2NvbnN0IHQ9KDAsaC5ub3JtYWxpemVGb250TmFtZSkoZSk7cmV0dXJuIHUoKVt0XX19LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ2FsaWJyaVJlZ3VsYXJNZXRyaWNzPXQuQ2FsaWJyaVJlZ3VsYXJGYWN0b3JzPXQuQ2FsaWJyaUl0YWxpY01ldHJpY3M9dC5DYWxpYnJpSXRhbGljRmFjdG9ycz10LkNhbGlicmlCb2xkTWV0cmljcz10LkNhbGlicmlCb2xkSXRhbGljTWV0cmljcz10LkNhbGlicmlCb2xkSXRhbGljRmFjdG9ycz10LkNhbGlicmlCb2xkRmFjdG9ycz12b2lkIDA7dC5DYWxpYnJpQm9sZEZhY3RvcnM9WzEuMzg3NywxLDEsMSwuOTc4MDEsLjkyNDgyLC44OTU1MiwuOTExMzMsLjgxOTg4LC45NzU2NiwuOTgxNTIsLjkzNTQ4LC45MzU0OCwxLjI3OTgsLjg1Mjg0LC45Mjc5NCwxLC45NjEzNCwxLjU0NjU3LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuODI4NDUsLjgyODQ1LC44NTI4NCwuODUyODQsLjg1Mjg0LC43NTg1OSwuOTIxMzgsLjgzOTA4LC43NzYyLC43MzI5MywuODcyODksLjczMTMzLC43NTE0LC44MTkyMSwuODczNTYsLjk1OTU4LC41OTUyNiwuNzU3MjcsLjY5MjI1LDEuMDQ5MjQsLjkxMjEsLjg2OTQzLC43OTc5NSwuODgxOTgsLjc3OTU4LC43MDg2NCwuODEwNTUsLjkwMzk5LC44ODY1MywuOTYwMTcsLjgyNTc3LC43Nzg5MiwuNzgyNTcsLjk3NTA3LDEuNTQ2NTcsLjk3NTA3LC44NTI4NCwuODk1NTIsLjkwMTc2LC44ODc2MiwuODc4NSwuNzUyNDEsLjg3ODUsLjkwNTE4LC45NTAxNSwuNzc2MTgsLjg3ODUsLjg4NDAxLC45MTkxNiwuODYzMDQsLjg4NDAxLC45MTQ4OCwuODc4NSwuODgwMSwuODc4NSwuODc4NSwuOTEzNDMsLjcxNzMsMS4wNDEwNiwuODc4NSwuODUwNzUsLjk1Nzk0LC44MjYxNiwuODUxNjIsLjc5NDkyLC44ODMzMSwxLjY5ODA4LC44ODMzMSwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjc4MDEsLjg5NTUyLDEuMjQ0ODcsMS4xMzI1NCwxLjEyNDAxLC45NjgzOSwuODUyODQsLjY4Nzg3LC43MDY0NSwuODU1OTIsLjkwNzQ3LDEuMDE0NjYsMS4wMDg4LC45MDMyMywxLDEuMDc0NjMsMSwuOTEwNTYsLjc1ODA2LDEuMTkxMTgsLjk2ODM5LC43ODg2NCwuODI4NDUsLjg0MTMzLC43NTg1OSwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuNzc1MzksLjczMjkzLC43MzEzMywuNzMxMzMsLjczMTMzLC43MzEzMywuOTU5NTgsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjg4NTA2LC45MTIxLC44Njk0MywuODY5NDMsLjg2OTQzLC44Njk0MywuODY5NDMsLjg1Mjg0LC44NzUwOCwuOTAzOTksLjkwMzk5LC45MDM5OSwuOTAzOTksLjc3ODkyLC43OTc5NSwuOTA4MDcsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg3MTUsLjc1MjQxLC45MDUxOCwuOTA1MTgsLjkwNTE4LC45MDUxOCwuODg0MDEsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg3ODUsLjg3ODUsLjg4MDEsLjg4MDEsLjg4MDEsLjg4MDEsLjg4MDEsLjkwNzQ3LC44OTA0OSwuODc4NSwuODc4NSwuODc4NSwuODc4NSwuODUxNjIsLjg3ODUsLjg1MTYyLC44MzkwOCwuODg3NjIsLjgzOTA4LC44ODc2MiwuODM5MDgsLjg4NzYyLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjg3Mjg5LC44MzAxNiwuODg1MDYsLjkzMTI1LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuODE5MjEsLjc3NjE4LC44MTkyMSwuNzc2MTgsLjgxOTIxLC43NzYxOCwxLDEsLjg3MzU2LC44Nzg1LC45MTA3NSwuODk2MDgsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC43NjIyOSwuOTAxNjcsLjU5NTI2LC45MTkxNiwxLDEsLjg2MzA0LC42OTIyNSwuODg0MDEsMSwxLC43MDQyNCwuNzk0NjgsLjkxOTI2LC44ODE3NSwuNzA4MjMsLjk0OTAzLC45MTIxLC44Nzg1LDEsMSwuOTEyMSwuODc4NSwuODc4MDIsLjg4NjU2LC44Nzg1LC44Njk0MywuODgwMSwuODY5NDMsLjg4MDEsLjg2OTQzLC44ODAxLC44NzQwMiwuODkyOTEsLjc3OTU4LC45MTM0MywxLDEsLjc3OTU4LC45MTM0MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsMSwxLC44MTA1NSwuNzU4NDEsLjgxMDU1LDEuMDY0NTIsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjk2MDE3LC45NTc5NCwuNzc4OTIsLjg1MTYyLC43Nzg5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuOTI5NywuNTY4OTIsLjgzOTA4LC44ODc2MiwuNzc1MzksLjg3MTUsLjg3NTA4LC44OTA0OSwxLDEsLjgxMDU1LDEuMDQxMDYsMS4yMDUyOCwxLjIwNTI4LDEsMS4xNTU0MywuNzA2NzQsLjk4Mzg3LC45NDcyMSwxLjMzNDMxLDEuNDU4OTQsLjk1MTYxLDEuMDYzMDMsLjgzOTA4LC44MDM1MiwuNTcxODQsLjY5NjUsLjU2Mjg5LC44MjAwMSwuNTYwMjksLjgxMjM1LDEuMDI5ODgsLjgzOTA4LC43NzYyLC42ODE1NiwuODAzNjcsLjczMTMzLC43ODI1NywuODczNTYsLjg2OTQzLC45NTk1OCwuNzU3MjcsLjg5MDE5LDEuMDQ5MjQsLjkxMjEsLjc2NDgsLjg2OTQzLC44NzM1NiwuNzk3OTUsLjc4Mjc1LC44MTA1NSwuNzc4OTIsLjk3NjIsLjgyNTc3LC45OTgxOSwuODQ4OTYsLjk1OTU4LC43Nzg5MiwuOTYxMDgsMS4wMTQwNywuODkwNDksMS4wMjk4OCwuOTQyMTEsLjk2MTA4LC44OTM2LC44NDAyMSwuODc4NDIsLjk2Mzk5LC43OTEwOSwuODkwNDksMS4wMDgxMywxLjAyOTg4LC44NjA3NywuODc0NDUsLjkyMDk5LC44NDcyMywuODY1MTMsLjg4MDEsLjc1NjM4LC44NTcxNCwuNzgyMTYsLjc5NTg2LC44Nzk2NSwuOTQyMTEsLjk3NzQ3LC43ODI4NywuOTc5MjYsLjg0OTcxLDEuMDI5ODgsLjk0MjExLC44ODAxLC45NDIxMSwuODQ5NzEsLjczMTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDI2NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA1MTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNTQ4LDEsMSwxLDEsMSwxLC45NjAxNywuOTU3OTQsLjk2MDE3LC45NTc5NCwuOTYwMTcsLjk1Nzk0LC43Nzg5MiwuODUxNjIsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAzNjMsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjkyNzk0LC44NzAxMiwuODcwMTIsLjg3MDEyLC44OTU1MiwuODk1NTIsMS40MjI1OSwuNzExNDMsMS4wNjE1MiwxLDEsMS4wMzM3MiwxLjAzMzcyLC45NzE3MSwxLjQ5NTYsMi4yODA3LC45MzgzNSwuODM0MDYsLjkxMTMzLC44NDEwNywuOTExMzMsMSwxLDEsLjcyMDIxLDEsMS4yMzEwOCwuODM0ODksLjg4NTI1LC44ODUyNSwuODE0OTksLjkwNTI3LDEuODEwNTUsLjkwNTI3LDEuODEwNTUsMS4zMTAwNiwxLjUzNzExLC45NDQzNCwxLjA4Njk2LDEsLjk1MDE4LC43NzE5MiwuODUyODQsLjkwNzQ3LDEuMTc1MzQsLjY5ODI1LC45NzE2LDEuMzcwNzcsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjA4MDA0LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNzI3LC45MDcyNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5DYWxpYnJpQm9sZE1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9O3QuQ2FsaWJyaUJvbGRJdGFsaWNGYWN0b3JzPVsxLjM4NzcsMSwxLDEsLjk3ODAxLC45MjQ4MiwuODk1NTIsLjkxMTMzLC44MTk4OCwuOTc1NjYsLjk4MTUyLC45MzU0OCwuOTM1NDgsMS4yNzk4LC44NTI4NCwuOTI3OTQsMSwuOTYxMzQsMS41NjIzOSwuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjgyODQ1LC44Mjg0NSwuODUyODQsLjg1Mjg0LC44NTI4NCwuNzU4NTksLjkyMTM4LC44MzkwOCwuNzc2MiwuNzE4MDUsLjg3Mjg5LC43MzEzMywuNzUxNCwuODE5MjEsLjg3MzU2LC45NTk1OCwuNTk1MjYsLjc1NzI3LC42OTIyNSwxLjA0OTI0LC45MDg3MiwuODU5MzgsLjc5Nzk1LC44NzA2OCwuNzc5NTgsLjY5NzY2LC44MTA1NSwuOTAzOTksLjg4NjUzLC45NjA2OCwuODI1NzcsLjc3ODkyLC43ODI1NywuOTc1MDcsMS41MjksLjk3NTA3LC44NTI4NCwuODk1NTIsLjkwMTc2LC45NDkwOCwuODY0MTEsLjc0MDEyLC44NjQxMSwuODgzMjMsLjk1MDE1LC44NjQxMSwuODYzMzEsLjg4NDAxLC45MTkxNiwuODYzMDQsLjg4NDAxLC45MDM5LC44NjMzMSwuODYzMzEsLjg2NDExLC44NjQxMSwuOTA0NjQsLjcwODUyLDEuMDQxMDYsLjg2MzMxLC44NDM3MiwuOTU3OTQsLjgyNjE2LC44NDU0OCwuNzk0OTIsLjg4MzMxLDEuNjk4MDgsLjg4MzMxLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuNzgwMSwuODk1NTIsMS4yNDQ4NywxLjEzMjU0LDEuMTkxMjksLjk2ODM5LC44NTI4NCwuNjg3ODcsLjcwNjQ1LC44NTU5MiwuOTA3NDcsMS4wMTQ2NiwxLjAwODgsLjkwMzIzLDEsMS4wNzQ2MywxLC45MTA1NiwuNzU4MDYsMS4xOTExOCwuOTY4MzksLjc4ODY0LC44Mjg0NSwuODQxMzMsLjc1ODU5LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC43NzUzOSwuNzE4MDUsLjczMTMzLC43MzEzMywuNzMxMzMsLjczMTMzLC45NTk1OCwuOTU5NTgsLjk1OTU4LC45NTk1OCwuODg1MDYsLjkwODcyLC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1Mjg0LC44NzA2OCwuOTAzOTksLjkwMzk5LC45MDM5OSwuOTAzOTksLjc3ODkyLC43OTc5NSwuOTA4MDcsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjg1ODg3LC43NDAxMiwuODgzMjMsLjg4MzIzLC44ODMyMywuODgzMjMsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg4NDAxLC44Nzg1LC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC45MDc0NywuODkwNDksLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NDU0OCwuODY0MTEsLjg0NTQ4LC44MzkwOCwuOTQ5MDgsLjgzOTA4LC45NDkwOCwuODM5MDgsLjk0OTA4LC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjg3Mjg5LC43OTUzOCwuODg1MDYsLjkyNzI2LC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuODE5MjEsLjg2NDExLC44MTkyMSwuODY0MTEsLjgxOTIxLC44NjQxMSwxLDEsLjg3MzU2LC44NjMzMSwuOTEwNzUsLjg3NzcsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC43NjQ2NywuOTAxNjcsLjU5NTI2LC45MTkxNiwxLDEsLjg2MzA0LC42OTIyNSwuODg0MDEsMSwxLC43MDQyNCwuNzczMTIsLjkxOTI2LC44ODE3NSwuNzA4MjMsLjk0OTAzLC45MDg3MiwuODYzMzEsMSwxLC45MDg3MiwuODYzMzEsLjg2OTA2LC44ODExNiwuODYzMzEsLjg1OTM4LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg3NDAyLC44NjU0OSwuNzc5NTgsLjkwNDY0LDEsMSwuNzc5NTgsLjkwNDY0LC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsMSwxLC44MTA1NSwuNzU4NDEsLjgxMDU1LDEuMDY0NTIsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjk2MDY4LC45NTc5NCwuNzc4OTIsLjg0NTQ4LC43Nzg5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuOTI5NywuNTY4OTIsLjgzOTA4LC45NDkwOCwuNzc1MzksLjg1ODg3LC44NzA2OCwuODkwNDksMSwxLC44MTA1NSwxLjA0MTA2LDEuMjA1MjgsMS4yMDUyOCwxLDEuMTU1NDMsLjcwMDg4LC45ODM4NywuOTQ3MjEsMS4zMzQzMSwxLjQ1ODk0LC45NTE2MSwxLjQ4Mzg3LC44MzkwOCwuODAzNTIsLjU3MTE4LC42OTY1LC41NjM0NywuNzkxNzksLjU1ODUzLC44MDM0NiwxLjAyOTg4LC44MzkwOCwuNzc2MiwuNjcxNzQsLjg2MDM2LC43MzEzMywuNzgyNTcsLjg3MzU2LC44NjQ0MSwuOTU5NTgsLjc1NzI3LC44OTAxOSwxLjA0OTI0LC45MDg3MiwuNzQ4ODksLjg1OTM4LC44Nzg5MSwuNzk3OTUsLjc5NTcsLjgxMDU1LC43Nzg5MiwuOTc0NDcsLjgyNTc3LC45NzQ2NiwuODcxNzksLjk1OTU4LC43Nzg5MiwuOTQyNTIsLjk1NjEyLC44NzUzLDEuMDI5ODgsLjkyNzMzLC45NDI1MiwuODc0MTEsLjg0MDIxLC44NzI4LC45NTYxMiwuNzQwODEsLjg3NTMsMS4wMjE4OSwxLjAyOTg4LC44NDgxNCwuODc0NDUsLjkxODIyLC44NDcyMywuODU2NjgsLjg2MzMxLC44MTM0NCwuODc1ODEsLjc2NDIyLC44MjA0NiwuOTYwNTcsLjkyNzMzLC45OTM3NSwuNzgwMjIsLjk1NDUyLC44NjAxNSwxLjAyOTg4LC45MjczMywuODYzMzEsLjkyNzMzLC44NjAxNSwuNzMxMzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNjMxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44ODMyMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODUxNzQsMSwxLDEsMSwxLDEsLjk2MDY4LC45NTc5NCwuOTYwNjgsLjk1Nzk0LC45NjA2OCwuOTU3OTQsLjc3ODkyLC44NDU0OCwxLDEsLjg5NTUyLC45MDUyNywxLC45MDM2MywuOTI3OTQsLjkyNzk0LC45Mjc5NCwuODk4MDcsLjg3MDEyLC44NzAxMiwuODcwMTIsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC43MTA5NCwxLjA2MTUyLDEsMSwxLjAzMzcyLDEuMDMzNzIsLjk3MTcxLDEuNDk1NiwyLjI4MDcsLjkyOTcyLC44MzQwNiwuOTExMzMsLjgzMzI2LC45MTEzMywxLDEsMSwuNzIwMjEsMSwxLjIzMTA4LC44MzQ4OSwuODg1MjUsLjg4NTI1LC44MTQ5OSwuOTA2MTYsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjMxMDcsMS41MzcxMSwuOTQ0MzQsMS4wODY5NiwxLC45NTAxOCwuNzcxOTIsLjg1Mjg0LC45MDc0NywxLjE3NTM0LC42OTgyNSwuOTcxNiwxLjM3MDc3LC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wODAwNCwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDcyNywuOTA3MjcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuQ2FsaWJyaUJvbGRJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fTt0LkNhbGlicmlJdGFsaWNGYWN0b3JzPVsxLjM4NzcsMSwxLDEsMS4xNzIyMywxLjEyOTMsLjg5NTUyLC45MTEzMywuODAzOTUsMS4wMjI2OSwxLjE1NjAxLC45MTA1NiwuOTEwNTYsMS4yNzk4LC44NTI4NCwuODk4MDcsMSwuOTA4NjEsMS4zOTU0MywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjk2MzA5LC45NjMwOSwuODUyODQsLjg1Mjg0LC44NTI4NCwuODMzMTksLjg4MDcxLC44Njc1LC44MTU1MiwuNzIzNDYsLjg1MTkzLC43MzIwNiwuNzUyMiwuODExMDUsLjg2Mjc1LC45MDY4NSwuNjM3NywuNzc4OTIsLjc1NTkzLDEuMDI2MzgsLjg5MjQ5LC44NDExOCwuNzc0NTIsLjg1Mzc0LC43NTE4NiwuNjc3ODksLjc5Nzc2LC44ODg0NCwuODUwNjYsLjk0MzA5LC43NzgxOCwuNzMwNiwuNzY2NTksMS4xMDM2OSwxLjM4MzEzLDEuMTAzNjksMS4wNjEzOSwuODk1NTIsLjg3MzksLjkyNDUsLjkyNDUsLjgzMjAzLC45MjQ1LC44NTg2NSwxLjA5ODQyLC45MjQ1LC45MjQ1LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTQ5NTksLjkyNDUsLjkyMjc0LC45MjQ1LC45MjQ1LDEuMDI5MzMsLjc3ODMyLDEuMjA1NjIsLjkyNDUsLjg5MTYsLjk4OTg2LC44NjYyMSwuODk0NTMsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4xNjM1OSwuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MjM0NiwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkyNDksLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NDExOCwuODUyODQsLjg0NTU3LC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44NDg0MywuODMyMDMsLjg1ODY1LC44NTg2NSwuODU4NjUsLjg1ODY1LC44MjYwMSwuODI2MDEsLjgyNjAxLC44MjYwMSwuOTQ0NjksLjkyNDUsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTA3NDcsLjg2NjUxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44OTQ1MywuOTI0NSwuODk0NTMsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuODUxOTMsLjg4NzUsLjg2NDc3LC45OTAzNCwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwuODExMDUsLjkyNDUsMSwxLC44NjI3NSwuOTI0NSwuOTA4NzIsLjkzNTkxLC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3ODk2LDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkzNzUsLjk4MTU2LC45MzQwNywuNzcyNjEsMS4xMTQyOSwuODkyNDksLjkyNDUsMSwxLC44OTI0OSwuOTI0NSwuOTI1MzQsLjg2Njk4LC45MjQ1LC44NDExOCwuOTIyNzQsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NjY3LC44NjI5MSwuNzUxODYsMS4wMjkzMywxLDEsLjc1MTg2LDEuMDI5MzMsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwxLDEsLjc5Nzc2LC45NzY1NSwuNzk3NzYsMS4yMzAyMywuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywuNzMwNiwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwxLjA5MjMxLC41NDg3MywuODY3NSwuOTI0NSwuNzYzMTgsLjg0ODQzLC44NDU1NywuODY2NTEsMSwxLC43OTc3NiwxLjIwNTYyLDEuMTg2MjIsMS4xODYyMiwxLDEuMTQzNywuNjcwMDksLjk2MzM0LC45MzY5NSwxLjM1MTkxLDEuNDA5MDksLjk1MTYxLDEuNDgzODcsLjg2NzUsLjkwODYxLC42MTkyLC43MzYzLC42NDgyNCwuODI0MTEsLjU2MzIxLC44NTY5NiwxLjIzNTE2LC44Njc1LC44MTU1MiwuNzI4NiwuODQxMzQsLjczMjA2LC43NjY1OSwuODYyNzUsLjg0MzY5LC45MDY4NSwuNzc4OTIsLjg1ODcxLDEuMDI2MzgsLjg5MjQ5LC43NTgyOCwuODQxMTgsLjg1OTg0LC43NzQ1MiwuNzY0NjYsLjc5Nzc2LC43MzA2LC45MDc4MiwuNzc4MTgsLjkwMywuODcyOTEsLjkwNjg1LC43MzA2LC45OTA1OCwxLjAzNjY3LC45NDYzNSwxLjIzNTE2LC45ODQ5LC45OTA1OCwuOTIzOTMsLjg5MTYsLjk0MiwxLjAzNjY3LC43NTAyNiwuOTQ2MzUsMS4wMjk3LDEuMjM1MTYsLjkwOTE4LC45NDA0OCwuOTgyMTcsLjg5NzQ2LC44NDE1MywuOTIyNzQsLjgyNTA3LC44ODgzMiwuODQ0MzgsLjg4MTc4LDEuMDM1MjUsLjk4NDksMS4wMDIyNSwuNzgwODYsLjk3MjQ4LC44OTQwNCwxLjIzNTE2LC45ODQ5LC45MjI3NCwuOTg0OSwuODk0MDQsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTY5MywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODU4NjUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwOTMzLDEsMSwxLDEsMSwxLC45NDMwOSwuOTg5ODYsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjg5OTQsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45Nzg1OCwuODI2MTYsLjkxMTMzLC44MzQzNywuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDU3MiwxLjgxMDU1LC45MDc0OSwxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1Mjg0LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LkNhbGlicmlJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fTt0LkNhbGlicmlSZWd1bGFyRmFjdG9ycz1bMS4zODc3LDEsMSwxLDEuMTcyMjMsMS4xMjkzLC44OTU1MiwuOTExMzMsLjgwMzk1LDEuMDIyNjksMS4xNTYwMSwuOTEwNTYsLjkxMDU2LDEuMjc5OCwuODUyODQsLjg5ODA3LDEsLjkwODYxLDEuMzkwMTYsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45NjMwOSwuOTYzMDksLjg1Mjg0LC44NTI4NCwuODUyODQsLjgzMzE5LC44ODA3MSwuODY3NSwuODE1NTIsLjczODM0LC44NTE5MywuNzMyMDYsLjc1MjIsLjgxMTA1LC44NjI3NSwuOTA2ODUsLjYzNzcsLjc3ODkyLC43NTU5MywxLjAyNjM4LC44OTM4NSwuODUxMjIsLjc3NDUyLC44NjUwMywuNzUxODYsLjY4ODg3LC43OTc3NiwuODg4NDQsLjg1MDY2LC45NDI1OCwuNzc4MTgsLjczMDYsLjc2NjU5LDEuMTAzNjksMS4zOTAxNiwxLjEwMzY5LDEuMDYxMzksLjg5NTUyLC44NzM5LC44NjEyOCwuOTQ0NjksLjg0NTcsLjk0NDY5LC44OTQ2NCwxLjA5ODQyLC44NDYzNiwuOTQ0NjksMS4wMzI5NywxLjA3NjkyLC45MDkxOCwxLjAzMjk3LC45NTg5NywuOTQ0NjksLjk0ODIsLjk0NDY5LC45NDQ2OSwxLjA0NjkyLC43ODIyMywxLjIwNTYyLC45NDQ2OSwuOTAzMzIsLjk4OTg2LC44NjYyMSwuOTA1MjcsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4wODcwNywuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MzgzNCwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkzODUsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUyODQsLjg1MzExLC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjkzLC44NDU3LC44OTQ2NCwuODk0NjQsLjg5NDY0LC44OTQ2NCwuODI2MDEsLjgyNjAxLC44MjYwMSwuODI2MDEsLjk0NDY5LC45NDQ2OSwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTA3NDcsLjg2NjUxLC45NDQ2OSwuOTQ0NjksLjk0NDY5LC45NDQ2OSwuOTA1MjcsLjk0NDY5LC45MDUyNywuODY3NSwuODYxMjgsLjg2NzUsLjg2MTI4LC44Njc1LC44NjEyOCwuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjg1MTkzLC45MjQ1NCwuODY0NzcsLjk5MjEsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC44MTEwNSwuODQ2MzYsLjgxMTA1LC44NDYzNiwuODExMDUsLjg0NjM2LDEsMSwuODYyNzUsLjk0NDY5LC45MDg3MiwuOTU3ODYsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LDEuMDMyOTcsLjkwNjg1LC44MjYwMSwuNzc3NDEsMS4wNTYxMSwuNjM3NywxLjA3NjkyLDEsMSwuOTA5MTgsLjc1NTkzLDEuMDMyOTcsMSwxLC43NjAzMiwuOTA0NTIsLjk4MTU2LDEuMTE4NDIsLjc3MjYxLDEuMTE0MjksLjg5Mzg1LC45NDQ2OSwxLDEsLjg5Mzg1LC45NDQ2OSwuOTU4NzcsLjg2OTAxLC45NDQ2OSwuODUxMjIsLjk0ODIsLjg1MTIyLC45NDgyLC44NTEyMiwuOTQ4MiwuODY2NywuOTAwMTYsLjc1MTg2LDEuMDQ2OTIsMSwxLC43NTE4NiwxLjA0NjkyLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsMSwxLC43OTc3NiwuOTIxODgsLjc5Nzc2LDEuMjMwMjMsLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjk0MjU4LC45ODk4NiwuNzMwNiwuOTA1MjcsLjczMDYsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsMS4wOTIzMSwuNTQ4NzMsLjg2NzUsLjg2MTI4LC43NjMxOCwuODY5MywuODUzMTEsLjg2NjUxLDEsMSwuNzk3NzYsMS4yMDU2MiwxLjE4NjIyLDEuMTg2MjIsMSwxLjE0MzcsLjY3NzQyLC45NjMzNCwuOTM2OTUsMS4zNTE5MSwxLjQwOTA5LC45NTE2MSwxLjQ4Mzg3LC44NjY4NiwuOTA4NjEsLjYyMjY3LC43NDM1OSwuNjU2NDksLjg1NDk4LC41Njk2MywuODgyNTQsMS4yMzUxNiwuODY3NSwuODE1NTIsLjc1NDQzLC44NDUwMywuNzMyMDYsLjc2NjU5LC44NjI3NSwuODUxMjIsLjkwNjg1LC43Nzg5MiwuODU3NDYsMS4wMjYzOCwuODkzODUsLjc1NjU3LC44NTEyMiwuODYyNzUsLjc3NDUyLC43NDE3MSwuNzk3NzYsLjczMDYsLjk1MTY1LC43NzgxOCwuODk3NzIsLjg4ODMxLC45MDY4NSwuNzMwNiwuOTgxNDIsMS4wMjE5MSwuOTY1NzYsMS4yMzUxNiwuOTkwMTgsLjk4MTQyLC45MjM2LC44OTI1OCwuOTQwMzUsMS4wMjE5MSwuNzg4NDgsLjk2NTc2LC45NTYxLDEuMjM1MTYsLjkwOTE4LC45MjU3OCwuOTU0MjQsLjg5NzQ2LC44Mzk2OSwuOTQ4MiwuODAxMTMsLjg5NDQyLC44NTIwOCwuODYxNTUsLjk4MDIyLC45OTAxOCwxLjAwNDUyLC44MTIwOSwuOTkyNDcsLjg5MTgxLDEuMjM1MTYsLjk5MDE4LC45NDgyLC45OTAxOCwuODkxODEsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44ODg0NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk0NjQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NzY2LDEsMSwxLDEsMSwxLC45NDI1OCwuOTg5ODYsLjk0MjU4LC45ODk4NiwuOTQyNTgsLjk4OTg2LC43MzA2LC45MDUyNywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjkwNDMsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45OTMzMSwuODI2MTYsLjkxMTMzLC44NDI4NiwuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDUyNywxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEuMDcxODUsLjk5NDEzLC45NjMzNCwxLjA4MDY1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5DYWxpYnJpUmVndWxhck1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkhlbHZldGljYVJlZ3VsYXJNZXRyaWNzPXQuSGVsdmV0aWNhUmVndWxhckZhY3RvcnM9dC5IZWx2ZXRpY2FJdGFsaWNNZXRyaWNzPXQuSGVsdmV0aWNhSXRhbGljRmFjdG9ycz10LkhlbHZldGljYUJvbGRNZXRyaWNzPXQuSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3M9dC5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycz10LkhlbHZldGljYUJvbGRGYWN0b3JzPXZvaWQgMDt0LkhlbHZldGljYUJvbGRGYWN0b3JzPVsuNzYxMTYsMSwxLDEuMDAwNiwuOTk5OTgsLjk5OTc0LC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3NywxLjAwMDg3LC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywxLjAwMDI2LC45OTk5LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LC45OTk3MywuOTk5NzcsMS4wMDAyNiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5OTgsMS4wMDA2LC45OTk5OCwxLjAwMDAzLC45OTk3MywuOTk5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk5OCwxLjAwMDI2LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsMS4wMDA2LC45OTk4MiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk1OSwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3MywxLC45OTk1OSwxLjAwMDc3LC45OTk1OSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3NywuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTczLDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjA2NDA5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsMS4wMzM3NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNDIsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzMsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAzODI4LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsMS4wMDA2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTkzLC45OTk4LDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMSwxLjAwMDE2LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LDEuMDAwMjYsLjgxMjEsMS4wMDAyNiwuOTk5OTgsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDA2LC45OTk3MywuOTk5NzcsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAzNCwuOTk5NzcsMSwuOTk5OTcsMS4wMDAyNiwxLjAwMDc4LDEuMDAwMzYsLjk5OTczLDEuMDAwMTMsMS4wMDA2LC45OTk3NywuOTk5NzcsLjk5OTg4LC44NTE0OCwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LC45OTk3NywxLjAwMDAxLC45OTk5OSwuOTk5NzcsMS4wMDA2OSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLC45OTk4NCwxLjAwMDI2LDEuMDAwMDEsMS4wMDAyNCwxLjAwMDAxLC45OTk5LDEsMS4wMDA2LDEuMDAwMDEsMS4wMDA0MSwuOTk5NjIsMS4wMDAyNiwxLjAwMDYsLjk5OTk1LDEuMDAwNDEsLjk5OTQyLC45OTk3MywuOTk5MjcsMS4wMDA4MiwuOTk5MDIsMS4wMDAyNiwxLjAwMDg3LDEuMDAwNiwxLjAwMDY5LC45OTk3MywuOTk4NjcsLjk5OTczLC45OTkzLDEuMDAwMjYsMS4wMDA0OSwxLjAwMDU2LDEsLjk5OTg4LC45OTkzNSwuOTk5OTUsLjk5OTU0LDEuMDAwNTUsLjk5OTQ1LDEuMDAwMzIsMS4wMDA2LC45OTk5NSwxLjAwMDI2LC45OTk5NSwxLjAwMDMyLDEuMDAwMDEsMS4wMDAwOCwuOTk5NzEsMS4wMDAxOSwuOTk5NCwxLjAwMDAxLDEuMDAwNiwxLjAwMDQ0LC45OTk3MywxLjAwMDIzLDEuMDAwNDcsMSwuOTk5NDIsLjk5NTYxLC45OTk4OSwxLjAwMDM1LC45OTk3NywxLjAwMDM1LC45OTk3NywxLjAwMDE5LC45OTk0NCwxLjAwMDAxLDEuMDAwMjEsLjk5OTI2LDEuMDAwMzUsMS4wMDAzNSwuOTk5NDIsMS4wMDA0OCwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAzNSwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk4OSwxLjAwMDU3LDEuMDAwMDEsLjk5OTM2LDEuMDAwNTIsMS4wMDAxMiwuOTk5OTYsMS4wMDA0MywxLDEuMDAwMzUsLjk5OTQsLjk5OTc2LDEuMDAwMzUsLjk5OTczLDEuMDAwNTIsMS4wMDA0MSwxLjAwMTE5LDEuMDAwMzcsLjk5OTczLDEuMDAwMDIsLjk5OTg2LDEuMDAwNDEsMS4wMDA0MSwuOTk5MDIsLjk5OTYsMS4wMDAzNCwuOTk5OTksMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwuOTk5NzMsMS4wMDA1MiwuOTk5NzMsMSwuOTk5NzMsMS4wMDA0MSwxLjAwMDc1LC45OTk0LDEuMDAwMywuOTk5OTksMSwxLjAwMDQxLC45OTk1NSwxLC45OTkxNSwuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDExOSwuOTk5NTUsLjk5OTczLDEuMDAwNiwuOTk5MTEsMS4wMDA2LDEuMDAwMjYsLjk5OTcyLDEuMDAwMjYsLjk5OTAyLDEuMDAwNDEsLjk5OTczLC45OTk5OSwxLDEsMS4wMDAzOCwxLjAwMDUsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMSwxLC45OTk3MywxLDEsLjk5OTU1LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLDEsMSwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDEwNiwuOTk5OTksLjk5OTk4LC45OTk5OCwuOTk5OTksLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwxLjAwMDQ3LDEuMDAwMjMsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMSwxLDEsMSwxLDEsMSwuOTk5NzIsMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywxLjAwMDMxLDEuMDAwMTUsMSwuOTk1NjEsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTcyLC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5IZWx2ZXRpY2FCb2xkTWV0cmljcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn07dC5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycz1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDA0NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDEwMTEsMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwxLjAwMDYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTMsLjk5OTgsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLDEuMDAwMTYsLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsMS4wMDAyNiwuODEyMSwxLjAwMDI2LC45OTk5OCwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDYsLjk5OTczLC45OTk3NywuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTc3LDEsMSwxLjAwMDI2LC45OTk2OSwuOTk5NzIsLjk5OTgxLC45OTk4LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsLjkxMTU1LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsLjk5OTc3LDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5NjYsMS4wMDAyMiwxLjAwMDMyLDEuMDAwMDEsLjk5OTQ0LDEuMDAwMjYsMS4wMDAwMSwuOTk5NjgsMS4wMDAwMSwxLjAwMDQ3LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTgxLDEuMDAxMDEsMS4wMDAyNiwxLjAwMDYsLjk5OTQ4LC45OTk4MSwxLjAwMDY0LC45OTk3MywuOTk5NDIsMS4wMDEwMSwxLjAwMDYxLDEuMDAwMjYsMS4wMDA2OSwxLjAwMDYsMS4wMDAxNCwuOTk5NzMsMS4wMTMyMiwuOTk5NzMsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMTIsLjk5OTIzLDEsMS4wMDA2NCwxLjAwMDc2LC45OTk0OCwxLjAwMDU1LDEuMDAwNjMsMS4wMDAwNywuOTk5NDMsMS4wMDA2LC45OTk0OCwxLjAwMDI2LC45OTk0OCwuOTk5NDMsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjksMS4wMDAzOCwxLjAwMDM1LDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTc4LDEuMDAwMDEsMS4wMDA1NywuOTk5ODksLjk5OTY3LC45OTk2NCwuOTk5NjcsLjk5OTc3LC45OTk5OSwuOTk5NzcsMS4wMDAzOCwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDA2NiwuOTk5NjcsLjk5OTY3LDEuMDAwNDEsLjk5OTk4LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwuOTk5NjcsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NjQsMS4wMDAzMSwxLjAwMDAxLC45OTk5OSwuOTk5OTksMSwxLjAwMDIzLDEsMSwuOTk5OTksMS4wMDAzNSwxLjAwMDAxLC45OTk5OSwuOTk5NzMsLjk5OTc3LC45OTk5OSwxLjAwMDU4LC45OTk3MywuOTk5NzMsLjk5OTU1LC45OTk1LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDMyLC45OTk4OSwxLjAwMDM0LC45OTk5OSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsLjQ1OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDAxLC45OTk5OSwuOTk5ODIsLjk5OTk0LC45OTk5NiwxLDEuMDAwNDIsMS4wMDA0NCwxLjAwMDI5LDEuMDAwMjMsLjk5OTczLC45OTk3MywxLjAwMDI2LC45OTk0OSwxLjAwMDAyLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk4Njg1LC45OTk3MywxLjAwMDI2LDEsMSwuOTk5NjYsMS4wMDA0NCwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLDEsLjk5OTczLDEsMSwuOTk5NTUsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEsMSwxLC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMTA2LC45OTk5OSwuOTk5OTgsLjk5OTk4LC45OTk5OSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTcxLC45OTk3OCwxLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwOTgsMSwxLDEsMS4wMDA0OSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfTt0LkhlbHZldGljYUl0YWxpY0ZhY3RvcnM9Wy43NjExNiwxLDEsMS4wMDA2LDEuMDAwNiwxLjAwMDA2LC45OTk3MywuOTk5NzMsLjk5OTgyLDEuMDAwMDEsMS4wMDA0MywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsLjk5OTczLC45OTk4NywxLjAwMDAxLDEuMDAwMDEsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LDEsMS4wMDAwMSwuOTk5NzMsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTQ5LC45OTk3MywuOTk5OTgsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTI0LC45OTkyNCwxLC45OTkyNCwuOTk5OTksLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwNiwuOTk5NzMsMSwuOTk5NzcsMSwxLDEsMS4wMDAwNSwxLjAwMDksMS4wMDAwNSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA5LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5OCwxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLDEsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wNjQwOSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLC45OTk3MywxLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLjAyODgsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LC45OTk0NiwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wNjMxMSwuOTk5NzMsMS4wMDAyNCwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwNDEsLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODk1NDcsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAwMSwxLDEuMDAwNTQsLjk5OTc3LDEuMDAwODQsMS4wMDAwNywuOTk5NzMsMS4wMDAxMywuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLC45OTk0NSwuOTEyMjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5MzMsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMDEsMS4wMDAxLDEuMDAwMDEsMS4wMDA1MiwxLDEuMDAwNiwxLjAwMDAxLC45OTk0NSwuOTk4OTcsLjk5OTY4LC45OTkyNCwxLjAwMDM2LC45OTk0NSwuOTk5NDksMSwxLjAwMDYsLjk5ODk3LC45OTkxOCwuOTk5NjgsLjk5OTExLC45OTkyNCwxLC45OTk2MiwxLjAxNDg3LDEsMS4wMDA1LC45OTk3MywxLjAwMDEyLDEuMDAwNDMsMSwuOTk5OTUsLjk5OTk0LDEuMDAwMzYsLjk5OTQ3LDEuMDAwMTksMS4wMDA2MywxLjAwMDI1LC45OTkyNCwxLjAwMDM2LC45OTk3MywxLjAwMDM2LDEuMDAwMjUsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjcsMS4wMDAxLDEuMDAwNjgsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsMS4wMDAwOCwuOTk5NTcsLjk5OTcyLC45OTk0LC45OTk1NCwuOTk5NzUsMS4wMDA1MSwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwxLjAwMDEsLjk5OTg2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDM4LC45OTk1NCwuOTk5NTQsLjk5OTQsMS4wMDA2NiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDA1NCwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk3NSwxLjAwMDEsMS4wMDAwMSwuOTk5OTMsLjk5OTUsLjk5OTU1LDEuMDAwMTYsLjk5OTc4LC45OTk3NCwxLjAwMDE5LDEuMDAwMjIsLjk5OTU1LDEuMDAwNTMsLjk5OTczLDEuMDAwODksMS4wMDAwNSwuOTk5NjcsMS4wMDA0OCwuOTk5NzMsMS4wMDAwMiwxLjAwMDM0LC45OTk3MywuOTk5NzMsLjk5OTY0LDEuMDAwMDYsMS4wMDA2NiwuOTk5NDcsLjk5OTczLC45ODg5NCwuOTk5NzMsMSwuNDQ4OTgsMSwuOTk5NDYsMSwxLjAwMDM5LDEuMDAwODIsLjk5OTkxLC45OTk5MSwuOTk5ODUsMS4wMDAyMiwxLjAwMDIzLDEuMDAwNjEsMS4wMDAwNiwuOTk5NjYsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDAxOSwxLjAwMDgsMSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5ODMsMS4wMDA0NCwuOTk5NzMsLjk5OTY0LC45ODMzMiwxLC45OTk3MywxLDEsLjk5OTYyLC45OTg5NSwxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMSwxLC45OTk3MywxLDEsLjk5OTU1LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDI2NywuOTk5OTksLjk5OTk4LC45OTk5OCwxLC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywxLjAwNDIzLC45OTkyNSwuOTk5OTksMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA0OSwxLDEuMDAyNDUsMSwxLDEsMSwuOTYzMjksMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywuODI1NCwxLjAwMDE1LDEsMS4wMDAzNSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwxLjAwMDAzLDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5IZWx2ZXRpY2FJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzUsbGluZUdhcDouMn07dC5IZWx2ZXRpY2FSZWd1bGFyRmFjdG9ycz1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDQ1OTYsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LDEuMDAwMTksMS4wMDAzNCwxLC45OTkyNCwxLjAwMDAxLDEsMSwuOTk5NzMsLjk5OTI0LC45OTk3MywuOTk5MjQsLjk5OTczLDEuMDI1NzIsLjk5OTczLDEuMDAwMDUsLjk5OTczLC45OTkyNCwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5OTksLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODQ1MzMsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTI4LDEsLjk5OTc3LDEuMDAwMTMsMS4wMDA1NSwuOTk5NDcsLjk5OTQ1LC45OTk0MSwuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNCwuOTE2MjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDUsLjk5OTk5LC45OTk3NywxLjAwMDE1LDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDE5LDEuMDAwMDEsLjk5OTQ2LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTc4LDEuMDAwNDUsLjk5OTczLC45OTkyNCwxLjAwMDIzLC45OTk3OCwuOTk5NjYsMSwxLjAwMDY1LDEuMDAwNDUsMS4wMDAxOSwuOTk5NzMsLjk5OTczLC45OTkyNCwxLDEsLjk2NDk5LDEsMS4wMDA1NSwuOTk5NzMsMS4wMDAwOCwxLjAwMDI3LDEsLjk5OTcsLjk5OTk1LDEuMDAwMjMsLjk5OTMzLDEuMDAwMTksMS4wMDAxNSwxLjAwMDMxLC45OTkyNCwxLjAwMDIzLC45OTk3MywxLjAwMDIzLDEuMDAwMzEsMS4wMDAwMSwuOTk5MjgsMS4wMDAyOSwxLjAwMDkyLDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsLjk5OTg4LC45OTk3NSwxLDEuMDAwODIsLjk5NTYxLC45OTk2LDEuMDAwMzUsMS4wMDAwMSwuOTk5NjIsMS4wMDAwMSwxLjAwMDkyLC45OTk2NCwxLjAwMDAxLC45OTk2MywuOTk5OTksMS4wMDAzNSwxLjAwMDM1LDEuMDAwODIsLjk5OTYyLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDM1LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTYsLjk5OTY3LDEuMDAwMDEsMS4wMDAzNCwxLjAwMDc0LDEuMDAwNTQsMS4wMDA1MywxLjAwMDYzLC45OTk3MSwuOTk5NjIsMS4wMDAzNSwuOTk5NzUsLjk5OTc3LC45OTk3MywxLjAwMDQzLC45OTk1MywxLjAwMDcsLjk5OTE1LC45OTk3MywxLjAwMDA4LC45OTg5MiwxLjAwMDczLDEuMDAwNzMsMS4wMDExNCwuOTk5MTUsMS4wMDA3MywuOTk5NTUsLjk5OTczLDEuMDAwOTIsLjk5OTczLDEsLjk5OTk4LDEsMS4wMDAzLDEsMS4wMDA0MywxLjAwMDAxLC45OTk2OSwxLjAwMDMsMSwxLjAwMDM1LDEuMDAwMDEsLjk5OTUsMSwxLjAwMDkyLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNywuOTk5NSwxLC45OTkyNCwxLjAwMDYsLjk5OTI0LC45OTk3MiwxLjAwMDYyLC45OTk3MywxLjAwMTE0LDEuMDAwNzMsMSwuOTk5NTUsMSwxLDEuMDAwNDcsLjk5OTY4LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwuOTk5MjUsMS4wMDAyMywxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLDEsMSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45NTMxNywuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LkhlbHZldGljYVJlZ3VsYXJNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHM9dC5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nPXQuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHM9dC5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmc9dC5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHM9dC5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nPXQuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljV2lkdGhzPXQuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZz12b2lkIDA7dC5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHM9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3MTksNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4NSw1NTYsNTU2LDI3OCw3MjIsNTU2LDU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM4NSw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDQ2NSw3MjIsMzMzLDg1Myw5MDYsNDc0LDgyNSw5MjcsODM4LDI3OCw3MjIsNzIyLDYwMSw3MTksNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjQ0LDc3OCw3MjIsNjY3LDYwMCw2MTEsNjY3LDgyMSw2NjcsODA5LDgwMiwyNzgsNjY3LDYxNSw0NTEsNjExLDI3OCw1ODIsNjE1LDYxMCw1NTYsNjA2LDQ3NSw0NjAsNjExLDU0MSwyNzgsNTU4LDU1Niw2MTIsNTU2LDQ0NSw2MTEsNzY2LDYxOSw1MjAsNjg0LDQ0Niw1ODIsNzE1LDU3Niw3NTMsODQ1LDI3OCw1ODIsNjExLDU4Miw4NDUsNjY3LDY2OSw4ODUsNTY3LDcxMSw2NjcsMjc4LDI3Niw1NTYsMTA5NCwxMDYyLDg3NSw2MTAsNzIyLDYyMiw3MTksNzIyLDcxOSw3MjIsNTY3LDcxMiw2NjcsOTA0LDYyNiw3MTksNzE5LDYxMCw3MDIsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYyMiw4NTQsNjY3LDczMCw3MDMsMTAwNSwxMDE5LDg3MCw5NzksNzE5LDcxMSwxMDMxLDcxOSw1NTYsNjE4LDYxNSw0MTcsNjM1LDU1Niw3MDksNDk3LDYxNSw2MTUsNTAwLDYzNSw3NDAsNjA0LDYxMSw2MDQsNjExLDU1Niw0OTAsNTU2LDg3NSw1NTYsNjE1LDU4MSw4MzMsODQ0LDcyOSw4NTQsNjE1LDU1Miw4NTQsNTgzLDU1Niw1NTYsNjExLDQxNyw1NTIsNTU2LDI3OCwyODEsMjc4LDk2OSw5MDYsNjExLDUwMCw2MTUsNTU2LDYwNCw3NzgsNjExLDQ4Nyw0NDcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTA5NCw1NTYsODg1LDQ4OSwxMTE1LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM107dC5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXTt0LkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY1dpZHRocz1bMzY1LDAsMzMzLDI3OCwzMzMsNDc0LDU1Niw1NTYsODg5LDcyMiwyMzgsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMzMzLDMzMyw1ODQsNTg0LDU4NCw2MTEsOTc1LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDU1Niw3MjIsNjExLDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMzMzLDI3OCwzMzMsNTg0LDU1NiwzMzMsNTU2LDYxMSw1NTYsNjExLDU1NiwzMzMsNjExLDYxMSwyNzgsMjc4LDU1NiwyNzgsODg5LDYxMSw2MTEsNjExLDYxMSwzODksNTU2LDMzMyw2MTEsNTU2LDc3OCw1NTYsNTU2LDUwMCwzODksMjgwLDM4OSw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyODAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1NTYsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNzIyLDcyMiw3MjIsNzIyLDcyMiw3MjIsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDU0OSw2MTEsNjExLDYxMSw2MTEsNjExLDU1Niw2MTEsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDc0MCw3MjIsNjExLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDcyMiw2MTEsNzIyLDYxMSwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsNzgyLDU1Niw1NTYsMjc4LDcyMiw1NTYsNTU2LDYxMSwyNzgsNjExLDI3OCw2MTEsMzk2LDYxMSw0NzksNjExLDI3OCw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MDgsNzIzLDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSwxZTMsOTQ0LDcyMiwzODksNzIyLDM4OSw3MjIsMzg5LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjExLDMzMyw2MTEsNDc5LDYxMSwzMzMsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsOTQ0LDc3OCw2NjcsNTU2LDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyNzgsNTU2LDcyMiw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1NTYsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDcyMiwzMzMsODU0LDkwNiw0NzMsODQ0LDkzMCw4NDcsMjc4LDcyMiw3MjIsNjEwLDY3MSw2NjcsNjExLDcyMiw3NzgsMjc4LDcyMiw2NjcsODMzLDcyMiw2NTcsNzc4LDcxOCw2NjcsNTkwLDYxMSw2NjcsODIyLDY2Nyw4MjksNzgxLDI3OCw2NjcsNjIwLDQ3OSw2MTEsMjc4LDU5MSw2MjAsNjIxLDU1Niw2MTAsNDc5LDQ5Miw2MTEsNTU4LDI3OCw1NjYsNTU2LDYwMyw1NTYsNDUwLDYxMSw3MTIsNjA1LDUzMiw2NjQsNDA5LDU5MSw3MDQsNTc4LDc3Myw4MzQsMjc4LDU5MSw2MTEsNTkxLDgzNCw2NjcsNjY3LDg4Niw2MTQsNzE5LDY2NywyNzgsMjc4LDU1NiwxMDk0LDEwNDIsODU0LDYyMiw3MTksNjc3LDcxOSw3MjIsNzA4LDcyMiw2MTQsNzIyLDY2Nyw5MjcsNjQzLDcxOSw3MTksNjE1LDY4Nyw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjc3LDc4MSw2NjcsNzI5LDcwOCw5NzksOTg5LDg1NCwxZTMsNzA4LDcxOSwxMDQyLDcyOSw1NTYsNjE5LDYwNCw1MzQsNjE4LDU1Niw3MzYsNTEwLDYxMSw2MTEsNTA3LDYyMiw3NDAsNjA0LDYxMSw2MTEsNjExLDU1Niw4ODksNTU2LDg4NSw1NTYsNjQ2LDU4Myw4ODksOTM1LDcwNyw4NTQsNTk0LDU1Miw4NjUsNTg5LDU1Niw1NTYsNjExLDQ2OSw1NjMsNTU2LDI3OCwyNzgsMjc4LDk2OSw5MDYsNjExLDUwNyw2MTksNTU2LDYxMSw3NzgsNjExLDU3NSw0NjcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTEwNCw1NTYsODg1LDUxNiwxMTQ2LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCw5OTksNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM107dC5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXTt0LkxpYmVyYXRpb25TYW5zSXRhbGljV2lkdGhzPVszNjUsMCwzMzMsMjc4LDI3OCwzNTUsNTU2LDU1Niw4ODksNjY3LDE5MSwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDU4NCw1ODQsNTg0LDU1NiwxMDE1LDY2Nyw2NjcsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDUwMCw2NjcsNTU2LDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMjc4LDI3OCwyNzgsNDY5LDU1NiwzMzMsNTU2LDU1Niw1MDAsNTU2LDU1NiwyNzgsNTU2LDU1NiwyMjIsMjIyLDUwMCwyMjIsODMzLDU1Niw1NTYsNTU2LDU1NiwzMzMsNTAwLDI3OCw1NTYsNTAwLDcyMiw1MDAsNTAwLDUwMCwzMzQsMjYwLDMzNCw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyNjAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1MzcsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNjY3LDY2Nyw2NjcsNjY3LDY2Nyw2NjcsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTAwLDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU0OSw2MTEsNTU2LDU1Niw1NTYsNTU2LDUwMCw1NTYsNTAwLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDYyNSw3MjIsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDcyMiw1NTYsNzIyLDU1NiwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjIyLDI3OCwyNzgsNzMzLDQ0NCw1MDAsMjIyLDY2Nyw1MDAsNTAwLDU1NiwyMjIsNTU2LDIyMiw1NTYsMjgxLDU1Niw0MDAsNTU2LDIyMiw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw2MTUsNzIzLDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1NiwxZTMsOTQ0LDcyMiwzMzMsNzIyLDMzMyw3MjIsMzMzLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjExLDI3OCw2MTEsMzU0LDYxMSwyNzgsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsOTQ0LDcyMiw2NjcsNTAwLDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyMjIsNTU2LDY2Nyw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1MDAsNjExLDI3OCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDY2NywyNzgsNzg5LDg0NiwzODksNzk0LDg2NSw3NzUsMjIyLDY2Nyw2NjcsNTcwLDY3MSw2NjcsNjExLDcyMiw3NzgsMjc4LDY2Nyw2NjcsODMzLDcyMiw2NDgsNzc4LDcyNSw2NjcsNjAwLDYxMSw2NjcsODM3LDY2Nyw4MzEsNzYxLDI3OCw2NjcsNTcwLDQzOSw1NTUsMjIyLDU1MCw1NzAsNTcxLDUwMCw1NTYsNDM5LDQ2Myw1NTUsNTQyLDIyMiw1MDAsNDkyLDU0OCw1MDAsNDQ3LDU1Niw2NzAsNTczLDQ4Niw2MDMsMzc0LDU1MCw2NTIsNTQ2LDcyOCw3NzksMjIyLDU1MCw1NTYsNTUwLDc3OSw2NjcsNjY3LDg0Myw1NDQsNzA4LDY2NywyNzgsMjc4LDUwMCwxMDY2LDk4Miw4NDQsNTg5LDcxNSw2MzksNzI0LDY2Nyw2NTEsNjY3LDU0NCw3MDQsNjY3LDkxNyw2MTQsNzE1LDcxNSw1ODksNjg2LDgzMyw3MjIsNzc4LDcyNSw2NjcsNzIyLDYxMSw2MzksNzk1LDY2Nyw3MjcsNjczLDkyMCw5MjMsODA1LDg4Niw2NTEsNjk0LDEwMjIsNjgyLDU1Niw1NjIsNTIyLDQ5Myw1NTMsNTU2LDY4OCw0NjUsNTU2LDU1Niw0NzIsNTY0LDY4Niw1NTAsNTU2LDU1Niw1NTYsNTAwLDgzMyw1MDAsODM1LDUwMCw1NzIsNTE4LDgzMCw4NTEsNjIxLDczNiw1MjYsNDkyLDc1Miw1MzQsNTU2LDU1Niw1NTYsMzc4LDQ5Niw1MDAsMjIyLDIyMiwyMjIsOTEwLDgyOCw1NTYsNDcyLDU2NSw1MDAsNTU2LDc3OCw1NTYsNDkyLDMzOSw5NDQsNzIyLDk0NCw3MjIsOTQ0LDcyMiw2NjcsNTAwLDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDIyMiwyMjIsMjIyLDIyMiwzMzMsMzMzLDMzMyw1NTYsNTU2LDM1MCwxZTMsMWUzLDE4OCwzNTQsMzMzLDMzMyw1MDAsMzMzLDE2NywzNjUsNTU2LDU1NiwxMDk0LDU1Niw4ODUsMzIzLDEwODMsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsOTk4LDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcxOSwyNzQsNTQ5LDU0OSw1ODQsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw1MDAsNTAwLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwyOTQsMjk0LDMyNCwzMjQsMzE2LDMyOCwzOTgsMjg1XTt0LkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZz1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV07dC5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHM9WzM2NSwwLDMzMywyNzgsMjc4LDM1NSw1NTYsNTU2LDg4OSw2NjcsMTkxLDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsNTg0LDU4NCw1ODQsNTU2LDEwMTUsNjY3LDY2Nyw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTAwLDY2Nyw1NTYsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwyNzgsMjc4LDI3OCw0NjksNTU2LDMzMyw1NTYsNTU2LDUwMCw1NTYsNTU2LDI3OCw1NTYsNTU2LDIyMiwyMjIsNTAwLDIyMiw4MzMsNTU2LDU1Niw1NTYsNTU2LDMzMyw1MDAsMjc4LDU1Niw1MDAsNzIyLDUwMCw1MDAsNTAwLDMzNCwyNjAsMzM0LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI2MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDUzNywyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw2NjcsNjY3LDY2Nyw2NjcsNjY3LDY2NywxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1MDAsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTQ5LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTAwLDU1Niw1MDAsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNjE1LDcyMiw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzIyLDU1Niw3MjIsNTU2LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyMjIsMjc4LDI3OCw3MzUsNDQ0LDUwMCwyMjIsNjY3LDUwMCw1MDAsNTU2LDIyMiw1NTYsMjIyLDU1NiwyOTIsNTU2LDMzNCw1NTYsMjIyLDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDYwNCw3MjMsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDFlMyw5NDQsNzIyLDMzMyw3MjIsMzMzLDcyMiwzMzMsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2MTEsMjc4LDYxMSwzNzUsNjExLDI3OCw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw5NDQsNzIyLDY2Nyw1MDAsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDIyMiw1NTYsNjY3LDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDUwMCw2MTEsMjc4LDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNjY3LDI3OCw3ODQsODM4LDM4NCw3NzQsODU1LDc1MiwyMjIsNjY3LDY2Nyw1NTEsNjY4LDY2Nyw2MTEsNzIyLDc3OCwyNzgsNjY3LDY2OCw4MzMsNzIyLDY1MCw3NzgsNzIyLDY2Nyw2MTgsNjExLDY2Nyw3OTgsNjY3LDgzNSw3NDgsMjc4LDY2Nyw1NzgsNDQ2LDU1NiwyMjIsNTQ3LDU3OCw1NzUsNTAwLDU1Nyw0NDYsNDQxLDU1Niw1NTYsMjIyLDUwMCw1MDAsNTc2LDUwMCw0NDgsNTU2LDY5MCw1NjksNDgyLDYxNywzOTUsNTQ3LDY0OCw1MjUsNzEzLDc4MSwyMjIsNTQ3LDU1Niw1NDcsNzgxLDY2Nyw2NjcsODY1LDU0Miw3MTksNjY3LDI3OCwyNzgsNTAwLDEwNTcsMTAxMCw4NTQsNTgzLDcyMiw2MzUsNzE5LDY2Nyw2NTYsNjY3LDU0Miw2NzcsNjY3LDkyMyw2MDQsNzE5LDcxOSw1ODMsNjU2LDgzMyw3MjIsNzc4LDcxOSw2NjcsNzIyLDYxMSw2MzUsNzYwLDY2Nyw3NDAsNjY3LDkxNyw5MzgsNzkyLDg4NSw2NTYsNzE5LDEwMTAsNzIyLDU1Niw1NzMsNTMxLDM2NSw1ODMsNTU2LDY2OSw0NTgsNTU5LDU1OSw0MzgsNTgzLDY4OCw1NTIsNTU2LDU0Miw1NTYsNTAwLDQ1OCw1MDAsODIzLDUwMCw1NzMsNTIxLDgwMiw4MjMsNjI1LDcxOSw1MjEsNTEwLDc1MCw1NDIsNTU2LDU1Niw1NTYsMzY1LDUxMCw1MDAsMjIyLDI3OCwyMjIsOTA2LDgxMiw1NTYsNDM4LDU1OSw1MDAsNTUyLDc3OCw1NTYsNDg5LDQxMSw5NDQsNzIyLDk0NCw3MjIsOTQ0LDcyMiw2NjcsNTAwLDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDIyMiwyMjIsMjIyLDIyMiwzMzMsMzMzLDMzMyw1NTYsNTU2LDM1MCwxZTMsMWUzLDE4OCwzNTQsMzMzLDMzMyw1MDAsMzMzLDE2NywzNjUsNTU2LDU1NiwxMDk0LDU1Niw4ODUsMzIzLDEwNzMsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcxOSwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw1MDAsNTAwLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwyOTQsMjk0LDMyNCwzMjQsMzE2LDMyOCwzOTgsMjg1XTt0LkxpYmVyYXRpb25TYW5zUmVndWxhck1hcHBpbmc9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdfSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk15cmlhZFByb1JlZ3VsYXJNZXRyaWNzPXQuTXlyaWFkUHJvUmVndWxhckZhY3RvcnM9dC5NeXJpYWRQcm9JdGFsaWNNZXRyaWNzPXQuTXlyaWFkUHJvSXRhbGljRmFjdG9ycz10Lk15cmlhZFByb0JvbGRNZXRyaWNzPXQuTXlyaWFkUHJvQm9sZEl0YWxpY01ldHJpY3M9dC5NeXJpYWRQcm9Cb2xkSXRhbGljRmFjdG9ycz10Lk15cmlhZFByb0JvbGRGYWN0b3JzPXZvaWQgMDt0Lk15cmlhZFByb0JvbGRGYWN0b3JzPVsxLjM2ODk4LDEsMSwuNzI3MDYsLjgwNDc5LC44MzczNCwuOTg4OTQsLjk5NzkzLC45ODk3LC45Mzg4NCwuODYyMDksLjk0MjkyLC45NDI5MiwxLjE2NjYxLDEuMDIwNTgsLjkzNTgyLC45NjY5NCwuOTM1ODIsMS4xOTEzNywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjc4MDc2LC43ODA3NiwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzI4NTEsLjc4OTY2LC45MDgzOCwuODM2MzcsLjgyMzkxLC45NjM3NiwuODAwNjEsLjg2Mjc1LC44NzY4LC45NTQwNywxLjAyNTgsLjczOTAxLC44NTAyMiwuODM2NTUsMS4wMTU2LC45NTU0NiwuOTIxNzksLjg3MTA3LC45MjE3OSwuODIxMTQsLjgwOTYsLjg5NzEzLC45NDQzOCwuOTUzNTMsLjk0MDgzLC45MTkwNSwuOTA0MDYsLjk0NDYsLjk0MjkyLDEuMTg3NzcsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLC45MDA4OCwuOTQ5MzgsLjk3ODk4LC44MTA5MywuOTc1NzEsLjk0OTM4LDEuMDI0LC45NTc3LC45NTkzMywuOTg2MjEsMS4wNDc0LC45NzQ1NSwuOTg5ODEsLjk2NzIsLjk1OTMzLC45NDQ2LC45Nzg5OCwuOTc0MDcsLjk3NjQ2LC43ODAzNiwxLjEwMjA4LC45NTQ0MiwuOTUyOTgsLjk3NTc5LC45MzMyLC45NDAzOSwuOTM4LC44MDY4NywxLjAxMTQ5LC44MDY4NywxLjAyMDU4LC44MDQ3OSwuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsMS4wMTE0OSwxLjAwODcyLC45MDA4OCwuOTE4ODIsMS4wMjEzLC44MzYxLDEuMDIwNTgsLjYyMjk1LC41NDMyNCwuODkwMjIsMS4wODU5NSwxLDEsLjkwMDg4LDEsLjk3NDU1LC45MzU4MiwuOTAwODgsMSwxLjA1Njg2LC44MzYxLC45OTY0MiwuOTk2NDIsLjk5NjQyLC43Mjg1MSwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuODY4LC44MjM5MSwuODAwNjEsLjgwMDYxLC44MDA2MSwuODAwNjEsMS4wMjU4LDEuMDI1OCwxLjAyNTgsMS4wMjU4LC45NzQ4NCwuOTU1NDYsLjkyMTc5LC45MjE3OSwuOTIxNzksLjkyMTc5LC45MjE3OSwxLjAyMDU4LC45MjE3OSwuOTQ0MzgsLjk0NDM4LC45NDQzOCwuOTQ0MzgsLjkwNDA2LC44Njk1OCwuOTgyMjUsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjkwMzEsLjgxMDkzLC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjkzOTY5LC45NTkzMywuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwxLjA4NTk1LC45NDQ2LC45NTQ0MiwuOTU0NDIsLjk1NDQyLC45NTQ0MiwuOTQwMzksLjk3ODk4LC45NDAzOSwuOTA4MzgsLjk0OTM4LC45MDgzOCwuOTQ5MzgsLjkwODM4LC45NDkzOCwuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC45NjM3NiwuODQzMTMsLjk3NDg0LC45NzU3MSwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsMSwxLC45NTQwNywuOTU5MzMsLjk3MDY5LC45NTkzMywxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsLjg4NywxLjAxNTkxLC43MzkwMSwxLjA0NzQsMSwxLC45NzQ1NSwuODM2NTUsLjk4OTgxLDEsMSwuODM2NTUsLjczOTc3LC44MzY1NSwuNzM5MDMsLjg0NjM4LDEuMDMzLC45NTU0NiwuOTU5MzMsMSwxLC45NTU0NiwuOTU5MzMsLjgyNzEsLjk1NDE3LC45NTkzMywuOTIxNzksLjk0NDYsLjkyMTc5LC45NDQ2LC45MjE3OSwuOTQ0NiwuOTM2LC45MTk2NCwuODIxMTQsLjk3NjQ2LDEsMSwuODIxMTQsLjk3NjQ2LC44MDk2LC43ODAzNiwuODA5NiwuNzgwMzYsMSwxLC44MDk2LC43ODAzNiwxLDEsLjg5NzEzLC43NzQ1MiwuODk3MTMsMS4xMDIwOCwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjkwNDA2LC45NDQ2LC45MzgsLjk0NDYsLjkzOCwuOTQ0NiwuOTM4LDEsLjk5NzkzLC45MDgzOCwuOTQ5MzgsLjg2OCwuOTAzMSwuOTIxNzksLjk0NDYsMSwxLC44OTcxMywxLjEwMjA4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDk4OSwuOTM1OCwuOTE5NDUsLjgzMTgxLC43NTI2MSwuODc5OTIsLjgyOTc2LC45NjAzNCwuODM2ODksLjk3MjY4LDEuMDA3OCwuOTA4MzgsLjgzNjM3LC44MDE5LC45MDE1NywuODAwNjEsLjk0NDYsLjk1NDA3LC45MjQzNiwxLjAyNTgsLjg1MDIyLC45NzE1MywxLjAxNTYsLjk1NTQ2LC44OTE5MiwuOTIxNzksLjkyMzYxLC44NzEwNywuOTYzMTgsLjg5NzEzLC45MzcwNCwuOTU2MzgsLjkxOTA1LC45MTcwOSwuOTI3OTYsMS4wMjU4LC45MzcwNCwuOTQ4MzYsMS4wMzczLC45NTkzMywxLjAwNzgsLjk1ODcxLC45NDgzNiwuOTYxNzQsLjkyNjAxLC45NDk4LC45ODYwNywuOTU3NzYsLjk1OTMzLDEuMDU0NTMsMS4wMDc4LC45ODI3NSwuOTMxNCwuOTU2MTcsLjkxNzAxLDEuMDU5OTMsLjk0NDYsLjc4MzY3LC45NTUzLDEsLjg2ODMyLDEuMDEyOCwuOTU4NzEsLjk5Mzk0LC44NzU0OCwuOTYzNjEsLjg2Nzc0LDEuMDA3OCwuOTU4NzEsLjk0NDYsLjk1ODcxLC44Njc3NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDA4MywuOTc1NzksLjk0MDgzLC45NzU3OSwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjk2Njk0LDEsLjg5OTAzLDEsMSwxLC45MzU4MiwuOTM1ODIsLjkzNTgyLDEsLjkwOCwuOTA4LC45MTgsLjk0MjE5LC45NDIxOSwuOTY1NDQsMSwxLjI4NSwxLDEsLjgxMDc5LC44MTA3OSwxLDEsLjc0ODU0LDEsMSwxLDEsLjk5NzkzLDEsMSwxLC42NSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTcxNzMsMSwuODA1MzUsLjc2MTY5LDEuMDIwNTgsMS4wNzMyLDEuMDU0ODYsMSwxLDEuMzA2OTIsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNjE2MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0Lk15cmlhZFByb0JvbGRNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfTt0Lk15cmlhZFByb0JvbGRJdGFsaWNGYWN0b3JzPVsxLjM2ODk4LDEsMSwuNjYyMjcsLjgwNzc5LC44MTYyNSwuOTcyNzYsLjk3Mjc2LC45NzczMywuOTIyMjIsLjgzMjY2LC45NDI5MiwuOTQyOTIsMS4xNjE0OCwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTczMzcsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcxNTQxLC43NjgxMywuODU1NzYsLjgwNTkxLC44MDcyOSwuOTQyOTksLjc3NTEyLC44MzY1NSwuODY1MjMsLjkyMjIyLC45ODYyMSwuNzE3NDMsLjgxNjk4LC43OTcyNiwuOTg1NTgsLjkyMjIyLC45MDYzNywuODM4MDksLjkwNjM3LC44MDcyOSwuNzY0NjMsLjg2Mjc1LC45MDY5OSwuOTE2MDUsLjkxNTQsLjg1MzA4LC44NTQ1OCwuOTA1MzEsLjk0MjkyLDEuMjEyOTYsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLDEuMTg2MTYsLjk5NjEzLC45MTY3NywuNzgyMTYsLjkxNjc3LC45MDA4MywuOTg3OTYsLjkxMzUsLjkyMTY4LC45NTM4MSwuOTg5ODEsLjk1Mjk4LC45NTM4MSwuOTM0NTksLjkyMTY4LC45MTUxMywuOTIwMDQsLjkxNjc3LC45NTA3NywuNzQ4LDEuMDQ1MDIsLjkxNjc3LC45MjA2MSwuOTQyMzYsLjg5NTQ0LC44OTM2NCwuOSwuODA2ODcsLjg1NzgsLjgwNjg3LDEuMDIwNTgsLjgwNzc5LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuODU3OCwuOTk5NzMsMS4xODYxNiwuOTEzMzksMS4wODA3NCwuODI4OTEsMS4wMjA1OCwuNTU1MDksLjcxNTI2LC44OTAyMiwxLjA4NTk1LDEsMSwxLjE4NjE2LDEsLjk2NzM2LC45MzU4MiwxLjE4NjE2LDEsMS4wNDg2NCwuODI3MTEsLjk5MDQzLC45OTA0MywuOTkwNDMsLjcxNTQxLC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NDUsLjgwNzI5LC43NzUxMiwuNzc1MTIsLjc3NTEyLC43NzUxMiwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk1OTYxLC45MjIyMiwuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsLjkwNjM3LDEuMDIwNTgsLjkwMjUxLC45MDY5OSwuOTA2OTksLjkwNjk5LC45MDY5OSwuODU0NTgsLjgzNjU5LC45NDk1MSwuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuODU4MTEsLjc4MjE2LC45MDA4MywuOTAwODMsLjkwMDgzLC45MDA4MywuOTUzODEsLjk1MzgxLC45NTM4MSwuOTUzODEsLjkxMzUsLjkyMTY4LC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywuOTE1MTMsMS4wODU5NSwuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjkxNjc3LC44OTM2NCwuOTIzMzIsLjg5MzY0LC44NTU3NiwuOTk2MTMsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjk0Mjk5LC43Njc4MywuOTU5NjEsLjkxNjc3LC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LC44NjUyMywuOTEzNSwxLDEsLjkyMjIyLC45MjE2OCwuOTIyMjIsLjkyMTY4LC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuODYwMzYsLjk3MDk2LC43MTc0MywuOTg5ODEsMSwxLC45NTI5OCwuNzk3MjYsLjk1MzgxLDEsMSwuNzk3MjYsLjY4OTQsLjc5NzI2LC43NDMyMSwuODE2OTEsMS4wMDA2LC45MjIyMiwuOTIxNjgsMSwxLC45MjIyMiwuOTIxNjgsLjc5NDY0LC45MjA5OCwuOTIxNjgsLjkwNjM3LC45MTUxMywuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwOSwuODc1MTQsLjgwNzI5LC45NTA3NywxLDEsLjgwNzI5LC45NTA3NywuNzY0NjMsLjc0OCwuNzY0NjMsLjc0OCwxLDEsLjc2NDYzLC43NDgsMSwxLC44NjI3NSwuNzI2NTEsLjg2Mjc1LDEuMDQ1MDIsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkxNTQsLjk0MjM2LC44NTQ1OCwuODkzNjQsLjg1NDU4LC45MDUzMSwuOSwuOTA1MzEsLjksLjkwNTMxLC45LDEsLjk3Mjc2LC44NTU3NiwuOTk2MTMsLjg0NSwuODU4MTEsLjkwMjUxLC45MTY3NywxLDEsLjg2Mjc1LDEuMDQ1MDIsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4wMDg5OSwxLjMwNjI4LC44NTU3NiwuODAxNzgsLjY2ODYyLC43OTI3LC42OTMyMywuODgxMjcsLjcyNDU5LC44OTcxMSwuOTUzODEsLjg1NTc2LC44MDU5MSwuNzgwNSwuOTQ3MjksLjc3NTEyLC45MDUzMSwuOTIyMjIsLjkwNjM3LC45ODYyMSwuODE2OTgsLjkyNjU1LC45ODU1OCwuOTIyMjIsLjg1MzU5LC45MDYzNywuOTA5NzYsLjgzODA5LC45NDUyMywuODYyNzUsLjgzNTA5LC45MzE1NywuODUzMDgsLjgzMzkyLC45MjM0NiwuOTg2MjEsLjgzNTA5LC45Mjg4NiwuOTEzMjQsLjkyMTY4LC45NTM4MSwuOTA2NDYsLjkyODg2LC45MDU1NywuODY4NDcsLjkwMjc2LC45MTMyNCwuODY4NDIsLjkyMTY4LC45OTUzMSwuOTUzODEsLjkyMjQsLjg1NDA4LC45MjY5OSwuODY4NDcsMS4wMDUxLC45MTUxMywuODA0ODcsLjkzNDgxLDEsLjg4MTU5LDEuMDUyMTQsLjkwNjQ2LC45NzM1NSwuODE1MzksLjg5Mzk4LC44NTkyMywuOTUzODEsLjkwNjQ2LC45MTUxMywuOTA2NDYsLjg1OTIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuOTY2OTQsMSwuODk5MDMsMSwxLDEsLjkxNzgyLC45MTc4MiwuOTE3ODIsMSwuODk2LC44OTYsLjg5NiwuOTMzMiwuOTMzMiwuOTU5NzMsMSwxLjI2LDEsMSwuODA0NzksLjgwMTc4LDEsMSwuODU2MzMsMSwxLDEsMSwuOTcyNzYsMSwxLDEsLjY5OCwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTQ1NDIsMSwuNzkxOTksLjc4Njk0LDEuMDIwNTgsMS4wMzQ5MywxLjA1NDg2LDEsMSwxLjIzMDI2LDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMjAwMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5NeXJpYWRQcm9Cb2xkSXRhbGljTWV0cmljcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn07dC5NeXJpYWRQcm9JdGFsaWNGYWN0b3JzPVsxLjM2ODk4LDEsMSwuNjU1MDcsLjg0OTQzLC44NTYzOSwuODg0NjUsLjg4NDY1LC44NjkzNiwuODgzMDcsLjg2OTQ4LC44NTI4MywuODUyODMsMS4wNjM4MywxLjAyMDU4LC43NTk0NSwuOTIxOSwuNzU5NDUsMS4xNzMzNywuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjc1OTQ1LC43NTk0NSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNjkwNDYsLjcwOTI2LC44NTE1OCwuNzc4MTIsLjc2ODUyLC44OTU5MSwuNzA0NjYsLjc2MTI1LC44MDA5NCwuODY4MjIsLjgzODY0LC43MjgsLjc3MjEyLC43OTQ3NSwuOTM2MzcsLjg3NTE0LC44NTg4LC43NjAxMywuODU4OCwuNzI0MjEsLjY5ODY2LC43NzU5OCwuODU5OTEsLjgwODExLC44NzgzMiwuNzgxMTIsLjc3NTEyLC44NTYyLDEuMDIyMiwxLjE4NDE3LDEuMDIyMiwxLjI3MDE0LC44OTkwMywxLjE1MDEyLC45Mzg1OSwuOTQzOTksLjg0NiwuOTQzOTksLjgxNDUzLDEuMDE4NiwuOTQyMTksLjk2MDE3LDEuMDMwNzUsMS4wMjE3NSwuOTEyLDEuMDMwNzUsLjk2OTk4LC45NjAxNywuOTM4NTksLjk0Mzk5LC45NDM5OSwuOTU0OTMsLjc0NiwxLjEyNjU4LC45NDU3OCwuOTEsLjk3OSwuODgyLC44ODIsLjgzLC44NTAzNCwuODM1MzcsLjg1MDM0LDEuMDIwNTgsLjcwODY5LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODM1MzcsLjkwMDgzLDEuMTUwMTIsLjkxNjEsLjk0NTY1LC43MzU0MSwxLjAyMDU4LC41MzYwOSwuNjkzNTMsLjc5NTE5LDEuMDg1OTUsMSwxLDEuMTUwMTIsMSwuOTE5NzQsLjc1OTQ1LDEuMTUwMTIsMSwuOTQ0NiwuNzMzNjEsLjkwMDUsLjkwMDUsLjkwMDUsLjYyODY0LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC43NzMsLjc2ODUyLC43MDQ2NiwuNzA0NjYsLjcwNDY2LC43MDQ2NiwuODM4NjQsLjgzODY0LC44Mzg2NCwuODM4NjQsLjkwNTYxLC44NzUxNCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwxLjAyMDU4LC44NTc1MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuODU5OTEsLjc3NTEyLC43NjAxMywuODgwNzUsLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjgwNzUsLjg0NiwuODE0NTMsLjgxNDUzLC44MTQ1MywuODE0NTMsLjgyNDI0LC44MjQyNCwuODI0MjQsLjgyNDI0LC45Mjc4LC45NjAxNywuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LDEuMDg1OTUsLjg1NjIsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjk0NTc4LC44ODIsLjk0NTc4LC44ODIsLjg1MTU4LC45Mzg1OSwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjg5NTkxLC44NTQ0LC45MDU2MSwuOTQzOTksLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC44MDA5NCwuOTQyMTksLjgwMDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LDEsMSwuODY4MjIsLjk2MDE3LC44NjgyMiwuOTYwMTcsLjgzODY0LC44MjQyNCwuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LDEuMDMwNzUsLjgzODY0LC44MjQyNCwuODE0MDIsMS4wMjczOCwuNzI4LDEuMDIxNzUsMSwxLC45MTIsLjc5NDc1LDEuMDMwNzUsMSwxLC43OTQ3NSwuODM5MTEsLjc5NDc1LC42NjI2NiwuODA1NTMsMS4wNjY3NiwuODc1MTQsLjk2MDE3LDEsMSwuODc1MTQsLjk2MDE3LC44Njg2NSwuODczOTYsLjk2MDE3LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg1ODgsLjkzODU5LC44NjcsLjg0NzU5LC43MjQyMSwuOTU0OTMsMSwxLC43MjQyMSwuOTU0OTMsLjY5ODY2LC43NDYsLjY5ODY2LC43NDYsMSwxLC42OTg2NiwuNzQ2LDEsMSwuNzc1OTgsLjg4NDE3LC43NzU5OCwxLjEyNjU4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NzgzMiwuOTc5LC43NzUxMiwuODgyLC43NzUxMiwuODU2MiwuODMsLjg1NjIsLjgzLC44NTYyLC44MywxLC44ODQ2NSwuODUxNTgsLjkzODU5LC43NzMsLjgwNzUsLjg1NzUxLC44NTYyLDEsMSwuNzc1OTgsMS4xMjY1OCwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTMxMywxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjA4MTA2LDEuMDM5MDEsLjg1MTU4LC43NzAyNSwuNjIyNjQsLjc2NDYsLjY1MzUxLC44NjAyNiwuNjk0NjEsLjg5OTQ3LDEuMDMwNzUsLjg1MTU4LC43NzgxMiwuNzY0NDksLjg4ODM2LC43MDQ2NiwuODU2MiwuODY4MjIsLjg1ODgsLjgzODY0LC43NzIxMiwuODUzMDgsLjkzNjM3LC44NzUxNCwuODIzNTIsLjg1ODgsLjg1NzAxLC43NjAxMywuODkwNTgsLjc3NTk4LC44MTU2LC44MjU2NSwuNzgxMTIsLjc3ODk5LC44OTM4NiwuODM4NjQsLjgxNTYsLjk0ODYsLjkyMzg4LC45NjE4NiwxLjAzMDc1LC45MTEyMywuOTQ4NiwuOTMyOTgsLjg3OCwuOTM5NDIsLjkyMzg4LC44NDU5NiwuOTYxODYsLjk1MTE5LDEuMDMwNzUsLjkyMiwuODg3ODcsLjk1ODI5LC44OCwuOTM1NTksLjkzODU5LC43ODgxNSwuOTM3NTgsMSwuODkyMTcsMS4wMzczNywuOTExMjMsLjkzOTY5LC43NzQ4NywuODU3NjksLjg2Nzk5LDEuMDMwNzUsLjkxMTIzLC45Mzg1OSwuOTExMjMsLjg2Nzk5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjg3MzIxLC44NzMyMSwuODczMjEsMSwxLjAyNywxLjAyNywxLjAyNywuODY4NDcsLjg2ODQ3LC43OTEyMSwxLDEuMTI0LDEsMSwuNzM1NzIsLjczNTcyLDEsMSwuODUwMzQsMSwxLDEsMSwuODg0NjUsMSwxLDEsLjY2OSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQ4MjgsMSwuNzQ5NDgsLjc1MTg3LDEuMDIwNTgsLjk4MzkxLDEuMDIxMTksMSwxLDEuMDYyMzMsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTIzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0Lk15cmlhZFByb0l0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9O3QuTXlyaWFkUHJvUmVndWxhckZhY3RvcnM9WzEuMzY4OTgsMSwxLC43NjMwNSwuODI3ODQsLjk0OTM1LC44OTM2NCwuOTIyNDEsLjg5MDczLC45MDcwNiwuOTg0NzIsLjg1MjgzLC44NTI4MywxLjA2NjQsMS4wMjA1OCwuNzQ1MDUsLjkyMTksLjc0NTA1LDEuMjM0NTYsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC43NDUwNSwuNzQ1MDUsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjczMDAyLC43MjYwMSwuOTE3NTUsLjgxMjYsLjgwMzE0LC45MjIyMiwuNzM3NjQsLjc5NzI2LC44MzA1MSwuOTAyODQsLjg2MDIzLC43NCwuODEyNiwuODQ4NjksLjk2NTE4LC45MTExNSwuODg1OCwuNzk3NjEsLjg4NTgsLjc0NDk4LC43MzkxNCwuODEzNjMsLjg5NTkxLC44MzY1OSwuODk2MzMsLjg1NjA4LC44MTExLC45MDUzMSwxLjAyMjIsMS4yMjczNiwxLjAyMjIsMS4yNzAxNCwuODk5MDMsLjkwMDg4LC44NjY2NywxLjAyMzEsLjg5NiwxLjAxNDExLC45MDA4MywxLjA1MDk5LDEuMDA1MTIsLjk5NzkzLDEuMDUzMjYsMS4wOTM3NywuOTM4LDEuMDYyMjYsMS4wMDExOSwuOTk3OTMsLjk4NzE0LDEuMDIzMSwxLjAxMjMxLC45ODE5NiwuNzkyLDEuMTkxMzcsLjk5MDc0LC45NjIsMS4wMTkxNSwuOTI2LC45NDIsLjg1NiwuODUwMzQsLjkyMDA2LC44NTAzNCwxLjAyMDU4LC42OTA2NywuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMDA2LC45MzMyLC45MDA4OCwuOTE4ODIsLjkzNDg0LC43NTMzOSwxLjAyMDU4LC41Njg2NiwuNTQzMjQsLjc5NTE5LDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NTMyNSwuNzQ1MDUsLjkwMDg4LDEsLjk3MTk4LC43NTMzOSwuOTEwMDksLjkxMDA5LC45MTAwOSwuNjY0NjYsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjc4OCwuODAzMTQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjczNzY0LC44NjAyMywuODYwMjMsLjg2MDIzLC44NjAyMywuOTI5MTUsLjkxMTE1LC44ODU4LC44ODU4LC44ODU4LC44ODU4LC44ODU4LDEuMDIwNTgsLjg4NTgsLjg5NTkxLC44OTU5MSwuODk1OTEsLjg5NTkxLC44MTExLC43OTYxMSwuODk3MTMsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2OTM2LC44OTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC44NDIyNCwuODQyMjQsLjg0MjI0LC44NDIyNCwuOTcyNzYsLjk5NzkzLC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwuOTg3MTQsMS4wODU5NSwuODk4NzYsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk5MDc0LC45NDIsMS4wMjMxLC45NDIsLjkxNzU1LC44NjY2NywuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjkyMjIyLC45MzM3MiwuOTI5MTUsMS4wMTQxMSwuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsMSwxLC45MDI4NCwuOTk3OTMsLjkwOTc2LC45OTc5MywuODYwMjMsLjg0MjI0LC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsMS4wNTMyNiwuODYwMjMsLjg0MjI0LC44Mjg3MywxLjA3NDY5LC43NCwxLjA5Mzc3LDEsMSwuOTM4LC44NDg2OSwxLjA2MjI2LDEsMSwuODQ4NjksLjgzNzA0LC44NDg2OSwuODE0NDEsLjg1NTg4LDEuMDg5MjcsLjkxMTE1LC45OTc5MywxLDEsLjkxMTE1LC45OTc5MywuOTE4ODcsLjkwOTkxLC45OTc5MywuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44ODU4LC45ODcxNCwuODk0LC45MTQzNCwuNzQ0OTgsLjk4MTk2LDEsMSwuNzQ0OTgsLjk4MTk2LC43MzkxNCwuNzkyLC43MzkxNCwuNzkyLDEsMSwuNzM5MTQsLjc5MiwxLDEsLjgxMzYzLC45MDQsLjgxMzYzLDEuMTkxMzcsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NjMzLDEuMDE5MTUsLjgxMTEsLjk0MiwuODExMSwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwxLC45MjI0MSwuOTE3NTUsLjg2NjY3LC43ODgsLjg2OTM2LC44ODU4LC44OTg3NiwxLDEsLjgxMzYzLDEuMTkxMzcsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMzg4LDEuMDM5MDEsLjkyMTM4LC43ODEwNSwuNzE1NCwuODYxNjksLjgwNTEzLC45NDAwNywuODI1MjgsLjk4NjEyLDEuMDYyMjYsLjkxNzU1LC44MTI2LC44MTg4NCwuOTI4MTksLjczNzY0LC45MDUzMSwuOTAyODQsLjg4NTgsLjg2MDIzLC44MTI2LC45MTE3MiwuOTY1MTgsLjkxMTE1LC44MzA4OSwuODg1OCwuODc3OTEsLjc5NzYxLC44OTI5NywuODEzNjMsLjg4MTU3LC44OTk5MiwuODU2MDgsLjgxOTkyLC45NDMwNywuODYwMjMsLjg4MTU3LC45NTMwOCwuOTg2OTksLjk5NzkzLDEuMDYyMjYsLjk1ODE3LC45NTMwOCwuOTczNTgsLjkyOCwuOTgwODgsLjk4Njk5LC45Mjc2MSwuOTk3OTMsLjk2MDE3LDEuMDYyMjYsLjk4NiwuOTQ0LC45NTk3OCwuOTM4LC45NjcwNSwuOTg3MTQsLjgwNDQyLC45ODk3MiwxLC44OTc2MiwxLjA0NTUyLC45NTgxNywuOTkwMDcsLjg3MDY0LC45MTg3OSwuODg4ODgsMS4wNjIyNiwuOTU4MTcsLjk4NzE0LC45NTgxNywuODg4ODgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC45MjE5LDEsLjg5OTAzLDEsMSwxLC45MzE3MywuOTMxNzMsLjkzMTczLDEsMS4wNjMwNCwxLjA2MzA0LDEuMDY5MDQsLjg5OTAzLC44OTkwMywuODA1NDksMSwxLjE1NiwxLDEsLjc2NTc1LC43NjU3NSwxLDEsLjcyNDU4LDEsMSwxLDEsLjkyMjQxLDEsMSwxLC42MTksMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA3MjU3LDEsLjc0NzA1LC43MTExOSwxLjAyMDU4LDEuMDI0LDEuMDIxMTksMSwxLDEuMTUzNiwxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1NjM4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuTXlyaWFkUHJvUmVndWxhck1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlNlZ29ldWlSZWd1bGFyTWV0cmljcz10LlNlZ29ldWlSZWd1bGFyRmFjdG9ycz10LlNlZ29ldWlJdGFsaWNNZXRyaWNzPXQuU2Vnb2V1aUl0YWxpY0ZhY3RvcnM9dC5TZWdvZXVpQm9sZE1ldHJpY3M9dC5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3M9dC5TZWdvZXVpQm9sZEl0YWxpY0ZhY3RvcnM9dC5TZWdvZXVpQm9sZEZhY3RvcnM9dm9pZCAwO3QuU2Vnb2V1aUJvbGRGYWN0b3JzPVsxLjc2NzM4LDEsMSwuOTkyOTcsLjk4MjQsMS4wNDAxNiwxLjA2NDk3LDEuMDM0MjQsLjk3NTI5LDEuMTc2NDcsMS4yMzIwMywxLjEwODUsMS4xMDg1LDEuMTY5MzksMS4yMTA3LC45NzU0LDEuMjE0MDgsLjk3NTQsMS41OTU3OCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LC44MTM3OCwuODEzNzgsMS4yMTA3LDEuMjEwNywxLjIxMDcsLjcxNzAzLC45Nzg0NywuOTczNjMsLjg4Nzc2LC44NjQxLDEuMDIwOTYsLjc5Nzk1LC44NTEzMiwuOTE0LDEuMDYwODUsMS4xNDA2LC44MDA3LC44OTg1OCwuODM2OTMsMS4xNDg4OSwxLjA5Mzk4LC45NzQ4OSwuOTIwOTQsLjk3NDg5LC45MDM5OSwuODQwNDEsLjk1OTIzLDEuMDAxMzUsMSwxLjA2NDY3LC45ODI0MywuOTA5OTYsLjk5MzYxLDEuMTA4NSwxLjU2OTQyLDEuMTA4NSwxLjIxMDcsLjc0NjI3LC45NDI4MiwuOTY3NTIsMS4wMTUxOSwuODYzMDQsMS4wMTM1OSwuOTcyNzgsMS4xNTEwMywxLjAxMzU5LC45ODU2MSwxLjAyMjg1LDEuMDIyODUsMS4wMDUyNywxLjAyMjg1LDEuMDMwMiwuOTkwNDEsMS4wMDA4LDEuMDE1MTksMS4wMTM1OSwxLjAyMjU4LC43OTEwNCwxLjE2ODYyLC45OTA0MSwuOTc0NTQsMS4wMjUxMSwuOTkyOTgsLjk2NzUyLC45NTgwMSwuOTQ4NTYsMS4xNjU3OSwuOTQ4NTYsMS4yMTA3LC45ODI0LDEuMDM0MjQsMS4wMzQyNCwxLDEuMDM0MjQsMS4xNjU3OSwuODcyNywxLjM4NzEsMS4xODYyMiwxLjEwODE4LDEuMDQ0NzgsMS4yMTA3LDEuMTg2MjIsLjc1MTU1LC45NDk5NCwxLjI4ODI2LDEuMjE0MDgsMS4yMTQwOCwuOTEwNTYsMSwuOTE1NzIsLjk3NTQsLjY0NjYzLDEuMTgzMjgsMS4yNDg2NiwxLjA0NDc4LDEuMTQxNjksMS4xNTc0OSwxLjE3Mzg5LC43MTcwMywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTM1MDYsLjg2NDEsLjc5Nzk1LC43OTc5NSwuNzk3OTUsLjc5Nzk1LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjAyMDk2LDEuMDkzOTgsLjk3NDI2LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwxLjIxMDcsLjk3NDg5LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkwOTk2LC45MjA5NCwxLjAyNzk4LC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45MzEzNiwuODYzMDQsLjk3Mjc4LC45NzI3OCwuOTcyNzgsLjk3Mjc4LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LDEuMDIyODUsLjk3MTIyLC45OTA0MSwxLDEsMSwxLDEsMS4yODgyNiwxLjAwMDgsLjk5MDQxLC45OTA0MSwuOTkwNDEsLjk5MDQxLC45Njc1MiwxLjAxNTE5LC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjk3MzYzLC45Njc1MiwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsMS4wMjA5NiwxLjAzMDU3LDEuMDIwOTYsMS4wMzUxNywuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjkxNCwxLjAxMzU5LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksMSwxLDEuMDYwODUsLjk4NTYxLDEuMDYwODUsMS4wMDg3OSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwuOTcxMzgsMS4wODY5MiwuODAwNywxLjAyMjg1LDEsMSwxLjAwNTI3LC44MzY5MywxLjAyMjg1LDEsMSwuODM2OTMsLjk0NTUsLjgzNjkzLC45MDQxOCwuODM2OTMsMS4xMzAwNSwxLjA5Mzk4LC45OTA0MSwxLDEsMS4wOTM5OCwuOTkwNDEsLjk2NjkyLDEuMDkyNTEsLjk5MDQxLC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTc0ODksMS4wMDA4LC45Mzk5NCwuOTc5MzEsLjkwMzk5LDEuMDIyNTgsMSwxLC45MDM5OSwxLjAyMjU4LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsMSwxLC45NTkyMywxLjA3MDM0LC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLC45MDk5NiwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsLjk5MzYxLC45NTgwMSwxLjA3NzMzLDEuMDM0MjQsLjk3MzYzLC45Njc1MiwuOTM1MDYsLjkzMTM2LC45NzQ4OSwxLjAwMDgsMSwxLC45NTkyMywxLjE2ODYyLDEuMTUxMDMsMS4xNTEwMywxLjAxMTczLDEuMDM5NTksLjc1OTUzLC44MTM3OCwuNzk5MTIsMS4xNTEwMywxLjIxOTk0LC45NTE2MSwuODc4MTUsMS4wMTE0OSwuODE1MjUsLjc2NzYsLjk4MTY3LDEuMDExMzQsMS4wMjU0NiwuODQwOTcsMS4wMzA4OSwxLjE4MTAyLC45NzM2MywuODg3NzYsLjg1MTM0LC45NzgyNiwuNzk3OTUsLjk5MzYxLDEuMDYwODUsLjk3NDg5LDEuMTQwNiwuODk4NTgsMS4wMzg4LDEuMTQ4ODksMS4wOTM5OCwuODYwMzksLjk3NDg5LDEuMDU5NSwuOTIwOTQsLjk0NzkzLC45NTkyMywuOTA5OTYsLjk5MzQ2LC45ODI0MywxLjAyMTEyLC45NTQ5MywxLjE0MDYsLjkwOTk2LDEuMDM1NzQsMS4wMjU5NywxLjAwMDgsMS4xODEwMiwxLjA2NjI4LDEuMDM1NzQsMS4wMTkyLDEuMDE5MzIsMS4wMDg4NiwuOTc1MzEsMS4wMTA2LDEuMDAwOCwxLjEzMTg5LDEuMTgxMDIsMS4wMjI3NywuOTg2ODMsMS4wMDE2LC45OTU2MSwxLjA3MjM3LDEuMDAwOCwuOTA0MzQsLjk5OTIxLC45MzgwMywuODk2NSwxLjIzMDg1LDEuMDY2MjgsMS4wNDk4MywuOTYyNjgsMS4wNDk5LC45ODQzOSwxLjE4MTAyLDEuMDY2MjgsMS4wMDA4LDEuMDY2MjgsLjk4NDM5LC43OTc5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA5NDY2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NzI3OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAyMDY1LDEsMSwxLDEsMSwxLDEuMDY0NjcsMS4wMjUxMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLC45MDk5NiwuOTY3NTIsMSwxLjIxNDA4LC44OTkwMywxLDEsLjc1MTU1LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjczMDQ3LC43MzA0NywxLjIwNjQyLC45MTIxMSwxLjI1NjM1LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4xMjQ1NCwuOTM1MDMsMS4wMzQyNCwxLjE5Njg3LDEuMDM0MjQsMSwxLDEsLjc3MSwxLDEsMS4xNTc0OSwxLjE1NzQ5LDEuMTU3NDksMS4xMDk0OCwuODYyNzksLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjE2ODk3LDEsLjk2MDg1LC45MDEzNywxLjIxMDcsMS4xODQxNiwxLjEzOTczLC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMTcyLDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg4NzQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjA5MTkzLDEuMDkxOTMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuU2Vnb2V1aUJvbGRNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfTt0LlNlZ29ldWlCb2xkSXRhbGljRmFjdG9ycz1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMDM5NTksMS4wNDAxNiwxLjAyODA5LDEuMDM2LC45NzYzOSwxLjEwOTUzLDEuMjMyMDMsMS4xMTE0NCwxLjExMTQ0LDEuMTY5MzksMS4yMTIzNywuOTc1NCwxLjIxMjYxLC45NzU0LDEuNTk3NTQsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsLjgxMzc4LC44MTM3OCwxLjIxMjM3LDEuMjEyMzcsMS4yMTIzNywuNzM1NDEsLjk3ODQ3LC45NzM2MywuODk3MjMsLjg3ODk3LDEuMDQyNiwuNzk0MjksLjg1MjkyLC45MTE0OSwxLjA1ODE1LDEuMTQwNiwuNzk2MzEsLjkwMTI4LC44Mzg1MywxLjA0Mzk2LDEuMTA2MTUsLjk3NTUyLC45NDQzNiwuOTc1NTIsLjg4NjQxLC44MDUyNywuOTYwODMsMS4wMDEzNSwxLDEuMDY3NzcsLjk4MTcsLjkxMTQyLC45OTM2MSwxLjExMTQ0LDEuNTcyOTMsMS4xMTE0NCwxLjIxMjM3LC43NDYyNywxLjMxODE4LDEuMDY1ODUsLjk3MDQyLC44MzA1NSwuOTcwNDIsLjkzNTAzLDEuMTI2MSwuOTcwNDIsLjk3OTIyLDEuMTQyMzYsLjk0NTUyLDEuMDEwNTQsMS4xNDIzNiwxLjAyNDcxLC45NzkyMiwuOTQxNjUsLjk3MDQyLC45NzA0MiwxLjAyNzYsLjc4OTI5LDEuMTI2MSwuOTc5MjIsLjk1ODc0LDEuMDIxOTcsLjk4NTA3LC45Njc1MiwuOTcxNjgsLjk1MTA3LDEuMTY1NzksLjk1MTA3LDEuMjEyMzcsMS4wMzk1OSwxLjAzNiwxLjAzNiwxLDEuMDM2LDEuMTY1NzksLjg3MzU3LDEuMzE4MTgsMS4xODc1NCwxLjI2NzgxLDEuMDUzNTYsMS4yMTIzNywxLjE4NjIyLC43OTQ4NywuOTQ5OTQsMS4yOTAwNCwxLjI0MDQ3LDEuMjQwNDcsMS4zMTgxOCwxLC45MTQ4NCwuOTc1NCwxLjMxODE4LDEuMTM0OSwxLjI0ODY2LDEuMDUzNTYsMS4xMzkzNCwxLjE1NTc0LDEuMTczODksLjczNTQxLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NDM4NSwuODc4OTcsLjc5NDI5LC43OTQyOSwuNzk0MjksLjc5NDI5LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjA0MjYsMS4xMDYxNSwuOTc1NTIsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLDEuMjEyMzcsLjk3NTUyLDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkxMTQyLC45NDQzNiwuOTg3MjEsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsLjk2NzA1LC44MzA1NSwuOTM1MDMsLjkzNTAzLC45MzUwMywuOTM1MDMsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsMS4xNDIzNiwuOTMxMjUsLjk3OTIyLC45NDE2NSwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsMS4yOTAwNCwuOTQxNjUsLjk3OTIyLC45NzkyMiwuOTc5MjIsLjk3OTIyLC45Njc1MiwuOTcwNDIsLjk2NzUyLC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsMS4wNDI2LDEuMDAzMywxLjA0MjYsLjk3MDQyLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsLjkxMTQ5LC45NzA0MiwxLDEsMS4wNTgxNSwuOTc5MjIsMS4wNTgxNSwuOTc5MjIsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsLjk3NDQxLDEuMDQzMDIsLjc5NjMxLDEuMDE1ODIsMSwxLDEuMDEwNTQsLjgzODUzLDEuMTQyMzYsMSwxLC44Mzg1MywxLjA5MTI1LC44Mzg1MywuOTA0MTgsLjgzODUzLDEuMTk1MDgsMS4xMDYxNSwuOTc5MjIsMSwxLDEuMTA2MTUsLjk3OTIyLDEuMDEwMzQsMS4xMDQ2NiwuOTc5MjIsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45NzU1MiwuOTQxNjUsLjkxNjAyLC45MTk4MSwuODg2NDEsMS4wMjc2LDEsMSwuODg2NDEsMS4wMjc2LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksMSwxLC45NjA4MywxLjA1NDAzLC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLC45MTE0MiwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsLjk5MzYxLC45NzE2OCwxLjIzMTk5LDEuMDM2LC45NzM2MywxLjA2NTg1LC45NDM4NSwuOTY3MDUsLjk3NTUyLC45NDE2NSwxLDEsLjk2MDgzLDEuMTI2MSwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwuOTUxNjEsMS4yNzEyNiwxLjAwODExLC44MzI4NCwuNzc3MDIsLjk5MTM3LC45NTI1MywxLjAzNDcsLjg2MTQyLDEuMDcyMDUsMS4xNDIzNiwuOTczNjMsLjg5NzIzLC44Njg2OSwxLjA5ODE4LC43OTQyOSwuOTkzNjEsMS4wNTgxNSwuOTc1NTIsMS4xNDA2LC45MDEyOCwxLjA2NjYyLDEuMDQzOTYsMS4xMDYxNSwuODQ5MTgsLjk3NTUyLDEuMDQ2OTQsLjk0NDM2LC45ODAxNSwuOTYwODMsLjkxMTQyLDEuMDAzNTYsLjk4MTcsMS4wMTk0NSwuOTg5OTksMS4xNDA2LC45MTE0MiwxLjA0OTYxLC45ODk4LDEuMDA2MzksMS4xNDIzNiwxLjA3NTE0LDEuMDQ5NjEsLjk5NjA3LDEuMDI4OTcsMS4wMDgsLjk4OTgsLjk1MTM0LDEuMDA2MzksMS4xMTEyMSwxLjE0MjM2LDEuMDA1MTgsLjk3OTgxLDEuMDIxODYsMSwxLjA4NTc4LC45NDE2NSwuOTkzMTQsLjk4Mzg3LC45MzAyOCwuOTMzNzcsMS4zNTEyNSwxLjA3NTE0LDEuMTA2ODcsLjkzNDkxLDEuMDQyMzIsMS4wMDM1MSwxLjE0MjM2LDEuMDc1MTQsLjk0MTY1LDEuMDc1MTQsMS4wMDM1MSwuNzk0MjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTA5NywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTM1MDMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NjA5LDEsMSwxLDEsMSwxLDEuMDY3NzcsMS4wMjE5NywxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LC45MTE0MiwuOTY3NTIsMSwxLjIxMjYxLC44OTkwMywxLDEsLjc1MTU1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0NzQ1LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjcyOTU5LC43Mjk1OSwxLjIwNTAyLC45MTQwNiwxLjI2NTE0LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4wOTEyNSwuOTMzMjcsMS4wMzMzNiwxLjE2NTQxLDEuMDM2LDEsMSwxLC43NzEsMSwxLDEuMTU1NzQsMS4xNTU3NCwxLjE1NTc0LDEuMTU1NzQsLjg2MzY0LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjIyNCwxLDEsMS4xNjc5OCwxLC45NjA4NSwuOTAwNjgsMS4yMTIzNywxLjE4NDE2LDEuMTM5MDQsLjY5ODI1LC45NzE2LDIuMTAzMzksMS4yOTAwNCwxLjI5MDA0LDEuMjEzMzksMS4yOTAwNCwxLjI5MDA0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODc3NSwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTMyNjksMS4xMzI2OSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9O3QuU2Vnb2V1aUl0YWxpY0ZhY3RvcnM9WzEuNzY3MzgsMSwxLC45ODk0NiwxLjE0NzYzLDEuMDUzNjUsMS4wNjIzNCwuOTY5MjcsLjkyNTg2LDEuMTUzNzMsMS4xODQxNCwuOTEzNDksLjkxMzQ5LDEuMDc0MDMsMS4xNzMwOCwuNzgzODMsMS4yMDA4OCwuNzgzODMsMS40MjUzMSwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MzgzLC43ODM4MywxLjE3MzA4LDEuMTczMDgsMS4xNzMwOCwuNzczNDksLjk0NTY1LC45NDcyOSwuODU5NDQsLjg4NTA2LC45ODU4LC43NDgxNywuODAwMTYsLjg4NDQ5LC45ODAzOSwuOTU3ODIsLjY5MjM4LC44OTg5OCwuODMyMzEsLjk4MTgzLDEuMDM5ODksLjk2OTI0LC44NjIzNywuOTY5MjQsLjgwNTk1LC43NDUyNCwuODYwOTEsLjk1NDAyLC45NDE0MywuOTg0NDgsLjg4NTgsLjgzMDg5LC45MzI4NSwxLjA5NDksMS4zOTAxNiwxLjA5NDksMS40NTk5NCwuNzQ2MjcsMS4wNDgzOSwuOTc0NTQsLjk3NDU0LC44NzIwNywuOTc0NTQsLjg3NTMzLDEuMDYxNTEsLjk3NDU0LDEuMDAxNzYsMS4xNjQ4NCwxLjA4MTMyLC45ODA0NywxLjE2NDg0LDEuMDI5ODksMS4wMTA1NCwuOTYyMjUsLjk3NDU0LC45NzQ1NCwxLjA2NTk4LC43OTAwNCwxLjE2MzQ0LDEuMDAzNTEsLjk0NjI5LC45OTczLC45MTAxNiwuOTY3NzcsLjkwNDMsLjkxMDgyLC45MjQ4MSwuOTEwODIsMS4xNzMwOCwuOTU3NDgsLjk2OTI3LC45NjkyNywxLC45NjkyNywuOTI0ODEsLjgwNTk3LDEuMDQ4MzksMS4yMzM5MywxLjE3ODEsLjkyNDUsMS4xNzMwOCwxLjIwODA4LC42MzIxOCwuOTQyNjEsMS4yNDgyMiwxLjA5OTcxLDEuMDk5NzEsMS4wNDgzOSwxLC44NTI3MywuNzgwMzIsMS4wNDgzOSwxLjA5OTcxLDEuMjIzMjYsLjkyNDUsMS4wOTgzNiwxLjEzNTI1LDEuMTUyMjIsLjcwNDI0LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC44NTQ5OCwuODg1MDYsLjc0ODE3LC43NDgxNywuNzQ4MTcsLjc0ODE3LC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTg1OCwxLjAzOTg5LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsMS4xNzMwOCwuOTY5MjQsLjk1NDAyLC45NTQwMiwuOTU0MDIsLjk1NDAyLC44MzA4OSwuODYyMzcsLjg4NDA5LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45MjkxNiwuODcyMDcsLjg3NTMzLC44NzUzMywuODc1MzMsLjg3NTMzLC45MzE0NiwuOTMxNDYsLjkzMTQ2LC45MzE0NiwuOTM4NTQsMS4wMTA1NCwuOTYyMjUsLjk2MjI1LC45NjIyNSwuOTYyMjUsLjk2MjI1LDEuMjQ4MjIsLjg3NjEsMS4wMDM1MSwxLjAwMzUxLDEuMDAzNTEsMS4wMDM1MSwuOTY3NzcsLjk3NDU0LC45Njc3NywuOTQ3MjksLjk3NDU0LC45NDcyOSwuOTc0NTQsLjk0NzI5LC45NzQ1NCwuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC45ODU4LC45NTM5MSwuOTg1OCwuOTc0NTQsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC44ODQ0OSwuOTc0NTQsLjg4NDQ5LC45NzQ1NCwuODg0NDksLjk3NDU0LDEsMSwuOTgwMzksMS4wMDE3NiwuOTgwMzksMS4wMDE3NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwuOTMxNDYsLjk1NzgyLC45MzE0NiwuOTU3ODIsMS4xNjQ4NCwuOTU3ODIsLjkzMTQ2LC44NDQyMSwxLjEyNzYxLC42OTIzOCwxLjA4MTMyLDEsMSwuOTgwNDcsLjgzMjMxLDEuMTY0ODQsMSwxLC44NDcyMywxLjA0ODYxLC44NDcyMywuNzg3NTUsLjgzMjMxLDEuMjM3MzYsMS4wMzk4OSwxLjAxMDU0LDEsMSwxLjAzOTg5LDEuMDEwNTQsLjk4NTcsMS4wMzg0OSwxLjAxMDU0LC45NjkyNCwuOTYyMjUsLjk2OTI0LC45NjIyNSwuOTY5MjQsLjk2MjI1LC45MjM4MywuOTAxNzEsLjgwNTk1LDEuMDY1OTgsMSwxLC44MDU5NSwxLjA2NTk4LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsMSwxLC44NjA5MSwxLjAyNzU5LC44NTc3MSwxLjE2MzQ0LC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45ODQ0OCwuOTk3MywuODMwODksLjk2Nzc3LC44MzA4OSwuOTMyODUsLjkwNDMsLjkzMjg1LC45MDQzLC45MzI4NSwuOTA0MywxLjMxODY4LC45NjkyNywuOTQ3MjksLjk3NDU0LC44NTQ5OCwuOTI5MTYsLjk2OTI0LC44NzYxLDEsMSwuODYwOTEsMS4xNjM0NCwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwuODE5NjUsLjgxOTY1LC45NDcyOSwuNzgwMzIsLjcxMDIyLC45MDg4MywuODQxNzEsLjk5ODc3LC43NzU5NiwxLjA1NzM0LDEuMiwuOTQ3MjksLjg1OTQ0LC44Mjc5MSwuOTYwNywuNzQ4MTcsLjkzMjg1LC45ODAzOSwuOTY5MjQsLjk1NzgyLC44OTg5OCwuOTgzMTYsLjk4MTgzLDEuMDM5ODksLjc4NjE0LC45NjkyNCwuOTc2NDIsLjg2MjM3LC44NjA3NSwuODYwOTEsLjgzMDg5LC45MDA4MiwuODg1OCwuOTcyOTYsMS4wMTI4NCwuOTU3ODIsLjgzMDg5LDEuMDk3NiwxLjA0LDEuMDMzNDIsMS4yLDEuMDY3NSwxLjA5NzYsLjk4MjA1LDEuMDM4MDksMS4wNTA5NywxLjA0LC45NTM2NCwxLjAzMzQyLDEuMDU0MDEsMS4yLDEuMDIxNDgsMS4wMTE5LDEuMDQ3MjQsMS4wMTI3LDEuMDI3MzIsLjk2MjI1LC44OTY1LC45Nzc4MywuOTM1NzQsLjk0ODE4LDEuMzA2NzksMS4wNjc1LDEuMTE4MjYsLjk5ODIxLDEuMDU1NywxLjAzMjYsMS4yLDEuMDY3NSwuOTYyMjUsMS4wNjc1LDEuMDMyNiwuNzQ4MTcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wMzc1NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODc1MzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk4NzA1LDEsMSwxLDEsMSwxLC45ODQ0OCwuOTk3MywuOTg0NDgsLjk5NzMsLjk4NDQ4LC45OTczLC44MzA4OSwuOTY3NzcsMSwxLjIwMDg4LC44OTkwMywxLDEsLjc1MTU1LC45NDk0NSwuOTQ5NDUsLjk0OTQ1LC45NDk0NSwxLjEyMzE3LDEuMTIzMTcsMS4xMjMxNywuNjc2MDMsLjY3NjAzLDEuMTU2MjEsLjczNTg0LDEuMjExOTEsMS4yMjEzNSwxLjA2NDgzLC45NDg2OCwuOTQ4NjgsLjk1OTk2LDEuMjQ2MzMsMSwxLjA3NDk3LC44NzcwOSwuOTY5MjcsMS4wMTQ3MywuOTY5MjcsMSwxLDEsLjc3Mjk1LDEsMSwxLjA5ODM2LDEuMDk4MzYsMS4wOTgzNiwxLjAxNTIyLC44NjMyMSwuOTQ0MzQsLjg2NDksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NDM4LDEuMTczMDgsMS4xODQxNiwxLjE0NTg5LC42OTgyNSwuOTc2MjIsMS45Njc5MSwxLjI0ODIyLDEuMjQ4MjIsMS4xNzMwOCwxLjI0ODIyLDEuMjQ4MjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE3OTg0LDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4xMDc0MiwxLjEwNzQyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LlNlZ29ldWlJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfTt0LlNlZ29ldWlSZWd1bGFyRmFjdG9ycz1bMS43NjczOCwxLDEsLjk4NTk0LDEuMDIyODUsMS4xMDQ1NCwxLjA2MjM0LC45NjkyNywuOTIwMzcsMS4xOTk4NSwxLjIwNDYsLjkwNjE2LC45MDYxNiwxLjA3MTUyLDEuMTcxNCwuNzgwMzIsMS4yMDA4OCwuNzgwMzIsMS40MDI0NiwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MDMyLC43ODAzMiwxLjE3MTQsMS4xNzE0LDEuMTcxNCwuODA1OTcsLjk0MDg0LC45NjcwNiwuODU5NDQsLjg1NzM0LC45NzA5MywuNzU4NDIsLjc5OTM2LC44ODE5OCwuOTgzMSwuOTU3ODIsLjcxMzg3LC44Njk2OSwuODQ2MzYsMS4wNzc5NiwxLjAzNTg0LC45NjkyNCwuODM5NjgsLjk2OTI0LC44MjgyNiwuNzk2NDksLjg1NzcxLC45NTEzMiwuOTMxMTksLjk4OTY1LC44ODQzMywuODI4NywuOTMzNjUsMS4wODYxMiwxLjM2MzgsMS4wODYxMiwxLjQ1Nzg2LC43NDYyNywuODA0OTksLjkxNDg0LDEuMDU3MDcsLjkyMzgzLDEuMDU4ODIsLjk0MDMsMS4xMjY1NCwxLjA1ODgyLDEuMDE3NTYsMS4wOTAxMSwxLjA5MDExLC45OTQxNCwxLjA5MDExLDEuMDM0LDEuMDE3NTYsMS4wNTM1NiwxLjA1NzA3LDEuMDU4ODIsMS4wNDM5OSwuODQ4NjMsMS4yMTk2OCwxLjAxNzU2LC45NTgwMSwxLjAwMDY4LC45MTc5NywuOTY3NzcsLjkwNDMsLjkwMzUxLC45MjEwNSwuOTAzNTEsMS4xNzE0LC44NTMzNywuOTY5MjcsLjk2OTI3LC45OTkxMiwuOTY5MjcsLjkyMTA1LC44MDU5NywxLjI0MzQsMS4yMDgwOCwxLjA1OTM3LC45MDk1NywxLjE3MTQsMS4yMDgwOCwuNzUxNTUsLjk0MjYxLDEuMjQ2NDQsMS4wOTk3MSwxLjA5OTcxLC44NDc1MSwxLC44NTI3MywuNzgwMzIsLjYxNTg0LDEuMDU0MjUsMS4xNzkxNCwuOTA5NTcsMS4wODY2NSwxLjExNTkzLDEuMTQxNjksLjczMzgxLC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC44NjAzNSwuODU3MzQsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjc1ODQyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTcwOTMsMS4wMzU4NCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTcxNCwuOTY5MjQsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjk1MTMyLC44Mjg3LC44Mzk2OCwuODkwNDksLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkzNTc1LC45MjM4MywuOTQwMywuOTQwMywuOTQwMywuOTQwMywuODcxNywuODcxNywuODcxNywuODcxNywxLjAwNTI3LDEuMDE3NTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMjQ2NDQsLjk1OTIzLDEuMDE3NTYsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsLjk2Nzc3LDEuMDU3MDcsLjk2Nzc3LC45NjcwNiwuOTE0ODQsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjk3MDkzLDEuMDk2OSwuOTcwOTMsMS4wNTg4MiwuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLDEsMSwuOTgzMSwxLjAxNzU2LC45ODMxLDEuMDE3NTYsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsLjg3MTcsLjk1NzgyLDEuMDkwMTEsLjk1NzgyLC44NzE3LC44NDc4NCwxLjExNTUxLC43MTM4NywxLjA5MDExLDEsMSwuOTk0MTQsLjg0NjM2LDEuMDkwMTEsMSwxLC44NDYzNiwxLjA1MzYsLjg0NjM2LC45NDI5OCwuODQ2MzYsMS4yMzI5NywxLjAzNTg0LDEuMDE3NTYsMSwxLDEuMDM1ODQsMS4wMTc1NiwxLjAwMzIzLDEuMDM0NDQsMS4wMTc1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTMwNjYsLjk4MjkzLC44MjgyNiwxLjA0Mzk5LDEsMSwuODI4MjYsMS4wNDM5OSwuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLDEsMSwuODU3NzEsMS4xNzMxOCwuODU3NzEsMS4yMTk2OCwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsLjgyODcsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywuOTMzNjUsLjkwNDMsMS4wODU3MSwuOTY5MjcsLjk2NzA2LC45MTQ4NCwuODYwMzUsLjkzNTc1LC45NjkyNCwuOTU5MjMsMSwxLC44NTc3MSwxLjIxOTY4LDEuMTE0MzcsMS4xMTQzNywuOTMxMDksLjkxMjAyLC42MDQxMSwuODQxNjQsLjU1NTcyLDEuMDExNzMsLjk3MzYxLC44MTgxOCwuODE4MTgsLjk2NjM1LC43ODAzMiwuNzI3MjcsLjkyMzY2LC45ODYwMSwxLjAzNDA1LC43Nzk2OCwxLjA5Nzk5LDEuMiwuOTY3MDYsLjg1OTQ0LC44NTYzOCwuOTY0OTEsLjc1ODQyLC45MzM2NSwuOTgzMSwuOTY5MjQsLjk1NzgyLC44Njk2OSwuOTQxNTIsMS4wNzc5NiwxLjAzNTg0LC43ODQzNywuOTY5MjQsLjk4NzE1LC44Mzk2OCwuODM0OTEsLjg1NzcxLC44Mjg3LC45NDQ5MiwuODg0MzMsLjkyODcsMS4wMDk4LC45NTc4MiwuODI4NywxLjA2MjUsLjk4MjQ4LDEuMDM0MjQsMS4yLDEuMDEwNzEsMS4wNjI1LC45NTI0NiwxLjAzODA5LDEuMDQ5MTIsLjk4MjQ4LDEuMDAyMjEsMS4wMzQyNCwxLjA1NDQzLDEuMiwxLjA0Nzg1LC45OTYwOSwxLjAwMTY5LDEuMDUxNzYsLjk5MzQ2LDEuMDUzNTYsLjkwODcsMS4wMzAwNCwuOTU1NDIsLjkzMTE3LDEuMjMzNjIsMS4wMTA3MSwxLjA3ODMxLDEuMDI1MTIsMS4wNTIwNSwxLjAzNTAyLDEuMiwxLjAxMDcxLDEuMDUzNTYsMS4wMTA3MSwxLjAzNTAyLC43NTg0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzE5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQwMjEsMSwxLDEsMSwxLDEsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjgyODcsLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwxLjAzMDc3LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMTMxOTYsMS4xMzE5NiwxLjEzMTk2LC42NzQyOCwuNjc0MjgsMS4xNjAzOSwuNzMyOTEsMS4yMDk5NiwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3Nzk2LC45NjkyNywxLjAxNTE4LC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMTA1MzksMS4xMDUzOSwxLjExMzU4LDEuMDY5NjcsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NTA3LDEuMTcxNCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2OTcsMS4yNDgyMiwxLjI0ODIyLDEuMTcyMzgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODA4MywxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA5MzgsMS4xMDkzOCwxLDEsMSwxLjA1NDI1LDEuMDk5NzEsMS4wOTk3MSwxLjA5OTcxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5TZWdvZXVpUmVndWxhck1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUG9zdFNjcmlwdEV2YWx1YXRvcj10LlBvc3RTY3JpcHRDb21waWxlcj10LlBERkZ1bmN0aW9uRmFjdG9yeT12b2lkIDA7dC5pc1BERkZ1bmN0aW9uPWZ1bmN0aW9uIGlzUERGRnVuY3Rpb24oZSl7bGV0IHQ7aWYoZSBpbnN0YW5jZW9mIHIuRGljdCl0PWU7ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBzLkJhc2VTdHJlYW0pKXJldHVybiExO3Q9ZS5kaWN0fXJldHVybiB0LmhhcygiRnVuY3Rpb25UeXBlIil9O3ZhciByPWEoNCksaT1hKDIpLG49YSg1OCkscz1hKDUpLG89YSg1OSk7dC5QREZGdW5jdGlvbkZhY3Rvcnk9Y2xhc3MgUERGRnVuY3Rpb25GYWN0b3J5e2NvbnN0cnVjdG9yKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQ9ITB9KXt0aGlzLnhyZWY9ZTt0aGlzLmlzRXZhbFN1cHBvcnRlZD0hMSE9PXR9Y3JlYXRlKGUpe2NvbnN0IHQ9dGhpcy5nZXRDYWNoZWQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBhPVBERkZ1bmN0aW9uLnBhcnNlKHt4cmVmOnRoaXMueHJlZixpc0V2YWxTdXBwb3J0ZWQ6dGhpcy5pc0V2YWxTdXBwb3J0ZWQsZm46ZSBpbnN0YW5jZW9mIHIuUmVmP3RoaXMueHJlZi5mZXRjaChlKTplfSk7dGhpcy5fY2FjaGUoZSxhKTtyZXR1cm4gYX1jcmVhdGVGcm9tQXJyYXkoZSl7Y29uc3QgdD10aGlzLmdldENhY2hlZChlKTtpZih0KXJldHVybiB0O2NvbnN0IGE9UERGRnVuY3Rpb24ucGFyc2VBcnJheSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMuaXNFdmFsU3VwcG9ydGVkLGZuT2JqOmUgaW5zdGFuY2VvZiByLlJlZj90aGlzLnhyZWYuZmV0Y2goZSk6ZX0pO3RoaXMuX2NhY2hlKGUsYSk7cmV0dXJuIGF9Z2V0Q2FjaGVkKGUpe2xldCB0O2UgaW5zdGFuY2VvZiByLlJlZj90PWU6ZSBpbnN0YW5jZW9mIHIuRGljdD90PWUub2JqSWQ6ZSBpbnN0YW5jZW9mIHMuQmFzZVN0cmVhbSYmKHQ9ZS5kaWN0Py5vYmpJZCk7aWYodCl7Y29uc3QgZT10aGlzLl9sb2NhbEZ1bmN0aW9uQ2FjaGUuZ2V0QnlSZWYodCk7aWYoZSlyZXR1cm4gZX1yZXR1cm4gbnVsbH1fY2FjaGUoZSx0KXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ1BERkZ1bmN0aW9uRmFjdG9yeS5fY2FjaGUgLSBleHBlY3RlZCAicGFyc2VkRnVuY3Rpb24iIGFyZ3VtZW50LicpO2xldCBhO2UgaW5zdGFuY2VvZiByLlJlZj9hPWU6ZSBpbnN0YW5jZW9mIHIuRGljdD9hPWUub2JqSWQ6ZSBpbnN0YW5jZW9mIHMuQmFzZVN0cmVhbSYmKGE9ZS5kaWN0Py5vYmpJZCk7YSYmdGhpcy5fbG9jYWxGdW5jdGlvbkNhY2hlLnNldChudWxsLGEsdCl9Z2V0IF9sb2NhbEZ1bmN0aW9uQ2FjaGUoKXtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiX2xvY2FsRnVuY3Rpb25DYWNoZSIsbmV3IG8uTG9jYWxGdW5jdGlvbkNhY2hlKX19O2Z1bmN0aW9uIHRvTnVtYmVyQXJyYXkoZSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmxlbmd0aDtmb3IobGV0IGE9MDthPHQ7YSsrKWlmKCJudW1iZXIiIT10eXBlb2YgZVthXSl7Y29uc3QgYT1uZXcgQXJyYXkodCk7Zm9yKGxldCByPTA7cjx0O3IrKylhW3JdPStlW3JdO3JldHVybiBhfXJldHVybiBlfWNsYXNzIFBERkZ1bmN0aW9ue3N0YXRpYyBnZXRTYW1wbGVBcnJheShlLHQsYSxyKXtsZXQgaSxuLHM9MTtmb3IoaT0wLG49ZS5sZW5ndGg7aTxuO2krKylzKj1lW2ldO3MqPXQ7Y29uc3Qgbz1uZXcgQXJyYXkocyk7bGV0IGM9MCxsPTA7Y29uc3QgaD0xLygyKiphLTEpLHU9ci5nZXRCeXRlcygocyphKzcpLzgpO2xldCBkPTA7Zm9yKGk9MDtpPHM7aSsrKXtmb3IoO2M8YTspe2w8PD04O2x8PXVbZCsrXTtjKz04fWMtPWE7b1tpXT0obD4+YykqaDtsJj0oMTw8YyktMX1yZXR1cm4gb31zdGF0aWMgcGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjphfSl7Y29uc3Qgcj1hLmRpY3R8fGE7c3dpdGNoKHIuZ2V0KCJGdW5jdGlvblR5cGUiKSl7Y2FzZSAwOnJldHVybiB0aGlzLmNvbnN0cnVjdFNhbXBsZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjphLGRpY3Q6cn0pO2Nhc2UgMTpicmVhaztjYXNlIDI6cmV0dXJuIHRoaXMuY29uc3RydWN0SW50ZXJwb2xhdGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDpyfSk7Y2FzZSAzOnJldHVybiB0aGlzLmNvbnN0cnVjdFN0aWNoZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxkaWN0OnJ9KTtjYXNlIDQ6cmV0dXJuIHRoaXMuY29uc3RydWN0UG9zdFNjcmlwdCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmEsZGljdDpyfSl9dGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZSBvZiBmdW5jdGlvbiIpfXN0YXRpYyBwYXJzZUFycmF5KHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm5PYmo6YX0pe2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiB0aGlzLnBhcnNlKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46YX0pO2NvbnN0IHI9W107Zm9yKGNvbnN0IGkgb2YgYSlyLnB1c2godGhpcy5wYXJzZSh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmUuZmV0Y2hJZlJlZihpKX0pKTtyZXR1cm4gZnVuY3Rpb24oZSx0LGEsaSl7Zm9yKGxldCBuPTAscz1yLmxlbmd0aDtuPHM7bisrKXJbbl0oZSx0LGEsaStuKX19c3RhdGljIGNvbnN0cnVjdFNhbXBsZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjphLGRpY3Q6cn0pe2Z1bmN0aW9uIHRvTXVsdGlBcnJheShlKXtjb25zdCB0PWUubGVuZ3RoLGE9W107bGV0IHI9MDtmb3IobGV0IGk9MDtpPHQ7aSs9MilhW3IrK109W2VbaV0sZVtpKzFdXTtyZXR1cm4gYX1mdW5jdGlvbiBpbnRlcnBvbGF0ZShlLHQsYSxyLGkpe3JldHVybiByKyhpLXIpLyhhLXQpKihlLXQpfWxldCBuPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiRG9tYWluIikpLHM9dG9OdW1iZXJBcnJheShyLmdldEFycmF5KCJSYW5nZSIpKTtpZighbnx8IXMpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiBvciByYW5nZSIpO2NvbnN0IG89bi5sZW5ndGgvMixjPXMubGVuZ3RoLzI7bj10b011bHRpQXJyYXkobik7cz10b011bHRpQXJyYXkocyk7Y29uc3QgbD10b051bWJlckFycmF5KHIuZ2V0QXJyYXkoIlNpemUiKSksaD1yLmdldCgiQml0c1BlclNhbXBsZSIpLHU9ci5nZXQoIk9yZGVyIil8fDE7MSE9PXUmJigwLGkuaW5mbykoIk5vIHN1cHBvcnQgZm9yIGN1YmljIHNwbGluZSBpbnRlcnBvbGF0aW9uOiAiK3UpO2xldCBkPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiRW5jb2RlIikpO2lmKGQpZD10b011bHRpQXJyYXkoZCk7ZWxzZXtkPVtdO2ZvcihsZXQgZT0wO2U8bzsrK2UpZC5wdXNoKFswLGxbZV0tMV0pfWxldCBmPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiRGVjb2RlIikpO2Y9Zj90b011bHRpQXJyYXkoZik6cztjb25zdCBnPXRoaXMuZ2V0U2FtcGxlQXJyYXkobCxjLGgsYSk7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdFNhbXBsZWRGbihlLHQsYSxyKXtjb25zdCBpPTE8PG8saD1uZXcgRmxvYXQ2NEFycmF5KGkpLHU9bmV3IFVpbnQzMkFycmF5KGkpO2xldCBwLG07Zm9yKG09MDttPGk7bSsrKWhbbV09MTtsZXQgYj1jLHk9MTtmb3IocD0wO3A8bzsrK3Ape2NvbnN0IGE9bltwXVswXSxyPW5bcF1bMV07bGV0IHM9aW50ZXJwb2xhdGUoTWF0aC5taW4oTWF0aC5tYXgoZVt0K3BdLGEpLHIpLGEscixkW3BdWzBdLGRbcF1bMV0pO2NvbnN0IG89bFtwXTtzPU1hdGgubWluKE1hdGgubWF4KHMsMCksby0xKTtjb25zdCBjPXM8by0xP01hdGguZmxvb3Iocyk6cy0xLGY9YysxLXMsZz1zLWMsdz1jKmIsUz13K2I7Zm9yKG09MDttPGk7bSsrKWlmKG0meSl7aFttXSo9Zzt1W21dKz1TfWVsc2V7aFttXSo9Zjt1W21dKz13fWIqPW87eTw8PTF9Zm9yKG09MDttPGM7KyttKXtsZXQgZT0wO2ZvcihwPTA7cDxpO3ArKyllKz1nW3VbcF0rbV0qaFtwXTtlPWludGVycG9sYXRlKGUsMCwxLGZbbV1bMF0sZlttXVsxXSk7YVtyK21dPU1hdGgubWluKE1hdGgubWF4KGUsc1ttXVswXSksc1ttXVsxXSl9fX1zdGF0aWMgY29uc3RydWN0SW50ZXJwb2xhdGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDphfSl7Y29uc3Qgcj10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkMwIikpfHxbMF0saT10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkMxIikpfHxbMV0sbj1hLmdldCgiTiIpLHM9W107Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7KytlKXMucHVzaChpW2VdLXJbZV0pO2NvbnN0IG89cy5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdEludGVycG9sYXRlZEZuKGUsdCxhLGkpe2NvbnN0IGM9MT09PW4/ZVt0XTplW3RdKipuO2ZvcihsZXQgZT0wO2U8bzsrK2UpYVtpK2VdPXJbZV0rYypzW2VdfX1zdGF0aWMgY29uc3RydWN0U3RpY2hlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGRpY3Q6YX0pe2NvbnN0IHI9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJEb21haW4iKSk7aWYoIXIpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiIpO2lmKDEhPT1yLmxlbmd0aC8yKXRocm93IG5ldyBpLkZvcm1hdEVycm9yKCJCYWQgZG9tYWluIGZvciBzdGljaGVkIGZ1bmN0aW9uIik7Y29uc3Qgbj1bXTtmb3IoY29uc3QgciBvZiBhLmdldCgiRnVuY3Rpb25zIikpbi5wdXNoKHRoaXMucGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjplLmZldGNoSWZSZWYocil9KSk7Y29uc3Qgcz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkJvdW5kcyIpKSxvPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRW5jb2RlIikpLGM9bmV3IEZsb2F0MzJBcnJheSgxKTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0U3RpY2hlZEZuKGUsdCxhLGkpe2NvbnN0IGw9ZnVuY3Rpb24gY29uc3RydWN0U3RpY2hlZEZyb21JUkNsaXAoZSx0LGEpe2U+YT9lPWE6ZTx0JiYoZT10KTtyZXR1cm4gZX0oZVt0XSxyWzBdLHJbMV0pLGg9cy5sZW5ndGg7bGV0IHU7Zm9yKHU9MDt1PGgmJiEobDxzW3VdKTsrK3UpO2xldCBkPXJbMF07dT4wJiYoZD1zW3UtMV0pO2xldCBmPXJbMV07dTxzLmxlbmd0aCYmKGY9c1t1XSk7Y29uc3QgZz1vWzIqdV0scD1vWzIqdSsxXTtjWzBdPWQ9PT1mP2c6ZysobC1kKSoocC1nKS8oZi1kKTtuW3VdKGMsMCxhLGkpfX1zdGF0aWMgY29uc3RydWN0UG9zdFNjcmlwdCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmEsZGljdDpyfSl7Y29uc3Qgcz10b051bWJlckFycmF5KHIuZ2V0QXJyYXkoIkRvbWFpbiIpKSxvPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiUmFuZ2UiKSk7aWYoIXMpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoIk5vIGRvbWFpbi4iKTtpZighbyl0aHJvdyBuZXcgaS5Gb3JtYXRFcnJvcigiTm8gcmFuZ2UuIik7Y29uc3QgYz1uZXcgbi5Qb3N0U2NyaXB0TGV4ZXIoYSksbD1uZXcgbi5Qb3N0U2NyaXB0UGFyc2VyKGMpLnBhcnNlKCk7aWYodCYmaS5GZWF0dXJlVGVzdC5pc0V2YWxTdXBwb3J0ZWQpe2NvbnN0IGU9KG5ldyBQb3N0U2NyaXB0Q29tcGlsZXIpLmNvbXBpbGUobCxzLG8pO2lmKGUpcmV0dXJuIG5ldyBGdW5jdGlvbigic3JjIiwic3JjT2Zmc2V0IiwiZGVzdCIsImRlc3RPZmZzZXQiLGUpfSgwLGkuaW5mbykoIlVuYWJsZSB0byBjb21waWxlIFBTIGZ1bmN0aW9uIik7Y29uc3QgaD1vLmxlbmd0aD4+MSx1PXMubGVuZ3RoPj4xLGQ9bmV3IFBvc3RTY3JpcHRFdmFsdWF0b3IobCksZj1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBnPTgxOTI7Y29uc3QgcD1uZXcgRmxvYXQzMkFycmF5KHUpO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RQb3N0U2NyaXB0Rm4oZSx0LGEscil7bGV0IGksbixzPSIiO2NvbnN0IGM9cDtmb3IoaT0wO2k8dTtpKyspe249ZVt0K2ldO2NbaV09bjtzKz1uKyJfIn1jb25zdCBsPWZbc107aWYodm9pZCAwIT09bCl7YS5zZXQobCxyKTtyZXR1cm59Y29uc3QgbT1uZXcgRmxvYXQzMkFycmF5KGgpLGI9ZC5leGVjdXRlKGMpLHk9Yi5sZW5ndGgtaDtmb3IoaT0wO2k8aDtpKyspe249Ylt5K2ldO2xldCBlPW9bMippXTtpZihuPGUpbj1lO2Vsc2V7ZT1vWzIqaSsxXTtuPmUmJihuPWUpfW1baV09bn1pZihnPjApe2ctLTtmW3NdPW19YS5zZXQobSxyKX19fWNsYXNzIFBvc3RTY3JpcHRTdGFja3tzdGF0aWMgTUFYX1NUQUNLX1NJWkU9MTAwO2NvbnN0cnVjdG9yKGUpe3RoaXMuc3RhY2s9ZT9BcnJheS5mcm9tKGUpOltdfXB1c2goZSl7aWYodGhpcy5zdGFjay5sZW5ndGg+PVBvc3RTY3JpcHRTdGFjay5NQVhfU1RBQ0tfU0laRSl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgb3ZlcmZsb3cuIik7dGhpcy5zdGFjay5wdXNoKGUpfXBvcCgpe2lmKHRoaXMuc3RhY2subGVuZ3RoPD0wKXRocm93IG5ldyBFcnJvcigiUG9zdFNjcmlwdCBmdW5jdGlvbiBzdGFjayB1bmRlcmZsb3cuIik7cmV0dXJuIHRoaXMuc3RhY2sucG9wKCl9Y29weShlKXtpZih0aGlzLnN0YWNrLmxlbmd0aCtlPj1Qb3N0U2NyaXB0U3RhY2suTUFYX1NUQUNLX1NJWkUpdGhyb3cgbmV3IEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIG92ZXJmbG93LiIpO2NvbnN0IHQ9dGhpcy5zdGFjaztmb3IobGV0IGE9dC5sZW5ndGgtZSxyPWUtMTtyPj0wO3ItLSxhKyspdC5wdXNoKHRbYV0pfWluZGV4KGUpe3RoaXMucHVzaCh0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLWUtMV0pfXJvbGwoZSx0KXtjb25zdCBhPXRoaXMuc3RhY2sscj1hLmxlbmd0aC1lLGk9YS5sZW5ndGgtMSxuPXIrKHQtTWF0aC5mbG9vcih0L2UpKmUpO2ZvcihsZXQgZT1yLHQ9aTtlPHQ7ZSsrLHQtLSl7Y29uc3Qgcj1hW2VdO2FbZV09YVt0XTthW3RdPXJ9Zm9yKGxldCBlPXIsdD1uLTE7ZTx0O2UrKyx0LS0pe2NvbnN0IHI9YVtlXTthW2VdPWFbdF07YVt0XT1yfWZvcihsZXQgZT1uLHQ9aTtlPHQ7ZSsrLHQtLSl7Y29uc3Qgcj1hW2VdO2FbZV09YVt0XTthW3RdPXJ9fX1jbGFzcyBQb3N0U2NyaXB0RXZhbHVhdG9ye2NvbnN0cnVjdG9yKGUpe3RoaXMub3BlcmF0b3JzPWV9ZXhlY3V0ZShlKXtjb25zdCB0PW5ldyBQb3N0U2NyaXB0U3RhY2soZSk7bGV0IGE9MDtjb25zdCByPXRoaXMub3BlcmF0b3JzLG49ci5sZW5ndGg7bGV0IHMsbyxjO2Zvcig7YTxuOyl7cz1yW2ErK107aWYoIm51bWJlciIhPXR5cGVvZiBzKXN3aXRjaChzKXtjYXNlImp6IjpjPXQucG9wKCk7bz10LnBvcCgpO298fChhPWMpO2JyZWFrO2Nhc2UiaiI6bz10LnBvcCgpO2E9bzticmVhaztjYXNlImFicyI6bz10LnBvcCgpO3QucHVzaChNYXRoLmFicyhvKSk7YnJlYWs7Y2FzZSJhZGQiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8rYyk7YnJlYWs7Y2FzZSJhbmQiOmM9dC5wb3AoKTtvPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbyYmImJvb2xlYW4iPT10eXBlb2YgYz90LnB1c2gobyYmYyk6dC5wdXNoKG8mYyk7YnJlYWs7Y2FzZSJhdGFuIjpjPXQucG9wKCk7bz10LnBvcCgpO289TWF0aC5hdGFuMihvLGMpL01hdGguUEkqMTgwO288MCYmKG8rPTM2MCk7dC5wdXNoKG8pO2JyZWFrO2Nhc2UiYml0c2hpZnQiOmM9dC5wb3AoKTtvPXQucG9wKCk7bz4wP3QucHVzaChvPDxjKTp0LnB1c2gobz4+Yyk7YnJlYWs7Y2FzZSJjZWlsaW5nIjpvPXQucG9wKCk7dC5wdXNoKE1hdGguY2VpbChvKSk7YnJlYWs7Y2FzZSJjb3B5IjpvPXQucG9wKCk7dC5jb3B5KG8pO2JyZWFrO2Nhc2UiY29zIjpvPXQucG9wKCk7dC5wdXNoKE1hdGguY29zKG8lMzYwLzE4MCpNYXRoLlBJKSk7YnJlYWs7Y2FzZSJjdmkiOm89MHx0LnBvcCgpO3QucHVzaChvKTticmVhaztjYXNlImN2ciI6YnJlYWs7Y2FzZSJkaXYiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8vYyk7YnJlYWs7Y2FzZSJkdXAiOnQuY29weSgxKTticmVhaztjYXNlImVxIjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvPT09Yyk7YnJlYWs7Y2FzZSJleGNoIjp0LnJvbGwoMiwxKTticmVhaztjYXNlImV4cCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobyoqYyk7YnJlYWs7Y2FzZSJmYWxzZSI6dC5wdXNoKCExKTticmVhaztjYXNlImZsb29yIjpvPXQucG9wKCk7dC5wdXNoKE1hdGguZmxvb3IobykpO2JyZWFrO2Nhc2UiZ2UiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8+PWMpO2JyZWFrO2Nhc2UiZ3QiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8+Yyk7YnJlYWs7Y2FzZSJpZGl2IjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvL2N8MCk7YnJlYWs7Y2FzZSJpbmRleCI6bz10LnBvcCgpO3QuaW5kZXgobyk7YnJlYWs7Y2FzZSJsZSI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobzw9Yyk7YnJlYWs7Y2FzZSJsbiI6bz10LnBvcCgpO3QucHVzaChNYXRoLmxvZyhvKSk7YnJlYWs7Y2FzZSJsb2ciOm89dC5wb3AoKTt0LnB1c2goTWF0aC5sb2cobykvTWF0aC5MTjEwKTticmVhaztjYXNlImx0IjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvPGMpO2JyZWFrO2Nhc2UibW9kIjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvJWMpO2JyZWFrO2Nhc2UibXVsIjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvKmMpO2JyZWFrO2Nhc2UibmUiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8hPT1jKTticmVhaztjYXNlIm5lZyI6bz10LnBvcCgpO3QucHVzaCgtbyk7YnJlYWs7Y2FzZSJub3QiOm89dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBvP3QucHVzaCghbyk6dC5wdXNoKH5vKTticmVhaztjYXNlIm9yIjpjPXQucG9wKCk7bz10LnBvcCgpOyJib29sZWFuIj09dHlwZW9mIG8mJiJib29sZWFuIj09dHlwZW9mIGM/dC5wdXNoKG98fGMpOnQucHVzaChvfGMpO2JyZWFrO2Nhc2UicG9wIjp0LnBvcCgpO2JyZWFrO2Nhc2Uicm9sbCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnJvbGwobyxjKTticmVhaztjYXNlInJvdW5kIjpvPXQucG9wKCk7dC5wdXNoKE1hdGgucm91bmQobykpO2JyZWFrO2Nhc2Uic2luIjpvPXQucG9wKCk7dC5wdXNoKE1hdGguc2luKG8lMzYwLzE4MCpNYXRoLlBJKSk7YnJlYWs7Y2FzZSJzcXJ0IjpvPXQucG9wKCk7dC5wdXNoKE1hdGguc3FydChvKSk7YnJlYWs7Y2FzZSJzdWIiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8tYyk7YnJlYWs7Y2FzZSJ0cnVlIjp0LnB1c2goITApO2JyZWFrO2Nhc2UidHJ1bmNhdGUiOm89dC5wb3AoKTtvPW88MD9NYXRoLmNlaWwobyk6TWF0aC5mbG9vcihvKTt0LnB1c2gobyk7YnJlYWs7Y2FzZSJ4b3IiOmM9dC5wb3AoKTtvPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbyYmImJvb2xlYW4iPT10eXBlb2YgYz90LnB1c2gobyE9PWMpOnQucHVzaChvXmMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoYFVua25vd24gb3BlcmF0b3IgJHtzfWApfWVsc2UgdC5wdXNoKHMpfXJldHVybiB0LnN0YWNrfX10LlBvc3RTY3JpcHRFdmFsdWF0b3I9UG9zdFNjcmlwdEV2YWx1YXRvcjtjbGFzcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUpe3RoaXMudHlwZT1lfXZpc2l0KGUpeygwLGkudW5yZWFjaGFibGUpKCJhYnN0cmFjdCBtZXRob2QiKX19Y2xhc3MgQXN0QXJndW1lbnQgZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiYXJncyIpO3RoaXMuaW5kZXg9ZTt0aGlzLm1pbj10O3RoaXMubWF4PWF9dmlzaXQoZSl7ZS52aXNpdEFyZ3VtZW50KHRoaXMpfX1jbGFzcyBBc3RMaXRlcmFsIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigibGl0ZXJhbCIpO3RoaXMubnVtYmVyPWU7dGhpcy5taW49ZTt0aGlzLm1heD1lfXZpc2l0KGUpe2UudmlzaXRMaXRlcmFsKHRoaXMpfX1jbGFzcyBBc3RCaW5hcnlPcGVyYXRpb24gZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhLHIsaSl7c3VwZXIoImJpbmFyeSIpO3RoaXMub3A9ZTt0aGlzLmFyZzE9dDt0aGlzLmFyZzI9YTt0aGlzLm1pbj1yO3RoaXMubWF4PWl9dmlzaXQoZSl7ZS52aXNpdEJpbmFyeU9wZXJhdGlvbih0aGlzKX19Y2xhc3MgQXN0TWluIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCJtYXgiKTt0aGlzLmFyZz1lO3RoaXMubWluPWUubWluO3RoaXMubWF4PXR9dmlzaXQoZSl7ZS52aXNpdE1pbih0aGlzKX19Y2xhc3MgQXN0VmFyaWFibGUgZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigidmFyIik7dGhpcy5pbmRleD1lO3RoaXMubWluPXQ7dGhpcy5tYXg9YX12aXNpdChlKXtlLnZpc2l0VmFyaWFibGUodGhpcyl9fWNsYXNzIEFzdFZhcmlhYmxlRGVmaW5pdGlvbiBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigiZGVmaW5pdGlvbiIpO3RoaXMudmFyaWFibGU9ZTt0aGlzLmFyZz10fXZpc2l0KGUpe2UudmlzaXRWYXJpYWJsZURlZmluaXRpb24odGhpcyl9fWNsYXNzIEV4cHJlc3Npb25CdWlsZGVyVmlzaXRvcntjb25zdHJ1Y3Rvcigpe3RoaXMucGFydHM9W119dmlzaXRBcmd1bWVudChlKXt0aGlzLnBhcnRzLnB1c2goIk1hdGgubWF4KCIsZS5taW4sIiwgTWF0aC5taW4oIixlLm1heCwiLCBzcmNbc3JjT2Zmc2V0ICsgIixlLmluZGV4LCJdKSkiKX12aXNpdFZhcmlhYmxlKGUpe3RoaXMucGFydHMucHVzaCgidiIsZS5pbmRleCl9dmlzaXRMaXRlcmFsKGUpe3RoaXMucGFydHMucHVzaChlLm51bWJlcil9dmlzaXRCaW5hcnlPcGVyYXRpb24oZSl7dGhpcy5wYXJ0cy5wdXNoKCIoIik7ZS5hcmcxLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiICIsZS5vcCwiICIpO2UuYXJnMi52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIikiKX12aXNpdFZhcmlhYmxlRGVmaW5pdGlvbihlKXt0aGlzLnBhcnRzLnB1c2goInZhciAiKTtlLnZhcmlhYmxlLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiID0gIik7ZS5hcmcudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCI7Iil9dmlzaXRNaW4oZSl7dGhpcy5wYXJ0cy5wdXNoKCJNYXRoLm1pbigiKTtlLmFyZy52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiwgIixlLm1heCwiKSIpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucGFydHMuam9pbigiIil9fWZ1bmN0aW9uIGJ1aWxkQWRkT3BlcmF0aW9uKGUsdCl7cmV0dXJuImxpdGVyYWwiPT09dC50eXBlJiYwPT09dC5udW1iZXI/ZToibGl0ZXJhbCI9PT1lLnR5cGUmJjA9PT1lLm51bWJlcj90OiJsaXRlcmFsIj09PXQudHlwZSYmImxpdGVyYWwiPT09ZS50eXBlP25ldyBBc3RMaXRlcmFsKGUubnVtYmVyK3QubnVtYmVyKTpuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCIrIixlLHQsZS5taW4rdC5taW4sZS5tYXgrdC5tYXgpfWZ1bmN0aW9uIGJ1aWxkTXVsT3BlcmF0aW9uKGUsdCl7aWYoImxpdGVyYWwiPT09dC50eXBlKXtpZigwPT09dC5udW1iZXIpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKDApO2lmKDE9PT10Lm51bWJlcilyZXR1cm4gZTtpZigibGl0ZXJhbCI9PT1lLnR5cGUpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKGUubnVtYmVyKnQubnVtYmVyKX1pZigibGl0ZXJhbCI9PT1lLnR5cGUpe2lmKDA9PT1lLm51bWJlcilyZXR1cm4gbmV3IEFzdExpdGVyYWwoMCk7aWYoMT09PWUubnVtYmVyKXJldHVybiB0fWNvbnN0IGE9TWF0aC5taW4oZS5taW4qdC5taW4sZS5taW4qdC5tYXgsZS5tYXgqdC5taW4sZS5tYXgqdC5tYXgpLHI9TWF0aC5tYXgoZS5taW4qdC5taW4sZS5taW4qdC5tYXgsZS5tYXgqdC5taW4sZS5tYXgqdC5tYXgpO3JldHVybiBuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCIqIixlLHQsYSxyKX1mdW5jdGlvbiBidWlsZFN1Yk9wZXJhdGlvbihlLHQpe2lmKCJsaXRlcmFsIj09PXQudHlwZSl7aWYoMD09PXQubnVtYmVyKXJldHVybiBlO2lmKCJsaXRlcmFsIj09PWUudHlwZSlyZXR1cm4gbmV3IEFzdExpdGVyYWwoZS5udW1iZXItdC5udW1iZXIpfXJldHVybiJiaW5hcnkiPT09dC50eXBlJiYiLSI9PT10Lm9wJiYibGl0ZXJhbCI9PT1lLnR5cGUmJjE9PT1lLm51bWJlciYmImxpdGVyYWwiPT09dC5hcmcxLnR5cGUmJjE9PT10LmFyZzEubnVtYmVyP3QuYXJnMjpuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCItIixlLHQsZS5taW4tdC5tYXgsZS5tYXgtdC5taW4pfWZ1bmN0aW9uIGJ1aWxkTWluT3BlcmF0aW9uKGUsdCl7cmV0dXJuIGUubWluPj10P25ldyBBc3RMaXRlcmFsKHQpOmUubWF4PD10P2U6bmV3IEFzdE1pbihlLHQpfWNsYXNzIFBvc3RTY3JpcHRDb21waWxlcntjb21waWxlKGUsdCxhKXtjb25zdCByPVtdLGk9W10sbj10Lmxlbmd0aD4+MSxzPWEubGVuZ3RoPj4xO2xldCBvLGMsbCxoLHUsZCxmLGcscD0wO2ZvcihsZXQgZT0wO2U8bjtlKyspci5wdXNoKG5ldyBBc3RBcmd1bWVudChlLHRbMiplXSx0WzIqZSsxXSkpO2ZvcihsZXQgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrKyl7Zz1lW3RdO2lmKCJudW1iZXIiIT10eXBlb2YgZylzd2l0Y2goZyl7Y2FzZSJhZGQiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRBZGRPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJjdnIiOmlmKHIubGVuZ3RoPDEpcmV0dXJuIG51bGw7YnJlYWs7Y2FzZSJtdWwiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRNdWxPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJzdWIiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRTdWJPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJleGNoIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO3U9ci5wb3AoKTtkPXIucG9wKCk7ci5wdXNoKHUsZCk7YnJlYWs7Y2FzZSJwb3AiOmlmKHIubGVuZ3RoPDEpcmV0dXJuIG51bGw7ci5wb3AoKTticmVhaztjYXNlImluZGV4IjppZihyLmxlbmd0aDwxKXJldHVybiBudWxsO2w9ci5wb3AoKTtpZigibGl0ZXJhbCIhPT1sLnR5cGUpcmV0dXJuIG51bGw7bz1sLm51bWJlcjtpZihvPDB8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHxyLmxlbmd0aDxvKXJldHVybiBudWxsO3U9cltyLmxlbmd0aC1vLTFdO2lmKCJsaXRlcmFsIj09PXUudHlwZXx8InZhciI9PT11LnR5cGUpe3IucHVzaCh1KTticmVha31mPW5ldyBBc3RWYXJpYWJsZShwKyssdS5taW4sdS5tYXgpO3Jbci5sZW5ndGgtby0xXT1mO3IucHVzaChmKTtpLnB1c2gobmV3IEFzdFZhcmlhYmxlRGVmaW5pdGlvbihmLHUpKTticmVhaztjYXNlImR1cCI6aWYoci5sZW5ndGg8MSlyZXR1cm4gbnVsbDtpZigibnVtYmVyIj09dHlwZW9mIGVbdCsxXSYmImd0Ij09PWVbdCsyXSYmZVt0KzNdPT09dCs3JiYianoiPT09ZVt0KzRdJiYicG9wIj09PWVbdCs1XSYmZVt0KzZdPT09ZVt0KzFdKXtsPXIucG9wKCk7ci5wdXNoKGJ1aWxkTWluT3BlcmF0aW9uKGwsZVt0KzFdKSk7dCs9NjticmVha311PXIuYXQoLTEpO2lmKCJsaXRlcmFsIj09PXUudHlwZXx8InZhciI9PT11LnR5cGUpe3IucHVzaCh1KTticmVha31mPW5ldyBBc3RWYXJpYWJsZShwKyssdS5taW4sdS5tYXgpO3Jbci5sZW5ndGgtMV09ZjtyLnB1c2goZik7aS5wdXNoKG5ldyBBc3RWYXJpYWJsZURlZmluaXRpb24oZix1KSk7YnJlYWs7Y2FzZSJyb2xsIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO2g9ci5wb3AoKTtsPXIucG9wKCk7aWYoImxpdGVyYWwiIT09aC50eXBlfHwibGl0ZXJhbCIhPT1sLnR5cGUpcmV0dXJuIG51bGw7Yz1oLm51bWJlcjtvPWwubnVtYmVyO2lmKG88PTB8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHwhTnVtYmVyLmlzSW50ZWdlcihjKXx8ci5sZW5ndGg8bylyZXR1cm4gbnVsbDtjPShjJW8rbyklbztpZigwPT09YylicmVhaztyLnB1c2goLi4uci5zcGxpY2Uoci5sZW5ndGgtbyxvLWMpKTticmVhaztkZWZhdWx0OnJldHVybiBudWxsfWVsc2Ugci5wdXNoKG5ldyBBc3RMaXRlcmFsKGcpKX1pZihyLmxlbmd0aCE9PXMpcmV0dXJuIG51bGw7Y29uc3QgbT1bXTtmb3IoY29uc3QgZSBvZiBpKXtjb25zdCB0PW5ldyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3I7ZS52aXNpdCh0KTttLnB1c2godC50b1N0cmluZygpKX1mb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9cltlXSxpPW5ldyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3I7dC52aXNpdChpKTtjb25zdCBuPWFbMiplXSxzPWFbMiplKzFdLG89W2kudG9TdHJpbmcoKV07aWYobj50Lm1pbil7by51bnNoaWZ0KCJNYXRoLm1heCgiLG4sIiwgIik7by5wdXNoKCIpIil9aWYoczx0Lm1heCl7by51bnNoaWZ0KCJNYXRoLm1pbigiLHMsIiwgIik7by5wdXNoKCIpIil9by51bnNoaWZ0KCJkZXN0W2Rlc3RPZmZzZXQgKyAiLGUsIl0gPSAiKTtvLnB1c2goIjsiKTttLnB1c2goby5qb2luKCIiKSl9cmV0dXJuIG0uam9pbigiXG4iKX19dC5Qb3N0U2NyaXB0Q29tcGlsZXI9UG9zdFNjcmlwdENvbXBpbGVyfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUG9zdFNjcmlwdFBhcnNlcj10LlBvc3RTY3JpcHRMZXhlcj12b2lkIDA7dmFyIHI9YSgyKSxpPWEoNCksbj1hKDMpO3QuUG9zdFNjcmlwdFBhcnNlcj1jbGFzcyBQb3N0U2NyaXB0UGFyc2Vye2NvbnN0cnVjdG9yKGUpe3RoaXMubGV4ZXI9ZTt0aGlzLm9wZXJhdG9ycz1bXTt0aGlzLnRva2VuPW51bGw7dGhpcy5wcmV2PW51bGx9bmV4dFRva2VuKCl7dGhpcy5wcmV2PXRoaXMudG9rZW47dGhpcy50b2tlbj10aGlzLmxleGVyLmdldFRva2VuKCl9YWNjZXB0KGUpe2lmKHRoaXMudG9rZW4udHlwZT09PWUpe3RoaXMubmV4dFRva2VuKCk7cmV0dXJuITB9cmV0dXJuITF9ZXhwZWN0KGUpe2lmKHRoaXMuYWNjZXB0KGUpKXJldHVybiEwO3Rocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbmV4cGVjdGVkIHN5bWJvbDogZm91bmQgJHt0aGlzLnRva2VuLnR5cGV9IGV4cGVjdGVkICR7ZX0uYCl9cGFyc2UoKXt0aGlzLm5leHRUb2tlbigpO3RoaXMuZXhwZWN0KHMuTEJSQUNFKTt0aGlzLnBhcnNlQmxvY2soKTt0aGlzLmV4cGVjdChzLlJCUkFDRSk7cmV0dXJuIHRoaXMub3BlcmF0b3JzfXBhcnNlQmxvY2soKXtmb3IoOzspaWYodGhpcy5hY2NlcHQocy5OVU1CRVIpKXRoaXMub3BlcmF0b3JzLnB1c2godGhpcy5wcmV2LnZhbHVlKTtlbHNlIGlmKHRoaXMuYWNjZXB0KHMuT1BFUkFUT1IpKXRoaXMub3BlcmF0b3JzLnB1c2godGhpcy5wcmV2LnZhbHVlKTtlbHNle2lmKCF0aGlzLmFjY2VwdChzLkxCUkFDRSkpcmV0dXJuO3RoaXMucGFyc2VDb25kaXRpb24oKX19cGFyc2VDb25kaXRpb24oKXtjb25zdCBlPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3Qocy5SQlJBQ0UpO2lmKHRoaXMuYWNjZXB0KHMuSUYpKXt0aGlzLm9wZXJhdG9yc1tlXT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5vcGVyYXRvcnNbZSsxXT0ianoifWVsc2V7aWYoIXRoaXMuYWNjZXB0KHMuTEJSQUNFKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiUFMgRnVuY3Rpb246IGVycm9yIHBhcnNpbmcgY29uZGl0aW9uYWwuIik7e2NvbnN0IHQ9dGhpcy5vcGVyYXRvcnMubGVuZ3RoO3RoaXMub3BlcmF0b3JzLnB1c2gobnVsbCxudWxsKTtjb25zdCBhPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLnBhcnNlQmxvY2soKTt0aGlzLmV4cGVjdChzLlJCUkFDRSk7dGhpcy5leHBlY3Qocy5JRkVMU0UpO3RoaXMub3BlcmF0b3JzW3RdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1t0KzFdPSJqIjt0aGlzLm9wZXJhdG9yc1tlXT1hO3RoaXMub3BlcmF0b3JzW2UrMV09Imp6In19fX07Y29uc3Qgcz17TEJSQUNFOjAsUkJSQUNFOjEsTlVNQkVSOjIsT1BFUkFUT1I6MyxJRjo0LElGRUxTRTo1fTtjbGFzcyBQb3N0U2NyaXB0VG9rZW57c3RhdGljIGdldCBvcENhY2hlKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIm9wQ2FjaGUiLE9iamVjdC5jcmVhdGUobnVsbCkpfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy50eXBlPWU7dGhpcy52YWx1ZT10fXN0YXRpYyBnZXRPcGVyYXRvcihlKXtyZXR1cm4gUG9zdFNjcmlwdFRva2VuLm9wQ2FjaGVbZV18fD1uZXcgUG9zdFNjcmlwdFRva2VuKHMuT1BFUkFUT1IsZSl9c3RhdGljIGdldCBMQlJBQ0UoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiTEJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHMuTEJSQUNFLCJ7IikpfXN0YXRpYyBnZXQgUkJSQUNFKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIlJCUkFDRSIsbmV3IFBvc3RTY3JpcHRUb2tlbihzLlJCUkFDRSwifSIpKX1zdGF0aWMgZ2V0IElGKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIklGIixuZXcgUG9zdFNjcmlwdFRva2VuKHMuSUYsIklGIikpfXN0YXRpYyBnZXQgSUZFTFNFKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIklGRUxTRSIsbmV3IFBvc3RTY3JpcHRUb2tlbihzLklGRUxTRSwiSUZFTFNFIikpfX10LlBvc3RTY3JpcHRMZXhlcj1jbGFzcyBQb3N0U2NyaXB0TGV4ZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCk7dGhpcy5zdHJCdWY9W119bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9Z2V0VG9rZW4oKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZih0PDApcmV0dXJuIGkuRU9GO2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoISgwLG4uaXNXaGl0ZVNwYWNlKSh0KSlicmVhazt0PXRoaXMubmV4dENoYXIoKX1zd2l0Y2goMHx0KXtjYXNlIDQ4OmNhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNTI6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNTU6Y2FzZSA1NjpjYXNlIDU3OmNhc2UgNDM6Y2FzZSA0NTpjYXNlIDQ2OnJldHVybiBuZXcgUG9zdFNjcmlwdFRva2VuKHMuTlVNQkVSLHRoaXMuZ2V0TnVtYmVyKCkpO2Nhc2UgMTIzOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gUG9zdFNjcmlwdFRva2VuLkxCUkFDRTtjYXNlIDEyNTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5SQlJBQ0V9Y29uc3QgYT10aGlzLnN0ckJ1ZjthLmxlbmd0aD0wO2FbMF09U3RyaW5nLmZyb21DaGFyQ29kZSh0KTtmb3IoOyh0PXRoaXMubmV4dENoYXIoKSk+PTAmJih0Pj02NSYmdDw9OTB8fHQ+PTk3JiZ0PD0xMjIpOylhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSk7Y29uc3Qgcj1hLmpvaW4oIiIpO3N3aXRjaChyLnRvTG93ZXJDYXNlKCkpe2Nhc2UiaWYiOnJldHVybiBQb3N0U2NyaXB0VG9rZW4uSUY7Y2FzZSJpZmVsc2UiOnJldHVybiBQb3N0U2NyaXB0VG9rZW4uSUZFTFNFO2RlZmF1bHQ6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5nZXRPcGVyYXRvcihyKX19Z2V0TnVtYmVyKCl7bGV0IGU9dGhpcy5jdXJyZW50Q2hhcjtjb25zdCB0PXRoaXMuc3RyQnVmO3QubGVuZ3RoPTA7dFswXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGUpO2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MCYmKGU+PTQ4JiZlPD01N3x8NDU9PT1lfHw0Nj09PWUpOyl0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7Y29uc3QgYT1wYXJzZUZsb2F0KHQuam9pbigiIikpO2lmKGlzTmFOKGEpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIGZsb2F0aW5nIHBvaW50IG51bWJlcjogJHthfWApO3JldHVybiBhfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5SZWdpb25hbEltYWdlQ2FjaGU9dC5Mb2NhbFRpbGluZ1BhdHRlcm5DYWNoZT10LkxvY2FsSW1hZ2VDYWNoZT10LkxvY2FsR1N0YXRlQ2FjaGU9dC5Mb2NhbEZ1bmN0aW9uQ2FjaGU9dC5Mb2NhbENvbG9yU3BhY2VDYWNoZT10Lkdsb2JhbEltYWdlQ2FjaGU9dm9pZCAwO3ZhciByPWEoMiksaT1hKDQpO2NsYXNzIEJhc2VMb2NhbENhY2hle2NvbnN0cnVjdG9yKGUpe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlTG9jYWxDYWNoZSYmKDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VMb2NhbENhY2hlLiIpO3RoaXMuX29ubHlSZWZzPSEwPT09ZT8ub25seVJlZnM7aWYoIXRoaXMuX29ubHlSZWZzKXt0aGlzLl9uYW1lUmVmTWFwPW5ldyBNYXA7dGhpcy5faW1hZ2VNYXA9bmV3IE1hcH10aGlzLl9pbWFnZUNhY2hlPW5ldyBpLlJlZlNldENhY2hlfWdldEJ5TmFtZShlKXt0aGlzLl9vbmx5UmVmcyYmKDAsci51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBgZ2V0QnlOYW1lYCBtZXRob2QuIik7Y29uc3QgdD10aGlzLl9uYW1lUmVmTWFwLmdldChlKTtyZXR1cm4gdD90aGlzLmdldEJ5UmVmKHQpOnRoaXMuX2ltYWdlTWFwLmdldChlKXx8bnVsbH1nZXRCeVJlZihlKXtyZXR1cm4gdGhpcy5faW1hZ2VDYWNoZS5nZXQoZSl8fG51bGx9c2V0KGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBzZXRgIGNhbGxlZC4iKX19dC5Mb2NhbEltYWdlQ2FjaGU9Y2xhc3MgTG9jYWxJbWFnZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGUsdD1udWxsLGEpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsSW1hZ2VDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsYSl9fTt0LkxvY2FsQ29sb3JTcGFjZUNhY2hlPWNsYXNzIExvY2FsQ29sb3JTcGFjZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGU9bnVsbCx0PW51bGwsYSl7aWYoInN0cmluZyIhPXR5cGVvZiBlJiYhdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsQ29sb3JTcGFjZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhbmQvb3IgInJlZiIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO251bGwhPT1lJiZ0aGlzLl9uYW1lUmVmTWFwLnNldChlLHQpO3RoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9ZWxzZSB0aGlzLl9pbWFnZU1hcC5oYXMoZSl8fHRoaXMuX2ltYWdlTWFwLnNldChlLGEpfX07dC5Mb2NhbEZ1bmN0aW9uQ2FjaGU9Y2xhc3MgTG9jYWxGdW5jdGlvbkNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGEpe2lmKCF0KXRocm93IG5ldyBFcnJvcignTG9jYWxGdW5jdGlvbkNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfX07dC5Mb2NhbEdTdGF0ZUNhY2hlPWNsYXNzIExvY2FsR1N0YXRlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSx0PW51bGwsYSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcignTG9jYWxHU3RhdGVDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsYSl9fTt0LkxvY2FsVGlsaW5nUGF0dGVybkNhY2hlPWNsYXNzIExvY2FsVGlsaW5nUGF0dGVybkNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGEpe2lmKCF0KXRocm93IG5ldyBFcnJvcignTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9fTt0LlJlZ2lvbmFsSW1hZ2VDYWNoZT1jbGFzcyBSZWdpb25hbEltYWdlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoZT1udWxsLHQsYSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdSZWdpb25hbEltYWdlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9fTtjbGFzcyBHbG9iYWxJbWFnZUNhY2hle3N0YXRpYyBOVU1fUEFHRVNfVEhSRVNIT0xEPTI7c3RhdGljIE1JTl9JTUFHRVNfVE9fQ0FDSEU9MTA7c3RhdGljIE1BWF9CWVRFX1NJWkU9NSpyLk1BWF9JTUFHRV9TSVpFX1RPX0NBQ0hFO2NvbnN0cnVjdG9yKCl7dGhpcy5fcmVmQ2FjaGU9bmV3IGkuUmVmU2V0Q2FjaGU7dGhpcy5faW1hZ2VDYWNoZT1uZXcgaS5SZWZTZXRDYWNoZX1nZXQgX2J5dGVTaXplKCl7bGV0IGU9MDtmb3IoY29uc3QgdCBvZiB0aGlzLl9pbWFnZUNhY2hlKWUrPXQuYnl0ZVNpemU7cmV0dXJuIGV9Z2V0IF9jYWNoZUxpbWl0UmVhY2hlZCgpe3JldHVybiEodGhpcy5faW1hZ2VDYWNoZS5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTUlOX0lNQUdFU19UT19DQUNIRSkmJiEodGhpcy5fYnl0ZVNpemU8R2xvYmFsSW1hZ2VDYWNoZS5NQVhfQllURV9TSVpFKX1zaG91bGRDYWNoZShlLHQpe2xldCBhPXRoaXMuX3JlZkNhY2hlLmdldChlKTtpZighYSl7YT1uZXcgU2V0O3RoaXMuX3JlZkNhY2hlLnB1dChlLGEpfWEuYWRkKHQpO3JldHVybiEoYS5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTlVNX1BBR0VTX1RIUkVTSE9MRCkmJiEoIXRoaXMuX2ltYWdlQ2FjaGUuaGFzKGUpJiZ0aGlzLl9jYWNoZUxpbWl0UmVhY2hlZCl9YWRkQnl0ZVNpemUoZSx0KXtjb25zdCBhPXRoaXMuX2ltYWdlQ2FjaGUuZ2V0KGUpO2EmJihhLmJ5dGVTaXplfHwoYS5ieXRlU2l6ZT10KSl9Z2V0RGF0YShlLHQpe2NvbnN0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFhKXJldHVybiBudWxsO2lmKGEuc2l6ZTxHbG9iYWxJbWFnZUNhY2hlLk5VTV9QQUdFU19USFJFU0hPTEQpcmV0dXJuIG51bGw7Y29uc3Qgcj10aGlzLl9pbWFnZUNhY2hlLmdldChlKTtpZighcilyZXR1cm4gbnVsbDthLmFkZCh0KTtyZXR1cm4gcn1zZXREYXRhKGUsdCl7aWYoIXRoaXMuX3JlZkNhY2hlLmhhcyhlKSl0aHJvdyBuZXcgRXJyb3IoJ0dsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YSAtIGV4cGVjdGVkICJzaG91bGRDYWNoZSIgdG8gaGF2ZSBiZWVuIGNhbGxlZC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyhlKXx8KHRoaXMuX2NhY2hlTGltaXRSZWFjaGVkPygwLHIud2FybikoIkdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YSAtIGNhY2hlIGxpbWl0IHJlYWNoZWQuIik6dGhpcy5faW1hZ2VDYWNoZS5wdXQoZSx0KSl9Y2xlYXIoZT0hMSl7ZXx8dGhpcy5fcmVmQ2FjaGUuY2xlYXIoKTt0aGlzLl9pbWFnZUNhY2hlLmNsZWFyKCl9fXQuR2xvYmFsSW1hZ2VDYWNoZT1HbG9iYWxJbWFnZUNhY2hlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuYmlkaT1mdW5jdGlvbiBiaWRpKGUsdD0tMSxhPSExKXtsZXQgYz0hMDtjb25zdCBsPWUubGVuZ3RoO2lmKDA9PT1sfHxhKXJldHVybiBjcmVhdGVCaWRpVGV4dChlLGMsYSk7cy5sZW5ndGg9bDtvLmxlbmd0aD1sO2xldCBoLHUsZD0wO2ZvcihoPTA7aDxsOysraCl7c1toXT1lLmNoYXJBdChoKTtjb25zdCB0PWUuY2hhckNvZGVBdChoKTtsZXQgYT0iTCI7aWYodDw9MjU1KWE9aVt0XTtlbHNlIGlmKDE0MjQ8PXQmJnQ8PTE1MjQpYT0iUiI7ZWxzZSBpZigxNTM2PD10JiZ0PD0xNzkxKXthPW5bMjU1JnRdO2F8fCgwLHIud2FybikoIkJpZGk6IGludmFsaWQgVW5pY29kZSBjaGFyYWN0ZXIgIit0LnRvU3RyaW5nKDE2KSl9ZWxzZSgxNzkyPD10JiZ0PD0yMjIwfHw2NDMzNjw9dCYmdDw9NjUwMjN8fDY1MTM2PD10JiZ0PD02NTI3OSkmJihhPSJBTCIpOyJSIiE9PWEmJiJBTCIhPT1hJiYiQU4iIT09YXx8ZCsrO29baF09YX1pZigwPT09ZCl7Yz0hMDtyZXR1cm4gY3JlYXRlQmlkaVRleHQoZSxjKX1pZigtMT09PXQpaWYoZC9sPC4zJiZsPjQpe2M9ITA7dD0wfWVsc2V7Yz0hMTt0PTF9Y29uc3QgZj1bXTtmb3IoaD0wO2g8bDsrK2gpZltoXT10O2NvbnN0IGc9aXNPZGQodCk/IlIiOiJMIixwPWcsbT1wO2xldCBiLHk9cDtmb3IoaD0wO2g8bDsrK2gpIk5TTSI9PT1vW2hdP29baF09eTp5PW9baF07eT1wO2ZvcihoPTA7aDxsOysraCl7Yj1vW2hdOyJFTiI9PT1iP29baF09IkFMIj09PXk/IkFOIjoiRU4iOiJSIiE9PWImJiJMIiE9PWImJiJBTCIhPT1ifHwoeT1iKX1mb3IoaD0wO2g8bDsrK2gpe2I9b1toXTsiQUwiPT09YiYmKG9baF09IlIiKX1mb3IoaD0xO2g8bC0xOysraCl7IkVTIj09PW9baF0mJiJFTiI9PT1vW2gtMV0mJiJFTiI9PT1vW2grMV0mJihvW2hdPSJFTiIpOyJDUyIhPT1vW2hdfHwiRU4iIT09b1toLTFdJiYiQU4iIT09b1toLTFdfHxvW2grMV0hPT1vW2gtMV18fChvW2hdPW9baC0xXSl9Zm9yKGg9MDtoPGw7KytoKWlmKCJFTiI9PT1vW2hdKXtmb3IobGV0IGU9aC0xO2U+PTAmJiJFVCI9PT1vW2VdOy0tZSlvW2VdPSJFTiI7Zm9yKGxldCBlPWgrMTtlPGwmJiJFVCI9PT1vW2VdOysrZSlvW2VdPSJFTiJ9Zm9yKGg9MDtoPGw7KytoKXtiPW9baF07IldTIiE9PWImJiJFUyIhPT1iJiYiRVQiIT09YiYmIkNTIiE9PWJ8fChvW2hdPSJPTiIpfXk9cDtmb3IoaD0wO2g8bDsrK2gpe2I9b1toXTsiRU4iPT09Yj9vW2hdPSJMIj09PXk/IkwiOiJFTiI6IlIiIT09YiYmIkwiIT09Ynx8KHk9Yil9Zm9yKGg9MDtoPGw7KytoKWlmKCJPTiI9PT1vW2hdKXtjb25zdCBlPWZpbmRVbmVxdWFsKG8saCsxLCJPTiIpO2xldCB0PXA7aD4wJiYodD1vW2gtMV0pO2xldCBhPW07ZSsxPGwmJihhPW9bZSsxXSk7IkwiIT09dCYmKHQ9IlIiKTsiTCIhPT1hJiYoYT0iUiIpO3Q9PT1hJiZzZXRWYWx1ZXMobyxoLGUsdCk7aD1lLTF9Zm9yKGg9MDtoPGw7KytoKSJPTiI9PT1vW2hdJiYob1toXT1nKTtmb3IoaD0wO2g8bDsrK2gpe2I9b1toXTtpc0V2ZW4oZltoXSk/IlIiPT09Yj9mW2hdKz0xOiJBTiIhPT1iJiYiRU4iIT09Ynx8KGZbaF0rPTIpOiJMIiE9PWImJiJBTiIhPT1iJiYiRU4iIT09Ynx8KGZbaF0rPTEpfWxldCB3LFM9LTEseD05OTtmb3IoaD0wLHU9Zi5sZW5ndGg7aDx1OysraCl7dz1mW2hdO1M8dyYmKFM9dyk7eD53JiZpc09kZCh3KSYmKHg9dyl9Zm9yKHc9Uzt3Pj14Oy0tdyl7bGV0IGU9LTE7Zm9yKGg9MCx1PWYubGVuZ3RoO2g8dTsrK2gpaWYoZltoXTx3KXtpZihlPj0wKXtyZXZlcnNlVmFsdWVzKHMsZSxoKTtlPS0xfX1lbHNlIGU8MCYmKGU9aCk7ZT49MCYmcmV2ZXJzZVZhbHVlcyhzLGUsZi5sZW5ndGgpfWZvcihoPTAsdT1zLmxlbmd0aDtoPHU7KytoKXtjb25zdCBlPXNbaF07IjwiIT09ZSYmIj4iIT09ZXx8KHNbaF09IiIpfXJldHVybiBjcmVhdGVCaWRpVGV4dChzLmpvaW4oIiIpLGMpfTt2YXIgcj1hKDIpO2NvbnN0IGk9WyJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJTIiwiQiIsIlMiLCJXUyIsIkIiLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQiIsIkIiLCJCIiwiUyIsIldTIiwiT04iLCJPTiIsIkVUIiwiRVQiLCJFVCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJFUyIsIkNTIiwiRVMiLCJDUyIsIkNTIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJDUyIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkIiLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQ1MiLCJPTiIsIkVUIiwiRVQiLCJFVCIsIkVUIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiT04iLCJPTiIsIkJOIiwiT04iLCJPTiIsIkVUIiwiRVQiLCJFTiIsIkVOIiwiT04iLCJMIiwiT04iLCJPTiIsIk9OIiwiRU4iLCJMIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCJdLG49WyJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJPTiIsIk9OIiwiQUwiLCJFVCIsIkVUIiwiQUwiLCJDUyIsIkFMIiwiT04iLCJPTiIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFMIiwiQUwiLCIiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkVUIiwiQU4iLCJBTiIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIl07ZnVuY3Rpb24gaXNPZGQoZSl7cmV0dXJuIDAhPSgxJmUpfWZ1bmN0aW9uIGlzRXZlbihlKXtyZXR1cm4gMD09KDEmZSl9ZnVuY3Rpb24gZmluZFVuZXF1YWwoZSx0LGEpe2xldCByLGk7Zm9yKHI9dCxpPWUubGVuZ3RoO3I8aTsrK3IpaWYoZVtyXSE9PWEpcmV0dXJuIHI7cmV0dXJuIHJ9ZnVuY3Rpb24gc2V0VmFsdWVzKGUsdCxhLHIpe2ZvcihsZXQgaT10O2k8YTsrK2kpZVtpXT1yfWZ1bmN0aW9uIHJldmVyc2VWYWx1ZXMoZSx0LGEpe2ZvcihsZXQgcj10LGk9YS0xO3I8aTsrK3IsLS1pKXtjb25zdCB0PWVbcl07ZVtyXT1lW2ldO2VbaV09dH19ZnVuY3Rpb24gY3JlYXRlQmlkaVRleHQoZSx0LGE9ITEpe2xldCByPSJsdHIiO2E/cj0idHRiIjp0fHwocj0icnRsIik7cmV0dXJue3N0cjplLGRpcjpyfX1jb25zdCBzPVtdLG89W119LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5nZXRGb250U3Vic3RpdHV0aW9uPWZ1bmN0aW9uIGdldEZvbnRTdWJzdGl0dXRpb24oZSx0LGEsdSxkKXtjb25zdCBmPXU9KDAsci5ub3JtYWxpemVGb250TmFtZSkodSk7bGV0IGc9ZS5nZXQoZik7aWYoZylyZXR1cm4gZztsZXQgcD1sLmdldCh1KTtpZighcClmb3IoY29uc3RbZSx0XW9mIGgpaWYodS5zdGFydHNXaXRoKGUpKXt1PWAke3R9JHt1LnN1YnN0cmluZyhlLmxlbmd0aCl9YDtwPWwuZ2V0KHUpO2JyZWFrfWxldCBtPSExO2lmKCFwKXtwPWwuZ2V0KGQpO209ITB9Y29uc3QgYj1gJHt0LmdldERvY0lkKCl9X3Mke3QuY3JlYXRlRm9udElkKCl9YDtpZighcCl7aWYoISgwLGkudmFsaWRhdGVGb250TmFtZSkodSkpe2Uuc2V0KGYsbnVsbCk7cmV0dXJuIG51bGx9Y29uc3QgdD0vYm9sZC9naS50ZXN0KHUpLGE9L29ibGlxdWV8aXRhbGljL2dpLnRlc3QodSk7Zz17Y3NzOmIsZ3Vlc3NGYWxsYmFjazohMCxsb2FkZWROYW1lOmIsYmFzZUZvbnROYW1lOnUsc3JjOmBsb2NhbCgke3V9KWAsc3R5bGU6dCYmYSYmY3x8dCYmc3x8YSYmb3x8bn07ZS5zZXQoZixnKTtyZXR1cm4gZ31jb25zdCB5PVtdO20mJigwLGkudmFsaWRhdGVGb250TmFtZSkodSkmJnkucHVzaChgbG9jYWwoJHt1fSlgKTtjb25zdHtzdHlsZTp3LHVsdGltYXRlOlN9PWdlbmVyYXRlRm9udChwLHksYSkseD1udWxsPT09UztnPXtjc3M6YCR7Yn0ke3g/IiI6YCwke1N9YH1gLGd1ZXNzRmFsbGJhY2s6eCxsb2FkZWROYW1lOmIsYmFzZUZvbnROYW1lOnUsc3JjOnkuam9pbigiLCIpLHN0eWxlOnd9O2Uuc2V0KGYsZyk7cmV0dXJuIGd9O3ZhciByPWEoMzgpLGk9YSgzKTtjb25zdCBuPXtzdHlsZToibm9ybWFsIix3ZWlnaHQ6Im5vcm1hbCJ9LHM9e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiYm9sZCJ9LG89e3N0eWxlOiJpdGFsaWMiLHdlaWdodDoibm9ybWFsIn0sYz17c3R5bGU6Iml0YWxpYyIsd2VpZ2h0OiJib2xkIn0sbD1uZXcgTWFwKFtbIlRpbWVzLVJvbWFuIix7bG9jYWw6WyJUaW1lcyBOZXcgUm9tYW4iLCJUaW1lcy1Sb21hbiIsIlRpbWVzIiwiTGliZXJhdGlvbiBTZXJpZiIsIk5pbWJ1cyBSb21hbiIsIk5pbWJ1cyBSb21hbiBMIiwiVGlub3MiLCJUaG9ybmRhbGUiLCJUZVggR3lyZSBUZXJtZXMiLCJGcmVlU2VyaWYiLCJEZWphVnUgU2VyaWYiLCJCaXRzdHJlYW0gVmVyYSBTZXJpZiIsIlVidW50dSJdLHN0eWxlOm4sdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtQm9sZCIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6cyx1bHRpbWF0ZToic2VyaWYifV0sWyJUaW1lcy1JdGFsaWMiLHthbGlhczoiVGltZXMtUm9tYW4iLHN0eWxlOm8sdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtQm9sZEl0YWxpYyIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6Yyx1bHRpbWF0ZToic2VyaWYifV0sWyJIZWx2ZXRpY2EiLHtsb2NhbDpbIkhlbHZldGljYSIsIkhlbHZldGljYSBOZXVlIiwiQXJpYWwiLCJBcmlhbCBOb3ZhIiwiTGliZXJhdGlvbiBTYW5zIiwiQXJpbW8iLCJOaW1idXMgU2FucyIsIk5pbWJ1cyBTYW5zIEwiLCJBMDMwIiwiVGVYIEd5cmUgSGVyb3MiLCJGcmVlU2FucyIsIkRlamFWdSBTYW5zIiwiQWxiYW55IiwiQml0c3RyZWFtIFZlcmEgU2FucyIsIkFyaWFsIFVuaWNvZGUgTVMiLCJNaWNyb3NvZnQgU2FucyBTZXJpZiIsIkFwcGxlIFN5bWJvbHMiLCJDYW50YXJlbGwiXSxwYXRoOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiIsc3R5bGU6bix1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIkhlbHZldGljYS1Cb2xkIix7YWxpYXM6IkhlbHZldGljYSIscGF0aDoiTGliZXJhdGlvblNhbnMtQm9sZC50dGYiLHN0eWxlOnMsdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtT2JsaXF1ZSIse2FsaWFzOiJIZWx2ZXRpY2EiLHBhdGg6IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiLHN0eWxlOm8sdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiLHthbGlhczoiSGVsdmV0aWNhIixwYXRoOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljLnR0ZiIsc3R5bGU6Yyx1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIkNvdXJpZXIiLHtsb2NhbDpbIkNvdXJpZXIiLCJDb3VyaWVyIE5ldyIsIkxpYmVyYXRpb24gTW9ubyIsIk5pbWJ1cyBNb25vIiwiTmltYnVzIE1vbm8gTCIsIkNvdXNpbmUiLCJDdW1iZXJsYW5kIiwiVGVYIEd5cmUgQ3Vyc29yIiwiRnJlZU1vbm8iXSxzdHlsZTpuLHVsdGltYXRlOiJtb25vc3BhY2UifV0sWyJDb3VyaWVyLUJvbGQiLHthbGlhczoiQ291cmllciIsc3R5bGU6cyx1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQ291cmllci1PYmxpcXVlIix7YWxpYXM6IkNvdXJpZXIiLHN0eWxlOm8sdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkNvdXJpZXItQm9sZE9ibGlxdWUiLHthbGlhczoiQ291cmllciIsc3R5bGU6Yyx1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQXJpYWxCbGFjayIse2xvY2FsOlsiQXJpYWwgQmxhY2siXSxzdHlsZTp7c3R5bGU6Im5vcm1hbCIsd2VpZ2h0OiI5MDAifSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGQifV0sWyJBcmlhbEJsYWNrLUJvbGQiLHthbGlhczoiQXJpYWxCbGFjayJ9XSxbIkFyaWFsQmxhY2stSXRhbGljIix7YWxpYXM6IkFyaWFsQmxhY2siLHN0eWxlOntzdHlsZToiaXRhbGljIix3ZWlnaHQ6IjkwMCJ9LGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUifV0sWyJBcmlhbEJsYWNrLUJvbGRJdGFsaWMiLHthbGlhczoiQXJpYWxCbGFjay1JdGFsaWMifV0sWyJBcmlhbE5hcnJvdyIse2xvY2FsOlsiQXJpYWwgTmFycm93IiwiTGliZXJhdGlvbiBTYW5zIE5hcnJvdyIsIkhlbHZldGljYSBDb25kZW5zZWQiLCJOaW1idXMgU2FucyBOYXJyb3ciLCJUZVggR3lyZSBIZXJvcyBDbiJdLHN0eWxlOm4sZmFsbGJhY2s6IkhlbHZldGljYSJ9XSxbIkFyaWFsTmFycm93LUJvbGQiLHthbGlhczoiQXJpYWxOYXJyb3ciLHN0eWxlOnMsZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQXJpYWxOYXJyb3ctSXRhbGljIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpvLGZhbGxiYWNrOiJIZWx2ZXRpY2EtT2JsaXF1ZSJ9XSxbIkFyaWFsTmFycm93LUJvbGRJdGFsaWMiLHthbGlhczoiQXJpYWxOYXJyb3ciLHN0eWxlOmMsZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJ9XSxbIkNhbGlicmkiLHtsb2NhbDpbIkNhbGlicmkiLCJDYXJsaXRvIl0sc3R5bGU6bixmYWxsYmFjazoiSGVsdmV0aWNhIn1dLFsiQ2FsaWJyaS1Cb2xkIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOnMsZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQ2FsaWJyaS1JdGFsaWMiLHthbGlhczoiQ2FsaWJyaSIsc3R5bGU6byxmYWxsYmFjazoiSGVsdmV0aWNhLU9ibGlxdWUifV0sWyJDYWxpYnJpLUJvbGRJdGFsaWMiLHthbGlhczoiQ2FsaWJyaSIsc3R5bGU6YyxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiV2luZ2RpbmdzIix7bG9jYWw6WyJXaW5nZGluZ3MiLCJVUlcgRGluZ2JhdHMiXSxzdHlsZTpufV0sWyJXaW5nZGluZ3MtUmVndWxhciIse2FsaWFzOiJXaW5nZGluZ3MifV0sWyJXaW5nZGluZ3MtQm9sZCIse2FsaWFzOiJXaW5nZGluZ3MifV1dKSxoPW5ldyBNYXAoW1siQXJpYWwtQmxhY2siLCJBcmlhbEJsYWNrIl1dKTtmdW5jdGlvbiBnZW5lcmF0ZUZvbnQoe2FsaWFzOmUsbG9jYWw6dCxwYXRoOmEsZmFsbGJhY2s6cixzdHlsZTppLHVsdGltYXRlOm59LGgsdSxkPSEwLGY9ITAsZz0iIil7Y29uc3QgcD17c3R5bGU6bnVsbCx1bHRpbWF0ZTpudWxsfTtpZih0KXtjb25zdCBlPWc/YCAke2d9YDoiIjtmb3IoY29uc3QgYSBvZiB0KWgucHVzaChgbG9jYWwoJHthfSR7ZX0pYCl9aWYoZSl7Y29uc3QgdD1sLmdldChlKSxuPWd8fGZ1bmN0aW9uIGdldFN0eWxlVG9BcHBlbmQoZSl7c3dpdGNoKGUpe2Nhc2UgczpyZXR1cm4iQm9sZCI7Y2FzZSBvOnJldHVybiJJdGFsaWMiO2Nhc2UgYzpyZXR1cm4iQm9sZCBJdGFsaWMiO2RlZmF1bHQ6aWYoImJvbGQiPT09ZT8ud2VpZ2h0KXJldHVybiJCb2xkIjtpZigiaXRhbGljIj09PWU/LnN0eWxlKXJldHVybiJJdGFsaWMifXJldHVybiIifShpKTtPYmplY3QuYXNzaWduKHAsZ2VuZXJhdGVGb250KHQsaCx1LGQmJiFyLGYmJiFhLG4pKX1pJiYocC5zdHlsZT1pKTtuJiYocC51bHRpbWF0ZT1uKTtpZihkJiZyKXtjb25zdCBlPWwuZ2V0KHIpLHt1bHRpbWF0ZTp0fT1nZW5lcmF0ZUZvbnQoZSxoLHUsZCxmJiYhYSxnKTtwLnVsdGltYXRlfHw9dH1mJiZhJiZ1JiZoLnB1c2goYHVybCgke3V9JHthfSlgKTtyZXR1cm4gcH19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5JbWFnZVJlc2l6ZXI9dm9pZCAwO3ZhciByPWEoMik7Y2xhc3MgSW1hZ2VSZXNpemVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5faW1nRGF0YT1lO3RoaXMuX2lzTWFzaz10fXN0YXRpYyBuZWVkc1RvQmVSZXNpemVkKGUsdCl7aWYoZTw9dGhpcy5fZ29vZFNxdWFyZUxlbmd0aCYmdDw9dGhpcy5fZ29vZFNxdWFyZUxlbmd0aClyZXR1cm4hMTtjb25zdHtNQVhfRElNOmF9PXRoaXM7aWYoZT5hfHx0PmEpcmV0dXJuITA7Y29uc3Qgcj1lKnQ7aWYodGhpcy5faGFzTWF4QXJlYSlyZXR1cm4gcj50aGlzLk1BWF9BUkVBO2lmKHI8dGhpcy5fZ29vZFNxdWFyZUxlbmd0aCoqMilyZXR1cm4hMTtpZih0aGlzLl9hcmVHb29kRGltcyhlLHQpKXt0aGlzLl9nb29kU3F1YXJlTGVuZ3RoPU1hdGgubWF4KHRoaXMuX2dvb2RTcXVhcmVMZW5ndGgsTWF0aC5mbG9vcihNYXRoLnNxcnQoZSp0KSkpO3JldHVybiExfXRoaXMuX2dvb2RTcXVhcmVMZW5ndGg9dGhpcy5fZ3Vlc3NNYXgodGhpcy5fZ29vZFNxdWFyZUxlbmd0aCxhLDEyOCwwKTtyZXR1cm4gcj4odGhpcy5NQVhfQVJFQT10aGlzLl9nb29kU3F1YXJlTGVuZ3RoKioyKX1zdGF0aWMgZ2V0IE1BWF9ESU0oKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiTUFYX0RJTSIsdGhpcy5fZ3Vlc3NNYXgoMjA0OCw2NTUzNywwLDEpKX1zdGF0aWMgZ2V0IE1BWF9BUkVBKCl7dGhpcy5faGFzTWF4QXJlYT0hMDtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiTUFYX0FSRUEiLHRoaXMuX2d1ZXNzTWF4KEltYWdlUmVzaXplci5fZ29vZFNxdWFyZUxlbmd0aCx0aGlzLk1BWF9ESU0sMTI4LDApKioyKX1zdGF0aWMgc2V0IE1BWF9BUkVBKGUpe2lmKGU+PTApe3RoaXMuX2hhc01heEFyZWE9ITA7KDAsci5zaGFkb3cpKHRoaXMsIk1BWF9BUkVBIixlKX19c3RhdGljIHNldE1heEFyZWEoZSl7dGhpcy5faGFzTWF4QXJlYXx8KHRoaXMuTUFYX0FSRUE9ZT4+Mil9c3RhdGljIF9hcmVHb29kRGltcyhlLHQpe3RyeXtjb25zdCBhPW5ldyBPZmZzY3JlZW5DYW52YXMoZSx0KSxyPWEuZ2V0Q29udGV4dCgiMmQiKTtyLmZpbGxSZWN0KDAsMCwxLDEpO2NvbnN0IGk9ci5nZXRJbWFnZURhdGEoMCwwLDEsMSkuZGF0YVszXTthLndpZHRoPWEuaGVpZ2h0PTE7cmV0dXJuIDAhPT1pfWNhdGNoKGUpe3JldHVybiExfX1zdGF0aWMgX2d1ZXNzTWF4KGUsdCxhLHIpe2Zvcig7ZSthKzE8dDspe2NvbnN0IGE9TWF0aC5mbG9vcigoZSt0KS8yKSxpPXJ8fGE7dGhpcy5fYXJlR29vZERpbXMoYSxpKT9lPWE6dD1hfXJldHVybiBlfXN0YXRpYyBhc3luYyBjcmVhdGVJbWFnZShlLHQ9ITEpe3JldHVybiBuZXcgSW1hZ2VSZXNpemVyKGUsdCkuX2NyZWF0ZUltYWdlKCl9YXN5bmMgX2NyZWF0ZUltYWdlKCl7Y29uc3QgZT10aGlzLl9lbmNvZGVCTVAoKSx0PW5ldyBCbG9iKFtlLmJ1ZmZlcl0se3R5cGU6ImltYWdlL2JtcCJ9KSxhPWNyZWF0ZUltYWdlQml0bWFwKHQpLHtNQVhfQVJFQTpyLE1BWF9ESU06aX09SW1hZ2VSZXNpemVyLHtfaW1nRGF0YTpufT10aGlzLHt3aWR0aDpzLGhlaWdodDpvfT1uLGM9TWF0aC5tYXgocy9pLG8vaSxNYXRoLnNxcnQocypvL3IpKSxsPU1hdGgubWF4KGMsMiksaD1NYXRoLnJvdW5kKDEwKihjKzEuMjUpKS8xMC9sLHU9TWF0aC5mbG9vcihNYXRoLmxvZzIoaCkpLGQ9bmV3IEFycmF5KHUrMikuZmlsbCgyKTtkWzBdPWw7ZC5zcGxpY2UoLTEsMSxoLygxPDx1KSk7bGV0IGY9cyxnPW8scD1hd2FpdCBhO2Zvcihjb25zdCBlIG9mIGQpe2NvbnN0IHQ9ZixhPWc7Zj1NYXRoLmZsb29yKGYvZSktMTtnPU1hdGguZmxvb3IoZy9lKS0xO2NvbnN0IHI9bmV3IE9mZnNjcmVlbkNhbnZhcyhmLGcpO3IuZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UocCwwLDAsdCxhLDAsMCxmLGcpO3A9ci50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX1uLmRhdGE9bnVsbDtuLmJpdG1hcD1wO24ud2lkdGg9ZjtuLmhlaWdodD1nO3JldHVybiBufV9lbmNvZGVCTVAoKXtjb25zdHt3aWR0aDplLGhlaWdodDp0LGtpbmQ6YX09dGhpcy5faW1nRGF0YTtsZXQgaSxuPXRoaXMuX2ltZ0RhdGEuZGF0YSxzPW5ldyBVaW50OEFycmF5KDApLG89cyxjPTA7c3dpdGNoKGEpe2Nhc2Ugci5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6e2k9MTtzPW5ldyBVaW50OEFycmF5KHRoaXMuX2lzTWFzaz9bMjU1LDI1NSwyNTUsMjU1LDAsMCwwLDBdOlswLDAsMCwwLDI1NSwyNTUsMjU1LDI1NV0pO2NvbnN0IGE9ZSs3Pj4zLHI9YSszJi00O2lmKGEhPT1yKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KHIqdCk7bGV0IGk9MDtmb3IobGV0IHM9MCxvPXQqYTtzPG87cys9YSxpKz1yKWUuc2V0KG4uc3ViYXJyYXkocyxzK2EpLGkpO249ZX1icmVha31jYXNlIHIuSW1hZ2VLaW5kLlJHQl8yNEJQUDppPTI0O2lmKDMmZSl7Y29uc3QgYT0zKmUscj1hKzMmLTQsaT1yLWEscz1uZXcgVWludDhBcnJheShyKnQpO2xldCBvPTA7Zm9yKGxldCBlPTAscj10KmE7ZTxyO2UrPWEpe2NvbnN0IHQ9bi5zdWJhcnJheShlLGUrYSk7Zm9yKGxldCBlPTA7ZTxhO2UrPTMpe3NbbysrXT10W2UrMl07c1tvKytdPXRbZSsxXTtzW28rK109dFtlXX1vKz1pfW49c31lbHNlIGZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrPTMpe2NvbnN0IHQ9bltlXTtuW2VdPW5bZSsyXTtuW2UrMl09dH1icmVhaztjYXNlIHIuSW1hZ2VLaW5kLlJHQkFfMzJCUFA6aT0zMjtjPTM7bz1uZXcgVWludDhBcnJheSg2OCk7Y29uc3QgYT1uZXcgRGF0YVZpZXcoby5idWZmZXIpO2lmKHIuRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pe2Euc2V0VWludDMyKDAsMjU1LCEwKTthLnNldFVpbnQzMig0LDY1MjgwLCEwKTthLnNldFVpbnQzMig4LDE2NzExNjgwLCEwKTthLnNldFVpbnQzMigxMiw0Mjc4MTkwMDgwLCEwKX1lbHNle2Euc2V0VWludDMyKDAsNDI3ODE5MDA4MCwhMCk7YS5zZXRVaW50MzIoNCwxNjcxMTY4MCwhMCk7YS5zZXRVaW50MzIoOCw2NTI4MCwhMCk7YS5zZXRVaW50MzIoMTIsMjU1LCEwKX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW52YWxpZCBmb3JtYXQiKX1sZXQgbD0wO2NvbnN0IGg9NDArby5sZW5ndGgsdT0xNCtoK3MubGVuZ3RoK24ubGVuZ3RoLGQ9bmV3IFVpbnQ4QXJyYXkodSksZj1uZXcgRGF0YVZpZXcoZC5idWZmZXIpO2Yuc2V0VWludDE2KGwsMTk3NzgsITApO2wrPTI7Zi5zZXRVaW50MzIobCx1LCEwKTtsKz00O2Yuc2V0VWludDMyKGwsMCwhMCk7bCs9NDtmLnNldFVpbnQzMihsLDE0K2grcy5sZW5ndGgsITApO2wrPTQ7Zi5zZXRVaW50MzIobCxoLCEwKTtsKz00O2Yuc2V0SW50MzIobCxlLCEwKTtsKz00O2Yuc2V0SW50MzIobCwtdCwhMCk7bCs9NDtmLnNldFVpbnQxNihsLDEsITApO2wrPTI7Zi5zZXRVaW50MTYobCxpLCEwKTtsKz0yO2Yuc2V0VWludDMyKGwsYywhMCk7bCs9NDtmLnNldFVpbnQzMihsLDAsITApO2wrPTQ7Zi5zZXRJbnQzMihsLDAsITApO2wrPTQ7Zi5zZXRJbnQzMihsLDAsITApO2wrPTQ7Zi5zZXRVaW50MzIobCxzLmxlbmd0aC80LCEwKTtsKz00O2Yuc2V0VWludDMyKGwsMCwhMCk7bCs9NDtkLnNldChvLGwpO2wrPW8ubGVuZ3RoO2Quc2V0KHMsbCk7bCs9cy5sZW5ndGg7ZC5zZXQobixsKTtyZXR1cm4gZH19dC5JbWFnZVJlc2l6ZXI9SW1hZ2VSZXNpemVyO0ltYWdlUmVzaXplci5fZ29vZFNxdWFyZUxlbmd0aD0yMDQ4fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuTXVybXVySGFzaDNfNjQ9dm9pZCAwO3ZhciByPWEoMik7Y29uc3QgaT0zMjg1Mzc3NTIwLG49NDI5NDkwMTc2MCxzPTY1NTM1O3QuTXVybXVySGFzaDNfNjQ9Y2xhc3MgTXVybXVySGFzaDNfNjR7Y29uc3RydWN0b3IoZSl7dGhpcy5oMT1lPzQyOTQ5NjcyOTUmZTppO3RoaXMuaDI9ZT80Mjk0OTY3Mjk1JmU6aX11cGRhdGUoZSl7bGV0IHQsYTtpZigic3RyaW5nIj09dHlwZW9mIGUpe3Q9bmV3IFVpbnQ4QXJyYXkoMiplLmxlbmd0aCk7YT0wO2ZvcihsZXQgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyl7Y29uc3QgaT1lLmNoYXJDb2RlQXQocik7aWYoaTw9MjU1KXRbYSsrXT1pO2Vsc2V7dFthKytdPWk+Pj44O3RbYSsrXT0yNTUmaX19fWVsc2V7aWYoISgwLHIuaXNBcnJheUJ1ZmZlcikoZSkpdGhyb3cgbmV3IEVycm9yKCJXcm9uZyBkYXRhIGZvcm1hdCBpbiBNdXJtdXJIYXNoM182NF91cGRhdGUuIElucHV0IG11c3QgYmUgYSBzdHJpbmcgb3IgYXJyYXkuIik7dD1lLnNsaWNlKCk7YT10LmJ5dGVMZW5ndGh9Y29uc3QgaT1hPj4yLG89YS00KmksYz1uZXcgVWludDMyQXJyYXkodC5idWZmZXIsMCxpKTtsZXQgbD0wLGg9MCx1PXRoaXMuaDEsZD10aGlzLmgyO2NvbnN0IGY9MzQzMjkxODM1MyxnPTQ2MTg0NTkwNyxwPTExNjAxLG09MTM3MTU7Zm9yKGxldCBlPTA7ZTxpO2UrKylpZigxJmUpe2w9Y1tlXTtsPWwqZiZufGwqcCZzO2w9bDw8MTV8bD4+PjE3O2w9bCpnJm58bCptJnM7dV49bDt1PXU8PDEzfHU+Pj4xOTt1PTUqdSszODY0MjkyMTk2fWVsc2V7aD1jW2VdO2g9aCpmJm58aCpwJnM7aD1oPDwxNXxoPj4+MTc7aD1oKmcmbnxoKm0mcztkXj1oO2Q9ZDw8MTN8ZD4+PjE5O2Q9NSpkKzM4NjQyOTIxOTZ9bD0wO3N3aXRjaChvKXtjYXNlIDM6bF49dFs0KmkrMl08PDE2O2Nhc2UgMjpsXj10WzQqaSsxXTw8ODtjYXNlIDE6bF49dFs0KmldO2w9bCpmJm58bCpwJnM7bD1sPDwxNXxsPj4+MTc7bD1sKmcmbnxsKm0mczsxJmk/dV49bDpkXj1sfXRoaXMuaDE9dTt0aGlzLmgyPWR9aGV4ZGlnZXN0KCl7bGV0IGU9dGhpcy5oMSx0PXRoaXMuaDI7ZV49dD4+PjE7ZT0zOTgxODA2Nzk3KmUmbnwzNjA0NSplJnM7dD00MjgzNTQzNTExKnQmbnwoMjk1MDE2Mzc5NyoodDw8MTZ8ZT4+PjE2KSZuKT4+PjE2O2VePXQ+Pj4xO2U9NDQ0OTg0NDAzKmUmbnw2MDQ5OSplJnM7dD0zMzAxODgyMzY2KnQmbnwoMzEyMDQzNzg5MyoodDw8MTZ8ZT4+PjE2KSZuKT4+PjE2O2VePXQ+Pj4xO3JldHVybihlPj4+MCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSsodD4+PjApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIil9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk9wZXJhdG9yTGlzdD12b2lkIDA7dmFyIHI9YSgyKTtmdW5jdGlvbiBhZGRTdGF0ZShlLHQsYSxyLGkpe2xldCBuPWU7Zm9yKGxldCBlPTAsYT10Lmxlbmd0aC0xO2U8YTtlKyspe2NvbnN0IGE9dFtlXTtuPW5bYV18fD1bXX1uW3QuYXQoLTEpXT17Y2hlY2tGbjphLGl0ZXJhdGVGbjpyLHByb2Nlc3NGbjppfX1jb25zdCBpPVtdO2FkZFN0YXRlKGksW3IuT1BTLnNhdmUsci5PUFMudHJhbnNmb3JtLHIuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0LHIuT1BTLnJlc3RvcmVdLG51bGwsKGZ1bmN0aW9uIGl0ZXJhdGVJbmxpbmVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksaT0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2goaSl7Y2FzZSAwOnJldHVybiBhW3RdPT09ci5PUFMuc2F2ZTtjYXNlIDE6cmV0dXJuIGFbdF09PT1yLk9QUy50cmFuc2Zvcm07Y2FzZSAyOnJldHVybiBhW3RdPT09ci5PUFMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3Q7Y2FzZSAzOnJldHVybiBhW3RdPT09ci5PUFMucmVzdG9yZX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVJbmxpbmVJbWFnZUdyb3VwIC0gaW52YWxpZCBwb3M6ICR7aX1gKX0pLChmdW5jdGlvbiBmb3VuZElubGluZUltYWdlR3JvdXAoZSx0KXtjb25zdCBhPWUuZm5BcnJheSxpPWUuYXJnc0FycmF5LG49ZS5pQ3VycixzPW4tMyxvPW4tMixjPW4tMSxsPU1hdGgubWluKE1hdGguZmxvb3IoKHQtcykvNCksMjAwKTtpZihsPDEwKXJldHVybiB0LSh0LXMpJTQ7bGV0IGg9MDtjb25zdCB1PVtdO2xldCBkPTAsZj0xLGc9MTtmb3IobGV0IGU9MDtlPGw7ZSsrKXtjb25zdCB0PWlbbysoZTw8MildLGE9aVtjKyhlPDwyKV1bMF07aWYoZithLndpZHRoPjFlMyl7aD1NYXRoLm1heChoLGYpO2crPWQrMjtmPTA7ZD0wfXUucHVzaCh7dHJhbnNmb3JtOnQseDpmLHk6Zyx3OmEud2lkdGgsaDphLmhlaWdodH0pO2YrPWEud2lkdGgrMjtkPU1hdGgubWF4KGQsYS5oZWlnaHQpfWNvbnN0IHA9TWF0aC5tYXgoaCxmKSsxLG09ZytkKzEsYj1uZXcgVWludDhBcnJheShwKm0qNCkseT1wPDwyO2ZvcihsZXQgZT0wO2U8bDtlKyspe2NvbnN0IHQ9aVtjKyhlPDwyKV1bMF0uZGF0YSxhPXVbZV0udzw8MjtsZXQgcj0wLG49dVtlXS54K3VbZV0ueSpwPDwyO2Iuc2V0KHQuc3ViYXJyYXkoMCxhKSxuLXkpO2ZvcihsZXQgaT0wLHM9dVtlXS5oO2k8cztpKyspe2Iuc2V0KHQuc3ViYXJyYXkocixyK2EpLG4pO3IrPWE7bis9eX1iLnNldCh0LnN1YmFycmF5KHItYSxyKSxuKTtmb3IoO24+PTA7KXt0W24tNF09dFtuXTt0W24tM109dFtuKzFdO3Rbbi0yXT10W24rMl07dFtuLTFdPXRbbiszXTt0W24rYV09dFtuK2EtNF07dFtuK2ErMV09dFtuK2EtM107dFtuK2ErMl09dFtuK2EtMl07dFtuK2ErM109dFtuK2EtMV07bi09eX19Y29uc3Qgdz17d2lkdGg6cCxoZWlnaHQ6bX07aWYoZS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3QgZT1uZXcgT2Zmc2NyZWVuQ2FudmFzKHAsbSk7ZS5nZXRDb250ZXh0KCIyZCIpLnB1dEltYWdlRGF0YShuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1wZWRBcnJheShiLmJ1ZmZlcikscCxtKSwwLDApO3cuYml0bWFwPWUudHJhbnNmZXJUb0ltYWdlQml0bWFwKCk7dy5kYXRhPW51bGx9ZWxzZXt3LmtpbmQ9ci5JbWFnZUtpbmQuUkdCQV8zMkJQUDt3LmRhdGE9Yn1hLnNwbGljZShzLDQqbCxyLk9QUy5wYWludElubGluZUltYWdlWE9iamVjdEdyb3VwKTtpLnNwbGljZShzLDQqbCxbdyx1XSk7cmV0dXJuIHMrMX0pKTthZGRTdGF0ZShpLFtyLk9QUy5zYXZlLHIuT1BTLnRyYW5zZm9ybSxyLk9QUy5wYWludEltYWdlTWFza1hPYmplY3Qsci5PUFMucmVzdG9yZV0sbnVsbCwoZnVuY3Rpb24gaXRlcmF0ZUltYWdlTWFza0dyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksaT0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2goaSl7Y2FzZSAwOnJldHVybiBhW3RdPT09ci5PUFMuc2F2ZTtjYXNlIDE6cmV0dXJuIGFbdF09PT1yLk9QUy50cmFuc2Zvcm07Y2FzZSAyOnJldHVybiBhW3RdPT09ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0O2Nhc2UgMzpyZXR1cm4gYVt0XT09PXIuT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VNYXNrR3JvdXAgLSBpbnZhbGlkIHBvczogJHtpfWApfSksKGZ1bmN0aW9uIGZvdW5kSW1hZ2VNYXNrR3JvdXAoZSx0KXtjb25zdCBhPWUuZm5BcnJheSxpPWUuYXJnc0FycmF5LG49ZS5pQ3VycixzPW4tMyxvPW4tMixjPW4tMTtsZXQgbD1NYXRoLmZsb29yKCh0LXMpLzQpO2lmKGw8MTApcmV0dXJuIHQtKHQtcyklNDtsZXQgaCx1LGQ9ITE7Y29uc3QgZj1pW2NdWzBdLGc9aVtvXVswXSxwPWlbb11bMV0sbT1pW29dWzJdLGI9aVtvXVszXTtpZihwPT09bSl7ZD0hMDtoPW8rNDtsZXQgZT1jKzQ7Zm9yKGxldCB0PTE7dDxsO3QrKyxoKz00LGUrPTQpe3U9aVtoXTtpZihpW2VdWzBdIT09Znx8dVswXSE9PWd8fHVbMV0hPT1wfHx1WzJdIT09bXx8dVszXSE9PWIpe3Q8MTA/ZD0hMTpsPXQ7YnJlYWt9fX1pZihkKXtsPU1hdGgubWluKGwsMWUzKTtjb25zdCBlPW5ldyBGbG9hdDMyQXJyYXkoMipsKTtoPW87Zm9yKGxldCB0PTA7dDxsO3QrKyxoKz00KXt1PWlbaF07ZVt0PDwxXT11WzRdO2VbMSsodDw8MSldPXVbNV19YS5zcGxpY2Uocyw0Kmwsci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0UmVwZWF0KTtpLnNwbGljZShzLDQqbCxbZixnLHAsbSxiLGVdKX1lbHNle2w9TWF0aC5taW4obCwxMDApO2NvbnN0IGU9W107Zm9yKGxldCB0PTA7dDxsO3QrKyl7dT1pW28rKHQ8PDIpXTtjb25zdCBhPWlbYysodDw8MildWzBdO2UucHVzaCh7ZGF0YTphLmRhdGEsd2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHQsaW50ZXJwb2xhdGU6YS5pbnRlcnBvbGF0ZSxjb3VudDphLmNvdW50LHRyYW5zZm9ybTp1fSl9YS5zcGxpY2Uocyw0Kmwsci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0R3JvdXApO2kuc3BsaWNlKHMsNCpsLFtlXSl9cmV0dXJuIHMrMX0pKTthZGRTdGF0ZShpLFtyLk9QUy5zYXZlLHIuT1BTLnRyYW5zZm9ybSxyLk9QUy5wYWludEltYWdlWE9iamVjdCxyLk9QUy5yZXN0b3JlXSwoZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmFyZ3NBcnJheSxhPWUuaUN1cnItMjtyZXR1cm4gMD09PXRbYV1bMV0mJjA9PT10W2FdWzJdfSksKGZ1bmN0aW9uIGl0ZXJhdGVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksaT1lLmFyZ3NBcnJheSxuPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChuKXtjYXNlIDA6cmV0dXJuIGFbdF09PT1yLk9QUy5zYXZlO2Nhc2UgMTppZihhW3RdIT09ci5PUFMudHJhbnNmb3JtKXJldHVybiExO2NvbnN0IG49ZS5pQ3Vyci0yLHM9aVtuXVswXSxvPWlbbl1bM107cmV0dXJuIGlbdF1bMF09PT1zJiYwPT09aVt0XVsxXSYmMD09PWlbdF1bMl0mJmlbdF1bM109PT1vO2Nhc2UgMjppZihhW3RdIT09ci5PUFMucGFpbnRJbWFnZVhPYmplY3QpcmV0dXJuITE7Y29uc3QgYz1pW2UuaUN1cnItMV1bMF07cmV0dXJuIGlbdF1bMF09PT1jO2Nhc2UgMzpyZXR1cm4gYVt0XT09PXIuT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VHcm91cCAtIGludmFsaWQgcG9zOiAke259YCl9KSwoZnVuY3Rpb24oZSx0KXtjb25zdCBhPWUuZm5BcnJheSxpPWUuYXJnc0FycmF5LG49ZS5pQ3VycixzPW4tMyxvPW4tMixjPWlbbi0xXVswXSxsPWlbb11bMF0saD1pW29dWzNdLHU9TWF0aC5taW4oTWF0aC5mbG9vcigodC1zKS80KSwxZTMpO2lmKHU8MylyZXR1cm4gdC0odC1zKSU0O2NvbnN0IGQ9bmV3IEZsb2F0MzJBcnJheSgyKnUpO2xldCBmPW87Zm9yKGxldCBlPTA7ZTx1O2UrKyxmKz00KXtjb25zdCB0PWlbZl07ZFtlPDwxXT10WzRdO2RbMSsoZTw8MSldPXRbNV19Y29uc3QgZz1bYyxsLGgsZF07YS5zcGxpY2Uocyw0KnUsci5PUFMucGFpbnRJbWFnZVhPYmplY3RSZXBlYXQpO2kuc3BsaWNlKHMsNCp1LGcpO3JldHVybiBzKzF9KSk7YWRkU3RhdGUoaSxbci5PUFMuYmVnaW5UZXh0LHIuT1BTLnNldEZvbnQsci5PUFMuc2V0VGV4dE1hdHJpeCxyLk9QUy5zaG93VGV4dCxyLk9QUy5lbmRUZXh0XSxudWxsLChmdW5jdGlvbiBpdGVyYXRlU2hvd1RleHRHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LGk9ZS5hcmdzQXJyYXksbj0odC0oZS5pQ3Vyci00KSklNTtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiBhW3RdPT09ci5PUFMuYmVnaW5UZXh0O2Nhc2UgMTpyZXR1cm4gYVt0XT09PXIuT1BTLnNldEZvbnQ7Y2FzZSAyOnJldHVybiBhW3RdPT09ci5PUFMuc2V0VGV4dE1hdHJpeDtjYXNlIDM6aWYoYVt0XSE9PXIuT1BTLnNob3dUZXh0KXJldHVybiExO2NvbnN0IG49ZS5pQ3Vyci0zLHM9aVtuXVswXSxvPWlbbl1bMV07cmV0dXJuIGlbdF1bMF09PT1zJiZpW3RdWzFdPT09bztjYXNlIDQ6cmV0dXJuIGFbdF09PT1yLk9QUy5lbmRUZXh0fXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZVNob3dUZXh0R3JvdXAgLSBpbnZhbGlkIHBvczogJHtufWApfSksKGZ1bmN0aW9uKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXkscj1lLmFyZ3NBcnJheSxpPWUuaUN1cnIsbj1pLTQscz1pLTMsbz1pLTIsYz1pLTEsbD1pLGg9cltzXVswXSx1PXJbc11bMV07bGV0IGQ9TWF0aC5taW4oTWF0aC5mbG9vcigodC1uKS81KSwxZTMpO2lmKGQ8MylyZXR1cm4gdC0odC1uKSU1O2xldCBmPW47aWYobj49NCYmYVtuLTRdPT09YVtzXSYmYVtuLTNdPT09YVtvXSYmYVtuLTJdPT09YVtjXSYmYVtuLTFdPT09YVtsXSYmcltuLTRdWzBdPT09aCYmcltuLTRdWzFdPT09dSl7ZCsrO2YtPTV9bGV0IGc9Zis0O2ZvcihsZXQgZT0xO2U8ZDtlKyspe2Euc3BsaWNlKGcsMyk7ci5zcGxpY2UoZywzKTtnKz0yfXJldHVybiBnKzF9KSk7Y2xhc3MgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXt0aGlzLnF1ZXVlPWV9X29wdGltaXplKCl7fXB1c2goZSx0KXt0aGlzLnF1ZXVlLmZuQXJyYXkucHVzaChlKTt0aGlzLnF1ZXVlLmFyZ3NBcnJheS5wdXNoKHQpO3RoaXMuX29wdGltaXplKCl9Zmx1c2goKXt9cmVzZXQoKXt9fWNsYXNzIFF1ZXVlT3B0aW1pemVyIGV4dGVuZHMgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLnN0YXRlPW51bGw7dGhpcy5jb250ZXh0PXtpQ3VycjowLGZuQXJyYXk6ZS5mbkFycmF5LGFyZ3NBcnJheTplLmFyZ3NBcnJheSxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMX07dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfXNldCBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZChlKXt0aGlzLmNvbnRleHQuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ9ZX1fb3B0aW1pemUoKXtjb25zdCBlPXRoaXMucXVldWUuZm5BcnJheTtsZXQgdD10aGlzLmxhc3RQcm9jZXNzZWQsYT1lLmxlbmd0aCxyPXRoaXMuc3RhdGUsbj10aGlzLm1hdGNoO2lmKCFyJiYhbiYmdCsxPT09YSYmIWlbZVt0XV0pe3RoaXMubGFzdFByb2Nlc3NlZD1hO3JldHVybn1jb25zdCBzPXRoaXMuY29udGV4dDtmb3IoO3Q8YTspe2lmKG4pe2lmKCgwLG4uaXRlcmF0ZUZuKShzLHQpKXt0Kys7Y29udGludWV9dD0oMCxuLnByb2Nlc3NGbikocyx0KzEpO2E9ZS5sZW5ndGg7bj1udWxsO3I9bnVsbDtpZih0Pj1hKWJyZWFrfXI9KHJ8fGkpW2VbdF1dO2lmKHImJiFBcnJheS5pc0FycmF5KHIpKXtzLmlDdXJyPXQ7dCsrO2lmKCFyLmNoZWNrRm58fCgwLHIuY2hlY2tGbikocykpe249cjtyPW51bGx9ZWxzZSByPW51bGx9ZWxzZSB0Kyt9dGhpcy5zdGF0ZT1yO3RoaXMubWF0Y2g9bjt0aGlzLmxhc3RQcm9jZXNzZWQ9dH1mbHVzaCgpe2Zvcig7dGhpcy5tYXRjaDspe2NvbnN0IGU9dGhpcy5xdWV1ZS5mbkFycmF5Lmxlbmd0aDt0aGlzLmxhc3RQcm9jZXNzZWQ9KDAsdGhpcy5tYXRjaC5wcm9jZXNzRm4pKHRoaXMuY29udGV4dCxlKTt0aGlzLm1hdGNoPW51bGw7dGhpcy5zdGF0ZT1udWxsO3RoaXMuX29wdGltaXplKCl9fXJlc2V0KCl7dGhpcy5zdGF0ZT1udWxsO3RoaXMubWF0Y2g9bnVsbDt0aGlzLmxhc3RQcm9jZXNzZWQ9MH19Y2xhc3MgT3BlcmF0b3JMaXN0e3N0YXRpYyBDSFVOS19TSVpFPTFlMztzdGF0aWMgQ0hVTktfU0laRV9BQk9VVD10aGlzLkNIVU5LX1NJWkUtNTtjb25zdHJ1Y3RvcihlPTAsdCl7dGhpcy5fc3RyZWFtU2luaz10O3RoaXMuZm5BcnJheT1bXTt0aGlzLmFyZ3NBcnJheT1bXTshdHx8ZSZyLlJlbmRlcmluZ0ludGVudEZsYWcuT1BMSVNUP3RoaXMub3B0aW1pemVyPW5ldyBOdWxsT3B0aW1pemVyKHRoaXMpOnRoaXMub3B0aW1pemVyPW5ldyBRdWV1ZU9wdGltaXplcih0aGlzKTt0aGlzLmRlcGVuZGVuY2llcz1uZXcgU2V0O3RoaXMuX3RvdGFsTGVuZ3RoPTA7dGhpcy53ZWlnaHQ9MDt0aGlzLl9yZXNvbHZlZD10P251bGw6UHJvbWlzZS5yZXNvbHZlKCl9c2V0IGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKGUpe3RoaXMub3B0aW1pemVyLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmFyZ3NBcnJheS5sZW5ndGh9Z2V0IHJlYWR5KCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVkfHx0aGlzLl9zdHJlYW1TaW5rLnJlYWR5fWdldCB0b3RhbExlbmd0aCgpe3JldHVybiB0aGlzLl90b3RhbExlbmd0aCt0aGlzLmxlbmd0aH1hZGRPcChlLHQpe3RoaXMub3B0aW1pemVyLnB1c2goZSx0KTt0aGlzLndlaWdodCsrO3RoaXMuX3N0cmVhbVNpbmsmJih0aGlzLndlaWdodD49T3BlcmF0b3JMaXN0LkNIVU5LX1NJWkV8fHRoaXMud2VpZ2h0Pj1PcGVyYXRvckxpc3QuQ0hVTktfU0laRV9BQk9VVCYmKGU9PT1yLk9QUy5yZXN0b3JlfHxlPT09ci5PUFMuZW5kVGV4dCkpJiZ0aGlzLmZsdXNoKCl9YWRkSW1hZ2VPcHMoZSx0LGEpe3ZvaWQgMCE9PWEmJnRoaXMuYWRkT3Aoci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsWyJPQyIsYV0pO3RoaXMuYWRkT3AoZSx0KTt2b2lkIDAhPT1hJiZ0aGlzLmFkZE9wKHIuT1BTLmVuZE1hcmtlZENvbnRlbnQsW10pfWFkZERlcGVuZGVuY3koZSl7aWYoIXRoaXMuZGVwZW5kZW5jaWVzLmhhcyhlKSl7dGhpcy5kZXBlbmRlbmNpZXMuYWRkKGUpO3RoaXMuYWRkT3Aoci5PUFMuZGVwZW5kZW5jeSxbZV0pfX1hZGREZXBlbmRlbmNpZXMoZSl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZERlcGVuZGVuY3kodCl9YWRkT3BMaXN0KGUpe2lmKGUgaW5zdGFuY2VvZiBPcGVyYXRvckxpc3Qpe2Zvcihjb25zdCB0IG9mIGUuZGVwZW5kZW5jaWVzKXRoaXMuZGVwZW5kZW5jaWVzLmFkZCh0KTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0KyspdGhpcy5hZGRPcChlLmZuQXJyYXlbdF0sZS5hcmdzQXJyYXlbdF0pfWVsc2UoMCxyLndhcm4pKCdhZGRPcExpc3QgLSBpZ25vcmluZyBpbnZhbGlkICJvcExpc3QiIHBhcmFtZXRlci4nKX1nZXRJUigpe3JldHVybntmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGVuZ3RoOnRoaXMubGVuZ3RofX1nZXQgX3RyYW5zZmVycygpe2NvbnN0IGU9W10se2ZuQXJyYXk6dCxhcmdzQXJyYXk6YSxsZW5ndGg6aX09dGhpcztmb3IobGV0IG49MDtuPGk7bisrKXN3aXRjaCh0W25dKXtjYXNlIHIuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0OmNhc2Ugci5PUFMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cDpjYXNlIHIuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdDpjb25zdCB0PWFbbl1bMF07IXQuY2FjaGVkJiZ0LmRhdGE/LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiZlLnB1c2godC5kYXRhLmJ1ZmZlcil9cmV0dXJuIGV9Zmx1c2goZT0hMSx0PW51bGwpe3RoaXMub3B0aW1pemVyLmZsdXNoKCk7Y29uc3QgYT10aGlzLmxlbmd0aDt0aGlzLl90b3RhbExlbmd0aCs9YTt0aGlzLl9zdHJlYW1TaW5rLmVucXVldWUoe2ZuQXJyYXk6dGhpcy5mbkFycmF5LGFyZ3NBcnJheTp0aGlzLmFyZ3NBcnJheSxsYXN0Q2h1bms6ZSxzZXBhcmF0ZUFubm90czp0LGxlbmd0aDphfSwxLHRoaXMuX3RyYW5zZmVycyk7dGhpcy5kZXBlbmRlbmNpZXMuY2xlYXIoKTt0aGlzLmZuQXJyYXkubGVuZ3RoPTA7dGhpcy5hcmdzQXJyYXkubGVuZ3RoPTA7dGhpcy53ZWlnaHQ9MDt0aGlzLm9wdGltaXplci5yZXNldCgpfX10Lk9wZXJhdG9yTGlzdD1PcGVyYXRvckxpc3R9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5QREZJbWFnZT12b2lkIDA7dmFyIHI9YSgyKSxpPWEoMjgpLG49YSg1KSxzPWEoMTIpLG89YSgxOCksYz1hKDYyKSxsPWEoMjYpLGg9YSgzMCksdT1hKDQpO2Z1bmN0aW9uIGRlY29kZUFuZENsYW1wKGUsdCxhLHIpeyhlPXQrZSphKTwwP2U9MDplPnImJihlPXIpO3JldHVybiBlfWZ1bmN0aW9uIHJlc2l6ZUltYWdlTWFzayhlLHQsYSxyLGksbil7Y29uc3Qgcz1pKm47bGV0IG87bz10PD04P25ldyBVaW50OEFycmF5KHMpOnQ8PTE2P25ldyBVaW50MTZBcnJheShzKTpuZXcgVWludDMyQXJyYXkocyk7Y29uc3QgYz1hL2ksbD1yL247bGV0IGgsdSxkLGYsZz0wO2NvbnN0IHA9bmV3IFVpbnQxNkFycmF5KGkpLG09YTtmb3IoaD0wO2g8aTtoKyspcFtoXT1NYXRoLmZsb29yKGgqYyk7Zm9yKGg9MDtoPG47aCsrKXtkPU1hdGguZmxvb3IoaCpsKSptO2Zvcih1PTA7dTxpO3UrKyl7Zj1kK3BbdV07b1tnKytdPWVbZl19fXJldHVybiBvfWNsYXNzIFBERkltYWdle2NvbnN0cnVjdG9yKHt4cmVmOmUscmVzOnQsaW1hZ2U6YSxpc0lubGluZTppPSExLHNtYXNrOm89bnVsbCxtYXNrOmM9bnVsbCxpc01hc2s6bD0hMSxwZGZGdW5jdGlvbkZhY3Rvcnk6ZCxsb2NhbENvbG9yU3BhY2VDYWNoZTpmfSl7dGhpcy5pbWFnZT1hO2NvbnN0IGc9YS5kaWN0LHA9Zy5nZXQoIkYiLCJGaWx0ZXIiKTtsZXQgbTtpZihwIGluc3RhbmNlb2YgdS5OYW1lKW09cC5uYW1lO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShwKSl7Y29uc3QgdD1lLmZldGNoSWZSZWYocFswXSk7dCBpbnN0YW5jZW9mIHUuTmFtZSYmKG09dC5uYW1lKX1zd2l0Y2gobSl7Y2FzZSJKUFhEZWNvZGUiOmNvbnN0IGU9bmV3IGguSnB4SW1hZ2U7ZS5wYXJzZUltYWdlUHJvcGVydGllcyhhLnN0cmVhbSk7YS5zdHJlYW0ucmVzZXQoKTthLndpZHRoPWUud2lkdGg7YS5oZWlnaHQ9ZS5oZWlnaHQ7YS5iaXRzUGVyQ29tcG9uZW50PWUuYml0c1BlckNvbXBvbmVudDthLm51bUNvbXBzPWUuY29tcG9uZW50c0NvdW50O2JyZWFrO2Nhc2UiSkJJRzJEZWNvZGUiOmEuYml0c1BlckNvbXBvbmVudD0xO2EubnVtQ29tcHM9MX1sZXQgYj1nLmdldCgiVyIsIldpZHRoIikseT1nLmdldCgiSCIsIkhlaWdodCIpO2lmKE51bWJlci5pc0ludGVnZXIoYS53aWR0aCkmJmEud2lkdGg+MCYmTnVtYmVyLmlzSW50ZWdlcihhLmhlaWdodCkmJmEuaGVpZ2h0PjAmJihhLndpZHRoIT09Ynx8YS5oZWlnaHQhPT15KSl7KDAsci53YXJuKSgiUERGSW1hZ2UgLSB1c2luZyB0aGUgV2lkdGgvSGVpZ2h0IG9mIHRoZSBpbWFnZSBkYXRhLCByYXRoZXIgdGhhbiB0aGUgaW1hZ2UgZGljdGlvbmFyeS4iKTtiPWEud2lkdGg7eT1hLmhlaWdodH1pZihiPDF8fHk8MSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBpbWFnZSB3aWR0aDogJHtifSBvciBoZWlnaHQ6ICR7eX1gKTt0aGlzLndpZHRoPWI7dGhpcy5oZWlnaHQ9eTt0aGlzLmludGVycG9sYXRlPWcuZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKTt0aGlzLmltYWdlTWFzaz1nLmdldCgiSU0iLCJJbWFnZU1hc2siKXx8ITE7dGhpcy5tYXR0ZT1nLmdldCgiTWF0dGUiKXx8ITE7bGV0IHc9YS5iaXRzUGVyQ29tcG9uZW50O2lmKCF3KXt3PWcuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iik7aWYoIXcpe2lmKCF0aGlzLmltYWdlTWFzayl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgQml0cyBwZXIgY29tcG9uZW50IG1pc3NpbmcgaW4gaW1hZ2U6ICR7dGhpcy5pbWFnZU1hc2t9YCk7dz0xfX10aGlzLmJwYz13O2lmKCF0aGlzLmltYWdlTWFzayl7bGV0IG49Zy5nZXRSYXcoIkNTIil8fGcuZ2V0UmF3KCJDb2xvclNwYWNlIik7aWYoIW4peygwLHIuaW5mbykoIkpQWCBpbWFnZXMgKHdoaWNoIGRvIG5vdCByZXF1aXJlIGNvbG9yIHNwYWNlcykiKTtzd2l0Y2goYS5udW1Db21wcyl7Y2FzZSAxOm49dS5OYW1lLmdldCgiRGV2aWNlR3JheSIpO2JyZWFrO2Nhc2UgMzpuPXUuTmFtZS5nZXQoIkRldmljZVJHQiIpO2JyZWFrO2Nhc2UgNDpuPXUuTmFtZS5nZXQoIkRldmljZUNNWUsiKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgSlBYIGltYWdlcyB3aXRoICR7YS5udW1Db21wc30gY29sb3IgY29tcG9uZW50cyBub3Qgc3VwcG9ydGVkLmApfX10aGlzLmNvbG9yU3BhY2U9cy5Db2xvclNwYWNlLnBhcnNlKHtjczpuLHhyZWY6ZSxyZXNvdXJjZXM6aT90Om51bGwscGRmRnVuY3Rpb25GYWN0b3J5OmQsbG9jYWxDb2xvclNwYWNlQ2FjaGU6Zn0pO3RoaXMubnVtQ29tcHM9dGhpcy5jb2xvclNwYWNlLm51bUNvbXBzfXRoaXMuZGVjb2RlPWcuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTt0aGlzLm5lZWRzRGVjb2RlPSExO2lmKHRoaXMuZGVjb2RlJiYodGhpcy5jb2xvclNwYWNlJiYhdGhpcy5jb2xvclNwYWNlLmlzRGVmYXVsdERlY29kZSh0aGlzLmRlY29kZSx3KXx8bCYmIXMuQ29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUodGhpcy5kZWNvZGUsMSkpKXt0aGlzLm5lZWRzRGVjb2RlPSEwO2NvbnN0IGU9KDE8PHcpLTE7dGhpcy5kZWNvZGVDb2VmZmljaWVudHM9W107dGhpcy5kZWNvZGVBZGRlbmRzPVtdO2NvbnN0IHQ9IkluZGV4ZWQiPT09dGhpcy5jb2xvclNwYWNlPy5uYW1lO2ZvcihsZXQgYT0wLHI9MDthPHRoaXMuZGVjb2RlLmxlbmd0aDthKz0yLCsrcil7Y29uc3QgaT10aGlzLmRlY29kZVthXSxuPXRoaXMuZGVjb2RlW2ErMV07dGhpcy5kZWNvZGVDb2VmZmljaWVudHNbcl09dD8obi1pKS9lOm4taTt0aGlzLmRlY29kZUFkZGVuZHNbcl09dD9pOmUqaX19aWYobyl0aGlzLnNtYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOm8saXNJbmxpbmU6aSxwZGZGdW5jdGlvbkZhY3Rvcnk6ZCxsb2NhbENvbG9yU3BhY2VDYWNoZTpmfSk7ZWxzZSBpZihjKWlmKGMgaW5zdGFuY2VvZiBuLkJhc2VTdHJlYW0pe2MuZGljdC5nZXQoIklNIiwiSW1hZ2VNYXNrIik/dGhpcy5tYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOmMsaXNJbmxpbmU6aSxpc01hc2s6ITAscGRmRnVuY3Rpb25GYWN0b3J5OmQsbG9jYWxDb2xvclNwYWNlQ2FjaGU6Zn0pOigwLHIud2FybikoIklnbm9yaW5nIC9NYXNrIGluIGltYWdlIHdpdGhvdXQgL0ltYWdlTWFzay4iKX1lbHNlIHRoaXMubWFzaz1jfXN0YXRpYyBhc3luYyBidWlsZEltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6YSxpc0lubGluZTppPSExLHBkZkZ1bmN0aW9uRmFjdG9yeTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm99KXtjb25zdCBjPWE7bGV0IGw9bnVsbCxoPW51bGw7Y29uc3QgdT1hLmRpY3QuZ2V0KCJTTWFzayIpLGQ9YS5kaWN0LmdldCgiTWFzayIpO3U/dSBpbnN0YW5jZW9mIG4uQmFzZVN0cmVhbT9sPXU6KDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgL1NNYXNrIGZvcm1hdC4iKTpkJiYoZCBpbnN0YW5jZW9mIG4uQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheShkKT9oPWQ6KDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgL01hc2sgZm9ybWF0LiIpKTtyZXR1cm4gbmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6Yyxpc0lubGluZTppLHNtYXNrOmwsbWFzazpoLHBkZkZ1bmN0aW9uRmFjdG9yeTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm99KX1zdGF0aWMgY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6ZSx3aWR0aDp0LGhlaWdodDphLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOnIsaW52ZXJzZURlY29kZTppLGludGVycG9sYXRlOm59KXtjb25zdCBzPSh0Kzc+PjMpKmEsbz1lLmJ5dGVMZW5ndGg7bGV0IGMsbDtpZighcnx8aSYmIShzPT09bykpaWYoaSl7Yz1uZXcgVWludDhBcnJheShzKTtjLnNldChlKTtjLmZpbGwoMjU1LG8pfWVsc2UgYz1uZXcgVWludDhBcnJheShlKTtlbHNlIGM9ZTtpZihpKWZvcihsPTA7bDxvO2wrKyljW2xdXj0yNTU7cmV0dXJue2RhdGE6Yyx3aWR0aDp0LGhlaWdodDphLGludGVycG9sYXRlOm59fXN0YXRpYyBhc3luYyBjcmVhdGVNYXNrKHtpbWdBcnJheTplLHdpZHRoOnQsaGVpZ2h0OmEsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06bixpbnZlcnNlRGVjb2RlOnMsaW50ZXJwb2xhdGU6byxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpsPSExfSl7Y29uc3QgaD0xPT09dCYmMT09PWEmJnM9PT0oMD09PWUubGVuZ3RofHwhISgxMjgmZVswXSkpO2lmKGgpcmV0dXJue2lzU2luZ2xlT3BhcXVlUGl4ZWw6aH07aWYobCl7aWYoYy5JbWFnZVJlc2l6ZXIubmVlZHNUb0JlUmVzaXplZCh0LGEpKXtjb25zdCBuPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmEqNCk7KDAsaS5jb252ZXJ0QmxhY2tBbmRXaGl0ZVRvUkdCQSkoe3NyYzplLGRlc3Q6bix3aWR0aDp0LGhlaWdodDphLG5vbkJsYWNrQ29sb3I6MCxpbnZlcnNlRGVjb2RlOnN9KTtyZXR1cm4gYy5JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2Uoe2tpbmQ6ci5JbWFnZUtpbmQuUkdCQV8zMkJQUCxkYXRhOm4sd2lkdGg6dCxoZWlnaHQ6YSxpbnRlcnBvbGF0ZTpvfSl9Y29uc3Qgbj1uZXcgT2Zmc2NyZWVuQ2FudmFzKHQsYSksbD1uLmdldENvbnRleHQoIjJkIiksaD1sLmNyZWF0ZUltYWdlRGF0YSh0LGEpOygwLGkuY29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEpKHtzcmM6ZSxkZXN0OmguZGF0YSx3aWR0aDp0LGhlaWdodDphLG5vbkJsYWNrQ29sb3I6MCxpbnZlcnNlRGVjb2RlOnN9KTtsLnB1dEltYWdlRGF0YShoLDAsMCk7cmV0dXJue2RhdGE6bnVsbCx3aWR0aDp0LGhlaWdodDphLGludGVycG9sYXRlOm8sYml0bWFwOm4udHJhbnNmZXJUb0ltYWdlQml0bWFwKCl9fXJldHVybiB0aGlzLmNyZWF0ZVJhd01hc2soe2ltZ0FycmF5OmUsd2lkdGg6dCxoZWlnaHQ6YSxpbnZlcnNlRGVjb2RlOnMsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06bixpbnRlcnBvbGF0ZTpvfSl9Z2V0IGRyYXdXaWR0aCgpe3JldHVybiBNYXRoLm1heCh0aGlzLndpZHRoLHRoaXMuc21hc2s/LndpZHRofHwwLHRoaXMubWFzaz8ud2lkdGh8fDApfWdldCBkcmF3SGVpZ2h0KCl7cmV0dXJuIE1hdGgubWF4KHRoaXMuaGVpZ2h0LHRoaXMuc21hc2s/LmhlaWdodHx8MCx0aGlzLm1hc2s/LmhlaWdodHx8MCl9ZGVjb2RlQnVmZmVyKGUpe2NvbnN0IHQ9dGhpcy5icGMsYT10aGlzLm51bUNvbXBzLHI9dGhpcy5kZWNvZGVBZGRlbmRzLGk9dGhpcy5kZWNvZGVDb2VmZmljaWVudHMsbj0oMTw8dCktMTtsZXQgcyxvO2lmKDE9PT10KXtmb3Iocz0wLG89ZS5sZW5ndGg7czxvO3MrKyllW3NdPSshZVtzXTtyZXR1cm59bGV0IGM9MDtmb3Iocz0wLG89dGhpcy53aWR0aCp0aGlzLmhlaWdodDtzPG87cysrKWZvcihsZXQgdD0wO3Q8YTt0Kyspe2VbY109ZGVjb2RlQW5kQ2xhbXAoZVtjXSxyW3RdLGlbdF0sbik7YysrfX1nZXRDb21wb25lbnRzKGUpe2NvbnN0IHQ9dGhpcy5icGM7aWYoOD09PXQpcmV0dXJuIGU7Y29uc3QgYT10aGlzLndpZHRoLHI9dGhpcy5oZWlnaHQsaT10aGlzLm51bUNvbXBzLG49YSpyKmk7bGV0IHMsbz0wO3M9dDw9OD9uZXcgVWludDhBcnJheShuKTp0PD0xNj9uZXcgVWludDE2QXJyYXkobik6bmV3IFVpbnQzMkFycmF5KG4pO2NvbnN0IGM9YSppLGw9KDE8PHQpLTE7bGV0IGgsdSxkPTA7aWYoMT09PXQpe2xldCB0LGEsaTtmb3IobGV0IG49MDtuPHI7bisrKXthPWQrKC04JmMpO2k9ZCtjO2Zvcig7ZDxhOyl7dT1lW28rK107c1tkXT11Pj43JjE7c1tkKzFdPXU+PjYmMTtzW2QrMl09dT4+NSYxO3NbZCszXT11Pj40JjE7c1tkKzRdPXU+PjMmMTtzW2QrNV09dT4+MiYxO3NbZCs2XT11Pj4xJjE7c1tkKzddPTEmdTtkKz04fWlmKGQ8aSl7dT1lW28rK107dD0xMjg7Zm9yKDtkPGk7KXtzW2QrK109KyEhKHUmdCk7dD4+PTF9fX19ZWxzZXtsZXQgYT0wO3U9MDtmb3IoZD0wLGg9bjtkPGg7KytkKXtpZihkJWM9PTApe3U9MDthPTB9Zm9yKDthPHQ7KXt1PXU8PDh8ZVtvKytdO2ErPTh9Y29uc3Qgcj1hLXQ7bGV0IGk9dT4+cjtpPDA/aT0wOmk+bCYmKGk9bCk7c1tkXT1pO3UmPSgxPDxyKS0xO2E9cn19cmV0dXJuIHN9ZmlsbE9wYWNpdHkoZSx0LGEsaSxuKXtjb25zdCBzPXRoaXMuc21hc2ssbz10aGlzLm1hc2s7bGV0IGMsbCxoLHUsZCxmO2lmKHMpe2w9cy53aWR0aDtoPXMuaGVpZ2h0O2M9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGwqaCk7cy5maWxsR3JheUJ1ZmZlcihjKTtsPT09dCYmaD09PWF8fChjPXJlc2l6ZUltYWdlTWFzayhjLHMuYnBjLGwsaCx0LGEpKX1lbHNlIGlmKG8paWYobyBpbnN0YW5jZW9mIFBERkltYWdlKXtsPW8ud2lkdGg7aD1vLmhlaWdodDtjPW5ldyBVaW50OENsYW1wZWRBcnJheShsKmgpO28ubnVtQ29tcHM9MTtvLmZpbGxHcmF5QnVmZmVyKGMpO2Zvcih1PTAsZD1sKmg7dTxkOysrdSljW3VdPTI1NS1jW3VdO2w9PT10JiZoPT09YXx8KGM9cmVzaXplSW1hZ2VNYXNrKGMsby5icGMsbCxoLHQsYSkpfWVsc2V7aWYoIUFycmF5LmlzQXJyYXkobykpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlVua25vd24gbWFzayBmb3JtYXQuIik7e2M9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqYSk7Y29uc3QgZT10aGlzLm51bUNvbXBzO2Zvcih1PTAsZD10KmE7dTxkOysrdSl7bGV0IHQ9MDtjb25zdCBhPXUqZTtmb3IoZj0wO2Y8ZTsrK2Ype2NvbnN0IGU9blthK2ZdLHI9MipmO2lmKGU8b1tyXXx8ZT5vW3IrMV0pe3Q9MjU1O2JyZWFrfX1jW3VdPXR9fX1pZihjKWZvcih1PTAsZj0zLGQ9dCppO3U8ZDsrK3UsZis9NCllW2ZdPWNbdV07ZWxzZSBmb3IodT0wLGY9MyxkPXQqaTt1PGQ7Kyt1LGYrPTQpZVtmXT0yNTV9dW5kb1ByZWJsZW5kKGUsdCxhKXtjb25zdCByPXRoaXMuc21hc2s/Lm1hdHRlO2lmKCFyKXJldHVybjtjb25zdCBpPXRoaXMuY29sb3JTcGFjZS5nZXRSZ2IociwwKSxuPWlbMF0scz1pWzFdLG89aVsyXSxjPXQqYSo0O2ZvcihsZXQgdD0wO3Q8Yzt0Kz00KXtjb25zdCBhPWVbdCszXTtpZigwPT09YSl7ZVt0XT0yNTU7ZVt0KzFdPTI1NTtlW3QrMl09MjU1O2NvbnRpbnVlfWNvbnN0IHI9MjU1L2E7ZVt0XT0oZVt0XS1uKSpyK247ZVt0KzFdPShlW3QrMV0tcykqcitzO2VbdCsyXT0oZVt0KzJdLW8pKnIrb319YXN5bmMgY3JlYXRlSW1hZ2VEYXRhKGU9ITEsdD0hMSl7Y29uc3QgYT10aGlzLmRyYXdXaWR0aCxpPXRoaXMuZHJhd0hlaWdodCxuPXt3aWR0aDphLGhlaWdodDppLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGUsa2luZDowLGRhdGE6bnVsbH0scz10aGlzLm51bUNvbXBzLG89dGhpcy53aWR0aCxoPXRoaXMuaGVpZ2h0LHU9dGhpcy5icGMsZD1vKnMqdSs3Pj4zLGY9dCYmYy5JbWFnZVJlc2l6ZXIubmVlZHNUb0JlUmVzaXplZChhLGkpO2lmKCFlKXtsZXQgZTsiRGV2aWNlR3JheSI9PT10aGlzLmNvbG9yU3BhY2UubmFtZSYmMT09PXU/ZT1yLkltYWdlS2luZC5HUkFZU0NBTEVfMUJQUDoiRGV2aWNlUkdCIiE9PXRoaXMuY29sb3JTcGFjZS5uYW1lfHw4IT09dXx8dGhpcy5uZWVkc0RlY29kZXx8KGU9ci5JbWFnZUtpbmQuUkdCXzI0QlBQKTtpZihlJiYhdGhpcy5zbWFzayYmIXRoaXMubWFzayYmYT09PW8mJmk9PT1oKXtjb25zdCBzPXRoaXMuZ2V0SW1hZ2VCeXRlcyhoKmQse30pO2lmKHQpcmV0dXJuIGY/Yy5JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2Uoe2RhdGE6cyxraW5kOmUsd2lkdGg6YSxoZWlnaHQ6aSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlfSx0aGlzLm5lZWRzRGVjb2RlKTp0aGlzLmNyZWF0ZUJpdG1hcChlLG8saCxzKTtuLmtpbmQ9ZTtuLmRhdGE9cztpZih0aGlzLm5lZWRzRGVjb2RlKXsoMCxyLmFzc2VydCkoZT09PXIuSW1hZ2VLaW5kLkdSQVlTQ0FMRV8xQlBQLCJQREZJbWFnZS5jcmVhdGVJbWFnZURhdGE6IFRoZSBpbWFnZSBtdXN0IGJlIGdyYXlzY2FsZS4iKTtjb25zdCB0PW4uZGF0YTtmb3IobGV0IGU9MCxhPXQubGVuZ3RoO2U8YTtlKyspdFtlXV49MjU1fXJldHVybiBufWlmKHRoaXMuaW1hZ2UgaW5zdGFuY2VvZiBsLkpwZWdTdHJlYW0mJiF0aGlzLnNtYXNrJiYhdGhpcy5tYXNrJiYhdGhpcy5uZWVkc0RlY29kZSl7bGV0IGU9aCpkO2lmKHQmJiFmKXtsZXQgdD0hMTtzd2l0Y2godGhpcy5jb2xvclNwYWNlLm5hbWUpe2Nhc2UiRGV2aWNlR3JheSI6ZSo9NDt0PSEwO2JyZWFrO2Nhc2UiRGV2aWNlUkdCIjplPWUvMyo0O3Q9ITA7YnJlYWs7Y2FzZSJEZXZpY2VDTVlLIjp0PSEwfWlmKHQpe2NvbnN0IHQ9dGhpcy5nZXRJbWFnZUJ5dGVzKGUse2RyYXdXaWR0aDphLGRyYXdIZWlnaHQ6aSxmb3JjZVJHQkE6ITB9KTtyZXR1cm4gdGhpcy5jcmVhdGVCaXRtYXAoci5JbWFnZUtpbmQuUkdCQV8zMkJQUCxhLGksdCl9fWVsc2Ugc3dpdGNoKHRoaXMuY29sb3JTcGFjZS5uYW1lKXtjYXNlIkRldmljZUdyYXkiOmUqPTM7Y2FzZSJEZXZpY2VSR0IiOmNhc2UiRGV2aWNlQ01ZSyI6bi5raW5kPXIuSW1hZ2VLaW5kLlJHQl8yNEJQUDtuLmRhdGE9dGhpcy5nZXRJbWFnZUJ5dGVzKGUse2RyYXdXaWR0aDphLGRyYXdIZWlnaHQ6aSxmb3JjZVJHQjohMH0pO3JldHVybiBmP2MuSW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKG4pOm59fX1jb25zdCBnPXRoaXMuZ2V0SW1hZ2VCeXRlcyhoKmQse2ludGVybmFsOiEwfSkscD0wfGcubGVuZ3RoL2QqaS9oLG09dGhpcy5nZXRDb21wb25lbnRzKGcpO2xldCBiLHksdyxTLHgsQztpZih0JiYhZil7dz1uZXcgT2Zmc2NyZWVuQ2FudmFzKGEsaSk7Uz13LmdldENvbnRleHQoIjJkIik7eD1TLmNyZWF0ZUltYWdlRGF0YShhLGkpO0M9eC5kYXRhfW4ua2luZD1yLkltYWdlS2luZC5SR0JBXzMyQlBQO2lmKGV8fHRoaXMuc21hc2t8fHRoaXMubWFzayl7dCYmIWZ8fChDPW5ldyBVaW50OENsYW1wZWRBcnJheShhKmkqNCkpO2I9MTt5PSEwO3RoaXMuZmlsbE9wYWNpdHkoQyxhLGkscCxtKX1lbHNle2lmKCF0fHxmKXtuLmtpbmQ9ci5JbWFnZUtpbmQuUkdCXzI0QlBQO0M9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGEqaSozKTtiPTB9ZWxzZXtuZXcgVWludDMyQXJyYXkoQy5idWZmZXIpLmZpbGwoci5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSk7Yj0xfXk9ITF9dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIobSk7dGhpcy5jb2xvclNwYWNlLmZpbGxSZ2IoQyxvLGgsYSxpLHAsdSxtLGIpO3kmJnRoaXMudW5kb1ByZWJsZW5kKEMsYSxwKTtpZih0JiYhZil7Uy5wdXRJbWFnZURhdGEoeCwwLDApO3JldHVybntkYXRhOm51bGwsd2lkdGg6YSxoZWlnaHQ6aSxiaXRtYXA6dy50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlfX1uLmRhdGE9QztyZXR1cm4gZj9jLkltYWdlUmVzaXplci5jcmVhdGVJbWFnZShuKTpufWZpbGxHcmF5QnVmZmVyKGUpe2NvbnN0IHQ9dGhpcy5udW1Db21wcztpZigxIT09dCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgUmVhZGluZyBncmF5IHNjYWxlIGZyb20gYSBjb2xvciBpbWFnZTogJHt0fWApO2NvbnN0IGE9dGhpcy53aWR0aCxpPXRoaXMuaGVpZ2h0LG49dGhpcy5icGMscz1hKnQqbis3Pj4zLG89dGhpcy5nZXRJbWFnZUJ5dGVzKGkqcyx7aW50ZXJuYWw6ITB9KSxjPXRoaXMuZ2V0Q29tcG9uZW50cyhvKTtsZXQgbCxoO2lmKDE9PT1uKXtoPWEqaTtpZih0aGlzLm5lZWRzRGVjb2RlKWZvcihsPTA7bDxoOysrbCllW2xdPWNbbF0tMSYyNTU7ZWxzZSBmb3IobD0wO2w8aDsrK2wpZVtsXT0yNTUmLWNbbF07cmV0dXJufXRoaXMubmVlZHNEZWNvZGUmJnRoaXMuZGVjb2RlQnVmZmVyKGMpO2g9YSppO2NvbnN0IHU9MjU1LygoMTw8biktMSk7Zm9yKGw9MDtsPGg7KytsKWVbbF09dSpjW2xdfWNyZWF0ZUJpdG1hcChlLHQsYSxuKXtjb25zdCBzPW5ldyBPZmZzY3JlZW5DYW52YXModCxhKSxvPXMuZ2V0Q29udGV4dCgiMmQiKTtsZXQgYztpZihlPT09ci5JbWFnZUtpbmQuUkdCQV8zMkJQUCljPW5ldyBJbWFnZURhdGEobix0LGEpO2Vsc2V7Yz1vLmNyZWF0ZUltYWdlRGF0YSh0LGEpOygwLGkuY29udmVydFRvUkdCQSkoe2tpbmQ6ZSxzcmM6bixkZXN0Om5ldyBVaW50MzJBcnJheShjLmRhdGEuYnVmZmVyKSx3aWR0aDp0LGhlaWdodDphLGludmVyc2VEZWNvZGU6dGhpcy5uZWVkc0RlY29kZX0pfW8ucHV0SW1hZ2VEYXRhKGMsMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOnQsaGVpZ2h0OmEsYml0bWFwOnMudHJhbnNmZXJUb0ltYWdlQml0bWFwKCksaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX19Z2V0SW1hZ2VCeXRlcyhlLHtkcmF3V2lkdGg6dCxkcmF3SGVpZ2h0OmEsZm9yY2VSR0JBOmk9ITEsZm9yY2VSR0I6bj0hMSxpbnRlcm5hbDpzPSExfSl7dGhpcy5pbWFnZS5yZXNldCgpO3RoaXMuaW1hZ2UuZHJhd1dpZHRoPXR8fHRoaXMud2lkdGg7dGhpcy5pbWFnZS5kcmF3SGVpZ2h0PWF8fHRoaXMuaGVpZ2h0O3RoaXMuaW1hZ2UuZm9yY2VSR0JBPSEhaTt0aGlzLmltYWdlLmZvcmNlUkdCPSEhbjtjb25zdCBjPXRoaXMuaW1hZ2UuZ2V0Qnl0ZXMoZSk7aWYoc3x8dGhpcy5pbWFnZSBpbnN0YW5jZW9mIG8uRGVjb2RlU3RyZWFtKXJldHVybiBjOygwLHIuYXNzZXJ0KShjIGluc3RhbmNlb2YgVWludDhBcnJheSwnUERGSW1hZ2UuZ2V0SW1hZ2VCeXRlczogVW5zdXBwb3J0ZWQgImltYWdlQnl0ZXMiIHR5cGUuJyk7cmV0dXJuIG5ldyBVaW50OEFycmF5KGMpfX10LlBERkltYWdlPVBERkltYWdlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuaW5jcmVtZW50YWxVcGRhdGU9YXN5bmMgZnVuY3Rpb24gaW5jcmVtZW50YWxVcGRhdGUoe29yaWdpbmFsRGF0YTplLHhyZWZJbmZvOnQsbmV3UmVmczphLHhyZWY6bz1udWxsLGhhc1hmYTpsPSExLHhmYURhdGFzZXRzUmVmOmg9bnVsbCxoYXNYZmFEYXRhc2V0c0VudHJ5OnU9ITEsbmVlZEFwcGVhcmFuY2VzOmQsYWNyb0Zvcm1SZWY6Zj1udWxsLGFjcm9Gb3JtOmc9bnVsbCx4ZmFEYXRhOnA9bnVsbH0pe2F3YWl0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUFjcm9mb3JtKHt4cmVmOmUsYWNyb0Zvcm06dCxhY3JvRm9ybVJlZjphLGhhc1hmYTpuLGhhc1hmYURhdGFzZXRzRW50cnk6cyx4ZmFEYXRhc2V0c1JlZjpvLG5lZWRBcHBlYXJhbmNlczpjLG5ld1JlZnM6bH0peyFufHxzfHxvfHwoMCxyLndhcm4pKCJYRkEgLSBDYW5ub3Qgc2F2ZSBpdCIpO2lmKCEoY3x8biYmbykpcmV0dXJuO2NvbnN0IGg9bmV3IGkuRGljdChlKTtmb3IoY29uc3QgZSBvZiB0LmdldEtleXMoKSloLnNldChlLHQuZ2V0UmF3KGUpKTtpZihuJiYhcyl7Y29uc3QgZT10LmdldCgiWEZBIikuc2xpY2UoKTtlLnNwbGljZSgyLDAsImRhdGFzZXRzIik7ZS5zcGxpY2UoMywwLG8pO2guc2V0KCJYRkEiLGUpfWMmJmguc2V0KCJOZWVkQXBwZWFyYW5jZXMiLCEwKTtjb25zdCB1PWUuZW5jcnlwdDtsZXQgZD1udWxsO3UmJihkPXUuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGEubnVtLGEuZ2VuKSk7Y29uc3QgZj1bXTthd2FpdCB3cml0ZU9iamVjdChhLGgsZixkKTtsLnB1c2goe3JlZjphLGRhdGE6Zi5qb2luKCIiKX0pfSh7eHJlZjpvLGFjcm9Gb3JtOmcsYWNyb0Zvcm1SZWY6ZixoYXNYZmE6bCxoYXNYZmFEYXRhc2V0c0VudHJ5OnUseGZhRGF0YXNldHNSZWY6aCxuZWVkQXBwZWFyYW5jZXM6ZCxuZXdSZWZzOmF9KTtsJiZmdW5jdGlvbiB1cGRhdGVYRkEoe3hmYURhdGE6ZSx4ZmFEYXRhc2V0c1JlZjp0LG5ld1JlZnM6YSx4cmVmOml9KXtpZihudWxsPT09ZSl7ZT1mdW5jdGlvbiB3cml0ZVhGQURhdGFGb3JBY3JvZm9ybShlLHQpe2NvbnN0IGE9bmV3IHMuU2ltcGxlWE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpO2Zvcihjb25zdHt4ZmE6ZX1vZiB0KXtpZighZSljb250aW51ZTtjb25zdHtwYXRoOnQsdmFsdWU6aX09ZTtpZighdCljb250aW51ZTtjb25zdCBvPSgwLG4ucGFyc2VYRkFQYXRoKSh0KTtsZXQgYz1hLmRvY3VtZW50RWxlbWVudC5zZWFyY2hOb2RlKG8sMCk7IWMmJm8ubGVuZ3RoPjEmJihjPWEuZG9jdW1lbnRFbGVtZW50LnNlYXJjaE5vZGUoW28uYXQoLTEpXSwwKSk7Yz9BcnJheS5pc0FycmF5KGkpP2MuY2hpbGROb2Rlcz1pLm1hcCgoZT0+bmV3IHMuU2ltcGxlRE9NTm9kZSgidmFsdWUiLGUpKSk6Yy5jaGlsZE5vZGVzPVtuZXcgcy5TaW1wbGVET01Ob2RlKCIjdGV4dCIsaSldOigwLHIud2FybikoYE5vZGUgbm90IGZvdW5kIGZvciBwYXRoOiAke3R9YCl9Y29uc3QgaT1bXTthLmRvY3VtZW50RWxlbWVudC5kdW1wKGkpO3JldHVybiBpLmpvaW4oIiIpfShpLmZldGNoSWZSZWYodCkuZ2V0U3RyaW5nKCksYSl9Y29uc3Qgbz1pLmVuY3J5cHQ7aWYobyl7ZT1vLmNyZWF0ZUNpcGhlclRyYW5zZm9ybSh0Lm51bSx0LmdlbikuZW5jcnlwdFN0cmluZyhlKX1jb25zdCBjPWAke3QubnVtfSAke3QuZ2VufSBvYmpcbjw8IC9UeXBlIC9FbWJlZGRlZEZpbGUgL0xlbmd0aCAke2UubGVuZ3RofT4+XG5zdHJlYW1cbmArZSsiXG5lbmRzdHJlYW1cbmVuZG9ialxuIjthLnB1c2goe3JlZjp0LGRhdGE6Y30pfSh7eGZhRGF0YTpwLHhmYURhdGFzZXRzUmVmOmgsbmV3UmVmczphLHhyZWY6b30pO2NvbnN0IG09bmV3IGkuRGljdChudWxsKSxiPXQubmV3UmVmO2xldCB5LHc7Y29uc3QgUz1lLmF0KC0xKTtpZigxMD09PVN8fDEzPT09Uyl7eT1bXTt3PWUubGVuZ3RofWVsc2V7eT1bIlxuIl07dz1lLmxlbmd0aCsxfW0uc2V0KCJTaXplIixiLm51bSsxKTttLnNldCgiUHJldiIsdC5zdGFydFhSZWYpO20uc2V0KCJUeXBlIixpLk5hbWUuZ2V0KCJYUmVmIikpO251bGwhPT10LnJvb3RSZWYmJm0uc2V0KCJSb290Iix0LnJvb3RSZWYpO251bGwhPT10LmluZm9SZWYmJm0uc2V0KCJJbmZvIix0LmluZm9SZWYpO251bGwhPT10LmVuY3J5cHRSZWYmJm0uc2V0KCJFbmNyeXB0Iix0LmVuY3J5cHRSZWYpO2EucHVzaCh7cmVmOmIsZGF0YToiIn0pO2E9YS5zb3J0KCgoZSx0KT0+ZS5yZWYubnVtLXQucmVmLm51bSkpO2NvbnN0IHg9W1swLDEsNjU1MzVdXSxDPVswLDFdO2xldCBrPTA7Zm9yKGNvbnN0e3JlZjplLGRhdGE6dH1vZiBhKXtrPU1hdGgubWF4KGssdyk7eC5wdXNoKFsxLHcsTWF0aC5taW4oZS5nZW4sNjU1MzUpXSk7dys9dC5sZW5ndGg7Qy5wdXNoKGUubnVtLDEpO3kucHVzaCh0KX1tLnNldCgiSW5kZXgiLEMpO2lmKEFycmF5LmlzQXJyYXkodC5maWxlSWRzKSYmdC5maWxlSWRzLmxlbmd0aD4wKXtjb25zdCBlPWZ1bmN0aW9uIGNvbXB1dGVNRDUoZSx0KXtjb25zdCBhPU1hdGguZmxvb3IoRGF0ZS5ub3coKS8xZTMpLGk9dC5maWxlbmFtZXx8IiIsbj1bYS50b1N0cmluZygpLGksZS50b1N0cmluZygpXTtsZXQgcz1uLnJlZHVjZSgoKGUsdCk9PmUrdC5sZW5ndGgpLDApO2Zvcihjb25zdCBlIG9mIE9iamVjdC52YWx1ZXModC5pbmZvKSl7bi5wdXNoKGUpO3MrPWUubGVuZ3RofWNvbnN0IG89bmV3IFVpbnQ4QXJyYXkocyk7bGV0IGw9MDtmb3IoY29uc3QgZSBvZiBuKXt3cml0ZVN0cmluZyhlLGwsbyk7bCs9ZS5sZW5ndGh9cmV0dXJuKDAsci5ieXRlc1RvU3RyaW5nKSgoMCxjLmNhbGN1bGF0ZU1ENSkobykpfSh3LHQpO20uc2V0KCJJRCIsW3QuZmlsZUlkc1swXSxlXSl9Y29uc3Qgdj1bMSxNYXRoLmNlaWwoTWF0aC5sb2cyKGspLzgpLDJdLEY9KHZbMF0rdlsxXSt2WzJdKSp4Lmxlbmd0aDttLnNldCgiVyIsdik7bS5zZXQoIkxlbmd0aCIsRik7eS5wdXNoKGAke2IubnVtfSAke2IuZ2VufSBvYmpcbmApO2F3YWl0IHdyaXRlRGljdChtLHksbnVsbCk7eS5wdXNoKCIgc3RyZWFtXG4iKTtjb25zdCBPPXkucmVkdWNlKCgoZSx0KT0+ZSt0Lmxlbmd0aCksMCksVD1gXG5lbmRzdHJlYW1cbmVuZG9ialxuc3RhcnR4cmVmXG4ke3d9XG4lJUVPRlxuYCxNPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoK08rRitULmxlbmd0aCk7TS5zZXQoZSk7bGV0IEU9ZS5sZW5ndGg7Zm9yKGNvbnN0IGUgb2YgeSl7d3JpdGVTdHJpbmcoZSxFLE0pO0UrPWUubGVuZ3RofWZvcihjb25zdFtlLHQsYV1vZiB4KXtFPXdyaXRlSW50KGUsdlswXSxFLE0pO0U9d3JpdGVJbnQodCx2WzFdLEUsTSk7RT13cml0ZUludChhLHZbMl0sRSxNKX13cml0ZVN0cmluZyhULEUsTSk7cmV0dXJuIE19O3Qud3JpdGVEaWN0PXdyaXRlRGljdDt0LndyaXRlT2JqZWN0PXdyaXRlT2JqZWN0O3ZhciByPWEoMiksaT1hKDQpLG49YSgzKSxzPWEoNjcpLG89YSg1KSxjPWEoNjgpO2FzeW5jIGZ1bmN0aW9uIHdyaXRlT2JqZWN0KGUsdCxhLHIpe2EucHVzaChgJHtlLm51bX0gJHtlLmdlbn0gb2JqXG5gKTt0IGluc3RhbmNlb2YgaS5EaWN0P2F3YWl0IHdyaXRlRGljdCh0LGEscik6dCBpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbSYmYXdhaXQgd3JpdGVTdHJlYW0odCxhLHIpO2EucHVzaCgiXG5lbmRvYmpcbiIpfWFzeW5jIGZ1bmN0aW9uIHdyaXRlRGljdChlLHQsYSl7dC5wdXNoKCI8PCIpO2Zvcihjb25zdCByIG9mIGUuZ2V0S2V5cygpKXt0LnB1c2goYCAvJHsoMCxuLmVzY2FwZVBERk5hbWUpKHIpfSBgKTthd2FpdCB3cml0ZVZhbHVlKGUuZ2V0UmF3KHIpLHQsYSl9dC5wdXNoKCI+PiIpfWFzeW5jIGZ1bmN0aW9uIHdyaXRlU3RyZWFtKGUsdCxhKXtsZXQgbj1lLmdldFN0cmluZygpO251bGwhPT1hJiYobj1hLmVuY3J5cHRTdHJpbmcobikpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgQ29tcHJlc3Npb25TdHJlYW0pe2UuZGljdC5zZXQoIkxlbmd0aCIsbi5sZW5ndGgpO2F3YWl0IHdyaXRlRGljdChlLmRpY3QsdCxhKTt0LnB1c2goIiBzdHJlYW1cbiIsbiwiXG5lbmRzdHJlYW0iKTtyZXR1cm59Y29uc3Qgcz1hd2FpdCBlLmRpY3QuZ2V0QXN5bmMoIkZpbHRlciIpLG89aS5OYW1lLmdldCgiRmxhdGVEZWNvZGUiKTtpZihuLmxlbmd0aD49MjU2fHxBcnJheS5pc0FycmF5KHMpJiZzLmluY2x1ZGVzKG8pfHxzIGluc3RhbmNlb2YgaS5OYW1lJiZzLm5hbWU9PT1vLm5hbWUpdHJ5e2NvbnN0IHQ9KDAsci5zdHJpbmdUb0J5dGVzKShuKSxhPW5ldyBDb21wcmVzc2lvblN0cmVhbSgiZGVmbGF0ZSIpLGM9YS53cml0YWJsZS5nZXRXcml0ZXIoKTtjLndyaXRlKHQpO2MuY2xvc2UoKTtjb25zdCBsPWF3YWl0IG5ldyBSZXNwb25zZShhLnJlYWRhYmxlKS5hcnJheUJ1ZmZlcigpO249KDAsci5ieXRlc1RvU3RyaW5nKShuZXcgVWludDhBcnJheShsKSk7QXJyYXkuaXNBcnJheShzKT9zLmluY2x1ZGVzKG8pfHxzLnB1c2gobyk6cz9zIGluc3RhbmNlb2YgaS5OYW1lJiZzLm5hbWU9PT1vLm5hbWV8fGUuZGljdC5zZXQoIkZpbHRlciIsW3Msb10pOmUuZGljdC5zZXQoIkZpbHRlciIsbyl9Y2F0Y2goZSl7KDAsci5pbmZvKShgd3JpdGVTdHJlYW0gLSBjYW5ub3QgY29tcHJlc3MgZGF0YTogIiR7ZX0iLmApfWUuZGljdC5zZXQoIkxlbmd0aCIsbi5sZW5ndGgpO2F3YWl0IHdyaXRlRGljdChlLmRpY3QsdCxhKTt0LnB1c2goIiBzdHJlYW1cbiIsbiwiXG5lbmRzdHJlYW0iKX1hc3luYyBmdW5jdGlvbiB3cml0ZVZhbHVlKGUsdCxhKXtpZihlIGluc3RhbmNlb2YgaS5OYW1lKXQucHVzaChgLyR7KDAsbi5lc2NhcGVQREZOYW1lKShlLm5hbWUpfWApO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIGkuUmVmKXQucHVzaChgJHtlLm51bX0gJHtlLmdlbn0gUmApO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKSlhd2FpdCBhc3luYyBmdW5jdGlvbiB3cml0ZUFycmF5KGUsdCxhKXt0LnB1c2goIlsiKTtsZXQgcj0hMDtmb3IoY29uc3QgaSBvZiBlKXtyP3I9ITE6dC5wdXNoKCIgIik7YXdhaXQgd3JpdGVWYWx1ZShpLHQsYSl9dC5wdXNoKCJdIil9KGUsdCxhKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgZSl7bnVsbCE9PWEmJihlPWEuZW5jcnlwdFN0cmluZyhlKSk7dC5wdXNoKGAoJHsoMCxuLmVzY2FwZVN0cmluZykoZSl9KWApfWVsc2UibnVtYmVyIj09dHlwZW9mIGU/dC5wdXNoKCgwLG4ubnVtYmVyVG9TdHJpbmcpKGUpKToiYm9vbGVhbiI9PXR5cGVvZiBlP3QucHVzaChlLnRvU3RyaW5nKCkpOmUgaW5zdGFuY2VvZiBpLkRpY3Q/YXdhaXQgd3JpdGVEaWN0KGUsdCxhKTplIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtP2F3YWl0IHdyaXRlU3RyZWFtKGUsdCxhKTpudWxsPT09ZT90LnB1c2goIm51bGwiKTooMCxyLndhcm4pKGBVbmhhbmRsZWQgdmFsdWUgaW4gd3JpdGVyOiAke3R5cGVvZiBlfSwgcGxlYXNlIGZpbGUgYSBidWcuYCl9ZnVuY3Rpb24gd3JpdGVJbnQoZSx0LGEscil7Zm9yKGxldCBpPXQrYS0xO2k+YS0xO2ktLSl7cltpXT0yNTUmZTtlPj49OH1yZXR1cm4gYSt0fWZ1bmN0aW9uIHdyaXRlU3RyaW5nKGUsdCxhKXtmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspYVt0K3JdPTI1NSZlLmNoYXJDb2RlQXQocil9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWE1MUGFyc2VyRXJyb3JDb2RlPXQuWE1MUGFyc2VyQmFzZT10LlNpbXBsZVhNTFBhcnNlcj10LlNpbXBsZURPTU5vZGU9dm9pZCAwO3ZhciByPWEoMyk7Y29uc3QgaT17Tm9FcnJvcjowLEVuZE9mRG9jdW1lbnQ6LTEsVW50ZXJtaW5hdGVkQ2RhdDotMixVbnRlcm1pbmF0ZWRYbWxEZWNsYXJhdGlvbjotMyxVbnRlcm1pbmF0ZWREb2N0eXBlRGVjbGFyYXRpb246LTQsVW50ZXJtaW5hdGVkQ29tbWVudDotNSxNYWxmb3JtZWRFbGVtZW50Oi02LE91dE9mTWVtb3J5Oi03LFVudGVybWluYXRlZEF0dHJpYnV0ZVZhbHVlOi04LFVudGVybWluYXRlZEVsZW1lbnQ6LTksRWxlbWVudE5ldmVyQmVndW46LTEwfTt0LlhNTFBhcnNlckVycm9yQ29kZT1pO2Z1bmN0aW9uIGlzV2hpdGVzcGFjZShlLHQpe2NvbnN0IGE9ZVt0XTtyZXR1cm4iICI9PT1hfHwiXG4iPT09YXx8IlxyIj09PWF8fCJcdCI9PT1hfWNsYXNzIFhNTFBhcnNlckJhc2V7X3Jlc29sdmVFbnRpdGllcyhlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC8mKFteO10rKTsvZywoKGUsdCk9PntpZigiI3giPT09dC5zdWJzdHJpbmcoMCwyKSlyZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQocGFyc2VJbnQodC5zdWJzdHJpbmcoMiksMTYpKTtpZigiIyI9PT10LnN1YnN0cmluZygwLDEpKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludCh0LnN1YnN0cmluZygxKSwxMCkpO3N3aXRjaCh0KXtjYXNlImx0IjpyZXR1cm4iPCI7Y2FzZSJndCI6cmV0dXJuIj4iO2Nhc2UiYW1wIjpyZXR1cm4iJiI7Y2FzZSJxdW90IjpyZXR1cm4nIic7Y2FzZSJhcG9zIjpyZXR1cm4iJyJ9cmV0dXJuIHRoaXMub25SZXNvbHZlRW50aXR5KHQpfSkpfV9wYXJzZUNvbnRlbnQoZSx0KXtjb25zdCBhPVtdO2xldCByPXQ7ZnVuY3Rpb24gc2tpcFdzKCl7Zm9yKDtyPGUubGVuZ3RoJiZpc1doaXRlc3BhY2UoZSxyKTspKytyfWZvcig7cjxlLmxlbmd0aCYmIWlzV2hpdGVzcGFjZShlLHIpJiYiPiIhPT1lW3JdJiYiLyIhPT1lW3JdOykrK3I7Y29uc3QgaT1lLnN1YnN0cmluZyh0LHIpO3NraXBXcygpO2Zvcig7cjxlLmxlbmd0aCYmIj4iIT09ZVtyXSYmIi8iIT09ZVtyXSYmIj8iIT09ZVtyXTspe3NraXBXcygpO2xldCB0PSIiLGk9IiI7Zm9yKDtyPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUscikmJiI9IiE9PWVbcl07KXt0Kz1lW3JdOysrcn1za2lwV3MoKTtpZigiPSIhPT1lW3JdKXJldHVybiBudWxsOysrcjtza2lwV3MoKTtjb25zdCBuPWVbcl07aWYoJyInIT09biYmIiciIT09bilyZXR1cm4gbnVsbDtjb25zdCBzPWUuaW5kZXhPZihuLCsrcik7aWYoczwwKXJldHVybiBudWxsO2k9ZS5zdWJzdHJpbmcocixzKTthLnB1c2goe25hbWU6dCx2YWx1ZTp0aGlzLl9yZXNvbHZlRW50aXRpZXMoaSl9KTtyPXMrMTtza2lwV3MoKX1yZXR1cm57bmFtZTppLGF0dHJpYnV0ZXM6YSxwYXJzZWQ6ci10fX1fcGFyc2VQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oZSx0KXtsZXQgYT10O2Zvcig7YTxlLmxlbmd0aCYmIWlzV2hpdGVzcGFjZShlLGEpJiYiPiIhPT1lW2FdJiYiPyIhPT1lW2FdJiYiLyIhPT1lW2FdOykrK2E7Y29uc3Qgcj1lLnN1YnN0cmluZyh0LGEpOyFmdW5jdGlvbiBza2lwV3MoKXtmb3IoO2E8ZS5sZW5ndGgmJmlzV2hpdGVzcGFjZShlLGEpOykrK2F9KCk7Y29uc3QgaT1hO2Zvcig7YTxlLmxlbmd0aCYmKCI/IiE9PWVbYV18fCI+IiE9PWVbYSsxXSk7KSsrYTtyZXR1cm57bmFtZTpyLHZhbHVlOmUuc3Vic3RyaW5nKGksYSkscGFyc2VkOmEtdH19cGFyc2VYbWwoZSl7bGV0IHQ9MDtmb3IoO3Q8ZS5sZW5ndGg7KXtsZXQgYT10O2lmKCI8Ij09PWVbdF0peysrYTtsZXQgdDtzd2l0Y2goZVthXSl7Y2FzZSIvIjorK2E7dD1lLmluZGV4T2YoIj4iLGEpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKGkuVW50ZXJtaW5hdGVkRWxlbWVudCk7cmV0dXJufXRoaXMub25FbmRFbGVtZW50KGUuc3Vic3RyaW5nKGEsdCkpO2E9dCsxO2JyZWFrO2Nhc2UiPyI6KythO2NvbnN0IHI9dGhpcy5fcGFyc2VQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oZSxhKTtpZigiPz4iIT09ZS5zdWJzdHJpbmcoYStyLnBhcnNlZCxhK3IucGFyc2VkKzIpKXt0aGlzLm9uRXJyb3IoaS5VbnRlcm1pbmF0ZWRYbWxEZWNsYXJhdGlvbik7cmV0dXJufXRoaXMub25QaShyLm5hbWUsci52YWx1ZSk7YSs9ci5wYXJzZWQrMjticmVhaztjYXNlIiEiOmlmKCItLSI9PT1lLnN1YnN0cmluZyhhKzEsYSszKSl7dD1lLmluZGV4T2YoIi0tXHgzZSIsYSszKTtpZih0PDApe3RoaXMub25FcnJvcihpLlVudGVybWluYXRlZENvbW1lbnQpO3JldHVybn10aGlzLm9uQ29tbWVudChlLnN1YnN0cmluZyhhKzMsdCkpO2E9dCszfWVsc2UgaWYoIltDREFUQVsiPT09ZS5zdWJzdHJpbmcoYSsxLGErOCkpe3Q9ZS5pbmRleE9mKCJdXT4iLGErOCk7aWYodDwwKXt0aGlzLm9uRXJyb3IoaS5VbnRlcm1pbmF0ZWRDZGF0KTtyZXR1cm59dGhpcy5vbkNkYXRhKGUuc3Vic3RyaW5nKGErOCx0KSk7YT10KzN9ZWxzZXtpZigiRE9DVFlQRSIhPT1lLnN1YnN0cmluZyhhKzEsYSs4KSl7dGhpcy5vbkVycm9yKGkuTWFsZm9ybWVkRWxlbWVudCk7cmV0dXJufXtjb25zdCByPWUuaW5kZXhPZigiWyIsYSs4KTtsZXQgbj0hMTt0PWUuaW5kZXhPZigiPiIsYSs4KTtpZih0PDApe3RoaXMub25FcnJvcihpLlVudGVybWluYXRlZERvY3R5cGVEZWNsYXJhdGlvbik7cmV0dXJufWlmKHI+MCYmdD5yKXt0PWUuaW5kZXhPZigiXT4iLGErOCk7aWYodDwwKXt0aGlzLm9uRXJyb3IoaS5VbnRlcm1pbmF0ZWREb2N0eXBlRGVjbGFyYXRpb24pO3JldHVybn1uPSEwfWNvbnN0IHM9ZS5zdWJzdHJpbmcoYSs4LHQrKG4/MTowKSk7dGhpcy5vbkRvY3R5cGUocyk7YT10KyhuPzI6MSl9fWJyZWFrO2RlZmF1bHQ6Y29uc3Qgbj10aGlzLl9wYXJzZUNvbnRlbnQoZSxhKTtpZihudWxsPT09bil7dGhpcy5vbkVycm9yKGkuTWFsZm9ybWVkRWxlbWVudCk7cmV0dXJufWxldCBzPSExO2lmKCIvPiI9PT1lLnN1YnN0cmluZyhhK24ucGFyc2VkLGErbi5wYXJzZWQrMikpcz0hMDtlbHNlIGlmKCI+IiE9PWUuc3Vic3RyaW5nKGErbi5wYXJzZWQsYStuLnBhcnNlZCsxKSl7dGhpcy5vbkVycm9yKGkuVW50ZXJtaW5hdGVkRWxlbWVudCk7cmV0dXJufXRoaXMub25CZWdpbkVsZW1lbnQobi5uYW1lLG4uYXR0cmlidXRlcyxzKTthKz1uLnBhcnNlZCsocz8yOjEpfX1lbHNle2Zvcig7YTxlLmxlbmd0aCYmIjwiIT09ZVthXTspYSsrO2NvbnN0IHI9ZS5zdWJzdHJpbmcodCxhKTt0aGlzLm9uVGV4dCh0aGlzLl9yZXNvbHZlRW50aXRpZXMocikpfXQ9YX19b25SZXNvbHZlRW50aXR5KGUpe3JldHVybmAmJHtlfTtgfW9uUGkoZSx0KXt9b25Db21tZW50KGUpe31vbkNkYXRhKGUpe31vbkRvY3R5cGUoZSl7fW9uVGV4dChlKXt9b25CZWdpbkVsZW1lbnQoZSx0LGEpe31vbkVuZEVsZW1lbnQoZSl7fW9uRXJyb3IoZSl7fX10LlhNTFBhcnNlckJhc2U9WE1MUGFyc2VyQmFzZTtjbGFzcyBTaW1wbGVET01Ob2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5ub2RlTmFtZT1lO3RoaXMubm9kZVZhbHVlPXQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInBhcmVudE5vZGUiLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSl9Z2V0IGZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzPy5bMF19Z2V0IG5leHRTaWJsaW5nKCl7Y29uc3QgZT10aGlzLnBhcmVudE5vZGUuY2hpbGROb2RlcztpZighZSlyZXR1cm47Y29uc3QgdD1lLmluZGV4T2YodGhpcyk7cmV0dXJuLTEhPT10P2VbdCsxXTp2b2lkIDB9Z2V0IHRleHRDb250ZW50KCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlcz90aGlzLmNoaWxkTm9kZXMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS50ZXh0Q29udGVudH0pKS5qb2luKCIiKTp0aGlzLm5vZGVWYWx1ZXx8IiJ9Z2V0IGNoaWxkcmVuKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlc3x8W119aGFzQ2hpbGROb2Rlcygpe3JldHVybiB0aGlzLmNoaWxkTm9kZXM/Lmxlbmd0aD4wfXNlYXJjaE5vZGUoZSx0KXtpZih0Pj1lLmxlbmd0aClyZXR1cm4gdGhpcztjb25zdCBhPWVbdF0scj1bXTtsZXQgaT10aGlzO2Zvcig7Oyl7aWYoYS5uYW1lPT09aS5ub2RlTmFtZSl7aWYoMCE9PWEucG9zKXtpZigwPT09ci5sZW5ndGgpcmV0dXJuIG51bGw7e2NvbnN0W25dPXIucG9wKCk7bGV0IHM9MDtmb3IoY29uc3QgciBvZiBuLmNoaWxkTm9kZXMpaWYoYS5uYW1lPT09ci5ub2RlTmFtZSl7aWYocz09PWEucG9zKXJldHVybiByLnNlYXJjaE5vZGUoZSx0KzEpO3MrK31yZXR1cm4gaS5zZWFyY2hOb2RlKGUsdCsxKX19e2NvbnN0IGE9aS5zZWFyY2hOb2RlKGUsdCsxKTtpZihudWxsIT09YSlyZXR1cm4gYX19aWYoaS5jaGlsZE5vZGVzPy5sZW5ndGg+MCl7ci5wdXNoKFtpLDBdKTtpPWkuY2hpbGROb2Rlc1swXX1lbHNle2lmKDA9PT1yLmxlbmd0aClyZXR1cm4gbnVsbDtmb3IoOzAhPT1yLmxlbmd0aDspe2NvbnN0W2UsdF09ci5wb3AoKSxhPXQrMTtpZihhPGUuY2hpbGROb2Rlcy5sZW5ndGgpe3IucHVzaChbZSxhXSk7aT1lLmNoaWxkTm9kZXNbYV07YnJlYWt9fWlmKDA9PT1yLmxlbmd0aClyZXR1cm4gbnVsbH19fWR1bXAoZSl7aWYoIiN0ZXh0IiE9PXRoaXMubm9kZU5hbWUpe2UucHVzaChgPCR7dGhpcy5ub2RlTmFtZX1gKTtpZih0aGlzLmF0dHJpYnV0ZXMpZm9yKGNvbnN0IHQgb2YgdGhpcy5hdHRyaWJ1dGVzKWUucHVzaChgICR7dC5uYW1lfT0iJHsoMCxyLmVuY29kZVRvWG1sU3RyaW5nKSh0LnZhbHVlKX0iYCk7aWYodGhpcy5oYXNDaGlsZE5vZGVzKCkpe2UucHVzaCgiPiIpO2Zvcihjb25zdCB0IG9mIHRoaXMuY2hpbGROb2Rlcyl0LmR1bXAoZSk7ZS5wdXNoKGA8LyR7dGhpcy5ub2RlTmFtZX0+YCl9ZWxzZSB0aGlzLm5vZGVWYWx1ZT9lLnB1c2goYD4keygwLHIuZW5jb2RlVG9YbWxTdHJpbmcpKHRoaXMubm9kZVZhbHVlKX08LyR7dGhpcy5ub2RlTmFtZX0+YCk6ZS5wdXNoKCIvPiIpfWVsc2UgZS5wdXNoKCgwLHIuZW5jb2RlVG9YbWxTdHJpbmcpKHRoaXMubm9kZVZhbHVlKSl9fXQuU2ltcGxlRE9NTm9kZT1TaW1wbGVET01Ob2RlO3QuU2ltcGxlWE1MUGFyc2VyPWNsYXNzIFNpbXBsZVhNTFBhcnNlciBleHRlbmRzIFhNTFBhcnNlckJhc2V7Y29uc3RydWN0b3Ioe2hhc0F0dHJpYnV0ZXM6ZT0hMSxsb3dlckNhc2VOYW1lOnQ9ITF9KXtzdXBlcigpO3RoaXMuX2N1cnJlbnRGcmFnbWVudD1udWxsO3RoaXMuX3N0YWNrPW51bGw7dGhpcy5fZXJyb3JDb2RlPWkuTm9FcnJvcjt0aGlzLl9oYXNBdHRyaWJ1dGVzPWU7dGhpcy5fbG93ZXJDYXNlTmFtZT10fXBhcnNlRnJvbVN0cmluZyhlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9W107dGhpcy5fc3RhY2s9W107dGhpcy5fZXJyb3JDb2RlPWkuTm9FcnJvcjt0aGlzLnBhcnNlWG1sKGUpO2lmKHRoaXMuX2Vycm9yQ29kZSE9PWkuTm9FcnJvcilyZXR1cm47Y29uc3RbdF09dGhpcy5fY3VycmVudEZyYWdtZW50O3JldHVybiB0P3tkb2N1bWVudEVsZW1lbnQ6dH06dm9pZCAwfW9uVGV4dChlKXtpZihmdW5jdGlvbiBpc1doaXRlc3BhY2VTdHJpbmcoZSl7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKWlmKCFpc1doaXRlc3BhY2UoZSx0KSlyZXR1cm4hMTtyZXR1cm4hMH0oZSkpcmV0dXJuO2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkNkYXRhKGUpe2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkJlZ2luRWxlbWVudChlLHQsYSl7dGhpcy5fbG93ZXJDYXNlTmFtZSYmKGU9ZS50b0xvd2VyQ2FzZSgpKTtjb25zdCByPW5ldyBTaW1wbGVET01Ob2RlKGUpO3IuY2hpbGROb2Rlcz1bXTt0aGlzLl9oYXNBdHRyaWJ1dGVzJiYoci5hdHRyaWJ1dGVzPXQpO3RoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKHIpO2lmKCFhKXt0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnRGcmFnbWVudCk7dGhpcy5fY3VycmVudEZyYWdtZW50PXIuY2hpbGROb2Rlc319b25FbmRFbGVtZW50KGUpe3RoaXMuX2N1cnJlbnRGcmFnbWVudD10aGlzLl9zdGFjay5wb3AoKXx8W107Y29uc3QgdD10aGlzLl9jdXJyZW50RnJhZ21lbnQuYXQoLTEpO2lmKCF0KXJldHVybiBudWxsO2Zvcihjb25zdCBlIG9mIHQuY2hpbGROb2RlcyllLnBhcmVudE5vZGU9dDtyZXR1cm4gdH1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5jYWxjdWxhdGVTSEEyNTY9dC5jYWxjdWxhdGVNRDU9dC5QREYyMD10LlBERjE3PXQuQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeT10LkFSQ0ZvdXJDaXBoZXI9dC5BRVMyNTZDaXBoZXI9dC5BRVMxMjhDaXBoZXI9dm9pZCAwO3QuY2FsY3VsYXRlU0hBMzg0PWNhbGN1bGF0ZVNIQTM4NDt0LmNhbGN1bGF0ZVNIQTUxMj12b2lkIDA7dmFyIHI9YSgyKSxpPWEoNCksbj1hKDY5KTtjbGFzcyBBUkNGb3VyQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuYT0wO3RoaXMuYj0wO2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxhPWUubGVuZ3RoO2ZvcihsZXQgZT0wO2U8MjU2OysrZSl0W2VdPWU7Zm9yKGxldCByPTAsaT0wO3I8MjU2Oysrcil7Y29uc3Qgbj10W3JdO2k9aStuK2VbciVhXSYyNTU7dFtyXT10W2ldO3RbaV09bn10aGlzLnM9dH1lbmNyeXB0QmxvY2soZSl7bGV0IHQ9dGhpcy5hLGE9dGhpcy5iO2NvbnN0IHI9dGhpcy5zLGk9ZS5sZW5ndGgsbj1uZXcgVWludDhBcnJheShpKTtmb3IobGV0IHM9MDtzPGk7KytzKXt0PXQrMSYyNTU7Y29uc3QgaT1yW3RdO2E9YStpJjI1NTtjb25zdCBvPXJbYV07clt0XT1vO3JbYV09aTtuW3NdPWVbc11ecltpK28mMjU1XX10aGlzLmE9dDt0aGlzLmI9YTtyZXR1cm4gbn1kZWNyeXB0QmxvY2soZSl7cmV0dXJuIHRoaXMuZW5jcnlwdEJsb2NrKGUpfWVuY3J5cHQoZSl7cmV0dXJuIHRoaXMuZW5jcnlwdEJsb2NrKGUpfX10LkFSQ0ZvdXJDaXBoZXI9QVJDRm91ckNpcGhlcjtjb25zdCBzPWZ1bmN0aW9uIGNhbGN1bGF0ZU1ENUNsb3N1cmUoKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFs3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDUsOSwxNCwyMCw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDYsMTAsMTUsMjEsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjFdKSx0PW5ldyBJbnQzMkFycmF5KFstNjgwODc2OTM2LC0zODk1NjQ1ODYsNjA2MTA1ODE5LC0xMDQ0NTI1MzMwLC0xNzY0MTg4OTcsMTIwMDA4MDQyNiwtMTQ3MzIzMTM0MSwtNDU3MDU5ODMsMTc3MDAzNTQxNiwtMTk1ODQxNDQxNywtNDIwNjMsLTE5OTA0MDQxNjIsMTgwNDYwMzY4MiwtNDAzNDExMDEsLTE1MDIwMDIyOTAsMTIzNjUzNTMyOSwtMTY1Nzk2NTEwLC0xMDY5NTAxNjMyLDY0MzcxNzcxMywtMzczODk3MzAyLC03MDE1NTg2OTEsMzgwMTYwODMsLTY2MDQ3ODMzNSwtNDA1NTM3ODQ4LDU2ODQ0NjQzOCwtMTAxOTgwMzY5MCwtMTg3MzYzOTYxLDExNjM1MzE1MDEsLTE0NDQ2ODE0NjcsLTUxNDAzNzg0LDE3MzUzMjg0NzMsLTE5MjY2MDc3MzQsLTM3ODU1OCwtMjAyMjU3NDQ2MywxODM5MDMwNTYyLC0zNTMwOTU1NiwtMTUzMDk5MjA2MCwxMjcyODkzMzUzLC0xNTU0OTc2MzIsLTEwOTQ3MzA2NDAsNjgxMjc5MTc0LC0zNTg1MzcyMjIsLTcyMjUyMTk3OSw3NjAyOTE4OSwtNjQwMzY0NDg3LC00MjE4MTU4MzUsNTMwNzQyNTIwLC05OTUzMzg2NTEsLTE5ODYzMDg0NCwxMTI2ODkxNDE1LC0xNDE2MzU0OTA1LC01NzQzNDA1NSwxNzAwNDg1NTcxLC0xODk0OTg2NjA2LC0xMDUxNTIzLC0yMDU0OTIyNzk5LDE4NzMzMTMzNTksLTMwNjExNzQ0LC0xNTYwMTk4MzgwLDEzMDkxNTE2NDksLTE0NTUyMzA3MCwtMTEyMDIxMDM3OSw3MTg3ODcyNTksLTM0MzQ4NTU1MV0pO3JldHVybiBmdW5jdGlvbiBoYXNoKGEscixpKXtsZXQgbj0xNzMyNTg0MTkzLHM9LTI3MTczMzg3OSxvPS0xNzMyNTg0MTk0LGM9MjcxNzMzODc4O2NvbnN0IGw9aSs3MiYtNjQsaD1uZXcgVWludDhBcnJheShsKTtsZXQgdSxkO2Zvcih1PTA7dTxpOysrdSloW3VdPWFbcisrXTtoW3UrK109MTI4O2NvbnN0IGY9bC04O2Zvcig7dTxmOyloW3UrK109MDtoW3UrK109aTw8MyYyNTU7aFt1KytdPWk+PjUmMjU1O2hbdSsrXT1pPj4xMyYyNTU7aFt1KytdPWk+PjIxJjI1NTtoW3UrK109aT4+PjI5JjI1NTtoW3UrK109MDtoW3UrK109MDtoW3UrK109MDtjb25zdCBnPW5ldyBJbnQzMkFycmF5KDE2KTtmb3IodT0wO3U8bDspe2ZvcihkPTA7ZDwxNjsrK2QsdSs9NClnW2RdPWhbdV18aFt1KzFdPDw4fGhbdSsyXTw8MTZ8aFt1KzNdPDwyNDtsZXQgYSxyLGk9bixsPXMsZj1vLHA9Yztmb3IoZD0wO2Q8NjQ7KytkKXtpZihkPDE2KXthPWwmZnx+bCZwO3I9ZH1lbHNlIGlmKGQ8MzIpe2E9cCZsfH5wJmY7cj01KmQrMSYxNX1lbHNlIGlmKGQ8NDgpe2E9bF5mXnA7cj0zKmQrNSYxNX1lbHNle2E9Zl4obHx+cCk7cj03KmQmMTV9Y29uc3Qgbj1wLHM9aSthK3RbZF0rZ1tyXXwwLG89ZVtkXTtwPWY7Zj1sO2w9bCsoczw8b3xzPj4+MzItbyl8MDtpPW59bj1uK2l8MDtzPXMrbHwwO289bytmfDA7Yz1jK3B8MH1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzI1NSZuLG4+PjgmMjU1LG4+PjE2JjI1NSxuPj4+MjQmMjU1LDI1NSZzLHM+PjgmMjU1LHM+PjE2JjI1NSxzPj4+MjQmMjU1LDI1NSZvLG8+PjgmMjU1LG8+PjE2JjI1NSxvPj4+MjQmMjU1LDI1NSZjLGM+PjgmMjU1LGM+PjE2JjI1NSxjPj4+MjQmMjU1XSl9fSgpO3QuY2FsY3VsYXRlTUQ1PXM7Y2xhc3MgV29yZDY0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5oaWdoPTB8ZTt0aGlzLmxvdz0wfHR9YW5kKGUpe3RoaXMuaGlnaCY9ZS5oaWdoO3RoaXMubG93Jj1lLmxvd314b3IoZSl7dGhpcy5oaWdoXj1lLmhpZ2g7dGhpcy5sb3dePWUubG93fW9yKGUpe3RoaXMuaGlnaHw9ZS5oaWdoO3RoaXMubG93fD1lLmxvd31zaGlmdFJpZ2h0KGUpe2lmKGU+PTMyKXt0aGlzLmxvdz10aGlzLmhpZ2g+Pj5lLTMyfDA7dGhpcy5oaWdoPTB9ZWxzZXt0aGlzLmxvdz10aGlzLmxvdz4+PmV8dGhpcy5oaWdoPDwzMi1lO3RoaXMuaGlnaD10aGlzLmhpZ2g+Pj5lfDB9fXNoaWZ0TGVmdChlKXtpZihlPj0zMil7dGhpcy5oaWdoPXRoaXMubG93PDxlLTMyO3RoaXMubG93PTB9ZWxzZXt0aGlzLmhpZ2g9dGhpcy5oaWdoPDxlfHRoaXMubG93Pj4+MzItZTt0aGlzLmxvdzw8PWV9fXJvdGF0ZVJpZ2h0KGUpe2xldCB0LGE7aWYoMzImZSl7YT10aGlzLmxvdzt0PXRoaXMuaGlnaH1lbHNle3Q9dGhpcy5sb3c7YT10aGlzLmhpZ2h9ZSY9MzE7dGhpcy5sb3c9dD4+PmV8YTw8MzItZTt0aGlzLmhpZ2g9YT4+PmV8dDw8MzItZX1ub3QoKXt0aGlzLmhpZ2g9fnRoaXMuaGlnaDt0aGlzLmxvdz1+dGhpcy5sb3d9YWRkKGUpe2NvbnN0IHQ9KHRoaXMubG93Pj4+MCkrKGUubG93Pj4+MCk7bGV0IGE9KHRoaXMuaGlnaD4+PjApKyhlLmhpZ2g+Pj4wKTt0PjQyOTQ5NjcyOTUmJihhKz0xKTt0aGlzLmxvdz0wfHQ7dGhpcy5oaWdoPTB8YX1jb3B5VG8oZSx0KXtlW3RdPXRoaXMuaGlnaD4+PjI0JjI1NTtlW3QrMV09dGhpcy5oaWdoPj4xNiYyNTU7ZVt0KzJdPXRoaXMuaGlnaD4+OCYyNTU7ZVt0KzNdPTI1NSZ0aGlzLmhpZ2g7ZVt0KzRdPXRoaXMubG93Pj4+MjQmMjU1O2VbdCs1XT10aGlzLmxvdz4+MTYmMjU1O2VbdCs2XT10aGlzLmxvdz4+OCYyNTU7ZVt0KzddPTI1NSZ0aGlzLmxvd31hc3NpZ24oZSl7dGhpcy5oaWdoPWUuaGlnaDt0aGlzLmxvdz1lLmxvd319Y29uc3Qgbz1mdW5jdGlvbiBjYWxjdWxhdGVTSEEyNTZDbG9zdXJlKCl7ZnVuY3Rpb24gcm90cihlLHQpe3JldHVybiBlPj4+dHxlPDwzMi10fWZ1bmN0aW9uIGNoKGUsdCxhKXtyZXR1cm4gZSZ0Xn5lJmF9ZnVuY3Rpb24gbWFqKGUsdCxhKXtyZXR1cm4gZSZ0XmUmYV50JmF9ZnVuY3Rpb24gc2lnbWEoZSl7cmV0dXJuIHJvdHIoZSwyKV5yb3RyKGUsMTMpXnJvdHIoZSwyMil9ZnVuY3Rpb24gc2lnbWFQcmltZShlKXtyZXR1cm4gcm90cihlLDYpXnJvdHIoZSwxMSlecm90cihlLDI1KX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlKXtyZXR1cm4gcm90cihlLDcpXnJvdHIoZSwxOCleZT4+PjN9Y29uc3QgZT1bMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XTtyZXR1cm4gZnVuY3Rpb24gaGFzaCh0LGEscil7bGV0IGk9MTc3OTAzMzcwMyxuPTMxNDQxMzQyNzcscz0xMDEzOTA0MjQyLG89Mjc3MzQ4MDc2MixjPTEzNTk4OTMxMTksbD0yNjAwODIyOTI0LGg9NTI4NzM0NjM1LHU9MTU0MTQ1OTIyNTtjb25zdCBkPTY0Kk1hdGguY2VpbCgocis5KS82NCksZj1uZXcgVWludDhBcnJheShkKTtsZXQgZyxwO2ZvcihnPTA7ZzxyOysrZylmW2ddPXRbYSsrXTtmW2crK109MTI4O2NvbnN0IG09ZC04O2Zvcig7ZzxtOylmW2crK109MDtmW2crK109MDtmW2crK109MDtmW2crK109MDtmW2crK109cj4+PjI5JjI1NTtmW2crK109cj4+MjEmMjU1O2ZbZysrXT1yPj4xMyYyNTU7ZltnKytdPXI+PjUmMjU1O2ZbZysrXT1yPDwzJjI1NTtjb25zdCBiPW5ldyBVaW50MzJBcnJheSg2NCk7Zm9yKGc9MDtnPGQ7KXtmb3IocD0wO3A8MTY7KytwKXtiW3BdPWZbZ108PDI0fGZbZysxXTw8MTZ8ZltnKzJdPDw4fGZbZyszXTtnKz00fWZvcihwPTE2O3A8NjQ7KytwKWJbcF09KHJvdHIoeT1iW3AtMl0sMTcpXnJvdHIoeSwxOSleeT4+PjEwKStiW3AtN10rbGl0dGxlU2lnbWEoYltwLTE1XSkrYltwLTE2XXwwO2xldCB0LGEscj1pLGQ9bixtPXMsdz1vLFM9Yyx4PWwsQz1oLGs9dTtmb3IocD0wO3A8NjQ7KytwKXt0PWsrc2lnbWFQcmltZShTKStjaChTLHgsQykrZVtwXStiW3BdO2E9c2lnbWEocikrbWFqKHIsZCxtKTtrPUM7Qz14O3g9UztTPXcrdHwwO3c9bTttPWQ7ZD1yO3I9dCthfDB9aT1pK3J8MDtuPW4rZHwwO3M9cyttfDA7bz1vK3d8MDtjPWMrU3wwO2w9bCt4fDA7aD1oK0N8MDt1PXUra3wwfXZhciB5O3JldHVybiBuZXcgVWludDhBcnJheShbaT4+MjQmMjU1LGk+PjE2JjI1NSxpPj44JjI1NSwyNTUmaSxuPj4yNCYyNTUsbj4+MTYmMjU1LG4+PjgmMjU1LDI1NSZuLHM+PjI0JjI1NSxzPj4xNiYyNTUscz4+OCYyNTUsMjU1JnMsbz4+MjQmMjU1LG8+PjE2JjI1NSxvPj44JjI1NSwyNTUmbyxjPj4yNCYyNTUsYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjLGw+PjI0JjI1NSxsPj4xNiYyNTUsbD4+OCYyNTUsMjU1JmwsaD4+MjQmMjU1LGg+PjE2JjI1NSxoPj44JjI1NSwyNTUmaCx1Pj4yNCYyNTUsdT4+MTYmMjU1LHU+PjgmMjU1LDI1NSZ1XSl9fSgpO3QuY2FsY3VsYXRlU0hBMjU2PW87Y29uc3QgYz1mdW5jdGlvbiBjYWxjdWxhdGVTSEE1MTJDbG9zdXJlKCl7ZnVuY3Rpb24gY2goZSx0LGEscixpKXtlLmFzc2lnbih0KTtlLmFuZChhKTtpLmFzc2lnbih0KTtpLm5vdCgpO2kuYW5kKHIpO2UueG9yKGkpfWZ1bmN0aW9uIG1haihlLHQsYSxyLGkpe2UuYXNzaWduKHQpO2UuYW5kKGEpO2kuYXNzaWduKHQpO2kuYW5kKHIpO2UueG9yKGkpO2kuYXNzaWduKGEpO2kuYW5kKHIpO2UueG9yKGkpfWZ1bmN0aW9uIHNpZ21hKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDI4KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDM0KTtlLnhvcihhKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDM5KTtlLnhvcihhKX1mdW5jdGlvbiBzaWdtYVByaW1lKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE0KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDE4KTtlLnhvcihhKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDQxKTtlLnhvcihhKX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlLHQsYSl7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgxKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDgpO2UueG9yKGEpO2EuYXNzaWduKHQpO2Euc2hpZnRSaWdodCg3KTtlLnhvcihhKX1mdW5jdGlvbiBsaXR0bGVTaWdtYVByaW1lKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE5KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDYxKTtlLnhvcihhKTthLmFzc2lnbih0KTthLnNoaWZ0UmlnaHQoNik7ZS54b3IoYSl9Y29uc3QgZT1bbmV3IFdvcmQ2NCgxMTE2MzUyNDA4LDM2MDk3Njc0NTgpLG5ldyBXb3JkNjQoMTg5OTQ0NzQ0MSw2MDI4OTE3MjUpLG5ldyBXb3JkNjQoMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5KSxuZXcgV29yZDY0KDM5MjEwMDk1NzMsMjE3MzI5NTU0OCksbmV3IFdvcmQ2NCg5NjE5ODcxNjMsNDA4MTYyODQ3MiksbmV3IFdvcmQ2NCgxNTA4OTcwOTkzLDMwNTM4MzQyNjUpLG5ldyBXb3JkNjQoMjQ1MzYzNTc0OCwyOTM3NjcxNTc5KSxuZXcgV29yZDY0KDI4NzA3NjMyMjEsMzY2NDYwOTU2MCksbmV3IFdvcmQ2NCgzNjI0MzgxMDgwLDI3MzQ4ODMzOTQpLG5ldyBXb3JkNjQoMzEwNTk4NDAxLDExNjQ5OTY1NDIpLG5ldyBXb3JkNjQoNjA3MjI1Mjc4LDEzMjM2MTA3NjQpLG5ldyBXb3JkNjQoMTQyNjg4MTk4NywzNTkwMzA0OTk0KSxuZXcgV29yZDY0KDE5MjUwNzgzODgsNDA2ODE4MjM4MyksbmV3IFdvcmQ2NCgyMTYyMDc4MjA2LDk5MTMzNjExMyksbmV3IFdvcmQ2NCgyNjE0ODg4MTAzLDYzMzgwMzMxNyksbmV3IFdvcmQ2NCgzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgpLG5ldyBXb3JkNjQoMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxuZXcgV29yZDY0KDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxuZXcgV29yZDY0KDI2NDM0NzA3OCwyMzQxMjYyNzczKSxuZXcgV29yZDY0KDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxuZXcgV29yZDY0KDc3MDI1NTk4MywxNDk1OTkwOTAxKSxuZXcgV29yZDY0KDEyNDkxNTAxMjIsMTg1NjQzMTIzNSksbmV3IFdvcmQ2NCgxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLG5ldyBXb3JkNjQoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxuZXcgV29yZDY0KDI1NTQyMjA4ODIsMzk5OTcxOTMzOSksbmV3IFdvcmQ2NCgyODIxODM0MzQ5LDc2Njc4NDAxNiksbmV3IFdvcmQ2NCgyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLG5ldyBXb3JkNjQoMzIxMDMxMzY3MSwzMjAzMzM3OTU2KSxuZXcgV29yZDY0KDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiksbmV3IFdvcmQ2NCgzNTg0NTI4NzExLDI0NjY5NDg5MDEpLG5ldyBXb3JkNjQoMTEzOTI2OTkzLDM3NTgzMjYzODMpLG5ldyBXb3JkNjQoMzM4MjQxODk1LDE2ODcxNzkzNiksbmV3IFdvcmQ2NCg2NjYzMDcyMDUsMTE4ODE3OTk2NCksbmV3IFdvcmQ2NCg3NzM1Mjk5MTIsMTU0NjA0NTczNCksbmV3IFdvcmQ2NCgxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLG5ldyBXb3JkNjQoMTM5NjE4MjI5MSwyNjQzODMzODIzKSxuZXcgV29yZDY0KDE2OTUxODM3MDAsMjM0MzUyNzM5MCksbmV3IFdvcmQ2NCgxOTg2NjYxMDUxLDEwMTQ0Nzc0ODApLG5ldyBXb3JkNjQoMjE3NzAyNjM1MCwxMjA2NzU5MTQyKSxuZXcgV29yZDY0KDI0NTY5NTYwMzcsMzQ0MDc3NjI3KSxuZXcgV29yZDY0KDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCksbmV3IFdvcmQ2NCgyODIwMzAyNDExLDMxNTg0NTQyNzMpLG5ldyBXb3JkNjQoMzI1OTczMDgwMCwzNTA1OTUyNjU3KSxuZXcgV29yZDY0KDMzNDU3NjQ3NzEsMTA2MjE3MDA4KSxuZXcgV29yZDY0KDM1MTYwNjU4MTcsMzYwNjAwODM0NCksbmV3IFdvcmQ2NCgzNjAwMzUyODA0LDE0MzI3MjU3NzYpLG5ldyBXb3JkNjQoNDA5NDU3MTkwOSwxNDY3MDMxNTk0KSxuZXcgV29yZDY0KDI3NTQyMzM0NCw4NTExNjk3MjApLG5ldyBXb3JkNjQoNDMwMjI3NzM0LDMxMDA4MjM3NTIpLG5ldyBXb3JkNjQoNTA2OTQ4NjE2LDEzNjMyNTgxOTUpLG5ldyBXb3JkNjQoNjU5MDYwNTU2LDM3NTA2ODU1OTMpLG5ldyBXb3JkNjQoODgzOTk3ODc3LDM3ODUwNTAyODApLG5ldyBXb3JkNjQoOTU4MTM5NTcxLDMzMTgzMDc0MjcpLG5ldyBXb3JkNjQoMTMyMjgyMjIxOCwzODEyNzIzNDAzKSxuZXcgV29yZDY0KDE1MzcwMDIwNjMsMjAwMzAzNDk5NSksbmV3IFdvcmQ2NCgxNzQ3ODczNzc5LDM2MDIwMzY4OTkpLG5ldyBXb3JkNjQoMTk1NTU2MjIyMiwxNTc1OTkwMDEyKSxuZXcgV29yZDY0KDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCksbmV3IFdvcmQ2NCgyMjI3NzMwNDUyLDI3MTY5MDQzMDYpLG5ldyBXb3JkNjQoMjM2MTg1MjQyNCw0NDI3NzYwNDQpLG5ldyBXb3JkNjQoMjQyODQzNjQ3NCw1OTM2OTgzNDQpLG5ldyBXb3JkNjQoMjc1NjczNDE4NywzNzMzMTEwMjQ5KSxuZXcgV29yZDY0KDMyMDQwMzE0NzksMjk5OTM1MTU3MyksbmV3IFdvcmQ2NCgzMzI5MzI1Mjk4LDM4MTU5MjA0MjcpLG5ldyBXb3JkNjQoMzM5MTU2OTYxNCwzOTI4MzgzOTAwKSxuZXcgV29yZDY0KDM1MTUyNjcyNzEsNTY2MjgwNzExKSxuZXcgV29yZDY0KDM5NDAxODc2MDYsMzQ1NDA2OTUzNCksbmV3IFdvcmQ2NCg0MTE4NjMwMjcxLDQwMDAyMzk5OTIpLG5ldyBXb3JkNjQoMTE2NDE4NDc0LDE5MTQxMzg1NTQpLG5ldyBXb3JkNjQoMTc0MjkyNDIxLDI3MzEwNTUyNzApLG5ldyBXb3JkNjQoMjg5MzgwMzU2LDMyMDM5OTMwMDYpLG5ldyBXb3JkNjQoNDYwMzkzMjY5LDMyMDYyMDMxNSksbmV3IFdvcmQ2NCg2ODU0NzE3MzMsNTg3NDk2ODM2KSxuZXcgV29yZDY0KDg1MjE0Mjk3MSwxMDg2NzkyODUxKSxuZXcgV29yZDY0KDEwMTcwMzYyOTgsMzY1NTQzMTAwKSxuZXcgV29yZDY0KDExMjYwMDA1ODAsMjYxODI5NzY3NiksbmV3IFdvcmQ2NCgxMjg4MDMzNDcwLDM0MDk4NTUxNTgpLG5ldyBXb3JkNjQoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxuZXcgV29yZDY0KDE2MDcxNjc5MTUsOTg3MTY3NDY4KSxuZXcgV29yZDY0KDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldO3JldHVybiBmdW5jdGlvbiBoYXNoKHQsYSxyLGk9ITEpe2xldCBuLHMsbyxjLGwsaCx1LGQ7aWYoaSl7bj1uZXcgV29yZDY0KDM0MTgwNzAzNjUsMzIzODM3MTAzMik7cz1uZXcgV29yZDY0KDE2NTQyNzAyNTAsOTE0MTUwNjYzKTtvPW5ldyBXb3JkNjQoMjQzODUyOTM3MCw4MTI3MDI5OTkpO2M9bmV3IFdvcmQ2NCgzNTU0NjIzNjAsNDE0NDkxMjY5Nyk7bD1uZXcgV29yZDY0KDE3MzE0MDU0MTUsNDI5MDc3NTg1Nyk7aD1uZXcgV29yZDY0KDIzOTQxODAyMzEsMTc1MDYwMzAyNSk7dT1uZXcgV29yZDY0KDM2NzUwMDg1MjUsMTY5NDA3NjgzOSk7ZD1uZXcgV29yZDY0KDEyMDMwNjI4MTMsMzIwNDA3NTQyOCl9ZWxzZXtuPW5ldyBXb3JkNjQoMTc3OTAzMzcwMyw0MDg5MjM1NzIwKTtzPW5ldyBXb3JkNjQoMzE0NDEzNDI3NywyMjI3ODczNTk1KTtvPW5ldyBXb3JkNjQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKTtjPW5ldyBXb3JkNjQoMjc3MzQ4MDc2MiwxNTk1NzUwMTI5KTtsPW5ldyBXb3JkNjQoMTM1OTg5MzExOSwyOTE3NTY1MTM3KTtoPW5ldyBXb3JkNjQoMjYwMDgyMjkyNCw3MjU1MTExOTkpO3U9bmV3IFdvcmQ2NCg1Mjg3MzQ2MzUsNDIxNTM4OTU0Nyk7ZD1uZXcgV29yZDY0KDE1NDE0NTkyMjUsMzI3MDMzMjA5KX1jb25zdCBmPTEyOCpNYXRoLmNlaWwoKHIrMTcpLzEyOCksZz1uZXcgVWludDhBcnJheShmKTtsZXQgcCxtO2ZvcihwPTA7cDxyOysrcClnW3BdPXRbYSsrXTtnW3ArK109MTI4O2NvbnN0IGI9Zi0xNjtmb3IoO3A8YjspZ1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPXI+Pj4yOSYyNTU7Z1twKytdPXI+PjIxJjI1NTtnW3ArK109cj4+MTMmMjU1O2dbcCsrXT1yPj41JjI1NTtnW3ArK109cjw8MyYyNTU7Y29uc3QgeT1uZXcgQXJyYXkoODApO2ZvcihwPTA7cDw4MDtwKyspeVtwXT1uZXcgV29yZDY0KDAsMCk7bGV0IHc9bmV3IFdvcmQ2NCgwLDApLFM9bmV3IFdvcmQ2NCgwLDApLHg9bmV3IFdvcmQ2NCgwLDApLEM9bmV3IFdvcmQ2NCgwLDApLGs9bmV3IFdvcmQ2NCgwLDApLHY9bmV3IFdvcmQ2NCgwLDApLEY9bmV3IFdvcmQ2NCgwLDApLE89bmV3IFdvcmQ2NCgwLDApO2NvbnN0IFQ9bmV3IFdvcmQ2NCgwLDApLE09bmV3IFdvcmQ2NCgwLDApLEU9bmV3IFdvcmQ2NCgwLDApLEQ9bmV3IFdvcmQ2NCgwLDApO2xldCBOLFI7Zm9yKHA9MDtwPGY7KXtmb3IobT0wO208MTY7KyttKXt5W21dLmhpZ2g9Z1twXTw8MjR8Z1twKzFdPDwxNnxnW3ArMl08PDh8Z1twKzNdO3lbbV0ubG93PWdbcCs0XTw8MjR8Z1twKzVdPDwxNnxnW3ArNl08PDh8Z1twKzddO3ArPTh9Zm9yKG09MTY7bTw4MDsrK20pe049eVttXTtsaXR0bGVTaWdtYVByaW1lKE4seVttLTJdLEQpO04uYWRkKHlbbS03XSk7bGl0dGxlU2lnbWEoRSx5W20tMTVdLEQpO04uYWRkKEUpO04uYWRkKHlbbS0xNl0pfXcuYXNzaWduKG4pO1MuYXNzaWduKHMpO3guYXNzaWduKG8pO0MuYXNzaWduKGMpO2suYXNzaWduKGwpO3YuYXNzaWduKGgpO0YuYXNzaWduKHUpO08uYXNzaWduKGQpO2ZvcihtPTA7bTw4MDsrK20pe1QuYXNzaWduKE8pO3NpZ21hUHJpbWUoRSxrLEQpO1QuYWRkKEUpO2NoKEUsayx2LEYsRCk7VC5hZGQoRSk7VC5hZGQoZVttXSk7VC5hZGQoeVttXSk7c2lnbWEoTSx3LEQpO21haihFLHcsUyx4LEQpO00uYWRkKEUpO049TztPPUY7Rj12O3Y9aztDLmFkZChUKTtrPUM7Qz14O3g9UztTPXc7Ti5hc3NpZ24oVCk7Ti5hZGQoTSk7dz1OfW4uYWRkKHcpO3MuYWRkKFMpO28uYWRkKHgpO2MuYWRkKEMpO2wuYWRkKGspO2guYWRkKHYpO3UuYWRkKEYpO2QuYWRkKE8pfWlmKGkpe1I9bmV3IFVpbnQ4QXJyYXkoNDgpO24uY29weVRvKFIsMCk7cy5jb3B5VG8oUiw4KTtvLmNvcHlUbyhSLDE2KTtjLmNvcHlUbyhSLDI0KTtsLmNvcHlUbyhSLDMyKTtoLmNvcHlUbyhSLDQwKX1lbHNle1I9bmV3IFVpbnQ4QXJyYXkoNjQpO24uY29weVRvKFIsMCk7cy5jb3B5VG8oUiw4KTtvLmNvcHlUbyhSLDE2KTtjLmNvcHlUbyhSLDI0KTtsLmNvcHlUbyhSLDMyKTtoLmNvcHlUbyhSLDQwKTt1LmNvcHlUbyhSLDQ4KTtkLmNvcHlUbyhSLDU2KX1yZXR1cm4gUn19KCk7dC5jYWxjdWxhdGVTSEE1MTI9YztmdW5jdGlvbiBjYWxjdWxhdGVTSEEzODQoZSx0LGEpe3JldHVybiBjKGUsdCxhLCEwKX1jbGFzcyBOdWxsQ2lwaGVye2RlY3J5cHRCbG9jayhlKXtyZXR1cm4gZX1lbmNyeXB0KGUpe3JldHVybiBlfX1jbGFzcyBBRVNCYXNlQ2lwaGVye2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUFFU0Jhc2VDaXBoZXImJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBBRVNCYXNlQ2lwaGVyLiIpO3RoaXMuX3M9bmV3IFVpbnQ4QXJyYXkoWzk5LDEyNCwxMTksMTIzLDI0MiwxMDcsMTExLDE5Nyw0OCwxLDEwMyw0MywyNTQsMjE1LDE3MSwxMTgsMjAyLDEzMCwyMDEsMTI1LDI1MCw4OSw3MSwyNDAsMTczLDIxMiwxNjIsMTc1LDE1NiwxNjQsMTE0LDE5MiwxODMsMjUzLDE0NywzOCw1NCw2MywyNDcsMjA0LDUyLDE2NSwyMjksMjQxLDExMywyMTYsNDksMjEsNCwxOTksMzUsMTk1LDI0LDE1MCw1LDE1NCw3LDE4LDEyOCwyMjYsMjM1LDM5LDE3OCwxMTcsOSwxMzEsNDQsMjYsMjcsMTEwLDkwLDE2MCw4Miw1OSwyMTQsMTc5LDQxLDIyNyw0NywxMzIsODMsMjA5LDAsMjM3LDMyLDI1MiwxNzcsOTEsMTA2LDIwMywxOTAsNTcsNzQsNzYsODgsMjA3LDIwOCwyMzksMTcwLDI1MSw2Nyw3Nyw1MSwxMzMsNjksMjQ5LDIsMTI3LDgwLDYwLDE1OSwxNjgsODEsMTYzLDY0LDE0MywxNDYsMTU3LDU2LDI0NSwxODgsMTgyLDIxOCwzMywxNiwyNTUsMjQzLDIxMCwyMDUsMTIsMTksMjM2LDk1LDE1MSw2OCwyMywxOTYsMTY3LDEyNiw2MSwxMDAsOTMsMjUsMTE1LDk2LDEyOSw3OSwyMjAsMzQsNDIsMTQ0LDEzNiw3MCwyMzgsMTg0LDIwLDIyMiw5NCwxMSwyMTksMjI0LDUwLDU4LDEwLDczLDYsMzYsOTIsMTk0LDIxMSwxNzIsOTgsMTQ1LDE0OSwyMjgsMTIxLDIzMSwyMDAsNTUsMTA5LDE0MSwyMTMsNzgsMTY5LDEwOCw4NiwyNDQsMjM0LDEwMSwxMjIsMTc0LDgsMTg2LDEyMCwzNyw0NiwyOCwxNjYsMTgwLDE5OCwyMzIsMjIxLDExNiwzMSw3NSwxODksMTM5LDEzOCwxMTIsNjIsMTgxLDEwMiw3MiwzLDI0NiwxNCw5Nyw1Myw4NywxODUsMTM0LDE5MywyOSwxNTgsMjI1LDI0OCwxNTIsMTcsMTA1LDIxNywxNDIsMTQ4LDE1NSwzMCwxMzUsMjMzLDIwNiw4NSw0MCwyMjMsMTQwLDE2MSwxMzcsMTMsMTkxLDIzMCw2NiwxMDQsNjUsMTUzLDQ1LDE1LDE3Niw4NCwxODcsMjJdKTt0aGlzLl9pbnZfcz1uZXcgVWludDhBcnJheShbODIsOSwxMDYsMjEzLDQ4LDU0LDE2NSw1NiwxOTEsNjQsMTYzLDE1OCwxMjksMjQzLDIxNSwyNTEsMTI0LDIyNyw1NywxMzAsMTU1LDQ3LDI1NSwxMzUsNTIsMTQyLDY3LDY4LDE5NiwyMjIsMjMzLDIwMyw4NCwxMjMsMTQ4LDUwLDE2NiwxOTQsMzUsNjEsMjM4LDc2LDE0OSwxMSw2NiwyNTAsMTk1LDc4LDgsNDYsMTYxLDEwMiw0MCwyMTcsMzYsMTc4LDExOCw5MSwxNjIsNzMsMTA5LDEzOSwyMDksMzcsMTE0LDI0OCwyNDYsMTAwLDEzNCwxMDQsMTUyLDIyLDIxMiwxNjQsOTIsMjA0LDkzLDEwMSwxODIsMTQ2LDEwOCwxMTIsNzIsODAsMjUzLDIzNywxODUsMjE4LDk0LDIxLDcwLDg3LDE2NywxNDEsMTU3LDEzMiwxNDQsMjE2LDE3MSwwLDE0MCwxODgsMjExLDEwLDI0NywyMjgsODgsNSwxODQsMTc5LDY5LDYsMjA4LDQ0LDMwLDE0MywyMDIsNjMsMTUsMiwxOTMsMTc1LDE4OSwzLDEsMTksMTM4LDEwNyw1OCwxNDUsMTcsNjUsNzksMTAzLDIyMCwyMzQsMTUxLDI0MiwyMDcsMjA2LDI0MCwxODAsMjMwLDExNSwxNTAsMTcyLDExNiwzNCwyMzEsMTczLDUzLDEzMywyMjYsMjQ5LDU1LDIzMiwyOCwxMTcsMjIzLDExMCw3MSwyNDEsMjYsMTEzLDI5LDQxLDE5NywxMzcsMTExLDE4Myw5OCwxNCwxNzAsMjQsMTkwLDI3LDI1Miw4Niw2Miw3NSwxOTgsMjEwLDEyMSwzMiwxNTQsMjE5LDE5MiwyNTQsMTIwLDIwNSw5MCwyNDQsMzEsMjIxLDE2OCw1MSwxMzYsNywxOTksNDksMTc3LDE4LDE2LDg5LDM5LDEyOCwyMzYsOTUsOTYsODEsMTI3LDE2OSwyNSwxODEsNzQsMTMsNDUsMjI5LDEyMiwxNTksMTQ3LDIwMSwxNTYsMjM5LDE2MCwyMjQsNTksNzcsMTc0LDQyLDI0NSwxNzYsMjAwLDIzNSwxODcsNjAsMTMxLDgzLDE1Myw5NywyMyw0Myw0LDEyNiwxODYsMTE5LDIxNCwzOCwyMjUsMTA1LDIwLDk5LDg1LDMzLDEyLDEyNV0pO3RoaXMuX21peD1uZXcgVWludDMyQXJyYXkoWzAsMjM1NDc0MTg3LDQ3MDk0ODM3NCwzMDM3NjUyNzcsOTQxODk2NzQ4LDkwODkzMzQxNSw2MDc1MzA1NTQsNzA4NzgwODQ5LDE4ODM3OTM0OTYsMjExODIxNDk5NSwxODE3ODY2ODMwLDE2NDk2MzkyMzcsMTIxNTA2MTEwOCwxMTgxMDQ1MTE5LDE0MTc1NjE2OTgsMTUxNzc2NzUyOSwzNzY3NTg2OTkyLDQwMDMwNjExNzksNDIzNjQyOTk5MCw0MDY5MjQ2ODkzLDM2MzU3MzM2NjAsMzYwMjc3MDMyNywzMjk5Mjc4NDc0LDM0MDA1Mjg3NjksMjQzMDEyMjIxNiwyNjY0NTQzNzE1LDIzNjIwOTAyMzgsMjE5Mzg2MjY0NSwyODM1MTIzMzk2LDI4MDExMDc0MDcsMzAzNTUzNTA1OCwzMTM1NzQwODg5LDM2NzgxMjQ5MjMsMzU3Njg3MDUxMiwzMzQxMzk0Mjg1LDMzNzQzNjE3MDIsMzgxMDQ5NjM0MywzOTc3Njc1MzU2LDQyNzkwODAyNTcsNDA0MzYxMDE4NiwyODc2NDk0NjI3LDI3NzYyOTI5MDQsMzA3NjYzOTAyOSwzMTEwNjUwOTQyLDI0NzIwMTE1MzUsMjY0MDI0MzIwNCwyNDAzNzI4NjY1LDIxNjkzMDMwNTgsMTAwMTA4OTk5NSw4OTk4MzU1ODQsNjY2NDY0NzMzLDY5OTQzMjE1MCw1OTcyNzg0NywyMjY5MDY4NjAsNTMwNDAwNzUzLDI5NDkzMDY4MiwxMjczMTY4Nzg3LDExNzI5NjcwNjQsMTQ3NTQxODUwMSwxNTA5NDMwNDE0LDE5NDI0MzU3NzUsMjExMDY2NzQ0NCwxODc2MjQxODMzLDE2NDE4MTYyMjYsMjkxMDIxOTc2NiwyNzQzMDM0MTA5LDI5NzYxNTE1MjAsMzIxMTYyMzE0NywyNTA1MjAyMTM4LDI2MDY0NTM5NjksMjMwMjY5MDI1MiwyMjY5NzI4NDU1LDM3MTE4Mjk0MjIsMzU0MzU5OTI2OSwzMjQwODk0MzkyLDM0NzUzMTMzMzEsMzg0MzY5OTA3NCwzOTQzOTA2NDQxLDQxNzgwNjIyMjgsNDE0NDA0Nzc3NSwxMzA2OTY3MzY2LDExMzk3ODE3MDksMTM3NDk4ODExMiwxNjEwNDU5NzM5LDE5NzU2ODM0MzQsMjA3NjkzNTI2NSwxNzc1Mjc2OTI0LDE3NDIzMTUxMjcsMTAzNDg2Nzk5OCw4NjY2Mzc4NDUsNTY2MDIxODk2LDgwMDQ0MDgzNSw5Mjk4NzY5OCwxOTMxOTUwNjUsNDI5NDU2MTY0LDM5NTQ0MTcxMSwxOTg0ODEyNjg1LDIwMTc3Nzg1NjYsMTc4NDY2MzE5NSwxNjgzNDA3MjQ4LDEzMTU1NjIxNDUsMTA4MDA5NDYzNCwxMzgzODU2MzExLDE1NTEwMzc4ODQsMTAxMDM5ODI5LDEzNTA1MDIwNiw0Mzc3NTcxMjMsMzM3NTUzODY0LDEwNDIzODU2NTcsODA3OTYyNjEwLDU3MzgwNDc4Myw3NDIwMzkwMTIsMjUzMTA2NzQ1MywyNTY0MDMzMzM0LDIzMjg4Mjg5NzEsMjIyNzU3MzAyNCwyOTM1NTY2ODY1LDI3MDAwOTkzNTQsMzAwMTc1NTY1NSwzMTY4OTM3MjI4LDM4Njg1NTI4MDUsMzkwMjU2MzE4Miw0MjAzMTgxMTcxLDQxMDI5Nzc5MTIsMzczNjE2NDkzNywzNTAxNzQxODkwLDMyNjU0Nzg3NTEsMzQzMzcxMjk4MCwxMTA2MDQxNTkxLDEzNDA0NjMxMDAsMTU3Njk3NjYwOSwxNDA4NzQ5MDM0LDIwNDMyMTE0ODMsMjAwOTE5NTQ3MiwxNzA4ODQ4MzMzLDE4MDkwNTQxNTAsODMyODc3MjMxLDEwNjgzNTEzOTYsNzY2OTQ1NDY1LDU5OTc2MjM1NCwxNTk0MTc5ODcsMTI2NDU0NjY0LDM2MTkyOTg3Nyw0NjMxODAxOTAsMjcwOTI2MDg3MSwyOTQzNjgyMzgwLDMxNzgxMDY5NjEsMzAwOTg3OTM4NiwyNTcyNjk3MTk1LDI1Mzg2ODExODQsMjIzNjIyODczMywyMzM2NDM0NTUwLDM1MDk4NzExMzUsMzc0NTM0NTMwMCwzNDQxODUwMzc3LDMyNzQ2NjcyNjYsMzkxMDE2MTk3MSwzODc3MTk4NjQ4LDQxMTA1Njg0ODUsNDIxMTgxODc5OCwyNTk3ODA2NDc2LDI0OTc2MDQ3NDMsMjI2MTA4OTE3OCwyMjk1MTAxMDczLDI3MzM4NTYxNjAsMjkwMjA4Nzg1MSwzMjAyNDM3MDQ2LDI5NjgwMTE0NTMsMzkzNjI5MTI4NCwzODM1MDM2ODk1LDQxMzY0NDA3NzAsNDE2OTQwODIwMSwzNTM1NDg2NDU2LDM3MDI2NjU0NTksMzQ2NzE5MjMwMiwzMjMxNzIyMjEzLDIwNTE1MTg3ODAsMTk1MTMxNzA0NywxNzE2ODkwNDEwLDE3NTA5MDIzMDUsMTExMzgxODM4NCwxMjgyMDUwMDc1LDE1ODQ1MDQ1ODIsMTM1MDA3ODk4OSwxNjg4MTA4NTIsNjc1NTY0NjMsMzcxMDQ5MzMwLDQwNDAxNjc2MSw4NDE3Mzk1OTIsMTAwODkxODU5NSw3NzU1NTA4MTQsNTQwMDgwNzI1LDM5Njk1NjIzNjksMzgwMTMzMjIzNCw0MDM1NDg5MDQ3LDQyNjk5MDc5OTYsMzU2OTI1NTIxMywzNjY5NDYyNTY2LDMzNjY3NTQ2MTksMzMzMjc0MDE0NCwyNjMxMDY1NDMzLDI0NjM4Nzk3NjIsMjE2MDExNzA3MSwyMzk1NTg4Njc2LDI3Njc2NDU1NTcsMjg2ODg5NzQwNiwzMTAyMDExNzQ3LDMwNjkwNDk5NjAsMjAyMDA4NDk3LDMzNzc4MzYyLDI3MDA0MDQ4Nyw1MDQ0NTk0MzYsODc1NDUxMjkzLDk3NTY1ODY0Niw2NzUwMzk2MjcsNjQxMDI1MTUyLDIwODQ3MDQyMzMsMTkxNzUxODU2MiwxNjE1ODYxMjQ3LDE4NTEzMzI4NTIsMTE0NzU1MDY2MSwxMjQ4ODAyNTEwLDE0ODQwMDU4NDMsMTQ1MTA0NDA1Niw5MzMzMDEzNzAsOTY3MzExNzI5LDczMzE1Njk3Miw2MzI5NTM3MDMsMjYwMzg4OTUwLDI1OTY1OTE3LDMyODY3MTgwOCw0OTY5MDYwNTksMTIwNjQ3Nzg1OCwxMjM5NDQzNzUzLDE1NDMyMDg1MDAsMTQ0MTk1MjU3NSwyMTQ0MTYxODA2LDE5MDg2OTQyNzcsMTY3NTU3Nzg4MCwxODQyNzU5NDQzLDM2MTAzNjkyMjYsMzY0NDM3OTU4NSwzNDA4MTE5NTE2LDMzMDc5MTYyNDcsNDAxMTE5MDUwMiwzNzc2NzY3NDY5LDQwNzczODQ0MzIsNDI0NTYxODY4MywyODA5NzcxMTU0LDI4NDI3MzcwNDksMzE0NDM5NjQyMCwzMDQzMTQwNDk1LDI2NzM3MDUxNTAsMjQzODIzNzYyMSwyMjAzMDMyMjMyLDIzNzAyMTM3OTVdKTt0aGlzLl9taXhDb2w9bmV3IFVpbnQ4QXJyYXkoMjU2KTtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy5fbWl4Q29sW2VdPWU8MTI4P2U8PDE6ZTw8MV4yNzt0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJQb3NpdGlvbj0wfV9leHBhbmRLZXkoZSl7KDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBjYWxsIGBfZXhwYW5kS2V5YCBvbiB0aGUgYmFzZSBjbGFzcyIpfV9kZWNyeXB0KGUsdCl7bGV0IGEscixpO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoMTYpO24uc2V0KGUpO2ZvcihsZXQgZT0wLGE9dGhpcy5fa2V5U2l6ZTtlPDE2OysrZSwrK2EpbltlXV49dFthXTtmb3IobGV0IGU9dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uLTE7ZT49MTstLWUpe2E9blsxM107blsxM109bls5XTtuWzldPW5bNV07bls1XT1uWzFdO25bMV09YTthPW5bMTRdO3I9blsxMF07blsxNF09bls2XTtuWzEwXT1uWzJdO25bNl09YTtuWzJdPXI7YT1uWzE1XTtyPW5bMTFdO2k9bls3XTtuWzE1XT1uWzNdO25bMTFdPWE7bls3XT1yO25bM109aTtmb3IobGV0IGU9MDtlPDE2OysrZSluW2VdPXRoaXMuX2ludl9zW25bZV1dO2ZvcihsZXQgYT0wLHI9MTYqZTthPDE2OysrYSwrK3IpblthXV49dFtyXTtmb3IobGV0IGU9MDtlPDE2O2UrPTQpe2NvbnN0IHQ9dGhpcy5fbWl4W25bZV1dLHI9dGhpcy5fbWl4W25bZSsxXV0saT10aGlzLl9taXhbbltlKzJdXSxzPXRoaXMuX21peFtuW2UrM11dO2E9dF5yPj4+OF5yPDwyNF5pPj4+MTZeaTw8MTZecz4+PjI0XnM8PDg7bltlXT1hPj4+MjQmMjU1O25bZSsxXT1hPj4xNiYyNTU7bltlKzJdPWE+PjgmMjU1O25bZSszXT0yNTUmYX19YT1uWzEzXTtuWzEzXT1uWzldO25bOV09bls1XTtuWzVdPW5bMV07blsxXT1hO2E9blsxNF07cj1uWzEwXTtuWzE0XT1uWzZdO25bMTBdPW5bMl07bls2XT1hO25bMl09cjthPW5bMTVdO3I9blsxMV07aT1uWzddO25bMTVdPW5bM107blsxMV09YTtuWzddPXI7blszXT1pO2ZvcihsZXQgZT0wO2U8MTY7KytlKXtuW2VdPXRoaXMuX2ludl9zW25bZV1dO25bZV1ePXRbZV19cmV0dXJuIG59X2VuY3J5cHQoZSx0KXtjb25zdCBhPXRoaXMuX3M7bGV0IHIsaSxuO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYpO3Muc2V0KGUpO2ZvcihsZXQgZT0wO2U8MTY7KytlKXNbZV1ePXRbZV07Zm9yKGxldCBlPTE7ZTx0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb247ZSsrKXtmb3IobGV0IGU9MDtlPDE2OysrZSlzW2VdPWFbc1tlXV07bj1zWzFdO3NbMV09c1s1XTtzWzVdPXNbOV07c1s5XT1zWzEzXTtzWzEzXT1uO249c1syXTtpPXNbNl07c1syXT1zWzEwXTtzWzZdPXNbMTRdO3NbMTBdPW47c1sxNF09aTtuPXNbM107aT1zWzddO3I9c1sxMV07c1szXT1zWzE1XTtzWzddPW47c1sxMV09aTtzWzE1XT1yO2ZvcihsZXQgZT0wO2U8MTY7ZSs9NCl7Y29uc3QgdD1zW2UrMF0sYT1zW2UrMV0saT1zW2UrMl0sbj1zW2UrM107cj10XmFeaV5uO3NbZSswXV49cl50aGlzLl9taXhDb2xbdF5hXTtzW2UrMV1ePXJedGhpcy5fbWl4Q29sW2FeaV07c1tlKzJdXj1yXnRoaXMuX21peENvbFtpXm5dO3NbZSszXV49cl50aGlzLl9taXhDb2xbbl50XX1mb3IobGV0IGE9MCxyPTE2KmU7YTwxNjsrK2EsKytyKXNbYV1ePXRbcl19Zm9yKGxldCBlPTA7ZTwxNjsrK2Upc1tlXT1hW3NbZV1dO249c1sxXTtzWzFdPXNbNV07c1s1XT1zWzldO3NbOV09c1sxM107c1sxM109bjtuPXNbMl07aT1zWzZdO3NbMl09c1sxMF07c1s2XT1zWzE0XTtzWzEwXT1uO3NbMTRdPWk7bj1zWzNdO2k9c1s3XTtyPXNbMTFdO3NbM109c1sxNV07c1s3XT1uO3NbMTFdPWk7c1sxNV09cjtmb3IobGV0IGU9MCxhPXRoaXMuX2tleVNpemU7ZTwxNjsrK2UsKythKXNbZV1ePXRbYV07cmV0dXJuIHN9X2RlY3J5cHRCbG9jazIoZSx0KXtjb25zdCBhPWUubGVuZ3RoO2xldCByPXRoaXMuYnVmZmVyLGk9dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBuPVtdO2xldCBzPXRoaXMuaXY7Zm9yKGxldCB0PTA7dDxhOysrdCl7cltpXT1lW3RdOysraTtpZihpPDE2KWNvbnRpbnVlO2NvbnN0IGE9dGhpcy5fZGVjcnlwdChyLHRoaXMuX2tleSk7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpYVtlXV49c1tlXTtzPXI7bi5wdXNoKGEpO3I9bmV3IFVpbnQ4QXJyYXkoMTYpO2k9MH10aGlzLmJ1ZmZlcj1yO3RoaXMuYnVmZmVyTGVuZ3RoPWk7dGhpcy5pdj1zO2lmKDA9PT1uLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7bGV0IG89MTYqbi5sZW5ndGg7aWYodCl7Y29uc3QgZT1uLmF0KC0xKTtsZXQgdD1lWzE1XTtpZih0PD0xNil7Zm9yKGxldCBhPTE1LHI9MTYtdDthPj1yOy0tYSlpZihlW2FdIT09dCl7dD0wO2JyZWFrfW8tPXQ7bltuLmxlbmd0aC0xXT1lLnN1YmFycmF5KDAsMTYtdCl9fWNvbnN0IGM9bmV3IFVpbnQ4QXJyYXkobyk7Zm9yKGxldCBlPTAsdD0wLGE9bi5sZW5ndGg7ZTxhOysrZSx0Kz0xNiljLnNldChuW2VdLHQpO3JldHVybiBjfWRlY3J5cHRCbG9jayhlLHQsYT1udWxsKXtjb25zdCByPWUubGVuZ3RoLGk9dGhpcy5idWZmZXI7bGV0IG49dGhpcy5idWZmZXJQb3NpdGlvbjtpZihhKXRoaXMuaXY9YTtlbHNle2ZvcihsZXQgdD0wO248MTYmJnQ8cjsrK3QsKytuKWlbbl09ZVt0XTtpZihuPDE2KXt0aGlzLmJ1ZmZlckxlbmd0aD1uO3JldHVybiBuZXcgVWludDhBcnJheSgwKX10aGlzLml2PWk7ZT1lLnN1YmFycmF5KDE2KX10aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJMZW5ndGg9MDt0aGlzLmRlY3J5cHRCbG9jaz10aGlzLl9kZWNyeXB0QmxvY2syO3JldHVybiB0aGlzLmRlY3J5cHRCbG9jayhlLHQpfWVuY3J5cHQoZSx0KXtjb25zdCBhPWUubGVuZ3RoO2xldCByPXRoaXMuYnVmZmVyLGk9dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBuPVtdO3R8fCh0PW5ldyBVaW50OEFycmF5KDE2KSk7Zm9yKGxldCBzPTA7czxhOysrcyl7cltpXT1lW3NdOysraTtpZihpPDE2KWNvbnRpbnVlO2ZvcihsZXQgZT0wO2U8MTY7KytlKXJbZV1ePXRbZV07Y29uc3QgYT10aGlzLl9lbmNyeXB0KHIsdGhpcy5fa2V5KTt0PWE7bi5wdXNoKGEpO3I9bmV3IFVpbnQ4QXJyYXkoMTYpO2k9MH10aGlzLmJ1ZmZlcj1yO3RoaXMuYnVmZmVyTGVuZ3RoPWk7dGhpcy5pdj10O2lmKDA9PT1uLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7Y29uc3Qgcz0xNipuLmxlbmd0aCxvPW5ldyBVaW50OEFycmF5KHMpO2ZvcihsZXQgZT0wLHQ9MCxhPW4ubGVuZ3RoO2U8YTsrK2UsdCs9MTYpby5zZXQobltlXSx0KTtyZXR1cm4gb319Y2xhc3MgQUVTMTI4Q2lwaGVyIGV4dGVuZHMgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xMDt0aGlzLl9rZXlTaXplPTE2MDt0aGlzLl9yY29uPW5ldyBVaW50OEFycmF5KFsxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxXSk7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxhPXRoaXMuX3Jjb24scj1uZXcgVWludDhBcnJheSgxNzYpO3Iuc2V0KGUpO2ZvcihsZXQgZT0xNixpPTE7ZTwxNzY7KytpKXtsZXQgbj1yW2UtM10scz1yW2UtMl0sbz1yW2UtMV0sYz1yW2UtNF07bj10W25dO3M9dFtzXTtvPXRbb107Yz10W2NdO25ePWFbaV07Zm9yKGxldCB0PTA7dDw0OysrdCl7cltlXT1uXj1yW2UtMTZdO2UrKztyW2VdPXNePXJbZS0xNl07ZSsrO3JbZV09b149cltlLTE2XTtlKys7cltlXT1jXj1yW2UtMTZdO2UrK319cmV0dXJuIHJ9fXQuQUVTMTI4Q2lwaGVyPUFFUzEyOENpcGhlcjtjbGFzcyBBRVMyNTZDaXBoZXIgZXh0ZW5kcyBBRVNCYXNlQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3N1cGVyKCk7dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uPTE0O3RoaXMuX2tleVNpemU9MjI0O3RoaXMuX2tleT10aGlzLl9leHBhbmRLZXkoZSl9X2V4cGFuZEtleShlKXtjb25zdCB0PXRoaXMuX3MsYT1uZXcgVWludDhBcnJheSgyNDApO2Euc2V0KGUpO2xldCByLGksbixzLG89MTtmb3IobGV0IGU9MzIsYz0xO2U8MjQwOysrYyl7aWYoZSUzMj09MTYpe3I9dFtyXTtpPXRbaV07bj10W25dO3M9dFtzXX1lbHNlIGlmKGUlMzI9PTApe3I9YVtlLTNdO2k9YVtlLTJdO249YVtlLTFdO3M9YVtlLTRdO3I9dFtyXTtpPXRbaV07bj10W25dO3M9dFtzXTtyXj1vOyhvPDw9MSk+PTI1NiYmKG89MjU1JigyN15vKSl9Zm9yKGxldCB0PTA7dDw0OysrdCl7YVtlXT1yXj1hW2UtMzJdO2UrKzthW2VdPWlePWFbZS0zMl07ZSsrO2FbZV09bl49YVtlLTMyXTtlKys7YVtlXT1zXj1hW2UtMzJdO2UrK319cmV0dXJuIGF9fXQuQUVTMjU2Q2lwaGVyPUFFUzI1NkNpcGhlcjtjbGFzcyBQREYxN3tjaGVja093bmVyUGFzc3dvcmQoZSx0LGEsaSl7Y29uc3Qgbj1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7bi5zZXQoZSwwKTtuLnNldCh0LGUubGVuZ3RoKTtuLnNldChhLGUubGVuZ3RoK3QubGVuZ3RoKTtjb25zdCBzPW8obiwwLG4ubGVuZ3RoKTtyZXR1cm4oMCxyLmlzQXJyYXlFcXVhbCkocyxpKX1jaGVja1VzZXJQYXNzd29yZChlLHQsYSl7Y29uc3QgaT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTtpLnNldChlLDApO2kuc2V0KHQsZS5sZW5ndGgpO2NvbnN0IG49byhpLDAsaS5sZW5ndGgpO3JldHVybigwLHIuaXNBcnJheUVxdWFsKShuLGEpfWdldE93bmVyS2V5KGUsdCxhLHIpe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO2kuc2V0KGUsMCk7aS5zZXQodCxlLmxlbmd0aCk7aS5zZXQoYSxlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3Qgbj1vKGksMCxpLmxlbmd0aCk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIobikuZGVjcnlwdEJsb2NrKHIsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX1nZXRVc2VyS2V5KGUsdCxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7Y29uc3QgaT1vKHIsMCxyLmxlbmd0aCk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIoaSkuZGVjcnlwdEJsb2NrKGEsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX19dC5QREYxNz1QREYxNztjbGFzcyBQREYyMHtfaGFzaChlLHQsYSl7bGV0IHI9byh0LDAsdC5sZW5ndGgpLnN1YmFycmF5KDAsMzIpLGk9WzBdLG49MDtmb3IoO248NjR8fGkuYXQoLTEpPm4tMzI7KXtjb25zdCB0PWUubGVuZ3RoK3IubGVuZ3RoK2EubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkodCk7bGV0IGw9MDtzLnNldChlLGwpO2wrPWUubGVuZ3RoO3Muc2V0KHIsbCk7bCs9ci5sZW5ndGg7cy5zZXQoYSxsKTtjb25zdCBoPW5ldyBVaW50OEFycmF5KDY0KnQpO2ZvcihsZXQgZT0wLGE9MDtlPDY0O2UrKyxhKz10KWguc2V0KHMsYSk7aT1uZXcgQUVTMTI4Q2lwaGVyKHIuc3ViYXJyYXkoMCwxNikpLmVuY3J5cHQoaCxyLnN1YmFycmF5KDE2LDMyKSk7Y29uc3QgdT1pLnNsaWNlKDAsMTYpLnJlZHVjZSgoKGUsdCk9PmUrdCksMCklMzswPT09dT9yPW8oaSwwLGkubGVuZ3RoKToxPT09dT9yPWNhbGN1bGF0ZVNIQTM4NChpLDAsaS5sZW5ndGgpOjI9PT11JiYocj1jKGksMCxpLmxlbmd0aCkpO24rK31yZXR1cm4gci5zdWJhcnJheSgwLDMyKX1jaGVja093bmVyUGFzc3dvcmQoZSx0LGEsaSl7Y29uc3Qgbj1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7bi5zZXQoZSwwKTtuLnNldCh0LGUubGVuZ3RoKTtuLnNldChhLGUubGVuZ3RoK3QubGVuZ3RoKTtjb25zdCBzPXRoaXMuX2hhc2goZSxuLGEpO3JldHVybigwLHIuaXNBcnJheUVxdWFsKShzLGkpfWNoZWNrVXNlclBhc3N3b3JkKGUsdCxhKXtjb25zdCBpPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO2kuc2V0KGUsMCk7aS5zZXQodCxlLmxlbmd0aCk7Y29uc3Qgbj10aGlzLl9oYXNoKGUsaSxbXSk7cmV0dXJuKDAsci5pc0FycmF5RXF1YWwpKG4sYSl9Z2V0T3duZXJLZXkoZSx0LGEscil7Y29uc3QgaT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7aS5zZXQoZSwwKTtpLnNldCh0LGUubGVuZ3RoKTtpLnNldChhLGUubGVuZ3RoK3QubGVuZ3RoKTtjb25zdCBuPXRoaXMuX2hhc2goZSxpLGEpO3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKG4pLmRlY3J5cHRCbG9jayhyLCExLG5ldyBVaW50OEFycmF5KDE2KSl9Z2V0VXNlcktleShlLHQsYSl7Y29uc3Qgcj1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTtyLnNldChlLDApO3Iuc2V0KHQsZS5sZW5ndGgpO2NvbnN0IGk9dGhpcy5faGFzaChlLHIsW10pO3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKGkpLmRlY3J5cHRCbG9jayhhLCExLG5ldyBVaW50OEFycmF5KDE2KSl9fXQuUERGMjA9UERGMjA7Y2xhc3MgQ2lwaGVyVHJhbnNmb3Jte2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3Rvcj1lO3RoaXMuU3RyZWFtQ2lwaGVyQ29uc3RydWN0b3I9dH1jcmVhdGVTdHJlYW0oZSx0KXtjb25zdCBhPW5ldyB0aGlzLlN0cmVhbUNpcGhlckNvbnN0cnVjdG9yO3JldHVybiBuZXcgbi5EZWNyeXB0U3RyZWFtKGUsdCwoZnVuY3Rpb24gY2lwaGVyVHJhbnNmb3JtRGVjcnlwdFN0cmVhbShlLHQpe3JldHVybiBhLmRlY3J5cHRCbG9jayhlLHQpfSkpfWRlY3J5cHRTdHJpbmcoZSl7Y29uc3QgdD1uZXcgdGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3RvcjtsZXQgYT0oMCxyLnN0cmluZ1RvQnl0ZXMpKGUpO2E9dC5kZWNyeXB0QmxvY2soYSwhMCk7cmV0dXJuKDAsci5ieXRlc1RvU3RyaW5nKShhKX1lbmNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3IHRoaXMuU3RyaW5nQ2lwaGVyQ29uc3RydWN0b3I7aWYodCBpbnN0YW5jZW9mIEFFU0Jhc2VDaXBoZXIpe2NvbnN0IGE9MTYtZS5sZW5ndGglMTY7ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShhKS5yZXBlYXQoYSk7Y29uc3QgaT1uZXcgVWludDhBcnJheSgxNik7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjcnlwdG8pY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhpKTtlbHNlIGZvcihsZXQgZT0wO2U8MTY7ZSsrKWlbZV09TWF0aC5mbG9vcigyNTYqTWF0aC5yYW5kb20oKSk7bGV0IG49KDAsci5zdHJpbmdUb0J5dGVzKShlKTtuPXQuZW5jcnlwdChuLGkpO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYrbi5sZW5ndGgpO3Muc2V0KGkpO3Muc2V0KG4sMTYpO3JldHVybigwLHIuYnl0ZXNUb1N0cmluZykocyl9bGV0IGE9KDAsci5zdHJpbmdUb0J5dGVzKShlKTthPXQuZW5jcnlwdChhKTtyZXR1cm4oMCxyLmJ5dGVzVG9TdHJpbmcpKGEpfX1jb25zdCBsPWZ1bmN0aW9uIENpcGhlclRyYW5zZm9ybUZhY3RvcnlDbG9zdXJlKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShbNDAsMTkxLDc4LDk0LDc4LDExNywxMzgsNjUsMTAwLDAsNzgsODYsMjU1LDI1MCwxLDgsNDYsNDYsMCwxODIsMjA4LDEwNCw2MiwxMjgsNDcsMTIsMTY5LDI1NCwxMDAsODMsMTA1LDEyMl0pO2Z1bmN0aW9uIHByZXBhcmVLZXlEYXRhKHQsYSxyLGksbixvLGMsbCl7Y29uc3QgaD00MCtyLmxlbmd0aCt0Lmxlbmd0aCx1PW5ldyBVaW50OEFycmF5KGgpO2xldCBkLGYsZz0wO2lmKGEpe2Y9TWF0aC5taW4oMzIsYS5sZW5ndGgpO2Zvcig7ZzxmOysrZyl1W2ddPWFbZ119ZD0wO2Zvcig7ZzwzMjspdVtnKytdPWVbZCsrXTtmb3IoZD0wLGY9ci5sZW5ndGg7ZDxmOysrZCl1W2crK109cltkXTt1W2crK109MjU1Jm47dVtnKytdPW4+PjgmMjU1O3VbZysrXT1uPj4xNiYyNTU7dVtnKytdPW4+Pj4yNCYyNTU7Zm9yKGQ9MCxmPXQubGVuZ3RoO2Q8ZjsrK2QpdVtnKytdPXRbZF07aWYobz49NCYmIWwpe3VbZysrXT0yNTU7dVtnKytdPTI1NTt1W2crK109MjU1O3VbZysrXT0yNTV9bGV0IHA9cyh1LDAsZyk7Y29uc3QgbT1jPj4zO2lmKG8+PTMpZm9yKGQ9MDtkPDUwOysrZClwPXMocCwwLG0pO2NvbnN0IGI9cC5zdWJhcnJheSgwLG0pO2xldCB5LHc7aWYobz49Myl7Zm9yKGc9MDtnPDMyOysrZyl1W2ddPWVbZ107Zm9yKGQ9MCxmPXQubGVuZ3RoO2Q8ZjsrK2QpdVtnKytdPXRbZF07eT1uZXcgQVJDRm91ckNpcGhlcihiKTt3PXkuZW5jcnlwdEJsb2NrKHModSwwLGcpKTtmPWIubGVuZ3RoO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZik7Zm9yKGQ9MTtkPD0xOTsrK2Qpe2ZvcihsZXQgZT0wO2U8ZjsrK2UpYVtlXT1iW2VdXmQ7eT1uZXcgQVJDRm91ckNpcGhlcihhKTt3PXkuZW5jcnlwdEJsb2NrKHcpfWZvcihkPTAsZj13Lmxlbmd0aDtkPGY7KytkKWlmKGlbZF0hPT13W2RdKXJldHVybiBudWxsfWVsc2V7eT1uZXcgQVJDRm91ckNpcGhlcihiKTt3PXkuZW5jcnlwdEJsb2NrKGUpO2ZvcihkPTAsZj13Lmxlbmd0aDtkPGY7KytkKWlmKGlbZF0hPT13W2RdKXJldHVybiBudWxsfXJldHVybiBifWNvbnN0IHQ9aS5OYW1lLmdldCgiSWRlbnRpdHkiKTtmdW5jdGlvbiBidWlsZE9iamVjdEtleShlLHQsYSxyPSExKXtjb25zdCBpPW5ldyBVaW50OEFycmF5KGEubGVuZ3RoKzkpLG49YS5sZW5ndGg7bGV0IG87Zm9yKG89MDtvPG47KytvKWlbb109YVtvXTtpW28rK109MjU1JmU7aVtvKytdPWU+PjgmMjU1O2lbbysrXT1lPj4xNiYyNTU7aVtvKytdPTI1NSZ0O2lbbysrXT10Pj44JjI1NTtpZihyKXtpW28rK109MTE1O2lbbysrXT02NTtpW28rK109MTA4O2lbbysrXT04NH1yZXR1cm4gcyhpLDAsbykuc3ViYXJyYXkoMCxNYXRoLm1pbihhLmxlbmd0aCs1LDE2KSl9ZnVuY3Rpb24gYnVpbGRDaXBoZXJDb25zdHJ1Y3RvcihlLHQsYSxuLHMpe2lmKCEodCBpbnN0YW5jZW9mIGkuTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgY3J5cHQgZmlsdGVyIG5hbWUuIik7Y29uc3Qgbz1lLmdldCh0Lm5hbWUpO2xldCBjO251bGwhPW8mJihjPW8uZ2V0KCJDRk0iKSk7aWYoIWN8fCJOb25lIj09PWMubmFtZSlyZXR1cm4gZnVuY3Rpb24gY2lwaGVyVHJhbnNmb3JtRmFjdG9yeUJ1aWxkQ2lwaGVyQ29uc3RydWN0b3JOb25lKCl7cmV0dXJuIG5ldyBOdWxsQ2lwaGVyfTtpZigiVjIiPT09Yy5uYW1lKXJldHVybiBmdW5jdGlvbiBjaXBoZXJUcmFuc2Zvcm1GYWN0b3J5QnVpbGRDaXBoZXJDb25zdHJ1Y3RvclYyKCl7cmV0dXJuIG5ldyBBUkNGb3VyQ2lwaGVyKGJ1aWxkT2JqZWN0S2V5KGEsbixzLCExKSl9O2lmKCJBRVNWMiI9PT1jLm5hbWUpcmV0dXJuIGZ1bmN0aW9uIGNpcGhlclRyYW5zZm9ybUZhY3RvcnlCdWlsZENpcGhlckNvbnN0cnVjdG9yQUVTVjIoKXtyZXR1cm4gbmV3IEFFUzEyOENpcGhlcihidWlsZE9iamVjdEtleShhLG4scywhMCkpfTtpZigiQUVTVjMiPT09Yy5uYW1lKXJldHVybiBmdW5jdGlvbiBjaXBoZXJUcmFuc2Zvcm1GYWN0b3J5QnVpbGRDaXBoZXJDb25zdHJ1Y3RvckFFU1YzKCl7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocyl9O3Rocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmtub3duIGNyeXB0byBtZXRob2QiKX1yZXR1cm4gY2xhc3MgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeXtjb25zdHJ1Y3RvcihhLG4sbyl7Y29uc3QgYz1hLmdldCgiRmlsdGVyIik7aWYoISgwLGkuaXNOYW1lKShjLCJTdGFuZGFyZCIpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bmtub3duIGVuY3J5cHRpb24gbWV0aG9kIik7dGhpcy5maWx0ZXJOYW1lPWMubmFtZTt0aGlzLmRpY3Q9YTtjb25zdCBsPWEuZ2V0KCJWIik7aWYoIU51bWJlci5pc0ludGVnZXIobCl8fDEhPT1sJiYyIT09bCYmNCE9PWwmJjUhPT1sKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bnN1cHBvcnRlZCBlbmNyeXB0aW9uIGFsZ29yaXRobSIpO3RoaXMuYWxnb3JpdGhtPWw7bGV0IGg9YS5nZXQoIkxlbmd0aCIpO2lmKCFoKWlmKGw8PTMpaD00MDtlbHNle2NvbnN0IGU9YS5nZXQoIkNGIiksdD1hLmdldCgiU3RtRiIpO2lmKGUgaW5zdGFuY2VvZiBpLkRpY3QmJnQgaW5zdGFuY2VvZiBpLk5hbWUpe2Uuc3VwcHJlc3NFbmNyeXB0aW9uPSEwO2NvbnN0IGE9ZS5nZXQodC5uYW1lKTtoPWE/LmdldCgiTGVuZ3RoIil8fDEyODtoPDQwJiYoaDw8PTMpfX1pZighTnVtYmVyLmlzSW50ZWdlcihoKXx8aDw0MHx8aCU4IT0wKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJpbnZhbGlkIGtleSBsZW5ndGgiKTtjb25zdCB1PSgwLHIuc3RyaW5nVG9CeXRlcykoYS5nZXQoIk8iKSksZD0oMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJVIikpLGY9dS5zdWJhcnJheSgwLDMyKSxnPWQuc3ViYXJyYXkoMCwzMikscD1hLmdldCgiUCIpLG09YS5nZXQoIlIiKSxiPSg0PT09bHx8NT09PWwpJiYhMSE9PWEuZ2V0KCJFbmNyeXB0TWV0YWRhdGEiKTt0aGlzLmVuY3J5cHRNZXRhZGF0YT1iO2NvbnN0IHk9KDAsci5zdHJpbmdUb0J5dGVzKShuKTtsZXQgdyxTO2lmKG8pe2lmKDY9PT1tKXRyeXtvPSgwLHIudXRmOFN0cmluZ1RvU3RyaW5nKShvKX1jYXRjaChlKXsoMCxyLndhcm4pKCJDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5OiBVbmFibGUgdG8gY29udmVydCBVVEY4IGVuY29kZWQgcGFzc3dvcmQuIil9dz0oMCxyLnN0cmluZ1RvQnl0ZXMpKG8pfWlmKDUhPT1sKVM9cHJlcGFyZUtleURhdGEoeSx3LGYsZyxwLG0saCxiKTtlbHNle2NvbnN0IGU9dS5zdWJhcnJheSgzMiw0MCksdD11LnN1YmFycmF5KDQwLDQ4KSxpPWQuc3ViYXJyYXkoMCw0OCksbj1kLnN1YmFycmF5KDMyLDQwKSxzPWQuc3ViYXJyYXkoNDAsNDgpLG89KDAsci5zdHJpbmdUb0J5dGVzKShhLmdldCgiT0UiKSksYz0oMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJVRSIpKTsoMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJQZXJtcyIpKTtTPWZ1bmN0aW9uIGNyZWF0ZUVuY3J5cHRpb25LZXkyMChlLHQsYSxyLGksbixzLG8sYyxsLGgsdSl7aWYodCl7Y29uc3QgZT1NYXRoLm1pbigxMjcsdC5sZW5ndGgpO3Q9dC5zdWJhcnJheSgwLGUpfWVsc2UgdD1bXTtsZXQgZDtkPTY9PT1lP25ldyBQREYyMDpuZXcgUERGMTc7cmV0dXJuIGQuY2hlY2tVc2VyUGFzc3dvcmQodCxvLHMpP2QuZ2V0VXNlcktleSh0LGMsaCk6dC5sZW5ndGgmJmQuY2hlY2tPd25lclBhc3N3b3JkKHQscixuLGEpP2QuZ2V0T3duZXJLZXkodCxpLG4sbCk6bnVsbH0obSx3LGYsZSx0LGksZyxuLHMsbyxjKX1pZighUyYmIW8pdGhyb3cgbmV3IHIuUGFzc3dvcmRFeGNlcHRpb24oIk5vIHBhc3N3b3JkIGdpdmVuIixyLlBhc3N3b3JkUmVzcG9uc2VzLk5FRURfUEFTU1dPUkQpO2lmKCFTJiZvKXtjb25zdCB0PWZ1bmN0aW9uIGRlY29kZVVzZXJQYXNzd29yZCh0LGEscixpKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KDMyKTtsZXQgbz0wO2NvbnN0IGM9TWF0aC5taW4oMzIsdC5sZW5ndGgpO2Zvcig7bzxjOysrbyluW29dPXRbb107bGV0IGw9MDtmb3IoO288MzI7KW5bbysrXT1lW2wrK107bGV0IGg9cyhuLDAsbyk7Y29uc3QgdT1pPj4zO2lmKHI+PTMpZm9yKGw9MDtsPDUwOysrbCloPXMoaCwwLGgubGVuZ3RoKTtsZXQgZCxmO2lmKHI+PTMpe2Y9YTtjb25zdCBlPW5ldyBVaW50OEFycmF5KHUpO2ZvcihsPTE5O2w+PTA7bC0tKXtmb3IobGV0IHQ9MDt0PHU7Kyt0KWVbdF09aFt0XV5sO2Q9bmV3IEFSQ0ZvdXJDaXBoZXIoZSk7Zj1kLmVuY3J5cHRCbG9jayhmKX19ZWxzZXtkPW5ldyBBUkNGb3VyQ2lwaGVyKGguc3ViYXJyYXkoMCx1KSk7Zj1kLmVuY3J5cHRCbG9jayhhKX1yZXR1cm4gZn0odyxmLG0saCk7Uz1wcmVwYXJlS2V5RGF0YSh5LHQsZixnLHAsbSxoLGIpfWlmKCFTKXRocm93IG5ldyByLlBhc3N3b3JkRXhjZXB0aW9uKCJJbmNvcnJlY3QgUGFzc3dvcmQiLHIuUGFzc3dvcmRSZXNwb25zZXMuSU5DT1JSRUNUX1BBU1NXT1JEKTt0aGlzLmVuY3J5cHRpb25LZXk9UztpZihsPj00KXtjb25zdCBlPWEuZ2V0KCJDRiIpO2UgaW5zdGFuY2VvZiBpLkRpY3QmJihlLnN1cHByZXNzRW5jcnlwdGlvbj0hMCk7dGhpcy5jZj1lO3RoaXMuc3RtZj1hLmdldCgiU3RtRiIpfHx0O3RoaXMuc3RyZj1hLmdldCgiU3RyRiIpfHx0O3RoaXMuZWZmPWEuZ2V0KCJFRkYiKXx8dGhpcy5zdG1mfX1jcmVhdGVDaXBoZXJUcmFuc2Zvcm0oZSx0KXtpZig0PT09dGhpcy5hbGdvcml0aG18fDU9PT10aGlzLmFsZ29yaXRobSlyZXR1cm4gbmV3IENpcGhlclRyYW5zZm9ybShidWlsZENpcGhlckNvbnN0cnVjdG9yKHRoaXMuY2YsdGhpcy5zdHJmLGUsdCx0aGlzLmVuY3J5cHRpb25LZXkpLGJ1aWxkQ2lwaGVyQ29uc3RydWN0b3IodGhpcy5jZix0aGlzLnN0bWYsZSx0LHRoaXMuZW5jcnlwdGlvbktleSkpO2NvbnN0IGE9YnVpbGRPYmplY3RLZXkoZSx0LHRoaXMuZW5jcnlwdGlvbktleSwhMSkscj1mdW5jdGlvbiBidWlsZENpcGhlckNpcGhlckNvbnN0cnVjdG9yKCl7cmV0dXJuIG5ldyBBUkNGb3VyQ2lwaGVyKGEpfTtyZXR1cm4gbmV3IENpcGhlclRyYW5zZm9ybShyLHIpfX19KCk7dC5DaXBoZXJUcmFuc2Zvcm1GYWN0b3J5PWx9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5EZWNyeXB0U3RyZWFtPXZvaWQgMDt2YXIgcj1hKDE4KTtjbGFzcyBEZWNyeXB0U3RyZWFtIGV4dGVuZHMgci5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmRlY3J5cHQ9YTt0aGlzLm5leHRDaHVuaz1udWxsO3RoaXMuaW5pdGlhbGl6ZWQ9ITF9cmVhZEJsb2NrKCl7bGV0IGU7aWYodGhpcy5pbml0aWFsaXplZCllPXRoaXMubmV4dENodW5rO2Vsc2V7ZT10aGlzLnN0ci5nZXRCeXRlcyg1MTIpO3RoaXMuaW5pdGlhbGl6ZWQ9ITB9aWYoIWV8fDA9PT1lLmxlbmd0aCl7dGhpcy5lb2Y9ITA7cmV0dXJufXRoaXMubmV4dENodW5rPXRoaXMuc3RyLmdldEJ5dGVzKDUxMik7Y29uc3QgdD10aGlzLm5leHRDaHVuaz8ubGVuZ3RoPjA7ZT0oMCx0aGlzLmRlY3J5cHQpKGUsIXQpO2NvbnN0IGE9dGhpcy5idWZmZXJMZW5ndGgscj1hK2UubGVuZ3RoO3RoaXMuZW5zdXJlQnVmZmVyKHIpLnNldChlLGEpO3RoaXMuYnVmZmVyTGVuZ3RoPXJ9fXQuRGVjcnlwdFN0cmVhbT1EZWNyeXB0U3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ2F0YWxvZz12b2lkIDA7dmFyIHI9YSgzKSxpPWEoMiksbj1hKDQpLHM9YSg3MSksbz1hKDUpLGM9YSg3MiksbD1hKDEyKSxoPWEoNzMpLHU9YSg1OSksZD1hKDc0KSxmPWEoNzUpO2Z1bmN0aW9uIGZldGNoRGVzdGluYXRpb24oZSl7ZSBpbnN0YW5jZW9mIG4uRGljdCYmKGU9ZS5nZXQoIkQiKSk7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZTpudWxsfWNsYXNzIENhdGFsb2d7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnhyZWY9dDt0aGlzLl9jYXREaWN0PXQuZ2V0Q2F0YWxvZ09iaigpO2lmKCEodGhpcy5fY2F0RGljdCBpbnN0YW5jZW9mIG4uRGljdCkpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoIkNhdGFsb2cgb2JqZWN0IGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7dGhpcy50b3BsZXZlbFBhZ2VzRGljdDt0aGlzLl9hY3R1YWxOdW1QYWdlcz1udWxsO3RoaXMuZm9udENhY2hlPW5ldyBuLlJlZlNldENhY2hlO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1uZXcgTWFwO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPW5ldyBNYXA7dGhpcy5nbG9iYWxJbWFnZUNhY2hlPW5ldyB1Lkdsb2JhbEltYWdlQ2FjaGU7dGhpcy5wYWdlS2lkc0NvdW50Q2FjaGU9bmV3IG4uUmVmU2V0Q2FjaGU7dGhpcy5wYWdlSW5kZXhDYWNoZT1uZXcgbi5SZWZTZXRDYWNoZTt0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9bmV3IG4uUmVmU2V0O3RoaXMuc3lzdGVtRm9udENhY2hlPW5ldyBNYXB9Z2V0IHZlcnNpb24oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJWZXJzaW9uIik7aWYoZSBpbnN0YW5jZW9mIG4uTmFtZSl7aWYoci5QREZfVkVSU0lPTl9SRUdFWFAudGVzdChlLm5hbWUpKXJldHVybigwLGkuc2hhZG93KSh0aGlzLCJ2ZXJzaW9uIixlLm5hbWUpOygwLGkud2FybikoYEludmFsaWQgUERGIGNhdGFsb2cgdmVyc2lvbjogJHtlLm5hbWV9YCl9cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsInZlcnNpb24iLG51bGwpfWdldCBsYW5nKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTGFuZyIpO3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJsYW5nIiwic3RyaW5nIj09dHlwZW9mIGU/KDAsaS5zdHJpbmdUb1BERlN0cmluZykoZSk6bnVsbCl9Z2V0IG5lZWRzUmVuZGVyaW5nKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmVlZHNSZW5kZXJpbmciKTtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywibmVlZHNSZW5kZXJpbmciLCJib29sZWFuIj09dHlwZW9mIGUmJmUpfWdldCBjb2xsZWN0aW9uKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLl9jYXREaWN0LmdldCgiQ29sbGVjdGlvbiIpO3QgaW5zdGFuY2VvZiBuLkRpY3QmJnQuc2l6ZT4wJiYoZT10KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLGkuaW5mbykoIkNhbm5vdCBmZXRjaCBDb2xsZWN0aW9uIGVudHJ5OyBhc3N1bWluZyBubyBjb2xsZWN0aW9uIGlzIHByZXNlbnQuIil9cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImNvbGxlY3Rpb24iLGUpfWdldCBhY3JvRm9ybSgpe2xldCBlPW51bGw7dHJ5e2NvbnN0IHQ9dGhpcy5fY2F0RGljdC5nZXQoIkFjcm9Gb3JtIik7dCBpbnN0YW5jZW9mIG4uRGljdCYmdC5zaXplPjAmJihlPXQpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsaS5pbmZvKSgiQ2Fubm90IGZldGNoIEFjcm9Gb3JtIGVudHJ5OyBhc3N1bWluZyBubyBmb3JtcyBhcmUgcHJlc2VudC4iKX1yZXR1cm4oMCxpLnNoYWRvdykodGhpcywiYWNyb0Zvcm0iLGUpfWdldCBhY3JvRm9ybVJlZigpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIkFjcm9Gb3JtIik7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImFjcm9Gb3JtUmVmIixlIGluc3RhbmNlb2Ygbi5SZWY/ZTpudWxsKX1nZXQgbWV0YWRhdGEoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJNZXRhZGF0YSIpO2lmKCEoZSBpbnN0YW5jZW9mIG4uUmVmKSlyZXR1cm4oMCxpLnNoYWRvdykodGhpcywibWV0YWRhdGEiLG51bGwpO2xldCB0PW51bGw7dHJ5e2NvbnN0IGE9dGhpcy54cmVmLmZldGNoKGUsIXRoaXMueHJlZi5lbmNyeXB0Py5lbmNyeXB0TWV0YWRhdGEpO2lmKGEgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0mJmEuZGljdCBpbnN0YW5jZW9mIG4uRGljdCl7Y29uc3QgZT1hLmRpY3QuZ2V0KCJUeXBlIikscj1hLmRpY3QuZ2V0KCJTdWJ0eXBlIik7aWYoKDAsbi5pc05hbWUpKGUsIk1ldGFkYXRhIikmJigwLG4uaXNOYW1lKShyLCJYTUwiKSl7Y29uc3QgZT0oMCxpLnN0cmluZ1RvVVRGOFN0cmluZykoYS5nZXRTdHJpbmcoKSk7ZSYmKHQ9bmV3IGQuTWV0YWRhdGFQYXJzZXIoZSkuc2VyaWFsaXphYmxlKX19fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsaS5pbmZvKShgU2tpcHBpbmcgaW52YWxpZCBNZXRhZGF0YTogIiR7ZX0iLmApfXJldHVybigwLGkuc2hhZG93KSh0aGlzLCJtZXRhZGF0YSIsdCl9Z2V0IG1hcmtJbmZvKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkTWFya0luZm8oKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLGkud2FybikoIlVuYWJsZSB0byByZWFkIG1hcmsgaW5mby4iKX1yZXR1cm4oMCxpLnNoYWRvdykodGhpcywibWFya0luZm8iLGUpfV9yZWFkTWFya0luZm8oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJNYXJrSW5mbyIpO2lmKCEoZSBpbnN0YW5jZW9mIG4uRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgdD17TWFya2VkOiExLFVzZXJQcm9wZXJ0aWVzOiExLFN1c3BlY3RzOiExfTtmb3IoY29uc3QgYSBpbiB0KXtjb25zdCByPWUuZ2V0KGEpOyJib29sZWFuIj09dHlwZW9mIHImJih0W2FdPXIpfXJldHVybiB0fWdldCBzdHJ1Y3RUcmVlUm9vdCgpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZFN0cnVjdFRyZWVSb290KCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIHIuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxpLndhcm4pKCJVbmFibGUgcmVhZCB0byBzdHJ1Y3RUcmVlUm9vdCBpbmZvLiIpfXJldHVybigwLGkuc2hhZG93KSh0aGlzLCJzdHJ1Y3RUcmVlUm9vdCIsZSl9X3JlYWRTdHJ1Y3RUcmVlUm9vdCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlN0cnVjdFRyZWVSb290Iik7aWYoIShlIGluc3RhbmNlb2Ygbi5EaWN0KSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBmLlN0cnVjdFRyZWVSb290KGUpO3QuaW5pdCgpO3JldHVybiB0fWdldCB0b3BsZXZlbFBhZ2VzRGljdCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlBhZ2VzIik7aWYoIShlIGluc3RhbmNlb2Ygbi5EaWN0KSl0aHJvdyBuZXcgaS5Gb3JtYXRFcnJvcigiSW52YWxpZCB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeS4iKTtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywidG9wbGV2ZWxQYWdlc0RpY3QiLGUpfWdldCBkb2N1bWVudE91dGxpbmUoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWREb2N1bWVudE91dGxpbmUoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLGkud2FybikoIlVuYWJsZSB0byByZWFkIGRvY3VtZW50IG91dGxpbmUuIil9cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImRvY3VtZW50T3V0bGluZSIsZSl9X3JlYWREb2N1bWVudE91dGxpbmUoKXtsZXQgZT10aGlzLl9jYXREaWN0LmdldCgiT3V0bGluZXMiKTtpZighKGUgaW5zdGFuY2VvZiBuLkRpY3QpKXJldHVybiBudWxsO2U9ZS5nZXRSYXcoIkZpcnN0Iik7aWYoIShlIGluc3RhbmNlb2Ygbi5SZWYpKXJldHVybiBudWxsO2NvbnN0IHQ9e2l0ZW1zOltdfSxhPVt7b2JqOmUscGFyZW50OnR9XSxyPW5ldyBuLlJlZlNldDtyLnB1dChlKTtjb25zdCBzPXRoaXMueHJlZixvPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtmb3IoO2EubGVuZ3RoPjA7KXtjb25zdCB0PWEuc2hpZnQoKSxjPXMuZmV0Y2hJZlJlZih0Lm9iaik7aWYobnVsbD09PWMpY29udGludWU7aWYoIWMuaGFzKCJUaXRsZSIpKXRocm93IG5ldyBpLkZvcm1hdEVycm9yKCJJbnZhbGlkIG91dGxpbmUgaXRlbSBlbmNvdW50ZXJlZC4iKTtjb25zdCBoPXt1cmw6bnVsbCxkZXN0Om51bGwsYWN0aW9uOm51bGx9O0NhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6YyxyZXN1bHRPYmo6aCxkb2NCYXNlVXJsOnRoaXMucGRmTWFuYWdlci5kb2NCYXNlVXJsLGRvY0F0dGFjaG1lbnRzOnRoaXMuYXR0YWNobWVudHN9KTtjb25zdCB1PWMuZ2V0KCJUaXRsZSIpLGQ9Yy5nZXQoIkYiKXx8MCxmPWMuZ2V0QXJyYXkoIkMiKSxnPWMuZ2V0KCJDb3VudCIpO2xldCBwPW87IUFycmF5LmlzQXJyYXkoZil8fDMhPT1mLmxlbmd0aHx8MD09PWZbMF0mJjA9PT1mWzFdJiYwPT09ZlsyXXx8KHA9bC5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYihmLDApKTtjb25zdCBtPXthY3Rpb246aC5hY3Rpb24sYXR0YWNobWVudDpoLmF0dGFjaG1lbnQsZGVzdDpoLmRlc3QsdXJsOmgudXJsLHVuc2FmZVVybDpoLnVuc2FmZVVybCxuZXdXaW5kb3c6aC5uZXdXaW5kb3csc2V0T0NHU3RhdGU6aC5zZXRPQ0dTdGF0ZSx0aXRsZTooMCxpLnN0cmluZ1RvUERGU3RyaW5nKSh1KSxjb2xvcjpwLGNvdW50Ok51bWJlci5pc0ludGVnZXIoZyk/Zzp2b2lkIDAsYm9sZDohISgyJmQpLGl0YWxpYzohISgxJmQpLGl0ZW1zOltdfTt0LnBhcmVudC5pdGVtcy5wdXNoKG0pO2U9Yy5nZXRSYXcoIkZpcnN0Iik7aWYoZSBpbnN0YW5jZW9mIG4uUmVmJiYhci5oYXMoZSkpe2EucHVzaCh7b2JqOmUscGFyZW50Om19KTtyLnB1dChlKX1lPWMuZ2V0UmF3KCJOZXh0Iik7aWYoZSBpbnN0YW5jZW9mIG4uUmVmJiYhci5oYXMoZSkpe2EucHVzaCh7b2JqOmUscGFyZW50OnQucGFyZW50fSk7ci5wdXQoZSl9fXJldHVybiB0Lml0ZW1zLmxlbmd0aD4wP3QuaXRlbXM6bnVsbH1nZXQgcGVybWlzc2lvbnMoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWRQZXJtaXNzaW9ucygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsaS53YXJuKSgiVW5hYmxlIHRvIHJlYWQgcGVybWlzc2lvbnMuIil9cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsInBlcm1pc3Npb25zIixlKX1fcmVhZFBlcm1pc3Npb25zKCl7Y29uc3QgZT10aGlzLnhyZWYudHJhaWxlci5nZXQoIkVuY3J5cHQiKTtpZighKGUgaW5zdGFuY2VvZiBuLkRpY3QpKXJldHVybiBudWxsO2xldCB0PWUuZ2V0KCJQIik7aWYoIm51bWJlciIhPXR5cGVvZiB0KXJldHVybiBudWxsO3QrPTIqKjMyO2NvbnN0IGE9W107Zm9yKGNvbnN0IGUgaW4gaS5QZXJtaXNzaW9uRmxhZyl7Y29uc3Qgcj1pLlBlcm1pc3Npb25GbGFnW2VdO3QmciYmYS5wdXNoKHIpfXJldHVybiBhfWdldCBvcHRpb25hbENvbnRlbnRDb25maWcoKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuX2NhdERpY3QuZ2V0KCJPQ1Byb3BlcnRpZXMiKTtpZighdClyZXR1cm4oMCxpLnNoYWRvdykodGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCBhPXQuZ2V0KCJEIik7aWYoIWEpcmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3Qgcj10LmdldCgiT0NHcyIpO2lmKCFBcnJheS5pc0FycmF5KHIpKXJldHVybigwLGkuc2hhZG93KSh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IHM9W10sbz1bXTtmb3IoY29uc3QgZSBvZiByKXtpZighKGUgaW5zdGFuY2VvZiBuLlJlZikpY29udGludWU7by5wdXNoKGUpO2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7cy5wdXNoKHtpZDplLnRvU3RyaW5nKCksbmFtZToic3RyaW5nIj09dHlwZW9mIHQuZ2V0KCJOYW1lIik/KDAsaS5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIk5hbWUiKSk6bnVsbCxpbnRlbnQ6InN0cmluZyI9PXR5cGVvZiB0LmdldCgiSW50ZW50Iik/KDAsaS5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIkludGVudCIpKTpudWxsfSl9ZT10aGlzLl9yZWFkT3B0aW9uYWxDb250ZW50Q29uZmlnKGEsbyk7ZS5ncm91cHM9c31jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLGkud2FybikoYFVuYWJsZSB0byByZWFkIG9wdGlvbmFsIGNvbnRlbnQgY29uZmlnOiAke2V9YCl9cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsZSl9X3JlYWRPcHRpb25hbENvbnRlbnRDb25maWcoZSx0KXtmdW5jdGlvbiBwYXJzZU9uT2ZmKGUpe2NvbnN0IGE9W107aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgciBvZiBlKXIgaW5zdGFuY2VvZiBuLlJlZiYmdC5pbmNsdWRlcyhyKSYmYS5wdXNoKHIudG9TdHJpbmcoKSk7cmV0dXJuIGF9ZnVuY3Rpb24gcGFyc2VPcmRlcihlLGE9MCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3QgaT1bXTtmb3IoY29uc3QgcyBvZiBlKXtpZihzIGluc3RhbmNlb2Ygbi5SZWYmJnQuaW5jbHVkZXMocykpe3IucHV0KHMpO2kucHVzaChzLnRvU3RyaW5nKCkpO2NvbnRpbnVlfWNvbnN0IGU9cGFyc2VOZXN0ZWRPcmRlcihzLGEpO2UmJmkucHVzaChlKX1pZihhPjApcmV0dXJuIGk7Y29uc3Qgcz1bXTtmb3IoY29uc3QgZSBvZiB0KXIuaGFzKGUpfHxzLnB1c2goZS50b1N0cmluZygpKTtzLmxlbmd0aCYmaS5wdXNoKHtuYW1lOm51bGwsb3JkZXI6c30pO3JldHVybiBpfWZ1bmN0aW9uIHBhcnNlTmVzdGVkT3JkZXIoZSx0KXtpZigrK3Q+cyl7KDAsaS53YXJuKSgicGFyc2VOZXN0ZWRPcmRlciAtIHJlYWNoZWQgTUFYX05FU1RFRF9MRVZFTFMuIik7cmV0dXJuIG51bGx9Y29uc3Qgcj1hLmZldGNoSWZSZWYoZSk7aWYoIUFycmF5LmlzQXJyYXkocikpcmV0dXJuIG51bGw7Y29uc3Qgbj1hLmZldGNoSWZSZWYoclswXSk7aWYoInN0cmluZyIhPXR5cGVvZiBuKXJldHVybiBudWxsO2NvbnN0IG89cGFyc2VPcmRlcihyLnNsaWNlKDEpLHQpO3JldHVybiBvJiZvLmxlbmd0aD97bmFtZTooMCxpLnN0cmluZ1RvUERGU3RyaW5nKShuKSxvcmRlcjpvfTpudWxsfWNvbnN0IGE9dGhpcy54cmVmLHI9bmV3IG4uUmVmU2V0LHM9MTA7cmV0dXJue25hbWU6InN0cmluZyI9PXR5cGVvZiBlLmdldCgiTmFtZSIpPygwLGkuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJOYW1lIikpOm51bGwsY3JlYXRvcjoic3RyaW5nIj09dHlwZW9mIGUuZ2V0KCJDcmVhdG9yIik/KDAsaS5zdHJpbmdUb1BERlN0cmluZykoZS5nZXQoIkNyZWF0b3IiKSk6bnVsbCxiYXNlU3RhdGU6ZS5nZXQoIkJhc2VTdGF0ZSIpaW5zdGFuY2VvZiBuLk5hbWU/ZS5nZXQoIkJhc2VTdGF0ZSIpLm5hbWU6bnVsbCxvbjpwYXJzZU9uT2ZmKGUuZ2V0KCJPTiIpKSxvZmY6cGFyc2VPbk9mZihlLmdldCgiT0ZGIikpLG9yZGVyOnBhcnNlT3JkZXIoZS5nZXQoIk9yZGVyIikpLGdyb3VwczpudWxsfX1zZXRBY3R1YWxOdW1QYWdlcyhlPW51bGwpe3RoaXMuX2FjdHVhbE51bVBhZ2VzPWV9Z2V0IGhhc0FjdHVhbE51bVBhZ2VzKCl7cmV0dXJuIG51bGwhPT10aGlzLl9hY3R1YWxOdW1QYWdlc31nZXQgX3BhZ2VzQ291bnQoKXtjb25zdCBlPXRoaXMudG9wbGV2ZWxQYWdlc0RpY3QuZ2V0KCJDb3VudCIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyBpLkZvcm1hdEVycm9yKCJQYWdlIGNvdW50IGluIHRvcC1sZXZlbCBwYWdlcyBkaWN0aW9uYXJ5IGlzIG5vdCBhbiBpbnRlZ2VyLiIpO3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJfcGFnZXNDb3VudCIsZSl9Z2V0IG51bVBhZ2VzKCl7cmV0dXJuIHRoaXMuaGFzQWN0dWFsTnVtUGFnZXM/dGhpcy5fYWN0dWFsTnVtUGFnZXM6dGhpcy5fcGFnZXNDb3VudH1nZXQgZGVzdGluYXRpb25zKCl7Y29uc3QgZT10aGlzLl9yZWFkRGVzdHMoKSx0PU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZSBpbnN0YW5jZW9mIHMuTmFtZVRyZWUpZm9yKGNvbnN0W2Escl1vZiBlLmdldEFsbCgpKXtjb25zdCBlPWZldGNoRGVzdGluYXRpb24ocik7ZSYmKHRbKDAsaS5zdHJpbmdUb1BERlN0cmluZykoYSldPWUpfWVsc2UgZSBpbnN0YW5jZW9mIG4uRGljdCYmZS5mb3JFYWNoKChmdW5jdGlvbihlLGEpe2NvbnN0IHI9ZmV0Y2hEZXN0aW5hdGlvbihhKTtyJiYodFtlXT1yKX0pKTtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiZGVzdGluYXRpb25zIix0KX1nZXREZXN0aW5hdGlvbihlKXtjb25zdCB0PXRoaXMuX3JlYWREZXN0cygpO2lmKHQgaW5zdGFuY2VvZiBzLk5hbWVUcmVlKXtjb25zdCBhPWZldGNoRGVzdGluYXRpb24odC5nZXQoZSkpO2lmKGEpcmV0dXJuIGE7Y29uc3Qgcj10aGlzLmRlc3RpbmF0aW9uc1tlXTtpZihyKXsoMCxpLndhcm4pKGBGb3VuZCAiJHtlfSIgYXQgYW4gaW5jb3JyZWN0IHBvc2l0aW9uIGluIHRoZSBOYW1lVHJlZS5gKTtyZXR1cm4gcn19ZWxzZSBpZih0IGluc3RhbmNlb2Ygbi5EaWN0KXtjb25zdCBhPWZldGNoRGVzdGluYXRpb24odC5nZXQoZSkpO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9X3JlYWREZXN0cygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7cmV0dXJuIGU/LmhhcygiRGVzdHMiKT9uZXcgcy5OYW1lVHJlZShlLmdldFJhdygiRGVzdHMiKSx0aGlzLnhyZWYpOnRoaXMuX2NhdERpY3QuaGFzKCJEZXN0cyIpP3RoaXMuX2NhdERpY3QuZ2V0KCJEZXN0cyIpOnZvaWQgMH1nZXQgcGFnZUxhYmVscygpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZFBhZ2VMYWJlbHMoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLGkud2FybikoIlVuYWJsZSB0byByZWFkIHBhZ2UgbGFiZWxzLiIpfXJldHVybigwLGkuc2hhZG93KSh0aGlzLCJwYWdlTGFiZWxzIixlKX1fcmVhZFBhZ2VMYWJlbHMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJQYWdlTGFiZWxzIik7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgQXJyYXkodGhpcy5udW1QYWdlcyk7bGV0IGE9bnVsbCxvPSIiO2NvbnN0IGM9bmV3IHMuTnVtYmVyVHJlZShlLHRoaXMueHJlZikuZ2V0QWxsKCk7bGV0IGw9IiIsaD0xO2ZvcihsZXQgZT0wLHM9dGhpcy5udW1QYWdlcztlPHM7ZSsrKXtjb25zdCBzPWMuZ2V0KGUpO2lmKHZvaWQgMCE9PXMpe2lmKCEocyBpbnN0YW5jZW9mIG4uRGljdCkpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoIlBhZ2VMYWJlbCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO2lmKHMuaGFzKCJUeXBlIikmJiEoMCxuLmlzTmFtZSkocy5nZXQoIlR5cGUiKSwiUGFnZUxhYmVsIikpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoIkludmFsaWQgdHlwZSBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtpZihzLmhhcygiUyIpKXtjb25zdCBlPXMuZ2V0KCJTIik7aWYoIShlIGluc3RhbmNlb2Ygbi5OYW1lKSl0aHJvdyBuZXcgaS5Gb3JtYXRFcnJvcigiSW52YWxpZCBzdHlsZSBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTthPWUubmFtZX1lbHNlIGE9bnVsbDtpZihzLmhhcygiUCIpKXtjb25zdCBlPXMuZ2V0KCJQIik7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBpLkZvcm1hdEVycm9yKCJJbnZhbGlkIHByZWZpeCBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtvPSgwLGkuc3RyaW5nVG9QREZTdHJpbmcpKGUpfWVsc2Ugbz0iIjtpZihzLmhhcygiU3QiKSl7Y29uc3QgZT1zLmdldCgiU3QiKTtpZighKE51bWJlci5pc0ludGVnZXIoZSkmJmU+PTEpKXRocm93IG5ldyBpLkZvcm1hdEVycm9yKCJJbnZhbGlkIHN0YXJ0IGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2g9ZX1lbHNlIGg9MX1zd2l0Y2goYSl7Y2FzZSJEIjpsPWg7YnJlYWs7Y2FzZSJSIjpjYXNlInIiOmw9KDAsci50b1JvbWFuTnVtZXJhbHMpKGgsInIiPT09YSk7YnJlYWs7Y2FzZSJBIjpjYXNlImEiOmNvbnN0IGU9MjYsdD0iYSI9PT1hPzk3OjY1LG49aC0xO2w9U3RyaW5nLmZyb21DaGFyQ29kZSh0K24lZSkucmVwZWF0KE1hdGguZmxvb3Iobi9lKSsxKTticmVhaztkZWZhdWx0OmlmKGEpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoYEludmFsaWQgc3R5bGUgIiR7YX0iIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LmApO2w9IiJ9dFtlXT1vK2w7aCsrfXJldHVybiB0fWdldCBwYWdlTGF5b3V0KCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiUGFnZUxheW91dCIpO2xldCB0PSIiO2lmKGUgaW5zdGFuY2VvZiBuLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJTaW5nbGVQYWdlIjpjYXNlIk9uZUNvbHVtbiI6Y2FzZSJUd29Db2x1bW5MZWZ0IjpjYXNlIlR3b0NvbHVtblJpZ2h0IjpjYXNlIlR3b1BhZ2VMZWZ0IjpjYXNlIlR3b1BhZ2VSaWdodCI6dD1lLm5hbWV9cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsInBhZ2VMYXlvdXQiLHQpfWdldCBwYWdlTW9kZSgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlBhZ2VNb2RlIik7bGV0IHQ9IlVzZU5vbmUiO2lmKGUgaW5zdGFuY2VvZiBuLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJVc2VOb25lIjpjYXNlIlVzZU91dGxpbmVzIjpjYXNlIlVzZVRodW1icyI6Y2FzZSJGdWxsU2NyZWVuIjpjYXNlIlVzZU9DIjpjYXNlIlVzZUF0dGFjaG1lbnRzIjp0PWUubmFtZX1yZXR1cm4oMCxpLnNoYWRvdykodGhpcywicGFnZU1vZGUiLHQpfWdldCB2aWV3ZXJQcmVmZXJlbmNlcygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlZpZXdlclByZWZlcmVuY2VzIik7aWYoIShlIGluc3RhbmNlb2Ygbi5EaWN0KSlyZXR1cm4oMCxpLnNoYWRvdykodGhpcywidmlld2VyUHJlZmVyZW5jZXMiLG51bGwpO2xldCB0PW51bGw7Zm9yKGNvbnN0IGEgb2YgZS5nZXRLZXlzKCkpe2NvbnN0IHI9ZS5nZXQoYSk7bGV0IHM7c3dpdGNoKGEpe2Nhc2UiSGlkZVRvb2xiYXIiOmNhc2UiSGlkZU1lbnViYXIiOmNhc2UiSGlkZVdpbmRvd1VJIjpjYXNlIkZpdFdpbmRvdyI6Y2FzZSJDZW50ZXJXaW5kb3ciOmNhc2UiRGlzcGxheURvY1RpdGxlIjpjYXNlIlBpY2tUcmF5QnlQREZTaXplIjoiYm9vbGVhbiI9PXR5cGVvZiByJiYocz1yKTticmVhaztjYXNlIk5vbkZ1bGxTY3JlZW5QYWdlTW9kZSI6aWYociBpbnN0YW5jZW9mIG4uTmFtZSlzd2l0Y2goci5uYW1lKXtjYXNlIlVzZU5vbmUiOmNhc2UiVXNlT3V0bGluZXMiOmNhc2UiVXNlVGh1bWJzIjpjYXNlIlVzZU9DIjpzPXIubmFtZTticmVhaztkZWZhdWx0OnM9IlVzZU5vbmUifWJyZWFrO2Nhc2UiRGlyZWN0aW9uIjppZihyIGluc3RhbmNlb2Ygbi5OYW1lKXN3aXRjaChyLm5hbWUpe2Nhc2UiTDJSIjpjYXNlIlIyTCI6cz1yLm5hbWU7YnJlYWs7ZGVmYXVsdDpzPSJMMlIifWJyZWFrO2Nhc2UiVmlld0FyZWEiOmNhc2UiVmlld0NsaXAiOmNhc2UiUHJpbnRBcmVhIjpjYXNlIlByaW50Q2xpcCI6aWYociBpbnN0YW5jZW9mIG4uTmFtZSlzd2l0Y2goci5uYW1lKXtjYXNlIk1lZGlhQm94IjpjYXNlIkNyb3BCb3giOmNhc2UiQmxlZWRCb3giOmNhc2UiVHJpbUJveCI6Y2FzZSJBcnRCb3giOnM9ci5uYW1lO2JyZWFrO2RlZmF1bHQ6cz0iQ3JvcEJveCJ9YnJlYWs7Y2FzZSJQcmludFNjYWxpbmciOmlmKHIgaW5zdGFuY2VvZiBuLk5hbWUpc3dpdGNoKHIubmFtZSl7Y2FzZSJOb25lIjpjYXNlIkFwcERlZmF1bHQiOnM9ci5uYW1lO2JyZWFrO2RlZmF1bHQ6cz0iQXBwRGVmYXVsdCJ9YnJlYWs7Y2FzZSJEdXBsZXgiOmlmKHIgaW5zdGFuY2VvZiBuLk5hbWUpc3dpdGNoKHIubmFtZSl7Y2FzZSJTaW1wbGV4IjpjYXNlIkR1cGxleEZsaXBTaG9ydEVkZ2UiOmNhc2UiRHVwbGV4RmxpcExvbmdFZGdlIjpzPXIubmFtZTticmVhaztkZWZhdWx0OnM9Ik5vbmUifWJyZWFrO2Nhc2UiUHJpbnRQYWdlUmFuZ2UiOmlmKEFycmF5LmlzQXJyYXkocikmJnIubGVuZ3RoJTI9PTApe3IuZXZlcnkoKChlLHQsYSk9Pk51bWJlci5pc0ludGVnZXIoZSkmJmU+MCYmKDA9PT10fHxlPj1hW3QtMV0pJiZlPD10aGlzLm51bVBhZ2VzKSkmJihzPXIpfWJyZWFrO2Nhc2UiTnVtQ29waWVzIjpOdW1iZXIuaXNJbnRlZ2VyKHIpJiZyPjAmJihzPXIpO2JyZWFrO2RlZmF1bHQ6KDAsaS53YXJuKShgSWdub3Jpbmcgbm9uLXN0YW5kYXJkIGtleSBpbiBWaWV3ZXJQcmVmZXJlbmNlczogJHthfS5gKTtjb250aW51ZX1pZih2b2lkIDAhPT1zKXt0fHwodD1PYmplY3QuY3JlYXRlKG51bGwpKTt0W2FdPXN9ZWxzZSgwLGkud2FybikoYEJhZCB2YWx1ZSwgZm9yIGtleSAiJHthfSIsIGluIFZpZXdlclByZWZlcmVuY2VzOiAke3J9LmApfXJldHVybigwLGkuc2hhZG93KSh0aGlzLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsdCl9Z2V0IG9wZW5BY3Rpb24oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJPcGVuQWN0aW9uIiksdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUgaW5zdGFuY2VvZiBuLkRpY3Qpe2NvbnN0IGE9bmV3IG4uRGljdCh0aGlzLnhyZWYpO2Euc2V0KCJBIixlKTtjb25zdCByPXt1cmw6bnVsbCxkZXN0Om51bGwsYWN0aW9uOm51bGx9O0NhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6YSxyZXN1bHRPYmo6cn0pO0FycmF5LmlzQXJyYXkoci5kZXN0KT90LmRlc3Q9ci5kZXN0OnIuYWN0aW9uJiYodC5hY3Rpb249ci5hY3Rpb24pfWVsc2UgQXJyYXkuaXNBcnJheShlKSYmKHQuZGVzdD1lKTtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywib3BlbkFjdGlvbiIsKDAsaS5vYmplY3RTaXplKSh0KT4wP3Q6bnVsbCl9Z2V0IGF0dGFjaG1lbnRzKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2lmKGUgaW5zdGFuY2VvZiBuLkRpY3QmJmUuaGFzKCJFbWJlZGRlZEZpbGVzIikpe2NvbnN0IGE9bmV3IHMuTmFtZVRyZWUoZS5nZXRSYXcoIkVtYmVkZGVkRmlsZXMiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLHJdb2YgYS5nZXRBbGwoKSl7Y29uc3QgYT1uZXcgaC5GaWxlU3BlYyhyLHRoaXMueHJlZik7dHx8KHQ9T2JqZWN0LmNyZWF0ZShudWxsKSk7dFsoMCxpLnN0cmluZ1RvUERGU3RyaW5nKShlKV09YS5zZXJpYWxpemFibGV9fXJldHVybigwLGkuc2hhZG93KSh0aGlzLCJhdHRhY2htZW50cyIsdCl9Z2V0IHhmYUltYWdlcygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtpZihlIGluc3RhbmNlb2Ygbi5EaWN0JiZlLmhhcygiWEZBSW1hZ2VzIikpe2NvbnN0IGE9bmV3IHMuTmFtZVRyZWUoZS5nZXRSYXcoIlhGQUltYWdlcyIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2Uscl1vZiBhLmdldEFsbCgpKXt0fHwodD1uZXcgbi5EaWN0KHRoaXMueHJlZikpO3Quc2V0KCgwLGkuc3RyaW5nVG9QREZTdHJpbmcpKGUpLHIpfX1yZXR1cm4oMCxpLnNoYWRvdykodGhpcywieGZhSW1hZ2VzIix0KX1fY29sbGVjdEphdmFTY3JpcHQoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7ZnVuY3Rpb24gYXBwZW5kSWZKYXZhU2NyaXB0RGljdChlLGEpe2lmKCEoYSBpbnN0YW5jZW9mIG4uRGljdCkpcmV0dXJuO2lmKCEoMCxuLmlzTmFtZSkoYS5nZXQoIlMiKSwiSmF2YVNjcmlwdCIpKXJldHVybjtsZXQgcj1hLmdldCgiSlMiKTtpZihyIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtKXI9ci5nZXRTdHJpbmcoKTtlbHNlIGlmKCJzdHJpbmciIT10eXBlb2YgcilyZXR1cm47cj0oMCxpLnN0cmluZ1RvUERGU3RyaW5nKShyKS5yZXBsYWNlQWxsKCJcMCIsIiIpOyh0fHw9bmV3IE1hcCkuc2V0KGUscil9aWYoZSBpbnN0YW5jZW9mIG4uRGljdCYmZS5oYXMoIkphdmFTY3JpcHQiKSl7Y29uc3QgdD1uZXcgcy5OYW1lVHJlZShlLmdldFJhdygiSmF2YVNjcmlwdCIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsYV1vZiB0LmdldEFsbCgpKWFwcGVuZElmSmF2YVNjcmlwdERpY3QoKDAsaS5zdHJpbmdUb1BERlN0cmluZykoZSksYSl9Y29uc3QgYT10aGlzLl9jYXREaWN0LmdldCgiT3BlbkFjdGlvbiIpO2EmJmFwcGVuZElmSmF2YVNjcmlwdERpY3QoIk9wZW5BY3Rpb24iLGEpO3JldHVybiB0fWdldCBqYXZhU2NyaXB0KCl7Y29uc3QgZT10aGlzLl9jb2xsZWN0SmF2YVNjcmlwdCgpO3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJqYXZhU2NyaXB0IixlP1suLi5lLnZhbHVlcygpXTpudWxsKX1nZXQganNBY3Rpb25zKCl7Y29uc3QgZT10aGlzLl9jb2xsZWN0SmF2YVNjcmlwdCgpO2xldCB0PSgwLHIuY29sbGVjdEFjdGlvbnMpKHRoaXMueHJlZix0aGlzLl9jYXREaWN0LGkuRG9jdW1lbnRBY3Rpb25FdmVudFR5cGUpO2lmKGUpe3R8fCh0PU9iamVjdC5jcmVhdGUobnVsbCkpO2Zvcihjb25zdFthLHJdb2YgZSlhIGluIHQ/dFthXS5wdXNoKHIpOnRbYV09W3JdfXJldHVybigwLGkuc2hhZG93KSh0aGlzLCJqc0FjdGlvbnMiLHQpfWFzeW5jIGZvbnRGYWxsYmFjayhlLHQpe2NvbnN0IGE9YXdhaXQgUHJvbWlzZS5hbGwodGhpcy5mb250Q2FjaGUpO2Zvcihjb25zdCByIG9mIGEpaWYoci5sb2FkZWROYW1lPT09ZSl7ci5mYWxsYmFjayh0KTtyZXR1cm59fWFzeW5jIGNsZWFudXAoZT0hMSl7KDAsYy5jbGVhckdsb2JhbENhY2hlcykoKTt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuY2xlYXIoZSk7dGhpcy5wYWdlS2lkc0NvdW50Q2FjaGUuY2xlYXIoKTt0aGlzLnBhZ2VJbmRleENhY2hlLmNsZWFyKCk7dGhpcy5ub25CbGVuZE1vZGVzU2V0LmNsZWFyKCk7Y29uc3QgdD1hd2FpdCBQcm9taXNlLmFsbCh0aGlzLmZvbnRDYWNoZSk7Zm9yKGNvbnN0e2RpY3Q6ZX1vZiB0KWRlbGV0ZSBlLmNhY2hlS2V5O3RoaXMuZm9udENhY2hlLmNsZWFyKCk7dGhpcy5idWlsdEluQ01hcENhY2hlLmNsZWFyKCk7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuY2xlYXIoKTt0aGlzLnN5c3RlbUZvbnRDYWNoZS5jbGVhcigpfWFzeW5jIGdldFBhZ2VEaWN0KGUpe2NvbnN0IHQ9W3RoaXMudG9wbGV2ZWxQYWdlc0RpY3RdLGE9bmV3IG4uUmVmU2V0LHI9dGhpcy5fY2F0RGljdC5nZXRSYXcoIlBhZ2VzIik7ciBpbnN0YW5jZW9mIG4uUmVmJiZhLnB1dChyKTtjb25zdCBzPXRoaXMueHJlZixvPXRoaXMucGFnZUtpZHNDb3VudENhY2hlLGM9dGhpcy5wYWdlSW5kZXhDYWNoZTtsZXQgbD0wO2Zvcig7dC5sZW5ndGg7KXtjb25zdCByPXQucG9wKCk7aWYociBpbnN0YW5jZW9mIG4uUmVmKXtjb25zdCBoPW8uZ2V0KHIpO2lmKGg+PTAmJmwraDw9ZSl7bCs9aDtjb250aW51ZX1pZihhLmhhcyhyKSl0aHJvdyBuZXcgaS5Gb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIik7YS5wdXQocik7Y29uc3QgdT1hd2FpdCBzLmZldGNoQXN5bmMocik7aWYodSBpbnN0YW5jZW9mIG4uRGljdCl7bGV0IHQ9dS5nZXRSYXcoIlR5cGUiKTt0IGluc3RhbmNlb2Ygbi5SZWYmJih0PWF3YWl0IHMuZmV0Y2hBc3luYyh0KSk7aWYoKDAsbi5pc05hbWUpKHQsIlBhZ2UiKXx8IXUuaGFzKCJLaWRzIikpe28uaGFzKHIpfHxvLnB1dChyLDEpO2MuaGFzKHIpfHxjLnB1dChyLGwpO2lmKGw9PT1lKXJldHVyblt1LHJdO2wrKztjb250aW51ZX19dC5wdXNoKHUpO2NvbnRpbnVlfWlmKCEociBpbnN0YW5jZW9mIG4uRGljdCkpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWQgcmVmZXJlbmNlIHBvaW50cyB0byB3cm9uZyB0eXBlIG9mIG9iamVjdC4iKTtjb25zdHtvYmpJZDpofT1yO2xldCB1PXIuZ2V0UmF3KCJDb3VudCIpO3UgaW5zdGFuY2VvZiBuLlJlZiYmKHU9YXdhaXQgcy5mZXRjaEFzeW5jKHUpKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHUpJiZ1Pj0wKXtoJiYhby5oYXMoaCkmJm8ucHV0KGgsdSk7aWYobCt1PD1lKXtsKz11O2NvbnRpbnVlfX1sZXQgZD1yLmdldFJhdygiS2lkcyIpO2QgaW5zdGFuY2VvZiBuLlJlZiYmKGQ9YXdhaXQgcy5mZXRjaEFzeW5jKGQpKTtpZighQXJyYXkuaXNBcnJheShkKSl7bGV0IHQ9ci5nZXRSYXcoIlR5cGUiKTt0IGluc3RhbmNlb2Ygbi5SZWYmJih0PWF3YWl0IHMuZmV0Y2hBc3luYyh0KSk7aWYoKDAsbi5pc05hbWUpKHQsIlBhZ2UiKXx8IXIuaGFzKCJLaWRzIikpe2lmKGw9PT1lKXJldHVybltyLG51bGxdO2wrKztjb250aW51ZX10aHJvdyBuZXcgaS5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZHMgb2JqZWN0IGlzIG5vdCBhbiBhcnJheS4iKX1mb3IobGV0IGU9ZC5sZW5ndGgtMTtlPj0wO2UtLSl0LnB1c2goZFtlXSl9dGhyb3cgbmV3IEVycm9yKGBQYWdlIGluZGV4ICR7ZX0gbm90IGZvdW5kLmApfWFzeW5jIGdldEFsbFBhZ2VEaWN0cyhlPSExKXtjb25zdHtpZ25vcmVFcnJvcnM6dH09dGhpcy5wZGZNYW5hZ2VyLmV2YWx1YXRvck9wdGlvbnMsYT1be2N1cnJlbnROb2RlOnRoaXMudG9wbGV2ZWxQYWdlc0RpY3QscG9zSW5LaWRzOjB9XSxzPW5ldyBuLlJlZlNldCxvPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJQYWdlcyIpO28gaW5zdGFuY2VvZiBuLlJlZiYmcy5wdXQobyk7Y29uc3QgYz1uZXcgTWFwLGw9dGhpcy54cmVmLGg9dGhpcy5wYWdlSW5kZXhDYWNoZTtsZXQgdT0wO2Z1bmN0aW9uIGFkZFBhZ2VEaWN0KGUsdCl7dCYmIWguaGFzKHQpJiZoLnB1dCh0LHUpO2Muc2V0KHUrKyxbZSx0XSl9ZnVuY3Rpb24gYWRkUGFnZUVycm9yKGEpe2lmKGEgaW5zdGFuY2VvZiByLlhSZWZFbnRyeUV4Y2VwdGlvbiYmIWUpdGhyb3cgYTtpZihlJiZ0JiYwPT09dSl7KDAsaS53YXJuKShgZ2V0QWxsUGFnZURpY3RzIC0gU2tpcHBpbmcgaW52YWxpZCBmaXJzdCBwYWdlOiAiJHthfSIuYCk7YT1uLkRpY3QuZW1wdHl9Yy5zZXQodSsrLFthLG51bGxdKX1mb3IoO2EubGVuZ3RoPjA7KXtjb25zdCBlPWEuYXQoLTEpLHtjdXJyZW50Tm9kZTp0LHBvc0luS2lkczpyfT1lO2xldCBvPXQuZ2V0UmF3KCJLaWRzIik7aWYobyBpbnN0YW5jZW9mIG4uUmVmKXRyeXtvPWF3YWl0IGwuZmV0Y2hBc3luYyhvKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9aWYoIUFycmF5LmlzQXJyYXkobykpe2FkZFBhZ2VFcnJvcihuZXcgaS5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZHMgb2JqZWN0IGlzIG5vdCBhbiBhcnJheS4iKSk7YnJlYWt9aWYocj49by5sZW5ndGgpe2EucG9wKCk7Y29udGludWV9Y29uc3QgYz1vW3JdO2xldCBoO2lmKGMgaW5zdGFuY2VvZiBuLlJlZil7aWYocy5oYXMoYykpe2FkZFBhZ2VFcnJvcihuZXcgaS5Gb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIikpO2JyZWFrfXMucHV0KGMpO3RyeXtoPWF3YWl0IGwuZmV0Y2hBc3luYyhjKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9fWVsc2UgaD1jO2lmKCEoaCBpbnN0YW5jZW9mIG4uRGljdCkpe2FkZFBhZ2VFcnJvcihuZXcgaS5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpKTticmVha31sZXQgdT1oLmdldFJhdygiVHlwZSIpO2lmKHUgaW5zdGFuY2VvZiBuLlJlZil0cnl7dT1hd2FpdCBsLmZldGNoQXN5bmModSl9Y2F0Y2goZSl7YWRkUGFnZUVycm9yKGUpO2JyZWFrfSgwLG4uaXNOYW1lKSh1LCJQYWdlIil8fCFoLmhhcygiS2lkcyIpP2FkZFBhZ2VEaWN0KGgsYyBpbnN0YW5jZW9mIG4uUmVmP2M6bnVsbCk6YS5wdXNoKHtjdXJyZW50Tm9kZTpoLHBvc0luS2lkczowfSk7ZS5wb3NJbktpZHMrK31yZXR1cm4gY31nZXRQYWdlSW5kZXgoZSl7Y29uc3QgdD10aGlzLnBhZ2VJbmRleENhY2hlLmdldChlKTtpZih2b2lkIDAhPT10KXJldHVybiBQcm9taXNlLnJlc29sdmUodCk7Y29uc3QgYT10aGlzLnhyZWY7bGV0IHI9MDtjb25zdCBuZXh0PXQ9PmZ1bmN0aW9uIHBhZ2VzQmVmb3JlUmVmKHQpe2xldCByLHM9MDtyZXR1cm4gYS5mZXRjaEFzeW5jKHQpLnRoZW4oKGZ1bmN0aW9uKGEpe2lmKCgwLG4uaXNSZWZzRXF1YWwpKHQsZSkmJiEoMCxuLmlzRGljdCkoYSwiUGFnZSIpJiYhKGEgaW5zdGFuY2VvZiBuLkRpY3QmJiFhLmhhcygiVHlwZSIpJiZhLmhhcygiQ29udGVudHMiKSkpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoIlRoZSByZWZlcmVuY2UgZG9lcyBub3QgcG9pbnQgdG8gYSAvUGFnZSBkaWN0aW9uYXJ5LiIpO2lmKCFhKXJldHVybiBudWxsO2lmKCEoYSBpbnN0YW5jZW9mIG4uRGljdCkpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoIk5vZGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7cj1hLmdldFJhdygiUGFyZW50Iik7cmV0dXJuIGEuZ2V0QXN5bmMoIlBhcmVudCIpfSkpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBudWxsO2lmKCEoZSBpbnN0YW5jZW9mIG4uRGljdCkpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoIlBhcmVudCBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtyZXR1cm4gZS5nZXRBc3luYygiS2lkcyIpfSkpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBudWxsO2NvbnN0IG89W107bGV0IGM9ITE7Zm9yKGNvbnN0IHIgb2YgZSl7aWYoIShyIGluc3RhbmNlb2Ygbi5SZWYpKXRocm93IG5ldyBpLkZvcm1hdEVycm9yKCJLaWQgbXVzdCBiZSBhIHJlZmVyZW5jZS4iKTtpZigoMCxuLmlzUmVmc0VxdWFsKShyLHQpKXtjPSEwO2JyZWFrfW8ucHVzaChhLmZldGNoQXN5bmMocikudGhlbigoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2Ygbi5EaWN0KSl0aHJvdyBuZXcgaS5Gb3JtYXRFcnJvcigiS2lkIG5vZGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7ZS5oYXMoIkNvdW50Iik/cys9ZS5nZXQoIkNvdW50Iik6cysrfSkpKX1pZighYyl0aHJvdyBuZXcgaS5Gb3JtYXRFcnJvcigiS2lkIHJlZmVyZW5jZSBub3QgZm91bmQgaW4gcGFyZW50J3Mga2lkcy4iKTtyZXR1cm4gUHJvbWlzZS5hbGwobykudGhlbigoZnVuY3Rpb24oKXtyZXR1cm5bcyxyXX0pKX0pKX0odCkudGhlbigodD0+e2lmKCF0KXt0aGlzLnBhZ2VJbmRleENhY2hlLnB1dChlLHIpO3JldHVybiByfWNvbnN0W2EsaV09dDtyKz1hO3JldHVybiBuZXh0KGkpfSkpO3JldHVybiBuZXh0KGUpfWdldCBiYXNlVXJsKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiVVJJIik7aWYoZSBpbnN0YW5jZW9mIG4uRGljdCl7Y29uc3QgdD1lLmdldCgiQmFzZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3QgZT0oMCxpLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwpKHQsbnVsbCx7dHJ5Q29udmVydEVuY29kaW5nOiEwfSk7aWYoZSlyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiYmFzZVVybCIsZS5ocmVmKX19cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImJhc2VVcmwiLG51bGwpfXN0YXRpYyBwYXJzZURlc3REaWN0aW9uYXJ5KGUpe2NvbnN0IHQ9ZS5kZXN0RGljdDtpZighKHQgaW5zdGFuY2VvZiBuLkRpY3QpKXsoMCxpLndhcm4pKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBgZGVzdERpY3RgIG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO3JldHVybn1jb25zdCBhPWUucmVzdWx0T2JqO2lmKCJvYmplY3QiIT10eXBlb2YgYSl7KDAsaS53YXJuKSgicGFyc2VEZXN0RGljdGlvbmFyeTogYHJlc3VsdE9iamAgbXVzdCBiZSBhbiBvYmplY3QuIik7cmV0dXJufWNvbnN0IHM9ZS5kb2NCYXNlVXJsfHxudWxsLGM9ZS5kb2NBdHRhY2htZW50c3x8bnVsbDtsZXQgbCxoLHU9dC5nZXQoIkEiKTtpZighKHUgaW5zdGFuY2VvZiBuLkRpY3QpKWlmKHQuaGFzKCJEZXN0IikpdT10LmdldCgiRGVzdCIpO2Vsc2V7dT10LmdldCgiQUEiKTt1IGluc3RhbmNlb2Ygbi5EaWN0JiYodS5oYXMoIkQiKT91PXUuZ2V0KCJEIik6dS5oYXMoIlUiKSYmKHU9dS5nZXQoIlUiKSkpfWlmKHUgaW5zdGFuY2VvZiBuLkRpY3Qpe2NvbnN0IGU9dS5nZXQoIlMiKTtpZighKGUgaW5zdGFuY2VvZiBuLk5hbWUpKXsoMCxpLndhcm4pKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBJbnZhbGlkIHR5cGUgaW4gQWN0aW9uIGRpY3Rpb25hcnkuIik7cmV0dXJufWNvbnN0IHQ9ZS5uYW1lO3N3aXRjaCh0KXtjYXNlIlJlc2V0Rm9ybSI6Y29uc3QgZT11LmdldCgiRmxhZ3MiKSxzPTA9PSgxJigibnVtYmVyIj09dHlwZW9mIGU/ZTowKSksZD1bXSxmPVtdO2Zvcihjb25zdCBlIG9mIHUuZ2V0KCJGaWVsZHMiKXx8W10pZSBpbnN0YW5jZW9mIG4uUmVmP2YucHVzaChlLnRvU3RyaW5nKCkpOiJzdHJpbmciPT10eXBlb2YgZSYmZC5wdXNoKCgwLGkuc3RyaW5nVG9QREZTdHJpbmcpKGUpKTthLnJlc2V0Rm9ybT17ZmllbGRzOmQscmVmczpmLGluY2x1ZGU6c307YnJlYWs7Y2FzZSJVUkkiOmw9dS5nZXQoIlVSSSIpO2wgaW5zdGFuY2VvZiBuLk5hbWUmJihsPSIvIitsLm5hbWUpO2JyZWFrO2Nhc2UiR29UbyI6aD11LmdldCgiRCIpO2JyZWFrO2Nhc2UiTGF1bmNoIjpjYXNlIkdvVG9SIjpjb25zdCBnPXUuZ2V0KCJGIik7ZyBpbnN0YW5jZW9mIG4uRGljdD9sPWcuZ2V0KCJGIil8fG51bGw6InN0cmluZyI9PXR5cGVvZiBnJiYobD1nKTtsZXQgcD11LmdldCgiRCIpO2lmKHApe3AgaW5zdGFuY2VvZiBuLk5hbWUmJihwPXAubmFtZSk7aWYoInN0cmluZyI9PXR5cGVvZiBsKXtjb25zdCBlPWwuc3BsaXQoIiMiKVswXTsic3RyaW5nIj09dHlwZW9mIHA/bD1lKyIjIitwOkFycmF5LmlzQXJyYXkocCkmJihsPWUrIiMiK0pTT04uc3RyaW5naWZ5KHApKX19Y29uc3QgbT11LmdldCgiTmV3V2luZG93Iik7ImJvb2xlYW4iPT10eXBlb2YgbSYmKGEubmV3V2luZG93PW0pO2JyZWFrO2Nhc2UiR29Ub0UiOmNvbnN0IGI9dS5nZXQoIlQiKTtsZXQgeTtpZihjJiZiIGluc3RhbmNlb2Ygbi5EaWN0KXtjb25zdCBlPWIuZ2V0KCJSIiksdD1iLmdldCgiTiIpOygwLG4uaXNOYW1lKShlLCJDIikmJiJzdHJpbmciPT10eXBlb2YgdCYmKHk9Y1soMCxpLnN0cmluZ1RvUERGU3RyaW5nKSh0KV0pfXk/YS5hdHRhY2htZW50PXk6KDAsaS53YXJuKSgncGFyc2VEZXN0RGljdGlvbmFyeSAtIHVuaW1wbGVtZW50ZWQgIkdvVG9FIiBhY3Rpb24uJyk7YnJlYWs7Y2FzZSJOYW1lZCI6Y29uc3Qgdz11LmdldCgiTiIpO3cgaW5zdGFuY2VvZiBuLk5hbWUmJihhLmFjdGlvbj13Lm5hbWUpO2JyZWFrO2Nhc2UiU2V0T0NHU3RhdGUiOmNvbnN0IFM9dS5nZXQoIlN0YXRlIikseD11LmdldCgiUHJlc2VydmVSQiIpO2lmKCFBcnJheS5pc0FycmF5KFMpfHwwPT09Uy5sZW5ndGgpYnJlYWs7Y29uc3QgQz1bXTtmb3IoY29uc3QgZSBvZiBTKWlmKGUgaW5zdGFuY2VvZiBuLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOmNhc2UiVG9nZ2xlIjpDLnB1c2goZS5uYW1lKX1lbHNlIGUgaW5zdGFuY2VvZiBuLlJlZiYmQy5wdXNoKGUudG9TdHJpbmcoKSk7aWYoQy5sZW5ndGghPT1TLmxlbmd0aClicmVhazthLnNldE9DR1N0YXRlPXtzdGF0ZTpDLHByZXNlcnZlUkI6ImJvb2xlYW4iIT10eXBlb2YgeHx8eH07YnJlYWs7Y2FzZSJKYXZhU2NyaXB0Ijpjb25zdCBrPXUuZ2V0KCJKUyIpO2xldCB2O2sgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0/dj1rLmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgayYmKHY9ayk7Y29uc3QgRj12JiYoMCxyLnJlY292ZXJKc1VSTCkoKDAsaS5zdHJpbmdUb1BERlN0cmluZykodikpO2lmKEYpe2w9Ri51cmw7YS5uZXdXaW5kb3c9Ri5uZXdXaW5kb3c7YnJlYWt9ZGVmYXVsdDppZigiSmF2YVNjcmlwdCI9PT10fHwiU3VibWl0Rm9ybSI9PT10KWJyZWFrOygwLGkud2FybikoYHBhcnNlRGVzdERpY3Rpb25hcnkgLSB1bnN1cHBvcnRlZCBhY3Rpb246ICIke3R9Ii5gKX19ZWxzZSB0LmhhcygiRGVzdCIpJiYoaD10LmdldCgiRGVzdCIpKTtpZigic3RyaW5nIj09dHlwZW9mIGwpe2NvbnN0IGU9KDAsaS5jcmVhdGVWYWxpZEFic29sdXRlVXJsKShsLHMse2FkZERlZmF1bHRQcm90b2NvbDohMCx0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtlJiYoYS51cmw9ZS5ocmVmKTthLnVuc2FmZVVybD1sfWlmKGgpe2ggaW5zdGFuY2VvZiBuLk5hbWUmJihoPWgubmFtZSk7InN0cmluZyI9PXR5cGVvZiBoP2EuZGVzdD0oMCxpLnN0cmluZ1RvUERGU3RyaW5nKShoKTpBcnJheS5pc0FycmF5KGgpJiYoYS5kZXN0PWgpfX19dC5DYXRhbG9nPUNhdGFsb2d9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5OdW1iZXJUcmVlPXQuTmFtZVRyZWU9dm9pZCAwO3ZhciByPWEoNCksaT1hKDIpO2NsYXNzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuY29uc3RydWN0b3I9PT1OYW1lT3JOdW1iZXJUcmVlJiYoMCxpLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgTmFtZU9yTnVtYmVyVHJlZS4iKTt0aGlzLnJvb3Q9ZTt0aGlzLnhyZWY9dDt0aGlzLl90eXBlPWF9Z2V0QWxsKCl7Y29uc3QgZT1uZXcgTWFwO2lmKCF0aGlzLnJvb3QpcmV0dXJuIGU7Y29uc3QgdD10aGlzLnhyZWYsYT1uZXcgci5SZWZTZXQ7YS5wdXQodGhpcy5yb290KTtjb25zdCBuPVt0aGlzLnJvb3RdO2Zvcig7bi5sZW5ndGg+MDspe2NvbnN0IHM9dC5mZXRjaElmUmVmKG4uc2hpZnQoKSk7aWYoIShzIGluc3RhbmNlb2Ygci5EaWN0KSljb250aW51ZTtpZihzLmhhcygiS2lkcyIpKXtjb25zdCBlPXMuZ2V0KCJLaWRzIik7aWYoIUFycmF5LmlzQXJyYXkoZSkpY29udGludWU7Zm9yKGNvbnN0IHQgb2YgZSl7aWYoYS5oYXModCkpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoYER1cGxpY2F0ZSBlbnRyeSBpbiAiJHt0aGlzLl90eXBlfSIgdHJlZS5gKTtuLnB1c2godCk7YS5wdXQodCl9Y29udGludWV9Y29uc3Qgbz1zLmdldCh0aGlzLl90eXBlKTtpZihBcnJheS5pc0FycmF5KG8pKWZvcihsZXQgYT0wLHI9by5sZW5ndGg7YTxyO2ErPTIpZS5zZXQodC5mZXRjaElmUmVmKG9bYV0pLHQuZmV0Y2hJZlJlZihvW2ErMV0pKX1yZXR1cm4gZX1nZXQoZSl7aWYoIXRoaXMucm9vdClyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMueHJlZjtsZXQgYT10LmZldGNoSWZSZWYodGhpcy5yb290KSxyPTA7Zm9yKDthLmhhcygiS2lkcyIpOyl7aWYoKytyPjEwKXsoMCxpLndhcm4pKGBTZWFyY2ggZGVwdGggbGltaXQgcmVhY2hlZCBmb3IgIiR7dGhpcy5fdHlwZX0iIHRyZWUuYCk7cmV0dXJuIG51bGx9Y29uc3Qgbj1hLmdldCgiS2lkcyIpO2lmKCFBcnJheS5pc0FycmF5KG4pKXJldHVybiBudWxsO2xldCBzPTAsbz1uLmxlbmd0aC0xO2Zvcig7czw9bzspe2NvbnN0IHI9cytvPj4xLGk9dC5mZXRjaElmUmVmKG5bcl0pLGM9aS5nZXQoIkxpbWl0cyIpO2lmKGU8dC5mZXRjaElmUmVmKGNbMF0pKW89ci0xO2Vsc2V7aWYoIShlPnQuZmV0Y2hJZlJlZihjWzFdKSkpe2E9aTticmVha31zPXIrMX19aWYocz5vKXJldHVybiBudWxsfWNvbnN0IG49YS5nZXQodGhpcy5fdHlwZSk7aWYoQXJyYXkuaXNBcnJheShuKSl7bGV0IGE9MCxyPW4ubGVuZ3RoLTI7Zm9yKDthPD1yOyl7Y29uc3QgaT1hK3I+PjEscz1pKygxJmkpLG89dC5mZXRjaElmUmVmKG5bc10pO2lmKGU8bylyPXMtMjtlbHNle2lmKCEoZT5vKSlyZXR1cm4gdC5mZXRjaElmUmVmKG5bcysxXSk7YT1zKzJ9fX1yZXR1cm4gbnVsbH19dC5OYW1lVHJlZT1jbGFzcyBOYW1lVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk5hbWVzIil9fTt0Lk51bWJlclRyZWU9Y2xhc3MgTnVtYmVyVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk51bXMiKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuY2xlYXJHbG9iYWxDYWNoZXM9ZnVuY3Rpb24gY2xlYXJHbG9iYWxDYWNoZXMoKXsoMCxyLmNsZWFyUHJpbWl0aXZlQ2FjaGVzKSgpOygwLGkuY2xlYXJVbmljb2RlQ2FjaGVzKSgpfTt2YXIgcj1hKDQpLGk9YSg0MCl9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5GaWxlU3BlYz12b2lkIDA7dmFyIHI9YSgyKSxpPWEoNSksbj1hKDQpO2Z1bmN0aW9uIHBpY2tQbGF0Zm9ybUl0ZW0oZSl7cmV0dXJuIGUuaGFzKCJVRiIpP2UuZ2V0KCJVRiIpOmUuaGFzKCJGIik/ZS5nZXQoIkYiKTplLmhhcygiVW5peCIpP2UuZ2V0KCJVbml4Iik6ZS5oYXMoIk1hYyIpP2UuZ2V0KCJNYWMiKTplLmhhcygiRE9TIik/ZS5nZXQoIkRPUyIpOm51bGx9dC5GaWxlU3BlYz1jbGFzcyBGaWxlU3BlY3tjb25zdHJ1Y3RvcihlLHQpe2lmKGUgaW5zdGFuY2VvZiBuLkRpY3Qpe3RoaXMueHJlZj10O3RoaXMucm9vdD1lO2UuaGFzKCJGUyIpJiYodGhpcy5mcz1lLmdldCgiRlMiKSk7dGhpcy5kZXNjcmlwdGlvbj1lLmhhcygiRGVzYyIpPygwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJEZXNjIikpOiIiO2UuaGFzKCJSRiIpJiYoMCxyLndhcm4pKCJSZWxhdGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKTt0aGlzLmNvbnRlbnRBdmFpbGFibGU9ITA7aWYoIWUuaGFzKCJFRiIpKXt0aGlzLmNvbnRlbnRBdmFpbGFibGU9ITE7KDAsci53YXJuKSgiTm9uLWVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKX19fWdldCBmaWxlbmFtZSgpe2lmKCF0aGlzLl9maWxlbmFtZSYmdGhpcy5yb290KXtjb25zdCBlPXBpY2tQbGF0Zm9ybUl0ZW0odGhpcy5yb290KXx8InVubmFtZWQiO3RoaXMuX2ZpbGVuYW1lPSgwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUpLnJlcGxhY2VBbGwoIlxcXFwiLCJcXCIpLnJlcGxhY2VBbGwoIlxcLyIsIi8iKS5yZXBsYWNlQWxsKCJcXCIsIi8iKX1yZXR1cm4gdGhpcy5fZmlsZW5hbWV9Z2V0IGNvbnRlbnQoKXtpZighdGhpcy5jb250ZW50QXZhaWxhYmxlKXJldHVybiBudWxsOyF0aGlzLmNvbnRlbnRSZWYmJnRoaXMucm9vdCYmKHRoaXMuY29udGVudFJlZj1waWNrUGxhdGZvcm1JdGVtKHRoaXMucm9vdC5nZXQoIkVGIikpKTtsZXQgZT1udWxsO2lmKHRoaXMuY29udGVudFJlZil7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2hJZlJlZih0aGlzLmNvbnRlbnRSZWYpO3QgaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0/ZT10LmdldEJ5dGVzKCk6KDAsci53YXJuKSgiRW1iZWRkZWQgZmlsZSBzcGVjaWZpY2F0aW9uIHBvaW50cyB0byBub24tZXhpc3RpbmcvaW52YWxpZCBjb250ZW50Iil9ZWxzZSgwLHIud2FybikoIkVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBoYXZlIGEgY29udGVudCIpO3JldHVybiBlfWdldCBzZXJpYWxpemFibGUoKXtyZXR1cm57ZmlsZW5hbWU6dGhpcy5maWxlbmFtZSxjb250ZW50OnRoaXMuY29udGVudH19fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk1ldGFkYXRhUGFyc2VyPXZvaWQgMDt2YXIgcj1hKDY3KTt0Lk1ldGFkYXRhUGFyc2VyPWNsYXNzIE1ldGFkYXRhUGFyc2Vye2NvbnN0cnVjdG9yKGUpe2U9dGhpcy5fcmVwYWlyKGUpO2NvbnN0IHQ9bmV3IHIuU2ltcGxlWE1MUGFyc2VyKHtsb3dlckNhc2VOYW1lOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpO3RoaXMuX21ldGFkYXRhTWFwPW5ldyBNYXA7dGhpcy5fZGF0YT1lO3QmJnRoaXMuX3BhcnNlKHQpfV9yZXBhaXIoZSl7cmV0dXJuIGUucmVwbGFjZSgvXltePF0rLywiIikucmVwbGFjZUFsbCgvPlxcMzc2XFwzNzcoW148XSspL2csKGZ1bmN0aW9uKGUsdCl7Y29uc3QgYT10LnJlcGxhY2VBbGwoL1xcKFswLTNdKShbMC03XSkoWzAtN10pL2csKGZ1bmN0aW9uKGUsdCxhLHIpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDY0KnQrOCphKzEqcil9KSkucmVwbGFjZUFsbCgvJihhbXB8YXBvc3xndHxsdHxxdW90KTsvZywoZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlImFwb3MiOnJldHVybiInIjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJsdCI6cmV0dXJuIjwiO2Nhc2UicXVvdCI6cmV0dXJuJyInfXRocm93IG5ldyBFcnJvcihgX3JlcGFpcjogJHt0fSBpc24ndCBkZWZpbmVkLmApfSkpLHI9WyI+Il07Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSs9Mil7Y29uc3QgdD0yNTYqYS5jaGFyQ29kZUF0KGUpK2EuY2hhckNvZGVBdChlKzEpO3Q+PTMyJiZ0PDEyNyYmNjAhPT10JiY2MiE9PXQmJjM4IT09dD9yLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSk6ci5wdXNoKCImI3giKyg2NTUzNit0KS50b1N0cmluZygxNikuc3Vic3RyaW5nKDEpKyI7Iil9cmV0dXJuIHIuam9pbigiIil9KSl9X2dldFNlcXVlbmNlKGUpe2NvbnN0IHQ9ZS5ub2RlTmFtZTtyZXR1cm4icmRmOmJhZyIhPT10JiYicmRmOnNlcSIhPT10JiYicmRmOmFsdCIhPT10P251bGw6ZS5jaGlsZE5vZGVzLmZpbHRlcigoZT0+InJkZjpsaSI9PT1lLm5vZGVOYW1lKSl9X3BhcnNlQXJyYXkoZSl7aWYoIWUuaGFzQ2hpbGROb2RlcygpKXJldHVybjtjb25zdFt0XT1lLmNoaWxkTm9kZXMsYT10aGlzLl9nZXRTZXF1ZW5jZSh0KXx8W107dGhpcy5fbWV0YWRhdGFNYXAuc2V0KGUubm9kZU5hbWUsYS5tYXAoKGU9PmUudGV4dENvbnRlbnQudHJpbSgpKSkpfV9wYXJzZShlKXtsZXQgdD1lLmRvY3VtZW50RWxlbWVudDtpZigicmRmOnJkZiIhPT10Lm5vZGVOYW1lKXt0PXQuZmlyc3RDaGlsZDtmb3IoO3QmJiJyZGY6cmRmIiE9PXQubm9kZU5hbWU7KXQ9dC5uZXh0U2libGluZ31pZih0JiYicmRmOnJkZiI9PT10Lm5vZGVOYW1lJiZ0Lmhhc0NoaWxkTm9kZXMoKSlmb3IoY29uc3QgZSBvZiB0LmNoaWxkTm9kZXMpaWYoInJkZjpkZXNjcmlwdGlvbiI9PT1lLm5vZGVOYW1lKWZvcihjb25zdCB0IG9mIGUuY2hpbGROb2Rlcyl7Y29uc3QgZT10Lm5vZGVOYW1lO3N3aXRjaChlKXtjYXNlIiN0ZXh0Ijpjb250aW51ZTtjYXNlImRjOmNyZWF0b3IiOmNhc2UiZGM6c3ViamVjdCI6dGhpcy5fcGFyc2VBcnJheSh0KTtjb250aW51ZX10aGlzLl9tZXRhZGF0YU1hcC5zZXQoZSx0LnRleHRDb250ZW50LnRyaW0oKSl9fWdldCBzZXJpYWxpemFibGUoKXtyZXR1cm57cGFyc2VkRGF0YTp0aGlzLl9tZXRhZGF0YU1hcCxyYXdEYXRhOnRoaXMuX2RhdGF9fX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5TdHJ1Y3RUcmVlUm9vdD10LlN0cnVjdFRyZWVQYWdlPXZvaWQgMDt2YXIgcj1hKDQpLGk9YSgyKSxuPWEoNzEpO2NvbnN0IHM9IlBBR0VfQ09OVEVOVCIsbz0iU1RSRUFNX0NPTlRFTlQiLGM9Ik9CSkVDVCIsbD0iRUxFTUVOVCI7dC5TdHJ1Y3RUcmVlUm9vdD1jbGFzcyBTdHJ1Y3RUcmVlUm9vdHtjb25zdHJ1Y3RvcihlKXt0aGlzLmRpY3Q9ZTt0aGlzLnJvbGVNYXA9bmV3IE1hcH1pbml0KCl7dGhpcy5yZWFkUm9sZU1hcCgpfXJlYWRSb2xlTWFwKCl7Y29uc3QgZT10aGlzLmRpY3QuZ2V0KCJSb2xlTWFwIik7ZSBpbnN0YW5jZW9mIHIuRGljdCYmZS5mb3JFYWNoKCgoZSx0KT0+e3QgaW5zdGFuY2VvZiByLk5hbWUmJnRoaXMucm9sZU1hcC5zZXQoZSx0Lm5hbWUpfSkpfX07Y2xhc3MgU3RydWN0RWxlbWVudE5vZGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnRyZWU9ZTt0aGlzLmRpY3Q9dDt0aGlzLmtpZHM9W107dGhpcy5wYXJzZUtpZHMoKX1nZXQgcm9sZSgpe2NvbnN0IGU9dGhpcy5kaWN0LmdldCgiUyIpLHQ9ZSBpbnN0YW5jZW9mIHIuTmFtZT9lLm5hbWU6IiIse3Jvb3Q6YX09dGhpcy50cmVlO3JldHVybiBhLnJvbGVNYXAuaGFzKHQpP2Eucm9sZU1hcC5nZXQodCk6dH1wYXJzZUtpZHMoKXtsZXQgZT1udWxsO2NvbnN0IHQ9dGhpcy5kaWN0LmdldFJhdygiUGciKTt0IGluc3RhbmNlb2Ygci5SZWYmJihlPXQudG9TdHJpbmcoKSk7Y29uc3QgYT10aGlzLmRpY3QuZ2V0KCJLIik7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IoY29uc3QgdCBvZiBhKXtjb25zdCBhPXRoaXMucGFyc2VLaWQoZSx0KTthJiZ0aGlzLmtpZHMucHVzaChhKX1lbHNle2NvbnN0IHQ9dGhpcy5wYXJzZUtpZChlLGEpO3QmJnRoaXMua2lkcy5wdXNoKHQpfX1wYXJzZUtpZChlLHQpe2lmKE51bWJlci5pc0ludGVnZXIodCkpcmV0dXJuIHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWU/bnVsbDpuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpzLG1jaWQ6dCxwYWdlT2JqSWQ6ZX0pO2xldCBhPW51bGw7dCBpbnN0YW5jZW9mIHIuUmVmP2E9dGhpcy5kaWN0LnhyZWYuZmV0Y2godCk6dCBpbnN0YW5jZW9mIHIuRGljdCYmKGE9dCk7aWYoIWEpcmV0dXJuIG51bGw7Y29uc3QgaT1hLmdldFJhdygiUGciKTtpIGluc3RhbmNlb2Ygci5SZWYmJihlPWkudG9TdHJpbmcoKSk7Y29uc3Qgbj1hLmdldCgiVHlwZSIpaW5zdGFuY2VvZiByLk5hbWU/YS5nZXQoIlR5cGUiKS5uYW1lOm51bGw7cmV0dXJuIk1DUiI9PT1uP3RoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWU/bnVsbDpuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpvLHJlZk9iaklkOmEuZ2V0UmF3KCJTdG0iKWluc3RhbmNlb2Ygci5SZWY/YS5nZXRSYXcoIlN0bSIpLnRvU3RyaW5nKCk6bnVsbCxwYWdlT2JqSWQ6ZSxtY2lkOmEuZ2V0KCJNQ0lEIil9KToiT0JKUiI9PT1uP3RoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWU/bnVsbDpuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpjLHJlZk9iaklkOmEuZ2V0UmF3KCJPYmoiKWluc3RhbmNlb2Ygci5SZWY/YS5nZXRSYXcoIk9iaiIpLnRvU3RyaW5nKCk6bnVsbCxwYWdlT2JqSWQ6ZX0pOm5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOmwsZGljdDphfSl9fWNsYXNzIFN0cnVjdEVsZW1lbnR7Y29uc3RydWN0b3Ioe3R5cGU6ZSxkaWN0OnQ9bnVsbCxtY2lkOmE9bnVsbCxwYWdlT2JqSWQ6cj1udWxsLHJlZk9iaklkOmk9bnVsbH0pe3RoaXMudHlwZT1lO3RoaXMuZGljdD10O3RoaXMubWNpZD1hO3RoaXMucGFnZU9iaklkPXI7dGhpcy5yZWZPYmpJZD1pO3RoaXMucGFyZW50Tm9kZT1udWxsfX10LlN0cnVjdFRyZWVQYWdlPWNsYXNzIFN0cnVjdFRyZWVQYWdle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5yb290PWU7dGhpcy5yb290RGljdD1lP2UuZGljdDpudWxsO3RoaXMucGFnZURpY3Q9dDt0aGlzLm5vZGVzPVtdfXBhcnNlKCl7aWYoIXRoaXMucm9vdHx8IXRoaXMucm9vdERpY3QpcmV0dXJuO2NvbnN0IGU9dGhpcy5yb290RGljdC5nZXQoIlBhcmVudFRyZWUiKTtpZighZSlyZXR1cm47Y29uc3QgdD10aGlzLnBhZ2VEaWN0LmdldCgiU3RydWN0UGFyZW50cyIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpKXJldHVybjtjb25zdCBhPW5ldyBuLk51bWJlclRyZWUoZSx0aGlzLnJvb3REaWN0LnhyZWYpLmdldCh0KTtpZighQXJyYXkuaXNBcnJheShhKSlyZXR1cm47Y29uc3QgaT1uZXcgTWFwO2Zvcihjb25zdCBlIG9mIGEpZSBpbnN0YW5jZW9mIHIuUmVmJiZ0aGlzLmFkZE5vZGUodGhpcy5yb290RGljdC54cmVmLmZldGNoKGUpLGkpfWFkZE5vZGUoZSx0LGE9MCl7aWYoYT40MCl7KDAsaS53YXJuKSgiU3RydWN0VHJlZSBNQVhfREVQVEggcmVhY2hlZC4iKTtyZXR1cm4gbnVsbH1pZih0LmhhcyhlKSlyZXR1cm4gdC5nZXQoZSk7Y29uc3Qgbj1uZXcgU3RydWN0RWxlbWVudE5vZGUodGhpcyxlKTt0LnNldChlLG4pO2NvbnN0IHM9ZS5nZXQoIlAiKTtpZighc3x8KDAsci5pc05hbWUpKHMuZ2V0KCJUeXBlIiksIlN0cnVjdFRyZWVSb290Iikpe3RoaXMuYWRkVG9wTGV2ZWxOb2RlKGUsbil8fHQuZGVsZXRlKGUpO3JldHVybiBufWNvbnN0IG89dGhpcy5hZGROb2RlKHMsdCxhKzEpO2lmKCFvKXJldHVybiBuO2xldCBjPSExO2Zvcihjb25zdCB0IG9mIG8ua2lkcylpZih0LnR5cGU9PT1sJiZ0LmRpY3Q9PT1lKXt0LnBhcmVudE5vZGU9bjtjPSEwfWN8fHQuZGVsZXRlKGUpO3JldHVybiBufWFkZFRvcExldmVsTm9kZShlLHQpe2NvbnN0IGE9dGhpcy5yb290RGljdC5nZXQoIksiKTtpZighYSlyZXR1cm4hMTtpZihhIGluc3RhbmNlb2Ygci5EaWN0KXtpZihhLm9iaklkIT09ZS5vYmpJZClyZXR1cm4hMTt0aGlzLm5vZGVzWzBdPXQ7cmV0dXJuITB9aWYoIUFycmF5LmlzQXJyYXkoYSkpcmV0dXJuITA7bGV0IGk9ITE7Zm9yKGxldCByPTA7cjxhLmxlbmd0aDtyKyspe2NvbnN0IG49YVtyXTtpZihuPy50b1N0cmluZygpPT09ZS5vYmpJZCl7dGhpcy5ub2Rlc1tyXT10O2k9ITB9fXJldHVybiBpfWdldCBzZXJpYWxpemFibGUoKXtmdW5jdGlvbiBub2RlVG9TZXJpYWxpemFibGUoZSx0LGE9MCl7aWYoYT40MCl7KDAsaS53YXJuKSgiU3RydWN0VHJlZSB0b28gZGVlcCB0byBiZSBmdWxseSBzZXJpYWxpemVkLiIpO3JldHVybn1jb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCk7ci5yb2xlPWUucm9sZTtyLmNoaWxkcmVuPVtdO3QuY2hpbGRyZW4ucHVzaChyKTtjb25zdCBuPWUuZGljdC5nZXQoIkFsdCIpOyJzdHJpbmciPT10eXBlb2YgbiYmKHIuYWx0PSgwLGkuc3RyaW5nVG9QREZTdHJpbmcpKG4pKTtjb25zdCBoPWUuZGljdC5nZXQoIkxhbmciKTsic3RyaW5nIj09dHlwZW9mIGgmJihyLmxhbmc9KDAsaS5zdHJpbmdUb1BERlN0cmluZykoaCkpO2Zvcihjb25zdCB0IG9mIGUua2lkcyl7Y29uc3QgZT10LnR5cGU9PT1sP3QucGFyZW50Tm9kZTpudWxsO2U/bm9kZVRvU2VyaWFsaXphYmxlKGUscixhKzEpOnQudHlwZT09PXN8fHQudHlwZT09PW8/ci5jaGlsZHJlbi5wdXNoKHt0eXBlOiJjb250ZW50IixpZDpgcCR7dC5wYWdlT2JqSWR9X21jJHt0Lm1jaWR9YH0pOnQudHlwZT09PWMmJnIuY2hpbGRyZW4ucHVzaCh7dHlwZToib2JqZWN0IixpZDp0LnJlZk9iaklkfSl9fWNvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtlLmNoaWxkcmVuPVtdO2Uucm9sZT0iUm9vdCI7Zm9yKGNvbnN0IHQgb2YgdGhpcy5ub2Rlcyl0JiZub2RlVG9TZXJpYWxpemFibGUodCxlKTtyZXR1cm4gZX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuT2JqZWN0TG9hZGVyPXZvaWQgMDt2YXIgcj1hKDQpLGk9YSg1KSxuPWEoMykscz1hKDIpO2Z1bmN0aW9uIGFkZENoaWxkcmVuKGUsdCl7aWYoZSBpbnN0YW5jZW9mIHIuRGljdCllPWUuZ2V0UmF3VmFsdWVzKCk7ZWxzZSBpZihlIGluc3RhbmNlb2YgaS5CYXNlU3RyZWFtKWU9ZS5kaWN0LmdldFJhd1ZhbHVlcygpO2Vsc2UgaWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuO2Zvcihjb25zdCBuIG9mIGUpKChhPW4paW5zdGFuY2VvZiByLlJlZnx8YSBpbnN0YW5jZW9mIHIuRGljdHx8YSBpbnN0YW5jZW9mIGkuQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheShhKSkmJnQucHVzaChuKTt2YXIgYX10Lk9iamVjdExvYWRlcj1jbGFzcyBPYmplY3RMb2FkZXJ7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuZGljdD1lO3RoaXMua2V5cz10O3RoaXMueHJlZj1hO3RoaXMucmVmU2V0PW51bGx9YXN5bmMgbG9hZCgpe2lmKHRoaXMueHJlZi5zdHJlYW0uaXNEYXRhTG9hZGVkKXJldHVybjtjb25zdHtrZXlzOmUsZGljdDp0fT10aGlzO3RoaXMucmVmU2V0PW5ldyByLlJlZlNldDtjb25zdCBhPVtdO2Zvcihjb25zdCByIG9mIGUpe2NvbnN0IGU9dC5nZXRSYXcocik7dm9pZCAwIT09ZSYmYS5wdXNoKGUpfXJldHVybiB0aGlzLl93YWxrKGEpfWFzeW5jIF93YWxrKGUpe2NvbnN0IHQ9W10sYT1bXTtmb3IoO2UubGVuZ3RoOyl7bGV0IG89ZS5wb3AoKTtpZihvIGluc3RhbmNlb2Ygci5SZWYpe2lmKHRoaXMucmVmU2V0LmhhcyhvKSljb250aW51ZTt0cnl7dGhpcy5yZWZTZXQucHV0KG8pO289dGhpcy54cmVmLmZldGNoKG8pfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIG4uTWlzc2luZ0RhdGFFeGNlcHRpb24pKXsoMCxzLndhcm4pKGBPYmplY3RMb2FkZXIuX3dhbGsgLSByZXF1ZXN0aW5nIGFsbCBkYXRhOiAiJHtlfSIuYCk7dGhpcy5yZWZTZXQ9bnVsbDtjb25zdHttYW5hZ2VyOnR9PXRoaXMueHJlZi5zdHJlYW07cmV0dXJuIHQucmVxdWVzdEFsbENodW5rcygpfXQucHVzaChvKTthLnB1c2goe2JlZ2luOmUuYmVnaW4sZW5kOmUuZW5kfSl9fWlmKG8gaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0pe2NvbnN0IGU9by5nZXRCYXNlU3RyZWFtcygpO2lmKGUpe2xldCByPSExO2Zvcihjb25zdCB0IG9mIGUpaWYoIXQuaXNEYXRhTG9hZGVkKXtyPSEwO2EucHVzaCh7YmVnaW46dC5zdGFydCxlbmQ6dC5lbmR9KX1yJiZ0LnB1c2gobyl9fWFkZENoaWxkcmVuKG8sZSl9aWYoYS5sZW5ndGgpe2F3YWl0IHRoaXMueHJlZi5zdHJlYW0ubWFuYWdlci5yZXF1ZXN0UmFuZ2VzKGEpO2Zvcihjb25zdCBlIG9mIHQpZSBpbnN0YW5jZW9mIHIuUmVmJiZ0aGlzLnJlZlNldC5yZW1vdmUoZSk7cmV0dXJuIHRoaXMuX3dhbGsodCl9dGhpcy5yZWZTZXQ9bnVsbH19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWEZBRmFjdG9yeT12b2lkIDA7dmFyIHI9YSg3OCksaT1hKDgyKSxuPWEoODgpLHM9YSg4Niksbz1hKDc5KSxjPWEoMiksbD1hKDg5KSxoPWEoOTkpO2NsYXNzIFhGQUZhY3Rvcnl7Y29uc3RydWN0b3IoZSl7dHJ5e3RoaXMucm9vdD0obmV3IGwuWEZBUGFyc2VyKS5wYXJzZShYRkFGYWN0b3J5Ll9jcmVhdGVEb2N1bWVudChlKSk7Y29uc3QgdD1uZXcgaS5CaW5kZXIodGhpcy5yb290KTt0aGlzLmZvcm09dC5iaW5kKCk7dGhpcy5kYXRhSGFuZGxlcj1uZXcgbi5EYXRhSGFuZGxlcih0aGlzLnJvb3QsdC5nZXREYXRhKCkpO3RoaXMuZm9ybVtyLiRnbG9iYWxEYXRhXS50ZW1wbGF0ZT10aGlzLmZvcm19Y2F0Y2goZSl7KDAsYy53YXJuKShgWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHBhcnNpbmcgYW5kIGJpbmRpbmc6ICR7ZX1gKX19aXNWYWxpZCgpe3JldHVybiB0aGlzLnJvb3QmJnRoaXMuZm9ybX1fY3JlYXRlUGFnZXNIZWxwZXIoKXtjb25zdCBlPXRoaXMuZm9ybVtyLiR0b1BhZ2VzXSgpO3JldHVybiBuZXcgUHJvbWlzZSgoKHQsYSk9Pntjb25zdCBuZXh0SXRlcmF0aW9uPSgpPT57dHJ5e2NvbnN0IGE9ZS5uZXh0KCk7YS5kb25lP3QoYS52YWx1ZSk6c2V0VGltZW91dChuZXh0SXRlcmF0aW9uLDApfWNhdGNoKGUpe2EoZSl9fTtzZXRUaW1lb3V0KG5leHRJdGVyYXRpb24sMCl9KSl9YXN5bmMgX2NyZWF0ZVBhZ2VzKCl7dHJ5e3RoaXMucGFnZXM9YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXNIZWxwZXIoKTt0aGlzLmRpbXM9dGhpcy5wYWdlcy5jaGlsZHJlbi5tYXAoKGU9Pntjb25zdHt3aWR0aDp0LGhlaWdodDphfT1lLmF0dHJpYnV0ZXMuc3R5bGU7cmV0dXJuWzAsMCxwYXJzZUludCh0KSxwYXJzZUludChhKV19KSl9Y2F0Y2goZSl7KDAsYy53YXJuKShgWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGxheW91dDogJHtlfWApfX1nZXRCb3VuZGluZ0JveChlKXtyZXR1cm4gdGhpcy5kaW1zW2VdfWFzeW5jIGdldE51bVBhZ2VzKCl7dGhpcy5wYWdlc3x8YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXMoKTtyZXR1cm4gdGhpcy5kaW1zLmxlbmd0aH1zZXRJbWFnZXMoZSl7dGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLmltYWdlcz1lfXNldEZvbnRzKGUpe3RoaXMuZm9ybVtyLiRnbG9iYWxEYXRhXS5mb250RmluZGVyPW5ldyBzLkZvbnRGaW5kZXIoZSk7Y29uc3QgdD1bXTtmb3IobGV0IGUgb2YgdGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLnVzZWRUeXBlZmFjZXMpe2U9KDAsby5zdHJpcFF1b3RlcykoZSk7dGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLmZvbnRGaW5kZXIuZmluZChlKXx8dC5wdXNoKGUpfXJldHVybiB0Lmxlbmd0aD4wP3Q6bnVsbH1hcHBlbmRGb250cyhlLHQpe3RoaXMuZm9ybVtyLiRnbG9iYWxEYXRhXS5mb250RmluZGVyLmFkZChlLHQpfWFzeW5jIGdldFBhZ2VzKCl7dGhpcy5wYWdlc3x8YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXMoKTtjb25zdCBlPXRoaXMucGFnZXM7dGhpcy5wYWdlcz1udWxsO3JldHVybiBlfXNlcmlhbGl6ZURhdGEoZSl7cmV0dXJuIHRoaXMuZGF0YUhhbmRsZXIuc2VyaWFsaXplKGUpfXN0YXRpYyBfY3JlYXRlRG9jdW1lbnQoZSl7cmV0dXJuIGVbIi94ZHA6eGRwIl0/T2JqZWN0LnZhbHVlcyhlKS5qb2luKCIiKTplWyJ4ZHA6eGRwIl19c3RhdGljIGdldFJpY2hUZXh0QXNIdG1sKGUpe2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e2xldCB0PW5ldyBsLlhGQVBhcnNlcihoLlhodG1sTmFtZXNwYWNlLCEwKS5wYXJzZShlKTtpZighWyJib2R5IiwieGh0bWwiXS5pbmNsdWRlcyh0W3IuJG5vZGVOYW1lXSkpe2NvbnN0IGU9aC5YaHRtbE5hbWVzcGFjZS5ib2R5KHt9KTtlW3IuJGFwcGVuZENoaWxkXSh0KTt0PWV9Y29uc3QgYT10W3IuJHRvSFRNTF0oKTtpZighYS5zdWNjZXNzKXJldHVybiBudWxsO2NvbnN0e2h0bWw6aX09YSx7YXR0cmlidXRlczpufT1pO2lmKG4pe24uY2xhc3MmJihuLmNsYXNzPW4uY2xhc3MuZmlsdGVyKChlPT4hZS5zdGFydHNXaXRoKCJ4ZmEiKSkpKTtuLmRpcj0iYXV0byJ9cmV0dXJue2h0bWw6aSxzdHI6dFtyLiR0ZXh0XSgpfX1jYXRjaChlKXsoMCxjLndhcm4pKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBvZiByaWNoIHRleHQ6ICR7ZX1gKX1yZXR1cm4gbnVsbH19dC5YRkFGYWN0b3J5PVhGQUZhY3Rvcnl9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YbWxPYmplY3Q9dC5YRkFPYmplY3RBcnJheT10LlhGQU9iamVjdD10LlhGQUF0dHJpYnV0ZT10LlN0cmluZ09iamVjdD10Lk9wdGlvbk9iamVjdD10Lk9wdGlvbjEwPXQuT3B0aW9uMDE9dC5JbnRlZ2VyT2JqZWN0PXQuQ29udGVudE9iamVjdD10LiR1aWQ9dC4kdG9TdHlsZT10LiR0b1N0cmluZz10LiR0b1BhZ2VzPXQuJHRvSFRNTD10LiR0ZXh0PXQuJHRhYkluZGV4PXQuJHNldFZhbHVlPXQuJHNldFNldEF0dHJpYnV0ZXM9dC4kc2V0SWQ9dC4kc2VhcmNoTm9kZT10LiRyb290PXQuJHJlc29sdmVQcm90b3R5cGVzPXQuJHJlbW92ZUNoaWxkPXQuJHB1c2hQYXJhPXQuJHB1c2hHbHlwaHM9dC4kcG9wUGFyYT10LiRvblRleHQ9dC4kb25DaGlsZENoZWNrPXQuJG9uQ2hpbGQ9dC4kbnNBdHRyaWJ1dGVzPXQuJG5vZGVOYW1lPXQuJG5hbWVzcGFjZUlkPXQuJGlzVXNhYmxlPXQuJGlzVHJhbnNwYXJlbnQ9dC4kaXNUaGVyZU1vcmVXaWR0aD10LiRpc1NwbGl0dGFibGU9dC4kaXNOc0Fnbm9zdGljPXQuJGlzRGVzY2VuZGVudD10LiRpc0RhdGFWYWx1ZT10LiRpc0NEQVRBWG1sPXQuJGlzQmluZGFibGU9dC4kaW5zZXJ0QXQ9dC4kaW5kZXhPZj10LiRpZHM9dC4kaGFzU2V0dGFibGVWYWx1ZT10LiRnbG9iYWxEYXRhPXQuJGdldFRlbXBsYXRlUm9vdD10LiRnZXRTdWJmb3JtUGFyZW50PXQuJGdldFJlYWxDaGlsZHJlbkJ5TmFtZUl0PXQuJGdldFBhcmVudD10LiRnZXROZXh0UGFnZT10LiRnZXRFeHRyYT10LiRnZXREYXRhVmFsdWU9dC4kZ2V0Q29udGFpbmVkQ2hpbGRyZW49dC4kZ2V0Q2hpbGRyZW5CeU5hbWVJdD10LiRnZXRDaGlsZHJlbkJ5TmFtZT10LiRnZXRDaGlsZHJlbkJ5Q2xhc3M9dC4kZ2V0Q2hpbGRyZW49dC4kZ2V0QXZhaWxhYmxlU3BhY2U9dC4kZ2V0QXR0cmlidXRlcz10LiRnZXRBdHRyaWJ1dGVJdD10LiRmbHVzaEhUTUw9dC4kZmluYWxpemU9dC4kZXh0cmE9dC4kZHVtcD10LiRkYXRhPXQuJGNvbnRlbnQ9dC4kY29uc3VtZWQ9dC4kY2xvbmU9dC4kY2xlYW51cD10LiRjbGVhblBhZ2U9dC4kY2xlYW49dC4kY2hpbGRyZW5Ub0hUTUw9dC4kYXBwZW5kQ2hpbGQ9dC4kYWRkSFRNTD10LiRhY2NlcHRXaGl0ZXNwYWNlPXZvaWQgMDt2YXIgcj1hKDc5KSxpPWEoMiksbj1hKDMpLHM9YSg4MCksbz1hKDgxKTtjb25zdCBjPVN5bWJvbCgpO3QuJGFjY2VwdFdoaXRlc3BhY2U9Yztjb25zdCBsPVN5bWJvbCgpO3QuJGFkZEhUTUw9bDtjb25zdCBoPVN5bWJvbCgpO3QuJGFwcGVuZENoaWxkPWg7Y29uc3QgdT1TeW1ib2woKTt0LiRjaGlsZHJlblRvSFRNTD11O2NvbnN0IGQ9U3ltYm9sKCk7dC4kY2xlYW49ZDtjb25zdCBmPVN5bWJvbCgpO3QuJGNsZWFuUGFnZT1mO2NvbnN0IGc9U3ltYm9sKCk7dC4kY2xlYW51cD1nO2NvbnN0IHA9U3ltYm9sKCk7dC4kY2xvbmU9cDtjb25zdCBtPVN5bWJvbCgpO3QuJGNvbnN1bWVkPW07Y29uc3QgYj1TeW1ib2woImNvbnRlbnQiKTt0LiRjb250ZW50PWI7Y29uc3QgeT1TeW1ib2woImRhdGEiKTt0LiRkYXRhPXk7Y29uc3Qgdz1TeW1ib2woKTt0LiRkdW1wPXc7Y29uc3QgUz1TeW1ib2woImV4dHJhIik7dC4kZXh0cmE9Uztjb25zdCB4PVN5bWJvbCgpO3QuJGZpbmFsaXplPXg7Y29uc3QgQz1TeW1ib2woKTt0LiRmbHVzaEhUTUw9Qztjb25zdCBrPVN5bWJvbCgpO3QuJGdldEF0dHJpYnV0ZUl0PWs7Y29uc3Qgdj1TeW1ib2woKTt0LiRnZXRBdHRyaWJ1dGVzPXY7Y29uc3QgRj1TeW1ib2woKTt0LiRnZXRBdmFpbGFibGVTcGFjZT1GO2NvbnN0IE89U3ltYm9sKCk7dC4kZ2V0Q2hpbGRyZW5CeUNsYXNzPU87Y29uc3QgVD1TeW1ib2woKTt0LiRnZXRDaGlsZHJlbkJ5TmFtZT1UO2NvbnN0IE09U3ltYm9sKCk7dC4kZ2V0Q2hpbGRyZW5CeU5hbWVJdD1NO2NvbnN0IEU9U3ltYm9sKCk7dC4kZ2V0RGF0YVZhbHVlPUU7Y29uc3QgRD1TeW1ib2woKTt0LiRnZXRFeHRyYT1EO2NvbnN0IE49U3ltYm9sKCk7dC4kZ2V0UmVhbENoaWxkcmVuQnlOYW1lSXQ9Tjtjb25zdCBSPVN5bWJvbCgpO3QuJGdldENoaWxkcmVuPVI7Y29uc3QgTD1TeW1ib2woKTt0LiRnZXRDb250YWluZWRDaGlsZHJlbj1MO2NvbnN0IF89U3ltYm9sKCk7dC4kZ2V0TmV4dFBhZ2U9Xztjb25zdCAkPVN5bWJvbCgpO3QuJGdldFN1YmZvcm1QYXJlbnQ9JDtjb25zdCBqPVN5bWJvbCgpO3QuJGdldFBhcmVudD1qO2NvbnN0IFU9U3ltYm9sKCk7dC4kZ2V0VGVtcGxhdGVSb290PVU7Y29uc3QgWD1TeW1ib2woKTt0LiRnbG9iYWxEYXRhPVg7Y29uc3QgSD1TeW1ib2woKTt0LiRoYXNTZXR0YWJsZVZhbHVlPUg7Y29uc3QgcT1TeW1ib2woKTt0LiRpZHM9cTtjb25zdCB6PVN5bWJvbCgpO3QuJGluZGV4T2Y9ejtjb25zdCBXPVN5bWJvbCgpO3QuJGluc2VydEF0PVc7Y29uc3QgRz1TeW1ib2woKTt0LiRpc0NEQVRBWG1sPUc7Y29uc3QgVj1TeW1ib2woKTt0LiRpc0JpbmRhYmxlPVY7Y29uc3QgSz1TeW1ib2woKTt0LiRpc0RhdGFWYWx1ZT1LO2NvbnN0IEo9U3ltYm9sKCk7dC4kaXNEZXNjZW5kZW50PUo7Y29uc3QgWT1TeW1ib2woKTt0LiRpc05zQWdub3N0aWM9WTtjb25zdCBaPVN5bWJvbCgpO3QuJGlzU3BsaXR0YWJsZT1aO2NvbnN0IFE9U3ltYm9sKCk7dC4kaXNUaGVyZU1vcmVXaWR0aD1RO2NvbnN0IGVlPVN5bWJvbCgpO3QuJGlzVHJhbnNwYXJlbnQ9ZWU7Y29uc3QgdGU9U3ltYm9sKCk7dC4kaXNVc2FibGU9dGU7Y29uc3QgYWU9U3ltYm9sKCkscmU9U3ltYm9sKCJuYW1lc3BhY2VJZCIpO3QuJG5hbWVzcGFjZUlkPXJlO2NvbnN0IGllPVN5bWJvbCgibm9kZU5hbWUiKTt0LiRub2RlTmFtZT1pZTtjb25zdCBuZT1TeW1ib2woKTt0LiRuc0F0dHJpYnV0ZXM9bmU7Y29uc3Qgc2U9U3ltYm9sKCk7dC4kb25DaGlsZD1zZTtjb25zdCBvZT1TeW1ib2woKTt0LiRvbkNoaWxkQ2hlY2s9b2U7Y29uc3QgY2U9U3ltYm9sKCk7dC4kb25UZXh0PWNlO2NvbnN0IGxlPVN5bWJvbCgpO3QuJHB1c2hHbHlwaHM9bGU7Y29uc3QgaGU9U3ltYm9sKCk7dC4kcG9wUGFyYT1oZTtjb25zdCB1ZT1TeW1ib2woKTt0LiRwdXNoUGFyYT11ZTtjb25zdCBkZT1TeW1ib2woKTt0LiRyZW1vdmVDaGlsZD1kZTtjb25zdCBmZT1TeW1ib2woInJvb3QiKTt0LiRyb290PWZlO2NvbnN0IGdlPVN5bWJvbCgpO3QuJHJlc29sdmVQcm90b3R5cGVzPWdlO2NvbnN0IHBlPVN5bWJvbCgpO3QuJHNlYXJjaE5vZGU9cGU7Y29uc3QgbWU9U3ltYm9sKCk7dC4kc2V0SWQ9bWU7Y29uc3QgYmU9U3ltYm9sKCk7dC4kc2V0U2V0QXR0cmlidXRlcz1iZTtjb25zdCB5ZT1TeW1ib2woKTt0LiRzZXRWYWx1ZT15ZTtjb25zdCB3ZT1TeW1ib2woKTt0LiR0YWJJbmRleD13ZTtjb25zdCBTZT1TeW1ib2woKTt0LiR0ZXh0PVNlO2NvbnN0IHhlPVN5bWJvbCgpO3QuJHRvUGFnZXM9eGU7Y29uc3QgQWU9U3ltYm9sKCk7dC4kdG9IVE1MPUFlO2NvbnN0IENlPVN5bWJvbCgpO3QuJHRvU3RyaW5nPUNlO2NvbnN0IGtlPVN5bWJvbCgpO3QuJHRvU3R5bGU9a2U7Y29uc3QgdmU9U3ltYm9sKCJ1aWQiKTt0LiR1aWQ9dmU7Y29uc3QgRmU9U3ltYm9sKCksT2U9U3ltYm9sKCksSWU9U3ltYm9sKCksVGU9U3ltYm9sKCJfY2hpbGRyZW4iKSxNZT1TeW1ib2woKSxQZT1TeW1ib2woKSxFZT1TeW1ib2woKSxCZT1TeW1ib2woKSxEZT1TeW1ib2woKSxOZT1TeW1ib2woKSxSZT1TeW1ib2woKSxMZT1TeW1ib2woKSxfZT1TeW1ib2woKSwkZT1TeW1ib2woInBhcmVudCIpLGplPVN5bWJvbCgpLFVlPVN5bWJvbCgpLFhlPVN5bWJvbCgpO2xldCBIZT0wO2NvbnN0IHFlPXMuTmFtZXNwYWNlSWRzLmRhdGFzZXRzLmlkO2NsYXNzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQsYT0hMSl7dGhpc1tyZV09ZTt0aGlzW2llXT10O3RoaXNbUmVdPWE7dGhpc1skZV09bnVsbDt0aGlzW1RlXT1bXTt0aGlzW3ZlXT1gJHt0fSR7SGUrK31gO3RoaXNbWF09bnVsbH1bc2VdKGUpe2lmKCF0aGlzW1JlXXx8IXRoaXNbb2VdKGUpKXJldHVybiExO2NvbnN0IHQ9ZVtpZV0sYT10aGlzW3RdO2lmKCEoYSBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KSl7bnVsbCE9PWEmJnRoaXNbZGVdKGEpO3RoaXNbdF09ZTt0aGlzW2hdKGUpO3JldHVybiEwfWlmKGEucHVzaChlKSl7dGhpc1toXShlKTtyZXR1cm4hMH1sZXQgcj0iIjt0aGlzLmlkP3I9YCAoaWQ6ICR7dGhpcy5pZH0pYDp0aGlzLm5hbWUmJihyPWAgKG5hbWU6ICR7dGhpcy5uYW1lfSAke3RoaXMuaC52YWx1ZX0pYCk7KDAsaS53YXJuKShgWEZBIC0gbm9kZSAiJHt0aGlzW2llXX0iJHtyfSBoYXMgYWxyZWFkeSBlbm91Z2ggIiR7dH0iIWApO3JldHVybiExfVtvZV0oZSl7cmV0dXJuIHRoaXMuaGFzT3duUHJvcGVydHkoZVtpZV0pJiZlW3JlXT09PXRoaXNbcmVdfVtZXSgpe3JldHVybiExfVtjXSgpe3JldHVybiExfVtHXSgpe3JldHVybiExfVtWXSgpe3JldHVybiExfVtoZV0oKXt0aGlzLnBhcmEmJnRoaXNbVV0oKVtTXS5wYXJhU3RhY2sucG9wKCl9W3VlXSgpe3RoaXNbVV0oKVtTXS5wYXJhU3RhY2sucHVzaCh0aGlzLnBhcmEpfVttZV0oZSl7dGhpcy5pZCYmdGhpc1tyZV09PT1zLk5hbWVzcGFjZUlkcy50ZW1wbGF0ZS5pZCYmZS5zZXQodGhpcy5pZCx0aGlzKX1bVV0oKXtyZXR1cm4gdGhpc1tYXS50ZW1wbGF0ZX1bWl0oKXtyZXR1cm4hMX1bUV0oKXtyZXR1cm4hMX1baF0oZSl7ZVskZV09dGhpczt0aGlzW1RlXS5wdXNoKGUpOyFlW1hdJiZ0aGlzW1hdJiYoZVtYXT10aGlzW1hdKX1bZGVdKGUpe2NvbnN0IHQ9dGhpc1tUZV0uaW5kZXhPZihlKTt0aGlzW1RlXS5zcGxpY2UodCwxKX1bSF0oKXtyZXR1cm4gdGhpcy5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKX1beWVdKGUpe31bY2VdKGUpe31beF0oKXt9W2RdKGUpe2RlbGV0ZSB0aGlzW1JlXTtpZih0aGlzW2ddKXtlLmNsZWFuKHRoaXNbZ10pO2RlbGV0ZSB0aGlzW2ddfX1bel0oZSl7cmV0dXJuIHRoaXNbVGVdLmluZGV4T2YoZSl9W1ddKGUsdCl7dFskZV09dGhpczt0aGlzW1RlXS5zcGxpY2UoZSwwLHQpOyF0W1hdJiZ0aGlzW1hdJiYodFtYXT10aGlzW1hdKX1bZWVdKCl7cmV0dXJuIXRoaXMubmFtZX1bYWVdKCl7cmV0dXJuIiJ9W1NlXSgpe3JldHVybiAwPT09dGhpc1tUZV0ubGVuZ3RoP3RoaXNbYl06dGhpc1tUZV0ubWFwKChlPT5lW1NlXSgpKSkuam9pbigiIil9Z2V0W0llXSgpe2NvbnN0IGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpO2lmKCFlLl9hdHRyaWJ1dGVzKXtjb25zdCB0PWUuX2F0dHJpYnV0ZXM9bmV3IFNldDtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYobnVsbD09PXRoaXNbZV18fHRoaXNbZV1pbnN0YW5jZW9mIFhGQU9iamVjdHx8dGhpc1tlXWluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpYnJlYWs7dC5hZGQoZSl9fXJldHVybigwLGkuc2hhZG93KSh0aGlzLEllLGUuX2F0dHJpYnV0ZXMpfVtKXShlKXtsZXQgdD10aGlzO2Zvcig7dDspe2lmKHQ9PT1lKXJldHVybiEwO3Q9dFtqXSgpfXJldHVybiExfVtqXSgpe3JldHVybiB0aGlzWyRlXX1bJF0oKXtyZXR1cm4gdGhpc1tqXSgpfVtSXShlPW51bGwpe3JldHVybiBlP3RoaXNbZV06dGhpc1tUZV19W3ddKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXNbYl0mJihlLiRjb250ZW50PXRoaXNbYl0pO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtjb25zdCBhPXRoaXNbdF07bnVsbCE9PWEmJihhIGluc3RhbmNlb2YgWEZBT2JqZWN0P2VbdF09YVt3XSgpOmEgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9hLmlzRW1wdHkoKXx8KGVbdF09YS5kdW1wKCkpOmVbdF09YSl9cmV0dXJuIGV9W2tlXSgpe3JldHVybiBudWxsfVtBZV0oKXtyZXR1cm4gci5IVE1MUmVzdWx0LkVNUFRZfSpbTF0oKXtmb3IoY29uc3QgZSBvZiB0aGlzW1JdKCkpeWllbGQgZX0qW0JlXShlLHQpe2Zvcihjb25zdCBhIG9mIHRoaXNbTF0oKSlpZighZXx8dD09PWUuaGFzKGFbaWVdKSl7Y29uc3QgZT10aGlzW0ZdKCksdD1hW0FlXShlKTt0LnN1Y2Nlc3N8fCh0aGlzW1NdLmZhaWxpbmdOb2RlPWEpO3lpZWxkIHR9fVtDXSgpe3JldHVybiBudWxsfVtsXShlLHQpe3RoaXNbU10uY2hpbGRyZW4ucHVzaChlKX1bRl0oKXt9W3VdKHtmaWx0ZXI6ZT1udWxsLGluY2x1ZGU6dD0hMH0pe2lmKHRoaXNbU10uZ2VuZXJhdG9yKXtjb25zdCBlPXRoaXNbRl0oKSx0PXRoaXNbU10uZmFpbGluZ05vZGVbQWVdKGUpO2lmKCF0LnN1Y2Nlc3MpcmV0dXJuIHQ7dC5odG1sJiZ0aGlzW2xdKHQuaHRtbCx0LmJib3gpO2RlbGV0ZSB0aGlzW1NdLmZhaWxpbmdOb2RlfWVsc2UgdGhpc1tTXS5nZW5lcmF0b3I9dGhpc1tCZV0oZSx0KTtmb3IoOzspe2NvbnN0IGU9dGhpc1tTXS5nZW5lcmF0b3IubmV4dCgpO2lmKGUuZG9uZSlicmVhaztjb25zdCB0PWUudmFsdWU7aWYoIXQuc3VjY2VzcylyZXR1cm4gdDt0Lmh0bWwmJnRoaXNbbF0odC5odG1sLHQuYmJveCl9dGhpc1tTXS5nZW5lcmF0b3I9bnVsbDtyZXR1cm4gci5IVE1MUmVzdWx0LkVNUFRZfVtiZV0oZSl7dGhpc1tVZV09bmV3IFNldChPYmplY3Qua2V5cyhlKSl9W05lXShlKXtjb25zdCB0PXRoaXNbSWVdLGE9dGhpc1tVZV07cmV0dXJuWy4uLmVdLmZpbHRlcigoZT0+dC5oYXMoZSkmJiFhLmhhcyhlKSkpfVtnZV0oZSx0PW5ldyBTZXQpe2Zvcihjb25zdCBhIG9mIHRoaXNbVGVdKWFbamVdKGUsdCl9W2plXShlLHQpe2NvbnN0IGE9dGhpc1tEZV0oZSx0KTthP3RoaXNbRmVdKGEsZSx0KTp0aGlzW2dlXShlLHQpfVtEZV0oZSx0KXtjb25zdHt1c2U6YSx1c2VocmVmOnJ9PXRoaXM7aWYoIWEmJiFyKXJldHVybiBudWxsO2xldCBuPW51bGwscz1udWxsLGM9bnVsbCxsPWE7aWYocil7bD1yO3Iuc3RhcnRzV2l0aCgiI3NvbSgiKSYmci5lbmRzV2l0aCgiKSIpP3M9ci5zbGljZSg1LC0xKTpyLnN0YXJ0c1dpdGgoIi4jc29tKCIpJiZyLmVuZHNXaXRoKCIpIik/cz1yLnNsaWNlKDYsLTEpOnIuc3RhcnRzV2l0aCgiIyIpP2M9ci5zbGljZSgxKTpyLnN0YXJ0c1dpdGgoIi4jIikmJihjPXIuc2xpY2UoMikpfWVsc2UgYS5zdGFydHNXaXRoKCIjIik/Yz1hLnNsaWNlKDEpOnM9YTt0aGlzLnVzZT10aGlzLnVzZWhyZWY9IiI7aWYoYyluPWUuZ2V0KGMpO2Vsc2V7bj0oMCxvLnNlYXJjaE5vZGUpKGUuZ2V0KGZlKSx0aGlzLHMsITAsITEpO24mJihuPW5bMF0pfWlmKCFuKXsoMCxpLndhcm4pKGBYRkEgLSBJbnZhbGlkIHByb3RvdHlwZSByZWZlcmVuY2U6ICR7bH0uYCk7cmV0dXJuIG51bGx9aWYobltpZV0hPT10aGlzW2llXSl7KDAsaS53YXJuKShgWEZBIC0gSW5jb21wYXRpYmxlIHByb3RvdHlwZTogJHtuW2llXX0gIT09ICR7dGhpc1tpZV19LmApO3JldHVybiBudWxsfWlmKHQuaGFzKG4pKXsoMCxpLndhcm4pKCJYRkEgLSBDeWNsZSBkZXRlY3RlZCBpbiBwcm90b3R5cGVzIHVzZS4iKTtyZXR1cm4gbnVsbH10LmFkZChuKTtjb25zdCBoPW5bRGVdKGUsdCk7aCYmbltGZV0oaCxlLHQpO25bZ2VdKGUsdCk7dC5kZWxldGUobik7cmV0dXJuIG59W0ZlXShlLHQsYSl7aWYoYS5oYXMoZSkpeygwLGkud2FybikoIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO3JldHVybn0hdGhpc1tiXSYmZVtiXSYmKHRoaXNbYl09ZVtiXSk7bmV3IFNldChhKS5hZGQoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpc1tOZV0oZVtVZV0pKXt0aGlzW3RdPWVbdF07dGhpc1tVZV0mJnRoaXNbVWVdLmFkZCh0KX1mb3IoY29uc3QgciBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYodGhpc1tJZV0uaGFzKHIpKWNvbnRpbnVlO2NvbnN0IGk9dGhpc1tyXSxuPWVbcl07aWYoaSBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KXtmb3IoY29uc3QgZSBvZiBpW1RlXSllW2plXSh0LGEpO2ZvcihsZXQgcj1pW1RlXS5sZW5ndGgscz1uW1RlXS5sZW5ndGg7cjxzO3IrKyl7Y29uc3Qgbj1lW1RlXVtyXVtwXSgpO2lmKCFpLnB1c2gobikpYnJlYWs7blskZV09dGhpczt0aGlzW1RlXS5wdXNoKG4pO25bamVdKHQsYSl9fWVsc2UgaWYobnVsbD09PWkpe2lmKG51bGwhPT1uKXtjb25zdCBlPW5bcF0oKTtlWyRlXT10aGlzO3RoaXNbcl09ZTt0aGlzW1RlXS5wdXNoKGUpO2VbamVdKHQsYSl9fWVsc2V7aVtnZV0odCxhKTtuJiZpW0ZlXShuLHQsYSl9fX1zdGF0aWNbTWVdKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UubWFwKChlPT5YRkFPYmplY3RbTWVdKGUpKSk6Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZT9PYmplY3QuYXNzaWduKHt9LGUpOmV9W3BdKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0aGlzKSl0cnl7ZVt0XT10aGlzW3RdfWNhdGNoKGEpeygwLGkuc2hhZG93KShlLHQsdGhpc1t0XSl9ZVt2ZV09YCR7ZVtpZV19JHtIZSsrfWA7ZVtUZV09W107Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKHRoaXNbSWVdLmhhcyh0KSl7ZVt0XT1YRkFPYmplY3RbTWVdKHRoaXNbdF0pO2NvbnRpbnVlfWNvbnN0IGE9dGhpc1t0XTtlW3RdPWEgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9uZXcgWEZBT2JqZWN0QXJyYXkoYVtMZV0pOm51bGx9Zm9yKGNvbnN0IHQgb2YgdGhpc1tUZV0pe2NvbnN0IGE9dFtpZV0scj10W3BdKCk7ZVtUZV0ucHVzaChyKTtyWyRlXT1lO251bGw9PT1lW2FdP2VbYV09cjplW2FdW1RlXS5wdXNoKHIpfXJldHVybiBlfVtSXShlPW51bGwpe3JldHVybiBlP3RoaXNbVGVdLmZpbHRlcigodD0+dFtpZV09PT1lKSk6dGhpc1tUZV19W09dKGUpe3JldHVybiB0aGlzW2VdfVtUXShlLHQsYT0hMCl7cmV0dXJuIEFycmF5LmZyb20odGhpc1tNXShlLHQsYSkpfSpbTV0oZSx0LGE9ITApe2lmKCJwYXJlbnQiIT09ZSl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tUZV0pe2FbaWVdPT09ZSYmKHlpZWxkIGEpO2EubmFtZT09PWUmJih5aWVsZCBhKTsodHx8YVtlZV0oKSkmJih5aWVsZCphW01dKGUsdCwhMSkpfWEmJnRoaXNbSWVdLmhhcyhlKSYmKHlpZWxkIG5ldyBYRkFBdHRyaWJ1dGUodGhpcyxlLHRoaXNbZV0pKX1lbHNlIHlpZWxkIHRoaXNbJGVdfX10LlhGQU9iamVjdD1YRkFPYmplY3Q7Y2xhc3MgWEZBT2JqZWN0QXJyYXl7Y29uc3RydWN0b3IoZT0xLzApe3RoaXNbTGVdPWU7dGhpc1tUZV09W119cHVzaChlKXtpZih0aGlzW1RlXS5sZW5ndGg8PXRoaXNbTGVdKXt0aGlzW1RlXS5wdXNoKGUpO3JldHVybiEwfSgwLGkud2FybikoYFhGQSAtIG5vZGUgIiR7ZVtpZV19IiBhY2NlcHRzIG5vIG1vcmUgdGhhbiAke3RoaXNbTGVdfSBjaGlsZHJlbmApO3JldHVybiExfWlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXNbVGVdLmxlbmd0aH1kdW1wKCl7cmV0dXJuIDE9PT10aGlzW1RlXS5sZW5ndGg/dGhpc1tUZV1bMF1bd10oKTp0aGlzW1RlXS5tYXAoKGU9PmVbd10oKSkpfVtwXSgpe2NvbnN0IGU9bmV3IFhGQU9iamVjdEFycmF5KHRoaXNbTGVdKTtlW1RlXT10aGlzW1RlXS5tYXAoKGU9PmVbcF0oKSkpO3JldHVybiBlfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzW1RlXX1jbGVhcigpe3RoaXNbVGVdLmxlbmd0aD0wfX10LlhGQU9iamVjdEFycmF5PVhGQU9iamVjdEFycmF5O2NsYXNzIFhGQUF0dHJpYnV0ZXtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpc1skZV09ZTt0aGlzW2llXT10O3RoaXNbYl09YTt0aGlzW21dPSExO3RoaXNbdmVdPSJhdHRyaWJ1dGUiK0hlKyt9W2pdKCl7cmV0dXJuIHRoaXNbJGVdfVtLXSgpe3JldHVybiEwfVtFXSgpe3JldHVybiB0aGlzW2JdLnRyaW0oKX1beWVdKGUpe2U9ZS52YWx1ZXx8IiI7dGhpc1tiXT1lLnRvU3RyaW5nKCl9W1NlXSgpe3JldHVybiB0aGlzW2JdfVtKXShlKXtyZXR1cm4gdGhpc1skZV09PT1lfHx0aGlzWyRlXVtKXShlKX19dC5YRkFBdHRyaWJ1dGU9WEZBQXR0cmlidXRlO2NsYXNzIFhtbE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQsYT17fSl7c3VwZXIoZSx0KTt0aGlzW2JdPSIiO3RoaXNbUGVdPW51bGw7aWYoIiN0ZXh0IiE9PXQpe2NvbnN0IGU9bmV3IE1hcDt0aGlzW09lXT1lO2Zvcihjb25zdFt0LHJdb2YgT2JqZWN0LmVudHJpZXMoYSkpZS5zZXQodCxuZXcgWEZBQXR0cmlidXRlKHRoaXMsdCxyKSk7aWYoYS5oYXNPd25Qcm9wZXJ0eShuZSkpe2NvbnN0IGU9YVtuZV0ueGZhLmRhdGFOb2RlO3ZvaWQgMCE9PWUmJigiZGF0YUdyb3VwIj09PWU/dGhpc1tQZV09ITE6ImRhdGFWYWx1ZSI9PT1lJiYodGhpc1tQZV09ITApKX19dGhpc1ttXT0hMX1bQ2VdKGUpe2NvbnN0IHQ9dGhpc1tpZV07aWYoIiN0ZXh0Ij09PXQpe2UucHVzaCgoMCxuLmVuY29kZVRvWG1sU3RyaW5nKSh0aGlzW2JdKSk7cmV0dXJufWNvbnN0IGE9KDAsaS51dGY4U3RyaW5nVG9TdHJpbmcpKHQpLHI9dGhpc1tyZV09PT1xZT8ieGZhOiI6IiI7ZS5wdXNoKGA8JHtyfSR7YX1gKTtmb3IoY29uc3RbdCxhXW9mIHRoaXNbT2VdLmVudHJpZXMoKSl7Y29uc3Qgcj0oMCxpLnV0ZjhTdHJpbmdUb1N0cmluZykodCk7ZS5wdXNoKGAgJHtyfT0iJHsoMCxuLmVuY29kZVRvWG1sU3RyaW5nKShhW2JdKX0iYCl9bnVsbCE9PXRoaXNbUGVdJiYodGhpc1tQZV0/ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhVmFsdWUiJyk6ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhR3JvdXAiJykpO2lmKHRoaXNbYl18fDAhPT10aGlzW1RlXS5sZW5ndGgpe2UucHVzaCgiPiIpO2lmKHRoaXNbYl0pInN0cmluZyI9PXR5cGVvZiB0aGlzW2JdP2UucHVzaCgoMCxuLmVuY29kZVRvWG1sU3RyaW5nKSh0aGlzW2JdKSk6dGhpc1tiXVtDZV0oZSk7ZWxzZSBmb3IoY29uc3QgdCBvZiB0aGlzW1RlXSl0W0NlXShlKTtlLnB1c2goYDwvJHtyfSR7YX0+YCl9ZWxzZSBlLnB1c2goIi8+Iil9W3NlXShlKXtpZih0aGlzW2JdKXtjb25zdCBlPW5ldyBYbWxPYmplY3QodGhpc1tyZV0sIiN0ZXh0Iik7dGhpc1toXShlKTtlW2JdPXRoaXNbYl07dGhpc1tiXT0iIn10aGlzW2hdKGUpO3JldHVybiEwfVtjZV0oZSl7dGhpc1tiXSs9ZX1beF0oKXtpZih0aGlzW2JdJiZ0aGlzW1RlXS5sZW5ndGg+MCl7Y29uc3QgZT1uZXcgWG1sT2JqZWN0KHRoaXNbcmVdLCIjdGV4dCIpO3RoaXNbaF0oZSk7ZVtiXT10aGlzW2JdO2RlbGV0ZSB0aGlzW2JdfX1bQWVdKCl7cmV0dXJuIiN0ZXh0Ij09PXRoaXNbaWVdP3IuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiIjdGV4dCIsdmFsdWU6dGhpc1tiXX0pOnIuSFRNTFJlc3VsdC5FTVBUWX1bUl0oZT1udWxsKXtyZXR1cm4gZT90aGlzW1RlXS5maWx0ZXIoKHQ9PnRbaWVdPT09ZSkpOnRoaXNbVGVdfVt2XSgpe3JldHVybiB0aGlzW09lXX1bT10oZSl7Y29uc3QgdD10aGlzW09lXS5nZXQoZSk7cmV0dXJuIHZvaWQgMCE9PXQ/dDp0aGlzW1JdKGUpfSpbTV0oZSx0KXtjb25zdCBhPXRoaXNbT2VdLmdldChlKTthJiYoeWllbGQgYSk7Zm9yKGNvbnN0IGEgb2YgdGhpc1tUZV0pe2FbaWVdPT09ZSYmKHlpZWxkIGEpO3QmJih5aWVsZCphW01dKGUsdCkpfX0qW2tdKGUsdCl7Y29uc3QgYT10aGlzW09lXS5nZXQoZSk7IWF8fHQmJmFbbV18fCh5aWVsZCBhKTtmb3IoY29uc3QgYSBvZiB0aGlzW1RlXSl5aWVsZCphW2tdKGUsdCl9KltOXShlLHQsYSl7Zm9yKGNvbnN0IHIgb2YgdGhpc1tUZV0pe3JbaWVdIT09ZXx8YSYmclttXXx8KHlpZWxkIHIpO3QmJih5aWVsZCpyW05dKGUsdCxhKSl9fVtLXSgpe3JldHVybiBudWxsPT09dGhpc1tQZV0/MD09PXRoaXNbVGVdLmxlbmd0aHx8dGhpc1tUZV1bMF1bcmVdPT09cy5OYW1lc3BhY2VJZHMueGh0bWwuaWQ6dGhpc1tQZV19W0VdKCl7cmV0dXJuIG51bGw9PT10aGlzW1BlXT8wPT09dGhpc1tUZV0ubGVuZ3RoP3RoaXNbYl0udHJpbSgpOnRoaXNbVGVdWzBdW3JlXT09PXMuTmFtZXNwYWNlSWRzLnhodG1sLmlkP3RoaXNbVGVdWzBdW1NlXSgpLnRyaW0oKTpudWxsOnRoaXNbYl0udHJpbSgpfVt5ZV0oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW2JdPWUudG9TdHJpbmcoKX1bd10oZT0hMSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2UmJih0LiRucz10aGlzW3JlXSk7dGhpc1tiXSYmKHQuJGNvbnRlbnQ9dGhpc1tiXSk7dC4kbmFtZT10aGlzW2llXTt0LmNoaWxkcmVuPVtdO2Zvcihjb25zdCBhIG9mIHRoaXNbVGVdKXQuY2hpbGRyZW4ucHVzaChhW3ddKGUpKTt0LmF0dHJpYnV0ZXM9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbZSxhXW9mIHRoaXNbT2VdKXQuYXR0cmlidXRlc1tlXT1hW2JdO3JldHVybiB0fX10LlhtbE9iamVjdD1YbWxPYmplY3Q7Y2xhc3MgQ29udGVudE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCk7dGhpc1tiXT0iIn1bY2VdKGUpe3RoaXNbYl0rPWV9W3hdKCl7fX10LkNvbnRlbnRPYmplY3Q9Q29udGVudE9iamVjdDt0Lk9wdGlvbk9iamVjdD1jbGFzcyBPcHRpb25PYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcihlLHQpO3RoaXNbX2VdPWF9W3hdKCl7dGhpc1tiXT0oMCxyLmdldEtleXdvcmQpKHtkYXRhOnRoaXNbYl0sZGVmYXVsdFZhbHVlOnRoaXNbX2VdWzBdLHZhbGlkYXRlOmU9PnRoaXNbX2VdLmluY2x1ZGVzKGUpfSl9W2RdKGUpe3N1cGVyW2RdKGUpO2RlbGV0ZSB0aGlzW19lXX19O3QuU3RyaW5nT2JqZWN0PWNsYXNzIFN0cmluZ09iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7W3hdKCl7dGhpc1tiXT10aGlzW2JdLnRyaW0oKX19O2NsYXNzIEludGVnZXJPYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhLHIpe3N1cGVyKGUsdCk7dGhpc1tFZV09YTt0aGlzW1hlXT1yfVt4XSgpe3RoaXNbYl09KDAsci5nZXRJbnRlZ2VyKSh7ZGF0YTp0aGlzW2JdLGRlZmF1bHRWYWx1ZTp0aGlzW0VlXSx2YWxpZGF0ZTp0aGlzW1hlXX0pfVtkXShlKXtzdXBlcltkXShlKTtkZWxldGUgdGhpc1tFZV07ZGVsZXRlIHRoaXNbWGVdfX10LkludGVnZXJPYmplY3Q9SW50ZWdlck9iamVjdDt0Lk9wdGlvbjAxPWNsYXNzIE9wdGlvbjAxIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwwLChlPT4xPT09ZSkpfX07dC5PcHRpb24xMD1jbGFzcyBPcHRpb24xMCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsMSwoZT0+MD09PWUpKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSFRNTFJlc3VsdD12b2lkIDA7dC5nZXRCQm94PWZ1bmN0aW9uIGdldEJCb3goZSl7Y29uc3QgdD0tMTtpZighZSlyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTtjb25zdCBhPWUudHJpbSgpLnNwbGl0KC9ccyosXHMqLykubWFwKChlPT5nZXRNZWFzdXJlbWVudChlLCItMSIpKSk7aWYoYS5sZW5ndGg8NHx8YVsyXTwwfHxhWzNdPDApcmV0dXJue3g6dCx5OnQsd2lkdGg6dCxoZWlnaHQ6dH07Y29uc3RbcixpLG4sc109YTtyZXR1cm57eDpyLHk6aSx3aWR0aDpuLGhlaWdodDpzfX07dC5nZXRDb2xvcj1mdW5jdGlvbiBnZXRDb2xvcihlLHQ9WzAsMCwwXSl7bGV0W2EscixpXT10O2lmKCFlKXJldHVybntyOmEsZzpyLGI6aX07Y29uc3Qgbj1lLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8pLm1hcCgoZT0+TWF0aC5taW4oTWF0aC5tYXgoMCxwYXJzZUludChlLnRyaW0oKSwxMCkpLDI1NSkpKS5tYXAoKGU9PmlzTmFOKGUpPzA6ZSkpO2lmKG4ubGVuZ3RoPDMpcmV0dXJue3I6YSxnOnIsYjppfTtbYSxyLGldPW47cmV0dXJue3I6YSxnOnIsYjppfX07dC5nZXRGbG9hdD1mdW5jdGlvbiBnZXRGbG9hdCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOmF9KXtpZighZSlyZXR1cm4gdDtlPWUudHJpbSgpO2NvbnN0IHI9cGFyc2VGbG9hdChlKTtpZighaXNOYU4ocikmJmEocikpcmV0dXJuIHI7cmV0dXJuIHR9O3QuZ2V0SW50ZWdlcj1mdW5jdGlvbiBnZXRJbnRlZ2VyKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnQsdmFsaWRhdGU6YX0pe2lmKCFlKXJldHVybiB0O2U9ZS50cmltKCk7Y29uc3Qgcj1wYXJzZUludChlLDEwKTtpZighaXNOYU4ocikmJmEocikpcmV0dXJuIHI7cmV0dXJuIHR9O3QuZ2V0S2V5d29yZD1nZXRLZXl3b3JkO3QuZ2V0TWVhc3VyZW1lbnQ9Z2V0TWVhc3VyZW1lbnQ7dC5nZXRSYXRpbz1mdW5jdGlvbiBnZXRSYXRpbyhlKXtpZighZSlyZXR1cm57bnVtOjEsZGVuOjF9O2NvbnN0IHQ9ZS50cmltKCkuc3BsaXQoL1xzKjpccyovKS5tYXAoKGU9PnBhcnNlRmxvYXQoZSkpKS5maWx0ZXIoKGU9PiFpc05hTihlKSkpOzE9PT10Lmxlbmd0aCYmdC5wdXNoKDEpO2lmKDA9PT10Lmxlbmd0aClyZXR1cm57bnVtOjEsZGVuOjF9O2NvbnN0W2Escl09dDtyZXR1cm57bnVtOmEsZGVuOnJ9fTt0LmdldFJlbGV2YW50PWZ1bmN0aW9uIGdldFJlbGV2YW50KGUpe2lmKCFlKXJldHVybltdO3JldHVybiBlLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlPT4oe2V4Y2x1ZGVkOiItIj09PWVbMF0sdmlld25hbWU6ZS5zdWJzdHJpbmcoMSl9KSkpfTt0LmdldFN0cmluZ09wdGlvbj1mdW5jdGlvbiBnZXRTdHJpbmdPcHRpb24oZSx0KXtyZXR1cm4gZ2V0S2V5d29yZCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0WzBdLHZhbGlkYXRlOmU9PnQuaW5jbHVkZXMoZSl9KX07dC5zdHJpcFF1b3Rlcz1mdW5jdGlvbiBzdHJpcFF1b3RlcyhlKXtpZihlLnN0YXJ0c1dpdGgoIiciKXx8ZS5zdGFydHNXaXRoKCciJykpcmV0dXJuIGUuc2xpY2UoMSwtMSk7cmV0dXJuIGV9O3ZhciByPWEoMik7Y29uc3QgaT17cHQ6ZT0+ZSxjbTplPT5lLzIuNTQqNzIsbW06ZT0+ZS8yNS40KjcyLGluOmU9PjcyKmUscHg6ZT0+ZX0sbj0vKFsrLV0/XGQrXC4/XGQqKSguKikvO2Z1bmN0aW9uIGdldEtleXdvcmQoe2RhdGE6ZSxkZWZhdWx0VmFsdWU6dCx2YWxpZGF0ZTphfSl7cmV0dXJuIGUmJmEoZT1lLnRyaW0oKSk/ZTp0fWZ1bmN0aW9uIGdldE1lYXN1cmVtZW50KGUsdD0iMCIpe3R8fD0iMCI7aWYoIWUpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0IGE9ZS50cmltKCkubWF0Y2gobik7aWYoIWEpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0WyxyLHNdPWEsbz1wYXJzZUZsb2F0KHIpO2lmKGlzTmFOKG8pKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtpZigwPT09bylyZXR1cm4gMDtjb25zdCBjPWlbc107cmV0dXJuIGM/YyhvKTpvfWNsYXNzIEhUTUxSZXN1bHR7c3RhdGljIGdldCBGQUlMVVJFKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkZBSUxVUkUiLG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxudWxsKSl9c3RhdGljIGdldCBFTVBUWSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJFTVBUWSIsbmV3IEhUTUxSZXN1bHQoITAsbnVsbCxudWxsLG51bGwpKX1jb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLnN1Y2Nlc3M9ZTt0aGlzLmh0bWw9dDt0aGlzLmJib3g9YTt0aGlzLmJyZWFrTm9kZT1yfWlzQnJlYWsoKXtyZXR1cm4hIXRoaXMuYnJlYWtOb2RlfXN0YXRpYyBicmVha05vZGUoZSl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxlKX1zdGF0aWMgc3VjY2VzcyhlLHQ9bnVsbCl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCEwLGUsdCxudWxsKX19dC5IVE1MUmVzdWx0PUhUTUxSZXN1bHR9LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuTmFtZXNwYWNlSWRzPXQuJGJ1aWxkWEZBT2JqZWN0PXZvaWQgMDtjb25zdCBhPVN5bWJvbCgpO3QuJGJ1aWxkWEZBT2JqZWN0PWE7dC5OYW1lc3BhY2VJZHM9e2NvbmZpZzp7aWQ6MCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGNpLyIpfSxjb25uZWN0aW9uU2V0OntpZDoxLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtY29ubmVjdGlvbi1zZXQvIil9LGRhdGFzZXRzOntpZDoyLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8iKX0sZm9ybTp7aWQ6MyxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWZvcm0vIil9LGxvY2FsZVNldDp7aWQ6NCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWxvY2FsZS1zZXQvIil9LHBkZjp7aWQ6NSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvcGRmLyI9PT1lfSxzaWduYXR1cmU6e2lkOjYsY2hlY2s6ZT0+Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPT09ZX0sc291cmNlU2V0OntpZDo3LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtc291cmNlLXNldC8iKX0sc3R5bGVzaGVldDp7aWQ6OCxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj09PWV9LHRlbXBsYXRlOntpZDo5LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtdGVtcGxhdGUvIil9LHhkYzp7aWQ6MTAsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hkYy8iKX0seGRwOntpZDoxMSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvIj09PWV9LHhmZGY6e2lkOjEyLGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hmZGYvIj09PWV9LHhodG1sOntpZDoxMyxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI9PT1lfSx4bXBtZXRhOntpZDoxNCxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94bXBtZXRhLyI9PT1lfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5jcmVhdGVEYXRhTm9kZT1mdW5jdGlvbiBjcmVhdGVEYXRhTm9kZShlLHQsYSl7Y29uc3QgaT1wYXJzZUV4cHJlc3Npb24oYSk7aWYoIWkpcmV0dXJuIG51bGw7aWYoaS5zb21lKChlPT5lLm9wZXJhdG9yPT09Yy5kb3REb3QpKSlyZXR1cm4gbnVsbDtjb25zdCBzPWwuZ2V0KGlbMF0ubmFtZSk7bGV0IG89MDtpZihzKXtlPXMoZSx0KTtvPTF9ZWxzZSBlPXR8fGU7Zm9yKGxldCB0PWkubGVuZ3RoO288dDtvKyspe2NvbnN0e25hbWU6dCxvcGVyYXRvcjphLGluZGV4OnN9PWlbb107aWYoIWlzRmluaXRlKHMpKXtpW29dLmluZGV4PTA7cmV0dXJuIGNyZWF0ZU5vZGVzKGUsaS5zbGljZShvKSl9bGV0IGw7c3dpdGNoKGEpe2Nhc2UgYy5kb3Q6bD1lW3IuJGdldENoaWxkcmVuQnlOYW1lXSh0LCExKTticmVhaztjYXNlIGMuZG90RG90Omw9ZVtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0odCwhMCk7YnJlYWs7Y2FzZSBjLmRvdEhhc2g6bD1lW3IuJGdldENoaWxkcmVuQnlDbGFzc10odCk7bD1sIGluc3RhbmNlb2Ygci5YRkFPYmplY3RBcnJheT9sLmNoaWxkcmVuOltsXX1pZigwPT09bC5sZW5ndGgpcmV0dXJuIGNyZWF0ZU5vZGVzKGUsaS5zbGljZShvKSk7aWYoIShzPGwubGVuZ3RoKSl7aVtvXS5pbmRleD1zLWwubGVuZ3RoO3JldHVybiBjcmVhdGVOb2RlcyhlLGkuc2xpY2UobykpfXtjb25zdCB0PWxbc107aWYoISh0IGluc3RhbmNlb2Ygci5YRkFPYmplY3QpKXsoMCxuLndhcm4pKCJYRkEgLSBDYW5ub3QgY3JlYXRlIGEgbm9kZS4iKTtyZXR1cm4gbnVsbH1lPXR9fXJldHVybiBudWxsfTt0LnNlYXJjaE5vZGU9ZnVuY3Rpb24gc2VhcmNoTm9kZShlLHQsYSxpPSEwLG49ITApe2NvbnN0IHM9cGFyc2VFeHByZXNzaW9uKGEsaSk7aWYoIXMpcmV0dXJuIG51bGw7Y29uc3Qgbz1sLmdldChzWzBdLm5hbWUpO2xldCB1LGQ9MDtpZihvKXt1PSEwO2U9W28oZSx0KV07ZD0xfWVsc2V7dT1udWxsPT09dDtlPVt0fHxlXX1mb3IobGV0IGE9cy5sZW5ndGg7ZDxhO2QrKyl7Y29uc3R7bmFtZTphLGNhY2hlTmFtZTppLG9wZXJhdG9yOm8saW5kZXg6bH09c1tkXSxmPVtdO2Zvcihjb25zdCB0IG9mIGUpe2lmKCEodCBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0KSljb250aW51ZTtsZXQgZSxzO2lmKG4pe3M9aC5nZXQodCk7aWYoIXMpe3M9bmV3IE1hcDtoLnNldCh0LHMpfWU9cy5nZXQoaSl9aWYoIWUpe3N3aXRjaChvKXtjYXNlIGMuZG90OmU9dFtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0oYSwhMSk7YnJlYWs7Y2FzZSBjLmRvdERvdDplPXRbci4kZ2V0Q2hpbGRyZW5CeU5hbWVdKGEsITApO2JyZWFrO2Nhc2UgYy5kb3RIYXNoOmU9dFtyLiRnZXRDaGlsZHJlbkJ5Q2xhc3NdKGEpO2U9ZSBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0QXJyYXk/ZS5jaGlsZHJlbjpbZV19biYmcy5zZXQoaSxlKX1lLmxlbmd0aD4wJiZmLnB1c2goZSl9aWYoMCE9PWYubGVuZ3RofHx1fHwwIT09ZCllPWlzRmluaXRlKGwpP2YuZmlsdGVyKChlPT5sPGUubGVuZ3RoKSkubWFwKChlPT5lW2xdKSk6Zi5mbGF0KCk7ZWxzZXtjb25zdCBhPXRbci4kZ2V0UGFyZW50XSgpO2lmKCEodD1hKSlyZXR1cm4gbnVsbDtkPS0xO2U9W3RdfX1pZigwPT09ZS5sZW5ndGgpcmV0dXJuIG51bGw7cmV0dXJuIGV9O3ZhciByPWEoNzgpLGk9YSg4MCksbj1hKDIpO2NvbnN0IHM9L15bXi5bXSsvLG89L15bXlxdXSsvLGM9e2RvdDowLGRvdERvdDoxLGRvdEhhc2g6Mixkb3RCcmFja2V0OjMsZG90UGFyZW46NH0sbD1uZXcgTWFwKFtbIiRkYXRhIiwoZSx0KT0+ZS5kYXRhc2V0cz9lLmRhdGFzZXRzLmRhdGE6ZV0sWyIkcmVjb3JkIiwoZSx0KT0+KGUuZGF0YXNldHM/ZS5kYXRhc2V0cy5kYXRhOmUpW3IuJGdldENoaWxkcmVuXSgpWzBdXSxbIiR0ZW1wbGF0ZSIsKGUsdCk9PmUudGVtcGxhdGVdLFsiJGNvbm5lY3Rpb25TZXQiLChlLHQpPT5lLmNvbm5lY3Rpb25TZXRdLFsiJGZvcm0iLChlLHQpPT5lLmZvcm1dLFsiJGxheW91dCIsKGUsdCk9PmUubGF5b3V0XSxbIiRob3N0IiwoZSx0KT0+ZS5ob3N0XSxbIiRkYXRhV2luZG93IiwoZSx0KT0+ZS5kYXRhV2luZG93XSxbIiRldmVudCIsKGUsdCk9PmUuZXZlbnRdLFsiISIsKGUsdCk9PmUuZGF0YXNldHNdLFsiJHhmYSIsKGUsdCk9PmVdLFsieGZhIiwoZSx0KT0+ZV0sWyIkIiwoZSx0KT0+dF1dKSxoPW5ldyBXZWFrTWFwLHU9aS5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQ7ZnVuY3Rpb24gcGFyc2VFeHByZXNzaW9uKGUsdCxhPSEwKXtsZXQgcj1lLm1hdGNoKHMpO2lmKCFyKXJldHVybiBudWxsO2xldFtpXT1yO2NvbnN0IGw9W3tuYW1lOmksY2FjaGVOYW1lOiIuIitpLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsLG9wZXJhdG9yOmMuZG90fV07bGV0IGg9aS5sZW5ndGg7Zm9yKDtoPGUubGVuZ3RoOyl7Y29uc3QgZD1oO2lmKCJbIj09PWUuY2hhckF0KGgrKykpe3I9ZS5zbGljZShoKS5tYXRjaChvKTtpZighcil7KDAsbi53YXJuKSgiWEZBIC0gSW52YWxpZCBpbmRleCBpbiBTT00gZXhwcmVzc2lvbiIpO3JldHVybiBudWxsfWwuYXQoLTEpLmluZGV4PSIqIj09PSh1PSh1PXJbMF0pLnRyaW0oKSk/MS8wOnBhcnNlSW50KHUsMTApfHwwO2grPXJbMF0ubGVuZ3RoKzE7Y29udGludWV9bGV0IGY7c3dpdGNoKGUuY2hhckF0KGgpKXtjYXNlIi4iOmlmKCF0KXJldHVybiBudWxsO2grKztmPWMuZG90RG90O2JyZWFrO2Nhc2UiIyI6aCsrO2Y9Yy5kb3RIYXNoO2JyZWFrO2Nhc2UiWyI6aWYoYSl7KDAsbi53YXJuKSgiWEZBIC0gU09NIGV4cHJlc3Npb24gY29udGFpbnMgYSBGb3JtQ2FsYyBzdWJleHByZXNzaW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdy4iKTtyZXR1cm4gbnVsbH1mPWMuZG90QnJhY2tldDticmVhaztjYXNlIigiOmlmKGEpeygwLG4ud2FybikoIlhGQSAtIFNPTSBleHByZXNzaW9uIGNvbnRhaW5zIGEgSmF2YVNjcmlwdCBzdWJleHByZXNzaW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdy4iKTtyZXR1cm4gbnVsbH1mPWMuZG90UGFyZW47YnJlYWs7ZGVmYXVsdDpmPWMuZG90fXI9ZS5zbGljZShoKS5tYXRjaChzKTtpZighcilicmVhaztbaV09cjtoKz1pLmxlbmd0aDtsLnB1c2goe25hbWU6aSxjYWNoZU5hbWU6ZS5zbGljZShkLGgpLG9wZXJhdG9yOmYsaW5kZXg6MCxqczpudWxsLGZvcm1DYWxjOm51bGx9KX12YXIgdTtyZXR1cm4gbH1mdW5jdGlvbiBjcmVhdGVOb2RlcyhlLHQpe2xldCBhPW51bGw7Zm9yKGNvbnN0e25hbWU6aSxpbmRleDpufW9mIHQpe2ZvcihsZXQgdD0wLHM9aXNGaW5pdGUobik/bjowO3Q8PXM7dCsrKXtjb25zdCB0PWVbci4kbmFtZXNwYWNlSWRdPT09dT8tMTplW3IuJG5hbWVzcGFjZUlkXTthPW5ldyByLlhtbE9iamVjdCh0LGkpO2Vbci4kYXBwZW5kQ2hpbGRdKGEpfWU9YX1yZXR1cm4gYX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5CaW5kZXI9dm9pZCAwO3ZhciByPWEoNzgpLGk9YSg4Myksbj1hKDgxKSxzPWEoODApLG89YSgyKTtjb25zdCBjPXMuTmFtZXNwYWNlSWRzLmRhdGFzZXRzLmlkO2Z1bmN0aW9uIGNyZWF0ZVRleHQoZSl7Y29uc3QgdD1uZXcgaS5UZXh0KHt9KTt0W3IuJGNvbnRlbnRdPWU7cmV0dXJuIHR9dC5CaW5kZXI9Y2xhc3MgQmluZGVye2NvbnN0cnVjdG9yKGUpe3RoaXMucm9vdD1lO3RoaXMuZGF0YXNldHM9ZS5kYXRhc2V0cztlLmRhdGFzZXRzPy5kYXRhP3RoaXMuZGF0YT1lLmRhdGFzZXRzLmRhdGE6dGhpcy5kYXRhPW5ldyByLlhtbE9iamVjdChzLk5hbWVzcGFjZUlkcy5kYXRhc2V0cy5pZCwiZGF0YSIpO3RoaXMuZW1wdHlNZXJnZT0wPT09dGhpcy5kYXRhW3IuJGdldENoaWxkcmVuXSgpLmxlbmd0aDt0aGlzLnJvb3QuZm9ybT10aGlzLmZvcm09ZS50ZW1wbGF0ZVtyLiRjbG9uZV0oKX1faXNDb25zdW1lRGF0YSgpe3JldHVybiF0aGlzLmVtcHR5TWVyZ2UmJnRoaXMuX21lcmdlTW9kZX1faXNNYXRjaFRlbXBsYXRlKCl7cmV0dXJuIXRoaXMuX2lzQ29uc3VtZURhdGEoKX1iaW5kKCl7dGhpcy5fYmluZEVsZW1lbnQodGhpcy5mb3JtLHRoaXMuZGF0YSk7cmV0dXJuIHRoaXMuZm9ybX1nZXREYXRhKCl7cmV0dXJuIHRoaXMuZGF0YX1fYmluZFZhbHVlKGUsdCxhKXtlW3IuJGRhdGFdPXQ7aWYoZVtyLiRoYXNTZXR0YWJsZVZhbHVlXSgpKWlmKHRbci4kaXNEYXRhVmFsdWVdKCkpe2NvbnN0IGE9dFtyLiRnZXREYXRhVmFsdWVdKCk7ZVtyLiRzZXRWYWx1ZV0oY3JlYXRlVGV4dChhKSl9ZWxzZSBpZihlIGluc3RhbmNlb2YgaS5GaWVsZCYmIm11bHRpU2VsZWN0Ij09PWUudWk/LmNob2ljZUxpc3Q/Lm9wZW4pe2NvbnN0IGE9dFtyLiRnZXRDaGlsZHJlbl0oKS5tYXAoKGU9PmVbci4kY29udGVudF0udHJpbSgpKSkuam9pbigiXG4iKTtlW3IuJHNldFZhbHVlXShjcmVhdGVUZXh0KGEpKX1lbHNlIHRoaXMuX2lzQ29uc3VtZURhdGEoKSYmKDAsby53YXJuKSgiWEZBIC0gTm9kZXMgaGF2ZW4ndCB0aGUgc2FtZSB0eXBlLiIpO2Vsc2UhdFtyLiRpc0RhdGFWYWx1ZV0oKXx8dGhpcy5faXNNYXRjaFRlbXBsYXRlKCk/dGhpcy5fYmluZEVsZW1lbnQoZSx0KTooMCxvLndhcm4pKCJYRkEgLSBOb2RlcyBoYXZlbid0IHRoZSBzYW1lIHR5cGUuIil9X2ZpbmREYXRhQnlOYW1lVG9Db25zdW1lKGUsdCxhLGkpe2lmKCFlKXJldHVybiBudWxsO2xldCBuLG87Zm9yKGxldCBpPTA7aTwzO2krKyl7bj1hW3IuJGdldFJlYWxDaGlsZHJlbkJ5TmFtZUl0XShlLCExLCEwKTtmb3IoOzspe289bi5uZXh0KCkudmFsdWU7aWYoIW8pYnJlYWs7aWYodD09PW9bci4kaXNEYXRhVmFsdWVdKCkpcmV0dXJuIG99aWYoYVtyLiRuYW1lc3BhY2VJZF09PT1zLk5hbWVzcGFjZUlkcy5kYXRhc2V0cy5pZCYmImRhdGEiPT09YVtyLiRub2RlTmFtZV0pYnJlYWs7YT1hW3IuJGdldFBhcmVudF0oKX1pZighaSlyZXR1cm4gbnVsbDtuPXRoaXMuZGF0YVtyLiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdF0oZSwhMCwhMSk7bz1uLm5leHQoKS52YWx1ZTtpZihvKXJldHVybiBvO249dGhpcy5kYXRhW3IuJGdldEF0dHJpYnV0ZUl0XShlLCEwKTtvPW4ubmV4dCgpLnZhbHVlO3JldHVybiBvPy5bci4kaXNEYXRhVmFsdWVdKCk/bzpudWxsfV9zZXRQcm9wZXJ0aWVzKGUsdCl7aWYoZS5oYXNPd25Qcm9wZXJ0eSgic2V0UHJvcGVydHkiKSlmb3IoY29uc3R7cmVmOmEsdGFyZ2V0OnMsY29ubmVjdGlvbjpjfW9mIGUuc2V0UHJvcGVydHkuY2hpbGRyZW4pe2lmKGMpY29udGludWU7aWYoIWEpY29udGludWU7Y29uc3QgbD0oMCxuLnNlYXJjaE5vZGUpKHRoaXMucm9vdCx0LGEsITEsITEpO2lmKCFsKXsoMCxvLndhcm4pKGBYRkEgLSBJbnZhbGlkIHJlZmVyZW5jZTogJHthfS5gKTtjb250aW51ZX1jb25zdFtoXT1sO2lmKCFoW3IuJGlzRGVzY2VuZGVudF0odGhpcy5kYXRhKSl7KDAsby53YXJuKSgiWEZBIC0gSW52YWxpZCBub2RlOiBtdXN0IGJlIGEgZGF0YSBub2RlLiIpO2NvbnRpbnVlfWNvbnN0IHU9KDAsbi5zZWFyY2hOb2RlKSh0aGlzLnJvb3QsZSxzLCExLCExKTtpZighdSl7KDAsby53YXJuKShgWEZBIC0gSW52YWxpZCB0YXJnZXQ6ICR7c30uYCk7Y29udGludWV9Y29uc3RbZF09dTtpZighZFtyLiRpc0Rlc2NlbmRlbnRdKGUpKXsoMCxvLndhcm4pKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogbXVzdCBiZSBhIHByb3BlcnR5IG9yIHN1YnByb3BlcnR5LiIpO2NvbnRpbnVlfWNvbnN0IGY9ZFtyLiRnZXRQYXJlbnRdKCk7aWYoZCBpbnN0YW5jZW9mIGkuU2V0UHJvcGVydHl8fGYgaW5zdGFuY2VvZiBpLlNldFByb3BlcnR5KXsoMCxvLndhcm4pKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogY2Fubm90IGJlIGEgc2V0UHJvcGVydHkgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWlmKGQgaW5zdGFuY2VvZiBpLkJpbmRJdGVtc3x8ZiBpbnN0YW5jZW9mIGkuQmluZEl0ZW1zKXsoMCxvLndhcm4pKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogY2Fubm90IGJlIGEgYmluZEl0ZW1zIG9yIG9uZSBvZiBpdHMgcHJvcGVydGllcy4iKTtjb250aW51ZX1jb25zdCBnPWhbci4kdGV4dF0oKSxwPWRbci4kbm9kZU5hbWVdO2lmKGQgaW5zdGFuY2VvZiByLlhGQUF0dHJpYnV0ZSl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO2VbcF09Zztjb25zdCB0PVJlZmxlY3QuY29uc3RydWN0KE9iamVjdC5nZXRQcm90b3R5cGVPZihmKS5jb25zdHJ1Y3RvcixbZV0pO2ZbcF09dFtwXX1lbHNlIGlmKGQuaGFzT3duUHJvcGVydHkoci4kY29udGVudCkpe2Rbci4kZGF0YV09aDtkW3IuJGNvbnRlbnRdPWc7ZFtyLiRmaW5hbGl6ZV0oKX1lbHNlKDAsby53YXJuKSgiWEZBIC0gSW52YWxpZCBub2RlIHRvIHVzZSBpbiBzZXRQcm9wZXJ0eSIpfX1fYmluZEl0ZW1zKGUsdCl7aWYoIWUuaGFzT3duUHJvcGVydHkoIml0ZW1zIil8fCFlLmhhc093blByb3BlcnR5KCJiaW5kSXRlbXMiKXx8ZS5iaW5kSXRlbXMuaXNFbXB0eSgpKXJldHVybjtmb3IoY29uc3QgdCBvZiBlLml0ZW1zLmNoaWxkcmVuKWVbci4kcmVtb3ZlQ2hpbGRdKHQpO2UuaXRlbXMuY2xlYXIoKTtjb25zdCBhPW5ldyBpLkl0ZW1zKHt9KSxzPW5ldyBpLkl0ZW1zKHt9KTtlW3IuJGFwcGVuZENoaWxkXShhKTtlLml0ZW1zLnB1c2goYSk7ZVtyLiRhcHBlbmRDaGlsZF0ocyk7ZS5pdGVtcy5wdXNoKHMpO2Zvcihjb25zdHtyZWY6aSxsYWJlbFJlZjpjLHZhbHVlUmVmOmwsY29ubmVjdGlvbjpofW9mIGUuYmluZEl0ZW1zLmNoaWxkcmVuKXtpZihoKWNvbnRpbnVlO2lmKCFpKWNvbnRpbnVlO2NvbnN0IGU9KDAsbi5zZWFyY2hOb2RlKSh0aGlzLnJvb3QsdCxpLCExLCExKTtpZihlKWZvcihjb25zdCB0IG9mIGUpe2lmKCF0W3IuJGlzRGVzY2VuZGVudF0odGhpcy5kYXRhc2V0cykpeygwLG8ud2FybikoYFhGQSAtIEludmFsaWQgcmVmICgke2l9KTogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLmApO2NvbnRpbnVlfWNvbnN0IGU9KDAsbi5zZWFyY2hOb2RlKSh0aGlzLnJvb3QsdCxjLCEwLCExKTtpZighZSl7KDAsby53YXJuKShgWEZBIC0gSW52YWxpZCBsYWJlbDogJHtjfS5gKTtjb250aW51ZX1jb25zdFtoXT1lO2lmKCFoW3IuJGlzRGVzY2VuZGVudF0odGhpcy5kYXRhc2V0cykpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgbGFiZWw6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC4iKTtjb250aW51ZX1jb25zdCB1PSgwLG4uc2VhcmNoTm9kZSkodGhpcy5yb290LHQsbCwhMCwhMSk7aWYoIXUpeygwLG8ud2FybikoYFhGQSAtIEludmFsaWQgdmFsdWU6ICR7bH0uYCk7Y29udGludWV9Y29uc3RbZF09dTtpZighZFtyLiRpc0Rlc2NlbmRlbnRdKHRoaXMuZGF0YXNldHMpKXsoMCxvLndhcm4pKCJYRkEgLSBJbnZhbGlkIHZhbHVlOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuIik7Y29udGludWV9Y29uc3QgZj1jcmVhdGVUZXh0KGhbci4kdGV4dF0oKSksZz1jcmVhdGVUZXh0KGRbci4kdGV4dF0oKSk7YVtyLiRhcHBlbmRDaGlsZF0oZik7YS50ZXh0LnB1c2goZik7c1tyLiRhcHBlbmRDaGlsZF0oZyk7cy50ZXh0LnB1c2goZyl9ZWxzZSgwLG8ud2FybikoYFhGQSAtIEludmFsaWQgcmVmZXJlbmNlOiAke2l9LmApfX1fYmluZE9jY3VycmVuY2VzKGUsdCxhKXtsZXQgaTtpZih0Lmxlbmd0aD4xKXtpPWVbci4kY2xvbmVdKCk7aVtyLiRyZW1vdmVDaGlsZF0oaS5vY2N1cik7aS5vY2N1cj1udWxsfXRoaXMuX2JpbmRWYWx1ZShlLHRbMF0sYSk7dGhpcy5fc2V0UHJvcGVydGllcyhlLHRbMF0pO3RoaXMuX2JpbmRJdGVtcyhlLHRbMF0pO2lmKDE9PT10Lmxlbmd0aClyZXR1cm47Y29uc3Qgbj1lW3IuJGdldFBhcmVudF0oKSxzPWVbci4kbm9kZU5hbWVdLG89bltyLiRpbmRleE9mXShlKTtmb3IobGV0IGU9MSxjPXQubGVuZ3RoO2U8YztlKyspe2NvbnN0IGM9dFtlXSxsPWlbci4kY2xvbmVdKCk7bltzXS5wdXNoKGwpO25bci4kaW5zZXJ0QXRdKG8rZSxsKTt0aGlzLl9iaW5kVmFsdWUobCxjLGEpO3RoaXMuX3NldFByb3BlcnRpZXMobCxjKTt0aGlzLl9iaW5kSXRlbXMobCxjKX19X2NyZWF0ZU9jY3VycmVuY2VzKGUpe2lmKCF0aGlzLmVtcHR5TWVyZ2UpcmV0dXJuO2NvbnN0e29jY3VyOnR9PWU7aWYoIXR8fHQuaW5pdGlhbDw9MSlyZXR1cm47Y29uc3QgYT1lW3IuJGdldFBhcmVudF0oKSxpPWVbci4kbm9kZU5hbWVdO2lmKCEoYVtpXWluc3RhbmNlb2Ygci5YRkFPYmplY3RBcnJheSkpcmV0dXJuO2xldCBuO249ZS5uYW1lP2FbaV0uY2hpbGRyZW4uZmlsdGVyKCh0PT50Lm5hbWU9PT1lLm5hbWUpKS5sZW5ndGg6YVtpXS5jaGlsZHJlbi5sZW5ndGg7Y29uc3Qgcz1hW3IuJGluZGV4T2ZdKGUpKzEsbz10LmluaXRpYWwtbjtpZihvKXtjb25zdCB0PWVbci4kY2xvbmVdKCk7dFtyLiRyZW1vdmVDaGlsZF0odC5vY2N1cik7dC5vY2N1cj1udWxsO2FbaV0ucHVzaCh0KTthW3IuJGluc2VydEF0XShzLHQpO2ZvcihsZXQgZT0xO2U8bztlKyspe2NvbnN0IG49dFtyLiRjbG9uZV0oKTthW2ldLnB1c2gobik7YVtyLiRpbnNlcnRBdF0ocytlLG4pfX19X2dldE9jY3VySW5mbyhlKXtjb25zdHtuYW1lOnQsb2NjdXI6YX09ZTtpZighYXx8IXQpcmV0dXJuWzEsMV07Y29uc3Qgcj0tMT09PWEubWF4PzEvMDphLm1heDtyZXR1cm5bYS5taW4scl19X3NldEFuZEJpbmQoZSx0KXt0aGlzLl9zZXRQcm9wZXJ0aWVzKGUsdCk7dGhpcy5fYmluZEl0ZW1zKGUsdCk7dGhpcy5fYmluZEVsZW1lbnQoZSx0KX1fYmluZEVsZW1lbnQoZSx0KXtjb25zdCBhPVtdO3RoaXMuX2NyZWF0ZU9jY3VycmVuY2VzKGUpO2Zvcihjb25zdCBpIG9mIGVbci4kZ2V0Q2hpbGRyZW5dKCkpe2lmKGlbci4kZGF0YV0pY29udGludWU7aWYodm9pZCAwPT09dGhpcy5fbWVyZ2VNb2RlJiYic3ViZm9ybSI9PT1pW3IuJG5vZGVOYW1lXSl7dGhpcy5fbWVyZ2VNb2RlPSJjb25zdW1lRGF0YSI9PT1pLm1lcmdlTW9kZTtjb25zdCBlPXRbci4kZ2V0Q2hpbGRyZW5dKCk7aWYoZS5sZW5ndGg+MCl0aGlzLl9iaW5kT2NjdXJyZW5jZXMoaSxbZVswXV0sbnVsbCk7ZWxzZSBpZih0aGlzLmVtcHR5TWVyZ2Upe2NvbnN0IGU9dFtyLiRuYW1lc3BhY2VJZF09PT1jPy0xOnRbci4kbmFtZXNwYWNlSWRdLGE9aVtyLiRkYXRhXT1uZXcgci5YbWxPYmplY3QoZSxpLm5hbWV8fCJyb290Iik7dFtyLiRhcHBlbmRDaGlsZF0oYSk7dGhpcy5fYmluZEVsZW1lbnQoaSxhKX1jb250aW51ZX1pZighaVtyLiRpc0JpbmRhYmxlXSgpKWNvbnRpbnVlO2xldCBlPSExLHM9bnVsbCxsPW51bGwsaD1udWxsO2lmKGkuYmluZCl7c3dpdGNoKGkuYmluZC5tYXRjaCl7Y2FzZSJub25lIjp0aGlzLl9zZXRBbmRCaW5kKGksdCk7Y29udGludWU7Y2FzZSJnbG9iYWwiOmU9ITA7YnJlYWs7Y2FzZSJkYXRhUmVmIjppZighaS5iaW5kLnJlZil7KDAsby53YXJuKShgWEZBIC0gcmVmIGlzIGVtcHR5IGluIG5vZGUgJHtpW3IuJG5vZGVOYW1lXX0uYCk7dGhpcy5fc2V0QW5kQmluZChpLHQpO2NvbnRpbnVlfWw9aS5iaW5kLnJlZn1pLmJpbmQucGljdHVyZSYmKHM9aS5iaW5kLnBpY3R1cmVbci4kY29udGVudF0pfWNvbnN0W3UsZF09dGhpcy5fZ2V0T2NjdXJJbmZvKGkpO2lmKGwpe2g9KDAsbi5zZWFyY2hOb2RlKSh0aGlzLnJvb3QsdCxsLCEwLCExKTtpZihudWxsPT09aCl7aD0oMCxuLmNyZWF0ZURhdGFOb2RlKSh0aGlzLmRhdGEsdCxsKTtpZighaCljb250aW51ZTt0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJihoW3IuJGNvbnN1bWVkXT0hMCk7dGhpcy5fc2V0QW5kQmluZChpLGgpO2NvbnRpbnVlfXRoaXMuX2lzQ29uc3VtZURhdGEoKSYmKGg9aC5maWx0ZXIoKGU9PiFlW3IuJGNvbnN1bWVkXSkpKTtoLmxlbmd0aD5kP2g9aC5zbGljZSgwLGQpOjA9PT1oLmxlbmd0aCYmKGg9bnVsbCk7aCYmdGhpcy5faXNDb25zdW1lRGF0YSgpJiZoLmZvckVhY2goKGU9PntlW3IuJGNvbnN1bWVkXT0hMH0pKX1lbHNle2lmKCFpLm5hbWUpe3RoaXMuX3NldEFuZEJpbmQoaSx0KTtjb250aW51ZX1pZih0aGlzLl9pc0NvbnN1bWVEYXRhKCkpe2NvbnN0IGE9W107Zm9yKDthLmxlbmd0aDxkOyl7Y29uc3Qgbj10aGlzLl9maW5kRGF0YUJ5TmFtZVRvQ29uc3VtZShpLm5hbWUsaVtyLiRoYXNTZXR0YWJsZVZhbHVlXSgpLHQsZSk7aWYoIW4pYnJlYWs7bltyLiRjb25zdW1lZF09ITA7YS5wdXNoKG4pfWg9YS5sZW5ndGg+MD9hOm51bGx9ZWxzZXtoPXRbci4kZ2V0UmVhbENoaWxkcmVuQnlOYW1lSXRdKGkubmFtZSwhMSx0aGlzLmVtcHR5TWVyZ2UpLm5leHQoKS52YWx1ZTtpZighaCl7aWYoMD09PXUpe2EucHVzaChpKTtjb250aW51ZX1jb25zdCBlPXRbci4kbmFtZXNwYWNlSWRdPT09Yz8tMTp0W3IuJG5hbWVzcGFjZUlkXTtoPWlbci4kZGF0YV09bmV3IHIuWG1sT2JqZWN0KGUsaS5uYW1lKTt0aGlzLmVtcHR5TWVyZ2UmJihoW3IuJGNvbnN1bWVkXT0hMCk7dFtyLiRhcHBlbmRDaGlsZF0oaCk7dGhpcy5fc2V0QW5kQmluZChpLGgpO2NvbnRpbnVlfXRoaXMuZW1wdHlNZXJnZSYmKGhbci4kY29uc3VtZWRdPSEwKTtoPVtoXX19aD90aGlzLl9iaW5kT2NjdXJyZW5jZXMoaSxoLHMpOnU+MD90aGlzLl9zZXRBbmRCaW5kKGksdCk6YS5wdXNoKGkpfWEuZm9yRWFjaCgoZT0+ZVtyLiRnZXRQYXJlbnRdKClbci4kcmVtb3ZlQ2hpbGRdKGUpKSl9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlZhbHVlPXQuVGV4dD10LlRlbXBsYXRlTmFtZXNwYWNlPXQuVGVtcGxhdGU9dC5TZXRQcm9wZXJ0eT10Lkl0ZW1zPXQuRmllbGQ9dC5CaW5kSXRlbXM9dm9pZCAwO3ZhciByPWEoNzgpLGk9YSg4MCksbj1hKDg0KSxzPWEoODUpLG89YSg3OSksYz1hKDIpLGw9YSg4NiksaD1hKDMpLHU9YSg4MSk7Y29uc3QgZD1pLk5hbWVzcGFjZUlkcy50ZW1wbGF0ZS5pZCxmPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsZz0vXkgoXGQrKSQvLHA9bmV3IFNldChbImltYWdlL2dpZiIsImltYWdlL2pwZWciLCJpbWFnZS9qcGciLCJpbWFnZS9wanBlZyIsImltYWdlL3BuZyIsImltYWdlL2FwbmciLCJpbWFnZS94LXBuZyIsImltYWdlL2JtcCIsImltYWdlL3gtbXMtYm1wIiwiaW1hZ2UvdGlmZiIsImltYWdlL3RpZiIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdKSxtPVtbWzY2LDc3XSwiaW1hZ2UvYm1wIl0sW1syNTUsMjE2LDI1NV0sImltYWdlL2pwZWciXSxbWzczLDczLDQyLDBdLCJpbWFnZS90aWZmIl0sW1s3Nyw3NywwLDQyXSwiaW1hZ2UvdGlmZiJdLFtbNzEsNzMsNzAsNTYsNTcsOTddLCJpbWFnZS9naWYiXSxbWzEzNyw4MCw3OCw3MSwxMywxMCwyNiwxMF0sImltYWdlL3BuZyJdXTtmdW5jdGlvbiBnZXRCb3JkZXJEaW1zKGUpe2lmKCFlfHwhZS5ib3JkZXIpcmV0dXJue3c6MCxoOjB9O2NvbnN0IHQ9ZS5ib3JkZXJbci4kZ2V0RXh0cmFdKCk7cmV0dXJuIHQ/e3c6dC53aWR0aHNbMF0rdC53aWR0aHNbMl0rdC5pbnNldHNbMF0rdC5pbnNldHNbMl0saDp0LndpZHRoc1sxXSt0LndpZHRoc1szXSt0Lmluc2V0c1sxXSt0Lmluc2V0c1szXX06e3c6MCxoOjB9fWZ1bmN0aW9uIGhhc01hcmdpbihlKXtyZXR1cm4gZS5tYXJnaW4mJihlLm1hcmdpbi50b3BJbnNldHx8ZS5tYXJnaW4ucmlnaHRJbnNldHx8ZS5tYXJnaW4uYm90dG9tSW5zZXR8fGUubWFyZ2luLmxlZnRJbnNldCl9ZnVuY3Rpb24gX3NldFZhbHVlKGUsdCl7aWYoIWUudmFsdWUpe2NvbnN0IHQ9bmV3IFZhbHVlKHt9KTtlW3IuJGFwcGVuZENoaWxkXSh0KTtlLnZhbHVlPXR9ZS52YWx1ZVtyLiRzZXRWYWx1ZV0odCl9ZnVuY3Rpb24qZ2V0Q29udGFpbmVkQ2hpbGRyZW4oZSl7Zm9yKGNvbnN0IHQgb2YgZVtyLiRnZXRDaGlsZHJlbl0oKSl0IGluc3RhbmNlb2YgU3ViZm9ybVNldD95aWVsZCp0W3IuJGdldENvbnRhaW5lZENoaWxkcmVuXSgpOnlpZWxkIHR9ZnVuY3Rpb24gaXNSZXF1aXJlZChlKXtyZXR1cm4iZXJyb3IiPT09ZS52YWxpZGF0ZT8ubnVsbFRlc3R9ZnVuY3Rpb24gc2V0VGFiSW5kZXgoZSl7Zm9yKDtlOyl7aWYoIWUudHJhdmVyc2FsKXtlW3IuJHRhYkluZGV4XT1lW3IuJGdldFBhcmVudF0oKVtyLiR0YWJJbmRleF07cmV0dXJufWlmKGVbci4kdGFiSW5kZXhdKXJldHVybjtsZXQgdD1udWxsO2Zvcihjb25zdCBhIG9mIGUudHJhdmVyc2FsW3IuJGdldENoaWxkcmVuXSgpKWlmKCJuZXh0Ij09PWEub3BlcmF0aW9uKXt0PWE7YnJlYWt9aWYoIXR8fCF0LnJlZil7ZVtyLiR0YWJJbmRleF09ZVtyLiRnZXRQYXJlbnRdKClbci4kdGFiSW5kZXhdO3JldHVybn1jb25zdCBhPWVbci4kZ2V0VGVtcGxhdGVSb290XSgpO2Vbci4kdGFiSW5kZXhdPSsrYVtyLiR0YWJJbmRleF07Y29uc3QgaT1hW3IuJHNlYXJjaE5vZGVdKHQucmVmLGUpO2lmKCFpKXJldHVybjtlPWlbMF19fWZ1bmN0aW9uIGFwcGx5QXNzaXN0KGUsdCl7Y29uc3QgYT1lLmFzc2lzdDtpZihhKXtjb25zdCBlPWFbci4kdG9IVE1MXSgpO2UmJih0LnRpdGxlPWUpO2NvbnN0IGk9YS5yb2xlLm1hdGNoKGcpO2lmKGkpe2NvbnN0IGU9ImhlYWRpbmciLGE9aVsxXTt0LnJvbGU9ZTt0WyJhcmlhLWxldmVsIl09YX19aWYoInRhYmxlIj09PWUubGF5b3V0KXQucm9sZT0idGFibGUiO2Vsc2UgaWYoInJvdyI9PT1lLmxheW91dCl0LnJvbGU9InJvdyI7ZWxzZXtjb25zdCBhPWVbci4kZ2V0UGFyZW50XSgpOyJyb3ciPT09YS5sYXlvdXQmJigiVEgiPT09YS5hc3Npc3Q/LnJvbGU/dC5yb2xlPSJjb2x1bW5oZWFkZXIiOnQucm9sZT0iY2VsbCIpfX1mdW5jdGlvbiBhcmlhTGFiZWwoZSl7aWYoIWUuYXNzaXN0KXJldHVybiBudWxsO2NvbnN0IHQ9ZS5hc3Npc3Q7cmV0dXJuIHQuc3BlYWsmJiIiIT09dC5zcGVha1tyLiRjb250ZW50XT90LnNwZWFrW3IuJGNvbnRlbnRdOnQudG9vbFRpcD90LnRvb2xUaXBbci4kY29udGVudF06bnVsbH1mdW5jdGlvbiB2YWx1ZVRvSHRtbChlKXtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFSaWNoIl0sc3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sY2hpbGRyZW46W3tuYW1lOiJzcGFuIixhdHRyaWJ1dGVzOntzdHlsZTpPYmplY3QuY3JlYXRlKG51bGwpfSx2YWx1ZTplfV19KX1mdW5jdGlvbiBzZXRGaXJzdFVuc3BsaXR0YWJsZShlKXtjb25zdCB0PWVbci4kZ2V0VGVtcGxhdGVSb290XSgpO2lmKG51bGw9PT10W3IuJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZSl7dFtyLiRleHRyYV0uZmlyc3RVbnNwbGl0dGFibGU9ZTt0W3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9ITB9fWZ1bmN0aW9uIHVuc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW3IuJGdldFRlbXBsYXRlUm9vdF0oKTt0W3IuJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZT09PWUmJih0W3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9ITEpfWZ1bmN0aW9uIGhhbmRsZUJyZWFrKGUpe2lmKGVbci4kZXh0cmFdKXJldHVybiExO2Vbci4kZXh0cmFdPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoImF1dG8iPT09ZS50YXJnZXRUeXBlKXJldHVybiExO2NvbnN0IHQ9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKCk7bGV0IGE9bnVsbDtpZihlLnRhcmdldCl7YT10W3IuJHNlYXJjaE5vZGVdKGUudGFyZ2V0LGVbci4kZ2V0UGFyZW50XSgpKTtpZighYSlyZXR1cm4hMTthPWFbMF19Y29uc3R7Y3VycmVudFBhZ2VBcmVhOmksY3VycmVudENvbnRlbnRBcmVhOm59PXRbci4kZXh0cmFdO2lmKCJwYWdlQXJlYSI9PT1lLnRhcmdldFR5cGUpe2EgaW5zdGFuY2VvZiBQYWdlQXJlYXx8KGE9bnVsbCk7aWYoZS5zdGFydE5ldyl7ZVtyLiRleHRyYV0udGFyZ2V0PWF8fGk7cmV0dXJuITB9aWYoYSYmYSE9PWkpe2Vbci4kZXh0cmFdLnRhcmdldD1hO3JldHVybiEwfXJldHVybiExfWEgaW5zdGFuY2VvZiBDb250ZW50QXJlYXx8KGE9bnVsbCk7Y29uc3Qgcz1hJiZhW3IuJGdldFBhcmVudF0oKTtsZXQgbyxjPXM7aWYoZS5zdGFydE5ldylpZihhKXtjb25zdCBlPXMuY29udGVudEFyZWEuY2hpbGRyZW4sdD1lLmluZGV4T2Yobikscj1lLmluZGV4T2YoYSk7LTEhPT10JiZ0PHImJihjPW51bGwpO289ci0xfWVsc2Ugbz1pLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2Yobik7ZWxzZXtpZighYXx8YT09PW4pcmV0dXJuITE7bz1zLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoYSktMTtjPXM9PT1pP251bGw6c31lW3IuJGV4dHJhXS50YXJnZXQ9YztlW3IuJGV4dHJhXS5pbmRleD1vO3JldHVybiEwfWZ1bmN0aW9uIGhhbmRsZU92ZXJmbG93KGUsdCxhKXtjb25zdCBpPWVbci4kZ2V0VGVtcGxhdGVSb290XSgpLG49aVtyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlLHM9dFtyLiRnZXRTdWJmb3JtUGFyZW50XTt0W3IuJGdldFN1YmZvcm1QYXJlbnRdPSgpPT5lO2lbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMDtjb25zdCBvPXRbci4kdG9IVE1MXShhKTtlW3IuJGFkZEhUTUxdKG8uaHRtbCxvLmJib3gpO2lbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT1uO3Rbci4kZ2V0U3ViZm9ybVBhcmVudF09c31jbGFzcyBBcHBlYXJhbmNlRmlsdGVyIGV4dGVuZHMgci5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYXBwZWFyYW5jZUZpbHRlciIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQXJjIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYXJjIiwhMCk7dGhpcy5jaXJjdWxhcj0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuY2lyY3VsYXIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmhhbmQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnN0YXJ0QW5nbGU9KDAsby5nZXRGbG9hdCkoe2RhdGE6ZS5zdGFydEFuZ2xlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5zd2VlcEFuZ2xlPSgwLG8uZ2V0RmxvYXQpKHtkYXRhOmUuc3dlZXBBbmdsZSxkZWZhdWx0VmFsdWU6MzYwLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsO3RoaXMuZmlsbD1udWxsfVtyLiR0b0hUTUxdKCl7Y29uc3QgZT10aGlzLmVkZ2V8fG5ldyBFZGdlKHt9KSx0PWVbci4kdG9TdHlsZV0oKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW3IuJHRvU3R5bGVdKCkpOmEuZmlsbD0idHJhbnNwYXJlbnQiO2Euc3Ryb2tlV2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKCJ2aXNpYmxlIj09PWUucHJlc2VuY2U/ZS50aGlja25lc3M6MCk7YS5zdHJva2U9dC5jb2xvcjtsZXQgaTtjb25zdCBuPXt4bWxuczpmLHN0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixvdmVyZmxvdzoidmlzaWJsZSJ9fTtpZigzNjA9PT10aGlzLnN3ZWVwQW5nbGUpaT17bmFtZToiZWxsaXBzZSIsYXR0cmlidXRlczp7eG1sbnM6ZixjeDoiNTAlIixjeToiNTAlIixyeDoiNTAlIixyeToiNTAlIixzdHlsZTphfX07ZWxzZXtjb25zdCBlPXRoaXMuc3RhcnRBbmdsZSpNYXRoLlBJLzE4MCx0PXRoaXMuc3dlZXBBbmdsZSpNYXRoLlBJLzE4MCxyPXRoaXMuc3dlZXBBbmdsZT4xODA/MTowLFtzLG8sYyxsXT1bNTAqKDErTWF0aC5jb3MoZSkpLDUwKigxLU1hdGguc2luKGUpKSw1MCooMStNYXRoLmNvcyhlK3QpKSw1MCooMS1NYXRoLnNpbihlK3QpKV07aT17bmFtZToicGF0aCIsYXR0cmlidXRlczp7eG1sbnM6ZixkOmBNICR7c30gJHtvfSBBIDUwIDUwIDAgJHtyfSAwICR7Y30gJHtsfWAsdmVjdG9yRWZmZWN0OiJub24tc2NhbGluZy1zdHJva2UiLHN0eWxlOmF9fTtPYmplY3QuYXNzaWduKG4se3ZpZXdCb3g6IjAgMCAxMDAgMTAwIixwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJub25lIn0pfWNvbnN0IGM9e25hbWU6InN2ZyIsY2hpbGRyZW46W2ldLGF0dHJpYnV0ZXM6bn07aWYoaGFzTWFyZ2luKHRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W2NdfSk7Yy5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKGMpfX1jbGFzcyBBcmVhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYXJlYSIsITApO3RoaXMuY29sU3Bhbj0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueD0oMCxvLmdldE1lYXN1cmVtZW50KShlLngsIjBwdCIpO3RoaXMueT0oMCxvLmdldE1lYXN1cmVtZW50KShlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5hcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgci5YRkFPYmplY3RBcnJheX0qW3IuJGdldENvbnRhaW5lZENoaWxkcmVuXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVtyLiRpc1RyYW5zcGFyZW50XSgpe3JldHVybiEwfVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRhZGRIVE1MXShlLHQpe2NvbnN0W2EsaSxuLHNdPXQ7dGhpc1tyLiRleHRyYV0ud2lkdGg9TWF0aC5tYXgodGhpc1tyLiRleHRyYV0ud2lkdGgsYStuKTt0aGlzW3IuJGV4dHJhXS5oZWlnaHQ9TWF0aC5tYXgodGhpc1tyLiRleHRyYV0uaGVpZ2h0LGkrcyk7dGhpc1tyLiRleHRyYV0uY2hpbGRyZW4ucHVzaChlKX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuIHRoaXNbci4kZXh0cmFdLmF2YWlsYWJsZVNwYWNlfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9KDAscy50b1N0eWxlKSh0aGlzLCJwb3NpdGlvbiIpLGE9e3N0eWxlOnQsaWQ6dGhpc1tyLiR1aWRdLGNsYXNzOlsieGZhQXJlYSJdfTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmYS5jbGFzcy5wdXNoKCJ4ZmFQcmludE9ubHkiKTt0aGlzLm5hbWUmJihhLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBpPVtdO3RoaXNbci4kZXh0cmFdPXtjaGlsZHJlbjppLHdpZHRoOjAsaGVpZ2h0OjAsYXZhaWxhYmxlU3BhY2U6ZX07Y29uc3Qgbj10aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwiZXhjbEdyb3VwIiwic3ViZm9ybSIsInN1YmZvcm1TZXQiXSksaW5jbHVkZTohMH0pO2lmKCFuLnN1Y2Nlc3Mpe2lmKG4uaXNCcmVhaygpKXJldHVybiBuO2RlbGV0ZSB0aGlzW3IuJGV4dHJhXTtyZXR1cm4gby5IVE1MUmVzdWx0LkZBSUxVUkV9dC53aWR0aD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpc1tyLiRleHRyYV0ud2lkdGgpO3QuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzW3IuJGV4dHJhXS5oZWlnaHQpO2NvbnN0IGM9e25hbWU6ImRpdiIsYXR0cmlidXRlczphLGNoaWxkcmVuOml9LGw9W3RoaXMueCx0aGlzLnksdGhpc1tyLiRleHRyYV0ud2lkdGgsdGhpc1tyLiRleHRyYV0uaGVpZ2h0XTtkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKGMsbCl9fWNsYXNzIEFzc2lzdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImFzc2lzdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yb2xlPWUucm9sZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3BlYWs9bnVsbDt0aGlzLnRvb2xUaXA9bnVsbH1bci4kdG9IVE1MXSgpe3JldHVybiB0aGlzLnRvb2xUaXA/LltyLiRjb250ZW50XXx8bnVsbH19Y2xhc3MgQmFyY29kZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJhcmNvZGUiLCEwKTt0aGlzLmNoYXJFbmNvZGluZz0oMCxvLmdldEtleXdvcmQpKHtkYXRhOmUuY2hhckVuY29kaW5nP2UuY2hhckVuY29kaW5nLnRvTG93ZXJDYXNlKCk6IiIsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PlsidXRmLTgiLCJiaWctZml2ZSIsImZvbnRzcGVjaWZpYyIsImdiayIsImdiLTE4MDMwIiwiZ2ItMjMxMiIsImtzYy01NjAxIiwibm9uZSIsInNoaWZ0LWppcyIsInVjcy0yIiwidXRmLTE2Il0uaW5jbHVkZXMoZSl8fGUubWF0Y2goL2lzby04ODU5LVxkezJ9Lyl9KTt0aGlzLmNoZWNrc3VtPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmNoZWNrc3VtLFsibm9uZSIsIjFtb2QxMCIsIjFtb2QxMF8xbW9kMTEiLCIybW9kMTAiLCJhdXRvIl0pO3RoaXMuZGF0YUNvbHVtbkNvdW50PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5kYXRhQ29sdW1uQ291bnQsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmRhdGFMZW5ndGg9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmRhdGFMZW5ndGgsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmRhdGFQcmVwPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmRhdGFQcmVwLFsibm9uZSIsImZsYXRlQ29tcHJlc3MiXSk7dGhpcy5kYXRhUm93Q291bnQ9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmRhdGFSb3dDb3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZW5kQ2hhcj1lLmVuZENoYXJ8fCIiO3RoaXMuZXJyb3JDb3JyZWN0aW9uTGV2ZWw9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmVycm9yQ29ycmVjdGlvbkxldmVsLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wJiZlPD04fSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1vZHVsZUhlaWdodD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1vZHVsZUhlaWdodCwiNW1tIik7dGhpcy5tb2R1bGVXaWR0aD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1vZHVsZVdpZHRoLCIwLjI1bW0iKTt0aGlzLnByaW50Q2hlY2tEaWdpdD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUucHJpbnRDaGVja0RpZ2l0LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5yb3dDb2x1bW5SYXRpbz0oMCxvLmdldFJhdGlvKShlLnJvd0NvbHVtblJhdGlvKTt0aGlzLnN0YXJ0Q2hhcj1lLnN0YXJ0Q2hhcnx8IiI7dGhpcy50ZXh0TG9jYXRpb249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudGV4dExvY2F0aW9uLFsiYmVsb3ciLCJhYm92ZSIsImFib3ZlRW1iZWRkZWQiLCJiZWxvd0VtYmVkZGVkIiwibm9uZSJdKTt0aGlzLnRydW5jYXRlPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS50cnVuY2F0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlP2UudHlwZS50b0xvd2VyQ2FzZSgpOiIiLFsiYXp0ZWMiLCJjb2RhYmFyIiwiY29kZTJvZjVpbmR1c3RyaWFsIiwiY29kZTJvZjVpbnRlcmxlYXZlZCIsImNvZGUyb2Y1bWF0cml4IiwiY29kZTJvZjVzdGFuZGFyZCIsImNvZGUzb2Y5IiwiY29kZTNvZjlleHRlbmRlZCIsImNvZGUxMSIsImNvZGU0OSIsImNvZGU5MyIsImNvZGUxMjgiLCJjb2RlMTI4YSIsImNvZGUxMjhiIiwiY29kZTEyOGMiLCJjb2RlMTI4c3NjYyIsImRhdGFtYXRyaXgiLCJlYW44IiwiZWFuOGFkZDIiLCJlYW44YWRkNSIsImVhbjEzIiwiZWFuMTNhZGQyIiwiZWFuMTNhZGQ1IiwiZWFuMTNwd2NkIiwiZmltIiwibG9nbWFycyIsIm1heGljb2RlIiwibXNpIiwicGRmNDE3IiwicGRmNDE3bWFjcm8iLCJwbGVzc2V5IiwicG9zdGF1c2N1c3QyIiwicG9zdGF1c2N1c3QzIiwicG9zdGF1c3JlcGx5cGFpZCIsInBvc3RhdXNzdGFuZGFyZCIsInBvc3R1a3JtNHNjYyIsInBvc3R1c2RwYmMiLCJwb3N0dXNpbWIiLCJwb3N0dXNzdGFuZGFyZCIsInBvc3R1czV6aXAiLCJxcmNvZGUiLCJyZmlkIiwicnNzMTQiLCJyc3MxNGV4cGFuZGVkIiwicnNzMTRsaW1pdGVkIiwicnNzMTRzdGFja2VkIiwicnNzMTRzdGFja2Vkb21uaSIsInJzczE0dHJ1bmNhdGVkIiwidGVsZXBlbiIsInVjYzEyOCIsInVjYzEyOHJhbmRvbSIsInVjYzEyOHNzY2MiLCJ1cGNhIiwidXBjYWFkZDIiLCJ1cGNhYWRkNSIsInVwY2Fwd2NkIiwidXBjZSIsInVwY2VhZGQyIiwidXBjZWFkZDUiLCJ1cGNlYW4yIiwidXBjZWFuNSIsInVwc21heGljb2RlIl0pO3RoaXMudXBzTW9kZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS51cHNNb2RlLFsidXNDYXJyaWVyIiwiaW50ZXJuYXRpb25hbENhcnJpZXIiLCJzZWN1cmVTeW1ib2wiLCJzdGFuZGFyZFN5bWJvbCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53aWRlTmFycm93UmF0aW89KDAsby5nZXRSYXRpbykoZS53aWRlTmFycm93UmF0aW8pO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIEJpbmQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJiaW5kIiwhMCk7dGhpcy5tYXRjaD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5tYXRjaCxbIm9uY2UiLCJkYXRhUmVmIiwiZ2xvYmFsIiwibm9uZSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEJpbmRJdGVtcyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJpbmRJdGVtcyIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMubGFiZWxSZWY9ZS5sYWJlbFJlZnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudmFsdWVSZWY9ZS52YWx1ZVJlZnx8IiJ9fXQuQmluZEl0ZW1zPUJpbmRJdGVtcztjbGFzcyBCb29rZW5kIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYm9va2VuZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQm9vbGVhbkVsZW1lbnQgZXh0ZW5kcyByLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJvb2xlYW4iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwoMT09PXRoaXNbci4kY29udGVudF0/IjEiOiIwIil9fWNsYXNzIEJvcmRlciBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJvcmRlciIsITApO3RoaXMuYnJlYWs9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYnJlYWssWyJjbG9zZSIsIm9wZW4iXSk7dGhpcy5oYW5kPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmVzZW5jZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgci5YRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbGw9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtyLiRnZXRFeHRyYV0oKXtpZighdGhpc1tyLiRleHRyYV0pe2NvbnN0IGU9dGhpcy5lZGdlLmNoaWxkcmVuLnNsaWNlKCk7aWYoZS5sZW5ndGg8NCl7Y29uc3QgdD1lLmF0KC0xKXx8bmV3IEVkZ2Uoe30pO2ZvcihsZXQgYT1lLmxlbmd0aDthPDQ7YSsrKWUucHVzaCh0KX1jb25zdCB0PWUubWFwKChlPT5lLnRoaWNrbmVzcykpLGE9WzAsMCwwLDBdO2lmKHRoaXMubWFyZ2luKXthWzBdPXRoaXMubWFyZ2luLnRvcEluc2V0O2FbMV09dGhpcy5tYXJnaW4ucmlnaHRJbnNldDthWzJdPXRoaXMubWFyZ2luLmJvdHRvbUluc2V0O2FbM109dGhpcy5tYXJnaW4ubGVmdEluc2V0fXRoaXNbci4kZXh0cmFdPXt3aWR0aHM6dCxpbnNldHM6YSxlZGdlczplfX1yZXR1cm4gdGhpc1tyLiRleHRyYV19W3IuJHRvU3R5bGVdKCl7Y29uc3R7ZWRnZXM6ZX09dGhpc1tyLiRnZXRFeHRyYV0oKSx0PWUubWFwKChlPT57Y29uc3QgdD1lW3IuJHRvU3R5bGVdKCk7dC5jb2xvcnx8PSIjMDAwMDAwIjtyZXR1cm4gdH0pKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5tYXJnaW4mJk9iamVjdC5hc3NpZ24oYSx0aGlzLm1hcmdpbltyLiR0b1N0eWxlXSgpKTsidmlzaWJsZSI9PT10aGlzLmZpbGw/LnByZXNlbmNlJiZPYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW3IuJHRvU3R5bGVdKCkpO2lmKHRoaXMuY29ybmVyLmNoaWxkcmVuLnNvbWUoKGU9PjAhPT1lLnJhZGl1cykpKXtjb25zdCBlPXRoaXMuY29ybmVyLmNoaWxkcmVuLm1hcCgoZT0+ZVtyLiR0b1N0eWxlXSgpKSk7aWYoMj09PWUubGVuZ3RofHwzPT09ZS5sZW5ndGgpe2NvbnN0IHQ9ZS5hdCgtMSk7Zm9yKGxldCBhPWUubGVuZ3RoO2E8NDthKyspZS5wdXNoKHQpfWEuYm9yZGVyUmFkaXVzPWUubWFwKChlPT5lLnJhZGl1cykpLmpvaW4oIiAiKX1zd2l0Y2godGhpcy5wcmVzZW5jZSl7Y2FzZSJpbnZpc2libGUiOmNhc2UiaGlkZGVuIjphLmJvcmRlclN0eWxlPSIiO2JyZWFrO2Nhc2UiaW5hY3RpdmUiOmEuYm9yZGVyU3R5bGU9Im5vbmUiO2JyZWFrO2RlZmF1bHQ6YS5ib3JkZXJTdHlsZT10Lm1hcCgoZT0+ZS5zdHlsZSkpLmpvaW4oIiAiKX1hLmJvcmRlcldpZHRoPXQubWFwKChlPT5lLndpZHRoKSkuam9pbigiICIpO2EuYm9yZGVyQ29sb3I9dC5tYXAoKGU9PmUuY29sb3IpKS5qb2luKCIgIik7cmV0dXJuIGF9fWNsYXNzIEJyZWFrIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYnJlYWsiLCEwKTt0aGlzLmFmdGVyPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmFmdGVyLFsiYXV0byIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiLCJwYWdlRXZlbiIsInBhZ2VPZGQiXSk7dGhpcy5hZnRlclRhcmdldD1lLmFmdGVyVGFyZ2V0fHwiIjt0aGlzLmJlZm9yZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5iZWZvcmUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSIsInBhZ2VFdmVuIiwicGFnZU9kZCJdKTt0aGlzLmJlZm9yZVRhcmdldD1lLmJlZm9yZVRhcmdldHx8IiI7dGhpcy5ib29rZW5kTGVhZGVyPWUuYm9va2VuZExlYWRlcnx8IiI7dGhpcy5ib29rZW5kVHJhaWxlcj1lLmJvb2tlbmRUcmFpbGVyfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcmZsb3dMZWFkZXI9ZS5vdmVyZmxvd0xlYWRlcnx8IiI7dGhpcy5vdmVyZmxvd1RhcmdldD1lLm92ZXJmbG93VGFyZ2V0fHwiIjt0aGlzLm92ZXJmbG93VHJhaWxlcj1lLm92ZXJmbG93VHJhaWxlcnx8IiI7dGhpcy5zdGFydE5ldz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgQnJlYWtBZnRlciBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJyZWFrQWZ0ZXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnN0YXJ0TmV3PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRhcmdldFR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudGFyZ2V0VHlwZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl0pO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnNjcmlwdD1udWxsfX1jbGFzcyBCcmVha0JlZm9yZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJyZWFrQmVmb3JlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy5zdGFydE5ldz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50YXJnZXRUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKTt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zY3JpcHQ9bnVsbH1bci4kdG9IVE1MXShlKXt0aGlzW3IuJGV4dHJhXT17fTtyZXR1cm4gby5IVE1MUmVzdWx0LkZBSUxVUkV9fWNsYXNzIEJ1dHRvbiBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJ1dHRvbiIsITApO3RoaXMuaGlnaGxpZ2h0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhpZ2hsaWdodCxbImludmVydGVkIiwibm9uZSIsIm91dGxpbmUiLCJwdXNoIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD10aGlzW3IuJGdldFBhcmVudF0oKVtyLiRnZXRQYXJlbnRdKCksYT17bmFtZToiYnV0dG9uIixhdHRyaWJ1dGVzOntpZDp0aGlzW3IuJHVpZF0sY2xhc3M6WyJ4ZmFCdXR0b24iXSxzdHlsZTp7fX0sY2hpbGRyZW46W119O2Zvcihjb25zdCBlIG9mIHQuZXZlbnQuY2hpbGRyZW4pe2lmKCJjbGljayIhPT1lLmFjdGl2aXR5fHwhZS5zY3JpcHQpY29udGludWU7Y29uc3QgdD0oMCxoLnJlY292ZXJKc1VSTCkoZS5zY3JpcHRbci4kY29udGVudF0pO2lmKCF0KWNvbnRpbnVlO2NvbnN0IGk9KDAscy5maXhVUkwpKHQudXJsKTtpJiZhLmNoaWxkcmVuLnB1c2goe25hbWU6ImEiLGF0dHJpYnV0ZXM6e2lkOiJsaW5rIit0aGlzW3IuJHVpZF0saHJlZjppLG5ld1dpbmRvdzp0Lm5ld1dpbmRvdyxjbGFzczpbInhmYUxpbmsiXSxzdHlsZTp7fX0sY2hpbGRyZW46W119KX1yZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoYSl9fWNsYXNzIENhbGN1bGF0ZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNhbGN1bGF0ZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVycmlkZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5vdmVycmlkZSxbImRpc2FibGVkIiwiZXJyb3IiLCJpZ25vcmUiLCJ3YXJuaW5nIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWVzc2FnZT1udWxsO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIENhcHRpb24gZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjYXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBsYWNlbWVudD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5wbGFjZW1lbnQsWyJsZWZ0IiwiYm90dG9tIiwiaW5saW5lIiwicmlnaHQiLCJ0b3AiXSk7dGhpcy5wcmVzZW5jZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlc2VydmU9TWF0aC5jZWlsKCgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUucmVzZXJ2ZSkpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy52YWx1ZT1udWxsfVtyLiRzZXRWYWx1ZV0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3IuJGdldEV4dHJhXShlKXtpZighdGhpc1tyLiRleHRyYV0pe2xldHt3aWR0aDp0LGhlaWdodDphfT1lO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dD10aGlzLnJlc2VydmU8PTA/dDp0aGlzLnJlc2VydmU7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjphPXRoaXMucmVzZXJ2ZTw9MD9hOnRoaXMucmVzZXJ2ZX10aGlzW3IuJGV4dHJhXT0oMCxzLmxheW91dE5vZGUpKHRoaXMse3dpZHRoOnQsaGVpZ2h0OmF9KX1yZXR1cm4gdGhpc1tyLiRleHRyYV19W3IuJHRvSFRNTF0oZSl7aWYoIXRoaXMudmFsdWUpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWTt0aGlzW3IuJHB1c2hQYXJhXSgpO2NvbnN0IHQ9dGhpcy52YWx1ZVtyLiR0b0hUTUxdKGUpLmh0bWw7aWYoIXQpe3RoaXNbci4kcG9wUGFyYV0oKTtyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZfWNvbnN0IGE9dGhpcy5yZXNlcnZlO2lmKHRoaXMucmVzZXJ2ZTw9MCl7Y29uc3R7dzp0LGg6YX09dGhpc1tyLiRnZXRFeHRyYV0oZSk7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOmNhc2UiaW5saW5lIjp0aGlzLnJlc2VydmU9dDticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOnRoaXMucmVzZXJ2ZT1hfX1jb25zdCBpPVtdOyJzdHJpbmciPT10eXBlb2YgdD9pLnB1c2goe25hbWU6IiN0ZXh0Iix2YWx1ZTp0fSk6aS5wdXNoKHQpO2NvbnN0IG49KDAscy50b1N0eWxlKSh0aGlzLCJmb250IiwibWFyZ2luIiwidmlzaWJpbGl0eSIpO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0Ijp0aGlzLnJlc2VydmU+MCYmKG4ud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMucmVzZXJ2ZSkpO2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6dGhpcy5yZXNlcnZlPjAmJihuLmhlaWdodD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5yZXNlcnZlKSl9KDAscy5zZXRQYXJhKSh0aGlzLG51bGwsdCk7dGhpc1tyLiRwb3BQYXJhXSgpO3RoaXMucmVzZXJ2ZT1hO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTpuLGNsYXNzOlsieGZhQ2FwdGlvbiJdfSxjaGlsZHJlbjppfSl9fWNsYXNzIENlcnRpZmljYXRlIGV4dGVuZHMgci5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiY2VydGlmaWNhdGUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQ2VydGlmaWNhdGVzIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiY2VydGlmaWNhdGVzIiwhMCk7dGhpcy5jcmVkZW50aWFsU2VydmVyUG9saWN5PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmNyZWRlbnRpYWxTZXJ2ZXJQb2xpY3ksWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51cmw9ZS51cmx8fCIiO3RoaXMudXJsUG9saWN5PWUudXJsUG9saWN5fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uPW51bGw7dGhpcy5pc3N1ZXJzPW51bGw7dGhpcy5rZXlVc2FnZT1udWxsO3RoaXMub2lkcz1udWxsO3RoaXMuc2lnbmluZz1udWxsO3RoaXMuc3ViamVjdEROcz1udWxsfX1jbGFzcyBDaGVja0J1dHRvbiBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNoZWNrQnV0dG9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1hcms9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubWFyayxbImRlZmF1bHQiLCJjaGVjayIsImNpcmNsZSIsImNyb3NzIiwiZGlhbW9uZCIsInNxdWFyZSIsInN0YXIiXSk7dGhpcy5zaGFwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5zaGFwZSxbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMuc2l6ZT0oMCxvLmdldE1lYXN1cmVtZW50KShlLnNpemUsIjEwcHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD0oMCxzLnRvU3R5bGUpKCJtYXJnaW4iKSxhPSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnNpemUpO3Qud2lkdGg9dC5oZWlnaHQ9YTtsZXQgaSxuLGM7Y29uc3QgbD10aGlzW3IuJGdldFBhcmVudF0oKVtyLiRnZXRQYXJlbnRdKCksaD1sLml0ZW1zLmNoaWxkcmVuLmxlbmd0aCYmbC5pdGVtcy5jaGlsZHJlblswXVtyLiR0b0hUTUxdKCkuaHRtbHx8W10sdT17b246KHZvaWQgMCE9PWhbMF0/aFswXToib24iKS50b1N0cmluZygpLG9mZjoodm9pZCAwIT09aFsxXT9oWzFdOiJvZmYiKS50b1N0cmluZygpfSxkPShsLnZhbHVlPy5bci4kdGV4dF0oKXx8Im9mZiIpPT09dS5vbnx8dm9pZCAwLGY9bFtyLiRnZXRTdWJmb3JtUGFyZW50XSgpLGc9bFtyLiR1aWRdO2xldCBwO2lmKGYgaW5zdGFuY2VvZiBFeGNsR3JvdXApe2M9ZltyLiR1aWRdO2k9InJhZGlvIjtuPSJ4ZmFSYWRpbyI7cD1mW3IuJGRhdGFdPy5bci4kdWlkXXx8ZltyLiR1aWRdfWVsc2V7aT0iY2hlY2tib3giO249InhmYUNoZWNrYm94IjtwPWxbci4kZGF0YV0/LltyLiR1aWRdfHxsW3IuJHVpZF19Y29uc3QgbT17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e2NsYXNzOltuXSxzdHlsZTp0LGZpZWxkSWQ6ZyxkYXRhSWQ6cCx0eXBlOmksY2hlY2tlZDpkLHhmYU9uOnUub24seGZhT2ZmOnUub2ZmLCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobCksImFyaWEtcmVxdWlyZWQiOiExfX07YyYmKG0uYXR0cmlidXRlcy5uYW1lPWMpO2lmKGlzUmVxdWlyZWQobCkpe20uYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO20uYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlttXX0pfX1jbGFzcyBDaG9pY2VMaXN0IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiY2hvaWNlTGlzdCIsITApO3RoaXMuY29tbWl0T249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuY29tbWl0T24sWyJzZWxlY3QiLCJleGl0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVuPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm9wZW4sWyJ1c2VyQ29udHJvbCIsImFsd2F5cyIsIm11bHRpU2VsZWN0Iiwib25FbnRyeSJdKTt0aGlzLnRleHRFbnRyeT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUudGV4dEVudHJ5LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9KDAscy50b1N0eWxlKSh0aGlzLCJib3JkZXIiLCJtYXJnaW4iKSxhPXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSxpPXtmb250U2l6ZTpgY2FsYygke2EuZm9udD8uc2l6ZXx8MTB9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWB9LG49W107aWYoYS5pdGVtcy5jaGlsZHJlbi5sZW5ndGg+MCl7Y29uc3QgZT1hLml0ZW1zO2xldCB0PTAscz0wO2lmKDI9PT1lLmNoaWxkcmVuLmxlbmd0aCl7dD1lLmNoaWxkcmVuWzBdLnNhdmU7cz0xLXR9Y29uc3Qgbz1lLmNoaWxkcmVuW3RdW3IuJHRvSFRNTF0oKS5odG1sLGM9ZS5jaGlsZHJlbltzXVtyLiR0b0hUTUxdKCkuaHRtbDtsZXQgbD0hMTtjb25zdCBoPWEudmFsdWU/LltyLiR0ZXh0XSgpfHwiIjtmb3IobGV0IGU9MCx0PW8ubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9e25hbWU6Im9wdGlvbiIsYXR0cmlidXRlczp7dmFsdWU6Y1tlXXx8b1tlXSxzdHlsZTppfSx2YWx1ZTpvW2VdfTtjW2VdPT09aCYmKHQuYXR0cmlidXRlcy5zZWxlY3RlZD1sPSEwKTtuLnB1c2godCl9bHx8bi5zcGxpY2UoMCwwLHtuYW1lOiJvcHRpb24iLGF0dHJpYnV0ZXM6e2hpZGRlbjohMCxzZWxlY3RlZDohMH0sdmFsdWU6IiAifSl9Y29uc3QgYz17Y2xhc3M6WyJ4ZmFTZWxlY3QiXSxmaWVsZElkOmFbci4kdWlkXSxkYXRhSWQ6YVtyLiRkYXRhXT8uW3IuJHVpZF18fGFbci4kdWlkXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfTtpZihpc1JlcXVpcmVkKGEpKXtjWyJhcmlhLXJlcXVpcmVkIl09ITA7Yy5yZXF1aXJlZD0hMH0ibXVsdGlTZWxlY3QiPT09dGhpcy5vcGVuJiYoYy5tdWx0aXBsZT0hMCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbe25hbWU6InNlbGVjdCIsY2hpbGRyZW46bixhdHRyaWJ1dGVzOmN9XX0pfX1jbGFzcyBDb2xvciBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNvbG9yIiwhMCk7dGhpcy5jU3BhY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuY1NwYWNlLFsiU1JHQiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZhbHVlPWUudmFsdWU/KDAsby5nZXRDb2xvcikoZS52YWx1ZSk6IiI7dGhpcy5leHRyYXM9bnVsbH1bci4kaGFzU2V0dGFibGVWYWx1ZV0oKXtyZXR1cm4hMX1bci4kdG9TdHlsZV0oKXtyZXR1cm4gdGhpcy52YWx1ZT9jLlV0aWwubWFrZUhleENvbG9yKHRoaXMudmFsdWUucix0aGlzLnZhbHVlLmcsdGhpcy52YWx1ZS5iKTpudWxsfX1jbGFzcyBDb21iIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiY29tYiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5udW1iZXJPZkNlbGxzPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5udW1iZXJPZkNlbGxzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIENvbm5lY3QgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjb25uZWN0IiwhMCk7dGhpcy5jb25uZWN0aW9uPWUuY29ubmVjdGlvbnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2FnZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS51c2FnZSxbImV4cG9ydEFuZEltcG9ydCIsImV4cG9ydE9ubHkiLCJpbXBvcnRPbmx5Il0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnBpY3R1cmU9bnVsbH19Y2xhc3MgQ29udGVudEFyZWEgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjb250ZW50QXJlYSIsITApO3RoaXMuaD0oMCxvLmdldE1lYXN1cmVtZW50KShlLmgpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yZWxldmFudD0oMCxvLmdldFJlbGV2YW50KShlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUudyk7dGhpcy54PSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUueCwiMHB0Iik7dGhpcy55PSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUueSwiMHB0Iik7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9IVE1MXShlKXtjb25zdCB0PXtsZWZ0OigwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLngpLHRvcDooMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy55KSx3aWR0aDooMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy53KSxoZWlnaHQ6KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMuaCl9LGE9WyJ4ZmFDb250ZW50YXJlYSJdOygwLHMuaXNQcmludE9ubHkpKHRoaXMpJiZhLnB1c2goInhmYVByaW50T25seSIpO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXSxhdHRyaWJ1dGVzOntzdHlsZTp0LGNsYXNzOmEsaWQ6dGhpc1tyLiR1aWRdfX0pfX1jbGFzcyBDb3JuZXIgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjb3JuZXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW52ZXJ0ZWQ9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmludmVydGVkLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5qb2luPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmpvaW4sWyJzcXVhcmUiLCJyb3VuZCJdKTt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmFkaXVzPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUucmFkaXVzKTt0aGlzLnN0cm9rZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5zdHJva2UsWyJzb2xpZCIsImRhc2hEb3QiLCJkYXNoRG90RG90IiwiZGFzaGVkIiwiZG90dGVkIiwiZW1ib3NzZWQiLCJldGNoZWQiLCJsb3dlcmVkIiwicmFpc2VkIl0pO3RoaXMudGhpY2tuZXNzPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUudGhpY2tuZXNzLCIwLjVwdCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oKXtjb25zdCBlPSgwLHMudG9TdHlsZSkodGhpcywidmlzaWJpbGl0eSIpO2UucmFkaXVzPSgwLHMubWVhc3VyZVRvU3RyaW5nKSgic3F1YXJlIj09PXRoaXMuam9pbj8wOnRoaXMucmFkaXVzKTtyZXR1cm4gZX19Y2xhc3MgRGF0ZUVsZW1lbnQgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGF0ZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtyLiRmaW5hbGl6ZV0oKXtjb25zdCBlPXRoaXNbci4kY29udGVudF0udHJpbSgpO3RoaXNbci4kY29udGVudF09ZT9uZXcgRGF0ZShlKTpudWxsfVtyLiR0b0hUTUxdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCh0aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF0udG9TdHJpbmcoKToiIil9fWNsYXNzIERhdGVUaW1lIGV4dGVuZHMgci5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImRhdGVUaW1lIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGZpbmFsaXplXSgpe2NvbnN0IGU9dGhpc1tyLiRjb250ZW50XS50cmltKCk7dGhpc1tyLiRjb250ZW50XT1lP25ldyBEYXRlKGUpOm51bGx9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGF0ZVRpbWVFZGl0IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGF0ZVRpbWVFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBpY2tlcj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5waWNrZXIsWyJob3N0Iiwibm9uZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD0oMCxzLnRvU3R5bGUpKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKSxhPXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSxpPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDphW3IuJHVpZF0sZGF0YUlkOmFbci4kZGF0YV0/LltyLiR1aWRdfHxhW3IuJHVpZF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChhKSl7aS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7aS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W2ldfSl9fWNsYXNzIERlY2ltYWwgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGVjaW1hbCIpO3RoaXMuZnJhY0RpZ2l0cz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuZnJhY0RpZ2l0cyxkZWZhdWx0VmFsdWU6Mix2YWxpZGF0ZTplPT4hMH0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkRGlnaXRzPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5sZWFkRGlnaXRzLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT4hMH0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT1wYXJzZUZsb2F0KHRoaXNbci4kY29udGVudF0udHJpbSgpKTt0aGlzW3IuJGNvbnRlbnRdPWlzTmFOKGUpP251bGw6ZX1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGVmYXVsdFVpIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGVmYXVsdFVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgRGVzYyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImRlc2MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgRGlnZXN0TWV0aG9kIGV4dGVuZHMgci5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGlnZXN0TWV0aG9kIixbIiIsIlNIQTEiLCJTSEEyNTYiLCJTSEE1MTIiLCJSSVBFTUQxNjAiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIERpZ2VzdE1ldGhvZHMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJkaWdlc3RNZXRob2RzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGlnZXN0TWV0aG9kPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBEcmF3IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZHJhdyIsITApO3RoaXMuYW5jaG9yVHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oPygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuaCk6IiI7dGhpcy5oQWxpZ249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy5yb3RhdGU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnJvdGF0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lJTkwPT0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/KDAsby5nZXRNZWFzdXJlbWVudCkoZS53KToiIjt0aGlzLng9KDAsby5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsby5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmtlZXA9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy51aT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRzZXRWYWx1ZV0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7dGhpc1tyLiRwdXNoUGFyYV0oKTtjb25zdCB0PXRoaXMudyxhPXRoaXMuaCx7dzppLGg6Yyxpc0Jyb2tlbjpsfT0oMCxzLmxheW91dE5vZGUpKHRoaXMsZSk7aWYoaSYmIiI9PT10aGlzLncpe2lmKGwmJnRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfXRoaXMudz1pfWMmJiIiPT09dGhpcy5oJiYodGhpcy5oPWMpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCEoMCxuLmNoZWNrRGltZW5zaW9ucykodGhpcyxlKSl7dGhpcy53PXQ7dGhpcy5oPWE7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBvLkhUTUxSZXN1bHQuRkFJTFVSRX11bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2NvbnN0IGg9KDAscy50b1N0eWxlKSh0aGlzLCJmb250IiwiaEFsaWduIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwiYm9yZGVyIiwibWFyZ2luIik7KDAscy5zZXRNaW5NYXhEaW1lbnNpb25zKSh0aGlzLGgpO2lmKGgubWFyZ2luKXtoLnBhZGRpbmc9aC5tYXJnaW47ZGVsZXRlIGgubWFyZ2lufWNvbnN0IHU9WyJ4ZmFEcmF3Il07dGhpcy5mb250JiZ1LnB1c2goInhmYUZvbnQiKTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmdS5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBkPXtzdHlsZTpoLGlkOnRoaXNbci4kdWlkXSxjbGFzczp1fTt0aGlzLm5hbWUmJihkLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBmPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZCxjaGlsZHJlbjpbXX07YXBwbHlBc3Npc3QodGhpcyxkKTtjb25zdCBnPSgwLHMuY29tcHV0ZUJib3gpKHRoaXMsZixlKSxwPXRoaXMudmFsdWU/dGhpcy52YWx1ZVtyLiR0b0hUTUxdKGUpLmh0bWw6bnVsbDtpZihudWxsPT09cCl7dGhpcy53PXQ7dGhpcy5oPWE7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2VzcygoMCxzLmNyZWF0ZVdyYXBwZXIpKHRoaXMsZiksZyl9Zi5jaGlsZHJlbi5wdXNoKHApOygwLHMuc2V0UGFyYSkodGhpcyxoLHApO3RoaXMudz10O3RoaXMuaD1hO3RoaXNbci4kcG9wUGFyYV0oKTtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoKDAscy5jcmVhdGVXcmFwcGVyKSh0aGlzLGYpLGcpfX1jbGFzcyBFZGdlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZWRnZSIsITApO3RoaXMuY2FwPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmNhcCxbInNxdWFyZSIsImJ1dHQiLCJyb3VuZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5zdHJva2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuc3Ryb2tlLFsic29saWQiLCJkYXNoRG90IiwiZGFzaERvdERvdCIsImRhc2hlZCIsImRvdHRlZCIsImVtYm9zc2VkIiwiZXRjaGVkIiwibG93ZXJlZCIsInJhaXNlZCJdKTt0aGlzLnRoaWNrbmVzcz0oMCxvLmdldE1lYXN1cmVtZW50KShlLnRoaWNrbmVzcywiMC41cHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W3IuJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsInZpc2liaWxpdHkiKTtPYmplY3QuYXNzaWduKGUse2xpbmVjYXA6dGhpcy5jYXAsd2lkdGg6KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMudGhpY2tuZXNzKSxjb2xvcjp0aGlzLmNvbG9yP3RoaXMuY29sb3Jbci4kdG9TdHlsZV0oKToiIzAwMDAwMCIsc3R5bGU6IiJ9KTtpZigidmlzaWJsZSIhPT10aGlzLnByZXNlbmNlKWUuc3R5bGU9Im5vbmUiO2Vsc2Ugc3dpdGNoKHRoaXMuc3Ryb2tlKXtjYXNlInNvbGlkIjplLnN0eWxlPSJzb2xpZCI7YnJlYWs7Y2FzZSJkYXNoRG90IjpjYXNlImRhc2hEb3REb3QiOmNhc2UiZGFzaGVkIjplLnN0eWxlPSJkYXNoZWQiO2JyZWFrO2Nhc2UiZG90dGVkIjplLnN0eWxlPSJkb3R0ZWQiO2JyZWFrO2Nhc2UiZW1ib3NzZWQiOmUuc3R5bGU9InJpZGdlIjticmVhaztjYXNlImV0Y2hlZCI6ZS5zdHlsZT0iZ3Jvb3ZlIjticmVhaztjYXNlImxvd2VyZWQiOmUuc3R5bGU9Imluc2V0IjticmVhaztjYXNlInJhaXNlZCI6ZS5zdHlsZT0ib3V0c2V0In1yZXR1cm4gZX19Y2xhc3MgRW5jb2RpbmcgZXh0ZW5kcyByLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNvZGluZyIsWyJhZGJlLng1MDkucnNhX3NoYTEiLCJhZGJlLnBrY3M3LmRldGFjaGVkIiwiYWRiZS5wa2NzNy5zaGExIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFbmNvZGluZ3MgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNvZGluZ3MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNvZGluZz1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgRW5jcnlwdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImVuY3J5cHQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW51bGx9fWNsYXNzIEVuY3J5cHREYXRhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZW5jcnlwdERhdGEiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm9wZXJhdGlvbixbImVuY3J5cHQiLCJkZWNyeXB0Il0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGx9fWNsYXNzIEVuY3J5cHRpb24gZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNyeXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVuY3J5cHRpb25NZXRob2QgZXh0ZW5kcyByLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNyeXB0aW9uTWV0aG9kIixbIiIsIkFFUzI1Ni1DQkMiLCJUUklQTEVERVMtQ0JDIiwiQUVTMTI4LUNCQyIsIkFFUzE5Mi1DQkMiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVuY3J5cHRpb25NZXRob2RzIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZW5jcnlwdGlvbk1ldGhvZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uTWV0aG9kPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFdmVudCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImV2ZW50IiwhMCk7dGhpcy5hY3Rpdml0eT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY3Rpdml0eSxbImNsaWNrIiwiY2hhbmdlIiwiZG9jQ2xvc2UiLCJkb2NSZWFkeSIsImVudGVyIiwiZXhpdCIsImZ1bGwiLCJpbmRleENoYW5nZSIsImluaXRpYWxpemUiLCJtb3VzZURvd24iLCJtb3VzZUVudGVyIiwibW91c2VFeGl0IiwibW91c2VVcCIsInBvc3RFeGVjdXRlIiwicG9zdE9wZW4iLCJwb3N0UHJpbnQiLCJwb3N0U2F2ZSIsInBvc3RTaWduIiwicG9zdFN1Ym1pdCIsInByZUV4ZWN1dGUiLCJwcmVPcGVuIiwicHJlUHJpbnQiLCJwcmVTYXZlIiwicHJlU2lnbiIsInByZVN1Ym1pdCIsInJlYWR5IiwidmFsaWRhdGlvblN0YXRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5saXN0ZW49KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubGlzdGVuLFsicmVmT25seSIsInJlZkFuZERlc2NlbmRlbnRzIl0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW51bGw7dGhpcy5leGVjdXRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnNpZ25EYXRhPW51bGw7dGhpcy5zdWJtaXQ9bnVsbH19Y2xhc3MgRXhEYXRhIGV4dGVuZHMgci5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImV4RGF0YSIpO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5ocmVmPWUuaHJlZnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1heExlbmd0aD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubWF4TGVuZ3RoLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0tMX0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnRyYW5zZmVyRW5jb2Rpbmc9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHJhbnNmZXJFbmNvZGluZyxbIm5vbmUiLCJiYXNlNjQiLCJwYWNrYWdlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kaXNDREFUQVhtbF0oKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGV9W3IuJG9uQ2hpbGRdKGUpe2lmKCJ0ZXh0L2h0bWwiPT09dGhpcy5jb250ZW50VHlwZSYmZVtyLiRuYW1lc3BhY2VJZF09PT1pLk5hbWVzcGFjZUlkcy54aHRtbC5pZCl7dGhpc1tyLiRjb250ZW50XT1lO3JldHVybiEwfWlmKCJ0ZXh0L3htbCI9PT10aGlzLmNvbnRlbnRUeXBlKXt0aGlzW3IuJGNvbnRlbnRdPWU7cmV0dXJuITB9cmV0dXJuITF9W3IuJHRvSFRNTF0oZSl7cmV0dXJuInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlJiZ0aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF1bci4kdG9IVE1MXShlKTpvLkhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIEV4T2JqZWN0IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZXhPYmplY3QiLCEwKTt0aGlzLmFyY2hpdmU9ZS5hcmNoaXZlfHwiIjt0aGlzLmNsYXNzSWQ9ZS5jbGFzc0lkfHwiIjt0aGlzLmNvZGVCYXNlPWUuY29kZUJhc2V8fCIiO3RoaXMuY29kZVR5cGU9ZS5jb2RlVHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFeGNsR3JvdXAgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJleGNsR3JvdXAiLCEwKTt0aGlzLmFjY2Vzcz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiI7dGhpcy5hbmNob3JUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5oKToiIjt0aGlzLmhBbGlnbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sYXlvdXQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubGF5b3V0LFsicG9zaXRpb24iLCJsci10YiIsInJsLXJvdyIsInJsLXRiIiwicm93IiwidGFibGUiLCJ0YiJdKTt0aGlzLm1heEg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/KDAsby5nZXRNZWFzdXJlbWVudCkoZS53KToiIjt0aGlzLng9KDAsby5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsby5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYmluZD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYWxjdWxhdGU9bnVsbDt0aGlzLmNhcHRpb249bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy5jb25uZWN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRoYXNTZXR0YWJsZVZhbHVlXSgpe3JldHVybiEwfVtyLiRzZXRWYWx1ZV0oZSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5maWVsZC5jaGlsZHJlbil7aWYoIXQudmFsdWUpe2NvbnN0IGU9bmV3IFZhbHVlKHt9KTt0W3IuJGFwcGVuZENoaWxkXShlKTt0LnZhbHVlPWV9dC52YWx1ZVtyLiRzZXRWYWx1ZV0oZSl9fVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW3IuJGV4dHJhXS5hdHRlbXB0JiZ0aGlzW3IuJGV4dHJhXS5udW1iZXJJbkxpbmU+MHx8dGhpc1tyLiRnZXRQYXJlbnRdKClbci4kaXNUaGVyZU1vcmVXaWR0aF0oKX1bci4kaXNTcGxpdHRhYmxlXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2lmKCFlW3IuJGlzU3BsaXR0YWJsZV0oKSlyZXR1cm4hMTtpZih2b2lkIDAhPT10aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlKXJldHVybiB0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlO2lmKCJwb3NpdGlvbiI9PT10aGlzLmxheW91dHx8dGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXt0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKGUubGF5b3V0Py5lbmRzV2l0aCgiLXRiIikmJjAhPT1lW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUpcmV0dXJuITE7dGhpc1tyLiRleHRyYV0uX2lzU3BsaXR0YWJsZT0hMDtyZXR1cm4hMH1bci4kZmx1c2hIVE1MXSgpe3JldHVybigwLG4uZmx1c2hIVE1MKSh0aGlzKX1bci4kYWRkSFRNTF0oZSx0KXsoMCxuLmFkZEhUTUwpKHRoaXMsZSx0KX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuKDAsbi5nZXRBdmFpbGFibGVTcGFjZSkodGhpcyl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZXx8MD09PXRoaXMuaHx8MD09PXRoaXMudylyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7Y29uc3QgdD1bXSxhPXtpZDp0aGlzW3IuJHVpZF0sY2xhc3M6W119OygwLHMuc2V0QWNjZXNzKSh0aGlzLGEuY2xhc3MpO3RoaXNbci4kZXh0cmFdfHwodGhpc1tyLiRleHRyYV09T2JqZWN0LmNyZWF0ZShudWxsKSk7T2JqZWN0LmFzc2lnbih0aGlzW3IuJGV4dHJhXSx7Y2hpbGRyZW46dCxhdHRyaWJ1dGVzOmEsYXR0ZW1wdDowLGxpbmU6bnVsbCxudW1iZXJJbkxpbmU6MCxhdmFpbGFibGVTcGFjZTp7d2lkdGg6TWF0aC5taW4odGhpcy53fHwxLzAsZS53aWR0aCksaGVpZ2h0Ok1hdGgubWluKHRoaXMuaHx8MS8wLGUuaGVpZ2h0KX0sd2lkdGg6MCxoZWlnaHQ6MCxwcmV2SGVpZ2h0OjAsY3VycmVudFdpZHRoOjB9KTtjb25zdCBpPXRoaXNbci4kaXNTcGxpdHRhYmxlXSgpO2l8fHNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCEoMCxuLmNoZWNrRGltZW5zaW9ucykodGhpcyxlKSlyZXR1cm4gby5IVE1MUmVzdWx0LkZBSUxVUkU7Y29uc3QgYz1uZXcgU2V0KFsiZmllbGQiXSk7aWYodGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXtjb25zdCBlPXRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1tyLiRleHRyYV0uY29sdW1uV2lkdGhzPWU7dGhpc1tyLiRleHRyYV0uY3VycmVudENvbHVtbj0wfX1jb25zdCBsPSgwLHMudG9TdHlsZSkodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksaD1bInhmYUV4Y2xncm91cCJdLHU9KDAscy5sYXlvdXRDbGFzcykodGhpcyk7dSYmaC5wdXNoKHUpOygwLHMuaXNQcmludE9ubHkpKHRoaXMpJiZoLnB1c2goInhmYVByaW50T25seSIpO2Euc3R5bGU9bDthLmNsYXNzPWg7dGhpcy5uYW1lJiYoYS54ZmFOYW1lPXRoaXMubmFtZSk7dGhpc1tyLiRwdXNoUGFyYV0oKTtjb25zdCBkPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGY9ZD8yOjE7Zm9yKDt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PGY7dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCsrKXtkJiYxPT09dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCYmKHRoaXNbci4kZXh0cmFdLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbci4kY2hpbGRyZW5Ub0hUTUxdKHtmaWx0ZXI6YyxpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIGV9aWYoZCYmMD09PXRoaXNbci4kZXh0cmFdLmF0dGVtcHQmJjA9PT10aGlzW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUmJiF0aGlzW3IuJGdldFRlbXBsYXRlUm9vdF0oKVtyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PWY7YnJlYWt9fXRoaXNbci4kcG9wUGFyYV0oKTtpfHx1bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKHRoaXNbci4kZXh0cmFdLmF0dGVtcHQ9PT1mKXtpfHxkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfWxldCBnPTAscD0wO2lmKHRoaXMubWFyZ2luKXtnPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O3A9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3QgbT1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS53aWR0aCtnLHRoaXMud3x8MCksYj1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS5oZWlnaHQrcCx0aGlzLmh8fDApLHk9W3RoaXMueCx0aGlzLnksbSxiXTsiIj09PXRoaXMudyYmKGwud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKG0pKTsiIj09PXRoaXMuaCYmKGwuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKShiKSk7Y29uc3Qgdz17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmEsY2hpbGRyZW46dH07YXBwbHlBc3Npc3QodGhpcyxhKTtkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyx3KSx5KX19Y2xhc3MgRXhlY3V0ZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImV4ZWN1dGUiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmV4ZWN1dGVUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmV4ZWN1dGVUeXBlLFsiaW1wb3J0IiwicmVtZXJnZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucnVuQXQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucnVuQXQsWyJjbGllbnQiLCJib3RoIiwic2VydmVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRXh0cmFzIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZXh0cmFzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4dHJhcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZpZWxkIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZmllbGQiLCEwKTt0aGlzLmFjY2Vzcz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiI7dGhpcy5hbmNob3JUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5oKToiIjt0aGlzLmhBbGlnbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1heFcsIjBwdCIpO3RoaXMubWluSD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1pbkgsIjBwdCIpO3RoaXMubWluVz0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD0oMCxvLmdldFJlbGV2YW50KShlLnJlbGV2YW50KTt0aGlzLnJvdGF0ZT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUucm90YXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmUlOTA9PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz8oMCxvLmdldE1lYXN1cmVtZW50KShlLncpOiIiO3RoaXMueD0oMCxvLmdldE1lYXN1cmVtZW50KShlLngsIjBwdCIpO3RoaXMueT0oMCxvLmdldE1lYXN1cmVtZW50KShlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5iaW5kPW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5mb3JtYXQ9bnVsbDt0aGlzLml0ZW1zPW5ldyByLlhGQU9iamVjdEFycmF5KDIpO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnVpPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLmJpbmRJdGVtcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRzZXRWYWx1ZV0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoIXRoaXMudWkpe3RoaXMudWk9bmV3IFVpKHt9KTt0aGlzLnVpW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0odGhpcy51aSk7bGV0IGU7c3dpdGNoKHRoaXMuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoKXtjYXNlIDA6ZT1uZXcgVGV4dEVkaXQoe30pO3RoaXMudWkudGV4dEVkaXQ9ZTticmVhaztjYXNlIDE6ZT1uZXcgQ2hlY2tCdXR0b24oe30pO3RoaXMudWkuY2hlY2tCdXR0b249ZTticmVhaztjYXNlIDI6ZT1uZXcgQ2hvaWNlTGlzdCh7fSk7dGhpcy51aS5jaG9pY2VMaXN0PWV9dGhpcy51aVtyLiRhcHBlbmRDaGlsZF0oZSl9aWYoIXRoaXMudWl8fCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWTt0aGlzLmNhcHRpb24mJmRlbGV0ZSB0aGlzLmNhcHRpb25bci4kZXh0cmFdO3RoaXNbci4kcHVzaFBhcmFdKCk7Y29uc3QgdD10aGlzLmNhcHRpb24/dGhpcy5jYXB0aW9uW3IuJHRvSFRNTF0oZSkuaHRtbDpudWxsLGE9dGhpcy53LGk9dGhpcy5oO2xldCBjPTAsaD0wO2lmKHRoaXMubWFyZ2luKXtjPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O2g9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IHU9bnVsbDtpZigiIj09PXRoaXMud3x8IiI9PT10aGlzLmgpe2xldCB0PW51bGwsYT1udWxsLGk9MCxuPTA7aWYodGhpcy51aS5jaGVja0J1dHRvbilpPW49dGhpcy51aS5jaGVja0J1dHRvbi5zaXplO2Vsc2V7Y29uc3R7dzp0LGg6YX09KDAscy5sYXlvdXROb2RlKSh0aGlzLGUpO2lmKG51bGwhPT10KXtpPXQ7bj1hfWVsc2Ugbj0oMCxsLmdldE1ldHJpY3MpKHRoaXMuZm9udCwhMCkubGluZU5vR2FwfXU9Z2V0Qm9yZGVyRGltcyh0aGlzLnVpW3IuJGdldEV4dHJhXSgpKTtpKz11Lnc7bis9dS5oO2lmKHRoaXMuY2FwdGlvbil7Y29uc3R7dzpzLGg6Yyxpc0Jyb2tlbjpsfT10aGlzLmNhcHRpb25bci4kZ2V0RXh0cmFdKGUpO2lmKGwmJnRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfXQ9czthPWM7c3dpdGNoKHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnQrPWk7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjphKz1ufX1lbHNle3Q9aTthPW59aWYodCYmIiI9PT10aGlzLncpe3QrPWM7dGhpcy53PU1hdGgubWluKHRoaXMubWF4Vzw9MD8xLzA6dGhpcy5tYXhXLHRoaXMubWluVysxPHQ/dDp0aGlzLm1pblcpfWlmKGEmJiIiPT09dGhpcy5oKXthKz1oO3RoaXMuaD1NYXRoLm1pbih0aGlzLm1heEg8PTA/MS8wOnRoaXMubWF4SCx0aGlzLm1pbkgrMTxhP2E6dGhpcy5taW5IKX19dGhpc1tyLiRwb3BQYXJhXSgpOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoISgwLG4uY2hlY2tEaW1lbnNpb25zKSh0aGlzLGUpKXt0aGlzLnc9YTt0aGlzLmg9aTt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3QgZD0oMCxzLnRvU3R5bGUpKHRoaXMsImZvbnQiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwicHJlc2VuY2UiLCJtYXJnaW4iLCJoQWxpZ24iKTsoMCxzLnNldE1pbk1heERpbWVuc2lvbnMpKHRoaXMsZCk7Y29uc3QgZj1bInhmYUZpZWxkIl07dGhpcy5mb250JiZmLnB1c2goInhmYUZvbnQiKTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmZi5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBnPXtzdHlsZTpkLGlkOnRoaXNbci4kdWlkXSxjbGFzczpmfTtpZihkLm1hcmdpbil7ZC5wYWRkaW5nPWQubWFyZ2luO2RlbGV0ZSBkLm1hcmdpbn0oMCxzLnNldEFjY2VzcykodGhpcyxmKTt0aGlzLm5hbWUmJihnLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBwPVtdLG09e25hbWU6ImRpdiIsYXR0cmlidXRlczpnLGNoaWxkcmVuOnB9O2FwcGx5QXNzaXN0KHRoaXMsZyk7Y29uc3QgYj10aGlzLmJvcmRlcj90aGlzLmJvcmRlcltyLiR0b1N0eWxlXSgpOm51bGwseT0oMCxzLmNvbXB1dGVCYm94KSh0aGlzLG0sZSksdz10aGlzLnVpW3IuJHRvSFRNTF0oKS5odG1sO2lmKCF3KXtPYmplY3QuYXNzaWduKGQsYik7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyxtKSx5KX10aGlzW3IuJHRhYkluZGV4XSYmKHcuY2hpbGRyZW4/LlswXT93LmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMudGFiaW5kZXg9dGhpc1tyLiR0YWJJbmRleF06dy5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbci4kdGFiSW5kZXhdKTt3LmF0dHJpYnV0ZXMuc3R5bGV8fCh3LmF0dHJpYnV0ZXMuc3R5bGU9T2JqZWN0LmNyZWF0ZShudWxsKSk7bGV0IFM9bnVsbDtpZih0aGlzLnVpLmJ1dHRvbil7MT09PXcuY2hpbGRyZW4ubGVuZ3RoJiYoW1NdPXcuY2hpbGRyZW4uc3BsaWNlKDAsMSkpO09iamVjdC5hc3NpZ24ody5hdHRyaWJ1dGVzLnN0eWxlLGIpfWVsc2UgT2JqZWN0LmFzc2lnbihkLGIpO3AucHVzaCh3KTtpZih0aGlzLnZhbHVlKWlmKHRoaXMudWkuaW1hZ2VFZGl0KXcuY2hpbGRyZW4ucHVzaCh0aGlzLnZhbHVlW3IuJHRvSFRNTF0oKS5odG1sKTtlbHNlIGlmKCF0aGlzLnVpLmJ1dHRvbil7bGV0IGU9IiI7aWYodGhpcy52YWx1ZS5leERhdGEpZT10aGlzLnZhbHVlLmV4RGF0YVtyLiR0ZXh0XSgpO2Vsc2UgaWYodGhpcy52YWx1ZS50ZXh0KWU9dGhpcy52YWx1ZS50ZXh0W3IuJGdldEV4dHJhXSgpO2Vsc2V7Y29uc3QgdD10aGlzLnZhbHVlW3IuJHRvSFRNTF0oKS5odG1sO251bGwhPT10JiYoZT10LmNoaWxkcmVuWzBdLnZhbHVlKX10aGlzLnVpLnRleHRFZGl0JiZ0aGlzLnZhbHVlLnRleHQ/Lm1heENoYXJzJiYody5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLm1heExlbmd0aD10aGlzLnZhbHVlLnRleHQubWF4Q2hhcnMpO2lmKGUpe2lmKHRoaXMudWkubnVtZXJpY0VkaXQpe2U9cGFyc2VGbG9hdChlKTtlPWlzTmFOKGUpPyIiOmUudG9TdHJpbmcoKX0idGV4dGFyZWEiPT09dy5jaGlsZHJlblswXS5uYW1lP3cuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy50ZXh0Q29udGVudD1lOncuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy52YWx1ZT1lfX1pZighdGhpcy51aS5pbWFnZUVkaXQmJncuY2hpbGRyZW4/LlswXSYmdGhpcy5oKXt1PXV8fGdldEJvcmRlckRpbXModGhpcy51aVtyLiRnZXRFeHRyYV0oKSk7bGV0IHQ9MDtpZih0aGlzLmNhcHRpb24mJlsidG9wIiwiYm90dG9tIl0uaW5jbHVkZXModGhpcy5jYXB0aW9uLnBsYWNlbWVudCkpe3Q9dGhpcy5jYXB0aW9uLnJlc2VydmU7dDw9MCYmKHQ9dGhpcy5jYXB0aW9uW3IuJGdldEV4dHJhXShlKS5oKTtjb25zdCBhPXRoaXMuaC10LWgtdS5oO3cuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9KDAscy5tZWFzdXJlVG9TdHJpbmcpKGEpfWVsc2Ugdy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD0iMTAwJSJ9UyYmdy5jaGlsZHJlbi5wdXNoKFMpO2lmKCF0KXt3LmF0dHJpYnV0ZXMuY2xhc3MmJncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFMZWZ0Iik7dGhpcy53PWE7dGhpcy5oPWk7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyxtKSx5KX1pZih0aGlzLnVpLmJ1dHRvbil7ZC5wYWRkaW5nJiZkZWxldGUgZC5wYWRkaW5nOyJkaXYiPT09dC5uYW1lJiYodC5uYW1lPSJzcGFuIik7dy5jaGlsZHJlbi5wdXNoKHQpO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2VzcyhtLHkpfXRoaXMudWkuY2hlY2tCdXR0b24mJih0LmF0dHJpYnV0ZXMuY2xhc3NbMF09InhmYUNhcHRpb25Gb3JDaGVja0J1dHRvbiIpO3cuYXR0cmlidXRlcy5jbGFzc3x8KHcuYXR0cmlidXRlcy5jbGFzcz1bXSk7dy5jaGlsZHJlbi5zcGxpY2UoMCwwLHQpO3N3aXRjaCh0aGlzLmNhcHRpb24ucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UiaW5saW5lIjp3LmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhTGVmdCIpO2JyZWFrO2Nhc2UicmlnaHQiOncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFSaWdodCIpO2JyZWFrO2Nhc2UidG9wIjp3LmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhVG9wIik7YnJlYWs7Y2FzZSJib3R0b20iOncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFCb3R0b20iKX10aGlzLnc9YTt0aGlzLmg9aTtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoKDAscy5jcmVhdGVXcmFwcGVyKSh0aGlzLG0pLHkpfX10LkZpZWxkPUZpZWxkO2NsYXNzIEZpbGwgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJmaWxsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmxpbmVhcj1udWxsO3RoaXMucGF0dGVybj1udWxsO3RoaXMucmFkaWFsPW51bGw7dGhpcy5zb2xpZD1udWxsO3RoaXMuc3RpcHBsZT1udWxsfVtyLiR0b1N0eWxlXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRQYXJlbnRdKCksdD1lW3IuJGdldFBhcmVudF0oKVtyLiRnZXRQYXJlbnRdKCksYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBpPSJjb2xvciIsbj1pO2lmKGUgaW5zdGFuY2VvZiBCb3JkZXIpe2k9ImJhY2tncm91bmQtY29sb3IiO249ImJhY2tncm91bmQiO3QgaW5zdGFuY2VvZiBVaSYmKGEuYmFja2dyb3VuZENvbG9yPSJ3aGl0ZSIpfWlmKGUgaW5zdGFuY2VvZiBSZWN0YW5nbGV8fGUgaW5zdGFuY2VvZiBBcmMpe2k9bj0iZmlsbCI7YS5maWxsPSJ3aGl0ZSJ9Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJleHRyYXMiPT09ZXx8ImNvbG9yIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKCEodCBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0KSljb250aW51ZTtjb25zdCBzPXRbci4kdG9TdHlsZV0odGhpcy5jb2xvcik7cyYmKGFbcy5zdGFydHNXaXRoKCIjIik/aTpuXT1zKTtyZXR1cm4gYX1pZih0aGlzLmNvbG9yPy52YWx1ZSl7Y29uc3QgZT10aGlzLmNvbG9yW3IuJHRvU3R5bGVdKCk7YVtlLnN0YXJ0c1dpdGgoIiMiKT9pOm5dPWV9cmV0dXJuIGF9fWNsYXNzIEZpbHRlciBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImZpbHRlciIsITApO3RoaXMuYWRkUmV2b2NhdGlvbkluZm89KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYWRkUmV2b2NhdGlvbkluZm8sWyIiLCJyZXF1aXJlZCIsIm9wdGlvbmFsIiwibm9uZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZlcnNpb249KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTp0aGlzLnZlcnNpb24sZGVmYXVsdFZhbHVlOjUsdmFsaWRhdGU6ZT0+ZT49MSYmZTw9NX0pO3RoaXMuYXBwZWFyYW5jZUZpbHRlcj1udWxsO3RoaXMuY2VydGlmaWNhdGVzPW51bGw7dGhpcy5kaWdlc3RNZXRob2RzPW51bGw7dGhpcy5lbmNvZGluZ3M9bnVsbDt0aGlzLmVuY3J5cHRpb25NZXRob2RzPW51bGw7dGhpcy5oYW5kbGVyPW51bGw7dGhpcy5sb2NrRG9jdW1lbnQ9bnVsbDt0aGlzLm1kcD1udWxsO3RoaXMucmVhc29ucz1udWxsO3RoaXMudGltZVN0YW1wPW51bGx9fWNsYXNzIEZsb2F0IGV4dGVuZHMgci5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImZsb2F0Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGZpbmFsaXplXSgpe2NvbnN0IGU9cGFyc2VGbG9hdCh0aGlzW3IuJGNvbnRlbnRdLnRyaW0oKSk7dGhpc1tyLiRjb250ZW50XT1pc05hTihlKT9udWxsOmV9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF0udG9TdHJpbmcoKToiIil9fWNsYXNzIEZvbnQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJmb250IiwhMCk7dGhpcy5iYXNlbGluZVNoaWZ0PSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuYmFzZWxpbmVTaGlmdCk7dGhpcy5mb250SG9yaXpvbnRhbFNjYWxlPSgwLG8uZ2V0RmxvYXQpKHtkYXRhOmUuZm9udEhvcml6b250YWxTY2FsZSxkZWZhdWx0VmFsdWU6MTAwLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmZvbnRWZXJ0aWNhbFNjYWxlPSgwLG8uZ2V0RmxvYXQpKHtkYXRhOmUuZm9udFZlcnRpY2FsU2NhbGUsZGVmYXVsdFZhbHVlOjEwMCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmtlcm5pbmdNb2RlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmtlcm5pbmdNb2RlLFsibm9uZSIsInBhaXIiXSk7dGhpcy5sZXR0ZXJTcGFjaW5nPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubGV0dGVyU3BhY2luZywiMCIpO3RoaXMubGluZVRocm91Z2g9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmxpbmVUaHJvdWdoLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMubGluZVRocm91Z2hQZXJpb2Q9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubGluZVRocm91Z2hQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMub3ZlcmxpbmU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm92ZXJsaW5lLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMub3ZlcmxpbmVQZXJpb2Q9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUub3ZlcmxpbmVQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMucG9zdHVyZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5wb3N0dXJlLFsibm9ybWFsIiwiaXRhbGljIl0pO3RoaXMuc2l6ZT0oMCxvLmdldE1lYXN1cmVtZW50KShlLnNpemUsIjEwcHQiKTt0aGlzLnR5cGVmYWNlPWUudHlwZWZhY2V8fCJDb3VyaWVyIjt0aGlzLnVuZGVybGluZT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUudW5kZXJsaW5lLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMudW5kZXJsaW5lUGVyaW9kPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnVuZGVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMud2VpZ2h0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLndlaWdodCxbIm5vcm1hbCIsImJvbGQiXSk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbGw9bnVsbH1bci4kY2xlYW5dKGUpe3N1cGVyW3IuJGNsZWFuXShlKTt0aGlzW3IuJGdsb2JhbERhdGFdLnVzZWRUeXBlZmFjZXMuYWRkKHRoaXMudHlwZWZhY2UpfVtyLiR0b1N0eWxlXSgpe2NvbnN0IGU9KDAscy50b1N0eWxlKSh0aGlzLCJmaWxsIiksdD1lLmNvbG9yO2lmKHQpaWYoIiMwMDAwMDAiPT09dClkZWxldGUgZS5jb2xvcjtlbHNlIGlmKCF0LnN0YXJ0c1dpdGgoIiMiKSl7ZS5iYWNrZ3JvdW5kPXQ7ZS5iYWNrZ3JvdW5kQ2xpcD0idGV4dCI7ZS5jb2xvcj0idHJhbnNwYXJlbnQifXRoaXMuYmFzZWxpbmVTaGlmdCYmKGUudmVydGljYWxBbGlnbj0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5iYXNlbGluZVNoaWZ0KSk7ZS5mb250S2VybmluZz0ibm9uZSI9PT10aGlzLmtlcm5pbmdNb2RlPyJub25lIjoibm9ybWFsIjtlLmxldHRlclNwYWNpbmc9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMubGV0dGVyU3BhY2luZyk7aWYoMCE9PXRoaXMubGluZVRocm91Z2gpe2UudGV4dERlY29yYXRpb249ImxpbmUtdGhyb3VnaCI7Mj09PXRoaXMubGluZVRocm91Z2gmJihlLnRleHREZWNvcmF0aW9uU3R5bGU9ImRvdWJsZSIpfWlmKDAhPT10aGlzLm92ZXJsaW5lKXtlLnRleHREZWNvcmF0aW9uPSJvdmVybGluZSI7Mj09PXRoaXMub3ZlcmxpbmUmJihlLnRleHREZWNvcmF0aW9uU3R5bGU9ImRvdWJsZSIpfWUuZm9udFN0eWxlPXRoaXMucG9zdHVyZTtlLmZvbnRTaXplPSgwLHMubWVhc3VyZVRvU3RyaW5nKSguOTkqdGhpcy5zaXplKTsoMCxzLnNldEZvbnRGYW1pbHkpKHRoaXMsdGhpcyx0aGlzW3IuJGdsb2JhbERhdGFdLmZvbnRGaW5kZXIsZSk7aWYoMCE9PXRoaXMudW5kZXJsaW5lKXtlLnRleHREZWNvcmF0aW9uPSJ1bmRlcmxpbmUiOzI9PT10aGlzLnVuZGVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250V2VpZ2h0PXRoaXMud2VpZ2h0O3JldHVybiBlfX1jbGFzcyBGb3JtYXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJmb3JtYXQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBIYW5kbGVyIGV4dGVuZHMgci5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiaGFuZGxlciIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgSHlwaGVuYXRpb24gZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJoeXBoZW5hdGlvbiIpO3RoaXMuZXhjbHVkZUFsbENhcHM9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmV4Y2x1ZGVBbGxDYXBzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5leGNsdWRlSW5pdGlhbENhcD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuZXhjbHVkZUluaXRpYWxDYXAsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmh5cGhlbmF0ZT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuaHlwaGVuYXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnB1c2hDaGFyYWN0ZXJDb3VudD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUucHVzaENoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTozLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnJlbWFpbkNoYXJhY3RlckNvdW50PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5yZW1haW5DaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Myx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMud29yZENoYXJhY3RlckNvdW50PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS53b3JkQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjcsdmFsaWRhdGU6ZT0+ZT49MH0pfX1jbGFzcyBJbWFnZSBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImltYWdlIik7dGhpcy5hc3BlY3Q9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYXNwZWN0LFsiZml0IiwiYWN0dWFsIiwiaGVpZ2h0Iiwibm9uZSIsIndpZHRoIl0pO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5ocmVmPWUuaHJlZnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnRyYW5zZmVyRW5jb2Rpbmc9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHJhbnNmZXJFbmNvZGluZyxbImJhc2U2NCIsIm5vbmUiLCJwYWNrYWdlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kdG9IVE1MXSgpe2lmKHRoaXMuY29udGVudFR5cGUmJiFwLmhhcyh0aGlzLmNvbnRlbnRUeXBlLnRvTG93ZXJDYXNlKCkpKXJldHVybiBvLkhUTUxSZXN1bHQuRU1QVFk7bGV0IGU9dGhpc1tyLiRnbG9iYWxEYXRhXS5pbWFnZXMmJnRoaXNbci4kZ2xvYmFsRGF0YV0uaW1hZ2VzLmdldCh0aGlzLmhyZWYpO2lmKCFlJiYodGhpcy5ocmVmfHwhdGhpc1tyLiRjb250ZW50XSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWTtlfHwiYmFzZTY0IiE9PXRoaXMudHJhbnNmZXJFbmNvZGluZ3x8KGU9KDAsYy5zdHJpbmdUb0J5dGVzKShhdG9iKHRoaXNbci4kY29udGVudF0pKSk7aWYoIWUpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWTtpZighdGhpcy5jb250ZW50VHlwZSl7Zm9yKGNvbnN0W3QsYV1vZiBtKWlmKGUubGVuZ3RoPnQubGVuZ3RoJiZ0LmV2ZXJ5KCgodCxhKT0+dD09PWVbYV0pKSl7dGhpcy5jb250ZW50VHlwZT1hO2JyZWFrfWlmKCF0aGlzLmNvbnRlbnRUeXBlKXJldHVybiBvLkhUTUxSZXN1bHQuRU1QVFl9Y29uc3QgdD1uZXcgQmxvYihbZV0se3R5cGU6dGhpcy5jb250ZW50VHlwZX0pO2xldCBhO3N3aXRjaCh0aGlzLmFzcGVjdCl7Y2FzZSJmaXQiOmNhc2UiYWN0dWFsIjpicmVhaztjYXNlImhlaWdodCI6YT17aGVpZ2h0OiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifTticmVhaztjYXNlIm5vbmUiOmE9e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uid2lkdGgiOmE9e3dpZHRoOiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifX1jb25zdCBpPXRoaXNbci4kZ2V0UGFyZW50XSgpO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiaW1nIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUltYWdlIl0sc3R5bGU6YSxzcmM6VVJMLmNyZWF0ZU9iamVjdFVSTCh0KSxhbHQ6aT9hcmlhTGFiZWwoaVtyLiRnZXRQYXJlbnRdKCkpOm51bGx9fSl9fWNsYXNzIEltYWdlRWRpdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImltYWdlRWRpdCIsITApO3RoaXMuZGF0YT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5kYXRhLFsibGluayIsImVtYmVkIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtyLiR0b0hUTUxdKGUpe3JldHVybiJlbWJlZCI9PT10aGlzLmRhdGE/by5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46W10sYXR0cmlidXRlczp7fX0pOm8uSFRNTFJlc3VsdC5FTVBUWX19Y2xhc3MgSW50ZWdlciBleHRlbmRzIHIuQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJpbnRlZ2VyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGZpbmFsaXplXSgpe2NvbnN0IGU9cGFyc2VJbnQodGhpc1tyLiRjb250ZW50XS50cmltKCksMTApO3RoaXNbci4kY29udGVudF09aXNOYU4oZSk/bnVsbDplfVtyLiR0b0hUTUxdKGUpe3JldHVybiB2YWx1ZVRvSHRtbChudWxsIT09dGhpc1tyLiRjb250ZW50XT90aGlzW3IuJGNvbnRlbnRdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBJc3N1ZXJzIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiaXNzdWVycyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBJdGVtcyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIml0ZW1zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnNhdmU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnNhdmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9W3IuJHRvSFRNTF0oKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXNbci4kZ2V0Q2hpbGRyZW5dKCkpZS5wdXNoKHRbci4kdGV4dF0oKSk7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKGUpfX10Lkl0ZW1zPUl0ZW1zO2NsYXNzIEtlZXAgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJrZWVwIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjtjb25zdCB0PVsibm9uZSIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiXTt0aGlzLmludGFjdD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5pbnRhY3QsdCk7dGhpcy5uZXh0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm5leHQsdCk7dGhpcy5wcmV2aW91cz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5wcmV2aW91cyx0KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgS2V5VXNhZ2UgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJrZXlVc2FnZSIpO2NvbnN0IHQ9WyIiLCJ5ZXMiLCJubyJdO3RoaXMuY3JsU2lnbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5jcmxTaWduLHQpO3RoaXMuZGF0YUVuY2lwaGVybWVudD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5kYXRhRW5jaXBoZXJtZW50LHQpO3RoaXMuZGVjaXBoZXJPbmx5PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmRlY2lwaGVyT25seSx0KTt0aGlzLmRpZ2l0YWxTaWduYXR1cmU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuZGlnaXRhbFNpZ25hdHVyZSx0KTt0aGlzLmVuY2lwaGVyT25seT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5lbmNpcGhlck9ubHksdCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmtleUFncmVlbWVudD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5rZXlBZ3JlZW1lbnQsdCk7dGhpcy5rZXlDZXJ0U2lnbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5rZXlDZXJ0U2lnbix0KTt0aGlzLmtleUVuY2lwaGVybWVudD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5rZXlFbmNpcGhlcm1lbnQsdCk7dGhpcy5ub25SZXB1ZGlhdGlvbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5ub25SZXB1ZGlhdGlvbix0KTt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBMaW5lIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwibGluZSIsITApO3RoaXMuaGFuZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc2xvcGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuc2xvcGUsWyJcXCIsIi8iXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsfVtyLiR0b0hUTUxdKCl7Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKVtyLiRnZXRQYXJlbnRdKCksdD10aGlzLmVkZ2V8fG5ldyBFZGdlKHt9KSxhPXRbci4kdG9TdHlsZV0oKSxpPU9iamVjdC5jcmVhdGUobnVsbCksbj0idmlzaWJsZSI9PT10LnByZXNlbmNlP3QudGhpY2tuZXNzOjA7aS5zdHJva2VXaWR0aD0oMCxzLm1lYXN1cmVUb1N0cmluZykobik7aS5zdHJva2U9YS5jb2xvcjtsZXQgYyxsLGgsdSxkPSIxMDAlIixnPSIxMDAlIjtpZihlLnc8PW4pe1tjLGwsaCx1XT1bIjUwJSIsMCwiNTAlIiwiMTAwJSJdO2Q9aS5zdHJva2VXaWR0aH1lbHNlIGlmKGUuaDw9bil7W2MsbCxoLHVdPVswLCI1MCUiLCIxMDAlIiwiNTAlIl07Zz1pLnN0cm9rZVdpZHRofWVsc2UiXFwiPT09dGhpcy5zbG9wZT9bYyxsLGgsdV09WzAsMCwiMTAwJSIsIjEwMCUiXTpbYyxsLGgsdV09WzAsIjEwMCUiLCIxMDAlIiwwXTtjb25zdCBwPXtuYW1lOiJzdmciLGNoaWxkcmVuOlt7bmFtZToibGluZSIsYXR0cmlidXRlczp7eG1sbnM6Zix4MTpjLHkxOmwseDI6aCx5Mjp1LHN0eWxlOml9fV0sYXR0cmlidXRlczp7eG1sbnM6Zix3aWR0aDpkLGhlaWdodDpnLHN0eWxlOntvdmVyZmxvdzoidmlzaWJsZSJ9fX07aWYoaGFzTWFyZ2luKGUpKXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTp7ZGlzcGxheToiaW5saW5lIix3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19LGNoaWxkcmVuOltwXX0pO3AuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2VzcyhwKX19Y2xhc3MgTGluZWFyIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwibGluZWFyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbInRvUmlnaHQiLCJ0b0JvdHRvbSIsInRvTGVmdCIsInRvVG9wIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oZSl7ZT1lP2Vbci4kdG9TdHlsZV0oKToiI0ZGRkZGRiI7cmV0dXJuYGxpbmVhci1ncmFkaWVudCgke3RoaXMudHlwZS5yZXBsYWNlKC8oW1JCTFRdKS8sIiAkMSIpLnRvTG93ZXJDYXNlKCl9LCAke2V9LCAke3RoaXMuY29sb3I/dGhpcy5jb2xvcltyLiR0b1N0eWxlXSgpOiIjMDAwMDAwIn0pYH19Y2xhc3MgTG9ja0RvY3VtZW50IGV4dGVuZHMgci5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImxvY2tEb2N1bWVudCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7dGhpc1tyLiRjb250ZW50XT0oMCxvLmdldFN0cmluZ09wdGlvbikodGhpc1tyLiRjb250ZW50XSxbImF1dG8iLCIwIiwiMSJdKX19Y2xhc3MgTWFuaWZlc3QgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJtYW5pZmVzdCIsITApO3RoaXMuYWN0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmFjdGlvbixbImluY2x1ZGUiLCJhbGwiLCJleGNsdWRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5yZWY9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1hcmdpbiBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm1hcmdpbiIsITApO3RoaXMuYm90dG9tSW5zZXQ9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5ib3R0b21JbnNldCwiMCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWZ0SW5zZXQ9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5sZWZ0SW5zZXQsIjAiKTt0aGlzLnJpZ2h0SW5zZXQ9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5yaWdodEluc2V0LCIwIik7dGhpcy50b3BJbnNldD0oMCxvLmdldE1lYXN1cmVtZW50KShlLnRvcEluc2V0LCIwIik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W3IuJHRvU3R5bGVdKCl7cmV0dXJue21hcmdpbjooMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy50b3BJbnNldCkrIiAiKygwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnJpZ2h0SW5zZXQpKyIgIisoMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5ib3R0b21JbnNldCkrIiAiKygwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmxlZnRJbnNldCl9fX1jbGFzcyBNZHAgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJtZHAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGVybWlzc2lvbnM9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnBlcm1pc3Npb25zLGRlZmF1bHRWYWx1ZToyLHZhbGlkYXRlOmU9PjE9PT1lfHwzPT09ZX0pO3RoaXMuc2lnbmF0dXJlVHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5zaWduYXR1cmVUeXBlLFsiZmlsbGVyIiwiYXV0aG9yIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgTWVkaXVtIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwibWVkaXVtIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmltYWdpbmdCQm94PSgwLG8uZ2V0QkJveCkoZS5pbWFnaW5nQkJveCk7dGhpcy5sb25nPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubG9uZyk7dGhpcy5vcmllbnRhdGlvbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5vcmllbnRhdGlvbixbInBvcnRyYWl0IiwibGFuZHNjYXBlIl0pO3RoaXMuc2hvcnQ9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5zaG9ydCk7dGhpcy5zdG9jaz1lLnN0b2NrfHwiIjt0aGlzLnRyYXlJbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50cmF5SW4sWyJhdXRvIiwiZGVsZWdhdGUiLCJwYWdlRnJvbnQiXSk7dGhpcy50cmF5T3V0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnRyYXlPdXQsWyJhdXRvIiwiZGVsZWdhdGUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBNZXNzYWdlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwibWVzc2FnZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudGV4dD1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgTnVtZXJpY0VkaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJudW1lcmljRWRpdCIsITApO3RoaXMuaFNjcm9sbFBvbGljeT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9KDAscy50b1N0eWxlKSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIiksYT10aGlzW3IuJGdldFBhcmVudF0oKVtyLiRnZXRQYXJlbnRdKCksaT17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e3R5cGU6InRleHQiLGZpZWxkSWQ6YVtyLiR1aWRdLGRhdGFJZDphW3IuJGRhdGFdPy5bci4kdWlkXXx8YVtyLiR1aWRdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGEpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoYSkpe2kuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO2kuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOltpXX0pfX1jbGFzcyBPY2N1ciBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm9jY3VyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmluaXRpYWw9IiIhPT1lLmluaXRpYWw/KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmluaXRpYWwsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5tYXg9IiIhPT1lLm1heD8oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubWF4LGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5taW49IiIhPT1lLm1pbj8oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubWluLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W3IuJGNsZWFuXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRQYXJlbnRdKCksdD10aGlzLm1pbjsiIj09PXRoaXMubWluJiYodGhpcy5taW49ZSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHxlIGluc3RhbmNlb2YgUGFnZVNldD8wOjEpOyIiPT09dGhpcy5tYXgmJih0aGlzLm1heD0iIj09PXQ/ZSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHxlIGluc3RhbmNlb2YgUGFnZVNldD8tMToxOnRoaXMubWluKTstMSE9PXRoaXMubWF4JiZ0aGlzLm1heDx0aGlzLm1pbiYmKHRoaXMubWF4PXRoaXMubWluKTsiIj09PXRoaXMuaW5pdGlhbCYmKHRoaXMuaW5pdGlhbD1lIGluc3RhbmNlb2YgVGVtcGxhdGU/MTp0aGlzLm1pbil9fWNsYXNzIE9pZCBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm9pZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPaWRzIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwib2lkcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLm9pZD1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgT3ZlcmZsb3cgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJvdmVyZmxvdyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGdldEV4dHJhXSgpe2lmKCF0aGlzW3IuJGV4dHJhXSl7Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKSx0PXRoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpLGE9dFtyLiRzZWFyY2hOb2RlXSh0aGlzLnRhcmdldCxlKSxpPXRbci4kc2VhcmNoTm9kZV0odGhpcy5sZWFkZXIsZSksbj10W3IuJHNlYXJjaE5vZGVdKHRoaXMudHJhaWxlcixlKTt0aGlzW3IuJGV4dHJhXT17dGFyZ2V0OmE/LlswXXx8bnVsbCxsZWFkZXI6aT8uWzBdfHxudWxsLHRyYWlsZXI6bj8uWzBdfHxudWxsLGFkZExlYWRlcjohMSxhZGRUcmFpbGVyOiExfX1yZXR1cm4gdGhpc1tyLiRleHRyYV19fWNsYXNzIFBhZ2VBcmVhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicGFnZUFyZWEiLCEwKTt0aGlzLmJsYW5rT3JOb3RCbGFuaz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5ibGFua09yTm90QmxhbmssWyJhbnkiLCJibGFuayIsIm5vdEJsYW5rIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbml0aWFsTnVtYmVyPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5pbml0aWFsTnVtYmVyLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5udW1iZXJlZD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubnVtYmVyZWQsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm9kZE9yRXZlbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5vZGRPckV2ZW4sWyJhbnkiLCJldmVuIiwib2RkIl0pO3RoaXMucGFnZVBvc2l0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBhZ2VQb3NpdGlvbixbImFueSIsImZpcnN0IiwibGFzdCIsIm9ubHkiLCJyZXN0Il0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZWRpdW09bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5hcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRpc1VzYWJsZV0oKXtpZighdGhpc1tyLiRleHRyYV0pe3RoaXNbci4kZXh0cmFdPXtudW1iZXJPZlVzZTowfTtyZXR1cm4hMH1yZXR1cm4hdGhpcy5vY2N1cnx8LTE9PT10aGlzLm9jY3VyLm1heHx8dGhpc1tyLiRleHRyYV0ubnVtYmVyT2ZVc2U8dGhpcy5vY2N1ci5tYXh9W3IuJGNsZWFuUGFnZV0oKXtkZWxldGUgdGhpc1tyLiRleHRyYV19W3IuJGdldE5leHRQYWdlXSgpe3RoaXNbci4kZXh0cmFdfHwodGhpc1tyLiRleHRyYV09e251bWJlck9mVXNlOjB9KTtjb25zdCBlPXRoaXNbci4kZ2V0UGFyZW50XSgpO2lmKCJvcmRlcmVkT2NjdXJyZW5jZSI9PT1lLnJlbGF0aW9uJiZ0aGlzW3IuJGlzVXNhYmxlXSgpKXt0aGlzW3IuJGV4dHJhXS5udW1iZXJPZlVzZSs9MTtyZXR1cm4gdGhpc31yZXR1cm4gZVtyLiRnZXROZXh0UGFnZV0oKX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuIHRoaXNbci4kZXh0cmFdLnNwYWNlfHx7d2lkdGg6MCxoZWlnaHQ6MH19W3IuJHRvSFRNTF0oKXt0aGlzW3IuJGV4dHJhXXx8KHRoaXNbci4kZXh0cmFdPXtudW1iZXJPZlVzZToxfSk7Y29uc3QgZT1bXTt0aGlzW3IuJGV4dHJhXS5jaGlsZHJlbj1lO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZih0aGlzLm1lZGl1bSYmdGhpcy5tZWRpdW0uc2hvcnQmJnRoaXMubWVkaXVtLmxvbmcpe3Qud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMubWVkaXVtLnNob3J0KTt0LmhlaWdodD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tZWRpdW0ubG9uZyk7dGhpc1tyLiRleHRyYV0uc3BhY2U9e3dpZHRoOnRoaXMubWVkaXVtLnNob3J0LGhlaWdodDp0aGlzLm1lZGl1bS5sb25nfTtpZigibGFuZHNjYXBlIj09PXRoaXMubWVkaXVtLm9yaWVudGF0aW9uKXtjb25zdCBlPXQud2lkdGg7dC53aWR0aD10LmhlaWdodDt0LmhlaWdodD1lO3RoaXNbci4kZXh0cmFdLnNwYWNlPXt3aWR0aDp0aGlzLm1lZGl1bS5sb25nLGhlaWdodDp0aGlzLm1lZGl1bS5zaG9ydH19fWVsc2UoMCxjLndhcm4pKCJYRkEgLSBObyBtZWRpdW0gc3BlY2lmaWVkIGluIHBhZ2VBcmVhOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTt0aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwic3ViZm9ybSJdKSxpbmNsdWRlOiEwfSk7dGhpc1tyLiRjaGlsZHJlblRvSFRNTF0oe2ZpbHRlcjpuZXcgU2V0KFsiY29udGVudEFyZWEiXSksaW5jbHVkZTohMH0pO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjplLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUGFnZSJdLGlkOnRoaXNbci4kdWlkXSxzdHlsZTp0LHhmYU5hbWU6dGhpcy5uYW1lfX0pfX1jbGFzcyBQYWdlU2V0IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicGFnZVNldCIsITApO3RoaXMuZHVwbGV4SW1wb3NpdGlvbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5kdXBsZXhJbXBvc2l0aW9uLFsibG9uZ0VkZ2UiLCJzaG9ydEVkZ2UiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJlbGF0aW9uLFsib3JkZXJlZE9jY3VycmVuY2UiLCJkdXBsZXhQYWdpbmF0ZWQiLCJzaW1wbGV4UGFnaW5hdGVkIl0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMucGFnZUFyZWE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wYWdlU2V0PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRjbGVhblBhZ2VdKCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5wYWdlQXJlYS5jaGlsZHJlbillW3IuJGNsZWFuUGFnZV0oKTtmb3IoY29uc3QgZSBvZiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW4pZVtyLiRjbGVhblBhZ2VdKCl9W3IuJGlzVXNhYmxlXSgpe3JldHVybiF0aGlzLm9jY3VyfHwtMT09PXRoaXMub2NjdXIubWF4fHx0aGlzW3IuJGV4dHJhXS5udW1iZXJPZlVzZTx0aGlzLm9jY3VyLm1heH1bci4kZ2V0TmV4dFBhZ2VdKCl7dGhpc1tyLiRleHRyYV18fCh0aGlzW3IuJGV4dHJhXT17bnVtYmVyT2ZVc2U6MSxwYWdlSW5kZXg6LTEscGFnZVNldEluZGV4Oi0xfSk7aWYoIm9yZGVyZWRPY2N1cnJlbmNlIj09PXRoaXMucmVsYXRpb24pe2lmKHRoaXNbci4kZXh0cmFdLnBhZ2VJbmRleCsxPHRoaXMucGFnZUFyZWEuY2hpbGRyZW4ubGVuZ3RoKXt0aGlzW3IuJGV4dHJhXS5wYWdlSW5kZXgrPTE7cmV0dXJuIHRoaXMucGFnZUFyZWEuY2hpbGRyZW5bdGhpc1tyLiRleHRyYV0ucGFnZUluZGV4XVtyLiRnZXROZXh0UGFnZV0oKX1pZih0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXgrMTx0aGlzLnBhZ2VTZXQuY2hpbGRyZW4ubGVuZ3RoKXt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXgrPTE7cmV0dXJuIHRoaXMucGFnZVNldC5jaGlsZHJlblt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXhdW3IuJGdldE5leHRQYWdlXSgpfWlmKHRoaXNbci4kaXNVc2FibGVdKCkpe3RoaXNbci4kZXh0cmFdLm51bWJlck9mVXNlKz0xO3RoaXNbci4kZXh0cmFdLnBhZ2VJbmRleD0tMTt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXg9LTE7cmV0dXJuIHRoaXNbci4kZ2V0TmV4dFBhZ2VdKCl9Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKTtpZihlIGluc3RhbmNlb2YgUGFnZVNldClyZXR1cm4gZVtyLiRnZXROZXh0UGFnZV0oKTt0aGlzW3IuJGNsZWFuUGFnZV0oKTtyZXR1cm4gdGhpc1tyLiRnZXROZXh0UGFnZV0oKX1jb25zdCBlPXRoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5wYWdlTnVtYmVyLHQ9ZSUyPT0wPyJldmVuIjoib2RkIixhPTA9PT1lPyJmaXJzdCI6InJlc3QiO2xldCBpPXRoaXMucGFnZUFyZWEuY2hpbGRyZW4uZmluZCgoZT0+ZS5vZGRPckV2ZW49PT10JiZlLnBhZ2VQb3NpdGlvbj09PWEpKTtpZihpKXJldHVybiBpO2k9dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT4iYW55Ij09PWUub2RkT3JFdmVuJiZlLnBhZ2VQb3NpdGlvbj09PWEpKTtpZihpKXJldHVybiBpO2k9dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT4iYW55Ij09PWUub2RkT3JFdmVuJiYiYW55Ij09PWUucGFnZVBvc2l0aW9uKSk7cmV0dXJuIGl8fHRoaXMucGFnZUFyZWEuY2hpbGRyZW5bMF19fWNsYXNzIFBhcmEgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJwYXJhIiwhMCk7dGhpcy5oQWxpZ249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGluZUhlaWdodD1lLmxpbmVIZWlnaHQ/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5saW5lSGVpZ2h0LCIwcHQiKToiIjt0aGlzLm1hcmdpbkxlZnQ9ZS5tYXJnaW5MZWZ0PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWFyZ2luTGVmdCwiMHB0Iik6IiI7dGhpcy5tYXJnaW5SaWdodD1lLm1hcmdpblJpZ2h0PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWFyZ2luUmlnaHQsIjBwdCIpOiIiO3RoaXMub3JwaGFucz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUub3JwaGFucyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5wcmVzZXJ2ZT1lLnByZXNlcnZlfHwiIjt0aGlzLnJhZGl4T2Zmc2V0PWUucmFkaXhPZmZzZXQ/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5yYWRpeE9mZnNldCwiMHB0Iik6IiI7dGhpcy5zcGFjZUFib3ZlPWUuc3BhY2VBYm92ZT8oMCxvLmdldE1lYXN1cmVtZW50KShlLnNwYWNlQWJvdmUsIjBwdCIpOiIiO3RoaXMuc3BhY2VCZWxvdz1lLnNwYWNlQmVsb3c/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5zcGFjZUJlbG93LCIwcHQiKToiIjt0aGlzLnRhYkRlZmF1bHQ9ZS50YWJEZWZhdWx0PygwLG8uZ2V0TWVhc3VyZW1lbnQpKHRoaXMudGFiRGVmYXVsdCk6IiI7dGhpcy50YWJTdG9wcz0oZS50YWJTdG9wc3x8IiIpLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKCgoZSx0KT0+dCUyPT0xPygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUpOmUpKTt0aGlzLnRleHRJbmRlbnQ9ZS50ZXh0SW5kZW50PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUudGV4dEluZGVudCwiMHB0Iik6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudkFsaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnZBbGlnbixbInRvcCIsImJvdHRvbSIsIm1pZGRsZSJdKTt0aGlzLndpZG93cz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUud2lkb3dzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmh5cGhlbmF0aW9uPW51bGx9W3IuJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsImhBbGlnbiIpOyIiIT09dGhpcy5tYXJnaW5MZWZ0JiYoZS5wYWRkaW5nTGVmdD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tYXJnaW5MZWZ0KSk7IiIhPT10aGlzLm1hcmdpblJpZ2h0JiYoZS5wYWRkaW5naWdodD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tYXJnaW5SaWdodCkpOyIiIT09dGhpcy5zcGFjZUFib3ZlJiYoZS5wYWRkaW5nVG9wPSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnNwYWNlQWJvdmUpKTsiIiE9PXRoaXMuc3BhY2VCZWxvdyYmKGUucGFkZGluZ0JvdHRvbT0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5zcGFjZUJlbG93KSk7aWYoIiIhPT10aGlzLnRleHRJbmRlbnQpe2UudGV4dEluZGVudD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy50ZXh0SW5kZW50KTsoMCxzLmZpeFRleHRJbmRlbnQpKGUpfXRoaXMubGluZUhlaWdodD4wJiYoZS5saW5lSGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmxpbmVIZWlnaHQpKTsiIiE9PXRoaXMudGFiRGVmYXVsdCYmKGUudGFiU2l6ZT0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy50YWJEZWZhdWx0KSk7dGhpcy50YWJTdG9wcy5sZW5ndGg7dGhpcy5oeXBoZW5hdGF0aW9uJiZPYmplY3QuYXNzaWduKGUsdGhpcy5oeXBoZW5hdGF0aW9uW3IuJHRvU3R5bGVdKCkpO3JldHVybiBlfX1jbGFzcyBQYXNzd29yZEVkaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJwYXNzd29yZEVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGFzc3dvcmRDaGFyPWUucGFzc3dvcmRDaGFyfHwiKiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyBQYXR0ZXJuIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicGF0dGVybiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJjcm9zc0hhdGNoIiwiY3Jvc3NEaWFnb25hbCIsImRpYWdvbmFsTGVmdCIsImRpYWdvbmFsUmlnaHQiLCJob3Jpem9udGFsIiwidmVydGljYWwiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXShlKXtlPWU/ZVtyLiR0b1N0eWxlXSgpOiIjRkZGRkZGIjtjb25zdCB0PXRoaXMuY29sb3I/dGhpcy5jb2xvcltyLiR0b1N0eWxlXSgpOiIjMDAwMDAwIixhPSJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50IixpPWAke2V9LCR7ZX0gNXB4LCR7dH0gNXB4LCR7dH0gMTBweGA7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSJjcm9zc0hhdGNoIjpyZXR1cm5gJHthfSh0byB0b3AsJHtpfSkgJHthfSh0byByaWdodCwke2l9KWA7Y2FzZSJjcm9zc0RpYWdvbmFsIjpyZXR1cm5gJHthfSg0NWRlZywke2l9KSAke2F9KC00NWRlZywke2l9KWA7Y2FzZSJkaWFnb25hbExlZnQiOnJldHVybmAke2F9KDQ1ZGVnLCR7aX0pYDtjYXNlImRpYWdvbmFsUmlnaHQiOnJldHVybmAke2F9KC00NWRlZywke2l9KWA7Y2FzZSJob3Jpem9udGFsIjpyZXR1cm5gJHthfSh0byB0b3AsJHtpfSlgO2Nhc2UidmVydGljYWwiOnJldHVybmAke2F9KHRvIHJpZ2h0LCR7aX0pYH1yZXR1cm4iIn19Y2xhc3MgUGljdHVyZSBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInBpY3R1cmUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUHJvdG8gZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJwcm90byIsITApO3RoaXMuYXBwZWFyYW5jZUZpbHRlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmFyYz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmFyZWE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5hc3Npc3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5iYXJjb2RlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuYmluZEl0ZW1zPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuYm9va2VuZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5ib3JkZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVhaz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQWZ0ZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0JlZm9yZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJ1dHRvbj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNhbGN1bGF0ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNhcHRpb249bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNlcnRpZmljYXRlcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNoZWNrQnV0dG9uPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY2hvaWNlTGlzdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvbG9yPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY29tYj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5jb250ZW50QXJlYT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvcm5lcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lRWRpdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWZhdWx0VWk9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZXNjPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lZGdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jb2Rpbmc9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNvZGluZ3M9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdERhdGE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbk1ldGhvZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb25NZXRob2RzPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4ZWN1dGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leHRyYXM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmZpbGw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5maWx0ZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmZvbnQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mb3JtYXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5oYW5kbGVyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaHlwaGVuYXRpb249bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlRWRpdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pc3N1ZXJzPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaXRlbXM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5rZWVwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMua2V5VXNhZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5saW5lPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubGluZWFyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubG9ja0RvY3VtZW50PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubWFuaWZlc3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tYXJnaW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tZHA9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tZWRpdW09bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tZXNzYWdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubnVtZXJpY0VkaXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5vY2N1cj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLm9pZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLm9pZHM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5vdmVyZmxvdz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VBcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMucGFnZVNldD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnBhcmE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXNzd29yZEVkaXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXR0ZXJuPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMucGljdHVyZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnJhZGlhbD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbnM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWN0YW5nbGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWY9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zY3JpcHQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmF0dXJlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmluZz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNvbGlkPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3BlYWs9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdGlwcGxlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE5zPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3VibWl0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRleHRFZGl0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWVTdGFtcD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRvb2xUaXA9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzYWw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnVpPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudmFsaWRhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy52YWx1ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnZhcmlhYmxlcz1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgUmFkaWFsIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicmFkaWFsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbInRvRWRnZSIsInRvQ2VudGVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oZSl7ZT1lP2Vbci4kdG9TdHlsZV0oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3Jbci4kdG9TdHlsZV0oKToiIzAwMDAwMCI7cmV0dXJuYHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgY2VudGVyLCAkeyJ0b0VkZ2UiPT09dGhpcy50eXBlP2Ake2V9LCR7dH1gOmAke3R9LCR7ZX1gfSlgfX1jbGFzcyBSZWFzb24gZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJyZWFzb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUmVhc29ucyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInJlYXNvbnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5yZWFzb249bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFJlY3RhbmdsZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInJlY3RhbmdsZSIsITApO3RoaXMuaGFuZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgci5YRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5maWxsPW51bGx9W3IuJHRvSFRNTF0oKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5sZW5ndGg/dGhpcy5lZGdlLmNoaWxkcmVuWzBdOm5ldyBFZGdlKHt9KSx0PWVbci4kdG9TdHlsZV0oKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW3IuJHRvU3R5bGVdKCkpOmEuZmlsbD0idHJhbnNwYXJlbnQiO2Euc3Ryb2tlV2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKCJ2aXNpYmxlIj09PWUucHJlc2VuY2U/ZS50aGlja25lc3M6MCk7YS5zdHJva2U9dC5jb2xvcjtjb25zdCBpPSh0aGlzLmNvcm5lci5jaGlsZHJlbi5sZW5ndGg/dGhpcy5jb3JuZXIuY2hpbGRyZW5bMF06bmV3IENvcm5lcih7fSkpW3IuJHRvU3R5bGVdKCksbj17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6InJlY3QiLGF0dHJpYnV0ZXM6e3htbG5zOmYsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIseDowLHk6MCxyeDppLnJhZGl1cyxyeTppLnJhZGl1cyxzdHlsZTphfX1dLGF0dHJpYnV0ZXM6e3htbG5zOmYsc3R5bGU6e292ZXJmbG93OiJ2aXNpYmxlIn0sd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fTtpZihoYXNNYXJnaW4odGhpc1tyLiRnZXRQYXJlbnRdKClbci4kZ2V0UGFyZW50XSgpKSlyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7c3R5bGU6e2Rpc3BsYXk6ImlubGluZSIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fSxjaGlsZHJlbjpbbl19KTtuLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3Mobil9fWNsYXNzIFJlZkVsZW1lbnQgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJyZWYiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU2NyaXB0IGV4dGVuZHMgci5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic2NyaXB0Iik7dGhpcy5iaW5kaW5nPWUuYmluZGluZ3x8IiI7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucnVuQXQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucnVuQXQsWyJjbGllbnQiLCJib3RoIiwic2VydmVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU2V0UHJvcGVydHkgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzZXRQcm9wZXJ0eSIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiJ9fXQuU2V0UHJvcGVydHk9U2V0UHJvcGVydHk7Y2xhc3MgU2lnbkRhdGEgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzaWduRGF0YSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUub3BlcmF0aW9uLFsic2lnbiIsImNsZWFyIiwidmVyaWZ5Il0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsfX1jbGFzcyBTaWduYXR1cmUgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzaWduYXR1cmUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsiUERGMS4zIiwiUERGMS42Il0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGw7dGhpcy5tYXJnaW49bnVsbH19Y2xhc3MgU2lnbmluZyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInNpZ25pbmciLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgU29saWQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzb2xpZCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W3IuJHRvU3R5bGVdKGUpe3JldHVybiBlP2Vbci4kdG9TdHlsZV0oKToiI0ZGRkZGRiJ9fWNsYXNzIFNwZWFrIGV4dGVuZHMgci5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic3BlYWsiKTt0aGlzLmRpc2FibGU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmRpc2FibGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJpb3JpdHk9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJpb3JpdHksWyJjdXN0b20iLCJjYXB0aW9uIiwibmFtZSIsInRvb2xUaXAiXSk7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU3RpcHBsZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInN0aXBwbGUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmF0ZT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUucmF0ZSxkZWZhdWx0VmFsdWU6NTAsdmFsaWRhdGU6ZT0+ZT49MCYmZTw9MTAwfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXShlKXtjb25zdCB0PXRoaXMucmF0ZS8xMDA7cmV0dXJuIGMuVXRpbC5tYWtlSGV4Q29sb3IoTWF0aC5yb3VuZChlLnZhbHVlLnIqKDEtdCkrdGhpcy52YWx1ZS5yKnQpLE1hdGgucm91bmQoZS52YWx1ZS5nKigxLXQpK3RoaXMudmFsdWUuZyp0KSxNYXRoLnJvdW5kKGUudmFsdWUuYiooMS10KSt0aGlzLnZhbHVlLmIqdCkpfX1jbGFzcyBTdWJmb3JtIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic3ViZm9ybSIsITApO3RoaXMuYWNjZXNzPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pO3RoaXMuYWxsb3dNYWNybz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuYWxsb3dNYWNybyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuYW5jaG9yVHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmNvbHVtbldpZHRocz0oZS5jb2x1bW5XaWR0aHN8fCIiKS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcCgoZT0+Ii0xIj09PWU/LTE6KDAsby5nZXRNZWFzdXJlbWVudCkoZSkpKTt0aGlzLmg9ZS5oPygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuaCk6IiI7dGhpcy5oQWxpZ249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGF5b3V0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmxheW91dCxbInBvc2l0aW9uIiwibHItdGIiLCJybC1yb3ciLCJybC10YiIsInJvdyIsInRhYmxlIiwidGIiXSk7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1heFcsIjBwdCIpO3RoaXMubWVyZ2VNb2RlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm1lcmdlTW9kZSxbImNvbnN1bWVEYXRhIiwibWF0Y2hUZW1wbGF0ZSJdKTt0aGlzLm1pbkg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy5yZXN0b3JlU3RhdGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucmVzdG9yZVN0YXRlLFsibWFudWFsIiwiYXV0byJdKTt0aGlzLnNjb3BlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnNjb3BlLFsibmFtZSIsIm5vbmUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/KDAsby5nZXRNZWFzdXJlbWVudCkoZS53KToiIjt0aGlzLng9KDAsby5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsby5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYmluZD1udWxsO3RoaXMuYm9va2VuZD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5icmVhaz1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmtlZXA9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLm92ZXJmbG93PW51bGw7dGhpcy5wYWdlU2V0PW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy52YXJpYWJsZXM9bnVsbDt0aGlzLmFyZWE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0FmdGVyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtCZWZvcmU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5jb25uZWN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leGNsR3JvdXA9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnByb3RvPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc2V0UHJvcGVydHk9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgci5YRkFPYmplY3RBcnJheX1bci4kZ2V0U3ViZm9ybVBhcmVudF0oKXtjb25zdCBlPXRoaXNbci4kZ2V0UGFyZW50XSgpO3JldHVybiBlIGluc3RhbmNlb2YgU3ViZm9ybVNldD9lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk6ZX1bci4kaXNCaW5kYWJsZV0oKXtyZXR1cm4hMH1bci4kaXNUaGVyZU1vcmVXaWR0aF0oKXtyZXR1cm4gdGhpcy5sYXlvdXQuZW5kc1dpdGgoIi10YiIpJiYwPT09dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCYmdGhpc1tyLiRleHRyYV0ubnVtYmVySW5MaW5lPjB8fHRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGlzVGhlcmVNb3JlV2lkdGhdKCl9KltyLiRnZXRDb250YWluZWRDaGlsZHJlbl0oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bci4kZmx1c2hIVE1MXSgpe3JldHVybigwLG4uZmx1c2hIVE1MKSh0aGlzKX1bci4kYWRkSFRNTF0oZSx0KXsoMCxuLmFkZEhUTUwpKHRoaXMsZSx0KX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuKDAsbi5nZXRBdmFpbGFibGVTcGFjZSkodGhpcyl9W3IuJGlzU3BsaXR0YWJsZV0oKXtjb25zdCBlPXRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKTtpZighZVtyLiRpc1NwbGl0dGFibGVdKCkpcmV0dXJuITE7aWYodm9pZCAwIT09dGhpc1tyLiRleHRyYV0uX2lzU3BsaXR0YWJsZSlyZXR1cm4gdGhpc1tyLiRleHRyYV0uX2lzU3BsaXR0YWJsZTtpZigicG9zaXRpb24iPT09dGhpcy5sYXlvdXR8fHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7dGhpc1tyLiRleHRyYV0uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZih0aGlzLmtlZXAmJiJub25lIiE9PXRoaXMua2VlcC5pbnRhY3Qpe3RoaXNbci4kZXh0cmFdLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYoZS5sYXlvdXQ/LmVuZHNXaXRoKCItdGIiKSYmMCE9PWVbci4kZXh0cmFdLm51bWJlckluTGluZSlyZXR1cm4hMTt0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlPSEwO3JldHVybiEwfVtyLiR0b0hUTUxdKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKHRoaXMuYnJlYWspe2lmKCJhdXRvIiE9PXRoaXMuYnJlYWsuYWZ0ZXJ8fCIiIT09dGhpcy5icmVhay5hZnRlclRhcmdldCl7Y29uc3QgZT1uZXcgQnJlYWtBZnRlcih7dGFyZ2V0VHlwZTp0aGlzLmJyZWFrLmFmdGVyLHRhcmdldDp0aGlzLmJyZWFrLmFmdGVyVGFyZ2V0LHN0YXJ0TmV3OnRoaXMuYnJlYWsuc3RhcnROZXcudG9TdHJpbmcoKX0pO2Vbci4kZ2xvYmFsRGF0YV09dGhpc1tyLiRnbG9iYWxEYXRhXTt0aGlzW3IuJGFwcGVuZENoaWxkXShlKTt0aGlzLmJyZWFrQWZ0ZXIucHVzaChlKX1pZigiYXV0byIhPT10aGlzLmJyZWFrLmJlZm9yZXx8IiIhPT10aGlzLmJyZWFrLmJlZm9yZVRhcmdldCl7Y29uc3QgZT1uZXcgQnJlYWtCZWZvcmUoe3RhcmdldFR5cGU6dGhpcy5icmVhay5iZWZvcmUsdGFyZ2V0OnRoaXMuYnJlYWsuYmVmb3JlVGFyZ2V0LHN0YXJ0TmV3OnRoaXMuYnJlYWsuc3RhcnROZXcudG9TdHJpbmcoKX0pO2Vbci4kZ2xvYmFsRGF0YV09dGhpc1tyLiRnbG9iYWxEYXRhXTt0aGlzW3IuJGFwcGVuZENoaWxkXShlKTt0aGlzLmJyZWFrQmVmb3JlLnB1c2goZSl9aWYoIiIhPT10aGlzLmJyZWFrLm92ZXJmbG93VGFyZ2V0KXtjb25zdCBlPW5ldyBPdmVyZmxvdyh7dGFyZ2V0OnRoaXMuYnJlYWsub3ZlcmZsb3dUYXJnZXQsbGVhZGVyOnRoaXMuYnJlYWsub3ZlcmZsb3dMZWFkZXIsdHJhaWxlcjp0aGlzLmJyZWFrLm92ZXJmbG93VHJhaWxlcn0pO2Vbci4kZ2xvYmFsRGF0YV09dGhpc1tyLiRnbG9iYWxEYXRhXTt0aGlzW3IuJGFwcGVuZENoaWxkXShlKTt0aGlzLm92ZXJmbG93LnB1c2goZSl9dGhpc1tyLiRyZW1vdmVDaGlsZF0odGhpcy5icmVhayk7dGhpcy5icmVhaz1udWxsfWlmKCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2UpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWTsodGhpcy5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+MXx8dGhpcy5icmVha0FmdGVyLmNoaWxkcmVuLmxlbmd0aD4xKSYmKDAsYy53YXJuKSgiWEZBIC0gU2V2ZXJhbCBicmVha0JlZm9yZSBvciBicmVha0FmdGVyIGluIHN1YmZvcm1zOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTtpZih0aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7Y29uc3QgZT10aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO2lmKGhhbmRsZUJyZWFrKGUpKXJldHVybiBvLkhUTUxSZXN1bHQuYnJlYWtOb2RlKGUpfWlmKHRoaXNbci4kZXh0cmFdPy5hZnRlckJyZWFrQWZ0ZXIpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWTsoMCxzLmZpeERpbWVuc2lvbnMpKHRoaXMpO2NvbnN0IHQ9W10sYT17aWQ6dGhpc1tyLiR1aWRdLGNsYXNzOltdfTsoMCxzLnNldEFjY2VzcykodGhpcyxhLmNsYXNzKTt0aGlzW3IuJGV4dHJhXXx8KHRoaXNbci4kZXh0cmFdPU9iamVjdC5jcmVhdGUobnVsbCkpO09iamVjdC5hc3NpZ24odGhpc1tyLiRleHRyYV0se2NoaWxkcmVuOnQsbGluZTpudWxsLGF0dHJpYnV0ZXM6YSxhdHRlbXB0OjAsbnVtYmVySW5MaW5lOjAsYXZhaWxhYmxlU3BhY2U6e3dpZHRoOk1hdGgubWluKHRoaXMud3x8MS8wLGUud2lkdGgpLGhlaWdodDpNYXRoLm1pbih0aGlzLmh8fDEvMCxlLmhlaWdodCl9LHdpZHRoOjAsaGVpZ2h0OjAscHJldkhlaWdodDowLGN1cnJlbnRXaWR0aDowfSk7Y29uc3QgaT10aGlzW3IuJGdldFRlbXBsYXRlUm9vdF0oKSxsPWlbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZSxoPXRoaXNbci4kaXNTcGxpdHRhYmxlXSgpO2h8fHNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCEoMCxuLmNoZWNrRGltZW5zaW9ucykodGhpcyxlKSlyZXR1cm4gby5IVE1MUmVzdWx0LkZBSUxVUkU7Y29uc3QgdT1uZXcgU2V0KFsiYXJlYSIsImRyYXciLCJleGNsR3JvdXAiLCJmaWVsZCIsInN1YmZvcm0iLCJzdWJmb3JtU2V0Il0pO2lmKHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgZT10aGlzW3IuJGdldFN1YmZvcm1QYXJlbnRdKCkuY29sdW1uV2lkdGhzO2lmKEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPjApe3RoaXNbci4kZXh0cmFdLmNvbHVtbldpZHRocz1lO3RoaXNbci4kZXh0cmFdLmN1cnJlbnRDb2x1bW49MH19Y29uc3QgZD0oMCxzLnRvU3R5bGUpKHRoaXMsImFuY2hvclR5cGUiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJwcmVzZW5jZSIsImJvcmRlciIsIm1hcmdpbiIsImhBbGlnbiIpLGY9WyJ4ZmFTdWJmb3JtIl0sZz0oMCxzLmxheW91dENsYXNzKSh0aGlzKTtnJiZmLnB1c2goZyk7YS5zdHlsZT1kO2EuY2xhc3M9Zjt0aGlzLm5hbWUmJihhLnhmYU5hbWU9dGhpcy5uYW1lKTtpZih0aGlzLm92ZXJmbG93KXtjb25zdCB0PXRoaXMub3ZlcmZsb3dbci4kZ2V0RXh0cmFdKCk7aWYodC5hZGRMZWFkZXIpe3QuYWRkTGVhZGVyPSExO2hhbmRsZU92ZXJmbG93KHRoaXMsdC5sZWFkZXIsZSl9fXRoaXNbci4kcHVzaFBhcmFdKCk7Y29uc3QgcD0ibHItdGIiPT09dGhpcy5sYXlvdXR8fCJybC10YiI9PT10aGlzLmxheW91dCxtPXA/MjoxO2Zvcig7dGhpc1tyLiRleHRyYV0uYXR0ZW1wdDxtO3RoaXNbci4kZXh0cmFdLmF0dGVtcHQrKyl7cCYmMT09PXRoaXNbci4kZXh0cmFdLmF0dGVtcHQmJih0aGlzW3IuJGV4dHJhXS5udW1iZXJJbkxpbmU9MCk7Y29uc3QgZT10aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOnUsaW5jbHVkZTohMH0pO2lmKGUuc3VjY2VzcylicmVhaztpZihlLmlzQnJlYWsoKSl7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBlfWlmKHAmJjA9PT10aGlzW3IuJGV4dHJhXS5hdHRlbXB0JiYwPT09dGhpc1tyLiRleHRyYV0ubnVtYmVySW5MaW5lJiYhaVtyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PW07YnJlYWt9fXRoaXNbci4kcG9wUGFyYV0oKTtofHx1bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT1sO2lmKHRoaXNbci4kZXh0cmFdLmF0dGVtcHQ9PT1tKXt0aGlzLm92ZXJmbG93JiYodGhpc1tyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm92ZXJmbG93Tm9kZT10aGlzLm92ZXJmbG93KTtofHxkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfWlmKHRoaXMub3ZlcmZsb3cpe2NvbnN0IHQ9dGhpcy5vdmVyZmxvd1tyLiRnZXRFeHRyYV0oKTtpZih0LmFkZFRyYWlsZXIpe3QuYWRkVHJhaWxlcj0hMTtoYW5kbGVPdmVyZmxvdyh0aGlzLHQudHJhaWxlcixlKX19bGV0IGI9MCx5PTA7aWYodGhpcy5tYXJnaW4pe2I9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7eT10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldH1jb25zdCB3PU1hdGgubWF4KHRoaXNbci4kZXh0cmFdLndpZHRoK2IsdGhpcy53fHwwKSxTPU1hdGgubWF4KHRoaXNbci4kZXh0cmFdLmhlaWdodCt5LHRoaXMuaHx8MCkseD1bdGhpcy54LHRoaXMueSx3LFNdOyIiPT09dGhpcy53JiYoZC53aWR0aD0oMCxzLm1lYXN1cmVUb1N0cmluZykodykpOyIiPT09dGhpcy5oJiYoZC5oZWlnaHQ9KDAscy5tZWFzdXJlVG9TdHJpbmcpKFMpKTtpZigoIjBweCI9PT1kLndpZHRofHwiMHB4Ij09PWQuaGVpZ2h0KSYmMD09PXQubGVuZ3RoKXJldHVybiBvLkhUTUxSZXN1bHQuRU1QVFk7Y29uc3QgQz17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmEsY2hpbGRyZW46dH07YXBwbHlBc3Npc3QodGhpcyxhKTtjb25zdCBrPW8uSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyxDKSx4KTtpZih0aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW4ubGVuZ3RoPj0xKXtjb25zdCBlPXRoaXMuYnJlYWtBZnRlci5jaGlsZHJlblswXTtpZihoYW5kbGVCcmVhayhlKSl7dGhpc1tyLiRleHRyYV0uYWZ0ZXJCcmVha0FmdGVyPWs7cmV0dXJuIG8uSFRNTFJlc3VsdC5icmVha05vZGUoZSl9fWRlbGV0ZSB0aGlzW3IuJGV4dHJhXTtyZXR1cm4ga319Y2xhc3MgU3ViZm9ybVNldCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInN1YmZvcm1TZXQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsYXRpb249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucmVsYXRpb24sWyJvcmRlcmVkIiwiY2hvaWNlIiwidW5vcmRlcmVkIl0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9va2VuZD1udWxsO3RoaXMuYnJlYWs9bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLm92ZXJmbG93PW51bGw7dGhpcy5icmVha0FmdGVyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtCZWZvcmU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgci5YRkFPYmplY3RBcnJheX0qW3IuJGdldENvbnRhaW5lZENoaWxkcmVuXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpe2xldCBlPXRoaXNbci4kZ2V0UGFyZW50XSgpO2Zvcig7IShlIGluc3RhbmNlb2YgU3ViZm9ybSk7KWU9ZVtyLiRnZXRQYXJlbnRdKCk7cmV0dXJuIGV9W3IuJGlzQmluZGFibGVdKCl7cmV0dXJuITB9fWNsYXNzIFN1YmplY3RETiBleHRlbmRzIHIuQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdWJqZWN0RE4iKTt0aGlzLmRlbGltaXRlcj1lLmRlbGltaXRlcnx8IiwiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtyLiRmaW5hbGl6ZV0oKXt0aGlzW3IuJGNvbnRlbnRdPW5ldyBNYXAodGhpc1tyLiRjb250ZW50XS5zcGxpdCh0aGlzLmRlbGltaXRlcikubWFwKChlPT57KGU9ZS5zcGxpdCgiPSIsMikpWzBdPWVbMF0udHJpbSgpO3JldHVybiBlfSkpKX19Y2xhc3MgU3ViamVjdEROcyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInN1YmplY3RETnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zdWJqZWN0RE49bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFN1Ym1pdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInN1Ym1pdCIsITApO3RoaXMuZW1iZWRQREY9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmVtYmVkUERGLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5mb3JtYXQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuZm9ybWF0LFsieGRwIiwiZm9ybWRhdGEiLCJwZGYiLCJ1cmxlbmNvZGVkIiwieGZkIiwieG1sIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudGV4dEVuY29kaW5nPSgwLG8uZ2V0S2V5d29yZCkoe2RhdGE6ZS50ZXh0RW5jb2Rpbmc/ZS50ZXh0RW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+WyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnhkcENvbnRlbnQ9ZS54ZHBDb250ZW50fHwiIjt0aGlzLmVuY3J5cHQ9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc2lnbkRhdGE9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFRlbXBsYXRlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwidGVtcGxhdGUiLCEwKTt0aGlzLmJhc2VQcm9maWxlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmJhc2VQcm9maWxlLFsiZnVsbCIsImludGVyYWN0aXZlRm9ybXMiXSk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnN1YmZvcm09bmV3IHIuWEZBT2JqZWN0QXJyYXl9W3IuJGZpbmFsaXplXSgpezA9PT10aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoJiYoMCxjLndhcm4pKCJYRkEgLSBObyBzdWJmb3JtcyBpbiB0ZW1wbGF0ZSBub2RlLiIpO3RoaXMuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTImJigwLGMud2FybikoIlhGQSAtIFNldmVyYWwgc3ViZm9ybXMgaW4gdGVtcGxhdGUgbm9kZTogcGxlYXNlIGZpbGUgYSBidWcuIik7dGhpc1tyLiR0YWJJbmRleF09NWUzfVtyLiRpc1NwbGl0dGFibGVdKCl7cmV0dXJuITB9W3IuJHNlYXJjaE5vZGVdKGUsdCl7cmV0dXJuIGUuc3RhcnRzV2l0aCgiIyIpP1t0aGlzW3IuJGlkc10uZ2V0KGUuc2xpY2UoMSkpXTooMCx1LnNlYXJjaE5vZGUpKHRoaXMsdCxlLCEwLCEwKX0qW3IuJHRvUGFnZXNdKCl7aWYoIXRoaXMuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGgpcmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdfSk7dGhpc1tyLiRleHRyYV09e292ZXJmbG93Tm9kZTpudWxsLGZpcnN0VW5zcGxpdHRhYmxlOm51bGwsY3VycmVudENvbnRlbnRBcmVhOm51bGwsY3VycmVudFBhZ2VBcmVhOm51bGwsbm9MYXlvdXRGYWlsdXJlOiExLHBhZ2VOdW1iZXI6MSxwYWdlUG9zaXRpb246ImZpcnN0IixvZGRPckV2ZW46Im9kZCIsYmxhbmtPck5vdEJsYW5rOiJub25CbGFuayIscGFyYVN0YWNrOltdfTtjb25zdCBlPXRoaXMuc3ViZm9ybS5jaGlsZHJlblswXTtlLnBhZ2VTZXRbci4kY2xlYW5QYWdlXSgpO2NvbnN0IHQ9ZS5wYWdlU2V0LnBhZ2VBcmVhLmNoaWxkcmVuLGE9e25hbWU6ImRpdiIsY2hpbGRyZW46W119O2xldCBpPW51bGwsbj1udWxsLHM9bnVsbDtpZihlLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7bj1lLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO3M9bi50YXJnZXR9ZWxzZSBpZihlLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0xJiZlLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xKXtuPWUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVha0JlZm9yZS5jaGlsZHJlblswXTtzPW4udGFyZ2V0fWVsc2UgaWYoZS5icmVhaz8uYmVmb3JlVGFyZ2V0KXtuPWUuYnJlYWs7cz1uLmJlZm9yZVRhcmdldH1lbHNlIGlmKGUuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTEmJmUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVhaz8uYmVmb3JlVGFyZ2V0KXtuPWUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVhaztzPW4uYmVmb3JlVGFyZ2V0fWlmKG4pe2NvbnN0IGU9dGhpc1tyLiRzZWFyY2hOb2RlXShzLG5bci4kZ2V0UGFyZW50XSgpKTtpZihlIGluc3RhbmNlb2YgUGFnZUFyZWEpe2k9ZTtuW3IuJGV4dHJhXT17fX19aXx8KGk9dFswXSk7aVtyLiRleHRyYV09e251bWJlck9mVXNlOjF9O2NvbnN0IGw9aVtyLiRnZXRQYXJlbnRdKCk7bFtyLiRleHRyYV09e251bWJlck9mVXNlOjEscGFnZUluZGV4OmwucGFnZUFyZWEuY2hpbGRyZW4uaW5kZXhPZihpKSxwYWdlU2V0SW5kZXg6MH07bGV0IGgsdT1udWxsLGQ9bnVsbCxmPSEwLGc9MCxwPTA7Zm9yKDs7KXtpZihmKWc9MDtlbHNle2EuY2hpbGRyZW4ucG9wKCk7aWYoMz09KytnKXsoMCxjLndhcm4pKCJYRkEgLSBTb21ldGhpbmcgZ29lcyB3cm9uZzogcGxlYXNlIGZpbGUgYSBidWcuIik7cmV0dXJuIGF9fWg9bnVsbDt0aGlzW3IuJGV4dHJhXS5jdXJyZW50UGFnZUFyZWE9aTtjb25zdCB0PWlbci4kdG9IVE1MXSgpLmh0bWw7YS5jaGlsZHJlbi5wdXNoKHQpO2lmKHUpe3RoaXNbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMDt0LmNoaWxkcmVuLnB1c2godVtyLiR0b0hUTUxdKGlbci4kZXh0cmFdLnNwYWNlKS5odG1sKTt1PW51bGx9aWYoZCl7dGhpc1tyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlPSEwO3QuY2hpbGRyZW4ucHVzaChkW3IuJHRvSFRNTF0oaVtyLiRleHRyYV0uc3BhY2UpLmh0bWwpO2Q9bnVsbH1jb25zdCBuPWkuY29udGVudEFyZWEuY2hpbGRyZW4scz10LmNoaWxkcmVuLmZpbHRlcigoZT0+ZS5hdHRyaWJ1dGVzLmNsYXNzLmluY2x1ZGVzKCJ4ZmFDb250ZW50YXJlYSIpKSk7Zj0hMTt0aGlzW3IuJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZT1udWxsO3RoaXNbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMTtjb25zdCBmbHVzaD10PT57Y29uc3QgYT1lW3IuJGZsdXNoSFRNTF0oKTtpZihhKXtmfHw9YS5jaGlsZHJlbj8ubGVuZ3RoPjA7c1t0XS5jaGlsZHJlbi5wdXNoKGEpfX07Zm9yKGxldCB0PXAsaT1uLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPXRoaXNbci4kZXh0cmFdLmN1cnJlbnRDb250ZW50QXJlYT1uW3RdLG89e3dpZHRoOmkudyxoZWlnaHQ6aS5ofTtwPTA7aWYodSl7c1t0XS5jaGlsZHJlbi5wdXNoKHVbci4kdG9IVE1MXShvKS5odG1sKTt1PW51bGx9aWYoZCl7c1t0XS5jaGlsZHJlbi5wdXNoKGRbci4kdG9IVE1MXShvKS5odG1sKTtkPW51bGx9Y29uc3QgYz1lW3IuJHRvSFRNTF0obyk7aWYoYy5zdWNjZXNzKXtpZihjLmh0bWwpe2Z8fD1jLmh0bWwuY2hpbGRyZW4/Lmxlbmd0aD4wO3NbdF0uY2hpbGRyZW4ucHVzaChjLmh0bWwpfWVsc2UhZiYmYS5jaGlsZHJlbi5sZW5ndGg+MSYmYS5jaGlsZHJlbi5wb3AoKTtyZXR1cm4gYX1pZihjLmlzQnJlYWsoKSl7Y29uc3QgZT1jLmJyZWFrTm9kZTtmbHVzaCh0KTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpY29udGludWU7aWYoZS5sZWFkZXIpe3U9dGhpc1tyLiRzZWFyY2hOb2RlXShlLmxlYWRlcixlW3IuJGdldFBhcmVudF0oKSk7dT11P3VbMF06bnVsbH1pZihlLnRyYWlsZXIpe2Q9dGhpc1tyLiRzZWFyY2hOb2RlXShlLnRyYWlsZXIsZVtyLiRnZXRQYXJlbnRdKCkpO2Q9ZD9kWzBdOm51bGx9aWYoInBhZ2VBcmVhIj09PWUudGFyZ2V0VHlwZSl7aD1lW3IuJGV4dHJhXS50YXJnZXQ7dD0xLzB9ZWxzZSBpZihlW3IuJGV4dHJhXS50YXJnZXQpe2g9ZVtyLiRleHRyYV0udGFyZ2V0O3A9ZVtyLiRleHRyYV0uaW5kZXgrMTt0PTEvMH1lbHNlIHQ9ZVtyLiRleHRyYV0uaW5kZXh9ZWxzZSBpZih0aGlzW3IuJGV4dHJhXS5vdmVyZmxvd05vZGUpe2NvbnN0IGU9dGhpc1tyLiRleHRyYV0ub3ZlcmZsb3dOb2RlO3RoaXNbci4kZXh0cmFdLm92ZXJmbG93Tm9kZT1udWxsO2NvbnN0IGE9ZVtyLiRnZXRFeHRyYV0oKSxpPWEudGFyZ2V0O2EuYWRkTGVhZGVyPW51bGwhPT1hLmxlYWRlcjthLmFkZFRyYWlsZXI9bnVsbCE9PWEudHJhaWxlcjtmbHVzaCh0KTtjb25zdCBzPXQ7dD0xLzA7aWYoaSBpbnN0YW5jZW9mIFBhZ2VBcmVhKWg9aTtlbHNlIGlmKGkgaW5zdGFuY2VvZiBDb250ZW50QXJlYSl7Y29uc3QgZT1uLmluZGV4T2YoaSk7aWYoLTEhPT1lKWU+cz90PWUtMTpwPWU7ZWxzZXtoPWlbci4kZ2V0UGFyZW50XSgpO3A9aC5jb250ZW50QXJlYS5jaGlsZHJlbi5pbmRleE9mKGkpfX19ZWxzZSBmbHVzaCh0KX10aGlzW3IuJGV4dHJhXS5wYWdlTnVtYmVyKz0xO2gmJihoW3IuJGlzVXNhYmxlXSgpP2hbci4kZXh0cmFdLm51bWJlck9mVXNlKz0xOmg9bnVsbCk7aT1ofHxpW3IuJGdldE5leHRQYWdlXSgpO3lpZWxkIG51bGx9fX10LlRlbXBsYXRlPVRlbXBsYXRlO2NsYXNzIFRleHQgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwidGV4dCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tYXhDaGFycz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubWF4Q2hhcnMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGFjY2VwdFdoaXRlc3BhY2VdKCl7cmV0dXJuITB9W3IuJG9uQ2hpbGRdKGUpe2lmKGVbci4kbmFtZXNwYWNlSWRdPT09aS5OYW1lc3BhY2VJZHMueGh0bWwuaWQpe3RoaXNbci4kY29udGVudF09ZTtyZXR1cm4hMH0oMCxjLndhcm4pKGBYRkEgLSBJbnZhbGlkIGNvbnRlbnQgaW4gVGV4dDogJHtlW3IuJG5vZGVOYW1lXX0uYCk7cmV0dXJuITF9W3IuJG9uVGV4dF0oZSl7dGhpc1tyLiRjb250ZW50XWluc3RhbmNlb2Ygci5YRkFPYmplY3R8fHN1cGVyW3IuJG9uVGV4dF0oZSl9W3IuJGZpbmFsaXplXSgpeyJzdHJpbmciPT10eXBlb2YgdGhpc1tyLiRjb250ZW50XSYmKHRoaXNbci4kY29udGVudF09dGhpc1tyLiRjb250ZW50XS5yZXBsYWNlQWxsKCJcclxuIiwiXG4iKSl9W3IuJGdldEV4dHJhXSgpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdGhpc1tyLiRjb250ZW50XT90aGlzW3IuJGNvbnRlbnRdLnNwbGl0KC9bXHUyMDI5XHUyMDI4XG5dLykucmVkdWNlKCgoZSx0KT0+e3QmJmUucHVzaCh0KTtyZXR1cm4gZX0pLFtdKS5qb2luKCJcbiIpOnRoaXNbci4kY29udGVudF1bci4kdGV4dF0oKX1bci4kdG9IVE1MXShlKXtpZigic3RyaW5nIj09dHlwZW9mIHRoaXNbci4kY29udGVudF0pe2NvbnN0IGU9dmFsdWVUb0h0bWwodGhpc1tyLiRjb250ZW50XSkuaHRtbDtpZih0aGlzW3IuJGNvbnRlbnRdLmluY2x1ZGVzKCJcdTIwMjkiKSl7ZS5uYW1lPSJkaXYiO2UuY2hpbGRyZW49W107dGhpc1tyLiRjb250ZW50XS5zcGxpdCgiXHUyMDI5IikubWFwKChlPT5lLnNwbGl0KC9bXHUyMDI4XG5dLykucmVkdWNlKCgoZSx0KT0+e2UucHVzaCh7bmFtZToic3BhbiIsdmFsdWU6dH0se25hbWU6ImJyIn0pO3JldHVybiBlfSksW10pKSkuZm9yRWFjaCgodD0+e2UuY2hpbGRyZW4ucHVzaCh7bmFtZToicCIsY2hpbGRyZW46dH0pfSkpfWVsc2UgaWYoL1tcdTIwMjhcbl0vLnRlc3QodGhpc1tyLiRjb250ZW50XSkpe2UubmFtZT0iZGl2IjtlLmNoaWxkcmVuPVtdO3RoaXNbci4kY29udGVudF0uc3BsaXQoL1tcdTIwMjhcbl0vKS5mb3JFYWNoKCh0PT57ZS5jaGlsZHJlbi5wdXNoKHtuYW1lOiJzcGFuIix2YWx1ZTp0fSx7bmFtZToiYnIifSl9KSl9cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKGUpfXJldHVybiB0aGlzW3IuJGNvbnRlbnRdW3IuJHRvSFRNTF0oZSl9fXQuVGV4dD1UZXh0O2NsYXNzIFRleHRFZGl0IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwidGV4dEVkaXQiLCEwKTt0aGlzLmFsbG93UmljaFRleHQ9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmFsbG93UmljaFRleHQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmhTY3JvbGxQb2xpY3k9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubXVsdGlMaW5lPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5tdWx0aUxpbmUsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PjA9PT1lfHwxPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZTY3JvbGxQb2xpY3k9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudlNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY29tYj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bci4kdG9IVE1MXShlKXtjb25zdCB0PSgwLHMudG9TdHlsZSkodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpO2xldCBhO2NvbnN0IGk9dGhpc1tyLiRnZXRQYXJlbnRdKClbci4kZ2V0UGFyZW50XSgpOyIiPT09dGhpcy5tdWx0aUxpbmUmJih0aGlzLm11bHRpTGluZT1pIGluc3RhbmNlb2YgRHJhdz8xOjApO2E9MT09PXRoaXMubXVsdGlMaW5lP3tuYW1lOiJ0ZXh0YXJlYSIsYXR0cmlidXRlczp7ZGF0YUlkOmlbci4kZGF0YV0/LltyLiR1aWRdfHxpW3IuJHVpZF0sZmllbGRJZDppW3IuJHVpZF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoaSksImFyaWEtcmVxdWlyZWQiOiExfX06e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixkYXRhSWQ6aVtyLiRkYXRhXT8uW3IuJHVpZF18fGlbci4kdWlkXSxmaWVsZElkOmlbci4kdWlkXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChpKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtpZihpc1JlcXVpcmVkKGkpKXthLmF0dHJpYnV0ZXNbImFyaWEtcmVxdWlyZWQiXT0hMDthLmF0dHJpYnV0ZXMucmVxdWlyZWQ9ITB9cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbYV19KX19Y2xhc3MgVGltZSBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRpbWUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT10aGlzW3IuJGNvbnRlbnRdLnRyaW0oKTt0aGlzW3IuJGNvbnRlbnRdPWU/bmV3IERhdGUoZSk6bnVsbH1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tyLiRjb250ZW50XT90aGlzW3IuJGNvbnRlbnRdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBUaW1lU3RhbXAgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ0aW1lU3RhbXAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc2VydmVyPWUuc2VydmVyfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBUb29sVGlwIGV4dGVuZHMgci5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwidG9vbFRpcCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgVHJhdmVyc2FsIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwidHJhdmVyc2FsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnRyYXZlcnNlPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBUcmF2ZXJzZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRyYXZlcnNlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZXJhdGlvbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5vcGVyYXRpb24sWyJuZXh0IiwiYmFjayIsImRvd24iLCJmaXJzdCIsImxlZnQiLCJyaWdodCIsInVwIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnNjcmlwdD1udWxsfWdldCBuYW1lKCl7cmV0dXJuIHRoaXMub3BlcmF0aW9ufVtyLiRpc1RyYW5zcGFyZW50XSgpe3JldHVybiExfX1jbGFzcyBVaSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbDt0aGlzLmJhcmNvZGU9bnVsbDt0aGlzLmJ1dHRvbj1udWxsO3RoaXMuY2hlY2tCdXR0b249bnVsbDt0aGlzLmNob2ljZUxpc3Q9bnVsbDt0aGlzLmRhdGVUaW1lRWRpdD1udWxsO3RoaXMuZGVmYXVsdFVpPW51bGw7dGhpcy5pbWFnZUVkaXQ9bnVsbDt0aGlzLm51bWVyaWNFZGl0PW51bGw7dGhpcy5wYXNzd29yZEVkaXQ9bnVsbDt0aGlzLnNpZ25hdHVyZT1udWxsO3RoaXMudGV4dEVkaXQ9bnVsbH1bci4kZ2V0RXh0cmFdKCl7aWYodm9pZCAwPT09dGhpc1tyLiRleHRyYV0pe2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiZXh0cmFzIj09PWV8fCJwaWN0dXJlIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiByLlhGQU9iamVjdCl7dGhpc1tyLiRleHRyYV09dDtyZXR1cm4gdH19dGhpc1tyLiRleHRyYV09bnVsbH1yZXR1cm4gdGhpc1tyLiRleHRyYV19W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD10aGlzW3IuJGdldEV4dHJhXSgpO3JldHVybiB0P3Rbci4kdG9IVE1MXShlKTpvLkhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIFZhbGlkYXRlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwidmFsaWRhdGUiLCEwKTt0aGlzLmZvcm1hdFRlc3Q9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuZm9ybWF0VGVzdCxbIndhcm5pbmciLCJkaXNhYmxlZCIsImVycm9yIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5udWxsVGVzdD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5udWxsVGVzdCxbImRpc2FibGVkIiwiZXJyb3IiLCJ3YXJuaW5nIl0pO3RoaXMuc2NyaXB0VGVzdD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5zY3JpcHRUZXN0LFsiZXJyb3IiLCJkaXNhYmxlZCIsIndhcm5pbmciXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZXNzYWdlPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgVmFsdWUgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ2YWx1ZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVycmlkZT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUub3ZlcnJpZGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmFyYz1udWxsO3RoaXMuYm9vbGVhbj1udWxsO3RoaXMuZGF0ZT1udWxsO3RoaXMuZGF0ZVRpbWU9bnVsbDt0aGlzLmRlY2ltYWw9bnVsbDt0aGlzLmV4RGF0YT1udWxsO3RoaXMuZmxvYXQ9bnVsbDt0aGlzLmltYWdlPW51bGw7dGhpcy5pbnRlZ2VyPW51bGw7dGhpcy5saW5lPW51bGw7dGhpcy5yZWN0YW5nbGU9bnVsbDt0aGlzLnRleHQ9bnVsbDt0aGlzLnRpbWU9bnVsbH1bci4kc2V0VmFsdWVdKGUpe2NvbnN0IHQ9dGhpc1tyLiRnZXRQYXJlbnRdKCk7aWYodCBpbnN0YW5jZW9mIEZpZWxkJiZ0LnVpPy5pbWFnZUVkaXQpe2lmKCF0aGlzLmltYWdlKXt0aGlzLmltYWdlPW5ldyBJbWFnZSh7fSk7dGhpc1tyLiRhcHBlbmRDaGlsZF0odGhpcy5pbWFnZSl9dGhpcy5pbWFnZVtyLiRjb250ZW50XT1lW3IuJGNvbnRlbnRdO3JldHVybn1jb25zdCBhPWVbci4kbm9kZU5hbWVdO2lmKG51bGw9PT10aGlzW2FdKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiByLlhGQU9iamVjdCl7dGhpc1tlXT1udWxsO3RoaXNbci4kcmVtb3ZlQ2hpbGRdKHQpfX10aGlzW2Vbci4kbm9kZU5hbWVdXT1lO3RoaXNbci4kYXBwZW5kQ2hpbGRdKGUpfWVsc2UgdGhpc1thXVtyLiRjb250ZW50XT1lW3IuJGNvbnRlbnRdfVtyLiR0ZXh0XSgpe2lmKHRoaXMuZXhEYXRhKXJldHVybiJzdHJpbmciPT10eXBlb2YgdGhpcy5leERhdGFbci4kY29udGVudF0/dGhpcy5leERhdGFbci4kY29udGVudF0udHJpbSgpOnRoaXMuZXhEYXRhW3IuJGNvbnRlbnRdW3IuJHRleHRdKCkudHJpbSgpO2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiaW1hZ2UiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0KXJldHVybih0W3IuJGNvbnRlbnRdfHwiIikudG9TdHJpbmcoKS50cmltKCl9cmV0dXJuIG51bGx9W3IuJHRvSFRNTF0oZSl7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGE9dGhpc1t0XTtpZihhIGluc3RhbmNlb2Ygci5YRkFPYmplY3QpcmV0dXJuIGFbci4kdG9IVE1MXShlKX1yZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZfX10LlZhbHVlPVZhbHVlO2NsYXNzIFZhcmlhYmxlcyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInZhcmlhYmxlcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLm1hbmlmZXN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc2NyaXB0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9W3IuJGlzVHJhbnNwYXJlbnRdKCl7cmV0dXJuITB9fWNsYXNzIFRlbXBsYXRlTmFtZXNwYWNle3N0YXRpY1tpLiRidWlsZFhGQU9iamVjdF0oZSx0KXtpZihUZW1wbGF0ZU5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSl7Y29uc3QgYT1UZW1wbGF0ZU5hbWVzcGFjZVtlXSh0KTthW3IuJHNldFNldEF0dHJpYnV0ZXNdKHQpO3JldHVybiBhfX1zdGF0aWMgYXBwZWFyYW5jZUZpbHRlcihlKXtyZXR1cm4gbmV3IEFwcGVhcmFuY2VGaWx0ZXIoZSl9c3RhdGljIGFyYyhlKXtyZXR1cm4gbmV3IEFyYyhlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IEFyZWEoZSl9c3RhdGljIGFzc2lzdChlKXtyZXR1cm4gbmV3IEFzc2lzdChlKX1zdGF0aWMgYmFyY29kZShlKXtyZXR1cm4gbmV3IEJhcmNvZGUoZSl9c3RhdGljIGJpbmQoZSl7cmV0dXJuIG5ldyBCaW5kKGUpfXN0YXRpYyBiaW5kSXRlbXMoZSl7cmV0dXJuIG5ldyBCaW5kSXRlbXMoZSl9c3RhdGljIGJvb2tlbmQoZSl7cmV0dXJuIG5ldyBCb29rZW5kKGUpfXN0YXRpYyBib29sZWFuKGUpe3JldHVybiBuZXcgQm9vbGVhbkVsZW1lbnQoZSl9c3RhdGljIGJvcmRlcihlKXtyZXR1cm4gbmV3IEJvcmRlcihlKX1zdGF0aWMgYnJlYWsoZSl7cmV0dXJuIG5ldyBCcmVhayhlKX1zdGF0aWMgYnJlYWtBZnRlcihlKXtyZXR1cm4gbmV3IEJyZWFrQWZ0ZXIoZSl9c3RhdGljIGJyZWFrQmVmb3JlKGUpe3JldHVybiBuZXcgQnJlYWtCZWZvcmUoZSl9c3RhdGljIGJ1dHRvbihlKXtyZXR1cm4gbmV3IEJ1dHRvbihlKX1zdGF0aWMgY2FsY3VsYXRlKGUpe3JldHVybiBuZXcgQ2FsY3VsYXRlKGUpfXN0YXRpYyBjYXB0aW9uKGUpe3JldHVybiBuZXcgQ2FwdGlvbihlKX1zdGF0aWMgY2VydGlmaWNhdGUoZSl7cmV0dXJuIG5ldyBDZXJ0aWZpY2F0ZShlKX1zdGF0aWMgY2VydGlmaWNhdGVzKGUpe3JldHVybiBuZXcgQ2VydGlmaWNhdGVzKGUpfXN0YXRpYyBjaGVja0J1dHRvbihlKXtyZXR1cm4gbmV3IENoZWNrQnV0dG9uKGUpfXN0YXRpYyBjaG9pY2VMaXN0KGUpe3JldHVybiBuZXcgQ2hvaWNlTGlzdChlKX1zdGF0aWMgY29sb3IoZSl7cmV0dXJuIG5ldyBDb2xvcihlKX1zdGF0aWMgY29tYihlKXtyZXR1cm4gbmV3IENvbWIoZSl9c3RhdGljIGNvbm5lY3QoZSl7cmV0dXJuIG5ldyBDb25uZWN0KGUpfXN0YXRpYyBjb250ZW50QXJlYShlKXtyZXR1cm4gbmV3IENvbnRlbnRBcmVhKGUpfXN0YXRpYyBjb3JuZXIoZSl7cmV0dXJuIG5ldyBDb3JuZXIoZSl9c3RhdGljIGRhdGUoZSl7cmV0dXJuIG5ldyBEYXRlRWxlbWVudChlKX1zdGF0aWMgZGF0ZVRpbWUoZSl7cmV0dXJuIG5ldyBEYXRlVGltZShlKX1zdGF0aWMgZGF0ZVRpbWVFZGl0KGUpe3JldHVybiBuZXcgRGF0ZVRpbWVFZGl0KGUpfXN0YXRpYyBkZWNpbWFsKGUpe3JldHVybiBuZXcgRGVjaW1hbChlKX1zdGF0aWMgZGVmYXVsdFVpKGUpe3JldHVybiBuZXcgRGVmYXVsdFVpKGUpfXN0YXRpYyBkZXNjKGUpe3JldHVybiBuZXcgRGVzYyhlKX1zdGF0aWMgZGlnZXN0TWV0aG9kKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kKGUpfXN0YXRpYyBkaWdlc3RNZXRob2RzKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kcyhlKX1zdGF0aWMgZHJhdyhlKXtyZXR1cm4gbmV3IERyYXcoZSl9c3RhdGljIGVkZ2UoZSl7cmV0dXJuIG5ldyBFZGdlKGUpfXN0YXRpYyBlbmNvZGluZyhlKXtyZXR1cm4gbmV3IEVuY29kaW5nKGUpfXN0YXRpYyBlbmNvZGluZ3MoZSl7cmV0dXJuIG5ldyBFbmNvZGluZ3MoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBFbmNyeXB0KGUpfXN0YXRpYyBlbmNyeXB0RGF0YShlKXtyZXR1cm4gbmV3IEVuY3J5cHREYXRhKGUpfXN0YXRpYyBlbmNyeXB0aW9uKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbihlKX1zdGF0aWMgZW5jcnlwdGlvbk1ldGhvZChlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25NZXRob2QoZSl9c3RhdGljIGVuY3J5cHRpb25NZXRob2RzKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbk1ldGhvZHMoZSl9c3RhdGljIGV2ZW50KGUpe3JldHVybiBuZXcgRXZlbnQoZSl9c3RhdGljIGV4RGF0YShlKXtyZXR1cm4gbmV3IEV4RGF0YShlKX1zdGF0aWMgZXhPYmplY3QoZSl7cmV0dXJuIG5ldyBFeE9iamVjdChlKX1zdGF0aWMgZXhjbEdyb3VwKGUpe3JldHVybiBuZXcgRXhjbEdyb3VwKGUpfXN0YXRpYyBleGVjdXRlKGUpe3JldHVybiBuZXcgRXhlY3V0ZShlKX1zdGF0aWMgZXh0cmFzKGUpe3JldHVybiBuZXcgRXh0cmFzKGUpfXN0YXRpYyBmaWVsZChlKXtyZXR1cm4gbmV3IEZpZWxkKGUpfXN0YXRpYyBmaWxsKGUpe3JldHVybiBuZXcgRmlsbChlKX1zdGF0aWMgZmlsdGVyKGUpe3JldHVybiBuZXcgRmlsdGVyKGUpfXN0YXRpYyBmbG9hdChlKXtyZXR1cm4gbmV3IEZsb2F0KGUpfXN0YXRpYyBmb250KGUpe3JldHVybiBuZXcgRm9udChlKX1zdGF0aWMgZm9ybWF0KGUpe3JldHVybiBuZXcgRm9ybWF0KGUpfXN0YXRpYyBoYW5kbGVyKGUpe3JldHVybiBuZXcgSGFuZGxlcihlKX1zdGF0aWMgaHlwaGVuYXRpb24oZSl7cmV0dXJuIG5ldyBIeXBoZW5hdGlvbihlKX1zdGF0aWMgaW1hZ2UoZSl7cmV0dXJuIG5ldyBJbWFnZShlKX1zdGF0aWMgaW1hZ2VFZGl0KGUpe3JldHVybiBuZXcgSW1hZ2VFZGl0KGUpfXN0YXRpYyBpbnRlZ2VyKGUpe3JldHVybiBuZXcgSW50ZWdlcihlKX1zdGF0aWMgaXNzdWVycyhlKXtyZXR1cm4gbmV3IElzc3VlcnMoZSl9c3RhdGljIGl0ZW1zKGUpe3JldHVybiBuZXcgSXRlbXMoZSl9c3RhdGljIGtlZXAoZSl7cmV0dXJuIG5ldyBLZWVwKGUpfXN0YXRpYyBrZXlVc2FnZShlKXtyZXR1cm4gbmV3IEtleVVzYWdlKGUpfXN0YXRpYyBsaW5lKGUpe3JldHVybiBuZXcgTGluZShlKX1zdGF0aWMgbGluZWFyKGUpe3JldHVybiBuZXcgTGluZWFyKGUpfXN0YXRpYyBsb2NrRG9jdW1lbnQoZSl7cmV0dXJuIG5ldyBMb2NrRG9jdW1lbnQoZSl9c3RhdGljIG1hbmlmZXN0KGUpe3JldHVybiBuZXcgTWFuaWZlc3QoZSl9c3RhdGljIG1hcmdpbihlKXtyZXR1cm4gbmV3IE1hcmdpbihlKX1zdGF0aWMgbWRwKGUpe3JldHVybiBuZXcgTWRwKGUpfXN0YXRpYyBtZWRpdW0oZSl7cmV0dXJuIG5ldyBNZWRpdW0oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBNZXNzYWdlKGUpfXN0YXRpYyBudW1lcmljRWRpdChlKXtyZXR1cm4gbmV3IE51bWVyaWNFZGl0KGUpfXN0YXRpYyBvY2N1cihlKXtyZXR1cm4gbmV3IE9jY3VyKGUpfXN0YXRpYyBvaWQoZSl7cmV0dXJuIG5ldyBPaWQoZSl9c3RhdGljIG9pZHMoZSl7cmV0dXJuIG5ldyBPaWRzKGUpfXN0YXRpYyBvdmVyZmxvdyhlKXtyZXR1cm4gbmV3IE92ZXJmbG93KGUpfXN0YXRpYyBwYWdlQXJlYShlKXtyZXR1cm4gbmV3IFBhZ2VBcmVhKGUpfXN0YXRpYyBwYWdlU2V0KGUpe3JldHVybiBuZXcgUGFnZVNldChlKX1zdGF0aWMgcGFyYShlKXtyZXR1cm4gbmV3IFBhcmEoZSl9c3RhdGljIHBhc3N3b3JkRWRpdChlKXtyZXR1cm4gbmV3IFBhc3N3b3JkRWRpdChlKX1zdGF0aWMgcGF0dGVybihlKXtyZXR1cm4gbmV3IFBhdHRlcm4oZSl9c3RhdGljIHBpY3R1cmUoZSl7cmV0dXJuIG5ldyBQaWN0dXJlKGUpfXN0YXRpYyBwcm90byhlKXtyZXR1cm4gbmV3IFByb3RvKGUpfXN0YXRpYyByYWRpYWwoZSl7cmV0dXJuIG5ldyBSYWRpYWwoZSl9c3RhdGljIHJlYXNvbihlKXtyZXR1cm4gbmV3IFJlYXNvbihlKX1zdGF0aWMgcmVhc29ucyhlKXtyZXR1cm4gbmV3IFJlYXNvbnMoZSl9c3RhdGljIHJlY3RhbmdsZShlKXtyZXR1cm4gbmV3IFJlY3RhbmdsZShlKX1zdGF0aWMgcmVmKGUpe3JldHVybiBuZXcgUmVmRWxlbWVudChlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgU2NyaXB0KGUpfXN0YXRpYyBzZXRQcm9wZXJ0eShlKXtyZXR1cm4gbmV3IFNldFByb3BlcnR5KGUpfXN0YXRpYyBzaWduRGF0YShlKXtyZXR1cm4gbmV3IFNpZ25EYXRhKGUpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBTaWduYXR1cmUoZSl9c3RhdGljIHNpZ25pbmcoZSl7cmV0dXJuIG5ldyBTaWduaW5nKGUpfXN0YXRpYyBzb2xpZChlKXtyZXR1cm4gbmV3IFNvbGlkKGUpfXN0YXRpYyBzcGVhayhlKXtyZXR1cm4gbmV3IFNwZWFrKGUpfXN0YXRpYyBzdGlwcGxlKGUpe3JldHVybiBuZXcgU3RpcHBsZShlKX1zdGF0aWMgc3ViZm9ybShlKXtyZXR1cm4gbmV3IFN1YmZvcm0oZSl9c3RhdGljIHN1YmZvcm1TZXQoZSl7cmV0dXJuIG5ldyBTdWJmb3JtU2V0KGUpfXN0YXRpYyBzdWJqZWN0RE4oZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE4oZSl9c3RhdGljIHN1YmplY3RETnMoZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE5zKGUpfXN0YXRpYyBzdWJtaXQoZSl7cmV0dXJuIG5ldyBTdWJtaXQoZSl9c3RhdGljIHRlbXBsYXRlKGUpe3JldHVybiBuZXcgVGVtcGxhdGUoZSl9c3RhdGljIHRleHQoZSl7cmV0dXJuIG5ldyBUZXh0KGUpfXN0YXRpYyB0ZXh0RWRpdChlKXtyZXR1cm4gbmV3IFRleHRFZGl0KGUpfXN0YXRpYyB0aW1lKGUpe3JldHVybiBuZXcgVGltZShlKX1zdGF0aWMgdGltZVN0YW1wKGUpe3JldHVybiBuZXcgVGltZVN0YW1wKGUpfXN0YXRpYyB0b29sVGlwKGUpe3JldHVybiBuZXcgVG9vbFRpcChlKX1zdGF0aWMgdHJhdmVyc2FsKGUpe3JldHVybiBuZXcgVHJhdmVyc2FsKGUpfXN0YXRpYyB0cmF2ZXJzZShlKXtyZXR1cm4gbmV3IFRyYXZlcnNlKGUpfXN0YXRpYyB1aShlKXtyZXR1cm4gbmV3IFVpKGUpfXN0YXRpYyB2YWxpZGF0ZShlKXtyZXR1cm4gbmV3IFZhbGlkYXRlKGUpfXN0YXRpYyB2YWx1ZShlKXtyZXR1cm4gbmV3IFZhbHVlKGUpfXN0YXRpYyB2YXJpYWJsZXMoZSl7cmV0dXJuIG5ldyBWYXJpYWJsZXMoZSl9fXQuVGVtcGxhdGVOYW1lc3BhY2U9VGVtcGxhdGVOYW1lc3BhY2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5hZGRIVE1MPWZ1bmN0aW9uIGFkZEhUTUwoZSx0LGEpe2NvbnN0IG49ZVtyLiRleHRyYV0scz1uLmF2YWlsYWJsZVNwYWNlLFtvLGMsbCxoXT1hO3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6bi53aWR0aD1NYXRoLm1heChuLndpZHRoLG8rbCk7bi5oZWlnaHQ9TWF0aC5tYXgobi5oZWlnaHQsYytoKTtuLmNoaWxkcmVuLnB1c2godCk7YnJlYWs7Y2FzZSJsci10YiI6Y2FzZSJybC10YiI6aWYoIW4ubGluZXx8MT09PW4uYXR0ZW1wdCl7bi5saW5lPWNyZWF0ZUxpbmUoZSxbXSk7bi5jaGlsZHJlbi5wdXNoKG4ubGluZSk7bi5udW1iZXJJbkxpbmU9MH1uLm51bWJlckluTGluZSs9MTtuLmxpbmUuY2hpbGRyZW4ucHVzaCh0KTtpZigwPT09bi5hdHRlbXB0KXtuLmN1cnJlbnRXaWR0aCs9bDtuLmhlaWdodD1NYXRoLm1heChuLmhlaWdodCxuLnByZXZIZWlnaHQraCl9ZWxzZXtuLmN1cnJlbnRXaWR0aD1sO24ucHJldkhlaWdodD1uLmhlaWdodDtuLmhlaWdodCs9aDtuLmF0dGVtcHQ9MH1uLndpZHRoPU1hdGgubWF4KG4ud2lkdGgsbi5jdXJyZW50V2lkdGgpO2JyZWFrO2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6e24uY2hpbGRyZW4ucHVzaCh0KTtuLndpZHRoKz1sO24uaGVpZ2h0PU1hdGgubWF4KG4uaGVpZ2h0LGgpO2NvbnN0IGU9KDAsaS5tZWFzdXJlVG9TdHJpbmcpKG4uaGVpZ2h0KTtmb3IoY29uc3QgdCBvZiBuLmNoaWxkcmVuKXQuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9ZTticmVha31jYXNlInRhYmxlIjpjYXNlInRiIjpuLndpZHRoPU1hdGgubWluKHMud2lkdGgsTWF0aC5tYXgobi53aWR0aCxsKSk7bi5oZWlnaHQrPWg7bi5jaGlsZHJlbi5wdXNoKHQpfX07dC5jaGVja0RpbWVuc2lvbnM9ZnVuY3Rpb24gY2hlY2tEaW1lbnNpb25zKGUsdCl7aWYobnVsbD09PWVbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZSlyZXR1cm4hMDtpZigwPT09ZS53fHwwPT09ZS5oKXJldHVybiEwO2NvbnN0IGE9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpLGk9YVtyLiRleHRyYV0/LmF0dGVtcHR8fDAsWyxuLHMsb109ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtZWRCQm94KGUpe2xldCB0LGEscj0iIj09PWUudz9OYU46ZS53LGk9IiI9PT1lLmg/TmFOOmUuaCxbbixzXT1bMCwwXTtzd2l0Y2goZS5hbmNob3JUeXBlfHwiIil7Y2FzZSJib3R0b21DZW50ZXIiOltuLHNdPVtyLzIsaV07YnJlYWs7Y2FzZSJib3R0b21MZWZ0IjpbbixzXT1bMCxpXTticmVhaztjYXNlImJvdHRvbVJpZ2h0IjpbbixzXT1bcixpXTticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6W24sc109W3IvMixpLzJdO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6W24sc109WzAsaS8yXTticmVhaztjYXNlIm1pZGRsZVJpZ2h0IjpbbixzXT1bcixpLzJdO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjpbbixzXT1bci8yLDBdO2JyZWFrO2Nhc2UidG9wUmlnaHQiOltuLHNdPVtyLDBdfXN3aXRjaChlLnJvdGF0ZXx8MCl7Y2FzZSAwOlt0LGFdPVstbiwtc107YnJlYWs7Y2FzZSA5MDpbdCxhXT1bLXMsbl07W3IsaV09W2ksLXJdO2JyZWFrO2Nhc2UgMTgwOlt0LGFdPVtuLHNdO1tyLGldPVstciwtaV07YnJlYWs7Y2FzZSAyNzA6W3QsYV09W3MsLW5dO1tyLGldPVstaSxyXX1yZXR1cm5bZS54K3QrTWF0aC5taW4oMCxyKSxlLnkrYStNYXRoLm1pbigwLGkpLE1hdGguYWJzKHIpLE1hdGguYWJzKGkpXX0oZSk7c3dpdGNoKGEubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWk/ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT8iIiE9PWUudz9NYXRoLnJvdW5kKHMtdC53aWR0aCk8PTI6dC53aWR0aD4yOiEoIiIhPT1lLmgmJk1hdGgucm91bmQoby10LmhlaWdodCk+MikmJigiIiE9PWUudz9NYXRoLnJvdW5kKHMtdC53aWR0aCk8PTJ8fDA9PT1hW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUmJnQuaGVpZ2h0PjI6dC53aWR0aD4yKTohIWVbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmV8fCEoIiIhPT1lLmgmJk1hdGgucm91bmQoby10LmhlaWdodCk+MikmJigoIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IWFbci4kaXNUaGVyZU1vcmVXaWR0aF0oKSkmJnQuaGVpZ2h0PjIpO2Nhc2UidGFibGUiOmNhc2UidGIiOnJldHVybiEhZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxlW3IuJGlzU3BsaXR0YWJsZV0oKT8oIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IWFbci4kaXNUaGVyZU1vcmVXaWR0aF0oKSkmJnQuaGVpZ2h0PjI6TWF0aC5yb3VuZChvLXQuaGVpZ2h0KTw9Mik7Y2FzZSJwb3NpdGlvbiI6aWYoZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZSlyZXR1cm4hMDtpZigiIj09PWUuaHx8TWF0aC5yb3VuZChvK24tdC5oZWlnaHQpPD0yKXJldHVybiEwO3JldHVybiBvK24+ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLmN1cnJlbnRDb250ZW50QXJlYS5oO2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6cmV0dXJuISFlW3IuJGdldFRlbXBsYXRlUm9vdF0oKVtyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlfHwoIiI9PT1lLmh8fE1hdGgucm91bmQoby10LmhlaWdodCk8PTIpO2RlZmF1bHQ6cmV0dXJuITB9fTt0LmZsdXNoSFRNTD1mdW5jdGlvbiBmbHVzaEhUTUwoZSl7aWYoIWVbci4kZXh0cmFdKXJldHVybiBudWxsO2NvbnN0IHQ9e25hbWU6ImRpdiIsYXR0cmlidXRlczplW3IuJGV4dHJhXS5hdHRyaWJ1dGVzLGNoaWxkcmVuOmVbci4kZXh0cmFdLmNoaWxkcmVufTtpZihlW3IuJGV4dHJhXS5mYWlsaW5nTm9kZSl7Y29uc3QgYT1lW3IuJGV4dHJhXS5mYWlsaW5nTm9kZVtyLiRmbHVzaEhUTUxdKCk7YSYmKGUubGF5b3V0LmVuZHNXaXRoKCItdGIiKT90LmNoaWxkcmVuLnB1c2goY3JlYXRlTGluZShlLFthXSkpOnQuY2hpbGRyZW4ucHVzaChhKSl9aWYoMD09PXQuY2hpbGRyZW4ubGVuZ3RoKXJldHVybiBudWxsO3JldHVybiB0fTt0LmdldEF2YWlsYWJsZVNwYWNlPWZ1bmN0aW9uIGdldEF2YWlsYWJsZVNwYWNlKGUpe2NvbnN0IHQ9ZVtyLiRleHRyYV0uYXZhaWxhYmxlU3BhY2UsYT1lLm1hcmdpbj9lLm1hcmdpbi50b3BJbnNldCtlLm1hcmdpbi5ib3R0b21JbnNldDowLGk9ZS5tYXJnaW4/ZS5tYXJnaW4ubGVmdEluc2V0K2UubWFyZ2luLnJpZ2h0SW5zZXQ6MDtzd2l0Y2goZS5sYXlvdXQpe2Nhc2UibHItdGIiOmNhc2UicmwtdGIiOnJldHVybiAwPT09ZVtyLiRleHRyYV0uYXR0ZW1wdD97d2lkdGg6dC53aWR0aC1pLWVbci4kZXh0cmFdLmN1cnJlbnRXaWR0aCxoZWlnaHQ6dC5oZWlnaHQtYS1lW3IuJGV4dHJhXS5wcmV2SGVpZ2h0fTp7d2lkdGg6dC53aWR0aC1pLGhlaWdodDp0LmhlaWdodC1hLWVbci4kZXh0cmFdLmhlaWdodH07Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm57d2lkdGg6ZVtyLiRleHRyYV0uY29sdW1uV2lkdGhzLnNsaWNlKGVbci4kZXh0cmFdLmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCkpLGhlaWdodDp0LmhlaWdodC1pfTtjYXNlInRhYmxlIjpjYXNlInRiIjpyZXR1cm57d2lkdGg6dC53aWR0aC1pLGhlaWdodDp0LmhlaWdodC1hLWVbci4kZXh0cmFdLmhlaWdodH07ZGVmYXVsdDpyZXR1cm4gdH19O3ZhciByPWEoNzgpLGk9YSg4NSk7ZnVuY3Rpb24gY3JlYXRlTGluZShlLHQpe3JldHVybntuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsibHItdGIiPT09ZS5sYXlvdXQ/InhmYUxyIjoieGZhUmwiXX0sY2hpbGRyZW46dH19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuY29tcHV0ZUJib3g9ZnVuY3Rpb24gY29tcHV0ZUJib3goZSx0LGEpe2xldCBpO2lmKCIiIT09ZS53JiYiIiE9PWUuaClpPVtlLngsZS55LGUudyxlLmhdO2Vsc2V7aWYoIWEpcmV0dXJuIG51bGw7bGV0IG49ZS53O2lmKCIiPT09bil7aWYoMD09PWUubWF4Vyl7Y29uc3QgdD1lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk7bj0icG9zaXRpb24iPT09dC5sYXlvdXQmJiIiIT09dC53PzA6ZS5taW5XfWVsc2Ugbj1NYXRoLm1pbihlLm1heFcsYS53aWR0aCk7dC5hdHRyaWJ1dGVzLnN0eWxlLndpZHRoPW1lYXN1cmVUb1N0cmluZyhuKX1sZXQgcz1lLmg7aWYoIiI9PT1zKXtpZigwPT09ZS5tYXhIKXtjb25zdCB0PWVbci4kZ2V0U3ViZm9ybVBhcmVudF0oKTtzPSJwb3NpdGlvbiI9PT10LmxheW91dCYmIiIhPT10Lmg/MDplLm1pbkh9ZWxzZSBzPU1hdGgubWluKGUubWF4SCxhLmhlaWdodCk7dC5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcocyl9aT1bZS54LGUueSxuLHNdfXJldHVybiBpfTt0LmNyZWF0ZVdyYXBwZXI9ZnVuY3Rpb24gY3JlYXRlV3JhcHBlcihlLHQpe2NvbnN0e2F0dHJpYnV0ZXM6YX09dCx7c3R5bGU6aX09YSxuPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhV3JhcHBlciJdLHN0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LGNoaWxkcmVuOltdfTthLmNsYXNzLnB1c2goInhmYVdyYXBwZWQiKTtpZihlLmJvcmRlcil7Y29uc3R7d2lkdGhzOmEsaW5zZXRzOnN9PWUuYm9yZGVyW3IuJGV4dHJhXTtsZXQgbyxjLGw9c1swXSxoPXNbM107Y29uc3QgdT1zWzBdK3NbMl0sZD1zWzFdK3NbM107c3dpdGNoKGUuYm9yZGVyLmhhbmQpe2Nhc2UiZXZlbiI6bC09YVswXS8yO2gtPWFbM10vMjtvPWBjYWxjKDEwMCUgKyAkeyhhWzFdK2FbM10pLzItZH1weClgO2M9YGNhbGMoMTAwJSArICR7KGFbMF0rYVsyXSkvMi11fXB4KWA7YnJlYWs7Y2FzZSJsZWZ0IjpsLT1hWzBdO2gtPWFbM107bz1gY2FsYygxMDAlICsgJHthWzFdK2FbM10tZH1weClgO2M9YGNhbGMoMTAwJSArICR7YVswXSthWzJdLXV9cHgpYDticmVhaztjYXNlInJpZ2h0IjpvPWQ/YGNhbGMoMTAwJSAtICR7ZH1weClgOiIxMDAlIjtjPXU/YGNhbGMoMTAwJSAtICR7dX1weClgOiIxMDAlIn1jb25zdCBmPVsieGZhQm9yZGVyIl07aXNQcmludE9ubHkoZS5ib3JkZXIpJiZmLnB1c2goInhmYVByaW50T25seSIpO2NvbnN0IGc9e25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6ZixzdHlsZTp7dG9wOmAke2x9cHhgLGxlZnQ6YCR7aH1weGAsd2lkdGg6byxoZWlnaHQ6Y319LGNoaWxkcmVuOltdfTtmb3IoY29uc3QgZSBvZlsiYm9yZGVyIiwiYm9yZGVyV2lkdGgiLCJib3JkZXJDb2xvciIsImJvcmRlclJhZGl1cyIsImJvcmRlclN0eWxlIl0paWYodm9pZCAwIT09aVtlXSl7Zy5hdHRyaWJ1dGVzLnN0eWxlW2VdPWlbZV07ZGVsZXRlIGlbZV19bi5jaGlsZHJlbi5wdXNoKGcsdCl9ZWxzZSBuLmNoaWxkcmVuLnB1c2godCk7Zm9yKGNvbnN0IGUgb2ZbImJhY2tncm91bmQiLCJiYWNrZ3JvdW5kQ2xpcCIsInRvcCIsImxlZnQiLCJ3aWR0aCIsImhlaWdodCIsIm1pbldpZHRoIiwibWluSGVpZ2h0IiwibWF4V2lkdGgiLCJtYXhIZWlnaHQiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2Zvcm1PcmlnaW4iLCJ2aXNpYmlsaXR5Il0paWYodm9pZCAwIT09aVtlXSl7bi5hdHRyaWJ1dGVzLnN0eWxlW2VdPWlbZV07ZGVsZXRlIGlbZV19ImFic29sdXRlIj09PWkucG9zaXRpb24/bi5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI6bi5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSI7ZGVsZXRlIGkucG9zaXRpb247aWYoaS5hbGlnblNlbGYpe24uYXR0cmlidXRlcy5zdHlsZS5hbGlnblNlbGY9aS5hbGlnblNlbGY7ZGVsZXRlIGkuYWxpZ25TZWxmfXJldHVybiBufTt0LmZpeERpbWVuc2lvbnM9ZnVuY3Rpb24gZml4RGltZW5zaW9ucyhlKXtjb25zdCB0PWVbci4kZ2V0U3ViZm9ybVBhcmVudF0oKTtpZih0LmxheW91dD8uaW5jbHVkZXMoInJvdyIpKXtjb25zdCBhPXRbci4kZXh0cmFdLGk9ZS5jb2xTcGFuO2xldCBuO249LTE9PT1pP2EuY29sdW1uV2lkdGhzLnNsaWNlKGEuY3VycmVudENvbHVtbikucmVkdWNlKCgoZSx0KT0+ZSt0KSwwKTphLmNvbHVtbldpZHRocy5zbGljZShhLmN1cnJlbnRDb2x1bW4sYS5jdXJyZW50Q29sdW1uK2kpLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk7aXNOYU4obil8fChlLnc9bil9dC5sYXlvdXQmJiJwb3NpdGlvbiIhPT10LmxheW91dCYmKGUueD1lLnk9MCk7InRhYmxlIj09PWUubGF5b3V0JiYiIj09PWUudyYmQXJyYXkuaXNBcnJheShlLmNvbHVtbldpZHRocykmJihlLnc9ZS5jb2x1bW5XaWR0aHMucmVkdWNlKCgoZSx0KT0+ZSt0KSwwKSl9O3QuZml4VGV4dEluZGVudD1mdW5jdGlvbiBmaXhUZXh0SW5kZW50KGUpe2NvbnN0IHQ9KDAsbi5nZXRNZWFzdXJlbWVudCkoZS50ZXh0SW5kZW50LCIwcHgiKTtpZih0Pj0wKXJldHVybjtjb25zdCBhPSJwYWRkaW5nIisoImxlZnQiPT0oInJpZ2h0Ij09PWUudGV4dEFsaWduPyJyaWdodCI6ImxlZnQiKT8iTGVmdCI6IlJpZ2h0Iikscj0oMCxuLmdldE1lYXN1cmVtZW50KShlW2FdLCIwcHgiKTtlW2FdPXItdCsicHgifTt0LmZpeFVSTD1mdW5jdGlvbiBmaXhVUkwoZSl7Y29uc3QgdD0oMCxpLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwpKGUsbnVsbCx7YWRkRGVmYXVsdFByb3RvY29sOiEwLHRyeUNvbnZlcnRFbmNvZGluZzohMH0pO3JldHVybiB0P3QuaHJlZjpudWxsfTt0LmlzUHJpbnRPbmx5PWlzUHJpbnRPbmx5O3QubGF5b3V0Q2xhc3M9ZnVuY3Rpb24gbGF5b3V0Q2xhc3MoZSl7c3dpdGNoKGUubGF5b3V0KXtjYXNlInBvc2l0aW9uIjpkZWZhdWx0OnJldHVybiJ4ZmFQb3NpdGlvbiI7Y2FzZSJsci10YiI6cmV0dXJuInhmYUxyVGIiO2Nhc2Uicmwtcm93IjpyZXR1cm4ieGZhUmxSb3ciO2Nhc2UicmwtdGIiOnJldHVybiJ4ZmFSbFRiIjtjYXNlInJvdyI6cmV0dXJuInhmYVJvdyI7Y2FzZSJ0YWJsZSI6cmV0dXJuInhmYVRhYmxlIjtjYXNlInRiIjpyZXR1cm4ieGZhVGIifX07dC5sYXlvdXROb2RlPWZ1bmN0aW9uIGxheW91dE5vZGUoZSx0KXtsZXQgYT1udWxsLGk9bnVsbCxuPSExO2lmKCghZS53fHwhZS5oKSYmZS52YWx1ZSl7bGV0IHM9MCxvPTA7aWYoZS5tYXJnaW4pe3M9ZS5tYXJnaW4ubGVmdEluc2V0K2UubWFyZ2luLnJpZ2h0SW5zZXQ7bz1lLm1hcmdpbi50b3BJbnNldCtlLm1hcmdpbi5ib3R0b21JbnNldH1sZXQgYz1udWxsLGw9bnVsbDtpZihlLnBhcmEpe2w9T2JqZWN0LmNyZWF0ZShudWxsKTtjPSIiPT09ZS5wYXJhLmxpbmVIZWlnaHQ/bnVsbDplLnBhcmEubGluZUhlaWdodDtsLnRvcD0iIj09PWUucGFyYS5zcGFjZUFib3ZlPzA6ZS5wYXJhLnNwYWNlQWJvdmU7bC5ib3R0b209IiI9PT1lLnBhcmEuc3BhY2VCZWxvdz8wOmUucGFyYS5zcGFjZUJlbG93O2wubGVmdD0iIj09PWUucGFyYS5tYXJnaW5MZWZ0PzA6ZS5wYXJhLm1hcmdpbkxlZnQ7bC5yaWdodD0iIj09PWUucGFyYS5tYXJnaW5SaWdodD8wOmUucGFyYS5tYXJnaW5SaWdodH1sZXQgaD1lLmZvbnQ7aWYoIWgpe2NvbnN0IHQ9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKCk7bGV0IGE9ZVtyLiRnZXRQYXJlbnRdKCk7Zm9yKDthJiZhIT09dDspe2lmKGEuZm9udCl7aD1hLmZvbnQ7YnJlYWt9YT1hW3IuJGdldFBhcmVudF0oKX19Y29uc3QgdT0oZS53fHx0LndpZHRoKS1zLGQ9ZVtyLiRnbG9iYWxEYXRhXS5mb250RmluZGVyO2lmKGUudmFsdWUuZXhEYXRhJiZlLnZhbHVlLmV4RGF0YVtyLiRjb250ZW50XSYmInRleHQvaHRtbCI9PT1lLnZhbHVlLmV4RGF0YS5jb250ZW50VHlwZSl7Y29uc3QgdD1sYXlvdXRUZXh0KGUudmFsdWUuZXhEYXRhW3IuJGNvbnRlbnRdLGgsbCxjLGQsdSk7aT10LndpZHRoO2E9dC5oZWlnaHQ7bj10LmlzQnJva2VufWVsc2V7Y29uc3QgdD1lLnZhbHVlW3IuJHRleHRdKCk7aWYodCl7Y29uc3QgZT1sYXlvdXRUZXh0KHQsaCxsLGMsZCx1KTtpPWUud2lkdGg7YT1lLmhlaWdodDtuPWUuaXNCcm9rZW59fW51bGw9PT1pfHxlLnd8fChpKz1zKTtudWxsPT09YXx8ZS5ofHwoYSs9byl9cmV0dXJue3c6aSxoOmEsaXNCcm9rZW46bn19O3QubWVhc3VyZVRvU3RyaW5nPW1lYXN1cmVUb1N0cmluZzt0LnNldEFjY2Vzcz1mdW5jdGlvbiBzZXRBY2Nlc3MoZSx0KXtzd2l0Y2goZS5hY2Nlc3Mpe2Nhc2Uibm9uSW50ZXJhY3RpdmUiOnQucHVzaCgieGZhTm9uSW50ZXJhY3RpdmUiKTticmVhaztjYXNlInJlYWRPbmx5Ijp0LnB1c2goInhmYVJlYWRPbmx5Iik7YnJlYWs7Y2FzZSJwcm90ZWN0ZWQiOnQucHVzaCgieGZhRGlzYWJsZWQiKX19O3Quc2V0Rm9udEZhbWlseT1mdW5jdGlvbiBzZXRGb250RmFtaWx5KGUsdCxhLHIpe2lmKCFhKXtkZWxldGUgci5mb250RmFtaWx5O3JldHVybn1jb25zdCBpPSgwLG4uc3RyaXBRdW90ZXMpKGUudHlwZWZhY2UpO3IuZm9udEZhbWlseT1gIiR7aX0iYDtjb25zdCBvPWEuZmluZChpKTtpZihvKXtjb25zdHtmb250RmFtaWx5OmF9PW8ucmVndWxhci5jc3NGb250SW5mbzthIT09aSYmKHIuZm9udEZhbWlseT1gIiR7YX0iYCk7Y29uc3Qgbj1nZXRDdXJyZW50UGFyYSh0KTtpZihuJiYiIiE9PW4ubGluZUhlaWdodClyZXR1cm47aWYoci5saW5lSGVpZ2h0KXJldHVybjtjb25zdCBjPSgwLHMuc2VsZWN0Rm9udCkoZSxvKTtjJiYoci5saW5lSGVpZ2h0PU1hdGgubWF4KDEuMixjLmxpbmVIZWlnaHQpKX19O3Quc2V0TWluTWF4RGltZW5zaW9ucz1mdW5jdGlvbiBzZXRNaW5NYXhEaW1lbnNpb25zKGUsdCl7aWYoInBvc2l0aW9uIj09PWVbci4kZ2V0U3ViZm9ybVBhcmVudF0oKS5sYXlvdXQpe2UubWluVz4wJiYodC5taW5XaWR0aD1tZWFzdXJlVG9TdHJpbmcoZS5taW5XKSk7ZS5tYXhXPjAmJih0Lm1heFdpZHRoPW1lYXN1cmVUb1N0cmluZyhlLm1heFcpKTtlLm1pbkg+MCYmKHQubWluSGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhlLm1pbkgpKTtlLm1heEg+MCYmKHQubWF4SGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhlLm1heEgpKX19O3Quc2V0UGFyYT1mdW5jdGlvbiBzZXRQYXJhKGUsdCxhKXtpZihhLmF0dHJpYnV0ZXMuY2xhc3M/LmluY2x1ZGVzKCJ4ZmFSaWNoIikpe2lmKHQpeyIiPT09ZS5oJiYodC5oZWlnaHQ9ImF1dG8iKTsiIj09PWUudyYmKHQud2lkdGg9ImF1dG8iKX1jb25zdCBpPWdldEN1cnJlbnRQYXJhKGUpO2lmKGkpe2NvbnN0IGU9YS5hdHRyaWJ1dGVzLnN0eWxlO2UuZGlzcGxheT0iZmxleCI7ZS5mbGV4RGlyZWN0aW9uPSJjb2x1bW4iO3N3aXRjaChpLnZBbGlnbil7Y2FzZSJ0b3AiOmUuanVzdGlmeUNvbnRlbnQ9InN0YXJ0IjticmVhaztjYXNlImJvdHRvbSI6ZS5qdXN0aWZ5Q29udGVudD0iZW5kIjticmVhaztjYXNlIm1pZGRsZSI6ZS5qdXN0aWZ5Q29udGVudD0iY2VudGVyIn1jb25zdCB0PWlbci4kdG9TdHlsZV0oKTtmb3IoY29uc3RbYSxyXW9mIE9iamVjdC5lbnRyaWVzKHQpKWEgaW4gZXx8KGVbYV09cil9fX07dC50b1N0eWxlPWZ1bmN0aW9uIHRvU3R5bGUoZSwuLi50KXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IG4gb2YgdCl7Y29uc3QgdD1lW25dO2lmKG51bGwhPT10KWlmKGMuaGFzT3duUHJvcGVydHkobikpY1tuXShlLGEpO2Vsc2UgaWYodCBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0KXtjb25zdCBlPXRbci4kdG9TdHlsZV0oKTtlP09iamVjdC5hc3NpZ24oYSxlKTooMCxpLndhcm4pKGAoREVCVUcpIC0gWEZBIC0gc3R5bGUgZm9yICR7bn0gbm90IGltcGxlbWVudGVkIHlldGApfX1yZXR1cm4gYX07dmFyIHI9YSg3OCksaT1hKDIpLG49YSg3OSkscz1hKDg2KSxvPWEoODcpO2Z1bmN0aW9uIG1lYXN1cmVUb1N0cmluZyhlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/IjBweCI6TnVtYmVyLmlzSW50ZWdlcihlKT9gJHtlfXB4YDpgJHtlLnRvRml4ZWQoMil9cHhgfWNvbnN0IGM9e2FuY2hvclR5cGUoZSx0KXtjb25zdCBhPWVbci4kZ2V0U3ViZm9ybVBhcmVudF0oKTtpZihhJiYoIWEubGF5b3V0fHwicG9zaXRpb24iPT09YS5sYXlvdXQpKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7c3dpdGNoKGUuYW5jaG9yVHlwZSl7Y2FzZSJib3R0b21DZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsIC0xMDAlKSI7YnJlYWs7Y2FzZSJib3R0b21MZWZ0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgwLC0xMDAlKSI7YnJlYWs7Y2FzZSJib3R0b21SaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsLTEwMCUpIjticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwtNTAlKSI7YnJlYWs7Y2FzZSJtaWRkbGVMZWZ0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgwLC01MCUpIjticmVhaztjYXNlIm1pZGRsZVJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwtNTAlKSI7YnJlYWs7Y2FzZSJ0b3BDZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsMCkiO2JyZWFrO2Nhc2UidG9wUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLDApIn19fSxkaW1lbnNpb25zKGUsdCl7Y29uc3QgYT1lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk7bGV0IGk9ZS53O2NvbnN0IG49ZS5oO2lmKGEubGF5b3V0Py5pbmNsdWRlcygicm93Iikpe2NvbnN0IHQ9YVtyLiRleHRyYV0sbj1lLmNvbFNwYW47bGV0IHM7aWYoLTE9PT1uKXtzPXQuY29sdW1uV2lkdGhzLnNsaWNlKHQuY3VycmVudENvbHVtbikucmVkdWNlKCgoZSx0KT0+ZSt0KSwwKTt0LmN1cnJlbnRDb2x1bW49MH1lbHNle3M9dC5jb2x1bW5XaWR0aHMuc2xpY2UodC5jdXJyZW50Q29sdW1uLHQuY3VycmVudENvbHVtbituKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApO3QuY3VycmVudENvbHVtbj0odC5jdXJyZW50Q29sdW1uK2UuY29sU3BhbikldC5jb2x1bW5XaWR0aHMubGVuZ3RofWlzTmFOKHMpfHwoaT1lLnc9cyl9dC53aWR0aD0iIiE9PWk/bWVhc3VyZVRvU3RyaW5nKGkpOiJhdXRvIjt0LmhlaWdodD0iIiE9PW4/bWVhc3VyZVRvU3RyaW5nKG4pOiJhdXRvIn0scG9zaXRpb24oZSx0KXtjb25zdCBhPWVbci4kZ2V0U3ViZm9ybVBhcmVudF0oKTtpZighYT8ubGF5b3V0fHwicG9zaXRpb24iPT09YS5sYXlvdXQpe3QucG9zaXRpb249ImFic29sdXRlIjt0LmxlZnQ9bWVhc3VyZVRvU3RyaW5nKGUueCk7dC50b3A9bWVhc3VyZVRvU3RyaW5nKGUueSl9fSxyb3RhdGUoZSx0KXtpZihlLnJvdGF0ZSl7InRyYW5zZm9ybSJpbiB0fHwodC50cmFuc2Zvcm09IiIpO3QudHJhbnNmb3JtKz1gcm90YXRlKC0ke2Uucm90YXRlfWRlZylgO3QudHJhbnNmb3JtT3JpZ2luPSJ0b3AgbGVmdCJ9fSxwcmVzZW5jZShlLHQpe3N3aXRjaChlLnByZXNlbmNlKXtjYXNlImludmlzaWJsZSI6dC52aXNpYmlsaXR5PSJoaWRkZW4iO2JyZWFrO2Nhc2UiaGlkZGVuIjpjYXNlImluYWN0aXZlIjp0LmRpc3BsYXk9Im5vbmUifX0saEFsaWduKGUsdCl7aWYoInBhcmEiPT09ZVtyLiRub2RlTmFtZV0pc3dpdGNoKGUuaEFsaWduKXtjYXNlImp1c3RpZnlBbGwiOnQudGV4dEFsaWduPSJqdXN0aWZ5LWFsbCI7YnJlYWs7Y2FzZSJyYWRpeCI6dC50ZXh0QWxpZ249ImxlZnQiO2JyZWFrO2RlZmF1bHQ6dC50ZXh0QWxpZ249ZS5oQWxpZ259ZWxzZSBzd2l0Y2goZS5oQWxpZ24pe2Nhc2UibGVmdCI6dC5hbGlnblNlbGY9InN0YXJ0IjticmVhaztjYXNlImNlbnRlciI6dC5hbGlnblNlbGY9ImNlbnRlciI7YnJlYWs7Y2FzZSJyaWdodCI6dC5hbGlnblNlbGY9ImVuZCJ9fSxtYXJnaW4oZSx0KXtlLm1hcmdpbiYmKHQubWFyZ2luPWUubWFyZ2luW3IuJHRvU3R5bGVdKCkubWFyZ2luKX19O2Z1bmN0aW9uIGxheW91dFRleHQoZSx0LGEsaSxuLHMpe2NvbnN0IGM9bmV3IG8uVGV4dE1lYXN1cmUodCxhLGksbik7InN0cmluZyI9PXR5cGVvZiBlP2MuYWRkU3RyaW5nKGUpOmVbci4kcHVzaEdseXBoc10oYyk7cmV0dXJuIGMuY29tcHV0ZShzKX1mdW5jdGlvbiBpc1ByaW50T25seShlKXtyZXR1cm4gZS5yZWxldmFudC5sZW5ndGg+MCYmIWUucmVsZXZhbnRbMF0uZXhjbHVkZWQmJiJwcmludCI9PT1lLnJlbGV2YW50WzBdLnZpZXduYW1lfWZ1bmN0aW9uIGdldEN1cnJlbnRQYXJhKGUpe2NvbnN0IHQ9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLnBhcmFTdGFjaztyZXR1cm4gdC5sZW5ndGg/dC5hdCgtMSk6bnVsbH19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Gb250RmluZGVyPXZvaWQgMDt0LmdldE1ldHJpY3M9ZnVuY3Rpb24gZ2V0TWV0cmljcyhlLHQ9ITEpe2xldCBhPW51bGw7aWYoZSl7Y29uc3QgdD0oMCxpLnN0cmlwUXVvdGVzKShlLnR5cGVmYWNlKSxuPWVbci4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlci5maW5kKHQpO2E9c2VsZWN0Rm9udChlLG4pfWlmKCFhKXJldHVybntsaW5lSGVpZ2h0OjEyLGxpbmVHYXA6MixsaW5lTm9HYXA6MTB9O2NvbnN0IG49ZS5zaXplfHwxMCxzPWEubGluZUhlaWdodD9NYXRoLm1heCh0PzA6MS4yLGEubGluZUhlaWdodCk6MS4yLG89dm9pZCAwPT09YS5saW5lR2FwPy4yOmEubGluZUdhcDtyZXR1cm57bGluZUhlaWdodDpzKm4sbGluZUdhcDpvKm4sbGluZU5vR2FwOk1hdGgubWF4KDEscy1vKSpufX07dC5zZWxlY3RGb250PXNlbGVjdEZvbnQ7dmFyIHI9YSg3OCksaT1hKDc5KSxuPWEoMik7dC5Gb250RmluZGVyPWNsYXNzIEZvbnRGaW5kZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5mb250cz1uZXcgTWFwO3RoaXMuY2FjaGU9bmV3IE1hcDt0aGlzLndhcm5lZD1uZXcgU2V0O3RoaXMuZGVmYXVsdEZvbnQ9bnVsbDt0aGlzLmFkZChlKX1hZGQoZSx0PW51bGwpe2Zvcihjb25zdCB0IG9mIGUpdGhpcy5hZGRQZGZGb250KHQpO2Zvcihjb25zdCBlIG9mIHRoaXMuZm9udHMudmFsdWVzKCkpZS5yZWd1bGFyfHwoZS5yZWd1bGFyPWUuaXRhbGljfHxlLmJvbGR8fGUuYm9sZGl0YWxpYyk7aWYoIXR8fDA9PT10LnNpemUpcmV0dXJuO2NvbnN0IGE9dGhpcy5mb250cy5nZXQoIlBkZkpTLUZhbGxiYWNrLVBkZkpTLVhGQSIpO2Zvcihjb25zdCBlIG9mIHQpdGhpcy5mb250cy5zZXQoZSxhKX1hZGRQZGZGb250KGUpe2NvbnN0IHQ9ZS5jc3NGb250SW5mbyxhPXQuZm9udEZhbWlseTtsZXQgcj10aGlzLmZvbnRzLmdldChhKTtpZighcil7cj1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuZm9udHMuc2V0KGEscik7dGhpcy5kZWZhdWx0Rm9udHx8KHRoaXMuZGVmYXVsdEZvbnQ9cil9bGV0IGk9IiI7Y29uc3Qgbj1wYXJzZUZsb2F0KHQuZm9udFdlaWdodCk7MCE9PXBhcnNlRmxvYXQodC5pdGFsaWNBbmdsZSk/aT1uPj03MDA/ImJvbGRpdGFsaWMiOiJpdGFsaWMiOm4+PTcwMCYmKGk9ImJvbGQiKTtpZighaSl7KGUubmFtZS5pbmNsdWRlcygiQm9sZCIpfHxlLnBzTmFtZT8uaW5jbHVkZXMoIkJvbGQiKSkmJihpPSJib2xkIik7KGUubmFtZS5pbmNsdWRlcygiSXRhbGljIil8fGUubmFtZS5lbmRzV2l0aCgiSXQiKXx8ZS5wc05hbWU/LmluY2x1ZGVzKCJJdGFsaWMiKXx8ZS5wc05hbWU/LmVuZHNXaXRoKCJJdCIpKSYmKGkrPSJpdGFsaWMiKX1pfHwoaT0icmVndWxhciIpO3JbaV09ZX1nZXREZWZhdWx0KCl7cmV0dXJuIHRoaXMuZGVmYXVsdEZvbnR9ZmluZChlLHQ9ITApe2xldCBhPXRoaXMuZm9udHMuZ2V0KGUpfHx0aGlzLmNhY2hlLmdldChlKTtpZihhKXJldHVybiBhO2NvbnN0IHI9Lyx8LXxffCB8Ym9sZGl0YWxpY3xib2xkfGl0YWxpY3xyZWd1bGFyfGl0L2dpO2xldCBpPWUucmVwbGFjZUFsbChyLCIiKTthPXRoaXMuZm9udHMuZ2V0KGkpO2lmKGEpe3RoaXMuY2FjaGUuc2V0KGUsYSk7cmV0dXJuIGF9aT1pLnRvTG93ZXJDYXNlKCk7Y29uc3Qgcz1bXTtmb3IoY29uc3RbZSx0XW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVwbGFjZUFsbChyLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoaSkmJnMucHVzaCh0KTtpZigwPT09cy5sZW5ndGgpZm9yKGNvbnN0WyxlXW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVndWxhci5uYW1lPy5yZXBsYWNlQWxsKHIsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChpKSYmcy5wdXNoKGUpO2lmKDA9PT1zLmxlbmd0aCl7aT1pLnJlcGxhY2VBbGwoL3BzbXR8bXQvZ2ksIiIpO2Zvcihjb25zdFtlLHRdb2YgdGhpcy5mb250cy5lbnRyaWVzKCkpZS5yZXBsYWNlQWxsKHIsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChpKSYmcy5wdXNoKHQpfWlmKDA9PT1zLmxlbmd0aClmb3IoY29uc3QgZSBvZiB0aGlzLmZvbnRzLnZhbHVlcygpKWUucmVndWxhci5uYW1lPy5yZXBsYWNlQWxsKHIsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChpKSYmcy5wdXNoKGUpO2lmKHMubGVuZ3RoPj0xKXsxIT09cy5sZW5ndGgmJnQmJigwLG4ud2FybikoYFhGQSAtIFRvbyBtYW55IGNob2ljZXMgdG8gZ3Vlc3MgdGhlIGNvcnJlY3QgZm9udDogJHtlfWApO3RoaXMuY2FjaGUuc2V0KGUsc1swXSk7cmV0dXJuIHNbMF19aWYodCYmIXRoaXMud2FybmVkLmhhcyhlKSl7dGhpcy53YXJuZWQuYWRkKGUpOygwLG4ud2FybikoYFhGQSAtIENhbm5vdCBmaW5kIHRoZSBmb250OiAke2V9YCl9cmV0dXJuIG51bGx9fTtmdW5jdGlvbiBzZWxlY3RGb250KGUsdCl7cmV0dXJuIml0YWxpYyI9PT1lLnBvc3R1cmU/ImJvbGQiPT09ZS53ZWlnaHQ/dC5ib2xkaXRhbGljOnQuaXRhbGljOiJib2xkIj09PWUud2VpZ2h0P3QuYm9sZDp0LnJlZ3VsYXJ9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVGV4dE1lYXN1cmU9dm9pZCAwO3ZhciByPWEoODYpO2NsYXNzIEZvbnRJbmZve2NvbnN0cnVjdG9yKGUsdCxhLGkpe3RoaXMubGluZUhlaWdodD1hO3RoaXMucGFyYU1hcmdpbj10fHx7dG9wOjAsYm90dG9tOjAsbGVmdDowLHJpZ2h0OjB9O2lmKCFlKXtbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChpKTtyZXR1cm59dGhpcy54ZmFGb250PXt0eXBlZmFjZTplLnR5cGVmYWNlLHBvc3R1cmU6ZS5wb3N0dXJlLHdlaWdodDplLndlaWdodCxzaXplOmUuc2l6ZSxsZXR0ZXJTcGFjaW5nOmUubGV0dGVyU3BhY2luZ307Y29uc3Qgbj1pLmZpbmQoZS50eXBlZmFjZSk7aWYobil7dGhpcy5wZGZGb250PSgwLHIuc2VsZWN0Rm9udCkoZSxuKTt0aGlzLnBkZkZvbnR8fChbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChpKSl9ZWxzZVt0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KGkpfWRlZmF1bHRGb250KGUpe2NvbnN0IHQ9ZS5maW5kKCJIZWx2ZXRpY2EiLCExKXx8ZS5maW5kKCJNeXJpYWQgUHJvIiwhMSl8fGUuZmluZCgiQXJpYWwiLCExKXx8ZS5nZXREZWZhdWx0KCk7aWYodD8ucmVndWxhcil7Y29uc3QgZT10LnJlZ3VsYXI7cmV0dXJuW2Use3R5cGVmYWNlOmUuY3NzRm9udEluZm8uZm9udEZhbWlseSxwb3N0dXJlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIixzaXplOjEwLGxldHRlclNwYWNpbmc6MH1dfXJldHVybltudWxsLHt0eXBlZmFjZToiQ291cmllciIscG9zdHVyZToibm9ybWFsIix3ZWlnaHQ6Im5vcm1hbCIsc2l6ZToxMCxsZXR0ZXJTcGFjaW5nOjB9XX19Y2xhc3MgRm9udFNlbGVjdG9ye2NvbnN0cnVjdG9yKGUsdCxhLHIpe3RoaXMuZm9udEZpbmRlcj1yO3RoaXMuc3RhY2s9W25ldyBGb250SW5mbyhlLHQsYSxyKV19cHVzaERhdGEoZSx0LGEpe2NvbnN0IHI9dGhpcy5zdGFjay5hdCgtMSk7Zm9yKGNvbnN0IHQgb2ZbInR5cGVmYWNlIiwicG9zdHVyZSIsIndlaWdodCIsInNpemUiLCJsZXR0ZXJTcGFjaW5nIl0pZVt0XXx8KGVbdF09ci54ZmFGb250W3RdKTtmb3IoY29uc3QgZSBvZlsidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0Il0paXNOYU4odFtlXSkmJih0W2VdPXIucGFyYU1hcmdpbltlXSk7Y29uc3QgaT1uZXcgRm9udEluZm8oZSx0LGF8fHIubGluZUhlaWdodCx0aGlzLmZvbnRGaW5kZXIpO2kucGRmRm9udHx8KGkucGRmRm9udD1yLnBkZkZvbnQpO3RoaXMuc3RhY2sucHVzaChpKX1wb3BGb250KCl7dGhpcy5zdGFjay5wb3AoKX10b3BGb250KCl7cmV0dXJuIHRoaXMuc3RhY2suYXQoLTEpfX10LlRleHRNZWFzdXJlPWNsYXNzIFRleHRNZWFzdXJle2NvbnN0cnVjdG9yKGUsdCxhLHIpe3RoaXMuZ2x5cGhzPVtdO3RoaXMuZm9udFNlbGVjdG9yPW5ldyBGb250U2VsZWN0b3IoZSx0LGEscik7dGhpcy5leHRyYUhlaWdodD0wfXB1c2hEYXRhKGUsdCxhKXt0aGlzLmZvbnRTZWxlY3Rvci5wdXNoRGF0YShlLHQsYSl9cG9wRm9udChlKXtyZXR1cm4gdGhpcy5mb250U2VsZWN0b3IucG9wRm9udCgpfWFkZFBhcmEoKXtjb25zdCBlPXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKTt0aGlzLmV4dHJhSGVpZ2h0Kz1lLnBhcmFNYXJnaW4udG9wK2UucGFyYU1hcmdpbi5ib3R0b219YWRkU3RyaW5nKGUpe2lmKCFlKXJldHVybjtjb25zdCB0PXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKSxhPXQueGZhRm9udC5zaXplO2lmKHQucGRmRm9udCl7Y29uc3Qgcj10LnhmYUZvbnQubGV0dGVyU3BhY2luZyxpPXQucGRmRm9udCxuPWkubGluZUhlaWdodHx8MS4yLHM9dC5saW5lSGVpZ2h0fHxNYXRoLm1heCgxLjIsbikqYSxvPW4tKHZvaWQgMD09PWkubGluZUdhcD8uMjppLmxpbmVHYXApLGM9TWF0aC5tYXgoMSxvKSphLGw9YS8xZTMsaD1pLmRlZmF1bHRXaWR0aHx8aS5jaGFyc1RvR2x5cGhzKCIgIilbMF0ud2lkdGg7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvW1x1MjAyOVxuXS8pKXtjb25zdCBlPWkuZW5jb2RlU3RyaW5nKHQpLmpvaW4oIiIpLGE9aS5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIGEpe2NvbnN0IHQ9ZS53aWR0aHx8aDt0aGlzLmdseXBocy5wdXNoKFt0KmwrcixzLGMsZS51bmljb2RlLCExXSl9dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfXRoaXMuZ2x5cGhzLnBvcCgpfWVsc2V7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvW1x1MjAyOVxuXS8pKXtmb3IoY29uc3QgZSBvZiB0LnNwbGl0KCIiKSl0aGlzLmdseXBocy5wdXNoKFthLDEuMiphLGEsZSwhMV0pO3RoaXMuZ2x5cGhzLnB1c2goWzAsMCwwLCJcbiIsITBdKX10aGlzLmdseXBocy5wb3AoKX19Y29tcHV0ZShlKXtsZXQgdD0tMSxhPTAscj0wLGk9MCxuPTAscz0wLG89ITEsYz0hMDtmb3IobGV0IGw9MCxoPXRoaXMuZ2x5cGhzLmxlbmd0aDtsPGg7bCsrKXtjb25zdFtoLHUsZCxmLGddPXRoaXMuZ2x5cGhzW2xdLHA9IiAiPT09ZixtPWM/ZDp1O2lmKGcpe3I9TWF0aC5tYXgocixuKTtuPTA7aSs9cztzPW07dD0tMTthPTA7Yz0hMX1lbHNlIGlmKHApaWYobitoPmUpe3I9TWF0aC5tYXgocixuKTtuPTA7aSs9cztzPW07dD0tMTthPTA7bz0hMDtjPSExfWVsc2V7cz1NYXRoLm1heChtLHMpO2E9bjtuKz1oO3Q9bH1lbHNlIGlmKG4raD5lKXtpKz1zO3M9bTtpZigtMSE9PXQpe2w9dDtyPU1hdGgubWF4KHIsYSk7bj0wO3Q9LTE7YT0wfWVsc2V7cj1NYXRoLm1heChyLG4pO249aH1vPSEwO2M9ITF9ZWxzZXtuKz1oO3M9TWF0aC5tYXgobSxzKX19cj1NYXRoLm1heChyLG4pO2krPXMrdGhpcy5leHRyYUhlaWdodDtyZXR1cm57d2lkdGg6MS4wMipyLGhlaWdodDppLGlzQnJva2VuOm99fX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5EYXRhSGFuZGxlcj12b2lkIDA7dmFyIHI9YSg3OCk7dC5EYXRhSGFuZGxlcj1jbGFzcyBEYXRhSGFuZGxlcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZGF0YT10O3RoaXMuZGF0YXNldD1lLmRhdGFzZXRzfHxudWxsfXNlcmlhbGl6ZShlKXtjb25zdCB0PVtbLTEsdGhpcy5kYXRhW3IuJGdldENoaWxkcmVuXSgpXV07Zm9yKDt0Lmxlbmd0aD4wOyl7Y29uc3QgYT10LmF0KC0xKSxbaSxuXT1hO2lmKGkrMT09PW4ubGVuZ3RoKXt0LnBvcCgpO2NvbnRpbnVlfWNvbnN0IHM9blsrK2FbMF1dLG89ZS5nZXQoc1tyLiR1aWRdKTtpZihvKXNbci4kc2V0VmFsdWVdKG8pO2Vsc2V7Y29uc3QgdD1zW3IuJGdldEF0dHJpYnV0ZXNdKCk7Zm9yKGNvbnN0IGEgb2YgdC52YWx1ZXMoKSl7Y29uc3QgdD1lLmdldChhW3IuJHVpZF0pO2lmKHQpe2Fbci4kc2V0VmFsdWVdKHQpO2JyZWFrfX19Y29uc3QgYz1zW3IuJGdldENoaWxkcmVuXSgpO2MubGVuZ3RoPjAmJnQucHVzaChbLTEsY10pfWNvbnN0IGE9Wyc8eGZhOmRhdGFzZXRzIHhtbG5zOnhmYT0iaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8xLjAvIj4nXTtpZih0aGlzLmRhdGFzZXQpZm9yKGNvbnN0IGUgb2YgdGhpcy5kYXRhc2V0W3IuJGdldENoaWxkcmVuXSgpKSJkYXRhIiE9PWVbci4kbm9kZU5hbWVdJiZlW3IuJHRvU3RyaW5nXShhKTt0aGlzLmRhdGFbci4kdG9TdHJpbmddKGEpO2EucHVzaCgiPC94ZmE6ZGF0YXNldHM+Iik7cmV0dXJuIGEuam9pbigiIil9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlhGQVBhcnNlcj12b2lkIDA7dmFyIHI9YSg3OCksaT1hKDY3KSxuPWEoOTApLHM9YSgyKTtjbGFzcyBYRkFQYXJzZXIgZXh0ZW5kcyBpLlhNTFBhcnNlckJhc2V7Y29uc3RydWN0b3IoZT1udWxsLHQ9ITEpe3N1cGVyKCk7dGhpcy5fYnVpbGRlcj1uZXcgbi5CdWlsZGVyKGUpO3RoaXMuX3N0YWNrPVtdO3RoaXMuX2dsb2JhbERhdGE9e3VzZWRUeXBlZmFjZXM6bmV3IFNldH07dGhpcy5faWRzPW5ldyBNYXA7dGhpcy5fY3VycmVudD10aGlzLl9idWlsZGVyLmJ1aWxkUm9vdCh0aGlzLl9pZHMpO3RoaXMuX2Vycm9yQ29kZT1pLlhNTFBhcnNlckVycm9yQ29kZS5Ob0Vycm9yO3RoaXMuX3doaXRlUmVnZXg9L15ccyskLzt0aGlzLl9uYnNwcz0vXHhhMCsvZzt0aGlzLl9yaWNoVGV4dD10fXBhcnNlKGUpe3RoaXMucGFyc2VYbWwoZSk7aWYodGhpcy5fZXJyb3JDb2RlPT09aS5YTUxQYXJzZXJFcnJvckNvZGUuTm9FcnJvcil7dGhpcy5fY3VycmVudFtyLiRmaW5hbGl6ZV0oKTtyZXR1cm4gdGhpcy5fY3VycmVudC5lbGVtZW50fX1vblRleHQoZSl7ZT1lLnJlcGxhY2UodGhpcy5fbmJzcHMsKGU9PmUuc2xpY2UoMSkrIiAiKSk7dGhpcy5fcmljaFRleHR8fHRoaXMuX2N1cnJlbnRbci4kYWNjZXB0V2hpdGVzcGFjZV0oKT90aGlzLl9jdXJyZW50W3IuJG9uVGV4dF0oZSx0aGlzLl9yaWNoVGV4dCk6dGhpcy5fd2hpdGVSZWdleC50ZXN0KGUpfHx0aGlzLl9jdXJyZW50W3IuJG9uVGV4dF0oZS50cmltKCkpfW9uQ2RhdGEoZSl7dGhpcy5fY3VycmVudFtyLiRvblRleHRdKGUpfV9ta0F0dHJpYnV0ZXMoZSx0KXtsZXQgYT1udWxsLGk9bnVsbDtjb25zdCBuPU9iamVjdC5jcmVhdGUoe30pO2Zvcihjb25zdHtuYW1lOm8sdmFsdWU6Y31vZiBlKWlmKCJ4bWxucyI9PT1vKWE/KDAscy53YXJuKShgWEZBIC0gbXVsdGlwbGUgbmFtZXNwYWNlIGRlZmluaXRpb24gaW4gPCR7dH0+YCk6YT1jO2Vsc2UgaWYoby5zdGFydHNXaXRoKCJ4bWxuczoiKSl7Y29uc3QgZT1vLnN1YnN0cmluZyg2KTtpfHwoaT1bXSk7aS5wdXNoKHtwcmVmaXg6ZSx2YWx1ZTpjfSl9ZWxzZXtjb25zdCBlPW8uaW5kZXhPZigiOiIpO2lmKC0xPT09ZSluW29dPWM7ZWxzZXtsZXQgdD1uW3IuJG5zQXR0cmlidXRlc107dHx8KHQ9bltyLiRuc0F0dHJpYnV0ZXNdPU9iamVjdC5jcmVhdGUobnVsbCkpO2NvbnN0W2EsaV09W28uc2xpY2UoMCxlKSxvLnNsaWNlKGUrMSldOyh0W2FdfHw9T2JqZWN0LmNyZWF0ZShudWxsKSlbaV09Y319cmV0dXJuW2EsaSxuXX1fZ2V0TmFtZUFuZFByZWZpeChlLHQpe2NvbnN0IGE9ZS5pbmRleE9mKCI6Iik7cmV0dXJuLTE9PT1hP1tlLG51bGxdOltlLnN1YnN0cmluZyhhKzEpLHQ/IiI6ZS5zdWJzdHJpbmcoMCxhKV19b25CZWdpbkVsZW1lbnQoZSx0LGEpe2NvbnN0W2ksbixzXT10aGlzLl9ta0F0dHJpYnV0ZXModCxlKSxbbyxjXT10aGlzLl9nZXROYW1lQW5kUHJlZml4KGUsdGhpcy5fYnVpbGRlci5pc05zQWdub3N0aWMoKSksbD10aGlzLl9idWlsZGVyLmJ1aWxkKHtuc1ByZWZpeDpjLG5hbWU6byxhdHRyaWJ1dGVzOnMsbmFtZXNwYWNlOmkscHJlZml4ZXM6bn0pO2xbci4kZ2xvYmFsRGF0YV09dGhpcy5fZ2xvYmFsRGF0YTtpZihhKXtsW3IuJGZpbmFsaXplXSgpO3RoaXMuX2N1cnJlbnRbci4kb25DaGlsZF0obCkmJmxbci4kc2V0SWRdKHRoaXMuX2lkcyk7bFtyLiRjbGVhbl0odGhpcy5fYnVpbGRlcil9ZWxzZXt0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnQpO3RoaXMuX2N1cnJlbnQ9bH19b25FbmRFbGVtZW50KGUpe2NvbnN0IHQ9dGhpcy5fY3VycmVudDtpZih0W3IuJGlzQ0RBVEFYbWxdKCkmJiJzdHJpbmciPT10eXBlb2YgdFtyLiRjb250ZW50XSl7Y29uc3QgZT1uZXcgWEZBUGFyc2VyO2UuX2dsb2JhbERhdGE9dGhpcy5fZ2xvYmFsRGF0YTtjb25zdCBhPWUucGFyc2UodFtyLiRjb250ZW50XSk7dFtyLiRjb250ZW50XT1udWxsO3Rbci4kb25DaGlsZF0oYSl9dFtyLiRmaW5hbGl6ZV0oKTt0aGlzLl9jdXJyZW50PXRoaXMuX3N0YWNrLnBvcCgpO3RoaXMuX2N1cnJlbnRbci4kb25DaGlsZF0odCkmJnRbci4kc2V0SWRdKHRoaXMuX2lkcyk7dFtyLiRjbGVhbl0odGhpcy5fYnVpbGRlcil9b25FcnJvcihlKXt0aGlzLl9lcnJvckNvZGU9ZX19dC5YRkFQYXJzZXI9WEZBUGFyc2VyfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQnVpbGRlcj12b2lkIDA7dmFyIHI9YSg4MCksaT1hKDc4KSxuPWEoOTEpLHM9YSg4Myksbz1hKDEwMCksYz1hKDIpO2NsYXNzIFJvb3QgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcigtMSwicm9vdCIsT2JqZWN0LmNyZWF0ZShudWxsKSk7dGhpcy5lbGVtZW50PW51bGw7dGhpc1tpLiRpZHNdPWV9W2kuJG9uQ2hpbGRdKGUpe3RoaXMuZWxlbWVudD1lO3JldHVybiEwfVtpLiRmaW5hbGl6ZV0oKXtzdXBlcltpLiRmaW5hbGl6ZV0oKTtpZih0aGlzLmVsZW1lbnQudGVtcGxhdGUgaW5zdGFuY2VvZiBzLlRlbXBsYXRlKXt0aGlzW2kuJGlkc10uc2V0KGkuJHJvb3QsdGhpcy5lbGVtZW50KTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbaS4kcmVzb2x2ZVByb3RvdHlwZXNdKHRoaXNbaS4kaWRzXSk7dGhpcy5lbGVtZW50LnRlbXBsYXRlW2kuJGlkc109dGhpc1tpLiRpZHNdfX19Y2xhc3MgRW1wdHkgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC0xLCIiLE9iamVjdC5jcmVhdGUobnVsbCkpfVtpLiRvbkNoaWxkXShlKXtyZXR1cm4hMX19dC5CdWlsZGVyPWNsYXNzIEJ1aWxkZXJ7Y29uc3RydWN0b3IoZT1udWxsKXt0aGlzLl9uYW1lc3BhY2VTdGFjaz1bXTt0aGlzLl9uc0Fnbm9zdGljTGV2ZWw9MDt0aGlzLl9uYW1lc3BhY2VQcmVmaXhlcz1uZXcgTWFwO3RoaXMuX25hbWVzcGFjZXM9bmV3IE1hcDt0aGlzLl9uZXh0TnNJZD1NYXRoLm1heCguLi5PYmplY3QudmFsdWVzKHIuTmFtZXNwYWNlSWRzKS5tYXAoKCh7aWQ6ZX0pPT5lKSkpO3RoaXMuX2N1cnJlbnROYW1lc3BhY2U9ZXx8bmV3IG8uVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKX1idWlsZFJvb3QoZSl7cmV0dXJuIG5ldyBSb290KGUpfWJ1aWxkKHtuc1ByZWZpeDplLG5hbWU6dCxhdHRyaWJ1dGVzOmEsbmFtZXNwYWNlOnMscHJlZml4ZXM6b30pe2NvbnN0IGM9bnVsbCE9PXM7aWYoYyl7dGhpcy5fbmFtZXNwYWNlU3RhY2sucHVzaCh0aGlzLl9jdXJyZW50TmFtZXNwYWNlKTt0aGlzLl9jdXJyZW50TmFtZXNwYWNlPXRoaXMuX3NlYXJjaE5hbWVzcGFjZShzKX1vJiZ0aGlzLl9hZGROYW1lc3BhY2VQcmVmaXgobyk7aWYoYS5oYXNPd25Qcm9wZXJ0eShpLiRuc0F0dHJpYnV0ZXMpKXtjb25zdCBlPW4uTmFtZXNwYWNlU2V0VXAuZGF0YXNldHMsdD1hW2kuJG5zQXR0cmlidXRlc107bGV0IHI9bnVsbDtmb3IoY29uc3RbYSxpXW9mIE9iamVjdC5lbnRyaWVzKHQpKXtpZih0aGlzLl9nZXROYW1lc3BhY2VUb1VzZShhKT09PWUpe3I9e3hmYTppfTticmVha319cj9hW2kuJG5zQXR0cmlidXRlc109cjpkZWxldGUgYVtpLiRuc0F0dHJpYnV0ZXNdfWNvbnN0IGw9dGhpcy5fZ2V0TmFtZXNwYWNlVG9Vc2UoZSksaD1sPy5bci4kYnVpbGRYRkFPYmplY3RdKHQsYSl8fG5ldyBFbXB0eTtoW2kuJGlzTnNBZ25vc3RpY10oKSYmdGhpcy5fbnNBZ25vc3RpY0xldmVsKys7KGN8fG98fGhbaS4kaXNOc0Fnbm9zdGljXSgpKSYmKGhbaS4kY2xlYW51cF09e2hhc05hbWVzcGFjZTpjLHByZWZpeGVzOm8sbnNBZ25vc3RpYzpoW2kuJGlzTnNBZ25vc3RpY10oKX0pO3JldHVybiBofWlzTnNBZ25vc3RpYygpe3JldHVybiB0aGlzLl9uc0Fnbm9zdGljTGV2ZWw+MH1fc2VhcmNoTmFtZXNwYWNlKGUpe2xldCB0PXRoaXMuX25hbWVzcGFjZXMuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Zm9yKGNvbnN0W2Ese2NoZWNrOml9XW9mIE9iamVjdC5lbnRyaWVzKHIuTmFtZXNwYWNlSWRzKSlpZihpKGUpKXt0PW4uTmFtZXNwYWNlU2V0VXBbYV07aWYodCl7dGhpcy5fbmFtZXNwYWNlcy5zZXQoZSx0KTtyZXR1cm4gdH1icmVha310PW5ldyBvLlVua25vd25OYW1lc3BhY2UoKyt0aGlzLl9uZXh0TnNJZCk7dGhpcy5fbmFtZXNwYWNlcy5zZXQoZSx0KTtyZXR1cm4gdH1fYWRkTmFtZXNwYWNlUHJlZml4KGUpe2Zvcihjb25zdHtwcmVmaXg6dCx2YWx1ZTphfW9mIGUpe2NvbnN0IGU9dGhpcy5fc2VhcmNoTmFtZXNwYWNlKGEpO2xldCByPXRoaXMuX25hbWVzcGFjZVByZWZpeGVzLmdldCh0KTtpZighcil7cj1bXTt0aGlzLl9uYW1lc3BhY2VQcmVmaXhlcy5zZXQodCxyKX1yLnB1c2goZSl9fV9nZXROYW1lc3BhY2VUb1VzZShlKXtpZighZSlyZXR1cm4gdGhpcy5fY3VycmVudE5hbWVzcGFjZTtjb25zdCB0PXRoaXMuX25hbWVzcGFjZVByZWZpeGVzLmdldChlKTtpZih0Py5sZW5ndGg+MClyZXR1cm4gdC5hdCgtMSk7KDAsYy53YXJuKShgVW5rbm93biBuYW1lc3BhY2UgcHJlZml4OiAke2V9LmApO3JldHVybiBudWxsfWNsZWFuKGUpe2NvbnN0e2hhc05hbWVzcGFjZTp0LHByZWZpeGVzOmEsbnNBZ25vc3RpYzpyfT1lO3QmJih0aGlzLl9jdXJyZW50TmFtZXNwYWNlPXRoaXMuX25hbWVzcGFjZVN0YWNrLnBvcCgpKTthJiZhLmZvckVhY2goKCh7cHJlZml4OmV9KT0+e3RoaXMuX25hbWVzcGFjZVByZWZpeGVzLmdldChlKS5wb3AoKX0pKTtyJiZ0aGlzLl9uc0Fnbm9zdGljTGV2ZWwtLX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuTmFtZXNwYWNlU2V0VXA9dm9pZCAwO3ZhciByPWEoOTIpLGk9YSg5Myksbj1hKDk0KSxzPWEoOTUpLG89YSg5NiksYz1hKDk3KSxsPWEoODMpLGg9YSg5OCksdT1hKDk5KTtjb25zdCBkPXtjb25maWc6ci5Db25maWdOYW1lc3BhY2UsY29ubmVjdGlvbjppLkNvbm5lY3Rpb25TZXROYW1lc3BhY2UsZGF0YXNldHM6bi5EYXRhc2V0c05hbWVzcGFjZSxsb2NhbGVTZXQ6cy5Mb2NhbGVTZXROYW1lc3BhY2Usc2lnbmF0dXJlOm8uU2lnbmF0dXJlTmFtZXNwYWNlLHN0eWxlc2hlZXQ6Yy5TdHlsZXNoZWV0TmFtZXNwYWNlLHRlbXBsYXRlOmwuVGVtcGxhdGVOYW1lc3BhY2UseGRwOmguWGRwTmFtZXNwYWNlLHhodG1sOnUuWGh0bWxOYW1lc3BhY2V9O3QuTmFtZXNwYWNlU2V0VXA9ZH0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkNvbmZpZ05hbWVzcGFjZT12b2lkIDA7dmFyIHI9YSg4MCksaT1hKDc4KSxuPWEoNzkpLHM9YSgyKTtjb25zdCBvPXIuTmFtZXNwYWNlSWRzLmNvbmZpZy5pZDtjbGFzcyBBY3JvYmF0IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiYWNyb2JhdCIsITApO3RoaXMuYWNyb2JhdDc9bnVsbDt0aGlzLmF1dG9TYXZlPW51bGw7dGhpcy5jb21tb249bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy52YWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcz1udWxsO3RoaXMuc3VibWl0VXJsPW5ldyBpLlhGQU9iamVjdEFycmF5fX1jbGFzcyBBY3JvYmF0NyBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFjcm9iYXQ3IiwhMCk7dGhpcy5keW5hbWljUmVuZGVyPW51bGx9fWNsYXNzIEFEQkVfSlNDb25zb2xlIGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiQURCRV9KU0NvbnNvbGUiLFsiZGVsZWdhdGUiLCJFbmFibGUiLCJEaXNhYmxlIl0pfX1jbGFzcyBBREJFX0pTRGVidWdnZXIgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJBREJFX0pTRGVidWdnZXIiLFsiZGVsZWdhdGUiLCJFbmFibGUiLCJEaXNhYmxlIl0pfX1jbGFzcyBBZGRTaWxlbnRQcmludCBleHRlbmRzIGkuT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiYWRkU2lsZW50UHJpbnQiKX19Y2xhc3MgQWRkVmlld2VyUHJlZmVyZW5jZXMgZXh0ZW5kcyBpLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFkZFZpZXdlclByZWZlcmVuY2VzIil9fWNsYXNzIEFkanVzdERhdGEgZXh0ZW5kcyBpLk9wdGlvbjEwe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFkanVzdERhdGEiKX19Y2xhc3MgQWRvYmVFeHRlbnNpb25MZXZlbCBleHRlbmRzIGkuSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhZG9iZUV4dGVuc2lvbkxldmVsIiwwLChlPT5lPj0xJiZlPD04KSl9fWNsYXNzIEFnZW50IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiYWdlbnQiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5jb21tb249bmV3IGkuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEFsd2F5c0VtYmVkIGV4dGVuZHMgaS5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFsd2F5c0VtYmVkIil9fWNsYXNzIEFtZCBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFtZCIpfX1jbGFzcyBBcmVhIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiYXJlYSIpO3RoaXMubGV2ZWw9KDAsbi5nZXRJbnRlZ2VyKSh7ZGF0YTplLmxldmVsLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTEmJmU8PTN9KTt0aGlzLm5hbWU9KDAsbi5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbIiIsImJhcmNvZGUiLCJjb3JlaW5pdCIsImRldmljZURyaXZlciIsImZvbnQiLCJnZW5lcmFsIiwibGF5b3V0IiwibWVyZ2UiLCJzY3JpcHQiLCJzaWduYXR1cmUiLCJzb3VyY2VTZXQiLCJ0ZW1wbGF0ZUNhY2hlIl0pfX1jbGFzcyBBdHRyaWJ1dGVzIGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiYXR0cmlidXRlcyIsWyJwcmVzZXJ2ZSIsImRlbGVnYXRlIiwiaWdub3JlIl0pfX1jbGFzcyBBdXRvU2F2ZSBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImF1dG9TYXZlIixbImRpc2FibGVkIiwiZW5hYmxlZCJdKX19Y2xhc3MgQmFzZSBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImJhc2UiKX19Y2xhc3MgQmF0Y2hPdXRwdXQgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJiYXRjaE91dHB1dCIpO3RoaXMuZm9ybWF0PSgwLG4uZ2V0U3RyaW5nT3B0aW9uKShlLmZvcm1hdCxbIm5vbmUiLCJjb25jYXQiLCJ6aXAiLCJ6aXBDb21wcmVzcyJdKX19Y2xhc3MgQmVoYXZpb3JPdmVycmlkZSBleHRlbmRzIGkuQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJiZWhhdmlvck92ZXJyaWRlIil9W2kuJGZpbmFsaXplXSgpe3RoaXNbaS4kY29udGVudF09bmV3IE1hcCh0aGlzW2kuJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5lLmluY2x1ZGVzKCI6IikpKS5tYXAoKGU9PmUuc3BsaXQoIjoiLDIpKSkpfX1jbGFzcyBDYWNoZSBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNhY2hlIiwhMCk7dGhpcy50ZW1wbGF0ZUNhY2hlPW51bGx9fWNsYXNzIENoYW5nZSBleHRlbmRzIGkuT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiY2hhbmdlIil9fWNsYXNzIENvbW1vbiBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvbW1vbiIsITApO3RoaXMuZGF0YT1udWxsO3RoaXMubG9jYWxlPW51bGw7dGhpcy5sb2NhbGVTZXQ9bnVsbDt0aGlzLm1lc3NhZ2luZz1udWxsO3RoaXMuc3VwcHJlc3NCYW5uZXI9bnVsbDt0aGlzLnRlbXBsYXRlPW51bGw7dGhpcy52YWxpZGF0aW9uTWVzc2FnaW5nPW51bGw7dGhpcy52ZXJzaW9uQ29udHJvbD1udWxsO3RoaXMubG9nPW5ldyBpLlhGQU9iamVjdEFycmF5fX1jbGFzcyBDb21wcmVzcyBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvbXByZXNzIik7dGhpcy5zY29wZT0oMCxuLmdldFN0cmluZ09wdGlvbikoZS5zY29wZSxbImltYWdlT25seSIsImRvY3VtZW50Il0pfX1jbGFzcyBDb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUgZXh0ZW5kcyBpLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvbXByZXNzTG9naWNhbFN0cnVjdHVyZSIpfX1jbGFzcyBDb21wcmVzc09iamVjdFN0cmVhbSBleHRlbmRzIGkuT3B0aW9uMTB7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiY29tcHJlc3NPYmplY3RTdHJlYW0iKX19Y2xhc3MgQ29tcHJlc3Npb24gZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjb21wcmVzc2lvbiIsITApO3RoaXMuY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlPW51bGw7dGhpcy5jb21wcmVzc09iamVjdFN0cmVhbT1udWxsO3RoaXMubGV2ZWw9bnVsbDt0aGlzLnR5cGU9bnVsbH19Y2xhc3MgQ29uZmlnIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiY29uZmlnIiwhMCk7dGhpcy5hY3JvYmF0PW51bGw7dGhpcy5wcmVzZW50PW51bGw7dGhpcy50cmFjZT1udWxsO3RoaXMuYWdlbnQ9bmV3IGkuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIENvbmZvcm1hbmNlIGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiY29uZm9ybWFuY2UiLFsiQSIsIkIiXSl9fWNsYXNzIENvbnRlbnRDb3B5IGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjb250ZW50Q29weSIpfX1jbGFzcyBDb3BpZXMgZXh0ZW5kcyBpLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiY29waWVzIiwxLChlPT5lPj0xKSl9fWNsYXNzIENyZWF0b3IgZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjcmVhdG9yIil9fWNsYXNzIEN1cnJlbnRQYWdlIGV4dGVuZHMgaS5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImN1cnJlbnRQYWdlIiwwLChlPT5lPj0wKSl9fWNsYXNzIERhdGEgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJkYXRhIiwhMCk7dGhpcy5hZGp1c3REYXRhPW51bGw7dGhpcy5hdHRyaWJ1dGVzPW51bGw7dGhpcy5pbmNyZW1lbnRhbExvYWQ9bnVsbDt0aGlzLm91dHB1dFhTTD1udWxsO3RoaXMucmFuZ2U9bnVsbDt0aGlzLnJlY29yZD1udWxsO3RoaXMuc3RhcnROb2RlPW51bGw7dGhpcy51cmk9bnVsbDt0aGlzLndpbmRvdz1udWxsO3RoaXMueHNsPW51bGw7dGhpcy5leGNsdWRlTlM9bmV3IGkuWEZBT2JqZWN0QXJyYXk7dGhpcy50cmFuc2Zvcm09bmV3IGkuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIERlYnVnIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZGVidWciLCEwKTt0aGlzLnVyaT1udWxsfX1jbGFzcyBEZWZhdWx0VHlwZWZhY2UgZXh0ZW5kcyBpLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZGVmYXVsdFR5cGVmYWNlIik7dGhpcy53cml0aW5nU2NyaXB0PSgwLG4uZ2V0U3RyaW5nT3B0aW9uKShlLndyaXRpbmdTY3JpcHQsWyIqIiwiQXJhYmljIiwiQ3lyaWxsaWMiLCJFYXN0RXVyb3BlYW5Sb21hbiIsIkdyZWVrIiwiSGVicmV3IiwiSmFwYW5lc2UiLCJLb3JlYW4iLCJSb21hbiIsIlNpbXBsaWZpZWRDaGluZXNlIiwiVGhhaSIsIlRyYWRpdGlvbmFsQ2hpbmVzZSIsIlZpZXRuYW1lc2UiXSl9fWNsYXNzIERlc3RpbmF0aW9uIGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZGVzdGluYXRpb24iLFsicGRmIiwicGNsIiwicHMiLCJ3ZWJDbGllbnQiLCJ6cGwiXSl9fWNsYXNzIERvY3VtZW50QXNzZW1ibHkgZXh0ZW5kcyBpLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRvY3VtZW50QXNzZW1ibHkiKX19Y2xhc3MgRHJpdmVyIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZHJpdmVyIiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBEdXBsZXhPcHRpb24gZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJkdXBsZXhPcHRpb24iLFsic2ltcGxleCIsImR1cGxleEZsaXBMb25nRWRnZSIsImR1cGxleEZsaXBTaG9ydEVkZ2UiXSl9fWNsYXNzIER5bmFtaWNSZW5kZXIgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJkeW5hbWljUmVuZGVyIixbImZvcmJpZGRlbiIsInJlcXVpcmVkIl0pfX1jbGFzcyBFbWJlZCBleHRlbmRzIGkuT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZW1iZWQiKX19Y2xhc3MgRW5jcnlwdCBleHRlbmRzIGkuT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZW5jcnlwdCIpfX1jbGFzcyBFbmNyeXB0aW9uIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZW5jcnlwdGlvbiIsITApO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZW5jcnlwdGlvbkxldmVsPW51bGw7dGhpcy5wZXJtaXNzaW9ucz1udWxsfX1jbGFzcyBFbmNyeXB0aW9uTGV2ZWwgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJlbmNyeXB0aW9uTGV2ZWwiLFsiNDBiaXQiLCIxMjhiaXQiXSl9fWNsYXNzIEVuZm9yY2UgZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJlbmZvcmNlIil9fWNsYXNzIEVxdWF0ZSBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImVxdWF0ZSIpO3RoaXMuZm9yY2U9KDAsbi5nZXRJbnRlZ2VyKSh7ZGF0YTplLmZvcmNlLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PjA9PT1lfSk7dGhpcy5mcm9tPWUuZnJvbXx8IiI7dGhpcy50bz1lLnRvfHwiIn19Y2xhc3MgRXF1YXRlUmFuZ2UgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJlcXVhdGVSYW5nZSIpO3RoaXMuZnJvbT1lLmZyb218fCIiO3RoaXMudG89ZS50b3x8IiI7dGhpcy5fdW5pY29kZVJhbmdlPWUudW5pY29kZVJhbmdlfHwiIn1nZXQgdW5pY29kZVJhbmdlKCl7Y29uc3QgZT1bXSx0PS9VXCsoWzAtOWEtZkEtRl0rKS8sYT10aGlzLl91bmljb2RlUmFuZ2U7Zm9yKGxldCByIG9mIGEuc3BsaXQoIiwiKS5tYXAoKGU9PmUudHJpbSgpKSkuZmlsdGVyKChlPT4hIWUpKSl7cj1yLnNwbGl0KCItIiwyKS5tYXAoKGU9Pntjb25zdCBhPWUubWF0Y2godCk7cmV0dXJuIGE/cGFyc2VJbnQoYVsxXSwxNik6MH0pKTsxPT09ci5sZW5ndGgmJnIucHVzaChyWzBdKTtlLnB1c2gocil9cmV0dXJuKDAscy5zaGFkb3cpKHRoaXMsInVuaWNvZGVSYW5nZSIsZSl9fWNsYXNzIEV4Y2x1ZGUgZXh0ZW5kcyBpLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZXhjbHVkZSIpfVtpLiRmaW5hbGl6ZV0oKXt0aGlzW2kuJGNvbnRlbnRdPXRoaXNbaS4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoKGU9PmUmJlsiY2FsY3VsYXRlIiwiY2xvc2UiLCJlbnRlciIsImV4aXQiLCJpbml0aWFsaXplIiwicmVhZHkiLCJ2YWxpZGF0ZSJdLmluY2x1ZGVzKGUpKSl9fWNsYXNzIEV4Y2x1ZGVOUyBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImV4Y2x1ZGVOUyIpfX1jbGFzcyBGbGlwTGFiZWwgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJmbGlwTGFiZWwiLFsidXNlUHJpbnRlclNldHRpbmciLCJvbiIsIm9mZiJdKX19Y2xhc3MgRm9udEluZm8gZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJmb250SW5mbyIsITApO3RoaXMuZW1iZWQ9bnVsbDt0aGlzLm1hcD1udWxsO3RoaXMuc3Vic2V0QmVsb3c9bnVsbDt0aGlzLmFsd2F5c0VtYmVkPW5ldyBpLlhGQU9iamVjdEFycmF5O3RoaXMuZGVmYXVsdFR5cGVmYWNlPW5ldyBpLlhGQU9iamVjdEFycmF5O3RoaXMubmV2ZXJFbWJlZD1uZXcgaS5YRkFPYmplY3RBcnJheX19Y2xhc3MgRm9ybUZpZWxkRmlsbGluZyBleHRlbmRzIGkuT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZm9ybUZpZWxkRmlsbGluZyIpfX1jbGFzcyBHcm91cFBhcmVudCBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImdyb3VwUGFyZW50Iil9fWNsYXNzIElmRW1wdHkgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJpZkVtcHR5IixbImRhdGFWYWx1ZSIsImRhdGFHcm91cCIsImlnbm9yZSIsInJlbW92ZSJdKX19Y2xhc3MgSW5jbHVkZVhEUENvbnRlbnQgZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJpbmNsdWRlWERQQ29udGVudCIpfX1jbGFzcyBJbmNyZW1lbnRhbExvYWQgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJpbmNyZW1lbnRhbExvYWQiLFsibm9uZSIsImZvcndhcmRPbmx5Il0pfX1jbGFzcyBJbmNyZW1lbnRhbE1lcmdlIGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJpbmNyZW1lbnRhbE1lcmdlIil9fWNsYXNzIEludGVyYWN0aXZlIGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJpbnRlcmFjdGl2ZSIpfX1jbGFzcyBKb2cgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJqb2ciLFsidXNlUHJpbnRlclNldHRpbmciLCJub25lIiwicGFnZVNldCJdKX19Y2xhc3MgTGFiZWxQcmludGVyIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibGFiZWxQcmludGVyIiwhMCk7dGhpcy5uYW1lPSgwLG4uZ2V0U3RyaW5nT3B0aW9uKShlLm5hbWUsWyJ6cGwiLCJkcGwiLCJpcGwiLCJ0Y3BsIl0pO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZsaXBMYWJlbD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBMYXlvdXQgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJsYXlvdXQiLFsicGFnaW5hdGUiLCJwYW5lbCJdKX19Y2xhc3MgTGV2ZWwgZXh0ZW5kcyBpLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibGV2ZWwiLDAsKGU9PmU+MCkpfX1jbGFzcyBMaW5lYXJpemVkIGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJsaW5lYXJpemVkIil9fWNsYXNzIExvY2FsZSBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImxvY2FsZSIpfX1jbGFzcyBMb2NhbGVTZXQgZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJsb2NhbGVTZXQiKX19Y2xhc3MgTG9nIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibG9nIiwhMCk7dGhpcy5tb2RlPW51bGw7dGhpcy50aHJlc2hvbGQ9bnVsbDt0aGlzLnRvPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgTWFwRWxlbWVudCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm1hcCIsITApO3RoaXMuZXF1YXRlPW5ldyBpLlhGQU9iamVjdEFycmF5O3RoaXMuZXF1YXRlUmFuZ2U9bmV3IGkuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1lZGl1bUluZm8gZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJtZWRpdW1JbmZvIiwhMCk7dGhpcy5tYXA9bnVsbH19Y2xhc3MgTWVzc2FnZSBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm1lc3NhZ2UiLCEwKTt0aGlzLm1zZ0lkPW51bGw7dGhpcy5zZXZlcml0eT1udWxsfX1jbGFzcyBNZXNzYWdpbmcgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJtZXNzYWdpbmciLCEwKTt0aGlzLm1lc3NhZ2U9bmV3IGkuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1vZGUgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJtb2RlIixbImFwcGVuZCIsIm92ZXJ3cml0ZSJdKX19Y2xhc3MgTW9kaWZ5QW5ub3RzIGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJtb2RpZnlBbm5vdHMiKX19Y2xhc3MgTXNnSWQgZXh0ZW5kcyBpLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibXNnSWQiLDEsKGU9PmU+PTEpKX19Y2xhc3MgTmFtZUF0dHIgZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJuYW1lQXR0ciIpfX1jbGFzcyBOZXZlckVtYmVkIGV4dGVuZHMgaS5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm5ldmVyRW1iZWQiKX19Y2xhc3MgTnVtYmVyT2ZDb3BpZXMgZXh0ZW5kcyBpLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibnVtYmVyT2ZDb3BpZXMiLG51bGwsKGU9PmU+PTImJmU8PTUpKX19Y2xhc3MgT3BlbkFjdGlvbiBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm9wZW5BY3Rpb24iLCEwKTt0aGlzLmRlc3RpbmF0aW9uPW51bGx9fWNsYXNzIE91dHB1dCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm91dHB1dCIsITApO3RoaXMudG89bnVsbDt0aGlzLnR5cGU9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBPdXRwdXRCaW4gZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJvdXRwdXRCaW4iKX19Y2xhc3MgT3V0cHV0WFNMIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywib3V0cHV0WFNMIiwhMCk7dGhpcy51cmk9bnVsbH19Y2xhc3MgT3ZlcnByaW50IGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywib3ZlcnByaW50IixbIm5vbmUiLCJib3RoIiwiZHJhdyIsImZpZWxkIl0pfX1jbGFzcyBQYWNrZXRzIGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGFja2V0cyIpfVtpLiRmaW5hbGl6ZV0oKXsiKiIhPT10aGlzW2kuJGNvbnRlbnRdJiYodGhpc1tpLiRjb250ZW50XT10aGlzW2kuJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5bImNvbmZpZyIsImRhdGFzZXRzIiwidGVtcGxhdGUiLCJ4ZmRmIiwieHNsdCJdLmluY2x1ZGVzKGUpKSkpfX1jbGFzcyBQYWdlT2Zmc2V0IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGFnZU9mZnNldCIpO3RoaXMueD0oMCxuLmdldEludGVnZXIpKHtkYXRhOmUueCxkZWZhdWx0VmFsdWU6InVzZVhEQ1NldHRpbmciLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy55PSgwLG4uZ2V0SW50ZWdlcikoe2RhdGE6ZS55LGRlZmF1bHRWYWx1ZToidXNlWERDU2V0dGluZyIsdmFsaWRhdGU6ZT0+ITB9KX19Y2xhc3MgUGFnZVJhbmdlIGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGFnZVJhbmdlIil9W2kuJGZpbmFsaXplXSgpe2NvbnN0IGU9dGhpc1tpLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcCgoZT0+cGFyc2VJbnQoZSwxMCkpKSx0PVtdO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErPTIpdC5wdXNoKGUuc2xpY2UoYSxhKzIpKTt0aGlzW2kuJGNvbnRlbnRdPXR9fWNsYXNzIFBhZ2luYXRpb24gZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwYWdpbmF0aW9uIixbInNpbXBsZXgiLCJkdXBsZXhTaG9ydEVkZ2UiLCJkdXBsZXhMb25nRWRnZSJdKX19Y2xhc3MgUGFnaW5hdGlvbk92ZXJyaWRlIGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGFnaW5hdGlvbk92ZXJyaWRlIixbIm5vbmUiLCJmb3JjZUR1cGxleCIsImZvcmNlRHVwbGV4TG9uZ0VkZ2UiLCJmb3JjZUR1cGxleFNob3J0RWRnZSIsImZvcmNlU2ltcGxleCJdKX19Y2xhc3MgUGFydCBleHRlbmRzIGkuSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwYXJ0IiwxLChlPT4hMSkpfX1jbGFzcyBQY2wgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwY2wiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMuam9nPW51bGw7dGhpcy5tZWRpdW1JbmZvPW51bGw7dGhpcy5vdXRwdXRCaW49bnVsbDt0aGlzLnBhZ2VPZmZzZXQ9bnVsbDt0aGlzLnN0YXBsZT1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFBkZiBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBkZiIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYWRvYmVFeHRlbnNpb25MZXZlbD1udWxsO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmNvbXByZXNzaW9uPW51bGw7dGhpcy5jcmVhdG9yPW51bGw7dGhpcy5lbmNyeXB0aW9uPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMuaW50ZXJhY3RpdmU9bnVsbDt0aGlzLmxpbmVhcml6ZWQ9bnVsbDt0aGlzLm9wZW5BY3Rpb249bnVsbDt0aGlzLnBkZmE9bnVsbDt0aGlzLnByb2R1Y2VyPW51bGw7dGhpcy5yZW5kZXJQb2xpY3k9bnVsbDt0aGlzLnNjcmlwdE1vZGVsPW51bGw7dGhpcy5zaWxlbnRQcmludD1udWxsO3RoaXMuc3VibWl0Rm9ybWF0PW51bGw7dGhpcy50YWdnZWQ9bnVsbDt0aGlzLnZlcnNpb249bnVsbDt0aGlzLnZpZXdlclByZWZlcmVuY2VzPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUGRmYSBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBkZmEiLCEwKTt0aGlzLmFtZD1udWxsO3RoaXMuY29uZm9ybWFuY2U9bnVsbDt0aGlzLmluY2x1ZGVYRFBDb250ZW50PW51bGw7dGhpcy5wYXJ0PW51bGx9fWNsYXNzIFBlcm1pc3Npb25zIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGVybWlzc2lvbnMiLCEwKTt0aGlzLmFjY2Vzc2libGVDb250ZW50PW51bGw7dGhpcy5jaGFuZ2U9bnVsbDt0aGlzLmNvbnRlbnRDb3B5PW51bGw7dGhpcy5kb2N1bWVudEFzc2VtYmx5PW51bGw7dGhpcy5mb3JtRmllbGRGaWxsaW5nPW51bGw7dGhpcy5tb2RpZnlBbm5vdHM9bnVsbDt0aGlzLnBsYWludGV4dE1ldGFkYXRhPW51bGw7dGhpcy5wcmludD1udWxsO3RoaXMucHJpbnRIaWdoUXVhbGl0eT1udWxsfX1jbGFzcyBQaWNrVHJheUJ5UERGU2l6ZSBleHRlbmRzIGkuT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGlja1RyYXlCeVBERlNpemUiKX19Y2xhc3MgUGljdHVyZSBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBpY3R1cmUiKX19Y2xhc3MgUGxhaW50ZXh0TWV0YWRhdGEgZXh0ZW5kcyBpLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBsYWludGV4dE1ldGFkYXRhIil9fWNsYXNzIFByZXNlbmNlIGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicHJlc2VuY2UiLFsicHJlc2VydmUiLCJkaXNzb2x2ZSIsImRpc3NvbHZlU3RydWN0dXJlIiwiaWdub3JlIiwicmVtb3ZlIl0pfX1jbGFzcyBQcmVzZW50IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicHJlc2VudCIsITApO3RoaXMuYmVoYXZpb3JPdmVycmlkZT1udWxsO3RoaXMuY2FjaGU9bnVsbDt0aGlzLmNvbW1vbj1udWxsO3RoaXMuY29waWVzPW51bGw7dGhpcy5kZXN0aW5hdGlvbj1udWxsO3RoaXMuaW5jcmVtZW50YWxNZXJnZT1udWxsO3RoaXMubGF5b3V0PW51bGw7dGhpcy5vdXRwdXQ9bnVsbDt0aGlzLm92ZXJwcmludD1udWxsO3RoaXMucGFnaW5hdGlvbj1udWxsO3RoaXMucGFnaW5hdGlvbk92ZXJyaWRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy54ZHA9bnVsbDt0aGlzLmRyaXZlcj1uZXcgaS5YRkFPYmplY3RBcnJheTt0aGlzLmxhYmVsUHJpbnRlcj1uZXcgaS5YRkFPYmplY3RBcnJheTt0aGlzLnBjbD1uZXcgaS5YRkFPYmplY3RBcnJheTt0aGlzLnBkZj1uZXcgaS5YRkFPYmplY3RBcnJheTt0aGlzLnBzPW5ldyBpLlhGQU9iamVjdEFycmF5O3RoaXMuc3VibWl0VXJsPW5ldyBpLlhGQU9iamVjdEFycmF5O3RoaXMud2ViQ2xpZW50PW5ldyBpLlhGQU9iamVjdEFycmF5O3RoaXMuenBsPW5ldyBpLlhGQU9iamVjdEFycmF5fX1jbGFzcyBQcmludCBleHRlbmRzIGkuT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicHJpbnQiKX19Y2xhc3MgUHJpbnRIaWdoUXVhbGl0eSBleHRlbmRzIGkuT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicHJpbnRIaWdoUXVhbGl0eSIpfX1jbGFzcyBQcmludFNjYWxpbmcgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwcmludFNjYWxpbmciLFsiYXBwZGVmYXVsdCIsIm5vU2NhbGluZyJdKX19Y2xhc3MgUHJpbnRlck5hbWUgZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwcmludGVyTmFtZSIpfX1jbGFzcyBQcm9kdWNlciBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByb2R1Y2VyIil9fWNsYXNzIFBzIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicHMiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMuam9nPW51bGw7dGhpcy5tZWRpdW1JbmZvPW51bGw7dGhpcy5vdXRwdXRCaW49bnVsbDt0aGlzLnN0YXBsZT1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFJhbmdlIGV4dGVuZHMgaS5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInJhbmdlIil9W2kuJGZpbmFsaXplXSgpe3RoaXNbaS4kY29udGVudF09dGhpc1tpLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKixccyovLDIpLm1hcCgoZT0+ZS5zcGxpdCgiLSIpLm1hcCgoZT0+cGFyc2VJbnQoZS50cmltKCksMTApKSkpKS5maWx0ZXIoKGU9PmUuZXZlcnkoKGU9PiFpc05hTihlKSkpKSkubWFwKChlPT57MT09PWUubGVuZ3RoJiZlLnB1c2goZVswXSk7cmV0dXJuIGV9KSl9fWNsYXNzIFJlY29yZCBleHRlbmRzIGkuQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJyZWNvcmQiKX1baS4kZmluYWxpemVdKCl7dGhpc1tpLiRjb250ZW50XT10aGlzW2kuJGNvbnRlbnRdLnRyaW0oKTtjb25zdCBlPXBhcnNlSW50KHRoaXNbaS4kY29udGVudF0sMTApOyFpc05hTihlKSYmZT49MCYmKHRoaXNbaS4kY29udGVudF09ZSl9fWNsYXNzIFJlbGV2YW50IGV4dGVuZHMgaS5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInJlbGV2YW50Iil9W2kuJGZpbmFsaXplXSgpe3RoaXNbaS4kY29udGVudF09dGhpc1tpLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKy8pfX1jbGFzcyBSZW5hbWUgZXh0ZW5kcyBpLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicmVuYW1lIil9W2kuJGZpbmFsaXplXSgpe3RoaXNbaS4kY29udGVudF09dGhpc1tpLiRjb250ZW50XS50cmltKCk7KHRoaXNbaS4kY29udGVudF0udG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCJ4bWwiKXx8bmV3IFJlZ0V4cCgiW1xccHtMfV9dW1xccHtMfVxcZC5fXFxwe019LV0qIiwidSIpLnRlc3QodGhpc1tpLiRjb250ZW50XSkpJiYoMCxzLndhcm4pKCJYRkEgLSBSZW5hbWU6IGludmFsaWQgWEZBIG5hbWUiKX19Y2xhc3MgUmVuZGVyUG9saWN5IGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicmVuZGVyUG9saWN5IixbInNlcnZlciIsImNsaWVudCJdKX19Y2xhc3MgUnVuU2NyaXB0cyBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInJ1blNjcmlwdHMiLFsiYm90aCIsImNsaWVudCIsIm5vbmUiLCJzZXJ2ZXIiXSl9fWNsYXNzIFNjcmlwdCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInNjcmlwdCIsITApO3RoaXMuY3VycmVudFBhZ2U9bnVsbDt0aGlzLmV4Y2x1ZGU9bnVsbDt0aGlzLnJ1blNjcmlwdHM9bnVsbH19Y2xhc3MgU2NyaXB0TW9kZWwgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJzY3JpcHRNb2RlbCIsWyJYRkEiLCJub25lIl0pfX1jbGFzcyBTZXZlcml0eSBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInNldmVyaXR5IixbImlnbm9yZSIsImVycm9yIiwiaW5mb3JtYXRpb24iLCJ0cmFjZSIsIndhcm5pbmciXSl9fWNsYXNzIFNpbGVudFByaW50IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic2lsZW50UHJpbnQiLCEwKTt0aGlzLmFkZFNpbGVudFByaW50PW51bGw7dGhpcy5wcmludGVyTmFtZT1udWxsfX1jbGFzcyBTdGFwbGUgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJzdGFwbGUiKTt0aGlzLm1vZGU9KDAsbi5nZXRTdHJpbmdPcHRpb24pKGUubW9kZSxbInVzZVByaW50ZXJTZXR0aW5nIiwib24iLCJvZmYiXSl9fWNsYXNzIFN0YXJ0Tm9kZSBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInN0YXJ0Tm9kZSIpfX1jbGFzcyBTdGFydFBhZ2UgZXh0ZW5kcyBpLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3RhcnRQYWdlIiwwLChlPT4hMCkpfX1jbGFzcyBTdWJtaXRGb3JtYXQgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJzdWJtaXRGb3JtYXQiLFsiaHRtbCIsImRlbGVnYXRlIiwiZmRmIiwieG1sIiwicGRmIl0pfX1jbGFzcyBTdWJtaXRVcmwgZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJzdWJtaXRVcmwiKX19Y2xhc3MgU3Vic2V0QmVsb3cgZXh0ZW5kcyBpLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3Vic2V0QmVsb3ciLDEwMCwoZT0+ZT49MCYmZTw9MTAwKSl9fWNsYXNzIFN1cHByZXNzQmFubmVyIGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJzdXBwcmVzc0Jhbm5lciIpfX1jbGFzcyBUYWdnZWQgZXh0ZW5kcyBpLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInRhZ2dlZCIpfX1jbGFzcyBUZW1wbGF0ZSBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInRlbXBsYXRlIiwhMCk7dGhpcy5iYXNlPW51bGw7dGhpcy5yZWxldmFudD1udWxsO3RoaXMuc3RhcnRQYWdlPW51bGw7dGhpcy51cmk9bnVsbDt0aGlzLnhzbD1udWxsfX1jbGFzcyBUaHJlc2hvbGQgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ0aHJlc2hvbGQiLFsidHJhY2UiLCJlcnJvciIsImluZm9ybWF0aW9uIiwid2FybmluZyJdKX19Y2xhc3MgVG8gZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ0byIsWyJudWxsIiwibWVtb3J5Iiwic3RkZXJyIiwic3Rkb3V0Iiwic3lzdGVtIiwidXJpIl0pfX1jbGFzcyBUZW1wbGF0ZUNhY2hlIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidGVtcGxhdGVDYWNoZSIpO3RoaXMubWF4RW50cmllcz0oMCxuLmdldEludGVnZXIpKHtkYXRhOmUubWF4RW50cmllcyxkZWZhdWx0VmFsdWU6NSx2YWxpZGF0ZTplPT5lPj0wfSl9fWNsYXNzIFRyYWNlIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidHJhY2UiLCEwKTt0aGlzLmFyZWE9bmV3IGkuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFRyYW5zZm9ybSBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInRyYW5zZm9ybSIsITApO3RoaXMuZ3JvdXBQYXJlbnQ9bnVsbDt0aGlzLmlmRW1wdHk9bnVsbDt0aGlzLm5hbWVBdHRyPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5wcmVzZW5jZT1udWxsO3RoaXMucmVuYW1lPW51bGw7dGhpcy53aGl0ZXNwYWNlPW51bGx9fWNsYXNzIFR5cGUgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ0eXBlIixbIm5vbmUiLCJhc2NpaTg1IiwiYXNjaWlIZXgiLCJjY2l0dGZheCIsImZsYXRlIiwibHp3IiwicnVuTGVuZ3RoIiwibmF0aXZlIiwieGRwIiwibWVyZ2VkWERQIl0pfX1jbGFzcyBVcmkgZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ1cmkiKX19Y2xhc3MgVmFsaWRhdGUgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ2YWxpZGF0ZSIsWyJwcmVTdWJtaXQiLCJwcmVQcmludCIsInByZUV4ZWN1dGUiLCJwcmVTYXZlIl0pfX1jbGFzcyBWYWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyBleHRlbmRzIGkuQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ2YWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyIpfVtpLiRmaW5hbGl6ZV0oKXt0aGlzW2kuJGNvbnRlbnRdPXRoaXNbaS4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoKGU9PlsiZG9jUmVhZHkiLCJwb3N0U2lnbiJdLmluY2x1ZGVzKGUpKSl9fWNsYXNzIFZhbGlkYXRpb25NZXNzYWdpbmcgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ2YWxpZGF0aW9uTWVzc2FnaW5nIixbImFsbE1lc3NhZ2VzSW5kaXZpZHVhbGx5IiwiYWxsTWVzc2FnZXNUb2dldGhlciIsImZpcnN0TWVzc2FnZU9ubHkiLCJub01lc3NhZ2VzIl0pfX1jbGFzcyBWZXJzaW9uIGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidmVyc2lvbiIsWyIxLjciLCIxLjYiLCIxLjUiLCIxLjQiLCIxLjMiLCIxLjIiXSl9fWNsYXNzIFZlcnNpb25Db250cm9sIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiVmVyc2lvbkNvbnRyb2wiKTt0aGlzLm91dHB1dEJlbG93PSgwLG4uZ2V0U3RyaW5nT3B0aW9uKShlLm91dHB1dEJlbG93LFsid2FybiIsImVycm9yIiwidXBkYXRlIl0pO3RoaXMuc291cmNlQWJvdmU9KDAsbi5nZXRTdHJpbmdPcHRpb24pKGUuc291cmNlQWJvdmUsWyJ3YXJuIiwiZXJyb3IiXSk7dGhpcy5zb3VyY2VCZWxvdz0oMCxuLmdldFN0cmluZ09wdGlvbikoZS5zb3VyY2VCZWxvdyxbInVwZGF0ZSIsIm1haW50YWluIl0pfX1jbGFzcyBWaWV3ZXJQcmVmZXJlbmNlcyBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInZpZXdlclByZWZlcmVuY2VzIiwhMCk7dGhpcy5BREJFX0pTQ29uc29sZT1udWxsO3RoaXMuQURCRV9KU0RlYnVnZ2VyPW51bGw7dGhpcy5hZGRWaWV3ZXJQcmVmZXJlbmNlcz1udWxsO3RoaXMuZHVwbGV4T3B0aW9uPW51bGw7dGhpcy5lbmZvcmNlPW51bGw7dGhpcy5udW1iZXJPZkNvcGllcz1udWxsO3RoaXMucGFnZVJhbmdlPW51bGw7dGhpcy5waWNrVHJheUJ5UERGU2l6ZT1udWxsO3RoaXMucHJpbnRTY2FsaW5nPW51bGx9fWNsYXNzIFdlYkNsaWVudCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIndlYkNsaWVudCIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgV2hpdGVzcGFjZSBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIndoaXRlc3BhY2UiLFsicHJlc2VydmUiLCJsdHJpbSIsIm5vcm1hbGl6ZSIsInJ0cmltIiwidHJpbSJdKX19Y2xhc3MgV2luZG93IGV4dGVuZHMgaS5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIndpbmRvdyIpfVtpLiRmaW5hbGl6ZV0oKXtjb25zdCBlPXRoaXNbaS4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccyosXHMqLywyKS5tYXAoKGU9PnBhcnNlSW50KGUsMTApKSk7aWYoZS5zb21lKChlPT5pc05hTihlKSkpKXRoaXNbaS4kY29udGVudF09WzAsMF07ZWxzZXsxPT09ZS5sZW5ndGgmJmUucHVzaChlWzBdKTt0aGlzW2kuJGNvbnRlbnRdPWV9fX1jbGFzcyBYZGMgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ4ZGMiLCEwKTt0aGlzLnVyaT1uZXcgaS5YRkFPYmplY3RBcnJheTt0aGlzLnhzbD1uZXcgaS5YRkFPYmplY3RBcnJheX19Y2xhc3MgWGRwIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywieGRwIiwhMCk7dGhpcy5wYWNrZXRzPW51bGx9fWNsYXNzIFhzbCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInhzbCIsITApO3RoaXMuZGVidWc9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBacGwgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ6cGwiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZmxpcExhYmVsPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIENvbmZpZ05hbWVzcGFjZXtzdGF0aWNbci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoQ29uZmlnTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBDb25maWdOYW1lc3BhY2VbZV0odCl9c3RhdGljIGFjcm9iYXQoZSl7cmV0dXJuIG5ldyBBY3JvYmF0KGUpfXN0YXRpYyBhY3JvYmF0NyhlKXtyZXR1cm4gbmV3IEFjcm9iYXQ3KGUpfXN0YXRpYyBBREJFX0pTQ29uc29sZShlKXtyZXR1cm4gbmV3IEFEQkVfSlNDb25zb2xlKGUpfXN0YXRpYyBBREJFX0pTRGVidWdnZXIoZSl7cmV0dXJuIG5ldyBBREJFX0pTRGVidWdnZXIoZSl9c3RhdGljIGFkZFNpbGVudFByaW50KGUpe3JldHVybiBuZXcgQWRkU2lsZW50UHJpbnQoZSl9c3RhdGljIGFkZFZpZXdlclByZWZlcmVuY2VzKGUpe3JldHVybiBuZXcgQWRkVmlld2VyUHJlZmVyZW5jZXMoZSl9c3RhdGljIGFkanVzdERhdGEoZSl7cmV0dXJuIG5ldyBBZGp1c3REYXRhKGUpfXN0YXRpYyBhZG9iZUV4dGVuc2lvbkxldmVsKGUpe3JldHVybiBuZXcgQWRvYmVFeHRlbnNpb25MZXZlbChlKX1zdGF0aWMgYWdlbnQoZSl7cmV0dXJuIG5ldyBBZ2VudChlKX1zdGF0aWMgYWx3YXlzRW1iZWQoZSl7cmV0dXJuIG5ldyBBbHdheXNFbWJlZChlKX1zdGF0aWMgYW1kKGUpe3JldHVybiBuZXcgQW1kKGUpfXN0YXRpYyBhcmVhKGUpe3JldHVybiBuZXcgQXJlYShlKX1zdGF0aWMgYXR0cmlidXRlcyhlKXtyZXR1cm4gbmV3IEF0dHJpYnV0ZXMoZSl9c3RhdGljIGF1dG9TYXZlKGUpe3JldHVybiBuZXcgQXV0b1NhdmUoZSl9c3RhdGljIGJhc2UoZSl7cmV0dXJuIG5ldyBCYXNlKGUpfXN0YXRpYyBiYXRjaE91dHB1dChlKXtyZXR1cm4gbmV3IEJhdGNoT3V0cHV0KGUpfXN0YXRpYyBiZWhhdmlvck92ZXJyaWRlKGUpe3JldHVybiBuZXcgQmVoYXZpb3JPdmVycmlkZShlKX1zdGF0aWMgY2FjaGUoZSl7cmV0dXJuIG5ldyBDYWNoZShlKX1zdGF0aWMgY2hhbmdlKGUpe3JldHVybiBuZXcgQ2hhbmdlKGUpfXN0YXRpYyBjb21tb24oZSl7cmV0dXJuIG5ldyBDb21tb24oZSl9c3RhdGljIGNvbXByZXNzKGUpe3JldHVybiBuZXcgQ29tcHJlc3MoZSl9c3RhdGljIGNvbXByZXNzTG9naWNhbFN0cnVjdHVyZShlKXtyZXR1cm4gbmV3IENvbXByZXNzTG9naWNhbFN0cnVjdHVyZShlKX1zdGF0aWMgY29tcHJlc3NPYmplY3RTdHJlYW0oZSl7cmV0dXJuIG5ldyBDb21wcmVzc09iamVjdFN0cmVhbShlKX1zdGF0aWMgY29tcHJlc3Npb24oZSl7cmV0dXJuIG5ldyBDb21wcmVzc2lvbihlKX1zdGF0aWMgY29uZmlnKGUpe3JldHVybiBuZXcgQ29uZmlnKGUpfXN0YXRpYyBjb25mb3JtYW5jZShlKXtyZXR1cm4gbmV3IENvbmZvcm1hbmNlKGUpfXN0YXRpYyBjb250ZW50Q29weShlKXtyZXR1cm4gbmV3IENvbnRlbnRDb3B5KGUpfXN0YXRpYyBjb3BpZXMoZSl7cmV0dXJuIG5ldyBDb3BpZXMoZSl9c3RhdGljIGNyZWF0b3IoZSl7cmV0dXJuIG5ldyBDcmVhdG9yKGUpfXN0YXRpYyBjdXJyZW50UGFnZShlKXtyZXR1cm4gbmV3IEN1cnJlbnRQYWdlKGUpfXN0YXRpYyBkYXRhKGUpe3JldHVybiBuZXcgRGF0YShlKX1zdGF0aWMgZGVidWcoZSl7cmV0dXJuIG5ldyBEZWJ1ZyhlKX1zdGF0aWMgZGVmYXVsdFR5cGVmYWNlKGUpe3JldHVybiBuZXcgRGVmYXVsdFR5cGVmYWNlKGUpfXN0YXRpYyBkZXN0aW5hdGlvbihlKXtyZXR1cm4gbmV3IERlc3RpbmF0aW9uKGUpfXN0YXRpYyBkb2N1bWVudEFzc2VtYmx5KGUpe3JldHVybiBuZXcgRG9jdW1lbnRBc3NlbWJseShlKX1zdGF0aWMgZHJpdmVyKGUpe3JldHVybiBuZXcgRHJpdmVyKGUpfXN0YXRpYyBkdXBsZXhPcHRpb24oZSl7cmV0dXJuIG5ldyBEdXBsZXhPcHRpb24oZSl9c3RhdGljIGR5bmFtaWNSZW5kZXIoZSl7cmV0dXJuIG5ldyBEeW5hbWljUmVuZGVyKGUpfXN0YXRpYyBlbWJlZChlKXtyZXR1cm4gbmV3IEVtYmVkKGUpfXN0YXRpYyBlbmNyeXB0KGUpe3JldHVybiBuZXcgRW5jcnlwdChlKX1zdGF0aWMgZW5jcnlwdGlvbihlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb24oZSl9c3RhdGljIGVuY3J5cHRpb25MZXZlbChlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25MZXZlbChlKX1zdGF0aWMgZW5mb3JjZShlKXtyZXR1cm4gbmV3IEVuZm9yY2UoZSl9c3RhdGljIGVxdWF0ZShlKXtyZXR1cm4gbmV3IEVxdWF0ZShlKX1zdGF0aWMgZXF1YXRlUmFuZ2UoZSl7cmV0dXJuIG5ldyBFcXVhdGVSYW5nZShlKX1zdGF0aWMgZXhjbHVkZShlKXtyZXR1cm4gbmV3IEV4Y2x1ZGUoZSl9c3RhdGljIGV4Y2x1ZGVOUyhlKXtyZXR1cm4gbmV3IEV4Y2x1ZGVOUyhlKX1zdGF0aWMgZmxpcExhYmVsKGUpe3JldHVybiBuZXcgRmxpcExhYmVsKGUpfXN0YXRpYyBmb250SW5mbyhlKXtyZXR1cm4gbmV3IEZvbnRJbmZvKGUpfXN0YXRpYyBmb3JtRmllbGRGaWxsaW5nKGUpe3JldHVybiBuZXcgRm9ybUZpZWxkRmlsbGluZyhlKX1zdGF0aWMgZ3JvdXBQYXJlbnQoZSl7cmV0dXJuIG5ldyBHcm91cFBhcmVudChlKX1zdGF0aWMgaWZFbXB0eShlKXtyZXR1cm4gbmV3IElmRW1wdHkoZSl9c3RhdGljIGluY2x1ZGVYRFBDb250ZW50KGUpe3JldHVybiBuZXcgSW5jbHVkZVhEUENvbnRlbnQoZSl9c3RhdGljIGluY3JlbWVudGFsTG9hZChlKXtyZXR1cm4gbmV3IEluY3JlbWVudGFsTG9hZChlKX1zdGF0aWMgaW5jcmVtZW50YWxNZXJnZShlKXtyZXR1cm4gbmV3IEluY3JlbWVudGFsTWVyZ2UoZSl9c3RhdGljIGludGVyYWN0aXZlKGUpe3JldHVybiBuZXcgSW50ZXJhY3RpdmUoZSl9c3RhdGljIGpvZyhlKXtyZXR1cm4gbmV3IEpvZyhlKX1zdGF0aWMgbGFiZWxQcmludGVyKGUpe3JldHVybiBuZXcgTGFiZWxQcmludGVyKGUpfXN0YXRpYyBsYXlvdXQoZSl7cmV0dXJuIG5ldyBMYXlvdXQoZSl9c3RhdGljIGxldmVsKGUpe3JldHVybiBuZXcgTGV2ZWwoZSl9c3RhdGljIGxpbmVhcml6ZWQoZSl7cmV0dXJuIG5ldyBMaW5lYXJpemVkKGUpfXN0YXRpYyBsb2NhbGUoZSl7cmV0dXJuIG5ldyBMb2NhbGUoZSl9c3RhdGljIGxvY2FsZVNldChlKXtyZXR1cm4gbmV3IExvY2FsZVNldChlKX1zdGF0aWMgbG9nKGUpe3JldHVybiBuZXcgTG9nKGUpfXN0YXRpYyBtYXAoZSl7cmV0dXJuIG5ldyBNYXBFbGVtZW50KGUpfXN0YXRpYyBtZWRpdW1JbmZvKGUpe3JldHVybiBuZXcgTWVkaXVtSW5mbyhlKX1zdGF0aWMgbWVzc2FnZShlKXtyZXR1cm4gbmV3IE1lc3NhZ2UoZSl9c3RhdGljIG1lc3NhZ2luZyhlKXtyZXR1cm4gbmV3IE1lc3NhZ2luZyhlKX1zdGF0aWMgbW9kZShlKXtyZXR1cm4gbmV3IE1vZGUoZSl9c3RhdGljIG1vZGlmeUFubm90cyhlKXtyZXR1cm4gbmV3IE1vZGlmeUFubm90cyhlKX1zdGF0aWMgbXNnSWQoZSl7cmV0dXJuIG5ldyBNc2dJZChlKX1zdGF0aWMgbmFtZUF0dHIoZSl7cmV0dXJuIG5ldyBOYW1lQXR0cihlKX1zdGF0aWMgbmV2ZXJFbWJlZChlKXtyZXR1cm4gbmV3IE5ldmVyRW1iZWQoZSl9c3RhdGljIG51bWJlck9mQ29waWVzKGUpe3JldHVybiBuZXcgTnVtYmVyT2ZDb3BpZXMoZSl9c3RhdGljIG9wZW5BY3Rpb24oZSl7cmV0dXJuIG5ldyBPcGVuQWN0aW9uKGUpfXN0YXRpYyBvdXRwdXQoZSl7cmV0dXJuIG5ldyBPdXRwdXQoZSl9c3RhdGljIG91dHB1dEJpbihlKXtyZXR1cm4gbmV3IE91dHB1dEJpbihlKX1zdGF0aWMgb3V0cHV0WFNMKGUpe3JldHVybiBuZXcgT3V0cHV0WFNMKGUpfXN0YXRpYyBvdmVycHJpbnQoZSl7cmV0dXJuIG5ldyBPdmVycHJpbnQoZSl9c3RhdGljIHBhY2tldHMoZSl7cmV0dXJuIG5ldyBQYWNrZXRzKGUpfXN0YXRpYyBwYWdlT2Zmc2V0KGUpe3JldHVybiBuZXcgUGFnZU9mZnNldChlKX1zdGF0aWMgcGFnZVJhbmdlKGUpe3JldHVybiBuZXcgUGFnZVJhbmdlKGUpfXN0YXRpYyBwYWdpbmF0aW9uKGUpe3JldHVybiBuZXcgUGFnaW5hdGlvbihlKX1zdGF0aWMgcGFnaW5hdGlvbk92ZXJyaWRlKGUpe3JldHVybiBuZXcgUGFnaW5hdGlvbk92ZXJyaWRlKGUpfXN0YXRpYyBwYXJ0KGUpe3JldHVybiBuZXcgUGFydChlKX1zdGF0aWMgcGNsKGUpe3JldHVybiBuZXcgUGNsKGUpfXN0YXRpYyBwZGYoZSl7cmV0dXJuIG5ldyBQZGYoZSl9c3RhdGljIHBkZmEoZSl7cmV0dXJuIG5ldyBQZGZhKGUpfXN0YXRpYyBwZXJtaXNzaW9ucyhlKXtyZXR1cm4gbmV3IFBlcm1pc3Npb25zKGUpfXN0YXRpYyBwaWNrVHJheUJ5UERGU2l6ZShlKXtyZXR1cm4gbmV3IFBpY2tUcmF5QnlQREZTaXplKGUpfXN0YXRpYyBwaWN0dXJlKGUpe3JldHVybiBuZXcgUGljdHVyZShlKX1zdGF0aWMgcGxhaW50ZXh0TWV0YWRhdGEoZSl7cmV0dXJuIG5ldyBQbGFpbnRleHRNZXRhZGF0YShlKX1zdGF0aWMgcHJlc2VuY2UoZSl7cmV0dXJuIG5ldyBQcmVzZW5jZShlKX1zdGF0aWMgcHJlc2VudChlKXtyZXR1cm4gbmV3IFByZXNlbnQoZSl9c3RhdGljIHByaW50KGUpe3JldHVybiBuZXcgUHJpbnQoZSl9c3RhdGljIHByaW50SGlnaFF1YWxpdHkoZSl7cmV0dXJuIG5ldyBQcmludEhpZ2hRdWFsaXR5KGUpfXN0YXRpYyBwcmludFNjYWxpbmcoZSl7cmV0dXJuIG5ldyBQcmludFNjYWxpbmcoZSl9c3RhdGljIHByaW50ZXJOYW1lKGUpe3JldHVybiBuZXcgUHJpbnRlck5hbWUoZSl9c3RhdGljIHByb2R1Y2VyKGUpe3JldHVybiBuZXcgUHJvZHVjZXIoZSl9c3RhdGljIHBzKGUpe3JldHVybiBuZXcgUHMoZSl9c3RhdGljIHJhbmdlKGUpe3JldHVybiBuZXcgUmFuZ2UoZSl9c3RhdGljIHJlY29yZChlKXtyZXR1cm4gbmV3IFJlY29yZChlKX1zdGF0aWMgcmVsZXZhbnQoZSl7cmV0dXJuIG5ldyBSZWxldmFudChlKX1zdGF0aWMgcmVuYW1lKGUpe3JldHVybiBuZXcgUmVuYW1lKGUpfXN0YXRpYyByZW5kZXJQb2xpY3koZSl7cmV0dXJuIG5ldyBSZW5kZXJQb2xpY3koZSl9c3RhdGljIHJ1blNjcmlwdHMoZSl7cmV0dXJuIG5ldyBSdW5TY3JpcHRzKGUpfXN0YXRpYyBzY3JpcHQoZSl7cmV0dXJuIG5ldyBTY3JpcHQoZSl9c3RhdGljIHNjcmlwdE1vZGVsKGUpe3JldHVybiBuZXcgU2NyaXB0TW9kZWwoZSl9c3RhdGljIHNldmVyaXR5KGUpe3JldHVybiBuZXcgU2V2ZXJpdHkoZSl9c3RhdGljIHNpbGVudFByaW50KGUpe3JldHVybiBuZXcgU2lsZW50UHJpbnQoZSl9c3RhdGljIHN0YXBsZShlKXtyZXR1cm4gbmV3IFN0YXBsZShlKX1zdGF0aWMgc3RhcnROb2RlKGUpe3JldHVybiBuZXcgU3RhcnROb2RlKGUpfXN0YXRpYyBzdGFydFBhZ2UoZSl7cmV0dXJuIG5ldyBTdGFydFBhZ2UoZSl9c3RhdGljIHN1Ym1pdEZvcm1hdChlKXtyZXR1cm4gbmV3IFN1Ym1pdEZvcm1hdChlKX1zdGF0aWMgc3VibWl0VXJsKGUpe3JldHVybiBuZXcgU3VibWl0VXJsKGUpfXN0YXRpYyBzdWJzZXRCZWxvdyhlKXtyZXR1cm4gbmV3IFN1YnNldEJlbG93KGUpfXN0YXRpYyBzdXBwcmVzc0Jhbm5lcihlKXtyZXR1cm4gbmV3IFN1cHByZXNzQmFubmVyKGUpfXN0YXRpYyB0YWdnZWQoZSl7cmV0dXJuIG5ldyBUYWdnZWQoZSl9c3RhdGljIHRlbXBsYXRlKGUpe3JldHVybiBuZXcgVGVtcGxhdGUoZSl9c3RhdGljIHRlbXBsYXRlQ2FjaGUoZSl7cmV0dXJuIG5ldyBUZW1wbGF0ZUNhY2hlKGUpfXN0YXRpYyB0aHJlc2hvbGQoZSl7cmV0dXJuIG5ldyBUaHJlc2hvbGQoZSl9c3RhdGljIHRvKGUpe3JldHVybiBuZXcgVG8oZSl9c3RhdGljIHRyYWNlKGUpe3JldHVybiBuZXcgVHJhY2UoZSl9c3RhdGljIHRyYW5zZm9ybShlKXtyZXR1cm4gbmV3IFRyYW5zZm9ybShlKX1zdGF0aWMgdHlwZShlKXtyZXR1cm4gbmV3IFR5cGUoZSl9c3RhdGljIHVyaShlKXtyZXR1cm4gbmV3IFVyaShlKX1zdGF0aWMgdmFsaWRhdGUoZSl7cmV0dXJuIG5ldyBWYWxpZGF0ZShlKX1zdGF0aWMgdmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMoZSl7cmV0dXJuIG5ldyBWYWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyhlKX1zdGF0aWMgdmFsaWRhdGlvbk1lc3NhZ2luZyhlKXtyZXR1cm4gbmV3IFZhbGlkYXRpb25NZXNzYWdpbmcoZSl9c3RhdGljIHZlcnNpb24oZSl7cmV0dXJuIG5ldyBWZXJzaW9uKGUpfXN0YXRpYyB2ZXJzaW9uQ29udHJvbChlKXtyZXR1cm4gbmV3IFZlcnNpb25Db250cm9sKGUpfXN0YXRpYyB2aWV3ZXJQcmVmZXJlbmNlcyhlKXtyZXR1cm4gbmV3IFZpZXdlclByZWZlcmVuY2VzKGUpfXN0YXRpYyB3ZWJDbGllbnQoZSl7cmV0dXJuIG5ldyBXZWJDbGllbnQoZSl9c3RhdGljIHdoaXRlc3BhY2UoZSl7cmV0dXJuIG5ldyBXaGl0ZXNwYWNlKGUpfXN0YXRpYyB3aW5kb3coZSl7cmV0dXJuIG5ldyBXaW5kb3coZSl9c3RhdGljIHhkYyhlKXtyZXR1cm4gbmV3IFhkYyhlKX1zdGF0aWMgeGRwKGUpe3JldHVybiBuZXcgWGRwKGUpfXN0YXRpYyB4c2woZSl7cmV0dXJuIG5ldyBYc2woZSl9c3RhdGljIHpwbChlKXtyZXR1cm4gbmV3IFpwbChlKX19dC5Db25maWdOYW1lc3BhY2U9Q29uZmlnTmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ29ubmVjdGlvblNldE5hbWVzcGFjZT12b2lkIDA7dmFyIHI9YSg4MCksaT1hKDc4KTtjb25zdCBuPXIuTmFtZXNwYWNlSWRzLmNvbm5lY3Rpb25TZXQuaWQ7Y2xhc3MgQ29ubmVjdGlvblNldCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG4sImNvbm5lY3Rpb25TZXQiLCEwKTt0aGlzLndzZGxDb25uZWN0aW9uPW5ldyBpLlhGQU9iamVjdEFycmF5O3RoaXMueG1sQ29ubmVjdGlvbj1uZXcgaS5YRkFPYmplY3RBcnJheTt0aGlzLnhzZENvbm5lY3Rpb249bmV3IGkuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVmZmVjdGl2ZUlucHV0UG9saWN5IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobiwiZWZmZWN0aXZlSW5wdXRQb2xpY3kiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRWZmZWN0aXZlT3V0cHV0UG9saWN5IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobiwiZWZmZWN0aXZlT3V0cHV0UG9saWN5Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE9wZXJhdGlvbiBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG4sIm9wZXJhdGlvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbnB1dD1lLmlucHV0fHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLm91dHB1dD1lLm91dHB1dHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBSb290RWxlbWVudCBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG4sInJvb3RFbGVtZW50Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNvYXBBY3Rpb24gZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuLCJzb2FwQWN0aW9uIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNvYXBBZGRyZXNzIGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobiwic29hcEFkZHJlc3MiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgVXJpIGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobiwidXJpIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFdzZGxBZGRyZXNzIGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobiwid3NkbEFkZHJlc3MiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgV3NkbENvbm5lY3Rpb24gZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuLCJ3c2RsQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmVmZmVjdGl2ZUlucHV0UG9saWN5PW51bGw7dGhpcy5lZmZlY3RpdmVPdXRwdXRQb2xpY3k9bnVsbDt0aGlzLm9wZXJhdGlvbj1udWxsO3RoaXMuc29hcEFjdGlvbj1udWxsO3RoaXMuc29hcEFkZHJlc3M9bnVsbDt0aGlzLndzZGxBZGRyZXNzPW51bGx9fWNsYXNzIFhtbENvbm5lY3Rpb24gZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuLCJ4bWxDb25uZWN0aW9uIiwhMCk7dGhpcy5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXJpPW51bGx9fWNsYXNzIFhzZENvbm5lY3Rpb24gZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuLCJ4c2RDb25uZWN0aW9uIiwhMCk7dGhpcy5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucm9vdEVsZW1lbnQ9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBDb25uZWN0aW9uU2V0TmFtZXNwYWNle3N0YXRpY1tyLiRidWlsZFhGQU9iamVjdF0oZSx0KXtpZihDb25uZWN0aW9uU2V0TmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBDb25uZWN0aW9uU2V0TmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBjb25uZWN0aW9uU2V0KGUpe3JldHVybiBuZXcgQ29ubmVjdGlvblNldChlKX1zdGF0aWMgZWZmZWN0aXZlSW5wdXRQb2xpY3koZSl7cmV0dXJuIG5ldyBFZmZlY3RpdmVJbnB1dFBvbGljeShlKX1zdGF0aWMgZWZmZWN0aXZlT3V0cHV0UG9saWN5KGUpe3JldHVybiBuZXcgRWZmZWN0aXZlT3V0cHV0UG9saWN5KGUpfXN0YXRpYyBvcGVyYXRpb24oZSl7cmV0dXJuIG5ldyBPcGVyYXRpb24oZSl9c3RhdGljIHJvb3RFbGVtZW50KGUpe3JldHVybiBuZXcgUm9vdEVsZW1lbnQoZSl9c3RhdGljIHNvYXBBY3Rpb24oZSl7cmV0dXJuIG5ldyBTb2FwQWN0aW9uKGUpfXN0YXRpYyBzb2FwQWRkcmVzcyhlKXtyZXR1cm4gbmV3IFNvYXBBZGRyZXNzKGUpfXN0YXRpYyB1cmkoZSl7cmV0dXJuIG5ldyBVcmkoZSl9c3RhdGljIHdzZGxBZGRyZXNzKGUpe3JldHVybiBuZXcgV3NkbEFkZHJlc3MoZSl9c3RhdGljIHdzZGxDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgV3NkbENvbm5lY3Rpb24oZSl9c3RhdGljIHhtbENvbm5lY3Rpb24oZSl7cmV0dXJuIG5ldyBYbWxDb25uZWN0aW9uKGUpfXN0YXRpYyB4c2RDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgWHNkQ29ubmVjdGlvbihlKX19dC5Db25uZWN0aW9uU2V0TmFtZXNwYWNlPUNvbm5lY3Rpb25TZXROYW1lc3BhY2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5EYXRhc2V0c05hbWVzcGFjZT12b2lkIDA7dmFyIHI9YSg3OCksaT1hKDgwKTtjb25zdCBuPWkuTmFtZXNwYWNlSWRzLmRhdGFzZXRzLmlkO2NsYXNzIERhdGEgZXh0ZW5kcyByLlhtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuLCJkYXRhIixlKX1bci4kaXNOc0Fnbm9zdGljXSgpe3JldHVybiEwfX1jbGFzcyBEYXRhc2V0cyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG4sImRhdGFzZXRzIiwhMCk7dGhpcy5kYXRhPW51bGw7dGhpcy5TaWduYXR1cmU9bnVsbH1bci4kb25DaGlsZF0oZSl7Y29uc3QgdD1lW3IuJG5vZGVOYW1lXTsoImRhdGEiPT09dCYmZVtyLiRuYW1lc3BhY2VJZF09PT1ufHwiU2lnbmF0dXJlIj09PXQmJmVbci4kbmFtZXNwYWNlSWRdPT09aS5OYW1lc3BhY2VJZHMuc2lnbmF0dXJlLmlkKSYmKHRoaXNbdF09ZSk7dGhpc1tyLiRhcHBlbmRDaGlsZF0oZSl9fWNsYXNzIERhdGFzZXRzTmFtZXNwYWNle3N0YXRpY1tpLiRidWlsZFhGQU9iamVjdF0oZSx0KXtpZihEYXRhc2V0c05hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gRGF0YXNldHNOYW1lc3BhY2VbZV0odCl9c3RhdGljIGRhdGFzZXRzKGUpe3JldHVybiBuZXcgRGF0YXNldHMoZSl9c3RhdGljIGRhdGEoZSl7cmV0dXJuIG5ldyBEYXRhKGUpfX10LkRhdGFzZXRzTmFtZXNwYWNlPURhdGFzZXRzTmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuTG9jYWxlU2V0TmFtZXNwYWNlPXZvaWQgMDt2YXIgcj1hKDgwKSxpPWEoNzgpLG49YSg3OSk7Y29uc3Qgcz1yLk5hbWVzcGFjZUlkcy5sb2NhbGVTZXQuaWQ7Y2xhc3MgQ2FsZW5kYXJTeW1ib2xzIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiY2FsZW5kYXJTeW1ib2xzIiwhMCk7dGhpcy5uYW1lPSJncmVnb3JpYW4iO3RoaXMuZGF5TmFtZXM9bmV3IGkuWEZBT2JqZWN0QXJyYXkoMik7dGhpcy5lcmFOYW1lcz1udWxsO3RoaXMubWVyaWRpZW1OYW1lcz1udWxsO3RoaXMubW9udGhOYW1lcz1uZXcgaS5YRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgQ3VycmVuY3lTeW1ib2wgZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJjdXJyZW5jeVN5bWJvbCIpO3RoaXMubmFtZT0oMCxuLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsic3ltYm9sIiwiaXNvbmFtZSIsImRlY2ltYWwiXSl9fWNsYXNzIEN1cnJlbmN5U3ltYm9scyBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImN1cnJlbmN5U3ltYm9scyIsITApO3RoaXMuY3VycmVuY3lTeW1ib2w9bmV3IGkuWEZBT2JqZWN0QXJyYXkoMyl9fWNsYXNzIERhdGVQYXR0ZXJuIGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiZGF0ZVBhdHRlcm4iKTt0aGlzLm5hbWU9KDAsbi5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIERhdGVQYXR0ZXJucyBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImRhdGVQYXR0ZXJucyIsITApO3RoaXMuZGF0ZVBhdHRlcm49bmV3IGkuWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIERhdGVUaW1lU3ltYm9scyBleHRlbmRzIGkuQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJkYXRlVGltZVN5bWJvbHMiKX19Y2xhc3MgRGF5IGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiZGF5Iil9fWNsYXNzIERheU5hbWVzIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiZGF5TmFtZXMiLCEwKTt0aGlzLmFiYnI9KDAsbi5nZXRJbnRlZ2VyKSh7ZGF0YTplLmFiYnIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmRheT1uZXcgaS5YRkFPYmplY3RBcnJheSg3KX19Y2xhc3MgRXJhIGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiZXJhIil9fWNsYXNzIEVyYU5hbWVzIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiZXJhTmFtZXMiLCEwKTt0aGlzLmVyYT1uZXcgaS5YRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgTG9jYWxlIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibG9jYWxlIiwhMCk7dGhpcy5kZXNjPWUuZGVzY3x8IiI7dGhpcy5uYW1lPSJpc29uYW1lIjt0aGlzLmNhbGVuZGFyU3ltYm9scz1udWxsO3RoaXMuY3VycmVuY3lTeW1ib2xzPW51bGw7dGhpcy5kYXRlUGF0dGVybnM9bnVsbDt0aGlzLmRhdGVUaW1lU3ltYm9scz1udWxsO3RoaXMubnVtYmVyUGF0dGVybnM9bnVsbDt0aGlzLm51bWJlclN5bWJvbHM9bnVsbDt0aGlzLnRpbWVQYXR0ZXJucz1udWxsO3RoaXMudHlwZUZhY2VzPW51bGx9fWNsYXNzIExvY2FsZVNldCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImxvY2FsZVNldCIsITApO3RoaXMubG9jYWxlPW5ldyBpLlhGQU9iamVjdEFycmF5fX1jbGFzcyBNZXJpZGllbSBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm1lcmlkaWVtIil9fWNsYXNzIE1lcmlkaWVtTmFtZXMgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJtZXJpZGllbU5hbWVzIiwhMCk7dGhpcy5tZXJpZGllbT1uZXcgaS5YRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgTW9udGggZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJtb250aCIpfX1jbGFzcyBNb250aE5hbWVzIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibW9udGhOYW1lcyIsITApO3RoaXMuYWJicj0oMCxuLmdldEludGVnZXIpKHtkYXRhOmUuYWJicixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMubW9udGg9bmV3IGkuWEZBT2JqZWN0QXJyYXkoMTIpfX1jbGFzcyBOdW1iZXJQYXR0ZXJuIGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibnVtYmVyUGF0dGVybiIpO3RoaXMubmFtZT0oMCxuLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgTnVtYmVyUGF0dGVybnMgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJudW1iZXJQYXR0ZXJucyIsITApO3RoaXMubnVtYmVyUGF0dGVybj1uZXcgaS5YRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgTnVtYmVyU3ltYm9sIGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibnVtYmVyU3ltYm9sIik7dGhpcy5uYW1lPSgwLG4uZ2V0U3RyaW5nT3B0aW9uKShlLm5hbWUsWyJkZWNpbWFsIiwiZ3JvdXBpbmciLCJwZXJjZW50IiwibWludXMiLCJ6ZXJvIl0pfX1jbGFzcyBOdW1iZXJTeW1ib2xzIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibnVtYmVyU3ltYm9scyIsITApO3RoaXMubnVtYmVyU3ltYm9sPW5ldyBpLlhGQU9iamVjdEFycmF5KDUpfX1jbGFzcyBUaW1lUGF0dGVybiBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsInRpbWVQYXR0ZXJuIik7dGhpcy5uYW1lPSgwLG4uZ2V0U3RyaW5nT3B0aW9uKShlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBUaW1lUGF0dGVybnMgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJ0aW1lUGF0dGVybnMiLCEwKTt0aGlzLnRpbWVQYXR0ZXJuPW5ldyBpLlhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBUeXBlRmFjZSBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsInR5cGVGYWNlIiwhMCk7dGhpcy5uYW1lPSIifGUubmFtZX19Y2xhc3MgVHlwZUZhY2VzIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywidHlwZUZhY2VzIiwhMCk7dGhpcy50eXBlRmFjZT1uZXcgaS5YRkFPYmplY3RBcnJheX19Y2xhc3MgTG9jYWxlU2V0TmFtZXNwYWNle3N0YXRpY1tyLiRidWlsZFhGQU9iamVjdF0oZSx0KXtpZihMb2NhbGVTZXROYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIExvY2FsZVNldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgY2FsZW5kYXJTeW1ib2xzKGUpe3JldHVybiBuZXcgQ2FsZW5kYXJTeW1ib2xzKGUpfXN0YXRpYyBjdXJyZW5jeVN5bWJvbChlKXtyZXR1cm4gbmV3IEN1cnJlbmN5U3ltYm9sKGUpfXN0YXRpYyBjdXJyZW5jeVN5bWJvbHMoZSl7cmV0dXJuIG5ldyBDdXJyZW5jeVN5bWJvbHMoZSl9c3RhdGljIGRhdGVQYXR0ZXJuKGUpe3JldHVybiBuZXcgRGF0ZVBhdHRlcm4oZSl9c3RhdGljIGRhdGVQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IERhdGVQYXR0ZXJucyhlKX1zdGF0aWMgZGF0ZVRpbWVTeW1ib2xzKGUpe3JldHVybiBuZXcgRGF0ZVRpbWVTeW1ib2xzKGUpfXN0YXRpYyBkYXkoZSl7cmV0dXJuIG5ldyBEYXkoZSl9c3RhdGljIGRheU5hbWVzKGUpe3JldHVybiBuZXcgRGF5TmFtZXMoZSl9c3RhdGljIGVyYShlKXtyZXR1cm4gbmV3IEVyYShlKX1zdGF0aWMgZXJhTmFtZXMoZSl7cmV0dXJuIG5ldyBFcmFOYW1lcyhlKX1zdGF0aWMgbG9jYWxlKGUpe3JldHVybiBuZXcgTG9jYWxlKGUpfXN0YXRpYyBsb2NhbGVTZXQoZSl7cmV0dXJuIG5ldyBMb2NhbGVTZXQoZSl9c3RhdGljIG1lcmlkaWVtKGUpe3JldHVybiBuZXcgTWVyaWRpZW0oZSl9c3RhdGljIG1lcmlkaWVtTmFtZXMoZSl7cmV0dXJuIG5ldyBNZXJpZGllbU5hbWVzKGUpfXN0YXRpYyBtb250aChlKXtyZXR1cm4gbmV3IE1vbnRoKGUpfXN0YXRpYyBtb250aE5hbWVzKGUpe3JldHVybiBuZXcgTW9udGhOYW1lcyhlKX1zdGF0aWMgbnVtYmVyUGF0dGVybihlKXtyZXR1cm4gbmV3IE51bWJlclBhdHRlcm4oZSl9c3RhdGljIG51bWJlclBhdHRlcm5zKGUpe3JldHVybiBuZXcgTnVtYmVyUGF0dGVybnMoZSl9c3RhdGljIG51bWJlclN5bWJvbChlKXtyZXR1cm4gbmV3IE51bWJlclN5bWJvbChlKX1zdGF0aWMgbnVtYmVyU3ltYm9scyhlKXtyZXR1cm4gbmV3IE51bWJlclN5bWJvbHMoZSl9c3RhdGljIHRpbWVQYXR0ZXJuKGUpe3JldHVybiBuZXcgVGltZVBhdHRlcm4oZSl9c3RhdGljIHRpbWVQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IFRpbWVQYXR0ZXJucyhlKX1zdGF0aWMgdHlwZUZhY2UoZSl7cmV0dXJuIG5ldyBUeXBlRmFjZShlKX1zdGF0aWMgdHlwZUZhY2VzKGUpe3JldHVybiBuZXcgVHlwZUZhY2VzKGUpfX10LkxvY2FsZVNldE5hbWVzcGFjZT1Mb2NhbGVTZXROYW1lc3BhY2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5TaWduYXR1cmVOYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoODApLGk9YSg3OCk7Y29uc3Qgbj1yLk5hbWVzcGFjZUlkcy5zaWduYXR1cmUuaWQ7Y2xhc3MgU2lnbmF0dXJlIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobiwic2lnbmF0dXJlIiwhMCl9fWNsYXNzIFNpZ25hdHVyZU5hbWVzcGFjZXtzdGF0aWNbci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoU2lnbmF0dXJlTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBTaWduYXR1cmVOYW1lc3BhY2VbZV0odCl9c3RhdGljIHNpZ25hdHVyZShlKXtyZXR1cm4gbmV3IFNpZ25hdHVyZShlKX19dC5TaWduYXR1cmVOYW1lc3BhY2U9U2lnbmF0dXJlTmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU3R5bGVzaGVldE5hbWVzcGFjZT12b2lkIDA7dmFyIHI9YSg4MCksaT1hKDc4KTtjb25zdCBuPXIuTmFtZXNwYWNlSWRzLnN0eWxlc2hlZXQuaWQ7Y2xhc3MgU3R5bGVzaGVldCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG4sInN0eWxlc2hlZXQiLCEwKX19Y2xhc3MgU3R5bGVzaGVldE5hbWVzcGFjZXtzdGF0aWNbci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoU3R5bGVzaGVldE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gU3R5bGVzaGVldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgc3R5bGVzaGVldChlKXtyZXR1cm4gbmV3IFN0eWxlc2hlZXQoZSl9fXQuU3R5bGVzaGVldE5hbWVzcGFjZT1TdHlsZXNoZWV0TmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWGRwTmFtZXNwYWNlPXZvaWQgMDt2YXIgcj1hKDgwKSxpPWEoNzgpO2NvbnN0IG49ci5OYW1lc3BhY2VJZHMueGRwLmlkO2NsYXNzIFhkcCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG4sInhkcCIsITApO3RoaXMudXVpZD1lLnV1aWR8fCIiO3RoaXMudGltZVN0YW1wPWUudGltZVN0YW1wfHwiIjt0aGlzLmNvbmZpZz1udWxsO3RoaXMuY29ubmVjdGlvblNldD1udWxsO3RoaXMuZGF0YXNldHM9bnVsbDt0aGlzLmxvY2FsZVNldD1udWxsO3RoaXMuc3R5bGVzaGVldD1uZXcgaS5YRkFPYmplY3RBcnJheTt0aGlzLnRlbXBsYXRlPW51bGx9W2kuJG9uQ2hpbGRDaGVja10oZSl7Y29uc3QgdD1yLk5hbWVzcGFjZUlkc1tlW2kuJG5vZGVOYW1lXV07cmV0dXJuIHQmJmVbaS4kbmFtZXNwYWNlSWRdPT09dC5pZH19Y2xhc3MgWGRwTmFtZXNwYWNle3N0YXRpY1tyLiRidWlsZFhGQU9iamVjdF0oZSx0KXtpZihYZHBOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFhkcE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgeGRwKGUpe3JldHVybiBuZXcgWGRwKGUpfX10LlhkcE5hbWVzcGFjZT1YZHBOYW1lc3BhY2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YaHRtbE5hbWVzcGFjZT12b2lkIDA7dmFyIHI9YSg3OCksaT1hKDgwKSxuPWEoODUpLHM9YSg3OSk7Y29uc3Qgbz1pLk5hbWVzcGFjZUlkcy54aHRtbC5pZCxjPVN5bWJvbCgpLGw9bmV3IFNldChbImNvbG9yIiwiZm9udCIsImZvbnQtZmFtaWx5IiwiZm9udC1zaXplIiwiZm9udC1zdHJldGNoIiwiZm9udC1zdHlsZSIsImZvbnQtd2VpZ2h0IiwibWFyZ2luIiwibWFyZ2luLWJvdHRvbSIsIm1hcmdpbi1sZWZ0IiwibWFyZ2luLXJpZ2h0IiwibWFyZ2luLXRvcCIsImxldHRlci1zcGFjaW5nIiwibGluZS1oZWlnaHQiLCJvcnBoYW5zIiwicGFnZS1icmVhay1hZnRlciIsInBhZ2UtYnJlYWstYmVmb3JlIiwicGFnZS1icmVhay1pbnNpZGUiLCJ0YWItaW50ZXJ2YWwiLCJ0YWItc3RvcCIsInRleHQtYWxpZ24iLCJ0ZXh0LWRlY29yYXRpb24iLCJ0ZXh0LWluZGVudCIsInZlcnRpY2FsLWFsaWduIiwid2lkb3dzIiwia2VybmluZy1tb2RlIiwieGZhLWZvbnQtaG9yaXpvbnRhbC1zY2FsZSIsInhmYS1mb250LXZlcnRpY2FsLXNjYWxlIiwieGZhLXNwYWNlcnVuIiwieGZhLXRhYi1zdG9wcyJdKSxoPW5ldyBNYXAoW1sicGFnZS1icmVhay1hZnRlciIsImJyZWFrQWZ0ZXIiXSxbInBhZ2UtYnJlYWstYmVmb3JlIiwiYnJlYWtCZWZvcmUiXSxbInBhZ2UtYnJlYWstaW5zaWRlIiwiYnJlYWtJbnNpZGUiXSxbImtlcm5pbmctbW9kZSIsZT0+Im5vbmUiPT09ZT8ibm9uZSI6Im5vcm1hbCJdLFsieGZhLWZvbnQtaG9yaXpvbnRhbC1zY2FsZSIsZT0+YHNjYWxlWCgke01hdGgubWF4KDAsTWF0aC5taW4ocGFyc2VJbnQoZSkvMTAwKSkudG9GaXhlZCgyKX0pYF0sWyJ4ZmEtZm9udC12ZXJ0aWNhbC1zY2FsZSIsZT0+YHNjYWxlWSgke01hdGgubWF4KDAsTWF0aC5taW4ocGFyc2VJbnQoZSkvMTAwKSkudG9GaXhlZCgyKX0pYF0sWyJ4ZmEtc3BhY2VydW4iLCIiXSxbInhmYS10YWItc3RvcHMiLCIiXSxbImZvbnQtc2l6ZSIsKGUsdCk9PntlPXQuZm9udFNpemU9KDAscy5nZXRNZWFzdXJlbWVudCkoZSk7cmV0dXJuKDAsbi5tZWFzdXJlVG9TdHJpbmcpKC45OSplKX1dLFsibGV0dGVyLXNwYWNpbmciLGU9PigwLG4ubWVhc3VyZVRvU3RyaW5nKSgoMCxzLmdldE1lYXN1cmVtZW50KShlKSldLFsibGluZS1oZWlnaHQiLGU9PigwLG4ubWVhc3VyZVRvU3RyaW5nKSgoMCxzLmdldE1lYXN1cmVtZW50KShlKSldLFsibWFyZ2luIixlPT4oMCxuLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbi1ib3R0b20iLGU9PigwLG4ubWVhc3VyZVRvU3RyaW5nKSgoMCxzLmdldE1lYXN1cmVtZW50KShlKSldLFsibWFyZ2luLWxlZnQiLGU9PigwLG4ubWVhc3VyZVRvU3RyaW5nKSgoMCxzLmdldE1lYXN1cmVtZW50KShlKSldLFsibWFyZ2luLXJpZ2h0IixlPT4oMCxuLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbi10b3AiLGU9PigwLG4ubWVhc3VyZVRvU3RyaW5nKSgoMCxzLmdldE1lYXN1cmVtZW50KShlKSldLFsidGV4dC1pbmRlbnQiLGU9PigwLG4ubWVhc3VyZVRvU3RyaW5nKSgoMCxzLmdldE1lYXN1cmVtZW50KShlKSldLFsiZm9udC1mYW1pbHkiLGU9PmVdLFsidmVydGljYWwtYWxpZ24iLGU9PigwLG4ubWVhc3VyZVRvU3RyaW5nKSgoMCxzLmdldE1lYXN1cmVtZW50KShlKSldXSksdT0vXHMrL2csZD0vW1xyXG5dKy9nLGY9L1xyXG4/L2c7ZnVuY3Rpb24gbWFwU3R5bGUoZSx0LGEpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtpZighZSlyZXR1cm4gaTtjb25zdCBvPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W3QsYV1vZiBlLnNwbGl0KCI7IikubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKXtjb25zdCBlPWguZ2V0KHQpO2lmKCIiPT09ZSljb250aW51ZTtsZXQgcj1hO2UmJihyPSJzdHJpbmciPT10eXBlb2YgZT9lOmUoYSxvKSk7dC5lbmRzV2l0aCgic2NhbGUiKT9pLnRyYW5zZm9ybT9pLnRyYW5zZm9ybT1gJHtpW3RdfSAke3J9YDppLnRyYW5zZm9ybT1yOmlbdC5yZXBsYWNlQWxsKC8tKFthLXpBLVpdKS9nLCgoZSx0KT0+dC50b1VwcGVyQ2FzZSgpKSldPXJ9aS5mb250RmFtaWx5JiYoMCxuLnNldEZvbnRGYW1pbHkpKHt0eXBlZmFjZTppLmZvbnRGYW1pbHksd2VpZ2h0OmkuZm9udFdlaWdodHx8Im5vcm1hbCIscG9zdHVyZTppLmZvbnRTdHlsZXx8Im5vcm1hbCIsc2l6ZTpvLmZvbnRTaXplfHwwfSx0LHRbci4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlcixpKTtpZihhJiZpLnZlcnRpY2FsQWxpZ24mJiIwcHgiIT09aS52ZXJ0aWNhbEFsaWduJiZpLmZvbnRTaXplKXtjb25zdCBlPS41ODMsdD0uMzMzLGE9KDAscy5nZXRNZWFzdXJlbWVudCkoaS5mb250U2l6ZSk7aS5mb250U2l6ZT0oMCxuLm1lYXN1cmVUb1N0cmluZykoYSplKTtpLnZlcnRpY2FsQWxpZ249KDAsbi5tZWFzdXJlVG9TdHJpbmcpKE1hdGguc2lnbigoMCxzLmdldE1lYXN1cmVtZW50KShpLnZlcnRpY2FsQWxpZ24pKSphKnQpfWEmJmkuZm9udFNpemUmJihpLmZvbnRTaXplPWBjYWxjKCR7aS5mb250U2l6ZX0gKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWApOygwLG4uZml4VGV4dEluZGVudCkoaSk7cmV0dXJuIGl9Y29uc3QgZz1uZXcgU2V0KFsiYm9keSIsImh0bWwiXSk7Y2xhc3MgWGh0bWxPYmplY3QgZXh0ZW5kcyByLlhtbE9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKG8sdCk7dGhpc1tjXT0hMTt0aGlzLnN0eWxlPWUuc3R5bGV8fCIifVtyLiRjbGVhbl0oZSl7c3VwZXJbci4kY2xlYW5dKGUpO3RoaXMuc3R5bGU9ZnVuY3Rpb24gY2hlY2tTdHlsZShlKXtyZXR1cm4gZS5zdHlsZT9lLnN0eWxlLnRyaW0oKS5zcGxpdCgvXHMqO1xzKi8pLmZpbHRlcigoZT0+ISFlKSkubWFwKChlPT5lLnNwbGl0KC9ccyo6XHMqLywyKSkpLmZpbHRlcigoKFt0LGFdKT0+eyJmb250LWZhbWlseSI9PT10JiZlW3IuJGdsb2JhbERhdGFdLnVzZWRUeXBlZmFjZXMuYWRkKGEpO3JldHVybiBsLmhhcyh0KX0pKS5tYXAoKGU9PmUuam9pbigiOiIpKSkuam9pbigiOyIpOiIifSh0aGlzKX1bci4kYWNjZXB0V2hpdGVzcGFjZV0oKXtyZXR1cm4hZy5oYXModGhpc1tyLiRub2RlTmFtZV0pfVtyLiRvblRleHRdKGUsdD0hMSl7aWYodCl0aGlzW2NdPSEwO2Vsc2V7ZT1lLnJlcGxhY2VBbGwoZCwiIik7dGhpcy5zdHlsZS5pbmNsdWRlcygieGZhLXNwYWNlcnVuOnllcyIpfHwoZT1lLnJlcGxhY2VBbGwodSwiICIpKX1lJiYodGhpc1tyLiRjb250ZW50XSs9ZSl9W3IuJHB1c2hHbHlwaHNdKGUsdD0hMCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpLGk9e3RvcDpOYU4sYm90dG9tOk5hTixsZWZ0Ok5hTixyaWdodDpOYU59O2xldCBuPW51bGw7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLnN0eWxlLnNwbGl0KCI7IikubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKXN3aXRjaChlKXtjYXNlImZvbnQtZmFtaWx5IjphLnR5cGVmYWNlPSgwLHMuc3RyaXBRdW90ZXMpKHQpO2JyZWFrO2Nhc2UiZm9udC1zaXplIjphLnNpemU9KDAscy5nZXRNZWFzdXJlbWVudCkodCk7YnJlYWs7Y2FzZSJmb250LXdlaWdodCI6YS53ZWlnaHQ9dDticmVhaztjYXNlImZvbnQtc3R5bGUiOmEucG9zdHVyZT10O2JyZWFrO2Nhc2UibGV0dGVyLXNwYWNpbmciOmEubGV0dGVyU3BhY2luZz0oMCxzLmdldE1lYXN1cmVtZW50KSh0KTticmVhaztjYXNlIm1hcmdpbiI6Y29uc3QgZT10LnNwbGl0KC8gXHQvKS5tYXAoKGU9PigwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpKSk7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDE6aS50b3A9aS5ib3R0b209aS5sZWZ0PWkucmlnaHQ9ZVswXTticmVhaztjYXNlIDI6aS50b3A9aS5ib3R0b209ZVswXTtpLmxlZnQ9aS5yaWdodD1lWzFdO2JyZWFrO2Nhc2UgMzppLnRvcD1lWzBdO2kuYm90dG9tPWVbMl07aS5sZWZ0PWkucmlnaHQ9ZVsxXTticmVhaztjYXNlIDQ6aS50b3A9ZVswXTtpLmxlZnQ9ZVsxXTtpLmJvdHRvbT1lWzJdO2kucmlnaHQ9ZVszXX1icmVhaztjYXNlIm1hcmdpbi10b3AiOmkudG9wPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpO2JyZWFrO2Nhc2UibWFyZ2luLWJvdHRvbSI6aS5ib3R0b209KDAscy5nZXRNZWFzdXJlbWVudCkodCk7YnJlYWs7Y2FzZSJtYXJnaW4tbGVmdCI6aS5sZWZ0PSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpO2JyZWFrO2Nhc2UibWFyZ2luLXJpZ2h0IjppLnJpZ2h0PSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpO2JyZWFrO2Nhc2UibGluZS1oZWlnaHQiOm49KDAscy5nZXRNZWFzdXJlbWVudCkodCl9ZS5wdXNoRGF0YShhLGksbik7aWYodGhpc1tyLiRjb250ZW50XSllLmFkZFN0cmluZyh0aGlzW3IuJGNvbnRlbnRdKTtlbHNlIGZvcihjb25zdCB0IG9mIHRoaXNbci4kZ2V0Q2hpbGRyZW5dKCkpIiN0ZXh0IiE9PXRbci4kbm9kZU5hbWVdP3Rbci4kcHVzaEdseXBoc10oZSk6ZS5hZGRTdHJpbmcodFtyLiRjb250ZW50XSk7dCYmZS5wb3BGb250KCl9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD1bXTt0aGlzW3IuJGV4dHJhXT17Y2hpbGRyZW46dH07dGhpc1tyLiRjaGlsZHJlblRvSFRNTF0oe30pO2lmKDA9PT10Lmxlbmd0aCYmIXRoaXNbci4kY29udGVudF0pcmV0dXJuIHMuSFRNTFJlc3VsdC5FTVBUWTtsZXQgYTthPXRoaXNbY10/dGhpc1tyLiRjb250ZW50XT90aGlzW3IuJGNvbnRlbnRdLnJlcGxhY2VBbGwoZiwiXG4iKTp2b2lkIDA6dGhpc1tyLiRjb250ZW50XXx8dm9pZCAwO3JldHVybiBzLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZTp0aGlzW3IuJG5vZGVOYW1lXSxhdHRyaWJ1dGVzOntocmVmOnRoaXMuaHJlZixzdHlsZTptYXBTdHlsZSh0aGlzLnN0eWxlLHRoaXMsdGhpc1tjXSl9LGNoaWxkcmVuOnQsdmFsdWU6YX0pfX1jbGFzcyBBIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYSIpO3RoaXMuaHJlZj0oMCxuLmZpeFVSTCkoZS5ocmVmKXx8IiJ9fWNsYXNzIEIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJiIil9W3IuJHB1c2hHbHlwaHNdKGUpe2UucHVzaEZvbnQoe3dlaWdodDoiYm9sZCJ9KTtzdXBlcltyLiRwdXNoR2x5cGhzXShlKTtlLnBvcEZvbnQoKX19Y2xhc3MgQm9keSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJvZHkiKX1bci4kdG9IVE1MXShlKXtjb25zdCB0PXN1cGVyW3IuJHRvSFRNTF0oZSkse2h0bWw6YX09dDtpZighYSlyZXR1cm4gcy5IVE1MUmVzdWx0LkVNUFRZO2EubmFtZT0iZGl2IjthLmF0dHJpYnV0ZXMuY2xhc3M9WyJ4ZmFSaWNoIl07cmV0dXJuIHR9fWNsYXNzIEJyIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYnIiKX1bci4kdGV4dF0oKXtyZXR1cm4iXG4ifVtyLiRwdXNoR2x5cGhzXShlKXtlLmFkZFN0cmluZygiXG4iKX1bci4kdG9IVE1MXShlKXtyZXR1cm4gcy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImJyIn0pfX1jbGFzcyBIdG1sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiaHRtbCIpfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9W107dGhpc1tyLiRleHRyYV09e2NoaWxkcmVuOnR9O3RoaXNbci4kY2hpbGRyZW5Ub0hUTUxdKHt9KTtpZigwPT09dC5sZW5ndGgpcmV0dXJuIHMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSx2YWx1ZTp0aGlzW3IuJGNvbnRlbnRdfHwiIn0pO2lmKDE9PT10Lmxlbmd0aCl7Y29uc3QgZT10WzBdO2lmKGUuYXR0cmlidXRlcz8uY2xhc3MuaW5jbHVkZXMoInhmYVJpY2giKSlyZXR1cm4gcy5IVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9cmV0dXJuIHMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSxjaGlsZHJlbjp0fSl9fWNsYXNzIEkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJpIil9W3IuJHB1c2hHbHlwaHNdKGUpe2UucHVzaEZvbnQoe3Bvc3R1cmU6Iml0YWxpYyJ9KTtzdXBlcltyLiRwdXNoR2x5cGhzXShlKTtlLnBvcEZvbnQoKX19Y2xhc3MgTGkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJsaSIpfX1jbGFzcyBPbCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIm9sIil9fWNsYXNzIFAgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJwIil9W3IuJHB1c2hHbHlwaHNdKGUpe3N1cGVyW3IuJHB1c2hHbHlwaHNdKGUsITEpO2UuYWRkU3RyaW5nKCJcbiIpO2UuYWRkUGFyYSgpO2UucG9wRm9udCgpfVtyLiR0ZXh0XSgpe3JldHVybiB0aGlzW3IuJGdldFBhcmVudF0oKVtyLiRnZXRDaGlsZHJlbl0oKS5hdCgtMSk9PT10aGlzP3N1cGVyW3IuJHRleHRdKCk6c3VwZXJbci4kdGV4dF0oKSsiXG4ifX1jbGFzcyBTcGFuIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3BhbiIpfX1jbGFzcyBTdWIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzdWIiKX19Y2xhc3MgU3VwIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3VwIil9fWNsYXNzIFVsIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwidWwiKX19Y2xhc3MgWGh0bWxOYW1lc3BhY2V7c3RhdGljW2kuJGJ1aWxkWEZBT2JqZWN0XShlLHQpe2lmKFhodG1sTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBYaHRtbE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgYShlKXtyZXR1cm4gbmV3IEEoZSl9c3RhdGljIGIoZSl7cmV0dXJuIG5ldyBCKGUpfXN0YXRpYyBib2R5KGUpe3JldHVybiBuZXcgQm9keShlKX1zdGF0aWMgYnIoZSl7cmV0dXJuIG5ldyBCcihlKX1zdGF0aWMgaHRtbChlKXtyZXR1cm4gbmV3IEh0bWwoZSl9c3RhdGljIGkoZSl7cmV0dXJuIG5ldyBJKGUpfXN0YXRpYyBsaShlKXtyZXR1cm4gbmV3IExpKGUpfXN0YXRpYyBvbChlKXtyZXR1cm4gbmV3IE9sKGUpfXN0YXRpYyBwKGUpe3JldHVybiBuZXcgUChlKX1zdGF0aWMgc3BhbihlKXtyZXR1cm4gbmV3IFNwYW4oZSl9c3RhdGljIHN1YihlKXtyZXR1cm4gbmV3IFN1YihlKX1zdGF0aWMgc3VwKGUpe3JldHVybiBuZXcgU3VwKGUpfXN0YXRpYyB1bChlKXtyZXR1cm4gbmV3IFVsKGUpfX10LlhodG1sTmFtZXNwYWNlPVhodG1sTmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVW5rbm93bk5hbWVzcGFjZT12b2lkIDA7dmFyIHI9YSg4MCksaT1hKDc4KTtjbGFzcyBVbmtub3duTmFtZXNwYWNle2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZXNwYWNlSWQ9ZX1bci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7cmV0dXJuIG5ldyBpLlhtbE9iamVjdCh0aGlzLm5hbWVzcGFjZUlkLGUsdCl9fXQuVW5rbm93bk5hbWVzcGFjZT1Vbmtub3duTmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuRGF0YXNldFJlYWRlcj12b2lkIDA7dmFyIHI9YSgyKSxpPWEoMyksbj1hKDY3KTtmdW5jdGlvbiBkZWNvZGVTdHJpbmcoZSl7dHJ5e3JldHVybigwLHIuc3RyaW5nVG9VVEY4U3RyaW5nKShlKX1jYXRjaCh0KXsoMCxyLndhcm4pKGBVVEYtOCBkZWNvZGluZyBmYWlsZWQ6ICIke3R9Ii5gKTtyZXR1cm4gZX19Y2xhc3MgRGF0YXNldFhNTFBhcnNlciBleHRlbmRzIG4uU2ltcGxlWE1MUGFyc2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMubm9kZT1udWxsfW9uRW5kRWxlbWVudChlKXtjb25zdCB0PXN1cGVyLm9uRW5kRWxlbWVudChlKTtpZih0JiYieGZhOmRhdGFzZXRzIj09PWUpe3RoaXMubm9kZT10O3Rocm93IG5ldyBFcnJvcigiQWJvcnRpbmcgRGF0YXNldFhNTFBhcnNlci4iKX19fXQuRGF0YXNldFJlYWRlcj1jbGFzcyBEYXRhc2V0UmVhZGVye2NvbnN0cnVjdG9yKGUpe2lmKGUuZGF0YXNldHMpdGhpcy5ub2RlPW5ldyBuLlNpbXBsZVhNTFBhcnNlcih7aGFzQXR0cmlidXRlczohMH0pLnBhcnNlRnJvbVN0cmluZyhlLmRhdGFzZXRzKS5kb2N1bWVudEVsZW1lbnQ7ZWxzZXtjb25zdCB0PW5ldyBEYXRhc2V0WE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSk7dHJ5e3QucGFyc2VGcm9tU3RyaW5nKGVbInhkcDp4ZHAiXSl9Y2F0Y2goZSl7fXRoaXMubm9kZT10Lm5vZGV9fWdldFZhbHVlKGUpe2lmKCF0aGlzLm5vZGV8fCFlKXJldHVybiIiO2NvbnN0IHQ9dGhpcy5ub2RlLnNlYXJjaE5vZGUoKDAsaS5wYXJzZVhGQVBhdGgpKGUpLDApO2lmKCF0KXJldHVybiIiO2NvbnN0IGE9dC5maXJzdENoaWxkO3JldHVybiJ2YWx1ZSI9PT1hPy5ub2RlTmFtZT90LmNoaWxkcmVuLm1hcCgoZT0+ZGVjb2RlU3RyaW5nKGUudGV4dENvbnRlbnQpKSk6ZGVjb2RlU3RyaW5nKHQudGV4dENvbnRlbnQpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YUmVmPXZvaWQgMDt2YXIgcj1hKDIpLGk9YSg0KSxuPWEoMTYpLHM9YSgzKSxvPWEoNSksYz1hKDY4KTt0LlhSZWY9Y2xhc3MgWFJlZntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc3RyZWFtPWU7dGhpcy5wZGZNYW5hZ2VyPXQ7dGhpcy5lbnRyaWVzPVtdO3RoaXMuX3hyZWZTdG1zPW5ldyBTZXQ7dGhpcy5fY2FjaGVNYXA9bmV3IE1hcDt0aGlzLl9wZW5kaW5nUmVmcz1uZXcgaS5SZWZTZXQ7dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bT1udWxsO3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT1udWxsfWdldE5ld1BlcnNpc3RlbnRSZWYoZSl7bnVsbD09PXRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0mJih0aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtPXRoaXMuZW50cmllcy5sZW5ndGh8fDEpO2NvbnN0IHQ9dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bSsrO3RoaXMuX2NhY2hlTWFwLnNldCh0LGUpO3JldHVybiBpLlJlZi5nZXQodCwwKX1nZXROZXdUZW1wb3JhcnlSZWYoKXtudWxsPT09dGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtJiYodGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtPXRoaXMuZW50cmllcy5sZW5ndGh8fDEpO3JldHVybiBpLlJlZi5nZXQodGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtKyssMCl9cmVzZXROZXdUZW1wb3JhcnlSZWYoKXt0aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW09bnVsbH1zZXRTdGFydFhSZWYoZSl7dGhpcy5zdGFydFhSZWZRdWV1ZT1bZV19cGFyc2UoZT0hMSl7bGV0IHQsYSxuO2lmKGUpeygwLHIud2FybikoIkluZGV4aW5nIGFsbCBQREYgb2JqZWN0cyIpO3Q9dGhpcy5pbmRleE9iamVjdHMoKX1lbHNlIHQ9dGhpcy5yZWFkWFJlZigpO3QuYXNzaWduWHJlZih0aGlzKTt0aGlzLnRyYWlsZXI9dDt0cnl7YT10LmdldCgiRW5jcnlwdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBzLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci53YXJuKShgWFJlZi5wYXJzZSAtIEludmFsaWQgIkVuY3J5cHQiIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKGEgaW5zdGFuY2VvZiBpLkRpY3Qpe2NvbnN0IGU9dC5nZXQoIklEIikscj1lPy5sZW5ndGg/ZVswXToiIjthLnN1cHByZXNzRW5jcnlwdGlvbj0hMDt0aGlzLmVuY3J5cHQ9bmV3IGMuQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeShhLHIsdGhpcy5wZGZNYW5hZ2VyLnBhc3N3b3JkKX10cnl7bj10LmdldCgiUm9vdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBzLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci53YXJuKShgWFJlZi5wYXJzZSAtIEludmFsaWQgIlJvb3QiIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKG4gaW5zdGFuY2VvZiBpLkRpY3QpdHJ5e2lmKG4uZ2V0KCJQYWdlcyIpaW5zdGFuY2VvZiBpLkRpY3Qpe3RoaXMucm9vdD1uO3JldHVybn19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIHMuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxyLndhcm4pKGBYUmVmLnBhcnNlIC0gSW52YWxpZCAiUGFnZXMiIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKCFlKXRocm93IG5ldyBzLlhSZWZQYXJzZUV4Y2VwdGlvbjt0aHJvdyBuZXcgci5JbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFJvb3QgcmVmZXJlbmNlLiIpfXByb2Nlc3NYUmVmVGFibGUoZSl7InRhYmxlU3RhdGUiaW4gdGhpc3x8KHRoaXMudGFibGVTdGF0ZT17ZW50cnlOdW06MCxzdHJlYW1Qb3M6ZS5sZXhlci5zdHJlYW0ucG9zLHBhcnNlckJ1ZjE6ZS5idWYxLHBhcnNlckJ1ZjI6ZS5idWYyfSk7Y29uc3QgdD10aGlzLnJlYWRYUmVmVGFibGUoZSk7aWYoISgwLGkuaXNDbWQpKHQsInRyYWlsZXIiKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgZmluZCB0cmFpbGVyIGRpY3Rpb25hcnkiKTtsZXQgYT1lLmdldE9iaigpO2EgaW5zdGFuY2VvZiBpLkRpY3R8fCFhLmRpY3R8fChhPWEuZGljdCk7aWYoIShhIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgcGFyc2UgdHJhaWxlciBkaWN0aW9uYXJ5Iik7ZGVsZXRlIHRoaXMudGFibGVTdGF0ZTtyZXR1cm4gYX1yZWFkWFJlZlRhYmxlKGUpe2NvbnN0IHQ9ZS5sZXhlci5zdHJlYW0sYT10aGlzLnRhYmxlU3RhdGU7dC5wb3M9YS5zdHJlYW1Qb3M7ZS5idWYxPWEucGFyc2VyQnVmMTtlLmJ1ZjI9YS5wYXJzZXJCdWYyO2xldCBuO2Zvcig7Oyl7aWYoISgiZmlyc3RFbnRyeU51bSJpbiBhKXx8ISgiZW50cnlDb3VudCJpbiBhKSl7aWYoKDAsaS5pc0NtZCkobj1lLmdldE9iaigpLCJ0cmFpbGVyIikpYnJlYWs7YS5maXJzdEVudHJ5TnVtPW47YS5lbnRyeUNvdW50PWUuZ2V0T2JqKCl9bGV0IHM9YS5maXJzdEVudHJ5TnVtO2NvbnN0IG89YS5lbnRyeUNvdW50O2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHMpfHwhTnVtYmVyLmlzSW50ZWdlcihvKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiB3cm9uZyB0eXBlcyBpbiBzdWJzZWN0aW9uIGhlYWRlciIpO2ZvcihsZXQgbj1hLmVudHJ5TnVtO248bztuKyspe2Euc3RyZWFtUG9zPXQucG9zO2EuZW50cnlOdW09bjthLnBhcnNlckJ1ZjE9ZS5idWYxO2EucGFyc2VyQnVmMj1lLmJ1ZjI7Y29uc3QgYz17fTtjLm9mZnNldD1lLmdldE9iaigpO2MuZ2VuPWUuZ2V0T2JqKCk7Y29uc3QgbD1lLmdldE9iaigpO2lmKGwgaW5zdGFuY2VvZiBpLkNtZClzd2l0Y2gobC5jbWQpe2Nhc2UiZiI6Yy5mcmVlPSEwO2JyZWFrO2Nhc2UibiI6Yy51bmNvbXByZXNzZWQ9ITB9aWYoIU51bWJlci5pc0ludGVnZXIoYy5vZmZzZXQpfHwhTnVtYmVyLmlzSW50ZWdlcihjLmdlbil8fCFjLmZyZWUmJiFjLnVuY29tcHJlc3NlZCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBlbnRyeSBpbiBYUmVmIHN1YnNlY3Rpb246ICR7c30sICR7b31gKTswPT09biYmYy5mcmVlJiYxPT09cyYmKHM9MCk7dGhpcy5lbnRyaWVzW24rc118fCh0aGlzLmVudHJpZXNbbitzXT1jKX1hLmVudHJ5TnVtPTA7YS5zdHJlYW1Qb3M9dC5wb3M7YS5wYXJzZXJCdWYxPWUuYnVmMTthLnBhcnNlckJ1ZjI9ZS5idWYyO2RlbGV0ZSBhLmZpcnN0RW50cnlOdW07ZGVsZXRlIGEuZW50cnlDb3VudH1pZih0aGlzLmVudHJpZXNbMF0mJiF0aGlzLmVudHJpZXNbMF0uZnJlZSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiB1bmV4cGVjdGVkIGZpcnN0IG9iamVjdCIpO3JldHVybiBufXByb2Nlc3NYUmVmU3RyZWFtKGUpe2lmKCEoInN0cmVhbVN0YXRlImluIHRoaXMpKXtjb25zdCB0PWUuZGljdCxhPXQuZ2V0KCJXIik7bGV0IHI9dC5nZXQoIkluZGV4Iik7cnx8KHI9WzAsdC5nZXQoIlNpemUiKV0pO3RoaXMuc3RyZWFtU3RhdGU9e2VudHJ5UmFuZ2VzOnIsYnl0ZVdpZHRoczphLGVudHJ5TnVtOjAsc3RyZWFtUG9zOmUucG9zfX10aGlzLnJlYWRYUmVmU3RyZWFtKGUpO2RlbGV0ZSB0aGlzLnN0cmVhbVN0YXRlO3JldHVybiBlLmRpY3R9cmVhZFhSZWZTdHJlYW0oZSl7Y29uc3QgdD10aGlzLnN0cmVhbVN0YXRlO2UucG9zPXQuc3RyZWFtUG9zO2NvbnN0W2EsaSxuXT10LmJ5dGVXaWR0aHMscz10LmVudHJ5UmFuZ2VzO2Zvcig7cy5sZW5ndGg+MDspe2NvbnN0W28sY109cztpZighTnVtYmVyLmlzSW50ZWdlcihvKXx8IU51bWJlci5pc0ludGVnZXIoYykpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiByYW5nZSBmaWVsZHM6ICR7b30sICR7Y31gKTtpZighTnVtYmVyLmlzSW50ZWdlcihhKXx8IU51bWJlci5pc0ludGVnZXIoaSl8fCFOdW1iZXIuaXNJbnRlZ2VyKG4pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgZW50cnkgZmllbGRzIGxlbmd0aDogJHtvfSwgJHtjfWApO2ZvcihsZXQgcz10LmVudHJ5TnVtO3M8YzsrK3Mpe3QuZW50cnlOdW09czt0LnN0cmVhbVBvcz1lLnBvcztsZXQgYz0wLGw9MCxoPTA7Zm9yKGxldCB0PTA7dDxhOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICd0eXBlJy4iKTtjPWM8PDh8dH0wPT09YSYmKGM9MSk7Zm9yKGxldCB0PTA7dDxpOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICdvZmZzZXQnLiIpO2w9bDw8OHx0fWZvcihsZXQgdD0wO3Q8bjsrK3Qpe2NvbnN0IHQ9ZS5nZXRCeXRlKCk7aWYoLTE9PT10KXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAnZ2VuZXJhdGlvbicuIik7aD1oPDw4fHR9Y29uc3QgdT17fTt1Lm9mZnNldD1sO3UuZ2VuPWg7c3dpdGNoKGMpe2Nhc2UgMDp1LmZyZWU9ITA7YnJlYWs7Y2FzZSAxOnUudW5jb21wcmVzc2VkPSEwO2JyZWFrO2Nhc2UgMjpicmVhaztkZWZhdWx0OnRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgZW50cnkgdHlwZTogJHtjfWApfXRoaXMuZW50cmllc1tvK3NdfHwodGhpcy5lbnRyaWVzW28rc109dSl9dC5lbnRyeU51bT0wO3Quc3RyZWFtUG9zPWUucG9zO3Muc3BsaWNlKDAsMil9fWluZGV4T2JqZWN0cygpe2Z1bmN0aW9uIHJlYWRUb2tlbihlLHQpe2xldCBhPSIiLHI9ZVt0XTtmb3IoOzEwIT09ciYmMTMhPT1yJiY2MCE9PXImJiEoKyt0Pj1lLmxlbmd0aCk7KXthKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHIpO3I9ZVt0XX1yZXR1cm4gYX1mdW5jdGlvbiBza2lwVW50aWwoZSx0LGEpe2NvbnN0IHI9YS5sZW5ndGgsaT1lLmxlbmd0aDtsZXQgbj0wO2Zvcig7dDxpOyl7bGV0IGk9MDtmb3IoO2k8ciYmZVt0K2ldPT09YVtpXTspKytpO2lmKGk+PXIpYnJlYWs7dCsrO24rK31yZXR1cm4gbn1jb25zdCBlPS9cYihlbmRvYmp8XGQrXHMrXGQrXHMrb2JqfHhyZWZ8dHJhaWxlcilcYi9nLHQ9L1xiKHN0YXJ0eHJlZnxcZCtccytcZCtccytvYmopXGIvZyxhPS9eKFxkKylccysoXGQrKVxzK29ialxiLyxvPW5ldyBVaW50OEFycmF5KFsxMTYsMTE0LDk3LDEwNSwxMDgsMTAxLDExNF0pLGM9bmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsOTcsMTE0LDExNiwxMjAsMTE0LDEwMSwxMDJdKSxsPW5ldyBVaW50OEFycmF5KFs0Nyw4OCw4MiwxMDEsMTAyXSk7dGhpcy5lbnRyaWVzLmxlbmd0aD0wO3RoaXMuX2NhY2hlTWFwLmNsZWFyKCk7Y29uc3QgaD10aGlzLnN0cmVhbTtoLnBvcz0wO2NvbnN0IHU9aC5nZXRCeXRlcygpLGQ9KDAsci5ieXRlc1RvU3RyaW5nKSh1KSxmPXUubGVuZ3RoO2xldCBnPWguc3RhcnQ7Y29uc3QgcD1bXSxtPVtdO2Zvcig7ZzxmOyl7bGV0IGk9dVtnXTtpZig5PT09aXx8MTA9PT1pfHwxMz09PWl8fDMyPT09aSl7KytnO2NvbnRpbnVlfWlmKDM3PT09aSl7ZG97KytnO2lmKGc+PWYpYnJlYWs7aT11W2ddfXdoaWxlKDEwIT09aSYmMTMhPT1pKTtjb250aW51ZX1jb25zdCBiPXJlYWRUb2tlbih1LGcpO2xldCB5O2lmKGIuc3RhcnRzV2l0aCgieHJlZiIpJiYoND09PWIubGVuZ3RofHwvXHMvLnRlc3QoYls0XSkpKXtnKz1za2lwVW50aWwodSxnLG8pO3AucHVzaChnKTtnKz1za2lwVW50aWwodSxnLGMpfWVsc2UgaWYoeT1hLmV4ZWMoYikpe2NvbnN0IHQ9MHx5WzFdLGE9MHx5WzJdLGk9ZytiLmxlbmd0aDtsZXQgbyxjPSExO2lmKHRoaXMuZW50cmllc1t0XSl7aWYodGhpcy5lbnRyaWVzW3RdLmdlbj09PWEpdHJ5e25ldyBuLlBhcnNlcih7bGV4ZXI6bmV3IG4uTGV4ZXIoaC5tYWtlU3ViU3RyZWFtKGkpKX0pLmdldE9iaigpO2M9ITB9Y2F0Y2goZSl7ZSBpbnN0YW5jZW9mIHMuUGFyc2VyRU9GRXhjZXB0aW9uPygwLHIud2FybikoYGluZGV4T2JqZWN0cyAtLSBjaGVja2luZyBvYmplY3QgKCR7Yn0pOiAiJHtlfSIuYCk6Yz0hMH19ZWxzZSBjPSEwO2MmJih0aGlzLmVudHJpZXNbdF09e29mZnNldDpnLWguc3RhcnQsZ2VuOmEsdW5jb21wcmVzc2VkOiEwfSk7ZS5sYXN0SW5kZXg9aTtjb25zdCBwPWUuZXhlYyhkKTtpZihwKXtvPWUubGFzdEluZGV4KzEtZztpZigiZW5kb2JqIiE9PXBbMV0peygwLHIud2FybikoYGluZGV4T2JqZWN0czogRm91bmQgIiR7cFsxXX0iIGluc2lkZSBvZiBhbm90aGVyICJvYmoiLCBjYXVzZWQgYnkgbWlzc2luZyAiZW5kb2JqIiAtLSB0cnlpbmcgdG8gcmVjb3Zlci5gKTtvLT1wWzFdLmxlbmd0aCsxfX1lbHNlIG89Zi1nO2NvbnN0IHc9dS5zdWJhcnJheShnLGcrbyksUz1za2lwVW50aWwodywwLGwpO2lmKFM8byYmd1tTKzVdPDY0KXttLnB1c2goZy1oLnN0YXJ0KTt0aGlzLl94cmVmU3Rtcy5hZGQoZy1oLnN0YXJ0KX1nKz1vfWVsc2UgaWYoYi5zdGFydHNXaXRoKCJ0cmFpbGVyIikmJig3PT09Yi5sZW5ndGh8fC9ccy8udGVzdChiWzddKSkpe3AucHVzaChnKTtjb25zdCBlPWcrYi5sZW5ndGg7bGV0IGE7dC5sYXN0SW5kZXg9ZTtjb25zdCBpPXQuZXhlYyhkKTtpZihpKXthPXQubGFzdEluZGV4KzEtZztpZigic3RhcnR4cmVmIiE9PWlbMV0peygwLHIud2FybikoYGluZGV4T2JqZWN0czogRm91bmQgIiR7aVsxXX0iIGFmdGVyICJ0cmFpbGVyIiwgY2F1c2VkIGJ5IG1pc3NpbmcgInN0YXJ0eHJlZiIgLS0gdHJ5aW5nIHRvIHJlY292ZXIuYCk7YS09aVsxXS5sZW5ndGgrMX19ZWxzZSBhPWYtZztnKz1hfWVsc2UgZys9Yi5sZW5ndGgrMX1mb3IoY29uc3QgZSBvZiBtKXt0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2goZSk7dGhpcy5yZWFkWFJlZighMCl9Y29uc3QgYj1bXTtsZXQgeSx3LFM9ITE7Zm9yKGNvbnN0IGUgb2YgcCl7aC5wb3M9ZTtjb25zdCB0PW5ldyBuLlBhcnNlcih7bGV4ZXI6bmV3IG4uTGV4ZXIoaCkseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMCxyZWNvdmVyeU1vZGU6ITB9KSxhPXQuZ2V0T2JqKCk7aWYoISgwLGkuaXNDbWQpKGEsInRyYWlsZXIiKSljb250aW51ZTtjb25zdCByPXQuZ2V0T2JqKCk7aWYociBpbnN0YW5jZW9mIGkuRGljdCl7Yi5wdXNoKHIpO3IuaGFzKCJFbmNyeXB0IikmJihTPSEwKX19Zm9yKGNvbnN0IGUgb2ZbLi4uYiwiZ2VuRmFsbGJhY2siLC4uLmJdKXtpZigiZ2VuRmFsbGJhY2siPT09ZSl7aWYoIXcpYnJlYWs7dGhpcy5fZ2VuZXJhdGlvbkZhbGxiYWNrPSEwO2NvbnRpbnVlfWxldCB0PSExO3RyeXtjb25zdCBhPWUuZ2V0KCJSb290Iik7aWYoIShhIGluc3RhbmNlb2YgaS5EaWN0KSljb250aW51ZTtjb25zdCByPWEuZ2V0KCJQYWdlcyIpO2lmKCEociBpbnN0YW5jZW9mIGkuRGljdCkpY29udGludWU7Y29uc3Qgbj1yLmdldCgiQ291bnQiKTtOdW1iZXIuaXNJbnRlZ2VyKG4pJiYodD0hMCl9Y2F0Y2goZSl7dz1lO2NvbnRpbnVlfWlmKHQmJighU3x8ZS5oYXMoIkVuY3J5cHQiKSkmJmUuaGFzKCJJRCIpKXJldHVybiBlO3k9ZX1pZih5KXJldHVybiB5O2lmKHRoaXMudG9wRGljdClyZXR1cm4gdGhpcy50b3BEaWN0O3Rocm93IG5ldyByLkludmFsaWRQREZFeGNlcHRpb24oIkludmFsaWQgUERGIHN0cnVjdHVyZS4iKX1yZWFkWFJlZihlPSExKXtjb25zdCB0PXRoaXMuc3RyZWFtLGE9bmV3IFNldDtmb3IoO3RoaXMuc3RhcnRYUmVmUXVldWUubGVuZ3RoOyl7dHJ5e2NvbnN0IGU9dGhpcy5zdGFydFhSZWZRdWV1ZVswXTtpZihhLmhhcyhlKSl7KDAsci53YXJuKSgicmVhZFhSZWYgLSBza2lwcGluZyBYUmVmIHRhYmxlIHNpbmNlIGl0IHdhcyBhbHJlYWR5IHBhcnNlZC4iKTt0aGlzLnN0YXJ0WFJlZlF1ZXVlLnNoaWZ0KCk7Y29udGludWV9YS5hZGQoZSk7dC5wb3M9ZSt0LnN0YXJ0O2NvbnN0IHM9bmV3IG4uUGFyc2VyKHtsZXhlcjpuZXcgbi5MZXhlcih0KSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7bGV0IGMsbD1zLmdldE9iaigpO2lmKCgwLGkuaXNDbWQpKGwsInhyZWYiKSl7Yz10aGlzLnByb2Nlc3NYUmVmVGFibGUocyk7dGhpcy50b3BEaWN0fHwodGhpcy50b3BEaWN0PWMpO2w9Yy5nZXQoIlhSZWZTdG0iKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGwpJiYhdGhpcy5feHJlZlN0bXMuaGFzKGwpKXt0aGlzLl94cmVmU3Rtcy5hZGQobCk7dGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKGwpfX1lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGwpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIGhlYWRlciIpO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihzLmdldE9iaigpKSYmKDAsaS5pc0NtZCkocy5nZXRPYmooKSwib2JqIikmJihsPXMuZ2V0T2JqKCkpaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIik7Yz10aGlzLnByb2Nlc3NYUmVmU3RyZWFtKGwpO3RoaXMudG9wRGljdHx8KHRoaXMudG9wRGljdD1jKTtpZighYyl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRmFpbGVkIHRvIHJlYWQgWFJlZiBzdHJlYW0iKX1sPWMuZ2V0KCJQcmV2Iik7TnVtYmVyLmlzSW50ZWdlcihsKT90aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gobCk6bCBpbnN0YW5jZW9mIGkuUmVmJiZ0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gobC5udW0pfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBzLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci5pbmZvKSgiKHdoaWxlIHJlYWRpbmcgWFJlZik6ICIrZSl9dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpfWlmKHRoaXMudG9wRGljdClyZXR1cm4gdGhpcy50b3BEaWN0O2lmKCFlKXRocm93IG5ldyBzLlhSZWZQYXJzZUV4Y2VwdGlvbn1nZXQgbGFzdFhSZWZTdHJlYW1Qb3MoKXtyZXR1cm4gdGhpcy5feHJlZlN0bXMuc2l6ZT4wP01hdGgubWF4KC4uLnRoaXMuX3hyZWZTdG1zKTpudWxsfWdldEVudHJ5KGUpe2NvbnN0IHQ9dGhpcy5lbnRyaWVzW2VdO3JldHVybiB0JiYhdC5mcmVlJiZ0Lm9mZnNldD90Om51bGx9ZmV0Y2hJZlJlZihlLHQ9ITEpe3JldHVybiBlIGluc3RhbmNlb2YgaS5SZWY/dGhpcy5mZXRjaChlLHQpOmV9ZmV0Y2goZSx0PSExKXtpZighKGUgaW5zdGFuY2VvZiBpLlJlZikpdGhyb3cgbmV3IEVycm9yKCJyZWYgb2JqZWN0IGlzIG5vdCBhIHJlZmVyZW5jZSIpO2NvbnN0IGE9ZS5udW0sbj10aGlzLl9jYWNoZU1hcC5nZXQoYSk7aWYodm9pZCAwIT09bil7biBpbnN0YW5jZW9mIGkuRGljdCYmIW4ub2JqSWQmJihuLm9iaklkPWUudG9TdHJpbmcoKSk7cmV0dXJuIG59bGV0IHM9dGhpcy5nZXRFbnRyeShhKTtpZihudWxsPT09cyl7dGhpcy5fY2FjaGVNYXAuc2V0KGEscyk7cmV0dXJuIHN9aWYodGhpcy5fcGVuZGluZ1JlZnMuaGFzKGUpKXt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSk7KDAsci53YXJuKShgSWdub3JpbmcgY2lyY3VsYXIgcmVmZXJlbmNlOiAke2V9LmApO3JldHVybiBpLkNJUkNVTEFSX1JFRn10aGlzLl9wZW5kaW5nUmVmcy5wdXQoZSk7dHJ5e3M9cy51bmNvbXByZXNzZWQ/dGhpcy5mZXRjaFVuY29tcHJlc3NlZChlLHMsdCk6dGhpcy5mZXRjaENvbXByZXNzZWQoZSxzLHQpO3RoaXMuX3BlbmRpbmdSZWZzLnJlbW92ZShlKX1jYXRjaCh0KXt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSk7dGhyb3cgdH1zIGluc3RhbmNlb2YgaS5EaWN0P3Mub2JqSWQ9ZS50b1N0cmluZygpOnMgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0mJihzLmRpY3Qub2JqSWQ9ZS50b1N0cmluZygpKTtyZXR1cm4gc31mZXRjaFVuY29tcHJlc3NlZChlLHQsYT0hMSl7Y29uc3QgYz1lLmdlbjtsZXQgbD1lLm51bTtpZih0LmdlbiE9PWMpe2NvbnN0IG49YEluY29uc2lzdGVudCBnZW5lcmF0aW9uIGluIFhSZWY6ICR7ZX1gO2lmKHRoaXMuX2dlbmVyYXRpb25GYWxsYmFjayYmdC5nZW48Yyl7KDAsci53YXJuKShuKTtyZXR1cm4gdGhpcy5mZXRjaFVuY29tcHJlc3NlZChpLlJlZi5nZXQobCx0LmdlbiksdCxhKX10aHJvdyBuZXcgcy5YUmVmRW50cnlFeGNlcHRpb24obil9Y29uc3QgaD10aGlzLnN0cmVhbS5tYWtlU3ViU3RyZWFtKHQub2Zmc2V0K3RoaXMuc3RyZWFtLnN0YXJ0KSx1PW5ldyBuLlBhcnNlcih7bGV4ZXI6bmV3IG4uTGV4ZXIoaCkseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pLGQ9dS5nZXRPYmooKSxmPXUuZ2V0T2JqKCksZz11LmdldE9iaigpO2lmKGQhPT1sfHxmIT09Y3x8IShnIGluc3RhbmNlb2YgaS5DbWQpKXRocm93IG5ldyBzLlhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkICh1bmNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKTtpZigib2JqIiE9PWcuY21kKXtpZihnLmNtZC5zdGFydHNXaXRoKCJvYmoiKSl7bD1wYXJzZUludChnLmNtZC5zdWJzdHJpbmcoMyksMTApO2lmKCFOdW1iZXIuaXNOYU4obCkpcmV0dXJuIGx9dGhyb3cgbmV3IHMuWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKHVuY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApfSh0PXRoaXMuZW5jcnlwdCYmIWE/dS5nZXRPYmoodGhpcy5lbmNyeXB0LmNyZWF0ZUNpcGhlclRyYW5zZm9ybShsLGMpKTp1LmdldE9iaigpKWluc3RhbmNlb2Ygby5CYXNlU3RyZWFtfHx0aGlzLl9jYWNoZU1hcC5zZXQobCx0KTtyZXR1cm4gdH1mZXRjaENvbXByZXNzZWQoZSx0LGE9ITEpe2NvbnN0IGM9dC5vZmZzZXQsbD10aGlzLmZldGNoKGkuUmVmLmdldChjLDApKTtpZighKGwgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJiYWQgT2JqU3RtIHN0cmVhbSIpO2NvbnN0IGg9bC5kaWN0LmdldCgiRmlyc3QiKSx1PWwuZGljdC5nZXQoIk4iKTtpZighTnVtYmVyLmlzSW50ZWdlcihoKXx8IU51bWJlci5pc0ludGVnZXIodSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoImludmFsaWQgZmlyc3QgYW5kIG4gcGFyYW1ldGVycyBmb3IgT2JqU3RtIHN0cmVhbSIpO2xldCBkPW5ldyBuLlBhcnNlcih7bGV4ZXI6bmV3IG4uTGV4ZXIobCkseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pO2NvbnN0IGY9bmV3IEFycmF5KHUpLGc9bmV3IEFycmF5KHUpO2ZvcihsZXQgZT0wO2U8dTsrK2Upe2NvbnN0IHQ9ZC5nZXRPYmooKTtpZighTnVtYmVyLmlzSW50ZWdlcih0KSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgaW52YWxpZCBvYmplY3QgbnVtYmVyIGluIHRoZSBPYmpTdG0gc3RyZWFtOiAke3R9YCk7Y29uc3QgYT1kLmdldE9iaigpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBpbnZhbGlkIG9iamVjdCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW06ICR7YX1gKTtmW2VdPXQ7Z1tlXT1hfWNvbnN0IHA9KGwuc3RhcnR8fDApK2gsbT1uZXcgQXJyYXkodSk7Zm9yKGxldCBlPTA7ZTx1OysrZSl7Y29uc3QgdD1lPHUtMT9nW2UrMV0tZ1tlXTp2b2lkIDA7aWYodDwwKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIG9mZnNldCBpbiB0aGUgT2JqU3RtIHN0cmVhbS4iKTtkPW5ldyBuLlBhcnNlcih7bGV4ZXI6bmV3IG4uTGV4ZXIobC5tYWtlU3ViU3RyZWFtKHArZ1tlXSx0LGwuZGljdCkpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBhPWQuZ2V0T2JqKCk7bVtlXT1hO2lmKGEgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0pY29udGludWU7Y29uc3QgaT1mW2VdLHM9dGhpcy5lbnRyaWVzW2ldO3MmJnMub2Zmc2V0PT09YyYmcy5nZW49PT1lJiZ0aGlzLl9jYWNoZU1hcC5zZXQoaSxhKX1pZih2b2lkIDA9PT0odD1tW3QuZ2VuXSkpdGhyb3cgbmV3IHMuWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKGNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKTtyZXR1cm4gdH1hc3luYyBmZXRjaElmUmVmQXN5bmMoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIGkuUmVmP3RoaXMuZmV0Y2hBc3luYyhlLHQpOmV9YXN5bmMgZmV0Y2hBc3luYyhlLHQpe3RyeXtyZXR1cm4gdGhpcy5mZXRjaChlLHQpfWNhdGNoKGEpe2lmKCEoYSBpbnN0YW5jZW9mIHMuTWlzc2luZ0RhdGFFeGNlcHRpb24pKXRocm93IGE7YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLnJlcXVlc3RSYW5nZShhLmJlZ2luLGEuZW5kKTtyZXR1cm4gdGhpcy5mZXRjaEFzeW5jKGUsdCl9fWdldENhdGFsb2dPYmooKXtyZXR1cm4gdGhpcy5yb290fX19LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuaXNOb2RlSlM9dm9pZCAwO2NvbnN0IGE9ISgib2JqZWN0IiE9dHlwZW9mIHByb2Nlc3N8fHByb2Nlc3MrIiIhPSJbb2JqZWN0IHByb2Nlc3NdInx8cHJvY2Vzcy52ZXJzaW9ucy5ud3x8cHJvY2Vzcy52ZXJzaW9ucy5lbGVjdHJvbiYmcHJvY2Vzcy50eXBlJiYiYnJvd3NlciIhPT1wcm9jZXNzLnR5cGUpO3QuaXNOb2RlSlM9YX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk1lc3NhZ2VIYW5kbGVyPXZvaWQgMDt2YXIgcj1hKDIpO2NvbnN0IGk9MSxuPTIscz0xLG89MixjPTMsbD00LGg9NSx1PTYsZD03LGY9ODtmdW5jdGlvbiB3cmFwUmVhc29uKGUpe2UgaW5zdGFuY2VvZiBFcnJvcnx8Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZXx8KDAsci51bnJlYWNoYWJsZSkoJ3dyYXBSZWFzb246IEV4cGVjdGVkICJyZWFzb24iIHRvIGJlIGEgKHBvc3NpYmx5IGNsb25lZCkgRXJyb3IuJyk7c3dpdGNoKGUubmFtZSl7Y2FzZSJBYm9ydEV4Y2VwdGlvbiI6cmV0dXJuIG5ldyByLkFib3J0RXhjZXB0aW9uKGUubWVzc2FnZSk7Y2FzZSJNaXNzaW5nUERGRXhjZXB0aW9uIjpyZXR1cm4gbmV3IHIuTWlzc2luZ1BERkV4Y2VwdGlvbihlLm1lc3NhZ2UpO2Nhc2UiUGFzc3dvcmRFeGNlcHRpb24iOnJldHVybiBuZXcgci5QYXNzd29yZEV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5jb2RlKTtjYXNlIlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiI6cmV0dXJuIG5ldyByLlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5zdGF0dXMpO2Nhc2UiVW5rbm93bkVycm9yRXhjZXB0aW9uIjpyZXR1cm4gbmV3IHIuVW5rbm93bkVycm9yRXhjZXB0aW9uKGUubWVzc2FnZSxlLmRldGFpbHMpO2RlZmF1bHQ6cmV0dXJuIG5ldyByLlVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS50b1N0cmluZygpKX19dC5NZXNzYWdlSGFuZGxlcj1jbGFzcyBNZXNzYWdlSGFuZGxlcntjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5zb3VyY2VOYW1lPWU7dGhpcy50YXJnZXROYW1lPXQ7dGhpcy5jb21PYmo9YTt0aGlzLmNhbGxiYWNrSWQ9MTt0aGlzLnN0cmVhbUlkPTE7dGhpcy5zdHJlYW1TaW5rcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5hY3Rpb25IYW5kbGVyPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5fb25Db21PYmpPbk1lc3NhZ2U9ZT0+e2NvbnN0IHQ9ZS5kYXRhO2lmKHQudGFyZ2V0TmFtZSE9PXRoaXMuc291cmNlTmFtZSlyZXR1cm47aWYodC5zdHJlYW0pe3RoaXMuI3QodCk7cmV0dXJufWlmKHQuY2FsbGJhY2spe2NvbnN0IGU9dC5jYWxsYmFja0lkLGE9dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1tlXTtpZighYSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIGNhbGxiYWNrICR7ZX1gKTtkZWxldGUgdGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1tlXTtpZih0LmNhbGxiYWNrPT09aSlhLnJlc29sdmUodC5kYXRhKTtlbHNle2lmKHQuY2FsbGJhY2shPT1uKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBjYWxsYmFjayBjYXNlIik7YS5yZWplY3Qod3JhcFJlYXNvbih0LnJlYXNvbikpfXJldHVybn1jb25zdCByPXRoaXMuYWN0aW9uSGFuZGxlclt0LmFjdGlvbl07aWYoIXIpdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGFjdGlvbiBmcm9tIHdvcmtlcjogJHt0LmFjdGlvbn1gKTtpZih0LmNhbGxiYWNrSWQpe2NvbnN0IGU9dGhpcy5zb3VyY2VOYW1lLHM9dC5zb3VyY2VOYW1lO25ldyBQcm9taXNlKChmdW5jdGlvbihlKXtlKHIodC5kYXRhKSl9KSkudGhlbigoZnVuY3Rpb24ocil7YS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTplLHRhcmdldE5hbWU6cyxjYWxsYmFjazppLGNhbGxiYWNrSWQ6dC5jYWxsYmFja0lkLGRhdGE6cn0pfSksKGZ1bmN0aW9uKHIpe2EucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6ZSx0YXJnZXROYW1lOnMsY2FsbGJhY2s6bixjYWxsYmFja0lkOnQuY2FsbGJhY2tJZCxyZWFzb246d3JhcFJlYXNvbihyKX0pfSkpfWVsc2UgdC5zdHJlYW1JZD90aGlzLiNhKHQpOnIodC5kYXRhKX07YS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLl9vbkNvbU9iak9uTWVzc2FnZSl9b24oZSx0KXtjb25zdCBhPXRoaXMuYWN0aW9uSGFuZGxlcjtpZihhW2VdKXRocm93IG5ldyBFcnJvcihgVGhlcmUgaXMgYWxyZWFkeSBhbiBhY3Rpb25OYW1lIGNhbGxlZCAiJHtlfSJgKTthW2VdPXR9c2VuZChlLHQsYSl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjplLGRhdGE6dH0sYSl9c2VuZFdpdGhQcm9taXNlKGUsdCxhKXtjb25zdCBpPXRoaXMuY2FsbGJhY2tJZCsrLG49bmV3IHIuUHJvbWlzZUNhcGFiaWxpdHk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1tpXT1uO3RyeXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOmUsY2FsbGJhY2tJZDppLGRhdGE6dH0sYSl9Y2F0Y2goZSl7bi5yZWplY3QoZSl9cmV0dXJuIG4ucHJvbWlzZX1zZW5kV2l0aFN0cmVhbShlLHQsYSxpKXtjb25zdCBuPXRoaXMuc3RyZWFtSWQrKyxvPXRoaXMuc291cmNlTmFtZSxjPXRoaXMudGFyZ2V0TmFtZSxsPXRoaXMuY29tT2JqO3JldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe3N0YXJ0OmE9Pntjb25zdCBzPW5ldyByLlByb21pc2VDYXBhYmlsaXR5O3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbbl09e2NvbnRyb2xsZXI6YSxzdGFydENhbGw6cyxwdWxsQ2FsbDpudWxsLGNhbmNlbENhbGw6bnVsbCxpc0Nsb3NlZDohMX07bC5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6YyxhY3Rpb246ZSxzdHJlYW1JZDpuLGRhdGE6dCxkZXNpcmVkU2l6ZTphLmRlc2lyZWRTaXplfSxpKTtyZXR1cm4gcy5wcm9taXNlfSxwdWxsOmU9Pntjb25zdCB0PW5ldyByLlByb21pc2VDYXBhYmlsaXR5O3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbbl0ucHVsbENhbGw9dDtsLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOm8sdGFyZ2V0TmFtZTpjLHN0cmVhbTp1LHN0cmVhbUlkOm4sZGVzaXJlZFNpemU6ZS5kZXNpcmVkU2l6ZX0pO3JldHVybiB0LnByb21pc2V9LGNhbmNlbDplPT57KDAsci5hc3NlcnQpKGUgaW5zdGFuY2VvZiBFcnJvciwiY2FuY2VsIG11c3QgaGF2ZSBhIHZhbGlkIHJlYXNvbiIpO2NvbnN0IHQ9bmV3IHIuUHJvbWlzZUNhcGFiaWxpdHk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tuXS5jYW5jZWxDYWxsPXQ7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tuXS5pc0Nsb3NlZD0hMDtsLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOm8sdGFyZ2V0TmFtZTpjLHN0cmVhbTpzLHN0cmVhbUlkOm4scmVhc29uOndyYXBSZWFzb24oZSl9KTtyZXR1cm4gdC5wcm9taXNlfX0sYSl9I2EoZSl7Y29uc3QgdD1lLnN0cmVhbUlkLGE9dGhpcy5zb3VyY2VOYW1lLGk9ZS5zb3VyY2VOYW1lLG49dGhpcy5jb21PYmoscz10aGlzLG89dGhpcy5hY3Rpb25IYW5kbGVyW2UuYWN0aW9uXSx1PXtlbnF1ZXVlKGUscz0xLG8pe2lmKHRoaXMuaXNDYW5jZWxsZWQpcmV0dXJuO2NvbnN0IGM9dGhpcy5kZXNpcmVkU2l6ZTt0aGlzLmRlc2lyZWRTaXplLT1zO2lmKGM+MCYmdGhpcy5kZXNpcmVkU2l6ZTw9MCl7dGhpcy5zaW5rQ2FwYWJpbGl0eT1uZXcgci5Qcm9taXNlQ2FwYWJpbGl0eTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1uLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTppLHN0cmVhbTpsLHN0cmVhbUlkOnQsY2h1bms6ZX0sbyl9LGNsb3NlKCl7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7bi5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6aSxzdHJlYW06YyxzdHJlYW1JZDp0fSk7ZGVsZXRlIHMuc3RyZWFtU2lua3NbdF19fSxlcnJvcihlKXsoMCxyLmFzc2VydCkoZSBpbnN0YW5jZW9mIEVycm9yLCJlcnJvciBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtpZighdGhpcy5pc0NhbmNlbGxlZCl7dGhpcy5pc0NhbmNlbGxlZD0hMDtuLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTppLHN0cmVhbTpoLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX19LHNpbmtDYXBhYmlsaXR5Om5ldyByLlByb21pc2VDYXBhYmlsaXR5LG9uUHVsbDpudWxsLG9uQ2FuY2VsOm51bGwsaXNDYW5jZWxsZWQ6ITEsZGVzaXJlZFNpemU6ZS5kZXNpcmVkU2l6ZSxyZWFkeTpudWxsfTt1LnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTt1LnJlYWR5PXUuc2lua0NhcGFiaWxpdHkucHJvbWlzZTt0aGlzLnN0cmVhbVNpbmtzW3RdPXU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3QobyhlLmRhdGEsdSkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7bi5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6aSxzdHJlYW06ZixzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbihlKXtuLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTppLHN0cmVhbTpmLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX0pKX0jdChlKXtjb25zdCB0PWUuc3RyZWFtSWQsYT10aGlzLnNvdXJjZU5hbWUsaT1lLnNvdXJjZU5hbWUsbj10aGlzLmNvbU9iaixnPXRoaXMuc3RyZWFtQ29udHJvbGxlcnNbdF0scD10aGlzLnN0cmVhbVNpbmtzW3RdO3N3aXRjaChlLnN0cmVhbSl7Y2FzZSBmOmUuc3VjY2Vzcz9nLnN0YXJ0Q2FsbC5yZXNvbHZlKCk6Zy5zdGFydENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIGQ6ZS5zdWNjZXNzP2cucHVsbENhbGwucmVzb2x2ZSgpOmcucHVsbENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIHU6aWYoIXApe24ucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOmksc3RyZWFtOmQsc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSk7YnJlYWt9cC5kZXNpcmVkU2l6ZTw9MCYmZS5kZXNpcmVkU2l6ZT4wJiZwLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtwLmRlc2lyZWRTaXplPWUuZGVzaXJlZFNpemU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2UocC5vblB1bGw/LigpKX0pKS50aGVuKChmdW5jdGlvbigpe24ucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOmksc3RyZWFtOmQsc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24oZSl7bi5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6aSxzdHJlYW06ZCxzdHJlYW1JZDp0LHJlYXNvbjp3cmFwUmVhc29uKGUpfSl9KSk7YnJlYWs7Y2FzZSBsOigwLHIuYXNzZXJ0KShnLCJlbnF1ZXVlIHNob3VsZCBoYXZlIHN0cmVhbSBjb250cm9sbGVyIik7aWYoZy5pc0Nsb3NlZClicmVhaztnLmNvbnRyb2xsZXIuZW5xdWV1ZShlLmNodW5rKTticmVhaztjYXNlIGM6KDAsci5hc3NlcnQpKGcsImNsb3NlIHNob3VsZCBoYXZlIHN0cmVhbSBjb250cm9sbGVyIik7aWYoZy5pc0Nsb3NlZClicmVhaztnLmlzQ2xvc2VkPSEwO2cuY29udHJvbGxlci5jbG9zZSgpO3RoaXMuI3IoZyx0KTticmVhaztjYXNlIGg6KDAsci5hc3NlcnQpKGcsImVycm9yIHNob3VsZCBoYXZlIHN0cmVhbSBjb250cm9sbGVyIik7Zy5jb250cm9sbGVyLmVycm9yKHdyYXBSZWFzb24oZS5yZWFzb24pKTt0aGlzLiNyKGcsdCk7YnJlYWs7Y2FzZSBvOmUuc3VjY2Vzcz9nLmNhbmNlbENhbGwucmVzb2x2ZSgpOmcuY2FuY2VsQ2FsbC5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpO3RoaXMuI3IoZyx0KTticmVhaztjYXNlIHM6aWYoIXApYnJlYWs7bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3QocC5vbkNhbmNlbD8uKHdyYXBSZWFzb24oZS5yZWFzb24pKSl9KSkudGhlbigoZnVuY3Rpb24oKXtuLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTppLHN0cmVhbTpvLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKGUpe24ucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOmksc3RyZWFtOm8sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpO3Auc2lua0NhcGFiaWxpdHkucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTtwLmlzQ2FuY2VsbGVkPSEwO2RlbGV0ZSB0aGlzLnN0cmVhbVNpbmtzW3RdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHN0cmVhbSBjYXNlIil9fWFzeW5jI3IoZSx0KXthd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW2Uuc3RhcnRDYWxsPy5wcm9taXNlLGUucHVsbENhbGw/LnByb21pc2UsZS5jYW5jZWxDYWxsPy5wcm9taXNlXSk7ZGVsZXRlIHRoaXMuc3RyZWFtQ29udHJvbGxlcnNbdF19ZGVzdHJveSgpe3RoaXMuY29tT2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuX29uQ29tT2JqT25NZXNzYWdlKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUERGV29ya2VyU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDIpO3QuUERGV29ya2VyU3RyZWFtPWNsYXNzIFBERldvcmtlclN0cmVhbXtjb25zdHJ1Y3RvcihlKXt0aGlzLl9tc2dIYW5kbGVyPWU7dGhpcy5fY29udGVudExlbmd0aD1udWxsO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW51bGw7dGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycz1bXX1nZXRGdWxsUmVhZGVyKCl7KDAsci5hc3NlcnQpKCF0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciwiUERGV29ya2VyU3RyZWFtLmdldEZ1bGxSZWFkZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuIik7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bmV3IFBERldvcmtlclN0cmVhbVJlYWRlcih0aGlzLl9tc2dIYW5kbGVyKTtyZXR1cm4gdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXJ9Z2V0UmFuZ2VSZWFkZXIoZSx0KXtjb25zdCBhPW5ldyBQREZXb3JrZXJTdHJlYW1SYW5nZVJlYWRlcihlLHQsdGhpcy5fbXNnSGFuZGxlcik7dGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5wdXNoKGEpO3JldHVybiBhfWNhbmNlbEFsbFJlcXVlc3RzKGUpe3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyJiZ0aGlzLl9mdWxsUmVxdWVzdFJlYWRlci5jYW5jZWwoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5zbGljZSgwKSl0LmNhbmNlbChlKX19O2NsYXNzIFBERldvcmtlclN0cmVhbVJlYWRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLl9tc2dIYW5kbGVyPWU7dGhpcy5vblByb2dyZXNzPW51bGw7dGhpcy5fY29udGVudExlbmd0aD1udWxsO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ITE7dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ITE7Y29uc3QgdD10aGlzLl9tc2dIYW5kbGVyLnNlbmRXaXRoU3RyZWFtKCJHZXRSZWFkZXIiKTt0aGlzLl9yZWFkZXI9dC5nZXRSZWFkZXIoKTt0aGlzLl9oZWFkZXJzUmVhZHk9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIlJlYWRlckhlYWRlcnNSZWFkeSIpLnRoZW4oKGU9Pnt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD1lLmlzU3RyZWFtaW5nU3VwcG9ydGVkO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ZS5pc1JhbmdlU3VwcG9ydGVkO3RoaXMuX2NvbnRlbnRMZW5ndGg9ZS5jb250ZW50TGVuZ3RofSkpfWdldCBoZWFkZXJzUmVhZHkoKXtyZXR1cm4gdGhpcy5faGVhZGVyc1JlYWR5fWdldCBjb250ZW50TGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2NvbnRlbnRMZW5ndGh9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9YXN5bmMgcmVhZCgpe2NvbnN0e3ZhbHVlOmUsZG9uZTp0fT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO3JldHVybiB0P3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06e3ZhbHVlOmUuYnVmZmVyLGRvbmU6ITF9fWNhbmNlbChlKXt0aGlzLl9yZWFkZXIuY2FuY2VsKGUpfX1jbGFzcyBQREZXb3JrZXJTdHJlYW1SYW5nZVJlYWRlcntjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5fbXNnSGFuZGxlcj1hO3RoaXMub25Qcm9ncmVzcz1udWxsO2NvbnN0IHI9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0UmFuZ2VSZWFkZXIiLHtiZWdpbjplLGVuZDp0fSk7dGhpcy5fcmVhZGVyPXIuZ2V0UmVhZGVyKCl9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuITF9YXN5bmMgcmVhZCgpe2NvbnN0e3ZhbHVlOmUsZG9uZTp0fT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO3JldHVybiB0P3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06e3ZhbHVlOmUuYnVmZmVyLGRvbmU6ITF9fWNhbmNlbChlKXt0aGlzLl9yZWFkZXIuY2FuY2VsKGUpfX19XSx0PXt9O2Z1bmN0aW9uIF9fd19wZGZqc19yZXF1aXJlX18oYSl7dmFyIHI9dFthXTtpZih2b2lkIDAhPT1yKXJldHVybiByLmV4cG9ydHM7dmFyIGk9dFthXT17ZXhwb3J0czp7fX07ZVthXShpLGkuZXhwb3J0cyxfX3dfcGRmanNfcmVxdWlyZV9fKTtyZXR1cm4gaS5leHBvcnRzfV9fd19wZGZqc19yZXF1aXJlX18uZD0oZSx0KT0+e2Zvcih2YXIgYSBpbiB0KV9fd19wZGZqc19yZXF1aXJlX18ubyh0LGEpJiYhX193X3BkZmpzX3JlcXVpcmVfXy5vKGUsYSkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGEse2VudW1lcmFibGU6ITAsZ2V0OnRbYV19KX07X193X3BkZmpzX3JlcXVpcmVfXy5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KTtfX3dfcGRmanNfcmVxdWlyZV9fLnI9ZT0+eyJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9O3ZhciBhPXt9OygoKT0+e3ZhciBlPWE7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJXb3JrZXJNZXNzYWdlSGFuZGxlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQuV29ya2VyTWVzc2FnZUhhbmRsZXJ9fSk7dmFyIHQ9X193X3BkZmpzX3JlcXVpcmVfXygxKX0pKCk7cmV0dXJuIGF9KSgpKSk7", self.location);
|
|
258
|
-
|
|
261
|
+
Q.workerSrc = Z.href;
|
|
259
262
|
} catch {
|
|
260
|
-
|
|
263
|
+
Q.workerSrc = "https://cdn.jsdelivr.net/npm/pdfjs-dist@3.7.107/build/pdf.worker.min.js";
|
|
261
264
|
}
|
|
262
|
-
|
|
265
|
+
R.value = !0, console.log("PDF.js loaded successfully"), _();
|
|
263
266
|
} catch (l) {
|
|
264
267
|
console.error("Failed to load PDF.js:", l);
|
|
265
268
|
}
|
|
266
|
-
},
|
|
267
|
-
|
|
268
|
-
if (
|
|
269
|
+
}, _ = () => {
|
|
270
|
+
q.value || (U.value = window.devicePixelRatio || 1, e.value = window.innerHeight, xl(() => {
|
|
271
|
+
if (h.value && hl(), typeof b.src == "string" && b.src.length > 0 || b.src instanceof Uint8Array)
|
|
269
272
|
try {
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
}, 200), window.addEventListener("resize",
|
|
273
|
+
Wl(), setTimeout(() => {
|
|
274
|
+
F();
|
|
275
|
+
}, 200), window.addEventListener("resize", r), O.value = !0;
|
|
273
276
|
} catch (l) {
|
|
274
277
|
console.error("Failed to load PDF document:", l);
|
|
275
278
|
}
|
|
276
|
-
|
|
279
|
+
q.value = !0;
|
|
277
280
|
}));
|
|
278
281
|
};
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
}),
|
|
282
|
-
|
|
283
|
-
}),
|
|
282
|
+
wl(async () => {
|
|
283
|
+
zl();
|
|
284
|
+
}), Sl(() => {
|
|
285
|
+
R.value && _();
|
|
286
|
+
}), C(
|
|
284
287
|
() => b.src,
|
|
285
288
|
(l) => {
|
|
286
|
-
if (!
|
|
289
|
+
if (!R.value) {
|
|
287
290
|
console.log("PDF.js not loaded yet, delaying PDF load...");
|
|
288
291
|
return;
|
|
289
292
|
}
|
|
290
293
|
if (typeof l == "string" && l.length > 0 || l instanceof Uint8Array)
|
|
291
294
|
try {
|
|
292
|
-
|
|
293
|
-
w = null,
|
|
294
|
-
|
|
295
|
-
}),
|
|
295
|
+
I.value = !0, N && (N.disconnect(), N = null), setTimeout(() => {
|
|
296
|
+
w = null, P(), Wl(), i.value.promise.then(() => {
|
|
297
|
+
F();
|
|
298
|
+
}), O.value || (window.addEventListener("resize", r), O.value = !0);
|
|
296
299
|
}, 200);
|
|
297
300
|
} catch (Z) {
|
|
298
301
|
console.error("Failed to load PDF document:", Z);
|
|
299
302
|
}
|
|
300
303
|
}
|
|
301
|
-
),
|
|
302
|
-
() =>
|
|
304
|
+
), C(
|
|
305
|
+
() => R.value,
|
|
303
306
|
(l) => {
|
|
304
|
-
l && !
|
|
307
|
+
l && !q.value && _();
|
|
305
308
|
}
|
|
306
|
-
),
|
|
309
|
+
), Vl({
|
|
307
310
|
reload: () => {
|
|
308
|
-
|
|
309
|
-
|
|
311
|
+
I.value = !0, setTimeout(() => {
|
|
312
|
+
F();
|
|
310
313
|
}, 200);
|
|
311
314
|
},
|
|
312
315
|
loadMorePages: () => {
|
|
313
|
-
|
|
316
|
+
B();
|
|
314
317
|
}
|
|
315
|
-
}),
|
|
316
|
-
clearTimeout(
|
|
318
|
+
}), Dl(() => {
|
|
319
|
+
clearTimeout(f), clearTimeout(v), cancelAnimationFrame($), N && (N.disconnect(), N = null), P(), O.value && window.removeEventListener("resize", r);
|
|
317
320
|
});
|
|
318
|
-
let
|
|
319
|
-
const
|
|
320
|
-
const l =
|
|
321
|
+
let $;
|
|
322
|
+
const sl = (l) => 1 - Math.pow(1 - l, 3), Il = () => {
|
|
323
|
+
const l = a.value;
|
|
321
324
|
if (!l)
|
|
322
325
|
return;
|
|
323
|
-
const Z = 500, d = l.scrollTop, c = performance.now(),
|
|
324
|
-
const
|
|
325
|
-
l.scrollTo(0, S),
|
|
326
|
+
const Z = 500, d = l.scrollTop, c = performance.now(), W = (M) => {
|
|
327
|
+
const z = M - c, t = Math.min(z / Z, 1), ll = sl(t), S = d * (1 - ll);
|
|
328
|
+
l.scrollTo(0, S), t < 1 && ($ = requestAnimationFrame(W));
|
|
326
329
|
};
|
|
327
|
-
cancelAnimationFrame(
|
|
330
|
+
cancelAnimationFrame($), requestAnimationFrame(W);
|
|
328
331
|
};
|
|
329
|
-
return
|
|
332
|
+
return C(
|
|
330
333
|
() => b.page,
|
|
331
334
|
(l) => {
|
|
332
|
-
if (l < 1 || l >
|
|
335
|
+
if (l < 1 || l > m.value || !a.value)
|
|
333
336
|
return;
|
|
334
337
|
let Z = 0;
|
|
335
|
-
for (let d = 0; d < l - 1 && d <
|
|
336
|
-
Z +=
|
|
337
|
-
|
|
338
|
+
for (let d = 0; d < l - 1 && d < u.value.length; d++)
|
|
339
|
+
Z += u.value[d + 1] - u.value[d] || 0;
|
|
340
|
+
a.value.scrollTo(0, Z);
|
|
338
341
|
}
|
|
339
|
-
),
|
|
340
|
-
() =>
|
|
342
|
+
), C(
|
|
343
|
+
() => j.value,
|
|
341
344
|
(l) => {
|
|
342
|
-
|
|
345
|
+
X("onPageChange", l);
|
|
343
346
|
}
|
|
344
|
-
), (l, Z) => (
|
|
345
|
-
|
|
346
|
-
|
|
347
|
+
), (l, Z) => (T(), L("div", jl, [
|
|
348
|
+
R.value ? (T(), L("div", Ul, [
|
|
349
|
+
o("div", {
|
|
347
350
|
ref_key: "scroller",
|
|
348
|
-
ref:
|
|
351
|
+
ref: a,
|
|
349
352
|
class: "pdf-vue3-scroller",
|
|
350
|
-
style:
|
|
351
|
-
onScroll:
|
|
353
|
+
style: J([{ height: "100%", "overflow-y": "auto" }, { maxHeight: `${e.value}px` }]),
|
|
354
|
+
onScroll: Ll
|
|
352
355
|
}, [
|
|
353
|
-
|
|
356
|
+
o("div", {
|
|
354
357
|
class: "pdf-vue3-canvas-container",
|
|
355
358
|
ref_key: "container",
|
|
356
|
-
ref:
|
|
357
|
-
style:
|
|
359
|
+
ref: h,
|
|
360
|
+
style: J([{ margin: "0 auto" }, {
|
|
358
361
|
width: isNaN(Number(b.pdfWidth)) ? b.pdfWidth : `${b.pdfWidth}px`
|
|
359
362
|
}])
|
|
360
363
|
}, null, 4),
|
|
361
|
-
|
|
364
|
+
V.value < m.value && m.value > 0 ? (T(), L("div", kl, " Loading more pages... (" + n(V.value) + "/" + n(m.value) + ") ", 1)) : K("", !0)
|
|
362
365
|
], 36)
|
|
363
|
-
])) : (
|
|
364
|
-
b.showProgress &&
|
|
365
|
-
|
|
366
|
+
])) : (T(), L("div", Jl, " Loading PDF library... ")),
|
|
367
|
+
b.showProgress && R.value ? (T(), L("div", Fl, [
|
|
368
|
+
bl(g).progress ? dl(l.$slots, "progress", {
|
|
366
369
|
key: 0,
|
|
367
|
-
loadRatio:
|
|
368
|
-
}) : (
|
|
370
|
+
loadRatio: y.value
|
|
371
|
+
}) : (T(), L("div", {
|
|
369
372
|
key: 1,
|
|
370
|
-
style:
|
|
371
|
-
width: `${
|
|
372
|
-
opacity:
|
|
373
|
+
style: J([{ width: "0%", height: "4px", transition: "all 0.2s" }, {
|
|
374
|
+
width: `${y.value}%`,
|
|
375
|
+
opacity: y.value < 100 ? "1" : "0",
|
|
373
376
|
backgroundColor: b.progressColor
|
|
374
377
|
}])
|
|
375
378
|
}, null, 4))
|
|
376
|
-
])) :
|
|
377
|
-
b.showPageTooltip &&
|
|
378
|
-
|
|
379
|
+
])) : K("", !0),
|
|
380
|
+
b.showPageTooltip && R.value ? (T(), L("div", Ol, [
|
|
381
|
+
bl(g).pageTooltip ? dl(l.$slots, "pageTooltip", {
|
|
379
382
|
key: 0,
|
|
380
|
-
currentPage:
|
|
381
|
-
totalPages:
|
|
382
|
-
}) : (
|
|
383
|
+
currentPage: j.value,
|
|
384
|
+
totalPages: m.value
|
|
385
|
+
}) : (T(), L("div", {
|
|
383
386
|
key: 1,
|
|
384
|
-
style:
|
|
385
|
-
},
|
|
386
|
-
])) :
|
|
387
|
-
b.showBackToTopBtn &&
|
|
387
|
+
style: J([{ padding: "4px 8px", background: "rgba(0, 0, 0, 0.5)", color: "#ffffff", "font-size": "16px", "border-radius": "6px", display: "inline-block", transition: "opacity 0.3s" }, { opacity: A.value && m.value > 0 ? "1" : "0" }])
|
|
388
|
+
}, n(j.value) + "/" + n(m.value), 5))
|
|
389
|
+
])) : K("", !0),
|
|
390
|
+
b.showBackToTopBtn && R.value ? (T(), L("div", {
|
|
388
391
|
key: 4,
|
|
389
392
|
class: "pdf-vue3-backToTopBtn",
|
|
390
|
-
onClick:
|
|
391
|
-
style:
|
|
393
|
+
onClick: Il,
|
|
394
|
+
style: J([
|
|
392
395
|
{ position: "absolute", right: "16px", bottom: "16px", display: "inline-block", "user-select": "none", "pointer-events": "none", opacity: "0", transition: "opacity 0.3s" },
|
|
393
|
-
|
|
396
|
+
H.value > b.scrollThreshold ? { opacity: "1", pointerEvents: "initial" } : void 0
|
|
394
397
|
])
|
|
395
398
|
}, [
|
|
396
|
-
|
|
399
|
+
bl(g).backToTopBtn ? dl(l.$slots, "backToTopBtn", {
|
|
397
400
|
key: 0,
|
|
398
|
-
scrollOffset:
|
|
399
|
-
}) : (
|
|
400
|
-
], 4)) :
|
|
401
|
+
scrollOffset: H.value
|
|
402
|
+
}) : (T(), L("div", tl, nl))
|
|
403
|
+
], 4)) : K("", !0)
|
|
401
404
|
]));
|
|
402
405
|
}
|
|
403
406
|
});
|
|
404
407
|
export {
|
|
405
|
-
|
|
408
|
+
Ql as default
|
|
406
409
|
};
|