bry-biometric-collector 2.2.0-RC02 → 2.2.1
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/CameraBtn_ea347e01_2.2.1.js +506 -0
- package/dist/DocumentCollector_0785fdfe_2.2.1.js +1053 -0
- package/dist/FaceCollector_cb1adcc0_2.2.1.js +1702 -0
- package/dist/bry-biometric-collector-main.js +1 -2
- package/dist/{en-us_46223587_2.2.0-RC02.js → en-us_35a3a8da_2.2.1.js} +12 -19
- package/dist/face_api_0e3ce8c8_2.2.1.js +36288 -0
- package/dist/fingersApi_13cd25ba_2.2.1.js +146 -0
- package/dist/index-no-detector_acb82d83_2.2.1.js +10395 -0
- package/dist/index.js +1 -2
- package/dist/main_452d4a3b_2.2.1.js +23663 -0
- package/dist/{pt-br_7b1f22cd_2.2.0-RC02.js → pt-br_1a694022_2.2.1.js} +2 -9
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/dist/CameraBtn_cf55ed47_2.2.0-RC02.js +0 -643
- package/dist/DocumentCollector_e8c9f640_2.2.0-RC02.js +0 -1427
- package/dist/FaceCollector_aea262f0_2.2.0-RC02.js +0 -2168
- package/dist/face_api_0e3ce8c8_2.2.0-RC02.js +0 -36289
- package/dist/fingersApi_a130549b_2.2.0-RC02.js +0 -147
- package/dist/index-no-detector_acb82d83_2.2.0-RC02.js +0 -10396
- package/dist/main_a9bb653b_2.2.0-RC02.js +0 -25589
@@ -1,1427 +0,0 @@
|
|
1
|
-
import { S as nn, r as on, t as di, w as an, x as q, y as me, z, B as M, C as Ke, D as W, G as Ee, H as he, E as Ae, I as yt, J as ke, K as Xe, _ as it, L as Rt, Y as Fe, O as Ye, P as ze, Q as Te, R as nt, T as ot, V as St, W as Le, X as Je, a4 as at, $ as Dt, a5 as Pt, a6 as Et, a7 as At, a8 as ln, a9 as xt, aa as $t, ab as y, ac as ei, ad as lt, af as ti, ao as Ft, ap as ii, an as st, f as Qe, aq as ni, ag as ct, ar as oi, as as rt, at as ai, au as li, av as Be, aw as si, ax as Tt, l as mi, ay as Lt, ah as ut, aB as hi, aC as bi, aD as gi, aE as _i, aF as ci, aG as ri, aH as wi, aI as sn, aJ as p, aK as le, aL as k, aM as Ze, aN as ee, aO as xe, aP as Z, aQ as Y, aR as Ge, aS as j, aT as ft, aU as cn, aV as m, aW as d, aX as dt, aY as ve, aZ as mt, a_ as It, b0 as re, b1 as bt, b2 as X, b3 as $, b4 as pi, b5 as ht, b7 as ui, b8 as fi } from "./main_a9bb653b_2.2.0-RC02.js";
|
2
|
-
import { c as ae, C as te, a as ki, f as $e, b as vi } from "./CameraBtn_cf55ed47_2.2.0-RC02.js";
|
3
|
-
const { console: be } = sn, v = "src/lib/docTab/DocumentCollector.svelte";
|
4
|
-
function Ci(n) {
|
5
|
-
let i, t, a, c = (
|
6
|
-
/*unique*/
|
7
|
-
n[7]
|
8
|
-
), l, o, s, r, u, f, g, b, E, _, h, S, A, D, F, ie, ne, B, V, I, oe, x = Ot(n);
|
9
|
-
o = new bi({
|
10
|
-
props: { className: "bottom-0" },
|
11
|
-
$$inline: !0
|
12
|
-
}), r = new vi({
|
13
|
-
props: { className: "bottom-0" },
|
14
|
-
$$inline: !0
|
15
|
-
});
|
16
|
-
let R = (
|
17
|
-
/*isCountingDown*/
|
18
|
-
n[6] && Mt(n)
|
19
|
-
), T = (
|
20
|
-
/*$enableFaceApi*/
|
21
|
-
n[23] && !/*isCountingDown*/
|
22
|
-
n[6] && /*faceNotValidated*/
|
23
|
-
n[12] && Wt(n)
|
24
|
-
);
|
25
|
-
function et(G, w) {
|
26
|
-
return (
|
27
|
-
/*$captured*/
|
28
|
-
G[16] ? Ri : Si
|
29
|
-
);
|
30
|
-
}
|
31
|
-
let Ie = et(n), C = Ie(n);
|
32
|
-
const Q = [Ai, Ei], K = [];
|
33
|
-
function se(G, w) {
|
34
|
-
return (
|
35
|
-
/*showUnconformities*/
|
36
|
-
G[1] && (!/*idrndClosed*/
|
37
|
-
G[11] || /*$captured*/
|
38
|
-
G[16]) ? 0 : (
|
39
|
-
/*$cameraStatusStore*/
|
40
|
-
G[14] !== te.OK ? 1 : -1
|
41
|
-
)
|
42
|
-
);
|
43
|
-
}
|
44
|
-
~(B = se(n)) && (V = K[B] = Q[B](n));
|
45
|
-
const ge = {
|
46
|
-
c: function() {
|
47
|
-
i = p("div"), t = p("div"), a = p("div"), x.c(), l = j(), ft(o.$$.fragment), s = j(), ft(r.$$.fragment), u = j(), f = p("canvas"), g = j(), b = p("canvas"), E = j(), _ = p("canvas"), h = j(), R && R.c(), S = j(), T && T.c(), D = j(), F = p("div"), C.c(), ne = j(), V && V.c(), I = cn(), m(f, "id", "bry-ce-displayCanvas"), m(f, "class", "max-w-full"), k(f, v, 531, 10, 20859), m(b, "id", "bry-ce-detectionsCanvas"), m(b, "class", "absolute top-0 left-0 max-w-full"), k(b, v, 533, 10, 20976), m(_, "id", "bry-ce-maskCanvas"), m(_, "class", "absolute top-0 left-0 max-w-full"), k(_, v, 538, 10, 21142), m(a, "class", "relative"), a.hidden = A = /*$cameraStatusStore*/
|
48
|
-
n[14] !== te.OK, k(a, v, 512, 8, 20133), m(F, "class", "px-4 sm:px-0 mt-[1em]"), F.hidden = ie = !/*showCaptureButton*/
|
49
|
-
n[0], k(F, v, 556, 8, 22027), m(t, "class", "relative mx-auto"), k(t, v, 511, 6, 20094), m(i, "class", "flex flex-col justify-between"), k(i, v, 510, 4, 20019);
|
50
|
-
},
|
51
|
-
m: function(w, U) {
|
52
|
-
q(w, i, U), d(i, t), d(t, a), x.m(a, null), d(a, l), dt(o, a, null), d(a, s), dt(r, a, null), d(a, u), d(a, f), n[42](f), d(a, g), d(a, b), n[43](b), d(a, E), d(a, _), n[44](_), d(a, h), R && R.m(a, null), d(a, S), T && T.m(a, null), d(t, D), d(t, F), C.m(F, null), n[48](i), q(w, ne, U), ~B && K[B].m(w, U), q(w, I, U), oe = !0;
|
53
|
-
},
|
54
|
-
p: function(w, U) {
|
55
|
-
U[0] & /*unique*/
|
56
|
-
128 && di(c, c = /*unique*/
|
57
|
-
w[7]) ? (x.d(1), x = Ot(w), x.c(), x.m(a, l)) : x.p(w, U), /*isCountingDown*/
|
58
|
-
w[6] ? R ? (R.p(w, U), U[0] & /*isCountingDown*/
|
59
|
-
64 && Z(R, 1)) : (R = Mt(w), R.c(), Z(R, 1), R.m(a, S)) : R && (Ze(), ee(R, 1, 1, () => {
|
60
|
-
R = null;
|
61
|
-
}), xe()), /*$enableFaceApi*/
|
62
|
-
w[23] && !/*isCountingDown*/
|
63
|
-
w[6] && /*faceNotValidated*/
|
64
|
-
w[12] ? T ? (T.p(w, U), U[0] & /*$enableFaceApi, isCountingDown, faceNotValidated*/
|
65
|
-
8392768 && Z(T, 1)) : (T = Wt(w), T.c(), Z(T, 1), T.m(a, null)) : T && (Ze(), ee(T, 1, 1, () => {
|
66
|
-
T = null;
|
67
|
-
}), xe()), (!oe || U[0] & /*$cameraStatusStore*/
|
68
|
-
16384 && A !== (A = /*$cameraStatusStore*/
|
69
|
-
w[14] !== te.OK)) && ve(a, "hidden", A), Ie === (Ie = et(w)) && C ? C.p(w, U) : (C.d(1), C = Ie(w), C && (C.c(), C.m(F, null))), (!oe || U[0] & /*showCaptureButton*/
|
70
|
-
1 && ie !== (ie = !/*showCaptureButton*/
|
71
|
-
w[0])) && ve(F, "hidden", ie);
|
72
|
-
let ue = B;
|
73
|
-
B = se(w), B === ue ? ~B && K[B].p(w, U) : (V && (Ze(), ee(K[ue], 1, 1, () => {
|
74
|
-
K[ue] = null;
|
75
|
-
}), xe()), ~B ? (V = K[B], V ? V.p(w, U) : (V = K[B] = Q[B](w), V.c()), Z(V, 1), V.m(I.parentNode, I)) : V = null);
|
76
|
-
},
|
77
|
-
i: function(w) {
|
78
|
-
oe || (Z(o.$$.fragment, w), Z(r.$$.fragment, w), Z(R), Z(T), Z(V), oe = !0);
|
79
|
-
},
|
80
|
-
o: function(w) {
|
81
|
-
ee(o.$$.fragment, w), ee(r.$$.fragment, w), ee(R), ee(T), ee(V), oe = !1;
|
82
|
-
},
|
83
|
-
d: function(w) {
|
84
|
-
w && Y(i), x.d(w), mt(o), mt(r), n[42](null), n[43](null), n[44](null), R && R.d(), T && T.d(), C.d(), n[48](null), w && Y(ne), ~B && K[B].d(w), w && Y(I);
|
85
|
-
}
|
86
|
-
};
|
87
|
-
return z("SvelteRegisterBlock", {
|
88
|
-
block: ge,
|
89
|
-
id: Ci.name,
|
90
|
-
type: "else",
|
91
|
-
source: "(510:2) {:else}",
|
92
|
-
ctx: n
|
93
|
-
}), ge;
|
94
|
-
}
|
95
|
-
function yi(n) {
|
96
|
-
let i, t, a, c, l, o = (
|
97
|
-
/*$isLoadingAPP*/
|
98
|
-
n[17] && Ut(n)
|
99
|
-
);
|
100
|
-
const s = {
|
101
|
-
c: function() {
|
102
|
-
i = p("slot"), t = p("div"), a = p("img"), l = j(), o && o.c(), It(a.src, c = wi) || m(a, "src", c), m(a, "alt", "loading gif"), m(a, "class", "m-auto h-[10em] lg:h-[12em]"), k(a, v, 503, 8, 19736), m(t, "class", "translate-y-1/3 md:translate-y-1/4 xl:translate-y-1/2"), k(t, v, 502, 6, 19660), m(i, "name", "obtaining-photo-gif"), m(i, "class", "block h-[17em] lg:h-[21.6em] xl:h-[30em]"), k(i, v, 501, 4, 19571);
|
103
|
-
},
|
104
|
-
m: function(u, f) {
|
105
|
-
q(u, i, f), d(i, t), d(t, a), d(t, l), o && o.m(t, null);
|
106
|
-
},
|
107
|
-
p: function(u, f) {
|
108
|
-
/*$isLoadingAPP*/
|
109
|
-
u[17] ? o ? o.p(u, f) : (o = Ut(u), o.c(), o.m(t, null)) : o && (o.d(1), o = null);
|
110
|
-
},
|
111
|
-
i: le,
|
112
|
-
o: le,
|
113
|
-
d: function(u) {
|
114
|
-
u && Y(i), o && o.d();
|
115
|
-
}
|
116
|
-
};
|
117
|
-
return z("SvelteRegisterBlock", {
|
118
|
-
block: s,
|
119
|
-
id: yi.name,
|
120
|
-
type: "if",
|
121
|
-
source: "(501:2) {#if $isLoadingAPP}",
|
122
|
-
ctx: n
|
123
|
-
}), s;
|
124
|
-
}
|
125
|
-
function Ot(n) {
|
126
|
-
let i, t, a;
|
127
|
-
const c = {
|
128
|
-
c: function() {
|
129
|
-
i = p("video"), m(i, "id", "bry-cc-camera-video-tag"), m(i, "class", "absolute -z-10"), i.playsInline = !0, i.muted = !0, i.autoplay = !0, k(i, v, 515, 12, 20359);
|
130
|
-
},
|
131
|
-
m: function(o, s) {
|
132
|
-
q(o, i, s), n[40](i), t || (a = [
|
133
|
-
re(
|
134
|
-
i,
|
135
|
-
"canplay",
|
136
|
-
/*canplay_handler*/
|
137
|
-
n[41],
|
138
|
-
!1,
|
139
|
-
!1,
|
140
|
-
!1,
|
141
|
-
!1
|
142
|
-
),
|
143
|
-
re(
|
144
|
-
i,
|
145
|
-
"play",
|
146
|
-
/*play*/
|
147
|
-
n[2],
|
148
|
-
{ once: !0 },
|
149
|
-
!1,
|
150
|
-
!1,
|
151
|
-
!1
|
152
|
-
)
|
153
|
-
], t = !0);
|
154
|
-
},
|
155
|
-
p: le,
|
156
|
-
d: function(o) {
|
157
|
-
o && Y(i), n[40](null), t = !1, bt(a);
|
158
|
-
}
|
159
|
-
};
|
160
|
-
return z("SvelteRegisterBlock", {
|
161
|
-
block: c,
|
162
|
-
id: Ot.name,
|
163
|
-
type: "key",
|
164
|
-
source: "(515:10) {#key unique}",
|
165
|
-
ctx: n
|
166
|
-
}), c;
|
167
|
-
}
|
168
|
-
function Mt(n) {
|
169
|
-
let i, t, a = (
|
170
|
-
/*$_*/
|
171
|
-
n[26]("faceCollector.stayStill") + ""
|
172
|
-
), c, l, o;
|
173
|
-
const s = {
|
174
|
-
c: function() {
|
175
|
-
i = p("div"), t = p("span"), c = X(a), m(t, "class", "absolute left-1/2 -translate-x-1/2 top-[10%] ce-dui-badge ce-dui-badge-lg h-[2em] text-4xl 4xl:text-base w-[12.1em]"), k(t, v, 541, 12, 21347), k(i, v, 540, 10, 21281);
|
176
|
-
},
|
177
|
-
m: function(u, f) {
|
178
|
-
q(u, i, f), d(i, t), d(t, c), o = !0;
|
179
|
-
},
|
180
|
-
p: function(u, f) {
|
181
|
-
(!o || f[0] & /*$_*/
|
182
|
-
67108864) && a !== (a = /*$_*/
|
183
|
-
u[26]("faceCollector.stayStill") + "") && $(c, a);
|
184
|
-
},
|
185
|
-
i: function(u) {
|
186
|
-
o || (pi(() => {
|
187
|
-
o && (l || (l = ht(i, $e, { delay: 250, duration: 300 }, !0)), l.run(1));
|
188
|
-
}), o = !0);
|
189
|
-
},
|
190
|
-
o: function(u) {
|
191
|
-
l || (l = ht(i, $e, { delay: 250, duration: 300 }, !1)), l.run(0), o = !1;
|
192
|
-
},
|
193
|
-
d: function(u) {
|
194
|
-
u && Y(i), u && l && l.end();
|
195
|
-
}
|
196
|
-
};
|
197
|
-
return z("SvelteRegisterBlock", {
|
198
|
-
block: s,
|
199
|
-
id: Mt.name,
|
200
|
-
type: "if",
|
201
|
-
source: "(540:10) {#if isCountingDown}",
|
202
|
-
ctx: n
|
203
|
-
}), s;
|
204
|
-
}
|
205
|
-
function Wt(n) {
|
206
|
-
let i, t, a = (
|
207
|
-
/*$_*/
|
208
|
-
n[26](`${/*faceValidationAlert*/
|
209
|
-
n[13]}`) + ""
|
210
|
-
), c, l, o;
|
211
|
-
const s = {
|
212
|
-
c: function() {
|
213
|
-
i = p("div"), t = p("span"), c = X(a), m(t, "class", "absolute left-1/2 -translate-x-1/2 top-[10%] ce-dui-badge ce-dui-badge-lg h-[2em] text-4xl 4xl:text-base w-[12.1em]"), k(t, v, 549, 16, 21745), k(i, v, 548, 14, 21675);
|
214
|
-
},
|
215
|
-
m: function(u, f) {
|
216
|
-
q(u, i, f), d(i, t), d(t, c), o = !0;
|
217
|
-
},
|
218
|
-
p: function(u, f) {
|
219
|
-
(!o || f[0] & /*$_, faceValidationAlert*/
|
220
|
-
67117056) && a !== (a = /*$_*/
|
221
|
-
u[26](`${/*faceValidationAlert*/
|
222
|
-
u[13]}`) + "") && $(c, a);
|
223
|
-
},
|
224
|
-
i: function(u) {
|
225
|
-
o || (pi(() => {
|
226
|
-
o && (l || (l = ht(i, $e, { delay: 250, duration: 300 }, !0)), l.run(1));
|
227
|
-
}), o = !0);
|
228
|
-
},
|
229
|
-
o: function(u) {
|
230
|
-
l || (l = ht(i, $e, { delay: 250, duration: 300 }, !1)), l.run(0), o = !1;
|
231
|
-
},
|
232
|
-
d: function(u) {
|
233
|
-
u && Y(i), u && l && l.end();
|
234
|
-
}
|
235
|
-
};
|
236
|
-
return z("SvelteRegisterBlock", {
|
237
|
-
block: s,
|
238
|
-
id: Wt.name,
|
239
|
-
type: "if",
|
240
|
-
source: "(548:10) {#if $enableFaceApi && !isCountingDown && faceNotValidated}",
|
241
|
-
ctx: n
|
242
|
-
}), s;
|
243
|
-
}
|
244
|
-
function Ri(n) {
|
245
|
-
let i, t, a = (
|
246
|
-
/*$_*/
|
247
|
-
n[26]("faceCollector.finish") + ""
|
248
|
-
), c, l, o, s, r = (
|
249
|
-
/*$_*/
|
250
|
-
n[26]("faceCollector.retakePhoto") + ""
|
251
|
-
), u, f, g;
|
252
|
-
const b = {
|
253
|
-
c: function() {
|
254
|
-
i = p("div"), t = p("button"), c = X(a), o = j(), s = p("button"), u = X(r), t.disabled = l = /*$justification*/
|
255
|
-
n[20].length === 0, m(t, "class", "ce-dui-btn ce-dui-btn-primary ce-dui-btn-block flex-shrink"), k(t, v, 575, 14, 22710), m(s, "id", "bry-cc-retake-button"), m(s, "class", "ce-dui-btn ce-dui-btn-block ce-dui-btn-outline flex-shrink"), k(s, v, 580, 14, 22963), m(i, "class", "ce-dui-btn-group flex"), k(i, v, 574, 12, 22660);
|
256
|
-
},
|
257
|
-
m: function(_, h) {
|
258
|
-
q(_, i, h), d(i, t), d(t, c), d(i, o), d(i, s), d(s, u), f || (g = [
|
259
|
-
re(
|
260
|
-
t,
|
261
|
-
"click",
|
262
|
-
/*click_handler_1*/
|
263
|
-
n[46],
|
264
|
-
!1,
|
265
|
-
!1,
|
266
|
-
!1,
|
267
|
-
!1
|
268
|
-
),
|
269
|
-
re(
|
270
|
-
s,
|
271
|
-
"click",
|
272
|
-
/*click_handler_2*/
|
273
|
-
n[47],
|
274
|
-
!1,
|
275
|
-
!1,
|
276
|
-
!1,
|
277
|
-
!1
|
278
|
-
)
|
279
|
-
], f = !0);
|
280
|
-
},
|
281
|
-
p: function(_, h) {
|
282
|
-
h[0] & /*$_*/
|
283
|
-
67108864 && a !== (a = /*$_*/
|
284
|
-
_[26]("faceCollector.finish") + "") && $(c, a), h[0] & /*$justification*/
|
285
|
-
1048576 && l !== (l = /*$justification*/
|
286
|
-
_[20].length === 0) && ve(t, "disabled", l), h[0] & /*$_*/
|
287
|
-
67108864 && r !== (r = /*$_*/
|
288
|
-
_[26]("faceCollector.retakePhoto") + "") && $(u, r);
|
289
|
-
},
|
290
|
-
d: function(_) {
|
291
|
-
_ && Y(i), f = !1, bt(g);
|
292
|
-
}
|
293
|
-
};
|
294
|
-
return z("SvelteRegisterBlock", {
|
295
|
-
block: b,
|
296
|
-
id: Ri.name,
|
297
|
-
type: "else",
|
298
|
-
source: "(574:10) {:else}",
|
299
|
-
ctx: n
|
300
|
-
}), b;
|
301
|
-
}
|
302
|
-
function Si(n) {
|
303
|
-
let i, t, a, c, l;
|
304
|
-
function o(f, g) {
|
305
|
-
return (
|
306
|
-
/*$isLoading*/
|
307
|
-
f[27] ? Pi : Di
|
308
|
-
);
|
309
|
-
}
|
310
|
-
let s = o(n), r = s(n);
|
311
|
-
const u = {
|
312
|
-
c: function() {
|
313
|
-
i = p("button"), r.c(), m(i, "id", "bry-cc-capture-btn"), i.disabled = t = !/*$faceFound*/
|
314
|
-
n[25] && /*$enableFaceApi*/
|
315
|
-
n[23] || !/*$ready*/
|
316
|
-
n[24] && !/*$enableFaceApi*/
|
317
|
-
n[23], i.hidden = a = !/*showCaptureButton*/
|
318
|
-
n[0], m(i, "class", "ce-dui-btn ce-dui-btn-block ce-dui-btn-primary text-xl"), k(i, v, 560, 12, 22149);
|
319
|
-
},
|
320
|
-
m: function(g, b) {
|
321
|
-
q(g, i, b), r.m(i, null), c || (l = re(
|
322
|
-
i,
|
323
|
-
"click",
|
324
|
-
/*click_handler*/
|
325
|
-
n[45],
|
326
|
-
!1,
|
327
|
-
!1,
|
328
|
-
!1,
|
329
|
-
!1
|
330
|
-
), c = !0);
|
331
|
-
},
|
332
|
-
p: function(g, b) {
|
333
|
-
s === (s = o(g)) && r ? r.p(g, b) : (r.d(1), r = s(g), r && (r.c(), r.m(i, null))), b[0] & /*$faceFound, $enableFaceApi, $ready*/
|
334
|
-
58720256 && t !== (t = !/*$faceFound*/
|
335
|
-
g[25] && /*$enableFaceApi*/
|
336
|
-
g[23] || !/*$ready*/
|
337
|
-
g[24] && !/*$enableFaceApi*/
|
338
|
-
g[23]) && ve(i, "disabled", t), b[0] & /*showCaptureButton*/
|
339
|
-
1 && a !== (a = !/*showCaptureButton*/
|
340
|
-
g[0]) && ve(i, "hidden", a);
|
341
|
-
},
|
342
|
-
d: function(g) {
|
343
|
-
g && Y(i), r.d(), c = !1, l();
|
344
|
-
}
|
345
|
-
};
|
346
|
-
return z("SvelteRegisterBlock", {
|
347
|
-
block: u,
|
348
|
-
id: Si.name,
|
349
|
-
type: "if",
|
350
|
-
source: "(560:10) {#if !$captured}",
|
351
|
-
ctx: n
|
352
|
-
}), u;
|
353
|
-
}
|
354
|
-
function Di(n) {
|
355
|
-
let i = (
|
356
|
-
/*$_*/
|
357
|
-
n[26]("faceCollector.takePicture") + ""
|
358
|
-
), t;
|
359
|
-
const a = {
|
360
|
-
c: function() {
|
361
|
-
t = X(i);
|
362
|
-
},
|
363
|
-
m: function(l, o) {
|
364
|
-
q(l, t, o);
|
365
|
-
},
|
366
|
-
p: function(l, o) {
|
367
|
-
o[0] & /*$_*/
|
368
|
-
67108864 && i !== (i = /*$_*/
|
369
|
-
l[26]("faceCollector.takePicture") + "") && $(t, i);
|
370
|
-
},
|
371
|
-
d: function(l) {
|
372
|
-
l && Y(t);
|
373
|
-
}
|
374
|
-
};
|
375
|
-
return z("SvelteRegisterBlock", {
|
376
|
-
block: a,
|
377
|
-
id: Di.name,
|
378
|
-
type: "else",
|
379
|
-
source: "(570:14) {:else}",
|
380
|
-
ctx: n
|
381
|
-
}), a;
|
382
|
-
}
|
383
|
-
function Pi(n) {
|
384
|
-
let i;
|
385
|
-
const t = {
|
386
|
-
c: function() {
|
387
|
-
i = X("Take picture");
|
388
|
-
},
|
389
|
-
m: function(c, l) {
|
390
|
-
q(c, i, l);
|
391
|
-
},
|
392
|
-
p: le,
|
393
|
-
d: function(c) {
|
394
|
-
c && Y(i);
|
395
|
-
}
|
396
|
-
};
|
397
|
-
return z("SvelteRegisterBlock", {
|
398
|
-
block: t,
|
399
|
-
id: Pi.name,
|
400
|
-
type: "if",
|
401
|
-
source: "(568:14) {#if $isLoading}",
|
402
|
-
ctx: n
|
403
|
-
}), t;
|
404
|
-
}
|
405
|
-
function Ei(n) {
|
406
|
-
let i, t;
|
407
|
-
i = new ki({
|
408
|
-
props: { handler: (
|
409
|
-
/*func*/
|
410
|
-
n[55]
|
411
|
-
) },
|
412
|
-
$$inline: !0
|
413
|
-
});
|
414
|
-
const a = {
|
415
|
-
c: function() {
|
416
|
-
ft(i.$$.fragment);
|
417
|
-
},
|
418
|
-
m: function(l, o) {
|
419
|
-
dt(i, l, o), t = !0;
|
420
|
-
},
|
421
|
-
p: function(l, o) {
|
422
|
-
const s = {};
|
423
|
-
o[0] & /*capturing*/
|
424
|
-
1024 && (s.handler = /*func*/
|
425
|
-
l[55]), i.$set(s);
|
426
|
-
},
|
427
|
-
i: function(l) {
|
428
|
-
t || (Z(i.$$.fragment, l), t = !0);
|
429
|
-
},
|
430
|
-
o: function(l) {
|
431
|
-
ee(i.$$.fragment, l), t = !1;
|
432
|
-
},
|
433
|
-
d: function(l) {
|
434
|
-
mt(i, l);
|
435
|
-
}
|
436
|
-
};
|
437
|
-
return z("SvelteRegisterBlock", {
|
438
|
-
block: a,
|
439
|
-
id: Ei.name,
|
440
|
-
type: "if",
|
441
|
-
source: "(673:57) ",
|
442
|
-
ctx: n
|
443
|
-
}), a;
|
444
|
-
}
|
445
|
-
function Ai(n) {
|
446
|
-
let i, t, a, c, l, o, s, r, u;
|
447
|
-
const f = [Bi, Li, Ti, Fi], g = [];
|
448
|
-
function b(_, h) {
|
449
|
-
return (
|
450
|
-
/*$captured*/
|
451
|
-
_[16] ? (
|
452
|
-
/*$requestResult*/
|
453
|
-
_[18] !== ut.OK ? 1 : (
|
454
|
-
/*$saved*/
|
455
|
-
_[19] ? 3 : 2
|
456
|
-
)
|
457
|
-
) : 0
|
458
|
-
);
|
459
|
-
}
|
460
|
-
o = b(n), s = g[o] = f[o](n);
|
461
|
-
const E = {
|
462
|
-
c: function() {
|
463
|
-
i = p("div"), t = p("img"), l = j(), s.c(), m(t, "class", "m-auto col-start-1 col-end-1 max-h-[23.2em]"), It(t.src, a = /*$dataTypePrefix*/
|
464
|
-
n[22] + "," + /*$image*/
|
465
|
-
n[21]) || m(t, "src", a), t.hidden = c = !/*$captured*/
|
466
|
-
n[16] || !/*$showFaceWhileValidating*/
|
467
|
-
n[28], m(t, "alt", ""), k(t, v, 596, 8, 23600), m(i, "class", r = "grid-cols-1 grid-rows-2 sm:grid-cols-2 sm:grid-rows-1 gap-[.5em] " + (/*$showFaceWhileValidating*/
|
468
|
-
n[28] ? "grid m-[1em] overflow-hidden" : "absolute -translate-y-1/2 -translate-x-1/2 top-1/2 left-1/2 overflow-visible")), k(i, v, 591, 6, 23336);
|
469
|
-
},
|
470
|
-
m: function(h, S) {
|
471
|
-
q(h, i, S), d(i, t), d(i, l), g[o].m(i, null), u = !0;
|
472
|
-
},
|
473
|
-
p: function(h, S) {
|
474
|
-
(!u || S[0] & /*$dataTypePrefix, $image*/
|
475
|
-
6291456 && !It(t.src, a = /*$dataTypePrefix*/
|
476
|
-
h[22] + "," + /*$image*/
|
477
|
-
h[21])) && m(t, "src", a), (!u || S[0] & /*$captured, $showFaceWhileValidating*/
|
478
|
-
268500992 && c !== (c = !/*$captured*/
|
479
|
-
h[16] || !/*$showFaceWhileValidating*/
|
480
|
-
h[28])) && ve(t, "hidden", c);
|
481
|
-
let A = o;
|
482
|
-
o = b(h), o === A ? g[o].p(h, S) : (Ze(), ee(g[A], 1, 1, () => {
|
483
|
-
g[A] = null;
|
484
|
-
}), xe(), s = g[o], s ? s.p(h, S) : (s = g[o] = f[o](h), s.c()), Z(s, 1), s.m(i, null)), (!u || S[0] & /*$showFaceWhileValidating*/
|
485
|
-
268435456 && r !== (r = "grid-cols-1 grid-rows-2 sm:grid-cols-2 sm:grid-rows-1 gap-[.5em] " + (/*$showFaceWhileValidating*/
|
486
|
-
h[28] ? "grid m-[1em] overflow-hidden" : "absolute -translate-y-1/2 -translate-x-1/2 top-1/2 left-1/2 overflow-visible"))) && m(i, "class", r);
|
487
|
-
},
|
488
|
-
i: function(h) {
|
489
|
-
u || (Z(s), u = !0);
|
490
|
-
},
|
491
|
-
o: function(h) {
|
492
|
-
ee(s), u = !1;
|
493
|
-
},
|
494
|
-
d: function(h) {
|
495
|
-
h && Y(i), g[o].d();
|
496
|
-
}
|
497
|
-
};
|
498
|
-
return z("SvelteRegisterBlock", {
|
499
|
-
block: E,
|
500
|
-
id: Ai.name,
|
501
|
-
type: "if",
|
502
|
-
source: "(591:4) {#if showUnconformities && (!idrndClosed || $captured)}",
|
503
|
-
ctx: n
|
504
|
-
}), E;
|
505
|
-
}
|
506
|
-
function Fi(n) {
|
507
|
-
let i, t, a = (
|
508
|
-
/*$_*/
|
509
|
-
n[26]("docCollector.captured") + ""
|
510
|
-
), c, l, o, s, r = (
|
511
|
-
/*$_*/
|
512
|
-
n[26]("faceCollector.retakePhoto") + ""
|
513
|
-
), u, f, g = mi(_i).faceStrategy !== hi.DISABLED, b, E, _, h = g && Ii(n);
|
514
|
-
const S = {
|
515
|
-
c: function() {
|
516
|
-
i = p("div"), t = p("h1"), c = X(a), l = j(), o = p("div"), s = p("button"), u = X(r), f = j(), h && h.c(), m(t, "class", "text-3xl font-bold pb-[1em] transition-opacity"), k(t, v, 656, 12, 26328), m(s, "id", "bry-cc-retake-button"), m(s, "class", "ce-dui-btn ce-dui-btn-block flex-shrink text-base"), k(s, v, 659, 14, 26525), m(o, "class", "flex flex-row"), ui(o, "ce-dui-btn-group", !/*$exportButtonDisabled*/
|
517
|
-
n[29]), k(o, v, 658, 12, 26435), k(i, v, 655, 10, 26310);
|
518
|
-
},
|
519
|
-
m: function(D, F) {
|
520
|
-
q(D, i, F), d(i, t), d(t, c), d(i, l), d(i, o), d(o, s), d(s, u), d(o, f), h && h.m(o, null), b = !0, E || (_ = re(
|
521
|
-
s,
|
522
|
-
"click",
|
523
|
-
/*click_handler_7*/
|
524
|
-
n[54],
|
525
|
-
!1,
|
526
|
-
!1,
|
527
|
-
!1,
|
528
|
-
!1
|
529
|
-
), E = !0);
|
530
|
-
},
|
531
|
-
p: function(D, F) {
|
532
|
-
(!b || F[0] & /*$_*/
|
533
|
-
67108864) && a !== (a = /*$_*/
|
534
|
-
D[26]("docCollector.captured") + "") && $(c, a), (!b || F[0] & /*$_*/
|
535
|
-
67108864) && r !== (r = /*$_*/
|
536
|
-
D[26]("faceCollector.retakePhoto") + "") && $(u, r), (!b || F[0] & /*$exportButtonDisabled*/
|
537
|
-
536870912) && ui(o, "ce-dui-btn-group", !/*$exportButtonDisabled*/
|
538
|
-
D[29]);
|
539
|
-
},
|
540
|
-
i: function(D) {
|
541
|
-
b || (Z(h), b = !0);
|
542
|
-
},
|
543
|
-
o: function(D) {
|
544
|
-
ee(h), b = !1;
|
545
|
-
},
|
546
|
-
d: function(D) {
|
547
|
-
D && Y(i), h && h.d(), E = !1, _();
|
548
|
-
}
|
549
|
-
};
|
550
|
-
return z("SvelteRegisterBlock", {
|
551
|
-
block: S,
|
552
|
-
id: Fi.name,
|
553
|
-
type: "else",
|
554
|
-
source: "(655:8) {:else}",
|
555
|
-
ctx: n
|
556
|
-
}), S;
|
557
|
-
}
|
558
|
-
function Ti(n) {
|
559
|
-
let i, t, a = (
|
560
|
-
/*$_*/
|
561
|
-
n[26]("faceCollector.unconformities") + ""
|
562
|
-
), c, l, o, s, r, u = (
|
563
|
-
/*$_*/
|
564
|
-
n[26]("faceCollector.provideAReasonForTheLowQualityCapture") + ""
|
565
|
-
), f, g, b, E, _, h, S, A, D = (
|
566
|
-
/*$_*/
|
567
|
-
n[26]("faceCollector.thisInformationIsRequired") + ""
|
568
|
-
), F, ie, ne, B, V, I = (
|
569
|
-
/*$captured*/
|
570
|
-
n[16] && Nt(n)
|
571
|
-
);
|
572
|
-
const oe = {
|
573
|
-
c: function() {
|
574
|
-
i = p("div"), t = p("h1"), c = X(a), l = j(), o = p("div"), s = p("label"), r = p("span"), f = X(u), g = j(), b = p("textarea"), _ = j(), h = p("label"), S = p("span"), A = X("("), F = X(D), ie = X(")"), ne = j(), I && I.c(), m(t, "class", "text-3xl font-bold pb-[1em] transition-opacity"), k(t, v, 620, 12, 24659), m(r, "class", "ce-dui-label-text text-base"), k(r, v, 623, 16, 24896), m(s, "class", "ce-dui-label"), m(s, "for", "justification"), k(s, v, 622, 14, 24831), m(b, "contenteditable", ""), m(b, "id", "justification"), m(b, "class", "ce-dui-textarea ce-dui-textarea-bordered h-[6em] text-base"), m(b, "placeholder", E = /*$_*/
|
575
|
-
n[26]("faceCollector.yourJustification")), k(b, v, 627, 14, 25078), m(S, "class", "ce-dui-label-text-alt text-base"), k(S, v, 635, 16, 25446), m(h, "class", "ce-dui-label"), m(h, "for", "justification"), k(h, v, 634, 14, 25381), m(o, "class", "ce-dui-form-control mt-[2.5em]"), k(o, v, 621, 12, 24772), k(i, v, 619, 10, 24641);
|
576
|
-
},
|
577
|
-
m: function(R, T) {
|
578
|
-
q(R, i, T), d(i, t), d(t, c), d(i, l), d(i, o), d(o, s), d(s, r), d(r, f), d(o, g), d(o, b), fi(
|
579
|
-
b,
|
580
|
-
/*$justification*/
|
581
|
-
n[20]
|
582
|
-
), d(o, _), d(o, h), d(h, S), d(S, A), d(S, F), d(S, ie), d(i, ne), I && I.m(i, null), B || (V = re(
|
583
|
-
b,
|
584
|
-
"input",
|
585
|
-
/*textarea_input_handler*/
|
586
|
-
n[51]
|
587
|
-
), B = !0);
|
588
|
-
},
|
589
|
-
p: function(R, T) {
|
590
|
-
T[0] & /*$_*/
|
591
|
-
67108864 && a !== (a = /*$_*/
|
592
|
-
R[26]("faceCollector.unconformities") + "") && $(c, a), T[0] & /*$_*/
|
593
|
-
67108864 && u !== (u = /*$_*/
|
594
|
-
R[26]("faceCollector.provideAReasonForTheLowQualityCapture") + "") && $(f, u), T[0] & /*$_*/
|
595
|
-
67108864 && E !== (E = /*$_*/
|
596
|
-
R[26]("faceCollector.yourJustification")) && m(b, "placeholder", E), T[0] & /*$justification*/
|
597
|
-
1048576 && fi(
|
598
|
-
b,
|
599
|
-
/*$justification*/
|
600
|
-
R[20]
|
601
|
-
), T[0] & /*$_*/
|
602
|
-
67108864 && D !== (D = /*$_*/
|
603
|
-
R[26]("faceCollector.thisInformationIsRequired") + "") && $(F, D), /*$captured*/
|
604
|
-
R[16] ? I ? I.p(R, T) : (I = Nt(R), I.c(), I.m(i, null)) : I && (I.d(1), I = null);
|
605
|
-
},
|
606
|
-
i: le,
|
607
|
-
o: le,
|
608
|
-
d: function(R) {
|
609
|
-
R && Y(i), I && I.d(), B = !1, V();
|
610
|
-
}
|
611
|
-
};
|
612
|
-
return z("SvelteRegisterBlock", {
|
613
|
-
block: oe,
|
614
|
-
id: Ti.name,
|
615
|
-
type: "if",
|
616
|
-
source: "(619:26) ",
|
617
|
-
ctx: n
|
618
|
-
}), oe;
|
619
|
-
}
|
620
|
-
function Li(n) {
|
621
|
-
let i, t, a = (
|
622
|
-
/*$_*/
|
623
|
-
n[26]("faceCollector.everythingOk") + ""
|
624
|
-
), c, l, o, s, r = (
|
625
|
-
/*$_*/
|
626
|
-
n[26]("faceCollector.finish") + ""
|
627
|
-
), u, f, g, b = (
|
628
|
-
/*$_*/
|
629
|
-
n[26]("faceCollector.retakePhoto") + ""
|
630
|
-
), E, _, h;
|
631
|
-
const S = {
|
632
|
-
c: function() {
|
633
|
-
i = p("div"), t = p("h1"), c = X(a), l = j(), o = p("div"), s = p("button"), u = X(r), f = j(), g = p("button"), E = X(b), m(t, "class", "text-3xl font-bold pb-[1em] transition-opacity"), k(t, v, 606, 14, 23982), s.disabled = !0, m(s, "class", "ce-dui-btn ce-dui-btn-primary ce-dui-btn-block flex-shrink"), k(s, v, 608, 14, 24143), m(g, "id", "bry-cc-retake-button"), m(g, "class", "ce-dui-btn ce-dui-btn-block ce-dui-btn-outline flex-shrink"), k(g, v, 611, 14, 24335), m(o, "class", "ce-dui-btn-group flex"), k(o, v, 607, 12, 24093), m(i, "class", "flex flex-col justify-between"), k(i, v, 605, 10, 23924);
|
634
|
-
},
|
635
|
-
m: function(D, F) {
|
636
|
-
q(D, i, F), d(i, t), d(t, c), d(i, l), d(i, o), d(o, s), d(s, u), d(o, f), d(o, g), d(g, E), _ || (h = [
|
637
|
-
re(
|
638
|
-
s,
|
639
|
-
"click",
|
640
|
-
/*click_handler_3*/
|
641
|
-
n[49],
|
642
|
-
!1,
|
643
|
-
!1,
|
644
|
-
!1,
|
645
|
-
!1
|
646
|
-
),
|
647
|
-
re(
|
648
|
-
g,
|
649
|
-
"click",
|
650
|
-
/*click_handler_4*/
|
651
|
-
n[50],
|
652
|
-
!1,
|
653
|
-
!1,
|
654
|
-
!1,
|
655
|
-
!1
|
656
|
-
)
|
657
|
-
], _ = !0);
|
658
|
-
},
|
659
|
-
p: function(D, F) {
|
660
|
-
F[0] & /*$_*/
|
661
|
-
67108864 && a !== (a = /*$_*/
|
662
|
-
D[26]("faceCollector.everythingOk") + "") && $(c, a), F[0] & /*$_*/
|
663
|
-
67108864 && r !== (r = /*$_*/
|
664
|
-
D[26]("faceCollector.finish") + "") && $(u, r), F[0] & /*$_*/
|
665
|
-
67108864 && b !== (b = /*$_*/
|
666
|
-
D[26]("faceCollector.retakePhoto") + "") && $(E, b);
|
667
|
-
},
|
668
|
-
i: le,
|
669
|
-
o: le,
|
670
|
-
d: function(D) {
|
671
|
-
D && Y(i), _ = !1, bt(h);
|
672
|
-
}
|
673
|
-
};
|
674
|
-
return z("SvelteRegisterBlock", {
|
675
|
-
block: S,
|
676
|
-
id: Li.name,
|
677
|
-
type: "if",
|
678
|
-
source: "(605:58) ",
|
679
|
-
ctx: n
|
680
|
-
}), S;
|
681
|
-
}
|
682
|
-
function Bi(n) {
|
683
|
-
let i;
|
684
|
-
const t = {
|
685
|
-
c: function() {
|
686
|
-
i = p("div"), m(i, "class", ""), k(i, v, 603, 10, 23838);
|
687
|
-
},
|
688
|
-
m: function(c, l) {
|
689
|
-
q(c, i, l);
|
690
|
-
},
|
691
|
-
p: le,
|
692
|
-
i: le,
|
693
|
-
o: le,
|
694
|
-
d: function(c) {
|
695
|
-
c && Y(i);
|
696
|
-
}
|
697
|
-
};
|
698
|
-
return z("SvelteRegisterBlock", {
|
699
|
-
block: t,
|
700
|
-
id: Bi.name,
|
701
|
-
type: "if",
|
702
|
-
source: "(603:8) {#if !$captured}",
|
703
|
-
ctx: n
|
704
|
-
}), t;
|
705
|
-
}
|
706
|
-
function Ii(n) {
|
707
|
-
let i, t;
|
708
|
-
i = new gi({
|
709
|
-
props: { cssClass: "ce-dui-btn-block flex-shrink" },
|
710
|
-
$$inline: !0
|
711
|
-
});
|
712
|
-
const a = {
|
713
|
-
c: function() {
|
714
|
-
ft(i.$$.fragment);
|
715
|
-
},
|
716
|
-
m: function(l, o) {
|
717
|
-
dt(i, l, o), t = !0;
|
718
|
-
},
|
719
|
-
i: function(l) {
|
720
|
-
t || (Z(i.$$.fragment, l), t = !0);
|
721
|
-
},
|
722
|
-
o: function(l) {
|
723
|
-
ee(i.$$.fragment, l), t = !1;
|
724
|
-
},
|
725
|
-
d: function(l) {
|
726
|
-
mt(i, l);
|
727
|
-
}
|
728
|
-
};
|
729
|
-
return z("SvelteRegisterBlock", {
|
730
|
-
block: a,
|
731
|
-
id: Ii.name,
|
732
|
-
type: "if",
|
733
|
-
source: "(665:14) {#if get(enableStrategy).faceStrategy !== FaceExportStrategy.DISABLED}",
|
734
|
-
ctx: n
|
735
|
-
}), a;
|
736
|
-
}
|
737
|
-
function Nt(n) {
|
738
|
-
let i, t, a = (
|
739
|
-
/*$_*/
|
740
|
-
n[26]("faceCollector.finish") + ""
|
741
|
-
), c, l, o, s, r = (
|
742
|
-
/*$_*/
|
743
|
-
n[26]("faceCollector.retakePhoto") + ""
|
744
|
-
), u, f, g;
|
745
|
-
const b = {
|
746
|
-
c: function() {
|
747
|
-
i = p("div"), t = p("button"), c = X(a), o = j(), s = p("button"), u = X(r), t.disabled = l = /*$justification*/
|
748
|
-
n[20].length === 0, m(t, "class", "ce-dui-btn ce-dui-btn-primary ce-dui-btn-block flex-shrink text-base"), k(t, v, 640, 16, 25685), m(s, "id", "bry-cc-retake-button"), m(s, "class", "ce-dui-btn ce-dui-btn-block ce-dui-btn-outline flex-shrink text-base"), k(s, v, 646, 16, 25977), m(i, "class", "ce-dui-btn-group flex"), k(i, v, 639, 14, 25633);
|
749
|
-
},
|
750
|
-
m: function(_, h) {
|
751
|
-
q(_, i, h), d(i, t), d(t, c), d(i, o), d(i, s), d(s, u), f || (g = [
|
752
|
-
re(
|
753
|
-
t,
|
754
|
-
"click",
|
755
|
-
/*click_handler_5*/
|
756
|
-
n[52],
|
757
|
-
!1,
|
758
|
-
!1,
|
759
|
-
!1,
|
760
|
-
!1
|
761
|
-
),
|
762
|
-
re(
|
763
|
-
s,
|
764
|
-
"click",
|
765
|
-
/*click_handler_6*/
|
766
|
-
n[53],
|
767
|
-
!1,
|
768
|
-
!1,
|
769
|
-
!1,
|
770
|
-
!1
|
771
|
-
)
|
772
|
-
], f = !0);
|
773
|
-
},
|
774
|
-
p: function(_, h) {
|
775
|
-
h[0] & /*$_*/
|
776
|
-
67108864 && a !== (a = /*$_*/
|
777
|
-
_[26]("faceCollector.finish") + "") && $(c, a), h[0] & /*$justification*/
|
778
|
-
1048576 && l !== (l = /*$justification*/
|
779
|
-
_[20].length === 0) && ve(t, "disabled", l), h[0] & /*$_*/
|
780
|
-
67108864 && r !== (r = /*$_*/
|
781
|
-
_[26]("faceCollector.retakePhoto") + "") && $(u, r);
|
782
|
-
},
|
783
|
-
d: function(_) {
|
784
|
-
_ && Y(i), f = !1, bt(g);
|
785
|
-
}
|
786
|
-
};
|
787
|
-
return z("SvelteRegisterBlock", {
|
788
|
-
block: b,
|
789
|
-
id: Nt.name,
|
790
|
-
type: "if",
|
791
|
-
source: "(639:12) {#if $captured}",
|
792
|
-
ctx: n
|
793
|
-
}), b;
|
794
|
-
}
|
795
|
-
function Ut(n) {
|
796
|
-
let i, t = (
|
797
|
-
/*$_*/
|
798
|
-
n[26]("faceCollector.loading") + ""
|
799
|
-
), a;
|
800
|
-
const c = {
|
801
|
-
c: function() {
|
802
|
-
i = p("span"), a = X(t), m(i, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), k(i, v, 505, 10, 19853);
|
803
|
-
},
|
804
|
-
m: function(o, s) {
|
805
|
-
q(o, i, s), d(i, a);
|
806
|
-
},
|
807
|
-
p: function(o, s) {
|
808
|
-
s[0] & /*$_*/
|
809
|
-
67108864 && t !== (t = /*$_*/
|
810
|
-
o[26]("faceCollector.loading") + "") && $(a, t);
|
811
|
-
},
|
812
|
-
d: function(o) {
|
813
|
-
o && Y(i);
|
814
|
-
}
|
815
|
-
};
|
816
|
-
return z("SvelteRegisterBlock", {
|
817
|
-
block: c,
|
818
|
-
id: Ut.name,
|
819
|
-
type: "if",
|
820
|
-
source: "(505:8) {#if $isLoadingAPP}",
|
821
|
-
ctx: n
|
822
|
-
}), c;
|
823
|
-
}
|
824
|
-
function Oi(n) {
|
825
|
-
let i, t, a, c;
|
826
|
-
const l = [yi, Ci], o = [];
|
827
|
-
function s(u, f) {
|
828
|
-
return (
|
829
|
-
/*$isLoadingAPP*/
|
830
|
-
u[17] ? 0 : 1
|
831
|
-
);
|
832
|
-
}
|
833
|
-
t = s(n), a = o[t] = l[t](n);
|
834
|
-
const r = {
|
835
|
-
c: function() {
|
836
|
-
i = p("div"), a.c(), this.c = le, k(i, v, 499, 0, 19539);
|
837
|
-
},
|
838
|
-
l: function(f) {
|
839
|
-
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
|
840
|
-
},
|
841
|
-
m: function(f, g) {
|
842
|
-
q(f, i, g), o[t].m(i, null), c = !0;
|
843
|
-
},
|
844
|
-
p: function(f, g) {
|
845
|
-
let b = t;
|
846
|
-
t = s(f), t === b ? o[t].p(f, g) : (Ze(), ee(o[b], 1, 1, () => {
|
847
|
-
o[b] = null;
|
848
|
-
}), xe(), a = o[t], a ? a.p(f, g) : (a = o[t] = l[t](f), a.c()), Z(a, 1), a.m(i, null));
|
849
|
-
},
|
850
|
-
i: function(f) {
|
851
|
-
c || (Z(a), c = !0);
|
852
|
-
},
|
853
|
-
o: function(f) {
|
854
|
-
ee(a), c = !1;
|
855
|
-
},
|
856
|
-
d: function(f) {
|
857
|
-
f && Y(i), o[t].d();
|
858
|
-
}
|
859
|
-
};
|
860
|
-
return z("SvelteRegisterBlock", {
|
861
|
-
block: r,
|
862
|
-
id: Oi.name,
|
863
|
-
type: "component",
|
864
|
-
source: "",
|
865
|
-
ctx: n
|
866
|
-
}), r;
|
867
|
-
}
|
868
|
-
function Bt(n, i, t) {
|
869
|
-
const a = i.videoHeight >= i.videoWidth && t.height >= t.width || i.videoHeight < i.videoWidth && t.height < t.width;
|
870
|
-
n.drawImage(
|
871
|
-
i,
|
872
|
-
a ? 0 : i.videoWidth / 2 - t.width,
|
873
|
-
0,
|
874
|
-
a ? i.videoWidth : i.videoHeight * (t.width / t.height),
|
875
|
-
i.videoHeight,
|
876
|
-
0,
|
877
|
-
0,
|
878
|
-
t.width,
|
879
|
-
t.height
|
880
|
-
);
|
881
|
-
}
|
882
|
-
function rn(n, i, t) {
|
883
|
-
let a, c, l, o, s, r, u, f, g, b, E, _, h, S, A, D, F, ie, ne, B, V, I, oe, x, R, T;
|
884
|
-
M(Ke, "retakePhoto"), W(n, Ke, (e) => t(64, a = e)), M(ae, "cameraStatusStore"), W(n, ae, (e) => t(14, l = e)), M(Ee, "selectedVideoDeviceId"), W(n, Ee, (e) => t(66, o = e)), M(he, "videoStore"), W(n, he, (e) => t(15, s = e)), M(Ae, "facingMode"), W(n, Ae, (e) => t(67, r = e)), M(yt, "cameraDevicesStore"), W(n, yt, (e) => t(68, u = e)), M(ke, "captured"), W(n, ke, (e) => t(16, f = e)), M(Xe, "clearedVideoSrcObject"), W(n, Xe, (e) => t(69, g = e)), M(it, "_stream"), W(n, it, (e) => t(70, b = e)), M(Rt, "automaticCapture"), W(n, Rt, (e) => t(71, E = e)), M(Fe, "isLoadingAPP"), W(n, Fe, (e) => t(17, _ = e)), M(Ye, "originalCapture"), W(n, Ye, (e) => t(72, h = e)), M(ze, "requestResult"), W(n, ze, (e) => t(18, S = e)), M(Te, "saved"), W(n, Te, (e) => t(19, A = e)), M(nt, "justification"), W(n, nt, (e) => t(20, D = e)), M(ot, "image"), W(n, ot, (e) => t(21, F = e)), M(St, "enableFaceApi"), W(n, St, (e) => t(23, ne = e)), M(Le, "ready"), W(n, Le, (e) => t(24, B = e)), M(Je, "selectedTab"), W(n, Je, (e) => t(73, V = e)), M(at, "faceFound"), W(n, at, (e) => t(25, I = e)), M(Dt, "_"), W(n, Dt, (e) => t(26, oe = e)), M(Pt, "isLoading"), W(n, Pt, (e) => t(27, x = e)), M(Et, "showFaceWhileValidating"), W(n, Et, (e) => t(28, R = e)), M(At, "exportButtonDisabled"), W(n, At, (e) => t(29, T = e));
|
885
|
-
let { $$slots: et = {}, $$scope: Ie } = i;
|
886
|
-
ln("document-collector", et, []);
|
887
|
-
let C, Q, K, se = !1, ge = {}, G = !1, { enableMinutiae: w } = i, { videoDimensions: U } = i, { noTabs: ue } = i, { weightsPath: Ce } = i, { showCaptureButton: Oe } = i, { showUnconformities: Me } = i, { videoFilter: de } = i;
|
888
|
-
const ye = Lt(!1);
|
889
|
-
M(ye, "startFaceApi"), W(n, ye, (e) => t(65, c = e));
|
890
|
-
const We = Lt("data:image/png;base64");
|
891
|
-
M(We, "dataTypePrefix"), W(n, We, (e) => t(22, ie = e));
|
892
|
-
let fe, N, Re = !1, gt = !1, _t = !0, _e = !0, tt = 0, Ne = 0, wt = 10, Ue = !0, He = 0, Ve = !1, we = !1, Se = "", P = {
|
893
|
-
topLeftX: 130,
|
894
|
-
topLeftY: 70,
|
895
|
-
width: 540,
|
896
|
-
height: 400
|
897
|
-
};
|
898
|
-
const Mi = xt.mixin({
|
899
|
-
toast: !0,
|
900
|
-
position: "bottom-left",
|
901
|
-
timer: 13e3,
|
902
|
-
timerProgressBar: !0
|
903
|
-
});
|
904
|
-
$t(async () => {
|
905
|
-
y(Fe, _ = !0, _), ei("Mounting Document Collector!"), y(Le, B = !1, B), y(at, I = !1, I), y(ke, f = !1, f), y(Ae, r = lt.REAR_CAMERA, r), Pe(), ne && (await ti(Ce), G = !0);
|
906
|
-
});
|
907
|
-
function Ht() {
|
908
|
-
const e = s.videoWidth, O = s.videoHeight, H = O * 0.73, L = H * 1.36;
|
909
|
-
P.topLeftX = (e - L) / 2, P.topLeftY = (O - H) / 1.42, P.width = L, P.height = H;
|
910
|
-
}
|
911
|
-
function pt(e, O) {
|
912
|
-
e.clearRect(0, 0, N.width, N.height), e.save(), de == "blur" ? (e.filter = `blur(${O.width / 60}px)`, e.rect(0, 0, N.width, N.height)) : de != "none" ? (e.fillStyle = de, e.fillRect(0, 0, N.width, N.height)) : (e.beginPath(), e.rect(0, 0, N.width, N.height)), e.rect(P.topLeftX, P.topLeftY, P.width, P.height), e.clip(), Bt(e, O, N), e.restore(), e.save(), e.beginPath();
|
913
|
-
const H = window.getComputedStyle(N).getPropertyValue("--p"), L = window.getComputedStyle(N).getPropertyValue("--su");
|
914
|
-
if (e.strokeStyle = `hsl(${H})`, e.lineWidth = 16, e.rect(P.topLeftX, P.topLeftY, P.width, P.height), e.stroke(), se && !Ve) {
|
915
|
-
const ce = 1 - (He - (/* @__PURE__ */ new Date()).getTime()) / 4500;
|
916
|
-
e.save(), e.beginPath(), e.lineWidth = 16, e.strokeStyle = `hsl(${L})`;
|
917
|
-
const qe = P.width * 3 * ce, Zt = P.height * 2 * ce, en = qe < P.width ? qe : P.width, tn = Zt < P.height ? Zt : P.height;
|
918
|
-
e.rect(P.topLeftX, P.topLeftY, en, tn), e.stroke();
|
919
|
-
}
|
920
|
-
e.beginPath();
|
921
|
-
const J = new Path2D();
|
922
|
-
J.rect(P.topLeftX, P.topLeftY, P.width, P.height), e.clip(J), Bt(e, O, N), e.restore();
|
923
|
-
}
|
924
|
-
function kt() {
|
925
|
-
y(ae, l = te.OK, l), t(10, Re = !0), t(11, _e = !1), _t = !0;
|
926
|
-
}
|
927
|
-
async function De() {
|
928
|
-
if (ne && !G)
|
929
|
-
return Be(C, De);
|
930
|
-
if (C) {
|
931
|
-
if (V !== ct.Document && !ue)
|
932
|
-
return Be(C, De);
|
933
|
-
y(Le, B = !0, B), ne ? (c || y(ye, c = !0, c), pt(N.getContext("2d"), C), Be(C, De)) : (pt(N.getContext("2d"), C), Be(C, De));
|
934
|
-
}
|
935
|
-
}
|
936
|
-
async function vt() {
|
937
|
-
Tt(), y(ze, S = ut.OK, S), y(ke, f = !0, f), y(Te, A = !0, A);
|
938
|
-
const e = document.createElement("canvas"), O = e.getContext("2d");
|
939
|
-
e.width = P.width, e.height = P.height, O?.drawImage(C, P.topLeftX, P.topLeftY, P.width, P.height, 0, 0, e.width, e.height);
|
940
|
-
const H = e.toDataURL("image/jpeg").split(",");
|
941
|
-
y(We, ie = H[0], ie), y(ot, F = H[1], F), y(Ye, h = H[1], h);
|
942
|
-
const L = [{ data: h }];
|
943
|
-
window.dispatchEvent(new CustomEvent(
|
944
|
-
"document-unconformities-validated",
|
945
|
-
{
|
946
|
-
detail: { bodyParts: L, status: S }
|
947
|
-
}
|
948
|
-
));
|
949
|
-
}
|
950
|
-
function je() {
|
951
|
-
const e = {
|
952
|
-
bodyPart: "DOCUMENT",
|
953
|
-
data: F,
|
954
|
-
justification: D
|
955
|
-
};
|
956
|
-
y(Te, A = !0, A), window.dispatchEvent(new CustomEvent("export-document", { detail: e }));
|
957
|
-
}
|
958
|
-
function pe() {
|
959
|
-
window.dispatchEvent(new CustomEvent("document-scrapped")), y(Te, A = !1, A), y(ze, S = ut.OK, S), y(ke, f = !1, f), y(Ye, h = "", h), t(13, Se = ""), t(12, we = !1), _e && kt();
|
960
|
-
}
|
961
|
-
async function Pe(e) {
|
962
|
-
y(Fe, _ = !0, _);
|
963
|
-
const [O, H] = (U ?? "")?.replaceAll(" ", "")?.split("x")?.map((L) => L ? parseInt(L) : void 0);
|
964
|
-
if (!(!O || !H)) {
|
965
|
-
y(he, s = { videoWidth: O, videoHeight: H }, s);
|
966
|
-
try {
|
967
|
-
if (l == te.CAMERA_ORIENTATION_LANDSCAPE)
|
968
|
-
return;
|
969
|
-
await Ft();
|
970
|
-
const { deviceId: L, width: J, height: ce, aspectRatio: qe } = await ii(O, H, r, e);
|
971
|
-
qe && qe < 1 && st() ? y(
|
972
|
-
he,
|
973
|
-
s = {
|
974
|
-
videoWidth: ce,
|
975
|
-
videoHeight: J
|
976
|
-
},
|
977
|
-
s
|
978
|
-
) : y(
|
979
|
-
he,
|
980
|
-
s = {
|
981
|
-
videoWidth: J,
|
982
|
-
videoHeight: ce
|
983
|
-
},
|
984
|
-
s
|
985
|
-
), Ht(), y(Ee, o = L || u[0].deviceId, o), y(ae, l = te.OK, l);
|
986
|
-
} catch (L) {
|
987
|
-
const J = L;
|
988
|
-
t(11, _e = !0);
|
989
|
-
const ce = Qe(L) && L.constraint ? L.constraint : "";
|
990
|
-
console.error(J, ce), Qe(J) && "message" in J && J.message.includes("Permission denied") && (console.error("User didn't give permission to use camera!"), y(ae, l = te.CAMERA_DENIED_ERROR, l)), Qe(J) && "message" in J && J.message.includes("Requested device not found") && y(ae, l = te.DEVICE_NOT_FOUND_ERROR, l), (ce.includes("width") || ce.includes("height")) && (console.error(`Camera does not meet the minimum supported requirements! (${ce})`), y(ae, l = te.CAMERA_UNSUPPORTED, l));
|
991
|
-
}
|
992
|
-
y(Fe, _ = !1, _);
|
993
|
-
}
|
994
|
-
}
|
995
|
-
const Vt = he.subscribe((e) => {
|
996
|
-
C && Q && (t(3, C.width = e.videoWidth, C), t(3, C.height = e.videoHeight, C), t(4, Q.width = e.videoWidth, Q), t(4, Q.height = e.videoHeight, Q), t(8, fe.width = e.videoWidth, fe), t(8, fe.height = e.videoHeight, fe), t(9, N.width = e.videoWidth, N), t(9, N.height = e.videoHeight, N));
|
997
|
-
}), jt = ni.subscribe((e) => {
|
998
|
-
let O = "";
|
999
|
-
if (e.isPersonCloseEnough ? e.isPersonTooclose ? O = "faceCollector.moveAwayCamera" : e.isPersonInFrame || (O = "docCollector.stayInFrame") : O = "faceCollector.comeCloserCamera", O != "" && O != Se && setTimeout(
|
1000
|
-
() => {
|
1001
|
-
t(12, we = !1), t(13, Se = O), setTimeout(
|
1002
|
-
() => {
|
1003
|
-
t(12, we = !0);
|
1004
|
-
},
|
1005
|
-
1e3
|
1006
|
-
);
|
1007
|
-
},
|
1008
|
-
3e3
|
1009
|
-
), !f && E && !se && e.isPersonInFrame && !(!e.isPersonCloseEnough || e.isPersonTooclose)) {
|
1010
|
-
t(6, se = !0), t(12, we = !1), He = (/* @__PURE__ */ new Date()).getTime() + 4500;
|
1011
|
-
const H = setInterval(
|
1012
|
-
() => {
|
1013
|
-
if (!E || f || !e.isPersonCloseEnough || e.isPersonTooclose || !e.isPersonInFrame) {
|
1014
|
-
t(6, se = !1), Ve = !0, setTimeout(
|
1015
|
-
() => {
|
1016
|
-
Ve = !1;
|
1017
|
-
},
|
1018
|
-
1500
|
1019
|
-
), clearInterval(H);
|
1020
|
-
return;
|
1021
|
-
}
|
1022
|
-
const L = (/* @__PURE__ */ new Date()).getTime();
|
1023
|
-
Math.floor((He - L) % (1e3 * 60) / 1e3) <= 0 && (clearInterval(H), t(6, se = !1), document.getElementsByTagName("biometric-collector")?.[0]?.shadowRoot?.getElementById("bry-cc-capture-btn")?.click());
|
1024
|
-
},
|
1025
|
-
250
|
1026
|
-
);
|
1027
|
-
}
|
1028
|
-
}), qt = ke.subscribe((e) => {
|
1029
|
-
K && (e ? (K.classList.remove("flex"), K.classList.add("hidden")) : (K.classList.add("flex"), K.classList.remove("hidden")));
|
1030
|
-
}), Kt = Xe.subscribe((e) => {
|
1031
|
-
C && e && (console.log("setting null in video srcObject"), t(3, C.srcObject = null, C), t(3, C.src = "", C));
|
1032
|
-
});
|
1033
|
-
Je.subscribe(async (e) => {
|
1034
|
-
e === ct.Document && await Ft();
|
1035
|
-
});
|
1036
|
-
const Xt = Ee.subscribe(async (e) => {
|
1037
|
-
if (!e)
|
1038
|
-
return;
|
1039
|
-
C || t(7, ge = {});
|
1040
|
-
const { videoHeight: O, videoWidth: H } = s;
|
1041
|
-
try {
|
1042
|
-
const L = await oi(H, O, e);
|
1043
|
-
t(3, C.srcObject = L, C), y(it, b = L, b), y(Xe, g = !1, g), Ue || (y(ae, l = te.CAMERA_ORIENTATION_LANDSCAPE, l), rt());
|
1044
|
-
} catch (L) {
|
1045
|
-
const J = L;
|
1046
|
-
t(11, _e = !0), Qe(J) && "message" in J && J.message.includes("Requested device not found") && y(ae, l = te.DEVICE_NOT_FOUND_ERROR, l);
|
1047
|
-
}
|
1048
|
-
}), Yt = Je.subscribe(async (e) => {
|
1049
|
-
e === ct.Document && !Re && !f && gt && await kt();
|
1050
|
-
}), zt = ye.subscribe(async (e) => {
|
1051
|
-
e && Ct();
|
1052
|
-
}), Jt = Le.subscribe((e) => {
|
1053
|
-
e && window.dispatchEvent(new CustomEvent("brycc-camera-ready"));
|
1054
|
-
}), Qt = ai.subscribe((e) => {
|
1055
|
-
if (s) {
|
1056
|
-
if (!st()) {
|
1057
|
-
const O = u.find((L) => L.deviceId !== o), H = O ? O.deviceId : u[0].deviceId;
|
1058
|
-
Pe(H);
|
1059
|
-
return;
|
1060
|
-
}
|
1061
|
-
e ? (y(Ae, r = lt.FRONT_CAMERA, r), Pe()) : (y(Ae, r = lt.REAR_CAMERA, r), Pe());
|
1062
|
-
}
|
1063
|
-
}), Gt = li.subscribe((e) => {
|
1064
|
-
!e.isSupported || !st() || (Ue = e.orientation.includes("landscape"), Ue ? (y(ae, l = te.OK, l), s && (y(Ee, o = "", o), Pe())) : (y(ae, l = te.CAMERA_ORIENTATION_LANDSCAPE, l), rt()));
|
1065
|
-
});
|
1066
|
-
async function Ct() {
|
1067
|
-
let e;
|
1068
|
-
if (Ne >= wt) {
|
1069
|
-
Ne = 0;
|
1070
|
-
const O = await ri(), H = await import("./face_api_0e3ce8c8_2.2.0-RC02.js");
|
1071
|
-
let L;
|
1072
|
-
L = H.detectSingleFace(N, O), e = await L.withFaceLandmarks(), Q.getContext("2d")?.clearRect(0, 0, Q.width, Q.height);
|
1073
|
-
} else
|
1074
|
-
Ne++;
|
1075
|
-
e && ci(e, Q, w, !0), c && Be(C, Ct);
|
1076
|
-
}
|
1077
|
-
Ke.subscribe(async (e) => {
|
1078
|
-
e && (pe(), y(Ke, a = !1, a));
|
1079
|
-
}), si(() => {
|
1080
|
-
rt(), qt(), jt(), Vt(), Kt(), Xt(), Yt(), clearInterval(tt), zt(), Qt(), Jt(), Gt(), Tt(), tt = 0;
|
1081
|
-
}), n.$$.on_mount.push(function() {
|
1082
|
-
w === void 0 && !("enableMinutiae" in i || n.$$.bound[n.$$.props.enableMinutiae]) && be.warn("<document-collector> was created without expected prop 'enableMinutiae'"), U === void 0 && !("videoDimensions" in i || n.$$.bound[n.$$.props.videoDimensions]) && be.warn("<document-collector> was created without expected prop 'videoDimensions'"), ue === void 0 && !("noTabs" in i || n.$$.bound[n.$$.props.noTabs]) && be.warn("<document-collector> was created without expected prop 'noTabs'"), Ce === void 0 && !("weightsPath" in i || n.$$.bound[n.$$.props.weightsPath]) && be.warn("<document-collector> was created without expected prop 'weightsPath'"), Oe === void 0 && !("showCaptureButton" in i || n.$$.bound[n.$$.props.showCaptureButton]) && be.warn("<document-collector> was created without expected prop 'showCaptureButton'"), Me === void 0 && !("showUnconformities" in i || n.$$.bound[n.$$.props.showUnconformities]) && be.warn("<document-collector> was created without expected prop 'showUnconformities'"), de === void 0 && !("videoFilter" in i || n.$$.bound[n.$$.props.videoFilter]) && be.warn("<document-collector> was created without expected prop 'videoFilter'");
|
1083
|
-
});
|
1084
|
-
const Wi = [
|
1085
|
-
"enableMinutiae",
|
1086
|
-
"videoDimensions",
|
1087
|
-
"noTabs",
|
1088
|
-
"weightsPath",
|
1089
|
-
"showCaptureButton",
|
1090
|
-
"showUnconformities",
|
1091
|
-
"videoFilter"
|
1092
|
-
];
|
1093
|
-
Object.keys(i).forEach((e) => {
|
1094
|
-
!~Wi.indexOf(e) && e.slice(0, 2) !== "$$" && e !== "slot" && be.warn(`<document-collector> was created with unknown prop '${e}'`);
|
1095
|
-
});
|
1096
|
-
function Ni(e) {
|
1097
|
-
Ge[e ? "unshift" : "push"](() => {
|
1098
|
-
C = e, t(3, C);
|
1099
|
-
});
|
1100
|
-
}
|
1101
|
-
const Ui = () => {
|
1102
|
-
y(
|
1103
|
-
he,
|
1104
|
-
s = {
|
1105
|
-
videoHeight: C.videoHeight,
|
1106
|
-
videoWidth: C.videoWidth
|
1107
|
-
},
|
1108
|
-
s
|
1109
|
-
);
|
1110
|
-
};
|
1111
|
-
function Hi(e) {
|
1112
|
-
Ge[e ? "unshift" : "push"](() => {
|
1113
|
-
N = e, t(9, N);
|
1114
|
-
});
|
1115
|
-
}
|
1116
|
-
function Vi(e) {
|
1117
|
-
Ge[e ? "unshift" : "push"](() => {
|
1118
|
-
Q = e, t(4, Q);
|
1119
|
-
});
|
1120
|
-
}
|
1121
|
-
function ji(e) {
|
1122
|
-
Ge[e ? "unshift" : "push"](() => {
|
1123
|
-
fe = e, t(8, fe);
|
1124
|
-
});
|
1125
|
-
}
|
1126
|
-
const qi = () => vt(), Ki = () => je(), Xi = () => pe();
|
1127
|
-
function Yi(e) {
|
1128
|
-
Ge[e ? "unshift" : "push"](() => {
|
1129
|
-
K = e, t(5, K);
|
1130
|
-
});
|
1131
|
-
}
|
1132
|
-
const zi = () => je(), Ji = () => pe();
|
1133
|
-
function Qi() {
|
1134
|
-
D = this.value, nt.set(D);
|
1135
|
-
}
|
1136
|
-
const Gi = () => je(), Zi = () => pe(), xi = () => pe(), $i = () => {
|
1137
|
-
t(10, Re = !0);
|
1138
|
-
};
|
1139
|
-
return n.$$set = (e) => {
|
1140
|
-
"enableMinutiae" in e && t(35, w = e.enableMinutiae), "videoDimensions" in e && t(36, U = e.videoDimensions), "noTabs" in e && t(37, ue = e.noTabs), "weightsPath" in e && t(38, Ce = e.weightsPath), "showCaptureButton" in e && t(0, Oe = e.showCaptureButton), "showUnconformities" in e && t(1, Me = e.showUnconformities), "videoFilter" in e && t(39, de = e.videoFilter);
|
1141
|
-
}, n.$capture_state = () => ({
|
1142
|
-
CameraStatus: ki,
|
1143
|
-
onDestroy: si,
|
1144
|
-
onMount: $t,
|
1145
|
-
fade: $e,
|
1146
|
-
_: Dt,
|
1147
|
-
isLoading: Pt,
|
1148
|
-
get: mi,
|
1149
|
-
writable: Lt,
|
1150
|
-
selectedTab: Je,
|
1151
|
-
TabEnum: ct,
|
1152
|
-
faceValidationsStore: ni,
|
1153
|
-
image: ot,
|
1154
|
-
setupStream: oi,
|
1155
|
-
videoStore: he,
|
1156
|
-
requestResult: ze,
|
1157
|
-
cameraDevicesStore: yt,
|
1158
|
-
justification: nt,
|
1159
|
-
saved: Te,
|
1160
|
-
captured: ke,
|
1161
|
-
_stream: it,
|
1162
|
-
shutOffCamera: rt,
|
1163
|
-
ready: Le,
|
1164
|
-
clearedVideoSrcObject: Xe,
|
1165
|
-
enumerateDevices: Ft,
|
1166
|
-
originalCapture: Ye,
|
1167
|
-
automaticCapture: Rt,
|
1168
|
-
selectedVideoDeviceId: Ee,
|
1169
|
-
requestResultEnum: ut,
|
1170
|
-
retakePhoto: Ke,
|
1171
|
-
showFaceWhileValidating: Et,
|
1172
|
-
getVideoDimensions: ii,
|
1173
|
-
FaceExportStrategy: hi,
|
1174
|
-
orientationData: li,
|
1175
|
-
FacingModeEnum: lt,
|
1176
|
-
facingMode: Ae,
|
1177
|
-
swapCamera: ai,
|
1178
|
-
ConfBtn: bi,
|
1179
|
-
CameraBtn: vi,
|
1180
|
-
ExportBtn: gi,
|
1181
|
-
enableStrategy: _i,
|
1182
|
-
exportButtonDisabled: At,
|
1183
|
-
drawDetectionsInFace: ci,
|
1184
|
-
enableFaceApi: St,
|
1185
|
-
faceFound: at,
|
1186
|
-
getFaceDetectorOptions: ri,
|
1187
|
-
isMobile: st,
|
1188
|
-
isObject: Qe,
|
1189
|
-
loadFaceApiAndWeights: ti,
|
1190
|
-
loopCaller: Be,
|
1191
|
-
unLockScreen: Tt,
|
1192
|
-
isLoadingAPP: Fe,
|
1193
|
-
loadingGif: wi,
|
1194
|
-
Swal: xt,
|
1195
|
-
cameraStatusStore: ae,
|
1196
|
-
CameraStatusEnum: te,
|
1197
|
-
log: ei,
|
1198
|
-
video: C,
|
1199
|
-
detectionsCanvas: Q,
|
1200
|
-
enclosingDiv: K,
|
1201
|
-
isCountingDown: se,
|
1202
|
-
unique: ge,
|
1203
|
-
loadedFaceApiAndWeights: G,
|
1204
|
-
enableMinutiae: w,
|
1205
|
-
videoDimensions: U,
|
1206
|
-
noTabs: ue,
|
1207
|
-
weightsPath: Ce,
|
1208
|
-
showCaptureButton: Oe,
|
1209
|
-
showUnconformities: Me,
|
1210
|
-
videoFilter: de,
|
1211
|
-
startFaceApi: ye,
|
1212
|
-
dataTypePrefix: We,
|
1213
|
-
maskCanvas: fe,
|
1214
|
-
displayCanvas: N,
|
1215
|
-
capturing: Re,
|
1216
|
-
initialized: gt,
|
1217
|
-
idrndLoading: _t,
|
1218
|
-
idrndClosed: _e,
|
1219
|
-
intervalId: tt,
|
1220
|
-
faceapiCounter: Ne,
|
1221
|
-
faceapiFrameRate: wt,
|
1222
|
-
rightOrientation: Ue,
|
1223
|
-
countdownFinishTime: He,
|
1224
|
-
disableCountDown: Ve,
|
1225
|
-
faceNotValidated: we,
|
1226
|
-
faceValidationAlert: Se,
|
1227
|
-
docLimits: P,
|
1228
|
-
toast: Mi,
|
1229
|
-
setDocLimits: Ht,
|
1230
|
-
drawRectangle: pt,
|
1231
|
-
drawVideoOnCanvas: Bt,
|
1232
|
-
resetCamera: kt,
|
1233
|
-
play: De,
|
1234
|
-
capture: vt,
|
1235
|
-
save: je,
|
1236
|
-
retake: pe,
|
1237
|
-
openCamera: Pe,
|
1238
|
-
unsubscribeVideoDimensions: Vt,
|
1239
|
-
unsubscribeFaceValidations: jt,
|
1240
|
-
unsubscribeCapturedState: qt,
|
1241
|
-
unsubscribeClearVideoSrc: Kt,
|
1242
|
-
unsubscribeSelectedStream: Xt,
|
1243
|
-
unsubscribeChangeTab: Yt,
|
1244
|
-
unsubscribeFaceApi: zt,
|
1245
|
-
unsubscribeReadyCameraEventEmitter: Jt,
|
1246
|
-
unsubscribeSwapCamera: Qt,
|
1247
|
-
unsubscribeOrientation: Gt,
|
1248
|
-
faceapiLoop: Ct,
|
1249
|
-
$retakePhoto: a,
|
1250
|
-
$startFaceApi: c,
|
1251
|
-
$cameraStatusStore: l,
|
1252
|
-
$selectedVideoDeviceId: o,
|
1253
|
-
$videoStore: s,
|
1254
|
-
$facingMode: r,
|
1255
|
-
$cameraDevicesStore: u,
|
1256
|
-
$captured: f,
|
1257
|
-
$clearedVideoSrcObject: g,
|
1258
|
-
$_stream: b,
|
1259
|
-
$automaticCapture: E,
|
1260
|
-
$isLoadingAPP: _,
|
1261
|
-
$originalCapture: h,
|
1262
|
-
$requestResult: S,
|
1263
|
-
$saved: A,
|
1264
|
-
$justification: D,
|
1265
|
-
$image: F,
|
1266
|
-
$dataTypePrefix: ie,
|
1267
|
-
$enableFaceApi: ne,
|
1268
|
-
$ready: B,
|
1269
|
-
$selectedTab: V,
|
1270
|
-
$faceFound: I,
|
1271
|
-
$_: oe,
|
1272
|
-
$isLoading: x,
|
1273
|
-
$showFaceWhileValidating: R,
|
1274
|
-
$exportButtonDisabled: T
|
1275
|
-
}), n.$inject_state = (e) => {
|
1276
|
-
"video" in e && t(3, C = e.video), "detectionsCanvas" in e && t(4, Q = e.detectionsCanvas), "enclosingDiv" in e && t(5, K = e.enclosingDiv), "isCountingDown" in e && t(6, se = e.isCountingDown), "unique" in e && t(7, ge = e.unique), "loadedFaceApiAndWeights" in e && (G = e.loadedFaceApiAndWeights), "enableMinutiae" in e && t(35, w = e.enableMinutiae), "videoDimensions" in e && t(36, U = e.videoDimensions), "noTabs" in e && t(37, ue = e.noTabs), "weightsPath" in e && t(38, Ce = e.weightsPath), "showCaptureButton" in e && t(0, Oe = e.showCaptureButton), "showUnconformities" in e && t(1, Me = e.showUnconformities), "videoFilter" in e && t(39, de = e.videoFilter), "maskCanvas" in e && t(8, fe = e.maskCanvas), "displayCanvas" in e && t(9, N = e.displayCanvas), "capturing" in e && t(10, Re = e.capturing), "initialized" in e && (gt = e.initialized), "idrndLoading" in e && (_t = e.idrndLoading), "idrndClosed" in e && t(11, _e = e.idrndClosed), "intervalId" in e && (tt = e.intervalId), "faceapiCounter" in e && (Ne = e.faceapiCounter), "faceapiFrameRate" in e && (wt = e.faceapiFrameRate), "rightOrientation" in e && (Ue = e.rightOrientation), "countdownFinishTime" in e && (He = e.countdownFinishTime), "disableCountDown" in e && (Ve = e.disableCountDown), "faceNotValidated" in e && t(12, we = e.faceNotValidated), "faceValidationAlert" in e && t(13, Se = e.faceValidationAlert), "docLimits" in e && (P = e.docLimits);
|
1277
|
-
}, i && "$$inject" in i && n.$inject_state(i.$$inject), [
|
1278
|
-
Oe,
|
1279
|
-
Me,
|
1280
|
-
De,
|
1281
|
-
C,
|
1282
|
-
Q,
|
1283
|
-
K,
|
1284
|
-
se,
|
1285
|
-
ge,
|
1286
|
-
fe,
|
1287
|
-
N,
|
1288
|
-
Re,
|
1289
|
-
_e,
|
1290
|
-
we,
|
1291
|
-
Se,
|
1292
|
-
l,
|
1293
|
-
s,
|
1294
|
-
f,
|
1295
|
-
_,
|
1296
|
-
S,
|
1297
|
-
A,
|
1298
|
-
D,
|
1299
|
-
F,
|
1300
|
-
ie,
|
1301
|
-
ne,
|
1302
|
-
B,
|
1303
|
-
I,
|
1304
|
-
oe,
|
1305
|
-
x,
|
1306
|
-
R,
|
1307
|
-
T,
|
1308
|
-
ye,
|
1309
|
-
We,
|
1310
|
-
vt,
|
1311
|
-
je,
|
1312
|
-
pe,
|
1313
|
-
w,
|
1314
|
-
U,
|
1315
|
-
ue,
|
1316
|
-
Ce,
|
1317
|
-
de,
|
1318
|
-
Ni,
|
1319
|
-
Ui,
|
1320
|
-
Hi,
|
1321
|
-
Vi,
|
1322
|
-
ji,
|
1323
|
-
qi,
|
1324
|
-
Ki,
|
1325
|
-
Xi,
|
1326
|
-
Yi,
|
1327
|
-
zi,
|
1328
|
-
Ji,
|
1329
|
-
Qi,
|
1330
|
-
Gi,
|
1331
|
-
Zi,
|
1332
|
-
xi,
|
1333
|
-
$i
|
1334
|
-
];
|
1335
|
-
}
|
1336
|
-
class un extends nn {
|
1337
|
-
constructor(i) {
|
1338
|
-
super(), on(
|
1339
|
-
this,
|
1340
|
-
{
|
1341
|
-
target: this.shadowRoot,
|
1342
|
-
props: an(this.attributes),
|
1343
|
-
customElement: !0
|
1344
|
-
},
|
1345
|
-
rn,
|
1346
|
-
Oi,
|
1347
|
-
di,
|
1348
|
-
{
|
1349
|
-
enableMinutiae: 35,
|
1350
|
-
videoDimensions: 36,
|
1351
|
-
noTabs: 37,
|
1352
|
-
weightsPath: 38,
|
1353
|
-
showCaptureButton: 0,
|
1354
|
-
showUnconformities: 1,
|
1355
|
-
videoFilter: 39,
|
1356
|
-
play: 2
|
1357
|
-
},
|
1358
|
-
null,
|
1359
|
-
[-1, -1, -1]
|
1360
|
-
), i && (i.target && q(i.target, this, i.anchor), i.props && (this.$set(i.props), me()));
|
1361
|
-
}
|
1362
|
-
static get observedAttributes() {
|
1363
|
-
return [
|
1364
|
-
"enableMinutiae",
|
1365
|
-
"videoDimensions",
|
1366
|
-
"noTabs",
|
1367
|
-
"weightsPath",
|
1368
|
-
"showCaptureButton",
|
1369
|
-
"showUnconformities",
|
1370
|
-
"videoFilter",
|
1371
|
-
"play"
|
1372
|
-
];
|
1373
|
-
}
|
1374
|
-
get enableMinutiae() {
|
1375
|
-
return this.$$.ctx[35];
|
1376
|
-
}
|
1377
|
-
set enableMinutiae(i) {
|
1378
|
-
this.$$set({ enableMinutiae: i }), me();
|
1379
|
-
}
|
1380
|
-
get videoDimensions() {
|
1381
|
-
return this.$$.ctx[36];
|
1382
|
-
}
|
1383
|
-
set videoDimensions(i) {
|
1384
|
-
this.$$set({ videoDimensions: i }), me();
|
1385
|
-
}
|
1386
|
-
get noTabs() {
|
1387
|
-
return this.$$.ctx[37];
|
1388
|
-
}
|
1389
|
-
set noTabs(i) {
|
1390
|
-
this.$$set({ noTabs: i }), me();
|
1391
|
-
}
|
1392
|
-
get weightsPath() {
|
1393
|
-
return this.$$.ctx[38];
|
1394
|
-
}
|
1395
|
-
set weightsPath(i) {
|
1396
|
-
this.$$set({ weightsPath: i }), me();
|
1397
|
-
}
|
1398
|
-
get showCaptureButton() {
|
1399
|
-
return this.$$.ctx[0];
|
1400
|
-
}
|
1401
|
-
set showCaptureButton(i) {
|
1402
|
-
this.$$set({ showCaptureButton: i }), me();
|
1403
|
-
}
|
1404
|
-
get showUnconformities() {
|
1405
|
-
return this.$$.ctx[1];
|
1406
|
-
}
|
1407
|
-
set showUnconformities(i) {
|
1408
|
-
this.$$set({ showUnconformities: i }), me();
|
1409
|
-
}
|
1410
|
-
get videoFilter() {
|
1411
|
-
return this.$$.ctx[39];
|
1412
|
-
}
|
1413
|
-
set videoFilter(i) {
|
1414
|
-
this.$$set({ videoFilter: i }), me();
|
1415
|
-
}
|
1416
|
-
get play() {
|
1417
|
-
return this.$$.ctx[2];
|
1418
|
-
}
|
1419
|
-
set play(i) {
|
1420
|
-
throw new Error("<document-collector>: Cannot set read-only property 'play'");
|
1421
|
-
}
|
1422
|
-
}
|
1423
|
-
customElements.define("document-collector", un);
|
1424
|
-
export {
|
1425
|
-
un as default
|
1426
|
-
};
|
1427
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG9jdW1lbnRDb2xsZWN0b3JfZThjOWY2NDBfMi4yLjAtUkMwMi5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL2xpYi9kb2NUYWIvRG9jdW1lbnRDb2xsZWN0b3Iuc3ZlbHRlIl0sInNvdXJjZXNDb250ZW50IjpbIjxzdmVsdGU6b3B0aW9ucyB0YWc9XCJkb2N1bWVudC1jb2xsZWN0b3JcIiAvPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgQ2FtZXJhU3RhdHVzIGZyb20gJy4uL2ZhY2VUYWIvY2FtZXJhU3RhdHVzL0NhbWVyYVN0YXR1cy5zdmVsdGUnO1xuICBpbXBvcnQgeyBvbkRlc3Ryb3ksIG9uTW91bnQgfSBmcm9tICdzdmVsdGUnO1xuICBpbXBvcnQgeyBmYWRlIH0gZnJvbSAnc3ZlbHRlL3RyYW5zaXRpb24nO1xuICBpbXBvcnQgdHlwZSB7IEJvZHlQYXJ0LCBCb2R5UGFydFJldHVyblR5cGUgfSBmcm9tICcuLi92YWxpZGF0b3JzL2Jpb21ldHJpY3NWYWxpZGF0b3InO1xuICBpbXBvcnQgeyBfLCBpc0xvYWRpbmcgfSBmcm9tICdzdmVsdGUtaTE4bic7XG4gIGltcG9ydCB7IGdldCwgd3JpdGFibGUgfSBmcm9tICdzdmVsdGUvc3RvcmUnO1xuICBpbXBvcnQgeyBzZWxlY3RlZFRhYiwgVGFiRW51bSB9IGZyb20gJy4uL3RhYkJ0bnMvdGFiU3RvcmUnO1xuICBpbXBvcnQge1xuICAgIGZhY2VWYWxpZGF0aW9uc1N0b3JlLFxuICAgIGltYWdlLFxuICAgIHNldHVwU3RyZWFtLFxuICAgIHZpZGVvU3RvcmUsXG4gICAgcmVxdWVzdFJlc3VsdCxcbiAgICBjYW1lcmFEZXZpY2VzU3RvcmUsXG4gICAganVzdGlmaWNhdGlvbixcbiAgICBzYXZlZCxcbiAgICBjYXB0dXJlZCxcbiAgICBfc3RyZWFtLFxuICAgIHNodXRPZmZDYW1lcmEsXG4gICAgcmVhZHksXG4gICAgY2xlYXJlZFZpZGVvU3JjT2JqZWN0LFxuICAgIGVudW1lcmF0ZURldmljZXMsXG4gICAgb3JpZ2luYWxDYXB0dXJlLFxuICAgIGF1dG9tYXRpY0NhcHR1cmUsXG4gICAgc2VsZWN0ZWRWaWRlb0RldmljZUlkLFxuICAgIHJlcXVlc3RSZXN1bHRFbnVtLFxuICAgIHJldGFrZVBob3RvLFxuICAgIHNob3dGYWNlV2hpbGVWYWxpZGF0aW5nLFxuICAgIGdldFZpZGVvRGltZW5zaW9ucyxcbiAgICBGYWNlRXhwb3J0U3RyYXRlZ3ksXG4gICAgb3JpZW50YXRpb25EYXRhLFxuICAgIEZhY2luZ01vZGVFbnVtLFxuICAgIGZhY2luZ01vZGVcbiAgfSBmcm9tICcuLi9mYWNlVGFiL2ZhY2VTdG9yZSc7XG4gIGltcG9ydCB7XG4gICAgc3dhcENhbWVyYVxuICB9ZnJvbSAnLi4vY29uZi9jb25mU3RvcmUnOyAgXG4gIGltcG9ydCBDb25mQnRuIGZyb20gJy4uL2NvbmYvQ29uZkJ0bi5zdmVsdGUnO1xuICBpbXBvcnQgQ2FtZXJhQnRuIGZyb20gJy4uL2NvbmYvQ2FtZXJhQnRuLnN2ZWx0ZSc7XG4gIGltcG9ydCBFeHBvcnRCdG4gZnJvbSAnLi4vZmluZ2Vyc1RhYi9idXR0b25zL2V4cG9ydEJ0bi9FeHBvcnRCdG4uc3ZlbHRlJztcbiAgaW1wb3J0IHsgZW5hYmxlU3RyYXRlZ3kgfSBmcm9tICcuLi9maW5nZXJzVGFiL2hhbmQvaGFuZFBhcnRzL2ZpbmdlcnNTdG9yZSc7XG4gIGltcG9ydCB7IGV4cG9ydEJ1dHRvbkRpc2FibGVkIH0gZnJvbSAnLi4vZmluZ2Vyc1RhYi9idXR0b25zL2V4cG9ydEJ0bi9leHBvcnRTdG9yZSc7XG4gIGltcG9ydCB7ZHJhd0RldGVjdGlvbnNJbkZhY2UsIGVuYWJsZUZhY2VBcGksIGZhY2VGb3VuZCwgZ2V0RmFjZURldGVjdG9yT3B0aW9ucyB9IGZyb20gJy4uL2ZhY2VUYWIvZmFjZUFwaVN0b3JlJztcbiAgaW1wb3J0IHsgaXNNb2JpbGUsIGlzT2JqZWN0LCBsb2FkRmFjZUFwaUFuZFdlaWdodHMsIGxvb3BDYWxsZXIsIHVuTG9ja1NjcmVlbn0gZnJvbSAnLi4vdXRpbC91dGlsJztcbiAgaW1wb3J0IHsgaXNMb2FkaW5nQVBQIH0gZnJvbSAnLi4vLi4vbWFpblN0b3JlJztcbiAgaW1wb3J0IGxvYWRpbmdHaWYgZnJvbSAnLi4vLi4vYXNzZXRzL2ltZy9CbG9ja3MtMXMtMjAwcHguZ2lmJztcbiAgaW1wb3J0IFN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xuICBpbXBvcnQgeyBjYW1lcmFTdGF0dXNTdG9yZSwgQ2FtZXJhU3RhdHVzRW51bSB9IGZyb20gJy4uL2ZhY2VUYWIvY2FtZXJhU3RhdHVzL2NhbWVyYVN0YXR1c1N0b3JlJztcbiAgaW1wb3J0IHsgbG9nIH0gZnJvbSAnLi4vdXRpbC9sb2dnZXInO1xuXG4gIGxldCB2aWRlbzogSFRNTFZpZGVvRWxlbWVudDtcbiAgbGV0IGRldGVjdGlvbnNDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50O1xuICBsZXQgZW5jbG9zaW5nRGl2OiBIVE1MRGl2RWxlbWVudDtcbiAgbGV0IGlzQ291bnRpbmdEb3duID0gZmFsc2U7XG4gIGxldCB1bmlxdWUgPSB7fTtcbiAgbGV0IGxvYWRlZEZhY2VBcGlBbmRXZWlnaHRzID0gZmFsc2U7XG5cbiAgLy8gUHJvcHNcbiAgZXhwb3J0IGxldCBlbmFibGVNaW51dGlhZTogYm9vbGVhbjtcbiAgZXhwb3J0IGxldCB2aWRlb0RpbWVuc2lvbnM6IHN0cmluZztcbiAgZXhwb3J0IGxldCBub1RhYnM6IGJvb2xlYW47XG4gIGV4cG9ydCBsZXQgd2VpZ2h0c1BhdGg6IHN0cmluZztcbiAgZXhwb3J0IGxldCBzaG93Q2FwdHVyZUJ1dHRvbjogYm9vbGVhbjtcbiAgZXhwb3J0IGxldCBzaG93VW5jb25mb3JtaXRpZXM6IGJvb2xlYW47XG4gIGV4cG9ydCBsZXQgdmlkZW9GaWx0ZXI6IHN0cmluZztcblxuICBjb25zdCBzdGFydEZhY2VBcGkgPSB3cml0YWJsZShmYWxzZSk7XG4gIGNvbnN0IGRhdGFUeXBlUHJlZml4ID0gd3JpdGFibGUoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCcpO1xuXG4gIGxldCBtYXNrQ2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudDtcbiAgbGV0IGRpc3BsYXlDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50O1xuICBsZXQgY2FwdHVyaW5nID0gZmFsc2U7XG4gIGxldCBpbml0aWFsaXplZCA9IGZhbHNlO1xuICBsZXQgaWRybmRMb2FkaW5nID0gdHJ1ZTtcbiAgbGV0IGlkcm5kQ2xvc2VkID0gdHJ1ZTtcbiAgbGV0IGludGVydmFsSWQgPSAwO1xuICBsZXQgZmFjZWFwaUNvdW50ZXIgPSAwO1xuICBsZXQgZmFjZWFwaUZyYW1lUmF0ZSA9IDEwO1xuICBsZXQgcmlnaHRPcmllbnRhdGlvbiA9IHRydWU7XG5cbiAgbGV0IGNvdW50ZG93bkZpbmlzaFRpbWUgPSAwO1xuICBsZXQgZGlzYWJsZUNvdW50RG93biA9IGZhbHNlO1xuXG4gIC8vIGZhY2UgdmFsaWRhdGlvbiByZWxhdGVkXG4gIGxldCBmYWNlTm90VmFsaWRhdGVkID0gZmFsc2U7XG4gIGxldCBmYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJyc7XG5cbiAgbGV0IGRvY0xpbWl0cyA9IHt0b3BMZWZ0WDogMTMwLCB0b3BMZWZ0WTogNzAsIHdpZHRoOiA1NDAsIGhlaWdodDogNDAwfVxuXG4gIGNvbnN0IHRvYXN0ID0gU3dhbC5taXhpbih7XG4gICAgdG9hc3Q6IHRydWUsXG4gICAgcG9zaXRpb246ICdib3R0b20tbGVmdCcsXG4gICAgdGltZXI6IDEzMDAwLFxuICAgIHRpbWVyUHJvZ3Jlc3NCYXI6IHRydWUsXG4gIH0pO1xuXG4gIG9uTW91bnQoYXN5bmMgKCkgPT4ge1xuICAgICRpc0xvYWRpbmdBUFAgPSB0cnVlO1xuICAgIGxvZygnTW91bnRpbmcgRG9jdW1lbnQgQ29sbGVjdG9yIScpO1xuICAgICRyZWFkeSA9IGZhbHNlO1xuICAgICRmYWNlRm91bmQgPSBmYWxzZTtcbiAgICAkY2FwdHVyZWQgPSBmYWxzZTtcbiAgICAkZmFjaW5nTW9kZSA9IEZhY2luZ01vZGVFbnVtLlJFQVJfQ0FNRVJBO1xuICAgIG9wZW5DYW1lcmEoKTtcblxuICAgIGlmICgkZW5hYmxlRmFjZUFwaSkge1xuICAgICAgYXdhaXQgbG9hZEZhY2VBcGlBbmRXZWlnaHRzKHdlaWdodHNQYXRoKTtcbiAgICAgIGxvYWRlZEZhY2VBcGlBbmRXZWlnaHRzID0gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIHNldERvY0xpbWl0cygpIHtcbiAgICBjb25zdCB2aWRlb1dpZHRoID0gJHZpZGVvU3RvcmUudmlkZW9XaWR0aDtcbiAgICBjb25zdCB2aWRlb0hlaWdodCA9ICR2aWRlb1N0b3JlLnZpZGVvSGVpZ2h0O1xuICAgIGNvbnN0IGRvY0hlaWdodCA9IHZpZGVvSGVpZ2h0ICAqIDAuNzM7XG4gICAgY29uc3QgZG9jV2lkdGggPSBkb2NIZWlnaHQgKiAxLjM2O1xuICAgIFxuICAgIGRvY0xpbWl0cy50b3BMZWZ0WCA9ICh2aWRlb1dpZHRoIC0gZG9jV2lkdGgpIC8gMjsgXG4gICAgZG9jTGltaXRzLnRvcExlZnRZID0gKHZpZGVvSGVpZ2h0IC0gZG9jSGVpZ2h0KSAvIDEuNDI7XG4gICAgZG9jTGltaXRzLndpZHRoID0gZG9jV2lkdGg7XG4gICAgZG9jTGltaXRzLmhlaWdodCA9IGRvY0hlaWdodDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRyYXdSZWN0YW5nbGUoY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgLy8gY2xlYXIgdGhlIGFyZWEgKHRoZXJlIHNob3VsZG4ndCBldmVuIGJlIGFueXRoaW5nIGFueXdheXMpXG4gICAgY3R4LmNsZWFyUmVjdCgwLCAwLCBkaXNwbGF5Q2FudmFzLndpZHRoLCBkaXNwbGF5Q2FudmFzLmhlaWdodCk7XG4gICAgLy8gc2F2ZSB0aGUgY29udGV4dCBzdGF0ZVxuICAgIC8vIGZyb20gbWRuIGRvY3NcbiAgICBjdHguc2F2ZSgpO1xuXG4gICAgLy8gYXBwbHkgdGhlIGJsdXIvY29sb3IgZmlsdGVyXG4gICAgaWYgKHZpZGVvRmlsdGVyID09ICdibHVyJyl7XG4gICAgICBjdHguZmlsdGVyID0gYGJsdXIoJHt2aWRlby53aWR0aC82MH1weClgO1xuICAgICAgY3R4LnJlY3QoMCwgMCwgZGlzcGxheUNhbnZhcy53aWR0aCwgZGlzcGxheUNhbnZhcy5oZWlnaHQpO1xuICAgIH0gZWxzZSBpZih2aWRlb0ZpbHRlciAhPSAnbm9uZScpIHtcbiAgICAgIGN0eC5maWxsU3R5bGUgPSB2aWRlb0ZpbHRlcjtcbiAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBkaXNwbGF5Q2FudmFzLndpZHRoLCBkaXNwbGF5Q2FudmFzLmhlaWdodCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGRyYXcgYSByZWN0YW5nbGUgd2l0aCB0aGUgc2FtZSBzaXplIGFzIHRoZSB2aWRlb1xuICAgICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgICAgY3R4LnJlY3QoMCwgMCwgZGlzcGxheUNhbnZhcy53aWR0aCwgZGlzcGxheUNhbnZhcy5oZWlnaHQpO1xuICAgIH1cbiAgICAvLyBtYWtlIGEgcmVjdGFuZ2xlIHRoYXQgYWxtb3N0IGZpbGxzIHRoZSBjYW52YXNcbiAgICBjdHgucmVjdChkb2NMaW1pdHMudG9wTGVmdFgsIGRvY0xpbWl0cy50b3BMZWZ0WSwgZG9jTGltaXRzLndpZHRoLCBkb2NMaW1pdHMuaGVpZ2h0KTtcbiAgICAvLyBjbGlwIHNtYWxsZXIgcmVjdGFuZ2xlIGFnYWluc3QgdGhlIHRoZSBsYXJnZXIgcmVjdGFuZ2xlXG4gICAgLy8gQ2xpcCBwYXRocyBjYW5ub3QgYmUgcmV2ZXJ0ZWQgZGlyZWN0bHkuIFlvdSBtdXN0IHNhdmUgeW91ciBjYW52YXMgc3RhdGUgdXNpbmcgc2F2ZSgpIGJlZm9yZSBjYWxsaW5nIGNsaXAoKSwgYW5kIHJlc3RvcmUgaXQgb25jZSB5b3UgaGF2ZSBmaW5pc2hlZCBkcmF3aW5nIGluIHRoZSBjbGlwcGVkIGFyZWEgdXNpbmcgcmVzdG9yZSgpLlxuICAgIGN0eC5jbGlwKCk7XG4gICAgLy8gZHJhdyB0aGUgdmlkZW9cbiAgICAvLyB0aGlzIG1ha2VzIGZhY2UgYXBpIG9ubHkgYXdhcmUgb2Ygb3V0c2lkZSB0aGUgc21hbGxlciByZWN0YW5nbGUgYXJlYVxuICAgIGRyYXdWaWRlb09uQ2FudmFzKGN0eCwgdmlkZW8sIGRpc3BsYXlDYW52YXMpO1xuICAgIGN0eC5yZXN0b3JlKCk7XG4gICAgXG4gICAgLy8gc2F2ZSBhZ2FpbiwgYmVjYXVzZSB3aGVuIHJlZHJhd2luZyB0aGUgb3ZhbCwgZXZlcnl0aGluZyBhcm91bmQgdGhlIG92YWwgaXMgbG9zdFxuICAgIGN0eC5zYXZlKCk7XG4gICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgIC8vIC8vIGRyYXcgdGhlIHNtYWxsZXIgcmVjdGFuZ2xlICh0aGlzIHRpbWUgaXQgZG9lc24ndCBtYXR0ZXIgdGhlIGRpcmVjdGlvbiwgc2luY2UgdGhlcmUgaXNuJ3QgYSByZWN0YW5nbGUgYmVoaW5kKVxuICAgIGNvbnN0IHByaW1hcnlUaGVtZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRpc3BsYXlDYW52YXMpLmdldFByb3BlcnR5VmFsdWUoJy0tcCcpO1xuICAgIGNvbnN0IHN1Y2Nlc3NUaGVtZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRpc3BsYXlDYW52YXMpLmdldFByb3BlcnR5VmFsdWUoJy0tc3UnKTtcblxuICAgIGN0eC5zdHJva2VTdHlsZSA9IGBoc2woJHtwcmltYXJ5VGhlbWV9KWA7XG4gICAgY3R4LmxpbmVXaWR0aCA9IDE2O1xuICAgIGN0eC5yZWN0KGRvY0xpbWl0cy50b3BMZWZ0WCwgZG9jTGltaXRzLnRvcExlZnRZLCBkb2NMaW1pdHMud2lkdGgsIGRvY0xpbWl0cy5oZWlnaHQpO1xuICAgIGN0eC5zdHJva2UoKTtcbiAgICBpZiAoaXNDb3VudGluZ0Rvd24gJiYgIWRpc2FibGVDb3VudERvd24pIHtcbiAgICAgIGNvbnN0IHRpbWVSZW1haW5pbmcgPSAxIC0gKGNvdW50ZG93bkZpbmlzaFRpbWUgLSBuZXcgRGF0ZSgpLmdldFRpbWUoKSkgLyA0NTAwO1xuICAgICAgLy8gQ291bnRlciBjb250b3VyXG4gICAgICBjdHguc2F2ZSgpO1xuICAgICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgICAgY3R4LmxpbmVXaWR0aCA9IDE2O1xuICAgICAgY3R4LnN0cm9rZVN0eWxlID0gYGhzbCgke3N1Y2Nlc3NUaGVtZX0pYDtcbiAgICAgIGNvbnN0IHN1bVdpZHRoID0gZG9jTGltaXRzLndpZHRoICAqIDMgKiB0aW1lUmVtYWluaW5nO1xuICAgICAgY29uc3Qgc3VtSGVpZ2h0ID0gZG9jTGltaXRzLmhlaWdodCAqIDIgKiB0aW1lUmVtYWluaW5nO1xuICAgICAgY29uc3QgY291bnRkb3duV2lkdGggPSBzdW1XaWR0aCA8IGRvY0xpbWl0cy53aWR0aCA/IHN1bVdpZHRoIDogZG9jTGltaXRzLndpZHRoIDtcbiAgICAgIGNvbnN0IGNvdW50ZG93bkhlaWdodCA9IHN1bUhlaWdodCA8IGRvY0xpbWl0cy5oZWlnaHQgPyBzdW1IZWlnaHQgOiBkb2NMaW1pdHMuaGVpZ2h0IDtcbiAgICAgIGN0eC5yZWN0KGRvY0xpbWl0cy50b3BMZWZ0WCwgZG9jTGltaXRzLnRvcExlZnRZLCBjb3VudGRvd25XaWR0aCwgY291bnRkb3duSGVpZ2h0KTtcbiAgICAgIGN0eC5zdHJva2UoKTtcbiAgICB9XG4gICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgIGNvbnN0IGNsaXBQYXRoID0gbmV3IFBhdGgyRCgpO1xuICAgIGNsaXBQYXRoLnJlY3QoXG4gICAgICBkb2NMaW1pdHMudG9wTGVmdFgsIGRvY0xpbWl0cy50b3BMZWZ0WSwgZG9jTGltaXRzLndpZHRoLCBkb2NMaW1pdHMuaGVpZ2h0XG4gICAgKTtcbiAgICAvLyBiYXNpY2FsbHkgY2xpcHBpbmcgdGhlIG90aGVyIHdheSBhcm91bmQsIHNvIGZhY2UgYXBpIGlzIGF3YXJlIG9mIHRoZSBzbWFsbGVyIHJlY3RhbmdsZSBhcmVhXG4gICAgY3R4LmNsaXAoY2xpcFBhdGgpO1xuICAgIGRyYXdWaWRlb09uQ2FudmFzKGN0eCwgdmlkZW8sIGRpc3BsYXlDYW52YXMpO1xuICAgY3R4LnJlc3RvcmUoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRyYXdWaWRlb09uQ2FudmFzKGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCB2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgZGlzcGxheUNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQpIHtcbiAgICBjb25zdCBpc1NhbWVQcm9wb3J0aW9uID1cbiAgICAgICh2aWRlby52aWRlb0hlaWdodCA+PSB2aWRlby52aWRlb1dpZHRoICYmIGRpc3BsYXlDYW52YXMuaGVpZ2h0ID49IGRpc3BsYXlDYW52YXMud2lkdGgpIHx8XG4gICAgICAodmlkZW8udmlkZW9IZWlnaHQgPCB2aWRlby52aWRlb1dpZHRoICYmIGRpc3BsYXlDYW52YXMuaGVpZ2h0IDwgZGlzcGxheUNhbnZhcy53aWR0aCk7XG5cbiAgICBjdHguZHJhd0ltYWdlKFxuICAgICAgdmlkZW8sXG4gICAgICBpc1NhbWVQcm9wb3J0aW9uID8gMCA6IHZpZGVvLnZpZGVvV2lkdGggLyAyIC0gZGlzcGxheUNhbnZhcy53aWR0aCxcbiAgICAgIDAsXG4gICAgICBpc1NhbWVQcm9wb3J0aW9uID8gdmlkZW8udmlkZW9XaWR0aCA6IHZpZGVvLnZpZGVvSGVpZ2h0ICogKGRpc3BsYXlDYW52YXMud2lkdGggLyBkaXNwbGF5Q2FudmFzLmhlaWdodCksXG4gICAgICB2aWRlby52aWRlb0hlaWdodCxcbiAgICAgIDAsXG4gICAgICAwLFxuICAgICAgZGlzcGxheUNhbnZhcy53aWR0aCxcbiAgICAgIGRpc3BsYXlDYW52YXMuaGVpZ2h0XG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc2V0Q2FtZXJhKCkge1xuICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uT0s7XG4gICAgY2FwdHVyaW5nID0gdHJ1ZTtcbiAgICBpZHJuZENsb3NlZCA9IGZhbHNlO1xuICAgIGlkcm5kTG9hZGluZyA9IHRydWU7XG4gIH1cblxuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gcGxheSgpIHtcbiAgICAvLyB3YWl0IGZvciBmYWNlIGFwaSB0byBsb2FkIHdlaWdodHNcbiAgICBpZiAoJGVuYWJsZUZhY2VBcGkgJiYgIWxvYWRlZEZhY2VBcGlBbmRXZWlnaHRzKSByZXR1cm4gbG9vcENhbGxlcih2aWRlbywgcGxheSk7XG4gICAgLy8gcmV0dXJuIGlmIHVuaW5pdGlhbGl6ZWQgdmlkZW8gZWxlbWVudFxuICAgIGlmICghdmlkZW8pIHJldHVybjtcbiAgICAvLyByZXR1cm4gaWYgdGhlIGN1cnJlbnQgdGFiIGlzbid0IGZhY2VcbiAgICBpZiAoISgkc2VsZWN0ZWRUYWIgPT09IFRhYkVudW0uRG9jdW1lbnQpICYmICFub1RhYnMpIHJldHVybiBsb29wQ2FsbGVyKHZpZGVvLCBwbGF5KTtcbiAgICAvLyBpZiBldmVyeXRoaW5nIHBhc3NlcyB3ZSBhcmUgcmVhZHkgdG8gY2FwdHVyZVxuICAgICRyZWFkeSA9IHRydWU7XG4gICAgLy8gb25seSBtYWtlIGRldGVjdGlvbnMgaWYgZmFjZSBhcGkgZW5hYmxlZFxuICAgIGlmICgkZW5hYmxlRmFjZUFwaSkge1xuICAgICAgLy8gZmlyZXMgdGhlIGxpc3RlbmVyIHRvIHN0YXJ0IHRoZSBmYWNlIGFwaSBsb29wXG4gICAgICBpZiAoISRzdGFydEZhY2VBcGkpICRzdGFydEZhY2VBcGkgPSB0cnVlO1xuXG4gICAgICBkcmF3UmVjdGFuZ2xlKGRpc3BsYXlDYW52YXMuZ2V0Q29udGV4dCgnMmQnKSBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIHZpZGVvKTtcbiAgICAgIFxuICAgICAgbG9vcENhbGxlcih2aWRlbywgcGxheSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRyYXdSZWN0YW5nbGUoZGlzcGxheUNhbnZhcy5nZXRDb250ZXh0KCcyZCcpIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgdmlkZW8pO1xuICAgICAgbG9vcENhbGxlcih2aWRlbywgcGxheSk7XG4gICAgfVxuICB9XG5cbiAgLy9UT0RPOiBjYXB0dXJlIGFyZWEgcHJvcG9ydGlvbmFsIHRvIGRvY0xpbWl0cyBkaXJlY3RseSBmcm9tIGNhbWVyYVxuICBhc3luYyBmdW5jdGlvbiBjYXB0dXJlKCkge1xuICAgIHVuTG9ja1NjcmVlbigpO1xuICAgICRyZXF1ZXN0UmVzdWx0ID0gcmVxdWVzdFJlc3VsdEVudW0uT0s7XG4gICAgJGNhcHR1cmVkID0gdHJ1ZTtcbiAgICAkc2F2ZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGNhbnZhcy53aWR0aCA9IGRvY0xpbWl0cy53aWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gZG9jTGltaXRzLmhlaWdodDtcbiAgICBjdHg/LmRyYXdJbWFnZShcbiAgICAgIHZpZGVvLCBcbiAgICAgIGRvY0xpbWl0cy50b3BMZWZ0WCwgXG4gICAgICBkb2NMaW1pdHMudG9wTGVmdFksIFxuICAgICAgZG9jTGltaXRzLndpZHRoLCBcbiAgICAgIGRvY0xpbWl0cy5oZWlnaHQsIFxuICAgICAgMCwgXG4gICAgICAwLFxuICAgICAgY2FudmFzLndpZHRoLFxuICAgICAgY2FudmFzLmhlaWdodCk7XG4gICAgY29uc3QgaW1nID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycpLnNwbGl0KCcsJyk7XG4gICAgJGRhdGFUeXBlUHJlZml4ID0gaW1nWzBdO1xuICAgICRpbWFnZSA9IGltZ1sxXTtcbiAgICAkb3JpZ2luYWxDYXB0dXJlID0gaW1nWzFdO1xuICAgIGNvbnN0IGJvZHlQYXJ0cyA9IFt7ZGF0YTogJG9yaWdpbmFsQ2FwdHVyZX1dO1xuICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IEN1c3RvbUV2ZW50KCdkb2N1bWVudC11bmNvbmZvcm1pdGllcy12YWxpZGF0ZWQnLCB7XG4gICAgICAgIGRldGFpbDoge1xuICAgICAgICAgIGJvZHlQYXJ0czogYm9keVBhcnRzLFxuICAgICAgICAgIHN0YXR1czogJHJlcXVlc3RSZXN1bHQsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBzYXZlKCkge1xuICAgIGNvbnN0IGZhY2U6IEJvZHlQYXJ0ID0ge1xuICAgICAgYm9keVBhcnQ6ICdET0NVTUVOVCcsXG4gICAgICBkYXRhOiAkaW1hZ2UsXG4gICAgICBqdXN0aWZpY2F0aW9uOiAkanVzdGlmaWNhdGlvbixcbiAgICB9O1xuICAgICRzYXZlZCA9IHRydWU7XG4gICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdleHBvcnQtZG9jdW1lbnQnLCB7IGRldGFpbDogZmFjZSB9KSk7XG4gIH1cblxuICBmdW5jdGlvbiByZXRha2UoKSB7XG4gICAgLy9lbWl0IGFuIGVtcHR5IGV2ZW50IGluZm9ybWluZyB0aGF0IGl0IHdhcyBzY3JhcHBlZFxuICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnZG9jdW1lbnQtc2NyYXBwZWQnKSk7XG4gICAgJHNhdmVkID0gZmFsc2U7XG4gICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5PSztcbiAgICAkY2FwdHVyZWQgPSBmYWxzZTtcbiAgICAkb3JpZ2luYWxDYXB0dXJlID0gJyc7XG4gICAgZmFjZVZhbGlkYXRpb25BbGVydCA9ICcnO1xuICAgIGZhY2VOb3RWYWxpZGF0ZWQgPSBmYWxzZTtcbiAgICBpZiAoaWRybmRDbG9zZWQpIHJlc2V0Q2FtZXJhKCk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBvcGVuQ2FtZXJhKGRldmljZT86IHN0cmluZykge1xuICAgICRpc0xvYWRpbmdBUFAgPSB0cnVlO1xuICAgIC8vIHRoaXMgd2VpcmQgc3R1ZiB3aXRoIGhlaWdodCBhbmQgd2lkdGggaXMgaGVyZSB0byBjb21wZW5zYXRlIGEgc3ZlbHRlIGlzc3VlXG4gICAgLy8gYmVjYXVzZSBvbk1vdW50IGdldHMgY2FsbGVkIHR3aWNlXG4gICAgY29uc3QgW3dpZHRoLCBoZWlnaHRdID0gKHZpZGVvRGltZW5zaW9ucyA/PyAnJylcbiAgICAgID8ucmVwbGFjZUFsbCgnICcsICcnKVxuICAgICAgPy5zcGxpdCgneCcpXG4gICAgICA/Lm1hcCgodikgPT4gKHYgPyBwYXJzZUludCh2KSA6IHVuZGVmaW5lZCkpO1xuICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkgcmV0dXJuO1xuICAgICR2aWRlb1N0b3JlID0geyB2aWRlb1dpZHRoOiB3aWR0aCwgdmlkZW9IZWlnaHQ6IGhlaWdodCB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmICgkY2FtZXJhU3RhdHVzU3RvcmUgPT0gQ2FtZXJhU3RhdHVzRW51bS5DQU1FUkFfT1JJRU5UQVRJT05fTEFORFNDQVBFKSByZXR1cm47XG4gICAgICBcbiAgICAgIGF3YWl0IGVudW1lcmF0ZURldmljZXMoKTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgICBkZXZpY2VJZDogZGV2aWNlSWQsXG4gICAgICAgICAgd2lkdGg6IHdpZHRoQ2FtZXJhLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0Q2FtZXJhLFxuICAgICAgICAgIGFzcGVjdFJhdGlvOiBhc3BlY3RSYXRpb0NhbWVyYSxcbiAgICAgIH0gPSBhd2FpdCBnZXRWaWRlb0RpbWVuc2lvbnMod2lkdGgsIGhlaWdodCwgJGZhY2luZ01vZGUsIGRldmljZSk7XG4gICAgICAvLyBmbGlwIGVtXG4gICAgICBpZiAoYXNwZWN0UmF0aW9DYW1lcmEgJiYgYXNwZWN0UmF0aW9DYW1lcmEgPCAxICYmIGlzTW9iaWxlKCkpIHtcbiAgICAgICAgJHZpZGVvU3RvcmUgPSB7IHZpZGVvV2lkdGg6IGhlaWdodENhbWVyYSwgdmlkZW9IZWlnaHQ6IHdpZHRoQ2FtZXJhIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAkdmlkZW9TdG9yZSA9IHsgdmlkZW9XaWR0aDogd2lkdGhDYW1lcmEsIHZpZGVvSGVpZ2h0OiBoZWlnaHRDYW1lcmEgfTtcbiAgICAgIH1cbiAgICAgIHNldERvY0xpbWl0cygpO1xuICAgICAgJHNlbGVjdGVkVmlkZW9EZXZpY2VJZCA9IGRldmljZUlkID8gZGV2aWNlSWQgOiAkY2FtZXJhRGV2aWNlc1N0b3JlWzBdLmRldmljZUlkO1xuICAgICAgJGNhbWVyYVN0YXR1c1N0b3JlID0gQ2FtZXJhU3RhdHVzRW51bS5PSztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zdCBlcnJvciA9IGUgYXMgRE9NRXhjZXB0aW9uO1xuICAgICAgaWRybmRDbG9zZWQgPSB0cnVlO1xuICAgICAgY29uc3QgY29uc3RyYWludEVycm9yID0gKGlzT2JqZWN0KGUpICYmIGUuY29uc3RyYWludCA/IGUuY29uc3RyYWludCA6ICcnKTsgXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yLCBjb25zdHJhaW50RXJyb3IpO1xuICAgICAgaWYgKGlzT2JqZWN0KGVycm9yKSAmJiAnbWVzc2FnZScgaW4gZXJyb3IgJiYgZXJyb3IubWVzc2FnZS5pbmNsdWRlcygnUGVybWlzc2lvbiBkZW5pZWQnKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiVXNlciBkaWRuJ3QgZ2l2ZSBwZXJtaXNzaW9uIHRvIHVzZSBjYW1lcmEhXCIpO1xuICAgICAgICAkY2FtZXJhU3RhdHVzU3RvcmUgPSBDYW1lcmFTdGF0dXNFbnVtLkNBTUVSQV9ERU5JRURfRVJST1I7XG4gICAgICB9XG4gICAgICBpZiAoaXNPYmplY3QoZXJyb3IpICYmICdtZXNzYWdlJyBpbiBlcnJvciAmJiBlcnJvci5tZXNzYWdlLmluY2x1ZGVzKCdSZXF1ZXN0ZWQgZGV2aWNlIG5vdCBmb3VuZCcpKSB7XG4gICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uREVWSUNFX05PVF9GT1VORF9FUlJPUjtcbiAgICAgIH1cbiAgICAgIGlmIChjb25zdHJhaW50RXJyb3IuaW5jbHVkZXMoJ3dpZHRoJykgfHwgY29uc3RyYWludEVycm9yLmluY2x1ZGVzKCdoZWlnaHQnKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBDYW1lcmEgZG9lcyBub3QgbWVldCB0aGUgbWluaW11bSBzdXBwb3J0ZWQgcmVxdWlyZW1lbnRzISAoJHtjb25zdHJhaW50RXJyb3J9KWApO1xuICAgICAgICAkY2FtZXJhU3RhdHVzU3RvcmUgPSBDYW1lcmFTdGF0dXNFbnVtLkNBTUVSQV9VTlNVUFBPUlRFRDtcbiAgICAgIH1cbiAgICB9XG4gICAgJGlzTG9hZGluZ0FQUCA9IGZhbHNlO1xuICB9XG5cbiAgLy8gU3Vic2NyaXB0aW9uc1xuXG4gIGNvbnN0IHVuc3Vic2NyaWJlVmlkZW9EaW1lbnNpb25zID0gdmlkZW9TdG9yZS5zdWJzY3JpYmUoKHN0b3JlT2JqKSA9PiB7XG4gICAgaWYgKCF2aWRlbykgcmV0dXJuO1xuICAgIGlmICghZGV0ZWN0aW9uc0NhbnZhcykgcmV0dXJuO1xuXG4gICAgdmlkZW8ud2lkdGggPSBzdG9yZU9iai52aWRlb1dpZHRoO1xuICAgIHZpZGVvLmhlaWdodCA9IHN0b3JlT2JqLnZpZGVvSGVpZ2h0O1xuICAgIGRldGVjdGlvbnNDYW52YXMud2lkdGggPSBzdG9yZU9iai52aWRlb1dpZHRoO1xuICAgIGRldGVjdGlvbnNDYW52YXMuaGVpZ2h0ID0gc3RvcmVPYmoudmlkZW9IZWlnaHQ7XG4gICAgbWFza0NhbnZhcy53aWR0aCA9IHN0b3JlT2JqLnZpZGVvV2lkdGg7XG4gICAgbWFza0NhbnZhcy5oZWlnaHQgPSBzdG9yZU9iai52aWRlb0hlaWdodDtcbiAgICBkaXNwbGF5Q2FudmFzLndpZHRoID0gc3RvcmVPYmoudmlkZW9XaWR0aDtcbiAgICBkaXNwbGF5Q2FudmFzLmhlaWdodCA9IHN0b3JlT2JqLnZpZGVvSGVpZ2h0O1xuICBcbiAgfSk7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmVGYWNlVmFsaWRhdGlvbnMgPSBmYWNlVmFsaWRhdGlvbnNTdG9yZS5zdWJzY3JpYmUoKG5ld1ZhbHVlKSA9PiB7XG4gICAgbGV0IG5ld0ZhY2VWYWxpZGF0aW9uQWxlcnQgPSAnJztcblxuICAgIGlmICghbmV3VmFsdWUuaXNQZXJzb25DbG9zZUVub3VnaCkge1xuICAgICAgbmV3RmFjZVZhbGlkYXRpb25BbGVydCA9ICdmYWNlQ29sbGVjdG9yLmNvbWVDbG9zZXJDYW1lcmEnO1xuICAgIH0gZWxzZSBpZiAobmV3VmFsdWUuaXNQZXJzb25Ub29jbG9zZSkge1xuICAgICAgbmV3RmFjZVZhbGlkYXRpb25BbGVydCA9ICdmYWNlQ29sbGVjdG9yLm1vdmVBd2F5Q2FtZXJhJztcbiAgICB9IGVsc2UgaWYgKCFuZXdWYWx1ZS5pc1BlcnNvbkluRnJhbWUpIHtcbiAgICAgIG5ld0ZhY2VWYWxpZGF0aW9uQWxlcnQgPSAnZG9jQ29sbGVjdG9yLnN0YXlJbkZyYW1lJztcbiAgICB9IFxuXG4gICAgaWYgKG5ld0ZhY2VWYWxpZGF0aW9uQWxlcnQgIT0gJycpe1xuICAgICAgIC8vVE9ETzogdGVzdCBvbiBpT1MgYW5kIGlmIGl0IGRvZXNuJ3Qgd29yaywgZG8gaXQgYmFzZWQgb24gdGhlIGNsb2NrXG4gICAgICAgaWYgKG5ld0ZhY2VWYWxpZGF0aW9uQWxlcnQgIT0gZmFjZVZhbGlkYXRpb25BbGVydCkgeyAgICAgICAgXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGZhY2VOb3RWYWxpZGF0ZWQgPSBmYWxzZTtcbiAgICAgICAgICBmYWNlVmFsaWRhdGlvbkFsZXJ0ID0gbmV3RmFjZVZhbGlkYXRpb25BbGVydDtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGZhY2VOb3RWYWxpZGF0ZWQgPSB0cnVlO1xuICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgIFxuICAgICAgICB9LCAzMDAwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBVVRPTUFUSUMgQ0FQVFVSRVxuICAgIC8vIGlmIGFsbCB0aGUgcGFyYW1ldGVycyBhcmUgb2tcbiAgICBpZiAoXG4gICAgICAhJGNhcHR1cmVkICYmXG4gICAgICAkYXV0b21hdGljQ2FwdHVyZSAmJlxuICAgICAgIWlzQ291bnRpbmdEb3duICYmXG4gICAgICBuZXdWYWx1ZS5pc1BlcnNvbkluRnJhbWUgJiZcbiAgICAgICEoIW5ld1ZhbHVlLmlzUGVyc29uQ2xvc2VFbm91Z2ggfHwgbmV3VmFsdWUuaXNQZXJzb25Ub29jbG9zZSlcbiAgICApIHtcbiAgICAgIC8vIHN0YXJ0IGEgY291bnRkb3duIGFuZCB0YWtlIGEgcGljdHVyZVxuICAgICAgaXNDb3VudGluZ0Rvd24gPSB0cnVlO1xuICAgICAgZmFjZU5vdFZhbGlkYXRlZCA9IGZhbHNlO1xuICAgICAgY291bnRkb3duRmluaXNoVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgNDUwMDtcbiAgICAgIGNvbnN0IGNvdW50ZG93bkludGVydmFsQ2FsbGJhY2sgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIC8vIHN0b3AgY291bnRpbmcgaWYgZGlzYWJsZWQgbWlkLWNvdW50IG9yIGlmIGNhcHR1cmVkIGJlZm9yZVxuICAgICAgICBpZiAoXG4gICAgICAgICAgISRhdXRvbWF0aWNDYXB0dXJlIHx8XG4gICAgICAgICAgJGNhcHR1cmVkIHx8XG4gICAgICAgICAgIW5ld1ZhbHVlLmlzUGVyc29uQ2xvc2VFbm91Z2ggfHxcbiAgICAgICAgICBuZXdWYWx1ZS5pc1BlcnNvblRvb2Nsb3NlIHx8ICAgICAgICAgICAgICBcbiAgICAgICAgICAhbmV3VmFsdWUuaXNQZXJzb25JbkZyYW1lXG4gICAgICAgICkge1xuICAgICAgICAgIGlzQ291bnRpbmdEb3duID0gZmFsc2U7XG4gICAgICAgICAgZGlzYWJsZUNvdW50RG93biA9IHRydWU7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBkaXNhYmxlQ291bnREb3duID0gZmFsc2U7XG4gICAgICAgICAgfSwgMTUwMCk7XG4gICAgICAgICAgY2xlYXJJbnRlcnZhbChjb3VudGRvd25JbnRlcnZhbENhbGxiYWNrKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIGNvbnN0IHJlbWFpbmluZ1NlY29uZHMgPSBNYXRoLmZsb29yKCgoY291bnRkb3duRmluaXNoVGltZSAtIG5vdykgJSAoMTAwMCAqIDYwKSkgLyAxMDAwKTtcbiAgICAgICAgLy8gY291bnREb3duSHRtbEVsZW1lbnQuaW5uZXJIVE1MID0gcmVtYWluaW5nU2Vjb25kcy50b1N0cmluZygpO1xuICAgICAgICBpZiAocmVtYWluaW5nU2Vjb25kcyA8PSAwKSB7XG4gICAgICAgICAgY2xlYXJJbnRlcnZhbChjb3VudGRvd25JbnRlcnZhbENhbGxiYWNrKTtcbiAgICAgICAgICBpc0NvdW50aW5nRG93biA9IGZhbHNlO1xuICAgICAgICAgIGNvbnN0IGN1c3RvbUVsZW1lbnQgPSBkb2N1bWVudFxuICAgICAgICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdiaW9tZXRyaWMtY29sbGVjdG9yJyk/LlswXVxuICAgICAgICAgICAgPy5zaGFkb3dSb290Py5nZXRFbGVtZW50QnlJZCgnYnJ5LWNjLWNhcHR1cmUtYnRuJyk7XG4gICAgICAgICAgY3VzdG9tRWxlbWVudD8uY2xpY2soKTtcbiAgICAgICAgfVxuICAgICAgfSwgMjUwKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIHdlIGNvdWxkIGhhdmUgdXNlZCBoaWRkZW49eyRjYXB0dXJlZH0sIGJ1dCBmb3Igc29tZSByZWFzb24gaXQgZG9lc24ndCB3b3JrIHNvIGRvIHRoaXMgaW5zdGVhZFxuICBjb25zdCB1bnN1YnNjcmliZUNhcHR1cmVkU3RhdGUgPSBjYXB0dXJlZC5zdWJzY3JpYmUoKG5ld1ZhbHVlKSA9PiB7XG4gICAgaWYgKCFlbmNsb3NpbmdEaXYpIHJldHVybjtcbiAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgIGVuY2xvc2luZ0Rpdi5jbGFzc0xpc3QucmVtb3ZlKCdmbGV4Jyk7XG4gICAgICBlbmNsb3NpbmdEaXYuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVuY2xvc2luZ0Rpdi5jbGFzc0xpc3QuYWRkKCdmbGV4Jyk7XG4gICAgICBlbmNsb3NpbmdEaXYuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCB1bnN1YnNjcmliZUNsZWFyVmlkZW9TcmMgPSBjbGVhcmVkVmlkZW9TcmNPYmplY3Quc3Vic2NyaWJlKChuZXdWYWx1ZSkgPT4ge1xuICAgIGlmICghdmlkZW8pIHJldHVybjtcbiAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdzZXR0aW5nIG51bGwgaW4gdmlkZW8gc3JjT2JqZWN0Jyk7XG4gICAgICB2aWRlby5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgdmlkZW8uc3JjID0gJyc7XG4gICAgfVxuICB9KTtcblxuICBzZWxlY3RlZFRhYi5zdWJzY3JpYmUoYXN5bmMgKHRhYikgPT4ge1xuICAgIGlmICh0YWIgPT09IFRhYkVudW0uRG9jdW1lbnQpIHtcbiAgICAgIGF3YWl0IGVudW1lcmF0ZURldmljZXMoKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IHVuc3Vic2NyaWJlU2VsZWN0ZWRTdHJlYW0gPSBzZWxlY3RlZFZpZGVvRGV2aWNlSWQuc3Vic2NyaWJlKGFzeW5jIChuZXdEZXZpY2VJZCkgPT4ge1xuICAgIGlmICghbmV3RGV2aWNlSWQpIHJldHVybjtcbiAgICBpZiAoIXZpZGVvKSB7XG4gICAgICAvLyByZXJlbmRlciB2aWRlbyB0YWdcbiAgICAgIHVuaXF1ZSA9IHt9O1xuICAgIH1cbiAgICBjb25zdCB7IHZpZGVvSGVpZ2h0LCB2aWRlb1dpZHRoIH0gPSAkdmlkZW9TdG9yZTtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgc2V0dXBTdHJlYW0odmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQsIG5ld0RldmljZUlkKTtcbiAgICAgIHZpZGVvLnNyY09iamVjdCA9IHN0cmVhbTtcbiAgICAgICRfc3RyZWFtID0gc3RyZWFtO1xuICAgICAgJGNsZWFyZWRWaWRlb1NyY09iamVjdCA9IGZhbHNlO1xuICAgICAgaWYgKCFyaWdodE9yaWVudGF0aW9uKSB7XG4gICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uQ0FNRVJBX09SSUVOVEFUSU9OX0xBTkRTQ0FQRTtcbiAgICAgICAgc2h1dE9mZkNhbWVyYSgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gZSBhcyBET01FeGNlcHRpb247XG4gICAgICBpZHJuZENsb3NlZCA9IHRydWU7XG4gICAgICBpZiAoaXNPYmplY3QoZXJyb3IpICYmICdtZXNzYWdlJyBpbiBlcnJvciAmJiBlcnJvci5tZXNzYWdlLmluY2x1ZGVzKCdSZXF1ZXN0ZWQgZGV2aWNlIG5vdCBmb3VuZCcpKSB7XG4gICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uREVWSUNFX05PVF9GT1VORF9FUlJPUjtcbiAgICAgIH1cbiAgICB9XG5cbiAgfSk7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmVDaGFuZ2VUYWIgPSBzZWxlY3RlZFRhYi5zdWJzY3JpYmUoYXN5bmMgKHRhYikgPT4ge1xuICAgIGlmICh0YWIgPT09IFRhYkVudW0uRG9jdW1lbnQpIHtcbiAgICAgIGlmICghY2FwdHVyaW5nICYmICEkY2FwdHVyZWQgJiYgaW5pdGlhbGl6ZWQpIGF3YWl0IHJlc2V0Q2FtZXJhKCk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCB1bnN1YnNjcmliZUZhY2VBcGkgPSBzdGFydEZhY2VBcGkuc3Vic2NyaWJlKGFzeW5jIChuZXdWYWx1ZSkgPT4ge1xuICAgIGlmIChuZXdWYWx1ZSkgZmFjZWFwaUxvb3AoKTtcbiAgfSk7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmVSZWFkeUNhbWVyYUV2ZW50RW1pdHRlciA9IHJlYWR5LnN1YnNjcmliZSgobnYpID0+IHtcbiAgICBpZiAobnYpIHtcbiAgICAgIC8vIGluZm9ybXMgdGhhdCB0aGUgY2FtZXJhIGlzIHJlYWR5ICh0byBiZSBjbG9zZWQgaWYgdGhhdCBpcyB3aGF0IHlvdSB3YW50IHRvIGRvKVxuICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdicnljYy1jYW1lcmEtcmVhZHknKSk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCB1bnN1YnNjcmliZVN3YXBDYW1lcmEgPSBzd2FwQ2FtZXJhLnN1YnNjcmliZSgobmV3VmFsdWUpID0+IHtcbiAgICBpZiAoISR2aWRlb1N0b3JlKSByZXR1cm47XG4gICAgXG4gICAgaWYgKCFpc01vYmlsZSgpKSB7IC8vIGRlc2t0b3AgY2FtZXJhc1xuICAgICAgY29uc3QgbmV3RGV2aWNlID0gJGNhbWVyYURldmljZXNTdG9yZS5maW5kKGRldmljZSA9PiBkZXZpY2UuZGV2aWNlSWQgIT09ICRzZWxlY3RlZFZpZGVvRGV2aWNlSWQpO1xuICAgICAgY29uc3QgZGV2aWNlSWQgPSBuZXdEZXZpY2UgPyBuZXdEZXZpY2UuZGV2aWNlSWQgOiAkY2FtZXJhRGV2aWNlc1N0b3JlWzBdLmRldmljZUlkO1xuICAgICAgb3BlbkNhbWVyYShkZXZpY2VJZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG5ld1ZhbHVlKSB7IC8vIG1vYmlsZSBkZXZpY2VzXG4gICAgICAkZmFjaW5nTW9kZSA9IEZhY2luZ01vZGVFbnVtLkZST05UX0NBTUVSQTtcbiAgICAgIG9wZW5DYW1lcmEoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgJGZhY2luZ01vZGUgPSBGYWNpbmdNb2RlRW51bS5SRUFSX0NBTUVSQTtcbiAgICAgIG9wZW5DYW1lcmEoKTtcbiAgICB9ICAgIFxuICB9KTtcblxuICBjb25zdCB1bnN1YnNjcmliZU9yaWVudGF0aW9uID0gb3JpZW50YXRpb25EYXRhLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgIGlmICghZGF0YS5pc1N1cHBvcnRlZCB8fCAhaXNNb2JpbGUoKSkgcmV0dXJuO1xuXG4gICAgcmlnaHRPcmllbnRhdGlvbiA9IGRhdGEub3JpZW50YXRpb24uaW5jbHVkZXMoJ2xhbmRzY2FwZScpO1xuICAgIGlmIChyaWdodE9yaWVudGF0aW9uKSB7XG4gICAgICAkY2FtZXJhU3RhdHVzU3RvcmUgPSBDYW1lcmFTdGF0dXNFbnVtLk9LO1xuICAgICAgaWYgKCR2aWRlb1N0b3JlKSB7IFxuICAgICAgICAkc2VsZWN0ZWRWaWRlb0RldmljZUlkID0gJyc7XG4gICAgICAgIG9wZW5DYW1lcmEoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgJGNhbWVyYVN0YXR1c1N0b3JlID0gQ2FtZXJhU3RhdHVzRW51bS5DQU1FUkFfT1JJRU5UQVRJT05fTEFORFNDQVBFO1xuICAgICAgc2h1dE9mZkNhbWVyYSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gZmFjZWFwaUxvb3AoKSB7XG4gICAgbGV0IGRldGVjdGlvbnNSZXN1bHQ7XG4gICAgaWYgKGZhY2VhcGlDb3VudGVyID49IGZhY2VhcGlGcmFtZVJhdGUpIHtcbiAgICAgIGZhY2VhcGlDb3VudGVyID0gMDtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBhd2FpdCBnZXRGYWNlRGV0ZWN0b3JPcHRpb25zKCk7XG4gICAgICAvLyBkZWJ1Z2dlclxuICAgICAgY29uc3QgZmFjZWFwaSA9IGF3YWl0IGltcG9ydCgnQHZsYWRtYW5kaWMvZmFjZS1hcGknKTtcbiAgICAgIGxldCBkZXRlY3Rpb25zUmVzdWx0MjtcbiAgICAgIGRldGVjdGlvbnNSZXN1bHQyID0gZmFjZWFwaS5kZXRlY3RTaW5nbGVGYWNlKGRpc3BsYXlDYW52YXMsIG9wdGlvbnMpO1xuICAgICAgZGV0ZWN0aW9uc1Jlc3VsdCA9IGF3YWl0IGRldGVjdGlvbnNSZXN1bHQyLndpdGhGYWNlTGFuZG1hcmtzKCk7XG4gICAgICAvLyBjbGVhciBjYW52YXMgd2hlbiBub3RoaW5nIGRldGVjdGVkXG4gICAgICBkZXRlY3Rpb25zQ2FudmFzLmdldENvbnRleHQoJzJkJyk/LmNsZWFyUmVjdCgwLCAwLCBkZXRlY3Rpb25zQ2FudmFzLndpZHRoLCBkZXRlY3Rpb25zQ2FudmFzLmhlaWdodCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZhY2VhcGlDb3VudGVyICsrO1xuICAgIH1cbiAgICBcbiAgICBpZiAoZGV0ZWN0aW9uc1Jlc3VsdCkge1xuICAgICAgZHJhd0RldGVjdGlvbnNJbkZhY2UoZGV0ZWN0aW9uc1Jlc3VsdCwgZGV0ZWN0aW9uc0NhbnZhcywgZW5hYmxlTWludXRpYWUsIHRydWUpO1xuICAgIH1cbiAgICBpZiAoJHN0YXJ0RmFjZUFwaSkge1xuICAgICAgbG9vcENhbGxlcih2aWRlbywgZmFjZWFwaUxvb3ApO1xuICAgIH1cbiAgfVxuXG4gIHJldGFrZVBob3RvLnN1YnNjcmliZShhc3luYyAobnYpID0+IHtcbiAgICBpZiAobnYpIHtcbiAgICAgIHJldGFrZSgpO1xuICAgICAgJHJldGFrZVBob3RvID0gZmFsc2U7XG4gICAgfVxuICB9KTtcblxuICBvbkRlc3Ryb3koKCkgPT4ge1xuICAgIHNodXRPZmZDYW1lcmEoKTtcbiAgICB1bnN1YnNjcmliZUNhcHR1cmVkU3RhdGUoKTtcbiAgICB1bnN1YnNjcmliZUZhY2VWYWxpZGF0aW9ucygpO1xuICAgIHVuc3Vic2NyaWJlVmlkZW9EaW1lbnNpb25zKCk7XG4gICAgdW5zdWJzY3JpYmVDbGVhclZpZGVvU3JjKCk7XG4gICAgdW5zdWJzY3JpYmVTZWxlY3RlZFN0cmVhbSgpO1xuICAgIHVuc3Vic2NyaWJlQ2hhbmdlVGFiKCk7XG4gICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcbiAgICB1bnN1YnNjcmliZUZhY2VBcGkoKTtcbiAgICB1bnN1YnNjcmliZVN3YXBDYW1lcmEoKTtcbiAgICB1bnN1YnNjcmliZVJlYWR5Q2FtZXJhRXZlbnRFbWl0dGVyKCk7XG4gICAgdW5zdWJzY3JpYmVPcmllbnRhdGlvbigpO1xuICAgIHVuTG9ja1NjcmVlbigpO1xuICAgIGludGVydmFsSWQgPSAwO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48IS0tIHN2ZWx0ZS1pZ25vcmUgYTExeS1tZWRpYS1oYXMtY2FwdGlvbiAtLT5cbjxkaXY+XG4gIHsjaWYgJGlzTG9hZGluZ0FQUH1cbiAgICA8c2xvdCBuYW1lPVwib2J0YWluaW5nLXBob3RvLWdpZlwiIGNsYXNzPVwiYmxvY2sgaC1bMTdlbV0gbGc6aC1bMjEuNmVtXSB4bDpoLVszMGVtXVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRyYW5zbGF0ZS15LTEvMyBtZDp0cmFuc2xhdGUteS0xLzQgeGw6dHJhbnNsYXRlLXktMS8yXCI+XG4gICAgICAgIDxpbWcgc3JjPXtsb2FkaW5nR2lmfSBhbHQ9XCJsb2FkaW5nIGdpZlwiIGNsYXNzPVwibS1hdXRvIGgtWzEwZW1dIGxnOmgtWzEyZW1dXCIgLz5cbiAgICAgICAgeyNpZiAkaXNMb2FkaW5nQVBQfVxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiMnhsOnRleHQtMnhsIGxnOnRleHQtMnhsIHRleHQtbWQgYmxvY2sgcC0yIG0tYXV0byB0ZXh0LWNlbnRlclwiPnskXygnZmFjZUNvbGxlY3Rvci5sb2FkaW5nJyl9PC9zcGFuPlxuICAgICAgICB7L2lmfVxuICAgICAgPC9kaXY+XG4gICAgPC9zbG90PlxuICB7OmVsc2V9XG4gICAgPGRpdiBiaW5kOnRoaXM9e2VuY2xvc2luZ0Rpdn0gY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIG14LWF1dG9cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlXCIgaGlkZGVuPXskY2FtZXJhU3RhdHVzU3RvcmUgIT09IENhbWVyYVN0YXR1c0VudW0uT0t9PlxuICAgICAgICAgIDwhLS0gd2hlbiB1bmlxdWUgZ2V0cyByZXNzaWduZWQgaXQgd2lsbCBnZXQgcmUgcmVuZGVyZWQsIHdoaWNoIHNvbHZlcyB0aGUgJ2NhbWVyYSBub3Qgb3BlbmluZyBpc3N1ZScgLS0+XG4gICAgICAgICAgeyNrZXkgdW5pcXVlfVxuICAgICAgICAgICAgPHZpZGVvXG4gICAgICAgICAgICAgIGlkPVwiYnJ5LWNjLWNhbWVyYS12aWRlby10YWdcIlxuICAgICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIC16LTEwXCJcbiAgICAgICAgICAgICAgYmluZDp0aGlzPXt2aWRlb31cbiAgICAgICAgICAgICAgb246Y2FucGxheT17KCkgPT4ge1xuICAgICAgICAgICAgICAgICR2aWRlb1N0b3JlID0geyB2aWRlb0hlaWdodDogdmlkZW8udmlkZW9IZWlnaHQsIHZpZGVvV2lkdGg6IHZpZGVvLnZpZGVvV2lkdGggfTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb246cGxheXxvbmNlPXtwbGF5fVxuICAgICAgICAgICAgICBwbGF5c2lubGluZVxuICAgICAgICAgICAgICBtdXRlZFxuICAgICAgICAgICAgICBhdXRvcGxheVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB7L2tleX1cbiAgICAgICAgICA8Q29uZkJ0biBjbGFzc05hbWU9XCJib3R0b20tMFwiIC8+XG4gICAgICAgICAgPENhbWVyYUJ0biBjbGFzc05hbWU9XCJib3R0b20tMFwiIC8+XG5cbiAgICAgICAgICA8Y2FudmFzIGJpbmQ6dGhpcz17ZGlzcGxheUNhbnZhc30gaWQ9XCJicnktY2UtZGlzcGxheUNhbnZhc1wiIGNsYXNzPVwibWF4LXctZnVsbFwiIC8+XG4gICAgICAgICAgPCEtLSB7L2lmfSAtLT5cbiAgICAgICAgICA8Y2FudmFzXG4gICAgICAgICAgICBiaW5kOnRoaXM9e2RldGVjdGlvbnNDYW52YXN9XG4gICAgICAgICAgICBpZD1cImJyeS1jZS1kZXRlY3Rpb25zQ2FudmFzXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgdG9wLTAgbGVmdC0wIG1heC13LWZ1bGxcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGNhbnZhcyBiaW5kOnRoaXM9e21hc2tDYW52YXN9IGlkPVwiYnJ5LWNlLW1hc2tDYW52YXNcIiBjbGFzcz1cImFic29sdXRlIHRvcC0wIGxlZnQtMCBtYXgtdy1mdWxsXCIgLz5cbiAgICAgICAgICB7I2lmIGlzQ291bnRpbmdEb3dufVxuICAgICAgICAgIDxkaXYgdHJhbnNpdGlvbjpmYWRlPXt7IGRlbGF5OiAyNTAsIGR1cmF0aW9uOiAzMDAgfX0+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIGxlZnQtMS8yIC10cmFuc2xhdGUteC0xLzIgdG9wLVsxMCVdIGNlLWR1aS1iYWRnZSBjZS1kdWktYmFkZ2UtbGcgaC1bMmVtXSB0ZXh0LTR4bCA0eGw6dGV4dC1iYXNlIHctWzEyLjFlbV1cIlxuICAgICAgICAgICAgICA+eyRfKCdmYWNlQ29sbGVjdG9yLnN0YXlTdGlsbCcpfTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHsvaWZ9XG4gICAgICAgICAgeyNpZiAkZW5hYmxlRmFjZUFwaSAmJiAhaXNDb3VudGluZ0Rvd24gJiYgZmFjZU5vdFZhbGlkYXRlZH1cbiAgICAgICAgICAgICAgPGRpdiB0cmFuc2l0aW9uOmZhZGU9e3sgZGVsYXk6IDI1MCwgZHVyYXRpb246IDMwMCB9fT5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBsZWZ0LTEvMiAtdHJhbnNsYXRlLXgtMS8yIHRvcC1bMTAlXSBjZS1kdWktYmFkZ2UgY2UtZHVpLWJhZGdlLWxnIGgtWzJlbV0gdGV4dC00eGwgNHhsOnRleHQtYmFzZSB3LVsxMi4xZW1dXCJcbiAgICAgICAgICAgICAgICAgID57JF8oYCR7ZmFjZVZhbGlkYXRpb25BbGVydH1gKX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHsvaWZ9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHgtNCBzbTpweC0wIG10LVsxZW1dXCJcbiAgICAgICAgICBoaWRkZW49eyFzaG93Q2FwdHVyZUJ1dHRvbn1cbiAgICAgICAgPlxuICAgICAgICAgIHsjaWYgISRjYXB0dXJlZH1cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJicnktY2MtY2FwdHVyZS1idG5cIlxuICAgICAgICAgICAgICBkaXNhYmxlZD17KCEkZmFjZUZvdW5kICYmICRlbmFibGVGYWNlQXBpKSB8fCAoISRyZWFkeSAmJiAhJGVuYWJsZUZhY2VBcGkpfVxuICAgICAgICAgICAgICBoaWRkZW49eyFzaG93Q2FwdHVyZUJ1dHRvbn1cbiAgICAgICAgICAgICAgY2xhc3M9XCJjZS1kdWktYnRuIGNlLWR1aS1idG4tYmxvY2sgY2UtZHVpLWJ0bi1wcmltYXJ5IHRleHQteGxcIlxuICAgICAgICAgICAgICBvbjpjbGljaz17KCkgPT4gY2FwdHVyZSgpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7I2lmICRpc0xvYWRpbmd9XG4gICAgICAgICAgICAgICAgVGFrZSBwaWN0dXJlXG4gICAgICAgICAgICAgIHs6ZWxzZX1cbiAgICAgICAgICAgICAgeyRfKCdmYWNlQ29sbGVjdG9yLnRha2VQaWN0dXJlJyl9XG4gICAgICAgICAgICAgIHsvaWZ9XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB7OmVsc2V9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2UtZHVpLWJ0bi1ncm91cCBmbGV4XCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBvbjpjbGljaz17KCkgPT4gc2F2ZSgpfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXskanVzdGlmaWNhdGlvbi5sZW5ndGggPT09IDB9XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjZS1kdWktYnRuIGNlLWR1aS1idG4tcHJpbWFyeSBjZS1kdWktYnRuLWJsb2NrIGZsZXgtc2hyaW5rXCI+eyRfKCdmYWNlQ29sbGVjdG9yLmZpbmlzaCcpfTwvYnV0dG9uXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwiYnJ5LWNjLXJldGFrZS1idXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLWJsb2NrIGNlLWR1aS1idG4tb3V0bGluZSBmbGV4LXNocmlua1wiXG4gICAgICAgICAgICAgICAgb246Y2xpY2s9eygpID0+IHJldGFrZSgpfT57JF8oJ2ZhY2VDb2xsZWN0b3IucmV0YWtlUGhvdG8nKX08L2J1dHRvblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7L2lmfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIHsjaWYgc2hvd1VuY29uZm9ybWl0aWVzICYmICghaWRybmRDbG9zZWQgfHwgJGNhcHR1cmVkKX1cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJncmlkLWNvbHMtMSBncmlkLXJvd3MtMiBzbTpncmlkLWNvbHMtMiBzbTpncmlkLXJvd3MtMSBnYXAtWy41ZW1dIHshJHNob3dGYWNlV2hpbGVWYWxpZGF0aW5nXG4gICAgICAgICAgPyAnYWJzb2x1dGUgLXRyYW5zbGF0ZS15LTEvMiAtdHJhbnNsYXRlLXgtMS8yIHRvcC0xLzIgbGVmdC0xLzIgb3ZlcmZsb3ctdmlzaWJsZSdcbiAgICAgICAgICA6ICdncmlkIG0tWzFlbV0gb3ZlcmZsb3ctaGlkZGVuJ31cIlxuICAgICAgPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgY2xhc3M9XCJtLWF1dG8gY29sLXN0YXJ0LTEgY29sLWVuZC0xIG1heC1oLVsyMy4yZW1dXCJcbiAgICAgICAgICBzcmM9eyRkYXRhVHlwZVByZWZpeCArICcsJyArICRpbWFnZX1cbiAgICAgICAgICBoaWRkZW49eyEkY2FwdHVyZWQgfHwgKCEkc2hvd0ZhY2VXaGlsZVZhbGlkYXRpbmcpfVxuICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgIC8+XG4gICAgICAgIHsjaWYgISRjYXB0dXJlZH1cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgLz5cbiAgICAgICAgezplbHNlIGlmICRyZXF1ZXN0UmVzdWx0ICE9PSByZXF1ZXN0UmVzdWx0RW51bS5PS31cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgPGgxIGNsYXNzPVwidGV4dC0zeGwgZm9udC1ib2xkIHBiLVsxZW1dIHRyYW5zaXRpb24tb3BhY2l0eVwiPnskXygnZmFjZUNvbGxlY3Rvci5ldmVyeXRoaW5nT2snKX08L2gxPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlLWR1aS1idG4tZ3JvdXAgZmxleFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIG9uOmNsaWNrPXsoKSA9PiBzYXZlKCl9IGRpc2FibGVkIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLXByaW1hcnkgY2UtZHVpLWJ0bi1ibG9jayBmbGV4LXNocmlua1wiXG4gICAgICAgICAgICAgICAgPnskXygnZmFjZUNvbGxlY3Rvci5maW5pc2gnKX08L2J1dHRvblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImJyeS1jYy1yZXRha2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNlLWR1aS1idG4gY2UtZHVpLWJ0bi1ibG9jayBjZS1kdWktYnRuLW91dGxpbmUgZmxleC1zaHJpbmtcIlxuICAgICAgICAgICAgICAgIG9uOmNsaWNrPXsoKSA9PiByZXRha2UoKX0+eyRfKCdmYWNlQ29sbGVjdG9yLnJldGFrZVBob3RvJyl9PC9idXR0b25cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIHs6ZWxzZSBpZiAhJHNhdmVkfVxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aDEgY2xhc3M9XCJ0ZXh0LTN4bCBmb250LWJvbGQgcGItWzFlbV0gdHJhbnNpdGlvbi1vcGFjaXR5XCI+eyRfKCdmYWNlQ29sbGVjdG9yLnVuY29uZm9ybWl0aWVzJyl9PC9oMT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZS1kdWktZm9ybS1jb250cm9sIG10LVsyLjVlbV1cIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2UtZHVpLWxhYmVsXCIgZm9yPVwianVzdGlmaWNhdGlvblwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2UtZHVpLWxhYmVsLXRleHQgdGV4dC1iYXNlXCJcbiAgICAgICAgICAgICAgICAgID57JF8oJ2ZhY2VDb2xsZWN0b3IucHJvdmlkZUFSZWFzb25Gb3JUaGVMb3dRdWFsaXR5Q2FwdHVyZScpfTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgY29udGVudGVkaXRhYmxlXG4gICAgICAgICAgICAgICAgYmluZDp2YWx1ZT17JGp1c3RpZmljYXRpb259XG4gICAgICAgICAgICAgICAgaWQ9XCJqdXN0aWZpY2F0aW9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNlLWR1aS10ZXh0YXJlYSBjZS1kdWktdGV4dGFyZWEtYm9yZGVyZWQgaC1bNmVtXSB0ZXh0LWJhc2VcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXskXygnZmFjZUNvbGxlY3Rvci55b3VySnVzdGlmaWNhdGlvbicpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjZS1kdWktbGFiZWxcIiBmb3I9XCJqdXN0aWZpY2F0aW9uXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjZS1kdWktbGFiZWwtdGV4dC1hbHQgdGV4dC1iYXNlXCI+KHskXygnZmFjZUNvbGxlY3Rvci50aGlzSW5mb3JtYXRpb25Jc1JlcXVpcmVkJyl9KTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgeyNpZiAkY2FwdHVyZWR9XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZS1kdWktYnRuLWdyb3VwIGZsZXhcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBvbjpjbGljaz17KCkgPT4gc2F2ZSgpfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyRqdXN0aWZpY2F0aW9uLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLXByaW1hcnkgY2UtZHVpLWJ0bi1ibG9jayBmbGV4LXNocmluayB0ZXh0LWJhc2VcIlxuICAgICAgICAgICAgICAgICAgPnskXygnZmFjZUNvbGxlY3Rvci5maW5pc2gnKX08L2J1dHRvblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBpZD1cImJyeS1jYy1yZXRha2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLWJsb2NrIGNlLWR1aS1idG4tb3V0bGluZSBmbGV4LXNocmluayB0ZXh0LWJhc2VcIlxuICAgICAgICAgICAgICAgICAgb246Y2xpY2s9eygpID0+IHJldGFrZSgpfT57JF8oJ2ZhY2VDb2xsZWN0b3IucmV0YWtlUGhvdG8nKX08L2J1dHRvblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7L2lmfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB7OmVsc2V9XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQtM3hsIGZvbnQtYm9sZCBwYi1bMWVtXSB0cmFuc2l0aW9uLW9wYWNpdHlcIj57JF8oJ2RvY0NvbGxlY3Rvci5jYXB0dXJlZCcpfTwvaDE+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M6Y2UtZHVpLWJ0bi1ncm91cD17ISRleHBvcnRCdXR0b25EaXNhYmxlZH0gY2xhc3M9XCJmbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImJyeS1jYy1yZXRha2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNlLWR1aS1idG4gY2UtZHVpLWJ0bi1ibG9jayBmbGV4LXNocmluayB0ZXh0LWJhc2VcIlxuICAgICAgICAgICAgICAgIG9uOmNsaWNrPXsoKSA9PiByZXRha2UoKX0+eyRfKCdmYWNlQ29sbGVjdG9yLnJldGFrZVBob3RvJyl9PC9idXR0b25cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7I2lmIGdldChlbmFibGVTdHJhdGVneSkuZmFjZVN0cmF0ZWd5ICE9PSBGYWNlRXhwb3J0U3RyYXRlZ3kuRElTQUJMRUR9XG4gICAgICAgICAgICAgICAgPEV4cG9ydEJ0biBjc3NDbGFzcz1cImNlLWR1aS1idG4tYmxvY2sgZmxleC1zaHJpbmtcIiAvPlxuICAgICAgICAgICAgICB7L2lmfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIHsvaWZ9XG4gICAgICAgIDwhLS0gPGgxIGhpZGRlbj17ISRjYXB0dXJlZH0gY2xhc3M9XCJ0ZXh0LTN4bCBmb250LWJvbGQgcGItNCB0cmFuc2l0aW9uLWFsbFwiPkV4Y2VsZW50ZSE8L2gxPiAtLT5cbiAgICAgIDwvZGl2PlxuICAgIHs6ZWxzZSBpZiAkY2FtZXJhU3RhdHVzU3RvcmUgIT09IENhbWVyYVN0YXR1c0VudW0uT0t9XG4gICAgICA8Q2FtZXJhU3RhdHVzXG4gICAgICAgIGhhbmRsZXI9eygpID0+IHtcbiAgICAgICAgICBjYXB0dXJpbmcgPSB0cnVlO1xuICAgICAgICB9fVxuICAgICAgLz5cbiAgICB7L2lmfVxuICB7L2lmfVxuPC9kaXY+XG4iXSwibmFtZXMiOlsiY3R4IiwiY3JlYXRlX2lmX2Jsb2NrXzEyIiwiY3JlYXRlX2lmX2Jsb2NrXzExIiwiY3JlYXRlX2lmX2Jsb2NrXzkiLCJDYW1lcmFTdGF0dXNFbnVtIiwiaW5zZXJ0X2RldiIsInRhcmdldCIsImRpdjMiLCJhbmNob3IiLCJhcHBlbmRfZGV2IiwiZGl2MiIsImRpdjAiLCJjYW52YXMwIiwiY2FudmFzMSIsImNhbnZhczIiLCJkaXYxIiwiY3JlYXRlX2lmX2Jsb2NrXzEiLCJsb2FkaW5nR2lmIiwiYXR0cl9kZXYiLCJpbWciLCJpbWdfc3JjX3ZhbHVlIiwic2xvdCIsImRpdiIsInZpZGVvXzEiLCJ0X3ZhbHVlIiwic3BhbiIsImN1cnJlbnQiLCJkaXJ0eSIsInNldF9kYXRhX2RldiIsInQiLCJkaXZfdHJhbnNpdGlvbiIsImNyZWF0ZV9iaWRpcmVjdGlvbmFsX3RyYW5zaXRpb24iLCJmYWRlIiwidDBfdmFsdWUiLCJ0Ml92YWx1ZSIsImJ1dHRvbjAiLCJidXR0b24xIiwidDAiLCJ0MiIsImNyZWF0ZV9pZl9ibG9ja18xMCIsImJ1dHRvbiIsImJ1dHRvbl9kaXNhYmxlZF92YWx1ZSIsInJlcXVlc3RSZXN1bHRFbnVtIiwiaW1nX2hpZGRlbl92YWx1ZSIsInNob3dfaWYiLCJnZXQiLCJlbmFibGVTdHJhdGVneSIsIkZhY2VFeHBvcnRTdHJhdGVneSIsImgxIiwidDZfdmFsdWUiLCJjcmVhdGVfaWZfYmxvY2tfNiIsInRleHRhcmVhIiwidGV4dGFyZWFfcGxhY2Vob2xkZXJfdmFsdWUiLCJsYWJlbDAiLCJzcGFuMCIsImxhYmVsMSIsInNwYW4xIiwidDYiLCJ0NF92YWx1ZSIsInQ0IiwiZHJhd1ZpZGVvT25DYW52YXMiLCJ2aWRlbyIsImRpc3BsYXlDYW52YXMiLCJpc1NhbWVQcm9wb3J0aW9uIiwiZGV0ZWN0aW9uc0NhbnZhcyIsImVuY2xvc2luZ0RpdiIsImlzQ291bnRpbmdEb3duIiwidW5pcXVlIiwibG9hZGVkRmFjZUFwaUFuZFdlaWdodHMiLCJlbmFibGVNaW51dGlhZSIsIiQkcHJvcHMiLCJ2aWRlb0RpbWVuc2lvbnMiLCJub1RhYnMiLCJ3ZWlnaHRzUGF0aCIsInNob3dDYXB0dXJlQnV0dG9uIiwic2hvd1VuY29uZm9ybWl0aWVzIiwidmlkZW9GaWx0ZXIiLCJzdGFydEZhY2VBcGkiLCJ3cml0YWJsZSIsImRhdGFUeXBlUHJlZml4IiwibWFza0NhbnZhcyIsImNhcHR1cmluZyIsImluaXRpYWxpemVkIiwiaWRybmRMb2FkaW5nIiwiaWRybmRDbG9zZWQiLCJpbnRlcnZhbElkIiwiZmFjZWFwaUNvdW50ZXIiLCJmYWNlYXBpRnJhbWVSYXRlIiwicmlnaHRPcmllbnRhdGlvbiIsImNvdW50ZG93bkZpbmlzaFRpbWUiLCJkaXNhYmxlQ291bnREb3duIiwiZmFjZU5vdFZhbGlkYXRlZCIsImZhY2VWYWxpZGF0aW9uQWxlcnQiLCJkb2NMaW1pdHMiLCJ0b2FzdCIsIlN3YWwiLCJvbk1vdW50Iiwic2V0X3N0b3JlX3ZhbHVlIiwiaXNMb2FkaW5nQVBQIiwiJGlzTG9hZGluZ0FQUCIsImxvZyIsInJlYWR5IiwiJHJlYWR5IiwiZmFjZUZvdW5kIiwiJGZhY2VGb3VuZCIsImNhcHR1cmVkIiwiJGNhcHR1cmVkIiwiJGZhY2luZ01vZGUiLCJGYWNpbmdNb2RlRW51bSIsIm9wZW5DYW1lcmEiLCIkZW5hYmxlRmFjZUFwaSIsImxvYWRGYWNlQXBpQW5kV2VpZ2h0cyIsInNldERvY0xpbWl0cyIsInZpZGVvV2lkdGgiLCIkdmlkZW9TdG9yZSIsInZpZGVvSGVpZ2h0IiwiZG9jSGVpZ2h0IiwiZG9jV2lkdGgiLCJkcmF3UmVjdGFuZ2xlIiwicHJpbWFyeVRoZW1lIiwic3VjY2Vzc1RoZW1lIiwidGltZVJlbWFpbmluZyIsInN1bVdpZHRoIiwic3VtSGVpZ2h0IiwiY291bnRkb3duV2lkdGgiLCJjb3VudGRvd25IZWlnaHQiLCJjbGlwUGF0aCIsInJlc2V0Q2FtZXJhIiwiJGNhbWVyYVN0YXR1c1N0b3JlIiwiJCRpbnZhbGlkYXRlIiwicGxheSIsImxvb3BDYWxsZXIiLCIkc2VsZWN0ZWRUYWIiLCJUYWJFbnVtIiwiJHN0YXJ0RmFjZUFwaSIsImNhcHR1cmUiLCJ1bkxvY2tTY3JlZW4iLCIkcmVxdWVzdFJlc3VsdCIsInNhdmVkIiwiJHNhdmVkIiwiY2FudmFzIiwiJGRhdGFUeXBlUHJlZml4IiwiJGltYWdlIiwiJG9yaWdpbmFsQ2FwdHVyZSIsImJvZHlQYXJ0cyIsInNhdmUiLCJmYWNlIiwiJGp1c3RpZmljYXRpb24iLCJyZXRha2UiLCJvcmlnaW5hbENhcHR1cmUiLCJkZXZpY2UiLCJ3aWR0aCIsImhlaWdodCIsInYiLCJ2aWRlb1N0b3JlIiwiZW51bWVyYXRlRGV2aWNlcyIsImRldmljZUlkIiwid2lkdGhDYW1lcmEiLCJoZWlnaHRDYW1lcmEiLCJhc3BlY3RSYXRpb0NhbWVyYSIsImdldFZpZGVvRGltZW5zaW9ucyIsImlzTW9iaWxlIiwiJHNlbGVjdGVkVmlkZW9EZXZpY2VJZCIsIiRjYW1lcmFEZXZpY2VzU3RvcmUiLCJlIiwiZXJyb3IiLCJjb25zdHJhaW50RXJyb3IiLCJpc09iamVjdCIsInVuc3Vic2NyaWJlVmlkZW9EaW1lbnNpb25zIiwic3RvcmVPYmoiLCJ1bnN1YnNjcmliZUZhY2VWYWxpZGF0aW9ucyIsImZhY2VWYWxpZGF0aW9uc1N0b3JlIiwibmV3VmFsdWUiLCJuZXdGYWNlVmFsaWRhdGlvbkFsZXJ0IiwiJGF1dG9tYXRpY0NhcHR1cmUiLCJjb3VudGRvd25JbnRlcnZhbENhbGxiYWNrIiwibm93IiwidW5zdWJzY3JpYmVDYXB0dXJlZFN0YXRlIiwidW5zdWJzY3JpYmVDbGVhclZpZGVvU3JjIiwiY2xlYXJlZFZpZGVvU3JjT2JqZWN0Iiwic2VsZWN0ZWRUYWIiLCJ0YWIiLCJ1bnN1YnNjcmliZVNlbGVjdGVkU3RyZWFtIiwic2VsZWN0ZWRWaWRlb0RldmljZUlkIiwibmV3RGV2aWNlSWQiLCJzdHJlYW0iLCJzZXR1cFN0cmVhbSIsIl9zdHJlYW0iLCIkX3N0cmVhbSIsIiRjbGVhcmVkVmlkZW9TcmNPYmplY3QiLCJzaHV0T2ZmQ2FtZXJhIiwidW5zdWJzY3JpYmVDaGFuZ2VUYWIiLCJ1bnN1YnNjcmliZUZhY2VBcGkiLCJmYWNlYXBpTG9vcCIsInVuc3Vic2NyaWJlUmVhZHlDYW1lcmFFdmVudEVtaXR0ZXIiLCJudiIsInVuc3Vic2NyaWJlU3dhcENhbWVyYSIsInN3YXBDYW1lcmEiLCJuZXdEZXZpY2UiLCJ1bnN1YnNjcmliZU9yaWVudGF0aW9uIiwib3JpZW50YXRpb25EYXRhIiwiZGF0YSIsImRldGVjdGlvbnNSZXN1bHQiLCJvcHRpb25zIiwiZ2V0RmFjZURldGVjdG9yT3B0aW9ucyIsImZhY2VhcGkiLCJkZXRlY3Rpb25zUmVzdWx0MiIsImRyYXdEZXRlY3Rpb25zSW5GYWNlIiwicmV0YWtlUGhvdG8iLCIkcmV0YWtlUGhvdG8iLCJvbkRlc3Ryb3kiLCIkJHZhbHVlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7SUEybEJnQkEsRUFBTSxDQUFBO0FBQUE7Ozs7Ozs7Ozs7SUF5QlBBLEVBQWMsQ0FBQSxLQUFBQyxHQUFBRCxDQUFBO0FBQUE7O0lBUWRBLEVBQWMsRUFBQSxLQUFBO0FBQUEsSUFBS0EsRUFBYyxDQUFBO0FBQUEsSUFBSUEsRUFBZ0IsRUFBQSxLQUFBRSxHQUFBRixDQUFBO0FBQUE7Ozs7TUFZcERBLEVBQVMsRUFBQSxTQUFBRztBQUFBO0FBQUE7Ozs7OztNQStCaEJILEVBQWtCLENBQUEsTUFBQTtBQUFBLE1BQU1BLEVBQVcsRUFBQTtBQUFBLE1BQUlBLEVBQVMsRUFBQSxLQUFBO0FBQUE7QUFBQSxRQWtGM0NBLEVBQWtCLEVBQUEsTUFBS0ksR0FBaUIsS0FBRTs7Ozs7Ozs7TUFoS2xCSixFQUFrQixFQUFBLE1BQUtJLEdBQWlCO01BNkMzREosRUFBaUIsQ0FBQTs7O0FBL0NoQyxNQUFBSyxFQStFS0MsR0FBQUMsR0FBQUMsQ0FBQSxHQTlFSEMsRUE2RUtGLEdBQUFHLENBQUEsR0E1RUhELEVBMkNLQyxHQUFBQyxDQUFBLDRFQXhCSEYsRUFBZ0ZFLEdBQUFDLENBQUEsc0JBRWhGSCxFQUlDRSxHQUFBRSxDQUFBLHNCQUNESixFQUFnR0UsR0FBQUcsQ0FBQSw4RUFrQmxHTCxFQStCS0MsR0FBQUssQ0FBQTs7Ozs7TUF6RUdmLEVBQU0s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QUVBLENBQUEsR0FDM0JyRCxnQkFHRm1CLElBQXFCNUgsR0FBaUIsOEJBQTRCNEgsQ0FBQSxHQUNsRThEOztpQkFJV0csS0FBVztRQUNwQlM7QUFDQSxRQUFBcEgsTUFBa0JDLElBQWdCO0FBQ3BDLE1BQUFELEtBQWlCO0FBQ1gsWUFBQXFILFVBQWdCQyxNQUVoQkMsaUJBQXVCLG1DQUFzQjtVQUMvQ0M7QUFDSixNQUFBQSxJQUFvQkQsRUFBUSxpQkFBaUIvSSxHQUFlNkksQ0FBTyxHQUNuRUQsSUFBZ0IsTUFBU0ksRUFBa0IscUJBRTNDOUksRUFBaUIsV0FBVyxJQUFJLEdBQUcsVUFBVSxHQUFHLEdBQUdBLEVBQWlCLE9BQU9BLEVBQWlCLE1BQU07QUFBQTtBQUVsRyxNQUFBc0I7SUFHRW9ILEtBQ0ZLLEdBQXFCTCxHQUFrQjFJLEdBQWtCSyxHQUFnQixFQUFJLEdBRTNFaUUsS0FDRkgsR0FBV3RFLEdBQU9vSSxFQUFXO0FBQUE7QUFJakMsRUFBQWUsR0FBWSxVQUFTLE9BQVFiLE1BQUU7SUFDekJBLE1BQ0YvQyxNQUNBbkQsRUFBQStHLElBQUFDLElBQWUsSUFBS0EsQ0FBQTtBQUFBLE1BSXhCQyxHQUFTLE1BQUE7QUFDUCxJQUFBcEIsTUFDQWIsTUFDQVAsTUFDQUYsTUFDQVUsTUFDQUksTUFDQVMsTUFDQSxjQUFjMUcsRUFBVSxHQUN4QjJHLE1BQ0FJLE1BQ0FGLE1BQ0FLLE1BQ0EvRCxNQUNBbkQsS0FBYTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztBQXdCUSxNQUFBeEIsSUFBS3NKOzs7Ozs7TUFFZGpHLElBQVc7QUFBQSxRQUFLLGFBQWFyRCxFQUFNO0FBQUEsUUFBYSxZQUFZQSxFQUFNO0FBQUE7Ozs7OztBQVdyRCxNQUFBQyxJQUFhcUo7Ozs7O0FBR25CLE1BQUFuSixJQUFnQm1KOzs7OztBQUlWLE1BQUFuSSxLQUFVbUk7OzttQkEyQlQ1RSxpQkFXRVUsaUJBT0FHOzs7QUF6RVosTUFBQW5GLElBQVlrSjs7O21CQWtHTWxFLGlCQU1ORzs7QUFlSixJQUFBRCxJQUFjLEtBQUE7O21CQVlSRixpQkFRQUcsaUJBYUZBO0FBYXRCLElBQUFuQixFQUFBLElBQUFoRCxLQUFZLEVBQUk7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==
|