@agilemotion/oui-react-js 2.0.17 → 2.0.19

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.
@@ -25,6 +25,11 @@ var _Media = _interopRequireDefault(require("../../js/Media"));
25
25
  var _Observable = _interopRequireDefault(require("../../event/Observable"));
26
26
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
27
27
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
28
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
29
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
30
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
31
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
32
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
28
33
  const Status = {
29
34
  LOBBY: 'LOBBY',
30
35
  SESSION: 'SESSION',
@@ -36,6 +41,9 @@ const Status = {
36
41
  const location = window.location.protocol + '//' + window.location.hostname;
37
42
  const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.forwardRef((props, ref) => {
38
43
  const recordRef = (0, _react.useRef)();
44
+ // True once we've successfully joined — lets SOCKET_CONNECT distinguish a reconnect from the
45
+ // initial connect so we only resync the roster on an actual reconnect.
46
+ const joinedRef = (0, _react.useRef)(false);
39
47
  const [hasUnreadChats, setHasUnreadChats] = (0, _react.useState)(null);
40
48
  const [participants, setParticipants] = (0, _react.useState)([]);
41
49
  const [handRaised, setHandRaised] = (0, _react.useState)(false);
@@ -59,6 +67,8 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
59
67
  const [activityMessage, setActivityMessage] = (0, _react.useState)(null);
60
68
  // Persistent, actionable error banner (e.g. media reconnection gave up).
61
69
  const [reconnectError, setReconnectError] = (0, _react.useState)(null);
70
+ // Transient "socket dropped, reconnecting" banner (cleared on reconnect).
71
+ const [reconnecting, setReconnecting] = (0, _react.useState)(false);
62
72
  const [onloadScreenShareData, setOnloadScreenShareData] = (0, _react.useState)(null);
63
73
  const [chatMessage, setChatMessage] = (0, _react.useState)(null);
64
74
  const [chatSender, setChatSender] = (0, _react.useState)(null);
@@ -103,6 +113,27 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
103
113
  case _VCEventType.VCEventType.USER_LEFT_MEETING:
104
114
  removeUser(be.payload);
105
115
  break;
116
+ case _VCEventType.VCEventType.SOCKET_DISCONNECT:
117
+ // Socket dropped — tell the user. The roster is reconciled on reconnect.
118
+ if (joinedRef.current) {
119
+ setReconnecting(true);
120
+ }
121
+ break;
122
+ case _VCEventType.VCEventType.SOCKET_CONNECT:
123
+ // Only act on a RE-connect (initial connect is handled by the join effect).
124
+ if (joinedRef.current) {
125
+ setReconnecting(false);
126
+ resyncRoster();
127
+ }
128
+ break;
129
+ case _VCEventType.VCEventType.PEER_DISCONNECT:
130
+ // A peer-level disconnect signal — reconcile the roster from the server truth
131
+ // rather than trusting we got every USER_LEFT delta.
132
+ resyncRoster();
133
+ break;
134
+ case _VCEventType.VCEventType.CREATE_TRANSPORT_FAILED:
135
+ setReconnectError('A connection problem occurred. Please rejoin the meeting.');
136
+ break;
106
137
  case _VCEventType.VCEventType.AUDIO_VISUAL_SETTINGS_CHANGED:
107
138
  onAVSettingsChange(be === null || be === void 0 ? void 0 : be.payload);
108
139
  break;
@@ -176,11 +207,12 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
176
207
  };
177
208
  const onAVSettingsChange = payload => {
178
209
  if (payload) {
179
- let participant = participants.find(p => p.userId === payload.userId);
180
- if (participant) {
181
- participant.audioMuted = payload.audioMuted;
182
- participant.videoMuted = payload.videoMuted;
183
- }
210
+ // Immutable update: produce a NEW participant object so the tile re-renders with the
211
+ // fresh mute state (in-place mutation could be missed on a grid reshuffle/remount).
212
+ setParticipants(prev => prev.map(p => p.userId === payload.userId ? _objectSpread(_objectSpread({}, p), {}, {
213
+ audioMuted: payload.audioMuted,
214
+ videoMuted: payload.videoMuted
215
+ }) : p));
184
216
  _VCEventManager.default.fireEvent(_VCEventType.VCEventType.AUDIO_VISUAL_SETTINGS_CHANGED, payload);
185
217
  }
186
218
  };
@@ -236,18 +268,50 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
236
268
  };
237
269
  const removeUser = payload => {
238
270
  if (props.calendarEvent.id === payload.meetingId) {
239
- const userId = payload.userId;
240
- const find = participants.find(p => p.userId === userId);
241
- if (find) {
242
- const newParticipants = participants.filter(p => p.userId !== userId);
243
- setParticipants(newParticipants);
244
- if (newParticipants.length === 0) {
245
- setAllUserParticipantsLeft(true);
246
- setRoomStatus(Status.LOBBY);
247
- }
248
- }
271
+ // Immutable functional update so concurrent deltas can't clobber each other (lost-update
272
+ // race). The "everyone left → LOBBY" transition is handled by the participants effect below.
273
+ setParticipants(prev => prev.filter(p => p.userId !== payload.userId));
249
274
  }
250
275
  };
276
+
277
+ // Reconcile the participant list WHOLESALE from the server's authoritative roster. This is the
278
+ // reconciliation path that was entirely missing: incremental USER_JOINED/USER_LEFT deltas alone
279
+ // permanently desync a client that drops one. Driven by the Phase-C ALL_USERS server handler.
280
+ const reconcileParticipants = users => {
281
+ const list = (users || []).map(u => ({
282
+ userId: u.userId,
283
+ name: u.name,
284
+ avatar: u.avatar,
285
+ audioMuted: u.audioMuted,
286
+ videoMuted: u.videoMuted,
287
+ producers: u.producers
288
+ }));
289
+ setParticipants(list);
290
+ };
291
+ const resyncRoster = () => {
292
+ _SocketManager.default.emitEvent(_VCEventType.VCEventType.ALL_USERS, {
293
+ meetingId: props.calendarEvent.id,
294
+ userId: _ApplicationManager.default.getUserDetails().username
295
+ }).then(response => {
296
+ if (response && response.data) {
297
+ console.log('ROSTER RESYNC :', response.data.usersInRoom);
298
+ reconcileParticipants(response.data.usersInRoom);
299
+ }
300
+ }).catch(e => {
301
+ console.log('Roster resync failed', e);
302
+ });
303
+ };
304
+
305
+ // Single owner of the "all participants left" / room-status transition, derived from the list
306
+ // (works no matter which path mutated participants: delta, reconcile, or initial join).
307
+ (0, _react.useEffect)(() => {
308
+ if (roomStatus === Status.SESSION && participants.length === 0) {
309
+ setAllUserParticipantsLeft(true);
310
+ setRoomStatus(Status.LOBBY);
311
+ } else if (participants.length > 0 && allUserParticipantsLeft) {
312
+ setAllUserParticipantsLeft(false);
313
+ }
314
+ }, [participants]);
251
315
  const handleSidebarToggle = e => {
252
316
  let paper = document.getElementById('meetingDialogPaper');
253
317
  if (e.detail.open) {
@@ -330,10 +394,12 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
330
394
  try {
331
395
  _Media.default.joinMeeting(props.calendarEvent, props.settings, userFullName).then(response => {
332
396
  console.log('JOIN RESPONSE : ', response);
397
+ joinedRef.current = true;
333
398
  createParticipants(response.participants);
334
399
  setRtpCapabilities(response.rtpCapabilities);
335
400
  setOnloadScreenShareData(response.shareScreenProducerData);
336
- setRoomStatus(participants.length > 0 ? Status.SESSION : Status.LOBBY);
401
+ // Derive from the ACK's roster, not the still-empty `participants` state.
402
+ setRoomStatus(response.participants && response.participants.length > 0 ? Status.SESSION : Status.LOBBY);
337
403
  }).catch(e => {
338
404
  setRoomStatus(Status.SYSTEM_ERROR);
339
405
  });
@@ -346,41 +412,35 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
346
412
  };
347
413
  }, []);
348
414
  function addUserToParticipants(user) {
349
- // Typically, a user shoud not exist. We are ensuring that there are never duplicates
350
- console.log(participants);
351
- let participant = participants.find(u => u.userId === user.userId);
352
- if (participant) {
353
- participant.name = user.name;
354
- participant.avatar = user.avatar;
355
- participant.audioMuted = user.audioMuted;
356
- participant.videoMuted = user.videoMuted;
357
- participant.producers = user.producers;
358
- } else {
359
- participant = {
415
+ // Immutable, dedup-by-userId functional update. Never mutate in place + concat (that races
416
+ // with concurrent deltas and loses updates). Update-in-place-by-key if present, else append.
417
+ setParticipants(prev => {
418
+ if (prev.find(u => u.userId === user.userId)) {
419
+ return prev.map(p => p.userId === user.userId ? _objectSpread(_objectSpread({}, p), {}, {
420
+ name: user.name,
421
+ avatar: user.avatar,
422
+ audioMuted: user.audioMuted,
423
+ videoMuted: user.videoMuted,
424
+ producers: user.producers
425
+ }) : p);
426
+ }
427
+ return [...prev, {
360
428
  userId: user.userId,
361
429
  name: user.name,
362
430
  avatar: user.avatar,
363
431
  audioMuted: user.audioMuted,
364
432
  videoMuted: user.videoMuted,
365
433
  producers: user.producers
366
- };
367
- participants.push(participant);
368
- setParticipants([].concat(participants));
369
- }
434
+ }];
435
+ });
370
436
  }
371
437
  const changeOtherParticipantAVSettings = (userId, audioMuted, videoMuted) => {};
372
438
  const createParticipants = users => {
373
439
  console.log('ALL USERS received and creating participants : ', users);
374
- users.forEach(user => {
375
- console.log('ADDING ITEM TO PARTICIPANTS : ', user);
376
- addUserToParticipants(user);
377
- });
378
- setAllUserParticipantsLeft(false);
379
- if (participants.length > 0) {
380
- if (roomStatus === Status.LOBBY) {
381
- setRoomStatus(Status.SESSION);
382
- setSideBarOpen(true);
383
- }
440
+ // Initial roster from the JOIN ack — set it wholesale (same shape as reconcile).
441
+ reconcileParticipants(users);
442
+ if (users && users.length > 0) {
443
+ setSideBarOpen(true);
384
444
  }
385
445
  };
386
446
  const hangUp = () => {
@@ -636,6 +696,14 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
636
696
  bottom: '48px'
637
697
  }
638
698
  }, /*#__PURE__*/_react.default.createElement(_Alert.default, {
699
+ variant: 'warning',
700
+ show: reconnecting,
701
+ fade: true
702
+ }, /*#__PURE__*/_react.default.createElement("p", {
703
+ style: {
704
+ margin: 0
705
+ }
706
+ }, "Reconnecting\u2026")), /*#__PURE__*/_react.default.createElement(_Alert.default, {
639
707
  variant: 'danger',
640
708
  show: reconnectError !== null,
641
709
  dismissible: true,
@@ -703,4 +771,4 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
703
771
  }))));
704
772
  }));
705
773
  var _default = exports.default = TrainingRoom;
706
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX0ljb24iLCJfQXBwbGljYXRpb25NYW5hZ2VyIiwiX1Rvb2xiYXIiLCJfVkNSb29tIiwiX1ZDUm9vbVdvcmtzcGFjZSIsIl9WQ0V2ZW50VHlwZSIsIl9BbGVydCIsIl9WQ0V2ZW50TWFuYWdlciIsIl9Tb2NrZXRNYW5hZ2VyIiwiX0Nsb3NhYmxlUGFuZWwiLCJfU2lkZUJhckNvbnRlbnQiLCJfdXNlQ29udGFpbmVyV2lkdGgiLCJfVkNSb29tUmVjb3JkZXIiLCJfUmVzdFV0aWxzIiwiX01lZGlhIiwiX09ic2VydmFibGUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJTdGF0dXMiLCJMT0JCWSIsIlNFU1NJT04iLCJTRVNTSU9OX0VOREVEIiwiU1lTVEVNX0VSUk9SIiwiQ09OTkVDVElPTl9FUlJPUiIsIlNUUkVBTV9FUlJPUiIsImxvY2F0aW9uIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsIlRyYWluaW5nUm9vbSIsIlJlYWN0IiwibWVtbyIsImZvcndhcmRSZWYiLCJwcm9wcyIsInJlZiIsInJlY29yZFJlZiIsInVzZVJlZiIsImhhc1VucmVhZENoYXRzIiwic2V0SGFzVW5yZWFkQ2hhdHMiLCJ1c2VTdGF0ZSIsInBhcnRpY2lwYW50cyIsInNldFBhcnRpY2lwYW50cyIsImhhbmRSYWlzZWQiLCJzZXRIYW5kUmFpc2VkIiwiaXNSZWNvcmRpbmciLCJzZXRJc1JlY29yZGluZyIsInZpZGVvRGlzYWJsZWQiLCJhdWRpb0Rpc2FibGVkIiwic2V0QXVkaW9EaXNhYmxlZCIsInZpZGVvTXV0ZWQiLCJzZXRWaWRlb011dGVkIiwiYXVkaW9NdXRlZCIsInNldEF1ZGlvTXV0ZWQiLCJkaXNwbGF5U3RhdGUiLCJzZXREaXNwbGF5U3RhdGUiLCJyb29tU3RhdHVzIiwic2V0Um9vbVN0YXR1cyIsInNvbWVvbmVTaGFyaW5nIiwic2V0U29tZW9uZVNoYXJpbmciLCJzaWRlQmFyT3BlbiIsInNldFNpZGVCYXJPcGVuIiwic2lkZUJhclRhYiIsInNldFNpZGVCYXJUYWIiLCJhbGxVc2VyUGFydGljaXBhbnRzTGVmdCIsInNldEFsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0IiwibG9iYnlXYWl0aW5nTGlzdCIsInNldExvYmJ5V2FpdGluZ0xpc3QiLCJpc0hvc3QiLCJzZXRJc0hvc3QiLCJpc0NoYWlyUGVyc29uIiwic2V0SXNDaGFpclBlcnNvbiIsIm1lZXRpbmdQYXJ0aWNpcGFudEdyaWRNb2RlIiwic2V0TWVldGluZ1BhcnRpY2lwYW50R3JpZE1vZGUiLCJhdXRvUGVybWl0Iiwic2V0QXV0b1Blcm1pdCIsImNhbGVuZGFyRXZlbnQiLCJhc2tUb0pvaW4iLCJydHBDYXBhYmlsaXRpZXMiLCJzZXRSdHBDYXBhYmlsaXRpZXMiLCJhY3Rpdml0eU1lc3NhZ2UiLCJzZXRBY3Rpdml0eU1lc3NhZ2UiLCJyZWNvbm5lY3RFcnJvciIsInNldFJlY29ubmVjdEVycm9yIiwib25sb2FkU2NyZWVuU2hhcmVEYXRhIiwic2V0T25sb2FkU2NyZWVuU2hhcmVEYXRhIiwiY2hhdE1lc3NhZ2UiLCJzZXRDaGF0TWVzc2FnZSIsImNoYXRTZW5kZXIiLCJzZXRDaGF0U2VuZGVyIiwiY3VycmVudFVzZXJGdWxsTmFtZSIsInNldEN1cnJlbnRVc2VyRnVsbE5hbWUiLCJldmVudEhhbmRsZXIiLCJtZWV0aW5nQ2hhdCIsInNldE1lZXRpbmdDaGF0Iiwic2NyZWVuU2hhcmVkIiwic2V0U2NyZWVuU2hhcmVkIiwic3RhcnRTY3JlZW5TaGFyaW5nIiwic2V0U3RhcnRTY3JlZW5TaGFyaW5nIiwicmFpc2VkSGFuZHMiLCJzZXRSYWlzZWRIYW5kcyIsIm1pbnV0ZXNTaG93biIsInNldE1pbnV0ZXNTaG93biIsInN0YXJ0U2hvd2luZ01pbnV0ZXMiLCJzZXRTdGFydFNob3dpbmdNaW51dGVzIiwidmNSb29tV29ya3NwYWNlUmVmIiwicm9vdFJlZiIsInJvb3RXaWR0aCIsInVzZUNvbnRhaW5lcldpZHRoIiwibmFycm93TGF5b3V0IiwiYXBpIiwibG9hZENoYXRzIiwiY29uc29sZSIsImxvZyIsImZldGNoQ2hhdHMiLCJoYW5kbGVyIiwiaWQiLCJvbiIsImV2ZW50VHlwZSIsImJlIiwiVkNFdmVudFR5cGUiLCJSRVFVRVNUX1RPX0pPSU5fTUVFVElORyIsIlVTRVJfSk9JTkVEIiwiYWRkVXNlciIsInBheWxvYWQiLCJVU0VSX0xFRlRfTUVFVElORyIsInJlbW92ZVVzZXIiLCJBVURJT19WSVNVQUxfU0VUVElOR1NfQ0hBTkdFRCIsIm9uQVZTZXR0aW5nc0NoYW5nZSIsIlNZU1RFTV9FVkVOVCIsIlJBSVNFX0hBTkQiLCJvblJhaXNlSGFuZCIsIkxPV0VSX0hBTkQiLCJvbkxvd2VySGFuZCIsIkVORF9TRVNTSU9OIiwiaGFuZ1VwIiwiU0hBUklOR19TVE9QUEVEIiwiQ0hBVF9NRVNTQUdFIiwib25NZXNzYWdlIiwiQ09OU1VNRVJfVFJBTlNQT1JUX0ZBSUxFRCIsIlNZU1RFTV9BTEVSVCIsIm1lc3NhZ2UiLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJnZXRVc2VyRGV0YWlscyIsInVzZXJuYW1lIiwicGFydGljaXBhbnQiLCJoYW5kbGVNZXNzYWdlQXJyaXZlZCIsIm5hbWUiLCJjb250ZW50IiwidHJpbSIsImxlbmd0aCIsInB1c2giLCJ1c2VySWQiLCJjb25jYXQiLCJpbmRleCIsImZpbmRJbmRleCIsInAiLCJzcGxpY2UiLCJ1c2VFZmZlY3QiLCJzZW5kUmVxdWVzdCIsImdldENvbnRleHRSb290IiwicmVzcG9uc2UiLCJmaW5kIiwidmNFdmVudE1hbmFnZXIiLCJmaXJlRXZlbnQiLCJlbWl0QVZTZXR0aW5nc0NoYW5nZSIsInNvY2tldE1hbmFnZXIiLCJlbWl0RXZlbnQiLCJtZWV0aW5nSWQiLCJjYXRjaCIsImVycm9yIiwiZXZlbnQiLCJtZXNzYWdlVGltZW91dCIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJhZGRVc2VyVG9QYXJ0aWNpcGFudHMiLCJ1c2VyIiwibmV3UGFydGljaXBhbnRzIiwiZmlsdGVyIiwiaGFuZGxlU2lkZWJhclRvZ2dsZSIsInBhcGVyIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImRldGFpbCIsIm9wZW4iLCJzdHlsZSIsIm1hcmdpbiIsImhhbmRsZSIsInNldHRpbmdzIiwiYXVkaW9PbiIsInZpZGVvT24iLCJVdGlscyIsImlzTnVsbCIsInJvb21JZCIsInJlbW92ZVN1YnNjcmlwdGlvbnMiLCJhZGRBcHBsaWNhdGlvbkNvbnRleHRTdWJzY3JpcHRpb24iLCJvbkNvbnRleHRDaGFuZ2UiLCJjb250ZXh0IiwibmV3VmFsdWVzIiwia2V5cyIsImtleSIsIndpbmRvd0Rpc3BsYXlTdGF0ZSIsInRoZW4iLCJpbml0aWFsQ29udGV4dCIsImFkZFN1YnNjcmlwdGlvbnMiLCJTT0NLRVRfQ09OTkVDVCIsIlNPQ0tFVF9ESVNDT05ORUNUIiwiUEVFUl9ESVNDT05ORUNUIiwiQ1JFQVRFX1RSQU5TUE9SVF9GQUlMRUQiLCJhZGRFdmVudExpc3RlbmVyIiwic2V0SGFzQWN0aXZlTWVldGluZyIsInNldEFjdGl2ZU1lZXRpbmdLZXkiLCJldmVudE1hbmFnZXIiLCJyZW1vdmVBcHBsaWNhdGlvbkNvbnRleHRTdWJzY3JpcHRpb25zIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhc0FjdGl2ZU1lZXRpbmciLCJsZWF2ZU1lZXRpbmciLCJ1c2VyRnVsbE5hbWUiLCJob3N0IiwibWUiLCJhdHRlbmRlZXMiLCJhIiwiY2hhaXJQZXJzb25JZCIsIm1lZGlhIiwiam9pbk1lZXRpbmciLCJjcmVhdGVQYXJ0aWNpcGFudHMiLCJzaGFyZVNjcmVlblByb2R1Y2VyRGF0YSIsInUiLCJhdmF0YXIiLCJwcm9kdWNlcnMiLCJjaGFuZ2VPdGhlclBhcnRpY2lwYW50QVZTZXR0aW5ncyIsInVzZXJzIiwiZm9yRWFjaCIsInJlbW92ZUxvYWRlZEdyYXBoIiwiZW5kU2Vzc2lvbiIsIm9wZW5Db25maXJtRGlhbG9nIiwicmVzdWx0IiwiZW1pdFN5c3RlbUV2ZW50IiwiZGF0YSIsInRvUGFydGljaXBhbnRJZHMiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJwYXJ0aWNpcGFudElkcyIsInN5c3RlbUV2ZW50VHlwZSIsInJlY2lwaWVudHMiLCJyZWNvcmRNZWV0aW5nIiwibWVkaWFSZWNvcmRlciIsImluaXQiLCJ0aXRsZSIsInJlY29yZGluZyIsInN0b3BSZWNvcmRpbmdNZWV0aW5nIiwicHVibGlzaCIsImNyZWF0ZUVsZW1lbnQiLCJ3aWR0aCIsImhlaWdodCIsImJvcmRlciIsImJvcmRlclJhZGl1cyIsInBvc2l0aW9uIiwiY2xhc3NOYW1lIiwibWluV2lkdGgiLCJib3JkZXJCb3R0b20iLCJvbk11dGVWaWRlbyIsIm11dGVkIiwib25NdXRlQXVkaW8iLCJlbmRDYWxsIiwic2hvd0NoYXQiLCJzaG93UGVvcGxlIiwic2hhcmVTY3JlZW4iLCJzdG9wU2hhcmVTY3JlZW4iLCJzaG93TWludXRlcyIsImhpZGVNaW51dGVzIiwic2F2ZU1pbnV0ZXMiLCJjdXJyZW50Iiwic3RvcFJlY29yZGluZyIsInJhaXNlSGFuZCIsImxvd2VySGFuZCIsImlzQXVkaW9EZXZpY2VDb25uZWN0ZWQiLCJpc1ZpZGVvRGV2aWNlQ29ubmVjdGVkIiwiY29sb3IiLCJwYWRkaW5nIiwiZm9udFNpemUiLCJTWVNURU1fRVJST1JfTUVTU0FHRSIsIm1vZGUiLCJ2aWV3SWQiLCJtZWV0aW5nVGl0bGUiLCJldmVudEtleSIsIm1pbnV0ZXNEb2N1bWVudElkIiwib25HcmlkU2V0dXAiLCJzaGFyaW5nSGFuZGxlciIsIm9uU3RvcFNoYXJpbmciLCJvblN0YXJ0U2hhcmluZyIsIm9uU3RhcnRTaG93aW5nTWludXRlcyIsIm9uU3RvcFNob3dpbmdNaW51dGVzIiwib25BdWRpb0RldmljZUNoYW5nZSIsImRldmljZSIsIm9uSG9zdEF1ZGlvTXV0ZSIsIm9uSG9zdFZpZGVvTXV0ZSIsImNsb3NlSGFuZGxlciIsInRhYiIsInJpZ2h0IiwiYm90dG9tIiwidmFyaWFudCIsInNob3ciLCJkaXNtaXNzaWJsZSIsIm9uQ2xvc2UiLCJmYWRlIiwicGFkZGluZ0JvdHRvbSIsIm1hcmdpblRvcCIsIkZyYWdtZW50IiwiZGlzcGxheSIsImhpZGRlbiIsInBsYXlzSW5saW5lIiwiYXV0b1BsYXkiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbWVkaWEvVHJhaW5pbmdSb29tLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyLvu79pbXBvcnQgUmVhY3QsIHtGcmFnbWVudCwgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vLi4vVXRpbHMnO1xuaW1wb3J0ICcuL1ZpZGVvLmNzcyc7XG5pbXBvcnQgSWNvbiBmcm9tICcuLi9JY29uJztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCBUb29sYmFyIGZyb20gJy4vVG9vbGJhcic7XG5pbXBvcnQge1NZU1RFTV9FUlJPUl9NRVNTQUdFfSBmcm9tICcuL1ZDUm9vbSc7XG5pbXBvcnQgVkNSb29tV29ya3NwYWNlIGZyb20gJy4vVkNSb29tV29ya3NwYWNlJztcbmltcG9ydCB7VkNFdmVudFR5cGV9IGZyb20gJy4vVkNFdmVudFR5cGUnO1xuaW1wb3J0IEFsZXJ0IGZyb20gJ3JlYWN0LWJvb3RzdHJhcC9BbGVydCc7XG5pbXBvcnQgdmNFdmVudE1hbmFnZXIgZnJvbSAnLi9WQ0V2ZW50TWFuYWdlcic7XG5pbXBvcnQgc29ja2V0TWFuYWdlciBmcm9tICcuLi9Tb2NrZXRNYW5hZ2VyJztcbmltcG9ydCBDbG9zYWJsZVBhbmVsIGZyb20gJy4vQ2xvc2FibGVQYW5lbCc7XG5pbXBvcnQgU2lkZUJhckNvbnRlbnQgZnJvbSAnLi9TaWRlQmFyQ29udGVudCc7XG5pbXBvcnQgdXNlQ29udGFpbmVyV2lkdGggZnJvbSAnLi4vLi4vaG9va3MvdXNlQ29udGFpbmVyV2lkdGgnO1xuaW1wb3J0IG1lZGlhUmVjb3JkZXIgZnJvbSAnLi9WQ1Jvb21SZWNvcmRlcic7XG5pbXBvcnQge3NlbmRSZXF1ZXN0fSBmcm9tICcuLi8uLi9SZXN0VXRpbHMnO1xuaW1wb3J0IG1lZGlhIGZyb20gJy4uLy4uL2pzL01lZGlhJztcbmltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi4vLi4vZXZlbnQvT2JzZXJ2YWJsZSc7XG5cbmNvbnN0IFN0YXR1cyA9IHtcbiAgICBMT0JCWTogJ0xPQkJZJyxcbiAgICBTRVNTSU9OOiAnU0VTU0lPTicsXG4gICAgU0VTU0lPTl9FTkRFRDogJ1NFU1NJT05fRU5ERUQnLFxuICAgIFNZU1RFTV9FUlJPUjogJ1NZU1RFTV9FUlJPUicsXG4gICAgQ09OTkVDVElPTl9FUlJPUjogJ0NPTk5FQ1RJT05fRVJST1InLFxuICAgIFNUUkVBTV9FUlJPUjogJ1NUUkVBTV9FUlJPUidcbn07XG5cbmNvbnN0IGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcbmNvbnN0IFRyYWluaW5nUm9vbSA9IFJlYWN0Lm1lbW8oUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xuXG4gICAgY29uc3QgcmVjb3JkUmVmID0gdXNlUmVmKCk7XG4gICAgY29uc3QgW2hhc1VucmVhZENoYXRzLCBzZXRIYXNVbnJlYWRDaGF0c10gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbcGFydGljaXBhbnRzLCBzZXRQYXJ0aWNpcGFudHNdID0gdXNlU3RhdGUoW10pO1xuICAgIGNvbnN0IFtoYW5kUmFpc2VkLCBzZXRIYW5kUmFpc2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaXNSZWNvcmRpbmcsIHNldElzUmVjb3JkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbdmlkZW9EaXNhYmxlZF0gPSB1c2VTdGF0ZShwcm9wcy52aWRlb0Rpc2FibGVkKTtcbiAgICBjb25zdCBbYXVkaW9EaXNhYmxlZCwgc2V0QXVkaW9EaXNhYmxlZF0gPSB1c2VTdGF0ZShwcm9wcy5hdWRpb0Rpc2FibGVkKTtcbiAgICBjb25zdCBbdmlkZW9NdXRlZCwgc2V0VmlkZW9NdXRlZF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBbYXVkaW9NdXRlZCwgc2V0QXVkaW9NdXRlZF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBbZGlzcGxheVN0YXRlLCBzZXREaXNwbGF5U3RhdGVdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3Jvb21TdGF0dXMsIHNldFJvb21TdGF0dXNdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3NvbWVvbmVTaGFyaW5nLCBzZXRTb21lb25lU2hhcmluZ10gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbc2lkZUJhck9wZW4sIHNldFNpZGVCYXJPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc2lkZUJhclRhYiwgc2V0U2lkZUJhclRhYl0gPSB1c2VTdGF0ZSgnJyk7XG4gICAgY29uc3QgW2FsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0LCBzZXRBbGxVc2VyUGFydGljaXBhbnRzTGVmdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2xvYmJ5V2FpdGluZ0xpc3QsIHNldExvYmJ5V2FpdGluZ0xpc3RdID0gdXNlU3RhdGUoW10pO1xuICAgIGNvbnN0IFtpc0hvc3QsIHNldElzSG9zdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2lzQ2hhaXJQZXJzb24sIHNldElzQ2hhaXJQZXJzb25dID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFttZWV0aW5nUGFydGljaXBhbnRHcmlkTW9kZSwgc2V0TWVldGluZ1BhcnRpY2lwYW50R3JpZE1vZGVdID0gdXNlU3RhdGUoJ0RFRkFVTFQnKTtcbiAgICBjb25zdCBbYXV0b1Blcm1pdCwgc2V0QXV0b1Blcm1pdF0gPSB1c2VTdGF0ZSghcHJvcHMuY2FsZW5kYXJFdmVudC5hc2tUb0pvaW4pO1xuICAgIGNvbnN0IFtydHBDYXBhYmlsaXRpZXMsIHNldFJ0cENhcGFiaWxpdGllc10gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbYWN0aXZpdHlNZXNzYWdlLCBzZXRBY3Rpdml0eU1lc3NhZ2VdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgLy8gUGVyc2lzdGVudCwgYWN0aW9uYWJsZSBlcnJvciBiYW5uZXIgKGUuZy4gbWVkaWEgcmVjb25uZWN0aW9uIGdhdmUgdXApLlxuICAgIGNvbnN0IFtyZWNvbm5lY3RFcnJvciwgc2V0UmVjb25uZWN0RXJyb3JdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW29ubG9hZFNjcmVlblNoYXJlRGF0YSwgc2V0T25sb2FkU2NyZWVuU2hhcmVEYXRhXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtjaGF0TWVzc2FnZSwgc2V0Q2hhdE1lc3NhZ2VdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2NoYXRTZW5kZXIsIHNldENoYXRTZW5kZXJdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2N1cnJlbnRVc2VyRnVsbE5hbWUsIHNldEN1cnJlbnRVc2VyRnVsbE5hbWVdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2V2ZW50SGFuZGxlcl0gPSB1c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW21lZXRpbmdDaGF0LCBzZXRNZWV0aW5nQ2hhdF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbc2NyZWVuU2hhcmVkLCBzZXRTY3JlZW5TaGFyZWRdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3N0YXJ0U2NyZWVuU2hhcmluZywgc2V0U3RhcnRTY3JlZW5TaGFyaW5nXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbcmFpc2VkSGFuZHMsIHNldFJhaXNlZEhhbmRzXSA9IHVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbbWludXRlc1Nob3duLCBzZXRNaW51dGVzU2hvd25dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtzdGFydFNob3dpbmdNaW51dGVzLCBzZXRTdGFydFNob3dpbmdNaW51dGVzXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCB2Y1Jvb21Xb3Jrc3BhY2VSZWYgPSB1c2VSZWYoKTtcblxuICAgIC8vIExheW91dCByZXNwb25kcyB0byB0aGUgcm9vbSdzIG93biB3aWR0aCAoaXQgbGl2ZXMgaW5zaWRlIFdpbmRvd1ZpZXdQb3J0LFxuICAgIC8vIHNvIHZpZXdwb3J0IGJyZWFrcG9pbnRzIGFyZSB3cm9uZykuIEJlbG93IHRoaXMgdGhlIHNpZGViYXIgb3ZlcmxheXMgdGhlXG4gICAgLy8gd29ya3NwYWNlIGluc3RlYWQgb2YgZG9ja2luZyBiZXNpZGUgaXQgKHdoaWNoIHNxdWFzaGVkIHRoZSB2aWRlbykuXG4gICAgY29uc3QgW3Jvb3RSZWYsIHJvb3RXaWR0aF0gPSB1c2VDb250YWluZXJXaWR0aCgpO1xuICAgIGNvbnN0IG5hcnJvd0xheW91dCA9IHJvb3RXaWR0aCA+IDAgJiYgcm9vdFdpZHRoIDwgNjgwO1xuXG4gICAgY29uc3QgYXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbG9hZENoYXRzICgpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnTE9BRElORyBDSEFUUycpO1xuICAgICAgICAgICAgICAgIGZldGNoQ2hhdHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdtZWV0aW5nLXJvb20tJyArIHByb3BzLmNhbGVuZGFyRXZlbnQuaWQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHBhcnRpY2lwYW50cygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFydGljaXBhbnRzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uOiAoZXZlbnRUeXBlLCBiZSkgPT4ge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuUkVRVUVTVF9UT19KT0lOX01FRVRJTkc6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5VU0VSX0pPSU5FRDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZFVzZXIoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5VU0VSX0xFRlRfTUVFVElORzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVVzZXIoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5BVURJT19WSVNVQUxfU0VUVElOR1NfQ0hBTkdFRDpcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQVZTZXR0aW5nc0NoYW5nZShiZT8ucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5TWVNURU1fRVZFTlQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5SQUlTRV9IQU5EOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25SYWlzZUhhbmQoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5MT1dFUl9IQU5EOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25Mb3dlckhhbmQoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5FTkRfU0VTU0lPTjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmdVcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuU0hBUklOR19TVE9QUEVEOlxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2NyZWVuU2hhcmVkKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0U2NyZWVuU2hhcmluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5DSEFUX01FU1NBR0U6XG4gICAgICAgICAgICAgICAgICAgICAgICBvbk1lc3NhZ2UoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5DT05TVU1FUl9UUkFOU1BPUlRfRkFJTEVEOlxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZ1VwKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQ29ubmVjdGlvbiBlcnJvciAtIFBsZWFzZSBjaGVjayB5b3VyIG5ldHdvcmsgY29ubmVjdGlvbiBhbmQgcmUtam9pbiB0aGUgbWVldGluZycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuU1lTVEVNX0FMRVJUOlxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVjb25uZWN0RXJyb3IoYmUucGF5bG9hZCAmJiBiZS5wYXlsb2FkLm1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGJlLnBheWxvYWQubWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ0EgY29ubmVjdGlvbiBwcm9ibGVtIG9jY3VycmVkLiBQbGVhc2UgcmVqb2luIHRoZSBtZWV0aW5nLicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBvbk1lc3NhZ2UgPSAobWVzc2FnZSkgPT4ge1xuICAgICAgICBpZihzaWRlQmFyVGFiICE9PSAnQ2hhdCcpIHtcbiAgICAgICAgICAgIGxldCBjaGF0TWVzc2FnZSA9IG1lc3NhZ2UuY2hhdE1lc3NhZ2U7XG4gICAgICAgICAgICBpZiAoYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUgIT09IGNoYXRNZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlTWVzc2FnZUFycml2ZWQoe1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGF0TWVzc2FnZS5wYXJ0aWNpcGFudC5uYW1lICsgXCIgXCIgKyBjaGF0TWVzc2FnZS5wYXJ0aWNpcGFudC5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICArIChjaGF0TWVzc2FnZS5jb250ZW50ICYmIGNoYXRNZXNzYWdlLmNvbnRlbnQudHJpbSgpLmxlbmd0aCA+IDAgPyBcIiAtIFwiICsgY2hhdE1lc3NhZ2UuY29udGVudCA6ICcnKVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgc2V0SGFzVW5yZWFkQ2hhdHModHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBvblJhaXNlSGFuZCA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIHJhaXNlZEhhbmRzLnB1c2gocGF5bG9hZC51c2VySWQpO1xuICAgICAgICBzZXRSYWlzZWRIYW5kcyhbXS5jb25jYXQocmFpc2VkSGFuZHMpKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25Mb3dlckhhbmQgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAocmFpc2VkSGFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbGV0IGluZGV4ID0gcmFpc2VkSGFuZHMuZmluZEluZGV4KChwKSA9PiBwID09PSBwYXlsb2FkLnVzZXJJZCk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIHJhaXNlZEhhbmRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXRSYWlzZWRIYW5kcyhbXS5jb25jYXQocmFpc2VkSGFuZHMpKTtcbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKG1lZXRpbmdDaGF0KSB7XG4gICAgICAgICAgICBzZXRTaWRlQmFyVGFiKCdDaGF0Jyk7XG4gICAgICAgICAgICBzZXRTaWRlQmFyT3Blbih0cnVlKTtcbiAgICAgICAgICAgIHNldEhhc1VucmVhZENoYXRzKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH0sIFttZWV0aW5nQ2hhdF0pO1xuXG4gICAgY29uc3QgZmV0Y2hDaGF0cyA9ICgpID0+IHtcbiAgICAgICAgc2VuZFJlcXVlc3QoYCR7bG9jYXRpb24gKyAnLycgKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKX0vY2FsZW5kYXIvYXBpL3YxL2NoYXQvZmV0Y2hNZWV0aW5nQ2hhdC8ke3Byb3BzLmNhbGVuZGFyRXZlbnQuaWR9YCwgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRkVUQ0ggQ0hBVCBSRVNQT05TRSA6ICcsIHJlc3BvbnNlKTtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5pZCkge1xuICAgICAgICAgICAgICAgIHNldE1lZXRpbmdDaGF0KHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgKGUpID0+IHtcblxuICAgICAgICB9LCB0cnVlLCBmYWxzZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uQVZTZXR0aW5nc0NoYW5nZSA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmKHBheWxvYWQpIHtcbiAgICAgICAgICAgIGxldCBwYXJ0aWNpcGFudCA9IHBhcnRpY2lwYW50cy5maW5kKChwKSA9PiBwLnVzZXJJZCA9PT0gcGF5bG9hZC51c2VySWQpO1xuICAgICAgICAgICAgaWYgKHBhcnRpY2lwYW50KSB7XG4gICAgICAgICAgICAgICAgcGFydGljaXBhbnQuYXVkaW9NdXRlZCA9IHBheWxvYWQuYXVkaW9NdXRlZDtcbiAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudC52aWRlb011dGVkID0gcGF5bG9hZC52aWRlb011dGVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2Y0V2ZW50TWFuYWdlci5maXJlRXZlbnQoVkNFdmVudFR5cGUuQVVESU9fVklTVUFMX1NFVFRJTkdTX0NIQU5HRUQsIHBheWxvYWQpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGVtaXRBVlNldHRpbmdzQ2hhbmdlKCkge1xuICAgICAgICBzb2NrZXRNYW5hZ2VyLmVtaXRFdmVudChWQ0V2ZW50VHlwZS5BVURJT19WSVNVQUxfU0VUVElOR1NfQ0hBTkdFRCwge1xuICAgICAgICAgICAgbWVldGluZ0lkOiBwcm9wcy5jYWxlbmRhckV2ZW50LmlkLFxuICAgICAgICAgICAgdXNlcklkOiBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSxcbiAgICAgICAgICAgIGF1ZGlvTXV0ZWQ6IGF1ZGlvTXV0ZWQsXG4gICAgICAgICAgICB2aWRlb011dGVkOiB2aWRlb011dGVkXG4gICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoYXVkaW9NdXRlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgb25BVlNldHRpbmdzQ2hhbmdlKHtcbiAgICAgICAgICAgICAgICB1c2VySWQ6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lLFxuICAgICAgICAgICAgICAgIHZpZGVvTXV0ZWQsXG4gICAgICAgICAgICAgICAgYXVkaW9NdXRlZFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGVtaXRBVlNldHRpbmdzQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICB9LCBbYXVkaW9NdXRlZF0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHZpZGVvTXV0ZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIG9uQVZTZXR0aW5nc0NoYW5nZSh7XG4gICAgICAgICAgICAgICAgdXNlcklkOiBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSxcbiAgICAgICAgICAgICAgICB2aWRlb011dGVkLFxuICAgICAgICAgICAgICAgIGF1ZGlvTXV0ZWRcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBlbWl0QVZTZXR0aW5nc0NoYW5nZSgpO1xuICAgICAgICB9XG4gICAgfSwgW3ZpZGVvTXV0ZWRdKTtcblxuICAgIGNvbnN0IGhhbmRsZU1lc3NhZ2VBcnJpdmVkID0gKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChyb29tU3RhdHVzID09PSBTdGF0dXMuU0VTU0lPTiAmJiBldmVudC5tZXNzYWdlICYmIGV2ZW50Lm1lc3NhZ2UubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc2V0QWN0aXZpdHlNZXNzYWdlKGV2ZW50Lm1lc3NhZ2UpO1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRBY3Rpdml0eU1lc3NhZ2UobnVsbCk7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KG1lc3NhZ2VUaW1lb3V0KTtcbiAgICAgICAgICAgIH0sIDQwMDApO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGFkZFVzZXIgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnQUREIFVTRVIgOiAnLCBwYXlsb2FkKTtcbiAgICAgICAgYWRkVXNlclRvUGFydGljaXBhbnRzKHBheWxvYWQudXNlcik7XG4gICAgICAgIHNldEFsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0KGZhbHNlKTtcbiAgICAgICAgaWYgKHJvb21TdGF0dXMgPT09IFN0YXR1cy5MT0JCWSkge1xuICAgICAgICAgICAgc2V0Um9vbVN0YXR1cyhTdGF0dXMuU0VTU0lPTik7XG4gICAgICAgICAgICBzZXRTaWRlQmFyVGFiKCdQZW9wbGUnKTtcbiAgICAgICAgICAgIHNldFNpZGVCYXJPcGVuKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaGFuZGxlTWVzc2FnZUFycml2ZWQoe1xuICAgICAgICAgICAgbWVzc2FnZTogcGF5bG9hZC51c2VyLm5hbWUgKyAnIGhhcyBqb2luZWQnXG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCByZW1vdmVVc2VyID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKHByb3BzLmNhbGVuZGFyRXZlbnQuaWQgPT09IHBheWxvYWQubWVldGluZ0lkKSB7XG4gICAgICAgICAgICBjb25zdCB1c2VySWQgPSBwYXlsb2FkLnVzZXJJZDtcbiAgICAgICAgICAgIGNvbnN0IGZpbmQgPSBwYXJ0aWNpcGFudHMuZmluZCgocCkgPT4gcC51c2VySWQgPT09IHVzZXJJZCk7XG4gICAgICAgICAgICBpZiAoZmluZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1BhcnRpY2lwYW50cyA9IHBhcnRpY2lwYW50cy5maWx0ZXIoKHApID0+IHAudXNlcklkICE9PSB1c2VySWQpO1xuICAgICAgICAgICAgICAgIHNldFBhcnRpY2lwYW50cyhuZXdQYXJ0aWNpcGFudHMpO1xuICAgICAgICAgICAgICAgIGlmIChuZXdQYXJ0aWNpcGFudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldEFsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBzZXRSb29tU3RhdHVzKFN0YXR1cy5MT0JCWSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZVNpZGViYXJUb2dnbGUgPSAoZSkgPT4ge1xuICAgICAgICBsZXQgcGFwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVldGluZ0RpYWxvZ1BhcGVyJyk7XG4gICAgICAgIGlmIChlLmRldGFpbC5vcGVuKSB7XG4gICAgICAgICAgICBwYXBlci5zdHlsZS5tYXJnaW4gPSAnNTRweCAwIDAgMTM2cHgnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFwZXIuc3R5bGUubWFyZ2luID0gJzU0cHggMCAwIDAnO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGV2ZW50SGFuZGxlci5hcGkgPSBoYW5kbGVyKCk7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICB9KTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChwcm9wcy5zZXR0aW5ncykge1xuICAgICAgICAgICAgc2V0QXVkaW9NdXRlZCghcHJvcHMuc2V0dGluZ3MuYXVkaW9Pbik7XG4gICAgICAgICAgICBzZXRWaWRlb011dGVkKCFwcm9wcy5zZXR0aW5ncy52aWRlb09uKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy5zZXR0aW5nc10pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwoaGFuZFJhaXNlZCkpIHtcbiAgICAgICAgICAgIGlmIChoYW5kUmFpc2VkKSB7XG4gICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5lbWl0RXZlbnQoVkNFdmVudFR5cGUuUkFJU0VfSEFORCwge1xuICAgICAgICAgICAgICAgICAgICByb29tSWQ6IHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5lbWl0RXZlbnQoVkNFdmVudFR5cGUuTE9XRVJfSEFORCwge1xuICAgICAgICAgICAgICAgICAgICByb29tSWQ6IHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgIH0sIFtoYW5kUmFpc2VkXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2Y0V2ZW50TWFuYWdlci5yZW1vdmVTdWJzY3JpcHRpb25zKGV2ZW50SGFuZGxlcik7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5hZGRBcHBsaWNhdGlvbkNvbnRleHRTdWJzY3JpcHRpb24oe1xuICAgICAgICAgICAgaGFuZGxlcjoge1xuICAgICAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0cmFpbmluZy1yb29tJztcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uQ29udGV4dENoYW5nZTogKGNvbnRleHQsIG5ld1ZhbHVlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMobmV3VmFsdWVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoKGtleSkgPT4ga2V5ID09PSAnd2luZG93RGlzcGxheVN0YXRlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldERpc3BsYXlTdGF0ZShuZXdWYWx1ZXMud2luZG93RGlzcGxheVN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKChpbml0aWFsQ29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldERpc3BsYXlTdGF0ZShpbml0aWFsQ29udGV4dCA/IGluaXRpYWxDb250ZXh0LndpbmRvd0Rpc3BsYXlTdGF0ZSA6ICdNQVhJTUlaRUQnKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHZjRXZlbnRNYW5hZ2VyLmFkZFN1YnNjcmlwdGlvbnMoZXZlbnRIYW5kbGVyLCBWQ0V2ZW50VHlwZS5SRVFVRVNUX1RPX0pPSU5fTUVFVElORywgVkNFdmVudFR5cGUuVVNFUl9KT0lORUQsIFZDRXZlbnRUeXBlLlVTRVJfTEVGVF9NRUVUSU5HLFxuICAgICAgICAgICAgVkNFdmVudFR5cGUuU1lTVEVNX0VWRU5ULCBWQ0V2ZW50VHlwZS5TT0NLRVRfQ09OTkVDVCwgVkNFdmVudFR5cGUuU09DS0VUX0RJU0NPTk5FQ1QsIFZDRXZlbnRUeXBlLlJBSVNFX0hBTkQsIFZDRXZlbnRUeXBlLkxPV0VSX0hBTkQsXG4gICAgICAgICAgICBWQ0V2ZW50VHlwZS5QRUVSX0RJU0NPTk5FQ1QsIFZDRXZlbnRUeXBlLkNPTlNVTUVSX1RSQU5TUE9SVF9GQUlMRUQsIFZDRXZlbnRUeXBlLkNSRUFURV9UUkFOU1BPUlRfRkFJTEVELFxuICAgICAgICAgICAgVkNFdmVudFR5cGUuU0hBUklOR19TVE9QUEVELCBWQ0V2ZW50VHlwZS5FTkRfU0VTU0lPTiwgVkNFdmVudFR5cGUuQ0hBVF9NRVNTQUdFLCBWQ0V2ZW50VHlwZS5BVURJT19WSVNVQUxfU0VUVElOR1NfQ0hBTkdFRCxcbiAgICAgICAgICAgIFZDRXZlbnRUeXBlLlNZU1RFTV9BTEVSVCk7XG5cbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2lkZUJhclRvZ2dsZUV2ZW50JywgaGFuZGxlU2lkZWJhclRvZ2dsZSk7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRIYXNBY3RpdmVNZWV0aW5nKHRydWUpO1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0QWN0aXZlTWVldGluZ0tleShwcm9wcy5jYWxlbmRhckV2ZW50LmtleSk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICB2Y0V2ZW50TWFuYWdlci5yZW1vdmVTdWJzY3JpcHRpb25zKGV2ZW50SGFuZGxlcik7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIucmVtb3ZlQXBwbGljYXRpb25Db250ZXh0U3Vic2NyaXB0aW9ucygndHJhaW5pbmctcm9vbScpO1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2lkZUJhclRvZ2dsZUV2ZW50JywgaGFuZGxlU2lkZWJhclRvZ2dsZSk7XG5cbiAgICAgICAgICAgIGlmIChhcHBsaWNhdGlvbk1hbmFnZXIuaGFzQWN0aXZlTWVldGluZygpKSB7XG4gICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5sZWF2ZU1lZXRpbmcocHJvcHMuY2FsZW5kYXJFdmVudC5pZCk7XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnNldEhhc0FjdGl2ZU1lZXRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRBY3RpdmVNZWV0aW5nS2V5KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRIYXNBY3RpdmVNZWV0aW5nKHRydWUpO1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0QWN0aXZlTWVldGluZ0tleShwcm9wcy5jYWxlbmRhckV2ZW50LmtleSk7XG4gICAgICAgIGxldCB1c2VyRnVsbE5hbWU7XG5cbiAgICAgICAgaWYgKHByb3BzLmNhbGVuZGFyRXZlbnQuaG9zdC51c2VybmFtZSA9PT0gYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUpIHtcbiAgICAgICAgICAgIHVzZXJGdWxsTmFtZSA9IHByb3BzLmNhbGVuZGFyRXZlbnQuaG9zdC5uYW1lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gR3VhcmQ6IHRoZSBjdXJyZW50IHVzZXIgbWF5IG5vdCBiZSBpbiBhdHRlbmRlZXMgKGRhdGEgZHJpZnQpIOKAlCBkb24ndCBjcmFzaDtcbiAgICAgICAgICAgIC8vIGZhbGwgYmFjayB0byB0aGUgdXNlcm5hbWUgc28gY3VycmVudFVzZXJGdWxsTmFtZSBzdGF5cyB0cnV0aHkgKGdhdGVzIHRoZSByb29tIHJlbmRlcikuXG4gICAgICAgICAgICBjb25zdCBtZSA9IHByb3BzLmNhbGVuZGFyRXZlbnQuYXR0ZW5kZWVzLmZpbmQoKGEpID0+IGEudXNlcm5hbWUgPT09IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lKTtcbiAgICAgICAgICAgIHVzZXJGdWxsTmFtZSA9IG1lID8gbWUubmFtZSA6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0Q3VycmVudFVzZXJGdWxsTmFtZSh1c2VyRnVsbE5hbWUpO1xuICAgICAgICBzZXRJc0hvc3QocHJvcHMuY2FsZW5kYXJFdmVudC5ob3N0LnVzZXJuYW1lID09PSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSk7XG4gICAgICAgIHNldElzQ2hhaXJQZXJzb24ocHJvcHMuY2FsZW5kYXJFdmVudC5jaGFpclBlcnNvbklkID09PSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG1lZGlhLmpvaW5NZWV0aW5nKHByb3BzLmNhbGVuZGFyRXZlbnQsIHByb3BzLnNldHRpbmdzLCB1c2VyRnVsbE5hbWUpXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdKT0lOIFJFU1BPTlNFIDogJywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICBjcmVhdGVQYXJ0aWNpcGFudHMocmVzcG9uc2UucGFydGljaXBhbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0UnRwQ2FwYWJpbGl0aWVzKHJlc3BvbnNlLnJ0cENhcGFiaWxpdGllcyk7XG4gICAgICAgICAgICAgICAgICAgIHNldE9ubG9hZFNjcmVlblNoYXJlRGF0YShyZXNwb25zZS5zaGFyZVNjcmVlblByb2R1Y2VyRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIHNldFJvb21TdGF0dXMocGFydGljaXBhbnRzLmxlbmd0aCA+IDAgPyBTdGF0dXMuU0VTU0lPTiA6IFN0YXR1cy5MT0JCWSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Um9vbVN0YXR1cyhTdGF0dXMuU1lTVEVNX0VSUk9SKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgc2V0Um9vbVN0YXR1cyhTdGF0dXMuU1lTVEVNX0VSUk9SKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0SGFzQWN0aXZlTWVldGluZyhmYWxzZSk7XG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0QWN0aXZlTWVldGluZ0tleShudWxsKTtcbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG5cbiAgICBmdW5jdGlvbiBhZGRVc2VyVG9QYXJ0aWNpcGFudHModXNlcikge1xuICAgICAgICAvLyBUeXBpY2FsbHksIGEgdXNlciBzaG91ZCBub3QgZXhpc3QuIFdlIGFyZSBlbnN1cmluZyB0aGF0IHRoZXJlIGFyZSBuZXZlciBkdXBsaWNhdGVzXG4gICAgICAgIGNvbnNvbGUubG9nKHBhcnRpY2lwYW50cyk7XG4gICAgICAgIGxldCBwYXJ0aWNpcGFudCA9IHBhcnRpY2lwYW50cy5maW5kKCh1KSA9PiB1LnVzZXJJZCA9PT0gdXNlci51c2VySWQpO1xuICAgICAgICBpZiAocGFydGljaXBhbnQpIHtcbiAgICAgICAgICAgIHBhcnRpY2lwYW50Lm5hbWUgPSB1c2VyLm5hbWU7XG4gICAgICAgICAgICBwYXJ0aWNpcGFudC5hdmF0YXIgPSB1c2VyLmF2YXRhcjtcbiAgICAgICAgICAgIHBhcnRpY2lwYW50LmF1ZGlvTXV0ZWQgPSB1c2VyLmF1ZGlvTXV0ZWQ7XG4gICAgICAgICAgICBwYXJ0aWNpcGFudC52aWRlb011dGVkID0gdXNlci52aWRlb011dGVkO1xuICAgICAgICAgICAgcGFydGljaXBhbnQucHJvZHVjZXJzID0gdXNlci5wcm9kdWNlcnM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJ0aWNpcGFudCA9IHtcbiAgICAgICAgICAgICAgICB1c2VySWQ6IHVzZXIudXNlcklkLFxuICAgICAgICAgICAgICAgIG5hbWU6IHVzZXIubmFtZSxcbiAgICAgICAgICAgICAgICBhdmF0YXI6IHVzZXIuYXZhdGFyLFxuICAgICAgICAgICAgICAgIGF1ZGlvTXV0ZWQ6IHVzZXIuYXVkaW9NdXRlZCxcbiAgICAgICAgICAgICAgICB2aWRlb011dGVkOiB1c2VyLnZpZGVvTXV0ZWQsXG4gICAgICAgICAgICAgICAgcHJvZHVjZXJzOiB1c2VyLnByb2R1Y2Vyc1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcGFydGljaXBhbnRzLnB1c2gocGFydGljaXBhbnQpO1xuICAgICAgICAgICAgc2V0UGFydGljaXBhbnRzKFtdLmNvbmNhdChwYXJ0aWNpcGFudHMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNoYW5nZU90aGVyUGFydGljaXBhbnRBVlNldHRpbmdzID0gKHVzZXJJZCwgYXVkaW9NdXRlZCwgdmlkZW9NdXRlZCkgPT4ge1xuXG4gICAgfTtcblxuICAgIGNvbnN0IGNyZWF0ZVBhcnRpY2lwYW50cyA9ICh1c2VycykgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnQUxMIFVTRVJTIHJlY2VpdmVkIGFuZCBjcmVhdGluZyBwYXJ0aWNpcGFudHMgOiAnLCB1c2Vycyk7XG4gICAgICAgIHVzZXJzLmZvckVhY2goKHVzZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdBRERJTkcgSVRFTSBUTyBQQVJUSUNJUEFOVFMgOiAnLCB1c2VyKTtcbiAgICAgICAgICAgIGFkZFVzZXJUb1BhcnRpY2lwYW50cyh1c2VyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc2V0QWxsVXNlclBhcnRpY2lwYW50c0xlZnQoZmFsc2UpO1xuICAgICAgICBpZiAocGFydGljaXBhbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmIChyb29tU3RhdHVzID09PSBTdGF0dXMuTE9CQlkpIHtcbiAgICAgICAgICAgICAgICBzZXRSb29tU3RhdHVzKFN0YXR1cy5TRVNTSU9OKTtcbiAgICAgICAgICAgICAgICBzZXRTaWRlQmFyT3Blbih0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5nVXAgPSAoKSA9PiB7XG4gICAgICAgIHNvY2tldE1hbmFnZXIubGVhdmVNZWV0aW5nKHByb3BzLmNhbGVuZGFyRXZlbnQuaWQpO1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0SGFzQWN0aXZlTWVldGluZyhmYWxzZSk7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5yZW1vdmVMb2FkZWRHcmFwaCgnd2luZG93Jyk7XG4gICAgICAgIHNldFNpZGVCYXJPcGVuKGZhbHNlKTtcbiAgICAgICAgc2V0U2lkZUJhclRhYignJyk7XG4gICAgfTtcblxuICAgIGNvbnN0IGVuZFNlc3Npb24gPSAoKSA9PiB7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5vcGVuQ29uZmlybURpYWxvZyhcIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBlbmQgdGhlIGN1cnJlbnQgc2Vzc2lvbj9cIiwgKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHNvY2tldE1hbmFnZXIuZW5kU2Vzc2lvbihwcm9wcy5jYWxlbmRhckV2ZW50LmlkKTtcbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0SGFzQWN0aXZlTWVldGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnNldEFjdGl2ZU1lZXRpbmdLZXkobnVsbCk7XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnJlbW92ZUxvYWRlZEdyYXBoKCd3aW5kb3cnKTtcbiAgICAgICAgICAgICAgICBzZXRTaWRlQmFyT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgICAgc2V0U2lkZUJhclRhYignJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBlbWl0U3lzdGVtRXZlbnQgPSAoZXZlbnRUeXBlLCBkYXRhLCB0b1BhcnRpY2lwYW50SWRzID0gbnVsbCkgPT4ge1xuICAgICAgICBsZXQgcGFydGljaXBhbnRJZHMgPSBbXTtcbiAgICAgICAgaWYgKCF0b1BhcnRpY2lwYW50SWRzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBhcnRpY2lwYW50IG9mIHBhcnRpY2lwYW50cykge1xuICAgICAgICAgICAgICAgIGlmIChwYXJ0aWNpcGFudC51c2VySWQgIT09IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50SWRzLnB1c2gocGFydGljaXBhbnQudXNlcklkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJ0aWNpcGFudElkcyA9IHBhcnRpY2lwYW50SWRzLmNvbmNhdCh0b1BhcnRpY2lwYW50SWRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNvY2tldE1hbmFnZXIuZW1pdEV2ZW50KFZDRXZlbnRUeXBlLlNZU1RFTV9FVkVOVCwge1xuICAgICAgICAgICAgc3lzdGVtRXZlbnRUeXBlOiBldmVudFR5cGUsXG4gICAgICAgICAgICByZWNpcGllbnRzOiBwYXJ0aWNpcGFudElkcyxcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCByZWNvcmRNZWV0aW5nID0gKCkgPT4ge1xuICAgICAgICBtZWRpYVJlY29yZGVyLmluaXQocHJvcHMuY2FsZW5kYXJFdmVudC5pZCwgcHJvcHMuY2FsZW5kYXJFdmVudC50aXRsZSk7XG4gICAgICAgIHNldElzUmVjb3JkaW5nKHRydWUpO1xuICAgICAgICBlbWl0U3lzdGVtRXZlbnQoJ01FRVRJTkdfUkVDT1JESU5HJywge1xuICAgICAgICAgICAgcmVjb3JkaW5nOiB0cnVlLFxuICAgICAgICAgICAgdXNlcklkOiBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZVxuICAgICAgICB9KTtcblxuICAgICAgICBtZWRpYVJlY29yZGVyLnJlY29yZE1lZXRpbmcoKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc3RvcFJlY29yZGluZ01lZXRpbmcgPSAocHVibGlzaCA9IHRydWUpID0+IHtcbiAgICAgICAgc2V0SXNSZWNvcmRpbmcoZmFsc2UpO1xuXG4gICAgICAgIGlmIChwdWJsaXNoKSB7XG4gICAgICAgICAgICBlbWl0U3lzdGVtRXZlbnQoJ01FRVRJTkdfUkVDT1JESU5HJywge1xuICAgICAgICAgICAgICAgIHJlY29yZGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgdXNlcklkOiBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBtZWRpYVJlY29yZGVyLnN0b3BSZWNvcmRpbmdNZWV0aW5nKCk7XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIHJlZj17cm9vdFJlZn1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICBib3JkZXI6ICcxcHggc29saWQgI2UyZTJlMicsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJ1xuICAgICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cgZmxleC1ub3dyYXAgbm8tbWFyZ2luIG5vLXBhZGRpbmcgdy0xMDAgaC0xMDAnfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9IHN0eWxlPXt7bWluV2lkdGg6ICcyODBweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cgbm8tbWFyZ2luIG5vLXBhZGRpbmcgdy0xMDAgaC0xMDAnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzgwcHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckJvdHRvbTogJzFweCBzb2xpZCAjZTJlMmUyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sYmFyIGV2ZW50SGFuZGxlcj17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk11dGVWaWRlbzogKG11dGVkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRWaWRlb011dGVkKG11dGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NdXRlQXVkaW86IChtdXRlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXVkaW9NdXRlZChtdXRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZENhbGw6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmdVcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRTZXNzaW9uOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRTZXNzaW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGF0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZXRjaENoYXRzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dQZW9wbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNpZGVCYXJUYWIoJ1Blb3BsZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2lkZUJhck9wZW4odHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlU2NyZWVuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydFNjcmVlblNoYXJpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BTaGFyZVNjcmVlbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2NyZWVuU2hhcmVkKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0U2NyZWVuU2hhcmluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dNaW51dGVzOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydFNob3dpbmdNaW51dGVzKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlTWludXRlczogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWludXRlc1Nob3duKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0U2hvd2luZ01pbnV0ZXMoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTWludXRlczogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZjUm9vbVdvcmtzcGFjZVJlZi5jdXJyZW50ICYmIHZjUm9vbVdvcmtzcGFjZVJlZi5jdXJyZW50LnNhdmVNaW51dGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmNSb29tV29ya3NwYWNlUmVmLmN1cnJlbnQuc2F2ZU1pbnV0ZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkTWVldGluZzogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkTWVldGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wUmVjb3JkaW5nOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wUmVjb3JkaW5nTWVldGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZUhhbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEhhbmRSYWlzZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvd2VySGFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SGFuZFJhaXNlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1VucmVhZENoYXRzPXtoYXNVbnJlYWRDaGF0c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudHM9e3BhcnRpY2lwYW50c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kUmFpc2VkPXtoYW5kUmFpc2VkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvRGlzYWJsZWQ9e3ZpZGVvRGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9EaXNhYmxlZD17YXVkaW9EaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb011dGVkPXt2aWRlb011dGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvTXV0ZWQ9e2F1ZGlvTXV0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVN0YXRlPXtkaXNwbGF5U3RhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuU2hhcmVkPXtzY3JlZW5TaGFyZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlc1Nob3duPXttaW51dGVzU2hvd259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vbVN0YXR1cz17cm9vbVN0YXR1c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0hvc3Q9e3Byb3BzLmNhbGVuZGFyRXZlbnQuaG9zdC51c2VybmFtZSA9PT0gYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b1Blcm1pdD17IXByb3BzLmNhbGVuZGFyRXZlbnQuaG9zdC5hc2tUb0pvaW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29tZW9uZVNoYXJpbmc9e3NvbWVvbmVTaGFyaW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVjb3JkaW5nPXtpc1JlY29yZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZWRIYW5kcz17cmFpc2VkSGFuZHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBdWRpb0RldmljZUNvbm5lY3RlZD17cHJvcHMuc2V0dGluZ3MuaXNBdWRpb0RldmljZUNvbm5lY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZpZGVvRGV2aWNlQ29ubmVjdGVkPXtwcm9wcy5zZXR0aW5ncy5pc1ZpZGVvRGV2aWNlQ29ubmVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZXRpbmdJZD17cHJvcHMuY2FsZW5kYXJFdmVudC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vbVN0YXR1cyA9PT0gU3RhdHVzLlNZU1RFTV9FUlJPUiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdyZ2IoMjM1LCA2MywgMzMpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzMycHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogJzI0cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19IGNsYXNzTmFtZT17J2NlbnRlcmVkLWZsZXgtYm94J30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtTWVNURU1fRVJST1JfTUVTU0FHRX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tU3RhdHVzID09PSBTdGF0dXMuQ09OTkVDVElPTl9FUlJPUiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdyZ2IoMjM1LCA2MywgMzMpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzMycHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogJzI0cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19IGNsYXNzTmFtZT17J2NlbnRlcmVkLWZsZXgtYm94J30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7U1lTVEVNX0VSUk9SX01FU1NBR0V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cENhcGFiaWxpdGllcyAmJiBwYXJ0aWNpcGFudHMgJiYgY3VycmVudFVzZXJGdWxsTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChyb29tU3RhdHVzID09PSBTdGF0dXMuU0VTU0lPTiB8fCByb29tU3RhdHVzID09PSBTdGF0dXMuTE9CQlkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZDUm9vbVdvcmtzcGFjZSByZWY9e3ZjUm9vbVdvcmtzcGFjZVJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50cz17cGFydGljaXBhbnRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZT17bWVldGluZ1BhcnRpY2lwYW50R3JpZE1vZGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvTXV0ZWQ9e2F1ZGlvTXV0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb011dGVkPXt2aWRlb011dGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVldGluZ1RpdGxlPXtwcm9wcy5jYWxlbmRhckV2ZW50LnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRLZXk9e3Byb3BzLmNhbGVuZGFyRXZlbnQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlc0RvY3VtZW50SWQ9e3Byb3BzLmNhbGVuZGFyRXZlbnQubWludXRlc0RvY3VtZW50SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWV0aW5nSWQ9e3Byb3BzLmNhbGVuZGFyRXZlbnQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VXNlckZ1bGxOYW1lPXtjdXJyZW50VXNlckZ1bGxOYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25HcmlkU2V0dXA9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3NldFNpZGVCYXJUYWIoJ1Blb3BsZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVCYXJUYWI9e3NpZGVCYXJUYWJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tU3RhdHVzPXtyb29tU3RhdHVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNIb3N0PXtpc0hvc3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0NoYWlyUGVyc29uPXtpc0NoYWlyUGVyc29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRTY3JlZW5TaGFyaW5nPXtzdGFydFNjcmVlblNoYXJpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyaW5nSGFuZGxlcj17KHNvbWVvbmVTaGFyaW5nKSA9PiBzZXRTb21lb25lU2hhcmluZyhzb21lb25lU2hhcmluZyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN0b3BTaGFyaW5nPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2NyZWVuU2hhcmVkKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydFNjcmVlblNoYXJpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3RhcnRTaGFyaW5nPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2NyZWVuU2hhcmVkKHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRTY3JlZW5TaGFyaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFNob3dpbmdNaW51dGVzPXtzdGFydFNob3dpbmdNaW51dGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TdGFydFNob3dpbmdNaW51dGVzPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWludXRlc1Nob3duKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0U2hvd2luZ01pbnV0ZXMoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3RvcFNob3dpbmdNaW51dGVzPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWludXRlc1Nob3duKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydFNob3dpbmdNaW51dGVzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW51dGVzU2hvd249e21pbnV0ZXNTaG93bn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9QZXJtaXQ9e2F1dG9QZXJtaXR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHBDYXBhYmlsaXRpZXM9e3J0cENhcGFiaWxpdGllc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlblNoYXJlZD17c2NyZWVuU2hhcmVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVN0YXRlPXtkaXNwbGF5U3RhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmxvYWRTY3JlZW5TaGFyZURhdGE9e29ubG9hZFNjcmVlblNoYXJlRGF0YX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0PXthbGxVc2VyUGFydGljaXBhbnRzTGVmdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQXVkaW9EZXZpY2VDaGFuZ2U9eyhkZXZpY2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBdWRpb0Rpc2FibGVkKFV0aWxzLmlzTnVsbChkZXZpY2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkhvc3RBdWRpb011dGU9eyhwYXJ0aWNpcGFudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZU90aGVyUGFydGljaXBhbnRBVlNldHRpbmdzKHBhcnRpY2lwYW50LnVzZXJJZCwgdHJ1ZSwgcGFydGljaXBhbnQudmlkZW9NdXRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ib3N0VmlkZW9NdXRlPXsocGFydGljaXBhbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VPdGhlclBhcnRpY2lwYW50QVZTZXR0aW5ncyhwYXJ0aWNpcGFudC51c2VySWQsIHBhcnRpY2lwYW50LmF1ZGlvTXV0ZWQsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHNpZGVCYXJPcGVuICYmIHNpZGVCYXJUYWIgJiYgcm9vbVN0YXR1cyA9PT0gU3RhdHVzLlNFU1NJT04gJiZcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e25hcnJvd0xheW91dCA/ICdjbG9zYWJsZS1wYW5lbC1vdmVybGF5JyA6ICdjbG9zYWJsZS1wYW5lbC1jb250YWluZXInfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDbG9zYWJsZVBhbmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VIYW5kbGVyPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaWRlQmFyT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNpZGVCYXJUYWIobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17c2lkZUJhclRhYn1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2lkZUJhckNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVldGluZ0NoYXQ9e21lZXRpbmdDaGF0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0hvc3Q9e2lzSG9zdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDaGFpclBlcnNvbj17aXNDaGFpclBlcnNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiPXtzaWRlQmFyVGFifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWV0aW5nSWQ9e3Byb3BzLmNhbGVuZGFyRXZlbnQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50cz17cGFydGljaXBhbnRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkhvc3RBdWRpb011dGU9eyhwYXJ0aWNpcGFudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlT3RoZXJQYXJ0aWNpcGFudEFWU2V0dGluZ3MocGFydGljaXBhbnQudXNlcklkLCB0cnVlLCBwYXJ0aWNpcGFudC52aWRlb011dGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ib3N0VmlkZW9NdXRlPXsocGFydGljaXBhbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZU90aGVyUGFydGljaXBhbnRBVlNldHRpbmdzKHBhcnRpY2lwYW50LnVzZXJJZCwgcGFydGljaXBhbnQuYXVkaW9NdXRlZCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2xvc2FibGVQYW5lbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgcmlnaHQ6ICc0OHB4JyxcbiAgICAgICAgICAgICAgICBib3R0b206ICc0OHB4J1xuICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgPEFsZXJ0XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9eydkYW5nZXInfVxuICAgICAgICAgICAgICAgICAgICBzaG93PXtyZWNvbm5lY3RFcnJvciAhPT0gbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgZGlzbWlzc2libGVcbiAgICAgICAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0UmVjb25uZWN0RXJyb3IobnVsbCl9XG4gICAgICAgICAgICAgICAgICAgIGZhZGU9e3RydWV9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT17e21hcmdpbjogMH19PntyZWNvbm5lY3RFcnJvcn08L3A+XG4gICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICA8QWxlcnRcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD17J2luZm8nfVxuICAgICAgICAgICAgICAgICAgICBzaG93PXthY3Rpdml0eU1lc3NhZ2UgIT09IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIGZhZGU9e3RydWV9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT17e2NvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpJ319PnthY3Rpdml0eU1lc3NhZ2V9PC9wPlxuICAgICAgICAgICAgICAgIDwvQWxlcnQ+XG4gICAgICAgICAgICAgICAgPEFsZXJ0XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9eydpbmZvJ31cbiAgICAgICAgICAgICAgICAgICAgc2hvdz17Y2hhdE1lc3NhZ2UgIT09IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIGZhZGU9e3RydWV9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3Jvdyd9IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJCb3R0b206ICcxcHggc29saWQgd2hpdGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogJzhweCdcbiAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93J30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J0NIQVRfQlVCQkxFJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPXt7Y29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCknfX0+e2NoYXRTZW5kZXJ9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cnfSBzdHlsZT17e21hcmdpblRvcDogJzhweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sJ30+PHAgc3R5bGU9e3tjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSd9fT57Y2hhdE1lc3NhZ2V9PC9wPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgey8qSGlkZGVuIHZpZGVvIHRvIGNhcHR1cmUgcmVjb3JkaW5ncyovfVxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tkaXNwbGF5OiAnbm9uZSd9fT5cbiAgICAgICAgICAgICAgICAgICAgPHZpZGVvXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW49e2ZhbHNlfSBtdXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxheXNJbmxpbmUgYXV0b1BsYXkgcmVmPXtyZWNvcmRSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMjAwcHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzIwMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgIClcbiAgICAgICAgO1xufSkpO1xuXG5leHBvcnQgZGVmYXVsdCBUcmFpbmluZ1Jvb207XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNELElBQUFDLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBRCxz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
774
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX0ljb24iLCJfQXBwbGljYXRpb25NYW5hZ2VyIiwiX1Rvb2xiYXIiLCJfVkNSb29tIiwiX1ZDUm9vbVdvcmtzcGFjZSIsIl9WQ0V2ZW50VHlwZSIsIl9BbGVydCIsIl9WQ0V2ZW50TWFuYWdlciIsIl9Tb2NrZXRNYW5hZ2VyIiwiX0Nsb3NhYmxlUGFuZWwiLCJfU2lkZUJhckNvbnRlbnQiLCJfdXNlQ29udGFpbmVyV2lkdGgiLCJfVkNSb29tUmVjb3JkZXIiLCJfUmVzdFV0aWxzIiwiX01lZGlhIiwiX09ic2VydmFibGUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJTdGF0dXMiLCJMT0JCWSIsIlNFU1NJT04iLCJTRVNTSU9OX0VOREVEIiwiU1lTVEVNX0VSUk9SIiwiQ09OTkVDVElPTl9FUlJPUiIsIlNUUkVBTV9FUlJPUiIsImxvY2F0aW9uIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsIlRyYWluaW5nUm9vbSIsIlJlYWN0IiwibWVtbyIsImZvcndhcmRSZWYiLCJwcm9wcyIsInJlZiIsInJlY29yZFJlZiIsInVzZVJlZiIsImpvaW5lZFJlZiIsImhhc1VucmVhZENoYXRzIiwic2V0SGFzVW5yZWFkQ2hhdHMiLCJ1c2VTdGF0ZSIsInBhcnRpY2lwYW50cyIsInNldFBhcnRpY2lwYW50cyIsImhhbmRSYWlzZWQiLCJzZXRIYW5kUmFpc2VkIiwiaXNSZWNvcmRpbmciLCJzZXRJc1JlY29yZGluZyIsInZpZGVvRGlzYWJsZWQiLCJhdWRpb0Rpc2FibGVkIiwic2V0QXVkaW9EaXNhYmxlZCIsInZpZGVvTXV0ZWQiLCJzZXRWaWRlb011dGVkIiwiYXVkaW9NdXRlZCIsInNldEF1ZGlvTXV0ZWQiLCJkaXNwbGF5U3RhdGUiLCJzZXREaXNwbGF5U3RhdGUiLCJyb29tU3RhdHVzIiwic2V0Um9vbVN0YXR1cyIsInNvbWVvbmVTaGFyaW5nIiwic2V0U29tZW9uZVNoYXJpbmciLCJzaWRlQmFyT3BlbiIsInNldFNpZGVCYXJPcGVuIiwic2lkZUJhclRhYiIsInNldFNpZGVCYXJUYWIiLCJhbGxVc2VyUGFydGljaXBhbnRzTGVmdCIsInNldEFsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0IiwibG9iYnlXYWl0aW5nTGlzdCIsInNldExvYmJ5V2FpdGluZ0xpc3QiLCJpc0hvc3QiLCJzZXRJc0hvc3QiLCJpc0NoYWlyUGVyc29uIiwic2V0SXNDaGFpclBlcnNvbiIsIm1lZXRpbmdQYXJ0aWNpcGFudEdyaWRNb2RlIiwic2V0TWVldGluZ1BhcnRpY2lwYW50R3JpZE1vZGUiLCJhdXRvUGVybWl0Iiwic2V0QXV0b1Blcm1pdCIsImNhbGVuZGFyRXZlbnQiLCJhc2tUb0pvaW4iLCJydHBDYXBhYmlsaXRpZXMiLCJzZXRSdHBDYXBhYmlsaXRpZXMiLCJhY3Rpdml0eU1lc3NhZ2UiLCJzZXRBY3Rpdml0eU1lc3NhZ2UiLCJyZWNvbm5lY3RFcnJvciIsInNldFJlY29ubmVjdEVycm9yIiwicmVjb25uZWN0aW5nIiwic2V0UmVjb25uZWN0aW5nIiwib25sb2FkU2NyZWVuU2hhcmVEYXRhIiwic2V0T25sb2FkU2NyZWVuU2hhcmVEYXRhIiwiY2hhdE1lc3NhZ2UiLCJzZXRDaGF0TWVzc2FnZSIsImNoYXRTZW5kZXIiLCJzZXRDaGF0U2VuZGVyIiwiY3VycmVudFVzZXJGdWxsTmFtZSIsInNldEN1cnJlbnRVc2VyRnVsbE5hbWUiLCJldmVudEhhbmRsZXIiLCJtZWV0aW5nQ2hhdCIsInNldE1lZXRpbmdDaGF0Iiwic2NyZWVuU2hhcmVkIiwic2V0U2NyZWVuU2hhcmVkIiwic3RhcnRTY3JlZW5TaGFyaW5nIiwic2V0U3RhcnRTY3JlZW5TaGFyaW5nIiwicmFpc2VkSGFuZHMiLCJzZXRSYWlzZWRIYW5kcyIsIm1pbnV0ZXNTaG93biIsInNldE1pbnV0ZXNTaG93biIsInN0YXJ0U2hvd2luZ01pbnV0ZXMiLCJzZXRTdGFydFNob3dpbmdNaW51dGVzIiwidmNSb29tV29ya3NwYWNlUmVmIiwicm9vdFJlZiIsInJvb3RXaWR0aCIsInVzZUNvbnRhaW5lcldpZHRoIiwibmFycm93TGF5b3V0IiwiYXBpIiwibG9hZENoYXRzIiwiY29uc29sZSIsImxvZyIsImZldGNoQ2hhdHMiLCJoYW5kbGVyIiwiaWQiLCJvbiIsImV2ZW50VHlwZSIsImJlIiwiVkNFdmVudFR5cGUiLCJSRVFVRVNUX1RPX0pPSU5fTUVFVElORyIsIlVTRVJfSk9JTkVEIiwiYWRkVXNlciIsInBheWxvYWQiLCJVU0VSX0xFRlRfTUVFVElORyIsInJlbW92ZVVzZXIiLCJTT0NLRVRfRElTQ09OTkVDVCIsImN1cnJlbnQiLCJTT0NLRVRfQ09OTkVDVCIsInJlc3luY1Jvc3RlciIsIlBFRVJfRElTQ09OTkVDVCIsIkNSRUFURV9UUkFOU1BPUlRfRkFJTEVEIiwiQVVESU9fVklTVUFMX1NFVFRJTkdTX0NIQU5HRUQiLCJvbkFWU2V0dGluZ3NDaGFuZ2UiLCJTWVNURU1fRVZFTlQiLCJSQUlTRV9IQU5EIiwib25SYWlzZUhhbmQiLCJMT1dFUl9IQU5EIiwib25Mb3dlckhhbmQiLCJFTkRfU0VTU0lPTiIsImhhbmdVcCIsIlNIQVJJTkdfU1RPUFBFRCIsIkNIQVRfTUVTU0FHRSIsIm9uTWVzc2FnZSIsIkNPTlNVTUVSX1RSQU5TUE9SVF9GQUlMRUQiLCJTWVNURU1fQUxFUlQiLCJtZXNzYWdlIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiZ2V0VXNlckRldGFpbHMiLCJ1c2VybmFtZSIsInBhcnRpY2lwYW50IiwiaGFuZGxlTWVzc2FnZUFycml2ZWQiLCJuYW1lIiwiY29udGVudCIsInRyaW0iLCJ1c2VySWQiLCJjb25jYXQiLCJpbmRleCIsImZpbmRJbmRleCIsInAiLCJzcGxpY2UiLCJ1c2VFZmZlY3QiLCJzZW5kUmVxdWVzdCIsImdldENvbnRleHRSb290IiwicmVzcG9uc2UiLCJwcmV2IiwibWFwIiwidmNFdmVudE1hbmFnZXIiLCJmaXJlRXZlbnQiLCJlbWl0QVZTZXR0aW5nc0NoYW5nZSIsInNvY2tldE1hbmFnZXIiLCJlbWl0RXZlbnQiLCJtZWV0aW5nSWQiLCJjYXRjaCIsImVycm9yIiwiZXZlbnQiLCJtZXNzYWdlVGltZW91dCIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJhZGRVc2VyVG9QYXJ0aWNpcGFudHMiLCJ1c2VyIiwicmVjb25jaWxlUGFydGljaXBhbnRzIiwidXNlcnMiLCJsaXN0IiwidSIsImF2YXRhciIsInByb2R1Y2VycyIsIkFMTF9VU0VSUyIsInRoZW4iLCJkYXRhIiwidXNlcnNJblJvb20iLCJoYW5kbGVTaWRlYmFyVG9nZ2xlIiwicGFwZXIiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiZGV0YWlsIiwib3BlbiIsInN0eWxlIiwibWFyZ2luIiwiaGFuZGxlIiwic2V0dGluZ3MiLCJhdWRpb09uIiwidmlkZW9PbiIsIlV0aWxzIiwiaXNOdWxsIiwicm9vbUlkIiwicmVtb3ZlU3Vic2NyaXB0aW9ucyIsImFkZEFwcGxpY2F0aW9uQ29udGV4dFN1YnNjcmlwdGlvbiIsIm9uQ29udGV4dENoYW5nZSIsImNvbnRleHQiLCJuZXdWYWx1ZXMiLCJmaW5kIiwia2V5Iiwid2luZG93RGlzcGxheVN0YXRlIiwiaW5pdGlhbENvbnRleHQiLCJhZGRTdWJzY3JpcHRpb25zIiwiYWRkRXZlbnRMaXN0ZW5lciIsInNldEhhc0FjdGl2ZU1lZXRpbmciLCJzZXRBY3RpdmVNZWV0aW5nS2V5IiwiZXZlbnRNYW5hZ2VyIiwicmVtb3ZlQXBwbGljYXRpb25Db250ZXh0U3Vic2NyaXB0aW9ucyIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYXNBY3RpdmVNZWV0aW5nIiwibGVhdmVNZWV0aW5nIiwidXNlckZ1bGxOYW1lIiwiaG9zdCIsIm1lIiwiYXR0ZW5kZWVzIiwiYSIsImNoYWlyUGVyc29uSWQiLCJtZWRpYSIsImpvaW5NZWV0aW5nIiwiY3JlYXRlUGFydGljaXBhbnRzIiwic2hhcmVTY3JlZW5Qcm9kdWNlckRhdGEiLCJjaGFuZ2VPdGhlclBhcnRpY2lwYW50QVZTZXR0aW5ncyIsInJlbW92ZUxvYWRlZEdyYXBoIiwiZW5kU2Vzc2lvbiIsIm9wZW5Db25maXJtRGlhbG9nIiwicmVzdWx0IiwiZW1pdFN5c3RlbUV2ZW50IiwidG9QYXJ0aWNpcGFudElkcyIsInVuZGVmaW5lZCIsInBhcnRpY2lwYW50SWRzIiwic3lzdGVtRXZlbnRUeXBlIiwicmVjaXBpZW50cyIsInJlY29yZE1lZXRpbmciLCJtZWRpYVJlY29yZGVyIiwiaW5pdCIsInRpdGxlIiwicmVjb3JkaW5nIiwic3RvcFJlY29yZGluZ01lZXRpbmciLCJwdWJsaXNoIiwiY3JlYXRlRWxlbWVudCIsIndpZHRoIiwiaGVpZ2h0IiwiYm9yZGVyIiwiYm9yZGVyUmFkaXVzIiwicG9zaXRpb24iLCJjbGFzc05hbWUiLCJtaW5XaWR0aCIsImJvcmRlckJvdHRvbSIsIm9uTXV0ZVZpZGVvIiwibXV0ZWQiLCJvbk11dGVBdWRpbyIsImVuZENhbGwiLCJzaG93Q2hhdCIsInNob3dQZW9wbGUiLCJzaGFyZVNjcmVlbiIsInN0b3BTaGFyZVNjcmVlbiIsInNob3dNaW51dGVzIiwiaGlkZU1pbnV0ZXMiLCJzYXZlTWludXRlcyIsInN0b3BSZWNvcmRpbmciLCJyYWlzZUhhbmQiLCJsb3dlckhhbmQiLCJpc0F1ZGlvRGV2aWNlQ29ubmVjdGVkIiwiaXNWaWRlb0RldmljZUNvbm5lY3RlZCIsImNvbG9yIiwicGFkZGluZyIsImZvbnRTaXplIiwiU1lTVEVNX0VSUk9SX01FU1NBR0UiLCJtb2RlIiwidmlld0lkIiwibWVldGluZ1RpdGxlIiwiZXZlbnRLZXkiLCJtaW51dGVzRG9jdW1lbnRJZCIsIm9uR3JpZFNldHVwIiwic2hhcmluZ0hhbmRsZXIiLCJvblN0b3BTaGFyaW5nIiwib25TdGFydFNoYXJpbmciLCJvblN0YXJ0U2hvd2luZ01pbnV0ZXMiLCJvblN0b3BTaG93aW5nTWludXRlcyIsIm9uQXVkaW9EZXZpY2VDaGFuZ2UiLCJkZXZpY2UiLCJvbkhvc3RBdWRpb011dGUiLCJvbkhvc3RWaWRlb011dGUiLCJjbG9zZUhhbmRsZXIiLCJ0YWIiLCJyaWdodCIsImJvdHRvbSIsInZhcmlhbnQiLCJzaG93IiwiZmFkZSIsImRpc21pc3NpYmxlIiwib25DbG9zZSIsInBhZGRpbmdCb3R0b20iLCJtYXJnaW5Ub3AiLCJGcmFnbWVudCIsImRpc3BsYXkiLCJoaWRkZW4iLCJwbGF5c0lubGluZSIsImF1dG9QbGF5IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21lZGlhL1RyYWluaW5nUm9vbS5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0LCB7RnJhZ21lbnQsIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4uLy4uL1V0aWxzJztcbmltcG9ydCAnLi9WaWRlby5jc3MnO1xuaW1wb3J0IEljb24gZnJvbSAnLi4vSWNvbic7XG5pbXBvcnQgYXBwbGljYXRpb25NYW5hZ2VyIGZyb20gJy4uLy4uL0FwcGxpY2F0aW9uTWFuYWdlcic7XG5pbXBvcnQgVG9vbGJhciBmcm9tICcuL1Rvb2xiYXInO1xuaW1wb3J0IHtTWVNURU1fRVJST1JfTUVTU0FHRX0gZnJvbSAnLi9WQ1Jvb20nO1xuaW1wb3J0IFZDUm9vbVdvcmtzcGFjZSBmcm9tICcuL1ZDUm9vbVdvcmtzcGFjZSc7XG5pbXBvcnQge1ZDRXZlbnRUeXBlfSBmcm9tICcuL1ZDRXZlbnRUeXBlJztcbmltcG9ydCBBbGVydCBmcm9tICdyZWFjdC1ib290c3RyYXAvQWxlcnQnO1xuaW1wb3J0IHZjRXZlbnRNYW5hZ2VyIGZyb20gJy4vVkNFdmVudE1hbmFnZXInO1xuaW1wb3J0IHNvY2tldE1hbmFnZXIgZnJvbSAnLi4vU29ja2V0TWFuYWdlcic7XG5pbXBvcnQgQ2xvc2FibGVQYW5lbCBmcm9tICcuL0Nsb3NhYmxlUGFuZWwnO1xuaW1wb3J0IFNpZGVCYXJDb250ZW50IGZyb20gJy4vU2lkZUJhckNvbnRlbnQnO1xuaW1wb3J0IHVzZUNvbnRhaW5lcldpZHRoIGZyb20gJy4uLy4uL2hvb2tzL3VzZUNvbnRhaW5lcldpZHRoJztcbmltcG9ydCBtZWRpYVJlY29yZGVyIGZyb20gJy4vVkNSb29tUmVjb3JkZXInO1xuaW1wb3J0IHtzZW5kUmVxdWVzdH0gZnJvbSAnLi4vLi4vUmVzdFV0aWxzJztcbmltcG9ydCBtZWRpYSBmcm9tICcuLi8uLi9qcy9NZWRpYSc7XG5pbXBvcnQgZXZlbnRNYW5hZ2VyIGZyb20gJy4uLy4uL2V2ZW50L09ic2VydmFibGUnO1xuXG5jb25zdCBTdGF0dXMgPSB7XG4gICAgTE9CQlk6ICdMT0JCWScsXG4gICAgU0VTU0lPTjogJ1NFU1NJT04nLFxuICAgIFNFU1NJT05fRU5ERUQ6ICdTRVNTSU9OX0VOREVEJyxcbiAgICBTWVNURU1fRVJST1I6ICdTWVNURU1fRVJST1InLFxuICAgIENPTk5FQ1RJT05fRVJST1I6ICdDT05ORUNUSU9OX0VSUk9SJyxcbiAgICBTVFJFQU1fRVJST1I6ICdTVFJFQU1fRVJST1InXG59O1xuXG5jb25zdCBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG5jb25zdCBUcmFpbmluZ1Jvb20gPSBSZWFjdC5tZW1vKFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHtcblxuICAgIGNvbnN0IHJlY29yZFJlZiA9IHVzZVJlZigpO1xuICAgIC8vIFRydWUgb25jZSB3ZSd2ZSBzdWNjZXNzZnVsbHkgam9pbmVkIOKAlCBsZXRzIFNPQ0tFVF9DT05ORUNUIGRpc3Rpbmd1aXNoIGEgcmVjb25uZWN0IGZyb20gdGhlXG4gICAgLy8gaW5pdGlhbCBjb25uZWN0IHNvIHdlIG9ubHkgcmVzeW5jIHRoZSByb3N0ZXIgb24gYW4gYWN0dWFsIHJlY29ubmVjdC5cbiAgICBjb25zdCBqb2luZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IFtoYXNVbnJlYWRDaGF0cywgc2V0SGFzVW5yZWFkQ2hhdHNdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3BhcnRpY2lwYW50cywgc2V0UGFydGljaXBhbnRzXSA9IHVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbaGFuZFJhaXNlZCwgc2V0SGFuZFJhaXNlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2lzUmVjb3JkaW5nLCBzZXRJc1JlY29yZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3ZpZGVvRGlzYWJsZWRdID0gdXNlU3RhdGUocHJvcHMudmlkZW9EaXNhYmxlZCk7XG4gICAgY29uc3QgW2F1ZGlvRGlzYWJsZWQsIHNldEF1ZGlvRGlzYWJsZWRdID0gdXNlU3RhdGUocHJvcHMuYXVkaW9EaXNhYmxlZCk7XG4gICAgY29uc3QgW3ZpZGVvTXV0ZWQsIHNldFZpZGVvTXV0ZWRdID0gdXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW2F1ZGlvTXV0ZWQsIHNldEF1ZGlvTXV0ZWRdID0gdXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW2Rpc3BsYXlTdGF0ZSwgc2V0RGlzcGxheVN0YXRlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtyb29tU3RhdHVzLCBzZXRSb29tU3RhdHVzXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtzb21lb25lU2hhcmluZywgc2V0U29tZW9uZVNoYXJpbmddID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3NpZGVCYXJPcGVuLCBzZXRTaWRlQmFyT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3NpZGVCYXJUYWIsIHNldFNpZGVCYXJUYWJdID0gdXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IFthbGxVc2VyUGFydGljaXBhbnRzTGVmdCwgc2V0QWxsVXNlclBhcnRpY2lwYW50c0xlZnRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtsb2JieVdhaXRpbmdMaXN0LCBzZXRMb2JieVdhaXRpbmdMaXN0XSA9IHVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbaXNIb3N0LCBzZXRJc0hvc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc0NoYWlyUGVyc29uLCBzZXRJc0NoYWlyUGVyc29uXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbbWVldGluZ1BhcnRpY2lwYW50R3JpZE1vZGUsIHNldE1lZXRpbmdQYXJ0aWNpcGFudEdyaWRNb2RlXSA9IHVzZVN0YXRlKCdERUZBVUxUJyk7XG4gICAgY29uc3QgW2F1dG9QZXJtaXQsIHNldEF1dG9QZXJtaXRdID0gdXNlU3RhdGUoIXByb3BzLmNhbGVuZGFyRXZlbnQuYXNrVG9Kb2luKTtcbiAgICBjb25zdCBbcnRwQ2FwYWJpbGl0aWVzLCBzZXRSdHBDYXBhYmlsaXRpZXNdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2FjdGl2aXR5TWVzc2FnZSwgc2V0QWN0aXZpdHlNZXNzYWdlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIC8vIFBlcnNpc3RlbnQsIGFjdGlvbmFibGUgZXJyb3IgYmFubmVyIChlLmcuIG1lZGlhIHJlY29ubmVjdGlvbiBnYXZlIHVwKS5cbiAgICBjb25zdCBbcmVjb25uZWN0RXJyb3IsIHNldFJlY29ubmVjdEVycm9yXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIC8vIFRyYW5zaWVudCBcInNvY2tldCBkcm9wcGVkLCByZWNvbm5lY3RpbmdcIiBiYW5uZXIgKGNsZWFyZWQgb24gcmVjb25uZWN0KS5cbiAgICBjb25zdCBbcmVjb25uZWN0aW5nLCBzZXRSZWNvbm5lY3RpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtvbmxvYWRTY3JlZW5TaGFyZURhdGEsIHNldE9ubG9hZFNjcmVlblNoYXJlRGF0YV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbY2hhdE1lc3NhZ2UsIHNldENoYXRNZXNzYWdlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtjaGF0U2VuZGVyLCBzZXRDaGF0U2VuZGVyXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtjdXJyZW50VXNlckZ1bGxOYW1lLCBzZXRDdXJyZW50VXNlckZ1bGxOYW1lXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtldmVudEhhbmRsZXJdID0gdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFttZWV0aW5nQ2hhdCwgc2V0TWVldGluZ0NoYXRdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3NjcmVlblNoYXJlZCwgc2V0U2NyZWVuU2hhcmVkXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtzdGFydFNjcmVlblNoYXJpbmcsIHNldFN0YXJ0U2NyZWVuU2hhcmluZ10gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3JhaXNlZEhhbmRzLCBzZXRSYWlzZWRIYW5kc10gPSB1c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW21pbnV0ZXNTaG93biwgc2V0TWludXRlc1Nob3duXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc3RhcnRTaG93aW5nTWludXRlcywgc2V0U3RhcnRTaG93aW5nTWludXRlc10gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdmNSb29tV29ya3NwYWNlUmVmID0gdXNlUmVmKCk7XG5cbiAgICAvLyBMYXlvdXQgcmVzcG9uZHMgdG8gdGhlIHJvb20ncyBvd24gd2lkdGggKGl0IGxpdmVzIGluc2lkZSBXaW5kb3dWaWV3UG9ydCxcbiAgICAvLyBzbyB2aWV3cG9ydCBicmVha3BvaW50cyBhcmUgd3JvbmcpLiBCZWxvdyB0aGlzIHRoZSBzaWRlYmFyIG92ZXJsYXlzIHRoZVxuICAgIC8vIHdvcmtzcGFjZSBpbnN0ZWFkIG9mIGRvY2tpbmcgYmVzaWRlIGl0ICh3aGljaCBzcXVhc2hlZCB0aGUgdmlkZW8pLlxuICAgIGNvbnN0IFtyb290UmVmLCByb290V2lkdGhdID0gdXNlQ29udGFpbmVyV2lkdGgoKTtcbiAgICBjb25zdCBuYXJyb3dMYXlvdXQgPSByb290V2lkdGggPiAwICYmIHJvb3RXaWR0aCA8IDY4MDtcblxuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvYWRDaGF0cyAoKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0xPQURJTkcgQ0hBVFMnKTtcbiAgICAgICAgICAgICAgICBmZXRjaENoYXRzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVyID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnbWVldGluZy1yb29tLScgKyBwcm9wcy5jYWxlbmRhckV2ZW50LmlkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBwYXJ0aWNpcGFudHMoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnRpY2lwYW50cztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbjogKGV2ZW50VHlwZSwgYmUpID0+IHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50VHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLlJFUVVFU1RfVE9fSk9JTl9NRUVUSU5HOlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuVVNFUl9KT0lORUQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRVc2VyKGJlLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuVVNFUl9MRUZUX01FRVRJTkc6XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVVc2VyKGJlLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuU09DS0VUX0RJU0NPTk5FQ1Q6XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTb2NrZXQgZHJvcHBlZCDigJQgdGVsbCB0aGUgdXNlci4gVGhlIHJvc3RlciBpcyByZWNvbmNpbGVkIG9uIHJlY29ubmVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqb2luZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlY29ubmVjdGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLlNPQ0tFVF9DT05ORUNUOlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBhY3Qgb24gYSBSRS1jb25uZWN0IChpbml0aWFsIGNvbm5lY3QgaXMgaGFuZGxlZCBieSB0aGUgam9pbiBlZmZlY3QpLlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpvaW5lZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVjb25uZWN0aW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN5bmNSb3N0ZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLlBFRVJfRElTQ09OTkVDVDpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgcGVlci1sZXZlbCBkaXNjb25uZWN0IHNpZ25hbCDigJQgcmVjb25jaWxlIHRoZSByb3N0ZXIgZnJvbSB0aGUgc2VydmVyIHRydXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyByYXRoZXIgdGhhbiB0cnVzdGluZyB3ZSBnb3QgZXZlcnkgVVNFUl9MRUZUIGRlbHRhLlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzeW5jUm9zdGVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5DUkVBVEVfVFJBTlNQT1JUX0ZBSUxFRDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlY29ubmVjdEVycm9yKCdBIGNvbm5lY3Rpb24gcHJvYmxlbSBvY2N1cnJlZC4gUGxlYXNlIHJlam9pbiB0aGUgbWVldGluZy4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLkFVRElPX1ZJU1VBTF9TRVRUSU5HU19DSEFOR0VEOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25BVlNldHRpbmdzQ2hhbmdlKGJlPy5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLlNZU1RFTV9FVkVOVDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLlJBSVNFX0hBTkQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBvblJhaXNlSGFuZChiZS5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLkxPV0VSX0hBTkQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkxvd2VySGFuZChiZS5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLkVORF9TRVNTSU9OOlxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZ1VwKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5TSEFSSU5HX1NUT1BQRUQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTY3JlZW5TaGFyZWQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRTY3JlZW5TaGFyaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLkNIQVRfTUVTU0FHRTpcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVzc2FnZShiZS5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLkNPTlNVTUVSX1RSQU5TUE9SVF9GQUlMRUQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5nVXAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDb25uZWN0aW9uIGVycm9yIC0gUGxlYXNlIGNoZWNrIHlvdXIgbmV0d29yayBjb25uZWN0aW9uIGFuZCByZS1qb2luIHRoZSBtZWV0aW5nJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5TWVNURU1fQUxFUlQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSZWNvbm5lY3RFcnJvcihiZS5wYXlsb2FkICYmIGJlLnBheWxvYWQubWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYmUucGF5bG9hZC5tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnQSBjb25uZWN0aW9uIHByb2JsZW0gb2NjdXJyZWQuIFBsZWFzZSByZWpvaW4gdGhlIG1lZXRpbmcuJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGNvbnN0IG9uTWVzc2FnZSA9IChtZXNzYWdlKSA9PiB7XG4gICAgICAgIGlmKHNpZGVCYXJUYWIgIT09ICdDaGF0Jykge1xuICAgICAgICAgICAgbGV0IGNoYXRNZXNzYWdlID0gbWVzc2FnZS5jaGF0TWVzc2FnZTtcbiAgICAgICAgICAgIGlmIChhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSAhPT0gY2hhdE1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVNZXNzYWdlQXJyaXZlZCh7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoYXRNZXNzYWdlLnBhcnRpY2lwYW50Lm5hbWUgKyBcIiBcIiArIGNoYXRNZXNzYWdlLnBhcnRpY2lwYW50Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICsgKGNoYXRNZXNzYWdlLmNvbnRlbnQgJiYgY2hhdE1lc3NhZ2UuY29udGVudC50cmltKCkubGVuZ3RoID4gMCA/IFwiIC0gXCIgKyBjaGF0TWVzc2FnZS5jb250ZW50IDogJycpXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBzZXRIYXNVbnJlYWRDaGF0cyh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9uUmFpc2VIYW5kID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgcmFpc2VkSGFuZHMucHVzaChwYXlsb2FkLnVzZXJJZCk7XG4gICAgICAgIHNldFJhaXNlZEhhbmRzKFtdLmNvbmNhdChyYWlzZWRIYW5kcykpO1xuICAgIH07XG5cbiAgICBjb25zdCBvbkxvd2VySGFuZCA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChyYWlzZWRIYW5kcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgaW5kZXggPSByYWlzZWRIYW5kcy5maW5kSW5kZXgoKHApID0+IHAgPT09IHBheWxvYWQudXNlcklkKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgcmFpc2VkSGFuZHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNldFJhaXNlZEhhbmRzKFtdLmNvbmNhdChyYWlzZWRIYW5kcykpO1xuICAgIH07XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAobWVldGluZ0NoYXQpIHtcbiAgICAgICAgICAgIHNldFNpZGVCYXJUYWIoJ0NoYXQnKTtcbiAgICAgICAgICAgIHNldFNpZGVCYXJPcGVuKHRydWUpO1xuICAgICAgICAgICAgc2V0SGFzVW5yZWFkQ2hhdHMoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfSwgW21lZXRpbmdDaGF0XSk7XG5cbiAgICBjb25zdCBmZXRjaENoYXRzID0gKCkgPT4ge1xuICAgICAgICBzZW5kUmVxdWVzdChgJHtsb2NhdGlvbiArICcvJyArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9jYWxlbmRhci9hcGkvdjEvY2hhdC9mZXRjaE1lZXRpbmdDaGF0LyR7cHJvcHMuY2FsZW5kYXJFdmVudC5pZH1gLCAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdGRVRDSCBDSEFUIFJFU1BPTlNFIDogJywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmlkKSB7XG4gICAgICAgICAgICAgICAgc2V0TWVldGluZ0NoYXQocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAoZSkgPT4ge1xuXG4gICAgICAgIH0sIHRydWUsIGZhbHNlKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25BVlNldHRpbmdzQ2hhbmdlID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYocGF5bG9hZCkge1xuICAgICAgICAgICAgLy8gSW1tdXRhYmxlIHVwZGF0ZTogcHJvZHVjZSBhIE5FVyBwYXJ0aWNpcGFudCBvYmplY3Qgc28gdGhlIHRpbGUgcmUtcmVuZGVycyB3aXRoIHRoZVxuICAgICAgICAgICAgLy8gZnJlc2ggbXV0ZSBzdGF0ZSAoaW4tcGxhY2UgbXV0YXRpb24gY291bGQgYmUgbWlzc2VkIG9uIGEgZ3JpZCByZXNodWZmbGUvcmVtb3VudCkuXG4gICAgICAgICAgICBzZXRQYXJ0aWNpcGFudHMoKHByZXYpID0+IHByZXYubWFwKChwKSA9PlxuICAgICAgICAgICAgICAgIHAudXNlcklkID09PSBwYXlsb2FkLnVzZXJJZFxuICAgICAgICAgICAgICAgICAgICA/IHsuLi5wLCBhdWRpb011dGVkOiBwYXlsb2FkLmF1ZGlvTXV0ZWQsIHZpZGVvTXV0ZWQ6IHBheWxvYWQudmlkZW9NdXRlZH1cbiAgICAgICAgICAgICAgICAgICAgOiBwKSk7XG5cbiAgICAgICAgICAgIHZjRXZlbnRNYW5hZ2VyLmZpcmVFdmVudChWQ0V2ZW50VHlwZS5BVURJT19WSVNVQUxfU0VUVElOR1NfQ0hBTkdFRCwgcGF5bG9hZCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZW1pdEFWU2V0dGluZ3NDaGFuZ2UoKSB7XG4gICAgICAgIHNvY2tldE1hbmFnZXIuZW1pdEV2ZW50KFZDRXZlbnRUeXBlLkFVRElPX1ZJU1VBTF9TRVRUSU5HU19DSEFOR0VELCB7XG4gICAgICAgICAgICBtZWV0aW5nSWQ6IHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsXG4gICAgICAgICAgICB1c2VySWQ6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lLFxuICAgICAgICAgICAgYXVkaW9NdXRlZDogYXVkaW9NdXRlZCxcbiAgICAgICAgICAgIHZpZGVvTXV0ZWQ6IHZpZGVvTXV0ZWRcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChhdWRpb011dGVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBvbkFWU2V0dGluZ3NDaGFuZ2Uoe1xuICAgICAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgdmlkZW9NdXRlZCxcbiAgICAgICAgICAgICAgICBhdWRpb011dGVkXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZW1pdEFWU2V0dGluZ3NDaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgIH0sIFthdWRpb011dGVkXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAodmlkZW9NdXRlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgb25BVlNldHRpbmdzQ2hhbmdlKHtcbiAgICAgICAgICAgICAgICB1c2VySWQ6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lLFxuICAgICAgICAgICAgICAgIHZpZGVvTXV0ZWQsXG4gICAgICAgICAgICAgICAgYXVkaW9NdXRlZFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGVtaXRBVlNldHRpbmdzQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICB9LCBbdmlkZW9NdXRlZF0pO1xuXG4gICAgY29uc3QgaGFuZGxlTWVzc2FnZUFycml2ZWQgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKHJvb21TdGF0dXMgPT09IFN0YXR1cy5TRVNTSU9OICYmIGV2ZW50Lm1lc3NhZ2UgJiYgZXZlbnQubWVzc2FnZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzZXRBY3Rpdml0eU1lc3NhZ2UoZXZlbnQubWVzc2FnZSk7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldEFjdGl2aXR5TWVzc2FnZShudWxsKTtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQobWVzc2FnZVRpbWVvdXQpO1xuICAgICAgICAgICAgfSwgNDAwMCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgYWRkVXNlciA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdBREQgVVNFUiA6ICcsIHBheWxvYWQpO1xuICAgICAgICBhZGRVc2VyVG9QYXJ0aWNpcGFudHMocGF5bG9hZC51c2VyKTtcbiAgICAgICAgc2V0QWxsVXNlclBhcnRpY2lwYW50c0xlZnQoZmFsc2UpO1xuICAgICAgICBpZiAocm9vbVN0YXR1cyA9PT0gU3RhdHVzLkxPQkJZKSB7XG4gICAgICAgICAgICBzZXRSb29tU3RhdHVzKFN0YXR1cy5TRVNTSU9OKTtcbiAgICAgICAgICAgIHNldFNpZGVCYXJUYWIoJ1Blb3BsZScpO1xuICAgICAgICAgICAgc2V0U2lkZUJhck9wZW4odHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBoYW5kbGVNZXNzYWdlQXJyaXZlZCh7XG4gICAgICAgICAgICBtZXNzYWdlOiBwYXlsb2FkLnVzZXIubmFtZSArICcgaGFzIGpvaW5lZCdcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlbW92ZVVzZXIgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAocHJvcHMuY2FsZW5kYXJFdmVudC5pZCA9PT0gcGF5bG9hZC5tZWV0aW5nSWQpIHtcbiAgICAgICAgICAgIC8vIEltbXV0YWJsZSBmdW5jdGlvbmFsIHVwZGF0ZSBzbyBjb25jdXJyZW50IGRlbHRhcyBjYW4ndCBjbG9iYmVyIGVhY2ggb3RoZXIgKGxvc3QtdXBkYXRlXG4gICAgICAgICAgICAvLyByYWNlKS4gVGhlIFwiZXZlcnlvbmUgbGVmdCDihpIgTE9CQllcIiB0cmFuc2l0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIHBhcnRpY2lwYW50cyBlZmZlY3QgYmVsb3cuXG4gICAgICAgICAgICBzZXRQYXJ0aWNpcGFudHMoKHByZXYpID0+IHByZXYuZmlsdGVyKChwKSA9PiBwLnVzZXJJZCAhPT0gcGF5bG9hZC51c2VySWQpKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBSZWNvbmNpbGUgdGhlIHBhcnRpY2lwYW50IGxpc3QgV0hPTEVTQUxFIGZyb20gdGhlIHNlcnZlcidzIGF1dGhvcml0YXRpdmUgcm9zdGVyLiBUaGlzIGlzIHRoZVxuICAgIC8vIHJlY29uY2lsaWF0aW9uIHBhdGggdGhhdCB3YXMgZW50aXJlbHkgbWlzc2luZzogaW5jcmVtZW50YWwgVVNFUl9KT0lORUQvVVNFUl9MRUZUIGRlbHRhcyBhbG9uZVxuICAgIC8vIHBlcm1hbmVudGx5IGRlc3luYyBhIGNsaWVudCB0aGF0IGRyb3BzIG9uZS4gRHJpdmVuIGJ5IHRoZSBQaGFzZS1DIEFMTF9VU0VSUyBzZXJ2ZXIgaGFuZGxlci5cbiAgICBjb25zdCByZWNvbmNpbGVQYXJ0aWNpcGFudHMgPSAodXNlcnMpID0+IHtcbiAgICAgICAgY29uc3QgbGlzdCA9ICh1c2VycyB8fCBbXSkubWFwKCh1KSA9PiAoe1xuICAgICAgICAgICAgdXNlcklkOiB1LnVzZXJJZCxcbiAgICAgICAgICAgIG5hbWU6IHUubmFtZSxcbiAgICAgICAgICAgIGF2YXRhcjogdS5hdmF0YXIsXG4gICAgICAgICAgICBhdWRpb011dGVkOiB1LmF1ZGlvTXV0ZWQsXG4gICAgICAgICAgICB2aWRlb011dGVkOiB1LnZpZGVvTXV0ZWQsXG4gICAgICAgICAgICBwcm9kdWNlcnM6IHUucHJvZHVjZXJzXG4gICAgICAgIH0pKTtcblxuICAgICAgICBzZXRQYXJ0aWNpcGFudHMobGlzdCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3luY1Jvc3RlciA9ICgpID0+IHtcbiAgICAgICAgc29ja2V0TWFuYWdlci5lbWl0RXZlbnQoVkNFdmVudFR5cGUuQUxMX1VTRVJTLCB7XG4gICAgICAgICAgICBtZWV0aW5nSWQ6IHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsXG4gICAgICAgICAgICB1c2VySWQ6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lXG4gICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdST1NURVIgUkVTWU5DIDonLCByZXNwb25zZS5kYXRhLnVzZXJzSW5Sb29tKTtcbiAgICAgICAgICAgICAgICByZWNvbmNpbGVQYXJ0aWNpcGFudHMocmVzcG9uc2UuZGF0YS51c2Vyc0luUm9vbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUm9zdGVyIHJlc3luYyBmYWlsZWQnLCBlKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8vIFNpbmdsZSBvd25lciBvZiB0aGUgXCJhbGwgcGFydGljaXBhbnRzIGxlZnRcIiAvIHJvb20tc3RhdHVzIHRyYW5zaXRpb24sIGRlcml2ZWQgZnJvbSB0aGUgbGlzdFxuICAgIC8vICh3b3JrcyBubyBtYXR0ZXIgd2hpY2ggcGF0aCBtdXRhdGVkIHBhcnRpY2lwYW50czogZGVsdGEsIHJlY29uY2lsZSwgb3IgaW5pdGlhbCBqb2luKS5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAocm9vbVN0YXR1cyA9PT0gU3RhdHVzLlNFU1NJT04gJiYgcGFydGljaXBhbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgc2V0QWxsVXNlclBhcnRpY2lwYW50c0xlZnQodHJ1ZSk7XG4gICAgICAgICAgICBzZXRSb29tU3RhdHVzKFN0YXR1cy5MT0JCWSk7XG4gICAgICAgIH0gZWxzZSBpZiAocGFydGljaXBhbnRzLmxlbmd0aCA+IDAgJiYgYWxsVXNlclBhcnRpY2lwYW50c0xlZnQpIHtcbiAgICAgICAgICAgIHNldEFsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH0sIFtwYXJ0aWNpcGFudHNdKTtcblxuICAgIGNvbnN0IGhhbmRsZVNpZGViYXJUb2dnbGUgPSAoZSkgPT4ge1xuICAgICAgICBsZXQgcGFwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVldGluZ0RpYWxvZ1BhcGVyJyk7XG4gICAgICAgIGlmIChlLmRldGFpbC5vcGVuKSB7XG4gICAgICAgICAgICBwYXBlci5zdHlsZS5tYXJnaW4gPSAnNTRweCAwIDAgMTM2cHgnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFwZXIuc3R5bGUubWFyZ2luID0gJzU0cHggMCAwIDAnO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGV2ZW50SGFuZGxlci5hcGkgPSBoYW5kbGVyKCk7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICB9KTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChwcm9wcy5zZXR0aW5ncykge1xuICAgICAgICAgICAgc2V0QXVkaW9NdXRlZCghcHJvcHMuc2V0dGluZ3MuYXVkaW9Pbik7XG4gICAgICAgICAgICBzZXRWaWRlb011dGVkKCFwcm9wcy5zZXR0aW5ncy52aWRlb09uKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy5zZXR0aW5nc10pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwoaGFuZFJhaXNlZCkpIHtcbiAgICAgICAgICAgIGlmIChoYW5kUmFpc2VkKSB7XG4gICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5lbWl0RXZlbnQoVkNFdmVudFR5cGUuUkFJU0VfSEFORCwge1xuICAgICAgICAgICAgICAgICAgICByb29tSWQ6IHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5lbWl0RXZlbnQoVkNFdmVudFR5cGUuTE9XRVJfSEFORCwge1xuICAgICAgICAgICAgICAgICAgICByb29tSWQ6IHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgIH0sIFtoYW5kUmFpc2VkXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2Y0V2ZW50TWFuYWdlci5yZW1vdmVTdWJzY3JpcHRpb25zKGV2ZW50SGFuZGxlcik7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5hZGRBcHBsaWNhdGlvbkNvbnRleHRTdWJzY3JpcHRpb24oe1xuICAgICAgICAgICAgaGFuZGxlcjoge1xuICAgICAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0cmFpbmluZy1yb29tJztcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uQ29udGV4dENoYW5nZTogKGNvbnRleHQsIG5ld1ZhbHVlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMobmV3VmFsdWVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoKGtleSkgPT4ga2V5ID09PSAnd2luZG93RGlzcGxheVN0YXRlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldERpc3BsYXlTdGF0ZShuZXdWYWx1ZXMud2luZG93RGlzcGxheVN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKChpbml0aWFsQ29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldERpc3BsYXlTdGF0ZShpbml0aWFsQ29udGV4dCA/IGluaXRpYWxDb250ZXh0LndpbmRvd0Rpc3BsYXlTdGF0ZSA6ICdNQVhJTUlaRUQnKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHZjRXZlbnRNYW5hZ2VyLmFkZFN1YnNjcmlwdGlvbnMoZXZlbnRIYW5kbGVyLCBWQ0V2ZW50VHlwZS5SRVFVRVNUX1RPX0pPSU5fTUVFVElORywgVkNFdmVudFR5cGUuVVNFUl9KT0lORUQsIFZDRXZlbnRUeXBlLlVTRVJfTEVGVF9NRUVUSU5HLFxuICAgICAgICAgICAgVkNFdmVudFR5cGUuU1lTVEVNX0VWRU5ULCBWQ0V2ZW50VHlwZS5TT0NLRVRfQ09OTkVDVCwgVkNFdmVudFR5cGUuU09DS0VUX0RJU0NPTk5FQ1QsIFZDRXZlbnRUeXBlLlJBSVNFX0hBTkQsIFZDRXZlbnRUeXBlLkxPV0VSX0hBTkQsXG4gICAgICAgICAgICBWQ0V2ZW50VHlwZS5QRUVSX0RJU0NPTk5FQ1QsIFZDRXZlbnRUeXBlLkNPTlNVTUVSX1RSQU5TUE9SVF9GQUlMRUQsIFZDRXZlbnRUeXBlLkNSRUFURV9UUkFOU1BPUlRfRkFJTEVELFxuICAgICAgICAgICAgVkNFdmVudFR5cGUuU0hBUklOR19TVE9QUEVELCBWQ0V2ZW50VHlwZS5FTkRfU0VTU0lPTiwgVkNFdmVudFR5cGUuQ0hBVF9NRVNTQUdFLCBWQ0V2ZW50VHlwZS5BVURJT19WSVNVQUxfU0VUVElOR1NfQ0hBTkdFRCxcbiAgICAgICAgICAgIFZDRXZlbnRUeXBlLlNZU1RFTV9BTEVSVCk7XG5cbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2lkZUJhclRvZ2dsZUV2ZW50JywgaGFuZGxlU2lkZWJhclRvZ2dsZSk7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRIYXNBY3RpdmVNZWV0aW5nKHRydWUpO1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0QWN0aXZlTWVldGluZ0tleShwcm9wcy5jYWxlbmRhckV2ZW50LmtleSk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICB2Y0V2ZW50TWFuYWdlci5yZW1vdmVTdWJzY3JpcHRpb25zKGV2ZW50SGFuZGxlcik7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIucmVtb3ZlQXBwbGljYXRpb25Db250ZXh0U3Vic2NyaXB0aW9ucygndHJhaW5pbmctcm9vbScpO1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2lkZUJhclRvZ2dsZUV2ZW50JywgaGFuZGxlU2lkZWJhclRvZ2dsZSk7XG5cbiAgICAgICAgICAgIGlmIChhcHBsaWNhdGlvbk1hbmFnZXIuaGFzQWN0aXZlTWVldGluZygpKSB7XG4gICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5sZWF2ZU1lZXRpbmcocHJvcHMuY2FsZW5kYXJFdmVudC5pZCk7XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnNldEhhc0FjdGl2ZU1lZXRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRBY3RpdmVNZWV0aW5nS2V5KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRIYXNBY3RpdmVNZWV0aW5nKHRydWUpO1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0QWN0aXZlTWVldGluZ0tleShwcm9wcy5jYWxlbmRhckV2ZW50LmtleSk7XG4gICAgICAgIGxldCB1c2VyRnVsbE5hbWU7XG5cbiAgICAgICAgaWYgKHByb3BzLmNhbGVuZGFyRXZlbnQuaG9zdC51c2VybmFtZSA9PT0gYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUpIHtcbiAgICAgICAgICAgIHVzZXJGdWxsTmFtZSA9IHByb3BzLmNhbGVuZGFyRXZlbnQuaG9zdC5uYW1lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gR3VhcmQ6IHRoZSBjdXJyZW50IHVzZXIgbWF5IG5vdCBiZSBpbiBhdHRlbmRlZXMgKGRhdGEgZHJpZnQpIOKAlCBkb24ndCBjcmFzaDtcbiAgICAgICAgICAgIC8vIGZhbGwgYmFjayB0byB0aGUgdXNlcm5hbWUgc28gY3VycmVudFVzZXJGdWxsTmFtZSBzdGF5cyB0cnV0aHkgKGdhdGVzIHRoZSByb29tIHJlbmRlcikuXG4gICAgICAgICAgICBjb25zdCBtZSA9IHByb3BzLmNhbGVuZGFyRXZlbnQuYXR0ZW5kZWVzLmZpbmQoKGEpID0+IGEudXNlcm5hbWUgPT09IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lKTtcbiAgICAgICAgICAgIHVzZXJGdWxsTmFtZSA9IG1lID8gbWUubmFtZSA6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0Q3VycmVudFVzZXJGdWxsTmFtZSh1c2VyRnVsbE5hbWUpO1xuICAgICAgICBzZXRJc0hvc3QocHJvcHMuY2FsZW5kYXJFdmVudC5ob3N0LnVzZXJuYW1lID09PSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSk7XG4gICAgICAgIHNldElzQ2hhaXJQZXJzb24ocHJvcHMuY2FsZW5kYXJFdmVudC5jaGFpclBlcnNvbklkID09PSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG1lZGlhLmpvaW5NZWV0aW5nKHByb3BzLmNhbGVuZGFyRXZlbnQsIHByb3BzLnNldHRpbmdzLCB1c2VyRnVsbE5hbWUpXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdKT0lOIFJFU1BPTlNFIDogJywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICBqb2luZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVBhcnRpY2lwYW50cyhyZXNwb25zZS5wYXJ0aWNpcGFudHMpO1xuICAgICAgICAgICAgICAgICAgICBzZXRSdHBDYXBhYmlsaXRpZXMocmVzcG9uc2UucnRwQ2FwYWJpbGl0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0T25sb2FkU2NyZWVuU2hhcmVEYXRhKHJlc3BvbnNlLnNoYXJlU2NyZWVuUHJvZHVjZXJEYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gRGVyaXZlIGZyb20gdGhlIEFDSydzIHJvc3Rlciwgbm90IHRoZSBzdGlsbC1lbXB0eSBgcGFydGljaXBhbnRzYCBzdGF0ZS5cbiAgICAgICAgICAgICAgICAgICAgc2V0Um9vbVN0YXR1cyhyZXNwb25zZS5wYXJ0aWNpcGFudHMgJiYgcmVzcG9uc2UucGFydGljaXBhbnRzLmxlbmd0aCA+IDAgPyBTdGF0dXMuU0VTU0lPTiA6IFN0YXR1cy5MT0JCWSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Um9vbVN0YXR1cyhTdGF0dXMuU1lTVEVNX0VSUk9SKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgc2V0Um9vbVN0YXR1cyhTdGF0dXMuU1lTVEVNX0VSUk9SKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0SGFzQWN0aXZlTWVldGluZyhmYWxzZSk7XG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0QWN0aXZlTWVldGluZ0tleShudWxsKTtcbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG5cbiAgICBmdW5jdGlvbiBhZGRVc2VyVG9QYXJ0aWNpcGFudHModXNlcikge1xuICAgICAgICAvLyBJbW11dGFibGUsIGRlZHVwLWJ5LXVzZXJJZCBmdW5jdGlvbmFsIHVwZGF0ZS4gTmV2ZXIgbXV0YXRlIGluIHBsYWNlICsgY29uY2F0ICh0aGF0IHJhY2VzXG4gICAgICAgIC8vIHdpdGggY29uY3VycmVudCBkZWx0YXMgYW5kIGxvc2VzIHVwZGF0ZXMpLiBVcGRhdGUtaW4tcGxhY2UtYnkta2V5IGlmIHByZXNlbnQsIGVsc2UgYXBwZW5kLlxuICAgICAgICBzZXRQYXJ0aWNpcGFudHMoKHByZXYpID0+IHtcbiAgICAgICAgICAgIGlmIChwcmV2LmZpbmQoKHUpID0+IHUudXNlcklkID09PSB1c2VyLnVzZXJJZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldi5tYXAoKHApID0+IHAudXNlcklkID09PSB1c2VyLnVzZXJJZFxuICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnAsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB1c2VyLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdmF0YXI6IHVzZXIuYXZhdGFyLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9NdXRlZDogdXNlci5hdWRpb011dGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9NdXRlZDogdXNlci52aWRlb011dGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjZXJzOiB1c2VyLnByb2R1Y2Vyc1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDogcCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBbLi4ucHJldiwge1xuICAgICAgICAgICAgICAgIHVzZXJJZDogdXNlci51c2VySWQsXG4gICAgICAgICAgICAgICAgbmFtZTogdXNlci5uYW1lLFxuICAgICAgICAgICAgICAgIGF2YXRhcjogdXNlci5hdmF0YXIsXG4gICAgICAgICAgICAgICAgYXVkaW9NdXRlZDogdXNlci5hdWRpb011dGVkLFxuICAgICAgICAgICAgICAgIHZpZGVvTXV0ZWQ6IHVzZXIudmlkZW9NdXRlZCxcbiAgICAgICAgICAgICAgICBwcm9kdWNlcnM6IHVzZXIucHJvZHVjZXJzXG4gICAgICAgICAgICB9XTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgY2hhbmdlT3RoZXJQYXJ0aWNpcGFudEFWU2V0dGluZ3MgPSAodXNlcklkLCBhdWRpb011dGVkLCB2aWRlb011dGVkKSA9PiB7XG5cbiAgICB9O1xuXG4gICAgY29uc3QgY3JlYXRlUGFydGljaXBhbnRzID0gKHVzZXJzKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdBTEwgVVNFUlMgcmVjZWl2ZWQgYW5kIGNyZWF0aW5nIHBhcnRpY2lwYW50cyA6ICcsIHVzZXJzKTtcbiAgICAgICAgLy8gSW5pdGlhbCByb3N0ZXIgZnJvbSB0aGUgSk9JTiBhY2sg4oCUIHNldCBpdCB3aG9sZXNhbGUgKHNhbWUgc2hhcGUgYXMgcmVjb25jaWxlKS5cbiAgICAgICAgcmVjb25jaWxlUGFydGljaXBhbnRzKHVzZXJzKTtcblxuICAgICAgICBpZiAodXNlcnMgJiYgdXNlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc2V0U2lkZUJhck9wZW4odHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZ1VwID0gKCkgPT4ge1xuICAgICAgICBzb2NrZXRNYW5hZ2VyLmxlYXZlTWVldGluZyhwcm9wcy5jYWxlbmRhckV2ZW50LmlkKTtcbiAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnNldEhhc0FjdGl2ZU1lZXRpbmcoZmFsc2UpO1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIucmVtb3ZlTG9hZGVkR3JhcGgoJ3dpbmRvdycpO1xuICAgICAgICBzZXRTaWRlQmFyT3BlbihmYWxzZSk7XG4gICAgICAgIHNldFNpZGVCYXJUYWIoJycpO1xuICAgIH07XG5cbiAgICBjb25zdCBlbmRTZXNzaW9uID0gKCkgPT4ge1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIub3BlbkNvbmZpcm1EaWFsb2coXCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZW5kIHRoZSBjdXJyZW50IHNlc3Npb24/XCIsIChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBzb2NrZXRNYW5hZ2VyLmVuZFNlc3Npb24ocHJvcHMuY2FsZW5kYXJFdmVudC5pZCk7XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnNldEhhc0FjdGl2ZU1lZXRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRBY3RpdmVNZWV0aW5nS2V5KG51bGwpO1xuICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5yZW1vdmVMb2FkZWRHcmFwaCgnd2luZG93Jyk7XG4gICAgICAgICAgICAgICAgc2V0U2lkZUJhck9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICAgIHNldFNpZGVCYXJUYWIoJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgZW1pdFN5c3RlbUV2ZW50ID0gKGV2ZW50VHlwZSwgZGF0YSwgdG9QYXJ0aWNpcGFudElkcyA9IG51bGwpID0+IHtcbiAgICAgICAgbGV0IHBhcnRpY2lwYW50SWRzID0gW107XG4gICAgICAgIGlmICghdG9QYXJ0aWNpcGFudElkcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBwYXJ0aWNpcGFudCBvZiBwYXJ0aWNpcGFudHMpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFydGljaXBhbnQudXNlcklkICE9PSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudElkcy5wdXNoKHBhcnRpY2lwYW50LnVzZXJJZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFydGljaXBhbnRJZHMgPSBwYXJ0aWNpcGFudElkcy5jb25jYXQodG9QYXJ0aWNpcGFudElkcyk7XG4gICAgICAgIH1cblxuICAgICAgICBzb2NrZXRNYW5hZ2VyLmVtaXRFdmVudChWQ0V2ZW50VHlwZS5TWVNURU1fRVZFTlQsIHtcbiAgICAgICAgICAgIHN5c3RlbUV2ZW50VHlwZTogZXZlbnRUeXBlLFxuICAgICAgICAgICAgcmVjaXBpZW50czogcGFydGljaXBhbnRJZHMsXG4gICAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgcmVjb3JkTWVldGluZyA9ICgpID0+IHtcbiAgICAgICAgbWVkaWFSZWNvcmRlci5pbml0KHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsIHByb3BzLmNhbGVuZGFyRXZlbnQudGl0bGUpO1xuICAgICAgICBzZXRJc1JlY29yZGluZyh0cnVlKTtcbiAgICAgICAgZW1pdFN5c3RlbUV2ZW50KCdNRUVUSU5HX1JFQ09SRElORycsIHtcbiAgICAgICAgICAgIHJlY29yZGluZzogdHJ1ZSxcbiAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbWVkaWFSZWNvcmRlci5yZWNvcmRNZWV0aW5nKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHN0b3BSZWNvcmRpbmdNZWV0aW5nID0gKHB1Ymxpc2ggPSB0cnVlKSA9PiB7XG4gICAgICAgIHNldElzUmVjb3JkaW5nKGZhbHNlKTtcblxuICAgICAgICBpZiAocHVibGlzaCkge1xuICAgICAgICAgICAgZW1pdFN5c3RlbUV2ZW50KCdNRUVUSU5HX1JFQ09SRElORycsIHtcbiAgICAgICAgICAgICAgICByZWNvcmRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgbWVkaWFSZWNvcmRlci5zdG9wUmVjb3JkaW5nTWVldGluZygpO1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICByZWY9e3Jvb3RSZWZ9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlMmUyZTInLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCcsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZSdcbiAgICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93IGZsZXgtbm93cmFwIG5vLW1hcmdpbiBuby1wYWRkaW5nIHctMTAwIGgtMTAwJ30+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfSBzdHlsZT17e21pbldpZHRoOiAnMjgwcHgnfX0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93IG5vLW1hcmdpbiBuby1wYWRkaW5nIHctMTAwIGgtMTAwJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICc4MHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJCb3R0b206ICcxcHggc29saWQgI2UyZTJlMicsXG4gICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9vbGJhciBldmVudEhhbmRsZXI9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NdXRlVmlkZW86IChtdXRlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmlkZW9NdXRlZChtdXRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTXV0ZUF1ZGlvOiAobXV0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEF1ZGlvTXV0ZWQobXV0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRDYWxsOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5nVXAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kU2Vzc2lvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kU2Vzc2lvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hhdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hDaGF0cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93UGVvcGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaWRlQmFyVGFiKCdQZW9wbGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNpZGVCYXJPcGVuKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZVNjcmVlbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRTY3JlZW5TaGFyaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wU2hhcmVTY3JlZW46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNjcmVlblNoYXJlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydFNjcmVlblNoYXJpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TWludXRlczogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRTaG93aW5nTWludXRlcyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZU1pbnV0ZXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1pbnV0ZXNTaG93bihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydFNob3dpbmdNaW51dGVzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZU1pbnV0ZXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2Y1Jvb21Xb3Jrc3BhY2VSZWYuY3VycmVudCAmJiB2Y1Jvb21Xb3Jrc3BhY2VSZWYuY3VycmVudC5zYXZlTWludXRlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZjUm9vbVdvcmtzcGFjZVJlZi5jdXJyZW50LnNhdmVNaW51dGVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZE1lZXRpbmc6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZE1lZXRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcFJlY29yZGluZzogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcFJlY29yZGluZ01lZXRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VIYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRIYW5kUmFpc2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb3dlckhhbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEhhbmRSYWlzZWQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNVbnJlYWRDaGF0cz17aGFzVW5yZWFkQ2hhdHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGljaXBhbnRzPXtwYXJ0aWNpcGFudHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZFJhaXNlZD17aGFuZFJhaXNlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0Rpc2FibGVkPXt2aWRlb0Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvRGlzYWJsZWQ9e2F1ZGlvRGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9NdXRlZD17dmlkZW9NdXRlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb011dGVkPXthdWRpb011dGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlTdGF0ZT17ZGlzcGxheVN0YXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlblNoYXJlZD17c2NyZWVuU2hhcmVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXNTaG93bj17bWludXRlc1Nob3dufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb21TdGF0dXM9e3Jvb21TdGF0dXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNIb3N0PXtwcm9wcy5jYWxlbmRhckV2ZW50Lmhvc3QudXNlcm5hbWUgPT09IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9QZXJtaXQ9eyFwcm9wcy5jYWxlbmRhckV2ZW50Lmhvc3QuYXNrVG9Kb2lufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvbWVvbmVTaGFyaW5nPXtzb21lb25lU2hhcmluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlY29yZGluZz17aXNSZWNvcmRpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VkSGFuZHM9e3JhaXNlZEhhbmRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQXVkaW9EZXZpY2VDb25uZWN0ZWQ9e3Byb3BzLnNldHRpbmdzLmlzQXVkaW9EZXZpY2VDb25uZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWaWRlb0RldmljZUNvbm5lY3RlZD17cHJvcHMuc2V0dGluZ3MuaXNWaWRlb0RldmljZUNvbm5lY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWV0aW5nSWQ9e3Byb3BzLmNhbGVuZGFyRXZlbnQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb21TdGF0dXMgPT09IFN0YXR1cy5TWVNURU1fRVJST1IgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAncmdiKDIzNSwgNjMsIDMzKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICczMnB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICcyNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSBjbGFzc05hbWU9eydjZW50ZXJlZC1mbGV4LWJveCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7U1lTVEVNX0VSUk9SX01FU1NBR0V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vbVN0YXR1cyA9PT0gU3RhdHVzLkNPTk5FQ1RJT05fRVJST1IgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAncmdiKDIzNSwgNjMsIDMzKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICczMnB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICcyNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSBjbGFzc05hbWU9eydjZW50ZXJlZC1mbGV4LWJveCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1NZU1RFTV9FUlJPUl9NRVNTQUdFfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHBDYXBhYmlsaXRpZXMgJiYgcGFydGljaXBhbnRzICYmIGN1cnJlbnRVc2VyRnVsbE5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAocm9vbVN0YXR1cyA9PT0gU3RhdHVzLlNFU1NJT04gfHwgcm9vbVN0YXR1cyA9PT0gU3RhdHVzLkxPQkJZKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWQ1Jvb21Xb3Jrc3BhY2UgcmVmPXt2Y1Jvb21Xb3Jrc3BhY2VSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudHM9e3BhcnRpY2lwYW50c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU9e21lZXRpbmdQYXJ0aWNpcGFudEdyaWRNb2RlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb011dGVkPXthdWRpb011dGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9NdXRlZD17dmlkZW9NdXRlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZXRpbmdUaXRsZT17cHJvcHMuY2FsZW5kYXJFdmVudC50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50S2V5PXtwcm9wcy5jYWxlbmRhckV2ZW50LmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXNEb2N1bWVudElkPXtwcm9wcy5jYWxlbmRhckV2ZW50Lm1pbnV0ZXNEb2N1bWVudElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVldGluZ0lkPXtwcm9wcy5jYWxlbmRhckV2ZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFVzZXJGdWxsTmFtZT17Y3VycmVudFVzZXJGdWxsTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uR3JpZFNldHVwPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zZXRTaWRlQmFyVGFiKCdQZW9wbGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlQmFyVGFiPXtzaWRlQmFyVGFifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vbVN0YXR1cz17cm9vbVN0YXR1c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzSG9zdD17aXNIb3N0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDaGFpclBlcnNvbj17aXNDaGFpclBlcnNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0U2NyZWVuU2hhcmluZz17c3RhcnRTY3JlZW5TaGFyaW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmluZ0hhbmRsZXI9eyhzb21lb25lU2hhcmluZykgPT4gc2V0U29tZW9uZVNoYXJpbmcoc29tZW9uZVNoYXJpbmcpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TdG9wU2hhcmluZz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNjcmVlblNoYXJlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRTY3JlZW5TaGFyaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN0YXJ0U2hhcmluZz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNjcmVlblNoYXJlZCh0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0U2NyZWVuU2hhcmluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRTaG93aW5nTWludXRlcz17c3RhcnRTaG93aW5nTWludXRlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3RhcnRTaG93aW5nTWludXRlcz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1pbnV0ZXNTaG93bih0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydFNob3dpbmdNaW51dGVzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN0b3BTaG93aW5nTWludXRlcz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1pbnV0ZXNTaG93bihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRTaG93aW5nTWludXRlcyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlc1Nob3duPXttaW51dGVzU2hvd259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvUGVybWl0PXthdXRvUGVybWl0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwQ2FwYWJpbGl0aWVzPXtydHBDYXBhYmlsaXRpZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JlZW5TaGFyZWQ9e3NjcmVlblNoYXJlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlTdGF0ZT17ZGlzcGxheVN0YXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25sb2FkU2NyZWVuU2hhcmVEYXRhPXtvbmxvYWRTY3JlZW5TaGFyZURhdGF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxVc2VyUGFydGljaXBhbnRzTGVmdD17YWxsVXNlclBhcnRpY2lwYW50c0xlZnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkF1ZGlvRGV2aWNlQ2hhbmdlPXsoZGV2aWNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXVkaW9EaXNhYmxlZChVdGlscy5pc051bGwoZGV2aWNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ib3N0QXVkaW9NdXRlPXsocGFydGljaXBhbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VPdGhlclBhcnRpY2lwYW50QVZTZXR0aW5ncyhwYXJ0aWNpcGFudC51c2VySWQsIHRydWUsIHBhcnRpY2lwYW50LnZpZGVvTXV0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uSG9zdFZpZGVvTXV0ZT17KHBhcnRpY2lwYW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlT3RoZXJQYXJ0aWNpcGFudEFWU2V0dGluZ3MocGFydGljaXBhbnQudXNlcklkLCBwYXJ0aWNpcGFudC5hdWRpb011dGVkLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzaWRlQmFyT3BlbiAmJiBzaWRlQmFyVGFiICYmIHJvb21TdGF0dXMgPT09IFN0YXR1cy5TRVNTSU9OICYmXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtuYXJyb3dMYXlvdXQgPyAnY2xvc2FibGUtcGFuZWwtb3ZlcmxheScgOiAnY2xvc2FibGUtcGFuZWwtY29udGFpbmVyJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2xvc2FibGVQYW5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlSGFuZGxlcj17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2lkZUJhck9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaWRlQmFyVGFiKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3NpZGVCYXJUYWJ9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNpZGVCYXJDb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZXRpbmdDaGF0PXttZWV0aW5nQ2hhdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNIb3N0PXtpc0hvc3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ2hhaXJQZXJzb249e2lzQ2hhaXJQZXJzb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYj17c2lkZUJhclRhYn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVldGluZ0lkPXtwcm9wcy5jYWxlbmRhckV2ZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudHM9e3BhcnRpY2lwYW50c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ib3N0QXVkaW9NdXRlPXsocGFydGljaXBhbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZU90aGVyUGFydGljaXBhbnRBVlNldHRpbmdzKHBhcnRpY2lwYW50LnVzZXJJZCwgdHJ1ZSwgcGFydGljaXBhbnQudmlkZW9NdXRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uSG9zdFZpZGVvTXV0ZT17KHBhcnRpY2lwYW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VPdGhlclBhcnRpY2lwYW50QVZTZXR0aW5ncyhwYXJ0aWNpcGFudC51c2VySWQsIHBhcnRpY2lwYW50LmF1ZGlvTXV0ZWQsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0Nsb3NhYmxlUGFuZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiAnNDhweCcsXG4gICAgICAgICAgICAgICAgYm90dG9tOiAnNDhweCdcbiAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgIDxBbGVydFxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXsnd2FybmluZyd9XG4gICAgICAgICAgICAgICAgICAgIHNob3c9e3JlY29ubmVjdGluZ31cbiAgICAgICAgICAgICAgICAgICAgZmFkZT17dHJ1ZX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPXt7bWFyZ2luOiAwfX0+UmVjb25uZWN0aW5n4oCmPC9wPlxuICAgICAgICAgICAgICAgIDwvQWxlcnQ+XG4gICAgICAgICAgICAgICAgPEFsZXJ0XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9eydkYW5nZXInfVxuICAgICAgICAgICAgICAgICAgICBzaG93PXtyZWNvbm5lY3RFcnJvciAhPT0gbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgZGlzbWlzc2libGVcbiAgICAgICAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0UmVjb25uZWN0RXJyb3IobnVsbCl9XG4gICAgICAgICAgICAgICAgICAgIGZhZGU9e3RydWV9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT17e21hcmdpbjogMH19PntyZWNvbm5lY3RFcnJvcn08L3A+XG4gICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICA8QWxlcnRcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD17J2luZm8nfVxuICAgICAgICAgICAgICAgICAgICBzaG93PXthY3Rpdml0eU1lc3NhZ2UgIT09IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIGZhZGU9e3RydWV9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT17e2NvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpJ319PnthY3Rpdml0eU1lc3NhZ2V9PC9wPlxuICAgICAgICAgICAgICAgIDwvQWxlcnQ+XG4gICAgICAgICAgICAgICAgPEFsZXJ0XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9eydpbmZvJ31cbiAgICAgICAgICAgICAgICAgICAgc2hvdz17Y2hhdE1lc3NhZ2UgIT09IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIGZhZGU9e3RydWV9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3Jvdyd9IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJCb3R0b206ICcxcHggc29saWQgd2hpdGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogJzhweCdcbiAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93J30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J0NIQVRfQlVCQkxFJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPXt7Y29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCknfX0+e2NoYXRTZW5kZXJ9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cnfSBzdHlsZT17e21hcmdpblRvcDogJzhweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sJ30+PHAgc3R5bGU9e3tjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSd9fT57Y2hhdE1lc3NhZ2V9PC9wPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgey8qSGlkZGVuIHZpZGVvIHRvIGNhcHR1cmUgcmVjb3JkaW5ncyovfVxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tkaXNwbGF5OiAnbm9uZSd9fT5cbiAgICAgICAgICAgICAgICAgICAgPHZpZGVvXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW49e2ZhbHNlfSBtdXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxheXNJbmxpbmUgYXV0b1BsYXkgcmVmPXtyZWNvcmRSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMjAwcHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzIwMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgIClcbiAgICAgICAgO1xufSkpO1xuXG5leHBvcnQgZGVmYXVsdCBUcmFpbmluZ1Jvb207XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNELElBQUFDLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUksbUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFLLFFBQUEsR0FBQUgsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFNLE9BQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGdCQUFBLEdBQUFMLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBUSxZQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxNQUFBLEdBQUFQLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBVSxlQUFBLEdBQUFSLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBVyxjQUFBLEdBQUFULHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBWSxjQUFBLEdBQUFWLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBYSxlQUFBLEdBQUFYLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBYyxrQkFBQSxHQUFBWixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQWUsZUFBQSxHQUFBYixzQkFBQSxDQUFBRixP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